./PaxHeaders.151519/zfs-0.8.30000644000000000000000000000013213612143071013464 xustar000000000000000030 mtime=1579730489.065054777 30 atime=1579730489.072055003 30 ctime=1579730489.065054777 zfs-0.8.3/0000775016037001603700000000000013612143071013410 5ustar00hutter2hutter200000000000000zfs-0.8.3/PaxHeaders.151519/CODE_OF_CONDUCT.md0000644000000000000000000000007413607166132016217 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.794403922 zfs-0.8.3/CODE_OF_CONDUCT.md0000644016037001603700000000023213607166132016211 0ustar00hutter2hutter200000000000000The [OpenZFS Code of Conduct](http://www.open-zfs.org/wiki/Code_of_Conduct) applies to spaces associated with the ZFS on Linux project, including GitHub. zfs-0.8.3/PaxHeaders.151519/config0000644000000000000000000000013213612143047014577 xustar000000000000000030 mtime=1579730471.330485352 30 atime=1579730489.072055003 30 ctime=1579730471.330485352 zfs-0.8.3/config/0000775016037001603700000000000013612143047014660 5ustar00hutter2hutter200000000000000zfs-0.8.3/config/PaxHeaders.151519/kernel-current_bio_tail.m40000644000000000000000000000007413612141515021723 xustar000000000000000030 atime=1579730378.243496671 30 ctime=1579730468.480393841 zfs-0.8.3/config/kernel-current_bio_tail.m40000644016037001603700000000203413612141515021717 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.34 API change dnl # current->bio_tail and current->bio_list were struct bio pointers prior to dnl # Linux 2.6.34. They were refactored into a struct bio_list pointer called dnl # current->bio_list in Linux 2.6.34. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CURRENT_BIO_TAIL], [ ZFS_LINUX_TEST_SRC([current_bio_tail], [ #include ], [ current->bio_tail = (struct bio **) NULL; ]) ZFS_LINUX_TEST_SRC([current_bio_list], [ #include ], [ current->bio_list = (struct bio_list *) NULL; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_CURRENT_BIO_TAIL], [ AC_MSG_CHECKING([whether current->bio_tail exists]) ZFS_LINUX_TEST_RESULT([current_bio_tail], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CURRENT_BIO_TAIL, 1, [current->bio_tail exists]) ],[ AC_MSG_RESULT(no) AC_MSG_CHECKING([whether current->bio_list exists]) ZFS_LINUX_TEST_RESULT([current_bio_list], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CURRENT_BIO_LIST, 1, [current->bio_list exists]) ],[ ZFS_LINUX_TEST_ERROR([bio_list]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-declare-event-class.m40000644000000000000000000000007413612141515022220 xustar000000000000000030 atime=1579730378.243496671 30 ctime=1579730468.482393905 zfs-0.8.3/config/kernel-declare-event-class.m40000644016037001603700000000254613612141515022224 0ustar00hutter2hutter200000000000000dnl # dnl # Ensure the DECLARE_EVENT_CLASS macro is available to non-GPL modules. dnl # AC_DEFUN([ZFS_AC_KERNEL_DECLARE_EVENT_CLASS], [ AC_MSG_CHECKING([whether DECLARE_EVENT_CLASS() is available]) ZFS_LINUX_TRY_COMPILE_HEADER([ #include MODULE_LICENSE("$ZFS_META_LICENSE"); #define CREATE_TRACE_POINTS #include "conftest.h" ],[ trace_zfs_autoconf_event_one(1UL); trace_zfs_autoconf_event_two(2UL); ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_DECLARE_EVENT_CLASS, 1, [DECLARE_EVENT_CLASS() is available]) ],[ AC_MSG_RESULT(no) ],[ #if !defined(_CONFTEST_H) || defined(TRACE_HEADER_MULTI_READ) #define _CONFTEST_H #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #include DECLARE_EVENT_CLASS(zfs_autoconf_event_class, TP_PROTO(unsigned long i), TP_ARGS(i), TP_STRUCT__entry( __field(unsigned long, i) ), TP_fast_assign( __entry->i = i; ), TP_printk("i = %lu", __entry->i) ); #define DEFINE_AUTOCONF_EVENT(name) \ DEFINE_EVENT(zfs_autoconf_event_class, name, \ TP_PROTO(unsigned long i), \ TP_ARGS(i)) DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_one); DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_two); #endif /* _CONFTEST_H */ #undef TRACE_INCLUDE_PATH #define TRACE_INCLUDE_PATH . #define TRACE_INCLUDE_FILE conftest #include ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-follow-down-one.m40000644000000000000000000000007413612141515021425 xustar000000000000000030 atime=1579730378.239496543 30 ctime=1579730468.501394513 zfs-0.8.3/config/kernel-follow-down-one.m40000644016037001603700000000116513612141515021425 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.38 API change dnl # follow_down() renamed follow_down_one(). The original follow_down() dnl # symbol still exists but will traverse down all the layers. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_FOLLOW_DOWN_ONE], [ ZFS_LINUX_TEST_SRC([follow_down_one], [ #include ],[ struct path *p = NULL; follow_down_one(p); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_FOLLOW_DOWN_ONE], [ AC_MSG_CHECKING([whether follow_down_one() is available]) ZFS_LINUX_TEST_RESULT([follow_down_one], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FOLLOW_DOWN_ONE, 1, [follow_down_one() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/intlmacosx.m40000644000000000000000000000007313607166132017307 xustar000000000000000030 atime=1579730378.260497217 29 ctime=1579730468.41439172 zfs-0.8.3/config/intlmacosx.m40000644016037001603700000000637113607166132017314 0ustar00hutter2hutter200000000000000# intlmacosx.m4 serial 6 (gettext-0.20) dnl Copyright (C) 2004-2014, 2016, 2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in Mac OS X 10.4. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in Mac OS X 10.5. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyCurrent();]])], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyPreferredLanguages();]])], [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ || test $gt_cv_func_CFLocaleCopyCurrent = yes \ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-totalram-pages-func.m40000644000000000000000000000007413612141515022250 xustar000000000000000030 atime=1579730378.215495772 30 ctime=1579730468.610398013 zfs-0.8.3/config/kernel-totalram-pages-func.m40000644016037001603700000000115413612141515022246 0ustar00hutter2hutter200000000000000dnl # dnl # Linux 5.0: totalram_pages is no longer a global variable, and must be dnl # read via the totalram_pages() helper function. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_TOTALRAM_PAGES_FUNC], [ ZFS_LINUX_TEST_SRC([totalram_pages], [ #include ],[ unsigned long pages __attribute__ ((unused)); pages = totalram_pages(); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_TOTALRAM_PAGES_FUNC], [ AC_MSG_CHECKING([whether totalram_pages() exists]) ZFS_LINUX_TEST_RESULT([totalram_pages], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_TOTALRAM_PAGES_FUNC, 1, [kernel has totalram_pages()]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-vfs-fsync.m40000644000000000000000000000007413612141515020315 xustar000000000000000030 atime=1579730378.212495676 30 ctime=1579730468.623398432 zfs-0.8.3/config/kernel-vfs-fsync.m40000644016037001603700000000077713612141515020325 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.35 API change, dnl # Unused 'struct dentry *' removed from vfs_fsync() prototype. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_FSYNC_2ARGS], [ ZFS_LINUX_TEST_SRC([vfs_fsync_2args], [ #include ],[ vfs_fsync(NULL, 0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_FSYNC_2ARGS], [ AC_MSG_CHECKING([whether vfs_fsync() wants 2 args]) ZFS_LINUX_TEST_RESULT([vfs_fsync_2args], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_2ARGS_VFS_FSYNC, 1, [vfs_fsync() wants 2 args]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-get-link.m40000644000000000000000000000007413612141515020111 xustar000000000000000030 atime=1579730378.235496415 30 ctime=1579730468.517395028 zfs-0.8.3/config/kernel-get-link.m40000644016037001603700000000571013612141515020111 0ustar00hutter2hutter200000000000000dnl # dnl # Supported get_link() interfaces checked newest to oldest. dnl # Note this interface used to be named follow_link. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GET_LINK], [ ZFS_LINUX_TEST_SRC([inode_operations_get_link], [ #include const char *get_link(struct dentry *de, struct inode *ip, struct delayed_call *done) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; ],[]) ZFS_LINUX_TEST_SRC([inode_operations_get_link_cookie], [ #include const char *get_link(struct dentry *de, struct inode *ip, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; ],[]) ZFS_LINUX_TEST_SRC([inode_operations_follow_link], [ #include const char *follow_link(struct dentry *de, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; ],[]) ZFS_LINUX_TEST_SRC([inode_operations_follow_link_nameidata], [ #include void *follow_link(struct dentry *de, struct nameidata *nd) { return (void *)NULL; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_GET_LINK], [ dnl # dnl # 4.5 API change dnl # The get_link interface has added a delayed done call and dnl # used it to retire the put_link() interface. dnl # AC_MSG_CHECKING([whether iops->get_link() passes delayed]) ZFS_LINUX_TEST_RESULT([inode_operations_get_link], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GET_LINK_DELAYED, 1, [iops->get_link() delayed]) ],[ AC_MSG_RESULT(no) dnl # dnl # 4.5 API change dnl # The follow_link() interface has been replaced by dnl # get_link() which behaves the same as before except: dnl # - An inode is passed as a separate argument dnl # - When called in RCU mode a NULL dentry is passed. dnl # AC_MSG_CHECKING([whether iops->get_link() passes cookie]) ZFS_LINUX_TEST_RESULT([inode_operations_get_link_cookie], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GET_LINK_COOKIE, 1, [iops->get_link() cookie]) ],[ AC_MSG_RESULT(no) dnl # dnl # 4.2 API change dnl # This kernel retired the nameidata structure. dnl # AC_MSG_CHECKING( [whether iops->follow_link() passes cookie]) ZFS_LINUX_TEST_RESULT([inode_operations_follow_link], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FOLLOW_LINK_COOKIE, 1, [iops->follow_link() cookie]) ],[ AC_MSG_RESULT(no) dnl # dnl # 2.6.32 API dnl # AC_MSG_CHECKING( [whether iops->follow_link() passes nameidata]) ZFS_LINUX_TEST_RESULT( [inode_operations_follow_link_nameidata],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FOLLOW_LINK_NAMEIDATA, 1, [iops->follow_link() nameidata]) ],[ ZFS_LINUX_TEST_ERROR([get_link]) ]) ]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-ktime_get_coarse_real_ts64.m40000644000000000000000000000007413612141515023566 xustar000000000000000030 atime=1579730378.228496191 30 ctime=1579730468.547395991 zfs-0.8.3/config/kernel-ktime_get_coarse_real_ts64.m40000644016037001603700000000120013612141515023554 0ustar00hutter2hutter200000000000000dnl # dnl # 4.18: ktime_get_coarse_real_ts64() added. Use it in place of dnl # current_kernel_time64(). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_KTIME_GET_COARSE_REAL_TS64], [ ZFS_LINUX_TEST_SRC([ktime_get_coarse_real_ts64], [ #include ], [ struct timespec64 ts; ktime_get_coarse_real_ts64(&ts); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64], [ AC_MSG_CHECKING([whether ktime_get_coarse_real_ts64() exists]) ZFS_LINUX_TEST_RESULT([ktime_get_coarse_real_ts64], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KTIME_GET_COARSE_REAL_TS64, 1, [ktime_get_coarse_real_ts64() exists]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-aio-fsync.m40000644000000000000000000000007413612141515020267 xustar000000000000000030 atime=1579730378.256497089 30 ctime=1579730468.420391913 zfs-0.8.3/config/kernel-aio-fsync.m40000644016037001603700000000102613612141515020263 0ustar00hutter2hutter200000000000000dnl # dnl # Linux 4.9-rc5+ ABI, removal of the .aio_fsync field dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_AIO_FSYNC], [ ZFS_LINUX_TEST_SRC([aio_fsync], [ #include static const struct file_operations fops __attribute__ ((unused)) = { .aio_fsync = NULL, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_AIO_FSYNC], [ AC_MSG_CHECKING([whether fops->aio_fsync() exists]) ZFS_LINUX_TEST_RESULT([aio_fsync], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FILE_AIO_FSYNC, 1, [fops->aio_fsync() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-vfs-getattr.m40000644000000000000000000000007413612141515020645 xustar000000000000000030 atime=1579730378.212495676 30 ctime=1579730468.626398528 zfs-0.8.3/config/kernel-vfs-getattr.m40000644016037001603700000000403113612141515020640 0ustar00hutter2hutter200000000000000dnl # dnl # 4.11 API, a528d35e@torvalds/linux dnl # vfs_getattr(const struct path *p, struct kstat *s, u32 m, unsigned int f) dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_GETATTR_4ARGS], [ ZFS_LINUX_TEST_SRC([vfs_getattr_4args], [ #include ],[ vfs_getattr((const struct path *)NULL, (struct kstat *)NULL, (u32)0, (unsigned int)0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_GETATTR_4ARGS], [ AC_MSG_CHECKING([whether vfs_getattr() wants 4 args]) ZFS_LINUX_TEST_RESULT([vfs_getattr_4args], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_4ARGS_VFS_GETATTR, 1, [vfs_getattr wants 4 args]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.9 API dnl # vfs_getattr(struct path *p, struct kstat *s) dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_GETATTR_2ARGS], [ ZFS_LINUX_TEST_SRC([vfs_getattr_2args], [ #include ],[ vfs_getattr((struct path *) NULL, (struct kstat *)NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_GETATTR_2ARGS], [ AC_MSG_CHECKING([whether vfs_getattr() wants 2 args]) ZFS_LINUX_TEST_RESULT([vfs_getattr_2args], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_2ARGS_VFS_GETATTR, 1, [vfs_getattr wants 2 args]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # <3.9 API dnl # vfs_getattr(struct vfsmount *v, struct dentry *d, struct kstat *k) dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_GETATTR_3ARGS], [ ZFS_LINUX_TEST_SRC([vfs_getattr_3args], [ #include ],[ vfs_getattr((struct vfsmount *)NULL, (struct dentry *)NULL, (struct kstat *)NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_GETATTR_3ARGS], [ AC_MSG_CHECKING([whether vfs_getattr() wants 3 args]) ZFS_LINUX_TEST_RESULT([vfs_getattr_3args], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_3ARGS_VFS_GETATTR, 1, [vfs_getattr wants 3 args]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_GETATTR], [ ZFS_AC_KERNEL_SRC_VFS_GETATTR_4ARGS ZFS_AC_KERNEL_SRC_VFS_GETATTR_2ARGS ZFS_AC_KERNEL_SRC_VFS_GETATTR_3ARGS ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_GETATTR], [ ZFS_AC_KERNEL_VFS_GETATTR_4ARGS ZFS_AC_KERNEL_VFS_GETATTR_2ARGS ZFS_AC_KERNEL_VFS_GETATTR_3ARGS ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-fpu.m40000644000000000000000000000007413612141515017171 xustar000000000000000030 atime=1579730378.238496511 30 ctime=1579730468.503394578 zfs-0.8.3/config/kernel-fpu.m40000644016037001603700000000652313612141515017174 0ustar00hutter2hutter200000000000000dnl # dnl # Handle differences in kernel FPU code. dnl # dnl # Kernel dnl # 5.0: Wrappers have been introduced to save/restore the FPU state. dnl # This change was made to the 4.19.38 and 4.14.120 LTS kernels. dnl # HAVE_KERNEL_FPU_INTERNAL dnl # dnl # 4.2: Use __kernel_fpu_{begin,end}() dnl # HAVE_UNDERSCORE_KERNEL_FPU & KERNEL_EXPORTS_X86_FPU dnl # dnl # Pre-4.2: Use kernel_fpu_{begin,end}() dnl # HAVE_KERNEL_FPU & KERNEL_EXPORTS_X86_FPU dnl # dnl # N.B. The header check is performed before all other checks since it dnl # depends on HAVE_KERNEL_FPU_API_HEADER being set in confdefs.h. dnl # AC_DEFUN([ZFS_AC_KERNEL_FPU_HEADER], [ AC_MSG_CHECKING([whether fpu headers are available]) ZFS_LINUX_TRY_COMPILE([ #include #include ],[ ],[ AC_DEFINE(HAVE_KERNEL_FPU_API_HEADER, 1, [kernel has asm/fpu/api.h]) AC_MSG_RESULT(asm/fpu/api.h) ],[ AC_MSG_RESULT(i387.h & xcr.h) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_FPU], [ ZFS_LINUX_TEST_SRC([kernel_fpu], [ #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif ], [ kernel_fpu_begin(); kernel_fpu_end(); ], [], [$ZFS_META_LICENSE]) ZFS_LINUX_TEST_SRC([__kernel_fpu], [ #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif ], [ __kernel_fpu_begin(); __kernel_fpu_end(); ], [], [$ZFS_META_LICENSE]) ZFS_LINUX_TEST_SRC([fpu_internal], [ #if defined(__x86_64) || defined(__x86_64__) || \ defined(__i386) || defined(__i386__) #if !defined(__x86) #define __x86 #endif #endif #if !defined(__x86) #error Unsupported architecture #endif #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #include #else #include #include #endif #if !defined(XSTATE_XSAVE) #error XSTATE_XSAVE not defined #endif #if !defined(XSTATE_XRESTORE) #error XSTATE_XRESTORE not defined #endif ],[ struct fpu *fpu = ¤t->thread.fpu; union fpregs_state *st = &fpu->state; struct fregs_state *fr __attribute__ ((unused)) = &st->fsave; struct fxregs_state *fxr __attribute__ ((unused)) = &st->fxsave; struct xregs_state *xr __attribute__ ((unused)) = &st->xsave; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_FPU], [ dnl # dnl # Legacy kernel dnl # AC_MSG_CHECKING([whether kernel fpu is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([kernel_fpu_license], [kernel_fpu_begin], [arch/x86/kernel/fpu/core.c], [ AC_MSG_RESULT(kernel_fpu_*) AC_DEFINE(HAVE_KERNEL_FPU, 1, [kernel has kernel_fpu_* functions]) AC_DEFINE(KERNEL_EXPORTS_X86_FPU, 1, [kernel exports FPU functions]) ],[ dnl # dnl # Linux 4.2 kernel dnl # ZFS_LINUX_TEST_RESULT_SYMBOL([__kernel_fpu_license], [__kernel_fpu_begin], [arch/x86/kernel/fpu/core.c arch/x86/kernel/i387.c], [ AC_MSG_RESULT(__kernel_fpu_*) AC_DEFINE(HAVE_UNDERSCORE_KERNEL_FPU, 1, [kernel has __kernel_fpu_* functions]) AC_DEFINE(KERNEL_EXPORTS_X86_FPU, 1, [kernel exports FPU functions]) ],[ ZFS_LINUX_TEST_RESULT([fpu_internal], [ AC_MSG_RESULT(internal) AC_DEFINE(HAVE_KERNEL_FPU_INTERNAL, 1, [kernel fpu internal]) ],[ AC_MSG_RESULT(unavailable) ]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bio-end-io-t-args.m40000644000000000000000000000007413612141515021514 xustar000000000000000030 atime=1579730378.254497025 30 ctime=1579730468.433392331 zfs-0.8.3/config/kernel-bio-end-io-t-args.m40000644016037001603700000000272213612141515021514 0ustar00hutter2hutter200000000000000dnl # dnl # 4.3 API change dnl # Error argument dropped from bio_endio in favor of newly introduced dnl # bio->bi_error. This also replaces bio->bi_flags value BIO_UPTODATE. dnl # Introduced by torvalds/linux@4246a0b63bd8f56a1469b12eafeb875b1041a451 dnl # ("block: add a bi_error field to struct bio"). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_END_IO_T_ARGS], [ ZFS_LINUX_TEST_SRC([bio_end_io_t_args], [ #include void wanted_end_io(struct bio *bio) { return; } bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; ], []) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_END_IO_T_ARGS], [ AC_MSG_CHECKING([whether bio_end_io_t wants 1 arg]) ZFS_LINUX_TEST_RESULT([bio_end_io_t_args], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_1ARG_BIO_END_IO_T, 1, [bio_end_io_t wants 1 arg]) ], [ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.13 API change dnl # The bio->bi_error field was replaced with bio->bi_status which is an dnl # enum which describes all possible error types. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_BI_STATUS], [ ZFS_LINUX_TEST_SRC([bio_bi_status], [ #include ], [ struct bio bio __attribute__ ((unused)); blk_status_t status __attribute__ ((unused)) = BLK_STS_OK; bio.bi_status = status; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_BI_STATUS], [ AC_MSG_CHECKING([whether bio->bi_status exists]) ZFS_LINUX_TEST_RESULT([bio_bi_status], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_BI_STATUS, 1, [bio->bi_status exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-sched.m40000644000000000000000000000007413612141515017465 xustar000000000000000030 atime=1579730378.221495964 30 ctime=1579730468.584397179 zfs-0.8.3/config/kernel-sched.m40000644016037001603700000000406313612141515017465 0ustar00hutter2hutter200000000000000dnl # dnl # 3.9 API change, dnl # Moved things from linux/sched.h to linux/sched/rt.h dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SCHED_RT_HEADER], [ ZFS_LINUX_TEST_SRC([sched_rt_header], [ #include #include ],[ return 0; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SCHED_RT_HEADER], [ AC_MSG_CHECKING([whether header linux/sched/rt.h exists]) ZFS_LINUX_TEST_RESULT([sched_rt_header], [ AC_DEFINE(HAVE_SCHED_RT_HEADER, 1, [linux/sched/rt.h exists]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.11 API change, dnl # Moved things from linux/sched.h to linux/sched/signal.h dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SCHED_SIGNAL_HEADER], [ ZFS_LINUX_TEST_SRC([sched_signal_header], [ #include #include ],[ return 0; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SCHED_SIGNAL_HEADER], [ AC_MSG_CHECKING([whether header linux/sched/signal.h exists]) ZFS_LINUX_TEST_RESULT([sched_signal_header], [ AC_DEFINE(HAVE_SCHED_SIGNAL_HEADER, 1, [linux/sched/signal.h exists]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.19 API change dnl # The io_schedule_timeout() function is present in all 2.6.32 kernels dnl # but it was not exported until Linux 3.19. The RHEL 7.x kernels which dnl # are based on a 3.10 kernel do export this symbol. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_IO_SCHEDULE_TIMEOUT], [ ZFS_LINUX_TEST_SRC([io_schedule_timeout], [ #include ], [ (void) io_schedule_timeout(1); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_IO_SCHEDULE_TIMEOUT], [ AC_MSG_CHECKING([whether io_schedule_timeout() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([io_schedule_timeout], [io_schedule_timeout], [], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_IO_SCHEDULE_TIMEOUT, 1, [yes]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_SCHED], [ ZFS_AC_KERNEL_SRC_SCHED_RT_HEADER ZFS_AC_KERNEL_SRC_SCHED_SIGNAL_HEADER ZFS_AC_KERNEL_SRC_IO_SCHEDULE_TIMEOUT ]) AC_DEFUN([ZFS_AC_KERNEL_SCHED], [ ZFS_AC_KERNEL_SCHED_RT_HEADER ZFS_AC_KERNEL_SCHED_SIGNAL_HEADER ZFS_AC_KERNEL_IO_SCHEDULE_TIMEOUT ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-config-defined.m40000644000000000000000000000007413612141515021240 xustar000000000000000030 atime=1579730378.245496735 30 ctime=1579730468.472393582 zfs-0.8.3/config/kernel-config-defined.m40000644016037001603700000001245113612141515021240 0ustar00hutter2hutter200000000000000dnl # dnl # Certain kernel build options are not supported. These must be dnl # detected at configure time and cause a build failure. Otherwise dnl # modules may be successfully built that behave incorrectly. dnl # AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEFINED], [ AS_IF([test "x$cross_compiling" != xyes], [ AC_RUN_IFELSE([ AC_LANG_PROGRAM([ #include "$LINUX/include/linux/license.h" ], [ return !license_is_gpl_compatible( "$ZFS_META_LICENSE"); ]) ], [ AC_DEFINE([ZFS_IS_GPL_COMPATIBLE], [1], [Define to 1 if GPL-only symbols can be used]) ], [ ]) ]) ZFS_AC_KERNEL_SRC_CONFIG_THREAD_SIZE ZFS_AC_KERNEL_SRC_CONFIG_DEBUG_LOCK_ALLOC ZFS_AC_KERNEL_SRC_CONFIG_TRIM_UNUSED_KSYMS ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_INFLATE ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_DEFLATE AC_MSG_CHECKING([for kernel config option compatibility]) ZFS_LINUX_TEST_COMPILE_ALL([config]) AC_MSG_RESULT([done]) ZFS_AC_KERNEL_CONFIG_THREAD_SIZE ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE ]) dnl # dnl # Check configured THREAD_SIZE dnl # dnl # The stack size will vary by architecture, but as of Linux 3.15 on x86_64 dnl # the default thread stack size was increased to 16K from 8K. Therefore, dnl # on newer kernels and some architectures stack usage optimizations can be dnl # conditionally applied to improve performance without negatively impacting dnl # stability. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_THREAD_SIZE], [ ZFS_LINUX_TEST_SRC([config_thread_size], [ #include ],[ #if (THREAD_SIZE < 16384) #error "THREAD_SIZE is less than 16K" #endif ]) ]) AC_DEFUN([ZFS_AC_KERNEL_CONFIG_THREAD_SIZE], [ AC_MSG_CHECKING([whether kernel was built with 16K or larger stacks]) ZFS_LINUX_TEST_RESULT([config_thread_size], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_LARGE_STACKS, 1, [kernel has large stacks]) ],[ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # Check CONFIG_DEBUG_LOCK_ALLOC dnl # dnl # This is typically only set for debug kernels because it comes with dnl # a performance penalty. However, when it is set it maps the non-GPL dnl # symbol mutex_lock() to the GPL-only mutex_lock_nested() symbol. dnl # This will cause a failure at link time which we'd rather know about dnl # at compile time. dnl # dnl # Since we plan to pursue making mutex_lock_nested() a non-GPL symbol dnl # with the upstream community we add a check to detect this case. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_DEBUG_LOCK_ALLOC], [ ZFS_LINUX_TEST_SRC([config_debug_lock_alloc], [ #include ],[ struct mutex lock; mutex_init(&lock); mutex_lock(&lock); mutex_unlock(&lock); ], [], [$ZFS_META_LICENSE]) ]) AC_DEFUN([ZFS_AC_KERNEL_CONFIG_DEBUG_LOCK_ALLOC], [ AC_MSG_CHECKING([whether mutex_lock() is GPL-only]) ZFS_LINUX_TEST_RESULT([config_debug_lock_alloc], [ AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) AC_MSG_ERROR([ *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible *** with the CDDL license and will prevent the module linking stage *** from succeeding. You must rebuild your kernel without this *** option enabled.]) ]) ]) dnl # dnl # Check CONFIG_TRIM_UNUSED_KSYMS dnl # dnl # Verify the kernel has CONFIG_TRIM_UNUSED_KSYMS disabled. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_TRIM_UNUSED_KSYMS], [ ZFS_LINUX_TEST_SRC([config_trim_unusued_ksyms], [ #if defined(CONFIG_TRIM_UNUSED_KSYMS) #error CONFIG_TRIM_UNUSED_KSYMS not defined #endif ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_CONFIG_TRIM_UNUSED_KSYMS], [ AC_MSG_CHECKING([whether CONFIG_TRIM_UNUSED_KSYM is disabled]) ZFS_LINUX_TEST_RESULT([config_trim_unusued_ksyms], [ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AS_IF([test "x$enable_linux_builtin" != xyes], [ AC_MSG_ERROR([ *** This kernel has unused symbols trimming enabled, please disable. *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set.]) ]) ]) ]) dnl # dnl # Check CONFIG_ZLIB_INFLATE dnl # dnl # Verify the kernel has CONFIG_ZLIB_INFLATE support enabled. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_INFLATE], [ ZFS_LINUX_TEST_SRC([config_zlib_inflate], [ #if !defined(CONFIG_ZLIB_INFLATE) && \ !defined(CONFIG_ZLIB_INFLATE_MODULE) #error CONFIG_ZLIB_INFLATE not defined #endif ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_CONFIG_ZLIB_INFLATE], [ AC_MSG_CHECKING([whether CONFIG_ZLIB_INFLATE is defined]) ZFS_LINUX_TEST_RESULT([config_zlib_inflate], [ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AC_MSG_ERROR([ *** This kernel does not include the required zlib inflate support. *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set.]) ]) ]) dnl # dnl # Check CONFIG_ZLIB_DEFLATE dnl # dnl # Verify the kernel has CONFIG_ZLIB_DEFLATE support enabled. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CONFIG_ZLIB_DEFLATE], [ ZFS_LINUX_TEST_SRC([config_zlib_deflate], [ #if !defined(CONFIG_ZLIB_DEFLATE) && \ !defined(CONFIG_ZLIB_DEFLATE_MODULE) #error CONFIG_ZLIB_DEFLATE not defined #endif ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_CONFIG_ZLIB_DEFLATE], [ AC_MSG_CHECKING([whether CONFIG_ZLIB_DEFLATE is defined]) ZFS_LINUX_TEST_RESULT([config_zlib_deflate], [ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) AC_MSG_ERROR([ *** This kernel does not include the required zlib deflate support. *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set.]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-insert-inode-locked.m40000644000000000000000000000007413612141515022236 xustar000000000000000030 atime=1579730378.231496287 30 ctime=1579730468.535395607 zfs-0.8.3/config/kernel-insert-inode-locked.m40000644016037001603700000000112613612141515022233 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.28 API change dnl # Added insert_inode_locked() helper function. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INSERT_INODE_LOCKED], [ ZFS_LINUX_TEST_SRC([insert_inode_locked], [ #include ], [ insert_inode_locked(NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_INSERT_INODE_LOCKED], [ AC_MSG_CHECKING([whether insert_inode_locked() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([insert_inode_locked], [insert_inode_locked], [fs/inode.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INSERT_INODE_LOCKED, 1, [insert_inode_locked() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-group-info.m40000644000000000000000000000007413612141515020464 xustar000000000000000030 atime=1579730378.233496351 30 ctime=1579730468.521395156 zfs-0.8.3/config/kernel-group-info.m40000644016037001603700000000105513612141515020462 0ustar00hutter2hutter200000000000000dnl # dnl # 4.9 API change dnl # group_info changed from 2d array via >blocks to 1d array via ->gid dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GROUP_INFO_GID], [ ZFS_LINUX_TEST_SRC([group_info_gid], [ #include ],[ struct group_info *gi = groups_alloc(1); gi->gid[0] = KGIDT_INIT(0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_GROUP_INFO_GID], [ AC_MSG_CHECKING([whether group_info->gid exists]) ZFS_LINUX_TEST_RESULT([group_info_gid], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GROUP_INFO_GID, 1, [group_info->gid exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-set-nlink.m40000644000000000000000000000007413612141515020303 xustar000000000000000030 atime=1579730378.220495932 30 ctime=1579730468.588397309 zfs-0.8.3/config/kernel-set-nlink.m40000644016037001603700000000102213612141515020273 0ustar00hutter2hutter200000000000000dnl # dnl # Linux v3.2-rc1 API change dnl # SHA: bfe8684869601dacfcb2cd69ef8cfd9045f62170 dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SET_NLINK], [ ZFS_LINUX_TEST_SRC([set_nlink], [ #include ],[ struct inode node; unsigned int link = 0; (void) set_nlink(&node, link); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SET_NLINK], [ AC_MSG_CHECKING([whether set_nlink() is available]) ZFS_LINUX_TEST_RESULT([set_nlink], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SET_NLINK, 1, [set_nlink() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-encode-fh-inode.m40000644000000000000000000000007413612141515021323 xustar000000000000000030 atime=1579730378.240496575 30 ctime=1579730468.489394129 zfs-0.8.3/config/kernel-encode-fh-inode.m40000644016037001603700000000164613612141515021327 0ustar00hutter2hutter200000000000000dnl # dnl # 3.5.0 API change dnl # torvalds/linux@b0b0382bb4904965a9e9fca77ad87514dfda0d1c changed the dnl # ->encode_fh() callback to pass the child inode and its parents inode dnl # rather than a dentry and a boolean saying whether we want the parent. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_ENCODE_FH_WITH_INODE], [ ZFS_LINUX_TEST_SRC([export_operations_encode_fh], [ #include int encode_fh(struct inode *inode, __u32 *fh, int *max_len, struct inode *parent) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .encode_fh = encode_fh, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE], [ AC_MSG_CHECKING([whether eops->encode_fh() wants inode]) ZFS_LINUX_TEST_RESULT([export_operations_encode_fh], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ENCODE_FH_WITH_INODE, 1, [eops->encode_fh() wants child and parent inodes]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-dentry-operations.m40000644000000000000000000000007413612141515022065 xustar000000000000000030 atime=1579730378.241496607 30 ctime=1579730468.484393969 zfs-0.8.3/config/kernel-dentry-operations.m40000644016037001603700000001136513612141515022070 0ustar00hutter2hutter200000000000000dnl # dnl # 3.4.0 API change dnl # Added d_make_root() to replace previous d_alloc_root() function. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_D_MAKE_ROOT], [ ZFS_LINUX_TEST_SRC([d_make_root], [ #include ], [ d_make_root(NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_D_MAKE_ROOT], [ AC_MSG_CHECKING([whether d_make_root() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([d_make_root], [d_make_root], [fs/dcache.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_D_MAKE_ROOT, 1, [d_make_root() is available]) ], [ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.28 API change dnl # Added d_obtain_alias() helper function. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_D_OBTAIN_ALIAS], [ ZFS_LINUX_TEST_SRC([d_obtain_alias], [ #include ], [ d_obtain_alias(NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_D_OBTAIN_ALIAS], [ AC_MSG_CHECKING([whether d_obtain_alias() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([d_obtain_alias], [d_obtain_alias], [fs/dcache.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_D_OBTAIN_ALIAS, 1, [d_obtain_alias() is available]) ], [ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.12 API change dnl # d_prune_aliases() helper function available. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_D_PRUNE_ALIASES], [ ZFS_LINUX_TEST_SRC([d_prune_aliases], [ #include ], [ struct inode *ip = NULL; d_prune_aliases(ip); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_D_PRUNE_ALIASES], [ AC_MSG_CHECKING([whether d_prune_aliases() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([d_prune_aliases], [d_prune_aliases], [fs/dcache.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_D_PRUNE_ALIASES, 1, [d_prune_aliases() is available]) ], [ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.38 API change dnl # Added d_set_d_op() helper function. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_D_SET_D_OP], [ ZFS_LINUX_TEST_SRC([d_set_d_op], [ #include ], [ d_set_d_op(NULL, NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_D_SET_D_OP], [ AC_MSG_CHECKING([whether d_set_d_op() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([d_set_d_op], [d_set_d_op], [fs/dcache.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_D_SET_D_OP, 1, [d_set_d_op() is available]) ], [ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.6 API change dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_D_REVALIDATE_NAMEIDATA], [ ZFS_LINUX_TEST_SRC([dentry_operations_revalidate], [ #include #include int revalidate (struct dentry *dentry, struct nameidata *nidata) { return 0; } static const struct dentry_operations dops __attribute__ ((unused)) = { .d_revalidate = revalidate, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA], [ AC_MSG_CHECKING([whether dops->d_revalidate() takes struct nameidata]) ZFS_LINUX_TEST_RESULT([dentry_operations_revalidate], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_D_REVALIDATE_NAMEIDATA, 1, [dops->d_revalidate() operation takes nameidata]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.30 API change dnl # The 'struct dentry_operations' was constified in the dentry structure. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CONST_DENTRY_OPERATIONS], [ ZFS_LINUX_TEST_SRC([dentry_operations_const], [ #include const struct dentry_operations test_d_op = { .d_revalidate = NULL, }; ],[ struct dentry d __attribute__ ((unused)); d.d_op = &test_d_op; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS], [ AC_MSG_CHECKING([whether dentry uses const struct dentry_operations]) ZFS_LINUX_TEST_RESULT([dentry_operations_const], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CONST_DENTRY_OPERATIONS, 1, [dentry uses const struct dentry_operations]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.38 API change dnl # Added sb->s_d_op default dentry_operations member dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_S_D_OP], [ ZFS_LINUX_TEST_SRC([super_block_s_d_op], [ #include ],[ struct super_block sb __attribute__ ((unused)); sb.s_d_op = NULL; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_S_D_OP], [ AC_MSG_CHECKING([whether super_block has s_d_op]) ZFS_LINUX_TEST_RESULT([super_block_s_d_op], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_S_D_OP, 1, [struct super_block has s_d_op]) ], [ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_DENTRY], [ ZFS_AC_KERNEL_SRC_D_MAKE_ROOT ZFS_AC_KERNEL_SRC_D_OBTAIN_ALIAS ZFS_AC_KERNEL_SRC_D_PRUNE_ALIASES ZFS_AC_KERNEL_SRC_D_SET_D_OP ZFS_AC_KERNEL_SRC_D_REVALIDATE_NAMEIDATA ZFS_AC_KERNEL_SRC_CONST_DENTRY_OPERATIONS ZFS_AC_KERNEL_SRC_S_D_OP ]) AC_DEFUN([ZFS_AC_KERNEL_DENTRY], [ ZFS_AC_KERNEL_D_MAKE_ROOT ZFS_AC_KERNEL_D_OBTAIN_ALIAS ZFS_AC_KERNEL_D_PRUNE_ALIASES ZFS_AC_KERNEL_D_SET_D_OP ZFS_AC_KERNEL_D_REVALIDATE_NAMEIDATA ZFS_AC_KERNEL_CONST_DENTRY_OPERATIONS ZFS_AC_KERNEL_S_D_OP ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-put-link.m40000644000000000000000000000007313612141515020141 xustar000000000000000030 atime=1579730378.224496062 29 ctime=1579730468.57539689 zfs-0.8.3/config/kernel-put-link.m40000644016037001603700000000304513612141515020141 0ustar00hutter2hutter200000000000000dnl # dnl # Supported symlink APIs dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_PUT_LINK], [ ZFS_LINUX_TEST_SRC([put_link_cookie], [ #include void put_link(struct inode *ip, void *cookie) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; ],[]) ZFS_LINUX_TEST_SRC([put_link_nameidata], [ #include void put_link(struct dentry *de, struct nameidata *nd, void *ptr) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_PUT_LINK], [ dnl # dnl # 4.5 API change dnl # get_link() uses delayed done, there is no put_link() interface. dnl # This check intially uses the inode_operations_get_link result dnl # ZFS_LINUX_TEST_RESULT([inode_operations_get_link], [ AC_DEFINE(HAVE_PUT_LINK_DELAYED, 1, [iops->put_link() delayed]) ],[ dnl # dnl # 4.2 API change dnl # This kernel retired the nameidata structure. dnl # AC_MSG_CHECKING([whether iops->put_link() passes cookie]) ZFS_LINUX_TEST_RESULT([put_link_cookie], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PUT_LINK_COOKIE, 1, [iops->put_link() cookie]) ],[ AC_MSG_RESULT(no) dnl # dnl # 2.6.32 API dnl # AC_MSG_CHECKING( [whether iops->put_link() passes nameidata]) ZFS_LINUX_TEST_RESULT([put_link_nameidata], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PUT_LINK_NAMEIDATA, 1, [iops->put_link() nameidata]) ],[ ZFS_LINUX_TEST_ERROR([put_link]) ]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-inode-getattr.m40000644000000000000000000000007413612141515021145 xustar000000000000000030 atime=1579730378.232496319 30 ctime=1579730468.525395284 zfs-0.8.3/config/kernel-inode-getattr.m40000644016037001603700000000244713612141515021151 0ustar00hutter2hutter200000000000000dnl # dnl # Linux 4.11 API dnl # See torvalds/linux@a528d35 dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_GETATTR], [ ZFS_LINUX_TEST_SRC([inode_operations_getattr_path], [ #include int test_getattr( const struct path *p, struct kstat *k, u32 request_mask, unsigned int query_flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; ],[]) ZFS_LINUX_TEST_SRC([inode_operations_getattr_vfsmount], [ #include int test_getattr( struct vfsmount *mnt, struct dentry *d, struct kstat *k) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_GETATTR], [ AC_MSG_CHECKING([whether iops->getattr() takes a path]) ZFS_LINUX_TEST_RESULT([inode_operations_getattr_path], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PATH_IOPS_GETATTR, 1, [iops->getattr() takes a path]) ],[ AC_MSG_RESULT(no) AC_MSG_CHECKING([whether iops->getattr() takes a vfsmount]) ZFS_LINUX_TEST_RESULT([inode_operations_getattr_vfsmount], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_VFSMOUNT_IOPS_GETATTR, 1, [iops->getattr() takes a vfsmount]) ],[ AC_MSG_RESULT(no) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-sget-args.m40000644000000000000000000000007413612141515020273 xustar000000000000000030 atime=1579730378.220495932 30 ctime=1579730468.592397437 zfs-0.8.3/config/kernel-sget-args.m40000644016037001603700000000121213612141515020264 0ustar00hutter2hutter200000000000000dnl # dnl # 3.6 API change, dnl # 'sget' now takes the mount flags as an argument. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SGET], [ ZFS_LINUX_TEST_SRC([sget_5args], [ #include ],[ struct file_system_type *type = NULL; int (*test)(struct super_block *,void *) = NULL; int (*set)(struct super_block *,void *) = NULL; int flags = 0; void *data = NULL; (void) sget(type, test, set, flags, data); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SGET], [ AC_MSG_CHECKING([whether sget() wants 5 args]) ZFS_LINUX_TEST_RESULT([sget_5args], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_5ARG_SGET, 1, [sget() wants 5 args]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/missing0000644000000000000000000000013213612142772016254 xustar000000000000000030 mtime=1579730426.474045137 30 atime=1579730444.015608337 30 ctime=1579730468.775403311 zfs-0.8.3/config/missing0000755016037001603700000002623313612142772016267 0ustar00hutter2hutter200000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: zfs-0.8.3/config/PaxHeaders.151519/user-libuuid.m40000644000000000000000000000007413607166132017540 xustar000000000000000030 atime=1579730378.183494744 30 ctime=1579730468.691400614 zfs-0.8.3/config/user-libuuid.m40000644016037001603700000000105413607166132017535 0ustar00hutter2hutter200000000000000dnl # dnl # Check for libuuid dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_LIBUUID], [ LIBUUID= AC_CHECK_HEADER([uuid/uuid.h], [], [AC_MSG_FAILURE([ *** uuid/uuid.h missing, libuuid-devel package required])]) AC_SEARCH_LIBS([uuid_generate], [uuid], [], [AC_MSG_FAILURE([ *** uuid_generate() missing, libuuid-devel package required])]) AC_SEARCH_LIBS([uuid_is_null], [uuid], [], [AC_MSG_FAILURE([ *** uuid_is_null() missing, libuuid-devel package required])]) AC_SUBST([LIBUUID], ["-luuid"]) AC_DEFINE([HAVE_LIBUUID], 1, [Define if you have libuuid]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-file-inode.m40000644000000000000000000000007413612141515020412 xustar000000000000000030 atime=1579730378.239496543 30 ctime=1579730468.497394385 zfs-0.8.3/config/kernel-file-inode.m40000644016037001603700000000102513612141515020405 0ustar00hutter2hutter200000000000000dnl # dnl # 3.19 API change dnl # struct access f->f_dentry->d_inode was replaced by accessor function dnl # file_inode(f) dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_FILE_INODE], [ ZFS_LINUX_TEST_SRC([file_inode], [ #include ],[ struct file *f = NULL; file_inode(f); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_FILE_INODE], [ AC_MSG_CHECKING([whether file_inode() is available]) ZFS_LINUX_TEST_RESULT([file_inode], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FILE_INODE, 1, [file_inode() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/toolchain-simd.m40000644000000000000000000000007313607166132020040 xustar000000000000000029 atime=1579730378.18549481 30 ctime=1579730468.671399974 zfs-0.8.3/config/toolchain-simd.m40000644016037001603700000002176213607166132020046 0ustar00hutter2hutter200000000000000dnl # dnl # Checks if host toolchain supports SIMD instructions dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_TOOLCHAIN_SIMD], [ case "$host_cpu" in x86_64 | x86 | i686) ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2 ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3 ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3 ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1 ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2 ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2 ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512F ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512CD ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512DQ ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512BW ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512IFMA ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VBMI ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512PF ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512ER ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VL ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AES ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_PCLMULQDQ ;; esac ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE], [ AC_MSG_CHECKING([whether host toolchain supports SSE]) AC_LINK_IFELSE([AC_LANG_SOURCE([[ void main() { __asm__ __volatile__("xorps %xmm0, %xmm1"); } ]])], [ AC_DEFINE([HAVE_SSE], 1, [Define if host toolchain supports SSE]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2 dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE2], [ AC_MSG_CHECKING([whether host toolchain supports SSE2]) AC_LINK_IFELSE([AC_LANG_SOURCE([[ void main() { __asm__ __volatile__("pxor %xmm0, %xmm1"); } ]])], [ AC_DEFINE([HAVE_SSE2], 1, [Define if host toolchain supports SSE2]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3 dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE3], [ AC_MSG_CHECKING([whether host toolchain supports SSE3]) AC_LINK_IFELSE([AC_LANG_SOURCE([[ void main() { char v[16]; __asm__ __volatile__("lddqu %0,%%xmm0" :: "m"(v[0])); } ]])], [ AC_DEFINE([HAVE_SSE3], 1, [Define if host toolchain supports SSE3]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3 dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSSE3], [ AC_MSG_CHECKING([whether host toolchain supports SSSE3]) AC_LINK_IFELSE([AC_LANG_SOURCE([[ void main() { __asm__ __volatile__("pshufb %xmm0,%xmm1"); } ]])], [ AC_DEFINE([HAVE_SSSE3], 1, [Define if host toolchain supports SSSE3]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1 dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_1], [ AC_MSG_CHECKING([whether host toolchain supports SSE4.1]) AC_LINK_IFELSE([AC_LANG_SOURCE([[ void main() { __asm__ __volatile__("pmaxsb %xmm0,%xmm1"); } ]])], [ AC_DEFINE([HAVE_SSE4_1], 1, [Define if host toolchain supports SSE4.1]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2 dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_SSE4_2], [ AC_MSG_CHECKING([whether host toolchain supports SSE4.2]) AC_LINK_IFELSE([AC_LANG_SOURCE([[ void main() { __asm__ __volatile__("pcmpgtq %xmm0, %xmm1"); } ]])], [ AC_DEFINE([HAVE_SSE4_2], 1, [Define if host toolchain supports SSE4.2]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX], [ AC_MSG_CHECKING([whether host toolchain supports AVX]) AC_LINK_IFELSE([AC_LANG_SOURCE([[ void main() { char v[32]; __asm__ __volatile__("vmovdqa %0,%%ymm0" :: "m"(v[0])); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX], 1, [Define if host toolchain supports AVX]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2 dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX2], [ AC_MSG_CHECKING([whether host toolchain supports AVX2]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vpshufb %ymm0,%ymm1,%ymm2"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX2], 1, [Define if host toolchain supports AVX2]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512F dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512F], [ AC_MSG_CHECKING([whether host toolchain supports AVX512F]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vpandd %zmm0,%zmm1,%zmm2"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512F], 1, [Define if host toolchain supports AVX512F]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512CD dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512CD], [ AC_MSG_CHECKING([whether host toolchain supports AVX512CD]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vplzcntd %zmm0,%zmm1"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512CD], 1, [Define if host toolchain supports AVX512CD]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512DQ dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512DQ], [ AC_MSG_CHECKING([whether host toolchain supports AVX512DQ]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vandpd %zmm0,%zmm1,%zmm2"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512DQ], 1, [Define if host toolchain supports AVX512DQ]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512BW dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512BW], [ AC_MSG_CHECKING([whether host toolchain supports AVX512BW]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vpshufb %zmm0,%zmm1,%zmm2"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512BW], 1, [Define if host toolchain supports AVX512BW]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512IFMA dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512IFMA], [ AC_MSG_CHECKING([whether host toolchain supports AVX512IFMA]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vpmadd52luq %zmm0,%zmm1,%zmm2"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512IFMA], 1, [Define if host toolchain supports AVX512IFMA]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VBMI dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VBMI], [ AC_MSG_CHECKING([whether host toolchain supports AVX512VBMI]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vpermb %zmm0,%zmm1,%zmm2"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512VBMI], 1, [Define if host toolchain supports AVX512VBMI]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512PF dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512PF], [ AC_MSG_CHECKING([whether host toolchain supports AVX512PF]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vgatherpf0dps (%rsi,%zmm0,4){%k1}"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512PF], 1, [Define if host toolchain supports AVX512PF]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512ER dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512ER], [ AC_MSG_CHECKING([whether host toolchain supports AVX512ER]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vexp2pd %zmm0,%zmm1"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512ER], 1, [Define if host toolchain supports AVX512ER]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VL dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AVX512VL], [ AC_MSG_CHECKING([whether host toolchain supports AVX512VL]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("vpabsq %zmm0,%zmm1"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AVX512VL], 1, [Define if host toolchain supports AVX512VL]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AES dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_AES], [ AC_MSG_CHECKING([whether host toolchain supports AES]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("aesenc %xmm0, %xmm1"); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_AES], 1, [Define if host toolchain supports AES]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_PCLMULQDQ dnl # AC_DEFUN([ZFS_AC_CONFIG_TOOLCHAIN_CAN_BUILD_PCLMULQDQ], [ AC_MSG_CHECKING([whether host toolchain supports PCLMULQDQ]) AC_LINK_IFELSE([AC_LANG_SOURCE([ [ void main() { __asm__ __volatile__("pclmulqdq %0, %%xmm0, %%xmm1" :: "i"(0)); } ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE([HAVE_PCLMULQDQ], 1, [Define if host toolchain supports PCLMULQDQ]) ], [ AC_MSG_RESULT([no]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-lseek-execute.m40000644000000000000000000000007413612141515021142 xustar000000000000000030 atime=1579730378.227496159 30 ctime=1579730468.558396344 zfs-0.8.3/config/kernel-lseek-execute.m40000644016037001603700000000135013612141515021136 0ustar00hutter2hutter200000000000000dnl # dnl # 3.11 API change dnl # lseek_execute helper exported dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_LSEEK_EXECUTE], [ ZFS_LINUX_TEST_SRC([lseek_execute], [ #include ], [ struct file *fp __attribute__ ((unused)) = NULL; struct inode *ip __attribute__ ((unused)) = NULL; loff_t offset __attribute__ ((unused)) = 0; loff_t maxsize __attribute__ ((unused)) = 0; lseek_execute(fp, ip, offset, maxsize); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_LSEEK_EXECUTE], [ AC_MSG_CHECKING([whether lseek_execute() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([lseek_execute], [lseek_exclusive], [fs/read_write.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_LSEEK_EXECUTE, 1, [lseek_execute() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bio-rw-barrier.m40000644000000000000000000000007413612141515021222 xustar000000000000000030 atime=1579730378.252496961 30 ctime=1579730468.440392555 zfs-0.8.3/config/kernel-bio-rw-barrier.m40000644016037001603700000000170313612141515021220 0ustar00hutter2hutter200000000000000dnl # dnl # Interface for issuing a discard bio: dnl # 2.6.28-2.6.35: BIO_RW_BARRIER dnl # 2.6.36-3.x: REQ_BARRIER dnl # dnl # dnl # Since REQ_BARRIER is a preprocessor definition, there is no need for an dnl # autotools check for it. Also, REQ_BARRIER existed in the request layer dnl # until torvalds/linux@7b6d91daee5cac6402186ff224c3af39d79f4a0e unified the dnl # request layer and bio layer flags, so it would be wrong to assume that dnl # the APIs are mutually exclusive contrary to the typical case. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_RW_BARRIER], [ ZFS_LINUX_TEST_SRC([bio_rw_barrier], [ #include ],[ int flags __attribute__ ((unused)); flags = BIO_RW_BARRIER; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_RW_BARRIER], [ AC_MSG_CHECKING([whether BIO_RW_BARRIER is defined]) ZFS_LINUX_TEST_RESULT([bio_rw_barrier], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_RW_BARRIER, 1, [BIO_RW_BARRIER is defined]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-inode-set-flags.m40000644000000000000000000000007413612141515021360 xustar000000000000000030 atime=1579730378.232496319 30 ctime=1579730468.529395412 zfs-0.8.3/config/kernel-inode-set-flags.m40000644016037001603700000000103613612141515021355 0ustar00hutter2hutter200000000000000dnl # dnl # 3.15 API change dnl # inode_set_flags introduced to set i_flags dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_SET_FLAGS], [ ZFS_LINUX_TEST_SRC([inode_set_flags], [ #include ],[ struct inode inode; inode_set_flags(&inode, S_IMMUTABLE, S_IMMUTABLE); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_SET_FLAGS], [ AC_MSG_CHECKING([whether inode_set_flags() exists]) ZFS_LINUX_TEST_RESULT([inode_set_flags], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INODE_SET_FLAGS, 1, [inode_set_flags() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/ax_save_flags.m40000644000000000000000000000007413607166132017731 xustar000000000000000030 atime=1579730378.270497539 30 ctime=1579730468.403391368 zfs-0.8.3/config/ax_save_flags.m40000644016037001603700000000154713607166132017735 0ustar00hutter2hutter200000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_save_flags.html # =========================================================================== # # SYNOPSIS # # AX_SAVE_FLAGS() # # DESCRIPTION # # Save common compilation flags into temporary variables # # LICENSE # # Copyright (c) 2009 Filippo Giunchedi # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 3 AC_DEFUN([AX_SAVE_FLAGS], [ CPPFLAGS_save="${CPPFLAGS}" CFLAGS_save="${CFLAGS}" CXXFLAGS_save="${CXXFLAGS}" OBJCFLAGS_save="${OBJCFLAGS}" LDFLAGS_save="${LDFLAGS}" LIBS_save="${LIBS}" ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-blk-queue-unplug.m40000644000000000000000000000007413612141515021601 xustar000000000000000030 atime=1579730378.248496831 30 ctime=1579730468.458393134 zfs-0.8.3/config/kernel-blk-queue-unplug.m40000644016037001603700000000243113612141515021576 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.32-2.6.35 API - The BIO_RW_UNPLUG enum can be used as a hint dnl # to unplug the queue. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_RW_UNPLUG], [ ZFS_LINUX_TEST_SRC([blk_queue_bio_rw_unplug], [ #include ],[ enum bio_rw_flags rw __attribute__ ((unused)) = BIO_RW_UNPLUG; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_RW_UNPLUG], [ AC_MSG_CHECKING([whether the BIO_RW_UNPLUG enum is available]) ZFS_LINUX_TEST_RESULT([blk_queue_bio_rw_unplug], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_HAVE_BIO_RW_UNPLUG, 1, [BIO_RW_UNPLUG is available]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_PLUG], [ ZFS_LINUX_TEST_SRC([blk_plug], [ #include ],[ struct blk_plug plug __attribute__ ((unused)); blk_start_plug(&plug); blk_finish_plug(&plug); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_PLUG], [ AC_MSG_CHECKING([whether struct blk_plug is available]) ZFS_LINUX_TEST_RESULT([blk_plug], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_HAVE_BLK_PLUG, 1, [struct blk_plug is available]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_PLUG], [ ZFS_AC_KERNEL_SRC_BIO_RW_UNPLUG ZFS_AC_KERNEL_SRC_BLK_PLUG ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_PLUG], [ ZFS_AC_KERNEL_BIO_RW_UNPLUG ZFS_AC_KERNEL_BLK_PLUG ]) zfs-0.8.3/config/PaxHeaders.151519/always-pyzfs.m40000644000000000000000000000007413607166132017600 xustar000000000000000030 atime=1579730378.274497667 30 ctime=1579730468.395391112 zfs-0.8.3/config/always-pyzfs.m40000644016037001603700000000554113607166132017602 0ustar00hutter2hutter200000000000000dnl # dnl # ZFS_AC_PYTHON_MODULE(module_name, [action-if-true], [action-if-false]) dnl # dnl # Checks for Python module. Freely inspired by AX_PYTHON_MODULE dnl # https://www.gnu.org/software/autoconf-archive/ax_python_module.html dnl # Required by ZFS_AC_CONFIG_ALWAYS_PYZFS. dnl # AC_DEFUN([ZFS_AC_PYTHON_MODULE], [ PYTHON_NAME=$(basename $PYTHON) AC_MSG_CHECKING([for $PYTHON_NAME module: $1]) AS_IF([$PYTHON -c "import $1" 2>/dev/null], [ AC_MSG_RESULT(yes) m4_ifvaln([$2], [$2]) ], [ AC_MSG_RESULT(no) m4_ifvaln([$3], [$3]) ]) ]) dnl # dnl # Determines if pyzfs can be built, requires Python 2.7 or later. dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [ AC_ARG_ENABLE([pyzfs], AC_HELP_STRING([--enable-pyzfs], [install libzfs_core python bindings @<:@default=check@:>@]), [enable_pyzfs=$enableval], [enable_pyzfs=check]) dnl # dnl # Packages for pyzfs specifically enabled/disabled. dnl # AS_IF([test "x$enable_pyzfs" != xcheck], [ AS_IF([test "x$enable_pyzfs" = xyes], [ DEFINE_PYZFS='--with pyzfs' ], [ DEFINE_PYZFS='--without pyzfs' ]) ], [ AS_IF([test "$PYTHON" != :], [ DEFINE_PYZFS='' ], [ enable_pyzfs=no DEFINE_PYZFS='--without pyzfs' ]) ]) AC_SUBST(DEFINE_PYZFS) dnl # dnl # Require python-devel libraries dnl # AS_IF([test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes], [ AS_CASE([$PYTHON_VERSION], [3.*], [PYTHON_REQUIRED_VERSION=">= '3.4.0'"], [2.*], [PYTHON_REQUIRED_VERSION=">= '2.7.0'"], [AC_MSG_ERROR("Python $PYTHON_VERSION unknown")] ) AX_PYTHON_DEVEL([$PYTHON_REQUIRED_VERSION], [ AS_IF([test "x$enable_pyzfs" = xyes], [ AC_MSG_ERROR("Python $PYTHON_REQUIRED_VERSION development library is not installed") ], [test "x$enable_pyzfs" != xno], [ enable_pyzfs=no ]) ]) ]) dnl # dnl # Python "setuptools" module is required to build and install pyzfs dnl # AS_IF([test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes], [ ZFS_AC_PYTHON_MODULE([setuptools], [], [ AS_IF([test "x$enable_pyzfs" = xyes], [ AC_MSG_ERROR("Python $PYTHON_VERSION setuptools is not installed") ], [test "x$enable_pyzfs" != xno], [ enable_pyzfs=no ]) ]) ]) dnl # dnl # Python "cffi" module is required to run pyzfs dnl # AS_IF([test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes], [ ZFS_AC_PYTHON_MODULE([cffi], [], [ AS_IF([test "x$enable_pyzfs" = xyes], [ AC_MSG_ERROR("Python $PYTHON_VERSION cffi is not installed") ], [test "x$enable_pyzfs" != xno], [ enable_pyzfs=no ]) ]) ]) dnl # dnl # Set enable_pyzfs to 'yes' if every check passed dnl # AS_IF([test "x$enable_pyzfs" = xcheck], [enable_pyzfs=yes]) AM_CONDITIONAL([PYZFS_ENABLED], [test "x$enable_pyzfs" = xyes]) AC_SUBST([PYZFS_ENABLED], [$enable_pyzfs]) AC_SUBST(pythonsitedir, [$PYTHON_SITE_PKG]) AC_MSG_CHECKING([whether to enable pyzfs: ]) AC_MSG_RESULT($enable_pyzfs) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-dirty-inode.m40000644000000000000000000000007413612141515020626 xustar000000000000000030 atime=1579730378.241496607 30 ctime=1579730468.485394001 zfs-0.8.3/config/kernel-dirty-inode.m40000644016037001603700000000146113612141515020625 0ustar00hutter2hutter200000000000000dnl # dnl # 3.0 API change dnl # The sops->dirty_inode() callbacks were updated to take a flags dnl # argument. This allows the greater control over whether the dnl # filesystem needs to push out a transaction or not. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_DIRTY_INODE], [ ZFS_LINUX_TEST_SRC([dirty_inode_with_flags], [ #include void dirty_inode(struct inode *a, int b) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .dirty_inode = dirty_inode, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_DIRTY_INODE], [ AC_MSG_CHECKING([whether sops->dirty_inode() wants flags]) ZFS_LINUX_TEST_RESULT([dirty_inode_with_flags], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_DIRTY_INODE_WITH_FLAGS, 1, [sops->dirty_inode() wants flags]) ],[ AC_MSG_RESULT([no]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-makedev.m40000644000000000000000000000007413607166132017517 xustar000000000000000030 atime=1579730378.182494712 30 ctime=1579730468.693400678 zfs-0.8.3/config/user-makedev.m40000644016037001603700000000134713607166132017521 0ustar00hutter2hutter200000000000000dnl # dnl # glibc 2.25 dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_MAKEDEV_IN_SYSMACROS], [ AC_MSG_CHECKING([makedev() is declared in sys/sysmacros.h]) AC_TRY_COMPILE( [ #include ],[ int k; k = makedev(0,0); ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MAKEDEV_IN_SYSMACROS, 1, [makedev() is declared in sys/sysmacros.h]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # glibc X < Y < 2.25 dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_MAKEDEV_IN_MKDEV], [ AC_MSG_CHECKING([makedev() is declared in sys/mkdev.h]) AC_TRY_COMPILE( [ #include ],[ int k; k = makedev(0,0); ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MAKEDEV_IN_MKDEV, 1, [makedev() is declared in sys/mkdev.h]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-kmap-atomic-args.m40000644000000000000000000000007413612141515021533 xustar000000000000000030 atime=1579730378.230496255 30 ctime=1579730468.541395799 zfs-0.8.3/config/kernel-kmap-atomic-args.m40000644016037001603700000000111013612141515021521 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.37 API change dnl # kmap_atomic changed from assigning hard-coded named slot to using dnl # push/pop based dynamical allocation. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_KMAP_ATOMIC_ARGS], [ ZFS_LINUX_TEST_SRC([kmap_atomic], [ #include ],[ struct page page; kmap_atomic(&page); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_KMAP_ATOMIC_ARGS], [ AC_MSG_CHECKING([whether kmap_atomic wants 1 args]) ZFS_LINUX_TEST_RESULT([kmap_atomic], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_1ARG_KMAP_ATOMIC, 1, [kmap_atomic wants 1 args]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/zfs-build.m40000644000000000000000000000007413612141515017020 xustar000000000000000030 atime=1579730378.177494552 30 ctime=1579730468.708401161 zfs-0.8.3/config/zfs-build.m40000644016037001603700000003472313612141515017026 0ustar00hutter2hutter200000000000000AC_DEFUN([ZFS_AC_LICENSE], [ AC_MSG_CHECKING([zfs author]) AC_MSG_RESULT([$ZFS_META_AUTHOR]) AC_MSG_CHECKING([zfs license]) AC_MSG_RESULT([$ZFS_META_LICENSE]) ]) AC_DEFUN([ZFS_AC_DEBUG_ENABLE], [ DEBUG_CFLAGS="-Werror" DEBUG_CPPFLAGS="-DDEBUG -UNDEBUG" DEBUG_LDFLAGS="" DEBUG_ZFS="_with_debug" AC_DEFINE(ZFS_DEBUG, 1, [zfs debugging enabled]) KERNEL_DEBUG_CFLAGS="-Werror" KERNEL_DEBUG_CPPFLAGS="-DDEBUG -UNDEBUG" ]) AC_DEFUN([ZFS_AC_DEBUG_DISABLE], [ DEBUG_CFLAGS="" DEBUG_CPPFLAGS="-UDEBUG -DNDEBUG" DEBUG_LDFLAGS="" DEBUG_ZFS="_without_debug" KERNEL_DEBUG_CFLAGS="" KERNEL_DEBUG_CPPFLAGS="-UDEBUG -DNDEBUG" ]) dnl # dnl # When debugging is enabled: dnl # - Enable all ASSERTs (-DDEBUG) dnl # - Promote all compiler warnings to errors (-Werror) dnl # AC_DEFUN([ZFS_AC_DEBUG], [ AC_MSG_CHECKING([whether assertion support will be enabled]) AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], [Enable compiler and code assertions @<:@default=no@:>@])], [], [enable_debug=no]) AS_CASE(["x$enable_debug"], ["xyes"], [ZFS_AC_DEBUG_ENABLE], ["xno"], [ZFS_AC_DEBUG_DISABLE], [AC_MSG_ERROR([Unknown option $enable_debug])]) AC_SUBST(DEBUG_CFLAGS) AC_SUBST(DEBUG_CPPFLAGS) AC_SUBST(DEBUG_LDFLAGS) AC_SUBST(DEBUG_ZFS) AC_SUBST(KERNEL_DEBUG_CFLAGS) AC_SUBST(KERNEL_DEBUG_CPPFLAGS) AC_MSG_RESULT([$enable_debug]) ]) AC_DEFUN([ZFS_AC_DEBUGINFO_ENABLE], [ DEBUG_CFLAGS="$DEBUG_CFLAGS -g -fno-inline" KERNEL_DEBUG_CFLAGS="$KERNEL_DEBUG_CFLAGS -fno-inline" KERNEL_MAKE="$KERNEL_MAKE CONFIG_DEBUG_INFO=y" DEBUGINFO_ZFS="_with_debuginfo" ]) AC_DEFUN([ZFS_AC_DEBUGINFO_DISABLE], [ DEBUGINFO_ZFS="_without_debuginfo" ]) AC_DEFUN([ZFS_AC_DEBUGINFO], [ AC_MSG_CHECKING([whether debuginfo support will be forced]) AC_ARG_ENABLE([debuginfo], [AS_HELP_STRING([--enable-debuginfo], [Force generation of debuginfo @<:@default=no@:>@])], [], [enable_debuginfo=no]) AS_CASE(["x$enable_debuginfo"], ["xyes"], [ZFS_AC_DEBUGINFO_ENABLE], ["xno"], [ZFS_AC_DEBUGINFO_DISABLE], [AC_MSG_ERROR([Unknown option $enable_debuginfo])]) AC_SUBST(DEBUG_CFLAGS) AC_SUBST(DEBUGINFO_ZFS) AC_SUBST(KERNEL_DEBUG_CFLAGS) AC_SUBST(KERNEL_MAKE) AC_MSG_RESULT([$enable_debuginfo]) ]) dnl # dnl # Disabled by default, provides basic memory tracking. Track the total dnl # number of bytes allocated with kmem_alloc() and freed with kmem_free(). dnl # Then at module unload time if any bytes were leaked it will be reported dnl # on the console. dnl # AC_DEFUN([ZFS_AC_DEBUG_KMEM], [ AC_MSG_CHECKING([whether basic kmem accounting is enabled]) AC_ARG_ENABLE([debug-kmem], [AS_HELP_STRING([--enable-debug-kmem], [Enable basic kmem accounting @<:@default=no@:>@])], [], [enable_debug_kmem=no]) AS_IF([test "x$enable_debug_kmem" = xyes], [ KERNEL_DEBUG_CPPFLAGS+=" -DDEBUG_KMEM" DEBUG_KMEM_ZFS="_with_debug_kmem" ], [ DEBUG_KMEM_ZFS="_without_debug_kmem" ]) AC_SUBST(KERNEL_DEBUG_CPPFLAGS) AC_SUBST(DEBUG_KMEM_ZFS) AC_MSG_RESULT([$enable_debug_kmem]) ]) dnl # dnl # Disabled by default, provides detailed memory tracking. This feature dnl # also requires --enable-debug-kmem to be set. When enabled not only will dnl # total bytes be tracked but also the location of every kmem_alloc() and dnl # kmem_free(). When the module is unloaded a list of all leaked addresses dnl # and where they were allocated will be dumped to the console. Enabling dnl # this feature has a significant impact on performance but it makes finding dnl # memory leaks straight forward. dnl # AC_DEFUN([ZFS_AC_DEBUG_KMEM_TRACKING], [ AC_MSG_CHECKING([whether detailed kmem tracking is enabled]) AC_ARG_ENABLE([debug-kmem-tracking], [AS_HELP_STRING([--enable-debug-kmem-tracking], [Enable detailed kmem tracking @<:@default=no@:>@])], [], [enable_debug_kmem_tracking=no]) AS_IF([test "x$enable_debug_kmem_tracking" = xyes], [ KERNEL_DEBUG_CPPFLAGS+=" -DDEBUG_KMEM_TRACKING" DEBUG_KMEM_TRACKING_ZFS="_with_debug_kmem_tracking" ], [ DEBUG_KMEM_TRACKING_ZFS="_without_debug_kmem_tracking" ]) AC_SUBST(KERNEL_DEBUG_CPPFLAGS) AC_SUBST(DEBUG_KMEM_TRACKING_ZFS) AC_MSG_RESULT([$enable_debug_kmem_tracking]) ]) AC_DEFUN([ZFS_AC_CONFIG_ALWAYS], [ ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION ZFS_AC_CONFIG_ALWAYS_CC_NO_OMIT_FRAME_POINTER ZFS_AC_CONFIG_ALWAYS_CC_ASAN ZFS_AC_CONFIG_ALWAYS_TOOLCHAIN_SIMD ZFS_AC_CONFIG_ALWAYS_ARCH ZFS_AC_CONFIG_ALWAYS_PYTHON ZFS_AC_CONFIG_ALWAYS_PYZFS ]) AC_DEFUN([ZFS_AC_CONFIG], [ dnl # Remove the previous build test directory. rm -Rf build AC_ARG_VAR([TEST_JOBS], [simultaneous jobs during configure (defaults to $(nproc))]) if test "x$ac_cv_env_TEST_JOBS_set" != "xset"; then TEST_JOBS=$(nproc) fi AC_SUBST(TEST_JOBS) ZFS_CONFIG=all AC_ARG_WITH([config], AS_HELP_STRING([--with-config=CONFIG], [Config file 'kernel|user|all|srpm']), [ZFS_CONFIG="$withval"]) AC_ARG_ENABLE([linux-builtin], [AC_HELP_STRING([--enable-linux-builtin], [Configure for builtin in-tree kernel modules @<:@default=no@:>@])], [], [enable_linux_builtin=no]) AC_MSG_CHECKING([zfs config]) AC_MSG_RESULT([$ZFS_CONFIG]); AC_SUBST(ZFS_CONFIG) ZFS_AC_CONFIG_ALWAYS case "$ZFS_CONFIG" in kernel) ZFS_AC_CONFIG_KERNEL ;; user) ZFS_AC_CONFIG_USER ;; all) ZFS_AC_CONFIG_USER ZFS_AC_CONFIG_KERNEL ;; srpm) ;; *) AC_MSG_RESULT([Error!]) AC_MSG_ERROR([Bad value "$ZFS_CONFIG" for --with-config, user kernel|user|all|srpm]) ;; esac AM_CONDITIONAL([CONFIG_USER], [test "$ZFS_CONFIG" = user -o "$ZFS_CONFIG" = all]) AM_CONDITIONAL([CONFIG_KERNEL], [test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all] && [test "x$enable_linux_builtin" != xyes ]) AM_CONDITIONAL([CONFIG_QAT], [test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all] && [test "x$qatsrc" != x ]) AM_CONDITIONAL([WANT_DEVNAME2DEVID], [test "x$user_libudev" = xyes ]) AM_CONDITIONAL([WANT_MMAP_LIBAIO], [test "x$user_libaio" = xyes ]) ]) dnl # dnl # Check for rpm+rpmbuild to build RPM packages. If these tools dnl # are missing it is non-fatal but you will not be able to build dnl # RPM packages and will be warned if you try too. dnl # dnl # By default the generic spec file will be used because it requires dnl # minimal dependencies. Distribution specific spec files can be dnl # placed under the 'rpm/' directory and enabled using dnl # the --with-spec= configure option. dnl # AC_DEFUN([ZFS_AC_RPM], [ RPM=rpm RPMBUILD=rpmbuild AC_MSG_CHECKING([whether $RPM is available]) AS_IF([tmp=$($RPM --version 2>/dev/null)], [ RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }') HAVE_RPM=yes AC_MSG_RESULT([$HAVE_RPM ($RPM_VERSION)]) ],[ HAVE_RPM=no AC_MSG_RESULT([$HAVE_RPM]) ]) AC_MSG_CHECKING([whether $RPMBUILD is available]) AS_IF([tmp=$($RPMBUILD --version 2>/dev/null)], [ RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $[3] }') HAVE_RPMBUILD=yes AC_MSG_RESULT([$HAVE_RPMBUILD ($RPMBUILD_VERSION)]) ],[ HAVE_RPMBUILD=no AC_MSG_RESULT([$HAVE_RPMBUILD]) ]) RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1"' RPM_DEFINE_COMMON+=' --define "$(DEBUG_KMEM_ZFS) 1"' RPM_DEFINE_COMMON+=' --define "$(DEBUG_KMEM_TRACKING_ZFS) 1"' RPM_DEFINE_COMMON+=' --define "$(DEBUGINFO_ZFS) 1"' RPM_DEFINE_COMMON+=' --define "$(ASAN_ZFS) 1"' RPM_DEFINE_UTIL=' --define "_initconfdir $(DEFAULT_INITCONF_DIR)"' dnl # Make the next three RPM_DEFINE_UTIL additions conditional, since dnl # their values may not be set when running: dnl # dnl # ./configure --with-config=srpm dnl # AS_IF([test -n "$dracutdir" ], [ RPM_DEFINE_UTIL='--define "_dracutdir $(dracutdir)"' ]) AS_IF([test -n "$udevdir" ], [ RPM_DEFINE_UTIL+=' --define "_udevdir $(udevdir)"' ]) AS_IF([test -n "$udevruledir" ], [ RPM_DEFINE_UTIL+=' --define "_udevdir $(udevruledir)"' ]) RPM_DEFINE_UTIL+=' $(DEFINE_INITRAMFS)' RPM_DEFINE_UTIL+=' $(DEFINE_SYSTEMD)' RPM_DEFINE_UTIL+=' $(DEFINE_PYZFS)' RPM_DEFINE_UTIL+=' $(DEFINE_PYTHON_VERSION)' RPM_DEFINE_UTIL+=' $(DEFINE_PYTHON_PKG_VERSION)' dnl # Override default lib directory on Debian/Ubuntu systems. The dnl # provided /usr/lib/rpm/platform//macros files do not dnl # specify the correct path for multiarch systems as described dnl # by the packaging guidelines. dnl # dnl # https://wiki.ubuntu.com/MultiarchSpec dnl # https://wiki.debian.org/Multiarch/Implementation dnl # AS_IF([test "$DEFAULT_PACKAGE" = "deb"], [ MULTIARCH_LIBDIR="lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)" RPM_DEFINE_UTIL+=' --define "_lib $(MULTIARCH_LIBDIR)"' AC_SUBST(MULTIARCH_LIBDIR) ]) RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)"' RPM_DEFINE_KMOD+=' --define "ksrc $(LINUX)"' RPM_DEFINE_KMOD+=' --define "kobj $(LINUX_OBJ)"' RPM_DEFINE_KMOD+=' --define "_wrong_version_format_terminate_build 0"' RPM_DEFINE_DKMS='' SRPM_DEFINE_COMMON='--define "build_src_rpm 1"' SRPM_DEFINE_UTIL= SRPM_DEFINE_KMOD= SRPM_DEFINE_DKMS= RPM_SPEC_DIR="rpm/generic" AC_ARG_WITH([spec], AS_HELP_STRING([--with-spec=SPEC], [Spec files 'generic|redhat']), [RPM_SPEC_DIR="rpm/$withval"]) AC_MSG_CHECKING([whether spec files are available]) AC_MSG_RESULT([yes ($RPM_SPEC_DIR/*.spec.in)]) AC_SUBST(HAVE_RPM) AC_SUBST(RPM) AC_SUBST(RPM_VERSION) AC_SUBST(HAVE_RPMBUILD) AC_SUBST(RPMBUILD) AC_SUBST(RPMBUILD_VERSION) AC_SUBST(RPM_SPEC_DIR) AC_SUBST(RPM_DEFINE_UTIL) AC_SUBST(RPM_DEFINE_KMOD) AC_SUBST(RPM_DEFINE_DKMS) AC_SUBST(RPM_DEFINE_COMMON) AC_SUBST(SRPM_DEFINE_UTIL) AC_SUBST(SRPM_DEFINE_KMOD) AC_SUBST(SRPM_DEFINE_DKMS) AC_SUBST(SRPM_DEFINE_COMMON) ]) dnl # dnl # Check for dpkg+dpkg-buildpackage to build DEB packages. If these dnl # tools are missing it is non-fatal but you will not be able to build dnl # DEB packages and will be warned if you try too. dnl # AC_DEFUN([ZFS_AC_DPKG], [ DPKG=dpkg DPKGBUILD=dpkg-buildpackage AC_MSG_CHECKING([whether $DPKG is available]) AS_IF([tmp=$($DPKG --version 2>/dev/null)], [ DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $[7] }') HAVE_DPKG=yes AC_MSG_RESULT([$HAVE_DPKG ($DPKG_VERSION)]) ],[ HAVE_DPKG=no AC_MSG_RESULT([$HAVE_DPKG]) ]) AC_MSG_CHECKING([whether $DPKGBUILD is available]) AS_IF([tmp=$($DPKGBUILD --version 2>/dev/null)], [ DPKGBUILD_VERSION=$(echo $tmp | \ $AWK '/Debian/ { print $[4] }' | cut -f-4 -d'.') HAVE_DPKGBUILD=yes AC_MSG_RESULT([$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)]) ],[ HAVE_DPKGBUILD=no AC_MSG_RESULT([$HAVE_DPKGBUILD]) ]) AC_SUBST(HAVE_DPKG) AC_SUBST(DPKG) AC_SUBST(DPKG_VERSION) AC_SUBST(HAVE_DPKGBUILD) AC_SUBST(DPKGBUILD) AC_SUBST(DPKGBUILD_VERSION) ]) dnl # dnl # Until native packaging for various different packing systems dnl # can be added the least we can do is attempt to use alien to dnl # convert the RPM packages to the needed package type. This is dnl # a hack but so far it has worked reasonable well. dnl # AC_DEFUN([ZFS_AC_ALIEN], [ ALIEN=alien AC_MSG_CHECKING([whether $ALIEN is available]) AS_IF([tmp=$($ALIEN --version 2>/dev/null)], [ ALIEN_VERSION=$(echo $tmp | $AWK '{ print $[3] }') HAVE_ALIEN=yes AC_MSG_RESULT([$HAVE_ALIEN ($ALIEN_VERSION)]) ],[ HAVE_ALIEN=no AC_MSG_RESULT([$HAVE_ALIEN]) ]) AC_SUBST(HAVE_ALIEN) AC_SUBST(ALIEN) AC_SUBST(ALIEN_VERSION) ]) dnl # dnl # Using the VENDOR tag from config.guess set the default dnl # package type for 'make pkg': (rpm | deb | tgz) dnl # AC_DEFUN([ZFS_AC_DEFAULT_PACKAGE], [ AC_MSG_CHECKING([linux distribution]) if test -f /etc/toss-release ; then VENDOR=toss ; elif test -f /etc/fedora-release ; then VENDOR=fedora ; elif test -f /etc/redhat-release ; then VENDOR=redhat ; elif test -f /etc/gentoo-release ; then VENDOR=gentoo ; elif test -f /etc/arch-release ; then VENDOR=arch ; elif test -f /etc/SuSE-release ; then VENDOR=sles ; elif test -f /etc/slackware-version ; then VENDOR=slackware ; elif test -f /etc/lunar.release ; then VENDOR=lunar ; elif test -f /etc/lsb-release ; then VENDOR=ubuntu ; elif test -f /etc/debian_version ; then VENDOR=debian ; elif test -f /etc/alpine-release ; then VENDOR=alpine ; else VENDOR= ; fi AC_MSG_RESULT([$VENDOR]) AC_SUBST(VENDOR) AC_MSG_CHECKING([default package type]) case "$VENDOR" in toss) DEFAULT_PACKAGE=rpm ;; redhat) DEFAULT_PACKAGE=rpm ;; fedora) DEFAULT_PACKAGE=rpm ;; gentoo) DEFAULT_PACKAGE=tgz ;; alpine) DEFAULT_PACKAGE=tgz ;; arch) DEFAULT_PACKAGE=tgz ;; sles) DEFAULT_PACKAGE=rpm ;; slackware) DEFAULT_PACKAGE=tgz ;; lunar) DEFAULT_PACKAGE=tgz ;; ubuntu) DEFAULT_PACKAGE=deb ;; debian) DEFAULT_PACKAGE=deb ;; *) DEFAULT_PACKAGE=rpm ;; esac AC_MSG_RESULT([$DEFAULT_PACKAGE]) AC_SUBST(DEFAULT_PACKAGE) DEFAULT_INIT_DIR=$sysconfdir/init.d AC_MSG_CHECKING([default init directory]) AC_MSG_RESULT([$DEFAULT_INIT_DIR]) AC_SUBST(DEFAULT_INIT_DIR) AC_MSG_CHECKING([default init script type]) case "$VENDOR" in toss) DEFAULT_INIT_SCRIPT=redhat ;; redhat) DEFAULT_INIT_SCRIPT=redhat ;; fedora) DEFAULT_INIT_SCRIPT=fedora ;; gentoo) DEFAULT_INIT_SCRIPT=openrc ;; alpine) DEFAULT_INIT_SCRIPT=openrc ;; arch) DEFAULT_INIT_SCRIPT=lsb ;; sles) DEFAULT_INIT_SCRIPT=lsb ;; slackware) DEFAULT_INIT_SCRIPT=lsb ;; lunar) DEFAULT_INIT_SCRIPT=lunar ;; ubuntu) DEFAULT_INIT_SCRIPT=lsb ;; debian) DEFAULT_INIT_SCRIPT=lsb ;; *) DEFAULT_INIT_SCRIPT=lsb ;; esac AC_MSG_RESULT([$DEFAULT_INIT_SCRIPT]) AC_SUBST(DEFAULT_INIT_SCRIPT) AC_MSG_CHECKING([default init config directory]) case "$VENDOR" in alpine) DEFAULT_INITCONF_DIR=/etc/conf.d ;; gentoo) DEFAULT_INITCONF_DIR=/etc/conf.d ;; toss) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; redhat) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; fedora) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; sles) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; ubuntu) DEFAULT_INITCONF_DIR=/etc/default ;; debian) DEFAULT_INITCONF_DIR=/etc/default ;; *) DEFAULT_INITCONF_DIR=/etc/default ;; esac AC_MSG_RESULT([$DEFAULT_INITCONF_DIR]) AC_SUBST(DEFAULT_INITCONF_DIR) AC_MSG_CHECKING([whether initramfs-tools is available]) if test -d /usr/share/initramfs-tools ; then DEFINE_INITRAMFS='--define "_initramfs 1"' AC_MSG_RESULT([yes]) else DEFINE_INITRAMFS='' AC_MSG_RESULT([no]) fi AC_SUBST(DEFINE_INITRAMFS) ]) dnl # dnl # Default ZFS package configuration dnl # AC_DEFUN([ZFS_AC_PACKAGE], [ ZFS_AC_DEFAULT_PACKAGE ZFS_AC_RPM ZFS_AC_DPKG ZFS_AC_ALIEN ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-blkdev-get-by-path.m40000644000000000000000000000007313612141515021764 xustar000000000000000030 atime=1579730378.248496831 29 ctime=1579730468.46139323 zfs-0.8.3/config/kernel-blkdev-get-by-path.m40000644016037001603700000000123013612141515021756 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.38 API change dnl # open_bdev_exclusive() changed to blkdev_get_by_path() dnl # close_bdev_exclusive() changed to blkdev_put() dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH], [ ZFS_LINUX_TEST_SRC([blkdev_get_by_path], [ #include ], [ blkdev_get_by_path(NULL, 0, NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH], [ AC_MSG_CHECKING([whether blkdev_get_by_path() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([blkdev_get_by_path], [blkdev_get_by_path], [fs/block_dev.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLKDEV_GET_BY_PATH, 1, [blkdev_get_by_path() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/lib-link.m40000644000000000000000000000007313612141512016616 xustar000000000000000029 atime=1579730378.19549513 30 ctime=1579730468.643399075 zfs-0.8.3/config/lib-link.m40000644016037001603700000010000513612141512016610 0ustar00hutter2hutter200000000000000# lib-link.m4 serial 28 dnl Copyright (C) 2001-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ([2.61]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_LINK_IFELSE( [AC_LANG_PROGRAM([[$3]], [[$4]])], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_libname_spec, dnl acl_library_names_spec, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Complain if config.rpath is missing. AC_REQUIRE_AUX_FILE([config.rpath]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH(PACK[-prefix], [[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && test ! -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-search. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-rwsem.m40000644000000000000000000000007413612141515017534 xustar000000000000000030 atime=1579730378.222495996 30 ctime=1579730468.582397114 zfs-0.8.3/config/kernel-rwsem.m40000644016037001603700000000461313612141515017535 0ustar00hutter2hutter200000000000000dnl # dnl # 3.1 API Change dnl # dnl # The rw_semaphore.wait_lock member was changed from spinlock_t to dnl # raw_spinlock_t at commit ddb6c9b58a19edcfac93ac670b066c836ff729f1. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_SPINLOCK_IS_RAW], [ ZFS_LINUX_TEST_SRC([rwsem_spinlock_is_raw], [ #include ],[ struct rw_semaphore dummy_semaphore __attribute__ ((unused)); raw_spinlock_t dummy_lock __attribute__ ((unused)) = __RAW_SPIN_LOCK_INITIALIZER(dummy_lock); dummy_semaphore.wait_lock = dummy_lock; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW], [ AC_MSG_CHECKING([whether struct rw_semaphore member wait_lock is raw]) ZFS_LINUX_TEST_RESULT([rwsem_spinlock_is_raw], [ AC_MSG_RESULT(yes) AC_DEFINE(RWSEM_SPINLOCK_IS_RAW, 1, [struct rw_semaphore member wait_lock is raw_spinlock_t]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.16 API Change dnl # dnl # rwsem-spinlock "->activity" changed to "->count" dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_ACTIVITY], [ ZFS_LINUX_TEST_SRC([rwsem_activity], [ #include ],[ struct rw_semaphore dummy_semaphore __attribute__ ((unused)); dummy_semaphore.activity = 0; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ACTIVITY], [ AC_MSG_CHECKING([whether struct rw_semaphore has member activity]) ZFS_LINUX_TEST_RESULT([rwsem_activity], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_RWSEM_ACTIVITY, 1, [struct rw_semaphore has member activity]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.8 API Change dnl # dnl # rwsem "->count" changed to atomic_long_t type dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM_ATOMIC_LONG_COUNT], [ ZFS_LINUX_TEST_SRC([rwsem_atomic_long_count], [ #include ],[ DECLARE_RWSEM(dummy_semaphore); (void) atomic_long_read(&dummy_semaphore.count); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT], [ AC_MSG_CHECKING( [whether struct rw_semaphore has atomic_long_t member count]) ZFS_LINUX_TEST_RESULT([rwsem_atomic_long_count], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_RWSEM_ATOMIC_LONG_COUNT, 1, [struct rw_semaphore has atomic_long_t member count]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_RWSEM], [ ZFS_AC_KERNEL_SRC_RWSEM_SPINLOCK_IS_RAW ZFS_AC_KERNEL_SRC_RWSEM_ACTIVITY ZFS_AC_KERNEL_SRC_RWSEM_ATOMIC_LONG_COUNT ]) AC_DEFUN([ZFS_AC_KERNEL_RWSEM], [ ZFS_AC_KERNEL_RWSEM_SPINLOCK_IS_RAW ZFS_AC_KERNEL_RWSEM_ACTIVITY ZFS_AC_KERNEL_RWSEM_ATOMIC_LONG_COUNT ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-get-disk-ro.m40000644000000000000000000000007413612141515020524 xustar000000000000000030 atime=1579730378.235496415 30 ctime=1579730468.515394964 zfs-0.8.3/config/kernel-get-disk-ro.m40000644016037001603700000000076213612141515020526 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.x API change dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GET_DISK_RO], [ ZFS_LINUX_TEST_SRC([get_disk_ro], [ #include ],[ struct gendisk *disk = NULL; (void) get_disk_ro(disk); ], [$NO_UNUSED_BUT_SET_VARIABLE]) ]) AC_DEFUN([ZFS_AC_KERNEL_GET_DISK_RO], [ AC_MSG_CHECKING([whether get_disk_ro() is available]) ZFS_LINUX_TEST_RESULT([get_disk_ro], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GET_DISK_RO, 1, [blk_disk_ro() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bdev-physical-size.m40000644000000000000000000000007413612141515022101 xustar000000000000000030 atime=1579730378.255497057 30 ctime=1579730468.427392139 zfs-0.8.3/config/kernel-bdev-physical-size.m40000644016037001603700000000302613612141515022077 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.30 API change dnl # dnl # The bdev_physical_block_size() interface was added to provide a way dnl # to determine the smallest write which can be performed without a dnl # read-modify-write operation. From the kernel documentation: dnl # dnl # What: /sys/block//queue/physical_block_size dnl # Date: May 2009 dnl # Contact: Martin K. Petersen dnl # Description: dnl # This is the smallest unit the storage device can write dnl # without resorting to read-modify-write operation. It is dnl # usually the same as the logical block size but may be dnl # bigger. One example is SATA drives with 4KB sectors dnl # that expose a 512-byte logical block size to the dnl # operating system. dnl # dnl # Unfortunately, this interface isn't entirely reliable because dnl # drives are sometimes known to misreport this value. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BDEV_PHYSICAL_BLOCK_SIZE], [ ZFS_LINUX_TEST_SRC([bdev_physical_block_size], [ #include ],[ struct block_device *bdev = NULL; bdev_physical_block_size(bdev); ], [$NO_UNUSED_BUT_SET_VARIABLE]) ]) AC_DEFUN([ZFS_AC_KERNEL_BDEV_PHYSICAL_BLOCK_SIZE], [ AC_MSG_CHECKING([whether bdev_physical_block_size() is available]) ZFS_LINUX_TEST_RESULT([bdev_physical_block_size], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BDEV_PHYSICAL_BLOCK_SIZE, 1, [bdev_physical_block_size() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-generic_io_acct.m40000644000000000000000000000007413612141515021474 xustar000000000000000030 atime=1579730378.236496447 30 ctime=1579730468.509394772 zfs-0.8.3/config/kernel-generic_io_acct.m40000644016037001603700000000367613612141515021505 0ustar00hutter2hutter200000000000000dnl # dnl # Check for generic io accounting interface. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [ ZFS_LINUX_TEST_SRC([generic_acct_3args], [ #include void (*generic_start_io_acct_f)(int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(int, struct hd_struct *, unsigned long) = &generic_end_io_acct; ], [ generic_start_io_acct(0, 0, NULL); generic_end_io_acct(0, NULL, 0); ]) ZFS_LINUX_TEST_SRC([generic_acct_4args], [ #include void (*generic_start_io_acct_f)(struct request_queue *, int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(struct request_queue *, int, struct hd_struct *, unsigned long) = &generic_end_io_acct; ], [ generic_start_io_acct(NULL, 0, 0, NULL); generic_end_io_acct(NULL, 0, NULL, 0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_GENERIC_IO_ACCT], [ dnl # dnl # 3.19 API addition dnl # dnl # torvalds/linux@394ffa50 allows us to increment iostat dnl # counters without generic_make_request(). dnl # AC_MSG_CHECKING([whether generic IO accounting wants 3 args]) ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_3args], [generic_start_io_acct], [block/bio.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GENERIC_IO_ACCT_3ARG, 1, [generic_start_io_acct()/generic_end_io_acct() available]) ], [ AC_MSG_RESULT(no) dnl # dnl # Linux 4.14 API, dnl # dnl # generic_start_io_acct/generic_end_io_acct now require dnl # request_queue to be provided. No functional changes, dnl # but preparation for inflight accounting. dnl # AC_MSG_CHECKING([whether generic IO accounting wants 4 args]) ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_4args], [generic_start_io_acct], [block/bio.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GENERIC_IO_ACCT_4ARG, 1, [generic_start_io_acct()/generic_end_io_acct() ] [4 arg available]) ], [ AC_MSG_RESULT(no) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-fst-mount.m40000644000000000000000000000007413612141515020333 xustar000000000000000030 atime=1579730378.237496479 30 ctime=1579730468.505394644 zfs-0.8.3/config/kernel-fst-mount.m40000644016037001603700000000176613612141515020342 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.38 API change dnl # The .get_sb callback has been replaced by a .mount callback dnl # in the file_system_type structure. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_FST_MOUNT], [ ZFS_LINUX_TEST_SRC([file_system_type_mount], [ #include static struct dentry * mount(struct file_system_type *fs_type, int flags, const char *osname, void *data) { struct dentry *d = NULL; return (d); } static struct file_system_type fst __attribute__ ((unused)) = { .mount = mount, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_FST_MOUNT], [ AC_MSG_CHECKING([whether fst->mount() exists]) ZFS_LINUX_TEST_RESULT([file_system_type_mount], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FST_MOUNT, 1, [fst->mount() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-kmem-cache.m40000644000000000000000000000007413612141515020371 xustar000000000000000030 atime=1579730378.229496223 30 ctime=1579730468.543395863 zfs-0.8.3/config/kernel-kmem-cache.m40000644016037001603700000000463013612141515020371 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.35 API change, dnl # The cachep->gfpflags member was renamed cachep->allocflags. These are dnl # private allocation flags which are applied when allocating a new slab dnl # in kmem_getpages(). Unfortunately there is no public API for setting dnl # non-default flags. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_KMEM_CACHE_ALLOCFLAGS], [ ZFS_LINUX_TEST_SRC([kmem_cache_allocflags], [ #include ],[ struct kmem_cache cachep __attribute__ ((unused)); cachep.allocflags = GFP_KERNEL; ]) ZFS_LINUX_TEST_SRC([kmem_cache_gfpflags], [ #include ],[ struct kmem_cache cachep __attribute__ ((unused)); cachep.gfpflags = GFP_KERNEL; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_KMEM_CACHE_ALLOCFLAGS], [ AC_MSG_CHECKING([whether struct kmem_cache has allocflags]) ZFS_LINUX_TEST_RESULT([kmem_cache_allocflags], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KMEM_CACHE_ALLOCFLAGS, 1, [struct kmem_cache has allocflags]) ],[ AC_MSG_RESULT(no) AC_MSG_CHECKING([whether struct kmem_cache has gfpflags]) ZFS_LINUX_TEST_RESULT([kmem_cache_gfpflags], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KMEM_CACHE_GFPFLAGS, 1, [struct kmem_cache has gfpflags]) ],[ AC_MSG_RESULT(no) ]) ]) ]) dnl # dnl # grsecurity API change, dnl # kmem_cache_create() with SLAB_USERCOPY flag replaced by dnl # kmem_cache_create_usercopy(). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_KMEM_CACHE_CREATE_USERCOPY], [ ZFS_LINUX_TEST_SRC([kmem_cache_create_usercopy], [ #include static void ctor(void *foo) { /* fake ctor */ } ],[ struct kmem_cache *skc_linux_cache; const char *name = "test"; size_t size = 4096; size_t align = 8; unsigned long flags = 0; size_t useroffset = 0; size_t usersize = size - useroffset; skc_linux_cache = kmem_cache_create_usercopy( name, size, align, flags, useroffset, usersize, ctor); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_KMEM_CACHE_CREATE_USERCOPY], [ AC_MSG_CHECKING([whether kmem_cache_create_usercopy() exists]) ZFS_LINUX_TEST_RESULT([kmem_cache_create_usercopy], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KMEM_CACHE_CREATE_USERCOPY, 1, [kmem_cache_create_usercopy() exists]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_KMEM_CACHE], [ ZFS_AC_KERNEL_SRC_KMEM_CACHE_ALLOCFLAGS ZFS_AC_KERNEL_SRC_KMEM_CACHE_CREATE_USERCOPY ]) AC_DEFUN([ZFS_AC_KERNEL_KMEM_CACHE], [ ZFS_AC_KERNEL_KMEM_CACHE_ALLOCFLAGS ZFS_AC_KERNEL_KMEM_CACHE_CREATE_USERCOPY ]) zfs-0.8.3/config/PaxHeaders.151519/rpm.am0000644000000000000000000000007313607166132016001 xustar000000000000000029 atime=1579730442.55556146 30 ctime=1579730468.724401676 zfs-0.8.3/config/rpm.am0000644016037001603700000000564013607166132016004 0ustar00hutter2hutter200000000000000############################################################################### # Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC. # Copyright (C) 2007 The Regents of the University of California. # Written by Brian Behlendorf . ############################################################################### # Build targets for RPM packages. ############################################################################### srpm-kmod: $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_KMOD}' srpm-common srpm-dkms: $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_DKMS}' srpm-common srpm-utils: $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ def='${SRPM_DEFINE_COMMON} ${SRPM_DEFINE_UTIL}' srpm-common srpm: srpm-kmod srpm-dkms srpm-utils srpms: srpm-kmod srpm-dkms srpm-utils rpm-kmod: srpm-kmod $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-kmod" \ def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_KMOD}' rpm-common rpm-dkms: srpm-dkms $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}-dkms" \ def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_DKMS}' rpm-common rpm-utils: srpm-utils $(MAKE) $(AM_MAKEFLAGS) pkg="${PACKAGE}" \ def='${RPM_DEFINE_COMMON} ${RPM_DEFINE_UTIL}' rpm-common rpm: rpm-kmod rpm-dkms rpm-utils rpms: rpm-kmod rpm-dkms rpm-utils rpm-local: @(if test "${HAVE_RPMBUILD}" = "no"; then \ echo -e "\n" \ "*** Required util ${RPMBUILD} missing. Please install the\n" \ "*** package for your distribution which provides ${RPMBUILD},\n" \ "*** re-run configure, and try again.\n"; \ exit 1; \ fi; \ mkdir -p $(rpmbuild)/TMP && \ mkdir -p $(rpmbuild)/BUILD && \ mkdir -p $(rpmbuild)/RPMS && \ mkdir -p $(rpmbuild)/SRPMS && \ mkdir -p $(rpmbuild)/SPECS && \ cp ${RPM_SPEC_DIR}/$(rpmspec) $(rpmbuild)/SPECS && \ mkdir -p $(rpmbuild)/SOURCES && \ cp $(top_srcdir)/scripts/kmodtool $(rpmbuild)/SOURCES && \ cp $(distdir).tar.gz $(rpmbuild)/SOURCES) srpm-common: dist @(dist=`$(RPM) --eval %{?dist}`; \ rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ rpmspec=$(pkg).spec; \ rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ $(MAKE) $(AM_MAKEFLAGS) \ rpmbuild="$$rpmbuild" \ rpmspec="$$rpmspec" \ rpm-local || exit 1; \ LANG=C $(RPMBUILD) \ --define "_tmppath $$rpmbuild/TMP" \ --define "_topdir $$rpmbuild" \ $(def) -bs $$rpmbuild/SPECS/$$rpmspec || exit 1; \ cp $$rpmbuild/SRPMS/$$rpmpkg . || exit 1; \ rm -R $$rpmbuild) rpm-common: @(dist=`$(RPM) --eval %{?dist}`; \ rpmpkg=$(pkg)-$(VERSION)-$(RELEASE)$$dist*src.rpm; \ rpmspec=$(pkg).spec; \ rpmbuild=`mktemp -t -d $(PACKAGE)-build-$$USER-XXXXXXXX`; \ $(MAKE) $(AM_MAKEFLAGS) \ rpmbuild="$$rpmbuild" \ rpmspec="$$rpmspec" \ rpm-local || exit 1; \ LANG=C ${RPMBUILD} \ --define "_tmppath $$rpmbuild/TMP" \ --define "_topdir $$rpmbuild" \ $(def) --rebuild $$rpmpkg || exit 1; \ cp $$rpmbuild/RPMS/*/* . || exit 1; \ rm -R $$rpmbuild) zfs-0.8.3/config/PaxHeaders.151519/user-libexec.m40000644000000000000000000000007413607166132017516 xustar000000000000000030 atime=1579730378.184494777 30 ctime=1579730468.682400326 zfs-0.8.3/config/user-libexec.m40000644016037001603700000000036613607166132017520 0ustar00hutter2hutter200000000000000AC_DEFUN([ZFS_AC_CONFIG_USER_ZFSEXEC], [ AC_ARG_WITH(zfsexecdir, AC_HELP_STRING([--with-zfsexecdir=DIR], [install scripts [[@<:@libexecdir@:>@/zfs]]]), [zfsexecdir=$withval], [zfsexecdir="${libexecdir}/zfs"]) AC_SUBST([zfsexecdir]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-libudev.m40000644000000000000000000000007313607166132017534 xustar000000000000000030 atime=1579730378.183494744 29 ctime=1579730468.68940055 zfs-0.8.3/config/user-libudev.m40000644016037001603700000000101013607166132017522 0ustar00hutter2hutter200000000000000dnl # dnl # Check for libudev - needed for vdev auto-online and auto-replace dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_LIBUDEV], [ LIBUDEV= AC_CHECK_HEADER([libudev.h], [ user_libudev=yes AC_SUBST([LIBUDEV], ["-ludev"]) AC_DEFINE([HAVE_LIBUDEV], 1, [Define if you have libudev]) ], [ user_libudev=no ]) AC_SEARCH_LIBS([udev_device_get_is_initialized], [udev], [ AC_DEFINE([HAVE_LIBUDEV_UDEV_DEVICE_GET_IS_INITIALIZED], 1, [ Define if udev_device_get_is_initialized is available])], []) ]) zfs-0.8.3/config/PaxHeaders.151519/ax_restore_flags.m40000644000000000000000000000007413607166132020456 xustar000000000000000030 atime=1579730378.270497539 30 ctime=1579730468.401391304 zfs-0.8.3/config/ax_restore_flags.m40000644016037001603700000000156113607166132020456 0ustar00hutter2hutter200000000000000# =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_restore_flags.html # =========================================================================== # # SYNOPSIS # # AX_RESTORE_FLAGS() # # DESCRIPTION # # Restore common compilation flags from temporary variables # # LICENSE # # Copyright (c) 2009 Filippo Giunchedi # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 3 AC_DEFUN([AX_RESTORE_FLAGS], [ CPPFLAGS="${CPPFLAGS_save}" CFLAGS="${CFLAGS_save}" CXXFLAGS="${CXXFLAGS_save}" OBJCFLAGS="${OBJCFLAGS_save}" LDFLAGS="${LDFLAGS_save}" LIBS="${LIBS_save}" ]) zfs-0.8.3/config/PaxHeaders.151519/user-sysvinit.m40000644000000000000000000000007313607166132017772 xustar000000000000000029 atime=1579730378.18149468 30 ctime=1579730468.700400905 zfs-0.8.3/config/user-sysvinit.m40000644016037001603700000000042413607166132017770 0ustar00hutter2hutter200000000000000AC_DEFUN([ZFS_AC_CONFIG_USER_SYSVINIT], [ AC_ARG_ENABLE(sysvinit, AC_HELP_STRING([--enable-sysvinit], [install SysV init scripts [default: yes]]), [],enable_sysvinit=yes) AS_IF([test "x$enable_sysvinit" = xyes], [ZFS_INIT_SYSV=init.d]) AC_SUBST(ZFS_INIT_SYSV) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-get-disk-and-module.m40000644000000000000000000000007213612141515022127 xustar000000000000000030 atime=1579730378.236496447 28 ctime=1579730468.5133949 zfs-0.8.3/config/kernel-get-disk-and-module.m40000644016037001603700000000121013612141515022120 0ustar00hutter2hutter200000000000000dnl # dnl # 4.16 API change dnl # Verify if get_disk_and_module() symbol is available. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GET_DISK_AND_MODULE], [ ZFS_LINUX_TEST_SRC([get_disk_and_module], [ #include ], [ struct gendisk *disk = NULL; (void) get_disk_and_module(disk); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_GET_DISK_AND_MODULE], [ AC_MSG_CHECKING([whether get_disk_and_module() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([get_disk_and_module], [get_disk_and_module], [block/genhd.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GET_DISK_AND_MODULE, 1, [get_disk_and_module() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/lt~obsolete.m40000644000000000000000000000013113612142733017470 xustar000000000000000029 mtime=1579730395.35204594 30 atime=1579730397.030099814 30 ctime=1579730468.658399555 zfs-0.8.3/config/lt~obsolete.m40000644016037001603700000001311313612142733017472 0ustar00hutter2hutter200000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 4 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) zfs-0.8.3/config/PaxHeaders.151519/zfs-meta.m40000644000000000000000000000007313612141515016646 xustar000000000000000029 atime=1579730378.17649452 30 ctime=1579730468.710401225 zfs-0.8.3/config/zfs-meta.m40000644016037001603700000001527513612141515016656 0ustar00hutter2hutter200000000000000dnl # dnl # DESCRIPTION: dnl # Read meta data from the META file. When building from a git repository dnl # the ZFS_META_RELEASE field will be overwritten if there is an annotated dnl # tag matching the form ZFS_META_NAME-ZFS_META_VERSION-*. This allows dnl # for working builds to be uniquely identified using the git commit hash. dnl # dnl # The META file format is as follows: dnl # ^[ ]*KEY:[ \t]+VALUE$ dnl # dnl # In other words: dnl # - KEY is separated from VALUE by a colon and one or more spaces/tabs. dnl # - KEY and VALUE are case sensitive. dnl # - Leading spaces are ignored. dnl # - First match wins for duplicate keys. dnl # dnl # A line can be commented out by preceding it with a '#' (or technically dnl # any non-space character since that will prevent the regex from dnl # matching). dnl # dnl # WARNING: dnl # Placing a colon followed by a space or tab (ie, ":[ \t]+") within the dnl # VALUE will prematurely terminate the string since that sequence is dnl # used as the awk field separator. dnl # dnl # KEYS: dnl # The following META keys are recognized: dnl # Name, Version, Release, Date, Author, LT_Current, LT_Revision, LT_Age dnl # dnl # Written by Chris Dunlap . dnl # Modified by Brian Behlendorf . dnl # AC_DEFUN([ZFS_AC_META], [ AH_BOTTOM([ #undef PACKAGE #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #undef STDC_HEADERS #undef VERSION]) AC_PROG_AWK AC_MSG_CHECKING([metadata]) META="$srcdir/META" _zfs_ac_meta_type="none" if test -f "$META"; then _zfs_ac_meta_type="META file" ZFS_META_NAME=_ZFS_AC_META_GETVAL([(Name|Project|Package)]); if test -n "$ZFS_META_NAME"; then AC_DEFINE_UNQUOTED([ZFS_META_NAME], ["$ZFS_META_NAME"], [Define the project name.] ) AC_SUBST([ZFS_META_NAME]) fi ZFS_META_VERSION=_ZFS_AC_META_GETVAL([Version]); if test -n "$ZFS_META_VERSION"; then AC_DEFINE_UNQUOTED([ZFS_META_VERSION], ["$ZFS_META_VERSION"], [Define the project version.]) AC_DEFINE_UNQUOTED([SPL_META_VERSION], [ZFS_META_VERSION], [Defined for legacy compatibility.]) AC_SUBST([ZFS_META_VERSION]) fi ZFS_META_RELEASE=_ZFS_AC_META_GETVAL([Release]); if test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then _match="${ZFS_META_NAME}-${ZFS_META_VERSION}" _alias=$(git describe --match=${_match} 2>/dev/null) _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') if test -n "${_release}"; then ZFS_META_RELEASE=${_release} _zfs_ac_meta_type="git describe" else _match="${ZFS_META_NAME}-${ZFS_META_VERSION}-${ZFS_META_RELEASE}" _alias=$(git describe --match=${_match} 2>/dev/null) _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') if test -n "${_release}"; then ZFS_META_RELEASE=${_release} _zfs_ac_meta_type="git describe" fi fi fi if test -n "$ZFS_META_RELEASE"; then AC_DEFINE_UNQUOTED([ZFS_META_RELEASE], ["$ZFS_META_RELEASE"], [Define the project release.]) AC_DEFINE_UNQUOTED([SPL_META_RELEASE], [ZFS_META_RELEASE], [Defined for legacy compatibility.]) AC_SUBST([ZFS_META_RELEASE]) RELEASE="$ZFS_META_RELEASE" AC_SUBST([RELEASE]) fi ZFS_META_LICENSE=_ZFS_AC_META_GETVAL([License]); if test -n "$ZFS_META_LICENSE"; then AC_DEFINE_UNQUOTED([ZFS_META_LICENSE], ["$ZFS_META_LICENSE"], [Define the project license.] ) AC_SUBST([ZFS_META_LICENSE]) fi if test -n "$ZFS_META_NAME" -a -n "$ZFS_META_VERSION"; then ZFS_META_ALIAS="$ZFS_META_NAME-$ZFS_META_VERSION" test -n "$ZFS_META_RELEASE" && ZFS_META_ALIAS="$ZFS_META_ALIAS-$ZFS_META_RELEASE" AC_DEFINE_UNQUOTED([ZFS_META_ALIAS], ["$ZFS_META_ALIAS"], [Define the project alias string.]) AC_DEFINE_UNQUOTED([SPL_META_ALIAS], [ZFS_META_ALIAS], [Defined for legacy compatibility.]) AC_SUBST([ZFS_META_ALIAS]) fi ZFS_META_DATA=_ZFS_AC_META_GETVAL([Date]); if test -n "$ZFS_META_DATA"; then AC_DEFINE_UNQUOTED([ZFS_META_DATA], ["$ZFS_META_DATA"], [Define the project release date.] ) AC_SUBST([ZFS_META_DATA]) fi ZFS_META_AUTHOR=_ZFS_AC_META_GETVAL([Author]); if test -n "$ZFS_META_AUTHOR"; then AC_DEFINE_UNQUOTED([ZFS_META_AUTHOR], ["$ZFS_META_AUTHOR"], [Define the project author.] ) AC_SUBST([ZFS_META_AUTHOR]) fi ZFS_META_KVER_MIN=_ZFS_AC_META_GETVAL([Linux-Minimum]); if test -n "$ZFS_META_KVER_MIN"; then AC_DEFINE_UNQUOTED([ZFS_META_KVER_MIN], ["$ZFS_META_KVER_MIN"], [Define the minimum compatible kernel version.] ) AC_SUBST([ZFS_META_KVER_MIN]) fi ZFS_META_KVER_MAX=_ZFS_AC_META_GETVAL([Linux-Maximum]); if test -n "$ZFS_META_KVER_MAX"; then AC_DEFINE_UNQUOTED([ZFS_META_KVER_MAX], ["$ZFS_META_KVER_MAX"], [Define the maximum compatible kernel version.] ) AC_SUBST([ZFS_META_KVER_MAX]) fi m4_pattern_allow([^LT_(CURRENT|REVISION|AGE)$]) ZFS_META_LT_CURRENT=_ZFS_AC_META_GETVAL([LT_Current]); ZFS_META_LT_REVISION=_ZFS_AC_META_GETVAL([LT_Revision]); ZFS_META_LT_AGE=_ZFS_AC_META_GETVAL([LT_Age]); if test -n "$ZFS_META_LT_CURRENT" \ -o -n "$ZFS_META_LT_REVISION" \ -o -n "$ZFS_META_LT_AGE"; then test -n "$ZFS_META_LT_CURRENT" || ZFS_META_LT_CURRENT="0" test -n "$ZFS_META_LT_REVISION" || ZFS_META_LT_REVISION="0" test -n "$ZFS_META_LT_AGE" || ZFS_META_LT_AGE="0" AC_DEFINE_UNQUOTED([ZFS_META_LT_CURRENT], ["$ZFS_META_LT_CURRENT"], [Define the libtool library 'current' version information.] ) AC_DEFINE_UNQUOTED([ZFS_META_LT_REVISION], ["$ZFS_META_LT_REVISION"], [Define the libtool library 'revision' version information.] ) AC_DEFINE_UNQUOTED([ZFS_META_LT_AGE], ["$ZFS_META_LT_AGE"], [Define the libtool library 'age' version information.] ) AC_SUBST([ZFS_META_LT_CURRENT]) AC_SUBST([ZFS_META_LT_REVISION]) AC_SUBST([ZFS_META_LT_AGE]) fi fi AC_MSG_RESULT([$_zfs_ac_meta_type]) ] ) dnl # _ZFS_AC_META_GETVAL (KEY_NAME_OR_REGEX) dnl # dnl # Returns the META VALUE associated with the given KEY_NAME_OR_REGEX expr. dnl # dnl # Despite their resemblance to line noise, dnl # the "@<:@" and "@:>@" constructs are quadrigraphs for "[" and "]". dnl # dnl # dnl # The "$[]1" and "$[]2" constructs prevent M4 parameter expansion dnl # so a literal $1 and $2 will be passed to the resulting awk script, dnl # whereas the "$1" will undergo M4 parameter expansion for the META key. dnl # AC_DEFUN([_ZFS_AC_META_GETVAL], [`$AWK -F ':@<:@ \t@:>@+' '$[]1 ~ /^ *$1$/ { print $[]2; exit }' $META`]dnl ) zfs-0.8.3/config/PaxHeaders.151519/kernel-blk-queue-bdi.m40000644000000000000000000000007413612141515021025 xustar000000000000000030 atime=1579730378.251496929 30 ctime=1579730468.446392748 zfs-0.8.3/config/kernel-blk-queue-bdi.m40000644016037001603700000000116413612141515021024 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.32 - 4.11, statically allocated bdi in request_queue dnl # 4.12 - x.y, dynamically allocated bdi in request_queue dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_BDI], [ ZFS_LINUX_TEST_SRC([blk_queue_bdi], [ #include ],[ struct request_queue q; struct backing_dev_info bdi; q.backing_dev_info = &bdi; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_BDI], [ AC_MSG_CHECKING([whether blk_queue bdi is dynamic]) ZFS_LINUX_TEST_RESULT([blk_queue_bdi], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_BDI_DYNAMIC, 1, [blk queue backing_dev_info is dynamic]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-inode-lock.m40000644000000000000000000000007413612141515020423 xustar000000000000000030 atime=1579730378.232496319 30 ctime=1579730468.527395348 zfs-0.8.3/config/kernel-inode-lock.m40000644016037001603700000000121213612141515020414 0ustar00hutter2hutter200000000000000dnl # dnl # 4.7 API change dnl # i_mutex is changed to i_rwsem. Instead of directly using dnl # i_mutex/i_rwsem, we should use inode_lock() and inode_lock_shared() dnl # We test inode_lock_shared because inode_lock is introduced earlier. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_LOCK], [ ZFS_LINUX_TEST_SRC([inode_lock], [ #include ],[ struct inode *inode = NULL; inode_lock_shared(inode); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_LOCK], [ AC_MSG_CHECKING([whether inode_lock_shared() exists]) ZFS_LINUX_TEST_RESULT([inode_lock], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INODE_LOCK_SHARED, 1, [yes]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bio-rw-discard.m40000644000000000000000000000007413612141515021205 xustar000000000000000030 atime=1579730378.251496929 30 ctime=1579730468.442392619 zfs-0.8.3/config/kernel-bio-rw-discard.m40000644016037001603700000000170313612141515021203 0ustar00hutter2hutter200000000000000dnl # dnl # Interface for issuing a discard bio: dnl # 2.6.28-2.6.35: BIO_RW_DISCARD dnl # 2.6.36-3.x: REQ_DISCARD dnl # dnl # dnl # Since REQ_DISCARD is a preprocessor definition, there is no need for an dnl # autotools check for it. Also, REQ_DISCARD existed in the request layer dnl # until torvalds/linux@7b6d91daee5cac6402186ff224c3af39d79f4a0e unified the dnl # request layer and bio layer flags, so it would be wrong to assume that dnl # the APIs are mutually exclusive contrary to the typical case. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_RW_DISCARD], [ ZFS_LINUX_TEST_SRC([bio_rw_discard], [ #include ],[ int flags __attribute__ ((unused)); flags = BIO_RW_DISCARD; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_RW_DISCARD], [ AC_MSG_CHECKING([whether BIO_RW_DISCARD is defined]) ZFS_LINUX_TEST_RESULT([bio_rw_discard], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_RW_DISCARD, 1, [BIO_RW_DISCARD is defined]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-mod-param.m40000644000000000000000000000007413612141515020254 xustar000000000000000030 atime=1579730378.225496095 30 ctime=1579730468.566396602 zfs-0.8.3/config/kernel-mod-param.m40000644016037001603700000000142513612141515020253 0ustar00hutter2hutter200000000000000dnl # dnl # Grsecurity kernel API change dnl # constified parameters of module_param_call() methods dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_MODULE_PARAM_CALL_CONST], [ ZFS_LINUX_TEST_SRC([module_param_call], [ #include #include int param_get(char *b, const struct kernel_param *kp) { return (0); } int param_set(const char *b, const struct kernel_param *kp) { return (0); } module_param_call(p, param_set, param_get, NULL, 0644); ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_MODULE_PARAM_CALL_CONST], [ AC_MSG_CHECKING([whether module_param_call() is hardened]) ZFS_LINUX_TEST_RESULT([module_param_call], [ AC_MSG_RESULT(yes) AC_DEFINE(MODULE_PARAM_CALL_CONST, 1, [hardened module_param_call]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-blk-queue-max-hw-sectors.m40000644000000000000000000000007413612141515023150 xustar000000000000000030 atime=1579730378.249496863 30 ctime=1579730468.454393006 zfs-0.8.3/config/kernel-blk-queue-max-hw-sectors.m40000644016037001603700000000127313612141515023150 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.34 API change dnl # blk_queue_max_hw_sectors() replaces blk_queue_max_sectors(). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_MAX_HW_SECTORS], [ ZFS_LINUX_TEST_SRC([blk_queue_max_hw_sectors], [ #include ], [ struct request_queue *q = NULL; (void) blk_queue_max_hw_sectors(q, BLK_SAFE_MAX_SECTORS); ], [$NO_UNUSED_BUT_SET_VARIABLE]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_MAX_HW_SECTORS], [ AC_MSG_CHECKING([whether blk_queue_max_hw_sectors() is available]) ZFS_LINUX_TEST_RESULT([blk_queue_max_hw_sectors], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_MAX_HW_SECTORS, 1, [blk_queue_max_hw_sectors() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-security-inode-init.m40000644000000000000000000000007413612141515022303 xustar000000000000000030 atime=1579730378.220495932 30 ctime=1579730468.586397245 zfs-0.8.3/config/kernel-security-inode-init.m40000644016037001603700000000502613612141515022303 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.39 API change dnl # The security_inode_init_security() function now takes an additional dnl # qstr argument which must be passed in from the dentry if available. dnl # Passing a NULL is safe when no qstr is available the relevant dnl # security checks will just be skipped. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SECURITY_INODE_INIT_SECURITY_6ARGS], [ ZFS_LINUX_TEST_SRC([security_inode_init_security_6args], [ #include ],[ struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; char *name __attribute__ ((unused)) = NULL; void *value __attribute__ ((unused)) = NULL; size_t len __attribute__ ((unused)) = 0; security_inode_init_security(ip, dip, str, &name, &value, &len); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SECURITY_INODE_INIT_SECURITY_6ARGS], [ AC_MSG_CHECKING([whether security_inode_init_security wants 6 args]) ZFS_LINUX_TEST_RESULT([security_inode_init_security_6args], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY, 1, [security_inode_init_security wants 6 args]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.2 API change dnl # The security_inode_init_security() API has been changed to include dnl # a filesystem specific callback to write security extended attributes. dnl # This was done to support the initialization of multiple LSM xattrs dnl # and the EVM xattr. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SECURITY_INODE_INIT_SECURITY_CALLBACK], [ ZFS_LINUX_TEST_SRC([security_inode_init_security], [ #include ],[ struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; initxattrs func __attribute__ ((unused)) = NULL; security_inode_init_security(ip, dip, str, func, NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SECURITY_INODE_INIT_SECURITY_CALLBACK], [ AC_MSG_CHECKING([whether security_inode_init_security wants callback]) ZFS_LINUX_TEST_RESULT([security_inode_init_security], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY, 1, [security_inode_init_security wants callback]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_SECURITY_INODE], [ ZFS_AC_KERNEL_SRC_SECURITY_INODE_INIT_SECURITY_6ARGS ZFS_AC_KERNEL_SRC_SECURITY_INODE_INIT_SECURITY_CALLBACK ]) AC_DEFUN([ZFS_AC_KERNEL_SECURITY_INODE], [ ZFS_AC_KERNEL_SECURITY_INODE_INIT_SECURITY_6ARGS ZFS_AC_KERNEL_SECURITY_INODE_INIT_SECURITY_CALLBACK ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-inode-set-iversion.m40000644000000000000000000000007413612141515022122 xustar000000000000000030 atime=1579730378.232496319 30 ctime=1579730468.531395478 zfs-0.8.3/config/kernel-inode-set-iversion.m40000644016037001603700000000106013612141515022114 0ustar00hutter2hutter200000000000000dnl # dnl # 4.16 API change dnl # inode_set_iversion introduced to set i_version dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_SET_IVERSION], [ ZFS_LINUX_TEST_SRC([inode_set_iversion], [ #include ],[ struct inode inode; inode_set_iversion(&inode, 1); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_SET_IVERSION], [ AC_MSG_CHECKING([whether inode_set_iversion() exists]) ZFS_LINUX_TEST_RESULT([inode_set_iversion], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INODE_SET_IVERSION, 1, [inode_set_iversion() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-dracut.m40000644000000000000000000000007313607166132017364 xustar000000000000000030 atime=1579730378.184494777 29 ctime=1579730468.67440007 zfs-0.8.3/config/user-dracut.m40000644016037001603700000000104113607166132017356 0ustar00hutter2hutter200000000000000AC_DEFUN([ZFS_AC_CONFIG_USER_DRACUT], [ AC_MSG_CHECKING(for dracut directory) AC_ARG_WITH([dracutdir], AC_HELP_STRING([--with-dracutdir=DIR], [install dracut helpers @<:@default=check@:>@]), [dracutdir=$withval], [dracutdir=check]) AS_IF([test "x$dracutdir" = xcheck], [ path1=/usr/share/dracut path2=/usr/lib/dracut default=$path2 AS_IF([test -d "$path1"], [dracutdir="$path1"], [ AS_IF([test -d "$path2"], [dracutdir="$path2"], [dracutdir="$default"]) ]) ]) AC_SUBST(dracutdir) AC_MSG_RESULT([$dracutdir]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-rw.m40000644000000000000000000000007413612141515017027 xustar000000000000000030 atime=1579730378.223496029 30 ctime=1579730468.579397018 zfs-0.8.3/config/kernel-rw.m40000644016037001603700000000304013612141515017021 0ustar00hutter2hutter200000000000000dnl # dnl # 4.14 API change dnl # kernel_write() which was introduced in 3.9 was updated to take dnl # the offset as a pointer which is needed by vn_rdwr(). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_WRITE], [ ZFS_LINUX_TEST_SRC([kernel_write], [ #include ],[ struct file *file = NULL; const void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_write(file, buf, count, pos); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_WRITE], [ AC_MSG_CHECKING([whether kernel_write() takes loff_t pointer]) ZFS_LINUX_TEST_RESULT([kernel_write], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KERNEL_WRITE_PPOS, 1, [kernel_write() take loff_t pointer]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.14 API change dnl # kernel_read() which has existed for forever was updated to take dnl # the offset as a pointer which is needed by vn_rdwr(). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_READ], [ ZFS_LINUX_TEST_SRC([kernel_read], [ #include ],[ struct file *file = NULL; void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_read(file, buf, count, pos); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_READ], [ AC_MSG_CHECKING([whether kernel_read() takes loff_t pointer]) ZFS_LINUX_TEST_RESULT([kernel_read], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KERNEL_READ_PPOS, 1, [kernel_read() take loff_t pointer]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_RW], [ ZFS_AC_KERNEL_SRC_WRITE ZFS_AC_KERNEL_SRC_READ ]) AC_DEFUN([ZFS_AC_KERNEL_RW], [ ZFS_AC_KERNEL_WRITE ZFS_AC_KERNEL_READ ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-commit-metadata.m40000644000000000000000000000007413612141515021445 xustar000000000000000030 atime=1579730378.246496767 30 ctime=1579730468.470393518 zfs-0.8.3/config/kernel-commit-metadata.m40000644016037001603700000000153113612141515021442 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.33 API change dnl # Added eops->commit_metadata() callback to allow the underlying dnl # filesystem to determine the most efficient way to commit the inode. dnl # Prior to this the nfs server would issue an explicit fsync(). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_COMMIT_METADATA], [ ZFS_LINUX_TEST_SRC([export_operations_commit_metadata], [ #include int commit_metadata(struct inode *inode) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .commit_metadata = commit_metadata, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_COMMIT_METADATA], [ AC_MSG_CHECKING([whether eops->commit_metadata() exists]) ZFS_LINUX_TEST_RESULT([export_operations_commit_metadata], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_COMMIT_METADATA, 1, [eops->commit_metadata() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-clear-inode.m40000644000000000000000000000007413612141515020561 xustar000000000000000030 atime=1579730378.246496767 30 ctime=1579730468.467393422 zfs-0.8.3/config/kernel-clear-inode.m40000644016037001603700000000262613612141515020564 0ustar00hutter2hutter200000000000000dnl # dnl # 3.5.0 API change dnl # torvalds/linux@dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430 and dnl # torvalds/linux@7994e6f7254354e03028a11f98a27bd67dace9f1 reworked dnl # where inode_sync_wait() is called. dnl # dnl # Prior to these changes it would occur in end_writeback() but due dnl # to various issues (described in the above commits) it has been dnl # moved to evict(). This changes the ordering is which sync occurs dnl # but otherwise doesn't impact the zpl implementation. dnl # dnl # The major impact here is the renaming of end_writeback() to dnl # clear_inode(). However, care must be taken when detecting this dnl # API change because as recently as 2.6.35 there was a clear_inode() dnl # function. However, it was made obsolete by the evict_inode() API dnl # change at the same time. dnl # dnl # Therefore, to ensure we have the correct API we only allow the dnl # clear_inode() compatibility code to be defined iff the evict_inode() dnl # functionality is also detected. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CLEAR_INODE], [ ZFS_LINUX_TEST_SRC([clear_inode], [ #include ], [ clear_inode(NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_CLEAR_INODE], [ AC_MSG_CHECKING([whether clear_inode() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([clear_inode], [clear_inode], [fs/inode.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CLEAR_INODE, 1, [clear_inode() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-zlib.m40000644000000000000000000000007413612141515017337 xustar000000000000000030 atime=1579730378.206495484 30 ctime=1579730468.636398848 zfs-0.8.3/config/kernel-zlib.m40000644016037001603700000000160013612141515017331 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.39 API compat, dnl dnl # The function zlib_deflate_workspacesize() now take 2 arguments. dnl # This was done to avoid always having to allocate the maximum size dnl # workspace (268K). The caller can now specific the windowBits and dnl # memLevel compression parameters to get a smaller workspace. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE], [ ZFS_LINUX_TEST_SRC([2args_zlib_deflate_workspacesize], [ #include ],[ return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE], [ AC_MSG_CHECKING([whether zlib_deflate_workspacesize() wants 2 args]) ZFS_LINUX_TEST_RESULT([2args_zlib_deflate_workspacesize], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE, 1, [zlib_deflate_workspacesize() wants 2 args]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-make-request-fn.m40000644000000000000000000000007313612141515021402 xustar000000000000000030 atime=1579730378.226496127 29 ctime=1579730468.56039641 zfs-0.8.3/config/kernel-make-request-fn.m40000644016037001603700000000413213612141515021400 0ustar00hutter2hutter200000000000000dnl # dnl # Check for make_request_fn interface. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_MAKE_REQUEST_FN], [ ZFS_LINUX_TEST_SRC([make_request_fn_int], [ #include int make_request(struct request_queue *q, struct bio *bio) { return (0); } ],[ blk_queue_make_request(NULL, &make_request); ]) ZFS_LINUX_TEST_SRC([make_request_fn_void], [ #include void make_request(struct request_queue *q, struct bio *bio) { return; } ],[ blk_queue_make_request(NULL, &make_request); ]) ZFS_LINUX_TEST_SRC([make_request_fn_blk_qc_t], [ #include blk_qc_t make_request(struct request_queue *q, struct bio *bio) { return (BLK_QC_T_NONE); } ],[ blk_queue_make_request(NULL, &make_request); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_MAKE_REQUEST_FN], [ dnl # dnl # Legacy API dnl # make_request_fn returns int. dnl # AC_MSG_CHECKING([whether make_request_fn() returns int]) ZFS_LINUX_TEST_RESULT([make_request_fn_int], [ AC_MSG_RESULT(yes) AC_DEFINE(MAKE_REQUEST_FN_RET, int, [make_request_fn() return type]) AC_DEFINE(HAVE_MAKE_REQUEST_FN_RET_INT, 1, [Noting that make_request_fn() returns int]) ],[ AC_MSG_RESULT(no) dnl # dnl # Linux 3.2 API Change dnl # make_request_fn returns void. dnl # AC_MSG_CHECKING([whether make_request_fn() returns void]) ZFS_LINUX_TEST_RESULT([make_request_fn_void], [ AC_MSG_RESULT(yes) AC_DEFINE(MAKE_REQUEST_FN_RET, void, [make_request_fn() return type]) AC_DEFINE(HAVE_MAKE_REQUEST_FN_RET_VOID, 1, [Noting that make_request_fn() returns void]) ],[ AC_MSG_RESULT(no) dnl # dnl # Linux 4.4 API Change dnl # make_request_fn returns blk_qc_t. dnl # AC_MSG_CHECKING( [whether make_request_fn() returns blk_qc_t]) ZFS_LINUX_TEST_RESULT([make_request_fn_blk_qc_t], [ AC_MSG_RESULT(yes) AC_DEFINE(MAKE_REQUEST_FN_RET, blk_qc_t, [make_request_fn() return type]) AC_DEFINE(HAVE_MAKE_REQUEST_FN_RET_QC, 1, [Noting that make_request_fn() ] [returns blk_qc_t]) ],[ ZFS_LINUX_TEST_ERROR([make_request_fn]) ]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/host-cpu-c-abi.m40000644000000000000000000000007313607166132017641 xustar000000000000000030 atime=1579730378.262497281 29 ctime=1579730468.40939156 zfs-0.8.3/config/host-cpu-c-abi.m40000644016037001603700000005176113607166132017651 0ustar00hutter2hutter200000000000000# host-cpu-c-abi.m4 serial 11 dnl Copyright (C) 2002-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible and Sam Steingold. dnl Sets the HOST_CPU variable to the canonical name of the CPU. dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its dnl C language ABI (application binary interface). dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in dnl config.h. dnl dnl This canonical name can be used to select a particular assembly language dnl source file that will interoperate with C code on the given host. dnl dnl For example: dnl * 'i386' and 'sparc' are different canonical names, because code for i386 dnl will not run on SPARC CPUs and vice versa. They have different dnl instruction sets. dnl * 'sparc' and 'sparc64' are different canonical names, because code for dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit dnl mode, but not both. dnl * 'mips' and 'mipsn32' are different canonical names, because they use dnl different argument passing and return conventions for C functions, and dnl although the instruction set of 'mips' is a large subset of the dnl instruction set of 'mipsn32'. dnl * 'mipsn32' and 'mips64' are different canonical names, because they use dnl different sizes for the C types like 'int' and 'void *', and although dnl the instruction sets of 'mipsn32' and 'mips64' are the same. dnl * The same canonical name is used for different endiannesses. You can dnl determine the endianness through preprocessor symbols: dnl - 'arm': test __ARMEL__. dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL. dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN. dnl * The same name 'i386' is used for CPUs of type i386, i486, i586 dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because dnl - Instructions that do not exist on all of these CPUs (cmpxchg, dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your dnl assembly language source files use such instructions, you will dnl need to make the distinction. dnl - Speed of execution of the common instruction set is reasonable across dnl the entire family of CPUs. If you have assembly language source files dnl that are optimized for particular CPU types (like GNU gmp has), you dnl will need to make the distinction. dnl See . AC_DEFUN([gl_HOST_CPU_C_ABI], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_C_ASM]) AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi], [case "$host_cpu" in changequote(,)dnl i[4567]86 ) changequote([,])dnl gl_cv_host_cpu_c_abi=i386 ;; x86_64 ) # On x86_64 systems, the C compiler may be generating code in one of # these ABIs: # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 # with native Windows (mingw, MSVC). # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if (defined __x86_64__ || defined __amd64__ \ || defined _M_X64 || defined _M_AMD64) int ok; #else error fail #endif ]])], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __ILP32__ || defined _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=x86_64-x32], [gl_cv_host_cpu_c_abi=x86_64])], [gl_cv_host_cpu_c_abi=i386]) ;; changequote(,)dnl alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] ) changequote([,])dnl gl_cv_host_cpu_c_abi=alpha ;; arm* | aarch64 ) # Assume arm with EABI. # On arm64 systems, the C compiler may be generating code in one of # these ABIs: # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef __aarch64__ int ok; #else error fail #endif ]])], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __ILP32__ || defined _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=arm64-ilp32], [gl_cv_host_cpu_c_abi=arm64])], [# Don't distinguish little-endian and big-endian arm, since they # don't require different machine code for simple operations and # since the user can distinguish them through the preprocessor # defines __ARMEL__ vs. __ARMEB__. # But distinguish arm which passes floating-point arguments and # return values in integer registers (r0, r1, ...) - this is # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which # passes them in float registers (s0, s1, ...) and double registers # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer # sets the preprocessor defines __ARM_PCS (for the first case) and # __ARM_PCS_VFP (for the second case), but older GCC does not. echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c # Look for a reference to the register d0 in the .s file. AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1 if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then gl_cv_host_cpu_c_abi=armhf else gl_cv_host_cpu_c_abi=arm fi rm -f conftest* ]) ;; hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) # On hppa, the C compiler may be generating 32-bit code or 64-bit # code. In the latter case, it defines _LP64 and __LP64__. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef __LP64__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=hppa64], [gl_cv_host_cpu_c_abi=hppa]) ;; ia64* ) # On ia64 on HP-UX, the C compiler may be generating 64-bit code or # 32-bit code. In the latter case, it defines _ILP32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef _ILP32 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=ia64-ilp32], [gl_cv_host_cpu_c_abi=ia64]) ;; mips* ) # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this # at 32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=mips64], [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but # may later get defined by ), and _MIPS_SIM == _ABIN32. # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but # may later get defined by ), and _MIPS_SIM == _ABIO32. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if (_MIPS_SIM == _ABIN32) int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=mipsn32], [gl_cv_host_cpu_c_abi=mips])]) ;; powerpc* ) # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. # No need to distinguish them here; the caller may distinguish # them based on the OS. # On powerpc64 systems, the C compiler may still be generating # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may # be generating 64-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __powerpc64__ || defined _ARCH_PPC64 int ok; #else error fail #endif ]])], [# On powerpc64, there are two ABIs on Linux: The AIX compatible # one and the ELFv2 one. The latter defines _CALL_ELF=2. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined _CALL_ELF && _CALL_ELF == 2 int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=powerpc64-elfv2], [gl_cv_host_cpu_c_abi=powerpc64]) ], [gl_cv_host_cpu_c_abi=powerpc]) ;; rs6000 ) gl_cv_host_cpu_c_abi=powerpc ;; riscv32 | riscv64 ) # There are 2 architectures (with variants): rv32* and rv64*. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if __riscv_xlen == 64 int ok; #else error fail #endif ]])], [cpu=riscv64], [cpu=riscv32]) # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. # Size of 'long' and 'void *': AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __LP64__ int ok; #else error fail #endif ]])], [main_abi=lp64], [main_abi=ilp32]) # Float ABIs: # __riscv_float_abi_double: # 'float' and 'double' are passed in floating-point registers. # __riscv_float_abi_single: # 'float' are passed in floating-point registers. # __riscv_float_abi_soft: # No values are passed in floating-point registers. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __riscv_float_abi_double int ok; #else error fail #endif ]])], [float_abi=d], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __riscv_float_abi_single int ok; #else error fail #endif ]])], [float_abi=f], [float_abi='']) ]) gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}" ;; s390* ) # On s390x, the C compiler may be generating 64-bit (= s390x) code # or 31-bit (= s390) code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __LP64__ || defined __s390x__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=s390x], [gl_cv_host_cpu_c_abi=s390]) ;; sparc | sparc64 ) # UltraSPARCs running Linux have `uname -m` = "sparc64", but the # C compiler still generates 32-bit code. AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif ]])], [gl_cv_host_cpu_c_abi=sparc64], [gl_cv_host_cpu_c_abi=sparc]) ;; *) gl_cv_host_cpu_c_abi="$host_cpu" ;; esac ]) dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same. HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'` HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi" AC_SUBST([HOST_CPU]) AC_SUBST([HOST_CPU_C_ABI]) # This was # AC_DEFINE_UNQUOTED([__${HOST_CPU}__]) # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__]) # earlier, but KAI C++ 3.2d doesn't like this. sed -e 's/-/_/g' >> confdefs.h < ],[ #if !defined(FRAME_BEGIN) CTASSERT(1); #endif ]) dnl # 4.6 API added STACK_FRAME_NON_STANDARD macro ZFS_LINUX_TEST_SRC([stack_frame_non_standard], [ #include ],[ #if !defined(STACK_FRAME_NON_STANDARD) CTASSERT(1); #endif ]) ]) AC_DEFUN([ZFS_AC_KERNEL_OBJTOOL], [ AC_MSG_CHECKING( [whether compile-time stack validation (objtool) is available]) ZFS_LINUX_TEST_RESULT([objtool], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KERNEL_OBJTOOL, 1, [kernel does stack verification]) AC_MSG_CHECKING([whether STACK_FRAME_NON_STANDARD is defined]) ZFS_LINUX_TEST_RESULT([stack_frame_non_standard], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_STACK_FRAME_NON_STANDARD, 1, [STACK_FRAME_NON_STANDARD is defined]) ],[ AC_MSG_RESULT(no) ]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-ctl-table-name.m40000644000000000000000000000007413612141515021164 xustar000000000000000030 atime=1579730378.244496703 30 ctime=1579730468.476393712 zfs-0.8.3/config/kernel-ctl-table-name.m40000644016037001603700000000100513612141515021155 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.33 API change, dnl # Removed .ctl_name from struct ctl_table. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CTL_NAME], [ ZFS_LINUX_TEST_SRC([ctl_name], [ #include ],[ struct ctl_table ctl __attribute__ ((unused)); ctl.ctl_name = 0; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_CTL_NAME], [ AC_MSG_CHECKING([whether struct ctl_table has ctl_name]) ZFS_LINUX_TEST_RESULT([ctl_name], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CTL_NAME, 1, [struct ctl_table has ctl_name]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-libaio.m40000644000000000000000000000007413607166132017342 xustar000000000000000030 atime=1579730378.184494777 30 ctime=1579730468.678400198 zfs-0.8.3/config/user-libaio.m40000644016037001603700000000045713607166132017345 0ustar00hutter2hutter200000000000000dnl # dnl # Check for libaio - only used for libaiot test cases. dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_LIBAIO], [ LIBAIO= AC_CHECK_HEADER([libaio.h], [ user_libaio=yes AC_SUBST([LIBAIO], ["-laio"]) AC_DEFINE([HAVE_LIBAIO], 1, [Define if you have libaio]) ], [ user_libaio=no ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-inode-times.m40000644000000000000000000000007413612141515020614 xustar000000000000000030 atime=1579730378.231496287 30 ctime=1579730468.533395543 zfs-0.8.3/config/kernel-inode-times.m40000644016037001603700000000112213612141515020605 0ustar00hutter2hutter200000000000000dnl # dnl # 4.18 API change dnl # i_atime, i_mtime, and i_ctime changed from timespec to timespec64. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_TIMES], [ ZFS_LINUX_TEST_SRC([inode_times], [ #include ],[ struct inode ip; struct timespec ts; memset(&ip, 0, sizeof(ip)); ts = ip.i_mtime; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_TIMES], [ AC_MSG_CHECKING([whether inode->i_*time's are timespec64]) ZFS_LINUX_TEST_RESULT([inode_times], [ AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INODE_TIMESPEC64_TIMES, 1, [inode->i_*time's are timespec64]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-kstrtoul.m40000644000000000000000000000007413612141515020266 xustar000000000000000030 atime=1579730378.229496223 30 ctime=1579730468.545395927 zfs-0.8.3/config/kernel-kstrtoul.m40000644016037001603700000000104713612141515020265 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.39 API change dnl # dnl # If kstrtoul() doesn't exist, fallback to use strict_strtoul() which has dnl # existed since 2.6.25. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_KSTRTOUL], [ ZFS_LINUX_TEST_SRC([kstrtoul], [ #include ],[ int ret __attribute__ ((unused)) = kstrtoul(NULL, 10, NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_KSTRTOUL], [ AC_MSG_CHECKING([whether kstrtoul() exists]) ZFS_LINUX_TEST_RESULT([kstrtoul], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KSTRTOUL, 1, [kstrtoul() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bio_set_dev.m40000644000000000000000000000007413612141515020661 xustar000000000000000030 atime=1579730378.251496929 30 ctime=1579730468.444392683 zfs-0.8.3/config/kernel-bio_set_dev.m40000644016037001603700000000206113612141515020655 0ustar00hutter2hutter200000000000000dnl # dnl # Linux 4.14 API, dnl # dnl # The bio_set_dev() helper macro was introduced as part of the transition dnl # to have struct gendisk in struct bio. dnl # dnl # Linux 5.0 API, dnl # dnl # The bio_set_dev() helper macro was updated to internally depend on dnl # bio_associate_blkg() symbol which is exported GPL-only. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_SET_DEV], [ ZFS_LINUX_TEST_SRC([bio_set_dev], [ #include #include ],[ struct block_device *bdev = NULL; struct bio *bio = NULL; bio_set_dev(bio, bdev); ], [], [$ZFS_META_LICENSE]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_SET_DEV], [ AC_MSG_CHECKING([whether bio_set_dev() is available]) ZFS_LINUX_TEST_RESULT([bio_set_dev], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_SET_DEV, 1, [bio_set_dev() is available]) AC_MSG_CHECKING([whether bio_set_dev() is GPL-only]) ZFS_LINUX_TEST_RESULT([bio_set_dev_license], [ AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_SET_DEV_GPL_ONLY, 1, [bio_set_dev() GPL-only]) ]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/always-python.m40000644000000000000000000000007413607166132017746 xustar000000000000000030 atime=1579730378.275497699 30 ctime=1579730468.392391015 zfs-0.8.3/config/always-python.m40000644016037001603700000000410413607166132017742 0ustar00hutter2hutter200000000000000dnl # dnl # The majority of the python scripts are written to be compatible dnl # with Python 2.6 and Python 3.4. Therefore, they may be installed dnl # and used with either interpreter. This option is intended to dnl # to provide a method to specify the default system version, and dnl # set the PYTHON environment variable accordingly. dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYTHON], [ AC_ARG_WITH([python], AC_HELP_STRING([--with-python[=VERSION]], [default system python version @<:@default=check@:>@]), [with_python=$withval], [with_python=check]) AS_CASE([$with_python], [check], [AC_CHECK_PROGS([PYTHON], [python3 python2], [:])], [2*], [PYTHON="python${with_python}"], [*python2*], [PYTHON="${with_python}"], [3*], [PYTHON="python${with_python}"], [*python3*], [PYTHON="${with_python}"], [no], [PYTHON=":"], [AC_MSG_ERROR([Unknown --with-python value '$with_python'])] ) dnl # dnl # Minimum supported Python versions for utilities: dnl # Python 2.6 or Python 3.4 dnl # AM_PATH_PYTHON([], [], [:]) AS_IF([test -z "$PYTHON_VERSION"], [ PYTHON_VERSION=$(basename $PYTHON | tr -cd 0-9.) ]) PYTHON_MINOR=${PYTHON_VERSION#*\.} AS_CASE([$PYTHON_VERSION], [2.*], [ AS_IF([test $PYTHON_MINOR -lt 6], [AC_MSG_ERROR("Python >= 2.6 is required")]) ], [3.*], [ AS_IF([test $PYTHON_MINOR -lt 4], [AC_MSG_ERROR("Python >= 3.4 is required")]) ], [:|2|3], [], [PYTHON_VERSION=3] ) AM_CONDITIONAL([USING_PYTHON], [test "$PYTHON" != :]) AM_CONDITIONAL([USING_PYTHON_2], [test "x${PYTHON_VERSION%%\.*}" = x2]) AM_CONDITIONAL([USING_PYTHON_3], [test "x${PYTHON_VERSION%%\.*}" = x3]) dnl # dnl # Request that packages be built for a specific Python version. dnl # AS_IF([test "x$with_python" != xcheck], [ PYTHON_PKG_VERSION=$(echo $PYTHON_VERSION | tr -d .) DEFINE_PYTHON_PKG_VERSION='--define "__use_python_pkg_version '${PYTHON_PKG_VERSION}'"' DEFINE_PYTHON_VERSION='--define "__use_python '${PYTHON}'"' ], [ DEFINE_PYTHON_VERSION='' DEFINE_PYTHON_PKG_VERSION='' ]) AC_SUBST(DEFINE_PYTHON_VERSION) AC_SUBST(DEFINE_PYTHON_PKG_VERSION) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-create-nameidata.m40000644000000000000000000000007413612141515021563 xustar000000000000000030 atime=1579730378.244496703 30 ctime=1579730468.474393646 zfs-0.8.3/config/kernel-create-nameidata.m40000644016037001603700000000154713612141515021567 0ustar00hutter2hutter200000000000000dnl # dnl # 3.6 API change dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CREATE_NAMEIDATA], [ ZFS_LINUX_TEST_SRC([create_nameidata], [ #include #include #ifdef HAVE_MKDIR_UMODE_T int inode_create(struct inode *inode ,struct dentry *dentry, umode_t umode, struct nameidata *nidata) { return 0; } #else int inode_create(struct inode *inode,struct dentry *dentry, int umode, struct nameidata * nidata) { return 0; } #endif static const struct inode_operations iops __attribute__ ((unused)) = { .create = inode_create, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [ AC_MSG_CHECKING([whether iops->create() passes nameidata]) ZFS_LINUX_TEST_RESULT([create_nameidata], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CREATE_NAMEIDATA, 1, [iops->create() passes nameidata]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-timer.m40000644000000000000000000000007413612141515017517 xustar000000000000000030 atime=1579730378.216495804 30 ctime=1579730468.603397789 zfs-0.8.3/config/kernel-timer.m40000644016037001603700000000371313612141515017520 0ustar00hutter2hutter200000000000000dnl # 4.14-rc3 API change dnl # https://lwn.net/Articles/735887/ dnl # dnl # Check if timer_list.func get passed a timer_list or an unsigned long dnl # (older kernels). Also sanity check the from_timer() and timer_setup() dnl # macros are available as well, since they will be used in the same newer dnl # kernels that support the new timer_list.func signature. dnl # dnl # Also check for the existence of flags in struct timer_list, they were dnl # added in 4.1-rc8 via 0eeda71bc30d. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_TIMER_SETUP], [ ZFS_LINUX_TEST_SRC([timer_setup], [ #include struct my_task_timer { struct timer_list timer; int data; }; void task_expire(struct timer_list *tl) { struct my_task_timer *task_timer = from_timer(task_timer, tl, timer); task_timer->data = 42; } ],[ struct my_task_timer task_timer; timer_setup(&task_timer.timer, task_expire, 0); ]) ZFS_LINUX_TEST_SRC([timer_list_function], [ #include void task_expire(struct timer_list *tl) {} ],[ struct timer_list tl; tl.function = task_expire; ]) ZFS_LINUX_TEST_SRC([timer_list_flags], [ #include ],[ struct timer_list tl; tl.flags = 2; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_TIMER_SETUP], [ AC_MSG_CHECKING([whether timer_setup() is available]) ZFS_LINUX_TEST_RESULT([timer_setup], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KERNEL_TIMER_SETUP, 1, [timer_setup() is available]) ],[ AC_MSG_RESULT(no) ]) AC_MSG_CHECKING([whether timer function expects timer_list]) ZFS_LINUX_TEST_RESULT([timer_list_function], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST, 1, [timer_list.function gets a timer_list]) ],[ AC_MSG_RESULT(no) ]) AC_MSG_CHECKING([whether struct timer_list has flags]) ZFS_LINUX_TEST_RESULT([timer_list_flags], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KERNEL_TIMER_LIST_FLAGS, 1, [struct timer_list has a flags member]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-wait.m40000644000000000000000000000007213612141515017341 xustar000000000000000029 atime=1579730378.20949558 29 ctime=1579730468.63239872 zfs-0.8.3/config/kernel-wait.m40000644016037001603700000000551113612141515017342 0ustar00hutter2hutter200000000000000dnl # dnl # 4.13 API change dnl # Renamed struct wait_queue -> struct wait_queue_entry. dnl # dnl # N.B. The type check is performed before all other checks dnl # since ZFS_AC_KERNEL_SRC_WAIT_QUEUE_HEAD_ENTRY depends on dnl # HAVE_WAIT_QUEUE_ENTRY_T being set in confdefs.h. dnl # AC_DEFUN([ZFS_AC_KERNEL_WAIT_QUEUE_ENTRY_T], [ AC_MSG_CHECKING([whether wait_queue_entry_t exists]) ZFS_LINUX_TRY_COMPILE([ #include ],[ wait_queue_entry_t *entry __attribute__ ((unused)); ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_WAIT_QUEUE_ENTRY_T, 1, [wait_queue_entry_t exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.17 API change, dnl # wait_on_bit() no longer requires an action argument. The former dnl # "wait_on_bit" interface required an 'action' function to be provided dnl # which does the actual waiting. There were over 20 such functions in the dnl # kernel, many of them identical, though most cases can be satisfied by one dnl # of just two functions: one which uses io_schedule() and one which just dnl # uses schedule(). This API change was made to consolidate all of those dnl # redundant wait functions. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_WAIT_ON_BIT], [ ZFS_LINUX_TEST_SRC([wait_on_bit], [ #include ],[ int (*action)(void *) = NULL; wait_on_bit(NULL, 0, action, 0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_WAIT_ON_BIT], [ AC_MSG_CHECKING([whether wait_on_bit() takes an action]) ZFS_LINUX_TEST_RESULT([wait_on_bit], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_WAIT_ON_BIT_ACTION, 1, [yes]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.13 API change dnl # Renamed wait_queue_head::task_list -> wait_queue_head::head dnl # Renamed wait_queue_entry::task_list -> wait_queue_entry::entry dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_WAIT_QUEUE_HEAD_ENTRY], [ ZFS_LINUX_TEST_SRC([wait_queue_head_entry], [ #include #ifdef HAVE_WAIT_QUEUE_ENTRY_T typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_entry_t spl_wait_queue_entry_t; #else typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_t spl_wait_queue_entry_t; #endif ],[ spl_wait_queue_head_t wq_head; spl_wait_queue_entry_t wq_entry; struct list_head *head __attribute__ ((unused)); struct list_head *entry __attribute__ ((unused)); head = &wq_head.head; entry = &wq_entry.entry; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_WAIT_QUEUE_HEAD_ENTRY], [ AC_MSG_CHECKING([whether wq_head->head and wq_entry->entry exist]) ZFS_LINUX_TEST_RESULT([wait_queue_head_entry], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_WAIT_QUEUE_HEAD_ENTRY, 1, [wq_head->head and wq_entry->entry exist]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_WAIT], [ ZFS_AC_KERNEL_SRC_WAIT_ON_BIT ZFS_AC_KERNEL_SRC_WAIT_QUEUE_HEAD_ENTRY ]) AC_DEFUN([ZFS_AC_KERNEL_WAIT], [ ZFS_AC_KERNEL_WAIT_ON_BIT ZFS_AC_KERNEL_WAIT_QUEUE_HEAD_ENTRY ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-blk-queue-flags.m40000644000000000000000000000007413612141515021363 xustar000000000000000030 atime=1579730378.250496896 30 ctime=1579730468.449392846 zfs-0.8.3/config/kernel-blk-queue-flags.m40000644016037001603700000000262313612141515021363 0ustar00hutter2hutter200000000000000dnl # dnl # API change dnl # https://github.com/torvalds/linux/commit/8814ce8 dnl # Introduction of blk_queue_flag_set and blk_queue_flag_clear dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_FLAG_SET], [ ZFS_LINUX_TEST_SRC([blk_queue_flag_set], [ #include #include ],[ struct request_queue *q = NULL; blk_queue_flag_set(0, q); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_FLAG_SET], [ AC_MSG_CHECKING([whether blk_queue_flag_set() exists]) ZFS_LINUX_TEST_RESULT([blk_queue_flag_set], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_FLAG_SET, 1, [blk_queue_flag_set() exists]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_FLAG_CLEAR], [ ZFS_LINUX_TEST_SRC([blk_queue_flag_clear], [ #include #include ],[ struct request_queue *q = NULL; blk_queue_flag_clear(0, q); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_FLAG_CLEAR], [ AC_MSG_CHECKING([whether blk_queue_flag_clear() exists]) ZFS_LINUX_TEST_RESULT([blk_queue_flag_clear], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_FLAG_CLEAR, 1, [blk_queue_flag_clear() exists]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_FLAGS], [ ZFS_AC_KERNEL_SRC_BLK_QUEUE_FLAG_SET ZFS_AC_KERNEL_SRC_BLK_QUEUE_FLAG_CLEAR ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_FLAGS], [ ZFS_AC_KERNEL_BLK_QUEUE_FLAG_SET ZFS_AC_KERNEL_BLK_QUEUE_FLAG_CLEAR ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-truncate-setsize.m40000644000000000000000000000007313612141515021707 xustar000000000000000029 atime=1579730378.21449574 30 ctime=1579730468.615398176 zfs-0.8.3/config/kernel-truncate-setsize.m40000644016037001603700000000107613612141515021711 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.35 API change dnl # Added truncate_setsize() helper function. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_TRUNCATE_SETSIZE], [ ZFS_LINUX_TEST_SRC([truncate_setsize], [ #include ], [ truncate_setsize(NULL, 0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_TRUNCATE_SETSIZE], [ AC_MSG_CHECKING([whether truncate_setsize() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([truncate_setsize], [truncate_setsize], [mm/truncate.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_TRUNCATE_SETSIZE, 1, [truncate_setsize() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-runstatedir.m40000644000000000000000000000007413607166132020447 xustar000000000000000030 atime=1579730378.182494712 30 ctime=1579730468.695400744 zfs-0.8.3/config/user-runstatedir.m40000644016037001603700000000032013607166132020437 0ustar00hutter2hutter200000000000000dnl For backwards compatibility; runstatedir added in autoconf 2.70. AC_DEFUN([ZFS_AC_CONFIG_USER_RUNSTATEDIR], [ if test "x$runstatedir" = x; then AC_SUBST([runstatedir], ['${localstatedir}/run']) fi ]) zfs-0.8.3/config/PaxHeaders.151519/libtool.m40000644000000000000000000000013113612142725016563 xustar000000000000000029 mtime=1579730389.64486271 30 atime=1579730397.041100168 30 ctime=1579730468.648399235 zfs-0.8.3/config/libtool.m40000644016037001603700000077341113612142725016603 0ustar00hutter2hutter200000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 56 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl _LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\[$]0 --fallback-echo"')dnl " lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ;; esac _LT_OUTPUT_LIBTOOL_INIT ]) # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) fi ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_XSI_SHELLFNS sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX # ----------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. m4_defun([_LT_PROG_ECHO_BACKSLASH], [_LT_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac ECHO=${lt_ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF [$]* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(lt_ECHO) ]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that does not interpret backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [AC_CHECK_TOOL(AR, ar, false) test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1]) AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line __oline__ "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method == "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE(int foo(void) {}, _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then _LT_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [fix_srcfile_path], [1], [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_PROG_CXX # ------------ # Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ # compiler, we have our own version here. m4_defun([_LT_PROG_CXX], [ pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) AC_PROG_CXX if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_CXX dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_CXX], []) # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [AC_REQUIRE([_LT_PROG_CXX])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ]) dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_PROG_F77 # ------------ # Since AC_PROG_F77 is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_F77], [ pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) AC_PROG_F77 if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_F77 dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_F77], []) # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_REQUIRE([_LT_PROG_F77])dnl AC_LANG_PUSH(Fortran 77) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${F77-"f77"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_PROG_FC # ----------- # Since AC_PROG_FC is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_FC], [ pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) AC_PROG_FC if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_FC dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_FC], []) # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_REQUIRE([_LT_PROG_FC])dnl AC_LANG_PUSH(Fortran) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${FC-"f95"} compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC="$lt_save_CC" ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC= CC=${RC-"windres"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC="$lt_save_CC" ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_XSI_SHELLFNS # --------------------- # Bourne and XSI compatible variants of some useful shell functions. m4_defun([_LT_PROG_XSI_SHELLFNS], [case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $[*] )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } dnl func_dirname_and_basename dnl A portable version of this function is already defined in general.m4sh dnl so there is no need for it here. # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[[^=]]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$[@]"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]+=\$[2]" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]=\$$[1]\$[2]" } _LT_EOF ;; esac ]) zfs-0.8.3/config/PaxHeaders.151519/po.m40000644000000000000000000000007413607166132015545 xustar000000000000000030 atime=1579730378.188494906 30 ctime=1579730468.667399843 zfs-0.8.3/config/po.m40000644016037001603700000004461713607166132015556 0ustar00hutter2hutter200000000000000# po.m4 serial 30 (gettext-0.20) dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.60]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_SED])dnl AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.20]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Test whether it is GNU msgmerge >= 0.20. if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' else dnl Test whether it is GNU msgmerge >= 0.12. if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' else dnl With these old versions, $(MSGMERGE) $(MSGMERGE_FOR_MSGFMT_OPTION) is dnl slow. But this is not a big problem, as such old gettext versions are dnl hardly in use any more. MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' fi fi AC_SUBST([MSGMERGE_FOR_MSGFMT_OPTION]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" tab=`printf '\t'` if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" < ],[ struct bio bio; bio.bi_iter.bi_sector = 0; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_BVEC_ITER], [ AC_MSG_CHECKING([whether bio has bi_iter]) ZFS_LINUX_TEST_RESULT([bio_bvec_iter], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_BVEC_ITER, 1, [bio has bi_iter]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-fmode-t.m40000644000000000000000000000007413612141515017732 xustar000000000000000030 atime=1579730378.239496543 30 ctime=1579730468.499394449 zfs-0.8.3/config/kernel-fmode-t.m40000644016037001603700000000073613612141515017735 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.28 API change, dnl # check if fmode_t typedef is defined dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_FMODE_T], [ ZFS_LINUX_TEST_SRC([type_fmode_t], [ #include ],[ fmode_t *ptr __attribute__ ((unused)); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_FMODE_T], [ AC_MSG_CHECKING([whether kernel defines fmode_t]) ZFS_LINUX_TEST_RESULT([type_fmode_t], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_FMODE_T, 1, [kernel defines fmode_t]) ],[ AC_MSG_RESULT([no]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-totalhigh_pages.m40000644000000000000000000000007413612141515021541 xustar000000000000000030 atime=1579730378.215495772 30 ctime=1579730468.608397949 zfs-0.8.3/config/kernel-totalhigh_pages.m40000644016037001603700000000076413612141515021545 0ustar00hutter2hutter200000000000000dnl # dnl # 5.0 API change dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_TOTALHIGH_PAGES], [ ZFS_LINUX_TEST_SRC([totalhigh_pages], [ #include ],[ unsigned long pages __attribute__ ((unused)); pages = totalhigh_pages(); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_TOTALHIGH_PAGES], [ AC_MSG_CHECKING([whether totalhigh_pages() exists]) ZFS_LINUX_TEST_RESULT([totalhigh_pages], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_TOTALHIGH_PAGES, 1, [totalhigh_pages() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-truncate-range.m40000644000000000000000000000007413612141515021316 xustar000000000000000030 atime=1579730378.215495772 30 ctime=1579730468.612398077 zfs-0.8.3/config/kernel-truncate-range.m40000644016037001603700000000152713612141515021320 0ustar00hutter2hutter200000000000000dnl # dnl # 3.5.0 API change dnl # torvalds/linux@17cf28afea2a1112f240a3a2da8af883be024811 removed dnl # truncate_range(). The file hole punching functionality is now dnl # provided by fallocate() dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_TRUNCATE_RANGE], [ ZFS_LINUX_TEST_SRC([inode_operations_truncate_range], [ #include void truncate_range(struct inode *inode, loff_t start, loff_t end) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .truncate_range = truncate_range, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_TRUNCATE_RANGE], [ AC_MSG_CHECKING([whether iops->truncate_range() exists]) ZFS_LINUX_TEST_RESULT([inode_operations_truncate_range], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INODE_TRUNCATE_RANGE, 1, [iops->truncate_range() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/nls.m40000644000000000000000000000007413607166132015723 xustar000000000000000030 atime=1579730378.193495066 30 ctime=1579730468.663399715 zfs-0.8.3/config/nls.m40000644016037001603700000000231513607166132015721 0ustar00hutter2hutter200000000000000# nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019 Free Software dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ([2.50]) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE([nls], [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT([$USE_NLS]) AC_SUBST([USE_NLS]) ]) zfs-0.8.3/config/PaxHeaders.151519/config.guess0000644000000000000000000000013213612142772017175 xustar000000000000000030 mtime=1579730426.464044815 30 atime=1579730442.928573436 30 ctime=1579730468.761402863 zfs-0.8.3/config/config.guess0000755016037001603700000012761513612142772017216 0ustar00hutter2hutter200000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-11-20' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: zfs-0.8.3/config/PaxHeaders.151519/ltoptions.m40000644000000000000000000000013213612142727017155 xustar000000000000000030 mtime=1579730391.070908494 30 atime=1579730397.036100006 30 ctime=1579730468.651399331 zfs-0.8.3/config/ltoptions.m40000644016037001603700000002724213612142727017166 0ustar00hutter2hutter200000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [0], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) zfs-0.8.3/config/PaxHeaders.151519/iconv.m40000644000000000000000000000007413612141515016237 xustar000000000000000030 atime=1579730378.261497249 30 ctime=1579730468.412391656 zfs-0.8.3/config/iconv.m40000644016037001603700000002277113612141515016245 0ustar00hutter2hutter200000000000000# iconv.m4 serial 21 dnl Copyright (C) 2000-2002, 2007-2014, 2016-2019 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif ]], [[int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ]])], [am_cv_func_iconv_works=yes], , [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [m4_ifdef([gl_00GNULIB], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ]], [[]])], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$am_cv_proto_iconv]) else dnl When compiling GNU libiconv on a system that does not have iconv yet, dnl pick the POSIX compliant declaration without 'const'. am_cv_proto_iconv_arg1="" fi AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test -n "$am_cv_proto_iconv_arg1"; then ICONV_CONST="const" fi ]) ]) zfs-0.8.3/config/PaxHeaders.151519/ltmain.sh0000644000000000000000000000013113612142725016475 xustar000000000000000029 mtime=1579730389.58286072 30 atime=1579730468.239386102 30 ctime=1579730468.772403215 zfs-0.8.3/config/ltmain.sh0000755016037001603700000073306013612142725016514 0ustar00hutter2hutter200000000000000# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6b # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print informational messages (default) # --version print version information # -h, --help print short or long help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.2.6b # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION=2.2.6b TIMESTAMP="" package_revision=1.3017 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done $lt_unset CDPATH : ${CP="cp -f"} : ${ECHO="echo"} : ${EGREP="/bin/grep -E"} : ${FGREP="/bin/grep -F"} : ${GREP="/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # Generated shell functions inserted here. # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: # In the unlikely event $progname began with a '-', it would play havoc with # func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result case $progname in -*) progname=./$progname ;; esac # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname${mode+: }$mode: $*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_version # Echo version message to standard output and exit. func_version () { $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $SED -n '/^# Usage:/,/# -h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" $ECHO $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help # Echo long help message to standard output and exit. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" exit $? } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { func_error "missing argument for $1" exit_cmd=exit } exit_cmd=: # Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then # Yippee, $ECHO works! : else # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # Parse options once, thoroughly. This comes as soon as possible in # the script to make things like `libtool --version' happen quickly. { # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Parse non-mode specific arguments: while test "$#" -gt 0; do opt="$1" shift case $opt in --config) func_config ;; --debug) preserve_args="$preserve_args $opt" func_echo "enabling shell trace mode" opt_debug='set -x' $opt_debug ;; -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break execute_dlfiles="$execute_dlfiles $1" shift ;; --dry-run | -n) opt_dry_run=: ;; --features) func_features ;; --finish) mode="finish" ;; --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break case $1 in # Valid mode arguments: clean) ;; compile) ;; execute) ;; finish) ;; install) ;; link) ;; relink) ;; uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac mode="$1" shift ;; --preserve-dup-deps) opt_duplicate_deps=: ;; --quiet|--silent) preserve_args="$preserve_args $opt" opt_silent=: ;; --verbose| -v) preserve_args="$preserve_args $opt" opt_silent=false ;; --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break preserve_args="$preserve_args $opt $1" func_enable_tag "$1" # tagname is set here shift ;; # Separate optargs to long options: -dlopen=*|--mode=*|--tag=*) func_opt_split "$opt" set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} shift ;; -\?|-h) func_usage ;; --help) opt_help=: ;; --version) func_version ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) nonopt="$opt" break ;; esac done case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ;; esac # Having warned about all mis-specified options, bail out if # anything was wrong. $exit_cmd $EXIT_FAILURE } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } ## ----------- ## ## Main. ## ## ----------- ## $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi test -z "$mode" && func_fatal_error "error: you must specify a MODE." # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$mode' for more information." } # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_ltwrapper_scriptname_result="" if func_ltwrapper_executable_p "$1"; then func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" fi } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case "$@ " in " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi removelist="$removelist $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist removelist="$removelist $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir command="$command -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$mode'" ;; esac $ECHO $ECHO "Try \`$progname --help' for more information about other modes." exit $? } # Now that we've collected a possible --mode arg, show help if necessary $opt_help && func_mode_help # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $execute_dlfiles; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_quote_for_eval "$file" args="$args $func_quote_for_eval_result" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" $ECHO "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS $ECHO "X----------------------------------------------------------------------" | $Xsed $ECHO "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done $ECHO $ECHO "If you ever happen to want to link against installed libraries" $ECHO "in a given directory, LIBDIR, you must either use libtool, and" $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" $ECHO "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" $ECHO " during execution" fi if test -n "$runpath_var"; then $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" $ECHO " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $ECHO $ECHO "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" $ECHO "pages." ;; *) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac $ECHO "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS } test "$mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $ECHO "X$nonopt" | $GREP shtool >/dev/null; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" fi $ECHO >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; " case $host in *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" lt_dlsym_const= ;; *osf5*) echo >> "$output_objdir/$my_dlsyms" "\ /* This system does not cope well with relocations in const data */" lt_dlsym_const= ;; *) lt_dlsym_const=const ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) symtab_cflags="$symtab_cflags $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper_part1 [arg=no] # # Emit the first part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part1 () { func_emit_wrapper_part1_arg1=no if test -n "$1" ; then func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then ECHO=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then # Yippee, \$ECHO works! : else # Restart under the correct shell, and then maybe \$ECHO will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $ECHO "\ # Find the directory that this script lives in. thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done " } # end: func_emit_wrapper_part1 # func_emit_wrapper_part2 [arg=no] # # Emit the second part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part2 () { func_emit_wrapper_part2_arg1=no if test -n "$1" ; then func_emit_wrapper_part2_arg1=$1 fi $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # end: func_emit_wrapper_part2 # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=no if test -n "$1" ; then func_emit_wrapper_arg1=$1 fi # split this up so that func_emit_cwrapperexe_src # can call each part independently. func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" } # func_to_host_path arg # # Convert paths to host format when used with build tools. # Intended for use with "native" mingw (where libtool itself # is running under the msys shell), or in the following cross- # build environments: # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # where wine is equipped with the `winepath' executable. # In the native mingw case, the (msys) shell automatically # converts paths for any non-msys applications it launches, # but that facility isn't available from inside the cwrapper. # Similar accommodations are necessary for $host mingw and # $build cygwin. Calling this function does no harm for other # $host/$build combinations not listed above. # # ARG is the path (on $build) that should be converted to # the proper representation for $host. The result is stored # in $func_to_host_path_result. func_to_host_path () { func_to_host_path_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_path_tmp1=`( cmd //c echo "$1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_path_tmp1=`cygpath -w "$1"` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero # error code, so we are forced to check the contents of # stdout. On the other hand, if the command is not # found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both # error code of zero AND non-empty stdout, which explains # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. func_to_host_path_result="" fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" fi ;; esac fi } # end: func_to_host_path # func_to_host_pathlist arg # # Convert pathlists to host format when used with build tools. # See func_to_host_path(), above. This function supports the # following $build/$host combinations (but does no harm for # combinations not listed here): # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # # Path separators are also converted from $build format to # $host format. If ARG begins or ends with a path separator # character, it is preserved (but converted to $host format) # on output. # # ARG is a pathlist (on $build) that should be converted to # the proper representation on $host. The result is stored # in $func_to_host_pathlist_result. func_to_host_pathlist () { func_to_host_pathlist_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_to_host_pathlist_tmp2="$1" # Once set for this call, this variable should not be # reassigned. It is used in tha fallback case. func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e 's|^:*||' -e 's|:*$||'` case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # unfortunately, winepath doesn't convert pathlists func_to_host_pathlist_result="" func_to_host_pathlist_oldIFS=$IFS IFS=: for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do IFS=$func_to_host_pathlist_oldIFS if test -n "$func_to_host_pathlist_f" ; then func_to_host_path "$func_to_host_pathlist_f" if test -n "$func_to_host_path_result" ; then if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" fi fi fi IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac if test -z "$func_to_host_pathlist_result" ; then func_error "Could not determine the host path(s) corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression # below, but for the user to provide a working wine installation # with winepath so that path translation in the cross-to-mingw # case works properly. lt_replace_pathsep_nix_to_dos="s|:|;|g" func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_replace_pathsep_nix_to_dos"` fi # Now, add the leading and trailing path separators back case "$1" in :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ;; esac case "$1" in *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ;; esac ;; esac fi } # end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # define HAVE_SETENV # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif # endif #endif #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif #ifdef _MSC_VER # define S_IXUSR _S_IEXEC # define stat _stat # ifndef _INTPTR_T_DEFINED # define intptr_t int # endif #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifdef __CYGWIN__ # define FOPEN_WB "wb" #endif #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #undef LTWRAPPER_DEBUGPRINTF #if defined DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) { va_list args; va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } #else # define LTWRAPPER_DEBUGPRINTF(args) #endif const char *program_name = NULL; void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_opt_process_env_set (const char *arg); void lt_opt_process_env_prepend (const char *arg); void lt_opt_process_env_append (const char *arg); int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); static const char *script_text_part1 = EOF func_emit_wrapper_part1 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", tmp_pathspec)); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { char *errstr = strerror (errno); lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal ("Could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } void lt_setenv (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", (name ? name : ""), (value ? value : ""))); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } int lt_split_name_value (const char *arg, char** name, char** value) { const char *p; int len; if (!arg || !*arg) return 1; p = strchr (arg, (int)'='); if (!p) return 1; *value = xstrdup (++p); len = strlen (arg) - strlen (*value); *name = XMALLOC (char, len); strncpy (*name, arg, len-1); (*name)[len - 1] = '\0'; return 0; } void lt_opt_process_env_set (const char *arg) { char *name = NULL; char *value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); } lt_setenv (name, value); XFREE (name); XFREE (value); } void lt_opt_process_env_prepend (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); } new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_opt_process_env_append (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); } new_value = lt_extend_str (getenv (name), value, 1); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_update_exe_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF } # end: func_emit_cwrapperexe_src # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) weak_libs="$weak_libs $arg" prev= continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result if test -z "$dir"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" linker_flags="$linker_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" compiler_flags="$compiler_flags $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_duplicate_deps ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= case $lib in *.la) func_source "$lib" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" dir=$func_stripname_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $ECHO $ECHO "*** Warning: Trying to link with static lib archive $deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because the file extensions .$libext of this argument makes me believe" $ECHO "*** that it is just a static archive that I should not use here." else $ECHO $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) temp_rpath="$temp_rpath$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no ;; *) if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then $ECHO if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $ECHO $ECHO "*** And there doesn't seem to be a static archive available" $ECHO "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $ECHO $ECHO "*** Warning: This system can not link to static lib archive $lib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $ECHO "*** But as you try to build a module library, libtool will still create " $ECHO "*** a static module, that should work as long as the dlopening application" $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) func_dirname "$deplib" "" "." dir="$func_dirname_result" # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else $ECHO $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" libobjs="$libobjs $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` done fi if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | $GREP . >/dev/null; then $ECHO if test "X$deplibs_check_method" = "Xnone"; then $ECHO "*** Warning: inter-library dependencies are not supported in this platform." else $ECHO "*** Warning: inter-library dependencies are not known to be supported." fi $ECHO "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $ECHO $ECHO "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" $ECHO "*** a static module, that should work as long as the dlopening" $ECHO "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $ECHO "*** The inter-library dependencies that have been dropped here will be" $ECHO "*** automatically added whenever a program is linked with this library" $ECHO "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $ECHO $ECHO "*** Since this library must not contain undefined symbols," $ECHO "*** because either the platform does not support them or" $ECHO "*** it was explicitly requested with -no-undefined," $ECHO "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" delfiles="$delfiles $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then func_show_eval "$cmd" 'exit $?' skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$ECHO "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" $ECHO 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done $ECHO ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do $ECHO "$obj" >> $output done delfiles="$delfiles $output" output=$firstobj\"$file_list_spec$output\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=$obj func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi delfiles="$delfiles $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *cegcc) # Disable wrappers for cegcc, we are cross compiling anyway. wrappers_required=no ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $ECHO for shipping. if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then oldobjs="$oldobjs $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles oldobjs="$oldobjs $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else $ECHO "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlfiles="$newdlfiles $libdir/$name" ;; *) newdlfiles="$newdlfiles $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlprefiles="$newdlprefiles $libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$mode" = link || test "$mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) RM="$RM $arg"; rmforce=yes ;; -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi func_basename "$file" name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result rmfiles="$rmfiles $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$mode" = uninstall || test "$mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 zfs-0.8.3/config/PaxHeaders.151519/user-libtirpc.m40000644000000000000000000000007413607166132017713 xustar000000000000000030 atime=1579730378.183494744 30 ctime=1579730468.686400454 zfs-0.8.3/config/user-libtirpc.m40000644016037001603700000000172713607166132017717 0ustar00hutter2hutter200000000000000dnl # dnl # Check for libtirpc - may be needed for xdr functionality dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_LIBTIRPC], [ AC_ARG_WITH([tirpc], [AS_HELP_STRING([--with-tirpc], [use tirpc for xdr encoding @<:@default=check@:>@])], [], [with_tirpc=check]) have_xdr= AS_IF([test "x$with_tirpc" != "xyes"], [ AC_SEARCH_LIBS([xdrmem_create], [], [have_xdr=1], [ AS_IF([test "x$with_tirpc" = "xno"], [ AC_MSG_FAILURE([xdrmem_create() requires sunrpc support in libc if not using libtirpc]) ]) ]) ]) AS_IF([test "x$have_xdr" = "x"], [ FIND_SYSTEM_LIBRARY(LIBTIRPC, [libtirpc], [rpc/xdr.h], [tirpc], [tirpc], [xdrmem_create], [], [ AS_IF([test "x$with_tirpc" = "xyes"], [ AC_MSG_FAILURE([--with-tirpc was given, but libtirpc is not available, try installing libtirpc-devel]) ],[dnl ELSE AC_MSG_FAILURE([neither libc sunrpc support nor libtirpc is available, try installing libtirpc-devel]) ]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-super-userns.m40000644000000000000000000000007413612141515021052 xustar000000000000000030 atime=1579730378.216495804 30 ctime=1579730468.601397725 zfs-0.8.3/config/kernel-super-userns.m40000644016037001603700000000117113612141515021047 0ustar00hutter2hutter200000000000000dnl # dnl # 4.8 API change dnl # struct user_namespace was added to struct super_block as dnl # super->s_user_ns member dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SUPER_USER_NS], [ ZFS_LINUX_TEST_SRC([super_user_ns], [ #include #include ], [ struct super_block super; super.s_user_ns = (struct user_namespace *)NULL; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SUPER_USER_NS], [ AC_MSG_CHECKING([whether super_block->s_user_ns exists]) ZFS_LINUX_TEST_RESULT([super_user_ns], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SUPER_USER_NS, 1, [super_block->s_user_ns exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-evict-inode.m40000644000000000000000000000007413612141515020605 xustar000000000000000030 atime=1579730378.240496575 30 ctime=1579730468.491394193 zfs-0.8.3/config/kernel-evict-inode.m40000644016037001603700000000125313612141515020603 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.36 API change dnl # The sops->delete_inode() and sops->clear_inode() callbacks have dnl # replaced by a single sops->evict_inode() callback. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_EVICT_INODE], [ ZFS_LINUX_TEST_SRC([evict_inode], [ #include void evict_inode (struct inode * t) { return; } static struct super_operations sops __attribute__ ((unused)) = { .evict_inode = evict_inode, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_EVICT_INODE], [ AC_MSG_CHECKING([whether sops->evict_inode() exists]) ZFS_LINUX_TEST_RESULT([evict_inode], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_EVICT_INODE, 1, [sops->evict_inode() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-block-device-operations.m40000644000000000000000000000007413612141515023107 xustar000000000000000030 atime=1579730378.247496799 30 ctime=1579730468.465393358 zfs-0.8.3/config/kernel-block-device-operations.m40000644016037001603700000000364313612141515023112 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.38 API change dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS], [ ZFS_LINUX_TEST_SRC([block_device_operations_check_events], [ #include unsigned int blk_check_events(struct gendisk *disk, unsigned int clearing) { return (0); } static const struct block_device_operations bops __attribute__ ((unused)) = { .check_events = blk_check_events, }; ], [], [$NO_UNUSED_BUT_SET_VARIABLE]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS], [ AC_MSG_CHECKING([whether bops->check_events() exists]) ZFS_LINUX_TEST_RESULT([block_device_operations_check_events], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS, 1, [bops->check_events() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.10.x API change dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID], [ ZFS_LINUX_TEST_SRC([block_device_operations_release_void], [ #include void blk_release(struct gendisk *g, fmode_t mode) { return; } static const struct block_device_operations bops __attribute__ ((unused)) = { .open = NULL, .release = blk_release, .ioctl = NULL, .compat_ioctl = NULL, }; ], [], [$NO_UNUSED_BUT_SET_VARIABLE]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID], [ AC_MSG_CHECKING([whether bops->release() is void]) ZFS_LINUX_TEST_RESULT([block_device_operations_release_void], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID, 1, [bops->release() returns void]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS], [ ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID ]) AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS], [ ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-usleep_range.m40000644000000000000000000000007413612141515021050 xustar000000000000000030 atime=1579730378.213495708 30 ctime=1579730468.619398304 zfs-0.8.3/config/kernel-usleep_range.m40000644016037001603700000000121213612141515021041 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.36 API compatibility- Added usleep_range timer. dnl # dnl # usleep_range is a finer precision implementation of msleep dnl # designed to be a drop-in replacement for udelay where a precise dnl # sleep / busy-wait is unnecessary. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_USLEEP_RANGE], [ ZFS_LINUX_TEST_SRC([usleep_range], [ #include ],[ usleep_range(0, 0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_USLEEP_RANGE], [ AC_MSG_CHECKING([whether usleep_range() is available]) ZFS_LINUX_TEST_RESULT([usleep_range], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_USLEEP_RANGE, 1, [usleep_range is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-systemd.m40000644000000000000000000000007413607166132017573 xustar000000000000000030 atime=1579730378.182494712 30 ctime=1579730468.697400809 zfs-0.8.3/config/user-systemd.m40000644016037001603700000000360613607166132017575 0ustar00hutter2hutter200000000000000AC_DEFUN([ZFS_AC_CONFIG_USER_SYSTEMD], [ AC_ARG_ENABLE(systemd, AC_HELP_STRING([--enable-systemd], [install systemd unit/preset files [[default: yes]]]), [enable_systemd=$enableval], [enable_systemd=check]) AC_ARG_WITH(systemdunitdir, AC_HELP_STRING([--with-systemdunitdir=DIR], [install systemd unit files in dir [[/usr/lib/systemd/system]]]), systemdunitdir=$withval,systemdunitdir=/usr/lib/systemd/system) AC_ARG_WITH(systemdpresetdir, AC_HELP_STRING([--with-systemdpresetdir=DIR], [install systemd preset files in dir [[/usr/lib/systemd/system-preset]]]), systemdpresetdir=$withval,systemdpresetdir=/usr/lib/systemd/system-preset) AC_ARG_WITH(systemdmodulesloaddir, AC_HELP_STRING([--with-systemdmodulesloaddir=DIR], [install systemd module load files into dir [[/usr/lib/modules-load.d]]]), systemdmodulesloaddir=$withval,systemdmodulesloaddir=/usr/lib/modules-load.d) AC_ARG_WITH(systemdgeneratordir, AC_HELP_STRING([--with-systemdgeneratordir=DIR], [install systemd generators in dir [[/usr/lib/systemd/system-generators]]]), systemdgeneratordir=$withval,systemdgeneratordir=/usr/lib/systemd/system-generators) AS_IF([test "x$enable_systemd" = xcheck], [ AS_IF([systemctl --version >/dev/null 2>&1], [enable_systemd=yes], [enable_systemd=no]) ]) AC_MSG_CHECKING(for systemd support) AC_MSG_RESULT([$enable_systemd]) AS_IF([test "x$enable_systemd" = xyes], [ ZFS_INIT_SYSTEMD=systemd ZFS_MODULE_LOAD=modules-load.d DEFINE_SYSTEMD='--with systemd --define "_unitdir $(systemdunitdir)" --define "_presetdir $(systemdpresetdir)" --define "_generatordir $(systemdgeneratordir)"' modulesloaddir=$systemdmodulesloaddir ],[ DEFINE_SYSTEMD='--without systemd' ]) AC_SUBST(ZFS_INIT_SYSTEMD) AC_SUBST(ZFS_MODULE_LOAD) AC_SUBST(DEFINE_SYSTEMD) AC_SUBST(systemdunitdir) AC_SUBST(systemdpresetdir) AC_SUBST(systemdgeneratordir) AC_SUBST(modulesloaddir) ]) zfs-0.8.3/config/PaxHeaders.151519/Rules.am0000644000000000000000000000007413607166147016304 xustar000000000000000030 atime=1579730426.761054351 30 ctime=1579730471.330485352 zfs-0.8.3/config/Rules.am0000644016037001603700000000170713607166147016306 0ustar00hutter2hutter200000000000000# # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing AM_CFLAGS += $(NO_OMIT_FRAME_POINTER) AM_CFLAGS += $(DEBUG_CFLAGS) AM_CFLAGS += $(ASAN_CFLAGS) AM_CFLAGS += $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE AM_CPPFLAGS += -D_REENTRANT AM_CPPFLAGS += -D_FILE_OFFSET_BITS=64 AM_CPPFLAGS += -D_LARGEFILE64_SOURCE AM_CPPFLAGS += -DHAVE_LARGE_STACKS=1 AM_CPPFLAGS += -DTEXT_DOMAIN=\"zfs-linux-user\" AM_CPPFLAGS += -DLIBEXECDIR=\"$(libexecdir)\" AM_CPPFLAGS += -DRUNSTATEDIR=\"$(runstatedir)\" AM_CPPFLAGS += -DSBINDIR=\"$(sbindir)\" AM_CPPFLAGS += -DSYSCONFDIR=\"$(sysconfdir)\" AM_CPPFLAGS += $(DEBUG_CPPFLAGS) AM_CPPFLAGS += $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) AM_LDFLAGS += $(ASAN_LDFLAGS) zfs-0.8.3/config/PaxHeaders.151519/kernel-lookup-bdev.m40000644000000000000000000000007413612141515020626 xustar000000000000000030 atime=1579730378.227496159 30 ctime=1579730468.553396183 zfs-0.8.3/config/kernel-lookup-bdev.m40000644016037001603700000000171213612141515020624 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.27, lookup_bdev() was exported. dnl # 4.4.0-6.21 - x.y on Ubuntu, lookup_bdev() takes 2 arguments. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_LOOKUP_BDEV], [ ZFS_LINUX_TEST_SRC([lookup_bdev_1arg], [ #include ], [ lookup_bdev(NULL); ]) ZFS_LINUX_TEST_SRC([lookup_bdev_2args], [ #include ], [ lookup_bdev(NULL, FMODE_READ); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_BDEV], [ AC_MSG_CHECKING([whether lookup_bdev() wants 1 arg]) ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_1arg], [lookup_bdev], [fs/block_dev.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_1ARG_LOOKUP_BDEV, 1, [lookup_bdev() wants 1 arg]) ], [ AC_MSG_RESULT(no) AC_MSG_CHECKING([whether lookup_bdev() wants 2 args]) ZFS_LINUX_TEST_RESULT_SYMBOL([lookup_bdev_2args], [lookup_bdev], [fs/block_dev.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_2ARGS_LOOKUP_BDEV, 1, [lookup_bdev() wants 2 args]) ], [ AC_MSG_RESULT(no) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-generic_readlink.m40000644000000000000000000000007413612141515021664 xustar000000000000000030 atime=1579730378.236496447 30 ctime=1579730468.511394836 zfs-0.8.3/config/kernel-generic_readlink.m40000644016037001603700000000117513612141515021665 0ustar00hutter2hutter200000000000000dnl # dnl # 4.10 API dnl # dnl # NULL inode_operations.readlink implies generic_readlink(), which dnl # has been made static. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_READLINK_GLOBAL], [ ZFS_LINUX_TEST_SRC([generic_readlink_global], [ #include ],[ int i __attribute__ ((unused)); i = generic_readlink(NULL, NULL, 0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_GENERIC_READLINK_GLOBAL], [ AC_MSG_CHECKING([whether generic_readlink is global]) ZFS_LINUX_TEST_RESULT([generic_readlink_global], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_GENERIC_READLINK, 1, [generic_readlink is global]) ],[ AC_MSG_RESULT([no]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/install-sh0000644000000000000000000000013213612142772016661 xustar000000000000000030 mtime=1579730426.471045039 30 atime=1579730426.470045007 30 ctime=1579730468.770403151 zfs-0.8.3/config/install-sh0000755016037001603700000003253713612142772016700 0ustar00hutter2hutter200000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: zfs-0.8.3/config/PaxHeaders.151519/depcomp0000644000000000000000000000013213612143011016215 xustar000000000000000030 mtime=1579730441.530528549 30 atime=1579730444.404620827 30 ctime=1579730468.767403055 zfs-0.8.3/config/depcomp0000755016037001603700000004426713612143011016237 0ustar00hutter2hutter200000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: zfs-0.8.3/config/PaxHeaders.151519/kernel-blk-queue-max-segments.m40000644000000000000000000000007313612141515022676 xustar000000000000000030 atime=1579730378.248496831 29 ctime=1579730468.45639307 zfs-0.8.3/config/kernel-blk-queue-max-segments.m40000644016037001603700000000132613612141515022676 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.34 API change dnl # blk_queue_max_segments() consolidates blk_queue_max_hw_segments() dnl # and blk_queue_max_phys_segments(). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_MAX_SEGMENTS], [ ZFS_LINUX_TEST_SRC([blk_queue_max_segments], [ #include ], [ struct request_queue *q = NULL; (void) blk_queue_max_segments(q, BLK_MAX_SEGMENTS); ], [$NO_UNUSED_BUT_SET_VARIABLE]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_MAX_SEGMENTS], [ AC_MSG_CHECKING([whether blk_queue_max_segments() is available]) ZFS_LINUX_TEST_RESULT([blk_queue_max_segments], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_MAX_SEGMENTS, 1, [blk_queue_max_segments() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-access-ok-type.m40000644000000000000000000000007413612141515021226 xustar000000000000000030 atime=1579730378.260497217 30 ctime=1579730468.416391784 zfs-0.8.3/config/kernel-access-ok-type.m40000644016037001603700000000135313612141515021225 0ustar00hutter2hutter200000000000000dnl # dnl # Linux 5.0: access_ok() drops 'type' parameter: dnl # dnl # - access_ok(type, addr, size) dnl # + access_ok(addr, size) dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_ACCESS_OK_TYPE], [ ZFS_LINUX_TEST_SRC([access_ok_type], [ #include ],[ const void __user __attribute__((unused)) *addr = (void *) 0xdeadbeef; unsigned long __attribute__((unused)) size = 1; int error __attribute__((unused)) = access_ok(0, addr, size); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_ACCESS_OK_TYPE], [ AC_MSG_CHECKING([whether access_ok() has 'type' parameter]) ZFS_LINUX_TEST_RESULT([access_ok_type], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ACCESS_OK_TYPE, 1, [kernel has access_ok with 'type' parameter]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-invalidate-bdev-args.m40000644000000000000000000000007413612141515022367 xustar000000000000000030 atime=1579730378.231496287 30 ctime=1579730468.537395671 zfs-0.8.3/config/kernel-invalidate-bdev-args.m40000644016037001603700000000107713612141515022371 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.22 API change dnl # Unused destroy_dirty_buffers arg removed from prototype. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INVALIDATE_BDEV], [ ZFS_LINUX_TEST_SRC([invalidate_bdev], [ #include ],[ struct block_device *bdev = NULL; invalidate_bdev(bdev); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_INVALIDATE_BDEV], [ AC_MSG_CHECKING([whether invalidate_bdev() wants 1 arg]) ZFS_LINUX_TEST_RESULT([invalidate_bdev], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_1ARG_INVALIDATE_BDEV, 1, [invalidate_bdev() wants 1 arg]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-blk-queue-flush.m40000644000000000000000000000007313612141515021407 xustar000000000000000030 atime=1579730378.249496863 29 ctime=1579730468.45139291 zfs-0.8.3/config/kernel-blk-queue-flush.m40000644016037001603700000000420013612141515021401 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.36 API change dnl # In 2.6.36 kernels the blk_queue_ordered() interface has been dnl # replaced by the simpler blk_queue_flush(). However, while the dnl # old interface was available to all the new one is GPL-only. dnl # Thus in addition to detecting if this function is available dnl # we determine if it is GPL-only. If the GPL-only interface is dnl # there we implement our own compatibility function, otherwise dnl # we use the function. The hope is that long term this function dnl # will be opened up. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_FLUSH], [ ZFS_LINUX_TEST_SRC([blk_queue_flush], [ #include ], [ struct request_queue *q = NULL; (void) blk_queue_flush(q, REQ_FLUSH); ], [$NO_UNUSED_BUT_SET_VARIABLE], [$ZFS_META_LICENSE]) ZFS_LINUX_TEST_SRC([blk_queue_write_cache], [ #include #include ], [ struct request_queue *q = NULL; blk_queue_write_cache(q, true, true); ], [$NO_UNUSED_BUT_SET_VARIABLE], [$ZFS_META_LICENSE]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_FLUSH], [ AC_MSG_CHECKING([whether blk_queue_flush() is available]) ZFS_LINUX_TEST_RESULT([blk_queue_flush], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_FLUSH, 1, [blk_queue_flush() is available]) AC_MSG_CHECKING([whether blk_queue_flush() is GPL-only]) ZFS_LINUX_TEST_RESULT([blk_queue_flush_license], [ AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_FLUSH_GPL_ONLY, 1, [blk_queue_flush() is GPL-only]) ]) ],[ AC_MSG_RESULT(no) ]) dnl # dnl # 4.7 API change dnl # Replace blk_queue_flush with blk_queue_write_cache dnl # AC_MSG_CHECKING([whether blk_queue_write_cache() exists]) ZFS_LINUX_TEST_RESULT([blk_queue_write_cache], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_WRITE_CACHE, 1, [blk_queue_write_cache() exists]) AC_MSG_CHECKING([whether blk_queue_write_cache() is GPL-only]) ZFS_LINUX_TEST_RESULT([blk_queue_write_cache_license], [ AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY, 1, [blk_queue_write_cache() is GPL-only]) ]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/gettext.m40000644000000000000000000000007413607166132016613 xustar000000000000000030 atime=1579730378.266497409 30 ctime=1579730468.407391496 zfs-0.8.3/config/gettext.m40000644016037001603700000003422313607166132016614 0ustar00hutter2hutter200000000000000# gettext.m4 serial 70 (gettext-0.20) dnl Copyright (C) 1995-2014, 2016, 2018 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL must be one of 'external', 'use-libtool'. dnl INTLSYMBOL should be 'external' for packages other than GNU gettext, and dnl 'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value '$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported. ])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], [no], [yes])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes' dnl because some of the testsuite requires it. BUILD_INCLUDED_LIBINTL=yes dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) zfs-0.8.3/config/PaxHeaders.151519/kernel-in-compat-syscall.m40000644000000000000000000000007313612141515021735 xustar000000000000000030 atime=1579730378.233496351 29 ctime=1579730468.52339522 zfs-0.8.3/config/kernel-in-compat-syscall.m40000644016037001603700000000117313612141515021735 0ustar00hutter2hutter200000000000000dnl # dnl # 4.5 API change dnl # Added in_compat_syscall() which can be overridden on a per- dnl # architecture basis. Prior to this is_compat_task() was the dnl # provided interface. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_IN_COMPAT_SYSCALL], [ ZFS_LINUX_TEST_SRC([in_compat_syscall], [ #include ],[ in_compat_syscall(); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_IN_COMPAT_SYSCALL], [ AC_MSG_CHECKING([whether in_compat_syscall() is available]) ZFS_LINUX_TEST_RESULT([in_compat_syscall], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_IN_COMPAT_SYSCALL, 1, [in_compat_syscall() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-xattr-handler.m40000644000000000000000000000007413612141515021154 xustar000000000000000030 atime=1579730378.206495484 30 ctime=1579730468.634398784 zfs-0.8.3/config/kernel-xattr-handler.m40000644016037001603700000003173513612141515021162 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.35 API change, dnl # The 'struct xattr_handler' was constified in the generic dnl # super_block structure. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CONST_XATTR_HANDLER], [ ZFS_LINUX_TEST_SRC([const_xattr_handler], [ #include #include const struct xattr_handler xattr_test_handler = { .prefix = "test", .get = NULL, .set = NULL, }; const struct xattr_handler *xattr_handlers[] = { &xattr_test_handler, }; const struct super_block sb __attribute__ ((unused)) = { .s_xattr = xattr_handlers, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_CONST_XATTR_HANDLER], [ AC_MSG_CHECKING([whether super_block uses const struct xattr_handler]) ZFS_LINUX_TEST_RESULT([const_xattr_handler], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_CONST_XATTR_HANDLER, 1, [super_block uses const struct xattr_handler]) ],[ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # 4.5 API change, dnl # struct xattr_handler added new member "name". dnl # xattr_handler which matches to whole name rather than prefix should use dnl # "name" instead of "prefix", e.g. "system.posix_acl_access" dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_XATTR_HANDLER_NAME], [ ZFS_LINUX_TEST_SRC([xattr_handler_name], [ #include static const struct xattr_handler xops __attribute__ ((unused)) = { .name = XATTR_NAME_POSIX_ACL_ACCESS, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_XATTR_HANDLER_NAME], [ AC_MSG_CHECKING([whether xattr_handler has name]) ZFS_LINUX_TEST_RESULT([xattr_handler_name], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_HANDLER_NAME, 1, [xattr_handler has name]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # Supported xattr handler get() interfaces checked newest to oldest. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_XATTR_HANDLER_GET], [ ZFS_LINUX_TEST_SRC([xattr_handler_get_dentry_inode], [ #include int get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_get_xattr_handler], [ #include int get(const struct xattr_handler *handler, struct dentry *dentry, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_get_dentry], [ #include int get(struct dentry *dentry, const char *name, void *buffer, size_t size, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_get_inode], [ #include int get(struct inode *ip, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_XATTR_HANDLER_GET], [ dnl # dnl # 4.7 API change, dnl # The xattr_handler->get() callback was changed to take both dnl # dentry and inode. dnl # AC_MSG_CHECKING([whether xattr_handler->get() wants dentry and inode]) ZFS_LINUX_TEST_RESULT([xattr_handler_get_dentry_inode], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_GET_DENTRY_INODE, 1, [xattr_handler->get() wants both dentry and inode]) ],[ dnl # dnl # 4.4 API change, dnl # The xattr_handler->get() callback was changed to take a dnl # attr_handler, and handler_flags argument was removed and dnl # should be accessed by handler->flags. dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->get() wants xattr_handler]) ZFS_LINUX_TEST_RESULT([xattr_handler_get_xattr_handler], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_GET_HANDLER, 1, [xattr_handler->get() wants xattr_handler]) ],[ dnl # dnl # 2.6.33 API change, dnl # The xattr_handler->get() callback was changed dnl # to take a dentry instead of an inode, and a dnl # handler_flags argument was added. dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->get() wants dentry]) ZFS_LINUX_TEST_RESULT([xattr_handler_get_dentry], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_GET_DENTRY, 1, [xattr_handler->get() wants dentry]) ],[ dnl # dnl # Legacy 2.6.32 API dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->get() wants inode]) ZFS_LINUX_TEST_RESULT( [xattr_handler_get_inode], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_GET_INODE, 1, [xattr_handler->get() wants inode]) ],[ ZFS_LINUX_TEST_ERROR([xattr get()]) ]) ]) ]) ]) ]) dnl # dnl # Supported xattr handler set() interfaces checked newest to oldest. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_XATTR_HANDLER_SET], [ ZFS_LINUX_TEST_SRC([xattr_handler_set_dentry_inode], [ #include int set(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_set_xattr_handler], [ #include int set(const struct xattr_handler *handler, struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_set_dentry], [ #include int set(struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_set_inode], [ #include int set(struct inode *ip, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_XATTR_HANDLER_SET], [ dnl # dnl # 4.7 API change, dnl # The xattr_handler->set() callback was changed to take both dnl # dentry and inode. dnl # AC_MSG_CHECKING([whether xattr_handler->set() wants dentry and inode]) ZFS_LINUX_TEST_RESULT([xattr_handler_set_dentry_inode], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_SET_DENTRY_INODE, 1, [xattr_handler->set() wants both dentry and inode]) ],[ dnl # dnl # 4.4 API change, dnl # The xattr_handler->set() callback was changed to take a dnl # xattr_handler, and handler_flags argument was removed and dnl # should be accessed by handler->flags. dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->set() wants xattr_handler]) ZFS_LINUX_TEST_RESULT([xattr_handler_set_xattr_handler], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_SET_HANDLER, 1, [xattr_handler->set() wants xattr_handler]) ],[ dnl # dnl # 2.6.33 API change, dnl # The xattr_handler->set() callback was changed dnl # to take a dentry instead of an inode, and a dnl # handler_flags argument was added. dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->set() wants dentry]) ZFS_LINUX_TEST_RESULT([xattr_handler_set_dentry], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_SET_DENTRY, 1, [xattr_handler->set() wants dentry]) ],[ dnl # dnl # Legacy 2.6.32 API dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->set() wants inode]) ZFS_LINUX_TEST_RESULT( [xattr_handler_set_inode], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_SET_INODE, 1, [xattr_handler->set() wants inode]) ],[ ZFS_LINUX_TEST_ERROR([xattr set()]) ]) ]) ]) ]) ]) dnl # dnl # Supported xattr handler list() interfaces checked newest to oldest. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_XATTR_HANDLER_LIST], [ ZFS_LINUX_TEST_SRC([xattr_handler_list_simple], [ #include bool list(struct dentry *dentry) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_list_xattr_handler], [ #include size_t list(const struct xattr_handler *handler, struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_list_dentry], [ #include size_t list(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; ],[]) ZFS_LINUX_TEST_SRC([xattr_handler_list_inode], [ #include size_t list(struct inode *ip, char *lst, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_XATTR_HANDLER_LIST], [ dnl # 4.5 API change, dnl # The xattr_handler->list() callback was changed to take only a dnl # dentry and it only needs to return if it's accessible. AC_MSG_CHECKING([whether xattr_handler->list() wants simple]) ZFS_LINUX_TEST_RESULT([xattr_handler_list_simple], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_LIST_SIMPLE, 1, [xattr_handler->list() wants simple]) ],[ dnl # dnl # 4.4 API change, dnl # The xattr_handler->list() callback was changed to take a dnl # xattr_handler, and handler_flags argument was removed dnl # and should be accessed by handler->flags. dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->list() wants xattr_handler]) ZFS_LINUX_TEST_RESULT([xattr_handler_list_xattr_handler], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_LIST_HANDLER, 1, [xattr_handler->list() wants xattr_handler]) ],[ dnl # dnl # 2.6.33 API change, dnl # The xattr_handler->list() callback was changed dnl # to take a dentry instead of an inode, and a dnl # handler_flags argument was added. dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->list() wants dentry]) ZFS_LINUX_TEST_RESULT([xattr_handler_list_dentry], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_LIST_DENTRY, 1, [xattr_handler->list() wants dentry]) ],[ dnl # dnl # Legacy 2.6.32 API dnl # AC_MSG_RESULT(no) AC_MSG_CHECKING( [whether xattr_handler->list() wants inode]) ZFS_LINUX_TEST_RESULT( [xattr_handler_list_inode], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_XATTR_LIST_INODE, 1, [xattr_handler->list() wants inode]) ],[ ZFS_LINUX_TEST_ERROR([xattr list()]) ]) ]) ]) ]) ]) dnl # dnl # 3.7 API change, dnl # The posix_acl_{from,to}_xattr functions gained a new dnl # parameter: user_ns dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_FROM_XATTR_USERNS], [ ZFS_LINUX_TEST_SRC([posix_acl_from_xattr_userns], [ #include #include #include ],[ posix_acl_from_xattr(&init_user_ns, NULL, 0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_FROM_XATTR_USERNS], [ AC_MSG_CHECKING([whether posix_acl_from_xattr() needs user_ns]) ZFS_LINUX_TEST_RESULT([posix_acl_from_xattr_userns], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_POSIX_ACL_FROM_XATTR_USERNS, 1, [posix_acl_from_xattr() needs user_ns]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.9 API change, dnl # iops->{set,get,remove}xattr and generic_{set,get,remove}xattr are dnl # removed. xattr operations will directly go through sb->s_xattr. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_SETXATTR], [ ZFS_LINUX_TEST_SRC([have_generic_setxattr], [ #include #include static const struct inode_operations iops __attribute__ ((unused)) = { .setxattr = generic_setxattr }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_GENERIC_SETXATTR], [ AC_MSG_CHECKING([whether generic_setxattr() exists]) ZFS_LINUX_TEST_RESULT([have_generic_setxattr], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GENERIC_SETXATTR, 1, [generic_setxattr() exists]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_XATTR], [ ZFS_AC_KERNEL_SRC_CONST_XATTR_HANDLER ZFS_AC_KERNEL_SRC_XATTR_HANDLER_NAME ZFS_AC_KERNEL_SRC_XATTR_HANDLER_GET ZFS_AC_KERNEL_SRC_XATTR_HANDLER_SET ZFS_AC_KERNEL_SRC_XATTR_HANDLER_LIST ZFS_AC_KERNEL_SRC_POSIX_ACL_FROM_XATTR_USERNS ZFS_AC_KERNEL_SRC_GENERIC_SETXATTR ]) AC_DEFUN([ZFS_AC_KERNEL_XATTR], [ ZFS_AC_KERNEL_CONST_XATTR_HANDLER ZFS_AC_KERNEL_XATTR_HANDLER_NAME ZFS_AC_KERNEL_XATTR_HANDLER_GET ZFS_AC_KERNEL_XATTR_HANDLER_SET ZFS_AC_KERNEL_XATTR_HANDLER_LIST ZFS_AC_KERNEL_POSIX_ACL_FROM_XATTR_USERNS ZFS_AC_KERNEL_GENERIC_SETXATTR ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-vfs-iterate.m40000644000000000000000000000007413612141515020630 xustar000000000000000030 atime=1579730378.211495644 30 ctime=1579730468.628398592 zfs-0.8.3/config/kernel-vfs-iterate.m40000644016037001603700000000434713612141515020635 0ustar00hutter2hutter200000000000000AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_ITERATE], [ ZFS_LINUX_TEST_SRC([file_operations_iterate_shared], [ #include int iterate(struct file *filp, struct dir_context * context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate_shared = iterate, }; ],[]) ZFS_LINUX_TEST_SRC([file_operations_iterate], [ #include int iterate(struct file *filp, struct dir_context *context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate = iterate, }; #if defined(FMODE_KABI_ITERATE) #error "RHEL 7.5, FMODE_KABI_ITERATE interface" #endif ],[]) ZFS_LINUX_TEST_SRC([file_operations_readdir], [ #include int readdir(struct file *filp, void *entry, filldir_t func) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .readdir = readdir, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_ITERATE], [ dnl # dnl # 4.7 API change dnl # AC_MSG_CHECKING([whether fops->iterate_shared() is available]) ZFS_LINUX_TEST_RESULT([file_operations_iterate_shared], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_VFS_ITERATE_SHARED, 1, [fops->iterate_shared() is available]) ],[ AC_MSG_RESULT(no) dnl # dnl # 3.11 API change dnl # dnl # RHEL 7.5 compatibility; the fops.iterate() method was dnl # added to the file_operations structure but in order to dnl # maintain KABI compatibility all callers must set dnl # FMODE_KABI_ITERATE which is checked in iterate_dir(). dnl # When detected ignore this interface and fallback to dnl # to using fops.readdir() to retain KABI compatibility. dnl # AC_MSG_CHECKING([whether fops->iterate() is available]) ZFS_LINUX_TEST_RESULT([file_operations_iterate], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_VFS_ITERATE, 1, [fops->iterate() is available]) ],[ AC_MSG_RESULT(no) dnl # dnl # readdir interface introduced dnl # AC_MSG_CHECKING([whether fops->readdir() is available]) ZFS_LINUX_TEST_RESULT([file_operations_readdir], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_VFS_READDIR, 1, [fops->readdir() is available]) ],[ ZFS_LINUX_TEST_ERROR([vfs_iterate]) ]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-mkdir-umode-t.m40000644000000000000000000000007413612141515021055 xustar000000000000000030 atime=1579730378.225496095 30 ctime=1579730468.564396538 zfs-0.8.3/config/kernel-mkdir-umode-t.m40000644016037001603700000000176213612141515021060 0ustar00hutter2hutter200000000000000dnl # dnl # 3.3 API change dnl # The VFS .create, .mkdir and .mknod callbacks were updated to take a dnl # umode_t type rather than an int. The expectation is that any backport dnl # would also change all three prototypes. However, if it turns out that dnl # some distribution doesn't backport the whole thing this could be dnl # broken apart into three separate checks. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_MKDIR_UMODE_T], [ ZFS_LINUX_TEST_SRC([inode_operations_mkdir], [ #include int mkdir(struct inode *inode, struct dentry *dentry, umode_t umode) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .mkdir = mkdir, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_MKDIR_UMODE_T], [ AC_MSG_CHECKING([whether iops->create()/mkdir()/mknod() take umode_t]) ZFS_LINUX_TEST_RESULT([inode_operations_mkdir], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_MKDIR_UMODE_T, 1, [iops->create()/mkdir()/mknod() take umode_t]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-libssl.m40000644000000000000000000000007313607166132017372 xustar000000000000000030 atime=1579730378.183494744 29 ctime=1579730468.68440039 zfs-0.8.3/config/user-libssl.m40000644016037001603700000000053513607166132017373 0ustar00hutter2hutter200000000000000dnl # dnl # Check for libssl. Used for userspace password derivation via PBKDF2. dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_LIBSSL], [ LIBSSL= AC_CHECK_HEADER([openssl/evp.h], [], [AC_MSG_FAILURE([ *** evp.h missing, libssl-devel package required])]) AC_SUBST([LIBSSL], ["-lssl -lcrypto"]) AC_DEFINE([HAVE_LIBSSL], 1, [Define if you have libssl]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-libblkid.m40000644000000000000000000000007413607166132017657 xustar000000000000000030 atime=1579730378.184494777 30 ctime=1579730468.680400262 zfs-0.8.3/config/user-libblkid.m40000644016037001603700000000060213607166132017652 0ustar00hutter2hutter200000000000000dnl # dnl # Check for libblkid. Basic support for detecting ZFS pools dnl # has existing in blkid since 2008. dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_LIBBLKID], [ LIBBLKID= AC_CHECK_HEADER([blkid/blkid.h], [], [AC_MSG_FAILURE([ *** blkid.h missing, libblkid-devel package required])]) AC_SUBST([LIBBLKID], ["-lblkid"]) AC_DEFINE([HAVE_LIBBLKID], 1, [Define if you have libblkid]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bio-op.m40000644000000000000000000000007413612141515017564 xustar000000000000000030 atime=1579730378.252496961 30 ctime=1579730468.438392491 zfs-0.8.3/config/kernel-bio-op.m40000644016037001603700000000470213612141515017564 0ustar00hutter2hutter200000000000000dnl # dnl # Linux 4.8 API, dnl # dnl # The bio_op() helper was introduced as a replacement for explicitly dnl # checking the bio->bi_rw flags. The following checks are used to dnl # detect if a specific operation is supported. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_OPS], [ ZFS_LINUX_TEST_SRC([req_op_discard], [ #include ],[ int op __attribute__ ((unused)) = REQ_OP_DISCARD; ]) ZFS_LINUX_TEST_SRC([req_op_secure_erase], [ #include ],[ int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE; ]) ZFS_LINUX_TEST_SRC([req_op_flush], [ #include ],[ int op __attribute__ ((unused)) = REQ_OP_FLUSH; ]) ZFS_LINUX_TEST_SRC([bio_bi_opf], [ #include ],[ struct bio bio __attribute__ ((unused)); bio.bi_opf = 0; ]) ZFS_LINUX_TEST_SRC([bio_set_op_attrs], [ #include ],[ struct bio *bio __attribute__ ((unused)) = NULL; bio_set_op_attrs(bio, 0, 0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_REQ_OP_DISCARD], [ AC_MSG_CHECKING([whether REQ_OP_DISCARD is defined]) ZFS_LINUX_TEST_RESULT([req_op_discard], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_REQ_OP_DISCARD, 1, [REQ_OP_DISCARD is defined]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_REQ_OP_SECURE_ERASE], [ AC_MSG_CHECKING([whether REQ_OP_SECURE_ERASE is defined]) ZFS_LINUX_TEST_RESULT([req_op_secure_erase], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_REQ_OP_SECURE_ERASE, 1, [REQ_OP_SECURE_ERASE is defined]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_REQ_OP_FLUSH], [ AC_MSG_CHECKING([whether REQ_OP_FLUSH is defined]) ZFS_LINUX_TEST_RESULT([req_op_flush], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_REQ_OP_FLUSH, 1, [REQ_OP_FLUSH is defined]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_BI_OPF], [ AC_MSG_CHECKING([whether bio->bi_opf is defined]) ZFS_LINUX_TEST_RESULT([bio_bi_opf], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_BI_OPF, 1, [bio->bi_opf is defined]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_HAVE_BIO_SET_OP_ATTRS], [ AC_MSG_CHECKING([whether bio_set_op_attrs is available]) ZFS_LINUX_TEST_RESULT([bio_set_op_attrs], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_SET_OP_ATTRS, 1, [bio_set_op_attrs is available]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_OPS], [ ZFS_AC_KERNEL_REQ_OP_DISCARD ZFS_AC_KERNEL_REQ_OP_SECURE_ERASE ZFS_AC_KERNEL_REQ_OP_FLUSH ZFS_AC_KERNEL_BIO_BI_OPF ZFS_AC_KERNEL_HAVE_BIO_SET_OP_ATTRS ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-automount.m40000644000000000000000000000007413612141515020432 xustar000000000000000030 atime=1579730378.256497089 30 ctime=1579730468.422391979 zfs-0.8.3/config/kernel-automount.m40000644016037001603700000000152513612141515020432 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.37 API change dnl # The dops->d_automount() dentry operation was added as a clean dnl # solution to handling automounts. Prior to this cifs/nfs clients dnl # which required automount support would abuse the follow_link() dnl # operation on directories for this purpose. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_AUTOMOUNT], [ ZFS_LINUX_TEST_SRC([dentry_operations_d_automount], [ #include struct vfsmount *d_automount(struct path *p) { return NULL; } struct dentry_operations dops __attribute__ ((unused)) = { .d_automount = d_automount, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_AUTOMOUNT], [ AC_MSG_CHECKING([whether dops->d_automount() exists]) ZFS_LINUX_TEST_RESULT([dentry_operations_d_automount], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_AUTOMOUNT, 1, [dops->automount() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-kuid-helpers.m40000644000000000000000000000007413612141515020773 xustar000000000000000030 atime=1579730378.228496191 30 ctime=1579730468.549396055 zfs-0.8.3/config/kernel-kuid-helpers.m40000644016037001603700000000123413612141515020770 0ustar00hutter2hutter200000000000000dnl # dnl # 3.5 API change, dnl # Since usernamespaces were introduced in kernel version 3.5, it dnl # became necessary to go through one more level of indirection dnl # when dealing with uid/gid - namely the kuid type. dnl # dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_KUID_HELPERS], [ ZFS_LINUX_TEST_SRC([i_uid_read], [ #include ],[ struct inode *ip = NULL; (void) i_uid_read(ip); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_KUID_HELPERS], [ AC_MSG_CHECKING([whether i_(uid|gid)_(read|write) exist]) ZFS_LINUX_TEST_RESULT([i_uid_read], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KUID_HELPERS, 1, [i_(uid|gid)_(read|write) exist]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-file-dentry.m40000644000000000000000000000007413612141515020621 xustar000000000000000030 atime=1579730378.239496543 30 ctime=1579730468.495394321 zfs-0.8.3/config/kernel-file-dentry.m40000644016037001603700000000121513612141515020615 0ustar00hutter2hutter200000000000000dnl # dnl # 4.1 API change dnl # struct access file->f_path.dentry was replaced by accessor function dnl # since fix torvalds/linux@4bacc9c9234c ("overlayfs: Make f_path always dnl # point to the overlay and f_inode to the underlay"). dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_FILE_DENTRY], [ ZFS_LINUX_TEST_SRC([file_dentry], [ #include ],[ struct file *f = NULL; file_dentry(f); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_FILE_DENTRY], [ AC_MSG_CHECKING([whether file_dentry() is available]) ZFS_LINUX_TEST_RESULT([file_dentry], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FILE_DENTRY, 1, [file_dentry() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-fallocate.m40000644000000000000000000000007413612141515020331 xustar000000000000000030 atime=1579730378.240496575 30 ctime=1579730468.493394257 zfs-0.8.3/config/kernel-fallocate.m40000644016037001603700000000237713612141515020337 0ustar00hutter2hutter200000000000000dnl # dnl # The fallocate callback was moved from the inode_operations dnl # structure to the file_operations structure. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_FALLOCATE], [ dnl # Linux 2.6.38 - 3.x API ZFS_LINUX_TEST_SRC([file_fallocate], [ #include long test_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; ], []) dnl # Linux 2.6.x - 2.6.37 API ZFS_LINUX_TEST_SRC([inode_fallocate], [ #include long test_fallocate(struct inode *inode, int mode, loff_t offset, loff_t len) { return 0; } static const struct inode_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; ], []) ]) AC_DEFUN([ZFS_AC_KERNEL_FALLOCATE], [ AC_MSG_CHECKING([whether fops->fallocate() exists]) ZFS_LINUX_TEST_RESULT([file_fallocate], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FILE_FALLOCATE, 1, [fops->fallocate() exists]) ],[ AC_MSG_RESULT(no) ]) AC_MSG_CHECKING([whether iops->fallocate() exists]) ZFS_LINUX_TEST_RESULT([inode_fallocate], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INODE_FALLOCATE, 1, [fops->fallocate() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-userns-capabilities.m40000644000000000000000000000007213612141515022343 xustar000000000000000029 atime=1579730378.21449574 29 ctime=1579730468.61739824 zfs-0.8.3/config/kernel-userns-capabilities.m40000644016037001603700000000411513612141515022343 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.38 API change dnl # ns_capable() was introduced dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_NS_CAPABLE], [ ZFS_LINUX_TEST_SRC([ns_capable], [ #include ],[ ns_capable((struct user_namespace *)NULL, CAP_SYS_ADMIN); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_NS_CAPABLE], [ AC_MSG_CHECKING([whether ns_capable exists]) ZFS_LINUX_TEST_RESULT([ns_capable], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NS_CAPABLE, 1, [ns_capable exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.39 API change dnl # struct user_namespace was added to struct cred_t as dnl # cred->user_ns member dnl # Note that current_user_ns() was added in 2.6.28. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CRED_USER_NS], [ ZFS_LINUX_TEST_SRC([cred_user_ns], [ #include ],[ struct cred cr; cr.user_ns = (struct user_namespace *)NULL; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_CRED_USER_NS], [ AC_MSG_CHECKING([whether cred_t->user_ns exists]) ZFS_LINUX_TEST_RESULT([cred_user_ns], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CRED_USER_NS, 1, [cred_t->user_ns exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.4 API change dnl # kuid_has_mapping() and kgid_has_mapping() were added to distinguish dnl # between internal kernel uids/gids and user namespace uids/gids. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_KUID_HAS_MAPPING], [ ZFS_LINUX_TEST_SRC([kuid_has_mapping], [ #include ],[ kuid_has_mapping((struct user_namespace *)NULL, KUIDT_INIT(0)); kgid_has_mapping((struct user_namespace *)NULL, KGIDT_INIT(0)); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_KUID_HAS_MAPPING], [ AC_MSG_CHECKING([whether kuid_has_mapping/kgid_has_mapping exist]) ZFS_LINUX_TEST_RESULT([kuid_has_mapping], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KUID_HAS_MAPPING, 1, [kuid_has_mapping/kgid_has_mapping exist]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_USERNS_CAPABILITIES], [ ZFS_AC_KERNEL_SRC_NS_CAPABLE ZFS_AC_KERNEL_SRC_CRED_USER_NS ZFS_AC_KERNEL_SRC_KUID_HAS_MAPPING ]) AC_DEFUN([ZFS_AC_KERNEL_USERNS_CAPABILITIES], [ ZFS_AC_KERNEL_NS_CAPABLE ZFS_AC_KERNEL_CRED_USER_NS ZFS_AC_KERNEL_KUID_HAS_MAPPING ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-tmpfile.m40000644000000000000000000000007413612141515020037 xustar000000000000000030 atime=1579730378.216495804 30 ctime=1579730468.605397853 zfs-0.8.3/config/kernel-tmpfile.m40000644016037001603700000000117413612141515020037 0ustar00hutter2hutter200000000000000dnl # dnl # 3.11 API change dnl # Add support for i_op->tmpfile dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_TMPFILE], [ ZFS_LINUX_TEST_SRC([inode_operations_tmpfile], [ #include int tmpfile(struct inode *inode, struct dentry *dentry, umode_t mode) { return 0; } static struct inode_operations iops __attribute__ ((unused)) = { .tmpfile = tmpfile, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_TMPFILE], [ AC_MSG_CHECKING([whether i_op->tmpfile() exists]) ZFS_LINUX_TEST_RESULT([inode_operations_tmpfile], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_TMPFILE, 1, [i_op->tmpfile() exists]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-pde-data.m40000644000000000000000000000007413612141515020056 xustar000000000000000030 atime=1579730378.224496062 30 ctime=1579730468.573396826 zfs-0.8.3/config/kernel-pde-data.m40000644016037001603700000000071613612141515020057 0ustar00hutter2hutter200000000000000dnl # dnl # 3.10 API change, dnl # PDE is replaced by PDE_DATA dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_PDE_DATA], [ ZFS_LINUX_TEST_SRC([pde_data], [ #include ], [ PDE_DATA(NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_PDE_DATA], [ AC_MSG_CHECKING([whether PDE_DATA() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([pde_data], [PDE_DATA], [], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PDE_DATA, 1, [PDE_DATA is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-shrink.m40000644000000000000000000000007413612141515017675 xustar000000000000000030 atime=1579730378.217495836 30 ctime=1579730468.597397597 zfs-0.8.3/config/kernel-shrink.m40000644016037001603700000002105113612141515017671 0ustar00hutter2hutter200000000000000dnl # dnl # 3.1 API change dnl # The super_block structure now stores a per-filesystem shrinker. dnl # This interface is preferable because it can be used to specifically dnl # target only the zfs filesystem for pruning. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SUPER_BLOCK_S_SHRINK], [ ZFS_LINUX_TEST_SRC([super_block_s_shrink], [ #include int shrink(struct shrinker *s, struct shrink_control *sc) { return 0; } static const struct super_block sb __attribute__ ((unused)) = { .s_shrink.shrink = shrink, .s_shrink.seeks = DEFAULT_SEEKS, .s_shrink.batch = 0, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_SUPER_BLOCK_S_SHRINK], [ AC_MSG_CHECKING([whether super_block has s_shrink]) ZFS_LINUX_TEST_RESULT([super_block_s_shrink], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SHRINK, 1, [struct super_block has s_shrink]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.3 API change dnl # The super_block structure was changed to use an hlist_node instead dnl # of a list_head for the .s_instance linkage. dnl # dnl # This was done in part to resolve a race in the iterate_supers_type() dnl # function which was introduced in Linux 3.0 kernel. The iterator dnl # was supposed to provide a safe way to call an arbitrary function on dnl # all super blocks of a specific type. Unfortunately, because a dnl # list_head was used it was possible for iterate_supers_type() to dnl # get stuck spinning a super block which was just deactivated. dnl # dnl # This can occur because when the list head is removed from the dnl # fs_supers list it is reinitialized to point to itself. If the dnl # iterate_supers_type() function happened to be processing the dnl # removed list_head it will get stuck spinning on that list_head. dnl # dnl # To resolve the issue for existing 3.0 - 3.2 kernels we detect when dnl # a list_head is used. Then to prevent the spinning from occurring dnl # the .next pointer is set to the fs_supers list_head which ensures dnl # the iterate_supers_type() function will always terminate. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SUPER_BLOCK_S_INSTANCES_LIST_HEAD], [ ZFS_LINUX_TEST_SRC([super_block_s_instances_list_head], [ #include ],[ struct super_block sb __attribute__ ((unused)); INIT_LIST_HEAD(&sb.s_instances); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SUPER_BLOCK_S_INSTANCES_LIST_HEAD], [ AC_MSG_CHECKING([whether super_block has s_instances list_head]) ZFS_LINUX_TEST_RESULT([super_block_s_instances_list_head], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_S_INSTANCES_LIST_HEAD, 1, [struct super_block has s_instances list_head]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_NR_CACHED_OBJECTS], [ ZFS_LINUX_TEST_SRC([nr_cached_objects], [ #include int nr_cached_objects(struct super_block *sb) { return 0; } static const struct super_operations sops __attribute__ ((unused)) = { .nr_cached_objects = nr_cached_objects, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_NR_CACHED_OBJECTS], [ AC_MSG_CHECKING([whether sops->nr_cached_objects() exists]) ZFS_LINUX_TEST_RESULT([nr_cached_objects], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NR_CACHED_OBJECTS, 1, [sops->nr_cached_objects() exists]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_FREE_CACHED_OBJECTS], [ ZFS_LINUX_TEST_SRC([free_cached_objects], [ #include void free_cached_objects(struct super_block *sb, int x) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .free_cached_objects = free_cached_objects, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_FREE_CACHED_OBJECTS], [ AC_MSG_CHECKING([whether sops->free_cached_objects() exists]) ZFS_LINUX_TEST_RESULT([free_cached_objects], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FREE_CACHED_OBJECTS, 1, [sops->free_cached_objects() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.12 API change dnl # The nid member was added to struct shrink_control to support dnl # NUMA-aware shrinkers. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SHRINK_CONTROL_HAS_NID], [ ZFS_LINUX_TEST_SRC([shrink_control_nid], [ #include ],[ struct shrink_control sc __attribute__ ((unused)); unsigned long scnidsize __attribute__ ((unused)) = sizeof(sc.nid); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SHRINK_CONTROL_HAS_NID], [ AC_MSG_CHECKING([whether shrink_control has nid]) ZFS_LINUX_TEST_RESULT([shrink_control_nid], [ AC_MSG_RESULT(yes) AC_DEFINE(SHRINK_CONTROL_HAS_NID, 1, [struct shrink_control has nid]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_SHRINKER_CALLBACK], [ ZFS_LINUX_TEST_SRC([shrinker_cb_2arg], [ #include int shrinker_cb(int nr_to_scan, gfp_t gfp_mask) { return 0; } ],[ struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ]) ZFS_LINUX_TEST_SRC([shrinker_cb_3arg], [ #include int shrinker_cb(struct shrinker *shrink, int nr_to_scan, gfp_t gfp_mask) { return 0; } ],[ struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ]) ZFS_LINUX_TEST_SRC([shrinker_cb_shrink_control], [ #include int shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } ],[ struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ]) ZFS_LINUX_TEST_SRC([shrinker_cb_shrink_control_split], [ #include unsigned long shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } ],[ struct shrinker cache_shrinker = { .count_objects = shrinker_cb, .scan_objects = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SHRINKER_CALLBACK],[ dnl # dnl # 2.6.23 to 2.6.34 API change dnl # ->shrink(int nr_to_scan, gfp_t gfp_mask) dnl # AC_MSG_CHECKING([whether old 2-argument shrinker exists]) ZFS_LINUX_TEST_RESULT([shrinker_cb_2arg], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_2ARGS_OLD_SHRINKER_CALLBACK, 1, [old shrinker callback wants 2 args]) ],[ AC_MSG_RESULT(no) dnl # dnl # 2.6.35 - 2.6.39 API change dnl # ->shrink(struct shrinker *, dnl # int nr_to_scan, gfp_t gfp_mask) dnl # AC_MSG_CHECKING([whether old 3-argument shrinker exists]) ZFS_LINUX_TEST_RESULT([shrinker_cb_3arg], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_3ARGS_SHRINKER_CALLBACK, 1, [old shrinker callback wants 3 args]) ],[ AC_MSG_RESULT(no) dnl # dnl # 3.0 - 3.11 API change dnl # ->shrink(struct shrinker *, dnl # struct shrink_control *sc) dnl # AC_MSG_CHECKING( [whether new 2-argument shrinker exists]) ZFS_LINUX_TEST_RESULT([shrinker_cb_shrink_control], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_2ARGS_NEW_SHRINKER_CALLBACK, 1, [new shrinker callback wants 2 args]) ],[ AC_MSG_RESULT(no) dnl # dnl # 3.12 API change, dnl # ->shrink() is logically split in to dnl # ->count_objects() and ->scan_objects() dnl # AC_MSG_CHECKING( [whether ->count_objects callback exists]) ZFS_LINUX_TEST_RESULT( [shrinker_cb_shrink_control_split], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SPLIT_SHRINKER_CALLBACK, 1, [->count_objects exists]) ],[ ZFS_LINUX_TEST_ERROR([shrinker]) ]) ]) ]) ]) ]) dnl # dnl # 2.6.39 API change, dnl # Shrinker adjust to use common shrink_control structure. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SHRINK_CONTROL_STRUCT], [ ZFS_LINUX_TEST_SRC([shrink_control_struct], [ #include ],[ struct shrink_control sc __attribute__ ((unused)); sc.nr_to_scan = 0; sc.gfp_mask = GFP_KERNEL; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SHRINK_CONTROL_STRUCT], [ AC_MSG_CHECKING([whether struct shrink_control exists]) ZFS_LINUX_TEST_RESULT([shrink_control_struct], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SHRINK_CONTROL_STRUCT, 1, [struct shrink_control exists]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_SHRINKER], [ ZFS_AC_KERNEL_SRC_SUPER_BLOCK_S_SHRINK ZFS_AC_KERNEL_SRC_SUPER_BLOCK_S_INSTANCES_LIST_HEAD ZFS_AC_KERNEL_SRC_NR_CACHED_OBJECTS ZFS_AC_KERNEL_SRC_FREE_CACHED_OBJECTS ZFS_AC_KERNEL_SRC_SHRINK_CONTROL_HAS_NID ZFS_AC_KERNEL_SRC_SHRINKER_CALLBACK ZFS_AC_KERNEL_SRC_SHRINK_CONTROL_STRUCT ]) AC_DEFUN([ZFS_AC_KERNEL_SHRINKER], [ ZFS_AC_KERNEL_SUPER_BLOCK_S_SHRINK ZFS_AC_KERNEL_SUPER_BLOCK_S_INSTANCES_LIST_HEAD ZFS_AC_KERNEL_NR_CACHED_OBJECTS ZFS_AC_KERNEL_FREE_CACHED_OBJECTS ZFS_AC_KERNEL_SHRINK_CONTROL_HAS_NID ZFS_AC_KERNEL_SHRINKER_CALLBACK ZFS_AC_KERNEL_SHRINK_CONTROL_STRUCT ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-discard-granularity.m40000644000000000000000000000007413612141515022347 xustar000000000000000030 atime=1579730378.241496607 30 ctime=1579730468.487394065 zfs-0.8.3/config/kernel-discard-granularity.m40000644016037001603700000000116113612141515022343 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.33 API change dnl # Discard granularity and alignment restrictions may now be set. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_DISCARD_GRANULARITY], [ ZFS_LINUX_TEST_SRC([discard_granularity], [ #include ],[ struct queue_limits ql __attribute__ ((unused)); ql.discard_granularity = 0; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_DISCARD_GRANULARITY], [ AC_MSG_CHECKING([whether ql->discard_granularity is available]) ZFS_LINUX_TEST_RESULT([discard_granularity], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_DISCARD_GRANULARITY, 1, [ql->discard_granularity is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-rename.m40000644000000000000000000000007413612141515017646 xustar000000000000000030 atime=1579730378.223496029 30 ctime=1579730468.577396954 zfs-0.8.3/config/kernel-rename.m40000644016037001603700000000142313612141515017643 0ustar00hutter2hutter200000000000000dnl # dnl # 4.9 API change, dnl # iops->rename2() merged into iops->rename(), and iops->rename() now wants dnl # flags. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_RENAME_WANTS_FLAGS], [ ZFS_LINUX_TEST_SRC([inode_operations_rename], [ #include int rename_fn(struct inode *sip, struct dentry *sdp, struct inode *tip, struct dentry *tdp, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .rename = rename_fn, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_RENAME_WANTS_FLAGS], [ AC_MSG_CHECKING([whether iops->rename() wants flags]) ZFS_LINUX_TEST_RESULT([inode_operations_rename], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_RENAME_WANTS_FLAGS, 1, [iops->rename() wants flags]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-fsync.m40000644000000000000000000000007413612141515017521 xustar000000000000000030 atime=1579730378.237496479 30 ctime=1579730468.507394708 zfs-0.8.3/config/kernel-fsync.m40000644016037001603700000000336113612141515017521 0ustar00hutter2hutter200000000000000dnl # dnl # Check file_operations->fsync interface. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_FSYNC], [ ZFS_LINUX_TEST_SRC([fsync_with_dentry], [ #include int test_fsync(struct file *f, struct dentry *dentry, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; ],[]) ZFS_LINUX_TEST_SRC([fsync_without_dentry], [ #include int test_fsync(struct file *f, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; ],[]) ZFS_LINUX_TEST_SRC([fsync_range], [ #include int test_fsync(struct file *f, loff_t a, loff_t b, int c) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_FSYNC], [ dnl # dnl # Linux 2.6.x - 2.6.34 API dnl # AC_MSG_CHECKING([whether fops->fsync() wants dentry]) ZFS_LINUX_TEST_RESULT([fsync_with_dentry], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_FSYNC_WITH_DENTRY, 1, [fops->fsync() with dentry]) ],[ AC_MSG_RESULT([no]) dnl # dnl # Linux 2.6.35 - Linux 3.0 API dnl # AC_MSG_CHECKING([whether fops->fsync() wants no dentry]) ZFS_LINUX_TEST_RESULT([fsync_without_dentry], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_FSYNC_WITHOUT_DENTRY, 1, [fops->fsync() without dentry]) ],[ AC_MSG_RESULT([no]) dnl # dnl # Linux 3.1 - 3.x API dnl # AC_MSG_CHECKING([whether fops->fsync() wants range]) ZFS_LINUX_TEST_RESULT([fsync_range], [ AC_MSG_RESULT([range]) AC_DEFINE(HAVE_FSYNC_RANGE, 1, [fops->fsync() with range]) ],[ ZFS_LINUX_TEST_ERROR([fops->fsync]) ]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/lib-ld.m40000644000000000000000000000007413607166132016272 xustar000000000000000030 atime=1579730378.199495258 30 ctime=1579730468.641399011 zfs-0.8.3/config/lib-ld.m40000644016037001603700000001237213607166132016274 0ustar00hutter2hutter200000000000000# lib-ld.m4 serial 9 dnl Copyright (C) 1996-2003, 2009-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Subroutines of libtool.m4, dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid dnl collision with libtool.m4. dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 /dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi if test -n "$LD"; then AC_MSG_CHECKING([for ld]) elif test "$GCC" = yes; then AC_MSG_CHECKING([for ld used by $CC]) elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi if test -n "$LD"; then # Let the user override the test with a path. : else AC_CACHE_VAL([acl_cv_path_LD], [ acl_cv_path_LD= # Final result of this test ac_prog=ld # Program to search in $PATH if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) acl_output=`($CC -print-prog-name=ld) 2>&5` ;; esac case $acl_output in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` done # Got the pathname. No search in PATH is needed. acl_cv_path_LD="$acl_output" ac_prog= ;; "") # If it fails, then pretend we aren't using GCC. ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac fi if test -n "$ac_prog"; then # Search for $ac_prog in $PATH. acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 int show_options(struct seq_file * x, struct dentry * y) { return 0; }; static struct super_operations sops __attribute__ ((unused)) = { .show_options = show_options, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_SHOW_OPTIONS], [ AC_MSG_CHECKING([whether sops->show_options() wants dentry]) ZFS_LINUX_TEST_RESULT([super_operations_show_options], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_SHOW_OPTIONS_WITH_DENTRY, 1, [sops->show_options() with dentry]) ],[ AC_MSG_RESULT([no]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/always-compiler-options.m40000644000000000000000000000007413607166132021730 xustar000000000000000030 atime=1579730378.275497699 30 ctime=1579730468.390390949 zfs-0.8.3/config/always-compiler-options.m40000644016037001603700000001045313607166132021730 0ustar00hutter2hutter200000000000000dnl # dnl # Enabled -fsanitize=address if supported by gcc. dnl # dnl # LDFLAGS needs -fsanitize=address at all times so libraries compiled with dnl # it will be linked successfully. CFLAGS will vary by binary being built. dnl # dnl # The ASAN_OPTIONS environment variable can be used to further control dnl # the behavior of binaries and libraries build with -fsanitize=address. dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_ASAN], [ AC_MSG_CHECKING([whether to build with -fsanitize=address support]) AC_ARG_ENABLE([asan], [AS_HELP_STRING([--enable-asan], [Enable -fsanitize=address support @<:@default=no@:>@])], [], [enable_asan=no]) AM_CONDITIONAL([ASAN_ENABLED], [test x$enable_asan = xyes]) AC_SUBST([ASAN_ENABLED], [$enable_asan]) AC_MSG_RESULT($enable_asan) AS_IF([ test "$enable_asan" = "yes" ], [ AC_MSG_CHECKING([whether $CC supports -fsanitize=address]) saved_cflags="$CFLAGS" CFLAGS="$CFLAGS -fsanitize=address" AC_LINK_IFELSE([ AC_LANG_SOURCE([[ int main() { return 0; } ]]) ], [ ASAN_CFLAGS="-fsanitize=address" ASAN_LDFLAGS="-fsanitize=address" ASAN_ZFS="_with_asan" AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([$CC does not support -fsanitize=address]) ]) CFLAGS="$saved_cflags" ], [ ASAN_CFLAGS="" ASAN_LDFLAGS="" ASAN_ZFS="_without_asan" ]) AC_SUBST([ASAN_CFLAGS]) AC_SUBST([ASAN_LDFLAGS]) AC_SUBST([ASAN_ZFS]) ]) dnl # dnl # Check if gcc supports -Wframe-larger-than= option. dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_FRAME_LARGER_THAN], [ AC_MSG_CHECKING([whether $CC supports -Wframe-larger-than=]) saved_flags="$CFLAGS" CFLAGS="$CFLAGS -Wframe-larger-than=4096" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ FRAME_LARGER_THAN="-Wframe-larger-than=4096" AC_MSG_RESULT([yes]) ], [ FRAME_LARGER_THAN="" AC_MSG_RESULT([no]) ]) CFLAGS="$saved_flags" AC_SUBST([FRAME_LARGER_THAN]) ]) dnl # dnl # Check if gcc supports -Wno-format-truncation option. dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_FORMAT_TRUNCATION], [ AC_MSG_CHECKING([whether $CC supports -Wno-format-truncation]) saved_flags="$CFLAGS" CFLAGS="$CFLAGS -Wno-format-truncation" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ NO_FORMAT_TRUNCATION=-Wno-format-truncation AC_MSG_RESULT([yes]) ], [ NO_FORMAT_TRUNCATION= AC_MSG_RESULT([no]) ]) CFLAGS="$saved_flags" AC_SUBST([NO_FORMAT_TRUNCATION]) ]) dnl # dnl # Check if gcc supports -Wno-bool-compare option. dnl # dnl # We actually invoke gcc with the -Wbool-compare option dnl # and infer the 'no-' version does or doesn't exist based upon dnl # the results. This is required because when checking any of dnl # no- prefixed options gcc always returns success. dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_BOOL_COMPARE], [ AC_MSG_CHECKING([whether $CC supports -Wno-bool-compare]) saved_flags="$CFLAGS" CFLAGS="$CFLAGS -Wbool-compare" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ NO_BOOL_COMPARE=-Wno-bool-compare AC_MSG_RESULT([yes]) ], [ NO_BOOL_COMPARE= AC_MSG_RESULT([no]) ]) CFLAGS="$saved_flags" AC_SUBST([NO_BOOL_COMPARE]) ]) dnl # dnl # Check if gcc supports -Wno-unused-but-set-variable option. dnl # dnl # We actually invoke gcc with the -Wunused-but-set-variable option dnl # and infer the 'no-' version does or doesn't exist based upon dnl # the results. This is required because when checking any of dnl # no- prefixed options gcc always returns success. dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_UNUSED_BUT_SET_VARIABLE], [ AC_MSG_CHECKING([whether $CC supports -Wno-unused-but-set-variable]) saved_flags="$CFLAGS" CFLAGS="$CFLAGS -Wunused-but-set-variable" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ NO_UNUSED_BUT_SET_VARIABLE=-Wno-unused-but-set-variable AC_MSG_RESULT([yes]) ], [ NO_UNUSED_BUT_SET_VARIABLE= AC_MSG_RESULT([no]) ]) CFLAGS="$saved_flags" AC_SUBST([NO_UNUSED_BUT_SET_VARIABLE]) ]) dnl # dnl # Check if gcc supports -fno-omit-frame-pointer option. dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_CC_NO_OMIT_FRAME_POINTER], [ AC_MSG_CHECKING([whether $CC supports -fno-omit-frame-pointer]) saved_flags="$CFLAGS" CFLAGS="$CFLAGS -fno-omit-frame-pointer" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [ NO_OMIT_FRAME_POINTER=-fno-omit-frame-pointer AC_MSG_RESULT([yes]) ], [ NO_OMIT_FRAME_POINTER= AC_MSG_RESULT([no]) ]) CFLAGS="$saved_flags" AC_SUBST([NO_OMIT_FRAME_POINTER]) ]) zfs-0.8.3/config/PaxHeaders.151519/progtest.m40000644000000000000000000000007413607166132016776 xustar000000000000000030 atime=1579730378.187494874 30 ctime=1579730468.669399908 zfs-0.8.3/config/progtest.m40000644016037001603700000000602413607166132016775 0ustar00hutter2hutter200000000000000# progtest.m4 serial 7 (gettext-0.18.2) dnl Copyright (C) 1996-2003, 2005, 2008-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL([ac_cv_path_$1], [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$][$1]) else AC_MSG_RESULT([no]) fi AC_SUBST([$1])dnl ]) zfs-0.8.3/config/PaxHeaders.151519/ltsugar.m40000644000000000000000000000013213612142730016575 xustar000000000000000030 mtime=1579730392.482953827 30 atime=1579730397.034099942 30 ctime=1579730468.653399395 zfs-0.8.3/config/ltsugar.m40000644016037001603700000001042413612142730016600 0ustar00hutter2hutter200000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bdev-logical-size.m40000644000000000000000000000007413612141515021677 xustar000000000000000030 atime=1579730378.255497057 30 ctime=1579730468.425392075 zfs-0.8.3/config/kernel-bdev-logical-size.m40000644016037001603700000000151113612141515021672 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.30 API change dnl # bdev_hardsect_size() replaced with bdev_logical_block_size(). While dnl # it has been true for a while that there was no strict 1:1 mapping dnl # between physical sector size and logical block size this change makes dnl # it explicit. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BDEV_LOGICAL_BLOCK_SIZE], [ ZFS_LINUX_TEST_SRC([bdev_logical_block_size], [ #include ],[ struct block_device *bdev = NULL; bdev_logical_block_size(bdev); ], [$NO_UNUSED_BUT_SET_VARIABLE]) ]) AC_DEFUN([ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE], [ AC_MSG_CHECKING([whether bdev_logical_block_size() is available]) ZFS_LINUX_TEST_RESULT([bdev_logical_block_size], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BDEV_LOGICAL_BLOCK_SIZE, 1, [bdev_logical_block_size() is available]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/ltversion.m40000644000000000000000000000013213612142731017142 xustar000000000000000030 mtime=1579730393.911999706 30 atime=1579730397.034099942 30 ctime=1579730468.655399459 zfs-0.8.3/config/ltversion.m40000644016037001603700000000127713612142731017153 0ustar00hutter2hutter200000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # Generated from ltversion.in. # serial 3017 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.2.6b]) m4_define([LT_PACKAGE_REVISION], [1.3017]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6b' macro_revision='1.3017' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-is_owner_or_cap.m40000644000000000000000000000007413612141515021547 xustar000000000000000030 atime=1579730378.230496255 30 ctime=1579730468.539395735 zfs-0.8.3/config/kernel-is_owner_or_cap.m40000644016037001603700000000212713612141515021546 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.39 API change, dnl # The is_owner_or_cap() macro was renamed to inode_owner_or_capable(), dnl # This is used for permission checks in the xattr and file attribute call dnl # paths. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OWNER_OR_CAPABLE], [ ZFS_LINUX_TEST_SRC([inode_owner_or_capable], [ #include ],[ struct inode *ip = NULL; (void) inode_owner_or_capable(ip); ]) ZFS_LINUX_TEST_SRC([is_owner_or_cap], [ #include #include ],[ struct inode *ip = NULL; (void) is_owner_or_cap(ip); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE], [ AC_MSG_CHECKING([whether inode_owner_or_capable() exists]) ZFS_LINUX_TEST_RESULT([inode_owner_or_capable], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE, 1, [inode_owner_or_capable() exists]) ],[ AC_MSG_RESULT(no) AC_MSG_CHECKING([whether is_owner_or_cap() exists]) ZFS_LINUX_TEST_RESULT([is_owner_or_cap], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_IS_OWNER_OR_CAP, 1, [is_owner_or_cap() exists]) ],[ ZFS_LINUX_TEST_ERROR([capability]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user.m40000644000000000000000000000007313612141512016073 xustar000000000000000029 atime=1579730378.18149468 30 ctime=1579730468.706401097 zfs-0.8.3/config/user.m40000644016037001603700000000167613612141512016103 0ustar00hutter2hutter200000000000000dnl # dnl # Default ZFS user configuration dnl # AC_DEFUN([ZFS_AC_CONFIG_USER], [ ZFS_AC_CONFIG_USER_GETTEXT ZFS_AC_CONFIG_USER_MOUNT_HELPER ZFS_AC_CONFIG_USER_UDEV ZFS_AC_CONFIG_USER_SYSTEMD ZFS_AC_CONFIG_USER_SYSVINIT ZFS_AC_CONFIG_USER_DRACUT ZFS_AC_CONFIG_USER_ZLIB ZFS_AC_CONFIG_USER_LIBUUID ZFS_AC_CONFIG_USER_LIBTIRPC ZFS_AC_CONFIG_USER_LIBBLKID ZFS_AC_CONFIG_USER_LIBUDEV ZFS_AC_CONFIG_USER_LIBSSL ZFS_AC_CONFIG_USER_LIBAIO ZFS_AC_CONFIG_USER_RUNSTATEDIR ZFS_AC_CONFIG_USER_MAKEDEV_IN_SYSMACROS ZFS_AC_CONFIG_USER_MAKEDEV_IN_MKDEV ZFS_AC_CONFIG_USER_ZFSEXEC ZFS_AC_TEST_FRAMEWORK AC_CHECK_FUNCS([mlockall strlcat strlcpy]) ]) dnl # dnl # Setup the environment for the ZFS Test Suite. Currently only dnl # Linux style systems are supported but this infrastructure can dnl # be extended to support other platforms if needed. dnl # AC_DEFUN([ZFS_AC_TEST_FRAMEWORK], [ ZONENAME="echo global" AC_SUBST(ZONENAME) AC_SUBST(RM) ]) zfs-0.8.3/config/PaxHeaders.151519/ax_code_coverage.m40000644000000000000000000000007413612141512020373 xustar000000000000000030 atime=1579730378.272497603 30 ctime=1579730468.397391176 zfs-0.8.3/config/ax_code_coverage.m40000644016037001603700000002706413612141512020401 0ustar00hutter2hutter200000000000000# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_code_coverage.html # =========================================================================== # # SYNOPSIS # # AX_CODE_COVERAGE() # # DESCRIPTION # # Defines CODE_COVERAGE_CPPFLAGS, CODE_COVERAGE_CFLAGS, # CODE_COVERAGE_CXXFLAGS and CODE_COVERAGE_LIBS which should be included # in the CPPFLAGS, CFLAGS CXXFLAGS and LIBS/LIBADD variables of every # build target (program or library) which should be built with code # coverage support. Also defines CODE_COVERAGE_RULES which should be # substituted in your Makefile; and $enable_code_coverage which can be # used in subsequent configure output. CODE_COVERAGE_ENABLED is defined # and substituted, and corresponds to the value of the # --enable-code-coverage option, which defaults to being disabled. # # Test also for gcov program and create GCOV variable that could be # substituted. # # Note that all optimization flags in CFLAGS must be disabled when code # coverage is enabled. # # Usage example: # # configure.ac: # # AX_CODE_COVERAGE # # Makefile.am: # # @CODE_COVERAGE_RULES@ # my_program_LIBS = ... $(CODE_COVERAGE_LIBS) ... # my_program_CPPFLAGS = ... $(CODE_COVERAGE_CPPFLAGS) ... # my_program_CFLAGS = ... $(CODE_COVERAGE_CFLAGS) ... # my_program_CXXFLAGS = ... $(CODE_COVERAGE_CXXFLAGS) ... # # This results in a "check-code-coverage" rule being added to any # Makefile.am which includes "@CODE_COVERAGE_RULES@" (assuming the module # has been configured with --enable-code-coverage). Running `make # check-code-coverage` in that directory will run the module's test suite # (`make check`) and build a code coverage report detailing the code which # was touched, then print the URI for the report. # # In earlier versions of this macro, CODE_COVERAGE_LDFLAGS was defined # instead of CODE_COVERAGE_LIBS. They are both still defined, but use of # CODE_COVERAGE_LIBS is preferred for clarity; CODE_COVERAGE_LDFLAGS is # deprecated. They have the same value. # # This code was derived from Makefile.decl in GLib, originally licensed # under LGPLv2.1+. # # LICENSE # # Copyright (c) 2012, 2016 Philip Withnall # Copyright (c) 2012 Xan Lopez # Copyright (c) 2012 Christian Persch # Copyright (c) 2012 Paolo Borelli # Copyright (c) 2012 Dan Winship # Copyright (c) 2015 Bastien ROUCARIES # # This library is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or (at # your option) any later version. # # This library is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser # General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this program. If not, see . #serial 25 AC_DEFUN([AX_CODE_COVERAGE],[ dnl Check for --enable-code-coverage AC_REQUIRE([AC_PROG_SED]) # allow to override gcov location AC_ARG_WITH([gcov], [AS_HELP_STRING([--with-gcov[=GCOV]], [use given GCOV for coverage (GCOV=gcov).])], [_AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov], [_AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov]) AC_MSG_CHECKING([whether to build with code coverage support]) AC_ARG_ENABLE([code-coverage], AS_HELP_STRING([--enable-code-coverage], [Whether to enable code coverage support]),, enable_code_coverage=no) AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test x$enable_code_coverage = xyes]) AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage]) AC_MSG_RESULT($enable_code_coverage) AS_IF([ test "$enable_code_coverage" = "yes" ], [ # check for gcov AC_CHECK_TOOL([GCOV], [$_AX_CODE_COVERAGE_GCOV_PROG_WITH], [:]) AS_IF([test "X$GCOV" = "X:"], [AC_MSG_ERROR([gcov is needed to do coverage])]) AC_SUBST([GCOV]) dnl Check if gcc is being used AS_IF([ test "$GCC" = "no" ], [ AC_MSG_ERROR([not compiling with gcc, which is required for gcov code coverage]) ]) AC_CHECK_PROG([LCOV], [lcov], [lcov]) AC_CHECK_PROG([GENHTML], [genhtml], [genhtml]) AS_IF([ test -z "$LCOV" ], [ AC_MSG_ERROR([To enable code coverage reporting you must have lcov installed]) ]) AS_IF([ test -z "$GENHTML" ], [ AC_MSG_ERROR([Could not find genhtml from the lcov package]) ]) dnl Build the code coverage flags dnl Define CODE_COVERAGE_LDFLAGS for backwards compatibility CODE_COVERAGE_CPPFLAGS="" CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage" CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage" CODE_COVERAGE_LIBS="-lgcov" CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS" AC_SUBST([CODE_COVERAGE_CPPFLAGS]) AC_SUBST([CODE_COVERAGE_CFLAGS]) AC_SUBST([CODE_COVERAGE_CXXFLAGS]) AC_SUBST([CODE_COVERAGE_LIBS]) AC_SUBST([CODE_COVERAGE_LDFLAGS]) [CODE_COVERAGE_RULES_CHECK=' -$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture '] [CODE_COVERAGE_RULES_CAPTURE=' $(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS) $(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS) -@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp $(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS) @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html" '] [CODE_COVERAGE_RULES_CLEAN=' clean: code-coverage-clean distclean: code-coverage-clean code-coverage-clean: -$(LCOV) --directory $(top_builddir) -z -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY) -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete '] ], [ [CODE_COVERAGE_RULES_CHECK=' @echo "Need to reconfigure with --enable-code-coverage" '] CODE_COVERAGE_RULES_CAPTURE="$CODE_COVERAGE_RULES_CHECK" CODE_COVERAGE_RULES_CLEAN='' ]) [CODE_COVERAGE_RULES=' # Code coverage # # Optional: # - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting. # Multiple directories may be specified, separated by whitespace. # (Default: $(top_builddir)) # - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated # by lcov for code coverage. (Default: # $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info) # - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage # reports to be created. (Default: # $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage) # - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage, # set to 0 to disable it and leave empty to stay with the default. # (Default: empty) # - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov # instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE) # - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov # instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT) # - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov # - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the # collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH) # - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov # instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) # - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering # lcov instance. (Default: empty) # - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov # instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT) # - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the # genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE) # - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml # instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) # - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore # # The generated report will be titled using the $(PACKAGE_NAME) and # $(PACKAGE_VERSION). In order to add the current git hash to the title, # use the git-version-gen script, available online. # Optional variables CODE_COVERAGE_DIRECTORY ?= $(top_builddir) CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage CODE_COVERAGE_BRANCH_COVERAGE ?= CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\ --rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE)) CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT) CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)" CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH) CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?= CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT) CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\ $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\ --rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE)) CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) CODE_COVERAGE_IGNORE_PATTERN ?= GITIGNOREFILES ?= GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY) code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V)) code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY)) code_coverage_v_lcov_cap_0 = @echo " LCOV --capture"\ $(CODE_COVERAGE_OUTPUT_FILE); code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V)) code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY)) code_coverage_v_lcov_ign_0 = @echo " LCOV --remove /tmp/*"\ $(CODE_COVERAGE_IGNORE_PATTERN); code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V)) code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY)) code_coverage_v_genhtml_0 = @echo " GEN " $(CODE_COVERAGE_OUTPUT_DIRECTORY); code_coverage_quiet = $(code_coverage_quiet_$(V)) code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY)) code_coverage_quiet_0 = --quiet # sanitizes the test-name: replaces with underscores: dashes and dots code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1))) # Use recursive makes in order to ignore errors during check check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"' # Capture code coverage data code-coverage-capture: code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"' # Hook rule executed before code-coverage-capture, overridable by the user code-coverage-capture-hook: '"$CODE_COVERAGE_RULES_CLEAN"' A''M_DISTCHECK_CONFIGURE_FLAGS ?= A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage .PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean '] AC_SUBST([CODE_COVERAGE_RULES]) m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([CODE_COVERAGE_RULES])]) ]) zfs-0.8.3/config/PaxHeaders.151519/deb.am0000644000000000000000000000007313607166132015735 xustar000000000000000030 atime=1579730442.558561556 29 ctime=1579730468.72240161 zfs-0.8.3/config/deb.am0000644016037001603700000000565513607166132015746 0ustar00hutter2hutter200000000000000deb-local: @(if test "${HAVE_DPKGBUILD}" = "no"; then \ echo -e "\n" \ "*** Required util ${DPKGBUILD} missing. Please install the\n" \ "*** package for your distribution which provides ${DPKGBUILD},\n" \ "*** re-run configure, and try again.\n"; \ exit 1; \ fi; \ if test "${HAVE_ALIEN}" = "no"; then \ echo -e "\n" \ "*** Required util ${ALIEN} missing. Please install the\n" \ "*** package for your distribution which provides ${ALIEN},\n" \ "*** re-run configure, and try again.\n"; \ exit 1; \ fi) deb-kmod: deb-local rpm-kmod name=${PACKAGE}; \ version=${VERSION}-${RELEASE}; \ arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ debarch=`$(DPKG) --print-architecture`; \ pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ fakeroot $(ALIEN) --bump=0 --scripts --to-deb --target=$$debarch $$pkg1 || exit 1; \ $(RM) $$pkg1 deb-dkms: deb-local rpm-dkms name=${PACKAGE}; \ version=${VERSION}-${RELEASE}; \ arch=`$(RPM) -qp $${name}-dkms-$${version}.src.rpm --qf %{arch} | tail -1`; \ debarch=`$(DPKG) --print-architecture`; \ pkg1=$${name}-dkms-$${version}.$${arch}.rpm; \ fakeroot $(ALIEN) --bump=0 --scripts --to-deb --target=$$debarch $$pkg1 || exit 1; \ $(RM) $$pkg1 deb-utils: deb-local rpm-utils name=${PACKAGE}; \ version=${VERSION}-${RELEASE}; \ arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ debarch=`$(DPKG) --print-architecture`; \ pkg1=$${name}-$${version}.$${arch}.rpm; \ pkg2=libnvpair1-$${version}.$${arch}.rpm; \ pkg3=libuutil1-$${version}.$${arch}.rpm; \ pkg4=libzfs2-$${version}.$${arch}.rpm; \ pkg5=libzpool2-$${version}.$${arch}.rpm; \ pkg6=libzfs2-devel-$${version}.$${arch}.rpm; \ pkg7=$${name}-test-$${version}.$${arch}.rpm; \ pkg8=$${name}-dracut-$${version}.noarch.rpm; \ pkg9=$${name}-initramfs-$${version}.$${arch}.rpm; \ pkg10=`ls python*-pyzfs-$${version}* | tail -1`; \ ## Arguments need to be passed to dh_shlibdeps. Alien provides no mechanism ## to do this, so we install a shim onto the path which calls the real ## dh_shlibdeps with the required arguments. path_prepend=`mktemp -d /tmp/intercept.XXX`; \ echo "#$(SHELL)" > $${path_prepend}/dh_shlibdeps; \ echo "`which dh_shlibdeps` -- \ -xlibuutil1linux -xlibnvpair1linux -xlibzfs2linux -xlibzpool2linux" \ >> $${path_prepend}/dh_shlibdeps; \ ## These -x arguments are passed to dpkg-shlibdeps, which exclude the ## Debianized packages from the auto-generated dependencies of the new debs, ## which should NOT be mixed with the alien-generated debs created here chmod +x $${path_prepend}/dh_shlibdeps; \ env PATH=$${path_prepend}:$${PATH} \ fakeroot $(ALIEN) --bump=0 --scripts --to-deb --target=$$debarch \ $$pkg1 $$pkg2 $$pkg3 $$pkg4 $$pkg5 $$pkg6 $$pkg7 \ $$pkg8 $$pkg9 $$pkg10 || exit 1; \ $(RM) $${path_prepend}/dh_shlibdeps; \ rmdir $${path_prepend}; \ $(RM) $$pkg1 $$pkg2 $$pkg3 $$pkg4 $$pkg5 $$pkg6 $$pkg7 \ $$pkg8 $$pkg9 $$pkg10; deb: deb-kmod deb-dkms deb-utils zfs-0.8.3/config/PaxHeaders.151519/mount-helper.m40000644000000000000000000000007413607166132017546 xustar000000000000000030 atime=1579730378.193495066 30 ctime=1579730468.660399619 zfs-0.8.3/config/mount-helper.m40000644016037001603700000000036013607166132017542 0ustar00hutter2hutter200000000000000AC_DEFUN([ZFS_AC_CONFIG_USER_MOUNT_HELPER], [ AC_ARG_WITH(mounthelperdir, AC_HELP_STRING([--with-mounthelperdir=DIR], [install mount.zfs in dir [[/sbin]]]), mounthelperdir=$withval,mounthelperdir=/sbin) AC_SUBST(mounthelperdir) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-vfs-rw-iterate.m40000644000000000000000000000007413612141515021256 xustar000000000000000030 atime=1579730378.210495612 30 ctime=1579730468.630398656 zfs-0.8.3/config/kernel-vfs-rw-iterate.m40000644016037001603700000000366613612141515021266 0ustar00hutter2hutter200000000000000dnl # dnl # Linux 3.16 API dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_RW_ITERATE], [ ZFS_LINUX_TEST_SRC([file_operations_rw], [ #include ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to) { return 0; } ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .read_iter = test_read, .write_iter = test_write, }; ],[]) ZFS_LINUX_TEST_SRC([new_sync_rw], [ #include ],[ ssize_t ret __attribute__ ((unused)); struct file *filp = NULL; char __user *rbuf = NULL; const char __user *wbuf = NULL; size_t len = 0; loff_t ppos; ret = new_sync_read(filp, rbuf, len, &ppos); ret = new_sync_write(filp, wbuf, len, &ppos); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_RW_ITERATE], [ AC_MSG_CHECKING([whether fops->read/write_iter() are available]) ZFS_LINUX_TEST_RESULT([file_operations_rw], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_VFS_RW_ITERATE, 1, [fops->read/write_iter() are available]) dnl # dnl # Linux 4.1 API dnl # AC_MSG_CHECKING([whether new_sync_read/write() are available]) ZFS_LINUX_TEST_RESULT([new_sync_rw], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_NEW_SYNC_READ, 1, [new_sync_read()/new_sync_write() are available]) ],[ AC_MSG_RESULT(no) ]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # Linux 4.1.x API dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_GENERIC_WRITE_CHECKS], [ ZFS_LINUX_TEST_SRC([generic_write_checks], [ #include ],[ struct kiocb *iocb = NULL; struct iov_iter *iov = NULL; generic_write_checks(iocb, iov); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_GENERIC_WRITE_CHECKS], [ AC_MSG_CHECKING([whether generic_write_checks() takes kiocb]) ZFS_LINUX_TEST_RESULT([generic_write_checks], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GENERIC_WRITE_CHECKS_KIOCB, 1, [generic_write_checks() takes kiocb]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/tgz.am0000644000000000000000000000007213607166132016006 xustar000000000000000029 atime=1579730442.56056162 29 ctime=1579730468.72640174 zfs-0.8.3/config/tgz.am0000644016037001603700000000174113607166132016010 0ustar00hutter2hutter200000000000000tgz-local: @(if test "${HAVE_ALIEN}" = "no"; then \ echo -e "\n" \ "*** Required util ${ALIEN} missing. Please install the\n" \ "*** package for your distribution which provides ${ALIEN},\n" \ "*** re-run configure, and try again.\n"; \ exit 1; \ fi) tgz-kmod: tgz-local rpm-kmod if CONFIG_KERNEL name=${PACKAGE}; \ version=${VERSION}-${RELEASE}; \ arch=`$(RPM) -qp $${name}-kmod-$${version}.src.rpm --qf %{arch} | tail -1`; \ pkg1=kmod-$${name}*$${version}.$${arch}.rpm; \ fakeroot $(ALIEN) --scripts --to-tgz $$pkg1; \ $(RM) $$pkg1 endif tgz-utils: tgz-local rpm-utils if CONFIG_USER name=${PACKAGE}; \ version=${VERSION}-${RELEASE}; \ arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch} | tail -1`; \ pkg1=$${name}-$${version}.$${arch}.rpm; \ pkg2=$${name}-devel-$${version}.$${arch}.rpm; \ pkg3=$${name}-test-$${version}.$${arch}.rpm; \ fakeroot $(ALIEN) --scripts --to-tgz $$pkg1 $$pkg2 $$pkg3; \ $(RM) $$pkg1 $$pkg2 $$pkg3 endif tgz: tgz-kmod tgz-utils zfs-0.8.3/config/PaxHeaders.151519/kernel-current-time.m40000644000000000000000000000007413612141515021015 xustar000000000000000030 atime=1579730378.244496703 30 ctime=1579730468.478393777 zfs-0.8.3/config/kernel-current-time.m40000644016037001603700000000111613612141515021011 0ustar00hutter2hutter200000000000000dnl # dnl # 4.9, current_time() added dnl # 4.18, return type changed from timespec to timespec64 dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_CURRENT_TIME], [ ZFS_LINUX_TEST_SRC([current_time], [ #include ], [ struct inode ip __attribute__ ((unused)); ip.i_atime = current_time(&ip); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_CURRENT_TIME], [ AC_MSG_CHECKING([whether current_time() exists]) ZFS_LINUX_TEST_RESULT_SYMBOL([current_time], [current_time], [fs/inode.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CURRENT_TIME, 1, [current_time() exists]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-zlib.m40000644000000000000000000000007313607166132017042 xustar000000000000000029 atime=1579730378.18149468 30 ctime=1579730468.704401033 zfs-0.8.3/config/user-zlib.m40000644016037001603700000000113513607166132017040 0ustar00hutter2hutter200000000000000dnl # dnl # Check for zlib dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_ZLIB], [ ZLIB= AC_CHECK_HEADER([zlib.h], [], [AC_MSG_FAILURE([ *** zlib.h missing, zlib-devel package required])]) AC_SEARCH_LIBS([compress2], [z], [], [AC_MSG_FAILURE([ *** compress2() missing, zlib-devel package required])]) AC_SEARCH_LIBS([uncompress], [z], [], [AC_MSG_FAILURE([ *** uncompress() missing, zlib-devel package required])]) AC_SEARCH_LIBS([crc32], [z], [], [AC_MSG_FAILURE([ *** crc32() missing, zlib-devel package required])]) AC_SUBST([ZLIB], ["-lz"]) AC_DEFINE([HAVE_ZLIB], 1, [Define if you have zlib]) ]) zfs-0.8.3/config/PaxHeaders.151519/pkg.m40000644000000000000000000000007413612141512015677 xustar000000000000000030 atime=1579730378.191495002 30 ctime=1579730468.665399779 zfs-0.8.3/config/pkg.m40000644016037001603700000002401013612141512015671 0ustar00hutter2hutter200000000000000# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 12 (pkg-config-0.29.2) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.2]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurrence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl have to call PKG_CHECK_EXISTS manually AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $2]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl parameter. AC_DEFUN([PKG_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([pkgconfigdir], [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, [with_pkgconfigdir=]pkg_default) AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_INSTALLDIR dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --with-noarch-pkgconfigdir parameter. AC_DEFUN([PKG_NOARCH_INSTALLDIR], [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) m4_pushdef([pkg_description], [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) AC_ARG_WITH([noarch-pkgconfigdir], [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, [with_noarch_pkgconfigdir=]pkg_default) AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) m4_popdef([pkg_default]) m4_popdef([pkg_description]) ])dnl PKG_NOARCH_INSTALLDIR dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl Retrieves the value of the pkg-config variable for the given module. AC_DEFUN([PKG_CHECK_VAR], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl _PKG_CONFIG([$1], [variable="][$3]["], [$2]) AS_VAR_COPY([$1], [pkg_cv_][$1]) AS_VAR_IF([$1], [""], [$5], [$4])dnl ])dnl PKG_CHECK_VAR zfs-0.8.3/config/PaxHeaders.151519/find_system_library.m40000644000000000000000000000007413607166132021177 xustar000000000000000030 atime=1579730378.269497506 30 ctime=1579730468.405391432 zfs-0.8.3/config/find_system_library.m40000644016037001603700000000501613607166132021176 0ustar00hutter2hutter200000000000000# find_system_lib.m4 - Macros to search for a system library. -*- Autoconf -*- dnl requires pkg.m4 from pkg-config dnl requires ax_save_flags.m4 from autoconf-archive dnl requires ax_restore_flags.m4 from autoconf-archive dnl FIND_SYSTEM_LIBRARY(VARIABLE-PREFIX, MODULE, HEADER, HEADER-PREFIXES, LIBRARY, FUNCTIONS, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) AC_DEFUN([FIND_SYSTEM_LIBRARY], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) _library_found= PKG_CHECK_MODULES([$1], [$2], [_library_found=1], [ AS_IF([test -f /usr/include/[$3]], [ AC_SUBST([$1][_CFLAGS], []) AC_SUBST([$1][_LIBS], ["-l[$5]]") _library_found=1 ],[ AS_IF([test -f /usr/local/include/[$3]], [ AC_SUBST([$1][_CFLAGS], ["-I/usr/local/include"]) AC_SUBST([$1][_LIBS], ["-L/usr/local -l[$5]]") _library_found=1 ],[dnl ELSE m4_foreach([prefix], [$4], [ AS_IF([test "x$_library_found" != "x1"], [ AS_IF([test -f [/usr/include/]prefix[/][$3]], [ AC_SUBST([$1][_CFLAGS], ["[-I/usr/include/]prefix["]]) AC_SUBST([$1][_LIBS], ["-l[$5]]") _library_found=1 ],[ AS_IF([test -f [/usr/local/include/]prefix[/][$3]], [ AC_SUBST([$1][_CFLAGS], ["[-I/usr/local/include/]prefix["]]) AC_SUBST([$1][_LIBS], ["-L/usr/local -l[$5]"]) _library_found=1 ])]) ]) ]) ])]) AS_IF([test -z "$_library_found"], [ AC_MSG_WARN([cannot find [$2] via pkg-config or in the standard locations]) ]) ]) dnl do some further sanity checks AS_IF([test -n "$_library_found"], [ AX_SAVE_FLAGS CPPFLAGS="$CPPFLAGS $(echo $[$1][_CFLAGS] | sed 's/-include */-include-/g; s/^/ /; s/ [^-][^ ]*//g; s/ -[^Ii][^ ]*//g; s/-include-/-include /g; s/^ //;')" CFLAGS="$CFLAGS $[$1][_CFLAGS]" LDFLAGS="$LDFLAGS $[$1][_LIBS]" AC_CHECK_HEADER([$3], [], [ AC_MSG_WARN([header [$3] for library [$2] is not usable]) _library_found= ]) m4_foreach([func], [$6], [ AC_CHECK_LIB([$5], func, [], [ AC_MSG_WARN([cannot find ]func[ in library [$5]]) _library_found= ]) ]) AX_RESTORE_FLAGS ]) AS_IF([test -n "$_library_found"], [ :;$7 ],[dnl ELSE :;$8 ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-submit_bio.m40000644000000000000000000000007413612141515020533 xustar000000000000000030 atime=1579730378.217495836 30 ctime=1579730468.599397661 zfs-0.8.3/config/kernel-submit_bio.m40000644016037001603700000000115313612141515020530 0ustar00hutter2hutter200000000000000dnl # dnl # 4.8 API change dnl # The rw argument has been removed from submit_bio/submit_bio_wait. dnl # Callers are now expected to set bio->bi_rw instead of passing it in. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SUBMIT_BIO], [ ZFS_LINUX_TEST_SRC([submit_bio], [ #include ],[ blk_qc_t blk_qc; struct bio *bio = NULL; blk_qc = submit_bio(bio); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SUBMIT_BIO], [ AC_MSG_CHECKING([whether submit_bio() wants 1 arg]) ZFS_LINUX_TEST_RESULT([submit_bio], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_1ARG_SUBMIT_BIO, 1, [submit_bio() wants 1 arg]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-setattr-prepare.m40000644000000000000000000000007413612141515021521 xustar000000000000000030 atime=1579730378.220495932 30 ctime=1579730468.590397373 zfs-0.8.3/config/kernel-setattr-prepare.m40000644016037001603700000000135413612141515021521 0ustar00hutter2hutter200000000000000dnl # dnl # 4.9 API change dnl # The inode_change_ok() function has been renamed setattr_prepare() dnl # and updated to take a dentry rather than an inode. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SETATTR_PREPARE], [ ZFS_LINUX_TEST_SRC([setattr_prepare], [ #include ], [ struct dentry *dentry = NULL; struct iattr *attr = NULL; int error __attribute__ ((unused)) = setattr_prepare(dentry, attr); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SETATTR_PREPARE], [ AC_MSG_CHECKING([whether setattr_prepare() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([setattr_prepare], [setattr_prepare], [fs/attr.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SETATTR_PREPARE, 1, [setattr_prepare() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-blk-queue-discard.m40000644000000000000000000000007413612141515021700 xustar000000000000000030 atime=1579730378.250496896 30 ctime=1579730468.448392814 zfs-0.8.3/config/kernel-blk-queue-discard.m40000644016037001603700000000351513612141515021701 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.32 - 4.x API, dnl # blk_queue_discard() dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_DISCARD], [ ZFS_LINUX_TEST_SRC([blk_queue_discard], [ #include ],[ struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_discard(q); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_DISCARD], [ AC_MSG_CHECKING([whether blk_queue_discard() is available]) ZFS_LINUX_TEST_RESULT([blk_queue_discard], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_DISCARD, 1, [blk_queue_discard() is available]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.8 - 4.x API, dnl # blk_queue_secure_erase() dnl # dnl # 2.6.36 - 4.7 API, dnl # blk_queue_secdiscard() dnl # dnl # 2.6.x - 2.6.35 API, dnl # Unsupported by kernel dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLK_QUEUE_SECURE_ERASE], [ ZFS_LINUX_TEST_SRC([blk_queue_secure_erase], [ #include ],[ struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secure_erase(q); ]) ZFS_LINUX_TEST_SRC([blk_queue_secdiscard], [ #include ],[ struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secdiscard(q); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLK_QUEUE_SECURE_ERASE], [ AC_MSG_CHECKING([whether blk_queue_secure_erase() is available]) ZFS_LINUX_TEST_RESULT([blk_queue_secure_erase], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_SECURE_ERASE, 1, [blk_queue_secure_erase() is available]) ],[ AC_MSG_RESULT(no) AC_MSG_CHECKING([whether blk_queue_secdiscard() is available]) ZFS_LINUX_TEST_RESULT([blk_queue_secdiscard], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLK_QUEUE_SECDISCARD, 1, [blk_queue_secdiscard() is available]) ],[ AC_MSG_RESULT(no) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bdi.m40000644000000000000000000000007413612141515017135 xustar000000000000000030 atime=1579730378.254497025 30 ctime=1579730468.429392203 zfs-0.8.3/config/kernel-bdi.m40000644016037001603700000000432113612141515017132 0ustar00hutter2hutter200000000000000dnl # dnl # Check available BDI interfaces. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BDI], [ ZFS_LINUX_TEST_SRC([super_setup_bdi_name], [ #include struct super_block sb; ], [ char *name = "bdi"; atomic_long_t zfs_bdi_seq; int error __attribute__((unused)) = super_setup_bdi_name(&sb, "%.28s-%ld", name, atomic_long_inc_return(&zfs_bdi_seq)); ]) ZFS_LINUX_TEST_SRC([bdi_setup_and_register], [ #include struct backing_dev_info bdi; ], [ char *name = "bdi"; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name); ]) ZFS_LINUX_TEST_SRC([bdi_setup_and_register_3args], [ #include struct backing_dev_info bdi; ], [ char *name = "bdi"; unsigned int cap = BDI_CAP_MAP_COPY; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name, cap); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BDI], [ dnl # dnl # 4.12, super_setup_bdi_name() introduced. dnl # AC_MSG_CHECKING([whether super_setup_bdi_name() exists]) ZFS_LINUX_TEST_RESULT_SYMBOL([super_setup_bdi_name], [super_setup_bdi_name], [fs/super.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SUPER_SETUP_BDI_NAME, 1, [super_setup_bdi_name() exits]) ], [ AC_MSG_RESULT(no) dnl # dnl # 4.0 - 4.11, bdi_setup_and_register() takes 2 arguments. dnl # AC_MSG_CHECKING( [whether bdi_setup_and_register() wants 2 args]) ZFS_LINUX_TEST_RESULT_SYMBOL([bdi_setup_and_register], [bdi_setup_and_register], [mm/backing-dev.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_2ARGS_BDI_SETUP_AND_REGISTER, 1, [bdi_setup_and_register() wants 2 args]) ], [ AC_MSG_RESULT(no) dnl # dnl # 2.6.34 - 3.19, bdi_setup_and_register() dnl # takes 3 arguments. dnl # AC_MSG_CHECKING( [whether bdi_setup_and_register() wants 3 args]) ZFS_LINUX_TEST_RESULT_SYMBOL( [bdi_setup_and_register_3args], [bdi_setup_and_register], [mm/backing-dev.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_3ARGS_BDI_SETUP_AND_REGISTER, 1, [bdi_setup_and_register() wants 3 args]) ], [ dnl # dnl # 2.6.32 - 2.6.33, bdi_setup_and_register() dnl # is not exported. dnl # AC_MSG_RESULT(no) ]) ]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/user-gettext.m40000644000000000000000000000007413607166132017567 xustar000000000000000030 atime=1579730378.184494777 30 ctime=1579730468.676400134 zfs-0.8.3/config/user-gettext.m40000644016037001603700000000034013607166132017561 0ustar00hutter2hutter200000000000000dnl # dnl # Check if libintl and possibly libiconv are needed for gettext() functionality dnl # AC_DEFUN([ZFS_AC_CONFIG_USER_GETTEXT], [ AM_ICONV AM_GNU_GETTEXT([external]) LIBS="$LIBS $LTLIBINTL $LTLIBICONV" ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-global_page_state.m40000644000000000000000000000007413612141515022033 xustar000000000000000030 atime=1579730378.233496351 30 ctime=1579730468.519395092 zfs-0.8.3/config/kernel-global_page_state.m40000644016037001603700000000776013612141515022042 0ustar00hutter2hutter200000000000000dnl # dnl # 4.8 API change dnl # dnl # 75ef71840539 mm, vmstat: add infrastructure for per-node vmstats dnl # 599d0c954f91 mm, vmscan: move LRU lists to node dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GLOBAL_NODE_PAGE_STATE], [ ZFS_LINUX_TEST_SRC([global_node_page_state], [ #include #include ],[ (void) global_node_page_state(0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_NODE_PAGE_STATE], [ AC_MSG_CHECKING([whether global_node_page_state() exists]) ZFS_LINUX_TEST_RESULT([global_node_page_state], [ AC_MSG_RESULT(yes) AC_DEFINE(ZFS_GLOBAL_NODE_PAGE_STATE, 1, [global_node_page_state() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.14 API change dnl # dnl # c41f012ade0b mm: rename global_page_state to global_zone_page_state dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GLOBAL_ZONE_PAGE_STATE], [ ZFS_LINUX_TEST_SRC([global_zone_page_state], [ #include #include ],[ (void) global_zone_page_state(0); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE], [ AC_MSG_CHECKING([whether global_zone_page_state() exists]) ZFS_LINUX_TEST_RESULT([global_zone_page_state], [ AC_MSG_RESULT(yes) AC_DEFINE(ZFS_GLOBAL_ZONE_PAGE_STATE, 1, [global_zone_page_state() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # Create a define and autoconf variable for an enum member dnl # AC_DEFUN([ZFS_AC_KERNEL_ENUM_MEMBER], [ AC_MSG_CHECKING([whether enum $2 contains $1]) AS_IF([AC_TRY_COMMAND( "${srcdir}/scripts/enum-extract.pl" "$2" "$3" | egrep -qx $1)],[ AC_MSG_RESULT([yes]) AC_DEFINE(m4_join([_], [ZFS_ENUM], m4_toupper($2), $1), 1, [enum $2 contains $1]) m4_join([_], [ZFS_ENUM], m4_toupper($2), $1)=1 ],[ AC_MSG_RESULT([no]) ]) ]) dnl # dnl # Sanity check helpers dnl # AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR],[ AC_MSG_RESULT(no) AC_MSG_RESULT([$1 in either node_stat_item or zone_stat_item: $2]) ZFS_LINUX_TEST_ERROR([global page state]) ]) AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK], [ enum_check_a="m4_join([_], [$ZFS_ENUM_NODE_STAT_ITEM], $1)" enum_check_b="m4_join([_], [$ZFS_ENUM_ZONE_STAT_ITEM], $1)" AS_IF([test -n "$enum_check_a" -a -n "$enum_check_b"],[ ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR([$1], [DUPLICATE]) ]) AS_IF([test -z "$enum_check_a" -a -z "$enum_check_b"],[ ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_ERROR([$1], [NOT FOUND]) ]) ]) dnl # dnl # Ensure the config tests are finding one and only one of each enum. dnl # AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY], [ AC_MSG_CHECKING([whether global_page_state enums are sane]) ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_FILE_PAGES]) ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_ANON]) ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_INACTIVE_FILE]) ZFS_AC_KERNEL_GLOBAL_PAGE_STATE_ENUM_CHECK([NR_SLAB_RECLAIMABLE]) AC_MSG_RESULT(yes) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_GLOBAL_PAGE_STATE], [ ZFS_AC_KERNEL_SRC_GLOBAL_NODE_PAGE_STATE ZFS_AC_KERNEL_SRC_GLOBAL_ZONE_PAGE_STATE ]) dnl # dnl # enum members in which we're interested dnl # AC_DEFUN([ZFS_AC_KERNEL_GLOBAL_PAGE_STATE], [ ZFS_AC_KERNEL_GLOBAL_NODE_PAGE_STATE ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES], [node_stat_item], [$LINUX/include/linux/mmzone.h]) ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_ANON], [node_stat_item], [$LINUX/include/linux/mmzone.h]) ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE], [node_stat_item], [$LINUX/include/linux/mmzone.h]) ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE], [node_stat_item], [$LINUX/include/linux/mmzone.h]) ZFS_AC_KERNEL_ENUM_MEMBER([NR_FILE_PAGES], [zone_stat_item], [$LINUX/include/linux/mmzone.h]) ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_ANON], [zone_stat_item], [$LINUX/include/linux/mmzone.h]) ZFS_AC_KERNEL_ENUM_MEMBER([NR_INACTIVE_FILE], [zone_stat_item], [$LINUX/include/linux/mmzone.h]) ZFS_AC_KERNEL_ENUM_MEMBER([NR_SLAB_RECLAIMABLE], [zone_stat_item], [$LINUX/include/linux/mmzone.h]) ZFS_AC_KERNEL_GLOBAL_ZONE_PAGE_STATE_SANITY ]) zfs-0.8.3/config/PaxHeaders.151519/lib-prefix.m40000644000000000000000000000007413607166132017170 xustar000000000000000030 atime=1579730378.193495066 30 ctime=1579730468.646399171 zfs-0.8.3/config/lib-prefix.m40000644016037001603700000002272013607166132017170 0ustar00hutter2hutter200000000000000# lib-prefix.m4 serial 14 dnl Copyright (C) 2001-2005, 2008-2019 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH([lib-prefix], [[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a variable acl_libdirstem, containing the basename of the libdir, either dnl "lib" or "lib64" or "lib/64", dnl - a variable acl_libdirstem2, as a secondary possible value for dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or dnl "lib/amd64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. dnl On glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine dnl the compiler's default mode by looking at the compiler's library search dnl path. If at least one of its elements ends in /lib64 or points to a dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. dnl Otherwise we use the default, namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT]) case "$host_os" in solaris*) AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], [AC_COMPILE_IFELSE( [AC_LANG_SOURCE( [[#ifdef _LP64 int ok; #else error fail #endif ]])], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) ]);; esac dnl Allow the user to override the result by setting acl_cv_libdirstems. AC_CACHE_CHECK([for the common suffixes of directories in the library search path], [acl_cv_libdirstems], [acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) dnl If $CC generates code for a 32-bit ABI, the libraries are dnl surely under $prefix/lib, not $prefix/lib64. if test "$HOST_CPU_C_ABI_32BIT" != yes; then dnl The result is a property of the system. However, non-system dnl compilers sometimes have odd library search paths. Therefore dnl prefer asking /usr/bin/gcc, if available, rather than $CC. searchpath=`(if test -f /usr/bin/gcc \ && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \ LC_ALL=C /usr/bin/gcc -print-search-dirs; \ else \ LC_ALL=C $CC -print-search-dirs; \ fi) 2>/dev/null \ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2" ]) # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2. acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'` ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-acl.m40000644000000000000000000000007413612141515017136 xustar000000000000000030 atime=1579730378.256497089 30 ctime=1579730468.418391848 zfs-0.8.3/config/kernel-acl.m40000644016037001603700000002661413612141515017144 0ustar00hutter2hutter200000000000000dnl # dnl # Check if posix_acl_release can be used from a ZFS_META_LICENSED dnl # module. The is_owner_or_cap macro was replaced by dnl # inode_owner_or_capable dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_RELEASE], [ ZFS_LINUX_TEST_SRC([posix_acl_release], [ #include #include #include ], [ struct posix_acl *tmp = posix_acl_alloc(1, 0); posix_acl_release(tmp); ], [], [$ZFS_META_LICENSE]) ]) AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_RELEASE], [ AC_MSG_CHECKING([whether posix_acl_release() is available]) ZFS_LINUX_TEST_RESULT([posix_acl_release], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_POSIX_ACL_RELEASE, 1, [posix_acl_release() is available]) AC_MSG_CHECKING([whether posix_acl_release() is GPL-only]) ZFS_LINUX_TEST_RESULT([posix_acl_release_license], [ AC_MSG_RESULT(no) ],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_POSIX_ACL_RELEASE_GPL_ONLY, 1, [posix_acl_release() is GPL-only]) ]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.14 API change, dnl # set_cached_acl() and forget_cached_acl() changed from inline to dnl # EXPORT_SYMBOL. In the former case, they may not be usable because of dnl # posix_acl_release. In the latter case, we can always use them. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_SET_CACHED_ACL_USABLE], [ ZFS_LINUX_TEST_SRC([set_cached_acl], [ #include #include #include ], [ struct inode *ip = NULL; struct posix_acl *acl = posix_acl_alloc(1, 0); set_cached_acl(ip, ACL_TYPE_ACCESS, acl); forget_cached_acl(ip, ACL_TYPE_ACCESS); ], [], [$ZFS_META_LICENSE]) ]) AC_DEFUN([ZFS_AC_KERNEL_SET_CACHED_ACL_USABLE], [ AC_MSG_CHECKING([whether set_cached_acl() is usable]) ZFS_LINUX_TEST_RESULT([set_cached_acl_license], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SET_CACHED_ACL_USABLE, 1, [set_cached_acl() is usable]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.1 API change, dnl # posix_acl_chmod_masq() is not exported anymore and posix_acl_chmod() dnl # was introduced to replace it. dnl # dnl # 3.14 API change, dnl # posix_acl_chmod() is changed to __posix_acl_chmod() dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_CHMOD], [ ZFS_LINUX_TEST_SRC([posix_acl_chmod], [ #include #include ],[ posix_acl_chmod(NULL, 0, 0) ]) ZFS_LINUX_TEST_SRC([__posix_acl_chmod], [ #include #include ],[ __posix_acl_chmod(NULL, 0, 0) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_CHMOD], [ AC_MSG_CHECKING([whether posix_acl_chmod exists]) ZFS_LINUX_TEST_RESULT([posix_acl_chmod], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_POSIX_ACL_CHMOD, 1, [posix_acl_chmod() exists]) ],[ AC_MSG_RESULT(no) ]) AC_MSG_CHECKING([whether __posix_acl_chmod exists]) ZFS_LINUX_TEST_RESULT([__posix_acl_chmod], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE___POSIX_ACL_CHMOD, 1, [__posix_acl_chmod() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.1 API change, dnl # posix_acl_equiv_mode now wants an umode_t* instead of a mode_t* dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T], [ ZFS_LINUX_TEST_SRC([posix_acl_equiv_mode], [ #include #include ],[ umode_t tmp; posix_acl_equiv_mode(NULL,&tmp); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T], [ AC_MSG_CHECKING([whether posix_acl_equiv_mode() wants umode_t]) ZFS_LINUX_TEST_RESULT([posix_acl_equiv_mode], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T, 1, [posix_acl_equiv_mode wants umode_t*]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.8 API change, dnl # The function posix_acl_valid now must be passed a namespace. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_VALID_WITH_NS], [ ZFS_LINUX_TEST_SRC([posix_acl_valid_with_ns], [ #include #include ],[ struct user_namespace *user_ns = NULL; const struct posix_acl *acl = NULL; int error; error = posix_acl_valid(user_ns, acl); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_VALID_WITH_NS], [ AC_MSG_CHECKING([whether posix_acl_valid() wants user namespace]) ZFS_LINUX_TEST_RESULT([posix_acl_valid_with_ns], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_POSIX_ACL_VALID_WITH_NS, 1, [posix_acl_valid() wants user namespace]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.27 API change, dnl # Check if inode_operations contains the function permission dnl # and expects the nameidata structure to have been removed. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_PERMISSION], [ ZFS_LINUX_TEST_SRC([inode_operations_permission], [ #include int permission_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION], [ AC_MSG_CHECKING([whether iops->permission() exists]) ZFS_LINUX_TEST_RESULT([inode_operations_permission], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PERMISSION, 1, [iops->permission() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.26 API change, dnl # Check if inode_operations contains the function permission dnl # and expects the nameidata structure to be passed. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_PERMISSION_WITH_NAMEIDATA], [ ZFS_LINUX_TEST_SRC([inode_operations_permission_with_nameidata], [ #include #include int permission_fn(struct inode *inode, int mask, struct nameidata *nd) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION_WITH_NAMEIDATA], [ AC_MSG_CHECKING([whether iops->permission() wants nameidata]) ZFS_LINUX_TEST_RESULT([inode_operations_permission_with_nameidata], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PERMISSION, 1, [iops->permission() exists]) AC_DEFINE(HAVE_PERMISSION_WITH_NAMEIDATA, 1, [iops->permission() with nameidata exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.32 API change, dnl # Check if inode_operations contains the function check_acl dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_CHECK_ACL], [ ZFS_LINUX_TEST_SRC([inode_operations_check_acl], [ #include int check_acl_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_CHECK_ACL], [ AC_MSG_CHECKING([whether iops->check_acl() exists]) ZFS_LINUX_TEST_RESULT([inode_operations_check_acl], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CHECK_ACL, 1, [iops->check_acl() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 2.6.38 API change, dnl # The function check_acl gained a new parameter: flags dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_CHECK_ACL_WITH_FLAGS], [ ZFS_LINUX_TEST_SRC([inode_operations_check_acl_with_flags], [ #include int check_acl_fn(struct inode *inode, int mask, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_CHECK_ACL_WITH_FLAGS], [ AC_MSG_CHECKING([whether iops->check_acl() wants flags]) ZFS_LINUX_TEST_RESULT([inode_operations_check_acl_with_flags], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_CHECK_ACL, 1, [iops->check_acl() exists]) AC_DEFINE(HAVE_CHECK_ACL_WITH_FLAGS, 1, [iops->check_acl() wants flags]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.1 API change, dnl # Check if inode_operations contains the function get_acl dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_GET_ACL], [ ZFS_LINUX_TEST_SRC([inode_operations_get_acl], [ #include struct posix_acl *get_acl_fn(struct inode *inode, int type) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .get_acl = get_acl_fn, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_GET_ACL], [ AC_MSG_CHECKING([whether iops->get_acl() exists]) ZFS_LINUX_TEST_RESULT([inode_operations_get_acl], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_GET_ACL, 1, [iops->get_acl() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 3.14 API change, dnl # Check if inode_operations contains the function set_acl dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_SET_ACL], [ ZFS_LINUX_TEST_SRC([inode_operations_set_acl], [ #include int set_acl_fn(struct inode *inode, struct posix_acl *acl, int type) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .set_acl = set_acl_fn, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_SET_ACL], [ AC_MSG_CHECKING([whether iops->set_acl() exists]) ZFS_LINUX_TEST_RESULT([inode_operations_set_acl], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_SET_ACL, 1, [iops->set_acl() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.7 API change, dnl # The kernel get_acl will now check cache before calling i_op->get_acl and dnl # do set_cached_acl after that, so i_op->get_acl don't need to do that dnl # anymore. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_GET_ACL_HANDLE_CACHE], [ ZFS_LINUX_TEST_SRC([get_acl_handle_cache], [ #include ],[ void *sentinel __attribute__ ((unused)) = uncached_acl_sentinel(NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_GET_ACL_HANDLE_CACHE], [ AC_MSG_CHECKING([whether uncached_acl_sentinel() exists]) ZFS_LINUX_TEST_RESULT([get_acl_handle_cache], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_KERNEL_GET_ACL_HANDLE_CACHE, 1, [uncached_acl_sentinel() exists]) ],[ AC_MSG_RESULT(no) ]) ]) dnl # dnl # 4.16 kernel: check if struct posix_acl acl.a_refcount is a refcount_t. dnl # It's an atomic_t on older kernels. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_ACL_HAS_REFCOUNT], [ ZFS_LINUX_TEST_SRC([acl_refcount], [ #include #include #include ],[ struct posix_acl acl; refcount_t *r __attribute__ ((unused)) = &acl.a_refcount; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_ACL_HAS_REFCOUNT], [ AC_MSG_CHECKING([whether posix_acl has refcount_t]) ZFS_LINUX_TEST_RESULT([acl_refcount], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ACL_REFCOUNT, 1, [posix_acl has refcount_t]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_ACL], [ ZFS_AC_KERNEL_SRC_POSIX_ACL_RELEASE ZFS_AC_KERNEL_SRC_SET_CACHED_ACL_USABLE ZFS_AC_KERNEL_SRC_POSIX_ACL_CHMOD ZFS_AC_KERNEL_SRC_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T ZFS_AC_KERNEL_SRC_POSIX_ACL_VALID_WITH_NS ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_PERMISSION ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_PERMISSION_WITH_NAMEIDATA ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_CHECK_ACL ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_CHECK_ACL_WITH_FLAGS ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_GET_ACL ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_SET_ACL ZFS_AC_KERNEL_SRC_GET_ACL_HANDLE_CACHE ZFS_AC_KERNEL_SRC_ACL_HAS_REFCOUNT ]) AC_DEFUN([ZFS_AC_KERNEL_ACL], [ ZFS_AC_KERNEL_POSIX_ACL_RELEASE ZFS_AC_KERNEL_SET_CACHED_ACL_USABLE ZFS_AC_KERNEL_POSIX_ACL_CHMOD ZFS_AC_KERNEL_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T ZFS_AC_KERNEL_POSIX_ACL_VALID_WITH_NS ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION ZFS_AC_KERNEL_INODE_OPERATIONS_PERMISSION_WITH_NAMEIDATA ZFS_AC_KERNEL_INODE_OPERATIONS_CHECK_ACL ZFS_AC_KERNEL_INODE_OPERATIONS_CHECK_ACL_WITH_FLAGS ZFS_AC_KERNEL_INODE_OPERATIONS_GET_ACL ZFS_AC_KERNEL_INODE_OPERATIONS_SET_ACL ZFS_AC_KERNEL_GET_ACL_HANDLE_CACHE ZFS_AC_KERNEL_ACL_HAS_REFCOUNT ]) zfs-0.8.3/config/PaxHeaders.151519/ax_python_devel.m40000644000000000000000000000007313607166132020316 xustar000000000000000030 atime=1579730378.270497539 29 ctime=1579730468.39939124 zfs-0.8.3/config/ax_python_devel.m40000644016037001603700000002676413607166132020333 0ustar00hutter2hutter200000000000000# =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_python_devel.html # =========================================================================== # # SYNOPSIS # # AX_PYTHON_DEVEL([version], [action-if-not-found]) # # DESCRIPTION # # Note: Defines as a precious variable "PYTHON_VERSION". Don't override it # in your configure.ac. # # Note: this is a slightly modified version of the original AX_PYTHON_DEVEL # macro which accepts an additional [action-if-not-found] argument. This # allow to detect if Python development is available without aborting the # configure phase with an hard error in case it is not. # # This macro checks for Python and tries to get the include path to # 'Python.h'. It provides the $(PYTHON_CPPFLAGS) and $(PYTHON_LIBS) output # variables. It also exports $(PYTHON_EXTRA_LIBS) and # $(PYTHON_EXTRA_LDFLAGS) for embedding Python in your code. # # You can search for some particular version of Python by passing a # parameter to this macro, for example ">= '2.3.1'", or "== '2.4'". Please # note that you *have* to pass also an operator along with the version to # match, and pay special attention to the single quotes surrounding the # version number. Don't use "PYTHON_VERSION" for this: that environment # variable is declared as precious and thus reserved for the end-user. # # This macro should work for all versions of Python >= 2.1.0. As an end # user, you can disable the check for the python version by setting the # PYTHON_NOVERSIONCHECK environment variable to something else than the # empty string. # # If you need to use this macro for an older Python version, please # contact the authors. We're always open for feedback. # # LICENSE # # Copyright (c) 2009 Sebastian Huber # Copyright (c) 2009 Alan W. Irwin # Copyright (c) 2009 Rafael Laboissiere # Copyright (c) 2009 Andrew Collier # Copyright (c) 2009 Matteo Settenvini # Copyright (c) 2009 Horst Knorr # Copyright (c) 2013 Daniel Mullner # Copyright (c) 2018 loli10K # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 21 AU_ALIAS([AC_PYTHON_DEVEL], [AX_PYTHON_DEVEL]) AC_DEFUN([AX_PYTHON_DEVEL],[ # # Allow the use of a (user set) custom python version # AC_ARG_VAR([PYTHON_VERSION],[The installed Python version to use, for example '2.3'. This string will be appended to the Python interpreter canonical name.]) AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]]) if test -z "$PYTHON"; then m4_ifvaln([$2],[$2],[ AC_MSG_ERROR([Cannot find python$PYTHON_VERSION in your system path]) PYTHON_VERSION="" ]) fi # # Check for a version of Python >= 2.1.0 # AC_MSG_CHECKING([for a version of Python >= '2.1.0']) ac_supports_python_ver=`$PYTHON -c "import sys; \ ver = sys.version.split ()[[0]]; \ print (ver >= '2.1.0')"` if test "$ac_supports_python_ver" != "True"; then if test -z "$PYTHON_NOVERSIONCHECK"; then AC_MSG_RESULT([no]) m4_ifvaln([$2],[$2],[ AC_MSG_FAILURE([ This version of the AC@&t@_PYTHON_DEVEL macro doesn't work properly with versions of Python before 2.1.0. You may need to re-run configure, setting the variables PYTHON_CPPFLAGS, PYTHON_LIBS, PYTHON_SITE_PKG, PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand. Moreover, to disable this check, set PYTHON_NOVERSIONCHECK to something else than an empty string. ]) ]) else AC_MSG_RESULT([skip at user request]) fi else AC_MSG_RESULT([yes]) fi # # if the macro parameter ``version'' is set, honour it # if test -n "$1"; then AC_MSG_CHECKING([for a version of Python $1]) ac_supports_python_ver=`$PYTHON -c "import sys; \ ver = sys.version.split ()[[0]]; \ print (ver $1)"` if test "$ac_supports_python_ver" = "True"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) m4_ifvaln([$2],[$2],[ AC_MSG_ERROR([this package requires Python $1. If you have it installed, but it isn't the default Python interpreter in your system path, please pass the PYTHON_VERSION variable to configure. See ``configure --help'' for reference. ]) PYTHON_VERSION="" ]) fi fi # # Check if you have distutils, else fail # AC_MSG_CHECKING([for the distutils Python package]) ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` if test $? -eq 0; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) m4_ifvaln([$2],[$2],[ AC_MSG_ERROR([cannot import Python module "distutils". Please check your Python installation. The error was: $ac_distutils_result]) PYTHON_VERSION="" ]) fi # # Check for Python include path # AC_MSG_CHECKING([for Python include path]) if test -z "$PYTHON_CPPFLAGS"; then python_path=`$PYTHON -c "import distutils.sysconfig; \ print (distutils.sysconfig.get_python_inc ());"` plat_python_path=`$PYTHON -c "import distutils.sysconfig; \ print (distutils.sysconfig.get_python_inc (plat_specific=1));"` if test -n "${python_path}"; then if test "${plat_python_path}" != "${python_path}"; then python_path="-I$python_path -I$plat_python_path" else python_path="-I$python_path" fi fi PYTHON_CPPFLAGS=$python_path fi AC_MSG_RESULT([$PYTHON_CPPFLAGS]) AC_SUBST([PYTHON_CPPFLAGS]) # # Check for Python library path # AC_MSG_CHECKING([for Python library path]) if test -z "$PYTHON_LIBS"; then # (makes two attempts to ensure we've got a version number # from the interpreter) ac_python_version=`cat<]], [[Py_Initialize();]]) ],[pythonexists=yes],[pythonexists=no]) AC_LANG_POP([C]) # turn back to default flags CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" LDFLAGS="$ac_save_LDFLAGS" AC_MSG_RESULT([$pythonexists]) if test ! "x$pythonexists" = "xyes"; then m4_ifvaln([$2],[$2],[ AC_MSG_FAILURE([ Could not link test program to Python. Maybe the main Python library has been installed in some non-standard library path. If so, pass it to configure, via the LIBS environment variable. Example: ./configure LIBS="-L/usr/non-standard-path/python/lib" ============================================================================ ERROR! You probably have to install the development version of the Python package for your distribution. The exact name of this package varies among them. ============================================================================ ]) PYTHON_VERSION="" ]) fi # # all done! # ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-blkdev-reread-part.m40000644000000000000000000000007413612141515022052 xustar000000000000000030 atime=1579730378.247496799 30 ctime=1579730468.463393294 zfs-0.8.3/config/kernel-blkdev-reread-part.m40000644016037001603700000000117713612141515022055 0ustar00hutter2hutter200000000000000dnl # dnl # 4.1 API, exported blkdev_reread_part() symbol, backported to the dnl # 3.10.0 CentOS 7.x enterprise kernels. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART], [ ZFS_LINUX_TEST_SRC([blkdev_reread_part], [ #include ], [ struct block_device *bdev = NULL; int error; error = blkdev_reread_part(bdev); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_REREAD_PART], [ AC_MSG_CHECKING([whether blkdev_reread_part() is available]) ZFS_LINUX_TEST_RESULT([blkdev_reread_part], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BLKDEV_REREAD_PART, 1, [blkdev_reread_part() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-open-bdev-exclusive.m40000644000000000000000000000007413612141515022263 xustar000000000000000030 atime=1579730378.224496062 30 ctime=1579730468.571396762 zfs-0.8.3/config/kernel-open-bdev-exclusive.m40000644016037001603700000000116413612141515022262 0ustar00hutter2hutter200000000000000dnl # dnl # 2.6.28 API change dnl # open/close_bdev_excl() renamed to open/close_bdev_exclusive() dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BDEV_OPEN_EXCLUSIVE], [ ZFS_LINUX_TEST_SRC([open_bdev_exclusive], [ #include ], [ open_bdev_exclusive(NULL, 0, NULL); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BDEV_OPEN_EXCLUSIVE], [ AC_MSG_CHECKING([whether open_bdev_exclusive() is available]) ZFS_LINUX_TEST_RESULT_SYMBOL([open_bdev_exclusive], [open_bdev_exclusive], [fs/block_dev.c], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_OPEN_BDEV_EXCLUSIVE, 1, [open_bdev_exclusive() is available]) ], [ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-misc-minor.m40000644000000000000000000000007413612141515020454 xustar000000000000000030 atime=1579730378.226496127 30 ctime=1579730468.562396474 zfs-0.8.3/config/kernel-misc-minor.m40000644016037001603700000000156513612141515020460 0ustar00hutter2hutter200000000000000dnl # dnl # Determine an available miscellaneous minor number which can be used dnl # for the /dev/zfs device. This is needed because kernel module dnl # auto-loading depends on registering a reserved non-conflicting minor dnl # number. Start with a large known available unreserved minor and work dnl # our way down to lower value if a collision is detected. dnl # AC_DEFUN([ZFS_AC_KERNEL_MISC_MINOR], [ AC_MSG_CHECKING([whether /dev/zfs minor is available]) for i in $(seq 249 -1 200); do if ! grep -q "^#define\s\+.*_MINOR\s\+.*$i" \ ${LINUX}/include/linux/miscdevice.h; then ZFS_DEVICE_MINOR="$i" AC_MSG_RESULT($ZFS_DEVICE_MINOR) AC_DEFINE_UNQUOTED([ZFS_DEVICE_MINOR], [$ZFS_DEVICE_MINOR], [/dev/zfs minor]) break fi done AS_IF([ test -z "$ZFS_DEVICE_MINOR"], [ AC_MSG_ERROR([ *** No available misc minor numbers available for use.]) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/always-arch.m40000644000000000000000000000007413607166132017342 xustar000000000000000030 atime=1579730378.276497731 30 ctime=1579730468.389390917 zfs-0.8.3/config/always-arch.m40000644016037001603700000000115213607166132017336 0ustar00hutter2hutter200000000000000dnl # dnl # Set the target arch for libspl atomic implementation and the icp dnl # AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_ARCH], [ AC_MSG_CHECKING(for target asm dir) TARGET_ARCH=`echo ${target_cpu} | sed -e s/i.86/i386/` case $TARGET_ARCH in i386|x86_64) TARGET_ASM_DIR=asm-${TARGET_ARCH} ;; *) TARGET_ASM_DIR=asm-generic ;; esac AC_SUBST([TARGET_ASM_DIR]) AM_CONDITIONAL([TARGET_ASM_X86_64], test $TARGET_ASM_DIR = asm-x86_64) AM_CONDITIONAL([TARGET_ASM_I386], test $TARGET_ASM_DIR = asm-i386) AM_CONDITIONAL([TARGET_ASM_GENERIC], test $TARGET_ASM_DIR = asm-generic) AC_MSG_RESULT([$TARGET_ASM_DIR]) ]) zfs-0.8.3/config/PaxHeaders.151519/config.awk0000644000000000000000000000007413607166132016636 xustar000000000000000030 atime=1579730459.318099659 30 ctime=1579730468.781403506 zfs-0.8.3/config/config.awk0000644016037001603700000000051613607166132016635 0ustar00hutter2hutter200000000000000# Remove default preprocessor define's from config.h # PACKAGE # PACKAGE_BUGREPORT # PACKAGE_NAME # PACKAGE_STRING # PACKAGE_TARNAME # PACKAGE_VERSION # STDC_HEADERS # VERSION BEGIN { RS = "" ; FS = "\n" } \ !/.#define PACKAGE./ && \ !/.#define VERSION./ && \ !/.#define STDC_HEADERS./ \ { print $0"\n" } zfs-0.8.3/config/PaxHeaders.151519/kernel-kuidgid.m40000644000000000000000000000007413612141515020017 xustar000000000000000030 atime=1579730378.228496191 30 ctime=1579730468.551396119 zfs-0.8.3/config/kernel-kuidgid.m40000644016037001603700000000161513612141515020017 0ustar00hutter2hutter200000000000000dnl # dnl # User namespaces, use kuid_t in place of uid_t dnl # where available. Not strictly a user namespaces thing dnl # but it should prevent surprises dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_KUIDGID_T], [ ZFS_LINUX_TEST_SRC([kuidgid_t_init], [ #include ], [ kuid_t userid __attribute__ ((unused)) = KUIDT_INIT(0); kgid_t groupid __attribute__ ((unused)) = KGIDT_INIT(0); ]) ZFS_LINUX_TEST_SRC([kuidgid_t], [ #include ], [ kuid_t userid __attribute__ ((unused)) = 0; kgid_t groupid __attribute__ ((unused)) = 0; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_KUIDGID_T], [ AC_MSG_CHECKING([whether kuid_t/kgid_t is available]) ZFS_LINUX_TEST_RESULT([kuidgid_t_init], [ ZFS_LINUX_TEST_RESULT([kuidgid_t], [ AC_MSG_RESULT(yes; optional) ],[ AC_MSG_RESULT(yes; mandatory) AC_DEFINE(HAVE_KUIDGID_T, 1, [kuid_t/kgid_t in use]) ]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel.m40000644000000000000000000000007313612141520016374 xustar000000000000000029 atime=1579730378.20049529 30 ctime=1579730468.639398945 zfs-0.8.3/config/kernel.m40000644016037001603700000006032213612141520016375 0ustar00hutter2hutter200000000000000dnl # dnl # Default ZFS kernel configuration dnl # AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ dnl # Setup the kernel build environment. ZFS_AC_KERNEL ZFS_AC_QAT dnl # Sanity checks for module building and CONFIG_* defines ZFS_AC_KERNEL_TEST_MODULE ZFS_AC_KERNEL_CONFIG_DEFINED dnl # Sequential ZFS_LINUX_TRY_COMPILE tests ZFS_AC_KERNEL_FPU_HEADER ZFS_AC_KERNEL_WAIT_QUEUE_ENTRY_T ZFS_AC_KERNEL_MISC_MINOR ZFS_AC_KERNEL_DECLARE_EVENT_CLASS dnl # Parallel ZFS_LINUX_TEST_SRC / ZFS_LINUX_TEST_RESULT tests ZFS_AC_KERNEL_TEST_SRC ZFS_AC_KERNEL_TEST_RESULT AS_IF([test "$LINUX_OBJ" != "$LINUX"], [ KERNEL_MAKE="$KERNEL_MAKE O=$LINUX_OBJ" ]) AC_SUBST(KERNEL_MAKE) ]) dnl # dnl # Generate and compile all of the kernel API test cases to determine dnl # which interfaces are available. By invoking the kernel build system dnl # only once the compilation can be done in parallel significantly dnl # speeding up the process. dnl # AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [ ZFS_AC_KERNEL_SRC_OBJTOOL ZFS_AC_KERNEL_SRC_GLOBAL_PAGE_STATE ZFS_AC_KERNEL_SRC_ACCESS_OK_TYPE ZFS_AC_KERNEL_SRC_CTL_NAME ZFS_AC_KERNEL_SRC_PDE_DATA ZFS_AC_KERNEL_SRC_FALLOCATE ZFS_AC_KERNEL_SRC_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE ZFS_AC_KERNEL_SRC_RWSEM ZFS_AC_KERNEL_SRC_SCHED ZFS_AC_KERNEL_SRC_USLEEP_RANGE ZFS_AC_KERNEL_SRC_KMEM_CACHE ZFS_AC_KERNEL_SRC_WAIT ZFS_AC_KERNEL_SRC_INODE_TIMES ZFS_AC_KERNEL_SRC_INODE_LOCK ZFS_AC_KERNEL_SRC_GROUP_INFO_GID ZFS_AC_KERNEL_SRC_RW ZFS_AC_KERNEL_SRC_TIMER_SETUP ZFS_AC_KERNEL_SRC_CURRENT_BIO_TAIL ZFS_AC_KERNEL_SRC_SUPER_USER_NS ZFS_AC_KERNEL_SRC_SUBMIT_BIO ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS ZFS_AC_KERNEL_SRC_BLKDEV_GET_BY_PATH ZFS_AC_KERNEL_SRC_BLKDEV_REREAD_PART ZFS_AC_KERNEL_SRC_INVALIDATE_BDEV ZFS_AC_KERNEL_SRC_LOOKUP_BDEV ZFS_AC_KERNEL_SRC_BDEV_OPEN_EXCLUSIVE ZFS_AC_KERNEL_SRC_BDEV_LOGICAL_BLOCK_SIZE ZFS_AC_KERNEL_SRC_BDEV_PHYSICAL_BLOCK_SIZE ZFS_AC_KERNEL_SRC_BIO_BVEC_ITER ZFS_AC_KERNEL_SRC_BIO_FAILFAST ZFS_AC_KERNEL_SRC_BIO_SET_DEV ZFS_AC_KERNEL_SRC_BIO_OPS ZFS_AC_KERNEL_SRC_BIO_END_IO_T_ARGS ZFS_AC_KERNEL_SRC_BIO_BI_STATUS ZFS_AC_KERNEL_SRC_BIO_RW_BARRIER ZFS_AC_KERNEL_SRC_BIO_RW_DISCARD ZFS_AC_KERNEL_SRC_BLK_QUEUE_BDI ZFS_AC_KERNEL_SRC_BLK_QUEUE_DISCARD ZFS_AC_KERNEL_SRC_BLK_QUEUE_SECURE_ERASE ZFS_AC_KERNEL_SRC_BLK_QUEUE_FLAGS ZFS_AC_KERNEL_SRC_BLK_QUEUE_FLUSH ZFS_AC_KERNEL_SRC_BLK_QUEUE_MAX_HW_SECTORS ZFS_AC_KERNEL_SRC_BLK_QUEUE_MAX_SEGMENTS ZFS_AC_KERNEL_SRC_BLK_QUEUE_PLUG ZFS_AC_KERNEL_SRC_GET_DISK_AND_MODULE ZFS_AC_KERNEL_SRC_GET_DISK_RO ZFS_AC_KERNEL_SRC_GENERIC_READLINK_GLOBAL ZFS_AC_KERNEL_SRC_DISCARD_GRANULARITY ZFS_AC_KERNEL_SRC_INODE_OWNER_OR_CAPABLE ZFS_AC_KERNEL_SRC_XATTR ZFS_AC_KERNEL_SRC_ACL ZFS_AC_KERNEL_SRC_INODE_GETATTR ZFS_AC_KERNEL_SRC_INODE_SET_FLAGS ZFS_AC_KERNEL_SRC_INODE_SET_IVERSION ZFS_AC_KERNEL_SRC_SHOW_OPTIONS ZFS_AC_KERNEL_SRC_FILE_INODE ZFS_AC_KERNEL_SRC_FILE_DENTRY ZFS_AC_KERNEL_SRC_FSYNC ZFS_AC_KERNEL_SRC_AIO_FSYNC ZFS_AC_KERNEL_SRC_EVICT_INODE ZFS_AC_KERNEL_SRC_DIRTY_INODE ZFS_AC_KERNEL_SRC_SHRINKER ZFS_AC_KERNEL_SRC_MKDIR_UMODE_T ZFS_AC_KERNEL_SRC_LOOKUP_NAMEIDATA ZFS_AC_KERNEL_SRC_CREATE_NAMEIDATA ZFS_AC_KERNEL_SRC_GET_LINK ZFS_AC_KERNEL_SRC_PUT_LINK ZFS_AC_KERNEL_SRC_TMPFILE ZFS_AC_KERNEL_SRC_TRUNCATE_RANGE ZFS_AC_KERNEL_SRC_AUTOMOUNT ZFS_AC_KERNEL_SRC_ENCODE_FH_WITH_INODE ZFS_AC_KERNEL_SRC_COMMIT_METADATA ZFS_AC_KERNEL_SRC_CLEAR_INODE ZFS_AC_KERNEL_SRC_SETATTR_PREPARE ZFS_AC_KERNEL_SRC_INSERT_INODE_LOCKED ZFS_AC_KERNEL_SRC_DENTRY ZFS_AC_KERNEL_SRC_TRUNCATE_SETSIZE ZFS_AC_KERNEL_SRC_SECURITY_INODE ZFS_AC_KERNEL_SRC_FST_MOUNT ZFS_AC_KERNEL_SRC_BDI ZFS_AC_KERNEL_SRC_SET_NLINK ZFS_AC_KERNEL_SRC_SGET ZFS_AC_KERNEL_SRC_LSEEK_EXECUTE ZFS_AC_KERNEL_SRC_VFS_GETATTR ZFS_AC_KERNEL_SRC_VFS_FSYNC_2ARGS ZFS_AC_KERNEL_SRC_VFS_ITERATE ZFS_AC_KERNEL_SRC_VFS_DIRECT_IO ZFS_AC_KERNEL_SRC_VFS_RW_ITERATE ZFS_AC_KERNEL_SRC_VFS_GENERIC_WRITE_CHECKS ZFS_AC_KERNEL_SRC_KMAP_ATOMIC_ARGS ZFS_AC_KERNEL_SRC_FOLLOW_DOWN_ONE ZFS_AC_KERNEL_SRC_MAKE_REQUEST_FN ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT ZFS_AC_KERNEL_SRC_FPU ZFS_AC_KERNEL_SRC_FMODE_T ZFS_AC_KERNEL_SRC_KUIDGID_T ZFS_AC_KERNEL_SRC_KUID_HELPERS ZFS_AC_KERNEL_SRC_MODULE_PARAM_CALL_CONST ZFS_AC_KERNEL_SRC_RENAME_WANTS_FLAGS ZFS_AC_KERNEL_SRC_CURRENT_TIME ZFS_AC_KERNEL_SRC_USERNS_CAPABILITIES ZFS_AC_KERNEL_SRC_IN_COMPAT_SYSCALL ZFS_AC_KERNEL_SRC_KTIME_GET_COARSE_REAL_TS64 ZFS_AC_KERNEL_SRC_TOTALRAM_PAGES_FUNC ZFS_AC_KERNEL_SRC_TOTALHIGH_PAGES ZFS_AC_KERNEL_SRC_KSTRTOUL AC_MSG_CHECKING([for available kernel interfaces]) ZFS_LINUX_TEST_COMPILE_ALL([kabi]) AC_MSG_RESULT([done]) ]) dnl # dnl # Check results of kernel interface tests. dnl # AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [ ZFS_AC_KERNEL_ACCESS_OK_TYPE ZFS_AC_KERNEL_GLOBAL_PAGE_STATE ZFS_AC_KERNEL_OBJTOOL ZFS_AC_KERNEL_CTL_NAME ZFS_AC_KERNEL_PDE_DATA ZFS_AC_KERNEL_FALLOCATE ZFS_AC_KERNEL_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE ZFS_AC_KERNEL_RWSEM ZFS_AC_KERNEL_SCHED ZFS_AC_KERNEL_USLEEP_RANGE ZFS_AC_KERNEL_KMEM_CACHE ZFS_AC_KERNEL_WAIT ZFS_AC_KERNEL_INODE_TIMES ZFS_AC_KERNEL_INODE_LOCK ZFS_AC_KERNEL_GROUP_INFO_GID ZFS_AC_KERNEL_RW ZFS_AC_KERNEL_TIMER_SETUP ZFS_AC_KERNEL_CURRENT_BIO_TAIL ZFS_AC_KERNEL_SUPER_USER_NS ZFS_AC_KERNEL_SUBMIT_BIO ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS ZFS_AC_KERNEL_BLKDEV_GET_BY_PATH ZFS_AC_KERNEL_BLKDEV_REREAD_PART ZFS_AC_KERNEL_INVALIDATE_BDEV ZFS_AC_KERNEL_LOOKUP_BDEV ZFS_AC_KERNEL_BDEV_OPEN_EXCLUSIVE ZFS_AC_KERNEL_BDEV_LOGICAL_BLOCK_SIZE ZFS_AC_KERNEL_BDEV_PHYSICAL_BLOCK_SIZE ZFS_AC_KERNEL_BIO_BVEC_ITER ZFS_AC_KERNEL_BIO_FAILFAST ZFS_AC_KERNEL_BIO_SET_DEV ZFS_AC_KERNEL_BIO_OPS ZFS_AC_KERNEL_BIO_END_IO_T_ARGS ZFS_AC_KERNEL_BIO_BI_STATUS ZFS_AC_KERNEL_BIO_RW_BARRIER ZFS_AC_KERNEL_BIO_RW_DISCARD ZFS_AC_KERNEL_BLK_QUEUE_BDI ZFS_AC_KERNEL_BLK_QUEUE_DISCARD ZFS_AC_KERNEL_BLK_QUEUE_SECURE_ERASE ZFS_AC_KERNEL_BLK_QUEUE_FLAGS ZFS_AC_KERNEL_BLK_QUEUE_FLUSH ZFS_AC_KERNEL_BLK_QUEUE_MAX_HW_SECTORS ZFS_AC_KERNEL_BLK_QUEUE_MAX_SEGMENTS ZFS_AC_KERNEL_BLK_QUEUE_PLUG ZFS_AC_KERNEL_GET_DISK_AND_MODULE ZFS_AC_KERNEL_GET_DISK_RO ZFS_AC_KERNEL_GENERIC_READLINK_GLOBAL ZFS_AC_KERNEL_DISCARD_GRANULARITY ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE ZFS_AC_KERNEL_XATTR ZFS_AC_KERNEL_ACL ZFS_AC_KERNEL_INODE_GETATTR ZFS_AC_KERNEL_INODE_SET_FLAGS ZFS_AC_KERNEL_INODE_SET_IVERSION ZFS_AC_KERNEL_SHOW_OPTIONS ZFS_AC_KERNEL_FILE_INODE ZFS_AC_KERNEL_FILE_DENTRY ZFS_AC_KERNEL_FSYNC ZFS_AC_KERNEL_AIO_FSYNC ZFS_AC_KERNEL_EVICT_INODE ZFS_AC_KERNEL_DIRTY_INODE ZFS_AC_KERNEL_SHRINKER ZFS_AC_KERNEL_MKDIR_UMODE_T ZFS_AC_KERNEL_LOOKUP_NAMEIDATA ZFS_AC_KERNEL_CREATE_NAMEIDATA ZFS_AC_KERNEL_GET_LINK ZFS_AC_KERNEL_PUT_LINK ZFS_AC_KERNEL_TMPFILE ZFS_AC_KERNEL_TRUNCATE_RANGE ZFS_AC_KERNEL_AUTOMOUNT ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE ZFS_AC_KERNEL_COMMIT_METADATA ZFS_AC_KERNEL_CLEAR_INODE ZFS_AC_KERNEL_SETATTR_PREPARE ZFS_AC_KERNEL_INSERT_INODE_LOCKED ZFS_AC_KERNEL_DENTRY ZFS_AC_KERNEL_TRUNCATE_SETSIZE ZFS_AC_KERNEL_SECURITY_INODE ZFS_AC_KERNEL_FST_MOUNT ZFS_AC_KERNEL_BDI ZFS_AC_KERNEL_SET_NLINK ZFS_AC_KERNEL_SGET ZFS_AC_KERNEL_LSEEK_EXECUTE ZFS_AC_KERNEL_VFS_GETATTR ZFS_AC_KERNEL_VFS_FSYNC_2ARGS ZFS_AC_KERNEL_VFS_ITERATE ZFS_AC_KERNEL_VFS_DIRECT_IO ZFS_AC_KERNEL_VFS_RW_ITERATE ZFS_AC_KERNEL_VFS_GENERIC_WRITE_CHECKS ZFS_AC_KERNEL_KMAP_ATOMIC_ARGS ZFS_AC_KERNEL_FOLLOW_DOWN_ONE ZFS_AC_KERNEL_MAKE_REQUEST_FN ZFS_AC_KERNEL_GENERIC_IO_ACCT ZFS_AC_KERNEL_FPU ZFS_AC_KERNEL_FMODE_T ZFS_AC_KERNEL_KUIDGID_T ZFS_AC_KERNEL_KUID_HELPERS ZFS_AC_KERNEL_MODULE_PARAM_CALL_CONST ZFS_AC_KERNEL_RENAME_WANTS_FLAGS ZFS_AC_KERNEL_CURRENT_TIME ZFS_AC_KERNEL_USERNS_CAPABILITIES ZFS_AC_KERNEL_IN_COMPAT_SYSCALL ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64 ZFS_AC_KERNEL_TOTALRAM_PAGES_FUNC ZFS_AC_KERNEL_TOTALHIGH_PAGES ZFS_AC_KERNEL_KSTRTOUL ]) dnl # dnl # Detect name used for Module.symvers file in kernel dnl # AC_DEFUN([ZFS_AC_MODULE_SYMVERS], [ modpost=$LINUX/scripts/Makefile.modpost AC_MSG_CHECKING([kernel file name for module symbols]) AS_IF([test "x$enable_linux_builtin" != xyes -a -f "$modpost"], [ AS_IF([grep -q Modules.symvers $modpost], [ LINUX_SYMBOLS=Modules.symvers ], [ LINUX_SYMBOLS=Module.symvers ]) AS_IF([test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"], [ AC_MSG_ERROR([ *** Please make sure the kernel devel package for your distribution *** is installed. If you are building with a custom kernel, make sure *** the kernel is configured, built, and the '--with-linux=PATH' *** configure option refers to the location of the kernel source. ]) ]) ], [ LINUX_SYMBOLS=NONE ]) AC_MSG_RESULT($LINUX_SYMBOLS) AC_SUBST(LINUX_SYMBOLS) ]) dnl # dnl # Detect the kernel to be built against dnl # AC_DEFUN([ZFS_AC_KERNEL], [ AC_ARG_WITH([linux], AS_HELP_STRING([--with-linux=PATH], [Path to kernel source]), [kernelsrc="$withval"]) AC_ARG_WITH(linux-obj, AS_HELP_STRING([--with-linux-obj=PATH], [Path to kernel build objects]), [kernelbuild="$withval"]) AC_MSG_CHECKING([kernel source directory]) AS_IF([test -z "$kernelsrc"], [ AS_IF([test -e "/lib/modules/$(uname -r)/source"], [ headersdir="/lib/modules/$(uname -r)/source" sourcelink=$(readlink -f "$headersdir") ], [test -e "/lib/modules/$(uname -r)/build"], [ headersdir="/lib/modules/$(uname -r)/build" sourcelink=$(readlink -f "$headersdir") ], [ sourcelink=$(ls -1d /usr/src/kernels/* \ /usr/src/linux-* \ 2>/dev/null | grep -v obj | tail -1) ]) AS_IF([test -n "$sourcelink" && test -e ${sourcelink}], [ kernelsrc=`readlink -f ${sourcelink}` ], [ kernelsrc="[Not found]" ]) ], [ AS_IF([test "$kernelsrc" = "NONE"], [ kernsrcver=NONE ]) withlinux=yes ]) AC_MSG_RESULT([$kernelsrc]) AS_IF([test ! -d "$kernelsrc"], [ AC_MSG_ERROR([ *** Please make sure the kernel devel package for your distribution *** is installed and then try again. If that fails, you can specify the *** location of the kernel source with the '--with-linux=PATH' option.]) ]) AC_MSG_CHECKING([kernel build directory]) AS_IF([test -z "$kernelbuild"], [ AS_IF([test x$withlinux != xyes -a -e "/lib/modules/$(uname -r)/build"], [ kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` ], [test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}], [ kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} ], [test -d ${kernelsrc}-obj/${target_cpu}/default], [ kernelbuild=${kernelsrc}-obj/${target_cpu}/default ], [test -d `dirname ${kernelsrc}`/build-${target_cpu}], [ kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} ], [ kernelbuild=${kernelsrc} ]) ]) AC_MSG_RESULT([$kernelbuild]) AC_MSG_CHECKING([kernel source version]) utsrelease1=$kernelbuild/include/linux/version.h utsrelease2=$kernelbuild/include/linux/utsrelease.h utsrelease3=$kernelbuild/include/generated/utsrelease.h AS_IF([test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1], [ utsrelease=linux/version.h ], [test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2], [ utsrelease=linux/utsrelease.h ], [test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3], [ utsrelease=generated/utsrelease.h ]) AS_IF([test "$utsrelease"], [ kernsrcver=`(echo "#include <$utsrelease>"; echo "kernsrcver=UTS_RELEASE") | ${CPP} -I $kernelbuild/include - | grep "^kernsrcver=" | cut -d \" -f 2` AS_IF([test -z "$kernsrcver"], [ AC_MSG_RESULT([Not found]) AC_MSG_ERROR([ *** Cannot determine kernel version. ]) ]) ], [ AC_MSG_RESULT([Not found]) if test "x$enable_linux_builtin" != xyes; then AC_MSG_ERROR([ *** Cannot find UTS_RELEASE definition. ]) else AC_MSG_ERROR([ *** Cannot find UTS_RELEASE definition. *** Please run 'make prepare' inside the kernel source tree.]) fi ]) AC_MSG_RESULT([$kernsrcver]) LINUX=${kernelsrc} LINUX_OBJ=${kernelbuild} LINUX_VERSION=${kernsrcver} AC_SUBST(LINUX) AC_SUBST(LINUX_OBJ) AC_SUBST(LINUX_VERSION) ZFS_AC_MODULE_SYMVERS ]) dnl # dnl # Detect the QAT module to be built against, QAT provides hardware dnl # acceleration for data compression: dnl # dnl # https://01.org/intel-quickassist-technology dnl # dnl # 1) Download and install QAT driver from the above link dnl # 2) Start QAT driver in your system: dnl # service qat_service start dnl # 3) Enable QAT in ZFS, e.g.: dnl # ./configure --with-qat=/QAT1.6 dnl # make dnl # 4) Set GZIP compression in ZFS dataset: dnl # zfs set compression = gzip dnl # dnl # Then the data written to this ZFS pool is compressed by QAT accelerator dnl # automatically, and de-compressed by QAT when read from the pool. dnl # dnl # 1) Get QAT hardware statistics with: dnl # cat /proc/icp_dh895xcc_dev/qat dnl # 2) To disable QAT: dnl # insmod zfs.ko zfs_qat_disable=1 dnl # AC_DEFUN([ZFS_AC_QAT], [ AC_ARG_WITH([qat], AS_HELP_STRING([--with-qat=PATH], [Path to qat source]), AS_IF([test "$withval" = "yes"], AC_MSG_ERROR([--with-qat=PATH requires a PATH]), [qatsrc="$withval"])) AC_ARG_WITH([qat-obj], AS_HELP_STRING([--with-qat-obj=PATH], [Path to qat build objects]), [qatbuild="$withval"]) AS_IF([test ! -z "${qatsrc}"], [ AC_MSG_CHECKING([qat source directory]) AC_MSG_RESULT([$qatsrc]) QAT_SRC="${qatsrc}/quickassist" AS_IF([ test ! -e "$QAT_SRC/include/cpa.h"], [ AC_MSG_ERROR([ *** Please make sure the qat driver package is installed *** and specify the location of the qat source with the *** '--with-qat=PATH' option then try again. Failed to *** find cpa.h in: ${QAT_SRC}/include]) ]) ]) AS_IF([test ! -z "${qatsrc}"], [ AC_MSG_CHECKING([qat build directory]) AS_IF([test -z "$qatbuild"], [ qatbuild="${qatsrc}/build" ]) AC_MSG_RESULT([$qatbuild]) QAT_OBJ=${qatbuild} AS_IF([ ! test -e "$QAT_OBJ/icp_qa_al.ko" && ! test -e "$QAT_OBJ/qat_api.ko"], [ AC_MSG_ERROR([ *** Please make sure the qat driver is installed then try again. *** Failed to find icp_qa_al.ko or qat_api.ko in: $QAT_OBJ]) ]) AC_SUBST(QAT_SRC) AC_SUBST(QAT_OBJ) AC_DEFINE(HAVE_QAT, 1, [qat is enabled and existed]) ]) dnl # dnl # Detect the name used for the QAT Module.symvers file. dnl # AS_IF([test ! -z "${qatsrc}"], [ AC_MSG_CHECKING([qat file for module symbols]) QAT_SYMBOLS=$QAT_SRC/lookaside/access_layer/src/Module.symvers AS_IF([test -r $QAT_SYMBOLS], [ AC_MSG_RESULT([$QAT_SYMBOLS]) AC_SUBST(QAT_SYMBOLS) ],[ AC_MSG_ERROR([ *** Please make sure the qat driver is installed then try again. *** Failed to find Module.symvers in: $QAT_SYMBOLS ]) ]) ]) ]) dnl # dnl # Basic toolchain sanity check. dnl # AC_DEFUN([ZFS_AC_KERNEL_TEST_MODULE], [ AC_MSG_CHECKING([whether modules can be built]) ZFS_LINUX_TRY_COMPILE([], [], [ AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) if test "x$enable_linux_builtin" != xyes; then AC_MSG_ERROR([ *** Unable to build an empty module. ]) else AC_MSG_ERROR([ *** Unable to build an empty module. *** Please run 'make scripts' inside the kernel source tree.]) fi ]) ]) dnl # dnl # ZFS_LINUX_CONFTEST_H dnl # AC_DEFUN([ZFS_LINUX_CONFTEST_H], [ test -d build/$2 || mkdir -p build/$2 cat - <<_ACEOF >build/$2/$2.h $1 _ACEOF ]) dnl # dnl # ZFS_LINUX_CONFTEST_C dnl # AC_DEFUN([ZFS_LINUX_CONFTEST_C], [ test -d build/$2 || mkdir -p build/$2 cat confdefs.h - <<_ACEOF >build/$2/$2.c $1 _ACEOF ]) dnl # dnl # ZFS_LINUX_CONFTEST_MAKEFILE dnl # dnl # $1 - test case name dnl # $2 - add to top-level Makefile dnl # $3 - additional build flags dnl # AC_DEFUN([ZFS_LINUX_CONFTEST_MAKEFILE], [ test -d build || mkdir -p build test -d build/$1 || mkdir -p build/$1 file=build/$1/Makefile dnl # Example command line to manually build source. cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/$1 ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF dnl # Additional custom CFLAGS as requested. m4_ifval($3, [echo "ccflags-y += $3" >>$file], []) dnl # Test case source echo "obj-m := $1.o" >>$file AS_IF([test "x$2" = "xyes"], [echo "obj-m += $1/" >>build/Makefile], []) ]) dnl # dnl # ZFS_LINUX_TEST_PROGRAM(C)([PROLOGUE], [BODY]) dnl # m4_define([ZFS_LINUX_TEST_PROGRAM], [ $1 int main (void) { $2 ; return 0; } ]) dnl # dnl # ZFS_LINUX_TEST_REMOVE dnl # dnl # Removes the specified test source and results. dnl # AC_DEFUN([ZFS_LINUX_TEST_REMOVE], [ test -d build/$1 && rm -Rf build/$1 test -f build/Makefile && sed '/$1/d' build/Makefile ]) dnl # dnl # ZFS_LINUX_COMPILE dnl # dnl # $1 - build dir dnl # $2 - test command dnl # $3 - pass command dnl # $4 - fail command dnl # $5 - set KBUILD_MODPOST_NOFINAL='yes' dnl # $6 - set KBUILD_MODPOST_WARN='yes' dnl # dnl # Used internally by ZFS_LINUX_TEST_{COMPILE,MODPOST} dnl # AC_DEFUN([ZFS_LINUX_COMPILE], [ AC_TRY_COMMAND([ KBUILD_MODPOST_NOFINAL="$5" KBUILD_MODPOST_WARN="$6" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/$1 &>$1/build.log]) AS_IF([AC_TRY_COMMAND([$2])], [$3], [$4]) ]) dnl # dnl # ZFS_LINUX_TEST_COMPILE dnl # dnl # Perform a full compile excluding the final modpost phase. dnl # AC_DEFUN([ZFS_LINUX_TEST_COMPILE], [ ZFS_LINUX_COMPILE([$2], [test -f $2/build.log], [ mv $2/Makefile $2/Makefile.compile.$1 mv $2/build.log $2/build.log.$1 ],[ AC_MSG_ERROR([ *** Unable to compile test source to determine kernel interfaces.]) ], [yes], []) ]) dnl # dnl # ZFS_LINUX_TEST_MODPOST dnl # dnl # Perform a full compile including the modpost phase. This may dnl # be an incremental build if the objects have already been built. dnl # AC_DEFUN([ZFS_LINUX_TEST_MODPOST], [ ZFS_LINUX_COMPILE([$2], [test -f $2/build.log], [ mv $2/Makefile $2/Makefile.modpost.$1 cat $2/build.log >>build/build.log.$1 ],[ AC_MSG_ERROR([ *** Unable to modpost test source to determine kernel interfaces.]) ], [], [yes]) ]) dnl # dnl # Perform the compilation of the test cases in two phases. dnl # dnl # Phase 1) attempt to build the object files for all of the tests dnl # defined by the ZFS_LINUX_TEST_SRC macro. But do not dnl # perform the final modpost stage. dnl # dnl # Phase 2) disable all tests which failed the initial compilation, dnl # then invoke the final modpost step for the remaining tests. dnl # dnl # This allows us efficiently build the test cases in parallel while dnl # remaining resilient to build failures which are expected when dnl # detecting the available kernel interfaces. dnl # dnl # The maximum allowed parallelism can be controlled by setting the dnl # TEST_JOBS environment variable. Otherwise, it default to $(nproc). dnl # AC_DEFUN([ZFS_LINUX_TEST_COMPILE_ALL], [ dnl # Phase 1 - Compilation only, final linking is skipped. ZFS_LINUX_TEST_COMPILE([$1], [build]) dnl # dnl # Phase 2 - When building external modules disable test cases dnl # which failed to compile and invoke modpost to verify the dnl # final linking. dnl # dnl # Test names suffixed with '_license' call modpost independently dnl # to ensure that a single incompatibility does not result in the dnl # modpost phase exiting early. This check is not performed on dnl # every symbol since the majority are compatible and doing so dnl # would significantly slow down this phase. dnl # dnl # When configuring for builtin (--enable-linux-builtin) dnl # fake the linking step artificially create the expected .ko dnl # files for tests which did compile. This is required for dnl # kernels which do not have loadable module support or have dnl # not yet been built. dnl # AS_IF([test "x$enable_linux_builtin" = "xno"], [ for dir in $(awk '/^obj-m/ { print [$]3 }' \ build/Makefile.compile.$1); do name=${dir%/} AS_IF([test -f build/$name/$name.o], [ AS_IF([test "${name##*_}" = "license"], [ ZFS_LINUX_TEST_MODPOST([$1], [build/$name]) echo "obj-n += $dir" >>build/Makefile ], [ echo "obj-m += $dir" >>build/Makefile ]) ], [ echo "obj-n += $dir" >>build/Makefile ]) done ZFS_LINUX_TEST_MODPOST([$1], [build]) ], [ for dir in $(awk '/^obj-m/ { print [$]3 }' \ build/Makefile.compile.$1); do name=${dir%/} AS_IF([test -f build/$name/$name.o], [ touch build/$name/$name.ko ]) done ]) ]) dnl # dnl # ZFS_LINUX_TEST_SRC dnl # dnl # $1 - name dnl # $2 - global dnl # $3 - source dnl # $4 - extra cflags dnl # $5 - check license-compatibility dnl # dnl # N.B because all of the test cases are compiled in parallel they dnl # must never depend on the results of previous tests. Each test dnl # needs to be entirely independent. dnl # AC_DEFUN([ZFS_LINUX_TEST_SRC], [ ZFS_LINUX_CONFTEST_C([ZFS_LINUX_TEST_PROGRAM([[$2]], [[$3]])], [$1]) ZFS_LINUX_CONFTEST_MAKEFILE([$1], [yes], [$4]) AS_IF([ test -n "$5" ], [ ZFS_LINUX_CONFTEST_C([ZFS_LINUX_TEST_PROGRAM([[ #include MODULE_LICENSE("$5"); $2]], [[$3]])], [$1_license]) ZFS_LINUX_CONFTEST_MAKEFILE([$1_license], [yes], [$4]) ]) ]) dnl # dnl # ZFS_LINUX_TEST_RESULT dnl # dnl # $1 - name of a test source (ZFS_LINUX_TEST_SRC) dnl # $2 - run on success (valid .ko generated) dnl # $3 - run on failure (unable to compile) dnl # AC_DEFUN([ZFS_LINUX_TEST_RESULT], [ AS_IF([test -d build/$1], [ AS_IF([test -f build/$1/$1.ko], [$2], [$3]) ], [ AC_MSG_ERROR([ *** No matching source for the "$1" test, check that *** both the test source and result macros refer to the same name. ]) ]) ]) dnl # dnl # ZFS_LINUX_TEST_ERROR dnl # dnl # Generic error message which can be used when none of the expected dnl # kernel interfaces were detected. dnl # AC_DEFUN([ZFS_LINUX_TEST_ERROR], [ AC_MSG_ERROR([ *** None of the expected "$1" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX ]) ]) dnl # dnl # ZFS_LINUX_TEST_RESULT_SYMBOL dnl # dnl # Like ZFS_LINUX_TEST_RESULT except ZFS_CHECK_SYMBOL_EXPORT is called to dnl # verify symbol exports, unless --enable-linux-builtin was provided to dnl # configure. dnl # AC_DEFUN([ZFS_LINUX_TEST_RESULT_SYMBOL], [ AS_IF([ ! test -f build/$1/$1.ko], [ $5 ], [ AS_IF([test "x$enable_linux_builtin" != "xyes"], [ ZFS_CHECK_SYMBOL_EXPORT([$2], [$3], [$4], [$5]) ], [ $4 ]) ]) ]) dnl # dnl # ZFS_LINUX_COMPILE_IFELSE dnl # AC_DEFUN([ZFS_LINUX_COMPILE_IFELSE], [ ZFS_LINUX_TEST_REMOVE([conftest]) m4_ifvaln([$1], [ZFS_LINUX_CONFTEST_C([$1], [conftest])]) m4_ifvaln([$5], [ZFS_LINUX_CONFTEST_H([$5], [conftest])], [ZFS_LINUX_CONFTEST_H([], [conftest])]) ZFS_LINUX_CONFTEST_MAKEFILE([conftest], [no], [m4_ifvaln([$5], [-I$PWD/build/conftest], [])]) ZFS_LINUX_COMPILE([build/conftest], [$2], [$3], [$4], [], []) ]) dnl # dnl # ZFS_LINUX_TRY_COMPILE dnl # dnl # $1 - global dnl # $2 - source dnl # $3 - run on success (valid .ko generated) dnl # $4 - run on failure (unable to compile) dnl # AC_DEFUN([ZFS_LINUX_TRY_COMPILE], [ ZFS_LINUX_COMPILE_IFELSE( [ZFS_LINUX_TEST_PROGRAM([[$1]], [[$2]])], [test -f build/conftest/conftest.ko], [$3], [$4]) ]) dnl # dnl # ZFS_CHECK_SYMBOL_EXPORT dnl # dnl # Check if a symbol is exported on not by consulting the symbols dnl # file, or optionally the source code. dnl # AC_DEFUN([ZFS_CHECK_SYMBOL_EXPORT], [ grep -q -E '[[[:space:]]]$1[[[:space:]]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in $2; do grep -q -E "EXPORT_SYMBOL.*($1)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : $4 else : $3 fi else : $3 fi ]) dnl # dnl # ZFS_LINUX_TRY_COMPILE_SYMBOL dnl # dnl # Like ZFS_LINUX_TRY_COMPILER except ZFS_CHECK_SYMBOL_EXPORT is called dnl # to verify symbol exports, unless --enable-linux-builtin was provided dnl # to configure. dnl # AC_DEFUN([ZFS_LINUX_TRY_COMPILE_SYMBOL], [ ZFS_LINUX_TRY_COMPILE([$1], [$2], [rc=0], [rc=1]) if test $rc -ne 0; then : $6 else if test "x$enable_linux_builtin" != xyes; then ZFS_CHECK_SYMBOL_EXPORT([$3], [$4], [rc=0], [rc=1]) fi if test $rc -ne 0; then : $6 else : $5 fi fi ]) dnl # dnl # ZFS_LINUX_TRY_COMPILE_HEADER dnl # like ZFS_LINUX_TRY_COMPILE, except the contents conftest.h are dnl # provided via the fifth parameter dnl # AC_DEFUN([ZFS_LINUX_TRY_COMPILE_HEADER], [ ZFS_LINUX_COMPILE_IFELSE( [ZFS_LINUX_TEST_PROGRAM([[$1]], [[$2]])], [test -f build/conftest/conftest.ko], [$3], [$4], [$5]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-lookup-nameidata.m40000644000000000000000000000007413612141515021631 xustar000000000000000030 atime=1579730378.227496159 30 ctime=1579730468.555396247 zfs-0.8.3/config/kernel-lookup-nameidata.m40000644016037001603700000000130613612141515021626 0ustar00hutter2hutter200000000000000dnl # dnl # 3.6 API change dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_LOOKUP_NAMEIDATA], [ ZFS_LINUX_TEST_SRC([lookup_nameidata], [ #include #include struct dentry *inode_lookup(struct inode *inode, struct dentry *dentry, struct nameidata *nidata) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .lookup = inode_lookup, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_LOOKUP_NAMEIDATA], [ AC_MSG_CHECKING([whether iops->lookup() passes nameidata]) ZFS_LINUX_TEST_RESULT([lookup_nameidata], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_LOOKUP_NAMEIDATA, 1, [iops->lookup() passes nameidata]) ],[ AC_MSG_RESULT(no) ]) ]) zfs-0.8.3/config/PaxHeaders.151519/compile0000644000000000000000000000013213612142772016233 xustar000000000000000030 mtime=1579730426.461044719 30 atime=1579730426.461044719 30 ctime=1579730468.759402799 zfs-0.8.3/config/compile0000755016037001603700000000727113612142772016247 0ustar00hutter2hutter200000000000000#! /bin/sh # Wrapper for compilers which do not understand `-c -o'. scriptversion=2009-10-06.20; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software # Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand `-c -o'. Remove `-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file `INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; esac ofile= cfile= eat= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as `compile cc -o foo foo.c'. # So we strip `-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no `-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # `.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use `[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: zfs-0.8.3/config/PaxHeaders.151519/user-udev.m40000644000000000000000000000007313607166132017045 xustar000000000000000029 atime=1579730378.18149468 30 ctime=1579730468.702400969 zfs-0.8.3/config/user-udev.m40000644016037001603700000000132413607166132017043 0ustar00hutter2hutter200000000000000AC_DEFUN([ZFS_AC_CONFIG_USER_UDEV], [ AC_MSG_CHECKING(for udev directories) AC_ARG_WITH(udevdir, AC_HELP_STRING([--with-udevdir=DIR], [install udev helpers @<:@default=check@:>@]), [udevdir=$withval], [udevdir=check]) AS_IF([test "x$udevdir" = xcheck], [ path1=/lib/udev path2=/usr/lib/udev default=$path2 AS_IF([test -d "$path1"], [udevdir="$path1"], [ AS_IF([test -d "$path2"], [udevdir="$path2"], [udevdir="$default"]) ]) ]) AC_ARG_WITH(udevruledir, AC_HELP_STRING([--with-udevruledir=DIR], [install udev rules [[UDEVDIR/rules.d]]]), [udevruledir=$withval], [udevruledir="${udevdir}/rules.d"]) AC_SUBST(udevdir) AC_SUBST(udevruledir) AC_MSG_RESULT([$udevdir;$udevruledir]) ]) zfs-0.8.3/config/PaxHeaders.151519/kernel-bio-failfast.m40000644000000000000000000000007413612141515020737 xustar000000000000000030 atime=1579730378.253496993 30 ctime=1579730468.436392427 zfs-0.8.3/config/kernel-bio-failfast.m40000644016037001603700000000266713612141515020747 0ustar00hutter2hutter200000000000000dnl # dnl # Preferred interface for setting FAILFAST on a bio: dnl # 2.6.28-2.6.35: BIO_RW_FAILFAST_{DEV|TRANSPORT|DRIVER} dnl # >= 2.6.36: REQ_FAILFAST_{DEV|TRANSPORT|DRIVER} dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_FAILFAST_DTD], [ ZFS_LINUX_TEST_SRC([bio_failfast_dtd], [ #include ],[ int flags __attribute__ ((unused)); flags = ((1 << BIO_RW_FAILFAST_DEV) | (1 << BIO_RW_FAILFAST_TRANSPORT) | (1 << BIO_RW_FAILFAST_DRIVER)); ]) ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_FAILFAST_DTD], [ AC_MSG_CHECKING([whether BIO_RW_FAILFAST_* are defined]) ZFS_LINUX_TEST_RESULT([bio_failfast_dtd], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_BIO_RW_FAILFAST_DTD, 1, [BIO_RW_FAILFAST_* are defined]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_REQ_FAILFAST_MASK], [ ZFS_LINUX_TEST_SRC([bio_failfast_mask], [ #include ],[ int flags __attribute__ ((unused)); flags = REQ_FAILFAST_MASK; ]) ]) AC_DEFUN([ZFS_AC_KERNEL_REQ_FAILFAST_MASK], [ AC_MSG_CHECKING([whether REQ_FAILFAST_MASK is defined]) ZFS_LINUX_TEST_RESULT([bio_failfast_mask], [ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_REQ_FAILFAST_MASK, 1, [REQ_FAILFAST_MASK is defined]) ],[ AC_MSG_RESULT(no) ]) ]) AC_DEFUN([ZFS_AC_KERNEL_SRC_BIO_FAILFAST], [ ZFS_AC_KERNEL_SRC_BIO_FAILFAST_DTD ZFS_AC_KERNEL_SRC_REQ_FAILFAST_MASK ]) AC_DEFUN([ZFS_AC_KERNEL_BIO_FAILFAST], [ ZFS_AC_KERNEL_BIO_FAILFAST_DTD ZFS_AC_KERNEL_REQ_FAILFAST_MASK ]) zfs-0.8.3/config/PaxHeaders.151519/config.sub0000644000000000000000000000013213612142772016640 xustar000000000000000030 mtime=1579730426.468044943 30 atime=1579730442.903572634 30 ctime=1579730468.765402991 zfs-0.8.3/config/config.sub0000755016037001603700000010316713612142772016655 0ustar00hutter2hutter200000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 # Free Software Foundation, Inc. timestamp='2009-11-20' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: zfs-0.8.3/config/PaxHeaders.151519/kernel-vfs-direct_IO.m40000644000000000000000000000007413612141515021034 xustar000000000000000030 atime=1579730378.213495708 30 ctime=1579730468.621398368 zfs-0.8.3/config/kernel-vfs-direct_IO.m40000644016037001603700000000531613612141515021036 0ustar00hutter2hutter200000000000000dnl # dnl # Check for direct IO interfaces. dnl # AC_DEFUN([ZFS_AC_KERNEL_SRC_VFS_DIRECT_IO], [ ZFS_LINUX_TEST_SRC([direct_io_iter], [ #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; ],[]) ZFS_LINUX_TEST_SRC([direct_io_iter_offset], [ #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; ],[]) ZFS_LINUX_TEST_SRC([direct_io_iter_rw_offset], [ #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; ],[]) ZFS_LINUX_TEST_SRC([direct_io_iovec], [ #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, const struct iovec *iov, loff_t offset, unsigned long nr_segs) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; ],[]) ]) AC_DEFUN([ZFS_AC_KERNEL_VFS_DIRECT_IO], [ dnl # dnl # Linux 4.6.x API change dnl # AC_MSG_CHECKING([whether aops->direct_IO() uses iov_iter]) ZFS_LINUX_TEST_RESULT([direct_io_iter], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_VFS_DIRECT_IO_ITER, 1, [aops->direct_IO() uses iov_iter without rw]) ],[ AC_MSG_RESULT([no]) dnl # dnl # Linux 4.1.x API change dnl # AC_MSG_CHECKING( [whether aops->direct_IO() uses offset]) ZFS_LINUX_TEST_RESULT([direct_io_iter_offset], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_VFS_DIRECT_IO_ITER_OFFSET, 1, [aops->direct_IO() uses iov_iter with offset]) ],[ AC_MSG_RESULT([no]) dnl # dnl # Linux 3.16.x API change dnl # AC_MSG_CHECKING( [whether aops->direct_IO() uses rw and offset]) ZFS_LINUX_TEST_RESULT([direct_io_iter_rw_offset], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET, 1, [aops->direct_IO() uses iov_iter with ] [rw and offset]) ],[ AC_MSG_RESULT([no]) dnl # dnl # Ancient Linux API (predates git) dnl # AC_MSG_CHECKING( [whether aops->direct_IO() uses iovec]) ZFS_LINUX_TEST_RESULT([direct_io_iovec], [ AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_VFS_DIRECT_IO_IOVEC, 1, [aops->direct_IO() uses iovec]) ],[ ZFS_LINUX_TEST_ERROR([direct IO]) AC_MSG_RESULT([no]) ]) ]) ]) ]) ]) zfs-0.8.3/PaxHeaders.151519/udev0000644000000000000000000000013013612143046014272 xustar000000000000000029 mtime=1579730470.30145231 30 atime=1579730489.073055035 29 ctime=1579730470.30145231 zfs-0.8.3/udev/0000775016037001603700000000000013612143046014355 5ustar00hutter2hutter200000000000000zfs-0.8.3/udev/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133016420 xustar000000000000000030 atime=1579730442.451558121 30 ctime=1579730470.295452118 zfs-0.8.3/udev/Makefile.am0000644016037001603700000000002213607166133016407 0ustar00hutter2hutter200000000000000SUBDIRS = rules.d zfs-0.8.3/udev/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143012016407 xustar000000000000000030 mtime=1579730442.486559244 30 atime=1579730450.292809881 30 ctime=1579730470.297452182 zfs-0.8.3/udev/Makefile.in0000664016037001603700000006747313612143012016434 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = udev DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = rules.d all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu udev/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu udev/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/udev/PaxHeaders.151519/rules.d0000644000000000000000000000013213612143046015650 xustar000000000000000030 mtime=1579730470.361454237 30 atime=1579730489.073055035 30 ctime=1579730470.361454237 zfs-0.8.3/udev/rules.d/0000775016037001603700000000000013612143046015731 5ustar00hutter2hutter200000000000000zfs-0.8.3/udev/rules.d/PaxHeaders.151519/60-zvol.rules.in0000644000000000000000000000007413607166133020636 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.359454173 zfs-0.8.3/udev/rules.d/60-zvol.rules.in0000644016037001603700000000037313607166133020636 0ustar00hutter2hutter200000000000000# Persistent links for zvol # # persistent disk links: /dev/zvol/dataset_name # also creates compatibility symlink of /dev/dataset_name KERNEL=="zd*" SUBSYSTEM=="block" ACTION=="add|change" PROGRAM="@udevdir@/zvol_id $tempnode" SYMLINK+="zvol/%c %c" zfs-0.8.3/udev/rules.d/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166147020000 xustar000000000000000029 atime=1579730442.50355979 30 ctime=1579730470.353453979 zfs-0.8.3/udev/rules.d/Makefile.am0000644016037001603700000000075713607166147020007 0ustar00hutter2hutter200000000000000udevrule_DATA = \ 69-vdev.rules \ 60-zvol.rules \ 90-zfs.rules EXTRA_DIST = \ $(top_srcdir)/udev/rules.d/69-vdev.rules.in \ $(top_srcdir)/udev/rules.d/60-zvol.rules.in \ $(top_srcdir)/udev/rules.d/90-zfs.rules.in $(udevrule_DATA):%:%.in -$(SED) -e 's,@bindir\@,$(bindir),g' \ -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@udevdir\@,$(udevdir),g' \ -e 's,@udevruledir\@,$(udevruledir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ $< > '$@' distclean-local:: -$(RM) $(udevrule_DATA) zfs-0.8.3/udev/rules.d/PaxHeaders.151519/90-zfs.rules.in0000644000000000000000000000007413607166133020451 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.361454237 zfs-0.8.3/udev/rules.d/90-zfs.rules.in0000644016037001603700000000050413607166133020445 0ustar00hutter2hutter200000000000000SUBSYSTEM!="block|misc", GOTO="zfs_end" ACTION!="add|change", GOTO="zfs_end" ENV{ID_FS_TYPE}=="zfs", RUN+="/sbin/modprobe zfs" ENV{ID_FS_TYPE}=="zfs_member", RUN+="/sbin/modprobe zfs" KERNEL=="null", SYMLINK+="root" SYMLINK=="null", SYMLINK+="root" KERNEL=="zfs", MODE="0666", OPTIONS+="static_node=zfs" LABEL="zfs_end" zfs-0.8.3/udev/rules.d/PaxHeaders.151519/69-vdev.rules.in0000644000000000000000000000007413612141521020607 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.357454109 zfs-0.8.3/udev/rules.d/69-vdev.rules.in0000644016037001603700000000145513612141521020611 0ustar00hutter2hutter200000000000000# # @udevdir@/rules.d/69-vdev.rules # ENV{DEVTYPE}=="disk", IMPORT{program}="@udevdir@/vdev_id -d %k" ENV{DEVTYPE}=="partition", IMPORT{program}="@udevdir@/vdev_id -d %k" KERNEL=="*[!0-9]", ENV{SUBSYSTEM}=="block", ENV{ID_VDEV}=="?*", SYMLINK+="$env{ID_VDEV_PATH}" KERNEL=="nvme*[0-9]n*[0-9]", ENV{SUBSYSTEM}=="block", ENV{DEVTYPE}=="disk", ENV{ID_VDEV}=="?*", SYMLINK+="$env{ID_VDEV_PATH}" KERNEL=="*[0-9]", ENV{SUBSYSTEM}=="block", ENV{DEVTYPE}=="partition", ENV{ID_VDEV}=="?*", SYMLINK+="$env{ID_VDEV_PATH}-part%n" KERNEL=="dm-[0-9]*", ENV{SUBSYSTEM}=="block", ENV{ID_VDEV}=="?*", SYMLINK+="$env{ID_VDEV_PATH}" # Enclosure device symlink rules ENV{SUBSYSTEM}=="scsi_generic", IMPORT{program}="@udevdir@/vdev_id -e" ENV{SUBSYSTEM}=="scsi_generic", ENV{ID_ENCLOSURE}=="?*", SYMLINK+="$env{ID_ENCLOSURE_PATH}" zfs-0.8.3/udev/rules.d/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143012017763 xustar000000000000000030 mtime=1579730442.538560915 30 atime=1579730450.323810875 30 ctime=1579730470.355454044 zfs-0.8.3/udev/rules.d/Makefile.in0000664016037001603700000005636113612143012020002 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = udev/rules.d DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(udevruledir)" DATA = $(udevrule_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ udevrule_DATA = \ 69-vdev.rules \ 60-zvol.rules \ 90-zfs.rules EXTRA_DIST = \ $(top_srcdir)/udev/rules.d/69-vdev.rules.in \ $(top_srcdir)/udev/rules.d/60-zvol.rules.in \ $(top_srcdir)/udev/rules.d/90-zfs.rules.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu udev/rules.d/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu udev/rules.d/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-udevruleDATA: $(udevrule_DATA) @$(NORMAL_INSTALL) test -z "$(udevruledir)" || $(MKDIR_P) "$(DESTDIR)$(udevruledir)" @list='$(udevrule_DATA)'; test -n "$(udevruledir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(udevruledir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(udevruledir)" || exit $$?; \ done uninstall-udevruleDATA: @$(NORMAL_UNINSTALL) @list='$(udevrule_DATA)'; test -n "$(udevruledir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(udevruledir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(udevruledir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(udevruledir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-udevruleDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-udevruleDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distclean-local \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip install-udevruleDATA installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-udevruleDATA $(udevrule_DATA):%:%.in -$(SED) -e 's,@bindir\@,$(bindir),g' \ -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@udevdir\@,$(udevdir),g' \ -e 's,@udevruledir\@,$(udevruledir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ $< > '$@' distclean-local:: -$(RM) $(udevrule_DATA) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/PaxHeaders.151519/COPYRIGHT0000644000000000000000000000007413607166147014721 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.786403666 zfs-0.8.3/COPYRIGHT0000644016037001603700000000240113607166147014713 0ustar00hutter2hutter200000000000000Refer to the git commit log for authoritative copyright attribution. The original ZFS source code was obtained from Open Solaris which was released under the terms of the CDDL open source license. Additional changes have been included from OpenZFS and the Illumos project which are similarly licensed. These projects can be found on Github at: * https://github.com/illumos/illumos-gate * https://github.com/openzfs/openzfs Unless otherwise noted, all files in this distribution are released under the Common Development and Distribution License (CDDL). Exceptions are noted within the associated source files headers and by including a THIRDPARTYLICENSE file with the license terms. A few notable exceptions and their respective licenses include: * Skein Checksum Implementation: module/icp/algs/skein/THIRDPARTYLICENSE * AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.gladman * AES Implementation: module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.openssl * PBKDF2 Implementation: lib/libzfs/THIRDPARTYLICENSE.openssl * SPL Implementation: module/spl/THIRDPARTYLICENSE.gplv2 This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) See the LICENSE and NOTICE for more information. zfs-0.8.3/PaxHeaders.151519/README.md0000644000000000000000000000007413607166132014677 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.792403858 zfs-0.8.3/README.md0000644016037001603700000000221113607166132014670 0ustar00hutter2hutter200000000000000![img](http://zfsonlinux.org/images/zfs-linux.png) ZFS on Linux is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community. [![codecov](https://codecov.io/gh/zfsonlinux/zfs/branch/master/graph/badge.svg)](https://codecov.io/gh/zfsonlinux/zfs) [![coverity](https://scan.coverity.com/projects/1973/badge.svg)](https://scan.coverity.com/projects/zfsonlinux-zfs) # Official Resources * [Site](http://zfsonlinux.org) * [Wiki](https://github.com/zfsonlinux/zfs/wiki) * [Mailing lists](https://github.com/zfsonlinux/zfs/wiki/Mailing-Lists) * [OpenZFS site](http://open-zfs.org/) # Installation Full documentation for installing ZoL on your favorite Linux distribution can be found at [our site](http://zfsonlinux.org/). # Contribute & Develop We have a separate document with [contribution guidelines](./.github/CONTRIBUTING.md). # Release ZFS on Linux is released under a CDDL license. For more details see the NOTICE, LICENSE and COPYRIGHT files; `UCRL-CODE-235197` # Supported Kernels * The `META` file contains the officially recognized supported kernel versions. zfs-0.8.3/PaxHeaders.151519/META0000644000000000000000000000013213612143071014055 xustar000000000000000030 mtime=1579730489.065054777 30 atime=1579730489.065054777 30 ctime=1579730489.065054777 zfs-0.8.3/META0000644016037001603700000000031713612143071014060 0ustar00hutter2hutter200000000000000Meta: 1 Name: zfs Branch: 1.0 Version: 0.8.3 Release: 1 Release-Tags: relext License: CDDL Author: OpenZFS on Linux Linux-Maximum: 5.4 Linux-Minimum: 2.6.32 zfs-0.8.3/PaxHeaders.151519/lib0000644000000000000000000000013213612143047014100 xustar000000000000000030 mtime=1579730471.270483425 30 atime=1579730489.073055035 30 ctime=1579730471.270483425 zfs-0.8.3/lib/0000775016037001603700000000000013612143047014161 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/PaxHeaders.151519/libzfs0000644000000000000000000000013013612143050015361 xustar000000000000000029 mtime=1579730472.94753727 30 atime=1579730489.073055035 29 ctime=1579730472.94753727 zfs-0.8.3/lib/libzfs/0000775016037001603700000000000013612143050015444 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs.pc0000644000000000000000000000013213612143023017255 xustar000000000000000030 mtime=1579730451.370844493 30 atime=1579730461.125157679 30 ctime=1579730472.913536178 zfs-0.8.3/lib/libzfs/libzfs.pc0000664016037001603700000000044013612143023017257 0ustar00hutter2hutter200000000000000prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: libzfs Description: LibZFS library Version: 0.8.3 URL: http://zfsonlinux.org Requires: libzfs_core Cflags: -I${includedir}/libzfs -I${includedir}/libspl Libs: -L${libdir} -lzfs -lnvpair zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_pool.c0000644000000000000000000000007413612141520020133 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.936536918 zfs-0.8.3/lib/libzfs/libzfs_pool.c0000644016037001603700000035633313612141520020145 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright 2016 Igor Kozhukhov * Copyright (c) 2018 Datto Inc. * Copyright (c) 2017 Open-E, Inc. All Rights Reserved. * Copyright (c) 2017, Intel Corporation. * Copyright (c) 2018, loli10K */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "zfs_namecheck.h" #include "zfs_prop.h" #include "libzfs_impl.h" #include "zfs_comutil.h" #include "zfeature_common.h" static int read_efi_label(nvlist_t *config, diskaddr_t *sb); static boolean_t zpool_vdev_is_interior(const char *name); typedef struct prop_flags { int create:1; /* Validate property on creation */ int import:1; /* Validate property on import */ } prop_flags_t; /* * ==================================================================== * zpool property functions * ==================================================================== */ static int zpool_get_all_props(zpool_handle_t *zhp) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if (zcmd_alloc_dst_nvlist(hdl, &zc, 0) != 0) return (-1); while (ioctl(hdl->libzfs_fd, ZFS_IOC_POOL_GET_PROPS, &zc) != 0) { if (errno == ENOMEM) { if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) { zcmd_free_nvlists(&zc); return (-1); } } else { zcmd_free_nvlists(&zc); return (-1); } } if (zcmd_read_dst_nvlist(hdl, &zc, &zhp->zpool_props) != 0) { zcmd_free_nvlists(&zc); return (-1); } zcmd_free_nvlists(&zc); return (0); } static int zpool_props_refresh(zpool_handle_t *zhp) { nvlist_t *old_props; old_props = zhp->zpool_props; if (zpool_get_all_props(zhp) != 0) return (-1); nvlist_free(old_props); return (0); } static const char * zpool_get_prop_string(zpool_handle_t *zhp, zpool_prop_t prop, zprop_source_t *src) { nvlist_t *nv, *nvl; uint64_t ival; char *value; zprop_source_t source; nvl = zhp->zpool_props; if (nvlist_lookup_nvlist(nvl, zpool_prop_to_name(prop), &nv) == 0) { verify(nvlist_lookup_uint64(nv, ZPROP_SOURCE, &ival) == 0); source = ival; verify(nvlist_lookup_string(nv, ZPROP_VALUE, &value) == 0); } else { source = ZPROP_SRC_DEFAULT; if ((value = (char *)zpool_prop_default_string(prop)) == NULL) value = "-"; } if (src) *src = source; return (value); } uint64_t zpool_get_prop_int(zpool_handle_t *zhp, zpool_prop_t prop, zprop_source_t *src) { nvlist_t *nv, *nvl; uint64_t value; zprop_source_t source; if (zhp->zpool_props == NULL && zpool_get_all_props(zhp)) { /* * zpool_get_all_props() has most likely failed because * the pool is faulted, but if all we need is the top level * vdev's guid then get it from the zhp config nvlist. */ if ((prop == ZPOOL_PROP_GUID) && (nvlist_lookup_nvlist(zhp->zpool_config, ZPOOL_CONFIG_VDEV_TREE, &nv) == 0) && (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &value) == 0)) { return (value); } return (zpool_prop_default_numeric(prop)); } nvl = zhp->zpool_props; if (nvlist_lookup_nvlist(nvl, zpool_prop_to_name(prop), &nv) == 0) { verify(nvlist_lookup_uint64(nv, ZPROP_SOURCE, &value) == 0); source = value; verify(nvlist_lookup_uint64(nv, ZPROP_VALUE, &value) == 0); } else { source = ZPROP_SRC_DEFAULT; value = zpool_prop_default_numeric(prop); } if (src) *src = source; return (value); } /* * Map VDEV STATE to printed strings. */ const char * zpool_state_to_name(vdev_state_t state, vdev_aux_t aux) { switch (state) { case VDEV_STATE_CLOSED: case VDEV_STATE_OFFLINE: return (gettext("OFFLINE")); case VDEV_STATE_REMOVED: return (gettext("REMOVED")); case VDEV_STATE_CANT_OPEN: if (aux == VDEV_AUX_CORRUPT_DATA || aux == VDEV_AUX_BAD_LOG) return (gettext("FAULTED")); else if (aux == VDEV_AUX_SPLIT_POOL) return (gettext("SPLIT")); else return (gettext("UNAVAIL")); case VDEV_STATE_FAULTED: return (gettext("FAULTED")); case VDEV_STATE_DEGRADED: return (gettext("DEGRADED")); case VDEV_STATE_HEALTHY: return (gettext("ONLINE")); default: break; } return (gettext("UNKNOWN")); } /* * Map POOL STATE to printed strings. */ const char * zpool_pool_state_to_name(pool_state_t state) { switch (state) { default: break; case POOL_STATE_ACTIVE: return (gettext("ACTIVE")); case POOL_STATE_EXPORTED: return (gettext("EXPORTED")); case POOL_STATE_DESTROYED: return (gettext("DESTROYED")); case POOL_STATE_SPARE: return (gettext("SPARE")); case POOL_STATE_L2CACHE: return (gettext("L2CACHE")); case POOL_STATE_UNINITIALIZED: return (gettext("UNINITIALIZED")); case POOL_STATE_UNAVAIL: return (gettext("UNAVAIL")); case POOL_STATE_POTENTIALLY_ACTIVE: return (gettext("POTENTIALLY_ACTIVE")); } return (gettext("UNKNOWN")); } /* * Given a pool handle, return the pool health string ("ONLINE", "DEGRADED", * "SUSPENDED", etc). */ const char * zpool_get_state_str(zpool_handle_t *zhp) { zpool_errata_t errata; zpool_status_t status; nvlist_t *nvroot; vdev_stat_t *vs; uint_t vsc; const char *str; status = zpool_get_status(zhp, NULL, &errata); if (zpool_get_state(zhp) == POOL_STATE_UNAVAIL) { str = gettext("FAULTED"); } else if (status == ZPOOL_STATUS_IO_FAILURE_WAIT || status == ZPOOL_STATUS_IO_FAILURE_MMP) { str = gettext("SUSPENDED"); } else { verify(nvlist_lookup_nvlist(zpool_get_config(zhp, NULL), ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); verify(nvlist_lookup_uint64_array(nvroot, ZPOOL_CONFIG_VDEV_STATS, (uint64_t **)&vs, &vsc) == 0); str = zpool_state_to_name(vs->vs_state, vs->vs_aux); } return (str); } /* * Get a zpool property value for 'prop' and return the value in * a pre-allocated buffer. */ int zpool_get_prop(zpool_handle_t *zhp, zpool_prop_t prop, char *buf, size_t len, zprop_source_t *srctype, boolean_t literal) { uint64_t intval; const char *strval; zprop_source_t src = ZPROP_SRC_NONE; if (zpool_get_state(zhp) == POOL_STATE_UNAVAIL) { switch (prop) { case ZPOOL_PROP_NAME: (void) strlcpy(buf, zpool_get_name(zhp), len); break; case ZPOOL_PROP_HEALTH: (void) strlcpy(buf, zpool_get_state_str(zhp), len); break; case ZPOOL_PROP_GUID: intval = zpool_get_prop_int(zhp, prop, &src); (void) snprintf(buf, len, "%llu", (u_longlong_t)intval); break; case ZPOOL_PROP_ALTROOT: case ZPOOL_PROP_CACHEFILE: case ZPOOL_PROP_COMMENT: if (zhp->zpool_props != NULL || zpool_get_all_props(zhp) == 0) { (void) strlcpy(buf, zpool_get_prop_string(zhp, prop, &src), len); break; } /* FALLTHROUGH */ default: (void) strlcpy(buf, "-", len); break; } if (srctype != NULL) *srctype = src; return (0); } if (zhp->zpool_props == NULL && zpool_get_all_props(zhp) && prop != ZPOOL_PROP_NAME) return (-1); switch (zpool_prop_get_type(prop)) { case PROP_TYPE_STRING: (void) strlcpy(buf, zpool_get_prop_string(zhp, prop, &src), len); break; case PROP_TYPE_NUMBER: intval = zpool_get_prop_int(zhp, prop, &src); switch (prop) { case ZPOOL_PROP_SIZE: case ZPOOL_PROP_ALLOCATED: case ZPOOL_PROP_FREE: case ZPOOL_PROP_FREEING: case ZPOOL_PROP_LEAKED: case ZPOOL_PROP_ASHIFT: if (literal) (void) snprintf(buf, len, "%llu", (u_longlong_t)intval); else (void) zfs_nicenum(intval, buf, len); break; case ZPOOL_PROP_EXPANDSZ: case ZPOOL_PROP_CHECKPOINT: if (intval == 0) { (void) strlcpy(buf, "-", len); } else if (literal) { (void) snprintf(buf, len, "%llu", (u_longlong_t)intval); } else { (void) zfs_nicebytes(intval, buf, len); } break; case ZPOOL_PROP_CAPACITY: if (literal) { (void) snprintf(buf, len, "%llu", (u_longlong_t)intval); } else { (void) snprintf(buf, len, "%llu%%", (u_longlong_t)intval); } break; case ZPOOL_PROP_FRAGMENTATION: if (intval == UINT64_MAX) { (void) strlcpy(buf, "-", len); } else if (literal) { (void) snprintf(buf, len, "%llu", (u_longlong_t)intval); } else { (void) snprintf(buf, len, "%llu%%", (u_longlong_t)intval); } break; case ZPOOL_PROP_DEDUPRATIO: if (literal) (void) snprintf(buf, len, "%llu.%02llu", (u_longlong_t)(intval / 100), (u_longlong_t)(intval % 100)); else (void) snprintf(buf, len, "%llu.%02llux", (u_longlong_t)(intval / 100), (u_longlong_t)(intval % 100)); break; case ZPOOL_PROP_HEALTH: (void) strlcpy(buf, zpool_get_state_str(zhp), len); break; case ZPOOL_PROP_VERSION: if (intval >= SPA_VERSION_FEATURES) { (void) snprintf(buf, len, "-"); break; } /* FALLTHROUGH */ default: (void) snprintf(buf, len, "%llu", (u_longlong_t)intval); } break; case PROP_TYPE_INDEX: intval = zpool_get_prop_int(zhp, prop, &src); if (zpool_prop_index_to_string(prop, intval, &strval) != 0) return (-1); (void) strlcpy(buf, strval, len); break; default: abort(); } if (srctype) *srctype = src; return (0); } /* * Check if the bootfs name has the same pool name as it is set to. * Assuming bootfs is a valid dataset name. */ static boolean_t bootfs_name_valid(const char *pool, char *bootfs) { int len = strlen(pool); if (bootfs[0] == '\0') return (B_TRUE); if (!zfs_name_valid(bootfs, ZFS_TYPE_FILESYSTEM|ZFS_TYPE_SNAPSHOT)) return (B_FALSE); if (strncmp(pool, bootfs, len) == 0 && (bootfs[len] == '/' || bootfs[len] == '\0')) return (B_TRUE); return (B_FALSE); } boolean_t zpool_is_bootable(zpool_handle_t *zhp) { char bootfs[ZFS_MAX_DATASET_NAME_LEN]; return (zpool_get_prop(zhp, ZPOOL_PROP_BOOTFS, bootfs, sizeof (bootfs), NULL, B_FALSE) == 0 && strncmp(bootfs, "-", sizeof (bootfs)) != 0); } /* * Given an nvlist of zpool properties to be set, validate that they are * correct, and parse any numeric properties (index, boolean, etc) if they are * specified as strings. */ static nvlist_t * zpool_valid_proplist(libzfs_handle_t *hdl, const char *poolname, nvlist_t *props, uint64_t version, prop_flags_t flags, char *errbuf) { nvpair_t *elem; nvlist_t *retprops; zpool_prop_t prop; char *strval; uint64_t intval; char *slash, *check; struct stat64 statbuf; zpool_handle_t *zhp; if (nvlist_alloc(&retprops, NV_UNIQUE_NAME, 0) != 0) { (void) no_memory(hdl); return (NULL); } elem = NULL; while ((elem = nvlist_next_nvpair(props, elem)) != NULL) { const char *propname = nvpair_name(elem); prop = zpool_name_to_prop(propname); if (prop == ZPOOL_PROP_INVAL && zpool_prop_feature(propname)) { int err; char *fname = strchr(propname, '@') + 1; err = zfeature_lookup_name(fname, NULL); if (err != 0) { ASSERT3U(err, ==, ENOENT); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid feature '%s'"), fname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (nvpair_type(elem) != DATA_TYPE_STRING) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be a string"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } (void) nvpair_value_string(elem, &strval); if (strcmp(strval, ZFS_FEATURE_ENABLED) != 0 && strcmp(strval, ZFS_FEATURE_DISABLED) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' can only be set to " "'enabled' or 'disabled'"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (!flags.create && strcmp(strval, ZFS_FEATURE_DISABLED) == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' can only be set to " "'disabled' at creation time"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (nvlist_add_uint64(retprops, propname, 0) != 0) { (void) no_memory(hdl); goto error; } continue; } /* * Make sure this property is valid and applies to this type. */ if (prop == ZPOOL_PROP_INVAL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid property '%s'"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (zpool_prop_readonly(prop)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' " "is readonly"), propname); (void) zfs_error(hdl, EZFS_PROPREADONLY, errbuf); goto error; } if (!flags.create && zpool_prop_setonce(prop)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' can only be set at " "creation time"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (zprop_parse_value(hdl, elem, prop, ZFS_TYPE_POOL, retprops, &strval, &intval, errbuf) != 0) goto error; /* * Perform additional checking for specific properties. */ switch (prop) { case ZPOOL_PROP_VERSION: if (intval < version || !SPA_VERSION_IS_SUPPORTED(intval)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' number %d is invalid."), propname, intval); (void) zfs_error(hdl, EZFS_BADVERSION, errbuf); goto error; } break; case ZPOOL_PROP_ASHIFT: if (intval != 0 && (intval < ASHIFT_MIN || intval > ASHIFT_MAX)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' number %d is invalid, only " "values between %" PRId32 " and " "%" PRId32 " are allowed."), propname, intval, ASHIFT_MIN, ASHIFT_MAX); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; case ZPOOL_PROP_BOOTFS: if (flags.create || flags.import) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' cannot be set at creation " "or import time"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (version < SPA_VERSION_BOOTFS) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded to support " "'%s' property"), propname); (void) zfs_error(hdl, EZFS_BADVERSION, errbuf); goto error; } /* * bootfs property value has to be a dataset name and * the dataset has to be in the same pool as it sets to. */ if (!bootfs_name_valid(poolname, strval)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' " "is an invalid name"), strval); (void) zfs_error(hdl, EZFS_INVALIDNAME, errbuf); goto error; } if ((zhp = zpool_open_canfail(hdl, poolname)) == NULL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "could not open pool '%s'"), poolname); (void) zfs_error(hdl, EZFS_OPENFAILED, errbuf); goto error; } zpool_close(zhp); break; case ZPOOL_PROP_ALTROOT: if (!flags.create && !flags.import) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' can only be set during pool " "creation or import"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (strval[0] != '/') { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "bad alternate root '%s'"), strval); (void) zfs_error(hdl, EZFS_BADPATH, errbuf); goto error; } break; case ZPOOL_PROP_CACHEFILE: if (strval[0] == '\0') break; if (strcmp(strval, "none") == 0) break; if (strval[0] != '/') { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' must be empty, an " "absolute path, or 'none'"), propname); (void) zfs_error(hdl, EZFS_BADPATH, errbuf); goto error; } slash = strrchr(strval, '/'); if (slash[1] == '\0' || strcmp(slash, "/.") == 0 || strcmp(slash, "/..") == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is not a valid file"), strval); (void) zfs_error(hdl, EZFS_BADPATH, errbuf); goto error; } *slash = '\0'; if (strval[0] != '\0' && (stat64(strval, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode))) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is not a valid directory"), strval); (void) zfs_error(hdl, EZFS_BADPATH, errbuf); goto error; } *slash = '/'; break; case ZPOOL_PROP_COMMENT: for (check = strval; *check != '\0'; check++) { if (!isprint(*check)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "comment may only have printable " "characters")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } } if (strlen(strval) > ZPROP_MAX_COMMENT) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "comment must not exceed %d characters"), ZPROP_MAX_COMMENT); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; case ZPOOL_PROP_READONLY: if (!flags.import) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' can only be set at " "import time"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; case ZPOOL_PROP_MULTIHOST: if (get_system_hostid() == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "requires a non-zero system hostid")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; case ZPOOL_PROP_DEDUPDITTO: if (intval < ZIO_DEDUPDITTO_MIN && intval != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' value %d is invalid; only " "values of 0 or >= %" PRId32 " are allowed " "for this property."), propname, intval, ZIO_DEDUPDITTO_MIN); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; default: break; } } return (retprops); error: nvlist_free(retprops); return (NULL); } /* * Set zpool property : propname=propval. */ int zpool_set_prop(zpool_handle_t *zhp, const char *propname, const char *propval) { zfs_cmd_t zc = {"\0"}; int ret = -1; char errbuf[1024]; nvlist_t *nvl = NULL; nvlist_t *realprops; uint64_t version; prop_flags_t flags = { 0 }; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot set property for '%s'"), zhp->zpool_name); if (nvlist_alloc(&nvl, NV_UNIQUE_NAME, 0) != 0) return (no_memory(zhp->zpool_hdl)); if (nvlist_add_string(nvl, propname, propval) != 0) { nvlist_free(nvl); return (no_memory(zhp->zpool_hdl)); } version = zpool_get_prop_int(zhp, ZPOOL_PROP_VERSION, NULL); if ((realprops = zpool_valid_proplist(zhp->zpool_hdl, zhp->zpool_name, nvl, version, flags, errbuf)) == NULL) { nvlist_free(nvl); return (-1); } nvlist_free(nvl); nvl = realprops; /* * Execute the corresponding ioctl() to set this property. */ (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if (zcmd_write_src_nvlist(zhp->zpool_hdl, &zc, nvl) != 0) { nvlist_free(nvl); return (-1); } ret = zfs_ioctl(zhp->zpool_hdl, ZFS_IOC_POOL_SET_PROPS, &zc); zcmd_free_nvlists(&zc); nvlist_free(nvl); if (ret) (void) zpool_standard_error(zhp->zpool_hdl, errno, errbuf); else (void) zpool_props_refresh(zhp); return (ret); } int zpool_expand_proplist(zpool_handle_t *zhp, zprop_list_t **plp) { libzfs_handle_t *hdl = zhp->zpool_hdl; zprop_list_t *entry; char buf[ZFS_MAXPROPLEN]; nvlist_t *features = NULL; nvpair_t *nvp; zprop_list_t **last; boolean_t firstexpand = (NULL == *plp); int i; if (zprop_expand_list(hdl, plp, ZFS_TYPE_POOL) != 0) return (-1); last = plp; while (*last != NULL) last = &(*last)->pl_next; if ((*plp)->pl_all) features = zpool_get_features(zhp); if ((*plp)->pl_all && firstexpand) { for (i = 0; i < SPA_FEATURES; i++) { zprop_list_t *entry = zfs_alloc(hdl, sizeof (zprop_list_t)); entry->pl_prop = ZPROP_INVAL; entry->pl_user_prop = zfs_asprintf(hdl, "feature@%s", spa_feature_table[i].fi_uname); entry->pl_width = strlen(entry->pl_user_prop); entry->pl_all = B_TRUE; *last = entry; last = &entry->pl_next; } } /* add any unsupported features */ for (nvp = nvlist_next_nvpair(features, NULL); nvp != NULL; nvp = nvlist_next_nvpair(features, nvp)) { char *propname; boolean_t found; zprop_list_t *entry; if (zfeature_is_supported(nvpair_name(nvp))) continue; propname = zfs_asprintf(hdl, "unsupported@%s", nvpair_name(nvp)); /* * Before adding the property to the list make sure that no * other pool already added the same property. */ found = B_FALSE; entry = *plp; while (entry != NULL) { if (entry->pl_user_prop != NULL && strcmp(propname, entry->pl_user_prop) == 0) { found = B_TRUE; break; } entry = entry->pl_next; } if (found) { free(propname); continue; } entry = zfs_alloc(hdl, sizeof (zprop_list_t)); entry->pl_prop = ZPROP_INVAL; entry->pl_user_prop = propname; entry->pl_width = strlen(entry->pl_user_prop); entry->pl_all = B_TRUE; *last = entry; last = &entry->pl_next; } for (entry = *plp; entry != NULL; entry = entry->pl_next) { if (entry->pl_fixed) continue; if (entry->pl_prop != ZPROP_INVAL && zpool_get_prop(zhp, entry->pl_prop, buf, sizeof (buf), NULL, B_FALSE) == 0) { if (strlen(buf) > entry->pl_width) entry->pl_width = strlen(buf); } } return (0); } /* * Get the state for the given feature on the given ZFS pool. */ int zpool_prop_get_feature(zpool_handle_t *zhp, const char *propname, char *buf, size_t len) { uint64_t refcount; boolean_t found = B_FALSE; nvlist_t *features = zpool_get_features(zhp); boolean_t supported; const char *feature = strchr(propname, '@') + 1; supported = zpool_prop_feature(propname); ASSERT(supported || zpool_prop_unsupported(propname)); /* * Convert from feature name to feature guid. This conversion is * unnecessary for unsupported@... properties because they already * use guids. */ if (supported) { int ret; spa_feature_t fid; ret = zfeature_lookup_name(feature, &fid); if (ret != 0) { (void) strlcpy(buf, "-", len); return (ENOTSUP); } feature = spa_feature_table[fid].fi_guid; } if (nvlist_lookup_uint64(features, feature, &refcount) == 0) found = B_TRUE; if (supported) { if (!found) { (void) strlcpy(buf, ZFS_FEATURE_DISABLED, len); } else { if (refcount == 0) (void) strlcpy(buf, ZFS_FEATURE_ENABLED, len); else (void) strlcpy(buf, ZFS_FEATURE_ACTIVE, len); } } else { if (found) { if (refcount == 0) { (void) strcpy(buf, ZFS_UNSUPPORTED_INACTIVE); } else { (void) strcpy(buf, ZFS_UNSUPPORTED_READONLY); } } else { (void) strlcpy(buf, "-", len); return (ENOTSUP); } } return (0); } /* * Validate the given pool name, optionally putting an extended error message in * 'buf'. */ boolean_t zpool_name_valid(libzfs_handle_t *hdl, boolean_t isopen, const char *pool) { namecheck_err_t why; char what; int ret; ret = pool_namecheck(pool, &why, &what); /* * The rules for reserved pool names were extended at a later point. * But we need to support users with existing pools that may now be * invalid. So we only check for this expanded set of names during a * create (or import), and only in userland. */ if (ret == 0 && !isopen && (strncmp(pool, "mirror", 6) == 0 || strncmp(pool, "raidz", 5) == 0 || strncmp(pool, "spare", 5) == 0 || strcmp(pool, "log") == 0)) { if (hdl != NULL) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "name is reserved")); return (B_FALSE); } if (ret != 0) { if (hdl != NULL) { switch (why) { case NAME_ERR_TOOLONG: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "name is too long")); break; case NAME_ERR_INVALCHAR: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid character " "'%c' in pool name"), what); break; case NAME_ERR_NOLETTER: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "name must begin with a letter")); break; case NAME_ERR_RESERVED: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "name is reserved")); break; case NAME_ERR_DISKLIKE: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool name is reserved")); break; case NAME_ERR_LEADING_SLASH: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "leading slash in name")); break; case NAME_ERR_EMPTY_COMPONENT: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "empty component in name")); break; case NAME_ERR_TRAILING_SLASH: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "trailing slash in name")); break; case NAME_ERR_MULTIPLE_DELIMITERS: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "multiple '@' and/or '#' delimiters in " "name")); break; case NAME_ERR_NO_AT: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "permission set is missing '@'")); break; default: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "(%d) not defined"), why); break; } } return (B_FALSE); } return (B_TRUE); } /* * Open a handle to the given pool, even if the pool is currently in the FAULTED * state. */ zpool_handle_t * zpool_open_canfail(libzfs_handle_t *hdl, const char *pool) { zpool_handle_t *zhp; boolean_t missing; /* * Make sure the pool name is valid. */ if (!zpool_name_valid(hdl, B_TRUE, pool)) { (void) zfs_error_fmt(hdl, EZFS_INVALIDNAME, dgettext(TEXT_DOMAIN, "cannot open '%s'"), pool); return (NULL); } if ((zhp = zfs_alloc(hdl, sizeof (zpool_handle_t))) == NULL) return (NULL); zhp->zpool_hdl = hdl; (void) strlcpy(zhp->zpool_name, pool, sizeof (zhp->zpool_name)); if (zpool_refresh_stats(zhp, &missing) != 0) { zpool_close(zhp); return (NULL); } if (missing) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "no such pool")); (void) zfs_error_fmt(hdl, EZFS_NOENT, dgettext(TEXT_DOMAIN, "cannot open '%s'"), pool); zpool_close(zhp); return (NULL); } return (zhp); } /* * Like the above, but silent on error. Used when iterating over pools (because * the configuration cache may be out of date). */ int zpool_open_silent(libzfs_handle_t *hdl, const char *pool, zpool_handle_t **ret) { zpool_handle_t *zhp; boolean_t missing; if ((zhp = zfs_alloc(hdl, sizeof (zpool_handle_t))) == NULL) return (-1); zhp->zpool_hdl = hdl; (void) strlcpy(zhp->zpool_name, pool, sizeof (zhp->zpool_name)); if (zpool_refresh_stats(zhp, &missing) != 0) { zpool_close(zhp); return (-1); } if (missing) { zpool_close(zhp); *ret = NULL; return (0); } *ret = zhp; return (0); } /* * Similar to zpool_open_canfail(), but refuses to open pools in the faulted * state. */ zpool_handle_t * zpool_open(libzfs_handle_t *hdl, const char *pool) { zpool_handle_t *zhp; if ((zhp = zpool_open_canfail(hdl, pool)) == NULL) return (NULL); if (zhp->zpool_state == POOL_STATE_UNAVAIL) { (void) zfs_error_fmt(hdl, EZFS_POOLUNAVAIL, dgettext(TEXT_DOMAIN, "cannot open '%s'"), zhp->zpool_name); zpool_close(zhp); return (NULL); } return (zhp); } /* * Close the handle. Simply frees the memory associated with the handle. */ void zpool_close(zpool_handle_t *zhp) { nvlist_free(zhp->zpool_config); nvlist_free(zhp->zpool_old_config); nvlist_free(zhp->zpool_props); free(zhp); } /* * Return the name of the pool. */ const char * zpool_get_name(zpool_handle_t *zhp) { return (zhp->zpool_name); } /* * Return the state of the pool (ACTIVE or UNAVAILABLE) */ int zpool_get_state(zpool_handle_t *zhp) { return (zhp->zpool_state); } /* * Check if vdev list contains a special vdev */ static boolean_t zpool_has_special_vdev(nvlist_t *nvroot) { nvlist_t **child; uint_t children; if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { for (uint_t c = 0; c < children; c++) { char *bias; if (nvlist_lookup_string(child[c], ZPOOL_CONFIG_ALLOCATION_BIAS, &bias) == 0 && strcmp(bias, VDEV_ALLOC_BIAS_SPECIAL) == 0) { return (B_TRUE); } } } return (B_FALSE); } /* * Create the named pool, using the provided vdev list. It is assumed * that the consumer has already validated the contents of the nvlist, so we * don't have to worry about error semantics. */ int zpool_create(libzfs_handle_t *hdl, const char *pool, nvlist_t *nvroot, nvlist_t *props, nvlist_t *fsprops) { zfs_cmd_t zc = {"\0"}; nvlist_t *zc_fsprops = NULL; nvlist_t *zc_props = NULL; nvlist_t *hidden_args = NULL; uint8_t *wkeydata = NULL; uint_t wkeylen = 0; char msg[1024]; int ret = -1; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot create '%s'"), pool); if (!zpool_name_valid(hdl, B_FALSE, pool)) return (zfs_error(hdl, EZFS_INVALIDNAME, msg)); if (zcmd_write_conf_nvlist(hdl, &zc, nvroot) != 0) return (-1); if (props) { prop_flags_t flags = { .create = B_TRUE, .import = B_FALSE }; if ((zc_props = zpool_valid_proplist(hdl, pool, props, SPA_VERSION_1, flags, msg)) == NULL) { goto create_failed; } } if (fsprops) { uint64_t zoned; char *zonestr; zoned = ((nvlist_lookup_string(fsprops, zfs_prop_to_name(ZFS_PROP_ZONED), &zonestr) == 0) && strcmp(zonestr, "on") == 0); if ((zc_fsprops = zfs_valid_proplist(hdl, ZFS_TYPE_FILESYSTEM, fsprops, zoned, NULL, NULL, B_TRUE, msg)) == NULL) { goto create_failed; } if (nvlist_exists(zc_fsprops, zfs_prop_to_name(ZFS_PROP_SPECIAL_SMALL_BLOCKS)) && !zpool_has_special_vdev(nvroot)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "%s property requires a special vdev"), zfs_prop_to_name(ZFS_PROP_SPECIAL_SMALL_BLOCKS)); (void) zfs_error(hdl, EZFS_BADPROP, msg); goto create_failed; } if (!zc_props && (nvlist_alloc(&zc_props, NV_UNIQUE_NAME, 0) != 0)) { goto create_failed; } if (zfs_crypto_create(hdl, NULL, zc_fsprops, props, B_TRUE, &wkeydata, &wkeylen) != 0) { zfs_error(hdl, EZFS_CRYPTOFAILED, msg); goto create_failed; } if (nvlist_add_nvlist(zc_props, ZPOOL_ROOTFS_PROPS, zc_fsprops) != 0) { goto create_failed; } if (wkeydata != NULL) { if (nvlist_alloc(&hidden_args, NV_UNIQUE_NAME, 0) != 0) goto create_failed; if (nvlist_add_uint8_array(hidden_args, "wkeydata", wkeydata, wkeylen) != 0) goto create_failed; if (nvlist_add_nvlist(zc_props, ZPOOL_HIDDEN_ARGS, hidden_args) != 0) goto create_failed; } } if (zc_props && zcmd_write_src_nvlist(hdl, &zc, zc_props) != 0) goto create_failed; (void) strlcpy(zc.zc_name, pool, sizeof (zc.zc_name)); if ((ret = zfs_ioctl(hdl, ZFS_IOC_POOL_CREATE, &zc)) != 0) { zcmd_free_nvlists(&zc); nvlist_free(zc_props); nvlist_free(zc_fsprops); nvlist_free(hidden_args); if (wkeydata != NULL) free(wkeydata); switch (errno) { case EBUSY: /* * This can happen if the user has specified the same * device multiple times. We can't reliably detect this * until we try to add it and see we already have a * label. This can also happen under if the device is * part of an active md or lvm device. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "one or more vdevs refer to the same device, or " "one of\nthe devices is part of an active md or " "lvm device")); return (zfs_error(hdl, EZFS_BADDEV, msg)); case ERANGE: /* * This happens if the record size is smaller or larger * than the allowed size range, or not a power of 2. * * NOTE: although zfs_valid_proplist is called earlier, * this case may have slipped through since the * pool does not exist yet and it is therefore * impossible to read properties e.g. max blocksize * from the pool. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "record size invalid")); return (zfs_error(hdl, EZFS_BADPROP, msg)); case EOVERFLOW: /* * This occurs when one of the devices is below * SPA_MINDEVSIZE. Unfortunately, we can't detect which * device was the problem device since there's no * reliable way to determine device size from userland. */ { char buf[64]; zfs_nicebytes(SPA_MINDEVSIZE, buf, sizeof (buf)); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "one or more devices is less than the " "minimum size (%s)"), buf); } return (zfs_error(hdl, EZFS_BADDEV, msg)); case ENOSPC: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "one or more devices is out of space")); return (zfs_error(hdl, EZFS_BADDEV, msg)); case ENOTBLK: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cache device must be a disk or disk slice")); return (zfs_error(hdl, EZFS_BADDEV, msg)); default: return (zpool_standard_error(hdl, errno, msg)); } } create_failed: zcmd_free_nvlists(&zc); nvlist_free(zc_props); nvlist_free(zc_fsprops); nvlist_free(hidden_args); if (wkeydata != NULL) free(wkeydata); return (ret); } /* * Destroy the given pool. It is up to the caller to ensure that there are no * datasets left in the pool. */ int zpool_destroy(zpool_handle_t *zhp, const char *log_str) { zfs_cmd_t zc = {"\0"}; zfs_handle_t *zfp = NULL; libzfs_handle_t *hdl = zhp->zpool_hdl; char msg[1024]; if (zhp->zpool_state == POOL_STATE_ACTIVE && (zfp = zfs_open(hdl, zhp->zpool_name, ZFS_TYPE_FILESYSTEM)) == NULL) return (-1); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_history = (uint64_t)(uintptr_t)log_str; if (zfs_ioctl(hdl, ZFS_IOC_POOL_DESTROY, &zc) != 0) { (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot destroy '%s'"), zhp->zpool_name); if (errno == EROFS) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "one or more devices is read only")); (void) zfs_error(hdl, EZFS_BADDEV, msg); } else { (void) zpool_standard_error(hdl, errno, msg); } if (zfp) zfs_close(zfp); return (-1); } if (zfp) { remove_mountpoint(zfp); zfs_close(zfp); } return (0); } /* * Create a checkpoint in the given pool. */ int zpool_checkpoint(zpool_handle_t *zhp) { libzfs_handle_t *hdl = zhp->zpool_hdl; char msg[1024]; int error; error = lzc_pool_checkpoint(zhp->zpool_name); if (error != 0) { (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot checkpoint '%s'"), zhp->zpool_name); (void) zpool_standard_error(hdl, error, msg); return (-1); } return (0); } /* * Discard the checkpoint from the given pool. */ int zpool_discard_checkpoint(zpool_handle_t *zhp) { libzfs_handle_t *hdl = zhp->zpool_hdl; char msg[1024]; int error; error = lzc_pool_checkpoint_discard(zhp->zpool_name); if (error != 0) { (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot discard checkpoint in '%s'"), zhp->zpool_name); (void) zpool_standard_error(hdl, error, msg); return (-1); } return (0); } /* * Add the given vdevs to the pool. The caller must have already performed the * necessary verification to ensure that the vdev specification is well-formed. */ int zpool_add(zpool_handle_t *zhp, nvlist_t *nvroot) { zfs_cmd_t zc = {"\0"}; int ret; libzfs_handle_t *hdl = zhp->zpool_hdl; char msg[1024]; nvlist_t **spares, **l2cache; uint_t nspares, nl2cache; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot add to '%s'"), zhp->zpool_name); if (zpool_get_prop_int(zhp, ZPOOL_PROP_VERSION, NULL) < SPA_VERSION_SPARES && nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_SPARES, &spares, &nspares) == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be " "upgraded to add hot spares")); return (zfs_error(hdl, EZFS_BADVERSION, msg)); } if (zpool_get_prop_int(zhp, ZPOOL_PROP_VERSION, NULL) < SPA_VERSION_L2CACHE && nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_L2CACHE, &l2cache, &nl2cache) == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be " "upgraded to add cache devices")); return (zfs_error(hdl, EZFS_BADVERSION, msg)); } if (zcmd_write_conf_nvlist(hdl, &zc, nvroot) != 0) return (-1); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if (zfs_ioctl(hdl, ZFS_IOC_VDEV_ADD, &zc) != 0) { switch (errno) { case EBUSY: /* * This can happen if the user has specified the same * device multiple times. We can't reliably detect this * until we try to add it and see we already have a * label. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "one or more vdevs refer to the same device")); (void) zfs_error(hdl, EZFS_BADDEV, msg); break; case EINVAL: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid config; a pool with removing/removed " "vdevs does not support adding raidz vdevs")); (void) zfs_error(hdl, EZFS_BADDEV, msg); break; case EOVERFLOW: /* * This occurs when one of the devices is below * SPA_MINDEVSIZE. Unfortunately, we can't detect which * device was the problem device since there's no * reliable way to determine device size from userland. */ { char buf[64]; zfs_nicebytes(SPA_MINDEVSIZE, buf, sizeof (buf)); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "device is less than the minimum " "size (%s)"), buf); } (void) zfs_error(hdl, EZFS_BADDEV, msg); break; case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded to add these vdevs")); (void) zfs_error(hdl, EZFS_BADVERSION, msg); break; case ENOTBLK: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cache device must be a disk or disk slice")); (void) zfs_error(hdl, EZFS_BADDEV, msg); break; default: (void) zpool_standard_error(hdl, errno, msg); } ret = -1; } else { ret = 0; } zcmd_free_nvlists(&zc); return (ret); } /* * Exports the pool from the system. The caller must ensure that there are no * mounted datasets in the pool. */ static int zpool_export_common(zpool_handle_t *zhp, boolean_t force, boolean_t hardforce, const char *log_str) { zfs_cmd_t zc = {"\0"}; char msg[1024]; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot export '%s'"), zhp->zpool_name); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_cookie = force; zc.zc_guid = hardforce; zc.zc_history = (uint64_t)(uintptr_t)log_str; if (zfs_ioctl(zhp->zpool_hdl, ZFS_IOC_POOL_EXPORT, &zc) != 0) { switch (errno) { case EXDEV: zfs_error_aux(zhp->zpool_hdl, dgettext(TEXT_DOMAIN, "use '-f' to override the following errors:\n" "'%s' has an active shared spare which could be" " used by other pools once '%s' is exported."), zhp->zpool_name, zhp->zpool_name); return (zfs_error(zhp->zpool_hdl, EZFS_ACTIVE_SPARE, msg)); default: return (zpool_standard_error_fmt(zhp->zpool_hdl, errno, msg)); } } return (0); } int zpool_export(zpool_handle_t *zhp, boolean_t force, const char *log_str) { return (zpool_export_common(zhp, force, B_FALSE, log_str)); } int zpool_export_force(zpool_handle_t *zhp, const char *log_str) { return (zpool_export_common(zhp, B_TRUE, B_TRUE, log_str)); } static void zpool_rewind_exclaim(libzfs_handle_t *hdl, const char *name, boolean_t dryrun, nvlist_t *config) { nvlist_t *nv = NULL; uint64_t rewindto; int64_t loss = -1; struct tm t; char timestr[128]; if (!hdl->libzfs_printerr || config == NULL) return; if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_LOAD_INFO, &nv) != 0 || nvlist_lookup_nvlist(nv, ZPOOL_CONFIG_REWIND_INFO, &nv) != 0) { return; } if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_LOAD_TIME, &rewindto) != 0) return; (void) nvlist_lookup_int64(nv, ZPOOL_CONFIG_REWIND_TIME, &loss); if (localtime_r((time_t *)&rewindto, &t) != NULL && strftime(timestr, 128, "%c", &t) != 0) { if (dryrun) { (void) printf(dgettext(TEXT_DOMAIN, "Would be able to return %s " "to its state as of %s.\n"), name, timestr); } else { (void) printf(dgettext(TEXT_DOMAIN, "Pool %s returned to its state as of %s.\n"), name, timestr); } if (loss > 120) { (void) printf(dgettext(TEXT_DOMAIN, "%s approximately %lld "), dryrun ? "Would discard" : "Discarded", ((longlong_t)loss + 30) / 60); (void) printf(dgettext(TEXT_DOMAIN, "minutes of transactions.\n")); } else if (loss > 0) { (void) printf(dgettext(TEXT_DOMAIN, "%s approximately %lld "), dryrun ? "Would discard" : "Discarded", (longlong_t)loss); (void) printf(dgettext(TEXT_DOMAIN, "seconds of transactions.\n")); } } } void zpool_explain_recover(libzfs_handle_t *hdl, const char *name, int reason, nvlist_t *config) { nvlist_t *nv = NULL; int64_t loss = -1; uint64_t edata = UINT64_MAX; uint64_t rewindto; struct tm t; char timestr[128]; if (!hdl->libzfs_printerr) return; if (reason >= 0) (void) printf(dgettext(TEXT_DOMAIN, "action: ")); else (void) printf(dgettext(TEXT_DOMAIN, "\t")); /* All attempted rewinds failed if ZPOOL_CONFIG_LOAD_TIME missing */ if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_LOAD_INFO, &nv) != 0 || nvlist_lookup_nvlist(nv, ZPOOL_CONFIG_REWIND_INFO, &nv) != 0 || nvlist_lookup_uint64(nv, ZPOOL_CONFIG_LOAD_TIME, &rewindto) != 0) goto no_info; (void) nvlist_lookup_int64(nv, ZPOOL_CONFIG_REWIND_TIME, &loss); (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_LOAD_DATA_ERRORS, &edata); (void) printf(dgettext(TEXT_DOMAIN, "Recovery is possible, but will result in some data loss.\n")); if (localtime_r((time_t *)&rewindto, &t) != NULL && strftime(timestr, 128, "%c", &t) != 0) { (void) printf(dgettext(TEXT_DOMAIN, "\tReturning the pool to its state as of %s\n" "\tshould correct the problem. "), timestr); } else { (void) printf(dgettext(TEXT_DOMAIN, "\tReverting the pool to an earlier state " "should correct the problem.\n\t")); } if (loss > 120) { (void) printf(dgettext(TEXT_DOMAIN, "Approximately %lld minutes of data\n" "\tmust be discarded, irreversibly. "), ((longlong_t)loss + 30) / 60); } else if (loss > 0) { (void) printf(dgettext(TEXT_DOMAIN, "Approximately %lld seconds of data\n" "\tmust be discarded, irreversibly. "), (longlong_t)loss); } if (edata != 0 && edata != UINT64_MAX) { if (edata == 1) { (void) printf(dgettext(TEXT_DOMAIN, "After rewind, at least\n" "\tone persistent user-data error will remain. ")); } else { (void) printf(dgettext(TEXT_DOMAIN, "After rewind, several\n" "\tpersistent user-data errors will remain. ")); } } (void) printf(dgettext(TEXT_DOMAIN, "Recovery can be attempted\n\tby executing 'zpool %s -F %s'. "), reason >= 0 ? "clear" : "import", name); (void) printf(dgettext(TEXT_DOMAIN, "A scrub of the pool\n" "\tis strongly recommended after recovery.\n")); return; no_info: (void) printf(dgettext(TEXT_DOMAIN, "Destroy and re-create the pool from\n\ta backup source.\n")); } /* * zpool_import() is a contracted interface. Should be kept the same * if possible. * * Applications should use zpool_import_props() to import a pool with * new properties value to be set. */ int zpool_import(libzfs_handle_t *hdl, nvlist_t *config, const char *newname, char *altroot) { nvlist_t *props = NULL; int ret; if (altroot != NULL) { if (nvlist_alloc(&props, NV_UNIQUE_NAME, 0) != 0) { return (zfs_error_fmt(hdl, EZFS_NOMEM, dgettext(TEXT_DOMAIN, "cannot import '%s'"), newname)); } if (nvlist_add_string(props, zpool_prop_to_name(ZPOOL_PROP_ALTROOT), altroot) != 0 || nvlist_add_string(props, zpool_prop_to_name(ZPOOL_PROP_CACHEFILE), "none") != 0) { nvlist_free(props); return (zfs_error_fmt(hdl, EZFS_NOMEM, dgettext(TEXT_DOMAIN, "cannot import '%s'"), newname)); } } ret = zpool_import_props(hdl, config, newname, props, ZFS_IMPORT_NORMAL); nvlist_free(props); return (ret); } static void print_vdev_tree(libzfs_handle_t *hdl, const char *name, nvlist_t *nv, int indent) { nvlist_t **child; uint_t c, children; char *vname; uint64_t is_log = 0; (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_IS_LOG, &is_log); if (name != NULL) (void) printf("\t%*s%s%s\n", indent, "", name, is_log ? " [log]" : ""); if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, &child, &children) != 0) return; for (c = 0; c < children; c++) { vname = zpool_vdev_name(hdl, NULL, child[c], VDEV_NAME_TYPE_ID); print_vdev_tree(hdl, vname, child[c], indent + 2); free(vname); } } void zpool_print_unsup_feat(nvlist_t *config) { nvlist_t *nvinfo, *unsup_feat; nvpair_t *nvp; verify(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_LOAD_INFO, &nvinfo) == 0); verify(nvlist_lookup_nvlist(nvinfo, ZPOOL_CONFIG_UNSUP_FEAT, &unsup_feat) == 0); for (nvp = nvlist_next_nvpair(unsup_feat, NULL); nvp != NULL; nvp = nvlist_next_nvpair(unsup_feat, nvp)) { char *desc; verify(nvpair_type(nvp) == DATA_TYPE_STRING); verify(nvpair_value_string(nvp, &desc) == 0); if (strlen(desc) > 0) (void) printf("\t%s (%s)\n", nvpair_name(nvp), desc); else (void) printf("\t%s\n", nvpair_name(nvp)); } } /* * Import the given pool using the known configuration and a list of * properties to be set. The configuration should have come from * zpool_find_import(). The 'newname' parameters control whether the pool * is imported with a different name. */ int zpool_import_props(libzfs_handle_t *hdl, nvlist_t *config, const char *newname, nvlist_t *props, int flags) { zfs_cmd_t zc = {"\0"}; zpool_load_policy_t policy; nvlist_t *nv = NULL; nvlist_t *nvinfo = NULL; nvlist_t *missing = NULL; char *thename; char *origname; int ret; int error = 0; char errbuf[1024]; verify(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &origname) == 0); (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot import pool '%s'"), origname); if (newname != NULL) { if (!zpool_name_valid(hdl, B_FALSE, newname)) return (zfs_error_fmt(hdl, EZFS_INVALIDNAME, dgettext(TEXT_DOMAIN, "cannot import '%s'"), newname)); thename = (char *)newname; } else { thename = origname; } if (props != NULL) { uint64_t version; prop_flags_t flags = { .create = B_FALSE, .import = B_TRUE }; verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_VERSION, &version) == 0); if ((props = zpool_valid_proplist(hdl, origname, props, version, flags, errbuf)) == NULL) return (-1); if (zcmd_write_src_nvlist(hdl, &zc, props) != 0) { nvlist_free(props); return (-1); } nvlist_free(props); } (void) strlcpy(zc.zc_name, thename, sizeof (zc.zc_name)); verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &zc.zc_guid) == 0); if (zcmd_write_conf_nvlist(hdl, &zc, config) != 0) { zcmd_free_nvlists(&zc); return (-1); } if (zcmd_alloc_dst_nvlist(hdl, &zc, zc.zc_nvlist_conf_size * 2) != 0) { zcmd_free_nvlists(&zc); return (-1); } zc.zc_cookie = flags; while ((ret = zfs_ioctl(hdl, ZFS_IOC_POOL_IMPORT, &zc)) != 0 && errno == ENOMEM) { if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) { zcmd_free_nvlists(&zc); return (-1); } } if (ret != 0) error = errno; (void) zcmd_read_dst_nvlist(hdl, &zc, &nv); zcmd_free_nvlists(&zc); zpool_get_load_policy(config, &policy); if (error) { char desc[1024]; char aux[256]; /* * Dry-run failed, but we print out what success * looks like if we found a best txg */ if (policy.zlp_rewind & ZPOOL_TRY_REWIND) { zpool_rewind_exclaim(hdl, newname ? origname : thename, B_TRUE, nv); nvlist_free(nv); return (-1); } if (newname == NULL) (void) snprintf(desc, sizeof (desc), dgettext(TEXT_DOMAIN, "cannot import '%s'"), thename); else (void) snprintf(desc, sizeof (desc), dgettext(TEXT_DOMAIN, "cannot import '%s' as '%s'"), origname, thename); switch (error) { case ENOTSUP: if (nv != NULL && nvlist_lookup_nvlist(nv, ZPOOL_CONFIG_LOAD_INFO, &nvinfo) == 0 && nvlist_exists(nvinfo, ZPOOL_CONFIG_UNSUP_FEAT)) { (void) printf(dgettext(TEXT_DOMAIN, "This " "pool uses the following feature(s) not " "supported by this system:\n")); zpool_print_unsup_feat(nv); if (nvlist_exists(nvinfo, ZPOOL_CONFIG_CAN_RDONLY)) { (void) printf(dgettext(TEXT_DOMAIN, "All unsupported features are only " "required for writing to the pool." "\nThe pool can be imported using " "'-o readonly=on'.\n")); } } /* * Unsupported version. */ (void) zfs_error(hdl, EZFS_BADVERSION, desc); break; case EREMOTEIO: if (nv != NULL && nvlist_lookup_nvlist(nv, ZPOOL_CONFIG_LOAD_INFO, &nvinfo) == 0) { char *hostname = ""; uint64_t hostid = 0; mmp_state_t mmp_state; mmp_state = fnvlist_lookup_uint64(nvinfo, ZPOOL_CONFIG_MMP_STATE); if (nvlist_exists(nvinfo, ZPOOL_CONFIG_MMP_HOSTNAME)) hostname = fnvlist_lookup_string(nvinfo, ZPOOL_CONFIG_MMP_HOSTNAME); if (nvlist_exists(nvinfo, ZPOOL_CONFIG_MMP_HOSTID)) hostid = fnvlist_lookup_uint64(nvinfo, ZPOOL_CONFIG_MMP_HOSTID); if (mmp_state == MMP_STATE_ACTIVE) { (void) snprintf(aux, sizeof (aux), dgettext(TEXT_DOMAIN, "pool is imp" "orted on host '%s' (hostid=%lx).\n" "Export the pool on the other " "system, then run 'zpool import'."), hostname, (unsigned long) hostid); } else if (mmp_state == MMP_STATE_NO_HOSTID) { (void) snprintf(aux, sizeof (aux), dgettext(TEXT_DOMAIN, "pool has " "the multihost property on and " "the\nsystem's hostid is not set. " "Set a unique system hostid with " "the zgenhostid(8) command.\n")); } (void) zfs_error_aux(hdl, aux); } (void) zfs_error(hdl, EZFS_ACTIVE_POOL, desc); break; case EINVAL: (void) zfs_error(hdl, EZFS_INVALCONFIG, desc); break; case EROFS: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "one or more devices is read only")); (void) zfs_error(hdl, EZFS_BADDEV, desc); break; case ENXIO: if (nv && nvlist_lookup_nvlist(nv, ZPOOL_CONFIG_LOAD_INFO, &nvinfo) == 0 && nvlist_lookup_nvlist(nvinfo, ZPOOL_CONFIG_MISSING_DEVICES, &missing) == 0) { (void) printf(dgettext(TEXT_DOMAIN, "The devices below are missing or " "corrupted, use '-m' to import the pool " "anyway:\n")); print_vdev_tree(hdl, NULL, missing, 2); (void) printf("\n"); } (void) zpool_standard_error(hdl, error, desc); break; case EEXIST: (void) zpool_standard_error(hdl, error, desc); break; case EBUSY: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "one or more devices are already in use\n")); (void) zfs_error(hdl, EZFS_BADDEV, desc); break; case ENAMETOOLONG: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "new name of at least one dataset is longer than " "the maximum allowable length")); (void) zfs_error(hdl, EZFS_NAMETOOLONG, desc); break; default: (void) zpool_standard_error(hdl, error, desc); zpool_explain_recover(hdl, newname ? origname : thename, -error, nv); break; } nvlist_free(nv); ret = -1; } else { zpool_handle_t *zhp; /* * This should never fail, but play it safe anyway. */ if (zpool_open_silent(hdl, thename, &zhp) != 0) ret = -1; else if (zhp != NULL) zpool_close(zhp); if (policy.zlp_rewind & (ZPOOL_DO_REWIND | ZPOOL_TRY_REWIND)) { zpool_rewind_exclaim(hdl, newname ? origname : thename, ((policy.zlp_rewind & ZPOOL_TRY_REWIND) != 0), nv); } nvlist_free(nv); return (0); } return (ret); } /* * Translate vdev names to guids. If a vdev_path is determined to be * unsuitable then a vd_errlist is allocated and the vdev path and errno * are added to it. */ static int zpool_translate_vdev_guids(zpool_handle_t *zhp, nvlist_t *vds, nvlist_t *vdev_guids, nvlist_t *guids_to_paths, nvlist_t **vd_errlist) { nvlist_t *errlist = NULL; int error = 0; for (nvpair_t *elem = nvlist_next_nvpair(vds, NULL); elem != NULL; elem = nvlist_next_nvpair(vds, elem)) { boolean_t spare, cache; char *vd_path = nvpair_name(elem); nvlist_t *tgt = zpool_find_vdev(zhp, vd_path, &spare, &cache, NULL); if ((tgt == NULL) || cache || spare) { if (errlist == NULL) { errlist = fnvlist_alloc(); error = EINVAL; } uint64_t err = (tgt == NULL) ? EZFS_NODEVICE : (spare ? EZFS_ISSPARE : EZFS_ISL2CACHE); fnvlist_add_int64(errlist, vd_path, err); continue; } uint64_t guid = fnvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID); fnvlist_add_uint64(vdev_guids, vd_path, guid); char msg[MAXNAMELEN]; (void) snprintf(msg, sizeof (msg), "%llu", (u_longlong_t)guid); fnvlist_add_string(guids_to_paths, msg, vd_path); } if (error != 0) { verify(errlist != NULL); if (vd_errlist != NULL) *vd_errlist = errlist; else fnvlist_free(errlist); } return (error); } static int xlate_init_err(int err) { switch (err) { case ENODEV: return (EZFS_NODEVICE); case EINVAL: case EROFS: return (EZFS_BADDEV); case EBUSY: return (EZFS_INITIALIZING); case ESRCH: return (EZFS_NO_INITIALIZE); } return (err); } /* * Begin, suspend, or cancel the initialization (initializing of all free * blocks) for the given vdevs in the given pool. */ int zpool_initialize(zpool_handle_t *zhp, pool_initialize_func_t cmd_type, nvlist_t *vds) { char msg[1024]; int err; nvlist_t *vdev_guids = fnvlist_alloc(); nvlist_t *guids_to_paths = fnvlist_alloc(); nvlist_t *vd_errlist = NULL; nvlist_t *errlist; nvpair_t *elem; err = zpool_translate_vdev_guids(zhp, vds, vdev_guids, guids_to_paths, &vd_errlist); if (err == 0) { err = lzc_initialize(zhp->zpool_name, cmd_type, vdev_guids, &errlist); if (err == 0) { fnvlist_free(vdev_guids); fnvlist_free(guids_to_paths); return (0); } if (errlist != NULL) { vd_errlist = fnvlist_lookup_nvlist(errlist, ZPOOL_INITIALIZE_VDEVS); } (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "operation failed")); } else { verify(vd_errlist != NULL); } for (elem = nvlist_next_nvpair(vd_errlist, NULL); elem != NULL; elem = nvlist_next_nvpair(vd_errlist, elem)) { int64_t vd_error = xlate_init_err(fnvpair_value_int64(elem)); char *path; if (nvlist_lookup_string(guids_to_paths, nvpair_name(elem), &path) != 0) path = nvpair_name(elem); (void) zfs_error_fmt(zhp->zpool_hdl, vd_error, "cannot initialize '%s'", path); } fnvlist_free(vdev_guids); fnvlist_free(guids_to_paths); if (vd_errlist != NULL) { fnvlist_free(vd_errlist); return (-1); } return (zpool_standard_error(zhp->zpool_hdl, err, msg)); } static int xlate_trim_err(int err) { switch (err) { case ENODEV: return (EZFS_NODEVICE); case EINVAL: case EROFS: return (EZFS_BADDEV); case EBUSY: return (EZFS_TRIMMING); case ESRCH: return (EZFS_NO_TRIM); case EOPNOTSUPP: return (EZFS_TRIM_NOTSUP); } return (err); } /* * Begin, suspend, or cancel the TRIM (discarding of all free blocks) for * the given vdevs in the given pool. */ int zpool_trim(zpool_handle_t *zhp, pool_trim_func_t cmd_type, nvlist_t *vds, trimflags_t *trim_flags) { char msg[1024]; int err; nvlist_t *vdev_guids = fnvlist_alloc(); nvlist_t *guids_to_paths = fnvlist_alloc(); nvlist_t *vd_errlist = NULL; nvlist_t *errlist; nvpair_t *elem; err = zpool_translate_vdev_guids(zhp, vds, vdev_guids, guids_to_paths, &vd_errlist); if (err == 0) { err = lzc_trim(zhp->zpool_name, cmd_type, trim_flags->rate, trim_flags->secure, vdev_guids, &errlist); if (err == 0) { fnvlist_free(vdev_guids); fnvlist_free(guids_to_paths); return (0); } if (errlist != NULL) { vd_errlist = fnvlist_lookup_nvlist(errlist, ZPOOL_TRIM_VDEVS); } (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "operation failed")); } else { verify(vd_errlist != NULL); } for (elem = nvlist_next_nvpair(vd_errlist, NULL); elem != NULL; elem = nvlist_next_nvpair(vd_errlist, elem)) { int64_t vd_error = xlate_trim_err(fnvpair_value_int64(elem)); char *path; /* * If only the pool was specified, and it was not a secure * trim then suppress warnings for individual vdevs which * do not support trimming. */ if (vd_error == EZFS_TRIM_NOTSUP && trim_flags->fullpool && !trim_flags->secure) { continue; } if (nvlist_lookup_string(guids_to_paths, nvpair_name(elem), &path) != 0) path = nvpair_name(elem); (void) zfs_error_fmt(zhp->zpool_hdl, vd_error, "cannot trim '%s'", path); } fnvlist_free(vdev_guids); fnvlist_free(guids_to_paths); if (vd_errlist != NULL) { fnvlist_free(vd_errlist); return (-1); } return (zpool_standard_error(zhp->zpool_hdl, err, msg)); } /* * Scan the pool. */ int zpool_scan(zpool_handle_t *zhp, pool_scan_func_t func, pool_scrub_cmd_t cmd) { zfs_cmd_t zc = {"\0"}; char msg[1024]; int err; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_cookie = func; zc.zc_flags = cmd; if (zfs_ioctl(hdl, ZFS_IOC_POOL_SCAN, &zc) == 0) return (0); err = errno; /* ECANCELED on a scrub means we resumed a paused scrub */ if (err == ECANCELED && func == POOL_SCAN_SCRUB && cmd == POOL_SCRUB_NORMAL) return (0); if (err == ENOENT && func != POOL_SCAN_NONE && cmd == POOL_SCRUB_NORMAL) return (0); if (func == POOL_SCAN_SCRUB) { if (cmd == POOL_SCRUB_PAUSE) { (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot pause scrubbing %s"), zc.zc_name); } else { assert(cmd == POOL_SCRUB_NORMAL); (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot scrub %s"), zc.zc_name); } } else if (func == POOL_SCAN_RESILVER) { assert(cmd == POOL_SCRUB_NORMAL); (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot restart resilver on %s"), zc.zc_name); } else if (func == POOL_SCAN_NONE) { (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot cancel scrubbing %s"), zc.zc_name); } else { assert(!"unexpected result"); } if (err == EBUSY) { nvlist_t *nvroot; pool_scan_stat_t *ps = NULL; uint_t psc; verify(nvlist_lookup_nvlist(zhp->zpool_config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); (void) nvlist_lookup_uint64_array(nvroot, ZPOOL_CONFIG_SCAN_STATS, (uint64_t **)&ps, &psc); if (ps && ps->pss_func == POOL_SCAN_SCRUB) { if (cmd == POOL_SCRUB_PAUSE) return (zfs_error(hdl, EZFS_SCRUB_PAUSED, msg)); else return (zfs_error(hdl, EZFS_SCRUBBING, msg)); } else { return (zfs_error(hdl, EZFS_RESILVERING, msg)); } } else if (err == ENOENT) { return (zfs_error(hdl, EZFS_NO_SCRUB, msg)); } else if (err == ENOTSUP && func == POOL_SCAN_RESILVER) { return (zfs_error(hdl, EZFS_NO_RESILVER_DEFER, msg)); } else { return (zpool_standard_error(hdl, err, msg)); } } /* * Find a vdev that matches the search criteria specified. We use the * the nvpair name to determine how we should look for the device. * 'avail_spare' is set to TRUE if the provided guid refers to an AVAIL * spare; but FALSE if its an INUSE spare. */ static nvlist_t * vdev_to_nvlist_iter(nvlist_t *nv, nvlist_t *search, boolean_t *avail_spare, boolean_t *l2cache, boolean_t *log) { uint_t c, children; nvlist_t **child; nvlist_t *ret; uint64_t is_log; char *srchkey; nvpair_t *pair = nvlist_next_nvpair(search, NULL); /* Nothing to look for */ if (search == NULL || pair == NULL) return (NULL); /* Obtain the key we will use to search */ srchkey = nvpair_name(pair); switch (nvpair_type(pair)) { case DATA_TYPE_UINT64: if (strcmp(srchkey, ZPOOL_CONFIG_GUID) == 0) { uint64_t srchval, theguid; verify(nvpair_value_uint64(pair, &srchval) == 0); verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &theguid) == 0); if (theguid == srchval) return (nv); } break; case DATA_TYPE_STRING: { char *srchval, *val; verify(nvpair_value_string(pair, &srchval) == 0); if (nvlist_lookup_string(nv, srchkey, &val) != 0) break; /* * Search for the requested value. Special cases: * * - ZPOOL_CONFIG_PATH for whole disk entries. These end in * "-part1", or "p1". The suffix is hidden from the user, * but included in the string, so this matches around it. * - ZPOOL_CONFIG_PATH for short names zfs_strcmp_shortname() * is used to check all possible expanded paths. * - looking for a top-level vdev name (i.e. ZPOOL_CONFIG_TYPE). * * Otherwise, all other searches are simple string compares. */ if (strcmp(srchkey, ZPOOL_CONFIG_PATH) == 0) { uint64_t wholedisk = 0; (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK, &wholedisk); if (zfs_strcmp_pathname(srchval, val, wholedisk) == 0) return (nv); } else if (strcmp(srchkey, ZPOOL_CONFIG_TYPE) == 0 && val) { char *type, *idx, *end, *p; uint64_t id, vdev_id; /* * Determine our vdev type, keeping in mind * that the srchval is composed of a type and * vdev id pair (i.e. mirror-4). */ if ((type = strdup(srchval)) == NULL) return (NULL); if ((p = strrchr(type, '-')) == NULL) { free(type); break; } idx = p + 1; *p = '\0'; /* * If the types don't match then keep looking. */ if (strncmp(val, type, strlen(val)) != 0) { free(type); break; } verify(zpool_vdev_is_interior(type)); verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_ID, &id) == 0); errno = 0; vdev_id = strtoull(idx, &end, 10); free(type); if (errno != 0) return (NULL); /* * Now verify that we have the correct vdev id. */ if (vdev_id == id) return (nv); } /* * Common case */ if (strcmp(srchval, val) == 0) return (nv); break; } default: break; } if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, &child, &children) != 0) return (NULL); for (c = 0; c < children; c++) { if ((ret = vdev_to_nvlist_iter(child[c], search, avail_spare, l2cache, NULL)) != NULL) { /* * The 'is_log' value is only set for the toplevel * vdev, not the leaf vdevs. So we always lookup the * log device from the root of the vdev tree (where * 'log' is non-NULL). */ if (log != NULL && nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_LOG, &is_log) == 0 && is_log) { *log = B_TRUE; } return (ret); } } if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_SPARES, &child, &children) == 0) { for (c = 0; c < children; c++) { if ((ret = vdev_to_nvlist_iter(child[c], search, avail_spare, l2cache, NULL)) != NULL) { *avail_spare = B_TRUE; return (ret); } } } if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_L2CACHE, &child, &children) == 0) { for (c = 0; c < children; c++) { if ((ret = vdev_to_nvlist_iter(child[c], search, avail_spare, l2cache, NULL)) != NULL) { *l2cache = B_TRUE; return (ret); } } } return (NULL); } /* * Given a physical path or guid, find the associated vdev. */ nvlist_t * zpool_find_vdev_by_physpath(zpool_handle_t *zhp, const char *ppath, boolean_t *avail_spare, boolean_t *l2cache, boolean_t *log) { nvlist_t *search, *nvroot, *ret; uint64_t guid; char *end; verify(nvlist_alloc(&search, NV_UNIQUE_NAME, KM_SLEEP) == 0); guid = strtoull(ppath, &end, 0); if (guid != 0 && *end == '\0') { verify(nvlist_add_uint64(search, ZPOOL_CONFIG_GUID, guid) == 0); } else { verify(nvlist_add_string(search, ZPOOL_CONFIG_PHYS_PATH, ppath) == 0); } verify(nvlist_lookup_nvlist(zhp->zpool_config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); *avail_spare = B_FALSE; *l2cache = B_FALSE; if (log != NULL) *log = B_FALSE; ret = vdev_to_nvlist_iter(nvroot, search, avail_spare, l2cache, log); nvlist_free(search); return (ret); } /* * Determine if we have an "interior" top-level vdev (i.e mirror/raidz). */ static boolean_t zpool_vdev_is_interior(const char *name) { if (strncmp(name, VDEV_TYPE_RAIDZ, strlen(VDEV_TYPE_RAIDZ)) == 0 || strncmp(name, VDEV_TYPE_SPARE, strlen(VDEV_TYPE_SPARE)) == 0 || strncmp(name, VDEV_TYPE_REPLACING, strlen(VDEV_TYPE_REPLACING)) == 0 || strncmp(name, VDEV_TYPE_MIRROR, strlen(VDEV_TYPE_MIRROR)) == 0) return (B_TRUE); return (B_FALSE); } nvlist_t * zpool_find_vdev(zpool_handle_t *zhp, const char *path, boolean_t *avail_spare, boolean_t *l2cache, boolean_t *log) { char *end; nvlist_t *nvroot, *search, *ret; uint64_t guid; verify(nvlist_alloc(&search, NV_UNIQUE_NAME, KM_SLEEP) == 0); guid = strtoull(path, &end, 0); if (guid != 0 && *end == '\0') { verify(nvlist_add_uint64(search, ZPOOL_CONFIG_GUID, guid) == 0); } else if (zpool_vdev_is_interior(path)) { verify(nvlist_add_string(search, ZPOOL_CONFIG_TYPE, path) == 0); } else { verify(nvlist_add_string(search, ZPOOL_CONFIG_PATH, path) == 0); } verify(nvlist_lookup_nvlist(zhp->zpool_config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); *avail_spare = B_FALSE; *l2cache = B_FALSE; if (log != NULL) *log = B_FALSE; ret = vdev_to_nvlist_iter(nvroot, search, avail_spare, l2cache, log); nvlist_free(search); return (ret); } static int vdev_is_online(nvlist_t *nv) { uint64_t ival; if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_OFFLINE, &ival) == 0 || nvlist_lookup_uint64(nv, ZPOOL_CONFIG_FAULTED, &ival) == 0 || nvlist_lookup_uint64(nv, ZPOOL_CONFIG_REMOVED, &ival) == 0) return (0); return (1); } /* * Helper function for zpool_get_physpaths(). */ static int vdev_get_one_physpath(nvlist_t *config, char *physpath, size_t physpath_size, size_t *bytes_written) { size_t bytes_left, pos, rsz; char *tmppath; const char *format; if (nvlist_lookup_string(config, ZPOOL_CONFIG_PHYS_PATH, &tmppath) != 0) return (EZFS_NODEVICE); pos = *bytes_written; bytes_left = physpath_size - pos; format = (pos == 0) ? "%s" : " %s"; rsz = snprintf(physpath + pos, bytes_left, format, tmppath); *bytes_written += rsz; if (rsz >= bytes_left) { /* if physpath was not copied properly, clear it */ if (bytes_left != 0) { physpath[pos] = 0; } return (EZFS_NOSPC); } return (0); } static int vdev_get_physpaths(nvlist_t *nv, char *physpath, size_t phypath_size, size_t *rsz, boolean_t is_spare) { char *type; int ret; if (nvlist_lookup_string(nv, ZPOOL_CONFIG_TYPE, &type) != 0) return (EZFS_INVALCONFIG); if (strcmp(type, VDEV_TYPE_DISK) == 0) { /* * An active spare device has ZPOOL_CONFIG_IS_SPARE set. * For a spare vdev, we only want to boot from the active * spare device. */ if (is_spare) { uint64_t spare = 0; (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_IS_SPARE, &spare); if (!spare) return (EZFS_INVALCONFIG); } if (vdev_is_online(nv)) { if ((ret = vdev_get_one_physpath(nv, physpath, phypath_size, rsz)) != 0) return (ret); } } else if (strcmp(type, VDEV_TYPE_MIRROR) == 0 || strcmp(type, VDEV_TYPE_RAIDZ) == 0 || strcmp(type, VDEV_TYPE_REPLACING) == 0 || (is_spare = (strcmp(type, VDEV_TYPE_SPARE) == 0))) { nvlist_t **child; uint_t count; int i, ret; if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, &child, &count) != 0) return (EZFS_INVALCONFIG); for (i = 0; i < count; i++) { ret = vdev_get_physpaths(child[i], physpath, phypath_size, rsz, is_spare); if (ret == EZFS_NOSPC) return (ret); } } return (EZFS_POOL_INVALARG); } /* * Get phys_path for a root pool config. * Return 0 on success; non-zero on failure. */ static int zpool_get_config_physpath(nvlist_t *config, char *physpath, size_t phypath_size) { size_t rsz; nvlist_t *vdev_root; nvlist_t **child; uint_t count; char *type; rsz = 0; if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &vdev_root) != 0) return (EZFS_INVALCONFIG); if (nvlist_lookup_string(vdev_root, ZPOOL_CONFIG_TYPE, &type) != 0 || nvlist_lookup_nvlist_array(vdev_root, ZPOOL_CONFIG_CHILDREN, &child, &count) != 0) return (EZFS_INVALCONFIG); /* * root pool can only have a single top-level vdev. */ if (strcmp(type, VDEV_TYPE_ROOT) != 0 || count != 1) return (EZFS_POOL_INVALARG); (void) vdev_get_physpaths(child[0], physpath, phypath_size, &rsz, B_FALSE); /* No online devices */ if (rsz == 0) return (EZFS_NODEVICE); return (0); } /* * Get phys_path for a root pool * Return 0 on success; non-zero on failure. */ int zpool_get_physpath(zpool_handle_t *zhp, char *physpath, size_t phypath_size) { return (zpool_get_config_physpath(zhp->zpool_config, physpath, phypath_size)); } /* * If the device has being dynamically expanded then we need to relabel * the disk to use the new unallocated space. */ static int zpool_relabel_disk(libzfs_handle_t *hdl, const char *path, const char *msg) { int fd, error; if ((fd = open(path, O_RDWR|O_DIRECT)) < 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot " "relabel '%s': unable to open device: %d"), path, errno); return (zfs_error(hdl, EZFS_OPENFAILED, msg)); } /* * It's possible that we might encounter an error if the device * does not have any unallocated space left. If so, we simply * ignore that error and continue on. * * Also, we don't call efi_rescan() - that would just return EBUSY. * The module will do it for us in vdev_disk_open(). */ error = efi_use_whole_disk(fd); /* Flush the buffers to disk and invalidate the page cache. */ (void) fsync(fd); (void) ioctl(fd, BLKFLSBUF); (void) close(fd); if (error && error != VT_ENOSPC) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot " "relabel '%s': unable to read disk capacity"), path); return (zfs_error(hdl, EZFS_NOCAP, msg)); } return (0); } /* * Convert a vdev path to a GUID. Returns GUID or 0 on error. * * If is_spare, is_l2cache, or is_log is non-NULL, then store within it * if the VDEV is a spare, l2cache, or log device. If they're NULL then * ignore them. */ static uint64_t zpool_vdev_path_to_guid_impl(zpool_handle_t *zhp, const char *path, boolean_t *is_spare, boolean_t *is_l2cache, boolean_t *is_log) { uint64_t guid; boolean_t spare = B_FALSE, l2cache = B_FALSE, log = B_FALSE; nvlist_t *tgt; if ((tgt = zpool_find_vdev(zhp, path, &spare, &l2cache, &log)) == NULL) return (0); verify(nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID, &guid) == 0); if (is_spare != NULL) *is_spare = spare; if (is_l2cache != NULL) *is_l2cache = l2cache; if (is_log != NULL) *is_log = log; return (guid); } /* Convert a vdev path to a GUID. Returns GUID or 0 on error. */ uint64_t zpool_vdev_path_to_guid(zpool_handle_t *zhp, const char *path) { return (zpool_vdev_path_to_guid_impl(zhp, path, NULL, NULL, NULL)); } /* * Bring the specified vdev online. The 'flags' parameter is a set of the * ZFS_ONLINE_* flags. */ int zpool_vdev_online(zpool_handle_t *zhp, const char *path, int flags, vdev_state_t *newstate) { zfs_cmd_t zc = {"\0"}; char msg[1024]; char *pathname; nvlist_t *tgt; boolean_t avail_spare, l2cache, islog; libzfs_handle_t *hdl = zhp->zpool_hdl; int error; if (flags & ZFS_ONLINE_EXPAND) { (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot expand %s"), path); } else { (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot online %s"), path); } (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if ((tgt = zpool_find_vdev(zhp, path, &avail_spare, &l2cache, &islog)) == NULL) return (zfs_error(hdl, EZFS_NODEVICE, msg)); verify(nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID, &zc.zc_guid) == 0); if (avail_spare) return (zfs_error(hdl, EZFS_ISSPARE, msg)); if ((flags & ZFS_ONLINE_EXPAND || zpool_get_prop_int(zhp, ZPOOL_PROP_AUTOEXPAND, NULL)) && nvlist_lookup_string(tgt, ZPOOL_CONFIG_PATH, &pathname) == 0) { uint64_t wholedisk = 0; (void) nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_WHOLE_DISK, &wholedisk); /* * XXX - L2ARC 1.0 devices can't support expansion. */ if (l2cache) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot expand cache devices")); return (zfs_error(hdl, EZFS_VDEVNOTSUP, msg)); } if (wholedisk) { const char *fullpath = path; char buf[MAXPATHLEN]; if (path[0] != '/') { error = zfs_resolve_shortname(path, buf, sizeof (buf)); if (error != 0) return (zfs_error(hdl, EZFS_NODEVICE, msg)); fullpath = buf; } error = zpool_relabel_disk(hdl, fullpath, msg); if (error != 0) return (error); } } zc.zc_cookie = VDEV_STATE_ONLINE; zc.zc_obj = flags; if (zfs_ioctl(hdl, ZFS_IOC_VDEV_SET_STATE, &zc) != 0) { if (errno == EINVAL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "was split " "from this pool into a new one. Use '%s' " "instead"), "zpool detach"); return (zfs_error(hdl, EZFS_POSTSPLIT_ONLINE, msg)); } return (zpool_standard_error(hdl, errno, msg)); } *newstate = zc.zc_cookie; return (0); } /* * Take the specified vdev offline */ int zpool_vdev_offline(zpool_handle_t *zhp, const char *path, boolean_t istmp) { zfs_cmd_t zc = {"\0"}; char msg[1024]; nvlist_t *tgt; boolean_t avail_spare, l2cache; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot offline %s"), path); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if ((tgt = zpool_find_vdev(zhp, path, &avail_spare, &l2cache, NULL)) == NULL) return (zfs_error(hdl, EZFS_NODEVICE, msg)); verify(nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID, &zc.zc_guid) == 0); if (avail_spare) return (zfs_error(hdl, EZFS_ISSPARE, msg)); zc.zc_cookie = VDEV_STATE_OFFLINE; zc.zc_obj = istmp ? ZFS_OFFLINE_TEMPORARY : 0; if (zfs_ioctl(hdl, ZFS_IOC_VDEV_SET_STATE, &zc) == 0) return (0); switch (errno) { case EBUSY: /* * There are no other replicas of this device. */ return (zfs_error(hdl, EZFS_NOREPLICAS, msg)); case EEXIST: /* * The log device has unplayed logs */ return (zfs_error(hdl, EZFS_UNPLAYED_LOGS, msg)); default: return (zpool_standard_error(hdl, errno, msg)); } } /* * Mark the given vdev faulted. */ int zpool_vdev_fault(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux) { zfs_cmd_t zc = {"\0"}; char msg[1024]; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot fault %llu"), (u_longlong_t)guid); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_guid = guid; zc.zc_cookie = VDEV_STATE_FAULTED; zc.zc_obj = aux; if (ioctl(hdl->libzfs_fd, ZFS_IOC_VDEV_SET_STATE, &zc) == 0) return (0); switch (errno) { case EBUSY: /* * There are no other replicas of this device. */ return (zfs_error(hdl, EZFS_NOREPLICAS, msg)); default: return (zpool_standard_error(hdl, errno, msg)); } } /* * Mark the given vdev degraded. */ int zpool_vdev_degrade(zpool_handle_t *zhp, uint64_t guid, vdev_aux_t aux) { zfs_cmd_t zc = {"\0"}; char msg[1024]; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot degrade %llu"), (u_longlong_t)guid); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_guid = guid; zc.zc_cookie = VDEV_STATE_DEGRADED; zc.zc_obj = aux; if (ioctl(hdl->libzfs_fd, ZFS_IOC_VDEV_SET_STATE, &zc) == 0) return (0); return (zpool_standard_error(hdl, errno, msg)); } /* * Returns TRUE if the given nvlist is a vdev that was originally swapped in as * a hot spare. */ static boolean_t is_replacing_spare(nvlist_t *search, nvlist_t *tgt, int which) { nvlist_t **child; uint_t c, children; char *type; if (nvlist_lookup_nvlist_array(search, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { verify(nvlist_lookup_string(search, ZPOOL_CONFIG_TYPE, &type) == 0); if (strcmp(type, VDEV_TYPE_SPARE) == 0 && children == 2 && child[which] == tgt) return (B_TRUE); for (c = 0; c < children; c++) if (is_replacing_spare(child[c], tgt, which)) return (B_TRUE); } return (B_FALSE); } /* * Attach new_disk (fully described by nvroot) to old_disk. * If 'replacing' is specified, the new disk will replace the old one. */ int zpool_vdev_attach(zpool_handle_t *zhp, const char *old_disk, const char *new_disk, nvlist_t *nvroot, int replacing) { zfs_cmd_t zc = {"\0"}; char msg[1024]; int ret; nvlist_t *tgt; boolean_t avail_spare, l2cache, islog; uint64_t val; char *newname; nvlist_t **child; uint_t children; nvlist_t *config_root; libzfs_handle_t *hdl = zhp->zpool_hdl; boolean_t rootpool = zpool_is_bootable(zhp); if (replacing) (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot replace %s with %s"), old_disk, new_disk); else (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot attach %s to %s"), new_disk, old_disk); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if ((tgt = zpool_find_vdev(zhp, old_disk, &avail_spare, &l2cache, &islog)) == NULL) return (zfs_error(hdl, EZFS_NODEVICE, msg)); if (avail_spare) return (zfs_error(hdl, EZFS_ISSPARE, msg)); if (l2cache) return (zfs_error(hdl, EZFS_ISL2CACHE, msg)); verify(nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID, &zc.zc_guid) == 0); zc.zc_cookie = replacing; if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, &child, &children) != 0 || children != 1) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "new device must be a single disk")); return (zfs_error(hdl, EZFS_INVALCONFIG, msg)); } verify(nvlist_lookup_nvlist(zpool_get_config(zhp, NULL), ZPOOL_CONFIG_VDEV_TREE, &config_root) == 0); if ((newname = zpool_vdev_name(NULL, NULL, child[0], 0)) == NULL) return (-1); /* * If the target is a hot spare that has been swapped in, we can only * replace it with another hot spare. */ if (replacing && nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_IS_SPARE, &val) == 0 && (zpool_find_vdev(zhp, newname, &avail_spare, &l2cache, NULL) == NULL || !avail_spare) && is_replacing_spare(config_root, tgt, 1)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "can only be replaced by another hot spare")); free(newname); return (zfs_error(hdl, EZFS_BADTARGET, msg)); } free(newname); if (zcmd_write_conf_nvlist(hdl, &zc, nvroot) != 0) return (-1); ret = zfs_ioctl(hdl, ZFS_IOC_VDEV_ATTACH, &zc); zcmd_free_nvlists(&zc); if (ret == 0) { if (rootpool) { /* * XXX need a better way to prevent user from * booting up a half-baked vdev. */ (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "Make " "sure to wait until resilver is done " "before rebooting.\n")); } return (0); } switch (errno) { case ENOTSUP: /* * Can't attach to or replace this type of vdev. */ if (replacing) { uint64_t version = zpool_get_prop_int(zhp, ZPOOL_PROP_VERSION, NULL); if (islog) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot replace a log with a spare")); else if (version >= SPA_VERSION_MULTI_REPLACE) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "already in replacing/spare config; wait " "for completion or use 'zpool detach'")); else zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot replace a replacing device")); } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "can only attach to mirrors and top-level " "disks")); } (void) zfs_error(hdl, EZFS_BADTARGET, msg); break; case EINVAL: /* * The new device must be a single disk. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "new device must be a single disk")); (void) zfs_error(hdl, EZFS_INVALCONFIG, msg); break; case EBUSY: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "%s is busy, " "or device removal is in progress"), new_disk); (void) zfs_error(hdl, EZFS_BADDEV, msg); break; case EOVERFLOW: /* * The new device is too small. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "device is too small")); (void) zfs_error(hdl, EZFS_BADDEV, msg); break; case EDOM: /* * The new device has a different optimal sector size. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "new device has a different optimal sector size; use the " "option '-o ashift=N' to override the optimal size")); (void) zfs_error(hdl, EZFS_BADDEV, msg); break; case ENAMETOOLONG: /* * The resulting top-level vdev spec won't fit in the label. */ (void) zfs_error(hdl, EZFS_DEVOVERFLOW, msg); break; default: (void) zpool_standard_error(hdl, errno, msg); } return (-1); } /* * Detach the specified device. */ int zpool_vdev_detach(zpool_handle_t *zhp, const char *path) { zfs_cmd_t zc = {"\0"}; char msg[1024]; nvlist_t *tgt; boolean_t avail_spare, l2cache; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot detach %s"), path); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if ((tgt = zpool_find_vdev(zhp, path, &avail_spare, &l2cache, NULL)) == NULL) return (zfs_error(hdl, EZFS_NODEVICE, msg)); if (avail_spare) return (zfs_error(hdl, EZFS_ISSPARE, msg)); if (l2cache) return (zfs_error(hdl, EZFS_ISL2CACHE, msg)); verify(nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID, &zc.zc_guid) == 0); if (zfs_ioctl(hdl, ZFS_IOC_VDEV_DETACH, &zc) == 0) return (0); switch (errno) { case ENOTSUP: /* * Can't detach from this type of vdev. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "only " "applicable to mirror and replacing vdevs")); (void) zfs_error(hdl, EZFS_BADTARGET, msg); break; case EBUSY: /* * There are no other replicas of this device. */ (void) zfs_error(hdl, EZFS_NOREPLICAS, msg); break; default: (void) zpool_standard_error(hdl, errno, msg); } return (-1); } /* * Find a mirror vdev in the source nvlist. * * The mchild array contains a list of disks in one of the top-level mirrors * of the source pool. The schild array contains a list of disks that the * user specified on the command line. We loop over the mchild array to * see if any entry in the schild array matches. * * If a disk in the mchild array is found in the schild array, we return * the index of that entry. Otherwise we return -1. */ static int find_vdev_entry(zpool_handle_t *zhp, nvlist_t **mchild, uint_t mchildren, nvlist_t **schild, uint_t schildren) { uint_t mc; for (mc = 0; mc < mchildren; mc++) { uint_t sc; char *mpath = zpool_vdev_name(zhp->zpool_hdl, zhp, mchild[mc], 0); for (sc = 0; sc < schildren; sc++) { char *spath = zpool_vdev_name(zhp->zpool_hdl, zhp, schild[sc], 0); boolean_t result = (strcmp(mpath, spath) == 0); free(spath); if (result) { free(mpath); return (mc); } } free(mpath); } return (-1); } /* * Split a mirror pool. If newroot points to null, then a new nvlist * is generated and it is the responsibility of the caller to free it. */ int zpool_vdev_split(zpool_handle_t *zhp, char *newname, nvlist_t **newroot, nvlist_t *props, splitflags_t flags) { zfs_cmd_t zc = {"\0"}; char msg[1024]; nvlist_t *tree, *config, **child, **newchild, *newconfig = NULL; nvlist_t **varray = NULL, *zc_props = NULL; uint_t c, children, newchildren, lastlog = 0, vcount, found = 0; libzfs_handle_t *hdl = zhp->zpool_hdl; uint64_t vers, readonly = B_FALSE; boolean_t freelist = B_FALSE, memory_err = B_TRUE; int retval = 0; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "Unable to split %s"), zhp->zpool_name); if (!zpool_name_valid(hdl, B_FALSE, newname)) return (zfs_error(hdl, EZFS_INVALIDNAME, msg)); if ((config = zpool_get_config(zhp, NULL)) == NULL) { (void) fprintf(stderr, gettext("Internal error: unable to " "retrieve pool configuration\n")); return (-1); } verify(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &tree) == 0); verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_VERSION, &vers) == 0); if (props) { prop_flags_t flags = { .create = B_FALSE, .import = B_TRUE }; if ((zc_props = zpool_valid_proplist(hdl, zhp->zpool_name, props, vers, flags, msg)) == NULL) return (-1); (void) nvlist_lookup_uint64(zc_props, zpool_prop_to_name(ZPOOL_PROP_READONLY), &readonly); if (readonly) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property %s can only be set at import time"), zpool_prop_to_name(ZPOOL_PROP_READONLY)); return (-1); } } if (nvlist_lookup_nvlist_array(tree, ZPOOL_CONFIG_CHILDREN, &child, &children) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Source pool is missing vdev tree")); nvlist_free(zc_props); return (-1); } varray = zfs_alloc(hdl, children * sizeof (nvlist_t *)); vcount = 0; if (*newroot == NULL || nvlist_lookup_nvlist_array(*newroot, ZPOOL_CONFIG_CHILDREN, &newchild, &newchildren) != 0) newchildren = 0; for (c = 0; c < children; c++) { uint64_t is_log = B_FALSE, is_hole = B_FALSE; char *type; nvlist_t **mchild, *vdev; uint_t mchildren; int entry; /* * Unlike cache & spares, slogs are stored in the * ZPOOL_CONFIG_CHILDREN array. We filter them out here. */ (void) nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_LOG, &is_log); (void) nvlist_lookup_uint64(child[c], ZPOOL_CONFIG_IS_HOLE, &is_hole); if (is_log || is_hole) { /* * Create a hole vdev and put it in the config. */ if (nvlist_alloc(&vdev, NV_UNIQUE_NAME, 0) != 0) goto out; if (nvlist_add_string(vdev, ZPOOL_CONFIG_TYPE, VDEV_TYPE_HOLE) != 0) goto out; if (nvlist_add_uint64(vdev, ZPOOL_CONFIG_IS_HOLE, 1) != 0) goto out; if (lastlog == 0) lastlog = vcount; varray[vcount++] = vdev; continue; } lastlog = 0; verify(nvlist_lookup_string(child[c], ZPOOL_CONFIG_TYPE, &type) == 0); if (strcmp(type, VDEV_TYPE_MIRROR) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Source pool must be composed only of mirrors\n")); retval = zfs_error(hdl, EZFS_INVALCONFIG, msg); goto out; } verify(nvlist_lookup_nvlist_array(child[c], ZPOOL_CONFIG_CHILDREN, &mchild, &mchildren) == 0); /* find or add an entry for this top-level vdev */ if (newchildren > 0 && (entry = find_vdev_entry(zhp, mchild, mchildren, newchild, newchildren)) >= 0) { /* We found a disk that the user specified. */ vdev = mchild[entry]; ++found; } else { /* User didn't specify a disk for this vdev. */ vdev = mchild[mchildren - 1]; } if (nvlist_dup(vdev, &varray[vcount++], 0) != 0) goto out; } /* did we find every disk the user specified? */ if (found != newchildren) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Device list must " "include at most one disk from each mirror")); retval = zfs_error(hdl, EZFS_INVALCONFIG, msg); goto out; } /* Prepare the nvlist for populating. */ if (*newroot == NULL) { if (nvlist_alloc(newroot, NV_UNIQUE_NAME, 0) != 0) goto out; freelist = B_TRUE; if (nvlist_add_string(*newroot, ZPOOL_CONFIG_TYPE, VDEV_TYPE_ROOT) != 0) goto out; } else { verify(nvlist_remove_all(*newroot, ZPOOL_CONFIG_CHILDREN) == 0); } /* Add all the children we found */ if (nvlist_add_nvlist_array(*newroot, ZPOOL_CONFIG_CHILDREN, varray, lastlog == 0 ? vcount : lastlog) != 0) goto out; /* * If we're just doing a dry run, exit now with success. */ if (flags.dryrun) { memory_err = B_FALSE; freelist = B_FALSE; goto out; } /* now build up the config list & call the ioctl */ if (nvlist_alloc(&newconfig, NV_UNIQUE_NAME, 0) != 0) goto out; if (nvlist_add_nvlist(newconfig, ZPOOL_CONFIG_VDEV_TREE, *newroot) != 0 || nvlist_add_string(newconfig, ZPOOL_CONFIG_POOL_NAME, newname) != 0 || nvlist_add_uint64(newconfig, ZPOOL_CONFIG_VERSION, vers) != 0) goto out; /* * The new pool is automatically part of the namespace unless we * explicitly export it. */ if (!flags.import) zc.zc_cookie = ZPOOL_EXPORT_AFTER_SPLIT; (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); (void) strlcpy(zc.zc_string, newname, sizeof (zc.zc_string)); if (zcmd_write_conf_nvlist(hdl, &zc, newconfig) != 0) goto out; if (zc_props != NULL && zcmd_write_src_nvlist(hdl, &zc, zc_props) != 0) goto out; if (zfs_ioctl(hdl, ZFS_IOC_VDEV_SPLIT, &zc) != 0) { retval = zpool_standard_error(hdl, errno, msg); goto out; } freelist = B_FALSE; memory_err = B_FALSE; out: if (varray != NULL) { int v; for (v = 0; v < vcount; v++) nvlist_free(varray[v]); free(varray); } zcmd_free_nvlists(&zc); nvlist_free(zc_props); nvlist_free(newconfig); if (freelist) { nvlist_free(*newroot); *newroot = NULL; } if (retval != 0) return (retval); if (memory_err) return (no_memory(hdl)); return (0); } /* * Remove the given device. */ int zpool_vdev_remove(zpool_handle_t *zhp, const char *path) { zfs_cmd_t zc = {"\0"}; char msg[1024]; nvlist_t *tgt; boolean_t avail_spare, l2cache, islog; libzfs_handle_t *hdl = zhp->zpool_hdl; uint64_t version; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot remove %s"), path); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if ((tgt = zpool_find_vdev(zhp, path, &avail_spare, &l2cache, &islog)) == NULL) return (zfs_error(hdl, EZFS_NODEVICE, msg)); version = zpool_get_prop_int(zhp, ZPOOL_PROP_VERSION, NULL); if (islog && version < SPA_VERSION_HOLES) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded to support log removal")); return (zfs_error(hdl, EZFS_BADVERSION, msg)); } if (!islog && !avail_spare && !l2cache && zpool_is_bootable(zhp)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "root pool can not have removed devices, " "because GRUB does not understand them")); return (zfs_error(hdl, EINVAL, msg)); } zc.zc_guid = fnvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID); if (zfs_ioctl(hdl, ZFS_IOC_VDEV_REMOVE, &zc) == 0) return (0); switch (errno) { case EINVAL: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid config; all top-level vdevs must " "have the same sector size and not be raidz.")); (void) zfs_error(hdl, EZFS_INVALCONFIG, msg); break; case EBUSY: if (islog) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Mount encrypted datasets to replay logs.")); } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Pool busy; removal may already be in progress")); } (void) zfs_error(hdl, EZFS_BUSY, msg); break; case EACCES: if (islog) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Mount encrypted datasets to replay logs.")); (void) zfs_error(hdl, EZFS_BUSY, msg); } else { (void) zpool_standard_error(hdl, errno, msg); } break; default: (void) zpool_standard_error(hdl, errno, msg); } return (-1); } int zpool_vdev_remove_cancel(zpool_handle_t *zhp) { zfs_cmd_t zc; char msg[1024]; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot cancel removal")); bzero(&zc, sizeof (zc)); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_cookie = 1; if (zfs_ioctl(hdl, ZFS_IOC_VDEV_REMOVE, &zc) == 0) return (0); return (zpool_standard_error(hdl, errno, msg)); } int zpool_vdev_indirect_size(zpool_handle_t *zhp, const char *path, uint64_t *sizep) { char msg[1024]; nvlist_t *tgt; boolean_t avail_spare, l2cache, islog; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot determine indirect size of %s"), path); if ((tgt = zpool_find_vdev(zhp, path, &avail_spare, &l2cache, &islog)) == NULL) return (zfs_error(hdl, EZFS_NODEVICE, msg)); if (avail_spare || l2cache || islog) { *sizep = 0; return (0); } if (nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_INDIRECT_SIZE, sizep) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "indirect size not available")); return (zfs_error(hdl, EINVAL, msg)); } return (0); } /* * Clear the errors for the pool, or the particular device if specified. */ int zpool_clear(zpool_handle_t *zhp, const char *path, nvlist_t *rewindnvl) { zfs_cmd_t zc = {"\0"}; char msg[1024]; nvlist_t *tgt; zpool_load_policy_t policy; boolean_t avail_spare, l2cache; libzfs_handle_t *hdl = zhp->zpool_hdl; nvlist_t *nvi = NULL; int error; if (path) (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot clear errors for %s"), path); else (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot clear errors for %s"), zhp->zpool_name); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if (path) { if ((tgt = zpool_find_vdev(zhp, path, &avail_spare, &l2cache, NULL)) == NULL) return (zfs_error(hdl, EZFS_NODEVICE, msg)); /* * Don't allow error clearing for hot spares. Do allow * error clearing for l2cache devices. */ if (avail_spare) return (zfs_error(hdl, EZFS_ISSPARE, msg)); verify(nvlist_lookup_uint64(tgt, ZPOOL_CONFIG_GUID, &zc.zc_guid) == 0); } zpool_get_load_policy(rewindnvl, &policy); zc.zc_cookie = policy.zlp_rewind; if (zcmd_alloc_dst_nvlist(hdl, &zc, zhp->zpool_config_size * 2) != 0) return (-1); if (zcmd_write_src_nvlist(hdl, &zc, rewindnvl) != 0) return (-1); while ((error = zfs_ioctl(hdl, ZFS_IOC_CLEAR, &zc)) != 0 && errno == ENOMEM) { if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) { zcmd_free_nvlists(&zc); return (-1); } } if (!error || ((policy.zlp_rewind & ZPOOL_TRY_REWIND) && errno != EPERM && errno != EACCES)) { if (policy.zlp_rewind & (ZPOOL_DO_REWIND | ZPOOL_TRY_REWIND)) { (void) zcmd_read_dst_nvlist(hdl, &zc, &nvi); zpool_rewind_exclaim(hdl, zc.zc_name, ((policy.zlp_rewind & ZPOOL_TRY_REWIND) != 0), nvi); nvlist_free(nvi); } zcmd_free_nvlists(&zc); return (0); } zcmd_free_nvlists(&zc); return (zpool_standard_error(hdl, errno, msg)); } /* * Similar to zpool_clear(), but takes a GUID (used by fmd). */ int zpool_vdev_clear(zpool_handle_t *zhp, uint64_t guid) { zfs_cmd_t zc = {"\0"}; char msg[1024]; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot clear errors for %llx"), (u_longlong_t)guid); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_guid = guid; zc.zc_cookie = ZPOOL_NO_REWIND; if (ioctl(hdl->libzfs_fd, ZFS_IOC_CLEAR, &zc) == 0) return (0); return (zpool_standard_error(hdl, errno, msg)); } /* * Change the GUID for a pool. */ int zpool_reguid(zpool_handle_t *zhp) { char msg[1024]; libzfs_handle_t *hdl = zhp->zpool_hdl; zfs_cmd_t zc = {"\0"}; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot reguid '%s'"), zhp->zpool_name); (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); if (zfs_ioctl(hdl, ZFS_IOC_POOL_REGUID, &zc) == 0) return (0); return (zpool_standard_error(hdl, errno, msg)); } /* * Reopen the pool. */ int zpool_reopen_one(zpool_handle_t *zhp, void *data) { libzfs_handle_t *hdl = zpool_get_handle(zhp); const char *pool_name = zpool_get_name(zhp); boolean_t *scrub_restart = data; int error; error = lzc_reopen(pool_name, *scrub_restart); if (error) { return (zpool_standard_error_fmt(hdl, error, dgettext(TEXT_DOMAIN, "cannot reopen '%s'"), pool_name)); } return (0); } /* call into libzfs_core to execute the sync IOCTL per pool */ int zpool_sync_one(zpool_handle_t *zhp, void *data) { int ret; libzfs_handle_t *hdl = zpool_get_handle(zhp); const char *pool_name = zpool_get_name(zhp); boolean_t *force = data; nvlist_t *innvl = fnvlist_alloc(); fnvlist_add_boolean_value(innvl, "force", *force); if ((ret = lzc_sync(pool_name, innvl, NULL)) != 0) { nvlist_free(innvl); return (zpool_standard_error_fmt(hdl, ret, dgettext(TEXT_DOMAIN, "sync '%s' failed"), pool_name)); } nvlist_free(innvl); return (0); } #if defined(__sun__) || defined(__sun) /* * Convert from a devid string to a path. */ static char * devid_to_path(char *devid_str) { ddi_devid_t devid; char *minor; char *path; devid_nmlist_t *list = NULL; int ret; if (devid_str_decode(devid_str, &devid, &minor) != 0) return (NULL); ret = devid_deviceid_to_nmlist("/dev", devid, minor, &list); devid_str_free(minor); devid_free(devid); if (ret != 0) return (NULL); /* * In a case the strdup() fails, we will just return NULL below. */ path = strdup(list[0].devname); devid_free_nmlist(list); return (path); } /* * Convert from a path to a devid string. */ static char * path_to_devid(const char *path) { int fd; ddi_devid_t devid; char *minor, *ret; if ((fd = open(path, O_RDONLY)) < 0) return (NULL); minor = NULL; ret = NULL; if (devid_get(fd, &devid) == 0) { if (devid_get_minor_name(fd, &minor) == 0) ret = devid_str_encode(devid, minor); if (minor != NULL) devid_str_free(minor); devid_free(devid); } (void) close(fd); return (ret); } /* * Issue the necessary ioctl() to update the stored path value for the vdev. We * ignore any failure here, since a common case is for an unprivileged user to * type 'zpool status', and we'll display the correct information anyway. */ static void set_path(zpool_handle_t *zhp, nvlist_t *nv, const char *path) { zfs_cmd_t zc = {"\0"}; (void) strncpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); (void) strncpy(zc.zc_value, path, sizeof (zc.zc_value)); verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &zc.zc_guid) == 0); (void) ioctl(zhp->zpool_hdl->libzfs_fd, ZFS_IOC_VDEV_SETPATH, &zc); } #endif /* sun */ #define PATH_BUF_LEN 64 /* * Given a vdev, return the name to display in iostat. If the vdev has a path, * we use that, stripping off any leading "/dev/dsk/"; if not, we use the type. * We also check if this is a whole disk, in which case we strip off the * trailing 's0' slice name. * * This routine is also responsible for identifying when disks have been * reconfigured in a new location. The kernel will have opened the device by * devid, but the path will still refer to the old location. To catch this, we * first do a path -> devid translation (which is fast for the common case). If * the devid matches, we're done. If not, we do a reverse devid -> path * translation and issue the appropriate ioctl() to update the path of the vdev. * If 'zhp' is NULL, then this is an exported pool, and we don't need to do any * of these checks. */ char * zpool_vdev_name(libzfs_handle_t *hdl, zpool_handle_t *zhp, nvlist_t *nv, int name_flags) { char *path, *type, *env; uint64_t value; char buf[PATH_BUF_LEN]; char tmpbuf[PATH_BUF_LEN]; /* * vdev_name will be "root"/"root-0" for the root vdev, but it is the * zpool name that will be displayed to the user. */ verify(nvlist_lookup_string(nv, ZPOOL_CONFIG_TYPE, &type) == 0); if (zhp != NULL && strcmp(type, "root") == 0) return (zfs_strdup(hdl, zpool_get_name(zhp))); env = getenv("ZPOOL_VDEV_NAME_PATH"); if (env && (strtoul(env, NULL, 0) > 0 || !strncasecmp(env, "YES", 3) || !strncasecmp(env, "ON", 2))) name_flags |= VDEV_NAME_PATH; env = getenv("ZPOOL_VDEV_NAME_GUID"); if (env && (strtoul(env, NULL, 0) > 0 || !strncasecmp(env, "YES", 3) || !strncasecmp(env, "ON", 2))) name_flags |= VDEV_NAME_GUID; env = getenv("ZPOOL_VDEV_NAME_FOLLOW_LINKS"); if (env && (strtoul(env, NULL, 0) > 0 || !strncasecmp(env, "YES", 3) || !strncasecmp(env, "ON", 2))) name_flags |= VDEV_NAME_FOLLOW_LINKS; if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NOT_PRESENT, &value) == 0 || name_flags & VDEV_NAME_GUID) { (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &value); (void) snprintf(buf, sizeof (buf), "%llu", (u_longlong_t)value); path = buf; } else if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0) { #if defined(__sun__) || defined(__sun) /* * Live VDEV path updates to a kernel VDEV during a * zpool_vdev_name lookup are not supported on Linux. */ char *devid; vdev_stat_t *vs; uint_t vsc; /* * If the device is dead (faulted, offline, etc) then don't * bother opening it. Otherwise we may be forcing the user to * open a misbehaving device, which can have undesirable * effects. */ if ((nvlist_lookup_uint64_array(nv, ZPOOL_CONFIG_VDEV_STATS, (uint64_t **)&vs, &vsc) != 0 || vs->vs_state >= VDEV_STATE_DEGRADED) && zhp != NULL && nvlist_lookup_string(nv, ZPOOL_CONFIG_DEVID, &devid) == 0) { /* * Determine if the current path is correct. */ char *newdevid = path_to_devid(path); if (newdevid == NULL || strcmp(devid, newdevid) != 0) { char *newpath; if ((newpath = devid_to_path(devid)) != NULL) { /* * Update the path appropriately. */ set_path(zhp, nv, newpath); if (nvlist_add_string(nv, ZPOOL_CONFIG_PATH, newpath) == 0) verify(nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0); free(newpath); } } if (newdevid) devid_str_free(newdevid); } #endif /* sun */ if (name_flags & VDEV_NAME_FOLLOW_LINKS) { char *rp = realpath(path, NULL); if (rp) { strlcpy(buf, rp, sizeof (buf)); path = buf; free(rp); } } /* * For a block device only use the name. */ if ((strcmp(type, VDEV_TYPE_DISK) == 0) && !(name_flags & VDEV_NAME_PATH)) { path = strrchr(path, '/'); path++; } /* * Remove the partition from the path it this is a whole disk. */ if (nvlist_lookup_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK, &value) == 0 && value && !(name_flags & VDEV_NAME_PATH)) { return (zfs_strip_partition(path)); } } else { path = type; /* * If it's a raidz device, we need to stick in the parity level. */ if (strcmp(path, VDEV_TYPE_RAIDZ) == 0) { verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_NPARITY, &value) == 0); (void) snprintf(buf, sizeof (buf), "%s%llu", path, (u_longlong_t)value); path = buf; } /* * We identify each top-level vdev by using a * naming convention. */ if (name_flags & VDEV_NAME_TYPE_ID) { uint64_t id; verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_ID, &id) == 0); (void) snprintf(tmpbuf, sizeof (tmpbuf), "%s-%llu", path, (u_longlong_t)id); path = tmpbuf; } } return (zfs_strdup(hdl, path)); } static int zbookmark_mem_compare(const void *a, const void *b) { return (memcmp(a, b, sizeof (zbookmark_phys_t))); } /* * Retrieve the persistent error log, uniquify the members, and return to the * caller. */ int zpool_get_errlog(zpool_handle_t *zhp, nvlist_t **nverrlistp) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *hdl = zhp->zpool_hdl; uint64_t count; zbookmark_phys_t *zb = NULL; int i; /* * Retrieve the raw error list from the kernel. If the number of errors * has increased, allocate more space and continue until we get the * entire list. */ verify(nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_ERRCOUNT, &count) == 0); if (count == 0) return (0); zc.zc_nvlist_dst = (uintptr_t)zfs_alloc(zhp->zpool_hdl, count * sizeof (zbookmark_phys_t)); zc.zc_nvlist_dst_size = count; (void) strcpy(zc.zc_name, zhp->zpool_name); for (;;) { if (ioctl(zhp->zpool_hdl->libzfs_fd, ZFS_IOC_ERROR_LOG, &zc) != 0) { free((void *)(uintptr_t)zc.zc_nvlist_dst); if (errno == ENOMEM) { void *dst; count = zc.zc_nvlist_dst_size; dst = zfs_alloc(zhp->zpool_hdl, count * sizeof (zbookmark_phys_t)); zc.zc_nvlist_dst = (uintptr_t)dst; } else { return (zpool_standard_error_fmt(hdl, errno, dgettext(TEXT_DOMAIN, "errors: List of " "errors unavailable"))); } } else { break; } } /* * Sort the resulting bookmarks. This is a little confusing due to the * implementation of ZFS_IOC_ERROR_LOG. The bookmarks are copied last * to first, and 'zc_nvlist_dst_size' indicates the number of bookmarks * _not_ copied as part of the process. So we point the start of our * array appropriate and decrement the total number of elements. */ zb = ((zbookmark_phys_t *)(uintptr_t)zc.zc_nvlist_dst) + zc.zc_nvlist_dst_size; count -= zc.zc_nvlist_dst_size; qsort(zb, count, sizeof (zbookmark_phys_t), zbookmark_mem_compare); verify(nvlist_alloc(nverrlistp, 0, KM_SLEEP) == 0); /* * Fill in the nverrlistp with nvlist's of dataset and object numbers. */ for (i = 0; i < count; i++) { nvlist_t *nv; /* ignoring zb_blkid and zb_level for now */ if (i > 0 && zb[i-1].zb_objset == zb[i].zb_objset && zb[i-1].zb_object == zb[i].zb_object) continue; if (nvlist_alloc(&nv, NV_UNIQUE_NAME, KM_SLEEP) != 0) goto nomem; if (nvlist_add_uint64(nv, ZPOOL_ERR_DATASET, zb[i].zb_objset) != 0) { nvlist_free(nv); goto nomem; } if (nvlist_add_uint64(nv, ZPOOL_ERR_OBJECT, zb[i].zb_object) != 0) { nvlist_free(nv); goto nomem; } if (nvlist_add_nvlist(*nverrlistp, "ejk", nv) != 0) { nvlist_free(nv); goto nomem; } nvlist_free(nv); } free((void *)(uintptr_t)zc.zc_nvlist_dst); return (0); nomem: free((void *)(uintptr_t)zc.zc_nvlist_dst); return (no_memory(zhp->zpool_hdl)); } /* * Upgrade a ZFS pool to the latest on-disk version. */ int zpool_upgrade(zpool_handle_t *zhp, uint64_t new_version) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) strcpy(zc.zc_name, zhp->zpool_name); zc.zc_cookie = new_version; if (zfs_ioctl(hdl, ZFS_IOC_POOL_UPGRADE, &zc) != 0) return (zpool_standard_error_fmt(hdl, errno, dgettext(TEXT_DOMAIN, "cannot upgrade '%s'"), zhp->zpool_name)); return (0); } void zfs_save_arguments(int argc, char **argv, char *string, int len) { int i; (void) strlcpy(string, basename(argv[0]), len); for (i = 1; i < argc; i++) { (void) strlcat(string, " ", len); (void) strlcat(string, argv[i], len); } } int zpool_log_history(libzfs_handle_t *hdl, const char *message) { zfs_cmd_t zc = {"\0"}; nvlist_t *args; int err; args = fnvlist_alloc(); fnvlist_add_string(args, "message", message); err = zcmd_write_src_nvlist(hdl, &zc, args); if (err == 0) err = ioctl(hdl->libzfs_fd, ZFS_IOC_LOG_HISTORY, &zc); nvlist_free(args); zcmd_free_nvlists(&zc); return (err); } /* * Perform ioctl to get some command history of a pool. * * 'buf' is the buffer to fill up to 'len' bytes. 'off' is the * logical offset of the history buffer to start reading from. * * Upon return, 'off' is the next logical offset to read from and * 'len' is the actual amount of bytes read into 'buf'. */ static int get_history(zpool_handle_t *zhp, char *buf, uint64_t *off, uint64_t *len) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *hdl = zhp->zpool_hdl; (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_history = (uint64_t)(uintptr_t)buf; zc.zc_history_len = *len; zc.zc_history_offset = *off; if (ioctl(hdl->libzfs_fd, ZFS_IOC_POOL_GET_HISTORY, &zc) != 0) { switch (errno) { case EPERM: return (zfs_error_fmt(hdl, EZFS_PERM, dgettext(TEXT_DOMAIN, "cannot show history for pool '%s'"), zhp->zpool_name)); case ENOENT: return (zfs_error_fmt(hdl, EZFS_NOHISTORY, dgettext(TEXT_DOMAIN, "cannot get history for pool " "'%s'"), zhp->zpool_name)); case ENOTSUP: return (zfs_error_fmt(hdl, EZFS_BADVERSION, dgettext(TEXT_DOMAIN, "cannot get history for pool " "'%s', pool must be upgraded"), zhp->zpool_name)); default: return (zpool_standard_error_fmt(hdl, errno, dgettext(TEXT_DOMAIN, "cannot get history for '%s'"), zhp->zpool_name)); } } *len = zc.zc_history_len; *off = zc.zc_history_offset; return (0); } /* * Retrieve the command history of a pool. */ int zpool_get_history(zpool_handle_t *zhp, nvlist_t **nvhisp, uint64_t *off, boolean_t *eof) { char *buf; int buflen = 128 * 1024; nvlist_t **records = NULL; uint_t numrecords = 0; int err, i; uint64_t start = *off; buf = malloc(buflen); if (buf == NULL) return (ENOMEM); /* process about 1MB a time */ while (*off - start < 1024 * 1024) { uint64_t bytes_read = buflen; uint64_t leftover; if ((err = get_history(zhp, buf, off, &bytes_read)) != 0) break; /* if nothing else was read in, we're at EOF, just return */ if (!bytes_read) { *eof = B_TRUE; break; } if ((err = zpool_history_unpack(buf, bytes_read, &leftover, &records, &numrecords)) != 0) break; *off -= leftover; if (leftover == bytes_read) { /* * no progress made, because buffer is not big enough * to hold this record; resize and retry. */ buflen *= 2; free(buf); buf = malloc(buflen); if (buf == NULL) return (ENOMEM); } } free(buf); if (!err) { verify(nvlist_alloc(nvhisp, NV_UNIQUE_NAME, 0) == 0); verify(nvlist_add_nvlist_array(*nvhisp, ZPOOL_HIST_RECORD, records, numrecords) == 0); } for (i = 0; i < numrecords; i++) nvlist_free(records[i]); free(records); return (err); } /* * Retrieve the next event given the passed 'zevent_fd' file descriptor. * If there is a new event available 'nvp' will contain a newly allocated * nvlist and 'dropped' will be set to the number of missed events since * the last call to this function. When 'nvp' is set to NULL it indicates * no new events are available. In either case the function returns 0 and * it is up to the caller to free 'nvp'. In the case of a fatal error the * function will return a non-zero value. When the function is called in * blocking mode (the default, unless the ZEVENT_NONBLOCK flag is passed), * it will not return until a new event is available. */ int zpool_events_next(libzfs_handle_t *hdl, nvlist_t **nvp, int *dropped, unsigned flags, int zevent_fd) { zfs_cmd_t zc = {"\0"}; int error = 0; *nvp = NULL; *dropped = 0; zc.zc_cleanup_fd = zevent_fd; if (flags & ZEVENT_NONBLOCK) zc.zc_guid = ZEVENT_NONBLOCK; if (zcmd_alloc_dst_nvlist(hdl, &zc, ZEVENT_SIZE) != 0) return (-1); retry: if (zfs_ioctl(hdl, ZFS_IOC_EVENTS_NEXT, &zc) != 0) { switch (errno) { case ESHUTDOWN: error = zfs_error_fmt(hdl, EZFS_POOLUNAVAIL, dgettext(TEXT_DOMAIN, "zfs shutdown")); goto out; case ENOENT: /* Blocking error case should not occur */ if (!(flags & ZEVENT_NONBLOCK)) error = zpool_standard_error_fmt(hdl, errno, dgettext(TEXT_DOMAIN, "cannot get event")); goto out; case ENOMEM: if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) { error = zfs_error_fmt(hdl, EZFS_NOMEM, dgettext(TEXT_DOMAIN, "cannot get event")); goto out; } else { goto retry; } default: error = zpool_standard_error_fmt(hdl, errno, dgettext(TEXT_DOMAIN, "cannot get event")); goto out; } } error = zcmd_read_dst_nvlist(hdl, &zc, nvp); if (error != 0) goto out; *dropped = (int)zc.zc_cookie; out: zcmd_free_nvlists(&zc); return (error); } /* * Clear all events. */ int zpool_events_clear(libzfs_handle_t *hdl, int *count) { zfs_cmd_t zc = {"\0"}; char msg[1024]; (void) snprintf(msg, sizeof (msg), dgettext(TEXT_DOMAIN, "cannot clear events")); if (zfs_ioctl(hdl, ZFS_IOC_EVENTS_CLEAR, &zc) != 0) return (zpool_standard_error_fmt(hdl, errno, msg)); if (count != NULL) *count = (int)zc.zc_cookie; /* # of events cleared */ return (0); } /* * Seek to a specific EID, ZEVENT_SEEK_START, or ZEVENT_SEEK_END for * the passed zevent_fd file handle. On success zero is returned, * otherwise -1 is returned and hdl->libzfs_error is set to the errno. */ int zpool_events_seek(libzfs_handle_t *hdl, uint64_t eid, int zevent_fd) { zfs_cmd_t zc = {"\0"}; int error = 0; zc.zc_guid = eid; zc.zc_cleanup_fd = zevent_fd; if (zfs_ioctl(hdl, ZFS_IOC_EVENTS_SEEK, &zc) != 0) { switch (errno) { case ENOENT: error = zfs_error_fmt(hdl, EZFS_NOENT, dgettext(TEXT_DOMAIN, "cannot get event")); break; case ENOMEM: error = zfs_error_fmt(hdl, EZFS_NOMEM, dgettext(TEXT_DOMAIN, "cannot get event")); break; default: error = zpool_standard_error_fmt(hdl, errno, dgettext(TEXT_DOMAIN, "cannot get event")); break; } } return (error); } void zpool_obj_to_path(zpool_handle_t *zhp, uint64_t dsobj, uint64_t obj, char *pathname, size_t len) { zfs_cmd_t zc = {"\0"}; boolean_t mounted = B_FALSE; char *mntpnt = NULL; char dsname[ZFS_MAX_DATASET_NAME_LEN]; if (dsobj == 0) { /* special case for the MOS */ (void) snprintf(pathname, len, ":<0x%llx>", (longlong_t)obj); return; } /* get the dataset's name */ (void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name)); zc.zc_obj = dsobj; if (ioctl(zhp->zpool_hdl->libzfs_fd, ZFS_IOC_DSOBJ_TO_DSNAME, &zc) != 0) { /* just write out a path of two object numbers */ (void) snprintf(pathname, len, "<0x%llx>:<0x%llx>", (longlong_t)dsobj, (longlong_t)obj); return; } (void) strlcpy(dsname, zc.zc_value, sizeof (dsname)); /* find out if the dataset is mounted */ mounted = is_mounted(zhp->zpool_hdl, dsname, &mntpnt); /* get the corrupted object's path */ (void) strlcpy(zc.zc_name, dsname, sizeof (zc.zc_name)); zc.zc_obj = obj; if (ioctl(zhp->zpool_hdl->libzfs_fd, ZFS_IOC_OBJ_TO_PATH, &zc) == 0) { if (mounted) { (void) snprintf(pathname, len, "%s%s", mntpnt, zc.zc_value); } else { (void) snprintf(pathname, len, "%s:%s", dsname, zc.zc_value); } } else { (void) snprintf(pathname, len, "%s:<0x%llx>", dsname, (longlong_t)obj); } free(mntpnt); } /* * Read the EFI label from the config, if a label does not exist then * pass back the error to the caller. If the caller has passed a non-NULL * diskaddr argument then we set it to the starting address of the EFI * partition. */ static int read_efi_label(nvlist_t *config, diskaddr_t *sb) { char *path; int fd; char diskname[MAXPATHLEN]; int err = -1; if (nvlist_lookup_string(config, ZPOOL_CONFIG_PATH, &path) != 0) return (err); (void) snprintf(diskname, sizeof (diskname), "%s%s", DISK_ROOT, strrchr(path, '/')); if ((fd = open(diskname, O_RDONLY|O_DIRECT)) >= 0) { struct dk_gpt *vtoc; if ((err = efi_alloc_and_read(fd, &vtoc)) >= 0) { if (sb != NULL) *sb = vtoc->efi_parts[0].p_start; efi_free(vtoc); } (void) close(fd); } return (err); } /* * determine where a partition starts on a disk in the current * configuration */ static diskaddr_t find_start_block(nvlist_t *config) { nvlist_t **child; uint_t c, children; diskaddr_t sb = MAXOFFSET_T; uint64_t wholedisk; if (nvlist_lookup_nvlist_array(config, ZPOOL_CONFIG_CHILDREN, &child, &children) != 0) { if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_WHOLE_DISK, &wholedisk) != 0 || !wholedisk) { return (MAXOFFSET_T); } if (read_efi_label(config, &sb) < 0) sb = MAXOFFSET_T; return (sb); } for (c = 0; c < children; c++) { sb = find_start_block(child[c]); if (sb != MAXOFFSET_T) { return (sb); } } return (MAXOFFSET_T); } static int zpool_label_disk_check(char *path) { struct dk_gpt *vtoc; int fd, err; if ((fd = open(path, O_RDONLY|O_DIRECT)) < 0) return (errno); if ((err = efi_alloc_and_read(fd, &vtoc)) != 0) { (void) close(fd); return (err); } if (vtoc->efi_flags & EFI_GPT_PRIMARY_CORRUPT) { efi_free(vtoc); (void) close(fd); return (EIDRM); } efi_free(vtoc); (void) close(fd); return (0); } /* * Generate a unique partition name for the ZFS member. Partitions must * have unique names to ensure udev will be able to create symlinks under * /dev/disk/by-partlabel/ for all pool members. The partition names are * of the form -. */ static void zpool_label_name(char *label_name, int label_size) { uint64_t id = 0; int fd; fd = open("/dev/urandom", O_RDONLY); if (fd >= 0) { if (read(fd, &id, sizeof (id)) != sizeof (id)) id = 0; close(fd); } if (id == 0) id = (((uint64_t)rand()) << 32) | (uint64_t)rand(); snprintf(label_name, label_size, "zfs-%016llx", (u_longlong_t)id); } /* * Label an individual disk. The name provided is the short name, * stripped of any leading /dev path. */ int zpool_label_disk(libzfs_handle_t *hdl, zpool_handle_t *zhp, char *name) { char path[MAXPATHLEN]; struct dk_gpt *vtoc; int rval, fd; size_t resv = EFI_MIN_RESV_SIZE; uint64_t slice_size; diskaddr_t start_block; char errbuf[1024]; /* prepare an error message just in case */ (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot label '%s'"), name); if (zhp) { nvlist_t *nvroot; verify(nvlist_lookup_nvlist(zhp->zpool_config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); if (zhp->zpool_start_block == 0) start_block = find_start_block(nvroot); else start_block = zhp->zpool_start_block; zhp->zpool_start_block = start_block; } else { /* new pool */ start_block = NEW_START_BLOCK; } (void) snprintf(path, sizeof (path), "%s/%s", DISK_ROOT, name); if ((fd = open(path, O_RDWR|O_DIRECT|O_EXCL)) < 0) { /* * This shouldn't happen. We've long since verified that this * is a valid device. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot " "label '%s': unable to open device: %d"), path, errno); return (zfs_error(hdl, EZFS_OPENFAILED, errbuf)); } if (efi_alloc_and_init(fd, EFI_NUMPAR, &vtoc) != 0) { /* * The only way this can fail is if we run out of memory, or we * were unable to read the disk's capacity */ if (errno == ENOMEM) (void) no_memory(hdl); (void) close(fd); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot " "label '%s': unable to read disk capacity"), path); return (zfs_error(hdl, EZFS_NOCAP, errbuf)); } slice_size = vtoc->efi_last_u_lba + 1; slice_size -= EFI_MIN_RESV_SIZE; if (start_block == MAXOFFSET_T) start_block = NEW_START_BLOCK; slice_size -= start_block; slice_size = P2ALIGN(slice_size, PARTITION_END_ALIGNMENT); vtoc->efi_parts[0].p_start = start_block; vtoc->efi_parts[0].p_size = slice_size; /* * Why we use V_USR: V_BACKUP confuses users, and is considered * disposable by some EFI utilities (since EFI doesn't have a backup * slice). V_UNASSIGNED is supposed to be used only for zero size * partitions, and efi_write() will fail if we use it. V_ROOT, V_BOOT, * etc. were all pretty specific. V_USR is as close to reality as we * can get, in the absence of V_OTHER. */ vtoc->efi_parts[0].p_tag = V_USR; zpool_label_name(vtoc->efi_parts[0].p_name, EFI_PART_NAME_LEN); vtoc->efi_parts[8].p_start = slice_size + start_block; vtoc->efi_parts[8].p_size = resv; vtoc->efi_parts[8].p_tag = V_RESERVED; rval = efi_write(fd, vtoc); /* Flush the buffers to disk and invalidate the page cache. */ (void) fsync(fd); (void) ioctl(fd, BLKFLSBUF); if (rval == 0) rval = efi_rescan(fd); /* * Some block drivers (like pcata) may not support EFI GPT labels. * Print out a helpful error message directing the user to manually * label the disk and give a specific slice. */ if (rval != 0) { (void) close(fd); efi_free(vtoc); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "try using " "parted(8) and then provide a specific slice: %d"), rval); return (zfs_error(hdl, EZFS_LABELFAILED, errbuf)); } (void) close(fd); efi_free(vtoc); (void) snprintf(path, sizeof (path), "%s/%s", DISK_ROOT, name); (void) zfs_append_partition(path, MAXPATHLEN); /* Wait to udev to signal use the device has settled. */ rval = zpool_label_disk_wait(path, DISK_LABEL_WAIT); if (rval) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "failed to " "detect device partitions on '%s': %d"), path, rval); return (zfs_error(hdl, EZFS_LABELFAILED, errbuf)); } /* We can't be to paranoid. Read the label back and verify it. */ (void) snprintf(path, sizeof (path), "%s/%s", DISK_ROOT, name); rval = zpool_label_disk_check(path); if (rval) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "freshly written " "EFI label on '%s' is damaged. Ensure\nthis device " "is not in use, and is functioning properly: %d"), path, rval); return (zfs_error(hdl, EZFS_LABELFAILED, errbuf)); } return (0); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_sendrecv.c0000644000000000000000000000007413612141523020776 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.938536982 zfs-0.8.3/lib/libzfs/libzfs_sendrecv.c0000644016037001603700000040407313612141523021003 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2015 by Delphix. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright (c) 2012 Pawel Jakub Dawidek . * All rights reserved * Copyright (c) 2013 Steven Hartland. All rights reserved. * Copyright 2015, OmniTI Computer Consulting, Inc. All rights reserved. * Copyright 2016 Igor Kozhukhov * Copyright (c) 2018, loli10K . All rights reserved. * Copyright (c) 2019 Datto Inc. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "zfs_namecheck.h" #include "zfs_prop.h" #include "zfs_fletcher.h" #include "libzfs_impl.h" #include #include #include #include #include #include /* in libzfs_dataset.c */ extern void zfs_setprop_error(libzfs_handle_t *, zfs_prop_t, int, char *); static int zfs_receive_impl(libzfs_handle_t *, const char *, const char *, recvflags_t *, int, const char *, nvlist_t *, avl_tree_t *, char **, int, uint64_t *, const char *, nvlist_t *); static int guid_to_name(libzfs_handle_t *, const char *, uint64_t, boolean_t, char *); static const zio_cksum_t zero_cksum = { { 0 } }; typedef struct dedup_arg { int inputfd; int outputfd; libzfs_handle_t *dedup_hdl; } dedup_arg_t; typedef struct progress_arg { zfs_handle_t *pa_zhp; int pa_fd; boolean_t pa_parsable; } progress_arg_t; typedef struct dataref { uint64_t ref_guid; uint64_t ref_object; uint64_t ref_offset; } dataref_t; typedef struct dedup_entry { struct dedup_entry *dde_next; zio_cksum_t dde_chksum; uint64_t dde_prop; dataref_t dde_ref; } dedup_entry_t; #define MAX_DDT_PHYSMEM_PERCENT 20 #define SMALLEST_POSSIBLE_MAX_DDT_MB 128 typedef struct dedup_table { dedup_entry_t **dedup_hash_array; umem_cache_t *ddecache; uint64_t max_ddt_size; /* max dedup table size in bytes */ uint64_t cur_ddt_size; /* current dedup table size in bytes */ uint64_t ddt_count; int numhashbits; boolean_t ddt_full; } dedup_table_t; static int high_order_bit(uint64_t n) { int count; for (count = 0; n != 0; count++) n >>= 1; return (count); } static size_t ssread(void *buf, size_t len, FILE *stream) { size_t outlen; if ((outlen = fread(buf, len, 1, stream)) == 0) return (0); return (outlen); } static void ddt_hash_append(libzfs_handle_t *hdl, dedup_table_t *ddt, dedup_entry_t **ddepp, zio_cksum_t *cs, uint64_t prop, dataref_t *dr) { dedup_entry_t *dde; if (ddt->cur_ddt_size >= ddt->max_ddt_size) { if (ddt->ddt_full == B_FALSE) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Dedup table full. Deduplication will continue " "with existing table entries")); ddt->ddt_full = B_TRUE; } return; } if ((dde = umem_cache_alloc(ddt->ddecache, UMEM_DEFAULT)) != NULL) { assert(*ddepp == NULL); dde->dde_next = NULL; dde->dde_chksum = *cs; dde->dde_prop = prop; dde->dde_ref = *dr; *ddepp = dde; ddt->cur_ddt_size += sizeof (dedup_entry_t); ddt->ddt_count++; } } /* * Using the specified dedup table, do a lookup for an entry with * the checksum cs. If found, return the block's reference info * in *dr. Otherwise, insert a new entry in the dedup table, using * the reference information specified by *dr. * * return value: true - entry was found * false - entry was not found */ static boolean_t ddt_update(libzfs_handle_t *hdl, dedup_table_t *ddt, zio_cksum_t *cs, uint64_t prop, dataref_t *dr) { uint32_t hashcode; dedup_entry_t **ddepp; hashcode = BF64_GET(cs->zc_word[0], 0, ddt->numhashbits); for (ddepp = &(ddt->dedup_hash_array[hashcode]); *ddepp != NULL; ddepp = &((*ddepp)->dde_next)) { if (ZIO_CHECKSUM_EQUAL(((*ddepp)->dde_chksum), *cs) && (*ddepp)->dde_prop == prop) { *dr = (*ddepp)->dde_ref; return (B_TRUE); } } ddt_hash_append(hdl, ddt, ddepp, cs, prop, dr); return (B_FALSE); } static int dump_record(dmu_replay_record_t *drr, void *payload, int payload_len, zio_cksum_t *zc, int outfd) { ASSERT3U(offsetof(dmu_replay_record_t, drr_u.drr_checksum.drr_checksum), ==, sizeof (dmu_replay_record_t) - sizeof (zio_cksum_t)); fletcher_4_incremental_native(drr, offsetof(dmu_replay_record_t, drr_u.drr_checksum.drr_checksum), zc); if (drr->drr_type != DRR_BEGIN) { ASSERT(ZIO_CHECKSUM_IS_ZERO(&drr->drr_u. drr_checksum.drr_checksum)); drr->drr_u.drr_checksum.drr_checksum = *zc; } fletcher_4_incremental_native(&drr->drr_u.drr_checksum.drr_checksum, sizeof (zio_cksum_t), zc); if (write(outfd, drr, sizeof (*drr)) == -1) return (errno); if (payload_len != 0) { fletcher_4_incremental_native(payload, payload_len, zc); if (write(outfd, payload, payload_len) == -1) return (errno); } return (0); } /* * This function is started in a separate thread when the dedup option * has been requested. The main send thread determines the list of * snapshots to be included in the send stream and makes the ioctl calls * for each one. But instead of having the ioctl send the output to the * the output fd specified by the caller of zfs_send()), the * ioctl is told to direct the output to a pipe, which is read by the * alternate thread running THIS function. This function does the * dedup'ing by: * 1. building a dedup table (the DDT) * 2. doing checksums on each data block and inserting a record in the DDT * 3. looking for matching checksums, and * 4. sending a DRR_WRITE_BYREF record instead of a write record whenever * a duplicate block is found. * The output of this function then goes to the output fd requested * by the caller of zfs_send(). */ static void * cksummer(void *arg) { dedup_arg_t *dda = arg; char *buf = zfs_alloc(dda->dedup_hdl, SPA_MAXBLOCKSIZE); dmu_replay_record_t thedrr = { 0 }; dmu_replay_record_t *drr = &thedrr; FILE *ofp; int outfd; dedup_table_t ddt; zio_cksum_t stream_cksum; uint64_t numbuckets; #ifdef _ILP32 ddt.max_ddt_size = SMALLEST_POSSIBLE_MAX_DDT_MB << 20; #else uint64_t physmem = sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE); ddt.max_ddt_size = MAX((physmem * MAX_DDT_PHYSMEM_PERCENT) / 100, SMALLEST_POSSIBLE_MAX_DDT_MB << 20); #endif numbuckets = ddt.max_ddt_size / (sizeof (dedup_entry_t)); /* * numbuckets must be a power of 2. Increase number to * a power of 2 if necessary. */ if (!ISP2(numbuckets)) numbuckets = 1ULL << high_order_bit(numbuckets); ddt.dedup_hash_array = calloc(numbuckets, sizeof (dedup_entry_t *)); ddt.ddecache = umem_cache_create("dde", sizeof (dedup_entry_t), 0, NULL, NULL, NULL, NULL, NULL, 0); ddt.cur_ddt_size = numbuckets * sizeof (dedup_entry_t *); ddt.numhashbits = high_order_bit(numbuckets) - 1; ddt.ddt_full = B_FALSE; outfd = dda->outputfd; ofp = fdopen(dda->inputfd, "r"); while (ssread(drr, sizeof (*drr), ofp) != 0) { /* * kernel filled in checksum, we are going to write same * record, but need to regenerate checksum. */ if (drr->drr_type != DRR_BEGIN) { bzero(&drr->drr_u.drr_checksum.drr_checksum, sizeof (drr->drr_u.drr_checksum.drr_checksum)); } switch (drr->drr_type) { case DRR_BEGIN: { struct drr_begin *drrb = &drr->drr_u.drr_begin; int fflags; int sz = 0; ZIO_SET_CHECKSUM(&stream_cksum, 0, 0, 0, 0); ASSERT3U(drrb->drr_magic, ==, DMU_BACKUP_MAGIC); /* set the DEDUP feature flag for this stream */ fflags = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo); fflags |= (DMU_BACKUP_FEATURE_DEDUP | DMU_BACKUP_FEATURE_DEDUPPROPS); DMU_SET_FEATUREFLAGS(drrb->drr_versioninfo, fflags); if (drr->drr_payloadlen != 0) { sz = drr->drr_payloadlen; if (sz > SPA_MAXBLOCKSIZE) { buf = zfs_realloc(dda->dedup_hdl, buf, SPA_MAXBLOCKSIZE, sz); } (void) ssread(buf, sz, ofp); if (ferror(stdin)) perror("fread"); } if (dump_record(drr, buf, sz, &stream_cksum, outfd) != 0) goto out; break; } case DRR_END: { struct drr_end *drre = &drr->drr_u.drr_end; /* use the recalculated checksum */ drre->drr_checksum = stream_cksum; if (dump_record(drr, NULL, 0, &stream_cksum, outfd) != 0) goto out; break; } case DRR_OBJECT: { struct drr_object *drro = &drr->drr_u.drr_object; if (drro->drr_bonuslen > 0) { (void) ssread(buf, DRR_OBJECT_PAYLOAD_SIZE(drro), ofp); } if (dump_record(drr, buf, DRR_OBJECT_PAYLOAD_SIZE(drro), &stream_cksum, outfd) != 0) goto out; break; } case DRR_SPILL: { struct drr_spill *drrs = &drr->drr_u.drr_spill; (void) ssread(buf, DRR_SPILL_PAYLOAD_SIZE(drrs), ofp); if (dump_record(drr, buf, DRR_SPILL_PAYLOAD_SIZE(drrs), &stream_cksum, outfd) != 0) goto out; break; } case DRR_FREEOBJECTS: { if (dump_record(drr, NULL, 0, &stream_cksum, outfd) != 0) goto out; break; } case DRR_WRITE: { struct drr_write *drrw = &drr->drr_u.drr_write; dataref_t dataref; uint64_t payload_size; payload_size = DRR_WRITE_PAYLOAD_SIZE(drrw); (void) ssread(buf, payload_size, ofp); /* * Use the existing checksum if it's dedup-capable, * else calculate a SHA256 checksum for it. */ if (ZIO_CHECKSUM_EQUAL(drrw->drr_key.ddk_cksum, zero_cksum) || !DRR_IS_DEDUP_CAPABLE(drrw->drr_flags)) { SHA2_CTX ctx; zio_cksum_t tmpsha256; SHA2Init(SHA256, &ctx); SHA2Update(&ctx, buf, payload_size); SHA2Final(&tmpsha256, &ctx); drrw->drr_key.ddk_cksum.zc_word[0] = BE_64(tmpsha256.zc_word[0]); drrw->drr_key.ddk_cksum.zc_word[1] = BE_64(tmpsha256.zc_word[1]); drrw->drr_key.ddk_cksum.zc_word[2] = BE_64(tmpsha256.zc_word[2]); drrw->drr_key.ddk_cksum.zc_word[3] = BE_64(tmpsha256.zc_word[3]); drrw->drr_checksumtype = ZIO_CHECKSUM_SHA256; drrw->drr_flags |= DRR_CHECKSUM_DEDUP; } dataref.ref_guid = drrw->drr_toguid; dataref.ref_object = drrw->drr_object; dataref.ref_offset = drrw->drr_offset; if (ddt_update(dda->dedup_hdl, &ddt, &drrw->drr_key.ddk_cksum, drrw->drr_key.ddk_prop, &dataref)) { dmu_replay_record_t wbr_drr = {0}; struct drr_write_byref *wbr_drrr = &wbr_drr.drr_u.drr_write_byref; /* block already present in stream */ wbr_drr.drr_type = DRR_WRITE_BYREF; wbr_drrr->drr_object = drrw->drr_object; wbr_drrr->drr_offset = drrw->drr_offset; wbr_drrr->drr_length = drrw->drr_logical_size; wbr_drrr->drr_toguid = drrw->drr_toguid; wbr_drrr->drr_refguid = dataref.ref_guid; wbr_drrr->drr_refobject = dataref.ref_object; wbr_drrr->drr_refoffset = dataref.ref_offset; wbr_drrr->drr_checksumtype = drrw->drr_checksumtype; wbr_drrr->drr_flags = drrw->drr_flags; wbr_drrr->drr_key.ddk_cksum = drrw->drr_key.ddk_cksum; wbr_drrr->drr_key.ddk_prop = drrw->drr_key.ddk_prop; if (dump_record(&wbr_drr, NULL, 0, &stream_cksum, outfd) != 0) goto out; } else { /* block not previously seen */ if (dump_record(drr, buf, payload_size, &stream_cksum, outfd) != 0) goto out; } break; } case DRR_WRITE_EMBEDDED: { struct drr_write_embedded *drrwe = &drr->drr_u.drr_write_embedded; (void) ssread(buf, P2ROUNDUP((uint64_t)drrwe->drr_psize, 8), ofp); if (dump_record(drr, buf, P2ROUNDUP((uint64_t)drrwe->drr_psize, 8), &stream_cksum, outfd) != 0) goto out; break; } case DRR_FREE: { if (dump_record(drr, NULL, 0, &stream_cksum, outfd) != 0) goto out; break; } case DRR_OBJECT_RANGE: { if (dump_record(drr, NULL, 0, &stream_cksum, outfd) != 0) goto out; break; } default: (void) fprintf(stderr, "INVALID record type 0x%x\n", drr->drr_type); /* should never happen, so assert */ assert(B_FALSE); } } out: umem_cache_destroy(ddt.ddecache); free(ddt.dedup_hash_array); free(buf); (void) fclose(ofp); return (NULL); } /* * Routines for dealing with the AVL tree of fs-nvlists */ typedef struct fsavl_node { avl_node_t fn_node; nvlist_t *fn_nvfs; char *fn_snapname; uint64_t fn_guid; } fsavl_node_t; static int fsavl_compare(const void *arg1, const void *arg2) { const fsavl_node_t *fn1 = (const fsavl_node_t *)arg1; const fsavl_node_t *fn2 = (const fsavl_node_t *)arg2; return (AVL_CMP(fn1->fn_guid, fn2->fn_guid)); } /* * Given the GUID of a snapshot, find its containing filesystem and * (optionally) name. */ static nvlist_t * fsavl_find(avl_tree_t *avl, uint64_t snapguid, char **snapname) { fsavl_node_t fn_find; fsavl_node_t *fn; fn_find.fn_guid = snapguid; fn = avl_find(avl, &fn_find, NULL); if (fn) { if (snapname) *snapname = fn->fn_snapname; return (fn->fn_nvfs); } return (NULL); } static void fsavl_destroy(avl_tree_t *avl) { fsavl_node_t *fn; void *cookie; if (avl == NULL) return; cookie = NULL; while ((fn = avl_destroy_nodes(avl, &cookie)) != NULL) free(fn); avl_destroy(avl); free(avl); } /* * Given an nvlist, produce an avl tree of snapshots, ordered by guid */ static avl_tree_t * fsavl_create(nvlist_t *fss) { avl_tree_t *fsavl; nvpair_t *fselem = NULL; if ((fsavl = malloc(sizeof (avl_tree_t))) == NULL) return (NULL); avl_create(fsavl, fsavl_compare, sizeof (fsavl_node_t), offsetof(fsavl_node_t, fn_node)); while ((fselem = nvlist_next_nvpair(fss, fselem)) != NULL) { nvlist_t *nvfs, *snaps; nvpair_t *snapelem = NULL; VERIFY(0 == nvpair_value_nvlist(fselem, &nvfs)); VERIFY(0 == nvlist_lookup_nvlist(nvfs, "snaps", &snaps)); while ((snapelem = nvlist_next_nvpair(snaps, snapelem)) != NULL) { fsavl_node_t *fn; uint64_t guid; VERIFY(0 == nvpair_value_uint64(snapelem, &guid)); if ((fn = malloc(sizeof (fsavl_node_t))) == NULL) { fsavl_destroy(fsavl); return (NULL); } fn->fn_nvfs = nvfs; fn->fn_snapname = nvpair_name(snapelem); fn->fn_guid = guid; /* * Note: if there are multiple snaps with the * same GUID, we ignore all but one. */ if (avl_find(fsavl, fn, NULL) == NULL) avl_add(fsavl, fn); else free(fn); } } return (fsavl); } /* * Routines for dealing with the giant nvlist of fs-nvlists, etc. */ typedef struct send_data { /* * assigned inside every recursive call, * restored from *_save on return: * * guid of fromsnap snapshot in parent dataset * txg of fromsnap snapshot in current dataset * txg of tosnap snapshot in current dataset */ uint64_t parent_fromsnap_guid; uint64_t fromsnap_txg; uint64_t tosnap_txg; /* the nvlists get accumulated during depth-first traversal */ nvlist_t *parent_snaps; nvlist_t *fss; nvlist_t *snapprops; nvlist_t *snapholds; /* user holds */ /* send-receive configuration, does not change during traversal */ const char *fsname; const char *fromsnap; const char *tosnap; boolean_t recursive; boolean_t raw; boolean_t doall; boolean_t replicate; boolean_t verbose; boolean_t backup; boolean_t seenfrom; boolean_t seento; boolean_t holds; /* were holds requested with send -h */ boolean_t props; /* * The header nvlist is of the following format: * { * "tosnap" -> string * "fromsnap" -> string (if incremental) * "fss" -> { * id -> { * * "name" -> string (full name; for debugging) * "parentfromsnap" -> number (guid of fromsnap in parent) * * "props" -> { name -> value (only if set here) } * "snaps" -> { name (lastname) -> number (guid) } * "snapprops" -> { name (lastname) -> { name -> value } } * "snapholds" -> { name (lastname) -> { holdname -> crtime } } * * "origin" -> number (guid) (if clone) * "is_encroot" -> boolean * "sent" -> boolean (not on-disk) * } * } * } * */ } send_data_t; static void send_iterate_prop(zfs_handle_t *zhp, boolean_t received_only, nvlist_t *nv); static int send_iterate_snap(zfs_handle_t *zhp, void *arg) { send_data_t *sd = arg; uint64_t guid = zhp->zfs_dmustats.dds_guid; uint64_t txg = zhp->zfs_dmustats.dds_creation_txg; char *snapname; nvlist_t *nv; boolean_t isfromsnap, istosnap, istosnapwithnofrom; snapname = strrchr(zhp->zfs_name, '@')+1; isfromsnap = (sd->fromsnap != NULL && strcmp(sd->fromsnap, snapname) == 0); istosnap = (sd->tosnap != NULL && (strcmp(sd->tosnap, snapname) == 0)); istosnapwithnofrom = (istosnap && sd->fromsnap == NULL); if (sd->tosnap_txg != 0 && txg > sd->tosnap_txg) { if (sd->verbose) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "skipping snapshot %s because it was created " "after the destination snapshot (%s)\n"), zhp->zfs_name, sd->tosnap); } zfs_close(zhp); return (0); } VERIFY(0 == nvlist_add_uint64(sd->parent_snaps, snapname, guid)); /* * NB: if there is no fromsnap here (it's a newly created fs in * an incremental replication), we will substitute the tosnap. */ if (isfromsnap || (sd->parent_fromsnap_guid == 0 && istosnap)) { sd->parent_fromsnap_guid = guid; } if (!sd->recursive) { if (!sd->seenfrom && isfromsnap) { sd->seenfrom = B_TRUE; zfs_close(zhp); return (0); } if ((sd->seento || !sd->seenfrom) && !istosnapwithnofrom) { zfs_close(zhp); return (0); } if (istosnap) sd->seento = B_TRUE; } VERIFY(0 == nvlist_alloc(&nv, NV_UNIQUE_NAME, 0)); send_iterate_prop(zhp, sd->backup, nv); VERIFY(0 == nvlist_add_nvlist(sd->snapprops, snapname, nv)); nvlist_free(nv); if (sd->holds) { nvlist_t *holds = fnvlist_alloc(); int err = lzc_get_holds(zhp->zfs_name, &holds); if (err == 0) { VERIFY(0 == nvlist_add_nvlist(sd->snapholds, snapname, holds)); } fnvlist_free(holds); } zfs_close(zhp); return (0); } static void send_iterate_prop(zfs_handle_t *zhp, boolean_t received_only, nvlist_t *nv) { nvlist_t *props = NULL; nvpair_t *elem = NULL; if (received_only) props = zfs_get_recvd_props(zhp); else props = zhp->zfs_props; while ((elem = nvlist_next_nvpair(props, elem)) != NULL) { char *propname = nvpair_name(elem); zfs_prop_t prop = zfs_name_to_prop(propname); nvlist_t *propnv; if (!zfs_prop_user(propname)) { /* * Realistically, this should never happen. However, * we want the ability to add DSL properties without * needing to make incompatible version changes. We * need to ignore unknown properties to allow older * software to still send datasets containing these * properties, with the unknown properties elided. */ if (prop == ZPROP_INVAL) continue; if (zfs_prop_readonly(prop)) continue; } verify(nvpair_value_nvlist(elem, &propnv) == 0); if (prop == ZFS_PROP_QUOTA || prop == ZFS_PROP_RESERVATION || prop == ZFS_PROP_REFQUOTA || prop == ZFS_PROP_REFRESERVATION) { char *source; uint64_t value; verify(nvlist_lookup_uint64(propnv, ZPROP_VALUE, &value) == 0); if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) continue; /* * May have no source before SPA_VERSION_RECVD_PROPS, * but is still modifiable. */ if (nvlist_lookup_string(propnv, ZPROP_SOURCE, &source) == 0) { if ((strcmp(source, zhp->zfs_name) != 0) && (strcmp(source, ZPROP_SOURCE_VAL_RECVD) != 0)) continue; } } else { char *source; if (nvlist_lookup_string(propnv, ZPROP_SOURCE, &source) != 0) continue; if ((strcmp(source, zhp->zfs_name) != 0) && (strcmp(source, ZPROP_SOURCE_VAL_RECVD) != 0)) continue; } if (zfs_prop_user(propname) || zfs_prop_get_type(prop) == PROP_TYPE_STRING) { char *value; verify(nvlist_lookup_string(propnv, ZPROP_VALUE, &value) == 0); VERIFY(0 == nvlist_add_string(nv, propname, value)); } else { uint64_t value; verify(nvlist_lookup_uint64(propnv, ZPROP_VALUE, &value) == 0); VERIFY(0 == nvlist_add_uint64(nv, propname, value)); } } } /* * returns snapshot creation txg * and returns 0 if the snapshot does not exist */ static uint64_t get_snap_txg(libzfs_handle_t *hdl, const char *fs, const char *snap) { char name[ZFS_MAX_DATASET_NAME_LEN]; uint64_t txg = 0; if (fs == NULL || fs[0] == '\0' || snap == NULL || snap[0] == '\0') return (txg); (void) snprintf(name, sizeof (name), "%s@%s", fs, snap); if (zfs_dataset_exists(hdl, name, ZFS_TYPE_SNAPSHOT)) { zfs_handle_t *zhp = zfs_open(hdl, name, ZFS_TYPE_SNAPSHOT); if (zhp != NULL) { txg = zfs_prop_get_int(zhp, ZFS_PROP_CREATETXG); zfs_close(zhp); } } return (txg); } /* * recursively generate nvlists describing datasets. See comment * for the data structure send_data_t above for description of contents * of the nvlist. */ static int send_iterate_fs(zfs_handle_t *zhp, void *arg) { send_data_t *sd = arg; nvlist_t *nvfs = NULL, *nv = NULL; int rv = 0; uint64_t min_txg = 0, max_txg = 0; uint64_t parent_fromsnap_guid_save = sd->parent_fromsnap_guid; uint64_t fromsnap_txg_save = sd->fromsnap_txg; uint64_t tosnap_txg_save = sd->tosnap_txg; uint64_t txg = zhp->zfs_dmustats.dds_creation_txg; uint64_t guid = zhp->zfs_dmustats.dds_guid; uint64_t fromsnap_txg, tosnap_txg; char guidstring[64]; fromsnap_txg = get_snap_txg(zhp->zfs_hdl, zhp->zfs_name, sd->fromsnap); if (fromsnap_txg != 0) sd->fromsnap_txg = fromsnap_txg; tosnap_txg = get_snap_txg(zhp->zfs_hdl, zhp->zfs_name, sd->tosnap); if (tosnap_txg != 0) sd->tosnap_txg = tosnap_txg; /* * on the send side, if the current dataset does not have tosnap, * perform two additional checks: * * - skip sending the current dataset if it was created later than * the parent tosnap * - return error if the current dataset was created earlier than * the parent tosnap */ if (sd->tosnap != NULL && tosnap_txg == 0) { if (sd->tosnap_txg != 0 && txg > sd->tosnap_txg) { if (sd->verbose) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "skipping dataset %s: snapshot %s does " "not exist\n"), zhp->zfs_name, sd->tosnap); } } else { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "cannot send %s@%s%s: snapshot %s@%s does not " "exist\n"), sd->fsname, sd->tosnap, sd->recursive ? dgettext(TEXT_DOMAIN, " recursively") : "", zhp->zfs_name, sd->tosnap); rv = -1; } goto out; } nvfs = fnvlist_alloc(); fnvlist_add_string(nvfs, "name", zhp->zfs_name); fnvlist_add_uint64(nvfs, "parentfromsnap", sd->parent_fromsnap_guid); if (zhp->zfs_dmustats.dds_origin[0]) { zfs_handle_t *origin = zfs_open(zhp->zfs_hdl, zhp->zfs_dmustats.dds_origin, ZFS_TYPE_SNAPSHOT); if (origin == NULL) { rv = -1; goto out; } fnvlist_add_uint64(nvfs, "origin", origin->zfs_dmustats.dds_guid); zfs_close(origin); } /* iterate over props */ if (sd->props || sd->backup || sd->recursive) { nv = fnvlist_alloc(); send_iterate_prop(zhp, sd->backup, nv); } if (zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION) != ZIO_CRYPT_OFF) { boolean_t encroot; /* determine if this dataset is an encryption root */ if (zfs_crypto_get_encryption_root(zhp, &encroot, NULL) != 0) { rv = -1; goto out; } if (encroot) fnvlist_add_boolean(nvfs, "is_encroot"); /* * Encrypted datasets can only be sent with properties if * the raw flag is specified because the receive side doesn't * currently have a mechanism for recursively asking the user * for new encryption parameters. */ if (!sd->raw) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "cannot send %s@%s: encrypted dataset %s may not " "be sent with properties without the raw flag\n"), sd->fsname, sd->tosnap, zhp->zfs_name); rv = -1; goto out; } } if (nv != NULL) fnvlist_add_nvlist(nvfs, "props", nv); /* iterate over snaps, and set sd->parent_fromsnap_guid */ sd->parent_fromsnap_guid = 0; sd->parent_snaps = fnvlist_alloc(); sd->snapprops = fnvlist_alloc(); if (sd->holds) VERIFY(0 == nvlist_alloc(&sd->snapholds, NV_UNIQUE_NAME, 0)); /* * If this is a "doall" send, a replicate send or we're just trying * to gather a list of previous snapshots, iterate through all the * snaps in the txg range. Otherwise just look at the one we're * interested in. */ if (sd->doall || sd->replicate || sd->tosnap == NULL) { if (!sd->replicate && fromsnap_txg != 0) min_txg = fromsnap_txg; if (!sd->replicate && tosnap_txg != 0) max_txg = tosnap_txg; (void) zfs_iter_snapshots_sorted(zhp, send_iterate_snap, sd, min_txg, max_txg); } else { char snapname[MAXPATHLEN] = { 0 }; zfs_handle_t *snap; (void) snprintf(snapname, sizeof (snapname), "%s@%s", zhp->zfs_name, sd->tosnap); if (sd->fromsnap != NULL) sd->seenfrom = B_TRUE; snap = zfs_open(zhp->zfs_hdl, snapname, ZFS_TYPE_SNAPSHOT); if (snap != NULL) (void) send_iterate_snap(snap, sd); } fnvlist_add_nvlist(nvfs, "snaps", sd->parent_snaps); fnvlist_add_nvlist(nvfs, "snapprops", sd->snapprops); if (sd->holds) fnvlist_add_nvlist(nvfs, "snapholds", sd->snapholds); fnvlist_free(sd->parent_snaps); fnvlist_free(sd->snapprops); fnvlist_free(sd->snapholds); /* add this fs to nvlist */ (void) snprintf(guidstring, sizeof (guidstring), "0x%llx", (longlong_t)guid); fnvlist_add_nvlist(sd->fss, guidstring, nvfs); /* iterate over children */ if (sd->recursive) rv = zfs_iter_filesystems(zhp, send_iterate_fs, sd); out: sd->parent_fromsnap_guid = parent_fromsnap_guid_save; sd->fromsnap_txg = fromsnap_txg_save; sd->tosnap_txg = tosnap_txg_save; fnvlist_free(nv); fnvlist_free(nvfs); zfs_close(zhp); return (rv); } static int gather_nvlist(libzfs_handle_t *hdl, const char *fsname, const char *fromsnap, const char *tosnap, boolean_t recursive, boolean_t raw, boolean_t doall, boolean_t replicate, boolean_t verbose, boolean_t backup, boolean_t holds, boolean_t props, nvlist_t **nvlp, avl_tree_t **avlp) { zfs_handle_t *zhp; send_data_t sd = { 0 }; int error; zhp = zfs_open(hdl, fsname, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME); if (zhp == NULL) return (EZFS_BADTYPE); VERIFY(0 == nvlist_alloc(&sd.fss, NV_UNIQUE_NAME, 0)); sd.fsname = fsname; sd.fromsnap = fromsnap; sd.tosnap = tosnap; sd.recursive = recursive; sd.raw = raw; sd.doall = doall; sd.replicate = replicate; sd.verbose = verbose; sd.backup = backup; sd.holds = holds; sd.props = props; if ((error = send_iterate_fs(zhp, &sd)) != 0) { nvlist_free(sd.fss); if (avlp != NULL) *avlp = NULL; *nvlp = NULL; return (error); } if (avlp != NULL && (*avlp = fsavl_create(sd.fss)) == NULL) { nvlist_free(sd.fss); *nvlp = NULL; return (EZFS_NOMEM); } *nvlp = sd.fss; return (0); } /* * Routines specific to "zfs send" */ typedef struct send_dump_data { /* these are all just the short snapname (the part after the @) */ const char *fromsnap; const char *tosnap; char prevsnap[ZFS_MAX_DATASET_NAME_LEN]; uint64_t prevsnap_obj; boolean_t seenfrom, seento, replicate, doall, fromorigin; boolean_t verbose, dryrun, parsable, progress, embed_data, std_out; boolean_t large_block, compress, raw, holds; int outfd; boolean_t err; nvlist_t *fss; nvlist_t *snapholds; avl_tree_t *fsavl; snapfilter_cb_t *filter_cb; void *filter_cb_arg; nvlist_t *debugnv; char holdtag[ZFS_MAX_DATASET_NAME_LEN]; int cleanup_fd; uint64_t size; } send_dump_data_t; static int zfs_send_space(zfs_handle_t *zhp, const char *snapname, const char *from, enum lzc_send_flags flags, uint64_t *spacep) { libzfs_handle_t *hdl = zhp->zfs_hdl; int error; assert(snapname != NULL); error = lzc_send_space(snapname, from, flags, spacep); if (error != 0) { char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "warning: cannot estimate space for '%s'"), snapname); switch (error) { case EXDEV: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "not an earlier snapshot from the same fs")); return (zfs_error(hdl, EZFS_CROSSTARGET, errbuf)); case ENOENT: if (zfs_dataset_exists(hdl, snapname, ZFS_TYPE_SNAPSHOT)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "incremental source (%s) does not exist"), snapname); } return (zfs_error(hdl, EZFS_NOENT, errbuf)); case EDQUOT: case EFBIG: case EIO: case ENOLINK: case ENOSPC: case ENOSTR: case ENXIO: case EPIPE: case ERANGE: case EFAULT: case EROFS: case EINVAL: zfs_error_aux(hdl, strerror(error)); return (zfs_error(hdl, EZFS_BADBACKUP, errbuf)); default: return (zfs_standard_error(hdl, error, errbuf)); } } return (0); } /* * Dumps a backup of the given snapshot (incremental from fromsnap if it's not * NULL) to the file descriptor specified by outfd. */ static int dump_ioctl(zfs_handle_t *zhp, const char *fromsnap, uint64_t fromsnap_obj, boolean_t fromorigin, int outfd, enum lzc_send_flags flags, nvlist_t *debugnv) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *hdl = zhp->zfs_hdl; nvlist_t *thisdbg; assert(zhp->zfs_type == ZFS_TYPE_SNAPSHOT); assert(fromsnap_obj == 0 || !fromorigin); (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); zc.zc_cookie = outfd; zc.zc_obj = fromorigin; zc.zc_sendobj = zfs_prop_get_int(zhp, ZFS_PROP_OBJSETID); zc.zc_fromobj = fromsnap_obj; zc.zc_flags = flags; VERIFY(0 == nvlist_alloc(&thisdbg, NV_UNIQUE_NAME, 0)); if (fromsnap && fromsnap[0] != '\0') { VERIFY(0 == nvlist_add_string(thisdbg, "fromsnap", fromsnap)); } if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_SEND, &zc) != 0) { char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "warning: cannot send '%s'"), zhp->zfs_name); VERIFY(0 == nvlist_add_uint64(thisdbg, "error", errno)); if (debugnv) { VERIFY(0 == nvlist_add_nvlist(debugnv, zhp->zfs_name, thisdbg)); } nvlist_free(thisdbg); switch (errno) { case EXDEV: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "not an earlier snapshot from the same fs")); return (zfs_error(hdl, EZFS_CROSSTARGET, errbuf)); case EACCES: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "source key must be loaded")); return (zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf)); case ENOENT: if (zfs_dataset_exists(hdl, zc.zc_name, ZFS_TYPE_SNAPSHOT)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "incremental source (@%s) does not exist"), zc.zc_value); } return (zfs_error(hdl, EZFS_NOENT, errbuf)); case EDQUOT: case EFBIG: case EIO: case ENOLINK: case ENOSPC: case ENOSTR: case ENXIO: case EPIPE: case ERANGE: case EFAULT: case EROFS: zfs_error_aux(hdl, strerror(errno)); return (zfs_error(hdl, EZFS_BADBACKUP, errbuf)); default: return (zfs_standard_error(hdl, errno, errbuf)); } } if (debugnv) VERIFY(0 == nvlist_add_nvlist(debugnv, zhp->zfs_name, thisdbg)); nvlist_free(thisdbg); return (0); } static void gather_holds(zfs_handle_t *zhp, send_dump_data_t *sdd) { assert(zhp->zfs_type == ZFS_TYPE_SNAPSHOT); /* * zfs_send() only sets snapholds for sends that need them, * e.g. replication and doall. */ if (sdd->snapholds == NULL) return; fnvlist_add_string(sdd->snapholds, zhp->zfs_name, sdd->holdtag); } static void * send_progress_thread(void *arg) { progress_arg_t *pa = arg; zfs_cmd_t zc = {"\0"}; zfs_handle_t *zhp = pa->pa_zhp; libzfs_handle_t *hdl = zhp->zfs_hdl; unsigned long long bytes; char buf[16]; time_t t; struct tm *tm; (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); if (!pa->pa_parsable) (void) fprintf(stderr, "TIME SENT SNAPSHOT %s\n", zhp->zfs_name); /* * Print the progress from ZFS_IOC_SEND_PROGRESS every second. */ for (;;) { (void) sleep(1); zc.zc_cookie = pa->pa_fd; if (zfs_ioctl(hdl, ZFS_IOC_SEND_PROGRESS, &zc) != 0) return ((void *)-1); (void) time(&t); tm = localtime(&t); bytes = zc.zc_cookie; if (pa->pa_parsable) { (void) fprintf(stderr, "%02d:%02d:%02d\t%llu\t%s\n", tm->tm_hour, tm->tm_min, tm->tm_sec, bytes, zhp->zfs_name); } else { zfs_nicebytes(bytes, buf, sizeof (buf)); (void) fprintf(stderr, "%02d:%02d:%02d %5s %s\n", tm->tm_hour, tm->tm_min, tm->tm_sec, buf, zhp->zfs_name); } } } static void send_print_verbose(FILE *fout, const char *tosnap, const char *fromsnap, uint64_t size, boolean_t parsable) { if (parsable) { if (fromsnap != NULL) { (void) fprintf(fout, "incremental\t%s\t%s", fromsnap, tosnap); } else { (void) fprintf(fout, "full\t%s", tosnap); } } else { if (fromsnap != NULL) { if (strchr(fromsnap, '@') == NULL && strchr(fromsnap, '#') == NULL) { (void) fprintf(fout, dgettext(TEXT_DOMAIN, "send from @%s to %s"), fromsnap, tosnap); } else { (void) fprintf(fout, dgettext(TEXT_DOMAIN, "send from %s to %s"), fromsnap, tosnap); } } else { (void) fprintf(fout, dgettext(TEXT_DOMAIN, "full send of %s"), tosnap); } } if (parsable) { (void) fprintf(fout, "\t%llu", (longlong_t)size); } else if (size != 0) { char buf[16]; zfs_nicebytes(size, buf, sizeof (buf)); (void) fprintf(fout, dgettext(TEXT_DOMAIN, " estimated size is %s"), buf); } (void) fprintf(fout, "\n"); } static int dump_snapshot(zfs_handle_t *zhp, void *arg) { send_dump_data_t *sdd = arg; progress_arg_t pa = { 0 }; pthread_t tid; char *thissnap; enum lzc_send_flags flags = 0; int err; boolean_t isfromsnap, istosnap, fromorigin; boolean_t exclude = B_FALSE; FILE *fout = sdd->std_out ? stdout : stderr; err = 0; thissnap = strchr(zhp->zfs_name, '@') + 1; isfromsnap = (sdd->fromsnap != NULL && strcmp(sdd->fromsnap, thissnap) == 0); if (!sdd->seenfrom && isfromsnap) { gather_holds(zhp, sdd); sdd->seenfrom = B_TRUE; (void) strlcpy(sdd->prevsnap, thissnap, sizeof (sdd->prevsnap)); sdd->prevsnap_obj = zfs_prop_get_int(zhp, ZFS_PROP_OBJSETID); zfs_close(zhp); return (0); } if (sdd->seento || !sdd->seenfrom) { zfs_close(zhp); return (0); } istosnap = (strcmp(sdd->tosnap, thissnap) == 0); if (istosnap) sdd->seento = B_TRUE; if (sdd->large_block) flags |= LZC_SEND_FLAG_LARGE_BLOCK; if (sdd->embed_data) flags |= LZC_SEND_FLAG_EMBED_DATA; if (sdd->compress) flags |= LZC_SEND_FLAG_COMPRESS; if (sdd->raw) flags |= LZC_SEND_FLAG_RAW; if (!sdd->doall && !isfromsnap && !istosnap) { if (sdd->replicate) { char *snapname; nvlist_t *snapprops; /* * Filter out all intermediate snapshots except origin * snapshots needed to replicate clones. */ nvlist_t *nvfs = fsavl_find(sdd->fsavl, zhp->zfs_dmustats.dds_guid, &snapname); VERIFY(0 == nvlist_lookup_nvlist(nvfs, "snapprops", &snapprops)); VERIFY(0 == nvlist_lookup_nvlist(snapprops, thissnap, &snapprops)); exclude = !nvlist_exists(snapprops, "is_clone_origin"); } else { exclude = B_TRUE; } } /* * If a filter function exists, call it to determine whether * this snapshot will be sent. */ if (exclude || (sdd->filter_cb != NULL && sdd->filter_cb(zhp, sdd->filter_cb_arg) == B_FALSE)) { /* * This snapshot is filtered out. Don't send it, and don't * set prevsnap_obj, so it will be as if this snapshot didn't * exist, and the next accepted snapshot will be sent as * an incremental from the last accepted one, or as the * first (and full) snapshot in the case of a replication, * non-incremental send. */ zfs_close(zhp); return (0); } gather_holds(zhp, sdd); fromorigin = sdd->prevsnap[0] == '\0' && (sdd->fromorigin || sdd->replicate); if (sdd->verbose) { uint64_t size = 0; char fromds[ZFS_MAX_DATASET_NAME_LEN]; if (sdd->prevsnap[0] != '\0') { (void) strlcpy(fromds, zhp->zfs_name, sizeof (fromds)); *(strchr(fromds, '@') + 1) = '\0'; (void) strlcat(fromds, sdd->prevsnap, sizeof (fromds)); } if (zfs_send_space(zhp, zhp->zfs_name, sdd->prevsnap[0] ? fromds : NULL, flags, &size) != 0) { size = 0; /* cannot estimate send space */ } else { send_print_verbose(fout, zhp->zfs_name, sdd->prevsnap[0] ? sdd->prevsnap : NULL, size, sdd->parsable); } sdd->size += size; } if (!sdd->dryrun) { /* * If progress reporting is requested, spawn a new thread to * poll ZFS_IOC_SEND_PROGRESS at a regular interval. */ if (sdd->progress) { pa.pa_zhp = zhp; pa.pa_fd = sdd->outfd; pa.pa_parsable = sdd->parsable; if ((err = pthread_create(&tid, NULL, send_progress_thread, &pa)) != 0) { zfs_close(zhp); return (err); } } err = dump_ioctl(zhp, sdd->prevsnap, sdd->prevsnap_obj, fromorigin, sdd->outfd, flags, sdd->debugnv); if (sdd->progress) { (void) pthread_cancel(tid); (void) pthread_join(tid, NULL); } } (void) strcpy(sdd->prevsnap, thissnap); sdd->prevsnap_obj = zfs_prop_get_int(zhp, ZFS_PROP_OBJSETID); zfs_close(zhp); return (err); } static int dump_filesystem(zfs_handle_t *zhp, void *arg) { int rv = 0; send_dump_data_t *sdd = arg; boolean_t missingfrom = B_FALSE; zfs_cmd_t zc = {"\0"}; uint64_t min_txg = 0, max_txg = 0; (void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s", zhp->zfs_name, sdd->tosnap); if (ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_OBJSET_STATS, &zc) != 0) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "WARNING: could not send %s@%s: does not exist\n"), zhp->zfs_name, sdd->tosnap); sdd->err = B_TRUE; return (0); } if (sdd->replicate && sdd->fromsnap) { /* * If this fs does not have fromsnap, and we're doing * recursive, we need to send a full stream from the * beginning (or an incremental from the origin if this * is a clone). If we're doing non-recursive, then let * them get the error. */ (void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s", zhp->zfs_name, sdd->fromsnap); if (ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_OBJSET_STATS, &zc) != 0) { missingfrom = B_TRUE; } } sdd->seenfrom = sdd->seento = sdd->prevsnap[0] = 0; sdd->prevsnap_obj = 0; if (sdd->fromsnap == NULL || missingfrom) sdd->seenfrom = B_TRUE; /* * Iterate through all snapshots and process the ones we will be * sending. If we only have a "from" and "to" snapshot to deal * with, we can avoid iterating through all the other snapshots. */ if (sdd->doall || sdd->replicate || sdd->tosnap == NULL) { if (!sdd->replicate && sdd->fromsnap != NULL) min_txg = get_snap_txg(zhp->zfs_hdl, zhp->zfs_name, sdd->fromsnap); if (!sdd->replicate && sdd->tosnap != NULL) max_txg = get_snap_txg(zhp->zfs_hdl, zhp->zfs_name, sdd->tosnap); rv = zfs_iter_snapshots_sorted(zhp, dump_snapshot, arg, min_txg, max_txg); } else { char snapname[MAXPATHLEN] = { 0 }; zfs_handle_t *snap; if (!sdd->seenfrom) { (void) snprintf(snapname, sizeof (snapname), "%s@%s", zhp->zfs_name, sdd->fromsnap); snap = zfs_open(zhp->zfs_hdl, snapname, ZFS_TYPE_SNAPSHOT); if (snap != NULL) rv = dump_snapshot(snap, sdd); else rv = -1; } if (rv == 0) { (void) snprintf(snapname, sizeof (snapname), "%s@%s", zhp->zfs_name, sdd->tosnap); snap = zfs_open(zhp->zfs_hdl, snapname, ZFS_TYPE_SNAPSHOT); if (snap != NULL) rv = dump_snapshot(snap, sdd); else rv = -1; } } if (!sdd->seenfrom) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "WARNING: could not send %s@%s:\n" "incremental source (%s@%s) does not exist\n"), zhp->zfs_name, sdd->tosnap, zhp->zfs_name, sdd->fromsnap); sdd->err = B_TRUE; } else if (!sdd->seento) { if (sdd->fromsnap) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "WARNING: could not send %s@%s:\n" "incremental source (%s@%s) " "is not earlier than it\n"), zhp->zfs_name, sdd->tosnap, zhp->zfs_name, sdd->fromsnap); } else { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "WARNING: " "could not send %s@%s: does not exist\n"), zhp->zfs_name, sdd->tosnap); } sdd->err = B_TRUE; } return (rv); } static int dump_filesystems(zfs_handle_t *rzhp, void *arg) { send_dump_data_t *sdd = arg; nvpair_t *fspair; boolean_t needagain, progress; if (!sdd->replicate) return (dump_filesystem(rzhp, sdd)); /* Mark the clone origin snapshots. */ for (fspair = nvlist_next_nvpair(sdd->fss, NULL); fspair; fspair = nvlist_next_nvpair(sdd->fss, fspair)) { nvlist_t *nvfs; uint64_t origin_guid = 0; VERIFY(0 == nvpair_value_nvlist(fspair, &nvfs)); (void) nvlist_lookup_uint64(nvfs, "origin", &origin_guid); if (origin_guid != 0) { char *snapname; nvlist_t *origin_nv = fsavl_find(sdd->fsavl, origin_guid, &snapname); if (origin_nv != NULL) { nvlist_t *snapprops; VERIFY(0 == nvlist_lookup_nvlist(origin_nv, "snapprops", &snapprops)); VERIFY(0 == nvlist_lookup_nvlist(snapprops, snapname, &snapprops)); VERIFY(0 == nvlist_add_boolean( snapprops, "is_clone_origin")); } } } again: needagain = progress = B_FALSE; for (fspair = nvlist_next_nvpair(sdd->fss, NULL); fspair; fspair = nvlist_next_nvpair(sdd->fss, fspair)) { nvlist_t *fslist, *parent_nv; char *fsname; zfs_handle_t *zhp; int err; uint64_t origin_guid = 0; uint64_t parent_guid = 0; VERIFY(nvpair_value_nvlist(fspair, &fslist) == 0); if (nvlist_lookup_boolean(fslist, "sent") == 0) continue; VERIFY(nvlist_lookup_string(fslist, "name", &fsname) == 0); (void) nvlist_lookup_uint64(fslist, "origin", &origin_guid); (void) nvlist_lookup_uint64(fslist, "parentfromsnap", &parent_guid); if (parent_guid != 0) { parent_nv = fsavl_find(sdd->fsavl, parent_guid, NULL); if (!nvlist_exists(parent_nv, "sent")) { /* parent has not been sent; skip this one */ needagain = B_TRUE; continue; } } if (origin_guid != 0) { nvlist_t *origin_nv = fsavl_find(sdd->fsavl, origin_guid, NULL); if (origin_nv != NULL && !nvlist_exists(origin_nv, "sent")) { /* * origin has not been sent yet; * skip this clone. */ needagain = B_TRUE; continue; } } zhp = zfs_open(rzhp->zfs_hdl, fsname, ZFS_TYPE_DATASET); if (zhp == NULL) return (-1); err = dump_filesystem(zhp, sdd); VERIFY(nvlist_add_boolean(fslist, "sent") == 0); progress = B_TRUE; zfs_close(zhp); if (err) return (err); } if (needagain) { assert(progress); goto again; } /* clean out the sent flags in case we reuse this fss */ for (fspair = nvlist_next_nvpair(sdd->fss, NULL); fspair; fspair = nvlist_next_nvpair(sdd->fss, fspair)) { nvlist_t *fslist; VERIFY(nvpair_value_nvlist(fspair, &fslist) == 0); (void) nvlist_remove_all(fslist, "sent"); } return (0); } nvlist_t * zfs_send_resume_token_to_nvlist(libzfs_handle_t *hdl, const char *token) { unsigned int version; int nread, i; unsigned long long checksum, packed_len; /* * Decode token header, which is: * -- * Note that the only supported token version is 1. */ nread = sscanf(token, "%u-%llx-%llx-", &version, &checksum, &packed_len); if (nread != 3) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "resume token is corrupt (invalid format)")); return (NULL); } if (version != ZFS_SEND_RESUME_TOKEN_VERSION) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "resume token is corrupt (invalid version %u)"), version); return (NULL); } /* convert hexadecimal representation to binary */ token = strrchr(token, '-') + 1; int len = strlen(token) / 2; unsigned char *compressed = zfs_alloc(hdl, len); for (i = 0; i < len; i++) { nread = sscanf(token + i * 2, "%2hhx", compressed + i); if (nread != 1) { free(compressed); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "resume token is corrupt " "(payload is not hex-encoded)")); return (NULL); } } /* verify checksum */ zio_cksum_t cksum; fletcher_4_native_varsize(compressed, len, &cksum); if (cksum.zc_word[0] != checksum) { free(compressed); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "resume token is corrupt (incorrect checksum)")); return (NULL); } /* uncompress */ void *packed = zfs_alloc(hdl, packed_len); uLongf packed_len_long = packed_len; if (uncompress(packed, &packed_len_long, compressed, len) != Z_OK || packed_len_long != packed_len) { free(packed); free(compressed); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "resume token is corrupt (decompression failed)")); return (NULL); } /* unpack nvlist */ nvlist_t *nv; int error = nvlist_unpack(packed, packed_len, &nv, KM_SLEEP); free(packed); free(compressed); if (error != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "resume token is corrupt (nvlist_unpack failed)")); return (NULL); } return (nv); } int zfs_send_resume(libzfs_handle_t *hdl, sendflags_t *flags, int outfd, const char *resume_token) { char errbuf[1024]; char *toname; char *fromname = NULL; uint64_t resumeobj, resumeoff, toguid, fromguid, bytes; zfs_handle_t *zhp; int error = 0; char name[ZFS_MAX_DATASET_NAME_LEN]; enum lzc_send_flags lzc_flags = 0; FILE *fout = (flags->verbose && flags->dryrun) ? stdout : stderr; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot resume send")); nvlist_t *resume_nvl = zfs_send_resume_token_to_nvlist(hdl, resume_token); if (resume_nvl == NULL) { /* * zfs_error_aux has already been set by * zfs_send_resume_token_to_nvlist */ return (zfs_error(hdl, EZFS_FAULT, errbuf)); } if (flags->verbose) { (void) fprintf(fout, dgettext(TEXT_DOMAIN, "resume token contents:\n")); nvlist_print(fout, resume_nvl); } if (nvlist_lookup_string(resume_nvl, "toname", &toname) != 0 || nvlist_lookup_uint64(resume_nvl, "object", &resumeobj) != 0 || nvlist_lookup_uint64(resume_nvl, "offset", &resumeoff) != 0 || nvlist_lookup_uint64(resume_nvl, "bytes", &bytes) != 0 || nvlist_lookup_uint64(resume_nvl, "toguid", &toguid) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "resume token is corrupt")); return (zfs_error(hdl, EZFS_FAULT, errbuf)); } fromguid = 0; (void) nvlist_lookup_uint64(resume_nvl, "fromguid", &fromguid); if (flags->largeblock || nvlist_exists(resume_nvl, "largeblockok")) lzc_flags |= LZC_SEND_FLAG_LARGE_BLOCK; if (flags->embed_data || nvlist_exists(resume_nvl, "embedok")) lzc_flags |= LZC_SEND_FLAG_EMBED_DATA; if (flags->compress || nvlist_exists(resume_nvl, "compressok")) lzc_flags |= LZC_SEND_FLAG_COMPRESS; if (flags->raw || nvlist_exists(resume_nvl, "rawok")) lzc_flags |= LZC_SEND_FLAG_RAW; if (guid_to_name(hdl, toname, toguid, B_FALSE, name) != 0) { if (zfs_dataset_exists(hdl, toname, ZFS_TYPE_DATASET)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is no longer the same snapshot used in " "the initial send"), toname); } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' used in the initial send no longer exists"), toname); } return (zfs_error(hdl, EZFS_BADPATH, errbuf)); } zhp = zfs_open(hdl, name, ZFS_TYPE_DATASET); if (zhp == NULL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "unable to access '%s'"), name); return (zfs_error(hdl, EZFS_BADPATH, errbuf)); } if (fromguid != 0) { if (guid_to_name(hdl, toname, fromguid, B_TRUE, name) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "incremental source %#llx no longer exists"), (longlong_t)fromguid); return (zfs_error(hdl, EZFS_BADPATH, errbuf)); } fromname = name; } if (flags->verbose) { uint64_t size = 0; error = lzc_send_space(zhp->zfs_name, fromname, lzc_flags, &size); if (error == 0) size = MAX(0, (int64_t)(size - bytes)); send_print_verbose(fout, zhp->zfs_name, fromname, size, flags->parsable); } if (!flags->dryrun) { progress_arg_t pa = { 0 }; pthread_t tid; /* * If progress reporting is requested, spawn a new thread to * poll ZFS_IOC_SEND_PROGRESS at a regular interval. */ if (flags->progress) { pa.pa_zhp = zhp; pa.pa_fd = outfd; pa.pa_parsable = flags->parsable; error = pthread_create(&tid, NULL, send_progress_thread, &pa); if (error != 0) { zfs_close(zhp); return (error); } } error = lzc_send_resume(zhp->zfs_name, fromname, outfd, lzc_flags, resumeobj, resumeoff); if (flags->progress) { (void) pthread_cancel(tid); (void) pthread_join(tid, NULL); } char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "warning: cannot send '%s'"), zhp->zfs_name); zfs_close(zhp); switch (error) { case 0: return (0); case EACCES: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "source key must be loaded")); return (zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf)); case EXDEV: case ENOENT: case EDQUOT: case EFBIG: case EIO: case ENOLINK: case ENOSPC: case ENOSTR: case ENXIO: case EPIPE: case ERANGE: case EFAULT: case EROFS: zfs_error_aux(hdl, strerror(errno)); return (zfs_error(hdl, EZFS_BADBACKUP, errbuf)); default: return (zfs_standard_error(hdl, errno, errbuf)); } } zfs_close(zhp); return (error); } /* * Generate a send stream for the dataset identified by the argument zhp. * * The content of the send stream is the snapshot identified by * 'tosnap'. Incremental streams are requested in two ways: * - from the snapshot identified by "fromsnap" (if non-null) or * - from the origin of the dataset identified by zhp, which must * be a clone. In this case, "fromsnap" is null and "fromorigin" * is TRUE. * * The send stream is recursive (i.e. dumps a hierarchy of snapshots) and * uses a special header (with a hdrtype field of DMU_COMPOUNDSTREAM) * if "replicate" is set. If "doall" is set, dump all the intermediate * snapshots. The DMU_COMPOUNDSTREAM header is used in the "doall" * case too. If "props" is set, send properties. */ int zfs_send(zfs_handle_t *zhp, const char *fromsnap, const char *tosnap, sendflags_t *flags, int outfd, snapfilter_cb_t filter_func, void *cb_arg, nvlist_t **debugnvp) { char errbuf[1024]; send_dump_data_t sdd = { 0 }; int err = 0; nvlist_t *fss = NULL; avl_tree_t *fsavl = NULL; static uint64_t holdseq; int spa_version; pthread_t tid = 0; int pipefd[2]; dedup_arg_t dda = { 0 }; int featureflags = 0; FILE *fout; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot send '%s'"), zhp->zfs_name); if (fromsnap && fromsnap[0] == '\0') { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "zero-length incremental source")); return (zfs_error(zhp->zfs_hdl, EZFS_NOENT, errbuf)); } if (zhp->zfs_type == ZFS_TYPE_FILESYSTEM) { uint64_t version; version = zfs_prop_get_int(zhp, ZFS_PROP_VERSION); if (version >= ZPL_VERSION_SA) { featureflags |= DMU_BACKUP_FEATURE_SA_SPILL; } } if (flags->holds) featureflags |= DMU_BACKUP_FEATURE_HOLDS; /* * Start the dedup thread if this is a dedup stream. We do not bother * doing this if this a raw send of an encrypted dataset with dedup off * because normal encrypted blocks won't dedup. */ if (flags->dedup && !flags->dryrun && !(flags->raw && zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION) != ZIO_CRYPT_OFF && zfs_prop_get_int(zhp, ZFS_PROP_DEDUP) == ZIO_CHECKSUM_OFF)) { featureflags |= (DMU_BACKUP_FEATURE_DEDUP | DMU_BACKUP_FEATURE_DEDUPPROPS); if ((err = socketpair(AF_UNIX, SOCK_STREAM, 0, pipefd)) != 0) { zfs_error_aux(zhp->zfs_hdl, strerror(errno)); return (zfs_error(zhp->zfs_hdl, EZFS_PIPEFAILED, errbuf)); } dda.outputfd = outfd; dda.inputfd = pipefd[1]; dda.dedup_hdl = zhp->zfs_hdl; if ((err = pthread_create(&tid, NULL, cksummer, &dda)) != 0) { (void) close(pipefd[0]); (void) close(pipefd[1]); zfs_error_aux(zhp->zfs_hdl, strerror(errno)); return (zfs_error(zhp->zfs_hdl, EZFS_THREADCREATEFAILED, errbuf)); } } if (flags->replicate || flags->doall || flags->props || flags->holds || flags->backup) { dmu_replay_record_t drr = { 0 }; char *packbuf = NULL; size_t buflen = 0; zio_cksum_t zc; ZIO_SET_CHECKSUM(&zc, 0, 0, 0, 0); if (flags->replicate || flags->props || flags->backup || flags->holds) { nvlist_t *hdrnv; VERIFY(0 == nvlist_alloc(&hdrnv, NV_UNIQUE_NAME, 0)); if (fromsnap) { VERIFY(0 == nvlist_add_string(hdrnv, "fromsnap", fromsnap)); } VERIFY(0 == nvlist_add_string(hdrnv, "tosnap", tosnap)); if (!flags->replicate) { VERIFY(0 == nvlist_add_boolean(hdrnv, "not_recursive")); } if (flags->raw) { VERIFY(0 == nvlist_add_boolean(hdrnv, "raw")); } err = gather_nvlist(zhp->zfs_hdl, zhp->zfs_name, fromsnap, tosnap, flags->replicate, flags->raw, flags->doall, flags->replicate, flags->verbose, flags->backup, flags->holds, flags->props, &fss, &fsavl); if (err) goto err_out; VERIFY(0 == nvlist_add_nvlist(hdrnv, "fss", fss)); err = nvlist_pack(hdrnv, &packbuf, &buflen, NV_ENCODE_XDR, 0); if (debugnvp) *debugnvp = hdrnv; else nvlist_free(hdrnv); if (err) goto stderr_out; } if (!flags->dryrun) { /* write first begin record */ drr.drr_type = DRR_BEGIN; drr.drr_u.drr_begin.drr_magic = DMU_BACKUP_MAGIC; DMU_SET_STREAM_HDRTYPE(drr.drr_u.drr_begin. drr_versioninfo, DMU_COMPOUNDSTREAM); DMU_SET_FEATUREFLAGS(drr.drr_u.drr_begin. drr_versioninfo, featureflags); if (snprintf(drr.drr_u.drr_begin.drr_toname, sizeof (drr.drr_u.drr_begin.drr_toname), "%s@%s", zhp->zfs_name, tosnap) >= sizeof (drr.drr_u.drr_begin.drr_toname)) { err = EINVAL; goto stderr_out; } drr.drr_payloadlen = buflen; err = dump_record(&drr, packbuf, buflen, &zc, outfd); free(packbuf); if (err != 0) goto stderr_out; /* write end record */ bzero(&drr, sizeof (drr)); drr.drr_type = DRR_END; drr.drr_u.drr_end.drr_checksum = zc; err = write(outfd, &drr, sizeof (drr)); if (err == -1) { err = errno; goto stderr_out; } err = 0; } } /* dump each stream */ sdd.fromsnap = fromsnap; sdd.tosnap = tosnap; if (tid != 0) sdd.outfd = pipefd[0]; else sdd.outfd = outfd; sdd.replicate = flags->replicate; sdd.doall = flags->doall; sdd.fromorigin = flags->fromorigin; sdd.fss = fss; sdd.fsavl = fsavl; sdd.verbose = flags->verbose; sdd.parsable = flags->parsable; sdd.progress = flags->progress; sdd.dryrun = flags->dryrun; sdd.large_block = flags->largeblock; sdd.embed_data = flags->embed_data; sdd.compress = flags->compress; sdd.raw = flags->raw; sdd.holds = flags->holds; sdd.filter_cb = filter_func; sdd.filter_cb_arg = cb_arg; if (debugnvp) sdd.debugnv = *debugnvp; if (sdd.verbose && sdd.dryrun) sdd.std_out = B_TRUE; fout = sdd.std_out ? stdout : stderr; /* * Some flags require that we place user holds on the datasets that are * being sent so they don't get destroyed during the send. We can skip * this step if the pool is imported read-only since the datasets cannot * be destroyed. */ if (!flags->dryrun && !zpool_get_prop_int(zfs_get_pool_handle(zhp), ZPOOL_PROP_READONLY, NULL) && zfs_spa_version(zhp, &spa_version) == 0 && spa_version >= SPA_VERSION_USERREFS && (flags->doall || flags->replicate)) { ++holdseq; (void) snprintf(sdd.holdtag, sizeof (sdd.holdtag), ".send-%d-%llu", getpid(), (u_longlong_t)holdseq); sdd.cleanup_fd = open(ZFS_DEV, O_RDWR); if (sdd.cleanup_fd < 0) { err = errno; goto stderr_out; } sdd.snapholds = fnvlist_alloc(); } else { sdd.cleanup_fd = -1; sdd.snapholds = NULL; } if (flags->verbose || sdd.snapholds != NULL) { /* * Do a verbose no-op dry run to get all the verbose output * or to gather snapshot hold's before generating any data, * then do a non-verbose real run to generate the streams. */ sdd.dryrun = B_TRUE; err = dump_filesystems(zhp, &sdd); if (err != 0) goto stderr_out; if (flags->verbose) { if (flags->parsable) { (void) fprintf(fout, "size\t%llu\n", (longlong_t)sdd.size); } else { char buf[16]; zfs_nicebytes(sdd.size, buf, sizeof (buf)); (void) fprintf(fout, dgettext(TEXT_DOMAIN, "total estimated size is %s\n"), buf); } } /* Ensure no snaps found is treated as an error. */ if (!sdd.seento) { err = ENOENT; goto err_out; } /* Skip the second run if dryrun was requested. */ if (flags->dryrun) goto err_out; if (sdd.snapholds != NULL) { err = zfs_hold_nvl(zhp, sdd.cleanup_fd, sdd.snapholds); if (err != 0) goto stderr_out; fnvlist_free(sdd.snapholds); sdd.snapholds = NULL; } sdd.dryrun = B_FALSE; sdd.verbose = B_FALSE; } err = dump_filesystems(zhp, &sdd); fsavl_destroy(fsavl); nvlist_free(fss); /* Ensure no snaps found is treated as an error. */ if (err == 0 && !sdd.seento) err = ENOENT; if (tid != 0) { if (err != 0) (void) pthread_cancel(tid); (void) close(pipefd[0]); (void) pthread_join(tid, NULL); } if (sdd.cleanup_fd != -1) { VERIFY(0 == close(sdd.cleanup_fd)); sdd.cleanup_fd = -1; } if (!flags->dryrun && (flags->replicate || flags->doall || flags->props || flags->backup || flags->holds)) { /* * write final end record. NB: want to do this even if * there was some error, because it might not be totally * failed. */ dmu_replay_record_t drr = { 0 }; drr.drr_type = DRR_END; if (write(outfd, &drr, sizeof (drr)) == -1) { return (zfs_standard_error(zhp->zfs_hdl, errno, errbuf)); } } return (err || sdd.err); stderr_out: err = zfs_standard_error(zhp->zfs_hdl, err, errbuf); err_out: fsavl_destroy(fsavl); nvlist_free(fss); fnvlist_free(sdd.snapholds); if (sdd.cleanup_fd != -1) VERIFY(0 == close(sdd.cleanup_fd)); if (tid != 0) { (void) pthread_cancel(tid); (void) close(pipefd[0]); (void) pthread_join(tid, NULL); } return (err); } int zfs_send_one(zfs_handle_t *zhp, const char *from, int fd, sendflags_t flags) { int err = 0; libzfs_handle_t *hdl = zhp->zfs_hdl; enum lzc_send_flags lzc_flags = 0; FILE *fout = (flags.verbose && flags.dryrun) ? stdout : stderr; char errbuf[1024]; if (flags.largeblock) lzc_flags |= LZC_SEND_FLAG_LARGE_BLOCK; if (flags.embed_data) lzc_flags |= LZC_SEND_FLAG_EMBED_DATA; if (flags.compress) lzc_flags |= LZC_SEND_FLAG_COMPRESS; if (flags.raw) lzc_flags |= LZC_SEND_FLAG_RAW; if (flags.verbose) { uint64_t size = 0; err = lzc_send_space(zhp->zfs_name, from, lzc_flags, &size); if (err == 0) { send_print_verbose(fout, zhp->zfs_name, from, size, flags.parsable); } else { (void) fprintf(stderr, "Cannot estimate send size: " "%s\n", strerror(errno)); } } if (flags.dryrun) return (err); (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "warning: cannot send '%s'"), zhp->zfs_name); err = lzc_send(zhp->zfs_name, from, fd, lzc_flags); if (err != 0) { switch (errno) { case EXDEV: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "not an earlier snapshot from the same fs")); return (zfs_error(hdl, EZFS_CROSSTARGET, errbuf)); case ENOENT: case ESRCH: if (lzc_exists(zhp->zfs_name)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "incremental source (%s) does not exist"), from); } return (zfs_error(hdl, EZFS_NOENT, errbuf)); case EACCES: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "dataset key must be loaded")); return (zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf)); case EBUSY: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "target is busy; if a filesystem, " "it must not be mounted")); return (zfs_error(hdl, EZFS_BUSY, errbuf)); case EDQUOT: case EFBIG: case EIO: case ENOLINK: case ENOSPC: case ENOSTR: case ENXIO: case EPIPE: case ERANGE: case EFAULT: case EROFS: zfs_error_aux(hdl, strerror(errno)); return (zfs_error(hdl, EZFS_BADBACKUP, errbuf)); default: return (zfs_standard_error(hdl, errno, errbuf)); } } return (err != 0); } /* * Routines specific to "zfs recv" */ static int recv_read(libzfs_handle_t *hdl, int fd, void *buf, int ilen, boolean_t byteswap, zio_cksum_t *zc) { char *cp = buf; int rv; int len = ilen; assert(ilen <= SPA_MAXBLOCKSIZE); do { rv = read(fd, cp, len); cp += rv; len -= rv; } while (rv > 0); if (rv < 0 || len != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "failed to read from stream")); return (zfs_error(hdl, EZFS_BADSTREAM, dgettext(TEXT_DOMAIN, "cannot receive"))); } if (zc) { if (byteswap) fletcher_4_incremental_byteswap(buf, ilen, zc); else fletcher_4_incremental_native(buf, ilen, zc); } return (0); } static int recv_read_nvlist(libzfs_handle_t *hdl, int fd, int len, nvlist_t **nvp, boolean_t byteswap, zio_cksum_t *zc) { char *buf; int err; buf = zfs_alloc(hdl, len); if (buf == NULL) return (ENOMEM); err = recv_read(hdl, fd, buf, len, byteswap, zc); if (err != 0) { free(buf); return (err); } err = nvlist_unpack(buf, len, nvp, 0); free(buf); if (err != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid " "stream (malformed nvlist)")); return (EINVAL); } return (0); } /* * Returns the grand origin (origin of origin of origin...) of a given handle. * If this dataset is not a clone, it simply returns a copy of the original * handle. */ static zfs_handle_t * recv_open_grand_origin(zfs_handle_t *zhp) { char origin[ZFS_MAX_DATASET_NAME_LEN]; zprop_source_t src; zfs_handle_t *ozhp = zfs_handle_dup(zhp); while (ozhp != NULL) { if (zfs_prop_get(ozhp, ZFS_PROP_ORIGIN, origin, sizeof (origin), &src, NULL, 0, B_FALSE) != 0) break; (void) zfs_close(ozhp); ozhp = zfs_open(zhp->zfs_hdl, origin, ZFS_TYPE_FILESYSTEM); } return (ozhp); } static int recv_rename_impl(zfs_handle_t *zhp, const char *name, const char *newname) { int err; zfs_handle_t *ozhp = NULL; /* * Attempt to rename the dataset. If it fails with EACCES we have * attempted to rename the dataset outside of its encryption root. * Force the dataset to become an encryption root and try again. */ err = lzc_rename(name, newname); if (err == EACCES) { ozhp = recv_open_grand_origin(zhp); if (ozhp == NULL) { err = ENOENT; goto out; } err = lzc_change_key(ozhp->zfs_name, DCP_CMD_FORCE_NEW_KEY, NULL, NULL, 0); if (err != 0) goto out; err = lzc_rename(name, newname); } out: if (ozhp != NULL) zfs_close(ozhp); return (err); } static int recv_rename(libzfs_handle_t *hdl, const char *name, const char *tryname, int baselen, char *newname, recvflags_t *flags) { static int seq; int err; prop_changelist_t *clp = NULL; zfs_handle_t *zhp = NULL; zhp = zfs_open(hdl, name, ZFS_TYPE_DATASET); if (zhp == NULL) { err = -1; goto out; } clp = changelist_gather(zhp, ZFS_PROP_NAME, 0, flags->force ? MS_FORCE : 0); if (clp == NULL) { err = -1; goto out; } err = changelist_prefix(clp); if (err) goto out; if (tryname) { (void) strcpy(newname, tryname); if (flags->verbose) { (void) printf("attempting rename %s to %s\n", name, newname); } err = recv_rename_impl(zhp, name, newname); if (err == 0) changelist_rename(clp, name, tryname); } else { err = ENOENT; } if (err != 0 && strncmp(name + baselen, "recv-", 5) != 0) { seq++; (void) snprintf(newname, ZFS_MAX_DATASET_NAME_LEN, "%.*srecv-%u-%u", baselen, name, getpid(), seq); if (flags->verbose) { (void) printf("failed - trying rename %s to %s\n", name, newname); } err = recv_rename_impl(zhp, name, newname); if (err == 0) changelist_rename(clp, name, newname); if (err && flags->verbose) { (void) printf("failed (%u) - " "will try again on next pass\n", errno); } err = EAGAIN; } else if (flags->verbose) { if (err == 0) (void) printf("success\n"); else (void) printf("failed (%u)\n", errno); } (void) changelist_postfix(clp); out: if (clp != NULL) changelist_free(clp); if (zhp != NULL) zfs_close(zhp); return (err); } static int recv_promote(libzfs_handle_t *hdl, const char *fsname, const char *origin_fsname, recvflags_t *flags) { int err; zfs_cmd_t zc = {"\0"}; zfs_handle_t *zhp = NULL, *ozhp = NULL; if (flags->verbose) (void) printf("promoting %s\n", fsname); (void) strlcpy(zc.zc_value, origin_fsname, sizeof (zc.zc_value)); (void) strlcpy(zc.zc_name, fsname, sizeof (zc.zc_name)); /* * Attempt to promote the dataset. If it fails with EACCES the * promotion would cause this dataset to leave its encryption root. * Force the origin to become an encryption root and try again. */ err = zfs_ioctl(hdl, ZFS_IOC_PROMOTE, &zc); if (err == EACCES) { zhp = zfs_open(hdl, fsname, ZFS_TYPE_DATASET); if (zhp == NULL) { err = -1; goto out; } ozhp = recv_open_grand_origin(zhp); if (ozhp == NULL) { err = -1; goto out; } err = lzc_change_key(ozhp->zfs_name, DCP_CMD_FORCE_NEW_KEY, NULL, NULL, 0); if (err != 0) goto out; err = zfs_ioctl(hdl, ZFS_IOC_PROMOTE, &zc); } out: if (zhp != NULL) zfs_close(zhp); if (ozhp != NULL) zfs_close(ozhp); return (err); } static int recv_destroy(libzfs_handle_t *hdl, const char *name, int baselen, char *newname, recvflags_t *flags) { int err = 0; prop_changelist_t *clp; zfs_handle_t *zhp; boolean_t defer = B_FALSE; int spa_version; zhp = zfs_open(hdl, name, ZFS_TYPE_DATASET); if (zhp == NULL) return (-1); clp = changelist_gather(zhp, ZFS_PROP_NAME, 0, flags->force ? MS_FORCE : 0); if (zfs_get_type(zhp) == ZFS_TYPE_SNAPSHOT && zfs_spa_version(zhp, &spa_version) == 0 && spa_version >= SPA_VERSION_USERREFS) defer = B_TRUE; zfs_close(zhp); if (clp == NULL) return (-1); err = changelist_prefix(clp); if (err) return (err); if (flags->verbose) (void) printf("attempting destroy %s\n", name); if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) { nvlist_t *nv = fnvlist_alloc(); fnvlist_add_boolean(nv, name); err = lzc_destroy_snaps(nv, defer, NULL); fnvlist_free(nv); } else { err = lzc_destroy(name); } if (err == 0) { if (flags->verbose) (void) printf("success\n"); changelist_remove(clp, name); } (void) changelist_postfix(clp); changelist_free(clp); /* * Deferred destroy might destroy the snapshot or only mark it to be * destroyed later, and it returns success in either case. */ if (err != 0 || (defer && zfs_dataset_exists(hdl, name, ZFS_TYPE_SNAPSHOT))) { err = recv_rename(hdl, name, NULL, baselen, newname, flags); } return (err); } typedef struct guid_to_name_data { uint64_t guid; boolean_t bookmark_ok; char *name; char *skip; } guid_to_name_data_t; static int guid_to_name_cb(zfs_handle_t *zhp, void *arg) { guid_to_name_data_t *gtnd = arg; const char *slash; int err; if (gtnd->skip != NULL && (slash = strrchr(zhp->zfs_name, '/')) != NULL && strcmp(slash + 1, gtnd->skip) == 0) { zfs_close(zhp); return (0); } if (zfs_prop_get_int(zhp, ZFS_PROP_GUID) == gtnd->guid) { (void) strcpy(gtnd->name, zhp->zfs_name); zfs_close(zhp); return (EEXIST); } err = zfs_iter_children(zhp, guid_to_name_cb, gtnd); if (err != EEXIST && gtnd->bookmark_ok) err = zfs_iter_bookmarks(zhp, guid_to_name_cb, gtnd); zfs_close(zhp); return (err); } /* * Attempt to find the local dataset associated with this guid. In the case of * multiple matches, we attempt to find the "best" match by searching * progressively larger portions of the hierarchy. This allows one to send a * tree of datasets individually and guarantee that we will find the source * guid within that hierarchy, even if there are multiple matches elsewhere. */ static int guid_to_name(libzfs_handle_t *hdl, const char *parent, uint64_t guid, boolean_t bookmark_ok, char *name) { char pname[ZFS_MAX_DATASET_NAME_LEN]; guid_to_name_data_t gtnd; gtnd.guid = guid; gtnd.bookmark_ok = bookmark_ok; gtnd.name = name; gtnd.skip = NULL; /* * Search progressively larger portions of the hierarchy, starting * with the filesystem specified by 'parent'. This will * select the "most local" version of the origin snapshot in the case * that there are multiple matching snapshots in the system. */ (void) strlcpy(pname, parent, sizeof (pname)); char *cp = strrchr(pname, '@'); if (cp == NULL) cp = strchr(pname, '\0'); for (; cp != NULL; cp = strrchr(pname, '/')) { /* Chop off the last component and open the parent */ *cp = '\0'; zfs_handle_t *zhp = make_dataset_handle(hdl, pname); if (zhp == NULL) continue; int err = guid_to_name_cb(zfs_handle_dup(zhp), >nd); if (err != EEXIST) err = zfs_iter_children(zhp, guid_to_name_cb, >nd); if (err != EEXIST && bookmark_ok) err = zfs_iter_bookmarks(zhp, guid_to_name_cb, >nd); zfs_close(zhp); if (err == EEXIST) return (0); /* * Remember the last portion of the dataset so we skip it next * time through (as we've already searched that portion of the * hierarchy). */ gtnd.skip = strrchr(pname, '/') + 1; } return (ENOENT); } /* * Return +1 if guid1 is before guid2, 0 if they are the same, and -1 if * guid1 is after guid2. */ static int created_before(libzfs_handle_t *hdl, avl_tree_t *avl, uint64_t guid1, uint64_t guid2) { nvlist_t *nvfs; char *fsname = NULL, *snapname = NULL; char buf[ZFS_MAX_DATASET_NAME_LEN]; int rv; zfs_handle_t *guid1hdl, *guid2hdl; uint64_t create1, create2; if (guid2 == 0) return (0); if (guid1 == 0) return (1); nvfs = fsavl_find(avl, guid1, &snapname); VERIFY(0 == nvlist_lookup_string(nvfs, "name", &fsname)); (void) snprintf(buf, sizeof (buf), "%s@%s", fsname, snapname); guid1hdl = zfs_open(hdl, buf, ZFS_TYPE_SNAPSHOT); if (guid1hdl == NULL) return (-1); nvfs = fsavl_find(avl, guid2, &snapname); VERIFY(0 == nvlist_lookup_string(nvfs, "name", &fsname)); (void) snprintf(buf, sizeof (buf), "%s@%s", fsname, snapname); guid2hdl = zfs_open(hdl, buf, ZFS_TYPE_SNAPSHOT); if (guid2hdl == NULL) { zfs_close(guid1hdl); return (-1); } create1 = zfs_prop_get_int(guid1hdl, ZFS_PROP_CREATETXG); create2 = zfs_prop_get_int(guid2hdl, ZFS_PROP_CREATETXG); if (create1 < create2) rv = -1; else if (create1 > create2) rv = +1; else rv = 0; zfs_close(guid1hdl); zfs_close(guid2hdl); return (rv); } /* * This function reestablishes the hierarchy of encryption roots after a * recursive incremental receive has completed. This must be done after the * second call to recv_incremental_replication() has renamed and promoted all * sent datasets to their final locations in the dataset hierarchy. */ static int recv_fix_encryption_hierarchy(libzfs_handle_t *hdl, const char *destname, nvlist_t *stream_nv, avl_tree_t *stream_avl) { int err; nvpair_t *fselem = NULL; nvlist_t *stream_fss; char *cp; char top_zfs[ZFS_MAX_DATASET_NAME_LEN]; (void) strcpy(top_zfs, destname); cp = strrchr(top_zfs, '@'); if (cp != NULL) *cp = '\0'; VERIFY(0 == nvlist_lookup_nvlist(stream_nv, "fss", &stream_fss)); while ((fselem = nvlist_next_nvpair(stream_fss, fselem)) != NULL) { zfs_handle_t *zhp = NULL; uint64_t crypt; nvlist_t *snaps, *props, *stream_nvfs = NULL; nvpair_t *snapel = NULL; boolean_t is_encroot, is_clone, stream_encroot; char *cp; char *stream_keylocation = NULL; char keylocation[MAXNAMELEN]; char fsname[ZFS_MAX_DATASET_NAME_LEN]; keylocation[0] = '\0'; VERIFY(0 == nvpair_value_nvlist(fselem, &stream_nvfs)); VERIFY(0 == nvlist_lookup_nvlist(stream_nvfs, "snaps", &snaps)); VERIFY(0 == nvlist_lookup_nvlist(stream_nvfs, "props", &props)); stream_encroot = nvlist_exists(stream_nvfs, "is_encroot"); /* find a snapshot from the stream that exists locally */ err = ENOENT; while ((snapel = nvlist_next_nvpair(snaps, snapel)) != NULL) { uint64_t guid; VERIFY(0 == nvpair_value_uint64(snapel, &guid)); err = guid_to_name(hdl, destname, guid, B_FALSE, fsname); if (err == 0) break; } if (err != 0) continue; cp = strchr(fsname, '@'); if (cp != NULL) *cp = '\0'; zhp = zfs_open(hdl, fsname, ZFS_TYPE_DATASET); if (zhp == NULL) { err = ENOENT; goto error; } crypt = zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION); is_clone = zhp->zfs_dmustats.dds_origin[0] != '\0'; (void) zfs_crypto_get_encryption_root(zhp, &is_encroot, NULL); /* we don't need to do anything for unencrypted datasets */ if (crypt == ZIO_CRYPT_OFF) { zfs_close(zhp); continue; } /* * If the dataset is flagged as an encryption root, was not * received as a clone and is not currently an encryption root, * force it to become one. Fixup the keylocation if necessary. */ if (stream_encroot) { if (!is_clone && !is_encroot) { err = lzc_change_key(fsname, DCP_CMD_FORCE_NEW_KEY, NULL, NULL, 0); if (err != 0) { zfs_close(zhp); goto error; } } VERIFY(0 == nvlist_lookup_string(props, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), &stream_keylocation)); /* * Refresh the properties in case the call to * lzc_change_key() changed the value. */ zfs_refresh_properties(zhp); err = zfs_prop_get(zhp, ZFS_PROP_KEYLOCATION, keylocation, sizeof (keylocation), NULL, NULL, 0, B_TRUE); if (err != 0) { zfs_close(zhp); goto error; } if (strcmp(keylocation, stream_keylocation) != 0) { err = zfs_prop_set(zhp, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), stream_keylocation); if (err != 0) { zfs_close(zhp); goto error; } } } /* * If the dataset is not flagged as an encryption root and is * currently an encryption root, force it to inherit from its * parent. The root of a raw send should never be * force-inherited. */ if (!stream_encroot && is_encroot && strcmp(top_zfs, fsname) != 0) { err = lzc_change_key(fsname, DCP_CMD_FORCE_INHERIT, NULL, NULL, 0); if (err != 0) { zfs_close(zhp); goto error; } } zfs_close(zhp); } return (0); error: return (err); } static int recv_incremental_replication(libzfs_handle_t *hdl, const char *tofs, recvflags_t *flags, nvlist_t *stream_nv, avl_tree_t *stream_avl, nvlist_t *renamed) { nvlist_t *local_nv, *deleted = NULL; avl_tree_t *local_avl; nvpair_t *fselem, *nextfselem; char *fromsnap; char newname[ZFS_MAX_DATASET_NAME_LEN]; char guidname[32]; int error; boolean_t needagain, progress, recursive; char *s1, *s2; VERIFY(0 == nvlist_lookup_string(stream_nv, "fromsnap", &fromsnap)); recursive = (nvlist_lookup_boolean(stream_nv, "not_recursive") == ENOENT); if (flags->dryrun) return (0); again: needagain = progress = B_FALSE; VERIFY(0 == nvlist_alloc(&deleted, NV_UNIQUE_NAME, 0)); if ((error = gather_nvlist(hdl, tofs, fromsnap, NULL, recursive, B_TRUE, B_FALSE, recursive, B_FALSE, B_FALSE, B_FALSE, B_TRUE, &local_nv, &local_avl)) != 0) return (error); /* * Process deletes and renames */ for (fselem = nvlist_next_nvpair(local_nv, NULL); fselem; fselem = nextfselem) { nvlist_t *nvfs, *snaps; nvlist_t *stream_nvfs = NULL; nvpair_t *snapelem, *nextsnapelem; uint64_t fromguid = 0; uint64_t originguid = 0; uint64_t stream_originguid = 0; uint64_t parent_fromsnap_guid, stream_parent_fromsnap_guid; char *fsname, *stream_fsname; nextfselem = nvlist_next_nvpair(local_nv, fselem); VERIFY(0 == nvpair_value_nvlist(fselem, &nvfs)); VERIFY(0 == nvlist_lookup_nvlist(nvfs, "snaps", &snaps)); VERIFY(0 == nvlist_lookup_string(nvfs, "name", &fsname)); VERIFY(0 == nvlist_lookup_uint64(nvfs, "parentfromsnap", &parent_fromsnap_guid)); (void) nvlist_lookup_uint64(nvfs, "origin", &originguid); /* * First find the stream's fs, so we can check for * a different origin (due to "zfs promote") */ for (snapelem = nvlist_next_nvpair(snaps, NULL); snapelem; snapelem = nvlist_next_nvpair(snaps, snapelem)) { uint64_t thisguid; VERIFY(0 == nvpair_value_uint64(snapelem, &thisguid)); stream_nvfs = fsavl_find(stream_avl, thisguid, NULL); if (stream_nvfs != NULL) break; } /* check for promote */ (void) nvlist_lookup_uint64(stream_nvfs, "origin", &stream_originguid); if (stream_nvfs && originguid != stream_originguid) { switch (created_before(hdl, local_avl, stream_originguid, originguid)) { case 1: { /* promote it! */ nvlist_t *origin_nvfs; char *origin_fsname; origin_nvfs = fsavl_find(local_avl, originguid, NULL); VERIFY(0 == nvlist_lookup_string(origin_nvfs, "name", &origin_fsname)); error = recv_promote(hdl, fsname, origin_fsname, flags); if (error == 0) progress = B_TRUE; break; } default: break; case -1: fsavl_destroy(local_avl); nvlist_free(local_nv); return (-1); } /* * We had/have the wrong origin, therefore our * list of snapshots is wrong. Need to handle * them on the next pass. */ needagain = B_TRUE; continue; } for (snapelem = nvlist_next_nvpair(snaps, NULL); snapelem; snapelem = nextsnapelem) { uint64_t thisguid; char *stream_snapname; nvlist_t *found, *props; nextsnapelem = nvlist_next_nvpair(snaps, snapelem); VERIFY(0 == nvpair_value_uint64(snapelem, &thisguid)); found = fsavl_find(stream_avl, thisguid, &stream_snapname); /* check for delete */ if (found == NULL) { char name[ZFS_MAX_DATASET_NAME_LEN]; if (!flags->force) continue; (void) snprintf(name, sizeof (name), "%s@%s", fsname, nvpair_name(snapelem)); error = recv_destroy(hdl, name, strlen(fsname)+1, newname, flags); if (error) needagain = B_TRUE; else progress = B_TRUE; sprintf(guidname, "%llu", (u_longlong_t)thisguid); nvlist_add_boolean(deleted, guidname); continue; } stream_nvfs = found; if (0 == nvlist_lookup_nvlist(stream_nvfs, "snapprops", &props) && 0 == nvlist_lookup_nvlist(props, stream_snapname, &props)) { zfs_cmd_t zc = {"\0"}; zc.zc_cookie = B_TRUE; /* received */ (void) snprintf(zc.zc_name, sizeof (zc.zc_name), "%s@%s", fsname, nvpair_name(snapelem)); if (zcmd_write_src_nvlist(hdl, &zc, props) == 0) { (void) zfs_ioctl(hdl, ZFS_IOC_SET_PROP, &zc); zcmd_free_nvlists(&zc); } } /* check for different snapname */ if (strcmp(nvpair_name(snapelem), stream_snapname) != 0) { char name[ZFS_MAX_DATASET_NAME_LEN]; char tryname[ZFS_MAX_DATASET_NAME_LEN]; (void) snprintf(name, sizeof (name), "%s@%s", fsname, nvpair_name(snapelem)); (void) snprintf(tryname, sizeof (name), "%s@%s", fsname, stream_snapname); error = recv_rename(hdl, name, tryname, strlen(fsname)+1, newname, flags); if (error) needagain = B_TRUE; else progress = B_TRUE; } if (strcmp(stream_snapname, fromsnap) == 0) fromguid = thisguid; } /* check for delete */ if (stream_nvfs == NULL) { if (!flags->force) continue; error = recv_destroy(hdl, fsname, strlen(tofs)+1, newname, flags); if (error) needagain = B_TRUE; else progress = B_TRUE; sprintf(guidname, "%llu", (u_longlong_t)parent_fromsnap_guid); nvlist_add_boolean(deleted, guidname); continue; } if (fromguid == 0) { if (flags->verbose) { (void) printf("local fs %s does not have " "fromsnap (%s in stream); must have " "been deleted locally; ignoring\n", fsname, fromsnap); } continue; } VERIFY(0 == nvlist_lookup_string(stream_nvfs, "name", &stream_fsname)); VERIFY(0 == nvlist_lookup_uint64(stream_nvfs, "parentfromsnap", &stream_parent_fromsnap_guid)); s1 = strrchr(fsname, '/'); s2 = strrchr(stream_fsname, '/'); /* * Check if we're going to rename based on parent guid change * and the current parent guid was also deleted. If it was then * rename will fail and is likely unneeded, so avoid this and * force an early retry to determine the new * parent_fromsnap_guid. */ if (stream_parent_fromsnap_guid != 0 && parent_fromsnap_guid != 0 && stream_parent_fromsnap_guid != parent_fromsnap_guid) { sprintf(guidname, "%llu", (u_longlong_t)parent_fromsnap_guid); if (nvlist_exists(deleted, guidname)) { progress = B_TRUE; needagain = B_TRUE; goto doagain; } } /* * Check for rename. If the exact receive path is specified, it * does not count as a rename, but we still need to check the * datasets beneath it. */ if ((stream_parent_fromsnap_guid != 0 && parent_fromsnap_guid != 0 && stream_parent_fromsnap_guid != parent_fromsnap_guid) || ((flags->isprefix || strcmp(tofs, fsname) != 0) && (s1 != NULL) && (s2 != NULL) && strcmp(s1, s2) != 0)) { nvlist_t *parent; char tryname[ZFS_MAX_DATASET_NAME_LEN]; parent = fsavl_find(local_avl, stream_parent_fromsnap_guid, NULL); /* * NB: parent might not be found if we used the * tosnap for stream_parent_fromsnap_guid, * because the parent is a newly-created fs; * we'll be able to rename it after we recv the * new fs. */ if (parent != NULL) { char *pname; VERIFY(0 == nvlist_lookup_string(parent, "name", &pname)); (void) snprintf(tryname, sizeof (tryname), "%s%s", pname, strrchr(stream_fsname, '/')); } else { tryname[0] = '\0'; if (flags->verbose) { (void) printf("local fs %s new parent " "not found\n", fsname); } } newname[0] = '\0'; error = recv_rename(hdl, fsname, tryname, strlen(tofs)+1, newname, flags); if (renamed != NULL && newname[0] != '\0') { VERIFY(0 == nvlist_add_boolean(renamed, newname)); } if (error) needagain = B_TRUE; else progress = B_TRUE; } } doagain: fsavl_destroy(local_avl); nvlist_free(local_nv); nvlist_free(deleted); if (needagain && progress) { /* do another pass to fix up temporary names */ if (flags->verbose) (void) printf("another pass:\n"); goto again; } return (needagain || error != 0); } static int zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname, recvflags_t *flags, dmu_replay_record_t *drr, zio_cksum_t *zc, char **top_zfs, int cleanup_fd, uint64_t *action_handlep, nvlist_t *cmdprops) { nvlist_t *stream_nv = NULL; avl_tree_t *stream_avl = NULL; char *fromsnap = NULL; char *sendsnap = NULL; char *cp; char tofs[ZFS_MAX_DATASET_NAME_LEN]; char sendfs[ZFS_MAX_DATASET_NAME_LEN]; char errbuf[1024]; dmu_replay_record_t drre; int error; boolean_t anyerr = B_FALSE; boolean_t softerr = B_FALSE; boolean_t recursive, raw; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot receive")); assert(drr->drr_type == DRR_BEGIN); assert(drr->drr_u.drr_begin.drr_magic == DMU_BACKUP_MAGIC); assert(DMU_GET_STREAM_HDRTYPE(drr->drr_u.drr_begin.drr_versioninfo) == DMU_COMPOUNDSTREAM); /* * Read in the nvlist from the stream. */ if (drr->drr_payloadlen != 0) { error = recv_read_nvlist(hdl, fd, drr->drr_payloadlen, &stream_nv, flags->byteswap, zc); if (error) { error = zfs_error(hdl, EZFS_BADSTREAM, errbuf); goto out; } } recursive = (nvlist_lookup_boolean(stream_nv, "not_recursive") == ENOENT); raw = (nvlist_lookup_boolean(stream_nv, "raw") == 0); if (recursive && strchr(destname, '@')) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot specify snapshot name for multi-snapshot stream")); error = zfs_error(hdl, EZFS_BADSTREAM, errbuf); goto out; } /* * Read in the end record and verify checksum. */ if (0 != (error = recv_read(hdl, fd, &drre, sizeof (drre), flags->byteswap, NULL))) goto out; if (flags->byteswap) { drre.drr_type = BSWAP_32(drre.drr_type); drre.drr_u.drr_end.drr_checksum.zc_word[0] = BSWAP_64(drre.drr_u.drr_end.drr_checksum.zc_word[0]); drre.drr_u.drr_end.drr_checksum.zc_word[1] = BSWAP_64(drre.drr_u.drr_end.drr_checksum.zc_word[1]); drre.drr_u.drr_end.drr_checksum.zc_word[2] = BSWAP_64(drre.drr_u.drr_end.drr_checksum.zc_word[2]); drre.drr_u.drr_end.drr_checksum.zc_word[3] = BSWAP_64(drre.drr_u.drr_end.drr_checksum.zc_word[3]); } if (drre.drr_type != DRR_END) { error = zfs_error(hdl, EZFS_BADSTREAM, errbuf); goto out; } if (!ZIO_CHECKSUM_EQUAL(drre.drr_u.drr_end.drr_checksum, *zc)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "incorrect header checksum")); error = zfs_error(hdl, EZFS_BADSTREAM, errbuf); goto out; } (void) nvlist_lookup_string(stream_nv, "fromsnap", &fromsnap); if (drr->drr_payloadlen != 0) { nvlist_t *stream_fss; VERIFY(0 == nvlist_lookup_nvlist(stream_nv, "fss", &stream_fss)); if ((stream_avl = fsavl_create(stream_fss)) == NULL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "couldn't allocate avl tree")); error = zfs_error(hdl, EZFS_NOMEM, errbuf); goto out; } if (fromsnap != NULL && recursive) { nvlist_t *renamed = NULL; nvpair_t *pair = NULL; (void) strlcpy(tofs, destname, sizeof (tofs)); if (flags->isprefix) { struct drr_begin *drrb = &drr->drr_u.drr_begin; int i; if (flags->istail) { cp = strrchr(drrb->drr_toname, '/'); if (cp == NULL) { (void) strlcat(tofs, "/", sizeof (tofs)); i = 0; } else { i = (cp - drrb->drr_toname); } } else { i = strcspn(drrb->drr_toname, "/@"); } /* zfs_receive_one() will create_parents() */ (void) strlcat(tofs, &drrb->drr_toname[i], sizeof (tofs)); *strchr(tofs, '@') = '\0'; } if (!flags->dryrun && !flags->nomount) { VERIFY(0 == nvlist_alloc(&renamed, NV_UNIQUE_NAME, 0)); } softerr = recv_incremental_replication(hdl, tofs, flags, stream_nv, stream_avl, renamed); /* Unmount renamed filesystems before receiving. */ while ((pair = nvlist_next_nvpair(renamed, pair)) != NULL) { zfs_handle_t *zhp; prop_changelist_t *clp = NULL; zhp = zfs_open(hdl, nvpair_name(pair), ZFS_TYPE_FILESYSTEM); if (zhp != NULL) { clp = changelist_gather(zhp, ZFS_PROP_MOUNTPOINT, 0, 0); zfs_close(zhp); if (clp != NULL) { softerr |= changelist_prefix(clp); changelist_free(clp); } } } nvlist_free(renamed); } } /* * Get the fs specified by the first path in the stream (the top level * specified by 'zfs send') and pass it to each invocation of * zfs_receive_one(). */ (void) strlcpy(sendfs, drr->drr_u.drr_begin.drr_toname, sizeof (sendfs)); if ((cp = strchr(sendfs, '@')) != NULL) { *cp = '\0'; /* * Find the "sendsnap", the final snapshot in a replication * stream. zfs_receive_one() handles certain errors * differently, depending on if the contained stream is the * last one or not. */ sendsnap = (cp + 1); } /* Finally, receive each contained stream */ do { /* * we should figure out if it has a recoverable * error, in which case do a recv_skip() and drive on. * Note, if we fail due to already having this guid, * zfs_receive_one() will take care of it (ie, * recv_skip() and return 0). */ error = zfs_receive_impl(hdl, destname, NULL, flags, fd, sendfs, stream_nv, stream_avl, top_zfs, cleanup_fd, action_handlep, sendsnap, cmdprops); if (error == ENODATA) { error = 0; break; } anyerr |= error; } while (error == 0); if (drr->drr_payloadlen != 0 && recursive && fromsnap != NULL) { /* * Now that we have the fs's they sent us, try the * renames again. */ softerr = recv_incremental_replication(hdl, tofs, flags, stream_nv, stream_avl, NULL); } if (raw && softerr == 0) { softerr = recv_fix_encryption_hierarchy(hdl, destname, stream_nv, stream_avl); } out: fsavl_destroy(stream_avl); nvlist_free(stream_nv); if (softerr) error = -2; if (anyerr) error = -1; return (error); } static void trunc_prop_errs(int truncated) { ASSERT(truncated != 0); if (truncated == 1) (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "1 more property could not be set\n")); else (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "%d more properties could not be set\n"), truncated); } static int recv_skip(libzfs_handle_t *hdl, int fd, boolean_t byteswap) { dmu_replay_record_t *drr; void *buf = zfs_alloc(hdl, SPA_MAXBLOCKSIZE); uint64_t payload_size; char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot receive")); /* XXX would be great to use lseek if possible... */ drr = buf; while (recv_read(hdl, fd, drr, sizeof (dmu_replay_record_t), byteswap, NULL) == 0) { if (byteswap) drr->drr_type = BSWAP_32(drr->drr_type); switch (drr->drr_type) { case DRR_BEGIN: if (drr->drr_payloadlen != 0) { (void) recv_read(hdl, fd, buf, drr->drr_payloadlen, B_FALSE, NULL); } break; case DRR_END: free(buf); return (0); case DRR_OBJECT: if (byteswap) { drr->drr_u.drr_object.drr_bonuslen = BSWAP_32(drr->drr_u.drr_object. drr_bonuslen); drr->drr_u.drr_object.drr_raw_bonuslen = BSWAP_32(drr->drr_u.drr_object. drr_raw_bonuslen); } payload_size = DRR_OBJECT_PAYLOAD_SIZE(&drr->drr_u.drr_object); (void) recv_read(hdl, fd, buf, payload_size, B_FALSE, NULL); break; case DRR_WRITE: if (byteswap) { drr->drr_u.drr_write.drr_logical_size = BSWAP_64( drr->drr_u.drr_write.drr_logical_size); drr->drr_u.drr_write.drr_compressed_size = BSWAP_64( drr->drr_u.drr_write.drr_compressed_size); } payload_size = DRR_WRITE_PAYLOAD_SIZE(&drr->drr_u.drr_write); (void) recv_read(hdl, fd, buf, payload_size, B_FALSE, NULL); break; case DRR_SPILL: if (byteswap) { drr->drr_u.drr_spill.drr_length = BSWAP_64(drr->drr_u.drr_spill.drr_length); drr->drr_u.drr_spill.drr_compressed_size = BSWAP_64(drr->drr_u.drr_spill. drr_compressed_size); } payload_size = DRR_SPILL_PAYLOAD_SIZE(&drr->drr_u.drr_spill); (void) recv_read(hdl, fd, buf, payload_size, B_FALSE, NULL); break; case DRR_WRITE_EMBEDDED: if (byteswap) { drr->drr_u.drr_write_embedded.drr_psize = BSWAP_32(drr->drr_u.drr_write_embedded. drr_psize); } (void) recv_read(hdl, fd, buf, P2ROUNDUP(drr->drr_u.drr_write_embedded.drr_psize, 8), B_FALSE, NULL); break; case DRR_OBJECT_RANGE: case DRR_WRITE_BYREF: case DRR_FREEOBJECTS: case DRR_FREE: break; default: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid record type")); free(buf); return (zfs_error(hdl, EZFS_BADSTREAM, errbuf)); } } free(buf); return (-1); } static void recv_ecksum_set_aux(libzfs_handle_t *hdl, const char *target_snap, boolean_t resumable) { char target_fs[ZFS_MAX_DATASET_NAME_LEN]; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "checksum mismatch or incomplete stream")); if (!resumable) return; (void) strlcpy(target_fs, target_snap, sizeof (target_fs)); *strchr(target_fs, '@') = '\0'; zfs_handle_t *zhp = zfs_open(hdl, target_fs, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME); if (zhp == NULL) return; char token_buf[ZFS_MAXPROPLEN]; int error = zfs_prop_get(zhp, ZFS_PROP_RECEIVE_RESUME_TOKEN, token_buf, sizeof (token_buf), NULL, NULL, 0, B_TRUE); if (error == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "checksum mismatch or incomplete stream.\n" "Partially received snapshot is saved.\n" "A resuming stream can be generated on the sending " "system by running:\n" " zfs send -t %s"), token_buf); } zfs_close(zhp); } /* * Prepare a new nvlist of properties that are to override (-o) or be excluded * (-x) from the received dataset * recvprops: received properties from the send stream * cmdprops: raw input properties from command line * origprops: properties, both locally-set and received, currently set on the * target dataset if it exists, NULL otherwise. * oxprops: valid output override (-o) and excluded (-x) properties */ static int zfs_setup_cmdline_props(libzfs_handle_t *hdl, zfs_type_t type, char *fsname, boolean_t zoned, boolean_t recursive, boolean_t newfs, boolean_t raw, boolean_t toplevel, nvlist_t *recvprops, nvlist_t *cmdprops, nvlist_t *origprops, nvlist_t **oxprops, uint8_t **wkeydata_out, uint_t *wkeylen_out, const char *errbuf) { nvpair_t *nvp; nvlist_t *oprops, *voprops; zfs_handle_t *zhp = NULL; zpool_handle_t *zpool_hdl = NULL; char *cp; int ret = 0; char namebuf[ZFS_MAX_DATASET_NAME_LEN]; if (nvlist_empty(cmdprops)) return (0); /* No properties to override or exclude */ *oxprops = fnvlist_alloc(); oprops = fnvlist_alloc(); strlcpy(namebuf, fsname, ZFS_MAX_DATASET_NAME_LEN); /* * Get our dataset handle. The target dataset may not exist yet. */ if (zfs_dataset_exists(hdl, namebuf, ZFS_TYPE_DATASET)) { zhp = zfs_open(hdl, namebuf, ZFS_TYPE_DATASET); if (zhp == NULL) { ret = -1; goto error; } } /* open the zpool handle */ cp = strchr(namebuf, '/'); if (cp != NULL) *cp = '\0'; zpool_hdl = zpool_open(hdl, namebuf); if (zpool_hdl == NULL) { ret = -1; goto error; } /* restore namebuf to match fsname for later use */ if (cp != NULL) *cp = '/'; /* * first iteration: process excluded (-x) properties now and gather * added (-o) properties to be later processed by zfs_valid_proplist() */ nvp = NULL; while ((nvp = nvlist_next_nvpair(cmdprops, nvp)) != NULL) { const char *name = nvpair_name(nvp); zfs_prop_t prop = zfs_name_to_prop(name); /* "origin" is processed separately, don't handle it here */ if (prop == ZFS_PROP_ORIGIN) continue; /* * we're trying to override or exclude a property that does not * make sense for this type of dataset, but we don't want to * fail if the receive is recursive: this comes in handy when * the send stream contains, for instance, a child ZVOL and * we're trying to receive it with "-o atime=on" */ if (!zfs_prop_valid_for_type(prop, type, B_FALSE) && !zfs_prop_user(name)) { if (recursive) continue; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' does not apply to datasets of this " "type"), name); ret = zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } /* raw streams can't override encryption properties */ if ((zfs_prop_encryption_key_param(prop) || prop == ZFS_PROP_ENCRYPTION) && raw) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "encryption property '%s' cannot " "be set or excluded for raw streams."), name); ret = zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } /* incremental streams can only exclude encryption properties */ if ((zfs_prop_encryption_key_param(prop) || prop == ZFS_PROP_ENCRYPTION) && !newfs && nvpair_type(nvp) != DATA_TYPE_BOOLEAN) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "encryption property '%s' cannot " "be set for incremental streams."), name); ret = zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } switch (nvpair_type(nvp)) { case DATA_TYPE_BOOLEAN: /* -x property */ /* * DATA_TYPE_BOOLEAN is the way we're asked to "exclude" * a property: this is done by forcing an explicit * inherit on the destination so the effective value is * not the one we received from the send stream. * We do this only if the property is not already * locally-set, in which case its value will take * priority over the received anyway. */ if (nvlist_exists(origprops, name)) { nvlist_t *attrs; char *source = NULL; attrs = fnvlist_lookup_nvlist(origprops, name); if (nvlist_lookup_string(attrs, ZPROP_SOURCE, &source) == 0 && strcmp(source, ZPROP_SOURCE_VAL_RECVD) != 0) continue; } /* * We can't force an explicit inherit on non-inheritable * properties: if we're asked to exclude this kind of * values we remove them from "recvprops" input nvlist. */ if (!zfs_prop_inheritable(prop) && !zfs_prop_user(name) && /* can be inherited too */ nvlist_exists(recvprops, name)) fnvlist_remove(recvprops, name); else fnvlist_add_nvpair(*oxprops, nvp); break; case DATA_TYPE_STRING: /* -o property=value */ fnvlist_add_nvpair(oprops, nvp); break; default: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property '%s' must be a string or boolean"), name); ret = zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } } if (toplevel) { /* convert override strings properties to native */ if ((voprops = zfs_valid_proplist(hdl, ZFS_TYPE_DATASET, oprops, zoned, zhp, zpool_hdl, B_FALSE, errbuf)) == NULL) { ret = zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } /* * zfs_crypto_create() requires the parent name. Get it * by truncating the fsname copy stored in namebuf. */ cp = strrchr(namebuf, '/'); if (cp != NULL) *cp = '\0'; if (!raw && zfs_crypto_create(hdl, namebuf, voprops, NULL, B_FALSE, wkeydata_out, wkeylen_out) != 0) { fnvlist_free(voprops); ret = zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf); goto error; } /* second pass: process "-o" properties */ fnvlist_merge(*oxprops, voprops); fnvlist_free(voprops); } else { /* override props on child dataset are inherited */ nvp = NULL; while ((nvp = nvlist_next_nvpair(oprops, nvp)) != NULL) { const char *name = nvpair_name(nvp); fnvlist_add_boolean(*oxprops, name); } } error: if (zhp != NULL) zfs_close(zhp); if (zpool_hdl != NULL) zpool_close(zpool_hdl); fnvlist_free(oprops); return (ret); } /* * Restores a backup of tosnap from the file descriptor specified by infd. */ static int zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, const char *originsnap, recvflags_t *flags, dmu_replay_record_t *drr, dmu_replay_record_t *drr_noswap, const char *sendfs, nvlist_t *stream_nv, avl_tree_t *stream_avl, char **top_zfs, int cleanup_fd, uint64_t *action_handlep, const char *finalsnap, nvlist_t *cmdprops) { time_t begin_time; int ioctl_err, ioctl_errno, err; char *cp; struct drr_begin *drrb = &drr->drr_u.drr_begin; char errbuf[1024]; const char *chopprefix; boolean_t newfs = B_FALSE; boolean_t stream_wantsnewfs; boolean_t newprops = B_FALSE; uint64_t read_bytes = 0; uint64_t errflags = 0; uint64_t parent_snapguid = 0; prop_changelist_t *clp = NULL; nvlist_t *snapprops_nvlist = NULL; nvlist_t *snapholds_nvlist = NULL; zprop_errflags_t prop_errflags; nvlist_t *prop_errors = NULL; boolean_t recursive; char *snapname = NULL; char destsnap[MAXPATHLEN * 2]; char origin[MAXNAMELEN]; char name[MAXPATHLEN]; char tmp_keylocation[MAXNAMELEN]; nvlist_t *rcvprops = NULL; /* props received from the send stream */ nvlist_t *oxprops = NULL; /* override (-o) and exclude (-x) props */ nvlist_t *origprops = NULL; /* original props (if destination exists) */ zfs_type_t type; boolean_t toplevel = B_FALSE; boolean_t zoned = B_FALSE; boolean_t hastoken = B_FALSE; uint8_t *wkeydata = NULL; uint_t wkeylen = 0; begin_time = time(NULL); bzero(origin, MAXNAMELEN); bzero(tmp_keylocation, MAXNAMELEN); (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot receive")); recursive = (nvlist_lookup_boolean(stream_nv, "not_recursive") == ENOENT); /* Did the user request holds be skipped via zfs recv -k? */ boolean_t holds = flags->holds && !flags->skipholds; if (stream_avl != NULL) { char *keylocation = NULL; nvlist_t *lookup = NULL; nvlist_t *fs = fsavl_find(stream_avl, drrb->drr_toguid, &snapname); (void) nvlist_lookup_uint64(fs, "parentfromsnap", &parent_snapguid); err = nvlist_lookup_nvlist(fs, "props", &rcvprops); if (err) { VERIFY(0 == nvlist_alloc(&rcvprops, NV_UNIQUE_NAME, 0)); newprops = B_TRUE; } /* * The keylocation property may only be set on encryption roots, * but this dataset might not become an encryption root until * recv_fix_encryption_hierarchy() is called. That function * will fixup the keylocation anyway, so we temporarily unset * the keylocation for now to avoid any errors from the receive * ioctl. */ err = nvlist_lookup_string(rcvprops, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), &keylocation); if (err == 0) { strcpy(tmp_keylocation, keylocation); (void) nvlist_remove_all(rcvprops, zfs_prop_to_name(ZFS_PROP_KEYLOCATION)); } if (flags->canmountoff) { VERIFY(0 == nvlist_add_uint64(rcvprops, zfs_prop_to_name(ZFS_PROP_CANMOUNT), 0)); } else if (newprops) { /* nothing in rcvprops, eliminate it */ nvlist_free(rcvprops); rcvprops = NULL; newprops = B_FALSE; } if (0 == nvlist_lookup_nvlist(fs, "snapprops", &lookup)) { VERIFY(0 == nvlist_lookup_nvlist(lookup, snapname, &snapprops_nvlist)); } if (holds) { if (0 == nvlist_lookup_nvlist(fs, "snapholds", &lookup)) { VERIFY(0 == nvlist_lookup_nvlist(lookup, snapname, &snapholds_nvlist)); } } } cp = NULL; /* * Determine how much of the snapshot name stored in the stream * we are going to tack on to the name they specified on the * command line, and how much we are going to chop off. * * If they specified a snapshot, chop the entire name stored in * the stream. */ if (flags->istail) { /* * A filesystem was specified with -e. We want to tack on only * the tail of the sent snapshot path. */ if (strchr(tosnap, '@')) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid " "argument - snapshot not allowed with -e")); err = zfs_error(hdl, EZFS_INVALIDNAME, errbuf); goto out; } chopprefix = strrchr(sendfs, '/'); if (chopprefix == NULL) { /* * The tail is the poolname, so we need to * prepend a path separator. */ int len = strlen(drrb->drr_toname); cp = malloc(len + 2); cp[0] = '/'; (void) strcpy(&cp[1], drrb->drr_toname); chopprefix = cp; } else { chopprefix = drrb->drr_toname + (chopprefix - sendfs); } } else if (flags->isprefix) { /* * A filesystem was specified with -d. We want to tack on * everything but the first element of the sent snapshot path * (all but the pool name). */ if (strchr(tosnap, '@')) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid " "argument - snapshot not allowed with -d")); err = zfs_error(hdl, EZFS_INVALIDNAME, errbuf); goto out; } chopprefix = strchr(drrb->drr_toname, '/'); if (chopprefix == NULL) chopprefix = strchr(drrb->drr_toname, '@'); } else if (strchr(tosnap, '@') == NULL) { /* * If a filesystem was specified without -d or -e, we want to * tack on everything after the fs specified by 'zfs send'. */ chopprefix = drrb->drr_toname + strlen(sendfs); } else { /* A snapshot was specified as an exact path (no -d or -e). */ if (recursive) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot specify snapshot name for multi-snapshot " "stream")); err = zfs_error(hdl, EZFS_BADSTREAM, errbuf); goto out; } chopprefix = drrb->drr_toname + strlen(drrb->drr_toname); } ASSERT(strstr(drrb->drr_toname, sendfs) == drrb->drr_toname); ASSERT(chopprefix > drrb->drr_toname || strchr(sendfs, '/') == NULL); ASSERT(chopprefix <= drrb->drr_toname + strlen(drrb->drr_toname) || strchr(sendfs, '/') == NULL); ASSERT(chopprefix[0] == '/' || chopprefix[0] == '@' || chopprefix[0] == '\0'); /* * Determine name of destination snapshot. */ (void) strlcpy(destsnap, tosnap, sizeof (destsnap)); (void) strlcat(destsnap, chopprefix, sizeof (destsnap)); free(cp); if (!zfs_name_valid(destsnap, ZFS_TYPE_SNAPSHOT)) { err = zfs_error(hdl, EZFS_INVALIDNAME, errbuf); goto out; } /* * Determine the name of the origin snapshot. */ if (originsnap) { (void) strlcpy(origin, originsnap, sizeof (origin)); if (flags->verbose) (void) printf("using provided clone origin %s\n", origin); } else if (drrb->drr_flags & DRR_FLAG_CLONE) { if (guid_to_name(hdl, destsnap, drrb->drr_fromguid, B_FALSE, origin) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "local origin for clone %s does not exist"), destsnap); err = zfs_error(hdl, EZFS_NOENT, errbuf); goto out; } if (flags->verbose) (void) printf("found clone origin %s\n", origin); } boolean_t resuming = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & DMU_BACKUP_FEATURE_RESUMING; boolean_t raw = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & DMU_BACKUP_FEATURE_RAW; boolean_t embedded = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & DMU_BACKUP_FEATURE_EMBED_DATA; stream_wantsnewfs = (drrb->drr_fromguid == 0 || (drrb->drr_flags & DRR_FLAG_CLONE) || originsnap) && !resuming; if (stream_wantsnewfs) { /* * if the parent fs does not exist, look for it based on * the parent snap GUID */ (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot receive new filesystem stream")); (void) strcpy(name, destsnap); cp = strrchr(name, '/'); if (cp) *cp = '\0'; if (cp && !zfs_dataset_exists(hdl, name, ZFS_TYPE_DATASET)) { char suffix[ZFS_MAX_DATASET_NAME_LEN]; (void) strcpy(suffix, strrchr(destsnap, '/')); if (guid_to_name(hdl, name, parent_snapguid, B_FALSE, destsnap) == 0) { *strchr(destsnap, '@') = '\0'; (void) strcat(destsnap, suffix); } } } else { /* * If the fs does not exist, look for it based on the * fromsnap GUID. */ if (resuming) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot receive resume stream")); } else { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot receive incremental stream")); } (void) strcpy(name, destsnap); *strchr(name, '@') = '\0'; /* * If the exact receive path was specified and this is the * topmost path in the stream, then if the fs does not exist we * should look no further. */ if ((flags->isprefix || (*(chopprefix = drrb->drr_toname + strlen(sendfs)) != '\0' && *chopprefix != '@')) && !zfs_dataset_exists(hdl, name, ZFS_TYPE_DATASET)) { char snap[ZFS_MAX_DATASET_NAME_LEN]; (void) strcpy(snap, strchr(destsnap, '@')); if (guid_to_name(hdl, name, drrb->drr_fromguid, B_FALSE, destsnap) == 0) { *strchr(destsnap, '@') = '\0'; (void) strcat(destsnap, snap); } } } (void) strcpy(name, destsnap); *strchr(name, '@') = '\0'; if (zfs_dataset_exists(hdl, name, ZFS_TYPE_DATASET)) { zfs_cmd_t zc = {"\0"}; zfs_handle_t *zhp; boolean_t encrypted; (void) strcpy(zc.zc_name, name); /* * Destination fs exists. It must be one of these cases: * - an incremental send stream * - the stream specifies a new fs (full stream or clone) * and they want us to blow away the existing fs (and * have therefore specified -F and removed any snapshots) * - we are resuming a failed receive. */ if (stream_wantsnewfs) { boolean_t is_volume = drrb->drr_type == DMU_OST_ZVOL; if (!flags->force) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination '%s' exists\n" "must specify -F to overwrite it"), name); err = zfs_error(hdl, EZFS_EXISTS, errbuf); goto out; } if (ioctl(hdl->libzfs_fd, ZFS_IOC_SNAPSHOT_LIST_NEXT, &zc) == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination has snapshots (eg. %s)\n" "must destroy them to overwrite it"), zc.zc_name); err = zfs_error(hdl, EZFS_EXISTS, errbuf); goto out; } if (is_volume && strrchr(name, '/') == NULL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination %s is the root dataset\n" "cannot overwrite with a ZVOL"), name); err = zfs_error(hdl, EZFS_EXISTS, errbuf); goto out; } if (is_volume && ioctl(hdl->libzfs_fd, ZFS_IOC_DATASET_LIST_NEXT, &zc) == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination has children (eg. %s)\n" "cannot overwrite with a ZVOL"), zc.zc_name); err = zfs_error(hdl, EZFS_WRONG_PARENT, errbuf); goto out; } } if ((zhp = zfs_open(hdl, name, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME)) == NULL) { err = -1; goto out; } if (stream_wantsnewfs && zhp->zfs_dmustats.dds_origin[0]) { zfs_close(zhp); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination '%s' is a clone\n" "must destroy it to overwrite it"), name); err = zfs_error(hdl, EZFS_EXISTS, errbuf); goto out; } /* * Raw sends can not be performed as an incremental on top * of existing unencrypted datasets. zfs recv -F can't be * used to blow away an existing encrypted filesystem. This * is because it would require the dsl dir to point to the * new key (or lack of a key) and the old key at the same * time. The -F flag may still be used for deleting * intermediate snapshots that would otherwise prevent the * receive from working. */ encrypted = zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION) != ZIO_CRYPT_OFF; if (!stream_wantsnewfs && !encrypted && raw) { zfs_close(zhp); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot perform raw receive on top of " "existing unencrypted dataset")); err = zfs_error(hdl, EZFS_BADRESTORE, errbuf); goto out; } if (stream_wantsnewfs && flags->force && ((raw && !encrypted) || encrypted)) { zfs_close(zhp); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "zfs receive -F cannot be used to destroy an " "encrypted filesystem or overwrite an " "unencrypted one with an encrypted one")); err = zfs_error(hdl, EZFS_BADRESTORE, errbuf); goto out; } if (!flags->dryrun && zhp->zfs_type == ZFS_TYPE_FILESYSTEM && stream_wantsnewfs) { /* We can't do online recv in this case */ clp = changelist_gather(zhp, ZFS_PROP_NAME, 0, 0); if (clp == NULL) { zfs_close(zhp); err = -1; goto out; } if (changelist_prefix(clp) != 0) { changelist_free(clp); zfs_close(zhp); err = -1; goto out; } } /* * If we are resuming a newfs, set newfs here so that we will * mount it if the recv succeeds this time. We can tell * that it was a newfs on the first recv because the fs * itself will be inconsistent (if the fs existed when we * did the first recv, we would have received it into * .../%recv). */ if (resuming && zfs_prop_get_int(zhp, ZFS_PROP_INCONSISTENT)) newfs = B_TRUE; /* we want to know if we're zoned when validating -o|-x props */ zoned = zfs_prop_get_int(zhp, ZFS_PROP_ZONED); /* may need this info later, get it now we have zhp around */ if (zfs_prop_get(zhp, ZFS_PROP_RECEIVE_RESUME_TOKEN, NULL, 0, NULL, NULL, 0, B_TRUE) == 0) hastoken = B_TRUE; /* gather existing properties on destination */ origprops = fnvlist_alloc(); fnvlist_merge(origprops, zhp->zfs_props); fnvlist_merge(origprops, zhp->zfs_user_props); zfs_close(zhp); } else { zfs_handle_t *zhp; /* * Destination filesystem does not exist. Therefore we better * be creating a new filesystem (either from a full backup, or * a clone). It would therefore be invalid if the user * specified only the pool name (i.e. if the destination name * contained no slash character). */ cp = strrchr(name, '/'); if (!stream_wantsnewfs || cp == NULL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination '%s' does not exist"), name); err = zfs_error(hdl, EZFS_NOENT, errbuf); goto out; } /* * Trim off the final dataset component so we perform the * recvbackup ioctl to the filesystems's parent. */ *cp = '\0'; if (flags->isprefix && !flags->istail && !flags->dryrun && create_parents(hdl, destsnap, strlen(tosnap)) != 0) { err = zfs_error(hdl, EZFS_BADRESTORE, errbuf); goto out; } /* validate parent */ zhp = zfs_open(hdl, name, ZFS_TYPE_DATASET); if (zhp == NULL) { err = zfs_error(hdl, EZFS_BADRESTORE, errbuf); goto out; } if (zfs_get_type(zhp) != ZFS_TYPE_FILESYSTEM) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "parent '%s' is not a filesystem"), name); err = zfs_error(hdl, EZFS_WRONG_PARENT, errbuf); zfs_close(zhp); goto out; } zfs_close(zhp); newfs = B_TRUE; *cp = '/'; } if (flags->verbose) { (void) printf("%s %s stream of %s into %s\n", flags->dryrun ? "would receive" : "receiving", drrb->drr_fromguid ? "incremental" : "full", drrb->drr_toname, destsnap); (void) fflush(stdout); } if (flags->dryrun) { void *buf = zfs_alloc(hdl, SPA_MAXBLOCKSIZE); /* * We have read the DRR_BEGIN record, but we have * not yet read the payload. For non-dryrun sends * this will be done by the kernel, so we must * emulate that here, before attempting to read * more records. */ err = recv_read(hdl, infd, buf, drr->drr_payloadlen, flags->byteswap, NULL); free(buf); if (err != 0) goto out; err = recv_skip(hdl, infd, flags->byteswap); goto out; } if (top_zfs && (*top_zfs == NULL || strcmp(*top_zfs, name) == 0)) toplevel = B_TRUE; if (drrb->drr_type == DMU_OST_ZVOL) { type = ZFS_TYPE_VOLUME; } else if (drrb->drr_type == DMU_OST_ZFS) { type = ZFS_TYPE_FILESYSTEM; } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid record type: 0x%d"), drrb->drr_type); err = zfs_error(hdl, EZFS_BADSTREAM, errbuf); goto out; } if ((err = zfs_setup_cmdline_props(hdl, type, name, zoned, recursive, stream_wantsnewfs, raw, toplevel, rcvprops, cmdprops, origprops, &oxprops, &wkeydata, &wkeylen, errbuf)) != 0) goto out; /* * When sending with properties (zfs send -p), the encryption property * is not included because it is a SETONCE property and therefore * treated as read only. However, we are always able to determine its * value because raw sends will include it in the DRR_BDEGIN payload * and non-raw sends with properties are not allowed for encrypted * datasets. Therefore, if this is a non-raw properties stream, we can * infer that the value should be ZIO_CRYPT_OFF and manually add that * to the received properties. */ if (stream_wantsnewfs && !raw && rcvprops != NULL && !nvlist_exists(cmdprops, zfs_prop_to_name(ZFS_PROP_ENCRYPTION))) { if (oxprops == NULL) oxprops = fnvlist_alloc(); fnvlist_add_uint64(oxprops, zfs_prop_to_name(ZFS_PROP_ENCRYPTION), ZIO_CRYPT_OFF); } err = ioctl_err = lzc_receive_with_cmdprops(destsnap, rcvprops, oxprops, wkeydata, wkeylen, origin, flags->force, flags->resumable, raw, infd, drr_noswap, cleanup_fd, &read_bytes, &errflags, action_handlep, &prop_errors); ioctl_errno = ioctl_err; prop_errflags = errflags; if (err == 0) { nvpair_t *prop_err = NULL; while ((prop_err = nvlist_next_nvpair(prop_errors, prop_err)) != NULL) { char tbuf[1024]; zfs_prop_t prop; int intval; prop = zfs_name_to_prop(nvpair_name(prop_err)); (void) nvpair_value_int32(prop_err, &intval); if (strcmp(nvpair_name(prop_err), ZPROP_N_MORE_ERRORS) == 0) { trunc_prop_errs(intval); break; } else if (snapname == NULL || finalsnap == NULL || strcmp(finalsnap, snapname) == 0 || strcmp(nvpair_name(prop_err), zfs_prop_to_name(ZFS_PROP_REFQUOTA)) != 0) { /* * Skip the special case of, for example, * "refquota", errors on intermediate * snapshots leading up to a final one. * That's why we have all of the checks above. * * See zfs_ioctl.c's extract_delay_props() for * a list of props which can fail on * intermediate snapshots, but shouldn't * affect the overall receive. */ (void) snprintf(tbuf, sizeof (tbuf), dgettext(TEXT_DOMAIN, "cannot receive %s property on %s"), nvpair_name(prop_err), name); zfs_setprop_error(hdl, prop, intval, tbuf); } } } if (err == 0 && snapprops_nvlist) { zfs_cmd_t zc = {"\0"}; (void) strcpy(zc.zc_name, destsnap); zc.zc_cookie = B_TRUE; /* received */ if (zcmd_write_src_nvlist(hdl, &zc, snapprops_nvlist) == 0) { (void) zfs_ioctl(hdl, ZFS_IOC_SET_PROP, &zc); zcmd_free_nvlists(&zc); } } if (err == 0 && snapholds_nvlist) { nvpair_t *pair; nvlist_t *holds, *errors = NULL; int cleanup_fd = -1; VERIFY(0 == nvlist_alloc(&holds, 0, KM_SLEEP)); for (pair = nvlist_next_nvpair(snapholds_nvlist, NULL); pair != NULL; pair = nvlist_next_nvpair(snapholds_nvlist, pair)) { VERIFY(0 == nvlist_add_string(holds, destsnap, nvpair_name(pair))); } (void) lzc_hold(holds, cleanup_fd, &errors); nvlist_free(snapholds_nvlist); nvlist_free(holds); } if (err && (ioctl_errno == ENOENT || ioctl_errno == EEXIST)) { /* * It may be that this snapshot already exists, * in which case we want to consume & ignore it * rather than failing. */ avl_tree_t *local_avl; nvlist_t *local_nv, *fs; cp = strchr(destsnap, '@'); /* * XXX Do this faster by just iterating over snaps in * this fs. Also if zc_value does not exist, we will * get a strange "does not exist" error message. */ *cp = '\0'; if (gather_nvlist(hdl, destsnap, NULL, NULL, B_FALSE, B_TRUE, B_FALSE, B_FALSE, B_FALSE, B_FALSE, B_FALSE, B_TRUE, &local_nv, &local_avl) == 0) { *cp = '@'; fs = fsavl_find(local_avl, drrb->drr_toguid, NULL); fsavl_destroy(local_avl); nvlist_free(local_nv); if (fs != NULL) { if (flags->verbose) { (void) printf("snap %s already exists; " "ignoring\n", destsnap); } err = ioctl_err = recv_skip(hdl, infd, flags->byteswap); } } *cp = '@'; } if (ioctl_err != 0) { switch (ioctl_errno) { case ENODEV: cp = strchr(destsnap, '@'); *cp = '\0'; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "most recent snapshot of %s does not\n" "match incremental source"), destsnap); (void) zfs_error(hdl, EZFS_BADRESTORE, errbuf); *cp = '@'; break; case ETXTBSY: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination %s has been modified\n" "since most recent snapshot"), name); (void) zfs_error(hdl, EZFS_BADRESTORE, errbuf); break; case EACCES: if (raw && stream_wantsnewfs) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "failed to create encryption key")); } else if (raw && !stream_wantsnewfs) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "encryption key does not match " "existing key")); } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "inherited key must be loaded")); } (void) zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf); break; case EEXIST: cp = strchr(destsnap, '@'); if (newfs) { /* it's the containing fs that exists */ *cp = '\0'; } zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination already exists")); (void) zfs_error_fmt(hdl, EZFS_EXISTS, dgettext(TEXT_DOMAIN, "cannot restore to %s"), destsnap); *cp = '@'; break; case EINVAL: if (flags->resumable) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "kernel modules must be upgraded to " "receive this stream.")); } else if (embedded && !raw) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "incompatible embedded data stream " "feature with encrypted receive.")); } (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; case ECKSUM: recv_ecksum_set_aux(hdl, destsnap, flags->resumable); (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded to receive this stream.")); (void) zfs_error(hdl, EZFS_BADVERSION, errbuf); break; case EDQUOT: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination %s space quota exceeded."), name); (void) zfs_error(hdl, EZFS_NOSPC, errbuf); break; case ZFS_ERR_FROM_IVSET_GUID_MISSING: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "IV set guid missing. See errata %u at " "http://zfsonlinux.org/msg/ZFS-8000-ER."), ZPOOL_ERRATA_ZOL_8308_ENCRYPTION); (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; case ZFS_ERR_FROM_IVSET_GUID_MISMATCH: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "IV set guid mismatch. See the 'zfs receive' " "man page section\n discussing the limitations " "of raw encrypted send streams.")); (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; case ZFS_ERR_SPILL_BLOCK_FLAG_MISSING: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Spill block flag missing for raw send.\n" "The zfs software on the sending system must " "be updated.")); (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); break; case EBUSY: if (hastoken) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "destination %s contains " "partially-complete state from " "\"zfs receive -s\"."), name); (void) zfs_error(hdl, EZFS_BUSY, errbuf); break; } /* fallthru */ default: (void) zfs_standard_error(hdl, ioctl_errno, errbuf); } } /* * Mount the target filesystem (if created). Also mount any * children of the target filesystem if we did a replication * receive (indicated by stream_avl being non-NULL). */ cp = strchr(destsnap, '@'); if (cp && (ioctl_err == 0 || !newfs)) { zfs_handle_t *h; *cp = '\0'; h = zfs_open(hdl, destsnap, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME); if (h != NULL) { if (h->zfs_type == ZFS_TYPE_VOLUME) { *cp = '@'; } else if (newfs || stream_avl) { /* * Track the first/top of hierarchy fs, * for mounting and sharing later. */ if (top_zfs && *top_zfs == NULL) *top_zfs = zfs_strdup(hdl, destsnap); } zfs_close(h); } *cp = '@'; } if (clp) { if (!flags->nomount) err |= changelist_postfix(clp); changelist_free(clp); } if (prop_errflags & ZPROP_ERR_NOCLEAR) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "Warning: " "failed to clear unreceived properties on %s"), name); (void) fprintf(stderr, "\n"); } if (prop_errflags & ZPROP_ERR_NORESTORE) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "Warning: " "failed to restore original properties on %s"), name); (void) fprintf(stderr, "\n"); } if (err || ioctl_err) { err = -1; goto out; } if (flags->verbose) { char buf1[64]; char buf2[64]; uint64_t bytes = read_bytes; time_t delta = time(NULL) - begin_time; if (delta == 0) delta = 1; zfs_nicebytes(bytes, buf1, sizeof (buf1)); zfs_nicebytes(bytes/delta, buf2, sizeof (buf1)); (void) printf("received %s stream in %lu seconds (%s/sec)\n", buf1, delta, buf2); } err = 0; out: if (prop_errors != NULL) nvlist_free(prop_errors); if (tmp_keylocation[0] != '\0') { VERIFY(0 == nvlist_add_string(rcvprops, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), tmp_keylocation)); } if (newprops) nvlist_free(rcvprops); nvlist_free(oxprops); nvlist_free(origprops); return (err); } /* * Check properties we were asked to override (both -o|-x) */ static boolean_t zfs_receive_checkprops(libzfs_handle_t *hdl, nvlist_t *props, const char *errbuf) { nvpair_t *nvp; zfs_prop_t prop; const char *name; nvp = NULL; while ((nvp = nvlist_next_nvpair(props, nvp)) != NULL) { name = nvpair_name(nvp); prop = zfs_name_to_prop(name); if (prop == ZPROP_INVAL) { if (!zfs_prop_user(name)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid property '%s'"), name); return (B_FALSE); } continue; } /* * "origin" is readonly but is used to receive datasets as * clones so we don't raise an error here */ if (prop == ZFS_PROP_ORIGIN) continue; /* encryption params have their own verification later */ if (prop == ZFS_PROP_ENCRYPTION || zfs_prop_encryption_key_param(prop)) continue; /* * cannot override readonly, set-once and other specific * settable properties */ if (zfs_prop_readonly(prop) || prop == ZFS_PROP_VERSION || prop == ZFS_PROP_VOLSIZE) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid property '%s'"), name); return (B_FALSE); } } return (B_TRUE); } static int zfs_receive_impl(libzfs_handle_t *hdl, const char *tosnap, const char *originsnap, recvflags_t *flags, int infd, const char *sendfs, nvlist_t *stream_nv, avl_tree_t *stream_avl, char **top_zfs, int cleanup_fd, uint64_t *action_handlep, const char *finalsnap, nvlist_t *cmdprops) { int err; dmu_replay_record_t drr, drr_noswap; struct drr_begin *drrb = &drr.drr_u.drr_begin; char errbuf[1024]; zio_cksum_t zcksum = { { 0 } }; uint64_t featureflags; int hdrtype; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot receive")); /* check cmdline props, raise an error if they cannot be received */ if (!zfs_receive_checkprops(hdl, cmdprops, errbuf)) { return (zfs_error(hdl, EZFS_BADPROP, errbuf)); } if (flags->isprefix && !zfs_dataset_exists(hdl, tosnap, ZFS_TYPE_DATASET)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "specified fs " "(%s) does not exist"), tosnap); return (zfs_error(hdl, EZFS_NOENT, errbuf)); } if (originsnap && !zfs_dataset_exists(hdl, originsnap, ZFS_TYPE_DATASET)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "specified origin fs " "(%s) does not exist"), originsnap); return (zfs_error(hdl, EZFS_NOENT, errbuf)); } /* read in the BEGIN record */ if (0 != (err = recv_read(hdl, infd, &drr, sizeof (drr), B_FALSE, &zcksum))) return (err); if (drr.drr_type == DRR_END || drr.drr_type == BSWAP_32(DRR_END)) { /* It's the double end record at the end of a package */ return (ENODATA); } /* the kernel needs the non-byteswapped begin record */ drr_noswap = drr; flags->byteswap = B_FALSE; if (drrb->drr_magic == BSWAP_64(DMU_BACKUP_MAGIC)) { /* * We computed the checksum in the wrong byteorder in * recv_read() above; do it again correctly. */ bzero(&zcksum, sizeof (zio_cksum_t)); fletcher_4_incremental_byteswap(&drr, sizeof (drr), &zcksum); flags->byteswap = B_TRUE; drr.drr_type = BSWAP_32(drr.drr_type); drr.drr_payloadlen = BSWAP_32(drr.drr_payloadlen); drrb->drr_magic = BSWAP_64(drrb->drr_magic); drrb->drr_versioninfo = BSWAP_64(drrb->drr_versioninfo); drrb->drr_creation_time = BSWAP_64(drrb->drr_creation_time); drrb->drr_type = BSWAP_32(drrb->drr_type); drrb->drr_flags = BSWAP_32(drrb->drr_flags); drrb->drr_toguid = BSWAP_64(drrb->drr_toguid); drrb->drr_fromguid = BSWAP_64(drrb->drr_fromguid); } if (drrb->drr_magic != DMU_BACKUP_MAGIC || drr.drr_type != DRR_BEGIN) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid " "stream (bad magic number)")); return (zfs_error(hdl, EZFS_BADSTREAM, errbuf)); } featureflags = DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo); hdrtype = DMU_GET_STREAM_HDRTYPE(drrb->drr_versioninfo); if (!DMU_STREAM_SUPPORTED(featureflags) || (hdrtype != DMU_SUBSTREAM && hdrtype != DMU_COMPOUNDSTREAM)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "stream has unsupported feature, feature flags = %lx"), featureflags); return (zfs_error(hdl, EZFS_BADSTREAM, errbuf)); } /* Holds feature is set once in the compound stream header. */ boolean_t holds = (DMU_GET_FEATUREFLAGS(drrb->drr_versioninfo) & DMU_BACKUP_FEATURE_HOLDS); if (holds) flags->holds = B_TRUE; if (strchr(drrb->drr_toname, '@') == NULL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid " "stream (bad snapshot name)")); return (zfs_error(hdl, EZFS_BADSTREAM, errbuf)); } if (DMU_GET_STREAM_HDRTYPE(drrb->drr_versioninfo) == DMU_SUBSTREAM) { char nonpackage_sendfs[ZFS_MAX_DATASET_NAME_LEN]; if (sendfs == NULL) { /* * We were not called from zfs_receive_package(). Get * the fs specified by 'zfs send'. */ char *cp; (void) strlcpy(nonpackage_sendfs, drr.drr_u.drr_begin.drr_toname, sizeof (nonpackage_sendfs)); if ((cp = strchr(nonpackage_sendfs, '@')) != NULL) *cp = '\0'; sendfs = nonpackage_sendfs; VERIFY(finalsnap == NULL); } return (zfs_receive_one(hdl, infd, tosnap, originsnap, flags, &drr, &drr_noswap, sendfs, stream_nv, stream_avl, top_zfs, cleanup_fd, action_handlep, finalsnap, cmdprops)); } else { assert(DMU_GET_STREAM_HDRTYPE(drrb->drr_versioninfo) == DMU_COMPOUNDSTREAM); return (zfs_receive_package(hdl, infd, tosnap, flags, &drr, &zcksum, top_zfs, cleanup_fd, action_handlep, cmdprops)); } } /* * Restores a backup of tosnap from the file descriptor specified by infd. * Return 0 on total success, -2 if some things couldn't be * destroyed/renamed/promoted, -1 if some things couldn't be received. * (-1 will override -2, if -1 and the resumable flag was specified the * transfer can be resumed if the sending side supports it). */ int zfs_receive(libzfs_handle_t *hdl, const char *tosnap, nvlist_t *props, recvflags_t *flags, int infd, avl_tree_t *stream_avl) { char *top_zfs = NULL; int err; int cleanup_fd; uint64_t action_handle = 0; struct stat sb; char *originsnap = NULL; /* * The only way fstat can fail is if we do not have a valid file * descriptor. */ if (fstat(infd, &sb) == -1) { perror("fstat"); return (-2); } #ifdef __linux__ #ifndef F_SETPIPE_SZ #define F_SETPIPE_SZ (F_SETLEASE + 7) #endif /* F_SETPIPE_SZ */ #ifndef F_GETPIPE_SZ #define F_GETPIPE_SZ (F_GETLEASE + 7) #endif /* F_GETPIPE_SZ */ /* * It is not uncommon for gigabytes to be processed in zfs receive. * Speculatively increase the buffer size via Linux-specific fcntl() * call. */ if (S_ISFIFO(sb.st_mode)) { FILE *procf = fopen("/proc/sys/fs/pipe-max-size", "r"); if (procf != NULL) { unsigned long max_psize; long cur_psize; if (fscanf(procf, "%lu", &max_psize) > 0) { cur_psize = fcntl(infd, F_GETPIPE_SZ); if (cur_psize > 0 && max_psize > (unsigned long) cur_psize) (void) fcntl(infd, F_SETPIPE_SZ, max_psize); } fclose(procf); } } #endif /* __linux__ */ if (props) { err = nvlist_lookup_string(props, "origin", &originsnap); if (err && err != ENOENT) return (err); } cleanup_fd = open(ZFS_DEV, O_RDWR); VERIFY(cleanup_fd >= 0); err = zfs_receive_impl(hdl, tosnap, originsnap, flags, infd, NULL, NULL, stream_avl, &top_zfs, cleanup_fd, &action_handle, NULL, props); VERIFY(0 == close(cleanup_fd)); if (err == 0 && !flags->nomount && top_zfs) { zfs_handle_t *zhp = NULL; prop_changelist_t *clp = NULL; zhp = zfs_open(hdl, top_zfs, ZFS_TYPE_FILESYSTEM); if (zhp != NULL) { clp = changelist_gather(zhp, ZFS_PROP_MOUNTPOINT, CL_GATHER_MOUNT_ALWAYS, 0); zfs_close(zhp); if (clp != NULL) { /* mount and share received datasets */ err = changelist_postfix(clp); changelist_free(clp); } } if (zhp == NULL || clp == NULL || err) err = -1; } if (top_zfs) free(top_zfs); return (err); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/THIRDPARTYLICENSE.openssl.descrip0000644000000000000000000000007313607166132023210 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730472.94753727 zfs-0.8.3/lib/libzfs/THIRDPARTYLICENSE.openssl.descrip0000644016037001603700000000002613607166132023204 0ustar00hutter2hutter200000000000000PBKDF2 IMPLEMENTATION zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_dataset.c0000644000000000000000000000007413612141521020610 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.925536564 zfs-0.8.3/lib/libzfs/libzfs_dataset.c0000644016037001603700000042510013612141521020607 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2019 Joyent, Inc. * Copyright (c) 2011, 2017 by Delphix. All rights reserved. * Copyright (c) 2012 DEY Storage Systems, Inc. All rights reserved. * Copyright (c) 2012 Pawel Jakub Dawidek . * Copyright (c) 2013 Martin Matuska. All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. * Copyright 2017 Nexenta Systems, Inc. * Copyright 2016 Igor Kozhukhov * Copyright 2017-2018 RackTop Systems. * Copyright (c) 2019 Datto Inc. * Copyright (c) 2019, loli10K */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_IDMAP #include #include #include #endif /* HAVE_IDMAP */ #include #include #include #include #include #include #include "zfs_namecheck.h" #include "zfs_prop.h" #include "libzfs_impl.h" #include "libzfs.h" #include "zfs_deleg.h" static int userquota_propname_decode(const char *propname, boolean_t zoned, zfs_userquota_prop_t *typep, char *domain, int domainlen, uint64_t *ridp); /* * Given a single type (not a mask of types), return the type in a human * readable form. */ const char * zfs_type_to_name(zfs_type_t type) { switch (type) { case ZFS_TYPE_FILESYSTEM: return (dgettext(TEXT_DOMAIN, "filesystem")); case ZFS_TYPE_SNAPSHOT: return (dgettext(TEXT_DOMAIN, "snapshot")); case ZFS_TYPE_VOLUME: return (dgettext(TEXT_DOMAIN, "volume")); case ZFS_TYPE_POOL: return (dgettext(TEXT_DOMAIN, "pool")); case ZFS_TYPE_BOOKMARK: return (dgettext(TEXT_DOMAIN, "bookmark")); default: assert(!"unhandled zfs_type_t"); } return (NULL); } /* * Validate a ZFS path. This is used even before trying to open the dataset, to * provide a more meaningful error message. We call zfs_error_aux() to * explain exactly why the name was not valid. */ int zfs_validate_name(libzfs_handle_t *hdl, const char *path, int type, boolean_t modifying) { namecheck_err_t why; char what; if (!(type & ZFS_TYPE_SNAPSHOT) && strchr(path, '@') != NULL) { if (hdl != NULL) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "snapshot delimiter '@' is not expected here")); return (0); } if (type == ZFS_TYPE_SNAPSHOT && strchr(path, '@') == NULL) { if (hdl != NULL) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "missing '@' delimiter in snapshot name")); return (0); } if (!(type & ZFS_TYPE_BOOKMARK) && strchr(path, '#') != NULL) { if (hdl != NULL) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "bookmark delimiter '#' is not expected here")); return (0); } if (type == ZFS_TYPE_BOOKMARK && strchr(path, '#') == NULL) { if (hdl != NULL) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "missing '#' delimiter in bookmark name")); return (0); } if (modifying && strchr(path, '%') != NULL) { if (hdl != NULL) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid character %c in name"), '%'); return (0); } if (entity_namecheck(path, &why, &what) != 0) { if (hdl != NULL) { switch (why) { case NAME_ERR_TOOLONG: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "name is too long")); break; case NAME_ERR_LEADING_SLASH: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "leading slash in name")); break; case NAME_ERR_EMPTY_COMPONENT: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "empty component or misplaced '@'" " or '#' delimiter in name")); break; case NAME_ERR_TRAILING_SLASH: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "trailing slash in name")); break; case NAME_ERR_INVALCHAR: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid character " "'%c' in name"), what); break; case NAME_ERR_MULTIPLE_DELIMITERS: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "multiple '@' and/or '#' delimiters in " "name")); break; case NAME_ERR_NOLETTER: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool doesn't begin with a letter")); break; case NAME_ERR_RESERVED: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "name is reserved")); break; case NAME_ERR_DISKLIKE: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "reserved disk name")); break; case NAME_ERR_SELF_REF: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "self reference, '.' is found in name")); break; case NAME_ERR_PARENT_REF: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "parent reference, '..' is found in name")); break; default: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "(%d) not defined"), why); break; } } return (0); } return (-1); } int zfs_name_valid(const char *name, zfs_type_t type) { if (type == ZFS_TYPE_POOL) return (zpool_name_valid(NULL, B_FALSE, name)); return (zfs_validate_name(NULL, name, type, B_FALSE)); } /* * This function takes the raw DSL properties, and filters out the user-defined * properties into a separate nvlist. */ static nvlist_t * process_user_props(zfs_handle_t *zhp, nvlist_t *props) { libzfs_handle_t *hdl = zhp->zfs_hdl; nvpair_t *elem; nvlist_t *propval; nvlist_t *nvl; if (nvlist_alloc(&nvl, NV_UNIQUE_NAME, 0) != 0) { (void) no_memory(hdl); return (NULL); } elem = NULL; while ((elem = nvlist_next_nvpair(props, elem)) != NULL) { if (!zfs_prop_user(nvpair_name(elem))) continue; verify(nvpair_value_nvlist(elem, &propval) == 0); if (nvlist_add_nvlist(nvl, nvpair_name(elem), propval) != 0) { nvlist_free(nvl); (void) no_memory(hdl); return (NULL); } } return (nvl); } static zpool_handle_t * zpool_add_handle(zfs_handle_t *zhp, const char *pool_name) { libzfs_handle_t *hdl = zhp->zfs_hdl; zpool_handle_t *zph; if ((zph = zpool_open_canfail(hdl, pool_name)) != NULL) { if (hdl->libzfs_pool_handles != NULL) zph->zpool_next = hdl->libzfs_pool_handles; hdl->libzfs_pool_handles = zph; } return (zph); } static zpool_handle_t * zpool_find_handle(zfs_handle_t *zhp, const char *pool_name, int len) { libzfs_handle_t *hdl = zhp->zfs_hdl; zpool_handle_t *zph = hdl->libzfs_pool_handles; while ((zph != NULL) && (strncmp(pool_name, zpool_get_name(zph), len) != 0)) zph = zph->zpool_next; return (zph); } /* * Returns a handle to the pool that contains the provided dataset. * If a handle to that pool already exists then that handle is returned. * Otherwise, a new handle is created and added to the list of handles. */ static zpool_handle_t * zpool_handle(zfs_handle_t *zhp) { char *pool_name; int len; zpool_handle_t *zph; len = strcspn(zhp->zfs_name, "/@#") + 1; pool_name = zfs_alloc(zhp->zfs_hdl, len); (void) strlcpy(pool_name, zhp->zfs_name, len); zph = zpool_find_handle(zhp, pool_name, len); if (zph == NULL) zph = zpool_add_handle(zhp, pool_name); free(pool_name); return (zph); } void zpool_free_handles(libzfs_handle_t *hdl) { zpool_handle_t *next, *zph = hdl->libzfs_pool_handles; while (zph != NULL) { next = zph->zpool_next; zpool_close(zph); zph = next; } hdl->libzfs_pool_handles = NULL; } /* * Utility function to gather stats (objset and zpl) for the given object. */ static int get_stats_ioctl(zfs_handle_t *zhp, zfs_cmd_t *zc) { libzfs_handle_t *hdl = zhp->zfs_hdl; (void) strlcpy(zc->zc_name, zhp->zfs_name, sizeof (zc->zc_name)); while (ioctl(hdl->libzfs_fd, ZFS_IOC_OBJSET_STATS, zc) != 0) { if (errno == ENOMEM) { if (zcmd_expand_dst_nvlist(hdl, zc) != 0) { return (-1); } } else { return (-1); } } return (0); } /* * Utility function to get the received properties of the given object. */ static int get_recvd_props_ioctl(zfs_handle_t *zhp) { libzfs_handle_t *hdl = zhp->zfs_hdl; nvlist_t *recvdprops; zfs_cmd_t zc = {"\0"}; int err; if (zcmd_alloc_dst_nvlist(hdl, &zc, 0) != 0) return (-1); (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); while (ioctl(hdl->libzfs_fd, ZFS_IOC_OBJSET_RECVD_PROPS, &zc) != 0) { if (errno == ENOMEM) { if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) { return (-1); } } else { zcmd_free_nvlists(&zc); return (-1); } } err = zcmd_read_dst_nvlist(zhp->zfs_hdl, &zc, &recvdprops); zcmd_free_nvlists(&zc); if (err != 0) return (-1); nvlist_free(zhp->zfs_recvd_props); zhp->zfs_recvd_props = recvdprops; return (0); } static int put_stats_zhdl(zfs_handle_t *zhp, zfs_cmd_t *zc) { nvlist_t *allprops, *userprops; zhp->zfs_dmustats = zc->zc_objset_stats; /* structure assignment */ if (zcmd_read_dst_nvlist(zhp->zfs_hdl, zc, &allprops) != 0) { return (-1); } /* * XXX Why do we store the user props separately, in addition to * storing them in zfs_props? */ if ((userprops = process_user_props(zhp, allprops)) == NULL) { nvlist_free(allprops); return (-1); } nvlist_free(zhp->zfs_props); nvlist_free(zhp->zfs_user_props); zhp->zfs_props = allprops; zhp->zfs_user_props = userprops; return (0); } static int get_stats(zfs_handle_t *zhp) { int rc = 0; zfs_cmd_t zc = {"\0"}; if (zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0) != 0) return (-1); if (get_stats_ioctl(zhp, &zc) != 0) rc = -1; else if (put_stats_zhdl(zhp, &zc) != 0) rc = -1; zcmd_free_nvlists(&zc); return (rc); } /* * Refresh the properties currently stored in the handle. */ void zfs_refresh_properties(zfs_handle_t *zhp) { (void) get_stats(zhp); } /* * Makes a handle from the given dataset name. Used by zfs_open() and * zfs_iter_* to create child handles on the fly. */ static int make_dataset_handle_common(zfs_handle_t *zhp, zfs_cmd_t *zc) { if (put_stats_zhdl(zhp, zc) != 0) return (-1); /* * We've managed to open the dataset and gather statistics. Determine * the high-level type. */ if (zhp->zfs_dmustats.dds_type == DMU_OST_ZVOL) zhp->zfs_head_type = ZFS_TYPE_VOLUME; else if (zhp->zfs_dmustats.dds_type == DMU_OST_ZFS) zhp->zfs_head_type = ZFS_TYPE_FILESYSTEM; else if (zhp->zfs_dmustats.dds_type == DMU_OST_OTHER) return (-1); else abort(); if (zhp->zfs_dmustats.dds_is_snapshot) zhp->zfs_type = ZFS_TYPE_SNAPSHOT; else if (zhp->zfs_dmustats.dds_type == DMU_OST_ZVOL) zhp->zfs_type = ZFS_TYPE_VOLUME; else if (zhp->zfs_dmustats.dds_type == DMU_OST_ZFS) zhp->zfs_type = ZFS_TYPE_FILESYSTEM; else abort(); /* we should never see any other types */ if ((zhp->zpool_hdl = zpool_handle(zhp)) == NULL) return (-1); return (0); } zfs_handle_t * make_dataset_handle(libzfs_handle_t *hdl, const char *path) { zfs_cmd_t zc = {"\0"}; zfs_handle_t *zhp = calloc(1, sizeof (zfs_handle_t)); if (zhp == NULL) return (NULL); zhp->zfs_hdl = hdl; (void) strlcpy(zhp->zfs_name, path, sizeof (zhp->zfs_name)); if (zcmd_alloc_dst_nvlist(hdl, &zc, 0) != 0) { free(zhp); return (NULL); } if (get_stats_ioctl(zhp, &zc) == -1) { zcmd_free_nvlists(&zc); free(zhp); return (NULL); } if (make_dataset_handle_common(zhp, &zc) == -1) { free(zhp); zhp = NULL; } zcmd_free_nvlists(&zc); return (zhp); } zfs_handle_t * make_dataset_handle_zc(libzfs_handle_t *hdl, zfs_cmd_t *zc) { zfs_handle_t *zhp = calloc(1, sizeof (zfs_handle_t)); if (zhp == NULL) return (NULL); zhp->zfs_hdl = hdl; (void) strlcpy(zhp->zfs_name, zc->zc_name, sizeof (zhp->zfs_name)); if (make_dataset_handle_common(zhp, zc) == -1) { free(zhp); return (NULL); } return (zhp); } zfs_handle_t * make_dataset_simple_handle_zc(zfs_handle_t *pzhp, zfs_cmd_t *zc) { zfs_handle_t *zhp = calloc(1, sizeof (zfs_handle_t)); if (zhp == NULL) return (NULL); zhp->zfs_hdl = pzhp->zfs_hdl; (void) strlcpy(zhp->zfs_name, zc->zc_name, sizeof (zhp->zfs_name)); zhp->zfs_head_type = pzhp->zfs_type; zhp->zfs_type = ZFS_TYPE_SNAPSHOT; zhp->zpool_hdl = zpool_handle(zhp); return (zhp); } zfs_handle_t * zfs_handle_dup(zfs_handle_t *zhp_orig) { zfs_handle_t *zhp = calloc(1, sizeof (zfs_handle_t)); if (zhp == NULL) return (NULL); zhp->zfs_hdl = zhp_orig->zfs_hdl; zhp->zpool_hdl = zhp_orig->zpool_hdl; (void) strlcpy(zhp->zfs_name, zhp_orig->zfs_name, sizeof (zhp->zfs_name)); zhp->zfs_type = zhp_orig->zfs_type; zhp->zfs_head_type = zhp_orig->zfs_head_type; zhp->zfs_dmustats = zhp_orig->zfs_dmustats; if (zhp_orig->zfs_props != NULL) { if (nvlist_dup(zhp_orig->zfs_props, &zhp->zfs_props, 0) != 0) { (void) no_memory(zhp->zfs_hdl); zfs_close(zhp); return (NULL); } } if (zhp_orig->zfs_user_props != NULL) { if (nvlist_dup(zhp_orig->zfs_user_props, &zhp->zfs_user_props, 0) != 0) { (void) no_memory(zhp->zfs_hdl); zfs_close(zhp); return (NULL); } } if (zhp_orig->zfs_recvd_props != NULL) { if (nvlist_dup(zhp_orig->zfs_recvd_props, &zhp->zfs_recvd_props, 0)) { (void) no_memory(zhp->zfs_hdl); zfs_close(zhp); return (NULL); } } zhp->zfs_mntcheck = zhp_orig->zfs_mntcheck; if (zhp_orig->zfs_mntopts != NULL) { zhp->zfs_mntopts = zfs_strdup(zhp_orig->zfs_hdl, zhp_orig->zfs_mntopts); } zhp->zfs_props_table = zhp_orig->zfs_props_table; return (zhp); } boolean_t zfs_bookmark_exists(const char *path) { nvlist_t *bmarks; nvlist_t *props; char fsname[ZFS_MAX_DATASET_NAME_LEN]; char *bmark_name; char *pound; int err; boolean_t rv; (void) strlcpy(fsname, path, sizeof (fsname)); pound = strchr(fsname, '#'); if (pound == NULL) return (B_FALSE); *pound = '\0'; bmark_name = pound + 1; props = fnvlist_alloc(); err = lzc_get_bookmarks(fsname, props, &bmarks); nvlist_free(props); if (err != 0) { nvlist_free(bmarks); return (B_FALSE); } rv = nvlist_exists(bmarks, bmark_name); nvlist_free(bmarks); return (rv); } zfs_handle_t * make_bookmark_handle(zfs_handle_t *parent, const char *path, nvlist_t *bmark_props) { zfs_handle_t *zhp = calloc(1, sizeof (zfs_handle_t)); if (zhp == NULL) return (NULL); /* Fill in the name. */ zhp->zfs_hdl = parent->zfs_hdl; (void) strlcpy(zhp->zfs_name, path, sizeof (zhp->zfs_name)); /* Set the property lists. */ if (nvlist_dup(bmark_props, &zhp->zfs_props, 0) != 0) { free(zhp); return (NULL); } /* Set the types. */ zhp->zfs_head_type = parent->zfs_head_type; zhp->zfs_type = ZFS_TYPE_BOOKMARK; if ((zhp->zpool_hdl = zpool_handle(zhp)) == NULL) { nvlist_free(zhp->zfs_props); free(zhp); return (NULL); } return (zhp); } struct zfs_open_bookmarks_cb_data { const char *path; zfs_handle_t *zhp; }; static int zfs_open_bookmarks_cb(zfs_handle_t *zhp, void *data) { struct zfs_open_bookmarks_cb_data *dp = data; /* * Is it the one we are looking for? */ if (strcmp(dp->path, zfs_get_name(zhp)) == 0) { /* * We found it. Save it and let the caller know we are done. */ dp->zhp = zhp; return (EEXIST); } /* * Not found. Close the handle and ask for another one. */ zfs_close(zhp); return (0); } /* * Opens the given snapshot, bookmark, filesystem, or volume. The 'types' * argument is a mask of acceptable types. The function will print an * appropriate error message and return NULL if it can't be opened. */ zfs_handle_t * zfs_open(libzfs_handle_t *hdl, const char *path, int types) { zfs_handle_t *zhp; char errbuf[1024]; char *bookp; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot open '%s'"), path); /* * Validate the name before we even try to open it. */ if (!zfs_validate_name(hdl, path, types, B_FALSE)) { (void) zfs_error(hdl, EZFS_INVALIDNAME, errbuf); return (NULL); } /* * Bookmarks needs to be handled separately. */ bookp = strchr(path, '#'); if (bookp == NULL) { /* * Try to get stats for the dataset, which will tell us if it * exists. */ errno = 0; if ((zhp = make_dataset_handle(hdl, path)) == NULL) { (void) zfs_standard_error(hdl, errno, errbuf); return (NULL); } } else { char dsname[ZFS_MAX_DATASET_NAME_LEN]; zfs_handle_t *pzhp; struct zfs_open_bookmarks_cb_data cb_data = {path, NULL}; /* * We need to cut out '#' and everything after '#' * to get the parent dataset name only. */ assert(bookp - path < sizeof (dsname)); (void) strncpy(dsname, path, bookp - path); dsname[bookp - path] = '\0'; /* * Create handle for the parent dataset. */ errno = 0; if ((pzhp = make_dataset_handle(hdl, dsname)) == NULL) { (void) zfs_standard_error(hdl, errno, errbuf); return (NULL); } /* * Iterate bookmarks to find the right one. */ errno = 0; if ((zfs_iter_bookmarks(pzhp, zfs_open_bookmarks_cb, &cb_data) == 0) && (cb_data.zhp == NULL)) { (void) zfs_error(hdl, EZFS_NOENT, errbuf); zfs_close(pzhp); return (NULL); } if (cb_data.zhp == NULL) { (void) zfs_standard_error(hdl, errno, errbuf); zfs_close(pzhp); return (NULL); } zhp = cb_data.zhp; /* * Cleanup. */ zfs_close(pzhp); } if (!(types & zhp->zfs_type)) { (void) zfs_error(hdl, EZFS_BADTYPE, errbuf); zfs_close(zhp); return (NULL); } return (zhp); } /* * Release a ZFS handle. Nothing to do but free the associated memory. */ void zfs_close(zfs_handle_t *zhp) { if (zhp->zfs_mntopts) free(zhp->zfs_mntopts); nvlist_free(zhp->zfs_props); nvlist_free(zhp->zfs_user_props); nvlist_free(zhp->zfs_recvd_props); free(zhp); } typedef struct mnttab_node { struct mnttab mtn_mt; avl_node_t mtn_node; } mnttab_node_t; static int libzfs_mnttab_cache_compare(const void *arg1, const void *arg2) { const mnttab_node_t *mtn1 = (const mnttab_node_t *)arg1; const mnttab_node_t *mtn2 = (const mnttab_node_t *)arg2; int rv; rv = strcmp(mtn1->mtn_mt.mnt_special, mtn2->mtn_mt.mnt_special); return (AVL_ISIGN(rv)); } void libzfs_mnttab_init(libzfs_handle_t *hdl) { pthread_mutex_init(&hdl->libzfs_mnttab_cache_lock, NULL); assert(avl_numnodes(&hdl->libzfs_mnttab_cache) == 0); avl_create(&hdl->libzfs_mnttab_cache, libzfs_mnttab_cache_compare, sizeof (mnttab_node_t), offsetof(mnttab_node_t, mtn_node)); } int libzfs_mnttab_update(libzfs_handle_t *hdl) { struct mnttab entry; /* Reopen MNTTAB to prevent reading stale data from open file */ if (freopen(MNTTAB, "r", hdl->libzfs_mnttab) == NULL) return (ENOENT); while (getmntent(hdl->libzfs_mnttab, &entry) == 0) { mnttab_node_t *mtn; avl_index_t where; if (strcmp(entry.mnt_fstype, MNTTYPE_ZFS) != 0) continue; mtn = zfs_alloc(hdl, sizeof (mnttab_node_t)); mtn->mtn_mt.mnt_special = zfs_strdup(hdl, entry.mnt_special); mtn->mtn_mt.mnt_mountp = zfs_strdup(hdl, entry.mnt_mountp); mtn->mtn_mt.mnt_fstype = zfs_strdup(hdl, entry.mnt_fstype); mtn->mtn_mt.mnt_mntopts = zfs_strdup(hdl, entry.mnt_mntopts); /* Exclude duplicate mounts */ if (avl_find(&hdl->libzfs_mnttab_cache, mtn, &where) != NULL) { free(mtn->mtn_mt.mnt_special); free(mtn->mtn_mt.mnt_mountp); free(mtn->mtn_mt.mnt_fstype); free(mtn->mtn_mt.mnt_mntopts); free(mtn); continue; } avl_add(&hdl->libzfs_mnttab_cache, mtn); } return (0); } void libzfs_mnttab_fini(libzfs_handle_t *hdl) { void *cookie = NULL; mnttab_node_t *mtn; while ((mtn = avl_destroy_nodes(&hdl->libzfs_mnttab_cache, &cookie)) != NULL) { free(mtn->mtn_mt.mnt_special); free(mtn->mtn_mt.mnt_mountp); free(mtn->mtn_mt.mnt_fstype); free(mtn->mtn_mt.mnt_mntopts); free(mtn); } avl_destroy(&hdl->libzfs_mnttab_cache); (void) pthread_mutex_destroy(&hdl->libzfs_mnttab_cache_lock); } void libzfs_mnttab_cache(libzfs_handle_t *hdl, boolean_t enable) { hdl->libzfs_mnttab_enable = enable; } int libzfs_mnttab_find(libzfs_handle_t *hdl, const char *fsname, struct mnttab *entry) { mnttab_node_t find; mnttab_node_t *mtn; int ret = ENOENT; if (!hdl->libzfs_mnttab_enable) { struct mnttab srch = { 0 }; if (avl_numnodes(&hdl->libzfs_mnttab_cache)) libzfs_mnttab_fini(hdl); /* Reopen MNTTAB to prevent reading stale data from open file */ if (freopen(MNTTAB, "r", hdl->libzfs_mnttab) == NULL) return (ENOENT); srch.mnt_special = (char *)fsname; srch.mnt_fstype = MNTTYPE_ZFS; if (getmntany(hdl->libzfs_mnttab, entry, &srch) == 0) return (0); else return (ENOENT); } pthread_mutex_lock(&hdl->libzfs_mnttab_cache_lock); if (avl_numnodes(&hdl->libzfs_mnttab_cache) == 0) { int error; if ((error = libzfs_mnttab_update(hdl)) != 0) { pthread_mutex_unlock(&hdl->libzfs_mnttab_cache_lock); return (error); } } find.mtn_mt.mnt_special = (char *)fsname; mtn = avl_find(&hdl->libzfs_mnttab_cache, &find, NULL); if (mtn) { *entry = mtn->mtn_mt; ret = 0; } pthread_mutex_unlock(&hdl->libzfs_mnttab_cache_lock); return (ret); } void libzfs_mnttab_add(libzfs_handle_t *hdl, const char *special, const char *mountp, const char *mntopts) { mnttab_node_t *mtn; pthread_mutex_lock(&hdl->libzfs_mnttab_cache_lock); if (avl_numnodes(&hdl->libzfs_mnttab_cache) != 0) { mtn = zfs_alloc(hdl, sizeof (mnttab_node_t)); mtn->mtn_mt.mnt_special = zfs_strdup(hdl, special); mtn->mtn_mt.mnt_mountp = zfs_strdup(hdl, mountp); mtn->mtn_mt.mnt_fstype = zfs_strdup(hdl, MNTTYPE_ZFS); mtn->mtn_mt.mnt_mntopts = zfs_strdup(hdl, mntopts); /* * Another thread may have already added this entry * via libzfs_mnttab_update. If so we should skip it. */ if (avl_find(&hdl->libzfs_mnttab_cache, mtn, NULL) != NULL) free(mtn); else avl_add(&hdl->libzfs_mnttab_cache, mtn); } pthread_mutex_unlock(&hdl->libzfs_mnttab_cache_lock); } void libzfs_mnttab_remove(libzfs_handle_t *hdl, const char *fsname) { mnttab_node_t find; mnttab_node_t *ret; pthread_mutex_lock(&hdl->libzfs_mnttab_cache_lock); find.mtn_mt.mnt_special = (char *)fsname; if ((ret = avl_find(&hdl->libzfs_mnttab_cache, (void *)&find, NULL)) != NULL) { avl_remove(&hdl->libzfs_mnttab_cache, ret); free(ret->mtn_mt.mnt_special); free(ret->mtn_mt.mnt_mountp); free(ret->mtn_mt.mnt_fstype); free(ret->mtn_mt.mnt_mntopts); free(ret); } pthread_mutex_unlock(&hdl->libzfs_mnttab_cache_lock); } int zfs_spa_version(zfs_handle_t *zhp, int *spa_version) { zpool_handle_t *zpool_handle = zhp->zpool_hdl; if (zpool_handle == NULL) return (-1); *spa_version = zpool_get_prop_int(zpool_handle, ZPOOL_PROP_VERSION, NULL); return (0); } /* * The choice of reservation property depends on the SPA version. */ static int zfs_which_resv_prop(zfs_handle_t *zhp, zfs_prop_t *resv_prop) { int spa_version; if (zfs_spa_version(zhp, &spa_version) < 0) return (-1); if (spa_version >= SPA_VERSION_REFRESERVATION) *resv_prop = ZFS_PROP_REFRESERVATION; else *resv_prop = ZFS_PROP_RESERVATION; return (0); } /* * Given an nvlist of properties to set, validates that they are correct, and * parses any numeric properties (index, boolean, etc) if they are specified as * strings. */ nvlist_t * zfs_valid_proplist(libzfs_handle_t *hdl, zfs_type_t type, nvlist_t *nvl, uint64_t zoned, zfs_handle_t *zhp, zpool_handle_t *zpool_hdl, boolean_t key_params_ok, const char *errbuf) { nvpair_t *elem; uint64_t intval; char *strval; zfs_prop_t prop; nvlist_t *ret; int chosen_normal = -1; int chosen_utf = -1; if (nvlist_alloc(&ret, NV_UNIQUE_NAME, 0) != 0) { (void) no_memory(hdl); return (NULL); } /* * Make sure this property is valid and applies to this type. */ elem = NULL; while ((elem = nvlist_next_nvpair(nvl, elem)) != NULL) { const char *propname = nvpair_name(elem); prop = zfs_name_to_prop(propname); if (prop == ZPROP_INVAL && zfs_prop_user(propname)) { /* * This is a user property: make sure it's a * string, and that it's less than ZAP_MAXNAMELEN. */ if (nvpair_type(elem) != DATA_TYPE_STRING) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be a string"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (strlen(nvpair_name(elem)) >= ZAP_MAXNAMELEN) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property name '%s' is too long"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } (void) nvpair_value_string(elem, &strval); if (nvlist_add_string(ret, propname, strval) != 0) { (void) no_memory(hdl); goto error; } continue; } /* * Currently, only user properties can be modified on * snapshots. */ if (type == ZFS_TYPE_SNAPSHOT) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "this property can not be modified for snapshots")); (void) zfs_error(hdl, EZFS_PROPTYPE, errbuf); goto error; } if (prop == ZPROP_INVAL && zfs_prop_userquota(propname)) { zfs_userquota_prop_t uqtype; char *newpropname = NULL; char domain[128]; uint64_t rid; uint64_t valary[3]; int rc; if (userquota_propname_decode(propname, zoned, &uqtype, domain, sizeof (domain), &rid) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' has an invalid user/group name"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (uqtype != ZFS_PROP_USERQUOTA && uqtype != ZFS_PROP_GROUPQUOTA && uqtype != ZFS_PROP_USEROBJQUOTA && uqtype != ZFS_PROP_GROUPOBJQUOTA && uqtype != ZFS_PROP_PROJECTQUOTA && uqtype != ZFS_PROP_PROJECTOBJQUOTA) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is readonly"), propname); (void) zfs_error(hdl, EZFS_PROPREADONLY, errbuf); goto error; } if (nvpair_type(elem) == DATA_TYPE_STRING) { (void) nvpair_value_string(elem, &strval); if (strcmp(strval, "none") == 0) { intval = 0; } else if (zfs_nicestrtonum(hdl, strval, &intval) != 0) { (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } } else if (nvpair_type(elem) == DATA_TYPE_UINT64) { (void) nvpair_value_uint64(elem, &intval); if (intval == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "use 'none' to disable " "{user|group|project}quota")); goto error; } } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be a number"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } /* * Encode the prop name as * userquota@-domain, to make it easy * for the kernel to decode. */ rc = asprintf(&newpropname, "%s%llx-%s", zfs_userquota_prop_prefixes[uqtype], (longlong_t)rid, domain); if (rc == -1 || newpropname == NULL) { (void) no_memory(hdl); goto error; } valary[0] = uqtype; valary[1] = rid; valary[2] = intval; if (nvlist_add_uint64_array(ret, newpropname, valary, 3) != 0) { free(newpropname); (void) no_memory(hdl); goto error; } free(newpropname); continue; } else if (prop == ZPROP_INVAL && zfs_prop_written(propname)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is readonly"), propname); (void) zfs_error(hdl, EZFS_PROPREADONLY, errbuf); goto error; } if (prop == ZPROP_INVAL) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid property '%s'"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (!zfs_prop_valid_for_type(prop, type, B_FALSE)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' does not " "apply to datasets of this type"), propname); (void) zfs_error(hdl, EZFS_PROPTYPE, errbuf); goto error; } if (zfs_prop_readonly(prop) && !(zfs_prop_setonce(prop) && zhp == NULL) && !(zfs_prop_encryption_key_param(prop) && key_params_ok)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is readonly"), propname); (void) zfs_error(hdl, EZFS_PROPREADONLY, errbuf); goto error; } if (zprop_parse_value(hdl, elem, prop, type, ret, &strval, &intval, errbuf) != 0) goto error; /* * Perform some additional checks for specific properties. */ switch (prop) { case ZFS_PROP_VERSION: { int version; if (zhp == NULL) break; version = zfs_prop_get_int(zhp, ZFS_PROP_VERSION); if (intval < version) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Can not downgrade; already at version %u"), version); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; } case ZFS_PROP_VOLBLOCKSIZE: case ZFS_PROP_RECORDSIZE: { int maxbs = SPA_MAXBLOCKSIZE; char buf[64]; if (zpool_hdl != NULL) { maxbs = zpool_get_prop_int(zpool_hdl, ZPOOL_PROP_MAXBLOCKSIZE, NULL); } /* * The value must be a power of two between * SPA_MINBLOCKSIZE and maxbs. */ if (intval < SPA_MINBLOCKSIZE || intval > maxbs || !ISP2(intval)) { zfs_nicebytes(maxbs, buf, sizeof (buf)); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be power of 2 from 512B " "to %s"), propname, buf); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; } case ZFS_PROP_SPECIAL_SMALL_BLOCKS: { int maxbs = SPA_OLD_MAXBLOCKSIZE; char buf[64]; if (zpool_hdl != NULL) { char state[64] = ""; maxbs = zpool_get_prop_int(zpool_hdl, ZPOOL_PROP_MAXBLOCKSIZE, NULL); /* * Issue a warning but do not fail so that * tests for settable properties succeed. */ if (zpool_prop_get_feature(zpool_hdl, "feature@allocation_classes", state, sizeof (state)) != 0 || strcmp(state, ZFS_FEATURE_ACTIVE) != 0) { (void) fprintf(stderr, gettext( "%s: property requires a special " "device in the pool\n"), propname); } } if (intval != 0 && (intval < SPA_MINBLOCKSIZE || intval > maxbs || !ISP2(intval))) { zfs_nicebytes(maxbs, buf, sizeof (buf)); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid '%s=%d' property: must be zero or " "a power of 2 from 512B to %s"), propname, intval, buf); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; } case ZFS_PROP_MLSLABEL: { #ifdef HAVE_MLSLABEL /* * Verify the mlslabel string and convert to * internal hex label string. */ m_label_t *new_sl; char *hex = NULL; /* internal label string */ /* Default value is already OK. */ if (strcasecmp(strval, ZFS_MLSLABEL_DEFAULT) == 0) break; /* Verify the label can be converted to binary form */ if (((new_sl = m_label_alloc(MAC_LABEL)) == NULL) || (str_to_label(strval, &new_sl, MAC_LABEL, L_NO_CORRECTION, NULL) == -1)) { goto badlabel; } /* Now translate to hex internal label string */ if (label_to_str(new_sl, &hex, M_INTERNAL, DEF_NAMES) != 0) { if (hex) free(hex); goto badlabel; } m_label_free(new_sl); /* If string is already in internal form, we're done. */ if (strcmp(strval, hex) == 0) { free(hex); break; } /* Replace the label string with the internal form. */ (void) nvlist_remove(ret, zfs_prop_to_name(prop), DATA_TYPE_STRING); verify(nvlist_add_string(ret, zfs_prop_to_name(prop), hex) == 0); free(hex); break; badlabel: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid mlslabel '%s'"), strval); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); m_label_free(new_sl); /* OK if null */ goto error; #else zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "mlslabels are unsupported")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; #endif /* HAVE_MLSLABEL */ } case ZFS_PROP_MOUNTPOINT: { namecheck_err_t why; if (strcmp(strval, ZFS_MOUNTPOINT_NONE) == 0 || strcmp(strval, ZFS_MOUNTPOINT_LEGACY) == 0) break; if (mountpoint_namecheck(strval, &why)) { switch (why) { case NAME_ERR_LEADING_SLASH: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be an absolute path, " "'none', or 'legacy'"), propname); break; case NAME_ERR_TOOLONG: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "component of '%s' is too long"), propname); break; default: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "(%d) not defined"), why); break; } (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } } /*FALLTHRU*/ case ZFS_PROP_SHARESMB: case ZFS_PROP_SHARENFS: /* * For the mountpoint and sharenfs or sharesmb * properties, check if it can be set in a * global/non-global zone based on * the zoned property value: * * global zone non-global zone * -------------------------------------------------- * zoned=on mountpoint (no) mountpoint (yes) * sharenfs (no) sharenfs (no) * sharesmb (no) sharesmb (no) * * zoned=off mountpoint (yes) N/A * sharenfs (yes) * sharesmb (yes) */ if (zoned) { if (getzoneid() == GLOBAL_ZONEID) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' cannot be set on " "dataset in a non-global zone"), propname); (void) zfs_error(hdl, EZFS_ZONED, errbuf); goto error; } else if (prop == ZFS_PROP_SHARENFS || prop == ZFS_PROP_SHARESMB) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' cannot be set in " "a non-global zone"), propname); (void) zfs_error(hdl, EZFS_ZONED, errbuf); goto error; } } else if (getzoneid() != GLOBAL_ZONEID) { /* * If zoned property is 'off', this must be in * a global zone. If not, something is wrong. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' cannot be set while dataset " "'zoned' property is set"), propname); (void) zfs_error(hdl, EZFS_ZONED, errbuf); goto error; } /* * At this point, it is legitimate to set the * property. Now we want to make sure that the * property value is valid if it is sharenfs. */ if ((prop == ZFS_PROP_SHARENFS || prop == ZFS_PROP_SHARESMB) && strcmp(strval, "on") != 0 && strcmp(strval, "off") != 0) { zfs_share_proto_t proto; if (prop == ZFS_PROP_SHARESMB) proto = PROTO_SMB; else proto = PROTO_NFS; /* * Must be an valid sharing protocol * option string so init the libshare * in order to enable the parser and * then parse the options. We use the * control API since we don't care about * the current configuration and don't * want the overhead of loading it * until we actually do something. */ if (zfs_init_libshare(hdl, SA_INIT_CONTROL_API) != SA_OK) { /* * An error occurred so we can't do * anything */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' cannot be set: problem " "in share initialization"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (zfs_parse_options(strval, proto) != SA_OK) { /* * There was an error in parsing so * deal with it by issuing an error * message and leaving after * uninitializing the libshare * interface. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' cannot be set to invalid " "options"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); zfs_uninit_libshare(hdl); goto error; } zfs_uninit_libshare(hdl); } break; case ZFS_PROP_KEYLOCATION: if (!zfs_prop_valid_keylocation(strval, B_FALSE)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid keylocation")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (zhp != NULL) { uint64_t crypt = zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION); if (crypt == ZIO_CRYPT_OFF && strcmp(strval, "none") != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "keylocation must be 'none' " "for unencrypted datasets")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } else if (crypt != ZIO_CRYPT_OFF && strcmp(strval, "none") == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "keylocation must not be 'none' " "for encrypted datasets")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } } break; case ZFS_PROP_PBKDF2_ITERS: if (intval < MIN_PBKDF2_ITERATIONS) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "minimum pbkdf2 iterations is %u"), MIN_PBKDF2_ITERATIONS); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; case ZFS_PROP_UTF8ONLY: chosen_utf = (int)intval; break; case ZFS_PROP_NORMALIZE: chosen_normal = (int)intval; break; default: break; } /* * For changes to existing volumes, we have some additional * checks to enforce. */ if (type == ZFS_TYPE_VOLUME && zhp != NULL) { uint64_t blocksize = zfs_prop_get_int(zhp, ZFS_PROP_VOLBLOCKSIZE); char buf[64]; switch (prop) { case ZFS_PROP_VOLSIZE: if (intval % blocksize != 0) { zfs_nicebytes(blocksize, buf, sizeof (buf)); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be a multiple of " "volume block size (%s)"), propname, buf); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } if (intval == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' cannot be zero"), propname); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; default: break; } } /* check encryption properties */ if (zhp != NULL) { int64_t crypt = zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION); switch (prop) { case ZFS_PROP_COPIES: if (crypt != ZIO_CRYPT_OFF && intval > 2) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "encrypted datasets cannot have " "3 copies")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } break; default: break; } } } /* * If normalization was chosen, but no UTF8 choice was made, * enforce rejection of non-UTF8 names. * * If normalization was chosen, but rejecting non-UTF8 names * was explicitly not chosen, it is an error. */ if (chosen_normal > 0 && chosen_utf < 0) { if (nvlist_add_uint64(ret, zfs_prop_to_name(ZFS_PROP_UTF8ONLY), 1) != 0) { (void) no_memory(hdl); goto error; } } else if (chosen_normal > 0 && chosen_utf == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be set 'on' if normalization chosen"), zfs_prop_to_name(ZFS_PROP_UTF8ONLY)); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); goto error; } return (ret); error: nvlist_free(ret); return (NULL); } int zfs_add_synthetic_resv(zfs_handle_t *zhp, nvlist_t *nvl) { uint64_t old_volsize; uint64_t new_volsize; uint64_t old_reservation; uint64_t new_reservation; zfs_prop_t resv_prop; nvlist_t *props; zpool_handle_t *zph = zpool_handle(zhp); /* * If this is an existing volume, and someone is setting the volsize, * make sure that it matches the reservation, or add it if necessary. */ old_volsize = zfs_prop_get_int(zhp, ZFS_PROP_VOLSIZE); if (zfs_which_resv_prop(zhp, &resv_prop) < 0) return (-1); old_reservation = zfs_prop_get_int(zhp, resv_prop); props = fnvlist_alloc(); fnvlist_add_uint64(props, zfs_prop_to_name(ZFS_PROP_VOLBLOCKSIZE), zfs_prop_get_int(zhp, ZFS_PROP_VOLBLOCKSIZE)); if ((zvol_volsize_to_reservation(zph, old_volsize, props) != old_reservation) || nvlist_exists(nvl, zfs_prop_to_name(resv_prop))) { fnvlist_free(props); return (0); } if (nvlist_lookup_uint64(nvl, zfs_prop_to_name(ZFS_PROP_VOLSIZE), &new_volsize) != 0) { fnvlist_free(props); return (-1); } new_reservation = zvol_volsize_to_reservation(zph, new_volsize, props); fnvlist_free(props); if (nvlist_add_uint64(nvl, zfs_prop_to_name(resv_prop), new_reservation) != 0) { (void) no_memory(zhp->zfs_hdl); return (-1); } return (1); } /* * Helper for 'zfs {set|clone} refreservation=auto'. Must be called after * zfs_valid_proplist(), as it is what sets the UINT64_MAX sentinel value. * Return codes must match zfs_add_synthetic_resv(). */ static int zfs_fix_auto_resv(zfs_handle_t *zhp, nvlist_t *nvl) { uint64_t volsize; uint64_t resvsize; zfs_prop_t prop; nvlist_t *props; if (!ZFS_IS_VOLUME(zhp)) { return (0); } if (zfs_which_resv_prop(zhp, &prop) != 0) { return (-1); } if (prop != ZFS_PROP_REFRESERVATION) { return (0); } if (nvlist_lookup_uint64(nvl, zfs_prop_to_name(prop), &resvsize) != 0) { /* No value being set, so it can't be "auto" */ return (0); } if (resvsize != UINT64_MAX) { /* Being set to a value other than "auto" */ return (0); } props = fnvlist_alloc(); fnvlist_add_uint64(props, zfs_prop_to_name(ZFS_PROP_VOLBLOCKSIZE), zfs_prop_get_int(zhp, ZFS_PROP_VOLBLOCKSIZE)); if (nvlist_lookup_uint64(nvl, zfs_prop_to_name(ZFS_PROP_VOLSIZE), &volsize) != 0) { volsize = zfs_prop_get_int(zhp, ZFS_PROP_VOLSIZE); } resvsize = zvol_volsize_to_reservation(zpool_handle(zhp), volsize, props); fnvlist_free(props); (void) nvlist_remove_all(nvl, zfs_prop_to_name(prop)); if (nvlist_add_uint64(nvl, zfs_prop_to_name(prop), resvsize) != 0) { (void) no_memory(zhp->zfs_hdl); return (-1); } return (1); } void zfs_setprop_error(libzfs_handle_t *hdl, zfs_prop_t prop, int err, char *errbuf) { switch (err) { case ENOSPC: /* * For quotas and reservations, ENOSPC indicates * something different; setting a quota or reservation * doesn't use any disk space. */ switch (prop) { case ZFS_PROP_QUOTA: case ZFS_PROP_REFQUOTA: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "size is less than current used or " "reserved space")); (void) zfs_error(hdl, EZFS_PROPSPACE, errbuf); break; case ZFS_PROP_RESERVATION: case ZFS_PROP_REFRESERVATION: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "size is greater than available space")); (void) zfs_error(hdl, EZFS_PROPSPACE, errbuf); break; default: (void) zfs_standard_error(hdl, err, errbuf); break; } break; case EBUSY: (void) zfs_standard_error(hdl, EBUSY, errbuf); break; case EROFS: (void) zfs_error(hdl, EZFS_DSREADONLY, errbuf); break; case E2BIG: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property value too long")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); break; case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool and or dataset must be upgraded to set this " "property or value")); (void) zfs_error(hdl, EZFS_BADVERSION, errbuf); break; case ERANGE: if (prop == ZFS_PROP_COMPRESSION || prop == ZFS_PROP_DNODESIZE || prop == ZFS_PROP_RECORDSIZE) { (void) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property setting is not allowed on " "bootable datasets")); (void) zfs_error(hdl, EZFS_NOTSUP, errbuf); } else if (prop == ZFS_PROP_CHECKSUM || prop == ZFS_PROP_DEDUP) { (void) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "property setting is not allowed on " "root pools")); (void) zfs_error(hdl, EZFS_NOTSUP, errbuf); } else { (void) zfs_standard_error(hdl, err, errbuf); } break; case EINVAL: if (prop == ZPROP_INVAL) { (void) zfs_error(hdl, EZFS_BADPROP, errbuf); } else { (void) zfs_standard_error(hdl, err, errbuf); } break; case EACCES: if (prop == ZFS_PROP_KEYLOCATION) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "keylocation may only be set on encryption roots")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); } else { (void) zfs_standard_error(hdl, err, errbuf); } break; case EOVERFLOW: /* * This platform can't address a volume this big. */ #ifdef _ILP32 if (prop == ZFS_PROP_VOLSIZE) { (void) zfs_error(hdl, EZFS_VOLTOOBIG, errbuf); break; } #endif /* FALLTHROUGH */ default: (void) zfs_standard_error(hdl, err, errbuf); } } static boolean_t zfs_is_namespace_prop(zfs_prop_t prop) { switch (prop) { case ZFS_PROP_ATIME: case ZFS_PROP_RELATIME: case ZFS_PROP_DEVICES: case ZFS_PROP_EXEC: case ZFS_PROP_SETUID: case ZFS_PROP_READONLY: case ZFS_PROP_XATTR: case ZFS_PROP_NBMAND: return (B_TRUE); default: return (B_FALSE); } } /* * Given a property name and value, set the property for the given dataset. */ int zfs_prop_set(zfs_handle_t *zhp, const char *propname, const char *propval) { int ret = -1; char errbuf[1024]; libzfs_handle_t *hdl = zhp->zfs_hdl; nvlist_t *nvl = NULL; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot set property for '%s'"), zhp->zfs_name); if (nvlist_alloc(&nvl, NV_UNIQUE_NAME, 0) != 0 || nvlist_add_string(nvl, propname, propval) != 0) { (void) no_memory(hdl); goto error; } ret = zfs_prop_set_list(zhp, nvl); error: nvlist_free(nvl); return (ret); } /* * Given an nvlist of property names and values, set the properties for the * given dataset. */ int zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props) { zfs_cmd_t zc = {"\0"}; int ret = -1; prop_changelist_t **cls = NULL; int cl_idx; char errbuf[1024]; libzfs_handle_t *hdl = zhp->zfs_hdl; nvlist_t *nvl; int nvl_len = 0; int added_resv = 0; zfs_prop_t prop = 0; nvpair_t *elem; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot set property for '%s'"), zhp->zfs_name); if ((nvl = zfs_valid_proplist(hdl, zhp->zfs_type, props, zfs_prop_get_int(zhp, ZFS_PROP_ZONED), zhp, zhp->zpool_hdl, B_FALSE, errbuf)) == NULL) goto error; /* * We have to check for any extra properties which need to be added * before computing the length of the nvlist. */ for (elem = nvlist_next_nvpair(nvl, NULL); elem != NULL; elem = nvlist_next_nvpair(nvl, elem)) { if (zfs_name_to_prop(nvpair_name(elem)) == ZFS_PROP_VOLSIZE && (added_resv = zfs_add_synthetic_resv(zhp, nvl)) == -1) { goto error; } } if (added_resv != 1 && (added_resv = zfs_fix_auto_resv(zhp, nvl)) == -1) { goto error; } /* * Check how many properties we're setting and allocate an array to * store changelist pointers for postfix(). */ for (elem = nvlist_next_nvpair(nvl, NULL); elem != NULL; elem = nvlist_next_nvpair(nvl, elem)) nvl_len++; if ((cls = calloc(nvl_len, sizeof (prop_changelist_t *))) == NULL) goto error; cl_idx = 0; for (elem = nvlist_next_nvpair(nvl, NULL); elem != NULL; elem = nvlist_next_nvpair(nvl, elem)) { prop = zfs_name_to_prop(nvpair_name(elem)); assert(cl_idx < nvl_len); /* * We don't want to unmount & remount the dataset when changing * its canmount property to 'on' or 'noauto'. We only use * the changelist logic to unmount when setting canmount=off. */ if (prop != ZFS_PROP_CANMOUNT || (fnvpair_value_uint64(elem) == ZFS_CANMOUNT_OFF && zfs_is_mounted(zhp, NULL))) { cls[cl_idx] = changelist_gather(zhp, prop, 0, 0); if (cls[cl_idx] == NULL) goto error; } if (prop == ZFS_PROP_MOUNTPOINT && changelist_haszonedchild(cls[cl_idx])) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "child dataset with inherited mountpoint is used " "in a non-global zone")); ret = zfs_error(hdl, EZFS_ZONED, errbuf); goto error; } if (cls[cl_idx] != NULL && (ret = changelist_prefix(cls[cl_idx])) != 0) goto error; cl_idx++; } assert(cl_idx == nvl_len); /* * Execute the corresponding ioctl() to set this list of properties. */ (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); if ((ret = zcmd_write_src_nvlist(hdl, &zc, nvl)) != 0 || (ret = zcmd_alloc_dst_nvlist(hdl, &zc, 0)) != 0) goto error; ret = zfs_ioctl(hdl, ZFS_IOC_SET_PROP, &zc); if (ret != 0) { if (zc.zc_nvlist_dst_filled == B_FALSE) { (void) zfs_standard_error(hdl, errno, errbuf); goto error; } /* Get the list of unset properties back and report them. */ nvlist_t *errorprops = NULL; if (zcmd_read_dst_nvlist(hdl, &zc, &errorprops) != 0) goto error; for (nvpair_t *elem = nvlist_next_nvpair(errorprops, NULL); elem != NULL; elem = nvlist_next_nvpair(errorprops, elem)) { prop = zfs_name_to_prop(nvpair_name(elem)); zfs_setprop_error(hdl, prop, errno, errbuf); } nvlist_free(errorprops); if (added_resv && errno == ENOSPC) { /* clean up the volsize property we tried to set */ uint64_t old_volsize = zfs_prop_get_int(zhp, ZFS_PROP_VOLSIZE); nvlist_free(nvl); nvl = NULL; zcmd_free_nvlists(&zc); if (nvlist_alloc(&nvl, NV_UNIQUE_NAME, 0) != 0) goto error; if (nvlist_add_uint64(nvl, zfs_prop_to_name(ZFS_PROP_VOLSIZE), old_volsize) != 0) goto error; if (zcmd_write_src_nvlist(hdl, &zc, nvl) != 0) goto error; (void) zfs_ioctl(hdl, ZFS_IOC_SET_PROP, &zc); } } else { for (cl_idx = 0; cl_idx < nvl_len; cl_idx++) { if (cls[cl_idx] != NULL) { int clp_err = changelist_postfix(cls[cl_idx]); if (clp_err != 0) ret = clp_err; } } if (ret == 0) { /* * Refresh the statistics so the new property * value is reflected. */ (void) get_stats(zhp); /* * Remount the filesystem to propagate the change * if one of the options handled by the generic * Linux namespace layer has been modified. */ if (zfs_is_namespace_prop(prop) && zfs_is_mounted(zhp, NULL)) ret = zfs_mount(zhp, MNTOPT_REMOUNT, 0); } } error: nvlist_free(nvl); zcmd_free_nvlists(&zc); if (cls != NULL) { for (cl_idx = 0; cl_idx < nvl_len; cl_idx++) { if (cls[cl_idx] != NULL) changelist_free(cls[cl_idx]); } free(cls); } return (ret); } /* * Given a property, inherit the value from the parent dataset, or if received * is TRUE, revert to the received value, if any. */ int zfs_prop_inherit(zfs_handle_t *zhp, const char *propname, boolean_t received) { zfs_cmd_t zc = {"\0"}; int ret; prop_changelist_t *cl; libzfs_handle_t *hdl = zhp->zfs_hdl; char errbuf[1024]; zfs_prop_t prop; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot inherit %s for '%s'"), propname, zhp->zfs_name); zc.zc_cookie = received; if ((prop = zfs_name_to_prop(propname)) == ZPROP_INVAL) { /* * For user properties, the amount of work we have to do is very * small, so just do it here. */ if (!zfs_prop_user(propname)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid property")); return (zfs_error(hdl, EZFS_BADPROP, errbuf)); } (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); (void) strlcpy(zc.zc_value, propname, sizeof (zc.zc_value)); if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_INHERIT_PROP, &zc) != 0) return (zfs_standard_error(hdl, errno, errbuf)); return (0); } /* * Verify that this property is inheritable. */ if (zfs_prop_readonly(prop)) return (zfs_error(hdl, EZFS_PROPREADONLY, errbuf)); if (!zfs_prop_inheritable(prop) && !received) return (zfs_error(hdl, EZFS_PROPNONINHERIT, errbuf)); /* * Check to see if the value applies to this type */ if (!zfs_prop_valid_for_type(prop, zhp->zfs_type, B_FALSE)) return (zfs_error(hdl, EZFS_PROPTYPE, errbuf)); /* * Normalize the name, to get rid of shorthand abbreviations. */ propname = zfs_prop_to_name(prop); (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); (void) strlcpy(zc.zc_value, propname, sizeof (zc.zc_value)); if (prop == ZFS_PROP_MOUNTPOINT && getzoneid() == GLOBAL_ZONEID && zfs_prop_get_int(zhp, ZFS_PROP_ZONED)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "dataset is used in a non-global zone")); return (zfs_error(hdl, EZFS_ZONED, errbuf)); } /* * Determine datasets which will be affected by this change, if any. */ if ((cl = changelist_gather(zhp, prop, 0, 0)) == NULL) return (-1); if (prop == ZFS_PROP_MOUNTPOINT && changelist_haszonedchild(cl)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "child dataset with inherited mountpoint is used " "in a non-global zone")); ret = zfs_error(hdl, EZFS_ZONED, errbuf); goto error; } if ((ret = changelist_prefix(cl)) != 0) goto error; if ((ret = zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_INHERIT_PROP, &zc)) != 0) { return (zfs_standard_error(hdl, errno, errbuf)); } else { if ((ret = changelist_postfix(cl)) != 0) goto error; /* * Refresh the statistics so the new property is reflected. */ (void) get_stats(zhp); /* * Remount the filesystem to propagate the change * if one of the options handled by the generic * Linux namespace layer has been modified. */ if (zfs_is_namespace_prop(prop) && zfs_is_mounted(zhp, NULL)) ret = zfs_mount(zhp, MNTOPT_REMOUNT, 0); } error: changelist_free(cl); return (ret); } /* * True DSL properties are stored in an nvlist. The following two functions * extract them appropriately. */ uint64_t getprop_uint64(zfs_handle_t *zhp, zfs_prop_t prop, char **source) { nvlist_t *nv; uint64_t value; *source = NULL; if (nvlist_lookup_nvlist(zhp->zfs_props, zfs_prop_to_name(prop), &nv) == 0) { verify(nvlist_lookup_uint64(nv, ZPROP_VALUE, &value) == 0); (void) nvlist_lookup_string(nv, ZPROP_SOURCE, source); } else { verify(!zhp->zfs_props_table || zhp->zfs_props_table[prop] == B_TRUE); value = zfs_prop_default_numeric(prop); *source = ""; } return (value); } static const char * getprop_string(zfs_handle_t *zhp, zfs_prop_t prop, char **source) { nvlist_t *nv; const char *value; *source = NULL; if (nvlist_lookup_nvlist(zhp->zfs_props, zfs_prop_to_name(prop), &nv) == 0) { value = fnvlist_lookup_string(nv, ZPROP_VALUE); (void) nvlist_lookup_string(nv, ZPROP_SOURCE, source); } else { verify(!zhp->zfs_props_table || zhp->zfs_props_table[prop] == B_TRUE); value = zfs_prop_default_string(prop); *source = ""; } return (value); } static boolean_t zfs_is_recvd_props_mode(zfs_handle_t *zhp) { return (zhp->zfs_props == zhp->zfs_recvd_props); } static void zfs_set_recvd_props_mode(zfs_handle_t *zhp, uint64_t *cookie) { *cookie = (uint64_t)(uintptr_t)zhp->zfs_props; zhp->zfs_props = zhp->zfs_recvd_props; } static void zfs_unset_recvd_props_mode(zfs_handle_t *zhp, uint64_t *cookie) { zhp->zfs_props = (nvlist_t *)(uintptr_t)*cookie; *cookie = 0; } /* * Internal function for getting a numeric property. Both zfs_prop_get() and * zfs_prop_get_int() are built using this interface. * * Certain properties can be overridden using 'mount -o'. In this case, scan * the contents of the /proc/self/mounts entry, searching for the * appropriate options. If they differ from the on-disk values, report the * current values and mark the source "temporary". */ static int get_numeric_property(zfs_handle_t *zhp, zfs_prop_t prop, zprop_source_t *src, char **source, uint64_t *val) { zfs_cmd_t zc = {"\0"}; nvlist_t *zplprops = NULL; struct mnttab mnt; char *mntopt_on = NULL; char *mntopt_off = NULL; boolean_t received = zfs_is_recvd_props_mode(zhp); *source = NULL; /* * If the property is being fetched for a snapshot, check whether * the property is valid for the snapshot's head dataset type. */ if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT && !zfs_prop_valid_for_type(prop, zhp->zfs_head_type, B_TRUE)) { *val = zfs_prop_default_numeric(prop); return (-1); } switch (prop) { case ZFS_PROP_ATIME: mntopt_on = MNTOPT_ATIME; mntopt_off = MNTOPT_NOATIME; break; case ZFS_PROP_RELATIME: mntopt_on = MNTOPT_RELATIME; mntopt_off = MNTOPT_NORELATIME; break; case ZFS_PROP_DEVICES: mntopt_on = MNTOPT_DEVICES; mntopt_off = MNTOPT_NODEVICES; break; case ZFS_PROP_EXEC: mntopt_on = MNTOPT_EXEC; mntopt_off = MNTOPT_NOEXEC; break; case ZFS_PROP_READONLY: mntopt_on = MNTOPT_RO; mntopt_off = MNTOPT_RW; break; case ZFS_PROP_SETUID: mntopt_on = MNTOPT_SETUID; mntopt_off = MNTOPT_NOSETUID; break; case ZFS_PROP_XATTR: mntopt_on = MNTOPT_XATTR; mntopt_off = MNTOPT_NOXATTR; break; case ZFS_PROP_NBMAND: mntopt_on = MNTOPT_NBMAND; mntopt_off = MNTOPT_NONBMAND; break; default: break; } /* * Because looking up the mount options is potentially expensive * (iterating over all of /proc/self/mounts), we defer its * calculation until we're looking up a property which requires * its presence. */ if (!zhp->zfs_mntcheck && (mntopt_on != NULL || prop == ZFS_PROP_MOUNTED)) { libzfs_handle_t *hdl = zhp->zfs_hdl; struct mnttab entry; if (libzfs_mnttab_find(hdl, zhp->zfs_name, &entry) == 0) { zhp->zfs_mntopts = zfs_strdup(hdl, entry.mnt_mntopts); if (zhp->zfs_mntopts == NULL) return (-1); } zhp->zfs_mntcheck = B_TRUE; } if (zhp->zfs_mntopts == NULL) mnt.mnt_mntopts = ""; else mnt.mnt_mntopts = zhp->zfs_mntopts; switch (prop) { case ZFS_PROP_ATIME: case ZFS_PROP_RELATIME: case ZFS_PROP_DEVICES: case ZFS_PROP_EXEC: case ZFS_PROP_READONLY: case ZFS_PROP_SETUID: case ZFS_PROP_XATTR: case ZFS_PROP_NBMAND: *val = getprop_uint64(zhp, prop, source); if (received) break; if (hasmntopt(&mnt, mntopt_on) && !*val) { *val = B_TRUE; if (src) *src = ZPROP_SRC_TEMPORARY; } else if (hasmntopt(&mnt, mntopt_off) && *val) { *val = B_FALSE; if (src) *src = ZPROP_SRC_TEMPORARY; } break; case ZFS_PROP_CANMOUNT: case ZFS_PROP_VOLSIZE: case ZFS_PROP_QUOTA: case ZFS_PROP_REFQUOTA: case ZFS_PROP_RESERVATION: case ZFS_PROP_REFRESERVATION: case ZFS_PROP_FILESYSTEM_LIMIT: case ZFS_PROP_SNAPSHOT_LIMIT: case ZFS_PROP_FILESYSTEM_COUNT: case ZFS_PROP_SNAPSHOT_COUNT: *val = getprop_uint64(zhp, prop, source); if (*source == NULL) { /* not default, must be local */ *source = zhp->zfs_name; } break; case ZFS_PROP_MOUNTED: *val = (zhp->zfs_mntopts != NULL); break; case ZFS_PROP_NUMCLONES: *val = zhp->zfs_dmustats.dds_num_clones; break; case ZFS_PROP_VERSION: case ZFS_PROP_NORMALIZE: case ZFS_PROP_UTF8ONLY: case ZFS_PROP_CASE: if (zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0) != 0) return (-1); (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); if (zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_OBJSET_ZPLPROPS, &zc)) { zcmd_free_nvlists(&zc); if (prop == ZFS_PROP_VERSION && zhp->zfs_type == ZFS_TYPE_VOLUME) *val = zfs_prop_default_numeric(prop); return (-1); } if (zcmd_read_dst_nvlist(zhp->zfs_hdl, &zc, &zplprops) != 0 || nvlist_lookup_uint64(zplprops, zfs_prop_to_name(prop), val) != 0) { zcmd_free_nvlists(&zc); return (-1); } nvlist_free(zplprops); zcmd_free_nvlists(&zc); break; case ZFS_PROP_INCONSISTENT: *val = zhp->zfs_dmustats.dds_inconsistent; break; default: switch (zfs_prop_get_type(prop)) { case PROP_TYPE_NUMBER: case PROP_TYPE_INDEX: *val = getprop_uint64(zhp, prop, source); /* * If we tried to use a default value for a * readonly property, it means that it was not * present. Note this only applies to "truly" * readonly properties, not set-once properties * like volblocksize. */ if (zfs_prop_readonly(prop) && !zfs_prop_setonce(prop) && *source != NULL && (*source)[0] == '\0') { *source = NULL; return (-1); } break; case PROP_TYPE_STRING: default: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "cannot get non-numeric property")); return (zfs_error(zhp->zfs_hdl, EZFS_BADPROP, dgettext(TEXT_DOMAIN, "internal error"))); } } return (0); } /* * Calculate the source type, given the raw source string. */ static void get_source(zfs_handle_t *zhp, zprop_source_t *srctype, char *source, char *statbuf, size_t statlen) { if (statbuf == NULL || srctype == NULL || *srctype == ZPROP_SRC_TEMPORARY) { return; } if (source == NULL) { *srctype = ZPROP_SRC_NONE; } else if (source[0] == '\0') { *srctype = ZPROP_SRC_DEFAULT; } else if (strstr(source, ZPROP_SOURCE_VAL_RECVD) != NULL) { *srctype = ZPROP_SRC_RECEIVED; } else { if (strcmp(source, zhp->zfs_name) == 0) { *srctype = ZPROP_SRC_LOCAL; } else { (void) strlcpy(statbuf, source, statlen); *srctype = ZPROP_SRC_INHERITED; } } } int zfs_prop_get_recvd(zfs_handle_t *zhp, const char *propname, char *propbuf, size_t proplen, boolean_t literal) { zfs_prop_t prop; int err = 0; if (zhp->zfs_recvd_props == NULL) if (get_recvd_props_ioctl(zhp) != 0) return (-1); prop = zfs_name_to_prop(propname); if (prop != ZPROP_INVAL) { uint64_t cookie; if (!nvlist_exists(zhp->zfs_recvd_props, propname)) return (-1); zfs_set_recvd_props_mode(zhp, &cookie); err = zfs_prop_get(zhp, prop, propbuf, proplen, NULL, NULL, 0, literal); zfs_unset_recvd_props_mode(zhp, &cookie); } else { nvlist_t *propval; char *recvdval; if (nvlist_lookup_nvlist(zhp->zfs_recvd_props, propname, &propval) != 0) return (-1); verify(nvlist_lookup_string(propval, ZPROP_VALUE, &recvdval) == 0); (void) strlcpy(propbuf, recvdval, proplen); } return (err == 0 ? 0 : -1); } static int get_clones_string(zfs_handle_t *zhp, char *propbuf, size_t proplen) { nvlist_t *value; nvpair_t *pair; value = zfs_get_clones_nvl(zhp); if (value == NULL) return (-1); propbuf[0] = '\0'; for (pair = nvlist_next_nvpair(value, NULL); pair != NULL; pair = nvlist_next_nvpair(value, pair)) { if (propbuf[0] != '\0') (void) strlcat(propbuf, ",", proplen); (void) strlcat(propbuf, nvpair_name(pair), proplen); } return (0); } struct get_clones_arg { uint64_t numclones; nvlist_t *value; const char *origin; char buf[ZFS_MAX_DATASET_NAME_LEN]; }; int get_clones_cb(zfs_handle_t *zhp, void *arg) { struct get_clones_arg *gca = arg; if (gca->numclones == 0) { zfs_close(zhp); return (0); } if (zfs_prop_get(zhp, ZFS_PROP_ORIGIN, gca->buf, sizeof (gca->buf), NULL, NULL, 0, B_TRUE) != 0) goto out; if (strcmp(gca->buf, gca->origin) == 0) { fnvlist_add_boolean(gca->value, zfs_get_name(zhp)); gca->numclones--; } out: (void) zfs_iter_children(zhp, get_clones_cb, gca); zfs_close(zhp); return (0); } nvlist_t * zfs_get_clones_nvl(zfs_handle_t *zhp) { nvlist_t *nv, *value; if (nvlist_lookup_nvlist(zhp->zfs_props, zfs_prop_to_name(ZFS_PROP_CLONES), &nv) != 0) { struct get_clones_arg gca; /* * if this is a snapshot, then the kernel wasn't able * to get the clones. Do it by slowly iterating. */ if (zhp->zfs_type != ZFS_TYPE_SNAPSHOT) return (NULL); if (nvlist_alloc(&nv, NV_UNIQUE_NAME, 0) != 0) return (NULL); if (nvlist_alloc(&value, NV_UNIQUE_NAME, 0) != 0) { nvlist_free(nv); return (NULL); } gca.numclones = zfs_prop_get_int(zhp, ZFS_PROP_NUMCLONES); gca.value = value; gca.origin = zhp->zfs_name; if (gca.numclones != 0) { zfs_handle_t *root; char pool[ZFS_MAX_DATASET_NAME_LEN]; char *cp = pool; /* get the pool name */ (void) strlcpy(pool, zhp->zfs_name, sizeof (pool)); (void) strsep(&cp, "/@"); root = zfs_open(zhp->zfs_hdl, pool, ZFS_TYPE_FILESYSTEM); if (root == NULL) { nvlist_free(nv); nvlist_free(value); return (NULL); } (void) get_clones_cb(root, &gca); } if (gca.numclones != 0 || nvlist_add_nvlist(nv, ZPROP_VALUE, value) != 0 || nvlist_add_nvlist(zhp->zfs_props, zfs_prop_to_name(ZFS_PROP_CLONES), nv) != 0) { nvlist_free(nv); nvlist_free(value); return (NULL); } nvlist_free(nv); nvlist_free(value); verify(0 == nvlist_lookup_nvlist(zhp->zfs_props, zfs_prop_to_name(ZFS_PROP_CLONES), &nv)); } verify(nvlist_lookup_nvlist(nv, ZPROP_VALUE, &value) == 0); return (value); } /* * Accepts a property and value and checks that the value * matches the one found by the channel program. If they are * not equal, print both of them. */ static void zcp_check(zfs_handle_t *zhp, zfs_prop_t prop, uint64_t intval, const char *strval) { if (!zhp->zfs_hdl->libzfs_prop_debug) return; int error; char *poolname = zhp->zpool_hdl->zpool_name; const char *prop_name = zfs_prop_to_name(prop); const char *program = "args = ...\n" "ds = args['dataset']\n" "prop = args['property']\n" "value, setpoint = zfs.get_prop(ds, prop)\n" "return {value=value, setpoint=setpoint}\n"; nvlist_t *outnvl; nvlist_t *retnvl; nvlist_t *argnvl = fnvlist_alloc(); fnvlist_add_string(argnvl, "dataset", zhp->zfs_name); fnvlist_add_string(argnvl, "property", zfs_prop_to_name(prop)); error = lzc_channel_program_nosync(poolname, program, 10 * 1000 * 1000, 10 * 1024 * 1024, argnvl, &outnvl); if (error == 0) { retnvl = fnvlist_lookup_nvlist(outnvl, "return"); if (zfs_prop_get_type(prop) == PROP_TYPE_NUMBER) { int64_t ans; error = nvlist_lookup_int64(retnvl, "value", &ans); if (error != 0) { (void) fprintf(stderr, "%s: zcp check error: " "%u\n", prop_name, error); return; } if (ans != intval) { (void) fprintf(stderr, "%s: zfs found %llu, " "but zcp found %llu\n", prop_name, (u_longlong_t)intval, (u_longlong_t)ans); } } else { char *str_ans; error = nvlist_lookup_string(retnvl, "value", &str_ans); if (error != 0) { (void) fprintf(stderr, "%s: zcp check error: " "%u\n", prop_name, error); return; } if (strcmp(strval, str_ans) != 0) { (void) fprintf(stderr, "%s: zfs found '%s', but zcp found '%s'\n", prop_name, strval, str_ans); } } } else { (void) fprintf(stderr, "%s: zcp check failed, channel program " "error: %u\n", prop_name, error); } nvlist_free(argnvl); nvlist_free(outnvl); } /* * Retrieve a property from the given object. If 'literal' is specified, then * numbers are left as exact values. Otherwise, numbers are converted to a * human-readable form. * * Returns 0 on success, or -1 on error. */ int zfs_prop_get(zfs_handle_t *zhp, zfs_prop_t prop, char *propbuf, size_t proplen, zprop_source_t *src, char *statbuf, size_t statlen, boolean_t literal) { char *source = NULL; uint64_t val; const char *str; const char *strval; boolean_t received = zfs_is_recvd_props_mode(zhp); /* * Check to see if this property applies to our object */ if (!zfs_prop_valid_for_type(prop, zhp->zfs_type, B_FALSE)) return (-1); if (received && zfs_prop_readonly(prop)) return (-1); if (src) *src = ZPROP_SRC_NONE; switch (prop) { case ZFS_PROP_CREATION: /* * 'creation' is a time_t stored in the statistics. We convert * this into a string unless 'literal' is specified. */ { val = getprop_uint64(zhp, prop, &source); time_t time = (time_t)val; struct tm t; if (literal || localtime_r(&time, &t) == NULL || strftime(propbuf, proplen, "%a %b %e %k:%M %Y", &t) == 0) (void) snprintf(propbuf, proplen, "%llu", (u_longlong_t)val); } zcp_check(zhp, prop, val, NULL); break; case ZFS_PROP_MOUNTPOINT: /* * Getting the precise mountpoint can be tricky. * * - for 'none' or 'legacy', return those values. * - for inherited mountpoints, we want to take everything * after our ancestor and append it to the inherited value. * * If the pool has an alternate root, we want to prepend that * root to any values we return. */ str = getprop_string(zhp, prop, &source); if (str[0] == '/') { char buf[MAXPATHLEN]; char *root = buf; const char *relpath; /* * If we inherit the mountpoint, even from a dataset * with a received value, the source will be the path of * the dataset we inherit from. If source is * ZPROP_SOURCE_VAL_RECVD, the received value is not * inherited. */ if (strcmp(source, ZPROP_SOURCE_VAL_RECVD) == 0) { relpath = ""; } else { relpath = zhp->zfs_name + strlen(source); if (relpath[0] == '/') relpath++; } if ((zpool_get_prop(zhp->zpool_hdl, ZPOOL_PROP_ALTROOT, buf, MAXPATHLEN, NULL, B_FALSE)) || (strcmp(root, "-") == 0)) root[0] = '\0'; /* * Special case an alternate root of '/'. This will * avoid having multiple leading slashes in the * mountpoint path. */ if (strcmp(root, "/") == 0) root++; /* * If the mountpoint is '/' then skip over this * if we are obtaining either an alternate root or * an inherited mountpoint. */ if (str[1] == '\0' && (root[0] != '\0' || relpath[0] != '\0')) str++; if (relpath[0] == '\0') (void) snprintf(propbuf, proplen, "%s%s", root, str); else (void) snprintf(propbuf, proplen, "%s%s%s%s", root, str, relpath[0] == '@' ? "" : "/", relpath); } else { /* 'legacy' or 'none' */ (void) strlcpy(propbuf, str, proplen); } zcp_check(zhp, prop, 0, propbuf); break; case ZFS_PROP_ORIGIN: str = getprop_string(zhp, prop, &source); if (str == NULL) return (-1); (void) strlcpy(propbuf, str, proplen); zcp_check(zhp, prop, 0, str); break; case ZFS_PROP_CLONES: if (get_clones_string(zhp, propbuf, proplen) != 0) return (-1); break; case ZFS_PROP_QUOTA: case ZFS_PROP_REFQUOTA: case ZFS_PROP_RESERVATION: case ZFS_PROP_REFRESERVATION: if (get_numeric_property(zhp, prop, src, &source, &val) != 0) return (-1); /* * If quota or reservation is 0, we translate this into 'none' * (unless literal is set), and indicate that it's the default * value. Otherwise, we print the number nicely and indicate * that its set locally. */ if (val == 0) { if (literal) (void) strlcpy(propbuf, "0", proplen); else (void) strlcpy(propbuf, "none", proplen); } else { if (literal) (void) snprintf(propbuf, proplen, "%llu", (u_longlong_t)val); else zfs_nicebytes(val, propbuf, proplen); } zcp_check(zhp, prop, val, NULL); break; case ZFS_PROP_FILESYSTEM_LIMIT: case ZFS_PROP_SNAPSHOT_LIMIT: case ZFS_PROP_FILESYSTEM_COUNT: case ZFS_PROP_SNAPSHOT_COUNT: if (get_numeric_property(zhp, prop, src, &source, &val) != 0) return (-1); /* * If limit is UINT64_MAX, we translate this into 'none' (unless * literal is set), and indicate that it's the default value. * Otherwise, we print the number nicely and indicate that it's * set locally. */ if (literal) { (void) snprintf(propbuf, proplen, "%llu", (u_longlong_t)val); } else if (val == UINT64_MAX) { (void) strlcpy(propbuf, "none", proplen); } else { zfs_nicenum(val, propbuf, proplen); } zcp_check(zhp, prop, val, NULL); break; case ZFS_PROP_REFRATIO: case ZFS_PROP_COMPRESSRATIO: if (get_numeric_property(zhp, prop, src, &source, &val) != 0) return (-1); if (literal) (void) snprintf(propbuf, proplen, "%llu.%02llu", (u_longlong_t)(val / 100), (u_longlong_t)(val % 100)); else (void) snprintf(propbuf, proplen, "%llu.%02llux", (u_longlong_t)(val / 100), (u_longlong_t)(val % 100)); zcp_check(zhp, prop, val, NULL); break; case ZFS_PROP_TYPE: switch (zhp->zfs_type) { case ZFS_TYPE_FILESYSTEM: str = "filesystem"; break; case ZFS_TYPE_VOLUME: str = "volume"; break; case ZFS_TYPE_SNAPSHOT: str = "snapshot"; break; case ZFS_TYPE_BOOKMARK: str = "bookmark"; break; default: abort(); } (void) snprintf(propbuf, proplen, "%s", str); zcp_check(zhp, prop, 0, propbuf); break; case ZFS_PROP_MOUNTED: /* * The 'mounted' property is a pseudo-property that described * whether the filesystem is currently mounted. Even though * it's a boolean value, the typical values of "on" and "off" * don't make sense, so we translate to "yes" and "no". */ if (get_numeric_property(zhp, ZFS_PROP_MOUNTED, src, &source, &val) != 0) return (-1); if (val) (void) strlcpy(propbuf, "yes", proplen); else (void) strlcpy(propbuf, "no", proplen); break; case ZFS_PROP_NAME: /* * The 'name' property is a pseudo-property derived from the * dataset name. It is presented as a real property to simplify * consumers. */ (void) strlcpy(propbuf, zhp->zfs_name, proplen); zcp_check(zhp, prop, 0, propbuf); break; case ZFS_PROP_MLSLABEL: { #ifdef HAVE_MLSLABEL m_label_t *new_sl = NULL; char *ascii = NULL; /* human readable label */ (void) strlcpy(propbuf, getprop_string(zhp, prop, &source), proplen); if (literal || (strcasecmp(propbuf, ZFS_MLSLABEL_DEFAULT) == 0)) break; /* * Try to translate the internal hex string to * human-readable output. If there are any * problems just use the hex string. */ if (str_to_label(propbuf, &new_sl, MAC_LABEL, L_NO_CORRECTION, NULL) == -1) { m_label_free(new_sl); break; } if (label_to_str(new_sl, &ascii, M_LABEL, DEF_NAMES) != 0) { if (ascii) free(ascii); m_label_free(new_sl); break; } m_label_free(new_sl); (void) strlcpy(propbuf, ascii, proplen); free(ascii); #else (void) strlcpy(propbuf, getprop_string(zhp, prop, &source), proplen); #endif /* HAVE_MLSLABEL */ } break; case ZFS_PROP_GUID: case ZFS_PROP_CREATETXG: case ZFS_PROP_OBJSETID: /* * These properties are stored as numbers, but they are * identifiers. * We don't want them to be pretty printed, because pretty * printing mangles the ID into a truncated and useless value. */ if (get_numeric_property(zhp, prop, src, &source, &val) != 0) return (-1); (void) snprintf(propbuf, proplen, "%llu", (u_longlong_t)val); zcp_check(zhp, prop, val, NULL); break; case ZFS_PROP_REFERENCED: case ZFS_PROP_AVAILABLE: case ZFS_PROP_USED: case ZFS_PROP_USEDSNAP: case ZFS_PROP_USEDDS: case ZFS_PROP_USEDREFRESERV: case ZFS_PROP_USEDCHILD: if (get_numeric_property(zhp, prop, src, &source, &val) != 0) return (-1); if (literal) { (void) snprintf(propbuf, proplen, "%llu", (u_longlong_t)val); } else { zfs_nicebytes(val, propbuf, proplen); } zcp_check(zhp, prop, val, NULL); break; default: switch (zfs_prop_get_type(prop)) { case PROP_TYPE_NUMBER: if (get_numeric_property(zhp, prop, src, &source, &val) != 0) { return (-1); } if (literal) { (void) snprintf(propbuf, proplen, "%llu", (u_longlong_t)val); } else { zfs_nicenum(val, propbuf, proplen); } zcp_check(zhp, prop, val, NULL); break; case PROP_TYPE_STRING: str = getprop_string(zhp, prop, &source); if (str == NULL) return (-1); (void) strlcpy(propbuf, str, proplen); zcp_check(zhp, prop, 0, str); break; case PROP_TYPE_INDEX: if (get_numeric_property(zhp, prop, src, &source, &val) != 0) return (-1); if (zfs_prop_index_to_string(prop, val, &strval) != 0) return (-1); (void) strlcpy(propbuf, strval, proplen); zcp_check(zhp, prop, 0, strval); break; default: abort(); } } get_source(zhp, src, source, statbuf, statlen); return (0); } /* * Utility function to get the given numeric property. Does no validation that * the given property is the appropriate type; should only be used with * hard-coded property types. */ uint64_t zfs_prop_get_int(zfs_handle_t *zhp, zfs_prop_t prop) { char *source; uint64_t val = 0; (void) get_numeric_property(zhp, prop, NULL, &source, &val); return (val); } int zfs_prop_set_int(zfs_handle_t *zhp, zfs_prop_t prop, uint64_t val) { char buf[64]; (void) snprintf(buf, sizeof (buf), "%llu", (longlong_t)val); return (zfs_prop_set(zhp, zfs_prop_to_name(prop), buf)); } /* * Similar to zfs_prop_get(), but returns the value as an integer. */ int zfs_prop_get_numeric(zfs_handle_t *zhp, zfs_prop_t prop, uint64_t *value, zprop_source_t *src, char *statbuf, size_t statlen) { char *source; /* * Check to see if this property applies to our object */ if (!zfs_prop_valid_for_type(prop, zhp->zfs_type, B_FALSE)) { return (zfs_error_fmt(zhp->zfs_hdl, EZFS_PROPTYPE, dgettext(TEXT_DOMAIN, "cannot get property '%s'"), zfs_prop_to_name(prop))); } if (src) *src = ZPROP_SRC_NONE; if (get_numeric_property(zhp, prop, src, &source, value) != 0) return (-1); get_source(zhp, src, source, statbuf, statlen); return (0); } #ifdef HAVE_IDMAP static int idmap_id_to_numeric_domain_rid(uid_t id, boolean_t isuser, char **domainp, idmap_rid_t *ridp) { idmap_get_handle_t *get_hdl = NULL; idmap_stat status; int err = EINVAL; if (idmap_get_create(&get_hdl) != IDMAP_SUCCESS) goto out; if (isuser) { err = idmap_get_sidbyuid(get_hdl, id, IDMAP_REQ_FLG_USE_CACHE, domainp, ridp, &status); } else { err = idmap_get_sidbygid(get_hdl, id, IDMAP_REQ_FLG_USE_CACHE, domainp, ridp, &status); } if (err == IDMAP_SUCCESS && idmap_get_mappings(get_hdl) == IDMAP_SUCCESS && status == IDMAP_SUCCESS) err = 0; else err = EINVAL; out: if (get_hdl) idmap_get_destroy(get_hdl); return (err); } #endif /* HAVE_IDMAP */ /* * convert the propname into parameters needed by kernel * Eg: userquota@ahrens -> ZFS_PROP_USERQUOTA, "", 126829 * Eg: userused@matt@domain -> ZFS_PROP_USERUSED, "S-1-123-456", 789 * Eg: groupquota@staff -> ZFS_PROP_GROUPQUOTA, "", 1234 * Eg: groupused@staff -> ZFS_PROP_GROUPUSED, "", 1234 * Eg: projectquota@123 -> ZFS_PROP_PROJECTQUOTA, "", 123 * Eg: projectused@789 -> ZFS_PROP_PROJECTUSED, "", 789 */ static int userquota_propname_decode(const char *propname, boolean_t zoned, zfs_userquota_prop_t *typep, char *domain, int domainlen, uint64_t *ridp) { zfs_userquota_prop_t type; char *cp; boolean_t isuser; boolean_t isgroup; boolean_t isproject; struct passwd *pw; struct group *gr; domain[0] = '\0'; /* Figure out the property type ({user|group|project}{quota|space}) */ for (type = 0; type < ZFS_NUM_USERQUOTA_PROPS; type++) { if (strncmp(propname, zfs_userquota_prop_prefixes[type], strlen(zfs_userquota_prop_prefixes[type])) == 0) break; } if (type == ZFS_NUM_USERQUOTA_PROPS) return (EINVAL); *typep = type; isuser = (type == ZFS_PROP_USERQUOTA || type == ZFS_PROP_USERUSED || type == ZFS_PROP_USEROBJQUOTA || type == ZFS_PROP_USEROBJUSED); isgroup = (type == ZFS_PROP_GROUPQUOTA || type == ZFS_PROP_GROUPUSED || type == ZFS_PROP_GROUPOBJQUOTA || type == ZFS_PROP_GROUPOBJUSED); isproject = (type == ZFS_PROP_PROJECTQUOTA || type == ZFS_PROP_PROJECTUSED || type == ZFS_PROP_PROJECTOBJQUOTA || type == ZFS_PROP_PROJECTOBJUSED); cp = strchr(propname, '@') + 1; if (isuser && (pw = getpwnam(cp)) != NULL) { if (zoned && getzoneid() == GLOBAL_ZONEID) return (ENOENT); *ridp = pw->pw_uid; } else if (isgroup && (gr = getgrnam(cp)) != NULL) { if (zoned && getzoneid() == GLOBAL_ZONEID) return (ENOENT); *ridp = gr->gr_gid; } else if (!isproject && strchr(cp, '@')) { #ifdef HAVE_IDMAP /* * It's a SID name (eg "user@domain") that needs to be * turned into S-1-domainID-RID. */ directory_error_t e; char *numericsid = NULL; char *end; if (zoned && getzoneid() == GLOBAL_ZONEID) return (ENOENT); if (isuser) { e = directory_sid_from_user_name(NULL, cp, &numericsid); } else { e = directory_sid_from_group_name(NULL, cp, &numericsid); } if (e != NULL) { directory_error_free(e); return (ENOENT); } if (numericsid == NULL) return (ENOENT); cp = numericsid; (void) strlcpy(domain, cp, domainlen); cp = strrchr(domain, '-'); *cp = '\0'; cp++; errno = 0; *ridp = strtoull(cp, &end, 10); free(numericsid); if (errno != 0 || *end != '\0') return (EINVAL); #else return (ENOSYS); #endif /* HAVE_IDMAP */ } else { /* It's a user/group/project ID (eg "12345"). */ uid_t id; char *end; id = strtoul(cp, &end, 10); if (*end != '\0') return (EINVAL); if (id > MAXUID && !isproject) { #ifdef HAVE_IDMAP /* It's an ephemeral ID. */ idmap_rid_t rid; char *mapdomain; if (idmap_id_to_numeric_domain_rid(id, isuser, &mapdomain, &rid) != 0) return (ENOENT); (void) strlcpy(domain, mapdomain, domainlen); *ridp = rid; #else return (ENOSYS); #endif /* HAVE_IDMAP */ } else { *ridp = id; } } return (0); } static int zfs_prop_get_userquota_common(zfs_handle_t *zhp, const char *propname, uint64_t *propvalue, zfs_userquota_prop_t *typep) { int err; zfs_cmd_t zc = {"\0"}; (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); err = userquota_propname_decode(propname, zfs_prop_get_int(zhp, ZFS_PROP_ZONED), typep, zc.zc_value, sizeof (zc.zc_value), &zc.zc_guid); zc.zc_objset_type = *typep; if (err) return (err); err = ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_USERSPACE_ONE, &zc); if (err) return (err); *propvalue = zc.zc_cookie; return (0); } int zfs_prop_get_userquota_int(zfs_handle_t *zhp, const char *propname, uint64_t *propvalue) { zfs_userquota_prop_t type; return (zfs_prop_get_userquota_common(zhp, propname, propvalue, &type)); } int zfs_prop_get_userquota(zfs_handle_t *zhp, const char *propname, char *propbuf, int proplen, boolean_t literal) { int err; uint64_t propvalue; zfs_userquota_prop_t type; err = zfs_prop_get_userquota_common(zhp, propname, &propvalue, &type); if (err) return (err); if (literal) { (void) snprintf(propbuf, proplen, "%llu", (u_longlong_t)propvalue); } else if (propvalue == 0 && (type == ZFS_PROP_USERQUOTA || type == ZFS_PROP_GROUPQUOTA || type == ZFS_PROP_USEROBJQUOTA || type == ZFS_PROP_GROUPOBJQUOTA || type == ZFS_PROP_PROJECTQUOTA || type == ZFS_PROP_PROJECTOBJQUOTA)) { (void) strlcpy(propbuf, "none", proplen); } else if (type == ZFS_PROP_USERQUOTA || type == ZFS_PROP_GROUPQUOTA || type == ZFS_PROP_USERUSED || type == ZFS_PROP_GROUPUSED || type == ZFS_PROP_PROJECTUSED || type == ZFS_PROP_PROJECTQUOTA) { zfs_nicebytes(propvalue, propbuf, proplen); } else { zfs_nicenum(propvalue, propbuf, proplen); } return (0); } int zfs_prop_get_written_int(zfs_handle_t *zhp, const char *propname, uint64_t *propvalue) { int err; zfs_cmd_t zc = {"\0"}; const char *snapname; (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); snapname = strchr(propname, '@') + 1; if (strchr(snapname, '@')) { (void) strlcpy(zc.zc_value, snapname, sizeof (zc.zc_value)); } else { /* snapname is the short name, append it to zhp's fsname */ char *cp; (void) strlcpy(zc.zc_value, zhp->zfs_name, sizeof (zc.zc_value)); cp = strchr(zc.zc_value, '@'); if (cp != NULL) *cp = '\0'; (void) strlcat(zc.zc_value, "@", sizeof (zc.zc_value)); (void) strlcat(zc.zc_value, snapname, sizeof (zc.zc_value)); } err = ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_SPACE_WRITTEN, &zc); if (err) return (err); *propvalue = zc.zc_cookie; return (0); } int zfs_prop_get_written(zfs_handle_t *zhp, const char *propname, char *propbuf, int proplen, boolean_t literal) { int err; uint64_t propvalue; err = zfs_prop_get_written_int(zhp, propname, &propvalue); if (err) return (err); if (literal) { (void) snprintf(propbuf, proplen, "%llu", (u_longlong_t)propvalue); } else { zfs_nicebytes(propvalue, propbuf, proplen); } return (0); } /* * Returns the name of the given zfs handle. */ const char * zfs_get_name(const zfs_handle_t *zhp) { return (zhp->zfs_name); } /* * Returns the name of the parent pool for the given zfs handle. */ const char * zfs_get_pool_name(const zfs_handle_t *zhp) { return (zhp->zpool_hdl->zpool_name); } /* * Returns the type of the given zfs handle. */ zfs_type_t zfs_get_type(const zfs_handle_t *zhp) { return (zhp->zfs_type); } /* * Is one dataset name a child dataset of another? * * Needs to handle these cases: * Dataset 1 "a/foo" "a/foo" "a/foo" "a/foo" * Dataset 2 "a/fo" "a/foobar" "a/bar/baz" "a/foo/bar" * Descendant? No. No. No. Yes. */ static boolean_t is_descendant(const char *ds1, const char *ds2) { size_t d1len = strlen(ds1); /* ds2 can't be a descendant if it's smaller */ if (strlen(ds2) < d1len) return (B_FALSE); /* otherwise, compare strings and verify that there's a '/' char */ return (ds2[d1len] == '/' && (strncmp(ds1, ds2, d1len) == 0)); } /* * Given a complete name, return just the portion that refers to the parent. * Will return -1 if there is no parent (path is just the name of the * pool). */ static int parent_name(const char *path, char *buf, size_t buflen) { char *slashp; (void) strlcpy(buf, path, buflen); if ((slashp = strrchr(buf, '/')) == NULL) return (-1); *slashp = '\0'; return (0); } int zfs_parent_name(zfs_handle_t *zhp, char *buf, size_t buflen) { return (parent_name(zfs_get_name(zhp), buf, buflen)); } /* * If accept_ancestor is false, then check to make sure that the given path has * a parent, and that it exists. If accept_ancestor is true, then find the * closest existing ancestor for the given path. In prefixlen return the * length of already existing prefix of the given path. We also fetch the * 'zoned' property, which is used to validate property settings when creating * new datasets. */ static int check_parents(libzfs_handle_t *hdl, const char *path, uint64_t *zoned, boolean_t accept_ancestor, int *prefixlen) { zfs_cmd_t zc = {"\0"}; char parent[ZFS_MAX_DATASET_NAME_LEN]; char *slash; zfs_handle_t *zhp; char errbuf[1024]; uint64_t is_zoned; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create '%s'"), path); /* get parent, and check to see if this is just a pool */ if (parent_name(path, parent, sizeof (parent)) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "missing dataset name")); return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); } /* check to see if the pool exists */ if ((slash = strchr(parent, '/')) == NULL) slash = parent + strlen(parent); (void) strncpy(zc.zc_name, parent, slash - parent); zc.zc_name[slash - parent] = '\0'; if (ioctl(hdl->libzfs_fd, ZFS_IOC_OBJSET_STATS, &zc) != 0 && errno == ENOENT) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "no such pool '%s'"), zc.zc_name); return (zfs_error(hdl, EZFS_NOENT, errbuf)); } /* check to see if the parent dataset exists */ while ((zhp = make_dataset_handle(hdl, parent)) == NULL) { if (errno == ENOENT && accept_ancestor) { /* * Go deeper to find an ancestor, give up on top level. */ if (parent_name(parent, parent, sizeof (parent)) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "no such pool '%s'"), zc.zc_name); return (zfs_error(hdl, EZFS_NOENT, errbuf)); } } else if (errno == ENOENT) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "parent does not exist")); return (zfs_error(hdl, EZFS_NOENT, errbuf)); } else return (zfs_standard_error(hdl, errno, errbuf)); } is_zoned = zfs_prop_get_int(zhp, ZFS_PROP_ZONED); if (zoned != NULL) *zoned = is_zoned; /* we are in a non-global zone, but parent is in the global zone */ if (getzoneid() != GLOBAL_ZONEID && !is_zoned) { (void) zfs_standard_error(hdl, EPERM, errbuf); zfs_close(zhp); return (-1); } /* make sure parent is a filesystem */ if (zfs_get_type(zhp) != ZFS_TYPE_FILESYSTEM) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "parent is not a filesystem")); (void) zfs_error(hdl, EZFS_BADTYPE, errbuf); zfs_close(zhp); return (-1); } zfs_close(zhp); if (prefixlen != NULL) *prefixlen = strlen(parent); return (0); } /* * Finds whether the dataset of the given type(s) exists. */ boolean_t zfs_dataset_exists(libzfs_handle_t *hdl, const char *path, zfs_type_t types) { zfs_handle_t *zhp; if (!zfs_validate_name(hdl, path, types, B_FALSE)) return (B_FALSE); /* * Try to get stats for the dataset, which will tell us if it exists. */ if ((zhp = make_dataset_handle(hdl, path)) != NULL) { int ds_type = zhp->zfs_type; zfs_close(zhp); if (types & ds_type) return (B_TRUE); } return (B_FALSE); } /* * Given a path to 'target', create all the ancestors between * the prefixlen portion of the path, and the target itself. * Fail if the initial prefixlen-ancestor does not already exist. */ int create_parents(libzfs_handle_t *hdl, char *target, int prefixlen) { zfs_handle_t *h; char *cp; const char *opname; /* make sure prefix exists */ cp = target + prefixlen; if (*cp != '/') { assert(strchr(cp, '/') == NULL); h = zfs_open(hdl, target, ZFS_TYPE_FILESYSTEM); } else { *cp = '\0'; h = zfs_open(hdl, target, ZFS_TYPE_FILESYSTEM); *cp = '/'; } if (h == NULL) return (-1); zfs_close(h); /* * Attempt to create, mount, and share any ancestor filesystems, * up to the prefixlen-long one. */ for (cp = target + prefixlen + 1; (cp = strchr(cp, '/')) != NULL; *cp = '/', cp++) { *cp = '\0'; h = make_dataset_handle(hdl, target); if (h) { /* it already exists, nothing to do here */ zfs_close(h); continue; } if (zfs_create(hdl, target, ZFS_TYPE_FILESYSTEM, NULL) != 0) { opname = dgettext(TEXT_DOMAIN, "create"); goto ancestorerr; } h = zfs_open(hdl, target, ZFS_TYPE_FILESYSTEM); if (h == NULL) { opname = dgettext(TEXT_DOMAIN, "open"); goto ancestorerr; } if (zfs_mount(h, NULL, 0) != 0) { opname = dgettext(TEXT_DOMAIN, "mount"); goto ancestorerr; } if (zfs_share(h) != 0) { opname = dgettext(TEXT_DOMAIN, "share"); goto ancestorerr; } zfs_close(h); } return (0); ancestorerr: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "failed to %s ancestor '%s'"), opname, target); return (-1); } /* * Creates non-existing ancestors of the given path. */ int zfs_create_ancestors(libzfs_handle_t *hdl, const char *path) { int prefix; char *path_copy; char errbuf[1024]; int rc = 0; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create '%s'"), path); /* * Check that we are not passing the nesting limit * before we start creating any ancestors. */ if (dataset_nestcheck(path) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "maximum name nesting depth exceeded")); return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); } if (check_parents(hdl, path, NULL, B_TRUE, &prefix) != 0) return (-1); if ((path_copy = strdup(path)) != NULL) { rc = create_parents(hdl, path_copy, prefix); free(path_copy); } if (path_copy == NULL || rc != 0) return (-1); return (0); } /* * Create a new filesystem or volume. */ int zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type, nvlist_t *props) { int ret; uint64_t size = 0; uint64_t blocksize = zfs_prop_default_numeric(ZFS_PROP_VOLBLOCKSIZE); uint64_t zoned; enum lzc_dataset_type ost; zpool_handle_t *zpool_handle; uint8_t *wkeydata = NULL; uint_t wkeylen = 0; char errbuf[1024]; char parent[ZFS_MAX_DATASET_NAME_LEN]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create '%s'"), path); /* validate the path, taking care to note the extended error message */ if (!zfs_validate_name(hdl, path, type, B_TRUE)) return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); if (dataset_nestcheck(path) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "maximum name nesting depth exceeded")); return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); } /* validate parents exist */ if (check_parents(hdl, path, &zoned, B_FALSE, NULL) != 0) return (-1); /* * The failure modes when creating a dataset of a different type over * one that already exists is a little strange. In particular, if you * try to create a dataset on top of an existing dataset, the ioctl() * will return ENOENT, not EEXIST. To prevent this from happening, we * first try to see if the dataset exists. */ if (zfs_dataset_exists(hdl, path, ZFS_TYPE_DATASET)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "dataset already exists")); return (zfs_error(hdl, EZFS_EXISTS, errbuf)); } if (type == ZFS_TYPE_VOLUME) ost = LZC_DATSET_TYPE_ZVOL; else ost = LZC_DATSET_TYPE_ZFS; /* open zpool handle for prop validation */ char pool_path[ZFS_MAX_DATASET_NAME_LEN]; (void) strlcpy(pool_path, path, sizeof (pool_path)); /* truncate pool_path at first slash */ char *p = strchr(pool_path, '/'); if (p != NULL) *p = '\0'; if ((zpool_handle = zpool_open(hdl, pool_path)) == NULL) return (-1); if (props && (props = zfs_valid_proplist(hdl, type, props, zoned, NULL, zpool_handle, B_TRUE, errbuf)) == 0) { zpool_close(zpool_handle); return (-1); } zpool_close(zpool_handle); if (type == ZFS_TYPE_VOLUME) { /* * If we are creating a volume, the size and block size must * satisfy a few restraints. First, the blocksize must be a * valid block size between SPA_{MIN,MAX}BLOCKSIZE. Second, the * volsize must be a multiple of the block size, and cannot be * zero. */ if (props == NULL || nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_VOLSIZE), &size) != 0) { nvlist_free(props); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "missing volume size")); return (zfs_error(hdl, EZFS_BADPROP, errbuf)); } if ((ret = nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_VOLBLOCKSIZE), &blocksize)) != 0) { if (ret == ENOENT) { blocksize = zfs_prop_default_numeric( ZFS_PROP_VOLBLOCKSIZE); } else { nvlist_free(props); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "missing volume block size")); return (zfs_error(hdl, EZFS_BADPROP, errbuf)); } } if (size == 0) { nvlist_free(props); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "volume size cannot be zero")); return (zfs_error(hdl, EZFS_BADPROP, errbuf)); } if (size % blocksize != 0) { nvlist_free(props); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "volume size must be a multiple of volume block " "size")); return (zfs_error(hdl, EZFS_BADPROP, errbuf)); } } (void) parent_name(path, parent, sizeof (parent)); if (zfs_crypto_create(hdl, parent, props, NULL, B_TRUE, &wkeydata, &wkeylen) != 0) { nvlist_free(props); return (zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf)); } /* create the dataset */ ret = lzc_create(path, ost, props, wkeydata, wkeylen); nvlist_free(props); if (wkeydata != NULL) free(wkeydata); /* check for failure */ if (ret != 0) { switch (errno) { case ENOENT: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "no such parent '%s'"), parent); return (zfs_error(hdl, EZFS_NOENT, errbuf)); case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded to set this " "property or value")); return (zfs_error(hdl, EZFS_BADVERSION, errbuf)); case EACCES: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "encryption root's key is not loaded " "or provided")); return (zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf)); case ERANGE: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid property value(s) specified")); return (zfs_error(hdl, EZFS_BADPROP, errbuf)); #ifdef _ILP32 case EOVERFLOW: /* * This platform can't address a volume this big. */ if (type == ZFS_TYPE_VOLUME) return (zfs_error(hdl, EZFS_VOLTOOBIG, errbuf)); #endif /* FALLTHROUGH */ default: return (zfs_standard_error(hdl, errno, errbuf)); } } return (0); } /* * Destroys the given dataset. The caller must make sure that the filesystem * isn't mounted, and that there are no active dependents. If the file system * does not exist this function does nothing. */ int zfs_destroy(zfs_handle_t *zhp, boolean_t defer) { int error; if (zhp->zfs_type != ZFS_TYPE_SNAPSHOT && defer) return (EINVAL); if (zhp->zfs_type == ZFS_TYPE_BOOKMARK) { nvlist_t *nv = fnvlist_alloc(); fnvlist_add_boolean(nv, zhp->zfs_name); error = lzc_destroy_bookmarks(nv, NULL); fnvlist_free(nv); if (error != 0) { return (zfs_standard_error_fmt(zhp->zfs_hdl, error, dgettext(TEXT_DOMAIN, "cannot destroy '%s'"), zhp->zfs_name)); } return (0); } if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) { nvlist_t *nv = fnvlist_alloc(); fnvlist_add_boolean(nv, zhp->zfs_name); error = lzc_destroy_snaps(nv, defer, NULL); fnvlist_free(nv); } else { error = lzc_destroy(zhp->zfs_name); } if (error != 0 && error != ENOENT) { return (zfs_standard_error_fmt(zhp->zfs_hdl, errno, dgettext(TEXT_DOMAIN, "cannot destroy '%s'"), zhp->zfs_name)); } remove_mountpoint(zhp); return (0); } struct destroydata { nvlist_t *nvl; const char *snapname; }; static int zfs_check_snap_cb(zfs_handle_t *zhp, void *arg) { struct destroydata *dd = arg; char name[ZFS_MAX_DATASET_NAME_LEN]; int rv = 0; if (snprintf(name, sizeof (name), "%s@%s", zhp->zfs_name, dd->snapname) >= sizeof (name)) return (EINVAL); if (lzc_exists(name)) verify(nvlist_add_boolean(dd->nvl, name) == 0); rv = zfs_iter_filesystems(zhp, zfs_check_snap_cb, dd); zfs_close(zhp); return (rv); } /* * Destroys all snapshots with the given name in zhp & descendants. */ int zfs_destroy_snaps(zfs_handle_t *zhp, char *snapname, boolean_t defer) { int ret; struct destroydata dd = { 0 }; dd.snapname = snapname; verify(nvlist_alloc(&dd.nvl, NV_UNIQUE_NAME, 0) == 0); (void) zfs_check_snap_cb(zfs_handle_dup(zhp), &dd); if (nvlist_empty(dd.nvl)) { ret = zfs_standard_error_fmt(zhp->zfs_hdl, ENOENT, dgettext(TEXT_DOMAIN, "cannot destroy '%s@%s'"), zhp->zfs_name, snapname); } else { ret = zfs_destroy_snaps_nvl(zhp->zfs_hdl, dd.nvl, defer); } nvlist_free(dd.nvl); return (ret); } /* * Destroys all the snapshots named in the nvlist. */ int zfs_destroy_snaps_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, boolean_t defer) { int ret; nvlist_t *errlist = NULL; nvpair_t *pair; ret = lzc_destroy_snaps(snaps, defer, &errlist); if (ret == 0) { nvlist_free(errlist); return (0); } if (nvlist_empty(errlist)) { char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot destroy snapshots")); ret = zfs_standard_error(hdl, ret, errbuf); } for (pair = nvlist_next_nvpair(errlist, NULL); pair != NULL; pair = nvlist_next_nvpair(errlist, pair)) { char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot destroy snapshot %s"), nvpair_name(pair)); switch (fnvpair_value_int32(pair)) { case EEXIST: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "snapshot is cloned")); ret = zfs_error(hdl, EZFS_EXISTS, errbuf); break; default: ret = zfs_standard_error(hdl, errno, errbuf); break; } } nvlist_free(errlist); return (ret); } /* * Clones the given dataset. The target must be of the same type as the source. */ int zfs_clone(zfs_handle_t *zhp, const char *target, nvlist_t *props) { char parent[ZFS_MAX_DATASET_NAME_LEN]; int ret; char errbuf[1024]; libzfs_handle_t *hdl = zhp->zfs_hdl; uint64_t zoned; assert(zhp->zfs_type == ZFS_TYPE_SNAPSHOT); (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create '%s'"), target); /* validate the target/clone name */ if (!zfs_validate_name(hdl, target, ZFS_TYPE_FILESYSTEM, B_TRUE)) return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); /* validate parents exist */ if (check_parents(hdl, target, &zoned, B_FALSE, NULL) != 0) return (-1); (void) parent_name(target, parent, sizeof (parent)); /* do the clone */ if (props) { zfs_type_t type; if (ZFS_IS_VOLUME(zhp)) { type = ZFS_TYPE_VOLUME; } else { type = ZFS_TYPE_FILESYSTEM; } if ((props = zfs_valid_proplist(hdl, type, props, zoned, zhp, zhp->zpool_hdl, B_TRUE, errbuf)) == NULL) return (-1); if (zfs_fix_auto_resv(zhp, props) == -1) { nvlist_free(props); return (-1); } } if (zfs_crypto_clone_check(hdl, zhp, parent, props) != 0) { nvlist_free(props); return (zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf)); } ret = lzc_clone(target, zhp->zfs_name, props); nvlist_free(props); if (ret != 0) { switch (errno) { case ENOENT: /* * The parent doesn't exist. We should have caught this * above, but there may a race condition that has since * destroyed the parent. * * At this point, we don't know whether it's the source * that doesn't exist anymore, or whether the target * dataset doesn't exist. */ zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "no such parent '%s'"), parent); return (zfs_error(zhp->zfs_hdl, EZFS_NOENT, errbuf)); case EXDEV: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "source and target pools differ")); return (zfs_error(zhp->zfs_hdl, EZFS_CROSSTARGET, errbuf)); default: return (zfs_standard_error(zhp->zfs_hdl, errno, errbuf)); } } return (ret); } /* * Promotes the given clone fs to be the clone parent. */ int zfs_promote(zfs_handle_t *zhp) { libzfs_handle_t *hdl = zhp->zfs_hdl; char snapname[ZFS_MAX_DATASET_NAME_LEN]; int ret; char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot promote '%s'"), zhp->zfs_name); if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "snapshots can not be promoted")); return (zfs_error(hdl, EZFS_BADTYPE, errbuf)); } if (zhp->zfs_dmustats.dds_origin[0] == '\0') { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "not a cloned filesystem")); return (zfs_error(hdl, EZFS_BADTYPE, errbuf)); } if (!zfs_validate_name(hdl, zhp->zfs_name, zhp->zfs_type, B_TRUE)) return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); ret = lzc_promote(zhp->zfs_name, snapname, sizeof (snapname)); if (ret != 0) { switch (ret) { case EACCES: /* * Promoting encrypted dataset outside its * encryption root. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot promote dataset outside its " "encryption root")); return (zfs_error(hdl, EZFS_EXISTS, errbuf)); case EEXIST: /* There is a conflicting snapshot name. */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "conflicting snapshot '%s' from parent '%s'"), snapname, zhp->zfs_dmustats.dds_origin); return (zfs_error(hdl, EZFS_EXISTS, errbuf)); default: return (zfs_standard_error(hdl, ret, errbuf)); } } return (ret); } typedef struct snapdata { nvlist_t *sd_nvl; const char *sd_snapname; } snapdata_t; static int zfs_snapshot_cb(zfs_handle_t *zhp, void *arg) { snapdata_t *sd = arg; char name[ZFS_MAX_DATASET_NAME_LEN]; int rv = 0; if (zfs_prop_get_int(zhp, ZFS_PROP_INCONSISTENT) == 0) { if (snprintf(name, sizeof (name), "%s@%s", zfs_get_name(zhp), sd->sd_snapname) >= sizeof (name)) return (EINVAL); fnvlist_add_boolean(sd->sd_nvl, name); rv = zfs_iter_filesystems(zhp, zfs_snapshot_cb, sd); } zfs_close(zhp); return (rv); } int zfs_remap_indirects(libzfs_handle_t *hdl, const char *fs) { int err; char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot remap dataset '%s'"), fs); err = lzc_remap(fs); if (err != 0) { switch (err) { case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded")); (void) zfs_error(hdl, EZFS_BADVERSION, errbuf); break; case EINVAL: (void) zfs_error(hdl, EZFS_BADTYPE, errbuf); break; default: (void) zfs_standard_error(hdl, err, errbuf); break; } } return (err); } /* * Creates snapshots. The keys in the snaps nvlist are the snapshots to be * created. */ int zfs_snapshot_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, nvlist_t *props) { int ret; char errbuf[1024]; nvpair_t *elem; nvlist_t *errors; zpool_handle_t *zpool_hdl; char pool[ZFS_MAX_DATASET_NAME_LEN]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create snapshots ")); elem = NULL; while ((elem = nvlist_next_nvpair(snaps, elem)) != NULL) { const char *snapname = nvpair_name(elem); /* validate the target name */ if (!zfs_validate_name(hdl, snapname, ZFS_TYPE_SNAPSHOT, B_TRUE)) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create snapshot '%s'"), snapname); return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); } } /* * get pool handle for prop validation. assumes all snaps are in the * same pool, as does lzc_snapshot (below). */ elem = nvlist_next_nvpair(snaps, NULL); (void) strlcpy(pool, nvpair_name(elem), sizeof (pool)); pool[strcspn(pool, "/@")] = '\0'; zpool_hdl = zpool_open(hdl, pool); if (zpool_hdl == NULL) return (-1); if (props != NULL && (props = zfs_valid_proplist(hdl, ZFS_TYPE_SNAPSHOT, props, B_FALSE, NULL, zpool_hdl, B_FALSE, errbuf)) == NULL) { zpool_close(zpool_hdl); return (-1); } zpool_close(zpool_hdl); ret = lzc_snapshot(snaps, props, &errors); if (ret != 0) { boolean_t printed = B_FALSE; for (elem = nvlist_next_nvpair(errors, NULL); elem != NULL; elem = nvlist_next_nvpair(errors, elem)) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot create snapshot '%s'"), nvpair_name(elem)); (void) zfs_standard_error(hdl, fnvpair_value_int32(elem), errbuf); printed = B_TRUE; } if (!printed) { switch (ret) { case EXDEV: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "multiple snapshots of same " "fs not allowed")); (void) zfs_error(hdl, EZFS_EXISTS, errbuf); break; default: (void) zfs_standard_error(hdl, ret, errbuf); } } } nvlist_free(props); nvlist_free(errors); return (ret); } int zfs_snapshot(libzfs_handle_t *hdl, const char *path, boolean_t recursive, nvlist_t *props) { int ret; snapdata_t sd = { 0 }; char fsname[ZFS_MAX_DATASET_NAME_LEN]; char *cp; zfs_handle_t *zhp; char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot snapshot %s"), path); if (!zfs_validate_name(hdl, path, ZFS_TYPE_SNAPSHOT, B_TRUE)) return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); (void) strlcpy(fsname, path, sizeof (fsname)); cp = strchr(fsname, '@'); *cp = '\0'; sd.sd_snapname = cp + 1; if ((zhp = zfs_open(hdl, fsname, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME)) == NULL) { return (-1); } verify(nvlist_alloc(&sd.sd_nvl, NV_UNIQUE_NAME, 0) == 0); if (recursive) { (void) zfs_snapshot_cb(zfs_handle_dup(zhp), &sd); } else { fnvlist_add_boolean(sd.sd_nvl, path); } ret = zfs_snapshot_nvl(hdl, sd.sd_nvl, props); nvlist_free(sd.sd_nvl); zfs_close(zhp); return (ret); } /* * Destroy any more recent snapshots. We invoke this callback on any dependents * of the snapshot first. If the 'cb_dependent' member is non-zero, then this * is a dependent and we should just destroy it without checking the transaction * group. */ typedef struct rollback_data { const char *cb_target; /* the snapshot */ uint64_t cb_create; /* creation time reference */ boolean_t cb_error; boolean_t cb_force; } rollback_data_t; static int rollback_destroy_dependent(zfs_handle_t *zhp, void *data) { rollback_data_t *cbp = data; prop_changelist_t *clp; /* We must destroy this clone; first unmount it */ clp = changelist_gather(zhp, ZFS_PROP_NAME, 0, cbp->cb_force ? MS_FORCE: 0); if (clp == NULL || changelist_prefix(clp) != 0) { cbp->cb_error = B_TRUE; zfs_close(zhp); return (0); } if (zfs_destroy(zhp, B_FALSE) != 0) cbp->cb_error = B_TRUE; else changelist_remove(clp, zhp->zfs_name); (void) changelist_postfix(clp); changelist_free(clp); zfs_close(zhp); return (0); } static int rollback_destroy(zfs_handle_t *zhp, void *data) { rollback_data_t *cbp = data; if (zfs_prop_get_int(zhp, ZFS_PROP_CREATETXG) > cbp->cb_create) { cbp->cb_error |= zfs_iter_dependents(zhp, B_FALSE, rollback_destroy_dependent, cbp); cbp->cb_error |= zfs_destroy(zhp, B_FALSE); } zfs_close(zhp); return (0); } /* * Given a dataset, rollback to a specific snapshot, discarding any * data changes since then and making it the active dataset. * * Any snapshots and bookmarks more recent than the target are * destroyed, along with their dependents (i.e. clones). */ int zfs_rollback(zfs_handle_t *zhp, zfs_handle_t *snap, boolean_t force) { rollback_data_t cb = { 0 }; int err; boolean_t restore_resv = 0; uint64_t old_volsize = 0, new_volsize; zfs_prop_t resv_prop = { 0 }; uint64_t min_txg = 0; assert(zhp->zfs_type == ZFS_TYPE_FILESYSTEM || zhp->zfs_type == ZFS_TYPE_VOLUME); /* * Destroy all recent snapshots and their dependents. */ cb.cb_force = force; cb.cb_target = snap->zfs_name; cb.cb_create = zfs_prop_get_int(snap, ZFS_PROP_CREATETXG); if (cb.cb_create > 0) min_txg = cb.cb_create; (void) zfs_iter_snapshots(zhp, B_FALSE, rollback_destroy, &cb, min_txg, 0); (void) zfs_iter_bookmarks(zhp, rollback_destroy, &cb); if (cb.cb_error) return (-1); /* * Now that we have verified that the snapshot is the latest, * rollback to the given snapshot. */ if (zhp->zfs_type == ZFS_TYPE_VOLUME) { if (zfs_which_resv_prop(zhp, &resv_prop) < 0) return (-1); old_volsize = zfs_prop_get_int(zhp, ZFS_PROP_VOLSIZE); restore_resv = (old_volsize == zfs_prop_get_int(zhp, resv_prop)); } /* * Pass both the filesystem and the wanted snapshot names, * we would get an error back if the snapshot is destroyed or * a new snapshot is created before this request is processed. */ err = lzc_rollback_to(zhp->zfs_name, snap->zfs_name); if (err != 0) { char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot rollback '%s'"), zhp->zfs_name); switch (err) { case EEXIST: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "there is a snapshot or bookmark more recent " "than '%s'"), snap->zfs_name); (void) zfs_error(zhp->zfs_hdl, EZFS_EXISTS, errbuf); break; case ESRCH: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "'%s' is not found among snapshots of '%s'"), snap->zfs_name, zhp->zfs_name); (void) zfs_error(zhp->zfs_hdl, EZFS_NOENT, errbuf); break; case EINVAL: (void) zfs_error(zhp->zfs_hdl, EZFS_BADTYPE, errbuf); break; default: (void) zfs_standard_error(zhp->zfs_hdl, err, errbuf); } return (err); } /* * For volumes, if the pre-rollback volsize matched the pre- * rollback reservation and the volsize has changed then set * the reservation property to the post-rollback volsize. * Make a new handle since the rollback closed the dataset. */ if ((zhp->zfs_type == ZFS_TYPE_VOLUME) && (zhp = make_dataset_handle(zhp->zfs_hdl, zhp->zfs_name))) { if (restore_resv) { new_volsize = zfs_prop_get_int(zhp, ZFS_PROP_VOLSIZE); if (old_volsize != new_volsize) err = zfs_prop_set_int(zhp, resv_prop, new_volsize); } zfs_close(zhp); } return (err); } /* * Renames the given dataset. */ int zfs_rename(zfs_handle_t *zhp, const char *target, boolean_t recursive, boolean_t force_unmount) { int ret = 0; zfs_cmd_t zc = {"\0"}; char *delim; prop_changelist_t *cl = NULL; char parent[ZFS_MAX_DATASET_NAME_LEN]; libzfs_handle_t *hdl = zhp->zfs_hdl; char errbuf[1024]; /* if we have the same exact name, just return success */ if (strcmp(zhp->zfs_name, target) == 0) return (0); (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot rename to '%s'"), target); /* make sure source name is valid */ if (!zfs_validate_name(hdl, zhp->zfs_name, zhp->zfs_type, B_TRUE)) return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); /* * Make sure the target name is valid */ if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) { if ((strchr(target, '@') == NULL) || *target == '@') { /* * Snapshot target name is abbreviated, * reconstruct full dataset name */ (void) strlcpy(parent, zhp->zfs_name, sizeof (parent)); delim = strchr(parent, '@'); if (strchr(target, '@') == NULL) *(++delim) = '\0'; else *delim = '\0'; (void) strlcat(parent, target, sizeof (parent)); target = parent; } else { /* * Make sure we're renaming within the same dataset. */ delim = strchr(target, '@'); if (strncmp(zhp->zfs_name, target, delim - target) != 0 || zhp->zfs_name[delim - target] != '@') { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "snapshots must be part of same " "dataset")); return (zfs_error(hdl, EZFS_CROSSTARGET, errbuf)); } } if (!zfs_validate_name(hdl, target, zhp->zfs_type, B_TRUE)) return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); } else { if (recursive) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "recursive rename must be a snapshot")); return (zfs_error(hdl, EZFS_BADTYPE, errbuf)); } if (!zfs_validate_name(hdl, target, zhp->zfs_type, B_TRUE)) return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); /* validate parents */ if (check_parents(hdl, target, NULL, B_FALSE, NULL) != 0) return (-1); /* make sure we're in the same pool */ verify((delim = strchr(target, '/')) != NULL); if (strncmp(zhp->zfs_name, target, delim - target) != 0 || zhp->zfs_name[delim - target] != '/') { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "datasets must be within same pool")); return (zfs_error(hdl, EZFS_CROSSTARGET, errbuf)); } /* new name cannot be a child of the current dataset name */ if (is_descendant(zhp->zfs_name, target)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "New dataset name cannot be a descendant of " "current dataset name")); return (zfs_error(hdl, EZFS_INVALIDNAME, errbuf)); } } (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot rename '%s'"), zhp->zfs_name); if (getzoneid() == GLOBAL_ZONEID && zfs_prop_get_int(zhp, ZFS_PROP_ZONED)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "dataset is used in a non-global zone")); return (zfs_error(hdl, EZFS_ZONED, errbuf)); } if (recursive) { zfs_handle_t *zhrp; char *parentname = zfs_strdup(zhp->zfs_hdl, zhp->zfs_name); if (parentname == NULL) { ret = -1; goto error; } delim = strchr(parentname, '@'); *delim = '\0'; zhrp = zfs_open(zhp->zfs_hdl, parentname, ZFS_TYPE_DATASET); free(parentname); if (zhrp == NULL) { ret = -1; goto error; } zfs_close(zhrp); } else if (zhp->zfs_type != ZFS_TYPE_SNAPSHOT) { if ((cl = changelist_gather(zhp, ZFS_PROP_NAME, CL_GATHER_ITER_MOUNTED, force_unmount ? MS_FORCE : 0)) == NULL) return (-1); if (changelist_haszonedchild(cl)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "child dataset with inherited mountpoint is used " "in a non-global zone")); (void) zfs_error(hdl, EZFS_ZONED, errbuf); ret = -1; goto error; } if ((ret = changelist_prefix(cl)) != 0) goto error; } if (ZFS_IS_VOLUME(zhp)) zc.zc_objset_type = DMU_OST_ZVOL; else zc.zc_objset_type = DMU_OST_ZFS; (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); (void) strlcpy(zc.zc_value, target, sizeof (zc.zc_value)); zc.zc_cookie = recursive; if ((ret = zfs_ioctl(zhp->zfs_hdl, ZFS_IOC_RENAME, &zc)) != 0) { /* * if it was recursive, the one that actually failed will * be in zc.zc_name */ (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot rename '%s'"), zc.zc_name); if (recursive && errno == EEXIST) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "a child dataset already has a snapshot " "with the new name")); (void) zfs_error(hdl, EZFS_EXISTS, errbuf); } else if (errno == EACCES) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "cannot move encrypted child outside of " "its encryption root")); (void) zfs_error(hdl, EZFS_CRYPTOFAILED, errbuf); } else { (void) zfs_standard_error(zhp->zfs_hdl, errno, errbuf); } /* * On failure, we still want to remount any filesystems that * were previously mounted, so we don't alter the system state. */ if (cl != NULL) (void) changelist_postfix(cl); } else { if (cl != NULL) { changelist_rename(cl, zfs_get_name(zhp), target); ret = changelist_postfix(cl); } } error: if (cl != NULL) { changelist_free(cl); } return (ret); } nvlist_t * zfs_get_all_props(zfs_handle_t *zhp) { return (zhp->zfs_props); } nvlist_t * zfs_get_recvd_props(zfs_handle_t *zhp) { if (zhp->zfs_recvd_props == NULL) if (get_recvd_props_ioctl(zhp) != 0) return (NULL); return (zhp->zfs_recvd_props); } nvlist_t * zfs_get_user_props(zfs_handle_t *zhp) { return (zhp->zfs_user_props); } /* * This function is used by 'zfs list' to determine the exact set of columns to * display, and their maximum widths. This does two main things: * * - If this is a list of all properties, then expand the list to include * all native properties, and set a flag so that for each dataset we look * for new unique user properties and add them to the list. * * - For non fixed-width properties, keep track of the maximum width seen * so that we can size the column appropriately. If the user has * requested received property values, we also need to compute the width * of the RECEIVED column. */ int zfs_expand_proplist(zfs_handle_t *zhp, zprop_list_t **plp, boolean_t received, boolean_t literal) { libzfs_handle_t *hdl = zhp->zfs_hdl; zprop_list_t *entry; zprop_list_t **last, **start; nvlist_t *userprops, *propval; nvpair_t *elem; char *strval; char buf[ZFS_MAXPROPLEN]; if (zprop_expand_list(hdl, plp, ZFS_TYPE_DATASET) != 0) return (-1); userprops = zfs_get_user_props(zhp); entry = *plp; if (entry->pl_all && nvlist_next_nvpair(userprops, NULL) != NULL) { /* * Go through and add any user properties as necessary. We * start by incrementing our list pointer to the first * non-native property. */ start = plp; while (*start != NULL) { if ((*start)->pl_prop == ZPROP_INVAL) break; start = &(*start)->pl_next; } elem = NULL; while ((elem = nvlist_next_nvpair(userprops, elem)) != NULL) { /* * See if we've already found this property in our list. */ for (last = start; *last != NULL; last = &(*last)->pl_next) { if (strcmp((*last)->pl_user_prop, nvpair_name(elem)) == 0) break; } if (*last == NULL) { if ((entry = zfs_alloc(hdl, sizeof (zprop_list_t))) == NULL || ((entry->pl_user_prop = zfs_strdup(hdl, nvpair_name(elem)))) == NULL) { free(entry); return (-1); } entry->pl_prop = ZPROP_INVAL; entry->pl_width = strlen(nvpair_name(elem)); entry->pl_all = B_TRUE; *last = entry; } } } /* * Now go through and check the width of any non-fixed columns */ for (entry = *plp; entry != NULL; entry = entry->pl_next) { if (entry->pl_fixed && !literal) continue; if (entry->pl_prop != ZPROP_INVAL) { if (zfs_prop_get(zhp, entry->pl_prop, buf, sizeof (buf), NULL, NULL, 0, literal) == 0) { if (strlen(buf) > entry->pl_width) entry->pl_width = strlen(buf); } if (received && zfs_prop_get_recvd(zhp, zfs_prop_to_name(entry->pl_prop), buf, sizeof (buf), literal) == 0) if (strlen(buf) > entry->pl_recvd_width) entry->pl_recvd_width = strlen(buf); } else { if (nvlist_lookup_nvlist(userprops, entry->pl_user_prop, &propval) == 0) { verify(nvlist_lookup_string(propval, ZPROP_VALUE, &strval) == 0); if (strlen(strval) > entry->pl_width) entry->pl_width = strlen(strval); } if (received && zfs_prop_get_recvd(zhp, entry->pl_user_prop, buf, sizeof (buf), literal) == 0) if (strlen(buf) > entry->pl_recvd_width) entry->pl_recvd_width = strlen(buf); } } return (0); } void zfs_prune_proplist(zfs_handle_t *zhp, uint8_t *props) { nvpair_t *curr; nvpair_t *next; /* * Keep a reference to the props-table against which we prune the * properties. */ zhp->zfs_props_table = props; curr = nvlist_next_nvpair(zhp->zfs_props, NULL); while (curr) { zfs_prop_t zfs_prop = zfs_name_to_prop(nvpair_name(curr)); next = nvlist_next_nvpair(zhp->zfs_props, curr); /* * User properties will result in ZPROP_INVAL, and since we * only know how to prune standard ZFS properties, we always * leave these in the list. This can also happen if we * encounter an unknown DSL property (when running older * software, for example). */ if (zfs_prop != ZPROP_INVAL && props[zfs_prop] == B_FALSE) (void) nvlist_remove(zhp->zfs_props, nvpair_name(curr), nvpair_type(curr)); curr = next; } } static int zfs_smb_acl_mgmt(libzfs_handle_t *hdl, char *dataset, char *path, zfs_smb_acl_op_t cmd, char *resource1, char *resource2) { zfs_cmd_t zc = {"\0"}; nvlist_t *nvlist = NULL; int error; (void) strlcpy(zc.zc_name, dataset, sizeof (zc.zc_name)); (void) strlcpy(zc.zc_value, path, sizeof (zc.zc_value)); zc.zc_cookie = (uint64_t)cmd; if (cmd == ZFS_SMB_ACL_RENAME) { if (nvlist_alloc(&nvlist, NV_UNIQUE_NAME, 0) != 0) { (void) no_memory(hdl); return (0); } } switch (cmd) { case ZFS_SMB_ACL_ADD: case ZFS_SMB_ACL_REMOVE: (void) strlcpy(zc.zc_string, resource1, sizeof (zc.zc_string)); break; case ZFS_SMB_ACL_RENAME: if (nvlist_add_string(nvlist, ZFS_SMB_ACL_SRC, resource1) != 0) { (void) no_memory(hdl); return (-1); } if (nvlist_add_string(nvlist, ZFS_SMB_ACL_TARGET, resource2) != 0) { (void) no_memory(hdl); return (-1); } if (zcmd_write_src_nvlist(hdl, &zc, nvlist) != 0) { nvlist_free(nvlist); return (-1); } break; case ZFS_SMB_ACL_PURGE: break; default: return (-1); } error = ioctl(hdl->libzfs_fd, ZFS_IOC_SMB_ACL, &zc); nvlist_free(nvlist); return (error); } int zfs_smb_acl_add(libzfs_handle_t *hdl, char *dataset, char *path, char *resource) { return (zfs_smb_acl_mgmt(hdl, dataset, path, ZFS_SMB_ACL_ADD, resource, NULL)); } int zfs_smb_acl_remove(libzfs_handle_t *hdl, char *dataset, char *path, char *resource) { return (zfs_smb_acl_mgmt(hdl, dataset, path, ZFS_SMB_ACL_REMOVE, resource, NULL)); } int zfs_smb_acl_purge(libzfs_handle_t *hdl, char *dataset, char *path) { return (zfs_smb_acl_mgmt(hdl, dataset, path, ZFS_SMB_ACL_PURGE, NULL, NULL)); } int zfs_smb_acl_rename(libzfs_handle_t *hdl, char *dataset, char *path, char *oldname, char *newname) { return (zfs_smb_acl_mgmt(hdl, dataset, path, ZFS_SMB_ACL_RENAME, oldname, newname)); } int zfs_userspace(zfs_handle_t *zhp, zfs_userquota_prop_t type, zfs_userspace_cb_t func, void *arg) { zfs_cmd_t zc = {"\0"}; zfs_useracct_t buf[100]; libzfs_handle_t *hdl = zhp->zfs_hdl; int ret; (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); zc.zc_objset_type = type; zc.zc_nvlist_dst = (uintptr_t)buf; for (;;) { zfs_useracct_t *zua = buf; zc.zc_nvlist_dst_size = sizeof (buf); if (zfs_ioctl(hdl, ZFS_IOC_USERSPACE_MANY, &zc) != 0) { char errbuf[1024]; if ((errno == ENOTSUP && (type == ZFS_PROP_USEROBJUSED || type == ZFS_PROP_GROUPOBJUSED || type == ZFS_PROP_USEROBJQUOTA || type == ZFS_PROP_GROUPOBJQUOTA || type == ZFS_PROP_PROJECTOBJUSED || type == ZFS_PROP_PROJECTOBJQUOTA || type == ZFS_PROP_PROJECTUSED || type == ZFS_PROP_PROJECTQUOTA))) break; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot get used/quota for %s"), zc.zc_name); return (zfs_standard_error_fmt(hdl, errno, errbuf)); } if (zc.zc_nvlist_dst_size == 0) break; while (zc.zc_nvlist_dst_size > 0) { if ((ret = func(arg, zua->zu_domain, zua->zu_rid, zua->zu_space)) != 0) return (ret); zua++; zc.zc_nvlist_dst_size -= sizeof (zfs_useracct_t); } } return (0); } struct holdarg { nvlist_t *nvl; const char *snapname; const char *tag; boolean_t recursive; int error; }; static int zfs_hold_one(zfs_handle_t *zhp, void *arg) { struct holdarg *ha = arg; char name[ZFS_MAX_DATASET_NAME_LEN]; int rv = 0; if (snprintf(name, sizeof (name), "%s@%s", zhp->zfs_name, ha->snapname) >= sizeof (name)) return (EINVAL); if (lzc_exists(name)) fnvlist_add_string(ha->nvl, name, ha->tag); if (ha->recursive) rv = zfs_iter_filesystems(zhp, zfs_hold_one, ha); zfs_close(zhp); return (rv); } int zfs_hold(zfs_handle_t *zhp, const char *snapname, const char *tag, boolean_t recursive, int cleanup_fd) { int ret; struct holdarg ha; ha.nvl = fnvlist_alloc(); ha.snapname = snapname; ha.tag = tag; ha.recursive = recursive; (void) zfs_hold_one(zfs_handle_dup(zhp), &ha); if (nvlist_empty(ha.nvl)) { char errbuf[1024]; fnvlist_free(ha.nvl); ret = ENOENT; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot hold snapshot '%s@%s'"), zhp->zfs_name, snapname); (void) zfs_standard_error(zhp->zfs_hdl, ret, errbuf); return (ret); } ret = zfs_hold_nvl(zhp, cleanup_fd, ha.nvl); fnvlist_free(ha.nvl); return (ret); } int zfs_hold_nvl(zfs_handle_t *zhp, int cleanup_fd, nvlist_t *holds) { int ret; nvlist_t *errors; libzfs_handle_t *hdl = zhp->zfs_hdl; char errbuf[1024]; nvpair_t *elem; errors = NULL; ret = lzc_hold(holds, cleanup_fd, &errors); if (ret == 0) { /* There may be errors even in the success case. */ fnvlist_free(errors); return (0); } if (nvlist_empty(errors)) { /* no hold-specific errors */ (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot hold")); switch (ret) { case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded")); (void) zfs_error(hdl, EZFS_BADVERSION, errbuf); break; case EINVAL: (void) zfs_error(hdl, EZFS_BADTYPE, errbuf); break; default: (void) zfs_standard_error(hdl, ret, errbuf); } } for (elem = nvlist_next_nvpair(errors, NULL); elem != NULL; elem = nvlist_next_nvpair(errors, elem)) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot hold snapshot '%s'"), nvpair_name(elem)); switch (fnvpair_value_int32(elem)) { case E2BIG: /* * Temporary tags wind up having the ds object id * prepended. So even if we passed the length check * above, it's still possible for the tag to wind * up being slightly too long. */ (void) zfs_error(hdl, EZFS_TAGTOOLONG, errbuf); break; case EINVAL: (void) zfs_error(hdl, EZFS_BADTYPE, errbuf); break; case EEXIST: (void) zfs_error(hdl, EZFS_REFTAG_HOLD, errbuf); break; default: (void) zfs_standard_error(hdl, fnvpair_value_int32(elem), errbuf); } } fnvlist_free(errors); return (ret); } static int zfs_release_one(zfs_handle_t *zhp, void *arg) { struct holdarg *ha = arg; char name[ZFS_MAX_DATASET_NAME_LEN]; int rv = 0; nvlist_t *existing_holds; if (snprintf(name, sizeof (name), "%s@%s", zhp->zfs_name, ha->snapname) >= sizeof (name)) { ha->error = EINVAL; rv = EINVAL; } if (lzc_get_holds(name, &existing_holds) != 0) { ha->error = ENOENT; } else if (!nvlist_exists(existing_holds, ha->tag)) { ha->error = ESRCH; } else { nvlist_t *torelease = fnvlist_alloc(); fnvlist_add_boolean(torelease, ha->tag); fnvlist_add_nvlist(ha->nvl, name, torelease); fnvlist_free(torelease); } if (ha->recursive) rv = zfs_iter_filesystems(zhp, zfs_release_one, ha); zfs_close(zhp); return (rv); } int zfs_release(zfs_handle_t *zhp, const char *snapname, const char *tag, boolean_t recursive) { int ret; struct holdarg ha; nvlist_t *errors = NULL; nvpair_t *elem; libzfs_handle_t *hdl = zhp->zfs_hdl; char errbuf[1024]; ha.nvl = fnvlist_alloc(); ha.snapname = snapname; ha.tag = tag; ha.recursive = recursive; ha.error = 0; (void) zfs_release_one(zfs_handle_dup(zhp), &ha); if (nvlist_empty(ha.nvl)) { fnvlist_free(ha.nvl); ret = ha.error; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot release hold from snapshot '%s@%s'"), zhp->zfs_name, snapname); if (ret == ESRCH) { (void) zfs_error(hdl, EZFS_REFTAG_RELE, errbuf); } else { (void) zfs_standard_error(hdl, ret, errbuf); } return (ret); } ret = lzc_release(ha.nvl, &errors); fnvlist_free(ha.nvl); if (ret == 0) { /* There may be errors even in the success case. */ fnvlist_free(errors); return (0); } if (nvlist_empty(errors)) { /* no hold-specific errors */ (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot release")); switch (errno) { case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded")); (void) zfs_error(hdl, EZFS_BADVERSION, errbuf); break; default: (void) zfs_standard_error_fmt(hdl, errno, errbuf); } } for (elem = nvlist_next_nvpair(errors, NULL); elem != NULL; elem = nvlist_next_nvpair(errors, elem)) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot release hold from snapshot '%s'"), nvpair_name(elem)); switch (fnvpair_value_int32(elem)) { case ESRCH: (void) zfs_error(hdl, EZFS_REFTAG_RELE, errbuf); break; case EINVAL: (void) zfs_error(hdl, EZFS_BADTYPE, errbuf); break; default: (void) zfs_standard_error_fmt(hdl, fnvpair_value_int32(elem), errbuf); } } fnvlist_free(errors); return (ret); } int zfs_get_fsacl(zfs_handle_t *zhp, nvlist_t **nvl) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *hdl = zhp->zfs_hdl; int nvsz = 2048; void *nvbuf; int err = 0; char errbuf[1024]; assert(zhp->zfs_type == ZFS_TYPE_VOLUME || zhp->zfs_type == ZFS_TYPE_FILESYSTEM); tryagain: nvbuf = malloc(nvsz); if (nvbuf == NULL) { err = (zfs_error(hdl, EZFS_NOMEM, strerror(errno))); goto out; } zc.zc_nvlist_dst_size = nvsz; zc.zc_nvlist_dst = (uintptr_t)nvbuf; (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); if (ioctl(hdl->libzfs_fd, ZFS_IOC_GET_FSACL, &zc) != 0) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot get permissions on '%s'"), zc.zc_name); switch (errno) { case ENOMEM: free(nvbuf); nvsz = zc.zc_nvlist_dst_size; goto tryagain; case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded")); err = zfs_error(hdl, EZFS_BADVERSION, errbuf); break; case EINVAL: err = zfs_error(hdl, EZFS_BADTYPE, errbuf); break; case ENOENT: err = zfs_error(hdl, EZFS_NOENT, errbuf); break; default: err = zfs_standard_error_fmt(hdl, errno, errbuf); break; } } else { /* success */ int rc = nvlist_unpack(nvbuf, zc.zc_nvlist_dst_size, nvl, 0); if (rc) { (void) snprintf(errbuf, sizeof (errbuf), dgettext( TEXT_DOMAIN, "cannot get permissions on '%s'"), zc.zc_name); err = zfs_standard_error_fmt(hdl, rc, errbuf); } } free(nvbuf); out: return (err); } int zfs_set_fsacl(zfs_handle_t *zhp, boolean_t un, nvlist_t *nvl) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *hdl = zhp->zfs_hdl; char *nvbuf; char errbuf[1024]; size_t nvsz; int err; assert(zhp->zfs_type == ZFS_TYPE_VOLUME || zhp->zfs_type == ZFS_TYPE_FILESYSTEM); err = nvlist_size(nvl, &nvsz, NV_ENCODE_NATIVE); assert(err == 0); nvbuf = malloc(nvsz); err = nvlist_pack(nvl, &nvbuf, &nvsz, NV_ENCODE_NATIVE, 0); assert(err == 0); zc.zc_nvlist_src_size = nvsz; zc.zc_nvlist_src = (uintptr_t)nvbuf; zc.zc_perm_action = un; (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name)); if (zfs_ioctl(hdl, ZFS_IOC_SET_FSACL, &zc) != 0) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot set permissions on '%s'"), zc.zc_name); switch (errno) { case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded")); err = zfs_error(hdl, EZFS_BADVERSION, errbuf); break; case EINVAL: err = zfs_error(hdl, EZFS_BADTYPE, errbuf); break; case ENOENT: err = zfs_error(hdl, EZFS_NOENT, errbuf); break; default: err = zfs_standard_error_fmt(hdl, errno, errbuf); break; } } free(nvbuf); return (err); } int zfs_get_holds(zfs_handle_t *zhp, nvlist_t **nvl) { int err; char errbuf[1024]; err = lzc_get_holds(zhp->zfs_name, nvl); if (err != 0) { libzfs_handle_t *hdl = zhp->zfs_hdl; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "cannot get holds for '%s'"), zhp->zfs_name); switch (err) { case ENOTSUP: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool must be upgraded")); err = zfs_error(hdl, EZFS_BADVERSION, errbuf); break; case EINVAL: err = zfs_error(hdl, EZFS_BADTYPE, errbuf); break; case ENOENT: err = zfs_error(hdl, EZFS_NOENT, errbuf); break; default: err = zfs_standard_error_fmt(hdl, errno, errbuf); break; } } return (err); } /* * The theory of raidz space accounting * * The "referenced" property of RAIDZ vdevs is scaled such that a 128KB block * will "reference" 128KB, even though it allocates more than that, to store the * parity information (and perhaps skip sectors). This concept of the * "referenced" (and other DMU space accounting) being lower than the allocated * space by a constant factor is called "raidz deflation." * * As mentioned above, the constant factor for raidz deflation assumes a 128KB * block size. However, zvols typically have a much smaller block size (default * 8KB). These smaller blocks may require proportionally much more parity * information (and perhaps skip sectors). In this case, the change to the * "referenced" property may be much more than the logical block size. * * Suppose a raidz vdev has 5 disks with ashift=12. A 128k block may be written * as follows. * * +-------+-------+-------+-------+-------+ * | disk1 | disk2 | disk3 | disk4 | disk5 | * +-------+-------+-------+-------+-------+ * | P0 | D0 | D8 | D16 | D24 | * | P1 | D1 | D9 | D17 | D25 | * | P2 | D2 | D10 | D18 | D26 | * | P3 | D3 | D11 | D19 | D27 | * | P4 | D4 | D12 | D20 | D28 | * | P5 | D5 | D13 | D21 | D29 | * | P6 | D6 | D14 | D22 | D30 | * | P7 | D7 | D15 | D23 | D31 | * +-------+-------+-------+-------+-------+ * * Above, notice that 160k was allocated: 8 x 4k parity sectors + 32 x 4k data * sectors. The dataset's referenced will increase by 128k and the pool's * allocated and free properties will be adjusted by 160k. * * A 4k block written to the same raidz vdev will require two 4k sectors. The * blank cells represent unallocated space. * * +-------+-------+-------+-------+-------+ * | disk1 | disk2 | disk3 | disk4 | disk5 | * +-------+-------+-------+-------+-------+ * | P0 | D0 | | | | * +-------+-------+-------+-------+-------+ * * Above, notice that the 4k block required one sector for parity and another * for data. vdev_raidz_asize() will return 8k and as such the pool's allocated * and free properties will be adjusted by 8k. The dataset will not be charged * 8k. Rather, it will be charged a value that is scaled according to the * overhead of the 128k block on the same vdev. This 8k allocation will be * charged 8k * 128k / 160k. 128k is from SPA_OLD_MAXBLOCKSIZE and 160k is as * calculated in the 128k block example above. * * Every raidz allocation is sized to be a multiple of nparity+1 sectors. That * is, every raidz1 allocation will be a multiple of 2 sectors, raidz2 * allocations are a multiple of 3 sectors, and raidz3 allocations are a * multiple of of 4 sectors. When a block does not fill the required number of * sectors, skip blocks (sectors) are used. * * An 8k block being written to a raidz vdev may be written as follows: * * +-------+-------+-------+-------+-------+ * | disk1 | disk2 | disk3 | disk4 | disk5 | * +-------+-------+-------+-------+-------+ * | P0 | D0 | D1 | S0 | | * +-------+-------+-------+-------+-------+ * * In order to maintain the nparity+1 allocation size, a skip block (S0) was * added. For this 8k block, the pool's allocated and free properties are * adjusted by 16k and the dataset's referenced is increased by 16k * 128k / * 160k. Again, 128k is from SPA_OLD_MAXBLOCKSIZE and 160k is as calculated in * the 128k block example above. * * Compression may lead to a variety of block sizes being written for the same * volume or file. There is no clear way to reserve just the amount of space * that will be required, so the worst case (no compression) is assumed. * Note that metadata blocks will typically be compressed, so the reservation * size returned by zvol_volsize_to_reservation() will generally be slightly * larger than the maximum that the volume can reference. */ /* * Derived from function of same name in module/zfs/vdev_raidz.c. Returns the * amount of space (in bytes) that will be allocated for the specified block * size. Note that the "referenced" space accounted will be less than this, but * not necessarily equal to "blksize", due to RAIDZ deflation. */ static uint64_t vdev_raidz_asize(uint64_t ndisks, uint64_t nparity, uint64_t ashift, uint64_t blksize) { uint64_t asize, ndata; ASSERT3U(ndisks, >, nparity); ndata = ndisks - nparity; asize = ((blksize - 1) >> ashift) + 1; asize += nparity * ((asize + ndata - 1) / ndata); asize = roundup(asize, nparity + 1) << ashift; return (asize); } /* * Determine how much space will be allocated if it lands on the most space- * inefficient top-level vdev. Returns the size in bytes required to store one * copy of the volume data. See theory comment above. */ static uint64_t volsize_from_vdevs(zpool_handle_t *zhp, uint64_t nblocks, uint64_t blksize) { nvlist_t *config, *tree, **vdevs; uint_t nvdevs, v; uint64_t ret = 0; config = zpool_get_config(zhp, NULL); if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &tree) != 0 || nvlist_lookup_nvlist_array(tree, ZPOOL_CONFIG_CHILDREN, &vdevs, &nvdevs) != 0) { return (nblocks * blksize); } for (v = 0; v < nvdevs; v++) { char *type; uint64_t nparity, ashift, asize, tsize; nvlist_t **disks; uint_t ndisks; uint64_t volsize; if (nvlist_lookup_string(vdevs[v], ZPOOL_CONFIG_TYPE, &type) != 0 || strcmp(type, VDEV_TYPE_RAIDZ) != 0 || nvlist_lookup_uint64(vdevs[v], ZPOOL_CONFIG_NPARITY, &nparity) != 0 || nvlist_lookup_uint64(vdevs[v], ZPOOL_CONFIG_ASHIFT, &ashift) != 0 || nvlist_lookup_nvlist_array(vdevs[v], ZPOOL_CONFIG_CHILDREN, &disks, &ndisks) != 0) { continue; } /* allocation size for the "typical" 128k block */ tsize = vdev_raidz_asize(ndisks, nparity, ashift, SPA_OLD_MAXBLOCKSIZE); /* allocation size for the blksize block */ asize = vdev_raidz_asize(ndisks, nparity, ashift, blksize); /* * Scale this size down as a ratio of 128k / tsize. See theory * statement above. */ volsize = nblocks * asize * SPA_OLD_MAXBLOCKSIZE / tsize; if (volsize > ret) { ret = volsize; } } if (ret == 0) { ret = nblocks * blksize; } return (ret); } /* * Convert the zvol's volume size to an appropriate reservation. See theory * comment above. * * Note: If this routine is updated, it is necessary to update the ZFS test * suite's shell version in reservation.shlib. */ uint64_t zvol_volsize_to_reservation(zpool_handle_t *zph, uint64_t volsize, nvlist_t *props) { uint64_t numdb; uint64_t nblocks, volblocksize; int ncopies; char *strval; if (nvlist_lookup_string(props, zfs_prop_to_name(ZFS_PROP_COPIES), &strval) == 0) ncopies = atoi(strval); else ncopies = 1; if (nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_VOLBLOCKSIZE), &volblocksize) != 0) volblocksize = ZVOL_DEFAULT_BLOCKSIZE; nblocks = volsize / volblocksize; /* * Metadata defaults to using 128k blocks, not volblocksize blocks. For * this reason, only the data blocks are scaled based on vdev config. */ volsize = volsize_from_vdevs(zph, nblocks, volblocksize); /* start with metadnode L0-L6 */ numdb = 7; /* calculate number of indirects */ while (nblocks > 1) { nblocks += DNODES_PER_LEVEL - 1; nblocks /= DNODES_PER_LEVEL; numdb += nblocks; } numdb *= MIN(SPA_DVAS_PER_BP, ncopies + 1); volsize *= ncopies; /* * this is exactly DN_MAX_INDBLKSHIFT when metadata isn't * compressed, but in practice they compress down to about * 1100 bytes */ numdb *= 1ULL << DN_MAX_INDBLKSHIFT; volsize += numdb; return (volsize); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_import.c0000644000000000000000000000007413607166147020514 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.929536692 zfs-0.8.3/lib/libzfs/libzfs_import.c0000644016037001603700000002545713607166147020526 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright 2015 RackTop Systems. * Copyright (c) 2016, Intel Corporation. */ #include #include #include #include #include #include #include #include #include #include #include #include #include /* * Returns true if the named pool matches the given GUID. */ static int pool_active(libzfs_handle_t *hdl, const char *name, uint64_t guid, boolean_t *isactive) { zpool_handle_t *zhp; uint64_t theguid; if (zpool_open_silent(hdl, name, &zhp) != 0) return (-1); if (zhp == NULL) { *isactive = B_FALSE; return (0); } verify(nvlist_lookup_uint64(zhp->zpool_config, ZPOOL_CONFIG_POOL_GUID, &theguid) == 0); zpool_close(zhp); *isactive = (theguid == guid); return (0); } static nvlist_t * refresh_config(libzfs_handle_t *hdl, nvlist_t *config) { nvlist_t *nvl; zfs_cmd_t zc = {"\0"}; int err, dstbuf_size; if (zcmd_write_conf_nvlist(hdl, &zc, config) != 0) return (NULL); dstbuf_size = MAX(CONFIG_BUF_MINSIZE, zc.zc_nvlist_conf_size * 4); if (zcmd_alloc_dst_nvlist(hdl, &zc, dstbuf_size) != 0) { zcmd_free_nvlists(&zc); return (NULL); } while ((err = ioctl(hdl->libzfs_fd, ZFS_IOC_POOL_TRYIMPORT, &zc)) != 0 && errno == ENOMEM) { if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) { zcmd_free_nvlists(&zc); return (NULL); } } if (err) { zcmd_free_nvlists(&zc); return (NULL); } if (zcmd_read_dst_nvlist(hdl, &zc, &nvl) != 0) { zcmd_free_nvlists(&zc); return (NULL); } zcmd_free_nvlists(&zc); return (nvl); } static nvlist_t * refresh_config_libzfs(void *handle, nvlist_t *tryconfig) { return (refresh_config((libzfs_handle_t *)handle, tryconfig)); } static int pool_active_libzfs(void *handle, const char *name, uint64_t guid, boolean_t *isactive) { return (pool_active((libzfs_handle_t *)handle, name, guid, isactive)); } const pool_config_ops_t libzfs_config_ops = { .pco_refresh_config = refresh_config_libzfs, .pco_pool_active = pool_active_libzfs, }; /* * Return the offset of the given label. */ static uint64_t label_offset(uint64_t size, int l) { ASSERT(P2PHASE_TYPED(size, sizeof (vdev_label_t), uint64_t) == 0); return (l * sizeof (vdev_label_t) + (l < VDEV_LABELS / 2 ? 0 : size - VDEV_LABELS * sizeof (vdev_label_t))); } /* * Given a file descriptor, clear (zero) the label information. This function * is used in the appliance stack as part of the ZFS sysevent module and * to implement the "zpool labelclear" command. */ int zpool_clear_label(int fd) { struct stat64 statbuf; int l; vdev_label_t *label; uint64_t size; int labels_cleared = 0; if (fstat64_blk(fd, &statbuf) == -1) return (0); size = P2ALIGN_TYPED(statbuf.st_size, sizeof (vdev_label_t), uint64_t); if ((label = calloc(1, sizeof (vdev_label_t))) == NULL) return (-1); for (l = 0; l < VDEV_LABELS; l++) { uint64_t state, guid; nvlist_t *config; if (pread64(fd, label, sizeof (vdev_label_t), label_offset(size, l)) != sizeof (vdev_label_t)) { continue; } if (nvlist_unpack(label->vl_vdev_phys.vp_nvlist, sizeof (label->vl_vdev_phys.vp_nvlist), &config, 0) != 0) { continue; } /* Skip labels which do not have a valid guid. */ if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID, &guid) != 0 || guid == 0) { nvlist_free(config); continue; } /* Skip labels which are not in a known valid state. */ if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_STATE, &state) != 0 || state > POOL_STATE_L2CACHE) { nvlist_free(config); continue; } nvlist_free(config); /* * A valid label was found, overwrite this label's nvlist * and uberblocks with zeros on disk. This is done to prevent * system utilities, like blkid, from incorrectly detecting a * partial label. The leading pad space is left untouched. */ memset(label, 0, sizeof (vdev_label_t)); size_t label_size = sizeof (vdev_label_t) - (2 * VDEV_PAD_SIZE); if (pwrite64(fd, label, label_size, label_offset(size, l) + (2 * VDEV_PAD_SIZE)) == label_size) { labels_cleared++; } } free(label); if (labels_cleared == 0) return (-1); return (0); } static boolean_t find_guid(nvlist_t *nv, uint64_t guid) { uint64_t tmp; nvlist_t **child; uint_t c, children; verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &tmp) == 0); if (tmp == guid) return (B_TRUE); if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { for (c = 0; c < children; c++) if (find_guid(child[c], guid)) return (B_TRUE); } return (B_FALSE); } typedef struct aux_cbdata { const char *cb_type; uint64_t cb_guid; zpool_handle_t *cb_zhp; } aux_cbdata_t; static int find_aux(zpool_handle_t *zhp, void *data) { aux_cbdata_t *cbp = data; nvlist_t **list; uint_t i, count; uint64_t guid; nvlist_t *nvroot; verify(nvlist_lookup_nvlist(zhp->zpool_config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); if (nvlist_lookup_nvlist_array(nvroot, cbp->cb_type, &list, &count) == 0) { for (i = 0; i < count; i++) { verify(nvlist_lookup_uint64(list[i], ZPOOL_CONFIG_GUID, &guid) == 0); if (guid == cbp->cb_guid) { cbp->cb_zhp = zhp; return (1); } } } zpool_close(zhp); return (0); } /* * Determines if the pool is in use. If so, it returns true and the state of * the pool as well as the name of the pool. Name string is allocated and * must be freed by the caller. */ int zpool_in_use(libzfs_handle_t *hdl, int fd, pool_state_t *state, char **namestr, boolean_t *inuse) { nvlist_t *config; char *name; boolean_t ret; uint64_t guid, vdev_guid; zpool_handle_t *zhp; nvlist_t *pool_config; uint64_t stateval, isspare; aux_cbdata_t cb = { 0 }; boolean_t isactive; *inuse = B_FALSE; if (zpool_read_label(fd, &config, NULL) != 0) { (void) no_memory(hdl); return (-1); } if (config == NULL) return (0); verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_STATE, &stateval) == 0); verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID, &vdev_guid) == 0); if (stateval != POOL_STATE_SPARE && stateval != POOL_STATE_L2CACHE) { verify(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &name) == 0); verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &guid) == 0); } switch (stateval) { case POOL_STATE_EXPORTED: /* * A pool with an exported state may in fact be imported * read-only, so check the in-core state to see if it's * active and imported read-only. If it is, set * its state to active. */ if (pool_active(hdl, name, guid, &isactive) == 0 && isactive && (zhp = zpool_open_canfail(hdl, name)) != NULL) { if (zpool_get_prop_int(zhp, ZPOOL_PROP_READONLY, NULL)) stateval = POOL_STATE_ACTIVE; /* * All we needed the zpool handle for is the * readonly prop check. */ zpool_close(zhp); } ret = B_TRUE; break; case POOL_STATE_ACTIVE: /* * For an active pool, we have to determine if it's really part * of a currently active pool (in which case the pool will exist * and the guid will be the same), or whether it's part of an * active pool that was disconnected without being explicitly * exported. */ if (pool_active(hdl, name, guid, &isactive) != 0) { nvlist_free(config); return (-1); } if (isactive) { /* * Because the device may have been removed while * offlined, we only report it as active if the vdev is * still present in the config. Otherwise, pretend like * it's not in use. */ if ((zhp = zpool_open_canfail(hdl, name)) != NULL && (pool_config = zpool_get_config(zhp, NULL)) != NULL) { nvlist_t *nvroot; verify(nvlist_lookup_nvlist(pool_config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); ret = find_guid(nvroot, vdev_guid); } else { ret = B_FALSE; } /* * If this is an active spare within another pool, we * treat it like an unused hot spare. This allows the * user to create a pool with a hot spare that currently * in use within another pool. Since we return B_TRUE, * libdiskmgt will continue to prevent generic consumers * from using the device. */ if (ret && nvlist_lookup_uint64(config, ZPOOL_CONFIG_IS_SPARE, &isspare) == 0 && isspare) stateval = POOL_STATE_SPARE; if (zhp != NULL) zpool_close(zhp); } else { stateval = POOL_STATE_POTENTIALLY_ACTIVE; ret = B_TRUE; } break; case POOL_STATE_SPARE: /* * For a hot spare, it can be either definitively in use, or * potentially active. To determine if it's in use, we iterate * over all pools in the system and search for one with a spare * with a matching guid. * * Due to the shared nature of spares, we don't actually report * the potentially active case as in use. This means the user * can freely create pools on the hot spares of exported pools, * but to do otherwise makes the resulting code complicated, and * we end up having to deal with this case anyway. */ cb.cb_zhp = NULL; cb.cb_guid = vdev_guid; cb.cb_type = ZPOOL_CONFIG_SPARES; if (zpool_iter(hdl, find_aux, &cb) == 1) { name = (char *)zpool_get_name(cb.cb_zhp); ret = B_TRUE; } else { ret = B_FALSE; } break; case POOL_STATE_L2CACHE: /* * Check if any pool is currently using this l2cache device. */ cb.cb_zhp = NULL; cb.cb_guid = vdev_guid; cb.cb_type = ZPOOL_CONFIG_L2CACHE; if (zpool_iter(hdl, find_aux, &cb) == 1) { name = (char *)zpool_get_name(cb.cb_zhp); ret = B_TRUE; } else { ret = B_FALSE; } break; default: ret = B_FALSE; } if (ret) { if ((*namestr = zfs_strdup(hdl, name)) == NULL) { if (cb.cb_zhp) zpool_close(cb.cb_zhp); nvlist_free(config); return (-1); } *state = (pool_state_t)stateval; } if (cb.cb_zhp) zpool_close(cb.cb_zhp); nvlist_free(config); *inuse = ret; return (0); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/THIRDPARTYLICENSE.openssl0000644000000000000000000000007413612141513021551 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.944537174 zfs-0.8.3/lib/libzfs/THIRDPARTYLICENSE.openssl0000644016037001603700000001421013612141513021544 0ustar00hutter2hutter200000000000000 LICENSE ISSUES ============== The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit. See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact openssl-core@openssl.org. OpenSSL License --------------- /* ==================================================================== * Copyright (c) 1998-2008 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * openssl-core@openssl.org. * * 5. Products derived from this software may not be called "OpenSSL" * nor may "OpenSSL" appear in their names without prior written * permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit (http://www.openssl.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com). This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */ Original SSLeay License ----------------------- /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * "This product includes cryptographic software written by * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the routines from the library * being used are not cryptographic related :-). * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence * [including the GNU Public Licence.] */ zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_changelist.c0000644000000000000000000000007313607166132021314 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730472.91853634 zfs-0.8.3/lib/libzfs/libzfs_changelist.c0000644016037001603700000005122713607166132021321 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * * Portions Copyright 2007 Ramprakash Jelari * Copyright (c) 2014, 2015 by Delphix. All rights reserved. * Copyright 2016 Igor Kozhukhov * Copyright (c) 2018 Datto Inc. */ #include #include #include #include #include #include #include #include #include "libzfs_impl.h" /* * Structure to keep track of dataset state. Before changing the 'sharenfs' or * 'mountpoint' property, we record whether the filesystem was previously * mounted/shared. This prior state dictates whether we remount/reshare the * dataset after the property has been changed. * * The interface consists of the following sequence of functions: * * changelist_gather() * changelist_prefix() * < change property > * changelist_postfix() * changelist_free() * * Other interfaces: * * changelist_remove() - remove a node from a gathered list * changelist_rename() - renames all datasets appropriately when doing a rename * changelist_unshare() - unshares all the nodes in a given changelist * changelist_haszonedchild() - check if there is any child exported to * a local zone */ typedef struct prop_changenode { zfs_handle_t *cn_handle; int cn_shared; int cn_mounted; int cn_zoned; boolean_t cn_needpost; /* is postfix() needed? */ uu_avl_node_t cn_treenode; } prop_changenode_t; struct prop_changelist { zfs_prop_t cl_prop; zfs_prop_t cl_realprop; zfs_prop_t cl_shareprop; /* used with sharenfs/sharesmb */ uu_avl_pool_t *cl_pool; uu_avl_t *cl_tree; boolean_t cl_waslegacy; boolean_t cl_allchildren; boolean_t cl_alldependents; int cl_mflags; /* Mount flags */ int cl_gflags; /* Gather request flags */ boolean_t cl_haszonedchild; }; /* * If the property is 'mountpoint', go through and unmount filesystems as * necessary. We don't do the same for 'sharenfs', because we can just re-share * with different options without interrupting service. We do handle 'sharesmb' * since there may be old resource names that need to be removed. */ int changelist_prefix(prop_changelist_t *clp) { prop_changenode_t *cn; uu_avl_walk_t *walk; int ret = 0; if (clp->cl_prop != ZFS_PROP_MOUNTPOINT && clp->cl_prop != ZFS_PROP_SHARESMB) return (0); if ((walk = uu_avl_walk_start(clp->cl_tree, UU_WALK_ROBUST)) == NULL) return (-1); while ((cn = uu_avl_walk_next(walk)) != NULL) { /* if a previous loop failed, set the remaining to false */ if (ret == -1) { cn->cn_needpost = B_FALSE; continue; } /* * If we are in the global zone, but this dataset is exported * to a local zone, do nothing. */ if (getzoneid() == GLOBAL_ZONEID && cn->cn_zoned) continue; if (!ZFS_IS_VOLUME(cn->cn_handle)) { /* * Do the property specific processing. */ switch (clp->cl_prop) { case ZFS_PROP_MOUNTPOINT: if (zfs_unmount(cn->cn_handle, NULL, clp->cl_mflags) != 0) { ret = -1; cn->cn_needpost = B_FALSE; } break; case ZFS_PROP_SHARESMB: (void) zfs_unshare_smb(cn->cn_handle, NULL); break; default: break; } } } uu_avl_walk_end(walk); if (ret == -1) (void) changelist_postfix(clp); return (ret); } /* * If the property is 'mountpoint' or 'sharenfs', go through and remount and/or * reshare the filesystems as necessary. In changelist_gather() we recorded * whether the filesystem was previously shared or mounted. The action we take * depends on the previous state, and whether the value was previously 'legacy'. * For non-legacy properties, we only remount/reshare the filesystem if it was * previously mounted/shared. Otherwise, we always remount/reshare the * filesystem. */ int changelist_postfix(prop_changelist_t *clp) { prop_changenode_t *cn; uu_avl_walk_t *walk; char shareopts[ZFS_MAXPROPLEN]; int errors = 0; libzfs_handle_t *hdl; /* * If we're changing the mountpoint, attempt to destroy the underlying * mountpoint. All other datasets will have inherited from this dataset * (in which case their mountpoints exist in the filesystem in the new * location), or have explicit mountpoints set (in which case they won't * be in the changelist). */ if ((cn = uu_avl_last(clp->cl_tree)) == NULL) return (0); if (clp->cl_prop == ZFS_PROP_MOUNTPOINT) remove_mountpoint(cn->cn_handle); /* * It is possible that the changelist_prefix() used libshare * to unshare some entries. Since libshare caches data, an * attempt to reshare during postfix can fail unless libshare * is uninitialized here so that it will reinitialize later. */ if (cn->cn_handle != NULL) { hdl = cn->cn_handle->zfs_hdl; assert(hdl != NULL); zfs_uninit_libshare(hdl); } /* * We walk the datasets in reverse, because we want to mount any parent * datasets before mounting the children. We walk all datasets even if * there are errors. */ if ((walk = uu_avl_walk_start(clp->cl_tree, UU_WALK_REVERSE | UU_WALK_ROBUST)) == NULL) return (-1); while ((cn = uu_avl_walk_next(walk)) != NULL) { boolean_t sharenfs; boolean_t sharesmb; boolean_t mounted; boolean_t needs_key; /* * If we are in the global zone, but this dataset is exported * to a local zone, do nothing. */ if (getzoneid() == GLOBAL_ZONEID && cn->cn_zoned) continue; /* Only do post-processing if it's required */ if (!cn->cn_needpost) continue; cn->cn_needpost = B_FALSE; zfs_refresh_properties(cn->cn_handle); if (ZFS_IS_VOLUME(cn->cn_handle)) continue; /* * Remount if previously mounted or mountpoint was legacy, * or sharenfs or sharesmb property is set. */ sharenfs = ((zfs_prop_get(cn->cn_handle, ZFS_PROP_SHARENFS, shareopts, sizeof (shareopts), NULL, NULL, 0, B_FALSE) == 0) && (strcmp(shareopts, "off") != 0)); sharesmb = ((zfs_prop_get(cn->cn_handle, ZFS_PROP_SHARESMB, shareopts, sizeof (shareopts), NULL, NULL, 0, B_FALSE) == 0) && (strcmp(shareopts, "off") != 0)); needs_key = (zfs_prop_get_int(cn->cn_handle, ZFS_PROP_KEYSTATUS) == ZFS_KEYSTATUS_UNAVAILABLE); mounted = zfs_is_mounted(cn->cn_handle, NULL); if (!mounted && !needs_key && (cn->cn_mounted || ((sharenfs || sharesmb || clp->cl_waslegacy) && (zfs_prop_get_int(cn->cn_handle, ZFS_PROP_CANMOUNT) == ZFS_CANMOUNT_ON)))) { if (zfs_mount(cn->cn_handle, NULL, 0) != 0) errors++; else mounted = TRUE; } /* * If the file system is mounted we always re-share even * if the filesystem is currently shared, so that we can * adopt any new options. */ if (sharenfs && mounted) errors += zfs_share_nfs(cn->cn_handle); else if (cn->cn_shared || clp->cl_waslegacy) errors += zfs_unshare_nfs(cn->cn_handle, NULL); if (sharesmb && mounted) errors += zfs_share_smb(cn->cn_handle); else if (cn->cn_shared || clp->cl_waslegacy) errors += zfs_unshare_smb(cn->cn_handle, NULL); } uu_avl_walk_end(walk); return (errors ? -1 : 0); } /* * Is this "dataset" a child of "parent"? */ boolean_t isa_child_of(const char *dataset, const char *parent) { int len; len = strlen(parent); if (strncmp(dataset, parent, len) == 0 && (dataset[len] == '@' || dataset[len] == '/' || dataset[len] == '\0')) return (B_TRUE); else return (B_FALSE); } /* * If we rename a filesystem, child filesystem handles are no longer valid * since we identify each dataset by its name in the ZFS namespace. As a * result, we have to go through and fix up all the names appropriately. We * could do this automatically if libzfs kept track of all open handles, but * this is a lot less work. */ void changelist_rename(prop_changelist_t *clp, const char *src, const char *dst) { prop_changenode_t *cn; uu_avl_walk_t *walk; char newname[ZFS_MAX_DATASET_NAME_LEN]; if ((walk = uu_avl_walk_start(clp->cl_tree, UU_WALK_ROBUST)) == NULL) return; while ((cn = uu_avl_walk_next(walk)) != NULL) { /* * Do not rename a clone that's not in the source hierarchy. */ if (!isa_child_of(cn->cn_handle->zfs_name, src)) continue; /* * Destroy the previous mountpoint if needed. */ remove_mountpoint(cn->cn_handle); (void) strlcpy(newname, dst, sizeof (newname)); (void) strlcat(newname, cn->cn_handle->zfs_name + strlen(src), sizeof (newname)); (void) strlcpy(cn->cn_handle->zfs_name, newname, sizeof (cn->cn_handle->zfs_name)); } uu_avl_walk_end(walk); } /* * Given a gathered changelist for the 'sharenfs' or 'sharesmb' property, * unshare all the datasets in the list. */ int changelist_unshare(prop_changelist_t *clp, zfs_share_proto_t *proto) { prop_changenode_t *cn; uu_avl_walk_t *walk; int ret = 0; if (clp->cl_prop != ZFS_PROP_SHARENFS && clp->cl_prop != ZFS_PROP_SHARESMB) return (0); if ((walk = uu_avl_walk_start(clp->cl_tree, UU_WALK_ROBUST)) == NULL) return (-1); while ((cn = uu_avl_walk_next(walk)) != NULL) { if (zfs_unshare_proto(cn->cn_handle, NULL, proto) != 0) ret = -1; } uu_avl_walk_end(walk); return (ret); } /* * Check if there is any child exported to a local zone in a given changelist. * This information has already been recorded while gathering the changelist * via changelist_gather(). */ int changelist_haszonedchild(prop_changelist_t *clp) { return (clp->cl_haszonedchild); } /* * Remove a node from a gathered list. */ void changelist_remove(prop_changelist_t *clp, const char *name) { prop_changenode_t *cn; uu_avl_walk_t *walk; if ((walk = uu_avl_walk_start(clp->cl_tree, UU_WALK_ROBUST)) == NULL) return; while ((cn = uu_avl_walk_next(walk)) != NULL) { if (strcmp(cn->cn_handle->zfs_name, name) == 0) { uu_avl_remove(clp->cl_tree, cn); zfs_close(cn->cn_handle); free(cn); uu_avl_walk_end(walk); return; } } uu_avl_walk_end(walk); } /* * Release any memory associated with a changelist. */ void changelist_free(prop_changelist_t *clp) { prop_changenode_t *cn; if (clp->cl_tree) { uu_avl_walk_t *walk; if ((walk = uu_avl_walk_start(clp->cl_tree, UU_WALK_ROBUST)) == NULL) return; while ((cn = uu_avl_walk_next(walk)) != NULL) { uu_avl_remove(clp->cl_tree, cn); zfs_close(cn->cn_handle); free(cn); } uu_avl_walk_end(walk); uu_avl_destroy(clp->cl_tree); } if (clp->cl_pool) uu_avl_pool_destroy(clp->cl_pool); free(clp); } /* * Add one dataset to changelist */ static int changelist_add_mounted(zfs_handle_t *zhp, void *data) { prop_changelist_t *clp = data; prop_changenode_t *cn; uu_avl_index_t idx; ASSERT3U(clp->cl_prop, ==, ZFS_PROP_MOUNTPOINT); if ((cn = zfs_alloc(zfs_get_handle(zhp), sizeof (prop_changenode_t))) == NULL) { zfs_close(zhp); return (ENOMEM); } cn->cn_handle = zhp; cn->cn_mounted = zfs_is_mounted(zhp, NULL); ASSERT3U(cn->cn_mounted, ==, B_TRUE); cn->cn_shared = zfs_is_shared(zhp); cn->cn_zoned = zfs_prop_get_int(zhp, ZFS_PROP_ZONED); cn->cn_needpost = B_TRUE; /* Indicate if any child is exported to a local zone. */ if (getzoneid() == GLOBAL_ZONEID && cn->cn_zoned) clp->cl_haszonedchild = B_TRUE; uu_avl_node_init(cn, &cn->cn_treenode, clp->cl_pool); if (uu_avl_find(clp->cl_tree, cn, NULL, &idx) == NULL) { uu_avl_insert(clp->cl_tree, cn, idx); } else { free(cn); zfs_close(zhp); } return (0); } static int change_one(zfs_handle_t *zhp, void *data) { prop_changelist_t *clp = data; char property[ZFS_MAXPROPLEN]; char where[64]; prop_changenode_t *cn = NULL; zprop_source_t sourcetype = ZPROP_SRC_NONE; zprop_source_t share_sourcetype = ZPROP_SRC_NONE; int ret = 0; /* * We only want to unmount/unshare those filesystems that may inherit * from the target filesystem. If we find any filesystem with a * locally set mountpoint, we ignore any children since changing the * property will not affect them. If this is a rename, we iterate * over all children regardless, since we need them unmounted in * order to do the rename. Also, if this is a volume and we're doing * a rename, then always add it to the changelist. */ if (!(ZFS_IS_VOLUME(zhp) && clp->cl_realprop == ZFS_PROP_NAME) && zfs_prop_get(zhp, clp->cl_prop, property, sizeof (property), &sourcetype, where, sizeof (where), B_FALSE) != 0) { goto out; } /* * If we are "watching" sharenfs or sharesmb * then check out the companion property which is tracked * in cl_shareprop */ if (clp->cl_shareprop != ZPROP_INVAL && zfs_prop_get(zhp, clp->cl_shareprop, property, sizeof (property), &share_sourcetype, where, sizeof (where), B_FALSE) != 0) { goto out; } if (clp->cl_alldependents || clp->cl_allchildren || sourcetype == ZPROP_SRC_DEFAULT || sourcetype == ZPROP_SRC_INHERITED || (clp->cl_shareprop != ZPROP_INVAL && (share_sourcetype == ZPROP_SRC_DEFAULT || share_sourcetype == ZPROP_SRC_INHERITED))) { if ((cn = zfs_alloc(zfs_get_handle(zhp), sizeof (prop_changenode_t))) == NULL) { ret = -1; goto out; } cn->cn_handle = zhp; cn->cn_mounted = (clp->cl_gflags & CL_GATHER_MOUNT_ALWAYS) || zfs_is_mounted(zhp, NULL); cn->cn_shared = zfs_is_shared(zhp); cn->cn_zoned = zfs_prop_get_int(zhp, ZFS_PROP_ZONED); cn->cn_needpost = B_TRUE; /* Indicate if any child is exported to a local zone. */ if (getzoneid() == GLOBAL_ZONEID && cn->cn_zoned) clp->cl_haszonedchild = B_TRUE; uu_avl_node_init(cn, &cn->cn_treenode, clp->cl_pool); uu_avl_index_t idx; if (uu_avl_find(clp->cl_tree, cn, NULL, &idx) == NULL) { uu_avl_insert(clp->cl_tree, cn, idx); } else { free(cn); cn = NULL; } if (!clp->cl_alldependents) ret = zfs_iter_children(zhp, change_one, data); /* * If we added the handle to the changelist, we will re-use it * later so return without closing it. */ if (cn != NULL) return (ret); } out: zfs_close(zhp); return (ret); } static int compare_props(const void *a, const void *b, zfs_prop_t prop) { const prop_changenode_t *ca = a; const prop_changenode_t *cb = b; char propa[MAXPATHLEN]; char propb[MAXPATHLEN]; boolean_t haspropa, haspropb; haspropa = (zfs_prop_get(ca->cn_handle, prop, propa, sizeof (propa), NULL, NULL, 0, B_FALSE) == 0); haspropb = (zfs_prop_get(cb->cn_handle, prop, propb, sizeof (propb), NULL, NULL, 0, B_FALSE) == 0); if (!haspropa && haspropb) return (-1); else if (haspropa && !haspropb) return (1); else if (!haspropa && !haspropb) return (0); else return (strcmp(propb, propa)); } /*ARGSUSED*/ static int compare_mountpoints(const void *a, const void *b, void *unused) { /* * When unsharing or unmounting filesystems, we need to do it in * mountpoint order. This allows the user to have a mountpoint * hierarchy that is different from the dataset hierarchy, and still * allow it to be changed. */ return (compare_props(a, b, ZFS_PROP_MOUNTPOINT)); } /*ARGSUSED*/ static int compare_dataset_names(const void *a, const void *b, void *unused) { return (compare_props(a, b, ZFS_PROP_NAME)); } /* * Given a ZFS handle and a property, construct a complete list of datasets * that need to be modified as part of this process. For anything but the * 'mountpoint' and 'sharenfs' properties, this just returns an empty list. * Otherwise, we iterate over all children and look for any datasets that * inherit the property. For each such dataset, we add it to the list and * mark whether it was shared beforehand. */ prop_changelist_t * changelist_gather(zfs_handle_t *zhp, zfs_prop_t prop, int gather_flags, int mnt_flags) { prop_changelist_t *clp; prop_changenode_t *cn; zfs_handle_t *temp; char property[ZFS_MAXPROPLEN]; boolean_t legacy = B_FALSE; if ((clp = zfs_alloc(zhp->zfs_hdl, sizeof (prop_changelist_t))) == NULL) return (NULL); /* * For mountpoint-related tasks, we want to sort everything by * mountpoint, so that we mount and unmount them in the appropriate * order, regardless of their position in the hierarchy. */ if (prop == ZFS_PROP_NAME || prop == ZFS_PROP_ZONED || prop == ZFS_PROP_MOUNTPOINT || prop == ZFS_PROP_SHARENFS || prop == ZFS_PROP_SHARESMB) { if (zfs_prop_get(zhp, ZFS_PROP_MOUNTPOINT, property, sizeof (property), NULL, NULL, 0, B_FALSE) == 0 && (strcmp(property, "legacy") == 0 || strcmp(property, "none") == 0)) { legacy = B_TRUE; } } clp->cl_pool = uu_avl_pool_create("changelist_pool", sizeof (prop_changenode_t), offsetof(prop_changenode_t, cn_treenode), legacy ? compare_dataset_names : compare_mountpoints, 0); if (clp->cl_pool == NULL) { assert(uu_error() == UU_ERROR_NO_MEMORY); (void) zfs_error(zhp->zfs_hdl, EZFS_NOMEM, "internal error"); changelist_free(clp); return (NULL); } clp->cl_tree = uu_avl_create(clp->cl_pool, NULL, UU_DEFAULT); clp->cl_gflags = gather_flags; clp->cl_mflags = mnt_flags; if (clp->cl_tree == NULL) { assert(uu_error() == UU_ERROR_NO_MEMORY); (void) zfs_error(zhp->zfs_hdl, EZFS_NOMEM, "internal error"); changelist_free(clp); return (NULL); } /* * If this is a rename or the 'zoned' property, we pretend we're * changing the mountpoint and flag it so we can catch all children in * change_one(). * * Flag cl_alldependents to catch all children plus the dependents * (clones) that are not in the hierarchy. */ if (prop == ZFS_PROP_NAME) { clp->cl_prop = ZFS_PROP_MOUNTPOINT; clp->cl_alldependents = B_TRUE; } else if (prop == ZFS_PROP_ZONED) { clp->cl_prop = ZFS_PROP_MOUNTPOINT; clp->cl_allchildren = B_TRUE; } else if (prop == ZFS_PROP_CANMOUNT) { clp->cl_prop = ZFS_PROP_MOUNTPOINT; } else if (prop == ZFS_PROP_VOLSIZE) { clp->cl_prop = ZFS_PROP_MOUNTPOINT; } else { clp->cl_prop = prop; } clp->cl_realprop = prop; if (clp->cl_prop != ZFS_PROP_MOUNTPOINT && clp->cl_prop != ZFS_PROP_SHARENFS && clp->cl_prop != ZFS_PROP_SHARESMB) return (clp); /* * If watching SHARENFS or SHARESMB then * also watch its companion property. */ if (clp->cl_prop == ZFS_PROP_SHARENFS) clp->cl_shareprop = ZFS_PROP_SHARESMB; else if (clp->cl_prop == ZFS_PROP_SHARESMB) clp->cl_shareprop = ZFS_PROP_SHARENFS; if (clp->cl_prop == ZFS_PROP_MOUNTPOINT && (clp->cl_gflags & CL_GATHER_ITER_MOUNTED)) { /* * Instead of iterating through all of the dataset children we * gather mounted dataset children from MNTTAB */ if (zfs_iter_mounted(zhp, changelist_add_mounted, clp) != 0) { changelist_free(clp); return (NULL); } } else if (clp->cl_alldependents) { if (zfs_iter_dependents(zhp, B_TRUE, change_one, clp) != 0) { changelist_free(clp); return (NULL); } } else if (zfs_iter_children(zhp, change_one, clp) != 0) { changelist_free(clp); return (NULL); } /* * We have to re-open ourselves because we auto-close all the handles * and can't tell the difference. */ if ((temp = zfs_open(zhp->zfs_hdl, zfs_get_name(zhp), ZFS_TYPE_DATASET)) == NULL) { changelist_free(clp); return (NULL); } /* * Always add ourself to the list. We add ourselves to the end so that * we're the last to be unmounted. */ if ((cn = zfs_alloc(zhp->zfs_hdl, sizeof (prop_changenode_t))) == NULL) { zfs_close(temp); changelist_free(clp); return (NULL); } cn->cn_handle = temp; cn->cn_mounted = (clp->cl_gflags & CL_GATHER_MOUNT_ALWAYS) || zfs_is_mounted(temp, NULL); cn->cn_shared = zfs_is_shared(temp); cn->cn_zoned = zfs_prop_get_int(zhp, ZFS_PROP_ZONED); cn->cn_needpost = B_TRUE; uu_avl_node_init(cn, &cn->cn_treenode, clp->cl_pool); uu_avl_index_t idx; if (uu_avl_find(clp->cl_tree, cn, NULL, &idx) == NULL) { uu_avl_insert(clp->cl_tree, cn, idx); } else { free(cn); zfs_close(temp); } /* * If the mountpoint property was previously 'legacy', or 'none', * record it as the behavior of changelist_postfix() will be different. */ if ((clp->cl_prop == ZFS_PROP_MOUNTPOINT) && legacy) { /* * do not automatically mount ex-legacy datasets if * we specifically set canmount to noauto */ if (zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT) != ZFS_CANMOUNT_NOAUTO) clp->cl_waslegacy = B_TRUE; } return (clp); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147017521 xustar000000000000000030 atime=1579730430.669179827 30 ctime=1579730472.903535858 zfs-0.8.3/lib/libzfs/Makefile.am0000644016037001603700000000304713607166147017522 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am VPATH = \ $(top_srcdir)/module/icp \ $(top_srcdir)/module/zcommon \ $(top_srcdir)/lib/libzfs # Suppress unused but set variable warnings often due to ASSERTs AM_CFLAGS += $(NO_UNUSED_BUT_SET_VARIABLE) libzfs_pcdir = $(datarootdir)/pkgconfig libzfs_pc_DATA = libzfs.pc libzfs_core.pc DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/module/icp/include \ -I$(top_srcdir)/lib/libspl/include lib_LTLIBRARIES = libzfs.la USER_C = \ libzfs_changelist.c \ libzfs_config.c \ libzfs_crypto.c \ libzfs_dataset.c \ libzfs_diff.c \ libzfs_import.c \ libzfs_iter.c \ libzfs_mount.c \ libzfs_pool.c \ libzfs_sendrecv.c \ libzfs_status.c \ libzfs_util.c KERNEL_C = \ algs/sha2/sha2.c \ zfeature_common.c \ zfs_comutil.c \ zfs_deleg.c \ zfs_fletcher.c \ zfs_fletcher_aarch64_neon.c \ zfs_fletcher_avx512.c \ zfs_fletcher_intel.c \ zfs_fletcher_sse.c \ zfs_fletcher_superscalar.c \ zfs_fletcher_superscalar4.c \ zfs_namecheck.c \ zfs_prop.c \ zfs_uio.c \ zpool_prop.c \ zprop_common.c nodist_libzfs_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) libzfs_la_LIBADD = \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libshare/libshare.la \ $(top_builddir)/lib/libuutil/libuutil.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la \ $(top_builddir)/lib/libzutil/libzutil.la libzfs_la_LIBADD += -lm $(LIBSSL) libzfs_la_LDFLAGS = -version-info 2:0:0 EXTRA_DIST = $(libzfs_pc_DATA) $(USER_C) # Licensing data EXTRA_DIST += THIRDPARTYLICENSE.openssl THIRDPARTYLICENSE.openssl.descrip zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_status.c0000644000000000000000000000007413607166132020517 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.941537078 zfs-0.8.3/lib/libzfs/libzfs_status.c0000644016037001603700000003032313607166132020515 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. */ /* * This file contains the functions which analyze the status of a pool. This * include both the status of an active pool, as well as the status exported * pools. Returns one of the ZPOOL_STATUS_* defines describing the status of * the pool. This status is independent (to a certain degree) from the state of * the pool. A pool's state describes only whether or not it is capable of * providing the necessary fault tolerance for data. The status describes the * overall status of devices. A pool that is online can still have a device * that is experiencing errors. * * Only a subset of the possible faults can be detected using 'zpool status', * and not all possible errors correspond to a FMA message ID. The explanation * is left up to the caller, depending on whether it is a live pool or an * import. */ #include #include #include #include #include #include "libzfs_impl.h" #include "zfeature_common.h" /* * Message ID table. This must be kept in sync with the ZPOOL_STATUS_* defines * in include/libzfs.h. Note that there are some status results which go past * the end of this table, and hence have no associated message ID. */ static char *zfs_msgid_table[] = { "ZFS-8000-14", /* ZPOOL_STATUS_CORRUPT_CACHE */ "ZFS-8000-2Q", /* ZPOOL_STATUS_MISSING_DEV_R */ "ZFS-8000-3C", /* ZPOOL_STATUS_MISSING_DEV_NR */ "ZFS-8000-4J", /* ZPOOL_STATUS_CORRUPT_LABEL_R */ "ZFS-8000-5E", /* ZPOOL_STATUS_CORRUPT_LABEL_NR */ "ZFS-8000-6X", /* ZPOOL_STATUS_BAD_GUID_SUM */ "ZFS-8000-72", /* ZPOOL_STATUS_CORRUPT_POOL */ "ZFS-8000-8A", /* ZPOOL_STATUS_CORRUPT_DATA */ "ZFS-8000-9P", /* ZPOOL_STATUS_FAILING_DEV */ "ZFS-8000-A5", /* ZPOOL_STATUS_VERSION_NEWER */ "ZFS-8000-EY", /* ZPOOL_STATUS_HOSTID_MISMATCH */ "ZFS-8000-EY", /* ZPOOL_STATUS_HOSTID_ACTIVE */ "ZFS-8000-EY", /* ZPOOL_STATUS_HOSTID_REQUIRED */ "ZFS-8000-HC", /* ZPOOL_STATUS_IO_FAILURE_WAIT */ "ZFS-8000-JQ", /* ZPOOL_STATUS_IO_FAILURE_CONTINUE */ "ZFS-8000-MM", /* ZPOOL_STATUS_IO_FAILURE_MMP */ "ZFS-8000-K4", /* ZPOOL_STATUS_BAD_LOG */ "ZFS-8000-ER", /* ZPOOL_STATUS_ERRATA */ /* * The following results have no message ID. * ZPOOL_STATUS_UNSUP_FEAT_READ * ZPOOL_STATUS_UNSUP_FEAT_WRITE * ZPOOL_STATUS_FAULTED_DEV_R * ZPOOL_STATUS_FAULTED_DEV_NR * ZPOOL_STATUS_VERSION_OLDER * ZPOOL_STATUS_FEAT_DISABLED * ZPOOL_STATUS_RESILVERING * ZPOOL_STATUS_OFFLINE_DEV * ZPOOL_STATUS_REMOVED_DEV * ZPOOL_STATUS_OK */ }; #define NMSGID (sizeof (zfs_msgid_table) / sizeof (zfs_msgid_table[0])) /* ARGSUSED */ static int vdev_missing(uint64_t state, uint64_t aux, uint64_t errs) { return (state == VDEV_STATE_CANT_OPEN && aux == VDEV_AUX_OPEN_FAILED); } /* ARGSUSED */ static int vdev_faulted(uint64_t state, uint64_t aux, uint64_t errs) { return (state == VDEV_STATE_FAULTED); } /* ARGSUSED */ static int vdev_errors(uint64_t state, uint64_t aux, uint64_t errs) { return (state == VDEV_STATE_DEGRADED || errs != 0); } /* ARGSUSED */ static int vdev_broken(uint64_t state, uint64_t aux, uint64_t errs) { return (state == VDEV_STATE_CANT_OPEN); } /* ARGSUSED */ static int vdev_offlined(uint64_t state, uint64_t aux, uint64_t errs) { return (state == VDEV_STATE_OFFLINE); } /* ARGSUSED */ static int vdev_removed(uint64_t state, uint64_t aux, uint64_t errs) { return (state == VDEV_STATE_REMOVED); } /* * Detect if any leaf devices that have seen errors or could not be opened. */ static boolean_t find_vdev_problem(nvlist_t *vdev, int (*func)(uint64_t, uint64_t, uint64_t)) { nvlist_t **child; vdev_stat_t *vs; uint_t c, children; char *type; /* * Ignore problems within a 'replacing' vdev, since we're presumably in * the process of repairing any such errors, and don't want to call them * out again. We'll pick up the fact that a resilver is happening * later. */ verify(nvlist_lookup_string(vdev, ZPOOL_CONFIG_TYPE, &type) == 0); if (strcmp(type, VDEV_TYPE_REPLACING) == 0) return (B_FALSE); if (nvlist_lookup_nvlist_array(vdev, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { for (c = 0; c < children; c++) if (find_vdev_problem(child[c], func)) return (B_TRUE); } else { verify(nvlist_lookup_uint64_array(vdev, ZPOOL_CONFIG_VDEV_STATS, (uint64_t **)&vs, &c) == 0); if (func(vs->vs_state, vs->vs_aux, vs->vs_read_errors + vs->vs_write_errors + vs->vs_checksum_errors)) return (B_TRUE); } /* * Check any L2 cache devs */ if (nvlist_lookup_nvlist_array(vdev, ZPOOL_CONFIG_L2CACHE, &child, &children) == 0) { for (c = 0; c < children; c++) if (find_vdev_problem(child[c], func)) return (B_TRUE); } return (B_FALSE); } /* * Active pool health status. * * To determine the status for a pool, we make several passes over the config, * picking the most egregious error we find. In order of importance, we do the * following: * * - Check for a complete and valid configuration * - Look for any faulted or missing devices in a non-replicated config * - Check for any data errors * - Check for any faulted or missing devices in a replicated config * - Look for any devices showing errors * - Check for any resilvering devices * * There can obviously be multiple errors within a single pool, so this routine * only picks the most damaging of all the current errors to report. */ static zpool_status_t check_status(nvlist_t *config, boolean_t isimport, zpool_errata_t *erratap) { nvlist_t *nvroot; vdev_stat_t *vs; pool_scan_stat_t *ps = NULL; uint_t vsc, psc; uint64_t nerr; uint64_t version; uint64_t stateval; uint64_t suspended; uint64_t hostid = 0; uint64_t errata = 0; unsigned long system_hostid = get_system_hostid(); verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_VERSION, &version) == 0); verify(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); verify(nvlist_lookup_uint64_array(nvroot, ZPOOL_CONFIG_VDEV_STATS, (uint64_t **)&vs, &vsc) == 0); verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_STATE, &stateval) == 0); /* * Currently resilvering a vdev */ (void) nvlist_lookup_uint64_array(nvroot, ZPOOL_CONFIG_SCAN_STATS, (uint64_t **)&ps, &psc); if (ps != NULL && ps->pss_func == POOL_SCAN_RESILVER && ps->pss_state == DSS_SCANNING) return (ZPOOL_STATUS_RESILVERING); /* * The multihost property is set and the pool may be active. */ if (vs->vs_state == VDEV_STATE_CANT_OPEN && vs->vs_aux == VDEV_AUX_ACTIVE) { mmp_state_t mmp_state; nvlist_t *nvinfo; nvinfo = fnvlist_lookup_nvlist(config, ZPOOL_CONFIG_LOAD_INFO); mmp_state = fnvlist_lookup_uint64(nvinfo, ZPOOL_CONFIG_MMP_STATE); if (mmp_state == MMP_STATE_ACTIVE) return (ZPOOL_STATUS_HOSTID_ACTIVE); else if (mmp_state == MMP_STATE_NO_HOSTID) return (ZPOOL_STATUS_HOSTID_REQUIRED); else return (ZPOOL_STATUS_HOSTID_MISMATCH); } /* * Pool last accessed by another system. */ (void) nvlist_lookup_uint64(config, ZPOOL_CONFIG_HOSTID, &hostid); if (hostid != 0 && (unsigned long)hostid != system_hostid && stateval == POOL_STATE_ACTIVE) return (ZPOOL_STATUS_HOSTID_MISMATCH); /* * Newer on-disk version. */ if (vs->vs_state == VDEV_STATE_CANT_OPEN && vs->vs_aux == VDEV_AUX_VERSION_NEWER) return (ZPOOL_STATUS_VERSION_NEWER); /* * Unsupported feature(s). */ if (vs->vs_state == VDEV_STATE_CANT_OPEN && vs->vs_aux == VDEV_AUX_UNSUP_FEAT) { nvlist_t *nvinfo; verify(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_LOAD_INFO, &nvinfo) == 0); if (nvlist_exists(nvinfo, ZPOOL_CONFIG_CAN_RDONLY)) return (ZPOOL_STATUS_UNSUP_FEAT_WRITE); return (ZPOOL_STATUS_UNSUP_FEAT_READ); } /* * Check that the config is complete. */ if (vs->vs_state == VDEV_STATE_CANT_OPEN && vs->vs_aux == VDEV_AUX_BAD_GUID_SUM) return (ZPOOL_STATUS_BAD_GUID_SUM); /* * Check whether the pool has suspended. */ if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_SUSPENDED, &suspended) == 0) { uint64_t reason; if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_SUSPENDED_REASON, &reason) == 0 && reason == ZIO_SUSPEND_MMP) return (ZPOOL_STATUS_IO_FAILURE_MMP); if (suspended == ZIO_FAILURE_MODE_CONTINUE) return (ZPOOL_STATUS_IO_FAILURE_CONTINUE); return (ZPOOL_STATUS_IO_FAILURE_WAIT); } /* * Could not read a log. */ if (vs->vs_state == VDEV_STATE_CANT_OPEN && vs->vs_aux == VDEV_AUX_BAD_LOG) { return (ZPOOL_STATUS_BAD_LOG); } /* * Bad devices in non-replicated config. */ if (vs->vs_state == VDEV_STATE_CANT_OPEN && find_vdev_problem(nvroot, vdev_faulted)) return (ZPOOL_STATUS_FAULTED_DEV_NR); if (vs->vs_state == VDEV_STATE_CANT_OPEN && find_vdev_problem(nvroot, vdev_missing)) return (ZPOOL_STATUS_MISSING_DEV_NR); if (vs->vs_state == VDEV_STATE_CANT_OPEN && find_vdev_problem(nvroot, vdev_broken)) return (ZPOOL_STATUS_CORRUPT_LABEL_NR); /* * Corrupted pool metadata */ if (vs->vs_state == VDEV_STATE_CANT_OPEN && vs->vs_aux == VDEV_AUX_CORRUPT_DATA) return (ZPOOL_STATUS_CORRUPT_POOL); /* * Persistent data errors. */ if (!isimport) { if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_ERRCOUNT, &nerr) == 0 && nerr != 0) return (ZPOOL_STATUS_CORRUPT_DATA); } /* * Missing devices in a replicated config. */ if (find_vdev_problem(nvroot, vdev_faulted)) return (ZPOOL_STATUS_FAULTED_DEV_R); if (find_vdev_problem(nvroot, vdev_missing)) return (ZPOOL_STATUS_MISSING_DEV_R); if (find_vdev_problem(nvroot, vdev_broken)) return (ZPOOL_STATUS_CORRUPT_LABEL_R); /* * Devices with errors */ if (!isimport && find_vdev_problem(nvroot, vdev_errors)) return (ZPOOL_STATUS_FAILING_DEV); /* * Offlined devices */ if (find_vdev_problem(nvroot, vdev_offlined)) return (ZPOOL_STATUS_OFFLINE_DEV); /* * Removed device */ if (find_vdev_problem(nvroot, vdev_removed)) return (ZPOOL_STATUS_REMOVED_DEV); /* * Informational errata available. */ (void) nvlist_lookup_uint64(config, ZPOOL_CONFIG_ERRATA, &errata); if (errata) { *erratap = errata; return (ZPOOL_STATUS_ERRATA); } /* * Outdated, but usable, version */ if (SPA_VERSION_IS_SUPPORTED(version) && version != SPA_VERSION) return (ZPOOL_STATUS_VERSION_OLDER); /* * Usable pool with disabled features */ if (version >= SPA_VERSION_FEATURES) { int i; nvlist_t *feat; if (isimport) { feat = fnvlist_lookup_nvlist(config, ZPOOL_CONFIG_LOAD_INFO); if (nvlist_exists(feat, ZPOOL_CONFIG_ENABLED_FEAT)) feat = fnvlist_lookup_nvlist(feat, ZPOOL_CONFIG_ENABLED_FEAT); } else { feat = fnvlist_lookup_nvlist(config, ZPOOL_CONFIG_FEATURE_STATS); } for (i = 0; i < SPA_FEATURES; i++) { zfeature_info_t *fi = &spa_feature_table[i]; if (!nvlist_exists(feat, fi->fi_guid)) return (ZPOOL_STATUS_FEAT_DISABLED); } } return (ZPOOL_STATUS_OK); } zpool_status_t zpool_get_status(zpool_handle_t *zhp, char **msgid, zpool_errata_t *errata) { zpool_status_t ret = check_status(zhp->zpool_config, B_FALSE, errata); if (msgid != NULL) { if (ret >= NMSGID) *msgid = NULL; else *msgid = zfs_msgid_table[ret]; } return (ret); } zpool_status_t zpool_import_status(nvlist_t *config, char **msgid, zpool_errata_t *errata) { zpool_status_t ret = check_status(config, B_TRUE, errata); if (ret >= NMSGID) *msgid = NULL; else *msgid = zfs_msgid_table[ret]; return (ret); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_iter.c0000644000000000000000000000007413607166147020145 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.931536756 zfs-0.8.3/lib/libzfs/libzfs_iter.c0000644016037001603700000003405713607166147020153 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013, 2015 by Delphix. All rights reserved. * Copyright 2014 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2019 Datto Inc. */ #include #include #include #include #include #include #include #include #include #include "libzfs_impl.h" int zfs_iter_clones(zfs_handle_t *zhp, zfs_iter_f func, void *data) { nvlist_t *nvl = zfs_get_clones_nvl(zhp); nvpair_t *pair; if (nvl == NULL) return (0); for (pair = nvlist_next_nvpair(nvl, NULL); pair != NULL; pair = nvlist_next_nvpair(nvl, pair)) { zfs_handle_t *clone = zfs_open(zhp->zfs_hdl, nvpair_name(pair), ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME); if (clone != NULL) { int err = func(clone, data); if (err != 0) return (err); } } return (0); } static int zfs_do_list_ioctl(zfs_handle_t *zhp, int arg, zfs_cmd_t *zc) { int rc; uint64_t orig_cookie; orig_cookie = zc->zc_cookie; top: (void) strlcpy(zc->zc_name, zhp->zfs_name, sizeof (zc->zc_name)); rc = ioctl(zhp->zfs_hdl->libzfs_fd, arg, zc); if (rc == -1) { switch (errno) { case ENOMEM: /* expand nvlist memory and try again */ if (zcmd_expand_dst_nvlist(zhp->zfs_hdl, zc) != 0) { zcmd_free_nvlists(zc); return (-1); } zc->zc_cookie = orig_cookie; goto top; /* * An errno value of ESRCH indicates normal completion. * If ENOENT is returned, then the underlying dataset * has been removed since we obtained the handle. */ case ESRCH: case ENOENT: rc = 1; break; default: rc = zfs_standard_error(zhp->zfs_hdl, errno, dgettext(TEXT_DOMAIN, "cannot iterate filesystems")); break; } } return (rc); } /* * Iterate over all child filesystems */ int zfs_iter_filesystems(zfs_handle_t *zhp, zfs_iter_f func, void *data) { zfs_cmd_t zc = {"\0"}; zfs_handle_t *nzhp; int ret; if (zhp->zfs_type != ZFS_TYPE_FILESYSTEM) return (0); if (zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0) != 0) return (-1); while ((ret = zfs_do_list_ioctl(zhp, ZFS_IOC_DATASET_LIST_NEXT, &zc)) == 0) { /* * Silently ignore errors, as the only plausible explanation is * that the pool has since been removed. */ if ((nzhp = make_dataset_handle_zc(zhp->zfs_hdl, &zc)) == NULL) { continue; } if ((ret = func(nzhp, data)) != 0) { zcmd_free_nvlists(&zc); return (ret); } } zcmd_free_nvlists(&zc); return ((ret < 0) ? ret : 0); } /* * Iterate over all snapshots */ int zfs_iter_snapshots(zfs_handle_t *zhp, boolean_t simple, zfs_iter_f func, void *data, uint64_t min_txg, uint64_t max_txg) { zfs_cmd_t zc = {"\0"}; zfs_handle_t *nzhp; int ret; nvlist_t *range_nvl = NULL; if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT || zhp->zfs_type == ZFS_TYPE_BOOKMARK) return (0); zc.zc_simple = simple; if (zcmd_alloc_dst_nvlist(zhp->zfs_hdl, &zc, 0) != 0) return (-1); if (min_txg != 0) { range_nvl = fnvlist_alloc(); fnvlist_add_uint64(range_nvl, SNAP_ITER_MIN_TXG, min_txg); } if (max_txg != 0) { if (range_nvl == NULL) range_nvl = fnvlist_alloc(); fnvlist_add_uint64(range_nvl, SNAP_ITER_MAX_TXG, max_txg); } if (range_nvl != NULL && zcmd_write_src_nvlist(zhp->zfs_hdl, &zc, range_nvl) != 0) { zcmd_free_nvlists(&zc); fnvlist_free(range_nvl); return (-1); } while ((ret = zfs_do_list_ioctl(zhp, ZFS_IOC_SNAPSHOT_LIST_NEXT, &zc)) == 0) { if (simple) nzhp = make_dataset_simple_handle_zc(zhp, &zc); else nzhp = make_dataset_handle_zc(zhp->zfs_hdl, &zc); if (nzhp == NULL) continue; if ((ret = func(nzhp, data)) != 0) { zcmd_free_nvlists(&zc); fnvlist_free(range_nvl); return (ret); } } zcmd_free_nvlists(&zc); fnvlist_free(range_nvl); return ((ret < 0) ? ret : 0); } /* * Iterate over all bookmarks */ int zfs_iter_bookmarks(zfs_handle_t *zhp, zfs_iter_f func, void *data) { zfs_handle_t *nzhp; nvlist_t *props = NULL; nvlist_t *bmarks = NULL; int err; nvpair_t *pair; if ((zfs_get_type(zhp) & (ZFS_TYPE_SNAPSHOT | ZFS_TYPE_BOOKMARK)) != 0) return (0); /* Setup the requested properties nvlist. */ props = fnvlist_alloc(); fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_GUID)); fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATETXG)); fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATION)); fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_IVSET_GUID)); if ((err = lzc_get_bookmarks(zhp->zfs_name, props, &bmarks)) != 0) goto out; for (pair = nvlist_next_nvpair(bmarks, NULL); pair != NULL; pair = nvlist_next_nvpair(bmarks, pair)) { char name[ZFS_MAX_DATASET_NAME_LEN]; char *bmark_name; nvlist_t *bmark_props; bmark_name = nvpair_name(pair); bmark_props = fnvpair_value_nvlist(pair); if (snprintf(name, sizeof (name), "%s#%s", zhp->zfs_name, bmark_name) >= sizeof (name)) { err = EINVAL; goto out; } nzhp = make_bookmark_handle(zhp, name, bmark_props); if (nzhp == NULL) continue; if ((err = func(nzhp, data)) != 0) goto out; } out: fnvlist_free(props); fnvlist_free(bmarks); return (err); } /* * Routines for dealing with the sorted snapshot functionality */ typedef struct zfs_node { zfs_handle_t *zn_handle; avl_node_t zn_avlnode; } zfs_node_t; static int zfs_sort_snaps(zfs_handle_t *zhp, void *data) { avl_tree_t *avl = data; zfs_node_t *node; zfs_node_t search; search.zn_handle = zhp; node = avl_find(avl, &search, NULL); if (node) { /* * If this snapshot was renamed while we were creating the * AVL tree, it's possible that we already inserted it under * its old name. Remove the old handle before adding the new * one. */ zfs_close(node->zn_handle); avl_remove(avl, node); free(node); } node = zfs_alloc(zhp->zfs_hdl, sizeof (zfs_node_t)); node->zn_handle = zhp; avl_add(avl, node); return (0); } static int zfs_snapshot_compare(const void *larg, const void *rarg) { zfs_handle_t *l = ((zfs_node_t *)larg)->zn_handle; zfs_handle_t *r = ((zfs_node_t *)rarg)->zn_handle; uint64_t lcreate, rcreate; /* * Sort them according to creation time. We use the hidden * CREATETXG property to get an absolute ordering of snapshots. */ lcreate = zfs_prop_get_int(l, ZFS_PROP_CREATETXG); rcreate = zfs_prop_get_int(r, ZFS_PROP_CREATETXG); return (AVL_CMP(lcreate, rcreate)); } int zfs_iter_snapshots_sorted(zfs_handle_t *zhp, zfs_iter_f callback, void *data, uint64_t min_txg, uint64_t max_txg) { int ret = 0; zfs_node_t *node; avl_tree_t avl; void *cookie = NULL; avl_create(&avl, zfs_snapshot_compare, sizeof (zfs_node_t), offsetof(zfs_node_t, zn_avlnode)); ret = zfs_iter_snapshots(zhp, B_FALSE, zfs_sort_snaps, &avl, min_txg, max_txg); for (node = avl_first(&avl); node != NULL; node = AVL_NEXT(&avl, node)) ret |= callback(node->zn_handle, data); while ((node = avl_destroy_nodes(&avl, &cookie)) != NULL) free(node); avl_destroy(&avl); return (ret); } typedef struct { char *ssa_first; char *ssa_last; boolean_t ssa_seenfirst; boolean_t ssa_seenlast; zfs_iter_f ssa_func; void *ssa_arg; } snapspec_arg_t; static int snapspec_cb(zfs_handle_t *zhp, void *arg) { snapspec_arg_t *ssa = arg; const char *shortsnapname; int err = 0; if (ssa->ssa_seenlast) return (0); shortsnapname = strchr(zfs_get_name(zhp), '@') + 1; if (!ssa->ssa_seenfirst && strcmp(shortsnapname, ssa->ssa_first) == 0) ssa->ssa_seenfirst = B_TRUE; if (strcmp(shortsnapname, ssa->ssa_last) == 0) ssa->ssa_seenlast = B_TRUE; if (ssa->ssa_seenfirst) { err = ssa->ssa_func(zhp, ssa->ssa_arg); } else { zfs_close(zhp); } return (err); } /* * spec is a string like "A,B%C,D" * * , where can be: * (single snapshot) * % (range of snapshots, inclusive) * % (range of snapshots, starting with earliest) * % (range of snapshots, ending with last) * % (all snapshots) * [,...] (comma separated list of the above) * * If a snapshot can not be opened, continue trying to open the others, but * return ENOENT at the end. */ int zfs_iter_snapspec(zfs_handle_t *fs_zhp, const char *spec_orig, zfs_iter_f func, void *arg) { char *buf, *comma_separated, *cp; int err = 0; int ret = 0; buf = zfs_strdup(fs_zhp->zfs_hdl, spec_orig); cp = buf; while ((comma_separated = strsep(&cp, ",")) != NULL) { char *pct = strchr(comma_separated, '%'); if (pct != NULL) { snapspec_arg_t ssa = { 0 }; ssa.ssa_func = func; ssa.ssa_arg = arg; if (pct == comma_separated) ssa.ssa_seenfirst = B_TRUE; else ssa.ssa_first = comma_separated; *pct = '\0'; ssa.ssa_last = pct + 1; /* * If there is a lastname specified, make sure it * exists. */ if (ssa.ssa_last[0] != '\0') { char snapname[ZFS_MAX_DATASET_NAME_LEN]; (void) snprintf(snapname, sizeof (snapname), "%s@%s", zfs_get_name(fs_zhp), ssa.ssa_last); if (!zfs_dataset_exists(fs_zhp->zfs_hdl, snapname, ZFS_TYPE_SNAPSHOT)) { ret = ENOENT; continue; } } err = zfs_iter_snapshots_sorted(fs_zhp, snapspec_cb, &ssa, 0, 0); if (ret == 0) ret = err; if (ret == 0 && (!ssa.ssa_seenfirst || (ssa.ssa_last[0] != '\0' && !ssa.ssa_seenlast))) { ret = ENOENT; } } else { char snapname[ZFS_MAX_DATASET_NAME_LEN]; zfs_handle_t *snap_zhp; (void) snprintf(snapname, sizeof (snapname), "%s@%s", zfs_get_name(fs_zhp), comma_separated); snap_zhp = make_dataset_handle(fs_zhp->zfs_hdl, snapname); if (snap_zhp == NULL) { ret = ENOENT; continue; } err = func(snap_zhp, arg); if (ret == 0) ret = err; } } free(buf); return (ret); } /* * Iterate over all children, snapshots and filesystems * Process snapshots before filesystems because they are nearer the input * handle: this is extremely important when used with zfs_iter_f functions * looking for data, following the logic that we would like to find it as soon * and as close as possible. */ int zfs_iter_children(zfs_handle_t *zhp, zfs_iter_f func, void *data) { int ret; if ((ret = zfs_iter_snapshots(zhp, B_FALSE, func, data, 0, 0)) != 0) return (ret); return (zfs_iter_filesystems(zhp, func, data)); } typedef struct iter_stack_frame { struct iter_stack_frame *next; zfs_handle_t *zhp; } iter_stack_frame_t; typedef struct iter_dependents_arg { boolean_t first; boolean_t allowrecursion; iter_stack_frame_t *stack; zfs_iter_f func; void *data; } iter_dependents_arg_t; static int iter_dependents_cb(zfs_handle_t *zhp, void *arg) { iter_dependents_arg_t *ida = arg; int err = 0; boolean_t first = ida->first; ida->first = B_FALSE; if (zhp->zfs_type == ZFS_TYPE_SNAPSHOT) { err = zfs_iter_clones(zhp, iter_dependents_cb, ida); } else if (zhp->zfs_type != ZFS_TYPE_BOOKMARK) { iter_stack_frame_t isf; iter_stack_frame_t *f; /* * check if there is a cycle by seeing if this fs is already * on the stack. */ for (f = ida->stack; f != NULL; f = f->next) { if (f->zhp->zfs_dmustats.dds_guid == zhp->zfs_dmustats.dds_guid) { if (ida->allowrecursion) { zfs_close(zhp); return (0); } else { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "recursive dependency at '%s'"), zfs_get_name(zhp)); err = zfs_error(zhp->zfs_hdl, EZFS_RECURSIVE, dgettext(TEXT_DOMAIN, "cannot determine dependent " "datasets")); zfs_close(zhp); return (err); } } } isf.zhp = zhp; isf.next = ida->stack; ida->stack = &isf; err = zfs_iter_filesystems(zhp, iter_dependents_cb, ida); if (err == 0) err = zfs_iter_snapshots(zhp, B_FALSE, iter_dependents_cb, ida, 0, 0); ida->stack = isf.next; } if (!first && err == 0) err = ida->func(zhp, ida->data); else zfs_close(zhp); return (err); } int zfs_iter_dependents(zfs_handle_t *zhp, boolean_t allowrecursion, zfs_iter_f func, void *data) { iter_dependents_arg_t ida; ida.allowrecursion = allowrecursion; ida.stack = NULL; ida.func = func; ida.data = data; ida.first = B_TRUE; return (iter_dependents_cb(zfs_handle_dup(zhp), &ida)); } /* * Iterate over mounted children of the specified dataset */ int zfs_iter_mounted(zfs_handle_t *zhp, zfs_iter_f func, void *data) { char mnt_prop[ZFS_MAXPROPLEN]; struct mnttab entry; zfs_handle_t *mtab_zhp; size_t namelen = strlen(zhp->zfs_name); FILE *mnttab; int err = 0; if ((mnttab = fopen(MNTTAB, "r")) == NULL) return (ENOENT); while (err == 0 && getmntent(mnttab, &entry) == 0) { /* Ignore non-ZFS entries */ if (strcmp(entry.mnt_fstype, MNTTYPE_ZFS) != 0) continue; /* Ignore datasets not within the provided dataset */ if (strncmp(entry.mnt_special, zhp->zfs_name, namelen) != 0 || (entry.mnt_special[namelen] != '/' && entry.mnt_special[namelen] != '@')) continue; if ((mtab_zhp = zfs_open(zhp->zfs_hdl, entry.mnt_special, ZFS_TYPE_FILESYSTEM)) == NULL) continue; /* Ignore legacy mounts as they are user managed */ verify(zfs_prop_get(mtab_zhp, ZFS_PROP_MOUNTPOINT, mnt_prop, sizeof (mnt_prop), NULL, NULL, 0, B_FALSE) == 0); if (strcmp(mnt_prop, "legacy") == 0) { zfs_close(mtab_zhp); continue; } err = func(mtab_zhp, data); } fclose(mnttab); return (err); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_util.c0000644000000000000000000000007413612141515020143 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.943537142 zfs-0.8.3/lib/libzfs/libzfs_util.c0000644016037001603700000014177513612141515020157 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2018, Joyent, Inc. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright 2016 Igor Kozhukhov * Copyright (c) 2017 Datto Inc. */ /* * Internal utility routines for the ZFS library. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "libzfs_impl.h" #include "zfs_prop.h" #include "zfeature_common.h" #include #include #include int libzfs_errno(libzfs_handle_t *hdl) { return (hdl->libzfs_error); } const char * libzfs_error_init(int error) { switch (error) { case ENXIO: return (dgettext(TEXT_DOMAIN, "The ZFS modules are not " "loaded.\nTry running '/sbin/modprobe zfs' as root " "to load them.")); case ENOENT: return (dgettext(TEXT_DOMAIN, "/dev/zfs and /proc/self/mounts " "are required.\nTry running 'udevadm trigger' and 'mount " "-t proc proc /proc' as root.")); case ENOEXEC: return (dgettext(TEXT_DOMAIN, "The ZFS modules cannot be " "auto-loaded.\nTry running '/sbin/modprobe zfs' as " "root to manually load them.")); case EACCES: return (dgettext(TEXT_DOMAIN, "Permission denied the " "ZFS utilities must be run as root.")); default: return (dgettext(TEXT_DOMAIN, "Failed to initialize the " "libzfs library.")); } } const char * libzfs_error_action(libzfs_handle_t *hdl) { return (hdl->libzfs_action); } const char * libzfs_error_description(libzfs_handle_t *hdl) { if (hdl->libzfs_desc[0] != '\0') return (hdl->libzfs_desc); switch (hdl->libzfs_error) { case EZFS_NOMEM: return (dgettext(TEXT_DOMAIN, "out of memory")); case EZFS_BADPROP: return (dgettext(TEXT_DOMAIN, "invalid property value")); case EZFS_PROPREADONLY: return (dgettext(TEXT_DOMAIN, "read-only property")); case EZFS_PROPTYPE: return (dgettext(TEXT_DOMAIN, "property doesn't apply to " "datasets of this type")); case EZFS_PROPNONINHERIT: return (dgettext(TEXT_DOMAIN, "property cannot be inherited")); case EZFS_PROPSPACE: return (dgettext(TEXT_DOMAIN, "invalid quota or reservation")); case EZFS_BADTYPE: return (dgettext(TEXT_DOMAIN, "operation not applicable to " "datasets of this type")); case EZFS_BUSY: return (dgettext(TEXT_DOMAIN, "pool or dataset is busy")); case EZFS_EXISTS: return (dgettext(TEXT_DOMAIN, "pool or dataset exists")); case EZFS_NOENT: return (dgettext(TEXT_DOMAIN, "no such pool or dataset")); case EZFS_BADSTREAM: return (dgettext(TEXT_DOMAIN, "invalid backup stream")); case EZFS_DSREADONLY: return (dgettext(TEXT_DOMAIN, "dataset is read-only")); case EZFS_VOLTOOBIG: return (dgettext(TEXT_DOMAIN, "volume size exceeds limit for " "this system")); case EZFS_INVALIDNAME: return (dgettext(TEXT_DOMAIN, "invalid name")); case EZFS_BADRESTORE: return (dgettext(TEXT_DOMAIN, "unable to restore to " "destination")); case EZFS_BADBACKUP: return (dgettext(TEXT_DOMAIN, "backup failed")); case EZFS_BADTARGET: return (dgettext(TEXT_DOMAIN, "invalid target vdev")); case EZFS_NODEVICE: return (dgettext(TEXT_DOMAIN, "no such device in pool")); case EZFS_BADDEV: return (dgettext(TEXT_DOMAIN, "invalid device")); case EZFS_NOREPLICAS: return (dgettext(TEXT_DOMAIN, "no valid replicas")); case EZFS_RESILVERING: return (dgettext(TEXT_DOMAIN, "currently resilvering")); case EZFS_BADVERSION: return (dgettext(TEXT_DOMAIN, "unsupported version or " "feature")); case EZFS_POOLUNAVAIL: return (dgettext(TEXT_DOMAIN, "pool is unavailable")); case EZFS_DEVOVERFLOW: return (dgettext(TEXT_DOMAIN, "too many devices in one vdev")); case EZFS_BADPATH: return (dgettext(TEXT_DOMAIN, "must be an absolute path")); case EZFS_CROSSTARGET: return (dgettext(TEXT_DOMAIN, "operation crosses datasets or " "pools")); case EZFS_ZONED: return (dgettext(TEXT_DOMAIN, "dataset in use by local zone")); case EZFS_MOUNTFAILED: return (dgettext(TEXT_DOMAIN, "mount failed")); case EZFS_UMOUNTFAILED: return (dgettext(TEXT_DOMAIN, "umount failed")); case EZFS_UNSHARENFSFAILED: return (dgettext(TEXT_DOMAIN, "unshare(1M) failed")); case EZFS_SHARENFSFAILED: return (dgettext(TEXT_DOMAIN, "share(1M) failed")); case EZFS_UNSHARESMBFAILED: return (dgettext(TEXT_DOMAIN, "smb remove share failed")); case EZFS_SHARESMBFAILED: return (dgettext(TEXT_DOMAIN, "smb add share failed")); case EZFS_PERM: return (dgettext(TEXT_DOMAIN, "permission denied")); case EZFS_NOSPC: return (dgettext(TEXT_DOMAIN, "out of space")); case EZFS_FAULT: return (dgettext(TEXT_DOMAIN, "bad address")); case EZFS_IO: return (dgettext(TEXT_DOMAIN, "I/O error")); case EZFS_INTR: return (dgettext(TEXT_DOMAIN, "signal received")); case EZFS_ISSPARE: return (dgettext(TEXT_DOMAIN, "device is reserved as a hot " "spare")); case EZFS_INVALCONFIG: return (dgettext(TEXT_DOMAIN, "invalid vdev configuration")); case EZFS_RECURSIVE: return (dgettext(TEXT_DOMAIN, "recursive dataset dependency")); case EZFS_NOHISTORY: return (dgettext(TEXT_DOMAIN, "no history available")); case EZFS_POOLPROPS: return (dgettext(TEXT_DOMAIN, "failed to retrieve " "pool properties")); case EZFS_POOL_NOTSUP: return (dgettext(TEXT_DOMAIN, "operation not supported " "on this type of pool")); case EZFS_POOL_INVALARG: return (dgettext(TEXT_DOMAIN, "invalid argument for " "this pool operation")); case EZFS_NAMETOOLONG: return (dgettext(TEXT_DOMAIN, "dataset name is too long")); case EZFS_OPENFAILED: return (dgettext(TEXT_DOMAIN, "open failed")); case EZFS_NOCAP: return (dgettext(TEXT_DOMAIN, "disk capacity information could not be retrieved")); case EZFS_LABELFAILED: return (dgettext(TEXT_DOMAIN, "write of label failed")); case EZFS_BADWHO: return (dgettext(TEXT_DOMAIN, "invalid user/group")); case EZFS_BADPERM: return (dgettext(TEXT_DOMAIN, "invalid permission")); case EZFS_BADPERMSET: return (dgettext(TEXT_DOMAIN, "invalid permission set name")); case EZFS_NODELEGATION: return (dgettext(TEXT_DOMAIN, "delegated administration is " "disabled on pool")); case EZFS_BADCACHE: return (dgettext(TEXT_DOMAIN, "invalid or missing cache file")); case EZFS_ISL2CACHE: return (dgettext(TEXT_DOMAIN, "device is in use as a cache")); case EZFS_VDEVNOTSUP: return (dgettext(TEXT_DOMAIN, "vdev specification is not " "supported")); case EZFS_NOTSUP: return (dgettext(TEXT_DOMAIN, "operation not supported " "on this dataset")); case EZFS_IOC_NOTSUPPORTED: return (dgettext(TEXT_DOMAIN, "operation not supported by " "zfs kernel module")); case EZFS_ACTIVE_SPARE: return (dgettext(TEXT_DOMAIN, "pool has active shared spare " "device")); case EZFS_UNPLAYED_LOGS: return (dgettext(TEXT_DOMAIN, "log device has unplayed intent " "logs")); case EZFS_REFTAG_RELE: return (dgettext(TEXT_DOMAIN, "no such tag on this dataset")); case EZFS_REFTAG_HOLD: return (dgettext(TEXT_DOMAIN, "tag already exists on this " "dataset")); case EZFS_TAGTOOLONG: return (dgettext(TEXT_DOMAIN, "tag too long")); case EZFS_PIPEFAILED: return (dgettext(TEXT_DOMAIN, "pipe create failed")); case EZFS_THREADCREATEFAILED: return (dgettext(TEXT_DOMAIN, "thread create failed")); case EZFS_POSTSPLIT_ONLINE: return (dgettext(TEXT_DOMAIN, "disk was split from this pool " "into a new one")); case EZFS_SCRUB_PAUSED: return (dgettext(TEXT_DOMAIN, "scrub is paused; " "use 'zpool scrub' to resume")); case EZFS_SCRUBBING: return (dgettext(TEXT_DOMAIN, "currently scrubbing; " "use 'zpool scrub -s' to cancel current scrub")); case EZFS_NO_SCRUB: return (dgettext(TEXT_DOMAIN, "there is no active scrub")); case EZFS_DIFF: return (dgettext(TEXT_DOMAIN, "unable to generate diffs")); case EZFS_DIFFDATA: return (dgettext(TEXT_DOMAIN, "invalid diff data")); case EZFS_POOLREADONLY: return (dgettext(TEXT_DOMAIN, "pool is read-only")); case EZFS_NO_PENDING: return (dgettext(TEXT_DOMAIN, "operation is not " "in progress")); case EZFS_CHECKPOINT_EXISTS: return (dgettext(TEXT_DOMAIN, "checkpoint exists")); case EZFS_DISCARDING_CHECKPOINT: return (dgettext(TEXT_DOMAIN, "currently discarding " "checkpoint")); case EZFS_NO_CHECKPOINT: return (dgettext(TEXT_DOMAIN, "checkpoint does not exist")); case EZFS_DEVRM_IN_PROGRESS: return (dgettext(TEXT_DOMAIN, "device removal in progress")); case EZFS_VDEV_TOO_BIG: return (dgettext(TEXT_DOMAIN, "device exceeds supported size")); case EZFS_ACTIVE_POOL: return (dgettext(TEXT_DOMAIN, "pool is imported on a " "different host")); case EZFS_CRYPTOFAILED: return (dgettext(TEXT_DOMAIN, "encryption failure")); case EZFS_TOOMANY: return (dgettext(TEXT_DOMAIN, "argument list too long")); case EZFS_INITIALIZING: return (dgettext(TEXT_DOMAIN, "currently initializing")); case EZFS_NO_INITIALIZE: return (dgettext(TEXT_DOMAIN, "there is no active " "initialization")); case EZFS_WRONG_PARENT: return (dgettext(TEXT_DOMAIN, "invalid parent dataset")); case EZFS_TRIMMING: return (dgettext(TEXT_DOMAIN, "currently trimming")); case EZFS_NO_TRIM: return (dgettext(TEXT_DOMAIN, "there is no active trim")); case EZFS_TRIM_NOTSUP: return (dgettext(TEXT_DOMAIN, "trim operations are not " "supported by this device")); case EZFS_NO_RESILVER_DEFER: return (dgettext(TEXT_DOMAIN, "this action requires the " "resilver_defer feature")); case EZFS_EXPORT_IN_PROGRESS: return (dgettext(TEXT_DOMAIN, "pool export in progress")); case EZFS_UNKNOWN: return (dgettext(TEXT_DOMAIN, "unknown error")); default: assert(hdl->libzfs_error == 0); return (dgettext(TEXT_DOMAIN, "no error")); } } /*PRINTFLIKE2*/ void zfs_error_aux(libzfs_handle_t *hdl, const char *fmt, ...) { va_list ap; va_start(ap, fmt); (void) vsnprintf(hdl->libzfs_desc, sizeof (hdl->libzfs_desc), fmt, ap); hdl->libzfs_desc_active = 1; va_end(ap); } static void zfs_verror(libzfs_handle_t *hdl, int error, const char *fmt, va_list ap) { (void) vsnprintf(hdl->libzfs_action, sizeof (hdl->libzfs_action), fmt, ap); hdl->libzfs_error = error; if (hdl->libzfs_desc_active) hdl->libzfs_desc_active = 0; else hdl->libzfs_desc[0] = '\0'; if (hdl->libzfs_printerr) { if (error == EZFS_UNKNOWN) { (void) fprintf(stderr, dgettext(TEXT_DOMAIN, "internal " "error: %s\n"), libzfs_error_description(hdl)); abort(); } (void) fprintf(stderr, "%s: %s\n", hdl->libzfs_action, libzfs_error_description(hdl)); if (error == EZFS_NOMEM) exit(1); } } int zfs_error(libzfs_handle_t *hdl, int error, const char *msg) { return (zfs_error_fmt(hdl, error, "%s", msg)); } /*PRINTFLIKE3*/ int zfs_error_fmt(libzfs_handle_t *hdl, int error, const char *fmt, ...) { va_list ap; va_start(ap, fmt); zfs_verror(hdl, error, fmt, ap); va_end(ap); return (-1); } static int zfs_common_error(libzfs_handle_t *hdl, int error, const char *fmt, va_list ap) { switch (error) { case EPERM: case EACCES: zfs_verror(hdl, EZFS_PERM, fmt, ap); return (-1); case ECANCELED: zfs_verror(hdl, EZFS_NODELEGATION, fmt, ap); return (-1); case EIO: zfs_verror(hdl, EZFS_IO, fmt, ap); return (-1); case EFAULT: zfs_verror(hdl, EZFS_FAULT, fmt, ap); return (-1); case EINTR: zfs_verror(hdl, EZFS_INTR, fmt, ap); return (-1); } return (0); } int zfs_standard_error(libzfs_handle_t *hdl, int error, const char *msg) { return (zfs_standard_error_fmt(hdl, error, "%s", msg)); } /*PRINTFLIKE3*/ int zfs_standard_error_fmt(libzfs_handle_t *hdl, int error, const char *fmt, ...) { va_list ap; va_start(ap, fmt); if (zfs_common_error(hdl, error, fmt, ap) != 0) { va_end(ap); return (-1); } switch (error) { case ENXIO: case ENODEV: case EPIPE: zfs_verror(hdl, EZFS_IO, fmt, ap); break; case ENOENT: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "dataset does not exist")); zfs_verror(hdl, EZFS_NOENT, fmt, ap); break; case ENOSPC: case EDQUOT: zfs_verror(hdl, EZFS_NOSPC, fmt, ap); break; case EEXIST: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "dataset already exists")); zfs_verror(hdl, EZFS_EXISTS, fmt, ap); break; case EBUSY: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "dataset is busy")); zfs_verror(hdl, EZFS_BUSY, fmt, ap); break; case EROFS: zfs_verror(hdl, EZFS_POOLREADONLY, fmt, ap); break; case ENAMETOOLONG: zfs_verror(hdl, EZFS_NAMETOOLONG, fmt, ap); break; case ENOTSUP: zfs_verror(hdl, EZFS_BADVERSION, fmt, ap); break; case EAGAIN: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool I/O is currently suspended")); zfs_verror(hdl, EZFS_POOLUNAVAIL, fmt, ap); break; case EREMOTEIO: zfs_verror(hdl, EZFS_ACTIVE_POOL, fmt, ap); break; case ZFS_ERR_IOC_CMD_UNAVAIL: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "the loaded zfs " "module does not support this operation. A reboot may " "be required to enable this operation.")); zfs_verror(hdl, EZFS_IOC_NOTSUPPORTED, fmt, ap); break; case ZFS_ERR_IOC_ARG_UNAVAIL: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "the loaded zfs " "module does not support an option for this operation. " "A reboot may be required to enable this option.")); zfs_verror(hdl, EZFS_IOC_NOTSUPPORTED, fmt, ap); break; case ZFS_ERR_IOC_ARG_REQUIRED: case ZFS_ERR_IOC_ARG_BADTYPE: zfs_verror(hdl, EZFS_IOC_NOTSUPPORTED, fmt, ap); break; case ZFS_ERR_WRONG_PARENT: zfs_verror(hdl, EZFS_WRONG_PARENT, fmt, ap); break; default: zfs_error_aux(hdl, strerror(error)); zfs_verror(hdl, EZFS_UNKNOWN, fmt, ap); break; } va_end(ap); return (-1); } int zpool_standard_error(libzfs_handle_t *hdl, int error, const char *msg) { return (zpool_standard_error_fmt(hdl, error, "%s", msg)); } /*PRINTFLIKE3*/ int zpool_standard_error_fmt(libzfs_handle_t *hdl, int error, const char *fmt, ...) { va_list ap; va_start(ap, fmt); if (zfs_common_error(hdl, error, fmt, ap) != 0) { va_end(ap); return (-1); } switch (error) { case ENODEV: zfs_verror(hdl, EZFS_NODEVICE, fmt, ap); break; case ENOENT: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "no such pool or dataset")); zfs_verror(hdl, EZFS_NOENT, fmt, ap); break; case EEXIST: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool already exists")); zfs_verror(hdl, EZFS_EXISTS, fmt, ap); break; case EBUSY: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool is busy")); zfs_verror(hdl, EZFS_BUSY, fmt, ap); break; /* There is no pending operation to cancel */ case ENOTACTIVE: zfs_verror(hdl, EZFS_NO_PENDING, fmt, ap); break; case ENXIO: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "one or more devices is currently unavailable")); zfs_verror(hdl, EZFS_BADDEV, fmt, ap); break; case ENAMETOOLONG: zfs_verror(hdl, EZFS_DEVOVERFLOW, fmt, ap); break; case ENOTSUP: zfs_verror(hdl, EZFS_POOL_NOTSUP, fmt, ap); break; case EINVAL: zfs_verror(hdl, EZFS_POOL_INVALARG, fmt, ap); break; case ENOSPC: case EDQUOT: zfs_verror(hdl, EZFS_NOSPC, fmt, ap); return (-1); case EAGAIN: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "pool I/O is currently suspended")); zfs_verror(hdl, EZFS_POOLUNAVAIL, fmt, ap); break; case EROFS: zfs_verror(hdl, EZFS_POOLREADONLY, fmt, ap); break; case EDOM: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "block size out of range or does not match")); zfs_verror(hdl, EZFS_BADPROP, fmt, ap); break; case EREMOTEIO: zfs_verror(hdl, EZFS_ACTIVE_POOL, fmt, ap); break; case ZFS_ERR_CHECKPOINT_EXISTS: zfs_verror(hdl, EZFS_CHECKPOINT_EXISTS, fmt, ap); break; case ZFS_ERR_DISCARDING_CHECKPOINT: zfs_verror(hdl, EZFS_DISCARDING_CHECKPOINT, fmt, ap); break; case ZFS_ERR_NO_CHECKPOINT: zfs_verror(hdl, EZFS_NO_CHECKPOINT, fmt, ap); break; case ZFS_ERR_DEVRM_IN_PROGRESS: zfs_verror(hdl, EZFS_DEVRM_IN_PROGRESS, fmt, ap); break; case ZFS_ERR_VDEV_TOO_BIG: zfs_verror(hdl, EZFS_VDEV_TOO_BIG, fmt, ap); break; case ZFS_ERR_EXPORT_IN_PROGRESS: zfs_verror(hdl, EZFS_EXPORT_IN_PROGRESS, fmt, ap); break; case ZFS_ERR_IOC_CMD_UNAVAIL: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "the loaded zfs " "module does not support this operation. A reboot may " "be required to enable this operation.")); zfs_verror(hdl, EZFS_IOC_NOTSUPPORTED, fmt, ap); break; case ZFS_ERR_IOC_ARG_UNAVAIL: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "the loaded zfs " "module does not support an option for this operation. " "A reboot may be required to enable this option.")); zfs_verror(hdl, EZFS_IOC_NOTSUPPORTED, fmt, ap); break; case ZFS_ERR_IOC_ARG_REQUIRED: case ZFS_ERR_IOC_ARG_BADTYPE: zfs_verror(hdl, EZFS_IOC_NOTSUPPORTED, fmt, ap); break; default: zfs_error_aux(hdl, strerror(error)); zfs_verror(hdl, EZFS_UNKNOWN, fmt, ap); } va_end(ap); return (-1); } /* * Display an out of memory error message and abort the current program. */ int no_memory(libzfs_handle_t *hdl) { return (zfs_error(hdl, EZFS_NOMEM, "internal error")); } /* * A safe form of malloc() which will die if the allocation fails. */ void * zfs_alloc(libzfs_handle_t *hdl, size_t size) { void *data; if ((data = calloc(1, size)) == NULL) (void) no_memory(hdl); return (data); } /* * A safe form of asprintf() which will die if the allocation fails. */ /*PRINTFLIKE2*/ char * zfs_asprintf(libzfs_handle_t *hdl, const char *fmt, ...) { va_list ap; char *ret; int err; va_start(ap, fmt); err = vasprintf(&ret, fmt, ap); va_end(ap); if (err < 0) (void) no_memory(hdl); return (ret); } /* * A safe form of realloc(), which also zeroes newly allocated space. */ void * zfs_realloc(libzfs_handle_t *hdl, void *ptr, size_t oldsize, size_t newsize) { void *ret; if ((ret = realloc(ptr, newsize)) == NULL) { (void) no_memory(hdl); return (NULL); } bzero((char *)ret + oldsize, (newsize - oldsize)); return (ret); } /* * A safe form of strdup() which will die if the allocation fails. */ char * zfs_strdup(libzfs_handle_t *hdl, const char *str) { char *ret; if ((ret = strdup(str)) == NULL) (void) no_memory(hdl); return (ret); } void libzfs_print_on_error(libzfs_handle_t *hdl, boolean_t printerr) { hdl->libzfs_printerr = printerr; } static int libzfs_module_loaded(const char *module) { const char path_prefix[] = "/sys/module/"; char path[256]; memcpy(path, path_prefix, sizeof (path_prefix) - 1); strcpy(path + sizeof (path_prefix) - 1, module); return (access(path, F_OK) == 0); } /* * Read lines from an open file descriptor and store them in an array of * strings until EOF. lines[] will be allocated and populated with all the * lines read. All newlines are replaced with NULL terminators for * convenience. lines[] must be freed after use with libzfs_free_str_array(). * * Returns the number of lines read. */ static int libzfs_read_stdout_from_fd(int fd, char **lines[]) { FILE *fp; int lines_cnt = 0; size_t len = 0; char *line = NULL; char **tmp_lines = NULL, **tmp; char *nl = NULL; int rc; fp = fdopen(fd, "r"); if (fp == NULL) return (0); while (1) { rc = getline(&line, &len, fp); if (rc == -1) break; tmp = realloc(tmp_lines, sizeof (*tmp_lines) * (lines_cnt + 1)); if (tmp == NULL) { /* Return the lines we were able to process */ break; } tmp_lines = tmp; /* Terminate newlines */ if ((nl = strchr(line, '\n')) != NULL) *nl = '\0'; tmp_lines[lines_cnt] = line; lines_cnt++; line = NULL; } fclose(fp); *lines = tmp_lines; return (lines_cnt); } static int libzfs_run_process_impl(const char *path, char *argv[], char *env[], int flags, char **lines[], int *lines_cnt) { pid_t pid; int error, devnull_fd; int link[2]; /* * Setup a pipe between our child and parent process if we're * reading stdout. */ if ((lines != NULL) && pipe(link) == -1) return (-ESTRPIPE); pid = vfork(); if (pid == 0) { /* Child process */ devnull_fd = open("/dev/null", O_WRONLY); if (devnull_fd < 0) _exit(-1); if (!(flags & STDOUT_VERBOSE) && (lines == NULL)) (void) dup2(devnull_fd, STDOUT_FILENO); else if (lines != NULL) { /* Save the output to lines[] */ dup2(link[1], STDOUT_FILENO); close(link[0]); close(link[1]); } if (!(flags & STDERR_VERBOSE)) (void) dup2(devnull_fd, STDERR_FILENO); close(devnull_fd); if (flags & NO_DEFAULT_PATH) { if (env == NULL) execv(path, argv); else execve(path, argv, env); } else { if (env == NULL) execvp(path, argv); else execvpe(path, argv, env); } _exit(-1); } else if (pid > 0) { /* Parent process */ int status; while ((error = waitpid(pid, &status, 0)) == -1 && errno == EINTR) { } if (error < 0 || !WIFEXITED(status)) return (-1); if (lines != NULL) { close(link[1]); *lines_cnt = libzfs_read_stdout_from_fd(link[0], lines); } return (WEXITSTATUS(status)); } return (-1); } int libzfs_run_process(const char *path, char *argv[], int flags) { return (libzfs_run_process_impl(path, argv, NULL, flags, NULL, NULL)); } /* * Run a command and store its stdout lines in an array of strings (lines[]). * lines[] is allocated and populated for you, and the number of lines is set in * lines_cnt. lines[] must be freed after use with libzfs_free_str_array(). * All newlines (\n) in lines[] are terminated for convenience. */ int libzfs_run_process_get_stdout(const char *path, char *argv[], char *env[], char **lines[], int *lines_cnt) { return (libzfs_run_process_impl(path, argv, env, 0, lines, lines_cnt)); } /* * Same as libzfs_run_process_get_stdout(), but run without $PATH set. This * means that *path needs to be the full path to the executable. */ int libzfs_run_process_get_stdout_nopath(const char *path, char *argv[], char *env[], char **lines[], int *lines_cnt) { return (libzfs_run_process_impl(path, argv, env, NO_DEFAULT_PATH, lines, lines_cnt)); } /* * Free an array of strings. Free both the strings contained in the array and * the array itself. */ void libzfs_free_str_array(char **strs, int count) { while (--count >= 0) free(strs[count]); free(strs); } /* * Returns 1 if environment variable is set to "YES", "yes", "ON", "on", or * a non-zero number. * * Returns 0 otherwise. */ int libzfs_envvar_is_set(char *envvar) { char *env = getenv(envvar); if (env && (strtoul(env, NULL, 0) > 0 || (!strncasecmp(env, "YES", 3) && strnlen(env, 4) == 3) || (!strncasecmp(env, "ON", 2) && strnlen(env, 3) == 2))) return (1); return (0); } /* * Verify the required ZFS_DEV device is available and optionally attempt * to load the ZFS modules. Under normal circumstances the modules * should already have been loaded by some external mechanism. * * Environment variables: * - ZFS_MODULE_LOADING="YES|yes|ON|on" - Attempt to load modules. * - ZFS_MODULE_TIMEOUT="" - Seconds to wait for ZFS_DEV */ static int libzfs_load_module(const char *module) { char *argv[4] = {"/sbin/modprobe", "-q", (char *)module, (char *)0}; char *load_str, *timeout_str; long timeout = 10; /* seconds */ long busy_timeout = 10; /* milliseconds */ int load = 0, fd; hrtime_t start; /* Optionally request module loading */ if (!libzfs_module_loaded(module)) { load_str = getenv("ZFS_MODULE_LOADING"); if (load_str) { if (!strncasecmp(load_str, "YES", strlen("YES")) || !strncasecmp(load_str, "ON", strlen("ON"))) load = 1; else load = 0; } if (load) { if (libzfs_run_process("/sbin/modprobe", argv, 0)) return (ENOEXEC); } if (!libzfs_module_loaded(module)) return (ENXIO); } /* * Device creation by udev is asynchronous and waiting may be * required. Busy wait for 10ms and then fall back to polling every * 10ms for the allowed timeout (default 10s, max 10m). This is * done to optimize for the common case where the device is * immediately available and to avoid penalizing the possible * case where udev is slow or unable to create the device. */ timeout_str = getenv("ZFS_MODULE_TIMEOUT"); if (timeout_str) { timeout = strtol(timeout_str, NULL, 0); timeout = MAX(MIN(timeout, (10 * 60)), 0); /* 0 <= N <= 600 */ } start = gethrtime(); do { fd = open(ZFS_DEV, O_RDWR); if (fd >= 0) { (void) close(fd); return (0); } else if (errno != ENOENT) { return (errno); } else if (NSEC2MSEC(gethrtime() - start) < busy_timeout) { sched_yield(); } else { usleep(10 * MILLISEC); } } while (NSEC2MSEC(gethrtime() - start) < (timeout * MILLISEC)); return (ENOENT); } libzfs_handle_t * libzfs_init(void) { libzfs_handle_t *hdl; int error; error = libzfs_load_module(ZFS_DRIVER); if (error) { errno = error; return (NULL); } if ((hdl = calloc(1, sizeof (libzfs_handle_t))) == NULL) { return (NULL); } if ((hdl->libzfs_fd = open(ZFS_DEV, O_RDWR)) < 0) { free(hdl); return (NULL); } #ifdef HAVE_SETMNTENT if ((hdl->libzfs_mnttab = setmntent(MNTTAB, "r")) == NULL) { #else if ((hdl->libzfs_mnttab = fopen(MNTTAB, "r")) == NULL) { #endif (void) close(hdl->libzfs_fd); free(hdl); return (NULL); } hdl->libzfs_sharetab = fopen(ZFS_SHARETAB, "r"); if (libzfs_core_init() != 0) { (void) close(hdl->libzfs_fd); (void) fclose(hdl->libzfs_mnttab); if (hdl->libzfs_sharetab) (void) fclose(hdl->libzfs_sharetab); free(hdl); return (NULL); } zfs_prop_init(); zpool_prop_init(); zpool_feature_init(); libzfs_mnttab_init(hdl); fletcher_4_init(); if (getenv("ZFS_PROP_DEBUG") != NULL) { hdl->libzfs_prop_debug = B_TRUE; } /* * For testing, remove some settable properties and features */ if (libzfs_envvar_is_set("ZFS_SYSFS_PROP_SUPPORT_TEST")) { zprop_desc_t *proptbl; proptbl = zpool_prop_get_table(); proptbl[ZPOOL_PROP_COMMENT].pd_zfs_mod_supported = B_FALSE; proptbl = zfs_prop_get_table(); proptbl[ZFS_PROP_DNODESIZE].pd_zfs_mod_supported = B_FALSE; zfeature_info_t *ftbl = spa_feature_table; ftbl[SPA_FEATURE_LARGE_BLOCKS].fi_zfs_mod_supported = B_FALSE; } return (hdl); } void libzfs_fini(libzfs_handle_t *hdl) { (void) close(hdl->libzfs_fd); if (hdl->libzfs_mnttab) #ifdef HAVE_SETMNTENT (void) endmntent(hdl->libzfs_mnttab); #else (void) fclose(hdl->libzfs_mnttab); #endif if (hdl->libzfs_sharetab) (void) fclose(hdl->libzfs_sharetab); zfs_uninit_libshare(hdl); zpool_free_handles(hdl); namespace_clear(hdl); libzfs_mnttab_fini(hdl); libzfs_core_fini(); fletcher_4_fini(); free(hdl); } libzfs_handle_t * zpool_get_handle(zpool_handle_t *zhp) { return (zhp->zpool_hdl); } libzfs_handle_t * zfs_get_handle(zfs_handle_t *zhp) { return (zhp->zfs_hdl); } zpool_handle_t * zfs_get_pool_handle(const zfs_handle_t *zhp) { return (zhp->zpool_hdl); } /* * Given a name, determine whether or not it's a valid path * (starts with '/' or "./"). If so, walk the mnttab trying * to match the device number. If not, treat the path as an * fs/vol/snap/bkmark name. */ zfs_handle_t * zfs_path_to_zhandle(libzfs_handle_t *hdl, char *path, zfs_type_t argtype) { struct stat64 statbuf; struct extmnttab entry; int ret; if (path[0] != '/' && strncmp(path, "./", strlen("./")) != 0) { /* * It's not a valid path, assume it's a name of type 'argtype'. */ return (zfs_open(hdl, path, argtype)); } if (stat64(path, &statbuf) != 0) { (void) fprintf(stderr, "%s: %s\n", path, strerror(errno)); return (NULL); } /* Reopen MNTTAB to prevent reading stale data from open file */ if (freopen(MNTTAB, "r", hdl->libzfs_mnttab) == NULL) return (NULL); while ((ret = getextmntent(hdl->libzfs_mnttab, &entry, 0)) == 0) { if (makedevice(entry.mnt_major, entry.mnt_minor) == statbuf.st_dev) { break; } } if (ret != 0) { return (NULL); } if (strcmp(entry.mnt_fstype, MNTTYPE_ZFS) != 0) { (void) fprintf(stderr, gettext("'%s': not a ZFS filesystem\n"), path); return (NULL); } return (zfs_open(hdl, entry.mnt_special, ZFS_TYPE_FILESYSTEM)); } /* * Initialize the zc_nvlist_dst member to prepare for receiving an nvlist from * an ioctl(). */ int zcmd_alloc_dst_nvlist(libzfs_handle_t *hdl, zfs_cmd_t *zc, size_t len) { if (len == 0) len = 256 * 1024; zc->zc_nvlist_dst_size = len; zc->zc_nvlist_dst = (uint64_t)(uintptr_t)zfs_alloc(hdl, zc->zc_nvlist_dst_size); if (zc->zc_nvlist_dst == 0) return (-1); return (0); } /* * Called when an ioctl() which returns an nvlist fails with ENOMEM. This will * expand the nvlist to the size specified in 'zc_nvlist_dst_size', which was * filled in by the kernel to indicate the actual required size. */ int zcmd_expand_dst_nvlist(libzfs_handle_t *hdl, zfs_cmd_t *zc) { free((void *)(uintptr_t)zc->zc_nvlist_dst); zc->zc_nvlist_dst = (uint64_t)(uintptr_t)zfs_alloc(hdl, zc->zc_nvlist_dst_size); if (zc->zc_nvlist_dst == 0) return (-1); return (0); } /* * Called to free the src and dst nvlists stored in the command structure. */ void zcmd_free_nvlists(zfs_cmd_t *zc) { free((void *)(uintptr_t)zc->zc_nvlist_conf); free((void *)(uintptr_t)zc->zc_nvlist_src); free((void *)(uintptr_t)zc->zc_nvlist_dst); zc->zc_nvlist_conf = 0; zc->zc_nvlist_src = 0; zc->zc_nvlist_dst = 0; } static int zcmd_write_nvlist_com(libzfs_handle_t *hdl, uint64_t *outnv, uint64_t *outlen, nvlist_t *nvl) { char *packed; size_t len; verify(nvlist_size(nvl, &len, NV_ENCODE_NATIVE) == 0); if ((packed = zfs_alloc(hdl, len)) == NULL) return (-1); verify(nvlist_pack(nvl, &packed, &len, NV_ENCODE_NATIVE, 0) == 0); *outnv = (uint64_t)(uintptr_t)packed; *outlen = len; return (0); } int zcmd_write_conf_nvlist(libzfs_handle_t *hdl, zfs_cmd_t *zc, nvlist_t *nvl) { return (zcmd_write_nvlist_com(hdl, &zc->zc_nvlist_conf, &zc->zc_nvlist_conf_size, nvl)); } int zcmd_write_src_nvlist(libzfs_handle_t *hdl, zfs_cmd_t *zc, nvlist_t *nvl) { return (zcmd_write_nvlist_com(hdl, &zc->zc_nvlist_src, &zc->zc_nvlist_src_size, nvl)); } /* * Unpacks an nvlist from the ZFS ioctl command structure. */ int zcmd_read_dst_nvlist(libzfs_handle_t *hdl, zfs_cmd_t *zc, nvlist_t **nvlp) { if (nvlist_unpack((void *)(uintptr_t)zc->zc_nvlist_dst, zc->zc_nvlist_dst_size, nvlp, 0) != 0) return (no_memory(hdl)); return (0); } int zfs_ioctl(libzfs_handle_t *hdl, int request, zfs_cmd_t *zc) { return (ioctl(hdl->libzfs_fd, request, zc)); } /* * ================================================================ * API shared by zfs and zpool property management * ================================================================ */ static void zprop_print_headers(zprop_get_cbdata_t *cbp, zfs_type_t type) { zprop_list_t *pl = cbp->cb_proplist; int i; char *title; size_t len; cbp->cb_first = B_FALSE; if (cbp->cb_scripted) return; /* * Start with the length of the column headers. */ cbp->cb_colwidths[GET_COL_NAME] = strlen(dgettext(TEXT_DOMAIN, "NAME")); cbp->cb_colwidths[GET_COL_PROPERTY] = strlen(dgettext(TEXT_DOMAIN, "PROPERTY")); cbp->cb_colwidths[GET_COL_VALUE] = strlen(dgettext(TEXT_DOMAIN, "VALUE")); cbp->cb_colwidths[GET_COL_RECVD] = strlen(dgettext(TEXT_DOMAIN, "RECEIVED")); cbp->cb_colwidths[GET_COL_SOURCE] = strlen(dgettext(TEXT_DOMAIN, "SOURCE")); /* first property is always NAME */ assert(cbp->cb_proplist->pl_prop == ((type == ZFS_TYPE_POOL) ? ZPOOL_PROP_NAME : ZFS_PROP_NAME)); /* * Go through and calculate the widths for each column. For the * 'source' column, we kludge it up by taking the worst-case scenario of * inheriting from the longest name. This is acceptable because in the * majority of cases 'SOURCE' is the last column displayed, and we don't * use the width anyway. Note that the 'VALUE' column can be oversized, * if the name of the property is much longer than any values we find. */ for (pl = cbp->cb_proplist; pl != NULL; pl = pl->pl_next) { /* * 'PROPERTY' column */ if (pl->pl_prop != ZPROP_INVAL) { const char *propname = (type == ZFS_TYPE_POOL) ? zpool_prop_to_name(pl->pl_prop) : zfs_prop_to_name(pl->pl_prop); len = strlen(propname); if (len > cbp->cb_colwidths[GET_COL_PROPERTY]) cbp->cb_colwidths[GET_COL_PROPERTY] = len; } else { len = strlen(pl->pl_user_prop); if (len > cbp->cb_colwidths[GET_COL_PROPERTY]) cbp->cb_colwidths[GET_COL_PROPERTY] = len; } /* * 'VALUE' column. The first property is always the 'name' * property that was tacked on either by /sbin/zfs's * zfs_do_get() or when calling zprop_expand_list(), so we * ignore its width. If the user specified the name property * to display, then it will be later in the list in any case. */ if (pl != cbp->cb_proplist && pl->pl_width > cbp->cb_colwidths[GET_COL_VALUE]) cbp->cb_colwidths[GET_COL_VALUE] = pl->pl_width; /* 'RECEIVED' column. */ if (pl != cbp->cb_proplist && pl->pl_recvd_width > cbp->cb_colwidths[GET_COL_RECVD]) cbp->cb_colwidths[GET_COL_RECVD] = pl->pl_recvd_width; /* * 'NAME' and 'SOURCE' columns */ if (pl->pl_prop == (type == ZFS_TYPE_POOL ? ZPOOL_PROP_NAME : ZFS_PROP_NAME) && pl->pl_width > cbp->cb_colwidths[GET_COL_NAME]) { cbp->cb_colwidths[GET_COL_NAME] = pl->pl_width; cbp->cb_colwidths[GET_COL_SOURCE] = pl->pl_width + strlen(dgettext(TEXT_DOMAIN, "inherited from")); } } /* * Now go through and print the headers. */ for (i = 0; i < ZFS_GET_NCOLS; i++) { switch (cbp->cb_columns[i]) { case GET_COL_NAME: title = dgettext(TEXT_DOMAIN, "NAME"); break; case GET_COL_PROPERTY: title = dgettext(TEXT_DOMAIN, "PROPERTY"); break; case GET_COL_VALUE: title = dgettext(TEXT_DOMAIN, "VALUE"); break; case GET_COL_RECVD: title = dgettext(TEXT_DOMAIN, "RECEIVED"); break; case GET_COL_SOURCE: title = dgettext(TEXT_DOMAIN, "SOURCE"); break; default: title = NULL; } if (title != NULL) { if (i == (ZFS_GET_NCOLS - 1) || cbp->cb_columns[i + 1] == GET_COL_NONE) (void) printf("%s", title); else (void) printf("%-*s ", cbp->cb_colwidths[cbp->cb_columns[i]], title); } } (void) printf("\n"); } /* * Display a single line of output, according to the settings in the callback * structure. */ void zprop_print_one_property(const char *name, zprop_get_cbdata_t *cbp, const char *propname, const char *value, zprop_source_t sourcetype, const char *source, const char *recvd_value) { int i; const char *str = NULL; char buf[128]; /* * Ignore those source types that the user has chosen to ignore. */ if ((sourcetype & cbp->cb_sources) == 0) return; if (cbp->cb_first) zprop_print_headers(cbp, cbp->cb_type); for (i = 0; i < ZFS_GET_NCOLS; i++) { switch (cbp->cb_columns[i]) { case GET_COL_NAME: str = name; break; case GET_COL_PROPERTY: str = propname; break; case GET_COL_VALUE: str = value; break; case GET_COL_SOURCE: switch (sourcetype) { case ZPROP_SRC_NONE: str = "-"; break; case ZPROP_SRC_DEFAULT: str = "default"; break; case ZPROP_SRC_LOCAL: str = "local"; break; case ZPROP_SRC_TEMPORARY: str = "temporary"; break; case ZPROP_SRC_INHERITED: (void) snprintf(buf, sizeof (buf), "inherited from %s", source); str = buf; break; case ZPROP_SRC_RECEIVED: str = "received"; break; default: str = NULL; assert(!"unhandled zprop_source_t"); } break; case GET_COL_RECVD: str = (recvd_value == NULL ? "-" : recvd_value); break; default: continue; } if (i == (ZFS_GET_NCOLS - 1) || cbp->cb_columns[i + 1] == GET_COL_NONE) (void) printf("%s", str); else if (cbp->cb_scripted) (void) printf("%s\t", str); else (void) printf("%-*s ", cbp->cb_colwidths[cbp->cb_columns[i]], str); } (void) printf("\n"); } /* * Given a numeric suffix, convert the value into a number of bits that the * resulting value must be shifted. */ static int str2shift(libzfs_handle_t *hdl, const char *buf) { const char *ends = "BKMGTPEZ"; int i; if (buf[0] == '\0') return (0); for (i = 0; i < strlen(ends); i++) { if (toupper(buf[0]) == ends[i]) break; } if (i == strlen(ends)) { if (hdl) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid numeric suffix '%s'"), buf); return (-1); } /* * Allow 'G' = 'GB' = 'GiB', case-insensitively. * However, 'BB' and 'BiB' are disallowed. */ if (buf[1] == '\0' || (toupper(buf[0]) != 'B' && ((toupper(buf[1]) == 'B' && buf[2] == '\0') || (toupper(buf[1]) == 'I' && toupper(buf[2]) == 'B' && buf[3] == '\0')))) return (10 * i); if (hdl) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid numeric suffix '%s'"), buf); return (-1); } /* * Convert a string of the form '100G' into a real number. Used when setting * properties or creating a volume. 'buf' is used to place an extended error * message for the caller to use. */ int zfs_nicestrtonum(libzfs_handle_t *hdl, const char *value, uint64_t *num) { char *end; int shift; *num = 0; /* Check to see if this looks like a number. */ if ((value[0] < '0' || value[0] > '9') && value[0] != '.') { if (hdl) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "bad numeric value '%s'"), value); return (-1); } /* Rely on strtoull() to process the numeric portion. */ errno = 0; *num = strtoull(value, &end, 10); /* * Check for ERANGE, which indicates that the value is too large to fit * in a 64-bit value. */ if (errno == ERANGE) { if (hdl) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "numeric value is too large")); return (-1); } /* * If we have a decimal value, then do the computation with floating * point arithmetic. Otherwise, use standard arithmetic. */ if (*end == '.') { double fval = strtod(value, &end); if ((shift = str2shift(hdl, end)) == -1) return (-1); fval *= pow(2, shift); if (fval > UINT64_MAX) { if (hdl) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "numeric value is too large")); return (-1); } *num = (uint64_t)fval; } else { if ((shift = str2shift(hdl, end)) == -1) return (-1); /* Check for overflow */ if (shift >= 64 || (*num << shift) >> shift != *num) { if (hdl) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "numeric value is too large")); return (-1); } *num <<= shift; } return (0); } /* * Given a propname=value nvpair to set, parse any numeric properties * (index, boolean, etc) if they are specified as strings and add the * resulting nvpair to the returned nvlist. * * At the DSL layer, all properties are either 64-bit numbers or strings. * We want the user to be able to ignore this fact and specify properties * as native values (numbers, for example) or as strings (to simplify * command line utilities). This also handles converting index types * (compression, checksum, etc) from strings to their on-disk index. */ int zprop_parse_value(libzfs_handle_t *hdl, nvpair_t *elem, int prop, zfs_type_t type, nvlist_t *ret, char **svalp, uint64_t *ivalp, const char *errbuf) { data_type_t datatype = nvpair_type(elem); zprop_type_t proptype; const char *propname; char *value; boolean_t isnone = B_FALSE; boolean_t isauto = B_FALSE; int err = 0; if (type == ZFS_TYPE_POOL) { proptype = zpool_prop_get_type(prop); propname = zpool_prop_to_name(prop); } else { proptype = zfs_prop_get_type(prop); propname = zfs_prop_to_name(prop); } /* * Convert any properties to the internal DSL value types. */ *svalp = NULL; *ivalp = 0; switch (proptype) { case PROP_TYPE_STRING: if (datatype != DATA_TYPE_STRING) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be a string"), nvpair_name(elem)); goto error; } err = nvpair_value_string(elem, svalp); if (err != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is invalid"), nvpair_name(elem)); goto error; } if (strlen(*svalp) >= ZFS_MAXPROPLEN) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' is too long"), nvpair_name(elem)); goto error; } break; case PROP_TYPE_NUMBER: if (datatype == DATA_TYPE_STRING) { (void) nvpair_value_string(elem, &value); if (strcmp(value, "none") == 0) { isnone = B_TRUE; } else if (strcmp(value, "auto") == 0) { isauto = B_TRUE; } else if (zfs_nicestrtonum(hdl, value, ivalp) != 0) { goto error; } } else if (datatype == DATA_TYPE_UINT64) { (void) nvpair_value_uint64(elem, ivalp); } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be a number"), nvpair_name(elem)); goto error; } /* * Quota special: force 'none' and don't allow 0. */ if ((type & ZFS_TYPE_DATASET) && *ivalp == 0 && !isnone && (prop == ZFS_PROP_QUOTA || prop == ZFS_PROP_REFQUOTA)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "use 'none' to disable quota/refquota")); goto error; } /* * Special handling for "*_limit=none". In this case it's not * 0 but UINT64_MAX. */ if ((type & ZFS_TYPE_DATASET) && isnone && (prop == ZFS_PROP_FILESYSTEM_LIMIT || prop == ZFS_PROP_SNAPSHOT_LIMIT)) { *ivalp = UINT64_MAX; } /* * Special handling for setting 'refreservation' to 'auto'. Use * UINT64_MAX to tell the caller to use zfs_fix_auto_resv(). * 'auto' is only allowed on volumes. */ if (isauto) { switch (prop) { case ZFS_PROP_REFRESERVATION: if ((type & ZFS_TYPE_VOLUME) == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s=auto' only allowed on " "volumes"), nvpair_name(elem)); goto error; } *ivalp = UINT64_MAX; break; default: zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'auto' is invalid value for '%s'"), nvpair_name(elem)); goto error; } } break; case PROP_TYPE_INDEX: if (datatype != DATA_TYPE_STRING) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be a string"), nvpair_name(elem)); goto error; } (void) nvpair_value_string(elem, &value); if (zprop_string_to_index(prop, value, ivalp, type) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "'%s' must be one of '%s'"), propname, zprop_values(prop, type)); goto error; } break; default: abort(); } /* * Add the result to our return set of properties. */ if (*svalp != NULL) { if (nvlist_add_string(ret, propname, *svalp) != 0) { (void) no_memory(hdl); return (-1); } } else { if (nvlist_add_uint64(ret, propname, *ivalp) != 0) { (void) no_memory(hdl); return (-1); } } return (0); error: (void) zfs_error(hdl, EZFS_BADPROP, errbuf); return (-1); } static int addlist(libzfs_handle_t *hdl, char *propname, zprop_list_t **listp, zfs_type_t type) { int prop; zprop_list_t *entry; prop = zprop_name_to_prop(propname, type); if (prop != ZPROP_INVAL && !zprop_valid_for_type(prop, type, B_FALSE)) prop = ZPROP_INVAL; /* * When no property table entry can be found, return failure if * this is a pool property or if this isn't a user-defined * dataset property, */ if (prop == ZPROP_INVAL && ((type == ZFS_TYPE_POOL && !zpool_prop_feature(propname) && !zpool_prop_unsupported(propname)) || (type == ZFS_TYPE_DATASET && !zfs_prop_user(propname) && !zfs_prop_userquota(propname) && !zfs_prop_written(propname)))) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "invalid property '%s'"), propname); return (zfs_error(hdl, EZFS_BADPROP, dgettext(TEXT_DOMAIN, "bad property list"))); } if ((entry = zfs_alloc(hdl, sizeof (zprop_list_t))) == NULL) return (-1); entry->pl_prop = prop; if (prop == ZPROP_INVAL) { if ((entry->pl_user_prop = zfs_strdup(hdl, propname)) == NULL) { free(entry); return (-1); } entry->pl_width = strlen(propname); } else { entry->pl_width = zprop_width(prop, &entry->pl_fixed, type); } *listp = entry; return (0); } /* * Given a comma-separated list of properties, construct a property list * containing both user-defined and native properties. This function will * return a NULL list if 'all' is specified, which can later be expanded * by zprop_expand_list(). */ int zprop_get_list(libzfs_handle_t *hdl, char *props, zprop_list_t **listp, zfs_type_t type) { *listp = NULL; /* * If 'all' is specified, return a NULL list. */ if (strcmp(props, "all") == 0) return (0); /* * If no props were specified, return an error. */ if (props[0] == '\0') { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "no properties specified")); return (zfs_error(hdl, EZFS_BADPROP, dgettext(TEXT_DOMAIN, "bad property list"))); } /* * It would be nice to use getsubopt() here, but the inclusion of column * aliases makes this more effort than it's worth. */ while (*props != '\0') { size_t len; char *p; char c; if ((p = strchr(props, ',')) == NULL) { len = strlen(props); p = props + len; } else { len = p - props; } /* * Check for empty options. */ if (len == 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "empty property name")); return (zfs_error(hdl, EZFS_BADPROP, dgettext(TEXT_DOMAIN, "bad property list"))); } /* * Check all regular property names. */ c = props[len]; props[len] = '\0'; if (strcmp(props, "space") == 0) { static char *spaceprops[] = { "name", "avail", "used", "usedbysnapshots", "usedbydataset", "usedbyrefreservation", "usedbychildren", NULL }; int i; for (i = 0; spaceprops[i]; i++) { if (addlist(hdl, spaceprops[i], listp, type)) return (-1); listp = &(*listp)->pl_next; } } else { if (addlist(hdl, props, listp, type)) return (-1); listp = &(*listp)->pl_next; } props = p; if (c == ',') props++; } return (0); } void zprop_free_list(zprop_list_t *pl) { zprop_list_t *next; while (pl != NULL) { next = pl->pl_next; free(pl->pl_user_prop); free(pl); pl = next; } } typedef struct expand_data { zprop_list_t **last; libzfs_handle_t *hdl; zfs_type_t type; } expand_data_t; int zprop_expand_list_cb(int prop, void *cb) { zprop_list_t *entry; expand_data_t *edp = cb; if ((entry = zfs_alloc(edp->hdl, sizeof (zprop_list_t))) == NULL) return (ZPROP_INVAL); entry->pl_prop = prop; entry->pl_width = zprop_width(prop, &entry->pl_fixed, edp->type); entry->pl_all = B_TRUE; *(edp->last) = entry; edp->last = &entry->pl_next; return (ZPROP_CONT); } int zprop_expand_list(libzfs_handle_t *hdl, zprop_list_t **plp, zfs_type_t type) { zprop_list_t *entry; zprop_list_t **last; expand_data_t exp; if (*plp == NULL) { /* * If this is the very first time we've been called for an 'all' * specification, expand the list to include all native * properties. */ last = plp; exp.last = last; exp.hdl = hdl; exp.type = type; if (zprop_iter_common(zprop_expand_list_cb, &exp, B_FALSE, B_FALSE, type) == ZPROP_INVAL) return (-1); /* * Add 'name' to the beginning of the list, which is handled * specially. */ if ((entry = zfs_alloc(hdl, sizeof (zprop_list_t))) == NULL) return (-1); entry->pl_prop = (type == ZFS_TYPE_POOL) ? ZPOOL_PROP_NAME : ZFS_PROP_NAME; entry->pl_width = zprop_width(entry->pl_prop, &entry->pl_fixed, type); entry->pl_all = B_TRUE; entry->pl_next = *plp; *plp = entry; } return (0); } int zprop_iter(zprop_func func, void *cb, boolean_t show_all, boolean_t ordered, zfs_type_t type) { return (zprop_iter_common(func, cb, show_all, ordered, type)); } /* * Fill given version buffer with zfs userland version */ void zfs_version_userland(char *version, int len) { (void) strlcpy(version, ZFS_META_ALIAS, len); } /* * Fill given version buffer with zfs kernel version read from ZFS_SYSFS_DIR * Returns 0 on success, and -1 on error (with errno set) */ int zfs_version_kernel(char *version, int len) { int _errno; int fd; int rlen; if ((fd = open(ZFS_SYSFS_DIR "/version", O_RDONLY)) == -1) return (-1); if ((rlen = read(fd, version, len)) == -1) { version[0] = '\0'; _errno = errno; (void) close(fd); errno = _errno; return (-1); } version[rlen-1] = '\0'; /* discard '\n' */ if (close(fd) == -1) return (-1); return (0); } /* * Prints both zfs userland and kernel versions * Returns 0 on success, and -1 on error (with errno set) */ int zfs_version_print(void) { char zver_userland[128]; char zver_kernel[128]; if (zfs_version_kernel(zver_kernel, sizeof (zver_kernel)) == -1) { fprintf(stderr, "zfs_version_kernel() failed: %s\n", strerror(errno)); return (-1); } zfs_version_userland(zver_userland, sizeof (zver_userland)); (void) printf("%s\n", zver_userland); (void) printf("zfs-kmod-%s\n", zver_kernel); return (0); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_config.c0000644000000000000000000000007413607166147020447 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.920536404 zfs-0.8.3/lib/libzfs/libzfs_config.c0000644016037001603700000002425213607166147020451 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012 by Delphix. All rights reserved. * Copyright (c) 2015 by Syneto S.R.L. All rights reserved. * Copyright 2016 Nexenta Systems, Inc. */ /* * The pool configuration repository is stored in /etc/zfs/zpool.cache as a * single packed nvlist. While it would be nice to just read in this * file from userland, this wouldn't work from a local zone. So we have to have * a zpool ioctl to return the complete configuration for all pools. In the * global zone, this will be identical to reading the file and unpacking it in * userland. */ #include #include #include #include #include #include #include #include #include "libzfs_impl.h" typedef struct config_node { char *cn_name; nvlist_t *cn_config; uu_avl_node_t cn_avl; } config_node_t; /* ARGSUSED */ static int config_node_compare(const void *a, const void *b, void *unused) { int ret; const config_node_t *ca = (config_node_t *)a; const config_node_t *cb = (config_node_t *)b; ret = strcmp(ca->cn_name, cb->cn_name); if (ret < 0) return (-1); else if (ret > 0) return (1); else return (0); } void namespace_clear(libzfs_handle_t *hdl) { if (hdl->libzfs_ns_avl) { config_node_t *cn; void *cookie = NULL; while ((cn = uu_avl_teardown(hdl->libzfs_ns_avl, &cookie)) != NULL) { nvlist_free(cn->cn_config); free(cn->cn_name); free(cn); } uu_avl_destroy(hdl->libzfs_ns_avl); hdl->libzfs_ns_avl = NULL; } if (hdl->libzfs_ns_avlpool) { uu_avl_pool_destroy(hdl->libzfs_ns_avlpool); hdl->libzfs_ns_avlpool = NULL; } } /* * Loads the pool namespace, or re-loads it if the cache has changed. */ static int namespace_reload(libzfs_handle_t *hdl) { nvlist_t *config; config_node_t *cn; nvpair_t *elem; zfs_cmd_t zc = {"\0"}; void *cookie; if (hdl->libzfs_ns_gen == 0) { /* * This is the first time we've accessed the configuration * cache. Initialize the AVL tree and then fall through to the * common code. */ if ((hdl->libzfs_ns_avlpool = uu_avl_pool_create("config_pool", sizeof (config_node_t), offsetof(config_node_t, cn_avl), config_node_compare, UU_DEFAULT)) == NULL) return (no_memory(hdl)); if ((hdl->libzfs_ns_avl = uu_avl_create(hdl->libzfs_ns_avlpool, NULL, UU_DEFAULT)) == NULL) return (no_memory(hdl)); } if (zcmd_alloc_dst_nvlist(hdl, &zc, 0) != 0) return (-1); for (;;) { zc.zc_cookie = hdl->libzfs_ns_gen; if (ioctl(hdl->libzfs_fd, ZFS_IOC_POOL_CONFIGS, &zc) != 0) { switch (errno) { case EEXIST: /* * The namespace hasn't changed. */ zcmd_free_nvlists(&zc); return (0); case ENOMEM: if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) { zcmd_free_nvlists(&zc); return (-1); } break; default: zcmd_free_nvlists(&zc); return (zfs_standard_error(hdl, errno, dgettext(TEXT_DOMAIN, "failed to read " "pool configuration"))); } } else { hdl->libzfs_ns_gen = zc.zc_cookie; break; } } if (zcmd_read_dst_nvlist(hdl, &zc, &config) != 0) { zcmd_free_nvlists(&zc); return (-1); } zcmd_free_nvlists(&zc); /* * Clear out any existing configuration information. */ cookie = NULL; while ((cn = uu_avl_teardown(hdl->libzfs_ns_avl, &cookie)) != NULL) { nvlist_free(cn->cn_config); free(cn->cn_name); free(cn); } elem = NULL; while ((elem = nvlist_next_nvpair(config, elem)) != NULL) { nvlist_t *child; uu_avl_index_t where; if ((cn = zfs_alloc(hdl, sizeof (config_node_t))) == NULL) { nvlist_free(config); return (-1); } if ((cn->cn_name = zfs_strdup(hdl, nvpair_name(elem))) == NULL) { free(cn); nvlist_free(config); return (-1); } verify(nvpair_value_nvlist(elem, &child) == 0); if (nvlist_dup(child, &cn->cn_config, 0) != 0) { free(cn->cn_name); free(cn); nvlist_free(config); return (no_memory(hdl)); } verify(uu_avl_find(hdl->libzfs_ns_avl, cn, NULL, &where) == NULL); uu_avl_insert(hdl->libzfs_ns_avl, cn, where); } nvlist_free(config); return (0); } /* * Retrieve the configuration for the given pool. The configuration is an nvlist * describing the vdevs, as well as the statistics associated with each one. */ nvlist_t * zpool_get_config(zpool_handle_t *zhp, nvlist_t **oldconfig) { if (oldconfig) *oldconfig = zhp->zpool_old_config; return (zhp->zpool_config); } /* * Retrieves a list of enabled features and their refcounts and caches it in * the pool handle. */ nvlist_t * zpool_get_features(zpool_handle_t *zhp) { nvlist_t *config, *features; config = zpool_get_config(zhp, NULL); if (config == NULL || !nvlist_exists(config, ZPOOL_CONFIG_FEATURE_STATS)) { int error; boolean_t missing = B_FALSE; error = zpool_refresh_stats(zhp, &missing); if (error != 0 || missing) return (NULL); config = zpool_get_config(zhp, NULL); } if (nvlist_lookup_nvlist(config, ZPOOL_CONFIG_FEATURE_STATS, &features) != 0) return (NULL); return (features); } /* * Refresh the vdev statistics associated with the given pool. This is used in * iostat to show configuration changes and determine the delta from the last * time the function was called. This function can fail, in case the pool has * been destroyed. */ int zpool_refresh_stats(zpool_handle_t *zhp, boolean_t *missing) { zfs_cmd_t zc = {"\0"}; int error; nvlist_t *config; libzfs_handle_t *hdl = zhp->zpool_hdl; *missing = B_FALSE; (void) strcpy(zc.zc_name, zhp->zpool_name); if (zhp->zpool_config_size == 0) zhp->zpool_config_size = 1 << 16; if (zcmd_alloc_dst_nvlist(hdl, &zc, zhp->zpool_config_size) != 0) return (-1); for (;;) { if (ioctl(zhp->zpool_hdl->libzfs_fd, ZFS_IOC_POOL_STATS, &zc) == 0) { /* * The real error is returned in the zc_cookie field. */ error = zc.zc_cookie; break; } if (errno == ENOMEM) { if (zcmd_expand_dst_nvlist(hdl, &zc) != 0) { zcmd_free_nvlists(&zc); return (-1); } } else { zcmd_free_nvlists(&zc); if (errno == ENOENT || errno == EINVAL) *missing = B_TRUE; zhp->zpool_state = POOL_STATE_UNAVAIL; return (0); } } if (zcmd_read_dst_nvlist(hdl, &zc, &config) != 0) { zcmd_free_nvlists(&zc); return (-1); } zcmd_free_nvlists(&zc); zhp->zpool_config_size = zc.zc_nvlist_dst_size; if (zhp->zpool_config != NULL) { nvlist_free(zhp->zpool_old_config); zhp->zpool_old_config = zhp->zpool_config; } zhp->zpool_config = config; if (error) zhp->zpool_state = POOL_STATE_UNAVAIL; else zhp->zpool_state = POOL_STATE_ACTIVE; return (0); } /* * The following environment variables are undocumented * and should be used for testing purposes only: * * __ZFS_POOL_EXCLUDE - don't iterate over the pools it lists * __ZFS_POOL_RESTRICT - iterate only over the pools it lists * * This function returns B_TRUE if the pool should be skipped * during iteration. */ boolean_t zpool_skip_pool(const char *poolname) { static boolean_t initialized = B_FALSE; static const char *exclude = NULL; static const char *restricted = NULL; const char *cur, *end; int len; int namelen = strlen(poolname); if (!initialized) { initialized = B_TRUE; exclude = getenv("__ZFS_POOL_EXCLUDE"); restricted = getenv("__ZFS_POOL_RESTRICT"); } if (exclude != NULL) { cur = exclude; do { end = strchr(cur, ' '); len = (NULL == end) ? strlen(cur) : (end - cur); if (len == namelen && 0 == strncmp(cur, poolname, len)) return (B_TRUE); cur += (len + 1); } while (NULL != end); } if (NULL == restricted) return (B_FALSE); cur = restricted; do { end = strchr(cur, ' '); len = (NULL == end) ? strlen(cur) : (end - cur); if (len == namelen && 0 == strncmp(cur, poolname, len)) { return (B_FALSE); } cur += (len + 1); } while (NULL != end); return (B_TRUE); } /* * Iterate over all pools in the system. */ int zpool_iter(libzfs_handle_t *hdl, zpool_iter_f func, void *data) { config_node_t *cn; zpool_handle_t *zhp; int ret; /* * If someone makes a recursive call to zpool_iter(), we want to avoid * refreshing the namespace because that will invalidate the parent * context. We allow recursive calls, but simply re-use the same * namespace AVL tree. */ if (!hdl->libzfs_pool_iter && namespace_reload(hdl) != 0) return (-1); hdl->libzfs_pool_iter++; for (cn = uu_avl_first(hdl->libzfs_ns_avl); cn != NULL; cn = uu_avl_next(hdl->libzfs_ns_avl, cn)) { if (zpool_skip_pool(cn->cn_name)) continue; if (zpool_open_silent(hdl, cn->cn_name, &zhp) != 0) { hdl->libzfs_pool_iter--; return (-1); } if (zhp == NULL) continue; if ((ret = func(zhp, data)) != 0) { hdl->libzfs_pool_iter--; return (ret); } } hdl->libzfs_pool_iter--; return (0); } /* * Iterate over root datasets, calling the given function for each. The zfs * handle passed each time must be explicitly closed by the callback. */ int zfs_iter_root(libzfs_handle_t *hdl, zfs_iter_f func, void *data) { config_node_t *cn; zfs_handle_t *zhp; int ret; if (namespace_reload(hdl) != 0) return (-1); for (cn = uu_avl_first(hdl->libzfs_ns_avl); cn != NULL; cn = uu_avl_next(hdl->libzfs_ns_avl, cn)) { if (zpool_skip_pool(cn->cn_name)) continue; if ((zhp = make_dataset_handle(hdl, cn->cn_name)) == NULL) continue; if ((ret = func(zhp, data)) != 0) return (ret); } return (0); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_mount.c0000644000000000000000000000007413607166147020344 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.933536822 zfs-0.8.3/lib/libzfs/libzfs_mount.c0000644016037001603700000013135713607166147020353 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014, 2017 by Delphix. All rights reserved. * Copyright 2016 Igor Kozhukhov * Copyright 2017 RackTop Systems. * Copyright (c) 2018 Datto Inc. * Copyright 2018 OmniOS Community Edition (OmniOSce) Association. */ /* * Routines to manage ZFS mounts. We separate all the nasty routines that have * to deal with the OS. The following functions are the main entry points -- * they are used by mount and unmount and when changing a filesystem's * mountpoint. * * zfs_is_mounted() * zfs_mount() * zfs_unmount() * zfs_unmountall() * * This file also contains the functions used to manage sharing filesystems via * NFS and iSCSI: * * zfs_is_shared() * zfs_share() * zfs_unshare() * * zfs_is_shared_nfs() * zfs_is_shared_smb() * zfs_share_proto() * zfs_shareall(); * zfs_unshare_nfs() * zfs_unshare_smb() * zfs_unshareall_nfs() * zfs_unshareall_smb() * zfs_unshareall() * zfs_unshareall_bypath() * * The following functions are available for pool consumers, and will * mount/unmount and share/unshare all datasets within pool: * * zpool_enable_datasets() * zpool_disable_datasets() */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "libzfs_impl.h" #include #include #include #define MAXISALEN 257 /* based on sysinfo(2) man page */ static int mount_tp_nthr = 512; /* tpool threads for multi-threaded mounting */ static void zfs_mount_task(void *); static int zfs_share_proto(zfs_handle_t *, zfs_share_proto_t *); zfs_share_type_t zfs_is_shared_proto(zfs_handle_t *, char **, zfs_share_proto_t); /* * The share protocols table must be in the same order as the zfs_share_proto_t * enum in libzfs_impl.h */ typedef struct { zfs_prop_t p_prop; char *p_name; int p_share_err; int p_unshare_err; } proto_table_t; proto_table_t proto_table[PROTO_END] = { {ZFS_PROP_SHARENFS, "nfs", EZFS_SHARENFSFAILED, EZFS_UNSHARENFSFAILED}, {ZFS_PROP_SHARESMB, "smb", EZFS_SHARESMBFAILED, EZFS_UNSHARESMBFAILED}, }; zfs_share_proto_t nfs_only[] = { PROTO_NFS, PROTO_END }; zfs_share_proto_t smb_only[] = { PROTO_SMB, PROTO_END }; zfs_share_proto_t share_all_proto[] = { PROTO_NFS, PROTO_SMB, PROTO_END }; /* * Search the sharetab for the given mountpoint and protocol, returning * a zfs_share_type_t value. */ static zfs_share_type_t is_shared(libzfs_handle_t *hdl, const char *mountpoint, zfs_share_proto_t proto) { char buf[MAXPATHLEN], *tab; char *ptr; if (hdl->libzfs_sharetab == NULL) return (SHARED_NOT_SHARED); /* Reopen ZFS_SHARETAB to prevent reading stale data from open file */ if (freopen(ZFS_SHARETAB, "r", hdl->libzfs_sharetab) == NULL) return (SHARED_NOT_SHARED); (void) fseek(hdl->libzfs_sharetab, 0, SEEK_SET); while (fgets(buf, sizeof (buf), hdl->libzfs_sharetab) != NULL) { /* the mountpoint is the first entry on each line */ if ((tab = strchr(buf, '\t')) == NULL) continue; *tab = '\0'; if (strcmp(buf, mountpoint) == 0) { /* * the protocol field is the third field * skip over second field */ ptr = ++tab; if ((tab = strchr(ptr, '\t')) == NULL) continue; ptr = ++tab; if ((tab = strchr(ptr, '\t')) == NULL) continue; *tab = '\0'; if (strcmp(ptr, proto_table[proto].p_name) == 0) { switch (proto) { case PROTO_NFS: return (SHARED_NFS); case PROTO_SMB: return (SHARED_SMB); default: return (0); } } } } return (SHARED_NOT_SHARED); } static boolean_t dir_is_empty_stat(const char *dirname) { struct stat st; /* * We only want to return false if the given path is a non empty * directory, all other errors are handled elsewhere. */ if (stat(dirname, &st) < 0 || !S_ISDIR(st.st_mode)) { return (B_TRUE); } /* * An empty directory will still have two entries in it, one * entry for each of "." and "..". */ if (st.st_size > 2) { return (B_FALSE); } return (B_TRUE); } static boolean_t dir_is_empty_readdir(const char *dirname) { DIR *dirp; struct dirent64 *dp; int dirfd; if ((dirfd = openat(AT_FDCWD, dirname, O_RDONLY | O_NDELAY | O_LARGEFILE | O_CLOEXEC, 0)) < 0) { return (B_TRUE); } if ((dirp = fdopendir(dirfd)) == NULL) { (void) close(dirfd); return (B_TRUE); } while ((dp = readdir64(dirp)) != NULL) { if (strcmp(dp->d_name, ".") == 0 || strcmp(dp->d_name, "..") == 0) continue; (void) closedir(dirp); return (B_FALSE); } (void) closedir(dirp); return (B_TRUE); } /* * Returns true if the specified directory is empty. If we can't open the * directory at all, return true so that the mount can fail with a more * informative error message. */ static boolean_t dir_is_empty(const char *dirname) { struct statfs64 st; /* * If the statvfs call fails or the filesystem is not a ZFS * filesystem, fall back to the slow path which uses readdir. */ if ((statfs64(dirname, &st) != 0) || (st.f_type != ZFS_SUPER_MAGIC)) { return (dir_is_empty_readdir(dirname)); } /* * At this point, we know the provided path is on a ZFS * filesystem, so we can use stat instead of readdir to * determine if the directory is empty or not. We try to avoid * using readdir because that requires opening "dirname"; this * open file descriptor can potentially end up in a child * process if there's a concurrent fork, thus preventing the * zfs_mount() from otherwise succeeding (the open file * descriptor inherited by the child process will cause the * parent's mount to fail with EBUSY). The performance * implications of replacing the open, read, and close with a * single stat is nice; but is not the main motivation for the * added complexity. */ return (dir_is_empty_stat(dirname)); } /* * Checks to see if the mount is active. If the filesystem is mounted, we fill * in 'where' with the current mountpoint, and return 1. Otherwise, we return * 0. */ boolean_t is_mounted(libzfs_handle_t *zfs_hdl, const char *special, char **where) { struct mnttab entry; if (libzfs_mnttab_find(zfs_hdl, special, &entry) != 0) return (B_FALSE); if (where != NULL) *where = zfs_strdup(zfs_hdl, entry.mnt_mountp); return (B_TRUE); } boolean_t zfs_is_mounted(zfs_handle_t *zhp, char **where) { return (is_mounted(zhp->zfs_hdl, zfs_get_name(zhp), where)); } /* * Returns true if the given dataset is mountable, false otherwise. Returns the * mountpoint in 'buf'. */ static boolean_t zfs_is_mountable(zfs_handle_t *zhp, char *buf, size_t buflen, zprop_source_t *source) { char sourceloc[MAXNAMELEN]; zprop_source_t sourcetype; if (!zfs_prop_valid_for_type(ZFS_PROP_MOUNTPOINT, zhp->zfs_type, B_FALSE)) return (B_FALSE); verify(zfs_prop_get(zhp, ZFS_PROP_MOUNTPOINT, buf, buflen, &sourcetype, sourceloc, sizeof (sourceloc), B_FALSE) == 0); if (strcmp(buf, ZFS_MOUNTPOINT_NONE) == 0 || strcmp(buf, ZFS_MOUNTPOINT_LEGACY) == 0) return (B_FALSE); if (zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT) == ZFS_CANMOUNT_OFF) return (B_FALSE); if (zfs_prop_get_int(zhp, ZFS_PROP_ZONED) && getzoneid() == GLOBAL_ZONEID) return (B_FALSE); if (source) *source = sourcetype; return (B_TRUE); } /* * The filesystem is mounted by invoking the system mount utility rather * than by the system call mount(2). This ensures that the /etc/mtab * file is correctly locked for the update. Performing our own locking * and /etc/mtab update requires making an unsafe assumption about how * the mount utility performs its locking. Unfortunately, this also means * in the case of a mount failure we do not have the exact errno. We must * make due with return value from the mount process. * * In the long term a shared library called libmount is under development * which provides a common API to address the locking and errno issues. * Once the standard mount utility has been updated to use this library * we can add an autoconf check to conditionally use it. * * http://www.kernel.org/pub/linux/utils/util-linux/libmount-docs/index.html */ static int do_mount(const char *src, const char *mntpt, char *opts) { char *argv[9] = { "/bin/mount", "--no-canonicalize", "-t", MNTTYPE_ZFS, "-o", opts, (char *)src, (char *)mntpt, (char *)NULL }; int rc; /* Return only the most critical mount error */ rc = libzfs_run_process(argv[0], argv, STDOUT_VERBOSE|STDERR_VERBOSE); if (rc) { if (rc & MOUNT_FILEIO) return (EIO); if (rc & MOUNT_USER) return (EINTR); if (rc & MOUNT_SOFTWARE) return (EPIPE); if (rc & MOUNT_BUSY) return (EBUSY); if (rc & MOUNT_SYSERR) return (EAGAIN); if (rc & MOUNT_USAGE) return (EINVAL); return (ENXIO); /* Generic error */ } return (0); } static int do_unmount(const char *mntpt, int flags) { char force_opt[] = "-f"; char lazy_opt[] = "-l"; char *argv[7] = { "/bin/umount", "-t", MNTTYPE_ZFS, NULL, NULL, NULL, NULL }; int rc, count = 3; if (flags & MS_FORCE) { argv[count] = force_opt; count++; } if (flags & MS_DETACH) { argv[count] = lazy_opt; count++; } argv[count] = (char *)mntpt; rc = libzfs_run_process(argv[0], argv, STDOUT_VERBOSE|STDERR_VERBOSE); return (rc ? EINVAL : 0); } static int zfs_add_option(zfs_handle_t *zhp, char *options, int len, zfs_prop_t prop, char *on, char *off) { char *source; uint64_t value; /* Skip adding duplicate default options */ if ((strstr(options, on) != NULL) || (strstr(options, off) != NULL)) return (0); /* * zfs_prop_get_int() is not used to ensure our mount options * are not influenced by the current /proc/self/mounts contents. */ value = getprop_uint64(zhp, prop, &source); (void) strlcat(options, ",", len); (void) strlcat(options, value ? on : off, len); return (0); } static int zfs_add_options(zfs_handle_t *zhp, char *options, int len) { int error = 0; error = zfs_add_option(zhp, options, len, ZFS_PROP_ATIME, MNTOPT_ATIME, MNTOPT_NOATIME); /* * don't add relatime/strictatime when atime=off, otherwise strictatime * will force atime=on */ if (strstr(options, MNTOPT_NOATIME) == NULL) { error = zfs_add_option(zhp, options, len, ZFS_PROP_RELATIME, MNTOPT_RELATIME, MNTOPT_STRICTATIME); } error = error ? error : zfs_add_option(zhp, options, len, ZFS_PROP_DEVICES, MNTOPT_DEVICES, MNTOPT_NODEVICES); error = error ? error : zfs_add_option(zhp, options, len, ZFS_PROP_EXEC, MNTOPT_EXEC, MNTOPT_NOEXEC); error = error ? error : zfs_add_option(zhp, options, len, ZFS_PROP_READONLY, MNTOPT_RO, MNTOPT_RW); error = error ? error : zfs_add_option(zhp, options, len, ZFS_PROP_SETUID, MNTOPT_SETUID, MNTOPT_NOSETUID); error = error ? error : zfs_add_option(zhp, options, len, ZFS_PROP_NBMAND, MNTOPT_NBMAND, MNTOPT_NONBMAND); return (error); } /* * Mount the given filesystem. */ int zfs_mount(zfs_handle_t *zhp, const char *options, int flags) { struct stat buf; char mountpoint[ZFS_MAXPROPLEN]; char mntopts[MNT_LINE_MAX]; char overlay[ZFS_MAXPROPLEN]; libzfs_handle_t *hdl = zhp->zfs_hdl; uint64_t keystatus; int remount = 0, rc; if (options == NULL) { (void) strlcpy(mntopts, MNTOPT_DEFAULTS, sizeof (mntopts)); } else { (void) strlcpy(mntopts, options, sizeof (mntopts)); } if (strstr(mntopts, MNTOPT_REMOUNT) != NULL) remount = 1; /* * If the pool is imported read-only then all mounts must be read-only */ if (zpool_get_prop_int(zhp->zpool_hdl, ZPOOL_PROP_READONLY, NULL)) (void) strlcat(mntopts, "," MNTOPT_RO, sizeof (mntopts)); if (!zfs_is_mountable(zhp, mountpoint, sizeof (mountpoint), NULL)) return (0); /* * Append default mount options which apply to the mount point. * This is done because under Linux (unlike Solaris) multiple mount * points may reference a single super block. This means that just * given a super block there is no back reference to update the per * mount point options. */ rc = zfs_add_options(zhp, mntopts, sizeof (mntopts)); if (rc) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "default options unavailable")); return (zfs_error_fmt(hdl, EZFS_MOUNTFAILED, dgettext(TEXT_DOMAIN, "cannot mount '%s'"), mountpoint)); } /* * If the filesystem is encrypted the key must be loaded in order to * mount. If the key isn't loaded, the MS_CRYPT flag decides whether * or not we attempt to load the keys. Note: we must call * zfs_refresh_properties() here since some callers of this function * (most notably zpool_enable_datasets()) may implicitly load our key * by loading the parent's key first. */ if (zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION) != ZIO_CRYPT_OFF) { zfs_refresh_properties(zhp); keystatus = zfs_prop_get_int(zhp, ZFS_PROP_KEYSTATUS); /* * If the key is unavailable and MS_CRYPT is set give the * user a chance to enter the key. Otherwise just fail * immediately. */ if (keystatus == ZFS_KEYSTATUS_UNAVAILABLE) { if (flags & MS_CRYPT) { rc = zfs_crypto_load_key(zhp, B_FALSE, NULL); if (rc) return (rc); } else { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "encryption key not loaded")); return (zfs_error_fmt(hdl, EZFS_MOUNTFAILED, dgettext(TEXT_DOMAIN, "cannot mount '%s'"), mountpoint)); } } } /* * Append zfsutil option so the mount helper allow the mount */ strlcat(mntopts, "," MNTOPT_ZFSUTIL, sizeof (mntopts)); /* Create the directory if it doesn't already exist */ if (lstat(mountpoint, &buf) != 0) { if (mkdirp(mountpoint, 0755) != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "failed to create mountpoint")); return (zfs_error_fmt(hdl, EZFS_MOUNTFAILED, dgettext(TEXT_DOMAIN, "cannot mount '%s'"), mountpoint)); } } /* * Overlay mounts are disabled by default but may be enabled * via the 'overlay' property or the 'zfs mount -O' option. */ if (!(flags & MS_OVERLAY)) { if (zfs_prop_get(zhp, ZFS_PROP_OVERLAY, overlay, sizeof (overlay), NULL, NULL, 0, B_FALSE) == 0) { if (strcmp(overlay, "on") == 0) { flags |= MS_OVERLAY; } } } /* * Determine if the mountpoint is empty. If so, refuse to perform the * mount. We don't perform this check if 'remount' is * specified or if overlay option(-O) is given */ if ((flags & MS_OVERLAY) == 0 && !remount && !dir_is_empty(mountpoint)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "directory is not empty")); return (zfs_error_fmt(hdl, EZFS_MOUNTFAILED, dgettext(TEXT_DOMAIN, "cannot mount '%s'"), mountpoint)); } /* perform the mount */ rc = do_mount(zfs_get_name(zhp), mountpoint, mntopts); if (rc) { /* * Generic errors are nasty, but there are just way too many * from mount(), and they're well-understood. We pick a few * common ones to improve upon. */ if (rc == EBUSY) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "mountpoint or dataset is busy")); } else if (rc == EPERM) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Insufficient privileges")); } else if (rc == ENOTSUP) { char buf[256]; int spa_version; VERIFY(zfs_spa_version(zhp, &spa_version) == 0); (void) snprintf(buf, sizeof (buf), dgettext(TEXT_DOMAIN, "Can't mount a version %lld " "file system on a version %d pool. Pool must be" " upgraded to mount this file system."), (u_longlong_t)zfs_prop_get_int(zhp, ZFS_PROP_VERSION), spa_version); zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, buf)); } else { zfs_error_aux(hdl, strerror(rc)); } return (zfs_error_fmt(hdl, EZFS_MOUNTFAILED, dgettext(TEXT_DOMAIN, "cannot mount '%s'"), zhp->zfs_name)); } /* remove the mounted entry before re-adding on remount */ if (remount) libzfs_mnttab_remove(hdl, zhp->zfs_name); /* add the mounted entry into our cache */ libzfs_mnttab_add(hdl, zfs_get_name(zhp), mountpoint, mntopts); return (0); } /* * Unmount a single filesystem. */ static int unmount_one(libzfs_handle_t *hdl, const char *mountpoint, int flags) { int error; error = do_unmount(mountpoint, flags); if (error != 0) { return (zfs_error_fmt(hdl, EZFS_UMOUNTFAILED, dgettext(TEXT_DOMAIN, "cannot unmount '%s'"), mountpoint)); } return (0); } /* * Unmount the given filesystem. */ int zfs_unmount(zfs_handle_t *zhp, const char *mountpoint, int flags) { libzfs_handle_t *hdl = zhp->zfs_hdl; struct mnttab entry; char *mntpt = NULL; /* check to see if we need to unmount the filesystem */ if (mountpoint != NULL || ((zfs_get_type(zhp) == ZFS_TYPE_FILESYSTEM) && libzfs_mnttab_find(hdl, zhp->zfs_name, &entry) == 0)) { /* * mountpoint may have come from a call to * getmnt/getmntany if it isn't NULL. If it is NULL, * we know it comes from libzfs_mnttab_find which can * then get freed later. We strdup it to play it safe. */ if (mountpoint == NULL) mntpt = zfs_strdup(hdl, entry.mnt_mountp); else mntpt = zfs_strdup(hdl, mountpoint); /* * Unshare and unmount the filesystem */ if (zfs_unshare_proto(zhp, mntpt, share_all_proto) != 0) { free(mntpt); return (-1); } if (unmount_one(hdl, mntpt, flags) != 0) { free(mntpt); (void) zfs_shareall(zhp); return (-1); } libzfs_mnttab_remove(hdl, zhp->zfs_name); free(mntpt); } return (0); } /* * Unmount this filesystem and any children inheriting the mountpoint property. * To do this, just act like we're changing the mountpoint property, but don't * remount the filesystems afterwards. */ int zfs_unmountall(zfs_handle_t *zhp, int flags) { prop_changelist_t *clp; int ret; clp = changelist_gather(zhp, ZFS_PROP_MOUNTPOINT, CL_GATHER_ITER_MOUNTED, 0); if (clp == NULL) return (-1); ret = changelist_prefix(clp); changelist_free(clp); return (ret); } boolean_t zfs_is_shared(zfs_handle_t *zhp) { zfs_share_type_t rc = 0; zfs_share_proto_t *curr_proto; if (ZFS_IS_VOLUME(zhp)) return (B_FALSE); for (curr_proto = share_all_proto; *curr_proto != PROTO_END; curr_proto++) rc |= zfs_is_shared_proto(zhp, NULL, *curr_proto); return (rc ? B_TRUE : B_FALSE); } int zfs_share(zfs_handle_t *zhp) { assert(!ZFS_IS_VOLUME(zhp)); return (zfs_share_proto(zhp, share_all_proto)); } int zfs_unshare(zfs_handle_t *zhp) { assert(!ZFS_IS_VOLUME(zhp)); return (zfs_unshareall(zhp)); } /* * Check to see if the filesystem is currently shared. */ zfs_share_type_t zfs_is_shared_proto(zfs_handle_t *zhp, char **where, zfs_share_proto_t proto) { char *mountpoint; zfs_share_type_t rc; if (!zfs_is_mounted(zhp, &mountpoint)) return (SHARED_NOT_SHARED); if ((rc = is_shared(zhp->zfs_hdl, mountpoint, proto)) != SHARED_NOT_SHARED) { if (where != NULL) *where = mountpoint; else free(mountpoint); return (rc); } else { free(mountpoint); return (SHARED_NOT_SHARED); } } boolean_t zfs_is_shared_nfs(zfs_handle_t *zhp, char **where) { return (zfs_is_shared_proto(zhp, where, PROTO_NFS) != SHARED_NOT_SHARED); } boolean_t zfs_is_shared_smb(zfs_handle_t *zhp, char **where) { return (zfs_is_shared_proto(zhp, where, PROTO_SMB) != SHARED_NOT_SHARED); } /* * zfs_init_libshare(zhandle, service) * * Initialize the libshare API if it hasn't already been initialized. * In all cases it returns 0 if it succeeded and an error if not. The * service value is which part(s) of the API to initialize and is a * direct map to the libshare sa_init(service) interface. */ int zfs_init_libshare(libzfs_handle_t *zhandle, int service) { int ret = SA_OK; if (ret == SA_OK && zhandle->libzfs_shareflags & ZFSSHARE_MISS) { /* * We had a cache miss. Most likely it is a new ZFS * dataset that was just created. We want to make sure * so check timestamps to see if a different process * has updated any of the configuration. If there was * some non-ZFS change, we need to re-initialize the * internal cache. */ zhandle->libzfs_shareflags &= ~ZFSSHARE_MISS; if (sa_needs_refresh(zhandle->libzfs_sharehdl)) { zfs_uninit_libshare(zhandle); zhandle->libzfs_sharehdl = sa_init(service); } } if (ret == SA_OK && zhandle && zhandle->libzfs_sharehdl == NULL) zhandle->libzfs_sharehdl = sa_init(service); if (ret == SA_OK && zhandle->libzfs_sharehdl == NULL) ret = SA_NO_MEMORY; return (ret); } /* * zfs_uninit_libshare(zhandle) * * Uninitialize the libshare API if it hasn't already been * uninitialized. It is OK to call multiple times. */ void zfs_uninit_libshare(libzfs_handle_t *zhandle) { if (zhandle != NULL && zhandle->libzfs_sharehdl != NULL) { sa_fini(zhandle->libzfs_sharehdl); zhandle->libzfs_sharehdl = NULL; } } /* * zfs_parse_options(options, proto) * * Call the legacy parse interface to get the protocol specific * options using the NULL arg to indicate that this is a "parse" only. */ int zfs_parse_options(char *options, zfs_share_proto_t proto) { return (sa_parse_legacy_options(NULL, options, proto_table[proto].p_name)); } /* * Share the given filesystem according to the options in the specified * protocol specific properties (sharenfs, sharesmb). We rely * on "libshare" to do the dirty work for us. */ static int zfs_share_proto(zfs_handle_t *zhp, zfs_share_proto_t *proto) { char mountpoint[ZFS_MAXPROPLEN]; char shareopts[ZFS_MAXPROPLEN]; char sourcestr[ZFS_MAXPROPLEN]; libzfs_handle_t *hdl = zhp->zfs_hdl; sa_share_t share; zfs_share_proto_t *curr_proto; zprop_source_t sourcetype; int ret; if (!zfs_is_mountable(zhp, mountpoint, sizeof (mountpoint), NULL)) return (0); for (curr_proto = proto; *curr_proto != PROTO_END; curr_proto++) { /* * Return success if there are no share options. */ if (zfs_prop_get(zhp, proto_table[*curr_proto].p_prop, shareopts, sizeof (shareopts), &sourcetype, sourcestr, ZFS_MAXPROPLEN, B_FALSE) != 0 || strcmp(shareopts, "off") == 0) continue; ret = zfs_init_libshare(hdl, SA_INIT_SHARE_API); if (ret != SA_OK) { (void) zfs_error_fmt(hdl, EZFS_SHARENFSFAILED, dgettext(TEXT_DOMAIN, "cannot share '%s': %s"), zfs_get_name(zhp), sa_errorstr(ret)); return (-1); } /* * If the 'zoned' property is set, then zfs_is_mountable() * will have already bailed out if we are in the global zone. * But local zones cannot be NFS servers, so we ignore it for * local zones as well. */ if (zfs_prop_get_int(zhp, ZFS_PROP_ZONED)) continue; share = sa_find_share(hdl->libzfs_sharehdl, mountpoint); if (share == NULL) { /* * This may be a new file system that was just * created so isn't in the internal cache * (second time through). Rather than * reloading the entire configuration, we can * assume ZFS has done the checking and it is * safe to add this to the internal * configuration. */ if (sa_zfs_process_share(hdl->libzfs_sharehdl, NULL, NULL, mountpoint, proto_table[*curr_proto].p_name, sourcetype, shareopts, sourcestr, zhp->zfs_name) != SA_OK) { (void) zfs_error_fmt(hdl, proto_table[*curr_proto].p_share_err, dgettext(TEXT_DOMAIN, "cannot share '%s'"), zfs_get_name(zhp)); return (-1); } hdl->libzfs_shareflags |= ZFSSHARE_MISS; share = sa_find_share(hdl->libzfs_sharehdl, mountpoint); } if (share != NULL) { int err; err = sa_enable_share(share, proto_table[*curr_proto].p_name); if (err != SA_OK) { (void) zfs_error_fmt(hdl, proto_table[*curr_proto].p_share_err, dgettext(TEXT_DOMAIN, "cannot share '%s'"), zfs_get_name(zhp)); return (-1); } } else { (void) zfs_error_fmt(hdl, proto_table[*curr_proto].p_share_err, dgettext(TEXT_DOMAIN, "cannot share '%s'"), zfs_get_name(zhp)); return (-1); } } return (0); } int zfs_share_nfs(zfs_handle_t *zhp) { return (zfs_share_proto(zhp, nfs_only)); } int zfs_share_smb(zfs_handle_t *zhp) { return (zfs_share_proto(zhp, smb_only)); } int zfs_shareall(zfs_handle_t *zhp) { return (zfs_share_proto(zhp, share_all_proto)); } /* * Unshare a filesystem by mountpoint. */ static int unshare_one(libzfs_handle_t *hdl, const char *name, const char *mountpoint, zfs_share_proto_t proto) { sa_share_t share; int err; char *mntpt; /* * Mountpoint could get trashed if libshare calls getmntany * which it does during API initialization, so strdup the * value. */ mntpt = zfs_strdup(hdl, mountpoint); /* make sure libshare initialized */ if ((err = zfs_init_libshare(hdl, SA_INIT_SHARE_API)) != SA_OK) { free(mntpt); /* don't need the copy anymore */ return (zfs_error_fmt(hdl, proto_table[proto].p_unshare_err, dgettext(TEXT_DOMAIN, "cannot unshare '%s': %s"), name, sa_errorstr(err))); } share = sa_find_share(hdl->libzfs_sharehdl, mntpt); free(mntpt); /* don't need the copy anymore */ if (share != NULL) { err = sa_disable_share(share, proto_table[proto].p_name); if (err != SA_OK) { return (zfs_error_fmt(hdl, proto_table[proto].p_unshare_err, dgettext(TEXT_DOMAIN, "cannot unshare '%s': %s"), name, sa_errorstr(err))); } } else { return (zfs_error_fmt(hdl, proto_table[proto].p_unshare_err, dgettext(TEXT_DOMAIN, "cannot unshare '%s': not found"), name)); } return (0); } /* * Unshare the given filesystem. */ int zfs_unshare_proto(zfs_handle_t *zhp, const char *mountpoint, zfs_share_proto_t *proto) { libzfs_handle_t *hdl = zhp->zfs_hdl; struct mnttab entry; char *mntpt = NULL; /* check to see if need to unmount the filesystem */ if (mountpoint != NULL) mntpt = zfs_strdup(hdl, mountpoint); if (mountpoint != NULL || ((zfs_get_type(zhp) == ZFS_TYPE_FILESYSTEM) && libzfs_mnttab_find(hdl, zfs_get_name(zhp), &entry) == 0)) { zfs_share_proto_t *curr_proto; if (mountpoint == NULL) mntpt = zfs_strdup(zhp->zfs_hdl, entry.mnt_mountp); for (curr_proto = proto; *curr_proto != PROTO_END; curr_proto++) { if (is_shared(hdl, mntpt, *curr_proto) && unshare_one(hdl, zhp->zfs_name, mntpt, *curr_proto) != 0) { if (mntpt != NULL) free(mntpt); return (-1); } } } if (mntpt != NULL) free(mntpt); return (0); } int zfs_unshare_nfs(zfs_handle_t *zhp, const char *mountpoint) { return (zfs_unshare_proto(zhp, mountpoint, nfs_only)); } int zfs_unshare_smb(zfs_handle_t *zhp, const char *mountpoint) { return (zfs_unshare_proto(zhp, mountpoint, smb_only)); } /* * Same as zfs_unmountall(), but for NFS and SMB unshares. */ int zfs_unshareall_proto(zfs_handle_t *zhp, zfs_share_proto_t *proto) { prop_changelist_t *clp; int ret; clp = changelist_gather(zhp, ZFS_PROP_SHARENFS, 0, 0); if (clp == NULL) return (-1); ret = changelist_unshare(clp, proto); changelist_free(clp); return (ret); } int zfs_unshareall_nfs(zfs_handle_t *zhp) { return (zfs_unshareall_proto(zhp, nfs_only)); } int zfs_unshareall_smb(zfs_handle_t *zhp) { return (zfs_unshareall_proto(zhp, smb_only)); } int zfs_unshareall(zfs_handle_t *zhp) { return (zfs_unshareall_proto(zhp, share_all_proto)); } int zfs_unshareall_bypath(zfs_handle_t *zhp, const char *mountpoint) { return (zfs_unshare_proto(zhp, mountpoint, share_all_proto)); } int zfs_unshareall_bytype(zfs_handle_t *zhp, const char *mountpoint, const char *proto) { if (proto == NULL) return (zfs_unshare_proto(zhp, mountpoint, share_all_proto)); if (strcmp(proto, "nfs") == 0) return (zfs_unshare_proto(zhp, mountpoint, nfs_only)); else if (strcmp(proto, "smb") == 0) return (zfs_unshare_proto(zhp, mountpoint, smb_only)); else return (1); } /* * Remove the mountpoint associated with the current dataset, if necessary. * We only remove the underlying directory if: * * - The mountpoint is not 'none' or 'legacy' * - The mountpoint is non-empty * - The mountpoint is the default or inherited * - The 'zoned' property is set, or we're in a local zone * * Any other directories we leave alone. */ void remove_mountpoint(zfs_handle_t *zhp) { char mountpoint[ZFS_MAXPROPLEN]; zprop_source_t source; if (!zfs_is_mountable(zhp, mountpoint, sizeof (mountpoint), &source)) return; if (source == ZPROP_SRC_DEFAULT || source == ZPROP_SRC_INHERITED) { /* * Try to remove the directory, silently ignoring any errors. * The filesystem may have since been removed or moved around, * and this error isn't really useful to the administrator in * any way. */ (void) rmdir(mountpoint); } } /* * Add the given zfs handle to the cb_handles array, dynamically reallocating * the array if it is out of space. */ void libzfs_add_handle(get_all_cb_t *cbp, zfs_handle_t *zhp) { if (cbp->cb_alloc == cbp->cb_used) { size_t newsz; zfs_handle_t **newhandles; newsz = cbp->cb_alloc != 0 ? cbp->cb_alloc * 2 : 64; newhandles = zfs_realloc(zhp->zfs_hdl, cbp->cb_handles, cbp->cb_alloc * sizeof (zfs_handle_t *), newsz * sizeof (zfs_handle_t *)); cbp->cb_handles = newhandles; cbp->cb_alloc = newsz; } cbp->cb_handles[cbp->cb_used++] = zhp; } /* * Recursive helper function used during file system enumeration */ static int zfs_iter_cb(zfs_handle_t *zhp, void *data) { get_all_cb_t *cbp = data; if (!(zfs_get_type(zhp) & ZFS_TYPE_FILESYSTEM)) { zfs_close(zhp); return (0); } if (zfs_prop_get_int(zhp, ZFS_PROP_CANMOUNT) == ZFS_CANMOUNT_NOAUTO) { zfs_close(zhp); return (0); } if (zfs_prop_get_int(zhp, ZFS_PROP_KEYSTATUS) == ZFS_KEYSTATUS_UNAVAILABLE) { zfs_close(zhp); return (0); } /* * If this filesystem is inconsistent and has a receive resume * token, we can not mount it. */ if (zfs_prop_get_int(zhp, ZFS_PROP_INCONSISTENT) && zfs_prop_get(zhp, ZFS_PROP_RECEIVE_RESUME_TOKEN, NULL, 0, NULL, NULL, 0, B_TRUE) == 0) { zfs_close(zhp); return (0); } libzfs_add_handle(cbp, zhp); if (zfs_iter_filesystems(zhp, zfs_iter_cb, cbp) != 0) { zfs_close(zhp); return (-1); } return (0); } /* * Sort comparator that compares two mountpoint paths. We sort these paths so * that subdirectories immediately follow their parents. This means that we * effectively treat the '/' character as the lowest value non-nul char. * Since filesystems from non-global zones can have the same mountpoint * as other filesystems, the comparator sorts global zone filesystems to * the top of the list. This means that the global zone will traverse the * filesystem list in the correct order and can stop when it sees the * first zoned filesystem. In a non-global zone, only the delegated * filesystems are seen. * * An example sorted list using this comparator would look like: * * /foo * /foo/bar * /foo/bar/baz * /foo/baz * /foo.bar * /foo (NGZ1) * /foo (NGZ2) * * The mounting code depends on this ordering to deterministically iterate * over filesystems in order to spawn parallel mount tasks. */ static int mountpoint_cmp(const void *arga, const void *argb) { zfs_handle_t *const *zap = arga; zfs_handle_t *za = *zap; zfs_handle_t *const *zbp = argb; zfs_handle_t *zb = *zbp; char mounta[MAXPATHLEN]; char mountb[MAXPATHLEN]; const char *a = mounta; const char *b = mountb; boolean_t gota, gotb; uint64_t zoneda, zonedb; zoneda = zfs_prop_get_int(za, ZFS_PROP_ZONED); zonedb = zfs_prop_get_int(zb, ZFS_PROP_ZONED); if (zoneda && !zonedb) return (1); if (!zoneda && zonedb) return (-1); gota = (zfs_get_type(za) == ZFS_TYPE_FILESYSTEM); if (gota) { verify(zfs_prop_get(za, ZFS_PROP_MOUNTPOINT, mounta, sizeof (mounta), NULL, NULL, 0, B_FALSE) == 0); } gotb = (zfs_get_type(zb) == ZFS_TYPE_FILESYSTEM); if (gotb) { verify(zfs_prop_get(zb, ZFS_PROP_MOUNTPOINT, mountb, sizeof (mountb), NULL, NULL, 0, B_FALSE) == 0); } if (gota && gotb) { while (*a != '\0' && (*a == *b)) { a++; b++; } if (*a == *b) return (0); if (*a == '\0') return (-1); if (*b == '\0') return (1); if (*a == '/') return (-1); if (*b == '/') return (1); return (*a < *b ? -1 : *a > *b); } if (gota) return (-1); if (gotb) return (1); /* * If neither filesystem has a mountpoint, revert to sorting by * dataset name. */ return (strcmp(zfs_get_name(za), zfs_get_name(zb))); } /* * Return true if path2 is a child of path1 or path2 equals path1 or * path1 is "/" (path2 is always a child of "/"). */ static boolean_t libzfs_path_contains(const char *path1, const char *path2) { return (strcmp(path1, path2) == 0 || strcmp(path1, "/") == 0 || (strstr(path2, path1) == path2 && path2[strlen(path1)] == '/')); } /* * Given a mountpoint specified by idx in the handles array, find the first * non-descendent of that mountpoint and return its index. Descendant paths * start with the parent's path. This function relies on the ordering * enforced by mountpoint_cmp(). */ static int non_descendant_idx(zfs_handle_t **handles, size_t num_handles, int idx) { char parent[ZFS_MAXPROPLEN]; char child[ZFS_MAXPROPLEN]; int i; verify(zfs_prop_get(handles[idx], ZFS_PROP_MOUNTPOINT, parent, sizeof (parent), NULL, NULL, 0, B_FALSE) == 0); for (i = idx + 1; i < num_handles; i++) { verify(zfs_prop_get(handles[i], ZFS_PROP_MOUNTPOINT, child, sizeof (child), NULL, NULL, 0, B_FALSE) == 0); if (!libzfs_path_contains(parent, child)) break; } return (i); } typedef struct mnt_param { libzfs_handle_t *mnt_hdl; tpool_t *mnt_tp; zfs_handle_t **mnt_zhps; /* filesystems to mount */ size_t mnt_num_handles; int mnt_idx; /* Index of selected entry to mount */ zfs_iter_f mnt_func; void *mnt_data; } mnt_param_t; /* * Allocate and populate the parameter struct for mount function, and * schedule mounting of the entry selected by idx. */ static void zfs_dispatch_mount(libzfs_handle_t *hdl, zfs_handle_t **handles, size_t num_handles, int idx, zfs_iter_f func, void *data, tpool_t *tp) { mnt_param_t *mnt_param = zfs_alloc(hdl, sizeof (mnt_param_t)); mnt_param->mnt_hdl = hdl; mnt_param->mnt_tp = tp; mnt_param->mnt_zhps = handles; mnt_param->mnt_num_handles = num_handles; mnt_param->mnt_idx = idx; mnt_param->mnt_func = func; mnt_param->mnt_data = data; (void) tpool_dispatch(tp, zfs_mount_task, (void*)mnt_param); } /* * This is the structure used to keep state of mounting or sharing operations * during a call to zpool_enable_datasets(). */ typedef struct mount_state { /* * ms_mntstatus is set to -1 if any mount fails. While multiple threads * could update this variable concurrently, no synchronization is * needed as it's only ever set to -1. */ int ms_mntstatus; int ms_mntflags; const char *ms_mntopts; } mount_state_t; static int zfs_mount_one(zfs_handle_t *zhp, void *arg) { mount_state_t *ms = arg; int ret = 0; /* * don't attempt to mount encrypted datasets with * unloaded keys */ if (zfs_prop_get_int(zhp, ZFS_PROP_KEYSTATUS) == ZFS_KEYSTATUS_UNAVAILABLE) return (0); if (zfs_mount(zhp, ms->ms_mntopts, ms->ms_mntflags) != 0) ret = ms->ms_mntstatus = -1; return (ret); } static int zfs_share_one(zfs_handle_t *zhp, void *arg) { mount_state_t *ms = arg; int ret = 0; if (zfs_share(zhp) != 0) ret = ms->ms_mntstatus = -1; return (ret); } /* * Thread pool function to mount one file system. On completion, it finds and * schedules its children to be mounted. This depends on the sorting done in * zfs_foreach_mountpoint(). Note that the degenerate case (chain of entries * each descending from the previous) will have no parallelism since we always * have to wait for the parent to finish mounting before we can schedule * its children. */ static void zfs_mount_task(void *arg) { mnt_param_t *mp = arg; int idx = mp->mnt_idx; zfs_handle_t **handles = mp->mnt_zhps; size_t num_handles = mp->mnt_num_handles; char mountpoint[ZFS_MAXPROPLEN]; verify(zfs_prop_get(handles[idx], ZFS_PROP_MOUNTPOINT, mountpoint, sizeof (mountpoint), NULL, NULL, 0, B_FALSE) == 0); if (mp->mnt_func(handles[idx], mp->mnt_data) != 0) return; /* * We dispatch tasks to mount filesystems with mountpoints underneath * this one. We do this by dispatching the next filesystem with a * descendant mountpoint of the one we just mounted, then skip all of * its descendants, dispatch the next descendant mountpoint, and so on. * The non_descendant_idx() function skips over filesystems that are * descendants of the filesystem we just dispatched. */ for (int i = idx + 1; i < num_handles; i = non_descendant_idx(handles, num_handles, i)) { char child[ZFS_MAXPROPLEN]; verify(zfs_prop_get(handles[i], ZFS_PROP_MOUNTPOINT, child, sizeof (child), NULL, NULL, 0, B_FALSE) == 0); if (!libzfs_path_contains(mountpoint, child)) break; /* not a descendant, return */ zfs_dispatch_mount(mp->mnt_hdl, handles, num_handles, i, mp->mnt_func, mp->mnt_data, mp->mnt_tp); } free(mp); } /* * Issue the func callback for each ZFS handle contained in the handles * array. This function is used to mount all datasets, and so this function * guarantees that filesystems for parent mountpoints are called before their * children. As such, before issuing any callbacks, we first sort the array * of handles by mountpoint. * * Callbacks are issued in one of two ways: * * 1. Sequentially: If the parallel argument is B_FALSE or the ZFS_SERIAL_MOUNT * environment variable is set, then we issue callbacks sequentially. * * 2. In parallel: If the parallel argument is B_TRUE and the ZFS_SERIAL_MOUNT * environment variable is not set, then we use a tpool to dispatch threads * to mount filesystems in parallel. This function dispatches tasks to mount * the filesystems at the top-level mountpoints, and these tasks in turn * are responsible for recursively mounting filesystems in their children * mountpoints. */ void zfs_foreach_mountpoint(libzfs_handle_t *hdl, zfs_handle_t **handles, size_t num_handles, zfs_iter_f func, void *data, boolean_t parallel) { zoneid_t zoneid = getzoneid(); /* * The ZFS_SERIAL_MOUNT environment variable is an undocumented * variable that can be used as a convenience to do a/b comparison * of serial vs. parallel mounting. */ boolean_t serial_mount = !parallel || (getenv("ZFS_SERIAL_MOUNT") != NULL); /* * Sort the datasets by mountpoint. See mountpoint_cmp for details * of how these are sorted. */ qsort(handles, num_handles, sizeof (zfs_handle_t *), mountpoint_cmp); if (serial_mount) { for (int i = 0; i < num_handles; i++) { func(handles[i], data); } return; } /* * Issue the callback function for each dataset using a parallel * algorithm that uses a thread pool to manage threads. */ tpool_t *tp = tpool_create(1, mount_tp_nthr, 0, NULL); /* * There may be multiple "top level" mountpoints outside of the pool's * root mountpoint, e.g.: /foo /bar. Dispatch a mount task for each of * these. */ for (int i = 0; i < num_handles; i = non_descendant_idx(handles, num_handles, i)) { /* * Since the mountpoints have been sorted so that the zoned * filesystems are at the end, a zoned filesystem seen from * the global zone means that we're done. */ if (zoneid == GLOBAL_ZONEID && zfs_prop_get_int(handles[i], ZFS_PROP_ZONED)) break; zfs_dispatch_mount(hdl, handles, num_handles, i, func, data, tp); } tpool_wait(tp); /* wait for all scheduled mounts to complete */ tpool_destroy(tp); } /* * Mount and share all datasets within the given pool. This assumes that no * datasets within the pool are currently mounted. */ #pragma weak zpool_mount_datasets = zpool_enable_datasets int zpool_enable_datasets(zpool_handle_t *zhp, const char *mntopts, int flags) { get_all_cb_t cb = { 0 }; mount_state_t ms = { 0 }; zfs_handle_t *zfsp; int ret = 0; if ((zfsp = zfs_open(zhp->zpool_hdl, zhp->zpool_name, ZFS_TYPE_DATASET)) == NULL) goto out; /* * Gather all non-snapshot datasets within the pool. Start by adding * the root filesystem for this pool to the list, and then iterate * over all child filesystems. */ libzfs_add_handle(&cb, zfsp); if (zfs_iter_filesystems(zfsp, zfs_iter_cb, &cb) != 0) goto out; /* * Mount all filesystems */ ms.ms_mntopts = mntopts; ms.ms_mntflags = flags; zfs_foreach_mountpoint(zhp->zpool_hdl, cb.cb_handles, cb.cb_used, zfs_mount_one, &ms, B_TRUE); if (ms.ms_mntstatus != 0) ret = ms.ms_mntstatus; /* * Share all filesystems that need to be shared. This needs to be * a separate pass because libshare is not mt-safe, and so we need * to share serially. */ ms.ms_mntstatus = 0; zfs_foreach_mountpoint(zhp->zpool_hdl, cb.cb_handles, cb.cb_used, zfs_share_one, &ms, B_FALSE); if (ms.ms_mntstatus != 0) ret = ms.ms_mntstatus; out: for (int i = 0; i < cb.cb_used; i++) zfs_close(cb.cb_handles[i]); free(cb.cb_handles); return (ret); } static int mountpoint_compare(const void *a, const void *b) { const char *mounta = *((char **)a); const char *mountb = *((char **)b); return (strcmp(mountb, mounta)); } /* alias for 2002/240 */ #pragma weak zpool_unmount_datasets = zpool_disable_datasets /* * Unshare and unmount all datasets within the given pool. We don't want to * rely on traversing the DSL to discover the filesystems within the pool, * because this may be expensive (if not all of them are mounted), and can fail * arbitrarily (on I/O error, for example). Instead, we walk /proc/self/mounts * and gather all the filesystems that are currently mounted. */ int zpool_disable_datasets(zpool_handle_t *zhp, boolean_t force) { int used, alloc; struct mnttab entry; size_t namelen; char **mountpoints = NULL; zfs_handle_t **datasets = NULL; libzfs_handle_t *hdl = zhp->zpool_hdl; int i; int ret = -1; int flags = (force ? MS_FORCE : 0); namelen = strlen(zhp->zpool_name); /* Reopen MNTTAB to prevent reading stale data from open file */ if (freopen(MNTTAB, "r", hdl->libzfs_mnttab) == NULL) return (ENOENT); used = alloc = 0; while (getmntent(hdl->libzfs_mnttab, &entry) == 0) { /* * Ignore non-ZFS entries. */ if (entry.mnt_fstype == NULL || strcmp(entry.mnt_fstype, MNTTYPE_ZFS) != 0) continue; /* * Ignore filesystems not within this pool. */ if (entry.mnt_mountp == NULL || strncmp(entry.mnt_special, zhp->zpool_name, namelen) != 0 || (entry.mnt_special[namelen] != '/' && entry.mnt_special[namelen] != '\0')) continue; /* * At this point we've found a filesystem within our pool. Add * it to our growing list. */ if (used == alloc) { if (alloc == 0) { if ((mountpoints = zfs_alloc(hdl, 8 * sizeof (void *))) == NULL) goto out; if ((datasets = zfs_alloc(hdl, 8 * sizeof (void *))) == NULL) goto out; alloc = 8; } else { void *ptr; if ((ptr = zfs_realloc(hdl, mountpoints, alloc * sizeof (void *), alloc * 2 * sizeof (void *))) == NULL) goto out; mountpoints = ptr; if ((ptr = zfs_realloc(hdl, datasets, alloc * sizeof (void *), alloc * 2 * sizeof (void *))) == NULL) goto out; datasets = ptr; alloc *= 2; } } if ((mountpoints[used] = zfs_strdup(hdl, entry.mnt_mountp)) == NULL) goto out; /* * This is allowed to fail, in case there is some I/O error. It * is only used to determine if we need to remove the underlying * mountpoint, so failure is not fatal. */ datasets[used] = make_dataset_handle(hdl, entry.mnt_special); used++; } /* * At this point, we have the entire list of filesystems, so sort it by * mountpoint. */ qsort(mountpoints, used, sizeof (char *), mountpoint_compare); /* * Walk through and first unshare everything. */ for (i = 0; i < used; i++) { zfs_share_proto_t *curr_proto; for (curr_proto = share_all_proto; *curr_proto != PROTO_END; curr_proto++) { if (is_shared(hdl, mountpoints[i], *curr_proto) && unshare_one(hdl, mountpoints[i], mountpoints[i], *curr_proto) != 0) goto out; } } /* * Now unmount everything, removing the underlying directories as * appropriate. */ for (i = 0; i < used; i++) { if (unmount_one(hdl, mountpoints[i], flags) != 0) goto out; } for (i = 0; i < used; i++) { if (datasets[i]) remove_mountpoint(datasets[i]); } ret = 0; out: for (i = 0; i < used; i++) { if (datasets[i]) zfs_close(datasets[i]); free(mountpoints[i]); } free(datasets); free(mountpoints); return (ret); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_core.pc.in0000644000000000000000000000007413607166132020711 xustar000000000000000030 atime=1579730451.395845297 30 ctime=1579730472.910536082 zfs-0.8.3/lib/libzfs/libzfs_core.pc.in0000644016037001603700000000040713607166132020707 0ustar00hutter2hutter200000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: libzfs_core Description: LibZFS core library Version: @VERSION@ URL: http://zfsonlinux.org Cflags: -I${includedir}/libzfs -I${includedir}/libspl Libs: -L${libdir} -lzfs_core zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_crypto.c0000644000000000000000000000007413612141513020504 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.922536468 zfs-0.8.3/lib/libzfs/libzfs_crypto.c0000644016037001603700000011172513612141513020510 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2017, Datto, Inc. All rights reserved. */ #include #include #include #include #include #include #include #include #include #include "libzfs_impl.h" #include "zfeature_common.h" /* * User keys are used to decrypt the master encryption keys of a dataset. This * indirection allows a user to change his / her access key without having to * re-encrypt the entire dataset. User keys can be provided in one of several * ways. Raw keys are simply given to the kernel as is. Similarly, hex keys * are converted to binary and passed into the kernel. Password based keys are * a bit more complicated. Passwords alone do not provide suitable entropy for * encryption and may be too short or too long to be used. In order to derive * a more appropriate key we use a PBKDF2 function. This function is designed * to take a (relatively) long time to calculate in order to discourage * attackers from guessing from a list of common passwords. PBKDF2 requires * 2 additional parameters. The first is the number of iterations to run, which * will ultimately determine how long it takes to derive the resulting key from * the password. The second parameter is a salt that is randomly generated for * each dataset. The salt is used to "tweak" PBKDF2 such that a group of * attackers cannot reasonably generate a table of commonly known passwords to * their output keys and expect it work for all past and future PBKDF2 users. * We store the salt as a hidden property of the dataset (although it is * technically ok if the salt is known to the attacker). */ typedef enum key_locator { KEY_LOCATOR_NONE, KEY_LOCATOR_PROMPT, KEY_LOCATOR_URI } key_locator_t; #define MIN_PASSPHRASE_LEN 8 #define MAX_PASSPHRASE_LEN 512 #define MAX_KEY_PROMPT_ATTEMPTS 3 static int caught_interrupt; static int pkcs11_get_urandom(uint8_t *buf, size_t bytes) { int rand; ssize_t bytes_read = 0; rand = open("/dev/urandom", O_RDONLY); if (rand < 0) return (rand); while (bytes_read < bytes) { ssize_t rc = read(rand, buf + bytes_read, bytes - bytes_read); if (rc < 0) break; bytes_read += rc; } (void) close(rand); return (bytes_read); } static zfs_keylocation_t zfs_prop_parse_keylocation(const char *str) { if (strcmp("prompt", str) == 0) return (ZFS_KEYLOCATION_PROMPT); else if (strlen(str) > 8 && strncmp("file:///", str, 8) == 0) return (ZFS_KEYLOCATION_URI); return (ZFS_KEYLOCATION_NONE); } static int hex_key_to_raw(char *hex, int hexlen, uint8_t *out) { int ret, i; unsigned int c; for (i = 0; i < hexlen; i += 2) { if (!isxdigit(hex[i]) || !isxdigit(hex[i + 1])) { ret = EINVAL; goto error; } ret = sscanf(&hex[i], "%02x", &c); if (ret != 1) { ret = EINVAL; goto error; } out[i / 2] = c; } return (0); error: return (ret); } static void catch_signal(int sig) { caught_interrupt = sig; } static const char * get_format_prompt_string(zfs_keyformat_t format) { switch (format) { case ZFS_KEYFORMAT_RAW: return ("raw key"); case ZFS_KEYFORMAT_HEX: return ("hex key"); case ZFS_KEYFORMAT_PASSPHRASE: return ("passphrase"); default: /* shouldn't happen */ return (NULL); } } static int get_key_material_raw(FILE *fd, const char *fsname, zfs_keyformat_t keyformat, boolean_t again, boolean_t newkey, uint8_t **buf, size_t *len_out) { int ret = 0, bytes; size_t buflen = 0; struct termios old_term, new_term; struct sigaction act, osigint, osigtstp; *len_out = 0; if (isatty(fileno(fd))) { /* * handle SIGINT and ignore SIGSTP. This is necessary to * restore the state of the terminal. */ caught_interrupt = 0; act.sa_flags = 0; (void) sigemptyset(&act.sa_mask); act.sa_handler = catch_signal; (void) sigaction(SIGINT, &act, &osigint); act.sa_handler = SIG_IGN; (void) sigaction(SIGTSTP, &act, &osigtstp); /* prompt for the key */ if (fsname != NULL) { (void) printf("%s %s%s for '%s': ", (again) ? "Re-enter" : "Enter", (newkey) ? "new " : "", get_format_prompt_string(keyformat), fsname); } else { (void) printf("%s %s%s: ", (again) ? "Re-enter" : "Enter", (newkey) ? "new " : "", get_format_prompt_string(keyformat)); } (void) fflush(stdout); /* disable the terminal echo for key input */ (void) tcgetattr(fileno(fd), &old_term); new_term = old_term; new_term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL); ret = tcsetattr(fileno(fd), TCSAFLUSH, &new_term); if (ret != 0) { ret = errno; errno = 0; goto out; } } /* read the key material */ if (keyformat != ZFS_KEYFORMAT_RAW) { bytes = getline((char **)buf, &buflen, fd); if (bytes < 0) { ret = errno; errno = 0; goto out; } /* trim the ending newline if it exists */ if ((*buf)[bytes - 1] == '\n') { (*buf)[bytes - 1] = '\0'; bytes--; } } else { /* * Raw keys may have newline characters in them and so can't * use getline(). Here we attempt to read 33 bytes so that we * can properly check the key length (the file should only have * 32 bytes). */ *buf = malloc((WRAPPING_KEY_LEN + 1) * sizeof (char)); if (*buf == NULL) { ret = ENOMEM; goto out; } bytes = fread(*buf, 1, WRAPPING_KEY_LEN + 1, fd); if (bytes < 0) { /* size errors are handled by the calling function */ free(*buf); *buf = NULL; ret = errno; errno = 0; goto out; } } *len_out = bytes; out: if (isatty(fileno(fd))) { /* reset the terminal */ (void) tcsetattr(fileno(fd), TCSAFLUSH, &old_term); (void) sigaction(SIGINT, &osigint, NULL); (void) sigaction(SIGTSTP, &osigtstp, NULL); /* if we caught a signal, re-throw it now */ if (caught_interrupt != 0) { (void) kill(getpid(), caught_interrupt); } /* print the newline that was not echo'd */ printf("\n"); } return (ret); } /* * Attempts to fetch key material, no matter where it might live. The key * material is allocated and returned in km_out. *can_retry_out will be set * to B_TRUE if the user is providing the key material interactively, allowing * for re-entry attempts. */ static int get_key_material(libzfs_handle_t *hdl, boolean_t do_verify, boolean_t newkey, zfs_keyformat_t keyformat, char *keylocation, const char *fsname, uint8_t **km_out, size_t *kmlen_out, boolean_t *can_retry_out) { int ret, i; zfs_keylocation_t keyloc = ZFS_KEYLOCATION_NONE; FILE *fd = NULL; uint8_t *km = NULL, *km2 = NULL; size_t kmlen, kmlen2; boolean_t can_retry = B_FALSE; /* verify and parse the keylocation */ keyloc = zfs_prop_parse_keylocation(keylocation); /* open the appropriate file descriptor */ switch (keyloc) { case ZFS_KEYLOCATION_PROMPT: fd = stdin; if (isatty(fileno(fd))) { can_retry = B_TRUE; /* raw keys cannot be entered on the terminal */ if (keyformat == ZFS_KEYFORMAT_RAW) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Cannot enter raw keys on the terminal")); goto error; } } break; case ZFS_KEYLOCATION_URI: fd = fopen(&keylocation[7], "r"); if (!fd) { ret = errno; errno = 0; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Failed to open key material file")); goto error; } break; default: ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Invalid keylocation.")); goto error; } /* fetch the key material into the buffer */ ret = get_key_material_raw(fd, fsname, keyformat, B_FALSE, newkey, &km, &kmlen); if (ret != 0) goto error; /* do basic validation of the key material */ switch (keyformat) { case ZFS_KEYFORMAT_RAW: /* verify the key length is correct */ if (kmlen < WRAPPING_KEY_LEN) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Raw key too short (expected %u)."), WRAPPING_KEY_LEN); goto error; } if (kmlen > WRAPPING_KEY_LEN) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Raw key too long (expected %u)."), WRAPPING_KEY_LEN); goto error; } break; case ZFS_KEYFORMAT_HEX: /* verify the key length is correct */ if (kmlen < WRAPPING_KEY_LEN * 2) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Hex key too short (expected %u)."), WRAPPING_KEY_LEN * 2); goto error; } if (kmlen > WRAPPING_KEY_LEN * 2) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Hex key too long (expected %u)."), WRAPPING_KEY_LEN * 2); goto error; } /* check for invalid hex digits */ for (i = 0; i < WRAPPING_KEY_LEN * 2; i++) { if (!isxdigit((char)km[i])) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Invalid hex character detected.")); goto error; } } break; case ZFS_KEYFORMAT_PASSPHRASE: /* verify the length is within bounds */ if (kmlen > MAX_PASSPHRASE_LEN) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Passphrase too long (max %u)."), MAX_PASSPHRASE_LEN); goto error; } if (kmlen < MIN_PASSPHRASE_LEN) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Passphrase too short (min %u)."), MIN_PASSPHRASE_LEN); goto error; } break; default: /* can't happen, checked above */ break; } if (do_verify && isatty(fileno(fd))) { ret = get_key_material_raw(fd, fsname, keyformat, B_TRUE, newkey, &km2, &kmlen2); if (ret != 0) goto error; if (kmlen2 != kmlen || (memcmp((char *)km, (char *)km2, kmlen) != 0)) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Provided keys do not match.")); goto error; } } if (fd != stdin) fclose(fd); if (km2 != NULL) free(km2); *km_out = km; *kmlen_out = kmlen; if (can_retry_out != NULL) *can_retry_out = can_retry; return (0); error: if (km != NULL) free(km); if (km2 != NULL) free(km2); if (fd != NULL && fd != stdin) fclose(fd); *km_out = NULL; *kmlen_out = 0; if (can_retry_out != NULL) *can_retry_out = can_retry; return (ret); } static int derive_key(libzfs_handle_t *hdl, zfs_keyformat_t format, uint64_t iters, uint8_t *key_material, size_t key_material_len, uint64_t salt, uint8_t **key_out) { int ret; uint8_t *key; *key_out = NULL; key = zfs_alloc(hdl, WRAPPING_KEY_LEN); if (!key) return (ENOMEM); switch (format) { case ZFS_KEYFORMAT_RAW: bcopy(key_material, key, WRAPPING_KEY_LEN); break; case ZFS_KEYFORMAT_HEX: ret = hex_key_to_raw((char *)key_material, WRAPPING_KEY_LEN * 2, key); if (ret != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Invalid hex key provided.")); goto error; } break; case ZFS_KEYFORMAT_PASSPHRASE: salt = LE_64(salt); ret = PKCS5_PBKDF2_HMAC_SHA1((char *)key_material, strlen((char *)key_material), ((uint8_t *)&salt), sizeof (uint64_t), iters, WRAPPING_KEY_LEN, key); if (ret != 1) { ret = EIO; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Failed to generate key from passphrase.")); goto error; } break; default: ret = EINVAL; goto error; } *key_out = key; return (0); error: free(key); *key_out = NULL; return (ret); } static boolean_t encryption_feature_is_enabled(zpool_handle_t *zph) { nvlist_t *features; uint64_t feat_refcount; /* check that features can be enabled */ if (zpool_get_prop_int(zph, ZPOOL_PROP_VERSION, NULL) < SPA_VERSION_FEATURES) return (B_FALSE); /* check for crypto feature */ features = zpool_get_features(zph); if (!features || nvlist_lookup_uint64(features, spa_feature_table[SPA_FEATURE_ENCRYPTION].fi_guid, &feat_refcount) != 0) return (B_FALSE); return (B_TRUE); } static int populate_create_encryption_params_nvlists(libzfs_handle_t *hdl, zfs_handle_t *zhp, boolean_t newkey, zfs_keyformat_t keyformat, char *keylocation, nvlist_t *props, uint8_t **wkeydata, uint_t *wkeylen) { int ret; uint64_t iters = 0, salt = 0; uint8_t *key_material = NULL; size_t key_material_len = 0; uint8_t *key_data = NULL; const char *fsname = (zhp) ? zfs_get_name(zhp) : NULL; /* get key material from keyformat and keylocation */ ret = get_key_material(hdl, B_TRUE, newkey, keyformat, keylocation, fsname, &key_material, &key_material_len, NULL); if (ret != 0) goto error; /* passphrase formats require a salt and pbkdf2 iters property */ if (keyformat == ZFS_KEYFORMAT_PASSPHRASE) { /* always generate a new salt */ ret = pkcs11_get_urandom((uint8_t *)&salt, sizeof (uint64_t)); if (ret != sizeof (uint64_t)) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Failed to generate salt.")); goto error; } ret = nvlist_add_uint64(props, zfs_prop_to_name(ZFS_PROP_PBKDF2_SALT), salt); if (ret != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Failed to add salt to properties.")); goto error; } /* * If not otherwise specified, use the default number of * pbkdf2 iterations. If specified, we have already checked * that the given value is greater than MIN_PBKDF2_ITERATIONS * during zfs_valid_proplist(). */ ret = nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_PBKDF2_ITERS), &iters); if (ret == ENOENT) { iters = DEFAULT_PBKDF2_ITERATIONS; ret = nvlist_add_uint64(props, zfs_prop_to_name(ZFS_PROP_PBKDF2_ITERS), iters); if (ret != 0) goto error; } else if (ret != 0) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Failed to get pbkdf2 iterations.")); goto error; } } else { /* check that pbkdf2iters was not specified by the user */ ret = nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_PBKDF2_ITERS), &iters); if (ret == 0) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Cannot specify pbkdf2iters with a non-passphrase " "keyformat.")); goto error; } } /* derive a key from the key material */ ret = derive_key(hdl, keyformat, iters, key_material, key_material_len, salt, &key_data); if (ret != 0) goto error; free(key_material); *wkeydata = key_data; *wkeylen = WRAPPING_KEY_LEN; return (0); error: if (key_material != NULL) free(key_material); if (key_data != NULL) free(key_data); *wkeydata = NULL; *wkeylen = 0; return (ret); } static boolean_t proplist_has_encryption_props(nvlist_t *props) { int ret; uint64_t intval; char *strval; ret = nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_ENCRYPTION), &intval); if (ret == 0 && intval != ZIO_CRYPT_OFF) return (B_TRUE); ret = nvlist_lookup_string(props, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), &strval); if (ret == 0 && strcmp(strval, "none") != 0) return (B_TRUE); ret = nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_KEYFORMAT), &intval); if (ret == 0) return (B_TRUE); ret = nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_PBKDF2_ITERS), &intval); if (ret == 0) return (B_TRUE); return (B_FALSE); } int zfs_crypto_get_encryption_root(zfs_handle_t *zhp, boolean_t *is_encroot, char *buf) { int ret; char prop_encroot[MAXNAMELEN]; /* if the dataset isn't encrypted, just return */ if (zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION) == ZIO_CRYPT_OFF) { *is_encroot = B_FALSE; if (buf != NULL) buf[0] = '\0'; return (0); } ret = zfs_prop_get(zhp, ZFS_PROP_ENCRYPTION_ROOT, prop_encroot, sizeof (prop_encroot), NULL, NULL, 0, B_TRUE); if (ret != 0) { *is_encroot = B_FALSE; if (buf != NULL) buf[0] = '\0'; return (ret); } *is_encroot = strcmp(prop_encroot, zfs_get_name(zhp)) == 0; if (buf != NULL) strcpy(buf, prop_encroot); return (0); } int zfs_crypto_create(libzfs_handle_t *hdl, char *parent_name, nvlist_t *props, nvlist_t *pool_props, boolean_t stdin_available, uint8_t **wkeydata_out, uint_t *wkeylen_out) { int ret; char errbuf[1024]; uint64_t crypt = ZIO_CRYPT_INHERIT, pcrypt = ZIO_CRYPT_INHERIT; uint64_t keyformat = ZFS_KEYFORMAT_NONE; char *keylocation = NULL; zfs_handle_t *pzhp = NULL; uint8_t *wkeydata = NULL; uint_t wkeylen = 0; boolean_t local_crypt = B_TRUE; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "Encryption create error")); /* lookup crypt from props */ ret = nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_ENCRYPTION), &crypt); if (ret != 0) local_crypt = B_FALSE; /* lookup key location and format from props */ (void) nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_KEYFORMAT), &keyformat); (void) nvlist_lookup_string(props, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), &keylocation); if (parent_name != NULL) { /* get a reference to parent dataset */ pzhp = make_dataset_handle(hdl, parent_name); if (pzhp == NULL) { ret = ENOENT; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Failed to lookup parent.")); goto out; } /* Lookup parent's crypt */ pcrypt = zfs_prop_get_int(pzhp, ZFS_PROP_ENCRYPTION); /* Params require the encryption feature */ if (!encryption_feature_is_enabled(pzhp->zpool_hdl)) { if (proplist_has_encryption_props(props)) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Encryption feature not enabled.")); goto out; } ret = 0; goto out; } } else { /* * special case for root dataset where encryption feature * feature won't be on disk yet */ if (!nvlist_exists(pool_props, "feature@encryption")) { if (proplist_has_encryption_props(props)) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Encryption feature not enabled.")); goto out; } ret = 0; goto out; } pcrypt = ZIO_CRYPT_OFF; } /* Get the inherited encryption property if we don't have it locally */ if (!local_crypt) crypt = pcrypt; /* * At this point crypt should be the actual encryption value. If * encryption is off just verify that no encryption properties have * been specified and return. */ if (crypt == ZIO_CRYPT_OFF) { if (proplist_has_encryption_props(props)) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Encryption must be turned on to set encryption " "properties.")); goto out; } ret = 0; goto out; } /* * If we have a parent crypt it is valid to specify encryption alone. * This will result in a child that is encrypted with the chosen * encryption suite that will also inherit the parent's key. If * the parent is not encrypted we need an encryption suite provided. */ if (pcrypt == ZIO_CRYPT_OFF && keylocation == NULL && keyformat == ZFS_KEYFORMAT_NONE) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Keyformat required for new encryption root.")); goto out; } /* * Specifying a keylocation implies this will be a new encryption root. * Check that a keyformat is also specified. */ if (keylocation != NULL && keyformat == ZFS_KEYFORMAT_NONE) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Keyformat required for new encryption root.")); goto out; } /* default to prompt if no keylocation is specified */ if (keyformat != ZFS_KEYFORMAT_NONE && keylocation == NULL) { keylocation = "prompt"; ret = nvlist_add_string(props, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), keylocation); if (ret != 0) goto out; } /* * If a local key is provided, this dataset will be a new * encryption root. Populate the encryption params. */ if (keylocation != NULL) { /* * 'zfs recv -o keylocation=prompt' won't work because stdin * is being used by the send stream, so we disallow it. */ if (!stdin_available && strcmp(keylocation, "prompt") == 0) { ret = EINVAL; zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Cannot use " "'prompt' keylocation because stdin is in use.")); goto out; } ret = populate_create_encryption_params_nvlists(hdl, NULL, B_FALSE, keyformat, keylocation, props, &wkeydata, &wkeylen); if (ret != 0) goto out; } if (pzhp != NULL) zfs_close(pzhp); *wkeydata_out = wkeydata; *wkeylen_out = wkeylen; return (0); out: if (pzhp != NULL) zfs_close(pzhp); if (wkeydata != NULL) free(wkeydata); *wkeydata_out = NULL; *wkeylen_out = 0; return (ret); } int zfs_crypto_clone_check(libzfs_handle_t *hdl, zfs_handle_t *origin_zhp, char *parent_name, nvlist_t *props) { char errbuf[1024]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "Encryption clone error")); /* * No encryption properties should be specified. They will all be * inherited from the origin dataset. */ if (nvlist_exists(props, zfs_prop_to_name(ZFS_PROP_KEYFORMAT)) || nvlist_exists(props, zfs_prop_to_name(ZFS_PROP_KEYLOCATION)) || nvlist_exists(props, zfs_prop_to_name(ZFS_PROP_ENCRYPTION)) || nvlist_exists(props, zfs_prop_to_name(ZFS_PROP_PBKDF2_ITERS))) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, "Encryption properties must inherit from origin dataset.")); return (EINVAL); } return (0); } typedef struct loadkeys_cbdata { uint64_t cb_numfailed; uint64_t cb_numattempted; } loadkey_cbdata_t; static int load_keys_cb(zfs_handle_t *zhp, void *arg) { int ret; boolean_t is_encroot; loadkey_cbdata_t *cb = arg; uint64_t keystatus = zfs_prop_get_int(zhp, ZFS_PROP_KEYSTATUS); /* only attempt to load keys for encryption roots */ ret = zfs_crypto_get_encryption_root(zhp, &is_encroot, NULL); if (ret != 0 || !is_encroot) goto out; /* don't attempt to load already loaded keys */ if (keystatus == ZFS_KEYSTATUS_AVAILABLE) goto out; /* Attempt to load the key. Record status in cb. */ cb->cb_numattempted++; ret = zfs_crypto_load_key(zhp, B_FALSE, NULL); if (ret) cb->cb_numfailed++; out: (void) zfs_iter_filesystems(zhp, load_keys_cb, cb); zfs_close(zhp); /* always return 0, since this function is best effort */ return (0); } /* * This function is best effort. It attempts to load all the keys for the given * filesystem and all of its children. */ int zfs_crypto_attempt_load_keys(libzfs_handle_t *hdl, char *fsname) { int ret; zfs_handle_t *zhp = NULL; loadkey_cbdata_t cb = { 0 }; zhp = zfs_open(hdl, fsname, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME); if (zhp == NULL) { ret = ENOENT; goto error; } ret = load_keys_cb(zfs_handle_dup(zhp), &cb); if (ret) goto error; (void) printf(gettext("%llu / %llu keys successfully loaded\n"), (u_longlong_t)(cb.cb_numattempted - cb.cb_numfailed), (u_longlong_t)cb.cb_numattempted); if (cb.cb_numfailed != 0) { ret = -1; goto error; } zfs_close(zhp); return (0); error: if (zhp != NULL) zfs_close(zhp); return (ret); } int zfs_crypto_load_key(zfs_handle_t *zhp, boolean_t noop, char *alt_keylocation) { int ret, attempts = 0; char errbuf[1024]; uint64_t keystatus, iters = 0, salt = 0; uint64_t keyformat = ZFS_KEYFORMAT_NONE; char prop_keylocation[MAXNAMELEN]; char prop_encroot[MAXNAMELEN]; char *keylocation = NULL; uint8_t *key_material = NULL, *key_data = NULL; size_t key_material_len; boolean_t is_encroot, can_retry = B_FALSE, correctible = B_FALSE; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "Key load error")); /* check that encryption is enabled for the pool */ if (!encryption_feature_is_enabled(zhp->zpool_hdl)) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Encryption feature not enabled.")); ret = EINVAL; goto error; } /* Fetch the keyformat. Check that the dataset is encrypted. */ keyformat = zfs_prop_get_int(zhp, ZFS_PROP_KEYFORMAT); if (keyformat == ZFS_KEYFORMAT_NONE) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "'%s' is not encrypted."), zfs_get_name(zhp)); ret = EINVAL; goto error; } /* * Fetch the key location. Check that we are working with an * encryption root. */ ret = zfs_crypto_get_encryption_root(zhp, &is_encroot, prop_encroot); if (ret != 0) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Failed to get encryption root for '%s'."), zfs_get_name(zhp)); goto error; } else if (!is_encroot) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Keys must be loaded for encryption root of '%s' (%s)."), zfs_get_name(zhp), prop_encroot); ret = EINVAL; goto error; } /* * if the caller has elected to override the keylocation property * use that instead */ if (alt_keylocation != NULL) { keylocation = alt_keylocation; } else { ret = zfs_prop_get(zhp, ZFS_PROP_KEYLOCATION, prop_keylocation, sizeof (prop_keylocation), NULL, NULL, 0, B_TRUE); if (ret != 0) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Failed to get keylocation for '%s'."), zfs_get_name(zhp)); goto error; } keylocation = prop_keylocation; } /* check that the key is unloaded unless this is a noop */ if (!noop) { keystatus = zfs_prop_get_int(zhp, ZFS_PROP_KEYSTATUS); if (keystatus == ZFS_KEYSTATUS_AVAILABLE) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key already loaded for '%s'."), zfs_get_name(zhp)); ret = EEXIST; goto error; } } /* passphrase formats require a salt and pbkdf2_iters property */ if (keyformat == ZFS_KEYFORMAT_PASSPHRASE) { salt = zfs_prop_get_int(zhp, ZFS_PROP_PBKDF2_SALT); iters = zfs_prop_get_int(zhp, ZFS_PROP_PBKDF2_ITERS); } try_again: /* fetching and deriving the key are correctable errors. set the flag */ correctible = B_TRUE; /* get key material from key format and location */ ret = get_key_material(zhp->zfs_hdl, B_FALSE, B_FALSE, keyformat, keylocation, zfs_get_name(zhp), &key_material, &key_material_len, &can_retry); if (ret != 0) goto error; /* derive a key from the key material */ ret = derive_key(zhp->zfs_hdl, keyformat, iters, key_material, key_material_len, salt, &key_data); if (ret != 0) goto error; correctible = B_FALSE; /* pass the wrapping key and noop flag to the ioctl */ ret = lzc_load_key(zhp->zfs_name, noop, key_data, WRAPPING_KEY_LEN); if (ret != 0) { switch (ret) { case EPERM: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Permission denied.")); break; case EINVAL: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Invalid parameters provided for dataset %s."), zfs_get_name(zhp)); break; case EEXIST: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key already loaded for '%s'."), zfs_get_name(zhp)); break; case EBUSY: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "'%s' is busy."), zfs_get_name(zhp)); break; case EACCES: correctible = B_TRUE; zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Incorrect key provided for '%s'."), zfs_get_name(zhp)); break; } goto error; } free(key_material); free(key_data); return (0); error: zfs_error(zhp->zfs_hdl, EZFS_CRYPTOFAILED, errbuf); if (key_material != NULL) { free(key_material); key_material = NULL; } if (key_data != NULL) { free(key_data); key_data = NULL; } /* * Here we decide if it is ok to allow the user to retry entering their * key. The can_retry flag will be set if the user is entering their * key from an interactive prompt. The correctable flag will only be * set if an error that occurred could be corrected by retrying. Both * flags are needed to allow the user to attempt key entry again */ attempts++; if (can_retry && correctible && attempts < MAX_KEY_PROMPT_ATTEMPTS) goto try_again; return (ret); } int zfs_crypto_unload_key(zfs_handle_t *zhp) { int ret; char errbuf[1024]; char prop_encroot[MAXNAMELEN]; uint64_t keystatus, keyformat; boolean_t is_encroot; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "Key unload error")); /* check that encryption is enabled for the pool */ if (!encryption_feature_is_enabled(zhp->zpool_hdl)) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Encryption feature not enabled.")); ret = EINVAL; goto error; } /* Fetch the keyformat. Check that the dataset is encrypted. */ keyformat = zfs_prop_get_int(zhp, ZFS_PROP_KEYFORMAT); if (keyformat == ZFS_KEYFORMAT_NONE) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "'%s' is not encrypted."), zfs_get_name(zhp)); ret = EINVAL; goto error; } /* * Fetch the key location. Check that we are working with an * encryption root. */ ret = zfs_crypto_get_encryption_root(zhp, &is_encroot, prop_encroot); if (ret != 0) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Failed to get encryption root for '%s'."), zfs_get_name(zhp)); goto error; } else if (!is_encroot) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Keys must be unloaded for encryption root of '%s' (%s)."), zfs_get_name(zhp), prop_encroot); ret = EINVAL; goto error; } /* check that the key is loaded */ keystatus = zfs_prop_get_int(zhp, ZFS_PROP_KEYSTATUS); if (keystatus == ZFS_KEYSTATUS_UNAVAILABLE) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key already unloaded for '%s'."), zfs_get_name(zhp)); ret = EACCES; goto error; } /* call the ioctl */ ret = lzc_unload_key(zhp->zfs_name); if (ret != 0) { switch (ret) { case EPERM: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Permission denied.")); break; case EACCES: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key already unloaded for '%s'."), zfs_get_name(zhp)); break; case EBUSY: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "'%s' is busy."), zfs_get_name(zhp)); break; } zfs_error(zhp->zfs_hdl, EZFS_CRYPTOFAILED, errbuf); } return (ret); error: zfs_error(zhp->zfs_hdl, EZFS_CRYPTOFAILED, errbuf); return (ret); } static int zfs_crypto_verify_rewrap_nvlist(zfs_handle_t *zhp, nvlist_t *props, nvlist_t **props_out, char *errbuf) { int ret; nvpair_t *elem = NULL; zfs_prop_t prop; nvlist_t *new_props = NULL; new_props = fnvlist_alloc(); /* * loop through all provided properties, we should only have * keyformat, keylocation and pbkdf2iters. The actual validation of * values is done by zfs_valid_proplist(). */ while ((elem = nvlist_next_nvpair(props, elem)) != NULL) { const char *propname = nvpair_name(elem); prop = zfs_name_to_prop(propname); switch (prop) { case ZFS_PROP_PBKDF2_ITERS: case ZFS_PROP_KEYFORMAT: case ZFS_PROP_KEYLOCATION: break; default: ret = EINVAL; zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Only keyformat, keylocation and pbkdf2iters may " "be set with this command.")); goto error; } } new_props = zfs_valid_proplist(zhp->zfs_hdl, zhp->zfs_type, props, zfs_prop_get_int(zhp, ZFS_PROP_ZONED), NULL, zhp->zpool_hdl, B_TRUE, errbuf); if (new_props == NULL) { ret = EINVAL; goto error; } *props_out = new_props; return (0); error: nvlist_free(new_props); *props_out = NULL; return (ret); } int zfs_crypto_rewrap(zfs_handle_t *zhp, nvlist_t *raw_props, boolean_t inheritkey) { int ret; char errbuf[1024]; boolean_t is_encroot; nvlist_t *props = NULL; uint8_t *wkeydata = NULL; uint_t wkeylen = 0; dcp_cmd_t cmd = (inheritkey) ? DCP_CMD_INHERIT : DCP_CMD_NEW_KEY; uint64_t crypt, pcrypt, keystatus, pkeystatus; uint64_t keyformat = ZFS_KEYFORMAT_NONE; zfs_handle_t *pzhp = NULL; char *keylocation = NULL; char origin_name[MAXNAMELEN]; char prop_keylocation[MAXNAMELEN]; char parent_name[ZFS_MAX_DATASET_NAME_LEN]; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "Key change error")); /* check that encryption is enabled for the pool */ if (!encryption_feature_is_enabled(zhp->zpool_hdl)) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Encryption feature not enabled.")); ret = EINVAL; goto error; } /* get crypt from dataset */ crypt = zfs_prop_get_int(zhp, ZFS_PROP_ENCRYPTION); if (crypt == ZIO_CRYPT_OFF) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Dataset not encrypted.")); ret = EINVAL; goto error; } /* get the encryption root of the dataset */ ret = zfs_crypto_get_encryption_root(zhp, &is_encroot, NULL); if (ret != 0) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Failed to get encryption root for '%s'."), zfs_get_name(zhp)); goto error; } /* Clones use their origin's key and cannot rewrap it */ ret = zfs_prop_get(zhp, ZFS_PROP_ORIGIN, origin_name, sizeof (origin_name), NULL, NULL, 0, B_TRUE); if (ret == 0 && strcmp(origin_name, "") != 0) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Keys cannot be changed on clones.")); ret = EINVAL; goto error; } /* * If the user wants to use the inheritkey variant of this function * we don't need to collect any crypto arguments. */ if (!inheritkey) { /* validate the provided properties */ ret = zfs_crypto_verify_rewrap_nvlist(zhp, raw_props, &props, errbuf); if (ret != 0) goto error; /* * Load keyformat and keylocation from the nvlist. Fetch from * the dataset properties if not specified. */ (void) nvlist_lookup_uint64(props, zfs_prop_to_name(ZFS_PROP_KEYFORMAT), &keyformat); (void) nvlist_lookup_string(props, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), &keylocation); if (is_encroot) { /* * If this is already an encryption root, just keep * any properties not set by the user. */ if (keyformat == ZFS_KEYFORMAT_NONE) { keyformat = zfs_prop_get_int(zhp, ZFS_PROP_KEYFORMAT); ret = nvlist_add_uint64(props, zfs_prop_to_name(ZFS_PROP_KEYFORMAT), keyformat); if (ret != 0) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Failed to " "get existing keyformat " "property.")); goto error; } } if (keylocation == NULL) { ret = zfs_prop_get(zhp, ZFS_PROP_KEYLOCATION, prop_keylocation, sizeof (prop_keylocation), NULL, NULL, 0, B_TRUE); if (ret != 0) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Failed to " "get existing keylocation " "property.")); goto error; } keylocation = prop_keylocation; } } else { /* need a new key for non-encryption roots */ if (keyformat == ZFS_KEYFORMAT_NONE) { ret = EINVAL; zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Keyformat required " "for new encryption root.")); goto error; } /* default to prompt if no keylocation is specified */ if (keylocation == NULL) { keylocation = "prompt"; ret = nvlist_add_string(props, zfs_prop_to_name(ZFS_PROP_KEYLOCATION), keylocation); if (ret != 0) goto error; } } /* fetch the new wrapping key and associated properties */ ret = populate_create_encryption_params_nvlists(zhp->zfs_hdl, zhp, B_TRUE, keyformat, keylocation, props, &wkeydata, &wkeylen); if (ret != 0) goto error; } else { /* check that zhp is an encryption root */ if (!is_encroot) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key inheritting can only be performed on " "encryption roots.")); ret = EINVAL; goto error; } /* get the parent's name */ ret = zfs_parent_name(zhp, parent_name, sizeof (parent_name)); if (ret != 0) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Root dataset cannot inherit key.")); ret = EINVAL; goto error; } /* get a handle to the parent */ pzhp = make_dataset_handle(zhp->zfs_hdl, parent_name); if (pzhp == NULL) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Failed to lookup parent.")); ret = ENOENT; goto error; } /* parent must be encrypted */ pcrypt = zfs_prop_get_int(pzhp, ZFS_PROP_ENCRYPTION); if (pcrypt == ZIO_CRYPT_OFF) { zfs_error_aux(pzhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Parent must be encrypted.")); ret = EINVAL; goto error; } /* check that the parent's key is loaded */ pkeystatus = zfs_prop_get_int(pzhp, ZFS_PROP_KEYSTATUS); if (pkeystatus == ZFS_KEYSTATUS_UNAVAILABLE) { zfs_error_aux(pzhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Parent key must be loaded.")); ret = EACCES; goto error; } } /* check that the key is loaded */ keystatus = zfs_prop_get_int(zhp, ZFS_PROP_KEYSTATUS); if (keystatus == ZFS_KEYSTATUS_UNAVAILABLE) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key must be loaded.")); ret = EACCES; goto error; } /* call the ioctl */ ret = lzc_change_key(zhp->zfs_name, cmd, props, wkeydata, wkeylen); if (ret != 0) { switch (ret) { case EPERM: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Permission denied.")); break; case EINVAL: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Invalid properties for key change.")); break; case EACCES: zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "Key is not currently loaded.")); break; } zfs_error(zhp->zfs_hdl, EZFS_CRYPTOFAILED, errbuf); } if (pzhp != NULL) zfs_close(pzhp); if (props != NULL) nvlist_free(props); if (wkeydata != NULL) free(wkeydata); return (ret); error: if (pzhp != NULL) zfs_close(pzhp); if (props != NULL) nvlist_free(props); if (wkeydata != NULL) free(wkeydata); zfs_error(zhp->zfs_hdl, EZFS_CRYPTOFAILED, errbuf); return (ret); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_diff.c0000644000000000000000000000007413607166147020112 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.927536628 zfs-0.8.3/lib/libzfs/libzfs_diff.c0000644016037001603700000005042013607166147020110 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2015, 2018 by Delphix. All rights reserved. * Copyright 2016 Joyent, Inc. * Copyright 2016 Igor Kozhukhov */ /* * zfs diff support */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "libzfs_impl.h" #define ZDIFF_SNAPDIR "/.zfs/snapshot/" #define ZDIFF_SHARESDIR "/.zfs/shares/" #define ZDIFF_PREFIX "zfs-diff-%d" #define ZDIFF_ADDED '+' #define ZDIFF_MODIFIED 'M' #define ZDIFF_REMOVED '-' #define ZDIFF_RENAMED 'R' typedef struct differ_info { zfs_handle_t *zhp; char *fromsnap; char *frommnt; char *tosnap; char *tomnt; char *ds; char *dsmnt; char *tmpsnap; char errbuf[1024]; boolean_t isclone; boolean_t scripted; boolean_t classify; boolean_t timestamped; uint64_t shares; int zerr; int cleanupfd; int outputfd; int datafd; } differ_info_t; /* * Given a {dsname, object id}, get the object path */ static int get_stats_for_obj(differ_info_t *di, const char *dsname, uint64_t obj, char *pn, int maxlen, zfs_stat_t *sb) { zfs_cmd_t zc = {"\0"}; int error; (void) strlcpy(zc.zc_name, dsname, sizeof (zc.zc_name)); zc.zc_obj = obj; errno = 0; error = ioctl(di->zhp->zfs_hdl->libzfs_fd, ZFS_IOC_OBJ_TO_STATS, &zc); di->zerr = errno; /* we can get stats even if we failed to get a path */ (void) memcpy(sb, &zc.zc_stat, sizeof (zfs_stat_t)); if (error == 0) { ASSERT(di->zerr == 0); (void) strlcpy(pn, zc.zc_value, maxlen); return (0); } if (di->zerr == ESTALE) { (void) snprintf(pn, maxlen, "(on_delete_queue)"); return (0); } else if (di->zerr == EPERM) { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "The sys_config privilege or diff delegated permission " "is needed\nto discover path names")); return (-1); } else if (di->zerr == EACCES) { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Key must be loaded to discover path names")); return (-1); } else { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Unable to determine path or stats for " "object %lld in %s"), (longlong_t)obj, dsname); return (-1); } } /* * stream_bytes * * Prints a file name out a character at a time. If the character is * not in the range of what we consider "printable" ASCII, display it * as an escaped 4-digit octal value. ASCII values less than a space * are all control characters and we declare the upper end as the * DELete character. This also is the last 7-bit ASCII character. * We choose to treat all 8-bit ASCII as not printable for this * application. */ static void stream_bytes(FILE *fp, const char *string) { char c; while ((c = *string++) != '\0') { if (c > ' ' && c != '\\' && c < '\177') { (void) fprintf(fp, "%c", c); } else { (void) fprintf(fp, "\\%04o", (uint8_t)c); } } } static void print_what(FILE *fp, mode_t what) { char symbol; switch (what & S_IFMT) { case S_IFBLK: symbol = 'B'; break; case S_IFCHR: symbol = 'C'; break; case S_IFDIR: symbol = '/'; break; #ifdef S_IFDOOR case S_IFDOOR: symbol = '>'; break; #endif case S_IFIFO: symbol = '|'; break; case S_IFLNK: symbol = '@'; break; #ifdef S_IFPORT case S_IFPORT: symbol = 'P'; break; #endif case S_IFSOCK: symbol = '='; break; case S_IFREG: symbol = 'F'; break; default: symbol = '?'; break; } (void) fprintf(fp, "%c", symbol); } static void print_cmn(FILE *fp, differ_info_t *di, const char *file) { stream_bytes(fp, di->dsmnt); stream_bytes(fp, file); } static void print_rename(FILE *fp, differ_info_t *di, const char *old, const char *new, zfs_stat_t *isb) { if (di->timestamped) (void) fprintf(fp, "%10lld.%09lld\t", (longlong_t)isb->zs_ctime[0], (longlong_t)isb->zs_ctime[1]); (void) fprintf(fp, "%c\t", ZDIFF_RENAMED); if (di->classify) { print_what(fp, isb->zs_mode); (void) fprintf(fp, "\t"); } print_cmn(fp, di, old); if (di->scripted) (void) fprintf(fp, "\t"); else (void) fprintf(fp, " -> "); print_cmn(fp, di, new); (void) fprintf(fp, "\n"); } static void print_link_change(FILE *fp, differ_info_t *di, int delta, const char *file, zfs_stat_t *isb) { if (di->timestamped) (void) fprintf(fp, "%10lld.%09lld\t", (longlong_t)isb->zs_ctime[0], (longlong_t)isb->zs_ctime[1]); (void) fprintf(fp, "%c\t", ZDIFF_MODIFIED); if (di->classify) { print_what(fp, isb->zs_mode); (void) fprintf(fp, "\t"); } print_cmn(fp, di, file); (void) fprintf(fp, "\t(%+d)", delta); (void) fprintf(fp, "\n"); } static void print_file(FILE *fp, differ_info_t *di, char type, const char *file, zfs_stat_t *isb) { if (di->timestamped) (void) fprintf(fp, "%10lld.%09lld\t", (longlong_t)isb->zs_ctime[0], (longlong_t)isb->zs_ctime[1]); (void) fprintf(fp, "%c\t", type); if (di->classify) { print_what(fp, isb->zs_mode); (void) fprintf(fp, "\t"); } print_cmn(fp, di, file); (void) fprintf(fp, "\n"); } static int write_inuse_diffs_one(FILE *fp, differ_info_t *di, uint64_t dobj) { struct zfs_stat fsb, tsb; mode_t fmode, tmode; char fobjname[MAXPATHLEN], tobjname[MAXPATHLEN]; int fobjerr, tobjerr; int change; if (dobj == di->shares) return (0); /* * Check the from and to snapshots for info on the object. If * we get ENOENT, then the object just didn't exist in that * snapshot. If we get ENOTSUP, then we tried to get * info on a non-ZPL object, which we don't care about anyway. */ fobjerr = get_stats_for_obj(di, di->fromsnap, dobj, fobjname, MAXPATHLEN, &fsb); if (fobjerr && di->zerr != ENOENT && di->zerr != ENOTSUP) return (-1); tobjerr = get_stats_for_obj(di, di->tosnap, dobj, tobjname, MAXPATHLEN, &tsb); if (tobjerr && di->zerr != ENOENT && di->zerr != ENOTSUP) return (-1); /* * Unallocated object sharing the same meta dnode block */ if (fobjerr && tobjerr) { ASSERT(di->zerr == ENOENT || di->zerr == ENOTSUP); di->zerr = 0; return (0); } di->zerr = 0; /* negate get_stats_for_obj() from side that failed */ fmode = fsb.zs_mode & S_IFMT; tmode = tsb.zs_mode & S_IFMT; if (fmode == S_IFDIR || tmode == S_IFDIR || fsb.zs_links == 0 || tsb.zs_links == 0) change = 0; else change = tsb.zs_links - fsb.zs_links; if (fobjerr) { if (change) { print_link_change(fp, di, change, tobjname, &tsb); return (0); } print_file(fp, di, ZDIFF_ADDED, tobjname, &tsb); return (0); } else if (tobjerr) { if (change) { print_link_change(fp, di, change, fobjname, &fsb); return (0); } print_file(fp, di, ZDIFF_REMOVED, fobjname, &fsb); return (0); } if (fmode != tmode && fsb.zs_gen == tsb.zs_gen) tsb.zs_gen++; /* Force a generational difference */ /* Simple modification or no change */ if (fsb.zs_gen == tsb.zs_gen) { /* No apparent changes. Could we assert !this? */ if (fsb.zs_ctime[0] == tsb.zs_ctime[0] && fsb.zs_ctime[1] == tsb.zs_ctime[1]) return (0); if (change) { print_link_change(fp, di, change, change > 0 ? fobjname : tobjname, &tsb); } else if (strcmp(fobjname, tobjname) == 0) { print_file(fp, di, ZDIFF_MODIFIED, fobjname, &tsb); } else { print_rename(fp, di, fobjname, tobjname, &tsb); } return (0); } else { /* file re-created or object re-used */ print_file(fp, di, ZDIFF_REMOVED, fobjname, &fsb); print_file(fp, di, ZDIFF_ADDED, tobjname, &tsb); return (0); } } static int write_inuse_diffs(FILE *fp, differ_info_t *di, dmu_diff_record_t *dr) { uint64_t o; int err; for (o = dr->ddr_first; o <= dr->ddr_last; o++) { if ((err = write_inuse_diffs_one(fp, di, o)) != 0) return (err); } return (0); } static int describe_free(FILE *fp, differ_info_t *di, uint64_t object, char *namebuf, int maxlen) { struct zfs_stat sb; if (get_stats_for_obj(di, di->fromsnap, object, namebuf, maxlen, &sb) != 0) { return (-1); } /* Don't print if in the delete queue on from side */ if (di->zerr == ESTALE) { di->zerr = 0; return (0); } print_file(fp, di, ZDIFF_REMOVED, namebuf, &sb); return (0); } static int write_free_diffs(FILE *fp, differ_info_t *di, dmu_diff_record_t *dr) { zfs_cmd_t zc = {"\0"}; libzfs_handle_t *lhdl = di->zhp->zfs_hdl; char fobjname[MAXPATHLEN]; (void) strlcpy(zc.zc_name, di->fromsnap, sizeof (zc.zc_name)); zc.zc_obj = dr->ddr_first - 1; ASSERT(di->zerr == 0); while (zc.zc_obj < dr->ddr_last) { int err; err = ioctl(lhdl->libzfs_fd, ZFS_IOC_NEXT_OBJ, &zc); if (err == 0) { if (zc.zc_obj == di->shares) { zc.zc_obj++; continue; } if (zc.zc_obj > dr->ddr_last) { break; } err = describe_free(fp, di, zc.zc_obj, fobjname, MAXPATHLEN); if (err) break; } else if (errno == ESRCH) { break; } else { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "next allocated object (> %lld) find failure"), (longlong_t)zc.zc_obj); di->zerr = errno; break; } } if (di->zerr) return (-1); return (0); } static void * differ(void *arg) { differ_info_t *di = arg; dmu_diff_record_t dr; FILE *ofp; int err = 0; if ((ofp = fdopen(di->outputfd, "w")) == NULL) { di->zerr = errno; strlcpy(di->errbuf, strerror(errno), sizeof (di->errbuf)); (void) close(di->datafd); return ((void *)-1); } for (;;) { char *cp = (char *)&dr; int len = sizeof (dr); int rv; do { rv = read(di->datafd, cp, len); cp += rv; len -= rv; } while (len > 0 && rv > 0); if (rv < 0 || (rv == 0 && len != sizeof (dr))) { di->zerr = EPIPE; break; } else if (rv == 0) { /* end of file at a natural breaking point */ break; } switch (dr.ddr_type) { case DDR_FREE: err = write_free_diffs(ofp, di, &dr); break; case DDR_INUSE: err = write_inuse_diffs(ofp, di, &dr); break; default: di->zerr = EPIPE; break; } if (err || di->zerr) break; } (void) fclose(ofp); (void) close(di->datafd); if (err) return ((void *)-1); if (di->zerr) { ASSERT(di->zerr == EPIPE); (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Internal error: bad data from diff IOCTL")); return ((void *)-1); } return ((void *)0); } static int find_shares_object(differ_info_t *di) { char fullpath[MAXPATHLEN]; struct stat64 sb = { 0 }; (void) strlcpy(fullpath, di->dsmnt, MAXPATHLEN); (void) strlcat(fullpath, ZDIFF_SHARESDIR, MAXPATHLEN); if (stat64(fullpath, &sb) != 0) { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Cannot stat %s"), fullpath); return (zfs_error(di->zhp->zfs_hdl, EZFS_DIFF, di->errbuf)); } di->shares = (uint64_t)sb.st_ino; return (0); } static int make_temp_snapshot(differ_info_t *di) { libzfs_handle_t *hdl = di->zhp->zfs_hdl; zfs_cmd_t zc = {"\0"}; (void) snprintf(zc.zc_value, sizeof (zc.zc_value), ZDIFF_PREFIX, getpid()); (void) strlcpy(zc.zc_name, di->ds, sizeof (zc.zc_name)); zc.zc_cleanup_fd = di->cleanupfd; if (ioctl(hdl->libzfs_fd, ZFS_IOC_TMP_SNAPSHOT, &zc) != 0) { int err = errno; if (err == EPERM) { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "The diff delegated " "permission is needed in order\nto create a " "just-in-time snapshot for diffing\n")); return (zfs_error(hdl, EZFS_DIFF, di->errbuf)); } else { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Cannot create just-in-time " "snapshot of '%s'"), zc.zc_name); return (zfs_standard_error(hdl, err, di->errbuf)); } } di->tmpsnap = zfs_strdup(hdl, zc.zc_value); di->tosnap = zfs_asprintf(hdl, "%s@%s", di->ds, di->tmpsnap); return (0); } static void teardown_differ_info(differ_info_t *di) { free(di->ds); free(di->dsmnt); free(di->fromsnap); free(di->frommnt); free(di->tosnap); free(di->tmpsnap); free(di->tomnt); (void) close(di->cleanupfd); } static int get_snapshot_names(differ_info_t *di, const char *fromsnap, const char *tosnap) { libzfs_handle_t *hdl = di->zhp->zfs_hdl; char *atptrf = NULL; char *atptrt = NULL; int fdslen, fsnlen; int tdslen, tsnlen; /* * Can accept * fdslen fsnlen tdslen tsnlen * dataset@snap1 * 0. dataset@snap1 dataset@snap2 >0 >1 >0 >1 * 1. dataset@snap1 @snap2 >0 >1 ==0 >1 * 2. dataset@snap1 dataset >0 >1 >0 ==0 * 3. @snap1 dataset@snap2 ==0 >1 >0 >1 * 4. @snap1 dataset ==0 >1 >0 ==0 */ if (tosnap == NULL) { /* only a from snapshot given, must be valid */ (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Badly formed snapshot name %s"), fromsnap); if (!zfs_validate_name(hdl, fromsnap, ZFS_TYPE_SNAPSHOT, B_FALSE)) { return (zfs_error(hdl, EZFS_INVALIDNAME, di->errbuf)); } atptrf = strchr(fromsnap, '@'); ASSERT(atptrf != NULL); fdslen = atptrf - fromsnap; di->fromsnap = zfs_strdup(hdl, fromsnap); di->ds = zfs_strdup(hdl, fromsnap); di->ds[fdslen] = '\0'; /* the to snap will be a just-in-time snap of the head */ return (make_temp_snapshot(di)); } (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Unable to determine which snapshots to compare")); atptrf = strchr(fromsnap, '@'); atptrt = strchr(tosnap, '@'); fdslen = atptrf ? atptrf - fromsnap : strlen(fromsnap); tdslen = atptrt ? atptrt - tosnap : strlen(tosnap); fsnlen = strlen(fromsnap) - fdslen; /* includes @ sign */ tsnlen = strlen(tosnap) - tdslen; /* includes @ sign */ if (fsnlen <= 1 || tsnlen == 1 || (fdslen == 0 && tdslen == 0)) { return (zfs_error(hdl, EZFS_INVALIDNAME, di->errbuf)); } else if ((fdslen > 0 && tdslen > 0) && ((tdslen != fdslen || strncmp(fromsnap, tosnap, fdslen) != 0))) { /* * not the same dataset name, might be okay if * tosnap is a clone of a fromsnap descendant. */ char origin[ZFS_MAX_DATASET_NAME_LEN]; zprop_source_t src; zfs_handle_t *zhp; di->ds = zfs_alloc(di->zhp->zfs_hdl, tdslen + 1); (void) strncpy(di->ds, tosnap, tdslen); di->ds[tdslen] = '\0'; zhp = zfs_open(hdl, di->ds, ZFS_TYPE_FILESYSTEM); while (zhp != NULL) { if (zfs_prop_get(zhp, ZFS_PROP_ORIGIN, origin, sizeof (origin), &src, NULL, 0, B_FALSE) != 0) { (void) zfs_close(zhp); zhp = NULL; break; } if (strncmp(origin, fromsnap, fsnlen) == 0) break; (void) zfs_close(zhp); zhp = zfs_open(hdl, origin, ZFS_TYPE_FILESYSTEM); } if (zhp == NULL) { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Not an earlier snapshot from the same fs")); return (zfs_error(hdl, EZFS_INVALIDNAME, di->errbuf)); } else { (void) zfs_close(zhp); } di->isclone = B_TRUE; di->fromsnap = zfs_strdup(hdl, fromsnap); if (tsnlen) { di->tosnap = zfs_strdup(hdl, tosnap); } else { return (make_temp_snapshot(di)); } } else { int dslen = fdslen ? fdslen : tdslen; di->ds = zfs_alloc(hdl, dslen + 1); (void) strncpy(di->ds, fdslen ? fromsnap : tosnap, dslen); di->ds[dslen] = '\0'; di->fromsnap = zfs_asprintf(hdl, "%s%s", di->ds, atptrf); if (tsnlen) { di->tosnap = zfs_asprintf(hdl, "%s%s", di->ds, atptrt); } else { return (make_temp_snapshot(di)); } } return (0); } static int get_mountpoint(differ_info_t *di, char *dsnm, char **mntpt) { boolean_t mounted; mounted = is_mounted(di->zhp->zfs_hdl, dsnm, mntpt); if (mounted == B_FALSE) { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Cannot diff an unmounted snapshot")); return (zfs_error(di->zhp->zfs_hdl, EZFS_BADTYPE, di->errbuf)); } /* Avoid a double slash at the beginning of root-mounted datasets */ if (**mntpt == '/' && *(*mntpt + 1) == '\0') **mntpt = '\0'; return (0); } static int get_mountpoints(differ_info_t *di) { char *strptr; char *frommntpt; /* * first get the mountpoint for the parent dataset */ if (get_mountpoint(di, di->ds, &di->dsmnt) != 0) return (-1); strptr = strchr(di->tosnap, '@'); ASSERT3P(strptr, !=, NULL); di->tomnt = zfs_asprintf(di->zhp->zfs_hdl, "%s%s%s", di->dsmnt, ZDIFF_SNAPDIR, ++strptr); strptr = strchr(di->fromsnap, '@'); ASSERT3P(strptr, !=, NULL); frommntpt = di->dsmnt; if (di->isclone) { char *mntpt; int err; *strptr = '\0'; err = get_mountpoint(di, di->fromsnap, &mntpt); *strptr = '@'; if (err != 0) return (-1); frommntpt = mntpt; } di->frommnt = zfs_asprintf(di->zhp->zfs_hdl, "%s%s%s", frommntpt, ZDIFF_SNAPDIR, ++strptr); if (di->isclone) free(frommntpt); return (0); } static int setup_differ_info(zfs_handle_t *zhp, const char *fromsnap, const char *tosnap, differ_info_t *di) { di->zhp = zhp; di->cleanupfd = open(ZFS_DEV, O_RDWR); VERIFY(di->cleanupfd >= 0); if (get_snapshot_names(di, fromsnap, tosnap) != 0) return (-1); if (get_mountpoints(di) != 0) return (-1); if (find_shares_object(di) != 0) return (-1); return (0); } int zfs_show_diffs(zfs_handle_t *zhp, int outfd, const char *fromsnap, const char *tosnap, int flags) { zfs_cmd_t zc = {"\0"}; char errbuf[1024]; differ_info_t di = { 0 }; pthread_t tid; int pipefd[2]; int iocerr; (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "zfs diff failed")); if (setup_differ_info(zhp, fromsnap, tosnap, &di)) { teardown_differ_info(&di); return (-1); } if (pipe(pipefd)) { zfs_error_aux(zhp->zfs_hdl, strerror(errno)); teardown_differ_info(&di); return (zfs_error(zhp->zfs_hdl, EZFS_PIPEFAILED, errbuf)); } di.scripted = (flags & ZFS_DIFF_PARSEABLE); di.classify = (flags & ZFS_DIFF_CLASSIFY); di.timestamped = (flags & ZFS_DIFF_TIMESTAMP); di.outputfd = outfd; di.datafd = pipefd[0]; if (pthread_create(&tid, NULL, differ, &di)) { zfs_error_aux(zhp->zfs_hdl, strerror(errno)); (void) close(pipefd[0]); (void) close(pipefd[1]); teardown_differ_info(&di); return (zfs_error(zhp->zfs_hdl, EZFS_THREADCREATEFAILED, errbuf)); } /* do the ioctl() */ (void) strlcpy(zc.zc_value, di.fromsnap, strlen(di.fromsnap) + 1); (void) strlcpy(zc.zc_name, di.tosnap, strlen(di.tosnap) + 1); zc.zc_cookie = pipefd[1]; iocerr = ioctl(zhp->zfs_hdl->libzfs_fd, ZFS_IOC_DIFF, &zc); if (iocerr != 0) { (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN, "Unable to obtain diffs")); if (errno == EPERM) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "\n The sys_mount privilege or diff delegated " "permission is needed\n to execute the " "diff ioctl")); } else if (errno == EXDEV) { zfs_error_aux(zhp->zfs_hdl, dgettext(TEXT_DOMAIN, "\n Not an earlier snapshot from the same fs")); } else if (errno != EPIPE || di.zerr == 0) { zfs_error_aux(zhp->zfs_hdl, strerror(errno)); } (void) close(pipefd[1]); (void) pthread_cancel(tid); (void) pthread_join(tid, NULL); teardown_differ_info(&di); if (di.zerr != 0 && di.zerr != EPIPE) { zfs_error_aux(zhp->zfs_hdl, strerror(di.zerr)); return (zfs_error(zhp->zfs_hdl, EZFS_DIFF, di.errbuf)); } else { return (zfs_error(zhp->zfs_hdl, EZFS_DIFFDATA, errbuf)); } } (void) close(pipefd[1]); (void) pthread_join(tid, NULL); if (di.zerr != 0) { zfs_error_aux(zhp->zfs_hdl, strerror(di.zerr)); return (zfs_error(zhp->zfs_hdl, EZFS_DIFF, di.errbuf)); } teardown_differ_info(&di); return (0); } zfs-0.8.3/lib/libzfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776017523 xustar000000000000000030 mtime=1579730430.730181785 30 atime=1579730451.424846227 30 ctime=1579730472.906535954 zfs-0.8.3/lib/libzfs/Makefile.in0000664016037001603700000010611513612142776017533 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/libzfs.pc.in $(srcdir)/libzfs_core.pc.in \ $(top_srcdir)/config/Rules.am subdir = lib/libzfs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = libzfs.pc libzfs_core.pc CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libzfs_pcdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libzfs_la_DEPENDENCIES = $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libshare/libshare.la \ $(top_builddir)/lib/libuutil/libuutil.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la \ $(top_builddir)/lib/libzutil/libzutil.la $(am__DEPENDENCIES_1) am__objects_1 = libzfs_changelist.lo libzfs_config.lo libzfs_crypto.lo \ libzfs_dataset.lo libzfs_diff.lo libzfs_import.lo \ libzfs_iter.lo libzfs_mount.lo libzfs_pool.lo \ libzfs_sendrecv.lo libzfs_status.lo libzfs_util.lo am__dirstamp = $(am__leading_dot)dirstamp am__objects_2 = algs/sha2/sha2.lo zfeature_common.lo zfs_comutil.lo \ zfs_deleg.lo zfs_fletcher.lo zfs_fletcher_aarch64_neon.lo \ zfs_fletcher_avx512.lo zfs_fletcher_intel.lo \ zfs_fletcher_sse.lo zfs_fletcher_superscalar.lo \ zfs_fletcher_superscalar4.lo zfs_namecheck.lo zfs_prop.lo \ zfs_uio.lo zpool_prop.lo zprop_common.lo nodist_libzfs_la_OBJECTS = $(am__objects_1) $(am__objects_2) libzfs_la_OBJECTS = $(nodist_libzfs_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent libzfs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libzfs_la_LDFLAGS) $(LDFLAGS) -o $@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libzfs_la_SOURCES) DIST_SOURCES = DATA = $(libzfs_pc_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = \ $(top_srcdir)/module/icp \ $(top_srcdir)/module/zcommon \ $(top_srcdir)/lib/libzfs ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/module/icp/include \ -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent # Suppress unused but set variable warnings often due to ASSERTs AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) $(NO_UNUSED_BUT_SET_VARIABLE) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) libzfs_pcdir = $(datarootdir)/pkgconfig libzfs_pc_DATA = libzfs.pc libzfs_core.pc lib_LTLIBRARIES = libzfs.la USER_C = \ libzfs_changelist.c \ libzfs_config.c \ libzfs_crypto.c \ libzfs_dataset.c \ libzfs_diff.c \ libzfs_import.c \ libzfs_iter.c \ libzfs_mount.c \ libzfs_pool.c \ libzfs_sendrecv.c \ libzfs_status.c \ libzfs_util.c KERNEL_C = \ algs/sha2/sha2.c \ zfeature_common.c \ zfs_comutil.c \ zfs_deleg.c \ zfs_fletcher.c \ zfs_fletcher_aarch64_neon.c \ zfs_fletcher_avx512.c \ zfs_fletcher_intel.c \ zfs_fletcher_sse.c \ zfs_fletcher_superscalar.c \ zfs_fletcher_superscalar4.c \ zfs_namecheck.c \ zfs_prop.c \ zfs_uio.c \ zpool_prop.c \ zprop_common.c nodist_libzfs_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) libzfs_la_LIBADD = $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libshare/libshare.la \ $(top_builddir)/lib/libuutil/libuutil.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la \ $(top_builddir)/lib/libzutil/libzutil.la -lm $(LIBSSL) libzfs_la_LDFLAGS = -version-info 2:0:0 # Licensing data EXTRA_DIST = $(libzfs_pc_DATA) $(USER_C) THIRDPARTYLICENSE.openssl \ THIRDPARTYLICENSE.openssl.descrip all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libzfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libzfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): libzfs.pc: $(top_builddir)/config.status $(srcdir)/libzfs.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ libzfs_core.pc: $(top_builddir)/config.status $(srcdir)/libzfs_core.pc.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done algs/sha2/$(am__dirstamp): @$(MKDIR_P) algs/sha2 @: > algs/sha2/$(am__dirstamp) algs/sha2/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) algs/sha2/$(DEPDIR) @: > algs/sha2/$(DEPDIR)/$(am__dirstamp) algs/sha2/sha2.lo: algs/sha2/$(am__dirstamp) \ algs/sha2/$(DEPDIR)/$(am__dirstamp) libzfs.la: $(libzfs_la_OBJECTS) $(libzfs_la_DEPENDENCIES) $(AM_V_CCLD)$(libzfs_la_LINK) -rpath $(libdir) $(libzfs_la_OBJECTS) $(libzfs_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f algs/sha2/sha2.$(OBJEXT) -rm -f algs/sha2/sha2.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_changelist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_config.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_crypto.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_dataset.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_diff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_import.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_iter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_mount.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_pool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_sendrecv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_status.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfeature_common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_comutil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_deleg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_aarch64_neon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_avx512.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_intel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_sse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_superscalar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_superscalar4.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_namecheck.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_prop.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_uio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zpool_prop.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zprop_common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/sha2/$(DEPDIR)/sha2.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf algs/sha2/.libs algs/sha2/_libs install-libzfs_pcDATA: $(libzfs_pc_DATA) @$(NORMAL_INSTALL) test -z "$(libzfs_pcdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfs_pcdir)" @list='$(libzfs_pc_DATA)'; test -n "$(libzfs_pcdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(libzfs_pcdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(libzfs_pcdir)" || exit $$?; \ done uninstall-libzfs_pcDATA: @$(NORMAL_UNINSTALL) @list='$(libzfs_pc_DATA)'; test -n "$(libzfs_pcdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfs_pcdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfs_pcdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libzfs_pcdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f algs/sha2/$(DEPDIR)/$(am__dirstamp) -rm -f algs/sha2/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) algs/sha2/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-libzfs_pcDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) algs/sha2/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES uninstall-libzfs_pcDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-libzfs_pcDATA install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ uninstall-libLTLIBRARIES uninstall-libzfs_pcDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs_core.pc0000644000000000000000000000013213612143023020265 xustar000000000000000030 mtime=1579730451.399845425 30 atime=1579730461.131157873 30 ctime=1579730472.915536244 zfs-0.8.3/lib/libzfs/libzfs_core.pc0000664016037001603700000000042013612143023020265 0ustar00hutter2hutter200000000000000prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: libzfs_core Description: LibZFS core library Version: 0.8.3 URL: http://zfsonlinux.org Cflags: -I${includedir}/libzfs -I${includedir}/libspl Libs: -L${libdir} -lzfs_core zfs-0.8.3/lib/libzfs/PaxHeaders.151519/libzfs.pc.in0000644000000000000000000000007413607166132017701 xustar000000000000000030 atime=1579730451.366844365 30 ctime=1579730472.908536018 zfs-0.8.3/lib/libzfs/libzfs.pc.in0000644016037001603700000000042713607166132017701 0ustar00hutter2hutter200000000000000prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: libzfs Description: LibZFS library Version: @VERSION@ URL: http://zfsonlinux.org Requires: libzfs_core Cflags: -I${includedir}/libzfs -I${includedir}/libspl Libs: -L${libdir} -lzfs -lnvpair zfs-0.8.3/lib/PaxHeaders.151519/libefi0000644000000000000000000000013013612143047015330 xustar000000000000000029 mtime=1579730471.38748718 30 atime=1579730489.073055035 29 ctime=1579730471.38748718 zfs-0.8.3/lib/libefi/0000775016037001603700000000000013612143047015413 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libefi/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147017462 xustar000000000000000030 atime=1579730429.556144091 30 ctime=1579730471.383487052 zfs-0.8.3/lib/libefi/Makefile.am0000644016037001603700000000042113607166147017454 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include noinst_LTLIBRARIES = libefi.la USER_C = \ rdwr_efi.c nodist_libefi_la_SOURCES = $(USER_C) libefi_la_LIBADD = $(LIBUUID) EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libefi/PaxHeaders.151519/rdwr_efi.c0000644000000000000000000000007313612141522017354 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730471.38748718 zfs-0.8.3/lib/libefi/rdwr_efi.c0000644016037001603700000012535413612141522017364 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2012 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2018 by Delphix. All rights reserved. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static struct uuid_to_ptag { struct uuid uuid; } conversion_array[] = { { EFI_UNUSED }, { EFI_BOOT }, { EFI_ROOT }, { EFI_SWAP }, { EFI_USR }, { EFI_BACKUP }, { EFI_UNUSED }, /* STAND is never used */ { EFI_VAR }, { EFI_HOME }, { EFI_ALTSCTR }, { EFI_UNUSED }, /* CACHE (cachefs) is never used */ { EFI_RESERVED }, { EFI_SYSTEM }, { EFI_LEGACY_MBR }, { EFI_SYMC_PUB }, { EFI_SYMC_CDS }, { EFI_MSFT_RESV }, { EFI_DELL_BASIC }, { EFI_DELL_RAID }, { EFI_DELL_SWAP }, { EFI_DELL_LVM }, { EFI_DELL_RESV }, { EFI_AAPL_HFS }, { EFI_AAPL_UFS }, { EFI_FREEBSD_BOOT }, { EFI_FREEBSD_SWAP }, { EFI_FREEBSD_UFS }, { EFI_FREEBSD_VINUM }, { EFI_FREEBSD_ZFS }, { EFI_BIOS_BOOT }, { EFI_INTC_RS }, { EFI_SNE_BOOT }, { EFI_LENOVO_BOOT }, { EFI_MSFT_LDMM }, { EFI_MSFT_LDMD }, { EFI_MSFT_RE }, { EFI_IBM_GPFS }, { EFI_MSFT_STORAGESPACES }, { EFI_HPQ_DATA }, { EFI_HPQ_SVC }, { EFI_RHT_DATA }, { EFI_RHT_HOME }, { EFI_RHT_SRV }, { EFI_RHT_DMCRYPT }, { EFI_RHT_LUKS }, { EFI_FREEBSD_DISKLABEL }, { EFI_AAPL_RAID }, { EFI_AAPL_RAIDOFFLINE }, { EFI_AAPL_BOOT }, { EFI_AAPL_LABEL }, { EFI_AAPL_TVRECOVERY }, { EFI_AAPL_CORESTORAGE }, { EFI_NETBSD_SWAP }, { EFI_NETBSD_FFS }, { EFI_NETBSD_LFS }, { EFI_NETBSD_RAID }, { EFI_NETBSD_CAT }, { EFI_NETBSD_CRYPT }, { EFI_GOOG_KERN }, { EFI_GOOG_ROOT }, { EFI_GOOG_RESV }, { EFI_HAIKU_BFS }, { EFI_MIDNIGHTBSD_BOOT }, { EFI_MIDNIGHTBSD_DATA }, { EFI_MIDNIGHTBSD_SWAP }, { EFI_MIDNIGHTBSD_UFS }, { EFI_MIDNIGHTBSD_VINUM }, { EFI_MIDNIGHTBSD_ZFS }, { EFI_CEPH_JOURNAL }, { EFI_CEPH_DMCRYPTJOURNAL }, { EFI_CEPH_OSD }, { EFI_CEPH_DMCRYPTOSD }, { EFI_CEPH_CREATE }, { EFI_CEPH_DMCRYPTCREATE }, { EFI_OPENBSD_DISKLABEL }, { EFI_BBRY_QNX }, { EFI_BELL_PLAN9 }, { EFI_VMW_KCORE }, { EFI_VMW_VMFS }, { EFI_VMW_RESV }, { EFI_RHT_ROOTX86 }, { EFI_RHT_ROOTAMD64 }, { EFI_RHT_ROOTARM }, { EFI_RHT_ROOTARM64 }, { EFI_ACRONIS_SECUREZONE }, { EFI_ONIE_BOOT }, { EFI_ONIE_CONFIG }, { EFI_IBM_PPRPBOOT }, { EFI_FREEDESKTOP_BOOT } }; /* * Default vtoc information for non-SVr4 partitions */ struct dk_map2 default_vtoc_map[NDKMAP] = { { V_ROOT, 0 }, /* a - 0 */ { V_SWAP, V_UNMNT }, /* b - 1 */ { V_BACKUP, V_UNMNT }, /* c - 2 */ { V_UNASSIGNED, 0 }, /* d - 3 */ { V_UNASSIGNED, 0 }, /* e - 4 */ { V_UNASSIGNED, 0 }, /* f - 5 */ { V_USR, 0 }, /* g - 6 */ { V_UNASSIGNED, 0 }, /* h - 7 */ #if defined(_SUNOS_VTOC_16) #if defined(i386) || defined(__amd64) || defined(__arm) || \ defined(__powerpc) || defined(__sparc) || defined(__s390__) || \ defined(__mips__) { V_BOOT, V_UNMNT }, /* i - 8 */ { V_ALTSCTR, 0 }, /* j - 9 */ #else #error No VTOC format defined. #endif /* defined(i386) */ { V_UNASSIGNED, 0 }, /* k - 10 */ { V_UNASSIGNED, 0 }, /* l - 11 */ { V_UNASSIGNED, 0 }, /* m - 12 */ { V_UNASSIGNED, 0 }, /* n - 13 */ { V_UNASSIGNED, 0 }, /* o - 14 */ { V_UNASSIGNED, 0 }, /* p - 15 */ #endif /* defined(_SUNOS_VTOC_16) */ }; int efi_debug = 0; static int efi_read(int, struct dk_gpt *); /* * Return a 32-bit CRC of the contents of the buffer. Pre-and-post * one's conditioning will be handled by crc32() internally. */ static uint32_t efi_crc32(const unsigned char *buf, unsigned int size) { uint32_t crc = crc32(0, Z_NULL, 0); crc = crc32(crc, buf, size); return (crc); } static int read_disk_info(int fd, diskaddr_t *capacity, uint_t *lbsize) { int sector_size; unsigned long long capacity_size; if (ioctl(fd, BLKSSZGET, §or_size) < 0) return (-1); if (ioctl(fd, BLKGETSIZE64, &capacity_size) < 0) return (-1); *lbsize = (uint_t)sector_size; *capacity = (diskaddr_t)(capacity_size / sector_size); return (0); } static int efi_get_info(int fd, struct dk_cinfo *dki_info) { char *path; char *dev_path; int rval = 0; memset(dki_info, 0, sizeof (*dki_info)); path = calloc(1, PATH_MAX); if (path == NULL) goto error; /* * The simplest way to get the partition number under linux is * to parse it out of the /dev/ block device name. * The kernel creates this using the partition number when it * populates /dev/ so it may be trusted. The tricky bit here is * that the naming convention is based on the block device type. * So we need to take this in to account when parsing out the * partition information. Another issue is that the libefi API * API only provides the open fd and not the file path. To handle * this realpath(3) is used to resolve the block device name from * /proc/self/fd/. Aside from the partition number we collect * some additional device info. */ (void) sprintf(path, "/proc/self/fd/%d", fd); dev_path = realpath(path, NULL); free(path); if (dev_path == NULL) goto error; if ((strncmp(dev_path, "/dev/sd", 7) == 0)) { strcpy(dki_info->dki_cname, "sd"); dki_info->dki_ctype = DKC_SCSI_CCS; rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu", dki_info->dki_dname, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/hd", 7) == 0)) { strcpy(dki_info->dki_cname, "hd"); dki_info->dki_ctype = DKC_DIRECT; rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu", dki_info->dki_dname, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/md", 7) == 0)) { strcpy(dki_info->dki_cname, "pseudo"); dki_info->dki_ctype = DKC_MD; strcpy(dki_info->dki_dname, "md"); rval = sscanf(dev_path, "/dev/md%[0-9]p%hu", dki_info->dki_dname + 2, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/vd", 7) == 0)) { strcpy(dki_info->dki_cname, "vd"); dki_info->dki_ctype = DKC_MD; rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu", dki_info->dki_dname, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/xvd", 8) == 0)) { strcpy(dki_info->dki_cname, "xvd"); dki_info->dki_ctype = DKC_MD; rval = sscanf(dev_path, "/dev/%[a-zA-Z]%hu", dki_info->dki_dname, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/zd", 7) == 0)) { strcpy(dki_info->dki_cname, "zd"); dki_info->dki_ctype = DKC_MD; strcpy(dki_info->dki_dname, "zd"); rval = sscanf(dev_path, "/dev/zd%[0-9]p%hu", dki_info->dki_dname + 2, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/dm-", 8) == 0)) { strcpy(dki_info->dki_cname, "pseudo"); dki_info->dki_ctype = DKC_VBD; strcpy(dki_info->dki_dname, "dm-"); rval = sscanf(dev_path, "/dev/dm-%[0-9]p%hu", dki_info->dki_dname + 3, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/ram", 8) == 0)) { strcpy(dki_info->dki_cname, "pseudo"); dki_info->dki_ctype = DKC_PCMCIA_MEM; strcpy(dki_info->dki_dname, "ram"); rval = sscanf(dev_path, "/dev/ram%[0-9]p%hu", dki_info->dki_dname + 3, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/loop", 9) == 0)) { strcpy(dki_info->dki_cname, "pseudo"); dki_info->dki_ctype = DKC_VBD; strcpy(dki_info->dki_dname, "loop"); rval = sscanf(dev_path, "/dev/loop%[0-9]p%hu", dki_info->dki_dname + 4, &dki_info->dki_partition); } else if ((strncmp(dev_path, "/dev/nvme", 9) == 0)) { strcpy(dki_info->dki_cname, "nvme"); dki_info->dki_ctype = DKC_SCSI_CCS; strcpy(dki_info->dki_dname, "nvme"); (void) sscanf(dev_path, "/dev/nvme%[0-9]", dki_info->dki_dname + 4); size_t controller_length = strlen( dki_info->dki_dname); strcpy(dki_info->dki_dname + controller_length, "n"); rval = sscanf(dev_path, "/dev/nvme%*[0-9]n%[0-9]p%hu", dki_info->dki_dname + controller_length + 1, &dki_info->dki_partition); } else { strcpy(dki_info->dki_dname, "unknown"); strcpy(dki_info->dki_cname, "unknown"); dki_info->dki_ctype = DKC_UNKNOWN; } switch (rval) { case 0: errno = EINVAL; goto error; case 1: dki_info->dki_partition = 0; } free(dev_path); return (0); error: if (efi_debug) (void) fprintf(stderr, "DKIOCINFO errno 0x%x\n", errno); switch (errno) { case EIO: return (VT_EIO); case EINVAL: return (VT_EINVAL); default: return (VT_ERROR); } } /* * the number of blocks the EFI label takes up (round up to nearest * block) */ #define NBLOCKS(p, l) (1 + ((((p) * (int)sizeof (efi_gpe_t)) + \ ((l) - 1)) / (l))) /* number of partitions -- limited by what we can malloc */ #define MAX_PARTS ((4294967295UL - sizeof (struct dk_gpt)) / \ sizeof (struct dk_part)) int efi_alloc_and_init(int fd, uint32_t nparts, struct dk_gpt **vtoc) { diskaddr_t capacity = 0; uint_t lbsize = 0; uint_t nblocks; size_t length; struct dk_gpt *vptr; struct uuid uuid; struct dk_cinfo dki_info; if (read_disk_info(fd, &capacity, &lbsize) != 0) return (-1); if (efi_get_info(fd, &dki_info) != 0) return (-1); if (dki_info.dki_partition != 0) return (-1); if ((dki_info.dki_ctype == DKC_PCMCIA_MEM) || (dki_info.dki_ctype == DKC_VBD) || (dki_info.dki_ctype == DKC_UNKNOWN)) return (-1); nblocks = NBLOCKS(nparts, lbsize); if ((nblocks * lbsize) < EFI_MIN_ARRAY_SIZE + lbsize) { /* 16K plus one block for the GPT */ nblocks = EFI_MIN_ARRAY_SIZE / lbsize + 1; } if (nparts > MAX_PARTS) { if (efi_debug) { (void) fprintf(stderr, "the maximum number of partitions supported is %lu\n", MAX_PARTS); } return (-1); } length = sizeof (struct dk_gpt) + sizeof (struct dk_part) * (nparts - 1); vptr = calloc(1, length); if (vptr == NULL) return (-1); *vtoc = vptr; vptr->efi_version = EFI_VERSION_CURRENT; vptr->efi_lbasize = lbsize; vptr->efi_nparts = nparts; /* * add one block here for the PMBR; on disks with a 512 byte * block size and 128 or fewer partitions, efi_first_u_lba * should work out to "34" */ vptr->efi_first_u_lba = nblocks + 1; vptr->efi_last_lba = capacity - 1; vptr->efi_altern_lba = capacity -1; vptr->efi_last_u_lba = vptr->efi_last_lba - nblocks; (void) uuid_generate((uchar_t *)&uuid); UUID_LE_CONVERT(vptr->efi_disk_uguid, uuid); return (0); } /* * Read EFI - return partition number upon success. */ int efi_alloc_and_read(int fd, struct dk_gpt **vtoc) { int rval; uint32_t nparts; int length; struct dk_gpt *vptr; /* figure out the number of entries that would fit into 16K */ nparts = EFI_MIN_ARRAY_SIZE / sizeof (efi_gpe_t); length = (int) sizeof (struct dk_gpt) + (int) sizeof (struct dk_part) * (nparts - 1); vptr = calloc(1, length); if (vptr == NULL) return (VT_ERROR); vptr->efi_nparts = nparts; rval = efi_read(fd, vptr); if ((rval == VT_EINVAL) && vptr->efi_nparts > nparts) { void *tmp; length = (int) sizeof (struct dk_gpt) + (int) sizeof (struct dk_part) * (vptr->efi_nparts - 1); nparts = vptr->efi_nparts; if ((tmp = realloc(vptr, length)) == NULL) { free(vptr); *vtoc = NULL; return (VT_ERROR); } else { vptr = tmp; rval = efi_read(fd, vptr); } } if (rval < 0) { if (efi_debug) { (void) fprintf(stderr, "read of EFI table failed, rval=%d\n", rval); } free(vptr); *vtoc = NULL; } else { *vtoc = vptr; } return (rval); } static int efi_ioctl(int fd, int cmd, dk_efi_t *dk_ioc) { void *data = dk_ioc->dki_data; int error; diskaddr_t capacity; uint_t lbsize; /* * When the IO is not being performed in kernel as an ioctl we need * to know the sector size so we can seek to the proper byte offset. */ if (read_disk_info(fd, &capacity, &lbsize) == -1) { if (efi_debug) fprintf(stderr, "unable to read disk info: %d", errno); errno = EIO; return (-1); } switch (cmd) { case DKIOCGETEFI: if (lbsize == 0) { if (efi_debug) (void) fprintf(stderr, "DKIOCGETEFI assuming " "LBA %d bytes\n", DEV_BSIZE); lbsize = DEV_BSIZE; } error = lseek(fd, dk_ioc->dki_lba * lbsize, SEEK_SET); if (error == -1) { if (efi_debug) (void) fprintf(stderr, "DKIOCGETEFI lseek " "error: %d\n", errno); return (error); } error = read(fd, data, dk_ioc->dki_length); if (error == -1) { if (efi_debug) (void) fprintf(stderr, "DKIOCGETEFI read " "error: %d\n", errno); return (error); } if (error != dk_ioc->dki_length) { if (efi_debug) (void) fprintf(stderr, "DKIOCGETEFI short " "read of %d bytes\n", error); errno = EIO; return (-1); } error = 0; break; case DKIOCSETEFI: if (lbsize == 0) { if (efi_debug) (void) fprintf(stderr, "DKIOCSETEFI unknown " "LBA size\n"); errno = EIO; return (-1); } error = lseek(fd, dk_ioc->dki_lba * lbsize, SEEK_SET); if (error == -1) { if (efi_debug) (void) fprintf(stderr, "DKIOCSETEFI lseek " "error: %d\n", errno); return (error); } error = write(fd, data, dk_ioc->dki_length); if (error == -1) { if (efi_debug) (void) fprintf(stderr, "DKIOCSETEFI write " "error: %d\n", errno); return (error); } if (error != dk_ioc->dki_length) { if (efi_debug) (void) fprintf(stderr, "DKIOCSETEFI short " "write of %d bytes\n", error); errno = EIO; return (-1); } /* Sync the new EFI table to disk */ error = fsync(fd); if (error == -1) return (error); /* Ensure any local disk cache is also flushed */ if (ioctl(fd, BLKFLSBUF, 0) == -1) return (error); error = 0; break; default: if (efi_debug) (void) fprintf(stderr, "unsupported ioctl()\n"); errno = EIO; return (-1); } return (error); } int efi_rescan(int fd) { int retry = 10; int error; /* Notify the kernel a devices partition table has been updated */ while ((error = ioctl(fd, BLKRRPART)) != 0) { if ((--retry == 0) || (errno != EBUSY)) { (void) fprintf(stderr, "the kernel failed to rescan " "the partition table: %d\n", errno); return (-1); } usleep(50000); } return (0); } static int check_label(int fd, dk_efi_t *dk_ioc) { efi_gpt_t *efi; uint_t crc; if (efi_ioctl(fd, DKIOCGETEFI, dk_ioc) == -1) { switch (errno) { case EIO: return (VT_EIO); default: return (VT_ERROR); } } efi = dk_ioc->dki_data; if (efi->efi_gpt_Signature != LE_64(EFI_SIGNATURE)) { if (efi_debug) (void) fprintf(stderr, "Bad EFI signature: 0x%llx != 0x%llx\n", (long long)efi->efi_gpt_Signature, (long long)LE_64(EFI_SIGNATURE)); return (VT_EINVAL); } /* * check CRC of the header; the size of the header should * never be larger than one block */ crc = efi->efi_gpt_HeaderCRC32; efi->efi_gpt_HeaderCRC32 = 0; len_t headerSize = (len_t)LE_32(efi->efi_gpt_HeaderSize); if (headerSize < EFI_MIN_LABEL_SIZE || headerSize > EFI_LABEL_SIZE) { if (efi_debug) (void) fprintf(stderr, "Invalid EFI HeaderSize %llu. Assuming %d.\n", headerSize, EFI_MIN_LABEL_SIZE); } if ((headerSize > dk_ioc->dki_length) || crc != LE_32(efi_crc32((unsigned char *)efi, headerSize))) { if (efi_debug) (void) fprintf(stderr, "Bad EFI CRC: 0x%x != 0x%x\n", crc, LE_32(efi_crc32((unsigned char *)efi, headerSize))); return (VT_EINVAL); } return (0); } static int efi_read(int fd, struct dk_gpt *vtoc) { int i, j; int label_len; int rval = 0; int md_flag = 0; int vdc_flag = 0; diskaddr_t capacity = 0; uint_t lbsize = 0; struct dk_minfo disk_info; dk_efi_t dk_ioc; efi_gpt_t *efi; efi_gpe_t *efi_parts; struct dk_cinfo dki_info; uint32_t user_length; boolean_t legacy_label = B_FALSE; /* * get the partition number for this file descriptor. */ if ((rval = efi_get_info(fd, &dki_info)) != 0) return (rval); if ((strncmp(dki_info.dki_cname, "pseudo", 7) == 0) && (strncmp(dki_info.dki_dname, "md", 3) == 0)) { md_flag++; } else if ((strncmp(dki_info.dki_cname, "vdc", 4) == 0) && (strncmp(dki_info.dki_dname, "vdc", 4) == 0)) { /* * The controller and drive name "vdc" (virtual disk client) * indicates a LDoms virtual disk. */ vdc_flag++; } /* get the LBA size */ if (read_disk_info(fd, &capacity, &lbsize) == -1) { if (efi_debug) { (void) fprintf(stderr, "unable to read disk info: %d", errno); } return (VT_EINVAL); } disk_info.dki_lbsize = lbsize; disk_info.dki_capacity = capacity; if (disk_info.dki_lbsize == 0) { if (efi_debug) { (void) fprintf(stderr, "efi_read: assuming LBA 512 bytes\n"); } disk_info.dki_lbsize = DEV_BSIZE; } /* * Read the EFI GPT to figure out how many partitions we need * to deal with. */ dk_ioc.dki_lba = 1; if (NBLOCKS(vtoc->efi_nparts, disk_info.dki_lbsize) < 34) { label_len = EFI_MIN_ARRAY_SIZE + disk_info.dki_lbsize; } else { label_len = vtoc->efi_nparts * (int) sizeof (efi_gpe_t) + disk_info.dki_lbsize; if (label_len % disk_info.dki_lbsize) { /* pad to physical sector size */ label_len += disk_info.dki_lbsize; label_len &= ~(disk_info.dki_lbsize - 1); } } if (posix_memalign((void **)&dk_ioc.dki_data, disk_info.dki_lbsize, label_len)) return (VT_ERROR); memset(dk_ioc.dki_data, 0, label_len); dk_ioc.dki_length = disk_info.dki_lbsize; user_length = vtoc->efi_nparts; efi = dk_ioc.dki_data; if (md_flag) { dk_ioc.dki_length = label_len; if (efi_ioctl(fd, DKIOCGETEFI, &dk_ioc) == -1) { switch (errno) { case EIO: return (VT_EIO); default: return (VT_ERROR); } } } else if ((rval = check_label(fd, &dk_ioc)) == VT_EINVAL) { /* * No valid label here; try the alternate. Note that here * we just read GPT header and save it into dk_ioc.data, * Later, we will read GUID partition entry array if we * can get valid GPT header. */ /* * This is a workaround for legacy systems. In the past, the * last sector of SCSI disk was invisible on x86 platform. At * that time, backup label was saved on the next to the last * sector. It is possible for users to move a disk from previous * solaris system to present system. Here, we attempt to search * legacy backup EFI label first. */ dk_ioc.dki_lba = disk_info.dki_capacity - 2; dk_ioc.dki_length = disk_info.dki_lbsize; rval = check_label(fd, &dk_ioc); if (rval == VT_EINVAL) { /* * we didn't find legacy backup EFI label, try to * search backup EFI label in the last block. */ dk_ioc.dki_lba = disk_info.dki_capacity - 1; dk_ioc.dki_length = disk_info.dki_lbsize; rval = check_label(fd, &dk_ioc); if (rval == 0) { legacy_label = B_TRUE; if (efi_debug) (void) fprintf(stderr, "efi_read: primary label corrupt; " "using EFI backup label located on" " the last block\n"); } } else { if ((efi_debug) && (rval == 0)) (void) fprintf(stderr, "efi_read: primary label" " corrupt; using legacy EFI backup label " " located on the next to last block\n"); } if (rval == 0) { dk_ioc.dki_lba = LE_64(efi->efi_gpt_PartitionEntryLBA); vtoc->efi_flags |= EFI_GPT_PRIMARY_CORRUPT; vtoc->efi_nparts = LE_32(efi->efi_gpt_NumberOfPartitionEntries); /* * Partition tables are between backup GPT header * table and ParitionEntryLBA (the starting LBA of * the GUID partition entries array). Now that we * already got valid GPT header and saved it in * dk_ioc.dki_data, we try to get GUID partition * entry array here. */ /* LINTED */ dk_ioc.dki_data = (efi_gpt_t *)((char *)dk_ioc.dki_data + disk_info.dki_lbsize); if (legacy_label) dk_ioc.dki_length = disk_info.dki_capacity - 1 - dk_ioc.dki_lba; else dk_ioc.dki_length = disk_info.dki_capacity - 2 - dk_ioc.dki_lba; dk_ioc.dki_length *= disk_info.dki_lbsize; if (dk_ioc.dki_length > ((len_t)label_len - sizeof (*dk_ioc.dki_data))) { rval = VT_EINVAL; } else { /* * read GUID partition entry array */ rval = efi_ioctl(fd, DKIOCGETEFI, &dk_ioc); } } } else if (rval == 0) { dk_ioc.dki_lba = LE_64(efi->efi_gpt_PartitionEntryLBA); /* LINTED */ dk_ioc.dki_data = (efi_gpt_t *)((char *)dk_ioc.dki_data + disk_info.dki_lbsize); dk_ioc.dki_length = label_len - disk_info.dki_lbsize; rval = efi_ioctl(fd, DKIOCGETEFI, &dk_ioc); } else if (vdc_flag && rval == VT_ERROR && errno == EINVAL) { /* * When the device is a LDoms virtual disk, the DKIOCGETEFI * ioctl can fail with EINVAL if the virtual disk backend * is a ZFS volume serviced by a domain running an old version * of Solaris. This is because the DKIOCGETEFI ioctl was * initially incorrectly implemented for a ZFS volume and it * expected the GPT and GPE to be retrieved with a single ioctl. * So we try to read the GPT and the GPE using that old style * ioctl. */ dk_ioc.dki_lba = 1; dk_ioc.dki_length = label_len; rval = check_label(fd, &dk_ioc); } if (rval < 0) { free(efi); return (rval); } /* LINTED -- always longlong aligned */ efi_parts = (efi_gpe_t *)(((char *)efi) + disk_info.dki_lbsize); /* * Assemble this into a "dk_gpt" struct for easier * digestibility by applications. */ vtoc->efi_version = LE_32(efi->efi_gpt_Revision); vtoc->efi_nparts = LE_32(efi->efi_gpt_NumberOfPartitionEntries); vtoc->efi_part_size = LE_32(efi->efi_gpt_SizeOfPartitionEntry); vtoc->efi_lbasize = disk_info.dki_lbsize; vtoc->efi_last_lba = disk_info.dki_capacity - 1; vtoc->efi_first_u_lba = LE_64(efi->efi_gpt_FirstUsableLBA); vtoc->efi_last_u_lba = LE_64(efi->efi_gpt_LastUsableLBA); vtoc->efi_altern_lba = LE_64(efi->efi_gpt_AlternateLBA); UUID_LE_CONVERT(vtoc->efi_disk_uguid, efi->efi_gpt_DiskGUID); /* * If the array the user passed in is too small, set the length * to what it needs to be and return */ if (user_length < vtoc->efi_nparts) { return (VT_EINVAL); } for (i = 0; i < vtoc->efi_nparts; i++) { UUID_LE_CONVERT(vtoc->efi_parts[i].p_guid, efi_parts[i].efi_gpe_PartitionTypeGUID); for (j = 0; j < sizeof (conversion_array) / sizeof (struct uuid_to_ptag); j++) { if (bcmp(&vtoc->efi_parts[i].p_guid, &conversion_array[j].uuid, sizeof (struct uuid)) == 0) { vtoc->efi_parts[i].p_tag = j; break; } } if (vtoc->efi_parts[i].p_tag == V_UNASSIGNED) continue; vtoc->efi_parts[i].p_flag = LE_16(efi_parts[i].efi_gpe_Attributes.PartitionAttrs); vtoc->efi_parts[i].p_start = LE_64(efi_parts[i].efi_gpe_StartingLBA); vtoc->efi_parts[i].p_size = LE_64(efi_parts[i].efi_gpe_EndingLBA) - vtoc->efi_parts[i].p_start + 1; for (j = 0; j < EFI_PART_NAME_LEN; j++) { vtoc->efi_parts[i].p_name[j] = (uchar_t)LE_16( efi_parts[i].efi_gpe_PartitionName[j]); } UUID_LE_CONVERT(vtoc->efi_parts[i].p_uguid, efi_parts[i].efi_gpe_UniquePartitionGUID); } free(efi); return (dki_info.dki_partition); } /* writes a "protective" MBR */ static int write_pmbr(int fd, struct dk_gpt *vtoc) { dk_efi_t dk_ioc; struct mboot mb; uchar_t *cp; diskaddr_t size_in_lba; uchar_t *buf; int len; len = (vtoc->efi_lbasize == 0) ? sizeof (mb) : vtoc->efi_lbasize; if (posix_memalign((void **)&buf, len, len)) return (VT_ERROR); /* * Preserve any boot code and disk signature if the first block is * already an MBR. */ memset(buf, 0, len); dk_ioc.dki_lba = 0; dk_ioc.dki_length = len; /* LINTED -- always longlong aligned */ dk_ioc.dki_data = (efi_gpt_t *)buf; if (efi_ioctl(fd, DKIOCGETEFI, &dk_ioc) == -1) { (void) memcpy(&mb, buf, sizeof (mb)); bzero(&mb, sizeof (mb)); mb.signature = LE_16(MBB_MAGIC); } else { (void) memcpy(&mb, buf, sizeof (mb)); if (mb.signature != LE_16(MBB_MAGIC)) { bzero(&mb, sizeof (mb)); mb.signature = LE_16(MBB_MAGIC); } } bzero(&mb.parts, sizeof (mb.parts)); cp = (uchar_t *)&mb.parts[0]; /* bootable or not */ *cp++ = 0; /* beginning CHS; 0xffffff if not representable */ *cp++ = 0xff; *cp++ = 0xff; *cp++ = 0xff; /* OS type */ *cp++ = EFI_PMBR; /* ending CHS; 0xffffff if not representable */ *cp++ = 0xff; *cp++ = 0xff; *cp++ = 0xff; /* starting LBA: 1 (little endian format) by EFI definition */ *cp++ = 0x01; *cp++ = 0x00; *cp++ = 0x00; *cp++ = 0x00; /* ending LBA: last block on the disk (little endian format) */ size_in_lba = vtoc->efi_last_lba; if (size_in_lba < 0xffffffff) { *cp++ = (size_in_lba & 0x000000ff); *cp++ = (size_in_lba & 0x0000ff00) >> 8; *cp++ = (size_in_lba & 0x00ff0000) >> 16; *cp++ = (size_in_lba & 0xff000000) >> 24; } else { *cp++ = 0xff; *cp++ = 0xff; *cp++ = 0xff; *cp++ = 0xff; } (void) memcpy(buf, &mb, sizeof (mb)); /* LINTED -- always longlong aligned */ dk_ioc.dki_data = (efi_gpt_t *)buf; dk_ioc.dki_lba = 0; dk_ioc.dki_length = len; if (efi_ioctl(fd, DKIOCSETEFI, &dk_ioc) == -1) { free(buf); switch (errno) { case EIO: return (VT_EIO); case EINVAL: return (VT_EINVAL); default: return (VT_ERROR); } } free(buf); return (0); } /* make sure the user specified something reasonable */ static int check_input(struct dk_gpt *vtoc) { int resv_part = -1; int i, j; diskaddr_t istart, jstart, isize, jsize, endsect; /* * Sanity-check the input (make sure no partitions overlap) */ for (i = 0; i < vtoc->efi_nparts; i++) { /* It can't be unassigned and have an actual size */ if ((vtoc->efi_parts[i].p_tag == V_UNASSIGNED) && (vtoc->efi_parts[i].p_size != 0)) { if (efi_debug) { (void) fprintf(stderr, "partition %d is " "\"unassigned\" but has a size of %llu", i, vtoc->efi_parts[i].p_size); } return (VT_EINVAL); } if (vtoc->efi_parts[i].p_tag == V_UNASSIGNED) { if (uuid_is_null((uchar_t *)&vtoc->efi_parts[i].p_guid)) continue; /* we have encountered an unknown uuid */ vtoc->efi_parts[i].p_tag = 0xff; } if (vtoc->efi_parts[i].p_tag == V_RESERVED) { if (resv_part != -1) { if (efi_debug) { (void) fprintf(stderr, "found " "duplicate reserved partition " "at %d\n", i); } return (VT_EINVAL); } resv_part = i; } if ((vtoc->efi_parts[i].p_start < vtoc->efi_first_u_lba) || (vtoc->efi_parts[i].p_start > vtoc->efi_last_u_lba)) { if (efi_debug) { (void) fprintf(stderr, "Partition %d starts at %llu. ", i, vtoc->efi_parts[i].p_start); (void) fprintf(stderr, "It must be between %llu and %llu.\n", vtoc->efi_first_u_lba, vtoc->efi_last_u_lba); } return (VT_EINVAL); } if ((vtoc->efi_parts[i].p_start + vtoc->efi_parts[i].p_size < vtoc->efi_first_u_lba) || (vtoc->efi_parts[i].p_start + vtoc->efi_parts[i].p_size > vtoc->efi_last_u_lba + 1)) { if (efi_debug) { (void) fprintf(stderr, "Partition %d ends at %llu. ", i, vtoc->efi_parts[i].p_start + vtoc->efi_parts[i].p_size); (void) fprintf(stderr, "It must be between %llu and %llu.\n", vtoc->efi_first_u_lba, vtoc->efi_last_u_lba); } return (VT_EINVAL); } for (j = 0; j < vtoc->efi_nparts; j++) { isize = vtoc->efi_parts[i].p_size; jsize = vtoc->efi_parts[j].p_size; istart = vtoc->efi_parts[i].p_start; jstart = vtoc->efi_parts[j].p_start; if ((i != j) && (isize != 0) && (jsize != 0)) { endsect = jstart + jsize -1; if ((jstart <= istart) && (istart <= endsect)) { if (efi_debug) { (void) fprintf(stderr, "Partition %d overlaps " "partition %d.", i, j); } return (VT_EINVAL); } } } } /* just a warning for now */ if ((resv_part == -1) && efi_debug) { (void) fprintf(stderr, "no reserved partition found\n"); } return (0); } /* * add all the unallocated space to the current label */ int efi_use_whole_disk(int fd) { struct dk_gpt *efi_label = NULL; int rval; int i; uint_t resv_index = 0, data_index = 0; diskaddr_t resv_start = 0, data_start = 0; diskaddr_t data_size, limit, difference; boolean_t sync_needed = B_FALSE; uint_t nblocks; rval = efi_alloc_and_read(fd, &efi_label); if (rval < 0) { if (efi_label != NULL) efi_free(efi_label); return (rval); } /* * Find the last physically non-zero partition. * This should be the reserved partition. */ for (i = 0; i < efi_label->efi_nparts; i ++) { if (resv_start < efi_label->efi_parts[i].p_start) { resv_start = efi_label->efi_parts[i].p_start; resv_index = i; } } /* * Find the last physically non-zero partition before that. * This is the data partition. */ for (i = 0; i < resv_index; i ++) { if (data_start < efi_label->efi_parts[i].p_start) { data_start = efi_label->efi_parts[i].p_start; data_index = i; } } data_size = efi_label->efi_parts[data_index].p_size; /* * See the "efi_alloc_and_init" function for more information * about where this "nblocks" value comes from. */ nblocks = efi_label->efi_first_u_lba - 1; /* * Determine if the EFI label is out of sync. We check that: * * 1. the data partition ends at the limit we set, and * 2. the reserved partition starts at the limit we set. * * If either of these conditions is not met, then we need to * resync the EFI label. * * The limit is the last usable LBA, determined by the last LBA * and the first usable LBA fields on the EFI label of the disk * (see the lines directly above). Additionally, we factor in * EFI_MIN_RESV_SIZE (per its use in "zpool_label_disk") and * P2ALIGN it to ensure the partition boundaries are aligned * (for performance reasons). The alignment should match the * alignment used by the "zpool_label_disk" function. */ limit = P2ALIGN(efi_label->efi_last_lba - nblocks - EFI_MIN_RESV_SIZE, PARTITION_END_ALIGNMENT); if (data_start + data_size != limit || resv_start != limit) sync_needed = B_TRUE; if (efi_debug && sync_needed) (void) fprintf(stderr, "efi_use_whole_disk: sync needed\n"); /* * If alter_lba is 1, we are using the backup label. * Since we can locate the backup label by disk capacity, * there must be no unallocated space. */ if ((efi_label->efi_altern_lba == 1) || (efi_label->efi_altern_lba >= efi_label->efi_last_lba && !sync_needed)) { if (efi_debug) { (void) fprintf(stderr, "efi_use_whole_disk: requested space not found\n"); } efi_free(efi_label); return (VT_ENOSPC); } /* * Verify that we've found the reserved partition by checking * that it looks the way it did when we created it in zpool_label_disk. * If we've found the incorrect partition, then we know that this * device was reformatted and no longer is solely used by ZFS. */ if ((efi_label->efi_parts[resv_index].p_size != EFI_MIN_RESV_SIZE) || (efi_label->efi_parts[resv_index].p_tag != V_RESERVED) || (resv_index != 8)) { if (efi_debug) { (void) fprintf(stderr, "efi_use_whole_disk: wholedisk not available\n"); } efi_free(efi_label); return (VT_ENOSPC); } if (data_start + data_size != resv_start) { if (efi_debug) { (void) fprintf(stderr, "efi_use_whole_disk: " "data_start (%lli) + " "data_size (%lli) != " "resv_start (%lli)\n", data_start, data_size, resv_start); } return (VT_EINVAL); } if (limit < resv_start) { if (efi_debug) { (void) fprintf(stderr, "efi_use_whole_disk: " "limit (%lli) < resv_start (%lli)\n", limit, resv_start); } return (VT_EINVAL); } difference = limit - resv_start; if (efi_debug) (void) fprintf(stderr, "efi_use_whole_disk: difference is %lli\n", difference); /* * Move the reserved partition. There is currently no data in * here except fabricated devids (which get generated via * efi_write()). So there is no need to copy data. */ efi_label->efi_parts[data_index].p_size += difference; efi_label->efi_parts[resv_index].p_start += difference; efi_label->efi_last_u_lba = efi_label->efi_last_lba - nblocks; rval = efi_write(fd, efi_label); if (rval < 0) { if (efi_debug) { (void) fprintf(stderr, "efi_use_whole_disk:fail to write label, rval=%d\n", rval); } efi_free(efi_label); return (rval); } efi_free(efi_label); return (0); } /* * write EFI label and backup label */ int efi_write(int fd, struct dk_gpt *vtoc) { dk_efi_t dk_ioc; efi_gpt_t *efi; efi_gpe_t *efi_parts; int i, j; struct dk_cinfo dki_info; int rval; int md_flag = 0; int nblocks; diskaddr_t lba_backup_gpt_hdr; if ((rval = efi_get_info(fd, &dki_info)) != 0) return (rval); /* check if we are dealing with a metadevice */ if ((strncmp(dki_info.dki_cname, "pseudo", 7) == 0) && (strncmp(dki_info.dki_dname, "md", 3) == 0)) { md_flag = 1; } if (check_input(vtoc)) { /* * not valid; if it's a metadevice just pass it down * because SVM will do its own checking */ if (md_flag == 0) { return (VT_EINVAL); } } dk_ioc.dki_lba = 1; if (NBLOCKS(vtoc->efi_nparts, vtoc->efi_lbasize) < 34) { dk_ioc.dki_length = EFI_MIN_ARRAY_SIZE + vtoc->efi_lbasize; } else { dk_ioc.dki_length = NBLOCKS(vtoc->efi_nparts, vtoc->efi_lbasize) * vtoc->efi_lbasize; } /* * the number of blocks occupied by GUID partition entry array */ nblocks = dk_ioc.dki_length / vtoc->efi_lbasize - 1; /* * Backup GPT header is located on the block after GUID * partition entry array. Here, we calculate the address * for backup GPT header. */ lba_backup_gpt_hdr = vtoc->efi_last_u_lba + 1 + nblocks; if (posix_memalign((void **)&dk_ioc.dki_data, vtoc->efi_lbasize, dk_ioc.dki_length)) return (VT_ERROR); memset(dk_ioc.dki_data, 0, dk_ioc.dki_length); efi = dk_ioc.dki_data; /* stuff user's input into EFI struct */ efi->efi_gpt_Signature = LE_64(EFI_SIGNATURE); efi->efi_gpt_Revision = LE_32(vtoc->efi_version); /* 0x02000100 */ efi->efi_gpt_HeaderSize = LE_32(sizeof (struct efi_gpt) - LEN_EFI_PAD); efi->efi_gpt_Reserved1 = 0; efi->efi_gpt_MyLBA = LE_64(1ULL); efi->efi_gpt_AlternateLBA = LE_64(lba_backup_gpt_hdr); efi->efi_gpt_FirstUsableLBA = LE_64(vtoc->efi_first_u_lba); efi->efi_gpt_LastUsableLBA = LE_64(vtoc->efi_last_u_lba); efi->efi_gpt_PartitionEntryLBA = LE_64(2ULL); efi->efi_gpt_NumberOfPartitionEntries = LE_32(vtoc->efi_nparts); efi->efi_gpt_SizeOfPartitionEntry = LE_32(sizeof (struct efi_gpe)); UUID_LE_CONVERT(efi->efi_gpt_DiskGUID, vtoc->efi_disk_uguid); /* LINTED -- always longlong aligned */ efi_parts = (efi_gpe_t *)((char *)dk_ioc.dki_data + vtoc->efi_lbasize); for (i = 0; i < vtoc->efi_nparts; i++) { for (j = 0; j < sizeof (conversion_array) / sizeof (struct uuid_to_ptag); j++) { if (vtoc->efi_parts[i].p_tag == j) { UUID_LE_CONVERT( efi_parts[i].efi_gpe_PartitionTypeGUID, conversion_array[j].uuid); break; } } if (j == sizeof (conversion_array) / sizeof (struct uuid_to_ptag)) { /* * If we didn't have a matching uuid match, bail here. * Don't write a label with unknown uuid. */ if (efi_debug) { (void) fprintf(stderr, "Unknown uuid for p_tag %d\n", vtoc->efi_parts[i].p_tag); } return (VT_EINVAL); } /* Zero's should be written for empty partitions */ if (vtoc->efi_parts[i].p_tag == V_UNASSIGNED) continue; efi_parts[i].efi_gpe_StartingLBA = LE_64(vtoc->efi_parts[i].p_start); efi_parts[i].efi_gpe_EndingLBA = LE_64(vtoc->efi_parts[i].p_start + vtoc->efi_parts[i].p_size - 1); efi_parts[i].efi_gpe_Attributes.PartitionAttrs = LE_16(vtoc->efi_parts[i].p_flag); for (j = 0; j < EFI_PART_NAME_LEN; j++) { efi_parts[i].efi_gpe_PartitionName[j] = LE_16((ushort_t)vtoc->efi_parts[i].p_name[j]); } if ((vtoc->efi_parts[i].p_tag != V_UNASSIGNED) && uuid_is_null((uchar_t *)&vtoc->efi_parts[i].p_uguid)) { (void) uuid_generate((uchar_t *) &vtoc->efi_parts[i].p_uguid); } bcopy(&vtoc->efi_parts[i].p_uguid, &efi_parts[i].efi_gpe_UniquePartitionGUID, sizeof (uuid_t)); } efi->efi_gpt_PartitionEntryArrayCRC32 = LE_32(efi_crc32((unsigned char *)efi_parts, vtoc->efi_nparts * (int)sizeof (struct efi_gpe))); efi->efi_gpt_HeaderCRC32 = LE_32(efi_crc32((unsigned char *)efi, LE_32(efi->efi_gpt_HeaderSize))); if (efi_ioctl(fd, DKIOCSETEFI, &dk_ioc) == -1) { free(dk_ioc.dki_data); switch (errno) { case EIO: return (VT_EIO); case EINVAL: return (VT_EINVAL); default: return (VT_ERROR); } } /* if it's a metadevice we're done */ if (md_flag) { free(dk_ioc.dki_data); return (0); } /* write backup partition array */ dk_ioc.dki_lba = vtoc->efi_last_u_lba + 1; dk_ioc.dki_length -= vtoc->efi_lbasize; /* LINTED */ dk_ioc.dki_data = (efi_gpt_t *)((char *)dk_ioc.dki_data + vtoc->efi_lbasize); if (efi_ioctl(fd, DKIOCSETEFI, &dk_ioc) == -1) { /* * we wrote the primary label okay, so don't fail */ if (efi_debug) { (void) fprintf(stderr, "write of backup partitions to block %llu " "failed, errno %d\n", vtoc->efi_last_u_lba + 1, errno); } } /* * now swap MyLBA and AlternateLBA fields and write backup * partition table header */ dk_ioc.dki_lba = lba_backup_gpt_hdr; dk_ioc.dki_length = vtoc->efi_lbasize; /* LINTED */ dk_ioc.dki_data = (efi_gpt_t *)((char *)dk_ioc.dki_data - vtoc->efi_lbasize); efi->efi_gpt_AlternateLBA = LE_64(1ULL); efi->efi_gpt_MyLBA = LE_64(lba_backup_gpt_hdr); efi->efi_gpt_PartitionEntryLBA = LE_64(vtoc->efi_last_u_lba + 1); efi->efi_gpt_HeaderCRC32 = 0; efi->efi_gpt_HeaderCRC32 = LE_32(efi_crc32((unsigned char *)dk_ioc.dki_data, LE_32(efi->efi_gpt_HeaderSize))); if (efi_ioctl(fd, DKIOCSETEFI, &dk_ioc) == -1) { if (efi_debug) { (void) fprintf(stderr, "write of backup header to block %llu failed, " "errno %d\n", lba_backup_gpt_hdr, errno); } } /* write the PMBR */ (void) write_pmbr(fd, vtoc); free(dk_ioc.dki_data); return (0); } void efi_free(struct dk_gpt *ptr) { free(ptr); } /* * Input: File descriptor * Output: 1 if disk has an EFI label, or > 2TB with no VTOC or legacy MBR. * Otherwise 0. */ int efi_type(int fd) { #if 0 struct vtoc vtoc; struct extvtoc extvtoc; if (ioctl(fd, DKIOCGEXTVTOC, &extvtoc) == -1) { if (errno == ENOTSUP) return (1); else if (errno == ENOTTY) { if (ioctl(fd, DKIOCGVTOC, &vtoc) == -1) if (errno == ENOTSUP) return (1); } } return (0); #else return (ENOSYS); #endif } void efi_err_check(struct dk_gpt *vtoc) { int resv_part = -1; int i, j; diskaddr_t istart, jstart, isize, jsize, endsect; int overlap = 0; /* * make sure no partitions overlap */ for (i = 0; i < vtoc->efi_nparts; i++) { /* It can't be unassigned and have an actual size */ if ((vtoc->efi_parts[i].p_tag == V_UNASSIGNED) && (vtoc->efi_parts[i].p_size != 0)) { (void) fprintf(stderr, "partition %d is \"unassigned\" but has a size " "of %llu\n", i, vtoc->efi_parts[i].p_size); } if (vtoc->efi_parts[i].p_tag == V_UNASSIGNED) { continue; } if (vtoc->efi_parts[i].p_tag == V_RESERVED) { if (resv_part != -1) { (void) fprintf(stderr, "found duplicate reserved partition at " "%d\n", i); } resv_part = i; if (vtoc->efi_parts[i].p_size != EFI_MIN_RESV_SIZE) (void) fprintf(stderr, "Warning: reserved partition size must " "be %d sectors\n", EFI_MIN_RESV_SIZE); } if ((vtoc->efi_parts[i].p_start < vtoc->efi_first_u_lba) || (vtoc->efi_parts[i].p_start > vtoc->efi_last_u_lba)) { (void) fprintf(stderr, "Partition %d starts at %llu\n", i, vtoc->efi_parts[i].p_start); (void) fprintf(stderr, "It must be between %llu and %llu.\n", vtoc->efi_first_u_lba, vtoc->efi_last_u_lba); } if ((vtoc->efi_parts[i].p_start + vtoc->efi_parts[i].p_size < vtoc->efi_first_u_lba) || (vtoc->efi_parts[i].p_start + vtoc->efi_parts[i].p_size > vtoc->efi_last_u_lba + 1)) { (void) fprintf(stderr, "Partition %d ends at %llu\n", i, vtoc->efi_parts[i].p_start + vtoc->efi_parts[i].p_size); (void) fprintf(stderr, "It must be between %llu and %llu.\n", vtoc->efi_first_u_lba, vtoc->efi_last_u_lba); } for (j = 0; j < vtoc->efi_nparts; j++) { isize = vtoc->efi_parts[i].p_size; jsize = vtoc->efi_parts[j].p_size; istart = vtoc->efi_parts[i].p_start; jstart = vtoc->efi_parts[j].p_start; if ((i != j) && (isize != 0) && (jsize != 0)) { endsect = jstart + jsize -1; if ((jstart <= istart) && (istart <= endsect)) { if (!overlap) { (void) fprintf(stderr, "label error: EFI Labels do not " "support overlapping partitions\n"); } (void) fprintf(stderr, "Partition %d overlaps partition " "%d.\n", i, j); overlap = 1; } } } } /* make sure there is a reserved partition */ if (resv_part == -1) { (void) fprintf(stderr, "no reserved partition found\n"); } } /* * We need to get information necessary to construct a *new* efi * label type */ int efi_auto_sense(int fd, struct dk_gpt **vtoc) { int i; /* * Now build the default partition table */ if (efi_alloc_and_init(fd, EFI_NUMPAR, vtoc) != 0) { if (efi_debug) { (void) fprintf(stderr, "efi_alloc_and_init failed.\n"); } return (-1); } for (i = 0; i < MIN((*vtoc)->efi_nparts, V_NUMPAR); i++) { (*vtoc)->efi_parts[i].p_tag = default_vtoc_map[i].p_tag; (*vtoc)->efi_parts[i].p_flag = default_vtoc_map[i].p_flag; (*vtoc)->efi_parts[i].p_start = 0; (*vtoc)->efi_parts[i].p_size = 0; } /* * Make constants first * and variable partitions later */ /* root partition - s0 128 MB */ (*vtoc)->efi_parts[0].p_start = 34; (*vtoc)->efi_parts[0].p_size = 262144; /* partition - s1 128 MB */ (*vtoc)->efi_parts[1].p_start = 262178; (*vtoc)->efi_parts[1].p_size = 262144; /* partition -s2 is NOT the Backup disk */ (*vtoc)->efi_parts[2].p_tag = V_UNASSIGNED; /* partition -s6 /usr partition - HOG */ (*vtoc)->efi_parts[6].p_start = 524322; (*vtoc)->efi_parts[6].p_size = (*vtoc)->efi_last_u_lba - 524322 - (1024 * 16); /* efi reserved partition - s9 16K */ (*vtoc)->efi_parts[8].p_start = (*vtoc)->efi_last_u_lba - (1024 * 16); (*vtoc)->efi_parts[8].p_size = (1024 * 16); (*vtoc)->efi_parts[8].p_tag = V_RESERVED; return (0); } zfs-0.8.3/lib/libefi/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775017463 xustar000000000000000030 mtime=1579730429.607145729 30 atime=1579730451.116836337 30 ctime=1579730471.385487116 zfs-0.8.3/lib/libefi/Makefile.in0000664016037001603700000006565713612142775017512 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libefi ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = libefi_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_1 = rdwr_efi.lo nodist_libefi_la_OBJECTS = $(am__objects_1) libefi_la_OBJECTS = $(nodist_libefi_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libefi_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) noinst_LTLIBRARIES = libefi.la USER_C = \ rdwr_efi.c nodist_libefi_la_SOURCES = $(USER_C) libefi_la_LIBADD = $(LIBUUID) EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libefi/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libefi/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libefi.la: $(libefi_la_OBJECTS) $(libefi_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libefi_la_OBJECTS) $(libefi_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rdwr_efi.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/libzpool0000644000000000000000000000013213612143050015724 xustar000000000000000030 mtime=1579730472.783532005 30 atime=1579730489.073055035 30 ctime=1579730472.783532005 zfs-0.8.3/lib/libzpool/0000775016037001603700000000000013612143050016005 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libzpool/PaxHeaders.151519/taskq.c0000644000000000000000000000007413607166132017307 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.781531941 zfs-0.8.3/lib/libzpool/taskq.c0000644016037001603700000002067313607166132017314 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright 2012 Garrett D'Amore . All rights reserved. * Copyright (c) 2014 by Delphix. All rights reserved. */ #include int taskq_now; taskq_t *system_taskq; taskq_t *system_delay_taskq; #define TASKQ_ACTIVE 0x00010000 static taskq_ent_t * task_alloc(taskq_t *tq, int tqflags) { taskq_ent_t *t; int rv; again: if ((t = tq->tq_freelist) != NULL && tq->tq_nalloc >= tq->tq_minalloc) { ASSERT(!(t->tqent_flags & TQENT_FLAG_PREALLOC)); tq->tq_freelist = t->tqent_next; } else { if (tq->tq_nalloc >= tq->tq_maxalloc) { if (!(tqflags & KM_SLEEP)) return (NULL); /* * We don't want to exceed tq_maxalloc, but we can't * wait for other tasks to complete (and thus free up * task structures) without risking deadlock with * the caller. So, we just delay for one second * to throttle the allocation rate. If we have tasks * complete before one second timeout expires then * taskq_ent_free will signal us and we will * immediately retry the allocation. */ tq->tq_maxalloc_wait++; rv = cv_timedwait(&tq->tq_maxalloc_cv, &tq->tq_lock, ddi_get_lbolt() + hz); tq->tq_maxalloc_wait--; if (rv > 0) goto again; /* signaled */ } mutex_exit(&tq->tq_lock); t = kmem_alloc(sizeof (taskq_ent_t), tqflags); mutex_enter(&tq->tq_lock); if (t != NULL) { /* Make sure we start without any flags */ t->tqent_flags = 0; tq->tq_nalloc++; } } return (t); } static void task_free(taskq_t *tq, taskq_ent_t *t) { if (tq->tq_nalloc <= tq->tq_minalloc) { t->tqent_next = tq->tq_freelist; tq->tq_freelist = t; } else { tq->tq_nalloc--; mutex_exit(&tq->tq_lock); kmem_free(t, sizeof (taskq_ent_t)); mutex_enter(&tq->tq_lock); } if (tq->tq_maxalloc_wait) cv_signal(&tq->tq_maxalloc_cv); } taskqid_t taskq_dispatch(taskq_t *tq, task_func_t func, void *arg, uint_t tqflags) { taskq_ent_t *t; if (taskq_now) { func(arg); return (1); } mutex_enter(&tq->tq_lock); ASSERT(tq->tq_flags & TASKQ_ACTIVE); if ((t = task_alloc(tq, tqflags)) == NULL) { mutex_exit(&tq->tq_lock); return (0); } if (tqflags & TQ_FRONT) { t->tqent_next = tq->tq_task.tqent_next; t->tqent_prev = &tq->tq_task; } else { t->tqent_next = &tq->tq_task; t->tqent_prev = tq->tq_task.tqent_prev; } t->tqent_next->tqent_prev = t; t->tqent_prev->tqent_next = t; t->tqent_func = func; t->tqent_arg = arg; t->tqent_flags = 0; cv_signal(&tq->tq_dispatch_cv); mutex_exit(&tq->tq_lock); return (1); } taskqid_t taskq_dispatch_delay(taskq_t *tq, task_func_t func, void *arg, uint_t tqflags, clock_t expire_time) { return (0); } int taskq_empty_ent(taskq_ent_t *t) { return (t->tqent_next == NULL); } void taskq_init_ent(taskq_ent_t *t) { t->tqent_next = NULL; t->tqent_prev = NULL; t->tqent_func = NULL; t->tqent_arg = NULL; t->tqent_flags = 0; } void taskq_dispatch_ent(taskq_t *tq, task_func_t func, void *arg, uint_t flags, taskq_ent_t *t) { ASSERT(func != NULL); /* * Mark it as a prealloc'd task. This is important * to ensure that we don't free it later. */ t->tqent_flags |= TQENT_FLAG_PREALLOC; /* * Enqueue the task to the underlying queue. */ mutex_enter(&tq->tq_lock); if (flags & TQ_FRONT) { t->tqent_next = tq->tq_task.tqent_next; t->tqent_prev = &tq->tq_task; } else { t->tqent_next = &tq->tq_task; t->tqent_prev = tq->tq_task.tqent_prev; } t->tqent_next->tqent_prev = t; t->tqent_prev->tqent_next = t; t->tqent_func = func; t->tqent_arg = arg; cv_signal(&tq->tq_dispatch_cv); mutex_exit(&tq->tq_lock); } void taskq_wait(taskq_t *tq) { mutex_enter(&tq->tq_lock); while (tq->tq_task.tqent_next != &tq->tq_task || tq->tq_active != 0) cv_wait(&tq->tq_wait_cv, &tq->tq_lock); mutex_exit(&tq->tq_lock); } void taskq_wait_id(taskq_t *tq, taskqid_t id) { taskq_wait(tq); } void taskq_wait_outstanding(taskq_t *tq, taskqid_t id) { taskq_wait(tq); } static void taskq_thread(void *arg) { taskq_t *tq = arg; taskq_ent_t *t; boolean_t prealloc; mutex_enter(&tq->tq_lock); while (tq->tq_flags & TASKQ_ACTIVE) { if ((t = tq->tq_task.tqent_next) == &tq->tq_task) { if (--tq->tq_active == 0) cv_broadcast(&tq->tq_wait_cv); cv_wait(&tq->tq_dispatch_cv, &tq->tq_lock); tq->tq_active++; continue; } t->tqent_prev->tqent_next = t->tqent_next; t->tqent_next->tqent_prev = t->tqent_prev; t->tqent_next = NULL; t->tqent_prev = NULL; prealloc = t->tqent_flags & TQENT_FLAG_PREALLOC; mutex_exit(&tq->tq_lock); rw_enter(&tq->tq_threadlock, RW_READER); t->tqent_func(t->tqent_arg); rw_exit(&tq->tq_threadlock); mutex_enter(&tq->tq_lock); if (!prealloc) task_free(tq, t); } tq->tq_nthreads--; cv_broadcast(&tq->tq_wait_cv); mutex_exit(&tq->tq_lock); thread_exit(); } /*ARGSUSED*/ taskq_t * taskq_create(const char *name, int nthreads, pri_t pri, int minalloc, int maxalloc, uint_t flags) { taskq_t *tq = kmem_zalloc(sizeof (taskq_t), KM_SLEEP); int t; if (flags & TASKQ_THREADS_CPU_PCT) { int pct; ASSERT3S(nthreads, >=, 0); ASSERT3S(nthreads, <=, 100); pct = MIN(nthreads, 100); pct = MAX(pct, 0); nthreads = (sysconf(_SC_NPROCESSORS_ONLN) * pct) / 100; nthreads = MAX(nthreads, 1); /* need at least 1 thread */ } else { ASSERT3S(nthreads, >=, 1); } rw_init(&tq->tq_threadlock, NULL, RW_DEFAULT, NULL); mutex_init(&tq->tq_lock, NULL, MUTEX_DEFAULT, NULL); cv_init(&tq->tq_dispatch_cv, NULL, CV_DEFAULT, NULL); cv_init(&tq->tq_wait_cv, NULL, CV_DEFAULT, NULL); cv_init(&tq->tq_maxalloc_cv, NULL, CV_DEFAULT, NULL); (void) strncpy(tq->tq_name, name, TASKQ_NAMELEN); tq->tq_flags = flags | TASKQ_ACTIVE; tq->tq_active = nthreads; tq->tq_nthreads = nthreads; tq->tq_minalloc = minalloc; tq->tq_maxalloc = maxalloc; tq->tq_task.tqent_next = &tq->tq_task; tq->tq_task.tqent_prev = &tq->tq_task; tq->tq_threadlist = kmem_alloc(nthreads * sizeof (kthread_t *), KM_SLEEP); if (flags & TASKQ_PREPOPULATE) { mutex_enter(&tq->tq_lock); while (minalloc-- > 0) task_free(tq, task_alloc(tq, KM_SLEEP)); mutex_exit(&tq->tq_lock); } for (t = 0; t < nthreads; t++) VERIFY((tq->tq_threadlist[t] = thread_create(NULL, 0, taskq_thread, tq, 0, &p0, TS_RUN, pri)) != NULL); return (tq); } void taskq_destroy(taskq_t *tq) { int nthreads = tq->tq_nthreads; taskq_wait(tq); mutex_enter(&tq->tq_lock); tq->tq_flags &= ~TASKQ_ACTIVE; cv_broadcast(&tq->tq_dispatch_cv); while (tq->tq_nthreads != 0) cv_wait(&tq->tq_wait_cv, &tq->tq_lock); tq->tq_minalloc = 0; while (tq->tq_nalloc != 0) { ASSERT(tq->tq_freelist != NULL); task_free(tq, task_alloc(tq, KM_SLEEP)); } mutex_exit(&tq->tq_lock); kmem_free(tq->tq_threadlist, nthreads * sizeof (kthread_t *)); rw_destroy(&tq->tq_threadlock); mutex_destroy(&tq->tq_lock); cv_destroy(&tq->tq_dispatch_cv); cv_destroy(&tq->tq_wait_cv); cv_destroy(&tq->tq_maxalloc_cv); kmem_free(tq, sizeof (taskq_t)); } int taskq_member(taskq_t *tq, kthread_t *t) { int i; if (taskq_now) return (1); for (i = 0; i < tq->tq_nthreads; i++) if (tq->tq_threadlist[i] == t) return (1); return (0); } int taskq_cancel_id(taskq_t *tq, taskqid_t id) { return (ENOENT); } void system_taskq_init(void) { system_taskq = taskq_create("system_taskq", 64, maxclsyspri, 4, 512, TASKQ_DYNAMIC | TASKQ_PREPOPULATE); system_delay_taskq = taskq_create("delay_taskq", 4, maxclsyspri, 4, 512, TASKQ_DYNAMIC | TASKQ_PREPOPULATE); } void system_taskq_fini(void) { taskq_destroy(system_taskq); system_taskq = NULL; /* defensive */ taskq_destroy(system_delay_taskq); system_delay_taskq = NULL; } zfs-0.8.3/lib/libzpool/PaxHeaders.151519/kernel.c0000644000000000000000000000007413612141520017432 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.779531877 zfs-0.8.3/lib/libzpool/kernel.c0000644016037001603700000006420713612141520017440 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2016 Actifio, Inc. All rights reserved. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* * Emulation of kernel services in userland. */ uint64_t physmem; vnode_t *rootdir = (vnode_t *)0xabcd1234; char hw_serial[HW_HOSTID_LEN]; struct utsname hw_utsname; vmem_t *zio_arena = NULL; /* If set, all blocks read will be copied to the specified directory. */ char *vn_dumpdir = NULL; /* this only exists to have its address taken */ struct proc p0; /* * ========================================================================= * threads * ========================================================================= * * TS_STACK_MIN is dictated by the minimum allowed pthread stack size. While * TS_STACK_MAX is somewhat arbitrary, it was selected to be large enough for * the expected stack depth while small enough to avoid exhausting address * space with high thread counts. */ #define TS_STACK_MIN MAX(PTHREAD_STACK_MIN, 32768) #define TS_STACK_MAX (256 * 1024) /*ARGSUSED*/ kthread_t * zk_thread_create(void (*func)(void *), void *arg, size_t stksize, int state) { pthread_attr_t attr; pthread_t tid; char *stkstr; int detachstate = PTHREAD_CREATE_DETACHED; VERIFY0(pthread_attr_init(&attr)); if (state & TS_JOINABLE) detachstate = PTHREAD_CREATE_JOINABLE; VERIFY0(pthread_attr_setdetachstate(&attr, detachstate)); /* * We allow the default stack size in user space to be specified by * setting the ZFS_STACK_SIZE environment variable. This allows us * the convenience of observing and debugging stack overruns in * user space. Explicitly specified stack sizes will be honored. * The usage of ZFS_STACK_SIZE is discussed further in the * ENVIRONMENT VARIABLES sections of the ztest(1) man page. */ if (stksize == 0) { stkstr = getenv("ZFS_STACK_SIZE"); if (stkstr == NULL) stksize = TS_STACK_MAX; else stksize = MAX(atoi(stkstr), TS_STACK_MIN); } VERIFY3S(stksize, >, 0); stksize = P2ROUNDUP(MAX(stksize, TS_STACK_MIN), PAGESIZE); /* * If this ever fails, it may be because the stack size is not a * multiple of system page size. */ VERIFY0(pthread_attr_setstacksize(&attr, stksize)); VERIFY0(pthread_attr_setguardsize(&attr, PAGESIZE)); VERIFY0(pthread_create(&tid, &attr, (void *(*)(void *))func, arg)); VERIFY0(pthread_attr_destroy(&attr)); return ((void *)(uintptr_t)tid); } /* * ========================================================================= * kstats * ========================================================================= */ /*ARGSUSED*/ kstat_t * kstat_create(const char *module, int instance, const char *name, const char *class, uchar_t type, ulong_t ndata, uchar_t ks_flag) { return (NULL); } /*ARGSUSED*/ void kstat_install(kstat_t *ksp) {} /*ARGSUSED*/ void kstat_delete(kstat_t *ksp) {} /*ARGSUSED*/ void kstat_waitq_enter(kstat_io_t *kiop) {} /*ARGSUSED*/ void kstat_waitq_exit(kstat_io_t *kiop) {} /*ARGSUSED*/ void kstat_runq_enter(kstat_io_t *kiop) {} /*ARGSUSED*/ void kstat_runq_exit(kstat_io_t *kiop) {} /*ARGSUSED*/ void kstat_waitq_to_runq(kstat_io_t *kiop) {} /*ARGSUSED*/ void kstat_runq_back_to_waitq(kstat_io_t *kiop) {} void kstat_set_raw_ops(kstat_t *ksp, int (*headers)(char *buf, size_t size), int (*data)(char *buf, size_t size, void *data), void *(*addr)(kstat_t *ksp, loff_t index)) {} /* * ========================================================================= * mutexes * ========================================================================= */ void mutex_init(kmutex_t *mp, char *name, int type, void *cookie) { VERIFY0(pthread_mutex_init(&mp->m_lock, NULL)); memset(&mp->m_owner, 0, sizeof (pthread_t)); } void mutex_destroy(kmutex_t *mp) { VERIFY0(pthread_mutex_destroy(&mp->m_lock)); } void mutex_enter(kmutex_t *mp) { VERIFY0(pthread_mutex_lock(&mp->m_lock)); mp->m_owner = pthread_self(); } int mutex_tryenter(kmutex_t *mp) { int error; error = pthread_mutex_trylock(&mp->m_lock); if (error == 0) { mp->m_owner = pthread_self(); return (1); } else { VERIFY3S(error, ==, EBUSY); return (0); } } void mutex_exit(kmutex_t *mp) { memset(&mp->m_owner, 0, sizeof (pthread_t)); VERIFY0(pthread_mutex_unlock(&mp->m_lock)); } /* * ========================================================================= * rwlocks * ========================================================================= */ void rw_init(krwlock_t *rwlp, char *name, int type, void *arg) { VERIFY0(pthread_rwlock_init(&rwlp->rw_lock, NULL)); rwlp->rw_readers = 0; rwlp->rw_owner = 0; } void rw_destroy(krwlock_t *rwlp) { VERIFY0(pthread_rwlock_destroy(&rwlp->rw_lock)); } void rw_enter(krwlock_t *rwlp, krw_t rw) { if (rw == RW_READER) { VERIFY0(pthread_rwlock_rdlock(&rwlp->rw_lock)); atomic_inc_uint(&rwlp->rw_readers); } else { VERIFY0(pthread_rwlock_wrlock(&rwlp->rw_lock)); rwlp->rw_owner = pthread_self(); } } void rw_exit(krwlock_t *rwlp) { if (RW_READ_HELD(rwlp)) atomic_dec_uint(&rwlp->rw_readers); else rwlp->rw_owner = 0; VERIFY0(pthread_rwlock_unlock(&rwlp->rw_lock)); } int rw_tryenter(krwlock_t *rwlp, krw_t rw) { int error; if (rw == RW_READER) error = pthread_rwlock_tryrdlock(&rwlp->rw_lock); else error = pthread_rwlock_trywrlock(&rwlp->rw_lock); if (error == 0) { if (rw == RW_READER) atomic_inc_uint(&rwlp->rw_readers); else rwlp->rw_owner = pthread_self(); return (1); } VERIFY3S(error, ==, EBUSY); return (0); } /* ARGSUSED */ uint32_t zone_get_hostid(void *zonep) { /* * We're emulating the system's hostid in userland. */ return (strtoul(hw_serial, NULL, 10)); } int rw_tryupgrade(krwlock_t *rwlp) { return (0); } /* * ========================================================================= * condition variables * ========================================================================= */ void cv_init(kcondvar_t *cv, char *name, int type, void *arg) { VERIFY0(pthread_cond_init(cv, NULL)); } void cv_destroy(kcondvar_t *cv) { VERIFY0(pthread_cond_destroy(cv)); } void cv_wait(kcondvar_t *cv, kmutex_t *mp) { memset(&mp->m_owner, 0, sizeof (pthread_t)); VERIFY0(pthread_cond_wait(cv, &mp->m_lock)); mp->m_owner = pthread_self(); } int cv_wait_sig(kcondvar_t *cv, kmutex_t *mp) { cv_wait(cv, mp); return (1); } clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime) { int error; struct timeval tv; struct timespec ts; clock_t delta; delta = abstime - ddi_get_lbolt(); if (delta <= 0) return (-1); VERIFY(gettimeofday(&tv, NULL) == 0); ts.tv_sec = tv.tv_sec + delta / hz; ts.tv_nsec = tv.tv_usec * NSEC_PER_USEC + (delta % hz) * (NANOSEC / hz); if (ts.tv_nsec >= NANOSEC) { ts.tv_sec++; ts.tv_nsec -= NANOSEC; } memset(&mp->m_owner, 0, sizeof (pthread_t)); error = pthread_cond_timedwait(cv, &mp->m_lock, &ts); mp->m_owner = pthread_self(); if (error == ETIMEDOUT) return (-1); VERIFY0(error); return (1); } /*ARGSUSED*/ clock_t cv_timedwait_hires(kcondvar_t *cv, kmutex_t *mp, hrtime_t tim, hrtime_t res, int flag) { int error; struct timeval tv; struct timespec ts; hrtime_t delta; ASSERT(flag == 0 || flag == CALLOUT_FLAG_ABSOLUTE); delta = tim; if (flag & CALLOUT_FLAG_ABSOLUTE) delta -= gethrtime(); if (delta <= 0) return (-1); VERIFY0(gettimeofday(&tv, NULL)); ts.tv_sec = tv.tv_sec + delta / NANOSEC; ts.tv_nsec = tv.tv_usec * NSEC_PER_USEC + (delta % NANOSEC); if (ts.tv_nsec >= NANOSEC) { ts.tv_sec++; ts.tv_nsec -= NANOSEC; } memset(&mp->m_owner, 0, sizeof (pthread_t)); error = pthread_cond_timedwait(cv, &mp->m_lock, &ts); mp->m_owner = pthread_self(); if (error == ETIMEDOUT) return (-1); VERIFY0(error); return (1); } void cv_signal(kcondvar_t *cv) { VERIFY0(pthread_cond_signal(cv)); } void cv_broadcast(kcondvar_t *cv) { VERIFY0(pthread_cond_broadcast(cv)); } /* * ========================================================================= * procfs list * ========================================================================= */ void seq_printf(struct seq_file *m, const char *fmt, ...) {} void procfs_list_install(const char *module, const char *name, mode_t mode, procfs_list_t *procfs_list, int (*show)(struct seq_file *f, void *p), int (*show_header)(struct seq_file *f), int (*clear)(procfs_list_t *procfs_list), size_t procfs_list_node_off) { mutex_init(&procfs_list->pl_lock, NULL, MUTEX_DEFAULT, NULL); list_create(&procfs_list->pl_list, procfs_list_node_off + sizeof (procfs_list_node_t), procfs_list_node_off + offsetof(procfs_list_node_t, pln_link)); procfs_list->pl_next_id = 1; procfs_list->pl_node_offset = procfs_list_node_off; } void procfs_list_uninstall(procfs_list_t *procfs_list) {} void procfs_list_destroy(procfs_list_t *procfs_list) { ASSERT(list_is_empty(&procfs_list->pl_list)); list_destroy(&procfs_list->pl_list); mutex_destroy(&procfs_list->pl_lock); } #define NODE_ID(procfs_list, obj) \ (((procfs_list_node_t *)(((char *)obj) + \ (procfs_list)->pl_node_offset))->pln_id) void procfs_list_add(procfs_list_t *procfs_list, void *p) { ASSERT(MUTEX_HELD(&procfs_list->pl_lock)); NODE_ID(procfs_list, p) = procfs_list->pl_next_id++; list_insert_tail(&procfs_list->pl_list, p); } /* * ========================================================================= * vnode operations * ========================================================================= */ /* * Note: for the xxxat() versions of these functions, we assume that the * starting vp is always rootdir (which is true for spa_directory.c, the only * ZFS consumer of these interfaces). We assert this is true, and then emulate * them by adding '/' in front of the path. */ /*ARGSUSED*/ int vn_open(char *path, int x1, int flags, int mode, vnode_t **vpp, int x2, int x3) { int fd = -1; int dump_fd = -1; vnode_t *vp; int old_umask = 0; char *realpath; struct stat64 st; int err; realpath = umem_alloc(MAXPATHLEN, UMEM_NOFAIL); /* * If we're accessing a real disk from userland, we need to use * the character interface to avoid caching. This is particularly * important if we're trying to look at a real in-kernel storage * pool from userland, e.g. via zdb, because otherwise we won't * see the changes occurring under the segmap cache. * On the other hand, the stupid character device returns zero * for its size. So -- gag -- we open the block device to get * its size, and remember it for subsequent VOP_GETATTR(). */ #if defined(__sun__) || defined(__sun) if (strncmp(path, "/dev/", 5) == 0) { #else if (0) { #endif char *dsk; fd = open64(path, O_RDONLY); if (fd == -1) { err = errno; free(realpath); return (err); } if (fstat64(fd, &st) == -1) { err = errno; close(fd); free(realpath); return (err); } close(fd); (void) sprintf(realpath, "%s", path); dsk = strstr(path, "/dsk/"); if (dsk != NULL) (void) sprintf(realpath + (dsk - path) + 1, "r%s", dsk + 1); } else { (void) sprintf(realpath, "%s", path); if (!(flags & FCREAT) && stat64(realpath, &st) == -1) { err = errno; free(realpath); return (err); } } if (!(flags & FCREAT) && S_ISBLK(st.st_mode)) { #ifdef __linux__ flags |= O_DIRECT; #endif } if (flags & FCREAT) old_umask = umask(0); /* * The construct 'flags - FREAD' conveniently maps combinations of * FREAD and FWRITE to the corresponding O_RDONLY, O_WRONLY, and O_RDWR. */ fd = open64(realpath, flags - FREAD, mode); if (fd == -1) { err = errno; free(realpath); return (err); } if (flags & FCREAT) (void) umask(old_umask); if (vn_dumpdir != NULL) { char *dumppath = umem_zalloc(MAXPATHLEN, UMEM_NOFAIL); (void) snprintf(dumppath, MAXPATHLEN, "%s/%s", vn_dumpdir, basename(realpath)); dump_fd = open64(dumppath, O_CREAT | O_WRONLY, 0666); umem_free(dumppath, MAXPATHLEN); if (dump_fd == -1) { err = errno; free(realpath); close(fd); return (err); } } else { dump_fd = -1; } free(realpath); if (fstat64_blk(fd, &st) == -1) { err = errno; close(fd); if (dump_fd != -1) close(dump_fd); return (err); } (void) fcntl(fd, F_SETFD, FD_CLOEXEC); *vpp = vp = umem_zalloc(sizeof (vnode_t), UMEM_NOFAIL); vp->v_fd = fd; vp->v_size = st.st_size; vp->v_path = spa_strdup(path); vp->v_dump_fd = dump_fd; return (0); } /*ARGSUSED*/ int vn_openat(char *path, int x1, int flags, int mode, vnode_t **vpp, int x2, int x3, vnode_t *startvp, int fd) { char *realpath = umem_alloc(strlen(path) + 2, UMEM_NOFAIL); int ret; ASSERT(startvp == rootdir); (void) sprintf(realpath, "/%s", path); /* fd ignored for now, need if want to simulate nbmand support */ ret = vn_open(realpath, x1, flags, mode, vpp, x2, x3); umem_free(realpath, strlen(path) + 2); return (ret); } /*ARGSUSED*/ int vn_rdwr(int uio, vnode_t *vp, void *addr, ssize_t len, offset_t offset, int x1, int x2, rlim64_t x3, void *x4, ssize_t *residp) { ssize_t rc, done = 0, split; if (uio == UIO_READ) { rc = pread64(vp->v_fd, addr, len, offset); if (vp->v_dump_fd != -1 && rc != -1) { int status; status = pwrite64(vp->v_dump_fd, addr, rc, offset); ASSERT(status != -1); } } else { /* * To simulate partial disk writes, we split writes into two * system calls so that the process can be killed in between. */ int sectors = len >> SPA_MINBLOCKSHIFT; split = (sectors > 0 ? rand() % sectors : 0) << SPA_MINBLOCKSHIFT; rc = pwrite64(vp->v_fd, addr, split, offset); if (rc != -1) { done = rc; rc = pwrite64(vp->v_fd, (char *)addr + split, len - split, offset + split); } } #ifdef __linux__ if (rc == -1 && errno == EINVAL) { /* * Under Linux, this most likely means an alignment issue * (memory or disk) due to O_DIRECT, so we abort() in order to * catch the offender. */ abort(); } #endif if (rc == -1) return (errno); done += rc; if (residp) *residp = len - done; else if (done != len) return (EIO); return (0); } void vn_close(vnode_t *vp) { close(vp->v_fd); if (vp->v_dump_fd != -1) close(vp->v_dump_fd); spa_strfree(vp->v_path); umem_free(vp, sizeof (vnode_t)); } /* * At a minimum we need to update the size since vdev_reopen() * will no longer call vn_openat(). */ int fop_getattr(vnode_t *vp, vattr_t *vap) { struct stat64 st; int err; if (fstat64_blk(vp->v_fd, &st) == -1) { err = errno; close(vp->v_fd); return (err); } vap->va_size = st.st_size; return (0); } /* * ========================================================================= * Figure out which debugging statements to print * ========================================================================= */ static char *dprintf_string; static int dprintf_print_all; int dprintf_find_string(const char *string) { char *tmp_str = dprintf_string; int len = strlen(string); /* * Find out if this is a string we want to print. * String format: file1.c,function_name1,file2.c,file3.c */ while (tmp_str != NULL) { if (strncmp(tmp_str, string, len) == 0 && (tmp_str[len] == ',' || tmp_str[len] == '\0')) return (1); tmp_str = strchr(tmp_str, ','); if (tmp_str != NULL) tmp_str++; /* Get rid of , */ } return (0); } void dprintf_setup(int *argc, char **argv) { int i, j; /* * Debugging can be specified two ways: by setting the * environment variable ZFS_DEBUG, or by including a * "debug=..." argument on the command line. The command * line setting overrides the environment variable. */ for (i = 1; i < *argc; i++) { int len = strlen("debug="); /* First look for a command line argument */ if (strncmp("debug=", argv[i], len) == 0) { dprintf_string = argv[i] + len; /* Remove from args */ for (j = i; j < *argc; j++) argv[j] = argv[j+1]; argv[j] = NULL; (*argc)--; } } if (dprintf_string == NULL) { /* Look for ZFS_DEBUG environment variable */ dprintf_string = getenv("ZFS_DEBUG"); } /* * Are we just turning on all debugging? */ if (dprintf_find_string("on")) dprintf_print_all = 1; if (dprintf_string != NULL) zfs_flags |= ZFS_DEBUG_DPRINTF; } /* * ========================================================================= * debug printfs * ========================================================================= */ void __dprintf(boolean_t dprint, const char *file, const char *func, int line, const char *fmt, ...) { const char *newfile; va_list adx; /* * Get rid of annoying "../common/" prefix to filename. */ newfile = strrchr(file, '/'); if (newfile != NULL) { newfile = newfile + 1; /* Get rid of leading / */ } else { newfile = file; } if (dprint) { /* dprintf messages are printed immediately */ if (!dprintf_print_all && !dprintf_find_string(newfile) && !dprintf_find_string(func)) return; /* Print out just the function name if requested */ flockfile(stdout); if (dprintf_find_string("pid")) (void) printf("%d ", getpid()); if (dprintf_find_string("tid")) (void) printf("%ju ", (uintmax_t)(uintptr_t)pthread_self()); if (dprintf_find_string("cpu")) (void) printf("%u ", getcpuid()); if (dprintf_find_string("time")) (void) printf("%llu ", gethrtime()); if (dprintf_find_string("long")) (void) printf("%s, line %d: ", newfile, line); (void) printf("dprintf: %s: ", func); va_start(adx, fmt); (void) vprintf(fmt, adx); va_end(adx); funlockfile(stdout); } else { /* zfs_dbgmsg is logged for dumping later */ size_t size; char *buf; int i; size = 1024; buf = umem_alloc(size, UMEM_NOFAIL); i = snprintf(buf, size, "%s:%d:%s(): ", newfile, line, func); if (i < size) { va_start(adx, fmt); (void) vsnprintf(buf + i, size - i, fmt, adx); va_end(adx); } __zfs_dbgmsg(buf); umem_free(buf, size); } } /* * ========================================================================= * cmn_err() and panic() * ========================================================================= */ static char ce_prefix[CE_IGNORE][10] = { "", "NOTICE: ", "WARNING: ", "" }; static char ce_suffix[CE_IGNORE][2] = { "", "\n", "\n", "" }; void vpanic(const char *fmt, va_list adx) { (void) fprintf(stderr, "error: "); (void) vfprintf(stderr, fmt, adx); (void) fprintf(stderr, "\n"); abort(); /* think of it as a "user-level crash dump" */ } void panic(const char *fmt, ...) { va_list adx; va_start(adx, fmt); vpanic(fmt, adx); va_end(adx); } void vcmn_err(int ce, const char *fmt, va_list adx) { if (ce == CE_PANIC) vpanic(fmt, adx); if (ce != CE_NOTE) { /* suppress noise in userland stress testing */ (void) fprintf(stderr, "%s", ce_prefix[ce]); (void) vfprintf(stderr, fmt, adx); (void) fprintf(stderr, "%s", ce_suffix[ce]); } } /*PRINTFLIKE2*/ void cmn_err(int ce, const char *fmt, ...) { va_list adx; va_start(adx, fmt); vcmn_err(ce, fmt, adx); va_end(adx); } /* * ========================================================================= * kobj interfaces * ========================================================================= */ struct _buf * kobj_open_file(char *name) { struct _buf *file; vnode_t *vp; /* set vp as the _fd field of the file */ if (vn_openat(name, UIO_SYSSPACE, FREAD, 0, &vp, 0, 0, rootdir, -1) != 0) return ((void *)-1UL); file = umem_zalloc(sizeof (struct _buf), UMEM_NOFAIL); file->_fd = (intptr_t)vp; return (file); } int kobj_read_file(struct _buf *file, char *buf, unsigned size, unsigned off) { ssize_t resid = 0; if (vn_rdwr(UIO_READ, (vnode_t *)file->_fd, buf, size, (offset_t)off, UIO_SYSSPACE, 0, 0, 0, &resid) != 0) return (-1); return (size - resid); } void kobj_close_file(struct _buf *file) { vn_close((vnode_t *)file->_fd); umem_free(file, sizeof (struct _buf)); } int kobj_get_filesize(struct _buf *file, uint64_t *size) { struct stat64 st; vnode_t *vp = (vnode_t *)file->_fd; if (fstat64(vp->v_fd, &st) == -1) { vn_close(vp); return (errno); } *size = st.st_size; return (0); } /* * ========================================================================= * misc routines * ========================================================================= */ void delay(clock_t ticks) { (void) poll(0, 0, ticks * (1000 / hz)); } /* * Find highest one bit set. * Returns bit number + 1 of highest bit that is set, otherwise returns 0. * The __builtin_clzll() function is supported by both GCC and Clang. */ int highbit64(uint64_t i) { if (i == 0) return (0); return (NBBY * sizeof (uint64_t) - __builtin_clzll(i)); } /* * Find lowest one bit set. * Returns bit number + 1 of lowest bit that is set, otherwise returns 0. * The __builtin_ffsll() function is supported by both GCC and Clang. */ int lowbit64(uint64_t i) { if (i == 0) return (0); return (__builtin_ffsll(i)); } char *random_path = "/dev/random"; char *urandom_path = "/dev/urandom"; static int random_fd = -1, urandom_fd = -1; void random_init(void) { VERIFY((random_fd = open(random_path, O_RDONLY)) != -1); VERIFY((urandom_fd = open(urandom_path, O_RDONLY)) != -1); } void random_fini(void) { close(random_fd); close(urandom_fd); random_fd = -1; urandom_fd = -1; } static int random_get_bytes_common(uint8_t *ptr, size_t len, int fd) { size_t resid = len; ssize_t bytes; ASSERT(fd != -1); while (resid != 0) { bytes = read(fd, ptr, resid); ASSERT3S(bytes, >=, 0); ptr += bytes; resid -= bytes; } return (0); } int random_get_bytes(uint8_t *ptr, size_t len) { return (random_get_bytes_common(ptr, len, random_fd)); } int random_get_pseudo_bytes(uint8_t *ptr, size_t len) { return (random_get_bytes_common(ptr, len, urandom_fd)); } int ddi_strtoul(const char *hw_serial, char **nptr, int base, unsigned long *result) { char *end; *result = strtoul(hw_serial, &end, base); if (*result == 0) return (errno); return (0); } int ddi_strtoull(const char *str, char **nptr, int base, u_longlong_t *result) { char *end; *result = strtoull(str, &end, base); if (*result == 0) return (errno); return (0); } utsname_t * utsname(void) { return (&hw_utsname); } /* * ========================================================================= * kernel emulation setup & teardown * ========================================================================= */ static int umem_out_of_memory(void) { char errmsg[] = "out of memory -- generating core dump\n"; (void) fprintf(stderr, "%s", errmsg); abort(); return (0); } void kernel_init(int mode) { extern uint_t rrw_tsd_key; umem_nofail_callback(umem_out_of_memory); physmem = sysconf(_SC_PHYS_PAGES); dprintf("physmem = %llu pages (%.2f GB)\n", physmem, (double)physmem * sysconf(_SC_PAGE_SIZE) / (1ULL << 30)); (void) snprintf(hw_serial, sizeof (hw_serial), "%ld", (mode & FWRITE) ? get_system_hostid() : 0); random_init(); VERIFY0(uname(&hw_utsname)); system_taskq_init(); icp_init(); spa_init(mode); fletcher_4_init(); tsd_create(&rrw_tsd_key, rrw_tsd_destroy); } void kernel_fini(void) { fletcher_4_fini(); spa_fini(); icp_fini(); system_taskq_fini(); random_fini(); } uid_t crgetuid(cred_t *cr) { return (0); } uid_t crgetruid(cred_t *cr) { return (0); } gid_t crgetgid(cred_t *cr) { return (0); } int crgetngroups(cred_t *cr) { return (0); } gid_t * crgetgroups(cred_t *cr) { return (NULL); } int zfs_secpolicy_snapshot_perms(const char *name, cred_t *cr) { return (0); } int zfs_secpolicy_rename_perms(const char *from, const char *to, cred_t *cr) { return (0); } int zfs_secpolicy_destroy_perms(const char *name, cred_t *cr) { return (0); } int secpolicy_zfs(const cred_t *cr) { return (0); } ksiddomain_t * ksid_lookupdomain(const char *dom) { ksiddomain_t *kd; kd = umem_zalloc(sizeof (ksiddomain_t), UMEM_NOFAIL); kd->kd_name = spa_strdup(dom); return (kd); } void ksiddomain_rele(ksiddomain_t *ksid) { spa_strfree(ksid->kd_name); umem_free(ksid, sizeof (ksiddomain_t)); } char * kmem_vasprintf(const char *fmt, va_list adx) { char *buf = NULL; va_list adx_copy; va_copy(adx_copy, adx); VERIFY(vasprintf(&buf, fmt, adx_copy) != -1); va_end(adx_copy); return (buf); } char * kmem_asprintf(const char *fmt, ...) { char *buf = NULL; va_list adx; va_start(adx, fmt); VERIFY(vasprintf(&buf, fmt, adx) != -1); va_end(adx); return (buf); } /* ARGSUSED */ int zfs_onexit_fd_hold(int fd, minor_t *minorp) { *minorp = 0; return (0); } /* ARGSUSED */ void zfs_onexit_fd_rele(int fd) { } /* ARGSUSED */ int zfs_onexit_add_cb(minor_t minor, void (*func)(void *), void *data, uint64_t *action_handle) { return (0); } /* ARGSUSED */ int zfs_onexit_del_cb(minor_t minor, uint64_t action_handle, boolean_t fire) { return (0); } /* ARGSUSED */ int zfs_onexit_cb_data(minor_t minor, uint64_t action_handle, void **data) { return (0); } fstrans_cookie_t spl_fstrans_mark(void) { return ((fstrans_cookie_t)0); } void spl_fstrans_unmark(fstrans_cookie_t cookie) { } int __spl_pf_fstrans_check(void) { return (0); } int kmem_cache_reap_active(void) { return (0); } void *zvol_tag = "zvol_tag"; void zvol_create_minors(spa_t *spa, const char *name, boolean_t async) { } void zvol_remove_minor(spa_t *spa, const char *name, boolean_t async) { } void zvol_remove_minors(spa_t *spa, const char *name, boolean_t async) { } void zvol_rename_minors(spa_t *spa, const char *oldname, const char *newname, boolean_t async) { } zfs-0.8.3/lib/libzpool/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020062 xustar000000000000000030 atime=1579730430.817184579 30 ctime=1579730472.775531747 zfs-0.8.3/lib/libzpool/Makefile.am0000644016037001603700000000640413607166147020063 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am VPATH = \ $(top_srcdir)/module/zfs \ $(top_srcdir)/module/zcommon \ $(top_srcdir)/module/lua \ $(top_srcdir)/lib/libzpool # Suppress unused but set variable warnings often due to ASSERTs AM_CFLAGS += $(NO_UNUSED_BUT_SET_VARIABLE) # Includes kernel code generate warnings for large stack frames AM_CFLAGS += $(FRAME_LARGER_THAN) AM_CFLAGS += -DLIB_ZPOOL_BUILD DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include lib_LTLIBRARIES = libzpool.la USER_C = \ kernel.c \ taskq.c \ util.c KERNEL_C = \ zfeature_common.c \ zfs_comutil.c \ zfs_deleg.c \ zfs_fletcher.c \ zfs_fletcher_aarch64_neon.c \ zfs_fletcher_avx512.c \ zfs_fletcher_intel.c \ zfs_fletcher_sse.c \ zfs_fletcher_superscalar.c \ zfs_fletcher_superscalar4.c \ zfs_namecheck.c \ zfs_prop.c \ zfs_uio.c \ zpool_prop.c \ zprop_common.c \ abd.c \ aggsum.c \ arc.c \ blkptr.c \ bplist.c \ bpobj.c \ bptree.c \ bqueue.c \ cityhash.c \ dbuf.c \ dbuf_stats.c \ ddt.c \ ddt_zap.c \ dmu.c \ dmu_diff.c \ dmu_object.c \ dmu_objset.c \ dmu_recv.c \ dmu_send.c \ dmu_traverse.c \ dmu_tx.c \ dmu_zfetch.c \ dnode.c \ dnode_sync.c \ dsl_bookmark.c \ dsl_dataset.c \ dsl_deadlist.c \ dsl_deleg.c \ dsl_dir.c \ dsl_crypt.c \ dsl_pool.c \ dsl_prop.c \ dsl_scan.c \ dsl_synctask.c \ dsl_destroy.c \ dsl_userhold.c \ edonr_zfs.c \ hkdf.c \ fm.c \ gzip.c \ lzjb.c \ lz4.c \ metaslab.c \ mmp.c \ multilist.c \ pathname.c \ range_tree.c \ refcount.c \ rrwlock.c \ sa.c \ sha256.c \ skein_zfs.c \ spa.c \ spa_boot.c \ spa_checkpoint.c \ spa_config.c \ spa_errlog.c \ spa_history.c \ spa_misc.c \ spa_stats.c \ space_map.c \ space_reftree.c \ txg.c \ trace.c \ uberblock.c \ unique.c \ vdev.c \ vdev_cache.c \ vdev_file.c \ vdev_indirect_births.c \ vdev_indirect.c \ vdev_indirect_mapping.c \ vdev_initialize.c \ vdev_label.c \ vdev_mirror.c \ vdev_missing.c \ vdev_queue.c \ vdev_raidz.c \ vdev_raidz_math_aarch64_neon.c \ vdev_raidz_math_aarch64_neonx2.c \ vdev_raidz_math_avx2.c \ vdev_raidz_math_avx512bw.c \ vdev_raidz_math_avx512f.c \ vdev_raidz_math.c \ vdev_raidz_math_scalar.c \ vdev_raidz_math_sse2.c \ vdev_raidz_math_ssse3.c \ vdev_removal.c \ vdev_root.c \ vdev_trim.c \ zap.c \ zap_leaf.c \ zap_micro.c \ zcp.c \ zcp_get.c \ zcp_global.c \ zcp_iter.c \ zcp_synctask.c \ zfeature.c \ zfs_byteswap.c \ zfs_debug.c \ zfs_fm.c \ zfs_fuid.c \ zfs_sa.c \ zfs_znode.c \ zfs_ratelimit.c \ zfs_rlock.c \ zil.c \ zio.c \ zio_checksum.c \ zio_compress.c \ zio_crypt.c \ zio_inject.c \ zle.c \ zrlock.c \ zthr.c LUA_C = \ lapi.c \ lauxlib.c \ lbaselib.c \ lcode.c \ lcompat.c \ lcorolib.c \ lctype.c \ ldebug.c \ ldo.c \ lfunc.c \ lgc.c \ llex.c \ lmem.c \ lobject.c \ lopcodes.c \ lparser.c \ lstate.c \ lstring.c \ lstrlib.c \ ltable.c \ ltablib.c \ ltm.c \ lvm.c \ lzio.c nodist_libzpool_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) \ $(LUA_C) libzpool_la_LIBADD = \ $(top_builddir)/lib/libicp/libicp.la \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libunicode/libunicode.la \ $(top_builddir)/lib/libzutil/libzutil.la libzpool_la_LIBADD += $(ZLIB) -ldl libzpool_la_LDFLAGS = -pthread -version-info 2:0:0 EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libzpool/PaxHeaders.151519/util.c0000644000000000000000000000007413607166147017147 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.784532037 zfs-0.8.3/lib/libzpool/util.c0000644016037001603700000001547713607166147017162 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2016 by Delphix. All rights reserved. * Copyright 2017 Jason King * Copyright (c) 2017, Intel Corporation. */ #include #include #include #include #include #include #include #include #include #include #include #include /* * Routines needed by more than one client of libzpool. */ static void show_vdev_stats(const char *desc, const char *ctype, nvlist_t *nv, int indent) { vdev_stat_t *vs; vdev_stat_t *v0 = { 0 }; uint64_t sec; uint64_t is_log = 0; nvlist_t **child; uint_t c, children; char used[6], avail[6]; char rops[6], wops[6], rbytes[6], wbytes[6], rerr[6], werr[6], cerr[6]; v0 = umem_zalloc(sizeof (*v0), UMEM_NOFAIL); if (indent == 0 && desc != NULL) { (void) printf(" " " capacity operations bandwidth ---- errors ----\n"); (void) printf("description " "used avail read write read write read write cksum\n"); } if (desc != NULL) { char *suffix = "", *bias = NULL; char bias_suffix[32]; (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_IS_LOG, &is_log); (void) nvlist_lookup_string(nv, ZPOOL_CONFIG_ALLOCATION_BIAS, &bias); if (nvlist_lookup_uint64_array(nv, ZPOOL_CONFIG_VDEV_STATS, (uint64_t **)&vs, &c) != 0) vs = v0; if (bias != NULL) { (void) snprintf(bias_suffix, sizeof (bias_suffix), " (%s)", bias); suffix = bias_suffix; } else if (is_log) { suffix = " (log)"; } sec = MAX(1, vs->vs_timestamp / NANOSEC); nicenum(vs->vs_alloc, used, sizeof (used)); nicenum(vs->vs_space - vs->vs_alloc, avail, sizeof (avail)); nicenum(vs->vs_ops[ZIO_TYPE_READ] / sec, rops, sizeof (rops)); nicenum(vs->vs_ops[ZIO_TYPE_WRITE] / sec, wops, sizeof (wops)); nicenum(vs->vs_bytes[ZIO_TYPE_READ] / sec, rbytes, sizeof (rbytes)); nicenum(vs->vs_bytes[ZIO_TYPE_WRITE] / sec, wbytes, sizeof (wbytes)); nicenum(vs->vs_read_errors, rerr, sizeof (rerr)); nicenum(vs->vs_write_errors, werr, sizeof (werr)); nicenum(vs->vs_checksum_errors, cerr, sizeof (cerr)); (void) printf("%*s%s%*s%*s%*s %5s %5s %5s %5s %5s %5s %5s\n", indent, "", desc, (int)(indent+strlen(desc)-25-(vs->vs_space ? 0 : 12)), suffix, vs->vs_space ? 6 : 0, vs->vs_space ? used : "", vs->vs_space ? 6 : 0, vs->vs_space ? avail : "", rops, wops, rbytes, wbytes, rerr, werr, cerr); } umem_free(v0, sizeof (*v0)); if (nvlist_lookup_nvlist_array(nv, ctype, &child, &children) != 0) return; for (c = 0; c < children; c++) { nvlist_t *cnv = child[c]; char *cname = NULL, *tname; uint64_t np; int len; if (nvlist_lookup_string(cnv, ZPOOL_CONFIG_PATH, &cname) && nvlist_lookup_string(cnv, ZPOOL_CONFIG_TYPE, &cname)) cname = ""; len = strlen(cname) + 2; tname = umem_zalloc(len, UMEM_NOFAIL); (void) strlcpy(tname, cname, len); if (nvlist_lookup_uint64(cnv, ZPOOL_CONFIG_NPARITY, &np) == 0) tname[strlen(tname)] = '0' + np; show_vdev_stats(tname, ctype, cnv, indent + 2); umem_free(tname, len); } } void show_pool_stats(spa_t *spa) { nvlist_t *config, *nvroot; char *name; VERIFY(spa_get_stats(spa_name(spa), &config, NULL, 0) == 0); VERIFY(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); VERIFY(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &name) == 0); show_vdev_stats(name, ZPOOL_CONFIG_CHILDREN, nvroot, 0); show_vdev_stats(NULL, ZPOOL_CONFIG_L2CACHE, nvroot, 0); show_vdev_stats(NULL, ZPOOL_CONFIG_SPARES, nvroot, 0); nvlist_free(config); } /* * Sets given global variable in libzpool to given unsigned 32-bit value. * arg: "=" */ int set_global_var(char *arg) { void *zpoolhdl; char *varname = arg, *varval; u_longlong_t val; #ifndef _LITTLE_ENDIAN /* * On big endian systems changing a 64-bit variable would set the high * 32 bits instead of the low 32 bits, which could cause unexpected * results. */ fprintf(stderr, "Setting global variables is only supported on " "little-endian systems\n"); return (ENOTSUP); #endif if (arg != NULL && (varval = strchr(arg, '=')) != NULL) { *varval = '\0'; varval++; val = strtoull(varval, NULL, 0); if (val > UINT32_MAX) { fprintf(stderr, "Value for global variable '%s' must " "be a 32-bit unsigned integer\n", varname); return (EOVERFLOW); } } else { return (EINVAL); } zpoolhdl = dlopen("libzpool.so", RTLD_LAZY); if (zpoolhdl != NULL) { uint32_t *var; var = dlsym(zpoolhdl, varname); if (var == NULL) { fprintf(stderr, "Global variable '%s' does not exist " "in libzpool.so\n", varname); return (EINVAL); } *var = (uint32_t)val; dlclose(zpoolhdl); } else { fprintf(stderr, "Failed to open libzpool.so to set global " "variable\n"); return (EIO); } return (0); } static nvlist_t * refresh_config(void *unused, nvlist_t *tryconfig) { return (spa_tryimport(tryconfig)); } static int pool_active(void *unused, const char *name, uint64_t guid, boolean_t *isactive) { zfs_cmd_t *zcp; nvlist_t *innvl; char *packed = NULL; size_t size = 0; int fd, ret; /* * Use ZFS_IOC_POOL_SYNC to confirm if a pool is active */ fd = open(ZFS_DEV, O_RDWR); if (fd < 0) return (-1); zcp = umem_zalloc(sizeof (zfs_cmd_t), UMEM_NOFAIL); innvl = fnvlist_alloc(); fnvlist_add_boolean_value(innvl, "force", B_FALSE); (void) strlcpy(zcp->zc_name, name, sizeof (zcp->zc_name)); packed = fnvlist_pack(innvl, &size); zcp->zc_nvlist_src = (uint64_t)(uintptr_t)packed; zcp->zc_nvlist_src_size = size; ret = ioctl(fd, ZFS_IOC_POOL_SYNC, zcp); fnvlist_pack_free(packed, size); free((void *)(uintptr_t)zcp->zc_nvlist_dst); nvlist_free(innvl); umem_free(zcp, sizeof (zfs_cmd_t)); (void) close(fd); *isactive = (ret == 0); return (0); } const pool_config_ops_t libzpool_config_ops = { .pco_refresh_config = refresh_config, .pco_pool_active = pool_active, }; zfs-0.8.3/lib/libzpool/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776020064 xustar000000000000000030 mtime=1579730430.894187051 30 atime=1579730451.334843337 30 ctime=1579730472.777531813 zfs-0.8.3/lib/libzpool/Makefile.in0000664016037001603700000013356613612142776020106 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libzpool ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libzpool_la_DEPENDENCIES = $(top_builddir)/lib/libicp/libicp.la \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libunicode/libunicode.la \ $(top_builddir)/lib/libzutil/libzutil.la $(am__DEPENDENCIES_1) am__objects_1 = kernel.lo taskq.lo util.lo am__objects_2 = zfeature_common.lo zfs_comutil.lo zfs_deleg.lo \ zfs_fletcher.lo zfs_fletcher_aarch64_neon.lo \ zfs_fletcher_avx512.lo zfs_fletcher_intel.lo \ zfs_fletcher_sse.lo zfs_fletcher_superscalar.lo \ zfs_fletcher_superscalar4.lo zfs_namecheck.lo zfs_prop.lo \ zfs_uio.lo zpool_prop.lo zprop_common.lo abd.lo aggsum.lo \ arc.lo blkptr.lo bplist.lo bpobj.lo bptree.lo bqueue.lo \ cityhash.lo dbuf.lo dbuf_stats.lo ddt.lo ddt_zap.lo dmu.lo \ dmu_diff.lo dmu_object.lo dmu_objset.lo dmu_recv.lo \ dmu_send.lo dmu_traverse.lo dmu_tx.lo dmu_zfetch.lo dnode.lo \ dnode_sync.lo dsl_bookmark.lo dsl_dataset.lo dsl_deadlist.lo \ dsl_deleg.lo dsl_dir.lo dsl_crypt.lo dsl_pool.lo dsl_prop.lo \ dsl_scan.lo dsl_synctask.lo dsl_destroy.lo dsl_userhold.lo \ edonr_zfs.lo hkdf.lo fm.lo gzip.lo lzjb.lo lz4.lo metaslab.lo \ mmp.lo multilist.lo pathname.lo range_tree.lo refcount.lo \ rrwlock.lo sa.lo sha256.lo skein_zfs.lo spa.lo spa_boot.lo \ spa_checkpoint.lo spa_config.lo spa_errlog.lo spa_history.lo \ spa_misc.lo spa_stats.lo space_map.lo space_reftree.lo txg.lo \ trace.lo uberblock.lo unique.lo vdev.lo vdev_cache.lo \ vdev_file.lo vdev_indirect_births.lo vdev_indirect.lo \ vdev_indirect_mapping.lo vdev_initialize.lo vdev_label.lo \ vdev_mirror.lo vdev_missing.lo vdev_queue.lo vdev_raidz.lo \ vdev_raidz_math_aarch64_neon.lo \ vdev_raidz_math_aarch64_neonx2.lo vdev_raidz_math_avx2.lo \ vdev_raidz_math_avx512bw.lo vdev_raidz_math_avx512f.lo \ vdev_raidz_math.lo vdev_raidz_math_scalar.lo \ vdev_raidz_math_sse2.lo vdev_raidz_math_ssse3.lo \ vdev_removal.lo vdev_root.lo vdev_trim.lo zap.lo zap_leaf.lo \ zap_micro.lo zcp.lo zcp_get.lo zcp_global.lo zcp_iter.lo \ zcp_synctask.lo zfeature.lo zfs_byteswap.lo zfs_debug.lo \ zfs_fm.lo zfs_fuid.lo zfs_sa.lo zfs_znode.lo zfs_ratelimit.lo \ zfs_rlock.lo zil.lo zio.lo zio_checksum.lo zio_compress.lo \ zio_crypt.lo zio_inject.lo zle.lo zrlock.lo zthr.lo am__objects_3 = lapi.lo lauxlib.lo lbaselib.lo lcode.lo lcompat.lo \ lcorolib.lo lctype.lo ldebug.lo ldo.lo lfunc.lo lgc.lo llex.lo \ lmem.lo lobject.lo lopcodes.lo lparser.lo lstate.lo lstring.lo \ lstrlib.lo ltable.lo ltablib.lo ltm.lo lvm.lo lzio.lo nodist_libzpool_la_OBJECTS = $(am__objects_1) $(am__objects_2) \ $(am__objects_3) libzpool_la_OBJECTS = $(nodist_libzpool_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent libzpool_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libzpool_la_LDFLAGS) $(LDFLAGS) -o $@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libzpool_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = \ $(top_srcdir)/module/zfs \ $(top_srcdir)/module/zcommon \ $(top_srcdir)/module/lua \ $(top_srcdir)/lib/libzpool ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent # Suppress unused but set variable warnings often due to ASSERTs # Includes kernel code generate warnings for large stack frames AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) $(NO_UNUSED_BUT_SET_VARIABLE) \ $(FRAME_LARGER_THAN) -DLIB_ZPOOL_BUILD AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) lib_LTLIBRARIES = libzpool.la USER_C = \ kernel.c \ taskq.c \ util.c KERNEL_C = \ zfeature_common.c \ zfs_comutil.c \ zfs_deleg.c \ zfs_fletcher.c \ zfs_fletcher_aarch64_neon.c \ zfs_fletcher_avx512.c \ zfs_fletcher_intel.c \ zfs_fletcher_sse.c \ zfs_fletcher_superscalar.c \ zfs_fletcher_superscalar4.c \ zfs_namecheck.c \ zfs_prop.c \ zfs_uio.c \ zpool_prop.c \ zprop_common.c \ abd.c \ aggsum.c \ arc.c \ blkptr.c \ bplist.c \ bpobj.c \ bptree.c \ bqueue.c \ cityhash.c \ dbuf.c \ dbuf_stats.c \ ddt.c \ ddt_zap.c \ dmu.c \ dmu_diff.c \ dmu_object.c \ dmu_objset.c \ dmu_recv.c \ dmu_send.c \ dmu_traverse.c \ dmu_tx.c \ dmu_zfetch.c \ dnode.c \ dnode_sync.c \ dsl_bookmark.c \ dsl_dataset.c \ dsl_deadlist.c \ dsl_deleg.c \ dsl_dir.c \ dsl_crypt.c \ dsl_pool.c \ dsl_prop.c \ dsl_scan.c \ dsl_synctask.c \ dsl_destroy.c \ dsl_userhold.c \ edonr_zfs.c \ hkdf.c \ fm.c \ gzip.c \ lzjb.c \ lz4.c \ metaslab.c \ mmp.c \ multilist.c \ pathname.c \ range_tree.c \ refcount.c \ rrwlock.c \ sa.c \ sha256.c \ skein_zfs.c \ spa.c \ spa_boot.c \ spa_checkpoint.c \ spa_config.c \ spa_errlog.c \ spa_history.c \ spa_misc.c \ spa_stats.c \ space_map.c \ space_reftree.c \ txg.c \ trace.c \ uberblock.c \ unique.c \ vdev.c \ vdev_cache.c \ vdev_file.c \ vdev_indirect_births.c \ vdev_indirect.c \ vdev_indirect_mapping.c \ vdev_initialize.c \ vdev_label.c \ vdev_mirror.c \ vdev_missing.c \ vdev_queue.c \ vdev_raidz.c \ vdev_raidz_math_aarch64_neon.c \ vdev_raidz_math_aarch64_neonx2.c \ vdev_raidz_math_avx2.c \ vdev_raidz_math_avx512bw.c \ vdev_raidz_math_avx512f.c \ vdev_raidz_math.c \ vdev_raidz_math_scalar.c \ vdev_raidz_math_sse2.c \ vdev_raidz_math_ssse3.c \ vdev_removal.c \ vdev_root.c \ vdev_trim.c \ zap.c \ zap_leaf.c \ zap_micro.c \ zcp.c \ zcp_get.c \ zcp_global.c \ zcp_iter.c \ zcp_synctask.c \ zfeature.c \ zfs_byteswap.c \ zfs_debug.c \ zfs_fm.c \ zfs_fuid.c \ zfs_sa.c \ zfs_znode.c \ zfs_ratelimit.c \ zfs_rlock.c \ zil.c \ zio.c \ zio_checksum.c \ zio_compress.c \ zio_crypt.c \ zio_inject.c \ zle.c \ zrlock.c \ zthr.c LUA_C = \ lapi.c \ lauxlib.c \ lbaselib.c \ lcode.c \ lcompat.c \ lcorolib.c \ lctype.c \ ldebug.c \ ldo.c \ lfunc.c \ lgc.c \ llex.c \ lmem.c \ lobject.c \ lopcodes.c \ lparser.c \ lstate.c \ lstring.c \ lstrlib.c \ ltable.c \ ltablib.c \ ltm.c \ lvm.c \ lzio.c nodist_libzpool_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) \ $(LUA_C) libzpool_la_LIBADD = $(top_builddir)/lib/libicp/libicp.la \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libunicode/libunicode.la \ $(top_builddir)/lib/libzutil/libzutil.la $(ZLIB) -ldl libzpool_la_LDFLAGS = -pthread -version-info 2:0:0 EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libzpool/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libzpool/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libzpool.la: $(libzpool_la_OBJECTS) $(libzpool_la_DEPENDENCIES) $(AM_V_CCLD)$(libzpool_la_LINK) -rpath $(libdir) $(libzpool_la_OBJECTS) $(libzpool_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/abd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aggsum.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/blkptr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bplist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bpobj.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bptree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bqueue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cityhash.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbuf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbuf_stats.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ddt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ddt_zap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu_diff.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu_object.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu_objset.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu_recv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu_send.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu_traverse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu_tx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dmu_zfetch.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dnode_sync.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_bookmark.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_crypt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_dataset.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_deadlist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_deleg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_destroy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_dir.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_pool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_prop.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_scan.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_synctask.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dsl_userhold.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edonr_zfs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gzip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hkdf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kernel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lapi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lauxlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lbaselib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcompat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcorolib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lctype.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldebug.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ldo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lfunc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lgc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/llex.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lmem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lobject.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lopcodes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lparser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstate.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstring.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lstrlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ltable.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ltablib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ltm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lvm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lz4.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzjb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metaslab.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multilist.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pathname.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/range_tree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/refcount.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rrwlock.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sa.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha256.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skein_zfs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spa.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spa_boot.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spa_checkpoint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spa_config.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spa_errlog.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spa_history.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spa_misc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spa_stats.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/space_map.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/space_reftree.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/taskq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/trace.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uberblock.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unique.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_cache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_file.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_indirect.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_indirect_births.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_indirect_mapping.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_initialize.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_label.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_mirror.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_missing.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_queue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math_aarch64_neon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math_aarch64_neonx2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math_avx2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math_avx512bw.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math_avx512f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math_scalar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math_sse2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_raidz_math_ssse3.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_removal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_root.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vdev_trim.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zap_leaf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zap_micro.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zcp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zcp_get.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zcp_global.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zcp_iter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zcp_synctask.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfeature.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfeature_common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_byteswap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_comutil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_debug.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_deleg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_aarch64_neon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_avx512.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_intel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_sse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_superscalar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fletcher_superscalar4.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_fuid.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_namecheck.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_prop.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_ratelimit.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_rlock.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_sa.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_uio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zfs_znode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zio_checksum.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zio_compress.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zio_crypt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zio_inject.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zpool_prop.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zprop_common.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zrlock.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zthr.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/libtpool0000644000000000000000000000013213612143050015716 xustar000000000000000030 mtime=1579730472.420520349 30 atime=1579730489.073055035 30 ctime=1579730472.420520349 zfs-0.8.3/lib/libtpool/0000775016037001603700000000000013612143050015777 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libtpool/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020054 xustar000000000000000030 atime=1579730430.461173149 30 ctime=1579730472.414520157 zfs-0.8.3/lib/libtpool/Makefile.am0000644016037001603700000000055513607166147020056 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include noinst_LTLIBRARIES = libtpool.la USER_C = \ thread_pool.c \ thread_pool_impl.h nodist_libtpool_la_SOURCES = $(USER_C) libtpool_la_LIBADD = \ $(top_builddir)/lib/libspl/libspl.la libtpool_la_LDFLAGS = -pthread EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libtpool/PaxHeaders.151519/thread_pool_impl.h0000644000000000000000000000007413607166132021504 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.421520381 zfs-0.8.3/lib/libtpool/thread_pool_impl.h0000644016037001603700000000540713607166132021507 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _THREAD_POOL_IMPL_H #define _THREAD_POOL_IMPL_H #include #ifdef __cplusplus extern "C" { #endif /* * Thread pool implementation definitions. * See for interface declarations. */ /* * FIFO queued job */ typedef struct tpool_job tpool_job_t; struct tpool_job { tpool_job_t *tpj_next; /* list of jobs */ void (*tpj_func)(void *); /* function to call */ void *tpj_arg; /* its argument */ }; /* * List of active threads, linked through their stacks. */ typedef struct tpool_active tpool_active_t; struct tpool_active { tpool_active_t *tpa_next; /* list of active threads */ pthread_t tpa_tid; /* active thread id */ }; /* * The thread pool. */ struct tpool { tpool_t *tp_forw; /* circular list of all thread pools */ tpool_t *tp_back; pthread_mutex_t tp_mutex; /* protects the pool data */ pthread_cond_t tp_busycv; /* synchronization in tpool_dispatch */ pthread_cond_t tp_workcv; /* synchronization with workers */ pthread_cond_t tp_waitcv; /* synchronization in tpool_wait() */ tpool_active_t *tp_active; /* threads performing work */ tpool_job_t *tp_head; /* FIFO job queue */ tpool_job_t *tp_tail; pthread_attr_t tp_attr; /* attributes of the workers */ int tp_flags; /* see below */ uint_t tp_linger; /* seconds before idle workers exit */ int tp_njobs; /* number of jobs in job queue */ int tp_minimum; /* minimum number of worker threads */ int tp_maximum; /* maximum number of worker threads */ int tp_current; /* current number of worker threads */ int tp_idle; /* number of idle workers */ }; /* tp_flags */ #define TP_WAIT 0x01 /* waiting in tpool_wait() */ #define TP_SUSPEND 0x02 /* pool is being suspended */ #define TP_DESTROY 0x04 /* pool is being destroyed */ #define TP_ABANDON 0x08 /* pool is abandoned (auto-destroy) */ #ifdef __cplusplus } #endif #endif /* _THREAD_POOL_IMPL_H */ zfs-0.8.3/lib/libtpool/PaxHeaders.151519/thread_pool.c0000644000000000000000000000007413612141513020446 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.418520285 zfs-0.8.3/lib/libtpool/thread_pool.c0000644016037001603700000004031713612141513020450 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include #include #include "thread_pool_impl.h" static pthread_mutex_t thread_pool_lock = PTHREAD_MUTEX_INITIALIZER; static tpool_t *thread_pools = NULL; static void delete_pool(tpool_t *tpool) { tpool_job_t *job; ASSERT(tpool->tp_current == 0 && tpool->tp_active == NULL); /* * Unlink the pool from the global list of all pools. */ (void) pthread_mutex_lock(&thread_pool_lock); if (thread_pools == tpool) thread_pools = tpool->tp_forw; if (thread_pools == tpool) thread_pools = NULL; else { tpool->tp_back->tp_forw = tpool->tp_forw; tpool->tp_forw->tp_back = tpool->tp_back; } pthread_mutex_unlock(&thread_pool_lock); /* * There should be no pending jobs, but just in case... */ for (job = tpool->tp_head; job != NULL; job = tpool->tp_head) { tpool->tp_head = job->tpj_next; free(job); } (void) pthread_attr_destroy(&tpool->tp_attr); free(tpool); } /* * Worker thread is terminating. */ static void worker_cleanup(void *arg) { tpool_t *tpool = (tpool_t *)arg; if (--tpool->tp_current == 0 && (tpool->tp_flags & (TP_DESTROY | TP_ABANDON))) { if (tpool->tp_flags & TP_ABANDON) { pthread_mutex_unlock(&tpool->tp_mutex); delete_pool(tpool); return; } if (tpool->tp_flags & TP_DESTROY) (void) pthread_cond_broadcast(&tpool->tp_busycv); } pthread_mutex_unlock(&tpool->tp_mutex); } static void notify_waiters(tpool_t *tpool) { if (tpool->tp_head == NULL && tpool->tp_active == NULL) { tpool->tp_flags &= ~TP_WAIT; (void) pthread_cond_broadcast(&tpool->tp_waitcv); } } /* * Called by a worker thread on return from a tpool_dispatch()d job. */ static void job_cleanup(void *arg) { tpool_t *tpool = (tpool_t *)arg; pthread_t my_tid = pthread_self(); tpool_active_t *activep; tpool_active_t **activepp; pthread_mutex_lock(&tpool->tp_mutex); /* CSTYLED */ for (activepp = &tpool->tp_active;; activepp = &activep->tpa_next) { activep = *activepp; if (activep->tpa_tid == my_tid) { *activepp = activep->tpa_next; break; } } if (tpool->tp_flags & TP_WAIT) notify_waiters(tpool); } static void * tpool_worker(void *arg) { tpool_t *tpool = (tpool_t *)arg; int elapsed; tpool_job_t *job; void (*func)(void *); tpool_active_t active; pthread_mutex_lock(&tpool->tp_mutex); pthread_cleanup_push(worker_cleanup, tpool); /* * This is the worker's main loop. * It will only be left if a timeout or an error has occurred. */ active.tpa_tid = pthread_self(); for (;;) { elapsed = 0; tpool->tp_idle++; if (tpool->tp_flags & TP_WAIT) notify_waiters(tpool); while ((tpool->tp_head == NULL || (tpool->tp_flags & TP_SUSPEND)) && !(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))) { if (tpool->tp_current <= tpool->tp_minimum || tpool->tp_linger == 0) { (void) pthread_cond_wait(&tpool->tp_workcv, &tpool->tp_mutex); } else { struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); ts.tv_sec += tpool->tp_linger; if (pthread_cond_timedwait(&tpool->tp_workcv, &tpool->tp_mutex, &ts) != 0) { elapsed = 1; break; } } } tpool->tp_idle--; if (tpool->tp_flags & TP_DESTROY) break; if (tpool->tp_flags & TP_ABANDON) { /* can't abandon a suspended pool */ if (tpool->tp_flags & TP_SUSPEND) { tpool->tp_flags &= ~TP_SUSPEND; (void) pthread_cond_broadcast( &tpool->tp_workcv); } if (tpool->tp_head == NULL) break; } if ((job = tpool->tp_head) != NULL && !(tpool->tp_flags & TP_SUSPEND)) { elapsed = 0; func = job->tpj_func; arg = job->tpj_arg; tpool->tp_head = job->tpj_next; if (job == tpool->tp_tail) tpool->tp_tail = NULL; tpool->tp_njobs--; active.tpa_next = tpool->tp_active; tpool->tp_active = &active; pthread_mutex_unlock(&tpool->tp_mutex); pthread_cleanup_push(job_cleanup, tpool); free(job); sigset_t maskset; (void) pthread_sigmask(SIG_SETMASK, NULL, &maskset); /* * Call the specified function. */ func(arg); /* * We don't know what this thread has been doing, * so we reset its signal mask and cancellation * state back to the values prior to calling func(). */ (void) pthread_sigmask(SIG_SETMASK, &maskset, NULL); (void) pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL); (void) pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); pthread_cleanup_pop(1); } if (elapsed && tpool->tp_current > tpool->tp_minimum) { /* * We timed out and there is no work to be done * and the number of workers exceeds the minimum. * Exit now to reduce the size of the pool. */ break; } } pthread_cleanup_pop(1); return (arg); } /* * Create a worker thread, with default signals blocked. */ static int create_worker(tpool_t *tpool) { pthread_t thread; sigset_t oset; int error; (void) pthread_sigmask(SIG_SETMASK, NULL, &oset); error = pthread_create(&thread, &tpool->tp_attr, tpool_worker, tpool); (void) pthread_sigmask(SIG_SETMASK, &oset, NULL); return (error); } /* * pthread_attr_clone: make a copy of a pthread_attr_t. When old_attr * is NULL initialize the cloned attr using default values. */ static int pthread_attr_clone(pthread_attr_t *attr, const pthread_attr_t *old_attr) { int error; error = pthread_attr_init(attr); if (error || (old_attr == NULL)) return (error); #ifdef __GLIBC__ cpu_set_t cpuset; size_t cpusetsize = sizeof (cpuset); error = pthread_attr_getaffinity_np(old_attr, cpusetsize, &cpuset); if (error == 0) error = pthread_attr_setaffinity_np(attr, cpusetsize, &cpuset); if (error) goto error; #endif /* __GLIBC__ */ int detachstate; error = pthread_attr_getdetachstate(old_attr, &detachstate); if (error == 0) error = pthread_attr_setdetachstate(attr, detachstate); if (error) goto error; size_t guardsize; error = pthread_attr_getguardsize(old_attr, &guardsize); if (error == 0) error = pthread_attr_setguardsize(attr, guardsize); if (error) goto error; int inheritsched; error = pthread_attr_getinheritsched(old_attr, &inheritsched); if (error == 0) error = pthread_attr_setinheritsched(attr, inheritsched); if (error) goto error; struct sched_param param; error = pthread_attr_getschedparam(old_attr, ¶m); if (error == 0) error = pthread_attr_setschedparam(attr, ¶m); if (error) goto error; int policy; error = pthread_attr_getschedpolicy(old_attr, &policy); if (error == 0) error = pthread_attr_setschedpolicy(attr, policy); if (error) goto error; int scope; error = pthread_attr_getscope(old_attr, &scope); if (error == 0) error = pthread_attr_setscope(attr, scope); if (error) goto error; void *stackaddr; size_t stacksize; error = pthread_attr_getstack(old_attr, &stackaddr, &stacksize); if (error == 0) error = pthread_attr_setstack(attr, stackaddr, stacksize); if (error) goto error; return (0); error: pthread_attr_destroy(attr); return (error); } tpool_t * tpool_create(uint_t min_threads, uint_t max_threads, uint_t linger, pthread_attr_t *attr) { tpool_t *tpool; void *stackaddr; size_t stacksize; size_t minstack; int error; if (min_threads > max_threads || max_threads < 1) { errno = EINVAL; return (NULL); } if (attr != NULL) { if (pthread_attr_getstack(attr, &stackaddr, &stacksize) != 0) { errno = EINVAL; return (NULL); } /* * Allow only one thread in the pool with a specified stack. * Require threads to have at least the minimum stack size. */ minstack = PTHREAD_STACK_MIN; if (stackaddr != NULL) { if (stacksize < minstack || max_threads != 1) { errno = EINVAL; return (NULL); } } else if (stacksize != 0 && stacksize < minstack) { errno = EINVAL; return (NULL); } } tpool = calloc(1, sizeof (*tpool)); if (tpool == NULL) { errno = ENOMEM; return (NULL); } (void) pthread_mutex_init(&tpool->tp_mutex, NULL); (void) pthread_cond_init(&tpool->tp_busycv, NULL); (void) pthread_cond_init(&tpool->tp_workcv, NULL); (void) pthread_cond_init(&tpool->tp_waitcv, NULL); tpool->tp_minimum = min_threads; tpool->tp_maximum = max_threads; tpool->tp_linger = linger; /* * We cannot just copy the attribute pointer. * We need to initialize a new pthread_attr_t structure * with the values from the user-supplied pthread_attr_t. * If the attribute pointer is NULL, we need to initialize * the new pthread_attr_t structure with default values. */ error = pthread_attr_clone(&tpool->tp_attr, attr); if (error) { free(tpool); errno = error; return (NULL); } /* make all pool threads be detached daemon threads */ (void) pthread_attr_setdetachstate(&tpool->tp_attr, PTHREAD_CREATE_DETACHED); /* insert into the global list of all thread pools */ pthread_mutex_lock(&thread_pool_lock); if (thread_pools == NULL) { tpool->tp_forw = tpool; tpool->tp_back = tpool; thread_pools = tpool; } else { thread_pools->tp_back->tp_forw = tpool; tpool->tp_forw = thread_pools; tpool->tp_back = thread_pools->tp_back; thread_pools->tp_back = tpool; } pthread_mutex_unlock(&thread_pool_lock); return (tpool); } /* * Dispatch a work request to the thread pool. * If there are idle workers, awaken one. * Else, if the maximum number of workers has * not been reached, spawn a new worker thread. * Else just return with the job added to the queue. */ int tpool_dispatch(tpool_t *tpool, void (*func)(void *), void *arg) { tpool_job_t *job; ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); if ((job = calloc(1, sizeof (*job))) == NULL) return (-1); job->tpj_next = NULL; job->tpj_func = func; job->tpj_arg = arg; pthread_mutex_lock(&tpool->tp_mutex); if (tpool->tp_head == NULL) tpool->tp_head = job; else tpool->tp_tail->tpj_next = job; tpool->tp_tail = job; tpool->tp_njobs++; if (!(tpool->tp_flags & TP_SUSPEND)) { if (tpool->tp_idle > 0) (void) pthread_cond_signal(&tpool->tp_workcv); else if (tpool->tp_current < tpool->tp_maximum && create_worker(tpool) == 0) tpool->tp_current++; } pthread_mutex_unlock(&tpool->tp_mutex); return (0); } static void tpool_cleanup(void *arg) { tpool_t *tpool = (tpool_t *)arg; pthread_mutex_unlock(&tpool->tp_mutex); } /* * Assumes: by the time tpool_destroy() is called no one will use this * thread pool in any way and no one will try to dispatch entries to it. * Calling tpool_destroy() from a job in the pool will cause deadlock. */ void tpool_destroy(tpool_t *tpool) { tpool_active_t *activep; ASSERT(!tpool_member(tpool)); ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); pthread_mutex_lock(&tpool->tp_mutex); pthread_cleanup_push(tpool_cleanup, tpool); /* mark the pool as being destroyed; wakeup idle workers */ tpool->tp_flags |= TP_DESTROY; tpool->tp_flags &= ~TP_SUSPEND; (void) pthread_cond_broadcast(&tpool->tp_workcv); /* cancel all active workers */ for (activep = tpool->tp_active; activep; activep = activep->tpa_next) (void) pthread_cancel(activep->tpa_tid); /* wait for all active workers to finish */ while (tpool->tp_active != NULL) { tpool->tp_flags |= TP_WAIT; (void) pthread_cond_wait(&tpool->tp_waitcv, &tpool->tp_mutex); } /* the last worker to terminate will wake us up */ while (tpool->tp_current != 0) (void) pthread_cond_wait(&tpool->tp_busycv, &tpool->tp_mutex); pthread_cleanup_pop(1); /* pthread_mutex_unlock(&tpool->tp_mutex); */ delete_pool(tpool); } /* * Like tpool_destroy(), but don't cancel workers or wait for them to finish. * The last worker to terminate will delete the pool. */ void tpool_abandon(tpool_t *tpool) { ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); pthread_mutex_lock(&tpool->tp_mutex); if (tpool->tp_current == 0) { /* no workers, just delete the pool */ pthread_mutex_unlock(&tpool->tp_mutex); delete_pool(tpool); } else { /* wake up all workers, last one will delete the pool */ tpool->tp_flags |= TP_ABANDON; tpool->tp_flags &= ~TP_SUSPEND; (void) pthread_cond_broadcast(&tpool->tp_workcv); pthread_mutex_unlock(&tpool->tp_mutex); } } /* * Wait for all jobs to complete. * Calling tpool_wait() from a job in the pool will cause deadlock. */ void tpool_wait(tpool_t *tpool) { ASSERT(!tpool_member(tpool)); ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); pthread_mutex_lock(&tpool->tp_mutex); pthread_cleanup_push(tpool_cleanup, tpool); while (tpool->tp_head != NULL || tpool->tp_active != NULL) { tpool->tp_flags |= TP_WAIT; (void) pthread_cond_wait(&tpool->tp_waitcv, &tpool->tp_mutex); ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); } pthread_cleanup_pop(1); /* pthread_mutex_unlock(&tpool->tp_mutex); */ } void tpool_suspend(tpool_t *tpool) { ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); pthread_mutex_lock(&tpool->tp_mutex); tpool->tp_flags |= TP_SUSPEND; pthread_mutex_unlock(&tpool->tp_mutex); } int tpool_suspended(tpool_t *tpool) { int suspended; ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); pthread_mutex_lock(&tpool->tp_mutex); suspended = (tpool->tp_flags & TP_SUSPEND) != 0; pthread_mutex_unlock(&tpool->tp_mutex); return (suspended); } void tpool_resume(tpool_t *tpool) { int excess; ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); pthread_mutex_lock(&tpool->tp_mutex); if (!(tpool->tp_flags & TP_SUSPEND)) { pthread_mutex_unlock(&tpool->tp_mutex); return; } tpool->tp_flags &= ~TP_SUSPEND; (void) pthread_cond_broadcast(&tpool->tp_workcv); excess = tpool->tp_njobs - tpool->tp_idle; while (excess-- > 0 && tpool->tp_current < tpool->tp_maximum) { if (create_worker(tpool) != 0) break; /* pthread_create() failed */ tpool->tp_current++; } pthread_mutex_unlock(&tpool->tp_mutex); } int tpool_member(tpool_t *tpool) { pthread_t my_tid = pthread_self(); tpool_active_t *activep; ASSERT(!(tpool->tp_flags & (TP_DESTROY | TP_ABANDON))); pthread_mutex_lock(&tpool->tp_mutex); for (activep = tpool->tp_active; activep; activep = activep->tpa_next) { if (activep->tpa_tid == my_tid) { pthread_mutex_unlock(&tpool->tp_mutex); return (1); } } pthread_mutex_unlock(&tpool->tp_mutex); return (0); } void postfork1_child_tpool(void) { pthread_t my_tid = pthread_self(); tpool_t *tpool; tpool_job_t *job; /* * All of the thread pool workers are gone, except possibly * for the current thread, if it is a thread pool worker thread. * Retain the thread pools, but make them all empty. Whatever * jobs were queued or running belong to the parent process. */ top: if ((tpool = thread_pools) == NULL) return; do { tpool_active_t *activep; (void) pthread_mutex_init(&tpool->tp_mutex, NULL); (void) pthread_cond_init(&tpool->tp_busycv, NULL); (void) pthread_cond_init(&tpool->tp_workcv, NULL); (void) pthread_cond_init(&tpool->tp_waitcv, NULL); for (job = tpool->tp_head; job; job = tpool->tp_head) { tpool->tp_head = job->tpj_next; free(job); } tpool->tp_tail = NULL; tpool->tp_njobs = 0; for (activep = tpool->tp_active; activep; activep = activep->tpa_next) { if (activep->tpa_tid == my_tid) { activep->tpa_next = NULL; break; } } tpool->tp_idle = 0; tpool->tp_current = 0; if ((tpool->tp_active = activep) != NULL) tpool->tp_current = 1; tpool->tp_flags &= ~TP_WAIT; if (tpool->tp_flags & (TP_DESTROY | TP_ABANDON)) { tpool->tp_flags &= ~TP_DESTROY; tpool->tp_flags |= TP_ABANDON; if (tpool->tp_current == 0) { delete_pool(tpool); goto top; /* start over */ } } } while ((tpool = tpool->tp_forw) != thread_pools); } zfs-0.8.3/lib/libtpool/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776020056 xustar000000000000000030 mtime=1579730430.513174819 30 atime=1579730451.243840415 30 ctime=1579730472.416520221 zfs-0.8.3/lib/libtpool/Makefile.in0000664016037001603700000006633713612142776020101 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libtpool ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libtpool_la_DEPENDENCIES = $(top_builddir)/lib/libspl/libspl.la am__objects_1 = thread_pool.lo nodist_libtpool_la_OBJECTS = $(am__objects_1) libtpool_la_OBJECTS = $(nodist_libtpool_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent libtpool_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libtpool_la_LDFLAGS) $(LDFLAGS) -o $@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libtpool_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) noinst_LTLIBRARIES = libtpool.la USER_C = \ thread_pool.c \ thread_pool_impl.h nodist_libtpool_la_SOURCES = $(USER_C) libtpool_la_LIBADD = \ $(top_builddir)/lib/libspl/libspl.la libtpool_la_LDFLAGS = -pthread EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libtpool/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libtpool/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libtpool.la: $(libtpool_la_OBJECTS) $(libtpool_la_DEPENDENCIES) $(AM_V_CCLD)$(libtpool_la_LINK) $(libtpool_la_OBJECTS) $(libtpool_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread_pool.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/libnvpair0000644000000000000000000000013213612143050016060 xustar000000000000000030 mtime=1579730472.682528761 30 atime=1579730489.073055035 30 ctime=1579730472.682528761 zfs-0.8.3/lib/libnvpair/0000775016037001603700000000000013612143050016141 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libnvpair/PaxHeaders.151519/nvpair_alloc_system.c0000644000000000000000000000007413607166132022375 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.682528761 zfs-0.8.3/lib/libnvpair/nvpair_alloc_system.c0000644016037001603700000000324013607166132022371 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include static void * nv_alloc_sys(nv_alloc_t *nva, size_t size) { return (kmem_alloc(size, (int)(uintptr_t)nva->nva_arg)); } /*ARGSUSED*/ static void nv_free_sys(nv_alloc_t *nva, void *buf, size_t size) { kmem_free(buf, size); } static const nv_alloc_ops_t system_ops = { NULL, /* nv_ao_init() */ NULL, /* nv_ao_fini() */ nv_alloc_sys, /* nv_ao_alloc() */ nv_free_sys, /* nv_ao_free() */ NULL /* nv_ao_reset() */ }; nv_alloc_t nv_alloc_sleep_def = { &system_ops, (void *)KM_SLEEP }; nv_alloc_t nv_alloc_nosleep_def = { &system_ops, (void *)KM_NOSLEEP }; nv_alloc_t *nv_alloc_sleep = &nv_alloc_sleep_def; nv_alloc_t *nv_alloc_nosleep = &nv_alloc_nosleep_def; zfs-0.8.3/lib/libnvpair/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020216 xustar000000000000000030 atime=1579730429.709149004 30 ctime=1579730472.673528473 zfs-0.8.3/lib/libnvpair/Makefile.am0000644016037001603700000000124613607166147020216 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am VPATH = \ $(top_srcdir)/module/nvpair \ $(top_srcdir)/lib/libnvpair # Includes kernel code, generate warnings for large stack frames # and required CFLAGS for libtirpc AM_CFLAGS += $(FRAME_LARGER_THAN) $(LIBTIRPC_CFLAGS) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include lib_LTLIBRARIES = libnvpair.la USER_C = \ libnvpair.c \ libnvpair_json.c \ nvpair_alloc_system.c KERNEL_C = \ nvpair_alloc_fixed.c \ nvpair.c \ fnvpair.c nodist_libnvpair_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) libnvpair_la_LIBADD = $(LIBTIRPC_LIBS) libnvpair_la_LDFLAGS = -version-info 1:1:0 EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libnvpair/PaxHeaders.151519/libnvpair_json.c0000644000000000000000000000007413612141517021333 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.680528697 zfs-0.8.3/lib/libnvpair/libnvpair_json.c0000644016037001603700000002101613612141517021330 0ustar00hutter2hutter200000000000000/* * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* * Copyright (c) 2014, Joyent, Inc. * Copyright (c) 2017 by Delphix. All rights reserved. */ #include #include #include #include #include #include "libnvpair.h" #define FPRINTF(fp, ...) \ do { \ if (fprintf(fp, __VA_ARGS__) < 0) \ return (-1); \ } while (0) /* * When formatting a string for JSON output we must escape certain characters, * as described in RFC4627. This applies to both member names and * DATA_TYPE_STRING values. * * This function will only operate correctly if the following conditions are * met: * * 1. The input String is encoded in the current locale. * * 2. The current locale includes the Basic Multilingual Plane (plane 0) * as defined in the Unicode standard. * * The output will be entirely 7-bit ASCII (as a subset of UTF-8) with all * representable Unicode characters included in their escaped numeric form. */ static int nvlist_print_json_string(FILE *fp, const char *input) { mbstate_t mbr; wchar_t c; size_t sz; bzero(&mbr, sizeof (mbr)); FPRINTF(fp, "\""); while ((sz = mbrtowc(&c, input, MB_CUR_MAX, &mbr)) > 0) { switch (c) { case '"': FPRINTF(fp, "\\\""); break; case '\n': FPRINTF(fp, "\\n"); break; case '\r': FPRINTF(fp, "\\r"); break; case '\\': FPRINTF(fp, "\\\\"); break; case '\f': FPRINTF(fp, "\\f"); break; case '\t': FPRINTF(fp, "\\t"); break; case '\b': FPRINTF(fp, "\\b"); break; default: if ((c >= 0x00 && c <= 0x1f) || (c > 0x7f && c <= 0xffff)) { /* * Render both Control Characters and Unicode * characters in the Basic Multilingual Plane * as JSON-escaped multibyte characters. */ FPRINTF(fp, "\\u%04x", (int)(0xffff & c)); } else if (c >= 0x20 && c <= 0x7f) { /* * Render other 7-bit ASCII characters directly * and drop other, unrepresentable characters. */ FPRINTF(fp, "%c", (int)(0xff & c)); } break; } input += sz; } if (sz == (size_t)-1 || sz == (size_t)-2) { /* * We last read an invalid multibyte character sequence, * so return an error. */ return (-1); } FPRINTF(fp, "\""); return (0); } /* * Dump a JSON-formatted representation of an nvlist to the provided FILE *. * This routine does not output any new-lines or additional whitespace other * than that contained in strings, nor does it call fflush(3C). */ int nvlist_print_json(FILE *fp, nvlist_t *nvl) { nvpair_t *curr; boolean_t first = B_TRUE; FPRINTF(fp, "{"); for (curr = nvlist_next_nvpair(nvl, NULL); curr; curr = nvlist_next_nvpair(nvl, curr)) { data_type_t type = nvpair_type(curr); if (!first) FPRINTF(fp, ","); else first = B_FALSE; if (nvlist_print_json_string(fp, nvpair_name(curr)) == -1) return (-1); FPRINTF(fp, ":"); switch (type) { case DATA_TYPE_STRING: { char *string = fnvpair_value_string(curr); if (nvlist_print_json_string(fp, string) == -1) return (-1); break; } case DATA_TYPE_BOOLEAN: { FPRINTF(fp, "true"); break; } case DATA_TYPE_BOOLEAN_VALUE: { FPRINTF(fp, "%s", fnvpair_value_boolean_value(curr) == B_TRUE ? "true" : "false"); break; } case DATA_TYPE_BYTE: { FPRINTF(fp, "%hhu", fnvpair_value_byte(curr)); break; } case DATA_TYPE_INT8: { FPRINTF(fp, "%hhd", fnvpair_value_int8(curr)); break; } case DATA_TYPE_UINT8: { FPRINTF(fp, "%hhu", fnvpair_value_uint8(curr)); break; } case DATA_TYPE_INT16: { FPRINTF(fp, "%hd", fnvpair_value_int16(curr)); break; } case DATA_TYPE_UINT16: { FPRINTF(fp, "%hu", fnvpair_value_uint16(curr)); break; } case DATA_TYPE_INT32: { FPRINTF(fp, "%d", fnvpair_value_int32(curr)); break; } case DATA_TYPE_UINT32: { FPRINTF(fp, "%u", fnvpair_value_uint32(curr)); break; } case DATA_TYPE_INT64: { FPRINTF(fp, "%lld", (long long)fnvpair_value_int64(curr)); break; } case DATA_TYPE_UINT64: { FPRINTF(fp, "%llu", (unsigned long long)fnvpair_value_uint64(curr)); break; } case DATA_TYPE_HRTIME: { hrtime_t val; VERIFY0(nvpair_value_hrtime(curr, &val)); FPRINTF(fp, "%llu", (unsigned long long)val); break; } case DATA_TYPE_DOUBLE: { double val; VERIFY0(nvpair_value_double(curr, &val)); FPRINTF(fp, "%f", val); break; } case DATA_TYPE_NVLIST: { if (nvlist_print_json(fp, fnvpair_value_nvlist(curr)) == -1) return (-1); break; } case DATA_TYPE_STRING_ARRAY: { char **val; uint_t valsz, i; VERIFY0(nvpair_value_string_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); if (nvlist_print_json_string(fp, val[i]) == -1) return (-1); } FPRINTF(fp, "]"); break; } case DATA_TYPE_NVLIST_ARRAY: { nvlist_t **val; uint_t valsz, i; VERIFY0(nvpair_value_nvlist_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); if (nvlist_print_json(fp, val[i]) == -1) return (-1); } FPRINTF(fp, "]"); break; } case DATA_TYPE_BOOLEAN_ARRAY: { boolean_t *val; uint_t valsz, i; VERIFY0(nvpair_value_boolean_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, val[i] == B_TRUE ? "true" : "false"); } FPRINTF(fp, "]"); break; } case DATA_TYPE_BYTE_ARRAY: { uchar_t *val; uint_t valsz, i; VERIFY0(nvpair_value_byte_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%hhu", val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_UINT8_ARRAY: { uint8_t *val; uint_t valsz, i; VERIFY0(nvpair_value_uint8_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%hhu", val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_INT8_ARRAY: { int8_t *val; uint_t valsz, i; VERIFY0(nvpair_value_int8_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%hhd", val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_UINT16_ARRAY: { uint16_t *val; uint_t valsz, i; VERIFY0(nvpair_value_uint16_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%hu", val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_INT16_ARRAY: { int16_t *val; uint_t valsz, i; VERIFY0(nvpair_value_int16_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%hd", val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_UINT32_ARRAY: { uint32_t *val; uint_t valsz, i; VERIFY0(nvpair_value_uint32_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%u", val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_INT32_ARRAY: { int32_t *val; uint_t valsz, i; VERIFY0(nvpair_value_int32_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%d", val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_UINT64_ARRAY: { uint64_t *val; uint_t valsz, i; VERIFY0(nvpair_value_uint64_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%llu", (unsigned long long)val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_INT64_ARRAY: { int64_t *val; uint_t valsz, i; VERIFY0(nvpair_value_int64_array(curr, &val, &valsz)); FPRINTF(fp, "["); for (i = 0; i < valsz; i++) { if (i > 0) FPRINTF(fp, ","); FPRINTF(fp, "%lld", (long long)val[i]); } FPRINTF(fp, "]"); break; } case DATA_TYPE_UNKNOWN: case DATA_TYPE_DONTCARE: return (-1); } } FPRINTF(fp, "}"); return (0); } zfs-0.8.3/lib/libnvpair/PaxHeaders.151519/libnvpair.c0000644000000000000000000000007413607166132020306 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.678528633 zfs-0.8.3/lib/libnvpair/libnvpair.c0000644016037001603700000010071213607166132020304 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. */ #include #include #include #include #include #include #include #include "libnvpair.h" /* * libnvpair - A tools library for manipulating pairs. * * This library provides routines packing an unpacking nv pairs * for transporting data across process boundaries, transporting * between kernel and userland, and possibly saving onto disk files. */ /* * Print control structure. */ #define DEFINEOP(opname, vtype) \ struct { \ int (*op)(struct nvlist_prtctl *, void *, nvlist_t *, \ const char *, vtype); \ void *arg; \ } opname #define DEFINEARROP(opname, vtype) \ struct { \ int (*op)(struct nvlist_prtctl *, void *, nvlist_t *, \ const char *, vtype, uint_t); \ void *arg; \ } opname struct nvlist_printops { DEFINEOP(print_boolean, int); DEFINEOP(print_boolean_value, boolean_t); DEFINEOP(print_byte, uchar_t); DEFINEOP(print_int8, int8_t); DEFINEOP(print_uint8, uint8_t); DEFINEOP(print_int16, int16_t); DEFINEOP(print_uint16, uint16_t); DEFINEOP(print_int32, int32_t); DEFINEOP(print_uint32, uint32_t); DEFINEOP(print_int64, int64_t); DEFINEOP(print_uint64, uint64_t); DEFINEOP(print_double, double); DEFINEOP(print_string, char *); DEFINEOP(print_hrtime, hrtime_t); DEFINEOP(print_nvlist, nvlist_t *); DEFINEARROP(print_boolean_array, boolean_t *); DEFINEARROP(print_byte_array, uchar_t *); DEFINEARROP(print_int8_array, int8_t *); DEFINEARROP(print_uint8_array, uint8_t *); DEFINEARROP(print_int16_array, int16_t *); DEFINEARROP(print_uint16_array, uint16_t *); DEFINEARROP(print_int32_array, int32_t *); DEFINEARROP(print_uint32_array, uint32_t *); DEFINEARROP(print_int64_array, int64_t *); DEFINEARROP(print_uint64_array, uint64_t *); DEFINEARROP(print_string_array, char **); DEFINEARROP(print_nvlist_array, nvlist_t **); }; struct nvlist_prtctl { FILE *nvprt_fp; /* output destination */ enum nvlist_indent_mode nvprt_indent_mode; /* see above */ int nvprt_indent; /* absolute indent, or tab depth */ int nvprt_indentinc; /* indent or tab increment */ const char *nvprt_nmfmt; /* member name format, max one %s */ const char *nvprt_eomfmt; /* after member format, e.g. "\n" */ const char *nvprt_btwnarrfmt; /* between array members */ int nvprt_btwnarrfmt_nl; /* nvprt_eoamfmt includes newline? */ struct nvlist_printops *nvprt_dfltops; struct nvlist_printops *nvprt_custops; }; #define DFLTPRTOP(pctl, type) \ ((pctl)->nvprt_dfltops->print_##type.op) #define DFLTPRTOPARG(pctl, type) \ ((pctl)->nvprt_dfltops->print_##type.arg) #define CUSTPRTOP(pctl, type) \ ((pctl)->nvprt_custops->print_##type.op) #define CUSTPRTOPARG(pctl, type) \ ((pctl)->nvprt_custops->print_##type.arg) #define RENDER(pctl, type, nvl, name, val) \ { \ int done = 0; \ if ((pctl)->nvprt_custops && CUSTPRTOP(pctl, type)) { \ done = CUSTPRTOP(pctl, type)(pctl, \ CUSTPRTOPARG(pctl, type), nvl, name, val); \ } \ if (!done) { \ (void) DFLTPRTOP(pctl, type)(pctl, \ DFLTPRTOPARG(pctl, type), nvl, name, val); \ } \ (void) fprintf(pctl->nvprt_fp, "%s", pctl->nvprt_eomfmt); \ } #define ARENDER(pctl, type, nvl, name, arrp, count) \ { \ int done = 0; \ if ((pctl)->nvprt_custops && CUSTPRTOP(pctl, type)) { \ done = CUSTPRTOP(pctl, type)(pctl, \ CUSTPRTOPARG(pctl, type), nvl, name, arrp, count); \ } \ if (!done) { \ (void) DFLTPRTOP(pctl, type)(pctl, \ DFLTPRTOPARG(pctl, type), nvl, name, arrp, count); \ } \ (void) fprintf(pctl->nvprt_fp, "%s", pctl->nvprt_eomfmt); \ } static void nvlist_print_with_indent(nvlist_t *, nvlist_prtctl_t); /* * ====================================================================== * | | * | Indentation | * | | * ====================================================================== */ static void indent(nvlist_prtctl_t pctl, int onemore) { int depth; switch (pctl->nvprt_indent_mode) { case NVLIST_INDENT_ABS: (void) fprintf(pctl->nvprt_fp, "%*s", pctl->nvprt_indent + onemore * pctl->nvprt_indentinc, ""); break; case NVLIST_INDENT_TABBED: depth = pctl->nvprt_indent + onemore; while (depth-- > 0) (void) fprintf(pctl->nvprt_fp, "\t"); } } /* * ====================================================================== * | | * | Default nvlist member rendering functions. | * | | * ====================================================================== */ /* * Generate functions to print single-valued nvlist members. * * type_and_variant - suffix to form function name * vtype - C type for the member value * ptype - C type to cast value to for printing * vfmt - format string for pair value, e.g "%d" or "0x%llx" */ #define NVLIST_PRTFUNC(type_and_variant, vtype, ptype, vfmt) \ static int \ nvprint_##type_and_variant(nvlist_prtctl_t pctl, void *private, \ nvlist_t *nvl, const char *name, vtype value) \ { \ FILE *fp = pctl->nvprt_fp; \ NOTE(ARGUNUSED(private)) \ NOTE(ARGUNUSED(nvl)) \ indent(pctl, 1); \ (void) fprintf(fp, pctl->nvprt_nmfmt, name); \ (void) fprintf(fp, vfmt, (ptype)value); \ return (1); \ } NVLIST_PRTFUNC(boolean, int, int, "%d") NVLIST_PRTFUNC(boolean_value, boolean_t, int, "%d") NVLIST_PRTFUNC(byte, uchar_t, uchar_t, "0x%2.2x") NVLIST_PRTFUNC(int8, int8_t, int, "%d") NVLIST_PRTFUNC(uint8, uint8_t, uint8_t, "0x%x") NVLIST_PRTFUNC(int16, int16_t, int16_t, "%d") NVLIST_PRTFUNC(uint16, uint16_t, uint16_t, "0x%x") NVLIST_PRTFUNC(int32, int32_t, int32_t, "%d") NVLIST_PRTFUNC(uint32, uint32_t, uint32_t, "0x%x") NVLIST_PRTFUNC(int64, int64_t, longlong_t, "%lld") NVLIST_PRTFUNC(uint64, uint64_t, u_longlong_t, "0x%llx") NVLIST_PRTFUNC(double, double, double, "0x%f") NVLIST_PRTFUNC(string, char *, char *, "%s") NVLIST_PRTFUNC(hrtime, hrtime_t, hrtime_t, "0x%llx") /* * Generate functions to print array-valued nvlist members. */ #define NVLIST_ARRPRTFUNC(type_and_variant, vtype, ptype, vfmt) \ static int \ nvaprint_##type_and_variant(nvlist_prtctl_t pctl, void *private, \ nvlist_t *nvl, const char *name, vtype *valuep, uint_t count) \ { \ FILE *fp = pctl->nvprt_fp; \ uint_t i; \ NOTE(ARGUNUSED(private)) \ NOTE(ARGUNUSED(nvl)) \ for (i = 0; i < count; i++) { \ if (i == 0 || pctl->nvprt_btwnarrfmt_nl) { \ indent(pctl, 1); \ (void) fprintf(fp, pctl->nvprt_nmfmt, name); \ if (pctl->nvprt_btwnarrfmt_nl) \ (void) fprintf(fp, "[%d]: ", i); \ } \ if (i != 0) \ (void) fprintf(fp, "%s", pctl->nvprt_btwnarrfmt); \ (void) fprintf(fp, vfmt, (ptype)valuep[i]); \ } \ return (1); \ } NVLIST_ARRPRTFUNC(boolean_array, boolean_t, boolean_t, "%d") NVLIST_ARRPRTFUNC(byte_array, uchar_t, uchar_t, "0x%2.2x") NVLIST_ARRPRTFUNC(int8_array, int8_t, int8_t, "%d") NVLIST_ARRPRTFUNC(uint8_array, uint8_t, uint8_t, "0x%x") NVLIST_ARRPRTFUNC(int16_array, int16_t, int16_t, "%d") NVLIST_ARRPRTFUNC(uint16_array, uint16_t, uint16_t, "0x%x") NVLIST_ARRPRTFUNC(int32_array, int32_t, int32_t, "%d") NVLIST_ARRPRTFUNC(uint32_array, uint32_t, uint32_t, "0x%x") NVLIST_ARRPRTFUNC(int64_array, int64_t, longlong_t, "%lld") NVLIST_ARRPRTFUNC(uint64_array, uint64_t, u_longlong_t, "0x%llx") NVLIST_ARRPRTFUNC(string_array, char *, char *, "%s") /*ARGSUSED*/ static int nvprint_nvlist(nvlist_prtctl_t pctl, void *private, nvlist_t *nvl, const char *name, nvlist_t *value) { FILE *fp = pctl->nvprt_fp; indent(pctl, 1); (void) fprintf(fp, "%s = (embedded nvlist)\n", name); pctl->nvprt_indent += pctl->nvprt_indentinc; nvlist_print_with_indent(value, pctl); pctl->nvprt_indent -= pctl->nvprt_indentinc; indent(pctl, 1); (void) fprintf(fp, "(end %s)\n", name); return (1); } /*ARGSUSED*/ static int nvaprint_nvlist_array(nvlist_prtctl_t pctl, void *private, nvlist_t *nvl, const char *name, nvlist_t **valuep, uint_t count) { FILE *fp = pctl->nvprt_fp; uint_t i; indent(pctl, 1); (void) fprintf(fp, "%s = (array of embedded nvlists)\n", name); for (i = 0; i < count; i++) { indent(pctl, 1); (void) fprintf(fp, "(start %s[%d])\n", name, i); pctl->nvprt_indent += pctl->nvprt_indentinc; nvlist_print_with_indent(valuep[i], pctl); pctl->nvprt_indent -= pctl->nvprt_indentinc; indent(pctl, 1); (void) fprintf(fp, "(end %s[%d])\n", name, i); } return (1); } /* * ====================================================================== * | | * | Interfaces that allow control over formatting. | * | | * ====================================================================== */ void nvlist_prtctl_setdest(nvlist_prtctl_t pctl, FILE *fp) { pctl->nvprt_fp = fp; } FILE * nvlist_prtctl_getdest(nvlist_prtctl_t pctl) { return (pctl->nvprt_fp); } void nvlist_prtctl_setindent(nvlist_prtctl_t pctl, enum nvlist_indent_mode mode, int start, int inc) { if (mode < NVLIST_INDENT_ABS || mode > NVLIST_INDENT_TABBED) mode = NVLIST_INDENT_TABBED; if (start < 0) start = 0; if (inc < 0) inc = 1; pctl->nvprt_indent_mode = mode; pctl->nvprt_indent = start; pctl->nvprt_indentinc = inc; } void nvlist_prtctl_doindent(nvlist_prtctl_t pctl, int onemore) { indent(pctl, onemore); } void nvlist_prtctl_setfmt(nvlist_prtctl_t pctl, enum nvlist_prtctl_fmt which, const char *fmt) { switch (which) { case NVLIST_FMT_MEMBER_NAME: if (fmt == NULL) fmt = "%s = "; pctl->nvprt_nmfmt = fmt; break; case NVLIST_FMT_MEMBER_POSTAMBLE: if (fmt == NULL) fmt = "\n"; pctl->nvprt_eomfmt = fmt; break; case NVLIST_FMT_BTWN_ARRAY: if (fmt == NULL) { pctl->nvprt_btwnarrfmt = " "; pctl->nvprt_btwnarrfmt_nl = 0; } else { pctl->nvprt_btwnarrfmt = fmt; pctl->nvprt_btwnarrfmt_nl = (strstr(fmt, "\n") != NULL); } break; default: break; } } void nvlist_prtctl_dofmt(nvlist_prtctl_t pctl, enum nvlist_prtctl_fmt which, ...) { FILE *fp = pctl->nvprt_fp; va_list ap; char *name; va_start(ap, which); switch (which) { case NVLIST_FMT_MEMBER_NAME: name = va_arg(ap, char *); (void) fprintf(fp, pctl->nvprt_nmfmt, name); break; case NVLIST_FMT_MEMBER_POSTAMBLE: (void) fprintf(fp, "%s", pctl->nvprt_eomfmt); break; case NVLIST_FMT_BTWN_ARRAY: (void) fprintf(fp, "%s", pctl->nvprt_btwnarrfmt); break; default: break; } va_end(ap); } /* * ====================================================================== * | | * | Interfaces to allow appointment of replacement rendering functions.| * | | * ====================================================================== */ #define NVLIST_PRINTCTL_REPLACE(type, vtype) \ void \ nvlist_prtctlop_##type(nvlist_prtctl_t pctl, \ int (*func)(nvlist_prtctl_t, void *, nvlist_t *, const char *, vtype), \ void *private) \ { \ CUSTPRTOP(pctl, type) = func; \ CUSTPRTOPARG(pctl, type) = private; \ } NVLIST_PRINTCTL_REPLACE(boolean, int) NVLIST_PRINTCTL_REPLACE(boolean_value, boolean_t) NVLIST_PRINTCTL_REPLACE(byte, uchar_t) NVLIST_PRINTCTL_REPLACE(int8, int8_t) NVLIST_PRINTCTL_REPLACE(uint8, uint8_t) NVLIST_PRINTCTL_REPLACE(int16, int16_t) NVLIST_PRINTCTL_REPLACE(uint16, uint16_t) NVLIST_PRINTCTL_REPLACE(int32, int32_t) NVLIST_PRINTCTL_REPLACE(uint32, uint32_t) NVLIST_PRINTCTL_REPLACE(int64, int64_t) NVLIST_PRINTCTL_REPLACE(uint64, uint64_t) NVLIST_PRINTCTL_REPLACE(double, double) NVLIST_PRINTCTL_REPLACE(string, char *) NVLIST_PRINTCTL_REPLACE(hrtime, hrtime_t) NVLIST_PRINTCTL_REPLACE(nvlist, nvlist_t *) #define NVLIST_PRINTCTL_AREPLACE(type, vtype) \ void \ nvlist_prtctlop_##type(nvlist_prtctl_t pctl, \ int (*func)(nvlist_prtctl_t, void *, nvlist_t *, const char *, vtype, \ uint_t), void *private) \ { \ CUSTPRTOP(pctl, type) = func; \ CUSTPRTOPARG(pctl, type) = private; \ } NVLIST_PRINTCTL_AREPLACE(boolean_array, boolean_t *) NVLIST_PRINTCTL_AREPLACE(byte_array, uchar_t *) NVLIST_PRINTCTL_AREPLACE(int8_array, int8_t *) NVLIST_PRINTCTL_AREPLACE(uint8_array, uint8_t *) NVLIST_PRINTCTL_AREPLACE(int16_array, int16_t *) NVLIST_PRINTCTL_AREPLACE(uint16_array, uint16_t *) NVLIST_PRINTCTL_AREPLACE(int32_array, int32_t *) NVLIST_PRINTCTL_AREPLACE(uint32_array, uint32_t *) NVLIST_PRINTCTL_AREPLACE(int64_array, int64_t *) NVLIST_PRINTCTL_AREPLACE(uint64_array, uint64_t *) NVLIST_PRINTCTL_AREPLACE(string_array, char **) NVLIST_PRINTCTL_AREPLACE(nvlist_array, nvlist_t **) /* * ====================================================================== * | | * | Interfaces to manage nvlist_prtctl_t cookies. | * | | * ====================================================================== */ static const struct nvlist_printops defprtops = { { nvprint_boolean, NULL }, { nvprint_boolean_value, NULL }, { nvprint_byte, NULL }, { nvprint_int8, NULL }, { nvprint_uint8, NULL }, { nvprint_int16, NULL }, { nvprint_uint16, NULL }, { nvprint_int32, NULL }, { nvprint_uint32, NULL }, { nvprint_int64, NULL }, { nvprint_uint64, NULL }, { nvprint_double, NULL }, { nvprint_string, NULL }, { nvprint_hrtime, NULL }, { nvprint_nvlist, NULL }, { nvaprint_boolean_array, NULL }, { nvaprint_byte_array, NULL }, { nvaprint_int8_array, NULL }, { nvaprint_uint8_array, NULL }, { nvaprint_int16_array, NULL }, { nvaprint_uint16_array, NULL }, { nvaprint_int32_array, NULL }, { nvaprint_uint32_array, NULL }, { nvaprint_int64_array, NULL }, { nvaprint_uint64_array, NULL }, { nvaprint_string_array, NULL }, { nvaprint_nvlist_array, NULL }, }; static void prtctl_defaults(FILE *fp, struct nvlist_prtctl *pctl, struct nvlist_printops *ops) { pctl->nvprt_fp = fp; pctl->nvprt_indent_mode = NVLIST_INDENT_TABBED; pctl->nvprt_indent = 0; pctl->nvprt_indentinc = 1; pctl->nvprt_nmfmt = "%s = "; pctl->nvprt_eomfmt = "\n"; pctl->nvprt_btwnarrfmt = " "; pctl->nvprt_btwnarrfmt_nl = 0; pctl->nvprt_dfltops = (struct nvlist_printops *)&defprtops; pctl->nvprt_custops = ops; } nvlist_prtctl_t nvlist_prtctl_alloc(void) { struct nvlist_prtctl *pctl; struct nvlist_printops *ops; if ((pctl = malloc(sizeof (*pctl))) == NULL) return (NULL); if ((ops = calloc(1, sizeof (*ops))) == NULL) { free(pctl); return (NULL); } prtctl_defaults(stdout, pctl, ops); return (pctl); } void nvlist_prtctl_free(nvlist_prtctl_t pctl) { if (pctl != NULL) { free(pctl->nvprt_custops); free(pctl); } } /* * ====================================================================== * | | * | Top-level print request interfaces. | * | | * ====================================================================== */ /* * nvlist_print - Prints elements in an event buffer */ static void nvlist_print_with_indent(nvlist_t *nvl, nvlist_prtctl_t pctl) { FILE *fp = pctl->nvprt_fp; char *name; uint_t nelem; nvpair_t *nvp; if (nvl == NULL) return; indent(pctl, 0); (void) fprintf(fp, "nvlist version: %d\n", NVL_VERSION(nvl)); nvp = nvlist_next_nvpair(nvl, NULL); while (nvp) { data_type_t type = nvpair_type(nvp); name = nvpair_name(nvp); nelem = 0; switch (type) { case DATA_TYPE_BOOLEAN: { RENDER(pctl, boolean, nvl, name, 1); break; } case DATA_TYPE_BOOLEAN_VALUE: { boolean_t val; (void) nvpair_value_boolean_value(nvp, &val); RENDER(pctl, boolean_value, nvl, name, val); break; } case DATA_TYPE_BYTE: { uchar_t val; (void) nvpair_value_byte(nvp, &val); RENDER(pctl, byte, nvl, name, val); break; } case DATA_TYPE_INT8: { int8_t val; (void) nvpair_value_int8(nvp, &val); RENDER(pctl, int8, nvl, name, val); break; } case DATA_TYPE_UINT8: { uint8_t val; (void) nvpair_value_uint8(nvp, &val); RENDER(pctl, uint8, nvl, name, val); break; } case DATA_TYPE_INT16: { int16_t val; (void) nvpair_value_int16(nvp, &val); RENDER(pctl, int16, nvl, name, val); break; } case DATA_TYPE_UINT16: { uint16_t val; (void) nvpair_value_uint16(nvp, &val); RENDER(pctl, uint16, nvl, name, val); break; } case DATA_TYPE_INT32: { int32_t val; (void) nvpair_value_int32(nvp, &val); RENDER(pctl, int32, nvl, name, val); break; } case DATA_TYPE_UINT32: { uint32_t val; (void) nvpair_value_uint32(nvp, &val); RENDER(pctl, uint32, nvl, name, val); break; } case DATA_TYPE_INT64: { int64_t val; (void) nvpair_value_int64(nvp, &val); RENDER(pctl, int64, nvl, name, val); break; } case DATA_TYPE_UINT64: { uint64_t val; (void) nvpair_value_uint64(nvp, &val); RENDER(pctl, uint64, nvl, name, val); break; } case DATA_TYPE_DOUBLE: { double val; (void) nvpair_value_double(nvp, &val); RENDER(pctl, double, nvl, name, val); break; } case DATA_TYPE_STRING: { char *val; (void) nvpair_value_string(nvp, &val); RENDER(pctl, string, nvl, name, val); break; } case DATA_TYPE_BOOLEAN_ARRAY: { boolean_t *val; (void) nvpair_value_boolean_array(nvp, &val, &nelem); ARENDER(pctl, boolean_array, nvl, name, val, nelem); break; } case DATA_TYPE_BYTE_ARRAY: { uchar_t *val; (void) nvpair_value_byte_array(nvp, &val, &nelem); ARENDER(pctl, byte_array, nvl, name, val, nelem); break; } case DATA_TYPE_INT8_ARRAY: { int8_t *val; (void) nvpair_value_int8_array(nvp, &val, &nelem); ARENDER(pctl, int8_array, nvl, name, val, nelem); break; } case DATA_TYPE_UINT8_ARRAY: { uint8_t *val; (void) nvpair_value_uint8_array(nvp, &val, &nelem); ARENDER(pctl, uint8_array, nvl, name, val, nelem); break; } case DATA_TYPE_INT16_ARRAY: { int16_t *val; (void) nvpair_value_int16_array(nvp, &val, &nelem); ARENDER(pctl, int16_array, nvl, name, val, nelem); break; } case DATA_TYPE_UINT16_ARRAY: { uint16_t *val; (void) nvpair_value_uint16_array(nvp, &val, &nelem); ARENDER(pctl, uint16_array, nvl, name, val, nelem); break; } case DATA_TYPE_INT32_ARRAY: { int32_t *val; (void) nvpair_value_int32_array(nvp, &val, &nelem); ARENDER(pctl, int32_array, nvl, name, val, nelem); break; } case DATA_TYPE_UINT32_ARRAY: { uint32_t *val; (void) nvpair_value_uint32_array(nvp, &val, &nelem); ARENDER(pctl, uint32_array, nvl, name, val, nelem); break; } case DATA_TYPE_INT64_ARRAY: { int64_t *val; (void) nvpair_value_int64_array(nvp, &val, &nelem); ARENDER(pctl, int64_array, nvl, name, val, nelem); break; } case DATA_TYPE_UINT64_ARRAY: { uint64_t *val; (void) nvpair_value_uint64_array(nvp, &val, &nelem); ARENDER(pctl, uint64_array, nvl, name, val, nelem); break; } case DATA_TYPE_STRING_ARRAY: { char **val; (void) nvpair_value_string_array(nvp, &val, &nelem); ARENDER(pctl, string_array, nvl, name, val, nelem); break; } case DATA_TYPE_HRTIME: { hrtime_t val; (void) nvpair_value_hrtime(nvp, &val); RENDER(pctl, hrtime, nvl, name, val); break; } case DATA_TYPE_NVLIST: { nvlist_t *val; (void) nvpair_value_nvlist(nvp, &val); RENDER(pctl, nvlist, nvl, name, val); break; } case DATA_TYPE_NVLIST_ARRAY: { nvlist_t **val; (void) nvpair_value_nvlist_array(nvp, &val, &nelem); ARENDER(pctl, nvlist_array, nvl, name, val, nelem); break; } default: (void) fprintf(fp, " unknown data type (%d)", type); break; } nvp = nvlist_next_nvpair(nvl, nvp); } } void nvlist_print(FILE *fp, nvlist_t *nvl) { struct nvlist_prtctl pc; prtctl_defaults(fp, &pc, NULL); nvlist_print_with_indent(nvl, &pc); } void nvlist_prt(nvlist_t *nvl, nvlist_prtctl_t pctl) { nvlist_print_with_indent(nvl, pctl); } #define NVP(elem, type, vtype, ptype, format) { \ vtype value; \ \ (void) nvpair_value_##type(elem, &value); \ (void) printf("%*s%s: " format "\n", indent, "", \ nvpair_name(elem), (ptype)value); \ } #define NVPA(elem, type, vtype, ptype, format) { \ uint_t i, count; \ vtype *value; \ \ (void) nvpair_value_##type(elem, &value, &count); \ for (i = 0; i < count; i++) { \ (void) printf("%*s%s[%d]: " format "\n", indent, "", \ nvpair_name(elem), i, (ptype)value[i]); \ } \ } /* * Similar to nvlist_print() but handles arrays slightly differently. */ void dump_nvlist(nvlist_t *list, int indent) { nvpair_t *elem = NULL; boolean_t bool_value; nvlist_t *nvlist_value; nvlist_t **nvlist_array_value; uint_t i, count; if (list == NULL) { return; } while ((elem = nvlist_next_nvpair(list, elem)) != NULL) { switch (nvpair_type(elem)) { case DATA_TYPE_BOOLEAN: (void) printf("%*s%s\n", indent, "", nvpair_name(elem)); break; case DATA_TYPE_BOOLEAN_VALUE: (void) nvpair_value_boolean_value(elem, &bool_value); (void) printf("%*s%s: %s\n", indent, "", nvpair_name(elem), bool_value ? "true" : "false"); break; case DATA_TYPE_BYTE: NVP(elem, byte, uchar_t, int, "%u"); break; case DATA_TYPE_INT8: NVP(elem, int8, int8_t, int, "%d"); break; case DATA_TYPE_UINT8: NVP(elem, uint8, uint8_t, int, "%u"); break; case DATA_TYPE_INT16: NVP(elem, int16, int16_t, int, "%d"); break; case DATA_TYPE_UINT16: NVP(elem, uint16, uint16_t, int, "%u"); break; case DATA_TYPE_INT32: NVP(elem, int32, int32_t, long, "%ld"); break; case DATA_TYPE_UINT32: NVP(elem, uint32, uint32_t, ulong_t, "%lu"); break; case DATA_TYPE_INT64: NVP(elem, int64, int64_t, longlong_t, "%lld"); break; case DATA_TYPE_UINT64: NVP(elem, uint64, uint64_t, u_longlong_t, "%llu"); break; case DATA_TYPE_STRING: NVP(elem, string, char *, char *, "'%s'"); break; case DATA_TYPE_BYTE_ARRAY: NVPA(elem, byte_array, uchar_t, int, "%u"); break; case DATA_TYPE_INT8_ARRAY: NVPA(elem, int8_array, int8_t, int, "%d"); break; case DATA_TYPE_UINT8_ARRAY: NVPA(elem, uint8_array, uint8_t, int, "%u"); break; case DATA_TYPE_INT16_ARRAY: NVPA(elem, int16_array, int16_t, int, "%d"); break; case DATA_TYPE_UINT16_ARRAY: NVPA(elem, uint16_array, uint16_t, int, "%u"); break; case DATA_TYPE_INT32_ARRAY: NVPA(elem, int32_array, int32_t, long, "%ld"); break; case DATA_TYPE_UINT32_ARRAY: NVPA(elem, uint32_array, uint32_t, ulong_t, "%lu"); break; case DATA_TYPE_INT64_ARRAY: NVPA(elem, int64_array, int64_t, longlong_t, "%lld"); break; case DATA_TYPE_UINT64_ARRAY: NVPA(elem, uint64_array, uint64_t, u_longlong_t, "%llu"); break; case DATA_TYPE_STRING_ARRAY: NVPA(elem, string_array, char *, char *, "'%s'"); break; case DATA_TYPE_NVLIST: (void) nvpair_value_nvlist(elem, &nvlist_value); (void) printf("%*s%s:\n", indent, "", nvpair_name(elem)); dump_nvlist(nvlist_value, indent + 4); break; case DATA_TYPE_NVLIST_ARRAY: (void) nvpair_value_nvlist_array(elem, &nvlist_array_value, &count); for (i = 0; i < count; i++) { (void) printf("%*s%s[%u]:\n", indent, "", nvpair_name(elem), i); dump_nvlist(nvlist_array_value[i], indent + 4); } break; default: (void) printf(dgettext(TEXT_DOMAIN, "bad config type " "%d for %s\n"), nvpair_type(elem), nvpair_name(elem)); } } } /* * ====================================================================== * | | * | Misc private interface. | * | | * ====================================================================== */ /* * Determine if string 'value' matches 'nvp' value. The 'value' string is * converted, depending on the type of 'nvp', prior to match. For numeric * types, a radix independent sscanf conversion of 'value' is used. If 'nvp' * is an array type, 'ai' is the index into the array against which we are * checking for match. If nvp is of DATA_TYPE_STRING*, the caller can pass * in a regex_t compilation of value in 'value_regex' to trigger regular * expression string match instead of simple strcmp(). * * Return 1 on match, 0 on no-match, and -1 on error. If the error is * related to value syntax error and 'ep' is non-NULL, *ep will point into * the 'value' string at the location where the error exists. * * NOTE: It may be possible to move the non-regex_t version of this into * common code used by library/kernel/boot. */ int nvpair_value_match_regex(nvpair_t *nvp, int ai, char *value, regex_t *value_regex, char **ep) { char *evalue; uint_t a_len; int sr; if (ep) *ep = NULL; if ((nvp == NULL) || (value == NULL)) return (-1); /* error fail match - invalid args */ /* make sure array and index combination make sense */ if ((nvpair_type_is_array(nvp) && (ai < 0)) || (!nvpair_type_is_array(nvp) && (ai >= 0))) return (-1); /* error fail match - bad index */ /* non-string values should be single 'chunk' */ if ((nvpair_type(nvp) != DATA_TYPE_STRING) && (nvpair_type(nvp) != DATA_TYPE_STRING_ARRAY)) { value += strspn(value, " \t"); evalue = value + strcspn(value, " \t"); if (*evalue) { if (ep) *ep = evalue; return (-1); /* error fail match - syntax */ } } sr = EOF; switch (nvpair_type(nvp)) { case DATA_TYPE_STRING: { char *val; /* check string value for match */ if (nvpair_value_string(nvp, &val) == 0) { if (value_regex) { if (regexec(value_regex, val, (size_t)0, NULL, 0) == 0) return (1); /* match */ } else { if (strcmp(value, val) == 0) return (1); /* match */ } } break; } case DATA_TYPE_STRING_ARRAY: { char **val_array; /* check indexed string value of array for match */ if ((nvpair_value_string_array(nvp, &val_array, &a_len) == 0) && (ai < a_len)) { if (value_regex) { if (regexec(value_regex, val_array[ai], (size_t)0, NULL, 0) == 0) return (1); } else { if (strcmp(value, val_array[ai]) == 0) return (1); } } break; } case DATA_TYPE_BYTE: { uchar_t val, val_arg; /* scanf uchar_t from value and check for match */ sr = sscanf(value, "%c", &val_arg); if ((sr == 1) && (nvpair_value_byte(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_BYTE_ARRAY: { uchar_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%c", &val_arg); if ((sr == 1) && (nvpair_value_byte_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_INT8: { int8_t val, val_arg; /* scanf int8_t from value and check for match */ sr = sscanf(value, "%"SCNi8, &val_arg); if ((sr == 1) && (nvpair_value_int8(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_INT8_ARRAY: { int8_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi8, &val_arg); if ((sr == 1) && (nvpair_value_int8_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_UINT8: { uint8_t val, val_arg; /* scanf uint8_t from value and check for match */ sr = sscanf(value, "%"SCNi8, (int8_t *)&val_arg); if ((sr == 1) && (nvpair_value_uint8(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_UINT8_ARRAY: { uint8_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi8, (int8_t *)&val_arg); if ((sr == 1) && (nvpair_value_uint8_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_INT16: { int16_t val, val_arg; /* scanf int16_t from value and check for match */ sr = sscanf(value, "%"SCNi16, &val_arg); if ((sr == 1) && (nvpair_value_int16(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_INT16_ARRAY: { int16_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi16, &val_arg); if ((sr == 1) && (nvpair_value_int16_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_UINT16: { uint16_t val, val_arg; /* scanf uint16_t from value and check for match */ sr = sscanf(value, "%"SCNi16, (int16_t *)&val_arg); if ((sr == 1) && (nvpair_value_uint16(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_UINT16_ARRAY: { uint16_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi16, (int16_t *)&val_arg); if ((sr == 1) && (nvpair_value_uint16_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_INT32: { int32_t val, val_arg; /* scanf int32_t from value and check for match */ sr = sscanf(value, "%"SCNi32, &val_arg); if ((sr == 1) && (nvpair_value_int32(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_INT32_ARRAY: { int32_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi32, &val_arg); if ((sr == 1) && (nvpair_value_int32_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_UINT32: { uint32_t val, val_arg; /* scanf uint32_t from value and check for match */ sr = sscanf(value, "%"SCNi32, (int32_t *)&val_arg); if ((sr == 1) && (nvpair_value_uint32(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_UINT32_ARRAY: { uint32_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi32, (int32_t *)&val_arg); if ((sr == 1) && (nvpair_value_uint32_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_INT64: { int64_t val, val_arg; /* scanf int64_t from value and check for match */ sr = sscanf(value, "%"SCNi64, &val_arg); if ((sr == 1) && (nvpair_value_int64(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_INT64_ARRAY: { int64_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi64, &val_arg); if ((sr == 1) && (nvpair_value_int64_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_UINT64: { uint64_t val_arg, val; /* scanf uint64_t from value and check for match */ sr = sscanf(value, "%"SCNi64, (int64_t *)&val_arg); if ((sr == 1) && (nvpair_value_uint64(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_UINT64_ARRAY: { uint64_t *val_array, val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi64, (int64_t *)&val_arg); if ((sr == 1) && (nvpair_value_uint64_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_BOOLEAN_VALUE: { int32_t val_arg; boolean_t val; /* scanf boolean_t from value and check for match */ sr = sscanf(value, "%"SCNi32, (int32_t *)&val_arg); if ((sr == 1) && (nvpair_value_boolean_value(nvp, &val) == 0) && (val == val_arg)) return (1); break; } case DATA_TYPE_BOOLEAN_ARRAY: { boolean_t *val_array; int32_t val_arg; /* check indexed value of array for match */ sr = sscanf(value, "%"SCNi32, (int32_t *)&val_arg); if ((sr == 1) && (nvpair_value_boolean_array(nvp, &val_array, &a_len) == 0) && (ai < a_len) && (val_array[ai] == val_arg)) return (1); break; } case DATA_TYPE_HRTIME: case DATA_TYPE_NVLIST: case DATA_TYPE_NVLIST_ARRAY: case DATA_TYPE_BOOLEAN: case DATA_TYPE_DOUBLE: case DATA_TYPE_UNKNOWN: default: /* * unknown/unsupported data type */ return (-1); /* error fail match */ } /* * check to see if sscanf failed conversion, return approximate * pointer to problem */ if (sr != 1) { if (ep) *ep = value; return (-1); /* error fail match - syntax */ } return (0); /* fail match */ } int nvpair_value_match(nvpair_t *nvp, int ai, char *value, char **ep) { return (nvpair_value_match_regex(nvp, ai, value, NULL, ep)); } zfs-0.8.3/lib/libnvpair/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775020217 xustar000000000000000030 mtime=1579730429.763150737 30 atime=1579730451.180838393 30 ctime=1579730472.675528537 zfs-0.8.3/lib/libnvpair/Makefile.in0000664016037001603700000007414713612142775020240 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libnvpair ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libnvpair_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_1 = libnvpair.lo libnvpair_json.lo nvpair_alloc_system.lo am__objects_2 = nvpair_alloc_fixed.lo nvpair.lo fnvpair.lo nodist_libnvpair_la_OBJECTS = $(am__objects_1) $(am__objects_2) libnvpair_la_OBJECTS = $(nodist_libnvpair_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent libnvpair_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libnvpair_la_LDFLAGS) $(LDFLAGS) -o $@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libnvpair_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = \ $(top_srcdir)/module/nvpair \ $(top_srcdir)/lib/libnvpair ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent # Includes kernel code, generate warnings for large stack frames # and required CFLAGS for libtirpc AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) $(FRAME_LARGER_THAN) \ $(LIBTIRPC_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) lib_LTLIBRARIES = libnvpair.la USER_C = \ libnvpair.c \ libnvpair_json.c \ nvpair_alloc_system.c KERNEL_C = \ nvpair_alloc_fixed.c \ nvpair.c \ fnvpair.c nodist_libnvpair_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) libnvpair_la_LIBADD = $(LIBTIRPC_LIBS) libnvpair_la_LDFLAGS = -version-info 1:1:0 EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libnvpair/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libnvpair/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libnvpair.la: $(libnvpair_la_OBJECTS) $(libnvpair_la_DEPENDENCIES) $(AM_V_CCLD)$(libnvpair_la_LINK) -rpath $(libdir) $(libnvpair_la_OBJECTS) $(libnvpair_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fnvpair.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnvpair.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libnvpair_json.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nvpair.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nvpair_alloc_fixed.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nvpair_alloc_system.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/libzutil0000644000000000000000000000013213612143050015730 xustar000000000000000030 mtime=1579730472.485522436 30 atime=1579730489.073055035 30 ctime=1579730472.485522436 zfs-0.8.3/lib/libzutil/0000775016037001603700000000000013612143050016011 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libzutil/PaxHeaders.151519/zutil_device_path.c0000644000000000000000000000007413607166147021700 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.478522212 zfs-0.8.3/lib/libzutil/zutil_device_path.c0000644016037001603700000003546313607166147021710 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_LIBUDEV #include #endif /* * Append partition suffix to an otherwise fully qualified device path. * This is used to generate the name the full path as its stored in * ZPOOL_CONFIG_PATH for whole disk devices. On success the new length * of 'path' will be returned on error a negative value is returned. */ int zfs_append_partition(char *path, size_t max_len) { int len = strlen(path); if ((strncmp(path, UDISK_ROOT, strlen(UDISK_ROOT)) == 0) || (strncmp(path, ZVOL_ROOT, strlen(ZVOL_ROOT)) == 0)) { if (len + 6 >= max_len) return (-1); (void) strcat(path, "-part1"); len += 6; } else { if (len + 2 >= max_len) return (-1); if (isdigit(path[len-1])) { (void) strcat(path, "p1"); len += 2; } else { (void) strcat(path, "1"); len += 1; } } return (len); } /* * Given a shorthand device name check if a file by that name exists in any * of the 'zpool_default_import_path' or ZPOOL_IMPORT_PATH directories. If * one is found, store its fully qualified path in the 'path' buffer passed * by the caller and return 0, otherwise return an error. */ int zfs_resolve_shortname(const char *name, char *path, size_t len) { int i, error = -1; char *dir, *env, *envdup; env = getenv("ZPOOL_IMPORT_PATH"); errno = ENOENT; if (env) { envdup = strdup(env); dir = strtok(envdup, ":"); while (dir && error) { (void) snprintf(path, len, "%s/%s", dir, name); error = access(path, F_OK); dir = strtok(NULL, ":"); } free(envdup); } else { const char * const *zpool_default_import_path; size_t count; zpool_default_import_path = zpool_default_search_paths(&count); for (i = 0; i < count && error < 0; i++) { (void) snprintf(path, len, "%s/%s", zpool_default_import_path[i], name); error = access(path, F_OK); } } return (error ? ENOENT : 0); } /* * Given a shorthand device name look for a match against 'cmp_name'. This * is done by checking all prefix expansions using either the default * 'zpool_default_import_paths' or the ZPOOL_IMPORT_PATH environment * variable. Proper partition suffixes will be appended if this is a * whole disk. When a match is found 0 is returned otherwise ENOENT. */ static int zfs_strcmp_shortname(const char *name, const char *cmp_name, int wholedisk) { int path_len, cmp_len, i = 0, error = ENOENT; char *dir, *env, *envdup = NULL; char path_name[MAXPATHLEN]; const char * const *zpool_default_import_path; size_t count; zpool_default_import_path = zpool_default_search_paths(&count); cmp_len = strlen(cmp_name); env = getenv("ZPOOL_IMPORT_PATH"); if (env) { envdup = strdup(env); dir = strtok(envdup, ":"); } else { dir = (char *)zpool_default_import_path[i]; } while (dir) { /* Trim trailing directory slashes from ZPOOL_IMPORT_PATH */ if (env) { while (dir[strlen(dir)-1] == '/') dir[strlen(dir)-1] = '\0'; } path_len = snprintf(path_name, MAXPATHLEN, "%s/%s", dir, name); if (wholedisk) path_len = zfs_append_partition(path_name, MAXPATHLEN); if ((path_len == cmp_len) && strcmp(path_name, cmp_name) == 0) { error = 0; break; } if (env) { dir = strtok(NULL, ":"); } else if (++i < count) { dir = (char *)zpool_default_import_path[i]; } else { dir = NULL; } } if (env) free(envdup); return (error); } /* * Given either a shorthand or fully qualified path name look for a match * against 'cmp'. The passed name will be expanded as needed for comparison * purposes and redundant slashes stripped to ensure an accurate match. */ int zfs_strcmp_pathname(const char *name, const char *cmp, int wholedisk) { int path_len, cmp_len; char path_name[MAXPATHLEN]; char cmp_name[MAXPATHLEN]; char *dir, *dup; /* Strip redundant slashes if one exists due to ZPOOL_IMPORT_PATH */ memset(cmp_name, 0, MAXPATHLEN); dup = strdup(cmp); dir = strtok(dup, "/"); while (dir) { strlcat(cmp_name, "/", sizeof (cmp_name)); strlcat(cmp_name, dir, sizeof (cmp_name)); dir = strtok(NULL, "/"); } free(dup); if (name[0] != '/') return (zfs_strcmp_shortname(name, cmp_name, wholedisk)); (void) strlcpy(path_name, name, MAXPATHLEN); path_len = strlen(path_name); cmp_len = strlen(cmp_name); if (wholedisk) { path_len = zfs_append_partition(path_name, MAXPATHLEN); if (path_len == -1) return (ENOMEM); } if ((path_len != cmp_len) || strcmp(path_name, cmp_name)) return (ENOENT); return (0); } /* * Allocate and return the underlying device name for a device mapper device. * If a device mapper device maps to multiple devices, return the first device. * * For example, dm_name = "/dev/dm-0" could return "/dev/sda". Symlinks to a * DM device (like /dev/disk/by-vdev/A0) are also allowed. * * Returns device name, or NULL on error or no match. If dm_name is not a DM * device then return NULL. * * NOTE: The returned name string must be *freed*. */ static char * dm_get_underlying_path(const char *dm_name) { DIR *dp = NULL; struct dirent *ep; char *realp; char *tmp = NULL; char *path = NULL; char *dev_str; int size; if (dm_name == NULL) return (NULL); /* dm name may be a symlink (like /dev/disk/by-vdev/A0) */ realp = realpath(dm_name, NULL); if (realp == NULL) return (NULL); /* * If they preface 'dev' with a path (like "/dev") then strip it off. * We just want the 'dm-N' part. */ tmp = strrchr(realp, '/'); if (tmp != NULL) dev_str = tmp + 1; /* +1 since we want the chr after '/' */ else dev_str = tmp; size = asprintf(&tmp, "/sys/block/%s/slaves/", dev_str); if (size == -1 || !tmp) goto end; dp = opendir(tmp); if (dp == NULL) goto end; /* Return first sd* entry in /sys/block/dm-N/slaves/ */ while ((ep = readdir(dp))) { if (ep->d_type != DT_DIR) { /* skip "." and ".." dirs */ size = asprintf(&path, "/dev/%s", ep->d_name); break; } } end: if (dp != NULL) closedir(dp); free(tmp); free(realp); return (path); } /* * Return 1 if device is a device mapper or multipath device. * Return 0 if not. */ int zfs_dev_is_dm(const char *dev_name) { char *tmp; tmp = dm_get_underlying_path(dev_name); if (tmp == NULL) return (0); free(tmp); return (1); } /* * By "whole disk" we mean an entire physical disk (something we can * label, toggle the write cache on, etc.) as opposed to the full * capacity of a pseudo-device such as lofi or did. We act as if we * are labeling the disk, which should be a pretty good test of whether * it's a viable device or not. Returns B_TRUE if it is and B_FALSE if * it isn't. */ int zfs_dev_is_whole_disk(const char *dev_name) { struct dk_gpt *label; int fd; if ((fd = open(dev_name, O_RDONLY | O_DIRECT)) < 0) return (0); if (efi_alloc_and_init(fd, EFI_NUMPAR, &label) != 0) { (void) close(fd); return (0); } efi_free(label); (void) close(fd); return (1); } /* * Lookup the underlying device for a device name * * Often you'll have a symlink to a device, a partition device, * or a multipath device, and want to look up the underlying device. * This function returns the underlying device name. If the device * name is already the underlying device, then just return the same * name. If the device is a DM device with multiple underlying devices * then return the first one. * * For example: * * 1. /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001 -> ../../sda * dev_name: /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001 * returns: /dev/sda * * 2. /dev/mapper/mpatha (made up of /dev/sda and /dev/sdb) * dev_name: /dev/mapper/mpatha * returns: /dev/sda (first device) * * 3. /dev/sda (already the underlying device) * dev_name: /dev/sda * returns: /dev/sda * * 4. /dev/dm-3 (mapped to /dev/sda) * dev_name: /dev/dm-3 * returns: /dev/sda * * 5. /dev/disk/by-id/scsi-0QEMU_drive-scsi0-0-0-0-part9 -> ../../sdb9 * dev_name: /dev/disk/by-id/scsi-0QEMU_drive-scsi0-0-0-0-part9 * returns: /dev/sdb * * 6. /dev/disk/by-uuid/5df030cf-3cd9-46e4-8e99-3ccb462a4e9a -> ../dev/sda2 * dev_name: /dev/disk/by-uuid/5df030cf-3cd9-46e4-8e99-3ccb462a4e9a * returns: /dev/sda * * Returns underlying device name, or NULL on error or no match. * * NOTE: The returned name string must be *freed*. */ char * zfs_get_underlying_path(const char *dev_name) { char *name = NULL; char *tmp; if (dev_name == NULL) return (NULL); tmp = dm_get_underlying_path(dev_name); /* dev_name not a DM device, so just un-symlinkize it */ if (tmp == NULL) tmp = realpath(dev_name, NULL); if (tmp != NULL) { name = zfs_strip_partition_path(tmp); free(tmp); } return (name); } /* * Given a dev name like "sda", return the full enclosure sysfs path to * the disk. You can also pass in the name with "/dev" prepended * to it (like /dev/sda). * * For example, disk "sda" in enclosure slot 1: * dev: "sda" * returns: "/sys/class/enclosure/1:0:3:0/Slot 1" * * 'dev' must be a non-devicemapper device. * * Returned string must be freed. */ char * zfs_get_enclosure_sysfs_path(const char *dev_name) { DIR *dp = NULL; struct dirent *ep; char buf[MAXPATHLEN]; char *tmp1 = NULL; char *tmp2 = NULL; char *tmp3 = NULL; char *path = NULL; size_t size; int tmpsize; if (dev_name == NULL) return (NULL); /* If they preface 'dev' with a path (like "/dev") then strip it off */ tmp1 = strrchr(dev_name, '/'); if (tmp1 != NULL) dev_name = tmp1 + 1; /* +1 since we want the chr after '/' */ tmpsize = asprintf(&tmp1, "/sys/block/%s/device", dev_name); if (tmpsize == -1 || tmp1 == NULL) { tmp1 = NULL; goto end; } dp = opendir(tmp1); if (dp == NULL) { tmp1 = NULL; /* To make free() at the end a NOP */ goto end; } /* * Look though all sysfs entries in /sys/block//device for * the enclosure symlink. */ while ((ep = readdir(dp))) { /* Ignore everything that's not our enclosure_device link */ if (strstr(ep->d_name, "enclosure_device") == NULL) continue; if (asprintf(&tmp2, "%s/%s", tmp1, ep->d_name) == -1 || tmp2 == NULL) break; size = readlink(tmp2, buf, sizeof (buf)); /* Did readlink fail or crop the link name? */ if (size == -1 || size >= sizeof (buf)) { free(tmp2); tmp2 = NULL; /* To make free() at the end a NOP */ break; } /* * We got a valid link. readlink() doesn't terminate strings * so we have to do it. */ buf[size] = '\0'; /* * Our link will look like: * * "../../../../port-11:1:2/..STUFF../enclosure/1:0:3:0/SLOT 1" * * We want to grab the "enclosure/1:0:3:0/SLOT 1" part */ tmp3 = strstr(buf, "enclosure"); if (tmp3 == NULL) break; if (asprintf(&path, "/sys/class/%s", tmp3) == -1) { /* If asprintf() fails, 'path' is undefined */ path = NULL; break; } if (path == NULL) break; } end: free(tmp2); free(tmp1); if (dp != NULL) closedir(dp); return (path); } /* * Remove partition suffix from a vdev path. Partition suffixes may take three * forms: "-partX", "pX", or "X", where X is a string of digits. The second * case only occurs when the suffix is preceded by a digit, i.e. "md0p0" The * third case only occurs when preceded by a string matching the regular * expression "^([hsv]|xv)d[a-z]+", i.e. a scsi, ide, virtio or xen disk. * * caller must free the returned string */ char * zfs_strip_partition(char *path) { char *tmp = strdup(path); char *part = NULL, *d = NULL; if (!tmp) return (NULL); if ((part = strstr(tmp, "-part")) && part != tmp) { d = part + 5; } else if ((part = strrchr(tmp, 'p')) && part > tmp + 1 && isdigit(*(part-1))) { d = part + 1; } else if ((tmp[0] == 'h' || tmp[0] == 's' || tmp[0] == 'v') && tmp[1] == 'd') { for (d = &tmp[2]; isalpha(*d); part = ++d) { } } else if (strncmp("xvd", tmp, 3) == 0) { for (d = &tmp[3]; isalpha(*d); part = ++d) { } } if (part && d && *d != '\0') { for (; isdigit(*d); d++) { } if (*d == '\0') *part = '\0'; } return (tmp); } /* * Same as zfs_strip_partition, but allows "/dev/" to be in the pathname * * path: /dev/sda1 * returns: /dev/sda * * Returned string must be freed. */ char * zfs_strip_partition_path(char *path) { char *newpath = strdup(path); char *sd_offset; char *new_sd; if (!newpath) return (NULL); /* Point to "sda1" part of "/dev/sda1" */ sd_offset = strrchr(newpath, '/') + 1; /* Get our new name "sda" */ new_sd = zfs_strip_partition(sd_offset); if (!new_sd) { free(newpath); return (NULL); } /* Paste the "sda" where "sda1" was */ strlcpy(sd_offset, new_sd, strlen(sd_offset) + 1); /* Free temporary "sda" */ free(new_sd); return (newpath); } #ifdef HAVE_LIBUDEV /* * A disk is considered a multipath whole disk when: * DEVNAME key value has "dm-" * DM_NAME key value has "mpath" prefix * DM_UUID key exists * ID_PART_TABLE_TYPE key does not exist or is not gpt */ static boolean_t udev_mpath_whole_disk(struct udev_device *dev) { const char *devname, *type, *uuid; devname = udev_device_get_property_value(dev, "DEVNAME"); type = udev_device_get_property_value(dev, "ID_PART_TABLE_TYPE"); uuid = udev_device_get_property_value(dev, "DM_UUID"); if ((devname != NULL && strncmp(devname, "/dev/dm-", 8) == 0) && ((type == NULL) || (strcmp(type, "gpt") != 0)) && (uuid != NULL)) { return (B_TRUE); } return (B_FALSE); } /* * Check if a disk is effectively a multipath whole disk */ boolean_t is_mpath_whole_disk(const char *path) { struct udev *udev; struct udev_device *dev = NULL; char nodepath[MAXPATHLEN]; char *sysname; boolean_t wholedisk = B_FALSE; if (realpath(path, nodepath) == NULL) return (B_FALSE); sysname = strrchr(nodepath, '/') + 1; if (strncmp(sysname, "dm-", 3) != 0) return (B_FALSE); if ((udev = udev_new()) == NULL) return (B_FALSE); if ((dev = udev_device_new_from_subsystem_sysname(udev, "block", sysname)) == NULL) { udev_device_unref(dev); return (B_FALSE); } wholedisk = udev_mpath_whole_disk(dev); udev_device_unref(dev); return (wholedisk); } #endif zfs-0.8.3/lib/libzutil/PaxHeaders.151519/zutil_pool.c0000644000000000000000000000007413607166132020370 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.485522436 zfs-0.8.3/lib/libzutil/zutil_pool.c0000644016037001603700000000777513607166132020405 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ #include #include #include #include #include #include static void dump_ddt_stat(const ddt_stat_t *dds, int h) { char refcnt[6]; char blocks[6], lsize[6], psize[6], dsize[6]; char ref_blocks[6], ref_lsize[6], ref_psize[6], ref_dsize[6]; if (dds == NULL || dds->dds_blocks == 0) return; if (h == -1) (void) strcpy(refcnt, "Total"); else zfs_nicenum(1ULL << h, refcnt, sizeof (refcnt)); zfs_nicenum(dds->dds_blocks, blocks, sizeof (blocks)); zfs_nicebytes(dds->dds_lsize, lsize, sizeof (lsize)); zfs_nicebytes(dds->dds_psize, psize, sizeof (psize)); zfs_nicebytes(dds->dds_dsize, dsize, sizeof (dsize)); zfs_nicenum(dds->dds_ref_blocks, ref_blocks, sizeof (ref_blocks)); zfs_nicebytes(dds->dds_ref_lsize, ref_lsize, sizeof (ref_lsize)); zfs_nicebytes(dds->dds_ref_psize, ref_psize, sizeof (ref_psize)); zfs_nicebytes(dds->dds_ref_dsize, ref_dsize, sizeof (ref_dsize)); (void) printf("%6s %6s %5s %5s %5s %6s %5s %5s %5s\n", refcnt, blocks, lsize, psize, dsize, ref_blocks, ref_lsize, ref_psize, ref_dsize); } /* * Print the DDT histogram and the column totals. */ void zpool_dump_ddt(const ddt_stat_t *dds_total, const ddt_histogram_t *ddh) { int h; (void) printf("\n"); (void) printf("bucket " " allocated " " referenced \n"); (void) printf("______ " "______________________________ " "______________________________\n"); (void) printf("%6s %6s %5s %5s %5s %6s %5s %5s %5s\n", "refcnt", "blocks", "LSIZE", "PSIZE", "DSIZE", "blocks", "LSIZE", "PSIZE", "DSIZE"); (void) printf("%6s %6s %5s %5s %5s %6s %5s %5s %5s\n", "------", "------", "-----", "-----", "-----", "------", "-----", "-----", "-----"); for (h = 0; h < 64; h++) dump_ddt_stat(&ddh->ddh_stat[h], h); dump_ddt_stat(dds_total, -1); (void) printf("\n"); } /* * Process the buffer of nvlists, unpacking and storing each nvlist record * into 'records'. 'leftover' is set to the number of bytes that weren't * processed as there wasn't a complete record. */ int zpool_history_unpack(char *buf, uint64_t bytes_read, uint64_t *leftover, nvlist_t ***records, uint_t *numrecords) { uint64_t reclen; nvlist_t *nv; int i; void *tmp; while (bytes_read > sizeof (reclen)) { /* get length of packed record (stored as little endian) */ for (i = 0, reclen = 0; i < sizeof (reclen); i++) reclen += (uint64_t)(((uchar_t *)buf)[i]) << (8*i); if (bytes_read < sizeof (reclen) + reclen) break; /* unpack record */ if (nvlist_unpack(buf + sizeof (reclen), reclen, &nv, 0) != 0) return (ENOMEM); bytes_read -= sizeof (reclen) + reclen; buf += sizeof (reclen) + reclen; /* add record to nvlist array */ (*numrecords)++; if (ISP2(*numrecords + 1)) { tmp = realloc(*records, *numrecords * 2 * sizeof (nvlist_t *)); if (tmp == NULL) { nvlist_free(nv); (*numrecords)--; return (ENOMEM); } *records = tmp; } (*records)[*numrecords - 1] = nv; } *leftover = bytes_read; return (0); } zfs-0.8.3/lib/libzutil/PaxHeaders.151519/zutil_nicenum.c0000644000000000000000000000007413607166147021063 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.483522372 zfs-0.8.3/lib/libzutil/zutil_nicenum.c0000644016037001603700000001050013607166147021054 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ #include #include #include /* * Convert a number to an appropriately human-readable output. */ void zfs_nicenum_format(uint64_t num, char *buf, size_t buflen, enum zfs_nicenum_format format) { uint64_t n = num; int index = 0; const char *u; const char *units[3][7] = { [ZFS_NICENUM_1024] = {"", "K", "M", "G", "T", "P", "E"}, [ZFS_NICENUM_BYTES] = {"B", "K", "M", "G", "T", "P", "E"}, [ZFS_NICENUM_TIME] = {"ns", "us", "ms", "s", "?", "?", "?"} }; const int units_len[] = {[ZFS_NICENUM_1024] = 6, [ZFS_NICENUM_BYTES] = 6, [ZFS_NICENUM_TIME] = 4}; const int k_unit[] = { [ZFS_NICENUM_1024] = 1024, [ZFS_NICENUM_BYTES] = 1024, [ZFS_NICENUM_TIME] = 1000}; double val; if (format == ZFS_NICENUM_RAW) { snprintf(buf, buflen, "%llu", (u_longlong_t)num); return; } else if (format == ZFS_NICENUM_RAWTIME && num > 0) { snprintf(buf, buflen, "%llu", (u_longlong_t)num); return; } else if (format == ZFS_NICENUM_RAWTIME && num == 0) { snprintf(buf, buflen, "%s", "-"); return; } while (n >= k_unit[format] && index < units_len[format]) { n /= k_unit[format]; index++; } u = units[format][index]; /* Don't print zero latencies since they're invalid */ if ((format == ZFS_NICENUM_TIME) && (num == 0)) { (void) snprintf(buf, buflen, "-"); } else if ((index == 0) || ((num % (uint64_t)powl(k_unit[format], index)) == 0)) { /* * If this is an even multiple of the base, always display * without any decimal precision. */ (void) snprintf(buf, buflen, "%llu%s", (u_longlong_t)n, u); } else { /* * We want to choose a precision that reflects the best choice * for fitting in 5 characters. This can get rather tricky when * we have numbers that are very close to an order of magnitude. * For example, when displaying 10239 (which is really 9.999K), * we want only a single place of precision for 10.0K. We could * develop some complex heuristics for this, but it's much * easier just to try each combination in turn. */ int i; for (i = 2; i >= 0; i--) { val = (double)num / (uint64_t)powl(k_unit[format], index); /* * Don't print floating point values for time. Note, * we use floor() instead of round() here, since * round can result in undesirable results. For * example, if "num" is in the range of * 999500-999999, it will print out "1000us". This * doesn't happen if we use floor(). */ if (format == ZFS_NICENUM_TIME) { if (snprintf(buf, buflen, "%d%s", (unsigned int) floor(val), u) <= 5) break; } else { if (snprintf(buf, buflen, "%.*f%s", i, val, u) <= 5) break; } } } } /* * Convert a number to an appropriately human-readable output. */ void zfs_nicenum(uint64_t num, char *buf, size_t buflen) { zfs_nicenum_format(num, buf, buflen, ZFS_NICENUM_1024); } /* * Convert a time to an appropriately human-readable output. * @num: Time in nanoseconds */ void zfs_nicetime(uint64_t num, char *buf, size_t buflen) { zfs_nicenum_format(num, buf, buflen, ZFS_NICENUM_TIME); } /* * Print out a raw number with correct column spacing */ void zfs_niceraw(uint64_t num, char *buf, size_t buflen) { zfs_nicenum_format(num, buf, buflen, ZFS_NICENUM_RAW); } /* * Convert a number of bytes to an appropriately human-readable output. */ void zfs_nicebytes(uint64_t num, char *buf, size_t buflen) { zfs_nicenum_format(num, buf, buflen, ZFS_NICENUM_BYTES); } zfs-0.8.3/lib/libzutil/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020066 xustar000000000000000030 atime=1579730430.911187597 30 ctime=1579730472.474522083 zfs-0.8.3/lib/libzutil/Makefile.am0000644016037001603700000000115413607166147020064 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am # Suppress unused but set variable warnings often due to ASSERTs AM_CFLAGS += $(NO_UNUSED_BUT_SET_VARIABLE) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include noinst_LTLIBRARIES = libzutil.la USER_C = \ zutil_device_path.c \ zutil_import.c \ zutil_nicenum.c \ zutil_pool.c nodist_libzutil_la_SOURCES = $(USER_C) libzutil_la_LIBADD = \ $(top_builddir)/lib/libavl/libavl.la \ $(top_builddir)/lib/libefi/libefi.la \ $(top_builddir)/lib/libtpool/libtpool.la libzutil_la_LIBADD += -lm $(LIBBLKID) $(LIBUDEV) EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libzutil/PaxHeaders.151519/zutil_import.c0000644000000000000000000000007413612141517020725 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.481522308 zfs-0.8.3/lib/libzutil/zutil_import.c0000644016037001603700000016453313612141517020736 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright 2015 RackTop Systems. * Copyright (c) 2016, Intel Corporation. */ /* * Pool import support functions. * * Used by zpool, ztest, zdb, and zhack to locate importable configs. Since * these commands are expected to run in the global zone, we can assume * that the devices are all readable when called. * * To import a pool, we rely on reading the configuration information from the * ZFS label of each device. If we successfully read the label, then we * organize the configuration information in the following hierarchy: * * pool guid -> toplevel vdev guid -> label txg * * Duplicate entries matching this same tuple will be discarded. Once we have * examined every device, we pick the best label txg config for each toplevel * vdev. We then arrange these toplevel vdevs into a complete pool config, and * update any paths that have changed. Finally, we attempt to import the pool * using our derived config, and record the results. */ #include #include #include #include #include #include #ifdef HAVE_LIBUDEV #include #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define IMPORT_ORDER_PREFERRED_1 1 #define IMPORT_ORDER_PREFERRED_2 2 #define IMPORT_ORDER_SCAN_OFFSET 10 #define IMPORT_ORDER_DEFAULT 100 #define DEFAULT_IMPORT_PATH_SIZE 9 #define EZFS_BADCACHE "invalid or missing cache file" #define EZFS_BADPATH "must be an absolute path" #define EZFS_NOMEM "out of memory" #define EZFS_EACESS "some devices require root privileges" typedef struct libpc_handle { boolean_t lpc_printerr; boolean_t lpc_open_access_error; boolean_t lpc_desc_active; char lpc_desc[1024]; const pool_config_ops_t *lpc_ops; void *lpc_lib_handle; } libpc_handle_t; /*PRINTFLIKE2*/ static void zfs_error_aux(libpc_handle_t *hdl, const char *fmt, ...) { va_list ap; va_start(ap, fmt); (void) vsnprintf(hdl->lpc_desc, sizeof (hdl->lpc_desc), fmt, ap); hdl->lpc_desc_active = B_TRUE; va_end(ap); } static void zfs_verror(libpc_handle_t *hdl, const char *error, const char *fmt, va_list ap) { char action[1024]; (void) vsnprintf(action, sizeof (action), fmt, ap); if (hdl->lpc_desc_active) hdl->lpc_desc_active = B_FALSE; else hdl->lpc_desc[0] = '\0'; if (hdl->lpc_printerr) { if (hdl->lpc_desc[0] != '\0') error = hdl->lpc_desc; (void) fprintf(stderr, "%s: %s\n", action, error); } } /*PRINTFLIKE3*/ static int zfs_error_fmt(libpc_handle_t *hdl, const char *error, const char *fmt, ...) { va_list ap; va_start(ap, fmt); zfs_verror(hdl, error, fmt, ap); va_end(ap); return (-1); } static int zfs_error(libpc_handle_t *hdl, const char *error, const char *msg) { return (zfs_error_fmt(hdl, error, "%s", msg)); } static int no_memory(libpc_handle_t *hdl) { zfs_error(hdl, EZFS_NOMEM, "internal error"); exit(1); } static void * zfs_alloc(libpc_handle_t *hdl, size_t size) { void *data; if ((data = calloc(1, size)) == NULL) (void) no_memory(hdl); return (data); } static char * zfs_strdup(libpc_handle_t *hdl, const char *str) { char *ret; if ((ret = strdup(str)) == NULL) (void) no_memory(hdl); return (ret); } /* * Intermediate structures used to gather configuration information. */ typedef struct config_entry { uint64_t ce_txg; nvlist_t *ce_config; struct config_entry *ce_next; } config_entry_t; typedef struct vdev_entry { uint64_t ve_guid; config_entry_t *ve_configs; struct vdev_entry *ve_next; } vdev_entry_t; typedef struct pool_entry { uint64_t pe_guid; vdev_entry_t *pe_vdevs; struct pool_entry *pe_next; } pool_entry_t; typedef struct name_entry { char *ne_name; uint64_t ne_guid; uint64_t ne_order; uint64_t ne_num_labels; struct name_entry *ne_next; } name_entry_t; typedef struct pool_list { pool_entry_t *pools; name_entry_t *names; } pool_list_t; #define ZVOL_ROOT "/dev/zvol" #define DEV_BYID_PATH "/dev/disk/by-id/" /* * Linux persistent device strings for vdev labels * * based on libudev for consistency with libudev disk add/remove events */ typedef struct vdev_dev_strs { char vds_devid[128]; char vds_devphys[128]; } vdev_dev_strs_t; #ifdef HAVE_LIBUDEV /* * Obtain the persistent device id string (describes what) * * used by ZED vdev matching for auto-{online,expand,replace} */ int zfs_device_get_devid(struct udev_device *dev, char *bufptr, size_t buflen) { struct udev_list_entry *entry; const char *bus; char devbyid[MAXPATHLEN]; /* The bus based by-id path is preferred */ bus = udev_device_get_property_value(dev, "ID_BUS"); if (bus == NULL) { const char *dm_uuid; /* * For multipath nodes use the persistent uuid based identifier * * Example: /dev/disk/by-id/dm-uuid-mpath-35000c5006304de3f */ dm_uuid = udev_device_get_property_value(dev, "DM_UUID"); if (dm_uuid != NULL) { (void) snprintf(bufptr, buflen, "dm-uuid-%s", dm_uuid); return (0); } /* * For volumes use the persistent /dev/zvol/dataset identifier */ entry = udev_device_get_devlinks_list_entry(dev); while (entry != NULL) { const char *name; name = udev_list_entry_get_name(entry); if (strncmp(name, ZVOL_ROOT, strlen(ZVOL_ROOT)) == 0) { (void) strlcpy(bufptr, name, buflen); return (0); } entry = udev_list_entry_get_next(entry); } /* * NVME 'by-id' symlinks are similar to bus case */ struct udev_device *parent; parent = udev_device_get_parent_with_subsystem_devtype(dev, "nvme", NULL); if (parent != NULL) bus = "nvme"; /* continue with bus symlink search */ else return (ENODATA); } /* * locate the bus specific by-id link */ (void) snprintf(devbyid, sizeof (devbyid), "%s%s-", DEV_BYID_PATH, bus); entry = udev_device_get_devlinks_list_entry(dev); while (entry != NULL) { const char *name; name = udev_list_entry_get_name(entry); if (strncmp(name, devbyid, strlen(devbyid)) == 0) { name += strlen(DEV_BYID_PATH); (void) strlcpy(bufptr, name, buflen); return (0); } entry = udev_list_entry_get_next(entry); } return (ENODATA); } /* * Obtain the persistent physical location string (describes where) * * used by ZED vdev matching for auto-{online,expand,replace} */ int zfs_device_get_physical(struct udev_device *dev, char *bufptr, size_t buflen) { const char *physpath = NULL; struct udev_list_entry *entry; /* * Normal disks use ID_PATH for their physical path. */ physpath = udev_device_get_property_value(dev, "ID_PATH"); if (physpath != NULL && strlen(physpath) > 0) { (void) strlcpy(bufptr, physpath, buflen); return (0); } /* * Device mapper devices are virtual and don't have a physical * path. For them we use ID_VDEV instead, which is setup via the * /etc/vdev_id.conf file. ID_VDEV provides a persistent path * to a virtual device. If you don't have vdev_id.conf setup, * you cannot use multipath autoreplace with device mapper. */ physpath = udev_device_get_property_value(dev, "ID_VDEV"); if (physpath != NULL && strlen(physpath) > 0) { (void) strlcpy(bufptr, physpath, buflen); return (0); } /* * For ZFS volumes use the persistent /dev/zvol/dataset identifier */ entry = udev_device_get_devlinks_list_entry(dev); while (entry != NULL) { physpath = udev_list_entry_get_name(entry); if (strncmp(physpath, ZVOL_ROOT, strlen(ZVOL_ROOT)) == 0) { (void) strlcpy(bufptr, physpath, buflen); return (0); } entry = udev_list_entry_get_next(entry); } /* * For all other devices fallback to using the by-uuid name. */ entry = udev_device_get_devlinks_list_entry(dev); while (entry != NULL) { physpath = udev_list_entry_get_name(entry); if (strncmp(physpath, "/dev/disk/by-uuid", 17) == 0) { (void) strlcpy(bufptr, physpath, buflen); return (0); } entry = udev_list_entry_get_next(entry); } return (ENODATA); } /* * A disk is considered a multipath whole disk when: * DEVNAME key value has "dm-" * DM_NAME key value has "mpath" prefix * DM_UUID key exists * ID_PART_TABLE_TYPE key does not exist or is not gpt */ static boolean_t udev_mpath_whole_disk(struct udev_device *dev) { const char *devname, *type, *uuid; devname = udev_device_get_property_value(dev, "DEVNAME"); type = udev_device_get_property_value(dev, "ID_PART_TABLE_TYPE"); uuid = udev_device_get_property_value(dev, "DM_UUID"); if ((devname != NULL && strncmp(devname, "/dev/dm-", 8) == 0) && ((type == NULL) || (strcmp(type, "gpt") != 0)) && (uuid != NULL)) { return (B_TRUE); } return (B_FALSE); } static int udev_device_is_ready(struct udev_device *dev) { #ifdef HAVE_LIBUDEV_UDEV_DEVICE_GET_IS_INITIALIZED return (udev_device_get_is_initialized(dev)); #else /* wait for DEVLINKS property to be initialized */ return (udev_device_get_property_value(dev, "DEVLINKS") != NULL); #endif } #endif /* HAVE_LIBUDEV */ /* * Wait up to timeout_ms for udev to set up the device node. The device is * considered ready when libudev determines it has been initialized, all of * the device links have been verified to exist, and it has been allowed to * settle. At this point the device the device can be accessed reliably. * Depending on the complexity of the udev rules this process could take * several seconds. */ int zpool_label_disk_wait(const char *path, int timeout_ms) { #ifdef HAVE_LIBUDEV struct udev *udev; struct udev_device *dev = NULL; char nodepath[MAXPATHLEN]; char *sysname = NULL; int ret = ENODEV; int settle_ms = 50; long sleep_ms = 10; hrtime_t start, settle; if ((udev = udev_new()) == NULL) return (ENXIO); start = gethrtime(); settle = 0; do { if (sysname == NULL) { if (realpath(path, nodepath) != NULL) { sysname = strrchr(nodepath, '/') + 1; } else { (void) usleep(sleep_ms * MILLISEC); continue; } } dev = udev_device_new_from_subsystem_sysname(udev, "block", sysname); if ((dev != NULL) && udev_device_is_ready(dev)) { struct udev_list_entry *links, *link = NULL; ret = 0; links = udev_device_get_devlinks_list_entry(dev); udev_list_entry_foreach(link, links) { struct stat64 statbuf; const char *name; name = udev_list_entry_get_name(link); errno = 0; if (stat64(name, &statbuf) == 0 && errno == 0) continue; settle = 0; ret = ENODEV; break; } if (ret == 0) { if (settle == 0) { settle = gethrtime(); } else if (NSEC2MSEC(gethrtime() - settle) >= settle_ms) { udev_device_unref(dev); break; } } } udev_device_unref(dev); (void) usleep(sleep_ms * MILLISEC); } while (NSEC2MSEC(gethrtime() - start) < timeout_ms); udev_unref(udev); return (ret); #else int settle_ms = 50; long sleep_ms = 10; hrtime_t start, settle; struct stat64 statbuf; start = gethrtime(); settle = 0; do { errno = 0; if ((stat64(path, &statbuf) == 0) && (errno == 0)) { if (settle == 0) settle = gethrtime(); else if (NSEC2MSEC(gethrtime() - settle) >= settle_ms) return (0); } else if (errno != ENOENT) { return (errno); } usleep(sleep_ms * MILLISEC); } while (NSEC2MSEC(gethrtime() - start) < timeout_ms); return (ENODEV); #endif /* HAVE_LIBUDEV */ } /* * Encode the persistent devices strings * used for the vdev disk label */ static int encode_device_strings(const char *path, vdev_dev_strs_t *ds, boolean_t wholedisk) { #ifdef HAVE_LIBUDEV struct udev *udev; struct udev_device *dev = NULL; char nodepath[MAXPATHLEN]; char *sysname; int ret = ENODEV; hrtime_t start; if ((udev = udev_new()) == NULL) return (ENXIO); /* resolve path to a runtime device node instance */ if (realpath(path, nodepath) == NULL) goto no_dev; sysname = strrchr(nodepath, '/') + 1; /* * Wait up to 3 seconds for udev to set up the device node context */ start = gethrtime(); do { dev = udev_device_new_from_subsystem_sysname(udev, "block", sysname); if (dev == NULL) goto no_dev; if (udev_device_is_ready(dev)) break; /* udev ready */ udev_device_unref(dev); dev = NULL; if (NSEC2MSEC(gethrtime() - start) < 10) (void) sched_yield(); /* yield/busy wait up to 10ms */ else (void) usleep(10 * MILLISEC); } while (NSEC2MSEC(gethrtime() - start) < (3 * MILLISEC)); if (dev == NULL) goto no_dev; /* * Only whole disks require extra device strings */ if (!wholedisk && !udev_mpath_whole_disk(dev)) goto no_dev; ret = zfs_device_get_devid(dev, ds->vds_devid, sizeof (ds->vds_devid)); if (ret != 0) goto no_dev_ref; /* physical location string (optional) */ if (zfs_device_get_physical(dev, ds->vds_devphys, sizeof (ds->vds_devphys)) != 0) { ds->vds_devphys[0] = '\0'; /* empty string --> not available */ } no_dev_ref: udev_device_unref(dev); no_dev: udev_unref(udev); return (ret); #else return (ENOENT); #endif } /* * Update a leaf vdev's persistent device strings (Linux only) * * - only applies for a dedicated leaf vdev (aka whole disk) * - updated during pool create|add|attach|import * - used for matching device matching during auto-{online,expand,replace} * - stored in a leaf disk config label (i.e. alongside 'path' NVP) * - these strings are currently not used in kernel (i.e. for vdev_disk_open) * * single device node example: * devid: 'scsi-MG03SCA300_350000494a8cb3d67-part1' * phys_path: 'pci-0000:04:00.0-sas-0x50000394a8cb3d67-lun-0' * * multipath device node example: * devid: 'dm-uuid-mpath-35000c5006304de3f' * * We also store the enclosure sysfs path for turning on enclosure LEDs * (if applicable): * vdev_enc_sysfs_path: '/sys/class/enclosure/11:0:1:0/SLOT 4' */ void update_vdev_config_dev_strs(nvlist_t *nv) { vdev_dev_strs_t vds; char *env, *type, *path; uint64_t wholedisk = 0; char *upath, *spath; /* * For the benefit of legacy ZFS implementations, allow * for opting out of devid strings in the vdev label. * * example use: * env ZFS_VDEV_DEVID_OPT_OUT=YES zpool import dozer * * explanation: * Older ZFS on Linux implementations had issues when attempting to * display pool config VDEV names if a "devid" NVP value is present * in the pool's config. * * For example, a pool that originated on illumos platform would * have a devid value in the config and "zpool status" would fail * when listing the config. * * A pool can be stripped of any "devid" values on import or * prevented from adding them on zpool create|add by setting * ZFS_VDEV_DEVID_OPT_OUT. */ env = getenv("ZFS_VDEV_DEVID_OPT_OUT"); if (env && (strtoul(env, NULL, 0) > 0 || !strncasecmp(env, "YES", 3) || !strncasecmp(env, "ON", 2))) { (void) nvlist_remove_all(nv, ZPOOL_CONFIG_DEVID); (void) nvlist_remove_all(nv, ZPOOL_CONFIG_PHYS_PATH); return; } if (nvlist_lookup_string(nv, ZPOOL_CONFIG_TYPE, &type) != 0 || strcmp(type, VDEV_TYPE_DISK) != 0) { return; } if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) != 0) return; (void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_WHOLE_DISK, &wholedisk); /* * Update device string values in config nvlist */ if (encode_device_strings(path, &vds, (boolean_t)wholedisk) == 0) { (void) nvlist_add_string(nv, ZPOOL_CONFIG_DEVID, vds.vds_devid); if (vds.vds_devphys[0] != '\0') { (void) nvlist_add_string(nv, ZPOOL_CONFIG_PHYS_PATH, vds.vds_devphys); } /* Add enclosure sysfs path (if disk is in an enclosure) */ upath = zfs_get_underlying_path(path); spath = zfs_get_enclosure_sysfs_path(upath); if (spath) nvlist_add_string(nv, ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH, spath); else nvlist_remove_all(nv, ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH); free(upath); free(spath); } else { /* clear out any stale entries */ (void) nvlist_remove_all(nv, ZPOOL_CONFIG_DEVID); (void) nvlist_remove_all(nv, ZPOOL_CONFIG_PHYS_PATH); (void) nvlist_remove_all(nv, ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH); } } /* * Go through and fix up any path and/or devid information for the given vdev * configuration. */ static int fix_paths(libpc_handle_t *hdl, nvlist_t *nv, name_entry_t *names) { nvlist_t **child; uint_t c, children; uint64_t guid; name_entry_t *ne, *best; char *path; if (nvlist_lookup_nvlist_array(nv, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { for (c = 0; c < children; c++) if (fix_paths(hdl, child[c], names) != 0) return (-1); return (0); } /* * This is a leaf (file or disk) vdev. In either case, go through * the name list and see if we find a matching guid. If so, replace * the path and see if we can calculate a new devid. * * There may be multiple names associated with a particular guid, in * which case we have overlapping partitions or multiple paths to the * same disk. In this case we prefer to use the path name which * matches the ZPOOL_CONFIG_PATH. If no matching entry is found we * use the lowest order device which corresponds to the first match * while traversing the ZPOOL_IMPORT_PATH search path. */ verify(nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &guid) == 0); if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) != 0) path = NULL; best = NULL; for (ne = names; ne != NULL; ne = ne->ne_next) { if (ne->ne_guid == guid) { if (path == NULL) { best = ne; break; } if ((strlen(path) == strlen(ne->ne_name)) && strncmp(path, ne->ne_name, strlen(path)) == 0) { best = ne; break; } if (best == NULL) { best = ne; continue; } /* Prefer paths with move vdev labels. */ if (ne->ne_num_labels > best->ne_num_labels) { best = ne; continue; } /* Prefer paths earlier in the search order. */ if (ne->ne_num_labels == best->ne_num_labels && ne->ne_order < best->ne_order) { best = ne; continue; } } } if (best == NULL) return (0); if (nvlist_add_string(nv, ZPOOL_CONFIG_PATH, best->ne_name) != 0) return (-1); /* Linux only - update ZPOOL_CONFIG_DEVID and ZPOOL_CONFIG_PHYS_PATH */ update_vdev_config_dev_strs(nv); return (0); } /* * Add the given configuration to the list of known devices. */ static int add_config(libpc_handle_t *hdl, pool_list_t *pl, const char *path, int order, int num_labels, nvlist_t *config) { uint64_t pool_guid, vdev_guid, top_guid, txg, state; pool_entry_t *pe; vdev_entry_t *ve; config_entry_t *ce; name_entry_t *ne; /* * If this is a hot spare not currently in use or level 2 cache * device, add it to the list of names to translate, but don't do * anything else. */ if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_STATE, &state) == 0 && (state == POOL_STATE_SPARE || state == POOL_STATE_L2CACHE) && nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID, &vdev_guid) == 0) { if ((ne = zfs_alloc(hdl, sizeof (name_entry_t))) == NULL) return (-1); if ((ne->ne_name = zfs_strdup(hdl, path)) == NULL) { free(ne); return (-1); } ne->ne_guid = vdev_guid; ne->ne_order = order; ne->ne_num_labels = num_labels; ne->ne_next = pl->names; pl->names = ne; return (0); } /* * If we have a valid config but cannot read any of these fields, then * it means we have a half-initialized label. In vdev_label_init() * we write a label with txg == 0 so that we can identify the device * in case the user refers to the same disk later on. If we fail to * create the pool, we'll be left with a label in this state * which should not be considered part of a valid pool. */ if (nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &pool_guid) != 0 || nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID, &vdev_guid) != 0 || nvlist_lookup_uint64(config, ZPOOL_CONFIG_TOP_GUID, &top_guid) != 0 || nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_TXG, &txg) != 0 || txg == 0) { return (0); } /* * First, see if we know about this pool. If not, then add it to the * list of known pools. */ for (pe = pl->pools; pe != NULL; pe = pe->pe_next) { if (pe->pe_guid == pool_guid) break; } if (pe == NULL) { if ((pe = zfs_alloc(hdl, sizeof (pool_entry_t))) == NULL) { return (-1); } pe->pe_guid = pool_guid; pe->pe_next = pl->pools; pl->pools = pe; } /* * Second, see if we know about this toplevel vdev. Add it if its * missing. */ for (ve = pe->pe_vdevs; ve != NULL; ve = ve->ve_next) { if (ve->ve_guid == top_guid) break; } if (ve == NULL) { if ((ve = zfs_alloc(hdl, sizeof (vdev_entry_t))) == NULL) { return (-1); } ve->ve_guid = top_guid; ve->ve_next = pe->pe_vdevs; pe->pe_vdevs = ve; } /* * Third, see if we have a config with a matching transaction group. If * so, then we do nothing. Otherwise, add it to the list of known * configs. */ for (ce = ve->ve_configs; ce != NULL; ce = ce->ce_next) { if (ce->ce_txg == txg) break; } if (ce == NULL) { if ((ce = zfs_alloc(hdl, sizeof (config_entry_t))) == NULL) { return (-1); } ce->ce_txg = txg; ce->ce_config = fnvlist_dup(config); ce->ce_next = ve->ve_configs; ve->ve_configs = ce; } /* * At this point we've successfully added our config to the list of * known configs. The last thing to do is add the vdev guid -> path * mappings so that we can fix up the configuration as necessary before * doing the import. */ if ((ne = zfs_alloc(hdl, sizeof (name_entry_t))) == NULL) return (-1); if ((ne->ne_name = zfs_strdup(hdl, path)) == NULL) { free(ne); return (-1); } ne->ne_guid = vdev_guid; ne->ne_order = order; ne->ne_num_labels = num_labels; ne->ne_next = pl->names; pl->names = ne; return (0); } static int pool_active(libpc_handle_t *hdl, const char *name, uint64_t guid, boolean_t *isactive) { ASSERT(hdl->lpc_ops->pco_pool_active != NULL); int error = hdl->lpc_ops->pco_pool_active(hdl->lpc_lib_handle, name, guid, isactive); return (error); } static nvlist_t * refresh_config(libpc_handle_t *hdl, nvlist_t *tryconfig) { ASSERT(hdl->lpc_ops->pco_refresh_config != NULL); return (hdl->lpc_ops->pco_refresh_config(hdl->lpc_lib_handle, tryconfig)); } /* * Determine if the vdev id is a hole in the namespace. */ static boolean_t vdev_is_hole(uint64_t *hole_array, uint_t holes, uint_t id) { int c; for (c = 0; c < holes; c++) { /* Top-level is a hole */ if (hole_array[c] == id) return (B_TRUE); } return (B_FALSE); } /* * Convert our list of pools into the definitive set of configurations. We * start by picking the best config for each toplevel vdev. Once that's done, * we assemble the toplevel vdevs into a full config for the pool. We make a * pass to fix up any incorrect paths, and then add it to the main list to * return to the user. */ static nvlist_t * get_configs(libpc_handle_t *hdl, pool_list_t *pl, boolean_t active_ok, nvlist_t *policy) { pool_entry_t *pe; vdev_entry_t *ve; config_entry_t *ce; nvlist_t *ret = NULL, *config = NULL, *tmp = NULL, *nvtop, *nvroot; nvlist_t **spares, **l2cache; uint_t i, nspares, nl2cache; boolean_t config_seen; uint64_t best_txg; char *name, *hostname = NULL; uint64_t guid; uint_t children = 0; nvlist_t **child = NULL; uint_t holes; uint64_t *hole_array, max_id; uint_t c; boolean_t isactive; uint64_t hostid; nvlist_t *nvl; boolean_t valid_top_config = B_FALSE; if (nvlist_alloc(&ret, 0, 0) != 0) goto nomem; for (pe = pl->pools; pe != NULL; pe = pe->pe_next) { uint64_t id, max_txg = 0; if (nvlist_alloc(&config, NV_UNIQUE_NAME, 0) != 0) goto nomem; config_seen = B_FALSE; /* * Iterate over all toplevel vdevs. Grab the pool configuration * from the first one we find, and then go through the rest and * add them as necessary to the 'vdevs' member of the config. */ for (ve = pe->pe_vdevs; ve != NULL; ve = ve->ve_next) { /* * Determine the best configuration for this vdev by * selecting the config with the latest transaction * group. */ best_txg = 0; for (ce = ve->ve_configs; ce != NULL; ce = ce->ce_next) { if (ce->ce_txg > best_txg) { tmp = ce->ce_config; best_txg = ce->ce_txg; } } /* * We rely on the fact that the max txg for the * pool will contain the most up-to-date information * about the valid top-levels in the vdev namespace. */ if (best_txg > max_txg) { (void) nvlist_remove(config, ZPOOL_CONFIG_VDEV_CHILDREN, DATA_TYPE_UINT64); (void) nvlist_remove(config, ZPOOL_CONFIG_HOLE_ARRAY, DATA_TYPE_UINT64_ARRAY); max_txg = best_txg; hole_array = NULL; holes = 0; max_id = 0; valid_top_config = B_FALSE; if (nvlist_lookup_uint64(tmp, ZPOOL_CONFIG_VDEV_CHILDREN, &max_id) == 0) { verify(nvlist_add_uint64(config, ZPOOL_CONFIG_VDEV_CHILDREN, max_id) == 0); valid_top_config = B_TRUE; } if (nvlist_lookup_uint64_array(tmp, ZPOOL_CONFIG_HOLE_ARRAY, &hole_array, &holes) == 0) { verify(nvlist_add_uint64_array(config, ZPOOL_CONFIG_HOLE_ARRAY, hole_array, holes) == 0); } } if (!config_seen) { /* * Copy the relevant pieces of data to the pool * configuration: * * version * pool guid * name * comment (if available) * pool state * hostid (if available) * hostname (if available) */ uint64_t state, version; char *comment = NULL; version = fnvlist_lookup_uint64(tmp, ZPOOL_CONFIG_VERSION); fnvlist_add_uint64(config, ZPOOL_CONFIG_VERSION, version); guid = fnvlist_lookup_uint64(tmp, ZPOOL_CONFIG_POOL_GUID); fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_GUID, guid); name = fnvlist_lookup_string(tmp, ZPOOL_CONFIG_POOL_NAME); fnvlist_add_string(config, ZPOOL_CONFIG_POOL_NAME, name); if (nvlist_lookup_string(tmp, ZPOOL_CONFIG_COMMENT, &comment) == 0) fnvlist_add_string(config, ZPOOL_CONFIG_COMMENT, comment); state = fnvlist_lookup_uint64(tmp, ZPOOL_CONFIG_POOL_STATE); fnvlist_add_uint64(config, ZPOOL_CONFIG_POOL_STATE, state); hostid = 0; if (nvlist_lookup_uint64(tmp, ZPOOL_CONFIG_HOSTID, &hostid) == 0) { fnvlist_add_uint64(config, ZPOOL_CONFIG_HOSTID, hostid); hostname = fnvlist_lookup_string(tmp, ZPOOL_CONFIG_HOSTNAME); fnvlist_add_string(config, ZPOOL_CONFIG_HOSTNAME, hostname); } config_seen = B_TRUE; } /* * Add this top-level vdev to the child array. */ verify(nvlist_lookup_nvlist(tmp, ZPOOL_CONFIG_VDEV_TREE, &nvtop) == 0); verify(nvlist_lookup_uint64(nvtop, ZPOOL_CONFIG_ID, &id) == 0); if (id >= children) { nvlist_t **newchild; newchild = zfs_alloc(hdl, (id + 1) * sizeof (nvlist_t *)); if (newchild == NULL) goto nomem; for (c = 0; c < children; c++) newchild[c] = child[c]; free(child); child = newchild; children = id + 1; } if (nvlist_dup(nvtop, &child[id], 0) != 0) goto nomem; } /* * If we have information about all the top-levels then * clean up the nvlist which we've constructed. This * means removing any extraneous devices that are * beyond the valid range or adding devices to the end * of our array which appear to be missing. */ if (valid_top_config) { if (max_id < children) { for (c = max_id; c < children; c++) nvlist_free(child[c]); children = max_id; } else if (max_id > children) { nvlist_t **newchild; newchild = zfs_alloc(hdl, (max_id) * sizeof (nvlist_t *)); if (newchild == NULL) goto nomem; for (c = 0; c < children; c++) newchild[c] = child[c]; free(child); child = newchild; children = max_id; } } verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &guid) == 0); /* * The vdev namespace may contain holes as a result of * device removal. We must add them back into the vdev * tree before we process any missing devices. */ if (holes > 0) { ASSERT(valid_top_config); for (c = 0; c < children; c++) { nvlist_t *holey; if (child[c] != NULL || !vdev_is_hole(hole_array, holes, c)) continue; if (nvlist_alloc(&holey, NV_UNIQUE_NAME, 0) != 0) goto nomem; /* * Holes in the namespace are treated as * "hole" top-level vdevs and have a * special flag set on them. */ if (nvlist_add_string(holey, ZPOOL_CONFIG_TYPE, VDEV_TYPE_HOLE) != 0 || nvlist_add_uint64(holey, ZPOOL_CONFIG_ID, c) != 0 || nvlist_add_uint64(holey, ZPOOL_CONFIG_GUID, 0ULL) != 0) { nvlist_free(holey); goto nomem; } child[c] = holey; } } /* * Look for any missing top-level vdevs. If this is the case, * create a faked up 'missing' vdev as a placeholder. We cannot * simply compress the child array, because the kernel performs * certain checks to make sure the vdev IDs match their location * in the configuration. */ for (c = 0; c < children; c++) { if (child[c] == NULL) { nvlist_t *missing; if (nvlist_alloc(&missing, NV_UNIQUE_NAME, 0) != 0) goto nomem; if (nvlist_add_string(missing, ZPOOL_CONFIG_TYPE, VDEV_TYPE_MISSING) != 0 || nvlist_add_uint64(missing, ZPOOL_CONFIG_ID, c) != 0 || nvlist_add_uint64(missing, ZPOOL_CONFIG_GUID, 0ULL) != 0) { nvlist_free(missing); goto nomem; } child[c] = missing; } } /* * Put all of this pool's top-level vdevs into a root vdev. */ if (nvlist_alloc(&nvroot, NV_UNIQUE_NAME, 0) != 0) goto nomem; if (nvlist_add_string(nvroot, ZPOOL_CONFIG_TYPE, VDEV_TYPE_ROOT) != 0 || nvlist_add_uint64(nvroot, ZPOOL_CONFIG_ID, 0ULL) != 0 || nvlist_add_uint64(nvroot, ZPOOL_CONFIG_GUID, guid) != 0 || nvlist_add_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, child, children) != 0) { nvlist_free(nvroot); goto nomem; } for (c = 0; c < children; c++) nvlist_free(child[c]); free(child); children = 0; child = NULL; /* * Go through and fix up any paths and/or devids based on our * known list of vdev GUID -> path mappings. */ if (fix_paths(hdl, nvroot, pl->names) != 0) { nvlist_free(nvroot); goto nomem; } /* * Add the root vdev to this pool's configuration. */ if (nvlist_add_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, nvroot) != 0) { nvlist_free(nvroot); goto nomem; } nvlist_free(nvroot); /* * zdb uses this path to report on active pools that were * imported or created using -R. */ if (active_ok) goto add_pool; /* * Determine if this pool is currently active, in which case we * can't actually import it. */ verify(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &name) == 0); verify(nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &guid) == 0); if (pool_active(hdl, name, guid, &isactive) != 0) goto error; if (isactive) { nvlist_free(config); config = NULL; continue; } if (policy != NULL) { if (nvlist_add_nvlist(config, ZPOOL_LOAD_POLICY, policy) != 0) goto nomem; } if ((nvl = refresh_config(hdl, config)) == NULL) { nvlist_free(config); config = NULL; continue; } nvlist_free(config); config = nvl; /* * Go through and update the paths for spares, now that we have * them. */ verify(nvlist_lookup_nvlist(config, ZPOOL_CONFIG_VDEV_TREE, &nvroot) == 0); if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_SPARES, &spares, &nspares) == 0) { for (i = 0; i < nspares; i++) { if (fix_paths(hdl, spares[i], pl->names) != 0) goto nomem; } } /* * Update the paths for l2cache devices. */ if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_L2CACHE, &l2cache, &nl2cache) == 0) { for (i = 0; i < nl2cache; i++) { if (fix_paths(hdl, l2cache[i], pl->names) != 0) goto nomem; } } /* * Restore the original information read from the actual label. */ (void) nvlist_remove(config, ZPOOL_CONFIG_HOSTID, DATA_TYPE_UINT64); (void) nvlist_remove(config, ZPOOL_CONFIG_HOSTNAME, DATA_TYPE_STRING); if (hostid != 0) { verify(nvlist_add_uint64(config, ZPOOL_CONFIG_HOSTID, hostid) == 0); verify(nvlist_add_string(config, ZPOOL_CONFIG_HOSTNAME, hostname) == 0); } add_pool: /* * Add this pool to the list of configs. */ verify(nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &name) == 0); if (nvlist_add_nvlist(ret, name, config) != 0) goto nomem; nvlist_free(config); config = NULL; } return (ret); nomem: (void) no_memory(hdl); error: nvlist_free(config); nvlist_free(ret); for (c = 0; c < children; c++) nvlist_free(child[c]); free(child); return (NULL); } /* * Return the offset of the given label. */ static uint64_t label_offset(uint64_t size, int l) { ASSERT(P2PHASE_TYPED(size, sizeof (vdev_label_t), uint64_t) == 0); return (l * sizeof (vdev_label_t) + (l < VDEV_LABELS / 2 ? 0 : size - VDEV_LABELS * sizeof (vdev_label_t))); } /* * Given a file descriptor, read the label information and return an nvlist * describing the configuration, if there is one. The number of valid * labels found will be returned in num_labels when non-NULL. */ int zpool_read_label(int fd, nvlist_t **config, int *num_labels) { struct stat64 statbuf; int l, count = 0; vdev_label_t *label; nvlist_t *expected_config = NULL; uint64_t expected_guid = 0, size; int error; *config = NULL; if (fstat64_blk(fd, &statbuf) == -1) return (0); size = P2ALIGN_TYPED(statbuf.st_size, sizeof (vdev_label_t), uint64_t); error = posix_memalign((void **)&label, PAGESIZE, sizeof (*label)); if (error) return (-1); for (l = 0; l < VDEV_LABELS; l++) { uint64_t state, guid, txg; if (pread64(fd, label, sizeof (vdev_label_t), label_offset(size, l)) != sizeof (vdev_label_t)) continue; if (nvlist_unpack(label->vl_vdev_phys.vp_nvlist, sizeof (label->vl_vdev_phys.vp_nvlist), config, 0) != 0) continue; if (nvlist_lookup_uint64(*config, ZPOOL_CONFIG_GUID, &guid) != 0 || guid == 0) { nvlist_free(*config); continue; } if (nvlist_lookup_uint64(*config, ZPOOL_CONFIG_POOL_STATE, &state) != 0 || state > POOL_STATE_L2CACHE) { nvlist_free(*config); continue; } if (state != POOL_STATE_SPARE && state != POOL_STATE_L2CACHE && (nvlist_lookup_uint64(*config, ZPOOL_CONFIG_POOL_TXG, &txg) != 0 || txg == 0)) { nvlist_free(*config); continue; } if (expected_guid) { if (expected_guid == guid) count++; nvlist_free(*config); } else { expected_config = *config; expected_guid = guid; count++; } } if (num_labels != NULL) *num_labels = count; free(label); *config = expected_config; return (0); } typedef struct rdsk_node { char *rn_name; /* Full path to device */ int rn_order; /* Preferred order (low to high) */ int rn_num_labels; /* Number of valid labels */ uint64_t rn_vdev_guid; /* Expected vdev guid when set */ libpc_handle_t *rn_hdl; nvlist_t *rn_config; /* Label config */ avl_tree_t *rn_avl; avl_node_t rn_node; pthread_mutex_t *rn_lock; boolean_t rn_labelpaths; } rdsk_node_t; /* * Sorted by full path and then vdev guid to allow for multiple entries with * the same full path name. This is required because it's possible to * have multiple block devices with labels that refer to the same * ZPOOL_CONFIG_PATH yet have different vdev guids. In this case both * entries need to be added to the cache. Scenarios where this can occur * include overwritten pool labels, devices which are visible from multiple * hosts and multipath devices. */ static int slice_cache_compare(const void *arg1, const void *arg2) { const char *nm1 = ((rdsk_node_t *)arg1)->rn_name; const char *nm2 = ((rdsk_node_t *)arg2)->rn_name; uint64_t guid1 = ((rdsk_node_t *)arg1)->rn_vdev_guid; uint64_t guid2 = ((rdsk_node_t *)arg2)->rn_vdev_guid; int rv; rv = AVL_ISIGN(strcmp(nm1, nm2)); if (rv) return (rv); return (AVL_CMP(guid1, guid2)); } static boolean_t is_watchdog_dev(char *dev) { /* For 'watchdog' dev */ if (strcmp(dev, "watchdog") == 0) return (B_TRUE); /* For 'watchdog */ if (strstr(dev, "watchdog") == dev && isdigit(dev[8])) return (B_TRUE); return (B_FALSE); } static int label_paths_impl(libpc_handle_t *hdl, nvlist_t *nvroot, uint64_t pool_guid, uint64_t vdev_guid, char **path, char **devid) { nvlist_t **child; uint_t c, children; uint64_t guid; char *val; int error; if (nvlist_lookup_nvlist_array(nvroot, ZPOOL_CONFIG_CHILDREN, &child, &children) == 0) { for (c = 0; c < children; c++) { error = label_paths_impl(hdl, child[c], pool_guid, vdev_guid, path, devid); if (error) return (error); } return (0); } if (nvroot == NULL) return (0); error = nvlist_lookup_uint64(nvroot, ZPOOL_CONFIG_GUID, &guid); if ((error != 0) || (guid != vdev_guid)) return (0); error = nvlist_lookup_string(nvroot, ZPOOL_CONFIG_PATH, &val); if (error == 0) *path = val; error = nvlist_lookup_string(nvroot, ZPOOL_CONFIG_DEVID, &val); if (error == 0) *devid = val; return (0); } /* * Given a disk label fetch the ZPOOL_CONFIG_PATH and ZPOOL_CONFIG_DEVID * and store these strings as config_path and devid_path respectively. * The returned pointers are only valid as long as label remains valid. */ static int label_paths(libpc_handle_t *hdl, nvlist_t *label, char **path, char **devid) { nvlist_t *nvroot; uint64_t pool_guid; uint64_t vdev_guid; *path = NULL; *devid = NULL; if (nvlist_lookup_nvlist(label, ZPOOL_CONFIG_VDEV_TREE, &nvroot) || nvlist_lookup_uint64(label, ZPOOL_CONFIG_POOL_GUID, &pool_guid) || nvlist_lookup_uint64(label, ZPOOL_CONFIG_GUID, &vdev_guid)) return (ENOENT); return (label_paths_impl(hdl, nvroot, pool_guid, vdev_guid, path, devid)); } static void zpool_open_func(void *arg) { rdsk_node_t *rn = arg; libpc_handle_t *hdl = rn->rn_hdl; struct stat64 statbuf; nvlist_t *config; char *bname, *dupname; uint64_t vdev_guid = 0; int error; int num_labels = 0; int fd; /* * Skip devices with well known prefixes there can be side effects * when opening devices which need to be avoided. * * hpet - High Precision Event Timer * watchdog - Watchdog must be closed in a special way. */ dupname = zfs_strdup(hdl, rn->rn_name); bname = basename(dupname); error = ((strcmp(bname, "hpet") == 0) || is_watchdog_dev(bname)); free(dupname); if (error) return; /* * Ignore failed stats. We only want regular files and block devices. */ if (stat64(rn->rn_name, &statbuf) != 0 || (!S_ISREG(statbuf.st_mode) && !S_ISBLK(statbuf.st_mode))) return; /* * Preferentially open using O_DIRECT to bypass the block device * cache which may be stale for multipath devices. An EINVAL errno * indicates O_DIRECT is unsupported so fallback to just O_RDONLY. */ fd = open(rn->rn_name, O_RDONLY | O_DIRECT); if ((fd < 0) && (errno == EINVAL)) fd = open(rn->rn_name, O_RDONLY); if ((fd < 0) && (errno == EACCES)) hdl->lpc_open_access_error = B_TRUE; if (fd < 0) return; /* * This file is too small to hold a zpool */ if (S_ISREG(statbuf.st_mode) && statbuf.st_size < SPA_MINDEVSIZE) { (void) close(fd); return; } error = zpool_read_label(fd, &config, &num_labels); if (error != 0) { (void) close(fd); return; } if (num_labels == 0) { (void) close(fd); nvlist_free(config); return; } /* * Check that the vdev is for the expected guid. Additional entries * are speculatively added based on the paths stored in the labels. * Entries with valid paths but incorrect guids must be removed. */ error = nvlist_lookup_uint64(config, ZPOOL_CONFIG_GUID, &vdev_guid); if (error || (rn->rn_vdev_guid && rn->rn_vdev_guid != vdev_guid)) { (void) close(fd); nvlist_free(config); return; } (void) close(fd); rn->rn_config = config; rn->rn_num_labels = num_labels; /* * Add additional entries for paths described by this label. */ if (rn->rn_labelpaths) { char *path = NULL; char *devid = NULL; char *env = NULL; rdsk_node_t *slice; avl_index_t where; int timeout; int error; if (label_paths(rn->rn_hdl, rn->rn_config, &path, &devid)) return; env = getenv("ZPOOL_IMPORT_UDEV_TIMEOUT_MS"); if ((env == NULL) || sscanf(env, "%d", &timeout) != 1 || timeout < 0) { timeout = DISK_LABEL_WAIT; } /* * Allow devlinks to stabilize so all paths are available. */ zpool_label_disk_wait(rn->rn_name, timeout); if (path != NULL) { slice = zfs_alloc(hdl, sizeof (rdsk_node_t)); slice->rn_name = zfs_strdup(hdl, path); slice->rn_vdev_guid = vdev_guid; slice->rn_avl = rn->rn_avl; slice->rn_hdl = hdl; slice->rn_order = IMPORT_ORDER_PREFERRED_1; slice->rn_labelpaths = B_FALSE; pthread_mutex_lock(rn->rn_lock); if (avl_find(rn->rn_avl, slice, &where)) { pthread_mutex_unlock(rn->rn_lock); free(slice->rn_name); free(slice); } else { avl_insert(rn->rn_avl, slice, where); pthread_mutex_unlock(rn->rn_lock); zpool_open_func(slice); } } if (devid != NULL) { slice = zfs_alloc(hdl, sizeof (rdsk_node_t)); error = asprintf(&slice->rn_name, "%s%s", DEV_BYID_PATH, devid); if (error == -1) { free(slice); return; } slice->rn_vdev_guid = vdev_guid; slice->rn_avl = rn->rn_avl; slice->rn_hdl = hdl; slice->rn_order = IMPORT_ORDER_PREFERRED_2; slice->rn_labelpaths = B_FALSE; pthread_mutex_lock(rn->rn_lock); if (avl_find(rn->rn_avl, slice, &where)) { pthread_mutex_unlock(rn->rn_lock); free(slice->rn_name); free(slice); } else { avl_insert(rn->rn_avl, slice, where); pthread_mutex_unlock(rn->rn_lock); zpool_open_func(slice); } } } } static void zpool_find_import_scan_add_slice(libpc_handle_t *hdl, pthread_mutex_t *lock, avl_tree_t *cache, const char *path, const char *name, int order) { avl_index_t where; rdsk_node_t *slice; slice = zfs_alloc(hdl, sizeof (rdsk_node_t)); if (asprintf(&slice->rn_name, "%s/%s", path, name) == -1) { free(slice); return; } slice->rn_vdev_guid = 0; slice->rn_lock = lock; slice->rn_avl = cache; slice->rn_hdl = hdl; slice->rn_order = order + IMPORT_ORDER_SCAN_OFFSET; slice->rn_labelpaths = B_FALSE; pthread_mutex_lock(lock); if (avl_find(cache, slice, &where)) { free(slice->rn_name); free(slice); } else { avl_insert(cache, slice, where); } pthread_mutex_unlock(lock); } static int zpool_find_import_scan_dir(libpc_handle_t *hdl, pthread_mutex_t *lock, avl_tree_t *cache, const char *dir, int order) { int error; char path[MAXPATHLEN]; struct dirent64 *dp; DIR *dirp; if (realpath(dir, path) == NULL) { error = errno; if (error == ENOENT) return (0); zfs_error_aux(hdl, strerror(error)); (void) zfs_error_fmt(hdl, EZFS_BADPATH, dgettext( TEXT_DOMAIN, "cannot resolve path '%s'"), dir); return (error); } dirp = opendir(path); if (dirp == NULL) { error = errno; zfs_error_aux(hdl, strerror(error)); (void) zfs_error_fmt(hdl, EZFS_BADPATH, dgettext(TEXT_DOMAIN, "cannot open '%s'"), path); return (error); } while ((dp = readdir64(dirp)) != NULL) { const char *name = dp->d_name; if (name[0] == '.' && (name[1] == 0 || (name[1] == '.' && name[2] == 0))) continue; zpool_find_import_scan_add_slice(hdl, lock, cache, path, name, order); } (void) closedir(dirp); return (0); } static int zpool_find_import_scan_path(libpc_handle_t *hdl, pthread_mutex_t *lock, avl_tree_t *cache, const char *dir, int order) { int error = 0; char path[MAXPATHLEN]; char *d, *b; char *dpath, *name; /* * Separate the directory part and last part of the * path. We do this so that we can get the realpath of * the directory. We don't get the realpath on the * whole path because if it's a symlink, we want the * path of the symlink not where it points to. */ d = zfs_strdup(hdl, dir); b = zfs_strdup(hdl, dir); dpath = dirname(d); name = basename(b); if (realpath(dpath, path) == NULL) { error = errno; if (error == ENOENT) { error = 0; goto out; } zfs_error_aux(hdl, strerror(error)); (void) zfs_error_fmt(hdl, EZFS_BADPATH, dgettext( TEXT_DOMAIN, "cannot resolve path '%s'"), dir); goto out; } zpool_find_import_scan_add_slice(hdl, lock, cache, path, name, order); out: free(b); free(d); return (error); } /* * Scan a list of directories for zfs devices. */ static int zpool_find_import_scan(libpc_handle_t *hdl, pthread_mutex_t *lock, avl_tree_t **slice_cache, char **dir, int dirs) { avl_tree_t *cache; rdsk_node_t *slice; void *cookie; int i, error; *slice_cache = NULL; cache = zfs_alloc(hdl, sizeof (avl_tree_t)); avl_create(cache, slice_cache_compare, sizeof (rdsk_node_t), offsetof(rdsk_node_t, rn_node)); for (i = 0; i < dirs; i++) { struct stat sbuf; if (stat(dir[i], &sbuf) != 0) { error = errno; if (error == ENOENT) continue; zfs_error_aux(hdl, strerror(error)); (void) zfs_error_fmt(hdl, EZFS_BADPATH, dgettext( TEXT_DOMAIN, "cannot resolve path '%s'"), dir[i]); goto error; } /* * If dir[i] is a directory, we walk through it and add all * the entry to the cache. If it's not a directory, we just * add it to the cache. */ if (S_ISDIR(sbuf.st_mode)) { if ((error = zpool_find_import_scan_dir(hdl, lock, cache, dir[i], i)) != 0) goto error; } else { if ((error = zpool_find_import_scan_path(hdl, lock, cache, dir[i], i)) != 0) goto error; } } *slice_cache = cache; return (0); error: cookie = NULL; while ((slice = avl_destroy_nodes(cache, &cookie)) != NULL) { free(slice->rn_name); free(slice); } free(cache); return (error); } static char * zpool_default_import_path[DEFAULT_IMPORT_PATH_SIZE] = { "/dev/disk/by-vdev", /* Custom rules, use first if they exist */ "/dev/mapper", /* Use multipath devices before components */ "/dev/disk/by-partlabel", /* Single unique entry set by user */ "/dev/disk/by-partuuid", /* Generated partition uuid */ "/dev/disk/by-label", /* Custom persistent labels */ "/dev/disk/by-uuid", /* Single unique entry and persistent */ "/dev/disk/by-id", /* May be multiple entries and persistent */ "/dev/disk/by-path", /* Encodes physical location and persistent */ "/dev" /* UNSAFE device names will change */ }; const char * const * zpool_default_search_paths(size_t *count) { *count = DEFAULT_IMPORT_PATH_SIZE; return ((const char * const *)zpool_default_import_path); } /* * Given a full path to a device determine if that device appears in the * import search path. If it does return the first match and store the * index in the passed 'order' variable, otherwise return an error. */ static int zfs_path_order(char *name, int *order) { int i = 0, error = ENOENT; char *dir, *env, *envdup; env = getenv("ZPOOL_IMPORT_PATH"); if (env) { envdup = strdup(env); dir = strtok(envdup, ":"); while (dir) { if (strncmp(name, dir, strlen(dir)) == 0) { *order = i; error = 0; break; } dir = strtok(NULL, ":"); i++; } free(envdup); } else { for (i = 0; i < DEFAULT_IMPORT_PATH_SIZE; i++) { if (strncmp(name, zpool_default_import_path[i], strlen(zpool_default_import_path[i])) == 0) { *order = i; error = 0; break; } } } return (error); } /* * Use libblkid to quickly enumerate all known zfs devices. */ static int zpool_find_import_blkid(libpc_handle_t *hdl, pthread_mutex_t *lock, avl_tree_t **slice_cache) { rdsk_node_t *slice; blkid_cache cache; blkid_dev_iterate iter; blkid_dev dev; avl_index_t where; int error; *slice_cache = NULL; error = blkid_get_cache(&cache, NULL); if (error != 0) return (error); error = blkid_probe_all_new(cache); if (error != 0) { blkid_put_cache(cache); return (error); } iter = blkid_dev_iterate_begin(cache); if (iter == NULL) { blkid_put_cache(cache); return (EINVAL); } error = blkid_dev_set_search(iter, "TYPE", "zfs_member"); if (error != 0) { blkid_dev_iterate_end(iter); blkid_put_cache(cache); return (error); } *slice_cache = zfs_alloc(hdl, sizeof (avl_tree_t)); avl_create(*slice_cache, slice_cache_compare, sizeof (rdsk_node_t), offsetof(rdsk_node_t, rn_node)); while (blkid_dev_next(iter, &dev) == 0) { slice = zfs_alloc(hdl, sizeof (rdsk_node_t)); slice->rn_name = zfs_strdup(hdl, blkid_dev_devname(dev)); slice->rn_vdev_guid = 0; slice->rn_lock = lock; slice->rn_avl = *slice_cache; slice->rn_hdl = hdl; slice->rn_labelpaths = B_TRUE; error = zfs_path_order(slice->rn_name, &slice->rn_order); if (error == 0) slice->rn_order += IMPORT_ORDER_SCAN_OFFSET; else slice->rn_order = IMPORT_ORDER_DEFAULT; pthread_mutex_lock(lock); if (avl_find(*slice_cache, slice, &where)) { free(slice->rn_name); free(slice); } else { avl_insert(*slice_cache, slice, where); } pthread_mutex_unlock(lock); } blkid_dev_iterate_end(iter); blkid_put_cache(cache); return (0); } /* * Given a list of directories to search, find all pools stored on disk. This * includes partial pools which are not available to import. If no args are * given (argc is 0), then the default directory (/dev/dsk) is searched. * poolname or guid (but not both) are provided by the caller when trying * to import a specific pool. */ static nvlist_t * zpool_find_import_impl(libpc_handle_t *hdl, importargs_t *iarg) { nvlist_t *ret = NULL; pool_list_t pools = { 0 }; pool_entry_t *pe, *penext; vdev_entry_t *ve, *venext; config_entry_t *ce, *cenext; name_entry_t *ne, *nenext; pthread_mutex_t lock; avl_tree_t *cache; rdsk_node_t *slice; void *cookie; tpool_t *t; verify(iarg->poolname == NULL || iarg->guid == 0); pthread_mutex_init(&lock, NULL); /* * Locate pool member vdevs using libblkid or by directory scanning. * On success a newly allocated AVL tree which is populated with an * entry for each discovered vdev will be returned as the cache. * It's the callers responsibility to consume and destroy this tree. */ if (iarg->scan || iarg->paths != 0) { int dirs = iarg->paths; char **dir = iarg->path; if (dirs == 0) { dir = zpool_default_import_path; dirs = DEFAULT_IMPORT_PATH_SIZE; } if (zpool_find_import_scan(hdl, &lock, &cache, dir, dirs) != 0) return (NULL); } else { if (zpool_find_import_blkid(hdl, &lock, &cache) != 0) return (NULL); } /* * Create a thread pool to parallelize the process of reading and * validating labels, a large number of threads can be used due to * minimal contention. */ t = tpool_create(1, 2 * sysconf(_SC_NPROCESSORS_ONLN), 0, NULL); for (slice = avl_first(cache); slice; (slice = avl_walk(cache, slice, AVL_AFTER))) (void) tpool_dispatch(t, zpool_open_func, slice); tpool_wait(t); tpool_destroy(t); /* * Process the cache, filtering out any entries which are not * for the specified pool then adding matching label configs. */ cookie = NULL; while ((slice = avl_destroy_nodes(cache, &cookie)) != NULL) { if (slice->rn_config != NULL) { nvlist_t *config = slice->rn_config; boolean_t matched = B_TRUE; boolean_t aux = B_FALSE; int fd; /* * Check if it's a spare or l2cache device. If it is, * we need to skip the name and guid check since they * don't exist on aux device label. */ if (iarg->poolname != NULL || iarg->guid != 0) { uint64_t state; aux = nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_STATE, &state) == 0 && (state == POOL_STATE_SPARE || state == POOL_STATE_L2CACHE); } if (iarg->poolname != NULL && !aux) { char *pname; matched = nvlist_lookup_string(config, ZPOOL_CONFIG_POOL_NAME, &pname) == 0 && strcmp(iarg->poolname, pname) == 0; } else if (iarg->guid != 0 && !aux) { uint64_t this_guid; matched = nvlist_lookup_uint64(config, ZPOOL_CONFIG_POOL_GUID, &this_guid) == 0 && iarg->guid == this_guid; } if (matched) { /* * Verify all remaining entries can be opened * exclusively. This will prune all underlying * multipath devices which otherwise could * result in the vdev appearing as UNAVAIL. * * Under zdb, this step isn't required and * would prevent a zdb -e of active pools with * no cachefile. */ fd = open(slice->rn_name, O_RDONLY | O_EXCL); if (fd >= 0 || iarg->can_be_active) { if (fd >= 0) close(fd); add_config(hdl, &pools, slice->rn_name, slice->rn_order, slice->rn_num_labels, config); } } nvlist_free(config); } free(slice->rn_name); free(slice); } avl_destroy(cache); free(cache); pthread_mutex_destroy(&lock); ret = get_configs(hdl, &pools, iarg->can_be_active, iarg->policy); for (pe = pools.pools; pe != NULL; pe = penext) { penext = pe->pe_next; for (ve = pe->pe_vdevs; ve != NULL; ve = venext) { venext = ve->ve_next; for (ce = ve->ve_configs; ce != NULL; ce = cenext) { cenext = ce->ce_next; nvlist_free(ce->ce_config); free(ce); } free(ve); } free(pe); } for (ne = pools.names; ne != NULL; ne = nenext) { nenext = ne->ne_next; free(ne->ne_name); free(ne); } return (ret); } /* * Given a cache file, return the contents as a list of importable pools. * poolname or guid (but not both) are provided by the caller when trying * to import a specific pool. */ static nvlist_t * zpool_find_import_cached(libpc_handle_t *hdl, const char *cachefile, const char *poolname, uint64_t guid) { char *buf; int fd; struct stat64 statbuf; nvlist_t *raw, *src, *dst; nvlist_t *pools; nvpair_t *elem; char *name; uint64_t this_guid; boolean_t active; verify(poolname == NULL || guid == 0); if ((fd = open(cachefile, O_RDONLY)) < 0) { zfs_error_aux(hdl, "%s", strerror(errno)); (void) zfs_error(hdl, EZFS_BADCACHE, dgettext(TEXT_DOMAIN, "failed to open cache file")); return (NULL); } if (fstat64(fd, &statbuf) != 0) { zfs_error_aux(hdl, "%s", strerror(errno)); (void) close(fd); (void) zfs_error(hdl, EZFS_BADCACHE, dgettext(TEXT_DOMAIN, "failed to get size of cache file")); return (NULL); } if ((buf = zfs_alloc(hdl, statbuf.st_size)) == NULL) { (void) close(fd); return (NULL); } if (read(fd, buf, statbuf.st_size) != statbuf.st_size) { (void) close(fd); free(buf); (void) zfs_error(hdl, EZFS_BADCACHE, dgettext(TEXT_DOMAIN, "failed to read cache file contents")); return (NULL); } (void) close(fd); if (nvlist_unpack(buf, statbuf.st_size, &raw, 0) != 0) { free(buf); (void) zfs_error(hdl, EZFS_BADCACHE, dgettext(TEXT_DOMAIN, "invalid or corrupt cache file contents")); return (NULL); } free(buf); /* * Go through and get the current state of the pools and refresh their * state. */ if (nvlist_alloc(&pools, 0, 0) != 0) { (void) no_memory(hdl); nvlist_free(raw); return (NULL); } elem = NULL; while ((elem = nvlist_next_nvpair(raw, elem)) != NULL) { src = fnvpair_value_nvlist(elem); name = fnvlist_lookup_string(src, ZPOOL_CONFIG_POOL_NAME); if (poolname != NULL && strcmp(poolname, name) != 0) continue; this_guid = fnvlist_lookup_uint64(src, ZPOOL_CONFIG_POOL_GUID); if (guid != 0 && guid != this_guid) continue; if (pool_active(hdl, name, this_guid, &active) != 0) { nvlist_free(raw); nvlist_free(pools); return (NULL); } if (active) continue; if (nvlist_add_string(src, ZPOOL_CONFIG_CACHEFILE, cachefile) != 0) { (void) no_memory(hdl); nvlist_free(raw); nvlist_free(pools); return (NULL); } if ((dst = refresh_config(hdl, src)) == NULL) { nvlist_free(raw); nvlist_free(pools); return (NULL); } if (nvlist_add_nvlist(pools, nvpair_name(elem), dst) != 0) { (void) no_memory(hdl); nvlist_free(dst); nvlist_free(raw); nvlist_free(pools); return (NULL); } nvlist_free(dst); } nvlist_free(raw); return (pools); } nvlist_t * zpool_search_import(void *hdl, importargs_t *import, const pool_config_ops_t *pco) { libpc_handle_t handle = { 0 }; nvlist_t *pools = NULL; handle.lpc_lib_handle = hdl; handle.lpc_ops = pco; handle.lpc_printerr = B_TRUE; verify(import->poolname == NULL || import->guid == 0); if (import->cachefile != NULL) pools = zpool_find_import_cached(&handle, import->cachefile, import->poolname, import->guid); else pools = zpool_find_import_impl(&handle, import); if ((pools == NULL || nvlist_empty(pools)) && handle.lpc_open_access_error && geteuid() != 0) { (void) zfs_error(&handle, EZFS_EACESS, dgettext(TEXT_DOMAIN, "no pools found")); } return (pools); } static boolean_t pool_match(nvlist_t *cfg, char *tgt) { uint64_t v, guid = strtoull(tgt, NULL, 0); char *s; if (guid != 0) { if (nvlist_lookup_uint64(cfg, ZPOOL_CONFIG_POOL_GUID, &v) == 0) return (v == guid); } else { if (nvlist_lookup_string(cfg, ZPOOL_CONFIG_POOL_NAME, &s) == 0) return (strcmp(s, tgt) == 0); } return (B_FALSE); } int zpool_find_config(void *hdl, const char *target, nvlist_t **configp, importargs_t *args, const pool_config_ops_t *pco) { nvlist_t *pools; nvlist_t *match = NULL; nvlist_t *config = NULL; char *name = NULL, *sepp = NULL; char sep = '\0'; int count = 0; char *targetdup = strdup(target); *configp = NULL; if ((sepp = strpbrk(targetdup, "/@")) != NULL) { sep = *sepp; *sepp = '\0'; } pools = zpool_search_import(hdl, args, pco); if (pools != NULL) { nvpair_t *elem = NULL; while ((elem = nvlist_next_nvpair(pools, elem)) != NULL) { VERIFY0(nvpair_value_nvlist(elem, &config)); if (pool_match(config, targetdup)) { count++; if (match != NULL) { /* multiple matches found */ continue; } else { match = config; name = nvpair_name(elem); } } } } if (count == 0) { free(targetdup); return (ENOENT); } if (count > 1) { free(targetdup); return (EINVAL); } *configp = match; free(targetdup); return (0); } zfs-0.8.3/lib/libzutil/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776020070 xustar000000000000000030 mtime=1579730430.964189299 30 atime=1579730451.211839389 30 ctime=1579730472.476522148 zfs-0.8.3/lib/libzutil/Makefile.in0000664016037001603700000006726513612142776020114 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libzutil ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = libzutil_la_DEPENDENCIES = $(top_builddir)/lib/libavl/libavl.la \ $(top_builddir)/lib/libefi/libefi.la \ $(top_builddir)/lib/libtpool/libtpool.la $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) am__objects_1 = zutil_device_path.lo zutil_import.lo zutil_nicenum.lo \ zutil_pool.lo nodist_libzutil_la_OBJECTS = $(am__objects_1) libzutil_la_OBJECTS = $(nodist_libzutil_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libzutil_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent # Suppress unused but set variable warnings often due to ASSERTs AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) $(NO_UNUSED_BUT_SET_VARIABLE) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) noinst_LTLIBRARIES = libzutil.la USER_C = \ zutil_device_path.c \ zutil_import.c \ zutil_nicenum.c \ zutil_pool.c nodist_libzutil_la_SOURCES = $(USER_C) libzutil_la_LIBADD = $(top_builddir)/lib/libavl/libavl.la \ $(top_builddir)/lib/libefi/libefi.la \ $(top_builddir)/lib/libtpool/libtpool.la -lm $(LIBBLKID) \ $(LIBUDEV) EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libzutil/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libzutil/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libzutil.la: $(libzutil_la_OBJECTS) $(libzutil_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libzutil_la_OBJECTS) $(libzutil_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zutil_device_path.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zutil_import.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zutil_nicenum.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zutil_pool.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132016222 xustar000000000000000030 atime=1579730429.434140175 30 ctime=1579730471.242482524 zfs-0.8.3/lib/Makefile.am0000644016037001603700000000061113607166132016215 0ustar00hutter2hutter200000000000000# NB: GNU Automake Manual, Chapter 8.3.5: Libtool Convenience Libraries # These six libraries are intermediary build components. SUBDIRS = libavl libefi libicp libshare libspl libtpool libzutil libunicode # These four libraries, which are installed as the final build product, # incorporate the six convenience libraries given above. SUBDIRS += libuutil libnvpair libzpool libzfs_core libzfs zfs-0.8.3/lib/PaxHeaders.151519/libunicode0000644000000000000000000000013213612143050016207 xustar000000000000000030 mtime=1579730472.542524267 30 atime=1579730489.073055035 30 ctime=1579730472.542524267 zfs-0.8.3/lib/libunicode/0000775016037001603700000000000013612143050016270 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libunicode/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020345 xustar000000000000000030 atime=1579730430.530175365 30 ctime=1579730472.539524171 zfs-0.8.3/lib/libunicode/Makefile.am0000644016037001603700000000066013607166147020344 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am VPATH = $(top_srcdir)/module/unicode # Includes kernel code, generate warnings for large stack frames AM_CFLAGS += $(FRAME_LARGER_THAN) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include noinst_LTLIBRARIES = libunicode.la USER_C = KERNEL_C = \ u8_textprep.c \ uconv.c nodist_libunicode_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libunicode/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776020347 xustar000000000000000030 mtime=1579730430.582177033 30 atime=1579730451.274841411 30 ctime=1579730472.542524267 zfs-0.8.3/lib/libunicode/Makefile.in0000664016037001603700000006625213612142776020366 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libunicode ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libunicode_la_LIBADD = am__objects_1 = am__objects_2 = u8_textprep.lo uconv.lo nodist_libunicode_la_OBJECTS = $(am__objects_1) $(am__objects_2) libunicode_la_OBJECTS = $(nodist_libunicode_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libunicode_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = $(top_srcdir)/module/unicode ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent # Includes kernel code, generate warnings for large stack frames AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) $(FRAME_LARGER_THAN) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) noinst_LTLIBRARIES = libunicode.la USER_C = KERNEL_C = \ u8_textprep.c \ uconv.c nodist_libunicode_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libunicode/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libunicode/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libunicode.la: $(libunicode_la_OBJECTS) $(libunicode_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libunicode_la_OBJECTS) $(libunicode_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/u8_textprep.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uconv.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/libicp0000644000000000000000000000013213612143047015342 xustar000000000000000030 mtime=1579730471.456489396 30 atime=1579730489.073055035 30 ctime=1579730471.456489396 zfs-0.8.3/lib/libicp/0000775016037001603700000000000013612143047015423 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libicp/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147017472 xustar000000000000000030 atime=1579730429.624146275 30 ctime=1579730471.454489332 zfs-0.8.3/lib/libicp/Makefile.am0000644016037001603700000000336013607166147017471 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am VPATH = \ $(top_srcdir)/module/icp \ $(top_srcdir)/lib/libicp # Includes kernel code, generate warnings for large stack frames AM_CFLAGS += $(FRAME_LARGER_THAN) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/module/icp/include \ -I$(top_srcdir)/lib/libspl/include noinst_LTLIBRARIES = libicp.la if TARGET_ASM_X86_64 ASM_SOURCES_C = asm-x86_64/aes/aeskey.c ASM_SOURCES_AS = \ asm-x86_64/aes/aes_amd64.S \ asm-x86_64/aes/aes_aesni.S \ asm-x86_64/modes/gcm_pclmulqdq.S \ asm-x86_64/sha1/sha1-x86_64.S \ asm-x86_64/sha2/sha256_impl.S \ asm-x86_64/sha2/sha512_impl.S endif if TARGET_ASM_I386 ASM_SOURCES_C = ASM_SOURCES_AS = endif if TARGET_ASM_GENERIC ASM_SOURCES_C = ASM_SOURCES_AS = endif USER_C = USER_ASM = KERNEL_C = \ spi/kcf_spi.c \ api/kcf_ctxops.c \ api/kcf_digest.c \ api/kcf_cipher.c \ api/kcf_miscapi.c \ api/kcf_mac.c \ algs/aes/aes_impl_aesni.c \ algs/aes/aes_impl_generic.c \ algs/aes/aes_impl_x86-64.c \ algs/aes/aes_impl.c \ algs/aes/aes_modes.c \ algs/edonr/edonr.c \ algs/modes/modes.c \ algs/modes/cbc.c \ algs/modes/gcm_generic.c \ algs/modes/gcm_pclmulqdq.c \ algs/modes/gcm.c \ algs/modes/ctr.c \ algs/modes/ccm.c \ algs/modes/ecb.c \ algs/sha1/sha1.c \ algs/sha2/sha2.c \ algs/skein/skein.c \ algs/skein/skein_block.c \ algs/skein/skein_iv.c \ illumos-crypto.c \ io/aes.c \ io/edonr_mod.c \ io/sha1_mod.c \ io/sha2_mod.c \ io/skein_mod.c \ os/modhash.c \ os/modconf.c \ core/kcf_sched.c \ core/kcf_prov_lib.c \ core/kcf_callprov.c \ core/kcf_mech_tabs.c \ core/kcf_prov_tabs.c \ $(ASM_SOURCES_C) KERNEL_ASM = $(ASM_SOURCES_AS) nodist_libicp_la_SOURCES = \ $(USER_C) \ $(USER_ASM) \ $(KERNEL_C) \ $(KERNEL_ASM) libicp_la_LIBADD = -lrt zfs-0.8.3/lib/libicp/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775017473 xustar000000000000000030 mtime=1579730429.692148458 30 atime=1579730451.146837301 30 ctime=1579730471.456489396 zfs-0.8.3/lib/libicp/Makefile.in0000664016037001603700000013556413612142775017515 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libicp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libicp_la_DEPENDENCIES = am__objects_1 = am__dirstamp = $(am__leading_dot)dirstamp @TARGET_ASM_X86_64_TRUE@am__objects_2 = asm-x86_64/aes/aeskey.lo am__objects_3 = spi/kcf_spi.lo api/kcf_ctxops.lo api/kcf_digest.lo \ api/kcf_cipher.lo api/kcf_miscapi.lo api/kcf_mac.lo \ algs/aes/aes_impl_aesni.lo algs/aes/aes_impl_generic.lo \ algs/aes/aes_impl_x86-64.lo algs/aes/aes_impl.lo \ algs/aes/aes_modes.lo algs/edonr/edonr.lo algs/modes/modes.lo \ algs/modes/cbc.lo algs/modes/gcm_generic.lo \ algs/modes/gcm_pclmulqdq.lo algs/modes/gcm.lo \ algs/modes/ctr.lo algs/modes/ccm.lo algs/modes/ecb.lo \ algs/sha1/sha1.lo algs/sha2/sha2.lo algs/skein/skein.lo \ algs/skein/skein_block.lo algs/skein/skein_iv.lo \ illumos-crypto.lo io/aes.lo io/edonr_mod.lo io/sha1_mod.lo \ io/sha2_mod.lo io/skein_mod.lo os/modhash.lo os/modconf.lo \ core/kcf_sched.lo core/kcf_prov_lib.lo core/kcf_callprov.lo \ core/kcf_mech_tabs.lo core/kcf_prov_tabs.lo $(am__objects_2) @TARGET_ASM_X86_64_TRUE@am__objects_4 = asm-x86_64/aes/aes_amd64.lo \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/aes/aes_aesni.lo \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/modes/gcm_pclmulqdq.lo \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/sha1/sha1-x86_64.lo \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/sha2/sha256_impl.lo \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/sha2/sha512_impl.lo am__objects_5 = $(am__objects_4) nodist_libicp_la_OBJECTS = $(am__objects_1) $(am__objects_1) \ $(am__objects_3) $(am__objects_5) libicp_la_OBJECTS = $(nodist_libicp_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CCASFLAGS) $(CCASFLAGS) AM_V_CPPAS = $(am__v_CPPAS_$(V)) am__v_CPPAS_ = $(am__v_CPPAS_$(AM_DEFAULT_VERBOSITY)) am__v_CPPAS_0 = @echo " CPPAS " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libicp_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = \ $(top_srcdir)/module/icp \ $(top_srcdir)/lib/libicp ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/module/icp/include \ -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent # Includes kernel code, generate warnings for large stack frames AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) $(FRAME_LARGER_THAN) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) noinst_LTLIBRARIES = libicp.la @TARGET_ASM_GENERIC_TRUE@ASM_SOURCES_C = @TARGET_ASM_I386_TRUE@ASM_SOURCES_C = @TARGET_ASM_X86_64_TRUE@ASM_SOURCES_C = asm-x86_64/aes/aeskey.c @TARGET_ASM_GENERIC_TRUE@ASM_SOURCES_AS = @TARGET_ASM_I386_TRUE@ASM_SOURCES_AS = @TARGET_ASM_X86_64_TRUE@ASM_SOURCES_AS = \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/aes/aes_amd64.S \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/aes/aes_aesni.S \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/modes/gcm_pclmulqdq.S \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/sha1/sha1-x86_64.S \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/sha2/sha256_impl.S \ @TARGET_ASM_X86_64_TRUE@ asm-x86_64/sha2/sha512_impl.S USER_C = USER_ASM = KERNEL_C = \ spi/kcf_spi.c \ api/kcf_ctxops.c \ api/kcf_digest.c \ api/kcf_cipher.c \ api/kcf_miscapi.c \ api/kcf_mac.c \ algs/aes/aes_impl_aesni.c \ algs/aes/aes_impl_generic.c \ algs/aes/aes_impl_x86-64.c \ algs/aes/aes_impl.c \ algs/aes/aes_modes.c \ algs/edonr/edonr.c \ algs/modes/modes.c \ algs/modes/cbc.c \ algs/modes/gcm_generic.c \ algs/modes/gcm_pclmulqdq.c \ algs/modes/gcm.c \ algs/modes/ctr.c \ algs/modes/ccm.c \ algs/modes/ecb.c \ algs/sha1/sha1.c \ algs/sha2/sha2.c \ algs/skein/skein.c \ algs/skein/skein_block.c \ algs/skein/skein_iv.c \ illumos-crypto.c \ io/aes.c \ io/edonr_mod.c \ io/sha1_mod.c \ io/sha2_mod.c \ io/skein_mod.c \ os/modhash.c \ os/modconf.c \ core/kcf_sched.c \ core/kcf_prov_lib.c \ core/kcf_callprov.c \ core/kcf_mech_tabs.c \ core/kcf_prov_tabs.c \ $(ASM_SOURCES_C) KERNEL_ASM = $(ASM_SOURCES_AS) nodist_libicp_la_SOURCES = \ $(USER_C) \ $(USER_ASM) \ $(KERNEL_C) \ $(KERNEL_ASM) libicp_la_LIBADD = -lrt all: all-am .SUFFIXES: .SUFFIXES: .S .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libicp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libicp/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done spi/$(am__dirstamp): @$(MKDIR_P) spi @: > spi/$(am__dirstamp) spi/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) spi/$(DEPDIR) @: > spi/$(DEPDIR)/$(am__dirstamp) spi/kcf_spi.lo: spi/$(am__dirstamp) spi/$(DEPDIR)/$(am__dirstamp) api/$(am__dirstamp): @$(MKDIR_P) api @: > api/$(am__dirstamp) api/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) api/$(DEPDIR) @: > api/$(DEPDIR)/$(am__dirstamp) api/kcf_ctxops.lo: api/$(am__dirstamp) api/$(DEPDIR)/$(am__dirstamp) api/kcf_digest.lo: api/$(am__dirstamp) api/$(DEPDIR)/$(am__dirstamp) api/kcf_cipher.lo: api/$(am__dirstamp) api/$(DEPDIR)/$(am__dirstamp) api/kcf_miscapi.lo: api/$(am__dirstamp) api/$(DEPDIR)/$(am__dirstamp) api/kcf_mac.lo: api/$(am__dirstamp) api/$(DEPDIR)/$(am__dirstamp) algs/aes/$(am__dirstamp): @$(MKDIR_P) algs/aes @: > algs/aes/$(am__dirstamp) algs/aes/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) algs/aes/$(DEPDIR) @: > algs/aes/$(DEPDIR)/$(am__dirstamp) algs/aes/aes_impl_aesni.lo: algs/aes/$(am__dirstamp) \ algs/aes/$(DEPDIR)/$(am__dirstamp) algs/aes/aes_impl_generic.lo: algs/aes/$(am__dirstamp) \ algs/aes/$(DEPDIR)/$(am__dirstamp) algs/aes/aes_impl_x86-64.lo: algs/aes/$(am__dirstamp) \ algs/aes/$(DEPDIR)/$(am__dirstamp) algs/aes/aes_impl.lo: algs/aes/$(am__dirstamp) \ algs/aes/$(DEPDIR)/$(am__dirstamp) algs/aes/aes_modes.lo: algs/aes/$(am__dirstamp) \ algs/aes/$(DEPDIR)/$(am__dirstamp) algs/edonr/$(am__dirstamp): @$(MKDIR_P) algs/edonr @: > algs/edonr/$(am__dirstamp) algs/edonr/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) algs/edonr/$(DEPDIR) @: > algs/edonr/$(DEPDIR)/$(am__dirstamp) algs/edonr/edonr.lo: algs/edonr/$(am__dirstamp) \ algs/edonr/$(DEPDIR)/$(am__dirstamp) algs/modes/$(am__dirstamp): @$(MKDIR_P) algs/modes @: > algs/modes/$(am__dirstamp) algs/modes/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) algs/modes/$(DEPDIR) @: > algs/modes/$(DEPDIR)/$(am__dirstamp) algs/modes/modes.lo: algs/modes/$(am__dirstamp) \ algs/modes/$(DEPDIR)/$(am__dirstamp) algs/modes/cbc.lo: algs/modes/$(am__dirstamp) \ algs/modes/$(DEPDIR)/$(am__dirstamp) algs/modes/gcm_generic.lo: algs/modes/$(am__dirstamp) \ algs/modes/$(DEPDIR)/$(am__dirstamp) algs/modes/gcm_pclmulqdq.lo: algs/modes/$(am__dirstamp) \ algs/modes/$(DEPDIR)/$(am__dirstamp) algs/modes/gcm.lo: algs/modes/$(am__dirstamp) \ algs/modes/$(DEPDIR)/$(am__dirstamp) algs/modes/ctr.lo: algs/modes/$(am__dirstamp) \ algs/modes/$(DEPDIR)/$(am__dirstamp) algs/modes/ccm.lo: algs/modes/$(am__dirstamp) \ algs/modes/$(DEPDIR)/$(am__dirstamp) algs/modes/ecb.lo: algs/modes/$(am__dirstamp) \ algs/modes/$(DEPDIR)/$(am__dirstamp) algs/sha1/$(am__dirstamp): @$(MKDIR_P) algs/sha1 @: > algs/sha1/$(am__dirstamp) algs/sha1/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) algs/sha1/$(DEPDIR) @: > algs/sha1/$(DEPDIR)/$(am__dirstamp) algs/sha1/sha1.lo: algs/sha1/$(am__dirstamp) \ algs/sha1/$(DEPDIR)/$(am__dirstamp) algs/sha2/$(am__dirstamp): @$(MKDIR_P) algs/sha2 @: > algs/sha2/$(am__dirstamp) algs/sha2/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) algs/sha2/$(DEPDIR) @: > algs/sha2/$(DEPDIR)/$(am__dirstamp) algs/sha2/sha2.lo: algs/sha2/$(am__dirstamp) \ algs/sha2/$(DEPDIR)/$(am__dirstamp) algs/skein/$(am__dirstamp): @$(MKDIR_P) algs/skein @: > algs/skein/$(am__dirstamp) algs/skein/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) algs/skein/$(DEPDIR) @: > algs/skein/$(DEPDIR)/$(am__dirstamp) algs/skein/skein.lo: algs/skein/$(am__dirstamp) \ algs/skein/$(DEPDIR)/$(am__dirstamp) algs/skein/skein_block.lo: algs/skein/$(am__dirstamp) \ algs/skein/$(DEPDIR)/$(am__dirstamp) algs/skein/skein_iv.lo: algs/skein/$(am__dirstamp) \ algs/skein/$(DEPDIR)/$(am__dirstamp) io/$(am__dirstamp): @$(MKDIR_P) io @: > io/$(am__dirstamp) io/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) io/$(DEPDIR) @: > io/$(DEPDIR)/$(am__dirstamp) io/aes.lo: io/$(am__dirstamp) io/$(DEPDIR)/$(am__dirstamp) io/edonr_mod.lo: io/$(am__dirstamp) io/$(DEPDIR)/$(am__dirstamp) io/sha1_mod.lo: io/$(am__dirstamp) io/$(DEPDIR)/$(am__dirstamp) io/sha2_mod.lo: io/$(am__dirstamp) io/$(DEPDIR)/$(am__dirstamp) io/skein_mod.lo: io/$(am__dirstamp) io/$(DEPDIR)/$(am__dirstamp) os/$(am__dirstamp): @$(MKDIR_P) os @: > os/$(am__dirstamp) os/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) os/$(DEPDIR) @: > os/$(DEPDIR)/$(am__dirstamp) os/modhash.lo: os/$(am__dirstamp) os/$(DEPDIR)/$(am__dirstamp) os/modconf.lo: os/$(am__dirstamp) os/$(DEPDIR)/$(am__dirstamp) core/$(am__dirstamp): @$(MKDIR_P) core @: > core/$(am__dirstamp) core/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) core/$(DEPDIR) @: > core/$(DEPDIR)/$(am__dirstamp) core/kcf_sched.lo: core/$(am__dirstamp) core/$(DEPDIR)/$(am__dirstamp) core/kcf_prov_lib.lo: core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/kcf_callprov.lo: core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/kcf_mech_tabs.lo: core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) core/kcf_prov_tabs.lo: core/$(am__dirstamp) \ core/$(DEPDIR)/$(am__dirstamp) asm-x86_64/aes/$(am__dirstamp): @$(MKDIR_P) asm-x86_64/aes @: > asm-x86_64/aes/$(am__dirstamp) asm-x86_64/aes/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) asm-x86_64/aes/$(DEPDIR) @: > asm-x86_64/aes/$(DEPDIR)/$(am__dirstamp) asm-x86_64/aes/aeskey.lo: asm-x86_64/aes/$(am__dirstamp) \ asm-x86_64/aes/$(DEPDIR)/$(am__dirstamp) asm-x86_64/aes/aes_amd64.lo: asm-x86_64/aes/$(am__dirstamp) \ asm-x86_64/aes/$(DEPDIR)/$(am__dirstamp) asm-x86_64/aes/aes_aesni.lo: asm-x86_64/aes/$(am__dirstamp) \ asm-x86_64/aes/$(DEPDIR)/$(am__dirstamp) asm-x86_64/modes/$(am__dirstamp): @$(MKDIR_P) asm-x86_64/modes @: > asm-x86_64/modes/$(am__dirstamp) asm-x86_64/modes/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) asm-x86_64/modes/$(DEPDIR) @: > asm-x86_64/modes/$(DEPDIR)/$(am__dirstamp) asm-x86_64/modes/gcm_pclmulqdq.lo: asm-x86_64/modes/$(am__dirstamp) \ asm-x86_64/modes/$(DEPDIR)/$(am__dirstamp) asm-x86_64/sha1/$(am__dirstamp): @$(MKDIR_P) asm-x86_64/sha1 @: > asm-x86_64/sha1/$(am__dirstamp) asm-x86_64/sha1/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) asm-x86_64/sha1/$(DEPDIR) @: > asm-x86_64/sha1/$(DEPDIR)/$(am__dirstamp) asm-x86_64/sha1/sha1-x86_64.lo: asm-x86_64/sha1/$(am__dirstamp) \ asm-x86_64/sha1/$(DEPDIR)/$(am__dirstamp) asm-x86_64/sha2/$(am__dirstamp): @$(MKDIR_P) asm-x86_64/sha2 @: > asm-x86_64/sha2/$(am__dirstamp) asm-x86_64/sha2/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) asm-x86_64/sha2/$(DEPDIR) @: > asm-x86_64/sha2/$(DEPDIR)/$(am__dirstamp) asm-x86_64/sha2/sha256_impl.lo: asm-x86_64/sha2/$(am__dirstamp) \ asm-x86_64/sha2/$(DEPDIR)/$(am__dirstamp) asm-x86_64/sha2/sha512_impl.lo: asm-x86_64/sha2/$(am__dirstamp) \ asm-x86_64/sha2/$(DEPDIR)/$(am__dirstamp) libicp.la: $(libicp_la_OBJECTS) $(libicp_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libicp_la_OBJECTS) $(libicp_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f algs/aes/aes_impl.$(OBJEXT) -rm -f algs/aes/aes_impl.lo -rm -f algs/aes/aes_impl_aesni.$(OBJEXT) -rm -f algs/aes/aes_impl_aesni.lo -rm -f algs/aes/aes_impl_generic.$(OBJEXT) -rm -f algs/aes/aes_impl_generic.lo -rm -f algs/aes/aes_impl_x86-64.$(OBJEXT) -rm -f algs/aes/aes_impl_x86-64.lo -rm -f algs/aes/aes_modes.$(OBJEXT) -rm -f algs/aes/aes_modes.lo -rm -f algs/edonr/edonr.$(OBJEXT) -rm -f algs/edonr/edonr.lo -rm -f algs/modes/cbc.$(OBJEXT) -rm -f algs/modes/cbc.lo -rm -f algs/modes/ccm.$(OBJEXT) -rm -f algs/modes/ccm.lo -rm -f algs/modes/ctr.$(OBJEXT) -rm -f algs/modes/ctr.lo -rm -f algs/modes/ecb.$(OBJEXT) -rm -f algs/modes/ecb.lo -rm -f algs/modes/gcm.$(OBJEXT) -rm -f algs/modes/gcm.lo -rm -f algs/modes/gcm_generic.$(OBJEXT) -rm -f algs/modes/gcm_generic.lo -rm -f algs/modes/gcm_pclmulqdq.$(OBJEXT) -rm -f algs/modes/gcm_pclmulqdq.lo -rm -f algs/modes/modes.$(OBJEXT) -rm -f algs/modes/modes.lo -rm -f algs/sha1/sha1.$(OBJEXT) -rm -f algs/sha1/sha1.lo -rm -f algs/sha2/sha2.$(OBJEXT) -rm -f algs/sha2/sha2.lo -rm -f algs/skein/skein.$(OBJEXT) -rm -f algs/skein/skein.lo -rm -f algs/skein/skein_block.$(OBJEXT) -rm -f algs/skein/skein_block.lo -rm -f algs/skein/skein_iv.$(OBJEXT) -rm -f algs/skein/skein_iv.lo -rm -f api/kcf_cipher.$(OBJEXT) -rm -f api/kcf_cipher.lo -rm -f api/kcf_ctxops.$(OBJEXT) -rm -f api/kcf_ctxops.lo -rm -f api/kcf_digest.$(OBJEXT) -rm -f api/kcf_digest.lo -rm -f api/kcf_mac.$(OBJEXT) -rm -f api/kcf_mac.lo -rm -f api/kcf_miscapi.$(OBJEXT) -rm -f api/kcf_miscapi.lo -rm -f asm-x86_64/aes/aes_aesni.$(OBJEXT) -rm -f asm-x86_64/aes/aes_aesni.lo -rm -f asm-x86_64/aes/aes_amd64.$(OBJEXT) -rm -f asm-x86_64/aes/aes_amd64.lo -rm -f asm-x86_64/aes/aeskey.$(OBJEXT) -rm -f asm-x86_64/aes/aeskey.lo -rm -f asm-x86_64/modes/gcm_pclmulqdq.$(OBJEXT) -rm -f asm-x86_64/modes/gcm_pclmulqdq.lo -rm -f asm-x86_64/sha1/sha1-x86_64.$(OBJEXT) -rm -f asm-x86_64/sha1/sha1-x86_64.lo -rm -f asm-x86_64/sha2/sha256_impl.$(OBJEXT) -rm -f asm-x86_64/sha2/sha256_impl.lo -rm -f asm-x86_64/sha2/sha512_impl.$(OBJEXT) -rm -f asm-x86_64/sha2/sha512_impl.lo -rm -f core/kcf_callprov.$(OBJEXT) -rm -f core/kcf_callprov.lo -rm -f core/kcf_mech_tabs.$(OBJEXT) -rm -f core/kcf_mech_tabs.lo -rm -f core/kcf_prov_lib.$(OBJEXT) -rm -f core/kcf_prov_lib.lo -rm -f core/kcf_prov_tabs.$(OBJEXT) -rm -f core/kcf_prov_tabs.lo -rm -f core/kcf_sched.$(OBJEXT) -rm -f core/kcf_sched.lo -rm -f io/aes.$(OBJEXT) -rm -f io/aes.lo -rm -f io/edonr_mod.$(OBJEXT) -rm -f io/edonr_mod.lo -rm -f io/sha1_mod.$(OBJEXT) -rm -f io/sha1_mod.lo -rm -f io/sha2_mod.$(OBJEXT) -rm -f io/sha2_mod.lo -rm -f io/skein_mod.$(OBJEXT) -rm -f io/skein_mod.lo -rm -f os/modconf.$(OBJEXT) -rm -f os/modconf.lo -rm -f os/modhash.$(OBJEXT) -rm -f os/modhash.lo -rm -f spi/kcf_spi.$(OBJEXT) -rm -f spi/kcf_spi.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/illumos-crypto.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/aes/$(DEPDIR)/aes_impl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/aes/$(DEPDIR)/aes_impl_aesni.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/aes/$(DEPDIR)/aes_impl_generic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/aes/$(DEPDIR)/aes_impl_x86-64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/aes/$(DEPDIR)/aes_modes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/edonr/$(DEPDIR)/edonr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/modes/$(DEPDIR)/cbc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/modes/$(DEPDIR)/ccm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/modes/$(DEPDIR)/ctr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/modes/$(DEPDIR)/ecb.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/modes/$(DEPDIR)/gcm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/modes/$(DEPDIR)/gcm_generic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/modes/$(DEPDIR)/gcm_pclmulqdq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/modes/$(DEPDIR)/modes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/sha1/$(DEPDIR)/sha1.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/sha2/$(DEPDIR)/sha2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/skein/$(DEPDIR)/skein.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/skein/$(DEPDIR)/skein_block.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@algs/skein/$(DEPDIR)/skein_iv.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@api/$(DEPDIR)/kcf_cipher.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@api/$(DEPDIR)/kcf_ctxops.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@api/$(DEPDIR)/kcf_digest.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@api/$(DEPDIR)/kcf_mac.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@api/$(DEPDIR)/kcf_miscapi.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@asm-x86_64/aes/$(DEPDIR)/aes_aesni.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@asm-x86_64/aes/$(DEPDIR)/aes_amd64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@asm-x86_64/aes/$(DEPDIR)/aeskey.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@asm-x86_64/modes/$(DEPDIR)/gcm_pclmulqdq.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@asm-x86_64/sha1/$(DEPDIR)/sha1-x86_64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@asm-x86_64/sha2/$(DEPDIR)/sha256_impl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@asm-x86_64/sha2/$(DEPDIR)/sha512_impl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/kcf_callprov.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/kcf_mech_tabs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/kcf_prov_lib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/kcf_prov_tabs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@core/$(DEPDIR)/kcf_sched.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@io/$(DEPDIR)/aes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@io/$(DEPDIR)/edonr_mod.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@io/$(DEPDIR)/sha1_mod.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@io/$(DEPDIR)/sha2_mod.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@io/$(DEPDIR)/skein_mod.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/modconf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@os/$(DEPDIR)/modhash.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@spi/$(DEPDIR)/kcf_spi.Plo@am__quote@ .S.o: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $< .S.obj: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .S.lo: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $< .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf algs/aes/.libs algs/aes/_libs -rm -rf algs/edonr/.libs algs/edonr/_libs -rm -rf algs/modes/.libs algs/modes/_libs -rm -rf algs/sha1/.libs algs/sha1/_libs -rm -rf algs/sha2/.libs algs/sha2/_libs -rm -rf algs/skein/.libs algs/skein/_libs -rm -rf api/.libs api/_libs -rm -rf asm-x86_64/aes/.libs asm-x86_64/aes/_libs -rm -rf asm-x86_64/modes/.libs asm-x86_64/modes/_libs -rm -rf asm-x86_64/sha1/.libs asm-x86_64/sha1/_libs -rm -rf asm-x86_64/sha2/.libs asm-x86_64/sha2/_libs -rm -rf core/.libs core/_libs -rm -rf io/.libs io/_libs -rm -rf os/.libs os/_libs -rm -rf spi/.libs spi/_libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f algs/aes/$(DEPDIR)/$(am__dirstamp) -rm -f algs/aes/$(am__dirstamp) -rm -f algs/edonr/$(DEPDIR)/$(am__dirstamp) -rm -f algs/edonr/$(am__dirstamp) -rm -f algs/modes/$(DEPDIR)/$(am__dirstamp) -rm -f algs/modes/$(am__dirstamp) -rm -f algs/sha1/$(DEPDIR)/$(am__dirstamp) -rm -f algs/sha1/$(am__dirstamp) -rm -f algs/sha2/$(DEPDIR)/$(am__dirstamp) -rm -f algs/sha2/$(am__dirstamp) -rm -f algs/skein/$(DEPDIR)/$(am__dirstamp) -rm -f algs/skein/$(am__dirstamp) -rm -f api/$(DEPDIR)/$(am__dirstamp) -rm -f api/$(am__dirstamp) -rm -f asm-x86_64/aes/$(DEPDIR)/$(am__dirstamp) -rm -f asm-x86_64/aes/$(am__dirstamp) -rm -f asm-x86_64/modes/$(DEPDIR)/$(am__dirstamp) -rm -f asm-x86_64/modes/$(am__dirstamp) -rm -f asm-x86_64/sha1/$(DEPDIR)/$(am__dirstamp) -rm -f asm-x86_64/sha1/$(am__dirstamp) -rm -f asm-x86_64/sha2/$(DEPDIR)/$(am__dirstamp) -rm -f asm-x86_64/sha2/$(am__dirstamp) -rm -f core/$(DEPDIR)/$(am__dirstamp) -rm -f core/$(am__dirstamp) -rm -f io/$(DEPDIR)/$(am__dirstamp) -rm -f io/$(am__dirstamp) -rm -f os/$(DEPDIR)/$(am__dirstamp) -rm -f os/$(am__dirstamp) -rm -f spi/$(DEPDIR)/$(am__dirstamp) -rm -f spi/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) algs/aes/$(DEPDIR) algs/edonr/$(DEPDIR) algs/modes/$(DEPDIR) algs/sha1/$(DEPDIR) algs/sha2/$(DEPDIR) algs/skein/$(DEPDIR) api/$(DEPDIR) asm-x86_64/aes/$(DEPDIR) asm-x86_64/modes/$(DEPDIR) asm-x86_64/sha1/$(DEPDIR) asm-x86_64/sha2/$(DEPDIR) core/$(DEPDIR) io/$(DEPDIR) os/$(DEPDIR) spi/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) algs/aes/$(DEPDIR) algs/edonr/$(DEPDIR) algs/modes/$(DEPDIR) algs/sha1/$(DEPDIR) algs/sha2/$(DEPDIR) algs/skein/$(DEPDIR) api/$(DEPDIR) asm-x86_64/aes/$(DEPDIR) asm-x86_64/modes/$(DEPDIR) asm-x86_64/sha1/$(DEPDIR) asm-x86_64/sha2/$(DEPDIR) core/$(DEPDIR) io/$(DEPDIR) os/$(DEPDIR) spi/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/libspl0000644000000000000000000000013213612143047015365 xustar000000000000000030 mtime=1579730471.621494694 30 atime=1579730489.073055035 30 ctime=1579730471.621494694 zfs-0.8.3/lib/libspl/0000775016037001603700000000000013612143047015446 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/PaxHeaders.151519/timestamp.c0000644000000000000000000000007413607166132017622 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.605494181 zfs-0.8.3/lib/libspl/timestamp.c0000644016037001603700000000330613607166132017621 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include #include "statcommon.h" #ifndef _DATE_FMT #ifdef D_T_FMT #define _DATE_FMT D_T_FMT #else /* D_T_FMT */ #define _DATE_FMT "%+" #endif /* !D_T_FMT */ #endif /* _DATE_FMT */ /* * Print timestamp as decimal reprentation of time_t value (-T u was specified) * or in date(1) format (-T d was specified). */ void print_timestamp(uint_t timestamp_fmt) { time_t t = time(NULL); static char *fmt = NULL; /* We only need to retrieve this once per invocation */ if (fmt == NULL) fmt = nl_langinfo(_DATE_FMT); if (timestamp_fmt == UDATE) { (void) printf("%ld\n", t); } else if (timestamp_fmt == DDATE) { char dstr[64]; int len; len = strftime(dstr, sizeof (dstr), fmt, localtime(&t)); if (len > 0) (void) printf("%s\n", dstr); } } zfs-0.8.3/lib/libspl/PaxHeaders.151519/zone.c0000644000000000000000000000007413612141522016562 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.607494245 zfs-0.8.3/lib/libspl/zone.c0000644016037001603700000000276213612141522016566 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Ricardo Correia. All rights reserved. * Use is subject to license terms. */ #include #include #include int aok = 0; zoneid_t getzoneid() { return (GLOBAL_ZONEID); } zoneid_t getzoneidbyname(const char *name) { if (name == NULL) return (GLOBAL_ZONEID); if (strcmp(name, GLOBAL_ZONEID_NAME) == 0) return (GLOBAL_ZONEID); return (EINVAL); } ssize_t getzonenamebyid(zoneid_t id, char *buf, size_t buflen) { if (id != GLOBAL_ZONEID) return (EINVAL); ssize_t ret = strlen(GLOBAL_ZONEID_NAME) + 1; if (buf == NULL || buflen == 0) return (ret); strncpy(buf, GLOBAL_ZONEID_NAME, buflen); buf[buflen - 1] = '\0'; return (ret); } zfs-0.8.3/lib/libspl/PaxHeaders.151519/getmntany.c0000644000000000000000000000007413607166147017633 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.592493762 zfs-0.8.3/lib/libspl/getmntany.c0000644016037001603700000000460013607166147017630 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Copyright 2006 Ricardo Correia. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1988 AT&T */ /* All Rights Reserved */ #include #include #include #include #include #include #include #include #define BUFSIZE (MNT_LINE_MAX + 2) __thread char buf[BUFSIZE]; #define DIFF(xx) ( \ (mrefp->xx != NULL) && \ (mgetp->xx == NULL || strcmp(mrefp->xx, mgetp->xx) != 0)) int getmntany(FILE *fp, struct mnttab *mgetp, struct mnttab *mrefp) { int ret; while ( ((ret = _sol_getmntent(fp, mgetp)) == 0) && ( DIFF(mnt_special) || DIFF(mnt_mountp) || DIFF(mnt_fstype) || DIFF(mnt_mntopts))) { } return (ret); } int _sol_getmntent(FILE *fp, struct mnttab *mgetp) { struct mntent mntbuf; struct mntent *ret; ret = getmntent_r(fp, &mntbuf, buf, BUFSIZE); if (ret != NULL) { mgetp->mnt_special = mntbuf.mnt_fsname; mgetp->mnt_mountp = mntbuf.mnt_dir; mgetp->mnt_fstype = mntbuf.mnt_type; mgetp->mnt_mntopts = mntbuf.mnt_opts; return (0); } if (feof(fp)) return (-1); return (MNT_TOOLONG); } int getextmntent(FILE *fp, struct extmnttab *mp, int len) { int ret; struct stat64 st; ret = _sol_getmntent(fp, (struct mnttab *)mp); if (ret == 0) { if (stat64(mp->mnt_mountp, &st) != 0) { mp->mnt_major = 0; mp->mnt_minor = 0; return (ret); } mp->mnt_major = major(st.st_dev); mp->mnt_minor = minor(st.st_dev); } return (ret); } zfs-0.8.3/lib/libspl/PaxHeaders.151519/getexecname.c0000644000000000000000000000007413607166147020112 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.587493602 zfs-0.8.3/lib/libspl/getexecname.c0000644016037001603700000000276013607166147020114 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include #include const char * getexecname(void) { static char execname[PATH_MAX + 1] = ""; static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER; char *ptr = NULL; ssize_t rc; (void) pthread_mutex_lock(&mtx); if (strlen(execname) == 0) { rc = readlink("/proc/self/exe", execname, sizeof (execname) - 1); if (rc == -1) { execname[0] = '\0'; } else { execname[rc] = '\0'; ptr = execname; } } else { ptr = execname; } (void) pthread_mutex_unlock(&mtx); return (ptr); } zfs-0.8.3/lib/libspl/PaxHeaders.151519/strlcat.c0000644000000000000000000000007413607166132017273 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.601494053 zfs-0.8.3/lib/libspl/strlcat.c0000644016037001603700000000316613607166132017276 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef HAVE_STRLCAT #include #include /* * Appends src to the dstsize buffer at dst. The append will never * overflow the destination buffer and the buffer will always be null * terminated. Never reference beyond &dst[dstsize-1] when computing * the length of the pre-existing string. */ size_t strlcat(char *dst, const char *src, size_t dstsize) { char *df = dst; size_t left = dstsize; size_t l1; size_t l2 = strlen(src); size_t copied; while (left-- != 0 && *df != '\0') df++; l1 = df - dst; if (dstsize == l1) return (l1 + l2); copied = l1 + l2 >= dstsize ? dstsize - l1 - 1 : l2; (void) memcpy(dst + l1, src, copied); dst[l1+copied] = '\0'; return (l1 + l2); } #endif zfs-0.8.3/lib/libspl/PaxHeaders.151519/mkdirp.c0000644000000000000000000000007413612141513017075 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.596493892 zfs-0.8.3/lib/libspl/mkdirp.c0000644016037001603700000001057613612141513017103 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1988 AT&T */ /* All Rights Reserved */ /* * Creates directory and it's parents if the parents do not * exist yet. * * Returns -1 if fails for reasons other than non-existing * parents. * Does NOT simplify pathnames with . or .. in them. */ #include #include #include #include #include #include #include static char *simplify(const char *str); int mkdirp(const char *d, mode_t mode) { char *endptr, *ptr, *slash, *str; str = simplify(d); /* If space couldn't be allocated for the simplified names, return. */ if (str == NULL) return (-1); /* Try to make the directory */ if (mkdir(str, mode) == 0) { free(str); return (0); } if (errno != ENOENT) { free(str); return (-1); } endptr = strrchr(str, '\0'); slash = strrchr(str, '/'); /* Search upward for the non-existing parent */ while (slash != NULL) { ptr = slash; *ptr = '\0'; /* If reached an existing parent, break */ if (access(str, F_OK) == 0) break; /* If non-existing parent */ else { slash = strrchr(str, '/'); /* If under / or current directory, make it. */ if (slash == NULL || slash == str) { if (mkdir(str, mode) != 0 && errno != EEXIST) { free(str); return (-1); } break; } } } /* Create directories starting from upmost non-existing parent */ while ((ptr = strchr(str, '\0')) != endptr) { *ptr = '/'; if (mkdir(str, mode) != 0 && errno != EEXIST) { /* * If the mkdir fails because str already * exists (EEXIST), then str has the form * "existing-dir/..", and this is really * ok. (Remember, this loop is creating the * portion of the path that didn't exist) */ free(str); return (-1); } } free(str); return (0); } /* * simplify - given a pathname, simplify that path by removing * duplicate contiguous slashes. * * A simplified copy of the argument is returned to the * caller, or NULL is returned on error. * * The caller should handle error reporting based upon the * returned value, and should free the returned value, * when appropriate. */ static char * simplify(const char *str) { int i; size_t mbPathlen; /* length of multi-byte path */ size_t wcPathlen; /* length of wide-character path */ wchar_t *wptr; /* scratch pointer */ wchar_t *wcPath; /* wide-character version of the path */ char *mbPath; /* The copy fo the path to be returned */ /* * bail out if there is nothing there. */ if (!str) { errno = ENOENT; return (NULL); } /* * Get a copy of the argument. */ if ((mbPath = strdup(str)) == NULL) { return (NULL); } /* * convert the multi-byte version of the path to a * wide-character rendering, for doing our figuring. */ mbPathlen = strlen(mbPath); if ((wcPath = calloc(mbPathlen+1, sizeof (wchar_t))) == NULL) { free(mbPath); return (NULL); } if ((wcPathlen = mbstowcs(wcPath, mbPath, mbPathlen)) == (size_t)-1) { free(mbPath); free(wcPath); return (NULL); } /* * remove duplicate slashes first ("//../" -> "/") */ for (wptr = wcPath, i = 0; i < wcPathlen; i++) { *wptr++ = wcPath[i]; if (wcPath[i] == '/') { i++; while (wcPath[i] == '/') { i++; } i--; } } *wptr = '\0'; /* * now convert back to the multi-byte format. */ if (wcstombs(mbPath, wcPath, mbPathlen) == (size_t)-1) { free(mbPath); free(wcPath); return (NULL); } free(wcPath); return (mbPath); } zfs-0.8.3/lib/libspl/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147017515 xustar000000000000000030 atime=1579730429.851153563 30 ctime=1579730471.582493442 zfs-0.8.3/lib/libspl/Makefile.am0000644016037001603700000000127213607166147017514 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am VPATH = \ $(top_srcdir)/lib/libspl \ $(top_srcdir)/lib/libspl/$(TARGET_ASM_DIR) SUBDIRS = include $(TARGET_ASM_DIR) DIST_SUBDIRS = include asm-generic asm-i386 asm-x86_64 DEFAULT_INCLUDES += \ -I$(top_srcdir)/lib/libspl/include AM_CFLAGS += $(LIBTIRPC_CFLAGS) AM_CCASFLAGS = \ $(CFLAGS) noinst_LTLIBRARIES = libspl.la USER_C = \ getexecname.c \ gethostid.c \ getmntany.c \ list.c \ mkdirp.c \ page.c \ strlcat.c \ strlcpy.c \ timestamp.c \ zone.c \ include/sys/list.h \ include/sys/list_impl.h USER_ASM = atomic.S nodist_libspl_la_SOURCES = \ $(USER_C) \ $(USER_ASM) libspl_la_LIBADD = -lrt $(LIBTIRPC_LIBS) EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libspl/PaxHeaders.151519/include0000644000000000000000000000013213612143047017010 xustar000000000000000030 mtime=1579730471.732498259 30 atime=1579730489.074055067 30 ctime=1579730471.732498259 zfs-0.8.3/lib/libspl/include/0000775016037001603700000000000013612143047017071 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/zone.h0000644000000000000000000000007413607166132020222 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.718497809 zfs-0.8.3/lib/libspl/include/zone.h0000644016037001603700000000260713607166132020224 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_ZONE_H #define _LIBSPL_ZONE_H #include #include #include #ifdef __cplusplus extern "C" { #endif #define GLOBAL_ZONEID 0 #define GLOBAL_ZONEID_NAME "global" /* * Functions for mapping between id and name for active zones. */ extern zoneid_t getzoneid(void); extern zoneid_t getzoneidbyname(const char *); extern ssize_t getzonenamebyid(zoneid_t, char *, size_t); #ifdef __cplusplus } #endif #endif /* _LIBSPL_ZONE_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/libdevinfo.h0000644000000000000000000000007413607166132021370 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.684496716 zfs-0.8.3/lib/libspl/include/libdevinfo.h0000644016037001603700000000202213607166132021361 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_LIBDEVINFO_H #define _LIBSPL_LIBDEVINFO_H #endif /* _LIBSPL_LIBDEVINFO_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/libshare.h0000644000000000000000000000007413607166132021040 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.688496846 zfs-0.8.3/lib/libspl/include/libshare.h0000644016037001603700000000773313607166132021047 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_LIBSHARE_H #define _LIBSPL_LIBSHARE_H typedef void *sa_handle_t; /* opaque handle to access core functions */ typedef void *sa_group_t; typedef void *sa_share_t; /* API Initialization */ #define SA_INIT_SHARE_API 0x0001 /* init share specific interface */ #define SA_INIT_CONTROL_API 0x0002 /* init control specific interface */ /* * defined error values */ #define SA_OK 0 #define SA_NO_SUCH_PATH 1 /* provided path doesn't exist */ #define SA_NO_MEMORY 2 /* no memory for data structures */ #define SA_DUPLICATE_NAME 3 /* object name is already in use */ #define SA_BAD_PATH 4 /* not a full path */ #define SA_NO_SUCH_GROUP 5 /* group is not defined */ #define SA_CONFIG_ERR 6 /* system configuration error */ #define SA_SYSTEM_ERR 7 /* system error, use errno */ #define SA_SYNTAX_ERR 8 /* syntax error on command line */ #define SA_NO_PERMISSION 9 /* no permission for operation */ #define SA_BUSY 10 /* resource is busy */ #define SA_NO_SUCH_PROP 11 /* property doesn't exist */ #define SA_INVALID_NAME 12 /* name of object is invalid */ #define SA_INVALID_PROTOCOL 13 /* specified protocol not valid */ #define SA_NOT_ALLOWED 14 /* operation not allowed */ #define SA_BAD_VALUE 15 /* bad value for property */ #define SA_INVALID_SECURITY 16 /* invalid security type */ #define SA_NO_SUCH_SECURITY 17 /* security set not found */ #define SA_VALUE_CONFLICT 18 /* property value conflict */ #define SA_NOT_IMPLEMENTED 19 /* plugin interface not implemented */ #define SA_INVALID_PATH 20 /* path is sub-dir of existing share */ #define SA_NOT_SUPPORTED 21 /* operation not supported for proto */ #define SA_PROP_SHARE_ONLY 22 /* property valid on share only */ #define SA_NOT_SHARED 23 /* path is not shared */ #define SA_NO_SUCH_RESOURCE 24 /* resource not found */ #define SA_RESOURCE_REQUIRED 25 /* resource name is required */ #define SA_MULTIPLE_ERROR 26 /* multiple protocols reported error */ #define SA_PATH_IS_SUBDIR 27 /* check_path found path is subdir */ #define SA_PATH_IS_PARENTDIR 28 /* check_path found path is parent */ #define SA_NO_SECTION 29 /* protocol requires section info */ #define SA_NO_SUCH_SECTION 30 /* no section found */ #define SA_NO_PROPERTIES 31 /* no properties found */ #define SA_PASSWORD_ENC 32 /* passwords must be encrypted */ #define SA_SHARE_EXISTS 33 /* path or file is already shared */ /* initialization */ extern sa_handle_t sa_init(int); extern void sa_fini(sa_handle_t); extern char *sa_errorstr(int); /* share control */ extern sa_share_t sa_find_share(sa_handle_t, char *); extern int sa_enable_share(sa_group_t, char *); extern int sa_disable_share(sa_share_t, char *); /* protocol specific interfaces */ extern int sa_parse_legacy_options(sa_group_t, char *, char *); /* ZFS functions */ extern boolean_t sa_needs_refresh(sa_handle_t handle); libzfs_handle_t *sa_get_zfs_handle(sa_handle_t handle); extern int sa_zfs_process_share(sa_handle_t handle, sa_group_t group, sa_share_t share, char *mountpoint, char *proto, zprop_source_t source, char *shareopts, char *sourcestr, char *dataset); #endif /* _LIBSPL_LIBSHARE_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/devid.h0000644000000000000000000000007313607166147020347 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730471.68149662 zfs-0.8.3/lib/libspl/include/devid.h0000644016037001603700000000200513607166147020342 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_DEVID_H #define _LIBSPL_DEVID_H #include #endif zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/thread.h0000644000000000000000000000007413607166132020516 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.706497424 zfs-0.8.3/lib/libspl/include/thread.h0000644016037001603700000000200613607166132020511 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_THREAD_H #define _LIBSPL_THREAD_H #endif /* _LIBSPL_THREAD_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/atomic.h0000644000000000000000000000007413612141513020513 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.679496556 zfs-0.8.3/lib/libspl/include/atomic.h0000644016037001603700000002575413612141513020525 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_ATOMIC_H #define _SYS_ATOMIC_H #include #include #ifdef __cplusplus extern "C" { #endif #if defined(__STDC__) /* * Increment target. */ extern void atomic_inc_8(volatile uint8_t *); extern void atomic_inc_uchar(volatile uchar_t *); extern void atomic_inc_16(volatile uint16_t *); extern void atomic_inc_ushort(volatile ushort_t *); extern void atomic_inc_32(volatile uint32_t *); extern void atomic_inc_uint(volatile uint_t *); extern void atomic_inc_ulong(volatile ulong_t *); #if defined(_INT64_TYPE) extern void atomic_inc_64(volatile uint64_t *); #endif /* * Decrement target */ extern void atomic_dec_8(volatile uint8_t *); extern void atomic_dec_uchar(volatile uchar_t *); extern void atomic_dec_16(volatile uint16_t *); extern void atomic_dec_ushort(volatile ushort_t *); extern void atomic_dec_32(volatile uint32_t *); extern void atomic_dec_uint(volatile uint_t *); extern void atomic_dec_ulong(volatile ulong_t *); #if defined(_INT64_TYPE) extern void atomic_dec_64(volatile uint64_t *); #endif /* * Add delta to target */ extern void atomic_add_8(volatile uint8_t *, int8_t); extern void atomic_add_char(volatile uchar_t *, signed char); extern void atomic_add_16(volatile uint16_t *, int16_t); extern void atomic_add_short(volatile ushort_t *, short); extern void atomic_add_32(volatile uint32_t *, int32_t); extern void atomic_add_int(volatile uint_t *, int); extern void atomic_add_ptr(volatile void *, ssize_t); extern void atomic_add_long(volatile ulong_t *, long); #if defined(_INT64_TYPE) extern void atomic_add_64(volatile uint64_t *, int64_t); #endif /* * Subtract delta from target */ extern void atomic_sub_8(volatile uint8_t *, int8_t); extern void atomic_sub_char(volatile uchar_t *, signed char); extern void atomic_sub_16(volatile uint16_t *, int16_t); extern void atomic_sub_short(volatile ushort_t *, short); extern void atomic_sub_32(volatile uint32_t *, int32_t); extern void atomic_sub_int(volatile uint_t *, int); extern void atomic_sub_ptr(volatile void *, ssize_t); extern void atomic_sub_long(volatile ulong_t *, long); #if defined(_INT64_TYPE) extern void atomic_sub_64(volatile uint64_t *, int64_t); #endif /* * logical OR bits with target */ extern void atomic_or_8(volatile uint8_t *, uint8_t); extern void atomic_or_uchar(volatile uchar_t *, uchar_t); extern void atomic_or_16(volatile uint16_t *, uint16_t); extern void atomic_or_ushort(volatile ushort_t *, ushort_t); extern void atomic_or_32(volatile uint32_t *, uint32_t); extern void atomic_or_uint(volatile uint_t *, uint_t); extern void atomic_or_ulong(volatile ulong_t *, ulong_t); #if defined(_INT64_TYPE) extern void atomic_or_64(volatile uint64_t *, uint64_t); #endif /* * logical AND bits with target */ extern void atomic_and_8(volatile uint8_t *, uint8_t); extern void atomic_and_uchar(volatile uchar_t *, uchar_t); extern void atomic_and_16(volatile uint16_t *, uint16_t); extern void atomic_and_ushort(volatile ushort_t *, ushort_t); extern void atomic_and_32(volatile uint32_t *, uint32_t); extern void atomic_and_uint(volatile uint_t *, uint_t); extern void atomic_and_ulong(volatile ulong_t *, ulong_t); #if defined(_INT64_TYPE) extern void atomic_and_64(volatile uint64_t *, uint64_t); #endif /* * As above, but return the new value. Note that these _nv() variants are * substantially more expensive on some platforms than the no-return-value * versions above, so don't use them unless you really need to know the * new value *atomically* (e.g. when decrementing a reference count and * checking whether it went to zero). */ /* * Increment target and return new value. */ extern uint8_t atomic_inc_8_nv(volatile uint8_t *); extern uchar_t atomic_inc_uchar_nv(volatile uchar_t *); extern uint16_t atomic_inc_16_nv(volatile uint16_t *); extern ushort_t atomic_inc_ushort_nv(volatile ushort_t *); extern uint32_t atomic_inc_32_nv(volatile uint32_t *); extern uint_t atomic_inc_uint_nv(volatile uint_t *); extern ulong_t atomic_inc_ulong_nv(volatile ulong_t *); #if defined(_INT64_TYPE) extern uint64_t atomic_inc_64_nv(volatile uint64_t *); #endif /* * Decrement target and return new value. */ extern uint8_t atomic_dec_8_nv(volatile uint8_t *); extern uchar_t atomic_dec_uchar_nv(volatile uchar_t *); extern uint16_t atomic_dec_16_nv(volatile uint16_t *); extern ushort_t atomic_dec_ushort_nv(volatile ushort_t *); extern uint32_t atomic_dec_32_nv(volatile uint32_t *); extern uint_t atomic_dec_uint_nv(volatile uint_t *); extern ulong_t atomic_dec_ulong_nv(volatile ulong_t *); #if defined(_INT64_TYPE) extern uint64_t atomic_dec_64_nv(volatile uint64_t *); #endif /* * Add delta to target */ extern uint8_t atomic_add_8_nv(volatile uint8_t *, int8_t); extern uchar_t atomic_add_char_nv(volatile uchar_t *, signed char); extern uint16_t atomic_add_16_nv(volatile uint16_t *, int16_t); extern ushort_t atomic_add_short_nv(volatile ushort_t *, short); extern uint32_t atomic_add_32_nv(volatile uint32_t *, int32_t); extern uint_t atomic_add_int_nv(volatile uint_t *, int); extern void *atomic_add_ptr_nv(volatile void *, ssize_t); extern ulong_t atomic_add_long_nv(volatile ulong_t *, long); #if defined(_INT64_TYPE) extern uint64_t atomic_add_64_nv(volatile uint64_t *, int64_t); #endif /* * Subtract delta from target */ extern uint8_t atomic_sub_8_nv(volatile uint8_t *, int8_t); extern uchar_t atomic_sub_char_nv(volatile uchar_t *, signed char); extern uint16_t atomic_sub_16_nv(volatile uint16_t *, int16_t); extern ushort_t atomic_sub_short_nv(volatile ushort_t *, short); extern uint32_t atomic_sub_32_nv(volatile uint32_t *, int32_t); extern uint_t atomic_sub_int_nv(volatile uint_t *, int); extern void *atomic_sub_ptr_nv(volatile void *, ssize_t); extern ulong_t atomic_sub_long_nv(volatile ulong_t *, long); #if defined(_INT64_TYPE) extern uint64_t atomic_sub_64_nv(volatile uint64_t *, int64_t); #endif /* * logical OR bits with target and return new value. */ extern uint8_t atomic_or_8_nv(volatile uint8_t *, uint8_t); extern uchar_t atomic_or_uchar_nv(volatile uchar_t *, uchar_t); extern uint16_t atomic_or_16_nv(volatile uint16_t *, uint16_t); extern ushort_t atomic_or_ushort_nv(volatile ushort_t *, ushort_t); extern uint32_t atomic_or_32_nv(volatile uint32_t *, uint32_t); extern uint_t atomic_or_uint_nv(volatile uint_t *, uint_t); extern ulong_t atomic_or_ulong_nv(volatile ulong_t *, ulong_t); #if defined(_INT64_TYPE) extern uint64_t atomic_or_64_nv(volatile uint64_t *, uint64_t); #endif /* * logical AND bits with target and return new value. */ extern uint8_t atomic_and_8_nv(volatile uint8_t *, uint8_t); extern uchar_t atomic_and_uchar_nv(volatile uchar_t *, uchar_t); extern uint16_t atomic_and_16_nv(volatile uint16_t *, uint16_t); extern ushort_t atomic_and_ushort_nv(volatile ushort_t *, ushort_t); extern uint32_t atomic_and_32_nv(volatile uint32_t *, uint32_t); extern uint_t atomic_and_uint_nv(volatile uint_t *, uint_t); extern ulong_t atomic_and_ulong_nv(volatile ulong_t *, ulong_t); #if defined(_INT64_TYPE) extern uint64_t atomic_and_64_nv(volatile uint64_t *, uint64_t); #endif /* * If *arg1 == arg2, set *arg1 = arg3; return old value */ extern uint8_t atomic_cas_8(volatile uint8_t *, uint8_t, uint8_t); extern uchar_t atomic_cas_uchar(volatile uchar_t *, uchar_t, uchar_t); extern uint16_t atomic_cas_16(volatile uint16_t *, uint16_t, uint16_t); extern ushort_t atomic_cas_ushort(volatile ushort_t *, ushort_t, ushort_t); extern uint32_t atomic_cas_32(volatile uint32_t *, uint32_t, uint32_t); extern uint_t atomic_cas_uint(volatile uint_t *, uint_t, uint_t); extern void *atomic_cas_ptr(volatile void *, void *, void *); extern ulong_t atomic_cas_ulong(volatile ulong_t *, ulong_t, ulong_t); #if defined(_INT64_TYPE) extern uint64_t atomic_cas_64(volatile uint64_t *, uint64_t, uint64_t); #endif /* * Swap target and return old value */ extern uint8_t atomic_swap_8(volatile uint8_t *, uint8_t); extern uchar_t atomic_swap_uchar(volatile uchar_t *, uchar_t); extern uint16_t atomic_swap_16(volatile uint16_t *, uint16_t); extern ushort_t atomic_swap_ushort(volatile ushort_t *, ushort_t); extern uint32_t atomic_swap_32(volatile uint32_t *, uint32_t); extern uint_t atomic_swap_uint(volatile uint_t *, uint_t); extern void *atomic_swap_ptr(volatile void *, void *); extern ulong_t atomic_swap_ulong(volatile ulong_t *, ulong_t); #if defined(_INT64_TYPE) extern uint64_t atomic_swap_64(volatile uint64_t *, uint64_t); #endif /* * Perform an exclusive atomic bit set/clear on a target. * Returns 0 if bit was successfully set/cleared, or -1 * if the bit was already set/cleared. */ extern int atomic_set_long_excl(volatile ulong_t *, uint_t); extern int atomic_clear_long_excl(volatile ulong_t *, uint_t); /* * Generic memory barrier used during lock entry, placed after the * memory operation that acquires the lock to guarantee that the lock * protects its data. No stores from after the memory barrier will * reach visibility, and no loads from after the barrier will be * resolved, before the lock acquisition reaches global visibility. */ extern void membar_enter(void); /* * Generic memory barrier used during lock exit, placed before the * memory operation that releases the lock to guarantee that the lock * protects its data. All loads and stores issued before the barrier * will be resolved before the subsequent lock update reaches visibility. */ extern void membar_exit(void); /* * Arrange that all stores issued before this point in the code reach * global visibility before any stores that follow; useful in producer * modules that update a data item, then set a flag that it is available. * The memory barrier guarantees that the available flag is not visible * earlier than the updated data, i.e. it imposes store ordering. */ extern void membar_producer(void); /* * Arrange that all loads issued before this point in the code are * completed before any subsequent loads; useful in consumer modules * that check to see if data is available and read the data. * The memory barrier guarantees that the data is not sampled until * after the available flag has been seen, i.e. it imposes load ordering. */ extern void membar_consumer(void); #endif /* __STDC__ */ #ifdef __cplusplus } #endif #endif /* _SYS_ATOMIC_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/assert.h0000644000000000000000000000007413612141522020540 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.677496492 zfs-0.8.3/lib/libspl/include/assert.h0000644016037001603700000001150113612141522020533 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include_next #ifndef _LIBSPL_ASSERT_H #define _LIBSPL_ASSERT_H #include #include #include #ifndef _KERNEL extern int aok; #endif static inline int libspl_assert(const char *buf, const char *file, const char *func, int line) { fprintf(stderr, "%s\n", buf); fprintf(stderr, "ASSERT at %s:%d:%s()", file, line, func); if (aok) { return (0); } abort(); } /* printf version of libspl_assert */ static inline void libspl_assertf(const char *file, const char *func, int line, char *format, ...) { va_list args; va_start(args, format); vfprintf(stderr, format, args); fprintf(stderr, "\n"); fprintf(stderr, "ASSERT at %s:%d:%s()", file, line, func); va_end(args); if (aok) { return; } abort(); } #ifdef verify #undef verify #endif #define VERIFY(cond) \ (void) ((!(cond)) && \ libspl_assert(#cond, __FILE__, __FUNCTION__, __LINE__)) #define verify(cond) \ (void) ((!(cond)) && \ libspl_assert(#cond, __FILE__, __FUNCTION__, __LINE__)) #define VERIFY3B(LEFT, OP, RIGHT) \ do { \ const boolean_t __left = (boolean_t)(LEFT); \ const boolean_t __right = (boolean_t)(RIGHT); \ if (!(__left OP __right)) \ libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \ } while (0) #define VERIFY3S(LEFT, OP, RIGHT) \ do { \ const int64_t __left = (int64_t)(LEFT); \ const int64_t __right = (int64_t)(RIGHT); \ if (!(__left OP __right)) \ libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \ } while (0) #define VERIFY3U(LEFT, OP, RIGHT) \ do { \ const uint64_t __left = (uint64_t)(LEFT); \ const uint64_t __right = (uint64_t)(RIGHT); \ if (!(__left OP __right)) \ libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \ } while (0) #define VERIFY3P(LEFT, OP, RIGHT) \ do { \ const uintptr_t __left = (uintptr_t)(LEFT); \ const uintptr_t __right = (uintptr_t)(RIGHT); \ if (!(__left OP __right)) \ libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ "%s %s %s (0x%llx %s 0x%llx)", #LEFT, #OP, #RIGHT, \ (u_longlong_t)__left, #OP, (u_longlong_t)__right); \ } while (0) #define VERIFY0(LEFT) \ do { \ const uint64_t __left = (uint64_t)(LEFT); \ if (!(__left == 0)) \ libspl_assertf(__FILE__, __FUNCTION__, __LINE__, \ "%s == 0 (0x%llx == 0)", #LEFT, \ (u_longlong_t)__left); \ } while (0) #ifdef assert #undef assert #endif /* Compile time assert */ #define CTASSERT_GLOBAL(x) _CTASSERT(x, __LINE__) #define CTASSERT(x) { _CTASSERT(x, __LINE__); } #define _CTASSERT(x, y) __CTASSERT(x, y) #define __CTASSERT(x, y) \ typedef char __attribute__((unused)) \ __compile_time_assertion__ ## y[(x) ? 1 : -1] #ifdef NDEBUG #define ASSERT3B(x, y, z) ((void)0) #define ASSERT3S(x, y, z) ((void)0) #define ASSERT3U(x, y, z) ((void)0) #define ASSERT3P(x, y, z) ((void)0) #define ASSERT0(x) ((void)0) #define ASSERT(x) ((void)0) #define assert(x) ((void)0) #define ASSERTV(x) #define IMPLY(A, B) ((void)0) #define EQUIV(A, B) ((void)0) #else #define ASSERT3B VERIFY3B #define ASSERT3S VERIFY3S #define ASSERT3U VERIFY3U #define ASSERT3P VERIFY3P #define ASSERT0 VERIFY0 #define ASSERT VERIFY #define assert VERIFY #define ASSERTV(x) x #define IMPLY(A, B) \ ((void)(((!(A)) || (B)) || \ libspl_assert("(" #A ") implies (" #B ")", \ __FILE__, __FUNCTION__, __LINE__))) #define EQUIV(A, B) \ ((void)((!!(A) == !!(B)) || \ libspl_assert("(" #A ") is equivalent to (" #B ")", \ __FILE__, __FUNCTION__, __LINE__))) #endif /* NDEBUG */ #endif /* _LIBSPL_ASSERT_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/ucred.h0000644000000000000000000000007413607166132020351 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.711497585 zfs-0.8.3/lib/libspl/include/ucred.h0000644016037001603700000000200313607166132020341 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_UCRED_H #define _LIBSPL_UCRED_H typedef int ucred_t; #endif zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/libgen.h0000644000000000000000000000007413607166132020507 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.686496782 zfs-0.8.3/lib/libspl/include/libgen.h0000644016037001603700000000214113607166132020502 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_LIBGEN_H #define _LIBSPL_LIBGEN_H #include #include_next extern int mkdirp(const char *, mode_t); #endif /* _LIBSPL_LIBGEN_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/umem.h0000644000000000000000000000007413607166132020212 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.713497649 zfs-0.8.3/lib/libspl/include/umem.h0000644016037001603700000001104713607166132020212 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_UMEM_H #define _LIBSPL_UMEM_H /* * XXX: We should use the real portable umem library if it is detected * at configure time. However, if the library is not available, we can * use a trivial malloc based implementation. This obviously impacts * performance, but unless you are using a full userspace build of zpool for * something other than ztest, you are likely not going to notice or care. * * https://labs.omniti.com/trac/portableumem */ #include #include #include #ifdef __cplusplus extern "C" { #endif typedef void vmem_t; /* * Flags for umem_alloc/umem_free */ #define UMEM_DEFAULT 0x0000 /* normal -- may fail */ #define UMEM_NOFAIL 0x0100 /* Never fails */ /* * Flags for umem_cache_create() */ #define UMC_NOTOUCH 0x00010000 #define UMC_NODEBUG 0x00020000 #define UMC_NOMAGAZINE 0x00040000 #define UMC_NOHASH 0x00080000 #define UMEM_CACHE_NAMELEN 31 typedef int umem_nofail_callback_t(void); typedef int umem_constructor_t(void *, void *, int); typedef void umem_destructor_t(void *, void *); typedef void umem_reclaim_t(void *); typedef struct umem_cache { char cache_name[UMEM_CACHE_NAMELEN + 1]; size_t cache_bufsize; size_t cache_align; umem_constructor_t *cache_constructor; umem_destructor_t *cache_destructor; umem_reclaim_t *cache_reclaim; void *cache_private; void *cache_arena; int cache_cflags; } umem_cache_t; static inline void * umem_alloc(size_t size, int flags) { void *ptr = NULL; do { ptr = malloc(size); } while (ptr == NULL && (flags & UMEM_NOFAIL)); return (ptr); } static inline void * umem_alloc_aligned(size_t size, size_t align, int flags) { void *ptr = NULL; int rc = EINVAL; do { rc = posix_memalign(&ptr, align, size); } while (rc == ENOMEM && (flags & UMEM_NOFAIL)); if (rc == EINVAL) { fprintf(stderr, "%s: invalid memory alignment (%zd)\n", __func__, align); if (flags & UMEM_NOFAIL) abort(); return (NULL); } return (ptr); } static inline void * umem_zalloc(size_t size, int flags) { void *ptr = NULL; ptr = umem_alloc(size, flags); if (ptr) memset(ptr, 0, size); return (ptr); } static inline void umem_free(void *ptr, size_t size) { free(ptr); } static inline void umem_nofail_callback(umem_nofail_callback_t *cb) {} static inline umem_cache_t * umem_cache_create( char *name, size_t bufsize, size_t align, umem_constructor_t *constructor, umem_destructor_t *destructor, umem_reclaim_t *reclaim, void *priv, void *vmp, int cflags) { umem_cache_t *cp; cp = umem_alloc(sizeof (umem_cache_t), UMEM_DEFAULT); if (cp) { strlcpy(cp->cache_name, name, UMEM_CACHE_NAMELEN); cp->cache_bufsize = bufsize; cp->cache_align = align; cp->cache_constructor = constructor; cp->cache_destructor = destructor; cp->cache_reclaim = reclaim; cp->cache_private = priv; cp->cache_arena = vmp; cp->cache_cflags = cflags; } return (cp); } static inline void umem_cache_destroy(umem_cache_t *cp) { umem_free(cp, sizeof (umem_cache_t)); } static inline void * umem_cache_alloc(umem_cache_t *cp, int flags) { void *ptr = NULL; if (cp->cache_align != 0) ptr = umem_alloc_aligned( cp->cache_bufsize, cp->cache_align, flags); else ptr = umem_alloc(cp->cache_bufsize, flags); if (ptr && cp->cache_constructor) cp->cache_constructor(ptr, cp->cache_private, UMEM_DEFAULT); return (ptr); } static inline void umem_cache_free(umem_cache_t *cp, void *ptr) { if (cp->cache_destructor) cp->cache_destructor(ptr, cp->cache_private); umem_free(ptr, cp->cache_bufsize); } static inline void umem_cache_reap_now(umem_cache_t *cp) { } #ifdef __cplusplus } #endif #endif zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147021140 xustar000000000000000030 atime=1579730430.084161045 30 ctime=1579730471.721497905 zfs-0.8.3/lib/libspl/include/Makefile.am0000644016037001603700000000165213607166147021141 0ustar00hutter2hutter200000000000000SUBDIRS = ia32 rpc sys util libspldir = $(includedir)/libspl libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/assert.h \ $(top_srcdir)/lib/libspl/include/atomic.h \ $(top_srcdir)/lib/libspl/include/devid.h \ $(top_srcdir)/lib/libspl/include/libdevinfo.h \ $(top_srcdir)/lib/libspl/include/libgen.h \ $(top_srcdir)/lib/libspl/include/libshare.h \ $(top_srcdir)/lib/libspl/include/limits.h \ $(top_srcdir)/lib/libspl/include/locale.h \ $(top_srcdir)/lib/libspl/include/statcommon.h \ $(top_srcdir)/lib/libspl/include/stdio.h \ $(top_srcdir)/lib/libspl/include/stdlib.h \ $(top_srcdir)/lib/libspl/include/string.h \ $(top_srcdir)/lib/libspl/include/stropts.h \ $(top_srcdir)/lib/libspl/include/thread.h \ $(top_srcdir)/lib/libspl/include/tzfile.h \ $(top_srcdir)/lib/libspl/include/ucred.h \ $(top_srcdir)/lib/libspl/include/umem.h \ $(top_srcdir)/lib/libspl/include/unistd.h \ $(top_srcdir)/lib/libspl/include/zone.h zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/string.h0000644000000000000000000000007413607166132020555 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.702497294 zfs-0.8.3/lib/libspl/include/string.h0000644016037001603700000000230513607166132020552 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_STRING_H #define _LIBSPL_STRING_H #include_next #ifndef HAVE_STRLCAT extern size_t strlcat(char *dst, const char *src, size_t dstsize); #endif #ifndef HAVE_STRLCPY extern size_t strlcpy(char *dst, const char *src, size_t len); #endif #endif zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/sys0000644000000000000000000000013213612143050017620 xustar000000000000000030 mtime=1579730472.076509304 30 atime=1579730489.074055067 30 ctime=1579730472.076509304 zfs-0.8.3/lib/libspl/include/sys/0000775016037001603700000000000013612143050017701 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/zone.h0000644000000000000000000000007413607166132021040 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.065508952 zfs-0.8.3/lib/libspl/include/sys/zone.h0000644016037001603700000000176313607166132021044 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_ZONE_H #define _LIBSPL_SYS_ZONE_H #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/acl_impl.h0000644000000000000000000000007413607166132021645 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.963505675 zfs-0.8.3/lib/libspl/include/sys/acl_impl.h0000644016037001603700000000301713607166132021643 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_ACL_IMPL_H #define _SYS_ACL_IMPL_H #ifdef __cplusplus extern "C" { #endif /* * acl flags * * ACL_AUTO_INHERIT, ACL_PROTECTED and ACL_DEFAULTED * flags can also be stored in this field. */ #define ACL_IS_TRIVIAL 0x10000 #define ACL_IS_DIR 0x20000 typedef enum acl_type { ACLENT_T = 0, ACE_T = 1 } acl_type_t; struct acl_info { acl_type_t acl_type; /* style of acl */ int acl_cnt; /* number of acl entries */ int acl_entry_size; /* sizeof acl entry */ int acl_flags; /* special flags about acl */ void *acl_aclp; /* the acl */ }; #ifdef __cplusplus } #endif #endif /* _SYS_ACL_IMPL_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/kmem.h0000644000000000000000000000007413607166132021016 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.000506864 zfs-0.8.3/lib/libspl/include/sys/kmem.h0000644016037001603700000000237513607166132021022 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_KMEM_H #define _SYS_KMEM_H #include #ifdef __cplusplus extern "C" { #endif #define KM_SLEEP 0x00000000 /* same as KM_SLEEP */ #define KM_NOSLEEP 0x00000001 /* same as KM_NOSLEEP */ #define kmem_alloc(size, flags) malloc(size) #define kmem_free(ptr, size) free(ptr) #ifdef __cplusplus } #endif #endif /* _SYS_KMEM_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/inttypes.h0000644000000000000000000000007413607166132021744 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.995506702 zfs-0.8.3/lib/libspl/include/sys/inttypes.h0000644016037001603700000000204113607166132021736 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SOL_SYS_INTTYPES_H #define _SOL_SYS_INTTYPES_H #include #define _INT64_TYPE #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/feature_tests.h0000644000000000000000000000007413607166132022742 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.986506414 zfs-0.8.3/lib/libspl/include/sys/feature_tests.h0000644016037001603700000000205113607166132022735 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_FEATURE_TESTS_H #define _SYS_FEATURE_TESTS_H #define __NORETURN __attribute__((__noreturn__)) #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/mnttab.h0000644000000000000000000000007413607166147021360 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.010507184 zfs-0.8.3/lib/libspl/include/sys/mnttab.h0000644016037001603700000000445413607166147021364 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright 2006 Ricardo Correia */ #ifndef _SYS_MNTTAB_H #define _SYS_MNTTAB_H #include #include #include #ifdef MNTTAB #undef MNTTAB #endif /* MNTTAB */ #define MNTTAB "/proc/self/mounts" #define MNT_LINE_MAX 4096 #define MNT_TOOLONG 1 /* entry exceeds MNT_LINE_MAX */ #define MNT_TOOMANY 2 /* too many fields in line */ #define MNT_TOOFEW 3 /* too few fields in line */ struct mnttab { char *mnt_special; char *mnt_mountp; char *mnt_fstype; char *mnt_mntopts; }; /* * NOTE: fields in extmnttab should match struct mnttab till new fields * are encountered, this allows hasmntopt to work properly when its arg is * a pointer to an extmnttab struct cast to a mnttab struct pointer. */ struct extmnttab { char *mnt_special; char *mnt_mountp; char *mnt_fstype; char *mnt_mntopts; uint_t mnt_major; uint_t mnt_minor; }; extern int getmntany(FILE *fp, struct mnttab *mp, struct mnttab *mpref); extern int _sol_getmntent(FILE *fp, struct mnttab *mp); extern int getextmntent(FILE *fp, struct extmnttab *mp, int len); static inline char *_sol_hasmntopt(struct mnttab *mnt, char *opt) { struct mntent mnt_new; mnt_new.mnt_opts = mnt->mnt_mntopts; return (hasmntopt(&mnt_new, opt)); } #define hasmntopt _sol_hasmntopt #define getmntent _sol_getmntent #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/priv.h0000644000000000000000000000007413607166132021045 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.020507507 zfs-0.8.3/lib/libspl/include/sys/priv.h0000644016037001603700000000176313607166132021051 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_PRIV_H #define _LIBSPL_SYS_PRIV_H #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/byteorder.h0000644000000000000000000000007413607166147022072 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.967505803 zfs-0.8.3/lib/libspl/include/sys/byteorder.h0000644016037001603700000001260613607166147022074 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ /* * University Copyright- Copyright (c) 1982, 1986, 1988 * The Regents of the University of California * All Rights Reserved * * University Acknowledgment- Portions of this document are derived from * software developed by the University of California, Berkeley, and its * contributors. */ #ifndef _SYS_BYTEORDER_H #define _SYS_BYTEORDER_H #include #include #if defined(__GNUC__) && defined(_ASM_INLINES) && \ (defined(__i386) || defined(__amd64)) #include #endif #ifdef __cplusplus extern "C" { #endif /* * macros for conversion between host and (internet) network byte order */ #if defined(_BIG_ENDIAN) && !defined(ntohl) && !defined(__lint) /* big-endian */ #define ntohl(x) (x) #define ntohs(x) (x) #define htonl(x) (x) #define htons(x) (x) #elif !defined(ntohl) /* little-endian */ #ifndef _IN_PORT_T #define _IN_PORT_T typedef uint16_t in_port_t; #endif #ifndef _IN_ADDR_T #define _IN_ADDR_T typedef uint32_t in_addr_t; #endif #if !defined(_XPG4_2) || defined(__EXTENSIONS__) || defined(_XPG5) extern uint32_t htonl(uint32_t); extern uint16_t htons(uint16_t); extern uint32_t ntohl(uint32_t); extern uint16_t ntohs(uint16_t); #else extern in_addr_t htonl(in_addr_t); extern in_port_t htons(in_port_t); extern in_addr_t ntohl(in_addr_t); extern in_port_t ntohs(in_port_t); #endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) || defined(_XPG5) */ #endif #if !defined(_XPG4_2) || defined(__EXTENSIONS__) /* * Macros to reverse byte order */ #define BSWAP_8(x) ((x) & 0xff) #define BSWAP_16(x) ((BSWAP_8(x) << 8) | BSWAP_8((x) >> 8)) #define BSWAP_32(x) ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16)) #define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32)) #define BMASK_8(x) ((x) & 0xff) #define BMASK_16(x) ((x) & 0xffff) #define BMASK_32(x) ((x) & 0xffffffff) #define BMASK_64(x) (x) /* * Macros to convert from a specific byte order to/from native byte order */ #ifdef _BIG_ENDIAN #define BE_8(x) BMASK_8(x) #define BE_16(x) BMASK_16(x) #define BE_32(x) BMASK_32(x) #define BE_64(x) BMASK_64(x) #define LE_8(x) BSWAP_8(x) #define LE_16(x) BSWAP_16(x) #define LE_32(x) BSWAP_32(x) #define LE_64(x) BSWAP_64(x) #else #define LE_8(x) BMASK_8(x) #define LE_16(x) BMASK_16(x) #define LE_32(x) BMASK_32(x) #define LE_64(x) BMASK_64(x) #define BE_8(x) BSWAP_8(x) #define BE_16(x) BSWAP_16(x) #define BE_32(x) BSWAP_32(x) #define BE_64(x) BSWAP_64(x) #endif #ifdef _BIG_ENDIAN static __inline__ uint64_t htonll(uint64_t n) { return (n); } static __inline__ uint64_t ntohll(uint64_t n) { return (n); } #else static __inline__ uint64_t htonll(uint64_t n) { return ((((uint64_t)htonl(n)) << 32) + htonl(n >> 32)); } static __inline__ uint64_t ntohll(uint64_t n) { return ((((uint64_t)ntohl(n)) << 32) + ntohl(n >> 32)); } #endif /* * Macros to read unaligned values from a specific byte order to * native byte order */ #define BE_IN8(xa) \ *((uint8_t *)(xa)) #define BE_IN16(xa) \ (((uint16_t)BE_IN8(xa) << 8) | BE_IN8((uint8_t *)(xa)+1)) #define BE_IN32(xa) \ (((uint32_t)BE_IN16(xa) << 16) | BE_IN16((uint8_t *)(xa)+2)) #define BE_IN64(xa) \ (((uint64_t)BE_IN32(xa) << 32) | BE_IN32((uint8_t *)(xa)+4)) #define LE_IN8(xa) \ *((uint8_t *)(xa)) #define LE_IN16(xa) \ (((uint16_t)LE_IN8((uint8_t *)(xa) + 1) << 8) | LE_IN8(xa)) #define LE_IN32(xa) \ (((uint32_t)LE_IN16((uint8_t *)(xa) + 2) << 16) | LE_IN16(xa)) #define LE_IN64(xa) \ (((uint64_t)LE_IN32((uint8_t *)(xa) + 4) << 32) | LE_IN32(xa)) /* * Macros to write unaligned values from native byte order to a specific byte * order. */ #define BE_OUT8(xa, yv) *((uint8_t *)(xa)) = (uint8_t)(yv); #define BE_OUT16(xa, yv) \ BE_OUT8((uint8_t *)(xa) + 1, yv); \ BE_OUT8((uint8_t *)(xa), (yv) >> 8); #define BE_OUT32(xa, yv) \ BE_OUT16((uint8_t *)(xa) + 2, yv); \ BE_OUT16((uint8_t *)(xa), (yv) >> 16); #define BE_OUT64(xa, yv) \ BE_OUT32((uint8_t *)(xa) + 4, yv); \ BE_OUT32((uint8_t *)(xa), (yv) >> 32); #define LE_OUT8(xa, yv) *((uint8_t *)(xa)) = (uint8_t)(yv); #define LE_OUT16(xa, yv) \ LE_OUT8((uint8_t *)(xa), yv); \ LE_OUT8((uint8_t *)(xa) + 1, (yv) >> 8); #define LE_OUT32(xa, yv) \ LE_OUT16((uint8_t *)(xa), yv); \ LE_OUT16((uint8_t *)(xa) + 2, (yv) >> 16); #define LE_OUT64(xa, yv) \ LE_OUT32((uint8_t *)(xa), yv); \ LE_OUT32((uint8_t *)(xa) + 4, (yv) >> 32); #endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */ #ifdef __cplusplus } #endif #endif /* _SYS_BYTEORDER_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/cred.h0000644000000000000000000000007313607166132021001 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730471.97450603 zfs-0.8.3/lib/libspl/include/sys/cred.h0000644016037001603700000000202013607166132020771 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_CRED_H #define _LIBSPL_SYS_CRED_H typedef struct cred cred_t; #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/policy.h0000644000000000000000000000007413607166132021364 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.016507377 zfs-0.8.3/lib/libspl/include/sys/policy.h0000644016037001603700000000165013607166132021363 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #ifndef _LIBSYS_SYS_POLICY_H #define _LIBSYS_SYS_POLICY_H #endif /* _LIBSYS_SYS_POLICY_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/mount.h0000644000000000000000000000007413607166147021235 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.012507248 zfs-0.8.3/lib/libspl/include/sys/mount.h0000644016037001603700000000544413607166147021241 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include_next #ifndef _LIBSPL_SYS_MOUNT_H #define _LIBSPL_SYS_MOUNT_H #include #include #include /* * Some old glibc headers don't define BLKGETSIZE64 * and we don't want to require the kernel headers */ #if !defined(BLKGETSIZE64) #define BLKGETSIZE64 _IOR(0x12, 114, size_t) #endif /* * Some old glibc headers don't correctly define MS_DIRSYNC and * instead use the enum name S_WRITE. When using these older * headers define MS_DIRSYNC to be S_WRITE. */ #if !defined(MS_DIRSYNC) #define MS_DIRSYNC S_WRITE #endif /* * Some old glibc headers don't correctly define MS_POSIXACL and * instead leave it undefined. When using these older headers define * MS_POSIXACL to the reserved value of (1<<16). */ #if !defined(MS_POSIXACL) #define MS_POSIXACL (1<<16) #endif #define MS_USERS (MS_NOEXEC|MS_NOSUID|MS_NODEV) #define MS_OWNER (MS_NOSUID|MS_NODEV) #define MS_GROUP (MS_NOSUID|MS_NODEV) #define MS_COMMENT 0 /* * Older glibc headers did not define all the available * umount2(2) flags. Both MNT_FORCE and MNT_DETACH are supported in the * kernel back to 2.4.11 so we define them correctly if they are missing. */ #ifdef MNT_FORCE #define MS_FORCE MNT_FORCE #else #define MS_FORCE 0x00000001 #endif /* MNT_FORCE */ #ifdef MNT_DETACH #define MS_DETACH MNT_DETACH #else #define MS_DETACH 0x00000002 #endif /* MNT_DETACH */ /* * Overlay mount is default in Linux, but for solaris/zfs * compatibility, MS_OVERLAY is defined to explicitly have the user * provide a flag (-O) to mount over a non empty directory. */ #define MS_OVERLAY 0x00000004 /* * MS_CRYPT indicates that encryption keys should be loaded if they are not * already available. This is not defined in glibc, but it is never seen by * the kernel so it will not cause any problems. */ #define MS_CRYPT 0x00000008 #endif /* _LIBSPL_SYS_MOUNT_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/mkdev.h0000644000000000000000000000007413607166132021173 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.007507088 zfs-0.8.3/lib/libspl/include/sys/mkdev.h0000644016037001603700000000176513607166132021201 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_MKDEV_H #define _LIBSPL_SYS_MKDEV_H #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/sunddi.h0000644000000000000000000000007413607166132021353 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.038508083 zfs-0.8.3/lib/libspl/include/sys/sunddi.h0000644016037001603700000000171213607166132021351 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2008 by Sun Microsystems, Inc. */ #ifndef _SYS_SUNDDI_H #define _SYS_SUNDDI_H #endif /* _SYS_SUNDDI_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/int_types.h0000644000000000000000000000007413607166132022103 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.993506638 zfs-0.8.3/lib/libspl/include/sys/int_types.h0000644016037001603700000000201613607166132022077 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SOL_SYS_INT_TYPES_H #define _SOL_SYS_INT_TYPES_H #include #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/dkio.h0000644000000000000000000000007313607166132021012 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730471.97950619 zfs-0.8.3/lib/libspl/include/sys/dkio.h0000644016037001603700000003464713607166132021026 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_DKIO_H #define _SYS_DKIO_H #include /* Needed for NDKMAP define */ #ifdef __cplusplus extern "C" { #endif /* * Structures and definitions for disk io control commands */ /* * Structures used as data by ioctl calls. */ #define DK_DEVLEN 16 /* device name max length, including */ /* unit # & NULL (ie - "xyc1") */ /* * Used for controller info */ struct dk_cinfo { char dki_cname[DK_DEVLEN]; /* controller name (no unit #) */ ushort_t dki_ctype; /* controller type */ ushort_t dki_flags; /* flags */ ushort_t dki_cnum; /* controller number */ uint_t dki_addr; /* controller address */ uint_t dki_space; /* controller bus type */ uint_t dki_prio; /* interrupt priority */ uint_t dki_vec; /* interrupt vector */ char dki_dname[DK_DEVLEN]; /* drive name (no unit #) */ uint_t dki_unit; /* unit number */ uint_t dki_slave; /* slave number */ ushort_t dki_partition; /* partition number */ ushort_t dki_maxtransfer; /* max. transfer size in DEV_BSIZE */ }; /* * Controller types */ #define DKC_UNKNOWN 0 #define DKC_CDROM 1 /* CD-ROM, SCSI or otherwise */ #define DKC_WDC2880 2 #define DKC_XXX_0 3 /* unassigned */ #define DKC_XXX_1 4 /* unassigned */ #define DKC_DSD5215 5 #define DKC_ACB4000 7 #define DKC_MD21 8 #define DKC_XXX_2 9 /* unassigned */ #define DKC_NCRFLOPPY 10 #define DKC_SMSFLOPPY 12 #define DKC_SCSI_CCS 13 /* SCSI CCS compatible */ #define DKC_INTEL82072 14 /* native floppy chip */ #define DKC_MD 16 /* meta-disk (virtual-disk) driver */ #define DKC_INTEL82077 19 /* 82077 floppy disk controller */ #define DKC_DIRECT 20 /* Intel direct attached device i.e. IDE */ #define DKC_PCMCIA_MEM 21 /* PCMCIA memory disk-like type */ #define DKC_PCMCIA_ATA 22 /* PCMCIA AT Attached type */ #define DKC_VBD 23 /* virtual block device */ /* * Sun reserves up through 1023 */ #define DKC_CUSTOMER_BASE 1024 /* * Flags */ #define DKI_BAD144 0x01 /* use DEC std 144 bad sector fwding */ #define DKI_MAPTRK 0x02 /* controller does track mapping */ #define DKI_FMTTRK 0x04 /* formats only full track at a time */ #define DKI_FMTVOL 0x08 /* formats only full volume at a time */ #define DKI_FMTCYL 0x10 /* formats only full cylinders at a time */ #define DKI_HEXUNIT 0x20 /* unit number is printed as 3 hex digits */ #define DKI_PCMCIA_PFD 0x40 /* PCMCIA pseudo-floppy memory card */ /* * Used for all partitions */ struct dk_allmap { struct dk_map dka_map[NDKMAP]; }; #if defined(_SYSCALL32) struct dk_allmap32 { struct dk_map32 dka_map[NDKMAP]; }; #endif /* _SYSCALL32 */ /* * Definition of a disk's geometry */ struct dk_geom { unsigned short dkg_ncyl; /* # of data cylinders */ unsigned short dkg_acyl; /* # of alternate cylinders */ unsigned short dkg_bcyl; /* cyl offset (for fixed head area) */ unsigned short dkg_nhead; /* # of heads */ unsigned short dkg_obs1; /* obsolete */ unsigned short dkg_nsect; /* # of data sectors per track */ unsigned short dkg_intrlv; /* interleave factor */ unsigned short dkg_obs2; /* obsolete */ unsigned short dkg_obs3; /* obsolete */ unsigned short dkg_apc; /* alternates per cyl (SCSI only) */ unsigned short dkg_rpm; /* revolutions per minute */ unsigned short dkg_pcyl; /* # of physical cylinders */ unsigned short dkg_write_reinstruct; /* # sectors to skip, writes */ unsigned short dkg_read_reinstruct; /* # sectors to skip, reads */ unsigned short dkg_extra[7]; /* for compatible expansion */ }; /* * These defines are for historic compatibility with old drivers. */ #define dkg_bhead dkg_obs1 /* used to be head offset */ #define dkg_gap1 dkg_obs2 /* used to be gap1 */ #define dkg_gap2 dkg_obs3 /* used to be gap2 */ /* * Disk io control commands * Warning: some other ioctls with the DIOC prefix exist elsewhere. * The Generic DKIOC numbers are from 0 - 50. * The Floppy Driver uses 51 - 100. * The Hard Disk (except SCSI) 101 - 106. (these are obsolete) * The CDROM Driver 151 - 200. * The USCSI ioctl 201 - 250. */ #define DKIOC (0x04 << 8) /* * The following ioctls are generic in nature and need to be * supported as appropriate by all disk drivers */ #define DKIOCGGEOM (DKIOC|1) /* Get geometry */ #define DKIOCINFO (DKIOC|3) /* Get info */ #define DKIOCEJECT (DKIOC|6) /* Generic 'eject' */ #define DKIOCGVTOC (DKIOC|11) /* Get VTOC */ #define DKIOCSVTOC (DKIOC|12) /* Set VTOC & Write to Disk */ /* * Disk Cache Controls. These ioctls should be supported by * all disk drivers. * * DKIOCFLUSHWRITECACHE when used from user-mode ignores the ioctl * argument, but it should be passed as NULL to allow for future * reinterpretation. From user-mode, this ioctl request is synchronous. * * When invoked from within the kernel, the arg can be NULL to indicate * a synchronous request or can be the address of a struct dk_callback * to request an asynchronous callback when the flush request is complete. * In this case, the flag to the ioctl must include FKIOCTL and the * dkc_callback field of the pointed to struct must be non-null or the * request is made synchronously. * * In the callback case: if the ioctl returns 0, a callback WILL be performed. * If the ioctl returns non-zero, a callback will NOT be performed. * NOTE: In some cases, the callback may be done BEFORE the ioctl call * returns. The caller's locking strategy should be prepared for this case. */ #define DKIOCFLUSHWRITECACHE (DKIOC|34) /* flush cache to phys medium */ struct dk_callback { void (*dkc_callback)(void *dkc_cookie, int error); void *dkc_cookie; int dkc_flag; }; /* bit flag definitions for dkc_flag */ #define FLUSH_VOLATILE 0x1 /* Bit 0: if set, only flush */ /* volatile cache; otherwise, flush */ /* volatile and non-volatile cache */ #define DKIOCGETWCE (DKIOC|36) /* Get current write cache */ /* enablement status */ #define DKIOCSETWCE (DKIOC|37) /* Enable/Disable write cache */ /* * The following ioctls are used by Sun drivers to communicate * with their associated format routines. Support of these ioctls * is not required of foreign drivers */ #define DKIOCSGEOM (DKIOC|2) /* Set geometry */ #define DKIOCSAPART (DKIOC|4) /* Set all partitions */ #define DKIOCGAPART (DKIOC|5) /* Get all partitions */ #define DKIOCG_PHYGEOM (DKIOC|32) /* get physical geometry */ #define DKIOCG_VIRTGEOM (DKIOC|33) /* get virtual geometry */ /* * The following ioctl's are removable media support */ #define DKIOCLOCK (DKIOC|7) /* Generic 'lock' */ #define DKIOCUNLOCK (DKIOC|8) /* Generic 'unlock' */ #define DKIOCSTATE (DKIOC|13) /* Inquire insert/eject state */ #define DKIOCREMOVABLE (DKIOC|16) /* is media removable */ /* * ioctl for hotpluggable devices */ #define DKIOCHOTPLUGGABLE (DKIOC|35) /* is hotpluggable */ /* * Ioctl to force driver to re-read the alternate partition and rebuild * the internal defect map. */ #define DKIOCADDBAD (DKIOC|20) /* Re-read the alternate map (IDE) */ #define DKIOCGETDEF (DKIOC|21) /* read defect list (IDE) */ /* * Used by applications to get disk defect information from IDE * drives. */ #ifdef _SYSCALL32 struct defect_header32 { int head; caddr32_t buffer; }; #endif /* _SYSCALL32 */ struct defect_header { int head; caddr_t buffer; }; #define DKIOCPARTINFO (DKIOC|22) /* Get partition or slice parameters */ /* * Used by applications to get partition or slice information */ #ifdef _SYSCALL32 struct part_info32 { uint32_t p_start; int p_length; }; #endif /* _SYSCALL32 */ struct part_info { uint64_t p_start; int p_length; }; /* The following ioctls are for Optical Memory Device */ #define DKIOC_EBP_ENABLE (DKIOC|40) /* enable by pass erase on write */ #define DKIOC_EBP_DISABLE (DKIOC|41) /* disable by pass erase on write */ /* * This state enum is the argument passed to the DKIOCSTATE ioctl. */ enum dkio_state { DKIO_NONE, DKIO_EJECTED, DKIO_INSERTED, DKIO_DEV_GONE }; #define DKIOCGMEDIAINFO (DKIOC|42) /* get information about the media */ /* * ioctls to read/write mboot info. */ #define DKIOCGMBOOT (DKIOC|43) /* get mboot info */ #define DKIOCSMBOOT (DKIOC|44) /* set mboot info */ /* * ioctl to get the device temperature. */ #define DKIOCGTEMPERATURE (DKIOC|45) /* get temperature */ /* * Used for providing the temperature. */ struct dk_temperature { uint_t dkt_flags; /* Flags */ short dkt_cur_temp; /* Current disk temperature */ short dkt_ref_temp; /* reference disk temperature */ }; #define DKT_BYPASS_PM 0x1 #define DKT_INVALID_TEMP 0xFFFF /* * Used for Media info or the current profile info */ struct dk_minfo { uint_t dki_media_type; /* Media type or profile info */ uint_t dki_lbsize; /* Logical blocksize of media */ diskaddr_t dki_capacity; /* Capacity as # of dki_lbsize blks */ }; /* * Media types or profiles known */ #define DK_UNKNOWN 0x00 /* Media inserted - type unknown */ /* * SFF 8090 Specification Version 3, media types 0x01 - 0xfffe are retained to * maintain compatibility with SFF8090. The following define the * optical media type. */ #define DK_REMOVABLE_DISK 0x02 /* Removable Disk */ #define DK_MO_ERASABLE 0x03 /* MO Erasable */ #define DK_MO_WRITEONCE 0x04 /* MO Write once */ #define DK_AS_MO 0x05 /* AS MO */ #define DK_CDROM 0x08 /* CDROM */ #define DK_CDR 0x09 /* CD-R */ #define DK_CDRW 0x0A /* CD-RW */ #define DK_DVDROM 0x10 /* DVD-ROM */ #define DK_DVDR 0x11 /* DVD-R */ #define DK_DVDRAM 0x12 /* DVD_RAM or DVD-RW */ /* * Media types for other rewritable magnetic media */ #define DK_FIXED_DISK 0x10001 /* Fixed disk SCSI or otherwise */ #define DK_FLOPPY 0x10002 /* Floppy media */ #define DK_ZIP 0x10003 /* IOMEGA ZIP media */ #define DK_JAZ 0x10004 /* IOMEGA JAZ media */ #define DKIOCSETEFI (DKIOC|17) /* Set EFI info */ #define DKIOCGETEFI (DKIOC|18) /* Get EFI info */ #define DKIOCPARTITION (DKIOC|9) /* Get partition info */ /* * Ioctls to get/set volume capabilities related to Logical Volume Managers. * They include the ability to get/set capabilities and to issue a read to a * specific underlying device of a replicated device. */ #define DKIOCGETVOLCAP (DKIOC | 25) /* Get volume capabilities */ #define DKIOCSETVOLCAP (DKIOC | 26) /* Set volume capabilities */ #define DKIOCDMR (DKIOC | 27) /* Issue a directed read */ typedef uint_t volcapinfo_t; typedef uint_t volcapset_t; #define DKV_ABR_CAP 0x00000001 /* Support Appl.Based Recovery */ #define DKV_DMR_CAP 0x00000002 /* Support Directed Mirror Read */ typedef struct volcap { volcapinfo_t vc_info; /* Capabilities available */ volcapset_t vc_set; /* Capabilities set */ } volcap_t; #define VOL_SIDENAME 256 typedef struct vol_directed_rd { int vdr_flags; offset_t vdr_offset; size_t vdr_nbytes; size_t vdr_bytesread; void *vdr_data; int vdr_side; char vdr_side_name[VOL_SIDENAME]; } vol_directed_rd_t; #define DKV_SIDE_INIT (-1) #define DKV_DMR_NEXT_SIDE 0x00000001 #define DKV_DMR_DONE 0x00000002 #define DKV_DMR_ERROR 0x00000004 #define DKV_DMR_SUCCESS 0x00000008 #define DKV_DMR_SHORT 0x00000010 #ifdef _MULTI_DATAMODEL #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 #pragma pack(4) #endif typedef struct vol_directed_rd32 { int32_t vdr_flags; offset_t vdr_offset; /* 64-bit element on 32-bit alignment */ size32_t vdr_nbytes; size32_t vdr_bytesread; caddr32_t vdr_data; int32_t vdr_side; char vdr_side_name[VOL_SIDENAME]; } vol_directed_rd32_t; #if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4 #pragma pack() #endif #endif /* _MULTI_DATAMODEL */ /* * The ioctl is used to fetch disk's device type, vendor ID, * model number/product ID, firmware revision and serial number together. * * Currently there are two device types - DKD_ATA_TYPE which means the * disk is driven by cmdk/ata or dad/uata driver, and DKD_SCSI_TYPE * which means the disk is driven by sd/scsi hba driver. */ #define DKIOC_GETDISKID (DKIOC|46) /* These two labels are for dkd_dtype of dk_disk_id_t */ #define DKD_ATA_TYPE 0x01 /* ATA disk or legacy mode SATA disk */ #define DKD_SCSI_TYPE 0x02 /* SCSI disk or native mode SATA disk */ #define DKD_ATA_MODEL 40 /* model number length */ #define DKD_ATA_FWVER 8 /* firmware revision length */ #define DKD_ATA_SERIAL 20 /* serial number length */ #define DKD_SCSI_VENDOR 8 /* vendor ID length */ #define DKD_SCSI_PRODUCT 16 /* product ID length */ #define DKD_SCSI_REVLEVEL 4 /* revision level length */ #define DKD_SCSI_SERIAL 12 /* serial number length */ /* * The argument type for DKIOC_GETDISKID ioctl. */ typedef struct dk_disk_id { uint_t dkd_dtype; union { struct { char dkd_amodel[DKD_ATA_MODEL]; /* 40 bytes */ char dkd_afwver[DKD_ATA_FWVER]; /* 8 bytes */ char dkd_aserial[DKD_ATA_SERIAL]; /* 20 bytes */ } ata_disk_id; struct { char dkd_svendor[DKD_SCSI_VENDOR]; /* 8 bytes */ char dkd_sproduct[DKD_SCSI_PRODUCT]; /* 16 bytes */ char dkd_sfwver[DKD_SCSI_REVLEVEL]; /* 4 bytes */ char dkd_sserial[DKD_SCSI_SERIAL]; /* 12 bytes */ } scsi_disk_id; } disk_id; } dk_disk_id_t; /* * The ioctl is used to update the firmware of device. */ #define DKIOC_UPDATEFW (DKIOC|47) /* The argument type for DKIOC_UPDATEFW ioctl */ typedef struct dk_updatefw { caddr_t dku_ptrbuf; /* pointer to firmware buf */ uint_t dku_size; /* firmware buf length */ uint8_t dku_type; /* firmware update type */ } dk_updatefw_t; #ifdef _SYSCALL32 typedef struct dk_updatefw_32 { caddr32_t dku_ptrbuf; /* pointer to firmware buf */ uint_t dku_size; /* firmware buf length */ uint8_t dku_type; /* firmware update type */ } dk_updatefw_32_t; #endif /* _SYSCALL32 */ /* * firmware update type - temporary or permanent use */ #define FW_TYPE_TEMP 0x0 /* temporary use */ #define FW_TYPE_PERM 0x1 /* permanent use */ #ifdef __cplusplus } #endif #endif /* _SYS_DKIO_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/vtoc.h0000644000000000000000000000007413612141513021030 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.063508887 zfs-0.8.3/lib/libspl/include/sys/vtoc.h0000644016037001603700000002723613612141513021037 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ #ifndef _SYS_VTOC_H #define _SYS_VTOC_H #include #ifdef __cplusplus extern "C" { #endif /* * Note: the VTOC is not implemented fully, nor in the manner * that AT&T implements it. AT&T puts the vtoc structure * into a sector, usually the second sector (pdsector is first). * * Sun incorporates the tag, flag, version, and volume vtoc fields into * its Disk Label, which already has some vtoc-equivalent fields. * Upon reading the vtoc with read_vtoc(), the following exceptions * occur: * v_bootinfo [all] returned as zero * v_sanity returned as VTOC_SANE * if Disk Label was sane * v_sectorsz returned as 512 * v_reserved [all] returned as zero * timestamp [all] returned as zero * * See dklabel.h, read_vtoc(), and write_vtoc(). */ #define V_NUMPAR NDKMAP /* The number of partitions */ /* (from dkio.h) */ #define VTOC_SANE 0x600DDEEE /* Indicates a sane VTOC */ #define V_VERSION 0x01 /* layout version number */ #define V_EXTVERSION V_VERSION /* extvtoc layout version number */ /* * Partition identification tags */ #define V_UNASSIGNED 0x00 /* unassigned partition */ #define V_BOOT 0x01 /* Boot partition */ #define V_ROOT 0x02 /* Root filesystem */ #define V_SWAP 0x03 /* Swap filesystem */ #define V_USR 0x04 /* Usr filesystem */ #define V_BACKUP 0x05 /* full disk */ #define V_STAND 0x06 /* Stand partition */ #define V_VAR 0x07 /* Var partition */ #define V_HOME 0x08 /* Home partition */ #define V_ALTSCTR 0x09 /* Alternate sector partition */ #define V_CACHE 0x0a /* Cache (cachefs) partition */ #define V_RESERVED 0x0b /* SMI reserved data */ /* * Partition permission flags */ #define V_UNMNT 0x01 /* Unmountable partition */ #define V_RONLY 0x10 /* Read only */ /* * error codes for reading & writing vtoc */ #define VT_ERROR (-2) /* errno supplies specific error */ #define VT_EIO (-3) /* I/O error accessing vtoc */ #define VT_EINVAL (-4) /* illegal value in vtoc or request */ #define VT_ENOTSUP (-5) /* VTOC op. not supported */ #define VT_ENOSPC (-6) /* requested space not found */ #define VT_EOVERFLOW (-7) /* VTOC op. data struct limited */ struct partition { ushort_t p_tag; /* ID tag of partition */ ushort_t p_flag; /* permission flags */ uint64_t p_start; /* start sector no of partition */ long p_size; /* # of blocks in partition */ }; struct vtoc { unsigned long v_bootinfo[3]; /* info needed by mboot (unsupported) */ unsigned long v_sanity; /* to verify vtoc sanity */ unsigned long v_version; /* layout version */ char v_volume[LEN_DKL_VVOL]; /* volume name */ ushort_t v_sectorsz; /* sector size in bytes */ ushort_t v_nparts; /* number of partitions */ unsigned long v_reserved[10]; /* free space */ struct partition v_part[V_NUMPAR]; /* partition headers */ time_t timestamp[V_NUMPAR]; /* partition timestamp (unsupported) */ char v_asciilabel[LEN_DKL_ASCII]; /* for compatibility */ }; struct extpartition { ushort_t p_tag; /* ID tag of partition */ ushort_t p_flag; /* permission flags */ ushort_t p_pad[2]; diskaddr_t p_start; /* start sector no of partition */ diskaddr_t p_size; /* # of blocks in partition */ }; struct extvtoc { uint64_t v_bootinfo[3]; /* info needed by mboot (unsupported) */ uint64_t v_sanity; /* to verify vtoc sanity */ uint64_t v_version; /* layout version */ char v_volume[LEN_DKL_VVOL]; /* volume name */ ushort_t v_sectorsz; /* sector size in bytes */ ushort_t v_nparts; /* number of partitions */ ushort_t pad[2]; uint64_t v_reserved[10]; struct extpartition v_part[V_NUMPAR]; /* partition headers */ uint64_t timestamp[V_NUMPAR]; /* partition timestamp (unsupported) */ char v_asciilabel[LEN_DKL_ASCII]; /* for compatibility */ }; #ifdef _KERNEL #define extvtoctovtoc(extv, v) \ { \ int i; \ v.v_bootinfo[0] = (unsigned long)extv.v_bootinfo[0]; \ v.v_bootinfo[1] = (unsigned long)extv.v_bootinfo[1]; \ v.v_bootinfo[2] = (unsigned long)extv.v_bootinfo[2]; \ v.v_sanity = (unsigned long)extv.v_sanity; \ v.v_version = (unsigned long)extv.v_version; \ bcopy(extv.v_volume, v.v_volume, LEN_DKL_VVOL); \ v.v_sectorsz = extv.v_sectorsz; \ v.v_nparts = extv.v_nparts; \ for (i = 0; i < 10; i++) \ v.v_reserved[i] = (unsigned long)extv.v_reserved[i]; \ for (i = 0; i < V_NUMPAR; i++) { \ v.v_part[i].p_tag = extv.v_part[i].p_tag; \ v.v_part[i].p_flag = extv.v_part[i].p_flag; \ v.v_part[i].p_start = (uint64_t)extv.v_part[i].p_start; \ v.v_part[i].p_size = (long)extv.v_part[i].p_size; \ v.timestamp[i] = (time_t)extv.timestamp[i]; \ } \ bcopy(extv.v_asciilabel, v.v_asciilabel, LEN_DKL_ASCII); \ } #define vtoctoextvtoc(v, extv) \ { \ int i; \ extv.v_bootinfo[0] = (uint64_t)v.v_bootinfo[0]; \ extv.v_bootinfo[1] = (uint64_t)v.v_bootinfo[1]; \ extv.v_bootinfo[2] = (uint64_t)v.v_bootinfo[2]; \ extv.v_sanity = (uint64_t)v.v_sanity; \ extv.v_version = (uint64_t)v.v_version; \ bcopy(v.v_volume, extv.v_volume, LEN_DKL_VVOL); \ extv.v_sectorsz = v.v_sectorsz; \ extv.v_nparts = v.v_nparts; \ for (i = 0; i < 10; i++) \ extv.v_reserved[i] = (uint64_t)v.v_reserved[i]; \ for (i = 0; i < V_NUMPAR; i++) { \ extv.v_part[i].p_tag = v.v_part[i].p_tag; \ extv.v_part[i].p_flag = v.v_part[i].p_flag; \ extv.v_part[i].p_start = \ (diskaddr_t)(unsigned long)v.v_part[i].p_start; \ extv.v_part[i].p_size = \ (diskaddr_t)(unsigned long)v.v_part[i].p_size; \ extv.timestamp[i] = (uint64_t)v.timestamp[i]; \ } \ bcopy(v.v_asciilabel, extv.v_asciilabel, LEN_DKL_ASCII); \ } #endif /* _KERNEL */ #if defined(_SYSCALL32) struct partition32 { uint16_t p_tag; /* ID tag of partition */ uint16_t p_flag; /* permission flags */ daddr32_t p_start; /* start sector no of partition */ int32_t p_size; /* # of blocks in partition */ }; struct vtoc32 { uint32_t v_bootinfo[3]; /* info needed by mboot (unsupported) */ uint32_t v_sanity; /* to verify vtoc sanity */ uint32_t v_version; /* layout version */ char v_volume[LEN_DKL_VVOL]; /* volume name */ uint16_t v_sectorsz; /* sector size in bytes */ uint16_t v_nparts; /* number of partitions */ uint32_t v_reserved[10]; /* free space */ struct partition32 v_part[V_NUMPAR]; /* partition headers */ time32_t timestamp[V_NUMPAR]; /* partition timestamp (unsupported) */ char v_asciilabel[LEN_DKL_ASCII]; /* for compatibility */ }; #define vtoc32tovtoc(v32, v) \ { \ int i; \ v.v_bootinfo[0] = v32.v_bootinfo[0]; \ v.v_bootinfo[1] = v32.v_bootinfo[1]; \ v.v_bootinfo[2] = v32.v_bootinfo[2]; \ v.v_sanity = v32.v_sanity; \ v.v_version = v32.v_version; \ bcopy(v32.v_volume, v.v_volume, LEN_DKL_VVOL); \ v.v_sectorsz = v32.v_sectorsz; \ v.v_nparts = v32.v_nparts; \ v.v_version = v32.v_version; \ for (i = 0; i < 10; i++) \ v.v_reserved[i] = v32.v_reserved[i]; \ for (i = 0; i < V_NUMPAR; i++) { \ v.v_part[i].p_tag = (ushort_t)v32.v_part[i].p_tag; \ v.v_part[i].p_flag = (ushort_t)v32.v_part[i].p_flag; \ v.v_part[i].p_start = (unsigned)v32.v_part[i].p_start; \ v.v_part[i].p_size = (unsigned)v32.v_part[i].p_size; \ } \ for (i = 0; i < V_NUMPAR; i++) \ v.timestamp[i] = (time_t)v32.timestamp[i]; \ bcopy(v32.v_asciilabel, v.v_asciilabel, LEN_DKL_ASCII); \ } #define vtoc32toextvtoc(v32, extv) \ { \ int i; \ extv.v_bootinfo[0] = v32.v_bootinfo[0]; \ extv.v_bootinfo[1] = v32.v_bootinfo[1]; \ extv.v_bootinfo[2] = v32.v_bootinfo[2]; \ extv.v_sanity = v32.v_sanity; \ extv.v_version = v32.v_version; \ bcopy(v32.v_volume, extv.v_volume, LEN_DKL_VVOL); \ extv.v_sectorsz = v32.v_sectorsz; \ extv.v_nparts = v32.v_nparts; \ extv.v_version = v32.v_version; \ for (i = 0; i < 10; i++) \ extv.v_reserved[i] = v32.v_reserved[i]; \ for (i = 0; i < V_NUMPAR; i++) { \ extv.v_part[i].p_tag = (ushort_t)v32.v_part[i].p_tag; \ extv.v_part[i].p_flag = (ushort_t)v32.v_part[i].p_flag; \ extv.v_part[i].p_start = (diskaddr_t)v32.v_part[i].p_start; \ extv.v_part[i].p_size = (diskaddr_t)v32.v_part[i].p_size; \ extv.timestamp[i] = (time_t)v32.timestamp[i]; \ } \ bcopy(v32.v_asciilabel, extv.v_asciilabel, LEN_DKL_ASCII); \ } #define vtoctovtoc32(v, v32) \ { \ int i; \ v32.v_bootinfo[0] = v.v_bootinfo[0]; \ v32.v_bootinfo[1] = v.v_bootinfo[1]; \ v32.v_bootinfo[2] = v.v_bootinfo[2]; \ v32.v_sanity = v.v_sanity; \ v32.v_version = v.v_version; \ bcopy(v.v_volume, v32.v_volume, LEN_DKL_VVOL); \ v32.v_sectorsz = v.v_sectorsz; \ v32.v_nparts = v.v_nparts; \ v32.v_version = v.v_version; \ for (i = 0; i < 10; i++) \ v32.v_reserved[i] = v.v_reserved[i]; \ for (i = 0; i < V_NUMPAR; i++) { \ v32.v_part[i].p_tag = (ushort_t)v.v_part[i].p_tag; \ v32.v_part[i].p_flag = (ushort_t)v.v_part[i].p_flag; \ v32.v_part[i].p_start = (unsigned)v.v_part[i].p_start; \ v32.v_part[i].p_size = (unsigned)v.v_part[i].p_size; \ } \ for (i = 0; i < V_NUMPAR; i++) { \ if (v.timestamp[i] > TIME32_MAX) \ v32.timestamp[i] = TIME32_MAX; \ else \ v32.timestamp[i] = (time32_t)v.timestamp[i]; \ } \ bcopy(v.v_asciilabel, v32.v_asciilabel, LEN_DKL_ASCII); \ } #define extvtoctovtoc32(extv, v32) \ { \ int i; \ v32.v_bootinfo[0] = extv.v_bootinfo[0]; \ v32.v_bootinfo[1] = extv.v_bootinfo[1]; \ v32.v_bootinfo[2] = extv.v_bootinfo[2]; \ v32.v_sanity = extv.v_sanity; \ v32.v_version = extv.v_version; \ bcopy(extv.v_volume, v32.v_volume, LEN_DKL_VVOL); \ v32.v_sectorsz = extv.v_sectorsz; \ v32.v_nparts = extv.v_nparts; \ v32.v_version = extv.v_version; \ for (i = 0; i < 10; i++) \ v32.v_reserved[i] = extv.v_reserved[i]; \ for (i = 0; i < V_NUMPAR; i++) { \ v32.v_part[i].p_tag = (ushort_t)extv.v_part[i].p_tag; \ v32.v_part[i].p_flag = (ushort_t)extv.v_part[i].p_flag; \ v32.v_part[i].p_start = (unsigned)extv.v_part[i].p_start; \ v32.v_part[i].p_size = (unsigned)extv.v_part[i].p_size; \ } \ for (i = 0; i < V_NUMPAR; i++) { \ if (extv.timestamp[i] > TIME32_MAX) \ v32.timestamp[i] = TIME32_MAX; \ else \ v32.timestamp[i] = (time32_t)extv.timestamp[i]; \ } \ bcopy(extv.v_asciilabel, v32.v_asciilabel, LEN_DKL_ASCII); \ } #endif /* _SYSCALL32 */ /* * These defines are the mode parameter for the checksum routines. */ #define CK_CHECKSUM 0 /* check checksum */ #define CK_MAKESUM 1 /* generate checksum */ #if defined(__STDC__) extern int read_vtoc(int, struct vtoc *); extern int write_vtoc(int, struct vtoc *); extern int read_extvtoc(int, struct extvtoc *); extern int write_extvtoc(int, struct extvtoc *); #else extern int read_vtoc(); extern int write_vtoc(); extern int read_extvtoc(); extern int write_extvtoc(); #endif /* __STDC__ */ #ifdef __cplusplus } #endif #endif /* _SYS_VTOC_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/int_limits.h0000644000000000000000000000007413607166132022240 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.990506542 zfs-0.8.3/lib/libspl/include/sys/int_limits.h0000644016037001603700000000177713607166132022251 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_INT_LIMITS_H #define _LIBSPL_SYS_INT_LIMITS_H #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/cmn_err.h0000644000000000000000000000007413607166132021512 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.972505965 zfs-0.8.3/lib/libspl/include/sys/cmn_err.h0000644016037001603700000000177113607166132021515 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_CMN_ERR_H #define _LIBSPL_SYS_CMN_ERR_H #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/signal.h0000644000000000000000000000007413607166147021350 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.025507667 zfs-0.8.3/lib/libspl/include/sys/signal.h0000644016037001603700000000242713607166147021352 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2017 Zettabyte Software, LLC. All rights reserved. * Use is subject to license terms. */ /* * Compiling against musl correctly points out that including sys/signal.h is * disallowed by the Single UNIX Specification when building in userspace, so * we implement a dummy header to redirect the include to the proper header. */ #ifndef _LIBSPL_SYS_SIGNAL_H #define _LIBSPL_SYS_SIGNAL_H #include #endif /* _LIBSPL_SYS_SIGNAL_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/acl.h0000644000000000000000000000007413607166132020624 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.960505579 zfs-0.8.3/lib/libspl/include/sys/acl.h0000644016037001603700000002162413607166132020626 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_ACL_H #define _SYS_ACL_H #include #include #ifdef __cplusplus extern "C" { #endif #define MAX_ACL_ENTRIES (1024) /* max entries of each type */ typedef struct acl { int a_type; /* the type of ACL entry */ uid_t a_id; /* the entry in -uid or gid */ o_mode_t a_perm; /* the permission field */ } aclent_t; typedef struct ace { uid_t a_who; /* uid or gid */ uint32_t a_access_mask; /* read,write,... */ uint16_t a_flags; /* see below */ uint16_t a_type; /* allow or deny */ } ace_t; typedef struct acl_info acl_t; /* * The following are Defined types for an aclent_t. */ #define USER_OBJ (0x01) /* object owner */ #define USER (0x02) /* additional users */ #define GROUP_OBJ (0x04) /* owning group of the object */ #define GROUP (0x08) /* additional groups */ #define CLASS_OBJ (0x10) /* file group class and mask entry */ #define OTHER_OBJ (0x20) /* other entry for the object */ #define ACL_DEFAULT (0x1000) /* default flag */ /* default object owner */ #define DEF_USER_OBJ (ACL_DEFAULT | USER_OBJ) /* default additional users */ #define DEF_USER (ACL_DEFAULT | USER) /* default owning group */ #define DEF_GROUP_OBJ (ACL_DEFAULT | GROUP_OBJ) /* default additional groups */ #define DEF_GROUP (ACL_DEFAULT | GROUP) /* default mask entry */ #define DEF_CLASS_OBJ (ACL_DEFAULT | CLASS_OBJ) /* default other entry */ #define DEF_OTHER_OBJ (ACL_DEFAULT | OTHER_OBJ) /* * The following are defined for ace_t. */ #define ACE_READ_DATA 0x00000001 #define ACE_LIST_DIRECTORY 0x00000001 #define ACE_WRITE_DATA 0x00000002 #define ACE_ADD_FILE 0x00000002 #define ACE_APPEND_DATA 0x00000004 #define ACE_ADD_SUBDIRECTORY 0x00000004 #define ACE_READ_NAMED_ATTRS 0x00000008 #define ACE_WRITE_NAMED_ATTRS 0x00000010 #define ACE_EXECUTE 0x00000020 #define ACE_DELETE_CHILD 0x00000040 #define ACE_READ_ATTRIBUTES 0x00000080 #define ACE_WRITE_ATTRIBUTES 0x00000100 #define ACE_DELETE 0x00010000 #define ACE_READ_ACL 0x00020000 #define ACE_WRITE_ACL 0x00040000 #define ACE_WRITE_OWNER 0x00080000 #define ACE_SYNCHRONIZE 0x00100000 #define ACE_FILE_INHERIT_ACE 0x0001 #define ACE_DIRECTORY_INHERIT_ACE 0x0002 #define ACE_NO_PROPAGATE_INHERIT_ACE 0x0004 #define ACE_INHERIT_ONLY_ACE 0x0008 #define ACE_SUCCESSFUL_ACCESS_ACE_FLAG 0x0010 #define ACE_FAILED_ACCESS_ACE_FLAG 0x0020 #define ACE_IDENTIFIER_GROUP 0x0040 #define ACE_INHERITED_ACE 0x0080 #define ACE_OWNER 0x1000 #define ACE_GROUP 0x2000 #define ACE_EVERYONE 0x4000 #define ACE_ACCESS_ALLOWED_ACE_TYPE 0x0000 #define ACE_ACCESS_DENIED_ACE_TYPE 0x0001 #define ACE_SYSTEM_AUDIT_ACE_TYPE 0x0002 #define ACE_SYSTEM_ALARM_ACE_TYPE 0x0003 #define ACL_AUTO_INHERIT 0x0001 #define ACL_PROTECTED 0x0002 #define ACL_DEFAULTED 0x0004 #define ACL_FLAGS_ALL (ACL_AUTO_INHERIT|ACL_PROTECTED| \ ACL_DEFAULTED) #ifdef _KERNEL /* * These are only applicable in a CIFS context. */ #define ACE_ACCESS_ALLOWED_COMPOUND_ACE_TYPE 0x04 #define ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x05 #define ACE_ACCESS_DENIED_OBJECT_ACE_TYPE 0x06 #define ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE 0x07 #define ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE 0x08 #define ACE_ACCESS_ALLOWED_CALLBACK_ACE_TYPE 0x09 #define ACE_ACCESS_DENIED_CALLBACK_ACE_TYPE 0x0A #define ACE_ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE 0x0B #define ACE_ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE 0x0C #define ACE_SYSTEM_AUDIT_CALLBACK_ACE_TYPE 0x0D #define ACE_SYSTEM_ALARM_CALLBACK_ACE_TYPE 0x0E #define ACE_SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE 0x0F #define ACE_SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE 0x10 #define ACE_ALL_TYPES 0x001F typedef struct ace_object { uid_t a_who; /* uid or gid */ uint32_t a_access_mask; /* read,write,... */ uint16_t a_flags; /* see below */ uint16_t a_type; /* allow or deny */ uint8_t a_obj_type[16]; /* obj type */ uint8_t a_inherit_obj_type[16]; /* inherit obj */ } ace_object_t; #endif #define ACE_ALL_PERMS (ACE_READ_DATA|ACE_LIST_DIRECTORY|ACE_WRITE_DATA| \ ACE_ADD_FILE|ACE_APPEND_DATA|ACE_ADD_SUBDIRECTORY|ACE_READ_NAMED_ATTRS| \ ACE_WRITE_NAMED_ATTRS|ACE_EXECUTE|ACE_DELETE_CHILD|ACE_READ_ATTRIBUTES| \ ACE_WRITE_ATTRIBUTES|ACE_DELETE|ACE_READ_ACL|ACE_WRITE_ACL| \ ACE_WRITE_OWNER|ACE_SYNCHRONIZE) /* * The following flags are supported by both NFSv4 ACLs and ace_t. */ #define ACE_NFSV4_SUP_FLAGS (ACE_FILE_INHERIT_ACE | \ ACE_DIRECTORY_INHERIT_ACE | \ ACE_NO_PROPAGATE_INHERIT_ACE | \ ACE_INHERIT_ONLY_ACE | \ ACE_IDENTIFIER_GROUP) #define ACE_TYPE_FLAGS (ACE_OWNER|ACE_GROUP|ACE_EVERYONE| \ ACE_IDENTIFIER_GROUP) #define ACE_INHERIT_FLAGS (ACE_FILE_INHERIT_ACE| \ ACE_DIRECTORY_INHERIT_ACE|ACE_NO_PROPAGATE_INHERIT_ACE|ACE_INHERIT_ONLY_ACE) /* cmd args to acl(2) for aclent_t */ #define GETACL 1 #define SETACL 2 #define GETACLCNT 3 /* cmd's to manipulate ace acls. */ #define ACE_GETACL 4 #define ACE_SETACL 5 #define ACE_GETACLCNT 6 /* minimal acl entries from GETACLCNT */ #define MIN_ACL_ENTRIES 4 #if !defined(_KERNEL) /* acl check errors */ #define GRP_ERROR 1 #define USER_ERROR 2 #define OTHER_ERROR 3 #define CLASS_ERROR 4 #define DUPLICATE_ERROR 5 #define MISS_ERROR 6 #define MEM_ERROR 7 #define ENTRY_ERROR 8 /* * similar to ufs_acl.h: changed to char type for user commands (tar, cpio) * Attribute types */ #define UFSD_FREE ('0') /* Free entry */ #define UFSD_ACL ('1') /* Access Control Lists */ #define UFSD_DFACL ('2') /* reserved for future use */ #define ACE_ACL ('3') /* ace_t style acls */ /* * flag to [f]acl_get() * controls whether a trivial acl should be returned. */ #define ACL_NO_TRIVIAL 0x2 /* * Flags to control acl_totext() */ #define ACL_APPEND_ID 0x1 /* append uid/gid to user/group entries */ #define ACL_COMPACT_FMT 0x2 /* build ACL in ls -V format */ #define ACL_NORESOLVE 0x4 /* don't do name service lookups */ /* * Legacy aclcheck errors for aclent_t ACLs */ #define EACL_GRP_ERROR GRP_ERROR #define EACL_USER_ERROR USER_ERROR #define EACL_OTHER_ERROR OTHER_ERROR #define EACL_CLASS_ERROR CLASS_ERROR #define EACL_DUPLICATE_ERROR DUPLICATE_ERROR #define EACL_MISS_ERROR MISS_ERROR #define EACL_MEM_ERROR MEM_ERROR #define EACL_ENTRY_ERROR ENTRY_ERROR #define EACL_INHERIT_ERROR 9 /* invalid inherit flags */ #define EACL_FLAGS_ERROR 10 /* unknown flag value */ #define EACL_PERM_MASK_ERROR 11 /* unknown permission */ #define EACL_COUNT_ERROR 12 /* invalid acl count */ #define EACL_INVALID_SLOT 13 /* invalid acl slot */ #define EACL_NO_ACL_ENTRY 14 /* Entry doesn't exist */ #define EACL_DIFF_TYPE 15 /* acls aren't same type */ #define EACL_INVALID_USER_GROUP 16 /* need user/group name */ #define EACL_INVALID_STR 17 /* invalid acl string */ #define EACL_FIELD_NOT_BLANK 18 /* can't have blank field */ #define EACL_INVALID_ACCESS_TYPE 19 /* invalid access type */ #define EACL_UNKNOWN_DATA 20 /* Unrecognized data in ACL */ #define EACL_MISSING_FIELDS 21 /* missing fields in acl */ #define EACL_INHERIT_NOTDIR 22 /* Need dir for inheritance */ extern int aclcheck(aclent_t *, int, int *); extern int acltomode(aclent_t *, int, mode_t *); extern int aclfrommode(aclent_t *, int, mode_t *); extern int aclsort(int, int, aclent_t *); extern char *acltotext(aclent_t *, int); extern aclent_t *aclfromtext(char *, int *); extern void acl_free(acl_t *); extern int acl_get(const char *, int, acl_t **); extern int facl_get(int, int, acl_t **); extern int acl_set(const char *, acl_t *acl); extern int facl_set(int, acl_t *acl); extern int acl_strip(const char *, uid_t, gid_t, mode_t); extern int acl_trivial(const char *); extern char *acl_totext(acl_t *, int); extern int acl_fromtext(const char *, acl_t **); extern int acl_check(acl_t *, int); #else /* !defined(_KERNEL) */ extern void ksort(caddr_t, int, int, int (*)(void *, void *)); extern int cmp2acls(void *, void *); #endif /* !defined(_KERNEL) */ #if defined(__STDC__) extern int acl(const char *path, int cmd, int cnt, void *buf); extern int facl(int fd, int cmd, int cnt, void *buf); #else /* !__STDC__ */ extern int acl(); extern int facl(); #endif /* defined(__STDC__) */ #ifdef __cplusplus } #endif #endif /* _SYS_ACL_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147021756 xustar000000000000000030 atime=1579730430.298167915 30 ctime=1579730472.067509016 zfs-0.8.3/lib/libspl/include/sys/Makefile.am0000644016037001603700000000465313607166147021763 0ustar00hutter2hutter200000000000000SUBDIRS = dktp libspldir = $(includedir)/libspl/sys libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/sys/acl.h \ $(top_srcdir)/lib/libspl/include/sys/acl_impl.h \ $(top_srcdir)/lib/libspl/include/sys/bitmap.h \ $(top_srcdir)/lib/libspl/include/sys/byteorder.h \ $(top_srcdir)/lib/libspl/include/sys/callb.h \ $(top_srcdir)/lib/libspl/include/sys/cmn_err.h \ $(top_srcdir)/lib/libspl/include/sys/cred.h \ $(top_srcdir)/lib/libspl/include/sys/debug.h \ $(top_srcdir)/lib/libspl/include/sys/dkio.h \ $(top_srcdir)/lib/libspl/include/sys/dklabel.h \ $(top_srcdir)/lib/libspl/include/sys/errno.h \ $(top_srcdir)/lib/libspl/include/sys/feature_tests.h \ $(top_srcdir)/lib/libspl/include/sys/file.h \ $(top_srcdir)/lib/libspl/include/sys/int_limits.h \ $(top_srcdir)/lib/libspl/include/sys/int_types.h \ $(top_srcdir)/lib/libspl/include/sys/inttypes.h \ $(top_srcdir)/lib/libspl/include/sys/isa_defs.h \ $(top_srcdir)/lib/libspl/include/sys/kmem.h \ $(top_srcdir)/lib/libspl/include/sys/kstat.h \ $(top_srcdir)/lib/libspl/include/sys/list.h \ $(top_srcdir)/lib/libspl/include/sys/list_impl.h \ $(top_srcdir)/lib/libspl/include/sys/mhd.h \ $(top_srcdir)/lib/libspl/include/sys/mkdev.h \ $(top_srcdir)/lib/libspl/include/sys/mnttab.h \ $(top_srcdir)/lib/libspl/include/sys/mount.h \ $(top_srcdir)/lib/libspl/include/sys/param.h \ $(top_srcdir)/lib/libspl/include/sys/policy.h \ $(top_srcdir)/lib/libspl/include/sys/poll.h \ $(top_srcdir)/lib/libspl/include/sys/priv.h \ $(top_srcdir)/lib/libspl/include/sys/processor.h \ $(top_srcdir)/lib/libspl/include/sys/signal.h \ $(top_srcdir)/lib/libspl/include/sys/stack.h \ $(top_srcdir)/lib/libspl/include/sys/stat.h \ $(top_srcdir)/lib/libspl/include/sys/stdtypes.h \ $(top_srcdir)/lib/libspl/include/sys/strings.h \ $(top_srcdir)/lib/libspl/include/sys/stropts.h \ $(top_srcdir)/lib/libspl/include/sys/sunddi.h \ $(top_srcdir)/lib/libspl/include/sys/sysmacros.h \ $(top_srcdir)/lib/libspl/include/sys/systeminfo.h \ $(top_srcdir)/lib/libspl/include/sys/time.h \ $(top_srcdir)/lib/libspl/include/sys/types32.h \ $(top_srcdir)/lib/libspl/include/sys/types.h \ $(top_srcdir)/lib/libspl/include/sys/tzfile.h \ $(top_srcdir)/lib/libspl/include/sys/uio.h \ $(top_srcdir)/lib/libspl/include/sys/va_list.h \ $(top_srcdir)/lib/libspl/include/sys/varargs.h \ $(top_srcdir)/lib/libspl/include/sys/vnode.h \ $(top_srcdir)/lib/libspl/include/sys/vtoc.h \ $(top_srcdir)/lib/libspl/include/sys/zone.h zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/processor.h0000644000000000000000000000007413607166132022104 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.023507603 zfs-0.8.3/lib/libspl/include/sys/processor.h0000644016037001603700000000206213607166132022101 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_PROCESSOR_H #define _LIBSPL_SYS_PROCESSOR_H #define getcpuid() (-1) typedef int processorid_t; #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/stat.h0000644000000000000000000000007413607166147021046 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.029507795 zfs-0.8.3/lib/libspl/include/sys/stat.h0000644016037001603700000000266613607166147021055 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _LIBSPL_SYS_STAT_H #define _LIBSPL_SYS_STAT_H #include_next #include /* for BLKGETSIZE64 */ /* * Emulate Solaris' behavior of returning the block device size in fstat64(). */ static inline int fstat64_blk(int fd, struct stat64 *st) { if (fstat64(fd, st) == -1) return (-1); /* In Linux we need to use an ioctl to get the size of a block device */ if (S_ISBLK(st->st_mode)) { if (ioctl(fd, BLKGETSIZE64, &st->st_size) != 0) return (-1); } return (0); } #endif /* _LIBSPL_SYS_STAT_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/varargs.h0000644000000000000000000000007413607166132021532 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.058508725 zfs-0.8.3/lib/libspl/include/sys/varargs.h0000644016037001603700000000177113607166132021535 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_VARARGS_H #define _LIBSPL_SYS_VARARGS_H #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/tzfile.h0000644000000000000000000000007413607166132021362 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.052508533 zfs-0.8.3/lib/libspl/include/sys/tzfile.h0000644016037001603700000001106513607166132021362 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * from Arthur Olson's 6.1 */ #ifndef _LIBSPL_SYS_TZFILE_H #define _LIBSPL_SYS_TZFILE_H #ifdef __cplusplus extern "C" { #endif /* * Information about time zone files. */ #define TZDIR "/usr/share/lib/zoneinfo" /* Time zone object file directory */ #define TZDEFAULT (getenv("TZ")) #define TZDEFRULES "posixrules" /* * Each file begins with. . . */ struct tzhead { char tzh_reserved[24]; /* reserved for future use */ char tzh_ttisstdcnt[4]; /* coded number of trans. time flags */ char tzh_leapcnt[4]; /* coded number of leap seconds */ char tzh_timecnt[4]; /* coded number of transition times */ char tzh_typecnt[4]; /* coded number of local time types */ char tzh_charcnt[4]; /* coded number of abbr. chars */ }; /* * . . .followed by. . . * * tzh_timecnt (char [4])s coded transition times a la time(2) * tzh_timecnt (unsigned char)s types of local time starting at above * tzh_typecnt repetitions of * one (char [4]) coded GMT offset in seconds * one (unsigned char) used to set tm_isdst * one (unsigned char) that's an abbreviation list index * tzh_charcnt (char)s '\0'-terminated zone abbreviations * tzh_leapcnt repetitions of * one (char [4]) coded leap second transition times * one (char [4]) total correction after above * tzh_ttisstdcnt (char)s indexed by type; if TRUE, transition * time is standard time, if FALSE, * transition time is wall clock time * if absent, transition times are * assumed to be wall clock time */ /* * In the current implementation, "tzset()" refuses to deal with files that * exceed any of the limits below. */ /* * The TZ_MAX_TIMES value below is enough to handle a bit more than a * year's worth of solar time (corrected daily to the nearest second) or * 138 years of Pacific Presidential Election time * (where there are three time zone transitions every fourth year). */ #define TZ_MAX_TIMES 370 #define TZ_MAX_TYPES 256 /* Limited by what (unsigned char)'s can hold */ #define TZ_MAX_CHARS 50 /* Maximum number of abbreviation characters */ #define TZ_MAX_LEAPS 50 /* Maximum number of leap second corrections */ #define SECSPERMIN 60 #define MINSPERHOUR 60 #define HOURSPERDAY 24 #define DAYSPERWEEK 7 #define DAYSPERNYEAR 365 #define DAYSPERLYEAR 366 #define SECSPERHOUR (SECSPERMIN * MINSPERHOUR) #define SECSPERDAY ((long)SECSPERHOUR * HOURSPERDAY) #define MONSPERYEAR 12 #define TM_SUNDAY 0 #define TM_MONDAY 1 #define TM_TUESDAY 2 #define TM_WEDNESDAY 3 #define TM_THURSDAY 4 #define TM_FRIDAY 5 #define TM_SATURDAY 6 #define TM_JANUARY 0 #define TM_FEBRUARY 1 #define TM_MARCH 2 #define TM_APRIL 3 #define TM_MAY 4 #define TM_JUNE 5 #define TM_JULY 6 #define TM_AUGUST 7 #define TM_SEPTEMBER 8 #define TM_OCTOBER 9 #define TM_NOVEMBER 10 #define TM_DECEMBER 11 #define TM_YEAR_BASE 1900 #define EPOCH_YEAR 1970 #define EPOCH_WDAY TM_THURSDAY /* * Accurate only for the past couple of centuries; * that will probably do. */ #define isleap(y) (((y) % 4) == 0 && ((y) % 100) != 0 || ((y) % 400) == 0) /* * Use of the underscored variants may cause problems if you move your code to * certain System-V-based systems; for maximum portability, use the * underscore-free variants. The underscored variants are provided for * backward compatibility only; they may disappear from future versions of * this file. */ #define SECS_PER_MIN SECSPERMIN #define MINS_PER_HOUR MINSPERHOUR #define HOURS_PER_DAY HOURSPERDAY #define DAYS_PER_WEEK DAYSPERWEEK #define DAYS_PER_NYEAR DAYSPERNYEAR #define DAYS_PER_LYEAR DAYSPERLYEAR #define SECS_PER_HOUR SECSPERHOUR #define SECS_PER_DAY SECSPERDAY #define MONS_PER_YEAR MONSPERYEAR #ifdef __cplusplus } #endif #endif /* _LIBSPL_SYS_TZFILE_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/kstat.h0000644000000000000000000000007413612141513021203 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.002506928 zfs-0.8.3/lib/libspl/include/sys/kstat.h0000644016037001603700000007200613612141513021205 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_KSTAT_H #define _SYS_KSTAT_H /* * Definition of general kernel statistics structures and /dev/kstat ioctls */ #include #include #ifdef __cplusplus extern "C" { #endif typedef int kid_t; /* unique kstat id */ /* * Kernel statistics driver (/dev/kstat) ioctls */ #define KSTAT_IOC_BASE ('K' << 8) #define KSTAT_IOC_CHAIN_ID KSTAT_IOC_BASE | 0x01 #define KSTAT_IOC_READ KSTAT_IOC_BASE | 0x02 #define KSTAT_IOC_WRITE KSTAT_IOC_BASE | 0x03 /* * /dev/kstat ioctl usage (kd denotes /dev/kstat descriptor): * * kcid = ioctl(kd, KSTAT_IOC_CHAIN_ID, NULL); * kcid = ioctl(kd, KSTAT_IOC_READ, kstat_t *); * kcid = ioctl(kd, KSTAT_IOC_WRITE, kstat_t *); */ #define KSTAT_STRLEN 255 /* 254 chars + NULL; must be 16 * n - 1 */ /* * The generic kstat header */ typedef struct kstat { /* * Fields relevant to both kernel and user */ hrtime_t ks_crtime; /* creation time (from gethrtime()) */ struct kstat *ks_next; /* kstat chain linkage */ kid_t ks_kid; /* unique kstat ID */ char ks_module[KSTAT_STRLEN]; /* provider module name */ uchar_t ks_resv; /* reserved, currently just padding */ int ks_instance; /* provider module's instance */ char ks_name[KSTAT_STRLEN]; /* kstat name */ uchar_t ks_type; /* kstat data type */ char ks_class[KSTAT_STRLEN]; /* kstat class */ uchar_t ks_flags; /* kstat flags */ void *ks_data; /* kstat type-specific data */ uint_t ks_ndata; /* # of type-specific data records */ size_t ks_data_size; /* total size of kstat data section */ hrtime_t ks_snaptime; /* time of last data snapshot */ /* * Fields relevant to kernel only */ int (*ks_update)(struct kstat *, int); /* dynamic update */ void *ks_private; /* arbitrary provider-private data */ int (*ks_snapshot)(struct kstat *, void *, int); void *ks_lock; /* protects this kstat's data */ } kstat_t; #ifdef _SYSCALL32 typedef int32_t kid32_t; typedef struct kstat32 { /* * Fields relevant to both kernel and user */ hrtime_t ks_crtime; caddr32_t ks_next; /* struct kstat pointer */ kid32_t ks_kid; char ks_module[KSTAT_STRLEN]; uint8_t ks_resv; int32_t ks_instance; char ks_name[KSTAT_STRLEN]; uint8_t ks_type; char ks_class[KSTAT_STRLEN]; uint8_t ks_flags; caddr32_t ks_data; /* type-specific data */ uint32_t ks_ndata; size32_t ks_data_size; hrtime_t ks_snaptime; /* * Fields relevant to kernel only (only needed here for padding) */ int32_t _ks_update; caddr32_t _ks_private; int32_t _ks_snapshot; caddr32_t _ks_lock; } kstat32_t; #endif /* _SYSCALL32 */ /* * kstat structure and locking strategy * * Each kstat consists of a header section (a kstat_t) and a data section. * The system maintains a set of kstats, protected by kstat_chain_lock. * kstat_chain_lock protects all additions to/deletions from this set, * as well as all changes to kstat headers. kstat data sections are * *optionally* protected by the per-kstat ks_lock. If ks_lock is non-NULL, * kstat clients (e.g. /dev/kstat) will acquire this lock for all of their * operations on that kstat. It is up to the kstat provider to decide whether * guaranteeing consistent data to kstat clients is sufficiently important * to justify the locking cost. Note, however, that most statistic updates * already occur under one of the provider's mutexes, so if the provider sets * ks_lock to point to that mutex, then kstat data locking is free. * * NOTE: variable-size kstats MUST employ kstat data locking, to prevent * data-size races with kstat clients. * * NOTE: ks_lock is really of type (kmutex_t *); it is declared as (void *) * in the kstat header so that users don't have to be exposed to all of the * kernel's lock-related data structures. */ #if defined(_KERNEL) #define KSTAT_ENTER(k) \ { kmutex_t *lp = (k)->ks_lock; if (lp) mutex_enter(lp); } #define KSTAT_EXIT(k) \ { kmutex_t *lp = (k)->ks_lock; if (lp) mutex_exit(lp); } #define KSTAT_UPDATE(k, rw) (*(k)->ks_update)((k), (rw)) #define KSTAT_SNAPSHOT(k, buf, rw) (*(k)->ks_snapshot)((k), (buf), (rw)) #endif /* defined(_KERNEL) */ /* * kstat time * * All times associated with kstats (e.g. creation time, snapshot time, * kstat_timer_t and kstat_io_t timestamps, etc.) are 64-bit nanosecond values, * as returned by gethrtime(). The accuracy of these timestamps is machine * dependent, but the precision (units) is the same across all platforms. */ /* * kstat identity (KID) * * Each kstat is assigned a unique KID (kstat ID) when it is added to the * global kstat chain. The KID is used as a cookie by /dev/kstat to * request information about the corresponding kstat. There is also * an identity associated with the entire kstat chain, kstat_chain_id, * which is bumped each time a kstat is added or deleted. /dev/kstat uses * the chain ID to detect changes in the kstat chain (e.g., a new disk * coming online) between ioctl()s. */ /* * kstat module, kstat instance * * ks_module and ks_instance contain the name and instance of the module * that created the kstat. In cases where there can only be one instance, * ks_instance is 0. The kernel proper (/kernel/unix) uses "unix" as its * module name. */ /* * kstat name * * ks_name gives a meaningful name to a kstat. The full kstat namespace * is module.instance.name, so the name only need be unique within a * module. kstat_create() will fail if you try to create a kstat with * an already-used (ks_module, ks_instance, ks_name) triplet. Spaces are * allowed in kstat names, but strongly discouraged, since they hinder * awk-style processing at user level. */ /* * kstat type * * The kstat mechanism provides several flavors of kstat data, defined * below. The "raw" kstat type is just treated as an array of bytes; you * can use this to export any kind of data you want. * * Some kstat types allow multiple data structures per kstat, e.g. * KSTAT_TYPE_NAMED; others do not. This is part of the spec for each * kstat data type. * * User-level tools should *not* rely on the #define KSTAT_NUM_TYPES. To * get this information, read out the standard system kstat "kstat_types". */ #define KSTAT_TYPE_RAW 0 /* can be anything */ /* ks_ndata >= 1 */ #define KSTAT_TYPE_NAMED 1 /* name/value pair */ /* ks_ndata >= 1 */ #define KSTAT_TYPE_INTR 2 /* interrupt statistics */ /* ks_ndata == 1 */ #define KSTAT_TYPE_IO 3 /* I/O statistics */ /* ks_ndata == 1 */ #define KSTAT_TYPE_TIMER 4 /* event timer */ /* ks_ndata >= 1 */ #define KSTAT_NUM_TYPES 5 /* * kstat class * * Each kstat can be characterized as belonging to some broad class * of statistics, e.g. disk, tape, net, vm, streams, etc. This field * can be used as a filter to extract related kstats. The following * values are currently in use: disk, tape, net, controller, vm, kvm, * hat, streams, kstat, and misc. (The kstat class encompasses things * like kstat_types.) */ /* * kstat flags * * Any of the following flags may be passed to kstat_create(). They are * all zero by default. * * KSTAT_FLAG_VIRTUAL: * * Tells kstat_create() not to allocate memory for the * kstat data section; instead, you will set the ks_data * field to point to the data you wish to export. This * provides a convenient way to export existing data * structures. * * KSTAT_FLAG_VAR_SIZE: * * The size of the kstat you are creating will vary over time. * For example, you may want to use the kstat mechanism to * export a linked list. NOTE: The kstat framework does not * manage the data section, so all variable-size kstats must be * virtual kstats. Moreover, variable-size kstats MUST employ * kstat data locking to prevent data-size races with kstat * clients. See the section on "kstat snapshot" for details. * * KSTAT_FLAG_WRITABLE: * * Makes the kstat's data section writable by root. * The ks_snapshot routine (see below) does not need to check for * this; permission checking is handled in the kstat driver. * * KSTAT_FLAG_PERSISTENT: * * Indicates that this kstat is to be persistent over time. * For persistent kstats, kstat_delete() simply marks the * kstat as dormant; a subsequent kstat_create() reactivates * the kstat. This feature is provided so that statistics * are not lost across driver close/open (e.g., raw disk I/O * on a disk with no mounted partitions.) * NOTE: Persistent kstats cannot be virtual, since ks_data * points to garbage as soon as the driver goes away. * * The following flags are maintained by the kstat framework: * * KSTAT_FLAG_DORMANT: * * For persistent kstats, indicates that the kstat is in the * dormant state (e.g., the corresponding device is closed). * * KSTAT_FLAG_INVALID: * * This flag is set when a kstat is in a transitional state, * e.g. between kstat_create() and kstat_install(). * kstat clients must not attempt to access the kstat's data * if this flag is set. */ #define KSTAT_FLAG_VIRTUAL 0x01 #define KSTAT_FLAG_VAR_SIZE 0x02 #define KSTAT_FLAG_WRITABLE 0x04 #define KSTAT_FLAG_PERSISTENT 0x08 #define KSTAT_FLAG_DORMANT 0x10 #define KSTAT_FLAG_INVALID 0x20 #define KSTAT_FLAG_LONGSTRINGS 0x40 #define KSTAT_FLAG_NO_HEADERS 0x80 /* * Dynamic update support * * The kstat mechanism allows for an optional ks_update function to update * kstat data. This is useful for drivers where the underlying device * keeps cheap hardware stats, but extraction is expensive. Instead of * constantly keeping the kstat data section up to date, you can supply a * ks_update function which updates the kstat's data section on demand. * To take advantage of this feature, simply set the ks_update field before * calling kstat_install(). * * The ks_update function, if supplied, must have the following structure: * * int * foo_kstat_update(kstat_t *ksp, int rw) * { * if (rw == KSTAT_WRITE) { * ... update the native stats from ksp->ks_data; * return EACCES if you don't support this * } else { * ... update ksp->ks_data from the native stats * } * } * * The ks_update return codes are: 0 for success, EACCES if you don't allow * KSTAT_WRITE, and EIO for any other type of error. * * In general, the ks_update function may need to refer to provider-private * data; for example, it may need a pointer to the provider's raw statistics. * The ks_private field is available for this purpose. Its use is entirely * at the provider's discretion. * * All variable-size kstats MUST supply a ks_update routine, which computes * and sets ks_data_size (and ks_ndata if that is meaningful), since these * are needed to perform kstat snapshots (see below). * * No kstat locking should be done inside the ks_update routine. The caller * will already be holding the kstat's ks_lock (to ensure consistent data). */ #define KSTAT_READ 0 #define KSTAT_WRITE 1 /* * Kstat snapshot * * In order to get a consistent view of a kstat's data, clients must obey * the kstat's locking strategy. However, these clients may need to perform * operations on the data which could cause a fault (e.g. copyout()), or * operations which are simply expensive. Doing so could cause deadlock * (e.g. if you're holding a disk's kstat lock which is ultimately required * to resolve a copyout() fault), performance degradation (since the providers' * activity is serialized at the kstat lock), device timing problems, etc. * * To avoid these problems, kstat data is provided via snapshots. Taking * a snapshot is a simple process: allocate a wired-down kernel buffer, * acquire the kstat's data lock, copy the data into the buffer ("take the * snapshot"), and release the lock. This ensures that the kstat's data lock * will be held as briefly as possible, and that no faults will occur while * the lock is held. * * Normally, the snapshot is taken by default_kstat_snapshot(), which * timestamps the data (sets ks_snaptime), copies it, and does a little * massaging to deal with incomplete transactions on i/o kstats. However, * this routine only works for kstats with contiguous data (the typical case). * If you create a kstat whose data is, say, a linked list, you must provide * your own ks_snapshot routine. The routine you supply must have the * following prototype (replace "foo" with something appropriate): * * int foo_kstat_snapshot(kstat_t *ksp, void *buf, int rw); * * The minimal snapshot routine -- one which copies contiguous data that * doesn't need any massaging -- would be this: * * ksp->ks_snaptime = gethrtime(); * if (rw == KSTAT_WRITE) * bcopy(buf, ksp->ks_data, ksp->ks_data_size); * else * bcopy(ksp->ks_data, buf, ksp->ks_data_size); * return (0); * * A more illuminating example is taking a snapshot of a linked list: * * ksp->ks_snaptime = gethrtime(); * if (rw == KSTAT_WRITE) * return (EACCES); ... See below ... * for (foo = first_foo; foo; foo = foo->next) { * bcopy((char *) foo, (char *) buf, sizeof (struct foo)); * buf = ((struct foo *) buf) + 1; * } * return (0); * * In the example above, we have decided that we don't want to allow * KSTAT_WRITE access, so we return EACCES if this is attempted. * * The key points are: * * (1) ks_snaptime must be set (via gethrtime()) to timestamp the data. * (2) Data gets copied from the kstat to the buffer on KSTAT_READ, * and from the buffer to the kstat on KSTAT_WRITE. * (3) ks_snapshot return values are: 0 for success, EACCES if you * don't allow KSTAT_WRITE, and EIO for any other type of error. * * Named kstats (see section on "Named statistics" below) containing long * strings (KSTAT_DATA_STRING) need special handling. The kstat driver * assumes that all strings are copied into the buffer after the array of * named kstats, and the pointers (KSTAT_NAMED_STR_PTR()) are updated to point * into the copy within the buffer. The default snapshot routine does this, * but overriding routines should contain at least the following: * * if (rw == KSTAT_READ) { * kstat_named_t *knp = buf; * char *end = knp + ksp->ks_ndata; * uint_t i; * * ... Do the regular copy ... * bcopy(ksp->ks_data, buf, sizeof (kstat_named_t) * ksp->ks_ndata); * * for (i = 0; i < ksp->ks_ndata; i++, knp++) { * if (knp[i].data_type == KSTAT_DATA_STRING && * KSTAT_NAMED_STR_PTR(knp) != NULL) { * bcopy(KSTAT_NAMED_STR_PTR(knp), end, * KSTAT_NAMED_STR_BUFLEN(knp)); * KSTAT_NAMED_STR_PTR(knp) = end; * end += KSTAT_NAMED_STR_BUFLEN(knp); * } * } */ /* * Named statistics. * * List of arbitrary name=value statistics. */ typedef struct kstat_named { char name[KSTAT_STRLEN]; /* name of counter */ uchar_t data_type; /* data type */ union { char c[16]; /* enough for 128-bit ints */ int32_t i32; uint32_t ui32; struct { union { char *ptr; /* NULL-term string */ #if defined(_KERNEL) && defined(_MULTI_DATAMODEL) caddr32_t ptr32; #endif char __pad[8]; /* 64-bit padding */ } addr; uint32_t len; /* # bytes for strlen + '\0' */ } str; /* * The int64_t and uint64_t types are not valid for a maximally conformant * 32-bit compilation environment (cc -Xc) using compilers prior to the * introduction of C99 conforming compiler (reference ISO/IEC 9899:1990). * In these cases, the visibility of i64 and ui64 is only permitted for * 64-bit compilation environments or 32-bit non-maximally conformant * C89 or C90 ANSI C compilation environments (cc -Xt and cc -Xa). In the * C99 ANSI C compilation environment, the long long type is supported. * The _INT64_TYPE is defined by the implementation (see sys/int_types.h). */ #if defined(_INT64_TYPE) int64_t i64; uint64_t ui64; #endif long l; ulong_t ul; /* These structure members are obsolete */ longlong_t ll; u_longlong_t ull; float f; double d; } value; /* value of counter */ } kstat_named_t; #define KSTAT_DATA_CHAR 0 #define KSTAT_DATA_INT32 1 #define KSTAT_DATA_UINT32 2 #define KSTAT_DATA_INT64 3 #define KSTAT_DATA_UINT64 4 #if !defined(_LP64) #define KSTAT_DATA_LONG KSTAT_DATA_INT32 #define KSTAT_DATA_ULONG KSTAT_DATA_UINT32 #else #if !defined(_KERNEL) #define KSTAT_DATA_LONG KSTAT_DATA_INT64 #define KSTAT_DATA_ULONG KSTAT_DATA_UINT64 #else #define KSTAT_DATA_LONG 7 /* only visible to the kernel */ #define KSTAT_DATA_ULONG 8 /* only visible to the kernel */ #endif /* !_KERNEL */ #endif /* !_LP64 */ /* * Statistics exporting named kstats with long strings (KSTAT_DATA_STRING) * may not make the assumption that ks_data_size is equal to (ks_ndata * sizeof * (kstat_named_t)). ks_data_size in these cases is equal to the sum of the * amount of space required to store the strings (ie, the sum of * KSTAT_NAMED_STR_BUFLEN() for all KSTAT_DATA_STRING statistics) plus the * space required to store the kstat_named_t's. * * The default update routine will update ks_data_size automatically for * variable-length kstats containing long strings (using the default update * routine only makes sense if the string is the only thing that is changing * in size, and ks_ndata is constant). Fixed-length kstats containing long * strings must explicitly change ks_data_size (after creation but before * initialization) to reflect the correct amount of space required for the * long strings and the kstat_named_t's. */ #define KSTAT_DATA_STRING 9 /* These types are obsolete */ #define KSTAT_DATA_LONGLONG KSTAT_DATA_INT64 #define KSTAT_DATA_ULONGLONG KSTAT_DATA_UINT64 #define KSTAT_DATA_FLOAT 5 #define KSTAT_DATA_DOUBLE 6 #define KSTAT_NAMED_PTR(kptr) ((kstat_named_t *)(kptr)->ks_data) /* * Retrieve the pointer of the string contained in the given named kstat. */ #define KSTAT_NAMED_STR_PTR(knptr) ((knptr)->value.str.addr.ptr) /* * Retrieve the length of the buffer required to store the string in the given * named kstat. */ #define KSTAT_NAMED_STR_BUFLEN(knptr) ((knptr)->value.str.len) /* * Interrupt statistics. * * An interrupt is a hard interrupt (sourced from the hardware device * itself), a soft interrupt (induced by the system via the use of * some system interrupt source), a watchdog interrupt (induced by * a periodic timer call), spurious (an interrupt entry point was * entered but there was no interrupt condition to service), * or multiple service (an interrupt condition was detected and * serviced just prior to returning from any of the other types). * * Measurement of the spurious class of interrupts is useful for * autovectored devices in order to pinpoint any interrupt latency * problems in a particular system configuration. * * Devices that have more than one interrupt of the same * type should use multiple structures. */ #define KSTAT_INTR_HARD 0 #define KSTAT_INTR_SOFT 1 #define KSTAT_INTR_WATCHDOG 2 #define KSTAT_INTR_SPURIOUS 3 #define KSTAT_INTR_MULTSVC 4 #define KSTAT_NUM_INTRS 5 typedef struct kstat_intr { uint_t intrs[KSTAT_NUM_INTRS]; /* interrupt counters */ } kstat_intr_t; #define KSTAT_INTR_PTR(kptr) ((kstat_intr_t *)(kptr)->ks_data) /* * I/O statistics. */ typedef struct kstat_io { /* * Basic counters. * * The counters should be updated at the end of service * (e.g., just prior to calling biodone()). */ u_longlong_t nread; /* number of bytes read */ u_longlong_t nwritten; /* number of bytes written */ uint_t reads; /* number of read operations */ uint_t writes; /* number of write operations */ /* * Accumulated time and queue length statistics. * * Accumulated time statistics are kept as a running sum * of "active" time. Queue length statistics are kept as a * running sum of the product of queue length and elapsed time * at that length -- i.e., a Riemann sum for queue length * integrated against time. (You can also think of the active time * as a Riemann sum, for the boolean function (queue_length > 0) * integrated against time, or you can think of it as the * Lebesgue measure of the set on which queue_length > 0.) * * ^ * | _________ * 8 | i4 | * | | | * Queue 6 | | * Length | _________ | | * 4 | i2 |_______| | * | | i3 | * 2_______| | * | i1 | * |_______________________________| * Time-> t1 t2 t3 t4 * * At each change of state (entry or exit from the queue), * we add the elapsed time (since the previous state change) * to the active time if the queue length was non-zero during * that interval; and we add the product of the elapsed time * times the queue length to the running length*time sum. * * This method is generalizable to measuring residency * in any defined system: instead of queue lengths, think * of "outstanding RPC calls to server X". * * A large number of I/O subsystems have at least two basic * "lists" of transactions they manage: one for transactions * that have been accepted for processing but for which processing * has yet to begin, and one for transactions which are actively * being processed (but not done). For this reason, two cumulative * time statistics are defined here: wait (pre-service) time, * and run (service) time. * * All times are 64-bit nanoseconds (hrtime_t), as returned by * gethrtime(). * * The units of cumulative busy time are accumulated nanoseconds. * The units of cumulative length*time products are elapsed time * times queue length. * * Updates to the fields below are performed implicitly by calls to * these five functions: * * kstat_waitq_enter() * kstat_waitq_exit() * kstat_runq_enter() * kstat_runq_exit() * * kstat_waitq_to_runq() (see below) * kstat_runq_back_to_waitq() (see below) * * Since kstat_waitq_exit() is typically followed immediately * by kstat_runq_enter(), there is a single kstat_waitq_to_runq() * function which performs both operations. This is a performance * win since only one timestamp is required. * * In some instances, it may be necessary to move a request from * the run queue back to the wait queue, e.g. for write throttling. * For these situations, call kstat_runq_back_to_waitq(). * * These fields should never be updated by any other means. */ hrtime_t wtime; /* cumulative wait (pre-service) time */ hrtime_t wlentime; /* cumulative wait length*time product */ hrtime_t wlastupdate; /* last time wait queue changed */ hrtime_t rtime; /* cumulative run (service) time */ hrtime_t rlentime; /* cumulative run length*time product */ hrtime_t rlastupdate; /* last time run queue changed */ uint_t wcnt; /* count of elements in wait state */ uint_t rcnt; /* count of elements in run state */ } kstat_io_t; #define KSTAT_IO_PTR(kptr) ((kstat_io_t *)(kptr)->ks_data) /* * Event timer statistics - cumulative elapsed time and number of events. * * Updates to these fields are performed implicitly by calls to * kstat_timer_start() and kstat_timer_stop(). */ typedef struct kstat_timer { char name[KSTAT_STRLEN]; /* event name */ uchar_t resv; /* reserved */ u_longlong_t num_events; /* number of events */ hrtime_t elapsed_time; /* cumulative elapsed time */ hrtime_t min_time; /* shortest event duration */ hrtime_t max_time; /* longest event duration */ hrtime_t start_time; /* previous event start time */ hrtime_t stop_time; /* previous event stop time */ } kstat_timer_t; #define KSTAT_TIMER_PTR(kptr) ((kstat_timer_t *)(kptr)->ks_data) #if defined(_KERNEL) #include extern kid_t kstat_chain_id; /* bumped at each state change */ extern void kstat_init(void); /* initialize kstat framework */ /* * Adding and deleting kstats. * * The typical sequence to add a kstat is: * * ksp = kstat_create(module, instance, name, class, type, ndata, flags); * if (ksp) { * ... provider initialization, if necessary * kstat_install(ksp); * } * * There are three logically distinct steps here: * * Step 1: System Initialization (kstat_create) * * kstat_create() performs system initialization. kstat_create() * allocates memory for the entire kstat (header plus data), initializes * all header fields, initializes the data section to all zeroes, assigns * a unique KID, and puts the kstat onto the system's kstat chain. * The returned kstat is marked invalid (KSTAT_FLAG_INVALID is set), * because the provider (caller) has not yet had a chance to initialize * the data section. * * By default, kstats are exported to all zones on the system. A kstat may be * created via kstat_create_zone() to specify a zone to which the statistics * should be exported. kstat_zone_add() may be used to specify additional * zones to which the statistics are to be exported. * * Step 2: Provider Initialization * * The provider performs any necessary initialization of the data section, * e.g. setting the name fields in a KSTAT_TYPE_NAMED. Virtual kstats set * the ks_data field at this time. The provider may also set the ks_update, * ks_snapshot, ks_private, and ks_lock fields if necessary. * * Step 3: Installation (kstat_install) * * Once the kstat is completely initialized, kstat_install() clears the * INVALID flag, thus making the kstat accessible to the outside world. * kstat_install() also clears the DORMANT flag for persistent kstats. * * Removing a kstat from the system * * kstat_delete(ksp) removes ksp from the kstat chain and frees all * associated system resources. NOTE: When you call kstat_delete(), * you must NOT be holding that kstat's ks_lock. Otherwise, you may * deadlock with a kstat reader. * * Persistent kstats * * From the provider's point of view, persistence is transparent. The only * difference between ephemeral (normal) kstats and persistent kstats * is that you pass KSTAT_FLAG_PERSISTENT to kstat_create(). Magically, * this has the effect of making your data visible even when you're * not home. Persistence is important to tools like iostat, which want * to get a meaningful picture of disk activity. Without persistence, * raw disk i/o statistics could never accumulate: they would come and * go with each open/close of the raw device. * * The magic of persistence works by slightly altering the behavior of * kstat_create() and kstat_delete(). The first call to kstat_create() * creates a new kstat, as usual. However, kstat_delete() does not * actually delete the kstat: it performs one final update of the data * (i.e., calls the ks_update routine), marks the kstat as dormant, and * sets the ks_lock, ks_update, ks_private, and ks_snapshot fields back * to their default values (since they might otherwise point to garbage, * e.g. if the provider is going away). kstat clients can still access * the dormant kstat just like a live kstat; they just continue to see * the final data values as long as the kstat remains dormant. * All subsequent kstat_create() calls simply find the already-existing, * dormant kstat and return a pointer to it, without altering any fields. * The provider then performs its usual initialization sequence, and * calls kstat_install(). kstat_install() uses the old data values to * initialize the native data (i.e., ks_update is called with KSTAT_WRITE), * thus making it seem like you were never gone. */ extern kstat_t *kstat_create(const char *, int, const char *, const char *, uchar_t, uint_t, uchar_t); extern kstat_t *kstat_create_zone(const char *, int, const char *, const char *, uchar_t, uint_t, uchar_t, zoneid_t); extern void kstat_install(kstat_t *); extern void kstat_delete(kstat_t *); extern void kstat_named_setstr(kstat_named_t *knp, const char *src); extern void kstat_set_string(char *, const char *); extern void kstat_delete_byname(const char *, int, const char *); extern void kstat_delete_byname_zone(const char *, int, const char *, zoneid_t); extern void kstat_named_init(kstat_named_t *, const char *, uchar_t); extern void kstat_timer_init(kstat_timer_t *, const char *); extern void kstat_waitq_enter(kstat_io_t *); extern void kstat_waitq_exit(kstat_io_t *); extern void kstat_runq_enter(kstat_io_t *); extern void kstat_runq_exit(kstat_io_t *); extern void kstat_waitq_to_runq(kstat_io_t *); extern void kstat_runq_back_to_waitq(kstat_io_t *); extern void kstat_timer_start(kstat_timer_t *); extern void kstat_timer_stop(kstat_timer_t *); extern void kstat_zone_add(kstat_t *, zoneid_t); extern void kstat_zone_remove(kstat_t *, zoneid_t); extern int kstat_zone_find(kstat_t *, zoneid_t); extern kstat_t *kstat_hold_bykid(kid_t kid, zoneid_t); extern kstat_t *kstat_hold_byname(const char *, int, const char *, zoneid_t); extern void kstat_rele(kstat_t *); #endif /* defined(_KERNEL) */ #ifdef __cplusplus } #endif #endif /* _SYS_KSTAT_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/types32.h0000644000000000000000000000007413607166132021376 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.047508373 zfs-0.8.3/lib/libspl/include/sys/types32.h0000644016037001603700000000437213607166132021401 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_TYPES32_H #define _SYS_TYPES32_H #include #ifdef __cplusplus extern "C" { #endif /* * Interoperability types for programs. Used for: * * Crossing between 32-bit and 64-bit domains. * * On disk data formats such as filesystem meta data * and disk label. * * Note: Applications should never include this * header file. */ typedef uint32_t caddr32_t; typedef int32_t daddr32_t; typedef int32_t off32_t; typedef uint32_t ino32_t; typedef int32_t blkcnt32_t; typedef uint32_t fsblkcnt32_t; typedef uint32_t fsfilcnt32_t; typedef int32_t id32_t; typedef uint32_t major32_t; typedef uint32_t minor32_t; typedef int32_t key32_t; typedef uint32_t mode32_t; typedef uint32_t uid32_t; typedef uint32_t gid32_t; typedef uint32_t nlink32_t; typedef uint32_t dev32_t; typedef int32_t pid32_t; typedef uint32_t size32_t; typedef int32_t ssize32_t; typedef int32_t time32_t; typedef int32_t clock32_t; struct timeval32 { time32_t tv_sec; /* seconds */ int32_t tv_usec; /* and microseconds */ }; typedef struct timespec32 { time32_t tv_sec; /* seconds */ int32_t tv_nsec; /* and nanoseconds */ } timespec32_t; typedef struct timespec32 timestruc32_t; typedef struct itimerspec32 { struct timespec32 it_interval; struct timespec32 it_value; } itimerspec32_t; #ifdef __cplusplus } #endif #endif /* _SYS_TYPES32_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/va_list.h0000644000000000000000000000007413607166132021526 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.056508661 zfs-0.8.3/lib/libspl/include/sys/va_list.h0000644016037001603700000000200013607166132021513 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_VA_LIST_H #define _SYS_VA_LIST_H #include #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/dktp0000644000000000000000000000013213612143050020562 xustar000000000000000030 mtime=1579730472.139511327 30 atime=1579730489.074055067 30 ctime=1579730472.139511327 zfs-0.8.3/lib/libspl/include/sys/dktp/0000775016037001603700000000000013612143050020643 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/include/sys/dktp/PaxHeaders.151519/fdisk.h0000644000000000000000000000007413607166132022127 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.134511167 zfs-0.8.3/lib/libspl/include/sys/dktp/fdisk.h0000644016037001603700000001430513607166132022127 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1984, 1986, 1987, 1988 AT&T */ /* All Rights Reserved */ #ifndef _SYS_DKTP_FDISK_H #define _SYS_DKTP_FDISK_H #ifdef __cplusplus extern "C" { #endif /* * fdisk.h * This file defines the structure of physical disk sector 0 for use on * AT386 systems. The format of this sector is constrained by the ROM * BIOS and MS-DOS conventions. * Note that this block does not define the partitions used by the unix * driver. The unix partitions are obtained from the VTOC. */ /* * the MAX values are the maximum usable values for BIOS chs values * The MAX_CYL value of 1022 is the maximum usable value * the value of 1023 is a fence value, * indicating no CHS geometry exists for the corresponding LBA value. * HEAD range [ 0 .. MAX_HEAD ], so number of heads is (MAX_HEAD + 1) * SECT range [ 1 .. MAX_SECT ], so number of sectors is (MAX_SECT) */ #define MAX_SECT (63) #define MAX_CYL (1022) #define MAX_HEAD (254) /* * BOOTSZ was reduced from 446 to 440 bytes to NOT overwrite the Windows * Vista DISKID. Otherwise Vista won't boot from Solaris GRUB in a dual-boot * setup. * The actual size of mboot code is 425 bytes while that of GRUB stage1 is * 423 bytes. So this changes does not harm them. */ #define BOOTSZ 440 /* size of boot code in master boot block */ #define FD_NUMPART 4 /* number of 'partitions' in fdisk table */ #define MBB_MAGIC 0xAA55 /* magic number for mboot.signature */ #define DEFAULT_INTLV 4 /* default interleave for testing tracks */ #define MINPSIZE 4 /* minimum number of cylinders in a partition */ #define TSTPAT 0xE5 /* test pattern for verifying disk */ /* * structure to hold the fdisk partition table */ struct ipart { unsigned char bootid; /* bootable or not */ unsigned char beghead; /* beginning head, sector, cylinder */ unsigned char begsect; /* begcyl is a 10-bit number. High 2 bits */ unsigned char begcyl; /* are in begsect. */ unsigned char systid; /* OS type */ unsigned char endhead; /* ending head, sector, cylinder */ unsigned char endsect; /* endcyl is a 10-bit number. High 2 bits */ unsigned char endcyl; /* are in endsect. */ uint32_t relsect; /* first sector relative to start of disk */ uint32_t numsect; /* number of sectors in partition */ }; /* * Values for bootid. */ #define NOTACTIVE 0 #define ACTIVE 128 /* * Values for systid. */ #define UNUSED 0 /* Empty Partition */ #define DOSOS12 1 /* DOS partition, 12-bit FAT */ #define PCIXOS 2 /* PC/IX partition */ #define DOSOS16 4 /* DOS partition, 16-bit FAT */ #define EXTDOS 5 /* EXT-DOS partition */ #define DOSHUGE 6 /* Huge DOS partition > 32MB */ #define FDISK_IFS 7 /* Installable File System (IFS): HPFS & NTFS */ #define FDISK_AIXBOOT 8 /* AIX Boot */ #define FDISK_AIXDATA 9 /* AIX Data */ #define FDISK_OS2BOOT 10 /* OS/2 Boot Manager */ #define FDISK_WINDOWS 11 /* Windows 95 FAT32 (up to 2047GB) */ #define FDISK_EXT_WIN 12 /* Windows 95 FAT32 (extended-INT13) */ #define FDISK_FAT95 14 /* DOS 16-bit FAT, LBA-mapped */ #define FDISK_EXTLBA 15 /* Extended partition, LBA-mapped */ #define DIAGPART 18 /* Diagnostic boot partition (OS independent) */ #define FDISK_LINUX 65 /* Linux */ #define FDISK_LINUXDSWAP 66 /* Linux swap (sharing disk w/ DRDOS) */ #define FDISK_LINUXDNAT 67 /* Linux native (sharing disk with DRDOS) */ #define FDISK_CPM 82 /* CP/M */ #define DOSDATA 86 /* DOS data partition */ #define OTHEROS 98 /* part. type for appl. (DB?) needs */ /* raw partition. ID was 0 but conflicted */ /* with DOS 3.3 fdisk */ #define UNIXOS 99 /* UNIX V.x partition */ #define FDISK_NOVELL2 100 /* Novell Netware 286 */ #define FDISK_NOVELL3 101 /* Novell Netware 3.x and later */ #define FDISK_QNX4 119 /* QNX 4.x */ #define FDISK_QNX42 120 /* QNX 4.x 2nd part */ #define FDISK_QNX43 121 /* QNX 4.x 3rd part */ #define SUNIXOS 130 /* Solaris UNIX partition */ #define FDISK_LINUXNAT 131 /* Linux native */ #define FDISK_NTFSVOL1 134 /* NTFS volume set 1 */ #define FDISK_NTFSVOL2 135 /* NTFS volume set 2 */ #define FDISK_BSD 165 /* BSD/386, 386BSD, NetBSD, FreeBSD, OpenBSD */ #define FDISK_NEXTSTEP 167 /* NeXTSTEP */ #define FDISK_BSDIFS 183 /* BSDI file system */ #define FDISK_BSDISWAP 184 /* BSDI swap */ #define X86BOOT 190 /* x86 Solaris boot partition */ #define SUNIXOS2 191 /* Solaris UNIX partition */ #define EFI_PMBR 238 /* EFI PMBR */ #define EFI_FS 239 /* EFI File System (System Partition) */ #define MAXDOS 65535L /* max size (sectors) for DOS partition */ /* * structure to hold master boot block in physical sector 0 of the disk. * Note that partitions stuff can't be directly included in the structure * because of lameo '386 compiler alignment design. * Alignment issues also force us to have 2 16bit entities for a single * 32bit win_volserno. It is not used anywhere anyway. */ struct mboot { /* master boot block */ char bootinst[BOOTSZ]; uint16_t win_volserno_lo; uint16_t win_volserno_hi; uint16_t reserved; char parts[FD_NUMPART * sizeof (struct ipart)]; ushort_t signature; }; #if defined(__i386) || defined(__amd64) /* Byte offset of the start of the partition table within the sector */ #define FDISK_PART_TABLE_START 446 /* Maximum number of valid partitions assumed as 32 */ #define MAX_EXT_PARTS 32 #else #define MAX_EXT_PARTS 0 #endif /* if defined(__i386) || defined(__amd64) */ #ifdef __cplusplus } #endif #endif /* _SYS_DKTP_FDISK_H */ zfs-0.8.3/lib/libspl/include/sys/dktp/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132022712 xustar000000000000000030 atime=1579730430.355169745 30 ctime=1579730472.137511263 zfs-0.8.3/lib/libspl/include/sys/dktp/Makefile.am0000644016037001603700000000016113607166132022705 0ustar00hutter2hutter200000000000000libspldir = $(includedir)/libspl/sys/dktp libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/sys/dktp/fdisk.h zfs-0.8.3/lib/libspl/include/sys/dktp/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776022722 xustar000000000000000030 mtime=1579730430.392170933 30 atime=1579730451.025833415 30 ctime=1579730472.139511327 zfs-0.8.3/lib/libspl/include/sys/dktp/Makefile.in0000664016037001603700000006121113612142776022727 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/include/sys/dktp DIST_COMMON = $(libspl_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libspldir)" HEADERS = $(libspl_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ libspldir = $(includedir)/libspl/sys/dktp libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/sys/dktp/fdisk.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/include/sys/dktp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/include/sys/dktp/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-libsplHEADERS: $(libspl_HEADERS) @$(NORMAL_INSTALL) test -z "$(libspldir)" || $(MKDIR_P) "$(DESTDIR)$(libspldir)" @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libspldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libspldir)" || exit $$?; \ done uninstall-libsplHEADERS: @$(NORMAL_UNINSTALL) @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libspldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libspldir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libspldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-libsplHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libsplHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libsplHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-libsplHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/uio.h0000644000000000000000000000007413612141513020651 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.054508597 zfs-0.8.3/lib/libspl/include/sys/uio.h0000644016037001603700000000604613612141513020654 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ /* * University Copyright- Copyright (c) 1982, 1986, 1988 * The Regents of the University of California * All Rights Reserved * * University Acknowledgment- Portions of this document are derived from * software developed by the University of California, Berkeley, and its * contributors. */ #ifndef _LIBSPL_SYS_UIO_H #define _LIBSPL_SYS_UIO_H #include_next typedef struct iovec iovec_t; typedef enum uio_rw { UIO_READ = 0, UIO_WRITE = 1, } uio_rw_t; typedef enum uio_seg { UIO_USERSPACE = 0, UIO_SYSSPACE = 1, UIO_USERISPACE = 2, } uio_seg_t; typedef struct uio { struct iovec *uio_iov; /* pointer to array of iovecs */ int uio_iovcnt; /* number of iovecs */ offset_t uio_loffset; /* file offset */ uio_seg_t uio_segflg; /* address space (kernel or user) */ uint16_t uio_fmode; /* file mode flags */ uint16_t uio_extflg; /* extended flags */ offset_t uio_limit; /* u-limit (maximum byte offset) */ ssize_t uio_resid; /* residual count */ } uio_t; typedef enum xuio_type { UIOTYPE_ASYNCIO, UIOTYPE_ZEROCOPY, } xuio_type_t; #define UIOA_IOV_MAX 16 typedef struct uioa_page_s { /* locked uio_iov state */ int uioa_pfncnt; /* count of pfn_t(s) in *uioa_ppp */ void **uioa_ppp; /* page_t or pfn_t array */ caddr_t uioa_base; /* address base */ size_t uioa_len; /* span length */ } uioa_page_t; typedef struct xuio { uio_t xu_uio; /* embedded UIO structure */ /* Extended uio fields */ enum xuio_type xu_type; /* uio type */ union { struct { uint32_t xu_a_state; /* state of async i/o */ ssize_t xu_a_mbytes; /* bytes moved */ uioa_page_t *xu_a_lcur; /* uioa_locked[] pointer */ void **xu_a_lppp; /* lcur->uioa_pppp[] pointer */ void *xu_a_hwst[4]; /* opaque hardware state */ uioa_page_t xu_a_locked[UIOA_IOV_MAX]; } xu_aio; struct { int xu_zc_rw; /* read or write buffer */ void *xu_zc_priv; /* fs specific */ } xu_zc; } xu_ext; } xuio_t; #define XUIO_XUZC_PRIV(xuio) xuio->xu_ext.xu_zc.xu_zc_priv #define XUIO_XUZC_RW(xuio) xuio->xu_ext.xu_zc.xu_zc_rw #endif /* _SYS_UIO_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/time.h0000644000000000000000000000007413607166132021023 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.045508309 zfs-0.8.3/lib/libspl/include/sys/time.h0000644016037001603700000000453713607166132021031 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_TIME_H #define _LIBSPL_SYS_TIME_H #include #include #include_next #ifndef SEC #define SEC 1 #endif #ifndef MILLISEC #define MILLISEC 1000 #endif #ifndef MICROSEC #define MICROSEC 1000000 #endif #ifndef NANOSEC #define NANOSEC 1000000000 #endif #ifndef NSEC_PER_USEC #define NSEC_PER_USEC 1000L #endif #ifndef MSEC2NSEC #define MSEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / MILLISEC)) #endif #ifndef NSEC2MSEC #define NSEC2MSEC(n) ((n) / (NANOSEC / MILLISEC)) #endif #ifndef USEC2NSEC #define USEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / MICROSEC)) #endif #ifndef NSEC2USEC #define NSEC2USEC(n) ((n) / (NANOSEC / MICROSEC)) #endif #ifndef NSEC2SEC #define NSEC2SEC(n) ((n) / (NANOSEC / SEC)) #endif #ifndef SEC2NSEC #define SEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / SEC)) #endif typedef long long hrtime_t; typedef struct timespec timespec_t; typedef struct timespec inode_timespec_t; static inline void gethrestime(inode_timespec_t *ts) { struct timeval tv; (void) gettimeofday(&tv, NULL); ts->tv_sec = tv.tv_sec; ts->tv_nsec = tv.tv_usec * NSEC_PER_USEC; } static inline time_t gethrestime_sec(void) { struct timeval tv; (void) gettimeofday(&tv, NULL); return (tv.tv_sec); } static inline hrtime_t gethrtime(void) { struct timespec ts; (void) clock_gettime(CLOCK_MONOTONIC, &ts); return ((((u_int64_t)ts.tv_sec) * NANOSEC) + ts.tv_nsec); } #endif /* _LIBSPL_SYS_TIME_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/file.h0000644000000000000000000000007413607166147021012 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.988506478 zfs-0.8.3/lib/libspl/include/sys/file.h0000644016037001603700000000262513607166147021014 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_FILE_H #define _LIBSPL_SYS_FILE_H #include_next #include #define FREAD 1 #define FWRITE 2 // #define FAPPEND 8 #define FCREAT O_CREAT #define FTRUNC O_TRUNC #define FOFFMAX O_LARGEFILE #define FSYNC O_SYNC #define FDSYNC O_DSYNC #define FEXCL O_EXCL #define FNODSYNC 0x10000 /* fsync pseudo flag */ #define FNOFOLLOW 0x20000 /* don't follow symlinks */ #define FIGNORECASE 0x80000 /* request case-insensitive lookups */ #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/stropts.h0000644000000000000000000000007413607166132021603 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.036508019 zfs-0.8.3/lib/libspl/include/sys/stropts.h0000644016037001603700000000177713607166132021614 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_STROPTS_H #define _LIBSPL_SYS_STROPTS_H #endif /* _LIBSPL_SYS_STROPTS_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/list_impl.h0000644000000000000000000000007413607166132022061 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.612494405 zfs-0.8.3/lib/libspl/include/sys/list_impl.h0000644016037001603700000000241513607166132022060 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_LIST_IMPL_H #define _SYS_LIST_IMPL_H #include #ifdef __cplusplus extern "C" { #endif struct list_node { struct list_node *list_next; struct list_node *list_prev; }; struct list { size_t list_size; size_t list_offset; struct list_node list_head; }; #ifdef __cplusplus } #endif #endif /* _SYS_LIST_IMPL_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/poll.h0000644000000000000000000000007413607166132021033 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.018507443 zfs-0.8.3/lib/libspl/include/sys/poll.h0000644016037001603700000000277213607166132021040 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2017 Zettabyte Software, LLC. All rights reserved. * Use is subject to license terms. */ /* * Compiling against musl correctly points out that including sys/poll.h is * disallowed by the Single UNIX Specification when building in userspace. We * implement a dummy header to redirect the include to the proper header. * However, glibc, klibc and uclibc break this shim by including sys/poll.h * from poll.h, so we add explicit exceptions for them. */ #ifndef _LIBSPL_SYS_POLL_H #define _LIBSPL_SYS_POLL_H #if defined(__GLIBC__) || defined(__KLIBC__) || defined(__UCLIBC__) #include_next #else #include #endif #endif /* _LIBSPL_SYS_POLL_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/systeminfo.h0000644000000000000000000000007413607166132022265 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.043508244 zfs-0.8.3/lib/libspl/include/sys/systeminfo.h0000644016037001603700000000240013607166132022256 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_SYSTEMINFO_H #define _LIBSPL_SYS_SYSTEMINFO_H #define HOSTID_MASK 0xFFFFFFFF #define HW_INVALID_HOSTID 0xFFFFFFFF /* an invalid hostid */ #define HW_HOSTID_LEN 11 /* minimum buffer size needed */ /* to hold a decimal or hex */ /* hostid string */ unsigned long get_system_hostid(void); #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/stdtypes.h0000644000000000000000000000007413607166132021744 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.031507859 zfs-0.8.3/lib/libspl/include/sys/stdtypes.h0000644016037001603700000000303513607166132021742 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #ifndef __SYS_STDTYPES_H #define __SYS_STDTYPES_H typedef enum { B_FALSE = 0, B_TRUE = 1 } boolean_t; typedef unsigned char uchar_t; typedef unsigned short ushort_t; typedef unsigned int uint_t; typedef unsigned long ulong_t; typedef unsigned long long u_longlong_t; typedef long long longlong_t; typedef longlong_t offset_t; typedef u_longlong_t u_offset_t; typedef u_longlong_t len_t; typedef longlong_t diskaddr_t; typedef ulong_t pgcnt_t; /* number of pages */ typedef long spgcnt_t; /* signed number of pages */ typedef short pri_t; typedef ushort_t o_mode_t; /* old file attribute type */ typedef int major_t; typedef int minor_t; typedef short index_t; #endif /* __SYS_STDTYPES_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/vnode.h0000644000000000000000000000007413607166132021200 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.061508821 zfs-0.8.3/lib/libspl/include/sys/vnode.h0000644016037001603700000000201713607166132021175 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_VNODE_H #define _LIBSPL_SYS_VNODE_H #endif /* _LIBSPL_SYS_VNODE_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/list.h0000644000000000000000000000007413607166132021040 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.609494309 zfs-0.8.3/lib/libspl/include/sys/list.h0000644016037001603700000000346313607166132021043 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_LIST_H #define _SYS_LIST_H #include #ifdef __cplusplus extern "C" { #endif typedef struct list_node list_node_t; typedef struct list list_t; void list_create(list_t *, size_t, size_t); void list_destroy(list_t *); void list_insert_after(list_t *, void *, void *); void list_insert_before(list_t *, void *, void *); void list_insert_head(list_t *, void *); void list_insert_tail(list_t *, void *); void list_remove(list_t *, void *); void *list_remove_head(list_t *); void *list_remove_tail(list_t *); void list_move_tail(list_t *, list_t *); void *list_head(list_t *); void *list_tail(list_t *); void *list_next(list_t *, void *); void *list_prev(list_t *, void *); int list_is_empty(list_t *); void list_link_init(list_node_t *); void list_link_replace(list_node_t *, list_node_t *); int list_link_active(list_node_t *); #ifdef __cplusplus } #endif #endif /* _SYS_LIST_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/bitmap.h0000644000000000000000000000007413607166147021347 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.965505739 zfs-0.8.3/lib/libspl/include/sys/bitmap.h0000644016037001603700000000176713607166147021357 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_BITMAP_H #define _LIBSPL_SYS_BITMAP_H #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/param.h0000644000000000000000000000007413612141513021155 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.014507312 zfs-0.8.3/lib/libspl/include/sys/param.h0000644016037001603700000000404313612141513021153 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_PARAM_H #define _LIBSPL_SYS_PARAM_H #include_next #include /* * File system parameters and macros. * * The file system is made out of blocks of at most MAXBSIZE units, * with smaller units (fragments) only in the last direct block. * MAXBSIZE primarily determines the size of buffers in the buffer * pool. It may be made larger without any effect on existing * file systems; however making it smaller may make some file * systems unmountable. * * Note that the blocked devices are assumed to have DEV_BSIZE * "sectors" and that fragments must be some multiple of this size. */ #define MAXBSIZE 8192 #define DEV_BSIZE 512 #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ #define MAXNAMELEN 256 #define MAXOFFSET_T LLONG_MAX #define UID_NOBODY 60001 /* user ID no body */ #define GID_NOBODY UID_NOBODY #define UID_NOACCESS 60002 /* user ID no access */ #define MAXUID UINT32_MAX /* max user id */ #define MAXPROJID MAXUID /* max project id */ #ifdef PAGESIZE #undef PAGESIZE #endif /* PAGESIZE */ extern size_t spl_pagesize(void); #define PAGESIZE (spl_pagesize()) #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/debug.h0000644000000000000000000000007413607166147021161 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.977506126 zfs-0.8.3/lib/libspl/include/sys/debug.h0000644016037001603700000000201213607166147021151 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_DEBUG_H #define _LIBSPL_SYS_DEBUG_H #include #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612142776021757 xustar000000000000000030 mtime=1579730430.339169231 30 atime=1579730450.992832357 29 ctime=1579730472.06950908 zfs-0.8.3/lib/libspl/include/sys/Makefile.in0000664016037001603700000010041213612142776021762 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/include/sys DIST_COMMON = $(libspl_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libspldir)" HEADERS = $(libspl_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = dktp libspldir = $(includedir)/libspl/sys libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/sys/acl.h \ $(top_srcdir)/lib/libspl/include/sys/acl_impl.h \ $(top_srcdir)/lib/libspl/include/sys/bitmap.h \ $(top_srcdir)/lib/libspl/include/sys/byteorder.h \ $(top_srcdir)/lib/libspl/include/sys/callb.h \ $(top_srcdir)/lib/libspl/include/sys/cmn_err.h \ $(top_srcdir)/lib/libspl/include/sys/cred.h \ $(top_srcdir)/lib/libspl/include/sys/debug.h \ $(top_srcdir)/lib/libspl/include/sys/dkio.h \ $(top_srcdir)/lib/libspl/include/sys/dklabel.h \ $(top_srcdir)/lib/libspl/include/sys/errno.h \ $(top_srcdir)/lib/libspl/include/sys/feature_tests.h \ $(top_srcdir)/lib/libspl/include/sys/file.h \ $(top_srcdir)/lib/libspl/include/sys/int_limits.h \ $(top_srcdir)/lib/libspl/include/sys/int_types.h \ $(top_srcdir)/lib/libspl/include/sys/inttypes.h \ $(top_srcdir)/lib/libspl/include/sys/isa_defs.h \ $(top_srcdir)/lib/libspl/include/sys/kmem.h \ $(top_srcdir)/lib/libspl/include/sys/kstat.h \ $(top_srcdir)/lib/libspl/include/sys/list.h \ $(top_srcdir)/lib/libspl/include/sys/list_impl.h \ $(top_srcdir)/lib/libspl/include/sys/mhd.h \ $(top_srcdir)/lib/libspl/include/sys/mkdev.h \ $(top_srcdir)/lib/libspl/include/sys/mnttab.h \ $(top_srcdir)/lib/libspl/include/sys/mount.h \ $(top_srcdir)/lib/libspl/include/sys/param.h \ $(top_srcdir)/lib/libspl/include/sys/policy.h \ $(top_srcdir)/lib/libspl/include/sys/poll.h \ $(top_srcdir)/lib/libspl/include/sys/priv.h \ $(top_srcdir)/lib/libspl/include/sys/processor.h \ $(top_srcdir)/lib/libspl/include/sys/signal.h \ $(top_srcdir)/lib/libspl/include/sys/stack.h \ $(top_srcdir)/lib/libspl/include/sys/stat.h \ $(top_srcdir)/lib/libspl/include/sys/stdtypes.h \ $(top_srcdir)/lib/libspl/include/sys/strings.h \ $(top_srcdir)/lib/libspl/include/sys/stropts.h \ $(top_srcdir)/lib/libspl/include/sys/sunddi.h \ $(top_srcdir)/lib/libspl/include/sys/sysmacros.h \ $(top_srcdir)/lib/libspl/include/sys/systeminfo.h \ $(top_srcdir)/lib/libspl/include/sys/time.h \ $(top_srcdir)/lib/libspl/include/sys/types32.h \ $(top_srcdir)/lib/libspl/include/sys/types.h \ $(top_srcdir)/lib/libspl/include/sys/tzfile.h \ $(top_srcdir)/lib/libspl/include/sys/uio.h \ $(top_srcdir)/lib/libspl/include/sys/va_list.h \ $(top_srcdir)/lib/libspl/include/sys/varargs.h \ $(top_srcdir)/lib/libspl/include/sys/vnode.h \ $(top_srcdir)/lib/libspl/include/sys/vtoc.h \ $(top_srcdir)/lib/libspl/include/sys/zone.h all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/include/sys/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/include/sys/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-libsplHEADERS: $(libspl_HEADERS) @$(NORMAL_INSTALL) test -z "$(libspldir)" || $(MKDIR_P) "$(DESTDIR)$(libspldir)" @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libspldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libspldir)" || exit $$?; \ done uninstall-libsplHEADERS: @$(NORMAL_UNINSTALL) @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libspldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libspldir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libspldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-libsplHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-libsplHEADERS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libsplHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-libsplHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/errno.h0000644000000000000000000000007413607166147021220 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.983506318 zfs-0.8.3/lib/libspl/include/sys/errno.h0000644016037001603700000000242213607166147021215 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2017 Zettabyte Software, LLC. All rights reserved. * Use is subject to license terms. */ /* * Compiling against musl correctly points out that including sys/errno.h is * disallowed by the Single UNIX Specification when building in userspace, so * we implement a dummy header to redirect the include to the proper header. */ #ifndef _LIBSPL_SYS_ERRNO_H #define _LIBSPL_SYS_ERRNO_H #include #endif /* _LIBSPL_SYS_ERRNO_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/types.h0000644000000000000000000000007413607166132021231 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.050508469 zfs-0.8.3/lib/libspl/include/sys/types.h0000644016037001603700000000406213607166132021230 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_TYPES_H #define _LIBSPL_SYS_TYPES_H #if defined(HAVE_MAKEDEV_IN_SYSMACROS) #include #elif defined(HAVE_MAKEDEV_IN_MKDEV) #include #endif #include #include #include_next #include #include #include #ifndef HAVE_INTTYPES #include #endif /* HAVE_INTTYPES */ typedef int zoneid_t; typedef int projid_t; /* * Definitions remaining from previous partial support for 64-bit file * offsets. This partial support for devices greater than 2gb requires * compiler support for long long. */ #ifdef _LONG_LONG_LTOH typedef union { offset_t _f; /* Full 64 bit offset value */ struct { int32_t _l; /* lower 32 bits of offset value */ int32_t _u; /* upper 32 bits of offset value */ } _p; } lloff_t; #endif #ifdef _LONG_LONG_HTOL typedef union { offset_t _f; /* Full 64 bit offset value */ struct { int32_t _u; /* upper 32 bits of offset value */ int32_t _l; /* lower 32 bits of offset value */ } _p; } lloff_t; #endif #include /* for NBBY */ #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/dklabel.h0000644000000000000000000000007413607166132021463 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.981506254 zfs-0.8.3/lib/libspl/include/sys/dklabel.h0000644016037001603700000002054213607166132021463 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 1990-2002 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_DKLABEL_H #define _SYS_DKLABEL_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Miscellaneous defines */ #define DKL_MAGIC 0xDABE /* magic number */ #define FKL_MAGIC 0xff /* magic number for DOS floppies */ #if defined(_SUNOS_VTOC_16) #define NDKMAP 16 /* # of logical partitions */ #define DK_LABEL_LOC 1 /* location of disk label */ #elif defined(_SUNOS_VTOC_8) #define NDKMAP 8 /* # of logical partitions */ #define DK_LABEL_LOC 0 /* location of disk label */ #else #error "No VTOC format defined." #endif #define LEN_DKL_ASCII 128 /* length of dkl_asciilabel */ #define LEN_DKL_VVOL 8 /* length of v_volume */ #define DK_LABEL_SIZE 512 /* size of disk label */ #define DK_MAX_BLOCKS 0x7fffffff /* max # of blocks handled */ /* * Reserve two cylinders on SCSI disks. * One is for the backup disk label and the other is for the deviceid. * * IPI disks only reserve one cylinder, but they will go away soon. * CDROMs do not reserve any cylinders. */ #define DK_ACYL 2 /* * Format of a Sun disk label. * Resides in cylinder 0, head 0, sector 0. * * sizeof (struct dk_label) should be 512 (the current sector size), * but should the sector size increase, this structure should remain * at the beginning of the sector. */ /* * partition headers: section 1 * Returned in struct dk_allmap by ioctl DKIOC[SG]APART (dkio(7I)) */ struct dk_map { uint64_t dkl_cylno; /* starting cylinder */ uint64_t dkl_nblk; /* number of blocks; if == 0, */ /* partition is undefined */ }; /* * partition headers: section 1 * Fixed size for on-disk dk_label */ struct dk_map32 { daddr32_t dkl_cylno; /* starting cylinder */ daddr32_t dkl_nblk; /* number of blocks; if == 0, */ /* partition is undefined */ }; /* * partition headers: section 2, * brought over from AT&T SVr4 vtoc structure. */ struct dk_map2 { uint16_t p_tag; /* ID tag of partition */ uint16_t p_flag; /* permission flag */ }; struct dkl_partition { uint16_t p_tag; /* ID tag of partition */ uint16_t p_flag; /* permission flags */ daddr32_t p_start; /* start sector no of partition */ int32_t p_size; /* # of blocks in partition */ }; /* * VTOC inclusions from AT&T SVr4 * Fixed sized types for on-disk VTOC */ struct dk_vtoc { #if defined(_SUNOS_VTOC_16) uint32_t v_bootinfo[3]; /* info for mboot (unsupported) */ uint32_t v_sanity; /* to verify vtoc sanity */ uint32_t v_version; /* layout version */ char v_volume[LEN_DKL_VVOL]; /* volume name */ uint16_t v_sectorsz; /* sector size in bytes */ uint16_t v_nparts; /* number of partitions */ uint32_t v_reserved[10]; /* free space */ struct dkl_partition v_part[NDKMAP]; /* partition headers */ time32_t timestamp[NDKMAP]; /* partition timestamp (unsupported) */ char v_asciilabel[LEN_DKL_ASCII]; /* for compatibility */ #elif defined(_SUNOS_VTOC_8) uint32_t v_version; /* layout version */ char v_volume[LEN_DKL_VVOL]; /* volume name */ uint16_t v_nparts; /* number of partitions */ struct dk_map2 v_part[NDKMAP]; /* partition hdrs, sec 2 */ uint32_t v_bootinfo[3]; /* info needed by mboot */ uint32_t v_sanity; /* to verify vtoc sanity */ uint32_t v_reserved[10]; /* free space */ time32_t v_timestamp[NDKMAP]; /* partition timestamp */ #else #error "No VTOC format defined." #endif }; /* * define the amount of disk label padding needed to make * the entire structure occupy 512 bytes. */ #if defined(_SUNOS_VTOC_16) #define LEN_DKL_PAD (DK_LABEL_SIZE - \ ((sizeof (struct dk_vtoc) + \ (4 * sizeof (uint32_t)) + \ (12 * sizeof (uint16_t)) + \ (2 * (sizeof (uint16_t)))))) #elif defined(_SUNOS_VTOC_8) #define LEN_DKL_PAD (DK_LABEL_SIZE \ - ((LEN_DKL_ASCII) + \ (sizeof (struct dk_vtoc)) + \ (sizeof (struct dk_map32) * NDKMAP) + \ (14 * (sizeof (uint16_t))) + \ (2 * (sizeof (uint16_t))))) #else #error "No VTOC format defined." #endif struct dk_label { #if defined(_SUNOS_VTOC_16) struct dk_vtoc dkl_vtoc; /* vtoc inclusions from AT&T SVr4 */ uint32_t dkl_pcyl; /* # of physical cylinders */ uint32_t dkl_ncyl; /* # of data cylinders */ uint16_t dkl_acyl; /* # of alternate cylinders */ uint16_t dkl_bcyl; /* cyl offset (for fixed head area) */ uint32_t dkl_nhead; /* # of heads */ uint32_t dkl_nsect; /* # of data sectors per track */ uint16_t dkl_intrlv; /* interleave factor */ uint16_t dkl_skew; /* skew factor */ uint16_t dkl_apc; /* alternates per cyl (SCSI only) */ uint16_t dkl_rpm; /* revolutions per minute */ uint16_t dkl_write_reinstruct; /* # sectors to skip, writes */ uint16_t dkl_read_reinstruct; /* # sectors to skip, reads */ uint16_t dkl_extra[4]; /* for compatible expansion */ char dkl_pad[LEN_DKL_PAD]; /* unused part of 512 bytes */ #elif defined(_SUNOS_VTOC_8) char dkl_asciilabel[LEN_DKL_ASCII]; /* for compatibility */ struct dk_vtoc dkl_vtoc; /* vtoc inclusions from AT&T SVr4 */ uint16_t dkl_write_reinstruct; /* # sectors to skip, writes */ uint16_t dkl_read_reinstruct; /* # sectors to skip, reads */ char dkl_pad[LEN_DKL_PAD]; /* unused part of 512 bytes */ uint16_t dkl_rpm; /* rotations per minute */ uint16_t dkl_pcyl; /* # physical cylinders */ uint16_t dkl_apc; /* alternates per cylinder */ uint16_t dkl_obs1; /* obsolete */ uint16_t dkl_obs2; /* obsolete */ uint16_t dkl_intrlv; /* interleave factor */ uint16_t dkl_ncyl; /* # of data cylinders */ uint16_t dkl_acyl; /* # of alternate cylinders */ uint16_t dkl_nhead; /* # of heads in this partition */ uint16_t dkl_nsect; /* # of 512 byte sectors per track */ uint16_t dkl_obs3; /* obsolete */ uint16_t dkl_obs4; /* obsolete */ struct dk_map32 dkl_map[NDKMAP]; /* logical partition headers */ #else #error "No VTOC format defined." #endif uint16_t dkl_magic; /* identifies this label format */ uint16_t dkl_cksum; /* xor checksum of sector */ }; #if defined(_SUNOS_VTOC_16) #define dkl_asciilabel dkl_vtoc.v_asciilabel #define v_timestamp timestamp #elif defined(_SUNOS_VTOC_8) /* * These defines are for historic compatibility with old drivers. */ #define dkl_gap1 dkl_obs1 /* used to be gap1 */ #define dkl_gap2 dkl_obs2 /* used to be gap2 */ #define dkl_bhead dkl_obs3 /* used to be label head offset */ #define dkl_ppart dkl_obs4 /* used to by physical partition */ #else #error "No VTOC format defined." #endif struct fk_label { /* DOS floppy label */ uchar_t fkl_type; uchar_t fkl_magich; uchar_t fkl_magicl; uchar_t filler; }; /* * Layout of stored fabricated device id (on-disk) */ #define DK_DEVID_BLKSIZE (512) #define DK_DEVID_SIZE (DK_DEVID_BLKSIZE - ((sizeof (uchar_t) * 7))) #define DK_DEVID_REV_MSB (0) #define DK_DEVID_REV_LSB (1) struct dk_devid { uchar_t dkd_rev_hi; /* revision (MSB) */ uchar_t dkd_rev_lo; /* revision (LSB) */ uchar_t dkd_flags; /* flags (not used yet) */ uchar_t dkd_devid[DK_DEVID_SIZE]; /* devid stored here */ uchar_t dkd_checksum3; /* checksum (MSB) */ uchar_t dkd_checksum2; uchar_t dkd_checksum1; uchar_t dkd_checksum0; /* checksum (LSB) */ }; #define DKD_GETCHKSUM(dkd) ((dkd)->dkd_checksum3 << 24) + \ ((dkd)->dkd_checksum2 << 16) + \ ((dkd)->dkd_checksum1 << 8) + \ ((dkd)->dkd_checksum0) #define DKD_FORMCHKSUM(c, dkd) (dkd)->dkd_checksum3 = hibyte(hiword((c))); \ (dkd)->dkd_checksum2 = lobyte(hiword((c))); \ (dkd)->dkd_checksum1 = hibyte(loword((c))); \ (dkd)->dkd_checksum0 = lobyte(loword((c))); #ifdef __cplusplus } #endif #endif /* _SYS_DKLABEL_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/callb.h0000644000000000000000000000007413607166132021142 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.970505899 zfs-0.8.3/lib/libspl/include/sys/callb.h0000644016037001603700000000174713607166132021150 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_CALLB_H #define _SYS_CALLB_H #endif zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/sysmacros.h0000644000000000000000000000007413607166147022116 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.041508179 zfs-0.8.3/lib/libspl/include/sys/sysmacros.h0000644016037001603700000000671013607166147022117 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_SYSMACROS_H #define _LIBSPL_SYS_SYSMACROS_H #include_next /* common macros */ #ifndef MIN #define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif #ifndef MAX #define MAX(a, b) ((a) < (b) ? (b) : (a)) #endif #ifndef ABS #define ABS(a) ((a) < 0 ? -(a) : (a)) #endif #ifndef ARRAY_SIZE #define ARRAY_SIZE(a) (sizeof (a) / sizeof (a[0])) #endif #ifndef DIV_ROUND_UP #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) #endif #define makedevice(maj, min) makedev(maj, min) #define _sysconf(a) sysconf(a) /* * Compatibility macros/typedefs needed for Solaris -> Linux port */ #define P2ALIGN(x, align) ((x) & -(align)) #define P2CROSS(x, y, align) (((x) ^ (y)) > (align) - 1) #define P2ROUNDUP(x, align) ((((x) - 1) | ((align) - 1)) + 1) #define P2BOUNDARY(off, len, align) \ (((off) ^ ((off) + (len) - 1)) > (align) - 1) #define P2PHASE(x, align) ((x) & ((align) - 1)) #define P2NPHASE(x, align) (-(x) & ((align) - 1)) #define P2NPHASE_TYPED(x, align, type) \ (-(type)(x) & ((type)(align) - 1)) #define ISP2(x) (((x) & ((x) - 1)) == 0) #define IS_P2ALIGNED(v, a) ((((uintptr_t)(v)) & ((uintptr_t)(a) - 1)) == 0) /* * Typed version of the P2* macros. These macros should be used to ensure * that the result is correctly calculated based on the data type of (x), * which is passed in as the last argument, regardless of the data * type of the alignment. For example, if (x) is of type uint64_t, * and we want to round it up to a page boundary using "PAGESIZE" as * the alignment, we can do either * P2ROUNDUP(x, (uint64_t)PAGESIZE) * or * P2ROUNDUP_TYPED(x, PAGESIZE, uint64_t) */ #define P2ALIGN_TYPED(x, align, type) \ ((type)(x) & -(type)(align)) #define P2PHASE_TYPED(x, align, type) \ ((type)(x) & ((type)(align) - 1)) #define P2NPHASE_TYPED(x, align, type) \ (-(type)(x) & ((type)(align) - 1)) #define P2ROUNDUP_TYPED(x, align, type) \ ((((type)(x) - 1) | ((type)(align) - 1)) + 1) #define P2END_TYPED(x, align, type) \ (-(~(type)(x) & -(type)(align))) #define P2PHASEUP_TYPED(x, align, phase, type) \ ((type)(phase) - (((type)(phase) - (type)(x)) & -(type)(align))) #define P2CROSS_TYPED(x, y, align, type) \ (((type)(x) ^ (type)(y)) > (type)(align) - 1) #define P2SAMEHIGHBIT_TYPED(x, y, type) \ (((type)(x) ^ (type)(y)) < ((type)(x) & (type)(y))) /* avoid any possibility of clashing with version */ #if defined(_KERNEL) && !defined(_KMEMUSER) && !defined(offsetof) #define offsetof(s, m) ((size_t)(&(((s *)0)->m))) #endif #define _NOTE(x) #endif /* _LIBSPL_SYS_SYSMACROS_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/mhd.h0000644000000000000000000000007413607166132020635 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.005507024 zfs-0.8.3/lib/libspl/include/sys/mhd.h0000644016037001603700000001004213607166132020627 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_MHD_H #define _SYS_MHD_H #ifdef __cplusplus extern "C" { #endif /* * Definitions for multi-host device I/O control commands */ #define MHIOC ('M'<<8) #define MHIOCENFAILFAST (MHIOC|1) #define MHIOCTKOWN (MHIOC|2) #define MHIOCRELEASE (MHIOC|3) #define MHIOCSTATUS (MHIOC|4) #define MHIOCGRP_INKEYS (MHIOC|5) #define MHIOCGRP_INRESV (MHIOC|6) #define MHIOCGRP_REGISTER (MHIOC|7) #define MHIOCGRP_RESERVE (MHIOC|8) #define MHIOCGRP_PREEMPTANDABORT (MHIOC|9) #define MHIOCGRP_PREEMPT (MHIOC|10) #define MHIOCGRP_CLEAR (MHIOC|11) #define MHIOCGRP_REGISTERANDIGNOREKEY (MHIOC|14) #define MHIOCQRESERVE (MHIOC|12) #define MHIOCREREGISTERDEVID (MHIOC|13) /* * Following is the structure to specify the delay parameters in * milliseconds, via the MHIOCTKOWN ioctl. */ struct mhioctkown { int reinstate_resv_delay; int min_ownership_delay; int max_ownership_delay; }; #define MHIOC_RESV_KEY_SIZE 8 typedef struct mhioc_resv_key { uchar_t key[MHIOC_RESV_KEY_SIZE]; } mhioc_resv_key_t; typedef struct mhioc_key_list { uint32_t listsize; uint32_t listlen; mhioc_resv_key_t *list; } mhioc_key_list_t; typedef struct mhioc_inkeys { uint32_t generation; mhioc_key_list_t *li; } mhioc_inkeys_t; #if defined(_SYSCALL32) struct mhioc_key_list32 { uint32_t listsize; uint32_t listlen; caddr32_t list; } mhioc_key_list32_t; struct mhioc_inkeys32 { uint32_t generation; caddr32_t li; } mhioc_inkeys32_t; #endif typedef struct mhioc_resv_desc { mhioc_resv_key_t key; uint8_t type; uint8_t scope; uint32_t scope_specific_addr; } mhioc_resv_desc_t; typedef struct mhioc_resv_desc_list { uint32_t listsize; uint32_t listlen; mhioc_resv_desc_t *list; } mhioc_resv_desc_list_t; typedef struct mhioc_inresvs { uint32_t generation; mhioc_resv_desc_list_t *li; } mhioc_inresvs_t; #if defined(_SYSCALL32) struct mhioc_resv_desc_list32 { uint32_t listsize; uint32_t listlen; caddr32_t list; } mhioc_resv_desc_list32_t; typedef struct mhioc_inresvs32 { uint32_t generation; caddr32_t li; } mhioc_inresvs32_t; #endif typedef struct mhioc_register { mhioc_resv_key_t oldkey; mhioc_resv_key_t newkey; boolean_t aptpl; /* True if persistent across power failures */ } mhioc_register_t; typedef struct mhioc_preemptandabort { mhioc_resv_desc_t resvdesc; mhioc_resv_key_t victim_key; } mhioc_preemptandabort_t; typedef struct mhioc_registerandignorekey { mhioc_resv_key_t newkey; boolean_t aptpl; /* True if persistent across power failures */ } mhioc_registerandignorekey_t; /* * SCSI-3 PGR Reservation Type Codes. Codes with the _OBSOLETE suffix * have been removed from the SCSI3 PGR standard. */ #define SCSI3_RESV_READSHARED_OBSOLETE 0 #define SCSI3_RESV_WRITEEXCLUSIVE 1 #define SCSI3_RESV_READEXCLUSIVE_OBSOLETE 2 #define SCSI3_RESV_EXCLUSIVEACCESS 3 #define SCSI3_RESV_SHAREDACCESS_OBSOLETE 4 #define SCSI3_RESV_WRITEEXCLUSIVEREGISTRANTSONLY 5 #define SCSI3_RESV_EXCLUSIVEACCESSREGISTRANTSONLY 6 #define SCSI3_SCOPE_LOGICALUNIT 0 #define SCSI3_SCOPE_EXTENT_OBSOLETE 1 #define SCSI3_SCOPE_ELEMENT 2 #ifdef __cplusplus } #endif #endif /* _SYS_MHD_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/isa_defs.h0000644000000000000000000000007413607166147021650 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.997506767 zfs-0.8.3/lib/libspl/include/sys/isa_defs.h0000644016037001603700000000777313607166147021663 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_ISA_DEFS_H #define _SYS_ISA_DEFS_H #ifdef __cplusplus extern "C" { #endif /* x86_64 arch specific defines */ #if defined(__x86_64) || defined(__x86_64__) #if !defined(__x86_64) #define __x86_64 #endif #if !defined(__amd64) #define __amd64 #endif #if !defined(__x86) #define __x86 #endif #if !defined(_LP64) #define _LP64 #endif #if !defined(_LITTLE_ENDIAN) #define _LITTLE_ENDIAN #endif #define _SUNOS_VTOC_16 #define HAVE_EFFICIENT_UNALIGNED_ACCESS /* i386 arch specific defines */ #elif defined(__i386) || defined(__i386__) #if !defined(__i386) #define __i386 #endif #if !defined(__x86) #define __x86 #endif #if !defined(_ILP32) #define _ILP32 #endif #if !defined(_LITTLE_ENDIAN) #define _LITTLE_ENDIAN #endif #define _SUNOS_VTOC_16 #define HAVE_EFFICIENT_UNALIGNED_ACCESS /* powerpc arch specific defines */ #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) #if !defined(__powerpc) #define __powerpc #endif #if !defined(__powerpc__) #define __powerpc__ #endif #if defined(__powerpc64__) #if !defined(_LP64) #define _LP64 #endif #else #if !defined(_ILP32) #define _ILP32 #endif #endif #define _SUNOS_VTOC_16 #define HAVE_EFFICIENT_UNALIGNED_ACCESS /* arm arch specific defines */ #elif defined(__arm) || defined(__arm__) || defined(__aarch64__) #if !defined(__arm) #define __arm #endif #if !defined(__arm__) #define __arm__ #endif #if defined(__aarch64__) #if !defined(_LP64) #define _LP64 #endif #else #if !defined(_ILP32) #define _ILP32 #endif #endif #if defined(__ARMEL__) || defined(__AARCH64EL__) #define _LITTLE_ENDIAN #else #define _BIG_ENDIAN #endif #define _SUNOS_VTOC_16 #if defined(__ARM_FEATURE_UNALIGNED) #define HAVE_EFFICIENT_UNALIGNED_ACCESS #endif /* sparc arch specific defines */ #elif defined(__sparc) || defined(__sparc__) #if !defined(__sparc) #define __sparc #endif #if !defined(__sparc__) #define __sparc__ #endif #define _BIG_ENDIAN #define _SUNOS_VTOC_16 #if defined(__arch64__) #if !defined(_LP64) #define _LP64 #endif #else #if !defined(_ILP32) #define _ILP32 #endif #endif /* s390 arch specific defines */ #elif defined(__s390__) #if defined(__s390x__) #if !defined(_LP64) #define _LP64 #endif #else #if !defined(_ILP32) #define _ILP32 #endif #endif #define _BIG_ENDIAN #define _SUNOS_VTOC_16 /* MIPS arch specific defines */ #elif defined(__mips__) #if defined(__MIPSEB__) #define _BIG_ENDIAN #elif defined(__MIPSEL__) #define _LITTLE_ENDIAN #else #error MIPS no endian specified #endif #ifndef _LP64 #define _ILP32 #endif #define _SUNOS_VTOC_16 #else /* * Currently supported: * x86_64, i386, arm, powerpc, s390, sparc, and mips */ #error "Unsupported ISA type" #endif #if defined(_ILP32) && defined(_LP64) #error "Both _ILP32 and _LP64 are defined" #endif #if !defined(_ILP32) && !defined(_LP64) #error "Neither _ILP32 or _LP64 are defined" #endif #if defined(_LITTLE_ENDIAN) && defined(_BIG_ENDIAN) #error "Both _LITTLE_ENDIAN and _BIG_ENDIAN are defined" #endif #if !defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) #error "Neither _LITTLE_ENDIAN nor _BIG_ENDIAN are defined" #endif #ifdef __cplusplus } #endif #endif /* _SYS_ISA_DEFS_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/stack.h0000644000000000000000000000007413607166132021172 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.027507731 zfs-0.8.3/lib/libspl/include/sys/stack.h0000644016037001603700000000343313607166132021172 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * This header file distributed under the terms of the CDDL. * Portions Copyright 2008 Sun Microsystems, Inc. All Rights reserved. */ #ifndef _SYS_STACK_H #define _SYS_STACK_H #include #define STACK_BIAS 0 #ifdef __USE_GNU static inline int stack_getbounds(stack_t *sp) { pthread_attr_t attr; int rc; rc = pthread_getattr_np(pthread_self(), &attr); if (rc) return (rc); rc = pthread_attr_getstack(&attr, &sp->ss_sp, &sp->ss_size); if (rc == 0) sp->ss_flags = 0; pthread_attr_destroy(&attr); return (rc); } static inline int thr_stksegment(stack_t *sp) { int rc; rc = stack_getbounds(sp); if (rc) return (rc); /* * thr_stksegment() is expected to set sp.ss_sp to the high stack * address, but the stack_getbounds() interface is expected to * set sp.ss_sp to the low address. Adjust accordingly. */ sp->ss_sp = (void *)(((uintptr_t)sp->ss_sp) + sp->ss_size); sp->ss_flags = 0; return (rc); } #endif /* __USE_GNU */ #endif /* _SYS_STACK_H */ zfs-0.8.3/lib/libspl/include/sys/PaxHeaders.151519/strings.h0000644000000000000000000000007413607166132021556 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.034507955 zfs-0.8.3/lib/libspl/include/sys/strings.h0000644016037001603700000000204313607166132021552 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_SYS_STRINGS_H #define _LIBSPL_SYS_STRINGS_H #include #include #endif zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/tzfile.h0000644000000000000000000000007413607166132020544 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.708497489 zfs-0.8.3/lib/libspl/include/tzfile.h0000644016037001603700000000203713607166132020543 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_TZFILE_H #define _LIBSPL_TZFILE_H #include #endif /* _LIBSPL_TZFILE_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/locale.h0000644000000000000000000000007413607166132020506 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.693497006 zfs-0.8.3/lib/libspl/include/locale.h0000644016037001603700000000206213607166132020503 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include_next #ifndef _LIBSPL_LOCALE_H #define _LIBSPL_LOCALE_H #include #include #endif zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/unistd.h0000644000000000000000000000007413607166132020555 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.716497745 zfs-0.8.3/lib/libspl/include/unistd.h0000644016037001603700000000225313607166132020554 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include_next #ifndef _LIBSPL_UNISTD_H #define _LIBSPL_UNISTD_H #include #if !defined(HAVE_ISSETUGID) #include #define issetugid() (geteuid() == 0 || getegid() == 0) #endif #endif /* _LIBSPL_UNISTD_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/limits.h0000644000000000000000000000007313607166132020547 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730471.69049691 zfs-0.8.3/lib/libspl/include/limits.h0000644016037001603700000000240513607166132020546 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include_next #ifndef _LIBSPL_LIMITS_H #define _LIBSPL_LIMITS_H #define DBL_DIG 15 #define DBL_MAX 1.7976931348623157081452E+308 #define DBL_MIN 2.2250738585072013830903E-308 #define FLT_DIG 6 #define FLT_MAX 3.4028234663852885981170E+38F #define FLT_MIN 1.1754943508222875079688E-38F #endif /* _LIBSPL_LIMITS_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/stdlib.h0000644000000000000000000000007413607166132020530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.699497198 zfs-0.8.3/lib/libspl/include/stdlib.h0000644016037001603700000000206013607166132020523 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include_next #ifndef _LIBSPL_STDLIB_H #define _LIBSPL_STDLIB_H extern const char *getexecname(void); #endif zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/stropts.h0000644000000000000000000000007413607166132020765 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.703497326 zfs-0.8.3/lib/libspl/include/stropts.h0000644016037001603700000000161113607166132020761 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #ifndef _LIBSPL_STROPTS_H #define _LIBSPL_STROPTS_H #endif /* _LIBSPL_STROPTS_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/rpc0000644000000000000000000000013213612143047017574 xustar000000000000000030 mtime=1579730471.903503748 30 atime=1579730489.074055067 30 ctime=1579730471.903503748 zfs-0.8.3/lib/libspl/include/rpc/0000775016037001603700000000000013612143047017655 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/include/rpc/PaxHeaders.151519/xdr.h0000644000000000000000000000007313607166132020627 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730471.89950362 zfs-0.8.3/lib/libspl/include/rpc/xdr.h0000644016037001603700000000343513607166132020632 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * * Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T * All Rights Reserved * * Portions of this source code were derived from Berkeley 4.3 BSD * under license from the Regents of the University of California. */ #ifndef LIBSPL_RPC_XDR_H #define LIBSPL_RPC_XDR_H #include_next #ifdef xdr_control /* if e.g. using tirpc */ #undef xdr_control #endif #define XDR_GET_BYTES_AVAIL 1 typedef struct xdr_bytesrec { bool_t xc_is_last_record; size_t xc_num_avail; } xdr_bytesrec_t; /* * This functionality is not required and is disabled in user space. */ static inline bool_t xdr_control(XDR *xdrs, int request, void *info) { xdr_bytesrec_t *xptr; ASSERT3U(request, ==, XDR_GET_BYTES_AVAIL); xptr = (xdr_bytesrec_t *)info; xptr->xc_is_last_record = TRUE; xptr->xc_num_avail = xdrs->x_handy; return (TRUE); } #endif /* LIBSPL_RPC_XDR_H */ zfs-0.8.3/lib/libspl/include/rpc/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132021716 xustar000000000000000030 atime=1579730430.245166213 30 ctime=1579730471.902503716 zfs-0.8.3/lib/libspl/include/rpc/Makefile.am0000644016037001603700000000014413607166132021712 0ustar00hutter2hutter200000000000000libspldir = $(includedir)/libspl/rpc libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/rpc/xdr.h zfs-0.8.3/lib/libspl/include/rpc/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612142776021725 xustar000000000000000030 mtime=1579730430.282167401 30 atime=1579730450.962831393 29 ctime=1579730471.90450378 zfs-0.8.3/lib/libspl/include/rpc/Makefile.in0000664016037001603700000006115613612142776021743 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/include/rpc DIST_COMMON = $(libspl_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libspldir)" HEADERS = $(libspl_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ libspldir = $(includedir)/libspl/rpc libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/rpc/xdr.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/include/rpc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/include/rpc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-libsplHEADERS: $(libspl_HEADERS) @$(NORMAL_INSTALL) test -z "$(libspldir)" || $(MKDIR_P) "$(DESTDIR)$(libspldir)" @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libspldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libspldir)" || exit $$?; \ done uninstall-libsplHEADERS: @$(NORMAL_UNINSTALL) @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libspldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libspldir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libspldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-libsplHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libsplHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libsplHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-libsplHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/ia320000644000000000000000000000013213612143047017546 xustar000000000000000030 mtime=1579730471.788500056 30 atime=1579730489.074055067 30 ctime=1579730471.788500056 zfs-0.8.3/lib/libspl/include/ia32/0000775016037001603700000000000013612143047017627 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/include/ia32/PaxHeaders.151519/Makefile.am0000644000000000000000000000007213607166132021666 xustar000000000000000030 atime=1579730430.140162843 28 ctime=1579730471.7804998 zfs-0.8.3/lib/libspl/include/ia32/Makefile.am0000644016037001603700000000001613607166132021662 0ustar00hutter2hutter200000000000000SUBDIRS = sys zfs-0.8.3/lib/libspl/include/ia32/PaxHeaders.151519/sys0000644000000000000000000000013213612143047020364 xustar000000000000000030 mtime=1579730471.847501951 30 atime=1579730489.074055067 30 ctime=1579730471.847501951 zfs-0.8.3/lib/libspl/include/ia32/sys/0000775016037001603700000000000013612143047020445 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/include/ia32/sys/PaxHeaders.151519/asm_linkage.h0000644000000000000000000000007413607166132023075 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.843501823 zfs-0.8.3/lib/libspl/include/ia32/sys/asm_linkage.h0000644016037001603700000001444613607166132023103 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _IA32_SYS_ASM_LINKAGE_H #define _IA32_SYS_ASM_LINKAGE_H #ifdef __cplusplus extern "C" { #endif #ifdef _ASM /* The remainder of this file is only for assembly files */ /* * make annoying differences in assembler syntax go away */ /* * D16 and A16 are used to insert instructions prefixes; the * macros help the assembler code be slightly more portable. */ #if !defined(__GNUC_AS__) /* * /usr/ccs/bin/as prefixes are parsed as separate instructions */ #define D16 data16; #define A16 addr16; /* * (There are some weird constructs in constant expressions) */ #define _CONST(const) [const] #define _BITNOT(const) -1!_CONST(const) #define _MUL(a, b) _CONST(a \* b) #else /* * Why not use the 'data16' and 'addr16' prefixes .. well, the * assembler doesn't quite believe in real mode, and thus argues with * us about what we're trying to do. */ #define D16 .byte 0x66; #define A16 .byte 0x67; #define _CONST(const) (const) #define _BITNOT(const) ~_CONST(const) #define _MUL(a, b) _CONST(a * b) #endif /* * C pointers are different sizes between i386 and amd64. * These constants can be used to compute offsets into pointer arrays. */ #if defined(__amd64) #define CLONGSHIFT 3 #define CLONGSIZE 8 #define CLONGMASK 7 #elif defined(__i386) #define CLONGSHIFT 2 #define CLONGSIZE 4 #define CLONGMASK 3 #endif /* * Since we know we're either ILP32 or LP64 .. */ #define CPTRSHIFT CLONGSHIFT #define CPTRSIZE CLONGSIZE #define CPTRMASK CLONGMASK #if CPTRSIZE != (1 << CPTRSHIFT) || CLONGSIZE != (1 << CLONGSHIFT) #error "inconsistent shift constants" #endif #if CPTRMASK != (CPTRSIZE - 1) || CLONGMASK != (CLONGSIZE - 1) #error "inconsistent mask constants" #endif #define ASM_ENTRY_ALIGN 16 /* * SSE register alignment and save areas */ #define XMM_SIZE 16 #define XMM_ALIGN 16 #if defined(__amd64) #define SAVE_XMM_PROLOG(sreg, nreg) \ subq $_CONST(_MUL(XMM_SIZE, nreg)), %rsp; \ movq %rsp, sreg #define RSTOR_XMM_EPILOG(sreg, nreg) \ addq $_CONST(_MUL(XMM_SIZE, nreg)), %rsp #elif defined(__i386) #define SAVE_XMM_PROLOG(sreg, nreg) \ subl $_CONST(_MUL(XMM_SIZE, nreg) + XMM_ALIGN), %esp; \ movl %esp, sreg; \ addl $XMM_ALIGN, sreg; \ andl $_BITNOT(XMM_ALIGN-1), sreg #define RSTOR_XMM_EPILOG(sreg, nreg) \ addl $_CONST(_MUL(XMM_SIZE, nreg) + XMM_ALIGN), %esp; #endif /* __i386 */ /* * profiling causes definitions of the MCOUNT and RTMCOUNT * particular to the type */ #ifdef GPROF #define MCOUNT(x) \ pushl %ebp; \ movl %esp, %ebp; \ call _mcount; \ popl %ebp #endif /* GPROF */ #ifdef PROF #define MCOUNT(x) \ /* CSTYLED */ \ .lcomm .L_/**/x/**/1, 4, 4; \ pushl %ebp; \ movl %esp, %ebp; \ /* CSTYLED */ \ movl $.L_/**/x/**/1, %edx; \ call _mcount; \ popl %ebp #endif /* PROF */ /* * if we are not profiling, MCOUNT should be defined to nothing */ #if !defined(PROF) && !defined(GPROF) #define MCOUNT(x) #endif /* !defined(PROF) && !defined(GPROF) */ #define RTMCOUNT(x) MCOUNT(x) /* * Macro to define weak symbol aliases. These are similar to the ANSI-C * #pragma weak name = _name * except a compiler can determine type. The assembler must be told. Hence, * the second parameter must be the type of the symbol (i.e.: function,...) */ #define ANSI_PRAGMA_WEAK(sym, stype) \ .weak sym; \ .type sym, @stype; \ /* CSTYLED */ \ sym = _/**/sym /* * Like ANSI_PRAGMA_WEAK(), but for unrelated names, as in: * #pragma weak sym1 = sym2 */ #define ANSI_PRAGMA_WEAK2(sym1, sym2, stype) \ .weak sym1; \ .type sym1, @stype; \ sym1 = sym2 /* * ENTRY provides the standard procedure entry code and an easy way to * insert the calls to mcount for profiling. ENTRY_NP is identical, but * never calls mcount. */ #define ENTRY(x) \ .text; \ .align ASM_ENTRY_ALIGN; \ .globl x; \ .type x, @function; \ x: MCOUNT(x) #define ENTRY_NP(x) \ .text; \ .align ASM_ENTRY_ALIGN; \ .globl x; \ .type x, @function; \ x: #define RTENTRY(x) \ .text; \ .align ASM_ENTRY_ALIGN; \ .globl x; \ .type x, @function; \ x: RTMCOUNT(x) /* * ENTRY2 is identical to ENTRY but provides two labels for the entry point. */ #define ENTRY2(x, y) \ .text; \ .align ASM_ENTRY_ALIGN; \ .globl x, y; \ .type x, @function; \ .type y, @function; \ /* CSTYLED */ \ x: ; \ y: MCOUNT(x) #define ENTRY_NP2(x, y) \ .text; \ .align ASM_ENTRY_ALIGN; \ .globl x, y; \ .type x, @function; \ .type y, @function; \ /* CSTYLED */ \ x: ; \ y: /* * ALTENTRY provides for additional entry points. */ #define ALTENTRY(x) \ .globl x; \ .type x, @function; \ x: /* * DGDEF and DGDEF2 provide global data declarations. * * DGDEF provides a word aligned word of storage. * * DGDEF2 allocates "sz" bytes of storage with **NO** alignment. This * implies this macro is best used for byte arrays. * * DGDEF3 allocates "sz" bytes of storage with "algn" alignment. */ #define DGDEF2(name, sz) \ .data; \ .globl name; \ .type name, @object; \ .size name, sz; \ name: #define DGDEF3(name, sz, algn) \ .data; \ .align algn; \ .globl name; \ .type name, @object; \ .size name, sz; \ name: #define DGDEF(name) DGDEF3(name, 4, 4) /* * SET_SIZE trails a function and set the size for the ELF symbol table. */ #define SET_SIZE(x) \ .size x, [.-x] /* * NWORD provides native word value. */ #if defined(__amd64) /*CSTYLED*/ #define NWORD quad #elif defined(__i386) #define NWORD long #endif /* __i386 */ #endif /* _ASM */ #ifdef __cplusplus } #endif #endif /* _IA32_SYS_ASM_LINKAGE_H */ zfs-0.8.3/lib/libspl/include/ia32/sys/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132022506 xustar000000000000000030 atime=1579730430.192164512 30 ctime=1579730471.845501887 zfs-0.8.3/lib/libspl/include/ia32/sys/Makefile.am0000644016037001603700000000017513607166132022506 0ustar00hutter2hutter200000000000000libspldir = $(includedir)/libspl/ia32/sys libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/ia32/sys/asm_linkage.h zfs-0.8.3/lib/libspl/include/ia32/sys/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776022516 xustar000000000000000030 mtime=1579730430.228165667 30 atime=1579730450.933830463 30 ctime=1579730471.847501951 zfs-0.8.3/lib/libspl/include/ia32/sys/Makefile.in0000664016037001603700000006122613612142776022531 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/include/ia32/sys DIST_COMMON = $(libspl_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libspldir)" HEADERS = $(libspl_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ libspldir = $(includedir)/libspl/ia32/sys libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/ia32/sys/asm_linkage.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/include/ia32/sys/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/include/ia32/sys/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-libsplHEADERS: $(libspl_HEADERS) @$(NORMAL_INSTALL) test -z "$(libspldir)" || $(MKDIR_P) "$(DESTDIR)$(libspldir)" @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libspldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libspldir)" || exit $$?; \ done uninstall-libsplHEADERS: @$(NORMAL_UNINSTALL) @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libspldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libspldir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libspldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-libsplHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libsplHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libsplHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-libsplHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/include/ia32/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776021700 xustar000000000000000030 mtime=1579730430.175163967 30 atime=1579730450.902829467 30 ctime=1579730471.782499864 zfs-0.8.3/lib/libspl/include/ia32/Makefile.in0000664016037001603700000006756013612142776021722 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/include/ia32 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = sys all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/include/ia32/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/include/ia32/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/statcommon.h0000644000000000000000000000007313607166132021432 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730471.69549707 zfs-0.8.3/lib/libspl/include/statcommon.h0000644016037001603700000000251213607166132021430 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * * Common routines for acquiring snapshots of kstats for * iostat, mpstat, and vmstat. */ #ifndef _STATCOMMON_H #define _STATCOMMON_H #include #define NODATE 0 /* Default: No time stamp */ #define DDATE 1 /* Standard date format */ #define UDATE 2 /* Internal representation of Unix time */ /* Print a timestamp in either Unix or standard format. */ void print_timestamp(uint_t); #endif /* _STATCOMMON_H */ zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776021142 xustar000000000000000030 mtime=1579730430.123162297 30 atime=1579730450.872828503 30 ctime=1579730471.723497969 zfs-0.8.3/lib/libspl/include/Makefile.in0000664016037001603700000007537513612142776021167 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/include DIST_COMMON = $(libspl_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libspldir)" HEADERS = $(libspl_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = ia32 rpc sys util libspldir = $(includedir)/libspl libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/assert.h \ $(top_srcdir)/lib/libspl/include/atomic.h \ $(top_srcdir)/lib/libspl/include/devid.h \ $(top_srcdir)/lib/libspl/include/libdevinfo.h \ $(top_srcdir)/lib/libspl/include/libgen.h \ $(top_srcdir)/lib/libspl/include/libshare.h \ $(top_srcdir)/lib/libspl/include/limits.h \ $(top_srcdir)/lib/libspl/include/locale.h \ $(top_srcdir)/lib/libspl/include/statcommon.h \ $(top_srcdir)/lib/libspl/include/stdio.h \ $(top_srcdir)/lib/libspl/include/stdlib.h \ $(top_srcdir)/lib/libspl/include/string.h \ $(top_srcdir)/lib/libspl/include/stropts.h \ $(top_srcdir)/lib/libspl/include/thread.h \ $(top_srcdir)/lib/libspl/include/tzfile.h \ $(top_srcdir)/lib/libspl/include/ucred.h \ $(top_srcdir)/lib/libspl/include/umem.h \ $(top_srcdir)/lib/libspl/include/unistd.h \ $(top_srcdir)/lib/libspl/include/zone.h all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-libsplHEADERS: $(libspl_HEADERS) @$(NORMAL_INSTALL) test -z "$(libspldir)" || $(MKDIR_P) "$(DESTDIR)$(libspldir)" @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libspldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libspldir)" || exit $$?; \ done uninstall-libsplHEADERS: @$(NORMAL_UNINSTALL) @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libspldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libspldir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libspldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-libsplHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-libsplHEADERS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libsplHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-libsplHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/stdio.h0000644000000000000000000000007413607166132020371 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.697497134 zfs-0.8.3/lib/libspl/include/stdio.h0000644016037001603700000000207613607166132020373 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include_next #ifndef _LIBSPL_STDIO_H #define _LIBSPL_STDIO_H #define enable_extended_FILE_stdio(fd, sig) ((void) 0) #endif zfs-0.8.3/lib/libspl/include/PaxHeaders.151519/util0000644000000000000000000000013213612143050017757 xustar000000000000000030 mtime=1579730472.197513188 30 atime=1579730489.074055067 30 ctime=1579730472.197513188 zfs-0.8.3/lib/libspl/include/util/0000775016037001603700000000000013612143050020040 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/include/util/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132022107 xustar000000000000000030 atime=1579730430.408171447 30 ctime=1579730472.195513124 zfs-0.8.3/lib/libspl/include/util/Makefile.am0000644016037001603700000000014413607166132022103 0ustar00hutter2hutter200000000000000libspldir = $(includedir)/libspl libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/util/sscanf.h zfs-0.8.3/lib/libspl/include/util/PaxHeaders.151519/sscanf.h0000644000000000000000000000007313607166132021500 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730472.19351306 zfs-0.8.3/lib/libspl/include/util/sscanf.h0000644016037001603700000000177113607166132021504 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBSPL_UTIL_SSCANF_H #define _LIBSPL_UTIL_SSCANF_H #endif zfs-0.8.3/lib/libspl/include/util/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776022117 xustar000000000000000030 mtime=1579730430.445172635 30 atime=1579730451.055834379 30 ctime=1579730472.197513188 zfs-0.8.3/lib/libspl/include/util/Makefile.in0000664016037001603700000006116113612142776022130 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/include/util DIST_COMMON = $(libspl_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libspldir)" HEADERS = $(libspl_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ libspldir = $(includedir)/libspl libspl_HEADERS = \ $(top_srcdir)/lib/libspl/include/util/sscanf.h all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/include/util/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/include/util/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-libsplHEADERS: $(libspl_HEADERS) @$(NORMAL_INSTALL) test -z "$(libspldir)" || $(MKDIR_P) "$(DESTDIR)$(libspldir)" @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libspldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libspldir)" || exit $$?; \ done uninstall-libsplHEADERS: @$(NORMAL_UNINSTALL) @list='$(libspl_HEADERS)'; test -n "$(libspldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libspldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libspldir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libspldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-libsplHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libsplHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-libsplHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-libsplHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/PaxHeaders.151519/strlcpy.c0000644000000000000000000000007413607166132017317 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.603494117 zfs-0.8.3/lib/libspl/strlcpy.c0000644016037001603700000000264713607166132017325 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef HAVE_STRLCPY #include #include /* * Copies src to the dstsize buffer at dst. The copy will never * overflow the destination buffer and the buffer will always be null * terminated. */ size_t strlcpy(char *dst, const char *src, size_t len) { size_t slen = strlen(src); size_t copied; if (len == 0) return (slen); if (slen >= len) copied = len - 1; else copied = slen; (void) memcpy(dst, src, copied); dst[copied] = '\0'; return (slen); } #endif /* HAVE_STRLCPY */ zfs-0.8.3/lib/libspl/PaxHeaders.151519/list.c0000644000000000000000000000007413607166132016572 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.594493826 zfs-0.8.3/lib/libspl/list.c0000644016037001603700000001303313607166132016567 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Generic doubly-linked list implementation */ #include #include #include #include #include #define list_d2l(a, obj) ((list_node_t *)(((char *)obj) + (a)->list_offset)) #define list_object(a, node) ((void *)(((char *)node) - (a)->list_offset)) #define list_empty(a) ((a)->list_head.list_next == &(a)->list_head) #define list_insert_after_node(list, node, object) { \ list_node_t *lnew = list_d2l(list, object); \ lnew->list_prev = (node); \ lnew->list_next = (node)->list_next; \ (node)->list_next->list_prev = lnew; \ (node)->list_next = lnew; \ } #define list_insert_before_node(list, node, object) { \ list_node_t *lnew = list_d2l(list, object); \ lnew->list_next = (node); \ lnew->list_prev = (node)->list_prev; \ (node)->list_prev->list_next = lnew; \ (node)->list_prev = lnew; \ } #define list_remove_node(node) \ (node)->list_prev->list_next = (node)->list_next; \ (node)->list_next->list_prev = (node)->list_prev; \ (node)->list_next = (node)->list_prev = NULL void list_create(list_t *list, size_t size, size_t offset) { ASSERT(list); ASSERT(size > 0); ASSERT(size >= offset + sizeof (list_node_t)); list->list_size = size; list->list_offset = offset; list->list_head.list_next = list->list_head.list_prev = &list->list_head; } void list_destroy(list_t *list) { list_node_t *node = &list->list_head; ASSERT(list); ASSERT(list->list_head.list_next == node); ASSERT(list->list_head.list_prev == node); node->list_next = node->list_prev = NULL; } void list_insert_after(list_t *list, void *object, void *nobject) { if (object == NULL) { list_insert_head(list, nobject); } else { list_node_t *lold = list_d2l(list, object); list_insert_after_node(list, lold, nobject); } } void list_insert_before(list_t *list, void *object, void *nobject) { if (object == NULL) { list_insert_tail(list, nobject); } else { list_node_t *lold = list_d2l(list, object); list_insert_before_node(list, lold, nobject); } } void list_insert_head(list_t *list, void *object) { list_node_t *lold = &list->list_head; list_insert_after_node(list, lold, object); } void list_insert_tail(list_t *list, void *object) { list_node_t *lold = &list->list_head; list_insert_before_node(list, lold, object); } void list_remove(list_t *list, void *object) { list_node_t *lold = list_d2l(list, object); ASSERT(!list_empty(list)); ASSERT(lold->list_next != NULL); list_remove_node(lold); } void * list_remove_head(list_t *list) { list_node_t *head = list->list_head.list_next; if (head == &list->list_head) return (NULL); list_remove_node(head); return (list_object(list, head)); } void * list_remove_tail(list_t *list) { list_node_t *tail = list->list_head.list_prev; if (tail == &list->list_head) return (NULL); list_remove_node(tail); return (list_object(list, tail)); } void * list_head(list_t *list) { if (list_empty(list)) return (NULL); return (list_object(list, list->list_head.list_next)); } void * list_tail(list_t *list) { if (list_empty(list)) return (NULL); return (list_object(list, list->list_head.list_prev)); } void * list_next(list_t *list, void *object) { list_node_t *node = list_d2l(list, object); if (node->list_next != &list->list_head) return (list_object(list, node->list_next)); return (NULL); } void * list_prev(list_t *list, void *object) { list_node_t *node = list_d2l(list, object); if (node->list_prev != &list->list_head) return (list_object(list, node->list_prev)); return (NULL); } /* * Insert src list after dst list. Empty src list thereafter. */ void list_move_tail(list_t *dst, list_t *src) { list_node_t *dstnode = &dst->list_head; list_node_t *srcnode = &src->list_head; ASSERT(dst->list_size == src->list_size); ASSERT(dst->list_offset == src->list_offset); if (list_empty(src)) return; dstnode->list_prev->list_next = srcnode->list_next; srcnode->list_next->list_prev = dstnode->list_prev; dstnode->list_prev = srcnode->list_prev; srcnode->list_prev->list_next = dstnode; /* empty src list */ srcnode->list_next = srcnode->list_prev = srcnode; } void list_link_replace(list_node_t *lold, list_node_t *lnew) { ASSERT(list_link_active(lold)); ASSERT(!list_link_active(lnew)); lnew->list_next = lold->list_next; lnew->list_prev = lold->list_prev; lold->list_prev->list_next = lnew; lold->list_next->list_prev = lnew; lold->list_next = lold->list_prev = NULL; } void list_link_init(list_node_t *ln) { ln->list_next = NULL; ln->list_prev = NULL; } int list_link_active(list_node_t *ln) { return (ln->list_next != NULL); } int list_is_empty(list_t *list) { return (list_empty(list)); } zfs-0.8.3/lib/libspl/PaxHeaders.151519/asm-i3860000644000000000000000000000013213612143050016626 xustar000000000000000030 mtime=1579730472.307516721 30 atime=1579730489.074055067 30 ctime=1579730472.307516721 zfs-0.8.3/lib/libspl/asm-i386/0000775016037001603700000000000013612143050016707 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/asm-i386/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132020756 xustar000000000000000030 atime=1579730429.981157737 30 ctime=1579730472.305516657 zfs-0.8.3/lib/libspl/asm-i386/Makefile.am0000644016037001603700000000003213607166132020746 0ustar00hutter2hutter200000000000000noinst_HEADERS = atomic.S zfs-0.8.3/lib/libspl/asm-i386/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776020766 xustar000000000000000030 mtime=1579730430.016158861 30 atime=1579730450.811826545 30 ctime=1579730472.307516721 zfs-0.8.3/lib/libspl/asm-i386/Makefile.in0000664016037001603700000005513213612142776021000 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/asm-i386 DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ noinst_HEADERS = atomic.S all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/asm-i386/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/asm-i386/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/asm-i386/PaxHeaders.151519/atomic.S0000644000000000000000000000007413607166132020322 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.302516561 zfs-0.8.3/lib/libspl/asm-i386/atomic.S0000644016037001603700000003574113607166132020331 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ .ident "%Z%%M% %I% %E% SMI" .file "%M%" #define _ASM #include ENTRY(atomic_inc_8) ALTENTRY(atomic_inc_uchar) movl 4(%esp), %eax lock incb (%eax) ret SET_SIZE(atomic_inc_uchar) SET_SIZE(atomic_inc_8) ENTRY(atomic_inc_16) ALTENTRY(atomic_inc_ushort) movl 4(%esp), %eax lock incw (%eax) ret SET_SIZE(atomic_inc_ushort) SET_SIZE(atomic_inc_16) ENTRY(atomic_inc_32) ALTENTRY(atomic_inc_uint) ALTENTRY(atomic_inc_ulong) movl 4(%esp), %eax lock incl (%eax) ret SET_SIZE(atomic_inc_ulong) SET_SIZE(atomic_inc_uint) SET_SIZE(atomic_inc_32) ENTRY(atomic_inc_8_nv) ALTENTRY(atomic_inc_uchar_nv) movl 4(%esp), %edx movb (%edx), %al 1: leal 1(%eax), %ecx lock cmpxchgb %cl, (%edx) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_inc_uchar_nv) SET_SIZE(atomic_inc_8_nv) ENTRY(atomic_inc_16_nv) ALTENTRY(atomic_inc_ushort_nv) movl 4(%esp), %edx movw (%edx), %ax 1: leal 1(%eax), %ecx lock cmpxchgw %cx, (%edx) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_inc_ushort_nv) SET_SIZE(atomic_inc_16_nv) ENTRY(atomic_inc_32_nv) ALTENTRY(atomic_inc_uint_nv) ALTENTRY(atomic_inc_ulong_nv) movl 4(%esp), %edx movl (%edx), %eax 1: leal 1(%eax), %ecx lock cmpxchgl %ecx, (%edx) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_inc_ulong_nv) SET_SIZE(atomic_inc_uint_nv) SET_SIZE(atomic_inc_32_nv) /* * NOTE: If atomic_inc_64 and atomic_inc_64_nv are ever * separated, you need to also edit the libc i386 platform * specific mapfile and remove the NODYNSORT attribute * from atomic_inc_64_nv. */ ENTRY(atomic_inc_64) ALTENTRY(atomic_inc_64_nv) pushl %edi pushl %ebx movl 12(%esp), %edi movl (%edi), %eax movl 4(%edi), %edx 1: xorl %ebx, %ebx xorl %ecx, %ecx incl %ebx addl %eax, %ebx adcl %edx, %ecx lock cmpxchg8b (%edi) jne 1b movl %ebx, %eax movl %ecx, %edx popl %ebx popl %edi ret SET_SIZE(atomic_inc_64_nv) SET_SIZE(atomic_inc_64) ENTRY(atomic_dec_8) ALTENTRY(atomic_dec_uchar) movl 4(%esp), %eax lock decb (%eax) ret SET_SIZE(atomic_dec_uchar) SET_SIZE(atomic_dec_8) ENTRY(atomic_dec_16) ALTENTRY(atomic_dec_ushort) movl 4(%esp), %eax lock decw (%eax) ret SET_SIZE(atomic_dec_ushort) SET_SIZE(atomic_dec_16) ENTRY(atomic_dec_32) ALTENTRY(atomic_dec_uint) ALTENTRY(atomic_dec_ulong) movl 4(%esp), %eax lock decl (%eax) ret SET_SIZE(atomic_dec_ulong) SET_SIZE(atomic_dec_uint) SET_SIZE(atomic_dec_32) ENTRY(atomic_dec_8_nv) ALTENTRY(atomic_dec_uchar_nv) movl 4(%esp), %edx movb (%edx), %al 1: leal -1(%eax), %ecx lock cmpxchgb %cl, (%edx) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_dec_uchar_nv) SET_SIZE(atomic_dec_8_nv) ENTRY(atomic_dec_16_nv) ALTENTRY(atomic_dec_ushort_nv) movl 4(%esp), %edx movw (%edx), %ax 1: leal -1(%eax), %ecx lock cmpxchgw %cx, (%edx) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_dec_ushort_nv) SET_SIZE(atomic_dec_16_nv) ENTRY(atomic_dec_32_nv) ALTENTRY(atomic_dec_uint_nv) ALTENTRY(atomic_dec_ulong_nv) movl 4(%esp), %edx movl (%edx), %eax 1: leal -1(%eax), %ecx lock cmpxchgl %ecx, (%edx) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_dec_ulong_nv) SET_SIZE(atomic_dec_uint_nv) SET_SIZE(atomic_dec_32_nv) /* * NOTE: If atomic_dec_64 and atomic_dec_64_nv are ever * separated, it is important to edit the libc i386 platform * specific mapfile and remove the NODYNSORT attribute * from atomic_dec_64_nv. */ ENTRY(atomic_dec_64) ALTENTRY(atomic_dec_64_nv) pushl %edi pushl %ebx movl 12(%esp), %edi movl (%edi), %eax movl 4(%edi), %edx 1: xorl %ebx, %ebx xorl %ecx, %ecx not %ecx not %ebx addl %eax, %ebx adcl %edx, %ecx lock cmpxchg8b (%edi) jne 1b movl %ebx, %eax movl %ecx, %edx popl %ebx popl %edi ret SET_SIZE(atomic_dec_64_nv) SET_SIZE(atomic_dec_64) ENTRY(atomic_add_8) ALTENTRY(atomic_add_char) movl 4(%esp), %eax movl 8(%esp), %ecx lock addb %cl, (%eax) ret SET_SIZE(atomic_add_char) SET_SIZE(atomic_add_8) ENTRY(atomic_add_16) ALTENTRY(atomic_add_short) movl 4(%esp), %eax movl 8(%esp), %ecx lock addw %cx, (%eax) ret SET_SIZE(atomic_add_short) SET_SIZE(atomic_add_16) ENTRY(atomic_add_32) ALTENTRY(atomic_add_int) ALTENTRY(atomic_add_ptr) ALTENTRY(atomic_add_long) movl 4(%esp), %eax movl 8(%esp), %ecx lock addl %ecx, (%eax) ret SET_SIZE(atomic_add_long) SET_SIZE(atomic_add_ptr) SET_SIZE(atomic_add_int) SET_SIZE(atomic_add_32) ENTRY(atomic_sub_8) ALTENTRY(atomic_sub_char) movl 4(%esp), %eax movl 8(%esp), %ecx lock subb %cl, (%eax) ret SET_SIZE(atomic_sub_char) SET_SIZE(atomic_sub_8) ENTRY(atomic_sub_16) ALTENTRY(atomic_sub_short) movl 4(%esp), %eax movl 8(%esp), %ecx lock subw %cx, (%eax) ret SET_SIZE(atomic_sub_short) SET_SIZE(atomic_sub_16) ENTRY(atomic_sub_32) ALTENTRY(atomic_sub_int) ALTENTRY(atomic_sub_ptr) ALTENTRY(atomic_sub_long) movl 4(%esp), %eax movl 8(%esp), %ecx lock subl %ecx, (%eax) ret SET_SIZE(atomic_sub_long) SET_SIZE(atomic_sub_ptr) SET_SIZE(atomic_sub_int) SET_SIZE(atomic_sub_32) ENTRY(atomic_or_8) ALTENTRY(atomic_or_uchar) movl 4(%esp), %eax movb 8(%esp), %cl lock orb %cl, (%eax) ret SET_SIZE(atomic_or_uchar) SET_SIZE(atomic_or_8) ENTRY(atomic_or_16) ALTENTRY(atomic_or_ushort) movl 4(%esp), %eax movw 8(%esp), %cx lock orw %cx, (%eax) ret SET_SIZE(atomic_or_ushort) SET_SIZE(atomic_or_16) ENTRY(atomic_or_32) ALTENTRY(atomic_or_uint) ALTENTRY(atomic_or_ulong) movl 4(%esp), %eax movl 8(%esp), %ecx lock orl %ecx, (%eax) ret SET_SIZE(atomic_or_ulong) SET_SIZE(atomic_or_uint) SET_SIZE(atomic_or_32) ENTRY(atomic_and_8) ALTENTRY(atomic_and_uchar) movl 4(%esp), %eax movb 8(%esp), %cl lock andb %cl, (%eax) ret SET_SIZE(atomic_and_uchar) SET_SIZE(atomic_and_8) ENTRY(atomic_and_16) ALTENTRY(atomic_and_ushort) movl 4(%esp), %eax movw 8(%esp), %cx lock andw %cx, (%eax) ret SET_SIZE(atomic_and_ushort) SET_SIZE(atomic_and_16) ENTRY(atomic_and_32) ALTENTRY(atomic_and_uint) ALTENTRY(atomic_and_ulong) movl 4(%esp), %eax movl 8(%esp), %ecx lock andl %ecx, (%eax) ret SET_SIZE(atomic_and_ulong) SET_SIZE(atomic_and_uint) SET_SIZE(atomic_and_32) ENTRY(atomic_add_8_nv) ALTENTRY(atomic_add_char_nv) movl 4(%esp), %edx movb (%edx), %al 1: movl 8(%esp), %ecx addb %al, %cl lock cmpxchgb %cl, (%edx) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_add_char_nv) SET_SIZE(atomic_add_8_nv) ENTRY(atomic_add_16_nv) ALTENTRY(atomic_add_short_nv) movl 4(%esp), %edx movw (%edx), %ax 1: movl 8(%esp), %ecx addw %ax, %cx lock cmpxchgw %cx, (%edx) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_add_short_nv) SET_SIZE(atomic_add_16_nv) ENTRY(atomic_add_32_nv) ALTENTRY(atomic_add_int_nv) ALTENTRY(atomic_add_ptr_nv) ALTENTRY(atomic_add_long_nv) movl 4(%esp), %edx movl (%edx), %eax 1: movl 8(%esp), %ecx addl %eax, %ecx lock cmpxchgl %ecx, (%edx) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_add_long_nv) SET_SIZE(atomic_add_ptr_nv) SET_SIZE(atomic_add_int_nv) SET_SIZE(atomic_add_32_nv) ENTRY(atomic_sub_8_nv) ALTENTRY(atomic_sub_char_nv) movl 4(%esp), %edx movb (%edx), %al 1: movl 8(%esp), %ecx subb %al, %cl lock cmpxchgb %cl, (%edx) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_sub_char_nv) SET_SIZE(atomic_sub_8_nv) ENTRY(atomic_sub_16_nv) ALTENTRY(atomic_sub_short_nv) movl 4(%esp), %edx movw (%edx), %ax 1: movl 8(%esp), %ecx subw %ax, %cx lock cmpxchgw %cx, (%edx) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_sub_short_nv) SET_SIZE(atomic_sub_16_nv) ENTRY(atomic_sub_32_nv) ALTENTRY(atomic_sub_int_nv) ALTENTRY(atomic_sub_ptr_nv) ALTENTRY(atomic_sub_long_nv) movl 4(%esp), %edx movl (%edx), %eax 1: movl 8(%esp), %ecx subl %eax, %ecx lock cmpxchgl %ecx, (%edx) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_sub_long_nv) SET_SIZE(atomic_sub_ptr_nv) SET_SIZE(atomic_sub_int_nv) SET_SIZE(atomic_sub_32_nv) /* * NOTE: If atomic_add_64 and atomic_add_64_nv are ever * separated, it is important to edit the libc i386 platform * specific mapfile and remove the NODYNSORT attribute * from atomic_add_64_nv. */ ENTRY(atomic_add_64) ALTENTRY(atomic_add_64_nv) pushl %edi pushl %ebx movl 12(%esp), %edi movl (%edi), %eax movl 4(%edi), %edx 1: movl 16(%esp), %ebx movl 20(%esp), %ecx addl %eax, %ebx adcl %edx, %ecx lock cmpxchg8b (%edi) jne 1b movl %ebx, %eax movl %ecx, %edx popl %ebx popl %edi ret SET_SIZE(atomic_add_64_nv) SET_SIZE(atomic_add_64) ENTRY(atomic_sub_64) ALTENTRY(atomic_sub_64_nv) pushl %edi pushl %ebx movl 12(%esp), %edi movl (%edi), %eax movl 4(%edi), %edx 1: movl 16(%esp), %ebx movl 20(%esp), %ecx subl %eax, %ebx sbbl %edx, %ecx lock cmpxchg8b (%edi) jne 1b movl %ebx, %eax movl %ecx, %edx popl %ebx popl %edi ret SET_SIZE(atomic_sub_64_nv) SET_SIZE(atomic_sub_64) ENTRY(atomic_or_8_nv) ALTENTRY(atomic_or_uchar_nv) movl 4(%esp), %edx movb (%edx), %al 1: movl 8(%esp), %ecx orb %al, %cl lock cmpxchgb %cl, (%edx) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_or_uchar_nv) SET_SIZE(atomic_or_8_nv) ENTRY(atomic_or_16_nv) ALTENTRY(atomic_or_ushort_nv) movl 4(%esp), %edx movw (%edx), %ax 1: movl 8(%esp), %ecx orw %ax, %cx lock cmpxchgw %cx, (%edx) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_or_ushort_nv) SET_SIZE(atomic_or_16_nv) ENTRY(atomic_or_32_nv) ALTENTRY(atomic_or_uint_nv) ALTENTRY(atomic_or_ulong_nv) movl 4(%esp), %edx movl (%edx), %eax 1: movl 8(%esp), %ecx orl %eax, %ecx lock cmpxchgl %ecx, (%edx) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_or_ulong_nv) SET_SIZE(atomic_or_uint_nv) SET_SIZE(atomic_or_32_nv) /* * NOTE: If atomic_or_64 and atomic_or_64_nv are ever * separated, it is important to edit the libc i386 platform * specific mapfile and remove the NODYNSORT attribute * from atomic_or_64_nv. */ ENTRY(atomic_or_64) ALTENTRY(atomic_or_64_nv) pushl %edi pushl %ebx movl 12(%esp), %edi movl (%edi), %eax movl 4(%edi), %edx 1: movl 16(%esp), %ebx movl 20(%esp), %ecx orl %eax, %ebx orl %edx, %ecx lock cmpxchg8b (%edi) jne 1b movl %ebx, %eax movl %ecx, %edx popl %ebx popl %edi ret SET_SIZE(atomic_or_64_nv) SET_SIZE(atomic_or_64) ENTRY(atomic_and_8_nv) ALTENTRY(atomic_and_uchar_nv) movl 4(%esp), %edx movb (%edx), %al 1: movl 8(%esp), %ecx andb %al, %cl lock cmpxchgb %cl, (%edx) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_and_uchar_nv) SET_SIZE(atomic_and_8_nv) ENTRY(atomic_and_16_nv) ALTENTRY(atomic_and_ushort_nv) movl 4(%esp), %edx movw (%edx), %ax 1: movl 8(%esp), %ecx andw %ax, %cx lock cmpxchgw %cx, (%edx) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_and_ushort_nv) SET_SIZE(atomic_and_16_nv) ENTRY(atomic_and_32_nv) ALTENTRY(atomic_and_uint_nv) ALTENTRY(atomic_and_ulong_nv) movl 4(%esp), %edx movl (%edx), %eax 1: movl 8(%esp), %ecx andl %eax, %ecx lock cmpxchgl %ecx, (%edx) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_and_ulong_nv) SET_SIZE(atomic_and_uint_nv) SET_SIZE(atomic_and_32_nv) /* * NOTE: If atomic_and_64 and atomic_and_64_nv are ever * separated, it is important to edit the libc i386 platform * specific mapfile and remove the NODYNSORT attribute * from atomic_and_64_nv. */ ENTRY(atomic_and_64) ALTENTRY(atomic_and_64_nv) pushl %edi pushl %ebx movl 12(%esp), %edi movl (%edi), %eax movl 4(%edi), %edx 1: movl 16(%esp), %ebx movl 20(%esp), %ecx andl %eax, %ebx andl %edx, %ecx lock cmpxchg8b (%edi) jne 1b movl %ebx, %eax movl %ecx, %edx popl %ebx popl %edi ret SET_SIZE(atomic_and_64_nv) SET_SIZE(atomic_and_64) ENTRY(atomic_cas_8) ALTENTRY(atomic_cas_uchar) movl 4(%esp), %edx movzbl 8(%esp), %eax movb 12(%esp), %cl lock cmpxchgb %cl, (%edx) ret SET_SIZE(atomic_cas_uchar) SET_SIZE(atomic_cas_8) ENTRY(atomic_cas_16) ALTENTRY(atomic_cas_ushort) movl 4(%esp), %edx movzwl 8(%esp), %eax movw 12(%esp), %cx lock cmpxchgw %cx, (%edx) ret SET_SIZE(atomic_cas_ushort) SET_SIZE(atomic_cas_16) ENTRY(atomic_cas_32) ALTENTRY(atomic_cas_uint) ALTENTRY(atomic_cas_ulong) ALTENTRY(atomic_cas_ptr) movl 4(%esp), %edx movl 8(%esp), %eax movl 12(%esp), %ecx lock cmpxchgl %ecx, (%edx) ret SET_SIZE(atomic_cas_ptr) SET_SIZE(atomic_cas_ulong) SET_SIZE(atomic_cas_uint) SET_SIZE(atomic_cas_32) ENTRY(atomic_cas_64) pushl %ebx pushl %esi movl 12(%esp), %esi movl 16(%esp), %eax movl 20(%esp), %edx movl 24(%esp), %ebx movl 28(%esp), %ecx lock cmpxchg8b (%esi) popl %esi popl %ebx ret SET_SIZE(atomic_cas_64) ENTRY(atomic_swap_8) ALTENTRY(atomic_swap_uchar) movl 4(%esp), %edx movzbl 8(%esp), %eax lock xchgb %al, (%edx) ret SET_SIZE(atomic_swap_uchar) SET_SIZE(atomic_swap_8) ENTRY(atomic_swap_16) ALTENTRY(atomic_swap_ushort) movl 4(%esp), %edx movzwl 8(%esp), %eax lock xchgw %ax, (%edx) ret SET_SIZE(atomic_swap_ushort) SET_SIZE(atomic_swap_16) ENTRY(atomic_swap_32) ALTENTRY(atomic_swap_uint) ALTENTRY(atomic_swap_ptr) ALTENTRY(atomic_swap_ulong) movl 4(%esp), %edx movl 8(%esp), %eax lock xchgl %eax, (%edx) ret SET_SIZE(atomic_swap_ulong) SET_SIZE(atomic_swap_ptr) SET_SIZE(atomic_swap_uint) SET_SIZE(atomic_swap_32) ENTRY(atomic_swap_64) pushl %esi pushl %ebx movl 12(%esp), %esi movl 16(%esp), %ebx movl 20(%esp), %ecx movl (%esi), %eax movl 4(%esi), %edx 1: lock cmpxchg8b (%esi) jne 1b popl %ebx popl %esi ret SET_SIZE(atomic_swap_64) ENTRY(atomic_set_long_excl) movl 4(%esp), %edx movl 8(%esp), %ecx xorl %eax, %eax lock btsl %ecx, (%edx) jnc 1f decl %eax 1: ret SET_SIZE(atomic_set_long_excl) ENTRY(atomic_clear_long_excl) movl 4(%esp), %edx movl 8(%esp), %ecx xorl %eax, %eax lock btrl %ecx, (%edx) jc 1f decl %eax 1: ret SET_SIZE(atomic_clear_long_excl) /* * NOTE: membar_enter, membar_exit, membar_producer, and * membar_consumer are all identical routines. We define them * separately, instead of using ALTENTRY definitions to alias them * together, so that DTrace and debuggers will see a unique address * for them, allowing more accurate tracing. */ ENTRY(membar_enter) lock xorl $0, (%esp) ret SET_SIZE(membar_enter) ENTRY(membar_exit) lock xorl $0, (%esp) ret SET_SIZE(membar_exit) ENTRY(membar_producer) lock xorl $0, (%esp) ret SET_SIZE(membar_producer) ENTRY(membar_consumer) lock xorl $0, (%esp) ret SET_SIZE(membar_consumer) #ifdef __ELF__ .section .note.GNU-stack,"",%progbits #endif zfs-0.8.3/lib/libspl/PaxHeaders.151519/gethostid.c0000644000000000000000000000007413607166147017617 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.590493698 zfs-0.8.3/lib/libspl/gethostid.c0000644016037001603700000000425113607166147017616 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2017, Lawrence Livermore National Security, LLC. */ #include #include #include #include #include #include static unsigned long get_spl_hostid(void) { FILE *f; unsigned long hostid; char *env; /* * Allow the hostid to be subverted for testing. */ env = getenv("ZFS_HOSTID"); if (env) { hostid = strtoull(env, NULL, 0); return (hostid & HOSTID_MASK); } f = fopen("/sys/module/spl/parameters/spl_hostid", "r"); if (!f) return (0); if (fscanf(f, "%lu", &hostid) != 1) hostid = 0; fclose(f); return (hostid & HOSTID_MASK); } unsigned long get_system_hostid(void) { unsigned long system_hostid = get_spl_hostid(); /* * We do not use the library call gethostid() because * it generates a hostid value that the kernel is * unaware of, if the spl_hostid module parameter has not * been set and there is no system hostid file (e.g. * /etc/hostid). The kernel and userspace must agree. * See comments above hostid_read() in the SPL. */ if (system_hostid == 0) { int fd, rc; unsigned long hostid; int hostid_size = 4; /* 4 bytes regardless of arch */ fd = open("/etc/hostid", O_RDONLY); if (fd >= 0) { rc = read(fd, &hostid, hostid_size); if (rc > 0) system_hostid = (hostid & HOSTID_MASK); close(fd); } } return (system_hostid); } zfs-0.8.3/lib/libspl/PaxHeaders.151519/asm-x86_640000644000000000000000000000013013612143050017071 xustar000000000000000029 mtime=1579730472.35951839 30 atime=1579730489.074055067 29 ctime=1579730472.35951839 zfs-0.8.3/lib/libspl/asm-x86_64/0000775016037001603700000000000013612143050017154 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/asm-x86_64/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132021223 xustar000000000000000030 atime=1579730430.033159407 30 ctime=1579730472.357518326 zfs-0.8.3/lib/libspl/asm-x86_64/Makefile.am0000644016037001603700000000003213607166132021213 0ustar00hutter2hutter200000000000000noinst_HEADERS = atomic.S zfs-0.8.3/lib/libspl/asm-x86_64/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776021233 xustar000000000000000030 mtime=1579730430.068160531 30 atime=1579730450.841827509 30 ctime=1579730472.360518422 zfs-0.8.3/lib/libspl/asm-x86_64/Makefile.in0000664016037001603700000005514013612142776021244 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib/libspl/asm-x86_64 DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ noinst_HEADERS = atomic.S all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/asm-x86_64/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/asm-x86_64/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/asm-x86_64/PaxHeaders.151519/atomic.S0000644000000000000000000000007413607166147020575 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.355518262 zfs-0.8.3/lib/libspl/asm-x86_64/atomic.S0000644016037001603700000002720013607166147020573 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ .ident "%Z%%M% %I% %E% SMI" .file "%M%" #define _ASM #include ENTRY(atomic_inc_8) ALTENTRY(atomic_inc_uchar) lock incb (%rdi) ret SET_SIZE(atomic_inc_uchar) SET_SIZE(atomic_inc_8) ENTRY(atomic_inc_16) ALTENTRY(atomic_inc_ushort) lock incw (%rdi) ret SET_SIZE(atomic_inc_ushort) SET_SIZE(atomic_inc_16) ENTRY(atomic_inc_32) ALTENTRY(atomic_inc_uint) lock incl (%rdi) ret SET_SIZE(atomic_inc_uint) SET_SIZE(atomic_inc_32) ENTRY(atomic_inc_64) ALTENTRY(atomic_inc_ulong) lock incq (%rdi) ret SET_SIZE(atomic_inc_ulong) SET_SIZE(atomic_inc_64) ENTRY(atomic_inc_8_nv) ALTENTRY(atomic_inc_uchar_nv) movb (%rdi), %al 1: leaq 1(%rax), %rcx lock cmpxchgb %cl, (%rdi) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_inc_uchar_nv) SET_SIZE(atomic_inc_8_nv) ENTRY(atomic_inc_16_nv) ALTENTRY(atomic_inc_ushort_nv) movw (%rdi), %ax 1: leaq 1(%rax), %rcx lock cmpxchgw %cx, (%rdi) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_inc_ushort_nv) SET_SIZE(atomic_inc_16_nv) ENTRY(atomic_inc_32_nv) ALTENTRY(atomic_inc_uint_nv) movl (%rdi), %eax 1: leaq 1(%rax), %rcx lock cmpxchgl %ecx, (%rdi) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_inc_uint_nv) SET_SIZE(atomic_inc_32_nv) ENTRY(atomic_inc_64_nv) ALTENTRY(atomic_inc_ulong_nv) movq (%rdi), %rax 1: leaq 1(%rax), %rcx lock cmpxchgq %rcx, (%rdi) jne 1b movq %rcx, %rax ret SET_SIZE(atomic_inc_ulong_nv) SET_SIZE(atomic_inc_64_nv) ENTRY(atomic_dec_8) ALTENTRY(atomic_dec_uchar) lock decb (%rdi) ret SET_SIZE(atomic_dec_uchar) SET_SIZE(atomic_dec_8) ENTRY(atomic_dec_16) ALTENTRY(atomic_dec_ushort) lock decw (%rdi) ret SET_SIZE(atomic_dec_ushort) SET_SIZE(atomic_dec_16) ENTRY(atomic_dec_32) ALTENTRY(atomic_dec_uint) lock decl (%rdi) ret SET_SIZE(atomic_dec_uint) SET_SIZE(atomic_dec_32) ENTRY(atomic_dec_64) ALTENTRY(atomic_dec_ulong) lock decq (%rdi) ret SET_SIZE(atomic_dec_ulong) SET_SIZE(atomic_dec_64) ENTRY(atomic_dec_8_nv) ALTENTRY(atomic_dec_uchar_nv) movb (%rdi), %al 1: leaq -1(%rax), %rcx lock cmpxchgb %cl, (%rdi) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_dec_uchar_nv) SET_SIZE(atomic_dec_8_nv) ENTRY(atomic_dec_16_nv) ALTENTRY(atomic_dec_ushort_nv) movw (%rdi), %ax 1: leaq -1(%rax), %rcx lock cmpxchgw %cx, (%rdi) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_dec_ushort_nv) SET_SIZE(atomic_dec_16_nv) ENTRY(atomic_dec_32_nv) ALTENTRY(atomic_dec_uint_nv) movl (%rdi), %eax 1: leaq -1(%rax), %rcx lock cmpxchgl %ecx, (%rdi) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_dec_uint_nv) SET_SIZE(atomic_dec_32_nv) ENTRY(atomic_dec_64_nv) ALTENTRY(atomic_dec_ulong_nv) movq (%rdi), %rax 1: leaq -1(%rax), %rcx lock cmpxchgq %rcx, (%rdi) jne 1b movq %rcx, %rax ret SET_SIZE(atomic_dec_ulong_nv) SET_SIZE(atomic_dec_64_nv) ENTRY(atomic_add_8) ALTENTRY(atomic_add_char) lock addb %sil, (%rdi) ret SET_SIZE(atomic_add_char) SET_SIZE(atomic_add_8) ENTRY(atomic_add_16) ALTENTRY(atomic_add_short) lock addw %si, (%rdi) ret SET_SIZE(atomic_add_short) SET_SIZE(atomic_add_16) ENTRY(atomic_add_32) ALTENTRY(atomic_add_int) lock addl %esi, (%rdi) ret SET_SIZE(atomic_add_int) SET_SIZE(atomic_add_32) ENTRY(atomic_add_64) ALTENTRY(atomic_add_ptr) ALTENTRY(atomic_add_long) lock addq %rsi, (%rdi) ret SET_SIZE(atomic_add_long) SET_SIZE(atomic_add_ptr) SET_SIZE(atomic_add_64) ENTRY(atomic_sub_8) ALTENTRY(atomic_sub_char) lock subb %sil, (%rdi) ret SET_SIZE(atomic_sub_char) SET_SIZE(atomic_sub_8) ENTRY(atomic_sub_16) ALTENTRY(atomic_sub_short) lock subw %si, (%rdi) ret SET_SIZE(atomic_sub_short) SET_SIZE(atomic_sub_16) ENTRY(atomic_sub_32) ALTENTRY(atomic_sub_int) lock subl %esi, (%rdi) ret SET_SIZE(atomic_sub_int) SET_SIZE(atomic_sub_32) ENTRY(atomic_sub_64) ALTENTRY(atomic_sub_ptr) ALTENTRY(atomic_sub_long) lock subq %rsi, (%rdi) ret SET_SIZE(atomic_sub_long) SET_SIZE(atomic_sub_ptr) SET_SIZE(atomic_sub_64) ENTRY(atomic_or_8) ALTENTRY(atomic_or_uchar) lock orb %sil, (%rdi) ret SET_SIZE(atomic_or_uchar) SET_SIZE(atomic_or_8) ENTRY(atomic_or_16) ALTENTRY(atomic_or_ushort) lock orw %si, (%rdi) ret SET_SIZE(atomic_or_ushort) SET_SIZE(atomic_or_16) ENTRY(atomic_or_32) ALTENTRY(atomic_or_uint) lock orl %esi, (%rdi) ret SET_SIZE(atomic_or_uint) SET_SIZE(atomic_or_32) ENTRY(atomic_or_64) ALTENTRY(atomic_or_ulong) lock orq %rsi, (%rdi) ret SET_SIZE(atomic_or_ulong) SET_SIZE(atomic_or_64) ENTRY(atomic_and_8) ALTENTRY(atomic_and_uchar) lock andb %sil, (%rdi) ret SET_SIZE(atomic_and_uchar) SET_SIZE(atomic_and_8) ENTRY(atomic_and_16) ALTENTRY(atomic_and_ushort) lock andw %si, (%rdi) ret SET_SIZE(atomic_and_ushort) SET_SIZE(atomic_and_16) ENTRY(atomic_and_32) ALTENTRY(atomic_and_uint) lock andl %esi, (%rdi) ret SET_SIZE(atomic_and_uint) SET_SIZE(atomic_and_32) ENTRY(atomic_and_64) ALTENTRY(atomic_and_ulong) lock andq %rsi, (%rdi) ret SET_SIZE(atomic_and_ulong) SET_SIZE(atomic_and_64) ENTRY(atomic_add_8_nv) ALTENTRY(atomic_add_char_nv) movb (%rdi), %al 1: movb %sil, %cl addb %al, %cl lock cmpxchgb %cl, (%rdi) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_add_char_nv) SET_SIZE(atomic_add_8_nv) ENTRY(atomic_add_16_nv) ALTENTRY(atomic_add_short_nv) movw (%rdi), %ax 1: movw %si, %cx addw %ax, %cx lock cmpxchgw %cx, (%rdi) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_add_short_nv) SET_SIZE(atomic_add_16_nv) ENTRY(atomic_add_32_nv) ALTENTRY(atomic_add_int_nv) movl (%rdi), %eax 1: movl %esi, %ecx addl %eax, %ecx lock cmpxchgl %ecx, (%rdi) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_add_int_nv) SET_SIZE(atomic_add_32_nv) ENTRY(atomic_add_64_nv) ALTENTRY(atomic_add_ptr_nv) ALTENTRY(atomic_add_long_nv) movq (%rdi), %rax 1: movq %rsi, %rcx addq %rax, %rcx lock cmpxchgq %rcx, (%rdi) jne 1b movq %rcx, %rax ret SET_SIZE(atomic_add_long_nv) SET_SIZE(atomic_add_ptr_nv) SET_SIZE(atomic_add_64_nv) ENTRY(atomic_sub_8_nv) ALTENTRY(atomic_sub_char_nv) movb (%rdi), %al 1: movb %sil, %cl subb %al, %cl lock cmpxchgb %cl, (%rdi) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_sub_char_nv) SET_SIZE(atomic_sub_8_nv) ENTRY(atomic_sub_16_nv) ALTENTRY(atomic_sub_short_nv) movw (%rdi), %ax 1: movw %si, %cx subw %ax, %cx lock cmpxchgw %cx, (%rdi) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_sub_short_nv) SET_SIZE(atomic_sub_16_nv) ENTRY(atomic_sub_32_nv) ALTENTRY(atomic_sub_int_nv) movl (%rdi), %eax 1: movl %esi, %ecx subl %eax, %ecx lock cmpxchgl %ecx, (%rdi) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_sub_int_nv) SET_SIZE(atomic_sub_32_nv) ENTRY(atomic_sub_64_nv) ALTENTRY(atomic_sub_ptr_nv) ALTENTRY(atomic_sub_long_nv) movq (%rdi), %rax 1: movq %rsi, %rcx subq %rax, %rcx lock cmpxchgq %rcx, (%rdi) jne 1b movq %rcx, %rax ret SET_SIZE(atomic_sub_long_nv) SET_SIZE(atomic_sub_ptr_nv) SET_SIZE(atomic_sub_64_nv) ENTRY(atomic_and_8_nv) ALTENTRY(atomic_and_uchar_nv) movb (%rdi), %al 1: movb %sil, %cl andb %al, %cl lock cmpxchgb %cl, (%rdi) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_and_uchar_nv) SET_SIZE(atomic_and_8_nv) ENTRY(atomic_and_16_nv) ALTENTRY(atomic_and_ushort_nv) movw (%rdi), %ax 1: movw %si, %cx andw %ax, %cx lock cmpxchgw %cx, (%rdi) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_and_ushort_nv) SET_SIZE(atomic_and_16_nv) ENTRY(atomic_and_32_nv) ALTENTRY(atomic_and_uint_nv) movl (%rdi), %eax 1: movl %esi, %ecx andl %eax, %ecx lock cmpxchgl %ecx, (%rdi) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_and_uint_nv) SET_SIZE(atomic_and_32_nv) ENTRY(atomic_and_64_nv) ALTENTRY(atomic_and_ulong_nv) movq (%rdi), %rax 1: movq %rsi, %rcx andq %rax, %rcx lock cmpxchgq %rcx, (%rdi) jne 1b movq %rcx, %rax ret SET_SIZE(atomic_and_ulong_nv) SET_SIZE(atomic_and_64_nv) ENTRY(atomic_or_8_nv) ALTENTRY(atomic_or_uchar_nv) movb (%rdi), %al 1: movb %sil, %cl orb %al, %cl lock cmpxchgb %cl, (%rdi) jne 1b movzbl %cl, %eax ret SET_SIZE(atomic_and_uchar_nv) SET_SIZE(atomic_and_8_nv) ENTRY(atomic_or_16_nv) ALTENTRY(atomic_or_ushort_nv) movw (%rdi), %ax 1: movw %si, %cx orw %ax, %cx lock cmpxchgw %cx, (%rdi) jne 1b movzwl %cx, %eax ret SET_SIZE(atomic_or_ushort_nv) SET_SIZE(atomic_or_16_nv) ENTRY(atomic_or_32_nv) ALTENTRY(atomic_or_uint_nv) movl (%rdi), %eax 1: movl %esi, %ecx orl %eax, %ecx lock cmpxchgl %ecx, (%rdi) jne 1b movl %ecx, %eax ret SET_SIZE(atomic_or_uint_nv) SET_SIZE(atomic_or_32_nv) ENTRY(atomic_or_64_nv) ALTENTRY(atomic_or_ulong_nv) movq (%rdi), %rax 1: movq %rsi, %rcx orq %rax, %rcx lock cmpxchgq %rcx, (%rdi) jne 1b movq %rcx, %rax ret SET_SIZE(atomic_or_ulong_nv) SET_SIZE(atomic_or_64_nv) ENTRY(atomic_cas_8) ALTENTRY(atomic_cas_uchar) movzbl %sil, %eax lock cmpxchgb %dl, (%rdi) ret SET_SIZE(atomic_cas_uchar) SET_SIZE(atomic_cas_8) ENTRY(atomic_cas_16) ALTENTRY(atomic_cas_ushort) movzwl %si, %eax lock cmpxchgw %dx, (%rdi) ret SET_SIZE(atomic_cas_ushort) SET_SIZE(atomic_cas_16) ENTRY(atomic_cas_32) ALTENTRY(atomic_cas_uint) movl %esi, %eax lock cmpxchgl %edx, (%rdi) ret SET_SIZE(atomic_cas_uint) SET_SIZE(atomic_cas_32) ENTRY(atomic_cas_64) ALTENTRY(atomic_cas_ulong) ALTENTRY(atomic_cas_ptr) movq %rsi, %rax lock cmpxchgq %rdx, (%rdi) ret SET_SIZE(atomic_cas_ptr) SET_SIZE(atomic_cas_ulong) SET_SIZE(atomic_cas_64) ENTRY(atomic_swap_8) ALTENTRY(atomic_swap_uchar) movzbl %sil, %eax lock xchgb %al, (%rdi) ret SET_SIZE(atomic_swap_uchar) SET_SIZE(atomic_swap_8) ENTRY(atomic_swap_16) ALTENTRY(atomic_swap_ushort) movzwl %si, %eax lock xchgw %ax, (%rdi) ret SET_SIZE(atomic_swap_ushort) SET_SIZE(atomic_swap_16) ENTRY(atomic_swap_32) ALTENTRY(atomic_swap_uint) movl %esi, %eax lock xchgl %eax, (%rdi) ret SET_SIZE(atomic_swap_uint) SET_SIZE(atomic_swap_32) ENTRY(atomic_swap_64) ALTENTRY(atomic_swap_ulong) ALTENTRY(atomic_swap_ptr) movq %rsi, %rax lock xchgq %rax, (%rdi) ret SET_SIZE(atomic_swap_ptr) SET_SIZE(atomic_swap_ulong) SET_SIZE(atomic_swap_64) ENTRY(atomic_set_long_excl) xorl %eax, %eax lock btsq %rsi, (%rdi) jnc 1f decl %eax 1: ret SET_SIZE(atomic_set_long_excl) ENTRY(atomic_clear_long_excl) xorl %eax, %eax lock btrq %rsi, (%rdi) jc 1f decl %eax 1: ret SET_SIZE(atomic_clear_long_excl) /* * NOTE: membar_enter, and membar_exit are identical routines. * We define them separately, instead of using an ALTENTRY * definitions to alias them together, so that DTrace and * debuggers will see a unique address for them, allowing * more accurate tracing. */ ENTRY(membar_enter) mfence ret SET_SIZE(membar_enter) ENTRY(membar_exit) mfence ret SET_SIZE(membar_exit) ENTRY(membar_producer) sfence ret SET_SIZE(membar_producer) ENTRY(membar_consumer) lfence ret SET_SIZE(membar_consumer) #ifdef __ELF__ .section .note.GNU-stack,"",%progbits #endif zfs-0.8.3/lib/libspl/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775017516 xustar000000000000000030 mtime=1579730429.913155554 30 atime=1579730450.750824587 30 ctime=1579730471.585493538 zfs-0.8.3/lib/libspl/Makefile.in0000664016037001603700000010703513612142775017530 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libspl ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = libspl_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_1 = getexecname.lo gethostid.lo getmntany.lo list.lo \ mkdirp.lo page.lo strlcat.lo strlcpy.lo timestamp.lo zone.lo am__objects_2 = atomic.lo nodist_libspl_la_OBJECTS = $(am__objects_1) $(am__objects_2) libspl_la_OBJECTS = $(nodist_libspl_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CCASFLAGS) $(CCASFLAGS) AM_V_CPPAS = $(am__v_CPPAS_$(V)) am__v_CPPAS_ = $(am__v_CPPAS_$(AM_DEFAULT_VERBOSITY)) am__v_CPPAS_0 = @echo " CPPAS " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libspl_la_SOURCES) DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" VPATH = \ $(top_srcdir)/lib/libspl \ $(top_srcdir)/lib/libspl/$(TARGET_ASM_DIR) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) $(LIBTIRPC_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) SUBDIRS = include $(TARGET_ASM_DIR) DIST_SUBDIRS = include asm-generic asm-i386 asm-x86_64 AM_CCASFLAGS = \ $(CFLAGS) noinst_LTLIBRARIES = libspl.la USER_C = \ getexecname.c \ gethostid.c \ getmntany.c \ list.c \ mkdirp.c \ page.c \ strlcat.c \ strlcpy.c \ timestamp.c \ zone.c \ include/sys/list.h \ include/sys/list_impl.h USER_ASM = atomic.S nodist_libspl_la_SOURCES = \ $(USER_C) \ $(USER_ASM) libspl_la_LIBADD = -lrt $(LIBTIRPC_LIBS) EXTRA_DIST = $(USER_C) all: all-recursive .SUFFIXES: .SUFFIXES: .S .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libspl.la: $(libspl_la_OBJECTS) $(libspl_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libspl_la_OBJECTS) $(libspl_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getexecname.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gethostid.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getmntany.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdirp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/page.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strlcat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strlcpy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timestamp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zone.Plo@am__quote@ .S.o: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ $< .S.obj: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .S.lo: @am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCCAS_FALSE@ $(AM_V_CPPAS) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCCAS_FALSE@ $(LTCPPASCOMPILE) -c -o $@ $< .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(LTLIBRARIES) installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/PaxHeaders.151519/asm-generic0000644000000000000000000000013213612143050017551 xustar000000000000000030 mtime=1579730472.256515083 30 atime=1579730489.074055067 30 ctime=1579730472.256515083 zfs-0.8.3/lib/libspl/asm-generic/0000775016037001603700000000000013612143050017632 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libspl/asm-generic/PaxHeaders.151519/atomic.c0000644000000000000000000000007413612141513021255 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.256515083 zfs-0.8.3/lib/libspl/asm-generic/atomic.c0000644016037001603700000002756313612141513021267 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2009 by Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include /* * All operations are implemented by serializing them through a global * pthread mutex. This provides a correct generic implementation. * However all supported architectures are encouraged to provide a * native implementation is assembly for performance reasons. */ pthread_mutex_t atomic_lock = PTHREAD_MUTEX_INITIALIZER; /* * These are the void returning variants */ /* BEGIN CSTYLED */ #define ATOMIC_INC(name, type) \ void atomic_inc_##name(volatile type *target) \ { \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ (*target)++; \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ } ATOMIC_INC(long, unsigned long) ATOMIC_INC(8, uint8_t) ATOMIC_INC(uchar, uchar_t) ATOMIC_INC(16, uint16_t) ATOMIC_INC(ushort, ushort_t) ATOMIC_INC(32, uint32_t) ATOMIC_INC(uint, uint_t) ATOMIC_INC(ulong, ulong_t) ATOMIC_INC(64, uint64_t) #define ATOMIC_DEC(name, type) \ void atomic_dec_##name(volatile type *target) \ { \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ (*target)--; \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ } ATOMIC_DEC(long, unsigned long) ATOMIC_DEC(8, uint8_t) ATOMIC_DEC(uchar, uchar_t) ATOMIC_DEC(16, uint16_t) ATOMIC_DEC(ushort, ushort_t) ATOMIC_DEC(32, uint32_t) ATOMIC_DEC(uint, uint_t) ATOMIC_DEC(ulong, ulong_t) ATOMIC_DEC(64, uint64_t) #define ATOMIC_ADD(name, type1, type2) \ void atomic_add_##name(volatile type1 *target, type2 bits) \ { \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ *target += bits; \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ } ATOMIC_ADD(8, uint8_t, int8_t) ATOMIC_ADD(char, uchar_t, signed char) ATOMIC_ADD(16, uint16_t, int16_t) ATOMIC_ADD(short, ushort_t, short) ATOMIC_ADD(32, uint32_t, int32_t) ATOMIC_ADD(int, uint_t, int) ATOMIC_ADD(long, ulong_t, long) ATOMIC_ADD(64, uint64_t, int64_t) void atomic_add_ptr(volatile void *target, ssize_t bits) { VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); *(caddr_t *)target += bits; VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); } #define ATOMIC_SUB(name, type1, type2) \ void atomic_sub_##name(volatile type1 *target, type2 bits) \ { \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ *target -= bits; \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ } ATOMIC_SUB(8, uint8_t, int8_t) ATOMIC_SUB(char, uchar_t, signed char) ATOMIC_SUB(16, uint16_t, int16_t) ATOMIC_SUB(short, ushort_t, short) ATOMIC_SUB(32, uint32_t, int32_t) ATOMIC_SUB(int, uint_t, int) ATOMIC_SUB(long, ulong_t, long) ATOMIC_SUB(64, uint64_t, int64_t) void atomic_sub_ptr(volatile void *target, ssize_t bits) { VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); *(caddr_t *)target -= bits; VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); } #define ATOMIC_OR(name, type) \ void atomic_or_##name(volatile type *target, type bits) \ { \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ *target |= bits; \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ } ATOMIC_OR(8, uint8_t) ATOMIC_OR(uchar, uchar_t) ATOMIC_OR(16, uint16_t) ATOMIC_OR(ushort, ushort_t) ATOMIC_OR(32, uint32_t) ATOMIC_OR(uint, uint_t) ATOMIC_OR(ulong, ulong_t) ATOMIC_OR(64, uint64_t) #define ATOMIC_AND(name, type) \ void atomic_and_##name(volatile type *target, type bits) \ { \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ *target &= bits; \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ } ATOMIC_AND(8, uint8_t) ATOMIC_AND(uchar, uchar_t) ATOMIC_AND(16, uint16_t) ATOMIC_AND(ushort, ushort_t) ATOMIC_AND(32, uint32_t) ATOMIC_AND(uint, uint_t) ATOMIC_AND(ulong, ulong_t) ATOMIC_AND(64, uint64_t) /* * New value returning variants */ #define ATOMIC_INC_NV(name, type) \ type atomic_inc_##name##_nv(volatile type *target) \ { \ type rc; \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ rc = (++(*target)); \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ return (rc); \ } ATOMIC_INC_NV(long, unsigned long) ATOMIC_INC_NV(8, uint8_t) ATOMIC_INC_NV(uchar, uchar_t) ATOMIC_INC_NV(16, uint16_t) ATOMIC_INC_NV(ushort, ushort_t) ATOMIC_INC_NV(32, uint32_t) ATOMIC_INC_NV(uint, uint_t) ATOMIC_INC_NV(ulong, ulong_t) ATOMIC_INC_NV(64, uint64_t) #define ATOMIC_DEC_NV(name, type) \ type atomic_dec_##name##_nv(volatile type *target) \ { \ type rc; \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ rc = (--(*target)); \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ return (rc); \ } ATOMIC_DEC_NV(long, unsigned long) ATOMIC_DEC_NV(8, uint8_t) ATOMIC_DEC_NV(uchar, uchar_t) ATOMIC_DEC_NV(16, uint16_t) ATOMIC_DEC_NV(ushort, ushort_t) ATOMIC_DEC_NV(32, uint32_t) ATOMIC_DEC_NV(uint, uint_t) ATOMIC_DEC_NV(ulong, ulong_t) ATOMIC_DEC_NV(64, uint64_t) #define ATOMIC_ADD_NV(name, type1, type2) \ type1 atomic_add_##name##_nv(volatile type1 *target, type2 bits)\ { \ type1 rc; \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ rc = (*target += bits); \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ return (rc); \ } ATOMIC_ADD_NV(8, uint8_t, int8_t) ATOMIC_ADD_NV(char, uchar_t, signed char) ATOMIC_ADD_NV(16, uint16_t, int16_t) ATOMIC_ADD_NV(short, ushort_t, short) ATOMIC_ADD_NV(32, uint32_t, int32_t) ATOMIC_ADD_NV(int, uint_t, int) ATOMIC_ADD_NV(long, ulong_t, long) ATOMIC_ADD_NV(64, uint64_t, int64_t) void * atomic_add_ptr_nv(volatile void *target, ssize_t bits) { void *ptr; VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); ptr = (*(caddr_t *)target += bits); VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); return (ptr); } #define ATOMIC_SUB_NV(name, type1, type2) \ type1 atomic_sub_##name##_nv(volatile type1 *target, type2 bits)\ { \ type1 rc; \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ rc = (*target -= bits); \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ return (rc); \ } ATOMIC_SUB_NV(8, uint8_t, int8_t) ATOMIC_SUB_NV(char, uchar_t, signed char) ATOMIC_SUB_NV(16, uint16_t, int16_t) ATOMIC_SUB_NV(short, ushort_t, short) ATOMIC_SUB_NV(32, uint32_t, int32_t) ATOMIC_SUB_NV(int, uint_t, int) ATOMIC_SUB_NV(long, ulong_t, long) ATOMIC_SUB_NV(64, uint64_t, int64_t) void * atomic_sub_ptr_nv(volatile void *target, ssize_t bits) { void *ptr; VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); ptr = (*(caddr_t *)target -= bits); VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); return (ptr); } #define ATOMIC_OR_NV(name, type) \ type atomic_or_##name##_nv(volatile type *target, type bits) \ { \ type rc; \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ rc = (*target |= bits); \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ return (rc); \ } ATOMIC_OR_NV(long, unsigned long) ATOMIC_OR_NV(8, uint8_t) ATOMIC_OR_NV(uchar, uchar_t) ATOMIC_OR_NV(16, uint16_t) ATOMIC_OR_NV(ushort, ushort_t) ATOMIC_OR_NV(32, uint32_t) ATOMIC_OR_NV(uint, uint_t) ATOMIC_OR_NV(ulong, ulong_t) ATOMIC_OR_NV(64, uint64_t) #define ATOMIC_AND_NV(name, type) \ type atomic_and_##name##_nv(volatile type *target, type bits) \ { \ type rc; \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ rc = (*target &= bits); \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ return (rc); \ } ATOMIC_AND_NV(long, unsigned long) ATOMIC_AND_NV(8, uint8_t) ATOMIC_AND_NV(uchar, uchar_t) ATOMIC_AND_NV(16, uint16_t) ATOMIC_AND_NV(ushort, ushort_t) ATOMIC_AND_NV(32, uint32_t) ATOMIC_AND_NV(uint, uint_t) ATOMIC_AND_NV(ulong, ulong_t) ATOMIC_AND_NV(64, uint64_t) /* * If *arg1 == arg2, set *arg1 = arg3; return old value */ #define ATOMIC_CAS(name, type) \ type atomic_cas_##name(volatile type *target, type arg1, type arg2) \ { \ type old; \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ old = *target; \ if (old == arg1) \ *target = arg2; \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ return (old); \ } ATOMIC_CAS(8, uint8_t) ATOMIC_CAS(uchar, uchar_t) ATOMIC_CAS(16, uint16_t) ATOMIC_CAS(ushort, ushort_t) ATOMIC_CAS(32, uint32_t) ATOMIC_CAS(uint, uint_t) ATOMIC_CAS(ulong, ulong_t) ATOMIC_CAS(64, uint64_t) void * atomic_cas_ptr(volatile void *target, void *arg1, void *arg2) { void *old; VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); old = *(void **)target; if (old == arg1) *(void **)target = arg2; VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); return (old); } /* * Swap target and return old value */ #define ATOMIC_SWAP(name, type) \ type atomic_swap_##name(volatile type *target, type bits) \ { \ type old; \ VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); \ old = *target; \ *target = bits; \ VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); \ return (old); \ } ATOMIC_SWAP(8, uint8_t) ATOMIC_SWAP(uchar, uchar_t) ATOMIC_SWAP(16, uint16_t) ATOMIC_SWAP(ushort, ushort_t) ATOMIC_SWAP(32, uint32_t) ATOMIC_SWAP(uint, uint_t) ATOMIC_SWAP(ulong, ulong_t) ATOMIC_SWAP(64, uint64_t) /* END CSTYLED */ void * atomic_swap_ptr(volatile void *target, void *bits) { void *old; VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); old = *(void **)target; *(void **)target = bits; VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); return (old); } int atomic_set_long_excl(volatile ulong_t *target, uint_t value) { ulong_t bit; VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); bit = (1UL << value); if ((*target & bit) != 0) { VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); return (-1); } *target |= bit; VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); return (0); } int atomic_clear_long_excl(volatile ulong_t *target, uint_t value) { ulong_t bit; VERIFY3S(pthread_mutex_lock(&atomic_lock), ==, 0); bit = (1UL << value); if ((*target & bit) != 0) { VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); return (-1); } *target &= ~bit; VERIFY3S(pthread_mutex_unlock(&atomic_lock), ==, 0); return (0); } void membar_enter(void) { /* XXX - Implement me */ } void membar_exit(void) { /* XXX - Implement me */ } void membar_producer(void) { /* XXX - Implement me */ } void membar_consumer(void) { /* XXX - Implement me */ } /* Legacy kernel interfaces; they will go away (eventually). */ uint8_t cas8(uint8_t *target, uint8_t arg1, uint8_t arg2) { return (atomic_cas_8(target, arg1, arg2)); } uint32_t cas32(uint32_t *target, uint32_t arg1, uint32_t arg2) { return (atomic_cas_32(target, arg1, arg2)); } uint64_t cas64(uint64_t *target, uint64_t arg1, uint64_t arg2) { return (atomic_cas_64(target, arg1, arg2)); } ulong_t caslong(ulong_t *target, ulong_t arg1, ulong_t arg2) { return (atomic_cas_ulong(target, arg1, arg2)); } void * casptr(void *target, void *arg1, void *arg2) { return (atomic_cas_ptr(target, arg1, arg2)); } void atomic_and_long(ulong_t *target, ulong_t bits) { return (atomic_and_ulong(target, bits)); } void atomic_or_long(ulong_t *target, ulong_t bits) { return (atomic_or_ulong(target, bits)); } zfs-0.8.3/lib/libspl/asm-generic/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147021707 xustar000000000000000030 atime=1579730429.930156099 30 ctime=1579730472.251514923 zfs-0.8.3/lib/libspl/asm-generic/Makefile.am0000644016037001603700000000071313607166147021705 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am DEFAULT_INCLUDES += \ -I$(top_srcdir)/lib/libspl/include atomic_SOURCE = atomic.c atomic_ASM = atomic.S COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -fPIC EXTRA_DIST = $(atomic_SOURCE) # Generates assembly to simplify inclusion in ../Makefile.am all-am: $(COMPILE) -c -S $(atomic_SOURCE) -o $(atomic_ASM) clean-generic: $(RM) $(atomic_ASM) zfs-0.8.3/lib/libspl/asm-generic/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775021710 xustar000000000000000030 mtime=1579730429.965157223 30 atime=1579730450.781825581 30 ctime=1579730472.254515019 zfs-0.8.3/lib/libspl/asm-generic/Makefile.in0000664016037001603700000005367013612142775021727 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libspl/asm-generic ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) atomic_SOURCE = atomic.c atomic_ASM = atomic.S COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -fPIC EXTRA_DIST = $(atomic_SOURCE) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libspl/asm-generic/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libspl/asm-generic/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Generates assembly to simplify inclusion in ../Makefile.am all-am: $(COMPILE) -c -S $(atomic_SOURCE) -o $(atomic_ASM) clean-generic: $(RM) $(atomic_ASM) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libspl/PaxHeaders.151519/page.c0000644000000000000000000000007413607166132016533 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.598493957 zfs-0.8.3/lib/libspl/page.c0000644016037001603700000000174113607166132016533 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #include size_t pagesize = 0; size_t spl_pagesize(void) { if (pagesize == 0) pagesize = sysconf(_SC_PAGESIZE); return (pagesize); } zfs-0.8.3/lib/PaxHeaders.151519/libshare0000644000000000000000000000013213612143047015671 xustar000000000000000030 mtime=1579730471.527491675 30 atime=1579730489.074055067 30 ctime=1579730471.527491675 zfs-0.8.3/lib/libshare/0000775016037001603700000000000013612143047015752 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libshare/PaxHeaders.151519/libshare_impl.h0000644000000000000000000000007413607166132020742 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.516491323 zfs-0.8.3/lib/libshare/libshare_impl.h0000644016037001603700000000376713607166132020754 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 Gunnar Beutner */ struct sa_handle_impl; typedef struct sa_share_fsinfo { boolean_t active; char *resource; char *shareopts; } sa_share_fsinfo_t; typedef struct sa_share_impl { struct sa_share_impl *next; struct sa_handle_impl *handle; char *sharepath; char *dataset; sa_share_fsinfo_t *fsinfo; /* per-fstype information */ } *sa_share_impl_t; #define FSINFO(impl_share, fstype) (&(impl_share->fsinfo[fstype->fsinfo_index])) typedef struct sa_share_ops { int (*enable_share)(sa_share_impl_t share); int (*disable_share)(sa_share_impl_t share); int (*validate_shareopts)(const char *shareopts); int (*update_shareopts)(sa_share_impl_t impl_share, const char *resource, const char *shareopts); void (*clear_shareopts)(sa_share_impl_t impl_share); } sa_share_ops_t; typedef struct sa_fstype { struct sa_fstype *next; const char *name; const sa_share_ops_t *ops; int fsinfo_index; } sa_fstype_t; typedef struct sa_handle_impl { libzfs_handle_t *zfs_libhandle; sa_share_impl_t shares; } *sa_handle_impl_t; sa_fstype_t *register_fstype(const char *name, const sa_share_ops_t *ops); zfs-0.8.3/lib/libshare/PaxHeaders.151519/smb.h0000644000000000000000000000007413607166132016711 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.527491675 zfs-0.8.3/lib/libshare/smb.h0000644016037001603700000000271213607166132016710 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2011 Turbo Fredriksson . */ /* * The maximum SMB share name seems to be 254 characters, though good * references are hard to find. */ #define SMB_NAME_MAX 255 #define SMB_COMMENT_MAX 255 #define SHARE_DIR "/var/lib/samba/usershares" #define NET_CMD_PATH "/usr/bin/net" #define NET_CMD_ARG_HOST "127.0.0.1" typedef struct smb_share_s { char name[SMB_NAME_MAX]; /* Share name */ char path[PATH_MAX]; /* Share path */ char comment[SMB_COMMENT_MAX]; /* Share's comment */ boolean_t guest_ok; /* 'y' or 'n' */ struct smb_share_s *next; } smb_share_t; smb_share_t *smb_shares; void libshare_smb_init(void); zfs-0.8.3/lib/libshare/PaxHeaders.151519/libshare.c0000644000000000000000000000007413607166132017714 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.518491387 zfs-0.8.3/lib/libshare/libshare.c0000644016037001603700000004120013607166132017706 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 Gunnar Beutner */ #include #include #include #include #include #include #include #include #include #include #include "libshare_impl.h" #include "nfs.h" #include "smb.h" static sa_share_impl_t find_share(sa_handle_impl_t handle, const char *sharepath); static sa_share_impl_t alloc_share(const char *sharepath); static void free_share(sa_share_impl_t share); static void parse_sharetab(sa_handle_impl_t impl_handle); static int process_share(sa_handle_impl_t impl_handle, sa_share_impl_t impl_share, char *pathname, char *resource, char *fstype, char *options, char *description, char *dataset, boolean_t from_sharetab); static void update_sharetab(sa_handle_impl_t impl_handle); static int update_zfs_share(sa_share_impl_t impl_handle, const char *proto); static int update_zfs_shares(sa_handle_impl_t impl_handle, const char *proto); static int fstypes_count; static sa_fstype_t *fstypes; sa_fstype_t * register_fstype(const char *name, const sa_share_ops_t *ops) { sa_fstype_t *fstype; fstype = calloc(1, sizeof (sa_fstype_t)); if (fstype == NULL) return (NULL); fstype->name = name; fstype->ops = ops; fstype->fsinfo_index = fstypes_count; fstypes_count++; fstype->next = fstypes; fstypes = fstype; return (fstype); } sa_handle_t sa_init(int init_service) { sa_handle_impl_t impl_handle; impl_handle = calloc(1, sizeof (struct sa_handle_impl)); if (impl_handle == NULL) return (NULL); impl_handle->zfs_libhandle = libzfs_init(); if (impl_handle->zfs_libhandle != NULL) { libzfs_print_on_error(impl_handle->zfs_libhandle, B_TRUE); } parse_sharetab(impl_handle); update_zfs_shares(impl_handle, NULL); return ((sa_handle_t)impl_handle); } __attribute__((constructor)) static void libshare_init(void) { libshare_nfs_init(); libshare_smb_init(); } static void parse_sharetab(sa_handle_impl_t impl_handle) { FILE *fp; char line[512]; char *eol, *pathname, *resource, *fstype, *options, *description; fp = fopen(ZFS_SHARETAB, "r"); if (fp == NULL) return; while (fgets(line, sizeof (line), fp) != NULL) { eol = line + strlen(line) - 1; while (eol >= line) { if (*eol != '\r' && *eol != '\n') break; *eol = '\0'; eol--; } pathname = line; if ((resource = strchr(pathname, '\t')) == NULL) continue; *resource = '\0'; resource++; if ((fstype = strchr(resource, '\t')) == NULL) continue; *fstype = '\0'; fstype++; if ((options = strchr(fstype, '\t')) == NULL) continue; *options = '\0'; options++; if ((description = strchr(fstype, '\t')) != NULL) { *description = '\0'; description++; } if (strcmp(resource, "-") == 0) resource = NULL; (void) process_share(impl_handle, NULL, pathname, resource, fstype, options, description, NULL, B_TRUE); } fclose(fp); } static void update_sharetab(sa_handle_impl_t impl_handle) { sa_share_impl_t impl_share; int temp_fd; FILE *temp_fp; char tempfile[] = ZFS_SHARETAB".XXXXXX"; sa_fstype_t *fstype; const char *resource; if (mkdir("/etc/dfs", 0755) < 0 && errno != EEXIST) { return; } temp_fd = mkstemp(tempfile); if (temp_fd < 0) return; temp_fp = fdopen(temp_fd, "w"); if (temp_fp == NULL) return; impl_share = impl_handle->shares; while (impl_share != NULL) { fstype = fstypes; while (fstype != NULL) { if (FSINFO(impl_share, fstype)->active && FSINFO(impl_share, fstype)->shareopts != NULL) { resource = FSINFO(impl_share, fstype)->resource; if (resource == NULL) resource = "-"; fprintf(temp_fp, "%s\t%s\t%s\t%s\n", impl_share->sharepath, resource, fstype->name, FSINFO(impl_share, fstype)->shareopts); } fstype = fstype->next; } impl_share = impl_share->next; } fflush(temp_fp); fsync(temp_fd); fclose(temp_fp); (void) rename(tempfile, ZFS_SHARETAB); } typedef struct update_cookie_s { sa_handle_impl_t handle; const char *proto; } update_cookie_t; static int update_zfs_shares_cb(zfs_handle_t *zhp, void *pcookie) { update_cookie_t *udata = (update_cookie_t *)pcookie; char mountpoint[ZFS_MAXPROPLEN]; char shareopts[ZFS_MAXPROPLEN]; char *dataset; zfs_type_t type = zfs_get_type(zhp); if (type == ZFS_TYPE_FILESYSTEM && zfs_iter_filesystems(zhp, update_zfs_shares_cb, pcookie) != 0) { zfs_close(zhp); return (1); } if (type != ZFS_TYPE_FILESYSTEM) { zfs_close(zhp); return (0); } if (zfs_prop_get(zhp, ZFS_PROP_MOUNTPOINT, mountpoint, sizeof (mountpoint), NULL, NULL, 0, B_FALSE) != 0) { zfs_close(zhp); return (0); } dataset = (char *)zfs_get_name(zhp); if (dataset == NULL) { zfs_close(zhp); return (0); } if (!zfs_is_mounted(zhp, NULL)) { zfs_close(zhp); return (0); } if ((udata->proto == NULL || strcmp(udata->proto, "nfs") == 0) && zfs_prop_get(zhp, ZFS_PROP_SHARENFS, shareopts, sizeof (shareopts), NULL, NULL, 0, B_FALSE) == 0 && strcmp(shareopts, "off") != 0) { (void) process_share(udata->handle, NULL, mountpoint, NULL, "nfs", shareopts, NULL, dataset, B_FALSE); } if ((udata->proto == NULL || strcmp(udata->proto, "smb") == 0) && zfs_prop_get(zhp, ZFS_PROP_SHARESMB, shareopts, sizeof (shareopts), NULL, NULL, 0, B_FALSE) == 0 && strcmp(shareopts, "off") != 0) { (void) process_share(udata->handle, NULL, mountpoint, NULL, "smb", shareopts, NULL, dataset, B_FALSE); } zfs_close(zhp); return (0); } static int update_zfs_share(sa_share_impl_t impl_share, const char *proto) { sa_handle_impl_t impl_handle = impl_share->handle; zfs_handle_t *zhp; update_cookie_t udata; if (impl_handle->zfs_libhandle == NULL) return (SA_SYSTEM_ERR); assert(impl_share->dataset != NULL); zhp = zfs_open(impl_share->handle->zfs_libhandle, impl_share->dataset, ZFS_TYPE_FILESYSTEM); if (zhp == NULL) return (SA_SYSTEM_ERR); udata.handle = impl_handle; udata.proto = proto; (void) update_zfs_shares_cb(zhp, &udata); return (SA_OK); } static int update_zfs_shares(sa_handle_impl_t impl_handle, const char *proto) { update_cookie_t udata; if (impl_handle->zfs_libhandle == NULL) return (SA_SYSTEM_ERR); udata.handle = impl_handle; udata.proto = proto; (void) zfs_iter_root(impl_handle->zfs_libhandle, update_zfs_shares_cb, &udata); return (SA_OK); } static int process_share(sa_handle_impl_t impl_handle, sa_share_impl_t impl_share, char *pathname, char *resource, char *proto, char *options, char *description, char *dataset, boolean_t from_sharetab) { struct stat statbuf; int rc; char *resource_dup = NULL, *dataset_dup = NULL; boolean_t new_share; sa_fstype_t *fstype; new_share = B_FALSE; if (impl_share == NULL) impl_share = find_share(impl_handle, pathname); if (impl_share == NULL) { if (lstat(pathname, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode)) return (SA_BAD_PATH); impl_share = alloc_share(pathname); if (impl_share == NULL) { rc = SA_NO_MEMORY; goto err; } new_share = B_TRUE; } if (dataset != NULL) { dataset_dup = strdup(dataset); if (dataset_dup == NULL) { rc = SA_NO_MEMORY; goto err; } } free(impl_share->dataset); impl_share->dataset = dataset_dup; rc = SA_INVALID_PROTOCOL; fstype = fstypes; while (fstype != NULL) { if (strcmp(fstype->name, proto) == 0) { if (resource != NULL) { resource_dup = strdup(resource); if (resource_dup == NULL) { rc = SA_NO_MEMORY; goto err; } } free(FSINFO(impl_share, fstype)->resource); FSINFO(impl_share, fstype)->resource = resource_dup; rc = fstype->ops->update_shareopts(impl_share, resource, options); if (rc == SA_OK && from_sharetab) FSINFO(impl_share, fstype)->active = B_TRUE; break; } fstype = fstype->next; } if (rc != SA_OK) goto err; if (new_share) { impl_share->handle = impl_handle; impl_share->next = impl_handle->shares; impl_handle->shares = impl_share; } err: if (rc != SA_OK) { if (new_share) free_share(impl_share); } return (rc); } void sa_fini(sa_handle_t handle) { sa_handle_impl_t impl_handle = (sa_handle_impl_t)handle; sa_share_impl_t impl_share, next; sa_share_impl_t *pcurr; if (impl_handle == NULL) return; /* * clean up shares which don't have a non-NULL dataset property, * which means they're in sharetab but we couldn't find their * ZFS dataset. */ pcurr = &(impl_handle->shares); impl_share = *pcurr; while (impl_share != NULL) { next = impl_share->next; if (impl_share->dataset == NULL) { /* remove item from the linked list */ *pcurr = next; sa_disable_share(impl_share, NULL); free_share(impl_share); } else { pcurr = &(impl_share->next); } impl_share = next; } update_sharetab(impl_handle); if (impl_handle->zfs_libhandle != NULL) libzfs_fini(impl_handle->zfs_libhandle); impl_share = impl_handle->shares; while (impl_share != NULL) { next = impl_share->next; free_share(impl_share); impl_share = next; } free(impl_handle); } static sa_share_impl_t find_share(sa_handle_impl_t impl_handle, const char *sharepath) { sa_share_impl_t impl_share; impl_share = impl_handle->shares; while (impl_share != NULL) { if (strcmp(impl_share->sharepath, sharepath) == 0) { break; } impl_share = impl_share->next; } return (impl_share); } sa_share_t sa_find_share(sa_handle_t handle, char *sharepath) { return ((sa_share_t)find_share((sa_handle_impl_t)handle, sharepath)); } int sa_enable_share(sa_share_t share, char *protocol) { sa_share_impl_t impl_share = (sa_share_impl_t)share; int rc, ret = SA_OK; boolean_t found_protocol = B_FALSE; sa_fstype_t *fstype; fstype = fstypes; while (fstype != NULL) { if (protocol == NULL || strcmp(fstype->name, protocol) == 0) { update_zfs_share(impl_share, fstype->name); rc = fstype->ops->enable_share(impl_share); if (rc != SA_OK) ret = rc; else FSINFO(impl_share, fstype)->active = B_TRUE; found_protocol = B_TRUE; } fstype = fstype->next; } update_sharetab(impl_share->handle); return (found_protocol ? ret : SA_INVALID_PROTOCOL); } int sa_disable_share(sa_share_t share, char *protocol) { sa_share_impl_t impl_share = (sa_share_impl_t)share; int rc, ret = SA_OK; boolean_t found_protocol = B_FALSE; sa_fstype_t *fstype; fstype = fstypes; while (fstype != NULL) { if (protocol == NULL || strcmp(fstype->name, protocol) == 0) { rc = fstype->ops->disable_share(impl_share); if (rc == SA_OK) { fstype->ops->clear_shareopts(impl_share); FSINFO(impl_share, fstype)->active = B_FALSE; } else ret = rc; found_protocol = B_TRUE; } fstype = fstype->next; } update_sharetab(impl_share->handle); return (found_protocol ? ret : SA_INVALID_PROTOCOL); } /* * sa_errorstr(err) * * convert an error value to an error string */ char * sa_errorstr(int err) { static char errstr[32]; char *ret = NULL; switch (err) { case SA_OK: ret = dgettext(TEXT_DOMAIN, "ok"); break; case SA_NO_SUCH_PATH: ret = dgettext(TEXT_DOMAIN, "path doesn't exist"); break; case SA_NO_MEMORY: ret = dgettext(TEXT_DOMAIN, "no memory"); break; case SA_DUPLICATE_NAME: ret = dgettext(TEXT_DOMAIN, "name in use"); break; case SA_BAD_PATH: ret = dgettext(TEXT_DOMAIN, "bad path"); break; case SA_NO_SUCH_GROUP: ret = dgettext(TEXT_DOMAIN, "no such group"); break; case SA_CONFIG_ERR: ret = dgettext(TEXT_DOMAIN, "configuration error"); break; case SA_SYSTEM_ERR: ret = dgettext(TEXT_DOMAIN, "system error"); break; case SA_SYNTAX_ERR: ret = dgettext(TEXT_DOMAIN, "syntax error"); break; case SA_NO_PERMISSION: ret = dgettext(TEXT_DOMAIN, "no permission"); break; case SA_BUSY: ret = dgettext(TEXT_DOMAIN, "busy"); break; case SA_NO_SUCH_PROP: ret = dgettext(TEXT_DOMAIN, "no such property"); break; case SA_INVALID_NAME: ret = dgettext(TEXT_DOMAIN, "invalid name"); break; case SA_INVALID_PROTOCOL: ret = dgettext(TEXT_DOMAIN, "invalid protocol"); break; case SA_NOT_ALLOWED: ret = dgettext(TEXT_DOMAIN, "operation not allowed"); break; case SA_BAD_VALUE: ret = dgettext(TEXT_DOMAIN, "bad property value"); break; case SA_INVALID_SECURITY: ret = dgettext(TEXT_DOMAIN, "invalid security type"); break; case SA_NO_SUCH_SECURITY: ret = dgettext(TEXT_DOMAIN, "security type not found"); break; case SA_VALUE_CONFLICT: ret = dgettext(TEXT_DOMAIN, "property value conflict"); break; case SA_NOT_IMPLEMENTED: ret = dgettext(TEXT_DOMAIN, "not implemented"); break; case SA_INVALID_PATH: ret = dgettext(TEXT_DOMAIN, "invalid path"); break; case SA_NOT_SUPPORTED: ret = dgettext(TEXT_DOMAIN, "operation not supported"); break; case SA_PROP_SHARE_ONLY: ret = dgettext(TEXT_DOMAIN, "property not valid for group"); break; case SA_NOT_SHARED: ret = dgettext(TEXT_DOMAIN, "not shared"); break; case SA_NO_SUCH_RESOURCE: ret = dgettext(TEXT_DOMAIN, "no such resource"); break; case SA_RESOURCE_REQUIRED: ret = dgettext(TEXT_DOMAIN, "resource name required"); break; case SA_MULTIPLE_ERROR: ret = dgettext(TEXT_DOMAIN, "errors from multiple protocols"); break; case SA_PATH_IS_SUBDIR: ret = dgettext(TEXT_DOMAIN, "path is a subpath of share"); break; case SA_PATH_IS_PARENTDIR: ret = dgettext(TEXT_DOMAIN, "path is parent of a share"); break; case SA_NO_SECTION: ret = dgettext(TEXT_DOMAIN, "protocol requires a section"); break; case SA_NO_PROPERTIES: ret = dgettext(TEXT_DOMAIN, "properties not found"); break; case SA_NO_SUCH_SECTION: ret = dgettext(TEXT_DOMAIN, "section not found"); break; case SA_PASSWORD_ENC: ret = dgettext(TEXT_DOMAIN, "passwords must be encrypted"); break; case SA_SHARE_EXISTS: ret = dgettext(TEXT_DOMAIN, "path or file is already shared"); break; default: (void) snprintf(errstr, sizeof (errstr), dgettext(TEXT_DOMAIN, "unknown %d"), err); ret = errstr; } return (ret); } int sa_parse_legacy_options(sa_group_t group, char *options, char *proto) { sa_fstype_t *fstype; fstype = fstypes; while (fstype != NULL) { if (strcmp(fstype->name, proto) != 0) { fstype = fstype->next; continue; } return (fstype->ops->validate_shareopts(options)); } return (SA_INVALID_PROTOCOL); } boolean_t sa_needs_refresh(sa_handle_t handle) { return (B_TRUE); } libzfs_handle_t * sa_get_zfs_handle(sa_handle_t handle) { sa_handle_impl_t impl_handle = (sa_handle_impl_t)handle; if (impl_handle == NULL) return (NULL); return (impl_handle->zfs_libhandle); } static sa_share_impl_t alloc_share(const char *sharepath) { sa_share_impl_t impl_share; impl_share = calloc(1, sizeof (struct sa_share_impl)); if (impl_share == NULL) return (NULL); impl_share->sharepath = strdup(sharepath); if (impl_share->sharepath == NULL) { free(impl_share); return (NULL); } impl_share->fsinfo = calloc(fstypes_count, sizeof (sa_share_fsinfo_t)); if (impl_share->fsinfo == NULL) { free(impl_share->sharepath); free(impl_share); return (NULL); } return (impl_share); } static void free_share(sa_share_impl_t impl_share) { sa_fstype_t *fstype; fstype = fstypes; while (fstype != NULL) { fstype->ops->clear_shareopts(impl_share); free(FSINFO(impl_share, fstype)->resource); fstype = fstype->next; } free(impl_share->sharepath); free(impl_share->dataset); free(impl_share->fsinfo); free(impl_share); } int sa_zfs_process_share(sa_handle_t handle, sa_group_t group, sa_share_t share, char *mountpoint, char *proto, zprop_source_t source, char *shareopts, char *sourcestr, char *dataset) { sa_handle_impl_t impl_handle = (sa_handle_impl_t)handle; sa_share_impl_t impl_share = (sa_share_impl_t)share; return (process_share(impl_handle, impl_share, mountpoint, NULL, proto, shareopts, NULL, dataset, B_FALSE)); } void sa_update_sharetab_ts(sa_handle_t handle) { sa_handle_impl_t impl_handle = (sa_handle_impl_t)handle; update_sharetab(impl_handle); } zfs-0.8.3/lib/libshare/PaxHeaders.151519/smb.c0000644000000000000000000000007413612141513016674 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.525491611 zfs-0.8.3/lib/libshare/smb.c0000644016037001603700000002461513612141513016701 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011,2012 Turbo Fredriksson , based on nfs.c * by Gunnar Beutner * * This is an addition to the zfs device driver to add, modify and remove SMB * shares using the 'net share' command that comes with Samba. * * TESTING * Make sure that samba listens to 'localhost' (127.0.0.1) and that the options * 'usershare max shares' and 'usershare owner only' have been reviewed/set * accordingly (see zfs(8) for information). * * Once configuration in samba have been done, test that this * works with the following three commands (in this case, my ZFS * filesystem is called 'share/Test1'): * * (root)# net -U root -S 127.0.0.1 usershare add Test1 /share/Test1 \ * "Comment: /share/Test1" "Everyone:F" * (root)# net usershare list | grep -i test * (root)# net -U root -S 127.0.0.1 usershare delete Test1 * * The first command will create a user share that gives everyone full access. * To limit the access below that, use normal UNIX commands (chmod, chown etc). */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "libshare_impl.h" #include "smb.h" static boolean_t smb_available(void); static sa_fstype_t *smb_fstype; /* * Retrieve the list of SMB shares. */ static int smb_retrieve_shares(void) { int rc = SA_OK; char file_path[PATH_MAX], line[512], *token, *key, *value; char *dup_value = NULL, *path = NULL, *comment = NULL, *name = NULL; char *guest_ok = NULL; DIR *shares_dir; FILE *share_file_fp = NULL; struct dirent *directory; struct stat eStat; smb_share_t *shares, *new_shares = NULL; /* opendir(), stat() */ shares_dir = opendir(SHARE_DIR); if (shares_dir == NULL) return (SA_SYSTEM_ERR); /* Go through the directory, looking for shares */ while ((directory = readdir(shares_dir))) { if (directory->d_name[0] == '.') continue; snprintf(file_path, sizeof (file_path), "%s/%s", SHARE_DIR, directory->d_name); if (stat(file_path, &eStat) == -1) { rc = SA_SYSTEM_ERR; goto out; } if (!S_ISREG(eStat.st_mode)) continue; if ((share_file_fp = fopen(file_path, "r")) == NULL) { rc = SA_SYSTEM_ERR; goto out; } name = strdup(directory->d_name); if (name == NULL) { rc = SA_NO_MEMORY; goto out; } while (fgets(line, sizeof (line), share_file_fp)) { if (line[0] == '#') continue; /* Trim trailing new-line character(s). */ while (line[strlen(line) - 1] == '\r' || line[strlen(line) - 1] == '\n') line[strlen(line) - 1] = '\0'; /* Split the line in two, separated by '=' */ token = strchr(line, '='); if (token == NULL) continue; key = line; value = token + 1; *token = '\0'; dup_value = strdup(value); if (dup_value == NULL) { rc = SA_NO_MEMORY; goto out; } if (strcmp(key, "path") == 0) { free(path); path = dup_value; } else if (strcmp(key, "comment") == 0) { free(comment); comment = dup_value; } else if (strcmp(key, "guest_ok") == 0) { free(guest_ok); guest_ok = dup_value; } else free(dup_value); dup_value = NULL; if (path == NULL || comment == NULL || guest_ok == NULL) continue; /* Incomplete share definition */ else { shares = (smb_share_t *) malloc(sizeof (smb_share_t)); if (shares == NULL) { rc = SA_NO_MEMORY; goto out; } (void) strlcpy(shares->name, name, sizeof (shares->name)); (void) strlcpy(shares->path, path, sizeof (shares->path)); (void) strlcpy(shares->comment, comment, sizeof (shares->comment)); shares->guest_ok = atoi(guest_ok); shares->next = new_shares; new_shares = shares; free(path); free(comment); free(guest_ok); path = NULL; comment = NULL; guest_ok = NULL; } } out: if (share_file_fp != NULL) { fclose(share_file_fp); share_file_fp = NULL; } free(name); free(path); free(comment); free(guest_ok); name = NULL; path = NULL; comment = NULL; guest_ok = NULL; } closedir(shares_dir); smb_shares = new_shares; return (rc); } /* * Used internally by smb_enable_share to enable sharing for a single host. */ static int smb_enable_share_one(const char *sharename, const char *sharepath) { char *argv[10], *pos; char name[SMB_NAME_MAX], comment[SMB_COMMENT_MAX]; int rc; /* Support ZFS share name regexp '[[:alnum:]_-.: ]' */ strlcpy(name, sharename, sizeof (name)); name [sizeof (name)-1] = '\0'; pos = name; while (*pos != '\0') { switch (*pos) { case '/': case '-': case ':': case ' ': *pos = '_'; } ++pos; } /* * CMD: net -S NET_CMD_ARG_HOST usershare add Test1 /share/Test1 \ * "Comment" "Everyone:F" */ snprintf(comment, sizeof (comment), "Comment: %s", sharepath); argv[0] = NET_CMD_PATH; argv[1] = (char *)"-S"; argv[2] = NET_CMD_ARG_HOST; argv[3] = (char *)"usershare"; argv[4] = (char *)"add"; argv[5] = (char *)name; argv[6] = (char *)sharepath; argv[7] = (char *)comment; argv[8] = "Everyone:F"; argv[9] = NULL; rc = libzfs_run_process(argv[0], argv, 0); if (rc < 0) return (SA_SYSTEM_ERR); /* Reload the share file */ (void) smb_retrieve_shares(); return (SA_OK); } /* * Enables SMB sharing for the specified share. */ static int smb_enable_share(sa_share_impl_t impl_share) { char *shareopts; if (!smb_available()) return (SA_SYSTEM_ERR); shareopts = FSINFO(impl_share, smb_fstype)->shareopts; if (shareopts == NULL) /* on/off */ return (SA_SYSTEM_ERR); if (strcmp(shareopts, "off") == 0) return (SA_OK); /* Magic: Enable (i.e., 'create new') share */ return (smb_enable_share_one(impl_share->dataset, impl_share->sharepath)); } /* * Used internally by smb_disable_share to disable sharing for a single host. */ static int smb_disable_share_one(const char *sharename) { int rc; char *argv[7]; /* CMD: net -S NET_CMD_ARG_HOST usershare delete Test1 */ argv[0] = NET_CMD_PATH; argv[1] = (char *)"-S"; argv[2] = NET_CMD_ARG_HOST; argv[3] = (char *)"usershare"; argv[4] = (char *)"delete"; argv[5] = strdup(sharename); argv[6] = NULL; rc = libzfs_run_process(argv[0], argv, 0); if (rc < 0) return (SA_SYSTEM_ERR); else return (SA_OK); } /* * Disables SMB sharing for the specified share. */ static int smb_disable_share(sa_share_impl_t impl_share) { smb_share_t *shares = smb_shares; if (!smb_available()) { /* * The share can't possibly be active, so nothing * needs to be done to disable it. */ return (SA_OK); } while (shares != NULL) { if (strcmp(impl_share->sharepath, shares->path) == 0) return (smb_disable_share_one(shares->name)); shares = shares->next; } return (SA_OK); } /* * Checks whether the specified SMB share options are syntactically correct. */ static int smb_validate_shareopts(const char *shareopts) { /* TODO: Accept 'name' and sec/acl (?) */ if ((strcmp(shareopts, "off") == 0) || (strcmp(shareopts, "on") == 0)) return (SA_OK); return (SA_SYNTAX_ERR); } /* * Checks whether a share is currently active. */ static boolean_t smb_is_share_active(sa_share_impl_t impl_share) { smb_share_t *iter = smb_shares; if (!smb_available()) return (B_FALSE); /* Retrieve the list of (possible) active shares */ smb_retrieve_shares(); while (iter != NULL) { if (strcmp(impl_share->sharepath, iter->path) == 0) return (B_TRUE); iter = iter->next; } return (B_FALSE); } /* * Called to update a share's options. A share's options might be out of * date if the share was loaded from disk and the "sharesmb" dataset * property has changed in the meantime. This function also takes care * of re-enabling the share if necessary. */ static int smb_update_shareopts(sa_share_impl_t impl_share, const char *resource, const char *shareopts) { char *shareopts_dup; boolean_t needs_reshare = B_FALSE; char *old_shareopts; if (!impl_share) return (SA_SYSTEM_ERR); FSINFO(impl_share, smb_fstype)->active = smb_is_share_active(impl_share); old_shareopts = FSINFO(impl_share, smb_fstype)->shareopts; if (FSINFO(impl_share, smb_fstype)->active && old_shareopts != NULL && strcmp(old_shareopts, shareopts) != 0) { needs_reshare = B_TRUE; smb_disable_share(impl_share); } shareopts_dup = strdup(shareopts); if (shareopts_dup == NULL) return (SA_NO_MEMORY); if (old_shareopts != NULL) free(old_shareopts); FSINFO(impl_share, smb_fstype)->shareopts = shareopts_dup; if (needs_reshare) smb_enable_share(impl_share); return (SA_OK); } /* * Clears a share's SMB options. Used by libshare to * clean up shares that are about to be free()'d. */ static void smb_clear_shareopts(sa_share_impl_t impl_share) { free(FSINFO(impl_share, smb_fstype)->shareopts); FSINFO(impl_share, smb_fstype)->shareopts = NULL; } static const sa_share_ops_t smb_shareops = { .enable_share = smb_enable_share, .disable_share = smb_disable_share, .validate_shareopts = smb_validate_shareopts, .update_shareopts = smb_update_shareopts, .clear_shareopts = smb_clear_shareopts, }; /* * Provides a convenient wrapper for determining SMB availability */ static boolean_t smb_available(void) { struct stat statbuf; if (lstat(SHARE_DIR, &statbuf) != 0 || !S_ISDIR(statbuf.st_mode)) return (B_FALSE); if (access(NET_CMD_PATH, F_OK) != 0) return (B_FALSE); return (B_TRUE); } /* * Initializes the SMB functionality of libshare. */ void libshare_smb_init(void) { smb_fstype = register_fstype("smb", &smb_shareops); } zfs-0.8.3/lib/libshare/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020021 xustar000000000000000030 atime=1579730429.780151283 30 ctime=1579730471.511491162 zfs-0.8.3/lib/libshare/Makefile.am0000644016037001603700000000045513607166147020022 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include noinst_LTLIBRARIES = libshare.la USER_C = \ libshare_impl.h \ libshare.c \ nfs.c \ nfs.h \ smb.c \ smb.h nodist_libshare_la_SOURCES = $(USER_C) EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libshare/PaxHeaders.151519/nfs.c0000644000000000000000000000007413612141517016705 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.520491451 zfs-0.8.3/lib/libshare/nfs.c0000644016037001603700000003775613612141517016724 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 Gunnar Beutner * Copyright (c) 2012 Cyril Plisko. All rights reserved. */ #include #include #include #include #include #include #include #include #include #include "libshare_impl.h" static boolean_t nfs_available(void); static sa_fstype_t *nfs_fstype; /* * nfs_exportfs_temp_fd refers to a temporary copy of the output * from exportfs -v. */ static int nfs_exportfs_temp_fd = -1; typedef int (*nfs_shareopt_callback_t)(const char *opt, const char *value, void *cookie); typedef int (*nfs_host_callback_t)(const char *sharepath, const char *host, const char *security, const char *access, void *cookie); /* * Invokes the specified callback function for each Solaris share option * listed in the specified string. */ static int foreach_nfs_shareopt(const char *shareopts, nfs_shareopt_callback_t callback, void *cookie) { char *shareopts_dup, *opt, *cur, *value; int was_nul, rc; if (shareopts == NULL) return (SA_OK); shareopts_dup = strdup(shareopts); if (shareopts_dup == NULL) return (SA_NO_MEMORY); opt = shareopts_dup; was_nul = 0; while (1) { cur = opt; while (*cur != ',' && *cur != '\0') cur++; if (*cur == '\0') was_nul = 1; *cur = '\0'; if (cur > opt) { value = strchr(opt, '='); if (value != NULL) { *value = '\0'; value++; } rc = callback(opt, value, cookie); if (rc != SA_OK) { free(shareopts_dup); return (rc); } } opt = cur + 1; if (was_nul) break; } free(shareopts_dup); return (0); } typedef struct nfs_host_cookie_s { nfs_host_callback_t callback; const char *sharepath; void *cookie; const char *security; } nfs_host_cookie_t; /* * Helper function for foreach_nfs_host. This function checks whether the * current share option is a host specification and invokes a callback * function with information about the host. */ static int foreach_nfs_host_cb(const char *opt, const char *value, void *pcookie) { int rc; const char *access; char *host_dup, *host, *next; nfs_host_cookie_t *udata = (nfs_host_cookie_t *)pcookie; #ifdef DEBUG fprintf(stderr, "foreach_nfs_host_cb: key=%s, value=%s\n", opt, value); #endif if (strcmp(opt, "sec") == 0) udata->security = value; if (strcmp(opt, "rw") == 0 || strcmp(opt, "ro") == 0) { if (value == NULL) value = "*"; access = opt; host_dup = strdup(value); if (host_dup == NULL) return (SA_NO_MEMORY); host = host_dup; do { next = strchr(host, ':'); if (next != NULL) { *next = '\0'; next++; } rc = udata->callback(udata->sharepath, host, udata->security, access, udata->cookie); if (rc != SA_OK) { free(host_dup); return (rc); } host = next; } while (host != NULL); free(host_dup); } return (SA_OK); } /* * Invokes a callback function for all NFS hosts that are set for a share. */ static int foreach_nfs_host(sa_share_impl_t impl_share, nfs_host_callback_t callback, void *cookie) { nfs_host_cookie_t udata; char *shareopts; udata.callback = callback; udata.sharepath = impl_share->sharepath; udata.cookie = cookie; udata.security = "sys"; shareopts = FSINFO(impl_share, nfs_fstype)->shareopts; return foreach_nfs_shareopt(shareopts, foreach_nfs_host_cb, &udata); } /* * Converts a Solaris NFS host specification to its Linux equivalent. */ static int get_linux_hostspec(const char *solaris_hostspec, char **plinux_hostspec) { /* * For now we just support CIDR masks (e.g. @192.168.0.0/16) and host * wildcards (e.g. *.example.org). */ if (solaris_hostspec[0] == '@') { /* * Solaris host specifier, e.g. @192.168.0.0/16; we just need * to skip the @ in this case */ *plinux_hostspec = strdup(solaris_hostspec + 1); } else { *plinux_hostspec = strdup(solaris_hostspec); } if (*plinux_hostspec == NULL) { return (SA_NO_MEMORY); } return (SA_OK); } /* * Used internally by nfs_enable_share to enable sharing for a single host. */ static int nfs_enable_share_one(const char *sharepath, const char *host, const char *security, const char *access, void *pcookie) { int rc; char *linuxhost, *hostpath, *opts; const char *linux_opts = (const char *)pcookie; char *argv[6]; /* exportfs -i -o sec=XX,rX, : */ rc = get_linux_hostspec(host, &linuxhost); if (rc < 0) exit(1); hostpath = malloc(strlen(linuxhost) + 1 + strlen(sharepath) + 1); if (hostpath == NULL) { free(linuxhost); exit(1); } sprintf(hostpath, "%s:%s", linuxhost, sharepath); free(linuxhost); if (linux_opts == NULL) linux_opts = ""; opts = malloc(4 + strlen(security) + 4 + strlen(linux_opts) + 1); if (opts == NULL) exit(1); sprintf(opts, "sec=%s,%s,%s", security, access, linux_opts); #ifdef DEBUG fprintf(stderr, "sharing %s with opts %s\n", hostpath, opts); #endif argv[0] = "/usr/sbin/exportfs"; argv[1] = "-i"; argv[2] = "-o"; argv[3] = opts; argv[4] = hostpath; argv[5] = NULL; rc = libzfs_run_process(argv[0], argv, 0); free(hostpath); free(opts); if (rc < 0) return (SA_SYSTEM_ERR); else return (SA_OK); } /* * Adds a Linux share option to an array of NFS options. */ static int add_linux_shareopt(char **plinux_opts, const char *key, const char *value) { size_t len = 0; char *new_linux_opts; if (*plinux_opts != NULL) len = strlen(*plinux_opts); new_linux_opts = realloc(*plinux_opts, len + 1 + strlen(key) + (value ? 1 + strlen(value) : 0) + 1); if (new_linux_opts == NULL) return (SA_NO_MEMORY); new_linux_opts[len] = '\0'; if (len > 0) strcat(new_linux_opts, ","); strcat(new_linux_opts, key); if (value != NULL) { strcat(new_linux_opts, "="); strcat(new_linux_opts, value); } *plinux_opts = new_linux_opts; return (SA_OK); } /* * Validates and converts a single Solaris share option to its Linux * equivalent. */ static int get_linux_shareopts_cb(const char *key, const char *value, void *cookie) { char **plinux_opts = (char **)cookie; /* host-specific options, these are taken care of elsewhere */ if (strcmp(key, "ro") == 0 || strcmp(key, "rw") == 0 || strcmp(key, "sec") == 0) return (SA_OK); if (strcmp(key, "anon") == 0) key = "anonuid"; if (strcmp(key, "root_mapping") == 0) { (void) add_linux_shareopt(plinux_opts, "root_squash", NULL); key = "anonuid"; } if (strcmp(key, "nosub") == 0) key = "subtree_check"; if (strcmp(key, "insecure") != 0 && strcmp(key, "secure") != 0 && strcmp(key, "async") != 0 && strcmp(key, "sync") != 0 && strcmp(key, "no_wdelay") != 0 && strcmp(key, "wdelay") != 0 && strcmp(key, "nohide") != 0 && strcmp(key, "hide") != 0 && strcmp(key, "crossmnt") != 0 && strcmp(key, "no_subtree_check") != 0 && strcmp(key, "subtree_check") != 0 && strcmp(key, "insecure_locks") != 0 && strcmp(key, "secure_locks") != 0 && strcmp(key, "no_auth_nlm") != 0 && strcmp(key, "auth_nlm") != 0 && strcmp(key, "no_acl") != 0 && strcmp(key, "mountpoint") != 0 && strcmp(key, "mp") != 0 && strcmp(key, "fsuid") != 0 && strcmp(key, "refer") != 0 && strcmp(key, "replicas") != 0 && strcmp(key, "root_squash") != 0 && strcmp(key, "no_root_squash") != 0 && strcmp(key, "all_squash") != 0 && strcmp(key, "no_all_squash") != 0 && strcmp(key, "fsid") != 0 && strcmp(key, "anonuid") != 0 && strcmp(key, "anongid") != 0) { return (SA_SYNTAX_ERR); } (void) add_linux_shareopt(plinux_opts, key, value); return (SA_OK); } /* * Takes a string containing Solaris share options (e.g. "sync,no_acl") and * converts them to a NULL-terminated array of Linux NFS options. */ static int get_linux_shareopts(const char *shareopts, char **plinux_opts) { int rc; assert(plinux_opts != NULL); *plinux_opts = NULL; /* no_subtree_check - Default as of nfs-utils v1.1.0 */ (void) add_linux_shareopt(plinux_opts, "no_subtree_check", NULL); /* mountpoint - Restrict exports to ZFS mountpoints */ (void) add_linux_shareopt(plinux_opts, "mountpoint", NULL); rc = foreach_nfs_shareopt(shareopts, get_linux_shareopts_cb, plinux_opts); if (rc != SA_OK) { free(*plinux_opts); *plinux_opts = NULL; } return (rc); } /* * Enables NFS sharing for the specified share. */ static int nfs_enable_share(sa_share_impl_t impl_share) { char *shareopts, *linux_opts; int rc; if (!nfs_available()) { return (SA_SYSTEM_ERR); } shareopts = FSINFO(impl_share, nfs_fstype)->shareopts; if (shareopts == NULL) return (SA_OK); rc = get_linux_shareopts(shareopts, &linux_opts); if (rc != SA_OK) return (rc); rc = foreach_nfs_host(impl_share, nfs_enable_share_one, linux_opts); free(linux_opts); return (rc); } /* * Used internally by nfs_disable_share to disable sharing for a single host. */ static int nfs_disable_share_one(const char *sharepath, const char *host, const char *security, const char *access, void *cookie) { int rc; char *linuxhost, *hostpath; char *argv[4]; rc = get_linux_hostspec(host, &linuxhost); if (rc < 0) exit(1); hostpath = malloc(strlen(linuxhost) + 1 + strlen(sharepath) + 1); if (hostpath == NULL) { free(linuxhost); exit(1); } sprintf(hostpath, "%s:%s", linuxhost, sharepath); free(linuxhost); #ifdef DEBUG fprintf(stderr, "unsharing %s\n", hostpath); #endif argv[0] = "/usr/sbin/exportfs"; argv[1] = "-u"; argv[2] = hostpath; argv[3] = NULL; rc = libzfs_run_process(argv[0], argv, 0); free(hostpath); if (rc < 0) return (SA_SYSTEM_ERR); else return (SA_OK); } /* * Disables NFS sharing for the specified share. */ static int nfs_disable_share(sa_share_impl_t impl_share) { if (!nfs_available()) { /* * The share can't possibly be active, so nothing * needs to be done to disable it. */ return (SA_OK); } return (foreach_nfs_host(impl_share, nfs_disable_share_one, NULL)); } /* * Checks whether the specified NFS share options are syntactically correct. */ static int nfs_validate_shareopts(const char *shareopts) { char *linux_opts; int rc; rc = get_linux_shareopts(shareopts, &linux_opts); if (rc != SA_OK) return (rc); free(linux_opts); return (SA_OK); } /* * Checks whether a share is currently active. */ static boolean_t nfs_is_share_active(sa_share_impl_t impl_share) { int fd; char line[512]; char *tab, *cur; FILE *nfs_exportfs_temp_fp; if (!nfs_available()) return (B_FALSE); if ((fd = dup(nfs_exportfs_temp_fd)) == -1) return (B_FALSE); nfs_exportfs_temp_fp = fdopen(fd, "r"); if (nfs_exportfs_temp_fp == NULL) return (B_FALSE); if (fseek(nfs_exportfs_temp_fp, 0, SEEK_SET) < 0) { fclose(nfs_exportfs_temp_fp); return (B_FALSE); } while (fgets(line, sizeof (line), nfs_exportfs_temp_fp) != NULL) { /* * exportfs uses separate lines for the share path * and the export options when the share path is longer * than a certain amount of characters; this ignores * the option lines */ if (line[0] == '\t') continue; tab = strchr(line, '\t'); if (tab != NULL) { *tab = '\0'; cur = tab - 1; } else { /* * there's no tab character, which means the * NFS options are on a separate line; we just * need to remove the new-line character * at the end of the line */ cur = line + strlen(line) - 1; } /* remove trailing spaces and new-line characters */ while (cur >= line && (*cur == ' ' || *cur == '\n')) *cur-- = '\0'; if (strcmp(line, impl_share->sharepath) == 0) { fclose(nfs_exportfs_temp_fp); return (B_TRUE); } } fclose(nfs_exportfs_temp_fp); return (B_FALSE); } /* * Called to update a share's options. A share's options might be out of * date if the share was loaded from disk (i.e. /etc/dfs/sharetab) and the * "sharenfs" dataset property has changed in the meantime. This function * also takes care of re-enabling the share if necessary. */ static int nfs_update_shareopts(sa_share_impl_t impl_share, const char *resource, const char *shareopts) { char *shareopts_dup; boolean_t needs_reshare = B_FALSE; char *old_shareopts; FSINFO(impl_share, nfs_fstype)->active = nfs_is_share_active(impl_share); old_shareopts = FSINFO(impl_share, nfs_fstype)->shareopts; if (strcmp(shareopts, "on") == 0) shareopts = "rw,crossmnt"; if (FSINFO(impl_share, nfs_fstype)->active && old_shareopts != NULL && strcmp(old_shareopts, shareopts) != 0) { needs_reshare = B_TRUE; nfs_disable_share(impl_share); } shareopts_dup = strdup(shareopts); if (shareopts_dup == NULL) return (SA_NO_MEMORY); if (old_shareopts != NULL) free(old_shareopts); FSINFO(impl_share, nfs_fstype)->shareopts = shareopts_dup; if (needs_reshare) nfs_enable_share(impl_share); return (SA_OK); } /* * Clears a share's NFS options. Used by libshare to * clean up shares that are about to be free()'d. */ static void nfs_clear_shareopts(sa_share_impl_t impl_share) { free(FSINFO(impl_share, nfs_fstype)->shareopts); FSINFO(impl_share, nfs_fstype)->shareopts = NULL; } static const sa_share_ops_t nfs_shareops = { .enable_share = nfs_enable_share, .disable_share = nfs_disable_share, .validate_shareopts = nfs_validate_shareopts, .update_shareopts = nfs_update_shareopts, .clear_shareopts = nfs_clear_shareopts, }; /* * nfs_check_exportfs() checks that the exportfs command runs * and also maintains a temporary copy of the output from * exportfs -v. * To update this temporary copy simply call this function again. * * TODO : Use /var/lib/nfs/etab instead of our private copy. * But must implement locking to prevent concurrent access. * * TODO : The temporary file descriptor is never closed since * there is no libshare_nfs_fini() function. */ static int nfs_check_exportfs(void) { pid_t pid; int rc, status; static char nfs_exportfs_tempfile[] = "/tmp/exportfs.XXXXXX"; /* * Close any existing temporary copies of output from exportfs. * We have already called unlink() so file will be deleted. */ if (nfs_exportfs_temp_fd >= 0) close(nfs_exportfs_temp_fd); nfs_exportfs_temp_fd = mkstemp(nfs_exportfs_tempfile); if (nfs_exportfs_temp_fd < 0) return (SA_SYSTEM_ERR); unlink(nfs_exportfs_tempfile); (void) fcntl(nfs_exportfs_temp_fd, F_SETFD, FD_CLOEXEC); pid = fork(); if (pid < 0) { (void) close(nfs_exportfs_temp_fd); nfs_exportfs_temp_fd = -1; return (SA_SYSTEM_ERR); } if (pid > 0) { while ((rc = waitpid(pid, &status, 0)) <= 0 && errno == EINTR) { } if (rc <= 0) { (void) close(nfs_exportfs_temp_fd); nfs_exportfs_temp_fd = -1; return (SA_SYSTEM_ERR); } if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { (void) close(nfs_exportfs_temp_fd); nfs_exportfs_temp_fd = -1; return (SA_CONFIG_ERR); } return (SA_OK); } /* child */ /* exportfs -v */ if (dup2(nfs_exportfs_temp_fd, STDOUT_FILENO) < 0) exit(1); rc = execlp("/usr/sbin/exportfs", "exportfs", "-v", NULL); if (rc < 0) { exit(1); } exit(0); } /* * Provides a convenient wrapper for determining nfs availability */ static boolean_t nfs_available(void) { if (nfs_exportfs_temp_fd == -1) (void) nfs_check_exportfs(); return ((nfs_exportfs_temp_fd != -1) ? B_TRUE : B_FALSE); } /* * Initializes the NFS functionality of libshare. */ void libshare_nfs_init(void) { nfs_fstype = register_fstype("nfs", &nfs_shareops); } zfs-0.8.3/lib/libshare/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775020022 xustar000000000000000030 mtime=1579730429.833152985 30 atime=1579730451.487848251 30 ctime=1579730471.513491227 zfs-0.8.3/lib/libshare/Makefile.in0000664016037001603700000006611313612142775020035 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libshare ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libshare_la_LIBADD = am__objects_1 = libshare.lo nfs.lo smb.lo nodist_libshare_la_OBJECTS = $(am__objects_1) libshare_la_OBJECTS = $(nodist_libshare_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libshare_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) noinst_LTLIBRARIES = libshare.la USER_C = \ libshare_impl.h \ libshare.c \ nfs.c \ nfs.h \ smb.c \ smb.h nodist_libshare_la_SOURCES = $(USER_C) EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libshare/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libshare/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libshare.la: $(libshare_la_OBJECTS) $(libshare_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libshare_la_OBJECTS) $(libshare_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshare.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nfs.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/smb.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/libshare/PaxHeaders.151519/nfs.h0000644000000000000000000000007413607166132016716 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.522491515 zfs-0.8.3/lib/libshare/nfs.h0000644016037001603700000000172013607166132016713 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011 Gunnar Beutner */ void libshare_nfs_init(void); zfs-0.8.3/lib/PaxHeaders.151519/libuutil0000644000000000000000000000013213612143050015723 xustar000000000000000030 mtime=1579730472.618526707 30 atime=1579730489.075055099 30 ctime=1579730472.618526707 zfs-0.8.3/lib/libuutil/0000775016037001603700000000000013612143050016004 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_avl.c0000644000000000000000000000007413607166132017456 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.603526225 zfs-0.8.3/lib/libuutil/uu_avl.c0000644016037001603700000003314313607166132017457 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include "libuutil_common.h" #include #include #include #include static uu_avl_pool_t uu_null_apool = { &uu_null_apool, &uu_null_apool }; static pthread_mutex_t uu_apool_list_lock = PTHREAD_MUTEX_INITIALIZER; /* * The index mark change on every insert and delete, to catch stale * references. * * We leave the low bit alone, since the avl code uses it. */ #define INDEX_MAX (sizeof (uintptr_t) - 2) #define INDEX_NEXT(m) (((m) == INDEX_MAX)? 2 : ((m) + 2) & INDEX_MAX) #define INDEX_DECODE(i) ((i) & ~INDEX_MAX) #define INDEX_ENCODE(p, n) (((n) & ~INDEX_MAX) | (p)->ua_index) #define INDEX_VALID(p, i) (((i) & INDEX_MAX) == (p)->ua_index) #define INDEX_CHECK(i) (((i) & INDEX_MAX) != 0) /* * When an element is inactive (not in a tree), we keep a marked pointer to * its containing pool in its first word, and a NULL pointer in its second. * * On insert, we use these to verify that it comes from the correct pool. */ #define NODE_ARRAY(p, n) ((uintptr_t *)((uintptr_t)(n) + \ (pp)->uap_nodeoffset)) #define POOL_TO_MARKER(pp) (((uintptr_t)(pp) | 1)) #define DEAD_MARKER 0xc4 uu_avl_pool_t * uu_avl_pool_create(const char *name, size_t objsize, size_t nodeoffset, uu_compare_fn_t *compare_func, uint32_t flags) { uu_avl_pool_t *pp, *next, *prev; if (name == NULL || uu_check_name(name, UU_NAME_DOMAIN) == -1 || nodeoffset + sizeof (uu_avl_node_t) > objsize || compare_func == NULL) { uu_set_error(UU_ERROR_INVALID_ARGUMENT); return (NULL); } if (flags & ~UU_AVL_POOL_DEBUG) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (NULL); } pp = uu_zalloc(sizeof (uu_avl_pool_t)); if (pp == NULL) { uu_set_error(UU_ERROR_NO_MEMORY); return (NULL); } (void) strlcpy(pp->uap_name, name, sizeof (pp->uap_name)); pp->uap_nodeoffset = nodeoffset; pp->uap_objsize = objsize; pp->uap_cmp = compare_func; if (flags & UU_AVL_POOL_DEBUG) pp->uap_debug = 1; pp->uap_last_index = 0; (void) pthread_mutex_init(&pp->uap_lock, NULL); pp->uap_null_avl.ua_next_enc = UU_PTR_ENCODE(&pp->uap_null_avl); pp->uap_null_avl.ua_prev_enc = UU_PTR_ENCODE(&pp->uap_null_avl); (void) pthread_mutex_lock(&uu_apool_list_lock); pp->uap_next = next = &uu_null_apool; pp->uap_prev = prev = next->uap_prev; next->uap_prev = pp; prev->uap_next = pp; (void) pthread_mutex_unlock(&uu_apool_list_lock); return (pp); } void uu_avl_pool_destroy(uu_avl_pool_t *pp) { if (pp->uap_debug) { if (pp->uap_null_avl.ua_next_enc != UU_PTR_ENCODE(&pp->uap_null_avl) || pp->uap_null_avl.ua_prev_enc != UU_PTR_ENCODE(&pp->uap_null_avl)) { uu_panic("uu_avl_pool_destroy: Pool \"%.*s\" (%p) has " "outstanding avls, or is corrupt.\n", (int)sizeof (pp->uap_name), pp->uap_name, (void *)pp); } } (void) pthread_mutex_lock(&uu_apool_list_lock); pp->uap_next->uap_prev = pp->uap_prev; pp->uap_prev->uap_next = pp->uap_next; (void) pthread_mutex_unlock(&uu_apool_list_lock); pp->uap_prev = NULL; pp->uap_next = NULL; uu_free(pp); } void uu_avl_node_init(void *base, uu_avl_node_t *np, uu_avl_pool_t *pp) { uintptr_t *na = (uintptr_t *)np; if (pp->uap_debug) { uintptr_t offset = (uintptr_t)np - (uintptr_t)base; if (offset + sizeof (*np) > pp->uap_objsize) { uu_panic("uu_avl_node_init(%p, %p, %p (\"%s\")): " "offset %ld doesn't fit in object (size %ld)\n", base, (void *)np, (void *)pp, pp->uap_name, (long)offset, (long)pp->uap_objsize); } if (offset != pp->uap_nodeoffset) { uu_panic("uu_avl_node_init(%p, %p, %p (\"%s\")): " "offset %ld doesn't match pool's offset (%ld)\n", base, (void *)np, (void *)pp, pp->uap_name, (long)offset, (long)pp->uap_objsize); } } na[0] = POOL_TO_MARKER(pp); na[1] = 0; } void uu_avl_node_fini(void *base, uu_avl_node_t *np, uu_avl_pool_t *pp) { uintptr_t *na = (uintptr_t *)np; if (pp->uap_debug) { if (na[0] == DEAD_MARKER && na[1] == DEAD_MARKER) { uu_panic("uu_avl_node_fini(%p, %p, %p (\"%s\")): " "node already finied\n", base, (void *)np, (void *)pp, pp->uap_name); } if (na[0] != POOL_TO_MARKER(pp) || na[1] != 0) { uu_panic("uu_avl_node_fini(%p, %p, %p (\"%s\")): " "node corrupt, in tree, or in different pool\n", base, (void *)np, (void *)pp, pp->uap_name); } } na[0] = DEAD_MARKER; na[1] = DEAD_MARKER; na[2] = DEAD_MARKER; } struct uu_avl_node_compare_info { uu_compare_fn_t *ac_compare; void *ac_private; void *ac_right; void *ac_found; }; static int uu_avl_node_compare(const void *l, const void *r) { struct uu_avl_node_compare_info *info = (struct uu_avl_node_compare_info *)l; int res = info->ac_compare(r, info->ac_right, info->ac_private); if (res == 0) { if (info->ac_found == NULL) info->ac_found = (void *)r; return (-1); } if (res < 0) return (1); return (-1); } uu_avl_t * uu_avl_create(uu_avl_pool_t *pp, void *parent, uint32_t flags) { uu_avl_t *ap, *next, *prev; if (flags & ~UU_AVL_DEBUG) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (NULL); } ap = uu_zalloc(sizeof (*ap)); if (ap == NULL) { uu_set_error(UU_ERROR_NO_MEMORY); return (NULL); } ap->ua_pool = pp; ap->ua_parent_enc = UU_PTR_ENCODE(parent); ap->ua_debug = pp->uap_debug || (flags & UU_AVL_DEBUG); ap->ua_index = (pp->uap_last_index = INDEX_NEXT(pp->uap_last_index)); avl_create(&ap->ua_tree, &uu_avl_node_compare, pp->uap_objsize, pp->uap_nodeoffset); ap->ua_null_walk.uaw_next = &ap->ua_null_walk; ap->ua_null_walk.uaw_prev = &ap->ua_null_walk; (void) pthread_mutex_lock(&pp->uap_lock); next = &pp->uap_null_avl; prev = UU_PTR_DECODE(next->ua_prev_enc); ap->ua_next_enc = UU_PTR_ENCODE(next); ap->ua_prev_enc = UU_PTR_ENCODE(prev); next->ua_prev_enc = UU_PTR_ENCODE(ap); prev->ua_next_enc = UU_PTR_ENCODE(ap); (void) pthread_mutex_unlock(&pp->uap_lock); return (ap); } void uu_avl_destroy(uu_avl_t *ap) { uu_avl_pool_t *pp = ap->ua_pool; if (ap->ua_debug) { if (avl_numnodes(&ap->ua_tree) != 0) { uu_panic("uu_avl_destroy(%p): tree not empty\n", (void *)ap); } if (ap->ua_null_walk.uaw_next != &ap->ua_null_walk || ap->ua_null_walk.uaw_prev != &ap->ua_null_walk) { uu_panic("uu_avl_destroy(%p): outstanding walkers\n", (void *)ap); } } (void) pthread_mutex_lock(&pp->uap_lock); UU_AVL_PTR(ap->ua_next_enc)->ua_prev_enc = ap->ua_prev_enc; UU_AVL_PTR(ap->ua_prev_enc)->ua_next_enc = ap->ua_next_enc; (void) pthread_mutex_unlock(&pp->uap_lock); ap->ua_prev_enc = UU_PTR_ENCODE(NULL); ap->ua_next_enc = UU_PTR_ENCODE(NULL); ap->ua_pool = NULL; avl_destroy(&ap->ua_tree); uu_free(ap); } size_t uu_avl_numnodes(uu_avl_t *ap) { return (avl_numnodes(&ap->ua_tree)); } void * uu_avl_first(uu_avl_t *ap) { return (avl_first(&ap->ua_tree)); } void * uu_avl_last(uu_avl_t *ap) { return (avl_last(&ap->ua_tree)); } void * uu_avl_next(uu_avl_t *ap, void *node) { return (AVL_NEXT(&ap->ua_tree, node)); } void * uu_avl_prev(uu_avl_t *ap, void *node) { return (AVL_PREV(&ap->ua_tree, node)); } static void _avl_walk_init(uu_avl_walk_t *wp, uu_avl_t *ap, uint32_t flags) { uu_avl_walk_t *next, *prev; int robust = (flags & UU_WALK_ROBUST); int direction = (flags & UU_WALK_REVERSE)? -1 : 1; (void) memset(wp, 0, sizeof (*wp)); wp->uaw_avl = ap; wp->uaw_robust = robust; wp->uaw_dir = direction; if (direction > 0) wp->uaw_next_result = avl_first(&ap->ua_tree); else wp->uaw_next_result = avl_last(&ap->ua_tree); if (ap->ua_debug || robust) { wp->uaw_next = next = &ap->ua_null_walk; wp->uaw_prev = prev = next->uaw_prev; next->uaw_prev = wp; prev->uaw_next = wp; } } static void * _avl_walk_advance(uu_avl_walk_t *wp, uu_avl_t *ap) { void *np = wp->uaw_next_result; avl_tree_t *t = &ap->ua_tree; if (np == NULL) return (NULL); wp->uaw_next_result = (wp->uaw_dir > 0)? AVL_NEXT(t, np) : AVL_PREV(t, np); return (np); } static void _avl_walk_fini(uu_avl_walk_t *wp) { if (wp->uaw_next != NULL) { wp->uaw_next->uaw_prev = wp->uaw_prev; wp->uaw_prev->uaw_next = wp->uaw_next; wp->uaw_next = NULL; wp->uaw_prev = NULL; } wp->uaw_avl = NULL; wp->uaw_next_result = NULL; } uu_avl_walk_t * uu_avl_walk_start(uu_avl_t *ap, uint32_t flags) { uu_avl_walk_t *wp; if (flags & ~(UU_WALK_ROBUST | UU_WALK_REVERSE)) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (NULL); } wp = uu_zalloc(sizeof (*wp)); if (wp == NULL) { uu_set_error(UU_ERROR_NO_MEMORY); return (NULL); } _avl_walk_init(wp, ap, flags); return (wp); } void * uu_avl_walk_next(uu_avl_walk_t *wp) { return (_avl_walk_advance(wp, wp->uaw_avl)); } void uu_avl_walk_end(uu_avl_walk_t *wp) { _avl_walk_fini(wp); uu_free(wp); } int uu_avl_walk(uu_avl_t *ap, uu_walk_fn_t *func, void *private, uint32_t flags) { void *e; uu_avl_walk_t my_walk; int status = UU_WALK_NEXT; if (flags & ~(UU_WALK_ROBUST | UU_WALK_REVERSE)) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (-1); } _avl_walk_init(&my_walk, ap, flags); while (status == UU_WALK_NEXT && (e = _avl_walk_advance(&my_walk, ap)) != NULL) status = (*func)(e, private); _avl_walk_fini(&my_walk); if (status >= 0) return (0); uu_set_error(UU_ERROR_CALLBACK_FAILED); return (-1); } void uu_avl_remove(uu_avl_t *ap, void *elem) { uu_avl_walk_t *wp; uu_avl_pool_t *pp = ap->ua_pool; uintptr_t *na = NODE_ARRAY(pp, elem); if (ap->ua_debug) { /* * invalidate outstanding uu_avl_index_ts. */ ap->ua_index = INDEX_NEXT(ap->ua_index); } /* * Robust walkers most be advanced, if we are removing the node * they are currently using. In debug mode, non-robust walkers * are also on the walker list. */ for (wp = ap->ua_null_walk.uaw_next; wp != &ap->ua_null_walk; wp = wp->uaw_next) { if (wp->uaw_robust) { if (elem == wp->uaw_next_result) (void) _avl_walk_advance(wp, ap); } else if (wp->uaw_next_result != NULL) { uu_panic("uu_avl_remove(%p, %p): active non-robust " "walker\n", (void *)ap, elem); } } avl_remove(&ap->ua_tree, elem); na[0] = POOL_TO_MARKER(pp); na[1] = 0; } void * uu_avl_teardown(uu_avl_t *ap, void **cookie) { void *elem = avl_destroy_nodes(&ap->ua_tree, cookie); if (elem != NULL) { uu_avl_pool_t *pp = ap->ua_pool; uintptr_t *na = NODE_ARRAY(pp, elem); na[0] = POOL_TO_MARKER(pp); na[1] = 0; } return (elem); } void * uu_avl_find(uu_avl_t *ap, void *elem, void *private, uu_avl_index_t *out) { struct uu_avl_node_compare_info info; void *result; info.ac_compare = ap->ua_pool->uap_cmp; info.ac_private = private; info.ac_right = elem; info.ac_found = NULL; result = avl_find(&ap->ua_tree, &info, out); if (out != NULL) *out = INDEX_ENCODE(ap, *out); if (ap->ua_debug && result != NULL) uu_panic("uu_avl_find: internal error: avl_find succeeded\n"); return (info.ac_found); } void uu_avl_insert(uu_avl_t *ap, void *elem, uu_avl_index_t idx) { if (ap->ua_debug) { uu_avl_pool_t *pp = ap->ua_pool; uintptr_t *na = NODE_ARRAY(pp, elem); if (na[1] != 0) uu_panic("uu_avl_insert(%p, %p, %p): node already " "in tree, or corrupt\n", (void *)ap, elem, (void *)idx); if (na[0] == 0) uu_panic("uu_avl_insert(%p, %p, %p): node not " "initialized\n", (void *)ap, elem, (void *)idx); if (na[0] != POOL_TO_MARKER(pp)) uu_panic("uu_avl_insert(%p, %p, %p): node from " "other pool, or corrupt\n", (void *)ap, elem, (void *)idx); if (!INDEX_VALID(ap, idx)) uu_panic("uu_avl_insert(%p, %p, %p): %s\n", (void *)ap, elem, (void *)idx, INDEX_CHECK(idx)? "outdated index" : "invalid index"); /* * invalidate outstanding uu_avl_index_ts. */ ap->ua_index = INDEX_NEXT(ap->ua_index); } avl_insert(&ap->ua_tree, elem, INDEX_DECODE(idx)); } void * uu_avl_nearest_next(uu_avl_t *ap, uu_avl_index_t idx) { if (ap->ua_debug && !INDEX_VALID(ap, idx)) uu_panic("uu_avl_nearest_next(%p, %p): %s\n", (void *)ap, (void *)idx, INDEX_CHECK(idx)? "outdated index" : "invalid index"); return (avl_nearest(&ap->ua_tree, INDEX_DECODE(idx), AVL_AFTER)); } void * uu_avl_nearest_prev(uu_avl_t *ap, uu_avl_index_t idx) { if (ap->ua_debug && !INDEX_VALID(ap, idx)) uu_panic("uu_avl_nearest_prev(%p, %p): %s\n", (void *)ap, (void *)idx, INDEX_CHECK(idx)? "outdated index" : "invalid index"); return (avl_nearest(&ap->ua_tree, INDEX_DECODE(idx), AVL_BEFORE)); } /* * called from uu_lockup() and uu_release(), as part of our fork1()-safety. */ void uu_avl_lockup(void) { uu_avl_pool_t *pp; (void) pthread_mutex_lock(&uu_apool_list_lock); for (pp = uu_null_apool.uap_next; pp != &uu_null_apool; pp = pp->uap_next) (void) pthread_mutex_lock(&pp->uap_lock); } void uu_avl_release(void) { uu_avl_pool_t *pp; for (pp = uu_null_apool.uap_next; pp != &uu_null_apool; pp = pp->uap_next) (void) pthread_mutex_unlock(&pp->uap_lock); (void) pthread_mutex_unlock(&uu_apool_list_lock); } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_alloc.c0000644000000000000000000000007313607166132017765 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730472.60152616 zfs-0.8.3/lib/libuutil/uu_alloc.c0000644016037001603700000000462313607166132017770 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. */ #include "libuutil_common.h" #include #include #include #include void * uu_zalloc(size_t n) { void *p = malloc(n); if (p == NULL) { uu_set_error(UU_ERROR_SYSTEM); return (NULL); } (void) memset(p, 0, n); return (p); } void uu_free(void *p) { free(p); } char * uu_strdup(const char *str) { char *buf = NULL; if (str != NULL) { size_t sz; sz = strlen(str) + 1; buf = uu_zalloc(sz); if (buf != NULL) (void) memcpy(buf, str, sz); } return (buf); } /* * Duplicate up to n bytes of a string. Kind of sort of like * strdup(strlcpy(s, n)). */ char * uu_strndup(const char *s, size_t n) { size_t len; char *p; len = strnlen(s, n); p = uu_zalloc(len + 1); if (p == NULL) return (NULL); if (len > 0) (void) memcpy(p, s, len); p[len] = '\0'; return (p); } /* * Duplicate a block of memory. Combines malloc with memcpy, much as * strdup combines malloc, strlen, and strcpy. */ void * uu_memdup(const void *buf, size_t sz) { void *p; p = uu_zalloc(sz); if (p == NULL) return (NULL); (void) memcpy(p, buf, sz); return (p); } char * uu_msprintf(const char *format, ...) { va_list args; char attic[1]; uint_t M, m; char *b; va_start(args, format); M = vsnprintf(attic, 1, format, args); va_end(args); for (;;) { m = M; if ((b = uu_zalloc(m + 1)) == NULL) return (NULL); va_start(args, format); M = vsnprintf(b, m + 1, format, args); va_end(args); if (M == m) break; /* sizes match */ uu_free(b); } return (b); } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_list.c0000644000000000000000000000007413607166132017647 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.610526451 zfs-0.8.3/lib/libuutil/uu_list.c0000644016037001603700000004327413607166132017656 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include "libuutil_common.h" #include #include #include #include #define ELEM_TO_NODE(lp, e) \ ((uu_list_node_impl_t *)((uintptr_t)(e) + (lp)->ul_offset)) #define NODE_TO_ELEM(lp, n) \ ((void *)((uintptr_t)(n) - (lp)->ul_offset)) /* * uu_list_index_ts define a location for insertion. They are simply a * pointer to the object after the insertion point. We store a mark * in the low-bits of the index, to help prevent mistakes. * * When debugging, the index mark changes on every insert and delete, to * catch stale references. */ #define INDEX_MAX (sizeof (uintptr_t) - 1) #define INDEX_NEXT(m) (((m) == INDEX_MAX)? 1 : ((m) + 1) & INDEX_MAX) #define INDEX_TO_NODE(i) ((uu_list_node_impl_t *)((i) & ~INDEX_MAX)) #define NODE_TO_INDEX(p, n) (((uintptr_t)(n) & ~INDEX_MAX) | (p)->ul_index) #define INDEX_VALID(p, i) (((i) & INDEX_MAX) == (p)->ul_index) #define INDEX_CHECK(i) (((i) & INDEX_MAX) != 0) #define POOL_TO_MARKER(pp) ((void *)((uintptr_t)(pp) | 1)) static uu_list_pool_t uu_null_lpool = { &uu_null_lpool, &uu_null_lpool }; static pthread_mutex_t uu_lpool_list_lock = PTHREAD_MUTEX_INITIALIZER; uu_list_pool_t * uu_list_pool_create(const char *name, size_t objsize, size_t nodeoffset, uu_compare_fn_t *compare_func, uint32_t flags) { uu_list_pool_t *pp, *next, *prev; if (name == NULL || uu_check_name(name, UU_NAME_DOMAIN) == -1 || nodeoffset + sizeof (uu_list_node_t) > objsize) { uu_set_error(UU_ERROR_INVALID_ARGUMENT); return (NULL); } if (flags & ~UU_LIST_POOL_DEBUG) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (NULL); } pp = uu_zalloc(sizeof (uu_list_pool_t)); if (pp == NULL) { uu_set_error(UU_ERROR_NO_MEMORY); return (NULL); } (void) strlcpy(pp->ulp_name, name, sizeof (pp->ulp_name)); pp->ulp_nodeoffset = nodeoffset; pp->ulp_objsize = objsize; pp->ulp_cmp = compare_func; if (flags & UU_LIST_POOL_DEBUG) pp->ulp_debug = 1; pp->ulp_last_index = 0; (void) pthread_mutex_init(&pp->ulp_lock, NULL); pp->ulp_null_list.ul_next_enc = UU_PTR_ENCODE(&pp->ulp_null_list); pp->ulp_null_list.ul_prev_enc = UU_PTR_ENCODE(&pp->ulp_null_list); (void) pthread_mutex_lock(&uu_lpool_list_lock); pp->ulp_next = next = &uu_null_lpool; pp->ulp_prev = prev = next->ulp_prev; next->ulp_prev = pp; prev->ulp_next = pp; (void) pthread_mutex_unlock(&uu_lpool_list_lock); return (pp); } void uu_list_pool_destroy(uu_list_pool_t *pp) { if (pp->ulp_debug) { if (pp->ulp_null_list.ul_next_enc != UU_PTR_ENCODE(&pp->ulp_null_list) || pp->ulp_null_list.ul_prev_enc != UU_PTR_ENCODE(&pp->ulp_null_list)) { uu_panic("uu_list_pool_destroy: Pool \"%.*s\" (%p) has " "outstanding lists, or is corrupt.\n", (int)sizeof (pp->ulp_name), pp->ulp_name, (void *)pp); } } (void) pthread_mutex_lock(&uu_lpool_list_lock); pp->ulp_next->ulp_prev = pp->ulp_prev; pp->ulp_prev->ulp_next = pp->ulp_next; (void) pthread_mutex_unlock(&uu_lpool_list_lock); pp->ulp_prev = NULL; pp->ulp_next = NULL; uu_free(pp); } void uu_list_node_init(void *base, uu_list_node_t *np_arg, uu_list_pool_t *pp) { uu_list_node_impl_t *np = (uu_list_node_impl_t *)np_arg; if (pp->ulp_debug) { uintptr_t offset = (uintptr_t)np - (uintptr_t)base; if (offset + sizeof (*np) > pp->ulp_objsize) { uu_panic("uu_list_node_init(%p, %p, %p (\"%s\")): " "offset %ld doesn't fit in object (size %ld)\n", base, (void *)np, (void *)pp, pp->ulp_name, (long)offset, (long)pp->ulp_objsize); } if (offset != pp->ulp_nodeoffset) { uu_panic("uu_list_node_init(%p, %p, %p (\"%s\")): " "offset %ld doesn't match pool's offset (%ld)\n", base, (void *)np, (void *)pp, pp->ulp_name, (long)offset, (long)pp->ulp_objsize); } } np->uln_next = POOL_TO_MARKER(pp); np->uln_prev = NULL; } void uu_list_node_fini(void *base, uu_list_node_t *np_arg, uu_list_pool_t *pp) { uu_list_node_impl_t *np = (uu_list_node_impl_t *)np_arg; if (pp->ulp_debug) { if (np->uln_next == NULL && np->uln_prev == NULL) { uu_panic("uu_list_node_fini(%p, %p, %p (\"%s\")): " "node already finied\n", base, (void *)np_arg, (void *)pp, pp->ulp_name); } if (np->uln_next != POOL_TO_MARKER(pp) || np->uln_prev != NULL) { uu_panic("uu_list_node_fini(%p, %p, %p (\"%s\")): " "node corrupt or on list\n", base, (void *)np_arg, (void *)pp, pp->ulp_name); } } np->uln_next = NULL; np->uln_prev = NULL; } uu_list_t * uu_list_create(uu_list_pool_t *pp, void *parent, uint32_t flags) { uu_list_t *lp, *next, *prev; if (flags & ~(UU_LIST_DEBUG | UU_LIST_SORTED)) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (NULL); } if ((flags & UU_LIST_SORTED) && pp->ulp_cmp == NULL) { if (pp->ulp_debug) uu_panic("uu_list_create(%p, ...): requested " "UU_LIST_SORTED, but pool has no comparison func\n", (void *)pp); uu_set_error(UU_ERROR_NOT_SUPPORTED); return (NULL); } lp = uu_zalloc(sizeof (*lp)); if (lp == NULL) { uu_set_error(UU_ERROR_NO_MEMORY); return (NULL); } lp->ul_pool = pp; lp->ul_parent_enc = UU_PTR_ENCODE(parent); lp->ul_offset = pp->ulp_nodeoffset; lp->ul_debug = pp->ulp_debug || (flags & UU_LIST_DEBUG); lp->ul_sorted = (flags & UU_LIST_SORTED); lp->ul_numnodes = 0; lp->ul_index = (pp->ulp_last_index = INDEX_NEXT(pp->ulp_last_index)); lp->ul_null_node.uln_next = &lp->ul_null_node; lp->ul_null_node.uln_prev = &lp->ul_null_node; lp->ul_null_walk.ulw_next = &lp->ul_null_walk; lp->ul_null_walk.ulw_prev = &lp->ul_null_walk; (void) pthread_mutex_lock(&pp->ulp_lock); next = &pp->ulp_null_list; prev = UU_PTR_DECODE(next->ul_prev_enc); lp->ul_next_enc = UU_PTR_ENCODE(next); lp->ul_prev_enc = UU_PTR_ENCODE(prev); next->ul_prev_enc = UU_PTR_ENCODE(lp); prev->ul_next_enc = UU_PTR_ENCODE(lp); (void) pthread_mutex_unlock(&pp->ulp_lock); return (lp); } void uu_list_destroy(uu_list_t *lp) { uu_list_pool_t *pp = lp->ul_pool; if (lp->ul_debug) { if (lp->ul_null_node.uln_next != &lp->ul_null_node || lp->ul_null_node.uln_prev != &lp->ul_null_node) { uu_panic("uu_list_destroy(%p): list not empty\n", (void *)lp); } if (lp->ul_numnodes != 0) { uu_panic("uu_list_destroy(%p): numnodes is nonzero, " "but list is empty\n", (void *)lp); } if (lp->ul_null_walk.ulw_next != &lp->ul_null_walk || lp->ul_null_walk.ulw_prev != &lp->ul_null_walk) { uu_panic("uu_list_destroy(%p): outstanding walkers\n", (void *)lp); } } (void) pthread_mutex_lock(&pp->ulp_lock); UU_LIST_PTR(lp->ul_next_enc)->ul_prev_enc = lp->ul_prev_enc; UU_LIST_PTR(lp->ul_prev_enc)->ul_next_enc = lp->ul_next_enc; (void) pthread_mutex_unlock(&pp->ulp_lock); lp->ul_prev_enc = UU_PTR_ENCODE(NULL); lp->ul_next_enc = UU_PTR_ENCODE(NULL); lp->ul_pool = NULL; uu_free(lp); } static void list_insert(uu_list_t *lp, uu_list_node_impl_t *np, uu_list_node_impl_t *prev, uu_list_node_impl_t *next) { if (lp->ul_debug) { if (next->uln_prev != prev || prev->uln_next != next) uu_panic("insert(%p): internal error: %p and %p not " "neighbors\n", (void *)lp, (void *)next, (void *)prev); if (np->uln_next != POOL_TO_MARKER(lp->ul_pool) || np->uln_prev != NULL) { uu_panic("insert(%p): elem %p node %p corrupt, " "not initialized, or already in a list.\n", (void *)lp, NODE_TO_ELEM(lp, np), (void *)np); } /* * invalidate outstanding uu_list_index_ts. */ lp->ul_index = INDEX_NEXT(lp->ul_index); } np->uln_next = next; np->uln_prev = prev; next->uln_prev = np; prev->uln_next = np; lp->ul_numnodes++; } void uu_list_insert(uu_list_t *lp, void *elem, uu_list_index_t idx) { uu_list_node_impl_t *np; np = INDEX_TO_NODE(idx); if (np == NULL) np = &lp->ul_null_node; if (lp->ul_debug) { if (!INDEX_VALID(lp, idx)) uu_panic("uu_list_insert(%p, %p, %p): %s\n", (void *)lp, elem, (void *)idx, INDEX_CHECK(idx)? "outdated index" : "invalid index"); if (np->uln_prev == NULL) uu_panic("uu_list_insert(%p, %p, %p): out-of-date " "index\n", (void *)lp, elem, (void *)idx); } list_insert(lp, ELEM_TO_NODE(lp, elem), np->uln_prev, np); } void * uu_list_find(uu_list_t *lp, void *elem, void *private, uu_list_index_t *out) { int sorted = lp->ul_sorted; uu_compare_fn_t *func = lp->ul_pool->ulp_cmp; uu_list_node_impl_t *np; if (func == NULL) { if (out != NULL) *out = 0; uu_set_error(UU_ERROR_NOT_SUPPORTED); return (NULL); } for (np = lp->ul_null_node.uln_next; np != &lp->ul_null_node; np = np->uln_next) { void *ep = NODE_TO_ELEM(lp, np); int cmp = func(ep, elem, private); if (cmp == 0) { if (out != NULL) *out = NODE_TO_INDEX(lp, np); return (ep); } if (sorted && cmp > 0) { if (out != NULL) *out = NODE_TO_INDEX(lp, np); return (NULL); } } if (out != NULL) *out = NODE_TO_INDEX(lp, 0); return (NULL); } void * uu_list_nearest_next(uu_list_t *lp, uu_list_index_t idx) { uu_list_node_impl_t *np = INDEX_TO_NODE(idx); if (np == NULL) np = &lp->ul_null_node; if (lp->ul_debug) { if (!INDEX_VALID(lp, idx)) uu_panic("uu_list_nearest_next(%p, %p): %s\n", (void *)lp, (void *)idx, INDEX_CHECK(idx)? "outdated index" : "invalid index"); if (np->uln_prev == NULL) uu_panic("uu_list_nearest_next(%p, %p): out-of-date " "index\n", (void *)lp, (void *)idx); } if (np == &lp->ul_null_node) return (NULL); else return (NODE_TO_ELEM(lp, np)); } void * uu_list_nearest_prev(uu_list_t *lp, uu_list_index_t idx) { uu_list_node_impl_t *np = INDEX_TO_NODE(idx); if (np == NULL) np = &lp->ul_null_node; if (lp->ul_debug) { if (!INDEX_VALID(lp, idx)) uu_panic("uu_list_nearest_prev(%p, %p): %s\n", (void *)lp, (void *)idx, INDEX_CHECK(idx)? "outdated index" : "invalid index"); if (np->uln_prev == NULL) uu_panic("uu_list_nearest_prev(%p, %p): out-of-date " "index\n", (void *)lp, (void *)idx); } if ((np = np->uln_prev) == &lp->ul_null_node) return (NULL); else return (NODE_TO_ELEM(lp, np)); } static void list_walk_init(uu_list_walk_t *wp, uu_list_t *lp, uint32_t flags) { uu_list_walk_t *next, *prev; int robust = (flags & UU_WALK_ROBUST); int direction = (flags & UU_WALK_REVERSE)? -1 : 1; (void) memset(wp, 0, sizeof (*wp)); wp->ulw_list = lp; wp->ulw_robust = robust; wp->ulw_dir = direction; if (direction > 0) wp->ulw_next_result = lp->ul_null_node.uln_next; else wp->ulw_next_result = lp->ul_null_node.uln_prev; if (lp->ul_debug || robust) { /* * Add this walker to the list's list of walkers so * uu_list_remove() can advance us if somebody tries to * remove ulw_next_result. */ wp->ulw_next = next = &lp->ul_null_walk; wp->ulw_prev = prev = next->ulw_prev; next->ulw_prev = wp; prev->ulw_next = wp; } } static uu_list_node_impl_t * list_walk_advance(uu_list_walk_t *wp, uu_list_t *lp) { uu_list_node_impl_t *np = wp->ulw_next_result; uu_list_node_impl_t *next; if (np == &lp->ul_null_node) return (NULL); next = (wp->ulw_dir > 0)? np->uln_next : np->uln_prev; wp->ulw_next_result = next; return (np); } static void list_walk_fini(uu_list_walk_t *wp) { /* GLXXX debugging? */ if (wp->ulw_next != NULL) { wp->ulw_next->ulw_prev = wp->ulw_prev; wp->ulw_prev->ulw_next = wp->ulw_next; wp->ulw_next = NULL; wp->ulw_prev = NULL; } wp->ulw_list = NULL; wp->ulw_next_result = NULL; } uu_list_walk_t * uu_list_walk_start(uu_list_t *lp, uint32_t flags) { uu_list_walk_t *wp; if (flags & ~(UU_WALK_ROBUST | UU_WALK_REVERSE)) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (NULL); } wp = uu_zalloc(sizeof (*wp)); if (wp == NULL) { uu_set_error(UU_ERROR_NO_MEMORY); return (NULL); } list_walk_init(wp, lp, flags); return (wp); } void * uu_list_walk_next(uu_list_walk_t *wp) { uu_list_t *lp = wp->ulw_list; uu_list_node_impl_t *np = list_walk_advance(wp, lp); if (np == NULL) return (NULL); return (NODE_TO_ELEM(lp, np)); } void uu_list_walk_end(uu_list_walk_t *wp) { list_walk_fini(wp); uu_free(wp); } int uu_list_walk(uu_list_t *lp, uu_walk_fn_t *func, void *private, uint32_t flags) { uu_list_node_impl_t *np; int status = UU_WALK_NEXT; int robust = (flags & UU_WALK_ROBUST); int reverse = (flags & UU_WALK_REVERSE); if (flags & ~(UU_WALK_ROBUST | UU_WALK_REVERSE)) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (-1); } if (lp->ul_debug || robust) { uu_list_walk_t my_walk; void *e; list_walk_init(&my_walk, lp, flags); while (status == UU_WALK_NEXT && (e = uu_list_walk_next(&my_walk)) != NULL) status = (*func)(e, private); list_walk_fini(&my_walk); } else { if (!reverse) { for (np = lp->ul_null_node.uln_next; status == UU_WALK_NEXT && np != &lp->ul_null_node; np = np->uln_next) { status = (*func)(NODE_TO_ELEM(lp, np), private); } } else { for (np = lp->ul_null_node.uln_prev; status == UU_WALK_NEXT && np != &lp->ul_null_node; np = np->uln_prev) { status = (*func)(NODE_TO_ELEM(lp, np), private); } } } if (status >= 0) return (0); uu_set_error(UU_ERROR_CALLBACK_FAILED); return (-1); } void uu_list_remove(uu_list_t *lp, void *elem) { uu_list_node_impl_t *np = ELEM_TO_NODE(lp, elem); uu_list_walk_t *wp; if (lp->ul_debug) { if (np->uln_prev == NULL) uu_panic("uu_list_remove(%p, %p): elem not on list\n", (void *)lp, elem); /* * invalidate outstanding uu_list_index_ts. */ lp->ul_index = INDEX_NEXT(lp->ul_index); } /* * robust walkers must be advanced. In debug mode, non-robust * walkers are also on the list. If there are any, it's an error. */ for (wp = lp->ul_null_walk.ulw_next; wp != &lp->ul_null_walk; wp = wp->ulw_next) { if (wp->ulw_robust) { if (np == wp->ulw_next_result) (void) list_walk_advance(wp, lp); } else if (wp->ulw_next_result != NULL) { uu_panic("uu_list_remove(%p, %p): active non-robust " "walker\n", (void *)lp, elem); } } np->uln_next->uln_prev = np->uln_prev; np->uln_prev->uln_next = np->uln_next; lp->ul_numnodes--; np->uln_next = POOL_TO_MARKER(lp->ul_pool); np->uln_prev = NULL; } void * uu_list_teardown(uu_list_t *lp, void **cookie) { void *ep; /* * XXX: disable list modification until list is empty */ if (lp->ul_debug && *cookie != NULL) uu_panic("uu_list_teardown(%p, %p): unexpected cookie\n", (void *)lp, (void *)cookie); ep = uu_list_first(lp); if (ep) uu_list_remove(lp, ep); return (ep); } int uu_list_insert_before(uu_list_t *lp, void *target, void *elem) { uu_list_node_impl_t *np = ELEM_TO_NODE(lp, target); if (target == NULL) np = &lp->ul_null_node; if (lp->ul_debug) { if (np->uln_prev == NULL) uu_panic("uu_list_insert_before(%p, %p, %p): %p is " "not currently on a list\n", (void *)lp, target, elem, target); } if (lp->ul_sorted) { if (lp->ul_debug) uu_panic("uu_list_insert_before(%p, ...): list is " "UU_LIST_SORTED\n", (void *)lp); uu_set_error(UU_ERROR_NOT_SUPPORTED); return (-1); } list_insert(lp, ELEM_TO_NODE(lp, elem), np->uln_prev, np); return (0); } int uu_list_insert_after(uu_list_t *lp, void *target, void *elem) { uu_list_node_impl_t *np = ELEM_TO_NODE(lp, target); if (target == NULL) np = &lp->ul_null_node; if (lp->ul_debug) { if (np->uln_prev == NULL) uu_panic("uu_list_insert_after(%p, %p, %p): %p is " "not currently on a list\n", (void *)lp, target, elem, target); } if (lp->ul_sorted) { if (lp->ul_debug) uu_panic("uu_list_insert_after(%p, ...): list is " "UU_LIST_SORTED\n", (void *)lp); uu_set_error(UU_ERROR_NOT_SUPPORTED); return (-1); } list_insert(lp, ELEM_TO_NODE(lp, elem), np, np->uln_next); return (0); } size_t uu_list_numnodes(uu_list_t *lp) { return (lp->ul_numnodes); } void * uu_list_first(uu_list_t *lp) { uu_list_node_impl_t *n = lp->ul_null_node.uln_next; if (n == &lp->ul_null_node) return (NULL); return (NODE_TO_ELEM(lp, n)); } void * uu_list_last(uu_list_t *lp) { uu_list_node_impl_t *n = lp->ul_null_node.uln_prev; if (n == &lp->ul_null_node) return (NULL); return (NODE_TO_ELEM(lp, n)); } void * uu_list_next(uu_list_t *lp, void *elem) { uu_list_node_impl_t *n = ELEM_TO_NODE(lp, elem); n = n->uln_next; if (n == &lp->ul_null_node) return (NULL); return (NODE_TO_ELEM(lp, n)); } void * uu_list_prev(uu_list_t *lp, void *elem) { uu_list_node_impl_t *n = ELEM_TO_NODE(lp, elem); n = n->uln_prev; if (n == &lp->ul_null_node) return (NULL); return (NODE_TO_ELEM(lp, n)); } /* * called from uu_lockup() and uu_release(), as part of our fork1()-safety. */ void uu_list_lockup(void) { uu_list_pool_t *pp; (void) pthread_mutex_lock(&uu_lpool_list_lock); for (pp = uu_null_lpool.ulp_next; pp != &uu_null_lpool; pp = pp->ulp_next) (void) pthread_mutex_lock(&pp->ulp_lock); } void uu_list_release(void) { uu_list_pool_t *pp; for (pp = uu_null_lpool.ulp_next; pp != &uu_null_lpool; pp = pp->ulp_next) (void) pthread_mutex_unlock(&pp->ulp_lock); (void) pthread_mutex_unlock(&uu_lpool_list_lock); } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_pname.c0000644000000000000000000000007413607166132017774 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.616526643 zfs-0.8.3/lib/libuutil/uu_pname.c0000644016037001603700000000761113607166132017776 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include "libuutil_common.h" #include #include #include #include #include #include #include #include #include static const char PNAME_FMT[] = "%s: "; static const char ERRNO_FMT[] = ": %s\n"; static const char *pname; static void uu_die_internal(int status, const char *format, va_list alist) __NORETURN; int uu_exit_ok_value = EXIT_SUCCESS; int uu_exit_fatal_value = EXIT_FAILURE; int uu_exit_usage_value = 2; int * uu_exit_ok(void) { return (&uu_exit_ok_value); } int * uu_exit_fatal(void) { return (&uu_exit_fatal_value); } int * uu_exit_usage(void) { return (&uu_exit_usage_value); } void uu_alt_exit(int profile) { switch (profile) { case UU_PROFILE_DEFAULT: uu_exit_ok_value = EXIT_SUCCESS; uu_exit_fatal_value = EXIT_FAILURE; uu_exit_usage_value = 2; break; case UU_PROFILE_LAUNCHER: uu_exit_ok_value = EXIT_SUCCESS; uu_exit_fatal_value = 124; uu_exit_usage_value = 125; break; } } static void uu_warn_internal(int err, const char *format, va_list alist) { if (pname != NULL) (void) fprintf(stderr, PNAME_FMT, pname); (void) vfprintf(stderr, format, alist); if (strrchr(format, '\n') == NULL) (void) fprintf(stderr, ERRNO_FMT, strerror(err)); } void uu_vwarn(const char *format, va_list alist) { uu_warn_internal(errno, format, alist); } /*PRINTFLIKE1*/ void uu_warn(const char *format, ...) { va_list alist; va_start(alist, format); uu_warn_internal(errno, format, alist); va_end(alist); } static void uu_die_internal(int status, const char *format, va_list alist) { uu_warn_internal(errno, format, alist); #ifdef DEBUG { char *cp; if (!issetugid()) { cp = getenv("UU_DIE_ABORTS"); if (cp != NULL && *cp != '\0') abort(); } } #endif exit(status); } void uu_vdie(const char *format, va_list alist) { uu_die_internal(UU_EXIT_FATAL, format, alist); } /*PRINTFLIKE1*/ void uu_die(const char *format, ...) { va_list alist; va_start(alist, format); uu_die_internal(UU_EXIT_FATAL, format, alist); va_end(alist); } void uu_vxdie(int status, const char *format, va_list alist) { uu_die_internal(status, format, alist); } /*PRINTFLIKE2*/ void uu_xdie(int status, const char *format, ...) { va_list alist; va_start(alist, format); uu_die_internal(status, format, alist); va_end(alist); } const char * uu_setpname(char *arg0) { /* * Having a NULL argv[0], while uncommon, is possible. It * makes more sense to handle this event in uu_setpname rather * than in each of its consumers. */ if (arg0 == NULL) { pname = getexecname(); if (pname == NULL) pname = "unknown_command"; return (pname); } /* * Guard against '/' at end of command invocation. */ for (;;) { char *p = strrchr(arg0, '/'); if (p == NULL) { pname = arg0; break; } else { if (*(p + 1) == '\0') { *p = '\0'; continue; } pname = p + 1; break; } } return (pname); } const char * uu_getpname(void) { return (pname); } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/Makefile.am0000644000000000000000000000007113607166147020056 xustar000000000000000030 atime=1579730430.599177579 27 ctime=1579730472.596526 zfs-0.8.3/lib/libuutil/Makefile.am0000644016037001603700000000077313607166147020065 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include lib_LTLIBRARIES = libuutil.la USER_C = \ uu_alloc.c \ uu_avl.c \ uu_dprintf.c \ uu_ident.c \ uu_list.c \ uu_misc.c \ uu_open.c \ uu_pname.c \ uu_string.c nodist_libuutil_la_SOURCES = $(USER_C) libuutil_la_LIBADD = \ $(top_builddir)/lib/libavl/libavl.la \ $(top_builddir)/lib/libspl/libspl.la libuutil_la_LDFLAGS = -pthread -version-info 1:1:0 EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_dprintf.c0000644000000000000000000000007413607166132020342 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.605526291 zfs-0.8.3/lib/libuutil/uu_dprintf.c0000644016037001603700000000552713607166132020350 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include "libuutil_common.h" #include #include #include #include #include #include #include #define FACILITY_FMT "%s (%s): " #if !defined(TEXT_DOMAIN) #define TEXT_DOMAIN "SYS_TEST" #endif static const char * strseverity(uu_dprintf_severity_t severity) { switch (severity) { case UU_DPRINTF_SILENT: return (dgettext(TEXT_DOMAIN, "silent")); case UU_DPRINTF_FATAL: return (dgettext(TEXT_DOMAIN, "FATAL")); case UU_DPRINTF_WARNING: return (dgettext(TEXT_DOMAIN, "WARNING")); case UU_DPRINTF_NOTICE: return (dgettext(TEXT_DOMAIN, "note")); case UU_DPRINTF_INFO: return (dgettext(TEXT_DOMAIN, "info")); case UU_DPRINTF_DEBUG: return (dgettext(TEXT_DOMAIN, "debug")); default: return (dgettext(TEXT_DOMAIN, "unspecified")); } } uu_dprintf_t * uu_dprintf_create(const char *name, uu_dprintf_severity_t severity, uint_t flags) { uu_dprintf_t *D; if (name != NULL && uu_check_name(name, UU_NAME_DOMAIN) == -1) { uu_set_error(UU_ERROR_INVALID_ARGUMENT); return (NULL); } if ((D = uu_zalloc(sizeof (uu_dprintf_t))) == NULL) return (NULL); if (name != NULL) { D->uud_name = strdup(name); if (D->uud_name == NULL) { uu_free(D); return (NULL); } } else { D->uud_name = NULL; } D->uud_severity = severity; D->uud_flags = flags; return (D); } /*PRINTFLIKE3*/ void uu_dprintf(uu_dprintf_t *D, uu_dprintf_severity_t severity, const char *format, ...) { va_list alist; /* XXX Assert that severity is not UU_DPRINTF_SILENT. */ if (severity > D->uud_severity) return; (void) fprintf(stderr, FACILITY_FMT, D->uud_name, strseverity(severity)); va_start(alist, format); (void) vfprintf(stderr, format, alist); va_end(alist); } void uu_dprintf_destroy(uu_dprintf_t *D) { if (D->uud_name) free(D->uud_name); uu_free(D); } const char * uu_dprintf_getname(uu_dprintf_t *D) { return (D->uud_name); } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_misc.c0000644000000000000000000000007413607166132017627 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.612526515 zfs-0.8.3/lib/libuutil/uu_misc.c0000644016037001603700000001426413607166132017633 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. */ #include "libuutil_common.h" #include #include #include #include #include #include #include #include #include #include #include #if !defined(TEXT_DOMAIN) #define TEXT_DOMAIN "SYS_TEST" #endif /* * All of the old code under !defined(PTHREAD_ONCE_KEY_NP) * is here to enable the building of a native version of * libuutil.so when the build machine has not yet been upgraded * to a version of libc that provides pthread_key_create_once_np(). * It should all be deleted when solaris_nevada ships. * The code is not MT-safe in a relaxed memory model. */ #if defined(PTHREAD_ONCE_KEY_NP) static pthread_key_t uu_error_key = PTHREAD_ONCE_KEY_NP; #else /* PTHREAD_ONCE_KEY_NP */ static pthread_key_t uu_error_key = 0; static pthread_mutex_t uu_key_lock = PTHREAD_MUTEX_INITIALIZER; #endif /* PTHREAD_ONCE_KEY_NP */ static int uu_error_key_setup = 0; static pthread_mutex_t uu_panic_lock = PTHREAD_MUTEX_INITIALIZER; /* LINTED static unused */ static const char *uu_panic_format; /* LINTED static unused */ static va_list uu_panic_args; static pthread_t uu_panic_thread; static uint32_t _uu_main_error; static __thread int _uu_main_thread = 0; void uu_set_error(uint_t code) { if (_uu_main_thread) { _uu_main_error = code; return; } #if defined(PTHREAD_ONCE_KEY_NP) if (pthread_key_create_once_np(&uu_error_key, NULL) != 0) uu_error_key_setup = -1; else uu_error_key_setup = 1; #else /* PTHREAD_ONCE_KEY_NP */ if (uu_error_key_setup == 0) { (void) pthread_mutex_lock(&uu_key_lock); if (uu_error_key_setup == 0) { if (pthread_key_create(&uu_error_key, NULL) != 0) uu_error_key_setup = -1; else uu_error_key_setup = 1; } (void) pthread_mutex_unlock(&uu_key_lock); } #endif /* PTHREAD_ONCE_KEY_NP */ if (uu_error_key_setup > 0) (void) pthread_setspecific(uu_error_key, (void *)(uintptr_t)code); } uint32_t uu_error(void) { if (_uu_main_thread) return (_uu_main_error); if (uu_error_key_setup < 0) /* can't happen? */ return (UU_ERROR_UNKNOWN); /* * Because UU_ERROR_NONE == 0, if uu_set_error() was * never called, then this will return UU_ERROR_NONE: */ return ((uint32_t)(uintptr_t)pthread_getspecific(uu_error_key)); } const char * uu_strerror(uint32_t code) { const char *str; switch (code) { case UU_ERROR_NONE: str = dgettext(TEXT_DOMAIN, "No error"); break; case UU_ERROR_INVALID_ARGUMENT: str = dgettext(TEXT_DOMAIN, "Invalid argument"); break; case UU_ERROR_UNKNOWN_FLAG: str = dgettext(TEXT_DOMAIN, "Unknown flag passed"); break; case UU_ERROR_NO_MEMORY: str = dgettext(TEXT_DOMAIN, "Out of memory"); break; case UU_ERROR_CALLBACK_FAILED: str = dgettext(TEXT_DOMAIN, "Callback-initiated failure"); break; case UU_ERROR_NOT_SUPPORTED: str = dgettext(TEXT_DOMAIN, "Operation not supported"); break; case UU_ERROR_EMPTY: str = dgettext(TEXT_DOMAIN, "No value provided"); break; case UU_ERROR_UNDERFLOW: str = dgettext(TEXT_DOMAIN, "Value too small"); break; case UU_ERROR_OVERFLOW: str = dgettext(TEXT_DOMAIN, "Value too large"); break; case UU_ERROR_INVALID_CHAR: str = dgettext(TEXT_DOMAIN, "Value contains unexpected character"); break; case UU_ERROR_INVALID_DIGIT: str = dgettext(TEXT_DOMAIN, "Value contains digit not in base"); break; case UU_ERROR_SYSTEM: str = dgettext(TEXT_DOMAIN, "Underlying system error"); break; case UU_ERROR_UNKNOWN: str = dgettext(TEXT_DOMAIN, "Error status not known"); break; default: errno = ESRCH; str = NULL; break; } return (str); } void uu_panic(const char *format, ...) { va_list args; va_start(args, format); (void) pthread_mutex_lock(&uu_panic_lock); if (uu_panic_thread == 0) { uu_panic_thread = pthread_self(); uu_panic_format = format; va_copy(uu_panic_args, args); } (void) pthread_mutex_unlock(&uu_panic_lock); (void) vfprintf(stderr, format, args); va_end(args); if (uu_panic_thread == pthread_self()) abort(); else for (;;) (void) pause(); } static void uu_lockup(void) { (void) pthread_mutex_lock(&uu_panic_lock); #if !defined(PTHREAD_ONCE_KEY_NP) (void) pthread_mutex_lock(&uu_key_lock); #endif uu_avl_lockup(); uu_list_lockup(); } static void uu_release(void) { (void) pthread_mutex_unlock(&uu_panic_lock); #if !defined(PTHREAD_ONCE_KEY_NP) (void) pthread_mutex_unlock(&uu_key_lock); #endif uu_avl_release(); uu_list_release(); } static void uu_release_child(void) { uu_panic_format = NULL; uu_panic_thread = 0; uu_release(); } #ifdef __GNUC__ static void uu_init(void) __attribute__((constructor)); #else #pragma init(uu_init) #endif static void uu_init(void) { _uu_main_thread = 1; (void) pthread_atfork(uu_lockup, uu_release, uu_release_child); } /* * Dump a block of memory in hex+ascii, for debugging */ void uu_dump(FILE *out, const char *prefix, const void *buf, size_t len) { const unsigned char *p = buf; int i; for (i = 0; i < len; i += 16) { int j; (void) fprintf(out, "%s", prefix); for (j = 0; j < 16 && i + j < len; j++) { (void) fprintf(out, "%2.2x ", p[i + j]); } for (; j < 16; j++) { (void) fprintf(out, " "); } for (j = 0; j < 16 && i + j < len; j++) { (void) fprintf(out, "%c", isprint(p[i + j]) ? p[i + j] : '.'); } (void) fprintf(out, "\n"); } } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_string.c0000644000000000000000000000007413607166147020210 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.618526707 zfs-0.8.3/lib/libuutil/uu_string.c0000644016037001603700000000271513607166147020212 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. */ /* * String helper functions */ #include #include #include #include #include #include "libuutil.h" /* Return true if strings are equal */ boolean_t uu_streq(const char *a, const char *b) { return (strcmp(a, b) == 0); } /* Return true if strings are equal, case-insensitively */ boolean_t uu_strcaseeq(const char *a, const char *b) { return (strcasecmp(a, b) == 0); } /* Return true if string a Begins With string b */ boolean_t uu_strbw(const char *a, const char *b) { return (strncmp(a, b, strlen(b)) == 0); } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_ident.c0000644000000000000000000000007413607166132017777 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.607526355 zfs-0.8.3/lib/libuutil/uu_ident.c0000644016037001603700000000550513607166132020001 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include "libuutil_common.h" #include /* * We require names of the form: * [provider,]identifier[/[provider,]identifier]... * * Where provider is either a stock symbol (SUNW) or a java-style reversed * domain name (com.sun). * * Both providers and identifiers must start with a letter, and may * only contain alphanumerics, dashes, and underlines. Providers * may also contain periods. * * Note that we do _not_ use the macros in , since they are affected * by the current locale settings. */ #define IS_ALPHA(c) \ (((c) >= 'a' && (c) <= 'z') || ((c) >= 'A' && (c) <= 'Z')) #define IS_DIGIT(c) \ ((c) >= '0' && (c) <= '9') static int is_valid_ident(const char *s, const char *e, int allowdot) { char c; if (s >= e) return (0); /* name is empty */ c = *s++; if (!IS_ALPHA(c)) return (0); /* does not start with letter */ while (s < e && (c = *s++) != 0) { if (IS_ALPHA(c) || IS_DIGIT(c) || c == '-' || c == '_' || (allowdot && c == '.')) continue; return (0); /* invalid character */ } return (1); } static int is_valid_component(const char *b, const char *e, uint_t flags) { char *sp; if (flags & UU_NAME_DOMAIN) { sp = strchr(b, ','); if (sp != NULL && sp < e) { if (!is_valid_ident(b, sp, 1)) return (0); b = sp + 1; } } return (is_valid_ident(b, e, 0)); } int uu_check_name(const char *name, uint_t flags) { const char *end = name + strlen(name); const char *p; if (flags & ~(UU_NAME_DOMAIN | UU_NAME_PATH)) { uu_set_error(UU_ERROR_UNKNOWN_FLAG); return (-1); } if (!(flags & UU_NAME_PATH)) { if (!is_valid_component(name, end, flags)) goto bad; return (0); } while ((p = strchr(name, '/')) != NULL) { if (!is_valid_component(name, p - 1, flags)) goto bad; name = p + 1; } if (!is_valid_component(name, end, flags)) goto bad; return (0); bad: uu_set_error(UU_ERROR_INVALID_ARGUMENT); return (-1); } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/uu_open.c0000644000000000000000000000007413607166132017635 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.614526579 zfs-0.8.3/lib/libuutil/uu_open.c0000644016037001603700000000311113607166132017626 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include "libuutil_common.h" #include #include #include #include #include #include #ifdef _LP64 #define TMPPATHFMT "%s/uu%ld" #else /* _LP64 */ #define TMPPATHFMT "%s/uu%lld" #endif /* _LP64 */ /*ARGSUSED*/ int uu_open_tmp(const char *dir, uint_t uflags) { int f; char *fname = uu_zalloc(PATH_MAX); if (fname == NULL) return (-1); for (;;) { (void) snprintf(fname, PATH_MAX, "%s/uu%lld", dir, gethrtime()); f = open(fname, O_CREAT | O_EXCL | O_RDWR, 0600); if (f >= 0 || errno != EEXIST) break; } if (f >= 0) (void) unlink(fname); uu_free(fname); return (f); } zfs-0.8.3/lib/libuutil/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776020063 xustar000000000000000030 mtime=1579730430.653179313 30 atime=1579730451.303842342 30 ctime=1579730472.598526064 zfs-0.8.3/lib/libuutil/Makefile.in0000664016037001603700000007422313612142776020077 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libuutil ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libuutil_la_DEPENDENCIES = $(top_builddir)/lib/libavl/libavl.la \ $(top_builddir)/lib/libspl/libspl.la am__objects_1 = uu_alloc.lo uu_avl.lo uu_dprintf.lo uu_ident.lo \ uu_list.lo uu_misc.lo uu_open.lo uu_pname.lo uu_string.lo nodist_libuutil_la_OBJECTS = $(am__objects_1) libuutil_la_OBJECTS = $(nodist_libuutil_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent libuutil_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libuutil_la_LDFLAGS) $(LDFLAGS) -o $@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libuutil_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) lib_LTLIBRARIES = libuutil.la USER_C = \ uu_alloc.c \ uu_avl.c \ uu_dprintf.c \ uu_ident.c \ uu_list.c \ uu_misc.c \ uu_open.c \ uu_pname.c \ uu_string.c nodist_libuutil_la_SOURCES = $(USER_C) libuutil_la_LIBADD = \ $(top_builddir)/lib/libavl/libavl.la \ $(top_builddir)/lib/libspl/libspl.la libuutil_la_LDFLAGS = -pthread -version-info 1:1:0 EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libuutil/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libuutil/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libuutil.la: $(libuutil_la_OBJECTS) $(libuutil_la_DEPENDENCIES) $(AM_V_CCLD)$(libuutil_la_LINK) -rpath $(libdir) $(libuutil_la_OBJECTS) $(libuutil_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_alloc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_avl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_dprintf.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_ident.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_list.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_misc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_open.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_pname.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uu_string.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/libzfs_core0000644000000000000000000000013213612143050016373 xustar000000000000000030 mtime=1579730472.842533899 30 atime=1579730489.075055099 30 ctime=1579730472.842533899 zfs-0.8.3/lib/libzfs_core/0000775016037001603700000000000013612143050016454 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libzfs_core/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020531 xustar000000000000000030 atime=1579730430.747182331 30 ctime=1579730472.838533771 zfs-0.8.3/lib/libzfs_core/Makefile.am0000644016037001603700000000063513607166147020532 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include lib_LTLIBRARIES = libzfs_core.la USER_C = \ libzfs_core.c nodist_libzfs_core_la_SOURCES = $(USER_C) libzfs_core_la_LIBADD = \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libuutil/libuutil.la libzfs_core_la_LDFLAGS = -version-info 1:0:0 EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libzfs_core/PaxHeaders.151519/libzfs_core.c0000644000000000000000000000007413607166147021142 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730472.842533899 zfs-0.8.3/lib/libzfs_core/libzfs_core.c0000644016037001603700000012732613607166147021152 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. * Copyright (c) 2017 Datto Inc. * Copyright 2017 RackTop Systems. * Copyright (c) 2017 Open-E, Inc. All Rights Reserved. */ /* * LibZFS_Core (lzc) is intended to replace most functionality in libzfs. * It has the following characteristics: * * - Thread Safe. libzfs_core is accessible concurrently from multiple * threads. This is accomplished primarily by avoiding global data * (e.g. caching). Since it's thread-safe, there is no reason for a * process to have multiple libzfs "instances". Therefore, we store * our few pieces of data (e.g. the file descriptor) in global * variables. The fd is reference-counted so that the libzfs_core * library can be "initialized" multiple times (e.g. by different * consumers within the same process). * * - Committed Interface. The libzfs_core interface will be committed, * therefore consumers can compile against it and be confident that * their code will continue to work on future releases of this code. * Currently, the interface is Evolving (not Committed), but we intend * to commit to it once it is more complete and we determine that it * meets the needs of all consumers. * * - Programmatic Error Handling. libzfs_core communicates errors with * defined error numbers, and doesn't print anything to stdout/stderr. * * - Thin Layer. libzfs_core is a thin layer, marshaling arguments * to/from the kernel ioctls. There is generally a 1:1 correspondence * between libzfs_core functions and ioctls to ZFS_DEV. * * - Clear Atomicity. Because libzfs_core functions are generally 1:1 * with kernel ioctls, and kernel ioctls are general atomic, each * libzfs_core function is atomic. For example, creating multiple * snapshots with a single call to lzc_snapshot() is atomic -- it * can't fail with only some of the requested snapshots created, even * in the event of power loss or system crash. * * - Continued libzfs Support. Some higher-level operations (e.g. * support for "zfs send -R") are too complicated to fit the scope of * libzfs_core. This functionality will continue to live in libzfs. * Where appropriate, libzfs will use the underlying atomic operations * of libzfs_core. For example, libzfs may implement "zfs send -R | * zfs receive" by using individual "send one snapshot", rename, * destroy, and "receive one snapshot" operations in libzfs_core. * /sbin/zfs and /sbin/zpool will link with both libzfs and * libzfs_core. Other consumers should aim to use only libzfs_core, * since that will be the supported, stable interface going forwards. */ #include #include #include #include #include #ifdef ZFS_DEBUG #include #endif #include #include #include #include #include #include #include #include static int g_fd = -1; static pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER; static int g_refcount; #ifdef ZFS_DEBUG static zfs_ioc_t fail_ioc_cmd; static zfs_errno_t fail_ioc_err; static void libzfs_core_debug_ioc(void) { /* * To test running newer user space binaries with kernel's * that don't yet support an ioctl or a new ioctl arg we * provide an override to intentionally fail an ioctl. * * USAGE: * The override variable, ZFS_IOC_TEST, is of the form "cmd:err" * * For example, to fail a ZFS_IOC_POOL_CHECKPOINT with a * ZFS_ERR_IOC_CMD_UNAVAIL, the string would be "0x5a4d:1029" * * $ sudo sh -c "ZFS_IOC_TEST=0x5a4d:1029 zpool checkpoint tank" * cannot checkpoint 'tank': the loaded zfs module does not support * this operation. A reboot may be required to enable this operation. */ if (fail_ioc_cmd == 0) { char *ioc_test = getenv("ZFS_IOC_TEST"); unsigned int ioc_num = 0, ioc_err = 0; if (ioc_test != NULL && sscanf(ioc_test, "%i:%i", &ioc_num, &ioc_err) == 2 && ioc_num < ZFS_IOC_LAST) { fail_ioc_cmd = ioc_num; fail_ioc_err = ioc_err; } } } #endif int libzfs_core_init(void) { (void) pthread_mutex_lock(&g_lock); if (g_refcount == 0) { g_fd = open(ZFS_DEV, O_RDWR); if (g_fd < 0) { (void) pthread_mutex_unlock(&g_lock); return (errno); } } g_refcount++; #ifdef ZFS_DEBUG libzfs_core_debug_ioc(); #endif (void) pthread_mutex_unlock(&g_lock); return (0); } void libzfs_core_fini(void) { (void) pthread_mutex_lock(&g_lock); ASSERT3S(g_refcount, >, 0); if (g_refcount > 0) g_refcount--; if (g_refcount == 0 && g_fd != -1) { (void) close(g_fd); g_fd = -1; } (void) pthread_mutex_unlock(&g_lock); } static int lzc_ioctl(zfs_ioc_t ioc, const char *name, nvlist_t *source, nvlist_t **resultp) { zfs_cmd_t zc = {"\0"}; int error = 0; char *packed = NULL; size_t size = 0; ASSERT3S(g_refcount, >, 0); VERIFY3S(g_fd, !=, -1); #ifdef ZFS_DEBUG if (ioc == fail_ioc_cmd) return (fail_ioc_err); #endif if (name != NULL) (void) strlcpy(zc.zc_name, name, sizeof (zc.zc_name)); if (source != NULL) { packed = fnvlist_pack(source, &size); zc.zc_nvlist_src = (uint64_t)(uintptr_t)packed; zc.zc_nvlist_src_size = size; } if (resultp != NULL) { *resultp = NULL; if (ioc == ZFS_IOC_CHANNEL_PROGRAM) { zc.zc_nvlist_dst_size = fnvlist_lookup_uint64(source, ZCP_ARG_MEMLIMIT); } else { zc.zc_nvlist_dst_size = MAX(size * 2, 128 * 1024); } zc.zc_nvlist_dst = (uint64_t)(uintptr_t) malloc(zc.zc_nvlist_dst_size); if (zc.zc_nvlist_dst == (uint64_t)0) { error = ENOMEM; goto out; } } while (ioctl(g_fd, ioc, &zc) != 0) { /* * If ioctl exited with ENOMEM, we retry the ioctl after * increasing the size of the destination nvlist. * * Channel programs that exit with ENOMEM ran over the * lua memory sandbox; they should not be retried. */ if (errno == ENOMEM && resultp != NULL && ioc != ZFS_IOC_CHANNEL_PROGRAM) { free((void *)(uintptr_t)zc.zc_nvlist_dst); zc.zc_nvlist_dst_size *= 2; zc.zc_nvlist_dst = (uint64_t)(uintptr_t) malloc(zc.zc_nvlist_dst_size); if (zc.zc_nvlist_dst == (uint64_t)0) { error = ENOMEM; goto out; } } else { error = errno; break; } } if (zc.zc_nvlist_dst_filled) { *resultp = fnvlist_unpack((void *)(uintptr_t)zc.zc_nvlist_dst, zc.zc_nvlist_dst_size); } out: if (packed != NULL) fnvlist_pack_free(packed, size); free((void *)(uintptr_t)zc.zc_nvlist_dst); return (error); } int lzc_create(const char *fsname, enum lzc_dataset_type type, nvlist_t *props, uint8_t *wkeydata, uint_t wkeylen) { int error; nvlist_t *hidden_args = NULL; nvlist_t *args = fnvlist_alloc(); fnvlist_add_int32(args, "type", (dmu_objset_type_t)type); if (props != NULL) fnvlist_add_nvlist(args, "props", props); if (wkeydata != NULL) { hidden_args = fnvlist_alloc(); fnvlist_add_uint8_array(hidden_args, "wkeydata", wkeydata, wkeylen); fnvlist_add_nvlist(args, ZPOOL_HIDDEN_ARGS, hidden_args); } error = lzc_ioctl(ZFS_IOC_CREATE, fsname, args, NULL); nvlist_free(hidden_args); nvlist_free(args); return (error); } int lzc_clone(const char *fsname, const char *origin, nvlist_t *props) { int error; nvlist_t *hidden_args = NULL; nvlist_t *args = fnvlist_alloc(); fnvlist_add_string(args, "origin", origin); if (props != NULL) fnvlist_add_nvlist(args, "props", props); error = lzc_ioctl(ZFS_IOC_CLONE, fsname, args, NULL); nvlist_free(hidden_args); nvlist_free(args); return (error); } int lzc_promote(const char *fsname, char *snapnamebuf, int snapnamelen) { /* * The promote ioctl is still legacy, so we need to construct our * own zfs_cmd_t rather than using lzc_ioctl(). */ zfs_cmd_t zc = { "\0" }; ASSERT3S(g_refcount, >, 0); VERIFY3S(g_fd, !=, -1); (void) strlcpy(zc.zc_name, fsname, sizeof (zc.zc_name)); if (ioctl(g_fd, ZFS_IOC_PROMOTE, &zc) != 0) { int error = errno; if (error == EEXIST && snapnamebuf != NULL) (void) strlcpy(snapnamebuf, zc.zc_string, snapnamelen); return (error); } return (0); } int lzc_remap(const char *fsname) { int error; nvlist_t *args = fnvlist_alloc(); error = lzc_ioctl(ZFS_IOC_REMAP, fsname, args, NULL); nvlist_free(args); return (error); } int lzc_rename(const char *source, const char *target) { zfs_cmd_t zc = { "\0" }; int error; ASSERT3S(g_refcount, >, 0); VERIFY3S(g_fd, !=, -1); (void) strlcpy(zc.zc_name, source, sizeof (zc.zc_name)); (void) strlcpy(zc.zc_value, target, sizeof (zc.zc_value)); error = ioctl(g_fd, ZFS_IOC_RENAME, &zc); if (error != 0) error = errno; return (error); } int lzc_destroy(const char *fsname) { int error; nvlist_t *args = fnvlist_alloc(); error = lzc_ioctl(ZFS_IOC_DESTROY, fsname, args, NULL); nvlist_free(args); return (error); } /* * Creates snapshots. * * The keys in the snaps nvlist are the snapshots to be created. * They must all be in the same pool. * * The props nvlist is properties to set. Currently only user properties * are supported. { user:prop_name -> string value } * * The returned results nvlist will have an entry for each snapshot that failed. * The value will be the (int32) error code. * * The return value will be 0 if all snapshots were created, otherwise it will * be the errno of a (unspecified) snapshot that failed. */ int lzc_snapshot(nvlist_t *snaps, nvlist_t *props, nvlist_t **errlist) { nvpair_t *elem; nvlist_t *args; int error; char pool[ZFS_MAX_DATASET_NAME_LEN]; *errlist = NULL; /* determine the pool name */ elem = nvlist_next_nvpair(snaps, NULL); if (elem == NULL) return (0); (void) strlcpy(pool, nvpair_name(elem), sizeof (pool)); pool[strcspn(pool, "/@")] = '\0'; args = fnvlist_alloc(); fnvlist_add_nvlist(args, "snaps", snaps); if (props != NULL) fnvlist_add_nvlist(args, "props", props); error = lzc_ioctl(ZFS_IOC_SNAPSHOT, pool, args, errlist); nvlist_free(args); return (error); } /* * Destroys snapshots. * * The keys in the snaps nvlist are the snapshots to be destroyed. * They must all be in the same pool. * * Snapshots that do not exist will be silently ignored. * * If 'defer' is not set, and a snapshot has user holds or clones, the * destroy operation will fail and none of the snapshots will be * destroyed. * * If 'defer' is set, and a snapshot has user holds or clones, it will be * marked for deferred destruction, and will be destroyed when the last hold * or clone is removed/destroyed. * * The return value will be 0 if all snapshots were destroyed (or marked for * later destruction if 'defer' is set) or didn't exist to begin with. * * Otherwise the return value will be the errno of a (unspecified) snapshot * that failed, no snapshots will be destroyed, and the errlist will have an * entry for each snapshot that failed. The value in the errlist will be * the (int32) error code. */ int lzc_destroy_snaps(nvlist_t *snaps, boolean_t defer, nvlist_t **errlist) { nvpair_t *elem; nvlist_t *args; int error; char pool[ZFS_MAX_DATASET_NAME_LEN]; /* determine the pool name */ elem = nvlist_next_nvpair(snaps, NULL); if (elem == NULL) return (0); (void) strlcpy(pool, nvpair_name(elem), sizeof (pool)); pool[strcspn(pool, "/@")] = '\0'; args = fnvlist_alloc(); fnvlist_add_nvlist(args, "snaps", snaps); if (defer) fnvlist_add_boolean(args, "defer"); error = lzc_ioctl(ZFS_IOC_DESTROY_SNAPS, pool, args, errlist); nvlist_free(args); return (error); } int lzc_snaprange_space(const char *firstsnap, const char *lastsnap, uint64_t *usedp) { nvlist_t *args; nvlist_t *result; int err; char fs[ZFS_MAX_DATASET_NAME_LEN]; char *atp; /* determine the fs name */ (void) strlcpy(fs, firstsnap, sizeof (fs)); atp = strchr(fs, '@'); if (atp == NULL) return (EINVAL); *atp = '\0'; args = fnvlist_alloc(); fnvlist_add_string(args, "firstsnap", firstsnap); err = lzc_ioctl(ZFS_IOC_SPACE_SNAPS, lastsnap, args, &result); nvlist_free(args); if (err == 0) *usedp = fnvlist_lookup_uint64(result, "used"); fnvlist_free(result); return (err); } boolean_t lzc_exists(const char *dataset) { /* * The objset_stats ioctl is still legacy, so we need to construct our * own zfs_cmd_t rather than using lzc_ioctl(). */ zfs_cmd_t zc = {"\0"}; ASSERT3S(g_refcount, >, 0); VERIFY3S(g_fd, !=, -1); (void) strlcpy(zc.zc_name, dataset, sizeof (zc.zc_name)); return (ioctl(g_fd, ZFS_IOC_OBJSET_STATS, &zc) == 0); } /* * outnvl is unused. * It was added to preserve the function signature in case it is * needed in the future. */ /*ARGSUSED*/ int lzc_sync(const char *pool_name, nvlist_t *innvl, nvlist_t **outnvl) { return (lzc_ioctl(ZFS_IOC_POOL_SYNC, pool_name, innvl, NULL)); } /* * Create "user holds" on snapshots. If there is a hold on a snapshot, * the snapshot can not be destroyed. (However, it can be marked for deletion * by lzc_destroy_snaps(defer=B_TRUE).) * * The keys in the nvlist are snapshot names. * The snapshots must all be in the same pool. * The value is the name of the hold (string type). * * If cleanup_fd is not -1, it must be the result of open(ZFS_DEV, O_EXCL). * In this case, when the cleanup_fd is closed (including on process * termination), the holds will be released. If the system is shut down * uncleanly, the holds will be released when the pool is next opened * or imported. * * Holds for snapshots which don't exist will be skipped and have an entry * added to errlist, but will not cause an overall failure. * * The return value will be 0 if all holds, for snapshots that existed, * were successfully created. * * Otherwise the return value will be the errno of a (unspecified) hold that * failed and no holds will be created. * * In all cases the errlist will have an entry for each hold that failed * (name = snapshot), with its value being the error code (int32). */ int lzc_hold(nvlist_t *holds, int cleanup_fd, nvlist_t **errlist) { char pool[ZFS_MAX_DATASET_NAME_LEN]; nvlist_t *args; nvpair_t *elem; int error; /* determine the pool name */ elem = nvlist_next_nvpair(holds, NULL); if (elem == NULL) return (0); (void) strlcpy(pool, nvpair_name(elem), sizeof (pool)); pool[strcspn(pool, "/@")] = '\0'; args = fnvlist_alloc(); fnvlist_add_nvlist(args, "holds", holds); if (cleanup_fd != -1) fnvlist_add_int32(args, "cleanup_fd", cleanup_fd); error = lzc_ioctl(ZFS_IOC_HOLD, pool, args, errlist); nvlist_free(args); return (error); } /* * Release "user holds" on snapshots. If the snapshot has been marked for * deferred destroy (by lzc_destroy_snaps(defer=B_TRUE)), it does not have * any clones, and all the user holds are removed, then the snapshot will be * destroyed. * * The keys in the nvlist are snapshot names. * The snapshots must all be in the same pool. * The value is an nvlist whose keys are the holds to remove. * * Holds which failed to release because they didn't exist will have an entry * added to errlist, but will not cause an overall failure. * * The return value will be 0 if the nvl holds was empty or all holds that * existed, were successfully removed. * * Otherwise the return value will be the errno of a (unspecified) hold that * failed to release and no holds will be released. * * In all cases the errlist will have an entry for each hold that failed to * to release. */ int lzc_release(nvlist_t *holds, nvlist_t **errlist) { char pool[ZFS_MAX_DATASET_NAME_LEN]; nvpair_t *elem; /* determine the pool name */ elem = nvlist_next_nvpair(holds, NULL); if (elem == NULL) return (0); (void) strlcpy(pool, nvpair_name(elem), sizeof (pool)); pool[strcspn(pool, "/@")] = '\0'; return (lzc_ioctl(ZFS_IOC_RELEASE, pool, holds, errlist)); } /* * Retrieve list of user holds on the specified snapshot. * * On success, *holdsp will be set to an nvlist which the caller must free. * The keys are the names of the holds, and the value is the creation time * of the hold (uint64) in seconds since the epoch. */ int lzc_get_holds(const char *snapname, nvlist_t **holdsp) { return (lzc_ioctl(ZFS_IOC_GET_HOLDS, snapname, NULL, holdsp)); } /* * Generate a zfs send stream for the specified snapshot and write it to * the specified file descriptor. * * "snapname" is the full name of the snapshot to send (e.g. "pool/fs@snap") * * If "from" is NULL, a full (non-incremental) stream will be sent. * If "from" is non-NULL, it must be the full name of a snapshot or * bookmark to send an incremental from (e.g. "pool/fs@earlier_snap" or * "pool/fs#earlier_bmark"). If non-NULL, the specified snapshot or * bookmark must represent an earlier point in the history of "snapname"). * It can be an earlier snapshot in the same filesystem or zvol as "snapname", * or it can be the origin of "snapname"'s filesystem, or an earlier * snapshot in the origin, etc. * * "fd" is the file descriptor to write the send stream to. * * If "flags" contains LZC_SEND_FLAG_LARGE_BLOCK, the stream is permitted * to contain DRR_WRITE records with drr_length > 128K, and DRR_OBJECT * records with drr_blksz > 128K. * * If "flags" contains LZC_SEND_FLAG_EMBED_DATA, the stream is permitted * to contain DRR_WRITE_EMBEDDED records with drr_etype==BP_EMBEDDED_TYPE_DATA, * which the receiving system must support (as indicated by support * for the "embedded_data" feature). * * If "flags" contains LZC_SEND_FLAG_COMPRESS, the stream is generated by using * compressed WRITE records for blocks which are compressed on disk and in * memory. If the lz4_compress feature is active on the sending system, then * the receiving system must have that feature enabled as well. * * If "flags" contains LZC_SEND_FLAG_RAW, the stream is generated, for encrypted * datasets, by sending data exactly as it exists on disk. This allows backups * to be taken even if encryption keys are not currently loaded. */ int lzc_send(const char *snapname, const char *from, int fd, enum lzc_send_flags flags) { return (lzc_send_resume(snapname, from, fd, flags, 0, 0)); } int lzc_send_resume(const char *snapname, const char *from, int fd, enum lzc_send_flags flags, uint64_t resumeobj, uint64_t resumeoff) { nvlist_t *args; int err; args = fnvlist_alloc(); fnvlist_add_int32(args, "fd", fd); if (from != NULL) fnvlist_add_string(args, "fromsnap", from); if (flags & LZC_SEND_FLAG_LARGE_BLOCK) fnvlist_add_boolean(args, "largeblockok"); if (flags & LZC_SEND_FLAG_EMBED_DATA) fnvlist_add_boolean(args, "embedok"); if (flags & LZC_SEND_FLAG_COMPRESS) fnvlist_add_boolean(args, "compressok"); if (flags & LZC_SEND_FLAG_RAW) fnvlist_add_boolean(args, "rawok"); if (resumeobj != 0 || resumeoff != 0) { fnvlist_add_uint64(args, "resume_object", resumeobj); fnvlist_add_uint64(args, "resume_offset", resumeoff); } err = lzc_ioctl(ZFS_IOC_SEND_NEW, snapname, args, NULL); nvlist_free(args); return (err); } /* * "from" can be NULL, a snapshot, or a bookmark. * * If from is NULL, a full (non-incremental) stream will be estimated. This * is calculated very efficiently. * * If from is a snapshot, lzc_send_space uses the deadlists attached to * each snapshot to efficiently estimate the stream size. * * If from is a bookmark, the indirect blocks in the destination snapshot * are traversed, looking for blocks with a birth time since the creation TXG of * the snapshot this bookmark was created from. This will result in * significantly more I/O and be less efficient than a send space estimation on * an equivalent snapshot. */ int lzc_send_space(const char *snapname, const char *from, enum lzc_send_flags flags, uint64_t *spacep) { nvlist_t *args; nvlist_t *result; int err; args = fnvlist_alloc(); if (from != NULL) fnvlist_add_string(args, "from", from); if (flags & LZC_SEND_FLAG_LARGE_BLOCK) fnvlist_add_boolean(args, "largeblockok"); if (flags & LZC_SEND_FLAG_EMBED_DATA) fnvlist_add_boolean(args, "embedok"); if (flags & LZC_SEND_FLAG_COMPRESS) fnvlist_add_boolean(args, "compressok"); if (flags & LZC_SEND_FLAG_RAW) fnvlist_add_boolean(args, "rawok"); err = lzc_ioctl(ZFS_IOC_SEND_SPACE, snapname, args, &result); nvlist_free(args); if (err == 0) *spacep = fnvlist_lookup_uint64(result, "space"); nvlist_free(result); return (err); } static int recv_read(int fd, void *buf, int ilen) { char *cp = buf; int rv; int len = ilen; do { rv = read(fd, cp, len); cp += rv; len -= rv; } while (rv > 0); if (rv < 0 || len != 0) return (EIO); return (0); } /* * Linux adds ZFS_IOC_RECV_NEW for resumable and raw streams and preserves the * legacy ZFS_IOC_RECV user/kernel interface. The new interface supports all * stream options but is currently only used for resumable streams. This way * updated user space utilities will interoperate with older kernel modules. * * Non-Linux OpenZFS platforms have opted to modify the legacy interface. */ static int recv_impl(const char *snapname, nvlist_t *recvdprops, nvlist_t *localprops, uint8_t *wkeydata, uint_t wkeylen, const char *origin, boolean_t force, boolean_t resumable, boolean_t raw, int input_fd, const dmu_replay_record_t *begin_record, int cleanup_fd, uint64_t *read_bytes, uint64_t *errflags, uint64_t *action_handle, nvlist_t **errors) { dmu_replay_record_t drr; char fsname[MAXPATHLEN]; char *atp; int error; ASSERT3S(g_refcount, >, 0); VERIFY3S(g_fd, !=, -1); /* Set 'fsname' to the name of containing filesystem */ (void) strlcpy(fsname, snapname, sizeof (fsname)); atp = strchr(fsname, '@'); if (atp == NULL) return (EINVAL); *atp = '\0'; /* If the fs does not exist, try its parent. */ if (!lzc_exists(fsname)) { char *slashp = strrchr(fsname, '/'); if (slashp == NULL) return (ENOENT); *slashp = '\0'; } /* * The begin_record is normally a non-byteswapped BEGIN record. * For resumable streams it may be set to any non-byteswapped * dmu_replay_record_t. */ if (begin_record == NULL) { error = recv_read(input_fd, &drr, sizeof (drr)); if (error != 0) return (error); } else { drr = *begin_record; } /* * Raw receives, resumable receives, and receives that include a * wrapping key all use the new interface. */ if (resumable || raw || wkeydata != NULL) { nvlist_t *outnvl = NULL; nvlist_t *innvl = fnvlist_alloc(); fnvlist_add_string(innvl, "snapname", snapname); if (recvdprops != NULL) fnvlist_add_nvlist(innvl, "props", recvdprops); if (localprops != NULL) fnvlist_add_nvlist(innvl, "localprops", localprops); if (wkeydata != NULL) { /* * wkeydata must be placed in the special * ZPOOL_HIDDEN_ARGS nvlist so that it * will not be printed to the zpool history. */ nvlist_t *hidden_args = fnvlist_alloc(); fnvlist_add_uint8_array(hidden_args, "wkeydata", wkeydata, wkeylen); fnvlist_add_nvlist(innvl, ZPOOL_HIDDEN_ARGS, hidden_args); nvlist_free(hidden_args); } if (origin != NULL && strlen(origin)) fnvlist_add_string(innvl, "origin", origin); fnvlist_add_byte_array(innvl, "begin_record", (uchar_t *)&drr, sizeof (drr)); fnvlist_add_int32(innvl, "input_fd", input_fd); if (force) fnvlist_add_boolean(innvl, "force"); if (resumable) fnvlist_add_boolean(innvl, "resumable"); if (cleanup_fd >= 0) fnvlist_add_int32(innvl, "cleanup_fd", cleanup_fd); if (action_handle != NULL) fnvlist_add_uint64(innvl, "action_handle", *action_handle); error = lzc_ioctl(ZFS_IOC_RECV_NEW, fsname, innvl, &outnvl); if (error == 0 && read_bytes != NULL) error = nvlist_lookup_uint64(outnvl, "read_bytes", read_bytes); if (error == 0 && errflags != NULL) error = nvlist_lookup_uint64(outnvl, "error_flags", errflags); if (error == 0 && action_handle != NULL) error = nvlist_lookup_uint64(outnvl, "action_handle", action_handle); if (error == 0 && errors != NULL) { nvlist_t *nvl; error = nvlist_lookup_nvlist(outnvl, "errors", &nvl); if (error == 0) *errors = fnvlist_dup(nvl); } fnvlist_free(innvl); fnvlist_free(outnvl); } else { zfs_cmd_t zc = {"\0"}; char *packed = NULL; size_t size; ASSERT3S(g_refcount, >, 0); (void) strlcpy(zc.zc_name, fsname, sizeof (zc.zc_name)); (void) strlcpy(zc.zc_value, snapname, sizeof (zc.zc_value)); if (recvdprops != NULL) { packed = fnvlist_pack(recvdprops, &size); zc.zc_nvlist_src = (uint64_t)(uintptr_t)packed; zc.zc_nvlist_src_size = size; } if (localprops != NULL) { packed = fnvlist_pack(localprops, &size); zc.zc_nvlist_conf = (uint64_t)(uintptr_t)packed; zc.zc_nvlist_conf_size = size; } if (origin != NULL) (void) strlcpy(zc.zc_string, origin, sizeof (zc.zc_string)); ASSERT3S(drr.drr_type, ==, DRR_BEGIN); zc.zc_begin_record = drr.drr_u.drr_begin; zc.zc_guid = force; zc.zc_cookie = input_fd; zc.zc_cleanup_fd = -1; zc.zc_action_handle = 0; if (cleanup_fd >= 0) zc.zc_cleanup_fd = cleanup_fd; if (action_handle != NULL) zc.zc_action_handle = *action_handle; zc.zc_nvlist_dst_size = 128 * 1024; zc.zc_nvlist_dst = (uint64_t)(uintptr_t) malloc(zc.zc_nvlist_dst_size); error = ioctl(g_fd, ZFS_IOC_RECV, &zc); if (error != 0) { error = errno; } else { if (read_bytes != NULL) *read_bytes = zc.zc_cookie; if (errflags != NULL) *errflags = zc.zc_obj; if (action_handle != NULL) *action_handle = zc.zc_action_handle; if (errors != NULL) VERIFY0(nvlist_unpack( (void *)(uintptr_t)zc.zc_nvlist_dst, zc.zc_nvlist_dst_size, errors, KM_SLEEP)); } if (packed != NULL) fnvlist_pack_free(packed, size); free((void *)(uintptr_t)zc.zc_nvlist_dst); } return (error); } /* * The simplest receive case: receive from the specified fd, creating the * specified snapshot. Apply the specified properties as "received" properties * (which can be overridden by locally-set properties). If the stream is a * clone, its origin snapshot must be specified by 'origin'. The 'force' * flag will cause the target filesystem to be rolled back or destroyed if * necessary to receive. * * Return 0 on success or an errno on failure. * * Note: this interface does not work on dedup'd streams * (those with DMU_BACKUP_FEATURE_DEDUP). */ int lzc_receive(const char *snapname, nvlist_t *props, const char *origin, boolean_t force, boolean_t raw, int fd) { return (recv_impl(snapname, props, NULL, NULL, 0, origin, force, B_FALSE, raw, fd, NULL, -1, NULL, NULL, NULL, NULL)); } /* * Like lzc_receive, but if the receive fails due to premature stream * termination, the intermediate state will be preserved on disk. In this * case, ECKSUM will be returned. The receive may subsequently be resumed * with a resuming send stream generated by lzc_send_resume(). */ int lzc_receive_resumable(const char *snapname, nvlist_t *props, const char *origin, boolean_t force, boolean_t raw, int fd) { return (recv_impl(snapname, props, NULL, NULL, 0, origin, force, B_TRUE, raw, fd, NULL, -1, NULL, NULL, NULL, NULL)); } /* * Like lzc_receive, but allows the caller to read the begin record and then to * pass it in. That could be useful if the caller wants to derive, for example, * the snapname or the origin parameters based on the information contained in * the begin record. * The begin record must be in its original form as read from the stream, * in other words, it should not be byteswapped. * * The 'resumable' parameter allows to obtain the same behavior as with * lzc_receive_resumable. */ int lzc_receive_with_header(const char *snapname, nvlist_t *props, const char *origin, boolean_t force, boolean_t resumable, boolean_t raw, int fd, const dmu_replay_record_t *begin_record) { if (begin_record == NULL) return (EINVAL); return (recv_impl(snapname, props, NULL, NULL, 0, origin, force, resumable, raw, fd, begin_record, -1, NULL, NULL, NULL, NULL)); } /* * Like lzc_receive, but allows the caller to pass all supported arguments * and retrieve all values returned. The only additional input parameter * is 'cleanup_fd' which is used to set a cleanup-on-exit file descriptor. * * The following parameters all provide return values. Several may be set * in the failure case and will contain additional information. * * The 'read_bytes' value will be set to the total number of bytes read. * * The 'errflags' value will contain zprop_errflags_t flags which are * used to describe any failures. * * The 'action_handle' is used to pass the handle for this guid/ds mapping. * It should be set to zero on first call and will contain an updated handle * on success, it should be passed in subsequent calls. * * The 'errors' nvlist contains an entry for each unapplied received * property. Callers are responsible for freeing this nvlist. */ int lzc_receive_one(const char *snapname, nvlist_t *props, const char *origin, boolean_t force, boolean_t resumable, boolean_t raw, int input_fd, const dmu_replay_record_t *begin_record, int cleanup_fd, uint64_t *read_bytes, uint64_t *errflags, uint64_t *action_handle, nvlist_t **errors) { return (recv_impl(snapname, props, NULL, NULL, 0, origin, force, resumable, raw, input_fd, begin_record, cleanup_fd, read_bytes, errflags, action_handle, errors)); } /* * Like lzc_receive_one, but allows the caller to pass an additional 'cmdprops' * argument. * * The 'cmdprops' nvlist contains both override ('zfs receive -o') and * exclude ('zfs receive -x') properties. Callers are responsible for freeing * this nvlist */ int lzc_receive_with_cmdprops(const char *snapname, nvlist_t *props, nvlist_t *cmdprops, uint8_t *wkeydata, uint_t wkeylen, const char *origin, boolean_t force, boolean_t resumable, boolean_t raw, int input_fd, const dmu_replay_record_t *begin_record, int cleanup_fd, uint64_t *read_bytes, uint64_t *errflags, uint64_t *action_handle, nvlist_t **errors) { return (recv_impl(snapname, props, cmdprops, wkeydata, wkeylen, origin, force, resumable, raw, input_fd, begin_record, cleanup_fd, read_bytes, errflags, action_handle, errors)); } /* * Roll back this filesystem or volume to its most recent snapshot. * If snapnamebuf is not NULL, it will be filled in with the name * of the most recent snapshot. * Note that the latest snapshot may change if a new one is concurrently * created or the current one is destroyed. lzc_rollback_to can be used * to roll back to a specific latest snapshot. * * Return 0 on success or an errno on failure. */ int lzc_rollback(const char *fsname, char *snapnamebuf, int snapnamelen) { nvlist_t *args; nvlist_t *result; int err; args = fnvlist_alloc(); err = lzc_ioctl(ZFS_IOC_ROLLBACK, fsname, args, &result); nvlist_free(args); if (err == 0 && snapnamebuf != NULL) { const char *snapname = fnvlist_lookup_string(result, "target"); (void) strlcpy(snapnamebuf, snapname, snapnamelen); } nvlist_free(result); return (err); } /* * Roll back this filesystem or volume to the specified snapshot, * if possible. * * Return 0 on success or an errno on failure. */ int lzc_rollback_to(const char *fsname, const char *snapname) { nvlist_t *args; nvlist_t *result; int err; args = fnvlist_alloc(); fnvlist_add_string(args, "target", snapname); err = lzc_ioctl(ZFS_IOC_ROLLBACK, fsname, args, &result); nvlist_free(args); nvlist_free(result); return (err); } /* * Creates bookmarks. * * The bookmarks nvlist maps from name of the bookmark (e.g. "pool/fs#bmark") to * the name of the snapshot (e.g. "pool/fs@snap"). All the bookmarks and * snapshots must be in the same pool. * * The returned results nvlist will have an entry for each bookmark that failed. * The value will be the (int32) error code. * * The return value will be 0 if all bookmarks were created, otherwise it will * be the errno of a (undetermined) bookmarks that failed. */ int lzc_bookmark(nvlist_t *bookmarks, nvlist_t **errlist) { nvpair_t *elem; int error; char pool[ZFS_MAX_DATASET_NAME_LEN]; /* determine the pool name */ elem = nvlist_next_nvpair(bookmarks, NULL); if (elem == NULL) return (0); (void) strlcpy(pool, nvpair_name(elem), sizeof (pool)); pool[strcspn(pool, "/#")] = '\0'; error = lzc_ioctl(ZFS_IOC_BOOKMARK, pool, bookmarks, errlist); return (error); } /* * Retrieve bookmarks. * * Retrieve the list of bookmarks for the given file system. The props * parameter is an nvlist of property names (with no values) that will be * returned for each bookmark. * * The following are valid properties on bookmarks, all of which are numbers * (represented as uint64 in the nvlist) * * "guid" - globally unique identifier of the snapshot it refers to * "createtxg" - txg when the snapshot it refers to was created * "creation" - timestamp when the snapshot it refers to was created * "ivsetguid" - IVset guid for identifying encrypted snapshots * * The format of the returned nvlist as follows: * -> { * -> { * "value" -> uint64 * } * } */ int lzc_get_bookmarks(const char *fsname, nvlist_t *props, nvlist_t **bmarks) { return (lzc_ioctl(ZFS_IOC_GET_BOOKMARKS, fsname, props, bmarks)); } /* * Destroys bookmarks. * * The keys in the bmarks nvlist are the bookmarks to be destroyed. * They must all be in the same pool. Bookmarks are specified as * #. * * Bookmarks that do not exist will be silently ignored. * * The return value will be 0 if all bookmarks that existed were destroyed. * * Otherwise the return value will be the errno of a (undetermined) bookmark * that failed, no bookmarks will be destroyed, and the errlist will have an * entry for each bookmarks that failed. The value in the errlist will be * the (int32) error code. */ int lzc_destroy_bookmarks(nvlist_t *bmarks, nvlist_t **errlist) { nvpair_t *elem; int error; char pool[ZFS_MAX_DATASET_NAME_LEN]; /* determine the pool name */ elem = nvlist_next_nvpair(bmarks, NULL); if (elem == NULL) return (0); (void) strlcpy(pool, nvpair_name(elem), sizeof (pool)); pool[strcspn(pool, "/#")] = '\0'; error = lzc_ioctl(ZFS_IOC_DESTROY_BOOKMARKS, pool, bmarks, errlist); return (error); } static int lzc_channel_program_impl(const char *pool, const char *program, boolean_t sync, uint64_t instrlimit, uint64_t memlimit, nvlist_t *argnvl, nvlist_t **outnvl) { int error; nvlist_t *args; args = fnvlist_alloc(); fnvlist_add_string(args, ZCP_ARG_PROGRAM, program); fnvlist_add_nvlist(args, ZCP_ARG_ARGLIST, argnvl); fnvlist_add_boolean_value(args, ZCP_ARG_SYNC, sync); fnvlist_add_uint64(args, ZCP_ARG_INSTRLIMIT, instrlimit); fnvlist_add_uint64(args, ZCP_ARG_MEMLIMIT, memlimit); error = lzc_ioctl(ZFS_IOC_CHANNEL_PROGRAM, pool, args, outnvl); fnvlist_free(args); return (error); } /* * Executes a channel program. * * If this function returns 0 the channel program was successfully loaded and * ran without failing. Note that individual commands the channel program ran * may have failed and the channel program is responsible for reporting such * errors through outnvl if they are important. * * This method may also return: * * EINVAL The program contains syntax errors, or an invalid memory or time * limit was given. No part of the channel program was executed. * If caused by syntax errors, 'outnvl' contains information about the * errors. * * ECHRNG The program was executed, but encountered a runtime error, such as * calling a function with incorrect arguments, invoking the error() * function directly, failing an assert() command, etc. Some portion * of the channel program may have executed and committed changes. * Information about the failure can be found in 'outnvl'. * * ENOMEM The program fully executed, but the output buffer was not large * enough to store the returned value. No output is returned through * 'outnvl'. * * ENOSPC The program was terminated because it exceeded its memory usage * limit. Some portion of the channel program may have executed and * committed changes to disk. No output is returned through 'outnvl'. * * ETIME The program was terminated because it exceeded its Lua instruction * limit. Some portion of the channel program may have executed and * committed changes to disk. No output is returned through 'outnvl'. */ int lzc_channel_program(const char *pool, const char *program, uint64_t instrlimit, uint64_t memlimit, nvlist_t *argnvl, nvlist_t **outnvl) { return (lzc_channel_program_impl(pool, program, B_TRUE, instrlimit, memlimit, argnvl, outnvl)); } /* * Creates a checkpoint for the specified pool. * * If this function returns 0 the pool was successfully checkpointed. * * This method may also return: * * ZFS_ERR_CHECKPOINT_EXISTS * The pool already has a checkpoint. A pools can only have one * checkpoint at most, at any given time. * * ZFS_ERR_DISCARDING_CHECKPOINT * ZFS is in the middle of discarding a checkpoint for this pool. * The pool can be checkpointed again once the discard is done. * * ZFS_DEVRM_IN_PROGRESS * A vdev is currently being removed. The pool cannot be * checkpointed until the device removal is done. * * ZFS_VDEV_TOO_BIG * One or more top-level vdevs exceed the maximum vdev size * supported for this feature. */ int lzc_pool_checkpoint(const char *pool) { int error; nvlist_t *result = NULL; nvlist_t *args = fnvlist_alloc(); error = lzc_ioctl(ZFS_IOC_POOL_CHECKPOINT, pool, args, &result); fnvlist_free(args); fnvlist_free(result); return (error); } /* * Discard the checkpoint from the specified pool. * * If this function returns 0 the checkpoint was successfully discarded. * * This method may also return: * * ZFS_ERR_NO_CHECKPOINT * The pool does not have a checkpoint. * * ZFS_ERR_DISCARDING_CHECKPOINT * ZFS is already in the middle of discarding the checkpoint. */ int lzc_pool_checkpoint_discard(const char *pool) { int error; nvlist_t *result = NULL; nvlist_t *args = fnvlist_alloc(); error = lzc_ioctl(ZFS_IOC_POOL_DISCARD_CHECKPOINT, pool, args, &result); fnvlist_free(args); fnvlist_free(result); return (error); } /* * Executes a read-only channel program. * * A read-only channel program works programmatically the same way as a * normal channel program executed with lzc_channel_program(). The only * difference is it runs exclusively in open-context and therefore can * return faster. The downside to that, is that the program cannot change * on-disk state by calling functions from the zfs.sync submodule. * * The return values of this function (and their meaning) are exactly the * same as the ones described in lzc_channel_program(). */ int lzc_channel_program_nosync(const char *pool, const char *program, uint64_t timeout, uint64_t memlimit, nvlist_t *argnvl, nvlist_t **outnvl) { return (lzc_channel_program_impl(pool, program, B_FALSE, timeout, memlimit, argnvl, outnvl)); } /* * Performs key management functions * * crypto_cmd should be a value from dcp_cmd_t. If the command specifies to * load or change a wrapping key, the key should be specified in the * hidden_args nvlist so that it is not logged. */ int lzc_load_key(const char *fsname, boolean_t noop, uint8_t *wkeydata, uint_t wkeylen) { int error; nvlist_t *ioc_args; nvlist_t *hidden_args; if (wkeydata == NULL) return (EINVAL); ioc_args = fnvlist_alloc(); hidden_args = fnvlist_alloc(); fnvlist_add_uint8_array(hidden_args, "wkeydata", wkeydata, wkeylen); fnvlist_add_nvlist(ioc_args, ZPOOL_HIDDEN_ARGS, hidden_args); if (noop) fnvlist_add_boolean(ioc_args, "noop"); error = lzc_ioctl(ZFS_IOC_LOAD_KEY, fsname, ioc_args, NULL); nvlist_free(hidden_args); nvlist_free(ioc_args); return (error); } int lzc_unload_key(const char *fsname) { return (lzc_ioctl(ZFS_IOC_UNLOAD_KEY, fsname, NULL, NULL)); } int lzc_change_key(const char *fsname, uint64_t crypt_cmd, nvlist_t *props, uint8_t *wkeydata, uint_t wkeylen) { int error; nvlist_t *ioc_args = fnvlist_alloc(); nvlist_t *hidden_args = NULL; fnvlist_add_uint64(ioc_args, "crypt_cmd", crypt_cmd); if (wkeydata != NULL) { hidden_args = fnvlist_alloc(); fnvlist_add_uint8_array(hidden_args, "wkeydata", wkeydata, wkeylen); fnvlist_add_nvlist(ioc_args, ZPOOL_HIDDEN_ARGS, hidden_args); } if (props != NULL) fnvlist_add_nvlist(ioc_args, "props", props); error = lzc_ioctl(ZFS_IOC_CHANGE_KEY, fsname, ioc_args, NULL); nvlist_free(hidden_args); nvlist_free(ioc_args); return (error); } int lzc_reopen(const char *pool_name, boolean_t scrub_restart) { nvlist_t *args = fnvlist_alloc(); int error; fnvlist_add_boolean_value(args, "scrub_restart", scrub_restart); error = lzc_ioctl(ZFS_IOC_POOL_REOPEN, pool_name, args, NULL); nvlist_free(args); return (error); } /* * Changes initializing state. * * vdevs should be a list of (, guid) where guid is a uint64 vdev GUID. * The key is ignored. * * If there are errors related to vdev arguments, per-vdev errors are returned * in an nvlist with the key "vdevs". Each error is a (guid, errno) pair where * guid is stringified with PRIu64, and errno is one of the following as * an int64_t: * - ENODEV if the device was not found * - EINVAL if the devices is not a leaf or is not concrete (e.g. missing) * - EROFS if the device is not writeable * - EBUSY start requested but the device is already being either * initialized or trimmed * - ESRCH cancel/suspend requested but device is not being initialized * * If the errlist is empty, then return value will be: * - EINVAL if one or more arguments was invalid * - Other spa_open failures * - 0 if the operation succeeded */ int lzc_initialize(const char *poolname, pool_initialize_func_t cmd_type, nvlist_t *vdevs, nvlist_t **errlist) { int error; nvlist_t *args = fnvlist_alloc(); fnvlist_add_uint64(args, ZPOOL_INITIALIZE_COMMAND, (uint64_t)cmd_type); fnvlist_add_nvlist(args, ZPOOL_INITIALIZE_VDEVS, vdevs); error = lzc_ioctl(ZFS_IOC_POOL_INITIALIZE, poolname, args, errlist); fnvlist_free(args); return (error); } /* * Changes TRIM state. * * vdevs should be a list of (, guid) where guid is a uint64 vdev GUID. * The key is ignored. * * If there are errors related to vdev arguments, per-vdev errors are returned * in an nvlist with the key "vdevs". Each error is a (guid, errno) pair where * guid is stringified with PRIu64, and errno is one of the following as * an int64_t: * - ENODEV if the device was not found * - EINVAL if the devices is not a leaf or is not concrete (e.g. missing) * - EROFS if the device is not writeable * - EBUSY start requested but the device is already being either trimmed * or initialized * - ESRCH cancel/suspend requested but device is not being initialized * - EOPNOTSUPP if the device does not support TRIM (or secure TRIM) * * If the errlist is empty, then return value will be: * - EINVAL if one or more arguments was invalid * - Other spa_open failures * - 0 if the operation succeeded */ int lzc_trim(const char *poolname, pool_trim_func_t cmd_type, uint64_t rate, boolean_t secure, nvlist_t *vdevs, nvlist_t **errlist) { int error; nvlist_t *args = fnvlist_alloc(); fnvlist_add_uint64(args, ZPOOL_TRIM_COMMAND, (uint64_t)cmd_type); fnvlist_add_nvlist(args, ZPOOL_TRIM_VDEVS, vdevs); fnvlist_add_uint64(args, ZPOOL_TRIM_RATE, rate); fnvlist_add_boolean_value(args, ZPOOL_TRIM_SECURE, secure); error = lzc_ioctl(ZFS_IOC_POOL_TRIM, poolname, args, errlist); fnvlist_free(args); return (error); } zfs-0.8.3/lib/libzfs_core/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142776020533 xustar000000000000000030 mtime=1579730430.800184033 30 atime=1579730451.456847255 30 ctime=1579730472.840533835 zfs-0.8.3/lib/libzfs_core/Makefile.in0000664016037001603700000007272513612142776020554 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libzfs_core ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libzfs_core_la_DEPENDENCIES = \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libuutil/libuutil.la am__objects_1 = libzfs_core.lo nodist_libzfs_core_la_OBJECTS = $(am__objects_1) libzfs_core_la_OBJECTS = $(nodist_libzfs_core_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent libzfs_core_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(AM_CFLAGS) $(CFLAGS) $(libzfs_core_la_LDFLAGS) $(LDFLAGS) -o \ $@ depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libzfs_core_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) lib_LTLIBRARIES = libzfs_core.la USER_C = \ libzfs_core.c nodist_libzfs_core_la_SOURCES = $(USER_C) libzfs_core_la_LIBADD = \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libuutil/libuutil.la libzfs_core_la_LDFLAGS = -version-info 1:0:0 EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libzfs_core/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libzfs_core/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libzfs_core.la: $(libzfs_core_la_OBJECTS) $(libzfs_core_la_DEPENDENCIES) $(AM_V_CCLD)$(libzfs_core_la_LINK) -rpath $(libdir) $(libzfs_core_la_OBJECTS) $(libzfs_core_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_core.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: for dir in "$(DESTDIR)$(libdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-libLTLIBRARIES .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-libLTLIBRARIES # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775016231 xustar000000000000000030 mtime=1579730429.469141299 30 atime=1579730450.720823623 30 ctime=1579730471.244482588 zfs-0.8.3/lib/Makefile.in0000664016037001603700000007025013612142775016241 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = lib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ # NB: GNU Automake Manual, Chapter 8.3.5: Libtool Convenience Libraries # These six libraries are intermediary build components. # These four libraries, which are installed as the final build product, # incorporate the six convenience libraries given above. SUBDIRS = libavl libefi libicp libshare libspl libtpool libzutil \ libunicode libuutil libnvpair libzpool libzfs_core libzfs all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/lib/PaxHeaders.151519/libavl0000644000000000000000000000013213612143047015351 xustar000000000000000030 mtime=1579730471.328485286 30 atime=1579730489.075055099 30 ctime=1579730471.328485286 zfs-0.8.3/lib/libavl/0000775016037001603700000000000013612143047015432 5ustar00hutter2hutter200000000000000zfs-0.8.3/lib/libavl/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147017501 xustar000000000000000030 atime=1579730429.486141844 30 ctime=1579730471.326485221 zfs-0.8.3/lib/libavl/Makefile.am0000644016037001603700000000062213607166147017476 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am VPATH = $(top_srcdir)/module/avl/ # Includes kernel code, generate warnings for large stack frames AM_CFLAGS += $(FRAME_LARGER_THAN) DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include noinst_LTLIBRARIES = libavl.la USER_C = KERNEL_C = \ avl.c nodist_libavl_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) EXTRA_DIST = $(USER_C) zfs-0.8.3/lib/libavl/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775017502 xustar000000000000000030 mtime=1579730429.539143545 30 atime=1579730451.086835375 30 ctime=1579730471.328485286 zfs-0.8.3/lib/libavl/Makefile.in0000664016037001603700000006577113612142775017526 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = lib/libavl ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libavl_la_LIBADD = am__objects_1 = am__objects_2 = avl.lo nodist_libavl_la_OBJECTS = $(am__objects_1) $(am__objects_2) libavl_la_OBJECTS = $(nodist_libavl_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nodist_libavl_la_SOURCES) DIST_SOURCES = ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) VPATH = $(top_srcdir)/module/avl/ ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent # Includes kernel code, generate warnings for large stack frames AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) $(FRAME_LARGER_THAN) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) noinst_LTLIBRARIES = libavl.la USER_C = KERNEL_C = \ avl.c nodist_libavl_la_SOURCES = \ $(USER_C) \ $(KERNEL_C) EXTRA_DIST = $(USER_C) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/libavl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib/libavl/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libavl.la: $(libavl_la_OBJECTS) $(libavl_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libavl_la_OBJECTS) $(libavl_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avl.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/PaxHeaders.151519/autogen.sh0000644000000000000000000000007413607166132015416 xustar000000000000000030 atime=1579730376.687446715 30 ctime=1579730468.777403376 zfs-0.8.3/autogen.sh0000755016037001603700000000007313607166132015416 0ustar00hutter2hutter200000000000000#!/bin/sh autoreconf -fiv || exit 1 rm -Rf autom4te.cache zfs-0.8.3/PaxHeaders.151519/LICENSE0000644000000000000000000000007313607166132014424 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730468.78840373 zfs-0.8.3/LICENSE0000644016037001603700000004475413607166132014440 0ustar00hutter2hutter200000000000000Unless otherwise noted, all files in this distribution are released under the Common Development and Distribution License (CDDL). Exceptions are noted within the associated source files. -------------------------------------------------------------------- COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0 1. Definitions. 1.1. "Contributor" means each individual or entity that creates or contributes to the creation of Modifications. 1.2. "Contributor Version" means the combination of the Original Software, prior Modifications used by a Contributor (if any), and the Modifications made by that particular Contributor. 1.3. "Covered Software" means (a) the Original Software, or (b) Modifications, or (c) the combination of files containing Original Software with files containing Modifications, in each case including portions thereof. 1.4. "Executable" means the Covered Software in any form other than Source Code. 1.5. "Initial Developer" means the individual or entity that first makes Original Software available under this License. 1.6. "Larger Work" means a work which combines Covered Software or portions thereof with code not governed by the terms of this License. 1.7. "License" means this document. 1.8. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. "Modifications" means the Source Code and Executable form of any of the following: A. Any file that results from an addition to, deletion from or modification of the contents of a file containing Original Software or previous Modifications; B. Any new file that contains any part of the Original Software or previous Modifications; or C. Any new file that is contributed or otherwise made available under the terms of this License. 1.10. "Original Software" means the Source Code and Executable form of computer software code that is originally released under this License. 1.11. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.12. "Source Code" means (a) the common form of computer software code in which modifications are made and (b) associated documentation included in or with such code. 1.13. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. License Grants. 2.1. The Initial Developer Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, the Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer, to use, reproduce, modify, display, perform, sublicense and distribute the Original Software (or portions thereof), with or without Modifications, and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using or selling of Original Software, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Software (or portions thereof). (c) The licenses granted in Sections 2.1(a) and (b) are effective on the date Initial Developer first distributes or otherwise makes the Original Software available to a third party under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: (1) for code that You delete from the Original Software, or (2) for infringements caused by: (i) the modification of the Original Software, or (ii) the combination of the Original Software with other software or devices. 2.2. Contributor Grant. Conditioned upon Your compliance with Section 3.1 below and subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license: (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof), either on an unmodified basis, with other Modifications, as Covered Software and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: (1) Modifications made by that Contributor (or portions thereof); and (2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first distributes or otherwise makes the Modifications available to a third party. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: (1) for any code that Contributor has deleted from the Contributor Version; (2) for infringements caused by: (i) third party modifications of Contributor Version, or (ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or (3) under Patent Claims infringed by Covered Software in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Availability of Source Code. Any Covered Software that You distribute or otherwise make available in Executable form must also be made available in Source Code form and that Source Code form must be distributed only under the terms of this License. You must include a copy of this License with every copy of the Source Code form of the Covered Software You distribute or otherwise make available. You must inform recipients of any such Covered Software in Executable form as to how they can obtain such Covered Software in Source Code form in a reasonable manner on or through a medium customarily used for software exchange. 3.2. Modifications. The Modifications that You create or to which You contribute are governed by the terms of this License. You represent that You believe Your Modifications are Your original creation(s) and/or You have sufficient rights to grant the rights conveyed by this License. 3.3. Required Notices. You must include a notice in each of Your Modifications that identifies You as the Contributor of the Modification. You may not remove or alter any copyright, patent or trademark notices contained within the Covered Software, or any notices of licensing or any descriptive text giving attribution to any Contributor or the Initial Developer. 3.4. Application of Additional Terms. You may not offer or impose any terms on any Covered Software in Source Code form that alters or restricts the applicable version of this License or the recipients' rights hereunder. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Software. However, you may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear that any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.5. Distribution of Executable Versions. You may distribute the Executable form of the Covered Software under the terms of this License or under the terms of a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable form does not attempt to limit or alter the recipient's rights in the Source Code form from the rights set forth in this License. If You distribute the Covered Software in Executable form under a different license, You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.6. Larger Works. You may create a Larger Work by combining Covered Software with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Software. 4. Versions of the License. 4.1. New Versions. Sun Microsystems, Inc. is the initial license steward and may publish revised and/or new versions of this License from time to time. Each version will be given a distinguishing version number. Except as provided in Section 4.3, no one other than the license steward has the right to modify this License. 4.2. Effect of New Versions. You may always continue to use, distribute or otherwise make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. If the Initial Developer includes a notice in the Original Software prohibiting it from being distributed or otherwise made available under any subsequent version of the License, You must distribute and make the Covered Software available under the terms of the version of the License under which You originally received the Covered Software. Otherwise, You may also choose to use, distribute or otherwise make the Covered Software available under the terms of any subsequent version of the License published by the license steward. 4.3. Modified Versions. When You are an Initial Developer and You want to create a new license for Your Original Software, You may create and use a modified version of this License if You: (a) rename the license and remove any references to the name of the license steward (except to note that the license differs from this License); and (b) otherwise make it clear that the license contains terms which differ from this License. 5. DISCLAIMER OF WARRANTY. COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 6. TERMINATION. 6.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 6.2. If You assert a patent infringement claim (excluding declaratory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You assert such claim is referred to as "Participant") alleging that the Participant Software (meaning the Contributor Version where the Participant is a Contributor or the Original Software where the Participant is the Initial Developer) directly or indirectly infringes any patent, then any and all rights granted directly or indirectly to You by such Participant, the Initial Developer (if the Initial Developer is not the Participant) and all Contributors under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively and automatically at the expiration of such 60 day notice period, unless if within such 60 day period You withdraw Your claim with respect to the Participant Software against such Participant either unilaterally or pursuant to a written agreement with Participant. 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end user licenses that have been validly granted by You or any distributor hereunder prior to termination (excluding licenses granted to You by any distributor) shall survive termination. 7. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 8. U.S. GOVERNMENT END USERS. The Covered Software is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" (as that term is defined at 48 C.F.R. 252.227-7014(a)(1)) and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software with only those rights set forth herein. This U.S. Government Rights clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision that addresses Government rights in computer software under this License. 9. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by the law of the jurisdiction specified in a notice contained within the Original Software (except to the extent applicable law, if any, provides otherwise), excluding such jurisdiction's conflict-of-law provisions. Any litigation relating to this License shall be subject to the jurisdiction of the courts located in the jurisdiction and venue specified in a notice contained within the Original Software, with the losing party responsible for costs, including, without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. You agree that You alone are responsible for compliance with the United States export administration regulations (and the export control laws and regulation of any other countries) when You use, distribute or otherwise make available any Covered Software. 10. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. -------------------------------------------------------------------- NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) For Covered Software in this distribution, this License shall be governed by the laws of the State of California (excluding conflict-of-law provisions). Any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California and the state courts of the State of California, with venue lying in Santa Clara County, California. zfs-0.8.3/PaxHeaders.151519/scripts0000644000000000000000000000013213612143047015021 xustar000000000000000030 mtime=1579730471.195481015 30 atime=1579730489.075055099 30 ctime=1579730471.195481015 zfs-0.8.3/scripts/0000775016037001603700000000000013612143047015102 5ustar00hutter2hutter200000000000000zfs-0.8.3/scripts/PaxHeaders.151519/man-dates.sh0000644000000000000000000000007413607166133017315 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.189480823 zfs-0.8.3/scripts/man-dates.sh0000755016037001603700000000052313607166133017315 0ustar00hutter2hutter200000000000000#!/bin/sh # This script updates the date lines in the man pages to the date of the last # commit to that file. set -eu find man -type f | while read -r i ; do git_date=$(git log -1 --date=short --format="%ad" -- "$i") [ "x$git_date" = "x" ] && continue sed -i "s|^\.Dd.*|.Dd $(date -d "$git_date" "+%B %-d, %Y")|" "$i" done zfs-0.8.3/scripts/PaxHeaders.151519/zfs-helpers.sh0000644000000000000000000000007413607166133017706 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.164480021 zfs-0.8.3/scripts/zfs-helpers.sh0000755016037001603700000001072413607166133017712 0ustar00hutter2hutter200000000000000#!/bin/sh # # This script is designed to facilitate in-tree development and testing # by installing symlinks on your system which refer to in-tree helper # utilities. These helper utilities must be installed to in order to # exercise all ZFS functionality. By using symbolic links and keeping # the scripts in-tree during development they can be easily modified # and those changes tracked. # # Use the following configuration option to override the installation # paths for these scripts. The correct path is automatically set for # most distributions but you can optionally set it for your environment. # # --with-mounthelperdir=DIR install mount.zfs in dir [/sbin] # --with-udevdir=DIR install udev helpers [default=check] # --with-udevruledir=DIR install udev rules [default=UDEVDIR/rules.d] # --sysconfdir=DIR install zfs configuration files [PREFIX/etc] # BASE_DIR=$(dirname "$0") SCRIPT_COMMON=common.sh if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then . "${BASE_DIR}/${SCRIPT_COMMON}" else echo "Missing helper script ${SCRIPT_COMMON}" && exit 1 fi PROG=zfs-helpers.sh DRYRUN="no" INSTALL="no" REMOVE="no" VERBOSE="no" fail() { echo "${PROG}: $1" >&2 exit 1 } msg() { if [ "$VERBOSE" = "yes" ]; then echo "$@" fi } usage() { cat << EOF USAGE: $0 [dhirv] DESCRIPTION: Install/remove the ZFS helper utilities. OPTIONS: -d Dry run -h Show this message -i Install the helper utilities -r Remove the helper utilities -v Verbose $0 -iv $0 -r EOF } while getopts 'hdirv' OPTION; do case $OPTION in h) usage exit 1 ;; d) DRYRUN="yes" ;; i) INSTALL="yes" ;; r) REMOVE="yes" ;; v) VERBOSE="yes" ;; ?) usage exit ;; esac done if [ "$INSTALL" = "yes" ] && [ "$REMOVE" = "yes" ]; then fail "Specify -i or -r but not both" fi if [ "$INSTALL" = "no" ] && [ "$REMOVE" = "no" ]; then fail "Either -i or -r must be specified" fi if [ "$(id -u)" != "0" ]; then fail "Must run as root" fi if [ "$INTREE" != "yes" ]; then fail "Must be run in-tree" fi if [ "$VERBOSE" = "yes" ]; then echo "--- Configuration ---" echo "udevdir: $INSTALL_UDEV_DIR" echo "udevruledir: $INSTALL_UDEV_RULE_DIR" echo "mounthelperdir: $INSTALL_MOUNT_HELPER_DIR" echo "sysconfdir: $INSTALL_SYSCONF_DIR" echo "pythonsitedir: $INSTALL_PYTHON_DIR" echo "dryrun: $DRYRUN" echo fi install() { src=$1 dst=$2 if [ -h "$dst" ]; then echo "Symlink exists: $dst" elif [ -e "$dst" ]; then echo "File exists: $dst" elif [ ! -e "$src" ]; then echo "Source missing: $src" else msg "ln -s $src $dst" if [ "$DRYRUN" = "no" ]; then DIR=$(dirname "$dst") mkdir -p "$DIR" >/dev/null 2>&1 ln -s "$src" "$dst" fi fi } remove() { dst=$1 if [ -h "$dst" ]; then msg "rm $dst" rm "$dst" DIR=$(dirname "$dst") rmdir "$DIR" >/dev/null 2>&1 elif [ -e "$dst" ]; then echo "Expected symlink: $dst" fi } if [ "${INSTALL}" = "yes" ]; then install "$CMD_DIR/mount_zfs/mount.zfs" \ "$INSTALL_MOUNT_HELPER_DIR/mount.zfs" install "$CMD_DIR/fsck_zfs/fsck.zfs" \ "$INSTALL_MOUNT_HELPER_DIR/fsck.zfs" install "$CMD_DIR/zvol_id/zvol_id" \ "$INSTALL_UDEV_DIR/zvol_id" install "$CMD_DIR/vdev_id/vdev_id" \ "$INSTALL_UDEV_DIR/vdev_id" install "$UDEV_RULE_DIR/60-zvol.rules" \ "$INSTALL_UDEV_RULE_DIR/60-zvol.rules" install "$UDEV_RULE_DIR/69-vdev.rules" \ "$INSTALL_UDEV_RULE_DIR/69-vdev.rules" install "$UDEV_RULE_DIR/90-zfs.rules" \ "$INSTALL_UDEV_RULE_DIR/90-zfs.rules" install "$CMD_DIR/zpool/zpool.d" \ "$INSTALL_SYSCONF_DIR/zfs/zpool.d" install "$CONTRIB_DIR/pyzfs/libzfs_core" \ "$INSTALL_PYTHON_DIR/libzfs_core" # Ideally we would install these in the configured ${libdir}, which is # by default "/usr/local/lib and unfortunately not included in the # dynamic linker search path. install "$(find "$LIB_DIR/libzfs_core" -type f -name 'libzfs_core.so*')" \ "/lib/libzfs_core.so" install "$(find "$LIB_DIR/libnvpair" -type f -name 'libnvpair.so*')" \ "/lib/libnvpair.so" ldconfig else remove "$INSTALL_MOUNT_HELPER_DIR/mount.zfs" remove "$INSTALL_MOUNT_HELPER_DIR/fsck.zfs" remove "$INSTALL_UDEV_DIR/zvol_id" remove "$INSTALL_UDEV_DIR/vdev_id" remove "$INSTALL_UDEV_RULE_DIR/60-zvol.rules" remove "$INSTALL_UDEV_RULE_DIR/69-vdev.rules" remove "$INSTALL_UDEV_RULE_DIR/90-zfs.rules" remove "$INSTALL_SYSCONF_DIR/zfs/zpool.d" remove "$INSTALL_PYTHON_DIR/libzfs_core" remove "/lib/libzfs_core.so" remove "/lib/libnvpair.so" ldconfig fi exit 0 zfs-0.8.3/scripts/PaxHeaders.151519/zfs.sh0000644000000000000000000000007413607166147016253 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.158479829 zfs-0.8.3/scripts/zfs.sh0000755016037001603700000001110513607166147016251 0ustar00hutter2hutter200000000000000#!/bin/sh # # A simple script to load/unload the ZFS module stack. # BASE_DIR=$(dirname "$0") SCRIPT_COMMON=common.sh if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then . "${BASE_DIR}/${SCRIPT_COMMON}" else echo "Missing helper script ${SCRIPT_COMMON}" && exit 1 fi PROG=zfs.sh VERBOSE="no" UNLOAD="no" STACK_TRACER="no" ZED_PIDFILE=${ZED_PIDFILE:-/var/run/zed.pid} LDMOD=${LDMOD:-/sbin/modprobe} KMOD_ZLIB_DEFLATE=${KMOD_ZLIB_DEFLATE:-zlib_deflate} KMOD_ZLIB_INFLATE=${KMOD_ZLIB_INFLATE:-zlib_inflate} KMOD_SPL=${KMOD_SPL:-spl} KMOD_ZAVL=${KMOD_ZAVL:-zavl} KMOD_ZNVPAIR=${KMOD_ZNVPAIR:-znvpair} KMOD_ZUNICODE=${KMOD_ZUNICODE:-zunicode} KMOD_ZCOMMON=${KMOD_ZCOMMON:-zcommon} KMOD_ZLUA=${KMOD_ZLUA:-zlua} KMOD_ICP=${KMOD_ICP:-icp} KMOD_ZFS=${KMOD_ZFS:-zfs} usage() { cat << EOF USAGE: $0 [hvudS] [module-options] DESCRIPTION: Load/unload the ZFS module stack. OPTIONS: -h Show this message -v Verbose -u Unload modules -S Enable kernel stack tracer EOF } while getopts 'hvuS' OPTION; do case $OPTION in h) usage exit 1 ;; v) VERBOSE="yes" ;; u) UNLOAD="yes" ;; S) STACK_TRACER="yes" ;; ?) usage exit ;; esac done kill_zed() { if [ -f "$ZED_PIDFILE" ]; then PID=$(cat "$ZED_PIDFILE") kill "$PID" fi } check_modules() { LOADED_MODULES="" MISSING_MODULES="" for KMOD in $KMOD_SPL $KMOD_ZAVL $KMOD_ZNVPAIR \ $KMOD_ZUNICODE $KMOD_ZCOMMON $KMOD_ZLUA $KMOD_ICP $KMOD_ZFS; do NAME=$(basename "$KMOD" .ko) if lsmod | grep -E -q "^${NAME}"; then LOADED_MODULES="$LOADED_MODULES\t$NAME\n" fi if ! modinfo "$KMOD" >/dev/null 2>&1; then MISSING_MODULES="$MISSING_MODULES\t${KMOD}\n" fi done if [ -n "$LOADED_MODULES" ]; then printf "Unload the kernel modules by running '%s -u':\n" "$PROG" printf "%b" "$LOADED_MODULES" exit 1 fi if [ -n "$MISSING_MODULES" ]; then printf "The following kernel modules can not be found:\n" printf "%b" "$MISSING_MODULES" exit 1 fi return 0 } load_module() { KMOD=$1 FILE=$(modinfo "$KMOD" | awk '/^filename:/ {print $2}') VERSION=$(modinfo "$KMOD" | awk '/^version:/ {print $2}') if [ "$VERBOSE" = "yes" ]; then echo "Loading: $FILE ($VERSION)" fi $LDMOD "$KMOD" >/dev/null 2>&1 # shellcheck disable=SC2181 if [ $? -ne 0 ]; then echo "Failed to load $KMOD" return 1 fi return 0 } load_modules() { mkdir -p /etc/zfs if modinfo "$KMOD_ZLIB_DEFLATE" >/dev/null 2>&1; then modprobe "$KMOD_ZLIB_DEFLATE" >/dev/null 2>&1 fi if modinfo "$KMOD_ZLIB_INFLATE">/dev/null 2>&1; then modprobe "$KMOD_ZLIB_INFLATE" >/dev/null 2>&1 fi for KMOD in $KMOD_SPL $KMOD_ZAVL $KMOD_ZNVPAIR \ $KMOD_ZUNICODE $KMOD_ZCOMMON $KMOD_ZLUA $KMOD_ICP $KMOD_ZFS; do load_module "$KMOD" || return 1 done if [ "$VERBOSE" = "yes" ]; then echo "Successfully loaded ZFS module stack" fi return 0 } unload_module() { KMOD=$1 NAME=$(basename "$KMOD" .ko) FILE=$(modinfo "$KMOD" | awk '/^filename:/ {print $2}') VERSION=$(modinfo "$KMOD" | awk '/^version:/ {print $2}') if [ "$VERBOSE" = "yes" ]; then echo "Unloading: $KMOD ($VERSION)" fi rmmod "$NAME" || echo "Failed to unload $NAME" return 0 } unload_modules() { for KMOD in $KMOD_ZFS $KMOD_ICP $KMOD_ZLUA $KMOD_ZCOMMON $KMOD_ZUNICODE \ $KMOD_ZNVPAIR $KMOD_ZAVL $KMOD_SPL; do NAME=$(basename "$KMOD" .ko) USE_COUNT=$(lsmod | grep -E "^${NAME} " | awk '{print $3}') if [ "$USE_COUNT" = "0" ] ; then unload_module "$KMOD" || return 1 fi done if modinfo "$KMOD_ZLIB_DEFLATE" >/dev/null 2>&1; then modprobe -r "$KMOD_ZLIB_DEFLATE" >/dev/null 2>&1 fi if modinfo "$KMOD_ZLIB_INFLATE">/dev/null 2>&1; then modprobe -r "$KMOD_ZLIB_INFLATE" >/dev/null 2>&1 fi if [ "$VERBOSE" = "yes" ]; then echo "Successfully unloaded ZFS module stack" fi return 0 } stack_clear() { STACK_MAX_SIZE=/sys/kernel/debug/tracing/stack_max_size STACK_TRACER_ENABLED=/proc/sys/kernel/stack_tracer_enabled if [ "$STACK_TRACER" = "yes" ] && [ -e "$STACK_MAX_SIZE" ]; then echo 1 >"$STACK_TRACER_ENABLED" echo 0 >"$STACK_MAX_SIZE" fi } stack_check() { STACK_MAX_SIZE=/sys/kernel/debug/tracing/stack_max_size STACK_TRACE=/sys/kernel/debug/tracing/stack_trace STACK_LIMIT=15362 if [ -e "$STACK_MAX_SIZE" ]; then STACK_SIZE=$(cat "$STACK_MAX_SIZE") if [ "$STACK_SIZE" -ge "$STACK_LIMIT" ]; then echo echo "Warning: max stack size $STACK_SIZE bytes" cat "$STACK_TRACE" fi fi } if [ "$(id -u)" != 0 ]; then echo "Must run as root" exit 1 fi if [ "$UNLOAD" = "yes" ]; then kill_zed umount -t zfs -a stack_check unload_modules else stack_clear check_modules load_modules "$@" udevadm trigger udevadm settle fi exit 0 zfs-0.8.3/scripts/PaxHeaders.151519/dkms.postbuild0000644000000000000000000000007413607166133017775 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.180480533 zfs-0.8.3/scripts/dkms.postbuild0000755016037001603700000000110413607166133017771 0ustar00hutter2hutter200000000000000#!/bin/sh PROG=$0 while getopts "a:k:n:t:v:" opt; do case $opt in a) arch=$OPTARG ;; k) kver=$OPTARG ;; n) pkgname=$OPTARG ;; t) tree=$OPTARG ;; v) pkgver=$OPTARG ;; esac done if [ -z "${arch}" -o -z "${kver}" -o -z "${pkgname}" -o \ -z "${tree}" -o -z "${pkgver}" ]; then echo "Usage: $PROG -a -k -n " \ "-t -v " exit 1 fi cp "${tree}/${pkgname}/${pkgver}/build/zfs_config.h" \ "${tree}/${pkgname}/${pkgver}/build/module/Module.symvers" \ "${tree}/${pkgname}/${pkgver}/${kver}/${arch}/" zfs-0.8.3/scripts/PaxHeaders.151519/zimport.sh0000644000000000000000000000007413607166133017150 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.155479731 zfs-0.8.3/scripts/zimport.sh0000755016037001603700000003343113607166133017154 0ustar00hutter2hutter200000000000000#!/bin/bash # # Verify that an assortment of known good reference pools can be imported # using different versions of the ZoL code. # # By default references pools for the major ZFS implementation will be # checked against the most recent ZoL tags and the master development branch. # Alternate tags or branches may be verified with the '-s option. # Passing the keyword "installed" will instruct the script to test whatever # version is installed. # # Preferentially a reference pool is used for all tests. However, if one # does not exist and the pool-tag matches one of the src-tags then a new # reference pool will be created using binaries from that source build. # This is particularly useful when you need to test your changes before # opening a pull request. The keyword 'all' can be used as short hand # refer to all available reference pools. # # New reference pools may be added by placing a bzip2 compressed tarball # of the pool in the scripts/zfs-images directory and then passing # the -p option. To increase the test coverage reference pools # should be collected for all the major ZFS implementations. Having these # pools easily available is also helpful to the developers. # # Care should be taken to run these tests with a kernel supported by all # the listed tags. Otherwise build failure will cause false positives. # # # EXAMPLES: # # The following example will verify the zfs-0.6.2 tag, the master branch, # and the installed zfs version can correctly import the listed pools. # Note there is no reference pool available for master and installed but # because binaries are available one is automatically constructed. The # working directory is also preserved between runs (-k) preventing the # need to rebuild from source for multiple runs. # # zimport.sh -k -f /var/tmp/zimport \ # -s "zfs-0.6.2 master installed" \ # -p "zevo-1.1.1 zol-0.6.2 zol-0.6.2-173 master installed" # # --------------------- ZFS on Linux Source Versions -------------- # zfs-0.6.2 master 0.6.2-175_g36eb554 # ----------------------------------------------------------------- # Clone ZFS Local Local Skip # Build ZFS Pass Pass Skip # ----------------------------------------------------------------- # zevo-1.1.1 Pass Pass Pass # zol-0.6.2 Pass Pass Pass # zol-0.6.2-173 Fail Pass Pass # master Pass Pass Pass # installed Pass Pass Pass # BASE_DIR=$(dirname "$0") SCRIPT_COMMON=common.sh if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then . "${BASE_DIR}/${SCRIPT_COMMON}" else echo "Missing helper script ${SCRIPT_COMMON}" && exit 1 fi PROG=zimport.sh SRC_TAGS="zfs-0.6.5.11 master" POOL_TAGS="all master" POOL_CREATE_OPTIONS= TEST_DIR=$(mktemp -u -d -p /var/tmp zimport.XXXXXXXX) KEEP="no" VERBOSE="no" COLOR="yes" REPO="https://github.com/zfsonlinux" IMAGES_DIR="$SCRIPTDIR/zfs-images/" IMAGES_TAR="https://github.com/zfsonlinux/zfs-images/tarball/master" ERROR=0 CONFIG_LOG="configure.log" CONFIG_OPTIONS=${CONFIG_OPTIONS:-""} MAKE_LOG="make.log" MAKE_OPTIONS=${MAKE_OPTIONS:-"-s -j$(nproc)"} COLOR_GREEN="\033[0;32m" COLOR_RED="\033[0;31m" COLOR_BROWN="\033[0;33m" COLOR_RESET="\033[0m" usage() { cat << EOF USAGE: zimport.sh [hvl] [-r repo] [-s src-tag] [-i pool-dir] [-p pool-tag] [-f path] [-o options] DESCRIPTION: ZPOOL import verification tests OPTIONS: -h Show this message -v Verbose -c No color -k Keep temporary directory -r Source repository ($REPO) -s ... Verify ZoL versions with the listed tags -i Pool image directory -p ... Verify pools created with the listed tags -f Temporary directory to use -o Additional options to pass to 'zpool create' EOF } while getopts 'hvckr:s:i:p:f:o:?' OPTION; do case $OPTION in h) usage exit 1 ;; v) VERBOSE="yes" ;; c) COLOR="no" ;; k) KEEP="yes" ;; r) REPO="$OPTARG" ;; s) SRC_TAGS="$OPTARG" ;; i) IMAGES_DIR="$OPTARG" ;; p) POOL_TAGS="$OPTARG" ;; f) TEST_DIR="$OPTARG" ;; o) POOL_CREATE_OPTIONS="$OPTARG" ;; ?) usage exit 1 ;; esac done # # Verify the module start is not loaded # if lsmod | grep zfs >/dev/null; then echo "ZFS modules must be unloaded" exit 1 fi # # Create a random directory tree of files and sub-directories to # to act as a copy source for the various regression tests. # populate() { local ROOT=$1 local MAX_DIR_SIZE=$2 local MAX_FILE_SIZE=$3 # shellcheck disable=SC2086 mkdir -p $ROOT/{a,b,c,d,e,f,g}/{h,i} DIRS=$(find "$ROOT") for DIR in $DIRS; do COUNT=$((RANDOM % MAX_DIR_SIZE)) # shellcheck disable=SC2034 for i in $(seq $COUNT); do FILE=$(mktemp -p "$DIR") SIZE=$((RANDOM % MAX_FILE_SIZE)) dd if=/dev/urandom of="$FILE" bs=1k \ count="$SIZE" &>/dev/null done done return 0 } SRC_DIR=$(mktemp -d -p /var/tmp/ zfs.src.XXXXXXXX) trap 'rm -Rf "$SRC_DIR"' INT TERM EXIT populate "$SRC_DIR" 10 100 SRC_DIR="$TEST_DIR/src" SRC_DIR_ZFS="$SRC_DIR/zfs" if [ "$COLOR" = "no" ]; then COLOR_GREEN="" COLOR_BROWN="" COLOR_RED="" COLOR_RESET="" fi pass_nonewline() { echo -n -e "${COLOR_GREEN}Pass${COLOR_RESET}\t\t" } skip_nonewline() { echo -n -e "${COLOR_BROWN}Skip${COLOR_RESET}\t\t" } fail_nonewline() { echo -n -e "${COLOR_RED}Fail${COLOR_RESET}\t\t" } # # Log a failure message, cleanup, and return an error. # fail() { echo -e "$PROG: $1" >&2 $ZFS_SH -u >/dev/null 2>&1 exit 1 } # # Set several helper variables which are derived from a source tag. # # ZFS_TAG - The passed zfs-x.y.z tag # ZFS_DIR - The zfs directory name # ZFS_URL - The zfs github URL to fetch the tarball # src_set_vars() { local TAG=$1 ZFS_TAG="$TAG" ZFS_DIR="$SRC_DIR_ZFS/$ZFS_TAG" ZFS_URL="$REPO/zfs/tarball/$ZFS_TAG" if [ "$TAG" = "installed" ]; then ZPOOL_CMD=$(command -v zpool) ZFS_CMD=$(command -v zfs) ZFS_SH="/usr/share/zfs/zfs.sh" else ZPOOL_CMD="./cmd/zpool/zpool" ZFS_CMD="./cmd/zfs/zfs" ZFS_SH="./scripts/zfs.sh" fi } # # Set several helper variables which are derived from a pool name such # as zol-0.6.x, zevo-1.1.1, etc. These refer to example pools from various # ZFS implementations which are used to verify compatibility. # # POOL_TAG - The example pools name in scripts/zfs-images/. # POOL_BZIP - The full path to the example bzip2 compressed pool. # POOL_DIR - The top level test path for this pool. # POOL_DIR_PRISTINE - The directory containing a pristine version of the pool. # POOL_DIR_COPY - The directory containing a working copy of the pool. # POOL_DIR_SRC - Location of a source build if it exists for this pool. # pool_set_vars() { local TAG=$1 POOL_TAG=$TAG POOL_BZIP=$IMAGES_DIR/$POOL_TAG.tar.bz2 POOL_DIR=$TEST_DIR/pools/$POOL_TAG POOL_DIR_PRISTINE=$POOL_DIR/pristine POOL_DIR_COPY=$POOL_DIR/copy POOL_DIR_SRC="$SRC_DIR_ZFS/${POOL_TAG//zol/zfs}" } # # Construct a non-trivial pool given a specific version of the source. More # interesting pools provide better test coverage so this function should # extended as needed to create more realistic pools. # pool_create() { pool_set_vars "$1" src_set_vars "$1" if [ "$POOL_TAG" != "installed" ]; then cd "$POOL_DIR_SRC" || fail "Failed 'cd $POOL_DIR_SRC'" fi $ZFS_SH zfs="spa_config_path=$POOL_DIR_PRISTINE" || \ fail "Failed to load kmods" # Create a file vdev RAIDZ pool. truncate -s 1G \ "$POOL_DIR_PRISTINE/vdev1" "$POOL_DIR_PRISTINE/vdev2" \ "$POOL_DIR_PRISTINE/vdev3" "$POOL_DIR_PRISTINE/vdev4" || \ fail "Failed 'truncate -s 1G ...'" # shellcheck disable=SC2086 $ZPOOL_CMD create $POOL_CREATE_OPTIONS "$POOL_TAG" raidz \ "$POOL_DIR_PRISTINE/vdev1" "$POOL_DIR_PRISTINE/vdev2" \ "$POOL_DIR_PRISTINE/vdev3" "$POOL_DIR_PRISTINE/vdev4" || \ fail "Failed '$ZPOOL_CMD create $POOL_CREATE_OPTIONS $POOL_TAG ...'" # Create a pool/fs filesystem with some random contents. $ZFS_CMD create "$POOL_TAG/fs" || \ fail "Failed '$ZFS_CMD create $POOL_TAG/fs'" populate "/$POOL_TAG/fs/" 10 100 # Snapshot that filesystem, clone it, remove the files/dirs, # replace them with new files/dirs. $ZFS_CMD snap "$POOL_TAG/fs@snap" || \ fail "Failed '$ZFS_CMD snap $POOL_TAG/fs@snap'" $ZFS_CMD clone "$POOL_TAG/fs@snap" "$POOL_TAG/clone" || \ fail "Failed '$ZFS_CMD clone $POOL_TAG/fs@snap $POOL_TAG/clone'" # shellcheck disable=SC2086 rm -Rf /$POOL_TAG/clone/* populate "/$POOL_TAG/clone/" 10 100 # Scrub the pool, delay slightly, then export it. It is now # somewhat interesting for testing purposes. $ZPOOL_CMD scrub "$POOL_TAG" || \ fail "Failed '$ZPOOL_CMD scrub $POOL_TAG'" sleep 10 $ZPOOL_CMD export "$POOL_TAG" || \ fail "Failed '$ZPOOL_CMD export $POOL_TAG'" $ZFS_SH -u || fail "Failed to unload kmods" } # If the zfs-images directory doesn't exist fetch a copy from Github then # cache it in the $TEST_DIR and update $IMAGES_DIR. if [ ! -d "$IMAGES_DIR" ]; then IMAGES_DIR="$TEST_DIR/zfs-images" mkdir -p "$IMAGES_DIR" curl -sL "$IMAGES_TAR" | \ tar -xz -C "$IMAGES_DIR" --strip-components=1 || \ fail "Failed to download pool images" fi # Given the available images in the zfs-images directory substitute the # list of available images for the reserved keyword 'all'. for TAG in $POOL_TAGS; do if [ "$TAG" = "all" ]; then # shellcheck disable=SC2010 ALL_TAGS=$(ls "$IMAGES_DIR" | grep "tar.bz2" | \ sed 's/.tar.bz2//' | tr '\n' ' ') NEW_TAGS="$NEW_TAGS $ALL_TAGS" else NEW_TAGS="$NEW_TAGS $TAG" fi done POOL_TAGS="$NEW_TAGS" if [ "$VERBOSE" = "yes" ]; then echo "---------------------------- Options ----------------------------" echo "VERBOSE=$VERBOSE" echo "KEEP=$KEEP" echo "REPO=$REPO" echo "SRC_TAGS=$SRC_TAGS" echo "POOL_TAGS=$POOL_TAGS" echo "PATH=$TEST_DIR" echo "POOL_CREATE_OPTIONS=$POOL_CREATE_OPTIONS" echo fi if [ ! -d "$TEST_DIR" ]; then mkdir -p "$TEST_DIR" fi if [ ! -d "$SRC_DIR" ]; then mkdir -p "$SRC_DIR" fi # Print a header for all tags which are being tested. echo "--------------------- ZFS on Linux Source Versions --------------" printf "%-16s" " " for TAG in $SRC_TAGS; do src_set_vars "$TAG" if [ "$TAG" = "installed" ]; then ZFS_VERSION=$(modinfo zfs | awk '/version:/ { print $2; exit }') if [ -n "$ZFS_VERSION" ]; then printf "%-16s" "$ZFS_VERSION" else fail "ZFS is not installed" fi else printf "%-16s" "$TAG" fi done echo -e "\n-----------------------------------------------------------------" # # Attempt to generate the tarball from your local git repository, if that # fails then attempt to download the tarball from Github. # printf "%-16s" "Clone ZFS" for TAG in $SRC_TAGS; do src_set_vars "$TAG" if [ -d "$ZFS_DIR" ]; then skip_nonewline elif [ "$ZFS_TAG" = "installed" ]; then skip_nonewline else cd "$SRC_DIR" || fail "Failed 'cd $SRC_DIR'" if [ ! -d "$SRC_DIR_ZFS" ]; then mkdir -p "$SRC_DIR_ZFS" fi git archive --format=tar --prefix="$ZFS_TAG/ $ZFS_TAG" \ -o "$SRC_DIR_ZFS/$ZFS_TAG.tar" &>/dev/null || \ rm "$SRC_DIR_ZFS/$ZFS_TAG.tar" if [ -s "$SRC_DIR_ZFS/$ZFS_TAG.tar" ]; then tar -xf "$SRC_DIR_ZFS/$ZFS_TAG.tar" -C "$SRC_DIR_ZFS" rm "$SRC_DIR_ZFS/$ZFS_TAG.tar" echo -n -e "${COLOR_GREEN}Local${COLOR_RESET}\t\t" else mkdir -p "$ZFS_DIR" || fail "Failed to create $ZFS_DIR" curl -sL "$ZFS_URL" | tar -xz -C "$ZFS_DIR" \ --strip-components=1 || \ fail "Failed to download $ZFS_URL" echo -n -e "${COLOR_GREEN}Remote${COLOR_RESET}\t\t" fi fi done printf "\n" # Build the listed tags printf "%-16s" "Build ZFS" for TAG in $SRC_TAGS; do src_set_vars "$TAG" if [ -f "$ZFS_DIR/module/zfs/zfs.ko" ]; then skip_nonewline elif [ "$ZFS_TAG" = "installed" ]; then skip_nonewline else cd "$ZFS_DIR" || fail "Failed 'cd $ZFS_DIR'" make distclean &>/dev/null ./autogen.sh >>"$CONFIG_LOG" 2>&1 || \ fail "Failed ZFS 'autogen.sh'" # shellcheck disable=SC2086 ./configure $CONFIG_OPTIONS >>"$CONFIG_LOG" 2>&1 || \ fail "Failed ZFS 'configure $CONFIG_OPTIONS'" # shellcheck disable=SC2086 make $MAKE_OPTIONS >>"$MAKE_LOG" 2>&1 || \ fail "Failed ZFS 'make $MAKE_OPTIONS'" pass_nonewline fi done printf "\n" echo "-----------------------------------------------------------------" # Either create a new pool using 'zpool create', or alternately restore an # existing pool from another ZFS implementation for compatibility testing. for TAG in $POOL_TAGS; do pool_set_vars "$TAG" SKIP=0 printf "%-16s" "$POOL_TAG" rm -Rf "$POOL_DIR" mkdir -p "$POOL_DIR_PRISTINE" # Use the existing compressed image if available. if [ -f "$POOL_BZIP" ]; then tar -xjf "$POOL_BZIP" -C "$POOL_DIR_PRISTINE" \ --strip-components=1 || \ fail "Failed 'tar -xjf $POOL_BZIP" # Use the installed version to create the pool. elif [ "$TAG" = "installed" ]; then pool_create "$TAG" # A source build is available to create the pool. elif [ -d "$POOL_DIR_SRC" ]; then pool_create "$TAG" else SKIP=1 fi # Verify 'zpool import' works for all listed source versions. for SRC_TAG in $SRC_TAGS; do if [ $SKIP -eq 1 ]; then skip_nonewline continue fi src_set_vars "$SRC_TAG" if [ "$SRC_TAG" != "installed" ]; then cd "$ZFS_DIR" || fail "Failed 'cd $ZFS_DIR'" fi $ZFS_SH zfs="spa_config_path=$POOL_DIR_COPY" cp -a --sparse=always "$POOL_DIR_PRISTINE" \ "$POOL_DIR_COPY" || \ fail "Failed to copy $POOL_DIR_PRISTINE to $POOL_DIR_COPY" POOL_NAME=$($ZPOOL_CMD import -d "$POOL_DIR_COPY" | \ awk '/pool:/ { print $2; exit 0 }') $ZPOOL_CMD import -N -d "$POOL_DIR_COPY" \ "$POOL_NAME" &>/dev/null # shellcheck disable=SC2181 if [ $? -ne 0 ]; then fail_nonewline ERROR=1 else $ZPOOL_CMD export "$POOL_NAME" || \ fail "Failed to export pool" pass_nonewline fi rm -Rf "$POOL_DIR_COPY" $ZFS_SH -u || fail "Failed to unload kmods" done printf "\n" done if [ "$KEEP" = "no" ]; then rm -Rf "$TEST_DIR" fi exit $ERROR zfs-0.8.3/scripts/PaxHeaders.151519/cstyle.pl0000644000000000000000000000007413607166133016750 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.176480405 zfs-0.8.3/scripts/cstyle.pl0000755016037001603700000006376113607166133016765 0ustar00hutter2hutter200000000000000#!/usr/bin/env perl # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # Copyright 2016 Nexenta Systems, Inc. # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # @(#)cstyle 1.58 98/09/09 (from shannon) #ident "%Z%%M% %I% %E% SMI" # # cstyle - check for some common stylistic errors. # # cstyle is a sort of "lint" for C coding style. # It attempts to check for the style used in the # kernel, sometimes known as "Bill Joy Normal Form". # # There's a lot this can't check for, like proper indentation # of code blocks. There's also a lot more this could check for. # # A note to the non perl literate: # # perl regular expressions are pretty much like egrep # regular expressions, with the following special symbols # # \s any space character # \S any non-space character # \w any "word" character [a-zA-Z0-9_] # \W any non-word character # \d a digit [0-9] # \D a non-digit # \b word boundary (between \w and \W) # \B non-word boundary # require 5.0; use warnings; use IO::File; use Getopt::Std; use strict; my $usage = "usage: cstyle [-chpvCP] [-o constructs] file ... -c check continuation indentation inside functions -h perform heuristic checks that are sometimes wrong -p perform some of the more picky checks -v verbose -C don't check anything in header block comments -P check for use of non-POSIX types -o constructs allow a comma-separated list of optional constructs: doxygen allow doxygen-style block comments (/** /*!) splint allow splint-style lint comments (/*@ ... @*/) "; my %opts; if (!getopts("cho:pvCP", \%opts)) { print $usage; exit 2; } my $check_continuation = $opts{'c'}; my $heuristic = $opts{'h'}; my $picky = $opts{'p'}; my $verbose = $opts{'v'}; my $ignore_hdr_comment = $opts{'C'}; my $check_posix_types = $opts{'P'}; my $doxygen_comments = 0; my $splint_comments = 0; if (defined($opts{'o'})) { for my $x (split /,/, $opts{'o'}) { if ($x eq "doxygen") { $doxygen_comments = 1; } elsif ($x eq "splint") { $splint_comments = 1; } else { print "cstyle: unrecognized construct \"$x\"\n"; print $usage; exit 2; } } } my ($filename, $line, $prev); # shared globals my $fmt; my $hdr_comment_start; if ($verbose) { $fmt = "%s: %d: %s\n%s\n"; } else { $fmt = "%s: %d: %s\n"; } if ($doxygen_comments) { # doxygen comments look like "/*!" or "/**"; allow them. $hdr_comment_start = qr/^\s*\/\*[\!\*]?$/; } else { $hdr_comment_start = qr/^\s*\/\*$/; } # Note, following must be in single quotes so that \s and \w work right. my $typename = '(int|char|short|long|unsigned|float|double' . '|\w+_t|struct\s+\w+|union\s+\w+|FILE)'; # mapping of old types to POSIX compatible types my %old2posix = ( 'unchar' => 'uchar_t', 'ushort' => 'ushort_t', 'uint' => 'uint_t', 'ulong' => 'ulong_t', 'u_int' => 'uint_t', 'u_short' => 'ushort_t', 'u_long' => 'ulong_t', 'u_char' => 'uchar_t', 'quad' => 'quad_t' ); my $lint_re = qr/\/\*(?: ARGSUSED[0-9]*|NOTREACHED|LINTLIBRARY|VARARGS[0-9]*| CONSTCOND|CONSTANTCOND|CONSTANTCONDITION|EMPTY| FALLTHRU|FALLTHROUGH|LINTED.*?|PRINTFLIKE[0-9]*| PROTOLIB[0-9]*|SCANFLIKE[0-9]*|CSTYLED.*? )\*\//x; my $splint_re = qr/\/\*@.*?@\*\//x; my $warlock_re = qr/\/\*\s*(?: VARIABLES\ PROTECTED\ BY| MEMBERS\ PROTECTED\ BY| ALL\ MEMBERS\ PROTECTED\ BY| READ-ONLY\ VARIABLES:| READ-ONLY\ MEMBERS:| VARIABLES\ READABLE\ WITHOUT\ LOCK:| MEMBERS\ READABLE\ WITHOUT\ LOCK:| LOCKS\ COVERED\ BY| LOCK\ UNNEEDED\ BECAUSE| LOCK\ NEEDED:| LOCK\ HELD\ ON\ ENTRY:| READ\ LOCK\ HELD\ ON\ ENTRY:| WRITE\ LOCK\ HELD\ ON\ ENTRY:| LOCK\ ACQUIRED\ AS\ SIDE\ EFFECT:| READ\ LOCK\ ACQUIRED\ AS\ SIDE\ EFFECT:| WRITE\ LOCK\ ACQUIRED\ AS\ SIDE\ EFFECT:| LOCK\ RELEASED\ AS\ SIDE\ EFFECT:| LOCK\ UPGRADED\ AS\ SIDE\ EFFECT:| LOCK\ DOWNGRADED\ AS\ SIDE\ EFFECT:| FUNCTIONS\ CALLED\ THROUGH\ POINTER| FUNCTIONS\ CALLED\ THROUGH\ MEMBER| LOCK\ ORDER: )/x; my $err_stat = 0; # exit status if ($#ARGV >= 0) { foreach my $arg (@ARGV) { my $fh = new IO::File $arg, "r"; if (!defined($fh)) { printf "%s: can not open\n", $arg; } else { &cstyle($arg, $fh); close $fh; } } } else { &cstyle("", *STDIN); } exit $err_stat; my $no_errs = 0; # set for CSTYLED-protected lines sub err($) { my ($error) = @_; unless ($no_errs) { if ($verbose) { printf $fmt, $filename, $., $error, $line; } else { printf $fmt, $filename, $., $error; } $err_stat = 1; } } sub err_prefix($$) { my ($prevline, $error) = @_; my $out = $prevline."\n".$line; unless ($no_errs) { if ($verbose) { printf $fmt, $filename, $., $error, $out; } else { printf $fmt, $filename, $., $error; } $err_stat = 1; } } sub err_prev($) { my ($error) = @_; unless ($no_errs) { if ($verbose) { printf $fmt, $filename, $. - 1, $error, $prev; } else { printf $fmt, $filename, $. - 1, $error; } $err_stat = 1; } } sub cstyle($$) { my ($fn, $filehandle) = @_; $filename = $fn; # share it globally my $in_cpp = 0; my $next_in_cpp = 0; my $in_comment = 0; my $in_header_comment = 0; my $comment_done = 0; my $in_warlock_comment = 0; my $in_function = 0; my $in_function_header = 0; my $function_header_full_indent = 0; my $in_declaration = 0; my $note_level = 0; my $nextok = 0; my $nocheck = 0; my $in_string = 0; my ($okmsg, $comment_prefix); $line = ''; $prev = ''; reset_indent(); line: while (<$filehandle>) { s/\r?\n$//; # strip return and newline # save the original line, then remove all text from within # double or single quotes, we do not want to check such text. $line = $_; # # C allows strings to be continued with a backslash at the end of # the line. We translate that into a quoted string on the previous # line followed by an initial quote on the next line. # # (we assume that no-one will use backslash-continuation with character # constants) # $_ = '"' . $_ if ($in_string && !$nocheck && !$in_comment); # # normal strings and characters # s/'([^\\']|\\[^xX0]|\\0[0-9]*|\\[xX][0-9a-fA-F]*)'/''/g; s/"([^\\"]|\\.)*"/\"\"/g; # # detect string continuation # if ($nocheck || $in_comment) { $in_string = 0; } else { # # Now that all full strings are replaced with "", we check # for unfinished strings continuing onto the next line. # $in_string = (s/([^"](?:"")*)"([^\\"]|\\.)*\\$/$1""/ || s/^("")*"([^\\"]|\\.)*\\$/""/); } # # figure out if we are in a cpp directive # $in_cpp = $next_in_cpp || /^\s*#/; # continued or started $next_in_cpp = $in_cpp && /\\$/; # only if continued # strip off trailing backslashes, which appear in long macros s/\s*\\$//; # an /* END CSTYLED */ comment ends a no-check block. if ($nocheck) { if (/\/\* *END *CSTYLED *\*\//) { $nocheck = 0; } else { reset_indent(); next line; } } # a /*CSTYLED*/ comment indicates that the next line is ok. if ($nextok) { if ($okmsg) { err($okmsg); } $nextok = 0; $okmsg = 0; if (/\/\* *CSTYLED.*\*\//) { /^.*\/\* *CSTYLED *(.*) *\*\/.*$/; $okmsg = $1; $nextok = 1; } $no_errs = 1; } elsif ($no_errs) { $no_errs = 0; } # check length of line. # first, a quick check to see if there is any chance of being too long. if (($line =~ tr/\t/\t/) * 7 + length($line) > 80) { # yes, there is a chance. # replace tabs with spaces and check again. my $eline = $line; 1 while $eline =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e; if (length($eline) > 80) { err("line > 80 characters"); } } # ignore NOTE(...) annotations (assumes NOTE is on lines by itself). if ($note_level || /\b_?NOTE\s*\(/) { # if in NOTE or this is NOTE s/[^()]//g; # eliminate all non-parens $note_level += s/\(//g - length; # update paren nest level next; } # a /* BEGIN CSTYLED */ comment starts a no-check block. if (/\/\* *BEGIN *CSTYLED *\*\//) { $nocheck = 1; } # a /*CSTYLED*/ comment indicates that the next line is ok. if (/\/\* *CSTYLED.*\*\//) { /^.*\/\* *CSTYLED *(.*) *\*\/.*$/; $okmsg = $1; $nextok = 1; } if (/\/\/ *CSTYLED/) { /^.*\/\/ *CSTYLED *(.*)$/; $okmsg = $1; $nextok = 1; } # universal checks; apply to everything if (/\t +\t/) { err("spaces between tabs"); } if (/ \t+ /) { err("tabs between spaces"); } if (/\s$/) { err("space or tab at end of line"); } if (/[^ \t(]\/\*/ && !/\w\(\/\*.*\*\/\);/) { err("comment preceded by non-blank"); } # is this the beginning or ending of a function? # (not if "struct foo\n{\n") if (/^\{$/ && $prev =~ /\)\s*(const\s*)?(\/\*.*\*\/\s*)?\\?$/) { $in_function = 1; $in_declaration = 1; $in_function_header = 0; $function_header_full_indent = 0; $prev = $line; next line; } if (/^\}\s*(\/\*.*\*\/\s*)*$/) { if ($prev =~ /^\s*return\s*;/) { err_prev("unneeded return at end of function"); } $in_function = 0; reset_indent(); # we don't check between functions $prev = $line; next line; } if ($in_function_header && ! /^ (\w|\.)/ ) { if (/^\{\}$/ # empty functions || /;/ #run function with multiline arguments || /#/ #preprocessor commands || /^[^\s\\]*\(.*\)$/ #functions without ; at the end || /^$/ #function declaration can't have empty line ) { $in_function_header = 0; $function_header_full_indent = 0; } elsif ($prev =~ /^__attribute__/) { #__attribute__((*)) $in_function_header = 0; $function_header_full_indent = 0; $prev = $line; next line; } elsif ($picky && ! (/^\t/ && $function_header_full_indent != 0)) { err("continuation line should be indented by 4 spaces"); } } # # If this matches something of form "foo(", it's probably a function # definition, unless it ends with ") bar;", in which case it's a declaration # that uses a macro to generate the type. # if (/^\w+\(/ && !/\) \w+;/) { $in_function_header = 1; if (/\($/) { $function_header_full_indent = 1; } } if ($in_function_header && /^\{$/) { $in_function_header = 0; $function_header_full_indent = 0; $in_function = 1; } if ($in_function_header && /\);$/) { $in_function_header = 0; $function_header_full_indent = 0; } if ($in_function_header && /\{$/ ) { if ($picky) { err("opening brace on same line as function header"); } $in_function_header = 0; $function_header_full_indent = 0; $in_function = 1; next line; } if ($in_warlock_comment && /\*\//) { $in_warlock_comment = 0; $prev = $line; next line; } # a blank line terminates the declarations within a function. # XXX - but still a problem in sub-blocks. if ($in_declaration && /^$/) { $in_declaration = 0; } if ($comment_done) { $in_comment = 0; $in_header_comment = 0; $comment_done = 0; } # does this looks like the start of a block comment? if (/$hdr_comment_start/) { if (!/^\t*\/\*/) { err("block comment not indented by tabs"); } $in_comment = 1; /^(\s*)\//; $comment_prefix = $1; if ($comment_prefix eq "") { $in_header_comment = 1; } $prev = $line; next line; } # are we still in the block comment? if ($in_comment) { if (/^$comment_prefix \*\/$/) { $comment_done = 1; } elsif (/\*\//) { $comment_done = 1; err("improper block comment close") unless ($ignore_hdr_comment && $in_header_comment); } elsif (!/^$comment_prefix \*[ \t]/ && !/^$comment_prefix \*$/) { err("improper block comment") unless ($ignore_hdr_comment && $in_header_comment); } } if ($in_header_comment && $ignore_hdr_comment) { $prev = $line; next line; } # check for errors that might occur in comments and in code. # allow spaces to be used to draw pictures in all comments. if (/[^ ] / && !/".* .*"/ && !$in_comment) { err("spaces instead of tabs"); } if (/^ / && !/^ \*[ \t\/]/ && !/^ \*$/ && (!/^ (\w|\.)/ || $in_function != 0)) { err("indent by spaces instead of tabs"); } if (/^\t+ [^ \t\*]/ || /^\t+ \S/ || /^\t+ \S/) { err("continuation line not indented by 4 spaces"); } if (/$warlock_re/ && !/\*\//) { $in_warlock_comment = 1; $prev = $line; next line; } if (/^\s*\/\*./ && !/^\s*\/\*.*\*\// && !/$hdr_comment_start/) { err("improper first line of block comment"); } if ($in_comment) { # still in comment, don't do further checks $prev = $line; next line; } if ((/[^(]\/\*\S/ || /^\/\*\S/) && !(/$lint_re/ || ($splint_comments && /$splint_re/))) { err("missing blank after open comment"); } if (/\S\*\/[^)]|\S\*\/$/ && !(/$lint_re/ || ($splint_comments && /$splint_re/))) { err("missing blank before close comment"); } if (/\/\/\S/) { # C++ comments err("missing blank after start comment"); } # check for unterminated single line comments, but allow them when # they are used to comment out the argument list of a function # declaration. if (/\S.*\/\*/ && !/\S.*\/\*.*\*\// && !/\(\/\*/) { err("unterminated single line comment"); } if (/^(#else|#endif|#include)(.*)$/) { $prev = $line; if ($picky) { my $directive = $1; my $clause = $2; # Enforce ANSI rules for #else and #endif: no noncomment # identifiers are allowed after #endif or #else. Allow # C++ comments since they seem to be a fact of life. if ((($1 eq "#endif") || ($1 eq "#else")) && ($clause ne "") && (!($clause =~ /^\s+\/\*.*\*\/$/)) && (!($clause =~ /^\s+\/\/.*$/))) { err("non-comment text following " . "$directive (or malformed $directive " . "directive)"); } } next line; } # # delete any comments and check everything else. Note that # ".*?" is a non-greedy match, so that we don't get confused by # multiple comments on the same line. # s/\/\*.*?\*\///g; s/\/\/.*$//; # C++ comments # delete any trailing whitespace; we have already checked for that. s/\s*$//; # following checks do not apply to text in comments. if (/[^<>\s][!<>=]=/ || /[^<>][!<>=]=[^\s,]/ || (/[^->]>[^,=>\s]/ && !/[^->]>$/) || (/[^<]<[^,=<\s]/ && !/[^<]<$/) || /[^<\s]<[^<]/ || /[^->\s]>[^>]/) { err("missing space around relational operator"); } if (/\S>>=/ || /\S<<=/ || />>=\S/ || /<<=\S/ || /\S[-+*\/&|^%]=/ || (/[^-+*\/&|^%!<>=\s]=[^=]/ && !/[^-+*\/&|^%!<>=\s]=$/) || (/[^!<>=]=[^=\s]/ && !/[^!<>=]=$/)) { # XXX - should only check this for C++ code # XXX - there are probably other forms that should be allowed if (!/\soperator=/) { err("missing space around assignment operator"); } } if (/[,;]\S/ && !/\bfor \(;;\)/) { err("comma or semicolon followed by non-blank"); } # allow "for" statements to have empty "while" clauses if (/\s[,;]/ && !/^[\t]+;$/ && !/^\s*for \([^;]*; ;[^;]*\)/) { err("comma or semicolon preceded by blank"); } if (/^\s*(&&|\|\|)/) { err("improper boolean continuation"); } if (/\S *(&&|\|\|)/ || /(&&|\|\|) *\S/) { err("more than one space around boolean operator"); } if (/\b(for|if|while|switch|sizeof|return|case)\(/) { err("missing space between keyword and paren"); } if (/(\b(for|if|while|switch|return)\b.*){2,}/ && !/^#define/) { # multiple "case" and "sizeof" allowed err("more than one keyword on line"); } if (/\b(for|if|while|switch|sizeof|return|case)\s\s+\(/ && !/^#if\s+\(/) { err("extra space between keyword and paren"); } # try to detect "func (x)" but not "if (x)" or # "#define foo (x)" or "int (*func)();" if (/\w\s\(/) { my $s = $_; # strip off all keywords on the line s/\b(for|if|while|switch|return|case|sizeof)\s\(/XXX(/g; s/#elif\s\(/XXX(/g; s/^#define\s+\w+\s+\(/XXX(/; # do not match things like "void (*f)();" # or "typedef void (func_t)();" s/\w\s\(+\*/XXX(*/g; s/\b($typename|void)\s+\(+/XXX(/og; if (/\w\s\(/) { err("extra space between function name and left paren"); } $_ = $s; } # try to detect "int foo(x)", but not "extern int foo(x);" # XXX - this still trips over too many legitimate things, # like "int foo(x,\n\ty);" # if (/^(\w+(\s|\*)+)+\w+\(/ && !/\)[;,](\s|)*$/ && # !/^(extern|static)\b/) { # err("return type of function not on separate line"); # } # this is a close approximation if (/^(\w+(\s|\*)+)+\w+\(.*\)(\s|)*$/ && !/^(extern|static)\b/) { err("return type of function not on separate line"); } if (/^#define /) { err("#define followed by space instead of tab"); } if (/^\s*return\W[^;]*;/ && !/^\s*return\s*\(.*\);/) { err("unparenthesized return expression"); } if (/\bsizeof\b/ && !/\bsizeof\s*\(.*\)/) { err("unparenthesized sizeof expression"); } if (/\(\s/) { err("whitespace after left paren"); } # Allow "for" statements to have empty "continue" clauses. # Allow right paren on its own line unless we're being picky (-p). if (/\s\)/ && !/^\s*for \([^;]*;[^;]*; \)/ && ($picky || !/^\s*\)/)) { err("whitespace before right paren"); } if (/^\s*\(void\)[^ ]/) { err("missing space after (void) cast"); } if (/\S\{/ && !/\{\{/) { err("missing space before left brace"); } if ($in_function && /^\s+\{/ && ($prev =~ /\)\s*$/ || $prev =~ /\bstruct\s+\w+$/)) { err("left brace starting a line"); } if (/\}(else|while)/) { err("missing space after right brace"); } if (/\}\s\s+(else|while)/) { err("extra space after right brace"); } if (/\b_VOID\b|\bVOID\b|\bSTATIC\b/) { err("obsolete use of VOID or STATIC"); } if (/\b$typename\*/o) { err("missing space between type name and *"); } if (/^\s+#/) { err("preprocessor statement not in column 1"); } if (/^#\s/) { err("blank after preprocessor #"); } if (/!\s*(strcmp|strncmp|bcmp)\s*\(/) { err("don't use boolean ! with comparison functions"); } # # We completely ignore, for purposes of indentation: # * lines outside of functions # * preprocessor lines # if ($check_continuation && $in_function && !$in_cpp) { process_indent($_); } if ($picky) { # try to detect spaces after casts, but allow (e.g.) # "sizeof (int) + 1", "void (*funcptr)(int) = foo;", and # "int foo(int) __NORETURN;" if ((/^\($typename( \*+)?\)\s/o || /\W\($typename( \*+)?\)\s/o) && !/sizeof\s*\($typename( \*)?\)\s/o && !/\($typename( \*+)?\)\s+=[^=]/o) { err("space after cast"); } if (/\b$typename\s*\*\s/o && !/\b$typename\s*\*\s+const\b/o) { err("unary * followed by space"); } } if ($check_posix_types) { # try to detect old non-POSIX types. # POSIX requires all non-standard typedefs to end in _t, # but historically these have been used. if (/\b(unchar|ushort|uint|ulong|u_int|u_short|u_long|u_char|quad)\b/) { err("non-POSIX typedef $1 used: use $old2posix{$1} instead"); } } if ($heuristic) { # cannot check this everywhere due to "struct {\n...\n} foo;" if ($in_function && !$in_declaration && /\}./ && !/\}\s+=/ && !/\{.*\}[;,]$/ && !/\}(\s|)*$/ && !/\} (else|while)/ && !/\}\}/) { err("possible bad text following right brace"); } # cannot check this because sub-blocks in # the middle of code are ok if ($in_function && /^\s+\{/) { err("possible left brace starting a line"); } } if (/^\s*else\W/) { if ($prev =~ /^\s*\}$/) { err_prefix($prev, "else and right brace should be on same line"); } } $prev = $line; } if ($prev eq "") { err("last line in file is blank"); } } # # Continuation-line checking # # The rest of this file contains the code for the continuation checking # engine. It's a pretty simple state machine which tracks the expression # depth (unmatched '('s and '['s). # # Keep in mind that the argument to process_indent() has already been heavily # processed; all comments have been replaced by control-A, and the contents of # strings and character constants have been elided. # my $cont_in; # currently inside of a continuation my $cont_off; # skipping an initializer or definition my $cont_noerr; # suppress cascading errors my $cont_start; # the line being continued my $cont_base; # the base indentation my $cont_first; # this is the first line of a statement my $cont_multiseg; # this continuation has multiple segments my $cont_special; # this is a C statement (if, for, etc.) my $cont_macro; # this is a macro my $cont_case; # this is a multi-line case my @cont_paren; # the stack of unmatched ( and [s we've seen sub reset_indent() { $cont_in = 0; $cont_off = 0; } sub delabel($) { # # replace labels with tabs. Note that there may be multiple # labels on a line. # local $_ = $_[0]; while (/^(\t*)( *(?:(?:\w+\s*)|(?:case\b[^:]*)): *)(.*)$/) { my ($pre_tabs, $label, $rest) = ($1, $2, $3); $_ = $pre_tabs; while ($label =~ s/^([^\t]*)(\t+)//) { $_ .= "\t" x (length($2) + length($1) / 8); } $_ .= ("\t" x (length($label) / 8)).$rest; } return ($_); } sub process_indent($) { require strict; local $_ = $_[0]; # preserve the global $_ s///g; # No comments s/\s+$//; # Strip trailing whitespace return if (/^$/); # skip empty lines # regexps used below; keywords taking (), macros, and continued cases my $special = '(?:(?:\}\s*)?else\s+)?(?:if|for|while|switch)\b'; my $macro = '[A-Z_][A-Z_0-9]*\('; my $case = 'case\b[^:]*$'; # skip over enumerations, array definitions, initializers, etc. if ($cont_off <= 0 && !/^\s*$special/ && (/(?:(?:\b(?:enum|struct|union)\s*[^\{]*)|(?:\s+=\s*))\{/ || (/^\s*\{/ && $prev =~ /=\s*(?:\/\*.*\*\/\s*)*$/))) { $cont_in = 0; $cont_off = tr/{/{/ - tr/}/}/; return; } if ($cont_off) { $cont_off += tr/{/{/ - tr/}/}/; return; } if (!$cont_in) { $cont_start = $line; if (/^\t* /) { err("non-continuation indented 4 spaces"); $cont_noerr = 1; # stop reporting } $_ = delabel($_); # replace labels with tabs # check if the statement is complete return if (/^\s*\}?$/); return if (/^\s*\}?\s*else\s*\{?$/); return if (/^\s*do\s*\{?$/); return if (/\{$/); return if (/\}[,;]?$/); # Allow macros on their own lines return if (/^\s*[A-Z_][A-Z_0-9]*$/); # cases we don't deal with, generally non-kosher if (/\{/) { err("stuff after {"); return; } # Get the base line, and set up the state machine /^(\t*)/; $cont_base = $1; $cont_in = 1; @cont_paren = (); $cont_first = 1; $cont_multiseg = 0; # certain things need special processing $cont_special = /^\s*$special/? 1 : 0; $cont_macro = /^\s*$macro/? 1 : 0; $cont_case = /^\s*$case/? 1 : 0; } else { $cont_first = 0; # Strings may be pulled back to an earlier (half-)tabstop unless ($cont_noerr || /^$cont_base / || (/^\t*(?: )?(?:gettext\()?\"/ && !/^$cont_base\t/)) { err_prefix($cont_start, "continuation should be indented 4 spaces"); } } my $rest = $_; # keeps the remainder of the line # # The split matches 0 characters, so that each 'special' character # is processed separately. Parens and brackets are pushed and # popped off the @cont_paren stack. For normal processing, we wait # until a ; or { terminates the statement. "special" processing # (if/for/while/switch) is allowed to stop when the stack empties, # as is macro processing. Case statements are terminated with a : # and an empty paren stack. # foreach $_ (split /[^\(\)\[\]\{\}\;\:]*/) { next if (length($_) == 0); # rest contains the remainder of the line my $rxp = "[^\Q$_\E]*\Q$_\E"; $rest =~ s/^$rxp//; if (/\(/ || /\[/) { push @cont_paren, $_; } elsif (/\)/ || /\]/) { my $cur = $_; tr/\)\]/\(\[/; my $old = (pop @cont_paren); if (!defined($old)) { err("unexpected '$cur'"); $cont_in = 0; last; } elsif ($old ne $_) { err("'$cur' mismatched with '$old'"); $cont_in = 0; last; } # # If the stack is now empty, do special processing # for if/for/while/switch and macro statements. # next if (@cont_paren != 0); if ($cont_special) { if ($rest =~ /^\s*\{?$/) { $cont_in = 0; last; } if ($rest =~ /^\s*;$/) { err("empty if/for/while body ". "not on its own line"); $cont_in = 0; last; } if (!$cont_first && $cont_multiseg == 1) { err_prefix($cont_start, "multiple statements continued ". "over multiple lines"); $cont_multiseg = 2; } elsif ($cont_multiseg == 0) { $cont_multiseg = 1; } # We've finished this section, start # processing the next. goto section_ended; } if ($cont_macro) { if ($rest =~ /^$/) { $cont_in = 0; last; } } } elsif (/\;/) { if ($cont_case) { err("unexpected ;"); } elsif (!$cont_special) { err("unexpected ;") if (@cont_paren != 0); if (!$cont_first && $cont_multiseg == 1) { err_prefix($cont_start, "multiple statements continued ". "over multiple lines"); $cont_multiseg = 2; } elsif ($cont_multiseg == 0) { $cont_multiseg = 1; } if ($rest =~ /^$/) { $cont_in = 0; last; } if ($rest =~ /^\s*special/) { err("if/for/while/switch not started ". "on its own line"); } goto section_ended; } } elsif (/\{/) { err("{ while in parens/brackets") if (@cont_paren != 0); err("stuff after {") if ($rest =~ /[^\s}]/); $cont_in = 0; last; } elsif (/\}/) { err("} while in parens/brackets") if (@cont_paren != 0); if (!$cont_special && $rest !~ /^\s*(while|else)\b/) { if ($rest =~ /^$/) { err("unexpected }"); } else { err("stuff after }"); } $cont_in = 0; last; } } elsif (/\:/ && $cont_case && @cont_paren == 0) { err("stuff after multi-line case") if ($rest !~ /$^/); $cont_in = 0; last; } next; section_ended: # End of a statement or if/while/for loop. Reset # cont_special and cont_macro based on the rest of the # line. $cont_special = ($rest =~ /^\s*$special/)? 1 : 0; $cont_macro = ($rest =~ /^\s*$macro/)? 1 : 0; $cont_case = 0; next; } $cont_noerr = 0 if (!$cont_in); } zfs-0.8.3/scripts/PaxHeaders.151519/make_gitrev.sh0000644000000000000000000000007413607166133017741 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.187480759 zfs-0.8.3/scripts/make_gitrev.sh0000755016037001603700000000247413607166133017750 0ustar00hutter2hutter200000000000000#!/bin/sh # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # Copyright (c) 2018 by Delphix. All rights reserved. # Copyright (c) 2018 by Matthew Thode. All rights reserved. # # Generate zfs_gitrev.h. Note that we need to do this for every # invocation of `make`, including for incremental builds. Therefore we # can't use a zfs_gitrev.h.in file which would be processed only when # `configure` is run. # set -e -u cleanup() { ZFS_GIT_REV=${ZFS_GIT_REV:-"unknown"} cat << EOF > "$(dirname "$0")"/../include/zfs_gitrev.h #define ZFS_META_GITREV "${ZFS_GIT_REV}" EOF } trap cleanup EXIT # Check if git is installed and we are in a git repo. git rev-parse --git-dir > /dev/null 2>&1 # Get the git current git revision ZFS_GIT_REV=$(git describe --always --long --dirty 2>/dev/null) # Check if header file already contain the exact string grep -sq "\"${ZFS_GIT_REV}\"" "$(dirname "$0")"/../include/zfs_gitrev.h && trap - EXIT exit 0 zfs-0.8.3/scripts/PaxHeaders.151519/common.sh.in0000644000000000000000000000007413607166133017341 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.173480309 zfs-0.8.3/scripts/common.sh.in0000644016037001603700000000115113607166133017334 0ustar00hutter2hutter200000000000000#!/bin/sh # Directories export BIN_DIR= export SBIN_DIR= export ZTS_DIR= export SCRIPT_DIR= # General commands export ZDB=${ZDB:-$SBIN_DIR/zdb} export ZFS=${ZFS:-$SBIN_DIR/zfs} export ZPOOL=${ZPOOL:-$SBIN_DIR/zpool} export ZTEST=${ZTEST:-$SBIN_DIR/ztest} export ZFS_SH=${ZFS_SH:-$SCRIPT_DIR/zfs.sh} # Test Suite export RUNFILE_DIR=${RUNFILE_DIR:-$ZTS_DIR/runfiles} export TEST_RUNNER=${TEST_RUNNER:-$ZTS_DIR/test-runner/bin/test-runner.py} export ZTS_REPORT=${ZTS_REPORT:-$ZTS_DIR/test-runner/bin/zts-report.py} export STF_TOOLS=${STF_TOOLS:-$ZTS_DIR/test-runner} export STF_SUITE=${STF_SUITE:-$ZTS_DIR/zfs-tests} zfs-0.8.3/scripts/PaxHeaders.151519/zol2zfs-patch.sed0000644000000000000000000000007413607166133020313 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.195481015 zfs-0.8.3/scripts/zol2zfs-patch.sed0000755016037001603700000000145113607166133020314 0ustar00hutter2hutter200000000000000#!/bin/sed -f s:cmd:usr/src/cmd:g s:include/libzfs.h:usr/src/lib/libzfs/common/libzfs.h:g s:include/libzfs_core.h:usr/src/lib/libzfs_core/common/libzfs_core.h:g s:include/sys:lib/libzpool/common/sys:g s:include/sys:usr/src/uts/common/fs/zfs/sys:g s:include/sys:usr/src/uts/common/sys:g s:include/zfs_fletcher.h:usr/src/common/zfs/zfs_fletcher.h:g s:include:usr/src/common/zfs:g s:lib/libzfs:usr/src/lib/libzfs/common:g s:lib/libzfs_core:usr/src/lib/libzfs_core/common:g s:lib/libzpool:lib/libzpool/common:g s:lib/libzpool:usr/src/lib/libzpool:g s:man/man5/zpool-features.5:usr/src/man/man5/zpool-features.5:g s:man/man8/zfs.8:usr/src/man/man1m/zfs.1m:g s:module/nvpair:usr/src/common/nvpair:g s:module/zcommon:usr/src/common/zfs/:g s:module/zfs:usr/src/uts/common/fs/zfs:g s:tests/zfs-tests:test/zfs-tests:g zfs-0.8.3/scripts/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147017151 xustar000000000000000030 atime=1579730431.341201403 30 ctime=1579730471.167480117 zfs-0.8.3/scripts/Makefile.am0000644016037001603700000000450013607166147017145 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@ dist_pkgdata_SCRIPTS = \ $(top_srcdir)/scripts/zimport.sh \ $(top_srcdir)/scripts/zfs.sh \ $(top_srcdir)/scripts/zfs-tests.sh \ $(top_srcdir)/scripts/zloop.sh \ $(top_srcdir)/scripts/zfs-helpers.sh EXTRA_DIST = \ commitcheck.sh \ common.sh.in \ cstyle.pl \ dkms.mkconf \ dkms.postbuild \ enum-extract.pl \ kmodtool \ make_gitrev.sh \ man-dates.sh \ paxcheck.sh \ zfs2zol-patch.sed \ zol2zfs-patch.sed define EXTRA_ENVIRONMENT # Only required for in-tree use export INTREE="yes" export GDB="/usr/bin/libtool --mode=execute gdb" export LDMOD=/sbin/insmod export CMD_DIR=@abs_top_builddir@/cmd export UDEV_RULE_DIR=@abs_top_builddir@/udev/rules.d export ZEDLET_ETC_DIR=$$CMD_DIR/zed/zed.d export ZEDLET_LIBEXEC_DIR=$$CMD_DIR/zed/zed.d export ZPOOL_SCRIPT_DIR=$$CMD_DIR/zpool/zpool.d export ZPOOL_SCRIPTS_PATH=$$CMD_DIR/zpool/zpool.d export CONTRIB_DIR=@abs_top_builddir@/contrib export LIB_DIR=@abs_top_builddir@/lib export INSTALL_UDEV_DIR=@udevdir@ export INSTALL_UDEV_RULE_DIR=@udevruledir@ export INSTALL_MOUNT_HELPER_DIR=@mounthelperdir@ export INSTALL_SYSCONF_DIR=@sysconfdir@ export INSTALL_PYTHON_DIR=@pythonsitedir@ export KMOD_SPL=@abs_top_builddir@/module/spl/spl.ko export KMOD_ZAVL=@abs_top_builddir@/module/avl/zavl.ko export KMOD_ZNVPAIR=@abs_top_builddir@/module/nvpair/znvpair.ko export KMOD_ZUNICODE=@abs_top_builddir@/module/unicode/zunicode.ko export KMOD_ZCOMMON=@abs_top_builddir@/module/zcommon/zcommon.ko export KMOD_ZLUA=@abs_top_builddir@/module/lua/zlua.ko export KMOD_ICP=@abs_top_builddir@/module/icp/icp.ko export KMOD_ZFS=@abs_top_builddir@/module/zfs/zfs.ko endef export EXTRA_ENVIRONMENT all-local: -$(SED) -e '\|^export BIN_DIR=|s|$$|@abs_top_builddir@/bin|' \ -e '\|^export SBIN_DIR=|s|$$|@abs_top_builddir@/bin|' \ -e '\|^export ZTS_DIR=|s|$$|@abs_top_srcdir@/tests|' \ -e '\|^export SCRIPT_DIR=|s|$$|@abs_top_srcdir@/scripts|' \ $(abs_top_srcdir)/scripts/common.sh.in >common.sh -echo "$$EXTRA_ENVIRONMENT" >>common.sh clean-local: -$(RM) common.sh install-data-hook: -$(SED) -e '\|^export BIN_DIR=|s|$$|@bindir@|' \ -e '\|^export SBIN_DIR=|s|$$|@sbindir@|' \ -e '\|^export ZTS_DIR=|s|$$|@datadir@/@PACKAGE@|' \ -e '\|^export SCRIPT_DIR=|s|$$|@datadir@/@PACKAGE@|' \ $(abs_top_srcdir)/scripts/common.sh.in \ >$(DESTDIR)$(datadir)/@PACKAGE@/common.sh zfs-0.8.3/scripts/PaxHeaders.151519/zloop.sh0000644000000000000000000000007413607166147016614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.162479957 zfs-0.8.3/scripts/zloop.sh0000755016037001603700000001633613607166147016625 0ustar00hutter2hutter200000000000000#!/bin/bash # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2015 by Delphix. All rights reserved. # Copyright (C) 2016 Lawrence Livermore National Security, LLC. # BASE_DIR=$(dirname "$0") SCRIPT_COMMON=common.sh if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then . "${BASE_DIR}/${SCRIPT_COMMON}" else echo "Missing helper script ${SCRIPT_COMMON}" && exit 1 fi # shellcheck disable=SC2034 PROG=zloop.sh GDB=${GDB:-gdb} DEFAULTWORKDIR=/var/tmp DEFAULTCOREDIR=/var/tmp/zloop function usage { echo -e "\n$0 [-t ] [ -s ] [-c ]" \ "[ -- [extra ztest parameters]]\n" \ "\n" \ " This script runs ztest repeatedly with randomized arguments.\n" \ " If a crash is encountered, the ztest logs, any associated\n" \ " vdev files, and core file (if one exists) are moved to the\n" \ " output directory ($DEFAULTCOREDIR by default). Any options\n" \ " after the -- end-of-options marker will be passed to ztest.\n" \ "\n" \ " Options:\n" \ " -t Total time to loop for, in seconds. If not provided,\n" \ " zloop runs forever.\n" \ " -s Size of vdev devices.\n" \ " -f Specify working directory for ztest vdev files.\n" \ " -c Specify a core dump directory to use.\n" \ " -m Max number of core dumps to allow before exiting.\n" \ " -l Create 'ztest.core.N' symlink to core directory.\n" \ " -h Print this help message.\n" \ "" >&2 } function or_die { # shellcheck disable=SC2068 $@ # shellcheck disable=SC2181 if [[ $? -ne 0 ]]; then # shellcheck disable=SC2145 echo "Command failed: $@" exit 1 fi } # core file helpers origcorepattern="$(cat /proc/sys/kernel/core_pattern)" coreglob="$(grep -E -o '^([^|%[:space:]]*)' /proc/sys/kernel/core_pattern)*" if [[ $coreglob = "*" ]]; then echo "Setting core file pattern..." echo "core" > /proc/sys/kernel/core_pattern coreglob="$(grep -E -o '^([^|%[:space:]]*)' \ /proc/sys/kernel/core_pattern)*" fi function core_file { # shellcheck disable=SC2012 disable=2086 printf "%s" "$(ls -tr1 $coreglob 2> /dev/null | head -1)" } function core_prog { prog=$ZTEST core_id=$($GDB --batch -c "$1" | grep "Core was generated by" | \ tr \' ' ') # shellcheck disable=SC2076 if [[ "$core_id" =~ "zdb " ]]; then prog=$ZDB fi printf "%s" "$prog" } function store_core { core="$(core_file)" if [[ $ztrc -ne 0 ]] || [[ -f "$core" ]]; then df -h "$workdir" >>ztest.out coreid=$(date "+zloop-%y%m%d-%H%M%S") foundcrashes=$((foundcrashes + 1)) # zdb debugging zdbcmd="$ZDB -U "$workdir/zpool.cache" -dddMmDDG ztest" zdbdebug=$($zdbcmd 2>&1) echo -e "$zdbcmd\n" >>ztest.zdb echo "$zdbdebug" >>ztest.zdb dest=$coredir/$coreid or_die mkdir -p "$dest" or_die mkdir -p "$dest/vdev" if [[ $symlink -ne 0 ]]; then or_die ln -sf "$dest" ztest.core.$foundcrashes fi echo "*** ztest crash found - moving logs to $dest" or_die mv ztest.history "$dest/" or_die mv ztest.zdb "$dest/" or_die mv ztest.out "$dest/" or_die mv "$workdir/ztest*" "$dest/vdev/" if [[ -e "$workdir/zpool.cache" ]]; then or_die mv "$workdir/zpool.cache" "$dest/vdev/" fi # check for core if [[ -f "$core" ]]; then coreprog=$(core_prog "$core") coredebug=$($GDB --batch --quiet \ -ex "set print thread-events off" \ -ex "printf \"*\n* Backtrace \n*\n\"" \ -ex "bt" \ -ex "printf \"*\n* Libraries \n*\n\"" \ -ex "info sharedlib" \ -ex "printf \"*\n* Threads (full) \n*\n\"" \ -ex "info threads" \ -ex "printf \"*\n* Backtraces \n*\n\"" \ -ex "thread apply all bt" \ -ex "printf \"*\n* Backtraces (full) \n*\n\"" \ -ex "thread apply all bt full" \ -ex "quit" "$coreprog" "$core" 2>&1 | \ grep -v "New LWP") # Dump core + logs to stored directory echo "$coredebug" >>"$dest/ztest.gdb" or_die mv "$core" "$dest/" # Record info in cores logfile echo "*** core @ $coredir/$coreid/$core:" | \ tee -a ztest.cores fi if [[ $coremax -gt 0 ]] && [[ $foundcrashes -ge $coremax ]]; then echo "exiting... max $coremax allowed cores" exit 1 else echo "continuing..." fi fi } # parse arguments # expected format: zloop [-t timeout] [-c coredir] [-- extra ztest args] coredir=$DEFAULTCOREDIR basedir=$DEFAULTWORKDIR rundir="zloop-run" timeout=0 size="512m" coremax=0 symlink=0 while getopts ":ht:m:s:c:f:l" opt; do case $opt in t ) [[ $OPTARG -gt 0 ]] && timeout=$OPTARG ;; m ) [[ $OPTARG -gt 0 ]] && coremax=$OPTARG ;; s ) [[ $OPTARG ]] && size=$OPTARG ;; c ) [[ $OPTARG ]] && coredir=$OPTARG ;; f ) [[ $OPTARG ]] && basedir=$(readlink -f "$OPTARG") ;; l ) symlink=1 ;; h ) usage exit 2 ;; * ) echo "Invalid argument: -$OPTARG"; usage exit 1 esac done # pass remaining arguments on to ztest shift $((OPTIND - 1)) # enable core dumps ulimit -c unlimited export ASAN_OPTIONS=abort_on_error=1:disable_coredump=0 if [[ -f "$(core_file)" ]]; then echo -n "There's a core dump here you might want to look at first... " core_file echo exit 1 fi if [[ ! -d $coredir ]]; then echo "core dump directory ($coredir) does not exist, creating it." or_die mkdir -p "$coredir" fi if [[ ! -w $coredir ]]; then echo "core dump directory ($coredir) is not writable." exit 1 fi or_die rm -f ztest.history or_die rm -f ztest.zdb or_die rm -f ztest.cores ztrc=0 # ztest return value foundcrashes=0 # number of crashes found so far starttime=$(date +%s) curtime=$starttime # if no timeout was specified, loop forever. while [[ $timeout -eq 0 ]] || [[ $curtime -le $((starttime + timeout)) ]]; do zopt="-G -VVVVV" # start each run with an empty directory workdir="$basedir/$rundir" or_die rm -rf "$workdir" or_die mkdir "$workdir" # switch between common arrangements & fully randomized if [[ $((RANDOM % 2)) -eq 0 ]]; then mirrors=2 raidz=0 parity=1 vdevs=2 else mirrors=$(((RANDOM % 3) * 1)) parity=$(((RANDOM % 3) + 1)) raidz=$((((RANDOM % 9) + parity + 1) * (RANDOM % 2))) vdevs=$(((RANDOM % 3) + 3)) fi align=$(((RANDOM % 2) * 3 + 9)) runtime=$((RANDOM % 100)) passtime=$((RANDOM % (runtime / 3 + 1) + 10)) zopt="$zopt -m $mirrors" zopt="$zopt -r $raidz" zopt="$zopt -R $parity" zopt="$zopt -v $vdevs" zopt="$zopt -a $align" zopt="$zopt -T $runtime" zopt="$zopt -P $passtime" zopt="$zopt -s $size" zopt="$zopt -f $workdir" # shellcheck disable=SC2124 cmd="$ZTEST $zopt $@" desc="$(date '+%m/%d %T') $cmd" echo "$desc" | tee -a ztest.history echo "$desc" >>ztest.out $cmd >>ztest.out 2>&1 ztrc=$? grep -E '===|WARNING' ztest.out >>ztest.history store_core curtime=$(date +%s) done echo "zloop finished, $foundcrashes crashes found" #restore core pattern echo "$origcorepattern" > /proc/sys/kernel/core_pattern uptime >>ztest.out if [[ $foundcrashes -gt 0 ]]; then exit 1 fi zfs-0.8.3/scripts/PaxHeaders.151519/enum-extract.pl0000644000000000000000000000007413607166133020061 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.182480599 zfs-0.8.3/scripts/enum-extract.pl0000755016037001603700000000167313607166133020070 0ustar00hutter2hutter200000000000000#!/usr/bin/perl -w my $usage = <) { # comments s/\/\*.*\*\///; if (m/\/\*/) { while ($_ .= <>) { last if s/\/\*.*\*\///s; } } # preprocessor stuff next if /^#/; # find our enum $in_enum = 1 if s/^\s*enum\s+${enum}(?:\s|$)//; next unless $in_enum; # remove explicit values s/\s*=[^,]+,/,/g; # extract each identifier while (m/\b([a-z_][a-z0-9_]*)\b/ig) { print $1, "\n"; } # # don't exit: there may be multiple versions of the same enum, e.g. # inside different #ifdef blocks. Let's explicitly return all of # them and let external tooling deal with it. # $in_enum = 0 if m/}\s*;/; } exit 0; zfs-0.8.3/scripts/PaxHeaders.151519/paxcheck.sh0000644000000000000000000000007413607166133017232 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.191480887 zfs-0.8.3/scripts/paxcheck.sh0000755016037001603700000000226513607166133017237 0ustar00hutter2hutter200000000000000#!/bin/sh # shellcheck disable=SC2039 if ! type scanelf > /dev/null 2>&1; then echo "scanelf (from pax-utils) is required for these checks." >&2 exit 3 fi RET=0 # check for exec stacks OUT=$(scanelf -qyRAF '%e %p' "$1") if [ x"${OUT}" != x ]; then RET=2 echo "The following files contain writable and executable sections" echo " Files with such sections will not work properly (or at all!) on some" echo " architectures/operating systems." echo " For more information, see:" echo " https://wiki.gentoo.org/wiki/Hardened/GNU_stack_quickstart" echo echo "${OUT}" echo fi # check for TEXTRELS OUT=$(scanelf -qyRAF '%T %p' "$1") if [ x"${OUT}" != x ]; then RET=2 echo "The following files contain runtime text relocations" echo " Text relocations force the dynamic linker to perform extra" echo " work at startup, waste system resources, and may pose a security" echo " risk. On some architectures, the code may not even function" echo " properly, if at all." echo " For more information, see:" echo " https://wiki.gentoo.org/wiki/Hardened/HOWTO_locate_and_fix_textrels" echo echo "${OUT}" echo fi exit $RET zfs-0.8.3/scripts/PaxHeaders.151519/kmodtool0000644000000000000000000000007413612141514016653 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.184480663 zfs-0.8.3/scripts/kmodtool0000755016037001603700000004463013612141514016662 0ustar00hutter2hutter200000000000000#!/bin/bash # kmodtool - Helper script for building kernel module RPMs # Copyright (c) 2003-2012 Ville Skyttä , # Thorsten Leemhuis # Nicolas Chauvet # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. shopt -s extglob myprog="kmodtool-${repo}" myver="0.12.1" kmodname= build_kernels="current" kernels_known_variants= kernel_versions= kernel_versions_to_build_for= prefix= filterfile= target= buildroot= error_out() { local errorlevel=${1} shift echo "Error: $@" >&2 # the next line is not multi-line safe -- not needed *yet* echo "%global kmodtool_check echo \"kmodtool error: $@\"; exit ${errorlevel};" exit ${errorlevel} } print_rpmtemplate_header() { echo echo '%global kmodinstdir_prefix '${prefix}/lib/modules/ echo '%global kmodinstdir_postfix '/extra/${kmodname}/ echo '%global kernel_versions '${kernel_versions} echo } print_akmodtemplate () { echo cat <= %{?epoch:%{epoch}:}%{version} Provides: ${kmodname}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} EOF if [[ ${obsolete_name} ]]; then echo "Provides: akmod-${obsolete_name} = ${obsolete_version}" echo "Obsoletes: akmod-${obsolete_name} < ${obsolete_version}" fi cat < /dev/null & %files -n akmod-${kmodname} %defattr(-,root,root,-) %{_usrsrc}/akmods/* EOF } print_akmodmeta () { cat <= %{?epoch:%{epoch}:}%{version} %if 0%{?rhel} == 6 || 0%{?centos} == 6 Requires(post): module-init-tools Requires(postun): module-init-tools %else Requires(post): kmod Requires(postun): kmod %endif EOF if [[ ${obsolete_name} ]]; then echo "Provides: kmod-${obsolete_name}-${kernel_uname_r} = ${obsolete_version}" echo "Obsoletes: kmod-${obsolete_name}-${kernel_uname_r} < ${obsolete_version}" fi # second part if [[ ! "${customkernel}" ]]; then cat < /dev/null || : %postun -n kmod-${kmodname}-${kernel_uname_r} ${prefix}${depmod_path} -aF /boot/System.map-${kernel_uname_r} ${kernel_uname_r} &> /dev/null || : EOF else cat < /dev/null || : %postun -n kmod-${kmodname}-${kernel_uname_r} [[ "\$(uname -r)" == "${kernel_uname_r}" ]] && ${prefix}${depmod_path} -a > /dev/null || : EOF fi # third part cat <= %{?epoch:%{epoch}:}%{version}-%{release}" fi if [[ ${obsolete_name} ]]; then echo "Provides: kmod-${obsolete_name}-devel = ${obsolete_version}" echo "Obsoletes: kmod-${obsolete_name}-devel < ${obsolete_version}" fi cat < objects for the newest kernel. %files -n kmod-${kmodname}-devel %defattr(644,root,root,755) %{_usrsrc}/${kmodname}-%{version} EOF if [[ ${obsolete_name} ]]; then echo "%{_usrsrc}/${obsolete_name}-%{version}" fi for kernel in ${1}; do local kernel_uname_r=${kernel} echo "%exclude %{_usrsrc}/${kmodname}-%{version}/${kernel_uname_r}" if [[ ${obsolete_name} ]]; then echo "%exclude %{_usrsrc}/${obsolete_name}-%{version}/${kernel_uname_r}" fi done echo echo } print_rpmtemplate_per_kmoddevelpkg () { if [[ "${1}" == "--custom" ]]; then shift local customkernel=true elif [[ "${1}" == "--redhat" ]]; then # this is needed for akmods shift local redhatkernel=true fi local kernel_uname_r=${1} local kernel_variant="${2:+-${2}}" # first part cat <= %{?epoch:%{epoch}:}%{version}-%{release} %{?KmodsMetaRequires:Requires: %{?KmodsMetaRequires}} EOF if [[ ${obsolete_name} ]]; then echo "Provides: kmod-${obsolete_name}${kernel_variant} = ${obsolete_version}" echo "Obsoletes: kmod-${obsolete_name}${kernel_variant} < ${obsolete_version}" fi cat < -- filter the results with grep --file " echo " --for-kernels -- created templates only for these kernels" echo " --kmodname -- name of the kmod (required)" echo " --devel -- make kmod-devel package" echo " --noakmod -- no akmod package" echo " --repo -- use buildsys-build--kerneldevpkgs" echo " --target -- target-arch (required)" echo " --buildroot -- Build root (place to look for build files)" } while [ "${1}" ] ; do case "${1}" in --filterfile) shift if [[ ! "${1}" ]] ; then error_out 2 "Please provide path to a filter-file together with --filterfile" >&2 elif [[ ! -e "${1}" ]]; then error_out 2 "Filterfile ${1} not found" >&2 fi filterfile="${1}" shift ;; --kmodname) shift if [[ ! "${1}" ]] ; then error_out 2 "Please provide the name of the kmod together with --kmodname" >&2 fi # strip pending -kmod kmodname="${1%%-kmod}" shift ;; --devel) shift devel="true" ;; --prefix) shift if [[ ! "${1}" ]] ; then error_out 2 "Please provide a prefix with --prefix" >&2 fi prefix="${1}" shift ;; --repo) shift if [[ ! "${1}" ]] ; then error_out 2 "Please provide the name of the repo together with --repo" >&2 fi repo=${1} shift ;; --for-kernels) shift if [[ ! "${1}" ]] ; then error_out 2 "Please provide the name of the kmod together with --kmodname" >&2 fi for_kernels="${1}" shift ;; --noakmod) shift noakmod="true" ;; --obsolete-name) shift if [[ ! "${1}" ]] ; then error_out 2 "Please provide the name of the kmod to obsolete together with --obsolete-name" >&2 fi obsolete_name="${1}" shift ;; --obsolete-version) shift if [[ ! "${1}" ]] ; then error_out 2 "Please provide the version of the kmod to obsolete together with --obsolete-version" >&2 fi obsolete_version="${1}" shift ;; --target) shift target="${1}" shift ;; --akmod) shift build_kernels="akmod" ;; --newest) shift build_kernels="newest" ;; --current) shift build_kernels="current" ;; --buildroot) shift buildroot="${1}" shift ;; --help) myprog_help exit 0 ;; --version) echo "${myprog} ${myver}" exit 0 ;; *) echo "Error: Unknown option '${1}'." >&2 usage >&2 exit 2 ;; esac done if [[ -e ./kmodtool-kernel-variants ]]; then kernels_known_variants="$(cat ./kmodtool-kernel-variants)" elif [[ -e /usr/share/kmodtool/kernel-variants ]] ; then kernels_known_variants="$(cat /usr/share/kmodtool/kernel-variants)" else kernels_known_variants="@(smp?(-debug)|PAE?(-debug)|debug|kdump|xen|kirkwood|highbank|imx|omap|tegra)" fi # general sanity checks if [[ ! "${target}" ]]; then error_out 2 "please pass target arch with --target" elif [[ ! "${kmodname}" ]]; then error_out 2 "please pass kmodname with --kmodname" elif [[ ! "${kernels_known_variants}" ]] ; then error_out 2 "could not determine known variants" elif ( [[ "${obsolete_name}" ]] && [[ ! "${obsolete_version}" ]] ) || ( [[ ! "${obsolete_name}" ]] && [[ "${obsolete_version}" ]] ) ; then error_out 2 "you need to provide both --obsolete-name and --obsolete-version" fi # go if [[ "${for_kernels}" ]]; then # this is easy: print_customrpmtemplate "${for_kernels}" elif [[ "${build_kernels}" == "akmod" ]]; then # do only a akmod package print_akmodtemplate print_akmodmeta else # seems we are on out own to decide for which kernels to build # we need more sanity checks in this case if [[ ! "${repo}" ]]; then error_out 2 "please provide repo name with --repo" elif ! $(which buildsys-build-${repo}-kerneldevpkgs &> /dev/null) ; then error_out 2 "buildsys-build-${repo}-kerneldevpkgs not found" fi # call buildsys-build-${repo}-kerneldevpkgs to get the list of kernels cmdoptions="--target ${target}" # filterfile to filter list of kernels? if [[ "${filterfile}" ]] ; then cmdoptions="${cmdoptions} --filterfile ${filterfile}" fi kernel_versions_to_build_for="$(buildsys-build-${repo}-kerneldevpkgs --${build_kernels} ${cmdoptions})" returncode=$? if (( ${returncode} != 0 )); then error_out 2 "buildsys-build-${repo}-kerneldevpkgs failed: $(buildsys-build-${repo}-kerneldevpkgs --${build_kernels} ${cmdoptions})" fi if [[ "${build_kernels}" == "current" ]] && [[ ! "${noakmod}" ]]; then print_akmodtemplate fi print_rpmtemplate fi zfs-0.8.3/scripts/PaxHeaders.151519/zfs-tests.sh0000644000000000000000000000007413612141512017374 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.160479893 zfs-0.8.3/scripts/zfs-tests.sh0000755016037001603700000003552313612141512017404 0ustar00hutter2hutter200000000000000#!/bin/bash # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License, Version 1.0 only # (the "License"). You may not use this file except in compliance # with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # BASE_DIR=$(dirname "$0") SCRIPT_COMMON=common.sh if [ -f "${BASE_DIR}/${SCRIPT_COMMON}" ]; then . "${BASE_DIR}/${SCRIPT_COMMON}" else echo "Missing helper script ${SCRIPT_COMMON}" && exit 1 fi PROG=zfs-tests.sh VERBOSE="no" QUIET="" CLEANUP="yes" CLEANUPALL="no" LOOPBACK="yes" STACK_TRACER="no" FILESIZE="4G" RUNFILE=${RUNFILE:-"linux.run"} FILEDIR=${FILEDIR:-/var/tmp} DISKS=${DISKS:-""} SINGLETEST=() SINGLETESTUSER="root" TAGS="" ITERATIONS=1 ZFS_DBGMSG="$STF_SUITE/callbacks/zfs_dbgmsg.ksh" ZFS_DMESG="$STF_SUITE/callbacks/zfs_dmesg.ksh" ZFS_MMP="$STF_SUITE/callbacks/zfs_mmp.ksh" TESTFAIL_CALLBACKS=${TESTFAIL_CALLBACKS:-"$ZFS_DBGMSG:$ZFS_DMESG:$ZFS_MMP"} LOSETUP=${LOSETUP:-/sbin/losetup} DMSETUP=${DMSETUP:-/sbin/dmsetup} # # Log an informational message when additional verbosity is enabled. # msg() { if [ "$VERBOSE" = "yes" ]; then echo "$@" fi } # # Log a failure message, cleanup, and return an error. # fail() { echo -e "$PROG: $1" >&2 cleanup exit 1 } # # Attempt to remove loopback devices and files which where created earlier # by this script to run the test framework. The '-k' option may be passed # to the script to suppress cleanup for debugging purposes. # cleanup() { if [ "$CLEANUP" = "no" ]; then return 0 fi if [ "$LOOPBACK" = "yes" ]; then for TEST_LOOPBACK in ${LOOPBACKS}; do LOOP_DEV=$(basename "$TEST_LOOPBACK") DM_DEV=$(sudo "${DMSETUP}" ls 2>/dev/null | \ grep "${LOOP_DEV}" | cut -f1) if [ -n "$DM_DEV" ]; then sudo "${DMSETUP}" remove "${DM_DEV}" || echo "Failed to remove: ${DM_DEV}" fi if [ -n "${TEST_LOOPBACK}" ]; then sudo "${LOSETUP}" -d "${TEST_LOOPBACK}" || echo "Failed to remove: ${TEST_LOOPBACK}" fi done fi for TEST_FILE in ${FILES}; do rm -f "${TEST_FILE}" &>/dev/null done if [ "$STF_PATH_REMOVE" = "yes" ] && [ -d "$STF_PATH" ]; then rm -Rf "$STF_PATH" fi } trap cleanup EXIT # # Attempt to remove all testpools (testpool.XXX), unopened dm devices, # loopback devices, and files. This is a useful way to cleanup a previous # test run failure which has left the system in an unknown state. This can # be dangerous and should only be used in a dedicated test environment. # cleanup_all() { local TEST_POOLS TEST_POOLS=$(sudo "$ZPOOL" list -H -o name | grep testpool) local TEST_LOOPBACKS TEST_LOOPBACKS=$(sudo "${LOSETUP}" -a|grep file-vdev|cut -f1 -d:) local TEST_FILES TEST_FILES=$(ls /var/tmp/file-vdev* 2>/dev/null) msg msg "--- Cleanup ---" msg "Removing pool(s): $(echo "${TEST_POOLS}" | tr '\n' ' ')" for TEST_POOL in $TEST_POOLS; do sudo "$ZPOOL" destroy "${TEST_POOL}" done msg "Removing dm(s): $(sudo "${DMSETUP}" ls | grep loop | tr '\n' ' ')" sudo "${DMSETUP}" remove_all msg "Removing loopback(s): $(echo "${TEST_LOOPBACKS}" | tr '\n' ' ')" for TEST_LOOPBACK in $TEST_LOOPBACKS; do sudo "${LOSETUP}" -d "${TEST_LOOPBACK}" done msg "Removing files(s): $(echo "${TEST_FILES}" | tr '\n' ' ')" for TEST_FILE in $TEST_FILES; do sudo rm -f "${TEST_FILE}" done } # # Takes a name as the only arguments and looks for the following variations # on that name. If one is found it is returned. # # $RUNFILE_DIR/ # $RUNFILE_DIR/.run # # .run # find_runfile() { local NAME=$1 local RESULT="" if [ -f "$RUNFILE_DIR/$NAME" ]; then RESULT="$RUNFILE_DIR/$NAME" elif [ -f "$RUNFILE_DIR/$NAME.run" ]; then RESULT="$RUNFILE_DIR/$NAME.run" elif [ -f "$NAME" ]; then RESULT="$NAME" elif [ -f "$NAME.run" ]; then RESULT="$NAME.run" fi echo "$RESULT" } # # Symlink file if it appears under any of the given paths. # create_links() { local dir_list="$1" local file_list="$2" [ -n "$STF_PATH" ] || fail "STF_PATH wasn't correctly set" for i in $file_list; do for j in $dir_list; do [ ! -e "$STF_PATH/$i" ] || continue if [ ! -d "$j/$i" ] && [ -e "$j/$i" ]; then ln -s "$j/$i" "$STF_PATH/$i" || \ fail "Couldn't link $i" break fi done [ ! -e "$STF_PATH/$i" ] && STF_MISSING_BIN="$STF_MISSING_BIN$i " done } # # Constrain the path to limit the available binaries to a known set. # When running in-tree a top level ./bin/ directory is created for # convenience, otherwise a temporary directory is used. # constrain_path() { . "$STF_SUITE/include/commands.cfg" if [ "$INTREE" = "yes" ]; then # Constrained path set to ./zfs/bin/ STF_PATH="$BIN_DIR" STF_PATH_REMOVE="no" STF_MISSING_BIN="" if [ ! -d "$STF_PATH" ]; then mkdir "$STF_PATH" chmod 755 "$STF_PATH" || fail "Couldn't chmod $STF_PATH" fi # Special case links for standard zfs utilities DIRS="$(find "$CMD_DIR" -type d \( ! -name .deps -a \ ! -name .libs \) -print | tr '\n' ' ')" create_links "$DIRS" "$ZFS_FILES" # Special case links for zfs test suite utilities DIRS="$(find "$STF_SUITE" -type d \( ! -name .deps -a \ ! -name .libs \) -print | tr '\n' ' ')" create_links "$DIRS" "$ZFSTEST_FILES" else # Constrained path set to /var/tmp/constrained_path.* SYSTEMDIR=${SYSTEMDIR:-/var/tmp/constrained_path.XXXX} STF_PATH=$(/bin/mktemp -d "$SYSTEMDIR") STF_PATH_REMOVE="yes" STF_MISSING_BIN="" chmod 755 "$STF_PATH" || fail "Couldn't chmod $STF_PATH" # Special case links for standard zfs utilities create_links "/bin /usr/bin /sbin /usr/sbin" "$ZFS_FILES" # Special case links for zfs test suite utilities create_links "$STF_SUITE/bin" "$ZFSTEST_FILES" fi # Standard system utilities create_links "/bin /usr/bin /sbin /usr/sbin" "$SYSTEM_FILES" # Exceptions ln -fs "$STF_PATH/awk" "$STF_PATH/nawk" ln -fs /sbin/fsck.ext4 "$STF_PATH/fsck" ln -fs /sbin/mkfs.ext4 "$STF_PATH/newfs" ln -fs "$STF_PATH/gzip" "$STF_PATH/compress" ln -fs "$STF_PATH/gunzip" "$STF_PATH/uncompress" ln -fs "$STF_PATH/exportfs" "$STF_PATH/share" ln -fs "$STF_PATH/exportfs" "$STF_PATH/unshare" if [ -L "$STF_PATH/arc_summary3" ]; then ln -fs "$STF_PATH/arc_summary3" "$STF_PATH/arc_summary" fi } # # Output a useful usage message. # usage() { cat << EOF USAGE: $0 [hvqxkfS] [-s SIZE] [-r RUNFILE] [-t PATH] [-u USER] DESCRIPTION: ZFS Test Suite launch script OPTIONS: -h Show this message -v Verbose zfs-tests.sh output -q Quiet test-runner output -x Remove all testpools, dm, lo, and files (unsafe) -k Disable cleanup after test failure -f Use files only, disables block device tests -S Enable stack tracer (negative performance impact) -c Only create and populate constrained path -n NFSFILE Use the nfsfile to determine the NFS configuration -I NUM Number of iterations -d DIR Use DIR for files and loopback devices -s SIZE Use vdevs of SIZE (default: 4G) -r RUNFILE Run tests in RUNFILE (default: linux.run) -t PATH Run single test at PATH relative to test suite -T TAGS Comma separated list of tags (default: 'functional') -u USER Run single test as USER (default: root) EXAMPLES: # Run the default (linux) suite of tests and output the configuration used. $0 -v # Run a smaller suite of tests designed to run more quickly. $0 -r linux-fast # Cleanup a previous run of the test suite prior to testing, run the # default (linux) suite of tests and perform no cleanup on exit. $0 -x EOF } while getopts 'hvqxkfScn:d:s:r:?t:T:u:I:' OPTION; do case $OPTION in h) usage exit 1 ;; v) # shellcheck disable=SC2034 VERBOSE="yes" ;; q) QUIET="yes" ;; x) CLEANUPALL="yes" ;; k) CLEANUP="no" ;; f) LOOPBACK="no" ;; S) STACK_TRACER="yes" ;; c) constrain_path exit ;; n) nfsfile=$OPTARG [[ -f $nfsfile ]] || fail "Cannot read file: $nfsfile" export NFS=1 . "$nfsfile" ;; d) FILEDIR="$OPTARG" ;; I) ITERATIONS="$OPTARG" if [ "$ITERATIONS" -le 0 ]; then fail "Iterations must be greater than 0." fi ;; s) FILESIZE="$OPTARG" ;; r) RUNFILE="$OPTARG" ;; t) if [ ${#SINGLETEST[@]} -ne 0 ]; then fail "-t can only be provided once." fi SINGLETEST+=("$OPTARG") ;; T) TAGS="$OPTARG" ;; u) SINGLETESTUSER="$OPTARG" ;; ?) usage exit ;; esac done shift $((OPTIND-1)) FILES=${FILES:-"$FILEDIR/file-vdev0 $FILEDIR/file-vdev1 $FILEDIR/file-vdev2"} LOOPBACKS=${LOOPBACKS:-""} if [ ${#SINGLETEST[@]} -ne 0 ]; then if [ -n "$TAGS" ]; then fail "-t and -T are mutually exclusive." fi RUNFILE_DIR="/var/tmp" RUNFILE="zfs-tests.$$.run" SINGLEQUIET="False" if [ -n "$QUIET" ]; then SINGLEQUIET="True" fi cat >$RUNFILE_DIR/$RUNFILE << EOF [DEFAULT] pre = quiet = $SINGLEQUIET pre_user = root user = $SINGLETESTUSER timeout = 600 post_user = root post = outputdir = /var/tmp/test_results EOF for t in "${SINGLETEST[@]}" do SINGLETESTDIR=$(dirname "$t") SINGLETESTFILE=$(basename "$t") SETUPSCRIPT= CLEANUPSCRIPT= if [ -f "$STF_SUITE/$SINGLETESTDIR/setup.ksh" ]; then SETUPSCRIPT="setup" fi if [ -f "$STF_SUITE/$SINGLETESTDIR/cleanup.ksh" ]; then CLEANUPSCRIPT="cleanup" fi cat >>$RUNFILE_DIR/$RUNFILE << EOF [$SINGLETESTDIR] tests = ['$SINGLETESTFILE'] pre = $SETUPSCRIPT post = $CLEANUPSCRIPT tags = ['functional'] EOF done fi # # Use default tag if none was specified # TAGS=${TAGS:='functional'} # # Attempt to locate the runfile describing the test workload. # if [ -n "$RUNFILE" ]; then SAVED_RUNFILE="$RUNFILE" RUNFILE=$(find_runfile "$RUNFILE") [ -z "$RUNFILE" ] && fail "Cannot find runfile: $SAVED_RUNFILE" fi if [ ! -r "$RUNFILE" ]; then fail "Cannot read runfile: $RUNFILE" fi # # This script should not be run as root. Instead the test user, which may # be a normal user account, needs to be configured such that it can # run commands via sudo passwordlessly. # if [ "$(id -u)" = "0" ]; then fail "This script must not be run as root." fi if [ "$(sudo whoami)" != "root" ]; then fail "Passwordless sudo access required." fi # # Constrain the available binaries to a known set. # constrain_path # # Check if ksh exists # [ -e "$STF_PATH/ksh" ] || fail "This test suite requires ksh." [ -e "$STF_SUITE/include/default.cfg" ] || fail \ "Missing $STF_SUITE/include/default.cfg file." # # Verify the ZFS module stack is loaded. # if [ "$STACK_TRACER" = "yes" ]; then sudo "${ZFS_SH}" -S &>/dev/null else sudo "${ZFS_SH}" &>/dev/null fi # # Attempt to cleanup all previous state for a new test run. # if [ "$CLEANUPALL" = "yes" ]; then cleanup_all fi # # By default preserve any existing pools # NOTE: Since 'zpool list' outputs a newline-delimited list convert $KEEP from # space-delimited to newline-delimited. # if [ -z "${KEEP}" ]; then KEEP="$(sudo "$ZPOOL" list -H -o name)" if [ -z "${KEEP}" ]; then KEEP="rpool" fi else KEEP="$(echo -e "${KEEP//[[:blank:]]/\n}")" fi # # NOTE: The following environment variables are undocumented # and should be used for testing purposes only: # # __ZFS_POOL_EXCLUDE - don't iterate over the pools it lists # __ZFS_POOL_RESTRICT - iterate only over the pools it lists # # See libzfs/libzfs_config.c for more information. # __ZFS_POOL_EXCLUDE="$(echo "$KEEP" | sed ':a;N;s/\n/ /g;ba')" . "$STF_SUITE/include/default.cfg" msg msg "--- Configuration ---" msg "Runfile: $RUNFILE" msg "STF_TOOLS: $STF_TOOLS" msg "STF_SUITE: $STF_SUITE" msg "STF_PATH: $STF_PATH" # # No DISKS have been provided so a basic file or loopback based devices # must be created for the test suite to use. # if [ -z "${DISKS}" ]; then # # Create sparse files for the test suite. These may be used # directory or have loopback devices layered on them. # for TEST_FILE in ${FILES}; do [ -f "$TEST_FILE" ] && fail "Failed file exists: ${TEST_FILE}" truncate -s "${FILESIZE}" "${TEST_FILE}" || fail "Failed creating: ${TEST_FILE} ($?)" if [[ "$DISKS" ]]; then DISKS="$DISKS $TEST_FILE" else DISKS="$TEST_FILE" fi done # # If requested setup loopback devices backed by the sparse files. # if [ "$LOOPBACK" = "yes" ]; then DISKS="" test -x "$LOSETUP" || fail "$LOSETUP utility must be installed" for TEST_FILE in ${FILES}; do TEST_LOOPBACK=$(sudo "${LOSETUP}" -f) sudo "${LOSETUP}" "${TEST_LOOPBACK}" "${TEST_FILE}" || fail "Failed: ${TEST_FILE} -> ${TEST_LOOPBACK}" LOOPBACKS="${LOOPBACKS}${TEST_LOOPBACK} " BASELOOPBACKS=$(basename "$TEST_LOOPBACK") if [[ "$DISKS" ]]; then DISKS="$DISKS $BASELOOPBACKS" else DISKS="$BASELOOPBACKS" fi done fi fi NUM_DISKS=$(echo "${DISKS}" | awk '{print NF}') [ "$NUM_DISKS" -lt 3 ] && fail "Not enough disks ($NUM_DISKS/3 minimum)" # # Disable SELinux until the ZFS Test Suite has been updated accordingly. # if [ -x "$STF_PATH/setenforce" ]; then sudo setenforce permissive &>/dev/null fi # # Enable internal ZFS debug log and clear it. # if [ -e /sys/module/zfs/parameters/zfs_dbgmsg_enable ]; then sudo /bin/sh -c "echo 1 >/sys/module/zfs/parameters/zfs_dbgmsg_enable" sudo /bin/sh -c "echo 0 >/proc/spl/kstat/zfs/dbgmsg" fi msg "FILEDIR: $FILEDIR" msg "FILES: $FILES" msg "LOOPBACKS: $LOOPBACKS" msg "DISKS: $DISKS" msg "NUM_DISKS: $NUM_DISKS" msg "FILESIZE: $FILESIZE" msg "ITERATIONS: $ITERATIONS" msg "TAGS: $TAGS" msg "STACK_TRACER: $STACK_TRACER" msg "Keep pool(s): $KEEP" msg "Missing util(s): $STF_MISSING_BIN" msg "" export STF_TOOLS export STF_SUITE export STF_PATH export DISKS export FILEDIR export KEEP export __ZFS_POOL_EXCLUDE export TESTFAIL_CALLBACKS export PATH=$STF_PATH RESULTS_FILE=$(mktemp -u -t zts-results.XXXX -p "$FILEDIR") REPORT_FILE=$(mktemp -u -t zts-report.XXXX -p "$FILEDIR") # # Run all the tests as specified. # msg "${TEST_RUNNER} ${QUIET:+-q}" \ "-c \"${RUNFILE}\"" \ "-T \"${TAGS}\"" \ "-i \"${STF_SUITE}\"" \ "-I \"${ITERATIONS}\"" ${TEST_RUNNER} ${QUIET:+-q} \ -c "${RUNFILE}" \ -T "${TAGS}" \ -i "${STF_SUITE}" \ -I "${ITERATIONS}" \ 2>&1 | tee "$RESULTS_FILE" # # Analyze the results. # set -o pipefail ${ZTS_REPORT} "$RESULTS_FILE" | tee "$REPORT_FILE" RESULT=$? set +o pipefail RESULTS_DIR=$(awk '/^Log directory/ { print $3 }' "$RESULTS_FILE") if [ -d "$RESULTS_DIR" ]; then cat "$RESULTS_FILE" "$REPORT_FILE" >"$RESULTS_DIR/results" fi rm -f "$RESULTS_FILE" "$REPORT_FILE" if [ ${#SINGLETEST[@]} -ne 0 ]; then rm -f "$RUNFILE" &>/dev/null fi exit ${RESULT} zfs-0.8.3/scripts/PaxHeaders.151519/dkms.mkconf0000644000000000000000000000007413607166133017245 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730471.178480469 zfs-0.8.3/scripts/dkms.mkconf0000755016037001603700000000541513607166133017252 0ustar00hutter2hutter200000000000000#!/bin/sh PROG=$0 pkgcfg=/etc/sysconfig/zfs while getopts "n:v:c:f:" opt; do case $opt in n) pkgname=$OPTARG ;; v) pkgver=$OPTARG ;; c) pkgcfg=$OPTARG ;; f) filename=$OPTARG ;; esac done if [ -z "${pkgname}" -o -z "${pkgver}" -o -z "${filename}" ]; then echo "Usage: $PROG -n -v -c -f " exit 1 fi cat >${filename} <$' foundline=$(git log -n 1 "$REF" | grep -E -m 1 "$regex") if [ -z "$foundline" ]; then echo "error: missing \"$1\"" return 1 fi return 0 } # check for a tagged line and check that the link is valid function check_tagged_line_with_url() { regex='^\s*'"$1"':\s\K([[:graph:]]+)$' foundline=$(git log -n 1 "$REF" | grep -Po "$regex") if [ -z "$foundline" ]; then echo "error: missing \"$1\"" return 1 fi OLDIFS=$IFS IFS=$'\n' for url in $(echo -e "$foundline"); do if ! test_url "$url"; then return 1 fi done IFS=$OLDIFS return 0 } # check commit message for a normal commit function new_change_commit() { error=0 # subject is not longer than 72 characters long_subject=$(git log -n 1 --pretty=%s "$REF" | grep -E -m 1 '.{73}') if [ -n "$long_subject" ]; then echo "error: commit subject over 72 characters" error=1 fi # need a signed off by if ! check_tagged_line "Signed-off-by" ; then error=1 fi # ensure that no lines in the body of the commit are over 72 characters if ! test_commit_bodylength ; then error=1 fi return $error } function is_openzfs_port() { # subject starts with OpenZFS means it's an openzfs port subject=$(git log -n 1 --pretty=%s "$REF" | grep -E -m 1 '^OpenZFS') if [ -n "$subject" ]; then return 0 fi return 1 } function openzfs_port_commit() { error=0 # subject starts with OpenZFS dddd subject=$(git log -n 1 --pretty=%s "$REF" | grep -E -m 1 '^OpenZFS [[:digit:]]+(, [[:digit:]]+)* - ') if [ -z "$subject" ]; then echo "error: OpenZFS patch ports must have a subject line that starts with \"OpenZFS dddd - \"" error=1 fi # need an authored by line if ! check_tagged_line "Authored by" ; then error=1 fi # need a reviewed by line if ! check_tagged_line "Reviewed by" ; then error=1 fi # need ported by line if ! check_tagged_line "Ported-by" ; then error=1 fi # need a url to openzfs commit and it should be valid if ! check_tagged_line_with_url "OpenZFS-commit" ; then error=1 fi # need a url to illumos issue and it should be valid if ! check_tagged_line_with_url "OpenZFS-issue" ; then error=1 fi return $error } function is_coverity_fix() { # subject starts with Fix coverity defects means it's a coverity fix subject=$(git log -n 1 --pretty=%s "$REF" | grep -E -m 1 '^Fix coverity defects') if [ -n "$subject" ]; then return 0 fi return 1 } function coverity_fix_commit() { error=0 # subject starts with Fix coverity defects: CID dddd, dddd... subject=$(git log -n 1 --pretty=%s "$REF" | grep -E -m 1 'Fix coverity defects: CID [[:digit:]]+(, [[:digit:]]+)*') if [ -z "$subject" ]; then echo "error: Coverity defect fixes must have a subject line that starts with \"Fix coverity defects: CID dddd\"" error=1 fi # need a signed off by if ! check_tagged_line "Signed-off-by" ; then error=1 fi # test each summary line for the proper format OLDIFS=$IFS IFS=$'\n' for line in $(git log -n 1 --pretty=%b "$REF" | grep -E '^CID'); do echo "$line" | grep -E '^CID [[:digit:]]+: ([[:graph:]]+|[[:space:]])+ \(([[:upper:]]|\_)+\)' > /dev/null # shellcheck disable=SC2181 if [[ $? -ne 0 ]]; then echo "error: commit message has an improperly formatted CID defect line" error=1 fi done IFS=$OLDIFS # ensure that no lines in the body of the commit are over 72 characters if ! test_commit_bodylength; then error=1 fi return $error } if [ -n "$1" ]; then REF="$1" fi # if openzfs port, test against that if is_openzfs_port; then if ! openzfs_port_commit ; then exit 1 else exit 0 fi fi # if coverity fix, test against that if is_coverity_fix; then if ! coverity_fix_commit; then exit 1 else exit 0 fi fi # have a normal commit if ! new_change_commit ; then exit 1 fi exit 0 zfs-0.8.3/scripts/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142777017154 xustar000000000000000030 mtime=1579730431.379202623 30 atime=1579730453.096899913 30 ctime=1579730471.169480181 zfs-0.8.3/scripts/Makefile.in0000664016037001603700000006356713612142777017201 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = scripts DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@ ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ $(top_srcdir)/scripts/zimport.sh \ $(top_srcdir)/scripts/zfs.sh \ $(top_srcdir)/scripts/zfs-tests.sh \ $(top_srcdir)/scripts/zloop.sh \ $(top_srcdir)/scripts/zfs-helpers.sh EXTRA_DIST = \ commitcheck.sh \ common.sh.in \ cstyle.pl \ dkms.mkconf \ dkms.postbuild \ enum-extract.pl \ kmodtool \ make_gitrev.sh \ man-dates.sh \ paxcheck.sh \ zfs2zol-patch.sed \ zol2zfs-patch.sed all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu scripts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) all-local installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-data-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-hook install-dist_pkgdataSCRIPTS install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS define EXTRA_ENVIRONMENT # Only required for in-tree use export INTREE="yes" export GDB="/usr/bin/libtool --mode=execute gdb" export LDMOD=/sbin/insmod export CMD_DIR=@abs_top_builddir@/cmd export UDEV_RULE_DIR=@abs_top_builddir@/udev/rules.d export ZEDLET_ETC_DIR=$$CMD_DIR/zed/zed.d export ZEDLET_LIBEXEC_DIR=$$CMD_DIR/zed/zed.d export ZPOOL_SCRIPT_DIR=$$CMD_DIR/zpool/zpool.d export ZPOOL_SCRIPTS_PATH=$$CMD_DIR/zpool/zpool.d export CONTRIB_DIR=@abs_top_builddir@/contrib export LIB_DIR=@abs_top_builddir@/lib export INSTALL_UDEV_DIR=@udevdir@ export INSTALL_UDEV_RULE_DIR=@udevruledir@ export INSTALL_MOUNT_HELPER_DIR=@mounthelperdir@ export INSTALL_SYSCONF_DIR=@sysconfdir@ export INSTALL_PYTHON_DIR=@pythonsitedir@ export KMOD_SPL=@abs_top_builddir@/module/spl/spl.ko export KMOD_ZAVL=@abs_top_builddir@/module/avl/zavl.ko export KMOD_ZNVPAIR=@abs_top_builddir@/module/nvpair/znvpair.ko export KMOD_ZUNICODE=@abs_top_builddir@/module/unicode/zunicode.ko export KMOD_ZCOMMON=@abs_top_builddir@/module/zcommon/zcommon.ko export KMOD_ZLUA=@abs_top_builddir@/module/lua/zlua.ko export KMOD_ICP=@abs_top_builddir@/module/icp/icp.ko export KMOD_ZFS=@abs_top_builddir@/module/zfs/zfs.ko endef export EXTRA_ENVIRONMENT all-local: -$(SED) -e '\|^export BIN_DIR=|s|$$|@abs_top_builddir@/bin|' \ -e '\|^export SBIN_DIR=|s|$$|@abs_top_builddir@/bin|' \ -e '\|^export ZTS_DIR=|s|$$|@abs_top_srcdir@/tests|' \ -e '\|^export SCRIPT_DIR=|s|$$|@abs_top_srcdir@/scripts|' \ $(abs_top_srcdir)/scripts/common.sh.in >common.sh -echo "$$EXTRA_ENVIRONMENT" >>common.sh clean-local: -$(RM) common.sh install-data-hook: -$(SED) -e '\|^export BIN_DIR=|s|$$|@bindir@|' \ -e '\|^export SBIN_DIR=|s|$$|@sbindir@|' \ -e '\|^export ZTS_DIR=|s|$$|@datadir@/@PACKAGE@|' \ -e '\|^export SCRIPT_DIR=|s|$$|@datadir@/@PACKAGE@|' \ $(abs_top_srcdir)/scripts/common.sh.in \ >$(DESTDIR)$(datadir)/@PACKAGE@/common.sh # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/PaxHeaders.151519/contrib0000644000000000000000000000013213612143070014766 xustar000000000000000030 mtime=1579730488.158025653 30 atime=1579730489.075055099 30 ctime=1579730488.158025653 zfs-0.8.3/contrib/0000775016037001603700000000000013612143070015047 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/PaxHeaders.151519/initramfs0000644000000000000000000000013213612143070016762 xustar000000000000000030 mtime=1579730488.490036315 30 atime=1579730489.075055099 30 ctime=1579730488.490036315 zfs-0.8.3/contrib/initramfs/0000775016037001603700000000000013612143070017043 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/initramfs/PaxHeaders.151519/conf.d0000644000000000000000000000013213612143070020131 xustar000000000000000030 mtime=1579730488.479035961 30 atime=1579730489.075055099 30 ctime=1579730488.479035961 zfs-0.8.3/contrib/initramfs/conf.d/0000775016037001603700000000000013612143070020212 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/initramfs/conf.d/PaxHeaders.151519/zfs0000644000000000000000000000007413607166132020750 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.479035961 zfs-0.8.3/contrib/initramfs/conf.d/zfs0000644016037001603700000000014313607166132020743 0ustar00hutter2hutter200000000000000for x in $(cat /proc/cmdline) do case $x in root=ZFS=*|root=zfs:*) BOOT=zfs ;; esac done zfs-0.8.3/contrib/initramfs/PaxHeaders.151519/scripts0000644000000000000000000000013213612143070020451 xustar000000000000000030 mtime=1579730488.609040135 30 atime=1579730489.075055099 30 ctime=1579730488.609040135 zfs-0.8.3/contrib/initramfs/scripts/0000775016037001603700000000000013612143070020532 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/initramfs/scripts/PaxHeaders.151519/local-top0000644000000000000000000000013213612143070022343 xustar000000000000000030 mtime=1579730488.659041741 30 atime=1579730489.075055099 30 ctime=1579730488.659041741 zfs-0.8.3/contrib/initramfs/scripts/local-top/0000775016037001603700000000000013612143070022424 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/initramfs/scripts/local-top/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141511024457 xustar000000000000000030 atime=1579730428.164099397 30 ctime=1579730488.655041613 zfs-0.8.3/contrib/initramfs/scripts/local-top/Makefile.am0000644016037001603700000000011513612141511024451 0ustar00hutter2hutter200000000000000localtopdir = /usr/share/initramfs-tools/scripts/local-top EXTRA_DIST = zfs zfs-0.8.3/contrib/initramfs/scripts/local-top/PaxHeaders.151519/zfs0000644000000000000000000000007413607166132023162 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.659041741 zfs-0.8.3/contrib/initramfs/scripts/local-top/zfs0000755016037001603700000000201513607166132023160 0ustar00hutter2hutter200000000000000#!/bin/sh PREREQ="mdadm mdrun multipath" prereqs() { echo "$PREREQ" } case $1 in # get pre-requisites prereqs) prereqs exit 0 ;; esac # # Helper functions # message() { if [ -x /bin/plymouth ] && plymouth --ping; then plymouth message --text="$@" else echo "$@" >&2 fi return 0 } udev_settle() { # Wait for udev to be ready, see https://launchpad.net/bugs/85640 if [ -x /sbin/udevadm ]; then /sbin/udevadm settle --timeout=30 elif [ -x /sbin/udevsettle ]; then /sbin/udevsettle --timeout=30 fi return 0 } activate_vg() { # Sanity checks if [ ! -x /sbin/lvm ]; then [ "$quiet" != "y" ] && message "lvm is not available" return 1 fi # Detect and activate available volume groups /sbin/lvm vgscan /sbin/lvm vgchange -a y --sysinit return $? } udev_settle activate_vg exit 0 zfs-0.8.3/contrib/initramfs/scripts/local-top/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774024477 xustar000000000000000030 mtime=1579730428.196100425 30 atime=1579730452.358876217 30 ctime=1579730488.657041677 zfs-0.8.3/contrib/initramfs/scripts/local-top/Makefile.in0000664016037001603700000005160413612142774024511 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/initramfs/scripts/local-top DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ localtopdir = /usr/share/initramfs-tools/scripts/local-top EXTRA_DIST = zfs all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/initramfs/scripts/local-top/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/initramfs/scripts/local-top/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/initramfs/scripts/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141511022565 xustar000000000000000030 atime=1579730428.108097599 30 ctime=1579730488.599039815 zfs-0.8.3/contrib/initramfs/scripts/Makefile.am0000644016037001603700000000055213612141511022564 0ustar00hutter2hutter200000000000000scriptsdir = /usr/share/initramfs-tools/scripts scripts_DATA = \ zfs SUBDIRS = local-top EXTRA_DIST = \ $(top_srcdir)/contrib/initramfs/scripts/zfs.in $(scripts_DATA):%:%.in -$(SED) -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ $< >'$@' clean-local:: -$(RM) $(scripts_SCRIPTS) distclean-local:: -$(RM) $(scripts_SCRIPTS) zfs-0.8.3/contrib/initramfs/scripts/PaxHeaders.151519/zfs.in0000644000000000000000000000007413612141522021665 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.604039975 zfs-0.8.3/contrib/initramfs/scripts/zfs.in0000644016037001603700000006566313612141522021702 0ustar00hutter2hutter200000000000000# ZFS boot stub for initramfs-tools. # # In the initramfs environment, the /init script sources this stub to # override the default functions in the /scripts/local script. # # Enable this by passing boot=zfs on the kernel command line. # # Source the common init script . /etc/zfs/zfs-functions # Paths to what we need - in the initrd, these paths are hardcoded, # so override the defines in zfs-functions. ZFS="@sbindir@/zfs" ZPOOL="@sbindir@/zpool" ZPOOL_CACHE="@sysconfdir@/zfs/zpool.cache" export ZFS ZPOOL ZPOOL_CACHE # Start interactive shell. # Use debian's panic() if defined, because it allows to prevent shell access # by setting panic in cmdline (e.g. panic=0 or panic=15). # See "4.5 Disable root prompt on the initramfs" of Securing Debian Manual: # https://www.debian.org/doc/manuals/securing-debian-howto/ch4.en.html shell() { if type panic > /dev/null 2>&1; then panic $@ else /bin/sh fi } # This runs any scripts that should run before we start importing # pools and mounting any filesystems. pre_mountroot() { if type run_scripts > /dev/null 2>&1 && \ [ -f "/scripts/local-top" -o -d "/scripts/local-top" ] then [ "$quiet" != "y" ] && \ zfs_log_begin_msg "Running /scripts/local-top" run_scripts /scripts/local-top [ "$quiet" != "y" ] && zfs_log_end_msg fi if type run_scripts > /dev/null 2>&1 && \ [ -f "/scripts/local-premount" -o -d "/scripts/local-premount" ] then [ "$quiet" != "y" ] && \ zfs_log_begin_msg "Running /scripts/local-premount" run_scripts /scripts/local-premount [ "$quiet" != "y" ] && zfs_log_end_msg fi } # If plymouth is available, hide the splash image. disable_plymouth() { if [ -x /bin/plymouth ] && /bin/plymouth --ping then /bin/plymouth hide-splash >/dev/null 2>&1 fi } # Get a ZFS filesystem property value. get_fs_value() { local fs="$1" local value=$2 "${ZFS}" get -H -ovalue $value "$fs" 2> /dev/null } # Find the 'bootfs' property on pool $1. # If the property does not contain '/', then ignore this # pool by exporting it again. find_rootfs() { local pool="$1" # If 'POOL_IMPORTED' isn't set, no pool imported and therefore # we won't be able to find a root fs. [ -z "${POOL_IMPORTED}" ] && return 1 # If it's already specified, just keep it mounted and exit # User (kernel command line) must be correct. [ -n "${ZFS_BOOTFS}" ] && return 0 # Not set, try to find it in the 'bootfs' property of the pool. # NOTE: zpool does not support 'get -H -ovalue bootfs'... ZFS_BOOTFS=$("${ZPOOL}" list -H -obootfs "$pool") # Make sure it's not '-' and that it starts with /. if [ "${ZFS_BOOTFS}" != "-" ] && \ $(get_fs_value "${ZFS_BOOTFS}" mountpoint | grep -q '^/$') then # Keep it mounted POOL_IMPORTED=1 return 0 fi # Not boot fs here, export it and later try again.. "${ZPOOL}" export "$pool" POOL_IMPORTED="" return 1 } # Support function to get a list of all pools, separated with ';' find_pools() { local CMD="$*" local pools pool pools=$($CMD 2> /dev/null | \ grep -E "pool:|^[a-zA-Z0-9]" | \ sed 's@.*: @@' | \ while read pool; do \ echo -n "$pool;" done) echo "${pools%%;}" # Return without the last ';'. } # Get a list of all available pools get_pools() { local available_pools npools if [ -n "${ZFS_POOL_IMPORT}" ]; then echo "$ZFS_POOL_IMPORT" return 0 fi # Get the base list of available pools. available_pools=$(find_pools "$ZPOOL" import) # Just in case - seen it happen (that a pool isn't visible/found # with a simple "zpool import" but only when using the "-d" # option or setting ZPOOL_IMPORT_PATH). if [ -d "/dev/disk/by-id" ] then npools=$(find_pools "$ZPOOL" import -d /dev/disk/by-id) if [ -n "$npools" ] then # Because we have found extra pool(s) here, which wasn't # found 'normally', we need to force USE_DISK_BY_ID to # make sure we're able to actually import it/them later. USE_DISK_BY_ID='yes' if [ -n "$available_pools" ] then # Filter out duplicates (pools found with the simple # "zpool import" but which is also found with the # "zpool import -d ..."). npools=$(echo "$npools" | sed "s,$available_pools,,") # Add the list to the existing list of # available pools available_pools="$available_pools;$npools" else available_pools="$npools" fi fi fi # Filter out any exceptions... if [ -n "$ZFS_POOL_EXCEPTIONS" ] then local found="" local apools="" local pool exception OLD_IFS="$IFS" ; IFS=";" for pool in $available_pools do for exception in $ZFS_POOL_EXCEPTIONS do [ "$pool" = "$exception" ] && continue 2 found="$pool" done if [ -n "$found" ] then if [ -n "$apools" ] then apools="$apools;$pool" else apools="$pool" fi fi done IFS="$OLD_IFS" available_pools="$apools" fi # Return list of available pools. echo "$available_pools" } # Import given pool $1 import_pool() { local pool="$1" local dirs dir # Verify that the pool isn't already imported # Make as sure as we can to not require '-f' to import. "${ZPOOL}" get name,guid -o value -H 2>/dev/null | grep -Fxq "$pool" && return 0 # For backwards compatibility, make sure that ZPOOL_IMPORT_PATH is set # to something we can use later with the real import(s). We want to # make sure we find all by* dirs, BUT by-vdev should be first (if it # exists). if [ -n "$USE_DISK_BY_ID" -a -z "$ZPOOL_IMPORT_PATH" ] then dirs="$(for dir in $(echo /dev/disk/by-*) do # Ignore by-vdev here - we want it first! echo "$dir" | grep -q /by-vdev && continue [ ! -d "$dir" ] && continue echo -n "$dir:" done | sed 's,:$,,g')" if [ -d "/dev/disk/by-vdev" ] then # Add by-vdev at the beginning. ZPOOL_IMPORT_PATH="/dev/disk/by-vdev:" fi # ... and /dev at the very end, just for good measure. ZPOOL_IMPORT_PATH="$ZPOOL_IMPORT_PATH$dirs:/dev" fi # Needs to be exported for "zpool" to catch it. [ -n "$ZPOOL_IMPORT_PATH" ] && export ZPOOL_IMPORT_PATH [ "$quiet" != "y" ] && zfs_log_begin_msg \ "Importing pool '${pool}' using defaults" ZFS_CMD="${ZPOOL} import -N ${ZPOOL_FORCE} ${ZPOOL_IMPORT_OPTS}" ZFS_STDERR="$($ZFS_CMD "$pool" 2>&1)" ZFS_ERROR="$?" if [ "${ZFS_ERROR}" != 0 ] then [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" if [ -f "${ZPOOL_CACHE}" ] then [ "$quiet" != "y" ] && zfs_log_begin_msg \ "Importing pool '${pool}' using cachefile." ZFS_CMD="${ZPOOL} import -c ${ZPOOL_CACHE} -N ${ZPOOL_FORCE} ${ZPOOL_IMPORT_OPTS}" ZFS_STDERR="$($ZFS_CMD "$pool" 2>&1)" ZFS_ERROR="$?" fi if [ "${ZFS_ERROR}" != 0 ] then [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" disable_plymouth echo "" echo "Command: ${ZFS_CMD} '$pool'" echo "Message: $ZFS_STDERR" echo "Error: $ZFS_ERROR" echo "" echo "Failed to import pool '$pool'." echo "Manually import the pool and exit." shell fi fi [ "$quiet" != "y" ] && zfs_log_end_msg POOL_IMPORTED=1 return 0 } # Load ZFS modules # Loading a module in a initrd require a slightly different approach, # with more logging etc. load_module_initrd() { if [ "$ZFS_INITRD_PRE_MOUNTROOT_SLEEP" > 0 ] then if [ "$quiet" != "y" ]; then zfs_log_begin_msg "Sleeping for" \ "$ZFS_INITRD_PRE_MOUNTROOT_SLEEP seconds..." fi sleep "$ZFS_INITRD_PRE_MOUNTROOT_SLEEP" [ "$quiet" != "y" ] && zfs_log_end_msg fi # Wait for all of the /dev/{hd,sd}[a-z] device nodes to appear. if type wait_for_udev > /dev/null 2>&1 ; then wait_for_udev 10 elif type wait_for_dev > /dev/null 2>&1 ; then wait_for_dev fi # zpool import refuse to import without a valid /proc/self/mounts [ ! -f /proc/self/mounts ] && mount proc /proc # Load the module load_module "zfs" || return 1 if [ "$ZFS_INITRD_POST_MODPROBE_SLEEP" > 0 ] then if [ "$quiet" != "y" ]; then zfs_log_begin_msg "Sleeping for" \ "$ZFS_INITRD_POST_MODPROBE_SLEEP seconds..." fi sleep "$ZFS_INITRD_POST_MODPROBE_SLEEP" [ "$quiet" != "y" ] && zfs_log_end_msg fi return 0 } # Mount a given filesystem mount_fs() { local fs="$1" local mountpoint # Check that the filesystem exists "${ZFS}" list -oname -tfilesystem -H "${fs}" > /dev/null 2>&1 [ "$?" -ne 0 ] && return 1 # Skip filesystems with canmount=off. The root fs should not have # canmount=off, but ignore it for backwards compatibility just in case. if [ "$fs" != "${ZFS_BOOTFS}" ] then canmount=$(get_fs_value "$fs" canmount) [ "$canmount" = "off" ] && return 0 fi # Need the _original_ datasets mountpoint! mountpoint=$(get_fs_value "$fs" mountpoint) if [ "$mountpoint" = "legacy" -o "$mountpoint" = "none" ]; then # Can't use the mountpoint property. Might be one of our # clones. Check the 'org.zol:mountpoint' property set in # clone_snap() if that's usable. mountpoint=$(get_fs_value "$fs" org.zol:mountpoint) if [ "$mountpoint" = "legacy" -o \ "$mountpoint" = "none" -o \ "$mountpoint" = "-" ] then if [ "$fs" != "${ZFS_BOOTFS}" ]; then # We don't have a proper mountpoint and this # isn't the root fs. return 0 else # Last hail-mary: Hope 'rootmnt' is set! mountpoint="" fi fi if [ "$mountpoint" = "legacy" ]; then ZFS_CMD="mount -t zfs" else # If it's not a legacy filesystem, it can only be a # native one... ZFS_CMD="mount -o zfsutil -t zfs" fi else ZFS_CMD="mount -o zfsutil -t zfs" fi # Possibly decrypt a filesystem using native encryption. decrypt_fs "$fs" [ "$quiet" != "y" ] && \ zfs_log_begin_msg "Mounting '${fs}' on '${rootmnt}/${mountpoint}'" [ -n "${ZFS_DEBUG}" ] && \ zfs_log_begin_msg "CMD: '$ZFS_CMD ${fs} ${rootmnt}/${mountpoint}'" ZFS_STDERR=$(${ZFS_CMD} "${fs}" "${rootmnt}/${mountpoint}" 2>&1) ZFS_ERROR=$? if [ "${ZFS_ERROR}" != 0 ] then [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" disable_plymouth echo "" echo "Command: ${ZFS_CMD} ${fs} ${rootmnt}/${mountpoint}" echo "Message: $ZFS_STDERR" echo "Error: $ZFS_ERROR" echo "" echo "Failed to mount ${fs} on ${rootmnt}/${mountpoint}." echo "Manually mount the filesystem and exit." shell else [ "$quiet" != "y" ] && zfs_log_end_msg fi return 0 } # Unlock a ZFS native encrypted filesystem. decrypt_fs() { local fs="$1" # If pool encryption is active and the zfs command understands '-o encryption' if [ "$(zpool list -H -o feature@encryption $(echo "${fs}" | awk -F\/ '{print $1}'))" = 'active' ]; then # Determine dataset that holds key for root dataset ENCRYPTIONROOT="$(get_fs_value "${fs}" encryptionroot)" KEYLOCATION="$(get_fs_value "${ENCRYPTIONROOT}" keylocation)" # If root dataset is encrypted... if ! [ "${ENCRYPTIONROOT}" = "-" ]; then KEYSTATUS="$(get_fs_value "${ENCRYPTIONROOT}" keystatus)" # Continue only if the key needs to be loaded [ "$KEYSTATUS" = "unavailable" ] || return 0 TRY_COUNT=3 # If key is stored in a file, do not prompt if ! [ "${KEYLOCATION}" = "prompt" ]; then $ZFS load-key "${ENCRYPTIONROOT}" # Prompt with plymouth, if active elif [ -e /bin/plymouth ] && /bin/plymouth --ping 2>/dev/null; then while [ $TRY_COUNT -gt 0 ]; do plymouth ask-for-password --prompt "Encrypted ZFS password for ${ENCRYPTIONROOT}" | \ $ZFS load-key "${ENCRYPTIONROOT}" && break TRY_COUNT=$((TRY_COUNT - 1)) done # Prompt with systemd, if active elif [ -e /run/systemd/system ]; then while [ $TRY_COUNT -gt 0 ]; do systemd-ask-password "Encrypted ZFS password for ${ENCRYPTIONROOT}" --no-tty | \ $ZFS load-key "${ENCRYPTIONROOT}" && break TRY_COUNT=$((TRY_COUNT - 1)) done # Prompt with ZFS tty, otherwise else # Setting "printk" temporarily to "7" will allow prompt even if kernel option "quiet" storeprintk="$(awk '{print $1}' /proc/sys/kernel/printk)" echo 7 > /proc/sys/kernel/printk $ZFS load-key "${ENCRYPTIONROOT}" echo "$storeprintk" > /proc/sys/kernel/printk fi fi fi return 0 } # Destroy a given filesystem. destroy_fs() { local fs="$1" [ "$quiet" != "y" ] && \ zfs_log_begin_msg "Destroying '$fs'" ZFS_CMD="${ZFS} destroy $fs" ZFS_STDERR="$(${ZFS_CMD} 2>&1)" ZFS_ERROR="$?" if [ "${ZFS_ERROR}" != 0 ] then [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" disable_plymouth echo "" echo "Command: $ZFS_CMD" echo "Message: $ZFS_STDERR" echo "Error: $ZFS_ERROR" echo "" echo "Failed to destroy '$fs'. Please make sure that '$fs' is not available." echo "Hint: Try: zfs destroy -Rfn $fs" echo "If this dryrun looks good, then remove the 'n' from '-Rfn' and try again." shell else [ "$quiet" != "y" ] && zfs_log_end_msg fi return 0 } # Clone snapshot $1 to destination filesystem $2 # Set 'canmount=noauto' and 'mountpoint=none' so that we get to keep # manual control over it's mounting (i.e., make sure it's not automatically # mounted with a 'zfs mount -a' in the init/systemd scripts). clone_snap() { local snap="$1" local destfs="$2" local mountpoint="$3" [ "$quiet" != "y" ] && zfs_log_begin_msg "Cloning '$snap' to '$destfs'" # Clone the snapshot into a dataset we can boot from # + We don't want this filesystem to be automatically mounted, we # want control over this here and nowhere else. # + We don't need any mountpoint set for the same reason. # We use the 'org.zol:mountpoint' property to remember the mountpoint. ZFS_CMD="${ZFS} clone -o canmount=noauto -o mountpoint=none" ZFS_CMD="${ZFS_CMD} -o org.zol:mountpoint=${mountpoint}" ZFS_CMD="${ZFS_CMD} $snap $destfs" ZFS_STDERR="$(${ZFS_CMD} 2>&1)" ZFS_ERROR="$?" if [ "${ZFS_ERROR}" != 0 ] then [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" disable_plymouth echo "" echo "Command: $ZFS_CMD" echo "Message: $ZFS_STDERR" echo "Error: $ZFS_ERROR" echo "" echo "Failed to clone snapshot." echo "Make sure that the any problems are corrected and then make sure" echo "that the dataset '$destfs' exists and is bootable." shell else [ "$quiet" != "y" ] && zfs_log_end_msg fi return 0 } # Rollback a given snapshot. rollback_snap() { local snap="$1" [ "$quiet" != "y" ] && zfs_log_begin_msg "Rollback $snap" ZFS_CMD="${ZFS} rollback -Rf $snap" ZFS_STDERR="$(${ZFS_CMD} 2>&1)" ZFS_ERROR="$?" if [ "${ZFS_ERROR}" != 0 ] then [ "$quiet" != "y" ] && zfs_log_failure_msg "${ZFS_ERROR}" disable_plymouth echo "" echo "Command: $ZFS_CMD" echo "Message: $ZFS_STDERR" echo "Error: $ZFS_ERROR" echo "" echo "Failed to rollback snapshot." shell else [ "$quiet" != "y" ] && zfs_log_end_msg fi return 0 } # Get a list of snapshots, give them as a numbered list # to the user to choose from. ask_user_snap() { local fs="$1" local i=1 local SNAP snapnr snap debug # We need to temporarily disable debugging. Set 'debug' so we # remember to enabled it again. if [ -n "${ZFS_DEBUG}" ]; then unset ZFS_DEBUG set +x debug=1 fi # Because we need the resulting snapshot, which is sent on # stdout to the caller, we use stderr for our questions. echo "What snapshot do you want to boot from?" > /dev/stderr while read snap; do echo " $i: ${snap}" > /dev/stderr eval `echo SNAP_$i=$snap` i=$((i + 1)) done < /dev/stderr read snapnr # Re-enable debugging. if [ -n "${debug}" ]; then ZFS_DEBUG=1 set -x fi echo "$(eval echo "$"SNAP_$snapnr)" } setup_snapshot_booting() { local snap="$1" local s destfs subfs mountpoint retval=0 filesystems fs # Make sure that the snapshot specified actually exist. if [ ! $(get_fs_value "${snap}" type) ] then # Snapshot does not exist (...@ ?) # ask the user for a snapshot to use. snap="$(ask_user_snap "${snap%%@*}")" fi # Separate the full snapshot ('$snap') into it's filesystem and # snapshot names. Would have been nice with a split() function.. rootfs="${snap%%@*}" snapname="${snap##*@}" ZFS_BOOTFS="${rootfs}_${snapname}" if ! grep -qiE '(^|[^\\](\\\\)* )(rollback)=(on|yes|1)( |$)' /proc/cmdline then # If the destination dataset for the clone # already exists, destroy it. Recursively if [ $(get_fs_value "${rootfs}_${snapname}" type) ]; then filesystems=$("${ZFS}" list -oname -tfilesystem -H \ -r -Sname "${ZFS_BOOTFS}") for fs in $filesystems; do destroy_fs "${fs}" done fi fi # Get all snapshots, recursively (might need to clone /usr, /var etc # as well). for s in $("${ZFS}" list -H -oname -tsnapshot -r "${rootfs}" | \ grep "${snapname}") do if grep -qiE '(^|[^\\](\\\\)* )(rollback)=(on|yes|1)( |$)' /proc/cmdline then # Rollback snapshot rollback_snap "$s" || retval=$((retval + 1)) else # Setup a destination filesystem name. # Ex: Called with 'rpool/ROOT/debian@snap2' # rpool/ROOT/debian@snap2 => rpool/ROOT/debian_snap2 # rpool/ROOT/debian/boot@snap2 => rpool/ROOT/debian_snap2/boot # rpool/ROOT/debian/usr@snap2 => rpool/ROOT/debian_snap2/usr # rpool/ROOT/debian/var@snap2 => rpool/ROOT/debian_snap2/var subfs="${s##$rootfs}" subfs="${subfs%%@$snapname}" destfs="${rootfs}_${snapname}" # base fs. [ -n "$subfs" ] && destfs="${destfs}$subfs" # + sub fs. # Get the mountpoint of the filesystem, to be used # with clone_snap(). If legacy or none, then use # the sub fs value. mountpoint=$(get_fs_value "${s%%@*}" mountpoint) if [ "$mountpoint" = "legacy" -o \ "$mountpoint" = "none" ] then if [ -n "${subfs}" ]; then mountpoint="${subfs}" else mountpoint="/" fi fi # Clone the snapshot into its own # filesystem clone_snap "$s" "${destfs}" "${mountpoint}" || \ retval=$((retval + 1)) fi done # If we haven't return yet, we have a problem... return "${retval}" } # ================================================================ # This is the main function. mountroot() { local snaporig snapsub destfs pool POOLS # ---------------------------------------------------------------- # I N I T I A L S E T U P # ------------ # Run the pre-mount scripts from /scripts/local-top. pre_mountroot # ------------ # Source the default setup variables. [ -r '/etc/default/zfs' ] && . /etc/default/zfs # ------------ # Support debug option if grep -qiE '(^|[^\\](\\\\)* )(zfs_debug|zfs\.debug|zfsdebug)=(on|yes|1)( |$)' /proc/cmdline then ZFS_DEBUG=1 mkdir /var/log #exec 2> /var/log/boot.debug set -x fi # ------------ # Load ZFS module etc. if ! load_module_initrd; then disable_plymouth echo "" echo "Failed to load ZFS modules." echo "Manually load the modules and exit." shell fi # ------------ # Look for the cache file (if any). [ ! -f ${ZPOOL_CACHE} ] && unset ZPOOL_CACHE # ------------ # Compatibility: 'ROOT' is for Debian GNU/Linux (etc), # 'root' is for Redhat/Fedora (etc), # 'REAL_ROOT' is for Gentoo if [ -z "$ROOT" ] then [ -n "$root" ] && ROOT=${root} [ -n "$REAL_ROOT" ] && ROOT=${REAL_ROOT} fi # ------------ # Where to mount the root fs in the initrd - set outside this script # Compatibility: 'rootmnt' is for Debian GNU/Linux (etc), # 'NEWROOT' is for RedHat/Fedora (etc), # 'NEW_ROOT' is for Gentoo if [ -z "$rootmnt" ] then [ -n "$NEWROOT" ] && rootmnt=${NEWROOT} [ -n "$NEW_ROOT" ] && rootmnt=${NEW_ROOT} fi # ------------ # No longer set in the defaults file, but it could have been set in # get_pools() in some circumstances. If it's something, but not 'yes', # it's no good to us. [ -n "$USE_DISK_BY_ID" -a "$USE_DISK_BY_ID" != 'yes' ] && \ unset USE_DISK_BY_ID # ---------------------------------------------------------------- # P A R S E C O M M A N D L I N E O P T I O N S # This part is the really ugly part - there's so many options and permutations # 'out there', and if we should make this the 'primary' source for ZFS initrd # scripting, we need/should support them all. # # Supports the following kernel command line argument combinations # (in this order - first match win): # # rpool= (tries to finds bootfs automatically) # bootfs=/ (uses this for rpool - first part) # rpool= bootfs=/ # -B zfs-bootfs=/ (uses this for rpool - first part) # rpool=rpool (default if none of the above is used) # root=/ (uses this for rpool - first part) # root=ZFS=/ (uses this for rpool - first part, without 'ZFS=') # root=zfs:AUTO (tries to detect both pool and rootfs # root=zfs:/ (uses this for rpool - first part, without 'zfs:') # # Option could also be # Option could also be # ------------ # Support force option # In addition, setting one of zfs_force, zfs.force or zfsforce to # 'yes', 'on' or '1' will make sure we force import the pool. # This should (almost) never be needed, but it's here for # completeness. ZPOOL_FORCE="" if grep -qiE '(^|[^\\](\\\\)* )(zfs_force|zfs\.force|zfsforce)=(on|yes|1)( |$)' /proc/cmdline then ZPOOL_FORCE="-f" fi # ------------ # Look for 'rpool' and 'bootfs' parameter [ -n "$rpool" ] && ZFS_RPOOL="${rpool#rpool=}" [ -n "$bootfs" ] && ZFS_BOOTFS="${bootfs#bootfs=}" # ------------ # If we have 'ROOT' (see above), but not 'ZFS_BOOTFS', then use # 'ROOT' [ -n "$ROOT" -a -z "${ZFS_BOOTFS}" ] && ZFS_BOOTFS="$ROOT" # ------------ # Check for the `-B zfs-bootfs=%s/%u,...` kind of parameter. # NOTE: Only use the pool name and dataset. The rest is not # supported by ZoL (whatever it's for). if [ -z "$ZFS_RPOOL" ] then # The ${zfs-bootfs} variable is set at the kernel command # line, usually by GRUB, but it cannot be referenced here # directly because bourne variable names cannot contain a # hyphen. # # Reassign the variable by dumping the environment and # stripping the zfs-bootfs= prefix. Let the shell handle # quoting through the eval command. eval ZFS_RPOOL=$(set | sed -n -e 's,^zfs-bootfs=,,p') fi # ------------ # No root fs or pool specified - do auto detect. if [ -z "$ZFS_RPOOL" -a -z "${ZFS_BOOTFS}" ] then # Do auto detect. Do this by 'cheating' - set 'root=zfs:AUTO' # which will be caught later ROOT=zfs:AUTO fi # ---------------------------------------------------------------- # F I N D A N D I M P O R T C O R R E C T P O O L # ------------ if [ "$ROOT" = "zfs:AUTO" ] then # Try to detect both pool and root fs. [ "$quiet" != "y" ] && \ zfs_log_begin_msg "Attempting to import additional pools." # Get a list of pools available for import if [ -n "$ZFS_RPOOL" ] then # We've specified a pool - check only that POOLS=$ZFS_RPOOL else POOLS=$(get_pools) fi OLD_IFS="$IFS" ; IFS=";" for pool in $POOLS do [ -z "$pool" ] && continue import_pool "$pool" find_rootfs "$pool" done IFS="$OLD_IFS" [ "$quiet" != "y" ] && zfs_log_end_msg $ZFS_ERROR else # No auto - use value from the command line option. # Strip 'zfs:' and 'ZFS='. ZFS_BOOTFS="${ROOT#*[:=]}" # Strip everything after the first slash. ZFS_RPOOL="${ZFS_BOOTFS%%/*}" fi # Import the pool (if not already done so in the AUTO check above). if [ -n "$ZFS_RPOOL" -a -z "${POOL_IMPORTED}" ] then [ "$quiet" != "y" ] && \ zfs_log_begin_msg "Importing ZFS root pool '$ZFS_RPOOL'" import_pool "${ZFS_RPOOL}" find_rootfs "${ZFS_RPOOL}" [ "$quiet" != "y" ] && zfs_log_end_msg fi if [ -z "${POOL_IMPORTED}" ] then # No pool imported, this is serious! disable_plymouth echo "" echo "Command: $ZFS_CMD" echo "Message: $ZFS_STDERR" echo "Error: $ZFS_ERROR" echo "" echo "No pool imported. Manually import the root pool" echo "at the command prompt and then exit." echo "Hint: Try: zpool import -R ${rootmnt} -N ${ZFS_RPOOL}" shell fi # In case the pool was specified as guid, resolve guid to name pool="$("${ZPOOL}" get name,guid -o name,value -H | \ awk -v pool="${ZFS_RPOOL}" '$2 == pool { print $1 }')" if [ -n "$pool" ]; then # If $ZFS_BOOTFS contains guid, replace the guid portion with $pool ZFS_BOOTFS=$(echo "$ZFS_BOOTFS" | \ sed -e "s/$("${ZPOOL}" get guid -o value "$pool" -H)/$pool/g") ZFS_RPOOL="${pool}" fi # Set the no-op scheduler on the disks containing the vdevs of # the root pool. For single-queue devices, this scheduler is # "noop", for multi-queue devices, it is "none". # ZFS already does this for wholedisk vdevs (for all pools), so this # is only important for partitions. "${ZPOOL}" status -L "${ZFS_RPOOL}" 2> /dev/null | awk '/^\t / && !/(mirror|raidz)/ { dev=$1; sub(/[0-9]+$/, "", dev); print dev }' | while read -r i do SCHEDULER=/sys/block/$i/queue/scheduler if [ -e "${SCHEDULER}" ] then # Query to see what schedulers are available case "$(cat "${SCHEDULER}")" in *noop*) echo noop > "${SCHEDULER}" ;; *none*) echo none > "${SCHEDULER}" ;; esac fi done # ---------------------------------------------------------------- # P R E P A R E R O O T F I L E S Y S T E M if [ -n "${ZFS_BOOTFS}" ] then # Booting from a snapshot? # Will overwrite the ZFS_BOOTFS variable like so: # rpool/ROOT/debian@snap2 => rpool/ROOT/debian_snap2 echo "${ZFS_BOOTFS}" | grep -q '@' && \ setup_snapshot_booting "${ZFS_BOOTFS}" fi if [ -z "${ZFS_BOOTFS}" ] then # Still nothing! Let the user sort this out. disable_plymouth echo "" echo "Error: Unknown root filesystem - no 'bootfs' pool property and" echo " not specified on the kernel command line." echo "" echo "Manually mount the root filesystem on $rootmnt and then exit." echo "Hint: Try: mount -o zfsutil -t zfs ${ZFS_RPOOL-rpool}/ROOT/system $rootmnt" shell fi # ---------------------------------------------------------------- # M O U N T F I L E S Y S T E M S # * Ideally, the root filesystem would be mounted like this: # # zpool import -R "$rootmnt" -N "$ZFS_RPOOL" # zfs mount -o mountpoint=/ "${ZFS_BOOTFS}" # # but the MOUNTPOINT prefix is preserved on descendent filesystem # after the pivot into the regular root, which later breaks things # like `zfs mount -a` and the /proc/self/mounts refresh. # # * Mount additional filesystems required # Such as /usr, /var, /usr/local etc. # NOTE: Mounted in the order specified in the # ZFS_INITRD_ADDITIONAL_DATASETS variable so take care! # Go through the complete list (recursively) of all filesystems below # the real root dataset filesystems=$("${ZFS}" list -oname -tfilesystem -H -r "${ZFS_BOOTFS}") for fs in $filesystems $ZFS_INITRD_ADDITIONAL_DATASETS do mount_fs "$fs" done # ------------ # Debugging information if [ -n "${ZFS_DEBUG}" ] then #exec 2>&1- echo "DEBUG: imported pools:" "${ZPOOL}" list -H echo echo "DEBUG: mounted ZFS filesystems:" mount | grep zfs echo echo "=> waiting for ENTER before continuing because of 'zfsdebug=1'. " echo -n " 'c' for shell, 'r' for reboot, 'ENTER' to continue. " read b [ "$b" = "c" ] && /bin/sh [ "$b" = "r" ] && reboot -f set +x fi # ------------ # Run local bottom script if type run_scripts > /dev/null 2>&1 && \ [ -f "/scripts/local-bottom" -o -d "/scripts/local-bottom" ] then [ "$quiet" != "y" ] && \ zfs_log_begin_msg "Running /scripts/local-bottom" run_scripts /scripts/local-bottom [ "$quiet" != "y" ] && zfs_log_end_msg fi } zfs-0.8.3/contrib/initramfs/scripts/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774022605 xustar000000000000000030 mtime=1579730428.147098853 30 atime=1579730452.327875221 30 ctime=1579730488.601039879 zfs-0.8.3/contrib/initramfs/scripts/Makefile.in0000664016037001603700000007434313612142774022624 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/initramfs/scripts DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(scriptsdir)" DATA = $(scripts_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ scriptsdir = /usr/share/initramfs-tools/scripts scripts_DATA = \ zfs SUBDIRS = local-top EXTRA_DIST = \ $(top_srcdir)/contrib/initramfs/scripts/zfs.in all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/initramfs/scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/initramfs/scripts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-scriptsDATA: $(scripts_DATA) @$(NORMAL_INSTALL) test -z "$(scriptsdir)" || $(MKDIR_P) "$(DESTDIR)$(scriptsdir)" @list='$(scripts_DATA)'; test -n "$(scriptsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(scriptsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(scriptsdir)" || exit $$?; \ done uninstall-scriptsDATA: @$(NORMAL_UNINSTALL) @list='$(scripts_DATA)'; test -n "$(scriptsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(scriptsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(scriptsdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(scriptsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-scriptsDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-scriptsDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ clean-local ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-local distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-scriptsDATA \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-scriptsDATA $(scripts_DATA):%:%.in -$(SED) -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ $< >'$@' clean-local:: -$(RM) $(scripts_SCRIPTS) distclean-local:: -$(RM) $(scripts_SCRIPTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/initramfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141511021076 xustar000000000000000030 atime=1579730428.001094165 30 ctime=1579730488.470035673 zfs-0.8.3/contrib/initramfs/Makefile.am0000644016037001603700000000222413612141511021073 0ustar00hutter2hutter200000000000000initrddir = /usr/share/initramfs-tools initrd_SCRIPTS = \ conf.d/zfs conf-hooks.d/zfs hooks/zfs scripts/zfs scripts/local-top/zfs SUBDIRS = hooks scripts EXTRA_DIST = \ $(top_srcdir)/etc/init.d/zfs \ $(top_srcdir)/etc/init.d/zfs-functions \ $(top_srcdir)/contrib/initramfs/conf.d/zfs \ $(top_srcdir)/contrib/initramfs/conf-hooks.d/zfs \ $(top_srcdir)/contrib/initramfs/README.initramfs.markdown $(top_srcdir)/etc/init.d/zfs $(top_srcdir)/etc/init.d/zfs-functions: $(MAKE) -C $(top_srcdir)/etc/init.d zfs zfs-functions install-initrdSCRIPTS: $(EXTRA_DIST) for d in conf.d conf-hooks.d scripts/local-top; do \ $(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \ cp $(top_srcdir)/contrib/initramfs/$$d/zfs \ $(DESTDIR)$(initrddir)/$$d/; \ done for d in hooks scripts; do \ $(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \ cp $(top_builddir)/contrib/initramfs/$$d/zfs \ $(DESTDIR)$(initrddir)/$$d/; \ done $(MKDIR_P) $(DESTDIR)$(DEFAULT_INITCONF_DIR); \ cp $(top_builddir)/etc/init.d/zfs \ $(DESTDIR)$(DEFAULT_INITCONF_DIR)/; \ $(MKDIR_P) $(DESTDIR)$(sysconfdir)/zfs; \ cp $(top_builddir)/etc/init.d/zfs-functions \ $(DESTDIR)$(sysconfdir)/zfs/ zfs-0.8.3/contrib/initramfs/PaxHeaders.151519/hooks0000644000000000000000000000013213612143070020105 xustar000000000000000030 mtime=1579730488.548038177 30 atime=1579730489.075055099 30 ctime=1579730488.548038177 zfs-0.8.3/contrib/initramfs/hooks/0000775016037001603700000000000013612143070020166 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/initramfs/hooks/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141511022221 xustar000000000000000030 atime=1579730428.056095931 30 ctime=1579730488.544038049 zfs-0.8.3/contrib/initramfs/hooks/Makefile.am0000644016037001603700000000071413612141511022220 0ustar00hutter2hutter200000000000000hooksdir = /usr/share/initramfs-tools/hooks hooks_SCRIPTS = \ zfs EXTRA_DIST = \ $(top_srcdir)/contrib/initramfs/hooks/zfs.in $(hooks_SCRIPTS):%:%.in -$(SED) -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ -e 's,@udevdir\@,$(udevdir),g' \ -e 's,@udevruledir\@,$(udevruledir),g' \ -e 's,@mounthelperdir\@,$(mounthelperdir),g' \ $< >'$@' clean-local:: -$(RM) $(hooks_SCRIPTS) distclean-local:: -$(RM) $(hooks_SCRIPTS) zfs-0.8.3/contrib/initramfs/hooks/PaxHeaders.151519/zfs.in0000644000000000000000000000007413612141511021317 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.548038177 zfs-0.8.3/contrib/initramfs/hooks/zfs.in0000755016037001603700000000550613612141511021325 0ustar00hutter2hutter200000000000000#!/bin/sh # # Add ZoL filesystem capabilities to an initrd, usually for a native ZFS root. # # This hook installs udev rules for ZoL. PREREQ="udev" # These prerequisites are provided by the zfsutils package. The zdb utility is # not strictly required, but it can be useful at the initramfs recovery prompt. COPY_EXEC_LIST="@sbindir@/zdb @sbindir@/zpool @sbindir@/zfs" COPY_EXEC_LIST="$COPY_EXEC_LIST @mounthelperdir@/mount.zfs @udevdir@/vdev_id" COPY_EXEC_LIST="$COPY_EXEC_LIST @udevdir@/zvol_id" COPY_FILE_LIST="/etc/hostid @sysconfdir@/zfs/zpool.cache" COPY_FILE_LIST="$COPY_FILE_LIST @DEFAULT_INITCONF_DIR@/zfs" COPY_FILE_LIST="$COPY_FILE_LIST @sysconfdir@/zfs/zfs-functions" COPY_FILE_LIST="$COPY_FILE_LIST @sysconfdir@/zfs/vdev_id.conf" COPY_FILE_LIST="$COPY_FILE_LIST @udevruledir@/60-zvol.rules" COPY_FILE_LIST="$COPY_FILE_LIST @udevruledir@/69-vdev.rules" # These prerequisites are provided by the base system. COPY_EXEC_LIST="$COPY_EXEC_LIST /usr/bin/dirname /bin/hostname /sbin/blkid" COPY_EXEC_LIST="$COPY_EXEC_LIST /usr/bin/env" # Explicitly specify all kernel modules because automatic dependency resolution # is unreliable on many systems. BASE_MODULES="zlib_deflate spl zavl zcommon znvpair zunicode zlua zfs icp" CRPT_MODULES="sun-ccm sun-gcm sun-ctr" MANUAL_ADD_MODULES_LIST="$BASE_MODULES" # Generic result code. RC=0 case $1 in prereqs) echo "$PREREQ" exit 0 ;; esac for ii in $COPY_EXEC_LIST do if [ ! -x "$ii" ] then echo "Error: $ii is not executable." RC=2 fi done if [ "$RC" -ne 0 ] then exit "$RC" fi . /usr/share/initramfs-tools/hook-functions mkdir -p "$DESTDIR/etc/" # ZDB uses pthreads for some functions, but the library dependency is not # automatically detected. The `find` utility and extended `cp` options are # used here because libgcc_s.so could be in a subdirectory of /lib for # multi-arch installations. cp --target-directory="$DESTDIR" --parents $(find /lib/ -type f -name libgcc_s.so.1) for ii in $COPY_EXEC_LIST do copy_exec "$ii" done for ii in $COPY_FILE_LIST do dir=$(dirname "$ii") [ -d "$dir" ] && mkdir -p "$DESTDIR/$dir" [ -f "$ii" ] && cp -p "$ii" "$DESTDIR/$ii" done for ii in $MANUAL_ADD_MODULES_LIST do manual_add_modules "$ii" done if [ -f "/etc/hostname" ] then cp -p "/etc/hostname" "$DESTDIR/etc/" else hostname >"$DESTDIR/etc/hostname" fi for ii in zfs zfs.conf spl spl.conf do if [ -f "/etc/modprobe.d/$ii" ]; then if [ ! -d "$DESTDIR/etc/modprobe.d" ]; then mkdir -p $DESTDIR/etc/modprobe.d fi cp -p "/etc/modprobe.d/$ii" $DESTDIR/etc/modprobe.d/ fi done # With pull request #1476 (not yet merged) comes a verbose warning # if /usr/bin/net doesn't exist or isn't executable. Just create # a dummy... [ ! -d "$DESTDIR/usr/bin" ] && mkdir -p "$DESTDIR/usr/bin" if [ ! -x "$DESTDIR/usr/bin/net" ]; then touch "$DESTDIR/usr/bin/net" chmod +x "$DESTDIR/usr/bin/net" fi exit 0 zfs-0.8.3/contrib/initramfs/hooks/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774022241 xustar000000000000000030 mtime=1579730428.092097087 30 atime=1579730452.296874225 30 ctime=1579730488.546038113 zfs-0.8.3/contrib/initramfs/hooks/Makefile.in0000664016037001603700000005761413612142774022262 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/initramfs/hooks DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(hooksdir)" SCRIPTS = $(hooks_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ hooksdir = /usr/share/initramfs-tools/hooks hooks_SCRIPTS = \ zfs EXTRA_DIST = \ $(top_srcdir)/contrib/initramfs/hooks/zfs.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/initramfs/hooks/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/initramfs/hooks/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-hooksSCRIPTS: $(hooks_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(hooksdir)" || $(MKDIR_P) "$(DESTDIR)$(hooksdir)" @list='$(hooks_SCRIPTS)'; test -n "$(hooksdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(hooksdir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(hooksdir)$$dir" || exit $$?; \ } \ ; done uninstall-hooksSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(hooks_SCRIPTS)'; test -n "$(hooksdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(hooksdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(hooksdir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(hooksdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-hooksSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-hooksSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ clean-local distclean distclean-generic distclean-libtool \ distclean-local distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am \ install-hooksSCRIPTS install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-hooksSCRIPTS $(hooks_SCRIPTS):%:%.in -$(SED) -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ -e 's,@udevdir\@,$(udevdir),g' \ -e 's,@udevruledir\@,$(udevruledir),g' \ -e 's,@mounthelperdir\@,$(mounthelperdir),g' \ $< >'$@' clean-local:: -$(RM) $(hooks_SCRIPTS) distclean-local:: -$(RM) $(hooks_SCRIPTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/initramfs/PaxHeaders.151519/README.initramfs.markdown0000644000000000000000000000007413607166132023550 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.483036089 zfs-0.8.3/contrib/initramfs/README.initramfs.markdown0000644016037001603700000001073413607166132023552 0ustar00hutter2hutter200000000000000DESCRIPTION These scripts are intended to be used with initramfs-tools, which is a similar software product to "dracut" (which is used in RedHat based distributions), and is mainly used by Debian GNU/Linux and derivatives to create an initramfs so that the system can be booted off a ZFS filesystem. If you have no need or interest in this, then it can safely be ignored. These script were written with the primary intention of being portable and usable on as many systems as possible. This is, in practice, usually not possible. But the intention is there. And it is a good one. They have been tested successfully on: * Debian GNU/Linux Wheezy * Debian GNU/Linux Jessie It uses some functionality common with the SYSV init scripts, primarily the "/etc/zfs/zfs-functions" script. FUNCTIONALITY * Supports booting of a ZFS snapshot. Do this by cloning the snapshot into a dataset. If this, the resulting dataset, already exists, destroy it. Then mount it as the root filesystem. * If snapshot does not exist, use base dataset (the part before '@') as boot filesystem instead. * Clone with 'mountpoint=none' and 'canmount=noauto' - we mount manually and explicitly. * Allow rollback of snapshots instead of clone it and boot from the clone. * If no snapshot is specified on the 'root=' kernel command line, but there is an '@', then get a list of snapshots below that filesystem and ask the user which to use. * Support all currently used kernel command line arguments * Core options: All the different distributions have their own standard on what to specify on the kernel command line to boot of a ZFS filesystem. Supports the following kernel command line argument combinations (in this order - first match win): * rpool= (tries to finds bootfs automatically) * bootfs=/ (uses this for rpool - first part) * rpool= bootfs=/ * -B zfs-bootfs=/ (uses this for rpool - first part) * rpool=rpool (default if none of the above is used) * root=/ (uses this for rpool - first part) * root=ZFS=/ (uses this for rpool - first part, without 'ZFS=') * root=zfs:AUTO (tries to detect both pool and rootfs * root=zfs:/ (uses this for rpool - first part, without 'zfs:') Option could also be * Extra (control) options: * zfsdebug=(on,yes,1) Show extra debugging information * zfsforce=(on,yes,1) Force import the pool * rollback=(on,yes,1) Rollback (instead of clone) the snapshot * 'Smarter' way to import pools. Don't just try cache file or /dev. * Try to use /dev/disk/by-vdev (if /etc/zfs/vdev_id.conf exists), * Try /dev/mapper (to be able to use LUKS backed pools as well as multi-path devices). * /dev/disk/by-id and any other /dev/disk/by-* directory that may exist. * Use /dev as a last ditch attempt. * Fallback to using the cache file if that exist if nothing else worked. * Only try to import pool if it haven't already been imported * This will negate the need to force import a pool that have not been exported cleanly. * Support exclusion of pools to import by setting ZFS_POOL_EXCEPTIONS in /etc/default/zfs. Controlling in which order devices is searched for is controlled by ZPOOL_IMPORT_PATH variable set in /etc/defaults/zfs. * Support additional configuration variable ZFS_INITRD_ADDITIONAL_DATASETS to mount additional filesystems not located under your root dataset. For example, if the root fs is specified as 'rpool/ROOT/rootfs', it will automatically and without specific configuration mount any filesystems below this on the mount point specified in the 'mountpoint' property. Such as 'rpool/root/rootfs/var', 'rpool/root/rootfs/usr' etc) However, if one prefer to have separate filesystems, not located below the root fs (such as 'rpool/var', 'rpool/ROOT/opt' etc), special configuration needs to be done. This is what the variable, set in /etc/defaults/zfs file, needs to be configured. The 'mountpoint' property needs to be correct for this to work though. * Allows mounting a rootfs with mountpoint=legacy set. * Include /etc/modprobe.d/{zfs,spl}.conf in the initrd if it/they exist. * Include the udev rule to use by-vdev for pool imports. * Include the /etc/default/zfs file to the initrd. zfs-0.8.3/contrib/initramfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774021116 xustar000000000000000030 mtime=1579730428.040095417 30 atime=1579730452.267873295 30 ctime=1579730488.472035737 zfs-0.8.3/contrib/initramfs/Makefile.in0000664016037001603700000007500613612142774021132 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/initramfs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(initrddir)" SCRIPTS = $(initrd_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ initrddir = /usr/share/initramfs-tools initrd_SCRIPTS = \ conf.d/zfs conf-hooks.d/zfs hooks/zfs scripts/zfs scripts/local-top/zfs SUBDIRS = hooks scripts EXTRA_DIST = \ $(top_srcdir)/etc/init.d/zfs \ $(top_srcdir)/etc/init.d/zfs-functions \ $(top_srcdir)/contrib/initramfs/conf.d/zfs \ $(top_srcdir)/contrib/initramfs/conf-hooks.d/zfs \ $(top_srcdir)/contrib/initramfs/README.initramfs.markdown all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/initramfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/initramfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): uninstall-initrdSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(initrd_SCRIPTS)'; test -n "$(initrddir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(initrddir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(initrddir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(initrddir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-initrdSCRIPTS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-initrdSCRIPTS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-initrdSCRIPTS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-initrdSCRIPTS $(top_srcdir)/etc/init.d/zfs $(top_srcdir)/etc/init.d/zfs-functions: $(MAKE) -C $(top_srcdir)/etc/init.d zfs zfs-functions install-initrdSCRIPTS: $(EXTRA_DIST) for d in conf.d conf-hooks.d scripts/local-top; do \ $(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \ cp $(top_srcdir)/contrib/initramfs/$$d/zfs \ $(DESTDIR)$(initrddir)/$$d/; \ done for d in hooks scripts; do \ $(MKDIR_P) $(DESTDIR)$(initrddir)/$$d; \ cp $(top_builddir)/contrib/initramfs/$$d/zfs \ $(DESTDIR)$(initrddir)/$$d/; \ done $(MKDIR_P) $(DESTDIR)$(DEFAULT_INITCONF_DIR); \ cp $(top_builddir)/etc/init.d/zfs \ $(DESTDIR)$(DEFAULT_INITCONF_DIR)/; \ $(MKDIR_P) $(DESTDIR)$(sysconfdir)/zfs; \ cp $(top_builddir)/etc/init.d/zfs-functions \ $(DESTDIR)$(sysconfdir)/zfs/ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/initramfs/PaxHeaders.151519/conf-hooks.d0000644000000000000000000000013213612143070021252 xustar000000000000000030 mtime=1579730488.481036025 30 atime=1579730489.075055099 30 ctime=1579730488.481036025 zfs-0.8.3/contrib/initramfs/conf-hooks.d/0000775016037001603700000000000013612143070021333 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/initramfs/conf-hooks.d/PaxHeaders.151519/zfs0000644000000000000000000000007413612141521022060 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.481036025 zfs-0.8.3/contrib/initramfs/conf-hooks.d/zfs0000644016037001603700000000036513612141521022061 0ustar00hutter2hutter200000000000000# Force the inclusion of Busybox in the initramfs. BUSYBOX=y # Setup the keyboard mapping so passphrases can be entered correctly. KEYMAP=y # Require the plymouth script to guarantee working video for the passphrase # prompting. FRAMEBUFFER=y zfs-0.8.3/contrib/PaxHeaders.151519/pyzfs0000644000000000000000000000013213612143070016141 xustar000000000000000030 mtime=1579730488.728043957 30 atime=1579730489.075055099 30 ctime=1579730488.728043957 zfs-0.8.3/contrib/pyzfs/0000775016037001603700000000000013612143070016222 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/pyzfs/PaxHeaders.151519/docs0000644000000000000000000000007413607166132017106 xustar000000000000000030 atime=1579730489.075055099 30 ctime=1579730488.728043957 zfs-0.8.3/contrib/pyzfs/docs/0000755016037001603700000000000013607166132017160 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/pyzfs/docs/PaxHeaders.151519/source0000644000000000000000000000007413612141512020375 xustar000000000000000030 atime=1579730489.075055099 30 ctime=1579730488.728043957 zfs-0.8.3/contrib/pyzfs/docs/source/0000755016037001603700000000000013612141512020447 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/pyzfs/docs/source/PaxHeaders.151519/conf.py0000644000000000000000000000007413612141512021751 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.728043957 zfs-0.8.3/contrib/pyzfs/docs/source/conf.py0000644016037001603700000002263013612141512021751 0ustar00hutter2hutter200000000000000# -*- coding: utf-8 -*- # flake8: noqa # # pyzfs documentation build configuration file, created by # sphinx-quickstart on Mon Apr 6 23:48:40 2015. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys import os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.insert(0, os.path.abspath('../..')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ 'sphinx.ext.autodoc', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # source_suffix = ['.rst', '.md'] source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'pyzfs' copyright = u'2015, ClusterHQ' author = u'ClusterHQ' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '0.2.3' # The full version, including alpha/beta/rc tags. release = '0.2.3' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = [] # The reST default role (used for this markup: `text`) to use for all # documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'classic' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. #html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. #html_extra_path = [] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Language to be used for generating the HTML full-text search index. # Sphinx supports the following languages: # 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' # 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr' #html_search_language = 'en' # A dictionary with options for the search language support, empty by default. # Now only 'ja' uses this config value #html_search_options = {'type': 'default'} # The name of a javascript file (relative to the configuration directory) that # implements a search results scorer. If empty, the default will be used. #html_search_scorer = 'scorer.js' # Output file base name for HTML help builder. htmlhelp_basename = 'pyzfsdoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', # Latex figure (float) alignment #'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'pyzfs.tex', u'pyzfs Documentation', u'ClusterHQ', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'pyzfs', u'pyzfs Documentation', [author], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ (master_doc, 'pyzfs', u'pyzfs Documentation', author, 'pyzfs', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False # Sort documentation in the same order as the source files. autodoc_member_order = 'bysource' ####################### # Neutralize effects of function wrapping on documented signatures. # The affected signatures could be explicitly placed into the # documentation (either in .rst files or as a first line of a # docstring). import functools def no_op_wraps(func): def wrapper(decorator): return func return wrapper functools.wraps = no_op_wraps zfs-0.8.3/contrib/pyzfs/docs/source/PaxHeaders.151519/index.rst0000644000000000000000000000007413607166132022324 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.728043957 zfs-0.8.3/contrib/pyzfs/docs/source/index.rst0000644016037001603700000000201113607166132022313 0ustar00hutter2hutter200000000000000.. pyzfs documentation master file, created by sphinx-quickstart on Mon Apr 6 23:48:40 2015. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to pyzfs's documentation! ================================= Contents: .. toctree:: :maxdepth: 2 Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` Documentation for the libzfs_core ********************************* .. automodule:: libzfs_core :members: :exclude-members: lzc_snap, lzc_recv, lzc_destroy_one, lzc_inherit, lzc_set_props, lzc_list Documentation for the libzfs_core exceptions ******************************************** .. automodule:: libzfs_core.exceptions :members: :undoc-members: Documentation for the miscellaneous types that correspond to specific width C types *********************************************************************************** .. automodule:: libzfs_core.ctypes :members: :undoc-members: zfs-0.8.3/contrib/pyzfs/PaxHeaders.151519/LICENSE0000644000000000000000000000007413607166132017240 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.722043763 zfs-0.8.3/contrib/pyzfs/LICENSE0000644016037001603700000002613613607166132017245 0ustar00hutter2hutter200000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. zfs-0.8.3/contrib/pyzfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132020267 xustar000000000000000030 atime=1579730428.212100939 30 ctime=1579730488.707043283 zfs-0.8.3/contrib/pyzfs/Makefile.am0000644016037001603700000000242113607166132020263 0ustar00hutter2hutter200000000000000EXTRA_DIST = libzfs_core setup.py.in README LICENSE docs if PYZFS_ENABLED all: all-local: $(PYTHON) setup.py build # # On Debian (Ubuntu, and other downstream distros) the install location of # Python packages is "../dist-packages" instead of "../site-packages" [1]. # The install location used by "$(PYTHON) setup.py install" must match the # location specified in the ZFS specfile (RPM macro "%{python_sitelib}") to # avoid errors during the rpmbuild process. # However we cannot pass "--install-layout=deb" to the setup script here because # it is not supported on RPM-based distros; we use the combination of # "--prefix", "--root" and "--install-lib" parameters instead which should work # on every supported system. # # [1] https://wiki.debian.org/Python#Deviations_from_upstream # # Using "--no-compile" will not generate .pyc files which, in turn, will not be # packaged: this could result in failures during the uninstall phase if these # files are later created by manually loading the Python modules. # install-exec-local: $(PYTHON) $(builddir)/setup.py install \ --prefix $(prefix) \ --root $(DESTDIR)/ \ --install-lib $(pythonsitedir) \ --single-version-externally-managed \ --verbose clean: clean-local rm -rf build/ pyzfs.egg-info/ clean-local: check-local: all endif zfs-0.8.3/contrib/pyzfs/PaxHeaders.151519/README0000644000000000000000000000007413607166132017113 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.705043217 zfs-0.8.3/contrib/pyzfs/README0000644016037001603700000000260713607166132017115 0ustar00hutter2hutter200000000000000This package provides a wrapper for libzfs_core C library. libzfs_core is intended to be a stable interface for programmatic administration of ZFS. This wrapper provides one-to-one wrappers for libzfs_core API functions, but the signatures and types are more natural to Python. nvlists are wrapped as dictionaries or lists depending on their usage. Some parameters have default values depending on typical use for increased convenience. Enumerations and bit flags become strings and lists of strings in Python. Errors are reported as exceptions rather than integer errno-style error codes. The wrapper takes care to provide one-to-many mapping of the error codes to the exceptions by interpreting a context in which the error code is produced. Unit tests and automated test for the libzfs_core API are provided with this package. Please note that the API tests perform lots of ZFS dataset level operations and ZFS tries hard to ensure that any modifications do reach stable storage. That means that the operations are done synchronously and that, for example, disk caches are flushed. Thus, the tests can be very slow on real hardware. It is recommended to place the default temporary directory or a temporary directory specified by, for instance, TMP environment variable on a memory backed filesystem. Package documentation: http://pyzfs.readthedocs.org Package development: https://github.com/zfsonlinux/zfs zfs-0.8.3/contrib/pyzfs/PaxHeaders.151519/setup.py.in0000644000000000000000000000007413607166132020352 xustar000000000000000030 atime=1579730452.418878143 30 ctime=1579730488.712043443 zfs-0.8.3/contrib/pyzfs/setup.py.in0000644016037001603700000000362713607166132020357 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from __future__ import absolute_import, division, print_function from setuptools import setup, find_packages setup( name="pyzfs", version="@VERSION@", description="Wrapper for libzfs_core", author="ClusterHQ", author_email="support@clusterhq.com", url="http://pyzfs.readthedocs.org", license="Apache License, Version 2.0", classifiers=[ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: System :: Filesystems", "Topic :: Software Development :: Libraries", ], keywords=[ "ZFS", "OpenZFS", "libzfs_core", ], packages=find_packages(), include_package_data=True, install_requires=[ "cffi", ], setup_requires=[ "cffi", ], python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,<4', zip_safe=False, test_suite="libzfs_core.test", ) # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/PaxHeaders.151519/libzfs_core0000644000000000000000000000007413612141512020446 xustar000000000000000030 atime=1579730489.075055099 30 ctime=1579730488.720043699 zfs-0.8.3/contrib/pyzfs/libzfs_core/0000755016037001603700000000000013612141512020520 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/_error_translation.py0000644000000000000000000000007413607166147025022 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.718043635 zfs-0.8.3/contrib/pyzfs/libzfs_core/_error_translation.py0000644016037001603700000006766113607166147025037 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Helper routines for converting ``errno`` style error codes from C functions to Python exceptions defined by `libzfs_core` API. The conversion heavily depends on the context of the error: the attempted operation and the input parameters. For this reason, there is a conversion routine for each `libzfs_core` interface function. The conversion routines have the return code as a parameter as well as all the parameters of the corresponding interface functions. The parameters and exceptions are documented in the `libzfs_core` interfaces. """ from __future__ import absolute_import, division, print_function import errno import re import string from . import exceptions as lzc_exc from ._constants import ( MAXNAMELEN, ZFS_ERR_CHECKPOINT_EXISTS, ZFS_ERR_DISCARDING_CHECKPOINT, ZFS_ERR_NO_CHECKPOINT, ZFS_ERR_DEVRM_IN_PROGRESS, ZFS_ERR_VDEV_TOO_BIG, ZFS_ERR_WRONG_PARENT ) def lzc_create_translate_error(ret, name, ds_type, props): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) raise lzc_exc.PropertyInvalid(name) if ret == errno.EEXIST: raise lzc_exc.FilesystemExists(name) if ret == errno.ENOENT: raise lzc_exc.ParentNotFound(name) if ret == ZFS_ERR_WRONG_PARENT: raise lzc_exc.WrongParent(_fs_name(name)) raise _generic_exception(ret, name, "Failed to create filesystem") def lzc_clone_translate_error(ret, name, origin, props): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) _validate_snap_name(origin) raise lzc_exc.PropertyInvalid(name) if ret == errno.EXDEV: raise lzc_exc.PoolsDiffer(name) if ret == errno.EEXIST: raise lzc_exc.FilesystemExists(name) if ret == errno.ENOENT: if not _is_valid_snap_name(origin): raise lzc_exc.SnapshotNameInvalid(origin) raise lzc_exc.DatasetNotFound(name) raise _generic_exception(ret, name, "Failed to create clone") def lzc_rollback_translate_error(ret, name): if ret == 0: return if ret == errno.ESRCH: raise lzc_exc.SnapshotNotFound(name) if ret == errno.EINVAL: _validate_fs_name(name) raise lzc_exc.NameInvalid(name) if ret == errno.ENOENT: if not _is_valid_fs_name(name): raise lzc_exc.NameInvalid(name) else: raise lzc_exc.FilesystemNotFound(name) raise _generic_exception(ret, name, "Failed to rollback") def lzc_rollback_to_translate_error(ret, name, snap): if ret == errno.EEXIST: raise lzc_exc.SnapshotNotLatest(snap) else: lzc_rollback_translate_error(ret, name) def lzc_snapshot_translate_errors(ret, errlist, snaps, props): if ret == 0: return def _map(ret, name): if ret == errno.EXDEV: pool_names = iter(map(_pool_name, snaps)) pool_name = next(pool_names, None) same_pool = all(x == pool_name for x in pool_names) if same_pool: return lzc_exc.DuplicateSnapshots(name) else: return lzc_exc.PoolsDiffer(name) elif ret == errno.EINVAL: if any(not _is_valid_snap_name(s) for s in snaps): return lzc_exc.NameInvalid(name) elif any(len(s) > MAXNAMELEN for s in snaps): return lzc_exc.NameTooLong(name) else: return lzc_exc.PropertyInvalid(name) if ret == errno.EEXIST: return lzc_exc.SnapshotExists(name) if ret == errno.ENOENT: return lzc_exc.FilesystemNotFound(name) return _generic_exception(ret, name, "Failed to create snapshot") _handle_err_list(ret, errlist, snaps, lzc_exc.SnapshotFailure, _map) def lzc_destroy_snaps_translate_errors(ret, errlist, snaps, defer): if ret == 0: return def _map(ret, name): if ret == errno.EEXIST: return lzc_exc.SnapshotIsCloned(name) if ret == errno.ENOENT: return lzc_exc.PoolNotFound(name) if ret == errno.EBUSY: return lzc_exc.SnapshotIsHeld(name) return _generic_exception(ret, name, "Failed to destroy snapshot") _handle_err_list( ret, errlist, snaps, lzc_exc.SnapshotDestructionFailure, _map) def lzc_bookmark_translate_errors(ret, errlist, bookmarks): if ret == 0: return def _map(ret, name): if ret == errno.EINVAL: if name: snap = bookmarks[name] pool_names = map(_pool_name, bookmarks.keys()) if not _is_valid_bmark_name(name): return lzc_exc.BookmarkNameInvalid(name) elif not _is_valid_snap_name(snap): return lzc_exc.SnapshotNameInvalid(snap) elif _fs_name(name) != _fs_name(snap): return lzc_exc.BookmarkMismatch(name) elif any(x != _pool_name(name) for x in pool_names): return lzc_exc.PoolsDiffer(name) else: invalid_names = [ b for b in bookmarks.keys() if not _is_valid_bmark_name(b)] if invalid_names: return lzc_exc.BookmarkNameInvalid(invalid_names[0]) if ret == errno.EEXIST: return lzc_exc.BookmarkExists(name) if ret == errno.ENOENT: return lzc_exc.SnapshotNotFound(name) if ret == errno.ENOTSUP: return lzc_exc.BookmarkNotSupported(name) return _generic_exception(ret, name, "Failed to create bookmark") _handle_err_list( ret, errlist, bookmarks.keys(), lzc_exc.BookmarkFailure, _map) def lzc_get_bookmarks_translate_error(ret, fsname, props): if ret == 0: return if ret == errno.ENOENT: raise lzc_exc.FilesystemNotFound(fsname) raise _generic_exception(ret, fsname, "Failed to list bookmarks") def lzc_destroy_bookmarks_translate_errors(ret, errlist, bookmarks): if ret == 0: return def _map(ret, name): if ret == errno.EINVAL: return lzc_exc.NameInvalid(name) return _generic_exception(ret, name, "Failed to destroy bookmark") _handle_err_list( ret, errlist, bookmarks, lzc_exc.BookmarkDestructionFailure, _map) def lzc_snaprange_space_translate_error(ret, firstsnap, lastsnap): if ret == 0: return if ret == errno.EXDEV and firstsnap is not None: if _pool_name(firstsnap) != _pool_name(lastsnap): raise lzc_exc.PoolsDiffer(lastsnap) else: raise lzc_exc.SnapshotMismatch(lastsnap) if ret == errno.EINVAL: if not _is_valid_snap_name(firstsnap): raise lzc_exc.NameInvalid(firstsnap) elif not _is_valid_snap_name(lastsnap): raise lzc_exc.NameInvalid(lastsnap) elif len(firstsnap) > MAXNAMELEN: raise lzc_exc.NameTooLong(firstsnap) elif len(lastsnap) > MAXNAMELEN: raise lzc_exc.NameTooLong(lastsnap) elif _pool_name(firstsnap) != _pool_name(lastsnap): raise lzc_exc.PoolsDiffer(lastsnap) else: raise lzc_exc.SnapshotMismatch(lastsnap) if ret == errno.ENOENT: raise lzc_exc.SnapshotNotFound(lastsnap) raise _generic_exception( ret, lastsnap, "Failed to calculate space used by range of snapshots") def lzc_hold_translate_errors(ret, errlist, holds, fd): if ret == 0: return def _map(ret, name): if ret == errno.EXDEV: return lzc_exc.PoolsDiffer(name) elif ret == errno.EINVAL: if name: pool_names = map(_pool_name, holds.keys()) if not _is_valid_snap_name(name): return lzc_exc.NameInvalid(name) elif len(name) > MAXNAMELEN: return lzc_exc.NameTooLong(name) elif any(x != _pool_name(name) for x in pool_names): return lzc_exc.PoolsDiffer(name) else: invalid_names = [ b for b in holds.keys() if not _is_valid_snap_name(b)] if invalid_names: return lzc_exc.NameInvalid(invalid_names[0]) fs_name = None hold_name = None pool_name = None if name is not None: fs_name = _fs_name(name) pool_name = _pool_name(name) hold_name = holds[name] if ret == errno.ENOENT: return lzc_exc.FilesystemNotFound(fs_name) if ret == errno.EEXIST: return lzc_exc.HoldExists(name) if ret == errno.E2BIG: return lzc_exc.NameTooLong(hold_name) if ret == errno.ENOTSUP: return lzc_exc.FeatureNotSupported(pool_name) return _generic_exception(ret, name, "Failed to hold snapshot") if ret == errno.EBADF: raise lzc_exc.BadHoldCleanupFD() _handle_err_list(ret, errlist, holds.keys(), lzc_exc.HoldFailure, _map) def lzc_release_translate_errors(ret, errlist, holds): if ret == 0: return for snap in holds: hold_list = holds[snap] if not isinstance(hold_list, list): raise lzc_exc.TypeError('holds must be in a list') def _map(ret, name): if ret == errno.EXDEV: return lzc_exc.PoolsDiffer(name) elif ret == errno.EINVAL: if name: pool_names = map(_pool_name, holds.keys()) if not _is_valid_snap_name(name): return lzc_exc.NameInvalid(name) elif len(name) > MAXNAMELEN: return lzc_exc.NameTooLong(name) elif any(x != _pool_name(name) for x in pool_names): return lzc_exc.PoolsDiffer(name) else: invalid_names = [ b for b in holds.keys() if not _is_valid_snap_name(b)] if invalid_names: return lzc_exc.NameInvalid(invalid_names[0]) elif ret == errno.ENOENT: return lzc_exc.HoldNotFound(name) elif ret == errno.E2BIG: tag_list = holds[name] too_long_tags = [t for t in tag_list if len(t) > MAXNAMELEN] return lzc_exc.NameTooLong(too_long_tags[0]) elif ret == errno.ENOTSUP: pool_name = None if name is not None: pool_name = _pool_name(name) return lzc_exc.FeatureNotSupported(pool_name) else: return _generic_exception( ret, name, "Failed to release snapshot hold") _handle_err_list( ret, errlist, holds.keys(), lzc_exc.HoldReleaseFailure, _map) def lzc_get_holds_translate_error(ret, snapname): if ret == 0: return if ret == errno.EINVAL: _validate_snap_name(snapname) if ret == errno.ENOENT: raise lzc_exc.SnapshotNotFound(snapname) if ret == errno.ENOTSUP: raise lzc_exc.FeatureNotSupported(_pool_name(snapname)) raise _generic_exception(ret, snapname, "Failed to get holds on snapshot") def lzc_send_translate_error(ret, snapname, fromsnap, fd, flags): if ret == 0: return if ret == errno.EXDEV and fromsnap is not None: if _pool_name(fromsnap) != _pool_name(snapname): raise lzc_exc.PoolsDiffer(snapname) else: raise lzc_exc.SnapshotMismatch(snapname) elif ret == errno.EINVAL: if (fromsnap is not None and not _is_valid_snap_name(fromsnap) and not _is_valid_bmark_name(fromsnap)): raise lzc_exc.NameInvalid(fromsnap) elif (not _is_valid_snap_name(snapname) and not _is_valid_fs_name(snapname)): raise lzc_exc.NameInvalid(snapname) elif fromsnap is not None and len(fromsnap) > MAXNAMELEN: raise lzc_exc.NameTooLong(fromsnap) elif len(snapname) > MAXNAMELEN: raise lzc_exc.NameTooLong(snapname) elif (fromsnap is not None and _pool_name(fromsnap) != _pool_name(snapname)): raise lzc_exc.PoolsDiffer(snapname) elif ret == errno.ENOENT: if (fromsnap is not None and not _is_valid_snap_name(fromsnap) and not _is_valid_bmark_name(fromsnap)): raise lzc_exc.NameInvalid(fromsnap) raise lzc_exc.SnapshotNotFound(snapname) elif ret == errno.ENAMETOOLONG: if fromsnap is not None and len(fromsnap) > MAXNAMELEN: raise lzc_exc.NameTooLong(fromsnap) else: raise lzc_exc.NameTooLong(snapname) raise lzc_exc.StreamIOError(ret) def lzc_send_space_translate_error(ret, snapname, fromsnap): if ret == 0: return if ret == errno.EXDEV and fromsnap is not None: if _pool_name(fromsnap) != _pool_name(snapname): raise lzc_exc.PoolsDiffer(snapname) else: raise lzc_exc.SnapshotMismatch(snapname) elif ret == errno.EINVAL: if fromsnap is not None and not _is_valid_snap_name(fromsnap): raise lzc_exc.NameInvalid(fromsnap) elif not _is_valid_snap_name(snapname): raise lzc_exc.NameInvalid(snapname) elif fromsnap is not None and len(fromsnap) > MAXNAMELEN: raise lzc_exc.NameTooLong(fromsnap) elif len(snapname) > MAXNAMELEN: raise lzc_exc.NameTooLong(snapname) elif (fromsnap is not None and _pool_name(fromsnap) != _pool_name(snapname)): raise lzc_exc.PoolsDiffer(snapname) elif ret == errno.ENOENT and fromsnap is not None: if not _is_valid_snap_name(fromsnap): raise lzc_exc.NameInvalid(fromsnap) if ret == errno.ENOENT: raise lzc_exc.SnapshotNotFound(snapname) raise _generic_exception( ret, snapname, "Failed to estimate backup stream size") def lzc_receive_translate_errors( ret, snapname, fd, force, raw, resumable, embedded, origin, properrs ): if ret == 0: if properrs is not None and len(properrs) > 0: def _map(ret, name): if ret == errno.EINVAL: return lzc_exc.PropertyInvalid(name) return _generic_exception(ret, name, "Failed to set property") _handle_err_list( errno.EINVAL, properrs, [snapname], lzc_exc.ReceivePropertyFailure, _map) else: return if ret == errno.EINVAL: if (not _is_valid_snap_name(snapname) and not _is_valid_fs_name(snapname)): raise lzc_exc.NameInvalid(snapname) elif len(snapname) > MAXNAMELEN: raise lzc_exc.NameTooLong(snapname) elif origin is not None and not _is_valid_snap_name(origin): raise lzc_exc.NameInvalid(origin) elif resumable: raise lzc_exc.StreamFeatureInvalid() elif embedded and not raw: raise lzc_exc.StreamFeatureIncompatible() else: raise lzc_exc.BadStream() if ret == errno.ENOENT: if not _is_valid_snap_name(snapname): raise lzc_exc.NameInvalid(snapname) else: raise lzc_exc.DatasetNotFound(snapname) if ret == errno.EEXIST: raise lzc_exc.DatasetExists(snapname) if ret == errno.ENOTSUP: raise lzc_exc.StreamFeatureNotSupported() if ret == errno.ENODEV: raise lzc_exc.StreamMismatch(_fs_name(snapname)) if ret == errno.ETXTBSY: raise lzc_exc.DestinationModified(_fs_name(snapname)) if ret == errno.EBUSY: raise lzc_exc.DatasetBusy(_fs_name(snapname)) if ret == errno.ENOSPC: raise lzc_exc.NoSpace(_fs_name(snapname)) if ret == errno.EDQUOT: raise lzc_exc.QuotaExceeded(_fs_name(snapname)) if ret == errno.ENAMETOOLONG: raise lzc_exc.NameTooLong(snapname) if ret == errno.EROFS: raise lzc_exc.ReadOnlyPool(_pool_name(snapname)) if ret == errno.EAGAIN: raise lzc_exc.SuspendedPool(_pool_name(snapname)) if ret == errno.EBADE: # ECKSUM raise lzc_exc.BadStream() if ret == ZFS_ERR_WRONG_PARENT: raise lzc_exc.WrongParent(_fs_name(snapname)) raise lzc_exc.StreamIOError(ret) def lzc_promote_translate_error(ret, name): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) raise lzc_exc.NotClone(name) if ret == errno.ENOTSOCK: raise lzc_exc.NotClone(name) if ret == errno.ENOENT: raise lzc_exc.FilesystemNotFound(name) if ret == errno.EEXIST: raise lzc_exc.SnapshotExists(name) raise _generic_exception(ret, name, "Failed to promote dataset") def lzc_change_key_translate_error(ret, name): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) raise lzc_exc.PropertyInvalid(name) if ret == errno.ENOENT: raise lzc_exc.FilesystemNotFound(name) if ret == errno.EACCES: raise lzc_exc.EncryptionKeyNotLoaded() raise _generic_exception(ret, name, "Failed to change encryption key") def lzc_load_key_translate_error(ret, name, noop): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) raise lzc_exc.PropertyInvalid(name) if ret == errno.ENOENT: raise lzc_exc.FilesystemNotFound(name) if ret == errno.EACCES: raise lzc_exc.EncryptionKeyInvalid() if ret == errno.EEXIST: raise lzc_exc.EncryptionKeyAlreadyLoaded() if noop: raise _generic_exception(ret, name, "Failed to load encryption key") else: raise _generic_exception(ret, name, "Failed to verify encryption key") def lzc_unload_key_translate_error(ret, name): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) raise lzc_exc.PropertyInvalid(name) if ret == errno.ENOENT: raise lzc_exc.FilesystemNotFound(name) if ret == errno.EACCES: raise lzc_exc.EncryptionKeyNotLoaded() raise _generic_exception(ret, name, "Failed to unload encryption key") def lzc_sync_translate_error(ret, name): if ret == 0: return if ret == errno.ENOENT: raise lzc_exc.PoolNotFound(name) raise _generic_exception(ret, name, "Failed to sync pool") def lzc_reopen_translate_error(ret, name): if ret == 0: return if ret == errno.ENOENT: raise lzc_exc.PoolNotFound(name) raise _generic_exception(ret, name, "Failed to reopen pool") def lzc_channel_program_translate_error(ret, name, error): if ret == 0: return if ret == errno.ENOENT: raise lzc_exc.PoolNotFound(name) if ret == errno.ETIME: raise lzc_exc.ZCPTimeout() if ret == errno.ENOMEM: raise lzc_exc.ZCPMemoryError() if ret == errno.ENOSPC: raise lzc_exc.ZCPSpaceError() if ret == errno.EPERM: raise lzc_exc.ZCPPermissionError() if ret == errno.ECHRNG: raise lzc_exc.ZCPRuntimeError(error) if ret == errno.EINVAL: if error is None: raise lzc_exc.ZCPLimitInvalid() else: raise lzc_exc.ZCPSyntaxError(error) raise _generic_exception(ret, name, "Failed to execute channel program") def lzc_remap_translate_error(ret, name): if ret == 0: return if ret == errno.ENOENT: raise lzc_exc.DatasetNotFound(name) if ret == errno.EINVAL: _validate_fs_name(name) if ret == errno.ENOTSUP: return lzc_exc.FeatureNotSupported(name) raise _generic_exception(ret, name, "Failed to remap dataset") def lzc_pool_checkpoint_translate_error(ret, name, discard=False): if ret == 0: return if ret == errno.ENOENT: raise lzc_exc.PoolNotFound(name) if ret == ZFS_ERR_CHECKPOINT_EXISTS: raise lzc_exc.CheckpointExists() if ret == ZFS_ERR_NO_CHECKPOINT: raise lzc_exc.CheckpointNotFound() if ret == ZFS_ERR_DISCARDING_CHECKPOINT: raise lzc_exc.CheckpointDiscarding() if ret == ZFS_ERR_DEVRM_IN_PROGRESS: raise lzc_exc.DeviceRemovalRunning() if ret == ZFS_ERR_VDEV_TOO_BIG: raise lzc_exc.DeviceTooBig() if discard: raise _generic_exception( ret, name, "Failed to discard pool checkpoint") else: raise _generic_exception(ret, name, "Failed to create pool checkpoint") def lzc_pool_checkpoint_discard_translate_error(ret, name): lzc_pool_checkpoint_translate_error(ret, name, discard=True) def lzc_rename_translate_error(ret, source, target): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(source) _validate_fs_name(target) if _pool_name(source) != _pool_name(target): raise lzc_exc.PoolsDiffer(source) if ret == errno.EEXIST: raise lzc_exc.FilesystemExists(target) if ret == errno.ENOENT: raise lzc_exc.FilesystemNotFound(source) if ret == ZFS_ERR_WRONG_PARENT: raise lzc_exc.WrongParent(target) raise _generic_exception(ret, source, "Failed to rename dataset") def lzc_destroy_translate_error(ret, name): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) if ret == errno.ENOENT: raise lzc_exc.FilesystemNotFound(name) raise _generic_exception(ret, name, "Failed to destroy dataset") def lzc_inherit_prop_translate_error(ret, name, prop): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) raise lzc_exc.PropertyInvalid(prop) if ret == errno.ENOENT: raise lzc_exc.DatasetNotFound(name) raise _generic_exception(ret, name, "Failed to inherit a property") def lzc_set_prop_translate_error(ret, name, prop, val): if ret == 0: return if ret == errno.EINVAL: _validate_fs_or_snap_name(name) raise lzc_exc.PropertyInvalid(prop) if ret == errno.ENOENT: raise lzc_exc.DatasetNotFound(name) raise _generic_exception(ret, name, "Failed to set a property") def lzc_get_props_translate_error(ret, name): if ret == 0: return if ret == errno.EINVAL: _validate_fs_or_snap_name(name) if ret == errno.ENOENT: raise lzc_exc.DatasetNotFound(name) raise _generic_exception(ret, name, "Failed to get properties") def lzc_list_children_translate_error(ret, name): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) raise _generic_exception(ret, name, "Error while iterating children") def lzc_list_snaps_translate_error(ret, name): if ret == 0: return if ret == errno.EINVAL: _validate_fs_name(name) raise _generic_exception(ret, name, "Error while iterating snapshots") def lzc_list_translate_error(ret, name, opts): if ret == 0: return if ret == errno.ENOENT: raise lzc_exc.DatasetNotFound(name) if ret == errno.EINVAL: _validate_fs_or_snap_name(name) raise _generic_exception(ret, name, "Error obtaining a list") def _handle_err_list(ret, errlist, names, exception, mapper): ''' Convert one or more errors from an operation into the requested exception. :param int ret: the overall return code. :param errlist: the dictionary that maps entity names to their specific error codes. :type errlist: dict of bytes:int :param names: the list of all names of the entities on which the operation was attempted. :param type exception: the type of the exception to raise if an error occurred. The exception should be a subclass of ``MultipleOperationsFailure``. :param function mapper: the function that maps an error code and a name to a Python exception. Unless ``ret`` is zero this function will raise the ``exception``. If the ``errlist`` is not empty, then the compound exception will contain a list of exceptions corresponding to each individual error code in the ``errlist``. Otherwise, the ``exception`` will contain a list with a single exception corresponding to the ``ret`` value. If the ``names`` list contains only one element, that is, the operation was attempted on a single entity, then the name of that entity is passed to the ``mapper``. If the operation was attempted on multiple entities, but the ``errlist`` is empty, then we can not know which entity caused the error and, thus, ``None`` is used as a name to signify that fact. .. note:: Note that the ``errlist`` can contain a special element with a key of "N_MORE_ERRORS". That element means that there were too many errors to place on the ``errlist``. Those errors are suppressed and only their count is provided as a value of the special ``N_MORE_ERRORS`` element. ''' if ret == 0: return if len(errlist) == 0: suppressed_count = 0 names = list(zip(names, range(2))) if len(names) == 1: name, _ = names[0] else: name = None errors = [mapper(ret, name)] else: errors = [] suppressed_count = errlist.pop('N_MORE_ERRORS', 0) for name in errlist: err = errlist[name] errors.append(mapper(err, name)) raise exception(errors, suppressed_count) def _pool_name(name): ''' Extract a pool name from the given dataset or bookmark name. '/' separates dataset name components. '@' separates a snapshot name from the rest of the dataset name. '#' separates a bookmark name from the rest of the dataset name. ''' return re.split(b'[/@#]', name, 1)[0] def _fs_name(name): ''' Extract a dataset name from the given snapshot or bookmark name. '@' separates a snapshot name from the rest of the dataset name. '#' separates a bookmark name from the rest of the dataset name. ''' return re.split(b'[@#]', name, 1)[0] def _is_valid_name_component(component): allowed = string.ascii_letters + string.digits + u'-_.: ' return component and all(x in allowed.encode() for x in component) def _is_valid_fs_name(name): return name and all(_is_valid_name_component(c) for c in name.split(b'/')) def _is_valid_snap_name(name): parts = name.split(b'@') return (len(parts) == 2 and _is_valid_fs_name(parts[0]) and _is_valid_name_component(parts[1])) def _is_valid_bmark_name(name): parts = name.split(b'#') return (len(parts) == 2 and _is_valid_fs_name(parts[0]) and _is_valid_name_component(parts[1])) def _validate_fs_name(name): if not _is_valid_fs_name(name): raise lzc_exc.FilesystemNameInvalid(name) elif len(name) > MAXNAMELEN: raise lzc_exc.NameTooLong(name) def _validate_snap_name(name): if not _is_valid_snap_name(name): raise lzc_exc.SnapshotNameInvalid(name) elif len(name) > MAXNAMELEN: raise lzc_exc.NameTooLong(name) def _validate_bmark_name(name): if not _is_valid_bmark_name(name): raise lzc_exc.BookmarkNameInvalid(name) elif len(name) > MAXNAMELEN: raise lzc_exc.NameTooLong(name) def _validate_fs_or_snap_name(name): if not _is_valid_fs_name(name) and not _is_valid_snap_name(name): raise lzc_exc.NameInvalid(name) elif len(name) > MAXNAMELEN: raise lzc_exc.NameTooLong(name) def _generic_exception(err, name, message): if err in _error_to_exception: return _error_to_exception[err](name) else: return lzc_exc.ZFSGenericError(err, message, name) _error_to_exception = {e.errno: e for e in [ lzc_exc.ZIOError, lzc_exc.NoSpace, lzc_exc.QuotaExceeded, lzc_exc.DatasetBusy, lzc_exc.NameTooLong, lzc_exc.ReadOnlyPool, lzc_exc.SuspendedPool, lzc_exc.PoolsDiffer, lzc_exc.PropertyNotSupported, ]} # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/ctypes.py0000644000000000000000000000007413607166132022415 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.718043635 zfs-0.8.3/contrib/pyzfs/libzfs_core/ctypes.py0000644016037001603700000000450113607166132022412 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Utility functions for casting to a specific C type. """ from __future__ import absolute_import, division, print_function from .bindings.libnvpair import ffi as _ffi def _ffi_cast(type_name): type_info = _ffi.typeof(type_name) def _func(value): # this is for overflow / underflow checking only if type_info.kind == 'enum': try: type_info.elements[value] except KeyError as e: raise OverflowError('Invalid enum <%s> value %s: %s' % (type_info.cname, value, e)) else: _ffi.new(type_name + '*', value) return _ffi.cast(type_name, value) _func.__name__ = type_name return _func uint8_t = _ffi_cast('uint8_t') int8_t = _ffi_cast('int8_t') uint16_t = _ffi_cast('uint16_t') int16_t = _ffi_cast('int16_t') uint32_t = _ffi_cast('uint32_t') int32_t = _ffi_cast('int32_t') uint64_t = _ffi_cast('uint64_t') int64_t = _ffi_cast('int64_t') boolean_t = _ffi_cast('boolean_t') uchar_t = _ffi_cast('uchar_t') # First element of the value tuple is a suffix for a single value function # while the second element is for an array function _type_to_suffix = { _ffi.typeof('uint8_t'): ('uint8', 'uint8'), _ffi.typeof('int8_t'): ('int8', 'int8'), _ffi.typeof('uint16_t'): ('uint16', 'uint16'), _ffi.typeof('int16_t'): ('int16', 'int16'), _ffi.typeof('uint32_t'): ('uint32', 'uint32'), _ffi.typeof('int32_t'): ('int32', 'int32'), _ffi.typeof('uint64_t'): ('uint64', 'uint64'), _ffi.typeof('int64_t'): ('int64', 'int64'), _ffi.typeof('boolean_t'): ('boolean_value', 'boolean'), _ffi.typeof('uchar_t'): ('byte', 'byte'), } # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/test0000644000000000000000000000007413612141512021425 xustar000000000000000030 atime=1579730489.075055099 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/test/0000755016037001603700000000000013612141512021477 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/pyzfs/libzfs_core/test/PaxHeaders.151519/test_nvlist.py0000644000000000000000000000007413607166132024443 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.718043635 zfs-0.8.3/contrib/pyzfs/libzfs_core/test/test_nvlist.py0000644016037001603700000005562713607166132024457 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Tests for _nvlist module. The tests convert from a `dict` to C ``nvlist_t`` and back to a `dict` and verify that no information is lost and value types are correct. The tests also check that various error conditions like unsupported value types or out of bounds values are detected. """ from __future__ import absolute_import, division, print_function import unittest from .._nvlist import nvlist_in, nvlist_out, _lib from ..ctypes import ( uint8_t, int8_t, uint16_t, int16_t, uint32_t, int32_t, uint64_t, int64_t, boolean_t, uchar_t ) class TestNVList(unittest.TestCase): def _dict_to_nvlist_to_dict(self, props): res = {} nv_in = nvlist_in(props) with nvlist_out(res) as nv_out: _lib.nvlist_dup(nv_in, nv_out, 0) return res def _assertIntDictsEqual(self, dict1, dict2): self.assertEqual( len(dict1), len(dict1), b"resulting dictionary is of different size") for key in dict1.keys(): self.assertEqual(int(dict1[key]), int(dict2[key])) def _assertIntArrayDictsEqual(self, dict1, dict2): self.assertEqual( len(dict1), len(dict1), b"resulting dictionary is of different size") for key in dict1.keys(): val1 = dict1[key] val2 = dict2[key] self.assertEqual( len(val1), len(val2), b"array values of different sizes") for x, y in zip(val1, val2): self.assertEqual(int(x), int(y)) def test_empty(self): res = self._dict_to_nvlist_to_dict({}) self.assertEqual(len(res), 0, b"expected empty dict") def test_invalid_key_type(self): with self.assertRaises(TypeError): self._dict_to_nvlist_to_dict({1: None}) def test_invalid_val_type__tuple(self): with self.assertRaises(TypeError): self._dict_to_nvlist_to_dict({b"key": (1, 2)}) def test_invalid_val_type__set(self): with self.assertRaises(TypeError): self._dict_to_nvlist_to_dict({b"key": set(1, 2)}) def test_invalid_array_val_type(self): with self.assertRaises(TypeError): self._dict_to_nvlist_to_dict({b"key": [(1, 2), (3, 4)]}) def test_invalid_array_of_arrays_val_type(self): with self.assertRaises(TypeError): self._dict_to_nvlist_to_dict({b"key": [[1, 2], [3, 4]]}) def test_string_value(self): props = {b"key": b"value"} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_implicit_boolean_value(self): props = {b"key": None} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_boolean_values(self): props = {b"key1": True, b"key2": False} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_explicit_boolean_true_value(self): props = {b"key": boolean_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_boolean_false_value(self): props = {b"key": boolean_t(0)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_boolean_invalid_value(self): with self.assertRaises(OverflowError): props = {b"key": boolean_t(2)} self._dict_to_nvlist_to_dict(props) def test_explicit_boolean_another_invalid_value(self): with self.assertRaises(OverflowError): props = {b"key": boolean_t(-1)} self._dict_to_nvlist_to_dict(props) def test_uint64_value(self): props = {b"key": 1} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_uint64_max_value(self): props = {b"key": 2 ** 64 - 1} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_uint64_too_large_value(self): props = {b"key": 2 ** 64} with self.assertRaises(OverflowError): self._dict_to_nvlist_to_dict(props) def test_uint64_negative_value(self): props = {b"key": -1} with self.assertRaises(OverflowError): self._dict_to_nvlist_to_dict(props) def test_explicit_uint64_value(self): props = {b"key": uint64_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_uint64_max_value(self): props = {b"key": uint64_t(2 ** 64 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_uint64_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": uint64_t(2 ** 64)} self._dict_to_nvlist_to_dict(props) def test_explicit_uint64_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": uint64_t(-1)} self._dict_to_nvlist_to_dict(props) def test_explicit_uint32_value(self): props = {b"key": uint32_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_uint32_max_value(self): props = {b"key": uint32_t(2 ** 32 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_uint32_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": uint32_t(2 ** 32)} self._dict_to_nvlist_to_dict(props) def test_explicit_uint32_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": uint32_t(-1)} self._dict_to_nvlist_to_dict(props) def test_explicit_uint16_value(self): props = {b"key": uint16_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_uint16_max_value(self): props = {b"key": uint16_t(2 ** 16 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_uint16_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": uint16_t(2 ** 16)} self._dict_to_nvlist_to_dict(props) def test_explicit_uint16_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": uint16_t(-1)} self._dict_to_nvlist_to_dict(props) def test_explicit_uint8_value(self): props = {b"key": uint8_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_uint8_max_value(self): props = {b"key": uint8_t(2 ** 8 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_uint8_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": uint8_t(2 ** 8)} self._dict_to_nvlist_to_dict(props) def test_explicit_uint8_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": uint8_t(-1)} self._dict_to_nvlist_to_dict(props) def test_explicit_byte_value(self): props = {b"key": uchar_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_byte_max_value(self): props = {b"key": uchar_t(2 ** 8 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_byte_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": uchar_t(2 ** 8)} self._dict_to_nvlist_to_dict(props) def test_explicit_byte_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": uchar_t(-1)} self._dict_to_nvlist_to_dict(props) def test_explicit_int64_value(self): props = {b"key": int64_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int64_max_value(self): props = {b"key": int64_t(2 ** 63 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int64_min_value(self): props = {b"key": int64_t(-(2 ** 63))} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int64_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": int64_t(2 ** 63)} self._dict_to_nvlist_to_dict(props) def test_explicit_int64_too_small_value(self): with self.assertRaises(OverflowError): props = {b"key": int64_t(-(2 ** 63) - 1)} self._dict_to_nvlist_to_dict(props) def test_explicit_int32_value(self): props = {b"key": int32_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int32_max_value(self): props = {b"key": int32_t(2 ** 31 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int32_min_value(self): props = {b"key": int32_t(-(2 ** 31))} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int32_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": int32_t(2 ** 31)} self._dict_to_nvlist_to_dict(props) def test_explicit_int32_too_small_value(self): with self.assertRaises(OverflowError): props = {b"key": int32_t(-(2 ** 31) - 1)} self._dict_to_nvlist_to_dict(props) def test_explicit_int16_value(self): props = {b"key": int16_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int16_max_value(self): props = {b"key": int16_t(2 ** 15 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int16_min_value(self): props = {b"key": int16_t(-(2 ** 15))} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int16_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": int16_t(2 ** 15)} self._dict_to_nvlist_to_dict(props) def test_explicit_int16_too_small_value(self): with self.assertRaises(OverflowError): props = {b"key": int16_t(-(2 ** 15) - 1)} self._dict_to_nvlist_to_dict(props) def test_explicit_int8_value(self): props = {b"key": int8_t(1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int8_max_value(self): props = {b"key": int8_t(2 ** 7 - 1)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int8_min_value(self): props = {b"key": int8_t(-(2 ** 7))} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_explicit_int8_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": int8_t(2 ** 7)} self._dict_to_nvlist_to_dict(props) def test_explicit_int8_too_small_value(self): with self.assertRaises(OverflowError): props = {b"key": int8_t(-(2 ** 7) - 1)} self._dict_to_nvlist_to_dict(props) def test_nested_dict(self): props = {b"key": {}} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_nested_nested_dict(self): props = {b"key": {b"key": {}}} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_mismatching_values_array(self): props = {b"key": [1, b"string"]} with self.assertRaises(TypeError): self._dict_to_nvlist_to_dict(props) def test_mismatching_values_array2(self): props = {b"key": [True, 10]} with self.assertRaises(TypeError): self._dict_to_nvlist_to_dict(props) def test_mismatching_values_array3(self): props = {b"key": [1, False]} with self.assertRaises(TypeError): self._dict_to_nvlist_to_dict(props) def test_string_array(self): props = {b"key": [b"value", b"value2"]} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_boolean_array(self): props = {b"key": [True, False]} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_explicit_boolean_array(self): props = {b"key": [boolean_t(False), boolean_t(True)]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_uint64_array(self): props = {b"key": [0, 1, 2 ** 64 - 1]} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_uint64_array_too_large_value(self): props = {b"key": [0, 2 ** 64]} with self.assertRaises(OverflowError): self._dict_to_nvlist_to_dict(props) def test_uint64_array_negative_value(self): props = {b"key": [0, -1]} with self.assertRaises(OverflowError): self._dict_to_nvlist_to_dict(props) def test_mixed_explict_int_array(self): with self.assertRaises(TypeError): props = {b"key": [uint64_t(0), uint32_t(0)]} self._dict_to_nvlist_to_dict(props) def test_explict_uint64_array(self): props = {b"key": [uint64_t(0), uint64_t(1), uint64_t(2 ** 64 - 1)]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_uint64_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [uint64_t(0), uint64_t(2 ** 64)]} self._dict_to_nvlist_to_dict(props) def test_explict_uint64_array_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": [uint64_t(0), uint64_t(-1)]} self._dict_to_nvlist_to_dict(props) def test_explict_uint32_array(self): props = {b"key": [uint32_t(0), uint32_t(1), uint32_t(2 ** 32 - 1)]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_uint32_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [uint32_t(0), uint32_t(2 ** 32)]} self._dict_to_nvlist_to_dict(props) def test_explict_uint32_array_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": [uint32_t(0), uint32_t(-1)]} self._dict_to_nvlist_to_dict(props) def test_explict_uint16_array(self): props = {b"key": [uint16_t(0), uint16_t(1), uint16_t(2 ** 16 - 1)]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_uint16_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [uint16_t(0), uint16_t(2 ** 16)]} self._dict_to_nvlist_to_dict(props) def test_explict_uint16_array_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": [uint16_t(0), uint16_t(-1)]} self._dict_to_nvlist_to_dict(props) def test_explict_uint8_array(self): props = {b"key": [uint8_t(0), uint8_t(1), uint8_t(2 ** 8 - 1)]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_uint8_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [uint8_t(0), uint8_t(2 ** 8)]} self._dict_to_nvlist_to_dict(props) def test_explict_uint8_array_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": [uint8_t(0), uint8_t(-1)]} self._dict_to_nvlist_to_dict(props) def test_explict_byte_array(self): props = {b"key": [uchar_t(0), uchar_t(1), uchar_t(2 ** 8 - 1)]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_byte_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [uchar_t(0), uchar_t(2 ** 8)]} self._dict_to_nvlist_to_dict(props) def test_explict_byte_array_negative_value(self): with self.assertRaises(OverflowError): props = {b"key": [uchar_t(0), uchar_t(-1)]} self._dict_to_nvlist_to_dict(props) def test_explict_int64_array(self): props = {b"key": [ int64_t(0), int64_t(1), int64_t(2 ** 63 - 1), int64_t(-(2 ** 63))]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_int64_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [int64_t(0), int64_t(2 ** 63)]} self._dict_to_nvlist_to_dict(props) def test_explict_int64_array_too_small_value(self): with self.assertRaises(OverflowError): props = {b"key": [int64_t(0), int64_t(-(2 ** 63) - 1)]} self._dict_to_nvlist_to_dict(props) def test_explict_int32_array(self): props = {b"key": [ int32_t(0), int32_t(1), int32_t(2 ** 31 - 1), int32_t(-(2 ** 31))]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_int32_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [int32_t(0), int32_t(2 ** 31)]} self._dict_to_nvlist_to_dict(props) def test_explict_int32_array_too_small_value(self): with self.assertRaises(OverflowError): props = {b"key": [int32_t(0), int32_t(-(2 ** 31) - 1)]} self._dict_to_nvlist_to_dict(props) def test_explict_int16_array(self): props = {b"key": [ int16_t(0), int16_t(1), int16_t(2 ** 15 - 1), int16_t(-(2 ** 15))]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_int16_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [int16_t(0), int16_t(2 ** 15)]} self._dict_to_nvlist_to_dict(props) def test_explict_int16_array_too_small_value(self): with self.assertRaises(OverflowError): props = {b"key": [int16_t(0), int16_t(-(2 ** 15) - 1)]} self._dict_to_nvlist_to_dict(props) def test_explict_int8_array(self): props = {b"key": [ int8_t(0), int8_t(1), int8_t(2 ** 7 - 1), int8_t(-(2 ** 7))]} res = self._dict_to_nvlist_to_dict(props) self._assertIntArrayDictsEqual(props, res) def test_explict_int8_array_too_large_value(self): with self.assertRaises(OverflowError): props = {b"key": [int8_t(0), int8_t(2 ** 7)]} self._dict_to_nvlist_to_dict(props) def test_explict_int8_array_too_small_value(self): with self.assertRaises(OverflowError): props = {b"key": [int8_t(0), int8_t(-(2 ** 7) - 1)]} self._dict_to_nvlist_to_dict(props) def test_dict_array(self): props = {b"key": [{b"key": 1}, {b"key": None}, {b"key": {}}]} res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) def test_implicit_uint32_value(self): props = {b"rewind-request": 1} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_implicit_uint32_max_value(self): props = {b"rewind-request": 2 ** 32 - 1} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_implicit_uint32_too_large_value(self): with self.assertRaises(OverflowError): props = {b"rewind-request": 2 ** 32} self._dict_to_nvlist_to_dict(props) def test_implicit_uint32_negative_value(self): with self.assertRaises(OverflowError): props = {b"rewind-request": -1} self._dict_to_nvlist_to_dict(props) def test_implicit_int32_value(self): props = {b"pool_context": 1} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_implicit_int32_max_value(self): props = {b"pool_context": 2 ** 31 - 1} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_implicit_int32_min_value(self): props = {b"pool_context": -(2 ** 31)} res = self._dict_to_nvlist_to_dict(props) self._assertIntDictsEqual(props, res) def test_implicit_int32_too_large_value(self): with self.assertRaises(OverflowError): props = {b"pool_context": 2 ** 31} self._dict_to_nvlist_to_dict(props) def test_implicit_int32_too_small_value(self): with self.assertRaises(OverflowError): props = {b"pool_context": -(2 ** 31) - 1} self._dict_to_nvlist_to_dict(props) def test_complex_dict(self): props = { b"key1": b"str", b"key2": 10, b"key3": { b"skey1": True, b"skey2": None, b"skey3": [ True, False, True ] }, b"key4": [ b"ab", b"bc" ], b"key5": [ 2 ** 64 - 1, 1, 2, 3 ], b"key6": [ { b"skey71": b"a", b"skey72": b"b", }, { b"skey71": b"c", b"skey72": b"d", }, { b"skey71": b"e", b"skey72": b"f", } ], b"type": 2 ** 32 - 1, b"pool_context": -(2 ** 31) } res = self._dict_to_nvlist_to_dict(props) self.assertEqual(props, res) # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/test/PaxHeaders.151519/__init__.py0000644000000000000000000000007413607166132023624 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.718043635 zfs-0.8.3/contrib/pyzfs/libzfs_core/test/__init__.py0000644016037001603700000000011513607166132023616 0ustar00hutter2hutter200000000000000# `make distclean` deletes files with size 0. This comment is to avoid that. zfs-0.8.3/contrib/pyzfs/libzfs_core/test/PaxHeaders.151519/test_libzfs_core.py0000644000000000000000000000007413612141512025414 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/test/test_libzfs_core.py0000644016037001603700000047311713612141512025426 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Tests for `libzfs_core` operations. These are mostly functional and conformance tests that validate that the operations produce expected effects or fail with expected exceptions. """ from __future__ import absolute_import, division, print_function import unittest import contextlib import errno import filecmp import os import platform import resource import shutil import stat import subprocess import sys import tempfile import time import uuid import itertools import zlib from .. import _libzfs_core as lzc from .. import exceptions as lzc_exc from .._nvlist import packed_nvlist_out def _print(*args): for arg in args: print(arg, end=' ') print() @contextlib.contextmanager def suppress(exceptions=None): try: yield except BaseException as e: if exceptions is None or isinstance(e, exceptions): pass else: raise @contextlib.contextmanager def _zfs_mount(fs): mntdir = tempfile.mkdtemp() if platform.system() == 'SunOS': mount_cmd = ['mount', '-F', 'zfs', fs, mntdir] else: mount_cmd = ['mount', '-t', 'zfs', fs, mntdir] unmount_cmd = ['umount', '-f', mntdir] try: subprocess.check_output(mount_cmd, stderr=subprocess.STDOUT) try: yield mntdir finally: with suppress(): subprocess.check_output(unmount_cmd, stderr=subprocess.STDOUT) except subprocess.CalledProcessError as e: print('failed to mount %s @ %s : %s' % (fs, mntdir, e.output)) raise finally: os.rmdir(mntdir) # XXX On illumos it is impossible to explicitly mount a snapshot. # So, either we need to implicitly mount it using .zfs/snapshot/ # or we need to create a clone and mount it readonly (and discard # it afterwards). # At the moment the former approach is implemented. # This dictionary is used to keep track of mounted filesystems # (not snapshots), so that we do not try to mount a filesystem # more than once in the case more than one snapshot of the # filesystem is accessed from the same context or the filesystem # and its snapshot are accessed. _mnttab = {} @contextlib.contextmanager def _illumos_mount_fs(fs): if fs in _mnttab: yield _mnttab[fs] else: with _zfs_mount(fs) as mntdir: _mnttab[fs] = mntdir try: yield mntdir finally: _mnttab.pop(fs, None) @contextlib.contextmanager def _illumos_mount_snap(fs): (base, snap) = fs.split('@', 1) with _illumos_mount_fs(base) as mntdir: yield os.path.join(mntdir, '.zfs', 'snapshot', snap) @contextlib.contextmanager def _zfs_mount_illumos(fs): if '@' not in fs: with _illumos_mount_fs(fs) as mntdir: yield mntdir else: with _illumos_mount_snap(fs) as mntdir: yield mntdir if platform.system() == 'SunOS': zfs_mount = _zfs_mount_illumos else: zfs_mount = _zfs_mount @contextlib.contextmanager def cleanup_fd(): fd = os.open('/dev/zfs', os.O_EXCL) try: yield fd finally: os.close(fd) @contextlib.contextmanager def os_open(name, mode): fd = os.open(name, mode) try: yield fd finally: os.close(fd) @contextlib.contextmanager def dev_null(): with os_open('/dev/null', os.O_WRONLY) as fd: yield fd @contextlib.contextmanager def dev_zero(): with os_open('/dev/zero', os.O_RDONLY) as fd: yield fd @contextlib.contextmanager def temp_file_in_fs(fs): with zfs_mount(fs) as mntdir: with tempfile.NamedTemporaryFile(dir=mntdir) as f: for i in range(1024): f.write(b'x' * 1024) f.flush() yield f.name def make_snapshots(fs, before, modified, after): def _maybe_snap(snap): if snap is not None: if not snap.startswith(fs): snap = fs + b'@' + snap lzc.lzc_snapshot([snap]) return snap before = _maybe_snap(before) with temp_file_in_fs(fs) as name: modified = _maybe_snap(modified) after = _maybe_snap(after) return (name, (before, modified, after)) @contextlib.contextmanager def streams(fs, first, second): (filename, snaps) = make_snapshots(fs, None, first, second) with tempfile.TemporaryFile(suffix='.zstream') as full: lzc.lzc_send(snaps[1], None, full.fileno()) full.seek(0) if snaps[2] is not None: with tempfile.TemporaryFile(suffix='.zstream') as incremental: lzc.lzc_send(snaps[2], snaps[1], incremental.fileno()) incremental.seek(0) yield (filename, (full, incremental)) else: yield (filename, (full, None)) @contextlib.contextmanager def encrypted_filesystem(): fs = ZFSTest.pool.getFilesystem(b"encrypted") name = fs.getName() filename = None key = os.urandom(lzc.WRAPPING_KEY_LEN) with tempfile.NamedTemporaryFile() as f: filename = "file://" + f.name props = { b"encryption": lzc.zio_encrypt.ZIO_CRYPT_AES_256_CCM, b"keylocation": filename.encode(), b"keyformat": lzc.zfs_keyformat.ZFS_KEYFORMAT_RAW, } lzc.lzc_create(name, 'zfs', props=props, key=key) yield (name, key) def runtimeSkipIf(check_method, message): def _decorator(f): def _f(_self, *args, **kwargs): if check_method(_self): return _self.skipTest(message) else: return f(_self, *args, **kwargs) _f.__name__ = f.__name__ return _f return _decorator def skipIfFeatureAvailable(feature, message): return runtimeSkipIf( lambda _self: _self.__class__.pool.isPoolFeatureAvailable(feature), message) def skipUnlessFeatureEnabled(feature, message): return runtimeSkipIf( lambda _self: not _self.__class__.pool.isPoolFeatureEnabled(feature), message) def skipUnlessBookmarksSupported(f): return skipUnlessFeatureEnabled( 'bookmarks', 'bookmarks are not enabled')(f) def snap_always_unmounted_before_destruction(): # Apparently ZoL automatically unmounts the snapshot # only if it is mounted at its default .zfs/snapshot # mountpoint. return ( platform.system() != 'Linux', 'snapshot is not auto-unmounted') def illumos_bug_6379(): # zfs_ioc_hold() panics on a bad cleanup fd return ( platform.system() == 'SunOS', 'see https://www.illumos.org/issues/6379') def needs_support(function): return unittest.skipUnless( lzc.is_supported(function), '{} not available'.format(function.__name__)) class ZFSTest(unittest.TestCase): POOL_FILE_SIZE = 128 * 1024 * 1024 FILESYSTEMS = [b'fs1', b'fs2', b'fs1/fs'] pool = None misc_pool = None readonly_pool = None @classmethod def setUpClass(cls): try: cls.pool = _TempPool(filesystems=cls.FILESYSTEMS) cls.misc_pool = _TempPool() cls.readonly_pool = _TempPool( filesystems=cls.FILESYSTEMS, readonly=True) cls.pools = [cls.pool, cls.misc_pool, cls.readonly_pool] except Exception: cls._cleanUp() raise @classmethod def tearDownClass(cls): cls._cleanUp() @classmethod def _cleanUp(cls): for pool in [cls.pool, cls.misc_pool, cls.readonly_pool]: if pool is not None: pool.cleanUp() def setUp(self): pass def tearDown(self): for pool in ZFSTest.pools: pool.reset() def assertExists(self, name): self.assertTrue( lzc.lzc_exists(name), 'ZFS dataset %s does not exist' % (name, )) def assertNotExists(self, name): self.assertFalse( lzc.lzc_exists(name), 'ZFS dataset %s exists' % (name, )) def test_exists(self): self.assertExists(ZFSTest.pool.makeName()) def test_exists_in_ro_pool(self): self.assertExists(ZFSTest.readonly_pool.makeName()) def test_exists_failure(self): self.assertNotExists(ZFSTest.pool.makeName(b'nonexistent')) def test_create_fs(self): name = ZFSTest.pool.makeName(b"fs1/fs/test1") lzc.lzc_create(name) self.assertExists(name) def test_create_zvol(self): name = ZFSTest.pool.makeName(b"fs1/fs/zvol") props = {b"volsize": 1024 * 1024} lzc.lzc_create(name, ds_type='zvol', props=props) self.assertExists(name) # On Gentoo with ZFS 0.6.5.4 the volume is busy # and can not be destroyed right after its creation. # A reason for this is unknown at the moment. # Because of that the post-test clean up could fail. time.sleep(0.1) def test_create_fs_with_prop(self): name = ZFSTest.pool.makeName(b"fs1/fs/test2") props = {b"atime": 0} lzc.lzc_create(name, props=props) self.assertExists(name) def test_create_fs_wrong_ds_type(self): name = ZFSTest.pool.makeName(b"fs1/fs/test1") with self.assertRaises(lzc_exc.DatasetTypeInvalid): lzc.lzc_create(name, ds_type='wrong') def test_create_fs_below_zvol(self): name = ZFSTest.pool.makeName(b"fs1/fs/zvol") props = {b"volsize": 1024 * 1024} lzc.lzc_create(name, ds_type='zvol', props=props) with self.assertRaises(lzc_exc.WrongParent): lzc.lzc_create(name + b'/fs') def test_create_zvol_below_zvol(self): name = ZFSTest.pool.makeName(b"fs1/fs/zvol") props = {b"volsize": 1024 * 1024} lzc.lzc_create(name, ds_type='zvol', props=props) with self.assertRaises(lzc_exc.WrongParent): lzc.lzc_create(name + b'/zvol', ds_type='zvol', props=props) def test_create_fs_duplicate(self): name = ZFSTest.pool.makeName(b"fs1/fs/test6") lzc.lzc_create(name) with self.assertRaises(lzc_exc.FilesystemExists): lzc.lzc_create(name) def test_create_fs_in_ro_pool(self): name = ZFSTest.readonly_pool.makeName(b"fs") with self.assertRaises(lzc_exc.ReadOnlyPool): lzc.lzc_create(name) def test_create_fs_without_parent(self): name = ZFSTest.pool.makeName(b"fs1/nonexistent/test") with self.assertRaises(lzc_exc.ParentNotFound): lzc.lzc_create(name) self.assertNotExists(name) def test_create_fs_in_nonexistent_pool(self): name = b"no-such-pool/fs" with self.assertRaises(lzc_exc.ParentNotFound): lzc.lzc_create(name) self.assertNotExists(name) def test_create_fs_with_invalid_prop(self): name = ZFSTest.pool.makeName(b"fs1/fs/test3") props = {b"BOGUS": 0} with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_create(name, 'zfs', props) self.assertNotExists(name) def test_create_fs_with_invalid_prop_type(self): name = ZFSTest.pool.makeName(b"fs1/fs/test4") props = {b"recordsize": b"128k"} with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_create(name, 'zfs', props) self.assertNotExists(name) def test_create_fs_with_invalid_prop_val(self): name = ZFSTest.pool.makeName(b"fs1/fs/test5") props = {b"atime": 20} with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_create(name, 'zfs', props) self.assertNotExists(name) def test_create_fs_with_invalid_name(self): name = ZFSTest.pool.makeName(b"@badname") with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_create(name) self.assertNotExists(name) def test_create_fs_with_invalid_pool_name(self): name = b"bad!pool/fs" with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_create(name) self.assertNotExists(name) def test_create_encrypted_fs(self): fs = ZFSTest.pool.getFilesystem(b"encrypted") name = fs.getName() filename = None with tempfile.NamedTemporaryFile() as f: filename = "file://" + f.name props = { b"encryption": lzc.zio_encrypt.ZIO_CRYPT_AES_256_CCM, b"keylocation": filename.encode(), b"keyformat": lzc.zfs_keyformat.ZFS_KEYFORMAT_RAW, } key = os.urandom(lzc.WRAPPING_KEY_LEN) lzc.lzc_create(name, 'zfs', props=props, key=key) self.assertEqual(fs.getProperty("encryption"), b"aes-256-ccm") self.assertEqual(fs.getProperty("encryptionroot"), name) self.assertEqual(fs.getProperty("keylocation"), filename.encode()) self.assertEqual(fs.getProperty("keyformat"), b"raw") def test_snapshot(self): snapname = ZFSTest.pool.makeName(b"@snap") snaps = [snapname] lzc.lzc_snapshot(snaps) self.assertExists(snapname) def test_snapshot_empty_list(self): lzc.lzc_snapshot([]) def test_snapshot_user_props(self): snapname = ZFSTest.pool.makeName(b"@snap") snaps = [snapname] props = {b"user:foo": b"bar"} lzc.lzc_snapshot(snaps, props) self.assertExists(snapname) def test_snapshot_invalid_props(self): snapname = ZFSTest.pool.makeName(b"@snap") snaps = [snapname] props = {b"foo": b"bar"} with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps, props) self.assertEqual(len(ctx.exception.errors), len(snaps)) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.PropertyInvalid) self.assertNotExists(snapname) def test_snapshot_ro_pool(self): snapname1 = ZFSTest.readonly_pool.makeName(b"@snap") snapname2 = ZFSTest.readonly_pool.makeName(b"fs1@snap") snaps = [snapname1, snapname2] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) # NB: one common error is reported. self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.ReadOnlyPool) self.assertNotExists(snapname1) self.assertNotExists(snapname2) def test_snapshot_nonexistent_pool(self): snapname = b"no-such-pool@snap" snaps = [snapname] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.FilesystemNotFound) def test_snapshot_nonexistent_fs(self): snapname = ZFSTest.pool.makeName(b"nonexistent@snap") snaps = [snapname] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.FilesystemNotFound) def test_snapshot_nonexistent_and_existent_fs(self): snapname1 = ZFSTest.pool.makeName(b"@snap") snapname2 = ZFSTest.pool.makeName(b"nonexistent@snap") snaps = [snapname1, snapname2] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.FilesystemNotFound) self.assertNotExists(snapname1) self.assertNotExists(snapname2) def test_multiple_snapshots_nonexistent_fs(self): snapname1 = ZFSTest.pool.makeName(b"nonexistent@snap1") snapname2 = ZFSTest.pool.makeName(b"nonexistent@snap2") snaps = [snapname1, snapname2] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) # XXX two errors should be reported but alas self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.DuplicateSnapshots) self.assertNotExists(snapname1) self.assertNotExists(snapname2) def test_multiple_snapshots_multiple_nonexistent_fs(self): snapname1 = ZFSTest.pool.makeName(b"nonexistent1@snap") snapname2 = ZFSTest.pool.makeName(b"nonexistent2@snap") snaps = [snapname1, snapname2] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) self.assertEqual(len(ctx.exception.errors), 2) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.FilesystemNotFound) self.assertNotExists(snapname1) self.assertNotExists(snapname2) def test_snapshot_already_exists(self): snapname = ZFSTest.pool.makeName(b"@snap") snaps = [snapname] lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.SnapshotExists) def test_multiple_snapshots_for_same_fs(self): snapname1 = ZFSTest.pool.makeName(b"@snap1") snapname2 = ZFSTest.pool.makeName(b"@snap2") snaps = [snapname1, snapname2] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.DuplicateSnapshots) self.assertNotExists(snapname1) self.assertNotExists(snapname2) def test_multiple_snapshots(self): snapname1 = ZFSTest.pool.makeName(b"@snap") snapname2 = ZFSTest.pool.makeName(b"fs1@snap") snaps = [snapname1, snapname2] lzc.lzc_snapshot(snaps) self.assertExists(snapname1) self.assertExists(snapname2) def test_multiple_existing_snapshots(self): snapname1 = ZFSTest.pool.makeName(b"@snap") snapname2 = ZFSTest.pool.makeName(b"fs1@snap") snaps = [snapname1, snapname2] lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) self.assertEqual(len(ctx.exception.errors), 2) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.SnapshotExists) def test_multiple_new_and_existing_snapshots(self): snapname1 = ZFSTest.pool.makeName(b"@snap") snapname2 = ZFSTest.pool.makeName(b"fs1@snap") snapname3 = ZFSTest.pool.makeName(b"fs2@snap") snaps = [snapname1, snapname2] more_snaps = snaps + [snapname3] lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(more_snaps) self.assertEqual(len(ctx.exception.errors), 2) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.SnapshotExists) self.assertNotExists(snapname3) def test_snapshot_multiple_errors(self): snapname1 = ZFSTest.pool.makeName(b"@snap") snapname2 = ZFSTest.pool.makeName(b"nonexistent@snap") snapname3 = ZFSTest.pool.makeName(b"fs1@snap") snaps = [snapname1] more_snaps = [snapname1, snapname2, snapname3] # create 'snapname1' snapshot lzc.lzc_snapshot(snaps) # attempt to create 3 snapshots: # 1. duplicate snapshot name # 2. refers to filesystem that doesn't exist # 3. could have succeeded if not for 1 and 2 with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(more_snaps) # It seems that FilesystemNotFound overrides the other error, # but it doesn't have to. self.assertGreater(len(ctx.exception.errors), 0) for e in ctx.exception.errors: self.assertIsInstance( e, (lzc_exc.SnapshotExists, lzc_exc.FilesystemNotFound)) self.assertNotExists(snapname2) self.assertNotExists(snapname3) def test_snapshot_different_pools(self): snapname1 = ZFSTest.pool.makeName(b"@snap") snapname2 = ZFSTest.misc_pool.makeName(b"@snap") snaps = [snapname1, snapname2] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) # NB: one common error is reported. self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.PoolsDiffer) self.assertNotExists(snapname1) self.assertNotExists(snapname2) def test_snapshot_different_pools_ro_pool(self): snapname1 = ZFSTest.pool.makeName(b"@snap") snapname2 = ZFSTest.readonly_pool.makeName(b"@snap") snaps = [snapname1, snapname2] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) # NB: one common error is reported. self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: # NB: depending on whether the first attempted snapshot is # for the read-only pool a different error is reported. self.assertIsInstance( e, (lzc_exc.PoolsDiffer, lzc_exc.ReadOnlyPool)) self.assertNotExists(snapname1) self.assertNotExists(snapname2) def test_snapshot_invalid_name(self): snapname1 = ZFSTest.pool.makeName(b"@bad&name") snapname2 = ZFSTest.pool.makeName(b"fs1@bad*name") snapname3 = ZFSTest.pool.makeName(b"fs2@snap") snaps = [snapname1, snapname2, snapname3] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) # NB: one common error is reported. self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameInvalid) self.assertIsNone(e.name) def test_snapshot_too_long_complete_name(self): snapname1 = ZFSTest.pool.makeTooLongName(b"fs1@") snapname2 = ZFSTest.pool.makeTooLongName(b"fs2@") snapname3 = ZFSTest.pool.makeName(b"@snap") snaps = [snapname1, snapname2, snapname3] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) self.assertEqual(len(ctx.exception.errors), 2) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) self.assertIsNotNone(e.name) def test_snapshot_too_long_snap_name(self): snapname1 = ZFSTest.pool.makeTooLongComponent(b"fs1@") snapname2 = ZFSTest.pool.makeTooLongComponent(b"fs2@") snapname3 = ZFSTest.pool.makeName(b"@snap") snaps = [snapname1, snapname2, snapname3] with self.assertRaises(lzc_exc.SnapshotFailure) as ctx: lzc.lzc_snapshot(snaps) # NB: one common error is reported. self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) self.assertIsNone(e.name) def test_destroy_nonexistent_snapshot(self): lzc.lzc_destroy_snaps([ZFSTest.pool.makeName(b"@nonexistent")], False) lzc.lzc_destroy_snaps([ZFSTest.pool.makeName(b"@nonexistent")], True) def test_destroy_snapshot_of_nonexistent_pool(self): with self.assertRaises(lzc_exc.SnapshotDestructionFailure) as ctx: lzc.lzc_destroy_snaps([b"no-such-pool@snap"], False) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.PoolNotFound) with self.assertRaises(lzc_exc.SnapshotDestructionFailure) as ctx: lzc.lzc_destroy_snaps([b"no-such-pool@snap"], True) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.PoolNotFound) # NB: note the difference from the nonexistent pool test. def test_destroy_snapshot_of_nonexistent_fs(self): lzc.lzc_destroy_snaps( [ZFSTest.pool.makeName(b"nonexistent@snap")], False) lzc.lzc_destroy_snaps( [ZFSTest.pool.makeName(b"nonexistent@snap")], True) # Apparently the name is not checked for validity. @unittest.expectedFailure def test_destroy_invalid_snap_name(self): with self.assertRaises(lzc_exc.SnapshotDestructionFailure): lzc.lzc_destroy_snaps( [ZFSTest.pool.makeName(b"@non$&*existent")], False) with self.assertRaises(lzc_exc.SnapshotDestructionFailure): lzc.lzc_destroy_snaps( [ZFSTest.pool.makeName(b"@non$&*existent")], True) # Apparently the full name is not checked for length. @unittest.expectedFailure def test_destroy_too_long_full_snap_name(self): snapname1 = ZFSTest.pool.makeTooLongName(b"fs1@") snaps = [snapname1] with self.assertRaises(lzc_exc.SnapshotDestructionFailure): lzc.lzc_destroy_snaps(snaps, False) with self.assertRaises(lzc_exc.SnapshotDestructionFailure): lzc.lzc_destroy_snaps(snaps, True) def test_destroy_too_long_short_snap_name(self): snapname1 = ZFSTest.pool.makeTooLongComponent(b"fs1@") snapname2 = ZFSTest.pool.makeTooLongComponent(b"fs2@") snapname3 = ZFSTest.pool.makeName(b"@snap") snaps = [snapname1, snapname2, snapname3] with self.assertRaises(lzc_exc.SnapshotDestructionFailure) as ctx: lzc.lzc_destroy_snaps(snaps, False) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) @unittest.skipUnless(*snap_always_unmounted_before_destruction()) def test_destroy_mounted_snap(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with zfs_mount(snap): # the snapshot should be force-unmounted lzc.lzc_destroy_snaps([snap], defer=False) self.assertNotExists(snap) def test_clone(self): # NB: note the special name for the snapshot. # Since currently we can not destroy filesystems, # it would be impossible to destroy the snapshot, # so no point in attempting to clean it up. snapname = ZFSTest.pool.makeName(b"fs2@origin1") name = ZFSTest.pool.makeName(b"fs1/fs/clone1") lzc.lzc_snapshot([snapname]) lzc.lzc_clone(name, snapname) self.assertExists(name) def test_clone_nonexistent_snapshot(self): snapname = ZFSTest.pool.makeName(b"fs2@nonexistent") name = ZFSTest.pool.makeName(b"fs1/fs/clone2") # XXX The error should be SnapshotNotFound # but limitations of C interface do not allow # to differentiate between the errors. with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_clone_nonexistent_parent_fs(self): snapname = ZFSTest.pool.makeName(b"fs2@origin3") name = ZFSTest.pool.makeName(b"fs1/nonexistent/clone3") lzc.lzc_snapshot([snapname]) with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_clone_to_nonexistent_pool(self): snapname = ZFSTest.pool.makeName(b"fs2@snap") name = b"no-such-pool/fs" lzc.lzc_snapshot([snapname]) with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_clone_invalid_snap_name(self): # Use a valid filesystem name of filesystem that # exists as a snapshot name snapname = ZFSTest.pool.makeName(b"fs1/fs") name = ZFSTest.pool.makeName(b"fs2/clone") with self.assertRaises(lzc_exc.SnapshotNameInvalid): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_clone_invalid_snap_name_2(self): # Use a valid filesystem name of filesystem that # doesn't exist as a snapshot name snapname = ZFSTest.pool.makeName(b"fs1/nonexistent") name = ZFSTest.pool.makeName(b"fs2/clone") with self.assertRaises(lzc_exc.SnapshotNameInvalid): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_clone_invalid_name(self): snapname = ZFSTest.pool.makeName(b"fs2@snap") name = ZFSTest.pool.makeName(b"fs1/bad#name") lzc.lzc_snapshot([snapname]) with self.assertRaises(lzc_exc.FilesystemNameInvalid): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_clone_invalid_pool_name(self): snapname = ZFSTest.pool.makeName(b"fs2@snap") name = b"bad!pool/fs1" lzc.lzc_snapshot([snapname]) with self.assertRaises(lzc_exc.FilesystemNameInvalid): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_clone_across_pools(self): snapname = ZFSTest.pool.makeName(b"fs2@snap") name = ZFSTest.misc_pool.makeName(b"clone1") lzc.lzc_snapshot([snapname]) with self.assertRaises(lzc_exc.PoolsDiffer): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_clone_across_pools_to_ro_pool(self): snapname = ZFSTest.pool.makeName(b"fs2@snap") name = ZFSTest.readonly_pool.makeName(b"fs1/clone1") lzc.lzc_snapshot([snapname]) # it's legal to report either of the conditions with self.assertRaises((lzc_exc.ReadOnlyPool, lzc_exc.PoolsDiffer)): lzc.lzc_clone(name, snapname) self.assertNotExists(name) def test_destroy_cloned_fs(self): snapname1 = ZFSTest.pool.makeName(b"fs2@origin4") snapname2 = ZFSTest.pool.makeName(b"fs1@snap") clonename = ZFSTest.pool.makeName(b"fs1/fs/clone4") snaps = [snapname1, snapname2] lzc.lzc_snapshot(snaps) lzc.lzc_clone(clonename, snapname1) with self.assertRaises(lzc_exc.SnapshotDestructionFailure) as ctx: lzc.lzc_destroy_snaps(snaps, False) self.assertEqual(len(ctx.exception.errors), 1) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.SnapshotIsCloned) for snap in snaps: self.assertExists(snap) def test_deferred_destroy_cloned_fs(self): snapname1 = ZFSTest.pool.makeName(b"fs2@origin5") snapname2 = ZFSTest.pool.makeName(b"fs1@snap") clonename = ZFSTest.pool.makeName(b"fs1/fs/clone5") snaps = [snapname1, snapname2] lzc.lzc_snapshot(snaps) lzc.lzc_clone(clonename, snapname1) lzc.lzc_destroy_snaps(snaps, defer=True) self.assertExists(snapname1) self.assertNotExists(snapname2) def test_rollback(self): name = ZFSTest.pool.makeName(b"fs1") snapname = name + b"@snap" lzc.lzc_snapshot([snapname]) ret = lzc.lzc_rollback(name) self.assertEqual(ret, snapname) def test_rollback_2(self): name = ZFSTest.pool.makeName(b"fs1") snapname1 = name + b"@snap1" snapname2 = name + b"@snap2" lzc.lzc_snapshot([snapname1]) lzc.lzc_snapshot([snapname2]) ret = lzc.lzc_rollback(name) self.assertEqual(ret, snapname2) def test_rollback_no_snaps(self): name = ZFSTest.pool.makeName(b"fs1") with self.assertRaises(lzc_exc.SnapshotNotFound): lzc.lzc_rollback(name) def test_rollback_non_existent_fs(self): name = ZFSTest.pool.makeName(b"nonexistent") with self.assertRaises(lzc_exc.FilesystemNotFound): lzc.lzc_rollback(name) def test_rollback_invalid_fs_name(self): name = ZFSTest.pool.makeName(b"bad~name") with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_rollback(name) def test_rollback_snap_name(self): name = ZFSTest.pool.makeName(b"fs1@snap") with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_rollback(name) def test_rollback_snap_name_2(self): name = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([name]) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_rollback(name) def test_rollback_too_long_fs_name(self): name = ZFSTest.pool.makeTooLongName() with self.assertRaises(lzc_exc.NameTooLong): lzc.lzc_rollback(name) def test_rollback_to_snap_name(self): name = ZFSTest.pool.makeName(b"fs1") snap = name + b"@snap" lzc.lzc_snapshot([snap]) lzc.lzc_rollback_to(name, snap) def test_rollback_to_not_latest(self): fsname = ZFSTest.pool.makeName(b'fs1') snap1 = fsname + b"@snap1" snap2 = fsname + b"@snap2" lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with self.assertRaises(lzc_exc.SnapshotNotLatest): lzc.lzc_rollback_to(fsname, fsname + b"@snap1") @skipUnlessBookmarksSupported def test_bookmarks(self): snaps = [ZFSTest.pool.makeName( b'fs1@snap1'), ZFSTest.pool.makeName(b'fs2@snap1')] bmarks = [ZFSTest.pool.makeName( b'fs1#bmark1'), ZFSTest.pool.makeName(b'fs2#bmark1')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) lzc.lzc_bookmark(bmark_dict) @skipUnlessBookmarksSupported def test_bookmarks_2(self): snaps = [ZFSTest.pool.makeName( b'fs1@snap1'), ZFSTest.pool.makeName(b'fs2@snap1')] bmarks = [ZFSTest.pool.makeName( b'fs1#bmark1'), ZFSTest.pool.makeName(b'fs2#bmark1')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) lzc.lzc_bookmark(bmark_dict) lzc.lzc_destroy_snaps(snaps, defer=False) @skipUnlessBookmarksSupported def test_bookmarks_empty(self): lzc.lzc_bookmark({}) @skipUnlessBookmarksSupported def test_bookmarks_mismatching_name(self): snaps = [ZFSTest.pool.makeName(b'fs1@snap1')] bmarks = [ZFSTest.pool.makeName(b'fs2#bmark1')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.BookmarkMismatch) @skipUnlessBookmarksSupported def test_bookmarks_invalid_name(self): snaps = [ZFSTest.pool.makeName(b'fs1@snap1')] bmarks = [ZFSTest.pool.makeName(b'fs1#bmark!')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameInvalid) @skipUnlessBookmarksSupported def test_bookmarks_invalid_name_2(self): snaps = [ZFSTest.pool.makeName(b'fs1@snap1')] bmarks = [ZFSTest.pool.makeName(b'fs1@bmark')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameInvalid) @skipUnlessBookmarksSupported def test_bookmarks_too_long_name(self): snaps = [ZFSTest.pool.makeName(b'fs1@snap1')] bmarks = [ZFSTest.pool.makeTooLongName(b'fs1#')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) @skipUnlessBookmarksSupported def test_bookmarks_too_long_name_2(self): snaps = [ZFSTest.pool.makeName(b'fs1@snap1')] bmarks = [ZFSTest.pool.makeTooLongComponent(b'fs1#')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) @skipUnlessBookmarksSupported def test_bookmarks_mismatching_names(self): snaps = [ZFSTest.pool.makeName( b'fs1@snap1'), ZFSTest.pool.makeName(b'fs2@snap1')] bmarks = [ZFSTest.pool.makeName( b'fs2#bmark1'), ZFSTest.pool.makeName(b'fs1#bmark1')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.BookmarkMismatch) @skipUnlessBookmarksSupported def test_bookmarks_partially_mismatching_names(self): snaps = [ZFSTest.pool.makeName( b'fs1@snap1'), ZFSTest.pool.makeName(b'fs2@snap1')] bmarks = [ZFSTest.pool.makeName( b'fs2#bmark'), ZFSTest.pool.makeName(b'fs2#bmark1')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.BookmarkMismatch) @skipUnlessBookmarksSupported def test_bookmarks_cross_pool(self): snaps = [ZFSTest.pool.makeName( b'fs1@snap1'), ZFSTest.misc_pool.makeName(b'@snap1')] bmarks = [ZFSTest.pool.makeName( b'fs1#bmark1'), ZFSTest.misc_pool.makeName(b'#bmark1')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps[0:1]) lzc.lzc_snapshot(snaps[1:2]) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.PoolsDiffer) @skipUnlessBookmarksSupported def test_bookmarks_missing_snap(self): snaps = [ZFSTest.pool.makeName( b'fs1@snap1'), ZFSTest.pool.makeName(b'fs2@snap1')] bmarks = [ZFSTest.pool.makeName( b'fs1#bmark1'), ZFSTest.pool.makeName(b'fs2#bmark1')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} lzc.lzc_snapshot(snaps[0:1]) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.SnapshotNotFound) @skipUnlessBookmarksSupported def test_bookmarks_missing_snaps(self): snaps = [ZFSTest.pool.makeName( b'fs1@snap1'), ZFSTest.pool.makeName(b'fs2@snap1')] bmarks = [ZFSTest.pool.makeName( b'fs1#bmark1'), ZFSTest.pool.makeName(b'fs2#bmark1')] bmark_dict = {x: y for x, y in zip(bmarks, snaps)} with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.SnapshotNotFound) @skipUnlessBookmarksSupported def test_bookmarks_for_the_same_snap(self): snap = ZFSTest.pool.makeName(b'fs1@snap1') bmark1 = ZFSTest.pool.makeName(b'fs1#bmark1') bmark2 = ZFSTest.pool.makeName(b'fs1#bmark2') bmark_dict = {bmark1: snap, bmark2: snap} lzc.lzc_snapshot([snap]) lzc.lzc_bookmark(bmark_dict) @skipUnlessBookmarksSupported def test_bookmarks_for_the_same_snap_2(self): snap = ZFSTest.pool.makeName(b'fs1@snap1') bmark1 = ZFSTest.pool.makeName(b'fs1#bmark1') bmark2 = ZFSTest.pool.makeName(b'fs1#bmark2') bmark_dict1 = {bmark1: snap} bmark_dict2 = {bmark2: snap} lzc.lzc_snapshot([snap]) lzc.lzc_bookmark(bmark_dict1) lzc.lzc_bookmark(bmark_dict2) @skipUnlessBookmarksSupported def test_bookmarks_duplicate_name(self): snap1 = ZFSTest.pool.makeName(b'fs1@snap1') snap2 = ZFSTest.pool.makeName(b'fs1@snap2') bmark = ZFSTest.pool.makeName(b'fs1#bmark') bmark_dict1 = {bmark: snap1} bmark_dict2 = {bmark: snap2} lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) lzc.lzc_bookmark(bmark_dict1) with self.assertRaises(lzc_exc.BookmarkFailure) as ctx: lzc.lzc_bookmark(bmark_dict2) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.BookmarkExists) @skipUnlessBookmarksSupported def test_get_bookmarks(self): snap1 = ZFSTest.pool.makeName(b'fs1@snap1') snap2 = ZFSTest.pool.makeName(b'fs1@snap2') bmark = ZFSTest.pool.makeName(b'fs1#bmark') bmark1 = ZFSTest.pool.makeName(b'fs1#bmark1') bmark2 = ZFSTest.pool.makeName(b'fs1#bmark2') bmark_dict1 = {bmark1: snap1, bmark2: snap2} bmark_dict2 = {bmark: snap2} lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) lzc.lzc_bookmark(bmark_dict1) lzc.lzc_bookmark(bmark_dict2) lzc.lzc_destroy_snaps([snap1, snap2], defer=False) bmarks = lzc.lzc_get_bookmarks(ZFSTest.pool.makeName(b'fs1')) self.assertEqual(len(bmarks), 3) for b in b'bmark', b'bmark1', b'bmark2': self.assertIn(b, bmarks) self.assertIsInstance(bmarks[b], dict) self.assertEqual(len(bmarks[b]), 0) bmarks = lzc.lzc_get_bookmarks(ZFSTest.pool.makeName(b'fs1'), [b'guid', b'createtxg', b'creation']) self.assertEqual(len(bmarks), 3) for b in b'bmark', b'bmark1', b'bmark2': self.assertIn(b, bmarks) self.assertIsInstance(bmarks[b], dict) self.assertEqual(len(bmarks[b]), 3) @skipUnlessBookmarksSupported def test_get_bookmarks_invalid_property(self): snap = ZFSTest.pool.makeName(b'fs1@snap') bmark = ZFSTest.pool.makeName(b'fs1#bmark') bmark_dict = {bmark: snap} lzc.lzc_snapshot([snap]) lzc.lzc_bookmark(bmark_dict) bmarks = lzc.lzc_get_bookmarks( ZFSTest.pool.makeName(b'fs1'), [b'badprop']) self.assertEqual(len(bmarks), 1) for b in (b'bmark', ): self.assertIn(b, bmarks) self.assertIsInstance(bmarks[b], dict) self.assertEqual(len(bmarks[b]), 0) @skipUnlessBookmarksSupported def test_get_bookmarks_nonexistent_fs(self): with self.assertRaises(lzc_exc.FilesystemNotFound): lzc.lzc_get_bookmarks(ZFSTest.pool.makeName(b'nonexistent')) @skipUnlessBookmarksSupported def test_destroy_bookmarks(self): snap = ZFSTest.pool.makeName(b'fs1@snap') bmark = ZFSTest.pool.makeName(b'fs1#bmark') bmark_dict = {bmark: snap} lzc.lzc_snapshot([snap]) lzc.lzc_bookmark(bmark_dict) lzc.lzc_destroy_bookmarks( [bmark, ZFSTest.pool.makeName(b'fs1#nonexistent')]) bmarks = lzc.lzc_get_bookmarks(ZFSTest.pool.makeName(b'fs1')) self.assertEqual(len(bmarks), 0) @skipUnlessBookmarksSupported def test_destroy_bookmarks_invalid_name(self): snap = ZFSTest.pool.makeName(b'fs1@snap') bmark = ZFSTest.pool.makeName(b'fs1#bmark') bmark_dict = {bmark: snap} lzc.lzc_snapshot([snap]) lzc.lzc_bookmark(bmark_dict) with self.assertRaises(lzc_exc.BookmarkDestructionFailure) as ctx: lzc.lzc_destroy_bookmarks( [bmark, ZFSTest.pool.makeName(b'fs1/nonexistent')]) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameInvalid) bmarks = lzc.lzc_get_bookmarks(ZFSTest.pool.makeName(b'fs1')) self.assertEqual(len(bmarks), 1) self.assertIn(b'bmark', bmarks) @skipUnlessBookmarksSupported def test_destroy_bookmark_nonexistent_fs(self): lzc.lzc_destroy_bookmarks( [ZFSTest.pool.makeName(b'nonexistent#bmark')]) @skipUnlessBookmarksSupported def test_destroy_bookmarks_empty(self): lzc.lzc_bookmark({}) def test_snaprange_space(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") snap3 = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) lzc.lzc_snapshot([snap3]) space = lzc.lzc_snaprange_space(snap1, snap2) self.assertIsInstance(space, (int, int)) space = lzc.lzc_snaprange_space(snap2, snap3) self.assertIsInstance(space, (int, int)) space = lzc.lzc_snaprange_space(snap1, snap3) self.assertIsInstance(space, (int, int)) def test_snaprange_space_2(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") snap3 = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap1]) with zfs_mount(ZFSTest.pool.makeName(b"fs1")) as mntdir: with tempfile.NamedTemporaryFile(dir=mntdir) as f: for i in range(1024): f.write(b'x' * 1024) f.flush() lzc.lzc_snapshot([snap2]) lzc.lzc_snapshot([snap3]) space = lzc.lzc_snaprange_space(snap1, snap2) self.assertGreater(space, 1024 * 1024) space = lzc.lzc_snaprange_space(snap2, snap3) self.assertGreater(space, 1024 * 1024) space = lzc.lzc_snaprange_space(snap1, snap3) self.assertGreater(space, 1024 * 1024) def test_snaprange_space_same_snap(self): snap = ZFSTest.pool.makeName(b"fs1@snap") with zfs_mount(ZFSTest.pool.makeName(b"fs1")) as mntdir: with tempfile.NamedTemporaryFile(dir=mntdir) as f: for i in range(1024): f.write(b'x' * 1024) f.flush() lzc.lzc_snapshot([snap]) space = lzc.lzc_snaprange_space(snap, snap) self.assertGreater(space, 1024 * 1024) self.assertAlmostEqual(space, 1024 * 1024, delta=1024 * 1024 // 20) def test_snaprange_space_wrong_order(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with self.assertRaises(lzc_exc.SnapshotMismatch): lzc.lzc_snaprange_space(snap2, snap1) def test_snaprange_space_unrelated(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs2@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with self.assertRaises(lzc_exc.SnapshotMismatch): lzc.lzc_snaprange_space(snap1, snap2) def test_snaprange_space_across_pools(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.misc_pool.makeName(b"@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with self.assertRaises(lzc_exc.PoolsDiffer): lzc.lzc_snaprange_space(snap1, snap2) def test_snaprange_space_nonexistent(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx: lzc.lzc_snaprange_space(snap1, snap2) self.assertEqual(ctx.exception.name, snap2) with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx: lzc.lzc_snaprange_space(snap2, snap1) self.assertEqual(ctx.exception.name, snap1) def test_snaprange_space_invalid_name(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@sn#p") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_snaprange_space(snap1, snap2) def test_snaprange_space_not_snap(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_snaprange_space(snap1, snap2) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_snaprange_space(snap2, snap1) def test_snaprange_space_not_snap_2(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1#bmark") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_snaprange_space(snap1, snap2) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_snaprange_space(snap2, snap1) def test_send_space(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") snap3 = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) lzc.lzc_snapshot([snap3]) space = lzc.lzc_send_space(snap2, snap1) self.assertIsInstance(space, (int, int)) space = lzc.lzc_send_space(snap3, snap2) self.assertIsInstance(space, (int, int)) space = lzc.lzc_send_space(snap3, snap1) self.assertIsInstance(space, (int, int)) space = lzc.lzc_send_space(snap1) self.assertIsInstance(space, (int, int)) space = lzc.lzc_send_space(snap2) self.assertIsInstance(space, (int, int)) space = lzc.lzc_send_space(snap3) self.assertIsInstance(space, (int, int)) def test_send_space_2(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") snap3 = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap1]) with zfs_mount(ZFSTest.pool.makeName(b"fs1")) as mntdir: with tempfile.NamedTemporaryFile(dir=mntdir) as f: for i in range(1024): f.write(b'x' * 1024) f.flush() lzc.lzc_snapshot([snap2]) lzc.lzc_snapshot([snap3]) space = lzc.lzc_send_space(snap2, snap1) self.assertGreater(space, 1024 * 1024) space = lzc.lzc_send_space(snap3, snap2) space = lzc.lzc_send_space(snap3, snap1) space_empty = lzc.lzc_send_space(snap1) space = lzc.lzc_send_space(snap2) self.assertGreater(space, 1024 * 1024) space = lzc.lzc_send_space(snap3) self.assertEqual(space, space_empty) def test_send_space_same_snap(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.SnapshotMismatch): lzc.lzc_send_space(snap1, snap1) def test_send_space_wrong_order(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with self.assertRaises(lzc_exc.SnapshotMismatch): lzc.lzc_send_space(snap1, snap2) def test_send_space_unrelated(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs2@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with self.assertRaises(lzc_exc.SnapshotMismatch): lzc.lzc_send_space(snap1, snap2) def test_send_space_across_pools(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.misc_pool.makeName(b"@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with self.assertRaises(lzc_exc.PoolsDiffer): lzc.lzc_send_space(snap1, snap2) def test_send_space_nonexistent(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs2@snap2") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx: lzc.lzc_send_space(snap1, snap2) self.assertEqual(ctx.exception.name, snap1) with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx: lzc.lzc_send_space(snap2, snap1) self.assertEqual(ctx.exception.name, snap2) with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx: lzc.lzc_send_space(snap2) self.assertEqual(ctx.exception.name, snap2) def test_send_space_invalid_name(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@sn!p") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.NameInvalid) as ctx: lzc.lzc_send_space(snap2, snap1) self.assertEqual(ctx.exception.name, snap2) with self.assertRaises(lzc_exc.NameInvalid) as ctx: lzc.lzc_send_space(snap2) self.assertEqual(ctx.exception.name, snap2) with self.assertRaises(lzc_exc.NameInvalid) as ctx: lzc.lzc_send_space(snap1, snap2) self.assertEqual(ctx.exception.name, snap2) def test_send_space_not_snap(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_send_space(snap1, snap2) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_send_space(snap2, snap1) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_send_space(snap2) def test_send_space_not_snap_2(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1#bmark") lzc.lzc_snapshot([snap1]) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_send_space(snap2, snap1) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_send_space(snap2) def test_send_full(self): snap = ZFSTest.pool.makeName(b"fs1@snap") with zfs_mount(ZFSTest.pool.makeName(b"fs1")) as mntdir: with tempfile.NamedTemporaryFile(dir=mntdir) as f: for i in range(1024): f.write(b'x' * 1024) f.flush() lzc.lzc_snapshot([snap]) with tempfile.TemporaryFile(suffix='.zstream') as output: estimate = lzc.lzc_send_space(snap) fd = output.fileno() lzc.lzc_send(snap, None, fd) st = os.fstat(fd) # 5%, arbitrary. self.assertAlmostEqual(st.st_size, estimate, delta=estimate // 20) def test_send_incremental(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") lzc.lzc_snapshot([snap1]) with zfs_mount(ZFSTest.pool.makeName(b"fs1")) as mntdir: with tempfile.NamedTemporaryFile(dir=mntdir) as f: for i in range(1024): f.write(b'x' * 1024) f.flush() lzc.lzc_snapshot([snap2]) with tempfile.TemporaryFile(suffix='.zstream') as output: estimate = lzc.lzc_send_space(snap2, snap1) fd = output.fileno() lzc.lzc_send(snap2, snap1, fd) st = os.fstat(fd) # 5%, arbitrary. self.assertAlmostEqual(st.st_size, estimate, delta=estimate // 20) def test_send_flags(self): flags = ['embedded_data', 'large_blocks', 'compress', 'raw'] snap = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap]) for c in range(len(flags)): for flag in itertools.permutations(flags, c + 1): with dev_null() as fd: lzc.lzc_send(snap, None, fd, list(flag)) def test_send_unknown_flags(self): snap = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap]) with dev_null() as fd: with self.assertRaises(lzc_exc.UnknownStreamFeature): lzc.lzc_send(snap, None, fd, ['embedded_data', 'UNKNOWN']) def test_send_same_snap(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") lzc.lzc_snapshot([snap1]) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() with self.assertRaises(lzc_exc.SnapshotMismatch): lzc.lzc_send(snap1, snap1, fd) def test_send_wrong_order(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() with self.assertRaises(lzc_exc.SnapshotMismatch): lzc.lzc_send(snap1, snap2, fd) def test_send_unrelated(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs2@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() with self.assertRaises(lzc_exc.SnapshotMismatch): lzc.lzc_send(snap1, snap2, fd) def test_send_across_pools(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.misc_pool.makeName(b"@snap2") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() with self.assertRaises(lzc_exc.PoolsDiffer): lzc.lzc_send(snap1, snap2, fd) def test_send_nonexistent(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") lzc.lzc_snapshot([snap1]) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx: lzc.lzc_send(snap1, snap2, fd) self.assertEqual(ctx.exception.name, snap1) with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx: lzc.lzc_send(snap2, snap1, fd) self.assertEqual(ctx.exception.name, snap2) with self.assertRaises(lzc_exc.SnapshotNotFound) as ctx: lzc.lzc_send(snap2, None, fd) self.assertEqual(ctx.exception.name, snap2) def test_send_invalid_name(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@sn!p") lzc.lzc_snapshot([snap1]) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() with self.assertRaises(lzc_exc.NameInvalid) as ctx: lzc.lzc_send(snap2, snap1, fd) self.assertEqual(ctx.exception.name, snap2) with self.assertRaises(lzc_exc.NameInvalid) as ctx: lzc.lzc_send(snap2, None, fd) self.assertEqual(ctx.exception.name, snap2) with self.assertRaises(lzc_exc.NameInvalid) as ctx: lzc.lzc_send(snap1, snap2, fd) self.assertEqual(ctx.exception.name, snap2) # XXX Although undocumented the API allows to create an incremental # or full stream for a filesystem as if a temporary unnamed snapshot # is taken at some time after the call is made and before the stream # starts being produced. def test_send_filesystem(self): snap = ZFSTest.pool.makeName(b"fs1@snap1") fs = ZFSTest.pool.makeName(b"fs1") lzc.lzc_snapshot([snap]) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() lzc.lzc_send(fs, snap, fd) lzc.lzc_send(fs, None, fd) def test_send_from_filesystem(self): snap = ZFSTest.pool.makeName(b"fs1@snap1") fs = ZFSTest.pool.makeName(b"fs1") lzc.lzc_snapshot([snap]) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_send(snap, fs, fd) @skipUnlessBookmarksSupported def test_send_bookmark(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") bmark = ZFSTest.pool.makeName(b"fs1#bmark") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) lzc.lzc_bookmark({bmark: snap2}) lzc.lzc_destroy_snaps([snap2], defer=False) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_send(bmark, snap1, fd) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_send(bmark, None, fd) @skipUnlessBookmarksSupported def test_send_from_bookmark(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") bmark = ZFSTest.pool.makeName(b"fs1#bmark") lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) lzc.lzc_bookmark({bmark: snap1}) lzc.lzc_destroy_snaps([snap1], defer=False) with tempfile.TemporaryFile(suffix='.zstream') as output: fd = output.fileno() lzc.lzc_send(snap2, bmark, fd) def test_send_bad_fd(self): snap = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap]) with tempfile.TemporaryFile() as tmp: bad_fd = tmp.fileno() with self.assertRaises(lzc_exc.StreamIOError) as ctx: lzc.lzc_send(snap, None, bad_fd) self.assertEqual(ctx.exception.errno, errno.EBADF) def test_send_bad_fd_2(self): snap = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap]) with self.assertRaises(lzc_exc.StreamIOError) as ctx: lzc.lzc_send(snap, None, -2) self.assertEqual(ctx.exception.errno, errno.EBADF) def test_send_bad_fd_3(self): snap = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap]) with tempfile.TemporaryFile() as tmp: bad_fd = tmp.fileno() (soft, hard) = resource.getrlimit(resource.RLIMIT_NOFILE) bad_fd = hard + 1 with self.assertRaises(lzc_exc.StreamIOError) as ctx: lzc.lzc_send(snap, None, bad_fd) self.assertEqual(ctx.exception.errno, errno.EBADF) def test_send_to_broken_pipe(self): snap = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap]) if sys.version_info < (3, 0): proc = subprocess.Popen(['true'], stdin=subprocess.PIPE) proc.wait() with self.assertRaises(lzc_exc.StreamIOError) as ctx: lzc.lzc_send(snap, None, proc.stdin.fileno()) self.assertEqual(ctx.exception.errno, errno.EPIPE) else: with subprocess.Popen(['true'], stdin=subprocess.PIPE) as proc: proc.wait() with self.assertRaises(lzc_exc.StreamIOError) as ctx: lzc.lzc_send(snap, None, proc.stdin.fileno()) self.assertEqual(ctx.exception.errno, errno.EPIPE) def test_send_to_broken_pipe_2(self): snap = ZFSTest.pool.makeName(b"fs1@snap") with zfs_mount(ZFSTest.pool.makeName(b"fs1")) as mntdir: with tempfile.NamedTemporaryFile(dir=mntdir) as f: for i in range(1024): f.write(b'x' * 1024) f.flush() lzc.lzc_snapshot([snap]) if sys.version_info < (3, 0): p = subprocess.Popen(['sleep', '2'], stdin=subprocess.PIPE) with self.assertRaises(lzc_exc.StreamIOError) as ctx: lzc.lzc_send(snap, None, p.stdin.fileno()) self.assertTrue(ctx.exception.errno == errno.EPIPE or ctx.exception.errno == errno.EINTR) else: with subprocess.Popen(['sleep', '2'], stdin=subprocess.PIPE) as p: with self.assertRaises(lzc_exc.StreamIOError) as ctx: lzc.lzc_send(snap, None, p.stdin.fileno()) self.assertTrue(ctx.exception.errno == errno.EPIPE or ctx.exception.errno == errno.EINTR) def test_send_to_ro_file(self): snap = ZFSTest.pool.makeName(b"fs1@snap") lzc.lzc_snapshot([snap]) with tempfile.NamedTemporaryFile( suffix='.zstream', delete=False) as output: # tempfile always opens a temporary file in read-write mode # regardless of the specified mode, so we have to open it again. os.chmod(output.name, stat.S_IRUSR) fd = os.open(output.name, os.O_RDONLY) with self.assertRaises(lzc_exc.StreamIOError) as ctx: lzc.lzc_send(snap, None, fd) os.close(fd) self.assertEqual(ctx.exception.errno, errno.EBADF) def test_recv_full(self): src = ZFSTest.pool.makeName(b"fs1@snap") dst = ZFSTest.pool.makeName(b"fs2/received-1@snap") with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")) as name: lzc.lzc_snapshot([src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(dst, stream.fileno()) name = os.path.basename(name) with zfs_mount(src) as mnt1, zfs_mount(dst) as mnt2: self.assertTrue( filecmp.cmp( os.path.join(mnt1, name), os.path.join(mnt2, name), False)) def test_recv_incremental(self): src1 = ZFSTest.pool.makeName(b"fs1@snap1") src2 = ZFSTest.pool.makeName(b"fs1@snap2") dst1 = ZFSTest.pool.makeName(b"fs2/received-2@snap1") dst2 = ZFSTest.pool.makeName(b"fs2/received-2@snap2") lzc.lzc_snapshot([src1]) with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")) as name: lzc.lzc_snapshot([src2]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src1, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(dst1, stream.fileno()) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src2, src1, stream.fileno()) stream.seek(0) lzc.lzc_receive(dst2, stream.fileno()) name = os.path.basename(name) with zfs_mount(src2) as mnt1, zfs_mount(dst2) as mnt2: self.assertTrue( filecmp.cmp( os.path.join(mnt1, name), os.path.join(mnt2, name), False)) # This test case fails unless a patch from # https://clusterhq.atlassian.net/browse/ZFS-20 # is applied to libzfs_core, otherwise it succeeds. @unittest.skip("fails with unpatched libzfs_core") def test_recv_without_explicit_snap_name(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-100") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dstfs, full.fileno()) lzc.lzc_receive(dstfs, incr.fileno()) self.assertExists(dst1) self.assertExists(dst2) def test_recv_clone(self): orig_src = ZFSTest.pool.makeName(b"fs2@send-origin") clone = ZFSTest.pool.makeName(b"fs1/fs/send-clone") clone_snap = clone + b"@snap" orig_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-origin@snap") clone_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-clone@snap") lzc.lzc_snapshot([orig_src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(orig_src, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(orig_dst, stream.fileno()) lzc.lzc_clone(clone, orig_src) lzc.lzc_snapshot([clone_snap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(clone_snap, orig_src, stream.fileno()) stream.seek(0) lzc.lzc_receive(clone_dst, stream.fileno(), origin=orig_dst) def test_recv_full_already_existing_empty_fs(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.makeName(b"fs2/received-3") dst = dstfs + b'@snap' with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) lzc.lzc_create(dstfs) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) with self.assertRaises(( lzc_exc.DestinationModified, lzc_exc.DatasetExists)): lzc.lzc_receive(dst, stream.fileno()) def test_recv_full_into_root_empty_pool(self): empty_pool = None try: srcfs = ZFSTest.pool.makeName(b"fs1") empty_pool = _TempPool() dst = empty_pool.makeName(b'@snap') with streams(srcfs, b"snap", None) as (_, (stream, _)): with self.assertRaises(( lzc_exc.DestinationModified, lzc_exc.DatasetExists)): lzc.lzc_receive(dst, stream.fileno()) finally: if empty_pool is not None: empty_pool.cleanUp() def test_recv_full_into_ro_pool(self): srcfs = ZFSTest.pool.makeName(b"fs1") dst = ZFSTest.readonly_pool.makeName(b'fs2/received@snap') with streams(srcfs, b"snap", None) as (_, (stream, _)): with self.assertRaises(lzc_exc.ReadOnlyPool): lzc.lzc_receive(dst, stream.fileno()) def test_recv_full_already_existing_modified_fs(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.makeName(b"fs2/received-5") dst = dstfs + b'@snap' with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) lzc.lzc_create(dstfs) with temp_file_in_fs(dstfs): with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) with self.assertRaises(( lzc_exc.DestinationModified, lzc_exc.DatasetExists)): lzc.lzc_receive(dst, stream.fileno()) def test_recv_full_already_existing_with_snapshots(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.makeName(b"fs2/received-4") dst = dstfs + b'@snap' with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) lzc.lzc_create(dstfs) lzc.lzc_snapshot([dstfs + b"@snap1"]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) with self.assertRaises(( lzc_exc.StreamMismatch, lzc_exc.DatasetExists)): lzc.lzc_receive(dst, stream.fileno()) def test_recv_full_already_existing_snapshot(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.makeName(b"fs2/received-6") dst = dstfs + b'@snap' with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) lzc.lzc_create(dstfs) lzc.lzc_snapshot([dst]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.DatasetExists): lzc.lzc_receive(dst, stream.fileno()) def test_recv_full_missing_parent_fs(self): src = ZFSTest.pool.makeName(b"fs1@snap") dst = ZFSTest.pool.makeName(b"fs2/nonexistent/fs@snap") with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_receive(dst, stream.fileno()) def test_recv_full_but_specify_origin(self): srcfs = ZFSTest.pool.makeName(b"fs1") src = srcfs + b"@snap" dstfs = ZFSTest.pool.makeName(b"fs2/received-30") dst = dstfs + b'@snap' origin1 = ZFSTest.pool.makeName(b"fs2@snap1") origin2 = ZFSTest.pool.makeName(b"fs2@snap2") lzc.lzc_snapshot([origin1]) with streams(srcfs, src, None) as (_, (stream, _)): lzc.lzc_receive(dst, stream.fileno(), origin=origin1) origin = ZFSTest.pool.getFilesystem( b"fs2/received-30").getProperty('origin') self.assertEqual(origin, origin1) stream.seek(0) # because origin snap does not exist can't receive as a clone of it with self.assertRaises(( lzc_exc.DatasetNotFound, lzc_exc.BadStream)): lzc.lzc_receive(dst, stream.fileno(), origin=origin2) def test_recv_full_existing_empty_fs_and_origin(self): srcfs = ZFSTest.pool.makeName(b"fs1") src = srcfs + b"@snap" dstfs = ZFSTest.pool.makeName(b"fs2/received-31") dst = dstfs + b'@snap' origin = dstfs + b'@dummy' lzc.lzc_create(dstfs) with streams(srcfs, src, None) as (_, (stream, _)): # because the destination fs already exists and has no snaps with self.assertRaises(( lzc_exc.DestinationModified, lzc_exc.DatasetExists, lzc_exc.BadStream)): lzc.lzc_receive(dst, stream.fileno(), origin=origin) lzc.lzc_snapshot([origin]) stream.seek(0) # because the destination fs already exists and has the snap with self.assertRaises(( lzc_exc.StreamMismatch, lzc_exc.DatasetExists, lzc_exc.BadStream)): lzc.lzc_receive(dst, stream.fileno(), origin=origin) def test_recv_incremental_mounted_fs(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-7") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with zfs_mount(dstfs): lzc.lzc_receive(dst2, incr.fileno()) def test_recv_incremental_modified_fs(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-15") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with temp_file_in_fs(dstfs): with self.assertRaises(lzc_exc.DestinationModified): lzc.lzc_receive(dst2, incr.fileno()) def test_recv_incremental_snapname_used(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-8") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) lzc.lzc_snapshot([dst2]) with self.assertRaises(lzc_exc.DatasetExists): lzc.lzc_receive(dst2, incr.fileno()) def test_recv_incremental_more_recent_snap_with_no_changes(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-9") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' dst_snap = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) lzc.lzc_snapshot([dst_snap]) lzc.lzc_receive(dst2, incr.fileno()) def test_recv_incremental_non_clone_but_set_origin(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-20") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' dst_snap = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) lzc.lzc_snapshot([dst_snap]) # because cannot receive incremental and set origin on a non-clone with self.assertRaises(lzc_exc.BadStream): lzc.lzc_receive(dst2, incr.fileno(), origin=dst1) def test_recv_incremental_non_clone_but_set_random_origin(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-21") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' dst_snap = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) lzc.lzc_snapshot([dst_snap]) # because origin snap does not exist can't receive as a clone of it with self.assertRaises(( lzc_exc.DatasetNotFound, lzc_exc.BadStream)): lzc.lzc_receive( dst2, incr.fileno(), origin=ZFSTest.pool.makeName(b"fs2/fs@snap")) def test_recv_incremental_more_recent_snap(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-10") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' dst_snap = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with temp_file_in_fs(dstfs): lzc.lzc_snapshot([dst_snap]) with self.assertRaises(lzc_exc.DestinationModified): lzc.lzc_receive(dst2, incr.fileno()) def test_recv_incremental_duplicate(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-11") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' dst_snap = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) lzc.lzc_receive(dst2, incr.fileno()) incr.seek(0) with self.assertRaises(lzc_exc.DestinationModified): lzc.lzc_receive(dst_snap, incr.fileno()) def test_recv_incremental_unrelated_fs(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-12") dst_snap = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (_, incr)): lzc.lzc_create(dstfs) with self.assertRaises(lzc_exc.StreamMismatch): lzc.lzc_receive(dst_snap, incr.fileno()) def test_recv_incremental_nonexistent_fs(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-13") dst_snap = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (_, incr)): with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_receive(dst_snap, incr.fileno()) def test_recv_incremental_same_fs(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" src_snap = srcfs + b'@snap' with streams(srcfs, src1, src2) as (_, (_, incr)): with self.assertRaises(lzc_exc.DestinationModified): lzc.lzc_receive(src_snap, incr.fileno()) def test_recv_clone_without_specifying_origin(self): orig_src = ZFSTest.pool.makeName(b"fs2@send-origin-2") clone = ZFSTest.pool.makeName(b"fs1/fs/send-clone-2") clone_snap = clone + b"@snap" orig_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-origin-2@snap") clone_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-clone-2@snap") lzc.lzc_snapshot([orig_src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(orig_src, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(orig_dst, stream.fileno()) lzc.lzc_clone(clone, orig_src) lzc.lzc_snapshot([clone_snap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(clone_snap, orig_src, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.BadStream): lzc.lzc_receive(clone_dst, stream.fileno()) def test_recv_clone_invalid_origin(self): orig_src = ZFSTest.pool.makeName(b"fs2@send-origin-3") clone = ZFSTest.pool.makeName(b"fs1/fs/send-clone-3") clone_snap = clone + b"@snap" orig_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-origin-3@snap") clone_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-clone-3@snap") lzc.lzc_snapshot([orig_src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(orig_src, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(orig_dst, stream.fileno()) lzc.lzc_clone(clone, orig_src) lzc.lzc_snapshot([clone_snap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(clone_snap, orig_src, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_receive( clone_dst, stream.fileno(), origin=ZFSTest.pool.makeName(b"fs1/fs")) def test_recv_clone_wrong_origin(self): orig_src = ZFSTest.pool.makeName(b"fs2@send-origin-4") clone = ZFSTest.pool.makeName(b"fs1/fs/send-clone-4") clone_snap = clone + b"@snap" orig_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-origin-4@snap") clone_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-clone-4@snap") wrong_origin = ZFSTest.pool.makeName(b"fs1/fs@snap") lzc.lzc_snapshot([orig_src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(orig_src, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(orig_dst, stream.fileno()) lzc.lzc_clone(clone, orig_src) lzc.lzc_snapshot([clone_snap]) lzc.lzc_snapshot([wrong_origin]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(clone_snap, orig_src, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.StreamMismatch): lzc.lzc_receive( clone_dst, stream.fileno(), origin=wrong_origin) def test_recv_clone_nonexistent_origin(self): orig_src = ZFSTest.pool.makeName(b"fs2@send-origin-5") clone = ZFSTest.pool.makeName(b"fs1/fs/send-clone-5") clone_snap = clone + b"@snap" orig_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-origin-5@snap") clone_dst = ZFSTest.pool.makeName(b"fs1/fs/recv-clone-5@snap") wrong_origin = ZFSTest.pool.makeName(b"fs1/fs@snap") lzc.lzc_snapshot([orig_src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(orig_src, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(orig_dst, stream.fileno()) lzc.lzc_clone(clone, orig_src) lzc.lzc_snapshot([clone_snap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(clone_snap, orig_src, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_receive( clone_dst, stream.fileno(), origin=wrong_origin) def test_force_recv_full_existing_fs(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.makeName(b"fs2/received-50") dst = dstfs + b'@snap' with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) lzc.lzc_create(dstfs) with temp_file_in_fs(dstfs): pass # enough to taint the fs with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(dst, stream.fileno(), force=True) def test_force_recv_full_existing_modified_mounted_fs(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.makeName(b"fs2/received-53") dst = dstfs + b'@snap' with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) lzc.lzc_create(dstfs) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) with zfs_mount(dstfs) as mntdir: f = tempfile.NamedTemporaryFile(dir=mntdir, delete=False) for i in range(1024): f.write(b'x' * 1024) lzc.lzc_receive(dst, stream.fileno(), force=True) # The temporary file disappears and any access, even close(), # results in EIO. self.assertFalse(os.path.exists(f.name)) with self.assertRaises(IOError): f.close() # This test-case expects the behavior that should be there, # at the moment it may fail with DatasetExists or StreamMismatch # depending on the implementation. def test_force_recv_full_already_existing_with_snapshots(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.makeName(b"fs2/received-51") dst = dstfs + b'@snap' with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) lzc.lzc_create(dstfs) with temp_file_in_fs(dstfs): pass # enough to taint the fs lzc.lzc_snapshot([dstfs + b"@snap1"]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(dst, stream.fileno(), force=True) def test_force_recv_full_already_existing_with_same_snap(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.makeName(b"fs2/received-52") dst = dstfs + b'@snap' with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) lzc.lzc_create(dstfs) with temp_file_in_fs(dstfs): pass # enough to taint the fs lzc.lzc_snapshot([dst]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.DatasetExists): lzc.lzc_receive(dst, stream.fileno(), force=True) def test_force_recv_full_missing_parent_fs(self): src = ZFSTest.pool.makeName(b"fs1@snap") dst = ZFSTest.pool.makeName(b"fs2/nonexistent/fs@snap") with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")): lzc.lzc_snapshot([src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_receive(dst, stream.fileno(), force=True) def test_force_recv_incremental_modified_fs(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-60") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with temp_file_in_fs(dstfs): pass # enough to taint the fs lzc.lzc_receive(dst2, incr.fileno(), force=True) def test_force_recv_incremental_modified_mounted_fs(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-64") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with zfs_mount(dstfs) as mntdir: f = tempfile.NamedTemporaryFile(dir=mntdir, delete=False) for i in range(1024): f.write(b'x' * 1024) lzc.lzc_receive(dst2, incr.fileno(), force=True) # The temporary file disappears and any access, even close(), # results in EIO. self.assertFalse(os.path.exists(f.name)) with self.assertRaises(IOError): f.close() def test_force_recv_incremental_modified_fs_plus_later_snap(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-61") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' dst3 = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with temp_file_in_fs(dstfs): pass # enough to taint the fs lzc.lzc_snapshot([dst3]) lzc.lzc_receive(dst2, incr.fileno(), force=True) self.assertExists(dst1) self.assertExists(dst2) self.assertNotExists(dst3) def test_force_recv_incremental_modified_fs_plus_same_name_snap(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-62") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with temp_file_in_fs(dstfs): pass # enough to taint the fs lzc.lzc_snapshot([dst2]) with self.assertRaises(lzc_exc.DatasetExists): lzc.lzc_receive(dst2, incr.fileno(), force=True) def test_force_recv_incremental_modified_fs_plus_held_snap(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-63") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' dst3 = dstfs + b'@snap' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with temp_file_in_fs(dstfs): pass # enough to taint the fs lzc.lzc_snapshot([dst3]) with cleanup_fd() as cfd: lzc.lzc_hold({dst3: b'tag'}, cfd) with self.assertRaises(lzc_exc.DatasetBusy): lzc.lzc_receive(dst2, incr.fileno(), force=True) self.assertExists(dst1) self.assertNotExists(dst2) self.assertExists(dst3) def test_force_recv_incremental_modified_fs_plus_cloned_snap(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-70") dst1 = dstfs + b'@snap1' dst2 = dstfs + b'@snap2' dst3 = dstfs + b'@snap' cloned = ZFSTest.pool.makeName(b"fs2/received-cloned-70") with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) with temp_file_in_fs(dstfs): pass # enough to taint the fs lzc.lzc_snapshot([dst3]) lzc.lzc_clone(cloned, dst3) with self.assertRaises(lzc_exc.DatasetExists): lzc.lzc_receive(dst2, incr.fileno(), force=True) self.assertExists(dst1) self.assertNotExists(dst2) self.assertExists(dst3) def test_recv_incremental_into_cloned_fs(self): srcfs = ZFSTest.pool.makeName(b"fs1") src1 = srcfs + b"@snap1" src2 = srcfs + b"@snap2" dstfs = ZFSTest.pool.makeName(b"fs2/received-71") dst1 = dstfs + b'@snap1' cloned = ZFSTest.pool.makeName(b"fs2/received-cloned-71") dst2 = cloned + b'@snap' with streams(srcfs, src1, src2) as (_, (full, incr)): lzc.lzc_receive(dst1, full.fileno()) lzc.lzc_clone(cloned, dst1) # test both graceful and with-force attempts with self.assertRaises(lzc_exc.StreamMismatch): lzc.lzc_receive(dst2, incr.fileno()) incr.seek(0) with self.assertRaises(lzc_exc.StreamMismatch): lzc.lzc_receive(dst2, incr.fileno(), force=True) self.assertExists(dst1) self.assertNotExists(dst2) def test_recv_with_header_full(self): src = ZFSTest.pool.makeName(b"fs1@snap") dst = ZFSTest.pool.makeName(b"fs2/received") with temp_file_in_fs(ZFSTest.pool.makeName(b"fs1")) as name: lzc.lzc_snapshot([src]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) (header, c_header) = lzc.receive_header(stream.fileno()) self.assertEqual(src, header['drr_toname']) snap = header['drr_toname'].split(b'@', 1)[1] lzc.lzc_receive_with_header( dst + b'@' + snap, stream.fileno(), c_header) name = os.path.basename(name) with zfs_mount(src) as mnt1, zfs_mount(dst) as mnt2: self.assertTrue( filecmp.cmp( os.path.join(mnt1, name), os.path.join(mnt2, name), False)) def test_recv_fs_below_zvol(self): send = ZFSTest.pool.makeName(b"fs1@snap") zvol = ZFSTest.pool.makeName(b"fs1/zvol") dest = zvol + b"/fs@snap" props = {b"volsize": 1024 * 1024} lzc.lzc_snapshot([send]) lzc.lzc_create(zvol, ds_type='zvol', props=props) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(send, None, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.WrongParent): lzc.lzc_receive(dest, stream.fileno()) def test_recv_zvol_over_fs_with_children(self): parent = ZFSTest.pool.makeName(b"fs1") child = parent + b"subfs" zvol = ZFSTest.pool.makeName(b"fs1/zvol") send = zvol + b"@snap" props = {b"volsize": 1024 * 1024} lzc.lzc_create(child) lzc.lzc_create(zvol, ds_type='zvol', props=props) lzc.lzc_snapshot([send]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(send, None, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.WrongParent): lzc.lzc_receive(parent + b"@snap", stream.fileno(), force=True) def test_recv_zvol_overwrite_rootds(self): zvol = ZFSTest.pool.makeName(b"fs1/zvol") snap = zvol + b"@snap" rootds = ZFSTest.pool.getRoot().getName() props = {b"volsize": 1024 * 1024} lzc.lzc_create(zvol, ds_type='zvol', props=props) lzc.lzc_snapshot([snap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(snap, None, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.WrongParent): lzc.lzc_receive(rootds + b"@snap", stream.fileno(), force=True) def test_send_full_across_clone_branch_point(self): origfs = ZFSTest.pool.makeName(b"fs2") (_, (fromsnap, origsnap, _)) = make_snapshots( origfs, b"snap1", b"send-origin-20", None) clonefs = ZFSTest.pool.makeName(b"fs1/fs/send-clone-20") lzc.lzc_clone(clonefs, origsnap) (_, (_, tosnap, _)) = make_snapshots(clonefs, None, b"snap", None) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(tosnap, None, stream.fileno()) def test_send_incr_across_clone_branch_point(self): origfs = ZFSTest.pool.makeName(b"fs2") (_, (fromsnap, origsnap, _)) = make_snapshots( origfs, b"snap1", b"send-origin-21", None) clonefs = ZFSTest.pool.makeName(b"fs1/fs/send-clone-21") lzc.lzc_clone(clonefs, origsnap) (_, (_, tosnap, _)) = make_snapshots(clonefs, None, b"snap", None) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(tosnap, fromsnap, stream.fileno()) def test_send_resume_token_full(self): src = ZFSTest.pool.makeName(b"fs1@snap") dstfs = ZFSTest.pool.getFilesystem(b"fs2/received") dst = dstfs.getSnap() with zfs_mount(ZFSTest.pool.makeName(b"fs1")) as mntdir: for i in range(1, 10): with tempfile.NamedTemporaryFile(dir=mntdir) as f: f.write(b'x' * 1024 * i) f.flush() lzc.lzc_snapshot([src]) with tempfile.NamedTemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(src, None, stream.fileno()) stream.seek(0) stream.truncate(1024 * 3) with self.assertRaises(lzc_exc.BadStream): lzc.lzc_receive_resumable(dst, stream.fileno()) # Resume token code from zfs_send_resume_token_to_nvlist() # XXX: if used more than twice move this code into an external func # format: --- token = dstfs.getProperty("receive_resume_token") self.assertNotEqual(token, b'-') tokens = token.split(b'-') self.assertEqual(len(tokens), 4) version = tokens[0] packed_size = int(tokens[2], 16) compressed_nvs = tokens[3] # Validate resume token self.assertEqual(version, b'1') # ZFS_SEND_RESUME_TOKEN_VERSION if sys.version_info < (3, 0): payload = ( zlib.decompress(str(bytearray.fromhex(compressed_nvs))) ) else: payload = ( zlib.decompress(bytearray.fromhex(compressed_nvs.decode())) ) self.assertEqual(len(payload), packed_size) # Unpack resume_values = packed_nvlist_out(payload, packed_size) resumeobj = resume_values.get(b'object') resumeoff = resume_values.get(b'offset') with tempfile.NamedTemporaryFile(suffix='.zstream') as rstream: lzc.lzc_send_resume( src, None, rstream.fileno(), None, resumeobj, resumeoff) rstream.seek(0) lzc.lzc_receive_resumable(dst, rstream.fileno()) def test_send_resume_token_incremental(self): snap1 = ZFSTest.pool.makeName(b"fs1@snap1") snap2 = ZFSTest.pool.makeName(b"fs1@snap2") dstfs = ZFSTest.pool.getFilesystem(b"fs2/received") dst1 = dstfs.getSnap() dst2 = dstfs.getSnap() lzc.lzc_snapshot([snap1]) with tempfile.NamedTemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(snap1, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(dst1, stream.fileno()) with zfs_mount(ZFSTest.pool.makeName(b"fs1")) as mntdir: for i in range(1, 10): with tempfile.NamedTemporaryFile(dir=mntdir) as f: f.write(b'x' * 1024 * i) f.flush() lzc.lzc_snapshot([snap2]) with tempfile.NamedTemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(snap2, snap1, stream.fileno()) stream.seek(0) stream.truncate(1024 * 3) with self.assertRaises(lzc_exc.BadStream): lzc.lzc_receive_resumable(dst2, stream.fileno()) # Resume token code from zfs_send_resume_token_to_nvlist() # format: --- token = dstfs.getProperty("receive_resume_token") self.assertNotEqual(token, '-') tokens = token.split(b'-') self.assertEqual(len(tokens), 4) version = tokens[0] packed_size = int(tokens[2], 16) compressed_nvs = tokens[3] # Validate resume token self.assertEqual(version, b'1') # ZFS_SEND_RESUME_TOKEN_VERSION if sys.version_info < (3, 0): payload = ( zlib.decompress(str(bytearray.fromhex(compressed_nvs))) ) else: payload = ( zlib.decompress(bytearray.fromhex(compressed_nvs.decode())) ) self.assertEqual(len(payload), packed_size) # Unpack resume_values = packed_nvlist_out(payload, packed_size) resumeobj = resume_values.get(b'object') resumeoff = resume_values.get(b'offset') with tempfile.NamedTemporaryFile(suffix='.zstream') as rstream: lzc.lzc_send_resume( snap2, snap1, rstream.fileno(), None, resumeobj, resumeoff) rstream.seek(0) lzc.lzc_receive_resumable(dst2, rstream.fileno()) def test_recv_full_across_clone_branch_point(self): origfs = ZFSTest.pool.makeName(b"fs2") (_, (fromsnap, origsnap, _)) = make_snapshots( origfs, b"snap1", b"send-origin-30", None) clonefs = ZFSTest.pool.makeName(b"fs1/fs/send-clone-30") lzc.lzc_clone(clonefs, origsnap) (_, (_, tosnap, _)) = make_snapshots(clonefs, None, b"snap", None) recvfs = ZFSTest.pool.makeName(b"fs1/recv-clone-30") recvsnap = recvfs + b"@snap" with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(tosnap, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(recvsnap, stream.fileno()) def test_recv_one(self): fromsnap = ZFSTest.pool.makeName(b"fs1@snap1") tosnap = ZFSTest.pool.makeName(b"recv@snap1") lzc.lzc_snapshot([fromsnap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) stream.seek(0) (header, c_header) = lzc.receive_header(stream.fileno()) lzc.lzc_receive_one(tosnap, stream.fileno(), c_header) def test_recv_one_size(self): fromsnap = ZFSTest.pool.makeName(b"fs1@snap1") tosnap = ZFSTest.pool.makeName(b"recv@snap1") lzc.lzc_snapshot([fromsnap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) size = os.fstat(stream.fileno()).st_size stream.seek(0) (header, c_header) = lzc.receive_header(stream.fileno()) (read, _) = lzc.lzc_receive_one(tosnap, stream.fileno(), c_header) self.assertAlmostEqual(read, size, delta=read * 0.05) def test_recv_one_props(self): fromsnap = ZFSTest.pool.makeName(b"fs1@snap1") fs = ZFSTest.pool.getFilesystem(b"recv") tosnap = fs.getName() + b"@snap1" props = { b"compression": 0x01, b"ns:prop": b"val" } lzc.lzc_snapshot([fromsnap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) stream.seek(0) (header, c_header) = lzc.receive_header(stream.fileno()) lzc.lzc_receive_one(tosnap, stream.fileno(), c_header, props=props) self.assertExists(tosnap) self.assertEqual(fs.getProperty("compression", "received"), b"on") self.assertEqual(fs.getProperty("ns:prop", "received"), b"val") def test_recv_one_invalid_prop(self): fromsnap = ZFSTest.pool.makeName(b"fs1@snap1") fs = ZFSTest.pool.getFilesystem(b"recv") tosnap = fs.getName() + b"@snap1" props = { b"exec": 0xff, b"atime": 0x00 } lzc.lzc_snapshot([fromsnap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) stream.seek(0) (header, c_header) = lzc.receive_header(stream.fileno()) with self.assertRaises(lzc_exc.ReceivePropertyFailure) as ctx: lzc.lzc_receive_one( tosnap, stream.fileno(), c_header, props=props) self.assertExists(tosnap) self.assertEqual(fs.getProperty("atime", "received"), b"off") for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.PropertyInvalid) self.assertEqual(e.name, b"exec") def test_recv_with_cmdprops(self): fromsnap = ZFSTest.pool.makeName(b"fs1@snap1") fs = ZFSTest.pool.getFilesystem(b"recv") tosnap = fs.getName() + b"@snap1" props = {} cmdprops = { b"compression": 0x01, b"ns:prop": b"val" } lzc.lzc_snapshot([fromsnap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) stream.seek(0) (header, c_header) = lzc.receive_header(stream.fileno()) lzc.lzc_receive_with_cmdprops( tosnap, stream.fileno(), c_header, props=props, cmdprops=cmdprops) self.assertExists(tosnap) self.assertEqual(fs.getProperty("compression"), b"on") self.assertEqual(fs.getProperty("ns:prop"), b"val") def test_recv_with_cmdprops_and_recvprops(self): fromsnap = ZFSTest.pool.makeName(b"fs1@snap1") fs = ZFSTest.pool.getFilesystem(b"recv") tosnap = fs.getName() + b"@snap1" props = { b"atime": 0x01, b"exec": 0x00, b"ns:prop": b"abc" } cmdprops = { b"compression": 0x01, b"ns:prop": b"def", b"exec": None, } lzc.lzc_snapshot([fromsnap]) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) stream.seek(0) (header, c_header) = lzc.receive_header(stream.fileno()) lzc.lzc_receive_with_cmdprops( tosnap, stream.fileno(), c_header, props=props, cmdprops=cmdprops) self.assertExists(tosnap) self.assertEqual(fs.getProperty("atime", True), b"on") self.assertEqual(fs.getProperty("exec", True), b"off") self.assertEqual(fs.getProperty("ns:prop", True), b"abc") self.assertEqual(fs.getProperty("compression"), b"on") self.assertEqual(fs.getProperty("ns:prop"), b"def") self.assertEqual(fs.getProperty("exec"), b"on") def test_recv_incr_across_clone_branch_point_no_origin(self): origfs = ZFSTest.pool.makeName(b"fs2") (_, (fromsnap, origsnap, _)) = make_snapshots( origfs, b"snap1", b"send-origin-32", None) clonefs = ZFSTest.pool.makeName(b"fs1/fs/send-clone-32") lzc.lzc_clone(clonefs, origsnap) (_, (_, tosnap, _)) = make_snapshots(clonefs, None, b"snap", None) recvfs = ZFSTest.pool.makeName(b"fs1/recv-clone-32") recvsnap1 = recvfs + b"@snap1" recvsnap2 = recvfs + b"@snap2" with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(recvsnap1, stream.fileno()) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(tosnap, fromsnap, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.BadStream): lzc.lzc_receive(recvsnap2, stream.fileno()) def test_recv_incr_across_clone_branch_point(self): origfs = ZFSTest.pool.makeName(b"fs2") (_, (fromsnap, origsnap, _)) = make_snapshots( origfs, b"snap1", b"send-origin-31", None) clonefs = ZFSTest.pool.makeName(b"fs1/fs/send-clone-31") lzc.lzc_clone(clonefs, origsnap) (_, (_, tosnap, _)) = make_snapshots(clonefs, None, b"snap", None) recvfs = ZFSTest.pool.makeName(b"fs1/recv-clone-31") recvsnap1 = recvfs + b"@snap1" recvsnap2 = recvfs + b"@snap2" with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(recvsnap1, stream.fileno()) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(tosnap, fromsnap, stream.fileno()) stream.seek(0) with self.assertRaises(lzc_exc.BadStream): lzc.lzc_receive(recvsnap2, stream.fileno(), origin=recvsnap1) def test_recv_incr_across_clone_branch_point_new_fs(self): origfs = ZFSTest.pool.makeName(b"fs2") (_, (fromsnap, origsnap, _)) = make_snapshots( origfs, b"snap1", b"send-origin-33", None) clonefs = ZFSTest.pool.makeName(b"fs1/fs/send-clone-33") lzc.lzc_clone(clonefs, origsnap) (_, (_, tosnap, _)) = make_snapshots(clonefs, None, b"snap", None) recvfs1 = ZFSTest.pool.makeName(b"fs1/recv-clone-33") recvsnap1 = recvfs1 + b"@snap" recvfs2 = ZFSTest.pool.makeName(b"fs1/recv-clone-33_2") recvsnap2 = recvfs2 + b"@snap" with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(fromsnap, None, stream.fileno()) stream.seek(0) lzc.lzc_receive(recvsnap1, stream.fileno()) with tempfile.TemporaryFile(suffix='.zstream') as stream: lzc.lzc_send(tosnap, fromsnap, stream.fileno()) stream.seek(0) lzc.lzc_receive(recvsnap2, stream.fileno(), origin=recvsnap1) def test_recv_bad_stream(self): dstfs = ZFSTest.pool.makeName(b"fs2/received") dst_snap = dstfs + b'@snap' with dev_zero() as fd: with self.assertRaises(lzc_exc.BadStream): lzc.lzc_receive(dst_snap, fd) @needs_support(lzc.lzc_promote) def test_promote(self): origfs = ZFSTest.pool.makeName(b"fs2") snap = b"@promote-snap-1" origsnap = origfs + snap lzc.lzc_snap([origsnap]) clonefs = ZFSTest.pool.makeName(b"fs1/fs/promote-clone-1") lzc.lzc_clone(clonefs, origsnap) lzc.lzc_promote(clonefs) # the snapshot now should belong to the promoted fs self.assertExists(clonefs + snap) @needs_support(lzc.lzc_promote) def test_promote_too_long_snapname(self): # origfs name must be shorter than clonefs name origfs = ZFSTest.pool.makeName(b"fs2") clonefs = ZFSTest.pool.makeName(b"fs1/fs/promote-clone-2") snapprefix = b"@promote-snap-2-" pad_len = 1 + lzc.MAXNAMELEN - len(clonefs) - len(snapprefix) snap = snapprefix + b'x' * pad_len origsnap = origfs + snap lzc.lzc_snap([origsnap]) lzc.lzc_clone(clonefs, origsnap) # This may fail on older buggy systems. # See: https://www.illumos.org/issues/5909 with self.assertRaises(lzc_exc.NameTooLong): lzc.lzc_promote(clonefs) @needs_support(lzc.lzc_promote) def test_promote_not_cloned(self): fs = ZFSTest.pool.makeName(b"fs2") with self.assertRaises(lzc_exc.NotClone): lzc.lzc_promote(fs) @unittest.skipIf(*illumos_bug_6379()) def test_hold_bad_fd(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with tempfile.TemporaryFile() as tmp: bad_fd = tmp.fileno() with self.assertRaises(lzc_exc.BadHoldCleanupFD): lzc.lzc_hold({snap: b'tag'}, bad_fd) @unittest.skipIf(*illumos_bug_6379()) def test_hold_bad_fd_2(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with self.assertRaises(lzc_exc.BadHoldCleanupFD): lzc.lzc_hold({snap: b'tag'}, -2) @unittest.skipIf(*illumos_bug_6379()) def test_hold_bad_fd_3(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) (soft, hard) = resource.getrlimit(resource.RLIMIT_NOFILE) bad_fd = hard + 1 with self.assertRaises(lzc_exc.BadHoldCleanupFD): lzc.lzc_hold({snap: b'tag'}, bad_fd) @unittest.skipIf(*illumos_bug_6379()) def test_hold_wrong_fd(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with tempfile.TemporaryFile() as tmp: fd = tmp.fileno() with self.assertRaises(lzc_exc.BadHoldCleanupFD): lzc.lzc_hold({snap: b'tag'}, fd) def test_hold_fd(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag'}, fd) def test_hold_empty(self): with cleanup_fd() as fd: lzc.lzc_hold({}, fd) def test_hold_empty_2(self): lzc.lzc_hold({}) def test_hold_vs_snap_destroy(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag'}, fd) with self.assertRaises(lzc_exc.SnapshotDestructionFailure) as ctx: lzc.lzc_destroy_snaps([snap], defer=False) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.SnapshotIsHeld) lzc.lzc_destroy_snaps([snap], defer=True) self.assertExists(snap) # after automatic hold cleanup and deferred destruction self.assertNotExists(snap) def test_hold_many_tags(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag1'}, fd) lzc.lzc_hold({snap: b'tag2'}, fd) def test_hold_many_snaps(self): snap1 = ZFSTest.pool.getRoot().getSnap() snap2 = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with cleanup_fd() as fd: lzc.lzc_hold({snap1: b'tag', snap2: b'tag'}, fd) def test_hold_many_with_one_missing(self): snap1 = ZFSTest.pool.getRoot().getSnap() snap2 = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap1]) with cleanup_fd() as fd: missing = lzc.lzc_hold({snap1: b'tag', snap2: b'tag'}, fd) self.assertEqual(len(missing), 1) self.assertEqual(missing[0], snap2) def test_hold_many_with_all_missing(self): snap1 = ZFSTest.pool.getRoot().getSnap() snap2 = ZFSTest.pool.getRoot().getSnap() with cleanup_fd() as fd: missing = lzc.lzc_hold({snap1: b'tag', snap2: b'tag'}, fd) self.assertEqual(len(missing), 2) self.assertEqual(sorted(missing), sorted([snap1, snap2])) def test_hold_missing_fs(self): # XXX skip pre-created filesystems ZFSTest.pool.getRoot().getFilesystem() ZFSTest.pool.getRoot().getFilesystem() ZFSTest.pool.getRoot().getFilesystem() ZFSTest.pool.getRoot().getFilesystem() ZFSTest.pool.getRoot().getFilesystem() snap = ZFSTest.pool.getRoot().getFilesystem().getSnap() snaps = lzc.lzc_hold({snap: b'tag'}) self.assertEqual([snap], snaps) def test_hold_missing_fs_auto_cleanup(self): # XXX skip pre-created filesystems ZFSTest.pool.getRoot().getFilesystem() ZFSTest.pool.getRoot().getFilesystem() ZFSTest.pool.getRoot().getFilesystem() ZFSTest.pool.getRoot().getFilesystem() ZFSTest.pool.getRoot().getFilesystem() snap = ZFSTest.pool.getRoot().getFilesystem().getSnap() with cleanup_fd() as fd: snaps = lzc.lzc_hold({snap: b'tag'}, fd) self.assertEqual([snap], snaps) def test_hold_duplicate(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag'}, fd) with self.assertRaises(lzc_exc.HoldFailure) as ctx: lzc.lzc_hold({snap: b'tag'}, fd) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.HoldExists) def test_hold_across_pools(self): snap1 = ZFSTest.pool.getRoot().getSnap() snap2 = ZFSTest.misc_pool.getRoot().getSnap() lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with cleanup_fd() as fd: with self.assertRaises(lzc_exc.HoldFailure) as ctx: lzc.lzc_hold({snap1: b'tag', snap2: b'tag'}, fd) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.PoolsDiffer) def test_hold_too_long_tag(self): snap = ZFSTest.pool.getRoot().getSnap() tag = b't' * 256 lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: with self.assertRaises(lzc_exc.HoldFailure) as ctx: lzc.lzc_hold({snap: tag}, fd) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) self.assertEqual(e.name, tag) # Apparently the full snapshot name is not checked for length # and this snapshot is treated as simply missing. @unittest.expectedFailure def test_hold_too_long_snap_name(self): snap = ZFSTest.pool.getRoot().getTooLongSnap(False) with cleanup_fd() as fd: with self.assertRaises(lzc_exc.HoldFailure) as ctx: lzc.lzc_hold({snap: b'tag'}, fd) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) self.assertEqual(e.name, snap) def test_hold_too_long_snap_name_2(self): snap = ZFSTest.pool.getRoot().getTooLongSnap(True) with cleanup_fd() as fd: with self.assertRaises(lzc_exc.HoldFailure) as ctx: lzc.lzc_hold({snap: b'tag'}, fd) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) self.assertEqual(e.name, snap) def test_hold_invalid_snap_name(self): snap = ZFSTest.pool.getRoot().getSnap() + b'@bad' with cleanup_fd() as fd: with self.assertRaises(lzc_exc.HoldFailure) as ctx: lzc.lzc_hold({snap: b'tag'}, fd) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameInvalid) self.assertEqual(e.name, snap) def test_hold_invalid_snap_name_2(self): snap = ZFSTest.pool.getRoot().getFilesystem().getName() with cleanup_fd() as fd: with self.assertRaises(lzc_exc.HoldFailure) as ctx: lzc.lzc_hold({snap: b'tag'}, fd) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameInvalid) self.assertEqual(e.name, snap) def test_get_holds(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag1'}, fd) lzc.lzc_hold({snap: b'tag2'}, fd) holds = lzc.lzc_get_holds(snap) self.assertEqual(len(holds), 2) self.assertIn(b'tag1', holds) self.assertIn(b'tag2', holds) self.assertIsInstance(holds[b'tag1'], (int, int)) def test_get_holds_after_auto_cleanup(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag1'}, fd) lzc.lzc_hold({snap: b'tag2'}, fd) holds = lzc.lzc_get_holds(snap) self.assertEqual(len(holds), 0) self.assertIsInstance(holds, dict) def test_get_holds_nonexistent_snap(self): snap = ZFSTest.pool.getRoot().getSnap() with self.assertRaises(lzc_exc.SnapshotNotFound): lzc.lzc_get_holds(snap) def test_get_holds_too_long_snap_name(self): snap = ZFSTest.pool.getRoot().getTooLongSnap(False) with self.assertRaises(lzc_exc.NameTooLong): lzc.lzc_get_holds(snap) def test_get_holds_too_long_snap_name_2(self): snap = ZFSTest.pool.getRoot().getTooLongSnap(True) with self.assertRaises(lzc_exc.NameTooLong): lzc.lzc_get_holds(snap) def test_get_holds_invalid_snap_name(self): snap = ZFSTest.pool.getRoot().getSnap() + b'@bad' with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_get_holds(snap) # A filesystem-like snapshot name is not recognized as # an invalid name. @unittest.expectedFailure def test_get_holds_invalid_snap_name_2(self): snap = ZFSTest.pool.getRoot().getFilesystem().getName() with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_get_holds(snap) def test_release_hold(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) lzc.lzc_hold({snap: b'tag'}) ret = lzc.lzc_release({snap: [b'tag']}) self.assertEqual(len(ret), 0) def test_release_hold_empty(self): ret = lzc.lzc_release({}) self.assertEqual(len(ret), 0) def test_release_hold_complex(self): snap1 = ZFSTest.pool.getRoot().getSnap() snap2 = ZFSTest.pool.getRoot().getSnap() snap3 = ZFSTest.pool.getRoot().getFilesystem().getSnap() lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2, snap3]) lzc.lzc_hold({snap1: b'tag1'}) lzc.lzc_hold({snap1: b'tag2'}) lzc.lzc_hold({snap2: b'tag'}) lzc.lzc_hold({snap3: b'tag1'}) lzc.lzc_hold({snap3: b'tag2'}) holds = lzc.lzc_get_holds(snap1) self.assertEqual(len(holds), 2) holds = lzc.lzc_get_holds(snap2) self.assertEqual(len(holds), 1) holds = lzc.lzc_get_holds(snap3) self.assertEqual(len(holds), 2) release = { snap1: [b'tag1', b'tag2'], snap2: [b'tag'], snap3: [b'tag2'], } ret = lzc.lzc_release(release) self.assertEqual(len(ret), 0) holds = lzc.lzc_get_holds(snap1) self.assertEqual(len(holds), 0) holds = lzc.lzc_get_holds(snap2) self.assertEqual(len(holds), 0) holds = lzc.lzc_get_holds(snap3) self.assertEqual(len(holds), 1) ret = lzc.lzc_release({snap3: [b'tag1']}) self.assertEqual(len(ret), 0) holds = lzc.lzc_get_holds(snap3) self.assertEqual(len(holds), 0) def test_release_hold_before_auto_cleanup(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag'}, fd) ret = lzc.lzc_release({snap: [b'tag']}) self.assertEqual(len(ret), 0) def test_release_hold_and_snap_destruction(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag1'}, fd) lzc.lzc_hold({snap: b'tag2'}, fd) lzc.lzc_destroy_snaps([snap], defer=True) self.assertExists(snap) lzc.lzc_release({snap: [b'tag1']}) self.assertExists(snap) lzc.lzc_release({snap: [b'tag2']}) self.assertNotExists(snap) def test_release_hold_and_multiple_snap_destruction(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) with cleanup_fd() as fd: lzc.lzc_hold({snap: b'tag'}, fd) lzc.lzc_destroy_snaps([snap], defer=True) self.assertExists(snap) lzc.lzc_destroy_snaps([snap], defer=True) self.assertExists(snap) lzc.lzc_release({snap: [b'tag']}) self.assertNotExists(snap) def test_release_hold_missing_tag(self): snap = ZFSTest.pool.getRoot().getSnap() lzc.lzc_snapshot([snap]) ret = lzc.lzc_release({snap: [b'tag']}) self.assertEqual(len(ret), 1) self.assertEqual(ret[0], snap + b'#tag') def test_release_hold_missing_snap(self): snap = ZFSTest.pool.getRoot().getSnap() ret = lzc.lzc_release({snap: [b'tag']}) self.assertEqual(len(ret), 1) self.assertEqual(ret[0], snap) def test_release_hold_missing_snap_2(self): snap = ZFSTest.pool.getRoot().getSnap() ret = lzc.lzc_release({snap: [b'tag', b'another']}) self.assertEqual(len(ret), 1) self.assertEqual(ret[0], snap) def test_release_hold_across_pools(self): snap1 = ZFSTest.pool.getRoot().getSnap() snap2 = ZFSTest.misc_pool.getRoot().getSnap() lzc.lzc_snapshot([snap1]) lzc.lzc_snapshot([snap2]) with cleanup_fd() as fd: lzc.lzc_hold({snap1: b'tag'}, fd) lzc.lzc_hold({snap2: b'tag'}, fd) with self.assertRaises(lzc_exc.HoldReleaseFailure) as ctx: lzc.lzc_release({snap1: [b'tag'], snap2: [b'tag']}) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.PoolsDiffer) # Apparently the tag name is not verified, # only its existence is checked. @unittest.expectedFailure def test_release_hold_too_long_tag(self): snap = ZFSTest.pool.getRoot().getSnap() tag = b't' * 256 lzc.lzc_snapshot([snap]) with self.assertRaises(lzc_exc.HoldReleaseFailure): lzc.lzc_release({snap: [tag]}) # Apparently the full snapshot name is not checked for length # and this snapshot is treated as simply missing. @unittest.expectedFailure def test_release_hold_too_long_snap_name(self): snap = ZFSTest.pool.getRoot().getTooLongSnap(False) with self.assertRaises(lzc_exc.HoldReleaseFailure): lzc.lzc_release({snap: [b'tag']}) def test_release_hold_too_long_snap_name_2(self): snap = ZFSTest.pool.getRoot().getTooLongSnap(True) with self.assertRaises(lzc_exc.HoldReleaseFailure) as ctx: lzc.lzc_release({snap: [b'tag']}) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameTooLong) self.assertEqual(e.name, snap) def test_release_hold_invalid_snap_name(self): snap = ZFSTest.pool.getRoot().getSnap() + b'@bad' with self.assertRaises(lzc_exc.HoldReleaseFailure) as ctx: lzc.lzc_release({snap: [b'tag']}) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameInvalid) self.assertEqual(e.name, snap) def test_release_hold_invalid_snap_name_2(self): snap = ZFSTest.pool.getRoot().getFilesystem().getName() with self.assertRaises(lzc_exc.HoldReleaseFailure) as ctx: lzc.lzc_release({snap: [b'tag']}) for e in ctx.exception.errors: self.assertIsInstance(e, lzc_exc.NameInvalid) self.assertEqual(e.name, snap) def test_sync_missing_pool(self): pool = b"nonexistent" with self.assertRaises(lzc_exc.PoolNotFound): lzc.lzc_sync(pool) def test_sync_pool_forced(self): pool = ZFSTest.pool.getRoot().getName() lzc.lzc_sync(pool, True) def test_reopen_missing_pool(self): pool = b"nonexistent" with self.assertRaises(lzc_exc.PoolNotFound): lzc.lzc_reopen(pool) def test_reopen_pool_no_restart(self): pool = ZFSTest.pool.getRoot().getName() lzc.lzc_reopen(pool, False) def test_channel_program_missing_pool(self): pool = b"nonexistent" with self.assertRaises(lzc_exc.PoolNotFound): lzc.lzc_channel_program(pool, b"return {}") def test_channel_program_timeout(self): pool = ZFSTest.pool.getRoot().getName() zcp = b""" for i = 1,10000 do zfs.sync.snapshot('""" + pool + b"""@zcp' .. i) end """ with self.assertRaises(lzc_exc.ZCPTimeout): lzc.lzc_channel_program(pool, zcp, instrlimit=1) def test_channel_program_memory_limit(self): pool = ZFSTest.pool.getRoot().getName() zcp = b""" for i = 1,10000 do zfs.sync.snapshot('""" + pool + b"""@zcp' .. i) end """ with self.assertRaises(lzc_exc.ZCPSpaceError): lzc.lzc_channel_program(pool, zcp, memlimit=1) def test_channel_program_invalid_limits(self): pool = ZFSTest.pool.getRoot().getName() zcp = b""" return {} """ with self.assertRaises(lzc_exc.ZCPLimitInvalid): lzc.lzc_channel_program(pool, zcp, instrlimit=0) with self.assertRaises(lzc_exc.ZCPLimitInvalid): lzc.lzc_channel_program(pool, zcp, memlimit=0) def test_channel_program_syntax_error(self): pool = ZFSTest.pool.getRoot().getName() zcp = b""" inv+val:id """ with self.assertRaises(lzc_exc.ZCPSyntaxError) as ctx: lzc.lzc_channel_program(pool, zcp) self.assertTrue(b"syntax error" in ctx.exception.details) def test_channel_program_sync_snapshot(self): pool = ZFSTest.pool.getRoot().getName() snapname = ZFSTest.pool.makeName(b"@zcp") zcp = b""" zfs.sync.snapshot('""" + snapname + b"""') """ lzc.lzc_channel_program(pool, zcp) self.assertExists(snapname) def test_channel_program_runtime_error(self): pool = ZFSTest.pool.getRoot().getName() # failing an assertion raises a runtime error with self.assertRaises(lzc_exc.ZCPRuntimeError) as ctx: lzc.lzc_channel_program(pool, b"assert(1 == 2)") self.assertTrue( b"assertion failed" in ctx.exception.details) # invoking the error() function raises a runtime error with self.assertRaises(lzc_exc.ZCPRuntimeError) as ctx: lzc.lzc_channel_program(pool, b"error()") def test_channel_program_nosync_runtime_error(self): pool = ZFSTest.pool.getRoot().getName() zcp = b""" zfs.sync.snapshot('""" + pool + b"""@zcp') """ # lzc_channel_program_nosync() allows only "read-only" operations with self.assertRaises(lzc_exc.ZCPRuntimeError) as ctx: lzc.lzc_channel_program_nosync(pool, zcp) self.assertTrue( b"running functions from the zfs.sync" in ctx.exception.details) def test_change_key_new(self): with encrypted_filesystem() as (fs, _): lzc.lzc_change_key( fs, 'new_key', props={b"keyformat": lzc.zfs_keyformat.ZFS_KEYFORMAT_RAW}, key=os.urandom(lzc.WRAPPING_KEY_LEN)) def test_change_key_missing_fs(self): name = b"nonexistent" with self.assertRaises(lzc_exc.FilesystemNotFound): lzc.lzc_change_key( name, 'new_key', props={b"keyformat": lzc.zfs_keyformat.ZFS_KEYFORMAT_RAW}, key=os.urandom(lzc.WRAPPING_KEY_LEN)) def test_change_key_not_loaded(self): with encrypted_filesystem() as (fs, _): lzc.lzc_unload_key(fs) with self.assertRaises(lzc_exc.EncryptionKeyNotLoaded): lzc.lzc_change_key( fs, 'new_key', props={b"keyformat": lzc.zfs_keyformat.ZFS_KEYFORMAT_RAW}, key=os.urandom(lzc.WRAPPING_KEY_LEN)) def test_change_key_invalid_property(self): with encrypted_filesystem() as (fs, _): with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_change_key(fs, 'new_key', props={b"invalid": b"prop"}) def test_change_key_invalid_crypt_command(self): with encrypted_filesystem() as (fs, _): with self.assertRaises(lzc_exc.UnknownCryptCommand): lzc.lzc_change_key(fs, 'duplicate_key') def test_load_key(self): with encrypted_filesystem() as (fs, key): lzc.lzc_unload_key(fs) lzc.lzc_load_key(fs, False, key) def test_load_key_invalid(self): with encrypted_filesystem() as (fs, key): lzc.lzc_unload_key(fs) with self.assertRaises(lzc_exc.EncryptionKeyInvalid): lzc.lzc_load_key(fs, False, os.urandom(lzc.WRAPPING_KEY_LEN)) def test_load_key_already_loaded(self): with encrypted_filesystem() as (fs, key): lzc.lzc_unload_key(fs) lzc.lzc_load_key(fs, False, key) with self.assertRaises(lzc_exc.EncryptionKeyAlreadyLoaded): lzc.lzc_load_key(fs, False, key) def test_load_key_missing_fs(self): name = b"nonexistent" with self.assertRaises(lzc_exc.FilesystemNotFound): lzc.lzc_load_key(name, False, key=os.urandom(lzc.WRAPPING_KEY_LEN)) def test_unload_key(self): with encrypted_filesystem() as (fs, _): lzc.lzc_unload_key(fs) def test_unload_key_missing_fs(self): name = b"nonexistent" with self.assertRaises(lzc_exc.FilesystemNotFound): lzc.lzc_unload_key(name) def test_unload_key_busy(self): with encrypted_filesystem() as (fs, _): with zfs_mount(fs): with self.assertRaises(lzc_exc.DatasetBusy): lzc.lzc_unload_key(fs) def test_unload_key_not_loaded(self): with encrypted_filesystem() as (fs, _): lzc.lzc_unload_key(fs) with self.assertRaises(lzc_exc.EncryptionKeyNotLoaded): lzc.lzc_unload_key(fs) def test_remap_missing_fs(self): name = b"nonexistent" with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_remap(name) def test_remap_invalid_fs(self): ds = ZFSTest.pool.makeName(b"fs1") snap = ds + b"@snap1" lzc.lzc_snapshot([snap]) with self.assertRaises(lzc_exc.NameInvalid): lzc.lzc_remap(snap) def test_remap_too_long_fs_name(self): name = ZFSTest.pool.makeTooLongName() with self.assertRaises(lzc_exc.NameTooLong): lzc.lzc_remap(name) def test_remap(self): name = ZFSTest.pool.makeName(b"fs1") lzc.lzc_remap(name) def test_checkpoint(self): pool = ZFSTest.pool.getRoot().getName() lzc.lzc_pool_checkpoint(pool) def test_checkpoint_missing_pool(self): pool = b"nonexistent" with self.assertRaises(lzc_exc.PoolNotFound): lzc.lzc_pool_checkpoint(pool) def test_checkpoint_already_exists(self): pool = ZFSTest.pool.getRoot().getName() lzc.lzc_pool_checkpoint(pool) with self.assertRaises(lzc_exc.CheckpointExists): lzc.lzc_pool_checkpoint(pool) def test_checkpoint_discard(self): pool = ZFSTest.pool.getRoot().getName() lzc.lzc_pool_checkpoint(pool) lzc.lzc_pool_checkpoint_discard(pool) def test_checkpoint_discard_missing_pool(self): pool = b"nonexistent" with self.assertRaises(lzc_exc.PoolNotFound): lzc.lzc_pool_checkpoint_discard(pool) def test_checkpoint_discard_missing_checkpoint(self): pool = ZFSTest.pool.getRoot().getName() with self.assertRaises(lzc_exc.CheckpointNotFound): lzc.lzc_pool_checkpoint_discard(pool) @needs_support(lzc.lzc_list_children) def test_list_children(self): name = ZFSTest.pool.makeName(b"fs1/fs") names = [ZFSTest.pool.makeName(b"fs1/fs/test1"), ZFSTest.pool.makeName(b"fs1/fs/test2"), ZFSTest.pool.makeName(b"fs1/fs/test3"), ] # and one snap to see that it is not listed snap = ZFSTest.pool.makeName(b"fs1/fs@test") for fs in names: lzc.lzc_create(fs) lzc.lzc_snapshot([snap]) children = list(lzc.lzc_list_children(name)) self.assertItemsEqual(children, names) @needs_support(lzc.lzc_list_children) def test_list_children_nonexistent(self): fs = ZFSTest.pool.makeName(b"nonexistent") with self.assertRaises(lzc_exc.DatasetNotFound): list(lzc.lzc_list_children(fs)) @needs_support(lzc.lzc_list_children) def test_list_children_of_snap(self): snap = ZFSTest.pool.makeName(b"@newsnap") lzc.lzc_snapshot([snap]) children = list(lzc.lzc_list_children(snap)) self.assertEqual(children, []) @needs_support(lzc.lzc_list_snaps) def test_list_snaps(self): name = ZFSTest.pool.makeName(b"fs1/fs") names = [ZFSTest.pool.makeName(b"fs1/fs@test1"), ZFSTest.pool.makeName(b"fs1/fs@test2"), ZFSTest.pool.makeName(b"fs1/fs@test3"), ] # and one filesystem to see that it is not listed fs = ZFSTest.pool.makeName(b"fs1/fs/test") for snap in names: lzc.lzc_snapshot([snap]) lzc.lzc_create(fs) snaps = list(lzc.lzc_list_snaps(name)) self.assertItemsEqual(snaps, names) @needs_support(lzc.lzc_list_snaps) def test_list_snaps_nonexistent(self): fs = ZFSTest.pool.makeName(b"nonexistent") with self.assertRaises(lzc_exc.DatasetNotFound): list(lzc.lzc_list_snaps(fs)) @needs_support(lzc.lzc_list_snaps) def test_list_snaps_of_snap(self): snap = ZFSTest.pool.makeName(b"@newsnap") lzc.lzc_snapshot([snap]) snaps = list(lzc.lzc_list_snaps(snap)) self.assertEqual(snaps, []) @needs_support(lzc.lzc_get_props) def test_get_fs_props(self): fs = ZFSTest.pool.makeName(b"new") props = {b"user:foo": b"bar"} lzc.lzc_create(fs, props=props) actual_props = lzc.lzc_get_props(fs) self.assertDictContainsSubset(props, actual_props) @needs_support(lzc.lzc_get_props) def test_get_fs_props_with_child(self): parent = ZFSTest.pool.makeName(b"parent") child = ZFSTest.pool.makeName(b"parent/child") parent_props = {b"user:foo": b"parent"} child_props = {b"user:foo": b"child"} lzc.lzc_create(parent, props=parent_props) lzc.lzc_create(child, props=child_props) actual_parent_props = lzc.lzc_get_props(parent) actual_child_props = lzc.lzc_get_props(child) self.assertDictContainsSubset(parent_props, actual_parent_props) self.assertDictContainsSubset(child_props, actual_child_props) @needs_support(lzc.lzc_get_props) def test_get_snap_props(self): snapname = ZFSTest.pool.makeName(b"@snap") snaps = [snapname] props = {b"user:foo": b"bar"} lzc.lzc_snapshot(snaps, props) actual_props = lzc.lzc_get_props(snapname) self.assertDictContainsSubset(props, actual_props) @needs_support(lzc.lzc_get_props) def test_get_props_nonexistent(self): fs = ZFSTest.pool.makeName(b"nonexistent") with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_get_props(fs) @needs_support(lzc.lzc_get_props) def test_get_mountpoint_none(self): ''' If the *mountpoint* property is set to none, then its value is returned as `bytes` "none". Also, a child filesystem inherits that value. ''' fs = ZFSTest.pool.makeName(b"new") child = ZFSTest.pool.makeName(b"new/child") props = {b"mountpoint": b"none"} lzc.lzc_create(fs, props=props) lzc.lzc_create(child) actual_props = lzc.lzc_get_props(fs) self.assertDictContainsSubset(props, actual_props) # check that mountpoint value is correctly inherited child_props = lzc.lzc_get_props(child) self.assertDictContainsSubset(props, child_props) @needs_support(lzc.lzc_get_props) def test_get_mountpoint_legacy(self): ''' If the *mountpoint* property is set to legacy, then its value is returned as `bytes` "legacy". Also, a child filesystem inherits that value. ''' fs = ZFSTest.pool.makeName(b"new") child = ZFSTest.pool.makeName(b"new/child") props = {b"mountpoint": b"legacy"} lzc.lzc_create(fs, props=props) lzc.lzc_create(child) actual_props = lzc.lzc_get_props(fs) self.assertDictContainsSubset(props, actual_props) # check that mountpoint value is correctly inherited child_props = lzc.lzc_get_props(child) self.assertDictContainsSubset(props, child_props) @needs_support(lzc.lzc_get_props) def test_get_mountpoint_path(self): ''' If the *mountpoint* property is set to a path and the property is not explicitly set on a child filesystem, then its value is that of the parent filesystem with the child's name appended using the '/' separator. ''' fs = ZFSTest.pool.makeName(b"new") child = ZFSTest.pool.makeName(b"new/child") props = {b"mountpoint": b"/mnt"} lzc.lzc_create(fs, props=props) lzc.lzc_create(child) actual_props = lzc.lzc_get_props(fs) self.assertDictContainsSubset(props, actual_props) # check that mountpoint value is correctly inherited child_props = lzc.lzc_get_props(child) self.assertDictContainsSubset( {b"mountpoint": b"/mnt/child"}, child_props) @needs_support(lzc.lzc_get_props) def test_get_snap_clones(self): fs = ZFSTest.pool.makeName(b"new") snap = ZFSTest.pool.makeName(b"@snap") clone1 = ZFSTest.pool.makeName(b"clone1") clone2 = ZFSTest.pool.makeName(b"clone2") lzc.lzc_create(fs) lzc.lzc_snapshot([snap]) lzc.lzc_clone(clone1, snap) lzc.lzc_clone(clone2, snap) clones_prop = lzc.lzc_get_props(snap)["clones"] self.assertItemsEqual(clones_prop, [clone1, clone2]) @needs_support(lzc.lzc_rename) def test_rename(self): src = ZFSTest.pool.makeName(b"source") tgt = ZFSTest.pool.makeName(b"target") lzc.lzc_create(src) lzc.lzc_rename(src, tgt) self.assertNotExists(src) self.assertExists(tgt) @needs_support(lzc.lzc_rename) def test_rename_nonexistent(self): src = ZFSTest.pool.makeName(b"source") tgt = ZFSTest.pool.makeName(b"target") with self.assertRaises(lzc_exc.FilesystemNotFound): lzc.lzc_rename(src, tgt) @needs_support(lzc.lzc_rename) def test_rename_existing_target(self): src = ZFSTest.pool.makeName(b"source") tgt = ZFSTest.pool.makeName(b"target") lzc.lzc_create(src) lzc.lzc_create(tgt) with self.assertRaises(lzc_exc.FilesystemExists): lzc.lzc_rename(src, tgt) @needs_support(lzc.lzc_rename) def test_rename_nonexistent_target_parent(self): src = ZFSTest.pool.makeName(b"source") tgt = ZFSTest.pool.makeName(b"parent/target") lzc.lzc_create(src) with self.assertRaises(lzc_exc.FilesystemNotFound): lzc.lzc_rename(src, tgt) @needs_support(lzc.lzc_rename) def test_rename_parent_is_zvol(self): src = ZFSTest.pool.makeName(b"source") zvol = ZFSTest.pool.makeName(b"parent") tgt = zvol + b"/target" props = {b"volsize": 1024 * 1024} lzc.lzc_create(src) lzc.lzc_create(zvol, ds_type='zvol', props=props) with self.assertRaises(lzc_exc.WrongParent): lzc.lzc_rename(src, tgt) @needs_support(lzc.lzc_destroy) def test_destroy(self): fs = ZFSTest.pool.makeName(b"test-fs") lzc.lzc_create(fs) lzc.lzc_destroy(fs) self.assertNotExists(fs) @needs_support(lzc.lzc_destroy) def test_destroy_nonexistent(self): fs = ZFSTest.pool.makeName(b"test-fs") with self.assertRaises(lzc_exc.FilesystemNotFound): lzc.lzc_destroy(fs) @needs_support(lzc.lzc_inherit_prop) def test_inherit_prop(self): parent = ZFSTest.pool.makeName(b"parent") child = ZFSTest.pool.makeName(b"parent/child") the_prop = b"user:foo" parent_props = {the_prop: b"parent"} child_props = {the_prop: b"child"} lzc.lzc_create(parent, props=parent_props) lzc.lzc_create(child, props=child_props) lzc.lzc_inherit_prop(child, the_prop) actual_props = lzc.lzc_get_props(child) self.assertDictContainsSubset(parent_props, actual_props) @needs_support(lzc.lzc_inherit_prop) def test_inherit_missing_prop(self): parent = ZFSTest.pool.makeName(b"parent") child = ZFSTest.pool.makeName(b"parent/child") the_prop = "user:foo" child_props = {the_prop: "child"} lzc.lzc_create(parent) lzc.lzc_create(child, props=child_props) lzc.lzc_inherit_prop(child, the_prop) actual_props = lzc.lzc_get_props(child) self.assertNotIn(the_prop, actual_props) @needs_support(lzc.lzc_inherit_prop) def test_inherit_readonly_prop(self): parent = ZFSTest.pool.makeName(b"parent") child = ZFSTest.pool.makeName(b"parent/child") the_prop = b"createtxg" lzc.lzc_create(parent) lzc.lzc_create(child) with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_inherit_prop(child, the_prop) @needs_support(lzc.lzc_inherit_prop) def test_inherit_unknown_prop(self): parent = ZFSTest.pool.makeName(b"parent") child = ZFSTest.pool.makeName(b"parent/child") the_prop = b"nosuchprop" lzc.lzc_create(parent) lzc.lzc_create(child) with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_inherit_prop(child, the_prop) @needs_support(lzc.lzc_inherit_prop) def test_inherit_prop_on_snap(self): fs = ZFSTest.pool.makeName(b"new") snapname = ZFSTest.pool.makeName(b"new@snap") prop = b"user:foo" fs_val = b"fs" snap_val = b"snap" lzc.lzc_create(fs, props={prop: fs_val}) lzc.lzc_snapshot([snapname], props={prop: snap_val}) actual_props = lzc.lzc_get_props(snapname) self.assertDictContainsSubset({prop: snap_val}, actual_props) lzc.lzc_inherit_prop(snapname, prop) actual_props = lzc.lzc_get_props(snapname) self.assertDictContainsSubset({prop: fs_val}, actual_props) @needs_support(lzc.lzc_set_prop) def test_set_fs_prop(self): fs = ZFSTest.pool.makeName(b"new") prop = b"user:foo" val = b"bar" lzc.lzc_create(fs) lzc.lzc_set_prop(fs, prop, val) actual_props = lzc.lzc_get_props(fs) self.assertDictContainsSubset({prop: val}, actual_props) @needs_support(lzc.lzc_set_prop) def test_set_snap_prop(self): snapname = ZFSTest.pool.makeName(b"@snap") prop = b"user:foo" val = b"bar" lzc.lzc_snapshot([snapname]) lzc.lzc_set_prop(snapname, prop, val) actual_props = lzc.lzc_get_props(snapname) self.assertDictContainsSubset({prop: val}, actual_props) @needs_support(lzc.lzc_set_prop) def test_set_prop_nonexistent(self): fs = ZFSTest.pool.makeName(b"nonexistent") prop = b"user:foo" val = b"bar" with self.assertRaises(lzc_exc.DatasetNotFound): lzc.lzc_set_prop(fs, prop, val) @needs_support(lzc.lzc_set_prop) def test_set_sys_prop(self): fs = ZFSTest.pool.makeName(b"new") prop = b"recordsize" val = 4096 lzc.lzc_create(fs) lzc.lzc_set_prop(fs, prop, val) actual_props = lzc.lzc_get_props(fs) self.assertDictContainsSubset({prop: val}, actual_props) @needs_support(lzc.lzc_set_prop) def test_set_invalid_prop(self): fs = ZFSTest.pool.makeName(b"new") prop = b"nosuchprop" val = 0 lzc.lzc_create(fs) with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_set_prop(fs, prop, val) @needs_support(lzc.lzc_set_prop) def test_set_invalid_value_prop(self): fs = ZFSTest.pool.makeName(b"new") prop = b"atime" val = 100 lzc.lzc_create(fs) with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_set_prop(fs, prop, val) @needs_support(lzc.lzc_set_prop) def test_set_invalid_value_prop_2(self): fs = ZFSTest.pool.makeName(b"new") prop = b"readonly" val = 100 lzc.lzc_create(fs) with self.assertRaises(lzc_exc.PropertyInvalid): lzc.lzc_set_prop(fs, prop, val) @needs_support(lzc.lzc_set_prop) def test_set_prop_too_small_quota(self): fs = ZFSTest.pool.makeName(b"new") prop = b"refquota" val = 1 lzc.lzc_create(fs) with self.assertRaises(lzc_exc.NoSpace): lzc.lzc_set_prop(fs, prop, val) @needs_support(lzc.lzc_set_prop) def test_set_readonly_prop(self): fs = ZFSTest.pool.makeName(b"new") prop = b"creation" val = 0 lzc.lzc_create(fs) lzc.lzc_set_prop(fs, prop, val) actual_props = lzc.lzc_get_props(fs) # the change is silently ignored self.assertTrue(actual_props[prop] != val) class _TempPool(object): SNAPSHOTS = [b'snap', b'snap1', b'snap2'] BOOKMARKS = [b'bmark', b'bmark1', b'bmark2'] _cachefile_suffix = ".cachefile" # XXX Whether to do a sloppy but much faster cleanup # or a proper but slower one. _recreate_pools = True def __init__(self, size=128 * 1024 * 1024, readonly=False, filesystems=[]): self._filesystems = filesystems self._readonly = readonly if sys.version_info < (3, 0): self._pool_name = b'pool.' + bytes(uuid.uuid4()) else: self._pool_name = b'pool.' + bytes(str(uuid.uuid4()), encoding='utf-8') self._root = _Filesystem(self._pool_name) (fd, self._pool_file_path) = tempfile.mkstemp( suffix='.zpool', prefix='tmp-') if readonly: cachefile = self._pool_file_path + _TempPool._cachefile_suffix else: cachefile = 'none' self._zpool_create = [ 'zpool', 'create', '-o', 'cachefile=' + cachefile, '-O', 'mountpoint=legacy', self._pool_name, self._pool_file_path] try: os.ftruncate(fd, size) os.close(fd) subprocess.check_output( self._zpool_create, stderr=subprocess.STDOUT) for fs in filesystems: lzc.lzc_create(self.makeName(fs)) self._bmarks_supported = self.isPoolFeatureEnabled('bookmarks') if readonly: # To make a pool read-only it must exported and re-imported # with readonly option. # The most deterministic way to re-import the pool is by using # a cache file. # But the cache file has to be stashed away before the pool is # exported, because otherwise the pool is removed from the # cache. shutil.copyfile(cachefile, cachefile + '.tmp') subprocess.check_output( ['zpool', 'export', '-f', self._pool_name], stderr=subprocess.STDOUT) os.rename(cachefile + '.tmp', cachefile) subprocess.check_output( ['zpool', 'import', '-f', '-N', '-c', cachefile, '-o', 'readonly=on', self._pool_name], stderr=subprocess.STDOUT) os.remove(cachefile) except subprocess.CalledProcessError as e: self.cleanUp() if b'permission denied' in e.output: raise unittest.SkipTest( 'insufficient privileges to run libzfs_core tests') print('command failed: ', e.output) raise except Exception: self.cleanUp() raise def reset(self): if self._readonly: return if not self.__class__._recreate_pools: snaps = [] for fs in [''] + self._filesystems: for snap in self.__class__.SNAPSHOTS: snaps.append(self.makeName(fs + '@' + snap)) self.getRoot().visitSnaps(lambda snap: snaps.append(snap)) lzc.lzc_destroy_snaps(snaps, defer=False) if self._bmarks_supported: bmarks = [] for fs in [''] + self._filesystems: for bmark in self.__class__.BOOKMARKS: bmarks.append(self.makeName(fs + '#' + bmark)) self.getRoot().visitBookmarks( lambda bmark: bmarks.append(bmark)) lzc.lzc_destroy_bookmarks(bmarks) self.getRoot().reset() return # On the Buildbot builders this may fail with "pool is busy" # Retry 5 times before raising an error retry = 0 while True: try: subprocess.check_output( ['zpool', 'destroy', '-f', self._pool_name], stderr=subprocess.STDOUT) subprocess.check_output( self._zpool_create, stderr=subprocess.STDOUT) break except subprocess.CalledProcessError as e: if b'pool is busy' in e.output and retry < 5: retry += 1 time.sleep(1) continue else: print('command failed: ', e.output) raise for fs in self._filesystems: lzc.lzc_create(self.makeName(fs)) self.getRoot().reset() def cleanUp(self): try: subprocess.check_output( ['zpool', 'destroy', '-f', self._pool_name], stderr=subprocess.STDOUT) except Exception: pass try: os.remove(self._pool_file_path) except Exception: pass try: os.remove(self._pool_file_path + _TempPool._cachefile_suffix) except Exception: pass try: os.remove( self._pool_file_path + _TempPool._cachefile_suffix + '.tmp') except Exception: pass def makeName(self, relative=None): if not relative: return self._pool_name if relative.startswith((b'@', b'#')): return self._pool_name + relative return self._pool_name + b'/' + relative def makeTooLongName(self, prefix=None): if not prefix: prefix = b'x' prefix = self.makeName(prefix) pad_len = lzc.MAXNAMELEN + 1 - len(prefix) if pad_len > 0: return prefix + b'x' * pad_len else: return prefix def makeTooLongComponent(self, prefix=None): padding = b'x' * (lzc.MAXNAMELEN + 1) if not prefix: prefix = padding else: prefix = prefix + padding return self.makeName(prefix) def getRoot(self): return self._root def getFilesystem(self, fsname): return _Filesystem(self._pool_name + b'/' + fsname) def isPoolFeatureAvailable(self, feature): output = subprocess.check_output( ['zpool', 'get', '-H', 'feature@' + feature, self._pool_name]) output = output.strip() return output != '' def isPoolFeatureEnabled(self, feature): output = subprocess.check_output( ['zpool', 'get', '-H', 'feature@' + feature, self._pool_name]) output = output.split()[2] return output in [b'active', b'enabled'] class _Filesystem(object): def __init__(self, name): self._name = name self.reset() def getName(self): return self._name def reset(self): self._children = [] self._fs_id = 0 self._snap_id = 0 self._bmark_id = 0 def getFilesystem(self): self._fs_id += 1 fsname = self._name + b'/fs' + str(self._fs_id).encode() fs = _Filesystem(fsname) self._children.append(fs) return fs def getProperty(self, propname, received=False): if received: output = subprocess.check_output( ['zfs', 'get', '-pH', '-o', 'received', propname, self._name]) else: output = subprocess.check_output( ['zfs', 'get', '-pH', '-o', 'value', propname, self._name]) return output.strip() def _makeSnapName(self, i): return self._name + b'@snap' + str(i).encode() def getSnap(self): self._snap_id += 1 return self._makeSnapName(self._snap_id) def _makeBookmarkName(self, i): return self._name + b'#bmark' + bytes(i) def getBookmark(self): self._bmark_id += 1 return self._makeBookmarkName(self._bmark_id) def _makeTooLongName(self, too_long_component): if too_long_component: return b'x' * (lzc.MAXNAMELEN + 1) # Note that another character is used for one of '/', '@', '#'. comp_len = lzc.MAXNAMELEN - len(self._name) if comp_len > 0: return b'x' * comp_len else: return b'x' def getTooLongFilesystemName(self, too_long_component): return self._name + b'/' + self._makeTooLongName(too_long_component) def getTooLongSnap(self, too_long_component): return self._name + b'@' + self._makeTooLongName(too_long_component) def getTooLongBookmark(self, too_long_component): return self._name + b'#' + self._makeTooLongName(too_long_component) def _visitFilesystems(self, visitor): for child in self._children: child._visitFilesystems(visitor) visitor(self) def visitFilesystems(self, visitor): def _fsVisitor(fs): visitor(fs._name) self._visitFilesystems(_fsVisitor) def visitSnaps(self, visitor): def _snapVisitor(fs): for i in range(1, fs._snap_id + 1): visitor(fs._makeSnapName(i)) self._visitFilesystems(_snapVisitor) def visitBookmarks(self, visitor): def _bmarkVisitor(fs): for i in range(1, fs._bmark_id + 1): visitor(fs._makeBookmarkName(i)) self._visitFilesystems(_bmarkVisitor) # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/exceptions.py0000644000000000000000000000007413612141512023256 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/exceptions.py0000644016037001603700000003302513612141512023256 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Exceptions that can be raised by libzfs_core operations. """ from __future__ import absolute_import, division, print_function import errno from ._constants import ( ZFS_ERR_CHECKPOINT_EXISTS, ZFS_ERR_DISCARDING_CHECKPOINT, ZFS_ERR_NO_CHECKPOINT, ZFS_ERR_DEVRM_IN_PROGRESS, ZFS_ERR_VDEV_TOO_BIG, ZFS_ERR_WRONG_PARENT ) class ZFSError(Exception): errno = None message = None name = None def __str__(self): if self.name is not None: return "[Errno %d] %s: '%s'" % ( self.errno, self.message, self.name) else: return "[Errno %d] %s" % (self.errno, self.message) def __repr__(self): return "%s(%r, %r)" % ( self.__class__.__name__, self.errno, self.message) class ZFSGenericError(ZFSError): def __init__(self, errno, name, message): self.errno = errno self.message = message self.name = name class ZFSInitializationFailed(ZFSError): message = "Failed to initialize libzfs_core" def __init__(self, errno): self.errno = errno class MultipleOperationsFailure(ZFSError): def __init__(self, errors, suppressed_count): # Use first of the individual error codes # as an overall error code. This is more consistent. self.errno = errors[0].errno self.errors = errors # this many errors were encountered but not placed on the `errors` list self.suppressed_count = suppressed_count def __str__(self): return "%s, %d errors included, %d suppressed" % ( ZFSError.__str__(self), len(self.errors), self.suppressed_count) def __repr__(self): return "%s(%r, %r, errors=%r, suppressed=%r)" % ( self.__class__.__name__, self.errno, self.message, self.errors, self.suppressed_count) class DatasetNotFound(ZFSError): """ This exception is raised when an operation failure can be caused by a missing snapshot or a missing filesystem and it is impossible to distinguish between the causes. """ errno = errno.ENOENT message = "Dataset not found" def __init__(self, name): self.name = name class DatasetExists(ZFSError): """ This exception is raised when an operation failure can be caused by an existing snapshot or filesystem and it is impossible to distinguish between the causes. """ errno = errno.EEXIST message = "Dataset already exists" def __init__(self, name): self.name = name class NotClone(ZFSError): errno = errno.EINVAL message = "Filesystem is not a clone, can not promote" def __init__(self, name): self.name = name class FilesystemExists(DatasetExists): message = "Filesystem already exists" def __init__(self, name): self.name = name class FilesystemNotFound(DatasetNotFound): message = "Filesystem not found" def __init__(self, name): self.name = name class ParentNotFound(ZFSError): errno = errno.ENOENT message = "Parent not found" def __init__(self, name): self.name = name class WrongParent(ZFSError): errno = ZFS_ERR_WRONG_PARENT message = "Parent dataset is not a filesystem" def __init__(self, name): self.name = name class SnapshotExists(DatasetExists): message = "Snapshot already exists" def __init__(self, name): self.name = name class SnapshotNotFound(DatasetNotFound): message = "Snapshot not found" def __init__(self, name): self.name = name class SnapshotNotLatest(ZFSError): errno = errno.EEXIST message = "Snapshot is not the latest" def __init__(self, name): self.name = name class SnapshotIsCloned(ZFSError): errno = errno.EEXIST message = "Snapshot is cloned" def __init__(self, name): self.name = name class SnapshotIsHeld(ZFSError): errno = errno.EBUSY message = "Snapshot is held" def __init__(self, name): self.name = name class DuplicateSnapshots(ZFSError): errno = errno.EXDEV message = "Requested multiple snapshots of the same filesystem" def __init__(self, name): self.name = name class SnapshotFailure(MultipleOperationsFailure): message = "Creation of snapshot(s) failed for one or more reasons" def __init__(self, errors, suppressed_count): super(SnapshotFailure, self).__init__(errors, suppressed_count) class SnapshotDestructionFailure(MultipleOperationsFailure): message = "Destruction of snapshot(s) failed for one or more reasons" def __init__(self, errors, suppressed_count): super(SnapshotDestructionFailure, self).__init__( errors, suppressed_count) class BookmarkExists(ZFSError): errno = errno.EEXIST message = "Bookmark already exists" def __init__(self, name): self.name = name class BookmarkNotFound(ZFSError): errno = errno.ENOENT message = "Bookmark not found" def __init__(self, name): self.name = name class BookmarkMismatch(ZFSError): errno = errno.EINVAL message = "Bookmark is not in snapshot's filesystem" def __init__(self, name): self.name = name class BookmarkNotSupported(ZFSError): errno = errno.ENOTSUP message = "Bookmark feature is not supported" def __init__(self, name): self.name = name class BookmarkFailure(MultipleOperationsFailure): message = "Creation of bookmark(s) failed for one or more reasons" def __init__(self, errors, suppressed_count): super(BookmarkFailure, self).__init__(errors, suppressed_count) class BookmarkDestructionFailure(MultipleOperationsFailure): message = "Destruction of bookmark(s) failed for one or more reasons" def __init__(self, errors, suppressed_count): super(BookmarkDestructionFailure, self).__init__( errors, suppressed_count) class BadHoldCleanupFD(ZFSError): errno = errno.EBADF message = "Bad file descriptor as cleanup file descriptor" class HoldExists(ZFSError): errno = errno.EEXIST message = "Hold with a given tag already exists on snapshot" def __init__(self, name): self.name = name class HoldNotFound(ZFSError): errno = errno.ENOENT message = "Hold with a given tag does not exist on snapshot" def __init__(self, name): self.name = name class HoldFailure(MultipleOperationsFailure): message = "Placement of hold(s) failed for one or more reasons" def __init__(self, errors, suppressed_count): super(HoldFailure, self).__init__(errors, suppressed_count) class HoldReleaseFailure(MultipleOperationsFailure): message = "Release of hold(s) failed for one or more reasons" def __init__(self, errors, suppressed_count): super(HoldReleaseFailure, self).__init__(errors, suppressed_count) class SnapshotMismatch(ZFSError): errno = errno.ENODEV message = "Snapshot is not descendant of source snapshot" def __init__(self, name): self.name = name class StreamMismatch(ZFSError): errno = errno.ENODEV message = "Stream is not applicable to destination dataset" def __init__(self, name): self.name = name class DestinationModified(ZFSError): errno = errno.ETXTBSY message = "Destination dataset has modifications that can not be undone" def __init__(self, name): self.name = name class BadStream(ZFSError): errno = errno.EBADE message = "Bad backup stream" class StreamFeatureNotSupported(ZFSError): errno = errno.ENOTSUP message = "Stream contains unsupported feature" class UnknownStreamFeature(ZFSError): errno = errno.ENOTSUP message = "Unknown feature requested for stream" class StreamFeatureInvalid(ZFSError): errno = errno.EINVAL message = "Kernel modules must be upgraded to receive this stream" class StreamFeatureIncompatible(ZFSError): errno = errno.EINVAL message = "Incompatible embedded feature with encrypted receive" class ReceivePropertyFailure(MultipleOperationsFailure): message = "Receiving of properties failed for one or more reasons" def __init__(self, errors, suppressed_count): super(ReceivePropertyFailure, self).__init__(errors, suppressed_count) class StreamIOError(ZFSError): message = "I/O error while writing or reading stream" def __init__(self, errno): self.errno = errno class ZIOError(ZFSError): errno = errno.EIO message = "I/O error" def __init__(self, name): self.name = name class NoSpace(ZFSError): errno = errno.ENOSPC message = "No space left" def __init__(self, name): self.name = name class QuotaExceeded(ZFSError): errno = errno.EDQUOT message = "Quota exceeded" def __init__(self, name): self.name = name class DatasetBusy(ZFSError): errno = errno.EBUSY message = "Dataset is busy" def __init__(self, name): self.name = name class NameTooLong(ZFSError): errno = errno.ENAMETOOLONG message = "Dataset name is too long" def __init__(self, name): self.name = name class NameInvalid(ZFSError): errno = errno.EINVAL message = "Invalid name" def __init__(self, name): self.name = name class SnapshotNameInvalid(NameInvalid): message = "Invalid name for snapshot" def __init__(self, name): self.name = name class FilesystemNameInvalid(NameInvalid): message = "Invalid name for filesystem or volume" def __init__(self, name): self.name = name class BookmarkNameInvalid(NameInvalid): message = "Invalid name for bookmark" def __init__(self, name): self.name = name class ReadOnlyPool(ZFSError): errno = errno.EROFS message = "Pool is read-only" def __init__(self, name): self.name = name class SuspendedPool(ZFSError): errno = errno.EAGAIN message = "Pool is suspended" def __init__(self, name): self.name = name class PoolNotFound(ZFSError): errno = errno.EXDEV message = "No such pool" def __init__(self, name): self.name = name class PoolsDiffer(ZFSError): errno = errno.EXDEV message = "Source and target belong to different pools" def __init__(self, name): self.name = name class FeatureNotSupported(ZFSError): errno = errno.ENOTSUP message = "Feature is not supported in this version" def __init__(self, name): self.name = name class PropertyNotSupported(ZFSError): errno = errno.ENOTSUP message = "Property is not supported in this version" def __init__(self, name): self.name = name class PropertyInvalid(ZFSError): errno = errno.EINVAL message = "Invalid property or property value" def __init__(self, name): self.name = name class DatasetTypeInvalid(ZFSError): errno = errno.EINVAL message = "Specified dataset type is unknown" def __init__(self, name): self.name = name class UnknownCryptCommand(ZFSError): errno = errno.EINVAL message = "Specified crypt command is invalid" def __init__(self, name): self.name = name class EncryptionKeyNotLoaded(ZFSError): errno = errno.EACCES message = "Encryption key is not currently loaded" class EncryptionKeyAlreadyLoaded(ZFSError): errno = errno.EEXIST message = "Encryption key is already loaded" class EncryptionKeyInvalid(ZFSError): errno = errno.EACCES message = "Incorrect encryption key provided" class ZCPError(ZFSError): errno = None message = None class ZCPSyntaxError(ZCPError): errno = errno.EINVAL message = "Channel program contains syntax errors" def __init__(self, details): self.details = details class ZCPRuntimeError(ZCPError): errno = errno.ECHRNG message = "Channel programs encountered a runtime error" def __init__(self, details): self.details = details class ZCPLimitInvalid(ZCPError): errno = errno.EINVAL message = "Channel program called with invalid limits" class ZCPTimeout(ZCPError): errno = errno.ETIME message = "Channel program timed out" class ZCPSpaceError(ZCPError): errno = errno.ENOSPC message = "Channel program exhausted the memory limit" class ZCPMemoryError(ZCPError): errno = errno.ENOMEM message = "Channel program return value too large" class ZCPPermissionError(ZCPError): errno = errno.EPERM message = "Channel programs must be run as root" class CheckpointExists(ZFSError): errno = ZFS_ERR_CHECKPOINT_EXISTS message = "Pool already has a checkpoint" class CheckpointNotFound(ZFSError): errno = ZFS_ERR_NO_CHECKPOINT message = "Pool does not have a checkpoint" class CheckpointDiscarding(ZFSError): errno = ZFS_ERR_DISCARDING_CHECKPOINT message = "Pool checkpoint is being discarded" class DeviceRemovalRunning(ZFSError): errno = ZFS_ERR_DEVRM_IN_PROGRESS message = "A vdev is currently being removed" class DeviceTooBig(ZFSError): errno = ZFS_ERR_VDEV_TOO_BIG message = "One or more top-level vdevs exceed the maximum vdev size" # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/bindings0000644000000000000000000000007413607166147022262 xustar000000000000000030 atime=1579730489.075055099 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/bindings/0000755016037001603700000000000013607166147022334 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/pyzfs/libzfs_core/bindings/PaxHeaders.151519/libnvpair.py0000644000000000000000000000007413607166132024671 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/bindings/libnvpair.py0000644016037001603700000001256013607166132024672 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Python bindings for ``libnvpair``. """ from __future__ import absolute_import, division, print_function CDEF = """ typedef ... nvlist_t; typedef ... nvpair_t; typedef enum { DATA_TYPE_UNKNOWN = 0, DATA_TYPE_BOOLEAN, DATA_TYPE_BYTE, DATA_TYPE_INT16, DATA_TYPE_UINT16, DATA_TYPE_INT32, DATA_TYPE_UINT32, DATA_TYPE_INT64, DATA_TYPE_UINT64, DATA_TYPE_STRING, DATA_TYPE_BYTE_ARRAY, DATA_TYPE_INT16_ARRAY, DATA_TYPE_UINT16_ARRAY, DATA_TYPE_INT32_ARRAY, DATA_TYPE_UINT32_ARRAY, DATA_TYPE_INT64_ARRAY, DATA_TYPE_UINT64_ARRAY, DATA_TYPE_STRING_ARRAY, DATA_TYPE_HRTIME, DATA_TYPE_NVLIST, DATA_TYPE_NVLIST_ARRAY, DATA_TYPE_BOOLEAN_VALUE, DATA_TYPE_INT8, DATA_TYPE_UINT8, DATA_TYPE_BOOLEAN_ARRAY, DATA_TYPE_INT8_ARRAY, DATA_TYPE_UINT8_ARRAY } data_type_t; typedef enum { B_FALSE, B_TRUE } boolean_t; typedef unsigned char uchar_t; typedef unsigned int uint_t; int nvlist_alloc(nvlist_t **, uint_t, int); void nvlist_free(nvlist_t *); int nvlist_unpack(char *, size_t, nvlist_t **, int); void dump_nvlist(nvlist_t *, int); int nvlist_dup(nvlist_t *, nvlist_t **, int); int nvlist_add_boolean(nvlist_t *, const char *); int nvlist_add_boolean_value(nvlist_t *, const char *, boolean_t); int nvlist_add_byte(nvlist_t *, const char *, uchar_t); int nvlist_add_int8(nvlist_t *, const char *, int8_t); int nvlist_add_uint8(nvlist_t *, const char *, uint8_t); int nvlist_add_int16(nvlist_t *, const char *, int16_t); int nvlist_add_uint16(nvlist_t *, const char *, uint16_t); int nvlist_add_int32(nvlist_t *, const char *, int32_t); int nvlist_add_uint32(nvlist_t *, const char *, uint32_t); int nvlist_add_int64(nvlist_t *, const char *, int64_t); int nvlist_add_uint64(nvlist_t *, const char *, uint64_t); int nvlist_add_string(nvlist_t *, const char *, const char *); int nvlist_add_nvlist(nvlist_t *, const char *, nvlist_t *); int nvlist_add_boolean_array(nvlist_t *, const char *, boolean_t *, uint_t); int nvlist_add_byte_array(nvlist_t *, const char *, uchar_t *, uint_t); int nvlist_add_int8_array(nvlist_t *, const char *, int8_t *, uint_t); int nvlist_add_uint8_array(nvlist_t *, const char *, uint8_t *, uint_t); int nvlist_add_int16_array(nvlist_t *, const char *, int16_t *, uint_t); int nvlist_add_uint16_array(nvlist_t *, const char *, uint16_t *, uint_t); int nvlist_add_int32_array(nvlist_t *, const char *, int32_t *, uint_t); int nvlist_add_uint32_array(nvlist_t *, const char *, uint32_t *, uint_t); int nvlist_add_int64_array(nvlist_t *, const char *, int64_t *, uint_t); int nvlist_add_uint64_array(nvlist_t *, const char *, uint64_t *, uint_t); int nvlist_add_string_array(nvlist_t *, const char *, char *const *, uint_t); int nvlist_add_nvlist_array(nvlist_t *, const char *, nvlist_t **, uint_t); nvpair_t *nvlist_next_nvpair(nvlist_t *, nvpair_t *); nvpair_t *nvlist_prev_nvpair(nvlist_t *, nvpair_t *); char *nvpair_name(nvpair_t *); data_type_t nvpair_type(nvpair_t *); int nvpair_type_is_array(nvpair_t *); int nvpair_value_boolean_value(nvpair_t *, boolean_t *); int nvpair_value_byte(nvpair_t *, uchar_t *); int nvpair_value_int8(nvpair_t *, int8_t *); int nvpair_value_uint8(nvpair_t *, uint8_t *); int nvpair_value_int16(nvpair_t *, int16_t *); int nvpair_value_uint16(nvpair_t *, uint16_t *); int nvpair_value_int32(nvpair_t *, int32_t *); int nvpair_value_uint32(nvpair_t *, uint32_t *); int nvpair_value_int64(nvpair_t *, int64_t *); int nvpair_value_uint64(nvpair_t *, uint64_t *); int nvpair_value_string(nvpair_t *, char **); int nvpair_value_nvlist(nvpair_t *, nvlist_t **); int nvpair_value_boolean_array(nvpair_t *, boolean_t **, uint_t *); int nvpair_value_byte_array(nvpair_t *, uchar_t **, uint_t *); int nvpair_value_int8_array(nvpair_t *, int8_t **, uint_t *); int nvpair_value_uint8_array(nvpair_t *, uint8_t **, uint_t *); int nvpair_value_int16_array(nvpair_t *, int16_t **, uint_t *); int nvpair_value_uint16_array(nvpair_t *, uint16_t **, uint_t *); int nvpair_value_int32_array(nvpair_t *, int32_t **, uint_t *); int nvpair_value_uint32_array(nvpair_t *, uint32_t **, uint_t *); int nvpair_value_int64_array(nvpair_t *, int64_t **, uint_t *); int nvpair_value_uint64_array(nvpair_t *, uint64_t **, uint_t *); int nvpair_value_string_array(nvpair_t *, char ***, uint_t *); int nvpair_value_nvlist_array(nvpair_t *, nvlist_t ***, uint_t *); """ SOURCE = """ #include """ LIBRARY = "nvpair" # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/bindings/PaxHeaders.151519/libzfs_core.py0000644000000000000000000000007413607166147025212 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/bindings/libzfs_core.py0000644016037001603700000001224013607166147025206 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Python bindings for ``libzfs_core``. """ from __future__ import absolute_import, division, print_function CDEF = """ enum lzc_send_flags { LZC_SEND_FLAG_EMBED_DATA = 1, LZC_SEND_FLAG_LARGE_BLOCK = 2, LZC_SEND_FLAG_COMPRESS = 4, LZC_SEND_FLAG_RAW = 8 }; typedef enum { DMU_OST_NONE, DMU_OST_META, DMU_OST_ZFS, DMU_OST_ZVOL, DMU_OST_OTHER, DMU_OST_ANY, DMU_OST_NUMTYPES } dmu_objset_type_t; #define MAXNAMELEN 256 struct drr_begin { uint64_t drr_magic; uint64_t drr_versioninfo; /* was drr_version */ uint64_t drr_creation_time; dmu_objset_type_t drr_type; uint32_t drr_flags; uint64_t drr_toguid; uint64_t drr_fromguid; char drr_toname[MAXNAMELEN]; }; typedef struct zio_cksum { uint64_t zc_word[4]; } zio_cksum_t; typedef struct dmu_replay_record { enum { DRR_BEGIN, DRR_OBJECT, DRR_FREEOBJECTS, DRR_WRITE, DRR_FREE, DRR_END, DRR_WRITE_BYREF, DRR_SPILL, DRR_WRITE_EMBEDDED, DRR_NUMTYPES } drr_type; uint32_t drr_payloadlen; union { struct drr_begin drr_begin; /* ... */ struct drr_checksum { uint64_t drr_pad[34]; zio_cksum_t drr_checksum; } drr_checksum; } drr_u; } dmu_replay_record_t; typedef enum { DCP_CMD_NONE, DCP_CMD_RAW_RECV, DCP_CMD_NEW_KEY, DCP_CMD_INHERIT, DCP_CMD_FORCE_NEW_KEY, DCP_CMD_FORCE_INHERIT } dcp_cmd_t; int libzfs_core_init(void); void libzfs_core_fini(void); int lzc_bookmark(nvlist_t *, nvlist_t **); int lzc_change_key(const char *, uint64_t, nvlist_t *, uint8_t *, uint_t); int lzc_channel_program(const char *, const char *, uint64_t, uint64_t, nvlist_t *, nvlist_t **); int lzc_channel_program_nosync(const char *, const char *, uint64_t, uint64_t, nvlist_t *, nvlist_t **); int lzc_clone(const char *, const char *, nvlist_t *); int lzc_create(const char *, dmu_objset_type_t, nvlist_t *, uint8_t *, uint_t); int lzc_destroy_bookmarks(nvlist_t *, nvlist_t **); int lzc_destroy_snaps(nvlist_t *, boolean_t, nvlist_t **); boolean_t lzc_exists(const char *); int lzc_get_bookmarks(const char *, nvlist_t *, nvlist_t **); int lzc_get_holds(const char *, nvlist_t **); int lzc_hold(nvlist_t *, int, nvlist_t **); int lzc_load_key(const char *, boolean_t, uint8_t *, uint_t); int lzc_promote(const char *, nvlist_t *, nvlist_t **); int lzc_receive(const char *, nvlist_t *, const char *, boolean_t, boolean_t, int); int lzc_receive_one(const char *, nvlist_t *, const char *, boolean_t, boolean_t, boolean_t, int, const dmu_replay_record_t *, int, uint64_t *, uint64_t *, uint64_t *, nvlist_t **); int lzc_receive_resumable(const char *, nvlist_t *, const char *, boolean_t, boolean_t, int); int lzc_receive_with_cmdprops(const char *, nvlist_t *, nvlist_t *, uint8_t *, uint_t, const char *, boolean_t, boolean_t, boolean_t, int, const dmu_replay_record_t *, int, uint64_t *, uint64_t *, uint64_t *, nvlist_t **); int lzc_receive_with_header(const char *, nvlist_t *, const char *, boolean_t, boolean_t, boolean_t, int, const dmu_replay_record_t *); int lzc_release(nvlist_t *, nvlist_t **); int lzc_reopen(const char *, boolean_t); int lzc_rollback(const char *, char *, int); int lzc_rollback_to(const char *, const char *); int lzc_send(const char *, const char *, int, enum lzc_send_flags); int lzc_send_resume(const char *, const char *, int, enum lzc_send_flags, uint64_t, uint64_t); int lzc_send_space(const char *, const char *, enum lzc_send_flags, uint64_t *); int lzc_snaprange_space(const char *, const char *, uint64_t *); int lzc_snapshot(nvlist_t *, nvlist_t *, nvlist_t **); int lzc_sync(const char *, nvlist_t *, nvlist_t **); int lzc_unload_key(const char *); int lzc_remap(const char *); int lzc_pool_checkpoint(const char *); int lzc_pool_checkpoint_discard(const char *); int lzc_rename(const char *, const char *); int lzc_destroy(const char *fsname); int lzc_inherit(const char *fsname, const char *name, nvlist_t *); int lzc_set_props(const char *, nvlist_t *, nvlist_t *, nvlist_t *); int lzc_list (const char *, nvlist_t *); """ SOURCE = """ #include """ LIBRARY = "zfs_core" # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/bindings/PaxHeaders.151519/__init__.py0000644000000000000000000000007413607166132024442 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/bindings/__init__.py0000644016037001603700000000332213607166132024437 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ The package that contains a module per each C library that `libzfs_core` uses. The modules expose CFFI objects required to make calls to functions in the libraries. """ from __future__ import absolute_import, division, print_function import threading import importlib from cffi import FFI def _setup_cffi(): class LazyLibrary(object): def __init__(self, ffi, libname): self._ffi = ffi self._libname = libname self._lib = None self._lock = threading.Lock() def __getattr__(self, name): if self._lib is None: with self._lock: if self._lib is None: self._lib = self._ffi.dlopen(self._libname) return getattr(self._lib, name) MODULES = ["libnvpair", "libzfs_core"] ffi = FFI() for module_name in MODULES: module = importlib.import_module("." + module_name, __name__) ffi.cdef(module.CDEF) lib = LazyLibrary(ffi, module.LIBRARY) setattr(module, "ffi", ffi) setattr(module, "lib", lib) _setup_cffi() # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/__init__.py0000644000000000000000000000007413607166147022653 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/__init__.py0000644016037001603700000000764313607166147022662 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # ''' Python wrappers for **libzfs_core** library. *libzfs_core* is intended to be a stable, committed interface for programmatic administration of ZFS. This wrapper provides one-to-one wrappers for libzfs_core API functions, but the signatures and types are more natural to Python. nvlists are wrapped as dictionaries or lists depending on their usage. Some parameters have default values depending on typical use for increased convenience. Output parameters are not used and return values are directly returned. Enumerations and bit flags become strings and lists of strings in Python. Errors are reported as exceptions rather than integer errno-style error codes. The wrapper takes care to provide one-to-many mapping of the error codes to the exceptions by interpreting a context in which the error code is produced. To submit an issue or contribute to development of this package please visit its `GitHub repository `_. .. data:: MAXNAMELEN Maximum length of any ZFS name. ''' from __future__ import absolute_import, division, print_function from ._constants import ( MAXNAMELEN, ZCP_DEFAULT_INSTRLIMIT, ZCP_DEFAULT_MEMLIMIT, WRAPPING_KEY_LEN, zfs_key_location, zfs_keyformat, zio_encrypt ) from ._libzfs_core import ( lzc_bookmark, lzc_change_key, lzc_channel_program, lzc_channel_program_nosync, lzc_clone, lzc_create, lzc_destroy_bookmarks, lzc_destroy_snaps, lzc_exists, lzc_get_bookmarks, lzc_get_holds, lzc_hold, lzc_load_key, lzc_pool_checkpoint, lzc_pool_checkpoint_discard, lzc_promote, lzc_receive, lzc_receive_one, lzc_receive_resumable, lzc_receive_with_cmdprops, lzc_receive_with_header, lzc_release, lzc_remap, lzc_reopen, lzc_rollback, lzc_rollback_to, lzc_send, lzc_send_resume, lzc_send_space, lzc_snaprange_space, lzc_snapshot, lzc_sync, lzc_unload_key, is_supported, lzc_recv, lzc_snap, lzc_rename, lzc_destroy, lzc_inherit_prop, lzc_get_props, lzc_set_props, lzc_list_children, lzc_list_snaps, receive_header, ) __all__ = [ 'ctypes', 'exceptions', 'MAXNAMELEN', 'ZCP_DEFAULT_INSTRLIMIT', 'ZCP_DEFAULT_MEMLIMIT', 'WRAPPING_KEY_LEN', 'zfs_key_location', 'zfs_keyformat', 'zio_encrypt', 'lzc_bookmark', 'lzc_change_key', 'lzc_channel_program', 'lzc_channel_program_nosync', 'lzc_clone', 'lzc_create', 'lzc_destroy_bookmarks', 'lzc_destroy_snaps', 'lzc_exists', 'lzc_get_bookmarks', 'lzc_get_holds', 'lzc_hold', 'lzc_load_key', 'lzc_pool_checkpoint', 'lzc_pool_checkpoint_discard', 'lzc_promote', 'lzc_receive', 'lzc_receive_one', 'lzc_receive_resumable', 'lzc_receive_with_cmdprops', 'lzc_receive_with_header', 'lzc_release', 'lzc_remap', 'lzc_reopen', 'lzc_rollback', 'lzc_rollback_to', 'lzc_send', 'lzc_send_resume', 'lzc_send_space', 'lzc_snaprange_space', 'lzc_snapshot', 'lzc_sync', 'lzc_unload_key', 'is_supported', 'lzc_recv', 'lzc_snap', 'lzc_rename', 'lzc_destroy', 'lzc_inherit_prop', 'lzc_get_props', 'lzc_set_props', 'lzc_list_children', 'lzc_list_snaps', 'receive_header', ] # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/_nvlist.py0000644000000000000000000000007413612141512022553 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/_nvlist.py0000644016037001603700000003100613612141512022550 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ nvlist_in and nvlist_out provide support for converting between a dictionary on the Python side and an nvlist_t on the C side with the automatic memory management for C memory allocations. nvlist_in takes a dictionary and produces a CData object corresponding to a C nvlist_t pointer suitable for passing as an input parameter. The nvlist_t is populated based on the dictionary. nvlist_out takes a dictionary and produces a CData object corresponding to a C nvlist_t pointer to pointer suitable for passing as an output parameter. Upon exit from a with-block the dictionary is populated based on the nvlist_t. The dictionary must follow a certain format to be convertible to the nvlist_t. The dictionary produced from the nvlist_t will follow the same format. Format: - keys are always byte strings - a value can be None in which case it represents boolean truth by its mere presence - a value can be a bool - a value can be a byte string - a value can be an integer - a value can be a CFFI CData object representing one of the following C types: int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, boolean_t, uchar_t - a value can be a dictionary that recursively adheres to this format - a value can be a list of bools, byte strings, integers or CData objects of types specified above - a value can be a list of dictionaries that adhere to this format - all elements of a list value must be of the same type """ from __future__ import absolute_import, division, print_function import numbers from collections import namedtuple from contextlib import contextmanager from .bindings import libnvpair from .ctypes import _type_to_suffix _ffi = libnvpair.ffi _lib = libnvpair.lib def nvlist_in(props): """ This function converts a python dictionary to a C nvlist_t and provides automatic memory management for the latter. :param dict props: the dictionary to be converted. :return: an FFI CData object representing the nvlist_t pointer. :rtype: CData """ nvlistp = _ffi.new("nvlist_t **") res = _lib.nvlist_alloc(nvlistp, 1, 0) # UNIQUE_NAME == 1 if res != 0: raise MemoryError('nvlist_alloc failed') nvlist = _ffi.gc(nvlistp[0], _lib.nvlist_free) _dict_to_nvlist(props, nvlist) return nvlist @contextmanager def nvlist_out(props): """ A context manager that allocates a pointer to a C nvlist_t and yields a CData object representing a pointer to the pointer via 'as' target. The caller can pass that pointer to a pointer to a C function that creates a new nvlist_t object. The context manager takes care of memory management for the nvlist_t and also populates the 'props' dictionary with data from the nvlist_t upon leaving the 'with' block. :param dict props: the dictionary to be populated with data from the nvlist. :return: an FFI CData object representing the pointer to nvlist_t pointer. :rtype: CData """ nvlistp = _ffi.new("nvlist_t **") nvlistp[0] = _ffi.NULL # to be sure try: yield nvlistp # clear old entries, if any props.clear() _nvlist_to_dict(nvlistp[0], props) finally: if nvlistp[0] != _ffi.NULL: _lib.nvlist_free(nvlistp[0]) nvlistp[0] = _ffi.NULL def packed_nvlist_out(packed_nvlist, packed_size): """ This function converts a packed C nvlist_t to a python dictionary and provides automatic memory management for the former. :param bytes packed_nvlist: packed nvlist_t. :param int packed_size: nvlist_t packed size. :return: an `dict` of values representing the data contained by nvlist_t. :rtype: dict """ props = {} with nvlist_out(props) as nvp: ret = _lib.nvlist_unpack(packed_nvlist, packed_size, nvp, 0) if ret != 0: raise MemoryError('nvlist_unpack failed') return props _TypeInfo = namedtuple('_TypeInfo', ['suffix', 'ctype', 'is_array', 'convert']) def _type_info(typeid): return { _lib.DATA_TYPE_BOOLEAN: _TypeInfo(None, None, None, None), _lib.DATA_TYPE_BOOLEAN_VALUE: _TypeInfo("boolean_value", "boolean_t *", False, bool), # noqa: E501 _lib.DATA_TYPE_BYTE: _TypeInfo("byte", "uchar_t *", False, int), # noqa: E501 _lib.DATA_TYPE_INT8: _TypeInfo("int8", "int8_t *", False, int), # noqa: E501 _lib.DATA_TYPE_UINT8: _TypeInfo("uint8", "uint8_t *", False, int), # noqa: E501 _lib.DATA_TYPE_INT16: _TypeInfo("int16", "int16_t *", False, int), # noqa: E501 _lib.DATA_TYPE_UINT16: _TypeInfo("uint16", "uint16_t *", False, int), # noqa: E501 _lib.DATA_TYPE_INT32: _TypeInfo("int32", "int32_t *", False, int), # noqa: E501 _lib.DATA_TYPE_UINT32: _TypeInfo("uint32", "uint32_t *", False, int), # noqa: E501 _lib.DATA_TYPE_INT64: _TypeInfo("int64", "int64_t *", False, int), # noqa: E501 _lib.DATA_TYPE_UINT64: _TypeInfo("uint64", "uint64_t *", False, int), # noqa: E501 _lib.DATA_TYPE_STRING: _TypeInfo("string", "char **", False, _ffi.string), # noqa: E501 _lib.DATA_TYPE_NVLIST: _TypeInfo("nvlist", "nvlist_t **", False, lambda x: _nvlist_to_dict(x, {})), # noqa: E501 _lib.DATA_TYPE_BOOLEAN_ARRAY: _TypeInfo("boolean_array", "boolean_t **", True, bool), # noqa: E501 # XXX use bytearray ? _lib.DATA_TYPE_BYTE_ARRAY: _TypeInfo("byte_array", "uchar_t **", True, int), # noqa: E501 _lib.DATA_TYPE_INT8_ARRAY: _TypeInfo("int8_array", "int8_t **", True, int), # noqa: E501 _lib.DATA_TYPE_UINT8_ARRAY: _TypeInfo("uint8_array", "uint8_t **", True, int), # noqa: E501 _lib.DATA_TYPE_INT16_ARRAY: _TypeInfo("int16_array", "int16_t **", True, int), # noqa: E501 _lib.DATA_TYPE_UINT16_ARRAY: _TypeInfo("uint16_array", "uint16_t **", True, int), # noqa: E501 _lib.DATA_TYPE_INT32_ARRAY: _TypeInfo("int32_array", "int32_t **", True, int), # noqa: E501 _lib.DATA_TYPE_UINT32_ARRAY: _TypeInfo("uint32_array", "uint32_t **", True, int), # noqa: E501 _lib.DATA_TYPE_INT64_ARRAY: _TypeInfo("int64_array", "int64_t **", True, int), # noqa: E501 _lib.DATA_TYPE_UINT64_ARRAY: _TypeInfo("uint64_array", "uint64_t **", True, int), # noqa: E501 _lib.DATA_TYPE_STRING_ARRAY: _TypeInfo("string_array", "char ***", True, _ffi.string), # noqa: E501 _lib.DATA_TYPE_NVLIST_ARRAY: _TypeInfo("nvlist_array", "nvlist_t ***", True, lambda x: _nvlist_to_dict(x, {})), # noqa: E501 }[typeid] # only integer properties need to be here _prop_name_to_type_str = { b"rewind-request": "uint32", b"type": "uint32", b"N_MORE_ERRORS": "int32", b"pool_context": "int32", } def _nvlist_add_array(nvlist, key, array): def _is_integer(x): return isinstance(x, numbers.Integral) and not isinstance(x, bool) ret = 0 specimen = array[0] is_integer = _is_integer(specimen) specimen_ctype = None if isinstance(specimen, _ffi.CData): specimen_ctype = _ffi.typeof(specimen) for element in array[1:]: if is_integer and _is_integer(element): pass elif type(element) is not type(specimen): raise TypeError('Array has elements of different types: ' + type(specimen).__name__ + ' and ' + type(element).__name__) elif specimen_ctype is not None: ctype = _ffi.typeof(element) if ctype is not specimen_ctype: raise TypeError('Array has elements of different C types: ' + _ffi.typeof(specimen).cname + ' and ' + _ffi.typeof(element).cname) if isinstance(specimen, dict): # NB: can't use automatic memory management via nvlist_in() here, # we have a loop, but 'with' would require recursion c_array = [] for dictionary in array: nvlistp = _ffi.new('nvlist_t **') res = _lib.nvlist_alloc(nvlistp, 1, 0) # UNIQUE_NAME == 1 if res != 0: raise MemoryError('nvlist_alloc failed') nested_nvlist = _ffi.gc(nvlistp[0], _lib.nvlist_free) _dict_to_nvlist(dictionary, nested_nvlist) c_array.append(nested_nvlist) ret = _lib.nvlist_add_nvlist_array(nvlist, key, c_array, len(c_array)) elif isinstance(specimen, bytes): c_array = [] for string in array: c_array.append(_ffi.new('char[]', string)) ret = _lib.nvlist_add_string_array(nvlist, key, c_array, len(c_array)) elif isinstance(specimen, bool): ret = _lib.nvlist_add_boolean_array(nvlist, key, array, len(array)) elif isinstance(specimen, numbers.Integral): suffix = _prop_name_to_type_str.get(key, "uint64") cfunc = getattr(_lib, "nvlist_add_%s_array" % (suffix,)) ret = cfunc(nvlist, key, array, len(array)) elif isinstance( specimen, _ffi.CData) and _ffi.typeof(specimen) in _type_to_suffix: suffix = _type_to_suffix[_ffi.typeof(specimen)][True] cfunc = getattr(_lib, "nvlist_add_%s_array" % (suffix,)) ret = cfunc(nvlist, key, array, len(array)) else: raise TypeError('Unsupported value type ' + type(specimen).__name__) if ret != 0: raise MemoryError('nvlist_add failed, err = %d' % ret) def _nvlist_to_dict(nvlist, props): pair = _lib.nvlist_next_nvpair(nvlist, _ffi.NULL) while pair != _ffi.NULL: name = _ffi.string(_lib.nvpair_name(pair)) typeid = int(_lib.nvpair_type(pair)) typeinfo = _type_info(typeid) is_array = bool(_lib.nvpair_type_is_array(pair)) cfunc = getattr(_lib, "nvpair_value_%s" % (typeinfo.suffix,), None) val = None ret = 0 if is_array: valptr = _ffi.new(typeinfo.ctype) lenptr = _ffi.new("uint_t *") ret = cfunc(pair, valptr, lenptr) if ret != 0: raise RuntimeError('nvpair_value failed') length = int(lenptr[0]) val = [] for i in range(length): val.append(typeinfo.convert(valptr[0][i])) else: if typeid == _lib.DATA_TYPE_BOOLEAN: val = None # XXX or should it be True ? else: valptr = _ffi.new(typeinfo.ctype) ret = cfunc(pair, valptr) if ret != 0: raise RuntimeError('nvpair_value failed') val = typeinfo.convert(valptr[0]) props[name] = val pair = _lib.nvlist_next_nvpair(nvlist, pair) return props def _dict_to_nvlist(props, nvlist): for k, v in props.items(): if not isinstance(k, bytes): raise TypeError('Unsupported key type ' + type(k).__name__) ret = 0 if isinstance(v, dict): ret = _lib.nvlist_add_nvlist(nvlist, k, nvlist_in(v)) elif isinstance(v, list): _nvlist_add_array(nvlist, k, v) elif isinstance(v, bytes): ret = _lib.nvlist_add_string(nvlist, k, v) elif isinstance(v, bool): ret = _lib.nvlist_add_boolean_value(nvlist, k, v) elif v is None: ret = _lib.nvlist_add_boolean(nvlist, k) elif isinstance(v, numbers.Integral): suffix = _prop_name_to_type_str.get(k, "uint64") cfunc = getattr(_lib, "nvlist_add_%s" % (suffix,)) ret = cfunc(nvlist, k, v) elif isinstance(v, _ffi.CData) and _ffi.typeof(v) in _type_to_suffix: suffix = _type_to_suffix[_ffi.typeof(v)][False] cfunc = getattr(_lib, "nvlist_add_%s" % (suffix,)) ret = cfunc(nvlist, k, v) else: raise TypeError('Unsupported value type ' + type(v).__name__) if ret != 0: raise MemoryError('nvlist_add failed') # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/_constants.py0000644000000000000000000000007413607166132023261 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.719043667 zfs-0.8.3/contrib/pyzfs/libzfs_core/_constants.py0000644016037001603700000000364213607166132023263 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Important `libzfs_core` constants. """ from __future__ import absolute_import, division, print_function # https://stackoverflow.com/a/1695250 def enum(*sequential, **named): enums = dict(((b, a) for a, b in enumerate(sequential)), **named) return type('Enum', (), enums) #: Maximum length of any ZFS name. MAXNAMELEN = 255 #: Default channel program limits ZCP_DEFAULT_INSTRLIMIT = 10 * 1000 * 1000 ZCP_DEFAULT_MEMLIMIT = 10 * 1024 * 1024 #: Encryption wrapping key length WRAPPING_KEY_LEN = 32 #: Encryption key location enum zfs_key_location = enum( 'ZFS_KEYLOCATION_NONE', 'ZFS_KEYLOCATION_PROMPT', 'ZFS_KEYLOCATION_URI' ) #: Encryption key format enum zfs_keyformat = enum( 'ZFS_KEYFORMAT_NONE', 'ZFS_KEYFORMAT_RAW', 'ZFS_KEYFORMAT_HEX', 'ZFS_KEYFORMAT_PASSPHRASE' ) # Encryption algorithms enum zio_encrypt = enum( 'ZIO_CRYPT_INHERIT', 'ZIO_CRYPT_ON', 'ZIO_CRYPT_OFF', 'ZIO_CRYPT_AES_128_CCM', 'ZIO_CRYPT_AES_192_CCM', 'ZIO_CRYPT_AES_256_CCM', 'ZIO_CRYPT_AES_128_GCM', 'ZIO_CRYPT_AES_192_GCM', 'ZIO_CRYPT_AES_256_GCM' ) # ZFS-specific error codes ZFS_ERR_CHECKPOINT_EXISTS = 1024 ZFS_ERR_DISCARDING_CHECKPOINT = 1025 ZFS_ERR_NO_CHECKPOINT = 1026 ZFS_ERR_DEVRM_IN_PROGRESS = 1027 ZFS_ERR_VDEV_TOO_BIG = 1028 ZFS_ERR_WRONG_PARENT = 1033 # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/libzfs_core/PaxHeaders.151519/_libzfs_core.py0000644000000000000000000000007413612141512023535 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.720043699 zfs-0.8.3/contrib/pyzfs/libzfs_core/_libzfs_core.py0000644016037001603700000023607713612141512023551 0ustar00hutter2hutter200000000000000# # Copyright 2015 ClusterHQ # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ Python wrappers for libzfs_core interfaces. As a rule, there is a Python function for each C function. The signatures of the Python functions generally follow those of the functions, but the argument types are natural to Python. nvlists are wrapped as dictionaries or lists depending on their usage. Some parameters have default values depending on typical use for increased convenience. Output parameters are not used and return values are directly returned. Error conditions are signalled by exceptions rather than by integer error codes. """ from __future__ import absolute_import, division, print_function import errno import functools import fcntl import os import struct import threading from . import exceptions from . import _error_translation as errors from .bindings import libzfs_core from ._constants import ( # noqa: F401 MAXNAMELEN, ZCP_DEFAULT_INSTRLIMIT, ZCP_DEFAULT_MEMLIMIT, WRAPPING_KEY_LEN, zfs_key_location, zfs_keyformat, zio_encrypt ) from .ctypes import ( int32_t, uint64_t ) from ._nvlist import nvlist_in, nvlist_out def _uncommitted(depends_on=None): ''' Mark an API function as being an uncommitted extension that might not be available. :param function depends_on: the function that would be checked instead of a decorated function. For example, if the decorated function uses another uncommitted function. This decorator transforms a decorated function to raise :exc:`NotImplementedError` if the C libzfs_core library does not provide a function with the same name as the decorated function. The optional `depends_on` parameter can be provided if the decorated function does not directly call the C function but instead calls another Python function that follows the typical convention. One example is :func:`lzc_list_snaps` that calls :func:`lzc_list` that calls ``lzc_list`` in libzfs_core. This decorator is implemented using :func:`is_supported`. ''' def _uncommitted_decorator(func, depends_on=depends_on): @functools.wraps(func) def _f(*args, **kwargs): if not is_supported(_f): raise NotImplementedError(func.__name__) return func(*args, **kwargs) if depends_on is not None: _f._check_func = depends_on return _f return _uncommitted_decorator def lzc_create(name, ds_type='zfs', props=None, key=None): ''' Create a ZFS filesystem or a ZFS volume ("zvol"). :param bytes name: a name of the dataset to be created. :param str ds_type: the type of the dataset to be created, currently supported types are "zfs" (the default) for a filesystem and "zvol" for a volume. :param props: a `dict` of ZFS dataset property name-value pairs (empty by default). :type props: dict of bytes:Any :param key: dataset encryption key data (empty by default). :type key: bytes :raises FilesystemExists: if a dataset with the given name already exists. :raises ParentNotFound: if a parent dataset of the requested dataset does not exist. :raises PropertyInvalid: if one or more of the specified properties is invalid or has an invalid type or value. :raises NameInvalid: if the name is not a valid dataset name. :raises NameTooLong: if the name is too long. :raises WrongParent: if the parent dataset of the requested dataset is not a filesystem (e.g. ZVOL) ''' if props is None: props = {} if key is None: key = b"" else: key = bytes(key) if ds_type == 'zfs': ds_type = _lib.DMU_OST_ZFS elif ds_type == 'zvol': ds_type = _lib.DMU_OST_ZVOL else: raise exceptions.DatasetTypeInvalid(ds_type) nvlist = nvlist_in(props) ret = _lib.lzc_create(name, ds_type, nvlist, key, len(key)) errors.lzc_create_translate_error(ret, name, ds_type, props) def lzc_clone(name, origin, props=None): ''' Clone a ZFS filesystem or a ZFS volume ("zvol") from a given snapshot. :param bytes name: a name of the dataset to be created. :param bytes origin: a name of the origin snapshot. :param props: a `dict` of ZFS dataset property name-value pairs (empty by default). :type props: dict of bytes:Any :raises FilesystemExists: if a dataset with the given name already exists. :raises DatasetNotFound: if either a parent dataset of the requested dataset or the origin snapshot does not exist. :raises PropertyInvalid: if one or more of the specified properties is invalid or has an invalid type or value. :raises FilesystemNameInvalid: if the name is not a valid dataset name. :raises SnapshotNameInvalid: if the origin is not a valid snapshot name. :raises NameTooLong: if the name or the origin name is too long. :raises PoolsDiffer: if the clone and the origin have different pool names. .. note:: Because of a deficiency of the underlying C interface :exc:`.DatasetNotFound` can mean that either a parent filesystem of the target or the origin snapshot does not exist. It is currently impossible to distinguish between the cases. :func:`lzc_hold` can be used to check that the snapshot exists and ensure that it is not destroyed before cloning. ''' if props is None: props = {} nvlist = nvlist_in(props) ret = _lib.lzc_clone(name, origin, nvlist) errors.lzc_clone_translate_error(ret, name, origin, props) def lzc_rollback(name): ''' Roll back a filesystem or volume to its most recent snapshot. Note that the latest snapshot may change if a new one is concurrently created or the current one is destroyed. lzc_rollback_to can be used to roll back to a specific latest snapshot. :param bytes name: a name of the dataset to be rolled back. :return: a name of the most recent snapshot. :rtype: bytes :raises FilesystemNotFound: if the dataset does not exist. :raises SnapshotNotFound: if the dataset does not have any snapshots. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. ''' # Account for terminating NUL in C strings. snapnamep = _ffi.new('char[]', MAXNAMELEN + 1) ret = _lib.lzc_rollback(name, snapnamep, MAXNAMELEN + 1) errors.lzc_rollback_translate_error(ret, name) return _ffi.string(snapnamep) def lzc_rollback_to(name, snap): ''' Roll back this filesystem or volume to the specified snapshot, if possible. :param bytes name: a name of the dataset to be rolled back. :param bytes snap: a name of the snapshot to be rolled back. :raises FilesystemNotFound: if the dataset does not exist. :raises SnapshotNotFound: if the dataset does not have any snapshots. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :raises SnapshotNotLatest: if the snapshot is not the latest. ''' ret = _lib.lzc_rollback_to(name, snap) errors.lzc_rollback_to_translate_error(ret, name, snap) def lzc_snapshot(snaps, props=None): ''' Create snapshots. All snapshots must be in the same pool. Optionally snapshot properties can be set on all snapshots. Currently only user properties (prefixed with "user:") are supported. Either all snapshots are successfully created or none are created if an exception is raised. :param snaps: a list of names of snapshots to be created. :type snaps: list of bytes :param props: a `dict` of ZFS dataset property name-value pairs (empty by default). :type props: dict of bytes:bytes :raises SnapshotFailure: if one or more snapshots could not be created. .. note:: :exc:`.SnapshotFailure` is a compound exception that provides at least one detailed error object in :attr:`SnapshotFailure.errors` `list`. .. warning:: The underlying implementation reports an individual, per-snapshot error only for :exc:`.SnapshotExists` condition and *sometimes* for :exc:`.NameTooLong`. In all other cases a single error is reported without connection to any specific snapshot name(s). This has the following implications: * if multiple error conditions are encountered only one of them is reported * unless only one snapshot is requested then it is impossible to tell how many snapshots are problematic and what they are * only if there are no other error conditions :exc:`.SnapshotExists` is reported for all affected snapshots * :exc:`.NameTooLong` can behave either in the same way as :exc:`.SnapshotExists` or as all other exceptions. The former is the case where the full snapshot name exceeds the maximum allowed length but the short snapshot name (after '@') is within the limit. The latter is the case when the short name alone exceeds the maximum allowed length. ''' snaps_dict = {name: None for name in snaps} errlist = {} snaps_nvlist = nvlist_in(snaps_dict) if props is None: props = {} props_nvlist = nvlist_in(props) with nvlist_out(errlist) as errlist_nvlist: ret = _lib.lzc_snapshot(snaps_nvlist, props_nvlist, errlist_nvlist) errors.lzc_snapshot_translate_errors(ret, errlist, snaps, props) lzc_snap = lzc_snapshot def lzc_destroy_snaps(snaps, defer): ''' Destroy snapshots. They must all be in the same pool. Snapshots that do not exist will be silently ignored. If 'defer' is not set, and a snapshot has user holds or clones, the destroy operation will fail and none of the snapshots will be destroyed. If 'defer' is set, and a snapshot has user holds or clones, it will be marked for deferred destruction, and will be destroyed when the last hold or clone is removed/destroyed. The operation succeeds if all snapshots were destroyed (or marked for later destruction if 'defer' is set) or didn't exist to begin with. :param snaps: a list of names of snapshots to be destroyed. :type snaps: list of bytes :param bool defer: whether to mark busy snapshots for deferred destruction rather than immediately failing. :raises SnapshotDestructionFailure: if one or more snapshots could not be created. .. note:: :exc:`.SnapshotDestructionFailure` is a compound exception that provides at least one detailed error object in :attr:`SnapshotDestructionFailure.errors` `list`. Typical error is :exc:`SnapshotIsCloned` if `defer` is `False`. The snapshot names are validated quite loosely and invalid names are typically ignored as nonexisting snapshots. A snapshot name referring to a filesystem that doesn't exist is ignored. However, non-existent pool name causes :exc:`PoolNotFound`. ''' snaps_dict = {name: None for name in snaps} errlist = {} snaps_nvlist = nvlist_in(snaps_dict) with nvlist_out(errlist) as errlist_nvlist: ret = _lib.lzc_destroy_snaps(snaps_nvlist, defer, errlist_nvlist) errors.lzc_destroy_snaps_translate_errors(ret, errlist, snaps, defer) def lzc_bookmark(bookmarks): ''' Create bookmarks. :param bookmarks: a dict that maps names of wanted bookmarks to names of existing snapshots. :type bookmarks: dict of bytes to bytes :raises BookmarkFailure: if any of the bookmarks can not be created for any reason. The bookmarks `dict` maps from name of the bookmark (e.g. :file:`{pool}/{fs}#{bmark}`) to the name of the snapshot (e.g. :file:`{pool}/{fs}@{snap}`). All the bookmarks and snapshots must be in the same pool. ''' errlist = {} nvlist = nvlist_in(bookmarks) with nvlist_out(errlist) as errlist_nvlist: ret = _lib.lzc_bookmark(nvlist, errlist_nvlist) errors.lzc_bookmark_translate_errors(ret, errlist, bookmarks) def lzc_get_bookmarks(fsname, props=None): ''' Retrieve a listing of bookmarks for the given file system. :param bytes fsname: a name of the filesystem. :param props: a `list` of properties that will be returned for each bookmark. :type props: list of bytes :return: a `dict` that maps the bookmarks' short names to their properties. :rtype: dict of bytes:dict :raises FilesystemNotFound: if the filesystem is not found. The following are valid properties on bookmarks: guid : integer globally unique identifier of the snapshot the bookmark refers to createtxg : integer txg when the snapshot the bookmark refers to was created creation : integer timestamp when the snapshot the bookmark refers to was created Any other properties passed in ``props`` are ignored without reporting any error. Values in the returned dictionary map the names of the requested properties to their respective values. ''' bmarks = {} if props is None: props = [] props_dict = {name: None for name in props} nvlist = nvlist_in(props_dict) with nvlist_out(bmarks) as bmarks_nvlist: ret = _lib.lzc_get_bookmarks(fsname, nvlist, bmarks_nvlist) errors.lzc_get_bookmarks_translate_error(ret, fsname, props) return bmarks def lzc_destroy_bookmarks(bookmarks): ''' Destroy bookmarks. :param bookmarks: a list of the bookmarks to be destroyed. The bookmarks are specified as :file:`{fs}#{bmark}`. :type bookmarks: list of bytes :raises BookmarkDestructionFailure: if any of the bookmarks may not be destroyed. The bookmarks must all be in the same pool. Bookmarks that do not exist will be silently ignored. This also includes the case where the filesystem component of the bookmark name does not exist. However, an invalid bookmark name will cause :exc:`.NameInvalid` error reported in :attr:`SnapshotDestructionFailure.errors`. Either all bookmarks that existed are destroyed or an exception is raised. ''' errlist = {} bmarks_dict = {name: None for name in bookmarks} nvlist = nvlist_in(bmarks_dict) with nvlist_out(errlist) as errlist_nvlist: ret = _lib.lzc_destroy_bookmarks(nvlist, errlist_nvlist) errors.lzc_destroy_bookmarks_translate_errors(ret, errlist, bookmarks) def lzc_snaprange_space(firstsnap, lastsnap): ''' Calculate a size of data referenced by snapshots in the inclusive range between the ``firstsnap`` and the ``lastsnap`` and not shared with any other datasets. :param bytes firstsnap: the name of the first snapshot in the range. :param bytes lastsnap: the name of the last snapshot in the range. :return: the calculated stream size, in bytes. :rtype: `int` or `long` :raises SnapshotNotFound: if either of the snapshots does not exist. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. :raises SnapshotMismatch: if ``fromsnap`` is not an ancestor snapshot of ``snapname``. :raises PoolsDiffer: if the snapshots belong to different pools. ``lzc_snaprange_space`` calculates total size of blocks that exist because they are referenced only by one or more snapshots in the given range but no other dataset. In other words, this is the set of blocks that were born after the snap before firstsnap, and died before the snap after the last snap. Yet another interpretation is that the result of ``lzc_snaprange_space`` is the size of the space that would be freed if the snapshots in the range are destroyed. If the same snapshot is given as both the ``firstsnap`` and the ``lastsnap``. In that case ``lzc_snaprange_space`` calculates space used by the snapshot. ''' valp = _ffi.new('uint64_t *') ret = _lib.lzc_snaprange_space(firstsnap, lastsnap, valp) errors.lzc_snaprange_space_translate_error(ret, firstsnap, lastsnap) return int(valp[0]) def lzc_hold(holds, fd=None): ''' Create *user holds* on snapshots. If there is a hold on a snapshot, the snapshot can not be destroyed. (However, it can be marked for deletion by :func:`lzc_destroy_snaps` ( ``defer`` = `True` ).) :param holds: the dictionary of names of the snapshots to hold mapped to the hold names. :type holds: dict of bytes : bytes :type fd: int or None :param fd: if not None then it must be the result of :func:`os.open` called as ``os.open("/dev/zfs", O_EXCL)``. :type fd: int or None :return: a list of the snapshots that do not exist. :rtype: list of bytes :raises HoldFailure: if a hold was impossible on one or more of the snapshots. :raises BadHoldCleanupFD: if ``fd`` is not a valid file descriptor associated with :file:`/dev/zfs`. The snapshots must all be in the same pool. If ``fd`` is not None, then when the ``fd`` is closed (including on process termination), the holds will be released. If the system is shut down uncleanly, the holds will be released when the pool is next opened or imported. Holds for snapshots which don't exist will be skipped and have an entry added to the return value, but will not cause an overall failure. No exceptions is raised if all holds, for snapshots that existed, were successfully created. Otherwise :exc:`.HoldFailure` exception is raised and no holds will be created. :attr:`.HoldFailure.errors` may contain a single element for an error that is not specific to any hold / snapshot, or it may contain one or more elements detailing specific error per each affected hold. ''' errlist = {} if fd is None: fd = -1 nvlist = nvlist_in(holds) with nvlist_out(errlist) as errlist_nvlist: ret = _lib.lzc_hold(nvlist, fd, errlist_nvlist) errors.lzc_hold_translate_errors(ret, errlist, holds, fd) # If there is no error (no exception raised by _handleErrList), but errlist # is not empty, then it contains missing snapshots. assert all(errlist[x] == errno.ENOENT for x in errlist) return list(errlist.keys()) def lzc_release(holds): ''' Release *user holds* on snapshots. If the snapshot has been marked for deferred destroy (by lzc_destroy_snaps(defer=B_TRUE)), it does not have any clones, and all the user holds are removed, then the snapshot will be destroyed. The snapshots must all be in the same pool. :param holds: a ``dict`` where keys are snapshot names and values are lists of hold tags to remove. :type holds: dict of bytes : list of bytes :return: a list of any snapshots that do not exist and of any tags that do not exist for existing snapshots. Such tags are qualified with a corresponding snapshot name using the following format :file:`{pool}/{fs}@{snap}#{tag}` :rtype: list of bytes :raises HoldReleaseFailure: if one or more existing holds could not be released. Holds which failed to release because they didn't exist will have an entry added to errlist, but will not cause an overall failure. This call is success if ``holds`` was empty or all holds that existed, were successfully removed. Otherwise an exception will be raised. ''' errlist = {} holds_dict = {} for snap in holds: hold_list = holds[snap] if not isinstance(hold_list, list): raise TypeError('holds must be in a list') holds_dict[snap] = {hold: None for hold in hold_list} nvlist = nvlist_in(holds_dict) with nvlist_out(errlist) as errlist_nvlist: ret = _lib.lzc_release(nvlist, errlist_nvlist) errors.lzc_release_translate_errors(ret, errlist, holds) # If there is no error (no exception raised by _handleErrList), but errlist # is not empty, then it contains missing snapshots and tags. assert all(errlist[x] == errno.ENOENT for x in errlist) return list(errlist.keys()) def lzc_get_holds(snapname): ''' Retrieve list of *user holds* on the specified snapshot. :param bytes snapname: the name of the snapshot. :return: holds on the snapshot along with their creation times in seconds since the epoch :rtype: dict of bytes : int ''' holds = {} with nvlist_out(holds) as nvlist: ret = _lib.lzc_get_holds(snapname, nvlist) errors.lzc_get_holds_translate_error(ret, snapname) return holds def lzc_send(snapname, fromsnap, fd, flags=None): ''' Generate a zfs send stream for the specified snapshot and write it to the specified file descriptor. :param bytes snapname: the name of the snapshot to send. :param fromsnap: if not None the name of the starting snapshot for the incremental stream. :type fromsnap: bytes or None :param int fd: the file descriptor to write the send stream to. :param flags: the flags that control what enhanced features can be used in the stream. :type flags: list of bytes :raises SnapshotNotFound: if either the starting snapshot is not `None` and does not exist, or if the ending snapshot does not exist. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. :raises SnapshotMismatch: if ``fromsnap`` is not an ancestor snapshot of ``snapname``. :raises PoolsDiffer: if the snapshots belong to different pools. :raises IOError: if an input / output error occurs while writing to ``fd``. :raises UnknownStreamFeature: if the ``flags`` contain an unknown flag name. If ``fromsnap`` is None, a full (non-incremental) stream will be sent. If ``fromsnap`` is not None, it must be the full name of a snapshot or bookmark to send an incremental from, e.g. :file:`{pool}/{fs}@{earlier_snap}` or :file:`{pool}/{fs}#{earlier_bmark}`. The specified snapshot or bookmark must represent an earlier point in the history of ``snapname``. It can be an earlier snapshot in the same filesystem or zvol as ``snapname``, or it can be the origin of ``snapname``'s filesystem, or an earlier snapshot in the origin, etc. ``fromsnap`` must be strictly an earlier snapshot, specifying the same snapshot as both ``fromsnap`` and ``snapname`` is an error. If ``flags`` contains *"large_blocks"*, the stream is permitted to contain ``DRR_WRITE`` records with ``drr_length`` > 128K, and ``DRR_OBJECT`` records with ``drr_blksz`` > 128K. If ``flags`` contains *"embedded_data"*, the stream is permitted to contain ``DRR_WRITE_EMBEDDED`` records with ``drr_etype`` == ``BP_EMBEDDED_TYPE_DATA``, which the receiving system must support (as indicated by support for the *embedded_data* feature). If ``flags`` contains *"compress"*, the stream is generated by using compressed WRITE records for blocks which are compressed on disk and in memory. If the *lz4_compress* feature is active on the sending system, then the receiving system must have that feature enabled as well. If ``flags`` contains *"raw"*, the stream is generated, for encrypted datasets, by sending data exactly as it exists on disk. This allows backups to be taken even if encryption keys are not currently loaded. .. note:: ``lzc_send`` can actually accept a filesystem name as the ``snapname``. In that case ``lzc_send`` acts as if a temporary snapshot was created after the start of the call and before the stream starts being produced. .. note:: ``lzc_send`` does not return until all of the stream is written to ``fd``. .. note:: ``lzc_send`` does *not* close ``fd`` upon returning. ''' if fromsnap is not None: c_fromsnap = fromsnap else: c_fromsnap = _ffi.NULL c_flags = 0 if flags is None: flags = [] for flag in flags: c_flag = { 'embedded_data': _lib.LZC_SEND_FLAG_EMBED_DATA, 'large_blocks': _lib.LZC_SEND_FLAG_LARGE_BLOCK, 'compress': _lib.LZC_SEND_FLAG_COMPRESS, 'raw': _lib.LZC_SEND_FLAG_RAW, }.get(flag) if c_flag is None: raise exceptions.UnknownStreamFeature(flag) c_flags |= c_flag ret = _lib.lzc_send(snapname, c_fromsnap, fd, c_flags) errors.lzc_send_translate_error(ret, snapname, fromsnap, fd, flags) def lzc_send_space(snapname, fromsnap=None, flags=None): ''' Estimate size of a full or incremental backup stream given the optional starting snapshot and the ending snapshot. :param bytes snapname: the name of the snapshot for which the estimate should be done. :param fromsnap: the optional starting snapshot name. If not `None` then an incremental stream size is estimated, otherwise a full stream is estimated. :type fromsnap: `bytes` or `None` :param flags: the flags that control what enhanced features can be used in the stream. :type flags: list of bytes :return: the estimated stream size, in bytes. :rtype: `int` or `long` :raises SnapshotNotFound: if either the starting snapshot is not `None` and does not exist, or if the ending snapshot does not exist. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. :raises SnapshotMismatch: if ``fromsnap`` is not an ancestor snapshot of ``snapname``. :raises PoolsDiffer: if the snapshots belong to different pools. ``fromsnap``, if not ``None``, must be strictly an earlier snapshot, specifying the same snapshot as both ``fromsnap`` and ``snapname`` is an error. ''' if fromsnap is not None: c_fromsnap = fromsnap else: c_fromsnap = _ffi.NULL c_flags = 0 if flags is None: flags = [] for flag in flags: c_flag = { 'embedded_data': _lib.LZC_SEND_FLAG_EMBED_DATA, 'large_blocks': _lib.LZC_SEND_FLAG_LARGE_BLOCK, 'compress': _lib.LZC_SEND_FLAG_COMPRESS, 'raw': _lib.LZC_SEND_FLAG_RAW, }.get(flag) if c_flag is None: raise exceptions.UnknownStreamFeature(flag) c_flags |= c_flag valp = _ffi.new('uint64_t *') ret = _lib.lzc_send_space(snapname, c_fromsnap, c_flags, valp) errors.lzc_send_space_translate_error(ret, snapname, fromsnap) return int(valp[0]) def lzc_receive(snapname, fd, force=False, raw=False, origin=None, props=None): ''' Receive from the specified ``fd``, creating the specified snapshot. :param bytes snapname: the name of the snapshot to create. :param int fd: the file descriptor from which to read the stream. :param bool force: whether to roll back or destroy the target filesystem if that is required to receive the stream. :param bool raw: whether this is a "raw" stream. :param origin: the optional origin snapshot name if the stream is for a clone. :type origin: bytes or None :param props: the properties to set on the snapshot as *received* properties. :type props: dict of bytes : Any :raises IOError: if an input / output error occurs while reading from the ``fd``. :raises DatasetExists: if the snapshot named ``snapname`` already exists. :raises DatasetExists: if the stream is a full stream and the destination filesystem already exists. :raises DatasetExists: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot exists and it is an origin of a cloned filesystem. :raises StreamMismatch: if an incremental stream is received and the latest snapshot of the destination filesystem does not match the source snapshot of the stream. :raises StreamMismatch: if a full stream is received and the destination filesystem already exists and it has at least one snapshot, and ``force`` is `False`. :raises StreamMismatch: if an incremental clone stream is received but the specified ``origin`` is not the actual received origin. :raises DestinationModified: if an incremental stream is received and the destination filesystem has been modified since the last snapshot and ``force`` is `False`. :raises DestinationModified: if a full stream is received and the destination filesystem already exists and it does not have any snapshots, and ``force`` is `False`. :raises DatasetNotFound: if the destination filesystem and its parent do not exist. :raises DatasetNotFound: if the ``origin`` is not `None` and does not exist. :raises DatasetBusy: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot is held and could not be destroyed. :raises DatasetBusy: if another receive operation is being performed on the destination filesystem. :raises BadStream: if the stream is corrupt or it is not recognized or it is a compound stream or it is a clone stream, but ``origin`` is `None`. :raises BadStream: if a clone stream is received and the destination filesystem already exists. :raises StreamFeatureNotSupported: if the stream has a feature that is not supported on this side. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. :raises WrongParent: if the parent dataset of the received destination is not a filesystem (e.g. ZVOL) .. note:: The ``origin`` is ignored if the actual stream is an incremental stream that is not a clone stream and the destination filesystem exists. If the stream is a full stream and the destination filesystem does not exist then the ``origin`` is checked for existence: if it does not exist :exc:`.DatasetNotFound` is raised, otherwise :exc:`.StreamMismatch` is raised, because that snapshot can not have any relation to the stream. .. note:: If ``force`` is `True` and the stream is incremental then the destination filesystem is rolled back to a matching source snapshot if necessary. Intermediate snapshots are destroyed in that case. However, none of the existing snapshots may have the same name as ``snapname`` even if such a snapshot were to be destroyed. The existing ``snapname`` snapshot always causes :exc:`.SnapshotExists` to be raised. If ``force`` is `True` and the stream is a full stream then the destination filesystem is replaced with the received filesystem unless the former has any snapshots. This prevents the destination filesystem from being rolled back / replaced. .. note:: This interface does not work on dedup'd streams (those with ``DMU_BACKUP_FEATURE_DEDUP``). .. note:: ``lzc_receive`` does not return until all of the stream is read from ``fd`` and applied to the pool. .. note:: ``lzc_receive`` does *not* close ``fd`` upon returning. ''' if origin is not None: c_origin = origin else: c_origin = _ffi.NULL if props is None: props = {} nvlist = nvlist_in(props) ret = _lib.lzc_receive(snapname, nvlist, c_origin, force, raw, fd) errors.lzc_receive_translate_errors( ret, snapname, fd, force, raw, False, False, origin, None ) lzc_recv = lzc_receive def lzc_exists(name): ''' Check if a dataset (a filesystem, or a volume, or a snapshot) with the given name exists. :param bytes name: the dataset name to check. :return: `True` if the dataset exists, `False` otherwise. :rtype: bool .. note:: ``lzc_exists`` can not be used to check for existence of bookmarks. ''' ret = _lib.lzc_exists(name) return bool(ret) @_uncommitted() def lzc_change_key(fsname, crypt_cmd, props=None, key=None): ''' Change encryption key on the specified dataset. :param bytes fsname: the name of the dataset. :param str crypt_cmd: the encryption "command" to be executed, currently supported values are "new_key", "inherit", "force_new_key" and "force_inherit". :param props: a `dict` of encryption-related property name-value pairs; only "keyformat", "keylocation" and "pbkdf2iters" are supported (empty by default). :type props: dict of bytes:Any :param key: dataset encryption key data (empty by default). :type key: bytes :raises PropertyInvalid: if ``props`` contains invalid values. :raises FilesystemNotFound: if the dataset does not exist. :raises UnknownCryptCommand: if ``crypt_cmd`` is invalid. :raises EncryptionKeyNotLoaded: if the encryption key is not currently loaded and therefore cannot be changed. ''' if props is None: props = {} if key is None: key = b"" else: key = bytes(key) cmd = { 'new_key': _lib.DCP_CMD_NEW_KEY, 'inherit': _lib.DCP_CMD_INHERIT, 'force_new_key': _lib.DCP_CMD_FORCE_NEW_KEY, 'force_inherit': _lib.DCP_CMD_FORCE_INHERIT, }.get(crypt_cmd) if cmd is None: raise exceptions.UnknownCryptCommand(crypt_cmd) nvlist = nvlist_in(props) ret = _lib.lzc_change_key(fsname, cmd, nvlist, key, len(key)) errors.lzc_change_key_translate_error(ret, fsname) @_uncommitted() def lzc_load_key(fsname, noop, key): ''' Load or verify encryption key on the specified dataset. :param bytes fsname: the name of the dataset. :param bool noop: if `True` the encryption key will only be verified, not loaded. :param key: dataset encryption key data. :type key: bytes :raises FilesystemNotFound: if the dataset does not exist. :raises EncryptionKeyAlreadyLoaded: if the encryption key is already loaded. :raises EncryptionKeyInvalid: if the encryption key provided is incorrect. ''' ret = _lib.lzc_load_key(fsname, noop, key, len(key)) errors.lzc_load_key_translate_error(ret, fsname, noop) @_uncommitted() def lzc_unload_key(fsname): ''' Unload encryption key from the specified dataset. :param bytes fsname: the name of the dataset. :raises FilesystemNotFound: if the dataset does not exist. :raises DatasetBusy: if the encryption key is still being used. This usually occurs when the dataset is mounted. :raises EncryptionKeyNotLoaded: if the encryption key is not currently loaded. ''' ret = _lib.lzc_unload_key(fsname) errors.lzc_unload_key_translate_error(ret, fsname) def lzc_channel_program( poolname, program, instrlimit=ZCP_DEFAULT_INSTRLIMIT, memlimit=ZCP_DEFAULT_MEMLIMIT, params=None ): ''' Executes a script as a ZFS channel program on pool ``poolname``. :param bytes poolname: the name of the pool. :param bytes program: channel program text. :param int instrlimit: execution time limit, in milliseconds. :param int memlimit: execution memory limit, in bytes. :param bytes params: a `list` of parameters passed to the channel program (empty by default). :type params: dict of bytes:Any :return: a dictionary of result values procuced by the channel program, if any. :rtype: dict :raises PoolNotFound: if the pool does not exist. :raises ZCPLimitInvalid: if either instruction or memory limit are invalid. :raises ZCPSyntaxError: if the channel program contains syntax errors. :raises ZCPTimeout: if the channel program took too long to execute. :raises ZCPSpaceError: if the channel program exhausted the memory limit. :raises ZCPMemoryError: if the channel program return value was too large. :raises ZCPPermissionError: if the user lacks the permission to run the channel program. Channel programs must be run as root. :raises ZCPRuntimeError: if the channel program encountered a runtime error. ''' output = {} params_nv = nvlist_in({b"argv": params}) with nvlist_out(output) as outnvl: ret = _lib.lzc_channel_program( poolname, program, instrlimit, memlimit, params_nv, outnvl) errors.lzc_channel_program_translate_error( ret, poolname, output.get(b"error")) return output.get(b"return") def lzc_channel_program_nosync( poolname, program, instrlimit=ZCP_DEFAULT_INSTRLIMIT, memlimit=ZCP_DEFAULT_MEMLIMIT, params=None ): ''' Executes a script as a read-only ZFS channel program on pool ``poolname``. A read-only channel program works programmatically the same way as a normal channel program executed with :func:`lzc_channel_program`. The only difference is it runs exclusively in open-context and therefore can return faster. The downside to that, is that the program cannot change on-disk state by calling functions from the zfs.sync submodule. :param bytes poolname: the name of the pool. :param bytes program: channel program text. :param int instrlimit: execution time limit, in milliseconds. :param int memlimit: execution memory limit, in bytes. :param bytes params: a `list` of parameters passed to the channel program (empty by default). :type params: dict of bytes:Any :return: a dictionary of result values procuced by the channel program, if any. :rtype: dict :raises PoolNotFound: if the pool does not exist. :raises ZCPLimitInvalid: if either instruction or memory limit are invalid. :raises ZCPSyntaxError: if the channel program contains syntax errors. :raises ZCPTimeout: if the channel program took too long to execute. :raises ZCPSpaceError: if the channel program exhausted the memory limit. :raises ZCPMemoryError: if the channel program return value was too large. :raises ZCPPermissionError: if the user lacks the permission to run the channel program. Channel programs must be run as root. :raises ZCPRuntimeError: if the channel program encountered a runtime error. ''' output = {} params_nv = nvlist_in({b"argv": params}) with nvlist_out(output) as outnvl: ret = _lib.lzc_channel_program_nosync( poolname, program, instrlimit, memlimit, params_nv, outnvl) errors.lzc_channel_program_translate_error( ret, poolname, output.get(b"error")) return output.get(b"return") def lzc_receive_resumable( snapname, fd, force=False, raw=False, origin=None, props=None ): ''' Like :func:`lzc_receive`, but if the receive fails due to premature stream termination, the intermediate state will be preserved on disk. In this case, ECKSUM will be returned. The receive may subsequently be resumed with a resuming send stream generated by lzc_send_resume(). :param bytes snapname: the name of the snapshot to create. :param int fd: the file descriptor from which to read the stream. :param bool force: whether to roll back or destroy the target filesystem if that is required to receive the stream. :param bool raw: whether this is a "raw" stream. :param origin: the optional origin snapshot name if the stream is for a clone. :type origin: bytes or None :param props: the properties to set on the snapshot as *received* properties. :type props: dict of bytes : Any :raises IOError: if an input / output error occurs while reading from the ``fd``. :raises DatasetExists: if the snapshot named ``snapname`` already exists. :raises DatasetExists: if the stream is a full stream and the destination filesystem already exists. :raises DatasetExists: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot exists and it is an origin of a cloned filesystem. :raises StreamMismatch: if an incremental stream is received and the latest snapshot of the destination filesystem does not match the source snapshot of the stream. :raises StreamMismatch: if a full stream is received and the destination filesystem already exists and it has at least one snapshot, and ``force`` is `False`. :raises StreamMismatch: if an incremental clone stream is received but the specified ``origin`` is not the actual received origin. :raises DestinationModified: if an incremental stream is received and the destination filesystem has been modified since the last snapshot and ``force`` is `False`. :raises DestinationModified: if a full stream is received and the destination filesystem already exists and it does not have any snapshots, and ``force`` is `False`. :raises DatasetNotFound: if the destination filesystem and its parent do not exist. :raises DatasetNotFound: if the ``origin`` is not `None` and does not exist. :raises DatasetBusy: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot is held and could not be destroyed. :raises DatasetBusy: if another receive operation is being performed on the destination filesystem. :raises BadStream: if the stream is corrupt or it is not recognized or it is a compound stream or it is a clone stream, but ``origin`` is `None`. :raises BadStream: if a clone stream is received and the destination filesystem already exists. :raises StreamFeatureNotSupported: if the stream has a feature that is not supported on this side. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. ''' if origin is not None: c_origin = origin else: c_origin = _ffi.NULL if props is None: props = {} nvlist = nvlist_in(props) ret = _lib.lzc_receive_resumable( snapname, nvlist, c_origin, force, raw, fd) errors.lzc_receive_translate_errors( ret, snapname, fd, force, raw, False, False, origin, None) def lzc_receive_with_header( snapname, fd, begin_record, force=False, resumable=False, raw=False, origin=None, props=None ): ''' Like :func:`lzc_receive`, but allows the caller to read the begin record and then to pass it in. That could be useful if the caller wants to derive, for example, the snapname or the origin parameters based on the information contained in the begin record. :func:`receive_header` can be used to receive the begin record from the file descriptor. :param bytes snapname: the name of the snapshot to create. :param int fd: the file descriptor from which to read the stream. :param begin_record: the stream's begin record. :type begin_record: ``cffi`` `CData` representing the dmu_replay_record_t structure. :param bool force: whether to roll back or destroy the target filesystem if that is required to receive the stream. :param bool resumable: whether this stream should be treated as resumable. If the receive fails due to premature stream termination, the intermediate state will be preserved on disk and may subsequently be resumed with :func:`lzc_send_resume`. :param bool raw: whether this is a "raw" stream. :param origin: the optional origin snapshot name if the stream is for a clone. :type origin: bytes or None :param props: the properties to set on the snapshot as *received* properties. :type props: dict of bytes : Any :raises IOError: if an input / output error occurs while reading from the ``fd``. :raises DatasetExists: if the snapshot named ``snapname`` already exists. :raises DatasetExists: if the stream is a full stream and the destination filesystem already exists. :raises DatasetExists: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot exists and it is an origin of a cloned filesystem. :raises StreamMismatch: if an incremental stream is received and the latest snapshot of the destination filesystem does not match the source snapshot of the stream. :raises StreamMismatch: if a full stream is received and the destination filesystem already exists and it has at least one snapshot, and ``force`` is `False`. :raises StreamMismatch: if an incremental clone stream is received but the specified ``origin`` is not the actual received origin. :raises DestinationModified: if an incremental stream is received and the destination filesystem has been modified since the last snapshot and ``force`` is `False`. :raises DestinationModified: if a full stream is received and the destination filesystem already exists and it does not have any snapshots, and ``force`` is `False`. :raises DatasetNotFound: if the destination filesystem and its parent do not exist. :raises DatasetNotFound: if the ``origin`` is not `None` and does not exist. :raises DatasetBusy: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot is held and could not be destroyed. :raises DatasetBusy: if another receive operation is being performed on the destination filesystem. :raises BadStream: if the stream is corrupt or it is not recognized or it is a compound stream or it is a clone stream, but ``origin`` is `None`. :raises BadStream: if a clone stream is received and the destination filesystem already exists. :raises StreamFeatureNotSupported: if the stream has a feature that is not supported on this side. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. ''' if origin is not None: c_origin = origin else: c_origin = _ffi.NULL if props is None: props = {} nvlist = nvlist_in(props) ret = _lib.lzc_receive_with_header( snapname, nvlist, c_origin, force, resumable, raw, fd, begin_record) errors.lzc_receive_translate_errors( ret, snapname, fd, force, raw, False, False, origin, None) def receive_header(fd): ''' Read the begin record of the ZFS backup stream from the given file descriptor. This is a helper function for :func:`lzc_receive_with_header`. :param int fd: the file descriptor from which to read the stream. :return: a tuple with two elements where the first one is a Python `dict` representing the fields of the begin record and the second one is an opaque object suitable for passing to :func:`lzc_receive_with_header`. :raises IOError: if an input / output error occurs while reading from the ``fd``. At present the following fields can be of interest in the header: drr_toname : bytes the name of the snapshot for which the stream has been created drr_toguid : integer the GUID of the snapshot for which the stream has been created drr_fromguid : integer the GUID of the starting snapshot in the case the stream is incremental, zero otherwise drr_flags : integer the flags describing the stream's properties drr_type : integer the type of the dataset for which the stream has been created (volume, filesystem) ''' # read sizeof(dmu_replay_record_t) bytes directly into the memory backing # 'record' record = _ffi.new("dmu_replay_record_t *") _ffi.buffer(record)[:] = os.read(fd, _ffi.sizeof(record[0])) # get drr_begin member and its representation as a Python dict drr_begin = record.drr_u.drr_begin header = {} for field, descr in _ffi.typeof(drr_begin).fields: if descr.type.kind == 'primitive': header[field] = getattr(drr_begin, field) elif descr.type.kind == 'enum': header[field] = getattr(drr_begin, field) elif descr.type.kind == 'array' and descr.type.item.cname == 'char': header[field] = _ffi.string(getattr(drr_begin, field)) else: raise TypeError( 'Unexpected field type in drr_begin: ' + str(descr.type)) return (header, record) @_uncommitted() def lzc_receive_one( snapname, fd, begin_record, force=False, resumable=False, raw=False, origin=None, props=None, cleanup_fd=-1, action_handle=0 ): ''' Like :func:`lzc_receive`, but allows the caller to pass all supported arguments and retrieve all values returned. The only additional input parameter is 'cleanup_fd' which is used to set a cleanup-on-exit file descriptor. :param bytes snapname: the name of the snapshot to create. :param int fd: the file descriptor from which to read the stream. :param begin_record: the stream's begin record. :type begin_record: ``cffi`` `CData` representing the dmu_replay_record_t structure. :param bool force: whether to roll back or destroy the target filesystem if that is required to receive the stream. :param bool resumable: whether this stream should be treated as resumable. If the receive fails due to premature stream termination, the intermediate state will be preserved on disk and may subsequently be resumed with :func:`lzc_send_resume`. :param bool raw: whether this is a "raw" stream. :param origin: the optional origin snapshot name if the stream is for a clone. :type origin: bytes or None :param props: the properties to set on the snapshot as *received* properties. :type props: dict of bytes : Any :param int cleanup_fd: file descriptor used to set a cleanup-on-exit file descriptor. :param int action_handle: variable used to pass the handle for guid/ds mapping: this should be set to zero on first call and will contain an updated handle on success, which should be passed in subsequent calls. :return: a tuple with two elements where the first one is the number of bytes read from the file descriptor and the second one is the action_handle return value. :raises IOError: if an input / output error occurs while reading from the ``fd``. :raises DatasetExists: if the snapshot named ``snapname`` already exists. :raises DatasetExists: if the stream is a full stream and the destination filesystem already exists. :raises DatasetExists: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot exists and it is an origin of a cloned filesystem. :raises StreamMismatch: if an incremental stream is received and the latest snapshot of the destination filesystem does not match the source snapshot of the stream. :raises StreamMismatch: if a full stream is received and the destination filesystem already exists and it has at least one snapshot, and ``force`` is `False`. :raises StreamMismatch: if an incremental clone stream is received but the specified ``origin`` is not the actual received origin. :raises DestinationModified: if an incremental stream is received and the destination filesystem has been modified since the last snapshot and ``force`` is `False`. :raises DestinationModified: if a full stream is received and the destination filesystem already exists and it does not have any snapshots, and ``force`` is `False`. :raises DatasetNotFound: if the destination filesystem and its parent do not exist. :raises DatasetNotFound: if the ``origin`` is not `None` and does not exist. :raises DatasetBusy: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot is held and could not be destroyed. :raises DatasetBusy: if another receive operation is being performed on the destination filesystem. :raises BadStream: if the stream is corrupt or it is not recognized or it is a compound stream or it is a clone stream, but ``origin`` is `None`. :raises BadStream: if a clone stream is received and the destination filesystem already exists. :raises StreamFeatureNotSupported: if the stream has a feature that is not supported on this side. :raises ReceivePropertyFailure: if one or more of the specified properties is invalid or has an invalid type or value. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. ''' if origin is not None: c_origin = origin else: c_origin = _ffi.NULL if action_handle is not None: c_action_handle = _ffi.new("uint64_t *") else: c_action_handle = _ffi.NULL c_read_bytes = _ffi.new("uint64_t *") c_errflags = _ffi.new("uint64_t *") if props is None: props = {} nvlist = nvlist_in(props) properrs = {} with nvlist_out(properrs) as c_errors: ret = _lib.lzc_receive_one( snapname, nvlist, c_origin, force, resumable, raw, fd, begin_record, cleanup_fd, c_read_bytes, c_errflags, c_action_handle, c_errors) errors.lzc_receive_translate_errors( ret, snapname, fd, force, raw, False, False, origin, properrs) return (int(c_read_bytes[0]), action_handle) @_uncommitted() def lzc_receive_with_cmdprops( snapname, fd, begin_record, force=False, resumable=False, raw=False, origin=None, props=None, cmdprops=None, key=None, cleanup_fd=-1, action_handle=0 ): ''' Like :func:`lzc_receive_one`, but allows the caller to pass an additional 'cmdprops' argument. The 'cmdprops' nvlist contains both override ('zfs receive -o') and exclude ('zfs receive -x') properties. :param bytes snapname: the name of the snapshot to create. :param int fd: the file descriptor from which to read the stream. :param begin_record: the stream's begin record. :type begin_record: ``cffi`` `CData` representing the dmu_replay_record_t structure. :param bool force: whether to roll back or destroy the target filesystem if that is required to receive the stream. :param bool resumable: whether this stream should be treated as resumable. If the receive fails due to premature stream termination, the intermediate state will be preserved on disk and may subsequently be resumed with :func:`lzc_send_resume`. :param bool raw: whether this is a "raw" stream. :param origin: the optional origin snapshot name if the stream is for a clone. :type origin: bytes or None :param props: the properties to set on the snapshot as *received* properties. :type props: dict of bytes : Any :param cmdprops: the properties to set on the snapshot as local overrides to *received* properties. `bool` values are forcefully inherited while every other value is set locally as if the command "zfs set" was invoked immediately before the receive. :type cmdprops: dict of bytes : Any :param key: raw bytes representing user's wrapping key :type key: bytes :param int cleanup_fd: file descriptor used to set a cleanup-on-exit file descriptor. :param int action_handle: variable used to pass the handle for guid/ds mapping: this should be set to zero on first call and will contain an updated handle on success, it should be passed in subsequent calls. :return: a tuple with two elements where the first one is the number of bytes read from the file descriptor and the second one is the action_handle return value. :raises IOError: if an input / output error occurs while reading from the ``fd``. :raises DatasetExists: if the snapshot named ``snapname`` already exists. :raises DatasetExists: if the stream is a full stream and the destination filesystem already exists. :raises DatasetExists: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot exists and it is an origin of a cloned filesystem. :raises StreamMismatch: if an incremental stream is received and the latest snapshot of the destination filesystem does not match the source snapshot of the stream. :raises StreamMismatch: if a full stream is received and the destination filesystem already exists and it has at least one snapshot, and ``force`` is `False`. :raises StreamMismatch: if an incremental clone stream is received but the specified ``origin`` is not the actual received origin. :raises DestinationModified: if an incremental stream is received and the destination filesystem has been modified since the last snapshot and ``force`` is `False`. :raises DestinationModified: if a full stream is received and the destination filesystem already exists and it does not have any snapshots, and ``force`` is `False`. :raises DatasetNotFound: if the destination filesystem and its parent do not exist. :raises DatasetNotFound: if the ``origin`` is not `None` and does not exist. :raises DatasetBusy: if ``force`` is `True` but the destination filesystem could not be rolled back to a matching snapshot because a newer snapshot is held and could not be destroyed. :raises DatasetBusy: if another receive operation is being performed on the destination filesystem. :raises BadStream: if the stream is corrupt or it is not recognized or it is a compound stream or it is a clone stream, but ``origin`` is `None`. :raises BadStream: if a clone stream is received and the destination filesystem already exists. :raises StreamFeatureNotSupported: if the stream has a feature that is not supported on this side. :raises ReceivePropertyFailure: if one or more of the specified properties is invalid or has an invalid type or value. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. ''' if origin is not None: c_origin = origin else: c_origin = _ffi.NULL if action_handle is not None: c_action_handle = _ffi.new("uint64_t *") else: c_action_handle = _ffi.NULL c_read_bytes = _ffi.new("uint64_t *") c_errflags = _ffi.new("uint64_t *") if props is None: props = {} if cmdprops is None: cmdprops = {} if key is None: key = b"" else: key = bytes(key) nvlist = nvlist_in(props) cmdnvlist = nvlist_in(cmdprops) properrs = {} with nvlist_out(properrs) as c_errors: ret = _lib.lzc_receive_with_cmdprops( snapname, nvlist, cmdnvlist, key, len(key), c_origin, force, resumable, raw, fd, begin_record, cleanup_fd, c_read_bytes, c_errflags, c_action_handle, c_errors) errors.lzc_receive_translate_errors( ret, snapname, fd, force, raw, False, False, origin, properrs) return (int(c_read_bytes[0]), action_handle) @_uncommitted() def lzc_reopen(poolname, restart=True): ''' Reopen a pool :param bytes poolname: the name of the pool. :param bool restart: whether to restart an in-progress scrub operation. :raises PoolNotFound: if the pool does not exist. ''' ret = _lib.lzc_reopen(poolname, restart) errors.lzc_reopen_translate_error(ret, poolname) def lzc_send_resume( snapname, fromsnap, fd, flags=None, resumeobj=0, resumeoff=0 ): ''' Resume a previously interrupted send operation generating a zfs send stream for the specified snapshot and writing it to the specified file descriptor. :param bytes snapname: the name of the snapshot to send. :param fromsnap: if not None the name of the starting snapshot for the incremental stream. :type fromsnap: bytes or None :param int fd: the file descriptor to write the send stream to. :param flags: the flags that control what enhanced features can be used in the stream. :type flags: list of bytes :param int resumeobj: the object number where this send stream should resume from. :param int resumeoff: the offset where this send stream should resume from. :raises SnapshotNotFound: if either the starting snapshot is not `None` and does not exist, or if the ending snapshot does not exist. :raises NameInvalid: if the name of either snapshot is invalid. :raises NameTooLong: if the name of either snapshot is too long. :raises SnapshotMismatch: if ``fromsnap`` is not an ancestor snapshot of ``snapname``. :raises PoolsDiffer: if the snapshots belong to different pools. :raises IOError: if an input / output error occurs while writing to ``fd``. :raises UnknownStreamFeature: if the ``flags`` contain an unknown flag name. .. note:: See :func:`lzc_send` for more information. ''' if fromsnap is not None: c_fromsnap = fromsnap else: c_fromsnap = _ffi.NULL c_flags = 0 if flags is None: flags = [] for flag in flags: c_flag = { 'embedded_data': _lib.LZC_SEND_FLAG_EMBED_DATA, 'large_blocks': _lib.LZC_SEND_FLAG_LARGE_BLOCK, 'compress': _lib.LZC_SEND_FLAG_COMPRESS, 'raw': _lib.LZC_SEND_FLAG_RAW, }.get(flag) if c_flag is None: raise exceptions.UnknownStreamFeature(flag) c_flags |= c_flag ret = _lib.lzc_send_resume( snapname, c_fromsnap, fd, c_flags, uint64_t(resumeobj), uint64_t(resumeoff)) errors.lzc_send_translate_error(ret, snapname, fromsnap, fd, flags) @_uncommitted() def lzc_sync(poolname, force=False): ''' Forces all in-core dirty data to be written to the primary pool storage and not the ZIL. :param bytes poolname: the name of the pool. :param bool force: whether to force uberblock update even if there is no dirty data. :raises PoolNotFound: if the pool does not exist. .. note:: This method signature is different from its C libzfs_core counterpart: `innvl` has been replaced by the `force` boolean and `outnvl` has been conveniently removed since it's not used. ''' innvl = nvlist_in({b"force": force}) with nvlist_out({}) as outnvl: ret = _lib.lzc_sync(poolname, innvl, outnvl) errors.lzc_sync_translate_error(ret, poolname) def is_supported(func): ''' Check whether C *libzfs_core* provides implementation required for the given Python wrapper. If `is_supported` returns ``False`` for the function, then calling the function would result in :exc:`NotImplementedError`. :param function func: the function to check. :return bool: whether the function can be used. ''' fname = func.__name__ if fname not in globals(): raise ValueError(fname + ' is not from libzfs_core') if not callable(func): raise ValueError(fname + ' is not a function') if not fname.startswith("lzc_"): raise ValueError(fname + ' is not a libzfs_core API function') check_func = getattr(func, "_check_func", None) if check_func is not None: return is_supported(check_func) return getattr(_lib, fname, None) is not None @_uncommitted() def lzc_promote(name): ''' Promotes the ZFS dataset. :param bytes name: the name of the dataset to promote. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :raises NameTooLong: if the dataset's origin has a snapshot that, if transferred to the dataset, would get a too long name. :raises NotClone: if the dataset is not a clone. :raises FilesystemNotFound: if the dataset does not exist. :raises SnapshotExists: if the dataset already has a snapshot with the same name as one of the origin's snapshots. ''' ret = _lib.lzc_promote(name, _ffi.NULL, _ffi.NULL) errors.lzc_promote_translate_error(ret, name) @_uncommitted() def lzc_remap(name): ''' Remaps the ZFS dataset. :param bytes name: the name of the dataset to remap. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :raises DatasetNotFound: if the dataset does not exist. :raises FeatureNotSupported: if the pool containing the dataset does not have the *obsolete_counts* feature enabled. ''' ret = _lib.lzc_remap(name) errors.lzc_remap_translate_error(ret, name) @_uncommitted() def lzc_pool_checkpoint(name): ''' Creates a checkpoint for the specified pool. :param bytes name: the name of the pool to create a checkpoint for. :raises CheckpointExists: if the pool already has a checkpoint. :raises CheckpointDiscarding: if ZFS is in the middle of discarding a checkpoint for this pool. :raises DeviceRemovalRunning: if a vdev is currently being removed. :raises DeviceTooBig: if one or more top-level vdevs exceed the maximum vdev size. ''' ret = _lib.lzc_pool_checkpoint(name) errors.lzc_pool_checkpoint_translate_error(ret, name) @_uncommitted() def lzc_pool_checkpoint_discard(name): ''' Discard the checkpoint from the specified pool. :param bytes name: the name of the pool to discard the checkpoint from. :raises CheckpointNotFound: if pool does not have a checkpoint. :raises CheckpointDiscarding: if ZFS is in the middle of discarding a checkpoint for this pool. ''' ret = _lib.lzc_pool_checkpoint_discard(name) errors.lzc_pool_checkpoint_discard_translate_error(ret, name) def lzc_rename(source, target): ''' Rename the ZFS dataset. :param source name: the current name of the dataset to rename. :param target name: the new name of the dataset. :raises NameInvalid: if either the source or target name is invalid. :raises NameTooLong: if either the source or target name is too long. :raises NameTooLong: if a snapshot of the source would get a too long name after renaming. :raises FilesystemNotFound: if the source does not exist. :raises FilesystemNotFound: if the target's parent does not exist. :raises FilesystemExists: if the target already exists. :raises PoolsDiffer: if the source and target belong to different pools. :raises WrongParent: if the "new" parent dataset is not a filesystem (e.g. ZVOL) ''' ret = _lib.lzc_rename(source, target) errors.lzc_rename_translate_error(ret, source, target) def lzc_destroy(name): ''' Destroy the ZFS dataset. :param bytes name: the name of the dataset to destroy. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :raises FilesystemNotFound: if the dataset does not exist. ''' ret = _lib.lzc_destroy(name) errors.lzc_destroy_translate_error(ret, name) @_uncommitted() def lzc_inherit(name, prop): ''' Inherit properties from a parent dataset of the given ZFS dataset. :param bytes name: the name of the dataset. :param bytes prop: the name of the property to inherit. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :raises DatasetNotFound: if the dataset does not exist. :raises PropertyInvalid: if one or more of the specified properties is invalid or has an invalid type or value. Inheriting a property actually resets it to its default value or removes it if it's a user property, so that the property could be inherited if it's inheritable. If the property is not inheritable then it would just have its default value. This function can be used on snapshots to inherit user defined properties. ''' ret = _lib.lzc_inherit(name, prop, _ffi.NULL) errors.lzc_inherit_prop_translate_error(ret, name, prop) # As the extended API is not committed yet, the names of the new interfaces # are not settled down yet. # lzc_inherit_prop makes it clearer what is to be inherited. lzc_inherit_prop = lzc_inherit @_uncommitted() def lzc_set_props(name, prop, val): ''' Set properties of the ZFS dataset. :param bytes name: the name of the dataset. :param bytes prop: the name of the property. :param Any val: the value of the property. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :raises DatasetNotFound: if the dataset does not exist. :raises NoSpace: if the property controls a quota and the values is too small for that quota. :raises PropertyInvalid: if one or more of the specified properties is invalid or has an invalid type or value. This function can be used on snapshots to set user defined properties. .. note:: An attempt to set a readonly / statistic property is ignored without reporting any error. ''' props = {prop: val} props_nv = nvlist_in(props) ret = _lib.lzc_set_props(name, props_nv, _ffi.NULL, _ffi.NULL) errors.lzc_set_prop_translate_error(ret, name, prop, val) # As the extended API is not committed yet, the names of the new interfaces # are not settled down yet. # It's not clear if atomically setting multiple properties is an achievable # goal and an interface acting on multiple entities must do so atomically # by convention. # Being able to set a single property at a time is sufficient for ClusterHQ. lzc_set_prop = lzc_set_props @_uncommitted() def lzc_list(name, options): ''' List subordinate elements of the given dataset. This function can be used to list child datasets and snapshots of the given dataset. The listed elements can be filtered by their type and by their depth relative to the starting dataset. :param bytes name: the name of the dataset to be listed, could be a snapshot or a dataset. :param options: a `dict` of the options that control the listing behavior. :type options: dict of bytes:Any :return: a pair of file descriptors the first of which can be used to read the listing. :rtype: tuple of (int, int) :raises DatasetNotFound: if the dataset does not exist. Two options are currently available: recurse : integer or None specifies depth of the recursive listing. If ``None`` the depth is not limited. Absence of this option means that only the given dataset is listed. type : dict of bytes:None specifies dataset types to include into the listing. Currently allowed keys are "filesystem", "volume", "snapshot". Absence of this option implies all types. The first of the returned file descriptors can be used to read the listing in a binary encoded format. The data is a series of variable sized records each starting with a fixed size header, the header is followed by a serialized ``nvlist``. Each record describes a single element and contains the element's name as well as its properties. The file descriptor must be closed after reading from it. The second file descriptor represents a pipe end to which the kernel driver is writing information. It should not be closed until all interesting information has been read and it must be explicitly closed afterwards. ''' (rfd, wfd) = os.pipe() fcntl.fcntl(rfd, fcntl.F_SETFD, fcntl.FD_CLOEXEC) fcntl.fcntl(wfd, fcntl.F_SETFD, fcntl.FD_CLOEXEC) options = options.copy() options['fd'] = int32_t(wfd) opts_nv = nvlist_in(options) ret = _lib.lzc_list(name, opts_nv) if ret == errno.ESRCH: return (None, None) errors.lzc_list_translate_error(ret, name, options) return (rfd, wfd) # Description of the binary format used to pass data from the kernel. _PIPE_RECORD_FORMAT = 'IBBBB' _PIPE_RECORD_SIZE = struct.calcsize(_PIPE_RECORD_FORMAT) def _list(name, recurse=None, types=None): ''' A wrapper for :func:`lzc_list` that hides details of working with the file descriptors and provides data in an easy to consume format. :param bytes name: the name of the dataset to be listed, could be a snapshot, a volume or a filesystem. :param recurse: specifies depth of the recursive listing. If ``None`` the depth is not limited. :param types: specifies dataset types to include into the listing. Currently allowed keys are "filesystem", "volume", "snapshot". ``None`` is equivalent to specifying the type of the dataset named by `name`. :type types: list of bytes or None :type recurse: integer or None :return: a list of dictionaries each describing a single listed element. :rtype: list of dict ''' options = {} # Convert types to a dict suitable for mapping to an nvlist. if types is not None: types = {x: None for x in types} options['type'] = types if recurse is None or recurse > 0: options['recurse'] = recurse # Note that other_fd is used by the kernel side to write # the data, so we have to keep that descriptor open until # we are done. # Also, we have to explicitly close the descriptor as the # kernel doesn't do that. (fd, other_fd) = lzc_list(name, options) if fd is None: return try: while True: record_bytes = os.read(fd, _PIPE_RECORD_SIZE) if not record_bytes: break (size, _, err, _, _) = struct.unpack( _PIPE_RECORD_FORMAT, record_bytes) if err == errno.ESRCH: break errors.lzc_list_translate_error(err, name, options) if size == 0: break data_bytes = os.read(fd, size) result = {} with nvlist_out(result) as nvp: ret = _lib.nvlist_unpack(data_bytes, size, nvp, 0) if ret != 0: raise exceptions.ZFSGenericError( ret, None, "Failed to unpack list data") yield result finally: os.close(other_fd) os.close(fd) @_uncommitted(lzc_list) def lzc_get_props(name): ''' Get properties of the ZFS dataset. :param bytes name: the name of the dataset. :raises DatasetNotFound: if the dataset does not exist. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :return: a dictionary mapping the property names to their values. :rtype: dict of bytes:Any .. note:: The value of ``clones`` property is a `list` of clone names as byte strings. .. warning:: The returned dictionary does not contain entries for properties with default values. One exception is the ``mountpoint`` property for which the default value is derived from the dataset name. ''' result = next(_list(name, recurse=0)) is_snapshot = result['dmu_objset_stats']['dds_is_snapshot'] result = result['properties'] # In most cases the source of the property is uninteresting and the # value alone is sufficient. One exception is the 'mountpoint' # property the final value of which is not the same as the inherited # value. mountpoint = result.get('mountpoint') if mountpoint is not None: mountpoint_src = mountpoint['source'] mountpoint_val = mountpoint['value'] # 'source' is the name of the dataset that has 'mountpoint' set # to a non-default value and from which the current dataset inherits # the property. 'source' can be the current dataset if its # 'mountpoint' is explicitly set. # 'source' can also be a special value like '$recvd', that case # is equivalent to the property being set on the current dataset. # Note that a normal mountpoint value should start with '/' # unlike the special values "none" and "legacy". if (mountpoint_val.startswith('/') and not mountpoint_src.startswith('$')): mountpoint_val = mountpoint_val + name[len(mountpoint_src):] elif not is_snapshot: mountpoint_val = '/' + name else: mountpoint_val = None result = {k: result[k]['value'] for k in result} if 'clones' in result: result['clones'] = list(result['clones'].keys()) if mountpoint_val is not None: result['mountpoint'] = mountpoint_val return result @_uncommitted(lzc_list) def lzc_list_children(name): ''' List the children of the ZFS dataset. :param bytes name: the name of the dataset. :return: an iterator that produces the names of the children. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :raises DatasetNotFound: if the dataset does not exist. .. warning:: If the dataset does not exist, then the returned iterator would produce no results and no error is reported. That case is indistinguishable from the dataset having no children. An attempt to list children of a snapshot is silently ignored as well. ''' children = [] for entry in _list(name, recurse=1, types=['filesystem', 'volume']): child = entry['name'] if child != name: children.append(child) return iter(children) @_uncommitted(lzc_list) def lzc_list_snaps(name): ''' List the snapshots of the ZFS dataset. :param bytes name: the name of the dataset. :return: an iterator that produces the names of the snapshots. :raises NameInvalid: if the dataset name is invalid. :raises NameTooLong: if the dataset name is too long. :raises DatasetNotFound: if the dataset does not exist. .. warning:: If the dataset does not exist, then the returned iterator would produce no results and no error is reported. That case is indistinguishable from the dataset having no snapshots. An attempt to list snapshots of a snapshot is silently ignored as well. ''' snaps = [] for entry in _list(name, recurse=1, types=['snapshot']): snap = entry['name'] if snap != name: snaps.append(snap) return iter(snaps) # TODO: a better way to init and uninit the library def _initialize(): class LazyInit(object): def __init__(self, lib): self._lib = lib self._inited = False self._lock = threading.Lock() def __getattr__(self, name): if not self._inited: with self._lock: if not self._inited: ret = self._lib.libzfs_core_init() if ret != 0: raise exceptions.ZFSInitializationFailed(ret) self._inited = True return getattr(self._lib, name) return LazyInit(libzfs_core.lib) _ffi = libzfs_core.ffi _lib = _initialize() # vim: softtabstop=4 tabstop=4 expandtab shiftwidth=4 zfs-0.8.3/contrib/pyzfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774020275 xustar000000000000000030 mtime=1579730428.247102063 30 atime=1579730452.388877179 30 ctime=1579730488.710043379 zfs-0.8.3/contrib/pyzfs/Makefile.in0000664016037001603700000005534013612142774020310 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/pyzfs DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/setup.py.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = setup.py CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ EXTRA_DIST = libzfs_core setup.py.in README LICENSE docs all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/pyzfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/pyzfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): setup.py: $(top_builddir)/config.status $(srcdir)/setup.py.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @PYZFS_ENABLED_FALSE@check-local: check-am: all-am $(MAKE) $(AM_MAKEFLAGS) check-local check: check-am @PYZFS_ENABLED_FALSE@all-local: all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." @PYZFS_ENABLED_FALSE@install-exec-local: @PYZFS_ENABLED_FALSE@clean-local: @PYZFS_ENABLED_FALSE@clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-exec-local install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: check-am install-am install-strip .PHONY: all all-am all-local check check-am check-local clean \ clean-generic clean-libtool clean-local distclean \ distclean-generic distclean-libtool distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-exec-local install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am @PYZFS_ENABLED_TRUE@all: @PYZFS_ENABLED_TRUE@all-local: @PYZFS_ENABLED_TRUE@ $(PYTHON) setup.py build # # On Debian (Ubuntu, and other downstream distros) the install location of # Python packages is "../dist-packages" instead of "../site-packages" [1]. # The install location used by "$(PYTHON) setup.py install" must match the # location specified in the ZFS specfile (RPM macro "%{python_sitelib}") to # avoid errors during the rpmbuild process. # However we cannot pass "--install-layout=deb" to the setup script here because # it is not supported on RPM-based distros; we use the combination of # "--prefix", "--root" and "--install-lib" parameters instead which should work # on every supported system. # # [1] https://wiki.debian.org/Python#Deviations_from_upstream # # Using "--no-compile" will not generate .pyc files which, in turn, will not be # packaged: this could result in failures during the uninstall phase if these # files are later created by manually loading the Python modules. # @PYZFS_ENABLED_TRUE@install-exec-local: @PYZFS_ENABLED_TRUE@ $(PYTHON) $(builddir)/setup.py install \ @PYZFS_ENABLED_TRUE@ --prefix $(prefix) \ @PYZFS_ENABLED_TRUE@ --root $(DESTDIR)/ \ @PYZFS_ENABLED_TRUE@ --install-lib $(pythonsitedir) \ @PYZFS_ENABLED_TRUE@ --single-version-externally-managed \ @PYZFS_ENABLED_TRUE@ --verbose @PYZFS_ENABLED_TRUE@clean: clean-local @PYZFS_ENABLED_TRUE@ rm -rf build/ pyzfs.egg-info/ @PYZFS_ENABLED_TRUE@clean-local: @PYZFS_ENABLED_TRUE@check-local: all # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/PaxHeaders.151519/dracut0000644000000000000000000000013213612143070016250 xustar000000000000000030 mtime=1579730488.265029089 30 atime=1579730489.076055131 30 ctime=1579730488.265029089 zfs-0.8.3/contrib/dracut/0000775016037001603700000000000013612143070016331 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/dracut/PaxHeaders.151519/README.dracut.markdown0000644000000000000000000000007413607166132022324 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.258028865 zfs-0.8.3/contrib/dracut/README.dracut.markdown0000644016037001603700000002311313607166132022321 0ustar00hutter2hutter200000000000000How to setup a zfs root filesystem using dracut ----------------------------------------------- 1) Install the zfs-dracut package. This package adds a zfs dracut module to the /usr/share/dracut/modules.d/ directory which allows dracut to create an initramfs which is zfs aware. 2) Set the bootfs property for the bootable dataset in the pool. Then set the dataset mountpoint property to '/'. $ zpool set bootfs=pool/dataset pool $ zfs set mountpoint=/ pool/dataset Alternately, legacy mountpoints can be used by setting the 'root=' option on the kernel line of your grub.conf/menu.lst configuration file. Then set the dataset mountpoint property to 'legacy'. $ grub.conf/menu.lst: kernel ... root=ZFS=pool/dataset $ zfs set mountpoint=legacy pool/dataset 3) To set zfs module options put them in /etc/modprobe.d/zfs.conf file. The complete list of zfs module options is available by running the _modinfo zfs_ command. Commonly set options include: zfs_arc_min, zfs_arc_max, zfs_prefetch_disable, and zfs_vdev_max_pending. 4) Finally, create your new initramfs by running dracut. $ dracut --force /path/to/initramfs kernel_version Kernel Command Line ------------------- The initramfs' behavior is influenced by the following kernel command line parameters passed in from the boot loader: * `root=...`: If not set, importable pools are searched for a bootfs attribute. If an explicitly set root is desired, you may use `root=ZFS:pool/dataset` * `zfs_force=0`: If set to 1, the initramfs will run `zpool import -f` when attempting to import pools if the required pool isn't automatically imported by the zfs module. This can save you a trip to a bootcd if hostid has changed, but is dangerous and can lead to zpool corruption, particularly in cases where storage is on a shared fabric such as iSCSI where multiple hosts can access storage devices concurrently. _Please understand the implications of force-importing a pool before enabling this option!_ * `spl_hostid`: By default, the hostid used by the SPL module is read from /etc/hostid inside the initramfs. This file is placed there from the host system when the initramfs is built which effectively ties the ramdisk to the host which builds it. If a different hostid is desired, one may be set in this attribute and will override any file present in the ramdisk. The format should be hex exactly as found in the `/etc/hostid` file, IE `spl_hostid=0x00bab10c`. Note that changing the hostid between boots will most likely lead to an un-importable pool since the last importing hostid won't match. In order to recover from this, you may use the `zfs_force` option or boot from a different filesystem and `zpool import -f` then `zpool export` the pool before rebooting with the new hostid. How it Works ============ The Dracut module consists of the following files (less Makefile's): * `module-setup.sh`: Script run by the initramfs builder to create the ramdisk. Contains instructions on which files are required by the modules and z* programs. Also triggers inclusion of `/etc/hostid` and the zpool cache. This file is not included in the initramfs. * `90-zfs.rules`: udev rules which trigger loading of the ZFS modules at boot. * `zfs-lib.sh`: Utility functions used by the other files. * `parse-zfs.sh`: Run early in the initramfs boot process to parse kernel command line and determine if ZFS is the active root filesystem. * `mount-zfs.sh`: Run later in initramfs boot process after udev has settled to mount the root dataset. * `export-zfs.sh`: Run on shutdown after dracut has restored the initramfs and pivoted to it, allowing for a clean unmount and export of the ZFS root. `zfs-lib.sh` ------------ This file provides a few handy functions for working with ZFS. Those functions are used by the `mount-zfs.sh` and `export-zfs.sh` files. However, they could be used by any other file as well, as long as the file sources `/lib/dracut-zfs-lib.sh`. `module-setup.sh` ----------------- This file is run by the Dracut script within the live system, not at boot time. It's not included in the final initramfs. Functions in this script describe which files are needed by ZFS at boot time. Currently all the various z* and spl modules are included, a dependency is asserted on udev-rules, and the various zfs, zpool, etc. helpers are included. Dracut provides library functions which automatically gather the shared libs necessary to run each of these binaries, so statically built binaries are not required. The zpool and zvol udev rules files are copied from where they are installed by the ZFS build. __PACKAGERS TAKE NOTE__: If you move `/etc/udev/rules/60-z*.rules`, you'll need to update this file to match. Currently this file also includes `/etc/hostid` and `/etc/zfs/zpool.cache` which means the generated ramdisk is specific to the host system which built it. If a generic initramfs is required, it may be preferable to omit these files and specify the `spl_hostid` from the boot loader instead. `parse-zfs.sh` -------------- Run during the cmdline phase of the initramfs boot process, this script performs some basic sanity checks on kernel command line parameters to determine if booting from ZFS is likely to be what is desired. Dracut requires this script to adjust the `root` variable if required and to set `rootok=1` if a mountable root filesystem is available. Unfortunately this script must run before udev is settled and kernel modules are known to be loaded, so accessing the zpool and zfs commands is unsafe. If the root=ZFS... parameter is set on the command line, then it's at least certain that ZFS is what is desired, though this script is unable to determine if ZFS is in fact available. This script will alter the `root` parameter to replace several historical forms of specifying the pool and dataset name with the canonical form of `zfs:pool/dataset`. If no root= parameter is set, the best this script can do is guess that ZFS is desired. At present, no other known filesystems will work with no root= parameter, though this might possibly interfere with using the compiled-in default root in the kernel image. It's considered unlikely that would ever be the case when an initramfs is in use, so this script sets `root=zfs:AUTO` and hopes for the best. Once the root=... (or lack thereof) parameter is parsed, a dummy symlink is created from `/dev/root` -> `/dev/null` to satisfy parts of the Dracut process which check for presence of a single root device node. Finally, an initqueue/finished hook is registered which causes the initqueue phase of Dracut to wait for `/dev/zfs` to become available before attempting to mount anything. `mount-zfs.sh` -------------- This script is run after udev has settled and all tasks in the initqueue have succeeded. This ensures that `/dev/zfs` is available and that the various ZFS modules are successfully loaded. As it is now safe to call zpool and friends, we can proceed to find the bootfs attribute if necessary. If the root parameter was explicitly set on the command line, no parsing is necessary. The list of imported pools is checked to see if the desired pool is already imported. If it's not, and attempt is made to import the pool explicitly, though no force is attempted. Finally the specified dataset is mounted on `$NEWROOT`, first using the `-o zfsutil` option to handle non-legacy mounts, then if that fails, without zfsutil to handle legacy mount points. If no root parameter was specified, this script attempts to find a pool with its bootfs attribute set. First, already-imported pools are scanned and if an appropriate pool is found, no additional pools are imported. If no pool with bootfs is found, any additional pools in the system are imported with `zpool import -N -a`, and the scan for bootfs is tried again. If no bootfs is found with all pools imported, all pools are re-exported, and boot fails. Assuming a bootfs is found, an attempt is made to mount it to `$NEWROOT`, first with, then without the zfsutil option as above. Ordinarily pools are imported _without_ the force option which may cause boot to fail if the hostid has changed or a pool has been physically moved between servers. The `zfs_force` kernel parameter is provided which when set to `1` causes `zpool import` to be run with the `-f` flag. Forcing pool import can lead to serious data corruption and loss of pools, so this option should be used with extreme caution. Note that even with this flag set, if the required zpool was auto-imported by the kernel module, no additional `zpool import` commands are run, so nothing is forced. `export-zfs.sh` --------------- Normally the zpool containing the root dataset cannot be exported on shutdown as it is still in use by the init process. To work around this, Dracut is able to restore the initramfs on shutdown and pivot to it. All remaining process are then running from a ramdisk, allowing for a clean unmount and export of the ZFS root. The theory of operation is described in detail in the [Dracut manual](https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html#_dracut_on_shutdown). This script will try to export all remaining zpools after Dracut has pivoted to the initramfs. If an initial regular export is not successful, Dracut will call this script once more with the `final` option, in which case a forceful export is attempted. Other Dracut modules include similar shutdown scripts and Dracut invokes these scripts round-robin until they succeed. In particular, the `90dm` module installs a script which tries to close and remove all device mapper targets. Thus, if there are ZVOLs containing dm-crypt volumes or if the zpool itself is backed by a dm-crypt volume, the shutdown scripts will try to untangle this. zfs-0.8.3/contrib/dracut/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132020376 xustar000000000000000030 atime=1579730427.949092495 30 ctime=1579730488.253028705 zfs-0.8.3/contrib/dracut/Makefile.am0000644016037001603700000000011213607166132020365 0ustar00hutter2hutter200000000000000SUBDIRS = 02zfsexpandknowledge 90zfs EXTRA_DIST = README.dracut.markdown zfs-0.8.3/contrib/dracut/PaxHeaders.151519/02zfsexpandknowledge0000644000000000000000000000013213612143070022314 xustar000000000000000030 mtime=1579730488.324030985 30 atime=1579730489.076055131 30 ctime=1579730488.324030985 zfs-0.8.3/contrib/dracut/02zfsexpandknowledge/0000775016037001603700000000000013612143070022375 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/dracut/02zfsexpandknowledge/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147024450 xustar000000000000000030 atime=1579730427.842089059 30 ctime=1579730488.319030823 zfs-0.8.3/contrib/dracut/02zfsexpandknowledge/Makefile.am0000644016037001603700000000111013607166147024436 0ustar00hutter2hutter200000000000000pkgdracutdir = $(dracutdir)/modules.d/02zfsexpandknowledge pkgdracut_SCRIPTS = \ module-setup.sh EXTRA_DIST = \ $(top_srcdir)/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in $(pkgdracut_SCRIPTS):%:%.in -$(SED) -e 's,@bindir\@,$(bindir),g' \ -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@datadir\@,$(datadir),g' \ -e 's,@dracutdir\@,$(dracutdir),g' \ -e 's,@udevdir\@,$(udevdir),g' \ -e 's,@udevruledir\@,$(udevruledir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ $< >'$@' clean-local:: -$(RM) $(pkgdracut_SCRIPTS) distclean-local:: -$(RM) $(pkgdracut_SCRIPTS) zfs-0.8.3/contrib/dracut/02zfsexpandknowledge/PaxHeaders.151519/module-setup.sh.in0000644000000000000000000000007413607166132025772 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.324030985 zfs-0.8.3/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in0000755016037001603700000000750213607166132025776 0ustar00hutter2hutter200000000000000#!/bin/bash get_devtype() { local typ typ=$(udevadm info --query=property --name="$1" | grep "^ID_FS_TYPE=" | sed 's|^ID_FS_TYPE=||') if [ "$typ" = "" ] ; then typ=$(blkid -c /dev/null "$1" -o value -s TYPE) fi echo "$typ" } get_pool_devices() { # also present in 99zfssystemd local poolconfigtemp local poolconfigoutput local pooldev local prefix local resolved poolconfigtemp=`mktemp` @sbindir@/zpool list -v -H -P "$1" > "$poolconfigtemp" 2>&1 if [ "$?" != "0" ] ; then poolconfigoutput=$(cat "$poolconfigtemp") dinfo "zfsexpandknowledge: pool $1 cannot be listed: $poolconfigoutput" else cat "$poolconfigtemp" | awk -F '\t' '/\t\/dev/ { print $2 }' | \ while read pooldev ; do if [ -n "$pooldev" -a -e "$pooldev" ] ; then if [ -h "$pooldev" ] ; then resolved=`readlink -f "$pooldev"` else resolved="$pooldev" fi dinfo "zfsexpandknowledge: pool $1 has device $pooldev (which resolves to $resolved)" echo "$resolved" fi done fi rm -f "$poolconfigtemp" } find_zfs_block_devices() { local dev local blockdev local mp local fstype local pool local key local n local poolconfigoutput numfields=`head -1 /proc/self/mountinfo | awk '{print NF}'` if [ "$numfields" == "10" ] ; then fields="n n n n mp n n fstype dev n" else fields="n n n n mp n n n fstype dev n" fi while read $fields ; do if [ "$fstype" != "zfs" ]; then continue ; fi if [ "$mp" == "$1" ]; then pool=$(echo "$dev" | cut -d / -f 1) get_pool_devices "$pool" fi done < /proc/self/mountinfo } array_contains () { local e for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done return 1 } check() { local mp local dev local blockdevs local fstype local majmin local _slavedev local _slavedevname local _slavedevtype local _slavemajmin local _dev if [[ $hostonly ]]; then for mp in \ "/" \ "/etc" \ "/bin" \ "/sbin" \ "/lib" \ "/lib64" \ "/usr" \ "/usr/bin" \ "/usr/sbin" \ "/usr/lib" \ "/usr/lib64" \ "/boot"; do mp=$(readlink -f "$mp") mountpoint "$mp" >/dev/null 2>&1 || continue blockdevs=$(find_zfs_block_devices "$mp") if [ -z "$blockdevs" ] ; then continue ; fi dinfo "zfsexpandknowledge: block devices backing ZFS dataset $mp: $blockdevs" for dev in $blockdevs do array_contains "$dev" "${host_devs[@]}" || host_devs+=("$dev") fstype=$(get_devtype "$dev") host_fs_types["$dev"]="$fstype" majmin=$(get_maj_min "$dev") if [[ -d /sys/dev/block/$majmin/slaves ]] ; then for _slavedev in /sys/dev/block/$majmin/slaves/*; do [[ -f $_slavedev/dev ]] || continue _slavedev=/dev/$(basename "$_slavedev") _slavedevname=$(udevadm info --query=property --name="$_slavedev" | grep "^DEVNAME=" | sed 's|^DEVNAME=||') _slavedevtype=$(get_devtype "$_slavedevname") _slavemajmin=$(get_maj_min "$_slavedevname") dinfo "zfsexpandknowledge: slave block device backing ZFS dataset $mp: $_slavedevname" array_contains "$_slavedevname" "${host_devs[@]}" || host_devs+=("$_slavedevname") host_fs_types["$_slavedevname"]="$_slavedevtype" done fi done done for a in "${host_devs[@]}" do dinfo "zfsexpandknowledge: host device $a" done for a in "${!host_fs_types[@]}" do dinfo "zfsexpandknowledge: device $a of type ${host_fs_types[$a]}" done fi return 1 } zfs-0.8.3/contrib/dracut/02zfsexpandknowledge/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142773024447 xustar000000000000000030 mtime=1579730427.878090215 30 atime=1579730452.206871335 30 ctime=1579730488.322030919 zfs-0.8.3/contrib/dracut/02zfsexpandknowledge/Makefile.in0000664016037001603700000006017213612142773024461 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/dracut/02zfsexpandknowledge DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdracutdir)" SCRIPTS = $(pkgdracut_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ pkgdracutdir = $(dracutdir)/modules.d/02zfsexpandknowledge pkgdracut_SCRIPTS = \ module-setup.sh EXTRA_DIST = \ $(top_srcdir)/contrib/dracut/02zfsexpandknowledge/module-setup.sh.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/dracut/02zfsexpandknowledge/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/dracut/02zfsexpandknowledge/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgdracutSCRIPTS: $(pkgdracut_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdracutdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdracutdir)" @list='$(pkgdracut_SCRIPTS)'; test -n "$(pkgdracutdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdracutdir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdracutdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgdracutSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(pkgdracut_SCRIPTS)'; test -n "$(pkgdracutdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdracutdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdracutdir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdracutdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgdracutSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgdracutSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ clean-local distclean distclean-generic distclean-libtool \ distclean-local distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgdracutSCRIPTS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-pkgdracutSCRIPTS $(pkgdracut_SCRIPTS):%:%.in -$(SED) -e 's,@bindir\@,$(bindir),g' \ -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@datadir\@,$(datadir),g' \ -e 's,@dracutdir\@,$(dracutdir),g' \ -e 's,@udevdir\@,$(udevdir),g' \ -e 's,@udevruledir\@,$(udevruledir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ $< >'$@' clean-local:: -$(RM) $(pkgdracut_SCRIPTS) distclean-local:: -$(RM) $(pkgdracut_SCRIPTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/dracut/PaxHeaders.151519/90zfs0000644000000000000000000000013213612143070017223 xustar000000000000000030 mtime=1579730488.399033393 30 atime=1579730489.076055131 30 ctime=1579730488.399033393 zfs-0.8.3/contrib/dracut/90zfs/0000775016037001603700000000000013612143070017304 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/mount-zfs.sh.in0000644000000000000000000000007413612141517022214 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.385032943 zfs-0.8.3/contrib/dracut/90zfs/mount-zfs.sh.in0000755016037001603700000000476513612141517022230 0ustar00hutter2hutter200000000000000#!/bin/sh . /lib/dracut-zfs-lib.sh ZFS_DATASET="" ZFS_POOL="" case "${root}" in zfs:*) ;; *) return ;; esac GENERATOR_FILE=/run/systemd/generator/sysroot.mount GENERATOR_EXTENSION=/run/systemd/generator/sysroot.mount.d/zfs-enhancement.conf if [ -e "$GENERATOR_FILE" ] && [ -e "$GENERATOR_EXTENSION" ] ; then # If the ZFS sysroot.mount flag exists, the initial RAM disk configured # it to mount ZFS on root. In that case, we bail early. This flag # file gets created by the zfs-generator program upon successful run. info "ZFS: There is a sysroot.mount and zfs-generator has extended it." info "ZFS: Delegating root mount to sysroot.mount." # Let us tell the initrd to run on shutdown. # We have a shutdown hook to run # because we imported the pool. # We now prevent Dracut from running this thing again. for zfsmounthook in "$hookdir"/mount/*zfs* ; do if [ -f "$zfsmounthook" ] ; then rm -f "$zfsmounthook" fi done return fi info "ZFS: No sysroot.mount exists or zfs-generator did not extend it." info "ZFS: Mounting root with the traditional mount-zfs.sh instead." # Delay until all required block devices are present. modprobe zfs 2>/dev/null udevadm settle if [ "${root}" = "zfs:AUTO" ] ; then ZFS_DATASET="$(find_bootfs)" if [ $? -ne 0 ] ; then zpool import -N -a ${ZPOOL_IMPORT_OPTS} ZFS_DATASET="$(find_bootfs)" if [ $? -ne 0 ] ; then warn "ZFS: No bootfs attribute found in importable pools." export_all -F rootok=0 return 1 fi fi info "ZFS: Using ${ZFS_DATASET} as root." fi ZFS_DATASET="${ZFS_DATASET:-${root#zfs:}}" ZFS_POOL="${ZFS_DATASET%%/*}" if import_pool "${ZFS_POOL}" ; then # Load keys if we can or if we need to if [ $(zpool list -H -o feature@encryption $(echo "${ZFS_POOL}" | awk -F\/ '{print $1}')) = 'active' ]; then # if the root dataset has encryption enabled ENCRYPTIONROOT="$(zfs get -H -o value encryptionroot "${ZFS_DATASET}")" if ! [ "${ENCRYPTIONROOT}" = "-" ]; then KEYSTATUS="$(zfs get -H -o value keystatus "${ENCRYPTIONROOT}")" # if the key needs to be loaded if [ "$KEYSTATUS" = "unavailable" ]; then # decrypt them ask_for_password \ --tries 5 \ --prompt "Encrypted ZFS password for ${ENCRYPTIONROOT}: " \ --cmd "zfs load-key '${ENCRYPTIONROOT}'" fi fi fi # Let us tell the initrd to run on shutdown. # We have a shutdown hook to run # because we imported the pool. info "ZFS: Mounting dataset ${ZFS_DATASET}..." if mount_dataset "${ZFS_DATASET}" ; then ROOTFS_MOUNTED=yes return 0 fi fi rootok=0 zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/zfs-env-bootfs.service.in0000644000000000000000000000007413607166132024166 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.399033393 zfs-0.8.3/contrib/dracut/90zfs/zfs-env-bootfs.service.in0000644016037001603700000000056113607166132024165 0ustar00hutter2hutter200000000000000[Unit] Description=Set BOOTFS environment for dracut Documentation=man:zpool(8) DefaultDependencies=no After=zfs-import-cache.service After=zfs-import-scan.service Before=zfs-import.target [Service] Type=oneshot ExecStart=/bin/sh -c "/bin/systemctl set-environment BOOTFS=$(@sbindir@/zpool list -H -o bootfs | grep -m1 -v '^-$')" [Install] WantedBy=zfs-import.target zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/export-zfs.sh.in0000644000000000000000000000007413607166132022377 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.380032783 zfs-0.8.3/contrib/dracut/90zfs/export-zfs.sh.in0000755016037001603700000000074013607166132022400 0ustar00hutter2hutter200000000000000#!/bin/sh . /lib/dracut-zfs-lib.sh _do_zpool_export() { ret=0 errs="" final="${1}" info "ZFS: Exporting ZFS storage pools..." errs=$(export_all -F 2>&1) ret=$? [ -z "${errs}" ] || echo "${errs}" | vwarn if [ "x${ret}" != "x0" ]; then info "ZFS: There was a problem exporting pools." fi if [ "x${final}" != "x" ]; then info "ZFS: pool list" zpool list 2>&1 | vinfo fi return ${ret} } if command -v zpool >/dev/null; then _do_zpool_export "${1}" else : fi zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/zfs-lib.sh.in0000644000000000000000000000007413607166132021624 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.397033329 zfs-0.8.3/contrib/dracut/90zfs/zfs-lib.sh.in0000755016037001603700000001137013607166132021626 0ustar00hutter2hutter200000000000000#!/bin/sh command -v getarg >/dev/null || . /lib/dracut-lib.sh command -v getargbool >/dev/null || { # Compatibility with older Dracut versions. # With apologies to the Dracut developers. getargbool() { if ! [ -z "$_b" ]; then unset _b fi _default="$1"; shift _b=$(getarg "$@") [ $? -ne 0 ] && [ -z "$_b" ] && _b="$_default" if [ -n "$_b" ]; then [ "$_b" = "0" ] && return 1 [ "$_b" = "no" ] && return 1 [ "$_b" = "off" ] && return 1 fi return 0 } } OLDIFS="${IFS}" NEWLINE=" " ZPOOL_IMPORT_OPTS="" if getargbool 0 zfs_force -y zfs.force -y zfsforce ; then warn "ZFS: Will force-import pools if necessary." ZPOOL_IMPORT_OPTS="${ZPOOL_IMPORT_OPTS} -f" fi # find_bootfs # returns the first dataset with the bootfs attribute. find_bootfs() { IFS="${NEWLINE}" for dataset in $(zpool list -H -o bootfs); do case "${dataset}" in "" | "-") continue ;; "no pools available") IFS="${OLDIFS}" return 1 ;; *) IFS="${OLDIFS}" echo "${dataset}" return 0 ;; esac done IFS="${OLDIFS}" return 1 } # import_pool POOL # imports the given zfs pool if it isn't imported already. import_pool() { pool="${1}" if ! zpool list -H "${pool}" > /dev/null 2>&1; then info "ZFS: Importing pool ${pool}..." if ! zpool import -N ${ZPOOL_IMPORT_OPTS} "${pool}" ; then warn "ZFS: Unable to import pool ${pool}" return 1 fi fi return 0 } # mount_dataset DATASET # mounts the given zfs dataset. mount_dataset() { dataset="${1}" mountpoint="$(zfs get -H -o value mountpoint "${dataset}")" # We need zfsutil for non-legacy mounts and not for legacy mounts. if [ "${mountpoint}" = "legacy" ] ; then mount -t zfs "${dataset}" "${NEWROOT}" else mount -o zfsutil -t zfs "${dataset}" "${NEWROOT}" fi return $? } # export_all OPTS # exports all imported zfs pools. export_all() { opts="${@}" ret=0 IFS="${NEWLINE}" for pool in $(zpool list -H -o name) ; do if zpool list -H "${pool}" > /dev/null 2>&1; then zpool export "${pool}" ${opts} || ret=$? fi done IFS="${OLDIFS}" return ${ret} } # ask_for_password # # Wraps around plymouth ask-for-password and adds fallback to tty password ask # if plymouth is not present. # # --cmd command # Command to execute. Required. # --prompt prompt # Password prompt. Note that function already adds ':' at the end. # Recommended. # --tries n # How many times repeat command on its failure. Default is 3. # --ply-[cmd|prompt|tries] # Command/prompt/tries specific for plymouth password ask only. # --tty-[cmd|prompt|tries] # Command/prompt/tries specific for tty password ask only. # --tty-echo-off # Turn off input echo before tty command is executed and turn on after. # It's useful when password is read from stdin. ask_for_password() { ply_tries=3 tty_tries=3 while [ "$#" -gt 0 ]; do case "$1" in --cmd) ply_cmd="$2"; tty_cmd="$2"; shift;; --ply-cmd) ply_cmd="$2"; shift;; --tty-cmd) tty_cmd="$2"; shift;; --prompt) ply_prompt="$2"; tty_prompt="$2"; shift;; --ply-prompt) ply_prompt="$2"; shift;; --tty-prompt) tty_prompt="$2"; shift;; --tries) ply_tries="$2"; tty_tries="$2"; shift;; --ply-tries) ply_tries="$2"; shift;; --tty-tries) tty_tries="$2"; shift;; --tty-echo-off) tty_echo_off=yes;; esac shift done { flock -s 9; # Prompt for password with plymouth, if installed and running. if type plymouth >/dev/null 2>&1 && plymouth --ping 2>/dev/null; then plymouth ask-for-password \ --prompt "$ply_prompt" --number-of-tries="$ply_tries" \ --command="$ply_cmd" ret=$? else if [ "$tty_echo_off" = yes ]; then stty_orig="$(stty -g)" stty -echo fi i=1 while [ "$i" -le "$tty_tries" ]; do [ -n "$tty_prompt" ] && \ printf "%s [%i/%i]:" "$tty_prompt" "$i" "$tty_tries" >&2 eval "$tty_cmd" && ret=0 && break ret=$? i=$((i+1)) [ -n "$tty_prompt" ] && printf '\n' >&2 done unset i [ "$tty_echo_off" = yes ] && stty "$stty_orig" fi } 9>/.console_lock [ $ret -ne 0 ] && echo "Wrong password" >&2 return $ret } zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/zfs-needshutdown.sh.in0000644000000000000000000000007413607166132023565 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.394033231 zfs-0.8.3/contrib/dracut/90zfs/zfs-needshutdown.sh.in0000755016037001603700000000041113607166132023561 0ustar00hutter2hutter200000000000000#!/bin/sh type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh if zpool list 2>&1 | grep -q 'no pools available' ; then info "ZFS: No active pools, no need to export anything." else info "ZFS: There is an active pool, will export it." need_shutdown fi zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147021357 xustar000000000000000030 atime=1579730427.895090761 30 ctime=1579730488.376032653 zfs-0.8.3/contrib/dracut/90zfs/Makefile.am0000644016037001603700000000225313607166147021356 0ustar00hutter2hutter200000000000000pkgdracutdir = $(dracutdir)/modules.d/90zfs pkgdracut_SCRIPTS = \ export-zfs.sh \ module-setup.sh \ mount-zfs.sh \ parse-zfs.sh \ zfs-generator.sh \ zfs-load-key.sh \ zfs-needshutdown.sh \ zfs-lib.sh pkgdracut_DATA = \ zfs-env-bootfs.service EXTRA_DIST = \ $(top_srcdir)/contrib/dracut/90zfs/export-zfs.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/module-setup.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/mount-zfs.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/parse-zfs.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-generator.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-load-key.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-needshutdown.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-env-bootfs.service.in $(pkgdracut_SCRIPTS) $(pkgdracut_DATA) :%:%.in -$(SED) -e 's,@bindir\@,$(bindir),g' \ -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@udevdir\@,$(udevdir),g' \ -e 's,@udevruledir\@,$(udevruledir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ -e 's,@systemdunitdir\@,$(systemdunitdir),g' \ -e 's,@mounthelperdir\@,$(mounthelperdir),g' \ $< >'$@' distclean-local:: -$(RM) $(pkgdracut_SCRIPTS) $(pkgdracut_DATA) zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/module-setup.sh.in0000644000000000000000000000007413607166132022701 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.383032879 zfs-0.8.3/contrib/dracut/90zfs/module-setup.sh.in0000755016037001603700000000772213607166132022711 0ustar00hutter2hutter200000000000000#!/bin/bash check() { # We depend on udev-rules being loaded [ "${1}" = "-d" ] && return 0 # Verify the zfs tool chain for tool in "@sbindir@/zpool" "@sbindir@/zfs" "@mounthelperdir@/mount.zfs" ; do test -x "$tool" || return 1 done # Verify grep exists which grep >/dev/null 2>&1 || return 1 return 0 } depends() { echo udev-rules return 0 } installkernel() { instmods zfs instmods zcommon instmods znvpair instmods zavl instmods zunicode instmods zlua instmods icp instmods spl instmods zlib_deflate instmods zlib_inflate } install() { inst_rules @udevruledir@/90-zfs.rules inst_rules @udevruledir@/69-vdev.rules inst_rules @udevruledir@/60-zvol.rules dracut_install hostid dracut_install grep dracut_install @sbindir@/zfs dracut_install @sbindir@/zpool # Workaround for zfsonlinux/zfs#4749 by ensuring libgcc_s.so(.1) is included if [[ -n "$(ldd @sbindir@/zpool | grep -F 'libgcc_s.so')" ]]; then # Dracut will have already tracked and included it :; elif command -v gcc-config 2>&1 1>/dev/null; then # On systems with gcc-config (Gentoo, Funtoo, etc.): # Use the current profile to resolve the appropriate path dracut_install "/usr/lib/gcc/$(s=$(gcc-config -c); echo ${s%-*}/${s##*-})/libgcc_s.so.1" elif [[ -n "$(ls /usr/lib/libgcc_s.so* 2>/dev/null)" ]]; then # Try a simple path first dracut_install /usr/lib/libgcc_s.so* else # Fallback: Guess the path and include all matches dracut_install /usr/lib/gcc/*/*/libgcc_s.so* fi dracut_install @mounthelperdir@/mount.zfs dracut_install @udevdir@/vdev_id dracut_install awk dracut_install basename dracut_install cut dracut_install head dracut_install @udevdir@/zvol_id inst_hook cmdline 95 "${moddir}/parse-zfs.sh" if [ -n "$systemdutildir" ] ; then inst_script "${moddir}/zfs-generator.sh" "$systemdutildir"/system-generators/dracut-zfs-generator fi inst_hook pre-mount 90 "${moddir}/zfs-load-key.sh" inst_hook mount 98 "${moddir}/mount-zfs.sh" inst_hook cleanup 99 "${moddir}/zfs-needshutdown.sh" inst_hook shutdown 20 "${moddir}/export-zfs.sh" inst_simple "${moddir}/zfs-lib.sh" "/lib/dracut-zfs-lib.sh" if [ -e @sysconfdir@/zfs/zpool.cache ]; then inst @sysconfdir@/zfs/zpool.cache type mark_hostonly >/dev/null 2>&1 && mark_hostonly @sysconfdir@/zfs/zpool.cache fi if [ -e @sysconfdir@/zfs/vdev_id.conf ]; then inst @sysconfdir@/zfs/vdev_id.conf type mark_hostonly >/dev/null 2>&1 && mark_hostonly @sysconfdir@/zfs/vdev_id.conf fi # Synchronize initramfs and system hostid AA=`hostid | cut -b 1,2` BB=`hostid | cut -b 3,4` CC=`hostid | cut -b 5,6` DD=`hostid | cut -b 7,8` echo -ne "\\x${DD}\\x${CC}\\x${BB}\\x${AA}" > "${initdir}/etc/hostid" if dracut_module_included "systemd"; then mkdir -p "${initdir}/$systemdsystemunitdir/zfs-import.target.wants" for _item in scan cache ; do dracut_install @systemdunitdir@/zfs-import-$_item.service if ! [ -L "${initdir}/$systemdsystemunitdir/zfs-import.target.wants"/zfs-import-$_item.service ]; then ln -s ../zfs-import-$_item.service "${initdir}/$systemdsystemunitdir/zfs-import.target.wants"/zfs-import-$_item.service type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-import-$_item.service fi done inst "${moddir}"/zfs-env-bootfs.service "${systemdsystemunitdir}"/zfs-env-bootfs.service ln -s ../zfs-env-bootfs.service "${initdir}/${systemdsystemunitdir}/zfs-import.target.wants"/zfs-env-bootfs.service type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-env-bootfs.service dracut_install systemd-ask-password dracut_install systemd-tty-ask-password-agent mkdir -p "${initdir}/$systemdsystemunitdir/initrd.target.wants" dracut_install @systemdunitdir@/zfs-import.target if ! [ -L "${initdir}/$systemdsystemunitdir/initrd.target.wants"/zfs-import.target ]; then ln -s ../zfs-import.target "${initdir}/$systemdsystemunitdir/initrd.target.wants"/zfs-import.target type mark_hostonly >/dev/null 2>&1 && mark_hostonly @systemdunitdir@/zfs-import.target fi fi } zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/zfs-generator.sh.in0000644000000000000000000000007413607166132023044 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.390033103 zfs-0.8.3/contrib/dracut/90zfs/zfs-generator.sh.in0000755016037001603700000000373313607166132023052 0ustar00hutter2hutter200000000000000#!/bin/bash echo "zfs-generator: starting" >> /dev/kmsg GENERATOR_DIR="$1" [ -n "$GENERATOR_DIR" ] || { echo "zfs-generator: no generator directory specified, exiting" >> /dev/kmsg exit 1 } [ -f /lib/dracut-lib.sh ] && dracutlib=/lib/dracut-lib.sh [ -f /usr/lib/dracut/modules.d/99base/dracut-lib.sh ] && dracutlib=/usr/lib/dracut/modules.d/99base/dracut-lib.sh type getarg >/dev/null 2>&1 || { echo "zfs-generator: loading Dracut library from $dracutlib" >> /dev/kmsg . "$dracutlib" } [ -z "$root" ] && root=$(getarg root=) [ -z "$rootfstype" ] && rootfstype=$(getarg rootfstype=) [ -z "$rootflags" ] && rootflags=$(getarg rootflags=) # If root is not ZFS= or zfs: or rootfstype is not zfs # then we are not supposed to handle it. [ "${root##zfs:}" = "${root}" -a "${root##ZFS=}" = "${root}" -a "$rootfstype" != "zfs" ] && exit 0 rootfstype=zfs if echo "${rootflags}" | grep -Eq '^zfsutil$|^zfsutil,|,zfsutil$|,zfsutil,' ; then true elif test -n "${rootflags}" ; then rootflags="zfsutil,${rootflags}" else rootflags=zfsutil fi echo "zfs-generator: writing extension for sysroot.mount to $GENERATOR_DIR"/sysroot.mount.d/zfs-enhancement.conf >> /dev/kmsg [ -d "$GENERATOR_DIR" ] || mkdir "$GENERATOR_DIR" [ -d "$GENERATOR_DIR"/sysroot.mount.d ] || mkdir "$GENERATOR_DIR"/sysroot.mount.d { echo "[Unit]" echo "Before=initrd-root-fs.target" echo "After=zfs-import.target" echo "[Mount]" if [ "${root}" = "zfs:AUTO" ] ; then echo "PassEnvironment=BOOTFS" echo 'What=${BOOTFS}' else root="${root##zfs:}" root="${root##ZFS=}" echo "What=${root}" fi echo "Type=${rootfstype}" echo "Options=${rootflags}" } > "$GENERATOR_DIR"/sysroot.mount.d/zfs-enhancement.conf [ -d "$GENERATOR_DIR"/initrd-root-fs.target.requires ] || mkdir -p "$GENERATOR_DIR"/initrd-root-fs.target.requires ln -s ../sysroot.mount "$GENERATOR_DIR"/initrd-root-fs.target.requires/sysroot.mount echo "zfs-generator: finished" >> /dev/kmsgzfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/parse-zfs.sh.in0000644000000000000000000000007413607166132022170 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.388033039 zfs-0.8.3/contrib/dracut/90zfs/parse-zfs.sh.in0000755016037001603700000000403513607166132022172 0ustar00hutter2hutter200000000000000#!/bin/sh . /lib/dracut-lib.sh # Let the command line override our host id. spl_hostid=$(getarg spl_hostid=) if [ -n "${spl_hostid}" ] ; then info "ZFS: Using hostid from command line: ${spl_hostid}" AA=$(echo "${spl_hostid}" | cut -b 1,2) BB=$(echo "${spl_hostid}" | cut -b 3,4) CC=$(echo "${spl_hostid}" | cut -b 5,6) DD=$(echo "${spl_hostid}" | cut -b 7,8) echo -ne "\\x${DD}\\x${CC}\\x${BB}\\x${AA}" >/etc/hostid elif [ -f "/etc/hostid" ] ; then info "ZFS: Using hostid from /etc/hostid: $(hostid)" else warn "ZFS: No hostid found on kernel command line or /etc/hostid." warn "ZFS: Pools may not import correctly." fi wait_for_zfs=0 case "${root}" in ""|zfs|zfs:) # We'll take root unset, root=zfs, or root=zfs: # No root set, so we want to read the bootfs attribute. We # can't do that until udev settles so we'll set dummy values # and hope for the best later on. root="zfs:AUTO" rootok=1 wait_for_zfs=1 info "ZFS: Enabling autodetection of bootfs after udev settles." ;; ZFS\=*|zfs:*|zfs:FILESYSTEM\=*|FILESYSTEM\=*) # root is explicit ZFS root. Parse it now. We can handle # a root=... param in any of the following formats: # root=ZFS=rpool/ROOT # root=zfs:rpool/ROOT # root=zfs:FILESYSTEM=rpool/ROOT # root=FILESYSTEM=rpool/ROOT # root=ZFS=pool+with+space/ROOT+WITH+SPACE (translates to root=ZFS=pool with space/ROOT WITH SPACE) # Strip down to just the pool/fs root="${root#zfs:}" root="${root#FILESYSTEM=}" root="zfs:${root#ZFS=}" # switch + with spaces because kernel cmdline does not allow us to quote parameters root=$(printf '%s\n' "$root" | sed "s/+/ /g") rootok=1 wait_for_zfs=1 info "ZFS: Set ${root} as bootfs." ;; esac # Make sure Dracut is happy that we have a root and will wait for ZFS # modules to settle before mounting. if [ ${wait_for_zfs} -eq 1 ]; then ln -s /dev/null /dev/root 2>/dev/null initqueuedir="${hookdir}/initqueue/finished" test -d "${initqueuedir}" || { initqueuedir="${hookdir}/initqueue-finished" } echo '[ -e /dev/zfs ]' > "${initqueuedir}/zfs.sh" fi zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/zfs-load-key.sh.in0000644000000000000000000000007413612141523022554 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.392033167 zfs-0.8.3/contrib/dracut/90zfs/zfs-load-key.sh.in0000755016037001603700000000506713612141523022564 0ustar00hutter2hutter200000000000000#!/bin/sh # only run this on systemd systems, we handle the decrypt in mount-zfs.sh in the mount hook otherwise [ -e /bin/systemctl ] || return 0 # This script only gets executed on systemd systems, see mount-zfs.sh for non-systemd systems # import the libs now that we know the pool imported [ -f /lib/dracut-lib.sh ] && dracutlib=/lib/dracut-lib.sh [ -f /usr/lib/dracut/modules.d/99base/dracut-lib.sh ] && dracutlib=/usr/lib/dracut/modules.d/99base/dracut-lib.sh # shellcheck source=./lib-zfs.sh.in . "$dracutlib" # load the kernel command line vars [ -z "$root" ] && root="$(getarg root=)" # If root is not ZFS= or zfs: or rootfstype is not zfs then we are not supposed to handle it. [ "${root##zfs:}" = "${root}" ] && [ "${root##ZFS=}" = "${root}" ] && [ "$rootfstype" != "zfs" ] && exit 0 # There is a race between the zpool import and the pre-mount hooks, so we wait for a pool to be imported while true; do zpool list -H | grep -q -v '^$' && break [ "$(systemctl is-failed zfs-import-cache.service)" = 'failed' ] && exit 1 [ "$(systemctl is-failed zfs-import-scan.service)" = 'failed' ] && exit 1 sleep 0.1s done # run this after import as zfs-import-cache/scan service is confirmed good # we do not overwrite the ${root} variable, but create a new one, BOOTFS, to hold the dataset if [ "${root}" = "zfs:AUTO" ] ; then BOOTFS="$(zpool list -H -o bootfs | awk '$1 != "-" {print; exit}')" else BOOTFS="${root##zfs:}" BOOTFS="${BOOTFS##ZFS=}" fi # if pool encryption is active and the zfs command understands '-o encryption' if [ "$(zpool list -H -o feature@encryption $(echo "${BOOTFS}" | awk -F\/ '{print $1}'))" = 'active' ]; then # if the root dataset has encryption enabled ENCRYPTIONROOT=$(zfs get -H -o value encryptionroot "${BOOTFS}") # where the key is stored (in a file or loaded via prompt) KEYLOCATION=$(zfs get -H -o value keylocation "${ENCRYPTIONROOT}") if ! [ "${ENCRYPTIONROOT}" = "-" ]; then KEYSTATUS="$(zfs get -H -o value keystatus "${ENCRYPTIONROOT}")" # continue only if the key needs to be loaded [ "$KEYSTATUS" = "unavailable" ] || exit 0 # if key is stored in a file, do not prompt if ! [ "${KEYLOCATION}" = "prompt" ]; then zfs load-key "${ENCRYPTIONROOT}" else # decrypt them TRY_COUNT=5 while [ $TRY_COUNT -gt 0 ]; do systemd-ask-password "Encrypted ZFS password for ${BOOTFS}" --no-tty | zfs load-key "${ENCRYPTIONROOT}" && break TRY_COUNT=$((TRY_COUNT - 1)) done fi fi fi zfs-0.8.3/contrib/dracut/90zfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142773021356 xustar000000000000000030 mtime=1579730427.932091949 30 atime=1579730452.236872299 30 ctime=1579730488.378032719 zfs-0.8.3/contrib/dracut/90zfs/Makefile.in0000664016037001603700000006321213612142773021366 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/dracut/90zfs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdracutdir)" \ "$(DESTDIR)$(pkgdracutdir)" SCRIPTS = $(pkgdracut_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(pkgdracut_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ pkgdracutdir = $(dracutdir)/modules.d/90zfs pkgdracut_SCRIPTS = \ export-zfs.sh \ module-setup.sh \ mount-zfs.sh \ parse-zfs.sh \ zfs-generator.sh \ zfs-load-key.sh \ zfs-needshutdown.sh \ zfs-lib.sh pkgdracut_DATA = \ zfs-env-bootfs.service EXTRA_DIST = \ $(top_srcdir)/contrib/dracut/90zfs/export-zfs.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/module-setup.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/mount-zfs.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/parse-zfs.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-generator.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-load-key.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-needshutdown.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-lib.sh.in \ $(top_srcdir)/contrib/dracut/90zfs/zfs-env-bootfs.service.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/dracut/90zfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/dracut/90zfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgdracutSCRIPTS: $(pkgdracut_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdracutdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdracutdir)" @list='$(pkgdracut_SCRIPTS)'; test -n "$(pkgdracutdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdracutdir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdracutdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgdracutSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(pkgdracut_SCRIPTS)'; test -n "$(pkgdracutdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdracutdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdracutdir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-pkgdracutDATA: $(pkgdracut_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdracutdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdracutdir)" @list='$(pkgdracut_DATA)'; test -n "$(pkgdracutdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdracutdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdracutdir)" || exit $$?; \ done uninstall-pkgdracutDATA: @$(NORMAL_UNINSTALL) @list='$(pkgdracut_DATA)'; test -n "$(pkgdracutdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdracutdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdracutdir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdracutdir)" "$(DESTDIR)$(pkgdracutdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgdracutDATA install-pkgdracutSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgdracutDATA uninstall-pkgdracutSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distclean-local \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgdracutDATA \ install-pkgdracutSCRIPTS install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-pkgdracutDATA \ uninstall-pkgdracutSCRIPTS $(pkgdracut_SCRIPTS) $(pkgdracut_DATA) :%:%.in -$(SED) -e 's,@bindir\@,$(bindir),g' \ -e 's,@sbindir\@,$(sbindir),g' \ -e 's,@udevdir\@,$(udevdir),g' \ -e 's,@udevruledir\@,$(udevruledir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ -e 's,@systemdunitdir\@,$(systemdunitdir),g' \ -e 's,@mounthelperdir\@,$(mounthelperdir),g' \ $< >'$@' distclean-local:: -$(RM) $(pkgdracut_SCRIPTS) $(pkgdracut_DATA) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/dracut/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142773020403 xustar000000000000000030 mtime=1579730427.984093619 30 atime=1579730452.175870341 30 ctime=1579730488.256028801 zfs-0.8.3/contrib/dracut/Makefile.in0000664016037001603700000006762013612142773020422 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/dracut DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = 02zfsexpandknowledge 90zfs EXTRA_DIST = README.dracut.markdown all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/dracut/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/dracut/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/PaxHeaders.151519/bash_completion.d0000644000000000000000000000013213612143070020356 xustar000000000000000030 mtime=1579730488.208027259 30 atime=1579730489.076055131 30 ctime=1579730488.208027259 zfs-0.8.3/contrib/bash_completion.d/0000775016037001603700000000000013612143070020437 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/bash_completion.d/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132022504 xustar000000000000000030 atime=1579730427.790087389 30 ctime=1579730488.204027131 zfs-0.8.3/contrib/bash_completion.d/Makefile.am0000644016037001603700000000014413607166132022500 0ustar00hutter2hutter200000000000000bashcompletiondir = $(sysconfdir)/bash_completion.d noinst_DATA = zfs EXTRA_DIST = $(noinst_DATA) zfs-0.8.3/contrib/bash_completion.d/PaxHeaders.151519/zfs0000644000000000000000000000007413607166132021175 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.208027259 zfs-0.8.3/contrib/bash_completion.d/zfs0000644016037001603700000002605113607166132021176 0ustar00hutter2hutter200000000000000# Copyright (c) 2013, Aneurin Price # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation # files (the "Software"), to deal in the Software without # restriction, including without limitation the rights to use, # copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the # Software is furnished to do so, subject to the following # conditions: # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. if [[ -w /dev/zfs ]]; then __ZFS_CMD="zfs" __ZPOOL_CMD="zpool" else __ZFS_CMD="sudo zfs" __ZPOOL_CMD="sudo zpool" fi __zfs_get_commands() { $__ZFS_CMD 2>&1 | awk '/^\t[a-z]/ {print $1}' | cut -f1 -d '|' | uniq } __zfs_get_properties() { $__ZFS_CMD get 2>&1 | awk '$2 == "YES" || $2 == "NO" {print $1}'; echo all name space } __zfs_get_editable_properties() { $__ZFS_CMD get 2>&1 | awk '$2 == "YES" {print $1"="}' } __zfs_get_inheritable_properties() { $__ZFS_CMD get 2>&1 | awk '$3 == "YES" {print $1}' } __zfs_list_datasets() { $__ZFS_CMD list -H -o name -t filesystem,volume } __zfs_list_filesystems() { $__ZFS_CMD list -H -o name -t filesystem } __zfs_match_snapshot() { local base_dataset=${cur%@*} if [[ $base_dataset != $cur ]] then $__ZFS_CMD list -H -o name -t snapshot -d 1 $base_dataset else $__ZFS_CMD list -H -o name -t filesystem,volume | awk '{print $1"@"}' fi } __zfs_match_explicit_snapshot() { local base_dataset=${cur%@*} if [[ $base_dataset != $cur ]] then $__ZFS_CMD list -H -o name -t snapshot -d 1 $base_dataset fi } __zfs_match_multiple_snapshots() { local existing_opts=$(expr "$cur" : '\(.*\)[%,]') if [[ $existing_opts ]] then local base_dataset=${cur%@*} if [[ $base_dataset != $cur ]] then local cur=${cur##*,} if [[ $cur =~ ^%|%.*% ]] then # correct range syntax is start%end return 1 fi local range_start=$(expr "$cur" : '\(.*%\)') $__ZFS_CMD list -H -o name -t snapshot -d 1 $base_dataset | sed 's$.*@$'$range_start'$g' fi else __zfs_match_explicit_snapshot; __zfs_list_datasets fi } __zfs_list_volumes() { $__ZFS_CMD list -H -o name -t volume } __zfs_argument_chosen() { local word property for word in $(seq $((COMP_CWORD-1)) -1 2) do local prev="${COMP_WORDS[$word]}" if [[ ${COMP_WORDS[$word-1]} != -[tos] ]] then if [[ "$prev" == [^,]*,* ]] || [[ "$prev" == *[@:]* ]] then return 0 fi for property in $@ do if [[ $prev == "$property" ]] then return 0 fi done fi done return 1 } __zfs_complete_ordered_arguments() { local list1=$1 local list2=$2 local cur=$3 local extra=$4 if __zfs_argument_chosen $list1 then COMPREPLY=($(compgen -W "$list2 $extra" -- "$cur")) else COMPREPLY=($(compgen -W "$list1 $extra" -- "$cur")) fi } __zfs_complete_multiple_options() { local options=$1 local cur=$2 COMPREPLY=($(compgen -W "$options" -- "${cur##*,}")) local existing_opts=$(expr "$cur" : '\(.*,\)') if [[ $existing_opts ]] then COMPREPLY=( "${COMPREPLY[@]/#/${existing_opts}}" ) fi } __zfs_complete_switch() { local options=$1 if [[ ${cur:0:1} == - ]] then COMPREPLY=($(compgen -W "-{$options}" -- "$cur")) return 0 else return 1 fi } __zfs_complete() { local cur prev cmd cmds COMPREPLY=() # Don't split on colon _get_comp_words_by_ref -n : -c cur -p prev -w COMP_WORDS -i COMP_CWORD cmd="${COMP_WORDS[1]}" if [[ ${prev##*/} == zfs ]] then cmds=$(__zfs_get_commands) COMPREPLY=($(compgen -W "$cmds -?" -- "$cur")) return 0 fi case "${cmd}" in clone) case "${prev}" in -o) COMPREPLY=($(compgen -W "$(__zfs_get_editable_properties)" -- "$cur")) ;; *) if ! __zfs_complete_switch "o,p" then if __zfs_argument_chosen then COMPREPLY=($(compgen -W "$(__zfs_list_datasets)" -- "$cur")) else COMPREPLY=($(compgen -W "$(__zfs_match_snapshot)" -- "$cur")) fi fi ;; esac ;; get) case "${prev}" in -d) COMPREPLY=($(compgen -W "" -- "$cur")) ;; -t) __zfs_complete_multiple_options "filesystem volume snapshot all" "$cur" ;; -s) __zfs_complete_multiple_options "local default inherited temporary none" "$cur" ;; -o) __zfs_complete_multiple_options "name property value source received all" "$cur" ;; *) if ! __zfs_complete_switch "H,r,p,d,o,t,s" then if __zfs_argument_chosen $(__zfs_get_properties) then COMPREPLY=($(compgen -W "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" -- "$cur")) else __zfs_complete_multiple_options "$(__zfs_get_properties)" "$cur" fi fi ;; esac ;; inherit) if ! __zfs_complete_switch "r" then __zfs_complete_ordered_arguments "$(__zfs_get_inheritable_properties)" "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" $cur fi ;; list) case "${prev}" in -d) COMPREPLY=($(compgen -W "" -- "$cur")) ;; -t) __zfs_complete_multiple_options "filesystem volume snapshot all" "$cur" ;; -o) __zfs_complete_multiple_options "$(__zfs_get_properties)" "$cur" ;; -s|-S) COMPREPLY=($(compgen -W "$(__zfs_get_properties)" -- "$cur")) ;; *) if ! __zfs_complete_switch "H,r,d,o,t,s,S" then COMPREPLY=($(compgen -W "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" -- "$cur")) fi ;; esac ;; promote) COMPREPLY=($(compgen -W "$(__zfs_list_filesystems)" -- "$cur")) ;; rollback) if ! __zfs_complete_switch "r,R,f" then COMPREPLY=($(compgen -W "$(__zfs_match_snapshot)" -- "$cur")) fi ;; send) if ! __zfs_complete_switch "d,n,P,p,R,v,i,I" then COMPREPLY=($(compgen -W "$(__zfs_match_snapshot)" -- "$cur")) fi ;; snapshot) case "${prev}" in -o) COMPREPLY=($(compgen -W "$(__zfs_get_editable_properties)" -- "$cur")) ;; *) if ! __zfs_complete_switch "o,r" then COMPREPLY=($(compgen -W "$(__zfs_list_datasets | awk '{print $1"@"}')" -- "$cur")) fi ;; esac ;; set) __zfs_complete_ordered_arguments "$(__zfs_get_editable_properties)" "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" $cur ;; upgrade) case "${prev}" in -a|-V|-v) COMPREPLY=($(compgen -W "" -- "$cur")) ;; *) if ! __zfs_complete_switch "a,V,v,r" then COMPREPLY=($(compgen -W "$(__zfs_list_filesystems)" -- "$cur")) fi ;; esac ;; destroy) if ! __zfs_complete_switch "d,f,n,p,R,r,v" then __zfs_complete_multiple_options "$(__zfs_match_multiple_snapshots)" $cur fi ;; *) COMPREPLY=($(compgen -W "$(__zfs_match_explicit_snapshot) $(__zfs_list_datasets)" -- "$cur")) ;; esac __ltrim_colon_completions "$cur" return 0 } __zpool_get_commands() { $__ZPOOL_CMD 2>&1 | awk '/^\t[a-z]/ {print $1}' | uniq } __zpool_get_properties() { $__ZPOOL_CMD get 2>&1 | awk '$2 == "YES" || $2 == "NO" {print $1}'; echo all } __zpool_get_editable_properties() { $__ZPOOL_CMD get 2>&1 | awk '$2 == "YES" {print $1"="}' } __zpool_list_pools() { $__ZPOOL_CMD list -H -o name } __zpool_complete() { local cur prev cmd cmds COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" cmd="${COMP_WORDS[1]}" if [[ ${prev##*/} == zpool ]] then cmds=$(__zpool_get_commands) COMPREPLY=($(compgen -W "$cmds" -- "$cur")) return 0 fi case "${cmd}" in get) __zfs_complete_ordered_arguments "$(__zpool_get_properties)" "$(__zpool_list_pools)" $cur return 0 ;; import) if [[ $prev == -d ]] then _filedir -d else COMPREPLY=($(compgen -W "$(__zpool_list_pools) -d" -- "$cur")) fi return 0 ;; set) __zfs_complete_ordered_arguments "$(__zpool_get_editable_properties)" "$(__zpool_list_pools)" $cur return 0 ;; add|attach|clear|create|detach|offline|online|remove|replace) local pools="$(__zpool_list_pools)" if __zfs_argument_chosen $pools then _filedir else COMPREPLY=($(compgen -W "$pools" -- "$cur")) fi return 0 ;; *) COMPREPLY=($(compgen -W "$(__zpool_list_pools)" -- "$cur")) return 0 ;; esac } complete -F __zfs_complete zfs complete -F __zpool_complete zpool zfs-0.8.3/contrib/bash_completion.d/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142773022511 xustar000000000000000030 mtime=1579730427.825088513 30 atime=1579730452.146869409 30 ctime=1579730488.206027195 zfs-0.8.3/contrib/bash_completion.d/Makefile.in0000664016037001603700000005163313612142773022525 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/bash_completion.d DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(noinst_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ bashcompletiondir = $(sysconfdir)/bash_completion.d noinst_DATA = zfs EXTRA_DIST = $(noinst_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/bash_completion.d/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/bash_completion.d/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313612141511017101 xustar000000000000000029 atime=1579730427.73808572 30 ctime=1579730488.145025237 zfs-0.8.3/contrib/Makefile.am0000644016037001603700000000016313612141511017077 0ustar00hutter2hutter200000000000000SUBDIRS = bash_completion.d dracut initramfs pyzfs zcp DIST_SUBDIRS = bash_completion.d dracut initramfs pyzfs zcp zfs-0.8.3/contrib/PaxHeaders.151519/zcp0000644000000000000000000000013213612143070015562 xustar000000000000000030 mtime=1579730488.776045497 30 atime=1579730489.076055131 30 ctime=1579730488.776045497 zfs-0.8.3/contrib/zcp/0000775016037001603700000000000013612143070015643 5ustar00hutter2hutter200000000000000zfs-0.8.3/contrib/zcp/PaxHeaders.151519/autosnap.lua0000644000000000000000000000007413612141511020177 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730488.776045497 zfs-0.8.3/contrib/zcp/autosnap.lua0000644016037001603700000000301013612141511020166 0ustar00hutter2hutter200000000000000-- Recursively snapshot every dataset with a given property -- -- Usage: zfs program autosnap.lua -- [-n] [-p ] results = {} args = ... argv = args["argv"] usage = [[ usage: zfs program autosnap.lua -- [-n] [-p ] -n: performs checks only, does not take snapshots -p : property to check. [default: com.sun:auto-snapshot] : root snapshot to create [example: tank/data@backup] ]] property = "com.sun:auto-snapshot" noop = false root_snap = nil for i, arg in ipairs(argv) do if arg == "-n" then noop = true elseif arg == "-p" then elseif argv[i-1] == "-p" then property = arg else root_snap = arg end end if root_snap == nil or property == nil then error(usage) end root_ds_name = "" snap_name = "" for i = 1, #root_snap do if root_snap:sub(i, i) == "@" then root_ds_name = root_snap:sub(1, i-1) snap_name = root_snap:sub(i+1, root_snap:len()) end end function auto_snap(root) auto, source = zfs.get_prop(root, property) if auto == "true" then ds_snap_name = root .. "@" .. snap_name err = 0 if noop then err = zfs.check.snapshot(ds_snap_name) else err = zfs.sync.snapshot(ds_snap_name) end results[ds_snap_name] = err end for child in zfs.list.children(root) do auto_snap(child) end end auto_snap(root_ds_name) err_txt = "" for ds, err in pairs(results) do if err ~= 0 then err_txt = err_txt .. "failed to create " .. ds .. ": " .. err .. "\n" end end if err_txt ~= "" then error(err_txt) end return results zfs-0.8.3/contrib/zcp/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141517017704 xustar000000000000000030 atime=1579730428.263102577 30 ctime=1579730488.772045369 zfs-0.8.3/contrib/zcp/Makefile.am0000644016037001603700000000003213612141517017674 0ustar00hutter2hutter200000000000000EXTRA_DIST = autosnap.lua zfs-0.8.3/contrib/zcp/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774017716 xustar000000000000000030 mtime=1579730428.296103637 30 atime=1579730452.446879042 30 ctime=1579730488.774045433 zfs-0.8.3/contrib/zcp/Makefile.in0000664016037001603700000005141213612142774017725 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib/zcp DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ EXTRA_DIST = autosnap.lua all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/zcp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/zcp/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/contrib/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142773017121 xustar000000000000000030 mtime=1579730427.773086843 30 atime=1579730452.117868479 30 ctime=1579730488.147025301 zfs-0.8.3/contrib/Makefile.in0000664016037001603700000006761313612142773017142 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = contrib DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = bash_completion.d dracut initramfs pyzfs zcp DIST_SUBDIRS = bash_completion.d dracut initramfs pyzfs zcp all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu contrib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/PaxHeaders.151519/aclocal.m40000644000000000000000000000013213612142755015254 xustar000000000000000030 mtime=1579730413.530629573 30 atime=1579730413.740636315 30 ctime=1579730468.715401385 zfs-0.8.3/aclocal.m40000664016037001603700000015261413612142755015271 0ustar00hutter2hutter200000000000000# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, [m4_warning([this file was generated for autoconf 2.63. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # Figure out how to run the assembler. -*- Autoconf -*- # Copyright (C) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_PROG_AS # ---------- AC_DEFUN([AM_PROG_AS], [# By default we simply use the C compiler to build assembly code. AC_REQUIRE([AC_PROG_CC]) test "${CCAS+set}" = set || CCAS=$CC test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl ]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering # Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. # Default is to disable them, unless `enable' is passed literally. # For symmetry, `disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), [enable], [m4_define([am_maintainer_other], [disable])], [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], [ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful (and sometimes confusing) to the casual installer], [USE_MAINTAINER_MODE=$enableval], [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST([MAINT])dnl ] ) AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_PROG_CC_C_O # -------------- # Like AC_PROG_CC_C_O, but changed for automake. AC_DEFUN([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC_C_O])dnl AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi dnl Make sure AC_PROG_CC is never called again, or it will override our dnl setting of CC. m4_define([AC_PROG_CC], [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To # install modules, copy them to $(pythondir), using the python_PYTHON # automake variable. To install a package with the same name as the # automake package, install to $(pkgpythondir), or use the # pkgpython_PYTHON automake variable. # # The variables $(pyexecdir) and $(pkgpyexecdir) are provided as # locations to install python extension modules (shared libraries). # Another macro is required to find the appropriate flags to compile # extension modules. # # If your package is configured with a different prefix to python, # users will have to add the install directory to the PYTHONPATH # environment variable, or create a .pth file (see the python # documentation for details). # # If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will # cause an error if the version of python installed on the system # doesn't meet the requirement. MINIMUM-VERSION should consist of # numbers and dots only. AC_DEFUN([AM_PATH_PYTHON], [ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl python2.1 python2.0]) m4_if([$1],[],[ dnl No version check is needed. # Find any Python interpreter. if test -z "$PYTHON"; then AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) fi am_display_PYTHON=python ], [ dnl A version check is needed. if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. AC_MSG_CHECKING([whether $PYTHON version >= $1]) AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], [AC_MSG_RESULT(yes)], [AC_MSG_ERROR(too old)]) am_display_PYTHON=$PYTHON else # Otherwise, try each interpreter until we find one that satisfies # VERSION. AC_CACHE_CHECK([for a Python interpreter with version >= $1], [am_cv_pathless_PYTHON],[ for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do test "$am_cv_pathless_PYTHON" = none && break AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) done]) # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. if test "$am_cv_pathless_PYTHON" = none; then PYTHON=: else AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) fi am_display_PYTHON=$am_cv_pathless_PYTHON fi ]) if test "$PYTHON" = :; then dnl Run any user-specified action, or abort. m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) else dnl Query Python for its version number. Getting [:3] seems to be dnl the best way to do this; it's what "site.py" does in the standard dnl library. AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) dnl Use the values of $prefix and $exec_prefix for the corresponding dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made dnl distinct variables so they can be overridden if need be. However, dnl general consensus is that you shouldn't need this ability. AC_SUBST([PYTHON_PREFIX], ['${prefix}']) AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) dnl At times (like when building shared libraries) you may want dnl to know which OS platform Python thinks this is. AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) dnl Set up 4 directories: dnl pythondir -- where to install python scripts. This is the dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. dnl Query distutils for this directory. distutils does not exist in dnl Python 1.5, so we fall back to the hardcoded directory if it dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null || echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pythondir], [$am_cv_python_pythondir]) dnl pkgpythondir -- $PACKAGE directory under pythondir. Was dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is dnl more consistent with the rest of automake. AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) dnl Query distutils for this directory. distutils does not exist in dnl Python 1.5, so we fall back to the hardcoded directory if it dnl doesn't work. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null || echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac ]) AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) dnl Run any user-specified action. $2 fi ]) # AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # --------------------------------------------------------------------------- # Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. # Run ACTION-IF-FALSE otherwise. # This test uses sys.hexversion instead of the string equivalent (first # word of sys.version), in order to cope with versions such as 2.2c1. # This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys # split strings by '.' and convert to numeric. Append some zeros # because we need at least 4 digits for the hex conversion. # map returns an iterator in Python 3.0 and a list in 2.x minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] minverhex = 0 # xrange is not present in Python 3.0 and range returns an iterator for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 1 # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # (`yes' being less verbose, `no' or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [ --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0')]) case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([config/always-arch.m4]) m4_include([config/always-compiler-options.m4]) m4_include([config/always-python.m4]) m4_include([config/always-pyzfs.m4]) m4_include([config/ax_code_coverage.m4]) m4_include([config/ax_python_devel.m4]) m4_include([config/ax_restore_flags.m4]) m4_include([config/ax_save_flags.m4]) m4_include([config/find_system_library.m4]) m4_include([config/gettext.m4]) m4_include([config/host-cpu-c-abi.m4]) m4_include([config/iconv.m4]) m4_include([config/intlmacosx.m4]) m4_include([config/kernel-access-ok-type.m4]) m4_include([config/kernel-acl.m4]) m4_include([config/kernel-aio-fsync.m4]) m4_include([config/kernel-automount.m4]) m4_include([config/kernel-bdev-logical-size.m4]) m4_include([config/kernel-bdev-physical-size.m4]) m4_include([config/kernel-bdi.m4]) m4_include([config/kernel-bio-bvec-iter.m4]) m4_include([config/kernel-bio-end-io-t-args.m4]) m4_include([config/kernel-bio-failfast.m4]) m4_include([config/kernel-bio-op.m4]) m4_include([config/kernel-bio-rw-barrier.m4]) m4_include([config/kernel-bio-rw-discard.m4]) m4_include([config/kernel-bio_set_dev.m4]) m4_include([config/kernel-blk-queue-bdi.m4]) m4_include([config/kernel-blk-queue-discard.m4]) m4_include([config/kernel-blk-queue-flags.m4]) m4_include([config/kernel-blk-queue-flush.m4]) m4_include([config/kernel-blk-queue-max-hw-sectors.m4]) m4_include([config/kernel-blk-queue-max-segments.m4]) m4_include([config/kernel-blk-queue-unplug.m4]) m4_include([config/kernel-blkdev-get-by-path.m4]) m4_include([config/kernel-blkdev-reread-part.m4]) m4_include([config/kernel-block-device-operations.m4]) m4_include([config/kernel-clear-inode.m4]) m4_include([config/kernel-commit-metadata.m4]) m4_include([config/kernel-config-defined.m4]) m4_include([config/kernel-create-nameidata.m4]) m4_include([config/kernel-ctl-table-name.m4]) m4_include([config/kernel-current-time.m4]) m4_include([config/kernel-current_bio_tail.m4]) m4_include([config/kernel-declare-event-class.m4]) m4_include([config/kernel-dentry-operations.m4]) m4_include([config/kernel-dirty-inode.m4]) m4_include([config/kernel-discard-granularity.m4]) m4_include([config/kernel-encode-fh-inode.m4]) m4_include([config/kernel-evict-inode.m4]) m4_include([config/kernel-fallocate.m4]) m4_include([config/kernel-file-dentry.m4]) m4_include([config/kernel-file-inode.m4]) m4_include([config/kernel-fmode-t.m4]) m4_include([config/kernel-follow-down-one.m4]) m4_include([config/kernel-fpu.m4]) m4_include([config/kernel-fst-mount.m4]) m4_include([config/kernel-fsync.m4]) m4_include([config/kernel-generic_io_acct.m4]) m4_include([config/kernel-generic_readlink.m4]) m4_include([config/kernel-get-disk-and-module.m4]) m4_include([config/kernel-get-disk-ro.m4]) m4_include([config/kernel-get-link.m4]) m4_include([config/kernel-global_page_state.m4]) m4_include([config/kernel-group-info.m4]) m4_include([config/kernel-in-compat-syscall.m4]) m4_include([config/kernel-inode-getattr.m4]) m4_include([config/kernel-inode-lock.m4]) m4_include([config/kernel-inode-set-flags.m4]) m4_include([config/kernel-inode-set-iversion.m4]) m4_include([config/kernel-inode-times.m4]) m4_include([config/kernel-insert-inode-locked.m4]) m4_include([config/kernel-invalidate-bdev-args.m4]) m4_include([config/kernel-is_owner_or_cap.m4]) m4_include([config/kernel-kmap-atomic-args.m4]) m4_include([config/kernel-kmem-cache.m4]) m4_include([config/kernel-kstrtoul.m4]) m4_include([config/kernel-ktime_get_coarse_real_ts64.m4]) m4_include([config/kernel-kuid-helpers.m4]) m4_include([config/kernel-kuidgid.m4]) m4_include([config/kernel-lookup-bdev.m4]) m4_include([config/kernel-lookup-nameidata.m4]) m4_include([config/kernel-lseek-execute.m4]) m4_include([config/kernel-make-request-fn.m4]) m4_include([config/kernel-misc-minor.m4]) m4_include([config/kernel-mkdir-umode-t.m4]) m4_include([config/kernel-mod-param.m4]) m4_include([config/kernel-objtool.m4]) m4_include([config/kernel-open-bdev-exclusive.m4]) m4_include([config/kernel-pde-data.m4]) m4_include([config/kernel-put-link.m4]) m4_include([config/kernel-rename.m4]) m4_include([config/kernel-rw.m4]) m4_include([config/kernel-rwsem.m4]) m4_include([config/kernel-sched.m4]) m4_include([config/kernel-security-inode-init.m4]) m4_include([config/kernel-set-nlink.m4]) m4_include([config/kernel-setattr-prepare.m4]) m4_include([config/kernel-sget-args.m4]) m4_include([config/kernel-show-options.m4]) m4_include([config/kernel-shrink.m4]) m4_include([config/kernel-submit_bio.m4]) m4_include([config/kernel-super-userns.m4]) m4_include([config/kernel-timer.m4]) m4_include([config/kernel-tmpfile.m4]) m4_include([config/kernel-totalhigh_pages.m4]) m4_include([config/kernel-totalram-pages-func.m4]) m4_include([config/kernel-truncate-range.m4]) m4_include([config/kernel-truncate-setsize.m4]) m4_include([config/kernel-userns-capabilities.m4]) m4_include([config/kernel-usleep_range.m4]) m4_include([config/kernel-vfs-direct_IO.m4]) m4_include([config/kernel-vfs-fsync.m4]) m4_include([config/kernel-vfs-getattr.m4]) m4_include([config/kernel-vfs-iterate.m4]) m4_include([config/kernel-vfs-rw-iterate.m4]) m4_include([config/kernel-wait.m4]) m4_include([config/kernel-xattr-handler.m4]) m4_include([config/kernel-zlib.m4]) m4_include([config/kernel.m4]) m4_include([config/lib-ld.m4]) m4_include([config/lib-link.m4]) m4_include([config/lib-prefix.m4]) m4_include([config/libtool.m4]) m4_include([config/ltoptions.m4]) m4_include([config/ltsugar.m4]) m4_include([config/ltversion.m4]) m4_include([config/lt~obsolete.m4]) m4_include([config/mount-helper.m4]) m4_include([config/nls.m4]) m4_include([config/pkg.m4]) m4_include([config/po.m4]) m4_include([config/progtest.m4]) m4_include([config/toolchain-simd.m4]) m4_include([config/user-dracut.m4]) m4_include([config/user-gettext.m4]) m4_include([config/user-libaio.m4]) m4_include([config/user-libblkid.m4]) m4_include([config/user-libexec.m4]) m4_include([config/user-libssl.m4]) m4_include([config/user-libtirpc.m4]) m4_include([config/user-libudev.m4]) m4_include([config/user-libuuid.m4]) m4_include([config/user-makedev.m4]) m4_include([config/user-runstatedir.m4]) m4_include([config/user-systemd.m4]) m4_include([config/user-sysvinit.m4]) m4_include([config/user-udev.m4]) m4_include([config/user-zlib.m4]) m4_include([config/user.m4]) m4_include([config/zfs-build.m4]) m4_include([config/zfs-meta.m4]) zfs-0.8.3/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141515015446 xustar000000000000000030 atime=1579730377.117460521 30 ctime=1579730468.720401545 zfs-0.8.3/Makefile.am0000644016037001603700000001275613612141515015456 0ustar00hutter2hutter200000000000000ACLOCAL_AMFLAGS = -I config include config/rpm.am include config/deb.am include config/tgz.am SUBDIRS = include rpm if CONFIG_USER SUBDIRS += udev etc man scripts lib tests cmd contrib endif if CONFIG_KERNEL SUBDIRS += module extradir = $(prefix)/src/zfs-$(VERSION) extra_HEADERS = zfs.release.in zfs_config.h.in kerneldir = $(prefix)/src/zfs-$(VERSION)/$(LINUX_VERSION) nodist_kernel_HEADERS = zfs.release zfs_config.h module/$(LINUX_SYMBOLS) endif AUTOMAKE_OPTIONS = foreign EXTRA_DIST = autogen.sh copy-builtin EXTRA_DIST += config/config.awk config/rpm.am config/deb.am config/tgz.am EXTRA_DIST += META AUTHORS COPYRIGHT LICENSE NEWS NOTICE README.md EXTRA_DIST += CODE_OF_CONDUCT.md # Include all the extra licensing information for modules EXTRA_DIST += module/icp/algs/skein/THIRDPARTYLICENSE EXTRA_DIST += module/icp/algs/skein/THIRDPARTYLICENSE.descrip EXTRA_DIST += module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.gladman EXTRA_DIST += module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.gladman.descrip EXTRA_DIST += module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.openssl EXTRA_DIST += module/icp/asm-x86_64/aes/THIRDPARTYLICENSE.openssl.descrip EXTRA_DIST += module/spl/THIRDPARTYLICENSE.gplv2 EXTRA_DIST += module/spl/THIRDPARTYLICENSE.gplv2.descrip EXTRA_DIST += module/zfs/THIRDPARTYLICENSE.cityhash EXTRA_DIST += module/zfs/THIRDPARTYLICENSE.cityhash.descrip @CODE_COVERAGE_RULES@ .PHONY: gitrev gitrev: -${top_srcdir}/scripts/make_gitrev.sh BUILT_SOURCES = gitrev # Double-colon rules are allowed; there are multiple independent definitions. distclean-local:: -$(RM) -R autom4te*.cache build -find . \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS \ -o -name .pc -o -name .hg -o -name .git \) -prune -o \ \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ -o -name '.*.rej' -o -size 0 -o -name '*%' -o -name '.*.cmd' \ -o -name 'core' -o -name 'Makefile' -o -name 'Module.symvers' \ -o -name '*.order' -o -name '*.markers' -o -name '*.gcda' \ -o -name '*.gcno' \) \ -type f -print | xargs $(RM) all-local: -[ -x ${top_builddir}/scripts/zfs-tests.sh ] && \ ${top_builddir}/scripts/zfs-tests.sh -c dist-hook: gitrev cp ${top_srcdir}/include/zfs_gitrev.h $(distdir)/include; \ sed -i 's/Release:[[:print:]]*/Release: $(RELEASE)/' \ $(distdir)/META # For compatibility, create a matching spl-x.y.z directly which contains # symlinks to the updated header and object file locations. These # compatibility links will be removed in the next major release. if CONFIG_KERNEL install-data-hook: rm -rf $(DESTDIR)$(prefix)/src/spl-$(VERSION) && \ mkdir $(DESTDIR)$(prefix)/src/spl-$(VERSION) && \ cd $(DESTDIR)$(prefix)/src/spl-$(VERSION) && \ ln -s ../zfs-$(VERSION)/include/spl include && \ ln -s ../zfs-$(VERSION)/$(LINUX_VERSION) $(LINUX_VERSION) && \ ln -s ../zfs-$(VERSION)/zfs_config.h.in spl_config.h.in && \ ln -s ../zfs-$(VERSION)/zfs.release.in spl.release.in && \ cd $(DESTDIR)$(prefix)/src/zfs-$(VERSION)/$(LINUX_VERSION) && \ ln -fs zfs_config.h spl_config.h && \ ln -fs zfs.release spl.release endif codecheck: cstyle shellcheck flake8 mancheck testscheck vcscheck checkstyle: codecheck commitcheck commitcheck: @if git rev-parse --git-dir > /dev/null 2>&1; then \ ${top_srcdir}/scripts/commitcheck.sh; \ fi cstyle: @find ${top_srcdir} -name build -prune -o -name '*.[hc]' \ ! -name 'zfs_config.*' ! -name '*.mod.c' -type f \ -exec ${top_srcdir}/scripts/cstyle.pl -cpP {} \+ shellcheck: @if type shellcheck > /dev/null 2>&1; then \ shellcheck --exclude=SC1090 --format=gcc \ $$(find ${top_srcdir}/scripts/*.sh -type f) \ $$(find ${top_srcdir}/cmd/zed/zed.d/*.sh -type f) \ $$(find ${top_srcdir}/cmd/zpool/zpool.d/* -executable); \ else \ echo "skipping shellcheck because shellcheck is not installed"; \ fi mancheck: @if type mandoc > /dev/null 2>&1; then \ find ${top_srcdir}/man/man8 -type f -name 'zfs.8' \ -o -name 'zpool.8' -o -name 'zdb.8' \ -o -name 'zgenhostid.8' | \ xargs mandoc -Tlint -Werror; \ else \ echo "skipping mancheck because mandoc is not installed"; \ fi testscheck: @find ${top_srcdir}/tests/zfs-tests -type f \ \( -name '*.ksh' -not -executable \) -o \ \( -name '*.kshlib' -executable \) -o \ \( -name '*.shlib' -executable \) -o \ \( -name '*.cfg' -executable \) | \ xargs -r stat -c '%A %n' | \ awk '{c++; print} END {if(c>0) exit 1}' vcscheck: @if git rev-parse --git-dir > /dev/null 2>&1; then \ git ls-files . --exclude-standard --others | \ awk '{c++; print} END {if(c>0) exit 1}' ; \ fi lint: cppcheck paxcheck cppcheck: @if type cppcheck > /dev/null 2>&1; then \ cppcheck --quiet --force --error-exitcode=2 --inline-suppr \ --suppressions-list=.github/suppressions.txt \ -UHAVE_SSE2 -UHAVE_AVX512F -UHAVE_UIO_ZEROCOPY \ ${top_srcdir}; \ else \ echo "skipping cppcheck because cppcheck is not installed"; \ fi paxcheck: @if type scanelf > /dev/null 2>&1; then \ ${top_srcdir}/scripts/paxcheck.sh ${top_srcdir}; \ else \ echo "skipping paxcheck because scanelf is not installed"; \ fi flake8: @if type flake8 > /dev/null 2>&1; then \ flake8 ${top_srcdir}; \ else \ echo "skipping flake8 because flake8 is not installed"; \ fi ctags: $(RM) tags find $(top_srcdir) -name .git -prune -o -name '*.[hc]' | xargs ctags etags: $(RM) TAGS find $(top_srcdir) -name .pc -prune -o -name '*.[hc]' | xargs etags -a tags: ctags etags pkg: @DEFAULT_PACKAGE@ pkg-dkms: @DEFAULT_PACKAGE@-dkms pkg-kmod: @DEFAULT_PACKAGE@-kmod pkg-utils: @DEFAULT_PACKAGE@-utils zfs-0.8.3/PaxHeaders.151519/include0000644000000000000000000000013213612143071014752 xustar000000000000000030 mtime=1579730489.063054713 30 atime=1579730489.076055131 30 ctime=1579730489.063054713 zfs-0.8.3/include/0000775016037001603700000000000013612143071015033 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/PaxHeaders.151519/libuutil.h0000644000000000000000000000007413607166132017045 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.912407712 zfs-0.8.3/include/libuutil.h0000644016037001603700000002347613607166132017056 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _LIBUUTIL_H #define _LIBUUTIL_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Standard flags codes. */ #define UU_DEFAULT 0 /* * Standard error codes. */ #define UU_ERROR_NONE 0 /* no error */ #define UU_ERROR_INVALID_ARGUMENT 1 /* invalid argument */ #define UU_ERROR_UNKNOWN_FLAG 2 /* passed flag invalid */ #define UU_ERROR_NO_MEMORY 3 /* out of memory */ #define UU_ERROR_CALLBACK_FAILED 4 /* callback-initiated error */ #define UU_ERROR_NOT_SUPPORTED 5 /* operation not supported */ #define UU_ERROR_EMPTY 6 /* no value provided */ #define UU_ERROR_UNDERFLOW 7 /* value is too small */ #define UU_ERROR_OVERFLOW 8 /* value is too value */ #define UU_ERROR_INVALID_CHAR 9 /* value contains unexpected char */ #define UU_ERROR_INVALID_DIGIT 10 /* value contains digit not in base */ #define UU_ERROR_SYSTEM 99 /* underlying system error */ #define UU_ERROR_UNKNOWN 100 /* error status not known */ /* * Standard program exit codes. */ #define UU_EXIT_OK (*(uu_exit_ok())) #define UU_EXIT_FATAL (*(uu_exit_fatal())) #define UU_EXIT_USAGE (*(uu_exit_usage())) /* * Exit status profiles. */ #define UU_PROFILE_DEFAULT 0 #define UU_PROFILE_LAUNCHER 1 /* * Error reporting functions. */ uint32_t uu_error(void); const char *uu_strerror(uint32_t); /* * Program notification functions. */ extern void uu_alt_exit(int); extern const char *uu_setpname(char *); extern const char *uu_getpname(void); /*PRINTFLIKE1*/ extern void uu_warn(const char *, ...); extern void uu_vwarn(const char *, va_list); /*PRINTFLIKE1*/ extern void uu_die(const char *, ...) __NORETURN; extern void uu_vdie(const char *, va_list) __NORETURN; /*PRINTFLIKE2*/ extern void uu_xdie(int, const char *, ...) __NORETURN; extern void uu_vxdie(int, const char *, va_list) __NORETURN; /* * Exit status functions (not to be used directly) */ extern int *uu_exit_ok(void); extern int *uu_exit_fatal(void); extern int *uu_exit_usage(void); /* * Debug print facility functions. */ typedef struct uu_dprintf uu_dprintf_t; typedef enum { UU_DPRINTF_SILENT, UU_DPRINTF_FATAL, UU_DPRINTF_WARNING, UU_DPRINTF_NOTICE, UU_DPRINTF_INFO, UU_DPRINTF_DEBUG } uu_dprintf_severity_t; extern uu_dprintf_t *uu_dprintf_create(const char *, uu_dprintf_severity_t, uint_t); /*PRINTFLIKE3*/ extern void uu_dprintf(uu_dprintf_t *, uu_dprintf_severity_t, const char *, ...); extern void uu_dprintf_destroy(uu_dprintf_t *); extern const char *uu_dprintf_getname(uu_dprintf_t *); /* * Identifier test flags and function. */ #define UU_NAME_DOMAIN 0x1 /* allow SUNW, or com.sun, prefix */ #define UU_NAME_PATH 0x2 /* allow '/'-delimited paths */ int uu_check_name(const char *, uint_t); /* * File creation functions. */ extern int uu_open_tmp(const char *dir, uint_t uflags); /* * Convenience functions. */ #define UU_NELEM(a) (sizeof (a) / sizeof ((a)[0])) /*PRINTFLIKE1*/ extern char *uu_msprintf(const char *format, ...); extern void *uu_zalloc(size_t); extern char *uu_strdup(const char *); extern void uu_free(void *); extern boolean_t uu_strcaseeq(const char *a, const char *b); extern boolean_t uu_streq(const char *a, const char *b); extern char *uu_strndup(const char *s, size_t n); extern boolean_t uu_strbw(const char *a, const char *b); extern void *uu_memdup(const void *buf, size_t sz); extern void uu_dump(FILE *out, const char *prefix, const void *buf, size_t len); /* * Comparison function type definition. * Developers should be careful in their use of the _private argument. If you * break interface guarantees, you get undefined behavior. */ typedef int uu_compare_fn_t(const void *__left, const void *__right, void *__private); /* * Walk variant flags. * A data structure need not provide support for all variants and * combinations. Refer to the appropriate documentation. */ #define UU_WALK_ROBUST 0x00000001 /* walk can survive removes */ #define UU_WALK_REVERSE 0x00000002 /* reverse walk order */ #define UU_WALK_PREORDER 0x00000010 /* walk tree in pre-order */ #define UU_WALK_POSTORDER 0x00000020 /* walk tree in post-order */ /* * Walk callback function return codes. */ #define UU_WALK_ERROR -1 #define UU_WALK_NEXT 0 #define UU_WALK_DONE 1 /* * Walk callback function type definition. */ typedef int uu_walk_fn_t(void *_elem, void *_private); /* * lists: opaque structures */ typedef struct uu_list_pool uu_list_pool_t; typedef struct uu_list uu_list_t; typedef struct uu_list_node { uintptr_t uln_opaque[2]; } uu_list_node_t; typedef struct uu_list_walk uu_list_walk_t; typedef uintptr_t uu_list_index_t; /* * lists: interface * * basic usage: * typedef struct foo { * ... * uu_list_node_t foo_node; * ... * } foo_t; * * static int * foo_compare(void *l_arg, void *r_arg, void *private) * { * foo_t *l = l_arg; * foo_t *r = r_arg; * * if (... l greater than r ...) * return (1); * if (... l less than r ...) * return (-1); * return (0); * } * * ... * // at initialization time * foo_pool = uu_list_pool_create("foo_pool", * sizeof (foo_t), offsetof(foo_t, foo_node), foo_compare, * debugging? 0 : UU_AVL_POOL_DEBUG); * ... */ uu_list_pool_t *uu_list_pool_create(const char *, size_t, size_t, uu_compare_fn_t *, uint32_t); #define UU_LIST_POOL_DEBUG 0x00000001 void uu_list_pool_destroy(uu_list_pool_t *); /* * usage: * * foo_t *a; * a = malloc(sizeof (*a)); * uu_list_node_init(a, &a->foo_list, pool); * ... * uu_list_node_fini(a, &a->foo_list, pool); * free(a); */ void uu_list_node_init(void *, uu_list_node_t *, uu_list_pool_t *); void uu_list_node_fini(void *, uu_list_node_t *, uu_list_pool_t *); uu_list_t *uu_list_create(uu_list_pool_t *, void *_parent, uint32_t); #define UU_LIST_DEBUG 0x00000001 #define UU_LIST_SORTED 0x00000002 /* list is sorted */ void uu_list_destroy(uu_list_t *); /* list must be empty */ size_t uu_list_numnodes(uu_list_t *); void *uu_list_first(uu_list_t *); void *uu_list_last(uu_list_t *); void *uu_list_next(uu_list_t *, void *); void *uu_list_prev(uu_list_t *, void *); int uu_list_walk(uu_list_t *, uu_walk_fn_t *, void *, uint32_t); uu_list_walk_t *uu_list_walk_start(uu_list_t *, uint32_t); void *uu_list_walk_next(uu_list_walk_t *); void uu_list_walk_end(uu_list_walk_t *); void *uu_list_find(uu_list_t *, void *, void *, uu_list_index_t *); void uu_list_insert(uu_list_t *, void *, uu_list_index_t); void *uu_list_nearest_next(uu_list_t *, uu_list_index_t); void *uu_list_nearest_prev(uu_list_t *, uu_list_index_t); void *uu_list_teardown(uu_list_t *, void **); void uu_list_remove(uu_list_t *, void *); /* * lists: interfaces for non-sorted lists only */ int uu_list_insert_before(uu_list_t *, void *_target, void *_elem); int uu_list_insert_after(uu_list_t *, void *_target, void *_elem); /* * avl trees: opaque structures */ typedef struct uu_avl_pool uu_avl_pool_t; typedef struct uu_avl uu_avl_t; typedef struct uu_avl_node { #ifdef _LP64 uintptr_t uan_opaque[3]; #else uintptr_t uan_opaque[4]; #endif } uu_avl_node_t; typedef struct uu_avl_walk uu_avl_walk_t; typedef uintptr_t uu_avl_index_t; /* * avl trees: interface * * basic usage: * typedef struct foo { * ... * uu_avl_node_t foo_node; * ... * } foo_t; * * static int * foo_compare(void *l_arg, void *r_arg, void *private) * { * foo_t *l = l_arg; * foo_t *r = r_arg; * * if (... l greater than r ...) * return (1); * if (... l less than r ...) * return (-1); * return (0); * } * * ... * // at initialization time * foo_pool = uu_avl_pool_create("foo_pool", * sizeof (foo_t), offsetof(foo_t, foo_node), foo_compare, * debugging? 0 : UU_AVL_POOL_DEBUG); * ... */ uu_avl_pool_t *uu_avl_pool_create(const char *, size_t, size_t, uu_compare_fn_t *, uint32_t); #define UU_AVL_POOL_DEBUG 0x00000001 void uu_avl_pool_destroy(uu_avl_pool_t *); /* * usage: * * foo_t *a; * a = malloc(sizeof (*a)); * uu_avl_node_init(a, &a->foo_avl, pool); * ... * uu_avl_node_fini(a, &a->foo_avl, pool); * free(a); */ void uu_avl_node_init(void *, uu_avl_node_t *, uu_avl_pool_t *); void uu_avl_node_fini(void *, uu_avl_node_t *, uu_avl_pool_t *); uu_avl_t *uu_avl_create(uu_avl_pool_t *, void *_parent, uint32_t); #define UU_AVL_DEBUG 0x00000001 void uu_avl_destroy(uu_avl_t *); /* list must be empty */ size_t uu_avl_numnodes(uu_avl_t *); void *uu_avl_first(uu_avl_t *); void *uu_avl_last(uu_avl_t *); void *uu_avl_next(uu_avl_t *, void *); void *uu_avl_prev(uu_avl_t *, void *); int uu_avl_walk(uu_avl_t *, uu_walk_fn_t *, void *, uint32_t); uu_avl_walk_t *uu_avl_walk_start(uu_avl_t *, uint32_t); void *uu_avl_walk_next(uu_avl_walk_t *); void uu_avl_walk_end(uu_avl_walk_t *); void *uu_avl_find(uu_avl_t *, void *, void *, uu_avl_index_t *); void uu_avl_insert(uu_avl_t *, void *, uu_avl_index_t); void *uu_avl_nearest_next(uu_avl_t *, uu_avl_index_t); void *uu_avl_nearest_prev(uu_avl_t *, uu_avl_index_t); void *uu_avl_teardown(uu_avl_t *, void **); void uu_avl_remove(uu_avl_t *, void *); #ifdef __cplusplus } #endif #endif /* _LIBUUTIL_H */ zfs-0.8.3/include/PaxHeaders.151519/libuutil_impl.h0000644000000000000000000000007413607166132020066 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.914407776 zfs-0.8.3/include/libuutil_impl.h0000644016037001603700000001002613607166132020062 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBUUTIL_IMPL_H #define _LIBUUTIL_IMPL_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif void uu_set_error(uint_t); /*PRINTFLIKE1*/ void uu_panic(const char *format, ...); struct uu_dprintf { char *uud_name; uu_dprintf_severity_t uud_severity; uint_t uud_flags; }; /* * For debugging purposes, libuutil keeps around linked lists of all uu_lists * and uu_avls, along with pointers to their parents. These can cause false * negatives when looking for memory leaks, so we encode the pointers by * storing them with swapped endianness; this is not perfect, but it's about * the best we can do without wasting a lot of space. */ #ifdef _LP64 #define UU_PTR_ENCODE(ptr) BSWAP_64((uintptr_t)(void *)(ptr)) #else #define UU_PTR_ENCODE(ptr) BSWAP_32((uintptr_t)(void *)(ptr)) #endif #define UU_PTR_DECODE(ptr) ((void *)UU_PTR_ENCODE(ptr)) /* * uu_list structures */ typedef struct uu_list_node_impl { struct uu_list_node_impl *uln_next; struct uu_list_node_impl *uln_prev; } uu_list_node_impl_t; struct uu_list_walk { uu_list_walk_t *ulw_next; uu_list_walk_t *ulw_prev; uu_list_t *ulw_list; int8_t ulw_dir; uint8_t ulw_robust; uu_list_node_impl_t *ulw_next_result; }; struct uu_list { uintptr_t ul_next_enc; uintptr_t ul_prev_enc; uu_list_pool_t *ul_pool; uintptr_t ul_parent_enc; /* encoded parent pointer */ size_t ul_offset; size_t ul_numnodes; uint8_t ul_debug; uint8_t ul_sorted; uint8_t ul_index; /* mark for uu_list_index_ts */ uu_list_node_impl_t ul_null_node; uu_list_walk_t ul_null_walk; /* for robust walkers */ }; #define UU_LIST_PTR(ptr) ((uu_list_t *)UU_PTR_DECODE(ptr)) #define UU_LIST_POOL_MAXNAME 64 struct uu_list_pool { uu_list_pool_t *ulp_next; uu_list_pool_t *ulp_prev; char ulp_name[UU_LIST_POOL_MAXNAME]; size_t ulp_nodeoffset; size_t ulp_objsize; uu_compare_fn_t *ulp_cmp; uint8_t ulp_debug; uint8_t ulp_last_index; pthread_mutex_t ulp_lock; /* protects null_list */ uu_list_t ulp_null_list; }; /* * uu_avl structures */ typedef struct avl_node uu_avl_node_impl_t; struct uu_avl_walk { uu_avl_walk_t *uaw_next; uu_avl_walk_t *uaw_prev; uu_avl_t *uaw_avl; void *uaw_next_result; int8_t uaw_dir; uint8_t uaw_robust; }; struct uu_avl { uintptr_t ua_next_enc; uintptr_t ua_prev_enc; uu_avl_pool_t *ua_pool; uintptr_t ua_parent_enc; uint8_t ua_debug; uint8_t ua_index; /* mark for uu_avl_index_ts */ struct avl_tree ua_tree; uu_avl_walk_t ua_null_walk; }; #define UU_AVL_PTR(x) ((uu_avl_t *)UU_PTR_DECODE(x)) #define UU_AVL_POOL_MAXNAME 64 struct uu_avl_pool { uu_avl_pool_t *uap_next; uu_avl_pool_t *uap_prev; char uap_name[UU_AVL_POOL_MAXNAME]; size_t uap_nodeoffset; size_t uap_objsize; uu_compare_fn_t *uap_cmp; uint8_t uap_debug; uint8_t uap_last_index; pthread_mutex_t uap_lock; /* protects null_avl */ uu_avl_t uap_null_avl; }; /* * atfork() handlers */ void uu_avl_lockup(void); void uu_avl_release(void); void uu_list_lockup(void); void uu_list_release(void); #ifdef __cplusplus } #endif #endif /* _LIBUUTIL_IMPL_H */ zfs-0.8.3/include/PaxHeaders.151519/libuutil_common.h0000644000000000000000000000007413607166132020415 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.910407648 zfs-0.8.3/include/libuutil_common.h0000644016037001603700000000205313607166132020412 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _LIBUUTIL_COMMON_H #define _LIBUUTIL_COMMON_H #include #include #endif /* _LIBUUTIL_COMMON_H */ zfs-0.8.3/include/PaxHeaders.151519/spl0000644000000000000000000000013213612143045015551 xustar000000000000000030 mtime=1579730469.074412914 30 atime=1579730489.076055131 30 ctime=1579730469.074412914 zfs-0.8.3/include/spl/0000775016037001603700000000000013612143045015632 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/spl/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166147017702 xustar000000000000000029 atime=1579730428.85312152 30 ctime=1579730469.064412591 zfs-0.8.3/include/spl/Makefile.am0000644016037001603700000000002213607166147017672 0ustar00hutter2hutter200000000000000SUBDIRS = rpc sys zfs-0.8.3/include/spl/PaxHeaders.151519/sys0000644000000000000000000000013213612143045016367 xustar000000000000000030 mtime=1579730469.306420361 30 atime=1579730489.076055131 30 ctime=1579730469.306420361 zfs-0.8.3/include/spl/sys/0000775016037001603700000000000013612143045016450 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/spl/sys/PaxHeaders.151519/zone.h0000644000000000000000000000007413607166147017611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.302420233 zfs-0.8.3/include/spl/sys/zone.h0000644016037001603700000000237713607166147017617 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_ZONE_H #define _SPL_ZONE_H #include #define GLOBAL_ZONEID 0 #define zone_dataset_visible(x, y) (1) #define crgetzoneid(x) (GLOBAL_ZONEID) #define INGLOBALZONE(z) (1) #endif /* SPL_ZONE_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/kmem.h0000644000000000000000000000007413607166147017567 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.226417793 zfs-0.8.3/include/spl/sys/kmem.h0000644016037001603700000001321013607166147017561 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_KMEM_H #define _SPL_KMEM_H #include #include #include extern int kmem_debugging(void); extern char *kmem_vasprintf(const char *fmt, va_list ap); extern char *kmem_asprintf(const char *fmt, ...); extern char *strdup(const char *str); extern void strfree(char *str); /* * Memory allocation interfaces */ #define KM_SLEEP 0x0000 /* can block for memory; success guaranteed */ #define KM_NOSLEEP 0x0001 /* cannot block for memory; may fail */ #define KM_PUSHPAGE 0x0004 /* can block for memory; may use reserve */ #define KM_ZERO 0x1000 /* zero the allocation */ #define KM_VMEM 0x2000 /* caller is vmem_* wrapper */ #define KM_PUBLIC_MASK (KM_SLEEP | KM_NOSLEEP | KM_PUSHPAGE) static int spl_fstrans_check(void); /* * Convert a KM_* flags mask to its Linux GFP_* counterpart. The conversion * function is context aware which means that KM_SLEEP allocations can be * safely used in syncing contexts which have set PF_FSTRANS. */ static inline gfp_t kmem_flags_convert(int flags) { gfp_t lflags = __GFP_NOWARN | __GFP_COMP; if (flags & KM_NOSLEEP) { lflags |= GFP_ATOMIC | __GFP_NORETRY; } else { lflags |= GFP_KERNEL; if (spl_fstrans_check()) lflags &= ~(__GFP_IO|__GFP_FS); } if (flags & KM_PUSHPAGE) lflags |= __GFP_HIGH; if (flags & KM_ZERO) lflags |= __GFP_ZERO; return (lflags); } typedef struct { struct task_struct *fstrans_thread; unsigned int saved_flags; } fstrans_cookie_t; /* * Introduced in Linux 3.9, however this cannot be solely relied on before * Linux 3.18 as it doesn't turn off __GFP_FS as it should. */ #ifdef PF_MEMALLOC_NOIO #define __SPL_PF_MEMALLOC_NOIO (PF_MEMALLOC_NOIO) #else #define __SPL_PF_MEMALLOC_NOIO (0) #endif /* * PF_FSTRANS is removed from Linux 4.12 */ #ifdef PF_FSTRANS #define __SPL_PF_FSTRANS (PF_FSTRANS) #else #define __SPL_PF_FSTRANS (0) #endif #define SPL_FSTRANS (__SPL_PF_FSTRANS|__SPL_PF_MEMALLOC_NOIO) static inline fstrans_cookie_t spl_fstrans_mark(void) { fstrans_cookie_t cookie; BUILD_BUG_ON(SPL_FSTRANS == 0); cookie.fstrans_thread = current; cookie.saved_flags = current->flags & SPL_FSTRANS; current->flags |= SPL_FSTRANS; return (cookie); } static inline void spl_fstrans_unmark(fstrans_cookie_t cookie) { ASSERT3P(cookie.fstrans_thread, ==, current); ASSERT((current->flags & SPL_FSTRANS) == SPL_FSTRANS); current->flags &= ~SPL_FSTRANS; current->flags |= cookie.saved_flags; } static inline int spl_fstrans_check(void) { return (current->flags & SPL_FSTRANS); } /* * specifically used to check PF_FSTRANS flag, cannot be relied on for * checking spl_fstrans_mark(). */ static inline int __spl_pf_fstrans_check(void) { return (current->flags & __SPL_PF_FSTRANS); } #ifdef HAVE_ATOMIC64_T #define kmem_alloc_used_add(size) atomic64_add(size, &kmem_alloc_used) #define kmem_alloc_used_sub(size) atomic64_sub(size, &kmem_alloc_used) #define kmem_alloc_used_read() atomic64_read(&kmem_alloc_used) #define kmem_alloc_used_set(size) atomic64_set(&kmem_alloc_used, size) extern atomic64_t kmem_alloc_used; extern unsigned long long kmem_alloc_max; #else /* HAVE_ATOMIC64_T */ #define kmem_alloc_used_add(size) atomic_add(size, &kmem_alloc_used) #define kmem_alloc_used_sub(size) atomic_sub(size, &kmem_alloc_used) #define kmem_alloc_used_read() atomic_read(&kmem_alloc_used) #define kmem_alloc_used_set(size) atomic_set(&kmem_alloc_used, size) extern atomic_t kmem_alloc_used; extern unsigned long long kmem_alloc_max; #endif /* HAVE_ATOMIC64_T */ extern unsigned int spl_kmem_alloc_warn; extern unsigned int spl_kmem_alloc_max; #define kmem_alloc(sz, fl) spl_kmem_alloc((sz), (fl), __func__, __LINE__) #define kmem_zalloc(sz, fl) spl_kmem_zalloc((sz), (fl), __func__, __LINE__) #define kmem_free(ptr, sz) spl_kmem_free((ptr), (sz)) #define kmem_cache_reap_active spl_kmem_cache_reap_active extern void *spl_kmem_alloc(size_t sz, int fl, const char *func, int line); extern void *spl_kmem_zalloc(size_t sz, int fl, const char *func, int line); extern void spl_kmem_free(const void *ptr, size_t sz); /* * The following functions are only available for internal use. */ extern void *spl_kmem_alloc_impl(size_t size, int flags, int node); extern void *spl_kmem_alloc_debug(size_t size, int flags, int node); extern void *spl_kmem_alloc_track(size_t size, int flags, const char *func, int line, int node); extern void spl_kmem_free_impl(const void *buf, size_t size); extern void spl_kmem_free_debug(const void *buf, size_t size); extern void spl_kmem_free_track(const void *buf, size_t size); extern int spl_kmem_init(void); extern void spl_kmem_fini(void); extern int spl_kmem_cache_reap_active(void); #endif /* _SPL_KMEM_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/inttypes.h0000644000000000000000000000007413607166147020515 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.219417569 zfs-0.8.3/include/spl/sys/inttypes.h0000644016037001603700000000214513607166147020514 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_INTTYPES_H #define _SPL_INTTYPES_H #endif /* SPL_INTTYPES_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/callo.h0000644000000000000000000000007413607166147017730 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.193416734 zfs-0.8.3/include/spl/sys/callo.h0000644016037001603700000000415013607166147017725 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2013 Lawrence Livermore National Security, LLC. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_CALLO_H #define _SPL_CALLO_H /* * Callout flags: * * CALLOUT_FLAG_ROUNDUP * Roundup the expiration time to the next resolution boundary. * If this flag is not specified, the expiration time is rounded down. * CALLOUT_FLAG_ABSOLUTE * Normally, the expiration passed to the timeout API functions is an * expiration interval. If this flag is specified, then it is * interpreted as the expiration time itself. * CALLOUT_FLAG_HRESTIME * Normally, callouts are not affected by changes to system time * (hrestime). This flag is used to create a callout that is affected * by system time. If system time changes, these timers must be * handled in a special way (see callout.c). These are used by condition * variables and LWP timers that need this behavior. * CALLOUT_FLAG_32BIT * Legacy interfaces timeout() and realtime_timeout() pass this flag * to timeout_generic() to indicate that a 32-bit ID should be allocated. */ #define CALLOUT_FLAG_ROUNDUP 0x1 #define CALLOUT_FLAG_ABSOLUTE 0x2 #define CALLOUT_FLAG_HRESTIME 0x4 #define CALLOUT_FLAG_32BIT 0x8 #endif /* _SPL_CALLB_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/timer.h0000644000000000000000000000007413607166147017756 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.276419398 zfs-0.8.3/include/spl/sys/timer.h0000644016037001603700000000606713607166147017764 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_TIMER_H #define _SPL_TIMER_H #include #include #include #include #include #define lbolt ((clock_t)jiffies) #define lbolt64 ((int64_t)get_jiffies_64()) #define ddi_get_lbolt() ((clock_t)jiffies) #define ddi_get_lbolt64() ((int64_t)get_jiffies_64()) #define ddi_time_before(a, b) (typecheck(clock_t, a) && \ typecheck(clock_t, b) && \ ((a) - (b) < 0)) #define ddi_time_after(a, b) ddi_time_before(b, a) #define ddi_time_before_eq(a, b) (!ddi_time_after(a, b)) #define ddi_time_after_eq(a, b) ddi_time_before_eq(b, a) #define ddi_time_before64(a, b) (typecheck(int64_t, a) && \ typecheck(int64_t, b) && \ ((a) - (b) < 0)) #define ddi_time_after64(a, b) ddi_time_before64(b, a) #define ddi_time_before_eq64(a, b) (!ddi_time_after64(a, b)) #define ddi_time_after_eq64(a, b) ddi_time_before_eq64(b, a) #define delay(ticks) schedule_timeout_uninterruptible(ticks) /* usleep_range() introduced in 2.6.36 */ #ifndef HAVE_USLEEP_RANGE static inline void usleep_range(unsigned long min, unsigned long max) { unsigned int min_ms = min / USEC_PER_MSEC; if (min >= MAX_UDELAY_MS) msleep(min_ms); else udelay(min); } #endif /* HAVE_USLEEP_RANGE */ #define SEC_TO_TICK(sec) ((sec) * HZ) #define MSEC_TO_TICK(ms) msecs_to_jiffies(ms) #define USEC_TO_TICK(us) usecs_to_jiffies(us) #define NSEC_TO_TICK(ns) usecs_to_jiffies(ns / NSEC_PER_USEC) #ifndef from_timer #define from_timer(var, timer, timer_field) \ container_of(timer, typeof(*var), timer_field) #endif #ifdef HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST typedef struct timer_list *spl_timer_list_t; #else typedef unsigned long spl_timer_list_t; #endif #ifndef HAVE_KERNEL_TIMER_SETUP static inline void timer_setup(struct timer_list *timer, void (*func)(spl_timer_list_t), u32 fl) { #ifdef HAVE_KERNEL_TIMER_LIST_FLAGS (timer)->flags = fl; #endif init_timer(timer); setup_timer(timer, func, (spl_timer_list_t)(timer)); } #endif /* HAVE_KERNEL_TIMER_SETUP */ #endif /* _SPL_TIMER_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/proc.h0000644000000000000000000000007313607166147017600 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.24341834 zfs-0.8.3/include/spl/sys/proc.h0000644016037001603700000000243113607166147017576 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_PROC_H #define _SPL_PROC_H #include #ifndef HAVE_PDE_DATA #define PDE_DATA(x) (PDE(x)->data) #endif extern struct proc_dir_entry *proc_spl_kstat; int spl_proc_init(void); void spl_proc_fini(void); #endif /* SPL_PROC_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/byteorder.h0000644000000000000000000000007413607166147020635 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.189416606 zfs-0.8.3/include/spl/sys/byteorder.h0000644016037001603700000000420413607166147020632 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_BYTEORDER_H #define _SPL_BYTEORDER_H #include #include #define BSWAP_8(x) ((x) & 0xff) #define BSWAP_16(x) ((BSWAP_8(x) << 8) | BSWAP_8((x) >> 8)) #define BSWAP_32(x) ((BSWAP_16(x) << 16) | BSWAP_16((x) >> 16)) #define BSWAP_64(x) ((BSWAP_32(x) << 32) | BSWAP_32((x) >> 32)) #define LE_16(x) cpu_to_le16(x) #define LE_32(x) cpu_to_le32(x) #define LE_64(x) cpu_to_le64(x) #define BE_16(x) cpu_to_be16(x) #define BE_32(x) cpu_to_be32(x) #define BE_64(x) cpu_to_be64(x) #define BE_IN8(xa) \ *((uint8_t *)(xa)) #define BE_IN16(xa) \ (((uint16_t)BE_IN8(xa) << 8) | BE_IN8((uint8_t *)(xa)+1)) #define BE_IN32(xa) \ (((uint32_t)BE_IN16(xa) << 16) | BE_IN16((uint8_t *)(xa)+2)) #ifdef _BIG_ENDIAN static __inline__ uint64_t htonll(uint64_t n) { return (n); } static __inline__ uint64_t ntohll(uint64_t n) { return (n); } #else static __inline__ uint64_t htonll(uint64_t n) { return ((((uint64_t)htonl(n)) << 32) + htonl(n >> 32)); } static __inline__ uint64_t ntohll(uint64_t n) { return ((((uint64_t)ntohl(n)) << 32) + ntohl(n >> 32)); } #endif #endif /* SPL_BYTEORDER_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/cred.h0000644000000000000000000000007413607166147017553 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.202417022 zfs-0.8.3/include/spl/sys/cred.h0000644016037001603700000000455413607166147017560 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_CRED_H #define _SPL_CRED_H #include #include #include #include typedef struct cred cred_t; #define kcred ((cred_t *)(init_task.cred)) #define CRED() ((cred_t *)current_cred()) /* Linux 4.9 API change, GROUP_AT was removed */ #ifndef GROUP_AT #define GROUP_AT(gi, i) ((gi)->gid[i]) #endif #ifdef HAVE_KUIDGID_T #define KUID_TO_SUID(x) (__kuid_val(x)) #define KGID_TO_SGID(x) (__kgid_val(x)) #define SUID_TO_KUID(x) (KUIDT_INIT(x)) #define SGID_TO_KGID(x) (KGIDT_INIT(x)) #define KGIDP_TO_SGIDP(x) (&(x)->val) #else /* HAVE_KUIDGID_T */ #define KUID_TO_SUID(x) (x) #define KGID_TO_SGID(x) (x) #define SUID_TO_KUID(x) (x) #define SGID_TO_KGID(x) (x) #define KGIDP_TO_SGIDP(x) (x) #endif /* HAVE_KUIDGID_T */ extern void crhold(cred_t *cr); extern void crfree(cred_t *cr); extern uid_t crgetuid(const cred_t *cr); extern uid_t crgetruid(const cred_t *cr); extern uid_t crgetsuid(const cred_t *cr); extern uid_t crgetfsuid(const cred_t *cr); extern gid_t crgetgid(const cred_t *cr); extern gid_t crgetrgid(const cred_t *cr); extern gid_t crgetsgid(const cred_t *cr); extern gid_t crgetfsgid(const cred_t *cr); extern int crgetngroups(const cred_t *cr); extern gid_t *crgetgroups(const cred_t *cr); extern int groupmember(gid_t gid, const cred_t *cr); #endif /* _SPL_CRED_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/thread.h0000644000000000000000000000007313607166147020104 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.27241927 zfs-0.8.3/include/spl/sys/thread.h0000644016037001603700000000426713607166147020113 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_THREAD_H #define _SPL_THREAD_H #include #include #include #include #include #include #include /* * Thread interfaces */ #define TP_MAGIC 0x53535353 #define TS_SLEEP TASK_INTERRUPTIBLE #define TS_RUN TASK_RUNNING #define TS_ZOMB EXIT_ZOMBIE #define TS_STOPPED TASK_STOPPED typedef void (*thread_func_t)(void *); /* BEGIN CSTYLED */ #define thread_create(stk, stksize, func, arg, len, pp, state, pri) \ __thread_create(stk, stksize, (thread_func_t)func, \ #func, arg, len, pp, state, pri) /* END CSTYLED */ #define thread_exit() __thread_exit() #define thread_join(t) VERIFY(0) #define curthread current #define getcomm() current->comm #define getpid() current->pid extern kthread_t *__thread_create(caddr_t stk, size_t stksize, thread_func_t func, const char *name, void *args, size_t len, proc_t *pp, int state, pri_t pri); extern void __thread_exit(void); extern struct task_struct *spl_kthread_create(int (*func)(void *), void *data, const char namefmt[], ...); extern proc_t p0; #endif /* _SPL_THREAD_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/sunddi.h0000644000000000000000000000007413607166147020124 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.263418981 zfs-0.8.3/include/spl/sys/sunddi.h0000644016037001603700000000401513607166147020121 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_SUNDDI_H #define _SPL_SUNDDI_H #include #include #include #include #include typedef int ddi_devid_t; #define DDI_DEV_T_NONE ((dev_t)-1) #define DDI_DEV_T_ANY ((dev_t)-2) #define DI_MAJOR_T_UNKNOWN ((major_t)0) #define DDI_PROP_DONTPASS 0x0001 #define DDI_PROP_CANSLEEP 0x0002 #define DDI_SUCCESS 0 #define DDI_FAILURE -1 #define ddi_prop_lookup_string(x1, x2, x3, x4, x5) (*x5 = NULL) #define ddi_prop_free(x) (void)0 #define ddi_root_node() (void)0 extern int ddi_strtoul(const char *, char **, int, unsigned long *); extern int ddi_strtol(const char *, char **, int, long *); extern int ddi_strtoull(const char *, char **, int, unsigned long long *); extern int ddi_strtoll(const char *, char **, int, long long *); extern int ddi_copyin(const void *from, void *to, size_t len, int flags); extern int ddi_copyout(const void *from, void *to, size_t len, int flags); #endif /* SPL_SUNDDI_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/atomic.h0000644000000000000000000000007413607166147020112 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.187416542 zfs-0.8.3/include/spl/sys/atomic.h0000644016037001603700000000654013607166147020114 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_ATOMIC_H #define _SPL_ATOMIC_H #include #include #include /* * Map the atomic_* functions to the Linux counterparts. This relies on the * fact that the atomic types are internally really a uint32 or uint64. If * this were to change an alternate approach would be needed. * * N.B. Due to the limitations of the original API atomicity is not strictly * preserved when using the 64-bit functions on a 32-bit system. In order * to support this all consumers would need to be updated to use the Linux * provided atomic_t and atomic64_t types. */ #define atomic_inc_32(v) atomic_inc((atomic_t *)(v)) #define atomic_dec_32(v) atomic_dec((atomic_t *)(v)) #define atomic_add_32(v, i) atomic_add((i), (atomic_t *)(v)) #define atomic_sub_32(v, i) atomic_sub((i), (atomic_t *)(v)) #define atomic_inc_32_nv(v) atomic_inc_return((atomic_t *)(v)) #define atomic_dec_32_nv(v) atomic_dec_return((atomic_t *)(v)) #define atomic_add_32_nv(v, i) atomic_add_return((i), (atomic_t *)(v)) #define atomic_sub_32_nv(v, i) atomic_sub_return((i), (atomic_t *)(v)) #define atomic_cas_32(v, x, y) atomic_cmpxchg((atomic_t *)(v), x, y) #define atomic_swap_32(v, x) atomic_xchg((atomic_t *)(v), x) #define atomic_inc_64(v) atomic64_inc((atomic64_t *)(v)) #define atomic_dec_64(v) atomic64_dec((atomic64_t *)(v)) #define atomic_add_64(v, i) atomic64_add((i), (atomic64_t *)(v)) #define atomic_sub_64(v, i) atomic64_sub((i), (atomic64_t *)(v)) #define atomic_inc_64_nv(v) atomic64_inc_return((atomic64_t *)(v)) #define atomic_dec_64_nv(v) atomic64_dec_return((atomic64_t *)(v)) #define atomic_add_64_nv(v, i) atomic64_add_return((i), (atomic64_t *)(v)) #define atomic_sub_64_nv(v, i) atomic64_sub_return((i), (atomic64_t *)(v)) #define atomic_cas_64(v, x, y) atomic64_cmpxchg((atomic64_t *)(v), x, y) #define atomic_swap_64(v, x) atomic64_xchg((atomic64_t *)(v), x) #ifdef _LP64 static __inline__ void * atomic_cas_ptr(volatile void *target, void *cmp, void *newval) { return ((void *)atomic_cas_64((volatile uint64_t *)target, (uint64_t)cmp, (uint64_t)newval)); } #else /* _LP64 */ static __inline__ void * atomic_cas_ptr(volatile void *target, void *cmp, void *newval) { return ((void *)atomic_cas_32((volatile uint32_t *)target, (uint32_t)cmp, (uint32_t)newval)); } #endif /* _LP64 */ #endif /* _SPL_ATOMIC_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/dkio.h0000644000000000000000000000007413607166147017564 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.210417279 zfs-0.8.3/include/spl/sys/dkio.h0000644016037001603700000000265713607166147017573 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_DKIO_H #define _SPL_DKIO_H #define DFL_SZ(num_exts) \ (sizeof (dkioc_free_list_t) + (num_exts - 1) * 16) #define DKIOC (0x04 << 8) #define DKIOCFLUSHWRITECACHE (DKIOC|34) /* flush cache to phys medium */ /* * ioctl to free space (e.g. SCSI UNMAP) off a disk. * Pass a dkioc_free_list_t containing a list of extents to be freed. */ #define DKIOCFREE (DKIOC|50) #endif /* _SPL_DKIO_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/cmn_err.h0000644000000000000000000000007313607166147020262 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.19641683 zfs-0.8.3/include/spl/sys/cmn_err.h0000644016037001603700000000271113607166147020261 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_CMN_ERR_H #define _SPL_CMN_ERR_H #include #define CE_CONT 0 /* continuation */ #define CE_NOTE 1 /* notice */ #define CE_WARN 2 /* warning */ #define CE_PANIC 3 /* panic */ #define CE_IGNORE 4 /* print nothing */ extern void cmn_err(int, const char *, ...); extern void vcmn_err(int, const char *, va_list); extern void vpanic(const char *, va_list); #define fm_panic panic #endif /* SPL_CMN_ERR_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/console.h0000644000000000000000000000007413607166147020300 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.200416958 zfs-0.8.3/include/spl/sys/console.h0000644016037001603700000000246213607166147020301 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_CONSOLE_H #define _SPL_CONSOLE_H void console_vprintf(const char *fmt, va_list args) { vprintk(fmt, args); } void console_printf(const char *fmt, ...) { va_list args; va_start(args, fmt); console_vprintf(fmt, args); va_end(args); } #endif /* _SPL_CONSOLE_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/signal.h0000644000000000000000000000007413607166147020113 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.256418756 zfs-0.8.3/include/spl/sys/signal.h0000644016037001603700000000343113607166147020111 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_SIGNAL_H #define _SPL_SIGNAL_H #include #ifdef HAVE_SCHED_SIGNAL_HEADER #include #endif #define FORREAL 0 /* Usual side-effects */ #define JUSTLOOKING 1 /* Don't stop the process */ /* * The "why" argument indicates the allowable side-effects of the call: * * FORREAL: Extract the next pending signal from p_sig into p_cursig; * stop the process if a stop has been requested or if a traced signal * is pending. * * JUSTLOOKING: Don't stop the process, just indicate whether or not * a signal might be pending (FORREAL is needed to tell for sure). */ static __inline__ int issig(int why) { ASSERT(why == FORREAL || why == JUSTLOOKING); return (signal_pending(current)); } #endif /* SPL_SIGNAL_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/procfs_list.h0000644000000000000000000000007413607166147021165 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.245418404 zfs-0.8.3/include/spl/sys/procfs_list.h0000644016037001603700000000416213607166147021165 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2018 by Delphix. All rights reserved. */ #ifndef _SPL_PROCFS_LIST_H #define _SPL_PROCFS_LIST_H #include #include #include #include typedef struct procfs_list procfs_list_t; struct procfs_list { /* Accessed only by user of a procfs_list */ void *pl_private; /* * Accessed both by user of a procfs_list and by procfs_list * implementation */ kmutex_t pl_lock; list_t pl_list; /* Accessed only by procfs_list implementation */ uint64_t pl_next_id; int (*pl_show)(struct seq_file *f, void *p); int (*pl_show_header)(struct seq_file *f); int (*pl_clear)(procfs_list_t *procfs_list); size_t pl_node_offset; kstat_proc_entry_t pl_kstat_entry; }; typedef struct procfs_list_node { list_node_t pln_link; uint64_t pln_id; } procfs_list_node_t; void procfs_list_install(const char *module, const char *name, mode_t mode, procfs_list_t *procfs_list, int (*show)(struct seq_file *f, void *p), int (*show_header)(struct seq_file *f), int (*clear)(procfs_list_t *procfs_list), size_t procfs_list_node_off); void procfs_list_uninstall(procfs_list_t *procfs_list); void procfs_list_destroy(procfs_list_t *procfs_list); void procfs_list_add(procfs_list_t *procfs_list, void *p); #endif /* _SPL_PROCFS_LIST_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/acl.h0000644000000000000000000000007413607166147017375 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.185416478 zfs-0.8.3/include/spl/sys/acl.h0000644016037001603700000001027513607166147017377 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_ACL_H #define _SPL_ACL_H #include typedef struct ace { uid_t a_who; uint32_t a_access_mask; uint16_t a_flags; uint16_t a_type; } ace_t; typedef struct ace_object { uid_t a_who; /* uid or gid */ uint32_t a_access_mask; /* read,write,... */ uint16_t a_flags; /* see below */ uint16_t a_type; /* allow or deny */ uint8_t a_obj_type[16]; /* obj type */ uint8_t a_inherit_obj_type[16]; /* inherit obj */ } ace_object_t; #define MAX_ACL_ENTRIES 1024 #define ACE_READ_DATA 0x00000001 #define ACE_LIST_DIRECTORY 0x00000001 #define ACE_WRITE_DATA 0x00000002 #define ACE_ADD_FILE 0x00000002 #define ACE_APPEND_DATA 0x00000004 #define ACE_ADD_SUBDIRECTORY 0x00000004 #define ACE_READ_NAMED_ATTRS 0x00000008 #define ACE_WRITE_NAMED_ATTRS 0x00000010 #define ACE_EXECUTE 0x00000020 #define ACE_DELETE_CHILD 0x00000040 #define ACE_READ_ATTRIBUTES 0x00000080 #define ACE_WRITE_ATTRIBUTES 0x00000100 #define ACE_DELETE 0x00010000 #define ACE_READ_ACL 0x00020000 #define ACE_WRITE_ACL 0x00040000 #define ACE_WRITE_OWNER 0x00080000 #define ACE_SYNCHRONIZE 0x00100000 #define ACE_FILE_INHERIT_ACE 0x0001 #define ACE_DIRECTORY_INHERIT_ACE 0x0002 #define ACE_NO_PROPAGATE_INHERIT_ACE 0x0004 #define ACE_INHERIT_ONLY_ACE 0x0008 #define ACE_SUCCESSFUL_ACCESS_ACE_FLAG 0x0010 #define ACE_FAILED_ACCESS_ACE_FLAG 0x0020 #define ACE_IDENTIFIER_GROUP 0x0040 #define ACE_INHERITED_ACE 0x0080 #define ACE_OWNER 0x1000 #define ACE_GROUP 0x2000 #define ACE_EVERYONE 0x4000 #define ACE_ACCESS_ALLOWED_ACE_TYPE 0x0000 #define ACE_ACCESS_DENIED_ACE_TYPE 0x0001 #define ACE_SYSTEM_AUDIT_ACE_TYPE 0x0002 #define ACE_SYSTEM_ALARM_ACE_TYPE 0x0003 #define ACL_AUTO_INHERIT 0x0001 #define ACL_PROTECTED 0x0002 #define ACL_DEFAULTED 0x0004 #define ACL_FLAGS_ALL (ACL_AUTO_INHERIT|ACL_PROTECTED|ACL_DEFAULTED) #define ACE_ACCESS_ALLOWED_COMPOUND_ACE_TYPE 0x04 #define ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x05 #define ACE_ACCESS_DENIED_OBJECT_ACE_TYPE 0x06 #define ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE 0x07 #define ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE 0x08 #define ACE_ACCESS_ALLOWED_CALLBACK_ACE_TYPE 0x09 #define ACE_ACCESS_DENIED_CALLBACK_ACE_TYPE 0x0A #define ACE_ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE 0x0B #define ACE_ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE 0x0C #define ACE_SYSTEM_AUDIT_CALLBACK_ACE_TYPE 0x0D #define ACE_SYSTEM_ALARM_CALLBACK_ACE_TYPE 0x0E #define ACE_SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE 0x0F #define ACE_SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE 0x10 #define ACE_ALL_TYPES 0x001F #define ACE_TYPE_FLAGS (ACE_OWNER|ACE_GROUP|ACE_EVERYONE|ACE_IDENTIFIER_GROUP) /* BEGIN CSTYLED */ #define ACE_ALL_PERMS (ACE_READ_DATA|ACE_LIST_DIRECTORY|ACE_WRITE_DATA| \ ACE_ADD_FILE|ACE_APPEND_DATA|ACE_ADD_SUBDIRECTORY|ACE_READ_NAMED_ATTRS| \ ACE_WRITE_NAMED_ATTRS|ACE_EXECUTE|ACE_DELETE_CHILD|ACE_READ_ATTRIBUTES| \ ACE_WRITE_ATTRIBUTES|ACE_DELETE|ACE_READ_ACL|ACE_WRITE_ACL| \ ACE_WRITE_OWNER|ACE_SYNCHRONIZE) /* END CSTYLED */ #define VSA_ACE 0x0010 #define VSA_ACECNT 0x0020 #define VSA_ACE_ALLTYPES 0x0040 #define VSA_ACE_ACLFLAGS 0x0080 #endif /* _SPL_ACL_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020521 xustar000000000000000030 atime=1579730428.959124923 30 ctime=1579730469.304420297 zfs-0.8.3/include/spl/sys/Makefile.am0000644016037001603700000000454413607166147020525 0ustar00hutter2hutter200000000000000KERNEL_H = \ $(top_srcdir)/include/spl/sys/acl.h \ $(top_srcdir)/include/spl/sys/atomic.h \ $(top_srcdir)/include/spl/sys/byteorder.h \ $(top_srcdir)/include/spl/sys/callb.h \ $(top_srcdir)/include/spl/sys/callo.h \ $(top_srcdir)/include/spl/sys/cmn_err.h \ $(top_srcdir)/include/spl/sys/condvar.h \ $(top_srcdir)/include/spl/sys/console.h \ $(top_srcdir)/include/spl/sys/cred.h \ $(top_srcdir)/include/spl/sys/ctype.h \ $(top_srcdir)/include/spl/sys/debug.h \ $(top_srcdir)/include/spl/sys/disp.h \ $(top_srcdir)/include/spl/sys/dkio.h \ $(top_srcdir)/include/spl/sys/errno.h \ $(top_srcdir)/include/spl/sys/fcntl.h \ $(top_srcdir)/include/spl/sys/file.h \ $(top_srcdir)/include/spl/sys/inttypes.h \ $(top_srcdir)/include/spl/sys/isa_defs.h \ $(top_srcdir)/include/spl/sys/kmem_cache.h \ $(top_srcdir)/include/spl/sys/kmem.h \ $(top_srcdir)/include/spl/sys/kobj.h \ $(top_srcdir)/include/spl/sys/kstat.h \ $(top_srcdir)/include/spl/sys/list.h \ $(top_srcdir)/include/spl/sys/mode.h \ $(top_srcdir)/include/spl/sys/mutex.h \ $(top_srcdir)/include/spl/sys/param.h \ $(top_srcdir)/include/spl/sys/processor.h \ $(top_srcdir)/include/spl/sys/proc.h \ $(top_srcdir)/include/spl/sys/procfs_list.h \ $(top_srcdir)/include/spl/sys/random.h \ $(top_srcdir)/include/spl/sys/rwlock.h \ $(top_srcdir)/include/spl/sys/shrinker.h \ $(top_srcdir)/include/spl/sys/sid.h \ $(top_srcdir)/include/spl/sys/signal.h \ $(top_srcdir)/include/spl/sys/stat.h \ $(top_srcdir)/include/spl/sys/strings.h \ $(top_srcdir)/include/spl/sys/sunddi.h \ $(top_srcdir)/include/spl/sys/sysmacros.h \ $(top_srcdir)/include/spl/sys/systeminfo.h \ $(top_srcdir)/include/spl/sys/taskq.h \ $(top_srcdir)/include/spl/sys/thread.h \ $(top_srcdir)/include/spl/sys/time.h \ $(top_srcdir)/include/spl/sys/timer.h \ $(top_srcdir)/include/spl/sys/tsd.h \ $(top_srcdir)/include/spl/sys/types32.h \ $(top_srcdir)/include/spl/sys/types.h \ $(top_srcdir)/include/spl/sys/uio.h \ $(top_srcdir)/include/spl/sys/user.h \ $(top_srcdir)/include/spl/sys/vfs.h \ $(top_srcdir)/include/spl/sys/vmem.h \ $(top_srcdir)/include/spl/sys/vmsystm.h \ $(top_srcdir)/include/spl/sys/vnode.h \ $(top_srcdir)/include/spl/sys/wait.h \ $(top_srcdir)/include/spl/sys/zmod.h \ $(top_srcdir)/include/spl/sys/zone.h if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/spl/sys kernel_HEADERS = $(KERNEL_H) endif zfs-0.8.3/include/spl/sys/PaxHeaders.151519/shrinker.h0000644000000000000000000000007413607166147020463 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.252418628 zfs-0.8.3/include/spl/sys/shrinker.h0000644016037001603700000001425213607166147020464 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_SHRINKER_H #define _SPL_SHRINKER_H #include #include #if !defined(HAVE_SHRINK_CONTROL_STRUCT) struct shrink_control { gfp_t gfp_mask; unsigned long nr_to_scan; }; #endif /* HAVE_SHRINK_CONTROL_STRUCT */ /* * Due to frequent changes in the shrinker API the following * compatibility wrappers should be used. They are as follows: * * SPL_SHRINKER_DECLARE is used to declare the shrinker which is * passed to spl_register_shrinker()/spl_unregister_shrinker(). Use * shrinker_name to set the shrinker variable name, shrinker_callback * to set the callback function, and seek_cost to define the cost of * reclaiming an object. * * SPL_SHRINKER_DECLARE(shrinker_name, shrinker_callback, seek_cost); * * SPL_SHRINKER_CALLBACK_FWD_DECLARE is used when a forward declaration * of the shrinker callback function is required. Only the callback * function needs to be passed. * * SPL_SHRINKER_CALLBACK_FWD_DECLARE(shrinker_callback); * * SPL_SHRINKER_CALLBACK_WRAPPER is used to declare the callback function * which is registered with the shrinker. This function will call your * custom shrinker which must use the following prototype. Notice the * leading __'s, these must be appended to the callback_function name. * * int __shrinker_callback(struct shrinker *, struct shrink_control *) * SPL_SHRINKER_CALLBACK_WRAPPER(shrinker_callback);a * * * Example: * * SPL_SHRINKER_CALLBACK_FWD_DECLARE(my_shrinker_fn); * SPL_SHRINKER_DECLARE(my_shrinker, my_shrinker_fn, 1); * * static int * __my_shrinker_fn(struct shrinker *shrink, struct shrink_control *sc) * { * if (sc->nr_to_scan) { * ...scan objects in the cache and reclaim them... * } * * ...calculate number of objects in the cache... * * return (number of objects in the cache); * } * SPL_SHRINKER_CALLBACK_WRAPPER(my_shrinker_fn); */ #define spl_register_shrinker(x) register_shrinker(x) #define spl_unregister_shrinker(x) unregister_shrinker(x) /* * Linux 2.6.23 - 2.6.34 Shrinker API Compatibility. */ #if defined(HAVE_2ARGS_OLD_SHRINKER_CALLBACK) #define SPL_SHRINKER_DECLARE(s, x, y) \ static struct shrinker s = { \ .shrink = x, \ .seeks = y \ } #define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn) \ static int fn(int nr_to_scan, unsigned int gfp_mask) #define SPL_SHRINKER_CALLBACK_WRAPPER(fn) \ static int \ fn(int nr_to_scan, unsigned int gfp_mask) \ { \ struct shrink_control sc; \ \ sc.nr_to_scan = nr_to_scan; \ sc.gfp_mask = gfp_mask; \ \ return (__ ## fn(NULL, &sc)); \ } /* * Linux 2.6.35 to 2.6.39 Shrinker API Compatibility. */ #elif defined(HAVE_3ARGS_SHRINKER_CALLBACK) #define SPL_SHRINKER_DECLARE(s, x, y) \ static struct shrinker s = { \ .shrink = x, \ .seeks = y \ } #define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn) \ static int fn(struct shrinker *, int, unsigned int) #define SPL_SHRINKER_CALLBACK_WRAPPER(fn) \ static int \ fn(struct shrinker *shrink, int nr_to_scan, unsigned int gfp_mask) \ { \ struct shrink_control sc; \ \ sc.nr_to_scan = nr_to_scan; \ sc.gfp_mask = gfp_mask; \ \ return (__ ## fn(shrink, &sc)); \ } /* * Linux 3.0 to 3.11 Shrinker API Compatibility. */ #elif defined(HAVE_2ARGS_NEW_SHRINKER_CALLBACK) #define SPL_SHRINKER_DECLARE(s, x, y) \ static struct shrinker s = { \ .shrink = x, \ .seeks = y \ } #define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn) \ static int fn(struct shrinker *, struct shrink_control *) #define SPL_SHRINKER_CALLBACK_WRAPPER(fn) \ static int \ fn(struct shrinker *shrink, struct shrink_control *sc) \ { \ return (__ ## fn(shrink, sc)); \ } /* * Linux 3.12 and later Shrinker API Compatibility. */ #elif defined(HAVE_SPLIT_SHRINKER_CALLBACK) #define SPL_SHRINKER_DECLARE(s, x, y) \ static struct shrinker s = { \ .count_objects = x ## _count_objects, \ .scan_objects = x ## _scan_objects, \ .seeks = y \ } #define SPL_SHRINKER_CALLBACK_FWD_DECLARE(fn) \ static unsigned long fn ## _count_objects(struct shrinker *, \ struct shrink_control *); \ static unsigned long fn ## _scan_objects(struct shrinker *, \ struct shrink_control *) #define SPL_SHRINKER_CALLBACK_WRAPPER(fn) \ static unsigned long \ fn ## _count_objects(struct shrinker *shrink, struct shrink_control *sc)\ { \ int __ret__; \ \ sc->nr_to_scan = 0; \ __ret__ = __ ## fn(NULL, sc); \ \ /* Errors may not be returned and must be converted to zeros */ \ return ((__ret__ < 0) ? 0 : __ret__); \ } \ \ static unsigned long \ fn ## _scan_objects(struct shrinker *shrink, struct shrink_control *sc) \ { \ int __ret__; \ \ __ret__ = __ ## fn(NULL, sc); \ return ((__ret__ < 0) ? SHRINK_STOP : __ret__); \ } #else /* * Linux 2.x to 2.6.22, or a newer shrinker API has been introduced. */ #error "Unknown shrinker callback" #endif #if defined(HAVE_SPLIT_SHRINKER_CALLBACK) typedef unsigned long spl_shrinker_t; #else typedef int spl_shrinker_t; #define SHRINK_STOP (-1) #endif #endif /* SPL_SHRINKER_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/kmem_cache.h0000644000000000000000000000007413612141517020700 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.224417729 zfs-0.8.3/include/spl/sys/kmem_cache.h0000644016037001603700000002306713612141517020705 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_KMEM_CACHE_H #define _SPL_KMEM_CACHE_H #include /* * Slab allocation interfaces. The SPL slab differs from the standard * Linux SLAB or SLUB primarily in that each cache may be backed by slabs * allocated from the physical or virtual memory address space. The virtual * slabs allow for good behavior when allocation large objects of identical * size. This slab implementation also supports both constructors and * destructors which the Linux slab does not. */ typedef enum kmc_bit { KMC_BIT_NOTOUCH = 0, /* Don't update ages */ KMC_BIT_NODEBUG = 1, /* Default behavior */ KMC_BIT_NOMAGAZINE = 2, /* XXX: Unsupported */ KMC_BIT_NOHASH = 3, /* XXX: Unsupported */ KMC_BIT_QCACHE = 4, /* XXX: Unsupported */ KMC_BIT_KMEM = 5, /* Use kmem cache */ KMC_BIT_VMEM = 6, /* Use vmem cache */ KMC_BIT_SLAB = 7, /* Use Linux slab cache */ KMC_BIT_OFFSLAB = 8, /* Objects not on slab */ KMC_BIT_DEADLOCKED = 14, /* Deadlock detected */ KMC_BIT_GROWING = 15, /* Growing in progress */ KMC_BIT_REAPING = 16, /* Reaping in progress */ KMC_BIT_DESTROY = 17, /* Destroy in progress */ KMC_BIT_TOTAL = 18, /* Proc handler helper bit */ KMC_BIT_ALLOC = 19, /* Proc handler helper bit */ KMC_BIT_MAX = 20, /* Proc handler helper bit */ } kmc_bit_t; /* kmem move callback return values */ typedef enum kmem_cbrc { KMEM_CBRC_YES = 0, /* Object moved */ KMEM_CBRC_NO = 1, /* Object not moved */ KMEM_CBRC_LATER = 2, /* Object not moved, try again later */ KMEM_CBRC_DONT_NEED = 3, /* Neither object is needed */ KMEM_CBRC_DONT_KNOW = 4, /* Object unknown */ } kmem_cbrc_t; #define KMC_NOTOUCH (1 << KMC_BIT_NOTOUCH) #define KMC_NODEBUG (1 << KMC_BIT_NODEBUG) #define KMC_NOMAGAZINE (1 << KMC_BIT_NOMAGAZINE) #define KMC_NOHASH (1 << KMC_BIT_NOHASH) #define KMC_QCACHE (1 << KMC_BIT_QCACHE) #define KMC_KMEM (1 << KMC_BIT_KMEM) #define KMC_VMEM (1 << KMC_BIT_VMEM) #define KMC_SLAB (1 << KMC_BIT_SLAB) #define KMC_OFFSLAB (1 << KMC_BIT_OFFSLAB) #define KMC_DEADLOCKED (1 << KMC_BIT_DEADLOCKED) #define KMC_GROWING (1 << KMC_BIT_GROWING) #define KMC_REAPING (1 << KMC_BIT_REAPING) #define KMC_DESTROY (1 << KMC_BIT_DESTROY) #define KMC_TOTAL (1 << KMC_BIT_TOTAL) #define KMC_ALLOC (1 << KMC_BIT_ALLOC) #define KMC_MAX (1 << KMC_BIT_MAX) #define KMC_REAP_CHUNK INT_MAX #define KMC_DEFAULT_SEEKS 1 #define KMC_EXPIRE_AGE 0x1 /* Due to age */ #define KMC_EXPIRE_MEM 0x2 /* Due to low memory */ #define KMC_RECLAIM_ONCE 0x1 /* Force a single shrinker pass */ extern unsigned int spl_kmem_cache_expire; extern struct list_head spl_kmem_cache_list; extern struct rw_semaphore spl_kmem_cache_sem; #define SKM_MAGIC 0x2e2e2e2e #define SKO_MAGIC 0x20202020 #define SKS_MAGIC 0x22222222 #define SKC_MAGIC 0x2c2c2c2c #define SPL_KMEM_CACHE_DELAY 15 /* Minimum slab release age */ #define SPL_KMEM_CACHE_REAP 0 /* Default reap everything */ #define SPL_KMEM_CACHE_OBJ_PER_SLAB 8 /* Target objects per slab */ #define SPL_KMEM_CACHE_OBJ_PER_SLAB_MIN 1 /* Minimum objects per slab */ #define SPL_KMEM_CACHE_ALIGN 8 /* Default object alignment */ #ifdef _LP64 #define SPL_KMEM_CACHE_MAX_SIZE 32 /* Max slab size in MB */ #else #define SPL_KMEM_CACHE_MAX_SIZE 4 /* Max slab size in MB */ #endif #define SPL_MAX_ORDER (MAX_ORDER - 3) #define SPL_MAX_ORDER_NR_PAGES (1 << (SPL_MAX_ORDER - 1)) #ifdef CONFIG_SLUB #define SPL_MAX_KMEM_CACHE_ORDER PAGE_ALLOC_COSTLY_ORDER #define SPL_MAX_KMEM_ORDER_NR_PAGES (1 << (SPL_MAX_KMEM_CACHE_ORDER - 1)) #else #define SPL_MAX_KMEM_ORDER_NR_PAGES (KMALLOC_MAX_SIZE >> PAGE_SHIFT) #endif #define POINTER_IS_VALID(p) 0 /* Unimplemented */ #define POINTER_INVALIDATE(pp) /* Unimplemented */ typedef int (*spl_kmem_ctor_t)(void *, void *, int); typedef void (*spl_kmem_dtor_t)(void *, void *); typedef void (*spl_kmem_reclaim_t)(void *); typedef struct spl_kmem_magazine { uint32_t skm_magic; /* Sanity magic */ uint32_t skm_avail; /* Available objects */ uint32_t skm_size; /* Magazine size */ uint32_t skm_refill; /* Batch refill size */ struct spl_kmem_cache *skm_cache; /* Owned by cache */ unsigned long skm_age; /* Last cache access */ unsigned int skm_cpu; /* Owned by cpu */ void *skm_objs[0]; /* Object pointers */ } spl_kmem_magazine_t; typedef struct spl_kmem_obj { uint32_t sko_magic; /* Sanity magic */ void *sko_addr; /* Buffer address */ struct spl_kmem_slab *sko_slab; /* Owned by slab */ struct list_head sko_list; /* Free object list linkage */ } spl_kmem_obj_t; typedef struct spl_kmem_slab { uint32_t sks_magic; /* Sanity magic */ uint32_t sks_objs; /* Objects per slab */ struct spl_kmem_cache *sks_cache; /* Owned by cache */ struct list_head sks_list; /* Slab list linkage */ struct list_head sks_free_list; /* Free object list */ unsigned long sks_age; /* Last modify jiffie */ uint32_t sks_ref; /* Ref count used objects */ } spl_kmem_slab_t; typedef struct spl_kmem_alloc { struct spl_kmem_cache *ska_cache; /* Owned by cache */ int ska_flags; /* Allocation flags */ taskq_ent_t ska_tqe; /* Task queue entry */ } spl_kmem_alloc_t; typedef struct spl_kmem_emergency { struct rb_node ske_node; /* Emergency tree linkage */ unsigned long ske_obj; /* Buffer address */ } spl_kmem_emergency_t; typedef struct spl_kmem_cache { uint32_t skc_magic; /* Sanity magic */ uint32_t skc_name_size; /* Name length */ char *skc_name; /* Name string */ spl_kmem_magazine_t **skc_mag; /* Per-CPU warm cache */ uint32_t skc_mag_size; /* Magazine size */ uint32_t skc_mag_refill; /* Magazine refill count */ spl_kmem_ctor_t skc_ctor; /* Constructor */ spl_kmem_dtor_t skc_dtor; /* Destructor */ spl_kmem_reclaim_t skc_reclaim; /* Reclaimator */ void *skc_private; /* Private data */ void *skc_vmp; /* Unused */ struct kmem_cache *skc_linux_cache; /* Linux slab cache if used */ unsigned long skc_flags; /* Flags */ uint32_t skc_obj_size; /* Object size */ uint32_t skc_obj_align; /* Object alignment */ uint32_t skc_slab_objs; /* Objects per slab */ uint32_t skc_slab_size; /* Slab size */ uint32_t skc_delay; /* Slab reclaim interval */ uint32_t skc_reap; /* Slab reclaim count */ atomic_t skc_ref; /* Ref count callers */ taskqid_t skc_taskqid; /* Slab reclaim task */ struct list_head skc_list; /* List of caches linkage */ struct list_head skc_complete_list; /* Completely alloc'ed */ struct list_head skc_partial_list; /* Partially alloc'ed */ struct rb_root skc_emergency_tree; /* Min sized objects */ spinlock_t skc_lock; /* Cache lock */ spl_wait_queue_head_t skc_waitq; /* Allocation waiters */ uint64_t skc_slab_fail; /* Slab alloc failures */ uint64_t skc_slab_create; /* Slab creates */ uint64_t skc_slab_destroy; /* Slab destroys */ uint64_t skc_slab_total; /* Slab total current */ uint64_t skc_slab_alloc; /* Slab alloc current */ uint64_t skc_slab_max; /* Slab max historic */ uint64_t skc_obj_total; /* Obj total current */ uint64_t skc_obj_alloc; /* Obj alloc current */ uint64_t skc_obj_max; /* Obj max historic */ uint64_t skc_obj_deadlock; /* Obj emergency deadlocks */ uint64_t skc_obj_emergency; /* Obj emergency current */ uint64_t skc_obj_emergency_max; /* Obj emergency max */ } spl_kmem_cache_t; #define kmem_cache_t spl_kmem_cache_t extern spl_kmem_cache_t *spl_kmem_cache_create(char *name, size_t size, size_t align, spl_kmem_ctor_t ctor, spl_kmem_dtor_t dtor, spl_kmem_reclaim_t reclaim, void *priv, void *vmp, int flags); extern void spl_kmem_cache_set_move(spl_kmem_cache_t *, kmem_cbrc_t (*)(void *, void *, size_t, void *)); extern void spl_kmem_cache_destroy(spl_kmem_cache_t *skc); extern void *spl_kmem_cache_alloc(spl_kmem_cache_t *skc, int flags); extern void spl_kmem_cache_free(spl_kmem_cache_t *skc, void *obj); extern void spl_kmem_cache_set_allocflags(spl_kmem_cache_t *skc, gfp_t flags); extern void spl_kmem_cache_reap_now(spl_kmem_cache_t *skc, int count); extern void spl_kmem_reap(void); #define kmem_cache_create(name, size, align, ctor, dtor, rclm, priv, vmp, fl) \ spl_kmem_cache_create(name, size, align, ctor, dtor, rclm, priv, vmp, fl) #define kmem_cache_set_move(skc, move) spl_kmem_cache_set_move(skc, move) #define kmem_cache_destroy(skc) spl_kmem_cache_destroy(skc) #define kmem_cache_alloc(skc, flags) spl_kmem_cache_alloc(skc, flags) #define kmem_cache_free(skc, obj) spl_kmem_cache_free(skc, obj) #define kmem_cache_reap_now(skc) \ spl_kmem_cache_reap_now(skc, skc->skc_reap) #define kmem_reap() spl_kmem_reap() /* * The following functions are only available for internal use. */ extern int spl_kmem_cache_init(void); extern void spl_kmem_cache_fini(void); #endif /* _SPL_KMEM_CACHE_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/ctype.h0000644000000000000000000000007413607166147017762 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.204417086 zfs-0.8.3/include/spl/sys/ctype.h0000644016037001603700000000216613607166147017764 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_CTYPE_H #define _SPL_CTYPE_H #include #endif /* SPL_CTYPE_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/processor.h0000644000000000000000000000007413607166147020655 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.241418276 zfs-0.8.3/include/spl/sys/processor.h0000644016037001603700000000225413607166147020655 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_PROCESSOR_H #define _SPL_PROCESSOR_H #define getcpuid() smp_processor_id() typedef int processorid_t; #endif /* _SPL_PROCESSOR_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/zmod.h0000644000000000000000000000007413607166147017607 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.300420169 zfs-0.8.3/include/spl/sys/zmod.h0000644016037001603700000000605713607166147017614 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . * * * z_compress_level/z_uncompress are nearly identical copies of the * compress2/uncompress functions provided by the official zlib package * available at http://zlib.net/. The only changes made we to slightly * adapt the functions called to match the linux kernel implementation * of zlib. The full zlib license follows: * * zlib.h -- interface of the 'zlib' general purpose compression library * version 1.2.5, April 19th, 2010 * * Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be * appreciated but is not required. * 2. Altered source versions must be plainly marked as such, and must not be * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. * * Jean-loup Gailly * Mark Adler */ #ifndef _SPL_ZMOD_H #define _SPL_ZMOD_H #include #include #ifdef HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE #define spl_zlib_deflate_workspacesize(wb, ml) \ zlib_deflate_workspacesize(wb, ml) #else #define spl_zlib_deflate_workspacesize(wb, ml) \ zlib_deflate_workspacesize() #endif /* HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE */ extern int z_compress_level(void *dest, size_t *destLen, const void *source, size_t sourceLen, int level); extern int z_uncompress(void *dest, size_t *destLen, const void *source, size_t sourceLen); int spl_zlib_init(void); void spl_zlib_fini(void); #endif /* SPL_ZMOD_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/condvar.h0000644000000000000000000000007413612141510020251 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.198416894 zfs-0.8.3/include/spl/sys/condvar.h0000644016037001603700000000630013612141510020245 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_CONDVAR_H #define _SPL_CONDVAR_H #include #include #include #include #include #include /* * The kcondvar_t struct is protected by mutex taken externally before * calling any of the wait/signal funs, and passed into the wait funs. */ #define CV_MAGIC 0x346545f4 #define CV_DESTROY 0x346545f5 typedef struct { int cv_magic; spl_wait_queue_head_t cv_event; spl_wait_queue_head_t cv_destroy; atomic_t cv_refs; atomic_t cv_waiters; kmutex_t *cv_mutex; } kcondvar_t; typedef enum { CV_DEFAULT = 0, CV_DRIVER } kcv_type_t; extern void __cv_init(kcondvar_t *, char *, kcv_type_t, void *); extern void __cv_destroy(kcondvar_t *); extern void __cv_wait(kcondvar_t *, kmutex_t *); extern void __cv_wait_io(kcondvar_t *, kmutex_t *); extern int __cv_wait_io_sig(kcondvar_t *, kmutex_t *); extern int __cv_wait_sig(kcondvar_t *, kmutex_t *); extern clock_t __cv_timedwait(kcondvar_t *, kmutex_t *, clock_t); extern clock_t __cv_timedwait_io(kcondvar_t *, kmutex_t *, clock_t); extern clock_t __cv_timedwait_sig(kcondvar_t *, kmutex_t *, clock_t); extern clock_t cv_timedwait_hires(kcondvar_t *, kmutex_t *, hrtime_t, hrtime_t res, int flag); extern clock_t cv_timedwait_sig_hires(kcondvar_t *, kmutex_t *, hrtime_t, hrtime_t res, int flag); extern void __cv_signal(kcondvar_t *); extern void __cv_broadcast(kcondvar_t *c); #define cv_init(cvp, name, type, arg) __cv_init(cvp, name, type, arg) #define cv_destroy(cvp) __cv_destroy(cvp) #define cv_wait(cvp, mp) __cv_wait(cvp, mp) #define cv_wait_io(cvp, mp) __cv_wait_io(cvp, mp) #define cv_wait_io_sig(cvp, mp) __cv_wait_io_sig(cvp, mp) #define cv_wait_sig(cvp, mp) __cv_wait_sig(cvp, mp) #define cv_wait_interruptible(cvp, mp) cv_wait_sig(cvp, mp) #define cv_timedwait(cvp, mp, t) __cv_timedwait(cvp, mp, t) #define cv_timedwait_io(cvp, mp, t) __cv_timedwait_io(cvp, mp, t) #define cv_timedwait_sig(cvp, mp, t) __cv_timedwait_sig(cvp, mp, t) #define cv_timedwait_interruptible(cvp, mp, t) cv_timedwait_sig(cvp, mp, t) #define cv_signal(cvp) __cv_signal(cvp) #define cv_broadcast(cvp) __cv_broadcast(cvp) #endif /* _SPL_CONDVAR_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/stat.h0000644000000000000000000000007313607166147017610 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.25841882 zfs-0.8.3/include/spl/sys/stat.h0000644016037001603700000000216213607166147017607 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_STAT_H #define _SPL_STAT_H #include #endif /* SPL_STAT_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/sid.h0000644000000000000000000000007413607166147017415 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.254418692 zfs-0.8.3/include/spl/sys/sid.h0000644016037001603700000000324513607166147017416 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_SID_H #define _SPL_SID_H typedef struct ksiddomain { char *kd_name; } ksiddomain_t; typedef enum ksid_index { KSID_USER, KSID_GROUP, KSID_OWNER, KSID_COUNT } ksid_index_t; typedef int ksid_t; static inline ksiddomain_t * ksid_lookupdomain(const char *dom) { ksiddomain_t *kd; int len = strlen(dom); kd = kmem_zalloc(sizeof (ksiddomain_t), KM_SLEEP); kd->kd_name = kmem_zalloc(len + 1, KM_SLEEP); memcpy(kd->kd_name, dom, len); return (kd); } static inline void ksiddomain_rele(ksiddomain_t *ksid) { kmem_free(ksid->kd_name, strlen(ksid->kd_name) + 1); kmem_free(ksid, sizeof (ksiddomain_t)); } #endif /* _SPL_SID_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/fcntl.h0000644000000000000000000000007413607166147017744 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.215417441 zfs-0.8.3/include/spl/sys/fcntl.h0000644016037001603700000000227013607166147017742 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2010 Lawrence Livermore National Security, LLC. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_FCNTL_H #define _SPL_FCNTL_H #include #define F_FREESP 11 #ifdef CONFIG_64BIT typedef struct flock flock64_t; #else typedef struct flock64 flock64_t; #endif /* CONFIG_64BIT */ #endif /* _SPL_FCNTL_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/kstat.h0000644000000000000000000000007413607166147017764 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.230417921 zfs-0.8.3/include/spl/sys/kstat.h0000644016037001603700000001663113607166147017770 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_KSTAT_H #define _SPL_KSTAT_H #include #include #include #include #include #include #define KSTAT_STRLEN 255 #define KSTAT_RAW_MAX (128*1024) /* * For reference valid classes are: * disk, tape, net, controller, vm, kvm, hat, streams, kstat, misc */ #define KSTAT_TYPE_RAW 0 /* can be anything; ks_ndata >= 1 */ #define KSTAT_TYPE_NAMED 1 /* name/value pair; ks_ndata >= 1 */ #define KSTAT_TYPE_INTR 2 /* interrupt stats; ks_ndata == 1 */ #define KSTAT_TYPE_IO 3 /* I/O stats; ks_ndata == 1 */ #define KSTAT_TYPE_TIMER 4 /* event timer; ks_ndata >= 1 */ #define KSTAT_NUM_TYPES 5 #define KSTAT_DATA_CHAR 0 #define KSTAT_DATA_INT32 1 #define KSTAT_DATA_UINT32 2 #define KSTAT_DATA_INT64 3 #define KSTAT_DATA_UINT64 4 #define KSTAT_DATA_LONG 5 #define KSTAT_DATA_ULONG 6 #define KSTAT_DATA_STRING 7 #define KSTAT_NUM_DATAS 8 #define KSTAT_INTR_HARD 0 #define KSTAT_INTR_SOFT 1 #define KSTAT_INTR_WATCHDOG 2 #define KSTAT_INTR_SPURIOUS 3 #define KSTAT_INTR_MULTSVC 4 #define KSTAT_NUM_INTRS 5 #define KSTAT_FLAG_VIRTUAL 0x01 #define KSTAT_FLAG_VAR_SIZE 0x02 #define KSTAT_FLAG_WRITABLE 0x04 #define KSTAT_FLAG_PERSISTENT 0x08 #define KSTAT_FLAG_DORMANT 0x10 #define KSTAT_FLAG_INVALID 0x20 #define KSTAT_FLAG_LONGSTRINGS 0x40 #define KSTAT_FLAG_NO_HEADERS 0x80 #define KS_MAGIC 0x9d9d9d9d /* Dynamic updates */ #define KSTAT_READ 0 #define KSTAT_WRITE 1 struct kstat_s; typedef struct kstat_s kstat_t; typedef int kid_t; /* unique kstat id */ typedef int kstat_update_t(struct kstat_s *, int); /* dynamic update cb */ typedef struct kstat_module { char ksm_name[KSTAT_STRLEN+1]; /* module name */ struct list_head ksm_module_list; /* module linkage */ struct list_head ksm_kstat_list; /* list of kstat entries */ struct proc_dir_entry *ksm_proc; /* proc entry */ } kstat_module_t; typedef struct kstat_raw_ops { int (*headers)(char *buf, size_t size); int (*data)(char *buf, size_t size, void *data); void *(*addr)(kstat_t *ksp, loff_t index); } kstat_raw_ops_t; typedef struct kstat_proc_entry { char kpe_name[KSTAT_STRLEN+1]; /* kstat name */ char kpe_module[KSTAT_STRLEN+1]; /* provider module name */ kstat_module_t *kpe_owner; /* kstat module linkage */ struct list_head kpe_list; /* kstat linkage */ struct proc_dir_entry *kpe_proc; /* procfs entry */ } kstat_proc_entry_t; struct kstat_s { int ks_magic; /* magic value */ kid_t ks_kid; /* unique kstat ID */ hrtime_t ks_crtime; /* creation time */ hrtime_t ks_snaptime; /* last access time */ int ks_instance; /* provider module instance */ char ks_class[KSTAT_STRLEN+1]; /* kstat class */ uchar_t ks_type; /* kstat data type */ uchar_t ks_flags; /* kstat flags */ void *ks_data; /* kstat type-specific data */ uint_t ks_ndata; /* # of data records */ size_t ks_data_size; /* size of kstat data section */ kstat_update_t *ks_update; /* dynamic updates */ void *ks_private; /* private data */ kmutex_t ks_private_lock; /* kstat private data lock */ kmutex_t *ks_lock; /* kstat data lock */ kstat_raw_ops_t ks_raw_ops; /* ops table for raw type */ char *ks_raw_buf; /* buf used for raw ops */ size_t ks_raw_bufsize; /* size of raw ops buffer */ kstat_proc_entry_t ks_proc; /* data for procfs entry */ }; typedef struct kstat_named_s { char name[KSTAT_STRLEN]; /* name of counter */ uchar_t data_type; /* data type */ union { char c[16]; /* 128-bit int */ int32_t i32; /* 32-bit signed int */ uint32_t ui32; /* 32-bit unsigned int */ int64_t i64; /* 64-bit signed int */ uint64_t ui64; /* 64-bit unsigned int */ long l; /* native signed long */ ulong_t ul; /* native unsigned long */ struct { union { char *ptr; /* NULL-term string */ char __pad[8]; /* 64-bit padding */ } addr; uint32_t len; /* # bytes for strlen + '\0' */ } string; } value; } kstat_named_t; #define KSTAT_NAMED_STR_PTR(knptr) ((knptr)->value.string.addr.ptr) #define KSTAT_NAMED_STR_BUFLEN(knptr) ((knptr)->value.string.len) typedef struct kstat_intr { uint_t intrs[KSTAT_NUM_INTRS]; } kstat_intr_t; typedef struct kstat_io { u_longlong_t nread; /* number of bytes read */ u_longlong_t nwritten; /* number of bytes written */ uint_t reads; /* number of read operations */ uint_t writes; /* number of write operations */ hrtime_t wtime; /* cumulative wait (pre-service) time */ hrtime_t wlentime; /* cumulative wait len*time product */ hrtime_t wlastupdate; /* last time wait queue changed */ hrtime_t rtime; /* cumulative run (service) time */ hrtime_t rlentime; /* cumulative run length*time product */ hrtime_t rlastupdate; /* last time run queue changed */ uint_t wcnt; /* count of elements in wait state */ uint_t rcnt; /* count of elements in run state */ } kstat_io_t; typedef struct kstat_timer { char name[KSTAT_STRLEN+1]; /* event name */ u_longlong_t num_events; /* number of events */ hrtime_t elapsed_time; /* cumulative elapsed time */ hrtime_t min_time; /* shortest event duration */ hrtime_t max_time; /* longest event duration */ hrtime_t start_time; /* previous event start time */ hrtime_t stop_time; /* previous event stop time */ } kstat_timer_t; int spl_kstat_init(void); void spl_kstat_fini(void); extern void __kstat_set_raw_ops(kstat_t *ksp, int (*headers)(char *buf, size_t size), int (*data)(char *buf, size_t size, void *data), void* (*addr)(kstat_t *ksp, loff_t index)); extern kstat_t *__kstat_create(const char *ks_module, int ks_instance, const char *ks_name, const char *ks_class, uchar_t ks_type, uint_t ks_ndata, uchar_t ks_flags); extern void kstat_proc_entry_init(kstat_proc_entry_t *kpep, const char *module, const char *name); extern void kstat_proc_entry_delete(kstat_proc_entry_t *kpep); extern void kstat_proc_entry_install(kstat_proc_entry_t *kpep, mode_t mode, const struct file_operations *file_ops, void *data); extern void __kstat_install(kstat_t *ksp); extern void __kstat_delete(kstat_t *ksp); extern void kstat_waitq_enter(kstat_io_t *); extern void kstat_waitq_exit(kstat_io_t *); extern void kstat_runq_enter(kstat_io_t *); extern void kstat_runq_exit(kstat_io_t *); #define kstat_set_raw_ops(k, h, d, a) \ __kstat_set_raw_ops(k, h, d, a) #define kstat_create(m, i, n, c, t, s, f) \ __kstat_create(m, i, n, c, t, s, f) #define kstat_install(k) __kstat_install(k) #define kstat_delete(k) __kstat_delete(k) #endif /* _SPL_KSTAT_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/types32.h0000644000000000000000000000007413607166147020147 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.281419558 zfs-0.8.3/include/spl/sys/types32.h0000644016037001603700000000235213607166147020146 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_TYPES32_H #define _SPL_TYPES32_H #include typedef uint32_t caddr32_t; typedef int32_t daddr32_t; typedef int32_t time32_t; typedef uint32_t size32_t; #endif /* _SPL_TYPES32_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/vfs.h0000644000000000000000000000007413607166147017434 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.290419849 zfs-0.8.3/include/spl/sys/vfs.h0000644016037001603700000000302613607166147017432 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_ZFS_H #define _SPL_ZFS_H #include #include #include #include #include #include #include #define MAXFIDSZ 64 typedef struct spl_fid { union { long fid_pad; struct { ushort_t len; /* length of data in bytes */ char data[MAXFIDSZ]; /* data (variable len) */ } _fid; } un; } fid_t; #define fid_len un._fid.len #define fid_data un._fid.data #endif /* SPL_ZFS_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/uio.h0000644000000000000000000000007413607166147017432 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.285419689 zfs-0.8.3/include/spl/sys/uio.h0000644016037001603700000000476313607166147017441 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Copyright (c) 2015 by Chunwei Chen. All rights reserved. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_UIO_H #define _SPL_UIO_H #include #include #include #include typedef struct iovec iovec_t; typedef enum uio_rw { UIO_READ = 0, UIO_WRITE = 1, } uio_rw_t; typedef enum uio_seg { UIO_USERSPACE = 0, UIO_SYSSPACE = 1, UIO_USERISPACE = 2, UIO_BVEC = 3, } uio_seg_t; typedef struct uio { union { const struct iovec *uio_iov; const struct bio_vec *uio_bvec; }; int uio_iovcnt; offset_t uio_loffset; uio_seg_t uio_segflg; boolean_t uio_fault_disable; uint16_t uio_fmode; uint16_t uio_extflg; offset_t uio_limit; ssize_t uio_resid; size_t uio_skip; } uio_t; typedef struct aio_req { uio_t *aio_uio; void *aio_private; } aio_req_t; typedef enum xuio_type { UIOTYPE_ASYNCIO, UIOTYPE_ZEROCOPY, } xuio_type_t; #define UIOA_IOV_MAX 16 typedef struct uioa_page_s { int uioa_pfncnt; void **uioa_ppp; caddr_t uioa_base; size_t uioa_len; } uioa_page_t; typedef struct xuio { uio_t xu_uio; enum xuio_type xu_type; union { struct { uint32_t xu_a_state; ssize_t xu_a_mbytes; uioa_page_t *xu_a_lcur; void **xu_a_lppp; void *xu_a_hwst[4]; uioa_page_t xu_a_locked[UIOA_IOV_MAX]; } xu_aio; struct { int xu_zc_rw; void *xu_zc_priv; } xu_zc; } xu_ext; } xuio_t; #define XUIO_XUZC_PRIV(xuio) xuio->xu_ext.xu_zc.xu_zc_priv #define XUIO_XUZC_RW(xuio) xuio->xu_ext.xu_zc.xu_zc_rw #endif /* SPL_UIO_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/disp.h0000644000000000000000000000007413607166147017575 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.208417214 zfs-0.8.3/include/spl/sys/disp.h0000644016037001603700000000236213607166147017575 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_DISP_H #define _SPL_DISP_H #include #define kpreempt(unused) schedule() #define kpreempt_disable() preempt_disable() #define kpreempt_enable() preempt_enable() #endif /* SPL_DISP_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/taskq.h0000644000000000000000000000007413607166147017761 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.269419174 zfs-0.8.3/include/spl/sys/taskq.h0000644016037001603700000001270213607166147017760 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_TASKQ_H #define _SPL_TASKQ_H #include #include #include #include #include #include #include #include #include #define TASKQ_NAMELEN 31 #define TASKQ_PREPOPULATE 0x00000001 #define TASKQ_CPR_SAFE 0x00000002 #define TASKQ_DYNAMIC 0x00000004 #define TASKQ_THREADS_CPU_PCT 0x00000008 #define TASKQ_DC_BATCH 0x00000010 #define TASKQ_ACTIVE 0x80000000 /* * Flags for taskq_dispatch. TQ_SLEEP/TQ_NOSLEEP should be same as * KM_SLEEP/KM_NOSLEEP. TQ_NOQUEUE/TQ_NOALLOC are set particularly * large so as not to conflict with already used GFP_* defines. */ #define TQ_SLEEP 0x00000000 #define TQ_NOSLEEP 0x00000001 #define TQ_PUSHPAGE 0x00000002 #define TQ_NOQUEUE 0x01000000 #define TQ_NOALLOC 0x02000000 #define TQ_NEW 0x04000000 #define TQ_FRONT 0x08000000 /* * Reserved taskqid values. */ #define TASKQID_INVALID ((taskqid_t)0) #define TASKQID_INITIAL ((taskqid_t)1) /* * spin_lock(lock) and spin_lock_nested(lock,0) are equivalent, * so TQ_LOCK_DYNAMIC must not evaluate to 0 */ typedef enum tq_lock_role { TQ_LOCK_GENERAL = 0, TQ_LOCK_DYNAMIC = 1, } tq_lock_role_t; typedef unsigned long taskqid_t; typedef void (task_func_t)(void *); typedef struct taskq { spinlock_t tq_lock; /* protects taskq_t */ char *tq_name; /* taskq name */ int tq_instance; /* instance of tq_name */ struct list_head tq_thread_list; /* list of all threads */ struct list_head tq_active_list; /* list of active threads */ int tq_nactive; /* # of active threads */ int tq_nthreads; /* # of existing threads */ int tq_nspawn; /* # of threads being spawned */ int tq_maxthreads; /* # of threads maximum */ int tq_pri; /* priority */ int tq_minalloc; /* min taskq_ent_t pool size */ int tq_maxalloc; /* max taskq_ent_t pool size */ int tq_nalloc; /* cur taskq_ent_t pool size */ uint_t tq_flags; /* flags */ taskqid_t tq_next_id; /* next pend/work id */ taskqid_t tq_lowest_id; /* lowest pend/work id */ struct list_head tq_free_list; /* free taskq_ent_t's */ struct list_head tq_pend_list; /* pending taskq_ent_t's */ struct list_head tq_prio_list; /* priority taskq_ent_t's */ struct list_head tq_delay_list; /* delayed taskq_ent_t's */ struct list_head tq_taskqs; /* all taskq_t's */ spl_wait_queue_head_t tq_work_waitq; /* new work waitq */ spl_wait_queue_head_t tq_wait_waitq; /* wait waitq */ tq_lock_role_t tq_lock_class; /* class when taking tq_lock */ } taskq_t; typedef struct taskq_ent { spinlock_t tqent_lock; spl_wait_queue_head_t tqent_waitq; struct timer_list tqent_timer; struct list_head tqent_list; taskqid_t tqent_id; task_func_t *tqent_func; void *tqent_arg; taskq_t *tqent_taskq; uintptr_t tqent_flags; unsigned long tqent_birth; } taskq_ent_t; #define TQENT_FLAG_PREALLOC 0x1 #define TQENT_FLAG_CANCEL 0x2 typedef struct taskq_thread { struct list_head tqt_thread_list; struct list_head tqt_active_list; struct task_struct *tqt_thread; taskq_t *tqt_tq; taskqid_t tqt_id; taskq_ent_t *tqt_task; uintptr_t tqt_flags; } taskq_thread_t; /* Global system-wide dynamic task queue available for all consumers */ extern taskq_t *system_taskq; /* Global dynamic task queue for long delay */ extern taskq_t *system_delay_taskq; /* List of all taskqs */ extern struct list_head tq_list; extern struct rw_semaphore tq_list_sem; extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); extern taskqid_t taskq_dispatch_delay(taskq_t *, task_func_t, void *, uint_t, clock_t); extern void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, taskq_ent_t *); extern int taskq_empty_ent(taskq_ent_t *); extern void taskq_init_ent(taskq_ent_t *); extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); extern void taskq_destroy(taskq_t *); extern void taskq_wait_id(taskq_t *, taskqid_t); extern void taskq_wait_outstanding(taskq_t *, taskqid_t); extern void taskq_wait(taskq_t *); extern int taskq_cancel_id(taskq_t *, taskqid_t); extern int taskq_member(taskq_t *, kthread_t *); #define taskq_create_proc(name, nthreads, pri, min, max, proc, flags) \ taskq_create(name, nthreads, pri, min, max, flags) #define taskq_create_sysdc(name, nthreads, min, max, proc, dc, flags) \ taskq_create(name, nthreads, maxclsyspri, min, max, flags) int spl_taskq_init(void); void spl_taskq_fini(void); #endif /* _SPL_TASKQ_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/vmsystm.h0000644000000000000000000000007413607166147020360 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.294419977 zfs-0.8.3/include/spl/sys/vmsystm.h0000644016037001603700000000504513607166147020361 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_VMSYSTM_H #define _SPL_VMSYSTM_H #include #include #include #include #include #include #include #ifdef HAVE_TOTALRAM_PAGES_FUNC #define zfs_totalram_pages totalram_pages() #else #define zfs_totalram_pages totalram_pages #endif #ifdef HAVE_TOTALHIGH_PAGES #define zfs_totalhigh_pages totalhigh_pages() #else #define zfs_totalhigh_pages totalhigh_pages #endif #define membar_producer() smp_wmb() #define physmem zfs_totalram_pages #define freemem (nr_free_pages() + \ global_page_state(NR_INACTIVE_FILE) + \ global_page_state(NR_INACTIVE_ANON) + \ global_page_state(NR_SLAB_RECLAIMABLE)) #define xcopyin(from, to, size) copy_from_user(to, from, size) #define xcopyout(from, to, size) copy_to_user(to, from, size) static __inline__ int copyin(const void *from, void *to, size_t len) { /* On error copyin routine returns -1 */ if (xcopyin(from, to, len)) return (-1); return (0); } static __inline__ int copyout(const void *from, void *to, size_t len) { /* On error copyout routine returns -1 */ if (xcopyout(from, to, len)) return (-1); return (0); } static __inline__ int copyinstr(const void *from, void *to, size_t len, size_t *done) { size_t rc; if (len == 0) return (-ENAMETOOLONG); /* XXX: Should return ENAMETOOLONG if 'strlen(from) > len' */ memset(to, 0, len); rc = copyin(from, to, len - 1); if (done != NULL) *done = rc; return (0); } #endif /* SPL_VMSYSTM_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/kobj.h0000644000000000000000000000007413607166147017563 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.228417857 zfs-0.8.3/include/spl/sys/kobj.h0000644016037001603700000000267613607166147017573 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_KOBJ_H #define _SPL_KOBJ_H #include typedef struct _buf { vnode_t *vp; } _buf_t; typedef struct _buf buf_t; extern struct _buf *kobj_open_file(const char *name); extern void kobj_close_file(struct _buf *file); extern int kobj_read_file(struct _buf *file, char *buf, unsigned size, unsigned off); extern int kobj_get_filesize(struct _buf *file, uint64_t *size); #endif /* SPL_KOBJ_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/time.h0000644000000000000000000000007413607166147017574 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.274419334 zfs-0.8.3/include/spl/sys/time.h0000644016037001603700000000570713607166147017602 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_TIME_H #define _SPL_TIME_H #include #include #include #include #if defined(CONFIG_64BIT) #define TIME_MAX INT64_MAX #define TIME_MIN INT64_MIN #else #define TIME_MAX INT32_MAX #define TIME_MIN INT32_MIN #endif #define SEC 1 #define MILLISEC 1000 #define MICROSEC 1000000 #define NANOSEC 1000000000 #define MSEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / MILLISEC)) #define NSEC2MSEC(n) ((n) / (NANOSEC / MILLISEC)) #define USEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / MICROSEC)) #define NSEC2USEC(n) ((n) / (NANOSEC / MICROSEC)) #define NSEC2SEC(n) ((n) / (NANOSEC / SEC)) #define SEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / SEC)) static const int hz = HZ; typedef longlong_t hrtime_t; typedef struct timespec timespec_t; #define TIMESPEC_OVERFLOW(ts) \ ((ts)->tv_sec < TIME_MIN || (ts)->tv_sec > TIME_MAX) #if defined(HAVE_INODE_TIMESPEC64_TIMES) typedef struct timespec64 inode_timespec_t; #else typedef struct timespec inode_timespec_t; #endif /* Include for Lustre compatibility */ #define timestruc_t inode_timespec_t static inline void gethrestime(inode_timespec_t *ts) { #if defined(HAVE_INODE_TIMESPEC64_TIMES) #if defined(HAVE_KTIME_GET_COARSE_REAL_TS64) ktime_get_coarse_real_ts64(ts); #else *ts = current_kernel_time64(); #endif /* HAVE_KTIME_GET_COARSE_REAL_TS64 */ #else *ts = current_kernel_time(); #endif } static inline time_t gethrestime_sec(void) { #if defined(HAVE_INODE_TIMESPEC64_TIMES) #if defined(HAVE_KTIME_GET_COARSE_REAL_TS64) inode_timespec_t ts; ktime_get_coarse_real_ts64(&ts); #else inode_timespec_t ts = current_kernel_time64(); #endif /* HAVE_KTIME_GET_COARSE_REAL_TS64 */ #else inode_timespec_t ts = current_kernel_time(); #endif return (ts.tv_sec); } static inline hrtime_t gethrtime(void) { struct timespec ts; getrawmonotonic(&ts); return (((hrtime_t)ts.tv_sec * NSEC_PER_SEC) + ts.tv_nsec); } #endif /* _SPL_TIME_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/file.h0000644000000000000000000000007413607166147017555 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.217417505 zfs-0.8.3/include/spl/sys/file.h0000644016037001603700000000421413607166147017553 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_FILE_H #define _SPL_FILE_H #define FIGNORECASE 0x00080000 #define FKIOCTL 0x80000000 #define ED_CASE_CONFLICT 0x10 #ifdef HAVE_INODE_LOCK_SHARED #define spl_inode_lock(ip) inode_lock(ip) #define spl_inode_unlock(ip) inode_unlock(ip) #define spl_inode_lock_shared(ip) inode_lock_shared(ip) #define spl_inode_unlock_shared(ip) inode_unlock_shared(ip) #define spl_inode_trylock(ip) inode_trylock(ip) #define spl_inode_trylock_shared(ip) inode_trylock_shared(ip) #define spl_inode_is_locked(ip) inode_is_locked(ip) #define spl_inode_lock_nested(ip, s) inode_lock_nested(ip, s) #else #define spl_inode_lock(ip) mutex_lock(&(ip)->i_mutex) #define spl_inode_unlock(ip) mutex_unlock(&(ip)->i_mutex) #define spl_inode_lock_shared(ip) mutex_lock(&(ip)->i_mutex) #define spl_inode_unlock_shared(ip) mutex_unlock(&(ip)->i_mutex) #define spl_inode_trylock(ip) mutex_trylock(&(ip)->i_mutex) #define spl_inode_trylock_shared(ip) mutex_trylock(&(ip)->i_mutex) #define spl_inode_is_locked(ip) mutex_is_locked(&(ip)->i_mutex) #define spl_inode_lock_nested(ip, s) mutex_lock_nested(&(ip)->i_mutex, s) #endif #endif /* SPL_FILE_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/user.h0000644000000000000000000000007413607166147017614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.287419753 zfs-0.8.3/include/spl/sys/user.h0000644016037001603700000000302013607166147017604 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2015 Cluster Inc. * Produced at ClusterHQ Inc (cf, DISCLAIMER). * Written by Richard Yao . * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_USER_H #define _SPL_USER_H /* * We have uf_info_t for areleasef(). We implement areleasef() using a global * linked list of all open file descriptors with the task structs referenced, * so accessing the correct descriptor from areleasef() only requires knowing * about the Linux task_struct. Since this is internal to our compatibility * layer, we make it an opaque type. * * XXX: If the descriptor changes under us and we do not do a getf() between * the change and using it, we would get an incorrect reference. */ struct uf_info; typedef struct uf_info uf_info_t; #define P_FINFO(x) ((uf_info_t *)x) #endif /* SPL_USER_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/rwlock.h0000644000000000000000000000007413607166147020137 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.249418532 zfs-0.8.3/include/spl/sys/rwlock.h0000644016037001603700000001135413607166147020140 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_RWLOCK_H #define _SPL_RWLOCK_H #include #include #include typedef enum { RW_DRIVER = 2, RW_DEFAULT = 4, RW_NOLOCKDEP = 5 } krw_type_t; typedef enum { RW_NONE = 0, RW_WRITER = 1, RW_READER = 2 } krw_t; typedef struct { struct rw_semaphore rw_rwlock; kthread_t *rw_owner; #ifdef CONFIG_LOCKDEP krw_type_t rw_type; #endif /* CONFIG_LOCKDEP */ } krwlock_t; #define SEM(rwp) (&(rwp)->rw_rwlock) static inline void spl_rw_set_owner(krwlock_t *rwp) { rwp->rw_owner = current; } static inline void spl_rw_clear_owner(krwlock_t *rwp) { rwp->rw_owner = NULL; } static inline kthread_t * rw_owner(krwlock_t *rwp) { return (rwp->rw_owner); } #ifdef CONFIG_LOCKDEP static inline void spl_rw_set_type(krwlock_t *rwp, krw_type_t type) { rwp->rw_type = type; } static inline void spl_rw_lockdep_off_maybe(krwlock_t *rwp) \ { \ if (rwp && rwp->rw_type == RW_NOLOCKDEP) \ lockdep_off(); \ } static inline void spl_rw_lockdep_on_maybe(krwlock_t *rwp) \ { \ if (rwp && rwp->rw_type == RW_NOLOCKDEP) \ lockdep_on(); \ } #else /* CONFIG_LOCKDEP */ #define spl_rw_set_type(rwp, type) #define spl_rw_lockdep_off_maybe(rwp) #define spl_rw_lockdep_on_maybe(rwp) #endif /* CONFIG_LOCKDEP */ static inline int RW_LOCK_HELD(krwlock_t *rwp) { return (rwsem_is_locked(SEM(rwp))); } static inline int RW_WRITE_HELD(krwlock_t *rwp) { return (rw_owner(rwp) == current); } static inline int RW_READ_HELD(krwlock_t *rwp) { return (RW_LOCK_HELD(rwp) && rw_owner(rwp) == NULL); } /* * The following functions must be a #define and not static inline. * This ensures that the native linux semaphore functions (down/up) * will be correctly located in the users code which is important * for the built in kernel lock analysis tools */ /* BEGIN CSTYLED */ #define rw_init(rwp, name, type, arg) \ ({ \ static struct lock_class_key __key; \ ASSERT(type == RW_DEFAULT || type == RW_NOLOCKDEP); \ \ __init_rwsem(SEM(rwp), #rwp, &__key); \ spl_rw_clear_owner(rwp); \ spl_rw_set_type(rwp, type); \ }) /* * The Linux rwsem implementation does not require a matching destroy. */ #define rw_destroy(rwp) ((void) 0) /* * Upgrading a rwsem from a reader to a writer is not supported by the * Linux kernel. The lock must be dropped and reacquired as a writer. */ #define rw_tryupgrade(rwp) RW_WRITE_HELD(rwp) #define rw_tryenter(rwp, rw) \ ({ \ int _rc_ = 0; \ \ spl_rw_lockdep_off_maybe(rwp); \ switch (rw) { \ case RW_READER: \ _rc_ = down_read_trylock(SEM(rwp)); \ break; \ case RW_WRITER: \ if ((_rc_ = down_write_trylock(SEM(rwp)))) \ spl_rw_set_owner(rwp); \ break; \ default: \ VERIFY(0); \ } \ spl_rw_lockdep_on_maybe(rwp); \ _rc_; \ }) #define rw_enter(rwp, rw) \ ({ \ spl_rw_lockdep_off_maybe(rwp); \ switch (rw) { \ case RW_READER: \ down_read(SEM(rwp)); \ break; \ case RW_WRITER: \ down_write(SEM(rwp)); \ spl_rw_set_owner(rwp); \ break; \ default: \ VERIFY(0); \ } \ spl_rw_lockdep_on_maybe(rwp); \ }) #define rw_exit(rwp) \ ({ \ spl_rw_lockdep_off_maybe(rwp); \ if (RW_WRITE_HELD(rwp)) { \ spl_rw_clear_owner(rwp); \ up_write(SEM(rwp)); \ } else { \ ASSERT(RW_READ_HELD(rwp)); \ up_read(SEM(rwp)); \ } \ spl_rw_lockdep_on_maybe(rwp); \ }) #define rw_downgrade(rwp) \ ({ \ spl_rw_lockdep_off_maybe(rwp); \ spl_rw_clear_owner(rwp); \ downgrade_write(SEM(rwp)); \ spl_rw_lockdep_on_maybe(rwp); \ }) /* END CSTYLED */ #endif /* _SPL_RWLOCK_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/systeminfo.h0000644000000000000000000000007313607166147021035 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.26741911 zfs-0.8.3/include/spl/sys/systeminfo.h0000644016037001603700000000263413607166147021040 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_SYSTEMINFO_H #define _SPL_SYSTEMINFO_H #define HW_HOSTID_LEN 11 /* minimum buffer size needed */ /* to hold a decimal or hex */ /* hostid string */ /* Supplemental definitions for Linux. */ #define HW_HOSTID_PATH "/etc/hostid" /* binary configuration file */ #define HW_HOSTID_MASK 0xFFFFFFFF /* significant hostid bits */ #endif /* SPL_SYSTEMINFO_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/tsd.h0000644000000000000000000000007413607166147017430 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.278419462 zfs-0.8.3/include/spl/sys/tsd.h0000644016037001603700000000276113607166147017433 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2010 Lawrence Livermore National Security, LLC. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_TSD_H #define _SPL_TSD_H #include #define TSD_HASH_TABLE_BITS_DEFAULT 9 #define TSD_KEYS_MAX 32768 #define DTOR_PID (PID_MAX_LIMIT+1) #define PID_KEY (TSD_KEYS_MAX+1) typedef void (*dtor_func_t)(void *); extern int tsd_set(uint_t, void *); extern void *tsd_get(uint_t); extern void *tsd_get_by_thread(uint_t, kthread_t *); extern void tsd_create(uint_t *, dtor_func_t); extern void tsd_destroy(uint_t *); extern void tsd_exit(void); int spl_tsd_init(void); void spl_tsd_fini(void); #endif /* _SPL_TSD_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/vnode.h0000644000000000000000000000007413607166147017751 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.296420041 zfs-0.8.3/include/spl/sys/vnode.h0000644016037001603700000001403313607166147017747 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_VNODE_H #define _SPL_VNODE_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* * Prior to linux-2.6.33 only O_DSYNC semantics were implemented and * they used the O_SYNC flag. As of linux-2.6.33 the this behavior * was properly split in to O_SYNC and O_DSYNC respectively. */ #ifndef O_DSYNC #define O_DSYNC O_SYNC #endif #define FREAD 1 #define FWRITE 2 #define FCREAT O_CREAT #define FTRUNC O_TRUNC #define FOFFMAX O_LARGEFILE #define FSYNC O_SYNC #define FDSYNC O_DSYNC #define FEXCL O_EXCL #define FDIRECT O_DIRECT #define FAPPEND O_APPEND #define FNODSYNC 0x10000 /* fsync pseudo flag */ #define FNOFOLLOW 0x20000 /* don't follow symlinks */ #define F_FREESP 11 /* Free file space */ /* * The vnode AT_ flags are mapped to the Linux ATTR_* flags. * This allows them to be used safely with an iattr structure. * The AT_XVATTR flag has been added and mapped to the upper * bit range to avoid conflicting with the standard Linux set. */ #undef AT_UID #undef AT_GID #define AT_MODE ATTR_MODE #define AT_UID ATTR_UID #define AT_GID ATTR_GID #define AT_SIZE ATTR_SIZE #define AT_ATIME ATTR_ATIME #define AT_MTIME ATTR_MTIME #define AT_CTIME ATTR_CTIME #define ATTR_XVATTR (1U << 31) #define AT_XVATTR ATTR_XVATTR #define ATTR_IATTR_MASK (ATTR_MODE | ATTR_UID | ATTR_GID | ATTR_SIZE | \ ATTR_ATIME | ATTR_MTIME | ATTR_CTIME | ATTR_FILE) #define CRCREAT 0x01 #define RMFILE 0x02 #define B_INVAL 0x01 #define B_TRUNC 0x02 #define LOOKUP_DIR 0x01 #define LOOKUP_XATTR 0x02 #define CREATE_XATTR_DIR 0x04 #define ATTR_NOACLCHECK 0x20 typedef enum vtype { VNON = 0, VREG = 1, VDIR = 2, VBLK = 3, VCHR = 4, VLNK = 5, VFIFO = 6, VDOOR = 7, VPROC = 8, VSOCK = 9, VPORT = 10, VBAD = 11 } vtype_t; typedef struct vattr { enum vtype va_type; /* vnode type */ uint32_t va_mask; /* attribute bit-mask */ ushort_t va_mode; /* acc mode */ uid_t va_uid; /* owner uid */ gid_t va_gid; /* owner gid */ long va_fsid; /* fs id */ long va_nodeid; /* node # */ uint32_t va_nlink; /* # links */ uint64_t va_size; /* file size */ inode_timespec_t va_atime; /* last acc */ inode_timespec_t va_mtime; /* last mod */ inode_timespec_t va_ctime; /* last chg */ dev_t va_rdev; /* dev */ uint64_t va_nblocks; /* space used */ uint32_t va_blksize; /* block size */ uint32_t va_seq; /* sequence */ struct dentry *va_dentry; /* dentry to wire */ } vattr_t; typedef struct vnode { struct file *v_file; kmutex_t v_lock; /* protects vnode fields */ uint_t v_flag; /* vnode flags (see below) */ uint_t v_count; /* reference count */ void *v_data; /* private data for fs */ struct vfs *v_vfsp; /* ptr to containing VFS */ struct stdata *v_stream; /* associated stream */ enum vtype v_type; /* vnode type */ dev_t v_rdev; /* device (VCHR, VBLK) */ gfp_t v_gfp_mask; /* original mapping gfp mask */ } vnode_t; typedef struct vn_file { int f_fd; /* linux fd for lookup */ struct task_struct *f_task; /* linux task this fd belongs to */ struct file *f_file; /* linux file struct */ atomic_t f_ref; /* ref count */ kmutex_t f_lock; /* struct lock */ loff_t f_offset; /* offset */ vnode_t *f_vnode; /* vnode */ struct list_head f_list; /* list referenced file_t's */ } file_t; extern vnode_t *vn_alloc(int flag); void vn_free(vnode_t *vp); extern vtype_t vn_mode_to_vtype(mode_t); extern mode_t vn_vtype_to_mode(vtype_t); extern int vn_open(const char *path, uio_seg_t seg, int flags, int mode, vnode_t **vpp, int x1, void *x2); extern int vn_openat(const char *path, uio_seg_t seg, int flags, int mode, vnode_t **vpp, int x1, void *x2, vnode_t *vp, int fd); extern int vn_rdwr(uio_rw_t uio, vnode_t *vp, void *addr, ssize_t len, offset_t off, uio_seg_t seg, int x1, rlim64_t x2, void *x3, ssize_t *residp); extern int vn_close(vnode_t *vp, int flags, int x1, int x2, void *x3, void *x4); extern int vn_seek(vnode_t *vp, offset_t o, offset_t *op, void *ct); extern int vn_getattr(vnode_t *vp, vattr_t *vap, int flags, void *x3, void *x4); extern int vn_fsync(vnode_t *vp, int flags, void *x3, void *x4); extern int vn_space(vnode_t *vp, int cmd, struct flock *bfp, int flag, offset_t offset, void *x6, void *x7); extern file_t *vn_getf(int fd); extern void vn_releasef(int fd); extern void vn_areleasef(int fd, uf_info_t *fip); int spl_vn_init(void); void spl_vn_fini(void); #define VOP_CLOSE vn_close #define VOP_SEEK vn_seek #define VOP_GETATTR vn_getattr #define VOP_FSYNC vn_fsync #define VOP_SPACE vn_space #define VOP_PUTPAGE(vp, o, s, f, x1, x2) ((void)0) #define vn_is_readonly(vp) 0 #define getf vn_getf #define releasef vn_releasef #define areleasef vn_areleasef extern vnode_t *rootdir; #endif /* SPL_VNODE_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/list.h0000644000000000000000000000007413607166147017611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.233418017 zfs-0.8.3/include/spl/sys/list.h0000644016037001603700000001216713607166147017615 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_LIST_H #define _SPL_LIST_H #include #include /* * NOTE: I have implemented the Solaris list API in terms of the native * linux API. This has certain advantages in terms of leveraging the linux * list debugging infrastructure, but it also means that the internals of a * list differ slightly than on Solaris. This is not a problem as long as * all callers stick to the published API. The two major differences are: * * 1) A list_node_t is mapped to a linux list_head struct which changes * the name of the list_next/list_prev pointers to next/prev respectively. * * 2) A list_node_t which is not attached to a list on Solaris is denoted * by having its list_next/list_prev pointers set to NULL. Under linux * the next/prev pointers are set to LIST_POISON1 and LIST_POISON2 * respectively. At this moment this only impacts the implementation * of the list_link_init() and list_link_active() functions. */ typedef struct list_head list_node_t; typedef struct list { size_t list_size; size_t list_offset; list_node_t list_head; } list_t; #define list_d2l(a, obj) ((list_node_t *)(((char *)obj) + (a)->list_offset)) #define list_object(a, node) ((void *)(((char *)node) - (a)->list_offset)) static inline int list_is_empty(list_t *list) { return (list_empty(&list->list_head)); } static inline void list_link_init(list_node_t *node) { node->next = LIST_POISON1; node->prev = LIST_POISON2; } static inline void list_create(list_t *list, size_t size, size_t offset) { list->list_size = size; list->list_offset = offset; INIT_LIST_HEAD(&list->list_head); } static inline void list_destroy(list_t *list) { list_del(&list->list_head); } static inline void list_insert_head(list_t *list, void *object) { list_add(list_d2l(list, object), &list->list_head); } static inline void list_insert_tail(list_t *list, void *object) { list_add_tail(list_d2l(list, object), &list->list_head); } static inline void list_insert_after(list_t *list, void *object, void *nobject) { if (object == NULL) list_insert_head(list, nobject); else list_add(list_d2l(list, nobject), list_d2l(list, object)); } static inline void list_insert_before(list_t *list, void *object, void *nobject) { if (object == NULL) list_insert_tail(list, nobject); else list_add_tail(list_d2l(list, nobject), list_d2l(list, object)); } static inline void list_remove(list_t *list, void *object) { list_del(list_d2l(list, object)); } static inline void * list_remove_head(list_t *list) { list_node_t *head = list->list_head.next; if (head == &list->list_head) return (NULL); list_del(head); return (list_object(list, head)); } static inline void * list_remove_tail(list_t *list) { list_node_t *tail = list->list_head.prev; if (tail == &list->list_head) return (NULL); list_del(tail); return (list_object(list, tail)); } static inline void * list_head(list_t *list) { if (list_is_empty(list)) return (NULL); return (list_object(list, list->list_head.next)); } static inline void * list_tail(list_t *list) { if (list_is_empty(list)) return (NULL); return (list_object(list, list->list_head.prev)); } static inline void * list_next(list_t *list, void *object) { list_node_t *node = list_d2l(list, object); if (node->next != &list->list_head) return (list_object(list, node->next)); return (NULL); } static inline void * list_prev(list_t *list, void *object) { list_node_t *node = list_d2l(list, object); if (node->prev != &list->list_head) return (list_object(list, node->prev)); return (NULL); } static inline int list_link_active(list_node_t *node) { return (node->next != LIST_POISON1) && (node->prev != LIST_POISON2); } static inline void spl_list_move_tail(list_t *dst, list_t *src) { list_splice_init(&src->list_head, dst->list_head.prev); } #define list_move_tail(dst, src) spl_list_move_tail(dst, src) static inline void list_link_replace(list_node_t *old_node, list_node_t *new_node) { new_node->next = old_node->next; new_node->prev = old_node->prev; old_node->prev->next = new_node; old_node->next->prev = new_node; list_link_init(old_node); } #endif /* SPL_LIST_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/mode.h0000644000000000000000000000007413607166147017562 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.235418081 zfs-0.8.3/include/spl/sys/mode.h0000644016037001603700000000235213607166147017561 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_MODE_H #define _SPL_MODE_H #define IFTOVT(mode) vn_mode_to_vtype(mode) #define VTTOIF(vtype) vn_vtype_to_mode(vtype) #define MAKEIMODE(T, M) (VTTOIF(T) | ((M) & ~S_IFMT)) #endif /* SPL_MODE_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/wait.h0000644000000000000000000000007413607166147017602 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.298420105 zfs-0.8.3/include/spl/sys/wait.h0000644016037001603700000000326113607166147017601 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2014 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_WAIT_H #define _SPL_WAIT_H #include #include #ifndef HAVE_WAIT_ON_BIT_ACTION #define spl_wait_on_bit(word, bit, mode) wait_on_bit(word, bit, mode) #else static inline int spl_bit_wait(void *word) { schedule(); return (0); } #define spl_wait_on_bit(word, bit, mode) \ wait_on_bit(word, bit, spl_bit_wait, mode) #endif /* HAVE_WAIT_ON_BIT_ACTION */ #ifdef HAVE_WAIT_QUEUE_ENTRY_T typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_entry_t spl_wait_queue_entry_t; #else typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_t spl_wait_queue_entry_t; #endif #endif /* SPL_WAIT_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/random.h0000644000000000000000000000007413607166147020116 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.247418468 zfs-0.8.3/include/spl/sys/random.h0000644016037001603700000000252113607166147020113 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_RANDOM_H #define _SPL_RANDOM_H #include #include static __inline__ int random_get_bytes(uint8_t *ptr, size_t len) { get_random_bytes((void *)ptr, (int)len); return (0); } extern int random_get_pseudo_bytes(uint8_t *ptr, size_t len); #endif /* _SPL_RANDOM_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/param.h0000644000000000000000000000007413607166147017736 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.239418212 zfs-0.8.3/include/spl/sys/param.h0000644016037001603700000000241413607166147017734 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_PARAM_H #define _SPL_PARAM_H #include /* Pages to bytes and back */ #define ptob(pages) ((pages) << PAGE_SHIFT) #define btop(bytes) ((bytes) >> PAGE_SHIFT) #define MAXUID UINT32_MAX #endif /* SPL_PARAM_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/vmem.h0000644000000000000000000000007413607166147017602 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.292419913 zfs-0.8.3/include/spl/sys/vmem.h0000644016037001603700000001061513607166147017602 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_VMEM_H #define _SPL_VMEM_H #include #include #include typedef struct vmem { } vmem_t; extern vmem_t *heap_arena; extern vmem_t *zio_alloc_arena; extern vmem_t *zio_arena; extern size_t vmem_size(vmem_t *vmp, int typemask); /* * Memory allocation interfaces */ #define VMEM_ALLOC 0x01 #define VMEM_FREE 0x02 #ifndef VMALLOC_TOTAL #define VMALLOC_TOTAL (VMALLOC_END - VMALLOC_START) #endif /* * vmem_* is an interface to a low level arena-based memory allocator on * Illumos that is used to allocate virtual address space. The kmem SLAB * allocator allocates slabs from it. Then the generic allocation functions * kmem_{alloc,zalloc,free}() are layered on top of SLAB allocators. * * On Linux, the primary means of doing allocations is via kmalloc(), which * is similarly layered on top of something called the buddy allocator. The * buddy allocator is not available to kernel modules, it uses physical * memory addresses rather than virtual memory addresses and is prone to * fragmentation. * * Linux sets aside a relatively small address space for in-kernel virtual * memory from which allocations can be done using vmalloc(). It might seem * like a good idea to use vmalloc() to implement something similar to * Illumos' allocator. However, this has the following problems: * * 1. Page directory table allocations are hard coded to use GFP_KERNEL. * Consequently, any KM_PUSHPAGE or KM_NOSLEEP allocations done using * vmalloc() will not have proper semantics. * * 2. Address space exhaustion is a real issue on 32-bit platforms where * only a few 100MB are available. The kernel will handle it by spinning * when it runs out of address space. * * 3. All vmalloc() allocations and frees are protected by a single global * lock which serializes all allocations. * * 4. Accessing /proc/meminfo and /proc/vmallocinfo will iterate the entire * list. The former will sum the allocations while the latter will print * them to user space in a way that user space can keep the lock held * indefinitely. When the total number of mapped allocations is large * (several 100,000) a large amount of time will be spent waiting on locks. * * 5. Linux has a wait_on_bit() locking primitive that assumes physical * memory is used, it simply does not work on virtual memory. Certain * Linux structures (e.g. the superblock) use them and might be embedded * into a structure from Illumos. This makes using Linux virtual memory * unsafe in certain situations. * * It follows that we cannot obtain identical semantics to those on Illumos. * Consequently, we implement the kmem_{alloc,zalloc,free}() functions in * such a way that they can be used as drop-in replacements for small vmem_* * allocations (8MB in size or smaller) and map vmem_{alloc,zalloc,free}() * to them. */ #define vmem_alloc(sz, fl) spl_vmem_alloc((sz), (fl), __func__, __LINE__) #define vmem_zalloc(sz, fl) spl_vmem_zalloc((sz), (fl), __func__, __LINE__) #define vmem_free(ptr, sz) spl_vmem_free((ptr), (sz)) #define vmem_qcache_reap(ptr) ((void)0) extern void *spl_vmem_alloc(size_t sz, int fl, const char *func, int line); extern void *spl_vmem_zalloc(size_t sz, int fl, const char *func, int line); extern void spl_vmem_free(const void *ptr, size_t sz); int spl_vmem_init(void); void spl_vmem_fini(void); #endif /* _SPL_VMEM_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/debug.h0000644000000000000000000000007313607166147017723 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.20641715 zfs-0.8.3/include/spl/sys/debug.h0000644016037001603700000001340313607166147017722 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ /* * Available Solaris debug functions. All of the ASSERT() macros will be * compiled out when NDEBUG is defined, this is the default behavior for * the SPL. To enable assertions use the --enable-debug with configure. * The VERIFY() functions are never compiled out and cannot be disabled. * * PANIC() - Panic the node and print message. * ASSERT() - Assert X is true, if not panic. * ASSERTV() - Wraps a variable declaration which is only used by ASSERT(). * ASSERT3B() - Assert boolean X OP Y is true, if not panic. * ASSERT3S() - Assert signed X OP Y is true, if not panic. * ASSERT3U() - Assert unsigned X OP Y is true, if not panic. * ASSERT3P() - Assert pointer X OP Y is true, if not panic. * ASSERT0() - Assert value is zero, if not panic. * VERIFY() - Verify X is true, if not panic. * VERIFY3B() - Verify boolean X OP Y is true, if not panic. * VERIFY3S() - Verify signed X OP Y is true, if not panic. * VERIFY3U() - Verify unsigned X OP Y is true, if not panic. * VERIFY3P() - Verify pointer X OP Y is true, if not panic. * VERIFY0() - Verify value is zero, if not panic. */ #ifndef _SPL_DEBUG_H #define _SPL_DEBUG_H /* * Common DEBUG functionality. */ int spl_panic(const char *file, const char *func, int line, const char *fmt, ...); void spl_dumpstack(void); /* BEGIN CSTYLED */ #define PANIC(fmt, a...) \ spl_panic(__FILE__, __FUNCTION__, __LINE__, fmt, ## a) #define VERIFY(cond) \ (void) (unlikely(!(cond)) && \ spl_panic(__FILE__, __FUNCTION__, __LINE__, \ "%s", "VERIFY(" #cond ") failed\n")) #define VERIFY3B(LEFT, OP, RIGHT) do { \ boolean_t _verify3_left = (boolean_t)(LEFT); \ boolean_t _verify3_right = (boolean_t)(RIGHT); \ if (!(_verify3_left OP _verify3_right)) \ spl_panic(__FILE__, __FUNCTION__, __LINE__, \ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \ "failed (%d " #OP " %d)\n", \ (boolean_t) (_verify3_left), \ (boolean_t) (_verify3_right)); \ } while (0) #define VERIFY3S(LEFT, OP, RIGHT) do { \ int64_t _verify3_left = (int64_t)(LEFT); \ int64_t _verify3_right = (int64_t)(RIGHT); \ if (!(_verify3_left OP _verify3_right)) \ spl_panic(__FILE__, __FUNCTION__, __LINE__, \ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \ "failed (%lld " #OP " %lld)\n", \ (long long) (_verify3_left), \ (long long) (_verify3_right)); \ } while (0) #define VERIFY3U(LEFT, OP, RIGHT) do { \ uint64_t _verify3_left = (uint64_t)(LEFT); \ uint64_t _verify3_right = (uint64_t)(RIGHT); \ if (!(_verify3_left OP _verify3_right)) \ spl_panic(__FILE__, __FUNCTION__, __LINE__, \ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \ "failed (%llu " #OP " %llu)\n", \ (unsigned long long) (_verify3_left), \ (unsigned long long) (_verify3_right)); \ } while (0) #define VERIFY3P(LEFT, OP, RIGHT) do { \ uintptr_t _verify3_left = (uintptr_t)(LEFT); \ uintptr_t _verify3_right = (uintptr_t)(RIGHT); \ if (!(_verify3_left OP _verify3_right)) \ spl_panic(__FILE__, __FUNCTION__, __LINE__, \ "VERIFY3(" #LEFT " " #OP " " #RIGHT ") " \ "failed (%px " #OP " %px)\n", \ (void *) (_verify3_left), \ (void *) (_verify3_right)); \ } while (0) #define VERIFY0(RIGHT) do { \ int64_t _verify3_left = (int64_t)(0); \ int64_t _verify3_right = (int64_t)(RIGHT); \ if (!(_verify3_left == _verify3_right)) \ spl_panic(__FILE__, __FUNCTION__, __LINE__, \ "VERIFY3(0 == " #RIGHT ") " \ "failed (0 == %lld)\n", \ (long long) (_verify3_right)); \ } while (0) #define CTASSERT_GLOBAL(x) _CTASSERT(x, __LINE__) #define CTASSERT(x) { _CTASSERT(x, __LINE__); } #define _CTASSERT(x, y) __CTASSERT(x, y) #define __CTASSERT(x, y) \ typedef char __attribute__ ((unused)) \ __compile_time_assertion__ ## y[(x) ? 1 : -1] /* * Debugging disabled (--disable-debug) */ #ifdef NDEBUG #define ASSERT(x) ((void)0) #define ASSERTV(x) #define ASSERT3B(x,y,z) ((void)0) #define ASSERT3S(x,y,z) ((void)0) #define ASSERT3U(x,y,z) ((void)0) #define ASSERT3P(x,y,z) ((void)0) #define ASSERT0(x) ((void)0) #define IMPLY(A, B) ((void)0) #define EQUIV(A, B) ((void)0) /* * Debugging enabled (--enable-debug) */ #else #define ASSERT3B VERIFY3B #define ASSERT3S VERIFY3S #define ASSERT3U VERIFY3U #define ASSERT3P VERIFY3P #define ASSERT0 VERIFY0 #define ASSERT VERIFY #define ASSERTV(x) x #define IMPLY(A, B) \ ((void)(((!(A)) || (B)) || \ spl_panic(__FILE__, __FUNCTION__, __LINE__, \ "(" #A ") implies (" #B ")"))) #define EQUIV(A, B) \ ((void)((!!(A) == !!(B)) || \ spl_panic(__FILE__, __FUNCTION__, __LINE__, \ "(" #A ") is equivalent to (" #B ")"))) /* END CSTYLED */ #endif /* NDEBUG */ #endif /* SPL_DEBUG_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/mutex.h0000644000000000000000000000007413607166147020000 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.237418146 zfs-0.8.3/include/spl/sys/mutex.h0000644016037001603700000001235513607166147020003 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_MUTEX_H #define _SPL_MUTEX_H #include #include #include #include typedef enum { MUTEX_DEFAULT = 0, MUTEX_SPIN = 1, MUTEX_ADAPTIVE = 2, MUTEX_NOLOCKDEP = 3 } kmutex_type_t; typedef struct { struct mutex m_mutex; spinlock_t m_lock; /* used for serializing mutex_exit */ kthread_t *m_owner; #ifdef CONFIG_LOCKDEP kmutex_type_t m_type; #endif /* CONFIG_LOCKDEP */ } kmutex_t; #define MUTEX(mp) (&((mp)->m_mutex)) static inline void spl_mutex_set_owner(kmutex_t *mp) { mp->m_owner = current; } static inline void spl_mutex_clear_owner(kmutex_t *mp) { mp->m_owner = NULL; } #define mutex_owner(mp) (READ_ONCE((mp)->m_owner)) #define mutex_owned(mp) (mutex_owner(mp) == current) #define MUTEX_HELD(mp) mutex_owned(mp) #define MUTEX_NOT_HELD(mp) (!MUTEX_HELD(mp)) #ifdef CONFIG_LOCKDEP static inline void spl_mutex_set_type(kmutex_t *mp, kmutex_type_t type) { mp->m_type = type; } static inline void spl_mutex_lockdep_off_maybe(kmutex_t *mp) \ { \ if (mp && mp->m_type == MUTEX_NOLOCKDEP) \ lockdep_off(); \ } static inline void spl_mutex_lockdep_on_maybe(kmutex_t *mp) \ { \ if (mp && mp->m_type == MUTEX_NOLOCKDEP) \ lockdep_on(); \ } #else /* CONFIG_LOCKDEP */ #define spl_mutex_set_type(mp, type) #define spl_mutex_lockdep_off_maybe(mp) #define spl_mutex_lockdep_on_maybe(mp) #endif /* CONFIG_LOCKDEP */ /* * The following functions must be a #define and not static inline. * This ensures that the native linux mutex functions (lock/unlock) * will be correctly located in the users code which is important * for the built in kernel lock analysis tools */ #undef mutex_init #define mutex_init(mp, name, type, ibc) \ { \ static struct lock_class_key __key; \ ASSERT(type == MUTEX_DEFAULT || type == MUTEX_NOLOCKDEP); \ \ __mutex_init(MUTEX(mp), (name) ? (#name) : (#mp), &__key); \ spin_lock_init(&(mp)->m_lock); \ spl_mutex_clear_owner(mp); \ spl_mutex_set_type(mp, type); \ } #undef mutex_destroy #define mutex_destroy(mp) \ { \ VERIFY3P(mutex_owner(mp), ==, NULL); \ } /* BEGIN CSTYLED */ #define mutex_tryenter(mp) \ ({ \ int _rc_; \ \ spl_mutex_lockdep_off_maybe(mp); \ if ((_rc_ = mutex_trylock(MUTEX(mp))) == 1) \ spl_mutex_set_owner(mp); \ spl_mutex_lockdep_on_maybe(mp); \ \ _rc_; \ }) /* END CSTYLED */ #define NESTED_SINGLE 1 #ifdef CONFIG_DEBUG_LOCK_ALLOC #define mutex_enter_nested(mp, subclass) \ { \ ASSERT3P(mutex_owner(mp), !=, current); \ spl_mutex_lockdep_off_maybe(mp); \ mutex_lock_nested(MUTEX(mp), (subclass)); \ spl_mutex_lockdep_on_maybe(mp); \ spl_mutex_set_owner(mp); \ } #else /* CONFIG_DEBUG_LOCK_ALLOC */ #define mutex_enter_nested(mp, subclass) \ { \ ASSERT3P(mutex_owner(mp), !=, current); \ spl_mutex_lockdep_off_maybe(mp); \ mutex_lock(MUTEX(mp)); \ spl_mutex_lockdep_on_maybe(mp); \ spl_mutex_set_owner(mp); \ } #endif /* CONFIG_DEBUG_LOCK_ALLOC */ #define mutex_enter(mp) mutex_enter_nested((mp), 0) /* * The reason for the spinlock: * * The Linux mutex is designed with a fast-path/slow-path design such that it * does not guarantee serialization upon itself, allowing a race where latter * acquirers finish mutex_unlock before former ones. * * The race renders it unsafe to be used for serializing the freeing of an * object in which the mutex is embedded, where the latter acquirer could go * on to free the object while the former one is still doing mutex_unlock and * causing memory corruption. * * However, there are many places in ZFS where the mutex is used for * serializing object freeing, and the code is shared among other OSes without * this issue. Thus, we need the spinlock to force the serialization on * mutex_exit(). * * See http://lwn.net/Articles/575477/ for the information about the race. */ #define mutex_exit(mp) \ { \ spl_mutex_clear_owner(mp); \ spin_lock(&(mp)->m_lock); \ spl_mutex_lockdep_off_maybe(mp); \ mutex_unlock(MUTEX(mp)); \ spl_mutex_lockdep_on_maybe(mp); \ spin_unlock(&(mp)->m_lock); \ /* NOTE: do not dereference mp after this point */ \ } #endif /* _SPL_MUTEX_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775020522 xustar000000000000000030 mtime=1579730429.000126239 30 atime=1579730452.856892207 30 ctime=1579730469.306420361 zfs-0.8.3/include/spl/sys/Makefile.in0000664016037001603700000007216513612142775020541 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/spl/sys DIST_COMMON = $(am__kernel_HEADERS_DIST) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__kernel_HEADERS_DIST = $(top_srcdir)/include/spl/sys/acl.h \ $(top_srcdir)/include/spl/sys/atomic.h \ $(top_srcdir)/include/spl/sys/byteorder.h \ $(top_srcdir)/include/spl/sys/callb.h \ $(top_srcdir)/include/spl/sys/callo.h \ $(top_srcdir)/include/spl/sys/cmn_err.h \ $(top_srcdir)/include/spl/sys/condvar.h \ $(top_srcdir)/include/spl/sys/console.h \ $(top_srcdir)/include/spl/sys/cred.h \ $(top_srcdir)/include/spl/sys/ctype.h \ $(top_srcdir)/include/spl/sys/debug.h \ $(top_srcdir)/include/spl/sys/disp.h \ $(top_srcdir)/include/spl/sys/dkio.h \ $(top_srcdir)/include/spl/sys/errno.h \ $(top_srcdir)/include/spl/sys/fcntl.h \ $(top_srcdir)/include/spl/sys/file.h \ $(top_srcdir)/include/spl/sys/inttypes.h \ $(top_srcdir)/include/spl/sys/isa_defs.h \ $(top_srcdir)/include/spl/sys/kmem_cache.h \ $(top_srcdir)/include/spl/sys/kmem.h \ $(top_srcdir)/include/spl/sys/kobj.h \ $(top_srcdir)/include/spl/sys/kstat.h \ $(top_srcdir)/include/spl/sys/list.h \ $(top_srcdir)/include/spl/sys/mode.h \ $(top_srcdir)/include/spl/sys/mutex.h \ $(top_srcdir)/include/spl/sys/param.h \ $(top_srcdir)/include/spl/sys/processor.h \ $(top_srcdir)/include/spl/sys/proc.h \ $(top_srcdir)/include/spl/sys/procfs_list.h \ $(top_srcdir)/include/spl/sys/random.h \ $(top_srcdir)/include/spl/sys/rwlock.h \ $(top_srcdir)/include/spl/sys/shrinker.h \ $(top_srcdir)/include/spl/sys/sid.h \ $(top_srcdir)/include/spl/sys/signal.h \ $(top_srcdir)/include/spl/sys/stat.h \ $(top_srcdir)/include/spl/sys/strings.h \ $(top_srcdir)/include/spl/sys/sunddi.h \ $(top_srcdir)/include/spl/sys/sysmacros.h \ $(top_srcdir)/include/spl/sys/systeminfo.h \ $(top_srcdir)/include/spl/sys/taskq.h \ $(top_srcdir)/include/spl/sys/thread.h \ $(top_srcdir)/include/spl/sys/time.h \ $(top_srcdir)/include/spl/sys/timer.h \ $(top_srcdir)/include/spl/sys/tsd.h \ $(top_srcdir)/include/spl/sys/types32.h \ $(top_srcdir)/include/spl/sys/types.h \ $(top_srcdir)/include/spl/sys/uio.h \ $(top_srcdir)/include/spl/sys/user.h \ $(top_srcdir)/include/spl/sys/vfs.h \ $(top_srcdir)/include/spl/sys/vmem.h \ $(top_srcdir)/include/spl/sys/vmsystm.h \ $(top_srcdir)/include/spl/sys/vnode.h \ $(top_srcdir)/include/spl/sys/wait.h \ $(top_srcdir)/include/spl/sys/zmod.h \ $(top_srcdir)/include/spl/sys/zone.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" HEADERS = $(kernel_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ KERNEL_H = \ $(top_srcdir)/include/spl/sys/acl.h \ $(top_srcdir)/include/spl/sys/atomic.h \ $(top_srcdir)/include/spl/sys/byteorder.h \ $(top_srcdir)/include/spl/sys/callb.h \ $(top_srcdir)/include/spl/sys/callo.h \ $(top_srcdir)/include/spl/sys/cmn_err.h \ $(top_srcdir)/include/spl/sys/condvar.h \ $(top_srcdir)/include/spl/sys/console.h \ $(top_srcdir)/include/spl/sys/cred.h \ $(top_srcdir)/include/spl/sys/ctype.h \ $(top_srcdir)/include/spl/sys/debug.h \ $(top_srcdir)/include/spl/sys/disp.h \ $(top_srcdir)/include/spl/sys/dkio.h \ $(top_srcdir)/include/spl/sys/errno.h \ $(top_srcdir)/include/spl/sys/fcntl.h \ $(top_srcdir)/include/spl/sys/file.h \ $(top_srcdir)/include/spl/sys/inttypes.h \ $(top_srcdir)/include/spl/sys/isa_defs.h \ $(top_srcdir)/include/spl/sys/kmem_cache.h \ $(top_srcdir)/include/spl/sys/kmem.h \ $(top_srcdir)/include/spl/sys/kobj.h \ $(top_srcdir)/include/spl/sys/kstat.h \ $(top_srcdir)/include/spl/sys/list.h \ $(top_srcdir)/include/spl/sys/mode.h \ $(top_srcdir)/include/spl/sys/mutex.h \ $(top_srcdir)/include/spl/sys/param.h \ $(top_srcdir)/include/spl/sys/processor.h \ $(top_srcdir)/include/spl/sys/proc.h \ $(top_srcdir)/include/spl/sys/procfs_list.h \ $(top_srcdir)/include/spl/sys/random.h \ $(top_srcdir)/include/spl/sys/rwlock.h \ $(top_srcdir)/include/spl/sys/shrinker.h \ $(top_srcdir)/include/spl/sys/sid.h \ $(top_srcdir)/include/spl/sys/signal.h \ $(top_srcdir)/include/spl/sys/stat.h \ $(top_srcdir)/include/spl/sys/strings.h \ $(top_srcdir)/include/spl/sys/sunddi.h \ $(top_srcdir)/include/spl/sys/sysmacros.h \ $(top_srcdir)/include/spl/sys/systeminfo.h \ $(top_srcdir)/include/spl/sys/taskq.h \ $(top_srcdir)/include/spl/sys/thread.h \ $(top_srcdir)/include/spl/sys/time.h \ $(top_srcdir)/include/spl/sys/timer.h \ $(top_srcdir)/include/spl/sys/tsd.h \ $(top_srcdir)/include/spl/sys/types32.h \ $(top_srcdir)/include/spl/sys/types.h \ $(top_srcdir)/include/spl/sys/uio.h \ $(top_srcdir)/include/spl/sys/user.h \ $(top_srcdir)/include/spl/sys/vfs.h \ $(top_srcdir)/include/spl/sys/vmem.h \ $(top_srcdir)/include/spl/sys/vmsystm.h \ $(top_srcdir)/include/spl/sys/vnode.h \ $(top_srcdir)/include/spl/sys/wait.h \ $(top_srcdir)/include/spl/sys/zmod.h \ $(top_srcdir)/include/spl/sys/zone.h @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/spl/sys @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/spl/sys/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/spl/sys/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(kerneldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-kernelHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-kernelHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-kernelHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/spl/sys/PaxHeaders.151519/errno.h0000644000000000000000000000007413607166147017763 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.213417377 zfs-0.8.3/include/spl/sys/errno.h0000644016037001603700000000267413607166147017771 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2000 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ /* * University Copyright- Copyright (c) 1982, 1986, 1988 * The Regents of the University of California * All Rights Reserved * * University Acknowledgment- Portions of this document are derived from * software developed by the University of California, Berkeley, and its * contributors. */ #ifndef _SYS_ERRNO_H #define _SYS_ERRNO_H #include #define ENOTSUP EOPNOTSUPP #endif /* _SYS_ERRNO_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/types.h0000644000000000000000000000007413607166147020002 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.283419624 zfs-0.8.3/include/spl/sys/types.h0000644016037001603700000000332713607166147020004 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_TYPES_H #define _SPL_TYPES_H #include typedef enum { B_FALSE = 0, B_TRUE = 1 } boolean_t; typedef unsigned char uchar_t; typedef unsigned short ushort_t; typedef unsigned int uint_t; typedef unsigned long ulong_t; typedef unsigned long long u_longlong_t; typedef long long longlong_t; typedef unsigned long intptr_t; typedef unsigned long long rlim64_t; typedef struct task_struct kthread_t; typedef struct task_struct proc_t; typedef int id_t; typedef short pri_t; typedef short index_t; typedef longlong_t offset_t; typedef u_longlong_t u_offset_t; typedef ulong_t pgcnt_t; typedef int major_t; typedef int minor_t; #endif /* _SPL_TYPES_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/callb.h0000644000000000000000000000007313607166147017712 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.19141667 zfs-0.8.3/include/spl/sys/callb.h0000644016037001603700000000342213607166147017711 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_CALLB_H #define _SPL_CALLB_H #include #include #define CALLB_CPR_ASSERT(cp) ASSERT(MUTEX_HELD((cp)->cc_lockp)); typedef struct callb_cpr { kmutex_t *cc_lockp; } callb_cpr_t; #define CALLB_CPR_INIT(cp, lockp, func, name) { \ (cp)->cc_lockp = lockp; \ } #define CALLB_CPR_SAFE_BEGIN(cp) { \ CALLB_CPR_ASSERT(cp); \ } #define CALLB_CPR_SAFE_END(cp, lockp) { \ CALLB_CPR_ASSERT(cp); \ } #define CALLB_CPR_EXIT(cp) { \ ASSERT(MUTEX_HELD((cp)->cc_lockp)); \ mutex_exit((cp)->cc_lockp); \ } #endif /* _SPL_CALLB_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/sysmacros.h0000644000000000000000000000007413607166147020661 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.265419046 zfs-0.8.3/include/spl/sys/sysmacros.h0000644016037001603700000001431113607166147020656 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_SYSMACROS_H #define _SPL_SYSMACROS_H #include #include #include #include #include #include #include #ifdef HAVE_SCHED_RT_HEADER #include #endif #ifndef _KERNEL #define _KERNEL __KERNEL__ #endif #define FALSE 0 #define TRUE 1 #define INT8_MAX (127) #define INT8_MIN (-128) #define UINT8_MAX (255) #define UINT8_MIN (0) #define INT16_MAX (32767) #define INT16_MIN (-32768) #define UINT16_MAX (65535) #define UINT16_MIN (0) #define INT32_MAX INT_MAX #define INT32_MIN INT_MIN #define UINT32_MAX UINT_MAX #define UINT32_MIN UINT_MIN #define INT64_MAX LLONG_MAX #define INT64_MIN LLONG_MIN #define UINT64_MAX ULLONG_MAX #define UINT64_MIN ULLONG_MIN #define NBBY 8 #define MAXMSGLEN 256 #define MAXNAMELEN 256 #define MAXPATHLEN 4096 #define MAXOFFSET_T LLONG_MAX #define MAXBSIZE 8192 #define DEV_BSIZE 512 #define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */ #define proc_pageout NULL #define curproc current #define max_ncpus num_possible_cpus() #define boot_ncpus num_online_cpus() #define CPU_SEQID smp_processor_id() #define is_system_labeled() 0 #ifndef RLIM64_INFINITY #define RLIM64_INFINITY (~0ULL) #endif /* * 0..MAX_PRIO-1: Process priority * 0..MAX_RT_PRIO-1: RT priority tasks * MAX_RT_PRIO..MAX_PRIO-1: SCHED_NORMAL tasks * * Treat shim tasks as SCHED_NORMAL tasks */ #define minclsyspri (MAX_PRIO-1) #define maxclsyspri (MAX_RT_PRIO) #define defclsyspri (DEFAULT_PRIO) #ifndef NICE_TO_PRIO #define NICE_TO_PRIO(nice) (MAX_RT_PRIO + (nice) + 20) #endif #ifndef PRIO_TO_NICE #define PRIO_TO_NICE(prio) ((prio) - MAX_RT_PRIO - 20) #endif /* * Missing macros */ #ifndef PAGESIZE #define PAGESIZE PAGE_SIZE #endif #ifndef PAGESHIFT #define PAGESHIFT PAGE_SHIFT #endif /* Dtrace probes do not exist in the linux kernel */ #ifdef DTRACE_PROBE #undef DTRACE_PROBE #endif /* DTRACE_PROBE */ #define DTRACE_PROBE(a) ((void)0) #ifdef DTRACE_PROBE1 #undef DTRACE_PROBE1 #endif /* DTRACE_PROBE1 */ #define DTRACE_PROBE1(a, b, c) ((void)0) #ifdef DTRACE_PROBE2 #undef DTRACE_PROBE2 #endif /* DTRACE_PROBE2 */ #define DTRACE_PROBE2(a, b, c, d, e) ((void)0) #ifdef DTRACE_PROBE3 #undef DTRACE_PROBE3 #endif /* DTRACE_PROBE3 */ #define DTRACE_PROBE3(a, b, c, d, e, f, g) ((void)0) #ifdef DTRACE_PROBE4 #undef DTRACE_PROBE4 #endif /* DTRACE_PROBE4 */ #define DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) ((void)0) /* Missing globals */ extern char spl_gitrev[64]; extern unsigned long spl_hostid; /* Missing misc functions */ extern uint32_t zone_get_hostid(void *zone); extern void spl_setup(void); extern void spl_cleanup(void); #define highbit(x) __fls(x) #define lowbit(x) __ffs(x) #define highbit64(x) fls64(x) #define makedevice(maj, min) makedev(maj, min) /* common macros */ #ifndef MIN #define MIN(a, b) ((a) < (b) ? (a) : (b)) #endif #ifndef MAX #define MAX(a, b) ((a) < (b) ? (b) : (a)) #endif #ifndef ABS #define ABS(a) ((a) < 0 ? -(a) : (a)) #endif #ifndef DIV_ROUND_UP #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) #endif #ifndef roundup #define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) #endif #ifndef howmany #define howmany(x, y) (((x) + ((y) - 1)) / (y)) #endif /* * Compatibility macros/typedefs needed for Solaris -> Linux port */ #define P2ALIGN(x, align) ((x) & -(align)) #define P2CROSS(x, y, align) (((x) ^ (y)) > (align) - 1) #define P2ROUNDUP(x, align) ((((x) - 1) | ((align) - 1)) + 1) #define P2PHASE(x, align) ((x) & ((align) - 1)) #define P2NPHASE(x, align) (-(x) & ((align) - 1)) #define ISP2(x) (((x) & ((x) - 1)) == 0) #define IS_P2ALIGNED(v, a) ((((uintptr_t)(v)) & ((uintptr_t)(a) - 1)) == 0) #define P2BOUNDARY(off, len, align) \ (((off) ^ ((off) + (len) - 1)) > (align) - 1) /* * Typed version of the P2* macros. These macros should be used to ensure * that the result is correctly calculated based on the data type of (x), * which is passed in as the last argument, regardless of the data * type of the alignment. For example, if (x) is of type uint64_t, * and we want to round it up to a page boundary using "PAGESIZE" as * the alignment, we can do either * * P2ROUNDUP(x, (uint64_t)PAGESIZE) * or * P2ROUNDUP_TYPED(x, PAGESIZE, uint64_t) */ #define P2ALIGN_TYPED(x, align, type) \ ((type)(x) & -(type)(align)) #define P2PHASE_TYPED(x, align, type) \ ((type)(x) & ((type)(align) - 1)) #define P2NPHASE_TYPED(x, align, type) \ (-(type)(x) & ((type)(align) - 1)) #define P2ROUNDUP_TYPED(x, align, type) \ ((((type)(x) - 1) | ((type)(align) - 1)) + 1) #define P2END_TYPED(x, align, type) \ (-(~(type)(x) & -(type)(align))) #define P2PHASEUP_TYPED(x, align, phase, type) \ ((type)(phase) - (((type)(phase) - (type)(x)) & -(type)(align))) #define P2CROSS_TYPED(x, y, align, type) \ (((type)(x) ^ (type)(y)) > (type)(align) - 1) #define P2SAMEHIGHBIT_TYPED(x, y, type) \ (((type)(x) ^ (type)(y)) < ((type)(x) & (type)(y))) #if defined(_KERNEL) && !defined(_KMEMUSER) && !defined(offsetof) /* avoid any possibility of clashing with version */ #define offsetof(s, m) ((size_t)(&(((s *)0)->m))) #endif #endif /* _SPL_SYSMACROS_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/isa_defs.h0000644000000000000000000000007413607166147020413 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.222417665 zfs-0.8.3/include/spl/sys/isa_defs.h0000644016037001603700000001126213607166147020412 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC. * Copyright (C) 2007 The Regents of the University of California. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_ISA_DEFS_H #define _SPL_ISA_DEFS_H /* x86_64 arch specific defines */ #if defined(__x86_64) || defined(__x86_64__) #if !defined(__x86_64) #define __x86_64 #endif #if !defined(__amd64) #define __amd64 #endif #if !defined(__x86) #define __x86 #endif #if !defined(_LP64) #define _LP64 #endif #define _ALIGNMENT_REQUIRED 1 /* i386 arch specific defines */ #elif defined(__i386) || defined(__i386__) #if !defined(__i386) #define __i386 #endif #if !defined(__x86) #define __x86 #endif #if !defined(_ILP32) #define _ILP32 #endif #define _ALIGNMENT_REQUIRED 0 /* powerpc (ppc64) arch specific defines */ #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) #if !defined(__powerpc) #define __powerpc #endif #if !defined(__powerpc__) #define __powerpc__ #endif #if defined(__powerpc64__) #if !defined(_LP64) #define _LP64 #endif #else #if !defined(_ILP32) #define _ILP32 #endif #endif /* * Illumos doesn't define _ALIGNMENT_REQUIRED for PPC, so default to 1 * out of paranoia. */ #define _ALIGNMENT_REQUIRED 1 /* arm arch specific defines */ #elif defined(__arm) || defined(__arm__) || defined(__aarch64__) #if !defined(__arm) #define __arm #endif #if !defined(__arm__) #define __arm__ #endif #if defined(__aarch64__) #if !defined(_LP64) #define _LP64 #endif #else #if !defined(_ILP32) #define _ILP32 #endif #endif #if defined(__ARMEL__) || defined(__AARCH64EL__) #define _LITTLE_ENDIAN #else #define _BIG_ENDIAN #endif /* * Illumos doesn't define _ALIGNMENT_REQUIRED for ARM, so default to 1 * out of paranoia. */ #define _ALIGNMENT_REQUIRED 1 /* sparc arch specific defines */ #elif defined(__sparc) || defined(__sparc__) #if !defined(__sparc) #define __sparc #endif #if !defined(__sparc__) #define __sparc__ #endif #if defined(__arch64__) #if !defined(_LP64) #define _LP64 #endif #else #if !defined(_ILP32) #define _ILP32 #endif #endif #define _BIG_ENDIAN #define _SUNOS_VTOC_16 #define _ALIGNMENT_REQUIRED 1 /* s390 arch specific defines */ #elif defined(__s390__) #if defined(__s390x__) #if !defined(_LP64) #define _LP64 #endif #else #if !defined(_ILP32) #define _ILP32 #endif #endif #define _BIG_ENDIAN /* * Illumos doesn't define _ALIGNMENT_REQUIRED for s390, so default to 1 * out of paranoia. */ #define _ALIGNMENT_REQUIRED 1 /* MIPS arch specific defines */ #elif defined(__mips__) #if defined(__MIPSEB__) #define _BIG_ENDIAN #elif defined(__MIPSEL__) #define _LITTLE_ENDIAN #else #error MIPS no endian specified #endif #ifndef _LP64 #define _ILP32 #endif #define _SUNOS_VTOC_16 /* * Illumos doesn't define _ALIGNMENT_REQUIRED for MIPS, so default to 1 * out of paranoia. */ #define _ALIGNMENT_REQUIRED 1 #else /* * Currently supported: * x86_64, i386, arm, powerpc, s390, sparc, and mips */ #error "Unsupported ISA type" #endif #if defined(_ILP32) && defined(_LP64) #error "Both _ILP32 and _LP64 are defined" #endif #if !defined(_ILP32) && !defined(_LP64) #error "Neither _ILP32 or _LP64 are defined" #endif #include /* * CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS will be defined by the Linux * kernel for architectures which support efficient unaligned access. */ #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) #define HAVE_EFFICIENT_UNALIGNED_ACCESS #endif #if defined(__LITTLE_ENDIAN) && !defined(_LITTLE_ENDIAN) #define _LITTLE_ENDIAN __LITTLE_ENDIAN #endif #if defined(__BIG_ENDIAN) && !defined(_BIG_ENDIAN) #define _BIG_ENDIAN __BIG_ENDIAN #endif #if defined(_LITTLE_ENDIAN) && defined(_BIG_ENDIAN) #error "Both _LITTLE_ENDIAN and _BIG_ENDIAN are defined" #endif #if !defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) #error "Neither _LITTLE_ENDIAN or _BIG_ENDIAN are defined" #endif #endif /* _SPL_ISA_DEFS_H */ zfs-0.8.3/include/spl/sys/PaxHeaders.151519/strings.h0000644000000000000000000000007413607166147020327 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.260418884 zfs-0.8.3/include/spl/sys/strings.h0000644016037001603700000000236413607166147020331 0ustar00hutter2hutter200000000000000/* * Copyright (C) 2018 Lawrence Livermore National Security, LLC. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * UCRL-CODE-235197 * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_SYS_STRINGS_H #define _SPL_SYS_STRINGS_H #include #define bzero(ptr, size) memset(ptr, 0, size) #define bcopy(src, dest, size) memmove(dest, src, size) #define bcmp(src, dest, size) memcmp((src), (dest), (size_t)(size)) #ifndef HAVE_KSTRTOUL #define kstrtoul strict_strtoul #endif #endif /* _SPL_SYS_STRINGS_H */ zfs-0.8.3/include/spl/PaxHeaders.151519/rpc0000644000000000000000000000013013612143045016333 xustar000000000000000029 mtime=1579730469.13441484 30 atime=1579730489.076055131 29 ctime=1579730469.13441484 zfs-0.8.3/include/spl/rpc/0000775016037001603700000000000013612143045016416 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/spl/rpc/PaxHeaders.151519/xdr.h0000644000000000000000000000007313607166147017400 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.12941468 zfs-0.8.3/include/spl/rpc/xdr.h0000644016037001603700000001003713607166147017377 0ustar00hutter2hutter200000000000000/* * Copyright (c) 2008 Sun Microsystems, Inc. * Written by Ricardo Correia * * This file is part of the SPL, Solaris Porting Layer. * For details, see . * * The SPL is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * The SPL is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. * * You should have received a copy of the GNU General Public License along * with the SPL. If not, see . */ #ifndef _SPL_RPC_XDR_H #define _SPL_RPC_XDR_H #include typedef int bool_t; /* * XDR enums and types. */ enum xdr_op { XDR_ENCODE, XDR_DECODE }; struct xdr_ops; typedef struct { struct xdr_ops *x_ops; /* Let caller know xdrmem_create() succeeds */ caddr_t x_addr; /* Current buffer addr */ caddr_t x_addr_end; /* End of the buffer */ enum xdr_op x_op; /* Stream direction */ } XDR; typedef bool_t (*xdrproc_t)(XDR *xdrs, void *ptr); struct xdr_ops { bool_t (*xdr_control)(XDR *, int, void *); bool_t (*xdr_char)(XDR *, char *); bool_t (*xdr_u_short)(XDR *, unsigned short *); bool_t (*xdr_u_int)(XDR *, unsigned *); bool_t (*xdr_u_longlong_t)(XDR *, u_longlong_t *); bool_t (*xdr_opaque)(XDR *, caddr_t, const uint_t); bool_t (*xdr_string)(XDR *, char **, const uint_t); bool_t (*xdr_array)(XDR *, caddr_t *, uint_t *, const uint_t, const uint_t, const xdrproc_t); }; /* * XDR control operator. */ #define XDR_GET_BYTES_AVAIL 1 struct xdr_bytesrec { bool_t xc_is_last_record; size_t xc_num_avail; }; /* * XDR functions. */ void xdrmem_create(XDR *xdrs, const caddr_t addr, const uint_t size, const enum xdr_op op); /* Currently not needed. If needed later, we'll add it to struct xdr_ops */ #define xdr_destroy(xdrs) ((void) 0) #define xdr_control(xdrs, req, info) \ (xdrs)->x_ops->xdr_control((xdrs), (req), (info)) /* * For precaution, the following are defined as static inlines instead of macros * to get some amount of type safety. * * Also, macros wouldn't work in the case where typecasting is done, because it * must be possible to reference the functions' addresses by these names. */ static inline bool_t xdr_char(XDR *xdrs, char *cp) { return (xdrs->x_ops->xdr_char(xdrs, cp)); } static inline bool_t xdr_u_short(XDR *xdrs, unsigned short *usp) { return (xdrs->x_ops->xdr_u_short(xdrs, usp)); } static inline bool_t xdr_short(XDR *xdrs, short *sp) { BUILD_BUG_ON(sizeof (short) != 2); return (xdrs->x_ops->xdr_u_short(xdrs, (unsigned short *) sp)); } static inline bool_t xdr_u_int(XDR *xdrs, unsigned *up) { return (xdrs->x_ops->xdr_u_int(xdrs, up)); } static inline bool_t xdr_int(XDR *xdrs, int *ip) { BUILD_BUG_ON(sizeof (int) != 4); return (xdrs->x_ops->xdr_u_int(xdrs, (unsigned *)ip)); } static inline bool_t xdr_u_longlong_t(XDR *xdrs, u_longlong_t *ullp) { return (xdrs->x_ops->xdr_u_longlong_t(xdrs, ullp)); } static inline bool_t xdr_longlong_t(XDR *xdrs, longlong_t *llp) { BUILD_BUG_ON(sizeof (longlong_t) != 8); return (xdrs->x_ops->xdr_u_longlong_t(xdrs, (u_longlong_t *)llp)); } /* * Fixed-length opaque data. */ static inline bool_t xdr_opaque(XDR *xdrs, caddr_t cp, const uint_t cnt) { return (xdrs->x_ops->xdr_opaque(xdrs, cp, cnt)); } /* * Variable-length string. * The *sp buffer must have (maxsize + 1) bytes. */ static inline bool_t xdr_string(XDR *xdrs, char **sp, const uint_t maxsize) { return (xdrs->x_ops->xdr_string(xdrs, sp, maxsize)); } /* * Variable-length arrays. */ static inline bool_t xdr_array(XDR *xdrs, caddr_t *arrp, uint_t *sizep, const uint_t maxsize, const uint_t elsize, const xdrproc_t elproc) { return xdrs->x_ops->xdr_array(xdrs, arrp, sizep, maxsize, elsize, elproc); } #endif /* SPL_RPC_XDR_H */ zfs-0.8.3/include/spl/rpc/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020467 xustar000000000000000030 atime=1579730428.905123189 30 ctime=1579730469.132414776 zfs-0.8.3/include/spl/rpc/Makefile.am0000644016037001603700000000023713607166147020466 0ustar00hutter2hutter200000000000000KERNEL_H = \ $(top_srcdir)/include/spl/rpc/xdr.h if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/spl/rpc kernel_HEADERS = $(KERNEL_H) endif zfs-0.8.3/include/spl/rpc/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612142774020466 xustar000000000000000030 mtime=1579730428.943124409 30 atime=1579730452.827891275 29 ctime=1579730469.13441484 zfs-0.8.3/include/spl/rpc/Makefile.in0000664016037001603700000006135313612142774020503 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/spl/rpc DIST_COMMON = $(am__kernel_HEADERS_DIST) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__kernel_HEADERS_DIST = $(top_srcdir)/include/spl/rpc/xdr.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" HEADERS = $(kernel_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ KERNEL_H = \ $(top_srcdir)/include/spl/rpc/xdr.h @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/spl/rpc @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(KERNEL_H) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/spl/rpc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/spl/rpc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(kerneldir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-kernelHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-kernelHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-kernelHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/spl/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774017703 xustar000000000000000030 mtime=1579730428.889122675 30 atime=1579730452.795890247 30 ctime=1579730469.066412655 zfs-0.8.3/include/spl/Makefile.in0000664016037001603700000006752013612142774017721 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/spl DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = rpc sys all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/spl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/spl/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/PaxHeaders.151519/zfs_prop.h0000644000000000000000000000007413607166132017056 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.905407485 zfs-0.8.3/include/zfs_prop.h0000644016037001603700000001066613607166132017064 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _ZFS_PROP_H #define _ZFS_PROP_H #include #include #ifdef __cplusplus extern "C" { #endif /* * For index types (e.g. compression and checksum), we want the numeric value * in the kernel, but the string value in userland. */ typedef enum { PROP_TYPE_NUMBER, /* numeric value */ PROP_TYPE_STRING, /* string value */ PROP_TYPE_INDEX /* numeric value indexed by string */ } zprop_type_t; typedef enum { PROP_DEFAULT, PROP_READONLY, PROP_INHERIT, /* * ONETIME properties are a sort of conglomeration of READONLY * and INHERIT. They can be set only during object creation, * after that they are READONLY. If not explicitly set during * creation, they can be inherited. ONETIME_DEFAULT properties * work the same way, but they will default instead of * inheriting a value. */ PROP_ONETIME, PROP_ONETIME_DEFAULT } zprop_attr_t; typedef struct zfs_index { const char *pi_name; uint64_t pi_value; } zprop_index_t; typedef struct { const char *pd_name; /* human-readable property name */ int pd_propnum; /* property number */ zprop_type_t pd_proptype; /* string, boolean, index, number */ const char *pd_strdefault; /* default for strings */ uint64_t pd_numdefault; /* for boolean / index / number */ zprop_attr_t pd_attr; /* default, readonly, inherit */ int pd_types; /* bitfield of valid dataset types */ /* fs | vol | snap; or pool */ const char *pd_values; /* string telling acceptable values */ const char *pd_colname; /* column header for "zfs list" */ boolean_t pd_rightalign; /* column alignment for "zfs list" */ boolean_t pd_visible; /* do we list this property with the */ /* "zfs get" help message */ boolean_t pd_zfs_mod_supported; /* supported by running zfs module */ const zprop_index_t *pd_table; /* for index properties, a table */ /* defining the possible values */ size_t pd_table_size; /* number of entries in pd_table[] */ } zprop_desc_t; /* * zfs dataset property functions */ void zfs_prop_init(void); zprop_type_t zfs_prop_get_type(zfs_prop_t); boolean_t zfs_prop_delegatable(zfs_prop_t prop); zprop_desc_t *zfs_prop_get_table(void); /* * zpool property functions */ void zpool_prop_init(void); zprop_type_t zpool_prop_get_type(zpool_prop_t); zprop_desc_t *zpool_prop_get_table(void); /* * Common routines to initialize property tables */ void zprop_register_impl(int, const char *, zprop_type_t, uint64_t, const char *, zprop_attr_t, int, const char *, const char *, boolean_t, boolean_t, const zprop_index_t *); void zprop_register_string(int, const char *, const char *, zprop_attr_t attr, int, const char *, const char *); void zprop_register_number(int, const char *, uint64_t, zprop_attr_t, int, const char *, const char *); void zprop_register_index(int, const char *, uint64_t, zprop_attr_t, int, const char *, const char *, const zprop_index_t *); void zprop_register_hidden(int, const char *, zprop_type_t, zprop_attr_t, int, const char *); /* * Common routines for zfs and zpool property management */ int zprop_iter_common(zprop_func, void *, boolean_t, boolean_t, zfs_type_t); int zprop_name_to_prop(const char *, zfs_type_t); int zprop_string_to_index(int, const char *, uint64_t *, zfs_type_t); int zprop_index_to_string(int, uint64_t, const char **, zfs_type_t); uint64_t zprop_random_value(int, uint64_t, zfs_type_t); const char *zprop_values(int, zfs_type_t); size_t zprop_width(int, boolean_t *, zfs_type_t); boolean_t zprop_valid_for_type(int, zfs_type_t, boolean_t); #ifdef __cplusplus } #endif #endif /* _ZFS_PROP_H */ zfs-0.8.3/include/PaxHeaders.151519/libzfs.h0000644000000000000000000000007413612141517016501 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.917407872 zfs-0.8.3/include/libzfs.h0000644016037001603700000007475413612141517016517 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright Joyent, Inc. * Copyright (c) 2013 Steven Hartland. All rights reserved. * Copyright (c) 2016, Intel Corporation. * Copyright 2016 Nexenta Systems, Inc. * Copyright (c) 2017 Open-E, Inc. All Rights Reserved. * Copyright (c) 2019 Datto Inc. */ #ifndef _LIBZFS_H #define _LIBZFS_H #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Miscellaneous ZFS constants */ #define ZFS_MAXPROPLEN MAXPATHLEN #define ZPOOL_MAXPROPLEN MAXPATHLEN /* * libzfs errors */ typedef enum zfs_error { EZFS_SUCCESS = 0, /* no error -- success */ EZFS_NOMEM = 2000, /* out of memory */ EZFS_BADPROP, /* invalid property value */ EZFS_PROPREADONLY, /* cannot set readonly property */ EZFS_PROPTYPE, /* property does not apply to dataset type */ EZFS_PROPNONINHERIT, /* property is not inheritable */ EZFS_PROPSPACE, /* bad quota or reservation */ EZFS_BADTYPE, /* dataset is not of appropriate type */ EZFS_BUSY, /* pool or dataset is busy */ EZFS_EXISTS, /* pool or dataset already exists */ EZFS_NOENT, /* no such pool or dataset */ EZFS_BADSTREAM, /* bad backup stream */ EZFS_DSREADONLY, /* dataset is readonly */ EZFS_VOLTOOBIG, /* volume is too large for 32-bit system */ EZFS_INVALIDNAME, /* invalid dataset name */ EZFS_BADRESTORE, /* unable to restore to destination */ EZFS_BADBACKUP, /* backup failed */ EZFS_BADTARGET, /* bad attach/detach/replace target */ EZFS_NODEVICE, /* no such device in pool */ EZFS_BADDEV, /* invalid device to add */ EZFS_NOREPLICAS, /* no valid replicas */ EZFS_RESILVERING, /* currently resilvering */ EZFS_BADVERSION, /* unsupported version */ EZFS_POOLUNAVAIL, /* pool is currently unavailable */ EZFS_DEVOVERFLOW, /* too many devices in one vdev */ EZFS_BADPATH, /* must be an absolute path */ EZFS_CROSSTARGET, /* rename or clone across pool or dataset */ EZFS_ZONED, /* used improperly in local zone */ EZFS_MOUNTFAILED, /* failed to mount dataset */ EZFS_UMOUNTFAILED, /* failed to unmount dataset */ EZFS_UNSHARENFSFAILED, /* unshare(1M) failed */ EZFS_SHARENFSFAILED, /* share(1M) failed */ EZFS_PERM, /* permission denied */ EZFS_NOSPC, /* out of space */ EZFS_FAULT, /* bad address */ EZFS_IO, /* I/O error */ EZFS_INTR, /* signal received */ EZFS_ISSPARE, /* device is a hot spare */ EZFS_INVALCONFIG, /* invalid vdev configuration */ EZFS_RECURSIVE, /* recursive dependency */ EZFS_NOHISTORY, /* no history object */ EZFS_POOLPROPS, /* couldn't retrieve pool props */ EZFS_POOL_NOTSUP, /* ops not supported for this type of pool */ EZFS_POOL_INVALARG, /* invalid argument for this pool operation */ EZFS_NAMETOOLONG, /* dataset name is too long */ EZFS_OPENFAILED, /* open of device failed */ EZFS_NOCAP, /* couldn't get capacity */ EZFS_LABELFAILED, /* write of label failed */ EZFS_BADWHO, /* invalid permission who */ EZFS_BADPERM, /* invalid permission */ EZFS_BADPERMSET, /* invalid permission set name */ EZFS_NODELEGATION, /* delegated administration is disabled */ EZFS_UNSHARESMBFAILED, /* failed to unshare over smb */ EZFS_SHARESMBFAILED, /* failed to share over smb */ EZFS_BADCACHE, /* bad cache file */ EZFS_ISL2CACHE, /* device is for the level 2 ARC */ EZFS_VDEVNOTSUP, /* unsupported vdev type */ EZFS_NOTSUP, /* ops not supported on this dataset */ EZFS_ACTIVE_SPARE, /* pool has active shared spare devices */ EZFS_UNPLAYED_LOGS, /* log device has unplayed logs */ EZFS_REFTAG_RELE, /* snapshot release: tag not found */ EZFS_REFTAG_HOLD, /* snapshot hold: tag already exists */ EZFS_TAGTOOLONG, /* snapshot hold/rele: tag too long */ EZFS_PIPEFAILED, /* pipe create failed */ EZFS_THREADCREATEFAILED, /* thread create failed */ EZFS_POSTSPLIT_ONLINE, /* onlining a disk after splitting it */ EZFS_SCRUBBING, /* currently scrubbing */ EZFS_NO_SCRUB, /* no active scrub */ EZFS_DIFF, /* general failure of zfs diff */ EZFS_DIFFDATA, /* bad zfs diff data */ EZFS_POOLREADONLY, /* pool is in read-only mode */ EZFS_SCRUB_PAUSED, /* scrub currently paused */ EZFS_ACTIVE_POOL, /* pool is imported on a different system */ EZFS_CRYPTOFAILED, /* failed to setup encryption */ EZFS_NO_PENDING, /* cannot cancel, no operation is pending */ EZFS_CHECKPOINT_EXISTS, /* checkpoint exists */ EZFS_DISCARDING_CHECKPOINT, /* currently discarding a checkpoint */ EZFS_NO_CHECKPOINT, /* pool has no checkpoint */ EZFS_DEVRM_IN_PROGRESS, /* a device is currently being removed */ EZFS_VDEV_TOO_BIG, /* a device is too big to be used */ EZFS_IOC_NOTSUPPORTED, /* operation not supported by zfs module */ EZFS_TOOMANY, /* argument list too long */ EZFS_INITIALIZING, /* currently initializing */ EZFS_NO_INITIALIZE, /* no active initialize */ EZFS_WRONG_PARENT, /* invalid parent dataset (e.g ZVOL) */ EZFS_TRIMMING, /* currently trimming */ EZFS_NO_TRIM, /* no active trim */ EZFS_TRIM_NOTSUP, /* device does not support trim */ EZFS_NO_RESILVER_DEFER, /* pool doesn't support resilver_defer */ EZFS_EXPORT_IN_PROGRESS, /* currently exporting the pool */ EZFS_UNKNOWN } zfs_error_t; /* * The following data structures are all part * of the zfs_allow_t data structure which is * used for printing 'allow' permissions. * It is a linked list of zfs_allow_t's which * then contain avl tree's for user/group/sets/... * and each one of the entries in those trees have * avl tree's for the permissions they belong to and * whether they are local,descendent or local+descendent * permissions. The AVL trees are used primarily for * sorting purposes, but also so that we can quickly find * a given user and or permission. */ typedef struct zfs_perm_node { avl_node_t z_node; char z_pname[MAXPATHLEN]; } zfs_perm_node_t; typedef struct zfs_allow_node { avl_node_t z_node; char z_key[MAXPATHLEN]; /* name, such as joe */ avl_tree_t z_localdescend; /* local+descendent perms */ avl_tree_t z_local; /* local permissions */ avl_tree_t z_descend; /* descendent permissions */ } zfs_allow_node_t; typedef struct zfs_allow { struct zfs_allow *z_next; char z_setpoint[MAXPATHLEN]; avl_tree_t z_sets; avl_tree_t z_crperms; avl_tree_t z_user; avl_tree_t z_group; avl_tree_t z_everyone; } zfs_allow_t; /* * Basic handle types */ typedef struct zfs_handle zfs_handle_t; typedef struct zpool_handle zpool_handle_t; typedef struct libzfs_handle libzfs_handle_t; /* * Library initialization */ extern libzfs_handle_t *libzfs_init(void); extern void libzfs_fini(libzfs_handle_t *); extern libzfs_handle_t *zpool_get_handle(zpool_handle_t *); extern libzfs_handle_t *zfs_get_handle(zfs_handle_t *); extern void libzfs_print_on_error(libzfs_handle_t *, boolean_t); extern void zfs_save_arguments(int argc, char **, char *, int); extern int zpool_log_history(libzfs_handle_t *, const char *); extern int libzfs_errno(libzfs_handle_t *); extern const char *libzfs_error_init(int); extern const char *libzfs_error_action(libzfs_handle_t *); extern const char *libzfs_error_description(libzfs_handle_t *); extern int zfs_standard_error(libzfs_handle_t *, int, const char *); extern void libzfs_mnttab_init(libzfs_handle_t *); extern void libzfs_mnttab_fini(libzfs_handle_t *); extern void libzfs_mnttab_cache(libzfs_handle_t *, boolean_t); extern int libzfs_mnttab_find(libzfs_handle_t *, const char *, struct mnttab *); extern void libzfs_mnttab_add(libzfs_handle_t *, const char *, const char *, const char *); extern void libzfs_mnttab_remove(libzfs_handle_t *, const char *); /* * Basic handle functions */ extern zpool_handle_t *zpool_open(libzfs_handle_t *, const char *); extern zpool_handle_t *zpool_open_canfail(libzfs_handle_t *, const char *); extern void zpool_close(zpool_handle_t *); extern const char *zpool_get_name(zpool_handle_t *); extern int zpool_get_state(zpool_handle_t *); extern const char *zpool_state_to_name(vdev_state_t, vdev_aux_t); extern const char *zpool_pool_state_to_name(pool_state_t); extern void zpool_free_handles(libzfs_handle_t *); /* * Iterate over all active pools in the system. */ typedef int (*zpool_iter_f)(zpool_handle_t *, void *); extern int zpool_iter(libzfs_handle_t *, zpool_iter_f, void *); extern boolean_t zpool_skip_pool(const char *); /* * Functions to create and destroy pools */ extern int zpool_create(libzfs_handle_t *, const char *, nvlist_t *, nvlist_t *, nvlist_t *); extern int zpool_destroy(zpool_handle_t *, const char *); extern int zpool_add(zpool_handle_t *, nvlist_t *); typedef struct splitflags { /* do not split, but return the config that would be split off */ int dryrun : 1; /* after splitting, import the pool */ int import : 1; int name_flags; } splitflags_t; typedef struct trimflags { /* requested vdevs are for the entire pool */ boolean_t fullpool; /* request a secure trim, requires support from device */ boolean_t secure; /* trim at the requested rate in bytes/second */ uint64_t rate; } trimflags_t; /* * Functions to manipulate pool and vdev state */ extern int zpool_scan(zpool_handle_t *, pool_scan_func_t, pool_scrub_cmd_t); extern int zpool_initialize(zpool_handle_t *, pool_initialize_func_t, nvlist_t *); extern int zpool_trim(zpool_handle_t *, pool_trim_func_t, nvlist_t *, trimflags_t *); extern int zpool_clear(zpool_handle_t *, const char *, nvlist_t *); extern int zpool_reguid(zpool_handle_t *); extern int zpool_reopen_one(zpool_handle_t *, void *); extern int zpool_sync_one(zpool_handle_t *, void *); extern int zpool_vdev_online(zpool_handle_t *, const char *, int, vdev_state_t *); extern int zpool_vdev_offline(zpool_handle_t *, const char *, boolean_t); extern int zpool_vdev_attach(zpool_handle_t *, const char *, const char *, nvlist_t *, int); extern int zpool_vdev_detach(zpool_handle_t *, const char *); extern int zpool_vdev_remove(zpool_handle_t *, const char *); extern int zpool_vdev_remove_cancel(zpool_handle_t *); extern int zpool_vdev_indirect_size(zpool_handle_t *, const char *, uint64_t *); extern int zpool_vdev_split(zpool_handle_t *, char *, nvlist_t **, nvlist_t *, splitflags_t); extern int zpool_vdev_fault(zpool_handle_t *, uint64_t, vdev_aux_t); extern int zpool_vdev_degrade(zpool_handle_t *, uint64_t, vdev_aux_t); extern int zpool_vdev_clear(zpool_handle_t *, uint64_t); extern nvlist_t *zpool_find_vdev(zpool_handle_t *, const char *, boolean_t *, boolean_t *, boolean_t *); extern nvlist_t *zpool_find_vdev_by_physpath(zpool_handle_t *, const char *, boolean_t *, boolean_t *, boolean_t *); extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *); extern uint64_t zpool_vdev_path_to_guid(zpool_handle_t *zhp, const char *path); const char *zpool_get_state_str(zpool_handle_t *); /* * Functions to manage pool properties */ extern int zpool_set_prop(zpool_handle_t *, const char *, const char *); extern int zpool_get_prop(zpool_handle_t *, zpool_prop_t, char *, size_t proplen, zprop_source_t *, boolean_t literal); extern uint64_t zpool_get_prop_int(zpool_handle_t *, zpool_prop_t, zprop_source_t *); extern const char *zpool_prop_to_name(zpool_prop_t); extern const char *zpool_prop_values(zpool_prop_t); /* * Pool health statistics. */ typedef enum { /* * The following correspond to faults as defined in the (fault.fs.zfs.*) * event namespace. Each is associated with a corresponding message ID. * This must be kept in sync with the zfs_msgid_table in * lib/libzfs/libzfs_status.c. */ ZPOOL_STATUS_CORRUPT_CACHE, /* corrupt /kernel/drv/zpool.cache */ ZPOOL_STATUS_MISSING_DEV_R, /* missing device with replicas */ ZPOOL_STATUS_MISSING_DEV_NR, /* missing device with no replicas */ ZPOOL_STATUS_CORRUPT_LABEL_R, /* bad device label with replicas */ ZPOOL_STATUS_CORRUPT_LABEL_NR, /* bad device label with no replicas */ ZPOOL_STATUS_BAD_GUID_SUM, /* sum of device guids didn't match */ ZPOOL_STATUS_CORRUPT_POOL, /* pool metadata is corrupted */ ZPOOL_STATUS_CORRUPT_DATA, /* data errors in user (meta)data */ ZPOOL_STATUS_FAILING_DEV, /* device experiencing errors */ ZPOOL_STATUS_VERSION_NEWER, /* newer on-disk version */ ZPOOL_STATUS_HOSTID_MISMATCH, /* last accessed by another system */ ZPOOL_STATUS_HOSTID_ACTIVE, /* currently active on another system */ ZPOOL_STATUS_HOSTID_REQUIRED, /* multihost=on and hostid=0 */ ZPOOL_STATUS_IO_FAILURE_WAIT, /* failed I/O, failmode 'wait' */ ZPOOL_STATUS_IO_FAILURE_CONTINUE, /* failed I/O, failmode 'continue' */ ZPOOL_STATUS_IO_FAILURE_MMP, /* failed MMP, failmode not 'panic' */ ZPOOL_STATUS_BAD_LOG, /* cannot read log chain(s) */ ZPOOL_STATUS_ERRATA, /* informational errata available */ /* * If the pool has unsupported features but can still be opened in * read-only mode, its status is ZPOOL_STATUS_UNSUP_FEAT_WRITE. If the * pool has unsupported features but cannot be opened at all, its * status is ZPOOL_STATUS_UNSUP_FEAT_READ. */ ZPOOL_STATUS_UNSUP_FEAT_READ, /* unsupported features for read */ ZPOOL_STATUS_UNSUP_FEAT_WRITE, /* unsupported features for write */ /* * These faults have no corresponding message ID. At the time we are * checking the status, the original reason for the FMA fault (I/O or * checksum errors) has been lost. */ ZPOOL_STATUS_FAULTED_DEV_R, /* faulted device with replicas */ ZPOOL_STATUS_FAULTED_DEV_NR, /* faulted device with no replicas */ /* * The following are not faults per se, but still an error possibly * requiring administrative attention. There is no corresponding * message ID. */ ZPOOL_STATUS_VERSION_OLDER, /* older legacy on-disk version */ ZPOOL_STATUS_FEAT_DISABLED, /* supported features are disabled */ ZPOOL_STATUS_RESILVERING, /* device being resilvered */ ZPOOL_STATUS_OFFLINE_DEV, /* device offline */ ZPOOL_STATUS_REMOVED_DEV, /* removed device */ /* * Finally, the following indicates a healthy pool. */ ZPOOL_STATUS_OK } zpool_status_t; extern zpool_status_t zpool_get_status(zpool_handle_t *, char **, zpool_errata_t *); extern zpool_status_t zpool_import_status(nvlist_t *, char **, zpool_errata_t *); /* * Statistics and configuration functions. */ extern nvlist_t *zpool_get_config(zpool_handle_t *, nvlist_t **); extern nvlist_t *zpool_get_features(zpool_handle_t *); extern int zpool_refresh_stats(zpool_handle_t *, boolean_t *); extern int zpool_get_errlog(zpool_handle_t *, nvlist_t **); /* * Import and export functions */ extern int zpool_export(zpool_handle_t *, boolean_t, const char *); extern int zpool_export_force(zpool_handle_t *, const char *); extern int zpool_import(libzfs_handle_t *, nvlist_t *, const char *, char *altroot); extern int zpool_import_props(libzfs_handle_t *, nvlist_t *, const char *, nvlist_t *, int); extern void zpool_print_unsup_feat(nvlist_t *config); /* * Miscellaneous pool functions */ struct zfs_cmd; extern const char *zfs_history_event_names[]; typedef enum { VDEV_NAME_PATH = 1 << 0, VDEV_NAME_GUID = 1 << 1, VDEV_NAME_FOLLOW_LINKS = 1 << 2, VDEV_NAME_TYPE_ID = 1 << 3, } vdev_name_t; extern char *zpool_vdev_name(libzfs_handle_t *, zpool_handle_t *, nvlist_t *, int name_flags); extern int zpool_upgrade(zpool_handle_t *, uint64_t); extern int zpool_get_history(zpool_handle_t *, nvlist_t **, uint64_t *, boolean_t *); extern int zpool_events_next(libzfs_handle_t *, nvlist_t **, int *, unsigned, int); extern int zpool_events_clear(libzfs_handle_t *, int *); extern int zpool_events_seek(libzfs_handle_t *, uint64_t, int); extern void zpool_obj_to_path(zpool_handle_t *, uint64_t, uint64_t, char *, size_t len); extern int zfs_ioctl(libzfs_handle_t *, int, struct zfs_cmd *); extern int zpool_get_physpath(zpool_handle_t *, char *, size_t); extern void zpool_explain_recover(libzfs_handle_t *, const char *, int, nvlist_t *); extern int zpool_checkpoint(zpool_handle_t *); extern int zpool_discard_checkpoint(zpool_handle_t *); /* * Basic handle manipulations. These functions do not create or destroy the * underlying datasets, only the references to them. */ extern zfs_handle_t *zfs_open(libzfs_handle_t *, const char *, int); extern zfs_handle_t *zfs_handle_dup(zfs_handle_t *); extern void zfs_close(zfs_handle_t *); extern zfs_type_t zfs_get_type(const zfs_handle_t *); extern const char *zfs_get_name(const zfs_handle_t *); extern zpool_handle_t *zfs_get_pool_handle(const zfs_handle_t *); extern const char *zfs_get_pool_name(const zfs_handle_t *); /* * Property management functions. Some functions are shared with the kernel, * and are found in sys/fs/zfs.h. */ /* * zfs dataset property management */ extern const char *zfs_prop_default_string(zfs_prop_t); extern uint64_t zfs_prop_default_numeric(zfs_prop_t); extern const char *zfs_prop_column_name(zfs_prop_t); extern boolean_t zfs_prop_align_right(zfs_prop_t); extern nvlist_t *zfs_valid_proplist(libzfs_handle_t *, zfs_type_t, nvlist_t *, uint64_t, zfs_handle_t *, zpool_handle_t *, boolean_t, const char *); extern const char *zfs_prop_to_name(zfs_prop_t); extern int zfs_prop_set(zfs_handle_t *, const char *, const char *); extern int zfs_prop_set_list(zfs_handle_t *, nvlist_t *); extern int zfs_prop_get(zfs_handle_t *, zfs_prop_t, char *, size_t, zprop_source_t *, char *, size_t, boolean_t); extern int zfs_prop_get_recvd(zfs_handle_t *, const char *, char *, size_t, boolean_t); extern int zfs_prop_get_numeric(zfs_handle_t *, zfs_prop_t, uint64_t *, zprop_source_t *, char *, size_t); extern int zfs_prop_get_userquota_int(zfs_handle_t *zhp, const char *propname, uint64_t *propvalue); extern int zfs_prop_get_userquota(zfs_handle_t *zhp, const char *propname, char *propbuf, int proplen, boolean_t literal); extern int zfs_prop_get_written_int(zfs_handle_t *zhp, const char *propname, uint64_t *propvalue); extern int zfs_prop_get_written(zfs_handle_t *zhp, const char *propname, char *propbuf, int proplen, boolean_t literal); extern int zfs_prop_get_feature(zfs_handle_t *zhp, const char *propname, char *buf, size_t len); extern uint64_t getprop_uint64(zfs_handle_t *, zfs_prop_t, char **); extern uint64_t zfs_prop_get_int(zfs_handle_t *, zfs_prop_t); extern int zfs_prop_inherit(zfs_handle_t *, const char *, boolean_t); extern const char *zfs_prop_values(zfs_prop_t); extern int zfs_prop_is_string(zfs_prop_t prop); extern nvlist_t *zfs_get_all_props(zfs_handle_t *); extern nvlist_t *zfs_get_user_props(zfs_handle_t *); extern nvlist_t *zfs_get_recvd_props(zfs_handle_t *); extern nvlist_t *zfs_get_clones_nvl(zfs_handle_t *); /* * zfs encryption management */ extern int zfs_crypto_get_encryption_root(zfs_handle_t *, boolean_t *, char *); extern int zfs_crypto_create(libzfs_handle_t *, char *, nvlist_t *, nvlist_t *, boolean_t stdin_available, uint8_t **, uint_t *); extern int zfs_crypto_clone_check(libzfs_handle_t *, zfs_handle_t *, char *, nvlist_t *); extern int zfs_crypto_attempt_load_keys(libzfs_handle_t *, char *); extern int zfs_crypto_load_key(zfs_handle_t *, boolean_t, char *); extern int zfs_crypto_unload_key(zfs_handle_t *); extern int zfs_crypto_rewrap(zfs_handle_t *, nvlist_t *, boolean_t); typedef struct zprop_list { int pl_prop; char *pl_user_prop; struct zprop_list *pl_next; boolean_t pl_all; size_t pl_width; size_t pl_recvd_width; boolean_t pl_fixed; } zprop_list_t; extern int zfs_expand_proplist(zfs_handle_t *, zprop_list_t **, boolean_t, boolean_t); extern void zfs_prune_proplist(zfs_handle_t *, uint8_t *); #define ZFS_MOUNTPOINT_NONE "none" #define ZFS_MOUNTPOINT_LEGACY "legacy" #define ZFS_FEATURE_DISABLED "disabled" #define ZFS_FEATURE_ENABLED "enabled" #define ZFS_FEATURE_ACTIVE "active" #define ZFS_UNSUPPORTED_INACTIVE "inactive" #define ZFS_UNSUPPORTED_READONLY "readonly" /* * zpool property management */ extern int zpool_expand_proplist(zpool_handle_t *, zprop_list_t **); extern int zpool_prop_get_feature(zpool_handle_t *, const char *, char *, size_t); extern const char *zpool_prop_default_string(zpool_prop_t); extern uint64_t zpool_prop_default_numeric(zpool_prop_t); extern const char *zpool_prop_column_name(zpool_prop_t); extern boolean_t zpool_prop_align_right(zpool_prop_t); /* * Functions shared by zfs and zpool property management. */ extern int zprop_iter(zprop_func func, void *cb, boolean_t show_all, boolean_t ordered, zfs_type_t type); extern int zprop_get_list(libzfs_handle_t *, char *, zprop_list_t **, zfs_type_t); extern void zprop_free_list(zprop_list_t *); #define ZFS_GET_NCOLS 5 typedef enum { GET_COL_NONE, GET_COL_NAME, GET_COL_PROPERTY, GET_COL_VALUE, GET_COL_RECVD, GET_COL_SOURCE } zfs_get_column_t; /* * Functions for printing zfs or zpool properties */ typedef struct zprop_get_cbdata { int cb_sources; zfs_get_column_t cb_columns[ZFS_GET_NCOLS]; int cb_colwidths[ZFS_GET_NCOLS + 1]; boolean_t cb_scripted; boolean_t cb_literal; boolean_t cb_first; zprop_list_t *cb_proplist; zfs_type_t cb_type; } zprop_get_cbdata_t; void zprop_print_one_property(const char *, zprop_get_cbdata_t *, const char *, const char *, zprop_source_t, const char *, const char *); /* * Iterator functions. */ typedef int (*zfs_iter_f)(zfs_handle_t *, void *); extern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_children(zfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_dependents(zfs_handle_t *, boolean_t, zfs_iter_f, void *); extern int zfs_iter_filesystems(zfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_snapshots(zfs_handle_t *, boolean_t, zfs_iter_f, void *, uint64_t, uint64_t); extern int zfs_iter_snapshots_sorted(zfs_handle_t *, zfs_iter_f, void *, uint64_t, uint64_t); extern int zfs_iter_snapspec(zfs_handle_t *, const char *, zfs_iter_f, void *); extern int zfs_iter_bookmarks(zfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_mounted(zfs_handle_t *, zfs_iter_f, void *); typedef struct get_all_cb { zfs_handle_t **cb_handles; size_t cb_alloc; size_t cb_used; } get_all_cb_t; void zfs_foreach_mountpoint(libzfs_handle_t *, zfs_handle_t **, size_t, zfs_iter_f, void *, boolean_t); void libzfs_add_handle(get_all_cb_t *, zfs_handle_t *); /* * Functions to create and destroy datasets. */ extern int zfs_create(libzfs_handle_t *, const char *, zfs_type_t, nvlist_t *); extern int zfs_create_ancestors(libzfs_handle_t *, const char *); extern int zfs_destroy(zfs_handle_t *, boolean_t); extern int zfs_destroy_snaps(zfs_handle_t *, char *, boolean_t); extern int zfs_destroy_snaps_nvl(libzfs_handle_t *, nvlist_t *, boolean_t); extern int zfs_clone(zfs_handle_t *, const char *, nvlist_t *); extern int zfs_snapshot(libzfs_handle_t *, const char *, boolean_t, nvlist_t *); extern int zfs_snapshot_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, nvlist_t *props); extern int zfs_rollback(zfs_handle_t *, zfs_handle_t *, boolean_t); extern int zfs_rename(zfs_handle_t *, const char *, boolean_t, boolean_t); typedef struct sendflags { /* print informational messages (ie, -v was specified) */ boolean_t verbose; /* recursive send (ie, -R) */ boolean_t replicate; /* for incrementals, do all intermediate snapshots */ boolean_t doall; /* if dataset is a clone, do incremental from its origin */ boolean_t fromorigin; /* do deduplication */ boolean_t dedup; /* send properties (ie, -p) */ boolean_t props; /* do not send (no-op, ie. -n) */ boolean_t dryrun; /* parsable verbose output (ie. -P) */ boolean_t parsable; /* show progress (ie. -v) */ boolean_t progress; /* large blocks (>128K) are permitted */ boolean_t largeblock; /* WRITE_EMBEDDED records of type DATA are permitted */ boolean_t embed_data; /* compressed WRITE records are permitted */ boolean_t compress; /* raw encrypted records are permitted */ boolean_t raw; /* only send received properties (ie. -b) */ boolean_t backup; /* include snapshot holds in send stream */ boolean_t holds; } sendflags_t; typedef boolean_t (snapfilter_cb_t)(zfs_handle_t *, void *); extern int zfs_send(zfs_handle_t *, const char *, const char *, sendflags_t *, int, snapfilter_cb_t, void *, nvlist_t **); extern int zfs_send_one(zfs_handle_t *, const char *, int, sendflags_t flags); extern int zfs_send_resume(libzfs_handle_t *, sendflags_t *, int outfd, const char *); extern nvlist_t *zfs_send_resume_token_to_nvlist(libzfs_handle_t *hdl, const char *token); extern int zfs_promote(zfs_handle_t *); extern int zfs_hold(zfs_handle_t *, const char *, const char *, boolean_t, int); extern int zfs_hold_nvl(zfs_handle_t *, int, nvlist_t *); extern int zfs_release(zfs_handle_t *, const char *, const char *, boolean_t); extern int zfs_get_holds(zfs_handle_t *, nvlist_t **); extern uint64_t zvol_volsize_to_reservation(zpool_handle_t *, uint64_t, nvlist_t *); typedef int (*zfs_userspace_cb_t)(void *arg, const char *domain, uid_t rid, uint64_t space); extern int zfs_userspace(zfs_handle_t *, zfs_userquota_prop_t, zfs_userspace_cb_t, void *); extern int zfs_get_fsacl(zfs_handle_t *, nvlist_t **); extern int zfs_set_fsacl(zfs_handle_t *, boolean_t, nvlist_t *); typedef struct recvflags { /* print informational messages (ie, -v was specified) */ boolean_t verbose; /* the destination is a prefix, not the exact fs (ie, -d) */ boolean_t isprefix; /* * Only the tail of the sent snapshot path is appended to the * destination to determine the received snapshot name (ie, -e). */ boolean_t istail; /* do not actually do the recv, just check if it would work (ie, -n) */ boolean_t dryrun; /* rollback/destroy filesystems as necessary (eg, -F) */ boolean_t force; /* set "canmount=off" on all modified filesystems */ boolean_t canmountoff; /* * Mark the file systems as "resumable" and do not destroy them if the * receive is interrupted */ boolean_t resumable; /* byteswap flag is used internally; callers need not specify */ boolean_t byteswap; /* do not mount file systems as they are extracted (private) */ boolean_t nomount; /* Was holds flag set in the compound header? */ boolean_t holds; /* skip receive of snapshot holds */ boolean_t skipholds; } recvflags_t; extern int zfs_receive(libzfs_handle_t *, const char *, nvlist_t *, recvflags_t *, int, avl_tree_t *); typedef enum diff_flags { ZFS_DIFF_PARSEABLE = 0x1, ZFS_DIFF_TIMESTAMP = 0x2, ZFS_DIFF_CLASSIFY = 0x4 } diff_flags_t; extern int zfs_show_diffs(zfs_handle_t *, int, const char *, const char *, int); /* * Miscellaneous functions. */ extern const char *zfs_type_to_name(zfs_type_t); extern void zfs_refresh_properties(zfs_handle_t *); extern int zfs_name_valid(const char *, zfs_type_t); extern zfs_handle_t *zfs_path_to_zhandle(libzfs_handle_t *, char *, zfs_type_t); extern int zfs_parent_name(zfs_handle_t *, char *, size_t); extern boolean_t zfs_dataset_exists(libzfs_handle_t *, const char *, zfs_type_t); extern int zfs_spa_version(zfs_handle_t *, int *); extern boolean_t zfs_bookmark_exists(const char *path); /* * Mount support functions. */ extern boolean_t is_mounted(libzfs_handle_t *, const char *special, char **); extern boolean_t zfs_is_mounted(zfs_handle_t *, char **); extern int zfs_mount(zfs_handle_t *, const char *, int); extern int zfs_unmount(zfs_handle_t *, const char *, int); extern int zfs_unmountall(zfs_handle_t *, int); /* * Share support functions. */ extern boolean_t zfs_is_shared(zfs_handle_t *); extern int zfs_share(zfs_handle_t *); extern int zfs_unshare(zfs_handle_t *); /* * Protocol-specific share support functions. */ extern boolean_t zfs_is_shared_nfs(zfs_handle_t *, char **); extern boolean_t zfs_is_shared_smb(zfs_handle_t *, char **); extern int zfs_share_nfs(zfs_handle_t *); extern int zfs_share_smb(zfs_handle_t *); extern int zfs_shareall(zfs_handle_t *); extern int zfs_unshare_nfs(zfs_handle_t *, const char *); extern int zfs_unshare_smb(zfs_handle_t *, const char *); extern int zfs_unshareall_nfs(zfs_handle_t *); extern int zfs_unshareall_smb(zfs_handle_t *); extern int zfs_unshareall_bypath(zfs_handle_t *, const char *); extern int zfs_unshareall_bytype(zfs_handle_t *, const char *, const char *); extern int zfs_unshareall(zfs_handle_t *); extern int zfs_deleg_share_nfs(libzfs_handle_t *, char *, char *, char *, void *, void *, int, zfs_share_op_t); extern int zfs_nicestrtonum(libzfs_handle_t *, const char *, uint64_t *); /* * Utility functions to run an external process. */ #define STDOUT_VERBOSE 0x01 #define STDERR_VERBOSE 0x02 #define NO_DEFAULT_PATH 0x04 /* Don't use $PATH to lookup the command */ int libzfs_run_process(const char *, char **, int flags); int libzfs_run_process_get_stdout(const char *path, char *argv[], char *env[], char **lines[], int *lines_cnt); int libzfs_run_process_get_stdout_nopath(const char *path, char *argv[], char *env[], char **lines[], int *lines_cnt); void libzfs_free_str_array(char **strs, int count); int libzfs_envvar_is_set(char *envvar); /* * Utility functions for zfs version */ extern void zfs_version_userland(char *, int); extern int zfs_version_kernel(char *, int); extern int zfs_version_print(void); /* * Given a device or file, determine if it is part of a pool. */ extern int zpool_in_use(libzfs_handle_t *, int, pool_state_t *, char **, boolean_t *); /* * Label manipulation. */ extern int zpool_clear_label(int); /* * Management interfaces for SMB ACL files */ int zfs_smb_acl_add(libzfs_handle_t *, char *, char *, char *); int zfs_smb_acl_remove(libzfs_handle_t *, char *, char *, char *); int zfs_smb_acl_purge(libzfs_handle_t *, char *, char *); int zfs_smb_acl_rename(libzfs_handle_t *, char *, char *, char *, char *); /* * Enable and disable datasets within a pool by mounting/unmounting and * sharing/unsharing them. */ extern int zpool_enable_datasets(zpool_handle_t *, const char *, int); extern int zpool_disable_datasets(zpool_handle_t *, boolean_t); extern int zfs_remap_indirects(libzfs_handle_t *hdl, const char *); #ifdef __cplusplus } #endif #endif /* _LIBZFS_H */ zfs-0.8.3/include/PaxHeaders.151519/libzfs_core.h0000644000000000000000000000007413607166147017523 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.919407936 zfs-0.8.3/include/libzfs_core.h0000644016037001603700000001034113607166147017517 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2012, 2017 by Delphix. All rights reserved. * Copyright (c) 2017 Datto Inc. * Copyright 2017 RackTop Systems. * Copyright (c) 2017 Open-E, Inc. All Rights Reserved. */ #ifndef _LIBZFS_CORE_H #define _LIBZFS_CORE_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif int libzfs_core_init(void); void libzfs_core_fini(void); /* * NB: this type should be kept binary compatible with dmu_objset_type_t. */ enum lzc_dataset_type { LZC_DATSET_TYPE_ZFS = 2, LZC_DATSET_TYPE_ZVOL }; int lzc_remap(const char *fsname); int lzc_snapshot(nvlist_t *, nvlist_t *, nvlist_t **); int lzc_create(const char *, enum lzc_dataset_type, nvlist_t *, uint8_t *, uint_t); int lzc_clone(const char *, const char *, nvlist_t *); int lzc_promote(const char *, char *, int); int lzc_destroy_snaps(nvlist_t *, boolean_t, nvlist_t **); int lzc_bookmark(nvlist_t *, nvlist_t **); int lzc_get_bookmarks(const char *, nvlist_t *, nvlist_t **); int lzc_destroy_bookmarks(nvlist_t *, nvlist_t **); int lzc_load_key(const char *, boolean_t, uint8_t *, uint_t); int lzc_unload_key(const char *); int lzc_change_key(const char *, uint64_t, nvlist_t *, uint8_t *, uint_t); int lzc_initialize(const char *, pool_initialize_func_t, nvlist_t *, nvlist_t **); int lzc_trim(const char *, pool_trim_func_t, uint64_t, boolean_t, nvlist_t *, nvlist_t **); int lzc_snaprange_space(const char *, const char *, uint64_t *); int lzc_hold(nvlist_t *, int, nvlist_t **); int lzc_release(nvlist_t *, nvlist_t **); int lzc_get_holds(const char *, nvlist_t **); enum lzc_send_flags { LZC_SEND_FLAG_EMBED_DATA = 1 << 0, LZC_SEND_FLAG_LARGE_BLOCK = 1 << 1, LZC_SEND_FLAG_COMPRESS = 1 << 2, LZC_SEND_FLAG_RAW = 1 << 3, }; int lzc_send(const char *, const char *, int, enum lzc_send_flags); int lzc_send_resume(const char *, const char *, int, enum lzc_send_flags, uint64_t, uint64_t); int lzc_send_space(const char *, const char *, enum lzc_send_flags, uint64_t *); struct dmu_replay_record; int lzc_receive(const char *, nvlist_t *, const char *, boolean_t, boolean_t, int); int lzc_receive_resumable(const char *, nvlist_t *, const char *, boolean_t, boolean_t, int); int lzc_receive_with_header(const char *, nvlist_t *, const char *, boolean_t, boolean_t, boolean_t, int, const struct dmu_replay_record *); int lzc_receive_one(const char *, nvlist_t *, const char *, boolean_t, boolean_t, boolean_t, int, const struct dmu_replay_record *, int, uint64_t *, uint64_t *, uint64_t *, nvlist_t **); int lzc_receive_with_cmdprops(const char *, nvlist_t *, nvlist_t *, uint8_t *, uint_t, const char *, boolean_t, boolean_t, boolean_t, int, const struct dmu_replay_record *, int, uint64_t *, uint64_t *, uint64_t *, nvlist_t **); boolean_t lzc_exists(const char *); int lzc_rollback(const char *, char *, int); int lzc_rollback_to(const char *, const char *); int lzc_rename(const char *, const char *); int lzc_destroy(const char *); int lzc_channel_program(const char *, const char *, uint64_t, uint64_t, nvlist_t *, nvlist_t **); int lzc_channel_program_nosync(const char *, const char *, uint64_t, uint64_t, nvlist_t *, nvlist_t **); int lzc_sync(const char *, nvlist_t *, nvlist_t **); int lzc_reopen(const char *, boolean_t); int lzc_pool_checkpoint(const char *); int lzc_pool_checkpoint_discard(const char *); #ifdef __cplusplus } #endif #endif /* _LIBZFS_CORE_H */ zfs-0.8.3/include/PaxHeaders.151519/zfeature_common.h0000644000000000000000000000007413607166147020417 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.894407133 zfs-0.8.3/include/zfeature_common.h0000644016037001603700000000732713607166147020425 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. * Copyright (c) 2013, Joyent, Inc. All rights reserved. * Copyright (c) 2017, Intel Corporation. */ #ifndef _ZFEATURE_COMMON_H #define _ZFEATURE_COMMON_H #include #include #include #ifdef __cplusplus extern "C" { #endif struct zfeature_info; typedef enum spa_feature { SPA_FEATURE_NONE = -1, SPA_FEATURE_ASYNC_DESTROY, SPA_FEATURE_EMPTY_BPOBJ, SPA_FEATURE_LZ4_COMPRESS, SPA_FEATURE_MULTI_VDEV_CRASH_DUMP, SPA_FEATURE_SPACEMAP_HISTOGRAM, SPA_FEATURE_ENABLED_TXG, SPA_FEATURE_HOLE_BIRTH, SPA_FEATURE_EXTENSIBLE_DATASET, SPA_FEATURE_EMBEDDED_DATA, SPA_FEATURE_BOOKMARKS, SPA_FEATURE_FS_SS_LIMIT, SPA_FEATURE_LARGE_BLOCKS, SPA_FEATURE_LARGE_DNODE, SPA_FEATURE_SHA512, SPA_FEATURE_SKEIN, SPA_FEATURE_EDONR, SPA_FEATURE_USEROBJ_ACCOUNTING, SPA_FEATURE_ENCRYPTION, SPA_FEATURE_PROJECT_QUOTA, SPA_FEATURE_DEVICE_REMOVAL, SPA_FEATURE_OBSOLETE_COUNTS, SPA_FEATURE_POOL_CHECKPOINT, SPA_FEATURE_SPACEMAP_V2, SPA_FEATURE_ALLOCATION_CLASSES, SPA_FEATURE_RESILVER_DEFER, SPA_FEATURE_BOOKMARK_V2, SPA_FEATURES } spa_feature_t; #define SPA_FEATURE_DISABLED (-1ULL) typedef enum zfeature_flags { /* Can open pool readonly even if this feature is not supported. */ ZFEATURE_FLAG_READONLY_COMPAT = (1 << 0), /* * Is this feature necessary to load the pool? i.e. do we need this * feature to read the full feature list out of the MOS? */ ZFEATURE_FLAG_MOS = (1 << 1), /* Activate this feature at the same time it is enabled. */ ZFEATURE_FLAG_ACTIVATE_ON_ENABLE = (1 << 2), /* Each dataset has a field set if it has ever used this feature. */ ZFEATURE_FLAG_PER_DATASET = (1 << 3) } zfeature_flags_t; typedef enum zfeature_type { ZFEATURE_TYPE_BOOLEAN, ZFEATURE_TYPE_UINT64_ARRAY, ZFEATURE_NUM_TYPES } zfeature_type_t; typedef struct zfeature_info { spa_feature_t fi_feature; const char *fi_uname; /* User-facing feature name */ const char *fi_guid; /* On-disk feature identifier */ const char *fi_desc; /* Feature description */ zfeature_flags_t fi_flags; boolean_t fi_zfs_mod_supported; /* supported by running zfs module */ zfeature_type_t fi_type; /* Only relevant for PER_DATASET features */ /* array of dependencies, terminated by SPA_FEATURE_NONE */ const spa_feature_t *fi_depends; } zfeature_info_t; typedef int (zfeature_func_t)(zfeature_info_t *, void *); #define ZFS_FEATURE_DEBUG extern zfeature_info_t spa_feature_table[SPA_FEATURES]; extern boolean_t zfeature_is_valid_guid(const char *); extern boolean_t zfeature_is_supported(const char *); extern int zfeature_lookup_guid(const char *, spa_feature_t *); extern int zfeature_lookup_name(const char *, spa_feature_t *); extern boolean_t zfeature_depends_on(spa_feature_t, spa_feature_t); extern void zpool_feature_init(void); #ifdef __cplusplus } #endif #endif /* _ZFEATURE_COMMON_H */ zfs-0.8.3/include/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147017105 xustar000000000000000030 atime=1579730428.733117667 30 ctime=1579730468.927408192 zfs-0.8.3/include/Makefile.am0000644016037001603700000000153113607166147017102 0ustar00hutter2hutter200000000000000SUBDIRS = linux spl sys COMMON_H = \ $(top_srcdir)/include/zfeature_common.h \ $(top_srcdir)/include/zfs_comutil.h \ $(top_srcdir)/include/zfs_deleg.h \ $(top_srcdir)/include/zfs_fletcher.h \ $(top_srcdir)/include/zfs_namecheck.h \ $(top_srcdir)/include/zfs_prop.h USER_H = \ $(top_srcdir)/include/libnvpair.h \ $(top_srcdir)/include/libuutil_common.h \ $(top_srcdir)/include/libuutil.h \ $(top_srcdir)/include/libuutil_impl.h \ $(top_srcdir)/include/libzfs.h \ $(top_srcdir)/include/libzfs_core.h \ $(top_srcdir)/include/libzfs_impl.h \ $(top_srcdir)/include/libzutil.h \ $(top_srcdir)/include/thread_pool.h EXTRA_DIST = $(COMMON_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include kernel_HEADERS = $(COMMON_H) endif zfs-0.8.3/include/PaxHeaders.151519/sys0000644000000000000000000000013213612143045015571 xustar000000000000000030 mtime=1579730469.735434136 30 atime=1579730489.077055163 30 ctime=1579730469.735434136 zfs-0.8.3/include/sys/0000775016037001603700000000000013612143045015652 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/sys/PaxHeaders.151519/fs0000644000000000000000000000013213612143045016201 xustar000000000000000030 mtime=1579730469.915439916 30 atime=1579730489.077055163 30 ctime=1579730469.915439916 zfs-0.8.3/include/sys/fs/0000775016037001603700000000000013612143045016262 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/sys/fs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132020325 xustar000000000000000030 atime=1579730429.261134619 30 ctime=1579730469.913439852 zfs-0.8.3/include/sys/fs/Makefile.am0000644016037001603700000000052413607166132020323 0ustar00hutter2hutter200000000000000COMMON_H = \ $(top_srcdir)/include/sys/fs/zfs.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs/sys/fs libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fs kernel_HEADERS = $(COMMON_H) $(KERNEL_H) endif zfs-0.8.3/include/sys/fs/PaxHeaders.151519/zfs.h0000644000000000000000000000007413612141513017234 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.911439788 zfs-0.8.3/include/sys/fs/zfs.h0000644016037001603700000013760313612141513017243 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2013, 2017 Joyent, Inc. All rights reserved. * Copyright (c) 2014 Integros [integros.com] * Copyright (c) 2017, Intel Corporation. * Copyright (c) 2019 Datto Inc. */ /* Portions Copyright 2010 Robert Milkowski */ #ifndef _SYS_FS_ZFS_H #define _SYS_FS_ZFS_H #include #include #ifdef __cplusplus extern "C" { #endif /* * Types and constants shared between userland and the kernel. */ /* * Each dataset can be one of the following types. These constants can be * combined into masks that can be passed to various functions. */ typedef enum { ZFS_TYPE_FILESYSTEM = (1 << 0), ZFS_TYPE_SNAPSHOT = (1 << 1), ZFS_TYPE_VOLUME = (1 << 2), ZFS_TYPE_POOL = (1 << 3), ZFS_TYPE_BOOKMARK = (1 << 4) } zfs_type_t; /* * NB: lzc_dataset_type should be updated whenever a new objset type is added, * if it represents a real type of a dataset that can be created from userland. */ typedef enum dmu_objset_type { DMU_OST_NONE, DMU_OST_META, DMU_OST_ZFS, DMU_OST_ZVOL, DMU_OST_OTHER, /* For testing only! */ DMU_OST_ANY, /* Be careful! */ DMU_OST_NUMTYPES } dmu_objset_type_t; #define ZFS_TYPE_DATASET \ (ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME | ZFS_TYPE_SNAPSHOT) /* * All of these include the terminating NUL byte. */ #define ZAP_MAXNAMELEN 256 #define ZAP_MAXVALUELEN (1024 * 8) #define ZAP_OLDMAXVALUELEN 1024 #define ZFS_MAX_DATASET_NAME_LEN 256 /* * Dataset properties are identified by these constants and must be added to * the end of this list to ensure that external consumers are not affected * by the change. If you make any changes to this list, be sure to update * the property table in module/zcommon/zfs_prop.c. */ typedef enum { ZPROP_CONT = -2, ZPROP_INVAL = -1, ZFS_PROP_TYPE = 0, ZFS_PROP_CREATION, ZFS_PROP_USED, ZFS_PROP_AVAILABLE, ZFS_PROP_REFERENCED, ZFS_PROP_COMPRESSRATIO, ZFS_PROP_MOUNTED, ZFS_PROP_ORIGIN, ZFS_PROP_QUOTA, ZFS_PROP_RESERVATION, ZFS_PROP_VOLSIZE, ZFS_PROP_VOLBLOCKSIZE, ZFS_PROP_RECORDSIZE, ZFS_PROP_MOUNTPOINT, ZFS_PROP_SHARENFS, ZFS_PROP_CHECKSUM, ZFS_PROP_COMPRESSION, ZFS_PROP_ATIME, ZFS_PROP_DEVICES, ZFS_PROP_EXEC, ZFS_PROP_SETUID, ZFS_PROP_READONLY, ZFS_PROP_ZONED, ZFS_PROP_SNAPDIR, ZFS_PROP_PRIVATE, /* not exposed to user, temporary */ ZFS_PROP_ACLINHERIT, ZFS_PROP_CREATETXG, ZFS_PROP_NAME, /* not exposed to the user */ ZFS_PROP_CANMOUNT, ZFS_PROP_ISCSIOPTIONS, /* not exposed to the user */ ZFS_PROP_XATTR, ZFS_PROP_NUMCLONES, /* not exposed to the user */ ZFS_PROP_COPIES, ZFS_PROP_VERSION, ZFS_PROP_UTF8ONLY, ZFS_PROP_NORMALIZE, ZFS_PROP_CASE, ZFS_PROP_VSCAN, ZFS_PROP_NBMAND, ZFS_PROP_SHARESMB, ZFS_PROP_REFQUOTA, ZFS_PROP_REFRESERVATION, ZFS_PROP_GUID, ZFS_PROP_PRIMARYCACHE, ZFS_PROP_SECONDARYCACHE, ZFS_PROP_USEDSNAP, ZFS_PROP_USEDDS, ZFS_PROP_USEDCHILD, ZFS_PROP_USEDREFRESERV, ZFS_PROP_USERACCOUNTING, /* not exposed to the user */ ZFS_PROP_STMF_SHAREINFO, /* not exposed to the user */ ZFS_PROP_DEFER_DESTROY, ZFS_PROP_USERREFS, ZFS_PROP_LOGBIAS, ZFS_PROP_UNIQUE, /* not exposed to the user */ ZFS_PROP_OBJSETID, ZFS_PROP_DEDUP, ZFS_PROP_MLSLABEL, ZFS_PROP_SYNC, ZFS_PROP_DNODESIZE, ZFS_PROP_REFRATIO, ZFS_PROP_WRITTEN, ZFS_PROP_CLONES, ZFS_PROP_LOGICALUSED, ZFS_PROP_LOGICALREFERENCED, ZFS_PROP_INCONSISTENT, /* not exposed to the user */ ZFS_PROP_VOLMODE, ZFS_PROP_FILESYSTEM_LIMIT, ZFS_PROP_SNAPSHOT_LIMIT, ZFS_PROP_FILESYSTEM_COUNT, ZFS_PROP_SNAPSHOT_COUNT, ZFS_PROP_SNAPDEV, ZFS_PROP_ACLTYPE, ZFS_PROP_SELINUX_CONTEXT, ZFS_PROP_SELINUX_FSCONTEXT, ZFS_PROP_SELINUX_DEFCONTEXT, ZFS_PROP_SELINUX_ROOTCONTEXT, ZFS_PROP_RELATIME, ZFS_PROP_REDUNDANT_METADATA, ZFS_PROP_OVERLAY, ZFS_PROP_PREV_SNAP, ZFS_PROP_RECEIVE_RESUME_TOKEN, ZFS_PROP_ENCRYPTION, ZFS_PROP_KEYLOCATION, ZFS_PROP_KEYFORMAT, ZFS_PROP_PBKDF2_SALT, ZFS_PROP_PBKDF2_ITERS, ZFS_PROP_ENCRYPTION_ROOT, ZFS_PROP_KEY_GUID, ZFS_PROP_KEYSTATUS, ZFS_PROP_REMAPTXG, /* not exposed to the user */ ZFS_PROP_SPECIAL_SMALL_BLOCKS, ZFS_PROP_IVSET_GUID, /* not exposed to the user */ ZFS_NUM_PROPS } zfs_prop_t; typedef enum { ZFS_PROP_USERUSED, ZFS_PROP_USERQUOTA, ZFS_PROP_GROUPUSED, ZFS_PROP_GROUPQUOTA, ZFS_PROP_USEROBJUSED, ZFS_PROP_USEROBJQUOTA, ZFS_PROP_GROUPOBJUSED, ZFS_PROP_GROUPOBJQUOTA, ZFS_PROP_PROJECTUSED, ZFS_PROP_PROJECTQUOTA, ZFS_PROP_PROJECTOBJUSED, ZFS_PROP_PROJECTOBJQUOTA, ZFS_NUM_USERQUOTA_PROPS } zfs_userquota_prop_t; extern const char *zfs_userquota_prop_prefixes[ZFS_NUM_USERQUOTA_PROPS]; /* * Pool properties are identified by these constants and must be added to the * end of this list to ensure that external consumers are not affected * by the change. If you make any changes to this list, be sure to update * the property table in module/zcommon/zpool_prop.c. */ typedef enum { ZPOOL_PROP_INVAL = -1, ZPOOL_PROP_NAME, ZPOOL_PROP_SIZE, ZPOOL_PROP_CAPACITY, ZPOOL_PROP_ALTROOT, ZPOOL_PROP_HEALTH, ZPOOL_PROP_GUID, ZPOOL_PROP_VERSION, ZPOOL_PROP_BOOTFS, ZPOOL_PROP_DELEGATION, ZPOOL_PROP_AUTOREPLACE, ZPOOL_PROP_CACHEFILE, ZPOOL_PROP_FAILUREMODE, ZPOOL_PROP_LISTSNAPS, ZPOOL_PROP_AUTOEXPAND, ZPOOL_PROP_DEDUPDITTO, ZPOOL_PROP_DEDUPRATIO, ZPOOL_PROP_FREE, ZPOOL_PROP_ALLOCATED, ZPOOL_PROP_READONLY, ZPOOL_PROP_ASHIFT, ZPOOL_PROP_COMMENT, ZPOOL_PROP_EXPANDSZ, ZPOOL_PROP_FREEING, ZPOOL_PROP_FRAGMENTATION, ZPOOL_PROP_LEAKED, ZPOOL_PROP_MAXBLOCKSIZE, ZPOOL_PROP_TNAME, ZPOOL_PROP_MAXDNODESIZE, ZPOOL_PROP_MULTIHOST, ZPOOL_PROP_CHECKPOINT, ZPOOL_PROP_LOAD_GUID, ZPOOL_PROP_AUTOTRIM, ZPOOL_NUM_PROPS } zpool_prop_t; /* Small enough to not hog a whole line of printout in zpool(1M). */ #define ZPROP_MAX_COMMENT 32 #define ZPROP_VALUE "value" #define ZPROP_SOURCE "source" typedef enum { ZPROP_SRC_NONE = 0x1, ZPROP_SRC_DEFAULT = 0x2, ZPROP_SRC_TEMPORARY = 0x4, ZPROP_SRC_LOCAL = 0x8, ZPROP_SRC_INHERITED = 0x10, ZPROP_SRC_RECEIVED = 0x20 } zprop_source_t; #define ZPROP_SRC_ALL 0x3f #define ZPROP_SOURCE_VAL_RECVD "$recvd" #define ZPROP_N_MORE_ERRORS "N_MORE_ERRORS" /* * Dataset flag implemented as a special entry in the props zap object * indicating that the dataset has received properties on or after * SPA_VERSION_RECVD_PROPS. The first such receive blows away local properties * just as it did in earlier versions, and thereafter, local properties are * preserved. */ #define ZPROP_HAS_RECVD "$hasrecvd" typedef enum { ZPROP_ERR_NOCLEAR = 0x1, /* failure to clear existing props */ ZPROP_ERR_NORESTORE = 0x2 /* failure to restore props on error */ } zprop_errflags_t; typedef int (*zprop_func)(int, void *); /* * Properties to be set on the root file system of a new pool * are stuffed into their own nvlist, which is then included in * the properties nvlist with the pool properties. */ #define ZPOOL_ROOTFS_PROPS "root-props-nvl" /* * Length of 'written@' and 'written#' */ #define ZFS_WRITTEN_PROP_PREFIX_LEN 8 /* * Dataset property functions shared between libzfs and kernel. */ const char *zfs_prop_default_string(zfs_prop_t); uint64_t zfs_prop_default_numeric(zfs_prop_t); boolean_t zfs_prop_readonly(zfs_prop_t); boolean_t zfs_prop_visible(zfs_prop_t prop); boolean_t zfs_prop_inheritable(zfs_prop_t); boolean_t zfs_prop_setonce(zfs_prop_t); boolean_t zfs_prop_encryption_key_param(zfs_prop_t); boolean_t zfs_prop_valid_keylocation(const char *, boolean_t); const char *zfs_prop_to_name(zfs_prop_t); zfs_prop_t zfs_name_to_prop(const char *); boolean_t zfs_prop_user(const char *); boolean_t zfs_prop_userquota(const char *); boolean_t zfs_prop_written(const char *); int zfs_prop_index_to_string(zfs_prop_t, uint64_t, const char **); int zfs_prop_string_to_index(zfs_prop_t, const char *, uint64_t *); uint64_t zfs_prop_random_value(zfs_prop_t, uint64_t seed); boolean_t zfs_prop_valid_for_type(int, zfs_type_t, boolean_t); /* * Pool property functions shared between libzfs and kernel. */ zpool_prop_t zpool_name_to_prop(const char *); const char *zpool_prop_to_name(zpool_prop_t); const char *zpool_prop_default_string(zpool_prop_t); uint64_t zpool_prop_default_numeric(zpool_prop_t); boolean_t zpool_prop_readonly(zpool_prop_t); boolean_t zpool_prop_setonce(zpool_prop_t); boolean_t zpool_prop_feature(const char *); boolean_t zpool_prop_unsupported(const char *); int zpool_prop_index_to_string(zpool_prop_t, uint64_t, const char **); int zpool_prop_string_to_index(zpool_prop_t, const char *, uint64_t *); uint64_t zpool_prop_random_value(zpool_prop_t, uint64_t seed); /* * Definitions for the Delegation. */ typedef enum { ZFS_DELEG_WHO_UNKNOWN = 0, ZFS_DELEG_USER = 'u', ZFS_DELEG_USER_SETS = 'U', ZFS_DELEG_GROUP = 'g', ZFS_DELEG_GROUP_SETS = 'G', ZFS_DELEG_EVERYONE = 'e', ZFS_DELEG_EVERYONE_SETS = 'E', ZFS_DELEG_CREATE = 'c', ZFS_DELEG_CREATE_SETS = 'C', ZFS_DELEG_NAMED_SET = 's', ZFS_DELEG_NAMED_SET_SETS = 'S' } zfs_deleg_who_type_t; typedef enum { ZFS_DELEG_NONE = 0, ZFS_DELEG_PERM_LOCAL = 1, ZFS_DELEG_PERM_DESCENDENT = 2, ZFS_DELEG_PERM_LOCALDESCENDENT = 3, ZFS_DELEG_PERM_CREATE = 4 } zfs_deleg_inherit_t; #define ZFS_DELEG_PERM_UID "uid" #define ZFS_DELEG_PERM_GID "gid" #define ZFS_DELEG_PERM_GROUPS "groups" #define ZFS_MLSLABEL_DEFAULT "none" #define ZFS_SMB_ACL_SRC "src" #define ZFS_SMB_ACL_TARGET "target" typedef enum { ZFS_CANMOUNT_OFF = 0, ZFS_CANMOUNT_ON = 1, ZFS_CANMOUNT_NOAUTO = 2 } zfs_canmount_type_t; typedef enum { ZFS_LOGBIAS_LATENCY = 0, ZFS_LOGBIAS_THROUGHPUT = 1 } zfs_logbias_op_t; typedef enum zfs_share_op { ZFS_SHARE_NFS = 0, ZFS_UNSHARE_NFS = 1, ZFS_SHARE_SMB = 2, ZFS_UNSHARE_SMB = 3 } zfs_share_op_t; typedef enum zfs_smb_acl_op { ZFS_SMB_ACL_ADD, ZFS_SMB_ACL_REMOVE, ZFS_SMB_ACL_RENAME, ZFS_SMB_ACL_PURGE } zfs_smb_acl_op_t; typedef enum zfs_cache_type { ZFS_CACHE_NONE = 0, ZFS_CACHE_METADATA = 1, ZFS_CACHE_ALL = 2 } zfs_cache_type_t; typedef enum { ZFS_SYNC_STANDARD = 0, ZFS_SYNC_ALWAYS = 1, ZFS_SYNC_DISABLED = 2 } zfs_sync_type_t; typedef enum { ZFS_XATTR_OFF = 0, ZFS_XATTR_DIR = 1, ZFS_XATTR_SA = 2 } zfs_xattr_type_t; typedef enum { ZFS_DNSIZE_LEGACY = 0, ZFS_DNSIZE_AUTO = 1, ZFS_DNSIZE_1K = 1024, ZFS_DNSIZE_2K = 2048, ZFS_DNSIZE_4K = 4096, ZFS_DNSIZE_8K = 8192, ZFS_DNSIZE_16K = 16384 } zfs_dnsize_type_t; typedef enum { ZFS_REDUNDANT_METADATA_ALL, ZFS_REDUNDANT_METADATA_MOST } zfs_redundant_metadata_type_t; typedef enum { ZFS_VOLMODE_DEFAULT = 0, ZFS_VOLMODE_GEOM = 1, ZFS_VOLMODE_DEV = 2, ZFS_VOLMODE_NONE = 3 } zfs_volmode_t; typedef enum zfs_keystatus { ZFS_KEYSTATUS_NONE = 0, ZFS_KEYSTATUS_UNAVAILABLE, ZFS_KEYSTATUS_AVAILABLE, } zfs_keystatus_t; typedef enum zfs_keyformat { ZFS_KEYFORMAT_NONE = 0, ZFS_KEYFORMAT_RAW, ZFS_KEYFORMAT_HEX, ZFS_KEYFORMAT_PASSPHRASE, ZFS_KEYFORMAT_FORMATS } zfs_keyformat_t; typedef enum zfs_key_location { ZFS_KEYLOCATION_NONE = 0, ZFS_KEYLOCATION_PROMPT, ZFS_KEYLOCATION_URI, ZFS_KEYLOCATION_LOCATIONS } zfs_keylocation_t; #define DEFAULT_PBKDF2_ITERATIONS 350000 #define MIN_PBKDF2_ITERATIONS 100000 /* * On-disk version number. */ #define SPA_VERSION_1 1ULL #define SPA_VERSION_2 2ULL #define SPA_VERSION_3 3ULL #define SPA_VERSION_4 4ULL #define SPA_VERSION_5 5ULL #define SPA_VERSION_6 6ULL #define SPA_VERSION_7 7ULL #define SPA_VERSION_8 8ULL #define SPA_VERSION_9 9ULL #define SPA_VERSION_10 10ULL #define SPA_VERSION_11 11ULL #define SPA_VERSION_12 12ULL #define SPA_VERSION_13 13ULL #define SPA_VERSION_14 14ULL #define SPA_VERSION_15 15ULL #define SPA_VERSION_16 16ULL #define SPA_VERSION_17 17ULL #define SPA_VERSION_18 18ULL #define SPA_VERSION_19 19ULL #define SPA_VERSION_20 20ULL #define SPA_VERSION_21 21ULL #define SPA_VERSION_22 22ULL #define SPA_VERSION_23 23ULL #define SPA_VERSION_24 24ULL #define SPA_VERSION_25 25ULL #define SPA_VERSION_26 26ULL #define SPA_VERSION_27 27ULL #define SPA_VERSION_28 28ULL #define SPA_VERSION_5000 5000ULL /* * The incrementing pool version number has been replaced by pool feature * flags. For more details, see zfeature.c. */ #define SPA_VERSION SPA_VERSION_5000 #define SPA_VERSION_STRING "5000" /* * Symbolic names for the changes that caused a SPA_VERSION switch. * Used in the code when checking for presence or absence of a feature. * Feel free to define multiple symbolic names for each version if there * were multiple changes to on-disk structures during that version. * * NOTE: When checking the current SPA_VERSION in your code, be sure * to use spa_version() since it reports the version of the * last synced uberblock. Checking the in-flight version can * be dangerous in some cases. */ #define SPA_VERSION_INITIAL SPA_VERSION_1 #define SPA_VERSION_DITTO_BLOCKS SPA_VERSION_2 #define SPA_VERSION_SPARES SPA_VERSION_3 #define SPA_VERSION_RAIDZ2 SPA_VERSION_3 #define SPA_VERSION_BPOBJ_ACCOUNT SPA_VERSION_3 #define SPA_VERSION_RAIDZ_DEFLATE SPA_VERSION_3 #define SPA_VERSION_DNODE_BYTES SPA_VERSION_3 #define SPA_VERSION_ZPOOL_HISTORY SPA_VERSION_4 #define SPA_VERSION_GZIP_COMPRESSION SPA_VERSION_5 #define SPA_VERSION_BOOTFS SPA_VERSION_6 #define SPA_VERSION_SLOGS SPA_VERSION_7 #define SPA_VERSION_DELEGATED_PERMS SPA_VERSION_8 #define SPA_VERSION_FUID SPA_VERSION_9 #define SPA_VERSION_REFRESERVATION SPA_VERSION_9 #define SPA_VERSION_REFQUOTA SPA_VERSION_9 #define SPA_VERSION_UNIQUE_ACCURATE SPA_VERSION_9 #define SPA_VERSION_L2CACHE SPA_VERSION_10 #define SPA_VERSION_NEXT_CLONES SPA_VERSION_11 #define SPA_VERSION_ORIGIN SPA_VERSION_11 #define SPA_VERSION_DSL_SCRUB SPA_VERSION_11 #define SPA_VERSION_SNAP_PROPS SPA_VERSION_12 #define SPA_VERSION_USED_BREAKDOWN SPA_VERSION_13 #define SPA_VERSION_PASSTHROUGH_X SPA_VERSION_14 #define SPA_VERSION_USERSPACE SPA_VERSION_15 #define SPA_VERSION_STMF_PROP SPA_VERSION_16 #define SPA_VERSION_RAIDZ3 SPA_VERSION_17 #define SPA_VERSION_USERREFS SPA_VERSION_18 #define SPA_VERSION_HOLES SPA_VERSION_19 #define SPA_VERSION_ZLE_COMPRESSION SPA_VERSION_20 #define SPA_VERSION_DEDUP SPA_VERSION_21 #define SPA_VERSION_RECVD_PROPS SPA_VERSION_22 #define SPA_VERSION_SLIM_ZIL SPA_VERSION_23 #define SPA_VERSION_SA SPA_VERSION_24 #define SPA_VERSION_SCAN SPA_VERSION_25 #define SPA_VERSION_DIR_CLONES SPA_VERSION_26 #define SPA_VERSION_DEADLISTS SPA_VERSION_26 #define SPA_VERSION_FAST_SNAP SPA_VERSION_27 #define SPA_VERSION_MULTI_REPLACE SPA_VERSION_28 #define SPA_VERSION_BEFORE_FEATURES SPA_VERSION_28 #define SPA_VERSION_FEATURES SPA_VERSION_5000 #define SPA_VERSION_IS_SUPPORTED(v) \ (((v) >= SPA_VERSION_INITIAL && (v) <= SPA_VERSION_BEFORE_FEATURES) || \ ((v) >= SPA_VERSION_FEATURES && (v) <= SPA_VERSION)) /* * ZPL version - rev'd whenever an incompatible on-disk format change * occurs. This is independent of SPA/DMU/ZAP versioning. You must * also update the version_table[] and help message in zfs_prop.c. */ #define ZPL_VERSION_1 1ULL #define ZPL_VERSION_2 2ULL #define ZPL_VERSION_3 3ULL #define ZPL_VERSION_4 4ULL #define ZPL_VERSION_5 5ULL #define ZPL_VERSION ZPL_VERSION_5 #define ZPL_VERSION_STRING "5" #define ZPL_VERSION_INITIAL ZPL_VERSION_1 #define ZPL_VERSION_DIRENT_TYPE ZPL_VERSION_2 #define ZPL_VERSION_FUID ZPL_VERSION_3 #define ZPL_VERSION_NORMALIZATION ZPL_VERSION_3 #define ZPL_VERSION_SYSATTR ZPL_VERSION_3 #define ZPL_VERSION_USERSPACE ZPL_VERSION_4 #define ZPL_VERSION_SA ZPL_VERSION_5 /* Rewind policy information */ #define ZPOOL_NO_REWIND 1 /* No policy - default behavior */ #define ZPOOL_NEVER_REWIND 2 /* Do not search for best txg or rewind */ #define ZPOOL_TRY_REWIND 4 /* Search for best txg, but do not rewind */ #define ZPOOL_DO_REWIND 8 /* Rewind to best txg w/in deferred frees */ #define ZPOOL_EXTREME_REWIND 16 /* Allow extreme measures to find best txg */ #define ZPOOL_REWIND_MASK 28 /* All the possible rewind bits */ #define ZPOOL_REWIND_POLICIES 31 /* All the possible policy bits */ typedef struct zpool_load_policy { uint32_t zlp_rewind; /* rewind policy requested */ uint64_t zlp_maxmeta; /* max acceptable meta-data errors */ uint64_t zlp_maxdata; /* max acceptable data errors */ uint64_t zlp_txg; /* specific txg to load */ } zpool_load_policy_t; /* * The following are configuration names used in the nvlist describing a pool's * configuration. New on-disk names should be prefixed with ":" * (e.g. "org.open-zfs:") to avoid conflicting names being developed * independently. */ #define ZPOOL_CONFIG_VERSION "version" #define ZPOOL_CONFIG_POOL_NAME "name" #define ZPOOL_CONFIG_POOL_STATE "state" #define ZPOOL_CONFIG_POOL_TXG "txg" #define ZPOOL_CONFIG_POOL_GUID "pool_guid" #define ZPOOL_CONFIG_CREATE_TXG "create_txg" #define ZPOOL_CONFIG_TOP_GUID "top_guid" #define ZPOOL_CONFIG_VDEV_TREE "vdev_tree" #define ZPOOL_CONFIG_TYPE "type" #define ZPOOL_CONFIG_CHILDREN "children" #define ZPOOL_CONFIG_ID "id" #define ZPOOL_CONFIG_GUID "guid" #define ZPOOL_CONFIG_INDIRECT_OBJECT "com.delphix:indirect_object" #define ZPOOL_CONFIG_INDIRECT_BIRTHS "com.delphix:indirect_births" #define ZPOOL_CONFIG_PREV_INDIRECT_VDEV "com.delphix:prev_indirect_vdev" #define ZPOOL_CONFIG_PATH "path" #define ZPOOL_CONFIG_DEVID "devid" #define ZPOOL_CONFIG_METASLAB_ARRAY "metaslab_array" #define ZPOOL_CONFIG_METASLAB_SHIFT "metaslab_shift" #define ZPOOL_CONFIG_ASHIFT "ashift" #define ZPOOL_CONFIG_ASIZE "asize" #define ZPOOL_CONFIG_DTL "DTL" #define ZPOOL_CONFIG_SCAN_STATS "scan_stats" /* not stored on disk */ #define ZPOOL_CONFIG_REMOVAL_STATS "removal_stats" /* not stored on disk */ #define ZPOOL_CONFIG_CHECKPOINT_STATS "checkpoint_stats" /* not on disk */ #define ZPOOL_CONFIG_VDEV_STATS "vdev_stats" /* not stored on disk */ #define ZPOOL_CONFIG_INDIRECT_SIZE "indirect_size" /* not stored on disk */ /* container nvlist of extended stats */ #define ZPOOL_CONFIG_VDEV_STATS_EX "vdev_stats_ex" /* Active queue read/write stats */ #define ZPOOL_CONFIG_VDEV_SYNC_R_ACTIVE_QUEUE "vdev_sync_r_active_queue" #define ZPOOL_CONFIG_VDEV_SYNC_W_ACTIVE_QUEUE "vdev_sync_w_active_queue" #define ZPOOL_CONFIG_VDEV_ASYNC_R_ACTIVE_QUEUE "vdev_async_r_active_queue" #define ZPOOL_CONFIG_VDEV_ASYNC_W_ACTIVE_QUEUE "vdev_async_w_active_queue" #define ZPOOL_CONFIG_VDEV_SCRUB_ACTIVE_QUEUE "vdev_async_scrub_active_queue" #define ZPOOL_CONFIG_VDEV_TRIM_ACTIVE_QUEUE "vdev_async_trim_active_queue" /* Queue sizes */ #define ZPOOL_CONFIG_VDEV_SYNC_R_PEND_QUEUE "vdev_sync_r_pend_queue" #define ZPOOL_CONFIG_VDEV_SYNC_W_PEND_QUEUE "vdev_sync_w_pend_queue" #define ZPOOL_CONFIG_VDEV_ASYNC_R_PEND_QUEUE "vdev_async_r_pend_queue" #define ZPOOL_CONFIG_VDEV_ASYNC_W_PEND_QUEUE "vdev_async_w_pend_queue" #define ZPOOL_CONFIG_VDEV_SCRUB_PEND_QUEUE "vdev_async_scrub_pend_queue" #define ZPOOL_CONFIG_VDEV_TRIM_PEND_QUEUE "vdev_async_trim_pend_queue" /* Latency read/write histogram stats */ #define ZPOOL_CONFIG_VDEV_TOT_R_LAT_HISTO "vdev_tot_r_lat_histo" #define ZPOOL_CONFIG_VDEV_TOT_W_LAT_HISTO "vdev_tot_w_lat_histo" #define ZPOOL_CONFIG_VDEV_DISK_R_LAT_HISTO "vdev_disk_r_lat_histo" #define ZPOOL_CONFIG_VDEV_DISK_W_LAT_HISTO "vdev_disk_w_lat_histo" #define ZPOOL_CONFIG_VDEV_SYNC_R_LAT_HISTO "vdev_sync_r_lat_histo" #define ZPOOL_CONFIG_VDEV_SYNC_W_LAT_HISTO "vdev_sync_w_lat_histo" #define ZPOOL_CONFIG_VDEV_ASYNC_R_LAT_HISTO "vdev_async_r_lat_histo" #define ZPOOL_CONFIG_VDEV_ASYNC_W_LAT_HISTO "vdev_async_w_lat_histo" #define ZPOOL_CONFIG_VDEV_SCRUB_LAT_HISTO "vdev_scrub_histo" #define ZPOOL_CONFIG_VDEV_TRIM_LAT_HISTO "vdev_trim_histo" /* Request size histograms */ #define ZPOOL_CONFIG_VDEV_SYNC_IND_R_HISTO "vdev_sync_ind_r_histo" #define ZPOOL_CONFIG_VDEV_SYNC_IND_W_HISTO "vdev_sync_ind_w_histo" #define ZPOOL_CONFIG_VDEV_ASYNC_IND_R_HISTO "vdev_async_ind_r_histo" #define ZPOOL_CONFIG_VDEV_ASYNC_IND_W_HISTO "vdev_async_ind_w_histo" #define ZPOOL_CONFIG_VDEV_IND_SCRUB_HISTO "vdev_ind_scrub_histo" #define ZPOOL_CONFIG_VDEV_IND_TRIM_HISTO "vdev_ind_trim_histo" #define ZPOOL_CONFIG_VDEV_SYNC_AGG_R_HISTO "vdev_sync_agg_r_histo" #define ZPOOL_CONFIG_VDEV_SYNC_AGG_W_HISTO "vdev_sync_agg_w_histo" #define ZPOOL_CONFIG_VDEV_ASYNC_AGG_R_HISTO "vdev_async_agg_r_histo" #define ZPOOL_CONFIG_VDEV_ASYNC_AGG_W_HISTO "vdev_async_agg_w_histo" #define ZPOOL_CONFIG_VDEV_AGG_SCRUB_HISTO "vdev_agg_scrub_histo" #define ZPOOL_CONFIG_VDEV_AGG_TRIM_HISTO "vdev_agg_trim_histo" /* Number of slow IOs */ #define ZPOOL_CONFIG_VDEV_SLOW_IOS "vdev_slow_ios" /* vdev enclosure sysfs path */ #define ZPOOL_CONFIG_VDEV_ENC_SYSFS_PATH "vdev_enc_sysfs_path" #define ZPOOL_CONFIG_WHOLE_DISK "whole_disk" #define ZPOOL_CONFIG_ERRCOUNT "error_count" #define ZPOOL_CONFIG_NOT_PRESENT "not_present" #define ZPOOL_CONFIG_SPARES "spares" #define ZPOOL_CONFIG_IS_SPARE "is_spare" #define ZPOOL_CONFIG_NPARITY "nparity" #define ZPOOL_CONFIG_HOSTID "hostid" #define ZPOOL_CONFIG_HOSTNAME "hostname" #define ZPOOL_CONFIG_LOADED_TIME "initial_load_time" #define ZPOOL_CONFIG_UNSPARE "unspare" #define ZPOOL_CONFIG_PHYS_PATH "phys_path" #define ZPOOL_CONFIG_IS_LOG "is_log" #define ZPOOL_CONFIG_L2CACHE "l2cache" #define ZPOOL_CONFIG_HOLE_ARRAY "hole_array" #define ZPOOL_CONFIG_VDEV_CHILDREN "vdev_children" #define ZPOOL_CONFIG_IS_HOLE "is_hole" #define ZPOOL_CONFIG_DDT_HISTOGRAM "ddt_histogram" #define ZPOOL_CONFIG_DDT_OBJ_STATS "ddt_object_stats" #define ZPOOL_CONFIG_DDT_STATS "ddt_stats" #define ZPOOL_CONFIG_SPLIT "splitcfg" #define ZPOOL_CONFIG_ORIG_GUID "orig_guid" #define ZPOOL_CONFIG_SPLIT_GUID "split_guid" #define ZPOOL_CONFIG_SPLIT_LIST "guid_list" #define ZPOOL_CONFIG_REMOVING "removing" #define ZPOOL_CONFIG_RESILVER_TXG "resilver_txg" #define ZPOOL_CONFIG_COMMENT "comment" #define ZPOOL_CONFIG_SUSPENDED "suspended" /* not stored on disk */ #define ZPOOL_CONFIG_SUSPENDED_REASON "suspended_reason" /* not stored */ #define ZPOOL_CONFIG_TIMESTAMP "timestamp" /* not stored on disk */ #define ZPOOL_CONFIG_BOOTFS "bootfs" /* not stored on disk */ #define ZPOOL_CONFIG_MISSING_DEVICES "missing_vdevs" /* not stored on disk */ #define ZPOOL_CONFIG_LOAD_INFO "load_info" /* not stored on disk */ #define ZPOOL_CONFIG_REWIND_INFO "rewind_info" /* not stored on disk */ #define ZPOOL_CONFIG_UNSUP_FEAT "unsup_feat" /* not stored on disk */ #define ZPOOL_CONFIG_ENABLED_FEAT "enabled_feat" /* not stored on disk */ #define ZPOOL_CONFIG_CAN_RDONLY "can_rdonly" /* not stored on disk */ #define ZPOOL_CONFIG_FEATURES_FOR_READ "features_for_read" #define ZPOOL_CONFIG_FEATURE_STATS "feature_stats" /* not stored on disk */ #define ZPOOL_CONFIG_ERRATA "errata" /* not stored on disk */ #define ZPOOL_CONFIG_VDEV_TOP_ZAP "com.delphix:vdev_zap_top" #define ZPOOL_CONFIG_VDEV_LEAF_ZAP "com.delphix:vdev_zap_leaf" #define ZPOOL_CONFIG_HAS_PER_VDEV_ZAPS "com.delphix:has_per_vdev_zaps" #define ZPOOL_CONFIG_RESILVER_DEFER "com.datto:resilver_defer" #define ZPOOL_CONFIG_CACHEFILE "cachefile" /* not stored on disk */ #define ZPOOL_CONFIG_MMP_STATE "mmp_state" /* not stored on disk */ #define ZPOOL_CONFIG_MMP_TXG "mmp_txg" /* not stored on disk */ #define ZPOOL_CONFIG_MMP_SEQ "mmp_seq" /* not stored on disk */ #define ZPOOL_CONFIG_MMP_HOSTNAME "mmp_hostname" /* not stored on disk */ #define ZPOOL_CONFIG_MMP_HOSTID "mmp_hostid" /* not stored on disk */ #define ZPOOL_CONFIG_ALLOCATION_BIAS "alloc_bias" /* not stored on disk */ #define ZPOOL_CONFIG_EXPANSION_TIME "expansion_time" /* not stored */ /* * The persistent vdev state is stored as separate values rather than a single * 'vdev_state' entry. This is because a device can be in multiple states, such * as offline and degraded. */ #define ZPOOL_CONFIG_OFFLINE "offline" #define ZPOOL_CONFIG_FAULTED "faulted" #define ZPOOL_CONFIG_DEGRADED "degraded" #define ZPOOL_CONFIG_REMOVED "removed" #define ZPOOL_CONFIG_FRU "fru" #define ZPOOL_CONFIG_AUX_STATE "aux_state" /* Pool load policy parameters */ #define ZPOOL_LOAD_POLICY "load-policy" #define ZPOOL_LOAD_REWIND_POLICY "load-rewind-policy" #define ZPOOL_LOAD_REQUEST_TXG "load-request-txg" #define ZPOOL_LOAD_META_THRESH "load-meta-thresh" #define ZPOOL_LOAD_DATA_THRESH "load-data-thresh" /* Rewind data discovered */ #define ZPOOL_CONFIG_LOAD_TIME "rewind_txg_ts" #define ZPOOL_CONFIG_LOAD_DATA_ERRORS "verify_data_errors" #define ZPOOL_CONFIG_REWIND_TIME "seconds_of_rewind" #define VDEV_TYPE_ROOT "root" #define VDEV_TYPE_MIRROR "mirror" #define VDEV_TYPE_REPLACING "replacing" #define VDEV_TYPE_RAIDZ "raidz" #define VDEV_TYPE_DISK "disk" #define VDEV_TYPE_FILE "file" #define VDEV_TYPE_MISSING "missing" #define VDEV_TYPE_HOLE "hole" #define VDEV_TYPE_SPARE "spare" #define VDEV_TYPE_LOG "log" #define VDEV_TYPE_L2CACHE "l2cache" #define VDEV_TYPE_INDIRECT "indirect" /* VDEV_TOP_ZAP_* are used in top-level vdev ZAP objects. */ #define VDEV_TOP_ZAP_INDIRECT_OBSOLETE_SM \ "com.delphix:indirect_obsolete_sm" #define VDEV_TOP_ZAP_OBSOLETE_COUNTS_ARE_PRECISE \ "com.delphix:obsolete_counts_are_precise" #define VDEV_TOP_ZAP_POOL_CHECKPOINT_SM \ "com.delphix:pool_checkpoint_sm" #define VDEV_TOP_ZAP_ALLOCATION_BIAS \ "org.zfsonlinux:allocation_bias" /* vdev metaslab allocation bias */ #define VDEV_ALLOC_BIAS_LOG "log" #define VDEV_ALLOC_BIAS_SPECIAL "special" #define VDEV_ALLOC_BIAS_DEDUP "dedup" /* vdev initialize state */ #define VDEV_LEAF_ZAP_INITIALIZE_LAST_OFFSET \ "com.delphix:next_offset_to_initialize" #define VDEV_LEAF_ZAP_INITIALIZE_STATE \ "com.delphix:vdev_initialize_state" #define VDEV_LEAF_ZAP_INITIALIZE_ACTION_TIME \ "com.delphix:vdev_initialize_action_time" /* vdev TRIM state */ #define VDEV_LEAF_ZAP_TRIM_LAST_OFFSET \ "org.zfsonlinux:next_offset_to_trim" #define VDEV_LEAF_ZAP_TRIM_STATE \ "org.zfsonlinux:vdev_trim_state" #define VDEV_LEAF_ZAP_TRIM_ACTION_TIME \ "org.zfsonlinux:vdev_trim_action_time" #define VDEV_LEAF_ZAP_TRIM_RATE \ "org.zfsonlinux:vdev_trim_rate" #define VDEV_LEAF_ZAP_TRIM_PARTIAL \ "org.zfsonlinux:vdev_trim_partial" #define VDEV_LEAF_ZAP_TRIM_SECURE \ "org.zfsonlinux:vdev_trim_secure" /* * This is needed in userland to report the minimum necessary device size. */ #define SPA_MINDEVSIZE (64ULL << 20) /* * Set if the fragmentation has not yet been calculated. This can happen * because the space maps have not been upgraded or the histogram feature * is not enabled. */ #define ZFS_FRAG_INVALID UINT64_MAX /* * The location of the pool configuration repository, shared between kernel and * userland. */ #define ZPOOL_CACHE "/etc/zfs/zpool.cache" /* * vdev states are ordered from least to most healthy. * A vdev that's CANT_OPEN or below is considered unusable. */ typedef enum vdev_state { VDEV_STATE_UNKNOWN = 0, /* Uninitialized vdev */ VDEV_STATE_CLOSED, /* Not currently open */ VDEV_STATE_OFFLINE, /* Not allowed to open */ VDEV_STATE_REMOVED, /* Explicitly removed from system */ VDEV_STATE_CANT_OPEN, /* Tried to open, but failed */ VDEV_STATE_FAULTED, /* External request to fault device */ VDEV_STATE_DEGRADED, /* Replicated vdev with unhealthy kids */ VDEV_STATE_HEALTHY /* Presumed good */ } vdev_state_t; #define VDEV_STATE_ONLINE VDEV_STATE_HEALTHY /* * vdev aux states. When a vdev is in the CANT_OPEN state, the aux field * of the vdev stats structure uses these constants to distinguish why. */ typedef enum vdev_aux { VDEV_AUX_NONE, /* no error */ VDEV_AUX_OPEN_FAILED, /* ldi_open_*() or vn_open() failed */ VDEV_AUX_CORRUPT_DATA, /* bad label or disk contents */ VDEV_AUX_NO_REPLICAS, /* insufficient number of replicas */ VDEV_AUX_BAD_GUID_SUM, /* vdev guid sum doesn't match */ VDEV_AUX_TOO_SMALL, /* vdev size is too small */ VDEV_AUX_BAD_LABEL, /* the label is OK but invalid */ VDEV_AUX_VERSION_NEWER, /* on-disk version is too new */ VDEV_AUX_VERSION_OLDER, /* on-disk version is too old */ VDEV_AUX_UNSUP_FEAT, /* unsupported features */ VDEV_AUX_SPARED, /* hot spare used in another pool */ VDEV_AUX_ERR_EXCEEDED, /* too many errors */ VDEV_AUX_IO_FAILURE, /* experienced I/O failure */ VDEV_AUX_BAD_LOG, /* cannot read log chain(s) */ VDEV_AUX_EXTERNAL, /* external diagnosis or forced fault */ VDEV_AUX_SPLIT_POOL, /* vdev was split off into another pool */ VDEV_AUX_BAD_ASHIFT, /* vdev ashift is invalid */ VDEV_AUX_EXTERNAL_PERSIST, /* persistent forced fault */ VDEV_AUX_ACTIVE, /* vdev active on a different host */ VDEV_AUX_CHILDREN_OFFLINE, /* all children are offline */ } vdev_aux_t; /* * pool state. The following states are written to disk as part of the normal * SPA lifecycle: ACTIVE, EXPORTED, DESTROYED, SPARE, L2CACHE. The remaining * states are software abstractions used at various levels to communicate * pool state. */ typedef enum pool_state { POOL_STATE_ACTIVE = 0, /* In active use */ POOL_STATE_EXPORTED, /* Explicitly exported */ POOL_STATE_DESTROYED, /* Explicitly destroyed */ POOL_STATE_SPARE, /* Reserved for hot spare use */ POOL_STATE_L2CACHE, /* Level 2 ARC device */ POOL_STATE_UNINITIALIZED, /* Internal spa_t state */ POOL_STATE_UNAVAIL, /* Internal libzfs state */ POOL_STATE_POTENTIALLY_ACTIVE /* Internal libzfs state */ } pool_state_t; /* * mmp state. The following states provide additional detail describing * why a pool couldn't be safely imported. */ typedef enum mmp_state { MMP_STATE_ACTIVE = 0, /* In active use */ MMP_STATE_INACTIVE, /* Inactive and safe to import */ MMP_STATE_NO_HOSTID /* System hostid is not set */ } mmp_state_t; /* * Scan Functions. */ typedef enum pool_scan_func { POOL_SCAN_NONE, POOL_SCAN_SCRUB, POOL_SCAN_RESILVER, POOL_SCAN_FUNCS } pool_scan_func_t; /* * Used to control scrub pause and resume. */ typedef enum pool_scrub_cmd { POOL_SCRUB_NORMAL = 0, POOL_SCRUB_PAUSE, POOL_SCRUB_FLAGS_END } pool_scrub_cmd_t; typedef enum { CS_NONE, CS_CHECKPOINT_EXISTS, CS_CHECKPOINT_DISCARDING, CS_NUM_STATES } checkpoint_state_t; typedef struct pool_checkpoint_stat { uint64_t pcs_state; /* checkpoint_state_t */ uint64_t pcs_start_time; /* time checkpoint/discard started */ uint64_t pcs_space; /* checkpointed space */ } pool_checkpoint_stat_t; /* * ZIO types. Needed to interpret vdev statistics below. */ typedef enum zio_type { ZIO_TYPE_NULL = 0, ZIO_TYPE_READ, ZIO_TYPE_WRITE, ZIO_TYPE_FREE, ZIO_TYPE_CLAIM, ZIO_TYPE_IOCTL, ZIO_TYPE_TRIM, ZIO_TYPES } zio_type_t; /* * Pool statistics. Note: all fields should be 64-bit because this * is passed between kernel and userland as an nvlist uint64 array. */ typedef struct pool_scan_stat { /* values stored on disk */ uint64_t pss_func; /* pool_scan_func_t */ uint64_t pss_state; /* dsl_scan_state_t */ uint64_t pss_start_time; /* scan start time */ uint64_t pss_end_time; /* scan end time */ uint64_t pss_to_examine; /* total bytes to scan */ uint64_t pss_examined; /* total bytes located by scanner */ uint64_t pss_to_process; /* total bytes to process */ uint64_t pss_processed; /* total processed bytes */ uint64_t pss_errors; /* scan errors */ /* values not stored on disk */ uint64_t pss_pass_exam; /* examined bytes per scan pass */ uint64_t pss_pass_start; /* start time of a scan pass */ uint64_t pss_pass_scrub_pause; /* pause time of a scrub pass */ /* cumulative time scrub spent paused, needed for rate calculation */ uint64_t pss_pass_scrub_spent_paused; uint64_t pss_pass_issued; /* issued bytes per scan pass */ uint64_t pss_issued; /* total bytes checked by scanner */ } pool_scan_stat_t; typedef struct pool_removal_stat { uint64_t prs_state; /* dsl_scan_state_t */ uint64_t prs_removing_vdev; uint64_t prs_start_time; uint64_t prs_end_time; uint64_t prs_to_copy; /* bytes that need to be copied */ uint64_t prs_copied; /* bytes copied so far */ /* * bytes of memory used for indirect mappings. * This includes all removed vdevs. */ uint64_t prs_mapping_memory; } pool_removal_stat_t; typedef enum dsl_scan_state { DSS_NONE, DSS_SCANNING, DSS_FINISHED, DSS_CANCELED, DSS_NUM_STATES } dsl_scan_state_t; /* * Errata described by http://zfsonlinux.org/msg/ZFS-8000-ER. The ordering * of this enum must be maintained to ensure the errata identifiers map to * the correct documentation. New errata may only be appended to the list * and must contain corresponding documentation at the above link. */ typedef enum zpool_errata { ZPOOL_ERRATA_NONE, ZPOOL_ERRATA_ZOL_2094_SCRUB, ZPOOL_ERRATA_ZOL_2094_ASYNC_DESTROY, ZPOOL_ERRATA_ZOL_6845_ENCRYPTION, ZPOOL_ERRATA_ZOL_8308_ENCRYPTION, } zpool_errata_t; /* * Vdev statistics. Note: all fields should be 64-bit because this * is passed between kernel and user land as an nvlist uint64 array. * * The vs_ops[] and vs_bytes[] arrays must always be an array size of 6 in * order to keep subsequent members at their known fixed offsets. When * adding a new field it must be added to the end the structure. */ #define VS_ZIO_TYPES 6 typedef struct vdev_stat { hrtime_t vs_timestamp; /* time since vdev load */ uint64_t vs_state; /* vdev state */ uint64_t vs_aux; /* see vdev_aux_t */ uint64_t vs_alloc; /* space allocated */ uint64_t vs_space; /* total capacity */ uint64_t vs_dspace; /* deflated capacity */ uint64_t vs_rsize; /* replaceable dev size */ uint64_t vs_esize; /* expandable dev size */ uint64_t vs_ops[VS_ZIO_TYPES]; /* operation count */ uint64_t vs_bytes[VS_ZIO_TYPES]; /* bytes read/written */ uint64_t vs_read_errors; /* read errors */ uint64_t vs_write_errors; /* write errors */ uint64_t vs_checksum_errors; /* checksum errors */ uint64_t vs_initialize_errors; /* initializing errors */ uint64_t vs_self_healed; /* self-healed bytes */ uint64_t vs_scan_removing; /* removing? */ uint64_t vs_scan_processed; /* scan processed bytes */ uint64_t vs_fragmentation; /* device fragmentation */ uint64_t vs_initialize_bytes_done; /* bytes initialized */ uint64_t vs_initialize_bytes_est; /* total bytes to initialize */ uint64_t vs_initialize_state; /* vdev_initializing_state_t */ uint64_t vs_initialize_action_time; /* time_t */ uint64_t vs_checkpoint_space; /* checkpoint-consumed space */ uint64_t vs_resilver_deferred; /* resilver deferred */ uint64_t vs_slow_ios; /* slow IOs */ uint64_t vs_trim_errors; /* trimming errors */ uint64_t vs_trim_notsup; /* supported by device */ uint64_t vs_trim_bytes_done; /* bytes trimmed */ uint64_t vs_trim_bytes_est; /* total bytes to trim */ uint64_t vs_trim_state; /* vdev_trim_state_t */ uint64_t vs_trim_action_time; /* time_t */ } vdev_stat_t; /* * Extended stats * * These are stats which aren't included in the original iostat output. For * convenience, they are grouped together in vdev_stat_ex, although each stat * is individually exported as an nvlist. */ typedef struct vdev_stat_ex { /* Number of ZIOs issued to disk and waiting to finish */ uint64_t vsx_active_queue[ZIO_PRIORITY_NUM_QUEUEABLE]; /* Number of ZIOs pending to be issued to disk */ uint64_t vsx_pend_queue[ZIO_PRIORITY_NUM_QUEUEABLE]; /* * Below are the histograms for various latencies. Buckets are in * units of nanoseconds. */ /* * 2^37 nanoseconds = 134s. Timeouts will probably start kicking in * before this. */ #define VDEV_L_HISTO_BUCKETS 37 /* Latency histo buckets */ #define VDEV_RQ_HISTO_BUCKETS 25 /* Request size histo buckets */ /* Amount of time in ZIO queue (ns) */ uint64_t vsx_queue_histo[ZIO_PRIORITY_NUM_QUEUEABLE] [VDEV_L_HISTO_BUCKETS]; /* Total ZIO latency (ns). Includes queuing and disk access time */ uint64_t vsx_total_histo[ZIO_TYPES][VDEV_L_HISTO_BUCKETS]; /* Amount of time to read/write the disk (ns) */ uint64_t vsx_disk_histo[ZIO_TYPES][VDEV_L_HISTO_BUCKETS]; /* "lookup the bucket for a value" histogram macros */ #define HISTO(val, buckets) (val != 0 ? MIN(highbit64(val) - 1, \ buckets - 1) : 0) #define L_HISTO(a) HISTO(a, VDEV_L_HISTO_BUCKETS) #define RQ_HISTO(a) HISTO(a, VDEV_RQ_HISTO_BUCKETS) /* Physical IO histogram */ uint64_t vsx_ind_histo[ZIO_PRIORITY_NUM_QUEUEABLE] [VDEV_RQ_HISTO_BUCKETS]; /* Delegated (aggregated) physical IO histogram */ uint64_t vsx_agg_histo[ZIO_PRIORITY_NUM_QUEUEABLE] [VDEV_RQ_HISTO_BUCKETS]; } vdev_stat_ex_t; /* * Initialize functions. */ typedef enum pool_initialize_func { POOL_INITIALIZE_START, POOL_INITIALIZE_CANCEL, POOL_INITIALIZE_SUSPEND, POOL_INITIALIZE_FUNCS } pool_initialize_func_t; /* * TRIM functions. */ typedef enum pool_trim_func { POOL_TRIM_START, POOL_TRIM_CANCEL, POOL_TRIM_SUSPEND, POOL_TRIM_FUNCS } pool_trim_func_t; /* * DDT statistics. Note: all fields should be 64-bit because this * is passed between kernel and userland as an nvlist uint64 array. */ typedef struct ddt_object { uint64_t ddo_count; /* number of elements in ddt */ uint64_t ddo_dspace; /* size of ddt on disk */ uint64_t ddo_mspace; /* size of ddt in-core */ } ddt_object_t; typedef struct ddt_stat { uint64_t dds_blocks; /* blocks */ uint64_t dds_lsize; /* logical size */ uint64_t dds_psize; /* physical size */ uint64_t dds_dsize; /* deflated allocated size */ uint64_t dds_ref_blocks; /* referenced blocks */ uint64_t dds_ref_lsize; /* referenced lsize * refcnt */ uint64_t dds_ref_psize; /* referenced psize * refcnt */ uint64_t dds_ref_dsize; /* referenced dsize * refcnt */ } ddt_stat_t; typedef struct ddt_histogram { ddt_stat_t ddh_stat[64]; /* power-of-two histogram buckets */ } ddt_histogram_t; #define ZVOL_DRIVER "zvol" #define ZFS_DRIVER "zfs" #define ZFS_DEV "/dev/zfs" #define ZFS_SHARETAB "/etc/dfs/sharetab" #define ZFS_SUPER_MAGIC 0x2fc12fc1 /* general zvol path */ #define ZVOL_DIR "/dev" #define ZVOL_MAJOR 230 #define ZVOL_MINOR_BITS 4 #define ZVOL_MINOR_MASK ((1U << ZVOL_MINOR_BITS) - 1) #define ZVOL_MINORS (1 << 4) #define ZVOL_DEV_NAME "zd" #define ZVOL_PROP_NAME "name" #define ZVOL_DEFAULT_BLOCKSIZE 8192 typedef enum { VDEV_INITIALIZE_NONE, VDEV_INITIALIZE_ACTIVE, VDEV_INITIALIZE_CANCELED, VDEV_INITIALIZE_SUSPENDED, VDEV_INITIALIZE_COMPLETE } vdev_initializing_state_t; typedef enum { VDEV_TRIM_NONE, VDEV_TRIM_ACTIVE, VDEV_TRIM_CANCELED, VDEV_TRIM_SUSPENDED, VDEV_TRIM_COMPLETE, } vdev_trim_state_t; /* * nvlist name constants. Facilitate restricting snapshot iteration range for * the "list next snapshot" ioctl */ #define SNAP_ITER_MIN_TXG "snap_iter_min_txg" #define SNAP_ITER_MAX_TXG "snap_iter_max_txg" /* * /dev/zfs ioctl numbers. * * These numbers cannot change over time. New ioctl numbers must be appended. */ typedef enum zfs_ioc { /* * illumos - 81/128 numbers reserved. */ ZFS_IOC_FIRST = ('Z' << 8), ZFS_IOC = ZFS_IOC_FIRST, ZFS_IOC_POOL_CREATE = ZFS_IOC_FIRST, /* 0x5a00 */ ZFS_IOC_POOL_DESTROY, /* 0x5a01 */ ZFS_IOC_POOL_IMPORT, /* 0x5a02 */ ZFS_IOC_POOL_EXPORT, /* 0x5a03 */ ZFS_IOC_POOL_CONFIGS, /* 0x5a04 */ ZFS_IOC_POOL_STATS, /* 0x5a05 */ ZFS_IOC_POOL_TRYIMPORT, /* 0x5a06 */ ZFS_IOC_POOL_SCAN, /* 0x5a07 */ ZFS_IOC_POOL_FREEZE, /* 0x5a08 */ ZFS_IOC_POOL_UPGRADE, /* 0x5a09 */ ZFS_IOC_POOL_GET_HISTORY, /* 0x5a0a */ ZFS_IOC_VDEV_ADD, /* 0x5a0b */ ZFS_IOC_VDEV_REMOVE, /* 0x5a0c */ ZFS_IOC_VDEV_SET_STATE, /* 0x5a0d */ ZFS_IOC_VDEV_ATTACH, /* 0x5a0e */ ZFS_IOC_VDEV_DETACH, /* 0x5a0f */ ZFS_IOC_VDEV_SETPATH, /* 0x5a10 */ ZFS_IOC_VDEV_SETFRU, /* 0x5a11 */ ZFS_IOC_OBJSET_STATS, /* 0x5a12 */ ZFS_IOC_OBJSET_ZPLPROPS, /* 0x5a13 */ ZFS_IOC_DATASET_LIST_NEXT, /* 0x5a14 */ ZFS_IOC_SNAPSHOT_LIST_NEXT, /* 0x5a15 */ ZFS_IOC_SET_PROP, /* 0x5a16 */ ZFS_IOC_CREATE, /* 0x5a17 */ ZFS_IOC_DESTROY, /* 0x5a18 */ ZFS_IOC_ROLLBACK, /* 0x5a19 */ ZFS_IOC_RENAME, /* 0x5a1a */ ZFS_IOC_RECV, /* 0x5a1b */ ZFS_IOC_SEND, /* 0x5a1c */ ZFS_IOC_INJECT_FAULT, /* 0x5a1d */ ZFS_IOC_CLEAR_FAULT, /* 0x5a1e */ ZFS_IOC_INJECT_LIST_NEXT, /* 0x5a1f */ ZFS_IOC_ERROR_LOG, /* 0x5a20 */ ZFS_IOC_CLEAR, /* 0x5a21 */ ZFS_IOC_PROMOTE, /* 0x5a22 */ ZFS_IOC_SNAPSHOT, /* 0x5a23 */ ZFS_IOC_DSOBJ_TO_DSNAME, /* 0x5a24 */ ZFS_IOC_OBJ_TO_PATH, /* 0x5a25 */ ZFS_IOC_POOL_SET_PROPS, /* 0x5a26 */ ZFS_IOC_POOL_GET_PROPS, /* 0x5a27 */ ZFS_IOC_SET_FSACL, /* 0x5a28 */ ZFS_IOC_GET_FSACL, /* 0x5a29 */ ZFS_IOC_SHARE, /* 0x5a2a */ ZFS_IOC_INHERIT_PROP, /* 0x5a2b */ ZFS_IOC_SMB_ACL, /* 0x5a2c */ ZFS_IOC_USERSPACE_ONE, /* 0x5a2d */ ZFS_IOC_USERSPACE_MANY, /* 0x5a2e */ ZFS_IOC_USERSPACE_UPGRADE, /* 0x5a2f */ ZFS_IOC_HOLD, /* 0x5a30 */ ZFS_IOC_RELEASE, /* 0x5a31 */ ZFS_IOC_GET_HOLDS, /* 0x5a32 */ ZFS_IOC_OBJSET_RECVD_PROPS, /* 0x5a33 */ ZFS_IOC_VDEV_SPLIT, /* 0x5a34 */ ZFS_IOC_NEXT_OBJ, /* 0x5a35 */ ZFS_IOC_DIFF, /* 0x5a36 */ ZFS_IOC_TMP_SNAPSHOT, /* 0x5a37 */ ZFS_IOC_OBJ_TO_STATS, /* 0x5a38 */ ZFS_IOC_SPACE_WRITTEN, /* 0x5a39 */ ZFS_IOC_SPACE_SNAPS, /* 0x5a3a */ ZFS_IOC_DESTROY_SNAPS, /* 0x5a3b */ ZFS_IOC_POOL_REGUID, /* 0x5a3c */ ZFS_IOC_POOL_REOPEN, /* 0x5a3d */ ZFS_IOC_SEND_PROGRESS, /* 0x5a3e */ ZFS_IOC_LOG_HISTORY, /* 0x5a3f */ ZFS_IOC_SEND_NEW, /* 0x5a40 */ ZFS_IOC_SEND_SPACE, /* 0x5a41 */ ZFS_IOC_CLONE, /* 0x5a42 */ ZFS_IOC_BOOKMARK, /* 0x5a43 */ ZFS_IOC_GET_BOOKMARKS, /* 0x5a44 */ ZFS_IOC_DESTROY_BOOKMARKS, /* 0x5a45 */ ZFS_IOC_RECV_NEW, /* 0x5a46 */ ZFS_IOC_POOL_SYNC, /* 0x5a47 */ ZFS_IOC_CHANNEL_PROGRAM, /* 0x5a48 */ ZFS_IOC_LOAD_KEY, /* 0x5a49 */ ZFS_IOC_UNLOAD_KEY, /* 0x5a4a */ ZFS_IOC_CHANGE_KEY, /* 0x5a4b */ ZFS_IOC_REMAP, /* 0x5a4c */ ZFS_IOC_POOL_CHECKPOINT, /* 0x5a4d */ ZFS_IOC_POOL_DISCARD_CHECKPOINT, /* 0x5a4e */ ZFS_IOC_POOL_INITIALIZE, /* 0x5a4f */ ZFS_IOC_POOL_TRIM, /* 0x5a50 */ /* * Linux - 3/64 numbers reserved. */ ZFS_IOC_LINUX = ('Z' << 8) + 0x80, ZFS_IOC_EVENTS_NEXT, /* 0x5a81 */ ZFS_IOC_EVENTS_CLEAR, /* 0x5a82 */ ZFS_IOC_EVENTS_SEEK, /* 0x5a83 */ /* * FreeBSD - 1/64 numbers reserved. */ ZFS_IOC_FREEBSD = ('Z' << 8) + 0xC0, ZFS_IOC_LAST } zfs_ioc_t; /* * zvol ioctl to get dataset name */ #define BLKZNAME _IOR(0x12, 125, char[ZFS_MAX_DATASET_NAME_LEN]) /* * ZFS-specific error codes used for returning descriptive errors * to the userland through zfs ioctls. * * The enum implicitly includes all the error codes from errno.h. * New code should use and extend this enum for errors that are * not described precisely by generic errno codes. * * These numbers should not change over time. New entries should be appended. */ typedef enum { ZFS_ERR_CHECKPOINT_EXISTS = 1024, ZFS_ERR_DISCARDING_CHECKPOINT, ZFS_ERR_NO_CHECKPOINT, ZFS_ERR_DEVRM_IN_PROGRESS, ZFS_ERR_VDEV_TOO_BIG, ZFS_ERR_IOC_CMD_UNAVAIL, ZFS_ERR_IOC_ARG_UNAVAIL, ZFS_ERR_IOC_ARG_REQUIRED, ZFS_ERR_IOC_ARG_BADTYPE, ZFS_ERR_WRONG_PARENT, ZFS_ERR_FROM_IVSET_GUID_MISSING, ZFS_ERR_FROM_IVSET_GUID_MISMATCH, ZFS_ERR_SPILL_BLOCK_FLAG_MISSING, ZFS_ERR_EXPORT_IN_PROGRESS, } zfs_errno_t; /* * Internal SPA load state. Used by FMA diagnosis engine. */ typedef enum { SPA_LOAD_NONE, /* no load in progress */ SPA_LOAD_OPEN, /* normal open */ SPA_LOAD_IMPORT, /* import in progress */ SPA_LOAD_TRYIMPORT, /* tryimport in progress */ SPA_LOAD_RECOVER, /* recovery requested */ SPA_LOAD_ERROR, /* load failed */ SPA_LOAD_CREATE /* creation in progress */ } spa_load_state_t; /* * Bookmark name values. */ #define ZPOOL_ERR_LIST "error list" #define ZPOOL_ERR_DATASET "dataset" #define ZPOOL_ERR_OBJECT "object" #define HIS_MAX_RECORD_LEN (MAXPATHLEN + MAXPATHLEN + 1) /* * The following are names used in the nvlist describing * the pool's history log. */ #define ZPOOL_HIST_RECORD "history record" #define ZPOOL_HIST_TIME "history time" #define ZPOOL_HIST_CMD "history command" #define ZPOOL_HIST_WHO "history who" #define ZPOOL_HIST_ZONE "history zone" #define ZPOOL_HIST_HOST "history hostname" #define ZPOOL_HIST_TXG "history txg" #define ZPOOL_HIST_INT_EVENT "history internal event" #define ZPOOL_HIST_INT_STR "history internal str" #define ZPOOL_HIST_INT_NAME "internal_name" #define ZPOOL_HIST_IOCTL "ioctl" #define ZPOOL_HIST_INPUT_NVL "in_nvl" #define ZPOOL_HIST_OUTPUT_NVL "out_nvl" #define ZPOOL_HIST_DSNAME "dsname" #define ZPOOL_HIST_DSID "dsid" #define ZPOOL_HIST_ERRNO "errno" /* * Special nvlist name that will not have its args recorded in the pool's * history log. */ #define ZPOOL_HIDDEN_ARGS "hidden_args" /* * The following are names used when invoking ZFS_IOC_POOL_INITIALIZE. */ #define ZPOOL_INITIALIZE_COMMAND "initialize_command" #define ZPOOL_INITIALIZE_VDEVS "initialize_vdevs" /* * The following are names used when invoking ZFS_IOC_POOL_TRIM. */ #define ZPOOL_TRIM_COMMAND "trim_command" #define ZPOOL_TRIM_VDEVS "trim_vdevs" #define ZPOOL_TRIM_RATE "trim_rate" #define ZPOOL_TRIM_SECURE "trim_secure" /* * Flags for ZFS_IOC_VDEV_SET_STATE */ #define ZFS_ONLINE_CHECKREMOVE 0x1 #define ZFS_ONLINE_UNSPARE 0x2 #define ZFS_ONLINE_FORCEFAULT 0x4 #define ZFS_ONLINE_EXPAND 0x8 #define ZFS_OFFLINE_TEMPORARY 0x1 /* * Flags for ZFS_IOC_POOL_IMPORT */ #define ZFS_IMPORT_NORMAL 0x0 #define ZFS_IMPORT_VERBATIM 0x1 #define ZFS_IMPORT_ANY_HOST 0x2 #define ZFS_IMPORT_MISSING_LOG 0x4 #define ZFS_IMPORT_ONLY 0x8 #define ZFS_IMPORT_TEMP_NAME 0x10 #define ZFS_IMPORT_SKIP_MMP 0x20 #define ZFS_IMPORT_LOAD_KEYS 0x40 #define ZFS_IMPORT_CHECKPOINT 0x80 /* * Channel program argument/return nvlist keys and defaults. */ #define ZCP_ARG_PROGRAM "program" #define ZCP_ARG_ARGLIST "arg" #define ZCP_ARG_SYNC "sync" #define ZCP_ARG_INSTRLIMIT "instrlimit" #define ZCP_ARG_MEMLIMIT "memlimit" #define ZCP_ARG_CLIARGV "argv" #define ZCP_RET_ERROR "error" #define ZCP_RET_RETURN "return" #define ZCP_DEFAULT_INSTRLIMIT (10 * 1000 * 1000) #define ZCP_MAX_INSTRLIMIT (10 * ZCP_DEFAULT_INSTRLIMIT) #define ZCP_DEFAULT_MEMLIMIT (10 * 1024 * 1024) #define ZCP_MAX_MEMLIMIT (10 * ZCP_DEFAULT_MEMLIMIT) /* * Sysevent payload members. ZFS will generate the following sysevents with the * given payloads: * * ESC_ZFS_RESILVER_START * ESC_ZFS_RESILVER_END * ESC_ZFS_POOL_DESTROY * ESC_ZFS_POOL_REGUID * * ZFS_EV_POOL_NAME DATA_TYPE_STRING * ZFS_EV_POOL_GUID DATA_TYPE_UINT64 * * ESC_ZFS_VDEV_REMOVE * ESC_ZFS_VDEV_CLEAR * ESC_ZFS_VDEV_CHECK * * ZFS_EV_POOL_NAME DATA_TYPE_STRING * ZFS_EV_POOL_GUID DATA_TYPE_UINT64 * ZFS_EV_VDEV_PATH DATA_TYPE_STRING (optional) * ZFS_EV_VDEV_GUID DATA_TYPE_UINT64 * * ESC_ZFS_HISTORY_EVENT * * ZFS_EV_POOL_NAME DATA_TYPE_STRING * ZFS_EV_POOL_GUID DATA_TYPE_UINT64 * ZFS_EV_HIST_TIME DATA_TYPE_UINT64 (optional) * ZFS_EV_HIST_CMD DATA_TYPE_STRING (optional) * ZFS_EV_HIST_WHO DATA_TYPE_UINT64 (optional) * ZFS_EV_HIST_ZONE DATA_TYPE_STRING (optional) * ZFS_EV_HIST_HOST DATA_TYPE_STRING (optional) * ZFS_EV_HIST_TXG DATA_TYPE_UINT64 (optional) * ZFS_EV_HIST_INT_EVENT DATA_TYPE_UINT64 (optional) * ZFS_EV_HIST_INT_STR DATA_TYPE_STRING (optional) * ZFS_EV_HIST_INT_NAME DATA_TYPE_STRING (optional) * ZFS_EV_HIST_IOCTL DATA_TYPE_STRING (optional) * ZFS_EV_HIST_DSNAME DATA_TYPE_STRING (optional) * ZFS_EV_HIST_DSID DATA_TYPE_UINT64 (optional) * * The ZFS_EV_HIST_* members will correspond to the ZPOOL_HIST_* members in the * history log nvlist. The keynames will be free of any spaces or other * characters that could be potentially unexpected to consumers of the * sysevents. */ #define ZFS_EV_POOL_NAME "pool_name" #define ZFS_EV_POOL_GUID "pool_guid" #define ZFS_EV_VDEV_PATH "vdev_path" #define ZFS_EV_VDEV_GUID "vdev_guid" #define ZFS_EV_HIST_TIME "history_time" #define ZFS_EV_HIST_CMD "history_command" #define ZFS_EV_HIST_WHO "history_who" #define ZFS_EV_HIST_ZONE "history_zone" #define ZFS_EV_HIST_HOST "history_hostname" #define ZFS_EV_HIST_TXG "history_txg" #define ZFS_EV_HIST_INT_EVENT "history_internal_event" #define ZFS_EV_HIST_INT_STR "history_internal_str" #define ZFS_EV_HIST_INT_NAME "history_internal_name" #define ZFS_EV_HIST_IOCTL "history_ioctl" #define ZFS_EV_HIST_DSNAME "history_dsname" #define ZFS_EV_HIST_DSID "history_dsid" #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_H */ zfs-0.8.3/include/sys/fs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775020334 xustar000000000000000030 mtime=1579730429.302135937 30 atime=1579730452.918894197 30 ctime=1579730469.915439916 zfs-0.8.3/include/sys/fs/Makefile.in0000664016037001603700000006370313612142775020351 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/sys/fs DIST_COMMON = $(am__kernel_HEADERS_DIST) $(am__libzfs_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/fs/zfs.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/fs/zfs.h HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ COMMON_H = \ $(top_srcdir)/include/sys/fs/zfs.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/fs @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fs @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/fs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/sys/fs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/sys/PaxHeaders.151519/xvattr.h0000644000000000000000000000007413607166132017362 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.618430379 zfs-0.8.3/include/sys/xvattr.h0000644016037001603700000003214613607166132017365 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved. */ /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ /* * University Copyright- Copyright (c) 1982, 1986, 1988 * The Regents of the University of California * All Rights Reserved * * University Acknowledgment- Portions of this document are derived from * software developed by the University of California, Berkeley, and its * contributors. */ #ifndef _SYS_XVATTR_H #define _SYS_XVATTR_H #include #include #define AV_SCANSTAMP_SZ 32 /* length of anti-virus scanstamp */ /* * Structure of all optional attributes. */ typedef struct xoptattr { inode_timespec_t xoa_createtime; /* Create time of file */ uint8_t xoa_archive; uint8_t xoa_system; uint8_t xoa_readonly; uint8_t xoa_hidden; uint8_t xoa_nounlink; uint8_t xoa_immutable; uint8_t xoa_appendonly; uint8_t xoa_nodump; uint8_t xoa_opaque; uint8_t xoa_av_quarantined; uint8_t xoa_av_modified; uint8_t xoa_av_scanstamp[AV_SCANSTAMP_SZ]; uint8_t xoa_reparse; uint64_t xoa_generation; uint8_t xoa_offline; uint8_t xoa_sparse; uint8_t xoa_projinherit; uint64_t xoa_projid; } xoptattr_t; /* * The xvattr structure is really a variable length structure that * is made up of: * - The classic vattr_t (xva_vattr) * - a 32 bit quantity (xva_mapsize) that specifies the size of the * attribute bitmaps in 32 bit words. * - A pointer to the returned attribute bitmap (needed because the * previous element, the requested attribute bitmap) is variable length. * - The requested attribute bitmap, which is an array of 32 bit words. * Callers use the XVA_SET_REQ() macro to set the bits corresponding to * the attributes that are being requested. * - The returned attribute bitmap, which is an array of 32 bit words. * File systems that support optional attributes use the XVA_SET_RTN() * macro to set the bits corresponding to the attributes that are being * returned. * - The xoptattr_t structure which contains the attribute values * * xva_mapsize determines how many words in the attribute bitmaps. * Immediately following the attribute bitmaps is the xoptattr_t. * xva_getxoptattr() is used to get the pointer to the xoptattr_t * section. */ #define XVA_MAPSIZE 3 /* Size of attr bitmaps */ #define XVA_MAGIC 0x78766174 /* Magic # for verification */ /* * The xvattr structure is an extensible structure which permits optional * attributes to be requested/returned. File systems may or may not support * optional attributes. They do so at their own discretion but if they do * support optional attributes, they must register the VFSFT_XVATTR feature * so that the optional attributes can be set/retrieved. * * The fields of the xvattr structure are: * * xva_vattr - The first element of an xvattr is a legacy vattr structure * which includes the common attributes. If AT_XVATTR is set in the va_mask * then the entire structure is treated as an xvattr. If AT_XVATTR is not * set, then only the xva_vattr structure can be used. * * xva_magic - 0x78766174 (hex for "xvat"). Magic number for verification. * * xva_mapsize - Size of requested and returned attribute bitmaps. * * xva_rtnattrmapp - Pointer to xva_rtnattrmap[]. We need this since the * size of the array before it, xva_reqattrmap[], could change which means * the location of xva_rtnattrmap[] could change. This will allow unbundled * file systems to find the location of xva_rtnattrmap[] when the sizes change. * * xva_reqattrmap[] - Array of requested attributes. Attributes are * represented by a specific bit in a specific element of the attribute * map array. Callers set the bits corresponding to the attributes * that the caller wants to get/set. * * xva_rtnattrmap[] - Array of attributes that the file system was able to * process. Not all file systems support all optional attributes. This map * informs the caller which attributes the underlying file system was able * to set/get. (Same structure as the requested attributes array in terms * of each attribute corresponding to specific bits and array elements.) * * xva_xoptattrs - Structure containing values of optional attributes. * These values are only valid if the corresponding bits in xva_reqattrmap * are set and the underlying file system supports those attributes. */ typedef struct xvattr { vattr_t xva_vattr; /* Embedded vattr structure */ uint32_t xva_magic; /* Magic Number */ uint32_t xva_mapsize; /* Size of attr bitmap (32-bit words) */ uint32_t *xva_rtnattrmapp; /* Ptr to xva_rtnattrmap[] */ uint32_t xva_reqattrmap[XVA_MAPSIZE]; /* Requested attrs */ uint32_t xva_rtnattrmap[XVA_MAPSIZE]; /* Returned attrs */ xoptattr_t xva_xoptattrs; /* Optional attributes */ } xvattr_t; /* * Attribute bits used in the extensible attribute's (xva's) attribute * bitmaps. Note that the bitmaps are made up of a variable length number * of 32-bit words. The convention is to use XAT{n}_{attrname} where "n" * is the element in the bitmap (starting at 1). This convention is for * the convenience of the maintainer to keep track of which element each * attribute belongs to. * * NOTE THAT CONSUMERS MUST *NOT* USE THE XATn_* DEFINES DIRECTLY. CONSUMERS * MUST USE THE XAT_* DEFINES. */ #define XAT0_INDEX 0LL /* Index into bitmap for XAT0 attrs */ #define XAT0_CREATETIME 0x00000001 /* Create time of file */ #define XAT0_ARCHIVE 0x00000002 /* Archive */ #define XAT0_SYSTEM 0x00000004 /* System */ #define XAT0_READONLY 0x00000008 /* Readonly */ #define XAT0_HIDDEN 0x00000010 /* Hidden */ #define XAT0_NOUNLINK 0x00000020 /* Nounlink */ #define XAT0_IMMUTABLE 0x00000040 /* immutable */ #define XAT0_APPENDONLY 0x00000080 /* appendonly */ #define XAT0_NODUMP 0x00000100 /* nodump */ #define XAT0_OPAQUE 0x00000200 /* opaque */ #define XAT0_AV_QUARANTINED 0x00000400 /* anti-virus quarantine */ #define XAT0_AV_MODIFIED 0x00000800 /* anti-virus modified */ #define XAT0_AV_SCANSTAMP 0x00001000 /* anti-virus scanstamp */ #define XAT0_REPARSE 0x00002000 /* FS reparse point */ #define XAT0_GEN 0x00004000 /* object generation number */ #define XAT0_OFFLINE 0x00008000 /* offline */ #define XAT0_SPARSE 0x00010000 /* sparse */ #define XAT0_PROJINHERIT 0x00020000 /* Create with parent projid */ #define XAT0_PROJID 0x00040000 /* Project ID */ #define XAT0_ALL_ATTRS (XAT0_CREATETIME|XAT0_ARCHIVE|XAT0_SYSTEM| \ XAT0_READONLY|XAT0_HIDDEN|XAT0_NOUNLINK|XAT0_IMMUTABLE|XAT0_APPENDONLY| \ XAT0_NODUMP|XAT0_OPAQUE|XAT0_AV_QUARANTINED| XAT0_AV_MODIFIED| \ XAT0_AV_SCANSTAMP|XAT0_REPARSE|XATO_GEN|XAT0_OFFLINE|XAT0_SPARSE| \ XAT0_PROJINHERIT | XAT0_PROJID) /* Support for XAT_* optional attributes */ #define XVA_MASK 0xffffffff /* Used to mask off 32 bits */ #define XVA_SHFT 32 /* Used to shift index */ /* * Used to pry out the index and attribute bits from the XAT_* attributes * defined below. Note that we're masking things down to 32 bits then * casting to uint32_t. */ #define XVA_INDEX(attr) ((uint32_t)(((attr) >> XVA_SHFT) & XVA_MASK)) #define XVA_ATTRBIT(attr) ((uint32_t)((attr) & XVA_MASK)) /* * The following defines present a "flat namespace" so that consumers don't * need to keep track of which element belongs to which bitmap entry. * * NOTE THAT THESE MUST NEVER BE OR-ed TOGETHER */ #define XAT_CREATETIME ((XAT0_INDEX << XVA_SHFT) | XAT0_CREATETIME) #define XAT_ARCHIVE ((XAT0_INDEX << XVA_SHFT) | XAT0_ARCHIVE) #define XAT_SYSTEM ((XAT0_INDEX << XVA_SHFT) | XAT0_SYSTEM) #define XAT_READONLY ((XAT0_INDEX << XVA_SHFT) | XAT0_READONLY) #define XAT_HIDDEN ((XAT0_INDEX << XVA_SHFT) | XAT0_HIDDEN) #define XAT_NOUNLINK ((XAT0_INDEX << XVA_SHFT) | XAT0_NOUNLINK) #define XAT_IMMUTABLE ((XAT0_INDEX << XVA_SHFT) | XAT0_IMMUTABLE) #define XAT_APPENDONLY ((XAT0_INDEX << XVA_SHFT) | XAT0_APPENDONLY) #define XAT_NODUMP ((XAT0_INDEX << XVA_SHFT) | XAT0_NODUMP) #define XAT_OPAQUE ((XAT0_INDEX << XVA_SHFT) | XAT0_OPAQUE) #define XAT_AV_QUARANTINED ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_QUARANTINED) #define XAT_AV_MODIFIED ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_MODIFIED) #define XAT_AV_SCANSTAMP ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_SCANSTAMP) #define XAT_REPARSE ((XAT0_INDEX << XVA_SHFT) | XAT0_REPARSE) #define XAT_GEN ((XAT0_INDEX << XVA_SHFT) | XAT0_GEN) #define XAT_OFFLINE ((XAT0_INDEX << XVA_SHFT) | XAT0_OFFLINE) #define XAT_SPARSE ((XAT0_INDEX << XVA_SHFT) | XAT0_SPARSE) #define XAT_PROJINHERIT ((XAT0_INDEX << XVA_SHFT) | XAT0_PROJINHERIT) #define XAT_PROJID ((XAT0_INDEX << XVA_SHFT) | XAT0_PROJID) /* * The returned attribute map array (xva_rtnattrmap[]) is located past the * requested attribute map array (xva_reqattrmap[]). Its location changes * when the array sizes change. We use a separate pointer in a known location * (xva_rtnattrmapp) to hold the location of xva_rtnattrmap[]. This is * set in xva_init() */ #define XVA_RTNATTRMAP(xvap) ((xvap)->xva_rtnattrmapp) /* * XVA_SET_REQ() sets an attribute bit in the proper element in the bitmap * of requested attributes (xva_reqattrmap[]). */ #define XVA_SET_REQ(xvap, attr) \ ASSERT((xvap)->xva_vattr.va_mask & AT_XVATTR); \ ASSERT((xvap)->xva_magic == XVA_MAGIC); \ (xvap)->xva_reqattrmap[XVA_INDEX(attr)] |= XVA_ATTRBIT(attr) /* * XVA_CLR_REQ() clears an attribute bit in the proper element in the bitmap * of requested attributes (xva_reqattrmap[]). */ #define XVA_CLR_REQ(xvap, attr) \ ASSERT((xvap)->xva_vattr.va_mask & AT_XVATTR); \ ASSERT((xvap)->xva_magic == XVA_MAGIC); \ (xvap)->xva_reqattrmap[XVA_INDEX(attr)] &= ~XVA_ATTRBIT(attr) /* * XVA_SET_RTN() sets an attribute bit in the proper element in the bitmap * of returned attributes (xva_rtnattrmap[]). */ #define XVA_SET_RTN(xvap, attr) \ ASSERT((xvap)->xva_vattr.va_mask & AT_XVATTR); \ ASSERT((xvap)->xva_magic == XVA_MAGIC); \ (XVA_RTNATTRMAP(xvap))[XVA_INDEX(attr)] |= XVA_ATTRBIT(attr) /* * XVA_ISSET_REQ() checks the requested attribute bitmap (xva_reqattrmap[]) * to see of the corresponding attribute bit is set. If so, returns non-zero. */ #define XVA_ISSET_REQ(xvap, attr) \ ((((xvap)->xva_vattr.va_mask & AT_XVATTR) && \ ((xvap)->xva_magic == XVA_MAGIC) && \ ((xvap)->xva_mapsize > XVA_INDEX(attr))) ? \ ((xvap)->xva_reqattrmap[XVA_INDEX(attr)] & XVA_ATTRBIT(attr)) : 0) /* * XVA_ISSET_RTN() checks the returned attribute bitmap (xva_rtnattrmap[]) * to see of the corresponding attribute bit is set. If so, returns non-zero. */ #define XVA_ISSET_RTN(xvap, attr) \ ((((xvap)->xva_vattr.va_mask & AT_XVATTR) && \ ((xvap)->xva_magic == XVA_MAGIC) && \ ((xvap)->xva_mapsize > XVA_INDEX(attr))) ? \ ((XVA_RTNATTRMAP(xvap))[XVA_INDEX(attr)] & XVA_ATTRBIT(attr)) : 0) /* * Zero out the structure, set the size of the requested/returned bitmaps, * set AT_XVATTR in the embedded vattr_t's va_mask, and set up the pointer * to the returned attributes array. */ static inline void xva_init(xvattr_t *xvap) { bzero(xvap, sizeof (xvattr_t)); xvap->xva_mapsize = XVA_MAPSIZE; xvap->xva_magic = XVA_MAGIC; xvap->xva_vattr.va_mask = ATTR_XVATTR; xvap->xva_rtnattrmapp = &(xvap->xva_rtnattrmap)[0]; } /* * If AT_XVATTR is set, returns a pointer to the embedded xoptattr_t * structure. Otherwise, returns NULL. */ static inline xoptattr_t * xva_getxoptattr(xvattr_t *xvap) { xoptattr_t *xoap = NULL; if (xvap->xva_vattr.va_mask & AT_XVATTR) xoap = &xvap->xva_xoptattrs; return (xoap); } #define MODEMASK 07777 /* mode bits plus permission bits */ #define PERMMASK 00777 /* permission bits */ /* * VOP_ACCESS flags */ #define V_ACE_MASK 0x1 /* mask represents NFSv4 ACE permissions */ #define V_APPEND 0x2 /* want to do append only check */ /* * Structure used on VOP_GETSECATTR and VOP_SETSECATTR operations */ typedef struct vsecattr { uint_t vsa_mask; /* See below */ int vsa_aclcnt; /* ACL entry count */ void *vsa_aclentp; /* pointer to ACL entries */ int vsa_dfaclcnt; /* default ACL entry count */ void *vsa_dfaclentp; /* pointer to default ACL entries */ size_t vsa_aclentsz; /* ACE size in bytes of vsa_aclentp */ uint_t vsa_aclflags; /* ACE ACL flags */ } vsecattr_t; /* vsa_mask values */ #define VSA_ACL 0x0001 #define VSA_ACLCNT 0x0002 #define VSA_DFACL 0x0004 #define VSA_DFACLCNT 0x0008 #define VSA_ACE 0x0010 #define VSA_ACECNT 0x0020 #define VSA_ACE_ALLTYPES 0x0040 #define VSA_ACE_ACLFLAGS 0x0080 /* get/set ACE ACL flags */ #endif /* _SYS_XVATTR_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_sa.h0000644000000000000000000000007413607166132017317 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.661431761 zfs-0.8.3/include/sys/zfs_sa.h0000644016037001603700000001060313607166132017314 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_ZFS_SA_H #define _SYS_ZFS_SA_H #ifdef _KERNEL #include #include #include #include #include #include #include #endif #ifdef __cplusplus extern "C" { #endif /* * This is the list of known attributes * to the ZPL. The values of the actual * attributes are not defined by the order * the enums. It is controlled by the attribute * registration mechanism. Two different file system * could have different numeric values for the same * attributes. this list is only used for dereferencing * into the table that will hold the actual numeric value. */ typedef enum zpl_attr { ZPL_ATIME, ZPL_MTIME, ZPL_CTIME, ZPL_CRTIME, ZPL_GEN, ZPL_MODE, ZPL_SIZE, ZPL_PARENT, ZPL_LINKS, ZPL_XATTR, ZPL_RDEV, ZPL_FLAGS, ZPL_UID, ZPL_GID, ZPL_PAD, ZPL_ZNODE_ACL, ZPL_DACL_COUNT, ZPL_SYMLINK, ZPL_SCANSTAMP, ZPL_DACL_ACES, ZPL_DXATTR, ZPL_PROJID, ZPL_END } zpl_attr_t; #define ZFS_OLD_ZNODE_PHYS_SIZE 0x108 #define ZFS_SA_BASE_ATTR_SIZE (ZFS_OLD_ZNODE_PHYS_SIZE - \ sizeof (zfs_acl_phys_t)) #define SA_MODE_OFFSET 0 #define SA_SIZE_OFFSET 8 #define SA_GEN_OFFSET 16 #define SA_UID_OFFSET 24 #define SA_GID_OFFSET 32 #define SA_PARENT_OFFSET 40 #define SA_FLAGS_OFFSET 48 #define SA_PROJID_OFFSET 128 extern sa_attr_reg_t zfs_attr_table[ZPL_END + 1]; extern sa_attr_reg_t zfs_legacy_attr_table[ZPL_END + 1]; /* * This is a deprecated data structure that only exists for * dealing with file systems create prior to ZPL version 5. */ typedef struct znode_phys { uint64_t zp_atime[2]; /* 0 - last file access time */ uint64_t zp_mtime[2]; /* 16 - last file modification time */ uint64_t zp_ctime[2]; /* 32 - last file change time */ uint64_t zp_crtime[2]; /* 48 - creation time */ uint64_t zp_gen; /* 64 - generation (txg of creation) */ uint64_t zp_mode; /* 72 - file mode bits */ uint64_t zp_size; /* 80 - size of file */ uint64_t zp_parent; /* 88 - directory parent (`..') */ uint64_t zp_links; /* 96 - number of links to file */ uint64_t zp_xattr; /* 104 - DMU object for xattrs */ uint64_t zp_rdev; /* 112 - dev_t for VBLK & VCHR files */ uint64_t zp_flags; /* 120 - persistent flags */ uint64_t zp_uid; /* 128 - file owner */ uint64_t zp_gid; /* 136 - owning group */ uint64_t zp_zap; /* 144 - extra attributes */ uint64_t zp_pad[3]; /* 152 - future */ zfs_acl_phys_t zp_acl; /* 176 - 263 ACL */ /* * Data may pad out any remaining bytes in the znode buffer, eg: * * |<---------------------- dnode_phys (512) ------------------------>| * |<-- dnode (192) --->|<----------- "bonus" buffer (320) ---------->| * |<---- znode (264) ---->|<---- data (56) ---->| * * At present, we use this space for the following: * - symbolic links * - 32-byte anti-virus scanstamp (regular files only) */ } znode_phys_t; #ifdef _KERNEL #define DXATTR_MAX_ENTRY_SIZE (32768) #define DXATTR_MAX_SA_SIZE (SPA_OLD_MAXBLOCKSIZE >> 1) int zfs_sa_readlink(struct znode *, uio_t *); void zfs_sa_symlink(struct znode *, char *link, int len, dmu_tx_t *); void zfs_sa_get_scanstamp(struct znode *, xvattr_t *); void zfs_sa_set_scanstamp(struct znode *, xvattr_t *, dmu_tx_t *); int zfs_sa_get_xattr(struct znode *); int zfs_sa_set_xattr(struct znode *); void zfs_sa_upgrade(struct sa_handle *, dmu_tx_t *); void zfs_sa_upgrade_txholds(dmu_tx_t *, struct znode *); void zfs_sa_init(void); void zfs_sa_fini(void); #endif #ifdef __cplusplus } #endif #endif /* _SYS_ZFS_SA_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/bqueue.h0000644000000000000000000000007413607166147017326 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.412423766 zfs-0.8.3/include/sys/bqueue.h0000644016037001603700000000220613607166147017323 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2014 by Delphix. All rights reserved. */ #ifndef _BQUEUE_H #define _BQUEUE_H #ifdef __cplusplus extern "C" { #endif #include typedef struct bqueue { list_t bq_list; kmutex_t bq_lock; kcondvar_t bq_add_cv; kcondvar_t bq_pop_cv; uint64_t bq_size; uint64_t bq_maxsize; size_t bq_node_offset; } bqueue_t; typedef struct bqueue_node { list_node_t bqn_node; uint64_t bqn_size; } bqueue_node_t; int bqueue_init(bqueue_t *, uint64_t, size_t); void bqueue_destroy(bqueue_t *); void bqueue_enqueue(bqueue_t *, void *, uint64_t); void *bqueue_dequeue(bqueue_t *); boolean_t bqueue_empty(bqueue_t *); #ifdef __cplusplus } #endif #endif /* _BQUEUE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/nvpair_impl.h0000644000000000000000000000007413607166132020352 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.498426527 zfs-0.8.3/include/sys/nvpair_impl.h0000644016037001603700000000436013607166132020352 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2017 by Delphix. All rights reserved. */ #ifndef _NVPAIR_IMPL_H #define _NVPAIR_IMPL_H #ifdef __cplusplus extern "C" { #endif #include /* * The structures here provided for information and debugging purposes only * may be changed in the future. */ /* * implementation linked list for pre-packed data */ typedef struct i_nvp i_nvp_t; struct i_nvp { union { /* ensure alignment */ uint64_t _nvi_align; struct { /* pointer to next nvpair */ i_nvp_t *_nvi_next; /* pointer to prev nvpair */ i_nvp_t *_nvi_prev; /* next pair in table bucket */ i_nvp_t *_nvi_hashtable_next; } _nvi; } _nvi_un; /* nvpair */ nvpair_t nvi_nvp; }; #define nvi_next _nvi_un._nvi._nvi_next #define nvi_prev _nvi_un._nvi._nvi_prev #define nvi_hashtable_next _nvi_un._nvi._nvi_hashtable_next typedef struct { i_nvp_t *nvp_list; /* linked list of nvpairs */ i_nvp_t *nvp_last; /* last nvpair */ i_nvp_t *nvp_curr; /* current walker nvpair */ nv_alloc_t *nvp_nva; /* pluggable allocator */ uint32_t nvp_stat; /* internal state */ i_nvp_t **nvp_hashtable; /* table of entries used for lookup */ uint32_t nvp_nbuckets; /* # of buckets in hash table */ uint32_t nvp_nentries; /* # of entries in hash table */ } nvpriv_t; #ifdef __cplusplus } #endif #endif /* _NVPAIR_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_onexit.h0000644000000000000000000000007313607166132020221 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.69843295 zfs-0.8.3/include/sys/zfs_onexit.h0000644016037001603700000000342213607166132020220 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_ZFS_ONEXIT_H #define _SYS_ZFS_ONEXIT_H #include #ifdef __cplusplus extern "C" { #endif #ifdef _KERNEL typedef struct zfs_onexit { kmutex_t zo_lock; list_t zo_actions; } zfs_onexit_t; typedef struct zfs_onexit_action_node { list_node_t za_link; void (*za_func)(void *); void *za_data; } zfs_onexit_action_node_t; extern void zfs_onexit_init(zfs_onexit_t **zo); extern void zfs_onexit_destroy(zfs_onexit_t *zo); #endif extern int zfs_onexit_fd_hold(int fd, minor_t *minorp); extern void zfs_onexit_fd_rele(int fd); extern int zfs_onexit_add_cb(minor_t minor, void (*func)(void *), void *data, uint64_t *action_handle); extern int zfs_onexit_del_cb(minor_t minor, uint64_t action_handle, boolean_t fire); extern int zfs_onexit_cb_data(minor_t minor, uint64_t action_handle, void **data); #ifdef __cplusplus } #endif #endif /* _SYS_ZFS_ONEXIT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/bptree.h0000644000000000000000000000007413607166132017313 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.410423702 zfs-0.8.3/include/sys/bptree.h0000644016037001603700000000361413607166132017314 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2012, 2014 by Delphix. All rights reserved. */ #ifndef _SYS_BPTREE_H #define _SYS_BPTREE_H #include #include #ifdef __cplusplus extern "C" { #endif typedef struct bptree_phys { uint64_t bt_begin; uint64_t bt_end; uint64_t bt_bytes; uint64_t bt_comp; uint64_t bt_uncomp; } bptree_phys_t; typedef struct bptree_entry_phys { blkptr_t be_bp; uint64_t be_birth_txg; /* only delete blocks born after this txg */ zbookmark_phys_t be_zb; /* holds traversal resume point if needed */ } bptree_entry_phys_t; typedef int bptree_itor_t(void *arg, const blkptr_t *bp, dmu_tx_t *tx); uint64_t bptree_alloc(objset_t *os, dmu_tx_t *tx); int bptree_free(objset_t *os, uint64_t obj, dmu_tx_t *tx); boolean_t bptree_is_empty(objset_t *os, uint64_t obj); void bptree_add(objset_t *os, uint64_t obj, blkptr_t *bp, uint64_t birth_txg, uint64_t bytes, uint64_t comp, uint64_t uncomp, dmu_tx_t *tx); int bptree_iterate(objset_t *os, uint64_t obj, boolean_t free, bptree_itor_t func, void *arg, dmu_tx_t *tx); #ifdef __cplusplus } #endif #endif /* _SYS_BPTREE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_dbgmsg.h0000644000000000000000000000007413607166147020461 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.547428101 zfs-0.8.3/include/sys/trace_dbgmsg.h0000644016037001603700000000377413607166147020471 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* Do not include this file directly. Please use instead. */ #ifndef _SYS_TRACE_DBGMSG_INDIRECT #error "trace_dbgmsg.h included directly" #endif /* * This file defines tracepoint events for use by the dbgmsg(), * dprintf(), and SET_ERROR() interfaces. These are grouped here because * they all provide a way to store simple messages in the debug log (as * opposed to events used by the DTRACE_PROBE interfaces which typically * dump structured data). * * This header is included inside the trace.h multiple inclusion guard, * and it is guarded above against direct inclusion, so it and need not * be guarded separately. */ /* * Generic support for one argument tracepoints of the form: * * DTRACE_PROBE1(..., * const char *, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_dprintf_class, TP_PROTO(const char *msg), TP_ARGS(msg), TP_STRUCT__entry( __string(msg, msg) ), TP_fast_assign( __assign_str(msg, msg); ), TP_printk("%s", __get_str(msg)) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_DPRINTF_EVENT(name) \ DEFINE_EVENT(zfs_dprintf_class, name, \ TP_PROTO(const char *msg), \ TP_ARGS(msg)) /* END CSTYLED */ DEFINE_DPRINTF_EVENT(zfs_zfs__dprintf); zfs-0.8.3/include/sys/PaxHeaders.151519/u8_textprep.h0000644000000000000000000000007413607166132020321 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.579429128 zfs-0.8.3/include/sys/u8_textprep.h0000644016037001603700000000712313607166132020321 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_U8_TEXTPREP_H #define _SYS_U8_TEXTPREP_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Unicode encoding conversion functions and their macros. */ #define UCONV_IN_BIG_ENDIAN 0x0001 #define UCONV_OUT_BIG_ENDIAN 0x0002 #define UCONV_IN_SYSTEM_ENDIAN 0x0004 #define UCONV_OUT_SYSTEM_ENDIAN 0x0008 #define UCONV_IN_LITTLE_ENDIAN 0x0010 #define UCONV_OUT_LITTLE_ENDIAN 0x0020 #define UCONV_IGNORE_NULL 0x0040 #define UCONV_IN_ACCEPT_BOM 0x0080 #define UCONV_OUT_EMIT_BOM 0x0100 extern int uconv_u16tou32(const uint16_t *, size_t *, uint32_t *, size_t *, int); extern int uconv_u16tou8(const uint16_t *, size_t *, uchar_t *, size_t *, int); extern int uconv_u32tou16(const uint32_t *, size_t *, uint16_t *, size_t *, int); extern int uconv_u32tou8(const uint32_t *, size_t *, uchar_t *, size_t *, int); extern int uconv_u8tou16(const uchar_t *, size_t *, uint16_t *, size_t *, int); extern int uconv_u8tou32(const uchar_t *, size_t *, uint32_t *, size_t *, int); /* * UTF-8 text preparation functions and their macros. * * Among the macros defined, U8_CANON_DECOMP, U8_COMPAT_DECOMP, and * U8_CANON_COMP are not public interfaces and must not be used directly * at the flag input argument. */ #define U8_STRCMP_CS (0x00000001) #define U8_STRCMP_CI_UPPER (0x00000002) #define U8_STRCMP_CI_LOWER (0x00000004) #define U8_CANON_DECOMP (0x00000010) #define U8_COMPAT_DECOMP (0x00000020) #define U8_CANON_COMP (0x00000040) #define U8_STRCMP_NFD (U8_CANON_DECOMP) #define U8_STRCMP_NFC (U8_CANON_DECOMP | U8_CANON_COMP) #define U8_STRCMP_NFKD (U8_COMPAT_DECOMP) #define U8_STRCMP_NFKC (U8_COMPAT_DECOMP | U8_CANON_COMP) #define U8_TEXTPREP_TOUPPER (U8_STRCMP_CI_UPPER) #define U8_TEXTPREP_TOLOWER (U8_STRCMP_CI_LOWER) #define U8_TEXTPREP_NFD (U8_STRCMP_NFD) #define U8_TEXTPREP_NFC (U8_STRCMP_NFC) #define U8_TEXTPREP_NFKD (U8_STRCMP_NFKD) #define U8_TEXTPREP_NFKC (U8_STRCMP_NFKC) #define U8_TEXTPREP_IGNORE_NULL (0x00010000) #define U8_TEXTPREP_IGNORE_INVALID (0x00020000) #define U8_TEXTPREP_NOWAIT (0x00040000) #define U8_UNICODE_320 (0) #define U8_UNICODE_500 (1) #define U8_UNICODE_LATEST (U8_UNICODE_500) #define U8_VALIDATE_ENTIRE (0x00100000) #define U8_VALIDATE_CHECK_ADDITIONAL (0x00200000) #define U8_VALIDATE_UCS2_RANGE (0x00400000) #define U8_ILLEGAL_CHAR (-1) #define U8_OUT_OF_RANGE_CHAR (-2) extern int u8_validate(char *, size_t, char **, int, int *); extern int u8_strcmp(const char *, const char *, size_t, int, size_t, int *); extern size_t u8_textprep_str(char *, size_t *, char *, size_t *, int, size_t, int *); #ifdef __cplusplus } #endif #endif /* _SYS_U8_TEXTPREP_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zpl.h0000644000000000000000000000007413607166147016645 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.701433046 zfs-0.8.3/include/sys/zpl.h0000644016037001603700000001403413607166147016644 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2011, Lawrence Livermore National Security, LLC. */ #ifndef _SYS_ZPL_H #define _SYS_ZPL_H #include #include #include #include #include #include #include #include #include #include #include /* zpl_inode.c */ extern void zpl_vap_init(vattr_t *vap, struct inode *dir, zpl_umode_t mode, cred_t *cr); extern const struct inode_operations zpl_inode_operations; extern const struct inode_operations zpl_dir_inode_operations; extern const struct inode_operations zpl_symlink_inode_operations; extern const struct inode_operations zpl_special_inode_operations; extern dentry_operations_t zpl_dentry_operations; /* zpl_file.c */ extern ssize_t zpl_read_common(struct inode *ip, const char *buf, size_t len, loff_t *ppos, uio_seg_t segment, int flags, cred_t *cr); extern ssize_t zpl_write_common(struct inode *ip, const char *buf, size_t len, loff_t *ppos, uio_seg_t segment, int flags, cred_t *cr); #if defined(HAVE_FILE_FALLOCATE) || defined(HAVE_INODE_FALLOCATE) extern long zpl_fallocate_common(struct inode *ip, int mode, loff_t offset, loff_t len); #endif /* defined(HAVE_FILE_FALLOCATE) || defined(HAVE_INODE_FALLOCATE) */ extern const struct address_space_operations zpl_address_space_operations; extern const struct file_operations zpl_file_operations; extern const struct file_operations zpl_dir_file_operations; /* zpl_super.c */ extern void zpl_prune_sb(int64_t nr_to_scan, void *arg); extern const struct super_operations zpl_super_operations; extern const struct export_operations zpl_export_operations; extern struct file_system_type zpl_fs_type; /* zpl_xattr.c */ extern ssize_t zpl_xattr_list(struct dentry *dentry, char *buf, size_t size); extern int zpl_xattr_security_init(struct inode *ip, struct inode *dip, const struct qstr *qstr); #if defined(CONFIG_FS_POSIX_ACL) extern int zpl_set_acl(struct inode *ip, struct posix_acl *acl, int type); extern struct posix_acl *zpl_get_acl(struct inode *ip, int type); #if !defined(HAVE_GET_ACL) #if defined(HAVE_CHECK_ACL_WITH_FLAGS) extern int zpl_check_acl(struct inode *inode, int mask, unsigned int flags); #elif defined(HAVE_CHECK_ACL) extern int zpl_check_acl(struct inode *inode, int mask); #elif defined(HAVE_PERMISSION_WITH_NAMEIDATA) extern int zpl_permission(struct inode *ip, int mask, struct nameidata *nd); #elif defined(HAVE_PERMISSION) extern int zpl_permission(struct inode *ip, int mask); #endif /* HAVE_CHECK_ACL | HAVE_PERMISSION */ #endif /* HAVE_GET_ACL */ extern int zpl_init_acl(struct inode *ip, struct inode *dir); extern int zpl_chmod_acl(struct inode *ip); #else static inline int zpl_init_acl(struct inode *ip, struct inode *dir) { return (0); } static inline int zpl_chmod_acl(struct inode *ip) { return (0); } #endif /* CONFIG_FS_POSIX_ACL */ extern xattr_handler_t *zpl_xattr_handlers[]; /* zpl_ctldir.c */ extern const struct file_operations zpl_fops_root; extern const struct inode_operations zpl_ops_root; extern const struct file_operations zpl_fops_snapdir; extern const struct inode_operations zpl_ops_snapdir; #ifdef HAVE_AUTOMOUNT extern const struct dentry_operations zpl_dops_snapdirs; #else extern const struct inode_operations zpl_ops_snapdirs; #endif /* HAVE_AUTOMOUNT */ extern const struct file_operations zpl_fops_shares; extern const struct inode_operations zpl_ops_shares; #if defined(HAVE_VFS_ITERATE) || defined(HAVE_VFS_ITERATE_SHARED) #define ZPL_DIR_CONTEXT_INIT(_dirent, _actor, _pos) { \ .actor = _actor, \ .pos = _pos, \ } typedef struct dir_context zpl_dir_context_t; #define zpl_dir_emit dir_emit #define zpl_dir_emit_dot dir_emit_dot #define zpl_dir_emit_dotdot dir_emit_dotdot #define zpl_dir_emit_dots dir_emit_dots #else typedef struct zpl_dir_context { void *dirent; const filldir_t actor; loff_t pos; } zpl_dir_context_t; #define ZPL_DIR_CONTEXT_INIT(_dirent, _actor, _pos) { \ .dirent = _dirent, \ .actor = _actor, \ .pos = _pos, \ } static inline bool zpl_dir_emit(zpl_dir_context_t *ctx, const char *name, int namelen, uint64_t ino, unsigned type) { return (!ctx->actor(ctx->dirent, name, namelen, ctx->pos, ino, type)); } static inline bool zpl_dir_emit_dot(struct file *file, zpl_dir_context_t *ctx) { return (ctx->actor(ctx->dirent, ".", 1, ctx->pos, file_inode(file)->i_ino, DT_DIR) == 0); } static inline bool zpl_dir_emit_dotdot(struct file *file, zpl_dir_context_t *ctx) { return (ctx->actor(ctx->dirent, "..", 2, ctx->pos, parent_ino(file_dentry(file)), DT_DIR) == 0); } static inline bool zpl_dir_emit_dots(struct file *file, zpl_dir_context_t *ctx) { if (ctx->pos == 0) { if (!zpl_dir_emit_dot(file, ctx)) return (false); ctx->pos = 1; } if (ctx->pos == 1) { if (!zpl_dir_emit_dotdot(file, ctx)) return (false); ctx->pos = 2; } return (true); } #endif /* HAVE_VFS_ITERATE */ /* * Linux 4.18, inode times converted from timespec to timespec64. */ #if defined(HAVE_INODE_TIMESPEC64_TIMES) #define zpl_inode_timespec_trunc(ts, gran) timespec64_trunc(ts, gran) #else #define zpl_inode_timespec_trunc(ts, gran) timespec_trunc(ts, gran) #endif #endif /* _SYS_ZPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_multilist.h0000644000000000000000000000007413607166147021244 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.556428389 zfs-0.8.3/include/sys/trace_multilist.h0000644016037001603700000000475713607166147021256 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_multilist #if !defined(_TRACE_MULTILIST_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_MULTILIST_H #include #include /* * Generic support for three argument tracepoints of the form: * * DTRACE_PROBE3(..., * multilist_t *, ..., * unsigned int, ..., * void *, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_multilist_insert_remove_class, TP_PROTO(multilist_t *ml, unsigned sublist_idx, void *obj), TP_ARGS(ml, sublist_idx, obj), TP_STRUCT__entry( __field(size_t, ml_offset) __field(uint64_t, ml_num_sublists) __field(unsigned int, sublist_idx) ), TP_fast_assign( __entry->ml_offset = ml->ml_offset; __entry->ml_num_sublists = ml->ml_num_sublists; __entry->sublist_idx = sublist_idx; ), TP_printk("ml { offset %ld numsublists %llu sublistidx %u } ", __entry->ml_offset, __entry->ml_num_sublists, __entry->sublist_idx) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_MULTILIST_INSERT_REMOVE_EVENT(name) \ DEFINE_EVENT(zfs_multilist_insert_remove_class, name, \ TP_PROTO(multilist_t *ml, unsigned int sublist_idx, void *obj), \ TP_ARGS(ml, sublist_idx, obj)) /* END CSTYLED */ DEFINE_MULTILIST_INSERT_REMOVE_EVENT(zfs_multilist__insert); DEFINE_MULTILIST_INSERT_REMOVE_EVENT(zfs_multilist__remove); #endif /* _TRACE_MULTILIST_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_multilist #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/zio_impl.h0000644000000000000000000000007413612141513017644 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.688432627 zfs-0.8.3/include/sys/zio_impl.h0000644016037001603700000002051313612141513017642 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012, 2015 by Delphix. All rights reserved. */ #ifndef _ZIO_IMPL_H #define _ZIO_IMPL_H #ifdef __cplusplus extern "C" { #endif /* * XXX -- Describe ZFS I/O pipeline here. Fill in as needed. * * The ZFS I/O pipeline is comprised of various stages which are defined * in the zio_stage enum below. The individual stages are used to construct * these basic I/O operations: Read, Write, Free, Claim, and Ioctl. * * I/O operations: (XXX - provide detail for each of the operations) * * Read: * Write: * Free: * Claim: * Ioctl: * * Although the most common pipeline are used by the basic I/O operations * above, there are some helper pipelines (one could consider them * sub-pipelines) which are used internally by the ZIO module and are * explained below: * * Interlock Pipeline: * The interlock pipeline is the most basic pipeline and is used by all * of the I/O operations. The interlock pipeline does not perform any I/O * and is used to coordinate the dependencies between I/Os that are being * issued (i.e. the parent/child relationship). * * Vdev child Pipeline: * The vdev child pipeline is responsible for performing the physical I/O. * It is in this pipeline where the I/O are queued and possibly cached. * * In addition to performing I/O, the pipeline is also responsible for * data transformations. The transformations performed are based on the * specific properties that user may have selected and modify the * behavior of the pipeline. Examples of supported transformations are * compression, dedup, and nop writes. Transformations will either modify * the data or the pipeline. This list below further describes each of * the supported transformations: * * Compression: * ZFS supports three different flavors of compression -- gzip, lzjb, and * zle. Compression occurs as part of the write pipeline and is performed * in the ZIO_STAGE_WRITE_BP_INIT stage. * * Dedup: * Dedup reads are handled by the ZIO_STAGE_DDT_READ_START and * ZIO_STAGE_DDT_READ_DONE stages. These stages are added to an existing * read pipeline if the dedup bit is set on the block pointer. * Writing a dedup block is performed by the ZIO_STAGE_DDT_WRITE stage * and added to a write pipeline if a user has enabled dedup on that * particular dataset. * * NOP Write: * The NOP write feature is performed by the ZIO_STAGE_NOP_WRITE stage * and is added to an existing write pipeline if a cryptographically * secure checksum (i.e. SHA256) is enabled and compression is turned on. * The NOP write stage will compare the checksums of the current data * on-disk (level-0 blocks only) and the data that is currently being written. * If the checksum values are identical then the pipeline is converted to * an interlock pipeline skipping block allocation and bypassing the * physical I/O. The nop write feature can handle writes in either * syncing or open context (i.e. zil writes) and as a result is mutually * exclusive with dedup. * * Encryption: * Encryption and authentication is handled by the ZIO_STAGE_ENCRYPT stage. * This stage determines how the encryption metadata is stored in the bp. * Decryption and MAC verification is performed during zio_decrypt() as a * transform callback. Encryption is mutually exclusive with nopwrite, because * blocks with the same plaintext will be encrypted with different salts and * IV's (if dedup is off), and therefore have different ciphertexts. For dedup * blocks we deterministically generate the IV and salt by performing an HMAC * of the plaintext, which is computationally expensive, but allows us to keep * support for encrypted dedup. See the block comment in zio_crypt.c for * details. */ /* * zio pipeline stage definitions */ enum zio_stage { ZIO_STAGE_OPEN = 1 << 0, /* RWFCI */ ZIO_STAGE_READ_BP_INIT = 1 << 1, /* R---- */ ZIO_STAGE_WRITE_BP_INIT = 1 << 2, /* -W--- */ ZIO_STAGE_FREE_BP_INIT = 1 << 3, /* --F-- */ ZIO_STAGE_ISSUE_ASYNC = 1 << 4, /* RWF-- */ ZIO_STAGE_WRITE_COMPRESS = 1 << 5, /* -W--- */ ZIO_STAGE_ENCRYPT = 1 << 6, /* -W--- */ ZIO_STAGE_CHECKSUM_GENERATE = 1 << 7, /* -W--- */ ZIO_STAGE_NOP_WRITE = 1 << 8, /* -W--- */ ZIO_STAGE_DDT_READ_START = 1 << 9, /* R---- */ ZIO_STAGE_DDT_READ_DONE = 1 << 10, /* R---- */ ZIO_STAGE_DDT_WRITE = 1 << 11, /* -W--- */ ZIO_STAGE_DDT_FREE = 1 << 12, /* --F-- */ ZIO_STAGE_GANG_ASSEMBLE = 1 << 13, /* RWFC- */ ZIO_STAGE_GANG_ISSUE = 1 << 14, /* RWFC- */ ZIO_STAGE_DVA_THROTTLE = 1 << 15, /* -W--- */ ZIO_STAGE_DVA_ALLOCATE = 1 << 16, /* -W--- */ ZIO_STAGE_DVA_FREE = 1 << 17, /* --F-- */ ZIO_STAGE_DVA_CLAIM = 1 << 18, /* ---C- */ ZIO_STAGE_READY = 1 << 19, /* RWFCI */ ZIO_STAGE_VDEV_IO_START = 1 << 20, /* RW--I */ ZIO_STAGE_VDEV_IO_DONE = 1 << 21, /* RW--I */ ZIO_STAGE_VDEV_IO_ASSESS = 1 << 22, /* RW--I */ ZIO_STAGE_CHECKSUM_VERIFY = 1 << 23, /* R---- */ ZIO_STAGE_DONE = 1 << 24 /* RWFCI */ }; #define ZIO_INTERLOCK_STAGES \ (ZIO_STAGE_READY | \ ZIO_STAGE_DONE) #define ZIO_INTERLOCK_PIPELINE \ ZIO_INTERLOCK_STAGES #define ZIO_VDEV_IO_STAGES \ (ZIO_STAGE_VDEV_IO_START | \ ZIO_STAGE_VDEV_IO_DONE | \ ZIO_STAGE_VDEV_IO_ASSESS) #define ZIO_VDEV_CHILD_PIPELINE \ (ZIO_VDEV_IO_STAGES | \ ZIO_STAGE_DONE) #define ZIO_READ_COMMON_STAGES \ (ZIO_INTERLOCK_STAGES | \ ZIO_VDEV_IO_STAGES | \ ZIO_STAGE_CHECKSUM_VERIFY) #define ZIO_READ_PHYS_PIPELINE \ ZIO_READ_COMMON_STAGES #define ZIO_READ_PIPELINE \ (ZIO_READ_COMMON_STAGES | \ ZIO_STAGE_READ_BP_INIT) #define ZIO_DDT_CHILD_READ_PIPELINE \ ZIO_READ_COMMON_STAGES #define ZIO_DDT_READ_PIPELINE \ (ZIO_INTERLOCK_STAGES | \ ZIO_STAGE_READ_BP_INIT | \ ZIO_STAGE_DDT_READ_START | \ ZIO_STAGE_DDT_READ_DONE) #define ZIO_WRITE_COMMON_STAGES \ (ZIO_INTERLOCK_STAGES | \ ZIO_VDEV_IO_STAGES | \ ZIO_STAGE_ISSUE_ASYNC | \ ZIO_STAGE_CHECKSUM_GENERATE) #define ZIO_WRITE_PHYS_PIPELINE \ ZIO_WRITE_COMMON_STAGES #define ZIO_REWRITE_PIPELINE \ (ZIO_WRITE_COMMON_STAGES | \ ZIO_STAGE_WRITE_COMPRESS | \ ZIO_STAGE_ENCRYPT | \ ZIO_STAGE_WRITE_BP_INIT) #define ZIO_WRITE_PIPELINE \ (ZIO_WRITE_COMMON_STAGES | \ ZIO_STAGE_WRITE_BP_INIT | \ ZIO_STAGE_WRITE_COMPRESS | \ ZIO_STAGE_ENCRYPT | \ ZIO_STAGE_DVA_THROTTLE | \ ZIO_STAGE_DVA_ALLOCATE) #define ZIO_DDT_CHILD_WRITE_PIPELINE \ (ZIO_INTERLOCK_STAGES | \ ZIO_VDEV_IO_STAGES | \ ZIO_STAGE_DVA_THROTTLE | \ ZIO_STAGE_DVA_ALLOCATE) #define ZIO_DDT_WRITE_PIPELINE \ (ZIO_INTERLOCK_STAGES | \ ZIO_STAGE_WRITE_BP_INIT | \ ZIO_STAGE_ISSUE_ASYNC | \ ZIO_STAGE_WRITE_COMPRESS | \ ZIO_STAGE_ENCRYPT | \ ZIO_STAGE_CHECKSUM_GENERATE | \ ZIO_STAGE_DDT_WRITE) #define ZIO_GANG_STAGES \ (ZIO_STAGE_GANG_ASSEMBLE | \ ZIO_STAGE_GANG_ISSUE) #define ZIO_FREE_PIPELINE \ (ZIO_INTERLOCK_STAGES | \ ZIO_STAGE_FREE_BP_INIT | \ ZIO_STAGE_DVA_FREE) #define ZIO_DDT_FREE_PIPELINE \ (ZIO_INTERLOCK_STAGES | \ ZIO_STAGE_FREE_BP_INIT | \ ZIO_STAGE_ISSUE_ASYNC | \ ZIO_STAGE_DDT_FREE) #define ZIO_CLAIM_PIPELINE \ (ZIO_INTERLOCK_STAGES | \ ZIO_STAGE_DVA_CLAIM) #define ZIO_IOCTL_PIPELINE \ (ZIO_INTERLOCK_STAGES | \ ZIO_STAGE_VDEV_IO_START | \ ZIO_STAGE_VDEV_IO_ASSESS) #define ZIO_TRIM_PIPELINE \ (ZIO_INTERLOCK_STAGES | \ ZIO_STAGE_ISSUE_ASYNC | \ ZIO_VDEV_IO_STAGES) #define ZIO_BLOCKING_STAGES \ (ZIO_STAGE_DVA_ALLOCATE | \ ZIO_STAGE_DVA_CLAIM | \ ZIO_STAGE_VDEV_IO_START) extern void zio_inject_init(void); extern void zio_inject_fini(void); #ifdef __cplusplus } #endif #endif /* _ZIO_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/spa.h0000644000000000000000000000007413612141523016606 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.530427554 zfs-0.8.3/include/sys/spa.h0000644016037001603700000013177113612141523016615 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. * Copyright 2013 Saso Kiselkov. All rights reserved. * Copyright (c) 2014 Integros [integros.com] * Copyright 2017 Joyent, Inc. * Copyright (c) 2017, 2019, Datto Inc. All rights reserved. * Copyright (c) 2017, Intel Corporation. */ #ifndef _SYS_SPA_H #define _SYS_SPA_H #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Forward references that lots of things need. */ typedef struct spa spa_t; typedef struct vdev vdev_t; typedef struct metaslab metaslab_t; typedef struct metaslab_group metaslab_group_t; typedef struct metaslab_class metaslab_class_t; typedef struct zio zio_t; typedef struct zilog zilog_t; typedef struct spa_aux_vdev spa_aux_vdev_t; typedef struct ddt ddt_t; typedef struct ddt_entry ddt_entry_t; typedef struct zbookmark_phys zbookmark_phys_t; struct dsl_pool; struct dsl_dataset; struct dsl_crypto_params; /* * General-purpose 32-bit and 64-bit bitfield encodings. */ #define BF32_DECODE(x, low, len) P2PHASE((x) >> (low), 1U << (len)) #define BF64_DECODE(x, low, len) P2PHASE((x) >> (low), 1ULL << (len)) #define BF32_ENCODE(x, low, len) (P2PHASE((x), 1U << (len)) << (low)) #define BF64_ENCODE(x, low, len) (P2PHASE((x), 1ULL << (len)) << (low)) #define BF32_GET(x, low, len) BF32_DECODE(x, low, len) #define BF64_GET(x, low, len) BF64_DECODE(x, low, len) #define BF32_SET(x, low, len, val) do { \ ASSERT3U(val, <, 1U << (len)); \ ASSERT3U(low + len, <=, 32); \ (x) ^= BF32_ENCODE((x >> low) ^ (val), low, len); \ _NOTE(CONSTCOND) } while (0) #define BF64_SET(x, low, len, val) do { \ ASSERT3U(val, <, 1ULL << (len)); \ ASSERT3U(low + len, <=, 64); \ ((x) ^= BF64_ENCODE((x >> low) ^ (val), low, len)); \ _NOTE(CONSTCOND) } while (0) #define BF32_GET_SB(x, low, len, shift, bias) \ ((BF32_GET(x, low, len) + (bias)) << (shift)) #define BF64_GET_SB(x, low, len, shift, bias) \ ((BF64_GET(x, low, len) + (bias)) << (shift)) #define BF32_SET_SB(x, low, len, shift, bias, val) do { \ ASSERT(IS_P2ALIGNED(val, 1U << shift)); \ ASSERT3S((val) >> (shift), >=, bias); \ BF32_SET(x, low, len, ((val) >> (shift)) - (bias)); \ _NOTE(CONSTCOND) } while (0) #define BF64_SET_SB(x, low, len, shift, bias, val) do { \ ASSERT(IS_P2ALIGNED(val, 1ULL << shift)); \ ASSERT3S((val) >> (shift), >=, bias); \ BF64_SET(x, low, len, ((val) >> (shift)) - (bias)); \ _NOTE(CONSTCOND) } while (0) /* * We currently support block sizes from 512 bytes to 16MB. * The benefits of larger blocks, and thus larger IO, need to be weighed * against the cost of COWing a giant block to modify one byte, and the * large latency of reading or writing a large block. * * Note that although blocks up to 16MB are supported, the recordsize * property can not be set larger than zfs_max_recordsize (default 1MB). * See the comment near zfs_max_recordsize in dsl_dataset.c for details. * * Note that although the LSIZE field of the blkptr_t can store sizes up * to 32MB, the dnode's dn_datablkszsec can only store sizes up to * 32MB - 512 bytes. Therefore, we limit SPA_MAXBLOCKSIZE to 16MB. */ #define SPA_MINBLOCKSHIFT 9 #define SPA_OLD_MAXBLOCKSHIFT 17 #define SPA_MAXBLOCKSHIFT 24 #define SPA_MINBLOCKSIZE (1ULL << SPA_MINBLOCKSHIFT) #define SPA_OLD_MAXBLOCKSIZE (1ULL << SPA_OLD_MAXBLOCKSHIFT) #define SPA_MAXBLOCKSIZE (1ULL << SPA_MAXBLOCKSHIFT) /* * Alignment Shift (ashift) is an immutable, internal top-level vdev property * which can only be set at vdev creation time. Physical writes are always done * according to it, which makes 2^ashift the smallest possible IO on a vdev. * * We currently allow values ranging from 512 bytes (2^9 = 512) to 64 KiB * (2^16 = 65,536). */ #define ASHIFT_MIN 9 #define ASHIFT_MAX 16 /* * Size of block to hold the configuration data (a packed nvlist) */ #define SPA_CONFIG_BLOCKSIZE (1ULL << 14) /* * The DVA size encodings for LSIZE and PSIZE support blocks up to 32MB. * The ASIZE encoding should be at least 64 times larger (6 more bits) * to support up to 4-way RAID-Z mirror mode with worst-case gang block * overhead, three DVAs per bp, plus one more bit in case we do anything * else that expands the ASIZE. */ #define SPA_LSIZEBITS 16 /* LSIZE up to 32M (2^16 * 512) */ #define SPA_PSIZEBITS 16 /* PSIZE up to 32M (2^16 * 512) */ #define SPA_ASIZEBITS 24 /* ASIZE up to 64 times larger */ #define SPA_COMPRESSBITS 7 #define SPA_VDEVBITS 24 /* * All SPA data is represented by 128-bit data virtual addresses (DVAs). * The members of the dva_t should be considered opaque outside the SPA. */ typedef struct dva { uint64_t dva_word[2]; } dva_t; /* * Some checksums/hashes need a 256-bit initialization salt. This salt is kept * secret and is suitable for use in MAC algorithms as the key. */ typedef struct zio_cksum_salt { uint8_t zcs_bytes[32]; } zio_cksum_salt_t; /* * Each block is described by its DVAs, time of birth, checksum, etc. * The word-by-word, bit-by-bit layout of the blkptr is as follows: * * 64 56 48 40 32 24 16 8 0 * +-------+-------+-------+-------+-------+-------+-------+-------+ * 0 | pad | vdev1 | GRID | ASIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 1 |G| offset1 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 2 | pad | vdev2 | GRID | ASIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 3 |G| offset2 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 4 | pad | vdev3 | GRID | ASIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 5 |G| offset3 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 6 |BDX|lvl| type | cksum |E| comp| PSIZE | LSIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 7 | padding | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 8 | padding | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 9 | physical birth txg | * +-------+-------+-------+-------+-------+-------+-------+-------+ * a | logical birth txg | * +-------+-------+-------+-------+-------+-------+-------+-------+ * b | fill count | * +-------+-------+-------+-------+-------+-------+-------+-------+ * c | checksum[0] | * +-------+-------+-------+-------+-------+-------+-------+-------+ * d | checksum[1] | * +-------+-------+-------+-------+-------+-------+-------+-------+ * e | checksum[2] | * +-------+-------+-------+-------+-------+-------+-------+-------+ * f | checksum[3] | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * Legend: * * vdev virtual device ID * offset offset into virtual device * LSIZE logical size * PSIZE physical size (after compression) * ASIZE allocated size (including RAID-Z parity and gang block headers) * GRID RAID-Z layout information (reserved for future use) * cksum checksum function * comp compression function * G gang block indicator * B byteorder (endianness) * D dedup * X encryption * E blkptr_t contains embedded data (see below) * lvl level of indirection * type DMU object type * phys birth txg when dva[0] was written; zero if same as logical birth txg * note that typically all the dva's would be written in this * txg, but they could be different if they were moved by * device removal. * log. birth transaction group in which the block was logically born * fill count number of non-zero blocks under this bp * checksum[4] 256-bit checksum of the data this bp describes */ /* * The blkptr_t's of encrypted blocks also need to store the encryption * parameters so that the block can be decrypted. This layout is as follows: * * 64 56 48 40 32 24 16 8 0 * +-------+-------+-------+-------+-------+-------+-------+-------+ * 0 | vdev1 | GRID | ASIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 1 |G| offset1 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 2 | vdev2 | GRID | ASIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 3 |G| offset2 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 4 | salt | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 5 | IV1 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 6 |BDX|lvl| type | cksum |E| comp| PSIZE | LSIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 7 | padding | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 8 | padding | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 9 | physical birth txg | * +-------+-------+-------+-------+-------+-------+-------+-------+ * a | logical birth txg | * +-------+-------+-------+-------+-------+-------+-------+-------+ * b | IV2 | fill count | * +-------+-------+-------+-------+-------+-------+-------+-------+ * c | checksum[0] | * +-------+-------+-------+-------+-------+-------+-------+-------+ * d | checksum[1] | * +-------+-------+-------+-------+-------+-------+-------+-------+ * e | MAC[0] | * +-------+-------+-------+-------+-------+-------+-------+-------+ * f | MAC[1] | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * Legend: * * salt Salt for generating encryption keys * IV1 First 64 bits of encryption IV * X Block requires encryption handling (set to 1) * E blkptr_t contains embedded data (set to 0, see below) * fill count number of non-zero blocks under this bp (truncated to 32 bits) * IV2 Last 32 bits of encryption IV * checksum[2] 128-bit checksum of the data this bp describes * MAC[2] 128-bit message authentication code for this data * * The X bit being set indicates that this block is one of 3 types. If this is * a level 0 block with an encrypted object type, the block is encrypted * (see BP_IS_ENCRYPTED()). If this is a level 0 block with an unencrypted * object type, this block is authenticated with an HMAC (see * BP_IS_AUTHENTICATED()). Otherwise (if level > 0), this bp will use the MAC * words to store a checksum-of-MACs from the level below (see * BP_HAS_INDIRECT_MAC_CKSUM()). For convenience in the code, BP_IS_PROTECTED() * refers to both encrypted and authenticated blocks and BP_USES_CRYPT() * refers to any of these 3 kinds of blocks. * * The additional encryption parameters are the salt, IV, and MAC which are * explained in greater detail in the block comment at the top of zio_crypt.c. * The MAC occupies half of the checksum space since it serves a very similar * purpose: to prevent data corruption on disk. The only functional difference * is that the checksum is used to detect on-disk corruption whether or not the * encryption key is loaded and the MAC provides additional protection against * malicious disk tampering. We use the 3rd DVA to store the salt and first * 64 bits of the IV. As a result encrypted blocks can only have 2 copies * maximum instead of the normal 3. The last 32 bits of the IV are stored in * the upper bits of what is usually the fill count. Note that only blocks at * level 0 or -2 are ever encrypted, which allows us to guarantee that these * 32 bits are not trampled over by other code (see zio_crypt.c for details). * The salt and IV are not used for authenticated bps or bps with an indirect * MAC checksum, so these blocks can utilize all 3 DVAs and the full 64 bits * for the fill count. */ /* * "Embedded" blkptr_t's don't actually point to a block, instead they * have a data payload embedded in the blkptr_t itself. See the comment * in blkptr.c for more details. * * The blkptr_t is laid out as follows: * * 64 56 48 40 32 24 16 8 0 * +-------+-------+-------+-------+-------+-------+-------+-------+ * 0 | payload | * 1 | payload | * 2 | payload | * 3 | payload | * 4 | payload | * 5 | payload | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 6 |BDX|lvl| type | etype |E| comp| PSIZE| LSIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ * 7 | payload | * 8 | payload | * 9 | payload | * +-------+-------+-------+-------+-------+-------+-------+-------+ * a | logical birth txg | * +-------+-------+-------+-------+-------+-------+-------+-------+ * b | payload | * c | payload | * d | payload | * e | payload | * f | payload | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * Legend: * * payload contains the embedded data * B (byteorder) byteorder (endianness) * D (dedup) padding (set to zero) * X encryption (set to zero) * E (embedded) set to one * lvl indirection level * type DMU object type * etype how to interpret embedded data (BP_EMBEDDED_TYPE_*) * comp compression function of payload * PSIZE size of payload after compression, in bytes * LSIZE logical size of payload, in bytes * note that 25 bits is enough to store the largest * "normal" BP's LSIZE (2^16 * 2^9) in bytes * log. birth transaction group in which the block was logically born * * Note that LSIZE and PSIZE are stored in bytes, whereas for non-embedded * bp's they are stored in units of SPA_MINBLOCKSHIFT. * Generally, the generic BP_GET_*() macros can be used on embedded BP's. * The B, D, X, lvl, type, and comp fields are stored the same as with normal * BP's so the BP_SET_* macros can be used with them. etype, PSIZE, LSIZE must * be set with the BPE_SET_* macros. BP_SET_EMBEDDED() should be called before * other macros, as they assert that they are only used on BP's of the correct * "embedded-ness". Encrypted blkptr_t's cannot be embedded because they use * the payload space for encryption parameters (see the comment above on * how encryption parameters are stored). */ #define BPE_GET_ETYPE(bp) \ (ASSERT(BP_IS_EMBEDDED(bp)), \ BF64_GET((bp)->blk_prop, 40, 8)) #define BPE_SET_ETYPE(bp, t) do { \ ASSERT(BP_IS_EMBEDDED(bp)); \ BF64_SET((bp)->blk_prop, 40, 8, t); \ _NOTE(CONSTCOND) } while (0) #define BPE_GET_LSIZE(bp) \ (ASSERT(BP_IS_EMBEDDED(bp)), \ BF64_GET_SB((bp)->blk_prop, 0, 25, 0, 1)) #define BPE_SET_LSIZE(bp, x) do { \ ASSERT(BP_IS_EMBEDDED(bp)); \ BF64_SET_SB((bp)->blk_prop, 0, 25, 0, 1, x); \ _NOTE(CONSTCOND) } while (0) #define BPE_GET_PSIZE(bp) \ (ASSERT(BP_IS_EMBEDDED(bp)), \ BF64_GET_SB((bp)->blk_prop, 25, 7, 0, 1)) #define BPE_SET_PSIZE(bp, x) do { \ ASSERT(BP_IS_EMBEDDED(bp)); \ BF64_SET_SB((bp)->blk_prop, 25, 7, 0, 1, x); \ _NOTE(CONSTCOND) } while (0) typedef enum bp_embedded_type { BP_EMBEDDED_TYPE_DATA, BP_EMBEDDED_TYPE_RESERVED, /* Reserved for Delphix byteswap feature. */ NUM_BP_EMBEDDED_TYPES } bp_embedded_type_t; #define BPE_NUM_WORDS 14 #define BPE_PAYLOAD_SIZE (BPE_NUM_WORDS * sizeof (uint64_t)) #define BPE_IS_PAYLOADWORD(bp, wp) \ ((wp) != &(bp)->blk_prop && (wp) != &(bp)->blk_birth) #define SPA_BLKPTRSHIFT 7 /* blkptr_t is 128 bytes */ #define SPA_DVAS_PER_BP 3 /* Number of DVAs in a bp */ #define SPA_SYNC_MIN_VDEVS 3 /* min vdevs to update during sync */ /* * A block is a hole when it has either 1) never been written to, or * 2) is zero-filled. In both cases, ZFS can return all zeroes for all reads * without physically allocating disk space. Holes are represented in the * blkptr_t structure by zeroed blk_dva. Correct checking for holes is * done through the BP_IS_HOLE macro. For holes, the logical size, level, * DMU object type, and birth times are all also stored for holes that * were written to at some point (i.e. were punched after having been filled). */ typedef struct blkptr { dva_t blk_dva[SPA_DVAS_PER_BP]; /* Data Virtual Addresses */ uint64_t blk_prop; /* size, compression, type, etc */ uint64_t blk_pad[2]; /* Extra space for the future */ uint64_t blk_phys_birth; /* txg when block was allocated */ uint64_t blk_birth; /* transaction group at birth */ uint64_t blk_fill; /* fill count */ zio_cksum_t blk_cksum; /* 256-bit checksum */ } blkptr_t; /* * Macros to get and set fields in a bp or DVA. */ #define DVA_GET_ASIZE(dva) \ BF64_GET_SB((dva)->dva_word[0], 0, SPA_ASIZEBITS, SPA_MINBLOCKSHIFT, 0) #define DVA_SET_ASIZE(dva, x) \ BF64_SET_SB((dva)->dva_word[0], 0, SPA_ASIZEBITS, \ SPA_MINBLOCKSHIFT, 0, x) #define DVA_GET_GRID(dva) BF64_GET((dva)->dva_word[0], 24, 8) #define DVA_SET_GRID(dva, x) BF64_SET((dva)->dva_word[0], 24, 8, x) #define DVA_GET_VDEV(dva) BF64_GET((dva)->dva_word[0], 32, SPA_VDEVBITS) #define DVA_SET_VDEV(dva, x) \ BF64_SET((dva)->dva_word[0], 32, SPA_VDEVBITS, x) #define DVA_GET_OFFSET(dva) \ BF64_GET_SB((dva)->dva_word[1], 0, 63, SPA_MINBLOCKSHIFT, 0) #define DVA_SET_OFFSET(dva, x) \ BF64_SET_SB((dva)->dva_word[1], 0, 63, SPA_MINBLOCKSHIFT, 0, x) #define DVA_GET_GANG(dva) BF64_GET((dva)->dva_word[1], 63, 1) #define DVA_SET_GANG(dva, x) BF64_SET((dva)->dva_word[1], 63, 1, x) #define BP_GET_LSIZE(bp) \ (BP_IS_EMBEDDED(bp) ? \ (BPE_GET_ETYPE(bp) == BP_EMBEDDED_TYPE_DATA ? BPE_GET_LSIZE(bp) : 0): \ BF64_GET_SB((bp)->blk_prop, 0, SPA_LSIZEBITS, SPA_MINBLOCKSHIFT, 1)) #define BP_SET_LSIZE(bp, x) do { \ ASSERT(!BP_IS_EMBEDDED(bp)); \ BF64_SET_SB((bp)->blk_prop, \ 0, SPA_LSIZEBITS, SPA_MINBLOCKSHIFT, 1, x); \ _NOTE(CONSTCOND) } while (0) #define BP_GET_PSIZE(bp) \ (BP_IS_EMBEDDED(bp) ? 0 : \ BF64_GET_SB((bp)->blk_prop, 16, SPA_PSIZEBITS, SPA_MINBLOCKSHIFT, 1)) #define BP_SET_PSIZE(bp, x) do { \ ASSERT(!BP_IS_EMBEDDED(bp)); \ BF64_SET_SB((bp)->blk_prop, \ 16, SPA_PSIZEBITS, SPA_MINBLOCKSHIFT, 1, x); \ _NOTE(CONSTCOND) } while (0) #define BP_GET_COMPRESS(bp) \ BF64_GET((bp)->blk_prop, 32, SPA_COMPRESSBITS) #define BP_SET_COMPRESS(bp, x) \ BF64_SET((bp)->blk_prop, 32, SPA_COMPRESSBITS, x) #define BP_IS_EMBEDDED(bp) BF64_GET((bp)->blk_prop, 39, 1) #define BP_SET_EMBEDDED(bp, x) BF64_SET((bp)->blk_prop, 39, 1, x) #define BP_GET_CHECKSUM(bp) \ (BP_IS_EMBEDDED(bp) ? ZIO_CHECKSUM_OFF : \ BF64_GET((bp)->blk_prop, 40, 8)) #define BP_SET_CHECKSUM(bp, x) do { \ ASSERT(!BP_IS_EMBEDDED(bp)); \ BF64_SET((bp)->blk_prop, 40, 8, x); \ _NOTE(CONSTCOND) } while (0) #define BP_GET_TYPE(bp) BF64_GET((bp)->blk_prop, 48, 8) #define BP_SET_TYPE(bp, x) BF64_SET((bp)->blk_prop, 48, 8, x) #define BP_GET_LEVEL(bp) BF64_GET((bp)->blk_prop, 56, 5) #define BP_SET_LEVEL(bp, x) BF64_SET((bp)->blk_prop, 56, 5, x) /* encrypted, authenticated, and MAC cksum bps use the same bit */ #define BP_USES_CRYPT(bp) BF64_GET((bp)->blk_prop, 61, 1) #define BP_SET_CRYPT(bp, x) BF64_SET((bp)->blk_prop, 61, 1, x) #define BP_IS_ENCRYPTED(bp) \ (BP_USES_CRYPT(bp) && \ BP_GET_LEVEL(bp) <= 0 && \ DMU_OT_IS_ENCRYPTED(BP_GET_TYPE(bp))) #define BP_IS_AUTHENTICATED(bp) \ (BP_USES_CRYPT(bp) && \ BP_GET_LEVEL(bp) <= 0 && \ !DMU_OT_IS_ENCRYPTED(BP_GET_TYPE(bp))) #define BP_HAS_INDIRECT_MAC_CKSUM(bp) \ (BP_USES_CRYPT(bp) && BP_GET_LEVEL(bp) > 0) #define BP_IS_PROTECTED(bp) \ (BP_IS_ENCRYPTED(bp) || BP_IS_AUTHENTICATED(bp)) #define BP_GET_DEDUP(bp) BF64_GET((bp)->blk_prop, 62, 1) #define BP_SET_DEDUP(bp, x) BF64_SET((bp)->blk_prop, 62, 1, x) #define BP_GET_BYTEORDER(bp) BF64_GET((bp)->blk_prop, 63, 1) #define BP_SET_BYTEORDER(bp, x) BF64_SET((bp)->blk_prop, 63, 1, x) #define BP_PHYSICAL_BIRTH(bp) \ (BP_IS_EMBEDDED(bp) ? 0 : \ (bp)->blk_phys_birth ? (bp)->blk_phys_birth : (bp)->blk_birth) #define BP_SET_BIRTH(bp, logical, physical) \ { \ ASSERT(!BP_IS_EMBEDDED(bp)); \ (bp)->blk_birth = (logical); \ (bp)->blk_phys_birth = ((logical) == (physical) ? 0 : (physical)); \ } #define BP_GET_FILL(bp) \ ((BP_IS_ENCRYPTED(bp)) ? BF64_GET((bp)->blk_fill, 0, 32) : \ ((BP_IS_EMBEDDED(bp)) ? 1 : (bp)->blk_fill)) #define BP_SET_FILL(bp, fill) \ { \ if (BP_IS_ENCRYPTED(bp)) \ BF64_SET((bp)->blk_fill, 0, 32, fill); \ else \ (bp)->blk_fill = fill; \ } #define BP_GET_IV2(bp) \ (ASSERT(BP_IS_ENCRYPTED(bp)), \ BF64_GET((bp)->blk_fill, 32, 32)) #define BP_SET_IV2(bp, iv2) \ { \ ASSERT(BP_IS_ENCRYPTED(bp)); \ BF64_SET((bp)->blk_fill, 32, 32, iv2); \ } #define BP_IS_METADATA(bp) \ (BP_GET_LEVEL(bp) > 0 || DMU_OT_IS_METADATA(BP_GET_TYPE(bp))) #define BP_GET_ASIZE(bp) \ (BP_IS_EMBEDDED(bp) ? 0 : \ DVA_GET_ASIZE(&(bp)->blk_dva[0]) + \ DVA_GET_ASIZE(&(bp)->blk_dva[1]) + \ (DVA_GET_ASIZE(&(bp)->blk_dva[2]) * !BP_IS_ENCRYPTED(bp))) #define BP_GET_UCSIZE(bp) \ (BP_IS_METADATA(bp) ? BP_GET_PSIZE(bp) : BP_GET_LSIZE(bp)) #define BP_GET_NDVAS(bp) \ (BP_IS_EMBEDDED(bp) ? 0 : \ !!DVA_GET_ASIZE(&(bp)->blk_dva[0]) + \ !!DVA_GET_ASIZE(&(bp)->blk_dva[1]) + \ (!!DVA_GET_ASIZE(&(bp)->blk_dva[2]) * !BP_IS_ENCRYPTED(bp))) #define BP_COUNT_GANG(bp) \ (BP_IS_EMBEDDED(bp) ? 0 : \ (DVA_GET_GANG(&(bp)->blk_dva[0]) + \ DVA_GET_GANG(&(bp)->blk_dva[1]) + \ (DVA_GET_GANG(&(bp)->blk_dva[2]) * !BP_IS_ENCRYPTED(bp)))) #define DVA_EQUAL(dva1, dva2) \ ((dva1)->dva_word[1] == (dva2)->dva_word[1] && \ (dva1)->dva_word[0] == (dva2)->dva_word[0]) #define BP_EQUAL(bp1, bp2) \ (BP_PHYSICAL_BIRTH(bp1) == BP_PHYSICAL_BIRTH(bp2) && \ (bp1)->blk_birth == (bp2)->blk_birth && \ DVA_EQUAL(&(bp1)->blk_dva[0], &(bp2)->blk_dva[0]) && \ DVA_EQUAL(&(bp1)->blk_dva[1], &(bp2)->blk_dva[1]) && \ DVA_EQUAL(&(bp1)->blk_dva[2], &(bp2)->blk_dva[2])) #define DVA_IS_VALID(dva) (DVA_GET_ASIZE(dva) != 0) #define BP_IDENTITY(bp) (ASSERT(!BP_IS_EMBEDDED(bp)), &(bp)->blk_dva[0]) #define BP_IS_GANG(bp) \ (BP_IS_EMBEDDED(bp) ? B_FALSE : DVA_GET_GANG(BP_IDENTITY(bp))) #define DVA_IS_EMPTY(dva) ((dva)->dva_word[0] == 0ULL && \ (dva)->dva_word[1] == 0ULL) #define BP_IS_HOLE(bp) \ (!BP_IS_EMBEDDED(bp) && DVA_IS_EMPTY(BP_IDENTITY(bp))) /* BP_IS_RAIDZ(bp) assumes no block compression */ #define BP_IS_RAIDZ(bp) (DVA_GET_ASIZE(&(bp)->blk_dva[0]) > \ BP_GET_PSIZE(bp)) #define BP_ZERO(bp) \ { \ (bp)->blk_dva[0].dva_word[0] = 0; \ (bp)->blk_dva[0].dva_word[1] = 0; \ (bp)->blk_dva[1].dva_word[0] = 0; \ (bp)->blk_dva[1].dva_word[1] = 0; \ (bp)->blk_dva[2].dva_word[0] = 0; \ (bp)->blk_dva[2].dva_word[1] = 0; \ (bp)->blk_prop = 0; \ (bp)->blk_pad[0] = 0; \ (bp)->blk_pad[1] = 0; \ (bp)->blk_phys_birth = 0; \ (bp)->blk_birth = 0; \ (bp)->blk_fill = 0; \ ZIO_SET_CHECKSUM(&(bp)->blk_cksum, 0, 0, 0, 0); \ } #ifdef _BIG_ENDIAN #define ZFS_HOST_BYTEORDER (0ULL) #else #define ZFS_HOST_BYTEORDER (1ULL) #endif #define BP_SHOULD_BYTESWAP(bp) (BP_GET_BYTEORDER(bp) != ZFS_HOST_BYTEORDER) #define BP_SPRINTF_LEN 400 /* * This macro allows code sharing between zfs, libzpool, and mdb. * 'func' is either snprintf() or mdb_snprintf(). * 'ws' (whitespace) can be ' ' for single-line format, '\n' for multi-line. */ #define SNPRINTF_BLKPTR(func, ws, buf, size, bp, type, checksum, compress) \ { \ static const char *copyname[] = \ { "zero", "single", "double", "triple" }; \ int len = 0; \ int copies = 0; \ const char *crypt_type; \ if (bp != NULL) { \ if (BP_IS_ENCRYPTED(bp)) { \ crypt_type = "encrypted"; \ /* LINTED E_SUSPICIOUS_COMPARISON */ \ } else if (BP_IS_AUTHENTICATED(bp)) { \ crypt_type = "authenticated"; \ } else if (BP_HAS_INDIRECT_MAC_CKSUM(bp)) { \ crypt_type = "indirect-MAC"; \ } else { \ crypt_type = "unencrypted"; \ } \ } \ if (bp == NULL) { \ len += func(buf + len, size - len, ""); \ } else if (BP_IS_HOLE(bp)) { \ len += func(buf + len, size - len, \ "HOLE [L%llu %s] " \ "size=%llxL birth=%lluL", \ (u_longlong_t)BP_GET_LEVEL(bp), \ type, \ (u_longlong_t)BP_GET_LSIZE(bp), \ (u_longlong_t)bp->blk_birth); \ } else if (BP_IS_EMBEDDED(bp)) { \ len = func(buf + len, size - len, \ "EMBEDDED [L%llu %s] et=%u %s " \ "size=%llxL/%llxP birth=%lluL", \ (u_longlong_t)BP_GET_LEVEL(bp), \ type, \ (int)BPE_GET_ETYPE(bp), \ compress, \ (u_longlong_t)BPE_GET_LSIZE(bp), \ (u_longlong_t)BPE_GET_PSIZE(bp), \ (u_longlong_t)bp->blk_birth); \ } else { \ for (int d = 0; d < BP_GET_NDVAS(bp); d++) { \ const dva_t *dva = &bp->blk_dva[d]; \ if (DVA_IS_VALID(dva)) \ copies++; \ len += func(buf + len, size - len, \ "DVA[%d]=<%llu:%llx:%llx>%c", d, \ (u_longlong_t)DVA_GET_VDEV(dva), \ (u_longlong_t)DVA_GET_OFFSET(dva), \ (u_longlong_t)DVA_GET_ASIZE(dva), \ ws); \ } \ if (BP_IS_ENCRYPTED(bp)) { \ len += func(buf + len, size - len, \ "salt=%llx iv=%llx:%llx%c", \ (u_longlong_t)bp->blk_dva[2].dva_word[0], \ (u_longlong_t)bp->blk_dva[2].dva_word[1], \ (u_longlong_t)BP_GET_IV2(bp), \ ws); \ } \ if (BP_IS_GANG(bp) && \ DVA_GET_ASIZE(&bp->blk_dva[2]) <= \ DVA_GET_ASIZE(&bp->blk_dva[1]) / 2) \ copies--; \ len += func(buf + len, size - len, \ "[L%llu %s] %s %s %s %s %s %s %s%c" \ "size=%llxL/%llxP birth=%lluL/%lluP fill=%llu%c" \ "cksum=%llx:%llx:%llx:%llx", \ (u_longlong_t)BP_GET_LEVEL(bp), \ type, \ checksum, \ compress, \ crypt_type, \ BP_GET_BYTEORDER(bp) == 0 ? "BE" : "LE", \ BP_IS_GANG(bp) ? "gang" : "contiguous", \ BP_GET_DEDUP(bp) ? "dedup" : "unique", \ copyname[copies], \ ws, \ (u_longlong_t)BP_GET_LSIZE(bp), \ (u_longlong_t)BP_GET_PSIZE(bp), \ (u_longlong_t)bp->blk_birth, \ (u_longlong_t)BP_PHYSICAL_BIRTH(bp), \ (u_longlong_t)BP_GET_FILL(bp), \ ws, \ (u_longlong_t)bp->blk_cksum.zc_word[0], \ (u_longlong_t)bp->blk_cksum.zc_word[1], \ (u_longlong_t)bp->blk_cksum.zc_word[2], \ (u_longlong_t)bp->blk_cksum.zc_word[3]); \ } \ ASSERT(len < size); \ } #define BP_GET_BUFC_TYPE(bp) \ (BP_IS_METADATA(bp) ? ARC_BUFC_METADATA : ARC_BUFC_DATA) typedef enum spa_import_type { SPA_IMPORT_EXISTING, SPA_IMPORT_ASSEMBLE } spa_import_type_t; /* * Send TRIM commands in-line during normal pool operation while deleting. * OFF: no * ON: yes */ typedef enum { SPA_AUTOTRIM_OFF = 0, /* default */ SPA_AUTOTRIM_ON } spa_autotrim_t; /* * Reason TRIM command was issued, used internally for accounting purposes. */ typedef enum trim_type { TRIM_TYPE_MANUAL = 0, TRIM_TYPE_AUTO = 1, } trim_type_t; /* state manipulation functions */ extern int spa_open(const char *pool, spa_t **, void *tag); extern int spa_open_rewind(const char *pool, spa_t **, void *tag, nvlist_t *policy, nvlist_t **config); extern int spa_get_stats(const char *pool, nvlist_t **config, char *altroot, size_t buflen); extern int spa_create(const char *pool, nvlist_t *nvroot, nvlist_t *props, nvlist_t *zplprops, struct dsl_crypto_params *dcp); extern int spa_import(char *pool, nvlist_t *config, nvlist_t *props, uint64_t flags); extern nvlist_t *spa_tryimport(nvlist_t *tryconfig); extern int spa_destroy(char *pool); extern int spa_checkpoint(const char *pool); extern int spa_checkpoint_discard(const char *pool); extern int spa_export(char *pool, nvlist_t **oldconfig, boolean_t force, boolean_t hardforce); extern int spa_reset(char *pool); extern void spa_async_request(spa_t *spa, int flag); extern void spa_async_unrequest(spa_t *spa, int flag); extern void spa_async_suspend(spa_t *spa); extern void spa_async_resume(spa_t *spa); extern int spa_async_tasks(spa_t *spa); extern spa_t *spa_inject_addref(char *pool); extern void spa_inject_delref(spa_t *spa); extern void spa_scan_stat_init(spa_t *spa); extern int spa_scan_get_stats(spa_t *spa, pool_scan_stat_t *ps); #define SPA_ASYNC_CONFIG_UPDATE 0x01 #define SPA_ASYNC_REMOVE 0x02 #define SPA_ASYNC_PROBE 0x04 #define SPA_ASYNC_RESILVER_DONE 0x08 #define SPA_ASYNC_RESILVER 0x10 #define SPA_ASYNC_AUTOEXPAND 0x20 #define SPA_ASYNC_REMOVE_DONE 0x40 #define SPA_ASYNC_REMOVE_STOP 0x80 #define SPA_ASYNC_INITIALIZE_RESTART 0x100 #define SPA_ASYNC_TRIM_RESTART 0x200 #define SPA_ASYNC_AUTOTRIM_RESTART 0x400 /* * Controls the behavior of spa_vdev_remove(). */ #define SPA_REMOVE_UNSPARE 0x01 #define SPA_REMOVE_DONE 0x02 /* device manipulation */ extern int spa_vdev_add(spa_t *spa, nvlist_t *nvroot); extern int spa_vdev_attach(spa_t *spa, uint64_t guid, nvlist_t *nvroot, int replacing); extern int spa_vdev_detach(spa_t *spa, uint64_t guid, uint64_t pguid, int replace_done); extern int spa_vdev_remove(spa_t *spa, uint64_t guid, boolean_t unspare); extern boolean_t spa_vdev_remove_active(spa_t *spa); extern int spa_vdev_initialize(spa_t *spa, nvlist_t *nv, uint64_t cmd_type, nvlist_t *vdev_errlist); extern int spa_vdev_trim(spa_t *spa, nvlist_t *nv, uint64_t cmd_type, uint64_t rate, boolean_t partial, boolean_t secure, nvlist_t *vdev_errlist); extern int spa_vdev_setpath(spa_t *spa, uint64_t guid, const char *newpath); extern int spa_vdev_setfru(spa_t *spa, uint64_t guid, const char *newfru); extern int spa_vdev_split_mirror(spa_t *spa, char *newname, nvlist_t *config, nvlist_t *props, boolean_t exp); /* spare state (which is global across all pools) */ extern void spa_spare_add(vdev_t *vd); extern void spa_spare_remove(vdev_t *vd); extern boolean_t spa_spare_exists(uint64_t guid, uint64_t *pool, int *refcnt); extern void spa_spare_activate(vdev_t *vd); /* L2ARC state (which is global across all pools) */ extern void spa_l2cache_add(vdev_t *vd); extern void spa_l2cache_remove(vdev_t *vd); extern boolean_t spa_l2cache_exists(uint64_t guid, uint64_t *pool); extern void spa_l2cache_activate(vdev_t *vd); extern void spa_l2cache_drop(spa_t *spa); /* scanning */ extern int spa_scan(spa_t *spa, pool_scan_func_t func); extern int spa_scan_stop(spa_t *spa); extern int spa_scrub_pause_resume(spa_t *spa, pool_scrub_cmd_t flag); /* spa syncing */ extern void spa_sync(spa_t *spa, uint64_t txg); /* only for DMU use */ extern void spa_sync_allpools(void); extern int zfs_sync_pass_deferred_free; /* spa namespace global mutex */ extern kmutex_t spa_namespace_lock; /* * SPA configuration functions in spa_config.c */ #define SPA_CONFIG_UPDATE_POOL 0 #define SPA_CONFIG_UPDATE_VDEVS 1 extern void spa_write_cachefile(spa_t *, boolean_t, boolean_t); extern void spa_config_load(void); extern nvlist_t *spa_all_configs(uint64_t *); extern void spa_config_set(spa_t *spa, nvlist_t *config); extern nvlist_t *spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t txg, int getstats); extern void spa_config_update(spa_t *spa, int what); /* * Miscellaneous SPA routines in spa_misc.c */ /* Namespace manipulation */ extern spa_t *spa_lookup(const char *name); extern spa_t *spa_add(const char *name, nvlist_t *config, const char *altroot); extern void spa_remove(spa_t *spa); extern spa_t *spa_next(spa_t *prev); /* Refcount functions */ extern void spa_open_ref(spa_t *spa, void *tag); extern void spa_close(spa_t *spa, void *tag); extern void spa_async_close(spa_t *spa, void *tag); extern boolean_t spa_refcount_zero(spa_t *spa); #define SCL_NONE 0x00 #define SCL_CONFIG 0x01 #define SCL_STATE 0x02 #define SCL_L2ARC 0x04 /* hack until L2ARC 2.0 */ #define SCL_ALLOC 0x08 #define SCL_ZIO 0x10 #define SCL_FREE 0x20 #define SCL_VDEV 0x40 #define SCL_LOCKS 7 #define SCL_ALL ((1 << SCL_LOCKS) - 1) #define SCL_STATE_ALL (SCL_STATE | SCL_L2ARC | SCL_ZIO) /* Historical pool statistics */ typedef struct spa_history_kstat { kmutex_t lock; uint64_t count; uint64_t size; kstat_t *kstat; void *private; list_t list; } spa_history_kstat_t; typedef struct spa_history_list { uint64_t size; procfs_list_t procfs_list; } spa_history_list_t; typedef struct spa_stats { spa_history_list_t read_history; spa_history_list_t txg_history; spa_history_kstat_t tx_assign_histogram; spa_history_kstat_t io_history; spa_history_list_t mmp_history; spa_history_kstat_t state; /* pool state */ spa_history_kstat_t iostats; } spa_stats_t; typedef enum txg_state { TXG_STATE_BIRTH = 0, TXG_STATE_OPEN = 1, TXG_STATE_QUIESCED = 2, TXG_STATE_WAIT_FOR_SYNC = 3, TXG_STATE_SYNCED = 4, TXG_STATE_COMMITTED = 5, } txg_state_t; typedef struct txg_stat { vdev_stat_t vs1; vdev_stat_t vs2; uint64_t txg; uint64_t ndirty; } txg_stat_t; /* Assorted pool IO kstats */ typedef struct spa_iostats { kstat_named_t trim_extents_written; kstat_named_t trim_bytes_written; kstat_named_t trim_extents_skipped; kstat_named_t trim_bytes_skipped; kstat_named_t trim_extents_failed; kstat_named_t trim_bytes_failed; kstat_named_t autotrim_extents_written; kstat_named_t autotrim_bytes_written; kstat_named_t autotrim_extents_skipped; kstat_named_t autotrim_bytes_skipped; kstat_named_t autotrim_extents_failed; kstat_named_t autotrim_bytes_failed; } spa_iostats_t; extern void spa_stats_init(spa_t *spa); extern void spa_stats_destroy(spa_t *spa); extern void spa_read_history_add(spa_t *spa, const zbookmark_phys_t *zb, uint32_t aflags); extern void spa_txg_history_add(spa_t *spa, uint64_t txg, hrtime_t birth_time); extern int spa_txg_history_set(spa_t *spa, uint64_t txg, txg_state_t completed_state, hrtime_t completed_time); extern txg_stat_t *spa_txg_history_init_io(spa_t *, uint64_t, struct dsl_pool *); extern void spa_txg_history_fini_io(spa_t *, txg_stat_t *); extern void spa_tx_assign_add_nsecs(spa_t *spa, uint64_t nsecs); extern int spa_mmp_history_set_skip(spa_t *spa, uint64_t mmp_kstat_id); extern int spa_mmp_history_set(spa_t *spa, uint64_t mmp_kstat_id, int io_error, hrtime_t duration); extern void spa_mmp_history_add(spa_t *spa, uint64_t txg, uint64_t timestamp, uint64_t mmp_delay, vdev_t *vd, int label, uint64_t mmp_kstat_id, int error); extern void spa_iostats_trim_add(spa_t *spa, trim_type_t type, uint64_t extents_written, uint64_t bytes_written, uint64_t extents_skipped, uint64_t bytes_skipped, uint64_t extents_failed, uint64_t bytes_failed); extern void spa_import_progress_add(spa_t *spa); extern void spa_import_progress_remove(uint64_t spa_guid); extern int spa_import_progress_set_mmp_check(uint64_t pool_guid, uint64_t mmp_sec_remaining); extern int spa_import_progress_set_max_txg(uint64_t pool_guid, uint64_t max_txg); extern int spa_import_progress_set_state(uint64_t pool_guid, spa_load_state_t spa_load_state); /* Pool configuration locks */ extern int spa_config_tryenter(spa_t *spa, int locks, void *tag, krw_t rw); extern void spa_config_enter(spa_t *spa, int locks, const void *tag, krw_t rw); extern void spa_config_exit(spa_t *spa, int locks, const void *tag); extern int spa_config_held(spa_t *spa, int locks, krw_t rw); /* Pool vdev add/remove lock */ extern uint64_t spa_vdev_enter(spa_t *spa); extern uint64_t spa_vdev_config_enter(spa_t *spa); extern void spa_vdev_config_exit(spa_t *spa, vdev_t *vd, uint64_t txg, int error, char *tag); extern int spa_vdev_exit(spa_t *spa, vdev_t *vd, uint64_t txg, int error); /* Pool vdev state change lock */ extern void spa_vdev_state_enter(spa_t *spa, int oplock); extern int spa_vdev_state_exit(spa_t *spa, vdev_t *vd, int error); /* Log state */ typedef enum spa_log_state { SPA_LOG_UNKNOWN = 0, /* unknown log state */ SPA_LOG_MISSING, /* missing log(s) */ SPA_LOG_CLEAR, /* clear the log(s) */ SPA_LOG_GOOD, /* log(s) are good */ } spa_log_state_t; extern spa_log_state_t spa_get_log_state(spa_t *spa); extern void spa_set_log_state(spa_t *spa, spa_log_state_t state); extern int spa_reset_logs(spa_t *spa); /* Log claim callback */ extern void spa_claim_notify(zio_t *zio); extern void spa_deadman(void *); /* Accessor functions */ extern boolean_t spa_shutting_down(spa_t *spa); extern struct dsl_pool *spa_get_dsl(spa_t *spa); extern boolean_t spa_is_initializing(spa_t *spa); extern boolean_t spa_indirect_vdevs_loaded(spa_t *spa); extern blkptr_t *spa_get_rootblkptr(spa_t *spa); extern void spa_set_rootblkptr(spa_t *spa, const blkptr_t *bp); extern void spa_altroot(spa_t *, char *, size_t); extern int spa_sync_pass(spa_t *spa); extern char *spa_name(spa_t *spa); extern uint64_t spa_guid(spa_t *spa); extern uint64_t spa_load_guid(spa_t *spa); extern uint64_t spa_last_synced_txg(spa_t *spa); extern uint64_t spa_first_txg(spa_t *spa); extern uint64_t spa_syncing_txg(spa_t *spa); extern uint64_t spa_final_dirty_txg(spa_t *spa); extern uint64_t spa_version(spa_t *spa); extern pool_state_t spa_state(spa_t *spa); extern spa_load_state_t spa_load_state(spa_t *spa); extern uint64_t spa_freeze_txg(spa_t *spa); extern uint64_t spa_get_worst_case_asize(spa_t *spa, uint64_t lsize); extern uint64_t spa_get_dspace(spa_t *spa); extern uint64_t spa_get_checkpoint_space(spa_t *spa); extern uint64_t spa_get_slop_space(spa_t *spa); extern void spa_update_dspace(spa_t *spa); extern uint64_t spa_version(spa_t *spa); extern boolean_t spa_deflate(spa_t *spa); extern metaslab_class_t *spa_normal_class(spa_t *spa); extern metaslab_class_t *spa_log_class(spa_t *spa); extern metaslab_class_t *spa_special_class(spa_t *spa); extern metaslab_class_t *spa_dedup_class(spa_t *spa); extern metaslab_class_t *spa_preferred_class(spa_t *spa, uint64_t size, dmu_object_type_t objtype, uint_t level, uint_t special_smallblk); extern void spa_evicting_os_register(spa_t *, objset_t *os); extern void spa_evicting_os_deregister(spa_t *, objset_t *os); extern void spa_evicting_os_wait(spa_t *spa); extern int spa_max_replication(spa_t *spa); extern int spa_prev_software_version(spa_t *spa); extern uint64_t spa_get_failmode(spa_t *spa); extern uint64_t spa_get_deadman_failmode(spa_t *spa); extern void spa_set_deadman_failmode(spa_t *spa, const char *failmode); extern boolean_t spa_suspended(spa_t *spa); extern uint64_t spa_bootfs(spa_t *spa); extern uint64_t spa_delegation(spa_t *spa); extern objset_t *spa_meta_objset(spa_t *spa); extern uint64_t spa_deadman_synctime(spa_t *spa); extern uint64_t spa_deadman_ziotime(spa_t *spa); extern uint64_t spa_dirty_data(spa_t *spa); extern spa_autotrim_t spa_get_autotrim(spa_t *spa); /* Miscellaneous support routines */ extern void spa_load_failed(spa_t *spa, const char *fmt, ...); extern void spa_load_note(spa_t *spa, const char *fmt, ...); extern void spa_activate_mos_feature(spa_t *spa, const char *feature, dmu_tx_t *tx); extern void spa_deactivate_mos_feature(spa_t *spa, const char *feature); extern spa_t *spa_by_guid(uint64_t pool_guid, uint64_t device_guid); extern boolean_t spa_guid_exists(uint64_t pool_guid, uint64_t device_guid); extern char *spa_strdup(const char *); extern void spa_strfree(char *); extern uint64_t spa_get_random(uint64_t range); extern uint64_t spa_generate_guid(spa_t *spa); extern void snprintf_blkptr(char *buf, size_t buflen, const blkptr_t *bp); extern void spa_freeze(spa_t *spa); extern int spa_change_guid(spa_t *spa); extern void spa_upgrade(spa_t *spa, uint64_t version); extern void spa_evict_all(void); extern vdev_t *spa_lookup_by_guid(spa_t *spa, uint64_t guid, boolean_t l2cache); extern boolean_t spa_has_spare(spa_t *, uint64_t guid); extern uint64_t dva_get_dsize_sync(spa_t *spa, const dva_t *dva); extern uint64_t bp_get_dsize_sync(spa_t *spa, const blkptr_t *bp); extern uint64_t bp_get_dsize(spa_t *spa, const blkptr_t *bp); extern boolean_t spa_has_slogs(spa_t *spa); extern boolean_t spa_is_root(spa_t *spa); extern boolean_t spa_writeable(spa_t *spa); extern boolean_t spa_has_pending_synctask(spa_t *spa); extern int spa_maxblocksize(spa_t *spa); extern int spa_maxdnodesize(spa_t *spa); extern boolean_t spa_has_checkpoint(spa_t *spa); extern boolean_t spa_importing_readonly_checkpoint(spa_t *spa); extern boolean_t spa_suspend_async_destroy(spa_t *spa); extern uint64_t spa_min_claim_txg(spa_t *spa); extern boolean_t zfs_dva_valid(spa_t *spa, const dva_t *dva, const blkptr_t *bp); typedef void (*spa_remap_cb_t)(uint64_t vdev, uint64_t offset, uint64_t size, void *arg); extern boolean_t spa_remap_blkptr(spa_t *spa, blkptr_t *bp, spa_remap_cb_t callback, void *arg); extern uint64_t spa_get_last_removal_txg(spa_t *spa); extern boolean_t spa_trust_config(spa_t *spa); extern uint64_t spa_missing_tvds_allowed(spa_t *spa); extern void spa_set_missing_tvds(spa_t *spa, uint64_t missing); extern boolean_t spa_top_vdevs_spacemap_addressable(spa_t *spa); extern boolean_t spa_multihost(spa_t *spa); extern uint32_t spa_get_hostid(spa_t *spa); extern void spa_activate_allocation_classes(spa_t *, dmu_tx_t *); extern int spa_mode(spa_t *spa); extern uint64_t zfs_strtonum(const char *str, char **nptr); extern char *spa_his_ievent_table[]; extern void spa_history_create_obj(spa_t *spa, dmu_tx_t *tx); extern int spa_history_get(spa_t *spa, uint64_t *offset, uint64_t *len_read, char *his_buf); extern int spa_history_log(spa_t *spa, const char *his_buf); extern int spa_history_log_nvl(spa_t *spa, nvlist_t *nvl); extern void spa_history_log_version(spa_t *spa, const char *operation, dmu_tx_t *tx); extern void spa_history_log_internal(spa_t *spa, const char *operation, dmu_tx_t *tx, const char *fmt, ...); extern void spa_history_log_internal_ds(struct dsl_dataset *ds, const char *op, dmu_tx_t *tx, const char *fmt, ...); extern void spa_history_log_internal_dd(dsl_dir_t *dd, const char *operation, dmu_tx_t *tx, const char *fmt, ...); extern const char *spa_state_to_name(spa_t *spa); /* error handling */ struct zbookmark_phys; extern void spa_log_error(spa_t *spa, const zbookmark_phys_t *zb); extern int zfs_ereport_post(const char *class, spa_t *spa, vdev_t *vd, const zbookmark_phys_t *zb, zio_t *zio, uint64_t stateoroffset, uint64_t length); extern boolean_t zfs_ereport_is_valid(const char *class, spa_t *spa, vdev_t *vd, zio_t *zio); extern nvlist_t *zfs_event_create(spa_t *spa, vdev_t *vd, const char *type, const char *name, nvlist_t *aux); extern void zfs_post_remove(spa_t *spa, vdev_t *vd); extern void zfs_post_state_change(spa_t *spa, vdev_t *vd, uint64_t laststate); extern void zfs_post_autoreplace(spa_t *spa, vdev_t *vd); extern uint64_t spa_get_errlog_size(spa_t *spa); extern int spa_get_errlog(spa_t *spa, void *uaddr, size_t *count); extern void spa_errlog_rotate(spa_t *spa); extern void spa_errlog_drain(spa_t *spa); extern void spa_errlog_sync(spa_t *spa, uint64_t txg); extern void spa_get_errlists(spa_t *spa, avl_tree_t *last, avl_tree_t *scrub); /* vdev cache */ extern void vdev_cache_stat_init(void); extern void vdev_cache_stat_fini(void); /* vdev mirror */ extern void vdev_mirror_stat_init(void); extern void vdev_mirror_stat_fini(void); /* Initialization and termination */ extern void spa_init(int flags); extern void spa_fini(void); extern void spa_boot_init(void); /* properties */ extern int spa_prop_set(spa_t *spa, nvlist_t *nvp); extern int spa_prop_get(spa_t *spa, nvlist_t **nvp); extern void spa_prop_clear_bootfs(spa_t *spa, uint64_t obj, dmu_tx_t *tx); extern void spa_configfile_set(spa_t *, nvlist_t *, boolean_t); /* asynchronous event notification */ extern void spa_event_notify(spa_t *spa, vdev_t *vdev, nvlist_t *hist_nvl, const char *name); #ifdef ZFS_DEBUG #define dprintf_bp(bp, fmt, ...) do { \ if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ char *__blkbuf = kmem_alloc(BP_SPRINTF_LEN, KM_SLEEP); \ snprintf_blkptr(__blkbuf, BP_SPRINTF_LEN, (bp)); \ dprintf(fmt " %s\n", __VA_ARGS__, __blkbuf); \ kmem_free(__blkbuf, BP_SPRINTF_LEN); \ } \ _NOTE(CONSTCOND) } while (0) #else #define dprintf_bp(bp, fmt, ...) #endif extern int spa_mode_global; /* mode, e.g. FREAD | FWRITE */ extern int zfs_deadman_enabled; extern unsigned long zfs_deadman_synctime_ms; extern unsigned long zfs_deadman_ziotime_ms; extern unsigned long zfs_deadman_checktime_ms; #ifdef __cplusplus } #endif #endif /* _SYS_SPA_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dmu_tx.h0000644000000000000000000000007413607166132017332 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.439424633 zfs-0.8.3/include/sys/dmu_tx.h0000644016037001603700000001066613607166132017340 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012, 2016 by Delphix. All rights reserved. */ #ifndef _SYS_DMU_TX_H #define _SYS_DMU_TX_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct dmu_buf_impl; struct dmu_tx_hold; struct dnode_link; struct dsl_pool; struct dnode; struct dsl_dir; struct dmu_tx { /* * No synchronization is needed because a tx can only be handled * by one thread. */ list_t tx_holds; /* list of dmu_tx_hold_t */ objset_t *tx_objset; struct dsl_dir *tx_dir; struct dsl_pool *tx_pool; uint64_t tx_txg; uint64_t tx_lastsnap_txg; uint64_t tx_lasttried_txg; txg_handle_t tx_txgh; void *tx_tempreserve_cookie; struct dmu_tx_hold *tx_needassign_txh; /* list of dmu_tx_callback_t on this dmu_tx */ list_t tx_callbacks; /* placeholder for syncing context, doesn't need specific holds */ boolean_t tx_anyobj; /* transaction is marked as being a "net free" of space */ boolean_t tx_netfree; /* time this transaction was created */ hrtime_t tx_start; /* need to wait for sufficient dirty space */ boolean_t tx_wait_dirty; /* has this transaction already been delayed? */ boolean_t tx_dirty_delayed; int tx_err; }; enum dmu_tx_hold_type { THT_NEWOBJECT, THT_WRITE, THT_BONUS, THT_FREE, THT_ZAP, THT_SPACE, THT_SPILL, THT_NUMTYPES }; typedef struct dmu_tx_hold { dmu_tx_t *txh_tx; list_node_t txh_node; struct dnode *txh_dnode; zfs_refcount_t txh_space_towrite; zfs_refcount_t txh_memory_tohold; enum dmu_tx_hold_type txh_type; uint64_t txh_arg1; uint64_t txh_arg2; } dmu_tx_hold_t; typedef struct dmu_tx_callback { list_node_t dcb_node; /* linked to tx_callbacks list */ dmu_tx_callback_func_t *dcb_func; /* caller function pointer */ void *dcb_data; /* caller private data */ } dmu_tx_callback_t; /* * Used for dmu tx kstat. */ typedef struct dmu_tx_stats { kstat_named_t dmu_tx_assigned; kstat_named_t dmu_tx_delay; kstat_named_t dmu_tx_error; kstat_named_t dmu_tx_suspended; kstat_named_t dmu_tx_group; kstat_named_t dmu_tx_memory_reserve; kstat_named_t dmu_tx_memory_reclaim; kstat_named_t dmu_tx_dirty_throttle; kstat_named_t dmu_tx_dirty_delay; kstat_named_t dmu_tx_dirty_over_max; kstat_named_t dmu_tx_dirty_frees_delay; kstat_named_t dmu_tx_quota; } dmu_tx_stats_t; extern dmu_tx_stats_t dmu_tx_stats; #define DMU_TX_STAT_INCR(stat, val) \ atomic_add_64(&dmu_tx_stats.stat.value.ui64, (val)); #define DMU_TX_STAT_BUMP(stat) \ DMU_TX_STAT_INCR(stat, 1); /* * These routines are defined in dmu.h, and are called by the user. */ dmu_tx_t *dmu_tx_create(objset_t *dd); int dmu_tx_assign(dmu_tx_t *tx, uint64_t txg_how); void dmu_tx_commit(dmu_tx_t *tx); void dmu_tx_abort(dmu_tx_t *tx); uint64_t dmu_tx_get_txg(dmu_tx_t *tx); struct dsl_pool *dmu_tx_pool(dmu_tx_t *tx); void dmu_tx_wait(dmu_tx_t *tx); /* * These routines are defined in dmu_spa.h, and are called by the SPA. */ extern dmu_tx_t *dmu_tx_create_assigned(struct dsl_pool *dp, uint64_t txg); /* * These routines are only called by the DMU. */ dmu_tx_t *dmu_tx_create_dd(dsl_dir_t *dd); int dmu_tx_is_syncing(dmu_tx_t *tx); int dmu_tx_private_ok(dmu_tx_t *tx); void dmu_tx_add_new_object(dmu_tx_t *tx, dnode_t *dn); void dmu_tx_dirty_buf(dmu_tx_t *tx, struct dmu_buf_impl *db); void dmu_tx_hold_space(dmu_tx_t *tx, uint64_t space); #ifdef ZFS_DEBUG #define DMU_TX_DIRTY_BUF(tx, db) dmu_tx_dirty_buf(tx, db) #else #define DMU_TX_DIRTY_BUF(tx, db) #endif void dmu_tx_init(void); void dmu_tx_fini(void); #ifdef __cplusplus } #endif #endif /* _SYS_DMU_TX_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_deleg.h0000644000000000000000000000007413607166147017762 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.453425081 zfs-0.8.3/include/sys/dsl_deleg.h0000644016037001603700000000647113607166147017767 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013, 2015 by Delphix. All rights reserved. */ #ifndef _SYS_DSL_DELEG_H #define _SYS_DSL_DELEG_H #include #include #include #ifdef __cplusplus extern "C" { #endif #define ZFS_DELEG_PERM_NONE "" #define ZFS_DELEG_PERM_CREATE "create" #define ZFS_DELEG_PERM_DESTROY "destroy" #define ZFS_DELEG_PERM_SNAPSHOT "snapshot" #define ZFS_DELEG_PERM_ROLLBACK "rollback" #define ZFS_DELEG_PERM_CLONE "clone" #define ZFS_DELEG_PERM_PROMOTE "promote" #define ZFS_DELEG_PERM_RENAME "rename" #define ZFS_DELEG_PERM_MOUNT "mount" #define ZFS_DELEG_PERM_SHARE "share" #define ZFS_DELEG_PERM_SEND "send" #define ZFS_DELEG_PERM_RECEIVE "receive" #define ZFS_DELEG_PERM_ALLOW "allow" #define ZFS_DELEG_PERM_USERPROP "userprop" #define ZFS_DELEG_PERM_VSCAN "vscan" #define ZFS_DELEG_PERM_USERQUOTA "userquota" #define ZFS_DELEG_PERM_GROUPQUOTA "groupquota" #define ZFS_DELEG_PERM_USEROBJQUOTA "userobjquota" #define ZFS_DELEG_PERM_GROUPOBJQUOTA "groupobjquota" #define ZFS_DELEG_PERM_USERUSED "userused" #define ZFS_DELEG_PERM_GROUPUSED "groupused" #define ZFS_DELEG_PERM_USEROBJUSED "userobjused" #define ZFS_DELEG_PERM_GROUPOBJUSED "groupobjused" #define ZFS_DELEG_PERM_HOLD "hold" #define ZFS_DELEG_PERM_RELEASE "release" #define ZFS_DELEG_PERM_DIFF "diff" #define ZFS_DELEG_PERM_BOOKMARK "bookmark" #define ZFS_DELEG_PERM_REMAP "remap" #define ZFS_DELEG_PERM_LOAD_KEY "load-key" #define ZFS_DELEG_PERM_CHANGE_KEY "change-key" #define ZFS_DELEG_PERM_PROJECTUSED "projectused" #define ZFS_DELEG_PERM_PROJECTQUOTA "projectquota" #define ZFS_DELEG_PERM_PROJECTOBJUSED "projectobjused" #define ZFS_DELEG_PERM_PROJECTOBJQUOTA "projectobjquota" /* * Note: the names of properties that are marked delegatable are also * valid delegated permissions */ int dsl_deleg_get(const char *ddname, nvlist_t **nvp); int dsl_deleg_set(const char *ddname, nvlist_t *nvp, boolean_t unset); int dsl_deleg_access(const char *ddname, const char *perm, cred_t *cr); int dsl_deleg_access_impl(struct dsl_dataset *ds, const char *perm, cred_t *cr); void dsl_deleg_set_create_perms(dsl_dir_t *dd, dmu_tx_t *tx, cred_t *cr); int dsl_deleg_can_allow(char *ddname, nvlist_t *nvp, cred_t *cr); int dsl_deleg_can_unallow(char *ddname, nvlist_t *nvp, cred_t *cr); int dsl_deleg_destroy(objset_t *os, uint64_t zapobj, dmu_tx_t *tx); boolean_t dsl_delegation_on(objset_t *os); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_DELEG_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_removal.h0000644000000000000000000000007413607166132020523 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.614430251 zfs-0.8.3/include/sys/vdev_removal.h0000644016037001603700000000520713607166132020524 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2014, 2019 by Delphix. All rights reserved. */ #ifndef _SYS_VDEV_REMOVAL_H #define _SYS_VDEV_REMOVAL_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct spa_vdev_removal { uint64_t svr_vdev_id; uint64_t svr_max_offset_to_sync[TXG_SIZE]; /* Thread performing a vdev removal. */ kthread_t *svr_thread; /* Segments left to copy from the current metaslab. */ range_tree_t *svr_allocd_segs; kmutex_t svr_lock; kcondvar_t svr_cv; boolean_t svr_thread_exit; /* * New mappings to write out each txg. */ list_t svr_new_segments[TXG_SIZE]; /* * Ranges that were freed while a mapping was in flight. This is * a subset of the ranges covered by vdev_im_new_segments. */ range_tree_t *svr_frees[TXG_SIZE]; /* * Number of bytes which we have finished our work for * in each txg. This could be data copied (which will be part of * the mappings in vdev_im_new_segments), or data freed before * we got around to copying it. */ uint64_t svr_bytes_done[TXG_SIZE]; /* List of leaf zap objects to be unlinked */ nvlist_t *svr_zaplist; } spa_vdev_removal_t; typedef struct spa_condensing_indirect { /* * New mappings to write out each txg. */ list_t sci_new_mapping_entries[TXG_SIZE]; vdev_indirect_mapping_t *sci_new_mapping; } spa_condensing_indirect_t; extern int spa_remove_init(spa_t *); extern void spa_restart_removal(spa_t *); extern int spa_condense_init(spa_t *); extern void spa_condense_fini(spa_t *); extern void spa_start_indirect_condensing_thread(spa_t *); extern void spa_vdev_condense_suspend(spa_t *); extern int spa_vdev_remove(spa_t *, uint64_t, boolean_t); extern void free_from_removing_vdev(vdev_t *, uint64_t, uint64_t); extern int spa_removal_get_stats(spa_t *, pool_removal_stat_t *); extern void svr_sync(spa_t *, dmu_tx_t *); extern void spa_vdev_remove_suspend(spa_t *); extern int spa_vdev_remove_cancel(spa_t *); extern void spa_vdev_removal_destroy(spa_vdev_removal_t *); extern uint64_t spa_remove_max_segment(spa_t *); extern int vdev_removal_max_span; #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_REMOVAL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/pathname.h0000644000000000000000000000007413607166132017627 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.500426591 zfs-0.8.3/include/sys/pathname.h0000644016037001603700000000436113607166132017630 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. */ /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ /* * Portions of this source code were derived from Berkeley 4.3 BSD * under license from the Regents of the University of California. */ #ifndef _SYS_PATHNAME_H #define _SYS_PATHNAME_H #ifdef __cplusplus extern "C" { #endif /* * Pathname structure. * System calls that operate on path names gather the path name * from the system call into this structure and reduce it by * peeling off translated components. If a symbolic link is * encountered the new path name to be translated is also * assembled in this structure. * * By convention pn_buf is not changed once it's been set to point * to the underlying storage; routines which manipulate the pathname * do so by changing pn_path and pn_pathlen. pn_pathlen is redundant * since the path name is null-terminated, but is provided to make * some computations faster. */ typedef struct pathname { char *pn_buf; /* underlying storage */ #if 0 /* unused in ZoL */ char *pn_path; /* remaining pathname */ size_t pn_pathlen; /* remaining length */ #endif size_t pn_bufsize; /* total size of pn_buf */ } pathname_t; extern void pn_alloc(struct pathname *); extern void pn_alloc_sz(struct pathname *, size_t); extern void pn_free(struct pathname *); #ifdef __cplusplus } #endif #endif /* _SYS_PATHNAME_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_project.h0000644000000000000000000000007413607166147020370 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.654431537 zfs-0.8.3/include/sys/zfs_project.h0000644016037001603700000000454713607166147020377 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2017, Intel Corporation. All rights reserved. */ #ifndef _SYS_ZFS_PROJECT_H #define _SYS_ZFS_PROJECT_H #ifndef _KERNEL #ifndef _SYS_MOUNT_H /* XXX: some hack to avoid include sys/mount.h */ #define _SYS_MOUNT_H #endif #endif #include #ifdef FS_PROJINHERIT_FL #define ZFS_PROJINHERIT_FL FS_PROJINHERIT_FL #else #define ZFS_PROJINHERIT_FL 0x20000000 #endif #ifdef FS_IOC_FSGETXATTR typedef struct fsxattr zfsxattr_t; #define ZFS_IOC_FSGETXATTR FS_IOC_FSGETXATTR #define ZFS_IOC_FSSETXATTR FS_IOC_FSSETXATTR #else struct zfsxattr { uint32_t fsx_xflags; /* xflags field value (get/set) */ uint32_t fsx_extsize; /* extsize field value (get/set) */ uint32_t fsx_nextents; /* nextents field value (get) */ uint32_t fsx_projid; /* project identifier (get/set) */ uint32_t fsx_cowextsize; unsigned char fsx_pad[8]; }; typedef struct zfsxattr zfsxattr_t; #define ZFS_IOC_FSGETXATTR _IOR('X', 31, zfsxattr_t) #define ZFS_IOC_FSSETXATTR _IOW('X', 32, zfsxattr_t) #endif #define ZFS_DEFAULT_PROJID (0ULL) /* * It is NOT ondisk project ID value. Just means either the object has * no project ID or the operation does not touch project ID attribute. */ #define ZFS_INVALID_PROJID (-1ULL) static inline boolean_t zpl_is_valid_projid(uint32_t projid) { /* * zfsxattr::fsx_projid is 32-bits, when convert to uint64_t, * the higher 32-bits will be set as zero, so cannot directly * compare with ZFS_INVALID_PROJID (-1ULL) */ if ((uint32_t)ZFS_INVALID_PROJID == projid) return (B_FALSE); return (B_TRUE); } #endif /* _SYS_ZFS_PROJECT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_delay.h0000644000000000000000000000007313607166132020011 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.64743131 zfs-0.8.3/include/sys/zfs_delay.h0000644016037001603700000000237313607166132020014 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #ifndef _SYS_FS_ZFS_DELAY_H #define _SYS_FS_ZFS_DELAY_H #include /* * Generic wrapper to sleep until a given time. */ #define zfs_sleep_until(wakeup) \ do { \ hrtime_t delta = wakeup - gethrtime(); \ \ if (delta > 0) { \ unsigned long delta_us; \ delta_us = delta / (NANOSEC / MICROSEC); \ usleep_range(delta_us, delta_us + 100); \ } \ } while (0) #endif /* _SYS_FS_ZFS_DELAY_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/arc.h0000644000000000000000000000007413612141513016567 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.394423187 zfs-0.8.3/include/sys/arc.h0000644016037001603700000002475013612141513016574 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2016 by Delphix. All rights reserved. * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. */ #ifndef _SYS_ARC_H #define _SYS_ARC_H #include #ifdef __cplusplus extern "C" { #endif #include #include #include #include /* * Used by arc_flush() to inform arc_evict_state() that it should evict * all available buffers from the arc state being passed in. */ #define ARC_EVICT_ALL -1ULL #define HDR_SET_LSIZE(hdr, x) do { \ ASSERT(IS_P2ALIGNED(x, 1U << SPA_MINBLOCKSHIFT)); \ (hdr)->b_lsize = ((x) >> SPA_MINBLOCKSHIFT); \ _NOTE(CONSTCOND) } while (0) #define HDR_SET_PSIZE(hdr, x) do { \ ASSERT(IS_P2ALIGNED((x), 1U << SPA_MINBLOCKSHIFT)); \ (hdr)->b_psize = ((x) >> SPA_MINBLOCKSHIFT); \ _NOTE(CONSTCOND) } while (0) #define HDR_GET_LSIZE(hdr) ((hdr)->b_lsize << SPA_MINBLOCKSHIFT) #define HDR_GET_PSIZE(hdr) ((hdr)->b_psize << SPA_MINBLOCKSHIFT) typedef struct arc_buf_hdr arc_buf_hdr_t; typedef struct arc_buf arc_buf_t; typedef struct arc_prune arc_prune_t; /* * Because the ARC can store encrypted data, errors (not due to bugs) may arise * while transforming data into its desired format - specifically, when * decrypting, the key may not be present, or the HMAC may not be correct * which signifies deliberate tampering with the on-disk state * (assuming that the checksum was correct). If any error occurs, the "buf" * parameter will be NULL. */ typedef void arc_read_done_func_t(zio_t *zio, const zbookmark_phys_t *zb, const blkptr_t *bp, arc_buf_t *buf, void *private); typedef void arc_write_done_func_t(zio_t *zio, arc_buf_t *buf, void *private); typedef void arc_prune_func_t(int64_t bytes, void *private); /* Shared module parameters */ extern int zfs_arc_average_blocksize; /* generic arc_done_func_t's which you can use */ arc_read_done_func_t arc_bcopy_func; arc_read_done_func_t arc_getbuf_func; /* generic arc_prune_func_t wrapper for callbacks */ struct arc_prune { arc_prune_func_t *p_pfunc; void *p_private; uint64_t p_adjust; list_node_t p_node; zfs_refcount_t p_refcnt; }; typedef enum arc_strategy { ARC_STRATEGY_META_ONLY = 0, /* Evict only meta data buffers */ ARC_STRATEGY_META_BALANCED = 1, /* Evict data buffers if needed */ } arc_strategy_t; typedef enum arc_flags { /* * Public flags that can be passed into the ARC by external consumers. */ ARC_FLAG_WAIT = 1 << 0, /* perform sync I/O */ ARC_FLAG_NOWAIT = 1 << 1, /* perform async I/O */ ARC_FLAG_PREFETCH = 1 << 2, /* I/O is a prefetch */ ARC_FLAG_CACHED = 1 << 3, /* I/O was in cache */ ARC_FLAG_L2CACHE = 1 << 4, /* cache in L2ARC */ ARC_FLAG_PREDICTIVE_PREFETCH = 1 << 5, /* I/O from zfetch */ ARC_FLAG_PRESCIENT_PREFETCH = 1 << 6, /* long min lifespan */ /* * Private ARC flags. These flags are private ARC only flags that * will show up in b_flags in the arc_hdr_buf_t. These flags should * only be set by ARC code. */ ARC_FLAG_IN_HASH_TABLE = 1 << 7, /* buffer is hashed */ ARC_FLAG_IO_IN_PROGRESS = 1 << 8, /* I/O in progress */ ARC_FLAG_IO_ERROR = 1 << 9, /* I/O failed for buf */ ARC_FLAG_INDIRECT = 1 << 10, /* indirect block */ /* Indicates that block was read with ASYNC priority. */ ARC_FLAG_PRIO_ASYNC_READ = 1 << 11, ARC_FLAG_L2_WRITING = 1 << 12, /* write in progress */ ARC_FLAG_L2_EVICTED = 1 << 13, /* evicted during I/O */ ARC_FLAG_L2_WRITE_HEAD = 1 << 14, /* head of write list */ /* * Encrypted or authenticated on disk (may be plaintext in memory). * This header has b_crypt_hdr allocated. Does not include indirect * blocks with checksums of MACs which will also have their X * (encrypted) bit set in the bp. */ ARC_FLAG_PROTECTED = 1 << 15, /* data has not been authenticated yet */ ARC_FLAG_NOAUTH = 1 << 16, /* indicates that the buffer contains metadata (otherwise, data) */ ARC_FLAG_BUFC_METADATA = 1 << 17, /* Flags specifying whether optional hdr struct fields are defined */ ARC_FLAG_HAS_L1HDR = 1 << 18, ARC_FLAG_HAS_L2HDR = 1 << 19, /* * Indicates the arc_buf_hdr_t's b_pdata matches the on-disk data. * This allows the l2arc to use the blkptr's checksum to verify * the data without having to store the checksum in the hdr. */ ARC_FLAG_COMPRESSED_ARC = 1 << 20, ARC_FLAG_SHARED_DATA = 1 << 21, /* * The arc buffer's compression mode is stored in the top 7 bits of the * flags field, so these dummy flags are included so that MDB can * interpret the enum properly. */ ARC_FLAG_COMPRESS_0 = 1 << 24, ARC_FLAG_COMPRESS_1 = 1 << 25, ARC_FLAG_COMPRESS_2 = 1 << 26, ARC_FLAG_COMPRESS_3 = 1 << 27, ARC_FLAG_COMPRESS_4 = 1 << 28, ARC_FLAG_COMPRESS_5 = 1 << 29, ARC_FLAG_COMPRESS_6 = 1 << 30 } arc_flags_t; typedef enum arc_buf_flags { ARC_BUF_FLAG_SHARED = 1 << 0, ARC_BUF_FLAG_COMPRESSED = 1 << 1, /* * indicates whether this arc_buf_t is encrypted, regardless of * state on-disk */ ARC_BUF_FLAG_ENCRYPTED = 1 << 2 } arc_buf_flags_t; struct arc_buf { arc_buf_hdr_t *b_hdr; arc_buf_t *b_next; kmutex_t b_evict_lock; void *b_data; arc_buf_flags_t b_flags; }; typedef enum arc_buf_contents { ARC_BUFC_INVALID, /* invalid type */ ARC_BUFC_DATA, /* buffer contains data */ ARC_BUFC_METADATA, /* buffer contains metadata */ ARC_BUFC_NUMTYPES } arc_buf_contents_t; /* * The following breakdowns of arc_size exist for kstat only. */ typedef enum arc_space_type { ARC_SPACE_DATA, ARC_SPACE_META, ARC_SPACE_HDRS, ARC_SPACE_L2HDRS, ARC_SPACE_DBUF, ARC_SPACE_DNODE, ARC_SPACE_BONUS, ARC_SPACE_NUMTYPES } arc_space_type_t; typedef enum arc_state_type { ARC_STATE_ANON, ARC_STATE_MRU, ARC_STATE_MRU_GHOST, ARC_STATE_MFU, ARC_STATE_MFU_GHOST, ARC_STATE_L2C_ONLY, ARC_STATE_NUMTYPES } arc_state_type_t; typedef struct arc_buf_info { arc_state_type_t abi_state_type; arc_buf_contents_t abi_state_contents; uint32_t abi_flags; uint32_t abi_bufcnt; uint64_t abi_size; uint64_t abi_spa; uint64_t abi_access; uint32_t abi_mru_hits; uint32_t abi_mru_ghost_hits; uint32_t abi_mfu_hits; uint32_t abi_mfu_ghost_hits; uint32_t abi_l2arc_hits; uint32_t abi_holds; uint64_t abi_l2arc_dattr; uint64_t abi_l2arc_asize; enum zio_compress abi_l2arc_compress; } arc_buf_info_t; void arc_space_consume(uint64_t space, arc_space_type_t type); void arc_space_return(uint64_t space, arc_space_type_t type); boolean_t arc_is_metadata(arc_buf_t *buf); boolean_t arc_is_encrypted(arc_buf_t *buf); boolean_t arc_is_unauthenticated(arc_buf_t *buf); enum zio_compress arc_get_compression(arc_buf_t *buf); void arc_get_raw_params(arc_buf_t *buf, boolean_t *byteorder, uint8_t *salt, uint8_t *iv, uint8_t *mac); int arc_untransform(arc_buf_t *buf, spa_t *spa, const zbookmark_phys_t *zb, boolean_t in_place); void arc_convert_to_raw(arc_buf_t *buf, uint64_t dsobj, boolean_t byteorder, dmu_object_type_t ot, const uint8_t *salt, const uint8_t *iv, const uint8_t *mac); arc_buf_t *arc_alloc_buf(spa_t *spa, void *tag, arc_buf_contents_t type, int32_t size); arc_buf_t *arc_alloc_compressed_buf(spa_t *spa, void *tag, uint64_t psize, uint64_t lsize, enum zio_compress compression_type); arc_buf_t *arc_alloc_raw_buf(spa_t *spa, void *tag, uint64_t dsobj, boolean_t byteorder, const uint8_t *salt, const uint8_t *iv, const uint8_t *mac, dmu_object_type_t ot, uint64_t psize, uint64_t lsize, enum zio_compress compression_type); arc_buf_t *arc_loan_buf(spa_t *spa, boolean_t is_metadata, int size); arc_buf_t *arc_loan_compressed_buf(spa_t *spa, uint64_t psize, uint64_t lsize, enum zio_compress compression_type); arc_buf_t *arc_loan_raw_buf(spa_t *spa, uint64_t dsobj, boolean_t byteorder, const uint8_t *salt, const uint8_t *iv, const uint8_t *mac, dmu_object_type_t ot, uint64_t psize, uint64_t lsize, enum zio_compress compression_type); void arc_return_buf(arc_buf_t *buf, void *tag); void arc_loan_inuse_buf(arc_buf_t *buf, void *tag); void arc_buf_destroy(arc_buf_t *buf, void *tag); void arc_buf_info(arc_buf_t *buf, arc_buf_info_t *abi, int state_index); uint64_t arc_buf_size(arc_buf_t *buf); uint64_t arc_buf_lsize(arc_buf_t *buf); void arc_buf_access(arc_buf_t *buf); void arc_release(arc_buf_t *buf, void *tag); int arc_released(arc_buf_t *buf); void arc_buf_sigsegv(int sig, siginfo_t *si, void *unused); void arc_buf_freeze(arc_buf_t *buf); void arc_buf_thaw(arc_buf_t *buf); #ifdef ZFS_DEBUG int arc_referenced(arc_buf_t *buf); #endif int arc_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, arc_read_done_func_t *done, void *private, zio_priority_t priority, int flags, arc_flags_t *arc_flags, const zbookmark_phys_t *zb); zio_t *arc_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, arc_buf_t *buf, boolean_t l2arc, const zio_prop_t *zp, arc_write_done_func_t *ready, arc_write_done_func_t *child_ready, arc_write_done_func_t *physdone, arc_write_done_func_t *done, void *private, zio_priority_t priority, int zio_flags, const zbookmark_phys_t *zb); arc_prune_t *arc_add_prune_callback(arc_prune_func_t *func, void *private); void arc_remove_prune_callback(arc_prune_t *p); void arc_freed(spa_t *spa, const blkptr_t *bp); void arc_flush(spa_t *spa, boolean_t retry); void arc_tempreserve_clear(uint64_t reserve); int arc_tempreserve_space(spa_t *spa, uint64_t reserve, uint64_t txg); uint64_t arc_target_bytes(void); void arc_init(void); void arc_fini(void); /* * Level 2 ARC */ void l2arc_add_vdev(spa_t *spa, vdev_t *vd); void l2arc_remove_vdev(vdev_t *vd); boolean_t l2arc_vdev_present(vdev_t *vd); void l2arc_init(void); void l2arc_fini(void); void l2arc_start(void); void l2arc_stop(void); #ifndef _KERNEL extern boolean_t arc_watch; #endif #ifdef __cplusplus } #endif #endif /* _SYS_ARC_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_deadlist.h0000644000000000000000000000007413607166147020473 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.450424985 zfs-0.8.3/include/sys/dsl_deadlist.h0000644016037001603700000000545713607166147020503 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2015 by Delphix. All rights reserved. */ #ifndef _SYS_DSL_DEADLIST_H #define _SYS_DSL_DEADLIST_H #include #include #ifdef __cplusplus extern "C" { #endif struct dmu_buf; struct dsl_dataset; typedef struct dsl_deadlist_phys { uint64_t dl_used; uint64_t dl_comp; uint64_t dl_uncomp; uint64_t dl_pad[37]; /* pad out to 320b for future expansion */ } dsl_deadlist_phys_t; typedef struct dsl_deadlist { objset_t *dl_os; uint64_t dl_object; avl_tree_t dl_tree; boolean_t dl_havetree; struct dmu_buf *dl_dbuf; dsl_deadlist_phys_t *dl_phys; kmutex_t dl_lock; /* if it's the old on-disk format: */ bpobj_t dl_bpobj; boolean_t dl_oldfmt; } dsl_deadlist_t; typedef struct dsl_deadlist_entry { avl_node_t dle_node; uint64_t dle_mintxg; bpobj_t dle_bpobj; } dsl_deadlist_entry_t; void dsl_deadlist_open(dsl_deadlist_t *dl, objset_t *os, uint64_t object); void dsl_deadlist_close(dsl_deadlist_t *dl); uint64_t dsl_deadlist_alloc(objset_t *os, dmu_tx_t *tx); void dsl_deadlist_free(objset_t *os, uint64_t dlobj, dmu_tx_t *tx); void dsl_deadlist_insert(dsl_deadlist_t *dl, const blkptr_t *bp, dmu_tx_t *tx); void dsl_deadlist_add_key(dsl_deadlist_t *dl, uint64_t mintxg, dmu_tx_t *tx); void dsl_deadlist_remove_key(dsl_deadlist_t *dl, uint64_t mintxg, dmu_tx_t *tx); uint64_t dsl_deadlist_clone(dsl_deadlist_t *dl, uint64_t maxtxg, uint64_t mrs_obj, dmu_tx_t *tx); void dsl_deadlist_space(dsl_deadlist_t *dl, uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); void dsl_deadlist_space_range(dsl_deadlist_t *dl, uint64_t mintxg, uint64_t maxtxg, uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); void dsl_deadlist_merge(dsl_deadlist_t *dl, uint64_t obj, dmu_tx_t *tx); void dsl_deadlist_move_bpobj(dsl_deadlist_t *dl, bpobj_t *bpo, uint64_t mintxg, dmu_tx_t *tx); boolean_t dsl_deadlist_is_open(dsl_deadlist_t *dl); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_DEADLIST_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_ratelimit.h0000644000000000000000000000007413607166132020706 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.656431601 zfs-0.8.3/include/sys/zfs_ratelimit.h0000644016037001603700000000216313607166132020705 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2016, Lawrence Livermore National Security, LLC. */ #ifndef _SYS_ZFS_RATELIMIT_H #define _SYS_ZFS_RATELIMIT_H #include typedef struct { hrtime_t start; unsigned int count; /* * Pointer to number of events per interval. We do this to * allow the burst to be a (changeable) module parameter. */ unsigned int *burst; unsigned int interval; /* Interval length in seconds */ kmutex_t lock; } zfs_ratelimit_t; int zfs_ratelimit(zfs_ratelimit_t *rl); void zfs_ratelimit_init(zfs_ratelimit_t *rl, unsigned int *burst, unsigned int interval); void zfs_ratelimit_fini(zfs_ratelimit_t *rl); #endif /* _SYS_ZFS_RATELIMIT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zrlock.h0000644000000000000000000000007413607166132017336 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.692432755 zfs-0.8.3/include/sys/zrlock.h0000644016037001603700000000331413607166132017334 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2015 by Delphix. All rights reserved. */ #ifndef _SYS_ZRLOCK_H #define _SYS_ZRLOCK_H #include #ifdef __cplusplus extern "C" { #endif typedef struct zrlock { kmutex_t zr_mtx; volatile int32_t zr_refcount; kcondvar_t zr_cv; uint16_t zr_pad; #ifdef ZFS_DEBUG kthread_t *zr_owner; const char *zr_caller; #endif } zrlock_t; extern void zrl_init(zrlock_t *); extern void zrl_destroy(zrlock_t *); #define zrl_add(_z) zrl_add_impl((_z), __func__) extern void zrl_add_impl(zrlock_t *, const char *); extern void zrl_remove(zrlock_t *); extern int zrl_tryenter(zrlock_t *); extern void zrl_exit(zrlock_t *); extern int zrl_is_zero(zrlock_t *); extern int zrl_is_locked(zrlock_t *); #ifdef ZFS_DEBUG extern kthread_t *zrl_owner(zrlock_t *); #endif #ifdef __cplusplus } #endif #endif /* _SYS_ZRLOCK_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/abd.h0000644000000000000000000000007413612141510016545 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.389423027 zfs-0.8.3/include/sys/abd.h0000644016037001603700000001166213612141510016550 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2014 by Chunwei Chen. All rights reserved. * Copyright (c) 2016, 2019 by Delphix. All rights reserved. */ #ifndef _ABD_H #define _ABD_H #include #include #include #ifdef _KERNEL #include #include #include #endif #ifdef __cplusplus extern "C" { #endif typedef enum abd_flags { ABD_FLAG_LINEAR = 1 << 0, /* is buffer linear (or scattered)? */ ABD_FLAG_OWNER = 1 << 1, /* does it own its data buffers? */ ABD_FLAG_META = 1 << 2, /* does this represent FS metadata? */ ABD_FLAG_MULTI_ZONE = 1 << 3, /* pages split over memory zones */ ABD_FLAG_MULTI_CHUNK = 1 << 4, /* pages split over multiple chunks */ ABD_FLAG_LINEAR_PAGE = 1 << 5, /* linear but allocd from page */ } abd_flags_t; typedef struct abd { abd_flags_t abd_flags; uint_t abd_size; /* excludes scattered abd_offset */ struct abd *abd_parent; zfs_refcount_t abd_children; union { struct abd_scatter { uint_t abd_offset; uint_t abd_nents; struct scatterlist *abd_sgl; } abd_scatter; struct abd_linear { void *abd_buf; struct scatterlist *abd_sgl; /* for LINEAR_PAGE */ } abd_linear; } abd_u; } abd_t; typedef int abd_iter_func_t(void *buf, size_t len, void *private); typedef int abd_iter_func2_t(void *bufa, void *bufb, size_t len, void *private); extern int zfs_abd_scatter_enabled; static inline boolean_t abd_is_linear(abd_t *abd) { return ((abd->abd_flags & ABD_FLAG_LINEAR) != 0 ? B_TRUE : B_FALSE); } static inline boolean_t abd_is_linear_page(abd_t *abd) { return ((abd->abd_flags & ABD_FLAG_LINEAR_PAGE) != 0 ? B_TRUE : B_FALSE); } /* * Allocations and deallocations */ abd_t *abd_alloc(size_t, boolean_t); abd_t *abd_alloc_linear(size_t, boolean_t); abd_t *abd_alloc_for_io(size_t, boolean_t); abd_t *abd_alloc_sametype(abd_t *, size_t); void abd_free(abd_t *); abd_t *abd_get_offset(abd_t *, size_t); abd_t *abd_get_offset_size(abd_t *, size_t, size_t); abd_t *abd_get_from_buf(void *, size_t); void abd_put(abd_t *); /* * Conversion to and from a normal buffer */ void *abd_to_buf(abd_t *); void *abd_borrow_buf(abd_t *, size_t); void *abd_borrow_buf_copy(abd_t *, size_t); void abd_return_buf(abd_t *, void *, size_t); void abd_return_buf_copy(abd_t *, void *, size_t); void abd_take_ownership_of_buf(abd_t *, boolean_t); void abd_release_ownership_of_buf(abd_t *); /* * ABD operations */ int abd_iterate_func(abd_t *, size_t, size_t, abd_iter_func_t *, void *); int abd_iterate_func2(abd_t *, abd_t *, size_t, size_t, size_t, abd_iter_func2_t *, void *); void abd_copy_off(abd_t *, abd_t *, size_t, size_t, size_t); void abd_copy_from_buf_off(abd_t *, const void *, size_t, size_t); void abd_copy_to_buf_off(void *, abd_t *, size_t, size_t); int abd_cmp(abd_t *, abd_t *); int abd_cmp_buf_off(abd_t *, const void *, size_t, size_t); void abd_zero_off(abd_t *, size_t, size_t); #if defined(_KERNEL) unsigned int abd_scatter_bio_map_off(struct bio *, abd_t *, unsigned int, size_t); unsigned long abd_nr_pages_off(abd_t *, unsigned int, size_t); #endif void abd_raidz_gen_iterate(abd_t **cabds, abd_t *dabd, ssize_t csize, ssize_t dsize, const unsigned parity, void (*func_raidz_gen)(void **, const void *, size_t, size_t)); void abd_raidz_rec_iterate(abd_t **cabds, abd_t **tabds, ssize_t tsize, const unsigned parity, void (*func_raidz_rec)(void **t, const size_t tsize, void **c, const unsigned *mul), const unsigned *mul); /* * Wrappers for calls with offsets of 0 */ static inline void abd_copy(abd_t *dabd, abd_t *sabd, size_t size) { abd_copy_off(dabd, sabd, 0, 0, size); } static inline void abd_copy_from_buf(abd_t *abd, const void *buf, size_t size) { abd_copy_from_buf_off(abd, buf, 0, size); } static inline void abd_copy_to_buf(void* buf, abd_t *abd, size_t size) { abd_copy_to_buf_off(buf, abd, 0, size); } static inline int abd_cmp_buf(abd_t *abd, const void *buf, size_t size) { return (abd_cmp_buf_off(abd, buf, 0, size)); } static inline void abd_zero(abd_t *abd, size_t size) { abd_zero_off(abd, 0, size); } /* * Module lifecycle */ void abd_init(void); void abd_fini(void); #ifdef __cplusplus } #endif #endif /* _ABD_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/txg_impl.h0000644000000000000000000000007413612141513017645 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.571428872 zfs-0.8.3/include/sys/txg_impl.h0000644016037001603700000001142713612141513017647 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2013, 2017 by Delphix. All rights reserved. */ #ifndef _SYS_TXG_IMPL_H #define _SYS_TXG_IMPL_H #include #include #ifdef __cplusplus extern "C" { #endif /* * The tx_cpu structure is a per-cpu structure that is used to track * the number of active transaction holds (tc_count). As transactions * are assigned into a transaction group the appropriate tc_count is * incremented to indicate that there are pending changes that have yet * to quiesce. Consumers eventually call txg_rele_to_sync() to decrement * the tc_count. A transaction group is not considered quiesced until all * tx_cpu structures have reached a tc_count of zero. * * This structure is a per-cpu structure by design. Updates to this structure * are frequent and concurrent. Having a single structure would result in * heavy lock contention so a per-cpu design was implemented. With the fanned * out mutex design, consumers only need to lock the mutex associated with * thread's cpu. * * The tx_cpu contains two locks, the tc_lock and tc_open_lock. * The tc_lock is used to protect all members of the tx_cpu structure with * the exception of the tc_open_lock. This lock should only be held for a * short period of time, typically when updating the value of tc_count. * * The tc_open_lock protects the tx_open_txg member of the tx_state structure. * This lock is used to ensure that transactions are only assigned into * the current open transaction group. In order to move the current open * transaction group to the quiesce phase, the txg_quiesce thread must * grab all tc_open_locks, increment the tx_open_txg, and drop the locks. * The tc_open_lock is held until the transaction is assigned into the * transaction group. Typically, this is a short operation but if throttling * is occurring it may be held for longer periods of time. */ struct tx_cpu { kmutex_t tc_open_lock; /* protects tx_open_txg */ kmutex_t tc_lock; /* protects the rest of this struct */ kcondvar_t tc_cv[TXG_SIZE]; uint64_t tc_count[TXG_SIZE]; /* tx hold count on each txg */ list_t tc_callbacks[TXG_SIZE]; /* commit cb list */ char tc_pad[8]; /* pad to fill 3 cache lines */ }; /* * The tx_state structure maintains the state information about the different * stages of the pool's transaction groups. A per pool tx_state structure * is used to track this information. The tx_state structure also points to * an array of tx_cpu structures (described above). Although the tx_sync_lock * is used to protect the members of this structure, it is not used to * protect the tx_open_txg. Instead a special lock in the tx_cpu structure * is used. Readers of tx_open_txg must grab the per-cpu tc_open_lock. * Any thread wishing to update tx_open_txg must grab the tc_open_lock on * every cpu (see txg_quiesce()). */ typedef struct tx_state { tx_cpu_t *tx_cpu; /* protects access to tx_open_txg */ kmutex_t tx_sync_lock; /* protects the rest of this struct */ uint64_t tx_open_txg; /* currently open txg id */ uint64_t tx_quiescing_txg; /* currently quiescing txg id */ uint64_t tx_quiesced_txg; /* quiesced txg waiting for sync */ uint64_t tx_syncing_txg; /* currently syncing txg id */ uint64_t tx_synced_txg; /* last synced txg id */ hrtime_t tx_open_time; /* start time of tx_open_txg */ uint64_t tx_sync_txg_waiting; /* txg we're waiting to sync */ uint64_t tx_quiesce_txg_waiting; /* txg we're waiting to open */ kcondvar_t tx_sync_more_cv; kcondvar_t tx_sync_done_cv; kcondvar_t tx_quiesce_more_cv; kcondvar_t tx_quiesce_done_cv; kcondvar_t tx_timeout_cv; kcondvar_t tx_exit_cv; /* wait for all threads to exit */ uint8_t tx_threads; /* number of threads */ uint8_t tx_exiting; /* set when we're exiting */ kthread_t *tx_sync_thread; kthread_t *tx_quiesce_thread; taskq_t *tx_commit_cb_taskq; /* commit callback taskq */ } tx_state_t; #ifdef __cplusplus } #endif #endif /* _SYS_TXG_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/ddt.h0000644000000000000000000000007413607166147016613 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.423424118 zfs-0.8.3/include/sys/ddt.h0000644016037001603700000001773613607166147016626 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2016 by Delphix. All rights reserved. */ #ifndef _SYS_DDT_H #define _SYS_DDT_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct abd; /* * On-disk DDT formats, in the desired search order (newest version first). */ enum ddt_type { DDT_TYPE_ZAP = 0, DDT_TYPES }; /* * DDT classes, in the desired search order (highest replication level first). */ enum ddt_class { DDT_CLASS_DITTO = 0, DDT_CLASS_DUPLICATE, DDT_CLASS_UNIQUE, DDT_CLASSES }; #define DDT_TYPE_CURRENT 0 #define DDT_COMPRESS_BYTEORDER_MASK 0x80 #define DDT_COMPRESS_FUNCTION_MASK 0x7f /* * On-disk ddt entry: key (name) and physical storage (value). */ typedef struct ddt_key { zio_cksum_t ddk_cksum; /* 256-bit block checksum */ /* * Encoded with logical & physical size, encryption, and compression, * as follows: * +-------+-------+-------+-------+-------+-------+-------+-------+ * | 0 | 0 | 0 |X| comp| PSIZE | LSIZE | * +-------+-------+-------+-------+-------+-------+-------+-------+ */ uint64_t ddk_prop; } ddt_key_t; #define DDK_GET_LSIZE(ddk) \ BF64_GET_SB((ddk)->ddk_prop, 0, 16, SPA_MINBLOCKSHIFT, 1) #define DDK_SET_LSIZE(ddk, x) \ BF64_SET_SB((ddk)->ddk_prop, 0, 16, SPA_MINBLOCKSHIFT, 1, x) #define DDK_GET_PSIZE(ddk) \ BF64_GET_SB((ddk)->ddk_prop, 16, 16, SPA_MINBLOCKSHIFT, 1) #define DDK_SET_PSIZE(ddk, x) \ BF64_SET_SB((ddk)->ddk_prop, 16, 16, SPA_MINBLOCKSHIFT, 1, x) #define DDK_GET_COMPRESS(ddk) BF64_GET((ddk)->ddk_prop, 32, 7) #define DDK_SET_COMPRESS(ddk, x) BF64_SET((ddk)->ddk_prop, 32, 7, x) #define DDK_GET_CRYPT(ddk) BF64_GET((ddk)->ddk_prop, 39, 1) #define DDK_SET_CRYPT(ddk, x) BF64_SET((ddk)->ddk_prop, 39, 1, x) #define DDT_KEY_WORDS (sizeof (ddt_key_t) / sizeof (uint64_t)) #define DDE_GET_NDVAS(dde) (DDK_GET_CRYPT(&dde->dde_key) \ ? SPA_DVAS_PER_BP - 1 : SPA_DVAS_PER_BP) typedef struct ddt_phys { dva_t ddp_dva[SPA_DVAS_PER_BP]; uint64_t ddp_refcnt; uint64_t ddp_phys_birth; } ddt_phys_t; enum ddt_phys_type { DDT_PHYS_DITTO = 0, DDT_PHYS_SINGLE = 1, DDT_PHYS_DOUBLE = 2, DDT_PHYS_TRIPLE = 3, DDT_PHYS_TYPES }; /* * In-core ddt entry */ struct ddt_entry { ddt_key_t dde_key; ddt_phys_t dde_phys[DDT_PHYS_TYPES]; zio_t *dde_lead_zio[DDT_PHYS_TYPES]; struct abd *dde_repair_abd; enum ddt_type dde_type; enum ddt_class dde_class; uint8_t dde_loading; uint8_t dde_loaded; kcondvar_t dde_cv; avl_node_t dde_node; }; /* * In-core ddt */ struct ddt { kmutex_t ddt_lock; avl_tree_t ddt_tree; avl_tree_t ddt_repair_tree; enum zio_checksum ddt_checksum; spa_t *ddt_spa; objset_t *ddt_os; uint64_t ddt_stat_object; uint64_t ddt_object[DDT_TYPES][DDT_CLASSES]; ddt_histogram_t ddt_histogram[DDT_TYPES][DDT_CLASSES]; ddt_histogram_t ddt_histogram_cache[DDT_TYPES][DDT_CLASSES]; ddt_object_t ddt_object_stats[DDT_TYPES][DDT_CLASSES]; avl_node_t ddt_node; }; /* * In-core and on-disk bookmark for DDT walks */ typedef struct ddt_bookmark { uint64_t ddb_class; uint64_t ddb_type; uint64_t ddb_checksum; uint64_t ddb_cursor; } ddt_bookmark_t; /* * Ops vector to access a specific DDT object type. */ typedef struct ddt_ops { char ddt_op_name[32]; int (*ddt_op_create)(objset_t *os, uint64_t *object, dmu_tx_t *tx, boolean_t prehash); int (*ddt_op_destroy)(objset_t *os, uint64_t object, dmu_tx_t *tx); int (*ddt_op_lookup)(objset_t *os, uint64_t object, ddt_entry_t *dde); void (*ddt_op_prefetch)(objset_t *os, uint64_t object, ddt_entry_t *dde); int (*ddt_op_update)(objset_t *os, uint64_t object, ddt_entry_t *dde, dmu_tx_t *tx); int (*ddt_op_remove)(objset_t *os, uint64_t object, ddt_entry_t *dde, dmu_tx_t *tx); int (*ddt_op_walk)(objset_t *os, uint64_t object, ddt_entry_t *dde, uint64_t *walk); int (*ddt_op_count)(objset_t *os, uint64_t object, uint64_t *count); } ddt_ops_t; #define DDT_NAMELEN 80 extern void ddt_object_name(ddt_t *ddt, enum ddt_type type, enum ddt_class class, char *name); extern int ddt_object_walk(ddt_t *ddt, enum ddt_type type, enum ddt_class class, uint64_t *walk, ddt_entry_t *dde); extern int ddt_object_count(ddt_t *ddt, enum ddt_type type, enum ddt_class class, uint64_t *count); extern int ddt_object_info(ddt_t *ddt, enum ddt_type type, enum ddt_class class, dmu_object_info_t *); extern boolean_t ddt_object_exists(ddt_t *ddt, enum ddt_type type, enum ddt_class class); extern void ddt_bp_fill(const ddt_phys_t *ddp, blkptr_t *bp, uint64_t txg); extern void ddt_bp_create(enum zio_checksum checksum, const ddt_key_t *ddk, const ddt_phys_t *ddp, blkptr_t *bp); extern void ddt_key_fill(ddt_key_t *ddk, const blkptr_t *bp); extern void ddt_phys_fill(ddt_phys_t *ddp, const blkptr_t *bp); extern void ddt_phys_clear(ddt_phys_t *ddp); extern void ddt_phys_addref(ddt_phys_t *ddp); extern void ddt_phys_decref(ddt_phys_t *ddp); extern void ddt_phys_free(ddt_t *ddt, ddt_key_t *ddk, ddt_phys_t *ddp, uint64_t txg); extern ddt_phys_t *ddt_phys_select(const ddt_entry_t *dde, const blkptr_t *bp); extern uint64_t ddt_phys_total_refcnt(const ddt_entry_t *dde); extern void ddt_stat_add(ddt_stat_t *dst, const ddt_stat_t *src, uint64_t neg); extern void ddt_histogram_add(ddt_histogram_t *dst, const ddt_histogram_t *src); extern void ddt_histogram_stat(ddt_stat_t *dds, const ddt_histogram_t *ddh); extern boolean_t ddt_histogram_empty(const ddt_histogram_t *ddh); extern void ddt_get_dedup_object_stats(spa_t *spa, ddt_object_t *ddo); extern void ddt_get_dedup_histogram(spa_t *spa, ddt_histogram_t *ddh); extern void ddt_get_dedup_stats(spa_t *spa, ddt_stat_t *dds_total); extern uint64_t ddt_get_dedup_dspace(spa_t *spa); extern uint64_t ddt_get_pool_dedup_ratio(spa_t *spa); extern int ddt_ditto_copies_needed(ddt_t *ddt, ddt_entry_t *dde, ddt_phys_t *ddp_willref); extern int ddt_ditto_copies_present(ddt_entry_t *dde); extern size_t ddt_compress(void *src, uchar_t *dst, size_t s_len, size_t d_len); extern void ddt_decompress(uchar_t *src, void *dst, size_t s_len, size_t d_len); extern ddt_t *ddt_select(spa_t *spa, const blkptr_t *bp); extern void ddt_enter(ddt_t *ddt); extern void ddt_exit(ddt_t *ddt); extern void ddt_init(void); extern void ddt_fini(void); extern ddt_entry_t *ddt_lookup(ddt_t *ddt, const blkptr_t *bp, boolean_t add); extern void ddt_prefetch(spa_t *spa, const blkptr_t *bp); extern void ddt_remove(ddt_t *ddt, ddt_entry_t *dde); extern boolean_t ddt_class_contains(spa_t *spa, enum ddt_class max_class, const blkptr_t *bp); extern ddt_entry_t *ddt_repair_start(ddt_t *ddt, const blkptr_t *bp); extern void ddt_repair_done(ddt_t *ddt, ddt_entry_t *dde); extern int ddt_entry_compare(const void *x1, const void *x2); extern void ddt_create(spa_t *spa); extern int ddt_load(spa_t *spa); extern void ddt_unload(spa_t *spa); extern void ddt_sync(spa_t *spa, uint64_t txg); extern int ddt_walk(spa_t *spa, ddt_bookmark_t *ddb, ddt_entry_t *dde); extern int ddt_object_update(ddt_t *ddt, enum ddt_type type, enum ddt_class class, ddt_entry_t *dde, dmu_tx_t *tx); extern const ddt_ops_t ddt_zap_ops; #ifdef __cplusplus } #endif #endif /* _SYS_DDT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/efi_partition.h0000644000000000000000000000007413612141513020656 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.475425788 zfs-0.8.3/include/sys/efi_partition.h0000644016037001603700000004043513612141513020661 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2012 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SYS_EFI_PARTITION_H #define _SYS_EFI_PARTITION_H #include #ifdef __cplusplus extern "C" { #endif /* * GUID Partition Table Header */ #define EFI_MIN_LABEL_SIZE 92 #define EFI_LABEL_SIZE 512 #define LEN_EFI_PAD (EFI_LABEL_SIZE - \ ((5 * sizeof (diskaddr_t)) + \ (7 * sizeof (uint_t)) + \ (8 * sizeof (char)) + \ (1 * (sizeof (struct uuid))))) #define EFI_SIGNATURE 0x5452415020494645ULL /* EFI Guid Partition Table Header -- little endian on-disk format */ typedef struct efi_gpt { uint64_t efi_gpt_Signature; uint_t efi_gpt_Revision; uint_t efi_gpt_HeaderSize; uint_t efi_gpt_HeaderCRC32; uint_t efi_gpt_Reserved1; diskaddr_t efi_gpt_MyLBA; diskaddr_t efi_gpt_AlternateLBA; diskaddr_t efi_gpt_FirstUsableLBA; diskaddr_t efi_gpt_LastUsableLBA; struct uuid efi_gpt_DiskGUID; diskaddr_t efi_gpt_PartitionEntryLBA; uint_t efi_gpt_NumberOfPartitionEntries; uint_t efi_gpt_SizeOfPartitionEntry; uint_t efi_gpt_PartitionEntryArrayCRC32; char efi_gpt_Reserved2[LEN_EFI_PAD]; } efi_gpt_t; /* EFI Guid Partition Entry Attributes -- little endian format */ typedef struct efi_gpe_Attrs { uint32_t PartitionAttrs :16, Reserved2 :16; uint32_t Reserved1 :31, RequiredPartition :1; } efi_gpe_Attrs_t; /* * 6a96237f-1dd2-11b2-99a6-080020736631 V_UNASSIGNED (not used as such) * 6a82cb45-1dd2-11b2-99a6-080020736631 V_BOOT * 6a85cf4d-1dd2-11b2-99a6-080020736631 V_ROOT * 6a87c46f-1dd2-11b2-99a6-080020736631 V_SWAP * 6a898cc3-1dd2-11b2-99a6-080020736631 V_USR * 6a8b642b-1dd2-11b2-99a6-080020736631 V_BACKUP * 6a8d2ac7-1dd2-11b2-99a6-080020736631 V_STAND (not used) * 6a8ef2e9-1dd2-11b2-99a6-080020736631 V_VAR * 6a90ba39-1dd2-11b2-99a6-080020736631 V_HOME * 6a9283a5-1dd2-11b2-99a6-080020736631 V_ALTSCTR * 6a945a3b-1dd2-11b2-99a6-080020736631 V_CACHE */ #define EFI_UNUSED { 0x00000000, 0x0000, 0x0000, 0x00, 0x00, \ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } } #define EFI_RESV1 { 0x6a96237f, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_BOOT { 0x6a82cb45, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_ROOT { 0x6a85cf4d, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_SWAP { 0x6a87c46f, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_USR { 0x6a898cc3, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_BACKUP { 0x6a8b642b, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_RESV2 { 0x6a8d2ac7, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_VAR { 0x6a8ef2e9, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_HOME { 0x6a90ba39, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_ALTSCTR { 0x6a9283a5, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_RESERVED { 0x6a945a3b, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_SYSTEM { 0xC12A7328, 0xF81F, 0x11d2, 0xBA, 0x4B, \ { 0x00, 0xA0, 0xC9, 0x3E, 0xC9, 0x3B } } #define EFI_LEGACY_MBR { 0x024DEE41, 0x33E7, 0x11d3, 0x9D, 0x69, \ { 0x00, 0x08, 0xC7, 0x81, 0xF3, 0x9F } } #define EFI_SYMC_PUB { 0x6a9630d1, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_SYMC_CDS { 0x6a980767, 0x1dd2, 0x11b2, 0x99, 0xa6, \ { 0x08, 0x00, 0x20, 0x73, 0x66, 0x31 } } #define EFI_MSFT_RESV { 0xE3C9E316, 0x0B5C, 0x4DB8, 0x81, 0x7D, \ { 0xF9, 0x2D, 0xF0, 0x02, 0x15, 0xAE } } #define EFI_DELL_BASIC { 0xebd0a0a2, 0xb9e5, 0x4433, 0x87, 0xc0, \ { 0x68, 0xb6, 0xb7, 0x26, 0x99, 0xc7 } } #define EFI_DELL_RAID { 0xa19d880f, 0x05fc, 0x4d3b, 0xa0, 0x06, \ { 0x74, 0x3f, 0x0f, 0x84, 0x91, 0x1e } } #define EFI_DELL_SWAP { 0x0657fd6d, 0xa4ab, 0x43c4, 0x84, 0xe5, \ { 0x09, 0x33, 0xc8, 0x4b, 0x4f, 0x4f } } #define EFI_DELL_LVM { 0xe6d6d379, 0xf507, 0x44c2, 0xa2, 0x3c, \ { 0x23, 0x8f, 0x2a, 0x3d, 0xf9, 0x28 } } #define EFI_DELL_RESV { 0x8da63339, 0x0007, 0x60c0, 0xc4, 0x36, \ { 0x08, 0x3a, 0xc8, 0x23, 0x09, 0x08 } } #define EFI_AAPL_HFS { 0x48465300, 0x0000, 0x11aa, 0xaa, 0x11, \ { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } #define EFI_AAPL_UFS { 0x55465300, 0x0000, 0x11aa, 0xaa, 0x11, \ { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } #define EFI_FREEBSD_BOOT { 0x83bd6b9d, 0x7f41, 0x11dc, 0xbe, 0x0b, \ { 0x00, 0x15, 0x60, 0xb8, 0x4f, 0x0f } } #define EFI_FREEBSD_SWAP { 0x516e7cb5, 0x6ecf, 0x11d6, 0x8f, 0xf8, \ { 0x00, 0x02, 0x2d, 0x09, 0x71, 0x2b } } #define EFI_FREEBSD_UFS { 0x516e7cb6, 0x6ecf, 0x11d6, 0x8f, 0xf8, \ { 0x00, 0x02, 0x2d, 0x09, 0x71, 0x2b } } #define EFI_FREEBSD_VINUM { 0x516e7cb8, 0x6ecf, 0x11d6, 0x8f, 0xf8, \ { 0x00, 0x02, 0x2d, 0x09, 0x71, 0x2b } } #define EFI_FREEBSD_ZFS { 0x516e7cba, 0x6ecf, 0x11d6, 0x8f, 0xf8, \ { 0x00, 0x02, 0x2d, 0x09, 0x71, 0x2b } } /* From Wikipedia */ #define EFI_BIOS_BOOT { 0x21686148, 0x6449, 0x6e6f, 0x74, 0x4e, \ { 0x65, 0x65, 0x64, 0x45, 0x46, 0x49 } } #define EFI_INTC_RS { 0xd3bfe2de, 0x3daf, 0x11df, 0xba, 0x40, \ { 0xe3, 0xa5, 0x56, 0xd8, 0x95, 0x93 } } #define EFI_SNE_BOOT { 0xf4019732, 0x066e, 0x4e12, 0x82, 0x73, \ { 0x34, 0x6c, 0x56, 0x41, 0x49, 0x4f } } #define EFI_LENOVO_BOOT { 0xbfbfafe7, 0xa34f, 0x448a, 0x9a, 0x5b, \ { 0x62, 0x13, 0xeb, 0x73, 0x6c, 0x22 } } #define EFI_MSFT_LDMM { 0x5808c8aa, 0x7e8f, 0x42e0, 0x85, 0xd2, \ { 0xe1, 0xe9, 0x04, 0x34, 0xcf, 0xb3 } } #define EFI_MSFT_LDMD { 0xaf9b60a0, 0x1431, 0x4f62, 0xbc, 0x68, \ { 0x33, 0x11, 0x71, 0x4a, 0x69, 0xad } } #define EFI_MSFT_RE { 0xde94bba4, 0x06d1, 0x4d40, 0xa1, 0x6a, \ { 0xbf, 0xd5, 0x01, 0x79, 0xd6, 0xac } } #define EFI_IBM_GPFS { 0x37affc90, 0xef7d, 0x4e96, 0x91, 0xc3, \ { 0x2d, 0x7a, 0xe0, 0x55, 0xb1, 0x74 } } #define EFI_MSFT_STORAGESPACES { 0xe75caf8f, 0xf680, 0x4cee, 0xaf, 0xa3, \ { 0xb0, 0x01, 0xe5, 0x6e, 0xfc, 0x2d } } #define EFI_HPQ_DATA { 0x75894c1e, 0x3aeb, 0x11d3, 0xb7, 0xc1, \ { 0x7b, 0x03, 0xa0, 0x00, 0x00, 0x00 } } #define EFI_HPQ_SVC { 0xe2a1e728, 0x32e3, 0x11d6, 0xa6, 0x82, \ { 0x7b, 0x03, 0xa0, 0x00, 0x00, 0x00 } } #define EFI_RHT_DATA { 0x0fc63daf, 0x8483, 0x4772, 0x8e, 0x79, \ { 0x3d, 0x69, 0xd8, 0x47, 0x7d, 0xe4 } } #define EFI_RHT_HOME { 0x933ac7e1, 0x2eb4, 0x4f13, 0xb8, 0x44, \ { 0x0e, 0x14, 0xe2, 0xae, 0xf9, 0x15 } } #define EFI_RHT_SRV { 0x3b8f8425, 0x20e0, 0x4f3b, 0x90, 0x7f, \ { 0x1a, 0x25, 0xa7, 0x6f, 0x98, 0xe8 } } #define EFI_RHT_DMCRYPT { 0x7ffec5c9, 0x2d00, 0x49b7, 0x89, 0x41, \ { 0x3e, 0xa1, 0x0a, 0x55, 0x86, 0xb7 } } #define EFI_RHT_LUKS { 0xca7d7ccb, 0x63ed, 0x4c53, 0x86, 0x1c, \ { 0x17, 0x42, 0x53, 0x60, 0x59, 0xcc } } #define EFI_FREEBSD_DISKLABEL { 0x516e7cb4, 0x6ecf, 0x11d6, 0x8f, 0xf8, \ { 0x00, 0x02, 0x2d, 0x09, 0x71, 0x2b } } #define EFI_AAPL_RAID { 0x52414944, 0x0000, 0x11aa, 0xaa, 0x11, \ { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } #define EFI_AAPL_RAIDOFFLINE { 0x52414944, 0x5f4f, 0x11aa, 0xaa, 0x11, \ { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } #define EFI_AAPL_BOOT { 0x426f6f74, 0x0000, 0x11aa, 0xaa, 0x11, \ { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } #define EFI_AAPL_LABEL { 0x4c616265, 0x6c00, 0x11aa, 0xaa, 0x11, \ { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } #define EFI_AAPL_TVRECOVERY { 0x5265636f, 0x7665, 0x11aa, 0xaa, 0x11, \ { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } #define EFI_AAPL_CORESTORAGE { 0x53746f72, 0x6167, 0x11aa, 0xaa, 0x11, \ { 0x00, 0x30, 0x65, 0x43, 0xec, 0xac } } #define EFI_NETBSD_SWAP { 0x49f48d32, 0xb10e, 0x11dc, 0xb9, 0x9b, \ { 0x00, 0x19, 0xd1, 0x87, 0x96, 0x48 } } #define EFI_NETBSD_FFS { 0x49f48d5a, 0xb10e, 0x11dc, 0xb9, 0x9b, \ { 0x00, 0x19, 0xd1, 0x87, 0x96, 0x48 } } #define EFI_NETBSD_LFS { 0x49f48d82, 0xb10e, 0x11dc, 0xb9, 0x9b, \ { 0x00, 0x19, 0xd1, 0x87, 0x96, 0x48 } } #define EFI_NETBSD_RAID { 0x49f48daa, 0xb10e, 0x11dc, 0xb9, 0x9b, \ { 0x00, 0x19, 0xd1, 0x87, 0x96, 0x48 } } #define EFI_NETBSD_CAT { 0x2db519c4, 0xb10f, 0x11dc, 0xb9, 0x9b, \ { 0x00, 0x19, 0xd1, 0x87, 0x96, 0x48 } } #define EFI_NETBSD_CRYPT { 0x2db519ec, 0xb10f, 0x11dc, 0xb9, 0x9b, \ { 0x00, 0x19, 0xd1, 0x87, 0x96, 0x48 } } #define EFI_GOOG_KERN { 0xfe3a2a5d, 0x4f32, 0x41a7, 0xb7, 0x25, \ { 0xac, 0xcc, 0x32, 0x85, 0xa3, 0x09 } } #define EFI_GOOG_ROOT { 0x3cb8e202, 0x3b7e, 0x47dd, 0x8a, 0x3c, \ { 0x7f, 0xf2, 0xa1, 0x3c, 0xfc, 0xec } } #define EFI_GOOG_RESV { 0x2e0a753d, 0x9e48, 0x43b0, 0x83, 0x37, \ { 0xb1, 0x51, 0x92, 0xcb, 0x1b, 0x5e } } #define EFI_HAIKU_BFS { 0x42465331, 0x3ba3, 0x10f1, 0x80, 0x2a, \ { 0x48, 0x61, 0x69, 0x6b, 0x75, 0x21 } } #define EFI_MIDNIGHTBSD_BOOT { 0x85d5e45e, 0x237c, 0x11e1, 0xb4, 0xb3, \ { 0xe8, 0x9a, 0x8f, 0x7f, 0xc3, 0xa7 } } #define EFI_MIDNIGHTBSD_DATA { 0x85d5e45a, 0x237c, 0x11e1, 0xb4, 0xb3, \ { 0xe8, 0x9a, 0x8f, 0x7f, 0xc3, 0xa7 } } #define EFI_MIDNIGHTBSD_SWAP { 0x85d5e45b, 0x237c, 0x11e1, 0xb4, 0xb3, \ { 0xe8, 0x9a, 0x8f, 0x7f, 0xc3, 0xa7 } } #define EFI_MIDNIGHTBSD_UFS { 0x0394ef8b, 0x237e, 0x11e1, 0xb4, 0xb3, \ { 0xe8, 0x9a, 0x8f, 0x7f, 0xc3, 0xa7 } } #define EFI_MIDNIGHTBSD_VINUM { 0x85d5e45c, 0x237c, 0x11e1, 0xb4, 0xb3, \ { 0xe8, 0x9a, 0x8f, 0x7f, 0xc3, 0xa7 } } #define EFI_MIDNIGHTBSD_ZFS { 0x85d5e45d, 0x237c, 0x11e1, 0xb4, 0xb3, \ { 0xe8, 0x9a, 0x8f, 0x7f, 0xc3, 0xa7 } } #define EFI_CEPH_JOURNAL { 0x45b0969e, 0x9b03, 0x4f30, 0xb4, 0xc6, \ { 0xb4, 0xb8, 0x0c, 0xef, 0xf1, 0x06 } } #define EFI_CEPH_DMCRYPTJOURNAL { 0x45b0969e, 0x9b03, 0x4f30, 0xb4, 0xc6, \ { 0x5e, 0xc0, 0x0c, 0xef, 0xf1, 0x06 } } #define EFI_CEPH_OSD { 0x4fbd7e29, 0x9d25, 0x41b8, 0xaf, 0xd0, \ { 0x06, 0x2c, 0x0c, 0xef, 0xf0, 0x5d } } #define EFI_CEPH_DMCRYPTOSD { 0x4fbd7e29, 0x9d25, 0x41b8, 0xaf, 0xd0, \ { 0x5e, 0xc0, 0x0c, 0xef, 0xf0, 0x5d } } #define EFI_CEPH_CREATE { 0x89c57f98, 0x2fe5, 0x4dc0, 0x89, 0xc1, \ { 0xf3, 0xad, 0x0c, 0xef, 0xf2, 0xbe } } #define EFI_CEPH_DMCRYPTCREATE { 0x89c57f98, 0x2fe5, 0x4dc0, 0x89, 0xc1, \ { 0x5e, 0xc0, 0x0c, 0xef, 0xf2, 0xbe } } #define EFI_OPENBSD_DISKLABEL { 0x824cc7a0, 0x36a8, 0x11e3, 0x89, 0x0a, \ { 0x95, 0x25, 0x19, 0xad, 0x3f, 0x61 } } #define EFI_BBRY_QNX { 0xcef5a9ad, 0x73bc, 0x4601, 0x89, 0xf3, \ { 0xcd, 0xee, 0xee, 0xe3, 0x21, 0xa1 } } #define EFI_BELL_PLAN9 { 0xc91818f9, 0x8025, 0x47af, 0x89, 0xd2, \ { 0xf0, 0x30, 0xd7, 0x00, 0x0c, 0x2c } } #define EFI_VMW_KCORE { 0x9d275380, 0x40ad, 0x11db, 0xbf, 0x97, \ { 0x00, 0x0c, 0x29, 0x11, 0xd1, 0xb8 } } #define EFI_VMW_VMFS { 0xaa31e02a, 0x400f, 0x11db, 0x95, 0x90, \ { 0x00, 0x0c, 0x29, 0x11, 0xd1, 0xb8 } } #define EFI_VMW_RESV { 0x9198effc, 0x31c0, 0x11db, 0x8f, 0x78, \ { 0x00, 0x0c, 0x29, 0x11, 0xd1, 0xb8 } } /* From GPT fdisk */ #define EFI_RHT_ROOTX86 { 0x44479540, 0xf297, 0x41b2, 0x9a, 0xf7, \ { 0xd1, 0x31, 0xd5, 0xf0, 0x45, 0x8a } } #define EFI_RHT_ROOTAMD64 { 0x4f68bce3, 0xe8cd, 0x4db1, 0x96, 0xe7, \ { 0xfb, 0xca, 0xf9, 0x84, 0xb7, 0x09 } } #define EFI_RHT_ROOTARM { 0x69dad710, 0x2ce4, 0x4e3c, 0xb1, 0x6c, \ { 0x21, 0xa1, 0xd4, 0x9a, 0xbe, 0xd3 } } #define EFI_RHT_ROOTARM64 { 0xb921b045, 0x1df0, 0x41c3, 0xaf, 0x44, \ { 0x4c, 0x6f, 0x28, 0x0d, 0x3f, 0xae } } #define EFI_ACRONIS_SECUREZONE { 0x0311fc50, 0x01ca, 0x4725, 0xad, 0x77, \ { 0x9a, 0xdb, 0xb2, 0x0a, 0xce, 0x98 } } #define EFI_ONIE_BOOT { 0x7412f7d5, 0xa156, 0x4b13, 0x81, 0xdc, \ { 0x86, 0x71, 0x74, 0x92, 0x93, 0x25 } } #define EFI_ONIE_CONFIG { 0xd4e6e2cd, 0x4469, 0x46f3, 0xb5, 0xcb, \ { 0x1b, 0xff, 0x57, 0xaf, 0xc1, 0x49 } } #define EFI_IBM_PPRPBOOT { 0x9e1a2d38, 0xc612, 0x4316, 0xaa, 0x26, \ { 0x8b, 0x49, 0x52, 0x1e, 0x5a, 0x8b } } #define EFI_FREEDESKTOP_BOOT { 0xbc13c2ff, 0x59e6, 0x4262, 0xa3, 0x52, \ { 0xb2, 0x75, 0xfd, 0x6f, 0x71, 0x72 } } /* minimum # of bytes for partition table entries, per EFI spec */ #define EFI_MIN_ARRAY_SIZE (16 * 1024) #define EFI_PART_NAME_LEN 36 /* size of the "reserved" partition, in blocks */ #define EFI_MIN_RESV_SIZE (16 * 1024) /* EFI Guid Partition Entry */ typedef struct efi_gpe { struct uuid efi_gpe_PartitionTypeGUID; struct uuid efi_gpe_UniquePartitionGUID; diskaddr_t efi_gpe_StartingLBA; diskaddr_t efi_gpe_EndingLBA; efi_gpe_Attrs_t efi_gpe_Attributes; ushort_t efi_gpe_PartitionName[EFI_PART_NAME_LEN]; } efi_gpe_t; /* * passed to the useful (we hope) routines (efi_alloc_and_read and * efi_write) that take this VTOC-like struct. These routines handle * converting this struct into the EFI struct, generate UUIDs and * checksums, and perform any necessary byte-swapping to the on-disk * format. */ /* Solaris library abstraction for EFI partitions */ typedef struct dk_part { diskaddr_t p_start; /* starting LBA */ diskaddr_t p_size; /* size in blocks */ struct uuid p_guid; /* partition type GUID */ ushort_t p_tag; /* converted to part'n type GUID */ ushort_t p_flag; /* attributes */ char p_name[EFI_PART_NAME_LEN]; /* partition name */ struct uuid p_uguid; /* unique partition GUID */ uint_t p_resv[8]; /* future use - set to zero */ } dk_part_t; /* Solaris library abstraction for an EFI GPT */ #define EFI_VERSION102 0x00010002 #define EFI_VERSION100 0x00010000 #define EFI_VERSION_CURRENT EFI_VERSION100 typedef struct dk_gpt { uint_t efi_version; /* set to EFI_VERSION_CURRENT */ uint_t efi_nparts; /* number of partitions below */ uint_t efi_part_size; /* size of each partition entry */ /* efi_part_size is unused */ uint_t efi_lbasize; /* size of block in bytes */ diskaddr_t efi_last_lba; /* last block on the disk */ diskaddr_t efi_first_u_lba; /* first block after labels */ diskaddr_t efi_last_u_lba; /* last block before backup labels */ struct uuid efi_disk_uguid; /* unique disk GUID */ uint_t efi_flags; uint_t efi_reserved1; /* future use - set to zero */ diskaddr_t efi_altern_lba; /* lba of alternate GPT header */ uint_t efi_reserved[12]; /* future use - set to zero */ struct dk_part efi_parts[1]; /* array of partitions */ } dk_gpt_t; /* possible values for "efi_flags" */ #define EFI_GPT_PRIMARY_CORRUPT 0x1 /* primary label corrupt */ /* the private ioctl between libefi and the driver */ typedef struct dk_efi { diskaddr_t dki_lba; /* starting block */ len_t dki_length; /* length in bytes */ union { efi_gpt_t *_dki_data; uint64_t _dki_data_64; } dki_un; #define dki_data dki_un._dki_data #define dki_data_64 dki_un._dki_data_64 } dk_efi_t; struct partition64 { struct uuid p_type; uint_t p_partno; uint_t p_resv1; diskaddr_t p_start; diskaddr_t p_size; }; /* * Number of EFI partitions */ #if defined(__linux__) #define EFI_NUMPAR 128 /* Expected by parted-1.8.1 */ #else #define EFI_NUMPAR 9 #endif #ifndef _KERNEL extern int efi_alloc_and_init(int, uint32_t, struct dk_gpt **); extern int efi_alloc_and_read(int, struct dk_gpt **); extern int efi_write(int, struct dk_gpt *); extern int efi_rescan(int); extern void efi_free(struct dk_gpt *); extern int efi_type(int); extern void efi_err_check(struct dk_gpt *); extern int efi_auto_sense(int fd, struct dk_gpt **); extern int efi_use_whole_disk(int fd); #endif #ifdef __cplusplus } #endif #endif /* _SYS_EFI_PARTITION_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_crypt.h0000644000000000000000000000007413607166132020035 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.460425308 zfs-0.8.3/include/sys/dsl_crypt.h0000644016037001603700000001742013607166132020036 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2017, Datto, Inc. All rights reserved. */ #ifndef _SYS_DSL_CRYPT_H #define _SYS_DSL_CRYPT_H #include #include #include #include #include /* * ZAP entry keys for DSL Crypto Keys stored on disk. In addition, * ZFS_PROP_KEYFORMAT, ZFS_PROP_PBKDF2_SALT, and ZFS_PROP_PBKDF2_ITERS are * also maintained here using their respective property names. */ #define DSL_CRYPTO_KEY_CRYPTO_SUITE "DSL_CRYPTO_SUITE" #define DSL_CRYPTO_KEY_GUID "DSL_CRYPTO_GUID" #define DSL_CRYPTO_KEY_IV "DSL_CRYPTO_IV" #define DSL_CRYPTO_KEY_MAC "DSL_CRYPTO_MAC" #define DSL_CRYPTO_KEY_MASTER_KEY "DSL_CRYPTO_MASTER_KEY_1" #define DSL_CRYPTO_KEY_HMAC_KEY "DSL_CRYPTO_HMAC_KEY_1" #define DSL_CRYPTO_KEY_ROOT_DDOBJ "DSL_CRYPTO_ROOT_DDOBJ" #define DSL_CRYPTO_KEY_REFCOUNT "DSL_CRYPTO_REFCOUNT" #define DSL_CRYPTO_KEY_VERSION "DSL_CRYPTO_VERSION" /* * In-memory representation of a wrapping key. One of these structs will exist * for each encryption root with its key loaded. */ typedef struct dsl_wrapping_key { /* link on spa_keystore_t:sk_wkeys */ avl_node_t wk_avl_link; /* keyformat property enum */ zfs_keyformat_t wk_keyformat; /* the pbkdf2 salt, if the keyformat is of type passphrase */ uint64_t wk_salt; /* the pbkdf2 iterations, if the keyformat is of type passphrase */ uint64_t wk_iters; /* actual wrapping key */ crypto_key_t wk_key; /* refcount of number of dsl_crypto_key_t's holding this struct */ zfs_refcount_t wk_refcnt; /* dsl directory object that owns this wrapping key */ uint64_t wk_ddobj; } dsl_wrapping_key_t; /* enum of commands indicating special actions that should be run */ typedef enum dcp_cmd { /* key creation commands */ DCP_CMD_NONE = 0, /* no specific command */ DCP_CMD_RAW_RECV, /* raw receive */ /* key changing commands */ DCP_CMD_NEW_KEY, /* rewrap key as an encryption root */ DCP_CMD_INHERIT, /* rewrap key with parent's wrapping key */ DCP_CMD_FORCE_NEW_KEY, /* change to encryption root without rewrap */ DCP_CMD_FORCE_INHERIT, /* inherit parent's key without rewrap */ DCP_CMD_MAX } dcp_cmd_t; /* * This struct is a simple wrapper around all the parameters that are usually * required to setup encryption. It exists so that all of the params can be * passed around the kernel together for convenience. */ typedef struct dsl_crypto_params { /* command indicating intended action */ dcp_cmd_t cp_cmd; /* the encryption algorithm */ enum zio_encrypt cp_crypt; /* keylocation property string */ char *cp_keylocation; /* the wrapping key */ dsl_wrapping_key_t *cp_wkey; } dsl_crypto_params_t; /* * In-memory representation of a DSL Crypto Key object. One of these structs * (and corresponding on-disk ZAP object) will exist for each encrypted * clone family that is mounted or otherwise reading protected data. */ typedef struct dsl_crypto_key { /* link on spa_keystore_t:sk_dsl_keys */ avl_node_t dck_avl_link; /* refcount of holders of this key */ zfs_refcount_t dck_holds; /* master key used to derive encryption keys */ zio_crypt_key_t dck_key; /* wrapping key for syncing this structure to disk */ dsl_wrapping_key_t *dck_wkey; /* on-disk object id */ uint64_t dck_obj; } dsl_crypto_key_t; /* * In-memory mapping of a dataset object id to a DSL Crypto Key. This is used * to look up the corresponding dsl_crypto_key_t from the zio layer for * performing data encryption and decryption. */ typedef struct dsl_key_mapping { /* link on spa_keystore_t:sk_key_mappings */ avl_node_t km_avl_link; /* refcount of how many users are depending on this mapping */ zfs_refcount_t km_refcnt; /* dataset this crypto key belongs to (index) */ uint64_t km_dsobj; /* crypto key (value) of this record */ dsl_crypto_key_t *km_key; } dsl_key_mapping_t; /* in memory structure for holding all wrapping and dsl keys */ typedef struct spa_keystore { /* lock for protecting sk_dsl_keys */ krwlock_t sk_dk_lock; /* tree of all dsl_crypto_key_t's */ avl_tree_t sk_dsl_keys; /* lock for protecting sk_key_mappings */ krwlock_t sk_km_lock; /* tree of all dsl_key_mapping_t's, indexed by dsobj */ avl_tree_t sk_key_mappings; /* lock for protecting the wrapping keys tree */ krwlock_t sk_wkeys_lock; /* tree of all dsl_wrapping_key_t's, indexed by ddobj */ avl_tree_t sk_wkeys; } spa_keystore_t; int dsl_crypto_params_create_nvlist(dcp_cmd_t cmd, nvlist_t *props, nvlist_t *crypto_args, dsl_crypto_params_t **dcp_out); void dsl_crypto_params_free(dsl_crypto_params_t *dcp, boolean_t unload); void dsl_dataset_crypt_stats(struct dsl_dataset *ds, nvlist_t *nv); int dsl_crypto_can_set_keylocation(const char *dsname, const char *keylocation); boolean_t dsl_dir_incompatible_encryption_version(dsl_dir_t *dd); void spa_keystore_init(spa_keystore_t *sk); void spa_keystore_fini(spa_keystore_t *sk); void spa_keystore_dsl_key_rele(spa_t *spa, dsl_crypto_key_t *dck, void *tag); int spa_keystore_load_wkey_impl(spa_t *spa, dsl_wrapping_key_t *wkey); int spa_keystore_load_wkey(const char *dsname, dsl_crypto_params_t *dcp, boolean_t noop); int spa_keystore_unload_wkey_impl(spa_t *spa, uint64_t ddobj); int spa_keystore_unload_wkey(const char *dsname); int spa_keystore_create_mapping(spa_t *spa, struct dsl_dataset *ds, void *tag, dsl_key_mapping_t **km_out); int spa_keystore_remove_mapping(spa_t *spa, uint64_t dsobj, void *tag); void key_mapping_add_ref(dsl_key_mapping_t *km, void *tag); void key_mapping_rele(spa_t *spa, dsl_key_mapping_t *km, void *tag); int spa_keystore_lookup_key(spa_t *spa, uint64_t dsobj, void *tag, dsl_crypto_key_t **dck_out); int dsl_crypto_populate_key_nvlist(struct dsl_dataset *ds, uint64_t from_ivset_guid, nvlist_t **nvl_out); int dsl_crypto_recv_raw_key_check(struct dsl_dataset *ds, nvlist_t *nvl, dmu_tx_t *tx); void dsl_crypto_recv_raw_key_sync(struct dsl_dataset *ds, nvlist_t *nvl, dmu_tx_t *tx); int dsl_crypto_recv_raw(const char *poolname, uint64_t dsobj, uint64_t fromobj, dmu_objset_type_t ostype, nvlist_t *nvl, boolean_t do_key); int spa_keystore_change_key(const char *dsname, dsl_crypto_params_t *dcp); int dsl_dir_rename_crypt_check(dsl_dir_t *dd, dsl_dir_t *newparent); int dsl_dataset_promote_crypt_check(dsl_dir_t *target, dsl_dir_t *origin); void dsl_dataset_promote_crypt_sync(dsl_dir_t *target, dsl_dir_t *origin, dmu_tx_t *tx); int dmu_objset_create_crypt_check(dsl_dir_t *parentdd, dsl_crypto_params_t *dcp, boolean_t *will_encrypt); void dsl_dataset_create_crypt_sync(uint64_t dsobj, dsl_dir_t *dd, struct dsl_dataset *origin, dsl_crypto_params_t *dcp, dmu_tx_t *tx); uint64_t dsl_crypto_key_create_sync(uint64_t crypt, dsl_wrapping_key_t *wkey, dmu_tx_t *tx); uint64_t dsl_crypto_key_clone_sync(dsl_dir_t *origindd, dmu_tx_t *tx); void dsl_crypto_key_destroy_sync(uint64_t dckobj, dmu_tx_t *tx); int spa_crypt_get_salt(spa_t *spa, uint64_t dsobj, uint8_t *salt); int spa_do_crypt_mac_abd(boolean_t generate, spa_t *spa, uint64_t dsobj, abd_t *abd, uint_t datalen, uint8_t *mac); int spa_do_crypt_objset_mac_abd(boolean_t generate, spa_t *spa, uint64_t dsobj, abd_t *abd, uint_t datalen, boolean_t byteswap); int spa_do_crypt_abd(boolean_t encrypt, spa_t *spa, const zbookmark_phys_t *zb, dmu_object_type_t ot, boolean_t dedup, boolean_t bswap, uint8_t *salt, uint8_t *iv, uint8_t *mac, uint_t datalen, abd_t *pabd, abd_t *cabd, boolean_t *no_crypt); #endif zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_disk.h0000644000000000000000000000007413607166132020010 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.593429576 zfs-0.8.3/include/sys/vdev_disk.h0000644016037001603700000000345113607166132020010 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2008-2010 Lawrence Livermore National Security, LLC. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * LLNL-CODE-403049. * Copyright (c) 2018 by Delphix. All rights reserved. */ #ifndef _SYS_VDEV_DISK_H #define _SYS_VDEV_DISK_H /* * Don't start the slice at the default block of 34; many storage * devices will use a stripe width of 128k, other vendors prefer a 1m * alignment. It is best to play it safe and ensure a 1m alignment * given 512B blocks. When the block size is larger by a power of 2 * we will still be 1m aligned. Some devices are sensitive to the * partition ending alignment as well. */ #define NEW_START_BLOCK 2048 #define PARTITION_END_ALIGNMENT 2048 #ifdef _KERNEL #include typedef struct vdev_disk { ddi_devid_t vd_devid; char *vd_minor; struct block_device *vd_bdev; krwlock_t vd_lock; } vdev_disk_t; #endif /* _KERNEL */ #endif /* _SYS_VDEV_DISK_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_debug.h0000644000000000000000000000007413607166147020010 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.645431246 zfs-0.8.3/include/sys/zfs_debug.h0000644016037001603700000000627613607166147020020 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. */ #ifndef _SYS_ZFS_DEBUG_H #define _SYS_ZFS_DEBUG_H #ifdef __cplusplus extern "C" { #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif extern int zfs_flags; extern int zfs_recover; extern int zfs_free_leak_on_eio; extern int zfs_dbgmsg_enable; #define ZFS_DEBUG_DPRINTF (1 << 0) #define ZFS_DEBUG_DBUF_VERIFY (1 << 1) #define ZFS_DEBUG_DNODE_VERIFY (1 << 2) #define ZFS_DEBUG_SNAPNAMES (1 << 3) #define ZFS_DEBUG_MODIFY (1 << 4) /* 1<<5 was previously used, try not to reuse */ #define ZFS_DEBUG_ZIO_FREE (1 << 6) #define ZFS_DEBUG_HISTOGRAM_VERIFY (1 << 7) #define ZFS_DEBUG_METASLAB_VERIFY (1 << 8) #define ZFS_DEBUG_SET_ERROR (1 << 9) #define ZFS_DEBUG_INDIRECT_REMAP (1 << 10) #define ZFS_DEBUG_TRIM (1 << 11) extern void __zfs_dbgmsg(char *buf); extern void __dprintf(boolean_t dprint, const char *file, const char *func, int line, const char *fmt, ...); /* * Some general principles for using zfs_dbgmsg(): * 1. We don't want to pollute the log with typically-irrelevant messages, * so don't print too many messages in the "normal" code path - O(1) * per txg. * 2. We want to know for sure what happened, so make the message specific * (e.g. *which* thing am I operating on). * 3. Do print a message when something unusual or unexpected happens * (e.g. error cases). * 4. Print a message when making user-initiated on-disk changes. * * Note that besides principle 1, another reason that we don't want to * use zfs_dbgmsg in high-frequency routines is the potential impact * that it can have on performance. */ #define zfs_dbgmsg(...) \ if (zfs_dbgmsg_enable) \ __dprintf(B_FALSE, __FILE__, __func__, __LINE__, __VA_ARGS__) #ifdef ZFS_DEBUG /* * To enable this: * * $ echo 1 >/sys/module/zfs/parameters/zfs_flags */ #define dprintf(...) \ if (zfs_flags & ZFS_DEBUG_DPRINTF) \ __dprintf(B_TRUE, __FILE__, __func__, __LINE__, __VA_ARGS__) #else #define dprintf(...) ((void)0) #endif /* ZFS_DEBUG */ extern void zfs_panic_recover(const char *fmt, ...); extern void zfs_dbgmsg_init(void); extern void zfs_dbgmsg_fini(void); #ifndef _KERNEL extern int dprintf_find_string(const char *string); extern void zfs_dbgmsg_print(const char *tag); #endif #ifdef __cplusplus } #endif #endif /* _SYS_ZFS_DEBUG_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zil.h0000644000000000000000000000007413612141513016620 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.675432209 zfs-0.8.3/include/sys/zil.h0000644016037001603700000004421213612141513016620 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. */ /* Portions Copyright 2010 Robert Milkowski */ #ifndef _SYS_ZIL_H #define _SYS_ZIL_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct dsl_pool; struct dsl_dataset; struct lwb; /* * Intent log format: * * Each objset has its own intent log. The log header (zil_header_t) * for objset N's intent log is kept in the Nth object of the SPA's * intent_log objset. The log header points to a chain of log blocks, * each of which contains log records (i.e., transactions) followed by * a log block trailer (zil_trailer_t). The format of a log record * depends on the record (or transaction) type, but all records begin * with a common structure that defines the type, length, and txg. */ /* * Intent log header - this on disk structure holds fields to manage * the log. All fields are 64 bit to easily handle cross architectures. */ typedef struct zil_header { uint64_t zh_claim_txg; /* txg in which log blocks were claimed */ uint64_t zh_replay_seq; /* highest replayed sequence number */ blkptr_t zh_log; /* log chain */ uint64_t zh_claim_blk_seq; /* highest claimed block sequence number */ uint64_t zh_flags; /* header flags */ uint64_t zh_claim_lr_seq; /* highest claimed lr sequence number */ uint64_t zh_pad[3]; } zil_header_t; /* * zh_flags bit settings */ #define ZIL_REPLAY_NEEDED 0x1 /* replay needed - internal only */ #define ZIL_CLAIM_LR_SEQ_VALID 0x2 /* zh_claim_lr_seq field is valid */ /* * Log block chaining. * * Log blocks are chained together. Originally they were chained at the * end of the block. For performance reasons the chain was moved to the * beginning of the block which allows writes for only the data being used. * The older position is supported for backwards compatibility. * * The zio_eck_t contains a zec_cksum which for the intent log is * the sequence number of this log block. A seq of 0 is invalid. * The zec_cksum is checked by the SPA against the sequence * number passed in the blk_cksum field of the blkptr_t */ typedef struct zil_chain { uint64_t zc_pad; blkptr_t zc_next_blk; /* next block in chain */ uint64_t zc_nused; /* bytes in log block used */ zio_eck_t zc_eck; /* block trailer */ } zil_chain_t; #define ZIL_MIN_BLKSZ 4096ULL /* * ziltest is by and large an ugly hack, but very useful in * checking replay without tedious work. * When running ziltest we want to keep all itx's and so maintain * a single list in the zl_itxg[] that uses a high txg: ZILTEST_TXG * We subtract TXG_CONCURRENT_STATES to allow for common code. */ #define ZILTEST_TXG (UINT64_MAX - TXG_CONCURRENT_STATES) /* * The words of a log block checksum. */ #define ZIL_ZC_GUID_0 0 #define ZIL_ZC_GUID_1 1 #define ZIL_ZC_OBJSET 2 #define ZIL_ZC_SEQ 3 typedef enum zil_create { Z_FILE, Z_DIR, Z_XATTRDIR, } zil_create_t; /* * size of xvattr log section. * its composed of lr_attr_t + xvattr bitmap + 2 64 bit timestamps * for create time and a single 64 bit integer for all of the attributes, * and 4 64 bit integers (32 bytes) for the scanstamp. * */ #define ZIL_XVAT_SIZE(mapsize) \ sizeof (lr_attr_t) + (sizeof (uint32_t) * (mapsize - 1)) + \ (sizeof (uint64_t) * 7) /* * Size of ACL in log. The ACE data is padded out to properly align * on 8 byte boundary. */ #define ZIL_ACE_LENGTH(x) (roundup(x, sizeof (uint64_t))) /* * Intent log transaction types and record structures */ #define TX_COMMIT 0 /* Commit marker (no on-disk state) */ #define TX_CREATE 1 /* Create file */ #define TX_MKDIR 2 /* Make directory */ #define TX_MKXATTR 3 /* Make XATTR directory */ #define TX_SYMLINK 4 /* Create symbolic link to a file */ #define TX_REMOVE 5 /* Remove file */ #define TX_RMDIR 6 /* Remove directory */ #define TX_LINK 7 /* Create hard link to a file */ #define TX_RENAME 8 /* Rename a file */ #define TX_WRITE 9 /* File write */ #define TX_TRUNCATE 10 /* Truncate a file */ #define TX_SETATTR 11 /* Set file attributes */ #define TX_ACL_V0 12 /* Set old formatted ACL */ #define TX_ACL 13 /* Set ACL */ #define TX_CREATE_ACL 14 /* create with ACL */ #define TX_CREATE_ATTR 15 /* create + attrs */ #define TX_CREATE_ACL_ATTR 16 /* create with ACL + attrs */ #define TX_MKDIR_ACL 17 /* mkdir with ACL */ #define TX_MKDIR_ATTR 18 /* mkdir with attr */ #define TX_MKDIR_ACL_ATTR 19 /* mkdir with ACL + attrs */ #define TX_WRITE2 20 /* dmu_sync EALREADY write */ #define TX_MAX_TYPE 21 /* Max transaction type */ /* * The transactions for mkdir, symlink, remove, rmdir, link, and rename * may have the following bit set, indicating the original request * specified case-insensitive handling of names. */ #define TX_CI ((uint64_t)0x1 << 63) /* case-insensitive behavior requested */ /* * Transactions for write, truncate, setattr, acl_v0, and acl can be logged * out of order. For convenience in the code, all such records must have * lr_foid at the same offset. */ #define TX_OOO(txtype) \ ((txtype) == TX_WRITE || \ (txtype) == TX_TRUNCATE || \ (txtype) == TX_SETATTR || \ (txtype) == TX_ACL_V0 || \ (txtype) == TX_ACL || \ (txtype) == TX_WRITE2) /* * The number of dnode slots consumed by the object is stored in the 8 * unused upper bits of the object ID. We subtract 1 from the value * stored on disk for compatibility with implementations that don't * support large dnodes. The slot count for a single-slot dnode will * contain 0 for those bits to preserve the log record format for * "small" dnodes. */ #define LR_FOID_GET_SLOTS(oid) (BF64_GET((oid), 56, 8) + 1) #define LR_FOID_SET_SLOTS(oid, x) BF64_SET((oid), 56, 8, (x) - 1) #define LR_FOID_GET_OBJ(oid) BF64_GET((oid), 0, DN_MAX_OBJECT_SHIFT) #define LR_FOID_SET_OBJ(oid, x) BF64_SET((oid), 0, DN_MAX_OBJECT_SHIFT, (x)) /* * Format of log records. * The fields are carefully defined to allow them to be aligned * and sized the same on sparc & intel architectures. * Each log record has a common structure at the beginning. * * The log record on disk (lrc_seq) holds the sequence number of all log * records which is used to ensure we don't replay the same record. */ typedef struct { /* common log record header */ uint64_t lrc_txtype; /* intent log transaction type */ uint64_t lrc_reclen; /* transaction record length */ uint64_t lrc_txg; /* dmu transaction group number */ uint64_t lrc_seq; /* see comment above */ } lr_t; /* * Common start of all out-of-order record types (TX_OOO() above). */ typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_foid; /* object id */ } lr_ooo_t; /* * Handle option extended vattr attributes. * * Whenever new attributes are added the version number * will need to be updated as will code in * zfs_log.c and zfs_replay.c */ typedef struct { uint32_t lr_attr_masksize; /* number of elements in array */ uint32_t lr_attr_bitmap; /* First entry of array */ /* remainder of array and any additional fields */ } lr_attr_t; /* * log record for creates without optional ACL. * This log record does support optional xvattr_t attributes. */ typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_doid; /* object id of directory */ uint64_t lr_foid; /* object id of created file object */ uint64_t lr_mode; /* mode of object */ uint64_t lr_uid; /* uid of object */ uint64_t lr_gid; /* gid of object */ uint64_t lr_gen; /* generation (txg of creation) */ uint64_t lr_crtime[2]; /* creation time */ uint64_t lr_rdev; /* rdev of object to create */ /* name of object to create follows this */ /* for symlinks, link content follows name */ /* for creates with xvattr data, the name follows the xvattr info */ } lr_create_t; /* * FUID ACL record will be an array of ACEs from the original ACL. * If this array includes ephemeral IDs, the record will also include * an array of log-specific FUIDs to replace the ephemeral IDs. * Only one copy of each unique domain will be present, so the log-specific * FUIDs will use an index into a compressed domain table. On replay this * information will be used to construct real FUIDs (and bypass idmap, * since it may not be available). */ /* * Log record for creates with optional ACL * This log record is also used for recording any FUID * information needed for replaying the create. If the * file doesn't have any actual ACEs then the lr_aclcnt * would be zero. * * After lr_acl_flags, there are a lr_acl_bytes number of variable sized ace's. * If create is also setting xvattr's, then acl data follows xvattr. * If ACE FUIDs are needed then they will follow the xvattr_t. Following * the FUIDs will be the domain table information. The FUIDs for the owner * and group will be in lr_create. Name follows ACL data. */ typedef struct { lr_create_t lr_create; /* common create portion */ uint64_t lr_aclcnt; /* number of ACEs in ACL */ uint64_t lr_domcnt; /* number of unique domains */ uint64_t lr_fuidcnt; /* number of real fuids */ uint64_t lr_acl_bytes; /* number of bytes in ACL */ uint64_t lr_acl_flags; /* ACL flags */ } lr_acl_create_t; typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_doid; /* obj id of directory */ /* name of object to remove follows this */ } lr_remove_t; typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_doid; /* obj id of directory */ uint64_t lr_link_obj; /* obj id of link */ /* name of object to link follows this */ } lr_link_t; typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_sdoid; /* obj id of source directory */ uint64_t lr_tdoid; /* obj id of target directory */ /* 2 strings: names of source and destination follow this */ } lr_rename_t; typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_foid; /* file object to write */ uint64_t lr_offset; /* offset to write to */ uint64_t lr_length; /* user data length to write */ uint64_t lr_blkoff; /* no longer used */ blkptr_t lr_blkptr; /* spa block pointer for replay */ /* write data will follow for small writes */ } lr_write_t; typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_foid; /* object id of file to truncate */ uint64_t lr_offset; /* offset to truncate from */ uint64_t lr_length; /* length to truncate */ } lr_truncate_t; typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_foid; /* file object to change attributes */ uint64_t lr_mask; /* mask of attributes to set */ uint64_t lr_mode; /* mode to set */ uint64_t lr_uid; /* uid to set */ uint64_t lr_gid; /* gid to set */ uint64_t lr_size; /* size to set */ uint64_t lr_atime[2]; /* access time */ uint64_t lr_mtime[2]; /* modification time */ /* optional attribute lr_attr_t may be here */ } lr_setattr_t; typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_foid; /* obj id of file */ uint64_t lr_aclcnt; /* number of acl entries */ /* lr_aclcnt number of ace_t entries follow this */ } lr_acl_v0_t; typedef struct { lr_t lr_common; /* common portion of log record */ uint64_t lr_foid; /* obj id of file */ uint64_t lr_aclcnt; /* number of ACEs in ACL */ uint64_t lr_domcnt; /* number of unique domains */ uint64_t lr_fuidcnt; /* number of real fuids */ uint64_t lr_acl_bytes; /* number of bytes in ACL */ uint64_t lr_acl_flags; /* ACL flags */ /* lr_acl_bytes number of variable sized ace's follows */ } lr_acl_t; /* * ZIL structure definitions, interface function prototype and globals. */ /* * Writes are handled in three different ways: * * WR_INDIRECT: * In this mode, if we need to commit the write later, then the block * is immediately written into the file system (using dmu_sync), * and a pointer to the block is put into the log record. * When the txg commits the block is linked in. * This saves additionally writing the data into the log record. * There are a few requirements for this to occur: * - write is greater than zfs/zvol_immediate_write_sz * - not using slogs (as slogs are assumed to always be faster * than writing into the main pool) * - the write occupies only one block * WR_COPIED: * If we know we'll immediately be committing the * transaction (FSYNC or FDSYNC), then we allocate a larger * log record here for the data and copy the data in. * WR_NEED_COPY: * Otherwise we don't allocate a buffer, and *if* we need to * flush the write later then a buffer is allocated and * we retrieve the data using the dmu. */ typedef enum { WR_INDIRECT, /* indirect - a large write (dmu_sync() data */ /* and put blkptr in log, rather than actual data) */ WR_COPIED, /* immediate - data is copied into lr_write_t */ WR_NEED_COPY, /* immediate - data needs to be copied if pushed */ WR_NUM_STATES /* number of states */ } itx_wr_state_t; typedef void (*zil_callback_t)(void *data); typedef struct itx { list_node_t itx_node; /* linkage on zl_itx_list */ void *itx_private; /* type-specific opaque data */ itx_wr_state_t itx_wr_state; /* write state */ uint8_t itx_sync; /* synchronous transaction */ zil_callback_t itx_callback; /* Called when the itx is persistent */ void *itx_callback_data; /* User data for the callback */ size_t itx_size; /* allocated itx structure size */ uint64_t itx_oid; /* object id */ lr_t itx_lr; /* common part of log record */ /* followed by type-specific part of lr_xx_t and its immediate data */ } itx_t; /* * Used for zil kstat. */ typedef struct zil_stats { /* * Number of times a ZIL commit (e.g. fsync) has been requested. */ kstat_named_t zil_commit_count; /* * Number of times the ZIL has been flushed to stable storage. * This is less than zil_commit_count when commits are "merged" * (see the documentation above zil_commit()). */ kstat_named_t zil_commit_writer_count; /* * Number of transactions (reads, writes, renames, etc.) * that have been committed. */ kstat_named_t zil_itx_count; /* * See the documentation for itx_wr_state_t above. * Note that "bytes" accumulates the length of the transactions * (i.e. data), not the actual log record sizes. */ kstat_named_t zil_itx_indirect_count; kstat_named_t zil_itx_indirect_bytes; kstat_named_t zil_itx_copied_count; kstat_named_t zil_itx_copied_bytes; kstat_named_t zil_itx_needcopy_count; kstat_named_t zil_itx_needcopy_bytes; /* * Transactions which have been allocated to the "normal" * (i.e. not slog) storage pool. Note that "bytes" accumulate * the actual log record sizes - which do not include the actual * data in case of indirect writes. */ kstat_named_t zil_itx_metaslab_normal_count; kstat_named_t zil_itx_metaslab_normal_bytes; /* * Transactions which have been allocated to the "slog" storage pool. * If there are no separate log devices, this is the same as the * "normal" pool. */ kstat_named_t zil_itx_metaslab_slog_count; kstat_named_t zil_itx_metaslab_slog_bytes; } zil_stats_t; extern zil_stats_t zil_stats; #define ZIL_STAT_INCR(stat, val) \ atomic_add_64(&zil_stats.stat.value.ui64, (val)); #define ZIL_STAT_BUMP(stat) \ ZIL_STAT_INCR(stat, 1); typedef int zil_parse_blk_func_t(zilog_t *zilog, blkptr_t *bp, void *arg, uint64_t txg); typedef int zil_parse_lr_func_t(zilog_t *zilog, lr_t *lr, void *arg, uint64_t txg); typedef int zil_replay_func_t(void *arg1, void *arg2, boolean_t byteswap); typedef int zil_get_data_t(void *arg, lr_write_t *lr, char *dbuf, struct lwb *lwb, zio_t *zio); extern int zil_parse(zilog_t *zilog, zil_parse_blk_func_t *parse_blk_func, zil_parse_lr_func_t *parse_lr_func, void *arg, uint64_t txg, boolean_t decrypt); extern void zil_init(void); extern void zil_fini(void); extern zilog_t *zil_alloc(objset_t *os, zil_header_t *zh_phys); extern void zil_free(zilog_t *zilog); extern zilog_t *zil_open(objset_t *os, zil_get_data_t *get_data); extern void zil_close(zilog_t *zilog); extern void zil_replay(objset_t *os, void *arg, zil_replay_func_t *replay_func[TX_MAX_TYPE]); extern boolean_t zil_replaying(zilog_t *zilog, dmu_tx_t *tx); extern void zil_destroy(zilog_t *zilog, boolean_t keep_first); extern void zil_destroy_sync(zilog_t *zilog, dmu_tx_t *tx); extern itx_t *zil_itx_create(uint64_t txtype, size_t lrsize); extern void zil_itx_destroy(itx_t *itx); extern void zil_itx_assign(zilog_t *zilog, itx_t *itx, dmu_tx_t *tx); extern void zil_commit(zilog_t *zilog, uint64_t oid); extern void zil_commit_impl(zilog_t *zilog, uint64_t oid); extern int zil_reset(const char *osname, void *txarg); extern int zil_claim(struct dsl_pool *dp, struct dsl_dataset *ds, void *txarg); extern int zil_check_log_chain(struct dsl_pool *dp, struct dsl_dataset *ds, void *tx); extern void zil_sync(zilog_t *zilog, dmu_tx_t *tx); extern void zil_clean(zilog_t *zilog, uint64_t synced_txg); extern int zil_suspend(const char *osname, void **cookiep); extern void zil_resume(void *cookie); extern void zil_lwb_add_block(struct lwb *lwb, const blkptr_t *bp); extern void zil_lwb_add_txg(struct lwb *lwb, uint64_t txg); extern int zil_bp_tree_add(zilog_t *zilog, const blkptr_t *bp); extern void zil_set_sync(zilog_t *zilog, uint64_t syncval); extern void zil_set_logbias(zilog_t *zilog, uint64_t slogval); extern uint64_t zil_max_copied_data(zilog_t *zilog); extern uint64_t zil_max_log_data(zilog_t *zilog); extern int zil_replay_disable; #ifdef __cplusplus } #endif #endif /* _SYS_ZIL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_trim.h0000644000000000000000000000007413607166132020031 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.616430315 zfs-0.8.3/include/sys/vdev_trim.h0000644016037001603700000000315413607166132020031 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2019 Lawrence Livermore National Security, LLC. */ #ifndef _SYS_VDEV_TRIM_H #define _SYS_VDEV_TRIM_H #include #ifdef __cplusplus extern "C" { #endif extern unsigned int zfs_trim_metaslab_skip; extern void vdev_trim(vdev_t *vd, uint64_t rate, boolean_t partial, boolean_t secure); extern void vdev_trim_stop(vdev_t *vd, vdev_trim_state_t tgt, list_t *vd_list); extern void vdev_trim_stop_all(vdev_t *vd, vdev_trim_state_t tgt_state); extern void vdev_trim_stop_wait(spa_t *spa, list_t *vd_list); extern void vdev_trim_restart(vdev_t *vd); extern void vdev_autotrim(spa_t *spa); extern void vdev_autotrim_stop_all(spa_t *spa); extern void vdev_autotrim_stop_wait(vdev_t *vd); extern void vdev_autotrim_restart(spa_t *spa); #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_TRIM_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace.h0000644000000000000000000000007413607166147017136 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.539427842 zfs-0.8.3/include/sys/trace.h0000644016037001603700000000376113607166147017142 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #if !defined(_TRACE_ZFS_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_ZFS_H #include #include /* * The sys/trace_dbgmsg.h header defines tracepoint events for * dprintf(), dbgmsg(), and SET_ERROR(). */ #define _SYS_TRACE_DBGMSG_INDIRECT #include #undef _SYS_TRACE_DBGMSG_INDIRECT /* * Redefine the DTRACE_PROBE* functions to use Linux tracepoints */ #undef DTRACE_PROBE1 #define DTRACE_PROBE1(name, t1, arg1) \ trace_zfs_##name((arg1)) #undef DTRACE_PROBE2 #define DTRACE_PROBE2(name, t1, arg1, t2, arg2) \ trace_zfs_##name((arg1), (arg2)) #undef DTRACE_PROBE3 #define DTRACE_PROBE3(name, t1, arg1, t2, arg2, t3, arg3) \ trace_zfs_##name((arg1), (arg2), (arg3)) #undef DTRACE_PROBE4 #define DTRACE_PROBE4(name, t1, arg1, t2, arg2, t3, arg3, t4, arg4) \ trace_zfs_##name((arg1), (arg2), (arg3), (arg4)) #endif /* _TRACE_ZFS_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_dir.h0000644000000000000000000000007413607166147017500 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.650431407 zfs-0.8.3/include/sys/zfs_dir.h0000644016037001603700000000550113607166147017476 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_FS_ZFS_DIR_H #define _SYS_FS_ZFS_DIR_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* zfs_dirent_lock() flags */ #define ZNEW 0x0001 /* entry should not exist */ #define ZEXISTS 0x0002 /* entry should exist */ #define ZSHARED 0x0004 /* shared access (zfs_dirlook()) */ #define ZXATTR 0x0008 /* we want the xattr dir */ #define ZRENAMING 0x0010 /* znode is being renamed */ #define ZCILOOK 0x0020 /* case-insensitive lookup requested */ #define ZCIEXACT 0x0040 /* c-i requires c-s match (rename) */ #define ZHAVELOCK 0x0080 /* z_name_lock is already held */ /* mknode flags */ #define IS_ROOT_NODE 0x01 /* create a root node */ #define IS_XATTR 0x02 /* create an extended attribute node */ #define IS_TMPFILE 0x04 /* create a tmpfile */ extern int zfs_dirent_lock(zfs_dirlock_t **, znode_t *, char *, znode_t **, int, int *, pathname_t *); extern void zfs_dirent_unlock(zfs_dirlock_t *); extern int zfs_link_create(zfs_dirlock_t *, znode_t *, dmu_tx_t *, int); extern int zfs_link_destroy(zfs_dirlock_t *, znode_t *, dmu_tx_t *, int, boolean_t *); extern int zfs_dirlook(znode_t *, char *, struct inode **, int, int *, pathname_t *); extern void zfs_mknode(znode_t *, vattr_t *, dmu_tx_t *, cred_t *, uint_t, znode_t **, zfs_acl_ids_t *); extern void zfs_rmnode(znode_t *); extern void zfs_dl_name_switch(zfs_dirlock_t *dl, char *new, char **old); extern boolean_t zfs_dirempty(znode_t *); extern void zfs_unlinked_add(znode_t *, dmu_tx_t *); extern void zfs_unlinked_drain(zfsvfs_t *zfsvfs); extern void zfs_unlinked_drain_stop_wait(zfsvfs_t *zfsvfs); extern int zfs_sticky_remove_access(znode_t *, znode_t *, cred_t *cr); extern int zfs_get_xattrdir(znode_t *, struct inode **, cred_t *, int); extern int zfs_make_xattrdir(znode_t *, vattr_t *, struct inode **, cred_t *); #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_DIR_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zio_priority.h0000644000000000000000000000007413607166132020574 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.689432659 zfs-0.8.3/include/sys/zio_priority.h0000644016037001603700000000222113607166132020566 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2014, 2016 by Delphix. All rights reserved. */ #ifndef _ZIO_PRIORITY_H #define _ZIO_PRIORITY_H #ifdef __cplusplus extern "C" { #endif typedef enum zio_priority { ZIO_PRIORITY_SYNC_READ, ZIO_PRIORITY_SYNC_WRITE, /* ZIL */ ZIO_PRIORITY_ASYNC_READ, /* prefetch */ ZIO_PRIORITY_ASYNC_WRITE, /* spa_sync() */ ZIO_PRIORITY_SCRUB, /* asynchronous scrub/resilver reads */ ZIO_PRIORITY_REMOVAL, /* reads/writes for vdev removal */ ZIO_PRIORITY_INITIALIZING, /* initializing I/O */ ZIO_PRIORITY_TRIM, /* trim I/O (discard) */ ZIO_PRIORITY_NUM_QUEUEABLE, ZIO_PRIORITY_NOW, /* non-queued i/os (e.g. free) */ } zio_priority_t; #ifdef __cplusplus } #endif #endif /* _ZIO_PRIORITY_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/policy.h0000644000000000000000000000007413607166147017337 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.502426655 zfs-0.8.3/include/sys/policy.h0000644016037001603700000000431013607166147017332 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2015, Joyent, Inc. All rights reserved. * Copyright (c) 2016, Lawrence Livermore National Security, LLC. */ #ifndef _SYS_POLICY_H #define _SYS_POLICY_H #ifdef _KERNEL #include #include #include #include int secpolicy_nfs(const cred_t *); int secpolicy_sys_config(const cred_t *, boolean_t); int secpolicy_vnode_access2(const cred_t *, struct inode *, uid_t, mode_t, mode_t); int secpolicy_vnode_any_access(const cred_t *, struct inode *, uid_t); int secpolicy_vnode_chown(const cred_t *, uid_t); int secpolicy_vnode_create_gid(const cred_t *); int secpolicy_vnode_remove(const cred_t *); int secpolicy_vnode_setdac(const cred_t *, uid_t); int secpolicy_vnode_setid_retain(const cred_t *, boolean_t); int secpolicy_vnode_setids_setgids(const cred_t *, gid_t); int secpolicy_zinject(const cred_t *); int secpolicy_zfs(const cred_t *); void secpolicy_setid_clear(vattr_t *, cred_t *); int secpolicy_setid_setsticky_clear(struct inode *, vattr_t *, const vattr_t *, cred_t *); int secpolicy_xvattr(xvattr_t *, uid_t, cred_t *, vtype_t); int secpolicy_vnode_setattr(cred_t *, struct inode *, struct vattr *, const struct vattr *, int, int (void *, int, cred_t *), void *); int secpolicy_basic_link(const cred_t *); #endif /* _KERNEL */ #endif /* _SYS_POLICY_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_scan.h0000644000000000000000000000007413612141523017611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.467425532 zfs-0.8.3/include/sys/dsl_scan.h0000644016037001603700000001572413612141523017617 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2017 by Delphix. All rights reserved. * Copyright (c) 2017, 2019, Datto Inc. All rights reserved. */ #ifndef _SYS_DSL_SCAN_H #define _SYS_DSL_SCAN_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct objset; struct dsl_dir; struct dsl_dataset; struct dsl_pool; struct dmu_tx; /* * All members of this structure must be uint64_t, for byteswap * purposes. */ typedef struct dsl_scan_phys { uint64_t scn_func; /* pool_scan_func_t */ uint64_t scn_state; /* dsl_scan_state_t */ uint64_t scn_queue_obj; uint64_t scn_min_txg; uint64_t scn_max_txg; uint64_t scn_cur_min_txg; uint64_t scn_cur_max_txg; uint64_t scn_start_time; uint64_t scn_end_time; uint64_t scn_to_examine; /* total bytes to be scanned */ uint64_t scn_examined; /* bytes scanned so far */ uint64_t scn_to_process; uint64_t scn_processed; uint64_t scn_errors; /* scan I/O error count */ uint64_t scn_ddt_class_max; ddt_bookmark_t scn_ddt_bookmark; zbookmark_phys_t scn_bookmark; uint64_t scn_flags; /* dsl_scan_flags_t */ } dsl_scan_phys_t; #define SCAN_PHYS_NUMINTS (sizeof (dsl_scan_phys_t) / sizeof (uint64_t)) typedef enum dsl_scan_flags { DSF_VISIT_DS_AGAIN = 1<<0, DSF_SCRUB_PAUSED = 1<<1, } dsl_scan_flags_t; #define DSL_SCAN_FLAGS_MASK (DSF_VISIT_DS_AGAIN) /* * Every pool will have one dsl_scan_t and this structure will contain * in-memory information about the scan and a pointer to the on-disk * representation (i.e. dsl_scan_phys_t). Most of the state of the scan * is contained on-disk to allow the scan to resume in the event of a reboot * or panic. This structure maintains information about the behavior of a * running scan, some caching information, and how it should traverse the pool. * * The following members of this structure direct the behavior of the scan: * * scn_suspending - a scan that cannot be completed in a single txg or * has exceeded its allotted time will need to suspend. * When this flag is set the scanner will stop traversing * the pool and write out the current state to disk. * * scn_restart_txg - directs the scanner to either restart or start a * a scan at the specified txg value. * * scn_done_txg - when a scan completes its traversal it will set * the completion txg to the next txg. This is necessary * to ensure that any blocks that were freed during * the scan but have not yet been processed (i.e deferred * frees) are accounted for. * * This structure also maintains information about deferred frees which are * a special kind of traversal. Deferred free can exist in either a bptree or * a bpobj structure. The scn_is_bptree flag will indicate the type of * deferred free that is in progress. If the deferred free is part of an * asynchronous destroy then the scn_async_destroying flag will be set. */ typedef struct dsl_scan { struct dsl_pool *scn_dp; uint64_t scn_restart_txg; uint64_t scn_done_txg; uint64_t scn_sync_start_time; uint64_t scn_issued_before_pass; /* for freeing blocks */ boolean_t scn_is_bptree; boolean_t scn_async_destroying; boolean_t scn_async_stalled; uint64_t scn_async_block_min_time_ms; /* flags and stats for controlling scan state */ boolean_t scn_is_sorted; /* doing sequential scan */ boolean_t scn_clearing; /* scan is issuing sequential extents */ boolean_t scn_checkpointing; /* scan is issuing all queued extents */ boolean_t scn_suspending; /* scan is suspending until next txg */ uint64_t scn_last_checkpoint; /* time of last checkpoint */ /* members for thread synchronization */ zio_t *scn_zio_root; /* root zio for waiting on IO */ taskq_t *scn_taskq; /* task queue for issuing extents */ /* for controlling scan prefetch, protected by spa_scrub_lock */ boolean_t scn_prefetch_stop; /* prefetch should stop */ zbookmark_phys_t scn_prefetch_bookmark; /* prefetch start bookmark */ avl_tree_t scn_prefetch_queue; /* priority queue of prefetch IOs */ uint64_t scn_maxinflight_bytes; /* max bytes in flight for pool */ /* per txg statistics */ uint64_t scn_visited_this_txg; /* total bps visited this txg */ uint64_t scn_holes_this_txg; uint64_t scn_lt_min_this_txg; uint64_t scn_gt_max_this_txg; uint64_t scn_ddt_contained_this_txg; uint64_t scn_objsets_visited_this_txg; uint64_t scn_avg_seg_size_this_txg; uint64_t scn_segs_this_txg; uint64_t scn_avg_zio_size_this_txg; uint64_t scn_zios_this_txg; /* members needed for syncing scan status to disk */ dsl_scan_phys_t scn_phys; /* on disk representation of scan */ dsl_scan_phys_t scn_phys_cached; avl_tree_t scn_queue; /* queue of datasets to scan */ uint64_t scn_bytes_pending; /* outstanding data to issue */ } dsl_scan_t; typedef struct dsl_scan_io_queue dsl_scan_io_queue_t; void scan_init(void); void scan_fini(void); int dsl_scan_init(struct dsl_pool *dp, uint64_t txg); void dsl_scan_fini(struct dsl_pool *dp); void dsl_scan_sync(struct dsl_pool *, dmu_tx_t *); int dsl_scan_cancel(struct dsl_pool *); int dsl_scan(struct dsl_pool *, pool_scan_func_t); void dsl_scan_assess_vdev(struct dsl_pool *dp, vdev_t *vd); boolean_t dsl_scan_scrubbing(const struct dsl_pool *dp); int dsl_scrub_set_pause_resume(const struct dsl_pool *dp, pool_scrub_cmd_t cmd); void dsl_scan_restart_resilver(struct dsl_pool *, uint64_t txg); boolean_t dsl_scan_resilvering(struct dsl_pool *dp); boolean_t dsl_scan_resilver_scheduled(struct dsl_pool *dp); boolean_t dsl_dataset_unstable(struct dsl_dataset *ds); void dsl_scan_ddt_entry(dsl_scan_t *scn, enum zio_checksum checksum, ddt_entry_t *dde, dmu_tx_t *tx); void dsl_scan_ds_destroyed(struct dsl_dataset *ds, struct dmu_tx *tx); void dsl_scan_ds_snapshotted(struct dsl_dataset *ds, struct dmu_tx *tx); void dsl_scan_ds_clone_swapped(struct dsl_dataset *ds1, struct dsl_dataset *ds2, struct dmu_tx *tx); boolean_t dsl_scan_active(dsl_scan_t *scn); boolean_t dsl_scan_is_paused_scrub(const dsl_scan_t *scn); void dsl_scan_freed(spa_t *spa, const blkptr_t *bp); void dsl_scan_io_queue_destroy(dsl_scan_io_queue_t *queue); void dsl_scan_io_queue_vdev_xfer(vdev_t *svd, vdev_t *tvd); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_SCAN_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_file.h0000644000000000000000000000007413607166147020003 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.595429641 zfs-0.8.3/include/sys/vdev_file.h0000644016037001603700000000234713607166147020006 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_VDEV_FILE_H #define _SYS_VDEV_FILE_H #include #ifdef __cplusplus extern "C" { #endif typedef struct vdev_file { vnode_t *vf_vnode; } vdev_file_t; extern void vdev_file_init(void); extern void vdev_file_fini(void); #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_FILE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_ioctl.h0000644000000000000000000000007413607166147020034 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.696432885 zfs-0.8.3/include/sys/zfs_ioctl.h0000644016037001603700000004073113607166147020036 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2017 by Delphix. All rights reserved. * Copyright 2016 RackTop Systems. * Copyright (c) 2017, Intel Corporation. */ #ifndef _SYS_ZFS_IOCTL_H #define _SYS_ZFS_IOCTL_H #include #include #include #include #include #include #ifdef _KERNEL #include #endif /* _KERNEL */ #ifdef __cplusplus extern "C" { #endif /* * The structures in this file are passed between userland and the * kernel. Userland may be running a 32-bit process, while the kernel * is 64-bit. Therefore, these structures need to compile the same in * 32-bit and 64-bit. This means not using type "long", and adding * explicit padding so that the 32-bit structure will not be packed more * tightly than the 64-bit structure (which requires 64-bit alignment). */ /* * Property values for snapdir */ #define ZFS_SNAPDIR_HIDDEN 0 #define ZFS_SNAPDIR_VISIBLE 1 /* * Property values for snapdev */ #define ZFS_SNAPDEV_HIDDEN 0 #define ZFS_SNAPDEV_VISIBLE 1 /* * Property values for acltype */ #define ZFS_ACLTYPE_OFF 0 #define ZFS_ACLTYPE_POSIXACL 1 /* * Field manipulation macros for the drr_versioninfo field of the * send stream header. */ /* * Header types for zfs send streams. */ typedef enum drr_headertype { DMU_SUBSTREAM = 0x1, DMU_COMPOUNDSTREAM = 0x2 } drr_headertype_t; #define DMU_GET_STREAM_HDRTYPE(vi) BF64_GET((vi), 0, 2) #define DMU_SET_STREAM_HDRTYPE(vi, x) BF64_SET((vi), 0, 2, x) #define DMU_GET_FEATUREFLAGS(vi) BF64_GET((vi), 2, 30) #define DMU_SET_FEATUREFLAGS(vi, x) BF64_SET((vi), 2, 30, x) /* * Feature flags for zfs send streams (flags in drr_versioninfo) */ #define DMU_BACKUP_FEATURE_DEDUP (1 << 0) #define DMU_BACKUP_FEATURE_DEDUPPROPS (1 << 1) #define DMU_BACKUP_FEATURE_SA_SPILL (1 << 2) /* flags #3 - #15 are reserved for incompatible closed-source implementations */ #define DMU_BACKUP_FEATURE_EMBED_DATA (1 << 16) #define DMU_BACKUP_FEATURE_LZ4 (1 << 17) /* flag #18 is reserved for a Delphix feature */ #define DMU_BACKUP_FEATURE_LARGE_BLOCKS (1 << 19) #define DMU_BACKUP_FEATURE_RESUMING (1 << 20) /* flag #21 is reserved for the redacted send/receive feature */ #define DMU_BACKUP_FEATURE_COMPRESSED (1 << 22) #define DMU_BACKUP_FEATURE_LARGE_DNODE (1 << 23) #define DMU_BACKUP_FEATURE_RAW (1 << 24) /* flag #25 is reserved for the ZSTD compression feature */ #define DMU_BACKUP_FEATURE_HOLDS (1 << 26) /* * Mask of all supported backup features */ #define DMU_BACKUP_FEATURE_MASK (DMU_BACKUP_FEATURE_DEDUP | \ DMU_BACKUP_FEATURE_DEDUPPROPS | DMU_BACKUP_FEATURE_SA_SPILL | \ DMU_BACKUP_FEATURE_EMBED_DATA | DMU_BACKUP_FEATURE_LZ4 | \ DMU_BACKUP_FEATURE_RESUMING | DMU_BACKUP_FEATURE_LARGE_BLOCKS | \ DMU_BACKUP_FEATURE_COMPRESSED | DMU_BACKUP_FEATURE_LARGE_DNODE | \ DMU_BACKUP_FEATURE_RAW | DMU_BACKUP_FEATURE_HOLDS) /* Are all features in the given flag word currently supported? */ #define DMU_STREAM_SUPPORTED(x) (!((x) & ~DMU_BACKUP_FEATURE_MASK)) typedef enum dmu_send_resume_token_version { ZFS_SEND_RESUME_TOKEN_VERSION = 1 } dmu_send_resume_token_version_t; /* * The drr_versioninfo field of the dmu_replay_record has the * following layout: * * 64 56 48 40 32 24 16 8 0 * +-------+-------+-------+-------+-------+-------+-------+-------+ * | reserved | feature-flags |C|S| * +-------+-------+-------+-------+-------+-------+-------+-------+ * * The low order two bits indicate the header type: SUBSTREAM (0x1) * or COMPOUNDSTREAM (0x2). Using two bits for this is historical: * this field used to be a version number, where the two version types * were 1 and 2. Using two bits for this allows earlier versions of * the code to be able to recognize send streams that don't use any * of the features indicated by feature flags. */ #define DMU_BACKUP_MAGIC 0x2F5bacbacULL /* * Send stream flags. Bits 24-31 are reserved for vendor-specific * implementations and should not be used. */ #define DRR_FLAG_CLONE (1<<0) #define DRR_FLAG_CI_DATA (1<<1) /* * This send stream, if it is a full send, includes the FREE and FREEOBJECT * records that are created by the sending process. This means that the send * stream can be received as a clone, even though it is not an incremental. * This is not implemented as a feature flag, because the receiving side does * not need to have implemented it to receive this stream; it is fully backwards * compatible. We need a flag, though, because full send streams without it * cannot necessarily be received as a clone correctly. */ #define DRR_FLAG_FREERECORDS (1<<2) /* * When DRR_FLAG_SPILL_BLOCK is set it indicates the DRR_OBJECT_SPILL * and DRR_SPILL_UNMODIFIED flags are meaningful in the send stream. * * When DRR_FLAG_SPILL_BLOCK is set, DRR_OBJECT records will have * DRR_OBJECT_SPILL set if and only if they should have a spill block * (either an existing one, or a new one in the send stream). When clear * the object does not have a spill block and any existing spill block * should be freed. * * Similarly, when DRR_FLAG_SPILL_BLOCK is set, DRR_SPILL records will * have DRR_SPILL_UNMODIFIED set if and only if they were included for * backward compatibility purposes, and can be safely ignored by new versions * of zfs receive. Previous versions of ZFS which do not understand the * DRR_FLAG_SPILL_BLOCK will process this record and recreate any missing * spill blocks. */ #define DRR_FLAG_SPILL_BLOCK (1<<3) /* * flags in the drr_flags field in the DRR_WRITE, DRR_SPILL, DRR_OBJECT, * DRR_WRITE_BYREF, and DRR_OBJECT_RANGE blocks */ #define DRR_CHECKSUM_DEDUP (1<<0) /* not used for SPILL records */ #define DRR_RAW_BYTESWAP (1<<1) #define DRR_OBJECT_SPILL (1<<2) /* OBJECT record has a spill block */ #define DRR_SPILL_UNMODIFIED (1<<2) /* SPILL record for unmodified block */ #define DRR_IS_DEDUP_CAPABLE(flags) ((flags) & DRR_CHECKSUM_DEDUP) #define DRR_IS_RAW_BYTESWAPPED(flags) ((flags) & DRR_RAW_BYTESWAP) #define DRR_OBJECT_HAS_SPILL(flags) ((flags) & DRR_OBJECT_SPILL) #define DRR_SPILL_IS_UNMODIFIED(flags) ((flags) & DRR_SPILL_UNMODIFIED) /* deal with compressed drr_write replay records */ #define DRR_WRITE_COMPRESSED(drrw) ((drrw)->drr_compressiontype != 0) #define DRR_WRITE_PAYLOAD_SIZE(drrw) \ (DRR_WRITE_COMPRESSED(drrw) ? (drrw)->drr_compressed_size : \ (drrw)->drr_logical_size) #define DRR_SPILL_PAYLOAD_SIZE(drrs) \ ((drrs)->drr_compressed_size ? \ (drrs)->drr_compressed_size : (drrs)->drr_length) #define DRR_OBJECT_PAYLOAD_SIZE(drro) \ ((drro)->drr_raw_bonuslen != 0 ? \ (drro)->drr_raw_bonuslen : P2ROUNDUP((drro)->drr_bonuslen, 8)) /* * zfs ioctl command structure */ typedef struct dmu_replay_record { enum { DRR_BEGIN, DRR_OBJECT, DRR_FREEOBJECTS, DRR_WRITE, DRR_FREE, DRR_END, DRR_WRITE_BYREF, DRR_SPILL, DRR_WRITE_EMBEDDED, DRR_OBJECT_RANGE, DRR_NUMTYPES } drr_type; uint32_t drr_payloadlen; union { struct drr_begin { uint64_t drr_magic; uint64_t drr_versioninfo; /* was drr_version */ uint64_t drr_creation_time; dmu_objset_type_t drr_type; uint32_t drr_flags; uint64_t drr_toguid; uint64_t drr_fromguid; char drr_toname[MAXNAMELEN]; } drr_begin; struct drr_end { zio_cksum_t drr_checksum; uint64_t drr_toguid; } drr_end; struct drr_object { uint64_t drr_object; dmu_object_type_t drr_type; dmu_object_type_t drr_bonustype; uint32_t drr_blksz; uint32_t drr_bonuslen; uint8_t drr_checksumtype; uint8_t drr_compress; uint8_t drr_dn_slots; uint8_t drr_flags; uint32_t drr_raw_bonuslen; uint64_t drr_toguid; /* only (possibly) nonzero for raw streams */ uint8_t drr_indblkshift; uint8_t drr_nlevels; uint8_t drr_nblkptr; uint8_t drr_pad[5]; uint64_t drr_maxblkid; /* bonus content follows */ } drr_object; struct drr_freeobjects { uint64_t drr_firstobj; uint64_t drr_numobjs; uint64_t drr_toguid; } drr_freeobjects; struct drr_write { uint64_t drr_object; dmu_object_type_t drr_type; uint32_t drr_pad; uint64_t drr_offset; uint64_t drr_logical_size; uint64_t drr_toguid; uint8_t drr_checksumtype; uint8_t drr_flags; uint8_t drr_compressiontype; uint8_t drr_pad2[5]; /* deduplication key */ ddt_key_t drr_key; /* only nonzero if drr_compressiontype is not 0 */ uint64_t drr_compressed_size; /* only nonzero for raw streams */ uint8_t drr_salt[ZIO_DATA_SALT_LEN]; uint8_t drr_iv[ZIO_DATA_IV_LEN]; uint8_t drr_mac[ZIO_DATA_MAC_LEN]; /* content follows */ } drr_write; struct drr_free { uint64_t drr_object; uint64_t drr_offset; uint64_t drr_length; uint64_t drr_toguid; } drr_free; struct drr_write_byref { /* where to put the data */ uint64_t drr_object; uint64_t drr_offset; uint64_t drr_length; uint64_t drr_toguid; /* where to find the prior copy of the data */ uint64_t drr_refguid; uint64_t drr_refobject; uint64_t drr_refoffset; /* properties of the data */ uint8_t drr_checksumtype; uint8_t drr_flags; uint8_t drr_pad2[6]; ddt_key_t drr_key; /* deduplication key */ } drr_write_byref; struct drr_spill { uint64_t drr_object; uint64_t drr_length; uint64_t drr_toguid; uint8_t drr_flags; uint8_t drr_compressiontype; uint8_t drr_pad[6]; /* only nonzero for raw streams */ uint64_t drr_compressed_size; uint8_t drr_salt[ZIO_DATA_SALT_LEN]; uint8_t drr_iv[ZIO_DATA_IV_LEN]; uint8_t drr_mac[ZIO_DATA_MAC_LEN]; dmu_object_type_t drr_type; /* spill data follows */ } drr_spill; struct drr_write_embedded { uint64_t drr_object; uint64_t drr_offset; /* logical length, should equal blocksize */ uint64_t drr_length; uint64_t drr_toguid; uint8_t drr_compression; uint8_t drr_etype; uint8_t drr_pad[6]; uint32_t drr_lsize; /* uncompressed size of payload */ uint32_t drr_psize; /* compr. (real) size of payload */ /* (possibly compressed) content follows */ } drr_write_embedded; struct drr_object_range { uint64_t drr_firstobj; uint64_t drr_numslots; uint64_t drr_toguid; uint8_t drr_salt[ZIO_DATA_SALT_LEN]; uint8_t drr_iv[ZIO_DATA_IV_LEN]; uint8_t drr_mac[ZIO_DATA_MAC_LEN]; uint8_t drr_flags; uint8_t drr_pad[3]; } drr_object_range; /* * Nore: drr_checksum is overlaid with all record types * except DRR_BEGIN. Therefore its (non-pad) members * must not overlap with members from the other structs. * We accomplish this by putting its members at the very * end of the struct. */ struct drr_checksum { uint64_t drr_pad[34]; /* * fletcher-4 checksum of everything preceding the * checksum. */ zio_cksum_t drr_checksum; } drr_checksum; } drr_u; } dmu_replay_record_t; /* diff record range types */ typedef enum diff_type { DDR_NONE = 0x1, DDR_INUSE = 0x2, DDR_FREE = 0x4 } diff_type_t; /* * The diff reports back ranges of free or in-use objects. */ typedef struct dmu_diff_record { uint64_t ddr_type; uint64_t ddr_first; uint64_t ddr_last; } dmu_diff_record_t; typedef struct zinject_record { uint64_t zi_objset; uint64_t zi_object; uint64_t zi_start; uint64_t zi_end; uint64_t zi_guid; uint32_t zi_level; uint32_t zi_error; uint64_t zi_type; uint32_t zi_freq; uint32_t zi_failfast; char zi_func[MAXNAMELEN]; uint32_t zi_iotype; int32_t zi_duration; uint64_t zi_timer; uint64_t zi_nlanes; uint32_t zi_cmd; uint32_t zi_dvas; } zinject_record_t; #define ZINJECT_NULL 0x1 #define ZINJECT_FLUSH_ARC 0x2 #define ZINJECT_UNLOAD_SPA 0x4 #define ZINJECT_CALC_RANGE 0x8 #define ZEVENT_NONE 0x0 #define ZEVENT_NONBLOCK 0x1 #define ZEVENT_SIZE 1024 #define ZEVENT_SEEK_START 0 #define ZEVENT_SEEK_END UINT64_MAX /* scaled frequency ranges */ #define ZI_PERCENTAGE_MIN 4294UL #define ZI_PERCENTAGE_MAX UINT32_MAX #define ZI_NO_DVA (-1) typedef enum zinject_type { ZINJECT_UNINITIALIZED, ZINJECT_DATA_FAULT, ZINJECT_DEVICE_FAULT, ZINJECT_LABEL_FAULT, ZINJECT_IGNORED_WRITES, ZINJECT_PANIC, ZINJECT_DELAY_IO, ZINJECT_DECRYPT_FAULT, } zinject_type_t; typedef struct zfs_share { uint64_t z_exportdata; uint64_t z_sharedata; uint64_t z_sharetype; /* 0 = share, 1 = unshare */ uint64_t z_sharemax; /* max length of share string */ } zfs_share_t; /* * ZFS file systems may behave the usual, POSIX-compliant way, where * name lookups are case-sensitive. They may also be set up so that * all the name lookups are case-insensitive, or so that only some * lookups, the ones that set an FIGNORECASE flag, are case-insensitive. */ typedef enum zfs_case { ZFS_CASE_SENSITIVE, ZFS_CASE_INSENSITIVE, ZFS_CASE_MIXED } zfs_case_t; /* * Note: this struct must have the same layout in 32-bit and 64-bit, so * that 32-bit processes (like /sbin/zfs) can pass it to the 64-bit * kernel. Therefore, we add padding to it so that no "hidden" padding * is automatically added on 64-bit (but not on 32-bit). */ typedef struct zfs_cmd { char zc_name[MAXPATHLEN]; /* name of pool or dataset */ uint64_t zc_nvlist_src; /* really (char *) */ uint64_t zc_nvlist_src_size; uint64_t zc_nvlist_dst; /* really (char *) */ uint64_t zc_nvlist_dst_size; boolean_t zc_nvlist_dst_filled; /* put an nvlist in dst? */ int zc_pad2; /* * The following members are for legacy ioctls which haven't been * converted to the new method. */ uint64_t zc_history; /* really (char *) */ char zc_value[MAXPATHLEN * 2]; char zc_string[MAXNAMELEN]; uint64_t zc_guid; uint64_t zc_nvlist_conf; /* really (char *) */ uint64_t zc_nvlist_conf_size; uint64_t zc_cookie; uint64_t zc_objset_type; uint64_t zc_perm_action; uint64_t zc_history_len; uint64_t zc_history_offset; uint64_t zc_obj; uint64_t zc_iflags; /* internal to zfs(7fs) */ zfs_share_t zc_share; dmu_objset_stats_t zc_objset_stats; struct drr_begin zc_begin_record; zinject_record_t zc_inject_record; uint32_t zc_defer_destroy; uint32_t zc_flags; uint64_t zc_action_handle; int zc_cleanup_fd; uint8_t zc_simple; uint8_t zc_pad[3]; /* alignment */ uint64_t zc_sendobj; uint64_t zc_fromobj; uint64_t zc_createtxg; zfs_stat_t zc_stat; } zfs_cmd_t; typedef struct zfs_useracct { char zu_domain[256]; uid_t zu_rid; uint32_t zu_pad; uint64_t zu_space; } zfs_useracct_t; #define ZFSDEV_MAX_MINOR (1 << 16) #define ZFS_MIN_MINOR (ZFSDEV_MAX_MINOR + 1) #define ZPOOL_EXPORT_AFTER_SPLIT 0x1 #ifdef _KERNEL struct objset; struct zfsvfs; typedef struct zfs_creat { nvlist_t *zct_zplprops; nvlist_t *zct_props; } zfs_creat_t; extern int zfs_secpolicy_snapshot_perms(const char *, cred_t *); extern int zfs_secpolicy_rename_perms(const char *, const char *, cred_t *); extern int zfs_secpolicy_destroy_perms(const char *, cred_t *); extern void zfs_unmount_snap(const char *); extern void zfs_destroy_unmount_origin(const char *); extern int getzfsvfs_impl(struct objset *, struct zfsvfs **); extern int getzfsvfs(const char *, struct zfsvfs **); enum zfsdev_state_type { ZST_ONEXIT, ZST_ZEVENT, ZST_ALL, }; /* * The zfsdev_state_t structure is managed as a singly-linked list * from which items are never deleted. This allows for lock-free * reading of the list so long as assignments to the zs_next and * reads from zs_minor are performed atomically. Empty items are * indicated by storing -1 into zs_minor. */ typedef struct zfsdev_state { struct zfsdev_state *zs_next; /* next zfsdev_state_t link */ struct file *zs_file; /* associated file struct */ minor_t zs_minor; /* made up minor number */ void *zs_onexit; /* onexit data */ void *zs_zevent; /* zevent data */ } zfsdev_state_t; extern void *zfsdev_get_state(minor_t minor, enum zfsdev_state_type which); extern int zfsdev_getminor(struct file *filp, minor_t *minorp); extern minor_t zfsdev_minor_alloc(void); #endif /* _KERNEL */ #ifdef __cplusplus } #endif #endif /* _SYS_ZFS_IOCTL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_rlock.h0000644000000000000000000000007413612141516020021 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.658431665 zfs-0.8.3/include/sys/zfs_rlock.h0000644016037001603700000000456513612141516020030 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2018 by Delphix. All rights reserved. */ #ifndef _SYS_FS_ZFS_RLOCK_H #define _SYS_FS_ZFS_RLOCK_H #ifdef __cplusplus extern "C" { #endif #include typedef enum { RL_READER, RL_WRITER, RL_APPEND } rangelock_type_t; struct locked_range; typedef void (rangelock_cb_t)(struct locked_range *, void *); typedef struct rangelock { avl_tree_t rl_tree; /* contains locked_range_t */ kmutex_t rl_lock; rangelock_cb_t *rl_cb; void *rl_arg; } rangelock_t; typedef struct locked_range { rangelock_t *lr_rangelock; /* rangelock that this lock applies to */ avl_node_t lr_node; /* avl node link */ uint64_t lr_offset; /* file range offset */ uint64_t lr_length; /* file range length */ uint_t lr_count; /* range reference count in tree */ rangelock_type_t lr_type; /* range type */ kcondvar_t lr_write_cv; /* cv for waiting writers */ kcondvar_t lr_read_cv; /* cv for waiting readers */ uint8_t lr_proxy; /* acting for original range */ uint8_t lr_write_wanted; /* writer wants to lock this range */ uint8_t lr_read_wanted; /* reader wants to lock this range */ } locked_range_t; void zfs_rangelock_init(rangelock_t *, rangelock_cb_t *, void *); void zfs_rangelock_fini(rangelock_t *); locked_range_t *zfs_rangelock_enter(rangelock_t *, uint64_t, uint64_t, rangelock_type_t); void zfs_rangelock_exit(locked_range_t *); void zfs_rangelock_reduce(locked_range_t *, uint64_t, uint64_t); #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_RLOCK_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/refcount.h0000644000000000000000000000007413612141511017645 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.507426815 zfs-0.8.3/include/sys/refcount.h0000644016037001603700000001021513612141511017641 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2015 by Delphix. All rights reserved. */ #ifndef _SYS_REFCOUNT_H #define _SYS_REFCOUNT_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* * If the reference is held only by the calling function and not any * particular object, use FTAG (which is a string) for the holder_tag. * Otherwise, use the object that holds the reference. */ #define FTAG ((char *)(uintptr_t)__func__) #ifdef ZFS_DEBUG typedef struct reference { list_node_t ref_link; const void *ref_holder; uint64_t ref_number; uint8_t *ref_removed; } reference_t; typedef struct refcount { kmutex_t rc_mtx; boolean_t rc_tracked; list_t rc_list; list_t rc_removed; uint64_t rc_count; uint64_t rc_removed_count; } zfs_refcount_t; /* * Note: zfs_refcount_t must be initialized with * refcount_create[_untracked]() */ void zfs_refcount_create(zfs_refcount_t *); void zfs_refcount_create_untracked(zfs_refcount_t *); void zfs_refcount_create_tracked(zfs_refcount_t *); void zfs_refcount_destroy(zfs_refcount_t *); void zfs_refcount_destroy_many(zfs_refcount_t *, uint64_t); int zfs_refcount_is_zero(zfs_refcount_t *); int64_t zfs_refcount_count(zfs_refcount_t *); int64_t zfs_refcount_add(zfs_refcount_t *, const void *); int64_t zfs_refcount_remove(zfs_refcount_t *, const void *); int64_t zfs_refcount_add_many(zfs_refcount_t *, uint64_t, const void *); int64_t zfs_refcount_remove_many(zfs_refcount_t *, uint64_t, const void *); void zfs_refcount_transfer(zfs_refcount_t *, zfs_refcount_t *); void zfs_refcount_transfer_ownership(zfs_refcount_t *, const void *, const void *); void zfs_refcount_transfer_ownership_many(zfs_refcount_t *, uint64_t, const void *, const void *); boolean_t zfs_refcount_held(zfs_refcount_t *, const void *); boolean_t zfs_refcount_not_held(zfs_refcount_t *, const void *); void zfs_refcount_init(void); void zfs_refcount_fini(void); #else /* ZFS_DEBUG */ typedef struct refcount { uint64_t rc_count; } zfs_refcount_t; #define zfs_refcount_create(rc) ((rc)->rc_count = 0) #define zfs_refcount_create_untracked(rc) ((rc)->rc_count = 0) #define zfs_refcount_create_tracked(rc) ((rc)->rc_count = 0) #define zfs_refcount_destroy(rc) ((rc)->rc_count = 0) #define zfs_refcount_destroy_many(rc, number) ((rc)->rc_count = 0) #define zfs_refcount_is_zero(rc) ((rc)->rc_count == 0) #define zfs_refcount_count(rc) ((rc)->rc_count) #define zfs_refcount_add(rc, holder) atomic_inc_64_nv(&(rc)->rc_count) #define zfs_refcount_remove(rc, holder) atomic_dec_64_nv(&(rc)->rc_count) #define zfs_refcount_add_many(rc, number, holder) \ atomic_add_64_nv(&(rc)->rc_count, number) #define zfs_refcount_remove_many(rc, number, holder) \ atomic_add_64_nv(&(rc)->rc_count, -number) #define zfs_refcount_transfer(dst, src) { \ uint64_t __tmp = (src)->rc_count; \ atomic_add_64(&(src)->rc_count, -__tmp); \ atomic_add_64(&(dst)->rc_count, __tmp); \ } #define zfs_refcount_transfer_ownership(rc, ch, nh) ((void)0) #define zfs_refcount_transfer_ownership_many(rc, nr, ch, nh) ((void)0) #define zfs_refcount_held(rc, holder) ((rc)->rc_count > 0) #define zfs_refcount_not_held(rc, holder) (B_TRUE) #define zfs_refcount_init() #define zfs_refcount_fini() #endif /* ZFS_DEBUG */ #ifdef __cplusplus } #endif #endif /* _SYS_REFCOUNT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_context.h0000644000000000000000000000007413612141510020365 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.641431118 zfs-0.8.3/include/sys/zfs_context.h0000644016037001603700000005355013612141510020372 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, 2016 by Delphix. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ #ifndef _SYS_ZFS_CONTEXT_H #define _SYS_ZFS_CONTEXT_H #ifdef __KERNEL__ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #else /* _KERNEL */ #define _SYS_MUTEX_H #define _SYS_RWLOCK_H #define _SYS_CONDVAR_H #define _SYS_VNODE_H #define _SYS_VFS_H #define _SYS_SUNDDI_H #define _SYS_CALLB_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* * Stack */ #define noinline __attribute__((noinline)) #define likely(x) __builtin_expect((x), 1) /* * Debugging */ /* * Note that we are not using the debugging levels. */ #define CE_CONT 0 /* continuation */ #define CE_NOTE 1 /* notice */ #define CE_WARN 2 /* warning */ #define CE_PANIC 3 /* panic */ #define CE_IGNORE 4 /* print nothing */ /* * ZFS debugging */ extern void dprintf_setup(int *argc, char **argv); extern void cmn_err(int, const char *, ...); extern void vcmn_err(int, const char *, va_list); extern void panic(const char *, ...) __NORETURN; extern void vpanic(const char *, va_list) __NORETURN; #define fm_panic panic extern int aok; /* * DTrace SDT probes have different signatures in userland than they do in * the kernel. If they're being used in kernel code, re-define them out of * existence for their counterparts in libzpool. * * Here's an example of how to use the set-error probes in userland: * zfs$target:::set-error /arg0 == EBUSY/ {stack();} * * Here's an example of how to use DTRACE_PROBE probes in userland: * If there is a probe declared as follows: * DTRACE_PROBE2(zfs__probe_name, uint64_t, blkid, dnode_t *, dn); * Then you can use it as follows: * zfs$target:::probe2 /copyinstr(arg0) == "zfs__probe_name"/ * {printf("%u %p\n", arg1, arg2);} */ #ifdef DTRACE_PROBE #undef DTRACE_PROBE #endif /* DTRACE_PROBE */ #define DTRACE_PROBE(a) \ ZFS_PROBE0(#a) #ifdef DTRACE_PROBE1 #undef DTRACE_PROBE1 #endif /* DTRACE_PROBE1 */ #define DTRACE_PROBE1(a, b, c) \ ZFS_PROBE1(#a, (unsigned long)c) #ifdef DTRACE_PROBE2 #undef DTRACE_PROBE2 #endif /* DTRACE_PROBE2 */ #define DTRACE_PROBE2(a, b, c, d, e) \ ZFS_PROBE2(#a, (unsigned long)c, (unsigned long)e) #ifdef DTRACE_PROBE3 #undef DTRACE_PROBE3 #endif /* DTRACE_PROBE3 */ #define DTRACE_PROBE3(a, b, c, d, e, f, g) \ ZFS_PROBE3(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g) #ifdef DTRACE_PROBE4 #undef DTRACE_PROBE4 #endif /* DTRACE_PROBE4 */ #define DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) \ ZFS_PROBE4(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g, \ (unsigned long)i) /* * Threads. */ typedef pthread_t kthread_t; #define TS_RUN 0x00000002 #define TS_JOINABLE 0x00000004 #define curthread ((void *)(uintptr_t)pthread_self()) #define kpreempt(x) yield() #define getcomm() "unknown" #define thread_create(stk, stksize, func, arg, len, pp, state, pri) \ zk_thread_create(func, arg, stksize, state) #define thread_exit() pthread_exit(NULL) #define thread_join(t) pthread_join((pthread_t)(t), NULL) #define newproc(f, a, cid, pri, ctp, pid) (ENOSYS) /* in libzpool, p0 exists only to have its address taken */ typedef struct proc { uintptr_t this_is_never_used_dont_dereference_it; } proc_t; extern struct proc p0; #define curproc (&p0) #define PS_NONE -1 extern kthread_t *zk_thread_create(void (*func)(void *), void *arg, size_t stksize, int state); #define issig(why) (FALSE) #define ISSIG(thr, why) (FALSE) #define kpreempt_disable() ((void)0) #define kpreempt_enable() ((void)0) #define cond_resched() sched_yield() /* * Mutexes */ typedef struct kmutex { pthread_mutex_t m_lock; pthread_t m_owner; } kmutex_t; #define MUTEX_DEFAULT 0 #define MUTEX_NOLOCKDEP MUTEX_DEFAULT #define MUTEX_HELD(mp) pthread_equal((mp)->m_owner, pthread_self()) #define MUTEX_NOT_HELD(mp) !MUTEX_HELD(mp) extern void mutex_init(kmutex_t *mp, char *name, int type, void *cookie); extern void mutex_destroy(kmutex_t *mp); extern void mutex_enter(kmutex_t *mp); extern void mutex_exit(kmutex_t *mp); extern int mutex_tryenter(kmutex_t *mp); #define NESTED_SINGLE 1 #define mutex_enter_nested(mp, class) mutex_enter(mp) /* * RW locks */ typedef struct krwlock { pthread_rwlock_t rw_lock; pthread_t rw_owner; uint_t rw_readers; } krwlock_t; typedef int krw_t; #define RW_READER 0 #define RW_WRITER 1 #define RW_DEFAULT RW_READER #define RW_NOLOCKDEP RW_READER #define RW_READ_HELD(rw) ((rw)->rw_readers > 0) #define RW_WRITE_HELD(rw) pthread_equal((rw)->rw_owner, pthread_self()) #define RW_LOCK_HELD(rw) (RW_READ_HELD(rw) || RW_WRITE_HELD(rw)) extern void rw_init(krwlock_t *rwlp, char *name, int type, void *arg); extern void rw_destroy(krwlock_t *rwlp); extern void rw_enter(krwlock_t *rwlp, krw_t rw); extern int rw_tryenter(krwlock_t *rwlp, krw_t rw); extern int rw_tryupgrade(krwlock_t *rwlp); extern void rw_exit(krwlock_t *rwlp); #define rw_downgrade(rwlp) do { } while (0) /* * Credentials */ extern uid_t crgetuid(cred_t *cr); extern uid_t crgetruid(cred_t *cr); extern gid_t crgetgid(cred_t *cr); extern int crgetngroups(cred_t *cr); extern gid_t *crgetgroups(cred_t *cr); /* * Condition variables */ typedef pthread_cond_t kcondvar_t; #define CV_DEFAULT 0 #define CALLOUT_FLAG_ABSOLUTE 0x2 extern void cv_init(kcondvar_t *cv, char *name, int type, void *arg); extern void cv_destroy(kcondvar_t *cv); extern void cv_wait(kcondvar_t *cv, kmutex_t *mp); extern int cv_wait_sig(kcondvar_t *cv, kmutex_t *mp); extern clock_t cv_timedwait(kcondvar_t *cv, kmutex_t *mp, clock_t abstime); extern clock_t cv_timedwait_hires(kcondvar_t *cvp, kmutex_t *mp, hrtime_t tim, hrtime_t res, int flag); extern void cv_signal(kcondvar_t *cv); extern void cv_broadcast(kcondvar_t *cv); #define cv_timedwait_io(cv, mp, at) cv_timedwait(cv, mp, at) #define cv_timedwait_sig(cv, mp, at) cv_timedwait(cv, mp, at) #define cv_wait_io(cv, mp) cv_wait(cv, mp) #define cv_wait_io_sig(cv, mp) cv_wait_sig(cv, mp) #define cv_timedwait_sig_hires(cv, mp, t, r, f) \ cv_timedwait_hires(cv, mp, t, r, f) /* * Thread-specific data */ #define tsd_get(k) pthread_getspecific(k) #define tsd_set(k, v) pthread_setspecific(k, v) #define tsd_create(kp, d) pthread_key_create(kp, d) #define tsd_destroy(kp) /* nothing */ /* * Thread-specific data */ #define tsd_get(k) pthread_getspecific(k) #define tsd_set(k, v) pthread_setspecific(k, v) #define tsd_create(kp, d) pthread_key_create(kp, d) #define tsd_destroy(kp) /* nothing */ /* * kstat creation, installation and deletion */ extern kstat_t *kstat_create(const char *, int, const char *, const char *, uchar_t, ulong_t, uchar_t); extern void kstat_named_init(kstat_named_t *, const char *, uchar_t); extern void kstat_install(kstat_t *); extern void kstat_delete(kstat_t *); extern void kstat_waitq_enter(kstat_io_t *); extern void kstat_waitq_exit(kstat_io_t *); extern void kstat_runq_enter(kstat_io_t *); extern void kstat_runq_exit(kstat_io_t *); extern void kstat_waitq_to_runq(kstat_io_t *); extern void kstat_runq_back_to_waitq(kstat_io_t *); extern void kstat_set_raw_ops(kstat_t *ksp, int (*headers)(char *buf, size_t size), int (*data)(char *buf, size_t size, void *data), void *(*addr)(kstat_t *ksp, loff_t index)); /* * procfs list manipulation */ struct seq_file { }; void seq_printf(struct seq_file *m, const char *fmt, ...); typedef struct procfs_list { void *pl_private; kmutex_t pl_lock; list_t pl_list; uint64_t pl_next_id; size_t pl_node_offset; } procfs_list_t; typedef struct procfs_list_node { list_node_t pln_link; uint64_t pln_id; } procfs_list_node_t; void procfs_list_install(const char *module, const char *name, mode_t mode, procfs_list_t *procfs_list, int (*show)(struct seq_file *f, void *p), int (*show_header)(struct seq_file *f), int (*clear)(procfs_list_t *procfs_list), size_t procfs_list_node_off); void procfs_list_uninstall(procfs_list_t *procfs_list); void procfs_list_destroy(procfs_list_t *procfs_list); void procfs_list_add(procfs_list_t *procfs_list, void *p); /* * Kernel memory */ #define KM_SLEEP UMEM_NOFAIL #define KM_PUSHPAGE KM_SLEEP #define KM_NOSLEEP UMEM_DEFAULT #define KM_NORMALPRI 0 /* not needed with UMEM_DEFAULT */ #define KMC_NODEBUG UMC_NODEBUG #define KMC_KMEM 0x0 #define KMC_VMEM 0x0 #define kmem_alloc(_s, _f) umem_alloc(_s, _f) #define kmem_zalloc(_s, _f) umem_zalloc(_s, _f) #define kmem_free(_b, _s) umem_free(_b, _s) #define vmem_alloc(_s, _f) kmem_alloc(_s, _f) #define vmem_zalloc(_s, _f) kmem_zalloc(_s, _f) #define vmem_free(_b, _s) kmem_free(_b, _s) #define kmem_cache_create(_a, _b, _c, _d, _e, _f, _g, _h, _i) \ umem_cache_create(_a, _b, _c, _d, _e, _f, _g, _h, _i) #define kmem_cache_destroy(_c) umem_cache_destroy(_c) #define kmem_cache_alloc(_c, _f) umem_cache_alloc(_c, _f) #define kmem_cache_free(_c, _b) umem_cache_free(_c, _b) #define kmem_debugging() 0 #define kmem_cache_reap_now(_c) umem_cache_reap_now(_c); #define kmem_cache_set_move(_c, _cb) /* nothing */ #define vmem_qcache_reap(_v) /* nothing */ #define POINTER_INVALIDATE(_pp) /* nothing */ #define POINTER_IS_VALID(_p) 0 extern vmem_t *zio_arena; typedef umem_cache_t kmem_cache_t; typedef enum kmem_cbrc { KMEM_CBRC_YES, KMEM_CBRC_NO, KMEM_CBRC_LATER, KMEM_CBRC_DONT_NEED, KMEM_CBRC_DONT_KNOW } kmem_cbrc_t; /* * Task queues */ #define TASKQ_NAMELEN 31 typedef uintptr_t taskqid_t; typedef void (task_func_t)(void *); typedef struct taskq_ent { struct taskq_ent *tqent_next; struct taskq_ent *tqent_prev; task_func_t *tqent_func; void *tqent_arg; uintptr_t tqent_flags; } taskq_ent_t; typedef struct taskq { char tq_name[TASKQ_NAMELEN + 1]; kmutex_t tq_lock; krwlock_t tq_threadlock; kcondvar_t tq_dispatch_cv; kcondvar_t tq_wait_cv; kthread_t **tq_threadlist; int tq_flags; int tq_active; int tq_nthreads; int tq_nalloc; int tq_minalloc; int tq_maxalloc; kcondvar_t tq_maxalloc_cv; int tq_maxalloc_wait; taskq_ent_t *tq_freelist; taskq_ent_t tq_task; } taskq_t; #define TQENT_FLAG_PREALLOC 0x1 /* taskq_dispatch_ent used */ #define TASKQ_PREPOPULATE 0x0001 #define TASKQ_CPR_SAFE 0x0002 /* Use CPR safe protocol */ #define TASKQ_DYNAMIC 0x0004 /* Use dynamic thread scheduling */ #define TASKQ_THREADS_CPU_PCT 0x0008 /* Scale # threads by # cpus */ #define TASKQ_DC_BATCH 0x0010 /* Mark threads as batch */ #define TQ_SLEEP KM_SLEEP /* Can block for memory */ #define TQ_NOSLEEP KM_NOSLEEP /* cannot block for memory; may fail */ #define TQ_NOQUEUE 0x02 /* Do not enqueue if can't dispatch */ #define TQ_FRONT 0x08 /* Queue in front */ #define TASKQID_INVALID ((taskqid_t)0) extern taskq_t *system_taskq; extern taskq_t *system_delay_taskq; extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); #define taskq_create_proc(a, b, c, d, e, p, f) \ (taskq_create(a, b, c, d, e, f)) #define taskq_create_sysdc(a, b, d, e, p, dc, f) \ (taskq_create(a, b, maxclsyspri, d, e, f)) extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); extern taskqid_t taskq_dispatch_delay(taskq_t *, task_func_t, void *, uint_t, clock_t); extern void taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t, taskq_ent_t *); extern int taskq_empty_ent(taskq_ent_t *); extern void taskq_init_ent(taskq_ent_t *); extern void taskq_destroy(taskq_t *); extern void taskq_wait(taskq_t *); extern void taskq_wait_id(taskq_t *, taskqid_t); extern void taskq_wait_outstanding(taskq_t *, taskqid_t); extern int taskq_member(taskq_t *, kthread_t *); extern int taskq_cancel_id(taskq_t *, taskqid_t); extern void system_taskq_init(void); extern void system_taskq_fini(void); #define XVA_MAPSIZE 3 #define XVA_MAGIC 0x78766174 /* * vnodes */ typedef struct vnode { uint64_t v_size; int v_fd; char *v_path; int v_dump_fd; } vnode_t; extern char *vn_dumpdir; #define AV_SCANSTAMP_SZ 32 /* length of anti-virus scanstamp */ typedef struct xoptattr { inode_timespec_t xoa_createtime; /* Create time of file */ uint8_t xoa_archive; uint8_t xoa_system; uint8_t xoa_readonly; uint8_t xoa_hidden; uint8_t xoa_nounlink; uint8_t xoa_immutable; uint8_t xoa_appendonly; uint8_t xoa_nodump; uint8_t xoa_settable; uint8_t xoa_opaque; uint8_t xoa_av_quarantined; uint8_t xoa_av_modified; uint8_t xoa_av_scanstamp[AV_SCANSTAMP_SZ]; uint8_t xoa_reparse; uint8_t xoa_offline; uint8_t xoa_sparse; } xoptattr_t; typedef struct vattr { uint_t va_mask; /* bit-mask of attributes */ u_offset_t va_size; /* file size in bytes */ } vattr_t; typedef struct xvattr { vattr_t xva_vattr; /* Embedded vattr structure */ uint32_t xva_magic; /* Magic Number */ uint32_t xva_mapsize; /* Size of attr bitmap (32-bit words) */ uint32_t *xva_rtnattrmapp; /* Ptr to xva_rtnattrmap[] */ uint32_t xva_reqattrmap[XVA_MAPSIZE]; /* Requested attrs */ uint32_t xva_rtnattrmap[XVA_MAPSIZE]; /* Returned attrs */ xoptattr_t xva_xoptattrs; /* Optional attributes */ } xvattr_t; typedef struct vsecattr { uint_t vsa_mask; /* See below */ int vsa_aclcnt; /* ACL entry count */ void *vsa_aclentp; /* pointer to ACL entries */ int vsa_dfaclcnt; /* default ACL entry count */ void *vsa_dfaclentp; /* pointer to default ACL entries */ size_t vsa_aclentsz; /* ACE size in bytes of vsa_aclentp */ } vsecattr_t; #define AT_TYPE 0x00001 #define AT_MODE 0x00002 #define AT_UID 0x00004 #define AT_GID 0x00008 #define AT_FSID 0x00010 #define AT_NODEID 0x00020 #define AT_NLINK 0x00040 #define AT_SIZE 0x00080 #define AT_ATIME 0x00100 #define AT_MTIME 0x00200 #define AT_CTIME 0x00400 #define AT_RDEV 0x00800 #define AT_BLKSIZE 0x01000 #define AT_NBLOCKS 0x02000 #define AT_SEQ 0x08000 #define AT_XVATTR 0x10000 #define CRCREAT 0 #define F_FREESP 11 extern int fop_getattr(vnode_t *vp, vattr_t *vap); #define VOP_CLOSE(vp, f, c, o, cr, ct) vn_close(vp) #define VOP_PUTPAGE(vp, of, sz, fl, cr, ct) 0 #define VOP_GETATTR(vp, vap, fl, cr, ct) fop_getattr((vp), (vap)); #define VOP_FSYNC(vp, f, cr, ct) fsync((vp)->v_fd) #if defined(HAVE_FILE_FALLOCATE) && \ defined(FALLOC_FL_PUNCH_HOLE) && \ defined(FALLOC_FL_KEEP_SIZE) #define VOP_SPACE(vp, cmd, flck, fl, off, cr, ct) \ fallocate((vp)->v_fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, \ (flck)->l_start, (flck)->l_len) #else #define VOP_SPACE(vp, cmd, flck, fl, off, cr, ct) (0) #endif #define VN_RELE(vp) vn_close(vp) extern int vn_open(char *path, int x1, int oflags, int mode, vnode_t **vpp, int x2, int x3); extern int vn_openat(char *path, int x1, int oflags, int mode, vnode_t **vpp, int x2, int x3, vnode_t *vp, int fd); extern int vn_rdwr(int uio, vnode_t *vp, void *addr, ssize_t len, offset_t offset, int x1, int x2, rlim64_t x3, void *x4, ssize_t *residp); extern void vn_close(vnode_t *vp); #define vn_remove(path, x1, x2) remove(path) #define vn_rename(from, to, seg) rename((from), (to)) #define vn_is_readonly(vp) B_FALSE extern vnode_t *rootdir; #include /* for FREAD, FWRITE, etc */ /* * Random stuff */ #define ddi_get_lbolt() (gethrtime() >> 23) #define ddi_get_lbolt64() (gethrtime() >> 23) #define hz 119 /* frequency when using gethrtime() >> 23 for lbolt */ #define ddi_time_before(a, b) (a < b) #define ddi_time_after(a, b) ddi_time_before(b, a) #define ddi_time_before_eq(a, b) (!ddi_time_after(a, b)) #define ddi_time_after_eq(a, b) ddi_time_before_eq(b, a) #define ddi_time_before64(a, b) (a < b) #define ddi_time_after64(a, b) ddi_time_before64(b, a) #define ddi_time_before_eq64(a, b) (!ddi_time_after64(a, b)) #define ddi_time_after_eq64(a, b) ddi_time_before_eq64(b, a) extern void delay(clock_t ticks); #define SEC_TO_TICK(sec) ((sec) * hz) #define MSEC_TO_TICK(msec) ((msec) / (MILLISEC / hz)) #define USEC_TO_TICK(usec) ((usec) / (MICROSEC / hz)) #define NSEC_TO_TICK(usec) ((usec) / (NANOSEC / hz)) #define max_ncpus 64 #define boot_ncpus (sysconf(_SC_NPROCESSORS_ONLN)) /* * Process priorities as defined by setpriority(2) and getpriority(2). */ #define minclsyspri 19 #define maxclsyspri -20 #define defclsyspri 0 #define CPU_SEQID ((uintptr_t)pthread_self() & (max_ncpus - 1)) #define kcred NULL #define CRED() NULL #define ptob(x) ((x) * PAGESIZE) #define NN_DIVISOR_1000 (1U << 0) #define NN_NUMBUF_SZ (6) extern uint64_t physmem; extern char *random_path; extern char *urandom_path; extern int highbit64(uint64_t i); extern int lowbit64(uint64_t i); extern int random_get_bytes(uint8_t *ptr, size_t len); extern int random_get_pseudo_bytes(uint8_t *ptr, size_t len); extern void kernel_init(int); extern void kernel_fini(void); extern void random_init(void); extern void random_fini(void); struct spa; extern void show_pool_stats(struct spa *); extern int set_global_var(char *arg); typedef struct callb_cpr { kmutex_t *cc_lockp; } callb_cpr_t; #define CALLB_CPR_INIT(cp, lockp, func, name) { \ (cp)->cc_lockp = lockp; \ } #define CALLB_CPR_SAFE_BEGIN(cp) { \ ASSERT(MUTEX_HELD((cp)->cc_lockp)); \ } #define CALLB_CPR_SAFE_END(cp, lockp) { \ ASSERT(MUTEX_HELD((cp)->cc_lockp)); \ } #define CALLB_CPR_EXIT(cp) { \ ASSERT(MUTEX_HELD((cp)->cc_lockp)); \ mutex_exit((cp)->cc_lockp); \ } #define zone_dataset_visible(x, y) (1) #define INGLOBALZONE(z) (1) extern uint32_t zone_get_hostid(void *zonep); extern char *kmem_vasprintf(const char *fmt, va_list adx); extern char *kmem_asprintf(const char *fmt, ...); #define strfree(str) kmem_free((str), strlen(str) + 1) /* * Hostname information */ extern char hw_serial[]; /* for userland-emulated hostid access */ extern int ddi_strtoul(const char *str, char **nptr, int base, unsigned long *result); extern int ddi_strtoull(const char *str, char **nptr, int base, u_longlong_t *result); typedef struct utsname utsname_t; extern utsname_t *utsname(void); /* ZFS Boot Related stuff. */ struct _buf { intptr_t _fd; }; struct bootstat { uint64_t st_size; }; typedef struct ace_object { uid_t a_who; uint32_t a_access_mask; uint16_t a_flags; uint16_t a_type; uint8_t a_obj_type[16]; uint8_t a_inherit_obj_type[16]; } ace_object_t; #define ACE_ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x05 #define ACE_ACCESS_DENIED_OBJECT_ACE_TYPE 0x06 #define ACE_SYSTEM_AUDIT_OBJECT_ACE_TYPE 0x07 #define ACE_SYSTEM_ALARM_OBJECT_ACE_TYPE 0x08 extern struct _buf *kobj_open_file(char *name); extern int kobj_read_file(struct _buf *file, char *buf, unsigned size, unsigned off); extern void kobj_close_file(struct _buf *file); extern int kobj_get_filesize(struct _buf *file, uint64_t *size); extern int zfs_secpolicy_snapshot_perms(const char *name, cred_t *cr); extern int zfs_secpolicy_rename_perms(const char *from, const char *to, cred_t *cr); extern int zfs_secpolicy_destroy_perms(const char *name, cred_t *cr); extern int secpolicy_zfs(const cred_t *cr); extern zoneid_t getzoneid(void); /* SID stuff */ typedef struct ksiddomain { uint_t kd_ref; uint_t kd_len; char *kd_name; } ksiddomain_t; ksiddomain_t *ksid_lookupdomain(const char *); void ksiddomain_rele(ksiddomain_t *); #define DDI_SLEEP KM_SLEEP #define ddi_log_sysevent(_a, _b, _c, _d, _e, _f, _g) \ sysevent_post_event(_c, _d, _b, "libzpool", _e, _f) #define zfs_sleep_until(wakeup) \ do { \ hrtime_t delta = wakeup - gethrtime(); \ struct timespec ts; \ ts.tv_sec = delta / NANOSEC; \ ts.tv_nsec = delta % NANOSEC; \ (void) nanosleep(&ts, NULL); \ } while (0) typedef int fstrans_cookie_t; extern fstrans_cookie_t spl_fstrans_mark(void); extern void spl_fstrans_unmark(fstrans_cookie_t); extern int __spl_pf_fstrans_check(void); extern int kmem_cache_reap_active(void); #define ____cacheline_aligned #endif /* _KERNEL */ #endif /* _SYS_ZFS_CONTEXT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_zil.h0000644000000000000000000000007413607166147020014 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.562428581 zfs-0.8.3/include/sys/trace_zil.h0000644016037001603700000001715013607166147020015 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_zil #if !defined(_TRACE_ZIL_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_ZIL_H #include #include #define ZILOG_TP_STRUCT_ENTRY \ __field(uint64_t, zl_lr_seq) \ __field(uint64_t, zl_commit_lr_seq) \ __field(uint64_t, zl_destroy_txg) \ __field(uint64_t, zl_replaying_seq) \ __field(uint32_t, zl_suspend) \ __field(uint8_t, zl_suspending) \ __field(uint8_t, zl_keep_first) \ __field(uint8_t, zl_replay) \ __field(uint8_t, zl_stop_sync) \ __field(uint8_t, zl_logbias) \ __field(uint8_t, zl_sync) \ __field(int, zl_parse_error) \ __field(uint64_t, zl_parse_blk_seq) \ __field(uint64_t, zl_parse_lr_seq) \ __field(uint64_t, zl_parse_blk_count) \ __field(uint64_t, zl_parse_lr_count) \ __field(uint64_t, zl_cur_used) \ __field(clock_t, zl_replay_time) \ __field(uint64_t, zl_replay_blks) #define ZILOG_TP_FAST_ASSIGN \ __entry->zl_lr_seq = zilog->zl_lr_seq; \ __entry->zl_commit_lr_seq = zilog->zl_commit_lr_seq; \ __entry->zl_destroy_txg = zilog->zl_destroy_txg; \ __entry->zl_replaying_seq = zilog->zl_replaying_seq; \ __entry->zl_suspend = zilog->zl_suspend; \ __entry->zl_suspending = zilog->zl_suspending; \ __entry->zl_keep_first = zilog->zl_keep_first; \ __entry->zl_replay = zilog->zl_replay; \ __entry->zl_stop_sync = zilog->zl_stop_sync; \ __entry->zl_logbias = zilog->zl_logbias; \ __entry->zl_sync = zilog->zl_sync; \ __entry->zl_parse_error = zilog->zl_parse_error; \ __entry->zl_parse_blk_seq = zilog->zl_parse_blk_seq; \ __entry->zl_parse_lr_seq = zilog->zl_parse_lr_seq; \ __entry->zl_parse_blk_count = zilog->zl_parse_blk_count;\ __entry->zl_parse_lr_count = zilog->zl_parse_lr_count; \ __entry->zl_cur_used = zilog->zl_cur_used; \ __entry->zl_replay_time = zilog->zl_replay_time; \ __entry->zl_replay_blks = zilog->zl_replay_blks; #define ZILOG_TP_PRINTK_FMT \ "zl { lr_seq %llu commit_lr_seq %llu destroy_txg %llu " \ "replaying_seq %llu suspend %u suspending %u keep_first %u " \ "replay %u stop_sync %u logbias %u sync %u " \ "parse_error %u parse_blk_seq %llu parse_lr_seq %llu " \ "parse_blk_count %llu parse_lr_count %llu " \ "cur_used %llu replay_time %lu replay_blks %llu }" #define ZILOG_TP_PRINTK_ARGS \ __entry->zl_lr_seq, __entry->zl_commit_lr_seq, \ __entry->zl_destroy_txg, __entry->zl_replaying_seq, \ __entry->zl_suspend, __entry->zl_suspending, \ __entry->zl_keep_first, __entry->zl_replay, \ __entry->zl_stop_sync, __entry->zl_logbias, __entry->zl_sync, \ __entry->zl_parse_error, __entry->zl_parse_blk_seq, \ __entry->zl_parse_lr_seq, __entry->zl_parse_blk_count, \ __entry->zl_parse_lr_count, __entry->zl_cur_used, \ __entry->zl_replay_time, __entry->zl_replay_blks #define ITX_TP_STRUCT_ENTRY \ __field(itx_wr_state_t, itx_wr_state) \ __field(uint8_t, itx_sync) \ __field(zil_callback_t, itx_callback) \ __field(void *, itx_callback_data) \ __field(uint64_t, itx_oid) \ \ __field(uint64_t, lrc_txtype) \ __field(uint64_t, lrc_reclen) \ __field(uint64_t, lrc_txg) \ __field(uint64_t, lrc_seq) #define ITX_TP_FAST_ASSIGN \ __entry->itx_wr_state = itx->itx_wr_state; \ __entry->itx_sync = itx->itx_sync; \ __entry->itx_callback = itx->itx_callback; \ __entry->itx_callback_data = itx->itx_callback_data; \ __entry->itx_oid = itx->itx_oid; \ \ __entry->lrc_txtype = itx->itx_lr.lrc_txtype; \ __entry->lrc_reclen = itx->itx_lr.lrc_reclen; \ __entry->lrc_txg = itx->itx_lr.lrc_txg; \ __entry->lrc_seq = itx->itx_lr.lrc_seq; #define ITX_TP_PRINTK_FMT \ "itx { wr_state %u sync %u callback %p callback_data %p oid %llu" \ " { txtype %llu reclen %llu txg %llu seq %llu } }" #define ITX_TP_PRINTK_ARGS \ __entry->itx_wr_state, __entry->itx_sync, __entry->itx_callback,\ __entry->itx_callback_data, __entry->itx_oid, \ __entry->lrc_txtype, __entry->lrc_reclen, __entry->lrc_txg, \ __entry->lrc_seq #define ZCW_TP_STRUCT_ENTRY \ __field(lwb_t *, zcw_lwb) \ __field(boolean_t, zcw_done) \ __field(int, zcw_zio_error) \ #define ZCW_TP_FAST_ASSIGN \ __entry->zcw_lwb = zcw->zcw_lwb; \ __entry->zcw_done = zcw->zcw_done; \ __entry->zcw_zio_error = zcw->zcw_zio_error; #define ZCW_TP_PRINTK_FMT \ "zcw { lwb %p done %u error %u }" #define ZCW_TP_PRINTK_ARGS \ __entry->zcw_lwb, __entry->zcw_done, __entry->zcw_zio_error /* * Generic support for two argument tracepoints of the form: * * DTRACE_PROBE2(..., * zilog_t *, ..., * itx_t *, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_zil_process_itx_class, TP_PROTO(zilog_t *zilog, itx_t *itx), TP_ARGS(zilog, itx), TP_STRUCT__entry( ZILOG_TP_STRUCT_ENTRY ITX_TP_STRUCT_ENTRY ), TP_fast_assign( ZILOG_TP_FAST_ASSIGN ITX_TP_FAST_ASSIGN ), TP_printk( ZILOG_TP_PRINTK_FMT " " ITX_TP_PRINTK_FMT, ZILOG_TP_PRINTK_ARGS, ITX_TP_PRINTK_ARGS) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_ZIL_PROCESS_ITX_EVENT(name) \ DEFINE_EVENT(zfs_zil_process_itx_class, name, \ TP_PROTO(zilog_t *zilog, itx_t *itx), \ TP_ARGS(zilog, itx)) DEFINE_ZIL_PROCESS_ITX_EVENT(zfs_zil__process__commit__itx); DEFINE_ZIL_PROCESS_ITX_EVENT(zfs_zil__process__normal__itx); /* END CSTYLED */ /* * Generic support for two argument tracepoints of the form: * * DTRACE_PROBE2(..., * zilog_t *, ..., * zil_commit_waiter_t *, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_zil_commit_io_error_class, TP_PROTO(zilog_t *zilog, zil_commit_waiter_t *zcw), TP_ARGS(zilog, zcw), TP_STRUCT__entry( ZILOG_TP_STRUCT_ENTRY ZCW_TP_STRUCT_ENTRY ), TP_fast_assign( ZILOG_TP_FAST_ASSIGN ZCW_TP_FAST_ASSIGN ), TP_printk( ZILOG_TP_PRINTK_FMT " " ZCW_TP_PRINTK_FMT, ZILOG_TP_PRINTK_ARGS, ZCW_TP_PRINTK_ARGS) ); /* BEGIN CSTYLED */ #define DEFINE_ZIL_COMMIT_IO_ERROR_EVENT(name) \ DEFINE_EVENT(zfs_zil_commit_io_error_class, name, \ TP_PROTO(zilog_t *zilog, zil_commit_waiter_t *zcw), \ TP_ARGS(zilog, zcw)) DEFINE_ZIL_COMMIT_IO_ERROR_EVENT(zfs_zil__commit__io__error); /* END CSTYLED */ #endif /* _TRACE_ZIL_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_zil #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_sysfs.h0000644000000000000000000000007413607166132020063 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.665431889 zfs-0.8.3/include/sys/zfs_sysfs.h0000644016037001603700000000276613607166132020073 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2018 by Delphix. All rights reserved. */ #ifndef _SYS_ZFS_SYSFS_H #define _SYS_ZFS_SYSFS_H #ifdef _KERNEL void zfs_sysfs_init(void); void zfs_sysfs_fini(void); #else #define zfs_sysfs_init() #define zfs_sysfs_fini() boolean_t zfs_mod_supported(const char *, const char *); #endif #define ZFS_SYSFS_POOL_PROPERTIES "properties.pool" #define ZFS_SYSFS_DATASET_PROPERTIES "properties.dataset" #define ZFS_SYSFS_KERNEL_FEATURES "features.kernel" #define ZFS_SYSFS_POOL_FEATURES "features.pool" #define ZFS_SYSFS_DIR "/sys/module/zfs" /* Alternate location when ZFS is built as part of the kernel (rare) */ #define ZFS_SYSFS_ALT_DIR "/sys/fs/zfs" #endif /* _SYS_ZFS_SYSFS_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dnode.h0000644000000000000000000000007413607166147017131 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.444424793 zfs-0.8.3/include/sys/dnode.h0000644016037001603700000005421213607166147017132 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. */ #ifndef _SYS_DNODE_H #define _SYS_DNODE_H #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * dnode_hold() flags. */ #define DNODE_MUST_BE_ALLOCATED 1 #define DNODE_MUST_BE_FREE 2 #define DNODE_DRY_RUN 4 /* * dnode_next_offset() flags. */ #define DNODE_FIND_HOLE 1 #define DNODE_FIND_BACKWARDS 2 #define DNODE_FIND_HAVELOCK 4 /* * Fixed constants. */ #define DNODE_SHIFT 9 /* 512 bytes */ #define DN_MIN_INDBLKSHIFT 12 /* 4k */ /* * If we ever increase this value beyond 20, we need to revisit all logic that * does x << level * ebps to handle overflow. With a 1M indirect block size, * 4 levels of indirect blocks would not be able to guarantee addressing an * entire object, so 5 levels will be used, but 5 * (20 - 7) = 65. */ #define DN_MAX_INDBLKSHIFT 17 /* 128k */ #define DNODE_BLOCK_SHIFT 14 /* 16k */ #define DNODE_CORE_SIZE 64 /* 64 bytes for dnode sans blkptrs */ #define DN_MAX_OBJECT_SHIFT 48 /* 256 trillion (zfs_fid_t limit) */ #define DN_MAX_OFFSET_SHIFT 64 /* 2^64 bytes in a dnode */ /* * dnode id flags * * Note: a file will never ever have its ids moved from bonus->spill */ #define DN_ID_CHKED_BONUS 0x1 #define DN_ID_CHKED_SPILL 0x2 #define DN_ID_OLD_EXIST 0x4 #define DN_ID_NEW_EXIST 0x8 /* * Derived constants. */ #define DNODE_MIN_SIZE (1 << DNODE_SHIFT) #define DNODE_MAX_SIZE (1 << DNODE_BLOCK_SHIFT) #define DNODE_BLOCK_SIZE (1 << DNODE_BLOCK_SHIFT) #define DNODE_MIN_SLOTS (DNODE_MIN_SIZE >> DNODE_SHIFT) #define DNODE_MAX_SLOTS (DNODE_MAX_SIZE >> DNODE_SHIFT) #define DN_BONUS_SIZE(dnsize) ((dnsize) - DNODE_CORE_SIZE - \ (1 << SPA_BLKPTRSHIFT)) #define DN_SLOTS_TO_BONUSLEN(slots) DN_BONUS_SIZE((slots) << DNODE_SHIFT) #define DN_OLD_MAX_BONUSLEN (DN_BONUS_SIZE(DNODE_MIN_SIZE)) #define DN_MAX_NBLKPTR ((DNODE_MIN_SIZE - DNODE_CORE_SIZE) >> SPA_BLKPTRSHIFT) #define DN_MAX_OBJECT (1ULL << DN_MAX_OBJECT_SHIFT) #define DN_ZERO_BONUSLEN (DN_BONUS_SIZE(DNODE_MAX_SIZE) + 1) #define DN_KILL_SPILLBLK (1) #define DN_SLOT_UNINIT ((void *)NULL) /* Uninitialized */ #define DN_SLOT_FREE ((void *)1UL) /* Free slot */ #define DN_SLOT_ALLOCATED ((void *)2UL) /* Allocated slot */ #define DN_SLOT_INTERIOR ((void *)3UL) /* Interior allocated slot */ #define DN_SLOT_IS_PTR(dn) ((void *)dn > DN_SLOT_INTERIOR) #define DN_SLOT_IS_VALID(dn) ((void *)dn != NULL) #define DNODES_PER_BLOCK_SHIFT (DNODE_BLOCK_SHIFT - DNODE_SHIFT) #define DNODES_PER_BLOCK (1ULL << DNODES_PER_BLOCK_SHIFT) /* * This is inaccurate if the indblkshift of the particular object is not the * max. But it's only used by userland to calculate the zvol reservation. */ #define DNODES_PER_LEVEL_SHIFT (DN_MAX_INDBLKSHIFT - SPA_BLKPTRSHIFT) #define DNODES_PER_LEVEL (1ULL << DNODES_PER_LEVEL_SHIFT) #define DN_MAX_LEVELS (DIV_ROUND_UP(DN_MAX_OFFSET_SHIFT - SPA_MINBLOCKSHIFT, \ DN_MIN_INDBLKSHIFT - SPA_BLKPTRSHIFT) + 1) #define DN_BONUS(dnp) ((void*)((dnp)->dn_bonus + \ (((dnp)->dn_nblkptr - 1) * sizeof (blkptr_t)))) #define DN_MAX_BONUS_LEN(dnp) \ ((dnp->dn_flags & DNODE_FLAG_SPILL_BLKPTR) ? \ (uint8_t *)DN_SPILL_BLKPTR(dnp) - (uint8_t *)DN_BONUS(dnp) : \ (uint8_t *)(dnp + (dnp->dn_extra_slots + 1)) - (uint8_t *)DN_BONUS(dnp)) #define DN_USED_BYTES(dnp) (((dnp)->dn_flags & DNODE_FLAG_USED_BYTES) ? \ (dnp)->dn_used : (dnp)->dn_used << SPA_MINBLOCKSHIFT) #define EPB(blkshift, typeshift) (1 << (blkshift - typeshift)) struct dmu_buf_impl; struct objset; struct zio; enum dnode_dirtycontext { DN_UNDIRTIED, DN_DIRTY_OPEN, DN_DIRTY_SYNC }; /* Is dn_used in bytes? if not, it's in multiples of SPA_MINBLOCKSIZE */ #define DNODE_FLAG_USED_BYTES (1 << 0) #define DNODE_FLAG_USERUSED_ACCOUNTED (1 << 1) /* Does dnode have a SA spill blkptr in bonus? */ #define DNODE_FLAG_SPILL_BLKPTR (1 << 2) /* User/Group/Project dnode accounting */ #define DNODE_FLAG_USEROBJUSED_ACCOUNTED (1 << 3) /* * This mask defines the set of flags which are "portable", meaning * that they can be preserved when doing a raw encrypted zfs send. * Flags included in this mask will be protected by AAD when the block * of dnodes is encrypted. */ #define DNODE_CRYPT_PORTABLE_FLAGS_MASK (DNODE_FLAG_SPILL_BLKPTR) /* * VARIABLE-LENGTH (LARGE) DNODES * * The motivation for variable-length dnodes is to eliminate the overhead * associated with using spill blocks. Spill blocks are used to store * system attribute data (i.e. file metadata) that does not fit in the * dnode's bonus buffer. By allowing a larger bonus buffer area the use of * a spill block can be avoided. Spill blocks potentially incur an * additional read I/O for every dnode in a dnode block. As a worst case * example, reading 32 dnodes from a 16k dnode block and all of the spill * blocks could issue 33 separate reads. Now suppose those dnodes have size * 1024 and therefore don't need spill blocks. Then the worst case number * of blocks read is reduced to from 33 to two--one per dnode block. * * ZFS-on-Linux systems that make heavy use of extended attributes benefit * from this feature. In particular, ZFS-on-Linux supports the xattr=sa * dataset property which allows file extended attribute data to be stored * in the dnode bonus buffer as an alternative to the traditional * directory-based format. Workloads such as SELinux and the Lustre * distributed filesystem often store enough xattr data to force spill * blocks when xattr=sa is in effect. Large dnodes may therefore provide a * performance benefit to such systems. Other use cases that benefit from * this feature include files with large ACLs and symbolic links with long * target names. * * The size of a dnode may be a multiple of 512 bytes up to the size of a * dnode block (currently 16384 bytes). The dn_extra_slots field of the * on-disk dnode_phys_t structure describes the size of the physical dnode * on disk. The field represents how many "extra" dnode_phys_t slots a * dnode consumes in its dnode block. This convention results in a value of * 0 for 512 byte dnodes which preserves on-disk format compatibility with * older software which doesn't support large dnodes. * * Similarly, the in-memory dnode_t structure has a dn_num_slots field * to represent the total number of dnode_phys_t slots consumed on disk. * Thus dn->dn_num_slots is 1 greater than the corresponding * dnp->dn_extra_slots. This difference in convention was adopted * because, unlike on-disk structures, backward compatibility is not a * concern for in-memory objects, so we used a more natural way to * represent size for a dnode_t. * * The default size for newly created dnodes is determined by the value of * the "dnodesize" dataset property. By default the property is set to * "legacy" which is compatible with older software. Setting the property * to "auto" will allow the filesystem to choose the most suitable dnode * size. Currently this just sets the default dnode size to 1k, but future * code improvements could dynamically choose a size based on observed * workload patterns. Dnodes of varying sizes can coexist within the same * dataset and even within the same dnode block. */ typedef struct dnode_phys { uint8_t dn_type; /* dmu_object_type_t */ uint8_t dn_indblkshift; /* ln2(indirect block size) */ uint8_t dn_nlevels; /* 1=dn_blkptr->data blocks */ uint8_t dn_nblkptr; /* length of dn_blkptr */ uint8_t dn_bonustype; /* type of data in bonus buffer */ uint8_t dn_checksum; /* ZIO_CHECKSUM type */ uint8_t dn_compress; /* ZIO_COMPRESS type */ uint8_t dn_flags; /* DNODE_FLAG_* */ uint16_t dn_datablkszsec; /* data block size in 512b sectors */ uint16_t dn_bonuslen; /* length of dn_bonus */ uint8_t dn_extra_slots; /* # of subsequent slots consumed */ uint8_t dn_pad2[3]; /* accounting is protected by dn_dirty_mtx */ uint64_t dn_maxblkid; /* largest allocated block ID */ uint64_t dn_used; /* bytes (or sectors) of disk space */ /* * Both dn_pad2 and dn_pad3 are protected by the block's MAC. This * allows us to protect any fields that might be added here in the * future. In either case, developers will want to check * zio_crypt_init_uios_dnode() to ensure the new field is being * protected properly. */ uint64_t dn_pad3[4]; /* * The tail region is 448 bytes for a 512 byte dnode, and * correspondingly larger for larger dnode sizes. The spill * block pointer, when present, is always at the end of the tail * region. There are three ways this space may be used, using * a 512 byte dnode for this diagram: * * 0 64 128 192 256 320 384 448 (offset) * +---------------+---------------+---------------+-------+ * | dn_blkptr[0] | dn_blkptr[1] | dn_blkptr[2] | / | * +---------------+---------------+---------------+-------+ * | dn_blkptr[0] | dn_bonus[0..319] | * +---------------+-----------------------+---------------+ * | dn_blkptr[0] | dn_bonus[0..191] | dn_spill | * +---------------+-----------------------+---------------+ */ union { blkptr_t dn_blkptr[1+DN_OLD_MAX_BONUSLEN/sizeof (blkptr_t)]; struct { blkptr_t __dn_ignore1; uint8_t dn_bonus[DN_OLD_MAX_BONUSLEN]; }; struct { blkptr_t __dn_ignore2; uint8_t __dn_ignore3[DN_OLD_MAX_BONUSLEN - sizeof (blkptr_t)]; blkptr_t dn_spill; }; }; } dnode_phys_t; #define DN_SPILL_BLKPTR(dnp) ((blkptr_t *)((char *)(dnp) + \ (((dnp)->dn_extra_slots + 1) << DNODE_SHIFT) - (1 << SPA_BLKPTRSHIFT))) struct dnode { /* * Protects the structure of the dnode, including the number of levels * of indirection (dn_nlevels), dn_maxblkid, and dn_next_* */ krwlock_t dn_struct_rwlock; /* Our link on dn_objset->os_dnodes list; protected by os_lock. */ list_node_t dn_link; /* immutable: */ struct objset *dn_objset; uint64_t dn_object; struct dmu_buf_impl *dn_dbuf; struct dnode_handle *dn_handle; dnode_phys_t *dn_phys; /* pointer into dn->dn_dbuf->db.db_data */ /* * Copies of stuff in dn_phys. They're valid in the open * context (eg. even before the dnode is first synced). * Where necessary, these are protected by dn_struct_rwlock. */ dmu_object_type_t dn_type; /* object type */ uint16_t dn_bonuslen; /* bonus length */ uint8_t dn_bonustype; /* bonus type */ uint8_t dn_nblkptr; /* number of blkptrs (immutable) */ uint8_t dn_checksum; /* ZIO_CHECKSUM type */ uint8_t dn_compress; /* ZIO_COMPRESS type */ uint8_t dn_nlevels; uint8_t dn_indblkshift; uint8_t dn_datablkshift; /* zero if blksz not power of 2! */ uint8_t dn_moved; /* Has this dnode been moved? */ uint16_t dn_datablkszsec; /* in 512b sectors */ uint32_t dn_datablksz; /* in bytes */ uint64_t dn_maxblkid; uint8_t dn_next_type[TXG_SIZE]; uint8_t dn_num_slots; /* metadnode slots consumed on disk */ uint8_t dn_next_nblkptr[TXG_SIZE]; uint8_t dn_next_nlevels[TXG_SIZE]; uint8_t dn_next_indblkshift[TXG_SIZE]; uint8_t dn_next_bonustype[TXG_SIZE]; uint8_t dn_rm_spillblk[TXG_SIZE]; /* for removing spill blk */ uint16_t dn_next_bonuslen[TXG_SIZE]; uint32_t dn_next_blksz[TXG_SIZE]; /* next block size in bytes */ uint64_t dn_next_maxblkid[TXG_SIZE]; /* next maxblkid in bytes */ /* protected by dn_dbufs_mtx; declared here to fill 32-bit hole */ uint32_t dn_dbufs_count; /* count of dn_dbufs */ /* protected by os_lock: */ multilist_node_t dn_dirty_link[TXG_SIZE]; /* next on dataset's dirty */ /* protected by dn_mtx: */ kmutex_t dn_mtx; list_t dn_dirty_records[TXG_SIZE]; struct range_tree *dn_free_ranges[TXG_SIZE]; uint64_t dn_allocated_txg; uint64_t dn_free_txg; uint64_t dn_assigned_txg; uint64_t dn_dirty_txg; /* txg dnode was last dirtied */ kcondvar_t dn_notxholds; enum dnode_dirtycontext dn_dirtyctx; uint8_t *dn_dirtyctx_firstset; /* dbg: contents meaningless */ /* protected by own devices */ zfs_refcount_t dn_tx_holds; zfs_refcount_t dn_holds; kmutex_t dn_dbufs_mtx; /* * Descendent dbufs, ordered by dbuf_compare. Note that dn_dbufs * can contain multiple dbufs of the same (level, blkid) when a * dbuf is marked DB_EVICTING without being removed from * dn_dbufs. To maintain the avl invariant that there cannot be * duplicate entries, we order the dbufs by an arbitrary value - * their address in memory. This means that dn_dbufs cannot be used to * directly look up a dbuf. Instead, callers must use avl_walk, have * a reference to the dbuf, or look up a non-existent node with * db_state = DB_SEARCH (see dbuf_free_range for an example). */ avl_tree_t dn_dbufs; /* protected by dn_struct_rwlock */ struct dmu_buf_impl *dn_bonus; /* bonus buffer dbuf */ boolean_t dn_have_spill; /* have spill or are spilling */ /* parent IO for current sync write */ zio_t *dn_zio; /* used in syncing context */ uint64_t dn_oldused; /* old phys used bytes */ uint64_t dn_oldflags; /* old phys dn_flags */ uint64_t dn_olduid, dn_oldgid, dn_oldprojid; uint64_t dn_newuid, dn_newgid, dn_newprojid; int dn_id_flags; /* holds prefetch structure */ struct zfetch dn_zfetch; }; /* * We use this (otherwise unused) bit to indicate if the value of * dn_next_maxblkid[txgoff] is valid to use in dnode_sync(). */ #define DMU_NEXT_MAXBLKID_SET (1ULL << 63) /* * Adds a level of indirection between the dbuf and the dnode to avoid * iterating descendent dbufs in dnode_move(). Handles are not allocated * individually, but as an array of child dnodes in dnode_hold_impl(). */ typedef struct dnode_handle { /* Protects dnh_dnode from modification by dnode_move(). */ zrlock_t dnh_zrlock; dnode_t *dnh_dnode; } dnode_handle_t; typedef struct dnode_children { dmu_buf_user_t dnc_dbu; /* User evict data */ size_t dnc_count; /* number of children */ dnode_handle_t dnc_children[]; /* sized dynamically */ } dnode_children_t; typedef struct free_range { avl_node_t fr_node; uint64_t fr_blkid; uint64_t fr_nblks; } free_range_t; void dnode_special_open(struct objset *dd, dnode_phys_t *dnp, uint64_t object, dnode_handle_t *dnh); void dnode_special_close(dnode_handle_t *dnh); void dnode_setbonuslen(dnode_t *dn, int newsize, dmu_tx_t *tx); void dnode_setbonus_type(dnode_t *dn, dmu_object_type_t, dmu_tx_t *tx); void dnode_rm_spill(dnode_t *dn, dmu_tx_t *tx); int dnode_hold(struct objset *dd, uint64_t object, void *ref, dnode_t **dnp); int dnode_hold_impl(struct objset *dd, uint64_t object, int flag, int dn_slots, void *ref, dnode_t **dnp); boolean_t dnode_add_ref(dnode_t *dn, void *ref); void dnode_rele(dnode_t *dn, void *ref); void dnode_rele_and_unlock(dnode_t *dn, void *tag, boolean_t evicting); int dnode_try_claim(objset_t *os, uint64_t object, int slots); void dnode_setdirty(dnode_t *dn, dmu_tx_t *tx); void dnode_sync(dnode_t *dn, dmu_tx_t *tx); void dnode_allocate(dnode_t *dn, dmu_object_type_t ot, int blocksize, int ibs, dmu_object_type_t bonustype, int bonuslen, int dn_slots, dmu_tx_t *tx); void dnode_reallocate(dnode_t *dn, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonustype, int bonuslen, int dn_slots, boolean_t keep_spill, dmu_tx_t *tx); void dnode_free(dnode_t *dn, dmu_tx_t *tx); void dnode_byteswap(dnode_phys_t *dnp); void dnode_buf_byteswap(void *buf, size_t size); void dnode_verify(dnode_t *dn); int dnode_set_nlevels(dnode_t *dn, int nlevels, dmu_tx_t *tx); int dnode_set_blksz(dnode_t *dn, uint64_t size, int ibs, dmu_tx_t *tx); void dnode_free_range(dnode_t *dn, uint64_t off, uint64_t len, dmu_tx_t *tx); void dnode_diduse_space(dnode_t *dn, int64_t space); void dnode_new_blkid(dnode_t *dn, uint64_t blkid, dmu_tx_t *tx, boolean_t have_read, boolean_t force); uint64_t dnode_block_freed(dnode_t *dn, uint64_t blkid); void dnode_init(void); void dnode_fini(void); int dnode_next_offset(dnode_t *dn, int flags, uint64_t *off, int minlvl, uint64_t blkfill, uint64_t txg); void dnode_evict_dbufs(dnode_t *dn); void dnode_evict_bonus(dnode_t *dn); void dnode_free_interior_slots(dnode_t *dn); boolean_t dnode_needs_remap(const dnode_t *dn); #define DNODE_IS_DIRTY(_dn) \ ((_dn)->dn_dirty_txg >= spa_syncing_txg((_dn)->dn_objset->os_spa)) #define DNODE_IS_CACHEABLE(_dn) \ ((_dn)->dn_objset->os_primary_cache == ZFS_CACHE_ALL || \ (DMU_OT_IS_METADATA((_dn)->dn_type) && \ (_dn)->dn_objset->os_primary_cache == ZFS_CACHE_METADATA)) #define DNODE_META_IS_CACHEABLE(_dn) \ ((_dn)->dn_objset->os_primary_cache == ZFS_CACHE_ALL || \ (_dn)->dn_objset->os_primary_cache == ZFS_CACHE_METADATA) /* * Used for dnodestats kstat. */ typedef struct dnode_stats { /* * Number of failed attempts to hold a meta dnode dbuf. */ kstat_named_t dnode_hold_dbuf_hold; /* * Number of failed attempts to read a meta dnode dbuf. */ kstat_named_t dnode_hold_dbuf_read; /* * Number of times dnode_hold(..., DNODE_MUST_BE_ALLOCATED) was able * to hold the requested object number which was allocated. This is * the common case when looking up any allocated object number. */ kstat_named_t dnode_hold_alloc_hits; /* * Number of times dnode_hold(..., DNODE_MUST_BE_ALLOCATED) was not * able to hold the request object number because it was not allocated. */ kstat_named_t dnode_hold_alloc_misses; /* * Number of times dnode_hold(..., DNODE_MUST_BE_ALLOCATED) was not * able to hold the request object number because the object number * refers to an interior large dnode slot. */ kstat_named_t dnode_hold_alloc_interior; /* * Number of times dnode_hold(..., DNODE_MUST_BE_ALLOCATED) needed * to retry acquiring slot zrl locks due to contention. */ kstat_named_t dnode_hold_alloc_lock_retry; /* * Number of times dnode_hold(..., DNODE_MUST_BE_ALLOCATED) did not * need to create the dnode because another thread did so after * dropping the read lock but before acquiring the write lock. */ kstat_named_t dnode_hold_alloc_lock_misses; /* * Number of times dnode_hold(..., DNODE_MUST_BE_ALLOCATED) found * a free dnode instantiated by dnode_create() but not yet allocated * by dnode_allocate(). */ kstat_named_t dnode_hold_alloc_type_none; /* * Number of times dnode_hold(..., DNODE_MUST_BE_FREE) was able * to hold the requested range of free dnode slots. */ kstat_named_t dnode_hold_free_hits; /* * Number of times dnode_hold(..., DNODE_MUST_BE_FREE) was not * able to hold the requested range of free dnode slots because * at least one slot was allocated. */ kstat_named_t dnode_hold_free_misses; /* * Number of times dnode_hold(..., DNODE_MUST_BE_FREE) was not * able to hold the requested range of free dnode slots because * after acquiring the zrl lock at least one slot was allocated. */ kstat_named_t dnode_hold_free_lock_misses; /* * Number of times dnode_hold(..., DNODE_MUST_BE_FREE) needed * to retry acquiring slot zrl locks due to contention. */ kstat_named_t dnode_hold_free_lock_retry; /* * Number of times dnode_hold(..., DNODE_MUST_BE_FREE) requested * a range of dnode slots which were held by another thread. */ kstat_named_t dnode_hold_free_refcount; /* * Number of times dnode_hold(..., DNODE_MUST_BE_FREE) requested * a range of dnode slots which would overflow the dnode_phys_t. */ kstat_named_t dnode_hold_free_overflow; /* * Number of times dnode_free_interior_slots() needed to retry * acquiring a slot zrl lock due to contention. */ kstat_named_t dnode_free_interior_lock_retry; /* * Number of new dnodes allocated by dnode_allocate(). */ kstat_named_t dnode_allocate; /* * Number of dnodes re-allocated by dnode_reallocate(). */ kstat_named_t dnode_reallocate; /* * Number of meta dnode dbufs evicted. */ kstat_named_t dnode_buf_evict; /* * Number of times dmu_object_alloc*() reached the end of the existing * object ID chunk and advanced to a new one. */ kstat_named_t dnode_alloc_next_chunk; /* * Number of times multiple threads attempted to allocate a dnode * from the same block of free dnodes. */ kstat_named_t dnode_alloc_race; /* * Number of times dmu_object_alloc*() was forced to advance to the * next meta dnode dbuf due to an error from dmu_object_next(). */ kstat_named_t dnode_alloc_next_block; /* * Statistics for tracking dnodes which have been moved. */ kstat_named_t dnode_move_invalid; kstat_named_t dnode_move_recheck1; kstat_named_t dnode_move_recheck2; kstat_named_t dnode_move_special; kstat_named_t dnode_move_handle; kstat_named_t dnode_move_rwlock; kstat_named_t dnode_move_active; } dnode_stats_t; extern dnode_stats_t dnode_stats; #define DNODE_STAT_INCR(stat, val) \ atomic_add_64(&dnode_stats.stat.value.ui64, (val)); #define DNODE_STAT_BUMP(stat) \ DNODE_STAT_INCR(stat, 1); #ifdef ZFS_DEBUG #define dprintf_dnode(dn, fmt, ...) do { \ if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ char __db_buf[32]; \ uint64_t __db_obj = (dn)->dn_object; \ if (__db_obj == DMU_META_DNODE_OBJECT) \ (void) strcpy(__db_buf, "mdn"); \ else \ (void) snprintf(__db_buf, sizeof (__db_buf), "%lld", \ (u_longlong_t)__db_obj);\ dprintf_ds((dn)->dn_objset->os_dsl_dataset, "obj=%s " fmt, \ __db_buf, __VA_ARGS__); \ } \ _NOTE(CONSTCOND) } while (0) #define DNODE_VERIFY(dn) dnode_verify(dn) #define FREE_VERIFY(db, start, end, tx) free_verify(db, start, end, tx) #else #define dprintf_dnode(db, fmt, ...) #define DNODE_VERIFY(dn) #define FREE_VERIFY(db, start, end, tx) #endif #ifdef __cplusplus } #endif #endif /* _SYS_DNODE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zio_checksum.h0000644000000000000000000000007413607166132020515 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.679432339 zfs-0.8.3/include/sys/zio_checksum.h0000644016037001603700000001106113607166132020511 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014, 2016 by Delphix. All rights reserved. * Copyright Saso Kiselkov 2013, All rights reserved. */ #ifndef _SYS_ZIO_CHECKSUM_H #define _SYS_ZIO_CHECKSUM_H #include #include #include #ifdef __cplusplus extern "C" { #endif struct abd; /* * Signature for checksum functions. */ typedef void zio_checksum_t(struct abd *abd, uint64_t size, const void *ctx_template, zio_cksum_t *zcp); typedef void *zio_checksum_tmpl_init_t(const zio_cksum_salt_t *salt); typedef void zio_checksum_tmpl_free_t(void *ctx_template); typedef enum zio_checksum_flags { /* Strong enough for metadata? */ ZCHECKSUM_FLAG_METADATA = (1 << 1), /* ZIO embedded checksum */ ZCHECKSUM_FLAG_EMBEDDED = (1 << 2), /* Strong enough for dedup (without verification)? */ ZCHECKSUM_FLAG_DEDUP = (1 << 3), /* Uses salt value */ ZCHECKSUM_FLAG_SALTED = (1 << 4), /* Strong enough for nopwrite? */ ZCHECKSUM_FLAG_NOPWRITE = (1 << 5) } zio_checksum_flags_t; typedef enum { ZIO_CHECKSUM_NATIVE, ZIO_CHECKSUM_BYTESWAP } zio_byteorder_t; typedef struct zio_abd_checksum_data { zio_byteorder_t acd_byteorder; fletcher_4_ctx_t *acd_ctx; zio_cksum_t *acd_zcp; void *acd_private; } zio_abd_checksum_data_t; typedef void zio_abd_checksum_init_t(zio_abd_checksum_data_t *); typedef void zio_abd_checksum_fini_t(zio_abd_checksum_data_t *); typedef int zio_abd_checksum_iter_t(void *, size_t, void *); typedef const struct zio_abd_checksum_func { zio_abd_checksum_init_t *acf_init; zio_abd_checksum_fini_t *acf_fini; zio_abd_checksum_iter_t *acf_iter; } zio_abd_checksum_func_t; /* * Information about each checksum function. */ typedef const struct zio_checksum_info { /* checksum function for each byteorder */ zio_checksum_t *ci_func[2]; zio_checksum_tmpl_init_t *ci_tmpl_init; zio_checksum_tmpl_free_t *ci_tmpl_free; zio_checksum_flags_t ci_flags; char *ci_name; /* descriptive name */ } zio_checksum_info_t; typedef struct zio_bad_cksum { zio_cksum_t zbc_expected; zio_cksum_t zbc_actual; const char *zbc_checksum_name; uint8_t zbc_byteswapped; uint8_t zbc_injected; uint8_t zbc_has_cksum; /* expected/actual valid */ } zio_bad_cksum_t; extern zio_checksum_info_t zio_checksum_table[ZIO_CHECKSUM_FUNCTIONS]; /* * Checksum routines. */ extern zio_checksum_t abd_checksum_SHA256; extern zio_checksum_t abd_checksum_SHA512_native; extern zio_checksum_t abd_checksum_SHA512_byteswap; /* Skein */ extern zio_checksum_t abd_checksum_skein_native; extern zio_checksum_t abd_checksum_skein_byteswap; extern zio_checksum_tmpl_init_t abd_checksum_skein_tmpl_init; extern zio_checksum_tmpl_free_t abd_checksum_skein_tmpl_free; /* Edon-R */ extern zio_checksum_t abd_checksum_edonr_native; extern zio_checksum_t abd_checksum_edonr_byteswap; extern zio_checksum_tmpl_init_t abd_checksum_edonr_tmpl_init; extern zio_checksum_tmpl_free_t abd_checksum_edonr_tmpl_free; extern zio_abd_checksum_func_t fletcher_4_abd_ops; extern zio_checksum_t abd_fletcher_4_native; extern zio_checksum_t abd_fletcher_4_byteswap; extern int zio_checksum_equal(spa_t *, blkptr_t *, enum zio_checksum, void *, uint64_t, uint64_t, zio_bad_cksum_t *); extern void zio_checksum_compute(zio_t *, enum zio_checksum, struct abd *, uint64_t); extern int zio_checksum_error_impl(spa_t *, const blkptr_t *, enum zio_checksum, struct abd *, uint64_t, uint64_t, zio_bad_cksum_t *); extern int zio_checksum_error(zio_t *zio, zio_bad_cksum_t *out); extern enum zio_checksum spa_dedup_checksum(spa_t *spa); extern void zio_checksum_templates_free(spa_t *spa); extern spa_feature_t zio_checksum_to_feature(enum zio_checksum cksum); #ifdef __cplusplus } #endif #endif /* _SYS_ZIO_CHECKSUM_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/sha2.h0000644000000000000000000000007313607166147016674 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.51842717 zfs-0.8.3/include/sys/sha2.h0000644016037001603700000001121413607166147016671 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright 2013 Saso Kiselkov. All rights reserved. */ #ifndef _SYS_SHA2_H #define _SYS_SHA2_H #ifdef _KERNEL #include /* for uint_* */ #else #include #endif #ifdef __cplusplus extern "C" { #endif #define SHA2_HMAC_MIN_KEY_LEN 1 /* SHA2-HMAC min key length in bytes */ #define SHA2_HMAC_MAX_KEY_LEN INT_MAX /* SHA2-HMAC max key length in bytes */ #define SHA256_DIGEST_LENGTH 32 /* SHA256 digest length in bytes */ #define SHA384_DIGEST_LENGTH 48 /* SHA384 digest length in bytes */ #define SHA512_DIGEST_LENGTH 64 /* SHA512 digest length in bytes */ /* Truncated versions of SHA-512 according to FIPS-180-4, section 5.3.6 */ #define SHA512_224_DIGEST_LENGTH 28 /* SHA512/224 digest length */ #define SHA512_256_DIGEST_LENGTH 32 /* SHA512/256 digest length */ #define SHA256_HMAC_BLOCK_SIZE 64 /* SHA256-HMAC block size */ #define SHA512_HMAC_BLOCK_SIZE 128 /* SHA512-HMAC block size */ #define SHA256 0 #define SHA256_HMAC 1 #define SHA256_HMAC_GEN 2 #define SHA384 3 #define SHA384_HMAC 4 #define SHA384_HMAC_GEN 5 #define SHA512 6 #define SHA512_HMAC 7 #define SHA512_HMAC_GEN 8 #define SHA512_224 9 #define SHA512_256 10 /* * SHA2 context. * The contents of this structure are a private interface between the * Init/Update/Final calls of the functions defined below. * Callers must never attempt to read or write any of the fields * in this structure directly. */ typedef struct { uint32_t algotype; /* Algorithm Type */ /* state (ABCDEFGH) */ union { uint32_t s32[8]; /* for SHA256 */ uint64_t s64[8]; /* for SHA384/512 */ } state; /* number of bits */ union { uint32_t c32[2]; /* for SHA256 , modulo 2^64 */ uint64_t c64[2]; /* for SHA384/512, modulo 2^128 */ } count; union { uint8_t buf8[128]; /* undigested input */ uint32_t buf32[32]; /* realigned input */ uint64_t buf64[16]; /* realigned input */ } buf_un; } SHA2_CTX; typedef SHA2_CTX SHA256_CTX; typedef SHA2_CTX SHA384_CTX; typedef SHA2_CTX SHA512_CTX; extern void SHA2Init(uint64_t mech, SHA2_CTX *); extern void SHA2Update(SHA2_CTX *, const void *, size_t); extern void SHA2Final(void *, SHA2_CTX *); extern void SHA256Init(SHA256_CTX *); extern void SHA256Update(SHA256_CTX *, const void *, size_t); extern void SHA256Final(void *, SHA256_CTX *); extern void SHA384Init(SHA384_CTX *); extern void SHA384Update(SHA384_CTX *, const void *, size_t); extern void SHA384Final(void *, SHA384_CTX *); extern void SHA512Init(SHA512_CTX *); extern void SHA512Update(SHA512_CTX *, const void *, size_t); extern void SHA512Final(void *, SHA512_CTX *); #ifdef _SHA2_IMPL /* * The following types/functions are all private to the implementation * of the SHA2 functions and must not be used by consumers of the interface */ /* * List of support mechanisms in this module. * * It is important to note that in the module, division or modulus calculations * are used on the enumerated type to determine which mechanism is being used; * therefore, changing the order or additional mechanisms should be done * carefully */ typedef enum sha2_mech_type { SHA256_MECH_INFO_TYPE, /* SUN_CKM_SHA256 */ SHA256_HMAC_MECH_INFO_TYPE, /* SUN_CKM_SHA256_HMAC */ SHA256_HMAC_GEN_MECH_INFO_TYPE, /* SUN_CKM_SHA256_HMAC_GENERAL */ SHA384_MECH_INFO_TYPE, /* SUN_CKM_SHA384 */ SHA384_HMAC_MECH_INFO_TYPE, /* SUN_CKM_SHA384_HMAC */ SHA384_HMAC_GEN_MECH_INFO_TYPE, /* SUN_CKM_SHA384_HMAC_GENERAL */ SHA512_MECH_INFO_TYPE, /* SUN_CKM_SHA512 */ SHA512_HMAC_MECH_INFO_TYPE, /* SUN_CKM_SHA512_HMAC */ SHA512_HMAC_GEN_MECH_INFO_TYPE, /* SUN_CKM_SHA512_HMAC_GENERAL */ SHA512_224_MECH_INFO_TYPE, /* SUN_CKM_SHA512_224 */ SHA512_256_MECH_INFO_TYPE /* SUN_CKM_SHA512_256 */ } sha2_mech_type_t; #endif /* _SHA2_IMPL */ #ifdef __cplusplus } #endif #endif /* _SYS_SHA2_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zap_leaf.h0000644000000000000000000000007413607166132017613 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.625430606 zfs-0.8.3/include/sys/zap_leaf.h0000644016037001603700000001753713607166132017625 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. */ #ifndef _SYS_ZAP_LEAF_H #define _SYS_ZAP_LEAF_H #include #ifdef __cplusplus extern "C" { #endif struct zap; struct zap_name; struct zap_stats; #define ZAP_LEAF_MAGIC 0x2AB1EAF /* chunk size = 24 bytes */ #define ZAP_LEAF_CHUNKSIZE 24 /* * The amount of space available for chunks is: * block size (1<l_bs) - hash entry size (2) * number of hash * entries - header space (2*chunksize) */ #define ZAP_LEAF_NUMCHUNKS_BS(bs) \ (((1<<(bs)) - 2*ZAP_LEAF_HASH_NUMENTRIES_BS(bs)) / \ ZAP_LEAF_CHUNKSIZE - 2) #define ZAP_LEAF_NUMCHUNKS(l) (ZAP_LEAF_NUMCHUNKS_BS(((l)->l_bs))) #define ZAP_LEAF_NUMCHUNKS_DEF \ (ZAP_LEAF_NUMCHUNKS_BS(fzap_default_block_shift)) /* * The amount of space within the chunk available for the array is: * chunk size - space for type (1) - space for next pointer (2) */ #define ZAP_LEAF_ARRAY_BYTES (ZAP_LEAF_CHUNKSIZE - 3) #define ZAP_LEAF_ARRAY_NCHUNKS(bytes) \ (((bytes)+ZAP_LEAF_ARRAY_BYTES-1)/ZAP_LEAF_ARRAY_BYTES) /* * Low water mark: when there are only this many chunks free, start * growing the ptrtbl. Ideally, this should be larger than a * "reasonably-sized" entry. 20 chunks is more than enough for the * largest directory entry (MAXNAMELEN (256) byte name, 8-byte value), * while still being only around 3% for 16k blocks. */ #define ZAP_LEAF_LOW_WATER (20) /* * The leaf hash table has block size / 2^5 (32) number of entries, * which should be more than enough for the maximum number of entries, * which is less than block size / CHUNKSIZE (24) / minimum number of * chunks per entry (3). */ #define ZAP_LEAF_HASH_SHIFT_BS(bs) ((bs) - 5) #define ZAP_LEAF_HASH_NUMENTRIES_BS(bs) (1 << ZAP_LEAF_HASH_SHIFT_BS(bs)) #define ZAP_LEAF_HASH_SHIFT(l) (ZAP_LEAF_HASH_SHIFT_BS(((l)->l_bs))) #define ZAP_LEAF_HASH_NUMENTRIES(l) (ZAP_LEAF_HASH_NUMENTRIES_BS(((l)->l_bs))) /* * The chunks start immediately after the hash table. The end of the * hash table is at l_hash + HASH_NUMENTRIES, which we simply cast to a * chunk_t. */ #define ZAP_LEAF_CHUNK(l, idx) \ ((zap_leaf_chunk_t *) \ (zap_leaf_phys(l)->l_hash + ZAP_LEAF_HASH_NUMENTRIES(l)))[idx] #define ZAP_LEAF_ENTRY(l, idx) (&ZAP_LEAF_CHUNK(l, idx).l_entry) typedef enum zap_chunk_type { ZAP_CHUNK_FREE = 253, ZAP_CHUNK_ENTRY = 252, ZAP_CHUNK_ARRAY = 251, ZAP_CHUNK_TYPE_MAX = 250 } zap_chunk_type_t; #define ZLF_ENTRIES_CDSORTED (1<<0) /* * TAKE NOTE: * If zap_leaf_phys_t is modified, zap_leaf_byteswap() must be modified. */ typedef struct zap_leaf_phys { struct zap_leaf_header { /* Public to ZAP */ uint64_t lh_block_type; /* ZBT_LEAF */ uint64_t lh_pad1; uint64_t lh_prefix; /* hash prefix of this leaf */ uint32_t lh_magic; /* ZAP_LEAF_MAGIC */ uint16_t lh_nfree; /* number free chunks */ uint16_t lh_nentries; /* number of entries */ uint16_t lh_prefix_len; /* num bits used to id this */ /* Private to zap_leaf */ uint16_t lh_freelist; /* chunk head of free list */ uint8_t lh_flags; /* ZLF_* flags */ uint8_t lh_pad2[11]; } l_hdr; /* 2 24-byte chunks */ /* * The header is followed by a hash table with * ZAP_LEAF_HASH_NUMENTRIES(zap) entries. The hash table is * followed by an array of ZAP_LEAF_NUMCHUNKS(zap) * zap_leaf_chunk structures. These structures are accessed * with the ZAP_LEAF_CHUNK() macro. */ uint16_t l_hash[1]; } zap_leaf_phys_t; typedef union zap_leaf_chunk { struct zap_leaf_entry { uint8_t le_type; /* always ZAP_CHUNK_ENTRY */ uint8_t le_value_intlen; /* size of value's ints */ uint16_t le_next; /* next entry in hash chain */ uint16_t le_name_chunk; /* first chunk of the name */ uint16_t le_name_numints; /* ints in name (incl null) */ uint16_t le_value_chunk; /* first chunk of the value */ uint16_t le_value_numints; /* value length in ints */ uint32_t le_cd; /* collision differentiator */ uint64_t le_hash; /* hash value of the name */ } l_entry; struct zap_leaf_array { uint8_t la_type; /* always ZAP_CHUNK_ARRAY */ uint8_t la_array[ZAP_LEAF_ARRAY_BYTES]; uint16_t la_next; /* next blk or CHAIN_END */ } l_array; struct zap_leaf_free { uint8_t lf_type; /* always ZAP_CHUNK_FREE */ uint8_t lf_pad[ZAP_LEAF_ARRAY_BYTES]; uint16_t lf_next; /* next in free list, or CHAIN_END */ } l_free; } zap_leaf_chunk_t; typedef struct zap_leaf { dmu_buf_user_t l_dbu; krwlock_t l_rwlock; uint64_t l_blkid; /* 1<l_dbuf->db_data); } typedef struct zap_entry_handle { /* Set by zap_leaf and public to ZAP */ uint64_t zeh_num_integers; uint64_t zeh_hash; uint32_t zeh_cd; uint8_t zeh_integer_size; /* Private to zap_leaf */ uint16_t zeh_fakechunk; uint16_t *zeh_chunkp; zap_leaf_t *zeh_leaf; } zap_entry_handle_t; /* * Return a handle to the named entry, or ENOENT if not found. The hash * value must equal zap_hash(name). */ extern int zap_leaf_lookup(zap_leaf_t *l, struct zap_name *zn, zap_entry_handle_t *zeh); /* * Return a handle to the entry with this hash+cd, or the entry with the * next closest hash+cd. */ extern int zap_leaf_lookup_closest(zap_leaf_t *l, uint64_t hash, uint32_t cd, zap_entry_handle_t *zeh); /* * Read the first num_integers in the attribute. Integer size * conversion will be done without sign extension. Return EINVAL if * integer_size is too small. Return EOVERFLOW if there are more than * num_integers in the attribute. */ extern int zap_entry_read(const zap_entry_handle_t *zeh, uint8_t integer_size, uint64_t num_integers, void *buf); extern int zap_entry_read_name(struct zap *zap, const zap_entry_handle_t *zeh, uint16_t buflen, char *buf); /* * Replace the value of an existing entry. * * May fail if it runs out of space (ENOSPC). */ extern int zap_entry_update(zap_entry_handle_t *zeh, uint8_t integer_size, uint64_t num_integers, const void *buf); /* * Remove an entry. */ extern void zap_entry_remove(zap_entry_handle_t *zeh); /* * Create an entry. An equal entry must not exist, and this entry must * belong in this leaf (according to its hash value). Fills in the * entry handle on success. Returns 0 on success or ENOSPC on failure. */ extern int zap_entry_create(zap_leaf_t *l, struct zap_name *zn, uint32_t cd, uint8_t integer_size, uint64_t num_integers, const void *buf, zap_entry_handle_t *zeh); /* Determine whether there is another entry with the same normalized form. */ extern boolean_t zap_entry_normalization_conflict(zap_entry_handle_t *zeh, struct zap_name *zn, const char *name, struct zap *zap); /* * Other stuff. */ extern void zap_leaf_init(zap_leaf_t *l, boolean_t sort); extern void zap_leaf_byteswap(zap_leaf_phys_t *buf, int len); extern void zap_leaf_split(zap_leaf_t *l, zap_leaf_t *nl, boolean_t sort); extern void zap_leaf_stats(struct zap *zap, zap_leaf_t *l, struct zap_stats *zs); #ifdef __cplusplus } #endif #endif /* _SYS_ZAP_LEAF_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/uberblock.h0000644000000000000000000000007413607166132020002 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.582429224 zfs-0.8.3/include/sys/uberblock.h0000644016037001603700000000255713607166132020010 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2014 by Delphix. All rights reserved. */ #ifndef _SYS_UBERBLOCK_H #define _SYS_UBERBLOCK_H #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct uberblock uberblock_t; extern int uberblock_verify(uberblock_t *); extern boolean_t uberblock_update(uberblock_t *ub, vdev_t *rvd, uint64_t txg, uint64_t mmp_delay); #ifdef __cplusplus } #endif #endif /* _SYS_UBERBLOCK_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zcp.h0000644000000000000000000000007313612141513016615 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.62743067 zfs-0.8.3/include/sys/zcp.h0000644016037001603700000001110513612141513016611 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2016, 2018 by Delphix. All rights reserved. */ #ifndef _SYS_ZCP_H #define _SYS_ZCP_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define ZCP_RUN_INFO_KEY "runinfo" extern unsigned long zfs_lua_max_instrlimit; extern unsigned long zfs_lua_max_memlimit; int zcp_argerror(lua_State *, int, const char *, ...); int zcp_eval(const char *, const char *, boolean_t, uint64_t, uint64_t, nvpair_t *, nvlist_t *); int zcp_load_list_lib(lua_State *); int zcp_load_synctask_lib(lua_State *, boolean_t); typedef void (zcp_cleanup_t)(void *); typedef struct zcp_cleanup_handler { zcp_cleanup_t *zch_cleanup_func; void *zch_cleanup_arg; list_node_t zch_node; } zcp_cleanup_handler_t; typedef struct zcp_alloc_arg { boolean_t aa_must_succeed; int64_t aa_alloc_remaining; int64_t aa_alloc_limit; } zcp_alloc_arg_t; typedef struct zcp_run_info { dsl_pool_t *zri_pool; /* * An estimate of the total amount of space consumed by all * synctasks we have successfully performed so far in this * channel program. Used to generate ENOSPC errors for syncfuncs. */ int zri_space_used; /* * The credentials of the thread which originally invoked the channel * program. Since channel programs are always invoked from the synctask * thread they should always do permissions checks against this cred * rather than the 'current' thread's. */ cred_t *zri_cred; /* * The tx in which this channel program is running. */ dmu_tx_t *zri_tx; /* * The maximum number of Lua instructions the channel program is allowed * to execute. If it takes longer than this it will time out. A value * of 0 indicates no instruction limit. */ uint64_t zri_maxinstrs; /* * The number of Lua instructions the channel program has executed. */ uint64_t zri_curinstrs; /* * Boolean indicating whether or not the channel program exited * because it timed out. */ boolean_t zri_timed_out; /* * Channel program was canceled by user */ boolean_t zri_canceled; /* * Boolean indicating whether or not we are running in syncing * context. */ boolean_t zri_sync; /* * List of currently registered cleanup handlers, which will be * triggered in the event of a fatal error. */ list_t zri_cleanup_handlers; /* * The Lua state context of our channel program. */ lua_State *zri_state; /* * Lua memory allocator arguments. */ zcp_alloc_arg_t *zri_allocargs; /* * Contains output values from zcp script or error string. */ nvlist_t *zri_outnvl; /* * The errno number returned to caller of zcp_eval(). */ int zri_result; } zcp_run_info_t; zcp_run_info_t *zcp_run_info(lua_State *); zcp_cleanup_handler_t *zcp_register_cleanup(lua_State *, zcp_cleanup_t, void *); void zcp_deregister_cleanup(lua_State *, zcp_cleanup_handler_t *); void zcp_cleanup(lua_State *); /* * Argument parsing routines for channel program callback functions. */ typedef struct zcp_arg { /* * The name of this argument. For keyword arguments this is the name * functions will use to set the argument. For positional arguments * the name has no programmatic meaning, but will appear in error * messages and help output. */ const char *za_name; /* * The Lua type this argument should have (e.g. LUA_TSTRING, * LUA_TBOOLEAN) see the lua_type() function documentation for a * complete list. Calling a function with an argument that does * not match the expected type will result in the program terminating. */ const int za_lua_type; } zcp_arg_t; void zcp_parse_args(lua_State *, const char *, const zcp_arg_t *, const zcp_arg_t *); int zcp_nvlist_to_lua(lua_State *, nvlist_t *, char *, int); int zcp_dataset_hold_error(lua_State *, dsl_pool_t *, const char *, int); struct dsl_dataset *zcp_dataset_hold(lua_State *, dsl_pool_t *, const char *, void *); typedef int (zcp_lib_func_t)(lua_State *); typedef struct zcp_lib_info { const char *name; zcp_lib_func_t *func; const zcp_arg_t pargs[4]; const zcp_arg_t kwargs[2]; } zcp_lib_info_t; #ifdef __cplusplus } #endif #endif /* _SYS_ZCP_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_zio.h0000644000000000000000000000007413607166147020017 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.565428677 zfs-0.8.3/include/sys/trace_zio.h0000644016037001603700000000455413607166147020024 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #include #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_zio #if !defined(_TRACE_ZIO_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_ZIO_H #include #include #include /* For ZIO macros */ /* BEGIN CSTYLED */ TRACE_EVENT(zfs_zio__delay__miss, TP_PROTO(zio_t *zio, hrtime_t now), TP_ARGS(zio, now), TP_STRUCT__entry( ZIO_TP_STRUCT_ENTRY __field(hrtime_t, now) ), TP_fast_assign( ZIO_TP_FAST_ASSIGN __entry->now = now; ), TP_printk("now %llu " ZIO_TP_PRINTK_FMT, __entry->now, ZIO_TP_PRINTK_ARGS) ); TRACE_EVENT(zfs_zio__delay__hit, TP_PROTO(zio_t *zio, hrtime_t now, hrtime_t diff), TP_ARGS(zio, now, diff), TP_STRUCT__entry( ZIO_TP_STRUCT_ENTRY __field(hrtime_t, now) __field(hrtime_t, diff) ), TP_fast_assign( ZIO_TP_FAST_ASSIGN __entry->now = now; __entry->diff = diff; ), TP_printk("now %llu diff %llu " ZIO_TP_PRINTK_FMT, __entry->now, __entry->diff, ZIO_TP_PRINTK_ARGS) ); TRACE_EVENT(zfs_zio__delay__skip, TP_PROTO(zio_t *zio), TP_ARGS(zio), TP_STRUCT__entry(ZIO_TP_STRUCT_ENTRY), TP_fast_assign(ZIO_TP_FAST_ASSIGN), TP_printk(ZIO_TP_PRINTK_FMT, ZIO_TP_PRINTK_ARGS) ); /* END CSTYLED */ #endif /* _TRACE_ZIO_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_zio #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/rrwlock.h0000644000000000000000000000007413607166147017523 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.509426879 zfs-0.8.3/include/sys/rrwlock.h0000644016037001603700000000677613607166147017540 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012 by Delphix. All rights reserved. */ #ifndef _SYS_RR_RW_LOCK_H #define _SYS_RR_RW_LOCK_H #ifdef __cplusplus extern "C" { #endif #include #include #include /* * A reader-writer lock implementation that allows re-entrant reads, but * still gives writers priority on "new" reads. * * See rrwlock.c for more details about the implementation. * * Fields of the rrwlock_t structure: * - rr_lock: protects modification and reading of rrwlock_t fields * - rr_cv: cv for waking up readers or waiting writers * - rr_writer: thread id of the current writer * - rr_anon_rount: number of active anonymous readers * - rr_linked_rcount: total number of non-anonymous active readers * - rr_writer_wanted: a writer wants the lock */ typedef struct rrwlock { kmutex_t rr_lock; kcondvar_t rr_cv; kthread_t *rr_writer; zfs_refcount_t rr_anon_rcount; zfs_refcount_t rr_linked_rcount; boolean_t rr_writer_wanted; boolean_t rr_track_all; } rrwlock_t; /* * 'tag' is used in reference counting tracking. The * 'tag' must be the same in a rrw_enter() as in its * corresponding rrw_exit(). */ void rrw_init(rrwlock_t *rrl, boolean_t track_all); void rrw_destroy(rrwlock_t *rrl); void rrw_enter(rrwlock_t *rrl, krw_t rw, void *tag); void rrw_enter_read(rrwlock_t *rrl, void *tag); void rrw_enter_read_prio(rrwlock_t *rrl, void *tag); void rrw_enter_write(rrwlock_t *rrl); void rrw_exit(rrwlock_t *rrl, void *tag); boolean_t rrw_held(rrwlock_t *rrl, krw_t rw); void rrw_tsd_destroy(void *arg); #define RRW_READ_HELD(x) rrw_held(x, RW_READER) #define RRW_WRITE_HELD(x) rrw_held(x, RW_WRITER) #define RRW_LOCK_HELD(x) \ (rrw_held(x, RW_WRITER) || rrw_held(x, RW_READER)) /* * A reader-mostly lock implementation, tuning above reader-writer locks * for hightly parallel read acquisitions, pessimizing write acquisitions. * * This should be a prime number. See comment in rrwlock.c near * RRM_TD_LOCK() for details. */ #define RRM_NUM_LOCKS 17 typedef struct rrmlock { rrwlock_t locks[RRM_NUM_LOCKS]; } rrmlock_t; void rrm_init(rrmlock_t *rrl, boolean_t track_all); void rrm_destroy(rrmlock_t *rrl); void rrm_enter(rrmlock_t *rrl, krw_t rw, void *tag); void rrm_enter_read(rrmlock_t *rrl, void *tag); void rrm_enter_write(rrmlock_t *rrl); void rrm_exit(rrmlock_t *rrl, void *tag); boolean_t rrm_held(rrmlock_t *rrl, krw_t rw); #define RRM_READ_HELD(x) rrm_held(x, RW_READER) #define RRM_WRITE_HELD(x) rrm_held(x, RW_WRITER) #define RRM_LOCK_HELD(x) \ (rrm_held(x, RW_WRITER) || rrm_held(x, RW_READER)) #ifdef __cplusplus } #endif #endif /* _SYS_RR_RW_LOCK_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/multilist.h0000644000000000000000000000007413607166132020060 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.491426303 zfs-0.8.3/include/sys/multilist.h0000644016037001603700000000642213607166132020061 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2013, 2017 by Delphix. All rights reserved. */ #ifndef _SYS_MULTILIST_H #define _SYS_MULTILIST_H #include #ifdef __cplusplus extern "C" { #endif typedef list_node_t multilist_node_t; typedef struct multilist multilist_t; typedef struct multilist_sublist multilist_sublist_t; typedef unsigned int multilist_sublist_index_func_t(multilist_t *, void *); struct multilist_sublist { /* * The mutex used internally to implement thread safe insertions * and removals to this individual sublist. It can also be locked * by a consumer using multilist_sublist_{lock,unlock}, which is * useful if a consumer needs to traverse the list in a thread * safe manner. */ kmutex_t mls_lock; /* * The actual list object containing all objects in this sublist. */ list_t mls_list; /* * Pad to cache line, in an effort to try and prevent cache line * contention. */ } ____cacheline_aligned; struct multilist { /* * This is used to get to the multilist_node_t structure given * the void *object contained on the list. */ size_t ml_offset; /* * The number of sublists used internally by this multilist. */ uint64_t ml_num_sublists; /* * The array of pointers to the actual sublists. */ multilist_sublist_t *ml_sublists; /* * Pointer to function which determines the sublist to use * when inserting and removing objects from this multilist. * Please see the comment above multilist_create for details. */ multilist_sublist_index_func_t *ml_index_func; }; void multilist_destroy(multilist_t *); multilist_t *multilist_create(size_t, size_t, multilist_sublist_index_func_t *); void multilist_insert(multilist_t *, void *); void multilist_remove(multilist_t *, void *); int multilist_is_empty(multilist_t *); unsigned int multilist_get_num_sublists(multilist_t *); unsigned int multilist_get_random_index(multilist_t *); multilist_sublist_t *multilist_sublist_lock(multilist_t *, unsigned int); multilist_sublist_t *multilist_sublist_lock_obj(multilist_t *, void *); void multilist_sublist_unlock(multilist_sublist_t *); void multilist_sublist_insert_head(multilist_sublist_t *, void *); void multilist_sublist_insert_tail(multilist_sublist_t *, void *); void multilist_sublist_move_forward(multilist_sublist_t *mls, void *obj); void multilist_sublist_remove(multilist_sublist_t *, void *); int multilist_sublist_is_empty(multilist_sublist_t *); int multilist_sublist_is_empty_idx(multilist_t *, unsigned int); void *multilist_sublist_head(multilist_sublist_t *); void *multilist_sublist_tail(multilist_sublist_t *); void *multilist_sublist_next(multilist_sublist_t *, void *); void *multilist_sublist_prev(multilist_sublist_t *, void *); void multilist_link_init(multilist_node_t *); int multilist_link_active(multilist_node_t *); #ifdef __cplusplus } #endif #endif /* _SYS_MULTILIST_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dmu.h0000644000000000000000000000007413612141513016607 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.426424214 zfs-0.8.3/include/sys/dmu.h0000644016037001603700000011647713612141513016624 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright 2014 HybridCluster. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. * Copyright 2013 Saso Kiselkov. All rights reserved. * Copyright (c) 2017, Intel Corporation. */ /* Portions Copyright 2010 Robert Milkowski */ #ifndef _SYS_DMU_H #define _SYS_DMU_H /* * This file describes the interface that the DMU provides for its * consumers. * * The DMU also interacts with the SPA. That interface is described in * dmu_spa.h. */ #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct page; struct vnode; struct spa; struct zilog; struct zio; struct blkptr; struct zap_cursor; struct dsl_dataset; struct dsl_pool; struct dnode; struct drr_begin; struct drr_end; struct zbookmark_phys; struct spa; struct nvlist; struct arc_buf; struct zio_prop; struct sa_handle; struct dsl_crypto_params; struct locked_range; typedef struct objset objset_t; typedef struct dmu_tx dmu_tx_t; typedef struct dsl_dir dsl_dir_t; typedef struct dnode dnode_t; typedef enum dmu_object_byteswap { DMU_BSWAP_UINT8, DMU_BSWAP_UINT16, DMU_BSWAP_UINT32, DMU_BSWAP_UINT64, DMU_BSWAP_ZAP, DMU_BSWAP_DNODE, DMU_BSWAP_OBJSET, DMU_BSWAP_ZNODE, DMU_BSWAP_OLDACL, DMU_BSWAP_ACL, /* * Allocating a new byteswap type number makes the on-disk format * incompatible with any other format that uses the same number. * * Data can usually be structured to work with one of the * DMU_BSWAP_UINT* or DMU_BSWAP_ZAP types. */ DMU_BSWAP_NUMFUNCS } dmu_object_byteswap_t; #define DMU_OT_NEWTYPE 0x80 #define DMU_OT_METADATA 0x40 #define DMU_OT_ENCRYPTED 0x20 #define DMU_OT_BYTESWAP_MASK 0x1f /* * Defines a uint8_t object type. Object types specify if the data * in the object is metadata (boolean) and how to byteswap the data * (dmu_object_byteswap_t). All of the types created by this method * are cached in the dbuf metadata cache. */ #define DMU_OT(byteswap, metadata, encrypted) \ (DMU_OT_NEWTYPE | \ ((metadata) ? DMU_OT_METADATA : 0) | \ ((encrypted) ? DMU_OT_ENCRYPTED : 0) | \ ((byteswap) & DMU_OT_BYTESWAP_MASK)) #define DMU_OT_IS_VALID(ot) (((ot) & DMU_OT_NEWTYPE) ? \ ((ot) & DMU_OT_BYTESWAP_MASK) < DMU_BSWAP_NUMFUNCS : \ (ot) < DMU_OT_NUMTYPES) #define DMU_OT_IS_METADATA_CACHED(ot) (((ot) & DMU_OT_NEWTYPE) ? \ B_TRUE : dmu_ot[(ot)].ot_dbuf_metadata_cache) /* * MDB doesn't have dmu_ot; it defines these macros itself. */ #ifndef ZFS_MDB #define DMU_OT_IS_METADATA_IMPL(ot) (dmu_ot[ot].ot_metadata) #define DMU_OT_IS_ENCRYPTED_IMPL(ot) (dmu_ot[ot].ot_encrypt) #define DMU_OT_BYTESWAP_IMPL(ot) (dmu_ot[ot].ot_byteswap) #endif #define DMU_OT_IS_METADATA(ot) (((ot) & DMU_OT_NEWTYPE) ? \ ((ot) & DMU_OT_METADATA) : \ DMU_OT_IS_METADATA_IMPL(ot)) #define DMU_OT_IS_DDT(ot) \ ((ot) == DMU_OT_DDT_ZAP) #define DMU_OT_IS_ZIL(ot) \ ((ot) == DMU_OT_INTENT_LOG) /* Note: ztest uses DMU_OT_UINT64_OTHER as a proxy for file blocks */ #define DMU_OT_IS_FILE(ot) \ ((ot) == DMU_OT_PLAIN_FILE_CONTENTS || (ot) == DMU_OT_UINT64_OTHER) #define DMU_OT_IS_ENCRYPTED(ot) (((ot) & DMU_OT_NEWTYPE) ? \ ((ot) & DMU_OT_ENCRYPTED) : \ DMU_OT_IS_ENCRYPTED_IMPL(ot)) /* * These object types use bp_fill != 1 for their L0 bp's. Therefore they can't * have their data embedded (i.e. use a BP_IS_EMBEDDED() bp), because bp_fill * is repurposed for embedded BPs. */ #define DMU_OT_HAS_FILL(ot) \ ((ot) == DMU_OT_DNODE || (ot) == DMU_OT_OBJSET) #define DMU_OT_BYTESWAP(ot) (((ot) & DMU_OT_NEWTYPE) ? \ ((ot) & DMU_OT_BYTESWAP_MASK) : \ DMU_OT_BYTESWAP_IMPL(ot)) typedef enum dmu_object_type { DMU_OT_NONE, /* general: */ DMU_OT_OBJECT_DIRECTORY, /* ZAP */ DMU_OT_OBJECT_ARRAY, /* UINT64 */ DMU_OT_PACKED_NVLIST, /* UINT8 (XDR by nvlist_pack/unpack) */ DMU_OT_PACKED_NVLIST_SIZE, /* UINT64 */ DMU_OT_BPOBJ, /* UINT64 */ DMU_OT_BPOBJ_HDR, /* UINT64 */ /* spa: */ DMU_OT_SPACE_MAP_HEADER, /* UINT64 */ DMU_OT_SPACE_MAP, /* UINT64 */ /* zil: */ DMU_OT_INTENT_LOG, /* UINT64 */ /* dmu: */ DMU_OT_DNODE, /* DNODE */ DMU_OT_OBJSET, /* OBJSET */ /* dsl: */ DMU_OT_DSL_DIR, /* UINT64 */ DMU_OT_DSL_DIR_CHILD_MAP, /* ZAP */ DMU_OT_DSL_DS_SNAP_MAP, /* ZAP */ DMU_OT_DSL_PROPS, /* ZAP */ DMU_OT_DSL_DATASET, /* UINT64 */ /* zpl: */ DMU_OT_ZNODE, /* ZNODE */ DMU_OT_OLDACL, /* Old ACL */ DMU_OT_PLAIN_FILE_CONTENTS, /* UINT8 */ DMU_OT_DIRECTORY_CONTENTS, /* ZAP */ DMU_OT_MASTER_NODE, /* ZAP */ DMU_OT_UNLINKED_SET, /* ZAP */ /* zvol: */ DMU_OT_ZVOL, /* UINT8 */ DMU_OT_ZVOL_PROP, /* ZAP */ /* other; for testing only! */ DMU_OT_PLAIN_OTHER, /* UINT8 */ DMU_OT_UINT64_OTHER, /* UINT64 */ DMU_OT_ZAP_OTHER, /* ZAP */ /* new object types: */ DMU_OT_ERROR_LOG, /* ZAP */ DMU_OT_SPA_HISTORY, /* UINT8 */ DMU_OT_SPA_HISTORY_OFFSETS, /* spa_his_phys_t */ DMU_OT_POOL_PROPS, /* ZAP */ DMU_OT_DSL_PERMS, /* ZAP */ DMU_OT_ACL, /* ACL */ DMU_OT_SYSACL, /* SYSACL */ DMU_OT_FUID, /* FUID table (Packed NVLIST UINT8) */ DMU_OT_FUID_SIZE, /* FUID table size UINT64 */ DMU_OT_NEXT_CLONES, /* ZAP */ DMU_OT_SCAN_QUEUE, /* ZAP */ DMU_OT_USERGROUP_USED, /* ZAP */ DMU_OT_USERGROUP_QUOTA, /* ZAP */ DMU_OT_USERREFS, /* ZAP */ DMU_OT_DDT_ZAP, /* ZAP */ DMU_OT_DDT_STATS, /* ZAP */ DMU_OT_SA, /* System attr */ DMU_OT_SA_MASTER_NODE, /* ZAP */ DMU_OT_SA_ATTR_REGISTRATION, /* ZAP */ DMU_OT_SA_ATTR_LAYOUTS, /* ZAP */ DMU_OT_SCAN_XLATE, /* ZAP */ DMU_OT_DEDUP, /* fake dedup BP from ddt_bp_create() */ DMU_OT_DEADLIST, /* ZAP */ DMU_OT_DEADLIST_HDR, /* UINT64 */ DMU_OT_DSL_CLONES, /* ZAP */ DMU_OT_BPOBJ_SUBOBJ, /* UINT64 */ /* * Do not allocate new object types here. Doing so makes the on-disk * format incompatible with any other format that uses the same object * type number. * * When creating an object which does not have one of the above types * use the DMU_OTN_* type with the correct byteswap and metadata * values. * * The DMU_OTN_* types do not have entries in the dmu_ot table, * use the DMU_OT_IS_METADATA() and DMU_OT_BYTESWAP() macros instead * of indexing into dmu_ot directly (this works for both DMU_OT_* types * and DMU_OTN_* types). */ DMU_OT_NUMTYPES, /* * Names for valid types declared with DMU_OT(). */ DMU_OTN_UINT8_DATA = DMU_OT(DMU_BSWAP_UINT8, B_FALSE, B_FALSE), DMU_OTN_UINT8_METADATA = DMU_OT(DMU_BSWAP_UINT8, B_TRUE, B_FALSE), DMU_OTN_UINT16_DATA = DMU_OT(DMU_BSWAP_UINT16, B_FALSE, B_FALSE), DMU_OTN_UINT16_METADATA = DMU_OT(DMU_BSWAP_UINT16, B_TRUE, B_FALSE), DMU_OTN_UINT32_DATA = DMU_OT(DMU_BSWAP_UINT32, B_FALSE, B_FALSE), DMU_OTN_UINT32_METADATA = DMU_OT(DMU_BSWAP_UINT32, B_TRUE, B_FALSE), DMU_OTN_UINT64_DATA = DMU_OT(DMU_BSWAP_UINT64, B_FALSE, B_FALSE), DMU_OTN_UINT64_METADATA = DMU_OT(DMU_BSWAP_UINT64, B_TRUE, B_FALSE), DMU_OTN_ZAP_DATA = DMU_OT(DMU_BSWAP_ZAP, B_FALSE, B_FALSE), DMU_OTN_ZAP_METADATA = DMU_OT(DMU_BSWAP_ZAP, B_TRUE, B_FALSE), DMU_OTN_UINT8_ENC_DATA = DMU_OT(DMU_BSWAP_UINT8, B_FALSE, B_TRUE), DMU_OTN_UINT8_ENC_METADATA = DMU_OT(DMU_BSWAP_UINT8, B_TRUE, B_TRUE), DMU_OTN_UINT16_ENC_DATA = DMU_OT(DMU_BSWAP_UINT16, B_FALSE, B_TRUE), DMU_OTN_UINT16_ENC_METADATA = DMU_OT(DMU_BSWAP_UINT16, B_TRUE, B_TRUE), DMU_OTN_UINT32_ENC_DATA = DMU_OT(DMU_BSWAP_UINT32, B_FALSE, B_TRUE), DMU_OTN_UINT32_ENC_METADATA = DMU_OT(DMU_BSWAP_UINT32, B_TRUE, B_TRUE), DMU_OTN_UINT64_ENC_DATA = DMU_OT(DMU_BSWAP_UINT64, B_FALSE, B_TRUE), DMU_OTN_UINT64_ENC_METADATA = DMU_OT(DMU_BSWAP_UINT64, B_TRUE, B_TRUE), DMU_OTN_ZAP_ENC_DATA = DMU_OT(DMU_BSWAP_ZAP, B_FALSE, B_TRUE), DMU_OTN_ZAP_ENC_METADATA = DMU_OT(DMU_BSWAP_ZAP, B_TRUE, B_TRUE), } dmu_object_type_t; /* * These flags are intended to be used to specify the "txg_how" * parameter when calling the dmu_tx_assign() function. See the comment * above dmu_tx_assign() for more details on the meaning of these flags. */ #define TXG_NOWAIT (0ULL) #define TXG_WAIT (1ULL<<0) #define TXG_NOTHROTTLE (1ULL<<1) void byteswap_uint64_array(void *buf, size_t size); void byteswap_uint32_array(void *buf, size_t size); void byteswap_uint16_array(void *buf, size_t size); void byteswap_uint8_array(void *buf, size_t size); void zap_byteswap(void *buf, size_t size); void zfs_oldacl_byteswap(void *buf, size_t size); void zfs_acl_byteswap(void *buf, size_t size); void zfs_znode_byteswap(void *buf, size_t size); #define DS_FIND_SNAPSHOTS (1<<0) #define DS_FIND_CHILDREN (1<<1) #define DS_FIND_SERIALIZE (1<<2) /* * The maximum number of bytes that can be accessed as part of one * operation, including metadata. */ #define DMU_MAX_ACCESS (64 * 1024 * 1024) /* 64MB */ #define DMU_MAX_DELETEBLKCNT (20480) /* ~5MB of indirect blocks */ #define DMU_USERUSED_OBJECT (-1ULL) #define DMU_GROUPUSED_OBJECT (-2ULL) #define DMU_PROJECTUSED_OBJECT (-3ULL) /* * Zap prefix for object accounting in DMU_{USER,GROUP,PROJECT}USED_OBJECT. */ #define DMU_OBJACCT_PREFIX "obj-" #define DMU_OBJACCT_PREFIX_LEN 4 /* * artificial blkids for bonus buffer and spill blocks */ #define DMU_BONUS_BLKID (-1ULL) #define DMU_SPILL_BLKID (-2ULL) /* * Public routines to create, destroy, open, and close objsets. */ typedef void dmu_objset_create_sync_func_t(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx); int dmu_objset_hold(const char *name, void *tag, objset_t **osp); int dmu_objset_own(const char *name, dmu_objset_type_t type, boolean_t readonly, boolean_t key_required, void *tag, objset_t **osp); void dmu_objset_rele(objset_t *os, void *tag); void dmu_objset_disown(objset_t *os, boolean_t key_required, void *tag); int dmu_objset_open_ds(struct dsl_dataset *ds, objset_t **osp); void dmu_objset_evict_dbufs(objset_t *os); int dmu_objset_create(const char *name, dmu_objset_type_t type, uint64_t flags, struct dsl_crypto_params *dcp, dmu_objset_create_sync_func_t func, void *arg); int dmu_objset_clone(const char *name, const char *origin); int dsl_destroy_snapshots_nvl(struct nvlist *snaps, boolean_t defer, struct nvlist *errlist); int dmu_objset_snapshot_one(const char *fsname, const char *snapname); int dmu_objset_snapshot_tmp(const char *, const char *, int); int dmu_objset_find(char *name, int func(const char *, void *), void *arg, int flags); void dmu_objset_byteswap(void *buf, size_t size); int dsl_dataset_rename_snapshot(const char *fsname, const char *oldsnapname, const char *newsnapname, boolean_t recursive); int dmu_objset_remap_indirects(const char *fsname); typedef struct dmu_buf { uint64_t db_object; /* object that this buffer is part of */ uint64_t db_offset; /* byte offset in this object */ uint64_t db_size; /* size of buffer in bytes */ void *db_data; /* data in buffer */ } dmu_buf_t; /* * The names of zap entries in the DIRECTORY_OBJECT of the MOS. */ #define DMU_POOL_DIRECTORY_OBJECT 1 #define DMU_POOL_CONFIG "config" #define DMU_POOL_FEATURES_FOR_WRITE "features_for_write" #define DMU_POOL_FEATURES_FOR_READ "features_for_read" #define DMU_POOL_FEATURE_DESCRIPTIONS "feature_descriptions" #define DMU_POOL_FEATURE_ENABLED_TXG "feature_enabled_txg" #define DMU_POOL_ROOT_DATASET "root_dataset" #define DMU_POOL_SYNC_BPOBJ "sync_bplist" #define DMU_POOL_ERRLOG_SCRUB "errlog_scrub" #define DMU_POOL_ERRLOG_LAST "errlog_last" #define DMU_POOL_SPARES "spares" #define DMU_POOL_DEFLATE "deflate" #define DMU_POOL_HISTORY "history" #define DMU_POOL_PROPS "pool_props" #define DMU_POOL_L2CACHE "l2cache" #define DMU_POOL_TMP_USERREFS "tmp_userrefs" #define DMU_POOL_DDT "DDT-%s-%s-%s" #define DMU_POOL_DDT_STATS "DDT-statistics" #define DMU_POOL_CREATION_VERSION "creation_version" #define DMU_POOL_SCAN "scan" #define DMU_POOL_FREE_BPOBJ "free_bpobj" #define DMU_POOL_BPTREE_OBJ "bptree_obj" #define DMU_POOL_EMPTY_BPOBJ "empty_bpobj" #define DMU_POOL_CHECKSUM_SALT "org.illumos:checksum_salt" #define DMU_POOL_VDEV_ZAP_MAP "com.delphix:vdev_zap_map" #define DMU_POOL_REMOVING "com.delphix:removing" #define DMU_POOL_OBSOLETE_BPOBJ "com.delphix:obsolete_bpobj" #define DMU_POOL_CONDENSING_INDIRECT "com.delphix:condensing_indirect" #define DMU_POOL_ZPOOL_CHECKPOINT "com.delphix:zpool_checkpoint" /* * Allocate an object from this objset. The range of object numbers * available is (0, DN_MAX_OBJECT). Object 0 is the meta-dnode. * * The transaction must be assigned to a txg. The newly allocated * object will be "held" in the transaction (ie. you can modify the * newly allocated object in this transaction). * * dmu_object_alloc() chooses an object and returns it in *objectp. * * dmu_object_claim() allocates a specific object number. If that * number is already allocated, it fails and returns EEXIST. * * Return 0 on success, or ENOSPC or EEXIST as specified above. */ uint64_t dmu_object_alloc(objset_t *os, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonus_type, int bonus_len, dmu_tx_t *tx); uint64_t dmu_object_alloc_ibs(objset_t *os, dmu_object_type_t ot, int blocksize, int indirect_blockshift, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); uint64_t dmu_object_alloc_dnsize(objset_t *os, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonus_type, int bonus_len, int dnodesize, dmu_tx_t *tx); uint64_t dmu_object_alloc_hold(objset_t *os, dmu_object_type_t ot, int blocksize, int indirect_blockshift, dmu_object_type_t bonustype, int bonuslen, int dnodesize, dnode_t **allocated_dnode, void *tag, dmu_tx_t *tx); int dmu_object_claim(objset_t *os, uint64_t object, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonus_type, int bonus_len, dmu_tx_t *tx); int dmu_object_claim_dnsize(objset_t *os, uint64_t object, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonus_type, int bonus_len, int dnodesize, dmu_tx_t *tx); int dmu_object_reclaim(objset_t *os, uint64_t object, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *txp); int dmu_object_reclaim_dnsize(objset_t *os, uint64_t object, dmu_object_type_t ot, int blocksize, dmu_object_type_t bonustype, int bonuslen, int dnodesize, boolean_t keep_spill, dmu_tx_t *tx); int dmu_object_rm_spill(objset_t *os, uint64_t object, dmu_tx_t *tx); /* * Free an object from this objset. * * The object's data will be freed as well (ie. you don't need to call * dmu_free(object, 0, -1, tx)). * * The object need not be held in the transaction. * * If there are any holds on this object's buffers (via dmu_buf_hold()), * or tx holds on the object (via dmu_tx_hold_object()), you can not * free it; it fails and returns EBUSY. * * If the object is not allocated, it fails and returns ENOENT. * * Return 0 on success, or EBUSY or ENOENT as specified above. */ int dmu_object_free(objset_t *os, uint64_t object, dmu_tx_t *tx); /* * Find the next allocated or free object. * * The objectp parameter is in-out. It will be updated to be the next * object which is allocated. Ignore objects which have not been * modified since txg. * * XXX Can only be called on a objset with no dirty data. * * Returns 0 on success, or ENOENT if there are no more objects. */ int dmu_object_next(objset_t *os, uint64_t *objectp, boolean_t hole, uint64_t txg); /* * Set the number of levels on a dnode. nlevels must be greater than the * current number of levels or an EINVAL will be returned. */ int dmu_object_set_nlevels(objset_t *os, uint64_t object, int nlevels, dmu_tx_t *tx); /* * Set the data blocksize for an object. * * The object cannot have any blocks allocated beyond the first. If * the first block is allocated already, the new size must be greater * than the current block size. If these conditions are not met, * ENOTSUP will be returned. * * Returns 0 on success, or EBUSY if there are any holds on the object * contents, or ENOTSUP as described above. */ int dmu_object_set_blocksize(objset_t *os, uint64_t object, uint64_t size, int ibs, dmu_tx_t *tx); /* * Manually set the maxblkid on a dnode. This will adjust nlevels accordingly * to accommodate the change. When calling this function, the caller must * ensure that the object's nlevels can sufficiently support the new maxblkid. */ int dmu_object_set_maxblkid(objset_t *os, uint64_t object, uint64_t maxblkid, dmu_tx_t *tx); /* * Set the checksum property on a dnode. The new checksum algorithm will * apply to all newly written blocks; existing blocks will not be affected. */ void dmu_object_set_checksum(objset_t *os, uint64_t object, uint8_t checksum, dmu_tx_t *tx); /* * Set the compress property on a dnode. The new compression algorithm will * apply to all newly written blocks; existing blocks will not be affected. */ void dmu_object_set_compress(objset_t *os, uint64_t object, uint8_t compress, dmu_tx_t *tx); int dmu_object_remap_indirects(objset_t *os, uint64_t object, uint64_t txg); void dmu_write_embedded(objset_t *os, uint64_t object, uint64_t offset, void *data, uint8_t etype, uint8_t comp, int uncompressed_size, int compressed_size, int byteorder, dmu_tx_t *tx); /* * Decide how to write a block: checksum, compression, number of copies, etc. */ #define WP_NOFILL 0x1 #define WP_DMU_SYNC 0x2 #define WP_SPILL 0x4 void dmu_write_policy(objset_t *os, dnode_t *dn, int level, int wp, struct zio_prop *zp); /* * The bonus data is accessed more or less like a regular buffer. * You must dmu_bonus_hold() to get the buffer, which will give you a * dmu_buf_t with db_offset==-1ULL, and db_size = the size of the bonus * data. As with any normal buffer, you must call dmu_buf_will_dirty() * before modifying it, and the * object must be held in an assigned transaction before calling * dmu_buf_will_dirty. You may use dmu_buf_set_user() on the bonus * buffer as well. You must release what you hold with dmu_buf_rele(). * * Returns ENOENT, EIO, or 0. */ int dmu_bonus_hold(objset_t *os, uint64_t object, void *tag, dmu_buf_t **dbp); int dmu_bonus_hold_by_dnode(dnode_t *dn, void *tag, dmu_buf_t **dbp, uint32_t flags); int dmu_bonus_max(void); int dmu_set_bonus(dmu_buf_t *, int, dmu_tx_t *); int dmu_set_bonustype(dmu_buf_t *, dmu_object_type_t, dmu_tx_t *); dmu_object_type_t dmu_get_bonustype(dmu_buf_t *); int dmu_rm_spill(objset_t *, uint64_t, dmu_tx_t *); /* * Special spill buffer support used by "SA" framework */ int dmu_spill_hold_by_bonus(dmu_buf_t *bonus, uint32_t flags, void *tag, dmu_buf_t **dbp); int dmu_spill_hold_by_dnode(dnode_t *dn, uint32_t flags, void *tag, dmu_buf_t **dbp); int dmu_spill_hold_existing(dmu_buf_t *bonus, void *tag, dmu_buf_t **dbp); /* * Obtain the DMU buffer from the specified object which contains the * specified offset. dmu_buf_hold() puts a "hold" on the buffer, so * that it will remain in memory. You must release the hold with * dmu_buf_rele(). You must not access the dmu_buf_t after releasing * what you hold. You must have a hold on any dmu_buf_t* you pass to the DMU. * * You must call dmu_buf_read, dmu_buf_will_dirty, or dmu_buf_will_fill * on the returned buffer before reading or writing the buffer's * db_data. The comments for those routines describe what particular * operations are valid after calling them. * * The object number must be a valid, allocated object number. */ int dmu_buf_hold(objset_t *os, uint64_t object, uint64_t offset, void *tag, dmu_buf_t **, int flags); int dmu_buf_hold_by_dnode(dnode_t *dn, uint64_t offset, void *tag, dmu_buf_t **dbp, int flags); /* * Add a reference to a dmu buffer that has already been held via * dmu_buf_hold() in the current context. */ void dmu_buf_add_ref(dmu_buf_t *db, void* tag); /* * Attempt to add a reference to a dmu buffer that is in an unknown state, * using a pointer that may have been invalidated by eviction processing. * The request will succeed if the passed in dbuf still represents the * same os/object/blkid, is ineligible for eviction, and has at least * one hold by a user other than the syncer. */ boolean_t dmu_buf_try_add_ref(dmu_buf_t *, objset_t *os, uint64_t object, uint64_t blkid, void *tag); void dmu_buf_rele(dmu_buf_t *db, void *tag); uint64_t dmu_buf_refcount(dmu_buf_t *db); uint64_t dmu_buf_user_refcount(dmu_buf_t *db); /* * dmu_buf_hold_array holds the DMU buffers which contain all bytes in a * range of an object. A pointer to an array of dmu_buf_t*'s is * returned (in *dbpp). * * dmu_buf_rele_array releases the hold on an array of dmu_buf_t*'s, and * frees the array. The hold on the array of buffers MUST be released * with dmu_buf_rele_array. You can NOT release the hold on each buffer * individually with dmu_buf_rele. */ int dmu_buf_hold_array_by_bonus(dmu_buf_t *db, uint64_t offset, uint64_t length, boolean_t read, void *tag, int *numbufsp, dmu_buf_t ***dbpp); void dmu_buf_rele_array(dmu_buf_t **, int numbufs, void *tag); typedef void dmu_buf_evict_func_t(void *user_ptr); /* * A DMU buffer user object may be associated with a dbuf for the * duration of its lifetime. This allows the user of a dbuf (client) * to attach private data to a dbuf (e.g. in-core only data such as a * dnode_children_t, zap_t, or zap_leaf_t) and be optionally notified * when that dbuf has been evicted. Clients typically respond to the * eviction notification by freeing their private data, thus ensuring * the same lifetime for both dbuf and private data. * * The mapping from a dmu_buf_user_t to any client private data is the * client's responsibility. All current consumers of the API with private * data embed a dmu_buf_user_t as the first member of the structure for * their private data. This allows conversions between the two types * with a simple cast. Since the DMU buf user API never needs access * to the private data, other strategies can be employed if necessary * or convenient for the client (e.g. using container_of() to do the * conversion for private data that cannot have the dmu_buf_user_t as * its first member). * * Eviction callbacks are executed without the dbuf mutex held or any * other type of mechanism to guarantee that the dbuf is still available. * For this reason, users must assume the dbuf has already been freed * and not reference the dbuf from the callback context. * * Users requesting "immediate eviction" are notified as soon as the dbuf * is only referenced by dirty records (dirties == holds). Otherwise the * notification occurs after eviction processing for the dbuf begins. */ typedef struct dmu_buf_user { /* * Asynchronous user eviction callback state. */ taskq_ent_t dbu_tqent; /* * This instance's eviction function pointers. * * dbu_evict_func_sync is called synchronously and then * dbu_evict_func_async is executed asynchronously on a taskq. */ dmu_buf_evict_func_t *dbu_evict_func_sync; dmu_buf_evict_func_t *dbu_evict_func_async; #ifdef ZFS_DEBUG /* * Pointer to user's dbuf pointer. NULL for clients that do * not associate a dbuf with their user data. * * The dbuf pointer is cleared upon eviction so as to catch * use-after-evict bugs in clients. */ dmu_buf_t **dbu_clear_on_evict_dbufp; #endif } dmu_buf_user_t; /* * Initialize the given dmu_buf_user_t instance with the eviction function * evict_func, to be called when the user is evicted. * * NOTE: This function should only be called once on a given dmu_buf_user_t. * To allow enforcement of this, dbu must already be zeroed on entry. */ /*ARGSUSED*/ static inline void dmu_buf_init_user(dmu_buf_user_t *dbu, dmu_buf_evict_func_t *evict_func_sync, dmu_buf_evict_func_t *evict_func_async, dmu_buf_t **clear_on_evict_dbufp) { ASSERT(dbu->dbu_evict_func_sync == NULL); ASSERT(dbu->dbu_evict_func_async == NULL); /* must have at least one evict func */ IMPLY(evict_func_sync == NULL, evict_func_async != NULL); dbu->dbu_evict_func_sync = evict_func_sync; dbu->dbu_evict_func_async = evict_func_async; taskq_init_ent(&dbu->dbu_tqent); #ifdef ZFS_DEBUG dbu->dbu_clear_on_evict_dbufp = clear_on_evict_dbufp; #endif } /* * Attach user data to a dbuf and mark it for normal (when the dbuf's * data is cleared or its reference count goes to zero) eviction processing. * * Returns NULL on success, or the existing user if another user currently * owns the buffer. */ void *dmu_buf_set_user(dmu_buf_t *db, dmu_buf_user_t *user); /* * Attach user data to a dbuf and mark it for immediate (its dirty and * reference counts are equal) eviction processing. * * Returns NULL on success, or the existing user if another user currently * owns the buffer. */ void *dmu_buf_set_user_ie(dmu_buf_t *db, dmu_buf_user_t *user); /* * Replace the current user of a dbuf. * * If given the current user of a dbuf, replaces the dbuf's user with * "new_user" and returns the user data pointer that was replaced. * Otherwise returns the current, and unmodified, dbuf user pointer. */ void *dmu_buf_replace_user(dmu_buf_t *db, dmu_buf_user_t *old_user, dmu_buf_user_t *new_user); /* * Remove the specified user data for a DMU buffer. * * Returns the user that was removed on success, or the current user if * another user currently owns the buffer. */ void *dmu_buf_remove_user(dmu_buf_t *db, dmu_buf_user_t *user); /* * Returns the user data (dmu_buf_user_t *) associated with this dbuf. */ void *dmu_buf_get_user(dmu_buf_t *db); objset_t *dmu_buf_get_objset(dmu_buf_t *db); dnode_t *dmu_buf_dnode_enter(dmu_buf_t *db); void dmu_buf_dnode_exit(dmu_buf_t *db); /* Block until any in-progress dmu buf user evictions complete. */ void dmu_buf_user_evict_wait(void); /* * Returns the blkptr associated with this dbuf, or NULL if not set. */ struct blkptr *dmu_buf_get_blkptr(dmu_buf_t *db); /* * Indicate that you are going to modify the buffer's data (db_data). * * The transaction (tx) must be assigned to a txg (ie. you've called * dmu_tx_assign()). The buffer's object must be held in the tx * (ie. you've called dmu_tx_hold_object(tx, db->db_object)). */ void dmu_buf_will_dirty(dmu_buf_t *db, dmu_tx_t *tx); boolean_t dmu_buf_is_dirty(dmu_buf_t *db, dmu_tx_t *tx); void dmu_buf_set_crypt_params(dmu_buf_t *db_fake, boolean_t byteorder, const uint8_t *salt, const uint8_t *iv, const uint8_t *mac, dmu_tx_t *tx); /* * You must create a transaction, then hold the objects which you will * (or might) modify as part of this transaction. Then you must assign * the transaction to a transaction group. Once the transaction has * been assigned, you can modify buffers which belong to held objects as * part of this transaction. You can't modify buffers before the * transaction has been assigned; you can't modify buffers which don't * belong to objects which this transaction holds; you can't hold * objects once the transaction has been assigned. You may hold an * object which you are going to free (with dmu_object_free()), but you * don't have to. * * You can abort the transaction before it has been assigned. * * Note that you may hold buffers (with dmu_buf_hold) at any time, * regardless of transaction state. */ #define DMU_NEW_OBJECT (-1ULL) #define DMU_OBJECT_END (-1ULL) dmu_tx_t *dmu_tx_create(objset_t *os); void dmu_tx_hold_write(dmu_tx_t *tx, uint64_t object, uint64_t off, int len); void dmu_tx_hold_write_by_dnode(dmu_tx_t *tx, dnode_t *dn, uint64_t off, int len); void dmu_tx_hold_free(dmu_tx_t *tx, uint64_t object, uint64_t off, uint64_t len); void dmu_tx_hold_free_by_dnode(dmu_tx_t *tx, dnode_t *dn, uint64_t off, uint64_t len); void dmu_tx_hold_remap_l1indirect(dmu_tx_t *tx, uint64_t object); void dmu_tx_hold_zap(dmu_tx_t *tx, uint64_t object, int add, const char *name); void dmu_tx_hold_zap_by_dnode(dmu_tx_t *tx, dnode_t *dn, int add, const char *name); void dmu_tx_hold_bonus(dmu_tx_t *tx, uint64_t object); void dmu_tx_hold_bonus_by_dnode(dmu_tx_t *tx, dnode_t *dn); void dmu_tx_hold_spill(dmu_tx_t *tx, uint64_t object); void dmu_tx_hold_sa(dmu_tx_t *tx, struct sa_handle *hdl, boolean_t may_grow); void dmu_tx_hold_sa_create(dmu_tx_t *tx, int total_size); void dmu_tx_abort(dmu_tx_t *tx); int dmu_tx_assign(dmu_tx_t *tx, uint64_t txg_how); void dmu_tx_wait(dmu_tx_t *tx); void dmu_tx_commit(dmu_tx_t *tx); void dmu_tx_mark_netfree(dmu_tx_t *tx); /* * To register a commit callback, dmu_tx_callback_register() must be called. * * dcb_data is a pointer to caller private data that is passed on as a * callback parameter. The caller is responsible for properly allocating and * freeing it. * * When registering a callback, the transaction must be already created, but * it cannot be committed or aborted. It can be assigned to a txg or not. * * The callback will be called after the transaction has been safely written * to stable storage and will also be called if the dmu_tx is aborted. * If there is any error which prevents the transaction from being committed to * disk, the callback will be called with a value of error != 0. * * When multiple callbacks are registered to the transaction, the callbacks * will be called in reverse order to let Lustre, the only user of commit * callback currently, take the fast path of its commit callback handling. */ typedef void dmu_tx_callback_func_t(void *dcb_data, int error); void dmu_tx_callback_register(dmu_tx_t *tx, dmu_tx_callback_func_t *dcb_func, void *dcb_data); void dmu_tx_do_callbacks(list_t *cb_list, int error); /* * Free up the data blocks for a defined range of a file. If size is * -1, the range from offset to end-of-file is freed. */ int dmu_free_range(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, dmu_tx_t *tx); int dmu_free_long_range(objset_t *os, uint64_t object, uint64_t offset, uint64_t size); int dmu_free_long_object(objset_t *os, uint64_t object); /* * Convenience functions. * * Canfail routines will return 0 on success, or an errno if there is a * nonrecoverable I/O error. */ #define DMU_READ_PREFETCH 0 /* prefetch */ #define DMU_READ_NO_PREFETCH 1 /* don't prefetch */ #define DMU_READ_NO_DECRYPT 2 /* don't decrypt */ int dmu_read(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, void *buf, uint32_t flags); int dmu_read_by_dnode(dnode_t *dn, uint64_t offset, uint64_t size, void *buf, uint32_t flags); void dmu_write(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, const void *buf, dmu_tx_t *tx); void dmu_write_by_dnode(dnode_t *dn, uint64_t offset, uint64_t size, const void *buf, dmu_tx_t *tx); void dmu_prealloc(objset_t *os, uint64_t object, uint64_t offset, uint64_t size, dmu_tx_t *tx); #ifdef _KERNEL #include int dmu_read_uio(objset_t *os, uint64_t object, struct uio *uio, uint64_t size); int dmu_read_uio_dbuf(dmu_buf_t *zdb, struct uio *uio, uint64_t size); int dmu_read_uio_dnode(dnode_t *dn, struct uio *uio, uint64_t size); int dmu_write_uio(objset_t *os, uint64_t object, struct uio *uio, uint64_t size, dmu_tx_t *tx); int dmu_write_uio_dbuf(dmu_buf_t *zdb, struct uio *uio, uint64_t size, dmu_tx_t *tx); int dmu_write_uio_dnode(dnode_t *dn, struct uio *uio, uint64_t size, dmu_tx_t *tx); #endif struct arc_buf *dmu_request_arcbuf(dmu_buf_t *handle, int size); void dmu_return_arcbuf(struct arc_buf *buf); int dmu_assign_arcbuf_by_dnode(dnode_t *dn, uint64_t offset, struct arc_buf *buf, dmu_tx_t *tx); int dmu_assign_arcbuf_by_dbuf(dmu_buf_t *handle, uint64_t offset, struct arc_buf *buf, dmu_tx_t *tx); #define dmu_assign_arcbuf dmu_assign_arcbuf_by_dbuf void dmu_copy_from_buf(objset_t *os, uint64_t object, uint64_t offset, dmu_buf_t *handle, dmu_tx_t *tx); #ifdef HAVE_UIO_ZEROCOPY int dmu_xuio_init(struct xuio *uio, int niov); void dmu_xuio_fini(struct xuio *uio); int dmu_xuio_add(struct xuio *uio, struct arc_buf *abuf, offset_t off, size_t n); int dmu_xuio_cnt(struct xuio *uio); struct arc_buf *dmu_xuio_arcbuf(struct xuio *uio, int i); void dmu_xuio_clear(struct xuio *uio, int i); #endif /* HAVE_UIO_ZEROCOPY */ void xuio_stat_wbuf_copied(void); void xuio_stat_wbuf_nocopy(void); extern int zfs_prefetch_disable; extern int zfs_max_recordsize; /* * Asynchronously try to read in the data. */ void dmu_prefetch(objset_t *os, uint64_t object, int64_t level, uint64_t offset, uint64_t len, enum zio_priority pri); typedef struct dmu_object_info { /* All sizes are in bytes unless otherwise indicated. */ uint32_t doi_data_block_size; uint32_t doi_metadata_block_size; dmu_object_type_t doi_type; dmu_object_type_t doi_bonus_type; uint64_t doi_bonus_size; uint8_t doi_indirection; /* 2 = dnode->indirect->data */ uint8_t doi_checksum; uint8_t doi_compress; uint8_t doi_nblkptr; uint8_t doi_pad[4]; uint64_t doi_dnodesize; uint64_t doi_physical_blocks_512; /* data + metadata, 512b blks */ uint64_t doi_max_offset; uint64_t doi_fill_count; /* number of non-empty blocks */ } dmu_object_info_t; typedef void (*const arc_byteswap_func_t)(void *buf, size_t size); typedef struct dmu_object_type_info { dmu_object_byteswap_t ot_byteswap; boolean_t ot_metadata; boolean_t ot_dbuf_metadata_cache; boolean_t ot_encrypt; char *ot_name; } dmu_object_type_info_t; typedef const struct dmu_object_byteswap_info { arc_byteswap_func_t ob_func; char *ob_name; } dmu_object_byteswap_info_t; extern const dmu_object_type_info_t dmu_ot[DMU_OT_NUMTYPES]; extern const dmu_object_byteswap_info_t dmu_ot_byteswap[DMU_BSWAP_NUMFUNCS]; /* * Get information on a DMU object. * * Return 0 on success or ENOENT if object is not allocated. * * If doi is NULL, just indicates whether the object exists. */ int dmu_object_info(objset_t *os, uint64_t object, dmu_object_info_t *doi); void __dmu_object_info_from_dnode(struct dnode *dn, dmu_object_info_t *doi); /* Like dmu_object_info, but faster if you have a held dnode in hand. */ void dmu_object_info_from_dnode(dnode_t *dn, dmu_object_info_t *doi); /* Like dmu_object_info, but faster if you have a held dbuf in hand. */ void dmu_object_info_from_db(dmu_buf_t *db, dmu_object_info_t *doi); /* * Like dmu_object_info_from_db, but faster still when you only care about * the size. This is specifically optimized for zfs_getattr(). */ void dmu_object_size_from_db(dmu_buf_t *db, uint32_t *blksize, u_longlong_t *nblk512); void dmu_object_dnsize_from_db(dmu_buf_t *db, int *dnsize); typedef struct dmu_objset_stats { uint64_t dds_num_clones; /* number of clones of this */ uint64_t dds_creation_txg; uint64_t dds_guid; dmu_objset_type_t dds_type; uint8_t dds_is_snapshot; uint8_t dds_inconsistent; char dds_origin[ZFS_MAX_DATASET_NAME_LEN]; } dmu_objset_stats_t; /* * Get stats on a dataset. */ void dmu_objset_fast_stat(objset_t *os, dmu_objset_stats_t *stat); /* * Add entries to the nvlist for all the objset's properties. See * zfs_prop_table[] and zfs(1m) for details on the properties. */ void dmu_objset_stats(objset_t *os, struct nvlist *nv); /* * Get the space usage statistics for statvfs(). * * refdbytes is the amount of space "referenced" by this objset. * availbytes is the amount of space available to this objset, taking * into account quotas & reservations, assuming that no other objsets * use the space first. These values correspond to the 'referenced' and * 'available' properties, described in the zfs(1m) manpage. * * usedobjs and availobjs are the number of objects currently allocated, * and available. */ void dmu_objset_space(objset_t *os, uint64_t *refdbytesp, uint64_t *availbytesp, uint64_t *usedobjsp, uint64_t *availobjsp); /* * The fsid_guid is a 56-bit ID that can change to avoid collisions. * (Contrast with the ds_guid which is a 64-bit ID that will never * change, so there is a small probability that it will collide.) */ uint64_t dmu_objset_fsid_guid(objset_t *os); /* * Get the [cm]time for an objset's snapshot dir */ inode_timespec_t dmu_objset_snap_cmtime(objset_t *os); int dmu_objset_is_snapshot(objset_t *os); extern struct spa *dmu_objset_spa(objset_t *os); extern struct zilog *dmu_objset_zil(objset_t *os); extern struct dsl_pool *dmu_objset_pool(objset_t *os); extern struct dsl_dataset *dmu_objset_ds(objset_t *os); extern void dmu_objset_name(objset_t *os, char *buf); extern dmu_objset_type_t dmu_objset_type(objset_t *os); extern uint64_t dmu_objset_id(objset_t *os); extern uint64_t dmu_objset_dnodesize(objset_t *os); extern zfs_sync_type_t dmu_objset_syncprop(objset_t *os); extern zfs_logbias_op_t dmu_objset_logbias(objset_t *os); extern int dmu_snapshot_list_next(objset_t *os, int namelen, char *name, uint64_t *id, uint64_t *offp, boolean_t *case_conflict); extern int dmu_snapshot_lookup(objset_t *os, const char *name, uint64_t *val); extern int dmu_snapshot_realname(objset_t *os, char *name, char *real, int maxlen, boolean_t *conflict); extern int dmu_dir_list_next(objset_t *os, int namelen, char *name, uint64_t *idp, uint64_t *offp); typedef int objset_used_cb_t(dmu_object_type_t bonustype, void *bonus, uint64_t *userp, uint64_t *groupp, uint64_t *projectp); extern void dmu_objset_register_type(dmu_objset_type_t ost, objset_used_cb_t *cb); extern void dmu_objset_set_user(objset_t *os, void *user_ptr); extern void *dmu_objset_get_user(objset_t *os); /* * Return the txg number for the given assigned transaction. */ uint64_t dmu_tx_get_txg(dmu_tx_t *tx); /* * Synchronous write. * If a parent zio is provided this function initiates a write on the * provided buffer as a child of the parent zio. * In the absence of a parent zio, the write is completed synchronously. * At write completion, blk is filled with the bp of the written block. * Note that while the data covered by this function will be on stable * storage when the write completes this new data does not become a * permanent part of the file until the associated transaction commits. */ /* * {zfs,zvol,ztest}_get_done() args */ typedef struct zgd { struct lwb *zgd_lwb; struct blkptr *zgd_bp; dmu_buf_t *zgd_db; struct locked_range *zgd_lr; void *zgd_private; } zgd_t; typedef void dmu_sync_cb_t(zgd_t *arg, int error); int dmu_sync(struct zio *zio, uint64_t txg, dmu_sync_cb_t *done, zgd_t *zgd); /* * Find the next hole or data block in file starting at *off * Return found offset in *off. Return ESRCH for end of file. */ int dmu_offset_next(objset_t *os, uint64_t object, boolean_t hole, uint64_t *off); /* * Initial setup and final teardown. */ extern void dmu_init(void); extern void dmu_fini(void); typedef void (*dmu_traverse_cb_t)(objset_t *os, void *arg, struct blkptr *bp, uint64_t object, uint64_t offset, int len); void dmu_traverse_objset(objset_t *os, uint64_t txg_start, dmu_traverse_cb_t cb, void *arg); int dmu_diff(const char *tosnap_name, const char *fromsnap_name, struct vnode *vp, offset_t *offp); /* CRC64 table */ #define ZFS_CRC64_POLY 0xC96C5795D7870F42ULL /* ECMA-182, reflected form */ extern uint64_t zfs_crc64_table[256]; #ifdef __cplusplus } #endif #endif /* _SYS_DMU_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev.h0000644000000000000000000000007413612141523016767 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.598429739 zfs-0.8.3/include/sys/vdev.h0000644016037001603700000001670513612141523016775 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2017 by Delphix. All rights reserved. * Copyright (c) 2017, Intel Corporation. * Copyright (c) 2019, Datto Inc. All rights reserved. */ #ifndef _SYS_VDEV_H #define _SYS_VDEV_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef enum vdev_dtl_type { DTL_MISSING, /* 0% replication: no copies of the data */ DTL_PARTIAL, /* less than 100% replication: some copies missing */ DTL_SCRUB, /* unable to fully repair during scrub/resilver */ DTL_OUTAGE, /* temporarily missing (used to attempt detach) */ DTL_TYPES } vdev_dtl_type_t; extern int zfs_nocacheflush; extern void vdev_dbgmsg(vdev_t *vd, const char *fmt, ...); extern void vdev_dbgmsg_print_tree(vdev_t *, int); extern int vdev_open(vdev_t *); extern void vdev_open_children(vdev_t *); extern int vdev_validate(vdev_t *); extern int vdev_copy_path_strict(vdev_t *, vdev_t *); extern void vdev_copy_path_relaxed(vdev_t *, vdev_t *); extern void vdev_close(vdev_t *); extern int vdev_create(vdev_t *, uint64_t txg, boolean_t isreplace); extern void vdev_reopen(vdev_t *); extern int vdev_validate_aux(vdev_t *vd); extern zio_t *vdev_probe(vdev_t *vd, zio_t *pio); extern boolean_t vdev_is_concrete(vdev_t *vd); extern boolean_t vdev_is_bootable(vdev_t *vd); extern vdev_t *vdev_lookup_top(spa_t *spa, uint64_t vdev); extern vdev_t *vdev_lookup_by_guid(vdev_t *vd, uint64_t guid); extern int vdev_count_leaves(spa_t *spa); extern void vdev_dtl_dirty(vdev_t *vd, vdev_dtl_type_t d, uint64_t txg, uint64_t size); extern boolean_t vdev_dtl_contains(vdev_t *vd, vdev_dtl_type_t d, uint64_t txg, uint64_t size); extern boolean_t vdev_dtl_empty(vdev_t *vd, vdev_dtl_type_t d); extern boolean_t vdev_dtl_need_resilver(vdev_t *vd, uint64_t off, size_t size); extern void vdev_dtl_reassess(vdev_t *vd, uint64_t txg, uint64_t scrub_txg, int scrub_done); extern boolean_t vdev_dtl_required(vdev_t *vd); extern boolean_t vdev_resilver_needed(vdev_t *vd, uint64_t *minp, uint64_t *maxp); extern void vdev_destroy_unlink_zap(vdev_t *vd, uint64_t zapobj, dmu_tx_t *tx); extern uint64_t vdev_create_link_zap(vdev_t *vd, dmu_tx_t *tx); extern void vdev_construct_zaps(vdev_t *vd, dmu_tx_t *tx); extern void vdev_destroy_spacemaps(vdev_t *vd, dmu_tx_t *tx); extern void vdev_indirect_mark_obsolete(vdev_t *vd, uint64_t offset, uint64_t size); extern void spa_vdev_indirect_mark_obsolete(spa_t *spa, uint64_t vdev, uint64_t offset, uint64_t size, dmu_tx_t *tx); extern void vdev_hold(vdev_t *); extern void vdev_rele(vdev_t *); extern int vdev_metaslab_init(vdev_t *vd, uint64_t txg); extern void vdev_metaslab_fini(vdev_t *vd); extern void vdev_metaslab_set_size(vdev_t *); extern void vdev_expand(vdev_t *vd, uint64_t txg); extern void vdev_split(vdev_t *vd); extern void vdev_deadman(vdev_t *vd, char *tag); extern void vdev_xlate(vdev_t *vd, const range_seg_t *logical_rs, range_seg_t *physical_rs); extern void vdev_get_stats_ex(vdev_t *vd, vdev_stat_t *vs, vdev_stat_ex_t *vsx); extern void vdev_get_stats(vdev_t *vd, vdev_stat_t *vs); extern void vdev_clear_stats(vdev_t *vd); extern void vdev_stat_update(zio_t *zio, uint64_t psize); extern void vdev_scan_stat_init(vdev_t *vd); extern void vdev_propagate_state(vdev_t *vd); extern void vdev_set_state(vdev_t *vd, boolean_t isopen, vdev_state_t state, vdev_aux_t aux); extern boolean_t vdev_children_are_offline(vdev_t *vd); extern void vdev_space_update(vdev_t *vd, int64_t alloc_delta, int64_t defer_delta, int64_t space_delta); extern int64_t vdev_deflated_space(vdev_t *vd, int64_t space); extern uint64_t vdev_psize_to_asize(vdev_t *vd, uint64_t psize); extern int vdev_fault(spa_t *spa, uint64_t guid, vdev_aux_t aux); extern int vdev_degrade(spa_t *spa, uint64_t guid, vdev_aux_t aux); extern int vdev_online(spa_t *spa, uint64_t guid, uint64_t flags, vdev_state_t *); extern int vdev_offline(spa_t *spa, uint64_t guid, uint64_t flags); extern void vdev_clear(spa_t *spa, vdev_t *vd); extern boolean_t vdev_is_dead(vdev_t *vd); extern boolean_t vdev_readable(vdev_t *vd); extern boolean_t vdev_writeable(vdev_t *vd); extern boolean_t vdev_allocatable(vdev_t *vd); extern boolean_t vdev_accessible(vdev_t *vd, zio_t *zio); extern boolean_t vdev_is_spacemap_addressable(vdev_t *vd); extern void vdev_cache_init(vdev_t *vd); extern void vdev_cache_fini(vdev_t *vd); extern boolean_t vdev_cache_read(zio_t *zio); extern void vdev_cache_write(zio_t *zio); extern void vdev_cache_purge(vdev_t *vd); extern void vdev_queue_init(vdev_t *vd); extern void vdev_queue_fini(vdev_t *vd); extern zio_t *vdev_queue_io(zio_t *zio); extern void vdev_queue_io_done(zio_t *zio); extern void vdev_queue_change_io_priority(zio_t *zio, zio_priority_t priority); extern int vdev_queue_length(vdev_t *vd); extern uint64_t vdev_queue_last_offset(vdev_t *vd); extern void vdev_config_dirty(vdev_t *vd); extern void vdev_config_clean(vdev_t *vd); extern int vdev_config_sync(vdev_t **svd, int svdcount, uint64_t txg); extern void vdev_state_dirty(vdev_t *vd); extern void vdev_state_clean(vdev_t *vd); extern void vdev_defer_resilver(vdev_t *vd); extern boolean_t vdev_clear_resilver_deferred(vdev_t *vd, dmu_tx_t *tx); typedef enum vdev_config_flag { VDEV_CONFIG_SPARE = 1 << 0, VDEV_CONFIG_L2CACHE = 1 << 1, VDEV_CONFIG_REMOVING = 1 << 2, VDEV_CONFIG_MOS = 1 << 3, VDEV_CONFIG_MISSING = 1 << 4 } vdev_config_flag_t; extern void vdev_top_config_generate(spa_t *spa, nvlist_t *config); extern nvlist_t *vdev_config_generate(spa_t *spa, vdev_t *vd, boolean_t getstats, vdev_config_flag_t flags); /* * Label routines */ struct uberblock; extern uint64_t vdev_label_offset(uint64_t psize, int l, uint64_t offset); extern int vdev_label_number(uint64_t psise, uint64_t offset); extern nvlist_t *vdev_label_read_config(vdev_t *vd, uint64_t txg); extern void vdev_uberblock_load(vdev_t *, struct uberblock *, nvlist_t **); extern void vdev_config_generate_stats(vdev_t *vd, nvlist_t *nv); extern void vdev_label_write(zio_t *zio, vdev_t *vd, int l, abd_t *buf, uint64_t offset, uint64_t size, zio_done_func_t *done, void *private, int flags); typedef enum { VDEV_LABEL_CREATE, /* create/add a new device */ VDEV_LABEL_REPLACE, /* replace an existing device */ VDEV_LABEL_SPARE, /* add a new hot spare */ VDEV_LABEL_REMOVE, /* remove an existing device */ VDEV_LABEL_L2CACHE, /* add an L2ARC cache device */ VDEV_LABEL_SPLIT /* generating new label for split-off dev */ } vdev_labeltype_t; extern int vdev_label_init(vdev_t *vd, uint64_t txg, vdev_labeltype_t reason); #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dmu_traverse.h0000644000000000000000000000007413607166147020540 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.437424569 zfs-0.8.3/include/sys/dmu_traverse.h0000644016037001603700000000511213607166147020534 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2014 by Delphix. All rights reserved. */ #ifndef _SYS_DMU_TRAVERSE_H #define _SYS_DMU_TRAVERSE_H #include #include #include #ifdef __cplusplus extern "C" { #endif struct dnode_phys; struct dsl_dataset; struct zilog; struct arc_buf; typedef int (blkptr_cb_t)(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, const zbookmark_phys_t *zb, const struct dnode_phys *dnp, void *arg); #define TRAVERSE_PRE (1<<0) #define TRAVERSE_POST (1<<1) #define TRAVERSE_PREFETCH_METADATA (1<<2) #define TRAVERSE_PREFETCH_DATA (1<<3) #define TRAVERSE_PREFETCH (TRAVERSE_PREFETCH_METADATA | TRAVERSE_PREFETCH_DATA) #define TRAVERSE_HARD (1<<4) /* * Encrypted dnode blocks have encrypted bonus buffers while the rest * of the dnode is left unencrypted. Callers can specify the * TRAVERSE_NO_DECRYPT flag to indicate to the traversal code that * they wish to receive the raw encrypted dnodes instead of attempting * to read the logical data. */ #define TRAVERSE_NO_DECRYPT (1<<5) /* Special traverse error return value to indicate skipping of children */ #define TRAVERSE_VISIT_NO_CHILDREN -1 int traverse_dataset(struct dsl_dataset *ds, uint64_t txg_start, int flags, blkptr_cb_t func, void *arg); int traverse_dataset_resume(struct dsl_dataset *ds, uint64_t txg_start, zbookmark_phys_t *resume, int flags, blkptr_cb_t func, void *arg); int traverse_dataset_destroyed(spa_t *spa, blkptr_t *blkptr, uint64_t txg_start, zbookmark_phys_t *resume, int flags, blkptr_cb_t func, void *arg); int traverse_pool(spa_t *spa, uint64_t txg_start, int flags, blkptr_cb_t func, void *arg); #ifdef __cplusplus } #endif #endif /* _SYS_DMU_TRAVERSE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/edonr.h0000644000000000000000000000007413607166132017141 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.473425724 zfs-0.8.3/include/sys/edonr.h0000644016037001603700000000522513607166132017142 0ustar00hutter2hutter200000000000000/* * IDI,NTNU * * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * Copyright (C) 2009, 2010, Jorn Amundsen * * Tweaked Edon-R implementation for SUPERCOP, based on NIST API. * * $Id: edonr.h 517 2013-02-17 20:34:39Z joern $ */ /* * Portions copyright (c) 2013, Saso Kiselkov, All rights reserved */ #ifndef _SYS_EDONR_H_ #define _SYS_EDONR_H_ #ifdef __cplusplus extern "C" { #endif #ifdef _KERNEL #include #else #include /* uint32_t... */ #include /* size_t ... */ #endif /* * EdonR allows to call EdonRUpdate() consecutively only if the total length * of stored unprocessed data and the new supplied data is less than or equal * to the BLOCK_SIZE on which the compression functions operates. * Otherwise an assertion failure is invoked. */ /* Specific algorithm definitions */ #define EdonR224_DIGEST_SIZE 28 #define EdonR224_BLOCK_SIZE 64 #define EdonR256_DIGEST_SIZE 32 #define EdonR256_BLOCK_SIZE 64 #define EdonR384_DIGEST_SIZE 48 #define EdonR384_BLOCK_SIZE 128 #define EdonR512_DIGEST_SIZE 64 #define EdonR512_BLOCK_SIZE 128 #define EdonR256_BLOCK_BITSIZE 512 #define EdonR512_BLOCK_BITSIZE 1024 typedef struct { uint32_t DoublePipe[16]; uint8_t LastPart[EdonR256_BLOCK_SIZE * 2]; } EdonRData256; typedef struct { uint64_t DoublePipe[16]; uint8_t LastPart[EdonR512_BLOCK_SIZE * 2]; } EdonRData512; typedef struct { size_t hashbitlen; /* + algorithm specific parameters */ int unprocessed_bits; uint64_t bits_processed; union { EdonRData256 p256[1]; EdonRData512 p512[1]; } pipe[1]; } EdonRState; void EdonRInit(EdonRState *state, size_t hashbitlen); void EdonRUpdate(EdonRState *state, const uint8_t *data, size_t databitlen); void EdonRFinal(EdonRState *state, uint8_t *hashval); void EdonRHash(size_t hashbitlen, const uint8_t *data, size_t databitlen, uint8_t *hashval); #ifdef __cplusplus } #endif #endif /* _SYS_EDONR_H_ */ zfs-0.8.3/include/sys/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166147017722 xustar000000000000000030 atime=1579730429.016126753 29 ctime=1579730469.71343343 zfs-0.8.3/include/sys/Makefile.am0000644016037001603700000001347013607166147017725 0ustar00hutter2hutter200000000000000SUBDIRS = fm fs crypto lua sysevent COMMON_H = \ $(top_srcdir)/include/sys/abd.h \ $(top_srcdir)/include/sys/aggsum.h \ $(top_srcdir)/include/sys/arc.h \ $(top_srcdir)/include/sys/arc_impl.h \ $(top_srcdir)/include/sys/avl.h \ $(top_srcdir)/include/sys/avl_impl.h \ $(top_srcdir)/include/sys/blkptr.h \ $(top_srcdir)/include/sys/bplist.h \ $(top_srcdir)/include/sys/bpobj.h \ $(top_srcdir)/include/sys/bptree.h \ $(top_srcdir)/include/sys/bqueue.h \ $(top_srcdir)/include/sys/cityhash.h \ $(top_srcdir)/include/sys/spa_checkpoint.h \ $(top_srcdir)/include/sys/dataset_kstats.h \ $(top_srcdir)/include/sys/dbuf.h \ $(top_srcdir)/include/sys/ddt.h \ $(top_srcdir)/include/sys/dmu.h \ $(top_srcdir)/include/sys/dmu_impl.h \ $(top_srcdir)/include/sys/dmu_objset.h \ $(top_srcdir)/include/sys/dmu_recv.h \ $(top_srcdir)/include/sys/dmu_send.h \ $(top_srcdir)/include/sys/dmu_traverse.h \ $(top_srcdir)/include/sys/dmu_tx.h \ $(top_srcdir)/include/sys/dmu_zfetch.h \ $(top_srcdir)/include/sys/dnode.h \ $(top_srcdir)/include/sys/dsl_bookmark.h \ $(top_srcdir)/include/sys/dsl_dataset.h \ $(top_srcdir)/include/sys/dsl_deadlist.h \ $(top_srcdir)/include/sys/dsl_deleg.h \ $(top_srcdir)/include/sys/dsl_destroy.h \ $(top_srcdir)/include/sys/dsl_dir.h \ $(top_srcdir)/include/sys/dsl_crypt.h \ $(top_srcdir)/include/sys/dsl_pool.h \ $(top_srcdir)/include/sys/dsl_prop.h \ $(top_srcdir)/include/sys/dsl_scan.h \ $(top_srcdir)/include/sys/dsl_synctask.h \ $(top_srcdir)/include/sys/dsl_userhold.h \ $(top_srcdir)/include/sys/edonr.h \ $(top_srcdir)/include/sys/efi_partition.h \ $(top_srcdir)/include/sys/frame.h \ $(top_srcdir)/include/sys/hkdf.h \ $(top_srcdir)/include/sys/metaslab.h \ $(top_srcdir)/include/sys/metaslab_impl.h \ $(top_srcdir)/include/sys/mmp.h \ $(top_srcdir)/include/sys/mntent.h \ $(top_srcdir)/include/sys/multilist.h \ $(top_srcdir)/include/sys/note.h \ $(top_srcdir)/include/sys/nvpair.h \ $(top_srcdir)/include/sys/nvpair_impl.h \ $(top_srcdir)/include/sys/pathname.h \ $(top_srcdir)/include/sys/policy.h \ $(top_srcdir)/include/sys/range_tree.h \ $(top_srcdir)/include/sys/refcount.h \ $(top_srcdir)/include/sys/rrwlock.h \ $(top_srcdir)/include/sys/sa.h \ $(top_srcdir)/include/sys/sa_impl.h \ $(top_srcdir)/include/sys/sdt.h \ $(top_srcdir)/include/sys/sha2.h \ $(top_srcdir)/include/sys/skein.h \ $(top_srcdir)/include/sys/spa_boot.h \ $(top_srcdir)/include/sys/space_map.h \ $(top_srcdir)/include/sys/space_reftree.h \ $(top_srcdir)/include/sys/spa.h \ $(top_srcdir)/include/sys/spa_impl.h \ $(top_srcdir)/include/sys/spa_checksum.h \ $(top_srcdir)/include/sys/sysevent.h \ $(top_srcdir)/include/sys/trace.h \ $(top_srcdir)/include/sys/trace_acl.h \ $(top_srcdir)/include/sys/trace_arc.h \ $(top_srcdir)/include/sys/trace_common.h \ $(top_srcdir)/include/sys/trace_dbgmsg.h \ $(top_srcdir)/include/sys/trace_dbuf.h \ $(top_srcdir)/include/sys/trace_dmu.h \ $(top_srcdir)/include/sys/trace_dnode.h \ $(top_srcdir)/include/sys/trace_multilist.h \ $(top_srcdir)/include/sys/trace_txg.h \ $(top_srcdir)/include/sys/trace_vdev.h \ $(top_srcdir)/include/sys/trace_zil.h \ $(top_srcdir)/include/sys/trace_zio.h \ $(top_srcdir)/include/sys/trace_zrlock.h \ $(top_srcdir)/include/sys/txg.h \ $(top_srcdir)/include/sys/txg_impl.h \ $(top_srcdir)/include/sys/u8_textprep_data.h \ $(top_srcdir)/include/sys/u8_textprep.h \ $(top_srcdir)/include/sys/uberblock.h \ $(top_srcdir)/include/sys/uberblock_impl.h \ $(top_srcdir)/include/sys/uio_impl.h \ $(top_srcdir)/include/sys/unique.h \ $(top_srcdir)/include/sys/uuid.h \ $(top_srcdir)/include/sys/vdev_disk.h \ $(top_srcdir)/include/sys/vdev_file.h \ $(top_srcdir)/include/sys/vdev.h \ $(top_srcdir)/include/sys/vdev_impl.h \ $(top_srcdir)/include/sys/vdev_indirect_births.h \ $(top_srcdir)/include/sys/vdev_indirect_mapping.h \ $(top_srcdir)/include/sys/vdev_initialize.h \ $(top_srcdir)/include/sys/vdev_raidz.h \ $(top_srcdir)/include/sys/vdev_raidz_impl.h \ $(top_srcdir)/include/sys/vdev_removal.h \ $(top_srcdir)/include/sys/vdev_trim.h \ $(top_srcdir)/include/sys/xvattr.h \ $(top_srcdir)/include/sys/zap.h \ $(top_srcdir)/include/sys/zap_impl.h \ $(top_srcdir)/include/sys/zap_leaf.h \ $(top_srcdir)/include/sys/zcp.h \ $(top_srcdir)/include/sys/zcp_global.h \ $(top_srcdir)/include/sys/zcp_iter.h \ $(top_srcdir)/include/sys/zcp_prop.h \ $(top_srcdir)/include/sys/zfeature.h \ $(top_srcdir)/include/sys/zfs_acl.h \ $(top_srcdir)/include/sys/zfs_context.h \ $(top_srcdir)/include/sys/zfs_ctldir.h \ $(top_srcdir)/include/sys/zfs_debug.h \ $(top_srcdir)/include/sys/zfs_delay.h \ $(top_srcdir)/include/sys/zfs_dir.h \ $(top_srcdir)/include/sys/zfs_fuid.h \ $(top_srcdir)/include/sys/zfs_project.h \ $(top_srcdir)/include/sys/zfs_ratelimit.h \ $(top_srcdir)/include/sys/zfs_rlock.h \ $(top_srcdir)/include/sys/zfs_sa.h \ $(top_srcdir)/include/sys/zfs_stat.h \ $(top_srcdir)/include/sys/zfs_sysfs.h \ $(top_srcdir)/include/sys/zfs_vfsops.h \ $(top_srcdir)/include/sys/zfs_vnops.h \ $(top_srcdir)/include/sys/zfs_znode.h \ $(top_srcdir)/include/sys/zil.h \ $(top_srcdir)/include/sys/zil_impl.h \ $(top_srcdir)/include/sys/zio_checksum.h \ $(top_srcdir)/include/sys/zio_compress.h \ $(top_srcdir)/include/sys/zio_crypt.h \ $(top_srcdir)/include/sys/zio.h \ $(top_srcdir)/include/sys/zio_impl.h \ $(top_srcdir)/include/sys/zio_priority.h \ $(top_srcdir)/include/sys/zrlock.h \ $(top_srcdir)/include/sys/zthr.h KERNEL_H = \ $(top_srcdir)/include/sys/zfs_ioctl.h \ $(top_srcdir)/include/sys/zfs_onexit.h \ ${top_srcdir}/include/sys/zpl.h \ $(top_srcdir)/include/sys/zvol.h USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs/sys libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys kernel_HEADERS = $(COMMON_H) $(KERNEL_H) endif zfs-0.8.3/include/sys/PaxHeaders.151519/sa.h0000644000000000000000000000007413612141513016425 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.511426943 zfs-0.8.3/include/sys/sa.h0000644016037001603700000001222313612141513016422 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_SA_H #define _SYS_SA_H #include /* * Currently available byteswap functions. * If it all possible new attributes should used * one of the already defined byteswap functions. * If a new byteswap function is added then the * ZPL/Pool version will need to be bumped. */ typedef enum sa_bswap_type { SA_UINT64_ARRAY, SA_UINT32_ARRAY, SA_UINT16_ARRAY, SA_UINT8_ARRAY, SA_ACL, } sa_bswap_type_t; typedef uint16_t sa_attr_type_t; /* * Attribute to register support for. */ typedef struct sa_attr_reg { char *sa_name; /* attribute name */ uint16_t sa_length; sa_bswap_type_t sa_byteswap; /* bswap function enum */ sa_attr_type_t sa_attr; /* filled in during registration */ } sa_attr_reg_t; typedef void (sa_data_locator_t)(void **, uint32_t *, uint32_t, boolean_t, void *userptr); /* * array of attributes to store. * * This array should be treated as opaque/private data. * The SA_BULK_ADD_ATTR() macro should be used for manipulating * the array. * * When sa_replace_all_by_template() is used the attributes * will be stored in the order defined in the array, except that * the attributes may be split between the bonus and the spill buffer * */ typedef struct sa_bulk_attr { void *sa_data; sa_data_locator_t *sa_data_func; uint16_t sa_length; sa_attr_type_t sa_attr; /* the following are private to the sa framework */ void *sa_addr; uint16_t sa_buftype; uint16_t sa_size; } sa_bulk_attr_t; /* * The on-disk format of sa_hdr_phys_t limits SA lengths to 16-bit values. */ #define SA_ATTR_MAX_LEN UINT16_MAX /* * special macro for adding entries for bulk attr support * bulk - sa_bulk_attr_t * count - integer that will be incremented during each add * attr - attribute to manipulate * func - function for accessing data. * data - pointer to data. * len - length of data */ #define SA_ADD_BULK_ATTR(b, idx, attr, func, data, len) \ { \ ASSERT3U(len, <=, SA_ATTR_MAX_LEN); \ b[idx].sa_attr = attr;\ b[idx].sa_data_func = func; \ b[idx].sa_data = data; \ b[idx++].sa_length = len; \ } typedef struct sa_os sa_os_t; typedef enum sa_handle_type { SA_HDL_SHARED, SA_HDL_PRIVATE } sa_handle_type_t; struct sa_handle; typedef void *sa_lookup_tab_t; typedef struct sa_handle sa_handle_t; typedef void (sa_update_cb_t)(sa_handle_t *, dmu_tx_t *tx); int sa_handle_get(objset_t *, uint64_t, void *userp, sa_handle_type_t, sa_handle_t **); int sa_handle_get_from_db(objset_t *, dmu_buf_t *, void *userp, sa_handle_type_t, sa_handle_t **); void sa_handle_destroy(sa_handle_t *); int sa_buf_hold(objset_t *, uint64_t, void *, dmu_buf_t **); void sa_buf_rele(dmu_buf_t *, void *); int sa_lookup(sa_handle_t *, sa_attr_type_t, void *buf, uint32_t buflen); int sa_update(sa_handle_t *, sa_attr_type_t, void *buf, uint32_t buflen, dmu_tx_t *); int sa_remove(sa_handle_t *, sa_attr_type_t, dmu_tx_t *); int sa_bulk_lookup(sa_handle_t *, sa_bulk_attr_t *, int count); int sa_bulk_lookup_locked(sa_handle_t *, sa_bulk_attr_t *, int count); int sa_bulk_update(sa_handle_t *, sa_bulk_attr_t *, int count, dmu_tx_t *); int sa_size(sa_handle_t *, sa_attr_type_t, int *); void sa_object_info(sa_handle_t *, dmu_object_info_t *); void sa_object_size(sa_handle_t *, uint32_t *, u_longlong_t *); void *sa_get_userdata(sa_handle_t *); void sa_set_userp(sa_handle_t *, void *); dmu_buf_t *sa_get_db(sa_handle_t *); uint64_t sa_handle_object(sa_handle_t *); boolean_t sa_attr_would_spill(sa_handle_t *, sa_attr_type_t, int size); void sa_spill_rele(sa_handle_t *); void sa_register_update_callback(objset_t *, sa_update_cb_t *); int sa_setup(objset_t *, uint64_t, sa_attr_reg_t *, int, sa_attr_type_t **); void sa_tear_down(objset_t *); int sa_replace_all_by_template(sa_handle_t *, sa_bulk_attr_t *, int, dmu_tx_t *); int sa_replace_all_by_template_locked(sa_handle_t *, sa_bulk_attr_t *, int, dmu_tx_t *); boolean_t sa_enabled(objset_t *); void sa_cache_init(void); void sa_cache_fini(void); int sa_set_sa_object(objset_t *, uint64_t); int sa_hdrsize(void *); void sa_handle_lock(sa_handle_t *); void sa_handle_unlock(sa_handle_t *); #ifdef _KERNEL int sa_lookup_uio(sa_handle_t *, sa_attr_type_t, uio_t *); int sa_add_projid(sa_handle_t *, dmu_tx_t *, uint64_t); #endif #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } #endif #endif /* _SYS_SA_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/spa_checksum.h0000644000000000000000000000007413607166132020477 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.534427682 zfs-0.8.3/include/sys/spa_checksum.h0000644016037001603700000000372413607166132020502 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SPA_CHECKSUM_H #define _SPA_CHECKSUM_H #include #ifdef __cplusplus extern "C" { #endif /* * Each block has a 256-bit checksum -- strong enough for cryptographic hashes. */ typedef struct zio_cksum { uint64_t zc_word[4]; } zio_cksum_t; #define ZIO_SET_CHECKSUM(zcp, w0, w1, w2, w3) \ { \ (zcp)->zc_word[0] = w0; \ (zcp)->zc_word[1] = w1; \ (zcp)->zc_word[2] = w2; \ (zcp)->zc_word[3] = w3; \ } #define ZIO_CHECKSUM_EQUAL(zc1, zc2) \ (0 == (((zc1).zc_word[0] - (zc2).zc_word[0]) | \ ((zc1).zc_word[1] - (zc2).zc_word[1]) | \ ((zc1).zc_word[2] - (zc2).zc_word[2]) | \ ((zc1).zc_word[3] - (zc2).zc_word[3]))) #define ZIO_CHECKSUM_IS_ZERO(zc) \ (0 == ((zc)->zc_word[0] | (zc)->zc_word[1] | \ (zc)->zc_word[2] | (zc)->zc_word[3])) #define ZIO_CHECKSUM_BSWAP(zcp) \ { \ (zcp)->zc_word[0] = BSWAP_64((zcp)->zc_word[0]); \ (zcp)->zc_word[1] = BSWAP_64((zcp)->zc_word[1]); \ (zcp)->zc_word[2] = BSWAP_64((zcp)->zc_word[2]); \ (zcp)->zc_word[3] = BSWAP_64((zcp)->zc_word[3]); \ } #ifdef __cplusplus } #endif #endif zfs-0.8.3/include/sys/PaxHeaders.151519/sdt.h0000644000000000000000000000007413607166147016632 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.516427106 zfs-0.8.3/include/sys/sdt.h0000644016037001603700000000410213607166147016624 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_SDT_H #define _SYS_SDT_H #ifndef _KERNEL #define ZFS_PROBE(a) ((void) 0) #define ZFS_PROBE1(a, c) ((void) 0) #define ZFS_PROBE2(a, c, e) ((void) 0) #define ZFS_PROBE3(a, c, e, g) ((void) 0) #define ZFS_PROBE4(a, c, e, g, i) ((void) 0) #endif /* _KERNEL */ /* * The set-error SDT probe is extra static, in that we declare its fake * function literally, rather than with the DTRACE_PROBE1() macro. This is * necessary so that SET_ERROR() can evaluate to a value, which wouldn't * be possible if it required multiple statements (to declare the function * and then call it). * * SET_ERROR() uses the comma operator so that it can be used without much * additional code. For example, "return (EINVAL);" becomes * "return (SET_ERROR(EINVAL));". Note that the argument will be evaluated * twice, so it should not have side effects (e.g. something like: * "return (SET_ERROR(log_error(EINVAL, info)));" would log the error twice). */ extern void __set_error(const char *file, const char *func, int line, int err); #undef SET_ERROR #define SET_ERROR(err) \ (__set_error(__FILE__, __func__, __LINE__, err), err) #endif /* _SYS_SDT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/fm0000644000000000000000000000013213612143045016173 xustar000000000000000030 mtime=1579730469.802436288 30 atime=1579730489.077055163 30 ctime=1579730469.802436288 zfs-0.8.3/include/sys/fm/0000775016037001603700000000000013612143045016254 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/sys/fm/PaxHeaders.151519/util.h0000644000000000000000000000007413607166132017411 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.792435968 zfs-0.8.3/include/sys/fm/util.h0000644016037001603700000000706213607166132017413 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_FM_UTIL_H #define _SYS_FM_UTIL_H #ifdef __cplusplus extern "C" { #endif #include /* * Shared user/kernel definitions for class length, error channel name, * and kernel event publisher string. */ #define FM_MAX_CLASS 100 #define FM_ERROR_CHAN "com.sun:fm:error" #define FM_PUB "fm" /* * ereport dump device transport support * * Ereports are written out to the dump device at a proscribed offset from the * end, similar to in-transit log messages. The ereports are represented as a * erpt_dump_t header followed by ed_size bytes of packed native nvlist data. * * NOTE: All of these constants and the header must be defined so they have the * same representation for *both* 32-bit and 64-bit producers and consumers. */ #define ERPT_MAGIC 0xf00d4eddU #define ERPT_MAX_ERRS 16 #define ERPT_DATA_SZ (6 * 1024) #define ERPT_EVCH_MAX 256 #define ERPT_HIWAT 64 typedef struct erpt_dump { uint32_t ed_magic; /* ERPT_MAGIC or zero to indicate end */ uint32_t ed_chksum; /* checksum32() of packed nvlist data */ uint32_t ed_size; /* ereport (nvl) fixed buf size */ uint32_t ed_pad; /* reserved for future use */ hrtime_t ed_hrt_nsec; /* hrtime of this ereport */ hrtime_t ed_hrt_base; /* hrtime sample corresponding to ed_tod_base */ struct { uint64_t sec; /* seconds since gettimeofday() Epoch */ uint64_t nsec; /* nanoseconds past ed_tod_base.sec */ } ed_tod_base; } erpt_dump_t; #ifdef _KERNEL #define ZEVENT_SHUTDOWN 0x1 typedef void zevent_cb_t(nvlist_t *, nvlist_t *); typedef struct zevent_s { nvlist_t *ev_nvl; /* protected by the zevent_lock */ nvlist_t *ev_detector; /* " */ list_t ev_ze_list; /* " */ list_node_t ev_node; /* " */ zevent_cb_t *ev_cb; /* " */ uint64_t ev_eid; } zevent_t; typedef struct zfs_zevent { zevent_t *ze_zevent; /* protected by the zevent_lock */ list_node_t ze_node; /* " */ uint64_t ze_dropped; /* " */ } zfs_zevent_t; extern void fm_init(void); extern void fm_fini(void); extern void fm_nvprint(nvlist_t *); extern void zfs_zevent_post_cb(nvlist_t *nvl, nvlist_t *detector); extern int zfs_zevent_post(nvlist_t *, nvlist_t *, zevent_cb_t *); extern void zfs_zevent_drain_all(int *); extern int zfs_zevent_fd_hold(int, minor_t *, zfs_zevent_t **); extern void zfs_zevent_fd_rele(int); extern int zfs_zevent_next(zfs_zevent_t *, nvlist_t **, uint64_t *, uint64_t *); extern int zfs_zevent_wait(zfs_zevent_t *); extern int zfs_zevent_seek(zfs_zevent_t *, uint64_t); extern void zfs_zevent_init(zfs_zevent_t **); extern void zfs_zevent_destroy(zfs_zevent_t *); #else static inline void fm_init(void) { } static inline void fm_fini(void) { } #endif /* _KERNEL */ #ifdef __cplusplus } #endif #endif /* _SYS_FM_UTIL_H */ zfs-0.8.3/include/sys/fm/PaxHeaders.151519/fs0000644000000000000000000000013213612143045016603 xustar000000000000000030 mtime=1579730469.859438118 30 atime=1579730489.077055163 30 ctime=1579730469.859438118 zfs-0.8.3/include/sys/fm/fs/0000775016037001603700000000000013612143045016664 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/sys/fm/fs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132020727 xustar000000000000000030 atime=1579730429.204132789 30 ctime=1579730469.857438054 zfs-0.8.3/include/sys/fm/fs/Makefile.am0000644016037001603700000000053513607166132020727 0ustar00hutter2hutter200000000000000COMMON_H = \ $(top_srcdir)/include/sys/fm/fs/zfs.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs/sys/fm/fs libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fm/fs kernel_HEADERS = $(COMMON_H) $(KERNEL_H) endif zfs-0.8.3/include/sys/fm/fs/PaxHeaders.151519/zfs.h0000644000000000000000000000007313607166132017645 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.85543799 zfs-0.8.3/include/sys/fm/fs/zfs.h0000644016037001603700000001260013607166132017642 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_FM_FS_ZFS_H #define _SYS_FM_FS_ZFS_H #ifdef __cplusplus extern "C" { #endif #define ZFS_ERROR_CLASS "fs.zfs" #define FM_EREPORT_ZFS_CHECKSUM "checksum" #define FM_EREPORT_ZFS_AUTHENTICATION "authentication" #define FM_EREPORT_ZFS_IO "io" #define FM_EREPORT_ZFS_DATA "data" #define FM_EREPORT_ZFS_DELAY "delay" #define FM_EREPORT_ZFS_DEADMAN "deadman" #define FM_EREPORT_ZFS_POOL "zpool" #define FM_EREPORT_ZFS_DEVICE_UNKNOWN "vdev.unknown" #define FM_EREPORT_ZFS_DEVICE_OPEN_FAILED "vdev.open_failed" #define FM_EREPORT_ZFS_DEVICE_CORRUPT_DATA "vdev.corrupt_data" #define FM_EREPORT_ZFS_DEVICE_NO_REPLICAS "vdev.no_replicas" #define FM_EREPORT_ZFS_DEVICE_BAD_GUID_SUM "vdev.bad_guid_sum" #define FM_EREPORT_ZFS_DEVICE_TOO_SMALL "vdev.too_small" #define FM_EREPORT_ZFS_DEVICE_BAD_LABEL "vdev.bad_label" #define FM_EREPORT_ZFS_DEVICE_BAD_ASHIFT "vdev.bad_ashift" #define FM_EREPORT_ZFS_IO_FAILURE "io_failure" #define FM_EREPORT_ZFS_PROBE_FAILURE "probe_failure" #define FM_EREPORT_ZFS_LOG_REPLAY "log_replay" #define FM_EREPORT_ZFS_CONFIG_CACHE_WRITE "config_cache_write" #define FM_EREPORT_PAYLOAD_ZFS_POOL "pool" #define FM_EREPORT_PAYLOAD_ZFS_POOL_FAILMODE "pool_failmode" #define FM_EREPORT_PAYLOAD_ZFS_POOL_GUID "pool_guid" #define FM_EREPORT_PAYLOAD_ZFS_POOL_CONTEXT "pool_context" #define FM_EREPORT_PAYLOAD_ZFS_POOL_STATE "pool_state" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_GUID "vdev_guid" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_TYPE "vdev_type" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_PATH "vdev_path" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_PHYSPATH "vdev_physpath" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_ENC_SYSFS_PATH "vdev_enc_sysfs_path" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_DEVID "vdev_devid" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_FRU "vdev_fru" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_STATE "vdev_state" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_LASTSTATE "vdev_laststate" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_ASHIFT "vdev_ashift" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_COMP_TS "vdev_complete_ts" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_DELTA_TS "vdev_delta_ts" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_SPARE_PATHS "vdev_spare_paths" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_SPARE_GUIDS "vdev_spare_guids" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_READ_ERRORS "vdev_read_errors" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_WRITE_ERRORS "vdev_write_errors" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_CKSUM_ERRORS "vdev_cksum_errors" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_DELAYS "vdev_delays" #define FM_EREPORT_PAYLOAD_ZFS_PARENT_GUID "parent_guid" #define FM_EREPORT_PAYLOAD_ZFS_PARENT_TYPE "parent_type" #define FM_EREPORT_PAYLOAD_ZFS_PARENT_PATH "parent_path" #define FM_EREPORT_PAYLOAD_ZFS_PARENT_DEVID "parent_devid" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_OBJSET "zio_objset" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_OBJECT "zio_object" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_LEVEL "zio_level" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_BLKID "zio_blkid" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_ERR "zio_err" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_OFFSET "zio_offset" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_SIZE "zio_size" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_FLAGS "zio_flags" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_STAGE "zio_stage" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_PIPELINE "zio_pipeline" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_DELAY "zio_delay" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_TIMESTAMP "zio_timestamp" #define FM_EREPORT_PAYLOAD_ZFS_ZIO_DELTA "zio_delta" #define FM_EREPORT_PAYLOAD_ZFS_PREV_STATE "prev_state" #define FM_EREPORT_PAYLOAD_ZFS_CKSUM_EXPECTED "cksum_expected" #define FM_EREPORT_PAYLOAD_ZFS_CKSUM_ACTUAL "cksum_actual" #define FM_EREPORT_PAYLOAD_ZFS_CKSUM_ALGO "cksum_algorithm" #define FM_EREPORT_PAYLOAD_ZFS_CKSUM_BYTESWAP "cksum_byteswap" #define FM_EREPORT_PAYLOAD_ZFS_BAD_OFFSET_RANGES "bad_ranges" #define FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_MIN_GAP "bad_ranges_min_gap" #define FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_SETS "bad_range_sets" #define FM_EREPORT_PAYLOAD_ZFS_BAD_RANGE_CLEARS "bad_range_clears" #define FM_EREPORT_PAYLOAD_ZFS_BAD_SET_BITS "bad_set_bits" #define FM_EREPORT_PAYLOAD_ZFS_BAD_CLEARED_BITS "bad_cleared_bits" #define FM_EREPORT_PAYLOAD_ZFS_BAD_SET_HISTOGRAM "bad_set_histogram" #define FM_EREPORT_PAYLOAD_ZFS_BAD_CLEARED_HISTOGRAM "bad_cleared_histogram" #define FM_EREPORT_FAILMODE_WAIT "wait" #define FM_EREPORT_FAILMODE_CONTINUE "continue" #define FM_EREPORT_FAILMODE_PANIC "panic" #define FM_RESOURCE_REMOVED "removed" #define FM_RESOURCE_AUTOREPLACE "autoreplace" #define FM_RESOURCE_STATECHANGE "statechange" #ifdef __cplusplus } #endif #endif /* _SYS_FM_FS_ZFS_H */ zfs-0.8.3/include/sys/fm/fs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775020736 xustar000000000000000030 mtime=1579730429.245134107 30 atime=1579730452.977896091 30 ctime=1579730469.859438118 zfs-0.8.3/include/sys/fm/fs/Makefile.in0000664016037001603700000006373313612142775020756 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/sys/fm/fs DIST_COMMON = $(am__kernel_HEADERS_DIST) $(am__libzfs_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/fm/fs/zfs.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/fm/fs/zfs.h HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ COMMON_H = \ $(top_srcdir)/include/sys/fm/fs/zfs.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/fm/fs @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fm/fs @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/fm/fs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/sys/fm/fs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/sys/fm/PaxHeaders.151519/protocol.h0000644000000000000000000000007413607166132020275 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.789435871 zfs-0.8.3/include/sys/fm/protocol.h0000644016037001603700000002765613607166132020312 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_FM_PROTOCOL_H #define _SYS_FM_PROTOCOL_H #ifdef __cplusplus extern "C" { #endif #ifdef _KERNEL #include #else #include #include #endif #include /* FM common member names */ #define FM_CLASS "class" #define FM_VERSION "version" /* FM protocol category 1 class names */ #define FM_EREPORT_CLASS "ereport" #define FM_FAULT_CLASS "fault" #define FM_DEFECT_CLASS "defect" #define FM_RSRC_CLASS "resource" #define FM_LIST_EVENT "list" #define FM_IREPORT_CLASS "ireport" #define FM_SYSEVENT_CLASS "sysevent" /* FM list.* event class values */ #define FM_LIST_SUSPECT_CLASS FM_LIST_EVENT ".suspect" #define FM_LIST_ISOLATED_CLASS FM_LIST_EVENT ".isolated" #define FM_LIST_REPAIRED_CLASS FM_LIST_EVENT ".repaired" #define FM_LIST_UPDATED_CLASS FM_LIST_EVENT ".updated" #define FM_LIST_RESOLVED_CLASS FM_LIST_EVENT ".resolved" /* ereport class subcategory values */ #define FM_ERROR_CPU "cpu" #define FM_ERROR_IO "io" /* ereport version and payload member names */ #define FM_EREPORT_VERS0 0 #define FM_EREPORT_VERSION FM_EREPORT_VERS0 /* ereport payload member names */ #define FM_EREPORT_DETECTOR "detector" #define FM_EREPORT_ENA "ena" #define FM_EREPORT_TIME "time" #define FM_EREPORT_EID "eid" /* list.* event payload member names */ #define FM_LIST_EVENT_SIZE "list-sz" /* ireport.* event payload member names */ #define FM_IREPORT_DETECTOR "detector" #define FM_IREPORT_UUID "uuid" #define FM_IREPORT_PRIORITY "pri" #define FM_IREPORT_ATTRIBUTES "attr" /* * list.suspect, isolated, updated, repaired and resolved * versions/payload member names. */ #define FM_SUSPECT_UUID "uuid" #define FM_SUSPECT_DIAG_CODE "code" #define FM_SUSPECT_DIAG_TIME "diag-time" #define FM_SUSPECT_DE "de" #define FM_SUSPECT_FAULT_LIST "fault-list" #define FM_SUSPECT_FAULT_SZ "fault-list-sz" #define FM_SUSPECT_FAULT_STATUS "fault-status" #define FM_SUSPECT_INJECTED "__injected" #define FM_SUSPECT_MESSAGE "message" #define FM_SUSPECT_RETIRE "retire" #define FM_SUSPECT_RESPONSE "response" #define FM_SUSPECT_SEVERITY "severity" #define FM_SUSPECT_VERS0 0 #define FM_SUSPECT_VERSION FM_SUSPECT_VERS0 #define FM_SUSPECT_FAULTY 0x1 #define FM_SUSPECT_UNUSABLE 0x2 #define FM_SUSPECT_NOT_PRESENT 0x4 #define FM_SUSPECT_DEGRADED 0x8 #define FM_SUSPECT_REPAIRED 0x10 #define FM_SUSPECT_REPLACED 0x20 #define FM_SUSPECT_ACQUITTED 0x40 /* fault event versions and payload member names */ #define FM_FAULT_VERS0 0 #define FM_FAULT_VERSION FM_FAULT_VERS0 #define FM_FAULT_ASRU "asru" #define FM_FAULT_FRU "fru" #define FM_FAULT_FRU_LABEL "fru-label" #define FM_FAULT_CERTAINTY "certainty" #define FM_FAULT_RESOURCE "resource" #define FM_FAULT_LOCATION "location" /* resource event versions and payload member names */ #define FM_RSRC_VERS0 0 #define FM_RSRC_VERSION FM_RSRC_VERS0 #define FM_RSRC_RESOURCE "resource" /* resource.fm.asru.* payload member names */ #define FM_RSRC_ASRU_UUID "uuid" #define FM_RSRC_ASRU_CODE "code" #define FM_RSRC_ASRU_FAULTY "faulty" #define FM_RSRC_ASRU_REPAIRED "repaired" #define FM_RSRC_ASRU_REPLACED "replaced" #define FM_RSRC_ASRU_ACQUITTED "acquitted" #define FM_RSRC_ASRU_RESOLVED "resolved" #define FM_RSRC_ASRU_UNUSABLE "unusable" #define FM_RSRC_ASRU_EVENT "event" /* resource.fm.xprt.* versions and payload member names */ #define FM_RSRC_XPRT_VERS0 0 #define FM_RSRC_XPRT_VERSION FM_RSRC_XPRT_VERS0 #define FM_RSRC_XPRT_UUID "uuid" #define FM_RSRC_XPRT_SUBCLASS "subclass" #define FM_RSRC_XPRT_FAULT_STATUS "fault-status" #define FM_RSRC_XPRT_FAULT_HAS_ASRU "fault-has-asru" /* * FM ENA Format Macros */ #define ENA_FORMAT_MASK 0x3 #define ENA_FORMAT(ena) ((ena) & ENA_FORMAT_MASK) /* ENA format types */ #define FM_ENA_FMT0 0 #define FM_ENA_FMT1 1 #define FM_ENA_FMT2 2 /* Format 1 */ #define ENA_FMT1_GEN_MASK 0x00000000000003FCull #define ENA_FMT1_ID_MASK 0xFFFFFFFFFFFFFC00ull #define ENA_FMT1_CPUID_MASK 0x00000000000FFC00ull #define ENA_FMT1_TIME_MASK 0xFFFFFFFFFFF00000ull #define ENA_FMT1_GEN_SHFT 2 #define ENA_FMT1_ID_SHFT 10 #define ENA_FMT1_CPUID_SHFT ENA_FMT1_ID_SHFT #define ENA_FMT1_TIME_SHFT 20 /* Format 2 */ #define ENA_FMT2_GEN_MASK 0x00000000000003FCull #define ENA_FMT2_ID_MASK 0xFFFFFFFFFFFFFC00ull #define ENA_FMT2_TIME_MASK ENA_FMT2_ID_MASK #define ENA_FMT2_GEN_SHFT 2 #define ENA_FMT2_ID_SHFT 10 #define ENA_FMT2_TIME_SHFT ENA_FMT2_ID_SHFT /* Common FMRI type names */ #define FM_FMRI_AUTHORITY "authority" #define FM_FMRI_SCHEME "scheme" #define FM_FMRI_SVC_AUTHORITY "svc-authority" #define FM_FMRI_FACILITY "facility" /* FMRI authority-type member names */ #define FM_FMRI_AUTH_CHASSIS "chassis-id" #define FM_FMRI_AUTH_PRODUCT_SN "product-sn" #define FM_FMRI_AUTH_PRODUCT "product-id" #define FM_FMRI_AUTH_DOMAIN "domain-id" #define FM_FMRI_AUTH_SERVER "server-id" #define FM_FMRI_AUTH_HOST "host-id" #define FM_AUTH_VERS0 0 #define FM_FMRI_AUTH_VERSION FM_AUTH_VERS0 /* scheme name values */ #define FM_FMRI_SCHEME_FMD "fmd" #define FM_FMRI_SCHEME_DEV "dev" #define FM_FMRI_SCHEME_HC "hc" #define FM_FMRI_SCHEME_SVC "svc" #define FM_FMRI_SCHEME_CPU "cpu" #define FM_FMRI_SCHEME_MEM "mem" #define FM_FMRI_SCHEME_MOD "mod" #define FM_FMRI_SCHEME_PKG "pkg" #define FM_FMRI_SCHEME_LEGACY "legacy-hc" #define FM_FMRI_SCHEME_ZFS "zfs" #define FM_FMRI_SCHEME_SW "sw" /* Scheme versions */ #define FMD_SCHEME_VERSION0 0 #define FM_FMD_SCHEME_VERSION FMD_SCHEME_VERSION0 #define DEV_SCHEME_VERSION0 0 #define FM_DEV_SCHEME_VERSION DEV_SCHEME_VERSION0 #define FM_HC_VERS0 0 #define FM_HC_SCHEME_VERSION FM_HC_VERS0 #define CPU_SCHEME_VERSION0 0 #define CPU_SCHEME_VERSION1 1 #define FM_CPU_SCHEME_VERSION CPU_SCHEME_VERSION1 #define MEM_SCHEME_VERSION0 0 #define FM_MEM_SCHEME_VERSION MEM_SCHEME_VERSION0 #define MOD_SCHEME_VERSION0 0 #define FM_MOD_SCHEME_VERSION MOD_SCHEME_VERSION0 #define PKG_SCHEME_VERSION0 0 #define FM_PKG_SCHEME_VERSION PKG_SCHEME_VERSION0 #define LEGACY_SCHEME_VERSION0 0 #define FM_LEGACY_SCHEME_VERSION LEGACY_SCHEME_VERSION0 #define SVC_SCHEME_VERSION0 0 #define FM_SVC_SCHEME_VERSION SVC_SCHEME_VERSION0 #define ZFS_SCHEME_VERSION0 0 #define FM_ZFS_SCHEME_VERSION ZFS_SCHEME_VERSION0 #define SW_SCHEME_VERSION0 0 #define FM_SW_SCHEME_VERSION SW_SCHEME_VERSION0 /* hc scheme member names */ #define FM_FMRI_HC_SERIAL_ID "serial" #define FM_FMRI_HC_PART "part" #define FM_FMRI_HC_REVISION "revision" #define FM_FMRI_HC_ROOT "hc-root" #define FM_FMRI_HC_LIST_SZ "hc-list-sz" #define FM_FMRI_HC_LIST "hc-list" #define FM_FMRI_HC_SPECIFIC "hc-specific" /* facility member names */ #define FM_FMRI_FACILITY_NAME "facility-name" #define FM_FMRI_FACILITY_TYPE "facility-type" /* hc-list version and member names */ #define FM_FMRI_HC_NAME "hc-name" #define FM_FMRI_HC_ID "hc-id" #define HC_LIST_VERSION0 0 #define FM_HC_LIST_VERSION HC_LIST_VERSION0 /* hc-specific member names */ #define FM_FMRI_HC_SPECIFIC_OFFSET "offset" #define FM_FMRI_HC_SPECIFIC_PHYSADDR "physaddr" /* fmd module scheme member names */ #define FM_FMRI_FMD_NAME "mod-name" #define FM_FMRI_FMD_VERSION "mod-version" /* dev scheme member names */ #define FM_FMRI_DEV_ID "devid" #define FM_FMRI_DEV_TGTPTLUN0 "target-port-l0id" #define FM_FMRI_DEV_PATH "device-path" /* pkg scheme member names */ #define FM_FMRI_PKG_BASEDIR "pkg-basedir" #define FM_FMRI_PKG_INST "pkg-inst" #define FM_FMRI_PKG_VERSION "pkg-version" /* svc scheme member names */ #define FM_FMRI_SVC_NAME "svc-name" #define FM_FMRI_SVC_INSTANCE "svc-instance" #define FM_FMRI_SVC_CONTRACT_ID "svc-contract-id" /* svc-authority member names */ #define FM_FMRI_SVC_AUTH_SCOPE "scope" #define FM_FMRI_SVC_AUTH_SYSTEM_FQN "system-fqn" /* cpu scheme member names */ #define FM_FMRI_CPU_ID "cpuid" #define FM_FMRI_CPU_SERIAL_ID "serial" #define FM_FMRI_CPU_MASK "cpumask" #define FM_FMRI_CPU_VID "cpuvid" #define FM_FMRI_CPU_CPUFRU "cpufru" #define FM_FMRI_CPU_CACHE_INDEX "cacheindex" #define FM_FMRI_CPU_CACHE_WAY "cacheway" #define FM_FMRI_CPU_CACHE_BIT "cachebit" #define FM_FMRI_CPU_CACHE_TYPE "cachetype" #define FM_FMRI_CPU_CACHE_TYPE_L2 0 #define FM_FMRI_CPU_CACHE_TYPE_L3 1 /* legacy-hc scheme member names */ #define FM_FMRI_LEGACY_HC "component" #define FM_FMRI_LEGACY_HC_PREFIX FM_FMRI_SCHEME_HC":///" \ FM_FMRI_LEGACY_HC"=" /* mem scheme member names */ #define FM_FMRI_MEM_UNUM "unum" #define FM_FMRI_MEM_SERIAL_ID "serial" #define FM_FMRI_MEM_PHYSADDR "physaddr" #define FM_FMRI_MEM_MEMCONFIG "memconfig" #define FM_FMRI_MEM_OFFSET "offset" /* mod scheme member names */ #define FM_FMRI_MOD_PKG "mod-pkg" #define FM_FMRI_MOD_NAME "mod-name" #define FM_FMRI_MOD_ID "mod-id" #define FM_FMRI_MOD_DESC "mod-desc" /* zfs scheme member names */ #define FM_FMRI_ZFS_POOL "pool" #define FM_FMRI_ZFS_VDEV "vdev" /* sw scheme member names - extra indentation for members of an nvlist */ #define FM_FMRI_SW_OBJ "object" #define FM_FMRI_SW_OBJ_PATH "path" #define FM_FMRI_SW_OBJ_ROOT "root" #define FM_FMRI_SW_OBJ_PKG "pkg" #define FM_FMRI_SW_SITE "site" #define FM_FMRI_SW_SITE_TOKEN "token" #define FM_FMRI_SW_SITE_MODULE "module" #define FM_FMRI_SW_SITE_FILE "file" #define FM_FMRI_SW_SITE_LINE "line" #define FM_FMRI_SW_SITE_FUNC "func" #define FM_FMRI_SW_CTXT "context" #define FM_FMRI_SW_CTXT_ORIGIN "origin" #define FM_FMRI_SW_CTXT_EXECNAME "execname" #define FM_FMRI_SW_CTXT_PID "pid" #define FM_FMRI_SW_CTXT_ZONE "zone" #define FM_FMRI_SW_CTXT_CTID "ctid" #define FM_FMRI_SW_CTXT_STACK "stack" #define FM_NVA_FREE 0 /* free allocator on nvlist_destroy */ #define FM_NVA_RETAIN 1 /* keep allocator on nvlist_destroy */ extern nv_alloc_t *fm_nva_xcreate(char *, size_t); extern void fm_nva_xdestroy(nv_alloc_t *); extern nvlist_t *fm_nvlist_create(nv_alloc_t *); extern void fm_nvlist_destroy(nvlist_t *, int); extern void fm_ereport_set(nvlist_t *, int, const char *, uint64_t, const nvlist_t *, ...); extern void fm_payload_set(nvlist_t *, ...); extern int i_fm_payload_set(nvlist_t *, const char *, va_list); extern void fm_fmri_hc_set(nvlist_t *, int, const nvlist_t *, nvlist_t *, int, ...); extern void fm_fmri_dev_set(nvlist_t *, int, const nvlist_t *, const char *, const char *, const char *); extern void fm_fmri_de_set(nvlist_t *, int, const nvlist_t *, const char *); extern void fm_fmri_cpu_set(nvlist_t *, int, const nvlist_t *, uint32_t, uint8_t *, const char *); extern void fm_fmri_mem_set(nvlist_t *, int, const nvlist_t *, const char *, const char *, uint64_t); extern void fm_fmri_zfs_set(nvlist_t *, int, uint64_t, uint64_t); extern void fm_fmri_hc_create(nvlist_t *, int, const nvlist_t *, nvlist_t *, nvlist_t *, int, ...); extern uint64_t fm_ena_increment(uint64_t); extern uint64_t fm_ena_generate(uint64_t, uchar_t); extern uint64_t fm_ena_generate_cpu(uint64_t, processorid_t, uchar_t); extern uint64_t fm_ena_generation_get(uint64_t); extern uchar_t fm_ena_format_get(uint64_t); extern uint64_t fm_ena_id_get(uint64_t); extern uint64_t fm_ena_time_get(uint64_t); extern void fm_erpt_dropped_increment(void); #ifdef __cplusplus } #endif #endif /* _SYS_FM_PROTOCOL_H */ zfs-0.8.3/include/sys/fm/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132020317 xustar000000000000000030 atime=1579730429.144130863 30 ctime=1579730469.794436032 zfs-0.8.3/include/sys/fm/Makefile.am0000644016037001603700000000061613607166132020317 0ustar00hutter2hutter200000000000000SUBDIRS = fs COMMON_H = \ $(top_srcdir)/include/sys/fm/protocol.h \ $(top_srcdir)/include/sys/fm/util.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs/sys/fm libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fm kernel_HEADERS = $(COMMON_H) $(KERNEL_H) endif zfs-0.8.3/include/sys/fm/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775020326 xustar000000000000000030 mtime=1579730429.187132243 30 atime=1579730452.947895129 30 ctime=1579730469.796436096 zfs-0.8.3/include/sys/fm/Makefile.in0000664016037001603700000007665213612142775020352 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/sys/fm DIST_COMMON = $(am__kernel_HEADERS_DIST) $(am__libzfs_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/fm/protocol.h \ $(top_srcdir)/include/sys/fm/util.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/fm/protocol.h \ $(top_srcdir)/include/sys/fm/util.h HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = fs COMMON_H = \ $(top_srcdir)/include/sys/fm/protocol.h \ $(top_srcdir)/include/sys/fm/util.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/fm @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/fm @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/fm/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/sys/fm/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/sys/PaxHeaders.151519/bpobj.h0000644000000000000000000000007413607166147017134 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.408423638 zfs-0.8.3/include/sys/bpobj.h0000644016037001603700000000555313607166147017141 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2015 by Delphix. All rights reserved. */ #ifndef _SYS_BPOBJ_H #define _SYS_BPOBJ_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct bpobj_phys { /* * This is the bonus buffer for the dead lists. The object's * contents is an array of bpo_entries blkptr_t's, representing * a total of bpo_bytes physical space. */ uint64_t bpo_num_blkptrs; uint64_t bpo_bytes; uint64_t bpo_comp; uint64_t bpo_uncomp; uint64_t bpo_subobjs; uint64_t bpo_num_subobjs; } bpobj_phys_t; #define BPOBJ_SIZE_V0 (2 * sizeof (uint64_t)) #define BPOBJ_SIZE_V1 (4 * sizeof (uint64_t)) typedef struct bpobj { kmutex_t bpo_lock; objset_t *bpo_os; uint64_t bpo_object; int bpo_epb; uint8_t bpo_havecomp; uint8_t bpo_havesubobj; bpobj_phys_t *bpo_phys; dmu_buf_t *bpo_dbuf; dmu_buf_t *bpo_cached_dbuf; } bpobj_t; typedef int bpobj_itor_t(void *arg, const blkptr_t *bp, dmu_tx_t *tx); uint64_t bpobj_alloc(objset_t *mos, int blocksize, dmu_tx_t *tx); uint64_t bpobj_alloc_empty(objset_t *os, int blocksize, dmu_tx_t *tx); void bpobj_free(objset_t *os, uint64_t obj, dmu_tx_t *tx); void bpobj_decr_empty(objset_t *os, dmu_tx_t *tx); int bpobj_open(bpobj_t *bpo, objset_t *mos, uint64_t object); void bpobj_close(bpobj_t *bpo); boolean_t bpobj_is_open(const bpobj_t *bpo); int bpobj_iterate(bpobj_t *bpo, bpobj_itor_t func, void *arg, dmu_tx_t *tx); int bpobj_iterate_nofree(bpobj_t *bpo, bpobj_itor_t func, void *, dmu_tx_t *); void bpobj_enqueue_subobj(bpobj_t *bpo, uint64_t subobj, dmu_tx_t *tx); void bpobj_enqueue(bpobj_t *bpo, const blkptr_t *bp, dmu_tx_t *tx); int bpobj_space(bpobj_t *bpo, uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); int bpobj_space_range(bpobj_t *bpo, uint64_t mintxg, uint64_t maxtxg, uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); boolean_t bpobj_is_empty(bpobj_t *bpo); #ifdef __cplusplus } #endif #endif /* _SYS_BPOBJ_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/cityhash.h0000644000000000000000000000007313607166132017645 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.41442383 zfs-0.8.3/include/sys/cityhash.h0000644016037001603700000000260513607166132017646 0ustar00hutter2hutter200000000000000// Copyright (c) 2011 Google, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. /* * Copyright (c) 2017 by Delphix. All rights reserved. */ #ifndef _SYS_CITYHASH_H #define _SYS_CITYHASH_H #include #ifdef __cplusplus extern "C" { #endif uint64_t cityhash4(uint64_t, uint64_t, uint64_t, uint64_t); #ifdef __cplusplus } #endif #endif /* _SYS_CITYHASH_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_dnode.h0000644000000000000000000000007413607166147020307 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.553428293 zfs-0.8.3/include/sys/trace_dnode.h0000644016037001603700000001027213607166147020306 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_dnode #if !defined(_TRACE_DNODE_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_DNODE_H #include #include /* * Generic support for three argument tracepoints of the form: * * DTRACE_PROBE3(..., * dnode_t *, ..., * int64_t, ..., * uint32_t, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_dnode_move_class, TP_PROTO(dnode_t *dn, int64_t refcount, uint32_t dbufs), TP_ARGS(dn, refcount, dbufs), TP_STRUCT__entry( __field(uint64_t, dn_object) __field(dmu_object_type_t, dn_type) __field(uint16_t, dn_bonuslen) __field(uint8_t, dn_bonustype) __field(uint8_t, dn_nblkptr) __field(uint8_t, dn_checksum) __field(uint8_t, dn_compress) __field(uint8_t, dn_nlevels) __field(uint8_t, dn_indblkshift) __field(uint8_t, dn_datablkshift) __field(uint8_t, dn_moved) __field(uint16_t, dn_datablkszsec) __field(uint32_t, dn_datablksz) __field(uint64_t, dn_maxblkid) __field(int64_t, dn_tx_holds) __field(int64_t, dn_holds) __field(boolean_t, dn_have_spill) __field(int64_t, refcount) __field(uint32_t, dbufs) ), TP_fast_assign( __entry->dn_object = dn->dn_object; __entry->dn_type = dn->dn_type; __entry->dn_bonuslen = dn->dn_bonuslen; __entry->dn_bonustype = dn->dn_bonustype; __entry->dn_nblkptr = dn->dn_nblkptr; __entry->dn_checksum = dn->dn_checksum; __entry->dn_compress = dn->dn_compress; __entry->dn_nlevels = dn->dn_nlevels; __entry->dn_indblkshift = dn->dn_indblkshift; __entry->dn_datablkshift = dn->dn_datablkshift; __entry->dn_moved = dn->dn_moved; __entry->dn_datablkszsec = dn->dn_datablkszsec; __entry->dn_datablksz = dn->dn_datablksz; __entry->dn_maxblkid = dn->dn_maxblkid; __entry->dn_tx_holds = dn->dn_tx_holds.rc_count; __entry->dn_holds = dn->dn_holds.rc_count; __entry->dn_have_spill = dn->dn_have_spill; __entry->refcount = refcount; __entry->dbufs = dbufs; ), TP_printk("dn { object %llu type %d bonuslen %u bonustype %u " "nblkptr %u checksum %u compress %u nlevels %u indblkshift %u " "datablkshift %u moved %u datablkszsec %u datablksz %u " "maxblkid %llu tx_holds %lli holds %lli have_spill %d } " "refcount %lli dbufs %u", __entry->dn_object, __entry->dn_type, __entry->dn_bonuslen, __entry->dn_bonustype, __entry->dn_nblkptr, __entry->dn_checksum, __entry->dn_compress, __entry->dn_nlevels, __entry->dn_indblkshift, __entry->dn_datablkshift, __entry->dn_moved, __entry->dn_datablkszsec, __entry->dn_datablksz, __entry->dn_maxblkid, __entry->dn_tx_holds, __entry->dn_holds, __entry->dn_have_spill, __entry->refcount, __entry->dbufs) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_DNODE_MOVE_EVENT(name) \ DEFINE_EVENT(zfs_dnode_move_class, name, \ TP_PROTO(dnode_t *dn, int64_t refcount, uint32_t dbufs), \ TP_ARGS(dn, refcount, dbufs)) /* END CSTYLED */ DEFINE_DNODE_MOVE_EVENT(zfs_dnode__move); #endif /* _TRACE_DNODE_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_dnode #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_initialize.h0000644000000000000000000000007413607166132021217 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.607430027 zfs-0.8.3/include/sys/vdev_initialize.h0000644016037001603700000000262413607166132021220 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2016 by Delphix. All rights reserved. */ #ifndef _SYS_VDEV_INITIALIZE_H #define _SYS_VDEV_INITIALIZE_H #include #ifdef __cplusplus extern "C" { #endif extern void vdev_initialize(vdev_t *vd); extern void vdev_initialize_stop(vdev_t *vd, vdev_initializing_state_t tgt_state, list_t *vd_list); extern void vdev_initialize_stop_all(vdev_t *vd, vdev_initializing_state_t tgt_state); extern void vdev_initialize_stop_wait(spa_t *spa, list_t *vd_list); extern void vdev_initialize_restart(vdev_t *vd); #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_INITIALIZE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/sa_impl.h0000644000000000000000000000007413607166132017456 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.514427041 zfs-0.8.3/include/sys/sa_impl.h0000644016037001603700000002044113607166132017454 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. */ #ifndef _SYS_SA_IMPL_H #define _SYS_SA_IMPL_H #include #include #include /* * Array of known attributes and their * various characteristics. */ typedef struct sa_attr_table { sa_attr_type_t sa_attr; uint8_t sa_registered; uint16_t sa_length; sa_bswap_type_t sa_byteswap; char *sa_name; } sa_attr_table_t; /* * Zap attribute format for attribute registration * * 64 56 48 40 32 24 16 8 0 * +-------+-------+-------+-------+-------+-------+-------+-------+ * | unused | len | bswap | attr num | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * Zap attribute format for layout information. * * layout information is stored as an array of attribute numbers * The name of the attribute is the layout number (0, 1, 2, ...) * * 16 0 * +---- ---+ * | attr # | * +--------+ * | attr # | * +--- ----+ * ...... * */ #define ATTR_BSWAP(x) BF32_GET(x, 16, 8) #define ATTR_LENGTH(x) BF32_GET(x, 24, 16) #define ATTR_NUM(x) BF32_GET(x, 0, 16) #define ATTR_ENCODE(x, attr, length, bswap) \ { \ BF64_SET(x, 24, 16, length); \ BF64_SET(x, 16, 8, bswap); \ BF64_SET(x, 0, 16, attr); \ } #define TOC_OFF(x) BF32_GET(x, 0, 23) #define TOC_ATTR_PRESENT(x) BF32_GET(x, 31, 1) #define TOC_LEN_IDX(x) BF32_GET(x, 24, 4) #define TOC_ATTR_ENCODE(x, len_idx, offset) \ { \ BF32_SET(x, 31, 1, 1); \ BF32_SET(x, 24, 7, len_idx); \ BF32_SET(x, 0, 24, offset); \ } #define SA_LAYOUTS "LAYOUTS" #define SA_REGISTRY "REGISTRY" /* * Each unique layout will have their own table * sa_lot (layout_table) */ typedef struct sa_lot { avl_node_t lot_num_node; avl_node_t lot_hash_node; uint64_t lot_num; uint64_t lot_hash; sa_attr_type_t *lot_attrs; /* array of attr #'s */ uint32_t lot_var_sizes; /* how many aren't fixed size */ uint32_t lot_attr_count; /* total attr count */ list_t lot_idx_tab; /* should be only a couple of entries */ int lot_instance; /* used with lot_hash to identify entry */ } sa_lot_t; /* index table of offsets */ typedef struct sa_idx_tab { list_node_t sa_next; sa_lot_t *sa_layout; uint16_t *sa_variable_lengths; zfs_refcount_t sa_refcount; uint32_t *sa_idx_tab; /* array of offsets */ } sa_idx_tab_t; /* * Since the offset/index information into the actual data * will usually be identical we can share that information with * all handles that have the exact same offsets. * * You would typically only have a large number of different table of * contents if you had a several variable sized attributes. * * Two AVL trees are used to track the attribute layout numbers. * one is keyed by number and will be consulted when a DMU_OT_SA * object is first read. The second tree is keyed by the hash signature * of the attributes and will be consulted when an attribute is added * to determine if we already have an instance of that layout. Both * of these tree's are interconnected. The only difference is that * when an entry is found in the "hash" tree the list of attributes will * need to be compared against the list of attributes you have in hand. * The assumption is that typically attributes will just be updated and * adding a completely new attribute is a very rare operation. */ struct sa_os { kmutex_t sa_lock; boolean_t sa_need_attr_registration; boolean_t sa_force_spill; uint64_t sa_master_obj; uint64_t sa_reg_attr_obj; uint64_t sa_layout_attr_obj; int sa_num_attrs; sa_attr_table_t *sa_attr_table; /* private attr table */ sa_update_cb_t *sa_update_cb; avl_tree_t sa_layout_num_tree; /* keyed by layout number */ avl_tree_t sa_layout_hash_tree; /* keyed by layout hash value */ int sa_user_table_sz; sa_attr_type_t *sa_user_table; /* user name->attr mapping table */ }; /* * header for all bonus and spill buffers. * * The header has a fixed portion with a variable number * of "lengths" depending on the number of variable sized * attributes which are determined by the "layout number" */ #define SA_MAGIC 0x2F505A /* ZFS SA */ typedef struct sa_hdr_phys { uint32_t sa_magic; /* * Encoded with hdrsize and layout number as follows: * 16 10 0 * +--------+-------+ * | hdrsz |layout | * +--------+-------+ * * Bits 0-10 are the layout number * Bits 11-16 are the size of the header. * The hdrsize is the number * 8 * * For example. * hdrsz of 1 ==> 8 byte header * 2 ==> 16 byte header * */ uint16_t sa_layout_info; uint16_t sa_lengths[1]; /* optional sizes for variable length attrs */ /* ... Data follows the lengths. */ } sa_hdr_phys_t; #define SA_HDR_LAYOUT_NUM(hdr) BF32_GET(hdr->sa_layout_info, 0, 10) #define SA_HDR_SIZE(hdr) BF32_GET_SB(hdr->sa_layout_info, 10, 6, 3, 0) #define SA_HDR_LAYOUT_INFO_ENCODE(x, num, size) \ { \ BF32_SET_SB(x, 10, 6, 3, 0, size); \ BF32_SET(x, 0, 10, num); \ } typedef enum sa_buf_type { SA_BONUS = 1, SA_SPILL = 2 } sa_buf_type_t; typedef enum sa_data_op { SA_LOOKUP, SA_UPDATE, SA_ADD, SA_REPLACE, SA_REMOVE } sa_data_op_t; /* * Opaque handle used for most sa functions * * This needs to be kept as small as possible. */ struct sa_handle { dmu_buf_user_t sa_dbu; kmutex_t sa_lock; dmu_buf_t *sa_bonus; dmu_buf_t *sa_spill; objset_t *sa_os; void *sa_userp; sa_idx_tab_t *sa_bonus_tab; /* idx of bonus */ sa_idx_tab_t *sa_spill_tab; /* only present if spill activated */ }; #define SA_GET_DB(hdl, type) \ (dmu_buf_impl_t *)((type == SA_BONUS) ? hdl->sa_bonus : hdl->sa_spill) #define SA_GET_HDR(hdl, type) \ ((sa_hdr_phys_t *)((dmu_buf_impl_t *)(SA_GET_DB(hdl, \ type))->db.db_data)) #define SA_IDX_TAB_GET(hdl, type) \ (type == SA_BONUS ? hdl->sa_bonus_tab : hdl->sa_spill_tab) #define IS_SA_BONUSTYPE(a) \ ((a == DMU_OT_SA) ? B_TRUE : B_FALSE) #define SA_BONUSTYPE_FROM_DB(db) \ (dmu_get_bonustype((dmu_buf_t *)db)) #define SA_BLKPTR_SPACE (DN_OLD_MAX_BONUSLEN - sizeof (blkptr_t)) #define SA_LAYOUT_NUM(x, type) \ ((!IS_SA_BONUSTYPE(type) ? 0 : (((IS_SA_BONUSTYPE(type)) && \ ((SA_HDR_LAYOUT_NUM(x)) == 0)) ? 1 : SA_HDR_LAYOUT_NUM(x)))) #define SA_REGISTERED_LEN(sa, attr) sa->sa_attr_table[attr].sa_length #define SA_ATTR_LEN(sa, idx, attr, hdr) ((SA_REGISTERED_LEN(sa, attr) == 0) ?\ hdr->sa_lengths[TOC_LEN_IDX(idx->sa_idx_tab[attr])] : \ SA_REGISTERED_LEN(sa, attr)) #define SA_SET_HDR(hdr, num, size) \ { \ hdr->sa_magic = SA_MAGIC; \ SA_HDR_LAYOUT_INFO_ENCODE(hdr->sa_layout_info, num, size); \ } #define SA_ATTR_INFO(sa, idx, hdr, attr, bulk, type, hdl) \ { \ bulk.sa_size = SA_ATTR_LEN(sa, idx, attr, hdr); \ bulk.sa_buftype = type; \ bulk.sa_addr = \ (void *)((uintptr_t)TOC_OFF(idx->sa_idx_tab[attr]) + \ (uintptr_t)hdr); \ } #define SA_HDR_SIZE_MATCH_LAYOUT(hdr, tb) \ (SA_HDR_SIZE(hdr) == (sizeof (sa_hdr_phys_t) + \ (tb->lot_var_sizes > 1 ? P2ROUNDUP((tb->lot_var_sizes - 1) * \ sizeof (uint16_t), 8) : 0))) int sa_add_impl(sa_handle_t *, sa_attr_type_t, uint32_t, sa_data_locator_t, void *, dmu_tx_t *); void sa_register_update_callback_locked(objset_t *, sa_update_cb_t *); int sa_size_locked(sa_handle_t *, sa_attr_type_t, int *); void sa_default_locator(void **, uint32_t *, uint32_t, boolean_t, void *); int sa_attr_size(sa_os_t *, sa_idx_tab_t *, sa_attr_type_t, uint16_t *, sa_hdr_phys_t *); #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } #endif #endif /* _SYS_SA_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_dbuf.h0000644000000000000000000000007413607166147020136 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.549428165 zfs-0.8.3/include/sys/trace_dbuf.h0000644016037001603700000001051413607166147020134 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_dbuf #if !defined(_TRACE_DBUF_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_DBUF_H #include #include #ifndef TRACE_DBUF_MSG_MAX #define TRACE_DBUF_MSG_MAX 512 #endif /* * Generic support for two argument tracepoints of the form: * * DTRACE_PROBE2(..., * dmu_buf_impl_t *, ..., * zio_t *, ...); */ #define DBUF_TP_STRUCT_ENTRY \ __dynamic_array(char, os_spa, TRACE_DBUF_MSG_MAX) \ __field(uint64_t, ds_object) \ __field(uint64_t, db_object) \ __field(uint64_t, db_level) \ __field(uint64_t, db_blkid) \ __field(uint64_t, db_offset) \ __field(uint64_t, db_size) \ __field(uint64_t, db_state) \ __field(int64_t, db_holds) \ __dynamic_array(char, msg, TRACE_DBUF_MSG_MAX) #define DBUF_TP_FAST_ASSIGN \ if (db != NULL) { \ __assign_str(os_spa, \ spa_name(DB_DNODE(db)->dn_objset->os_spa)); \ \ __entry->ds_object = db->db_objset->os_dsl_dataset ? \ db->db_objset->os_dsl_dataset->ds_object : 0; \ \ __entry->db_object = db->db.db_object; \ __entry->db_level = db->db_level; \ __entry->db_blkid = db->db_blkid; \ __entry->db_offset = db->db.db_offset; \ __entry->db_size = db->db.db_size; \ __entry->db_state = db->db_state; \ __entry->db_holds = zfs_refcount_count(&db->db_holds); \ snprintf(__get_str(msg), TRACE_DBUF_MSG_MAX, \ DBUF_TP_PRINTK_FMT, DBUF_TP_PRINTK_ARGS); \ } else { \ __assign_str(os_spa, "NULL") \ __entry->ds_object = 0; \ __entry->db_object = 0; \ __entry->db_level = 0; \ __entry->db_blkid = 0; \ __entry->db_offset = 0; \ __entry->db_size = 0; \ __entry->db_state = 0; \ __entry->db_holds = 0; \ snprintf(__get_str(msg), TRACE_DBUF_MSG_MAX, \ "dbuf { NULL }"); \ } #define DBUF_TP_PRINTK_FMT \ "dbuf { spa \"%s\" objset %llu object %llu level %llu " \ "blkid %llu offset %llu size %llu state %llu holds %lld }" #define DBUF_TP_PRINTK_ARGS \ __get_str(os_spa), __entry->ds_object, \ __entry->db_object, __entry->db_level, \ __entry->db_blkid, __entry->db_offset, \ __entry->db_size, __entry->db_state, __entry->db_holds /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_dbuf_class, TP_PROTO(dmu_buf_impl_t *db, zio_t *zio), TP_ARGS(db, zio), TP_STRUCT__entry(DBUF_TP_STRUCT_ENTRY), TP_fast_assign(DBUF_TP_FAST_ASSIGN), TP_printk("%s", __get_str(msg)) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_DBUF_EVENT(name) \ DEFINE_EVENT(zfs_dbuf_class, name, \ TP_PROTO(dmu_buf_impl_t *db, zio_t *zio), \ TP_ARGS(db, zio)) /* END CSTYLED */ DEFINE_DBUF_EVENT(zfs_blocked__read); /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_dbuf_evict_one_class, TP_PROTO(dmu_buf_impl_t *db, multilist_sublist_t *mls), TP_ARGS(db, mls), TP_STRUCT__entry(DBUF_TP_STRUCT_ENTRY), TP_fast_assign(DBUF_TP_FAST_ASSIGN), TP_printk("%s", __get_str(msg)) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_DBUF_EVICT_ONE_EVENT(name) \ DEFINE_EVENT(zfs_dbuf_evict_one_class, name, \ TP_PROTO(dmu_buf_impl_t *db, multilist_sublist_t *mls), \ TP_ARGS(db, mls)) /* END CSTYLED */ DEFINE_DBUF_EVICT_ONE_EVENT(zfs_dbuf__evict__one); #endif /* _TRACE_DBUF_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_dbuf #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/sysevent0000644000000000000000000000013213612143046017452 xustar000000000000000030 mtime=1579730470.089445504 30 atime=1579730489.077055163 30 ctime=1579730470.089445504 zfs-0.8.3/include/sys/sysevent/0000775016037001603700000000000013612143046017533 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/sys/sysevent/PaxHeaders.151519/dev.h0000644000000000000000000000007413607166132020470 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.085445376 zfs-0.8.3/include/sys/sysevent/dev.h0000644016037001603700000001670613607166132020477 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_SYSEVENT_DEV_H #define _SYS_SYSEVENT_DEV_H #include #ifdef __cplusplus extern "C" { #endif /* * Event schema for EC_DEV_ADD/ESC_DISK * * Event Class - EC_DEV_ADD * Event Sub-Class - ESC_DISK * * Attribute Name - EV_VERSION * Attribute Type - DATA_TYPE_INT32 * Attribute Value - event version number * * Attribute Name - DEV_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - /dev name to the raw device. * The name does not include the slice number component. * * Attribute Name - DEV_PHYS_PATH * Attribute Type - DATA_TYPE_STRING * Attribute Value - physical path of the device without the "/devices" * prefix. * * Attribute Name - DEV_DRIVER_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - driver name * * Attribute Name - DEV_INSTANCE * Attribute Type - DATA_TYPE_INT32 * Attribute Value - driver instance number * * Attribute Name - DEV_PROP_PREFIX * Attribute Type - data type of the devinfo_node_property * Attribute Value - value of the devinfo_node_property * * * Event schema for EC_DEV_ADD/ESC_NETWORK * * Event Class - EC_DEV_ADD * Event Sub-Class - ESC_NETWORK * * Attribute Name - EV_VERSION * Attribute Type - DATA_TYPE_INT32 * Attribute Value - event version number * * Attribute Name - DEV_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - /dev name associated with the device if exists. * /dev name associated with the driver for DLPI * Style-2 only drivers. * * Attribute Name - DEV_PHYS_PATH * Attribute Type - DATA_TYPE_STRING * Attribute Value - physical path of the device without the "/devices" * prefix. * * Attribute Name - DEV_DRIVER_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - driver name * * Attribute Name - DEV_INSTANCE * Attribute Type - DATA_TYPE_INT32 * Attribute Value - driver instance number * * Attribute Name - DEV_PROP_PREFIX * Attribute Type - data type of the devinfo_node_property * Attribute Value - value of the devinfo_node_property * * * Event schema for EC_DEV_ADD/ESC_PRINTER * * Event Class - EC_DEV_ADD * Event Sub-Class - ESC_PRINTER * * Attribute Name - EV_VERSION * Attribute Type - DATA_TYPE_INT32 * Attribute Value - event version number * * Attribute Name - DEV_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - /dev/printers name associated with the device * if exists. * /dev name associated with the device if it exists * * Attribute Name - DEV_PHYS_PATH * Attribute Type - DATA_TYPE_STRING * Attribute Value - physical path of the device without the "/devices" * prefix. * * Attribute Name - DEV_DRIVER_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - driver name * * Attribute Name - DEV_INSTANCE * Attribute Type - DATA_TYPE_INT32 * Attribute Value - driver instance number * * Attribute Name - DEV_PROP_PREFIX * Attribute Type - data type of the devinfo_node_property * Attribute Value - value of the devinfo_node_property * * * Event schema for EC_DEV_REMOVE/ESC_DISK * * Event Class - EC_DEV_REMOVE * Event Sub-Class - ESC_DISK * * Attribute Name - EV_VERSION * Attribute Type - DATA_TYPE_INT32 * Attribute Value - event version number * * Attribute Name - DEV_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - /dev name to the raw device. * The name does not include the slice number component. * * Attribute Name - DEV_PHYS_PATH * Attribute Type - DATA_TYPE_STRING * Attribute Value - physical path of the device without the "/devices" * prefix. * * Attribute Name - DEV_DRIVER_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - driver name * * Attribute Name - DEV_INSTANCE * Attribute Type - DATA_TYPE_INT32 * Attribute Value - driver instance number * * * Event schema for EC_DEV_REMOVE/ESC_NETWORK * * Event Class - EC_DEV_REMOVE * Event Sub-Class - ESC_NETWORK * * Attribute Name - EV_VERSION * Attribute Type - DATA_TYPE_INT32 * Attribute Value - event version number * * Attribute Name - DEV_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - /dev name associated with the device if exists. * /dev name associated with the driver for DLPI * Style-2 only drivers. * * Attribute Name - DEV_PHYS_PATH * Attribute Type - DATA_TYPE_STRING * Attribute Value - physical path of the device without the "/devices" * prefix. * * Attribute Name - DEV_DRIVER_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - driver name * * Attribute Name - DEV_INSTANCE * Attribute Type - DATA_TYPE_INT32 * Attribute Value - driver instance number * * * Event schema for EC_DEV_REMOVE/ESC_PRINTER * * Event Class - EC_DEV_REMOVE * Event Sub-Class - ESC_PRINTER * * Attribute Name - EV_VERSION * Attribute Type - DATA_TYPE_INT32 * Attribute Value - event version number * * Attribute Name - DEV_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - /dev/printers name associated with the device * if exists. * /dev name associated with the device if it exists * * Attribute Name - DEV_PHYS_PATH * Attribute Type - DATA_TYPE_STRING * Attribute Value - physical path of the device without the "/devices" * prefix. * * Attribute Name - DEV_DRIVER_NAME * Attribute Type - DATA_TYPE_STRING * Attribute Value - driver name * * Attribute Name - DEV_INSTANCE * Attribute Type - DATA_TYPE_INT32 * Attribute Value - driver instance number * * * Event schema for EC_DEV_BRANCH/ESC_DEV_BRANCH_ADD or ESC_DEV_BRANCH_REMOVE * * Event Class - EC_DEV_BRANCH * Event Sub-Class - ESC_DEV_BRANCH_ADD or ESC_DEV_BRANCH_REMOVE * * Attribute Name - EV_VERSION * Attribute Type - DATA_TYPE_INT32 * Attribute Value - event version number * * Attribute Name - DEV_PHYS_PATH * Attribute Type - DATA_TYPE_STRING * Attribute Value - physical path to the root node of the device subtree * without the "/devices" prefix. */ #define EV_VERSION "version" #define DEV_PHYS_PATH "phys_path" #define DEV_NAME "dev_name" #define DEV_DRIVER_NAME "driver_name" #define DEV_INSTANCE "instance" #define DEV_PROP_PREFIX "prop-" #ifdef __linux__ #define DEV_IDENTIFIER "devid" #define DEV_PATH "path" #define DEV_IS_PART "is_slice" #define DEV_SIZE "dev_size" #endif /* __linux__ */ #define EV_V1 1 /* maximum number of devinfo node properties added to the event */ #define MAX_PROP_COUNT 100 /* only properties with size less than PROP_LEN_LIMIT are added to the event */ #define PROP_LEN_LIMIT 1024 #ifdef __cplusplus } #endif #endif /* _SYS_SYSEVENT_DEV_H */ zfs-0.8.3/include/sys/sysevent/PaxHeaders.151519/eventdefs.h0000644000000000000000000000007413607166132021675 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.083445312 zfs-0.8.3/include/sys/sysevent/eventdefs.h0000644016037001603700000001131313607166132021671 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright 2017 Joyent, Inc. */ #ifndef _SYS_SYSEVENT_EVENTDEFS_H #define _SYS_SYSEVENT_EVENTDEFS_H #ifdef __cplusplus extern "C" { #endif /* * eventdefs.h contains public definitions for sysevent types (classes * and subclasses). All additions/removal/changes are subject * to PSARC approval. */ /* Sysevent Class definitions */ #define EC_NONE "EC_none" #define EC_PRIV "EC_priv" #define EC_PLATFORM "EC_platform" /* events private to platform */ #define EC_DR "EC_dr" /* Dynamic reconfiguration event class */ #define EC_ENV "EC_env" /* Environmental monitor event class */ #define EC_DOMAIN "EC_domain" /* Domain event class */ #define EC_AP_DRIVER "EC_ap_driver" /* Alternate Pathing event class */ #define EC_IPMP "EC_ipmp" /* IP Multipathing event class */ #define EC_DEV_ADD "EC_dev_add" /* device add event class */ #define EC_DEV_REMOVE "EC_dev_remove" /* device remove event class */ #define EC_DEV_BRANCH "EC_dev_branch" /* device tree branch event class */ #define EC_DEV_STATUS "EC_dev_status" /* device status event class */ #define EC_FM "EC_fm" /* FMA error report event */ #define EC_ZFS "EC_zfs" /* ZFS event */ #define EC_DATALINK "EC_datalink" /* datalink event */ #define EC_VRRP "EC_vrrp" /* VRRP event */ /* * EC_DEV_ADD and EC_DEV_REMOVE subclass definitions - supporting attributes * (name/value pairs) are found in sys/sysevent/dev.h */ #define ESC_DISK "disk" /* disk device */ #define ESC_NETWORK "network" /* network interface */ #define ESC_PRINTER "printer" /* printer device */ #define ESC_LOFI "lofi" /* lofi device */ /* * EC_DEV_BRANCH subclass definitions - supporting attributes (name/value pairs) * are found in sys/sysevent/dev.h */ /* device tree branch added */ #define ESC_DEV_BRANCH_ADD "dev_branch_add" /* device tree branch removed */ #define ESC_DEV_BRANCH_REMOVE "dev_branch_remove" /* * EC_DEV_STATUS subclass definitions * * device capacity dynamically changed */ #define ESC_DEV_DLE "dev_dle" /* LUN has received an eject request from the user */ #define ESC_DEV_EJECT_REQUEST "dev_eject_request" /* FMA Fault and Error event protocol subclass */ #define ESC_FM_ERROR "error" #define ESC_FM_ERROR_REPLAY "error_replay" /* * ZFS subclass definitions. supporting attributes (name/value paris) are found * in sys/fs/zfs.h */ #define ESC_ZFS_RESILVER_START "resilver_start" #define ESC_ZFS_RESILVER_FINISH "resilver_finish" #define ESC_ZFS_VDEV_REMOVE "vdev_remove" #define ESC_ZFS_VDEV_REMOVE_AUX "vdev_remove_aux" #define ESC_ZFS_VDEV_REMOVE_DEV "vdev_remove_dev" #define ESC_ZFS_POOL_CREATE "pool_create" #define ESC_ZFS_POOL_DESTROY "pool_destroy" #define ESC_ZFS_POOL_IMPORT "pool_import" #define ESC_ZFS_POOL_EXPORT "pool_export" #define ESC_ZFS_VDEV_ADD "vdev_add" #define ESC_ZFS_VDEV_ATTACH "vdev_attach" #define ESC_ZFS_VDEV_CLEAR "vdev_clear" #define ESC_ZFS_VDEV_CHECK "vdev_check" #define ESC_ZFS_VDEV_ONLINE "vdev_online" #define ESC_ZFS_CONFIG_SYNC "config_sync" #define ESC_ZFS_SCRUB_START "scrub_start" #define ESC_ZFS_SCRUB_FINISH "scrub_finish" #define ESC_ZFS_SCRUB_ABORT "scrub_abort" #define ESC_ZFS_SCRUB_RESUME "scrub_resume" #define ESC_ZFS_SCRUB_PAUSED "scrub_paused" #define ESC_ZFS_VDEV_SPARE "vdev_spare" #define ESC_ZFS_VDEV_AUTOEXPAND "vdev_autoexpand" #define ESC_ZFS_BOOTFS_VDEV_ATTACH "bootfs_vdev_attach" #define ESC_ZFS_POOL_REGUID "pool_reguid" #define ESC_ZFS_HISTORY_EVENT "history_event" #define ESC_ZFS_TRIM_START "trim_start" #define ESC_ZFS_TRIM_FINISH "trim_finish" #define ESC_ZFS_TRIM_CANCEL "trim_cancel" #define ESC_ZFS_TRIM_RESUME "trim_resume" #define ESC_ZFS_TRIM_SUSPEND "trim_suspend" /* * datalink subclass definitions. */ #define ESC_DATALINK_PHYS_ADD "datalink_phys_add" /* new physical link */ #ifdef __cplusplus } #endif #endif /* _SYS_SYSEVENT_EVENTDEFS_H */ zfs-0.8.3/include/sys/sysevent/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166132021574 xustar000000000000000030 atime=1579730429.376138313 29 ctime=1579730470.08744544 zfs-0.8.3/include/sys/sysevent/Makefile.am0000644016037001603700000000063013607166132021571 0ustar00hutter2hutter200000000000000COMMON_H = \ $(top_srcdir)/include/sys/sysevent/eventdefs.h \ $(top_srcdir)/include/sys/sysevent/dev.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs/sys/sysevent libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/sysevent kernel_HEADERS = $(COMMON_H) $(KERNEL_H) endif zfs-0.8.3/include/sys/sysevent/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775021604 xustar000000000000000030 mtime=1579730429.417139629 30 atime=1579730453.037898018 30 ctime=1579730470.089445504 zfs-0.8.3/include/sys/sysevent/Makefile.in0000664016037001603700000006422113612142775021615 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/sys/sysevent DIST_COMMON = $(am__kernel_HEADERS_DIST) $(am__libzfs_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__kernel_HEADERS_DIST = \ $(top_srcdir)/include/sys/sysevent/eventdefs.h \ $(top_srcdir)/include/sys/sysevent/dev.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" am__libzfs_HEADERS_DIST = \ $(top_srcdir)/include/sys/sysevent/eventdefs.h \ $(top_srcdir)/include/sys/sysevent/dev.h HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ COMMON_H = \ $(top_srcdir)/include/sys/sysevent/eventdefs.h \ $(top_srcdir)/include/sys/sysevent/dev.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/sysevent @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/sysevent @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/sysevent/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/sys/sysevent/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/sys/PaxHeaders.151519/frame.h0000644000000000000000000000007413607166132017124 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.478425884 zfs-0.8.3/include/sys/frame.h0000644016037001603700000000146113607166132017123 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (C) 2017 by Lawrence Livermore National Security, LLC. */ #ifndef _SYS_FRAME_H #define _SYS_FRAME_H #ifdef __cplusplus extern "C" { #endif #if defined(__KERNEL__) && defined(HAVE_STACK_FRAME_NON_STANDARD) #include #else #define STACK_FRAME_NON_STANDARD(func) #endif #ifdef __cplusplus } #endif #endif /* _SYS_FRAME_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zil_impl.h0000644000000000000000000000007413612141510017636 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.677432275 zfs-0.8.3/include/sys/zil_impl.h0000644016037001603700000002217213612141510017637 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. */ /* Portions Copyright 2010 Robert Milkowski */ #ifndef _SYS_ZIL_IMPL_H #define _SYS_ZIL_IMPL_H #include #include #ifdef __cplusplus extern "C" { #endif /* * Possible states for a given lwb structure. * * An lwb will start out in the "closed" state, and then transition to * the "opened" state via a call to zil_lwb_write_open(). When * transitioning from "closed" to "opened" the zilog's "zl_issuer_lock" * must be held. * * After the lwb is "opened", it can transition into the "issued" state * via zil_lwb_write_issue(). Again, the zilog's "zl_issuer_lock" must * be held when making this transition. * * After the lwb's write zio completes, it transitions into the "write * done" state via zil_lwb_write_done(); and then into the "flush done" * state via zil_lwb_flush_vdevs_done(). When transitioning from * "issued" to "write done", and then from "write done" to "flush done", * the zilog's "zl_lock" must be held, *not* the "zl_issuer_lock". * * The zilog's "zl_issuer_lock" can become heavily contended in certain * workloads, so we specifically avoid acquiring that lock when * transitioning an lwb from "issued" to "done". This allows us to avoid * having to acquire the "zl_issuer_lock" for each lwb ZIO completion, * which would have added more lock contention on an already heavily * contended lock. * * Additionally, correctness when reading an lwb's state is often * achieved by exploiting the fact that these state transitions occur in * this specific order; i.e. "closed" to "opened" to "issued" to "done". * * Thus, if an lwb is in the "closed" or "opened" state, holding the * "zl_issuer_lock" will prevent a concurrent thread from transitioning * that lwb to the "issued" state. Likewise, if an lwb is already in the * "issued" state, holding the "zl_lock" will prevent a concurrent * thread from transitioning that lwb to the "write done" state. */ typedef enum { LWB_STATE_CLOSED, LWB_STATE_OPENED, LWB_STATE_ISSUED, LWB_STATE_WRITE_DONE, LWB_STATE_FLUSH_DONE, LWB_NUM_STATES } lwb_state_t; /* * Log write block (lwb) * * Prior to an lwb being issued to disk via zil_lwb_write_issue(), it * will be protected by the zilog's "zl_issuer_lock". Basically, prior * to it being issued, it will only be accessed by the thread that's * holding the "zl_issuer_lock". After the lwb is issued, the zilog's * "zl_lock" is used to protect the lwb against concurrent access. */ typedef struct lwb { zilog_t *lwb_zilog; /* back pointer to log struct */ blkptr_t lwb_blk; /* on disk address of this log blk */ boolean_t lwb_fastwrite; /* is blk marked for fastwrite? */ boolean_t lwb_slog; /* lwb_blk is on SLOG device */ int lwb_nused; /* # used bytes in buffer */ int lwb_sz; /* size of block and buffer */ lwb_state_t lwb_state; /* the state of this lwb */ char *lwb_buf; /* log write buffer */ zio_t *lwb_write_zio; /* zio for the lwb buffer */ zio_t *lwb_root_zio; /* root zio for lwb write and flushes */ dmu_tx_t *lwb_tx; /* tx for log block allocation */ uint64_t lwb_max_txg; /* highest txg in this lwb */ list_node_t lwb_node; /* zilog->zl_lwb_list linkage */ list_t lwb_itxs; /* list of itx's */ list_t lwb_waiters; /* list of zil_commit_waiter's */ avl_tree_t lwb_vdev_tree; /* vdevs to flush after lwb write */ kmutex_t lwb_vdev_lock; /* protects lwb_vdev_tree */ hrtime_t lwb_issued_timestamp; /* when was the lwb issued? */ } lwb_t; /* * ZIL commit waiter. * * This structure is allocated each time zil_commit() is called, and is * used by zil_commit() to communicate with other parts of the ZIL, such * that zil_commit() can know when it safe for it return. For more * details, see the comment above zil_commit(). * * The "zcw_lock" field is used to protect the commit waiter against * concurrent access. This lock is often acquired while already holding * the zilog's "zl_issuer_lock" or "zl_lock"; see the functions * zil_process_commit_list() and zil_lwb_flush_vdevs_done() as examples * of this. Thus, one must be careful not to acquire the * "zl_issuer_lock" or "zl_lock" when already holding the "zcw_lock"; * e.g. see the zil_commit_waiter_timeout() function. */ typedef struct zil_commit_waiter { kcondvar_t zcw_cv; /* signalled when "done" */ kmutex_t zcw_lock; /* protects fields of this struct */ list_node_t zcw_node; /* linkage in lwb_t:lwb_waiter list */ lwb_t *zcw_lwb; /* back pointer to lwb when linked */ boolean_t zcw_done; /* B_TRUE when "done", else B_FALSE */ int zcw_zio_error; /* contains the zio io_error value */ } zil_commit_waiter_t; /* * Intent log transaction lists */ typedef struct itxs { list_t i_sync_list; /* list of synchronous itxs */ avl_tree_t i_async_tree; /* tree of foids for async itxs */ } itxs_t; typedef struct itxg { kmutex_t itxg_lock; /* lock for this structure */ uint64_t itxg_txg; /* txg for this chain */ itxs_t *itxg_itxs; /* sync and async itxs */ } itxg_t; /* for async nodes we build up an AVL tree of lists of async itxs per file */ typedef struct itx_async_node { uint64_t ia_foid; /* file object id */ list_t ia_list; /* list of async itxs for this foid */ avl_node_t ia_node; /* AVL tree linkage */ } itx_async_node_t; /* * Vdev flushing: during a zil_commit(), we build up an AVL tree of the vdevs * we've touched so we know which ones need a write cache flush at the end. */ typedef struct zil_vdev_node { uint64_t zv_vdev; /* vdev to be flushed */ avl_node_t zv_node; /* AVL tree linkage */ } zil_vdev_node_t; #define ZIL_PREV_BLKS 16 /* * Stable storage intent log management structure. One per dataset. */ struct zilog { kmutex_t zl_lock; /* protects most zilog_t fields */ struct dsl_pool *zl_dmu_pool; /* DSL pool */ spa_t *zl_spa; /* handle for read/write log */ const zil_header_t *zl_header; /* log header buffer */ objset_t *zl_os; /* object set we're logging */ zil_get_data_t *zl_get_data; /* callback to get object content */ lwb_t *zl_last_lwb_opened; /* most recent lwb opened */ hrtime_t zl_last_lwb_latency; /* zio latency of last lwb done */ uint64_t zl_lr_seq; /* on-disk log record sequence number */ uint64_t zl_commit_lr_seq; /* last committed on-disk lr seq */ uint64_t zl_destroy_txg; /* txg of last zil_destroy() */ uint64_t zl_replayed_seq[TXG_SIZE]; /* last replayed rec seq */ uint64_t zl_replaying_seq; /* current replay seq number */ uint32_t zl_suspend; /* log suspend count */ kcondvar_t zl_cv_suspend; /* log suspend completion */ uint8_t zl_suspending; /* log is currently suspending */ uint8_t zl_keep_first; /* keep first log block in destroy */ uint8_t zl_replay; /* replaying records while set */ uint8_t zl_stop_sync; /* for debugging */ kmutex_t zl_issuer_lock; /* single writer, per ZIL, at a time */ uint8_t zl_logbias; /* latency or throughput */ uint8_t zl_sync; /* synchronous or asynchronous */ int zl_parse_error; /* last zil_parse() error */ uint64_t zl_parse_blk_seq; /* highest blk seq on last parse */ uint64_t zl_parse_lr_seq; /* highest lr seq on last parse */ uint64_t zl_parse_blk_count; /* number of blocks parsed */ uint64_t zl_parse_lr_count; /* number of log records parsed */ itxg_t zl_itxg[TXG_SIZE]; /* intent log txg chains */ list_t zl_itx_commit_list; /* itx list to be committed */ uint64_t zl_cur_used; /* current commit log size used */ list_t zl_lwb_list; /* in-flight log write list */ avl_tree_t zl_bp_tree; /* track bps during log parse */ clock_t zl_replay_time; /* lbolt of when replay started */ uint64_t zl_replay_blks; /* number of log blocks replayed */ zil_header_t zl_old_header; /* debugging aid */ uint_t zl_prev_blks[ZIL_PREV_BLKS]; /* size - sector rounded */ uint_t zl_prev_rotor; /* rotor for zl_prev[] */ txg_node_t zl_dirty_link; /* protected by dp_dirty_zilogs list */ uint64_t zl_dirty_max_txg; /* highest txg used to dirty zilog */ /* * Max block size for this ZIL. Note that this can not be changed * while the ZIL is in use because consumers (ZPL/zvol) need to take * this into account when deciding between WR_COPIED and WR_NEED_COPY * (see zil_max_copied_data()). */ uint64_t zl_max_block_size; }; typedef struct zil_bp_node { dva_t zn_dva; avl_node_t zn_node; } zil_bp_node_t; #ifdef __cplusplus } #endif #endif /* _SYS_ZIL_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_vfsops.h0000644000000000000000000000007413612141513020224 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.668431985 zfs-0.8.3/include/sys/zfs_vfsops.h0000644016037001603700000002127613612141513020231 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013, 2018 by Delphix. All rights reserved. */ #ifndef _SYS_FS_ZFS_VFSOPS_H #define _SYS_FS_ZFS_VFSOPS_H #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct zfsvfs zfsvfs_t; struct znode; /* * This structure emulates the vfs_t from other platforms. It's purpose * is to facilitate the handling of mount options and minimize structural * differences between the platforms. */ typedef struct vfs { struct zfsvfs *vfs_data; char *vfs_mntpoint; /* Primary mount point */ uint64_t vfs_xattr; boolean_t vfs_readonly; boolean_t vfs_do_readonly; boolean_t vfs_setuid; boolean_t vfs_do_setuid; boolean_t vfs_exec; boolean_t vfs_do_exec; boolean_t vfs_devices; boolean_t vfs_do_devices; boolean_t vfs_do_xattr; boolean_t vfs_atime; boolean_t vfs_do_atime; boolean_t vfs_relatime; boolean_t vfs_do_relatime; boolean_t vfs_nbmand; boolean_t vfs_do_nbmand; } vfs_t; typedef struct zfs_mnt { const char *mnt_osname; /* Objset name */ char *mnt_data; /* Raw mount options */ } zfs_mnt_t; struct zfsvfs { vfs_t *z_vfs; /* generic fs struct */ struct super_block *z_sb; /* generic super_block */ struct zfsvfs *z_parent; /* parent fs */ objset_t *z_os; /* objset reference */ uint64_t z_flags; /* super_block flags */ uint64_t z_root; /* id of root znode */ uint64_t z_unlinkedobj; /* id of unlinked zapobj */ uint64_t z_max_blksz; /* maximum block size for files */ uint64_t z_fuid_obj; /* fuid table object number */ uint64_t z_fuid_size; /* fuid table size */ avl_tree_t z_fuid_idx; /* fuid tree keyed by index */ avl_tree_t z_fuid_domain; /* fuid tree keyed by domain */ krwlock_t z_fuid_lock; /* fuid lock */ boolean_t z_fuid_loaded; /* fuid tables are loaded */ boolean_t z_fuid_dirty; /* need to sync fuid table ? */ struct zfs_fuid_info *z_fuid_replay; /* fuid info for replay */ zilog_t *z_log; /* intent log pointer */ uint_t z_acl_inherit; /* acl inheritance behavior */ uint_t z_acl_type; /* type of ACL usable on this FS */ zfs_case_t z_case; /* case-sense */ boolean_t z_utf8; /* utf8-only */ int z_norm; /* normalization flags */ boolean_t z_relatime; /* enable relatime mount option */ boolean_t z_unmounted; /* unmounted */ rrmlock_t z_teardown_lock; krwlock_t z_teardown_inactive_lock; list_t z_all_znodes; /* all znodes in the fs */ uint64_t z_nr_znodes; /* number of znodes in the fs */ unsigned long z_rollback_time; /* last online rollback time */ unsigned long z_snap_defer_time; /* last snapshot unmount deferral */ kmutex_t z_znodes_lock; /* lock for z_all_znodes */ arc_prune_t *z_arc_prune; /* called by ARC to prune caches */ struct inode *z_ctldir; /* .zfs directory inode */ boolean_t z_show_ctldir; /* expose .zfs in the root dir */ boolean_t z_issnap; /* true if this is a snapshot */ boolean_t z_vscan; /* virus scan on/off */ boolean_t z_use_fuids; /* version allows fuids */ boolean_t z_replay; /* set during ZIL replay */ boolean_t z_use_sa; /* version allow system attributes */ boolean_t z_xattr_sa; /* allow xattrs to be stores as SA */ boolean_t z_draining; /* is true when drain is active */ boolean_t z_drain_cancel; /* signal the unlinked drain to stop */ uint64_t z_version; /* ZPL version */ uint64_t z_shares_dir; /* hidden shares dir */ dataset_kstats_t z_kstat; /* fs kstats */ kmutex_t z_lock; uint64_t z_userquota_obj; uint64_t z_groupquota_obj; uint64_t z_userobjquota_obj; uint64_t z_groupobjquota_obj; uint64_t z_projectquota_obj; uint64_t z_projectobjquota_obj; uint64_t z_replay_eof; /* New end of file - replay only */ sa_attr_type_t *z_attr_table; /* SA attr mapping->id */ uint64_t z_hold_size; /* znode hold array size */ avl_tree_t *z_hold_trees; /* znode hold trees */ kmutex_t *z_hold_locks; /* znode hold locks */ taskqid_t z_drain_task; /* task id for the unlink drain task */ }; #define ZSB_XATTR 0x0001 /* Enable user xattrs */ /* * Allow a maximum number of links. While ZFS does not internally limit * this the inode->i_nlink member is defined as an unsigned int. To be * safe we use 2^31-1 as the limit. */ #define ZFS_LINK_MAX ((1U << 31) - 1U) /* * Normal filesystems (those not under .zfs/snapshot) have a total * file ID size limited to 12 bytes (including the length field) due to * NFSv2 protocol's limitation of 32 bytes for a filehandle. For historical * reasons, this same limit is being imposed by the Solaris NFSv3 implementation * (although the NFSv3 protocol actually permits a maximum of 64 bytes). It * is not possible to expand beyond 12 bytes without abandoning support * of NFSv2. * * For normal filesystems, we partition up the available space as follows: * 2 bytes fid length (required) * 6 bytes object number (48 bits) * 4 bytes generation number (32 bits) * * We reserve only 48 bits for the object number, as this is the limit * currently defined and imposed by the DMU. */ typedef struct zfid_short { uint16_t zf_len; uint8_t zf_object[6]; /* obj[i] = obj >> (8 * i) */ uint8_t zf_gen[4]; /* gen[i] = gen >> (8 * i) */ } zfid_short_t; /* * Filesystems under .zfs/snapshot have a total file ID size of 22 bytes * (including the length field). This makes files under .zfs/snapshot * accessible by NFSv3 and NFSv4, but not NFSv2. * * For files under .zfs/snapshot, we partition up the available space * as follows: * 2 bytes fid length (required) * 6 bytes object number (48 bits) * 4 bytes generation number (32 bits) * 6 bytes objset id (48 bits) * 4 bytes currently just zero (32 bits) * * We reserve only 48 bits for the object number and objset id, as these are * the limits currently defined and imposed by the DMU. */ typedef struct zfid_long { zfid_short_t z_fid; uint8_t zf_setid[6]; /* obj[i] = obj >> (8 * i) */ uint8_t zf_setgen[4]; /* gen[i] = gen >> (8 * i) */ } zfid_long_t; #define SHORT_FID_LEN (sizeof (zfid_short_t) - sizeof (uint16_t)) #define LONG_FID_LEN (sizeof (zfid_long_t) - sizeof (uint16_t)) extern uint_t zfs_fsyncer_key; extern int zfs_suspend_fs(zfsvfs_t *zfsvfs); extern int zfs_resume_fs(zfsvfs_t *zfsvfs, struct dsl_dataset *ds); extern int zfs_userspace_one(zfsvfs_t *zfsvfs, zfs_userquota_prop_t type, const char *domain, uint64_t rid, uint64_t *valuep); extern int zfs_userspace_many(zfsvfs_t *zfsvfs, zfs_userquota_prop_t type, uint64_t *cookiep, void *vbuf, uint64_t *bufsizep); extern int zfs_set_userquota(zfsvfs_t *zfsvfs, zfs_userquota_prop_t type, const char *domain, uint64_t rid, uint64_t quota); extern boolean_t zfs_id_overblockquota(zfsvfs_t *zfsvfs, uint64_t usedobj, uint64_t id); extern boolean_t zfs_id_overobjquota(zfsvfs_t *zfsvfs, uint64_t usedobj, uint64_t id); extern boolean_t zfs_id_overquota(zfsvfs_t *zfsvfs, uint64_t usedobj, uint64_t id); extern int zfs_set_version(zfsvfs_t *zfsvfs, uint64_t newvers); extern int zfsvfs_create(const char *name, boolean_t readony, zfsvfs_t **zfvp); extern int zfsvfs_create_impl(zfsvfs_t **zfvp, zfsvfs_t *zfsvfs, objset_t *os); extern void zfsvfs_free(zfsvfs_t *zfsvfs); extern int zfs_check_global_label(const char *dsname, const char *hexsl); extern boolean_t zfs_is_readonly(zfsvfs_t *zfsvfs); extern int zfs_domount(struct super_block *sb, zfs_mnt_t *zm, int silent); extern void zfs_preumount(struct super_block *sb); extern int zfs_umount(struct super_block *sb); extern int zfs_remount(struct super_block *sb, int *flags, zfs_mnt_t *zm); extern int zfs_statvfs(struct dentry *dentry, struct kstatfs *statp); extern int zfs_vget(struct super_block *sb, struct inode **ipp, fid_t *fidp); extern int zfs_prune(struct super_block *sb, unsigned long nr_to_scan, int *objects); #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_VFSOPS_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zio_compress.h0000644000000000000000000000007413607166132020546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.682432435 zfs-0.8.3/include/sys/zio_compress.h0000644016037001603700000000722513607166132020551 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * Copyright (c) 2015, 2016 by Delphix. All rights reserved. */ #ifndef _SYS_ZIO_COMPRESS_H #define _SYS_ZIO_COMPRESS_H #include #ifdef __cplusplus extern "C" { #endif enum zio_compress { ZIO_COMPRESS_INHERIT = 0, ZIO_COMPRESS_ON, ZIO_COMPRESS_OFF, ZIO_COMPRESS_LZJB, ZIO_COMPRESS_EMPTY, ZIO_COMPRESS_GZIP_1, ZIO_COMPRESS_GZIP_2, ZIO_COMPRESS_GZIP_3, ZIO_COMPRESS_GZIP_4, ZIO_COMPRESS_GZIP_5, ZIO_COMPRESS_GZIP_6, ZIO_COMPRESS_GZIP_7, ZIO_COMPRESS_GZIP_8, ZIO_COMPRESS_GZIP_9, ZIO_COMPRESS_ZLE, ZIO_COMPRESS_LZ4, ZIO_COMPRESS_FUNCTIONS }; /* Common signature for all zio compress functions. */ typedef size_t zio_compress_func_t(void *src, void *dst, size_t s_len, size_t d_len, int); /* Common signature for all zio decompress functions. */ typedef int zio_decompress_func_t(void *src, void *dst, size_t s_len, size_t d_len, int); /* * Common signature for all zio decompress functions using an ABD as input. * This is helpful if you have both compressed ARC and scatter ABDs enabled, * but is not a requirement for all compression algorithms. */ typedef int zio_decompress_abd_func_t(abd_t *src, void *dst, size_t s_len, size_t d_len, int); /* * Information about each compression function. */ typedef const struct zio_compress_info { char *ci_name; int ci_level; zio_compress_func_t *ci_compress; zio_decompress_func_t *ci_decompress; } zio_compress_info_t; extern zio_compress_info_t zio_compress_table[ZIO_COMPRESS_FUNCTIONS]; /* * lz4 compression init & free */ extern void lz4_init(void); extern void lz4_fini(void); /* * Compression routines. */ extern size_t lzjb_compress(void *src, void *dst, size_t s_len, size_t d_len, int level); extern int lzjb_decompress(void *src, void *dst, size_t s_len, size_t d_len, int level); extern size_t gzip_compress(void *src, void *dst, size_t s_len, size_t d_len, int level); extern int gzip_decompress(void *src, void *dst, size_t s_len, size_t d_len, int level); extern size_t zle_compress(void *src, void *dst, size_t s_len, size_t d_len, int level); extern int zle_decompress(void *src, void *dst, size_t s_len, size_t d_len, int level); extern size_t lz4_compress_zfs(void *src, void *dst, size_t s_len, size_t d_len, int level); extern int lz4_decompress_zfs(void *src, void *dst, size_t s_len, size_t d_len, int level); /* * Compress and decompress data if necessary. */ extern size_t zio_compress_data(enum zio_compress c, abd_t *src, void *dst, size_t s_len); extern int zio_decompress_data(enum zio_compress c, abd_t *src, void *dst, size_t s_len, size_t d_len); extern int zio_decompress_data_buf(enum zio_compress c, void *src, void *dst, size_t s_len, size_t d_len); #ifdef __cplusplus } #endif #endif /* _SYS_ZIO_COMPRESS_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dmu_recv.h0000644000000000000000000000007413607166147017644 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.433424441 zfs-0.8.3/include/sys/dmu_recv.h0000644016037001603700000000440413607166147017643 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2013, Joyent, Inc. All rights reserved. */ #ifndef _DMU_RECV_H #define _DMU_RECV_H #include #include #include #include extern const char *recv_clone_name; typedef struct dmu_recv_cookie { struct dsl_dataset *drc_ds; struct dmu_replay_record *drc_drr_begin; struct drr_begin *drc_drrb; const char *drc_tofs; const char *drc_tosnap; boolean_t drc_newfs; boolean_t drc_byteswap; boolean_t drc_force; boolean_t drc_resumable; boolean_t drc_raw; boolean_t drc_clone; boolean_t drc_spill; struct avl_tree *drc_guid_to_ds_map; nvlist_t *drc_keynvl; zio_cksum_t drc_cksum; uint64_t drc_fromsnapobj; uint64_t drc_newsnapobj; uint64_t drc_ivset_guid; void *drc_owner; cred_t *drc_cred; } dmu_recv_cookie_t; int dmu_recv_begin(char *tofs, char *tosnap, struct dmu_replay_record *drr_begin, boolean_t force, boolean_t resumable, nvlist_t *localprops, nvlist_t *hidden_args, char *origin, dmu_recv_cookie_t *drc); int dmu_recv_stream(dmu_recv_cookie_t *drc, struct vnode *vp, offset_t *voffp, int cleanup_fd, uint64_t *action_handlep); int dmu_recv_end(dmu_recv_cookie_t *drc, void *owner); boolean_t dmu_objset_is_receiving(objset_t *os); #endif /* _DMU_RECV_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/txg.h0000644000000000000000000000007413612141510016621 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.569428808 zfs-0.8.3/include/sys/txg.h0000644016037001603700000001122113612141510016613 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012, 2017 by Delphix. All rights reserved. */ #ifndef _SYS_TXG_H #define _SYS_TXG_H #include #include #ifdef __cplusplus extern "C" { #endif #define TXG_CONCURRENT_STATES 3 /* open, quiescing, syncing */ #define TXG_SIZE 4 /* next power of 2 */ #define TXG_MASK (TXG_SIZE - 1) /* mask for size */ #define TXG_INITIAL TXG_SIZE /* initial txg */ #define TXG_IDX (txg & TXG_MASK) /* Number of txgs worth of frees we defer adding to in-core spacemaps */ #define TXG_DEFER_SIZE 2 typedef struct tx_cpu tx_cpu_t; typedef struct txg_handle { tx_cpu_t *th_cpu; uint64_t th_txg; } txg_handle_t; typedef struct txg_node { struct txg_node *tn_next[TXG_SIZE]; uint8_t tn_member[TXG_SIZE]; } txg_node_t; typedef struct txg_list { kmutex_t tl_lock; size_t tl_offset; spa_t *tl_spa; txg_node_t *tl_head[TXG_SIZE]; } txg_list_t; struct dsl_pool; extern void txg_init(struct dsl_pool *dp, uint64_t txg); extern void txg_fini(struct dsl_pool *dp); extern void txg_sync_start(struct dsl_pool *dp); extern void txg_sync_stop(struct dsl_pool *dp); extern uint64_t txg_hold_open(struct dsl_pool *dp, txg_handle_t *txghp); extern void txg_rele_to_quiesce(txg_handle_t *txghp); extern void txg_rele_to_sync(txg_handle_t *txghp); extern void txg_register_callbacks(txg_handle_t *txghp, list_t *tx_callbacks); extern void txg_delay(struct dsl_pool *dp, uint64_t txg, hrtime_t delta, hrtime_t resolution); extern void txg_kick(struct dsl_pool *dp); /* * Wait until the given transaction group has finished syncing. * Try to make this happen as soon as possible (eg. kick off any * necessary syncs immediately). If txg==0, wait for the currently open * txg to finish syncing. */ extern void txg_wait_synced(struct dsl_pool *dp, uint64_t txg); /* * Wait as above. Returns true if the thread was signaled while waiting. */ extern boolean_t txg_wait_synced_sig(struct dsl_pool *dp, uint64_t txg); /* * Wait until the given transaction group, or one after it, is * the open transaction group. Try to make this happen as soon * as possible (eg. kick off any necessary syncs immediately) when * should_quiesce is set. If txg == 0, wait for the next open txg. */ extern void txg_wait_open(struct dsl_pool *dp, uint64_t txg, boolean_t should_quiesce); /* * Returns TRUE if we are "backed up" waiting for the syncing * transaction to complete; otherwise returns FALSE. */ extern boolean_t txg_stalled(struct dsl_pool *dp); /* returns TRUE if someone is waiting for the next txg to sync */ extern boolean_t txg_sync_waiting(struct dsl_pool *dp); extern void txg_verify(spa_t *spa, uint64_t txg); /* * Wait for pending commit callbacks of already-synced transactions to finish * processing. */ extern void txg_wait_callbacks(struct dsl_pool *dp); /* * Per-txg object lists. */ #define TXG_CLEAN(txg) ((txg) - 1) extern void txg_list_create(txg_list_t *tl, spa_t *spa, size_t offset); extern void txg_list_destroy(txg_list_t *tl); extern boolean_t txg_list_empty(txg_list_t *tl, uint64_t txg); extern boolean_t txg_all_lists_empty(txg_list_t *tl); extern boolean_t txg_list_add(txg_list_t *tl, void *p, uint64_t txg); extern boolean_t txg_list_add_tail(txg_list_t *tl, void *p, uint64_t txg); extern void *txg_list_remove(txg_list_t *tl, uint64_t txg); extern void *txg_list_remove_this(txg_list_t *tl, void *p, uint64_t txg); extern boolean_t txg_list_member(txg_list_t *tl, void *p, uint64_t txg); extern void *txg_list_head(txg_list_t *tl, uint64_t txg); extern void *txg_list_next(txg_list_t *tl, void *p, uint64_t txg); /* Global tuning */ extern int zfs_txg_timeout; #ifdef ZFS_DEBUG #define TXG_VERIFY(spa, txg) txg_verify(spa, txg) #else #define TXG_VERIFY(spa, txg) #endif #ifdef __cplusplus } #endif #endif /* _SYS_TXG_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/u8_textprep_data.h0000644000000000000000000000007413607166132021312 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.577429064 zfs-0.8.3/include/sys/u8_textprep_data.h0000644016037001603700000550616113607166132021325 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * COPYRIGHT AND PERMISSION NOTICE * * Copyright (c) 1991-2006 Unicode, Inc. All rights reserved. Distributed under * the Terms of Use in http://www.unicode.org/copyright.html. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of the Unicode data files and any associated documentation (the * "Data Files") or Unicode software and any associated documentation (the * "Software") to deal in the Data Files or Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, and/or sell copies of the Data Files or Software, and * to permit persons to whom the Data Files or Software are furnished to do so, * provided that (a) the above copyright notice(s) and this permission notice * appear with all copies of the Data Files or Software, (b) both the above * copyright notice(s) and this permission notice appear in associated * documentation, and (c) there is clear notice in each modified Data File or * in the Software as well as in the documentation associated with the Data * File(s) or Software that the data or software has been modified. * * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR * CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THE DATA FILES OR SOFTWARE. * * Except as contained in this notice, the name of a copyright holder shall not * be used in advertising or otherwise to promote the sale, use or other * dealings in these Data Files or Software without prior written authorization * of the copyright holder. * * Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be * registered in some jurisdictions. All other trademarks and registered * trademarks mentioned herein are the property of their respective owners. */ /* * This file has been modified by Sun Microsystems, Inc. */ #ifndef _SYS_U8_TEXTPREP_DATA_H #define _SYS_U8_TEXTPREP_DATA_H #include #ifdef __cplusplus extern "C" { #endif /* * To get to the combining class data, composition mappings, decomposition * mappings, and case conversion mappings of Unicode, the data structures * formulated and their meanings are like the following: * * Each UTF-8 character is seen as a 4-byte entity so that U+0061 (or 0x61 in * UTF-8) would be seen as 0x00 0x00 0x00 0x61. Similarly, U+1D15E would be * 0xF0 0x9D 0x85 0x9E in UTF-8. * * The first byte (MSB) value is an index to the b1_tbl, such as * u8_common_b1_tbl and u8_composition_b1_tbl tables. A b1_tbl has * indices to b2_tbl tables that have indices to b3_tbl. Each b3_tbl has * either indices to b4_tbl or indices to b4_tbl and base values for * displacement calculations later by using the u8_displacement_t type at * below. Each b4_tbl table then has indices to the final tables. * * As an example, if we have a character with code value of U+1D15E which is * 0xF0 0x9D 0x85 0x9E in UTF-8, the target decomposition character bytes * that will be mapped by the mapping procedure would be the ones between * the start_index and the end_index computed as like the following: * * b2_tbl_id = u8_common_b1_tbl[0][0xF0]; * b3_tbl_id = u8_decomp_b2_tbl[0][b2_tbl_id][0x9D]; * b4_tbl_id = u8_decomp_b3_tbl[0][b3_tbl_id][0x85].tbl_id; * b4_base = u8_decomp_b3_tbl[0][b3_tbl_id][0x85].base; * if (b4_tbl_id >= 0x8000) { * b4_tbl_id -= 0x8000; * start_index = u8_decomp_b4_16bit_tbl[0][b4_tbl_id][0x9E]; * end_index = u8_decomp_b4_16bit_tbl[0][b4_tbl_id][0x9E + 1]; * } else { * start_index = u8_decomp_b4_tbl[0][b4_tbl_id][0x9E]; * end_index = u8_decomp_b4_tbl[0][b4_tbl_id][0x9E + 1]; * } * * The start_index and the end_index can be used to retrieve the bytes * possibly of multiple UTF-8 characters from the final tables. * * The "[0]" at the above indicates this is for Unicode Version 3.2.0 data * as of today. Consequently, the "[1]" indicates another Unicode version * data and it is Unicode 5.0.0 as of today. * * The mapping procedures and the data structures are more or less similar or * alike among different mappings. You might want to read the u8_textprep.c * for specific details. * * The tool programs created and used to generate the tables in this file are * saved at PSARC/2007/149/materials/ as tools.tar.gz file. */ /* The following is a component type for the b4_tbl vectors. */ typedef struct { uint16_t tbl_id; uint16_t base; } u8_displacement_t; /* * The U8_TBL_ELEMENT_NOT_DEF macro indicates a byte that is not defined or * used. The U8_TBL_ELEMENT_FILLER indicates the end of a UTF-8 character at * the final tables. */ #define U8_TBL_ELEMENT_NOT_DEF (0xff) #define N_ U8_TBL_ELEMENT_NOT_DEF #define U8_TBL_ELEMENT_FILLER (0xf7) #define FIL_ U8_TBL_ELEMENT_FILLER /* * The common b1_tbl for combining class, decompositions, tolower, and * toupper case conversion mappings. */ static const uchar_t u8_common_b1_tbl[2][256] = { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }; static const uchar_t u8_combining_class_b2_tbl[2][2][256] = { { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, 2, 3, 4, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 5, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 6, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, 2, 3, 4, N_, N_, N_, N_, N_, N_, 5, N_, N_, N_, N_, 6, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 7, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 8, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, }; static const uchar_t u8_combining_class_b3_tbl[2][9][256] = { { { /* Third byte table 0. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 0, 1, N_, N_, N_, N_, 2, N_, N_, N_, 3, 4, N_, 5, N_, 6, 7, 8, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 1. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, N_, 19, N_, 20, N_, 21, N_, 22, N_, 23, 24, 25, 26, 27, 28, 29, 30, 31, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 2. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 32, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 33, N_, N_, 34, N_, N_, 35, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 3. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 36, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 4. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 37, N_, 38, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 5. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 39, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 40, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 6. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 41, 42, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 7. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 8. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, { { /* Third byte table 0. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 0, 1, N_, N_, N_, N_, 2, N_, N_, N_, 3, 4, 5, 6, N_, 7, 8, 9, N_, 10, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 1. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, N_, 21, N_, 22, 23, 24, N_, 25, N_, 26, 27, 28, 29, 30, 31, 32, 33, 34, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 2. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 35, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 36, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 37, N_, N_, 38, N_, N_, 39, N_, 40, N_, N_, N_, 41, N_, N_, N_, 42, 43, N_, N_, N_, N_, N_, N_, N_, N_, N_, 44, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 3. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 45, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 4. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 46, N_, 47, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 5. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 48, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 6. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 49, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 50, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 7. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 51, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { /* Third byte table 8. */ N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 52, 53, N_, N_, 54, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, }; /* * Unlike other b4_tbl, the b4_tbl for combining class data has * the combining class values not indices to the final tables. */ static const uchar_t u8_combining_class_b4_tbl[2][55][256] = { { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, 230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 36. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 37. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 38. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 39. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 40. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 41. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, 216, 216, 216, 216, 216, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 42. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 43. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 44. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 45. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 46. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 47. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 48. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 49. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 50. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 51. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 52. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 53. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 54. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0, 230, 230, 230, 220, 220, 220, 220, 230, 232, 220, 220, 230, 233, 234, 234, 233, 234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, 230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 220, 230, 230, 230, 230, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 36. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 37. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 38. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 39. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 40. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 41. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 42. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 43. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 44. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 220, 230, 230, 230, 230, 230, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 45. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 1, 220, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 46. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 47. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 48. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 49. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 50. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 51. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 1, 220, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 52. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, 216, 216, 216, 216, 216, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 53. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 54. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, }; static const uchar_t u8_composition_b1_tbl[2][256] = { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }; static const uchar_t u8_composition_b2_tbl[2][1][256] = { { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, 2, 3, 4, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, 2, 3, 4, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, }; static const u8_displacement_t u8_composition_b3_tbl[2][5][256] = { { { /* Third byte table 0. */ { 0x8000, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 2470 }, { 0x8001, 2491 }, { 1, 2871 }, { 2, 2959 }, { 3, 3061 }, { 4, 3212 }, { 5, 3226 }, { N_, 0 }, { 6, 3270 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0x8002, 3277 }, { 7, 3774 }, { 8, 3949 }, { 9, 4198 }, { N_, 0 }, { 10, 4265 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 11, 4293 }, { 12, 4312 }, { N_, 0 }, { 13, 4326 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 1. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 14, 4347 }, { N_, 0 }, { N_, 0 }, { 15, 4374 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 16, 4391 }, { 17, 4416 }, { 18, 4425 }, { N_, 0 }, { 19, 4451 }, { 20, 4460 }, { 21, 4469 }, { N_, 0 }, { 22, 4503 }, { N_, 0 }, { 23, 4529 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 2. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 24, 4563 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 25, 4572 }, { 26, 4588 }, { 27, 4620 }, { 28, 4666 }, { 0x8003, 4682 }, { 0x8004, 5254 }, { 29, 5616 }, { 30, 5646 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 3. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 31, 5684 }, { 32, 5708 }, { 33, 5732 }, { 34, 5780 }, { 35, 5900 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 4. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 36, 6012 }, { 37, 6241 }, { 38, 6358 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, }, { { /* Third byte table 0. */ { 0x8000, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 2470 }, { 0x8001, 2491 }, { 1, 2871 }, { 2, 2959 }, { 3, 3061 }, { 4, 3212 }, { 5, 3226 }, { N_, 0 }, { 6, 3270 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0x8002, 3277 }, { 7, 3774 }, { 8, 3949 }, { 9, 4198 }, { N_, 0 }, { 10, 4265 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 11, 4293 }, { 12, 4312 }, { N_, 0 }, { 13, 4326 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 1. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 14, 4347 }, { N_, 0 }, { N_, 0 }, { 15, 4374 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 16, 4391 }, { 17, 4416 }, { 18, 4425 }, { N_, 0 }, { 19, 4451 }, { 20, 4460 }, { 21, 4469 }, { N_, 0 }, { 22, 4503 }, { N_, 0 }, { 23, 4529 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 2. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 24, 4563 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 25, 4572 }, { 26, 4662 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 27, 4671 }, { 28, 4687 }, { 29, 4719 }, { 30, 4765 }, { 0x8003, 4781 }, { 0x8004, 5353 }, { 31, 5715 }, { 32, 5745 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 3. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 33, 5783 }, { 34, 5807 }, { 35, 5831 }, { 36, 5879 }, { 37, 5999 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 4. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 38, 6111 }, { 39, 6340 }, { 40, 6457 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, }, }; static const uchar_t u8_composition_b4_tbl[2][41][257] = { { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 73, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 38, 46, 46, 46, 46, 46, 54, 62, 62, 62, 62, 62, 62, 62, 70, 78, 86, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 108, 144, 144, 144, 144, 144, 144, 144, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 22, 30, 30, 30, 30, 30, 37, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 70, 70, 70, 70, 112, 133, 154, 154, 154, 162, 162, 162, 162, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 20, 20, 20, 27, 27, 46, 59, 66, 91, 91, 98, 98, 98, 98, 105, 105, 105, 105, 105, 130, 130, 130, 130, 137, 137, 137, 137, 144, 144, 151, 151, 151, 164, 164, 164, 171, 171, 190, 203, 210, 235, 235, 242, 242, 242, 242, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 32, 32, 32, 32, 39, 39, 46, 46, 46, 46, 46, 46, 46, 46, 46, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 60, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 16, 16, 16, 16, 16, 16, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 38, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 16, 16, 16, 24, 24, 24, 24, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 48, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 64, 72, 72, 72, 80, 88, 88, 88, 96, 104, 112, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 16, 16, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 56, 56, 56, 56, 56, 64, 72, 72, 80, 80, 80, 80, 80, 80, 80, 88, 96, 104, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, }, { /* Fourth byte table 36. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 18, 18, 27, 27, 36, 36, 45, 45, 54, 54, 63, 63, 72, 72, 81, 81, 90, 90, 99, 99, 108, 108, 117, 117, 117, 126, 126, 135, 135, 144, 144, 144, 144, 144, 144, 144, 161, 161, 161, 178, 178, 178, 195, 195, 195, 212, 212, 212, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, }, { /* Fourth byte table 37. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 18, 18, 27, 27, 36, 36, 45, 45, 54, 54, 63, 63, 72, 72, 81, 81, 90, 90, 99, 99, 108, 108, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, }, { /* Fourth byte table 38. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 18, 18, 27, 27, 36, 36, 36, 36, 36, 36, 36, 53, 53, 53, 70, 70, 70, 87, 87, 87, 104, 104, 104, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 130, 139, 148, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, }, { /* Fourth byte table 39. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 40. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 73, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 38, 46, 46, 46, 46, 46, 54, 62, 62, 62, 62, 62, 62, 62, 70, 78, 86, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 108, 144, 144, 144, 144, 144, 144, 144, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 22, 30, 30, 30, 30, 30, 37, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 70, 70, 70, 70, 112, 133, 154, 154, 154, 162, 162, 162, 162, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 20, 20, 20, 27, 27, 46, 59, 66, 91, 91, 98, 98, 98, 98, 105, 105, 105, 105, 105, 130, 130, 130, 130, 137, 137, 137, 137, 144, 144, 151, 151, 151, 164, 164, 164, 171, 171, 190, 203, 210, 235, 235, 242, 242, 242, 242, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 32, 32, 32, 32, 39, 39, 46, 46, 46, 46, 46, 46, 46, 46, 46, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 60, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 25, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 18, 18, 27, 27, 36, 36, 45, 45, 45, 45, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 63, 63, 72, 72, 81, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 16, 16, 16, 16, 16, 16, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 38, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 16, 16, 16, 16, 16, 16, 16, 16, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 16, 16, 16, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 32, 32, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 36. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 16, 16, 16, 24, 24, 24, 24, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 48, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 64, 72, 72, 72, 80, 88, 88, 88, 96, 104, 112, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, }, { /* Fourth byte table 37. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 16, 16, 24, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 56, 56, 56, 56, 56, 64, 72, 72, 80, 80, 80, 80, 80, 80, 80, 88, 96, 104, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, }, { /* Fourth byte table 38. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 18, 18, 27, 27, 36, 36, 45, 45, 54, 54, 63, 63, 72, 72, 81, 81, 90, 90, 99, 99, 108, 108, 117, 117, 117, 126, 126, 135, 135, 144, 144, 144, 144, 144, 144, 144, 161, 161, 161, 178, 178, 178, 195, 195, 195, 212, 212, 212, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, }, { /* Fourth byte table 39. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 18, 18, 27, 27, 36, 36, 45, 45, 54, 54, 63, 63, 72, 72, 81, 81, 90, 90, 99, 99, 108, 108, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, }, { /* Fourth byte table 40. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 18, 18, 27, 27, 36, 36, 36, 36, 36, 36, 36, 53, 53, 53, 70, 70, 70, 87, 87, 87, 104, 104, 104, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 130, 139, 148, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, }, }, }; static const uint16_t u8_composition_b4_16bit_tbl[2][5][257] = { { { /* Fourth byte 16-bit table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 24, 24, 24, 124, 146, 177, 219, 327, 335, 379, 427, 521, 528, 562, 602, 624, 683, 782, 797, 797, 849, 894, 941, 1061, 1076, 1118, 1133, 1193, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1333, 1355, 1386, 1428, 1536, 1544, 1588, 1643, 1731, 1744, 1778, 1818, 1840, 1899, 1998, 2013, 2013, 2065, 2110, 2164, 2284, 2299, 2348, 2363, 2430, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, }, { /* Fourth byte 16-bit table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 36, 43, 56, 64, 64, 64, 93, 93, 93, 93, 93, 101, 101, 101, 101, 101, 130, 151, 158, 158, 165, 165, 165, 165, 190, 190, 190, 190, 190, 190, 219, 219, 226, 233, 246, 254, 254, 254, 283, 283, 283, 283, 283, 291, 291, 291, 291, 291, 320, 341, 348, 348, 355, 355, 355, 355, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, }, { /* Fourth byte 16-bit table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 49, 77, 77, 112, 112, 160, 160, 160, 160, 160, 160, 188, 188, 196, 196, 196, 196, 237, 237, 237, 237, 272, 272, 272, 280, 280, 288, 288, 288, 344, 344, 344, 344, 372, 372, 414, 414, 469, 469, 469, 469, 469, 469, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, }, { /* Fourth byte 16-bit table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 58, 66, 74, 82, 90, 98, 106, 135, 164, 172, 180, 188, 196, 204, 212, 227, 242, 242, 242, 242, 242, 242, 242, 257, 272, 272, 272, 272, 272, 272, 272, 301, 330, 338, 346, 354, 362, 370, 378, 407, 436, 444, 452, 460, 468, 476, 484, 506, 528, 528, 528, 528, 528, 528, 528, 550, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, }, { /* Fourth byte 16-bit table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 30, 30, 30, 30, 30, 30, 30, 45, 60, 60, 60, 60, 60, 60, 60, 82, 104, 104, 104, 104, 104, 104, 104, 104, 126, 126, 126, 126, 126, 126, 126, 155, 184, 192, 200, 208, 216, 224, 232, 261, 290, 298, 306, 314, 322, 330, 338, 346, 346, 346, 346, 354, 354, 354, 354, 354, 354, 354, 354, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, }, }, { { /* Fourth byte 16-bit table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 24, 24, 24, 124, 146, 177, 219, 327, 335, 379, 427, 521, 528, 562, 602, 624, 683, 782, 797, 797, 849, 894, 941, 1061, 1076, 1118, 1133, 1193, 1233, 1233, 1233, 1233, 1233, 1233, 1233, 1333, 1355, 1386, 1428, 1536, 1544, 1588, 1643, 1731, 1744, 1778, 1818, 1840, 1899, 1998, 2013, 2013, 2065, 2110, 2164, 2284, 2299, 2348, 2363, 2430, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, 2470, }, { /* Fourth byte 16-bit table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 29, 36, 43, 56, 64, 64, 64, 93, 93, 93, 93, 93, 101, 101, 101, 101, 101, 130, 151, 158, 158, 165, 165, 165, 165, 190, 190, 190, 190, 190, 190, 219, 219, 226, 233, 246, 254, 254, 254, 283, 283, 283, 283, 283, 291, 291, 291, 291, 291, 320, 341, 348, 348, 355, 355, 355, 355, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, }, { /* Fourth byte 16-bit table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49, 49, 77, 77, 112, 112, 160, 160, 160, 160, 160, 160, 188, 188, 196, 196, 196, 196, 237, 237, 237, 237, 272, 272, 272, 280, 280, 288, 288, 288, 344, 344, 344, 344, 372, 372, 414, 414, 469, 469, 469, 469, 469, 469, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, }, { /* Fourth byte 16-bit table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 58, 66, 74, 82, 90, 98, 106, 135, 164, 172, 180, 188, 196, 204, 212, 227, 242, 242, 242, 242, 242, 242, 242, 257, 272, 272, 272, 272, 272, 272, 272, 301, 330, 338, 346, 354, 362, 370, 378, 407, 436, 444, 452, 460, 468, 476, 484, 506, 528, 528, 528, 528, 528, 528, 528, 550, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, }, { /* Fourth byte 16-bit table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 30, 30, 30, 30, 30, 30, 30, 45, 60, 60, 60, 60, 60, 60, 60, 82, 104, 104, 104, 104, 104, 104, 104, 104, 126, 126, 126, 126, 126, 126, 126, 155, 184, 192, 200, 208, 216, 224, 232, 261, 290, 298, 306, 314, 322, 330, 338, 346, 346, 346, 346, 354, 354, 354, 354, 354, 354, 354, 354, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, 362, }, }, }; static const uchar_t u8_composition_final_tbl[2][6623] = { { 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAE, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xA0, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAF, FIL_, 0x10, 0xCC, 0x86, FIL_, 0xC4, 0x82, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xA6, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x80, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x82, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x81, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x80, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0x83, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xA0, FIL_, 0xCC, 0xA5, FIL_, 0xE1, 0xB8, 0x80, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x82, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x80, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x84, FIL_, 0xCC, 0x8A, FIL_, 0xC3, 0x85, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x84, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA2, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x8D, FIL_, 0x03, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x82, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x86, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x84, FIL_, 0x05, 0xCC, 0xA7, FIL_, 0xC3, 0x87, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0x86, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8C, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x8A, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x88, FIL_, 0x06, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x8E, FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0x90, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x92, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x8A, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8E, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x8C, FIL_, 0x11, 0xCC, 0x80, FIL_, 0xC3, 0x88, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x89, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x8A, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x8B, FIL_, 0xCC, 0xA7, FIL_, 0xC8, 0xA8, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x86, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x84, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xBA, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0x9A, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x98, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xBC, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xB8, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x92, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x94, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x96, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x98, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x9A, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x9E, FIL_, 0x07, 0xCC, 0x8C, FIL_, 0xC7, 0xA6, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0xA0, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xA0, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x9C, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xB4, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xA2, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x9E, FIL_, 0x07, 0xCC, 0xAE, FIL_, 0xE1, 0xB8, 0xAA, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0xA2, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB8, 0xA6, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xA4, FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0xA8, FIL_, 0xCC, 0x8C, FIL_, 0xC8, 0x9E, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0xA4, FIL_, 0x0F, 0xCC, 0x84, FIL_, 0xC4, 0xAA, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x8C, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0xAE, FIL_, 0xCC, 0x83, FIL_, 0xC4, 0xA8, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x8F, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x8D, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x88, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0xAC, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8A, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x8F, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x88, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0xB0, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8A, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0xAC, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x8E, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xC4, 0xB4, FIL_, 0x05, 0xCC, 0x8C, FIL_, 0xC7, 0xA8, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xB4, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xB0, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xB6, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB2, FIL_, 0x06, 0xCC, 0xA7, FIL_, 0xC4, 0xBB, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0xBD, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xBA, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB6, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0xBC, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0xB9, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xBE, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x82, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x80, FIL_, 0x09, 0xCC, 0x80, FIL_, 0xC7, 0xB8, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0x8A, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x84, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x88, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0x91, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x86, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x83, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x85, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x87, FIL_, 0x10, 0xCC, 0xA8, FIL_, 0xC7, 0xAA, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8E, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x92, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xA0, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x8C, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x93, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xAE, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x91, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8C, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x94, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0x8C, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0x95, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0x8E, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x96, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0x90, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x8E, FIL_, 0x02, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x96, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x94, FIL_, 0x08, 0xCC, 0x91, FIL_, 0xC8, 0x92, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x96, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x98, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x9E, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x9A, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x98, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x94, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x90, FIL_, 0x07, 0xCC, 0x81, FIL_, 0xC5, 0x9A, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0x9C, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x9E, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA0, FIL_, 0xCC, 0xA6, FIL_, 0xC8, 0x98, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA0, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xA2, FIL_, 0x07, 0xCC, 0x8C, FIL_, 0xC5, 0xA4, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0xAE, FIL_, 0xCC, 0xA6, FIL_, 0xC8, 0x9A, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0xA2, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xAA, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB0, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xAC, FIL_, 0x13, 0xCC, 0xA8, FIL_, 0xC5, 0xB2, FIL_, 0xCC, 0x83, FIL_, 0xC5, 0xA8, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0xAA, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x9A, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0xAC, FIL_, 0xCC, 0x8A, FIL_, 0xC5, 0xAE, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x99, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x96, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0xB0, FIL_, 0xCC, 0xA4, FIL_, 0xE1, 0xB9, 0xB2, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB9, 0xB4, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x94, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB6, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xAF, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x9B, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x9C, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x93, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA4, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xA6, FIL_, 0x02, 0xCC, 0x83, FIL_, 0xE1, 0xB9, 0xBC, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xBE, FIL_, 0x06, 0xCC, 0x82, FIL_, 0xC5, 0xB4, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x84, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x86, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x88, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0x82, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0x80, FIL_, 0x02, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x8A, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x8C, FIL_, 0x09, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xB6, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x8E, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB4, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x9D, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xB2, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB6, FIL_, 0xCC, 0x88, FIL_, 0xC5, 0xB8, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xB2, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xB8, FIL_, 0x06, 0xCC, 0x87, FIL_, 0xC5, 0xBB, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x92, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xBD, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xBA, 0x94, FIL_, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0x90, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0xB9, FIL_, 0x10, 0xCC, 0x8C, FIL_, 0xC7, 0x8E, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x81, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x85, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xA1, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x83, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA3, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x81, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x83, FIL_, 0xCC, 0x8A, FIL_, 0xC3, 0xA5, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xA4, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xA3, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xA1, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xA0, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xA7, FIL_, 0xCC, 0xA5, FIL_, 0xE1, 0xB8, 0x81, FIL_, 0x03, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x87, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x85, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x83, FIL_, 0x05, 0xCC, 0x87, FIL_, 0xC4, 0x8B, FIL_, 0xCC, 0xA7, FIL_, 0xC3, 0xA7, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x89, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8D, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0x87, FIL_, 0x06, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x93, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x8B, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x8D, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x8F, FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0x91, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8F, FIL_, 0x11, 0xCC, 0xA8, FIL_, 0xC4, 0x99, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x9B, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x97, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xAB, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xB9, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0x9B, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x93, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x99, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xBD, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x95, FIL_, 0xCC, 0xA7, FIL_, 0xC8, 0xA9, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xBB, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x85, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xA9, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x87, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xA8, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xAA, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x9F, FIL_, 0x07, 0xCC, 0x86, FIL_, 0xC4, 0x9F, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xA3, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xB5, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x9D, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0xA1, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0xA7, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xA1, FIL_, 0x08, 0xCC, 0x8C, FIL_, 0xC8, 0x9F, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0xA5, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB8, 0xA7, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0xA3, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xBA, 0x96, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xA5, FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0xA9, FIL_, 0xCC, 0xAE, FIL_, 0xE1, 0xB8, 0xAB, FIL_, 0x0E, 0xCC, 0x81, FIL_, 0xC3, 0xAD, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xAC, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8B, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x90, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x89, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8B, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x89, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xAE, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0xAD, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0xAF, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0xAD, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0xAB, FIL_, 0xCC, 0x83, FIL_, 0xC4, 0xA9, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xAF, FIL_, 0x02, 0xCC, 0x82, FIL_, 0xC4, 0xB5, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0xB0, FIL_, 0x05, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB3, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xB1, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xB7, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0xA9, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xB5, FIL_, 0x06, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB7, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0xBA, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xBC, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0xBE, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xBB, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0xBD, FIL_, 0x03, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x83, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xBF, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x81, FIL_, 0x09, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x87, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xB1, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x85, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x89, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x84, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x86, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0x8B, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x88, FIL_, 0xCC, 0x80, FIL_, 0xC7, 0xB9, FIL_, 0x10, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x8F, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xB3, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xB2, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xAF, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x8D, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8D, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0x8D, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x92, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0x8F, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0x91, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xA1, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8F, FIL_, 0xCC, 0xA8, FIL_, 0xC7, 0xAB, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xB6, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xB5, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xB4, FIL_, 0x02, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x97, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x95, FIL_, 0x08, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x9F, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x95, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x91, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x9B, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x99, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x93, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x97, FIL_, 0x07, 0xCC, 0xA6, FIL_, 0xC8, 0x99, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA1, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x9B, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA1, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0x9D, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x9F, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xA3, FIL_, 0x08, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x97, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB1, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0xAF, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xAD, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA5, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0xA3, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xAB, FIL_, 0xCC, 0xA6, FIL_, 0xC8, 0x9B, FIL_, 0x13, 0xCC, 0x81, FIL_, 0xC3, 0xBA, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x97, FIL_, 0xCC, 0x83, FIL_, 0xC5, 0xA9, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x95, FIL_, 0xCC, 0xA8, FIL_, 0xC5, 0xB3, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xBB, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xBC, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xB9, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA5, FIL_, 0xCC, 0xA4, FIL_, 0xE1, 0xB9, 0xB3, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xA7, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB9, 0xB5, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB7, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xB0, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0xAB, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0xB1, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0xAD, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x94, FIL_, 0xCC, 0x8A, FIL_, 0xC5, 0xAF, FIL_, 0x02, 0xCC, 0x83, FIL_, 0xE1, 0xB9, 0xBD, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xBF, FIL_, 0x07, 0xCC, 0x82, FIL_, 0xC5, 0xB5, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0x81, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0x83, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x85, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x89, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x87, FIL_, 0xCC, 0x8A, FIL_, 0xE1, 0xBA, 0x98, FIL_, 0x02, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x8B, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x8D, FIL_, 0x0A, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x8F, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xB9, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xB3, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xB7, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB5, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB7, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xB3, FIL_, 0xCC, 0x8A, FIL_, 0xE1, 0xBA, 0x99, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xBF, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xBD, FIL_, 0x06, 0xCC, 0x8C, FIL_, 0xC5, 0xBE, FIL_, 0xCC, 0x87, FIL_, 0xC5, 0xBC, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xBA, 0x95, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x93, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0xBA, FIL_, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0x91, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xAD, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x81, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x85, FIL_, 0x04, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA8, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xAA, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xA4, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xA6, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0x9E, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBA, FIL_, 0x02, 0xCC, 0x84, FIL_, 0xC7, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xBC, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x88, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xBE, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x80, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x84, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x82, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xAE, FIL_, 0x04, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x96, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x90, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x92, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x94, FIL_, 0x03, 0xCC, 0x84, FIL_, 0xC8, 0xAC, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x8C, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0x8E, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xAA, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBE, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xC7, 0x9B, FIL_, 0xCC, 0x84, FIL_, 0xC7, 0x95, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0x97, FIL_, 0x04, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA9, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xA7, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xA5, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xAB, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0x9F, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBB, FIL_, 0x02, 0xCC, 0x84, FIL_, 0xC7, 0xA3, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xBD, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x89, FIL_, 0x04, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x83, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xBF, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x81, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x85, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xAF, FIL_, 0x04, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x97, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x95, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x93, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x91, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x8D, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xAD, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0x8F, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xAB, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBF, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xC7, 0x98, FIL_, 0xCC, 0x84, FIL_, 0xC7, 0x96, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x9A, FIL_, 0xCC, 0x80, FIL_, 0xC7, 0x9C, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xB0, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xAE, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xB4, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xB2, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xB1, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xB5, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xAF, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xB3, FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x96, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xB8, 0x94, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xB8, 0x95, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x97, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xB9, 0x90, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x92, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xB9, 0x91, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x93, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA4, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA5, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA6, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA7, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0xB8, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0xB9, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0xBA, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0xBB, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x9B, FIL_, 0x05, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x9C, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x9A, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA2, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xA0, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x9E, FIL_, 0x05, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xA1, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x9B, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA3, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x9F, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x9D, FIL_, 0x05, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xAE, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB0, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xAC, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0xA8, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xAA, FIL_, 0x05, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB1, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xAF, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xAD, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0xA9, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xAB, FIL_, 0x01, 0xCC, 0x8C, FIL_, 0xC7, 0xAE, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xAC, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xAD, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xA0, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xA1, FIL_, 0x01, 0xCC, 0x86, FIL_, 0xE1, 0xB8, 0x9C, FIL_, 0x01, 0xCC, 0x86, FIL_, 0xE1, 0xB8, 0x9D, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xB0, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xB1, FIL_, 0x01, 0xCC, 0x8C, FIL_, 0xC7, 0xAF, FIL_, 0x07, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x88, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x89, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x86, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xBC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBE, 0xBA, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBE, 0xB9, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBE, 0xB8, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xCE, 0x88, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x99, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x98, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x88, FIL_, 0x05, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xA9, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x8A, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x89, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x8C, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xA8, FIL_, 0x07, 0xCC, 0x81, FIL_, 0xCE, 0x8A, FIL_, 0xCC, 0x88, FIL_, 0xCE, 0xAA, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0x98, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0x99, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xB8, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xB9, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x9A, FIL_, 0x04, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x89, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xB8, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x8C, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0x88, FIL_, 0x01, 0xCC, 0x94, FIL_, 0xE1, 0xBF, 0xAC, FIL_, 0x06, 0xCC, 0x81, FIL_, 0xCE, 0x8E, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0xA8, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x99, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xAA, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0xA9, FIL_, 0xCC, 0x88, FIL_, 0xCE, 0xAB, FIL_, 0x05, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xBA, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x8F, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xBC, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0xA9, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0xA8, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB4, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x84, FIL_, 0x08, 0xCC, 0x81, FIL_, 0xCE, 0xAC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB0, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x80, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x81, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBE, 0xB6, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBE, 0xB0, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB3, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBE, 0xB1, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xCE, 0xAD, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x91, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB2, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x90, FIL_, 0x06, 0xCC, 0x81, FIL_, 0xCE, 0xAE, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB4, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x83, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x86, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xA1, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xA0, FIL_, 0x08, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x96, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0x90, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xB0, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAF, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xB1, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0x91, FIL_, 0xCC, 0x88, FIL_, 0xCF, 0x8A, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB6, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xCF, 0x8C, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB8, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0x80, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x81, FIL_, 0x02, 0xCC, 0x93, FIL_, 0xE1, 0xBF, 0xA4, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBF, 0xA5, FIL_, 0x08, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0x90, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x91, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0xA0, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0xA6, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0xA1, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xBA, FIL_, 0xCC, 0x81, FIL_, 0xCF, 0x8D, FIL_, 0xCC, 0x88, FIL_, 0xCF, 0x8B, FIL_, 0x06, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0xA1, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB3, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xBC, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0xB6, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0xA0, FIL_, 0xCC, 0x81, FIL_, 0xCF, 0x8E, FIL_, 0x03, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x97, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x92, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x90, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xB0, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0xA7, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB4, FIL_, 0x02, 0xCC, 0x88, FIL_, 0xCF, 0x94, FIL_, 0xCC, 0x81, FIL_, 0xCF, 0x93, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD0, 0x87, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xD3, 0x90, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x92, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD0, 0x83, FIL_, 0x03, 0xCC, 0x86, FIL_, 0xD3, 0x96, FIL_, 0xCC, 0x80, FIL_, 0xD0, 0x80, FIL_, 0xCC, 0x88, FIL_, 0xD0, 0x81, FIL_, 0x02, 0xCC, 0x88, FIL_, 0xD3, 0x9C, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x81, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9E, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xD0, 0x8D, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xA4, FIL_, 0xCC, 0x86, FIL_, 0xD0, 0x99, FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xA2, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD0, 0x8C, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xA6, FIL_, 0x04, 0xCC, 0x86, FIL_, 0xD0, 0x8E, FIL_, 0xCC, 0x8B, FIL_, 0xD3, 0xB2, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xB0, FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xAE, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xB4, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xB8, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xAC, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xD3, 0x91, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x93, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD1, 0x93, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xD1, 0x90, FIL_, 0xCC, 0x88, FIL_, 0xD1, 0x91, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x97, FIL_, 0x02, 0xCC, 0x88, FIL_, 0xD3, 0x9D, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x82, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9F, FIL_, 0x04, 0xCC, 0x88, FIL_, 0xD3, 0xA5, FIL_, 0xCC, 0x86, FIL_, 0xD0, 0xB9, FIL_, 0xCC, 0x80, FIL_, 0xD1, 0x9D, FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xA3, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD1, 0x9C, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xA7, FIL_, 0x04, 0xCC, 0x84, FIL_, 0xD3, 0xAF, FIL_, 0xCC, 0x86, FIL_, 0xD1, 0x9E, FIL_, 0xCC, 0x8B, FIL_, 0xD3, 0xB3, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xB1, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xB5, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xB9, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xAD, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD1, 0x97, FIL_, 0x01, 0xCC, 0x8F, FIL_, 0xD1, 0xB6, FIL_, 0x01, 0xCC, 0x8F, FIL_, 0xD1, 0xB7, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9A, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9B, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xAA, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xAB, FIL_, 0x03, 0xD9, 0x94, FIL_, 0xD8, 0xA3, FIL_, 0xD9, 0x93, FIL_, 0xD8, 0xA2, FIL_, 0xD9, 0x95, FIL_, 0xD8, 0xA5, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xD8, 0xA4, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xD8, 0xA6, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xDB, 0x82, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xDB, 0x93, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xDB, 0x80, FIL_, 0x01, 0xE0, 0xA4, 0xBC, FIL_, 0xE0, 0xA4, 0xA9, FIL_, 0x01, 0xE0, 0xA4, 0xBC, FIL_, 0xE0, 0xA4, 0xB1, FIL_, 0x01, 0xE0, 0xA4, 0xBC, FIL_, 0xE0, 0xA4, 0xB4, FIL_, 0x02, 0xE0, 0xA6, 0xBE, FIL_, 0xE0, 0xA7, 0x8B, FIL_, 0xE0, 0xA7, 0x97, FIL_, 0xE0, 0xA7, 0x8C, FIL_, 0x03, 0xE0, 0xAD, 0x97, FIL_, 0xE0, 0xAD, 0x8C, FIL_, 0xE0, 0xAC, 0xBE, FIL_, 0xE0, 0xAD, 0x8B, FIL_, 0xE0, 0xAD, 0x96, FIL_, 0xE0, 0xAD, 0x88, FIL_, 0x01, 0xE0, 0xAF, 0x97, FIL_, 0xE0, 0xAE, 0x94, FIL_, 0x02, 0xE0, 0xAE, 0xBE, FIL_, 0xE0, 0xAF, 0x8A, FIL_, 0xE0, 0xAF, 0x97, FIL_, 0xE0, 0xAF, 0x8C, FIL_, 0x01, 0xE0, 0xAE, 0xBE, FIL_, 0xE0, 0xAF, 0x8B, FIL_, 0x01, 0xE0, 0xB1, 0x96, FIL_, 0xE0, 0xB1, 0x88, FIL_, 0x01, 0xE0, 0xB3, 0x95, FIL_, 0xE0, 0xB3, 0x80, FIL_, 0x03, 0xE0, 0xB3, 0x95, FIL_, 0xE0, 0xB3, 0x87, FIL_, 0xE0, 0xB3, 0x82, FIL_, 0xE0, 0xB3, 0x8A, FIL_, 0xE0, 0xB3, 0x96, FIL_, 0xE0, 0xB3, 0x88, FIL_, 0x01, 0xE0, 0xB3, 0x95, FIL_, 0xE0, 0xB3, 0x8B, FIL_, 0x02, 0xE0, 0xB4, 0xBE, FIL_, 0xE0, 0xB5, 0x8A, FIL_, 0xE0, 0xB5, 0x97, FIL_, 0xE0, 0xB5, 0x8C, FIL_, 0x01, 0xE0, 0xB4, 0xBE, FIL_, 0xE0, 0xB5, 0x8B, FIL_, 0x03, 0xE0, 0xB7, 0x8F, FIL_, 0xE0, 0xB7, 0x9C, FIL_, 0xE0, 0xB7, 0x8A, FIL_, 0xE0, 0xB7, 0x9A, FIL_, 0xE0, 0xB7, 0x9F, FIL_, 0xE0, 0xB7, 0x9E, FIL_, 0x01, 0xE0, 0xB7, 0x8A, FIL_, 0xE0, 0xB7, 0x9D, FIL_, 0x01, 0xE1, 0x80, 0xAE, FIL_, 0xE1, 0x80, 0xA6, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xB8, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xB9, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xE1, 0xB9, 0x9C, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xE1, 0xB9, 0x9D, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA8, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA9, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xE1, 0xBA, 0xB6, FIL_, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0xAC, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xE1, 0xBA, 0xB7, FIL_, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0xAD, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, 0x86, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, 0x87, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, 0x98, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, 0x99, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x82, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x84, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x80, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x86, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x87, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x83, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x85, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x81, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x82, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x83, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x84, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x85, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x86, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x87, FIL_, 0x04, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x88, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x8A, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x8E, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x8C, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x8D, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x8B, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x8F, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x89, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8A, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8B, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8C, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8D, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8E, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8F, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x92, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x94, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x93, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x95, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x9A, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x9C, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x9B, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x9D, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xA6, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x90, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xA4, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xA2, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xA3, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xA5, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xA7, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x91, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x92, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x93, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x94, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x95, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x96, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x97, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xAE, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xAC, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x98, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xAA, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xAF, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xAD, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xAB, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9A, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9B, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9C, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9D, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9E, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9F, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xB4, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xB6, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xB2, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xB5, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xB7, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xB3, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xBC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xBA, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xBE, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xBB, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xBF, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xBD, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x82, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x84, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x83, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x85, FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x8C, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x8A, FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x8D, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x8B, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x94, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x96, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x92, FIL_, 0x03, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x97, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x95, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x93, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x9D, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x9F, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x9B, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xA4, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xA2, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xA6, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA0, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xA7, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xA5, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA1, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xA3, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA2, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA3, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA4, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA5, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA6, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA7, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xAC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xAA, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xAE, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA8, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xAD, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA9, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xAF, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xAB, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAA, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAB, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAC, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAD, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAE, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAF, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB2, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x82, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB2, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB7, FIL_, 0x03, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x8F, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x8D, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBF, 0x8E, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x87, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB7, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x9D, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x9F, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBF, 0x9E, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0x9A, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0x9B, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0xAE, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8D, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8F, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8E, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x8C, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0xA4, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0xA6, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x81, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x87, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAD, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xA2, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB0, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB1, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB4, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB5, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB8, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB9, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x80, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x81, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA0, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA1, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x85, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x88, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA2, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA3, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAC, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAD, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAE, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAF, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAA, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAB, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAC, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAD, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0x94, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x8C, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x8E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x90, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x92, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x94, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x96, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x98, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9A, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9C, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA0, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA2, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA5, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA7, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA9, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB1, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB0, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB4, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB3, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB7, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB6, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB9, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xBA, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xBC, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xBD, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0x9E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB4, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xAC, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xAE, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB0, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB2, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB4, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB6, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB8, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xBA, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xBC, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xBE, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x80, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x82, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x85, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x87, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x89, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x90, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x91, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x93, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x94, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x96, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x97, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x9A, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x99, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x9D, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x9C, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB7, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB8, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB9, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xBA, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xBE, FIL_, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAE, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xA0, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAF, FIL_, 0x10, 0xCC, 0xA5, FIL_, 0xE1, 0xB8, 0x80, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xA6, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0x83, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x82, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x80, FIL_, 0xCC, 0x8A, FIL_, 0xC3, 0x85, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x84, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA2, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xA0, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x8D, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x80, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x81, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x82, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x84, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x82, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x80, FIL_, 0x03, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x86, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x82, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x84, FIL_, 0x05, 0xCC, 0xA7, FIL_, 0xC3, 0x87, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8C, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0x86, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x88, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x8A, FIL_, 0x06, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0x90, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8E, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x8E, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x92, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x8C, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x8A, FIL_, 0x11, 0xCC, 0x84, FIL_, 0xC4, 0x92, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x94, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xB8, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x86, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x8A, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x84, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x98, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xBA, FIL_, 0xCC, 0xA7, FIL_, 0xC8, 0xA8, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x9A, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x88, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x98, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xBC, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x96, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x89, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x8B, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0x9A, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x9E, FIL_, 0x07, 0xCC, 0x8C, FIL_, 0xC7, 0xA6, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x9E, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x9C, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xA2, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xA0, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xB4, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0xA0, FIL_, 0x07, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0xA2, FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0xA8, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0xA4, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB8, 0xA6, FIL_, 0xCC, 0x8C, FIL_, 0xC8, 0x9E, FIL_, 0xCC, 0xAE, FIL_, 0xE1, 0xB8, 0xAA, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xA4, FIL_, 0x0F, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0xAC, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x8F, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x8C, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x88, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8A, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8A, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x8F, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x8E, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x8D, FIL_, 0xCC, 0x83, FIL_, 0xC4, 0xA8, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0xB0, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x88, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0xAE, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0xAC, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0xAA, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xC4, 0xB4, FIL_, 0x05, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xB0, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0xA8, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xB4, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xB6, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB2, FIL_, 0x06, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB6, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0xBD, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0xBC, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xBA, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xBB, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0xB9, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xBE, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x80, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x82, FIL_, 0x09, 0xCC, 0x83, FIL_, 0xC3, 0x91, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x83, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x85, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x87, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x84, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x86, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x88, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0x8A, FIL_, 0xCC, 0x80, FIL_, 0xC7, 0xB8, FIL_, 0x10, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x8E, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0x8C, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x94, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0x8E, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0x95, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0x90, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x96, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xA0, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8E, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x91, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x8C, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8C, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x92, FIL_, 0xCC, 0xA8, FIL_, 0xC7, 0xAA, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xAE, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x93, FIL_, 0x02, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x96, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x94, FIL_, 0x08, 0xCC, 0xA7, FIL_, 0xC5, 0x96, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x98, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x92, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x90, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x94, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x98, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x9E, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x9A, FIL_, 0x07, 0xCC, 0xA6, FIL_, 0xC8, 0x98, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x9A, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0x9C, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x9E, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA0, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA0, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xA2, FIL_, 0x07, 0xCC, 0xA6, FIL_, 0xC8, 0x9A, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xAA, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xAC, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0xAE, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB0, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0xA2, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA4, FIL_, 0x13, 0xCC, 0x8A, FIL_, 0xC5, 0xAE, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0x9C, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0xB0, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB6, FIL_, 0xCC, 0xA8, FIL_, 0xC5, 0xB2, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x93, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0x99, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x94, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA4, FIL_, 0xCC, 0xA4, FIL_, 0xE1, 0xB9, 0xB2, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x9A, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0x9B, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB9, 0xB4, FIL_, 0xCC, 0x83, FIL_, 0xC5, 0xA8, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xA6, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0xAA, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x96, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0xAC, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xAF, FIL_, 0x02, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xBE, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xB9, 0xBC, FIL_, 0x06, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x84, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0x82, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0x80, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x88, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB4, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x86, FIL_, 0x02, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x8C, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x8A, FIL_, 0x09, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xB6, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB4, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xB2, FIL_, 0xCC, 0x88, FIL_, 0xC5, 0xB8, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0x9D, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xB8, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x8E, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xB2, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB6, FIL_, 0x06, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0x90, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x92, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xBA, 0x94, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xBD, FIL_, 0xCC, 0x87, FIL_, 0xC5, 0xBB, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0xB9, FIL_, 0x10, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xA1, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x85, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xA1, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xA2, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA3, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xA3, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x8E, FIL_, 0xCC, 0x8A, FIL_, 0xC3, 0xA5, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xA4, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xA7, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x83, FIL_, 0xCC, 0xA5, FIL_, 0xE1, 0xB8, 0x81, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x81, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x81, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x83, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xA0, FIL_, 0x03, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x85, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x83, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x87, FIL_, 0x05, 0xCC, 0x87, FIL_, 0xC4, 0x8B, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8D, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x89, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0x87, FIL_, 0xCC, 0xA7, FIL_, 0xC3, 0xA7, FIL_, 0x06, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x8B, FIL_, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0x91, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0x8F, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0x8D, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x8F, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x93, FIL_, 0x11, 0xCC, 0x80, FIL_, 0xC3, 0xA8, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xA9, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xAA, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xAB, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0x93, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0x95, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0x97, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0x99, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0x9B, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x85, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x87, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0xB9, FIL_, 0xCC, 0xA7, FIL_, 0xC8, 0xA9, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xBD, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xBB, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0x99, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0x9B, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0x9F, FIL_, 0x07, 0xCC, 0x86, FIL_, 0xC4, 0x9F, FIL_, 0xCC, 0x87, FIL_, 0xC4, 0xA1, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0x9D, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xA1, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0xA7, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xA3, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xB5, FIL_, 0x08, 0xCC, 0xA7, FIL_, 0xE1, 0xB8, 0xA9, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xBA, 0x96, FIL_, 0xCC, 0x8C, FIL_, 0xC8, 0x9F, FIL_, 0xCC, 0xAE, FIL_, 0xE1, 0xB8, 0xAB, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB8, 0xA7, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xA5, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB8, 0xA3, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0xA5, FIL_, 0x0E, 0xCC, 0x88, FIL_, 0xC3, 0xAF, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x89, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8B, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xAE, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xAD, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xAC, FIL_, 0xCC, 0x83, FIL_, 0xC4, 0xA9, FIL_, 0xCC, 0x84, FIL_, 0xC4, 0xAB, FIL_, 0xCC, 0x86, FIL_, 0xC4, 0xAD, FIL_, 0xCC, 0xA8, FIL_, 0xC4, 0xAF, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB8, 0xAD, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x90, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8B, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x89, FIL_, 0x02, 0xCC, 0x8C, FIL_, 0xC7, 0xB0, FIL_, 0xCC, 0x82, FIL_, 0xC4, 0xB5, FIL_, 0x05, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xB5, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xB7, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0xA9, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xB1, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB3, FIL_, 0x06, 0xCC, 0xA3, FIL_, 0xE1, 0xB8, 0xB7, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB8, 0xBD, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB8, 0xBB, FIL_, 0xCC, 0xA7, FIL_, 0xC4, 0xBC, FIL_, 0xCC, 0x81, FIL_, 0xC4, 0xBA, FIL_, 0xCC, 0x8C, FIL_, 0xC4, 0xBE, FIL_, 0x03, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x81, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x83, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xBF, FIL_, 0x09, 0xCC, 0x80, FIL_, 0xC7, 0xB9, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0x8B, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xB1, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x84, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x87, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x89, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x85, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x86, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0x88, FIL_, 0x10, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0x8D, FIL_, 0xCC, 0x87, FIL_, 0xC8, 0xAF, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xB2, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x8F, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x8F, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xB6, FIL_, 0xCC, 0x83, FIL_, 0xC3, 0xB5, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xB3, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x92, FIL_, 0xCC, 0xA8, FIL_, 0xC7, 0xAB, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xA1, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0x8D, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0x8F, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0x91, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xB4, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x8D, FIL_, 0x02, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x97, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x95, FIL_, 0x08, 0xCC, 0x8C, FIL_, 0xC5, 0x99, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0x9B, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x95, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0x97, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0x9F, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0x99, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x93, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x91, FIL_, 0x07, 0xCC, 0xA7, FIL_, 0xC5, 0x9F, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0x9D, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA1, FIL_, 0xCC, 0xA6, FIL_, 0xC8, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0x9B, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xA3, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA1, FIL_, 0x08, 0xCC, 0xA6, FIL_, 0xC8, 0x9B, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB1, FIL_, 0xCC, 0xB1, FIL_, 0xE1, 0xB9, 0xAF, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xAD, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xAB, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xA5, FIL_, 0xCC, 0xA7, FIL_, 0xC5, 0xA3, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x97, FIL_, 0x13, 0xCC, 0x8A, FIL_, 0xC5, 0xAF, FIL_, 0xCC, 0x8F, FIL_, 0xC8, 0x95, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x94, FIL_, 0xCC, 0x80, FIL_, 0xC3, 0xB9, FIL_, 0xCC, 0x9B, FIL_, 0xC6, 0xB0, FIL_, 0xCC, 0x82, FIL_, 0xC3, 0xBB, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xBA, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xBC, FIL_, 0xCC, 0x83, FIL_, 0xC5, 0xA9, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xA7, FIL_, 0xCC, 0x84, FIL_, 0xC5, 0xAB, FIL_, 0xCC, 0x86, FIL_, 0xC5, 0xAD, FIL_, 0xCC, 0xAD, FIL_, 0xE1, 0xB9, 0xB7, FIL_, 0xCC, 0x8B, FIL_, 0xC5, 0xB1, FIL_, 0xCC, 0xA8, FIL_, 0xC5, 0xB3, FIL_, 0xCC, 0x91, FIL_, 0xC8, 0x97, FIL_, 0xCC, 0xA4, FIL_, 0xE1, 0xB9, 0xB3, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA5, FIL_, 0xCC, 0xB0, FIL_, 0xE1, 0xB9, 0xB5, FIL_, 0x02, 0xCC, 0x83, FIL_, 0xE1, 0xB9, 0xBD, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xB9, 0xBF, FIL_, 0x07, 0xCC, 0x8A, FIL_, 0xE1, 0xBA, 0x98, FIL_, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x87, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0x83, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB5, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0x81, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x89, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x85, FIL_, 0x02, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x8B, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xBA, 0x8D, FIL_, 0x0A, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x8F, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB5, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xB7, FIL_, 0xCC, 0x8A, FIL_, 0xE1, 0xBA, 0x99, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xB3, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xB9, FIL_, 0xCC, 0x88, FIL_, 0xC3, 0xBF, FIL_, 0xCC, 0x81, FIL_, 0xC3, 0xBD, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xB3, FIL_, 0xCC, 0x82, FIL_, 0xC5, 0xB7, FIL_, 0x06, 0xCC, 0xB1, FIL_, 0xE1, 0xBA, 0x95, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBA, 0x93, FIL_, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0x91, FIL_, 0xCC, 0x81, FIL_, 0xC5, 0xBA, FIL_, 0xCC, 0x87, FIL_, 0xC5, 0xBC, FIL_, 0xCC, 0x8C, FIL_, 0xC5, 0xBE, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xAD, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x81, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x85, FIL_, 0x04, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xAA, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xA4, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA8, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xA6, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0x9E, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBA, FIL_, 0x02, 0xCC, 0x84, FIL_, 0xC7, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0xBC, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x88, FIL_, 0x04, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x84, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x80, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x82, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xBE, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xAE, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x90, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x92, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x94, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x96, FIL_, 0x03, 0xCC, 0x84, FIL_, 0xC8, 0xAC, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0x8E, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x8C, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xAA, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBE, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xC7, 0x9B, FIL_, 0xCC, 0x84, FIL_, 0xC7, 0x95, FIL_, 0xCC, 0x8C, FIL_, 0xC7, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0x97, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xA5, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xAB, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xA9, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xA7, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0x9F, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBB, FIL_, 0x02, 0xCC, 0x81, FIL_, 0xC7, 0xBD, FIL_, 0xCC, 0x84, FIL_, 0xC7, 0xA3, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x89, FIL_, 0x04, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x83, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x85, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x81, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xBF, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0xAF, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x93, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x91, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0x97, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x95, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x8D, FIL_, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0x8F, FIL_, 0xCC, 0x84, FIL_, 0xC8, 0xAD, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xAB, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xC7, 0xBF, FIL_, 0x04, 0xCC, 0x8C, FIL_, 0xC7, 0x9A, FIL_, 0xCC, 0x84, FIL_, 0xC7, 0x96, FIL_, 0xCC, 0x80, FIL_, 0xC7, 0x9C, FIL_, 0xCC, 0x81, FIL_, 0xC7, 0x98, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xAE, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xB4, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xB2, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xB0, FIL_, 0x04, 0xCC, 0x83, FIL_, 0xE1, 0xBA, 0xB5, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBA, 0xB1, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBA, 0xAF, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBA, 0xB3, FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x96, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xB8, 0x94, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xB8, 0x95, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB8, 0x97, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xB9, 0x90, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x92, FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0x93, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xB9, 0x91, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA4, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA5, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA6, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA7, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0xB8, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xE1, 0xB9, 0xB9, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0xBA, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xE1, 0xB9, 0xBB, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xBA, 0x9B, FIL_, 0x05, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x9C, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x9E, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xA0, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x9A, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA2, FIL_, 0x05, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xA1, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xA3, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0x9B, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0x9D, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0x9F, FIL_, 0x05, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0xA8, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xAA, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xAC, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xAE, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB0, FIL_, 0x05, 0xCC, 0x80, FIL_, 0xE1, 0xBB, 0xAB, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBB, 0xA9, FIL_, 0xCC, 0x83, FIL_, 0xE1, 0xBB, 0xAF, FIL_, 0xCC, 0xA3, FIL_, 0xE1, 0xBB, 0xB1, FIL_, 0xCC, 0x89, FIL_, 0xE1, 0xBB, 0xAD, FIL_, 0x01, 0xCC, 0x8C, FIL_, 0xC7, 0xAE, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xAC, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xAD, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xA0, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC7, 0xA1, FIL_, 0x01, 0xCC, 0x86, FIL_, 0xE1, 0xB8, 0x9C, FIL_, 0x01, 0xCC, 0x86, FIL_, 0xE1, 0xB8, 0x9D, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xB0, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xC8, 0xB1, FIL_, 0x01, 0xCC, 0x8C, FIL_, 0xC7, 0xAF, FIL_, 0x07, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x88, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x86, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBE, 0xB8, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBE, 0xB9, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x89, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xBC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBE, 0xBA, FIL_, 0x04, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x99, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x88, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x88, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x98, FIL_, 0x05, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x8C, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x89, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x8A, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xA8, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xA9, FIL_, 0x07, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x9A, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0x99, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xB8, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xB9, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0x98, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x8A, FIL_, 0xCC, 0x88, FIL_, 0xCE, 0xAA, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xCE, 0x8C, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x89, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0x88, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xB8, FIL_, 0x01, 0xCC, 0x94, FIL_, 0xE1, 0xBF, 0xAC, FIL_, 0x06, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x99, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0xA8, FIL_, 0xCC, 0x88, FIL_, 0xCE, 0xAB, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0xA9, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x8E, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xAA, FIL_, 0x05, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0xA8, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xBC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xBA, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0xA9, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x8F, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB4, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x84, FIL_, 0x08, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB3, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBE, 0xB1, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBE, 0xB0, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB0, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAC, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x81, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x80, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBE, 0xB6, FIL_, 0x04, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0x90, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB2, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0x91, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAD, FIL_, 0x06, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xA1, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAE, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x83, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x86, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xA0, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB4, FIL_, 0x08, 0xCC, 0x88, FIL_, 0xCF, 0x8A, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xAF, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBC, 0xB0, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBC, 0xB1, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB6, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0x90, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0x91, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x96, FIL_, 0x04, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0x80, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xB8, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x81, FIL_, 0xCC, 0x81, FIL_, 0xCF, 0x8C, FIL_, 0x02, 0xCC, 0x93, FIL_, 0xE1, 0xBF, 0xA4, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBF, 0xA5, FIL_, 0x08, 0xCC, 0x81, FIL_, 0xCF, 0x8D, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0x91, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0xA6, FIL_, 0xCC, 0x88, FIL_, 0xCF, 0x8B, FIL_, 0xCC, 0x84, FIL_, 0xE1, 0xBF, 0xA1, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xBA, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0x90, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBF, 0xA0, FIL_, 0x06, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xBC, FIL_, 0xCC, 0x94, FIL_, 0xE1, 0xBD, 0xA1, FIL_, 0xCC, 0x93, FIL_, 0xE1, 0xBD, 0xA0, FIL_, 0xCC, 0x81, FIL_, 0xCF, 0x8E, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB3, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0xB6, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x92, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x97, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0x90, FIL_, 0x03, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0xA7, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xCE, 0xB0, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB4, FIL_, 0x02, 0xCC, 0x88, FIL_, 0xCF, 0x94, FIL_, 0xCC, 0x81, FIL_, 0xCF, 0x93, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD0, 0x87, FIL_, 0x02, 0xCC, 0x88, FIL_, 0xD3, 0x92, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x90, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD0, 0x83, FIL_, 0x03, 0xCC, 0x88, FIL_, 0xD0, 0x81, FIL_, 0xCC, 0x80, FIL_, 0xD0, 0x80, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x96, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xD3, 0x81, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x9C, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9E, FIL_, 0x04, 0xCC, 0x84, FIL_, 0xD3, 0xA2, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xA4, FIL_, 0xCC, 0x86, FIL_, 0xD0, 0x99, FIL_, 0xCC, 0x80, FIL_, 0xD0, 0x8D, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD0, 0x8C, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xA6, FIL_, 0x04, 0xCC, 0x8B, FIL_, 0xD3, 0xB2, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xB0, FIL_, 0xCC, 0x86, FIL_, 0xD0, 0x8E, FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xAE, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xB4, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xB8, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xAC, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xD3, 0x91, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x93, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD1, 0x93, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xD1, 0x90, FIL_, 0xCC, 0x86, FIL_, 0xD3, 0x97, FIL_, 0xCC, 0x88, FIL_, 0xD1, 0x91, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xD3, 0x82, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0x9D, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9F, FIL_, 0x04, 0xCC, 0x86, FIL_, 0xD0, 0xB9, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xA5, FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xA3, FIL_, 0xCC, 0x80, FIL_, 0xD1, 0x9D, FIL_, 0x01, 0xCC, 0x81, FIL_, 0xD1, 0x9C, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xA7, FIL_, 0x04, 0xCC, 0x8B, FIL_, 0xD3, 0xB3, FIL_, 0xCC, 0x84, FIL_, 0xD3, 0xAF, FIL_, 0xCC, 0x86, FIL_, 0xD1, 0x9E, FIL_, 0xCC, 0x88, FIL_, 0xD3, 0xB1, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xB5, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xB9, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xAD, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD1, 0x97, FIL_, 0x01, 0xCC, 0x8F, FIL_, 0xD1, 0xB6, FIL_, 0x01, 0xCC, 0x8F, FIL_, 0xD1, 0xB7, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9A, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0x9B, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xAA, FIL_, 0x01, 0xCC, 0x88, FIL_, 0xD3, 0xAB, FIL_, 0x03, 0xD9, 0x94, FIL_, 0xD8, 0xA3, FIL_, 0xD9, 0x95, FIL_, 0xD8, 0xA5, FIL_, 0xD9, 0x93, FIL_, 0xD8, 0xA2, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xD8, 0xA4, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xD8, 0xA6, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xDB, 0x82, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xDB, 0x93, FIL_, 0x01, 0xD9, 0x94, FIL_, 0xDB, 0x80, FIL_, 0x01, 0xE0, 0xA4, 0xBC, FIL_, 0xE0, 0xA4, 0xA9, FIL_, 0x01, 0xE0, 0xA4, 0xBC, FIL_, 0xE0, 0xA4, 0xB1, FIL_, 0x01, 0xE0, 0xA4, 0xBC, FIL_, 0xE0, 0xA4, 0xB4, FIL_, 0x02, 0xE0, 0xA6, 0xBE, FIL_, 0xE0, 0xA7, 0x8B, FIL_, 0xE0, 0xA7, 0x97, FIL_, 0xE0, 0xA7, 0x8C, FIL_, 0x03, 0xE0, 0xAD, 0x96, FIL_, 0xE0, 0xAD, 0x88, FIL_, 0xE0, 0xAC, 0xBE, FIL_, 0xE0, 0xAD, 0x8B, FIL_, 0xE0, 0xAD, 0x97, FIL_, 0xE0, 0xAD, 0x8C, FIL_, 0x01, 0xE0, 0xAF, 0x97, FIL_, 0xE0, 0xAE, 0x94, FIL_, 0x02, 0xE0, 0xAF, 0x97, FIL_, 0xE0, 0xAF, 0x8C, FIL_, 0xE0, 0xAE, 0xBE, FIL_, 0xE0, 0xAF, 0x8A, FIL_, 0x01, 0xE0, 0xAE, 0xBE, FIL_, 0xE0, 0xAF, 0x8B, FIL_, 0x01, 0xE0, 0xB1, 0x96, FIL_, 0xE0, 0xB1, 0x88, FIL_, 0x01, 0xE0, 0xB3, 0x95, FIL_, 0xE0, 0xB3, 0x80, FIL_, 0x03, 0xE0, 0xB3, 0x82, FIL_, 0xE0, 0xB3, 0x8A, FIL_, 0xE0, 0xB3, 0x96, FIL_, 0xE0, 0xB3, 0x88, FIL_, 0xE0, 0xB3, 0x95, FIL_, 0xE0, 0xB3, 0x87, FIL_, 0x01, 0xE0, 0xB3, 0x95, FIL_, 0xE0, 0xB3, 0x8B, FIL_, 0x02, 0xE0, 0xB4, 0xBE, FIL_, 0xE0, 0xB5, 0x8A, FIL_, 0xE0, 0xB5, 0x97, FIL_, 0xE0, 0xB5, 0x8C, FIL_, 0x01, 0xE0, 0xB4, 0xBE, FIL_, 0xE0, 0xB5, 0x8B, FIL_, 0x03, 0xE0, 0xB7, 0x9F, FIL_, 0xE0, 0xB7, 0x9E, FIL_, 0xE0, 0xB7, 0x8A, FIL_, 0xE0, 0xB7, 0x9A, FIL_, 0xE0, 0xB7, 0x8F, FIL_, 0xE0, 0xB7, 0x9C, FIL_, 0x01, 0xE0, 0xB7, 0x8A, FIL_, 0xE0, 0xB7, 0x9D, FIL_, 0x01, 0xE1, 0x80, 0xAE, FIL_, 0xE1, 0x80, 0xA6, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x86, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x88, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x8A, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x8C, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x8E, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0x92, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0xBB, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAC, 0xBD, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAD, 0x80, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAD, 0x81, FIL_, 0x01, 0xE1, 0xAC, 0xB5, FIL_, 0xE1, 0xAD, 0x83, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xB8, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xE1, 0xB8, 0xB9, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xE1, 0xB9, 0x9C, FIL_, 0x01, 0xCC, 0x84, FIL_, 0xE1, 0xB9, 0x9D, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA8, FIL_, 0x01, 0xCC, 0x87, FIL_, 0xE1, 0xB9, 0xA9, FIL_, 0x02, 0xCC, 0x86, FIL_, 0xE1, 0xBA, 0xB6, FIL_, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0xAC, FIL_, 0x02, 0xCC, 0x82, FIL_, 0xE1, 0xBA, 0xAD, FIL_, 0xCC, 0x86, FIL_, 0xE1, 0xBA, 0xB7, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, 0x86, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, 0x87, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, 0x98, FIL_, 0x01, 0xCC, 0x82, FIL_, 0xE1, 0xBB, 0x99, FIL_, 0x04, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x80, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x86, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x82, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x84, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x87, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x85, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x83, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x81, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x82, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x83, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x84, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x85, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x86, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x87, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x8C, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x8A, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x88, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x8E, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x8B, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0x8F, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x8D, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x89, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8A, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8B, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8C, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8D, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8E, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x8F, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x92, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x94, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x93, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x95, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x9A, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x9C, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0x9B, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0x9D, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xA4, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xA6, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x90, FIL_, 0x04, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x91, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xA5, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xA7, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xA3, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x92, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x93, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x94, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x95, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x96, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x97, FIL_, 0x04, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xAC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xAA, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x98, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xAE, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xAF, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x99, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xAD, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xAB, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9A, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9B, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9C, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9D, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9E, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0x9F, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xB4, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xB2, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xB6, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xB3, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xB7, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xB5, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xBC, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xBA, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xBE, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBC, 0xBB, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBC, 0xBF, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBC, 0xBD, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x82, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x84, FIL_, 0x02, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x85, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x83, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x8A, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x8C, FIL_, 0x02, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x8B, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x8D, FIL_, 0x03, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x96, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x92, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x94, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x93, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x97, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x95, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0x9B, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0x9F, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0x9D, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xA6, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA0, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xA2, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xA4, FIL_, 0x04, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA1, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xA7, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xA5, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xA3, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA2, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA3, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA4, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA5, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA6, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA7, FIL_, 0x04, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xAA, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xAC, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xAE, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA8, FIL_, 0x04, 0xCD, 0x82, FIL_, 0xE1, 0xBD, 0xAF, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBD, 0xAB, FIL_, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xA9, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBD, 0xAD, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAA, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAB, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAC, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAD, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAE, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xAF, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB2, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x82, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB2, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBE, 0xB7, FIL_, 0x03, 0xCC, 0x81, FIL_, 0xE1, 0xBF, 0x8E, FIL_, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x8D, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x8F, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0x87, FIL_, 0x01, 0xCD, 0x85, FIL_, 0xE1, 0xBF, 0xB7, FIL_, 0x03, 0xCC, 0x80, FIL_, 0xE1, 0xBF, 0x9D, FIL_, 0xCC, 0x81, FIL_, 0xE1, 0xBF, 0x9E, FIL_, 0xCD, 0x82, FIL_, 0xE1, 0xBF, 0x9F, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0x9A, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0x9B, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x86, 0xAE, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8D, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8F, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x87, 0x8E, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0x8C, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0xA4, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x88, 0xA6, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x81, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x87, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xAD, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xA2, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB0, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB1, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB4, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB5, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB8, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x89, 0xB9, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x80, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x81, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA0, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA1, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x84, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x85, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x88, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0x89, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA2, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xA3, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAC, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAD, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAE, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8A, 0xAF, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAA, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAB, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAC, FIL_, 0x01, 0xCC, 0xB8, FIL_, 0xE2, 0x8B, 0xAD, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0x94, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x8C, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x8E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x90, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x92, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x94, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x96, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x98, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9A, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9C, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0x9E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA0, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA2, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA5, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA7, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xA9, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB1, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB0, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB3, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB4, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB6, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xB7, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xBA, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xB9, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x81, 0xBD, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x81, 0xBC, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0x9E, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB4, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xAC, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xAE, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB0, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB2, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB4, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB6, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xB8, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xBA, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xBC, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x82, 0xBE, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x80, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x82, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x85, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x87, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x89, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x90, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x91, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x93, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x94, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x97, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x96, FIL_, 0x02, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x9A, FIL_, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x99, FIL_, 0x02, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0x9C, FIL_, 0xE3, 0x82, 0x9A, FIL_, 0xE3, 0x83, 0x9D, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB7, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB8, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xB9, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xBA, FIL_, 0x01, 0xE3, 0x82, 0x99, FIL_, 0xE3, 0x83, 0xBE, FIL_, }, }; static const uchar_t u8_decomp_b2_tbl[2][2][256] = { { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, 2, 3, 4, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 5, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 6, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 7, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, 2, 3, 4, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 5, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 6, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 7, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, }; static const u8_displacement_t u8_decomp_b3_tbl[2][8][256] = { { { /* Third byte table 0. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 0 }, { 1, 35 }, { 2, 247 }, { 3, 474 }, { 4, 693 }, { 5, 709 }, { 6, 951 }, { N_, 0 }, { 7, 1139 }, { 8, 1152 }, { N_, 0 }, { 9, 1177 }, { 10, 1199 }, { 11, 1295 }, { 12, 1360 }, { 13, 1405 }, { N_, 0 }, { 14, 1450 }, { N_, 0 }, { N_, 0 }, { 15, 1620 }, { N_, 0 }, { 16, 1624 }, { 17, 1649 }, { N_, 0 }, { 18, 1665 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 1. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 19, 1680 }, { 20, 1701 }, { N_, 0 }, { 21, 1757 }, { 22, 1792 }, { 23, 1806 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 24, 1834 }, { 25, 1869 }, { 26, 1876 }, { N_, 0 }, { 27, 1897 }, { N_, 0 }, { 28, 1904 }, { N_, 0 }, { 29, 1942 }, { N_, 0 }, { 30, 1963 }, { 31, 1994 }, { N_, 0 }, { 32, 2000 }, { 33, 2006 }, { 34, 2018 }, { 35, 2021 }, { 36, 2109 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 2. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 37, 2158 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0x8000, 2165 }, { 0x8001, 2445 }, { 0x8002, 2741 }, { 0x8003, 3029 }, { 0x8004, 3337 }, { 0x8005, 3725 }, { 0x8006, 4053 }, { 0x8007, 4536 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 3. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 38, 4895 }, { 39, 4964 }, { 40, 4999 }, { N_, 0 }, { 41, 5018 }, { 42, 5098 }, { 43, 5230 }, { 44, 5248 }, { 45, 5266 }, { 46, 5326 }, { 47, 5410 }, { 48, 5470 }, { 49, 5518 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 50, 5526 }, { 51, 5596 }, { 52, 5767 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 53, 5810 }, { 54, 5822 }, { N_, 0 }, { 55, 5830 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 56, 5836 }, { 57, 5839 }, { 58, 5842 }, { 59, 6034 }, { 60, 6226 }, { 61, 6418 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 4. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 62, 6484 }, { 63, 6497 }, { 64, 6672 }, { 65, 6770 }, { 66, 6923 }, { 67, 6968 }, { 68, 7160 }, { N_, 0 }, { 0x8008, 7247 }, { 69, 7597 }, { 70, 7773 }, { 71, 7950 }, { 0x8009, 8142 }, { 0x800A, 8919 }, { 72, 9351 }, { 73, 9522 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 5. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0x800B, 9743 }, { 0x800C, 9999 }, { 0x800D, 10255 }, { 0x800E, 10511 }, { 74, 10767 }, { 75, 10967 }, { N_, 0 }, { N_, 0 }, { 76, 11139 }, { 77, 11303 }, { 78, 11468 }, { 79, 11576 }, { 0x800F, 11740 }, { 0x8010, 12006 }, { 0x8011, 12280 }, { 0x8012, 12546 }, { 80, 12812 }, { 0x8013, 13060 }, { 0x8014, 13348 }, { 81, 13720 }, { 82, 13898 }, { 83, 13933 }, { 84, 14045 }, { 85, 14197 }, { 86, 14347 }, { 87, 14410 }, { 88, 14540 }, { 89, 14729 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 6. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 90, 14829 }, { 91, 14912 }, { 92, 14969 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 93, 14982 }, { 94, 15046 }, { 95, 15109 }, { 96, 15163 }, { 97, 15225 }, { 98, 15282 }, { 99, 15341 }, { 100, 15405 }, { 101, 15469 }, { 102, 15533 }, { 103, 15597 }, { 104, 15681 }, { 105, 15812 }, { 106, 15942 }, { 107, 16072 }, { 108, 16202 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 7. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0x8015, 16273 }, { 0x8016, 16536 }, { 0x8017, 16799 }, { 0x8018, 17064 }, { 0x8019, 17329 }, { 0x801A, 17601 }, { 0x801B, 17878 }, { 0x801C, 18147 }, { 109, 18419 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, }, { { /* Third byte table 0. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 0 }, { 1, 35 }, { 2, 247 }, { 3, 474 }, { 4, 693 }, { 5, 709 }, { 6, 951 }, { N_, 0 }, { 7, 1139 }, { 8, 1152 }, { N_, 0 }, { 9, 1177 }, { 10, 1199 }, { 11, 1295 }, { 12, 1362 }, { 13, 1407 }, { N_, 0 }, { 14, 1452 }, { N_, 0 }, { N_, 0 }, { 15, 1622 }, { N_, 0 }, { 16, 1626 }, { 17, 1651 }, { N_, 0 }, { 18, 1667 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 1. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 19, 1682 }, { 20, 1703 }, { N_, 0 }, { 21, 1759 }, { 22, 1794 }, { 23, 1808 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 24, 1836 }, { 25, 1871 }, { 26, 1878 }, { N_, 0 }, { 27, 1899 }, { N_, 0 }, { 28, 1906 }, { N_, 0 }, { 29, 1944 }, { N_, 0 }, { 30, 1965 }, { 31, 1996 }, { N_, 0 }, { 32, 2002 }, { 33, 2008 }, { 34, 2020 }, { 35, 2023 }, { 36, 2111 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 2. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 37, 2160 }, { N_, 0 }, { N_, 0 }, { 38, 2167 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 39, 2170 }, { 40, 2226 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 41, 2247 }, { 42, 2268 }, { 43, 2340 }, { N_, 0 }, { 0x8000, 2414 }, { 0x8001, 2694 }, { 0x8002, 2990 }, { 0x8003, 3278 }, { 0x8004, 3586 }, { 0x8005, 3974 }, { 0x8006, 4302 }, { 0x8007, 4785 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 3. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 44, 5144 }, { 45, 5213 }, { 46, 5248 }, { N_, 0 }, { 47, 5273 }, { 48, 5358 }, { 49, 5490 }, { 50, 5508 }, { 51, 5526 }, { 52, 5586 }, { 53, 5670 }, { 54, 5730 }, { 55, 5778 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 56, 5786 }, { 57, 5856 }, { 58, 6027 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 59, 6070 }, { 60, 6082 }, { N_, 0 }, { 61, 6090 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 62, 6096 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 63, 6099 }, { 64, 6102 }, { 65, 6105 }, { 66, 6297 }, { 67, 6489 }, { 68, 6681 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 4. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 69, 6747 }, { 70, 6760 }, { 71, 6935 }, { 72, 7033 }, { 73, 7186 }, { 74, 7231 }, { 75, 7423 }, { N_, 0 }, { 0x8008, 7510 }, { 76, 7891 }, { 77, 8103 }, { 78, 8280 }, { 0x8009, 8482 }, { 0x800A, 9259 }, { 79, 9701 }, { 80, 9872 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 5. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0x800B, 10106 }, { 0x800C, 10362 }, { 0x800D, 10618 }, { 0x800E, 10874 }, { 81, 11130 }, { 82, 11330 }, { 0x800F, 11566 }, { 83, 11822 }, { 84, 11932 }, { 85, 12096 }, { 86, 12261 }, { 87, 12369 }, { 0x8010, 12533 }, { 0x8011, 12799 }, { 0x8012, 13073 }, { 0x8013, 13339 }, { 88, 13605 }, { 0x8014, 13853 }, { 0x8015, 14141 }, { 89, 14513 }, { 90, 14691 }, { 91, 14746 }, { 92, 14860 }, { 93, 15012 }, { 94, 15162 }, { 95, 15225 }, { 96, 15355 }, { 97, 15544 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 6. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 98, 15644 }, { 99, 15727 }, { 100, 15784 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 101, 15797 }, { 102, 15861 }, { 103, 15924 }, { 104, 15978 }, { 105, 16041 }, { 106, 16098 }, { 107, 16157 }, { 108, 16221 }, { 109, 16285 }, { 110, 16349 }, { 111, 16413 }, { 112, 16501 }, { 113, 16632 }, { 114, 16762 }, { 115, 16892 }, { 116, 17022 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 7. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0x8016, 17097 }, { 0x8017, 17360 }, { 0x8018, 17623 }, { 0x8019, 17888 }, { 0x801A, 18153 }, { 0x801B, 18425 }, { 0x801C, 18702 }, { 0x801D, 18971 }, { 117, 19243 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, }, }; static const uchar_t u8_decomp_b4_tbl[2][118][257] = { { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 5, 5, 5, 5, 5, 8, 8, 8, 9, 10, 13, 15, 15, 15, 18, 19, 20, 20, 25, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 60, 64, 68, 72, 76, 80, 84, 84, 84, 88, 92, 96, 100, 104, 104, 104, 108, 112, 116, 120, 124, 128, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 164, 168, 172, 176, 180, 184, 188, 188, 188, 192, 196, 200, 204, 208, 208, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 64, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 144, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 180, 182, 184, 188, 192, 196, 200, 200, 204, 208, 212, 216, 220, 224, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 7, 11, 15, 19, 23, 27, 30, 30, 30, 34, 38, 42, 46, 50, 54, 54, 54, 58, 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 122, 126, 126, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 14, 16, 18, 20, 22, 24, 28, 32, 36, 40, 44, 48, 52, 56, 62, 68, 74, 80, 86, 92, 98, 104, 104, 110, 116, 122, 128, 133, 138, 138, 138, 142, 146, 150, 154, 158, 162, 168, 174, 179, 184, 188, 190, 192, 194, 198, 202, 202, 202, 206, 210, 216, 222, 227, 232, 237, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 112, 112, 116, 120, 120, 120, 120, 120, 120, 120, 124, 128, 132, 136, 142, 148, 154, 160, 164, 168, 174, 180, 184, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 5, 7, 9, 11, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 20, 21, 22, 23, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 6, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 17, 17, 17, 17, 17, 20, 20, 20, 20, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 14, 19, 22, 27, 32, 37, 37, 42, 42, 47, 52, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 64, 69, 74, 79, 84, 89, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 20, 25, 25, 27, 29, 31, 41, 51, 53, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 57, 59, 61, 61, 63, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 15, 15, 15, 15, 20, 20, 20, 20, 20, 25, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 15, 15, 15, 15, 20, 20, 20, 20, 20, 25, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 40, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 20, 25, 30, 30, 30, 35, 40, 40, 40, 45, 50, 55, 60, 65, 70, 70, 70, 75, 80, 85, 90, 95, 100, 100, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 160, 160, 165, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 20, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 21, 28, 35, 42, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 28, 28, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 21, 21, 21, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 28, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 14, 21, 21, 28, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 24, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 21, 21, 21, 21, 21, 28, 28, 28, 28, 28, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 49, 49, 56, 63, 72, 79, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, }, { /* Fourth byte table 36. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 21, 21, 21, 21, 28, 28, 28, 28, 28, 35, 35, 35, 35, 35, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, }, { /* Fourth byte table 37. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }, { /* Fourth byte table 38. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 24, 24, 24, 24, 24, 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 30, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 40, 49, 49, 55, 64, 64, 64, 64, 64, 66, 66, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, }, { /* Fourth byte table 39. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, 21, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 40. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, }, { /* Fourth byte table 41. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 7, 10, 10, 13, 16, 18, 18, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 32, 33, 35, 35, 35, 36, 37, 38, 39, 40, 40, 40, 42, 45, 47, 47, 48, 48, 51, 51, 52, 52, 54, 58, 59, 60, 60, 61, 62, 63, 63, 64, 65, 67, 69, 71, 73, 74, 74, 74, 74, 76, 78, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, }, { /* Fourth byte table 42. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58, 63, 68, 72, 73, 75, 78, 80, 81, 83, 86, 90, 92, 93, 95, 98, 99, 100, 101, 102, 103, 105, 108, 110, 111, 113, 116, 120, 122, 123, 125, 128, 129, 130, 131, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, }, { /* Fourth byte table 43. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, }, { /* Fourth byte table 44. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, }, { /* Fourth byte table 45. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 12, 12, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 24, 24, 30, 30, 30, 30, 30, 30, 36, 45, 45, 51, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, }, { /* Fourth byte table 46. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 12, 12, 12, 18, 18, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 28, 28, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 44, 48, 54, 60, 60, 60, 66, 72, 72, 72, 78, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, }, { /* Fourth byte table 47. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 12, 12, 18, 24, 24, 24, 30, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 42, 48, 54, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, }, { /* Fourth byte table 48. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 24, 24, 24, 24, 24, 24, 30, 36, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 49. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }, { /* Fourth byte table 50. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 62, 66, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, }, { /* Fourth byte table 51. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104, 107, 110, 113, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, }, { /* Fourth byte table 52. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, }, { /* Fourth byte table 53. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, }, { /* Fourth byte table 54. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }, { /* Fourth byte table 55. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }, { /* Fourth byte table 56. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 57. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 58. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 59. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 60. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 61. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, }, { /* Fourth byte table 62. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 7, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }, { /* Fourth byte table 63. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 14, 21, 21, 28, 28, 35, 35, 42, 42, 49, 49, 56, 56, 63, 63, 70, 70, 77, 77, 84, 84, 84, 91, 91, 98, 98, 105, 105, 105, 105, 105, 105, 105, 112, 119, 119, 126, 133, 133, 140, 147, 147, 154, 161, 161, 168, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, }, { /* Fourth byte table 64. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 11, 15, 15, 22, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 35, 35, 42, 42, 49, 49, 56, 56, 63, 63, 70, 70, 77, 77, 84, 84, 91, 91, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, }, { /* Fourth byte table 65. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 14, 14, 21, 21, 28, 28, 35, 35, 35, 35, 35, 35, 35, 42, 49, 49, 56, 63, 63, 70, 77, 77, 84, 91, 91, 98, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 112, 112, 112, 119, 126, 133, 140, 140, 140, 140, 147, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, }, { /* Fourth byte table 66. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, }, { /* Fourth byte table 67. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 68. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 45, 45, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, }, { /* Fourth byte table 69. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 98, 104, 110, 116, 122, 128, 134, 140, 146, 152, 158, 164, 170, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, }, { /* Fourth byte table 70. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, }, { /* Fourth byte table 71. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 41, 46, 51, 51, 51, 51, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 72. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 7, 9, 11, 13, 15, 17, 20, 24, 26, 28, 31, 34, 36, 38, 40, 43, 46, 49, 52, 55, 57, 59, 61, 63, 65, 68, 70, 72, 74, 77, 80, 82, 85, 88, 91, 93, 96, 101, 107, 109, 112, 115, 118, 121, 128, 136, 138, 140, 143, 145, 147, 149, 152, 154, 156, 158, 160, 162, 165, 167, 169, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, }, { /* Fourth byte table 73. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 12, 14, 16, 22, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 48, 50, 52, 55, 58, 60, 64, 67, 69, 71, 73, 75, 75, 75, 79, 83, 87, 91, 95, 99, 103, 107, 111, 116, 121, 126, 131, 136, 141, 146, 151, 156, 161, 166, 171, 176, 181, 186, 191, 196, 201, 206, 211, 216, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, }, { /* Fourth byte table 74. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 56, 56, 60, 60, 64, 64, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 104, 108, 108, 112, 112, 112, 116, 120, 120, 120, 120, 124, 128, 132, 136, 136, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, }, { /* Fourth byte table 75. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, }, { /* Fourth byte table 76. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 9, 12, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 24, 28, 32, 36, 36, 36, 36, 36, 36, 41, 41, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 65, 70, 75, 82, 89, 94, 99, 104, 109, 114, 119, 124, 129, 134, 134, 139, 144, 149, 154, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, }, { /* Fourth byte table 77. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 15, 20, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, }, { /* Fourth byte table 78. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 76, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 104, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, }, { /* Fourth byte table 79. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 158, 160, 162, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, }, { /* Fourth byte table 80. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, }, { /* Fourth byte table 81. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 60, 68, 76, 84, 92, 100, 108, 116, 122, 155, 170, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, }, { /* Fourth byte table 82. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 8, 9, 10, 11, 12, 13, 14, 17, 20, 23, 26, 29, 32, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 83. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 15, 15, 15, 15, 18, 21, 24, 27, 28, 29, 30, 31, 34, 35, 35, 36, 37, 38, 39, 42, 43, 44, 45, 46, 49, 52, 53, 54, 55, 56, 57, 58, 59, 60, 60, 61, 62, 63, 64, 64, 64, 64, 64, 67, 71, 74, 74, 77, 77, 80, 84, 87, 91, 94, 98, 101, 105, 108, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, }, { /* Fourth byte table 84. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, }, { /* Fourth byte table 85. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 112, 118, 124, 130, 136, 142, 146, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, }, { /* Fourth byte table 86. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 87. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 100, 103, 106, 109, 112, 115, 118, 121, 124, 127, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, }, { /* Fourth byte table 88. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, }, { /* Fourth byte table 89. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 21, 24, 27, 30, 33, 36, 36, 36, 39, 42, 45, 48, 51, 54, 54, 54, 57, 60, 63, 63, 63, 63, 65, 67, 69, 72, 74, 76, 79, 79, 82, 85, 88, 91, 94, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, }, { /* Fourth byte table 90. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 18, 31, 44, 57, 70, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, }, { /* Fourth byte table 91. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 18, 31, 44, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, }, { /* Fourth byte table 92. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }, { /* Fourth byte table 93. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 94. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 95. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 29, 30, 31, 31, 31, 32, 32, 32, 33, 34, 34, 34, 35, 36, 37, 38, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 51, 52, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, }, { /* Fourth byte table 96. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 97. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 19, 20, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 53, 54, 55, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, }, { /* Fourth byte table 98. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, }, { /* Fourth byte table 99. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 100. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 101. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 102. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 103. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, }, { /* Fourth byte table 104. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 123, 125, 127, 129, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, }, { /* Fourth byte table 105. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, }, { /* Fourth byte table 106. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, }, { /* Fourth byte table 107. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, }, { /* Fourth byte table 108. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 21, 21, 21, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, }, { /* Fourth byte table 109. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 13, 17, 21, 25, 29, 33, 37, 42, 46, 50, 54, 58, 62, 66, 71, 75, 80, 85, 90, 94, 98, 102, 106, 110, 114, 118, 122, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, }, { /* Fourth byte table 110. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 111. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 112. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 113. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 114. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 115. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 116. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 117. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 5, 5, 5, 5, 5, 8, 8, 8, 9, 10, 13, 15, 15, 15, 18, 19, 20, 20, 25, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 60, 64, 68, 72, 76, 80, 84, 84, 84, 88, 92, 96, 100, 104, 104, 104, 108, 112, 116, 120, 124, 128, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 164, 168, 172, 176, 180, 184, 188, 188, 188, 192, 196, 200, 204, 208, 208, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 64, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 144, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 180, 182, 184, 188, 192, 196, 200, 200, 204, 208, 212, 216, 220, 224, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 7, 11, 15, 19, 23, 27, 30, 30, 30, 34, 38, 42, 46, 50, 54, 54, 54, 58, 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 122, 126, 126, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 14, 16, 18, 20, 22, 24, 28, 32, 36, 40, 44, 48, 52, 56, 62, 68, 74, 80, 86, 92, 98, 104, 104, 110, 116, 122, 128, 133, 138, 138, 138, 142, 146, 150, 154, 158, 162, 168, 174, 179, 184, 188, 190, 192, 194, 198, 202, 202, 202, 206, 210, 216, 222, 227, 232, 237, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 112, 112, 116, 120, 120, 120, 120, 120, 120, 120, 124, 128, 132, 136, 142, 148, 154, 160, 164, 168, 174, 180, 184, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 5, 7, 9, 11, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 20, 21, 22, 23, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 6, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 17, 17, 17, 17, 17, 20, 20, 20, 20, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 14, 19, 22, 27, 32, 37, 37, 42, 42, 47, 52, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 64, 69, 74, 79, 84, 89, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 20, 25, 25, 27, 29, 31, 41, 51, 53, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 57, 59, 61, 61, 63, 65, 65, 65, 65, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 15, 15, 15, 15, 20, 20, 20, 20, 20, 25, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 15, 15, 15, 15, 20, 20, 20, 20, 20, 25, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 40, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 20, 25, 30, 30, 30, 35, 40, 40, 40, 45, 50, 55, 60, 65, 70, 70, 70, 75, 80, 85, 90, 95, 100, 100, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 160, 160, 165, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 20, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 21, 28, 35, 42, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 28, 28, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 21, 21, 21, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 28, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 14, 21, 21, 28, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 24, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 21, 21, 21, 21, 21, 28, 28, 28, 28, 28, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 49, 49, 56, 63, 72, 79, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, }, { /* Fourth byte table 36. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 21, 21, 21, 21, 21, 28, 28, 28, 28, 28, 35, 35, 35, 35, 35, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, }, { /* Fourth byte table 37. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, }, { /* Fourth byte table 38. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 39. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 14, 21, 21, 28, 28, 35, 35, 35, 35, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 49, 49, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, }, { /* Fourth byte table 40. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 14, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 41. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 16, 17, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 42. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 8, 11, 12, 13, 14, 16, 18, 20, 21, 21, 22, 23, 25, 26, 28, 31, 34, 35, 36, 37, 40, 42, 43, 46, 48, 50, 52, 54, 56, 57, 58, 59, 60, 62, 64, 66, 68, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, }, { /* Fourth byte table 43. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 5, 7, 9, 10, 12, 14, 16, 18, 20, 22, 25, 27, 29, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 61, 63, 65, 66, 68, 70, 72, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, }, { /* Fourth byte table 44. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 24, 24, 24, 24, 24, 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 30, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 34, 34, 34, 40, 49, 49, 55, 64, 64, 64, 64, 64, 66, 66, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, }, { /* Fourth byte table 45. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 21, 21, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, }, { /* Fourth byte table 46. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 17, 18, 19, 20, 21, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, }, { /* Fourth byte table 47. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 7, 10, 10, 13, 16, 18, 18, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 32, 33, 35, 35, 35, 36, 37, 38, 39, 40, 40, 40, 42, 45, 47, 47, 48, 48, 51, 51, 52, 52, 54, 58, 59, 60, 60, 61, 62, 63, 63, 64, 65, 67, 69, 71, 73, 74, 74, 77, 79, 81, 83, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, }, { /* Fourth byte table 48. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58, 63, 68, 72, 73, 75, 78, 80, 81, 83, 86, 90, 92, 93, 95, 98, 99, 100, 101, 102, 103, 105, 108, 110, 111, 113, 116, 120, 122, 123, 125, 128, 129, 130, 131, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, }, { /* Fourth byte table 49. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, }, { /* Fourth byte table 50. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, }, { /* Fourth byte table 51. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 12, 12, 12, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 24, 24, 30, 30, 30, 30, 30, 30, 36, 45, 45, 51, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, }, { /* Fourth byte table 52. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 12, 12, 12, 18, 18, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 28, 28, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 40, 44, 48, 54, 60, 60, 60, 66, 72, 72, 72, 78, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, }, { /* Fourth byte table 53. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 12, 12, 18, 24, 24, 24, 30, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 42, 48, 54, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, }, { /* Fourth byte table 54. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 24, 24, 24, 24, 24, 24, 30, 36, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 55. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }, { /* Fourth byte table 56. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 62, 66, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, }, { /* Fourth byte table 57. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 98, 101, 104, 107, 110, 113, 116, 119, 122, 125, 128, 131, 134, 137, 140, 143, 146, 149, 152, 155, 158, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, }, { /* Fourth byte table 58. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, }, { /* Fourth byte table 59. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, }, { /* Fourth byte table 60. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }, { /* Fourth byte table 61. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, }, { /* Fourth byte table 62. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 63. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 64. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 65. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 66. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 67. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 68. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, }, { /* Fourth byte table 69. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 7, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }, { /* Fourth byte table 70. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 14, 21, 21, 28, 28, 35, 35, 42, 42, 49, 49, 56, 56, 63, 63, 70, 70, 77, 77, 84, 84, 84, 91, 91, 98, 98, 105, 105, 105, 105, 105, 105, 105, 112, 119, 119, 126, 133, 133, 140, 147, 147, 154, 161, 161, 168, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, }, { /* Fourth byte table 71. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 11, 15, 15, 22, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 35, 35, 42, 42, 49, 49, 56, 56, 63, 63, 70, 70, 77, 77, 84, 84, 91, 91, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, }, { /* Fourth byte table 72. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 14, 14, 14, 21, 21, 28, 28, 35, 35, 35, 35, 35, 35, 35, 42, 49, 49, 56, 63, 63, 70, 77, 77, 84, 91, 91, 98, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 112, 112, 112, 119, 126, 133, 140, 140, 140, 140, 147, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, }, { /* Fourth byte table 73. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, }, { /* Fourth byte table 74. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, }, { /* Fourth byte table 75. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 45, 45, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, }, { /* Fourth byte table 76. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89, 92, 95, 101, 107, 113, 119, 125, 131, 137, 143, 149, 155, 161, 167, 173, 179, 194, 206, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, }, { /* Fourth byte table 77. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, }, { /* Fourth byte table 78. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 41, 46, 51, 53, 56, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 100, 103, 106, 109, 112, 115, 118, 121, 124, 127, 130, 133, 136, 139, 142, 145, 148, 151, 154, 157, 160, 163, 166, 169, 172, 175, 178, 181, 184, 187, 190, 193, 196, 199, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, }, { /* Fourth byte table 79. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 7, 9, 11, 13, 15, 17, 20, 24, 26, 28, 31, 34, 36, 38, 40, 43, 46, 49, 52, 55, 57, 59, 61, 63, 65, 68, 70, 72, 74, 77, 80, 82, 85, 88, 91, 93, 96, 101, 107, 109, 112, 115, 118, 121, 128, 136, 138, 140, 143, 145, 147, 149, 152, 154, 156, 158, 160, 162, 165, 167, 169, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, }, { /* Fourth byte table 80. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 10, 12, 14, 16, 22, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 48, 50, 52, 55, 58, 60, 64, 67, 69, 71, 73, 75, 80, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 126, 131, 136, 141, 146, 151, 156, 161, 166, 171, 176, 181, 186, 191, 196, 201, 206, 211, 216, 221, 226, 231, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, }, { /* Fourth byte table 81. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 56, 56, 60, 60, 64, 64, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 104, 108, 108, 112, 112, 112, 116, 120, 120, 120, 120, 124, 128, 132, 136, 136, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, }, { /* Fourth byte table 82. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 172, 172, 172, 172, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, }, { /* Fourth byte table 83. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 65, 70, 75, 79, 83, 87, 92, 97, 102, 106, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, }, { /* Fourth byte table 84. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 9, 12, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 20, 24, 28, 32, 36, 36, 36, 36, 36, 36, 41, 41, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 65, 70, 75, 82, 89, 94, 99, 104, 109, 114, 119, 124, 129, 134, 134, 139, 144, 149, 154, 159, 159, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, }, { /* Fourth byte table 85. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 15, 20, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, }, { /* Fourth byte table 86. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 76, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 104, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, }, { /* Fourth byte table 87. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 158, 160, 162, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, }, { /* Fourth byte table 88. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, }, { /* Fourth byte table 89. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 60, 68, 76, 84, 92, 100, 108, 116, 122, 155, 170, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, }, { /* Fourth byte table 90. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 7, 8, 9, 10, 11, 14, 17, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 22, 25, 28, 29, 30, 31, 32, 33, 34, 37, 40, 43, 46, 49, 52, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, }, { /* Fourth byte table 91. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 15, 15, 16, 17, 20, 23, 26, 29, 30, 31, 32, 33, 36, 37, 37, 38, 39, 40, 41, 44, 45, 46, 47, 48, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 62, 63, 64, 65, 66, 66, 66, 66, 66, 69, 73, 76, 76, 79, 79, 82, 86, 89, 93, 96, 100, 103, 107, 110, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, }, { /* Fourth byte table 92. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, }, { /* Fourth byte table 93. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 112, 118, 124, 130, 136, 142, 146, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, }, { /* Fourth byte table 94. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 95. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73, 76, 79, 82, 85, 88, 91, 94, 97, 100, 103, 106, 109, 112, 115, 118, 121, 124, 127, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, }, { /* Fourth byte table 96. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, }, { /* Fourth byte table 97. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 21, 24, 27, 30, 33, 36, 36, 36, 39, 42, 45, 48, 51, 54, 54, 54, 57, 60, 63, 63, 63, 63, 65, 67, 69, 72, 74, 76, 79, 79, 82, 85, 88, 91, 94, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, }, { /* Fourth byte table 98. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 18, 31, 44, 57, 70, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, }, { /* Fourth byte table 99. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 18, 31, 44, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, }, { /* Fourth byte table 100. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, }, { /* Fourth byte table 101. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 102. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 103. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 29, 30, 31, 31, 31, 32, 32, 32, 33, 34, 34, 34, 35, 36, 37, 38, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 51, 52, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, }, { /* Fourth byte table 104. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 105. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 6, 7, 8, 9, 10, 10, 10, 11, 12, 13, 14, 15, 16, 17, 18, 18, 19, 20, 21, 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 53, 54, 55, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, }, { /* Fourth byte table 106. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 6, 6, 6, 6, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, }, { /* Fourth byte table 107. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 108. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 109. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 110. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 111. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 38, 40, 40, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, }, { /* Fourth byte table 112. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 123, 125, 127, 129, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, }, { /* Fourth byte table 113. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, }, { /* Fourth byte table 114. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, }, { /* Fourth byte table 115. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, }, { /* Fourth byte table 116. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 9, 11, 13, 15, 17, 19, 21, 23, 25, 25, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, }, { /* Fourth byte table 117. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 13, 17, 21, 25, 29, 33, 37, 42, 46, 50, 54, 58, 62, 66, 71, 75, 80, 85, 90, 94, 98, 102, 106, 110, 114, 118, 122, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, }, }, }; static const uint16_t u8_decomp_b4_16bit_tbl[2][30][257] = { { { /* Fourth byte 16-bit table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 38, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 90, 96, 102, 108, 112, 116, 120, 124, 130, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 206, 212, 216, 220, 224, 228, 232, 236, 240, 244, 250, 256, 260, 264, 268, 272, 276, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, }, { /* Fourth byte 16-bit table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 54, 60, 66, 72, 78, 84, 90, 96, 100, 104, 108, 112, 116, 120, 124, 128, 134, 140, 144, 148, 152, 156, 160, 164, 170, 176, 182, 188, 194, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 262, 268, 274, 280, 284, 288, 292, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, }, { /* Fourth byte 16-bit table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 107, 116, 116, 116, 116, 116, 120, 124, 128, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 256, 260, 264, 268, 272, 276, 282, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, }, { /* Fourth byte 16-bit table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 52, 56, 60, 64, 68, 72, 76, 80, 86, 92, 98, 104, 110, 116, 122, 128, 134, 140, 146, 152, 158, 164, 170, 176, 182, 188, 194, 200, 204, 208, 212, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 280, 284, 288, 292, 296, 300, 304, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, }, { /* Fourth byte 16-bit table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 17, 24, 31, 38, 45, 52, 57, 62, 69, 76, 83, 90, 97, 104, 109, 114, 121, 128, 135, 142, 142, 142, 147, 152, 159, 166, 173, 180, 180, 180, 185, 190, 197, 204, 211, 218, 225, 232, 237, 242, 249, 256, 263, 270, 277, 284, 289, 294, 301, 308, 315, 322, 329, 336, 341, 346, 353, 360, 367, 374, 381, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, }, { /* Fourth byte 16-bit table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 17, 24, 31, 38, 38, 38, 43, 48, 55, 62, 69, 76, 76, 76, 81, 86, 93, 100, 107, 114, 121, 128, 128, 133, 133, 140, 140, 147, 147, 154, 159, 164, 171, 178, 185, 192, 199, 206, 211, 216, 223, 230, 237, 244, 251, 258, 263, 268, 273, 278, 283, 288, 293, 298, 303, 308, 313, 318, 323, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, }, { /* Fourth byte 16-bit table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 23, 32, 41, 50, 59, 68, 75, 82, 91, 100, 109, 118, 127, 136, 143, 150, 159, 168, 177, 186, 195, 204, 211, 218, 227, 236, 245, 254, 263, 272, 279, 286, 295, 304, 313, 322, 331, 340, 347, 354, 363, 372, 381, 390, 399, 408, 413, 418, 425, 430, 437, 437, 442, 449, 454, 459, 464, 469, 474, 477, 480, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, }, { /* Fourth byte 16-bit table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 14, 21, 26, 33, 33, 38, 45, 50, 55, 60, 65, 70, 82, 94, 106, 111, 116, 123, 130, 130, 130, 135, 142, 147, 152, 157, 162, 162, 174, 186, 198, 203, 208, 215, 222, 227, 232, 237, 244, 249, 254, 259, 264, 269, 280, 291, 293, 293, 293, 300, 305, 312, 312, 317, 324, 329, 334, 339, 344, 349, 356, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, }, { /* Fourth byte 16-bit table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 78, 86, 94, 102, 110, 118, 126, 134, 142, 150, 158, 166, 174, 182, 190, 190, 190, 190, 195, 200, 205, 210, 215, 220, 225, 230, 235, 240, 245, 250, 255, 260, 265, 270, 275, 280, 285, 290, 295, 300, 305, 310, 315, 320, 325, 330, 335, 340, 345, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, }, { /* Fourth byte 16-bit table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 27, 42, 51, 66, 75, 84, 102, 114, 123, 132, 141, 153, 165, 177, 189, 201, 213, 225, 243, 249, 267, 285, 300, 312, 330, 348, 360, 369, 378, 390, 402, 417, 432, 441, 450, 462, 471, 480, 486, 492, 501, 510, 528, 540, 555, 573, 585, 594, 603, 621, 633, 651, 660, 675, 684, 696, 705, 717, 732, 744, 759, 771, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, }, { /* Fourth byte 16-bit table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 24, 33, 45, 54, 63, 72, 87, 99, 105, 123, 132, 147, 159, 171, 180, 189, 201, 207, 219, 234, 240, 258, 267, 271, 275, 279, 283, 287, 291, 295, 299, 303, 307, 312, 317, 322, 327, 332, 337, 342, 347, 352, 357, 362, 367, 372, 377, 382, 385, 387, 389, 392, 394, 396, 396, 396, 396, 396, 402, 408, 414, 420, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, }, { /* Fourth byte 16-bit table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, }, { /* Fourth byte 16-bit table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 125, 130, 135, 140, 145, 150, 156, 162, 168, 174, 180, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 270, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, }, { /* Fourth byte 16-bit table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 98, 104, 110, 116, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, }, { /* Fourth byte 16-bit table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 130, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 210, 216, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, }, { /* Fourth byte 16-bit table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 282, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, }, { /* Fourth byte 16-bit table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 96, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360, 366, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, }, { /* Fourth byte 16-bit table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 58, 62, 66, 70, 74, 79, 83, 87, 91, 96, 100, 104, 108, 112, 116, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 218, 222, 226, 230, 235, 239, 243, 247, 251, 255, 259, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, }, { /* Fourth byte 16-bit table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 105, 109, 113, 117, 121, 125, 129, 134, 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 184, 188, 192, 196, 200, 205, 209, 213, 217, 221, 225, 229, 233, 237, 241, 246, 250, 255, 259, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, }, { /* Fourth byte 16-bit table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 41, 45, 49, 53, 57, 61, 66, 70, 75, 80, 84, 88, 92, 96, 101, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 155, 159, 163, 167, 171, 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, 223, 227, 231, 236, 240, 244, 248, 252, 256, 261, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, }, { /* Fourth byte 16-bit table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 122, 126, 130, 134, 138, 142, 147, 151, 155, 159, 163, 167, 171, 175, 179, 184, 188, 192, 196, 201, 205, 209, 213, 217, 221, 225, 230, 235, 240, 244, 249, 253, 257, 261, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, }, { /* Fourth byte 16-bit table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 29, 33, 37, 41, 45, 49, 53, 58, 62, 66, 71, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 117, 121, 126, 130, 135, 139, 143, 147, 152, 156, 160, 165, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 227, 231, 236, 240, 245, 249, 254, 259, 264, 268, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, }, { /* Fourth byte 16-bit table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 14, 19, 24, 28, 32, 36, 40, 44, 48, 52, 56, 61, 65, 69, 73, 77, 82, 86, 91, 96, 100, 104, 108, 112, 116, 120, 125, 130, 135, 139, 143, 148, 152, 156, 160, 165, 169, 173, 177, 181, 185, 190, 194, 198, 202, 206, 210, 214, 219, 224, 228, 233, 237, 242, 246, 250, 254, 259, 264, 268, 273, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, }, { /* Fourth byte 16-bit table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 13, 17, 21, 25, 29, 34, 39, 44, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 155, 160, 165, 169, 173, 177, 181, 186, 190, 195, 199, 203, 208, 213, 217, 221, 225, 229, 233, 237, 241, 245, 249, 253, 257, 261, 265, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, }, { /* Fourth byte 16-bit table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 25, 29, 33, 37, 41, 45, 50, 55, 59, 63, 67, 71, 75, 79, 84, 88, 92, 96, 100, 105, 110, 114, 118, 122, 127, 131, 135, 140, 145, 149, 153, 157, 162, 166, 170, 174, 178, 182, 186, 190, 195, 199, 203, 207, 212, 216, 220, 224, 228, 233, 238, 242, 246, 250, 255, 259, 264, 268, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, }, { /* Fourth byte 16-bit table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, { { /* Fourth byte 16-bit table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 38, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 90, 96, 102, 108, 112, 116, 120, 124, 130, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 206, 212, 216, 220, 224, 228, 232, 236, 240, 244, 250, 256, 260, 264, 268, 272, 276, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, }, { /* Fourth byte 16-bit table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 54, 60, 66, 72, 78, 84, 90, 96, 100, 104, 108, 112, 116, 120, 124, 128, 134, 140, 144, 148, 152, 156, 160, 164, 170, 176, 182, 188, 194, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 262, 268, 274, 280, 284, 288, 292, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, }, { /* Fourth byte 16-bit table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 107, 116, 116, 116, 116, 116, 120, 124, 128, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 256, 260, 264, 268, 272, 276, 282, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, }, { /* Fourth byte 16-bit table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 52, 56, 60, 64, 68, 72, 76, 80, 86, 92, 98, 104, 110, 116, 122, 128, 134, 140, 146, 152, 158, 164, 170, 176, 182, 188, 194, 200, 204, 208, 212, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 280, 284, 288, 292, 296, 300, 304, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, }, { /* Fourth byte 16-bit table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 17, 24, 31, 38, 45, 52, 57, 62, 69, 76, 83, 90, 97, 104, 109, 114, 121, 128, 135, 142, 142, 142, 147, 152, 159, 166, 173, 180, 180, 180, 185, 190, 197, 204, 211, 218, 225, 232, 237, 242, 249, 256, 263, 270, 277, 284, 289, 294, 301, 308, 315, 322, 329, 336, 341, 346, 353, 360, 367, 374, 381, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, }, { /* Fourth byte 16-bit table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 17, 24, 31, 38, 38, 38, 43, 48, 55, 62, 69, 76, 76, 76, 81, 86, 93, 100, 107, 114, 121, 128, 128, 133, 133, 140, 140, 147, 147, 154, 159, 164, 171, 178, 185, 192, 199, 206, 211, 216, 223, 230, 237, 244, 251, 258, 263, 268, 273, 278, 283, 288, 293, 298, 303, 308, 313, 318, 323, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, }, { /* Fourth byte 16-bit table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 14, 23, 32, 41, 50, 59, 68, 75, 82, 91, 100, 109, 118, 127, 136, 143, 150, 159, 168, 177, 186, 195, 204, 211, 218, 227, 236, 245, 254, 263, 272, 279, 286, 295, 304, 313, 322, 331, 340, 347, 354, 363, 372, 381, 390, 399, 408, 413, 418, 425, 430, 437, 437, 442, 449, 454, 459, 464, 469, 474, 477, 480, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, }, { /* Fourth byte 16-bit table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 14, 21, 26, 33, 33, 38, 45, 50, 55, 60, 65, 70, 82, 94, 106, 111, 116, 123, 130, 130, 130, 135, 142, 147, 152, 157, 162, 162, 174, 186, 198, 203, 208, 215, 222, 227, 232, 237, 244, 249, 254, 259, 264, 269, 280, 291, 293, 293, 293, 300, 305, 312, 312, 317, 324, 329, 334, 339, 344, 349, 356, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, 359, }, { /* Fourth byte 16-bit table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 78, 86, 94, 102, 110, 118, 126, 134, 142, 150, 158, 166, 174, 182, 190, 207, 221, 221, 226, 231, 236, 241, 246, 251, 256, 261, 266, 271, 276, 281, 286, 291, 296, 301, 306, 311, 316, 321, 326, 331, 336, 341, 346, 351, 356, 361, 366, 371, 376, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, }, { /* Fourth byte 16-bit table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 27, 42, 51, 66, 75, 84, 102, 114, 123, 132, 141, 153, 165, 177, 189, 201, 213, 225, 243, 249, 267, 285, 300, 312, 330, 348, 360, 369, 378, 390, 402, 417, 432, 441, 450, 462, 471, 480, 486, 492, 501, 510, 528, 540, 555, 573, 585, 594, 603, 621, 633, 651, 660, 675, 684, 696, 705, 717, 732, 744, 759, 771, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, }, { /* Fourth byte 16-bit table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 24, 33, 45, 54, 63, 72, 87, 99, 105, 123, 132, 147, 159, 171, 180, 189, 201, 207, 219, 234, 240, 258, 267, 271, 275, 279, 283, 287, 291, 295, 299, 303, 307, 312, 317, 322, 327, 332, 337, 342, 347, 352, 357, 362, 367, 372, 377, 382, 385, 387, 389, 392, 394, 396, 398, 401, 404, 406, 412, 418, 424, 430, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, 442, }, { /* Fourth byte 16-bit table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, 252, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, }, { /* Fourth byte 16-bit table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, }, { /* Fourth byte 16-bit table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 125, 130, 135, 140, 145, 150, 156, 162, 168, 174, 180, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 270, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, 274, }, { /* Fourth byte 16-bit table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 98, 104, 110, 116, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, }, { /* Fourth byte 16-bit table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 130, 136, 140, 144, 148, 152, 156, 160, 164, 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 210, 216, 222, 226, 230, 234, 238, 242, 246, 250, 254, 258, 262, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, }, { /* Fourth byte 16-bit table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 282, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, 288, }, { /* Fourth byte 16-bit table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 96, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360, 366, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, }, { /* Fourth byte 16-bit table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 58, 62, 66, 70, 74, 79, 83, 87, 91, 96, 100, 104, 108, 112, 116, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177, 181, 185, 189, 193, 197, 201, 205, 209, 213, 218, 222, 226, 230, 235, 239, 243, 247, 251, 255, 259, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, }, { /* Fourth byte 16-bit table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 105, 109, 113, 117, 121, 125, 129, 134, 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 184, 188, 192, 196, 200, 205, 209, 213, 217, 221, 225, 229, 233, 237, 241, 246, 250, 255, 259, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, }, { /* Fourth byte 16-bit table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 41, 45, 49, 53, 57, 61, 66, 70, 75, 80, 84, 88, 92, 96, 101, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 155, 159, 163, 167, 171, 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219, 223, 227, 231, 236, 240, 244, 248, 252, 256, 261, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, }, { /* Fourth byte 16-bit table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 122, 126, 130, 134, 138, 142, 147, 151, 155, 159, 163, 167, 171, 175, 179, 184, 188, 192, 196, 201, 205, 209, 213, 217, 221, 225, 230, 235, 240, 244, 249, 253, 257, 261, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, }, { /* Fourth byte 16-bit table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 29, 33, 37, 41, 45, 49, 53, 58, 62, 66, 71, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 117, 121, 126, 130, 135, 139, 143, 147, 152, 156, 160, 165, 170, 174, 178, 182, 186, 190, 194, 198, 202, 206, 210, 214, 218, 222, 227, 231, 236, 240, 245, 249, 254, 259, 264, 268, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, }, { /* Fourth byte 16-bit table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 14, 19, 24, 28, 32, 36, 40, 44, 48, 52, 56, 61, 65, 69, 73, 77, 82, 86, 91, 96, 100, 104, 108, 112, 116, 120, 125, 130, 135, 139, 143, 148, 152, 156, 160, 165, 169, 173, 177, 181, 185, 190, 194, 198, 202, 206, 210, 214, 219, 224, 228, 233, 237, 242, 246, 250, 254, 259, 264, 268, 273, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, }, { /* Fourth byte 16-bit table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 13, 17, 21, 25, 29, 34, 39, 44, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 150, 155, 160, 165, 169, 173, 177, 181, 186, 190, 195, 199, 203, 208, 213, 217, 221, 225, 229, 233, 237, 241, 245, 249, 253, 257, 261, 265, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, }, { /* Fourth byte 16-bit table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 25, 29, 33, 37, 41, 45, 50, 55, 59, 63, 67, 71, 75, 79, 84, 88, 92, 96, 100, 105, 110, 114, 118, 122, 127, 131, 135, 140, 145, 149, 153, 157, 162, 166, 170, 174, 178, 182, 186, 190, 195, 199, 203, 207, 212, 216, 220, 224, 228, 233, 238, 242, 246, 250, 255, 259, 264, 268, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, }, }, }; static const uchar_t u8_decomp_final_tbl[2][19370] = { { 0x20, 0x20, 0xCC, 0x88, 0x61, 0x20, 0xCC, 0x84, 0x32, 0x33, 0x20, 0xCC, 0x81, 0xCE, 0xBC, 0x20, 0xCC, 0xA7, 0x31, 0x6F, 0x31, 0xE2, 0x81, 0x84, 0x34, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x33, 0xE2, 0x81, 0x84, 0x34, 0xF6, 0x41, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x82, 0xF6, 0x41, 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0x88, 0xF6, 0x41, 0xCC, 0x8A, 0xF6, 0x43, 0xCC, 0xA7, 0xF6, 0x45, 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x81, 0xF6, 0x45, 0xCC, 0x82, 0xF6, 0x45, 0xCC, 0x88, 0xF6, 0x49, 0xCC, 0x80, 0xF6, 0x49, 0xCC, 0x81, 0xF6, 0x49, 0xCC, 0x82, 0xF6, 0x49, 0xCC, 0x88, 0xF6, 0x4E, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x82, 0xF6, 0x4F, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x88, 0xF6, 0x55, 0xCC, 0x80, 0xF6, 0x55, 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x82, 0xF6, 0x55, 0xCC, 0x88, 0xF6, 0x59, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x80, 0xF6, 0x61, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x82, 0xF6, 0x61, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x88, 0xF6, 0x61, 0xCC, 0x8A, 0xF6, 0x63, 0xCC, 0xA7, 0xF6, 0x65, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x81, 0xF6, 0x65, 0xCC, 0x82, 0xF6, 0x65, 0xCC, 0x88, 0xF6, 0x69, 0xCC, 0x80, 0xF6, 0x69, 0xCC, 0x81, 0xF6, 0x69, 0xCC, 0x82, 0xF6, 0x69, 0xCC, 0x88, 0xF6, 0x6E, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x82, 0xF6, 0x6F, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x88, 0xF6, 0x75, 0xCC, 0x80, 0xF6, 0x75, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x82, 0xF6, 0x75, 0xCC, 0x88, 0xF6, 0x79, 0xCC, 0x81, 0xF6, 0x79, 0xCC, 0x88, 0xF6, 0x41, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x84, 0xF6, 0x41, 0xCC, 0x86, 0xF6, 0x61, 0xCC, 0x86, 0xF6, 0x41, 0xCC, 0xA8, 0xF6, 0x61, 0xCC, 0xA8, 0xF6, 0x43, 0xCC, 0x81, 0xF6, 0x63, 0xCC, 0x81, 0xF6, 0x43, 0xCC, 0x82, 0xF6, 0x63, 0xCC, 0x82, 0xF6, 0x43, 0xCC, 0x87, 0xF6, 0x63, 0xCC, 0x87, 0xF6, 0x43, 0xCC, 0x8C, 0xF6, 0x63, 0xCC, 0x8C, 0xF6, 0x44, 0xCC, 0x8C, 0xF6, 0x64, 0xCC, 0x8C, 0xF6, 0x45, 0xCC, 0x84, 0xF6, 0x65, 0xCC, 0x84, 0xF6, 0x45, 0xCC, 0x86, 0xF6, 0x65, 0xCC, 0x86, 0xF6, 0x45, 0xCC, 0x87, 0xF6, 0x65, 0xCC, 0x87, 0xF6, 0x45, 0xCC, 0xA8, 0xF6, 0x65, 0xCC, 0xA8, 0xF6, 0x45, 0xCC, 0x8C, 0xF6, 0x65, 0xCC, 0x8C, 0xF6, 0x47, 0xCC, 0x82, 0xF6, 0x67, 0xCC, 0x82, 0xF6, 0x47, 0xCC, 0x86, 0xF6, 0x67, 0xCC, 0x86, 0xF6, 0x47, 0xCC, 0x87, 0xF6, 0x67, 0xCC, 0x87, 0xF6, 0x47, 0xCC, 0xA7, 0xF6, 0x67, 0xCC, 0xA7, 0xF6, 0x48, 0xCC, 0x82, 0xF6, 0x68, 0xCC, 0x82, 0xF6, 0x49, 0xCC, 0x83, 0xF6, 0x69, 0xCC, 0x83, 0xF6, 0x49, 0xCC, 0x84, 0xF6, 0x69, 0xCC, 0x84, 0xF6, 0x49, 0xCC, 0x86, 0xF6, 0x69, 0xCC, 0x86, 0xF6, 0x49, 0xCC, 0xA8, 0xF6, 0x69, 0xCC, 0xA8, 0xF6, 0x49, 0xCC, 0x87, 0x49, 0x4A, 0x69, 0x6A, 0xF6, 0x4A, 0xCC, 0x82, 0xF6, 0x6A, 0xCC, 0x82, 0xF6, 0x4B, 0xCC, 0xA7, 0xF6, 0x6B, 0xCC, 0xA7, 0xF6, 0x4C, 0xCC, 0x81, 0xF6, 0x6C, 0xCC, 0x81, 0xF6, 0x4C, 0xCC, 0xA7, 0xF6, 0x6C, 0xCC, 0xA7, 0xF6, 0x4C, 0xCC, 0x8C, 0xF6, 0x6C, 0xCC, 0x8C, 0x4C, 0xC2, 0xB7, 0x6C, 0xC2, 0xB7, 0xF6, 0x4E, 0xCC, 0x81, 0xF6, 0x6E, 0xCC, 0x81, 0xF6, 0x4E, 0xCC, 0xA7, 0xF6, 0x6E, 0xCC, 0xA7, 0xF6, 0x4E, 0xCC, 0x8C, 0xF6, 0x6E, 0xCC, 0x8C, 0xCA, 0xBC, 0x6E, 0xF6, 0x4F, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x84, 0xF6, 0x4F, 0xCC, 0x86, 0xF6, 0x6F, 0xCC, 0x86, 0xF6, 0x4F, 0xCC, 0x8B, 0xF6, 0x6F, 0xCC, 0x8B, 0xF6, 0x52, 0xCC, 0x81, 0xF6, 0x72, 0xCC, 0x81, 0xF6, 0x52, 0xCC, 0xA7, 0xF6, 0x72, 0xCC, 0xA7, 0xF6, 0x52, 0xCC, 0x8C, 0xF6, 0x72, 0xCC, 0x8C, 0xF6, 0x53, 0xCC, 0x81, 0xF6, 0x73, 0xCC, 0x81, 0xF6, 0x53, 0xCC, 0x82, 0xF6, 0x73, 0xCC, 0x82, 0xF6, 0x53, 0xCC, 0xA7, 0xF6, 0x73, 0xCC, 0xA7, 0xF6, 0x53, 0xCC, 0x8C, 0xF6, 0x73, 0xCC, 0x8C, 0xF6, 0x54, 0xCC, 0xA7, 0xF6, 0x74, 0xCC, 0xA7, 0xF6, 0x54, 0xCC, 0x8C, 0xF6, 0x74, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, 0x83, 0xF6, 0x75, 0xCC, 0x83, 0xF6, 0x55, 0xCC, 0x84, 0xF6, 0x75, 0xCC, 0x84, 0xF6, 0x55, 0xCC, 0x86, 0xF6, 0x75, 0xCC, 0x86, 0xF6, 0x55, 0xCC, 0x8A, 0xF6, 0x75, 0xCC, 0x8A, 0xF6, 0x55, 0xCC, 0x8B, 0xF6, 0x75, 0xCC, 0x8B, 0xF6, 0x55, 0xCC, 0xA8, 0xF6, 0x75, 0xCC, 0xA8, 0xF6, 0x57, 0xCC, 0x82, 0xF6, 0x77, 0xCC, 0x82, 0xF6, 0x59, 0xCC, 0x82, 0xF6, 0x79, 0xCC, 0x82, 0xF6, 0x59, 0xCC, 0x88, 0xF6, 0x5A, 0xCC, 0x81, 0xF6, 0x7A, 0xCC, 0x81, 0xF6, 0x5A, 0xCC, 0x87, 0xF6, 0x7A, 0xCC, 0x87, 0xF6, 0x5A, 0xCC, 0x8C, 0xF6, 0x7A, 0xCC, 0x8C, 0x73, 0xF6, 0x4F, 0xCC, 0x9B, 0xF6, 0x6F, 0xCC, 0x9B, 0xF6, 0x55, 0xCC, 0x9B, 0xF6, 0x75, 0xCC, 0x9B, 0x44, 0x5A, 0xCC, 0x8C, 0x44, 0x7A, 0xCC, 0x8C, 0x64, 0x7A, 0xCC, 0x8C, 0x4C, 0x4A, 0x4C, 0x6A, 0x6C, 0x6A, 0x4E, 0x4A, 0x4E, 0x6A, 0x6E, 0x6A, 0xF6, 0x41, 0xCC, 0x8C, 0xF6, 0x61, 0xCC, 0x8C, 0xF6, 0x49, 0xCC, 0x8C, 0xF6, 0x69, 0xCC, 0x8C, 0xF6, 0x4F, 0xCC, 0x8C, 0xF6, 0x6F, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, 0x8C, 0xF6, 0x75, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x75, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x8C, 0xF6, 0x75, 0xCC, 0x88, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0xC3, 0x86, 0xCC, 0x84, 0xF6, 0xC3, 0xA6, 0xCC, 0x84, 0xF6, 0x47, 0xCC, 0x8C, 0xF6, 0x67, 0xCC, 0x8C, 0xF6, 0x4B, 0xCC, 0x8C, 0xF6, 0x6B, 0xCC, 0x8C, 0xF6, 0x4F, 0xCC, 0xA8, 0xF6, 0x6F, 0xCC, 0xA8, 0xF6, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xF6, 0xC6, 0xB7, 0xCC, 0x8C, 0xF6, 0xCA, 0x92, 0xCC, 0x8C, 0xF6, 0x6A, 0xCC, 0x8C, 0x44, 0x5A, 0x44, 0x7A, 0x64, 0x7A, 0xF6, 0x47, 0xCC, 0x81, 0xF6, 0x67, 0xCC, 0x81, 0xF6, 0x4E, 0xCC, 0x80, 0xF6, 0x6E, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x8A, 0xCC, 0x81, 0xF6, 0xC3, 0x86, 0xCC, 0x81, 0xF6, 0xC3, 0xA6, 0xCC, 0x81, 0xF6, 0xC3, 0x98, 0xCC, 0x81, 0xF6, 0xC3, 0xB8, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x8F, 0xF6, 0x61, 0xCC, 0x8F, 0xF6, 0x41, 0xCC, 0x91, 0xF6, 0x61, 0xCC, 0x91, 0xF6, 0x45, 0xCC, 0x8F, 0xF6, 0x65, 0xCC, 0x8F, 0xF6, 0x45, 0xCC, 0x91, 0xF6, 0x65, 0xCC, 0x91, 0xF6, 0x49, 0xCC, 0x8F, 0xF6, 0x69, 0xCC, 0x8F, 0xF6, 0x49, 0xCC, 0x91, 0xF6, 0x69, 0xCC, 0x91, 0xF6, 0x4F, 0xCC, 0x8F, 0xF6, 0x6F, 0xCC, 0x8F, 0xF6, 0x4F, 0xCC, 0x91, 0xF6, 0x6F, 0xCC, 0x91, 0xF6, 0x52, 0xCC, 0x8F, 0xF6, 0x72, 0xCC, 0x8F, 0xF6, 0x52, 0xCC, 0x91, 0xF6, 0x72, 0xCC, 0x91, 0xF6, 0x55, 0xCC, 0x8F, 0xF6, 0x75, 0xCC, 0x8F, 0xF6, 0x55, 0xCC, 0x91, 0xF6, 0x75, 0xCC, 0x91, 0xF6, 0x53, 0xCC, 0xA6, 0xF6, 0x73, 0xCC, 0xA6, 0xF6, 0x54, 0xCC, 0xA6, 0xF6, 0x74, 0xCC, 0xA6, 0xF6, 0x48, 0xCC, 0x8C, 0xF6, 0x68, 0xCC, 0x8C, 0xF6, 0x41, 0xCC, 0x87, 0xF6, 0x61, 0xCC, 0x87, 0xF6, 0x45, 0xCC, 0xA7, 0xF6, 0x65, 0xCC, 0xA7, 0xF6, 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x84, 0xF6, 0x4F, 0xCC, 0x87, 0xF6, 0x6F, 0xCC, 0x87, 0xF6, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0x59, 0xCC, 0x84, 0xF6, 0x79, 0xCC, 0x84, 0x68, 0xC9, 0xA6, 0x6A, 0x72, 0xC9, 0xB9, 0xC9, 0xBB, 0xCA, 0x81, 0x77, 0x79, 0x20, 0xCC, 0x86, 0x20, 0xCC, 0x87, 0x20, 0xCC, 0x8A, 0x20, 0xCC, 0xA8, 0x20, 0xCC, 0x83, 0x20, 0xCC, 0x8B, 0xC9, 0xA3, 0x6C, 0x73, 0x78, 0xCA, 0x95, 0xF6, 0xCC, 0x80, 0xF6, 0xCC, 0x81, 0xF6, 0xCC, 0x93, 0xF6, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCA, 0xB9, 0x20, 0xCD, 0x85, 0xF6, 0x3B, 0x20, 0xCC, 0x81, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x81, 0x20, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, 0x81, 0xF6, 0xC2, 0xB7, 0xF6, 0xCE, 0x95, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x81, 0xF6, 0xCE, 0xA5, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x88, 0xF6, 0xCE, 0xA5, 0xCC, 0x88, 0xF6, 0xCE, 0xB1, 0xCC, 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xF6, 0xCE, 0xBF, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xCE, 0xB2, 0xCE, 0xB8, 0xCE, 0xA5, 0xF5, 0x05, 0xCF, 0x92, 0xCC, 0x81, 0xCE, 0xA5, 0xCC, 0x81, 0xF5, 0x05, 0xCF, 0x92, 0xCC, 0x88, 0xCE, 0xA5, 0xCC, 0x88, 0xCF, 0x86, 0xCF, 0x80, 0xCE, 0xBA, 0xCF, 0x81, 0xCF, 0x82, 0xCE, 0x98, 0xCE, 0xB5, 0xF6, 0xD0, 0x95, 0xCC, 0x80, 0xF6, 0xD0, 0x95, 0xCC, 0x88, 0xF6, 0xD0, 0x93, 0xCC, 0x81, 0xF6, 0xD0, 0x86, 0xCC, 0x88, 0xF6, 0xD0, 0x9A, 0xCC, 0x81, 0xF6, 0xD0, 0x98, 0xCC, 0x80, 0xF6, 0xD0, 0xA3, 0xCC, 0x86, 0xF6, 0xD0, 0x98, 0xCC, 0x86, 0xF6, 0xD0, 0xB8, 0xCC, 0x86, 0xF6, 0xD0, 0xB5, 0xCC, 0x80, 0xF6, 0xD0, 0xB5, 0xCC, 0x88, 0xF6, 0xD0, 0xB3, 0xCC, 0x81, 0xF6, 0xD1, 0x96, 0xCC, 0x88, 0xF6, 0xD0, 0xBA, 0xCC, 0x81, 0xF6, 0xD0, 0xB8, 0xCC, 0x80, 0xF6, 0xD1, 0x83, 0xCC, 0x86, 0xF6, 0xD1, 0xB4, 0xCC, 0x8F, 0xF6, 0xD1, 0xB5, 0xCC, 0x8F, 0xF6, 0xD0, 0x96, 0xCC, 0x86, 0xF6, 0xD0, 0xB6, 0xCC, 0x86, 0xF6, 0xD0, 0x90, 0xCC, 0x86, 0xF6, 0xD0, 0xB0, 0xCC, 0x86, 0xF6, 0xD0, 0x90, 0xCC, 0x88, 0xF6, 0xD0, 0xB0, 0xCC, 0x88, 0xF6, 0xD0, 0x95, 0xCC, 0x86, 0xF6, 0xD0, 0xB5, 0xCC, 0x86, 0xF6, 0xD3, 0x98, 0xCC, 0x88, 0xF6, 0xD3, 0x99, 0xCC, 0x88, 0xF6, 0xD0, 0x96, 0xCC, 0x88, 0xF6, 0xD0, 0xB6, 0xCC, 0x88, 0xF6, 0xD0, 0x97, 0xCC, 0x88, 0xF6, 0xD0, 0xB7, 0xCC, 0x88, 0xF6, 0xD0, 0x98, 0xCC, 0x84, 0xF6, 0xD0, 0xB8, 0xCC, 0x84, 0xF6, 0xD0, 0x98, 0xCC, 0x88, 0xF6, 0xD0, 0xB8, 0xCC, 0x88, 0xF6, 0xD0, 0x9E, 0xCC, 0x88, 0xF6, 0xD0, 0xBE, 0xCC, 0x88, 0xF6, 0xD3, 0xA8, 0xCC, 0x88, 0xF6, 0xD3, 0xA9, 0xCC, 0x88, 0xF6, 0xD0, 0xAD, 0xCC, 0x88, 0xF6, 0xD1, 0x8D, 0xCC, 0x88, 0xF6, 0xD0, 0xA3, 0xCC, 0x84, 0xF6, 0xD1, 0x83, 0xCC, 0x84, 0xF6, 0xD0, 0xA3, 0xCC, 0x88, 0xF6, 0xD1, 0x83, 0xCC, 0x88, 0xF6, 0xD0, 0xA3, 0xCC, 0x8B, 0xF6, 0xD1, 0x83, 0xCC, 0x8B, 0xF6, 0xD0, 0xA7, 0xCC, 0x88, 0xF6, 0xD1, 0x87, 0xCC, 0x88, 0xF6, 0xD0, 0xAB, 0xCC, 0x88, 0xF6, 0xD1, 0x8B, 0xCC, 0x88, 0xD5, 0xA5, 0xD6, 0x82, 0xF6, 0xD8, 0xA7, 0xD9, 0x93, 0xF6, 0xD8, 0xA7, 0xD9, 0x94, 0xF6, 0xD9, 0x88, 0xD9, 0x94, 0xF6, 0xD8, 0xA7, 0xD9, 0x95, 0xF6, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0xB4, 0xD9, 0x88, 0xD9, 0xB4, 0xDB, 0x87, 0xD9, 0xB4, 0xD9, 0x8A, 0xD9, 0xB4, 0xF6, 0xDB, 0x95, 0xD9, 0x94, 0xF6, 0xDB, 0x81, 0xD9, 0x94, 0xF6, 0xDB, 0x92, 0xD9, 0x94, 0xF6, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x96, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x9C, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xA1, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xA2, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xAB, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0xF6, 0xE0, 0xA7, 0x87, 0xE0, 0xA7, 0x97, 0xF6, 0xE0, 0xA6, 0xA1, 0xE0, 0xA6, 0xBC, 0xF6, 0xE0, 0xA6, 0xA2, 0xE0, 0xA6, 0xBC, 0xF6, 0xE0, 0xA6, 0xAF, 0xE0, 0xA6, 0xBC, 0xF6, 0xE0, 0xA8, 0xB2, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0xB8, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0x96, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0x97, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0x9C, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0xAB, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x96, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x97, 0xF6, 0xE0, 0xAC, 0xA1, 0xE0, 0xAC, 0xBC, 0xF6, 0xE0, 0xAC, 0xA2, 0xE0, 0xAC, 0xBC, 0xF6, 0xE0, 0xAE, 0x92, 0xE0, 0xAF, 0x97, 0xF6, 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0xF6, 0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0xF6, 0xE0, 0xAF, 0x86, 0xE0, 0xAF, 0x97, 0xF6, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0xF6, 0xE0, 0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x95, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x96, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3, 0x95, 0xF6, 0xE0, 0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0xF6, 0xE0, 0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0xF6, 0xE0, 0xB5, 0x86, 0xE0, 0xB5, 0x97, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, 0xE0, 0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0xE0, 0xBC, 0x8B, 0xF6, 0xE0, 0xBD, 0x82, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x8C, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x80, 0xE0, 0xBE, 0xB5, 0xF6, 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB2, 0xF6, 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xF6, 0xE0, 0xBE, 0xB2, 0xE0, 0xBE, 0x80, 0xE0, 0xBE, 0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBE, 0xB3, 0xE0, 0xBE, 0x80, 0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0x9C, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xA1, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xA6, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0xF6, 0xE1, 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0xF6, 0x41, 0xCC, 0xA5, 0xF6, 0x61, 0xCC, 0xA5, 0xF6, 0x42, 0xCC, 0x87, 0xF6, 0x62, 0xCC, 0x87, 0xF6, 0x42, 0xCC, 0xA3, 0xF6, 0x62, 0xCC, 0xA3, 0xF6, 0x42, 0xCC, 0xB1, 0xF6, 0x62, 0xCC, 0xB1, 0xF6, 0x43, 0xCC, 0xA7, 0xCC, 0x81, 0xF6, 0x63, 0xCC, 0xA7, 0xCC, 0x81, 0xF6, 0x44, 0xCC, 0x87, 0xF6, 0x64, 0xCC, 0x87, 0xF6, 0x44, 0xCC, 0xA3, 0xF6, 0x64, 0xCC, 0xA3, 0xF6, 0x44, 0xCC, 0xB1, 0xF6, 0x64, 0xCC, 0xB1, 0xF6, 0x44, 0xCC, 0xA7, 0xF6, 0x64, 0xCC, 0xA7, 0xF6, 0x44, 0xCC, 0xAD, 0xF6, 0x64, 0xCC, 0xAD, 0xF6, 0x45, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x65, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x45, 0xCC, 0xAD, 0xF6, 0x65, 0xCC, 0xAD, 0xF6, 0x45, 0xCC, 0xB0, 0xF6, 0x65, 0xCC, 0xB0, 0xF6, 0x45, 0xCC, 0xA7, 0xCC, 0x86, 0xF6, 0x65, 0xCC, 0xA7, 0xCC, 0x86, 0xF6, 0x46, 0xCC, 0x87, 0xF6, 0x66, 0xCC, 0x87, 0xF6, 0x47, 0xCC, 0x84, 0xF6, 0x67, 0xCC, 0x84, 0xF6, 0x48, 0xCC, 0x87, 0xF6, 0x68, 0xCC, 0x87, 0xF6, 0x48, 0xCC, 0xA3, 0xF6, 0x68, 0xCC, 0xA3, 0xF6, 0x48, 0xCC, 0x88, 0xF6, 0x68, 0xCC, 0x88, 0xF6, 0x48, 0xCC, 0xA7, 0xF6, 0x68, 0xCC, 0xA7, 0xF6, 0x48, 0xCC, 0xAE, 0xF6, 0x68, 0xCC, 0xAE, 0xF6, 0x49, 0xCC, 0xB0, 0xF6, 0x69, 0xCC, 0xB0, 0xF6, 0x49, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x69, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x4B, 0xCC, 0x81, 0xF6, 0x6B, 0xCC, 0x81, 0xF6, 0x4B, 0xCC, 0xA3, 0xF6, 0x6B, 0xCC, 0xA3, 0xF6, 0x4B, 0xCC, 0xB1, 0xF6, 0x6B, 0xCC, 0xB1, 0xF6, 0x4C, 0xCC, 0xA3, 0xF6, 0x6C, 0xCC, 0xA3, 0xF6, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x4C, 0xCC, 0xB1, 0xF6, 0x6C, 0xCC, 0xB1, 0xF6, 0x4C, 0xCC, 0xAD, 0xF6, 0x6C, 0xCC, 0xAD, 0xF6, 0x4D, 0xCC, 0x81, 0xF6, 0x6D, 0xCC, 0x81, 0xF6, 0x4D, 0xCC, 0x87, 0xF6, 0x6D, 0xCC, 0x87, 0xF6, 0x4D, 0xCC, 0xA3, 0xF6, 0x6D, 0xCC, 0xA3, 0xF6, 0x4E, 0xCC, 0x87, 0xF6, 0x6E, 0xCC, 0x87, 0xF6, 0x4E, 0xCC, 0xA3, 0xF6, 0x6E, 0xCC, 0xA3, 0xF6, 0x4E, 0xCC, 0xB1, 0xF6, 0x6E, 0xCC, 0xB1, 0xF6, 0x4E, 0xCC, 0xAD, 0xF6, 0x6E, 0xCC, 0xAD, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, 0x88, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xF6, 0x4F, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x50, 0xCC, 0x81, 0xF6, 0x70, 0xCC, 0x81, 0xF6, 0x50, 0xCC, 0x87, 0xF6, 0x70, 0xCC, 0x87, 0xF6, 0x52, 0xCC, 0x87, 0xF6, 0x72, 0xCC, 0x87, 0xF6, 0x52, 0xCC, 0xA3, 0xF6, 0x72, 0xCC, 0xA3, 0xF6, 0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x72, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x52, 0xCC, 0xB1, 0xF6, 0x72, 0xCC, 0xB1, 0xF6, 0x53, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0x87, 0xF6, 0x53, 0xCC, 0xA3, 0xF6, 0x73, 0xCC, 0xA3, 0xF6, 0x53, 0xCC, 0x81, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0x81, 0xCC, 0x87, 0xF6, 0x53, 0xCC, 0x8C, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0x8C, 0xCC, 0x87, 0xF6, 0x53, 0xCC, 0xA3, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0xA3, 0xCC, 0x87, 0xF6, 0x54, 0xCC, 0x87, 0xF6, 0x74, 0xCC, 0x87, 0xF6, 0x54, 0xCC, 0xA3, 0xF6, 0x74, 0xCC, 0xA3, 0xF6, 0x54, 0xCC, 0xB1, 0xF6, 0x74, 0xCC, 0xB1, 0xF6, 0x54, 0xCC, 0xAD, 0xF6, 0x74, 0xCC, 0xAD, 0xF6, 0x55, 0xCC, 0xA4, 0xF6, 0x75, 0xCC, 0xA4, 0xF6, 0x55, 0xCC, 0xB0, 0xF6, 0x75, 0xCC, 0xB0, 0xF6, 0x55, 0xCC, 0xAD, 0xF6, 0x75, 0xCC, 0xAD, 0xF6, 0x55, 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xF6, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xF6, 0x56, 0xCC, 0x83, 0xF6, 0x76, 0xCC, 0x83, 0xF6, 0x56, 0xCC, 0xA3, 0xF6, 0x76, 0xCC, 0xA3, 0xF6, 0x57, 0xCC, 0x80, 0xF6, 0x77, 0xCC, 0x80, 0xF6, 0x57, 0xCC, 0x81, 0xF6, 0x77, 0xCC, 0x81, 0xF6, 0x57, 0xCC, 0x88, 0xF6, 0x77, 0xCC, 0x88, 0xF6, 0x57, 0xCC, 0x87, 0xF6, 0x77, 0xCC, 0x87, 0xF6, 0x57, 0xCC, 0xA3, 0xF6, 0x77, 0xCC, 0xA3, 0xF6, 0x58, 0xCC, 0x87, 0xF6, 0x78, 0xCC, 0x87, 0xF6, 0x58, 0xCC, 0x88, 0xF6, 0x78, 0xCC, 0x88, 0xF6, 0x59, 0xCC, 0x87, 0xF6, 0x79, 0xCC, 0x87, 0xF6, 0x5A, 0xCC, 0x82, 0xF6, 0x7A, 0xCC, 0x82, 0xF6, 0x5A, 0xCC, 0xA3, 0xF6, 0x7A, 0xCC, 0xA3, 0xF6, 0x5A, 0xCC, 0xB1, 0xF6, 0x7A, 0xCC, 0xB1, 0xF6, 0x68, 0xCC, 0xB1, 0xF6, 0x74, 0xCC, 0x88, 0xF6, 0x77, 0xCC, 0x8A, 0xF6, 0x79, 0xCC, 0x8A, 0x61, 0xCA, 0xBE, 0xF5, 0x05, 0xC5, 0xBF, 0xCC, 0x87, 0x73, 0xCC, 0x87, 0xF6, 0x41, 0xCC, 0xA3, 0xF6, 0x61, 0xCC, 0xA3, 0xF6, 0x41, 0xCC, 0x89, 0xF6, 0x61, 0xCC, 0x89, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x61, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x80, 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x89, 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0xA3, 0xCC, 0x86, 0xF6, 0x61, 0xCC, 0xA3, 0xCC, 0x86, 0xF6, 0x45, 0xCC, 0xA3, 0xF6, 0x65, 0xCC, 0xA3, 0xF6, 0x45, 0xCC, 0x89, 0xF6, 0x65, 0xCC, 0x89, 0xF6, 0x45, 0xCC, 0x83, 0xF6, 0x65, 0xCC, 0x83, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x45, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x65, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x49, 0xCC, 0x89, 0xF6, 0x69, 0xCC, 0x89, 0xF6, 0x49, 0xCC, 0xA3, 0xF6, 0x69, 0xCC, 0xA3, 0xF6, 0x4F, 0xCC, 0xA3, 0xF6, 0x6F, 0xCC, 0xA3, 0xF6, 0x4F, 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x89, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x55, 0xCC, 0xA3, 0xF6, 0x75, 0xCC, 0xA3, 0xF6, 0x55, 0xCC, 0x89, 0xF6, 0x75, 0xCC, 0x89, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x59, 0xCC, 0x80, 0xF6, 0x79, 0xCC, 0x80, 0xF6, 0x59, 0xCC, 0xA3, 0xF6, 0x79, 0xCC, 0xA3, 0xF6, 0x59, 0xCC, 0x89, 0xF6, 0x79, 0xCC, 0x89, 0xF6, 0x59, 0xCC, 0x83, 0xF6, 0x79, 0xCC, 0x83, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xF6, 0xCE, 0x95, 0xCC, 0x94, 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xBF, 0xCC, 0x93, 0xF6, 0xCE, 0xBF, 0xCC, 0x94, 0xF6, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x93, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xF6, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xB1, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x80, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x81, 0xF6, 0xCE, 0xBF, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x80, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x86, 0xF6, 0xCE, 0xB1, 0xCC, 0x84, 0xF6, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCD, 0x82, 0xF6, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x86, 0xF6, 0xCE, 0x91, 0xCC, 0x84, 0xF6, 0xCE, 0x91, 0xCC, 0x80, 0xF6, 0xCE, 0x91, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCD, 0x85, 0x20, 0xCC, 0x93, 0xF6, 0xCE, 0xB9, 0x20, 0xCC, 0x93, 0x20, 0xCD, 0x82, 0xF5, 0x05, 0xC2, 0xA8, 0xCD, 0x82, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCD, 0x82, 0xF6, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x95, 0xCC, 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCD, 0x85, 0xF5, 0x06, 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xF5, 0x06, 0xE1, 0xBE, 0xBF, 0xCC, 0x81, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBE, 0xBF, 0xCD, 0x82, 0x20, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x86, 0xF6, 0xCE, 0xB9, 0xCC, 0x84, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, 0x99, 0xCC, 0x86, 0xF6, 0xCE, 0x99, 0xCC, 0x84, 0xF6, 0xCE, 0x99, 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, 0xCC, 0x80, 0x20, 0xCC, 0x94, 0xCC, 0x80, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, 0xCC, 0x81, 0x20, 0xCC, 0x94, 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, 0x20, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCF, 0x85, 0xCC, 0x86, 0xF6, 0xCF, 0x85, 0xCC, 0x84, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCF, 0x81, 0xCC, 0x93, 0xF6, 0xCF, 0x81, 0xCC, 0x94, 0xF6, 0xCF, 0x85, 0xCD, 0x82, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, 0xA5, 0xCC, 0x86, 0xF6, 0xCE, 0xA5, 0xCC, 0x84, 0xF6, 0xCE, 0xA5, 0xCC, 0x80, 0xF6, 0xCE, 0xA5, 0xCC, 0x81, 0xF6, 0xCE, 0xA1, 0xCC, 0x94, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x80, 0x20, 0xCC, 0x88, 0xCC, 0x80, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x81, 0x20, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x60, 0xF6, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCD, 0x82, 0xF6, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x9F, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCD, 0x85, 0xF5, 0x03, 0xC2, 0xB4, 0x20, 0xCC, 0x81, 0x20, 0xCC, 0x94, 0xF5, 0x04, 0xE2, 0x80, 0x82, 0x20, 0xF5, 0x04, 0xE2, 0x80, 0x83, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xE2, 0x80, 0x90, 0x20, 0xCC, 0xB3, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x20, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x21, 0x21, 0x20, 0xCC, 0x85, 0x3F, 0x3F, 0x3F, 0x21, 0x21, 0x3F, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x20, 0x30, 0x69, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0xE2, 0x88, 0x92, 0x3D, 0x28, 0x29, 0x6E, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0xE2, 0x88, 0x92, 0x3D, 0x28, 0x29, 0x52, 0x73, 0x61, 0x2F, 0x63, 0x61, 0x2F, 0x73, 0x43, 0xC2, 0xB0, 0x43, 0x63, 0x2F, 0x6F, 0x63, 0x2F, 0x75, 0xC6, 0x90, 0xC2, 0xB0, 0x46, 0x67, 0x48, 0x48, 0x48, 0x68, 0xC4, 0xA7, 0x49, 0x49, 0x4C, 0x6C, 0x4E, 0x4E, 0x6F, 0x50, 0x51, 0x52, 0x52, 0x52, 0x53, 0x4D, 0x54, 0x45, 0x4C, 0x54, 0x4D, 0x5A, 0xF6, 0xCE, 0xA9, 0x5A, 0xF6, 0x4B, 0xF6, 0x41, 0xCC, 0x8A, 0x42, 0x43, 0x65, 0x45, 0x46, 0x4D, 0x6F, 0xD7, 0x90, 0xD7, 0x91, 0xD7, 0x92, 0xD7, 0x93, 0x69, 0xCE, 0xB3, 0xCE, 0x93, 0xCE, 0xA0, 0xE2, 0x88, 0x91, 0x44, 0x64, 0x65, 0x69, 0x6A, 0x31, 0xE2, 0x81, 0x84, 0x33, 0x32, 0xE2, 0x81, 0x84, 0x33, 0x31, 0xE2, 0x81, 0x84, 0x35, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x34, 0xE2, 0x81, 0x84, 0x35, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x35, 0xE2, 0x81, 0x84, 0x36, 0x31, 0xE2, 0x81, 0x84, 0x38, 0x33, 0xE2, 0x81, 0x84, 0x38, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x37, 0xE2, 0x81, 0x84, 0x38, 0x31, 0xE2, 0x81, 0x84, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x56, 0x56, 0x56, 0x49, 0x56, 0x49, 0x49, 0x56, 0x49, 0x49, 0x49, 0x49, 0x58, 0x58, 0x58, 0x49, 0x58, 0x49, 0x49, 0x4C, 0x43, 0x44, 0x4D, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x76, 0x76, 0x76, 0x69, 0x76, 0x69, 0x69, 0x76, 0x69, 0x69, 0x69, 0x69, 0x78, 0x78, 0x78, 0x69, 0x78, 0x69, 0x69, 0x6C, 0x63, 0x64, 0x6D, 0xF6, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0xF6, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, 0x86, 0x94, 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x90, 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x94, 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xF6, 0xE2, 0x88, 0xBC, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x85, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x88, 0xCC, 0xB8, 0xF6, 0x3D, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0xF6, 0x3C, 0xCC, 0xB8, 0xF6, 0x3E, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB2, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB3, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB6, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB7, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x82, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x86, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x87, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA9, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xAB, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB2, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0xF6, 0xE3, 0x80, 0x88, 0xF6, 0xE3, 0x80, 0x89, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x28, 0x31, 0x29, 0x28, 0x32, 0x29, 0x28, 0x33, 0x29, 0x28, 0x34, 0x29, 0x28, 0x35, 0x29, 0x28, 0x36, 0x29, 0x28, 0x37, 0x29, 0x28, 0x38, 0x29, 0x28, 0x39, 0x29, 0x28, 0x31, 0x30, 0x29, 0x28, 0x31, 0x31, 0x29, 0x28, 0x31, 0x32, 0x29, 0x28, 0x31, 0x33, 0x29, 0x28, 0x31, 0x34, 0x29, 0x28, 0x31, 0x35, 0x29, 0x28, 0x31, 0x36, 0x29, 0x28, 0x31, 0x37, 0x29, 0x28, 0x31, 0x38, 0x29, 0x28, 0x31, 0x39, 0x29, 0x28, 0x32, 0x30, 0x29, 0x31, 0x2E, 0x32, 0x2E, 0x33, 0x2E, 0x34, 0x2E, 0x35, 0x2E, 0x36, 0x2E, 0x37, 0x2E, 0x38, 0x2E, 0x39, 0x2E, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x2E, 0x28, 0x61, 0x29, 0x28, 0x62, 0x29, 0x28, 0x63, 0x29, 0x28, 0x64, 0x29, 0x28, 0x65, 0x29, 0x28, 0x66, 0x29, 0x28, 0x67, 0x29, 0x28, 0x68, 0x29, 0x28, 0x69, 0x29, 0x28, 0x6A, 0x29, 0x28, 0x6B, 0x29, 0x28, 0x6C, 0x29, 0x28, 0x6D, 0x29, 0x28, 0x6E, 0x29, 0x28, 0x6F, 0x29, 0x28, 0x70, 0x29, 0x28, 0x71, 0x29, 0x28, 0x72, 0x29, 0x28, 0x73, 0x29, 0x28, 0x74, 0x29, 0x28, 0x75, 0x29, 0x28, 0x76, 0x29, 0x28, 0x77, 0x29, 0x28, 0x78, 0x29, 0x28, 0x79, 0x29, 0x28, 0x7A, 0x29, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x30, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x3A, 0x3A, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0xF6, 0xE2, 0xAB, 0x9D, 0xCC, 0xB8, 0xE6, 0xAF, 0x8D, 0xE9, 0xBE, 0x9F, 0xE4, 0xB8, 0x80, 0xE4, 0xB8, 0xA8, 0xE4, 0xB8, 0xB6, 0xE4, 0xB8, 0xBF, 0xE4, 0xB9, 0x99, 0xE4, 0xBA, 0x85, 0xE4, 0xBA, 0x8C, 0xE4, 0xBA, 0xA0, 0xE4, 0xBA, 0xBA, 0xE5, 0x84, 0xBF, 0xE5, 0x85, 0xA5, 0xE5, 0x85, 0xAB, 0xE5, 0x86, 0x82, 0xE5, 0x86, 0x96, 0xE5, 0x86, 0xAB, 0xE5, 0x87, 0xA0, 0xE5, 0x87, 0xB5, 0xE5, 0x88, 0x80, 0xE5, 0x8A, 0x9B, 0xE5, 0x8B, 0xB9, 0xE5, 0x8C, 0x95, 0xE5, 0x8C, 0x9A, 0xE5, 0x8C, 0xB8, 0xE5, 0x8D, 0x81, 0xE5, 0x8D, 0x9C, 0xE5, 0x8D, 0xA9, 0xE5, 0x8E, 0x82, 0xE5, 0x8E, 0xB6, 0xE5, 0x8F, 0x88, 0xE5, 0x8F, 0xA3, 0xE5, 0x9B, 0x97, 0xE5, 0x9C, 0x9F, 0xE5, 0xA3, 0xAB, 0xE5, 0xA4, 0x82, 0xE5, 0xA4, 0x8A, 0xE5, 0xA4, 0x95, 0xE5, 0xA4, 0xA7, 0xE5, 0xA5, 0xB3, 0xE5, 0xAD, 0x90, 0xE5, 0xAE, 0x80, 0xE5, 0xAF, 0xB8, 0xE5, 0xB0, 0x8F, 0xE5, 0xB0, 0xA2, 0xE5, 0xB0, 0xB8, 0xE5, 0xB1, 0xAE, 0xE5, 0xB1, 0xB1, 0xE5, 0xB7, 0x9B, 0xE5, 0xB7, 0xA5, 0xE5, 0xB7, 0xB1, 0xE5, 0xB7, 0xBE, 0xE5, 0xB9, 0xB2, 0xE5, 0xB9, 0xBA, 0xE5, 0xB9, 0xBF, 0xE5, 0xBB, 0xB4, 0xE5, 0xBB, 0xBE, 0xE5, 0xBC, 0x8B, 0xE5, 0xBC, 0x93, 0xE5, 0xBD, 0x90, 0xE5, 0xBD, 0xA1, 0xE5, 0xBD, 0xB3, 0xE5, 0xBF, 0x83, 0xE6, 0x88, 0x88, 0xE6, 0x88, 0xB6, 0xE6, 0x89, 0x8B, 0xE6, 0x94, 0xAF, 0xE6, 0x94, 0xB4, 0xE6, 0x96, 0x87, 0xE6, 0x96, 0x97, 0xE6, 0x96, 0xA4, 0xE6, 0x96, 0xB9, 0xE6, 0x97, 0xA0, 0xE6, 0x97, 0xA5, 0xE6, 0x9B, 0xB0, 0xE6, 0x9C, 0x88, 0xE6, 0x9C, 0xA8, 0xE6, 0xAC, 0xA0, 0xE6, 0xAD, 0xA2, 0xE6, 0xAD, 0xB9, 0xE6, 0xAE, 0xB3, 0xE6, 0xAF, 0x8B, 0xE6, 0xAF, 0x94, 0xE6, 0xAF, 0x9B, 0xE6, 0xB0, 0x8F, 0xE6, 0xB0, 0x94, 0xE6, 0xB0, 0xB4, 0xE7, 0x81, 0xAB, 0xE7, 0x88, 0xAA, 0xE7, 0x88, 0xB6, 0xE7, 0x88, 0xBB, 0xE7, 0x88, 0xBF, 0xE7, 0x89, 0x87, 0xE7, 0x89, 0x99, 0xE7, 0x89, 0x9B, 0xE7, 0x8A, 0xAC, 0xE7, 0x8E, 0x84, 0xE7, 0x8E, 0x89, 0xE7, 0x93, 0x9C, 0xE7, 0x93, 0xA6, 0xE7, 0x94, 0x98, 0xE7, 0x94, 0x9F, 0xE7, 0x94, 0xA8, 0xE7, 0x94, 0xB0, 0xE7, 0x96, 0x8B, 0xE7, 0x96, 0x92, 0xE7, 0x99, 0xB6, 0xE7, 0x99, 0xBD, 0xE7, 0x9A, 0xAE, 0xE7, 0x9A, 0xBF, 0xE7, 0x9B, 0xAE, 0xE7, 0x9F, 0x9B, 0xE7, 0x9F, 0xA2, 0xE7, 0x9F, 0xB3, 0xE7, 0xA4, 0xBA, 0xE7, 0xA6, 0xB8, 0xE7, 0xA6, 0xBE, 0xE7, 0xA9, 0xB4, 0xE7, 0xAB, 0x8B, 0xE7, 0xAB, 0xB9, 0xE7, 0xB1, 0xB3, 0xE7, 0xB3, 0xB8, 0xE7, 0xBC, 0xB6, 0xE7, 0xBD, 0x91, 0xE7, 0xBE, 0x8A, 0xE7, 0xBE, 0xBD, 0xE8, 0x80, 0x81, 0xE8, 0x80, 0x8C, 0xE8, 0x80, 0x92, 0xE8, 0x80, 0xB3, 0xE8, 0x81, 0xBF, 0xE8, 0x82, 0x89, 0xE8, 0x87, 0xA3, 0xE8, 0x87, 0xAA, 0xE8, 0x87, 0xB3, 0xE8, 0x87, 0xBC, 0xE8, 0x88, 0x8C, 0xE8, 0x88, 0x9B, 0xE8, 0x88, 0x9F, 0xE8, 0x89, 0xAE, 0xE8, 0x89, 0xB2, 0xE8, 0x89, 0xB8, 0xE8, 0x99, 0x8D, 0xE8, 0x99, 0xAB, 0xE8, 0xA1, 0x80, 0xE8, 0xA1, 0x8C, 0xE8, 0xA1, 0xA3, 0xE8, 0xA5, 0xBE, 0xE8, 0xA6, 0x8B, 0xE8, 0xA7, 0x92, 0xE8, 0xA8, 0x80, 0xE8, 0xB0, 0xB7, 0xE8, 0xB1, 0x86, 0xE8, 0xB1, 0x95, 0xE8, 0xB1, 0xB8, 0xE8, 0xB2, 0x9D, 0xE8, 0xB5, 0xA4, 0xE8, 0xB5, 0xB0, 0xE8, 0xB6, 0xB3, 0xE8, 0xBA, 0xAB, 0xE8, 0xBB, 0x8A, 0xE8, 0xBE, 0x9B, 0xE8, 0xBE, 0xB0, 0xE8, 0xBE, 0xB5, 0xE9, 0x82, 0x91, 0xE9, 0x85, 0x89, 0xE9, 0x87, 0x86, 0xE9, 0x87, 0x8C, 0xE9, 0x87, 0x91, 0xE9, 0x95, 0xB7, 0xE9, 0x96, 0x80, 0xE9, 0x98, 0x9C, 0xE9, 0x9A, 0xB6, 0xE9, 0x9A, 0xB9, 0xE9, 0x9B, 0xA8, 0xE9, 0x9D, 0x91, 0xE9, 0x9D, 0x9E, 0xE9, 0x9D, 0xA2, 0xE9, 0x9D, 0xA9, 0xE9, 0x9F, 0x8B, 0xE9, 0x9F, 0xAD, 0xE9, 0x9F, 0xB3, 0xE9, 0xA0, 0x81, 0xE9, 0xA2, 0xA8, 0xE9, 0xA3, 0x9B, 0xE9, 0xA3, 0x9F, 0xE9, 0xA6, 0x96, 0xE9, 0xA6, 0x99, 0xE9, 0xA6, 0xAC, 0xE9, 0xAA, 0xA8, 0xE9, 0xAB, 0x98, 0xE9, 0xAB, 0x9F, 0xE9, 0xAC, 0xA5, 0xE9, 0xAC, 0xAF, 0xE9, 0xAC, 0xB2, 0xE9, 0xAC, 0xBC, 0xE9, 0xAD, 0x9A, 0xE9, 0xB3, 0xA5, 0xE9, 0xB9, 0xB5, 0xE9, 0xB9, 0xBF, 0xE9, 0xBA, 0xA5, 0xE9, 0xBA, 0xBB, 0xE9, 0xBB, 0x83, 0xE9, 0xBB, 0x8D, 0xE9, 0xBB, 0x91, 0xE9, 0xBB, 0xB9, 0xE9, 0xBB, 0xBD, 0xE9, 0xBC, 0x8E, 0xE9, 0xBC, 0x93, 0xE9, 0xBC, 0xA0, 0xE9, 0xBC, 0xBB, 0xE9, 0xBD, 0x8A, 0xE9, 0xBD, 0x92, 0xE9, 0xBE, 0x8D, 0xE9, 0xBE, 0x9C, 0xE9, 0xBE, 0xA0, 0x20, 0xE3, 0x80, 0x92, 0xE5, 0x8D, 0x81, 0xE5, 0x8D, 0x84, 0xE5, 0x8D, 0x85, 0xF6, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x20, 0xE3, 0x82, 0x99, 0x20, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0x88, 0xE3, 0x82, 0x8A, 0xF6, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, 0xE1, 0x84, 0x80, 0xE1, 0x84, 0x81, 0xE1, 0x86, 0xAA, 0xE1, 0x84, 0x82, 0xE1, 0x86, 0xAC, 0xE1, 0x86, 0xAD, 0xE1, 0x84, 0x83, 0xE1, 0x84, 0x84, 0xE1, 0x84, 0x85, 0xE1, 0x86, 0xB0, 0xE1, 0x86, 0xB1, 0xE1, 0x86, 0xB2, 0xE1, 0x86, 0xB3, 0xE1, 0x86, 0xB4, 0xE1, 0x86, 0xB5, 0xE1, 0x84, 0x9A, 0xE1, 0x84, 0x86, 0xE1, 0x84, 0x87, 0xE1, 0x84, 0x88, 0xE1, 0x84, 0xA1, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8A, 0xE1, 0x84, 0x8B, 0xE1, 0x84, 0x8C, 0xE1, 0x84, 0x8D, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x85, 0xA2, 0xE1, 0x85, 0xA3, 0xE1, 0x85, 0xA4, 0xE1, 0x85, 0xA5, 0xE1, 0x85, 0xA6, 0xE1, 0x85, 0xA7, 0xE1, 0x85, 0xA8, 0xE1, 0x85, 0xA9, 0xE1, 0x85, 0xAA, 0xE1, 0x85, 0xAB, 0xE1, 0x85, 0xAC, 0xE1, 0x85, 0xAD, 0xE1, 0x85, 0xAE, 0xE1, 0x85, 0xAF, 0xE1, 0x85, 0xB0, 0xE1, 0x85, 0xB1, 0xE1, 0x85, 0xB2, 0xE1, 0x85, 0xB3, 0xE1, 0x85, 0xB4, 0xE1, 0x85, 0xB5, 0xE1, 0x85, 0xA0, 0xE1, 0x84, 0x94, 0xE1, 0x84, 0x95, 0xE1, 0x87, 0x87, 0xE1, 0x87, 0x88, 0xE1, 0x87, 0x8C, 0xE1, 0x87, 0x8E, 0xE1, 0x87, 0x93, 0xE1, 0x87, 0x97, 0xE1, 0x87, 0x99, 0xE1, 0x84, 0x9C, 0xE1, 0x87, 0x9D, 0xE1, 0x87, 0x9F, 0xE1, 0x84, 0x9D, 0xE1, 0x84, 0x9E, 0xE1, 0x84, 0xA0, 0xE1, 0x84, 0xA2, 0xE1, 0x84, 0xA3, 0xE1, 0x84, 0xA7, 0xE1, 0x84, 0xA9, 0xE1, 0x84, 0xAB, 0xE1, 0x84, 0xAC, 0xE1, 0x84, 0xAD, 0xE1, 0x84, 0xAE, 0xE1, 0x84, 0xAF, 0xE1, 0x84, 0xB2, 0xE1, 0x84, 0xB6, 0xE1, 0x85, 0x80, 0xE1, 0x85, 0x87, 0xE1, 0x85, 0x8C, 0xE1, 0x87, 0xB1, 0xE1, 0x87, 0xB2, 0xE1, 0x85, 0x97, 0xE1, 0x85, 0x98, 0xE1, 0x85, 0x99, 0xE1, 0x86, 0x84, 0xE1, 0x86, 0x85, 0xE1, 0x86, 0x88, 0xE1, 0x86, 0x91, 0xE1, 0x86, 0x92, 0xE1, 0x86, 0x94, 0xE1, 0x86, 0x9E, 0xE1, 0x86, 0xA1, 0xE4, 0xB8, 0x80, 0xE4, 0xBA, 0x8C, 0xE4, 0xB8, 0x89, 0xE5, 0x9B, 0x9B, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0xAD, 0xE4, 0xB8, 0x8B, 0xE7, 0x94, 0xB2, 0xE4, 0xB9, 0x99, 0xE4, 0xB8, 0x99, 0xE4, 0xB8, 0x81, 0xE5, 0xA4, 0xA9, 0xE5, 0x9C, 0xB0, 0xE4, 0xBA, 0xBA, 0x28, 0xE1, 0x84, 0x80, 0x29, 0x28, 0xE1, 0x84, 0x82, 0x29, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x28, 0xE1, 0x84, 0x85, 0x29, 0x28, 0xE1, 0x84, 0x86, 0x29, 0x28, 0xE1, 0x84, 0x87, 0x29, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x28, 0xE1, 0x84, 0x8B, 0x29, 0x28, 0xE1, 0x84, 0x8C, 0x29, 0x28, 0xE1, 0x84, 0x8E, 0x29, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x28, 0xE1, 0x84, 0x90, 0x29, 0x28, 0xE1, 0x84, 0x91, 0x29, 0x28, 0xE1, 0x84, 0x92, 0x29, 0x28, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x28, 0xE4, 0xB8, 0x89, 0x29, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x28, 0xE4, 0xBA, 0x94, 0x29, 0x28, 0xE5, 0x85, 0xAD, 0x29, 0x28, 0xE4, 0xB8, 0x83, 0x29, 0x28, 0xE5, 0x85, 0xAB, 0x29, 0x28, 0xE4, 0xB9, 0x9D, 0x29, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x28, 0xE7, 0x81, 0xAB, 0x29, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x28, 0xE6, 0x9C, 0xA8, 0x29, 0x28, 0xE9, 0x87, 0x91, 0x29, 0x28, 0xE5, 0x9C, 0x9F, 0x29, 0x28, 0xE6, 0x97, 0xA5, 0x29, 0x28, 0xE6, 0xA0, 0xAA, 0x29, 0x28, 0xE6, 0x9C, 0x89, 0x29, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x28, 0xE5, 0x90, 0x8D, 0x29, 0x28, 0xE7, 0x89, 0xB9, 0x29, 0x28, 0xE8, 0xB2, 0xA1, 0x29, 0x28, 0xE7, 0xA5, 0x9D, 0x29, 0x28, 0xE5, 0x8A, 0xB4, 0x29, 0x28, 0xE4, 0xBB, 0xA3, 0x29, 0x28, 0xE5, 0x91, 0xBC, 0x29, 0x28, 0xE5, 0xAD, 0xA6, 0x29, 0x28, 0xE7, 0x9B, 0xA3, 0x29, 0x28, 0xE4, 0xBC, 0x81, 0x29, 0x28, 0xE8, 0xB3, 0x87, 0x29, 0x28, 0xE5, 0x8D, 0x94, 0x29, 0x28, 0xE7, 0xA5, 0xAD, 0x29, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x28, 0xE8, 0x87, 0xAA, 0x29, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, 0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0xE1, 0x84, 0x80, 0xE1, 0x84, 0x82, 0xE1, 0x84, 0x83, 0xE1, 0x84, 0x85, 0xE1, 0x84, 0x86, 0xE1, 0x84, 0x87, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8B, 0xE1, 0x84, 0x8C, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, 0x92, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE4, 0xB8, 0x80, 0xE4, 0xBA, 0x8C, 0xE4, 0xB8, 0x89, 0xE5, 0x9B, 0x9B, 0xE4, 0xBA, 0x94, 0xE5, 0x85, 0xAD, 0xE4, 0xB8, 0x83, 0xE5, 0x85, 0xAB, 0xE4, 0xB9, 0x9D, 0xE5, 0x8D, 0x81, 0xE6, 0x9C, 0x88, 0xE7, 0x81, 0xAB, 0xE6, 0xB0, 0xB4, 0xE6, 0x9C, 0xA8, 0xE9, 0x87, 0x91, 0xE5, 0x9C, 0x9F, 0xE6, 0x97, 0xA5, 0xE6, 0xA0, 0xAA, 0xE6, 0x9C, 0x89, 0xE7, 0xA4, 0xBE, 0xE5, 0x90, 0x8D, 0xE7, 0x89, 0xB9, 0xE8, 0xB2, 0xA1, 0xE7, 0xA5, 0x9D, 0xE5, 0x8A, 0xB4, 0xE7, 0xA7, 0x98, 0xE7, 0x94, 0xB7, 0xE5, 0xA5, 0xB3, 0xE9, 0x81, 0xA9, 0xE5, 0x84, 0xAA, 0xE5, 0x8D, 0xB0, 0xE6, 0xB3, 0xA8, 0xE9, 0xA0, 0x85, 0xE4, 0xBC, 0x91, 0xE5, 0x86, 0x99, 0xE6, 0xAD, 0xA3, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0xAD, 0xE4, 0xB8, 0x8B, 0xE5, 0xB7, 0xA6, 0xE5, 0x8F, 0xB3, 0xE5, 0x8C, 0xBB, 0xE5, 0xAE, 0x97, 0xE5, 0xAD, 0xA6, 0xE7, 0x9B, 0xA3, 0xE4, 0xBC, 0x81, 0xE8, 0xB3, 0x87, 0xE5, 0x8D, 0x94, 0xE5, 0xA4, 0x9C, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, 0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x31, 0xE6, 0x9C, 0x88, 0x32, 0xE6, 0x9C, 0x88, 0x33, 0xE6, 0x9C, 0x88, 0x34, 0xE6, 0x9C, 0x88, 0x35, 0xE6, 0x9C, 0x88, 0x36, 0xE6, 0x9C, 0x88, 0x37, 0xE6, 0x9C, 0x88, 0x38, 0xE6, 0x9C, 0x88, 0x39, 0xE6, 0x9C, 0x88, 0x31, 0x30, 0xE6, 0x9C, 0x88, 0x31, 0x31, 0xE6, 0x9C, 0x88, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xAA, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x86, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x8C, 0xE3, 0x83, 0x8D, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x92, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xA2, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xA6, 0xE3, 0x83, 0xA8, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0xB0, 0xE3, 0x83, 0xB1, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAA, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x8D, 0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xBD, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x92, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x30, 0xE7, 0x82, 0xB9, 0x31, 0xE7, 0x82, 0xB9, 0x32, 0xE7, 0x82, 0xB9, 0x33, 0xE7, 0x82, 0xB9, 0x34, 0xE7, 0x82, 0xB9, 0x35, 0xE7, 0x82, 0xB9, 0x36, 0xE7, 0x82, 0xB9, 0x37, 0xE7, 0x82, 0xB9, 0x38, 0xE7, 0x82, 0xB9, 0x39, 0xE7, 0x82, 0xB9, 0x31, 0x30, 0xE7, 0x82, 0xB9, 0x31, 0x31, 0xE7, 0x82, 0xB9, 0x31, 0x32, 0xE7, 0x82, 0xB9, 0x31, 0x33, 0xE7, 0x82, 0xB9, 0x31, 0x34, 0xE7, 0x82, 0xB9, 0x31, 0x35, 0xE7, 0x82, 0xB9, 0x31, 0x36, 0xE7, 0x82, 0xB9, 0x31, 0x37, 0xE7, 0x82, 0xB9, 0x31, 0x38, 0xE7, 0x82, 0xB9, 0x31, 0x39, 0xE7, 0x82, 0xB9, 0x32, 0x30, 0xE7, 0x82, 0xB9, 0x32, 0x31, 0xE7, 0x82, 0xB9, 0x32, 0x32, 0xE7, 0x82, 0xB9, 0x32, 0x33, 0xE7, 0x82, 0xB9, 0x32, 0x34, 0xE7, 0x82, 0xB9, 0x68, 0x50, 0x61, 0x64, 0x61, 0x41, 0x55, 0x62, 0x61, 0x72, 0x6F, 0x56, 0x70, 0x63, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x70, 0x41, 0x6E, 0x41, 0xCE, 0xBC, 0x41, 0x6D, 0x41, 0x6B, 0x41, 0x4B, 0x42, 0x4D, 0x42, 0x47, 0x42, 0x63, 0x61, 0x6C, 0x6B, 0x63, 0x61, 0x6C, 0x70, 0x46, 0x6E, 0x46, 0xCE, 0xBC, 0x46, 0xCE, 0xBC, 0x67, 0x6D, 0x67, 0x6B, 0x67, 0x48, 0x7A, 0x6B, 0x48, 0x7A, 0x4D, 0x48, 0x7A, 0x47, 0x48, 0x7A, 0x54, 0x48, 0x7A, 0xCE, 0xBC, 0x6C, 0x6D, 0x6C, 0x64, 0x6C, 0x6B, 0x6C, 0x66, 0x6D, 0x6E, 0x6D, 0xCE, 0xBC, 0x6D, 0x6D, 0x6D, 0x63, 0x6D, 0x6B, 0x6D, 0x6D, 0x6D, 0x32, 0x63, 0x6D, 0x32, 0x6D, 0x32, 0x6B, 0x6D, 0x32, 0x6D, 0x6D, 0x33, 0x63, 0x6D, 0x33, 0x6D, 0x33, 0x6B, 0x6D, 0x33, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x50, 0x61, 0x6B, 0x50, 0x61, 0x4D, 0x50, 0x61, 0x47, 0x50, 0x61, 0x72, 0x61, 0x64, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x70, 0x73, 0x6E, 0x73, 0xCE, 0xBC, 0x73, 0x6D, 0x73, 0x70, 0x56, 0x6E, 0x56, 0xCE, 0xBC, 0x56, 0x6D, 0x56, 0x6B, 0x56, 0x4D, 0x56, 0x70, 0x57, 0x6E, 0x57, 0xCE, 0xBC, 0x57, 0x6D, 0x57, 0x6B, 0x57, 0x4D, 0x57, 0x6B, 0xCE, 0xA9, 0x4D, 0xCE, 0xA9, 0x61, 0x2E, 0x6D, 0x2E, 0x42, 0x71, 0x63, 0x63, 0x63, 0x64, 0x43, 0xE2, 0x88, 0x95, 0x6B, 0x67, 0x43, 0x6F, 0x2E, 0x64, 0x42, 0x47, 0x79, 0x68, 0x61, 0x48, 0x50, 0x69, 0x6E, 0x4B, 0x4B, 0x4B, 0x4D, 0x6B, 0x74, 0x6C, 0x6D, 0x6C, 0x6E, 0x6C, 0x6F, 0x67, 0x6C, 0x78, 0x6D, 0x62, 0x6D, 0x69, 0x6C, 0x6D, 0x6F, 0x6C, 0x50, 0x48, 0x70, 0x2E, 0x6D, 0x2E, 0x50, 0x50, 0x4D, 0x50, 0x52, 0x73, 0x72, 0x53, 0x76, 0x57, 0x62, 0x31, 0xE6, 0x97, 0xA5, 0x32, 0xE6, 0x97, 0xA5, 0x33, 0xE6, 0x97, 0xA5, 0x34, 0xE6, 0x97, 0xA5, 0x35, 0xE6, 0x97, 0xA5, 0x36, 0xE6, 0x97, 0xA5, 0x37, 0xE6, 0x97, 0xA5, 0x38, 0xE6, 0x97, 0xA5, 0x39, 0xE6, 0x97, 0xA5, 0x31, 0x30, 0xE6, 0x97, 0xA5, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x31, 0x32, 0xE6, 0x97, 0xA5, 0x31, 0x33, 0xE6, 0x97, 0xA5, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x31, 0x35, 0xE6, 0x97, 0xA5, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x31, 0x37, 0xE6, 0x97, 0xA5, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x31, 0x39, 0xE6, 0x97, 0xA5, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x32, 0x31, 0xE6, 0x97, 0xA5, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x32, 0x33, 0xE6, 0x97, 0xA5, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x32, 0x35, 0xE6, 0x97, 0xA5, 0x32, 0x36, 0xE6, 0x97, 0xA5, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x32, 0x38, 0xE6, 0x97, 0xA5, 0x32, 0x39, 0xE6, 0x97, 0xA5, 0x33, 0x30, 0xE6, 0x97, 0xA5, 0x33, 0x31, 0xE6, 0x97, 0xA5, 0xF6, 0xE8, 0xB1, 0x88, 0xF6, 0xE6, 0x9B, 0xB4, 0xF6, 0xE8, 0xBB, 0x8A, 0xF6, 0xE8, 0xB3, 0x88, 0xF6, 0xE6, 0xBB, 0x91, 0xF6, 0xE4, 0xB8, 0xB2, 0xF6, 0xE5, 0x8F, 0xA5, 0xF6, 0xE9, 0xBE, 0x9C, 0xF6, 0xE9, 0xBE, 0x9C, 0xF6, 0xE5, 0xA5, 0x91, 0xF6, 0xE9, 0x87, 0x91, 0xF6, 0xE5, 0x96, 0x87, 0xF6, 0xE5, 0xA5, 0x88, 0xF6, 0xE6, 0x87, 0xB6, 0xF6, 0xE7, 0x99, 0xA9, 0xF6, 0xE7, 0xBE, 0x85, 0xF6, 0xE8, 0x98, 0xBF, 0xF6, 0xE8, 0x9E, 0xBA, 0xF6, 0xE8, 0xA3, 0xB8, 0xF6, 0xE9, 0x82, 0x8F, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, 0xE6, 0xB4, 0x9B, 0xF6, 0xE7, 0x83, 0x99, 0xF6, 0xE7, 0x8F, 0x9E, 0xF6, 0xE8, 0x90, 0xBD, 0xF6, 0xE9, 0x85, 0xAA, 0xF6, 0xE9, 0xA7, 0xB1, 0xF6, 0xE4, 0xBA, 0x82, 0xF6, 0xE5, 0x8D, 0xB5, 0xF6, 0xE6, 0xAC, 0x84, 0xF6, 0xE7, 0x88, 0x9B, 0xF6, 0xE8, 0x98, 0xAD, 0xF6, 0xE9, 0xB8, 0x9E, 0xF6, 0xE5, 0xB5, 0x90, 0xF6, 0xE6, 0xBF, 0xAB, 0xF6, 0xE8, 0x97, 0x8D, 0xF6, 0xE8, 0xA5, 0xA4, 0xF6, 0xE6, 0x8B, 0x89, 0xF6, 0xE8, 0x87, 0x98, 0xF6, 0xE8, 0xA0, 0x9F, 0xF6, 0xE5, 0xBB, 0x8A, 0xF6, 0xE6, 0x9C, 0x97, 0xF6, 0xE6, 0xB5, 0xAA, 0xF6, 0xE7, 0x8B, 0xBC, 0xF6, 0xE9, 0x83, 0x8E, 0xF6, 0xE4, 0xBE, 0x86, 0xF6, 0xE5, 0x86, 0xB7, 0xF6, 0xE5, 0x8B, 0x9E, 0xF6, 0xE6, 0x93, 0x84, 0xF6, 0xE6, 0xAB, 0x93, 0xF6, 0xE7, 0x88, 0x90, 0xF6, 0xE7, 0x9B, 0xA7, 0xF6, 0xE8, 0x80, 0x81, 0xF6, 0xE8, 0x98, 0x86, 0xF6, 0xE8, 0x99, 0x9C, 0xF6, 0xE8, 0xB7, 0xAF, 0xF6, 0xE9, 0x9C, 0xB2, 0xF6, 0xE9, 0xAD, 0xAF, 0xF6, 0xE9, 0xB7, 0xBA, 0xF6, 0xE7, 0xA2, 0x8C, 0xF6, 0xE7, 0xA5, 0xBF, 0xF6, 0xE7, 0xB6, 0xA0, 0xF6, 0xE8, 0x8F, 0x89, 0xF6, 0xE9, 0x8C, 0x84, 0xF6, 0xE9, 0xB9, 0xBF, 0xF6, 0xE8, 0xAB, 0x96, 0xF6, 0xE5, 0xA3, 0x9F, 0xF6, 0xE5, 0xBC, 0x84, 0xF6, 0xE7, 0xB1, 0xA0, 0xF6, 0xE8, 0x81, 0xBE, 0xF6, 0xE7, 0x89, 0xA2, 0xF6, 0xE7, 0xA3, 0x8A, 0xF6, 0xE8, 0xB3, 0x82, 0xF6, 0xE9, 0x9B, 0xB7, 0xF6, 0xE5, 0xA3, 0x98, 0xF6, 0xE5, 0xB1, 0xA2, 0xF6, 0xE6, 0xA8, 0x93, 0xF6, 0xE6, 0xB7, 0x9A, 0xF6, 0xE6, 0xBC, 0x8F, 0xF6, 0xE7, 0xB4, 0xAF, 0xF6, 0xE7, 0xB8, 0xB7, 0xF6, 0xE9, 0x99, 0x8B, 0xF6, 0xE5, 0x8B, 0x92, 0xF6, 0xE8, 0x82, 0x8B, 0xF6, 0xE5, 0x87, 0x9C, 0xF6, 0xE5, 0x87, 0x8C, 0xF6, 0xE7, 0xA8, 0x9C, 0xF6, 0xE7, 0xB6, 0xBE, 0xF6, 0xE8, 0x8F, 0xB1, 0xF6, 0xE9, 0x99, 0xB5, 0xF6, 0xE8, 0xAE, 0x80, 0xF6, 0xE6, 0x8B, 0x8F, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, 0xE8, 0xAB, 0xBE, 0xF6, 0xE4, 0xB8, 0xB9, 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE6, 0x80, 0x92, 0xF6, 0xE7, 0x8E, 0x87, 0xF6, 0xE7, 0x95, 0xB0, 0xF6, 0xE5, 0x8C, 0x97, 0xF6, 0xE7, 0xA3, 0xBB, 0xF6, 0xE4, 0xBE, 0xBF, 0xF6, 0xE5, 0xBE, 0xA9, 0xF6, 0xE4, 0xB8, 0x8D, 0xF6, 0xE6, 0xB3, 0x8C, 0xF6, 0xE6, 0x95, 0xB8, 0xF6, 0xE7, 0xB4, 0xA2, 0xF6, 0xE5, 0x8F, 0x83, 0xF6, 0xE5, 0xA1, 0x9E, 0xF6, 0xE7, 0x9C, 0x81, 0xF6, 0xE8, 0x91, 0x89, 0xF6, 0xE8, 0xAA, 0xAA, 0xF6, 0xE6, 0xAE, 0xBA, 0xF6, 0xE8, 0xBE, 0xB0, 0xF6, 0xE6, 0xB2, 0x88, 0xF6, 0xE6, 0x8B, 0xBE, 0xF6, 0xE8, 0x8B, 0xA5, 0xF6, 0xE6, 0x8E, 0xA0, 0xF6, 0xE7, 0x95, 0xA5, 0xF6, 0xE4, 0xBA, 0xAE, 0xF6, 0xE5, 0x85, 0xA9, 0xF6, 0xE5, 0x87, 0x89, 0xF6, 0xE6, 0xA2, 0x81, 0xF6, 0xE7, 0xB3, 0xA7, 0xF6, 0xE8, 0x89, 0xAF, 0xF6, 0xE8, 0xAB, 0x92, 0xF6, 0xE9, 0x87, 0x8F, 0xF6, 0xE5, 0x8B, 0xB5, 0xF6, 0xE5, 0x91, 0x82, 0xF6, 0xE5, 0xA5, 0xB3, 0xF6, 0xE5, 0xBB, 0xAC, 0xF6, 0xE6, 0x97, 0x85, 0xF6, 0xE6, 0xBF, 0xBE, 0xF6, 0xE7, 0xA4, 0xAA, 0xF6, 0xE9, 0x96, 0xAD, 0xF6, 0xE9, 0xA9, 0xAA, 0xF6, 0xE9, 0xBA, 0x97, 0xF6, 0xE9, 0xBB, 0x8E, 0xF6, 0xE5, 0x8A, 0x9B, 0xF6, 0xE6, 0x9B, 0x86, 0xF6, 0xE6, 0xAD, 0xB7, 0xF6, 0xE8, 0xBD, 0xA2, 0xF6, 0xE5, 0xB9, 0xB4, 0xF6, 0xE6, 0x86, 0x90, 0xF6, 0xE6, 0x88, 0x80, 0xF6, 0xE6, 0x92, 0x9A, 0xF6, 0xE6, 0xBC, 0xA3, 0xF6, 0xE7, 0x85, 0x89, 0xF6, 0xE7, 0x92, 0x89, 0xF6, 0xE7, 0xA7, 0x8A, 0xF6, 0xE7, 0xB7, 0xB4, 0xF6, 0xE8, 0x81, 0xAF, 0xF6, 0xE8, 0xBC, 0xA6, 0xF6, 0xE8, 0x93, 0xAE, 0xF6, 0xE9, 0x80, 0xA3, 0xF6, 0xE9, 0x8D, 0x8A, 0xF6, 0xE5, 0x88, 0x97, 0xF6, 0xE5, 0x8A, 0xA3, 0xF6, 0xE5, 0x92, 0xBD, 0xF6, 0xE7, 0x83, 0x88, 0xF6, 0xE8, 0xA3, 0x82, 0xF6, 0xE8, 0xAA, 0xAA, 0xF6, 0xE5, 0xBB, 0x89, 0xF6, 0xE5, 0xBF, 0xB5, 0xF6, 0xE6, 0x8D, 0xBB, 0xF6, 0xE6, 0xAE, 0xAE, 0xF6, 0xE7, 0xB0, 0xBE, 0xF6, 0xE7, 0x8D, 0xB5, 0xF6, 0xE4, 0xBB, 0xA4, 0xF6, 0xE5, 0x9B, 0xB9, 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE5, 0xB6, 0xBA, 0xF6, 0xE6, 0x80, 0x9C, 0xF6, 0xE7, 0x8E, 0xB2, 0xF6, 0xE7, 0x91, 0xA9, 0xF6, 0xE7, 0xBE, 0x9A, 0xF6, 0xE8, 0x81, 0x86, 0xF6, 0xE9, 0x88, 0xB4, 0xF6, 0xE9, 0x9B, 0xB6, 0xF6, 0xE9, 0x9D, 0x88, 0xF6, 0xE9, 0xA0, 0x98, 0xF6, 0xE4, 0xBE, 0x8B, 0xF6, 0xE7, 0xA6, 0xAE, 0xF6, 0xE9, 0x86, 0xB4, 0xF6, 0xE9, 0x9A, 0xB8, 0xF6, 0xE6, 0x83, 0xA1, 0xF6, 0xE4, 0xBA, 0x86, 0xF6, 0xE5, 0x83, 0x9A, 0xF6, 0xE5, 0xAF, 0xAE, 0xF6, 0xE5, 0xB0, 0xBF, 0xF6, 0xE6, 0x96, 0x99, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, 0xE7, 0x87, 0x8E, 0xF6, 0xE7, 0x99, 0x82, 0xF6, 0xE8, 0x93, 0xBC, 0xF6, 0xE9, 0x81, 0xBC, 0xF6, 0xE9, 0xBE, 0x8D, 0xF6, 0xE6, 0x9A, 0x88, 0xF6, 0xE9, 0x98, 0xAE, 0xF6, 0xE5, 0x8A, 0x89, 0xF6, 0xE6, 0x9D, 0xBB, 0xF6, 0xE6, 0x9F, 0xB3, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, 0xBA, 0x9C, 0xF6, 0xE7, 0x90, 0x89, 0xF6, 0xE7, 0x95, 0x99, 0xF6, 0xE7, 0xA1, 0xAB, 0xF6, 0xE7, 0xB4, 0x90, 0xF6, 0xE9, 0xA1, 0x9E, 0xF6, 0xE5, 0x85, 0xAD, 0xF6, 0xE6, 0x88, 0xAE, 0xF6, 0xE9, 0x99, 0xB8, 0xF6, 0xE5, 0x80, 0xAB, 0xF6, 0xE5, 0xB4, 0x99, 0xF6, 0xE6, 0xB7, 0xAA, 0xF6, 0xE8, 0xBC, 0xAA, 0xF6, 0xE5, 0xBE, 0x8B, 0xF6, 0xE6, 0x85, 0x84, 0xF6, 0xE6, 0xA0, 0x97, 0xF6, 0xE7, 0x8E, 0x87, 0xF6, 0xE9, 0x9A, 0x86, 0xF6, 0xE5, 0x88, 0xA9, 0xF6, 0xE5, 0x90, 0x8F, 0xF6, 0xE5, 0xB1, 0xA5, 0xF6, 0xE6, 0x98, 0x93, 0xF6, 0xE6, 0x9D, 0x8E, 0xF6, 0xE6, 0xA2, 0xA8, 0xF6, 0xE6, 0xB3, 0xA5, 0xF6, 0xE7, 0x90, 0x86, 0xF6, 0xE7, 0x97, 0xA2, 0xF6, 0xE7, 0xBD, 0xB9, 0xF6, 0xE8, 0xA3, 0x8F, 0xF6, 0xE8, 0xA3, 0xA1, 0xF6, 0xE9, 0x87, 0x8C, 0xF6, 0xE9, 0x9B, 0xA2, 0xF6, 0xE5, 0x8C, 0xBF, 0xF6, 0xE6, 0xBA, 0xBA, 0xF6, 0xE5, 0x90, 0x9D, 0xF6, 0xE7, 0x87, 0x90, 0xF6, 0xE7, 0x92, 0x98, 0xF6, 0xE8, 0x97, 0xBA, 0xF6, 0xE9, 0x9A, 0xA3, 0xF6, 0xE9, 0xB1, 0x97, 0xF6, 0xE9, 0xBA, 0x9F, 0xF6, 0xE6, 0x9E, 0x97, 0xF6, 0xE6, 0xB7, 0x8B, 0xF6, 0xE8, 0x87, 0xA8, 0xF6, 0xE7, 0xAB, 0x8B, 0xF6, 0xE7, 0xAC, 0xA0, 0xF6, 0xE7, 0xB2, 0x92, 0xF6, 0xE7, 0x8B, 0x80, 0xF6, 0xE7, 0x82, 0x99, 0xF6, 0xE8, 0xAD, 0x98, 0xF6, 0xE4, 0xBB, 0x80, 0xF6, 0xE8, 0x8C, 0xB6, 0xF6, 0xE5, 0x88, 0xBA, 0xF6, 0xE5, 0x88, 0x87, 0xF6, 0xE5, 0xBA, 0xA6, 0xF6, 0xE6, 0x8B, 0x93, 0xF6, 0xE7, 0xB3, 0x96, 0xF6, 0xE5, 0xAE, 0x85, 0xF6, 0xE6, 0xB4, 0x9E, 0xF6, 0xE6, 0x9A, 0xB4, 0xF6, 0xE8, 0xBC, 0xBB, 0xF6, 0xE8, 0xA1, 0x8C, 0xF6, 0xE9, 0x99, 0x8D, 0xF6, 0xE8, 0xA6, 0x8B, 0xF6, 0xE5, 0xBB, 0x93, 0xF6, 0xE5, 0x85, 0x80, 0xF6, 0xE5, 0x97, 0x80, 0xF6, 0xE5, 0xA1, 0x9A, 0xF6, 0xE6, 0x99, 0xB4, 0xF6, 0xE5, 0x87, 0x9E, 0xF6, 0xE7, 0x8C, 0xAA, 0xF6, 0xE7, 0x9B, 0x8A, 0xF6, 0xE7, 0xA4, 0xBC, 0xF6, 0xE7, 0xA5, 0x9E, 0xF6, 0xE7, 0xA5, 0xA5, 0xF6, 0xE7, 0xA6, 0x8F, 0xF6, 0xE9, 0x9D, 0x96, 0xF6, 0xE7, 0xB2, 0xBE, 0xF6, 0xE7, 0xBE, 0xBD, 0xF6, 0xE8, 0x98, 0x92, 0xF6, 0xE8, 0xAB, 0xB8, 0xF6, 0xE9, 0x80, 0xB8, 0xF6, 0xE9, 0x83, 0xBD, 0xF6, 0xE9, 0xA3, 0xAF, 0xF6, 0xE9, 0xA3, 0xBC, 0xF6, 0xE9, 0xA4, 0xA8, 0xF6, 0xE9, 0xB6, 0xB4, 0xF6, 0xE4, 0xBE, 0xAE, 0xF6, 0xE5, 0x83, 0xA7, 0xF6, 0xE5, 0x85, 0x8D, 0xF6, 0xE5, 0x8B, 0x89, 0xF6, 0xE5, 0x8B, 0xA4, 0xF6, 0xE5, 0x8D, 0x91, 0xF6, 0xE5, 0x96, 0x9D, 0xF6, 0xE5, 0x98, 0x86, 0xF6, 0xE5, 0x99, 0xA8, 0xF6, 0xE5, 0xA1, 0x80, 0xF6, 0xE5, 0xA2, 0xA8, 0xF6, 0xE5, 0xB1, 0xA4, 0xF6, 0xE5, 0xB1, 0xAE, 0xF6, 0xE6, 0x82, 0x94, 0xF6, 0xE6, 0x85, 0xA8, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, 0xE6, 0x87, 0xB2, 0xF6, 0xE6, 0x95, 0x8F, 0xF6, 0xE6, 0x97, 0xA2, 0xF6, 0xE6, 0x9A, 0x91, 0xF6, 0xE6, 0xA2, 0x85, 0xF6, 0xE6, 0xB5, 0xB7, 0xF6, 0xE6, 0xB8, 0x9A, 0xF6, 0xE6, 0xBC, 0xA2, 0xF6, 0xE7, 0x85, 0xAE, 0xF6, 0xE7, 0x88, 0xAB, 0xF6, 0xE7, 0x90, 0xA2, 0xF6, 0xE7, 0xA2, 0x91, 0xF6, 0xE7, 0xA4, 0xBE, 0xF6, 0xE7, 0xA5, 0x89, 0xF6, 0xE7, 0xA5, 0x88, 0xF6, 0xE7, 0xA5, 0x90, 0xF6, 0xE7, 0xA5, 0x96, 0xF6, 0xE7, 0xA5, 0x9D, 0xF6, 0xE7, 0xA6, 0x8D, 0xF6, 0xE7, 0xA6, 0x8E, 0xF6, 0xE7, 0xA9, 0x80, 0xF6, 0xE7, 0xAA, 0x81, 0xF6, 0xE7, 0xAF, 0x80, 0xF6, 0xE7, 0xB7, 0xB4, 0xF6, 0xE7, 0xB8, 0x89, 0xF6, 0xE7, 0xB9, 0x81, 0xF6, 0xE7, 0xBD, 0xB2, 0xF6, 0xE8, 0x80, 0x85, 0xF6, 0xE8, 0x87, 0xAD, 0xF6, 0xE8, 0x89, 0xB9, 0xF6, 0xE8, 0x89, 0xB9, 0xF6, 0xE8, 0x91, 0x97, 0xF6, 0xE8, 0xA4, 0x90, 0xF6, 0xE8, 0xA6, 0x96, 0xF6, 0xE8, 0xAC, 0x81, 0xF6, 0xE8, 0xAC, 0xB9, 0xF6, 0xE8, 0xB3, 0x93, 0xF6, 0xE8, 0xB4, 0x88, 0xF6, 0xE8, 0xBE, 0xB6, 0xF6, 0xE9, 0x80, 0xB8, 0xF6, 0xE9, 0x9B, 0xA3, 0xF6, 0xE9, 0x9F, 0xBF, 0xF6, 0xE9, 0xA0, 0xBB, 0x66, 0x66, 0x66, 0x69, 0x66, 0x6C, 0x66, 0x66, 0x69, 0x66, 0x66, 0x6C, 0x73, 0x74, 0x73, 0x74, 0xD5, 0xB4, 0xD5, 0xB6, 0xD5, 0xB4, 0xD5, 0xA5, 0xD5, 0xB4, 0xD5, 0xAB, 0xD5, 0xBE, 0xD5, 0xB6, 0xD5, 0xB4, 0xD5, 0xAD, 0xF6, 0xD7, 0x99, 0xD6, 0xB4, 0xF6, 0xD7, 0xB2, 0xD6, 0xB7, 0xD7, 0xA2, 0xD7, 0x90, 0xD7, 0x93, 0xD7, 0x94, 0xD7, 0x9B, 0xD7, 0x9C, 0xD7, 0x9D, 0xD7, 0xA8, 0xD7, 0xAA, 0x2B, 0xF6, 0xD7, 0xA9, 0xD7, 0x81, 0xF6, 0xD7, 0xA9, 0xD7, 0x82, 0xF6, 0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x81, 0xF6, 0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x82, 0xF6, 0xD7, 0x90, 0xD6, 0xB7, 0xF6, 0xD7, 0x90, 0xD6, 0xB8, 0xF6, 0xD7, 0x90, 0xD6, 0xBC, 0xF6, 0xD7, 0x91, 0xD6, 0xBC, 0xF6, 0xD7, 0x92, 0xD6, 0xBC, 0xF6, 0xD7, 0x93, 0xD6, 0xBC, 0xF6, 0xD7, 0x94, 0xD6, 0xBC, 0xF6, 0xD7, 0x95, 0xD6, 0xBC, 0xF6, 0xD7, 0x96, 0xD6, 0xBC, 0xF6, 0xD7, 0x98, 0xD6, 0xBC, 0xF6, 0xD7, 0x99, 0xD6, 0xBC, 0xF6, 0xD7, 0x9A, 0xD6, 0xBC, 0xF6, 0xD7, 0x9B, 0xD6, 0xBC, 0xF6, 0xD7, 0x9C, 0xD6, 0xBC, 0xF6, 0xD7, 0x9E, 0xD6, 0xBC, 0xF6, 0xD7, 0xA0, 0xD6, 0xBC, 0xF6, 0xD7, 0xA1, 0xD6, 0xBC, 0xF6, 0xD7, 0xA3, 0xD6, 0xBC, 0xF6, 0xD7, 0xA4, 0xD6, 0xBC, 0xF6, 0xD7, 0xA6, 0xD6, 0xBC, 0xF6, 0xD7, 0xA7, 0xD6, 0xBC, 0xF6, 0xD7, 0xA8, 0xD6, 0xBC, 0xF6, 0xD7, 0xA9, 0xD6, 0xBC, 0xF6, 0xD7, 0xAA, 0xD6, 0xBC, 0xF6, 0xD7, 0x95, 0xD6, 0xB9, 0xF6, 0xD7, 0x91, 0xD6, 0xBF, 0xF6, 0xD7, 0x9B, 0xD6, 0xBF, 0xF6, 0xD7, 0xA4, 0xD6, 0xBF, 0xD7, 0x90, 0xD7, 0x9C, 0xD9, 0xB1, 0xD9, 0xB1, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBE, 0xD9, 0xBE, 0xD9, 0xBE, 0xD9, 0xBE, 0xDA, 0x80, 0xDA, 0x80, 0xDA, 0x80, 0xDA, 0x80, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xB9, 0xD9, 0xB9, 0xD9, 0xB9, 0xD9, 0xB9, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x8D, 0xDA, 0x8D, 0xDA, 0x8C, 0xDA, 0x8C, 0xDA, 0x8E, 0xDA, 0x8E, 0xDA, 0x88, 0xDA, 0x88, 0xDA, 0x98, 0xDA, 0x98, 0xDA, 0x91, 0xDA, 0x91, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xBA, 0xDA, 0xBA, 0xDA, 0xBB, 0xDA, 0xBB, 0xDA, 0xBB, 0xDA, 0xBB, 0xDB, 0x95, 0xD9, 0x94, 0xDB, 0x95, 0xD9, 0x94, 0xDB, 0x81, 0xDB, 0x81, 0xDB, 0x81, 0xDB, 0x81, 0xDA, 0xBE, 0xDA, 0xBE, 0xDA, 0xBE, 0xDA, 0xBE, 0xDB, 0x92, 0xDB, 0x92, 0xDB, 0x92, 0xD9, 0x94, 0xDB, 0x92, 0xD9, 0x94, 0xDA, 0xAD, 0xDA, 0xAD, 0xDA, 0xAD, 0xDA, 0xAD, 0xDB, 0x87, 0xDB, 0x87, 0xDB, 0x86, 0xDB, 0x86, 0xDB, 0x88, 0xDB, 0x88, 0xDB, 0x87, 0xD9, 0xB4, 0xDB, 0x8B, 0xDB, 0x8B, 0xDB, 0x85, 0xDB, 0x85, 0xDB, 0x89, 0xDB, 0x89, 0xDB, 0x90, 0xDB, 0x90, 0xDB, 0x90, 0xDB, 0x90, 0xD9, 0x89, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xDB, 0x8C, 0xDB, 0x8C, 0xDB, 0x8C, 0xDB, 0x8C, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xAC, 0xD8, 0xA8, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xAE, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x89, 0xD8, 0xA8, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAA, 0xD8, 0xAE, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x8A, 0xD8, 0xAB, 0xD8, 0xAC, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x89, 0xD8, 0xAB, 0xD9, 0x8A, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD8, 0xAE, 0xD8, 0xAD, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAE, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xB5, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAC, 0xD8, 0xB6, 0xD8, 0xAD, 0xD8, 0xB6, 0xD8, 0xAE, 0xD8, 0xB6, 0xD9, 0x85, 0xD8, 0xB7, 0xD8, 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB8, 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD8, 0xB9, 0xD9, 0x85, 0xD8, 0xBA, 0xD8, 0xAC, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAC, 0xD9, 0x81, 0xD8, 0xAD, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x81, 0xD9, 0x89, 0xD9, 0x81, 0xD9, 0x8A, 0xD9, 0x82, 0xD8, 0xAD, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x82, 0xD9, 0x89, 0xD9, 0x82, 0xD9, 0x8A, 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x83, 0xD8, 0xAC, 0xD9, 0x83, 0xD8, 0xAD, 0xD9, 0x83, 0xD8, 0xAE, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x89, 0xD9, 0x83, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x89, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x86, 0xD8, 0xAE, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x89, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x87, 0xD8, 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x87, 0xD9, 0x89, 0xD9, 0x87, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xB0, 0xD9, 0xB0, 0xD8, 0xB1, 0xD9, 0xB0, 0xD9, 0x89, 0xD9, 0xB0, 0x20, 0xD9, 0x8C, 0xD9, 0x91, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x20, 0xD9, 0x90, 0xD9, 0x91, 0x20, 0xD9, 0x91, 0xD9, 0xB0, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB2, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xB1, 0xD8, 0xA8, 0xD8, 0xB2, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x86, 0xD8, 0xA8, 0xD9, 0x89, 0xD8, 0xA8, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xB1, 0xD8, 0xAA, 0xD8, 0xB2, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x86, 0xD8, 0xAA, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x8A, 0xD8, 0xAB, 0xD8, 0xB1, 0xD8, 0xAB, 0xD8, 0xB2, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x86, 0xD8, 0xAB, 0xD9, 0x89, 0xD8, 0xAB, 0xD9, 0x8A, 0xD9, 0x81, 0xD9, 0x89, 0xD9, 0x81, 0xD9, 0x8A, 0xD9, 0x82, 0xD9, 0x89, 0xD9, 0x82, 0xD9, 0x8A, 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x89, 0xD9, 0x83, 0xD9, 0x8A, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x89, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xB1, 0xD9, 0x86, 0xD8, 0xB2, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x89, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x89, 0xD9, 0xB0, 0xD9, 0x8A, 0xD8, 0xB1, 0xD9, 0x8A, 0xD8, 0xB2, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x87, 0xD8, 0xA8, 0xD8, 0xAC, 0xD8, 0xA8, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xAE, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x87, 0xD8, 0xAA, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAA, 0xD8, 0xAE, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x87, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAE, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xB5, 0xD8, 0xAE, 0xD8, 0xB5, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAC, 0xD8, 0xB6, 0xD8, 0xAD, 0xD8, 0xB6, 0xD8, 0xAE, 0xD8, 0xB6, 0xD9, 0x85, 0xD8, 0xB7, 0xD8, 0xAD, 0xD8, 0xB8, 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD8, 0xB9, 0xD9, 0x85, 0xD8, 0xBA, 0xD8, 0xAC, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAC, 0xD9, 0x81, 0xD8, 0xAD, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x82, 0xD8, 0xAD, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x83, 0xD8, 0xAC, 0xD9, 0x83, 0xD8, 0xAD, 0xD9, 0x83, 0xD8, 0xAE, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x86, 0xD8, 0xAE, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x87, 0xD9, 0x87, 0xD8, 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x87, 0xD9, 0xB0, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x87, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x87, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x87, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x87, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB3, 0xD9, 0x87, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB4, 0xD9, 0x87, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x87, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x80, 0xD9, 0x8E, 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x8F, 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x90, 0xD9, 0x91, 0xD8, 0xB7, 0xD9, 0x89, 0xD8, 0xB7, 0xD9, 0x8A, 0xD8, 0xB9, 0xD9, 0x89, 0xD8, 0xB9, 0xD9, 0x8A, 0xD8, 0xBA, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x8A, 0xD8, 0xB3, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, 0x8A, 0xD8, 0xB4, 0xD9, 0x89, 0xD8, 0xB4, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xB5, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x8A, 0xD8, 0xB6, 0xD9, 0x89, 0xD8, 0xB6, 0xD9, 0x8A, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xB1, 0xD8, 0xB3, 0xD8, 0xB1, 0xD8, 0xB5, 0xD8, 0xB1, 0xD8, 0xB6, 0xD8, 0xB1, 0xD8, 0xB7, 0xD9, 0x89, 0xD8, 0xB7, 0xD9, 0x8A, 0xD8, 0xB9, 0xD9, 0x89, 0xD8, 0xB9, 0xD9, 0x8A, 0xD8, 0xBA, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x8A, 0xD8, 0xB3, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, 0x8A, 0xD8, 0xB4, 0xD9, 0x89, 0xD8, 0xB4, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xB5, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x8A, 0xD8, 0xB6, 0xD9, 0x89, 0xD8, 0xB6, 0xD9, 0x8A, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xB1, 0xD8, 0xB3, 0xD8, 0xB1, 0xD8, 0xB5, 0xD8, 0xB1, 0xD8, 0xB6, 0xD8, 0xB1, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB3, 0xD9, 0x87, 0xD8, 0xB4, 0xD9, 0x87, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAE, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB8, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x8B, 0xD8, 0xA7, 0xD9, 0x8B, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, 0xD9, 0x84, 0xD8, 0xAC, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAC, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAE, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x89, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xB5, 0xD9, 0x84, 0xDB, 0x92, 0xD9, 0x82, 0xD9, 0x84, 0xDB, 0x92, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0xD8, 0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x87, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x2E, 0x2E, 0xE2, 0x80, 0x94, 0xE2, 0x80, 0x93, 0x5F, 0x5F, 0x28, 0x29, 0x7B, 0x7D, 0xE3, 0x80, 0x94, 0xE3, 0x80, 0x95, 0xE3, 0x80, 0x90, 0xE3, 0x80, 0x91, 0xE3, 0x80, 0x8A, 0xE3, 0x80, 0x8B, 0xE3, 0x80, 0x88, 0xE3, 0x80, 0x89, 0xE3, 0x80, 0x8C, 0xE3, 0x80, 0x8D, 0xE3, 0x80, 0x8E, 0xE3, 0x80, 0x8F, 0x20, 0xCC, 0x85, 0x20, 0xCC, 0x85, 0x20, 0xCC, 0x85, 0x20, 0xCC, 0x85, 0x5F, 0x5F, 0x5F, 0x2C, 0xE3, 0x80, 0x81, 0x2E, 0x3B, 0x3A, 0x3F, 0x21, 0xE2, 0x80, 0x94, 0x28, 0x29, 0x7B, 0x7D, 0xE3, 0x80, 0x94, 0xE3, 0x80, 0x95, 0x23, 0x26, 0x2A, 0x2B, 0x2D, 0x3C, 0x3E, 0x3D, 0x5C, 0x24, 0x25, 0x40, 0x20, 0xD9, 0x8B, 0xD9, 0x80, 0xD9, 0x8B, 0x20, 0xD9, 0x8C, 0x20, 0xD9, 0x8D, 0x20, 0xD9, 0x8E, 0xD9, 0x80, 0xD9, 0x8E, 0x20, 0xD9, 0x8F, 0xD9, 0x80, 0xD9, 0x8F, 0x20, 0xD9, 0x90, 0xD9, 0x80, 0xD9, 0x90, 0x20, 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x91, 0x20, 0xD9, 0x92, 0xD9, 0x80, 0xD9, 0x92, 0xD8, 0xA1, 0xD8, 0xA7, 0xD9, 0x93, 0xD8, 0xA7, 0xD9, 0x93, 0xD8, 0xA7, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x95, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD8, 0xA7, 0xD8, 0xA8, 0xD8, 0xA8, 0xD8, 0xA8, 0xD8, 0xA8, 0xD8, 0xA9, 0xD8, 0xA9, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAF, 0xD8, 0xAF, 0xD8, 0xB0, 0xD8, 0xB0, 0xD8, 0xB1, 0xD8, 0xB1, 0xD8, 0xB2, 0xD8, 0xB2, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xBA, 0xD8, 0xBA, 0xD8, 0xBA, 0xD8, 0xBA, 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x88, 0xD9, 0x88, 0xD9, 0x89, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD8, 0xA7, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0xE2, 0xA6, 0x85, 0xE2, 0xA6, 0x86, 0xE3, 0x80, 0x82, 0xE3, 0x80, 0x8C, 0xE3, 0x80, 0x8D, 0xE3, 0x80, 0x81, 0xE3, 0x83, 0xBB, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0xA1, 0xE3, 0x82, 0xA3, 0xE3, 0x82, 0xA5, 0xE3, 0x82, 0xA7, 0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xA3, 0xE3, 0x83, 0xA5, 0xE3, 0x83, 0xA7, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xAA, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x86, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x8C, 0xE3, 0x83, 0x8D, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x92, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xA2, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xA6, 0xE3, 0x83, 0xA8, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0x9A, 0xE1, 0x85, 0xA0, 0xE1, 0x84, 0x80, 0xE1, 0x84, 0x81, 0xE1, 0x86, 0xAA, 0xE1, 0x84, 0x82, 0xE1, 0x86, 0xAC, 0xE1, 0x86, 0xAD, 0xE1, 0x84, 0x83, 0xE1, 0x84, 0x84, 0xE1, 0x84, 0x85, 0xE1, 0x86, 0xB0, 0xE1, 0x86, 0xB1, 0xE1, 0x86, 0xB2, 0xE1, 0x86, 0xB3, 0xE1, 0x86, 0xB4, 0xE1, 0x86, 0xB5, 0xE1, 0x84, 0x9A, 0xE1, 0x84, 0x86, 0xE1, 0x84, 0x87, 0xE1, 0x84, 0x88, 0xE1, 0x84, 0xA1, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8A, 0xE1, 0x84, 0x8B, 0xE1, 0x84, 0x8C, 0xE1, 0x84, 0x8D, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x85, 0xA2, 0xE1, 0x85, 0xA3, 0xE1, 0x85, 0xA4, 0xE1, 0x85, 0xA5, 0xE1, 0x85, 0xA6, 0xE1, 0x85, 0xA7, 0xE1, 0x85, 0xA8, 0xE1, 0x85, 0xA9, 0xE1, 0x85, 0xAA, 0xE1, 0x85, 0xAB, 0xE1, 0x85, 0xAC, 0xE1, 0x85, 0xAD, 0xE1, 0x85, 0xAE, 0xE1, 0x85, 0xAF, 0xE1, 0x85, 0xB0, 0xE1, 0x85, 0xB1, 0xE1, 0x85, 0xB2, 0xE1, 0x85, 0xB3, 0xE1, 0x85, 0xB4, 0xE1, 0x85, 0xB5, 0xC2, 0xA2, 0xC2, 0xA3, 0xC2, 0xAC, 0x20, 0xCC, 0x84, 0xC2, 0xA6, 0xC2, 0xA5, 0xE2, 0x82, 0xA9, 0xE2, 0x94, 0x82, 0xE2, 0x86, 0x90, 0xE2, 0x86, 0x91, 0xE2, 0x86, 0x92, 0xE2, 0x86, 0x93, 0xE2, 0x96, 0xA0, 0xE2, 0x97, 0x8B, 0xF6, 0xF0, 0x9D, 0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB0, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x43, 0x44, 0x47, 0x4A, 0x4B, 0x4E, 0x4F, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x66, 0x68, 0x69, 0x6A, 0x6B, 0x6D, 0x6E, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x44, 0x45, 0x46, 0x47, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x44, 0x45, 0x46, 0x47, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4F, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xF6, 0xE4, 0xB8, 0xBD, 0xF6, 0xE4, 0xB8, 0xB8, 0xF6, 0xE4, 0xB9, 0x81, 0xF6, 0xF0, 0xA0, 0x84, 0xA2, 0xF6, 0xE4, 0xBD, 0xA0, 0xF6, 0xE4, 0xBE, 0xAE, 0xF6, 0xE4, 0xBE, 0xBB, 0xF6, 0xE5, 0x80, 0x82, 0xF6, 0xE5, 0x81, 0xBA, 0xF6, 0xE5, 0x82, 0x99, 0xF6, 0xE5, 0x83, 0xA7, 0xF6, 0xE5, 0x83, 0x8F, 0xF6, 0xE3, 0x92, 0x9E, 0xF6, 0xF0, 0xA0, 0x98, 0xBA, 0xF6, 0xE5, 0x85, 0x8D, 0xF6, 0xE5, 0x85, 0x94, 0xF6, 0xE5, 0x85, 0xA4, 0xF6, 0xE5, 0x85, 0xB7, 0xF6, 0xF0, 0xA0, 0x94, 0x9C, 0xF6, 0xE3, 0x92, 0xB9, 0xF6, 0xE5, 0x85, 0xA7, 0xF6, 0xE5, 0x86, 0x8D, 0xF6, 0xF0, 0xA0, 0x95, 0x8B, 0xF6, 0xE5, 0x86, 0x97, 0xF6, 0xE5, 0x86, 0xA4, 0xF6, 0xE4, 0xBB, 0x8C, 0xF6, 0xE5, 0x86, 0xAC, 0xF6, 0xE5, 0x86, 0xB5, 0xF6, 0xF0, 0xA9, 0x87, 0x9F, 0xF6, 0xE5, 0x87, 0xB5, 0xF6, 0xE5, 0x88, 0x83, 0xF6, 0xE3, 0x93, 0x9F, 0xF6, 0xE5, 0x88, 0xBB, 0xF6, 0xE5, 0x89, 0x86, 0xF6, 0xE5, 0x89, 0xB2, 0xF6, 0xE5, 0x89, 0xB7, 0xF6, 0xE3, 0x94, 0x95, 0xF6, 0xE5, 0x8B, 0x87, 0xF6, 0xE5, 0x8B, 0x89, 0xF6, 0xE5, 0x8B, 0xA4, 0xF6, 0xE5, 0x8B, 0xBA, 0xF6, 0xE5, 0x8C, 0x85, 0xF6, 0xE5, 0x8C, 0x86, 0xF6, 0xE5, 0x8C, 0x97, 0xF6, 0xE5, 0x8D, 0x89, 0xF6, 0xE5, 0x8D, 0x91, 0xF6, 0xE5, 0x8D, 0x9A, 0xF6, 0xE5, 0x8D, 0xB3, 0xF6, 0xE5, 0x8D, 0xBD, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xF0, 0xA0, 0xA8, 0xAC, 0xF6, 0xE7, 0x81, 0xB0, 0xF6, 0xE5, 0x8F, 0x8A, 0xF6, 0xE5, 0x8F, 0x9F, 0xF6, 0xF0, 0xA0, 0xAD, 0xA3, 0xF6, 0xE5, 0x8F, 0xAB, 0xF6, 0xE5, 0x8F, 0xB1, 0xF6, 0xE5, 0x90, 0x86, 0xF6, 0xE5, 0x92, 0x9E, 0xF6, 0xE5, 0x90, 0xB8, 0xF6, 0xE5, 0x91, 0x88, 0xF6, 0xE5, 0x91, 0xA8, 0xF6, 0xE5, 0x92, 0xA2, 0xF6, 0xE5, 0x93, 0xB6, 0xF6, 0xE5, 0x94, 0x90, 0xF6, 0xE5, 0x95, 0x93, 0xF6, 0xE5, 0x95, 0xA3, 0xF6, 0xE5, 0x96, 0x84, 0xF6, 0xE5, 0x96, 0x84, 0xF6, 0xE5, 0x96, 0x99, 0xF6, 0xE5, 0x96, 0xAB, 0xF6, 0xE5, 0x96, 0xB3, 0xF6, 0xE5, 0x97, 0x82, 0xF6, 0xE5, 0x9C, 0x96, 0xF6, 0xE5, 0x98, 0x86, 0xF6, 0xE5, 0x9C, 0x97, 0xF6, 0xE5, 0x99, 0x91, 0xF6, 0xE5, 0x99, 0xB4, 0xF6, 0xE5, 0x88, 0x87, 0xF6, 0xE5, 0xA3, 0xAE, 0xF6, 0xE5, 0x9F, 0x8E, 0xF6, 0xE5, 0x9F, 0xB4, 0xF6, 0xE5, 0xA0, 0x8D, 0xF6, 0xE5, 0x9E, 0x8B, 0xF6, 0xE5, 0xA0, 0xB2, 0xF6, 0xE5, 0xA0, 0xB1, 0xF6, 0xE5, 0xA2, 0xAC, 0xF6, 0xF0, 0xA1, 0x93, 0xA4, 0xF6, 0xE5, 0xA3, 0xB2, 0xF6, 0xE5, 0xA3, 0xB7, 0xF6, 0xE5, 0xA4, 0x86, 0xF6, 0xE5, 0xA4, 0x9A, 0xF6, 0xE5, 0xA4, 0xA2, 0xF6, 0xE5, 0xA5, 0xA2, 0xF6, 0xF0, 0xA1, 0x9A, 0xA8, 0xF6, 0xF0, 0xA1, 0x9B, 0xAA, 0xF6, 0xE5, 0xA7, 0xAC, 0xF6, 0xE5, 0xA8, 0x9B, 0xF6, 0xE5, 0xA8, 0xA7, 0xF6, 0xE5, 0xA7, 0x98, 0xF6, 0xE5, 0xA9, 0xA6, 0xF6, 0xE3, 0x9B, 0xAE, 0xF6, 0xE3, 0x9B, 0xBC, 0xF6, 0xE5, 0xAC, 0x88, 0xF6, 0xE5, 0xAC, 0xBE, 0xF6, 0xE5, 0xAC, 0xBE, 0xF6, 0xF0, 0xA1, 0xA7, 0x88, 0xF6, 0xE5, 0xAF, 0x83, 0xF6, 0xE5, 0xAF, 0x98, 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE5, 0xAF, 0xB3, 0xF6, 0xF0, 0xA1, 0xAC, 0x98, 0xF6, 0xE5, 0xAF, 0xBF, 0xF6, 0xE5, 0xB0, 0x86, 0xF6, 0xE5, 0xBD, 0x93, 0xF6, 0xE5, 0xB0, 0xA2, 0xF6, 0xE3, 0x9E, 0x81, 0xF6, 0xE5, 0xB1, 0xA0, 0xF6, 0xE5, 0xB1, 0xAE, 0xF6, 0xE5, 0xB3, 0x80, 0xF6, 0xE5, 0xB2, 0x8D, 0xF6, 0xF0, 0xA1, 0xB7, 0xA4, 0xF6, 0xE5, 0xB5, 0x83, 0xF6, 0xF0, 0xA1, 0xB7, 0xA6, 0xF6, 0xE5, 0xB5, 0xAE, 0xF6, 0xE5, 0xB5, 0xAB, 0xF6, 0xE5, 0xB5, 0xBC, 0xF6, 0xE5, 0xB7, 0xA1, 0xF6, 0xE5, 0xB7, 0xA2, 0xF6, 0xE3, 0xA0, 0xAF, 0xF6, 0xE5, 0xB7, 0xBD, 0xF6, 0xE5, 0xB8, 0xA8, 0xF6, 0xE5, 0xB8, 0xBD, 0xF6, 0xE5, 0xB9, 0xA9, 0xF6, 0xE3, 0xA1, 0xA2, 0xF6, 0xF0, 0xA2, 0x86, 0x83, 0xF6, 0xE3, 0xA1, 0xBC, 0xF6, 0xE5, 0xBA, 0xB0, 0xF6, 0xE5, 0xBA, 0xB3, 0xF6, 0xE5, 0xBA, 0xB6, 0xF6, 0xE5, 0xBB, 0x8A, 0xF6, 0xF0, 0xAA, 0x8E, 0x92, 0xF6, 0xE5, 0xBB, 0xBE, 0xF6, 0xF0, 0xA2, 0x8C, 0xB1, 0xF6, 0xF0, 0xA2, 0x8C, 0xB1, 0xF6, 0xE8, 0x88, 0x81, 0xF6, 0xE5, 0xBC, 0xA2, 0xF6, 0xE5, 0xBC, 0xA2, 0xF6, 0xE3, 0xA3, 0x87, 0xF6, 0xF0, 0xA3, 0x8A, 0xB8, 0xF6, 0xF0, 0xA6, 0x87, 0x9A, 0xF6, 0xE5, 0xBD, 0xA2, 0xF6, 0xE5, 0xBD, 0xAB, 0xF6, 0xE3, 0xA3, 0xA3, 0xF6, 0xE5, 0xBE, 0x9A, 0xF6, 0xE5, 0xBF, 0x8D, 0xF6, 0xE5, 0xBF, 0x97, 0xF6, 0xE5, 0xBF, 0xB9, 0xF6, 0xE6, 0x82, 0x81, 0xF6, 0xE3, 0xA4, 0xBA, 0xF6, 0xE3, 0xA4, 0x9C, 0xF6, 0xE6, 0x82, 0x94, 0xF6, 0xF0, 0xA2, 0x9B, 0x94, 0xF6, 0xE6, 0x83, 0x87, 0xF6, 0xE6, 0x85, 0x88, 0xF6, 0xE6, 0x85, 0x8C, 0xF6, 0xE6, 0x85, 0x8E, 0xF6, 0xE6, 0x85, 0x8C, 0xF6, 0xE6, 0x85, 0xBA, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, 0xE6, 0x86, 0xB2, 0xF6, 0xE6, 0x86, 0xA4, 0xF6, 0xE6, 0x86, 0xAF, 0xF6, 0xE6, 0x87, 0x9E, 0xF6, 0xE6, 0x87, 0xB2, 0xF6, 0xE6, 0x87, 0xB6, 0xF6, 0xE6, 0x88, 0x90, 0xF6, 0xE6, 0x88, 0x9B, 0xF6, 0xE6, 0x89, 0x9D, 0xF6, 0xE6, 0x8A, 0xB1, 0xF6, 0xE6, 0x8B, 0x94, 0xF6, 0xE6, 0x8D, 0x90, 0xF6, 0xF0, 0xA2, 0xAC, 0x8C, 0xF6, 0xE6, 0x8C, 0xBD, 0xF6, 0xE6, 0x8B, 0xBC, 0xF6, 0xE6, 0x8D, 0xA8, 0xF6, 0xE6, 0x8E, 0x83, 0xF6, 0xE6, 0x8F, 0xA4, 0xF6, 0xF0, 0xA2, 0xAF, 0xB1, 0xF6, 0xE6, 0x90, 0xA2, 0xF6, 0xE6, 0x8F, 0x85, 0xF6, 0xE6, 0x8E, 0xA9, 0xF6, 0xE3, 0xA8, 0xAE, 0xF6, 0xE6, 0x91, 0xA9, 0xF6, 0xE6, 0x91, 0xBE, 0xF6, 0xE6, 0x92, 0x9D, 0xF6, 0xE6, 0x91, 0xB7, 0xF6, 0xE3, 0xA9, 0xAC, 0xF6, 0xE6, 0x95, 0x8F, 0xF6, 0xE6, 0x95, 0xAC, 0xF6, 0xF0, 0xA3, 0x80, 0x8A, 0xF6, 0xE6, 0x97, 0xA3, 0xF6, 0xE6, 0x9B, 0xB8, 0xF6, 0xE6, 0x99, 0x89, 0xF6, 0xE3, 0xAC, 0x99, 0xF6, 0xE6, 0x9A, 0x91, 0xF6, 0xE3, 0xAC, 0x88, 0xF6, 0xE3, 0xAB, 0xA4, 0xF6, 0xE5, 0x86, 0x92, 0xF6, 0xE5, 0x86, 0x95, 0xF6, 0xE6, 0x9C, 0x80, 0xF6, 0xE6, 0x9A, 0x9C, 0xF6, 0xE8, 0x82, 0xAD, 0xF6, 0xE4, 0x8F, 0x99, 0xF6, 0xE6, 0x9C, 0x97, 0xF6, 0xE6, 0x9C, 0x9B, 0xF6, 0xE6, 0x9C, 0xA1, 0xF6, 0xE6, 0x9D, 0x9E, 0xF6, 0xE6, 0x9D, 0x93, 0xF6, 0xF0, 0xA3, 0x8F, 0x83, 0xF6, 0xE3, 0xAD, 0x89, 0xF6, 0xE6, 0x9F, 0xBA, 0xF6, 0xE6, 0x9E, 0x85, 0xF6, 0xE6, 0xA1, 0x92, 0xF6, 0xE6, 0xA2, 0x85, 0xF6, 0xF0, 0xA3, 0x91, 0xAD, 0xF6, 0xE6, 0xA2, 0x8E, 0xF6, 0xE6, 0xA0, 0x9F, 0xF6, 0xE6, 0xA4, 0x94, 0xF6, 0xE3, 0xAE, 0x9D, 0xF6, 0xE6, 0xA5, 0x82, 0xF6, 0xE6, 0xA6, 0xA3, 0xF6, 0xE6, 0xA7, 0xAA, 0xF6, 0xE6, 0xAA, 0xA8, 0xF6, 0xF0, 0xA3, 0x9A, 0xA3, 0xF6, 0xE6, 0xAB, 0x9B, 0xF6, 0xE3, 0xB0, 0x98, 0xF6, 0xE6, 0xAC, 0xA1, 0xF6, 0xF0, 0xA3, 0xA2, 0xA7, 0xF6, 0xE6, 0xAD, 0x94, 0xF6, 0xE3, 0xB1, 0x8E, 0xF6, 0xE6, 0xAD, 0xB2, 0xF6, 0xE6, 0xAE, 0x9F, 0xF6, 0xE6, 0xAE, 0xBA, 0xF6, 0xE6, 0xAE, 0xBB, 0xF6, 0xF0, 0xA3, 0xAA, 0x8D, 0xF6, 0xF0, 0xA1, 0xB4, 0x8B, 0xF6, 0xF0, 0xA3, 0xAB, 0xBA, 0xF6, 0xE6, 0xB1, 0x8E, 0xF6, 0xF0, 0xA3, 0xB2, 0xBC, 0xF6, 0xE6, 0xB2, 0xBF, 0xF6, 0xE6, 0xB3, 0x8D, 0xF6, 0xE6, 0xB1, 0xA7, 0xF6, 0xE6, 0xB4, 0x96, 0xF6, 0xE6, 0xB4, 0xBE, 0xF6, 0xE6, 0xB5, 0xB7, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, 0xB5, 0xA9, 0xF6, 0xE6, 0xB5, 0xB8, 0xF6, 0xE6, 0xB6, 0x85, 0xF6, 0xF0, 0xA3, 0xB4, 0x9E, 0xF6, 0xE6, 0xB4, 0xB4, 0xF6, 0xE6, 0xB8, 0xAF, 0xF6, 0xE6, 0xB9, 0xAE, 0xF6, 0xE3, 0xB4, 0xB3, 0xF6, 0xE6, 0xBB, 0x8B, 0xF6, 0xE6, 0xBB, 0x87, 0xF6, 0xF0, 0xA3, 0xBB, 0x91, 0xF6, 0xE6, 0xB7, 0xB9, 0xF6, 0xE6, 0xBD, 0xAE, 0xF6, 0xF0, 0xA3, 0xBD, 0x9E, 0xF6, 0xF0, 0xA3, 0xBE, 0x8E, 0xF6, 0xE6, 0xBF, 0x86, 0xF6, 0xE7, 0x80, 0xB9, 0xF6, 0xE7, 0x80, 0x9E, 0xF6, 0xE7, 0x80, 0x9B, 0xF6, 0xE3, 0xB6, 0x96, 0xF6, 0xE7, 0x81, 0x8A, 0xF6, 0xE7, 0x81, 0xBD, 0xF6, 0xE7, 0x81, 0xB7, 0xF6, 0xE7, 0x82, 0xAD, 0xF6, 0xF0, 0xA0, 0x94, 0xA5, 0xF6, 0xE7, 0x85, 0x85, 0xF6, 0xF0, 0xA4, 0x89, 0xA3, 0xF6, 0xE7, 0x86, 0x9C, 0xF6, 0xF0, 0xA4, 0x8E, 0xAB, 0xF6, 0xE7, 0x88, 0xA8, 0xF6, 0xE7, 0x88, 0xB5, 0xF6, 0xE7, 0x89, 0x90, 0xF6, 0xF0, 0xA4, 0x98, 0x88, 0xF6, 0xE7, 0x8A, 0x80, 0xF6, 0xE7, 0x8A, 0x95, 0xF6, 0xF0, 0xA4, 0x9C, 0xB5, 0xF6, 0xF0, 0xA4, 0xA0, 0x94, 0xF6, 0xE7, 0x8D, 0xBA, 0xF6, 0xE7, 0x8E, 0x8B, 0xF6, 0xE3, 0xBA, 0xAC, 0xF6, 0xE7, 0x8E, 0xA5, 0xF6, 0xE3, 0xBA, 0xB8, 0xF6, 0xE3, 0xBA, 0xB8, 0xF6, 0xE7, 0x91, 0x87, 0xF6, 0xE7, 0x91, 0x9C, 0xF6, 0xE7, 0x91, 0xB1, 0xF6, 0xE7, 0x92, 0x85, 0xF6, 0xE7, 0x93, 0x8A, 0xF6, 0xE3, 0xBC, 0x9B, 0xF6, 0xE7, 0x94, 0xA4, 0xF6, 0xF0, 0xA4, 0xB0, 0xB6, 0xF6, 0xE7, 0x94, 0xBE, 0xF6, 0xF0, 0xA4, 0xB2, 0x92, 0xF6, 0xE7, 0x95, 0xB0, 0xF6, 0xF0, 0xA2, 0x86, 0x9F, 0xF6, 0xE7, 0x98, 0x90, 0xF6, 0xF0, 0xA4, 0xBE, 0xA1, 0xF6, 0xF0, 0xA4, 0xBE, 0xB8, 0xF6, 0xF0, 0xA5, 0x81, 0x84, 0xF6, 0xE3, 0xBF, 0xBC, 0xF6, 0xE4, 0x80, 0x88, 0xF6, 0xE7, 0x9B, 0xB4, 0xF6, 0xF0, 0xA5, 0x83, 0xB3, 0xF6, 0xF0, 0xA5, 0x83, 0xB2, 0xF6, 0xF0, 0xA5, 0x84, 0x99, 0xF6, 0xF0, 0xA5, 0x84, 0xB3, 0xF6, 0xE7, 0x9C, 0x9E, 0xF6, 0xE7, 0x9C, 0x9F, 0xF6, 0xE7, 0x9C, 0x9F, 0xF6, 0xE7, 0x9D, 0x8A, 0xF6, 0xE4, 0x80, 0xB9, 0xF6, 0xE7, 0x9E, 0x8B, 0xF6, 0xE4, 0x81, 0x86, 0xF6, 0xE4, 0x82, 0x96, 0xF6, 0xF0, 0xA5, 0x90, 0x9D, 0xF6, 0xE7, 0xA1, 0x8E, 0xF6, 0xE7, 0xA2, 0x8C, 0xF6, 0xE7, 0xA3, 0x8C, 0xF6, 0xE4, 0x83, 0xA3, 0xF6, 0xF0, 0xA5, 0x98, 0xA6, 0xF6, 0xE7, 0xA5, 0x96, 0xF6, 0xF0, 0xA5, 0x9A, 0x9A, 0xF6, 0xF0, 0xA5, 0x9B, 0x85, 0xF6, 0xE7, 0xA6, 0x8F, 0xF6, 0xE7, 0xA7, 0xAB, 0xF6, 0xE4, 0x84, 0xAF, 0xF6, 0xE7, 0xA9, 0x80, 0xF6, 0xE7, 0xA9, 0x8A, 0xF6, 0xE7, 0xA9, 0x8F, 0xF6, 0xF0, 0xA5, 0xA5, 0xBC, 0xF6, 0xF0, 0xA5, 0xAA, 0xA7, 0xF6, 0xF0, 0xA5, 0xAA, 0xA7, 0xF6, 0xE7, 0xAB, 0xAE, 0xF6, 0xE4, 0x88, 0x82, 0xF6, 0xF0, 0xA5, 0xAE, 0xAB, 0xF6, 0xE7, 0xAF, 0x86, 0xF6, 0xE7, 0xAF, 0x89, 0xF6, 0xE4, 0x88, 0xA7, 0xF6, 0xF0, 0xA5, 0xB2, 0x80, 0xF6, 0xE7, 0xB3, 0x92, 0xF6, 0xE4, 0x8A, 0xA0, 0xF6, 0xE7, 0xB3, 0xA8, 0xF6, 0xE7, 0xB3, 0xA3, 0xF6, 0xE7, 0xB4, 0x80, 0xF6, 0xF0, 0xA5, 0xBE, 0x86, 0xF6, 0xE7, 0xB5, 0xA3, 0xF6, 0xE4, 0x8C, 0x81, 0xF6, 0xE7, 0xB7, 0x87, 0xF6, 0xE7, 0xB8, 0x82, 0xF6, 0xE7, 0xB9, 0x85, 0xF6, 0xE4, 0x8C, 0xB4, 0xF6, 0xF0, 0xA6, 0x88, 0xA8, 0xF6, 0xF0, 0xA6, 0x89, 0x87, 0xF6, 0xE4, 0x8D, 0x99, 0xF6, 0xF0, 0xA6, 0x8B, 0x99, 0xF6, 0xE7, 0xBD, 0xBA, 0xF6, 0xF0, 0xA6, 0x8C, 0xBE, 0xF6, 0xE7, 0xBE, 0x95, 0xF6, 0xE7, 0xBF, 0xBA, 0xF6, 0xE8, 0x80, 0x85, 0xF6, 0xF0, 0xA6, 0x93, 0x9A, 0xF6, 0xF0, 0xA6, 0x94, 0xA3, 0xF6, 0xE8, 0x81, 0xA0, 0xF6, 0xF0, 0xA6, 0x96, 0xA8, 0xF6, 0xE8, 0x81, 0xB0, 0xF6, 0xF0, 0xA3, 0x8D, 0x9F, 0xF6, 0xE4, 0x8F, 0x95, 0xF6, 0xE8, 0x82, 0xB2, 0xF6, 0xE8, 0x84, 0x83, 0xF6, 0xE4, 0x90, 0x8B, 0xF6, 0xE8, 0x84, 0xBE, 0xF6, 0xE5, 0xAA, 0xB5, 0xF6, 0xF0, 0xA6, 0x9E, 0xA7, 0xF6, 0xF0, 0xA6, 0x9E, 0xB5, 0xF6, 0xF0, 0xA3, 0x8E, 0x93, 0xF6, 0xF0, 0xA3, 0x8E, 0x9C, 0xF6, 0xE8, 0x88, 0x81, 0xF6, 0xE8, 0x88, 0x84, 0xF6, 0xE8, 0xBE, 0x9E, 0xF6, 0xE4, 0x91, 0xAB, 0xF6, 0xE8, 0x8A, 0x91, 0xF6, 0xE8, 0x8A, 0x8B, 0xF6, 0xE8, 0x8A, 0x9D, 0xF6, 0xE5, 0x8A, 0xB3, 0xF6, 0xE8, 0x8A, 0xB1, 0xF6, 0xE8, 0x8A, 0xB3, 0xF6, 0xE8, 0x8A, 0xBD, 0xF6, 0xE8, 0x8B, 0xA6, 0xF6, 0xF0, 0xA6, 0xAC, 0xBC, 0xF6, 0xE8, 0x8B, 0xA5, 0xF6, 0xE8, 0x8C, 0x9D, 0xF6, 0xE8, 0x8D, 0xA3, 0xF6, 0xE8, 0x8E, 0xAD, 0xF6, 0xE8, 0x8C, 0xA3, 0xF6, 0xE8, 0x8E, 0xBD, 0xF6, 0xE8, 0x8F, 0xA7, 0xF6, 0xE8, 0x91, 0x97, 0xF6, 0xE8, 0x8D, 0x93, 0xF6, 0xE8, 0x8F, 0x8A, 0xF6, 0xE8, 0x8F, 0x8C, 0xF6, 0xE8, 0x8F, 0x9C, 0xF6, 0xF0, 0xA6, 0xB0, 0xB6, 0xF6, 0xF0, 0xA6, 0xB5, 0xAB, 0xF6, 0xF0, 0xA6, 0xB3, 0x95, 0xF6, 0xE4, 0x94, 0xAB, 0xF6, 0xE8, 0x93, 0xB1, 0xF6, 0xE8, 0x93, 0xB3, 0xF6, 0xE8, 0x94, 0x96, 0xF6, 0xF0, 0xA7, 0x8F, 0x8A, 0xF6, 0xE8, 0x95, 0xA4, 0xF6, 0xF0, 0xA6, 0xBC, 0xAC, 0xF6, 0xE4, 0x95, 0x9D, 0xF6, 0xE4, 0x95, 0xA1, 0xF6, 0xF0, 0xA6, 0xBE, 0xB1, 0xF6, 0xF0, 0xA7, 0x83, 0x92, 0xF6, 0xE4, 0x95, 0xAB, 0xF6, 0xE8, 0x99, 0x90, 0xF6, 0xE8, 0x99, 0x9C, 0xF6, 0xE8, 0x99, 0xA7, 0xF6, 0xE8, 0x99, 0xA9, 0xF6, 0xE8, 0x9A, 0xA9, 0xF6, 0xE8, 0x9A, 0x88, 0xF6, 0xE8, 0x9C, 0x8E, 0xF6, 0xE8, 0x9B, 0xA2, 0xF6, 0xE8, 0x9D, 0xB9, 0xF6, 0xE8, 0x9C, 0xA8, 0xF6, 0xE8, 0x9D, 0xAB, 0xF6, 0xE8, 0x9E, 0x86, 0xF6, 0xE4, 0x97, 0x97, 0xF6, 0xE8, 0x9F, 0xA1, 0xF6, 0xE8, 0xA0, 0x81, 0xF6, 0xE4, 0x97, 0xB9, 0xF6, 0xE8, 0xA1, 0xA0, 0xF6, 0xE8, 0xA1, 0xA3, 0xF6, 0xF0, 0xA7, 0x99, 0xA7, 0xF6, 0xE8, 0xA3, 0x97, 0xF6, 0xE8, 0xA3, 0x9E, 0xF6, 0xE4, 0x98, 0xB5, 0xF6, 0xE8, 0xA3, 0xBA, 0xF6, 0xE3, 0x92, 0xBB, 0xF6, 0xF0, 0xA7, 0xA2, 0xAE, 0xF6, 0xF0, 0xA7, 0xA5, 0xA6, 0xF6, 0xE4, 0x9A, 0xBE, 0xF6, 0xE4, 0x9B, 0x87, 0xF6, 0xE8, 0xAA, 0xA0, 0xF6, 0xE8, 0xAB, 0xAD, 0xF6, 0xE8, 0xAE, 0x8A, 0xF6, 0xE8, 0xB1, 0x95, 0xF6, 0xF0, 0xA7, 0xB2, 0xA8, 0xF6, 0xE8, 0xB2, 0xAB, 0xF6, 0xE8, 0xB3, 0x81, 0xF6, 0xE8, 0xB4, 0x9B, 0xF6, 0xE8, 0xB5, 0xB7, 0xF6, 0xF0, 0xA7, 0xBC, 0xAF, 0xF6, 0xF0, 0xA0, 0xA0, 0x84, 0xF6, 0xE8, 0xB7, 0x8B, 0xF6, 0xE8, 0xB6, 0xBC, 0xF6, 0xE8, 0xB7, 0xB0, 0xF6, 0xF0, 0xA0, 0xA3, 0x9E, 0xF6, 0xE8, 0xBB, 0x94, 0xF6, 0xE8, 0xBC, 0xB8, 0xF6, 0xF0, 0xA8, 0x97, 0x92, 0xF6, 0xF0, 0xA8, 0x97, 0xAD, 0xF6, 0xE9, 0x82, 0x94, 0xF6, 0xE9, 0x83, 0xB1, 0xF6, 0xE9, 0x84, 0x91, 0xF6, 0xF0, 0xA8, 0x9C, 0xAE, 0xF6, 0xE9, 0x84, 0x9B, 0xF6, 0xE9, 0x88, 0xB8, 0xF6, 0xE9, 0x8B, 0x97, 0xF6, 0xE9, 0x8B, 0x98, 0xF6, 0xE9, 0x89, 0xBC, 0xF6, 0xE9, 0x8F, 0xB9, 0xF6, 0xE9, 0x90, 0x95, 0xF6, 0xF0, 0xA8, 0xAF, 0xBA, 0xF6, 0xE9, 0x96, 0x8B, 0xF6, 0xE4, 0xA6, 0x95, 0xF6, 0xE9, 0x96, 0xB7, 0xF6, 0xF0, 0xA8, 0xB5, 0xB7, 0xF6, 0xE4, 0xA7, 0xA6, 0xF6, 0xE9, 0x9B, 0x83, 0xF6, 0xE5, 0xB6, 0xB2, 0xF6, 0xE9, 0x9C, 0xA3, 0xF6, 0xF0, 0xA9, 0x85, 0x85, 0xF6, 0xF0, 0xA9, 0x88, 0x9A, 0xF6, 0xE4, 0xA9, 0xAE, 0xF6, 0xE4, 0xA9, 0xB6, 0xF6, 0xE9, 0x9F, 0xA0, 0xF6, 0xF0, 0xA9, 0x90, 0x8A, 0xF6, 0xE4, 0xAA, 0xB2, 0xF6, 0xF0, 0xA9, 0x92, 0x96, 0xF6, 0xE9, 0xA0, 0x8B, 0xF6, 0xE9, 0xA0, 0x8B, 0xF6, 0xE9, 0xA0, 0xA9, 0xF6, 0xF0, 0xA9, 0x96, 0xB6, 0xF6, 0xE9, 0xA3, 0xA2, 0xF6, 0xE4, 0xAC, 0xB3, 0xF6, 0xE9, 0xA4, 0xA9, 0xF6, 0xE9, 0xA6, 0xA7, 0xF6, 0xE9, 0xA7, 0x82, 0xF6, 0xE9, 0xA7, 0xBE, 0xF6, 0xE4, 0xAF, 0x8E, 0xF6, 0xF0, 0xA9, 0xAC, 0xB0, 0xF6, 0xE9, 0xAC, 0x92, 0xF6, 0xE9, 0xB1, 0x80, 0xF6, 0xE9, 0xB3, 0xBD, 0xF6, 0xE4, 0xB3, 0x8E, 0xF6, 0xE4, 0xB3, 0xAD, 0xF6, 0xE9, 0xB5, 0xA7, 0xF6, 0xF0, 0xAA, 0x83, 0x8E, 0xF6, 0xE4, 0xB3, 0xB8, 0xF6, 0xF0, 0xAA, 0x84, 0x85, 0xF6, 0xF0, 0xAA, 0x88, 0x8E, 0xF6, 0xF0, 0xAA, 0x8A, 0x91, 0xF6, 0xE9, 0xBA, 0xBB, 0xF6, 0xE4, 0xB5, 0x96, 0xF6, 0xE9, 0xBB, 0xB9, 0xF6, 0xE9, 0xBB, 0xBE, 0xF6, 0xE9, 0xBC, 0x85, 0xF6, 0xE9, 0xBC, 0x8F, 0xF6, 0xE9, 0xBC, 0x96, 0xF6, 0xE9, 0xBC, 0xBB, 0xF6, 0xF0, 0xAA, 0x98, 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 0x20, 0x20, 0xCC, 0x88, 0x61, 0x20, 0xCC, 0x84, 0x32, 0x33, 0x20, 0xCC, 0x81, 0xCE, 0xBC, 0x20, 0xCC, 0xA7, 0x31, 0x6F, 0x31, 0xE2, 0x81, 0x84, 0x34, 0x31, 0xE2, 0x81, 0x84, 0x32, 0x33, 0xE2, 0x81, 0x84, 0x34, 0xF6, 0x41, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x82, 0xF6, 0x41, 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0x88, 0xF6, 0x41, 0xCC, 0x8A, 0xF6, 0x43, 0xCC, 0xA7, 0xF6, 0x45, 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x81, 0xF6, 0x45, 0xCC, 0x82, 0xF6, 0x45, 0xCC, 0x88, 0xF6, 0x49, 0xCC, 0x80, 0xF6, 0x49, 0xCC, 0x81, 0xF6, 0x49, 0xCC, 0x82, 0xF6, 0x49, 0xCC, 0x88, 0xF6, 0x4E, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x82, 0xF6, 0x4F, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x88, 0xF6, 0x55, 0xCC, 0x80, 0xF6, 0x55, 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x82, 0xF6, 0x55, 0xCC, 0x88, 0xF6, 0x59, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x80, 0xF6, 0x61, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x82, 0xF6, 0x61, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x88, 0xF6, 0x61, 0xCC, 0x8A, 0xF6, 0x63, 0xCC, 0xA7, 0xF6, 0x65, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x81, 0xF6, 0x65, 0xCC, 0x82, 0xF6, 0x65, 0xCC, 0x88, 0xF6, 0x69, 0xCC, 0x80, 0xF6, 0x69, 0xCC, 0x81, 0xF6, 0x69, 0xCC, 0x82, 0xF6, 0x69, 0xCC, 0x88, 0xF6, 0x6E, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x82, 0xF6, 0x6F, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x88, 0xF6, 0x75, 0xCC, 0x80, 0xF6, 0x75, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x82, 0xF6, 0x75, 0xCC, 0x88, 0xF6, 0x79, 0xCC, 0x81, 0xF6, 0x79, 0xCC, 0x88, 0xF6, 0x41, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x84, 0xF6, 0x41, 0xCC, 0x86, 0xF6, 0x61, 0xCC, 0x86, 0xF6, 0x41, 0xCC, 0xA8, 0xF6, 0x61, 0xCC, 0xA8, 0xF6, 0x43, 0xCC, 0x81, 0xF6, 0x63, 0xCC, 0x81, 0xF6, 0x43, 0xCC, 0x82, 0xF6, 0x63, 0xCC, 0x82, 0xF6, 0x43, 0xCC, 0x87, 0xF6, 0x63, 0xCC, 0x87, 0xF6, 0x43, 0xCC, 0x8C, 0xF6, 0x63, 0xCC, 0x8C, 0xF6, 0x44, 0xCC, 0x8C, 0xF6, 0x64, 0xCC, 0x8C, 0xF6, 0x45, 0xCC, 0x84, 0xF6, 0x65, 0xCC, 0x84, 0xF6, 0x45, 0xCC, 0x86, 0xF6, 0x65, 0xCC, 0x86, 0xF6, 0x45, 0xCC, 0x87, 0xF6, 0x65, 0xCC, 0x87, 0xF6, 0x45, 0xCC, 0xA8, 0xF6, 0x65, 0xCC, 0xA8, 0xF6, 0x45, 0xCC, 0x8C, 0xF6, 0x65, 0xCC, 0x8C, 0xF6, 0x47, 0xCC, 0x82, 0xF6, 0x67, 0xCC, 0x82, 0xF6, 0x47, 0xCC, 0x86, 0xF6, 0x67, 0xCC, 0x86, 0xF6, 0x47, 0xCC, 0x87, 0xF6, 0x67, 0xCC, 0x87, 0xF6, 0x47, 0xCC, 0xA7, 0xF6, 0x67, 0xCC, 0xA7, 0xF6, 0x48, 0xCC, 0x82, 0xF6, 0x68, 0xCC, 0x82, 0xF6, 0x49, 0xCC, 0x83, 0xF6, 0x69, 0xCC, 0x83, 0xF6, 0x49, 0xCC, 0x84, 0xF6, 0x69, 0xCC, 0x84, 0xF6, 0x49, 0xCC, 0x86, 0xF6, 0x69, 0xCC, 0x86, 0xF6, 0x49, 0xCC, 0xA8, 0xF6, 0x69, 0xCC, 0xA8, 0xF6, 0x49, 0xCC, 0x87, 0x49, 0x4A, 0x69, 0x6A, 0xF6, 0x4A, 0xCC, 0x82, 0xF6, 0x6A, 0xCC, 0x82, 0xF6, 0x4B, 0xCC, 0xA7, 0xF6, 0x6B, 0xCC, 0xA7, 0xF6, 0x4C, 0xCC, 0x81, 0xF6, 0x6C, 0xCC, 0x81, 0xF6, 0x4C, 0xCC, 0xA7, 0xF6, 0x6C, 0xCC, 0xA7, 0xF6, 0x4C, 0xCC, 0x8C, 0xF6, 0x6C, 0xCC, 0x8C, 0x4C, 0xC2, 0xB7, 0x6C, 0xC2, 0xB7, 0xF6, 0x4E, 0xCC, 0x81, 0xF6, 0x6E, 0xCC, 0x81, 0xF6, 0x4E, 0xCC, 0xA7, 0xF6, 0x6E, 0xCC, 0xA7, 0xF6, 0x4E, 0xCC, 0x8C, 0xF6, 0x6E, 0xCC, 0x8C, 0xCA, 0xBC, 0x6E, 0xF6, 0x4F, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x84, 0xF6, 0x4F, 0xCC, 0x86, 0xF6, 0x6F, 0xCC, 0x86, 0xF6, 0x4F, 0xCC, 0x8B, 0xF6, 0x6F, 0xCC, 0x8B, 0xF6, 0x52, 0xCC, 0x81, 0xF6, 0x72, 0xCC, 0x81, 0xF6, 0x52, 0xCC, 0xA7, 0xF6, 0x72, 0xCC, 0xA7, 0xF6, 0x52, 0xCC, 0x8C, 0xF6, 0x72, 0xCC, 0x8C, 0xF6, 0x53, 0xCC, 0x81, 0xF6, 0x73, 0xCC, 0x81, 0xF6, 0x53, 0xCC, 0x82, 0xF6, 0x73, 0xCC, 0x82, 0xF6, 0x53, 0xCC, 0xA7, 0xF6, 0x73, 0xCC, 0xA7, 0xF6, 0x53, 0xCC, 0x8C, 0xF6, 0x73, 0xCC, 0x8C, 0xF6, 0x54, 0xCC, 0xA7, 0xF6, 0x74, 0xCC, 0xA7, 0xF6, 0x54, 0xCC, 0x8C, 0xF6, 0x74, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, 0x83, 0xF6, 0x75, 0xCC, 0x83, 0xF6, 0x55, 0xCC, 0x84, 0xF6, 0x75, 0xCC, 0x84, 0xF6, 0x55, 0xCC, 0x86, 0xF6, 0x75, 0xCC, 0x86, 0xF6, 0x55, 0xCC, 0x8A, 0xF6, 0x75, 0xCC, 0x8A, 0xF6, 0x55, 0xCC, 0x8B, 0xF6, 0x75, 0xCC, 0x8B, 0xF6, 0x55, 0xCC, 0xA8, 0xF6, 0x75, 0xCC, 0xA8, 0xF6, 0x57, 0xCC, 0x82, 0xF6, 0x77, 0xCC, 0x82, 0xF6, 0x59, 0xCC, 0x82, 0xF6, 0x79, 0xCC, 0x82, 0xF6, 0x59, 0xCC, 0x88, 0xF6, 0x5A, 0xCC, 0x81, 0xF6, 0x7A, 0xCC, 0x81, 0xF6, 0x5A, 0xCC, 0x87, 0xF6, 0x7A, 0xCC, 0x87, 0xF6, 0x5A, 0xCC, 0x8C, 0xF6, 0x7A, 0xCC, 0x8C, 0x73, 0xF6, 0x4F, 0xCC, 0x9B, 0xF6, 0x6F, 0xCC, 0x9B, 0xF6, 0x55, 0xCC, 0x9B, 0xF6, 0x75, 0xCC, 0x9B, 0x44, 0x5A, 0xCC, 0x8C, 0x44, 0x7A, 0xCC, 0x8C, 0x64, 0x7A, 0xCC, 0x8C, 0x4C, 0x4A, 0x4C, 0x6A, 0x6C, 0x6A, 0x4E, 0x4A, 0x4E, 0x6A, 0x6E, 0x6A, 0xF6, 0x41, 0xCC, 0x8C, 0xF6, 0x61, 0xCC, 0x8C, 0xF6, 0x49, 0xCC, 0x8C, 0xF6, 0x69, 0xCC, 0x8C, 0xF6, 0x4F, 0xCC, 0x8C, 0xF6, 0x6F, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, 0x8C, 0xF6, 0x75, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x75, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x8C, 0xF6, 0x75, 0xCC, 0x88, 0xCC, 0x8C, 0xF6, 0x55, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0x75, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x41, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0x61, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0xC3, 0x86, 0xCC, 0x84, 0xF6, 0xC3, 0xA6, 0xCC, 0x84, 0xF6, 0x47, 0xCC, 0x8C, 0xF6, 0x67, 0xCC, 0x8C, 0xF6, 0x4B, 0xCC, 0x8C, 0xF6, 0x6B, 0xCC, 0x8C, 0xF6, 0x4F, 0xCC, 0xA8, 0xF6, 0x6F, 0xCC, 0xA8, 0xF6, 0x4F, 0xCC, 0xA8, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0xA8, 0xCC, 0x84, 0xF6, 0xC6, 0xB7, 0xCC, 0x8C, 0xF6, 0xCA, 0x92, 0xCC, 0x8C, 0xF6, 0x6A, 0xCC, 0x8C, 0x44, 0x5A, 0x44, 0x7A, 0x64, 0x7A, 0xF6, 0x47, 0xCC, 0x81, 0xF6, 0x67, 0xCC, 0x81, 0xF6, 0x4E, 0xCC, 0x80, 0xF6, 0x6E, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x8A, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x8A, 0xCC, 0x81, 0xF6, 0xC3, 0x86, 0xCC, 0x81, 0xF6, 0xC3, 0xA6, 0xCC, 0x81, 0xF6, 0xC3, 0x98, 0xCC, 0x81, 0xF6, 0xC3, 0xB8, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x8F, 0xF6, 0x61, 0xCC, 0x8F, 0xF6, 0x41, 0xCC, 0x91, 0xF6, 0x61, 0xCC, 0x91, 0xF6, 0x45, 0xCC, 0x8F, 0xF6, 0x65, 0xCC, 0x8F, 0xF6, 0x45, 0xCC, 0x91, 0xF6, 0x65, 0xCC, 0x91, 0xF6, 0x49, 0xCC, 0x8F, 0xF6, 0x69, 0xCC, 0x8F, 0xF6, 0x49, 0xCC, 0x91, 0xF6, 0x69, 0xCC, 0x91, 0xF6, 0x4F, 0xCC, 0x8F, 0xF6, 0x6F, 0xCC, 0x8F, 0xF6, 0x4F, 0xCC, 0x91, 0xF6, 0x6F, 0xCC, 0x91, 0xF6, 0x52, 0xCC, 0x8F, 0xF6, 0x72, 0xCC, 0x8F, 0xF6, 0x52, 0xCC, 0x91, 0xF6, 0x72, 0xCC, 0x91, 0xF6, 0x55, 0xCC, 0x8F, 0xF6, 0x75, 0xCC, 0x8F, 0xF6, 0x55, 0xCC, 0x91, 0xF6, 0x75, 0xCC, 0x91, 0xF6, 0x53, 0xCC, 0xA6, 0xF6, 0x73, 0xCC, 0xA6, 0xF6, 0x54, 0xCC, 0xA6, 0xF6, 0x74, 0xCC, 0xA6, 0xF6, 0x48, 0xCC, 0x8C, 0xF6, 0x68, 0xCC, 0x8C, 0xF6, 0x41, 0xCC, 0x87, 0xF6, 0x61, 0xCC, 0x87, 0xF6, 0x45, 0xCC, 0xA7, 0xF6, 0x65, 0xCC, 0xA7, 0xF6, 0x4F, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x88, 0xCC, 0x84, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x84, 0xF6, 0x4F, 0xCC, 0x87, 0xF6, 0x6F, 0xCC, 0x87, 0xF6, 0x4F, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0x6F, 0xCC, 0x87, 0xCC, 0x84, 0xF6, 0x59, 0xCC, 0x84, 0xF6, 0x79, 0xCC, 0x84, 0x68, 0xC9, 0xA6, 0x6A, 0x72, 0xC9, 0xB9, 0xC9, 0xBB, 0xCA, 0x81, 0x77, 0x79, 0x20, 0xCC, 0x86, 0x20, 0xCC, 0x87, 0x20, 0xCC, 0x8A, 0x20, 0xCC, 0xA8, 0x20, 0xCC, 0x83, 0x20, 0xCC, 0x8B, 0xC9, 0xA3, 0x6C, 0x73, 0x78, 0xCA, 0x95, 0xF6, 0xCC, 0x80, 0xF6, 0xCC, 0x81, 0xF6, 0xCC, 0x93, 0xF6, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCA, 0xB9, 0x20, 0xCD, 0x85, 0xF6, 0x3B, 0x20, 0xCC, 0x81, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x81, 0x20, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, 0x81, 0xF6, 0xC2, 0xB7, 0xF6, 0xCE, 0x95, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x81, 0xF6, 0xCE, 0xA5, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x88, 0xF6, 0xCE, 0xA5, 0xCC, 0x88, 0xF6, 0xCE, 0xB1, 0xCC, 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xF6, 0xCE, 0xBF, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xCE, 0xB2, 0xCE, 0xB8, 0xCE, 0xA5, 0xF5, 0x05, 0xCF, 0x92, 0xCC, 0x81, 0xCE, 0xA5, 0xCC, 0x81, 0xF5, 0x05, 0xCF, 0x92, 0xCC, 0x88, 0xCE, 0xA5, 0xCC, 0x88, 0xCF, 0x86, 0xCF, 0x80, 0xCE, 0xBA, 0xCF, 0x81, 0xCF, 0x82, 0xCE, 0x98, 0xCE, 0xB5, 0xCE, 0xA3, 0xF6, 0xD0, 0x95, 0xCC, 0x80, 0xF6, 0xD0, 0x95, 0xCC, 0x88, 0xF6, 0xD0, 0x93, 0xCC, 0x81, 0xF6, 0xD0, 0x86, 0xCC, 0x88, 0xF6, 0xD0, 0x9A, 0xCC, 0x81, 0xF6, 0xD0, 0x98, 0xCC, 0x80, 0xF6, 0xD0, 0xA3, 0xCC, 0x86, 0xF6, 0xD0, 0x98, 0xCC, 0x86, 0xF6, 0xD0, 0xB8, 0xCC, 0x86, 0xF6, 0xD0, 0xB5, 0xCC, 0x80, 0xF6, 0xD0, 0xB5, 0xCC, 0x88, 0xF6, 0xD0, 0xB3, 0xCC, 0x81, 0xF6, 0xD1, 0x96, 0xCC, 0x88, 0xF6, 0xD0, 0xBA, 0xCC, 0x81, 0xF6, 0xD0, 0xB8, 0xCC, 0x80, 0xF6, 0xD1, 0x83, 0xCC, 0x86, 0xF6, 0xD1, 0xB4, 0xCC, 0x8F, 0xF6, 0xD1, 0xB5, 0xCC, 0x8F, 0xF6, 0xD0, 0x96, 0xCC, 0x86, 0xF6, 0xD0, 0xB6, 0xCC, 0x86, 0xF6, 0xD0, 0x90, 0xCC, 0x86, 0xF6, 0xD0, 0xB0, 0xCC, 0x86, 0xF6, 0xD0, 0x90, 0xCC, 0x88, 0xF6, 0xD0, 0xB0, 0xCC, 0x88, 0xF6, 0xD0, 0x95, 0xCC, 0x86, 0xF6, 0xD0, 0xB5, 0xCC, 0x86, 0xF6, 0xD3, 0x98, 0xCC, 0x88, 0xF6, 0xD3, 0x99, 0xCC, 0x88, 0xF6, 0xD0, 0x96, 0xCC, 0x88, 0xF6, 0xD0, 0xB6, 0xCC, 0x88, 0xF6, 0xD0, 0x97, 0xCC, 0x88, 0xF6, 0xD0, 0xB7, 0xCC, 0x88, 0xF6, 0xD0, 0x98, 0xCC, 0x84, 0xF6, 0xD0, 0xB8, 0xCC, 0x84, 0xF6, 0xD0, 0x98, 0xCC, 0x88, 0xF6, 0xD0, 0xB8, 0xCC, 0x88, 0xF6, 0xD0, 0x9E, 0xCC, 0x88, 0xF6, 0xD0, 0xBE, 0xCC, 0x88, 0xF6, 0xD3, 0xA8, 0xCC, 0x88, 0xF6, 0xD3, 0xA9, 0xCC, 0x88, 0xF6, 0xD0, 0xAD, 0xCC, 0x88, 0xF6, 0xD1, 0x8D, 0xCC, 0x88, 0xF6, 0xD0, 0xA3, 0xCC, 0x84, 0xF6, 0xD1, 0x83, 0xCC, 0x84, 0xF6, 0xD0, 0xA3, 0xCC, 0x88, 0xF6, 0xD1, 0x83, 0xCC, 0x88, 0xF6, 0xD0, 0xA3, 0xCC, 0x8B, 0xF6, 0xD1, 0x83, 0xCC, 0x8B, 0xF6, 0xD0, 0xA7, 0xCC, 0x88, 0xF6, 0xD1, 0x87, 0xCC, 0x88, 0xF6, 0xD0, 0xAB, 0xCC, 0x88, 0xF6, 0xD1, 0x8B, 0xCC, 0x88, 0xD5, 0xA5, 0xD6, 0x82, 0xF6, 0xD8, 0xA7, 0xD9, 0x93, 0xF6, 0xD8, 0xA7, 0xD9, 0x94, 0xF6, 0xD9, 0x88, 0xD9, 0x94, 0xF6, 0xD8, 0xA7, 0xD9, 0x95, 0xF6, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0xB4, 0xD9, 0x88, 0xD9, 0xB4, 0xDB, 0x87, 0xD9, 0xB4, 0xD9, 0x8A, 0xD9, 0xB4, 0xF6, 0xDB, 0x95, 0xD9, 0x94, 0xF6, 0xDB, 0x81, 0xD9, 0x94, 0xF6, 0xDB, 0x92, 0xD9, 0x94, 0xF6, 0xE0, 0xA4, 0xA8, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xB0, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xB3, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x95, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x96, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x97, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0x9C, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xA1, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xA2, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xAB, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA4, 0xAF, 0xE0, 0xA4, 0xBC, 0xF6, 0xE0, 0xA7, 0x87, 0xE0, 0xA6, 0xBE, 0xF6, 0xE0, 0xA7, 0x87, 0xE0, 0xA7, 0x97, 0xF6, 0xE0, 0xA6, 0xA1, 0xE0, 0xA6, 0xBC, 0xF6, 0xE0, 0xA6, 0xA2, 0xE0, 0xA6, 0xBC, 0xF6, 0xE0, 0xA6, 0xAF, 0xE0, 0xA6, 0xBC, 0xF6, 0xE0, 0xA8, 0xB2, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0xB8, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0x96, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0x97, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0x9C, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xA8, 0xAB, 0xE0, 0xA8, 0xBC, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x96, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAC, 0xBE, 0xF6, 0xE0, 0xAD, 0x87, 0xE0, 0xAD, 0x97, 0xF6, 0xE0, 0xAC, 0xA1, 0xE0, 0xAC, 0xBC, 0xF6, 0xE0, 0xAC, 0xA2, 0xE0, 0xAC, 0xBC, 0xF6, 0xE0, 0xAE, 0x92, 0xE0, 0xAF, 0x97, 0xF6, 0xE0, 0xAF, 0x86, 0xE0, 0xAE, 0xBE, 0xF6, 0xE0, 0xAF, 0x87, 0xE0, 0xAE, 0xBE, 0xF6, 0xE0, 0xAF, 0x86, 0xE0, 0xAF, 0x97, 0xF6, 0xE0, 0xB1, 0x86, 0xE0, 0xB1, 0x96, 0xF6, 0xE0, 0xB2, 0xBF, 0xE0, 0xB3, 0x95, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x95, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x96, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xF6, 0xE0, 0xB3, 0x86, 0xE0, 0xB3, 0x82, 0xE0, 0xB3, 0x95, 0xF6, 0xE0, 0xB5, 0x86, 0xE0, 0xB4, 0xBE, 0xF6, 0xE0, 0xB5, 0x87, 0xE0, 0xB4, 0xBE, 0xF6, 0xE0, 0xB5, 0x86, 0xE0, 0xB5, 0x97, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8A, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x8F, 0xE0, 0xB7, 0x8A, 0xF6, 0xE0, 0xB7, 0x99, 0xE0, 0xB7, 0x9F, 0xE0, 0xB9, 0x8D, 0xE0, 0xB8, 0xB2, 0xE0, 0xBB, 0x8D, 0xE0, 0xBA, 0xB2, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0x99, 0xE0, 0xBA, 0xAB, 0xE0, 0xBA, 0xA1, 0xE0, 0xBC, 0x8B, 0xF6, 0xE0, 0xBD, 0x82, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x8C, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x91, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x96, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x9B, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBD, 0x80, 0xE0, 0xBE, 0xB5, 0xF6, 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB2, 0xF6, 0xE0, 0xBD, 0xB1, 0xE0, 0xBD, 0xB4, 0xF6, 0xE0, 0xBE, 0xB2, 0xE0, 0xBE, 0x80, 0xE0, 0xBE, 0xB2, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBE, 0xB3, 0xE0, 0xBE, 0x80, 0xE0, 0xBE, 0xB3, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBD, 0xB1, 0xE0, 0xBE, 0x80, 0xF6, 0xE0, 0xBE, 0x92, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0x9C, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xA1, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xA6, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0xAB, 0xE0, 0xBE, 0xB7, 0xF6, 0xE0, 0xBE, 0x90, 0xE0, 0xBE, 0xB5, 0xF6, 0xE1, 0x80, 0xA5, 0xE1, 0x80, 0xAE, 0xE1, 0x83, 0x9C, 0xF6, 0xE1, 0xAC, 0x85, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0x87, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0x89, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0x8B, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0x8D, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0x91, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0xBA, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0xBC, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0xBE, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAC, 0xBF, 0xE1, 0xAC, 0xB5, 0xF6, 0xE1, 0xAD, 0x82, 0xE1, 0xAC, 0xB5, 0x41, 0xC3, 0x86, 0x42, 0x44, 0x45, 0xC6, 0x8E, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0xC8, 0xA2, 0x50, 0x52, 0x54, 0x55, 0x57, 0x61, 0xC9, 0x90, 0xC9, 0x91, 0xE1, 0xB4, 0x82, 0x62, 0x64, 0x65, 0xC9, 0x99, 0xC9, 0x9B, 0xC9, 0x9C, 0x67, 0x6B, 0x6D, 0xC5, 0x8B, 0x6F, 0xC9, 0x94, 0xE1, 0xB4, 0x96, 0xE1, 0xB4, 0x97, 0x70, 0x74, 0x75, 0xE1, 0xB4, 0x9D, 0xC9, 0xAF, 0x76, 0xE1, 0xB4, 0xA5, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCF, 0x86, 0xCF, 0x87, 0x69, 0x72, 0x75, 0x76, 0xCE, 0xB2, 0xCE, 0xB3, 0xCF, 0x81, 0xCF, 0x86, 0xCF, 0x87, 0xD0, 0xBD, 0xC9, 0x92, 0x63, 0xC9, 0x95, 0xC3, 0xB0, 0xC9, 0x9C, 0x66, 0xC9, 0x9F, 0xC9, 0xA1, 0xC9, 0xA5, 0xC9, 0xA8, 0xC9, 0xA9, 0xC9, 0xAA, 0xE1, 0xB5, 0xBB, 0xCA, 0x9D, 0xC9, 0xAD, 0xE1, 0xB6, 0x85, 0xCA, 0x9F, 0xC9, 0xB1, 0xC9, 0xB0, 0xC9, 0xB2, 0xC9, 0xB3, 0xC9, 0xB4, 0xC9, 0xB5, 0xC9, 0xB8, 0xCA, 0x82, 0xCA, 0x83, 0xC6, 0xAB, 0xCA, 0x89, 0xCA, 0x8A, 0xE1, 0xB4, 0x9C, 0xCA, 0x8B, 0xCA, 0x8C, 0x7A, 0xCA, 0x90, 0xCA, 0x91, 0xCA, 0x92, 0xCE, 0xB8, 0xF6, 0x41, 0xCC, 0xA5, 0xF6, 0x61, 0xCC, 0xA5, 0xF6, 0x42, 0xCC, 0x87, 0xF6, 0x62, 0xCC, 0x87, 0xF6, 0x42, 0xCC, 0xA3, 0xF6, 0x62, 0xCC, 0xA3, 0xF6, 0x42, 0xCC, 0xB1, 0xF6, 0x62, 0xCC, 0xB1, 0xF6, 0x43, 0xCC, 0xA7, 0xCC, 0x81, 0xF6, 0x63, 0xCC, 0xA7, 0xCC, 0x81, 0xF6, 0x44, 0xCC, 0x87, 0xF6, 0x64, 0xCC, 0x87, 0xF6, 0x44, 0xCC, 0xA3, 0xF6, 0x64, 0xCC, 0xA3, 0xF6, 0x44, 0xCC, 0xB1, 0xF6, 0x64, 0xCC, 0xB1, 0xF6, 0x44, 0xCC, 0xA7, 0xF6, 0x64, 0xCC, 0xA7, 0xF6, 0x44, 0xCC, 0xAD, 0xF6, 0x64, 0xCC, 0xAD, 0xF6, 0x45, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x65, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x45, 0xCC, 0xAD, 0xF6, 0x65, 0xCC, 0xAD, 0xF6, 0x45, 0xCC, 0xB0, 0xF6, 0x65, 0xCC, 0xB0, 0xF6, 0x45, 0xCC, 0xA7, 0xCC, 0x86, 0xF6, 0x65, 0xCC, 0xA7, 0xCC, 0x86, 0xF6, 0x46, 0xCC, 0x87, 0xF6, 0x66, 0xCC, 0x87, 0xF6, 0x47, 0xCC, 0x84, 0xF6, 0x67, 0xCC, 0x84, 0xF6, 0x48, 0xCC, 0x87, 0xF6, 0x68, 0xCC, 0x87, 0xF6, 0x48, 0xCC, 0xA3, 0xF6, 0x68, 0xCC, 0xA3, 0xF6, 0x48, 0xCC, 0x88, 0xF6, 0x68, 0xCC, 0x88, 0xF6, 0x48, 0xCC, 0xA7, 0xF6, 0x68, 0xCC, 0xA7, 0xF6, 0x48, 0xCC, 0xAE, 0xF6, 0x68, 0xCC, 0xAE, 0xF6, 0x49, 0xCC, 0xB0, 0xF6, 0x69, 0xCC, 0xB0, 0xF6, 0x49, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x69, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x4B, 0xCC, 0x81, 0xF6, 0x6B, 0xCC, 0x81, 0xF6, 0x4B, 0xCC, 0xA3, 0xF6, 0x6B, 0xCC, 0xA3, 0xF6, 0x4B, 0xCC, 0xB1, 0xF6, 0x6B, 0xCC, 0xB1, 0xF6, 0x4C, 0xCC, 0xA3, 0xF6, 0x6C, 0xCC, 0xA3, 0xF6, 0x4C, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x6C, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x4C, 0xCC, 0xB1, 0xF6, 0x6C, 0xCC, 0xB1, 0xF6, 0x4C, 0xCC, 0xAD, 0xF6, 0x6C, 0xCC, 0xAD, 0xF6, 0x4D, 0xCC, 0x81, 0xF6, 0x6D, 0xCC, 0x81, 0xF6, 0x4D, 0xCC, 0x87, 0xF6, 0x6D, 0xCC, 0x87, 0xF6, 0x4D, 0xCC, 0xA3, 0xF6, 0x6D, 0xCC, 0xA3, 0xF6, 0x4E, 0xCC, 0x87, 0xF6, 0x6E, 0xCC, 0x87, 0xF6, 0x4E, 0xCC, 0xA3, 0xF6, 0x6E, 0xCC, 0xA3, 0xF6, 0x4E, 0xCC, 0xB1, 0xF6, 0x6E, 0xCC, 0xB1, 0xF6, 0x4E, 0xCC, 0xAD, 0xF6, 0x6E, 0xCC, 0xAD, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x83, 0xCC, 0x88, 0xF6, 0x6F, 0xCC, 0x83, 0xCC, 0x88, 0xF6, 0x4F, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x84, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x84, 0xCC, 0x81, 0xF6, 0x50, 0xCC, 0x81, 0xF6, 0x70, 0xCC, 0x81, 0xF6, 0x50, 0xCC, 0x87, 0xF6, 0x70, 0xCC, 0x87, 0xF6, 0x52, 0xCC, 0x87, 0xF6, 0x72, 0xCC, 0x87, 0xF6, 0x52, 0xCC, 0xA3, 0xF6, 0x72, 0xCC, 0xA3, 0xF6, 0x52, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x72, 0xCC, 0xA3, 0xCC, 0x84, 0xF6, 0x52, 0xCC, 0xB1, 0xF6, 0x72, 0xCC, 0xB1, 0xF6, 0x53, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0x87, 0xF6, 0x53, 0xCC, 0xA3, 0xF6, 0x73, 0xCC, 0xA3, 0xF6, 0x53, 0xCC, 0x81, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0x81, 0xCC, 0x87, 0xF6, 0x53, 0xCC, 0x8C, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0x8C, 0xCC, 0x87, 0xF6, 0x53, 0xCC, 0xA3, 0xCC, 0x87, 0xF6, 0x73, 0xCC, 0xA3, 0xCC, 0x87, 0xF6, 0x54, 0xCC, 0x87, 0xF6, 0x74, 0xCC, 0x87, 0xF6, 0x54, 0xCC, 0xA3, 0xF6, 0x74, 0xCC, 0xA3, 0xF6, 0x54, 0xCC, 0xB1, 0xF6, 0x74, 0xCC, 0xB1, 0xF6, 0x54, 0xCC, 0xAD, 0xF6, 0x74, 0xCC, 0xAD, 0xF6, 0x55, 0xCC, 0xA4, 0xF6, 0x75, 0xCC, 0xA4, 0xF6, 0x55, 0xCC, 0xB0, 0xF6, 0x75, 0xCC, 0xB0, 0xF6, 0x55, 0xCC, 0xAD, 0xF6, 0x75, 0xCC, 0xAD, 0xF6, 0x55, 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x83, 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x84, 0xCC, 0x88, 0xF6, 0x75, 0xCC, 0x84, 0xCC, 0x88, 0xF6, 0x56, 0xCC, 0x83, 0xF6, 0x76, 0xCC, 0x83, 0xF6, 0x56, 0xCC, 0xA3, 0xF6, 0x76, 0xCC, 0xA3, 0xF6, 0x57, 0xCC, 0x80, 0xF6, 0x77, 0xCC, 0x80, 0xF6, 0x57, 0xCC, 0x81, 0xF6, 0x77, 0xCC, 0x81, 0xF6, 0x57, 0xCC, 0x88, 0xF6, 0x77, 0xCC, 0x88, 0xF6, 0x57, 0xCC, 0x87, 0xF6, 0x77, 0xCC, 0x87, 0xF6, 0x57, 0xCC, 0xA3, 0xF6, 0x77, 0xCC, 0xA3, 0xF6, 0x58, 0xCC, 0x87, 0xF6, 0x78, 0xCC, 0x87, 0xF6, 0x58, 0xCC, 0x88, 0xF6, 0x78, 0xCC, 0x88, 0xF6, 0x59, 0xCC, 0x87, 0xF6, 0x79, 0xCC, 0x87, 0xF6, 0x5A, 0xCC, 0x82, 0xF6, 0x7A, 0xCC, 0x82, 0xF6, 0x5A, 0xCC, 0xA3, 0xF6, 0x7A, 0xCC, 0xA3, 0xF6, 0x5A, 0xCC, 0xB1, 0xF6, 0x7A, 0xCC, 0xB1, 0xF6, 0x68, 0xCC, 0xB1, 0xF6, 0x74, 0xCC, 0x88, 0xF6, 0x77, 0xCC, 0x8A, 0xF6, 0x79, 0xCC, 0x8A, 0x61, 0xCA, 0xBE, 0xF5, 0x05, 0xC5, 0xBF, 0xCC, 0x87, 0x73, 0xCC, 0x87, 0xF6, 0x41, 0xCC, 0xA3, 0xF6, 0x61, 0xCC, 0xA3, 0xF6, 0x41, 0xCC, 0x89, 0xF6, 0x61, 0xCC, 0x89, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x41, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x61, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x81, 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x81, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x80, 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x80, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x89, 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x89, 0xF6, 0x41, 0xCC, 0x86, 0xCC, 0x83, 0xF6, 0x61, 0xCC, 0x86, 0xCC, 0x83, 0xF6, 0x41, 0xCC, 0xA3, 0xCC, 0x86, 0xF6, 0x61, 0xCC, 0xA3, 0xCC, 0x86, 0xF6, 0x45, 0xCC, 0xA3, 0xF6, 0x65, 0xCC, 0xA3, 0xF6, 0x45, 0xCC, 0x89, 0xF6, 0x65, 0xCC, 0x89, 0xF6, 0x45, 0xCC, 0x83, 0xF6, 0x65, 0xCC, 0x83, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x45, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x65, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x45, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x65, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x49, 0xCC, 0x89, 0xF6, 0x69, 0xCC, 0x89, 0xF6, 0x49, 0xCC, 0xA3, 0xF6, 0x69, 0xCC, 0xA3, 0xF6, 0x4F, 0xCC, 0xA3, 0xF6, 0x6F, 0xCC, 0xA3, 0xF6, 0x4F, 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x89, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x89, 0xF6, 0x4F, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x82, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x6F, 0xCC, 0xA3, 0xCC, 0x82, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x4F, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x6F, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x55, 0xCC, 0xA3, 0xF6, 0x75, 0xCC, 0xA3, 0xF6, 0x55, 0xCC, 0x89, 0xF6, 0x75, 0xCC, 0x89, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x81, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x80, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x89, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0x83, 0xF6, 0x55, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x75, 0xCC, 0x9B, 0xCC, 0xA3, 0xF6, 0x59, 0xCC, 0x80, 0xF6, 0x79, 0xCC, 0x80, 0xF6, 0x59, 0xCC, 0xA3, 0xF6, 0x79, 0xCC, 0xA3, 0xF6, 0x59, 0xCC, 0x89, 0xF6, 0x79, 0xCC, 0x89, 0xF6, 0x59, 0xCC, 0x83, 0xF6, 0x79, 0xCC, 0x83, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xF6, 0xCE, 0x95, 0xCC, 0x94, 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x95, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x99, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0x99, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xBF, 0xCC, 0x93, 0xF6, 0xCE, 0xBF, 0xCC, 0x94, 0xF6, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xBF, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x93, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xF6, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0x9F, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCF, 0x85, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xA5, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCE, 0xB1, 0xCC, 0x80, 0xF6, 0xCE, 0xB1, 0xCC, 0x81, 0xF6, 0xCE, 0xB5, 0xCC, 0x80, 0xF6, 0xCE, 0xB5, 0xCC, 0x81, 0xF6, 0xCE, 0xB7, 0xCC, 0x80, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x81, 0xF6, 0xCE, 0xBF, 0xCC, 0x80, 0xF6, 0xCE, 0xBF, 0xCC, 0x81, 0xF6, 0xCF, 0x85, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x81, 0xF6, 0xCF, 0x89, 0xCC, 0x80, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x97, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x93, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xA9, 0xCC, 0x94, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x86, 0xF6, 0xCE, 0xB1, 0xCC, 0x84, 0xF6, 0xCE, 0xB1, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB1, 0xCD, 0x82, 0xF6, 0xCE, 0xB1, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x91, 0xCC, 0x86, 0xF6, 0xCE, 0x91, 0xCC, 0x84, 0xF6, 0xCE, 0x91, 0xCC, 0x80, 0xF6, 0xCE, 0x91, 0xCC, 0x81, 0xF6, 0xCE, 0x91, 0xCD, 0x85, 0x20, 0xCC, 0x93, 0xF6, 0xCE, 0xB9, 0x20, 0xCC, 0x93, 0x20, 0xCD, 0x82, 0xF5, 0x05, 0xC2, 0xA8, 0xCD, 0x82, 0x20, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, 0xB7, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCE, 0xB7, 0xCD, 0x82, 0xF6, 0xCE, 0xB7, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x95, 0xCC, 0x80, 0xF6, 0xCE, 0x95, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCC, 0x80, 0xF6, 0xCE, 0x97, 0xCC, 0x81, 0xF6, 0xCE, 0x97, 0xCD, 0x85, 0xF5, 0x06, 0xE1, 0xBE, 0xBF, 0xCC, 0x80, 0x20, 0xCC, 0x93, 0xCC, 0x80, 0xF5, 0x06, 0xE1, 0xBE, 0xBF, 0xCC, 0x81, 0x20, 0xCC, 0x93, 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBE, 0xBF, 0xCD, 0x82, 0x20, 0xCC, 0x93, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x86, 0xF6, 0xCE, 0xB9, 0xCC, 0x84, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCE, 0xB9, 0xCD, 0x82, 0xF6, 0xCE, 0xB9, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, 0x99, 0xCC, 0x86, 0xF6, 0xCE, 0x99, 0xCC, 0x84, 0xF6, 0xCE, 0x99, 0xCC, 0x80, 0xF6, 0xCE, 0x99, 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, 0xCC, 0x80, 0x20, 0xCC, 0x94, 0xCC, 0x80, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, 0xCC, 0x81, 0x20, 0xCC, 0x94, 0xCC, 0x81, 0xF5, 0x06, 0xE1, 0xBF, 0xBE, 0xCD, 0x82, 0x20, 0xCC, 0x94, 0xCD, 0x82, 0xF6, 0xCF, 0x85, 0xCC, 0x86, 0xF6, 0xCF, 0x85, 0xCC, 0x84, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x80, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0xCF, 0x81, 0xCC, 0x93, 0xF6, 0xCF, 0x81, 0xCC, 0x94, 0xF6, 0xCF, 0x85, 0xCD, 0x82, 0xF6, 0xCF, 0x85, 0xCC, 0x88, 0xCD, 0x82, 0xF6, 0xCE, 0xA5, 0xCC, 0x86, 0xF6, 0xCE, 0xA5, 0xCC, 0x84, 0xF6, 0xCE, 0xA5, 0xCC, 0x80, 0xF6, 0xCE, 0xA5, 0xCC, 0x81, 0xF6, 0xCE, 0xA1, 0xCC, 0x94, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x80, 0x20, 0xCC, 0x88, 0xCC, 0x80, 0xF5, 0x05, 0xC2, 0xA8, 0xCC, 0x81, 0x20, 0xCC, 0x88, 0xCC, 0x81, 0xF6, 0x60, 0xF6, 0xCF, 0x89, 0xCC, 0x80, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCC, 0x81, 0xCD, 0x85, 0xF6, 0xCF, 0x89, 0xCD, 0x82, 0xF6, 0xCF, 0x89, 0xCD, 0x82, 0xCD, 0x85, 0xF6, 0xCE, 0x9F, 0xCC, 0x80, 0xF6, 0xCE, 0x9F, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCC, 0x80, 0xF6, 0xCE, 0xA9, 0xCC, 0x81, 0xF6, 0xCE, 0xA9, 0xCD, 0x85, 0xF5, 0x03, 0xC2, 0xB4, 0x20, 0xCC, 0x81, 0x20, 0xCC, 0x94, 0xF5, 0x04, 0xE2, 0x80, 0x82, 0x20, 0xF5, 0x04, 0xE2, 0x80, 0x83, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xE2, 0x80, 0x90, 0x20, 0xCC, 0xB3, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0x20, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0xE2, 0x80, 0xB5, 0x21, 0x21, 0x20, 0xCC, 0x85, 0x3F, 0x3F, 0x3F, 0x21, 0x21, 0x3F, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0xE2, 0x80, 0xB2, 0x20, 0x30, 0x69, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0xE2, 0x88, 0x92, 0x3D, 0x28, 0x29, 0x6E, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2B, 0xE2, 0x88, 0x92, 0x3D, 0x28, 0x29, 0x61, 0x65, 0x6F, 0x78, 0xC9, 0x99, 0x52, 0x73, 0x61, 0x2F, 0x63, 0x61, 0x2F, 0x73, 0x43, 0xC2, 0xB0, 0x43, 0x63, 0x2F, 0x6F, 0x63, 0x2F, 0x75, 0xC6, 0x90, 0xC2, 0xB0, 0x46, 0x67, 0x48, 0x48, 0x48, 0x68, 0xC4, 0xA7, 0x49, 0x49, 0x4C, 0x6C, 0x4E, 0x4E, 0x6F, 0x50, 0x51, 0x52, 0x52, 0x52, 0x53, 0x4D, 0x54, 0x45, 0x4C, 0x54, 0x4D, 0x5A, 0xF6, 0xCE, 0xA9, 0x5A, 0xF6, 0x4B, 0xF6, 0x41, 0xCC, 0x8A, 0x42, 0x43, 0x65, 0x45, 0x46, 0x4D, 0x6F, 0xD7, 0x90, 0xD7, 0x91, 0xD7, 0x92, 0xD7, 0x93, 0x69, 0x46, 0x41, 0x58, 0xCF, 0x80, 0xCE, 0xB3, 0xCE, 0x93, 0xCE, 0xA0, 0xE2, 0x88, 0x91, 0x44, 0x64, 0x65, 0x69, 0x6A, 0x31, 0xE2, 0x81, 0x84, 0x33, 0x32, 0xE2, 0x81, 0x84, 0x33, 0x31, 0xE2, 0x81, 0x84, 0x35, 0x32, 0xE2, 0x81, 0x84, 0x35, 0x33, 0xE2, 0x81, 0x84, 0x35, 0x34, 0xE2, 0x81, 0x84, 0x35, 0x31, 0xE2, 0x81, 0x84, 0x36, 0x35, 0xE2, 0x81, 0x84, 0x36, 0x31, 0xE2, 0x81, 0x84, 0x38, 0x33, 0xE2, 0x81, 0x84, 0x38, 0x35, 0xE2, 0x81, 0x84, 0x38, 0x37, 0xE2, 0x81, 0x84, 0x38, 0x31, 0xE2, 0x81, 0x84, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x56, 0x56, 0x56, 0x49, 0x56, 0x49, 0x49, 0x56, 0x49, 0x49, 0x49, 0x49, 0x58, 0x58, 0x58, 0x49, 0x58, 0x49, 0x49, 0x4C, 0x43, 0x44, 0x4D, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x76, 0x76, 0x76, 0x69, 0x76, 0x69, 0x69, 0x76, 0x69, 0x69, 0x69, 0x69, 0x78, 0x78, 0x78, 0x69, 0x78, 0x69, 0x69, 0x6C, 0x63, 0x64, 0x6D, 0xF6, 0xE2, 0x86, 0x90, 0xCC, 0xB8, 0xF6, 0xE2, 0x86, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, 0x86, 0x94, 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x90, 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x94, 0xCC, 0xB8, 0xF6, 0xE2, 0x87, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x88, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0x8B, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0xA3, 0xCC, 0xB8, 0xF6, 0xE2, 0x88, 0xA5, 0xCC, 0xB8, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xE2, 0x88, 0xAE, 0xF6, 0xE2, 0x88, 0xBC, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x85, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x88, 0xCC, 0xB8, 0xF6, 0x3D, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA1, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0x8D, 0xCC, 0xB8, 0xF6, 0x3C, 0xCC, 0xB8, 0xF6, 0x3E, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA4, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xA5, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB2, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB3, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB6, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xB7, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBA, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBB, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x82, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x83, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x86, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x87, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA2, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA8, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xA9, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xAB, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBC, 0xCC, 0xB8, 0xF6, 0xE2, 0x89, 0xBD, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x91, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0x92, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB2, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB3, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB4, 0xCC, 0xB8, 0xF6, 0xE2, 0x8A, 0xB5, 0xCC, 0xB8, 0xF6, 0xE3, 0x80, 0x88, 0xF6, 0xE3, 0x80, 0x89, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x31, 0x30, 0x31, 0x31, 0x31, 0x32, 0x31, 0x33, 0x31, 0x34, 0x31, 0x35, 0x31, 0x36, 0x31, 0x37, 0x31, 0x38, 0x31, 0x39, 0x32, 0x30, 0x28, 0x31, 0x29, 0x28, 0x32, 0x29, 0x28, 0x33, 0x29, 0x28, 0x34, 0x29, 0x28, 0x35, 0x29, 0x28, 0x36, 0x29, 0x28, 0x37, 0x29, 0x28, 0x38, 0x29, 0x28, 0x39, 0x29, 0x28, 0x31, 0x30, 0x29, 0x28, 0x31, 0x31, 0x29, 0x28, 0x31, 0x32, 0x29, 0x28, 0x31, 0x33, 0x29, 0x28, 0x31, 0x34, 0x29, 0x28, 0x31, 0x35, 0x29, 0x28, 0x31, 0x36, 0x29, 0x28, 0x31, 0x37, 0x29, 0x28, 0x31, 0x38, 0x29, 0x28, 0x31, 0x39, 0x29, 0x28, 0x32, 0x30, 0x29, 0x31, 0x2E, 0x32, 0x2E, 0x33, 0x2E, 0x34, 0x2E, 0x35, 0x2E, 0x36, 0x2E, 0x37, 0x2E, 0x38, 0x2E, 0x39, 0x2E, 0x31, 0x30, 0x2E, 0x31, 0x31, 0x2E, 0x31, 0x32, 0x2E, 0x31, 0x33, 0x2E, 0x31, 0x34, 0x2E, 0x31, 0x35, 0x2E, 0x31, 0x36, 0x2E, 0x31, 0x37, 0x2E, 0x31, 0x38, 0x2E, 0x31, 0x39, 0x2E, 0x32, 0x30, 0x2E, 0x28, 0x61, 0x29, 0x28, 0x62, 0x29, 0x28, 0x63, 0x29, 0x28, 0x64, 0x29, 0x28, 0x65, 0x29, 0x28, 0x66, 0x29, 0x28, 0x67, 0x29, 0x28, 0x68, 0x29, 0x28, 0x69, 0x29, 0x28, 0x6A, 0x29, 0x28, 0x6B, 0x29, 0x28, 0x6C, 0x29, 0x28, 0x6D, 0x29, 0x28, 0x6E, 0x29, 0x28, 0x6F, 0x29, 0x28, 0x70, 0x29, 0x28, 0x71, 0x29, 0x28, 0x72, 0x29, 0x28, 0x73, 0x29, 0x28, 0x74, 0x29, 0x28, 0x75, 0x29, 0x28, 0x76, 0x29, 0x28, 0x77, 0x29, 0x28, 0x78, 0x29, 0x28, 0x79, 0x29, 0x28, 0x7A, 0x29, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x30, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0xE2, 0x88, 0xAB, 0x3A, 0x3A, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0xF6, 0xE2, 0xAB, 0x9D, 0xCC, 0xB8, 0xE2, 0xB5, 0xA1, 0xE6, 0xAF, 0x8D, 0xE9, 0xBE, 0x9F, 0xE4, 0xB8, 0x80, 0xE4, 0xB8, 0xA8, 0xE4, 0xB8, 0xB6, 0xE4, 0xB8, 0xBF, 0xE4, 0xB9, 0x99, 0xE4, 0xBA, 0x85, 0xE4, 0xBA, 0x8C, 0xE4, 0xBA, 0xA0, 0xE4, 0xBA, 0xBA, 0xE5, 0x84, 0xBF, 0xE5, 0x85, 0xA5, 0xE5, 0x85, 0xAB, 0xE5, 0x86, 0x82, 0xE5, 0x86, 0x96, 0xE5, 0x86, 0xAB, 0xE5, 0x87, 0xA0, 0xE5, 0x87, 0xB5, 0xE5, 0x88, 0x80, 0xE5, 0x8A, 0x9B, 0xE5, 0x8B, 0xB9, 0xE5, 0x8C, 0x95, 0xE5, 0x8C, 0x9A, 0xE5, 0x8C, 0xB8, 0xE5, 0x8D, 0x81, 0xE5, 0x8D, 0x9C, 0xE5, 0x8D, 0xA9, 0xE5, 0x8E, 0x82, 0xE5, 0x8E, 0xB6, 0xE5, 0x8F, 0x88, 0xE5, 0x8F, 0xA3, 0xE5, 0x9B, 0x97, 0xE5, 0x9C, 0x9F, 0xE5, 0xA3, 0xAB, 0xE5, 0xA4, 0x82, 0xE5, 0xA4, 0x8A, 0xE5, 0xA4, 0x95, 0xE5, 0xA4, 0xA7, 0xE5, 0xA5, 0xB3, 0xE5, 0xAD, 0x90, 0xE5, 0xAE, 0x80, 0xE5, 0xAF, 0xB8, 0xE5, 0xB0, 0x8F, 0xE5, 0xB0, 0xA2, 0xE5, 0xB0, 0xB8, 0xE5, 0xB1, 0xAE, 0xE5, 0xB1, 0xB1, 0xE5, 0xB7, 0x9B, 0xE5, 0xB7, 0xA5, 0xE5, 0xB7, 0xB1, 0xE5, 0xB7, 0xBE, 0xE5, 0xB9, 0xB2, 0xE5, 0xB9, 0xBA, 0xE5, 0xB9, 0xBF, 0xE5, 0xBB, 0xB4, 0xE5, 0xBB, 0xBE, 0xE5, 0xBC, 0x8B, 0xE5, 0xBC, 0x93, 0xE5, 0xBD, 0x90, 0xE5, 0xBD, 0xA1, 0xE5, 0xBD, 0xB3, 0xE5, 0xBF, 0x83, 0xE6, 0x88, 0x88, 0xE6, 0x88, 0xB6, 0xE6, 0x89, 0x8B, 0xE6, 0x94, 0xAF, 0xE6, 0x94, 0xB4, 0xE6, 0x96, 0x87, 0xE6, 0x96, 0x97, 0xE6, 0x96, 0xA4, 0xE6, 0x96, 0xB9, 0xE6, 0x97, 0xA0, 0xE6, 0x97, 0xA5, 0xE6, 0x9B, 0xB0, 0xE6, 0x9C, 0x88, 0xE6, 0x9C, 0xA8, 0xE6, 0xAC, 0xA0, 0xE6, 0xAD, 0xA2, 0xE6, 0xAD, 0xB9, 0xE6, 0xAE, 0xB3, 0xE6, 0xAF, 0x8B, 0xE6, 0xAF, 0x94, 0xE6, 0xAF, 0x9B, 0xE6, 0xB0, 0x8F, 0xE6, 0xB0, 0x94, 0xE6, 0xB0, 0xB4, 0xE7, 0x81, 0xAB, 0xE7, 0x88, 0xAA, 0xE7, 0x88, 0xB6, 0xE7, 0x88, 0xBB, 0xE7, 0x88, 0xBF, 0xE7, 0x89, 0x87, 0xE7, 0x89, 0x99, 0xE7, 0x89, 0x9B, 0xE7, 0x8A, 0xAC, 0xE7, 0x8E, 0x84, 0xE7, 0x8E, 0x89, 0xE7, 0x93, 0x9C, 0xE7, 0x93, 0xA6, 0xE7, 0x94, 0x98, 0xE7, 0x94, 0x9F, 0xE7, 0x94, 0xA8, 0xE7, 0x94, 0xB0, 0xE7, 0x96, 0x8B, 0xE7, 0x96, 0x92, 0xE7, 0x99, 0xB6, 0xE7, 0x99, 0xBD, 0xE7, 0x9A, 0xAE, 0xE7, 0x9A, 0xBF, 0xE7, 0x9B, 0xAE, 0xE7, 0x9F, 0x9B, 0xE7, 0x9F, 0xA2, 0xE7, 0x9F, 0xB3, 0xE7, 0xA4, 0xBA, 0xE7, 0xA6, 0xB8, 0xE7, 0xA6, 0xBE, 0xE7, 0xA9, 0xB4, 0xE7, 0xAB, 0x8B, 0xE7, 0xAB, 0xB9, 0xE7, 0xB1, 0xB3, 0xE7, 0xB3, 0xB8, 0xE7, 0xBC, 0xB6, 0xE7, 0xBD, 0x91, 0xE7, 0xBE, 0x8A, 0xE7, 0xBE, 0xBD, 0xE8, 0x80, 0x81, 0xE8, 0x80, 0x8C, 0xE8, 0x80, 0x92, 0xE8, 0x80, 0xB3, 0xE8, 0x81, 0xBF, 0xE8, 0x82, 0x89, 0xE8, 0x87, 0xA3, 0xE8, 0x87, 0xAA, 0xE8, 0x87, 0xB3, 0xE8, 0x87, 0xBC, 0xE8, 0x88, 0x8C, 0xE8, 0x88, 0x9B, 0xE8, 0x88, 0x9F, 0xE8, 0x89, 0xAE, 0xE8, 0x89, 0xB2, 0xE8, 0x89, 0xB8, 0xE8, 0x99, 0x8D, 0xE8, 0x99, 0xAB, 0xE8, 0xA1, 0x80, 0xE8, 0xA1, 0x8C, 0xE8, 0xA1, 0xA3, 0xE8, 0xA5, 0xBE, 0xE8, 0xA6, 0x8B, 0xE8, 0xA7, 0x92, 0xE8, 0xA8, 0x80, 0xE8, 0xB0, 0xB7, 0xE8, 0xB1, 0x86, 0xE8, 0xB1, 0x95, 0xE8, 0xB1, 0xB8, 0xE8, 0xB2, 0x9D, 0xE8, 0xB5, 0xA4, 0xE8, 0xB5, 0xB0, 0xE8, 0xB6, 0xB3, 0xE8, 0xBA, 0xAB, 0xE8, 0xBB, 0x8A, 0xE8, 0xBE, 0x9B, 0xE8, 0xBE, 0xB0, 0xE8, 0xBE, 0xB5, 0xE9, 0x82, 0x91, 0xE9, 0x85, 0x89, 0xE9, 0x87, 0x86, 0xE9, 0x87, 0x8C, 0xE9, 0x87, 0x91, 0xE9, 0x95, 0xB7, 0xE9, 0x96, 0x80, 0xE9, 0x98, 0x9C, 0xE9, 0x9A, 0xB6, 0xE9, 0x9A, 0xB9, 0xE9, 0x9B, 0xA8, 0xE9, 0x9D, 0x91, 0xE9, 0x9D, 0x9E, 0xE9, 0x9D, 0xA2, 0xE9, 0x9D, 0xA9, 0xE9, 0x9F, 0x8B, 0xE9, 0x9F, 0xAD, 0xE9, 0x9F, 0xB3, 0xE9, 0xA0, 0x81, 0xE9, 0xA2, 0xA8, 0xE9, 0xA3, 0x9B, 0xE9, 0xA3, 0x9F, 0xE9, 0xA6, 0x96, 0xE9, 0xA6, 0x99, 0xE9, 0xA6, 0xAC, 0xE9, 0xAA, 0xA8, 0xE9, 0xAB, 0x98, 0xE9, 0xAB, 0x9F, 0xE9, 0xAC, 0xA5, 0xE9, 0xAC, 0xAF, 0xE9, 0xAC, 0xB2, 0xE9, 0xAC, 0xBC, 0xE9, 0xAD, 0x9A, 0xE9, 0xB3, 0xA5, 0xE9, 0xB9, 0xB5, 0xE9, 0xB9, 0xBF, 0xE9, 0xBA, 0xA5, 0xE9, 0xBA, 0xBB, 0xE9, 0xBB, 0x83, 0xE9, 0xBB, 0x8D, 0xE9, 0xBB, 0x91, 0xE9, 0xBB, 0xB9, 0xE9, 0xBB, 0xBD, 0xE9, 0xBC, 0x8E, 0xE9, 0xBC, 0x93, 0xE9, 0xBC, 0xA0, 0xE9, 0xBC, 0xBB, 0xE9, 0xBD, 0x8A, 0xE9, 0xBD, 0x92, 0xE9, 0xBE, 0x8D, 0xE9, 0xBE, 0x9C, 0xE9, 0xBE, 0xA0, 0x20, 0xE3, 0x80, 0x92, 0xE5, 0x8D, 0x81, 0xE5, 0x8D, 0x84, 0xE5, 0x8D, 0x85, 0xF6, 0xE3, 0x81, 0x8B, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x8D, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x8F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x91, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x93, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x95, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x97, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x99, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x9B, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x9D, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0x9F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA4, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA6, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xA8, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xAF, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB2, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB5, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xB8, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x81, 0xBB, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x81, 0x86, 0xE3, 0x82, 0x99, 0x20, 0xE3, 0x82, 0x99, 0x20, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x82, 0x9D, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0x88, 0xE3, 0x82, 0x8A, 0xF6, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x84, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xF6, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xAF, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xB0, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xB1, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0x99, 0xF6, 0xE3, 0x83, 0xBD, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x88, 0xE1, 0x84, 0x80, 0xE1, 0x84, 0x81, 0xE1, 0x86, 0xAA, 0xE1, 0x84, 0x82, 0xE1, 0x86, 0xAC, 0xE1, 0x86, 0xAD, 0xE1, 0x84, 0x83, 0xE1, 0x84, 0x84, 0xE1, 0x84, 0x85, 0xE1, 0x86, 0xB0, 0xE1, 0x86, 0xB1, 0xE1, 0x86, 0xB2, 0xE1, 0x86, 0xB3, 0xE1, 0x86, 0xB4, 0xE1, 0x86, 0xB5, 0xE1, 0x84, 0x9A, 0xE1, 0x84, 0x86, 0xE1, 0x84, 0x87, 0xE1, 0x84, 0x88, 0xE1, 0x84, 0xA1, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8A, 0xE1, 0x84, 0x8B, 0xE1, 0x84, 0x8C, 0xE1, 0x84, 0x8D, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x85, 0xA2, 0xE1, 0x85, 0xA3, 0xE1, 0x85, 0xA4, 0xE1, 0x85, 0xA5, 0xE1, 0x85, 0xA6, 0xE1, 0x85, 0xA7, 0xE1, 0x85, 0xA8, 0xE1, 0x85, 0xA9, 0xE1, 0x85, 0xAA, 0xE1, 0x85, 0xAB, 0xE1, 0x85, 0xAC, 0xE1, 0x85, 0xAD, 0xE1, 0x85, 0xAE, 0xE1, 0x85, 0xAF, 0xE1, 0x85, 0xB0, 0xE1, 0x85, 0xB1, 0xE1, 0x85, 0xB2, 0xE1, 0x85, 0xB3, 0xE1, 0x85, 0xB4, 0xE1, 0x85, 0xB5, 0xE1, 0x85, 0xA0, 0xE1, 0x84, 0x94, 0xE1, 0x84, 0x95, 0xE1, 0x87, 0x87, 0xE1, 0x87, 0x88, 0xE1, 0x87, 0x8C, 0xE1, 0x87, 0x8E, 0xE1, 0x87, 0x93, 0xE1, 0x87, 0x97, 0xE1, 0x87, 0x99, 0xE1, 0x84, 0x9C, 0xE1, 0x87, 0x9D, 0xE1, 0x87, 0x9F, 0xE1, 0x84, 0x9D, 0xE1, 0x84, 0x9E, 0xE1, 0x84, 0xA0, 0xE1, 0x84, 0xA2, 0xE1, 0x84, 0xA3, 0xE1, 0x84, 0xA7, 0xE1, 0x84, 0xA9, 0xE1, 0x84, 0xAB, 0xE1, 0x84, 0xAC, 0xE1, 0x84, 0xAD, 0xE1, 0x84, 0xAE, 0xE1, 0x84, 0xAF, 0xE1, 0x84, 0xB2, 0xE1, 0x84, 0xB6, 0xE1, 0x85, 0x80, 0xE1, 0x85, 0x87, 0xE1, 0x85, 0x8C, 0xE1, 0x87, 0xB1, 0xE1, 0x87, 0xB2, 0xE1, 0x85, 0x97, 0xE1, 0x85, 0x98, 0xE1, 0x85, 0x99, 0xE1, 0x86, 0x84, 0xE1, 0x86, 0x85, 0xE1, 0x86, 0x88, 0xE1, 0x86, 0x91, 0xE1, 0x86, 0x92, 0xE1, 0x86, 0x94, 0xE1, 0x86, 0x9E, 0xE1, 0x86, 0xA1, 0xE4, 0xB8, 0x80, 0xE4, 0xBA, 0x8C, 0xE4, 0xB8, 0x89, 0xE5, 0x9B, 0x9B, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0xAD, 0xE4, 0xB8, 0x8B, 0xE7, 0x94, 0xB2, 0xE4, 0xB9, 0x99, 0xE4, 0xB8, 0x99, 0xE4, 0xB8, 0x81, 0xE5, 0xA4, 0xA9, 0xE5, 0x9C, 0xB0, 0xE4, 0xBA, 0xBA, 0x28, 0xE1, 0x84, 0x80, 0x29, 0x28, 0xE1, 0x84, 0x82, 0x29, 0x28, 0xE1, 0x84, 0x83, 0x29, 0x28, 0xE1, 0x84, 0x85, 0x29, 0x28, 0xE1, 0x84, 0x86, 0x29, 0x28, 0xE1, 0x84, 0x87, 0x29, 0x28, 0xE1, 0x84, 0x89, 0x29, 0x28, 0xE1, 0x84, 0x8B, 0x29, 0x28, 0xE1, 0x84, 0x8C, 0x29, 0x28, 0xE1, 0x84, 0x8E, 0x29, 0x28, 0xE1, 0x84, 0x8F, 0x29, 0x28, 0xE1, 0x84, 0x90, 0x29, 0x28, 0xE1, 0x84, 0x91, 0x29, 0x28, 0xE1, 0x84, 0x92, 0x29, 0x28, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0x29, 0x28, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0x29, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA5, 0xE1, 0x86, 0xAB, 0x29, 0x28, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xAE, 0x29, 0x28, 0xE4, 0xB8, 0x80, 0x29, 0x28, 0xE4, 0xBA, 0x8C, 0x29, 0x28, 0xE4, 0xB8, 0x89, 0x29, 0x28, 0xE5, 0x9B, 0x9B, 0x29, 0x28, 0xE4, 0xBA, 0x94, 0x29, 0x28, 0xE5, 0x85, 0xAD, 0x29, 0x28, 0xE4, 0xB8, 0x83, 0x29, 0x28, 0xE5, 0x85, 0xAB, 0x29, 0x28, 0xE4, 0xB9, 0x9D, 0x29, 0x28, 0xE5, 0x8D, 0x81, 0x29, 0x28, 0xE6, 0x9C, 0x88, 0x29, 0x28, 0xE7, 0x81, 0xAB, 0x29, 0x28, 0xE6, 0xB0, 0xB4, 0x29, 0x28, 0xE6, 0x9C, 0xA8, 0x29, 0x28, 0xE9, 0x87, 0x91, 0x29, 0x28, 0xE5, 0x9C, 0x9F, 0x29, 0x28, 0xE6, 0x97, 0xA5, 0x29, 0x28, 0xE6, 0xA0, 0xAA, 0x29, 0x28, 0xE6, 0x9C, 0x89, 0x29, 0x28, 0xE7, 0xA4, 0xBE, 0x29, 0x28, 0xE5, 0x90, 0x8D, 0x29, 0x28, 0xE7, 0x89, 0xB9, 0x29, 0x28, 0xE8, 0xB2, 0xA1, 0x29, 0x28, 0xE7, 0xA5, 0x9D, 0x29, 0x28, 0xE5, 0x8A, 0xB4, 0x29, 0x28, 0xE4, 0xBB, 0xA3, 0x29, 0x28, 0xE5, 0x91, 0xBC, 0x29, 0x28, 0xE5, 0xAD, 0xA6, 0x29, 0x28, 0xE7, 0x9B, 0xA3, 0x29, 0x28, 0xE4, 0xBC, 0x81, 0x29, 0x28, 0xE8, 0xB3, 0x87, 0x29, 0x28, 0xE5, 0x8D, 0x94, 0x29, 0x28, 0xE7, 0xA5, 0xAD, 0x29, 0x28, 0xE4, 0xBC, 0x91, 0x29, 0x28, 0xE8, 0x87, 0xAA, 0x29, 0x28, 0xE8, 0x87, 0xB3, 0x29, 0x50, 0x54, 0x45, 0x32, 0x31, 0x32, 0x32, 0x32, 0x33, 0x32, 0x34, 0x32, 0x35, 0x32, 0x36, 0x32, 0x37, 0x32, 0x38, 0x32, 0x39, 0x33, 0x30, 0x33, 0x31, 0x33, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0xE1, 0x84, 0x80, 0xE1, 0x84, 0x82, 0xE1, 0x84, 0x83, 0xE1, 0x84, 0x85, 0xE1, 0x84, 0x86, 0xE1, 0x84, 0x87, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8B, 0xE1, 0x84, 0x8C, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, 0x92, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x82, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x83, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x85, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x86, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x87, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x89, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8F, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x90, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x91, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x84, 0x8E, 0xE1, 0x85, 0xA1, 0xE1, 0x86, 0xB7, 0xE1, 0x84, 0x80, 0xE1, 0x85, 0xA9, 0xE1, 0x84, 0x8C, 0xE1, 0x85, 0xAE, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xB4, 0xE1, 0x84, 0x8B, 0xE1, 0x85, 0xAE, 0xE4, 0xB8, 0x80, 0xE4, 0xBA, 0x8C, 0xE4, 0xB8, 0x89, 0xE5, 0x9B, 0x9B, 0xE4, 0xBA, 0x94, 0xE5, 0x85, 0xAD, 0xE4, 0xB8, 0x83, 0xE5, 0x85, 0xAB, 0xE4, 0xB9, 0x9D, 0xE5, 0x8D, 0x81, 0xE6, 0x9C, 0x88, 0xE7, 0x81, 0xAB, 0xE6, 0xB0, 0xB4, 0xE6, 0x9C, 0xA8, 0xE9, 0x87, 0x91, 0xE5, 0x9C, 0x9F, 0xE6, 0x97, 0xA5, 0xE6, 0xA0, 0xAA, 0xE6, 0x9C, 0x89, 0xE7, 0xA4, 0xBE, 0xE5, 0x90, 0x8D, 0xE7, 0x89, 0xB9, 0xE8, 0xB2, 0xA1, 0xE7, 0xA5, 0x9D, 0xE5, 0x8A, 0xB4, 0xE7, 0xA7, 0x98, 0xE7, 0x94, 0xB7, 0xE5, 0xA5, 0xB3, 0xE9, 0x81, 0xA9, 0xE5, 0x84, 0xAA, 0xE5, 0x8D, 0xB0, 0xE6, 0xB3, 0xA8, 0xE9, 0xA0, 0x85, 0xE4, 0xBC, 0x91, 0xE5, 0x86, 0x99, 0xE6, 0xAD, 0xA3, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0xAD, 0xE4, 0xB8, 0x8B, 0xE5, 0xB7, 0xA6, 0xE5, 0x8F, 0xB3, 0xE5, 0x8C, 0xBB, 0xE5, 0xAE, 0x97, 0xE5, 0xAD, 0xA6, 0xE7, 0x9B, 0xA3, 0xE4, 0xBC, 0x81, 0xE8, 0xB3, 0x87, 0xE5, 0x8D, 0x94, 0xE5, 0xA4, 0x9C, 0x33, 0x36, 0x33, 0x37, 0x33, 0x38, 0x33, 0x39, 0x34, 0x30, 0x34, 0x31, 0x34, 0x32, 0x34, 0x33, 0x34, 0x34, 0x34, 0x35, 0x34, 0x36, 0x34, 0x37, 0x34, 0x38, 0x34, 0x39, 0x35, 0x30, 0x31, 0xE6, 0x9C, 0x88, 0x32, 0xE6, 0x9C, 0x88, 0x33, 0xE6, 0x9C, 0x88, 0x34, 0xE6, 0x9C, 0x88, 0x35, 0xE6, 0x9C, 0x88, 0x36, 0xE6, 0x9C, 0x88, 0x37, 0xE6, 0x9C, 0x88, 0x38, 0xE6, 0x9C, 0x88, 0x39, 0xE6, 0x9C, 0x88, 0x31, 0x30, 0xE6, 0x9C, 0x88, 0x31, 0x31, 0xE6, 0x9C, 0x88, 0x31, 0x32, 0xE6, 0x9C, 0x88, 0x48, 0x67, 0x65, 0x72, 0x67, 0x65, 0x56, 0x4C, 0x54, 0x44, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xAA, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x86, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x8C, 0xE3, 0x83, 0x8D, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x92, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xA2, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xA6, 0xE3, 0x83, 0xA8, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0xB0, 0xE3, 0x83, 0xB1, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA8, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAA, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xAB, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xA5, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x8D, 0xE3, 0x82, 0xB1, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x8A, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xB5, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xA0, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x81, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xBF, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x86, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBB, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xB3, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA1, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0xA3, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x83, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xA7, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xBD, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x92, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB9, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x98, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9B, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0x9E, 0xE3, 0x82, 0xA4, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xAB, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0xB7, 0xE3, 0x83, 0xA7, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9F, 0xE3, 0x82, 0xAF, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x8F, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA1, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xA6, 0xE3, 0x82, 0xA2, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0x92, 0xE3, 0x82, 0x9A, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xBC, 0xE3, 0x83, 0x95, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0x88, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0x99, 0xE3, 0x83, 0xB3, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0x88, 0x30, 0xE7, 0x82, 0xB9, 0x31, 0xE7, 0x82, 0xB9, 0x32, 0xE7, 0x82, 0xB9, 0x33, 0xE7, 0x82, 0xB9, 0x34, 0xE7, 0x82, 0xB9, 0x35, 0xE7, 0x82, 0xB9, 0x36, 0xE7, 0x82, 0xB9, 0x37, 0xE7, 0x82, 0xB9, 0x38, 0xE7, 0x82, 0xB9, 0x39, 0xE7, 0x82, 0xB9, 0x31, 0x30, 0xE7, 0x82, 0xB9, 0x31, 0x31, 0xE7, 0x82, 0xB9, 0x31, 0x32, 0xE7, 0x82, 0xB9, 0x31, 0x33, 0xE7, 0x82, 0xB9, 0x31, 0x34, 0xE7, 0x82, 0xB9, 0x31, 0x35, 0xE7, 0x82, 0xB9, 0x31, 0x36, 0xE7, 0x82, 0xB9, 0x31, 0x37, 0xE7, 0x82, 0xB9, 0x31, 0x38, 0xE7, 0x82, 0xB9, 0x31, 0x39, 0xE7, 0x82, 0xB9, 0x32, 0x30, 0xE7, 0x82, 0xB9, 0x32, 0x31, 0xE7, 0x82, 0xB9, 0x32, 0x32, 0xE7, 0x82, 0xB9, 0x32, 0x33, 0xE7, 0x82, 0xB9, 0x32, 0x34, 0xE7, 0x82, 0xB9, 0x68, 0x50, 0x61, 0x64, 0x61, 0x41, 0x55, 0x62, 0x61, 0x72, 0x6F, 0x56, 0x70, 0x63, 0x64, 0x6D, 0x64, 0x6D, 0x32, 0x64, 0x6D, 0x33, 0x49, 0x55, 0xE5, 0xB9, 0xB3, 0xE6, 0x88, 0x90, 0xE6, 0x98, 0xAD, 0xE5, 0x92, 0x8C, 0xE5, 0xA4, 0xA7, 0xE6, 0xAD, 0xA3, 0xE6, 0x98, 0x8E, 0xE6, 0xB2, 0xBB, 0xE6, 0xA0, 0xAA, 0xE5, 0xBC, 0x8F, 0xE4, 0xBC, 0x9A, 0xE7, 0xA4, 0xBE, 0x70, 0x41, 0x6E, 0x41, 0xCE, 0xBC, 0x41, 0x6D, 0x41, 0x6B, 0x41, 0x4B, 0x42, 0x4D, 0x42, 0x47, 0x42, 0x63, 0x61, 0x6C, 0x6B, 0x63, 0x61, 0x6C, 0x70, 0x46, 0x6E, 0x46, 0xCE, 0xBC, 0x46, 0xCE, 0xBC, 0x67, 0x6D, 0x67, 0x6B, 0x67, 0x48, 0x7A, 0x6B, 0x48, 0x7A, 0x4D, 0x48, 0x7A, 0x47, 0x48, 0x7A, 0x54, 0x48, 0x7A, 0xCE, 0xBC, 0x6C, 0x6D, 0x6C, 0x64, 0x6C, 0x6B, 0x6C, 0x66, 0x6D, 0x6E, 0x6D, 0xCE, 0xBC, 0x6D, 0x6D, 0x6D, 0x63, 0x6D, 0x6B, 0x6D, 0x6D, 0x6D, 0x32, 0x63, 0x6D, 0x32, 0x6D, 0x32, 0x6B, 0x6D, 0x32, 0x6D, 0x6D, 0x33, 0x63, 0x6D, 0x33, 0x6D, 0x33, 0x6B, 0x6D, 0x33, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x6D, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x50, 0x61, 0x6B, 0x50, 0x61, 0x4D, 0x50, 0x61, 0x47, 0x50, 0x61, 0x72, 0x61, 0x64, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x72, 0x61, 0x64, 0xE2, 0x88, 0x95, 0x73, 0x32, 0x70, 0x73, 0x6E, 0x73, 0xCE, 0xBC, 0x73, 0x6D, 0x73, 0x70, 0x56, 0x6E, 0x56, 0xCE, 0xBC, 0x56, 0x6D, 0x56, 0x6B, 0x56, 0x4D, 0x56, 0x70, 0x57, 0x6E, 0x57, 0xCE, 0xBC, 0x57, 0x6D, 0x57, 0x6B, 0x57, 0x4D, 0x57, 0x6B, 0xCE, 0xA9, 0x4D, 0xCE, 0xA9, 0x61, 0x2E, 0x6D, 0x2E, 0x42, 0x71, 0x63, 0x63, 0x63, 0x64, 0x43, 0xE2, 0x88, 0x95, 0x6B, 0x67, 0x43, 0x6F, 0x2E, 0x64, 0x42, 0x47, 0x79, 0x68, 0x61, 0x48, 0x50, 0x69, 0x6E, 0x4B, 0x4B, 0x4B, 0x4D, 0x6B, 0x74, 0x6C, 0x6D, 0x6C, 0x6E, 0x6C, 0x6F, 0x67, 0x6C, 0x78, 0x6D, 0x62, 0x6D, 0x69, 0x6C, 0x6D, 0x6F, 0x6C, 0x50, 0x48, 0x70, 0x2E, 0x6D, 0x2E, 0x50, 0x50, 0x4D, 0x50, 0x52, 0x73, 0x72, 0x53, 0x76, 0x57, 0x62, 0x56, 0xE2, 0x88, 0x95, 0x6D, 0x41, 0xE2, 0x88, 0x95, 0x6D, 0x31, 0xE6, 0x97, 0xA5, 0x32, 0xE6, 0x97, 0xA5, 0x33, 0xE6, 0x97, 0xA5, 0x34, 0xE6, 0x97, 0xA5, 0x35, 0xE6, 0x97, 0xA5, 0x36, 0xE6, 0x97, 0xA5, 0x37, 0xE6, 0x97, 0xA5, 0x38, 0xE6, 0x97, 0xA5, 0x39, 0xE6, 0x97, 0xA5, 0x31, 0x30, 0xE6, 0x97, 0xA5, 0x31, 0x31, 0xE6, 0x97, 0xA5, 0x31, 0x32, 0xE6, 0x97, 0xA5, 0x31, 0x33, 0xE6, 0x97, 0xA5, 0x31, 0x34, 0xE6, 0x97, 0xA5, 0x31, 0x35, 0xE6, 0x97, 0xA5, 0x31, 0x36, 0xE6, 0x97, 0xA5, 0x31, 0x37, 0xE6, 0x97, 0xA5, 0x31, 0x38, 0xE6, 0x97, 0xA5, 0x31, 0x39, 0xE6, 0x97, 0xA5, 0x32, 0x30, 0xE6, 0x97, 0xA5, 0x32, 0x31, 0xE6, 0x97, 0xA5, 0x32, 0x32, 0xE6, 0x97, 0xA5, 0x32, 0x33, 0xE6, 0x97, 0xA5, 0x32, 0x34, 0xE6, 0x97, 0xA5, 0x32, 0x35, 0xE6, 0x97, 0xA5, 0x32, 0x36, 0xE6, 0x97, 0xA5, 0x32, 0x37, 0xE6, 0x97, 0xA5, 0x32, 0x38, 0xE6, 0x97, 0xA5, 0x32, 0x39, 0xE6, 0x97, 0xA5, 0x33, 0x30, 0xE6, 0x97, 0xA5, 0x33, 0x31, 0xE6, 0x97, 0xA5, 0x67, 0x61, 0x6C, 0xF6, 0xE8, 0xB1, 0x88, 0xF6, 0xE6, 0x9B, 0xB4, 0xF6, 0xE8, 0xBB, 0x8A, 0xF6, 0xE8, 0xB3, 0x88, 0xF6, 0xE6, 0xBB, 0x91, 0xF6, 0xE4, 0xB8, 0xB2, 0xF6, 0xE5, 0x8F, 0xA5, 0xF6, 0xE9, 0xBE, 0x9C, 0xF6, 0xE9, 0xBE, 0x9C, 0xF6, 0xE5, 0xA5, 0x91, 0xF6, 0xE9, 0x87, 0x91, 0xF6, 0xE5, 0x96, 0x87, 0xF6, 0xE5, 0xA5, 0x88, 0xF6, 0xE6, 0x87, 0xB6, 0xF6, 0xE7, 0x99, 0xA9, 0xF6, 0xE7, 0xBE, 0x85, 0xF6, 0xE8, 0x98, 0xBF, 0xF6, 0xE8, 0x9E, 0xBA, 0xF6, 0xE8, 0xA3, 0xB8, 0xF6, 0xE9, 0x82, 0x8F, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, 0xE6, 0xB4, 0x9B, 0xF6, 0xE7, 0x83, 0x99, 0xF6, 0xE7, 0x8F, 0x9E, 0xF6, 0xE8, 0x90, 0xBD, 0xF6, 0xE9, 0x85, 0xAA, 0xF6, 0xE9, 0xA7, 0xB1, 0xF6, 0xE4, 0xBA, 0x82, 0xF6, 0xE5, 0x8D, 0xB5, 0xF6, 0xE6, 0xAC, 0x84, 0xF6, 0xE7, 0x88, 0x9B, 0xF6, 0xE8, 0x98, 0xAD, 0xF6, 0xE9, 0xB8, 0x9E, 0xF6, 0xE5, 0xB5, 0x90, 0xF6, 0xE6, 0xBF, 0xAB, 0xF6, 0xE8, 0x97, 0x8D, 0xF6, 0xE8, 0xA5, 0xA4, 0xF6, 0xE6, 0x8B, 0x89, 0xF6, 0xE8, 0x87, 0x98, 0xF6, 0xE8, 0xA0, 0x9F, 0xF6, 0xE5, 0xBB, 0x8A, 0xF6, 0xE6, 0x9C, 0x97, 0xF6, 0xE6, 0xB5, 0xAA, 0xF6, 0xE7, 0x8B, 0xBC, 0xF6, 0xE9, 0x83, 0x8E, 0xF6, 0xE4, 0xBE, 0x86, 0xF6, 0xE5, 0x86, 0xB7, 0xF6, 0xE5, 0x8B, 0x9E, 0xF6, 0xE6, 0x93, 0x84, 0xF6, 0xE6, 0xAB, 0x93, 0xF6, 0xE7, 0x88, 0x90, 0xF6, 0xE7, 0x9B, 0xA7, 0xF6, 0xE8, 0x80, 0x81, 0xF6, 0xE8, 0x98, 0x86, 0xF6, 0xE8, 0x99, 0x9C, 0xF6, 0xE8, 0xB7, 0xAF, 0xF6, 0xE9, 0x9C, 0xB2, 0xF6, 0xE9, 0xAD, 0xAF, 0xF6, 0xE9, 0xB7, 0xBA, 0xF6, 0xE7, 0xA2, 0x8C, 0xF6, 0xE7, 0xA5, 0xBF, 0xF6, 0xE7, 0xB6, 0xA0, 0xF6, 0xE8, 0x8F, 0x89, 0xF6, 0xE9, 0x8C, 0x84, 0xF6, 0xE9, 0xB9, 0xBF, 0xF6, 0xE8, 0xAB, 0x96, 0xF6, 0xE5, 0xA3, 0x9F, 0xF6, 0xE5, 0xBC, 0x84, 0xF6, 0xE7, 0xB1, 0xA0, 0xF6, 0xE8, 0x81, 0xBE, 0xF6, 0xE7, 0x89, 0xA2, 0xF6, 0xE7, 0xA3, 0x8A, 0xF6, 0xE8, 0xB3, 0x82, 0xF6, 0xE9, 0x9B, 0xB7, 0xF6, 0xE5, 0xA3, 0x98, 0xF6, 0xE5, 0xB1, 0xA2, 0xF6, 0xE6, 0xA8, 0x93, 0xF6, 0xE6, 0xB7, 0x9A, 0xF6, 0xE6, 0xBC, 0x8F, 0xF6, 0xE7, 0xB4, 0xAF, 0xF6, 0xE7, 0xB8, 0xB7, 0xF6, 0xE9, 0x99, 0x8B, 0xF6, 0xE5, 0x8B, 0x92, 0xF6, 0xE8, 0x82, 0x8B, 0xF6, 0xE5, 0x87, 0x9C, 0xF6, 0xE5, 0x87, 0x8C, 0xF6, 0xE7, 0xA8, 0x9C, 0xF6, 0xE7, 0xB6, 0xBE, 0xF6, 0xE8, 0x8F, 0xB1, 0xF6, 0xE9, 0x99, 0xB5, 0xF6, 0xE8, 0xAE, 0x80, 0xF6, 0xE6, 0x8B, 0x8F, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, 0xE8, 0xAB, 0xBE, 0xF6, 0xE4, 0xB8, 0xB9, 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE6, 0x80, 0x92, 0xF6, 0xE7, 0x8E, 0x87, 0xF6, 0xE7, 0x95, 0xB0, 0xF6, 0xE5, 0x8C, 0x97, 0xF6, 0xE7, 0xA3, 0xBB, 0xF6, 0xE4, 0xBE, 0xBF, 0xF6, 0xE5, 0xBE, 0xA9, 0xF6, 0xE4, 0xB8, 0x8D, 0xF6, 0xE6, 0xB3, 0x8C, 0xF6, 0xE6, 0x95, 0xB8, 0xF6, 0xE7, 0xB4, 0xA2, 0xF6, 0xE5, 0x8F, 0x83, 0xF6, 0xE5, 0xA1, 0x9E, 0xF6, 0xE7, 0x9C, 0x81, 0xF6, 0xE8, 0x91, 0x89, 0xF6, 0xE8, 0xAA, 0xAA, 0xF6, 0xE6, 0xAE, 0xBA, 0xF6, 0xE8, 0xBE, 0xB0, 0xF6, 0xE6, 0xB2, 0x88, 0xF6, 0xE6, 0x8B, 0xBE, 0xF6, 0xE8, 0x8B, 0xA5, 0xF6, 0xE6, 0x8E, 0xA0, 0xF6, 0xE7, 0x95, 0xA5, 0xF6, 0xE4, 0xBA, 0xAE, 0xF6, 0xE5, 0x85, 0xA9, 0xF6, 0xE5, 0x87, 0x89, 0xF6, 0xE6, 0xA2, 0x81, 0xF6, 0xE7, 0xB3, 0xA7, 0xF6, 0xE8, 0x89, 0xAF, 0xF6, 0xE8, 0xAB, 0x92, 0xF6, 0xE9, 0x87, 0x8F, 0xF6, 0xE5, 0x8B, 0xB5, 0xF6, 0xE5, 0x91, 0x82, 0xF6, 0xE5, 0xA5, 0xB3, 0xF6, 0xE5, 0xBB, 0xAC, 0xF6, 0xE6, 0x97, 0x85, 0xF6, 0xE6, 0xBF, 0xBE, 0xF6, 0xE7, 0xA4, 0xAA, 0xF6, 0xE9, 0x96, 0xAD, 0xF6, 0xE9, 0xA9, 0xAA, 0xF6, 0xE9, 0xBA, 0x97, 0xF6, 0xE9, 0xBB, 0x8E, 0xF6, 0xE5, 0x8A, 0x9B, 0xF6, 0xE6, 0x9B, 0x86, 0xF6, 0xE6, 0xAD, 0xB7, 0xF6, 0xE8, 0xBD, 0xA2, 0xF6, 0xE5, 0xB9, 0xB4, 0xF6, 0xE6, 0x86, 0x90, 0xF6, 0xE6, 0x88, 0x80, 0xF6, 0xE6, 0x92, 0x9A, 0xF6, 0xE6, 0xBC, 0xA3, 0xF6, 0xE7, 0x85, 0x89, 0xF6, 0xE7, 0x92, 0x89, 0xF6, 0xE7, 0xA7, 0x8A, 0xF6, 0xE7, 0xB7, 0xB4, 0xF6, 0xE8, 0x81, 0xAF, 0xF6, 0xE8, 0xBC, 0xA6, 0xF6, 0xE8, 0x93, 0xAE, 0xF6, 0xE9, 0x80, 0xA3, 0xF6, 0xE9, 0x8D, 0x8A, 0xF6, 0xE5, 0x88, 0x97, 0xF6, 0xE5, 0x8A, 0xA3, 0xF6, 0xE5, 0x92, 0xBD, 0xF6, 0xE7, 0x83, 0x88, 0xF6, 0xE8, 0xA3, 0x82, 0xF6, 0xE8, 0xAA, 0xAA, 0xF6, 0xE5, 0xBB, 0x89, 0xF6, 0xE5, 0xBF, 0xB5, 0xF6, 0xE6, 0x8D, 0xBB, 0xF6, 0xE6, 0xAE, 0xAE, 0xF6, 0xE7, 0xB0, 0xBE, 0xF6, 0xE7, 0x8D, 0xB5, 0xF6, 0xE4, 0xBB, 0xA4, 0xF6, 0xE5, 0x9B, 0xB9, 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE5, 0xB6, 0xBA, 0xF6, 0xE6, 0x80, 0x9C, 0xF6, 0xE7, 0x8E, 0xB2, 0xF6, 0xE7, 0x91, 0xA9, 0xF6, 0xE7, 0xBE, 0x9A, 0xF6, 0xE8, 0x81, 0x86, 0xF6, 0xE9, 0x88, 0xB4, 0xF6, 0xE9, 0x9B, 0xB6, 0xF6, 0xE9, 0x9D, 0x88, 0xF6, 0xE9, 0xA0, 0x98, 0xF6, 0xE4, 0xBE, 0x8B, 0xF6, 0xE7, 0xA6, 0xAE, 0xF6, 0xE9, 0x86, 0xB4, 0xF6, 0xE9, 0x9A, 0xB8, 0xF6, 0xE6, 0x83, 0xA1, 0xF6, 0xE4, 0xBA, 0x86, 0xF6, 0xE5, 0x83, 0x9A, 0xF6, 0xE5, 0xAF, 0xAE, 0xF6, 0xE5, 0xB0, 0xBF, 0xF6, 0xE6, 0x96, 0x99, 0xF6, 0xE6, 0xA8, 0x82, 0xF6, 0xE7, 0x87, 0x8E, 0xF6, 0xE7, 0x99, 0x82, 0xF6, 0xE8, 0x93, 0xBC, 0xF6, 0xE9, 0x81, 0xBC, 0xF6, 0xE9, 0xBE, 0x8D, 0xF6, 0xE6, 0x9A, 0x88, 0xF6, 0xE9, 0x98, 0xAE, 0xF6, 0xE5, 0x8A, 0x89, 0xF6, 0xE6, 0x9D, 0xBB, 0xF6, 0xE6, 0x9F, 0xB3, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, 0xBA, 0x9C, 0xF6, 0xE7, 0x90, 0x89, 0xF6, 0xE7, 0x95, 0x99, 0xF6, 0xE7, 0xA1, 0xAB, 0xF6, 0xE7, 0xB4, 0x90, 0xF6, 0xE9, 0xA1, 0x9E, 0xF6, 0xE5, 0x85, 0xAD, 0xF6, 0xE6, 0x88, 0xAE, 0xF6, 0xE9, 0x99, 0xB8, 0xF6, 0xE5, 0x80, 0xAB, 0xF6, 0xE5, 0xB4, 0x99, 0xF6, 0xE6, 0xB7, 0xAA, 0xF6, 0xE8, 0xBC, 0xAA, 0xF6, 0xE5, 0xBE, 0x8B, 0xF6, 0xE6, 0x85, 0x84, 0xF6, 0xE6, 0xA0, 0x97, 0xF6, 0xE7, 0x8E, 0x87, 0xF6, 0xE9, 0x9A, 0x86, 0xF6, 0xE5, 0x88, 0xA9, 0xF6, 0xE5, 0x90, 0x8F, 0xF6, 0xE5, 0xB1, 0xA5, 0xF6, 0xE6, 0x98, 0x93, 0xF6, 0xE6, 0x9D, 0x8E, 0xF6, 0xE6, 0xA2, 0xA8, 0xF6, 0xE6, 0xB3, 0xA5, 0xF6, 0xE7, 0x90, 0x86, 0xF6, 0xE7, 0x97, 0xA2, 0xF6, 0xE7, 0xBD, 0xB9, 0xF6, 0xE8, 0xA3, 0x8F, 0xF6, 0xE8, 0xA3, 0xA1, 0xF6, 0xE9, 0x87, 0x8C, 0xF6, 0xE9, 0x9B, 0xA2, 0xF6, 0xE5, 0x8C, 0xBF, 0xF6, 0xE6, 0xBA, 0xBA, 0xF6, 0xE5, 0x90, 0x9D, 0xF6, 0xE7, 0x87, 0x90, 0xF6, 0xE7, 0x92, 0x98, 0xF6, 0xE8, 0x97, 0xBA, 0xF6, 0xE9, 0x9A, 0xA3, 0xF6, 0xE9, 0xB1, 0x97, 0xF6, 0xE9, 0xBA, 0x9F, 0xF6, 0xE6, 0x9E, 0x97, 0xF6, 0xE6, 0xB7, 0x8B, 0xF6, 0xE8, 0x87, 0xA8, 0xF6, 0xE7, 0xAB, 0x8B, 0xF6, 0xE7, 0xAC, 0xA0, 0xF6, 0xE7, 0xB2, 0x92, 0xF6, 0xE7, 0x8B, 0x80, 0xF6, 0xE7, 0x82, 0x99, 0xF6, 0xE8, 0xAD, 0x98, 0xF6, 0xE4, 0xBB, 0x80, 0xF6, 0xE8, 0x8C, 0xB6, 0xF6, 0xE5, 0x88, 0xBA, 0xF6, 0xE5, 0x88, 0x87, 0xF6, 0xE5, 0xBA, 0xA6, 0xF6, 0xE6, 0x8B, 0x93, 0xF6, 0xE7, 0xB3, 0x96, 0xF6, 0xE5, 0xAE, 0x85, 0xF6, 0xE6, 0xB4, 0x9E, 0xF6, 0xE6, 0x9A, 0xB4, 0xF6, 0xE8, 0xBC, 0xBB, 0xF6, 0xE8, 0xA1, 0x8C, 0xF6, 0xE9, 0x99, 0x8D, 0xF6, 0xE8, 0xA6, 0x8B, 0xF6, 0xE5, 0xBB, 0x93, 0xF6, 0xE5, 0x85, 0x80, 0xF6, 0xE5, 0x97, 0x80, 0xF6, 0xE5, 0xA1, 0x9A, 0xF6, 0xE6, 0x99, 0xB4, 0xF6, 0xE5, 0x87, 0x9E, 0xF6, 0xE7, 0x8C, 0xAA, 0xF6, 0xE7, 0x9B, 0x8A, 0xF6, 0xE7, 0xA4, 0xBC, 0xF6, 0xE7, 0xA5, 0x9E, 0xF6, 0xE7, 0xA5, 0xA5, 0xF6, 0xE7, 0xA6, 0x8F, 0xF6, 0xE9, 0x9D, 0x96, 0xF6, 0xE7, 0xB2, 0xBE, 0xF6, 0xE7, 0xBE, 0xBD, 0xF6, 0xE8, 0x98, 0x92, 0xF6, 0xE8, 0xAB, 0xB8, 0xF6, 0xE9, 0x80, 0xB8, 0xF6, 0xE9, 0x83, 0xBD, 0xF6, 0xE9, 0xA3, 0xAF, 0xF6, 0xE9, 0xA3, 0xBC, 0xF6, 0xE9, 0xA4, 0xA8, 0xF6, 0xE9, 0xB6, 0xB4, 0xF6, 0xE4, 0xBE, 0xAE, 0xF6, 0xE5, 0x83, 0xA7, 0xF6, 0xE5, 0x85, 0x8D, 0xF6, 0xE5, 0x8B, 0x89, 0xF6, 0xE5, 0x8B, 0xA4, 0xF6, 0xE5, 0x8D, 0x91, 0xF6, 0xE5, 0x96, 0x9D, 0xF6, 0xE5, 0x98, 0x86, 0xF6, 0xE5, 0x99, 0xA8, 0xF6, 0xE5, 0xA1, 0x80, 0xF6, 0xE5, 0xA2, 0xA8, 0xF6, 0xE5, 0xB1, 0xA4, 0xF6, 0xE5, 0xB1, 0xAE, 0xF6, 0xE6, 0x82, 0x94, 0xF6, 0xE6, 0x85, 0xA8, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, 0xE6, 0x87, 0xB2, 0xF6, 0xE6, 0x95, 0x8F, 0xF6, 0xE6, 0x97, 0xA2, 0xF6, 0xE6, 0x9A, 0x91, 0xF6, 0xE6, 0xA2, 0x85, 0xF6, 0xE6, 0xB5, 0xB7, 0xF6, 0xE6, 0xB8, 0x9A, 0xF6, 0xE6, 0xBC, 0xA2, 0xF6, 0xE7, 0x85, 0xAE, 0xF6, 0xE7, 0x88, 0xAB, 0xF6, 0xE7, 0x90, 0xA2, 0xF6, 0xE7, 0xA2, 0x91, 0xF6, 0xE7, 0xA4, 0xBE, 0xF6, 0xE7, 0xA5, 0x89, 0xF6, 0xE7, 0xA5, 0x88, 0xF6, 0xE7, 0xA5, 0x90, 0xF6, 0xE7, 0xA5, 0x96, 0xF6, 0xE7, 0xA5, 0x9D, 0xF6, 0xE7, 0xA6, 0x8D, 0xF6, 0xE7, 0xA6, 0x8E, 0xF6, 0xE7, 0xA9, 0x80, 0xF6, 0xE7, 0xAA, 0x81, 0xF6, 0xE7, 0xAF, 0x80, 0xF6, 0xE7, 0xB7, 0xB4, 0xF6, 0xE7, 0xB8, 0x89, 0xF6, 0xE7, 0xB9, 0x81, 0xF6, 0xE7, 0xBD, 0xB2, 0xF6, 0xE8, 0x80, 0x85, 0xF6, 0xE8, 0x87, 0xAD, 0xF6, 0xE8, 0x89, 0xB9, 0xF6, 0xE8, 0x89, 0xB9, 0xF6, 0xE8, 0x91, 0x97, 0xF6, 0xE8, 0xA4, 0x90, 0xF6, 0xE8, 0xA6, 0x96, 0xF6, 0xE8, 0xAC, 0x81, 0xF6, 0xE8, 0xAC, 0xB9, 0xF6, 0xE8, 0xB3, 0x93, 0xF6, 0xE8, 0xB4, 0x88, 0xF6, 0xE8, 0xBE, 0xB6, 0xF6, 0xE9, 0x80, 0xB8, 0xF6, 0xE9, 0x9B, 0xA3, 0xF6, 0xE9, 0x9F, 0xBF, 0xF6, 0xE9, 0xA0, 0xBB, 0xF6, 0xE4, 0xB8, 0xA6, 0xF6, 0xE5, 0x86, 0xB5, 0xF6, 0xE5, 0x85, 0xA8, 0xF6, 0xE4, 0xBE, 0x80, 0xF6, 0xE5, 0x85, 0x85, 0xF6, 0xE5, 0x86, 0x80, 0xF6, 0xE5, 0x8B, 0x87, 0xF6, 0xE5, 0x8B, 0xBA, 0xF6, 0xE5, 0x96, 0x9D, 0xF6, 0xE5, 0x95, 0x95, 0xF6, 0xE5, 0x96, 0x99, 0xF6, 0xE5, 0x97, 0xA2, 0xF6, 0xE5, 0xA1, 0x9A, 0xF6, 0xE5, 0xA2, 0xB3, 0xF6, 0xE5, 0xA5, 0x84, 0xF6, 0xE5, 0xA5, 0x94, 0xF6, 0xE5, 0xA9, 0xA2, 0xF6, 0xE5, 0xAC, 0xA8, 0xF6, 0xE5, 0xBB, 0x92, 0xF6, 0xE5, 0xBB, 0x99, 0xF6, 0xE5, 0xBD, 0xA9, 0xF6, 0xE5, 0xBE, 0xAD, 0xF6, 0xE6, 0x83, 0x98, 0xF6, 0xE6, 0x85, 0x8E, 0xF6, 0xE6, 0x84, 0x88, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, 0xE6, 0x85, 0xA0, 0xF6, 0xE6, 0x87, 0xB2, 0xF6, 0xE6, 0x88, 0xB4, 0xF6, 0xE6, 0x8F, 0x84, 0xF6, 0xE6, 0x90, 0x9C, 0xF6, 0xE6, 0x91, 0x92, 0xF6, 0xE6, 0x95, 0x96, 0xF6, 0xE6, 0x99, 0xB4, 0xF6, 0xE6, 0x9C, 0x97, 0xF6, 0xE6, 0x9C, 0x9B, 0xF6, 0xE6, 0x9D, 0x96, 0xF6, 0xE6, 0xAD, 0xB9, 0xF6, 0xE6, 0xAE, 0xBA, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, 0xBB, 0x9B, 0xF6, 0xE6, 0xBB, 0x8B, 0xF6, 0xE6, 0xBC, 0xA2, 0xF6, 0xE7, 0x80, 0x9E, 0xF6, 0xE7, 0x85, 0xAE, 0xF6, 0xE7, 0x9E, 0xA7, 0xF6, 0xE7, 0x88, 0xB5, 0xF6, 0xE7, 0x8A, 0xAF, 0xF6, 0xE7, 0x8C, 0xAA, 0xF6, 0xE7, 0x91, 0xB1, 0xF6, 0xE7, 0x94, 0x86, 0xF6, 0xE7, 0x94, 0xBB, 0xF6, 0xE7, 0x98, 0x9D, 0xF6, 0xE7, 0x98, 0x9F, 0xF6, 0xE7, 0x9B, 0x8A, 0xF6, 0xE7, 0x9B, 0x9B, 0xF6, 0xE7, 0x9B, 0xB4, 0xF6, 0xE7, 0x9D, 0x8A, 0xF6, 0xE7, 0x9D, 0x80, 0xF6, 0xE7, 0xA3, 0x8C, 0xF6, 0xE7, 0xAA, 0xB1, 0xF6, 0xE7, 0xAF, 0x80, 0xF6, 0xE7, 0xB1, 0xBB, 0xF6, 0xE7, 0xB5, 0x9B, 0xF6, 0xE7, 0xB7, 0xB4, 0xF6, 0xE7, 0xBC, 0xBE, 0xF6, 0xE8, 0x80, 0x85, 0xF6, 0xE8, 0x8D, 0x92, 0xF6, 0xE8, 0x8F, 0xAF, 0xF6, 0xE8, 0x9D, 0xB9, 0xF6, 0xE8, 0xA5, 0x81, 0xF6, 0xE8, 0xA6, 0x86, 0xF6, 0xE8, 0xA6, 0x96, 0xF6, 0xE8, 0xAA, 0xBF, 0xF6, 0xE8, 0xAB, 0xB8, 0xF6, 0xE8, 0xAB, 0x8B, 0xF6, 0xE8, 0xAC, 0x81, 0xF6, 0xE8, 0xAB, 0xBE, 0xF6, 0xE8, 0xAB, 0xAD, 0xF6, 0xE8, 0xAC, 0xB9, 0xF6, 0xE8, 0xAE, 0x8A, 0xF6, 0xE8, 0xB4, 0x88, 0xF6, 0xE8, 0xBC, 0xB8, 0xF6, 0xE9, 0x81, 0xB2, 0xF6, 0xE9, 0x86, 0x99, 0xF6, 0xE9, 0x89, 0xB6, 0xF6, 0xE9, 0x99, 0xBC, 0xF6, 0xE9, 0x9B, 0xA3, 0xF6, 0xE9, 0x9D, 0x96, 0xF6, 0xE9, 0x9F, 0x9B, 0xF6, 0xE9, 0x9F, 0xBF, 0xF6, 0xE9, 0xA0, 0x8B, 0xF6, 0xE9, 0xA0, 0xBB, 0xF6, 0xE9, 0xAC, 0x92, 0xF6, 0xE9, 0xBE, 0x9C, 0xF6, 0xF0, 0xA2, 0xA1, 0x8A, 0xF6, 0xF0, 0xA2, 0xA1, 0x84, 0xF6, 0xF0, 0xA3, 0x8F, 0x95, 0xF6, 0xE3, 0xAE, 0x9D, 0xF6, 0xE4, 0x80, 0x98, 0xF6, 0xE4, 0x80, 0xB9, 0xF6, 0xF0, 0xA5, 0x89, 0x89, 0xF6, 0xF0, 0xA5, 0xB3, 0x90, 0xF6, 0xF0, 0xA7, 0xBB, 0x93, 0xF6, 0xE9, 0xBD, 0x83, 0xF6, 0xE9, 0xBE, 0x8E, 0x66, 0x66, 0x66, 0x69, 0x66, 0x6C, 0x66, 0x66, 0x69, 0x66, 0x66, 0x6C, 0x73, 0x74, 0x73, 0x74, 0xD5, 0xB4, 0xD5, 0xB6, 0xD5, 0xB4, 0xD5, 0xA5, 0xD5, 0xB4, 0xD5, 0xAB, 0xD5, 0xBE, 0xD5, 0xB6, 0xD5, 0xB4, 0xD5, 0xAD, 0xF6, 0xD7, 0x99, 0xD6, 0xB4, 0xF6, 0xD7, 0xB2, 0xD6, 0xB7, 0xD7, 0xA2, 0xD7, 0x90, 0xD7, 0x93, 0xD7, 0x94, 0xD7, 0x9B, 0xD7, 0x9C, 0xD7, 0x9D, 0xD7, 0xA8, 0xD7, 0xAA, 0x2B, 0xF6, 0xD7, 0xA9, 0xD7, 0x81, 0xF6, 0xD7, 0xA9, 0xD7, 0x82, 0xF6, 0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x81, 0xF6, 0xD7, 0xA9, 0xD6, 0xBC, 0xD7, 0x82, 0xF6, 0xD7, 0x90, 0xD6, 0xB7, 0xF6, 0xD7, 0x90, 0xD6, 0xB8, 0xF6, 0xD7, 0x90, 0xD6, 0xBC, 0xF6, 0xD7, 0x91, 0xD6, 0xBC, 0xF6, 0xD7, 0x92, 0xD6, 0xBC, 0xF6, 0xD7, 0x93, 0xD6, 0xBC, 0xF6, 0xD7, 0x94, 0xD6, 0xBC, 0xF6, 0xD7, 0x95, 0xD6, 0xBC, 0xF6, 0xD7, 0x96, 0xD6, 0xBC, 0xF6, 0xD7, 0x98, 0xD6, 0xBC, 0xF6, 0xD7, 0x99, 0xD6, 0xBC, 0xF6, 0xD7, 0x9A, 0xD6, 0xBC, 0xF6, 0xD7, 0x9B, 0xD6, 0xBC, 0xF6, 0xD7, 0x9C, 0xD6, 0xBC, 0xF6, 0xD7, 0x9E, 0xD6, 0xBC, 0xF6, 0xD7, 0xA0, 0xD6, 0xBC, 0xF6, 0xD7, 0xA1, 0xD6, 0xBC, 0xF6, 0xD7, 0xA3, 0xD6, 0xBC, 0xF6, 0xD7, 0xA4, 0xD6, 0xBC, 0xF6, 0xD7, 0xA6, 0xD6, 0xBC, 0xF6, 0xD7, 0xA7, 0xD6, 0xBC, 0xF6, 0xD7, 0xA8, 0xD6, 0xBC, 0xF6, 0xD7, 0xA9, 0xD6, 0xBC, 0xF6, 0xD7, 0xAA, 0xD6, 0xBC, 0xF6, 0xD7, 0x95, 0xD6, 0xB9, 0xF6, 0xD7, 0x91, 0xD6, 0xBF, 0xF6, 0xD7, 0x9B, 0xD6, 0xBF, 0xF6, 0xD7, 0xA4, 0xD6, 0xBF, 0xD7, 0x90, 0xD7, 0x9C, 0xD9, 0xB1, 0xD9, 0xB1, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBB, 0xD9, 0xBE, 0xD9, 0xBE, 0xD9, 0xBE, 0xD9, 0xBE, 0xDA, 0x80, 0xDA, 0x80, 0xDA, 0x80, 0xDA, 0x80, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBA, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xBF, 0xD9, 0xB9, 0xD9, 0xB9, 0xD9, 0xB9, 0xD9, 0xB9, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA4, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0xA6, 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x84, 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x83, 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x86, 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x87, 0xDA, 0x8D, 0xDA, 0x8D, 0xDA, 0x8C, 0xDA, 0x8C, 0xDA, 0x8E, 0xDA, 0x8E, 0xDA, 0x88, 0xDA, 0x88, 0xDA, 0x98, 0xDA, 0x98, 0xDA, 0x91, 0xDA, 0x91, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xA9, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xAF, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB3, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xB1, 0xDA, 0xBA, 0xDA, 0xBA, 0xDA, 0xBB, 0xDA, 0xBB, 0xDA, 0xBB, 0xDA, 0xBB, 0xDB, 0x95, 0xD9, 0x94, 0xDB, 0x95, 0xD9, 0x94, 0xDB, 0x81, 0xDB, 0x81, 0xDB, 0x81, 0xDB, 0x81, 0xDA, 0xBE, 0xDA, 0xBE, 0xDA, 0xBE, 0xDA, 0xBE, 0xDB, 0x92, 0xDB, 0x92, 0xDB, 0x92, 0xD9, 0x94, 0xDB, 0x92, 0xD9, 0x94, 0xDA, 0xAD, 0xDA, 0xAD, 0xDA, 0xAD, 0xDA, 0xAD, 0xDB, 0x87, 0xDB, 0x87, 0xDB, 0x86, 0xDB, 0x86, 0xDB, 0x88, 0xDB, 0x88, 0xDB, 0x87, 0xD9, 0xB4, 0xDB, 0x8B, 0xDB, 0x8B, 0xDB, 0x85, 0xDB, 0x85, 0xDB, 0x89, 0xDB, 0x89, 0xDB, 0x90, 0xDB, 0x90, 0xDB, 0x90, 0xDB, 0x90, 0xD9, 0x89, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x86, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x88, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, 0xDB, 0x90, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xDB, 0x8C, 0xDB, 0x8C, 0xDB, 0x8C, 0xDB, 0x8C, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xAC, 0xD8, 0xA8, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xAE, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x89, 0xD8, 0xA8, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAA, 0xD8, 0xAE, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x8A, 0xD8, 0xAB, 0xD8, 0xAC, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x89, 0xD8, 0xAB, 0xD9, 0x8A, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD8, 0xAE, 0xD8, 0xAD, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAE, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xB5, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAC, 0xD8, 0xB6, 0xD8, 0xAD, 0xD8, 0xB6, 0xD8, 0xAE, 0xD8, 0xB6, 0xD9, 0x85, 0xD8, 0xB7, 0xD8, 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB8, 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD8, 0xB9, 0xD9, 0x85, 0xD8, 0xBA, 0xD8, 0xAC, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAC, 0xD9, 0x81, 0xD8, 0xAD, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x81, 0xD9, 0x89, 0xD9, 0x81, 0xD9, 0x8A, 0xD9, 0x82, 0xD8, 0xAD, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x82, 0xD9, 0x89, 0xD9, 0x82, 0xD9, 0x8A, 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x83, 0xD8, 0xAC, 0xD9, 0x83, 0xD8, 0xAD, 0xD9, 0x83, 0xD8, 0xAE, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x89, 0xD9, 0x83, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x89, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x86, 0xD8, 0xAE, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x89, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x87, 0xD8, 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x87, 0xD9, 0x89, 0xD9, 0x87, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xB0, 0xD9, 0xB0, 0xD8, 0xB1, 0xD9, 0xB0, 0xD9, 0x89, 0xD9, 0xB0, 0x20, 0xD9, 0x8C, 0xD9, 0x91, 0x20, 0xD9, 0x8D, 0xD9, 0x91, 0x20, 0xD9, 0x8E, 0xD9, 0x91, 0x20, 0xD9, 0x8F, 0xD9, 0x91, 0x20, 0xD9, 0x90, 0xD9, 0x91, 0x20, 0xD9, 0x91, 0xD9, 0xB0, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB1, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xB2, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xB1, 0xD8, 0xA8, 0xD8, 0xB2, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x86, 0xD8, 0xA8, 0xD9, 0x89, 0xD8, 0xA8, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xB1, 0xD8, 0xAA, 0xD8, 0xB2, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x86, 0xD8, 0xAA, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x8A, 0xD8, 0xAB, 0xD8, 0xB1, 0xD8, 0xAB, 0xD8, 0xB2, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x86, 0xD8, 0xAB, 0xD9, 0x89, 0xD8, 0xAB, 0xD9, 0x8A, 0xD9, 0x81, 0xD9, 0x89, 0xD9, 0x81, 0xD9, 0x8A, 0xD9, 0x82, 0xD9, 0x89, 0xD9, 0x82, 0xD9, 0x8A, 0xD9, 0x83, 0xD8, 0xA7, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x89, 0xD9, 0x83, 0xD9, 0x8A, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x89, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xB1, 0xD9, 0x86, 0xD8, 0xB2, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x89, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x89, 0xD9, 0xB0, 0xD9, 0x8A, 0xD8, 0xB1, 0xD9, 0x8A, 0xD8, 0xB2, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD9, 0x8A, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x87, 0xD8, 0xA8, 0xD8, 0xAC, 0xD8, 0xA8, 0xD8, 0xAD, 0xD8, 0xA8, 0xD8, 0xAE, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x87, 0xD8, 0xAA, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAA, 0xD8, 0xAE, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x87, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAE, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xB5, 0xD8, 0xAE, 0xD8, 0xB5, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAC, 0xD8, 0xB6, 0xD8, 0xAD, 0xD8, 0xB6, 0xD8, 0xAE, 0xD8, 0xB6, 0xD9, 0x85, 0xD8, 0xB7, 0xD8, 0xAD, 0xD8, 0xB8, 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD8, 0xB9, 0xD9, 0x85, 0xD8, 0xBA, 0xD8, 0xAC, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAC, 0xD9, 0x81, 0xD8, 0xAD, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x82, 0xD8, 0xAD, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x83, 0xD8, 0xAC, 0xD9, 0x83, 0xD8, 0xAD, 0xD9, 0x83, 0xD8, 0xAE, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x86, 0xD8, 0xAE, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x87, 0xD9, 0x87, 0xD8, 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x87, 0xD9, 0xB0, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x87, 0xD8, 0xA8, 0xD9, 0x85, 0xD8, 0xA8, 0xD9, 0x87, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x87, 0xD8, 0xAB, 0xD9, 0x85, 0xD8, 0xAB, 0xD9, 0x87, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xB3, 0xD9, 0x87, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB4, 0xD9, 0x87, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x87, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x80, 0xD9, 0x8E, 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x8F, 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x90, 0xD9, 0x91, 0xD8, 0xB7, 0xD9, 0x89, 0xD8, 0xB7, 0xD9, 0x8A, 0xD8, 0xB9, 0xD9, 0x89, 0xD8, 0xB9, 0xD9, 0x8A, 0xD8, 0xBA, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x8A, 0xD8, 0xB3, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, 0x8A, 0xD8, 0xB4, 0xD9, 0x89, 0xD8, 0xB4, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xB5, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x8A, 0xD8, 0xB6, 0xD9, 0x89, 0xD8, 0xB6, 0xD9, 0x8A, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xB1, 0xD8, 0xB3, 0xD8, 0xB1, 0xD8, 0xB5, 0xD8, 0xB1, 0xD8, 0xB6, 0xD8, 0xB1, 0xD8, 0xB7, 0xD9, 0x89, 0xD8, 0xB7, 0xD9, 0x8A, 0xD8, 0xB9, 0xD9, 0x89, 0xD8, 0xB9, 0xD9, 0x8A, 0xD8, 0xBA, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x8A, 0xD8, 0xB3, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, 0x8A, 0xD8, 0xB4, 0xD9, 0x89, 0xD8, 0xB4, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xB5, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x8A, 0xD8, 0xB6, 0xD9, 0x89, 0xD8, 0xB6, 0xD9, 0x8A, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xB1, 0xD8, 0xB3, 0xD8, 0xB1, 0xD8, 0xB5, 0xD8, 0xB1, 0xD8, 0xB6, 0xD8, 0xB1, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xB3, 0xD9, 0x87, 0xD8, 0xB4, 0xD9, 0x87, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAE, 0xD8, 0xB4, 0xD8, 0xAC, 0xD8, 0xB4, 0xD8, 0xAD, 0xD8, 0xB4, 0xD8, 0xAE, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xB8, 0xD9, 0x85, 0xD8, 0xA7, 0xD9, 0x8B, 0xD8, 0xA7, 0xD9, 0x8B, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAA, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAA, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xB3, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xB3, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xB3, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB3, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB3, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xB5, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB4, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB4, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB6, 0xD8, 0xAE, 0xD9, 0x85, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB7, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xBA, 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x81, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x89, 0xD9, 0x84, 0xD8, 0xAC, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAC, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xAE, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xAC, 0xD8, 0xAE, 0xD9, 0x87, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x87, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x89, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x89, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD9, 0x85, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xA8, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAC, 0xD9, 0x89, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x8A, 0xD8, 0xAA, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAA, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x89, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x89, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x89, 0xD8, 0xB5, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xB4, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xB6, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x8A, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x82, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x82, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x84, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xB9, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x84, 0xD8, 0xAC, 0xD9, 0x85, 0xD9, 0x86, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAC, 0xD8, 0xAD, 0xD9, 0x8A, 0xD8, 0xAD, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x8A, 0xD9, 0x81, 0xD9, 0x85, 0xD9, 0x8A, 0xD8, 0xA8, 0xD8, 0xAD, 0xD9, 0x8A, 0xD9, 0x83, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB9, 0xD8, 0xAC, 0xD9, 0x85, 0xD8, 0xB5, 0xD9, 0x85, 0xD9, 0x85, 0xD8, 0xB3, 0xD8, 0xAE, 0xD9, 0x8A, 0xD9, 0x86, 0xD8, 0xAC, 0xD9, 0x8A, 0xD8, 0xB5, 0xD9, 0x84, 0xDB, 0x92, 0xD9, 0x82, 0xD9, 0x84, 0xDB, 0x92, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0xD8, 0xA7, 0xD9, 0x83, 0xD8, 0xA8, 0xD8, 0xB1, 0xD9, 0x85, 0xD8, 0xAD, 0xD9, 0x85, 0xD8, 0xAF, 0xD8, 0xB5, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x85, 0xD8, 0xB1, 0xD8, 0xB3, 0xD9, 0x88, 0xD9, 0x84, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0xD8, 0xB5, 0xD9, 0x84, 0xD9, 0x89, 0x20, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x87, 0x20, 0xD8, 0xB9, 0xD9, 0x84, 0xD9, 0x8A, 0xD9, 0x87, 0x20, 0xD9, 0x88, 0xD8, 0xB3, 0xD9, 0x84, 0xD9, 0x85, 0xD8, 0xAC, 0xD9, 0x84, 0x20, 0xD8, 0xAC, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD9, 0x87, 0xD8, 0xB1, 0xDB, 0x8C, 0xD8, 0xA7, 0xD9, 0x84, 0x2C, 0xE3, 0x80, 0x81, 0xE3, 0x80, 0x82, 0x3A, 0x3B, 0x21, 0x3F, 0xE3, 0x80, 0x96, 0xE3, 0x80, 0x97, 0x2E, 0x2E, 0x2E, 0x2E, 0x2E, 0xE2, 0x80, 0x94, 0xE2, 0x80, 0x93, 0x5F, 0x5F, 0x28, 0x29, 0x7B, 0x7D, 0xE3, 0x80, 0x94, 0xE3, 0x80, 0x95, 0xE3, 0x80, 0x90, 0xE3, 0x80, 0x91, 0xE3, 0x80, 0x8A, 0xE3, 0x80, 0x8B, 0xE3, 0x80, 0x88, 0xE3, 0x80, 0x89, 0xE3, 0x80, 0x8C, 0xE3, 0x80, 0x8D, 0xE3, 0x80, 0x8E, 0xE3, 0x80, 0x8F, 0x5B, 0x5D, 0x20, 0xCC, 0x85, 0x20, 0xCC, 0x85, 0x20, 0xCC, 0x85, 0x20, 0xCC, 0x85, 0x5F, 0x5F, 0x5F, 0x2C, 0xE3, 0x80, 0x81, 0x2E, 0x3B, 0x3A, 0x3F, 0x21, 0xE2, 0x80, 0x94, 0x28, 0x29, 0x7B, 0x7D, 0xE3, 0x80, 0x94, 0xE3, 0x80, 0x95, 0x23, 0x26, 0x2A, 0x2B, 0x2D, 0x3C, 0x3E, 0x3D, 0x5C, 0x24, 0x25, 0x40, 0x20, 0xD9, 0x8B, 0xD9, 0x80, 0xD9, 0x8B, 0x20, 0xD9, 0x8C, 0x20, 0xD9, 0x8D, 0x20, 0xD9, 0x8E, 0xD9, 0x80, 0xD9, 0x8E, 0x20, 0xD9, 0x8F, 0xD9, 0x80, 0xD9, 0x8F, 0x20, 0xD9, 0x90, 0xD9, 0x80, 0xD9, 0x90, 0x20, 0xD9, 0x91, 0xD9, 0x80, 0xD9, 0x91, 0x20, 0xD9, 0x92, 0xD9, 0x80, 0xD9, 0x92, 0xD8, 0xA1, 0xD8, 0xA7, 0xD9, 0x93, 0xD8, 0xA7, 0xD9, 0x93, 0xD8, 0xA7, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x94, 0xD9, 0x88, 0xD9, 0x94, 0xD8, 0xA7, 0xD9, 0x95, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD9, 0x8A, 0xD9, 0x94, 0xD8, 0xA7, 0xD8, 0xA7, 0xD8, 0xA8, 0xD8, 0xA8, 0xD8, 0xA8, 0xD8, 0xA8, 0xD8, 0xA9, 0xD8, 0xA9, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAA, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAB, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAC, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAD, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAE, 0xD8, 0xAF, 0xD8, 0xAF, 0xD8, 0xB0, 0xD8, 0xB0, 0xD8, 0xB1, 0xD8, 0xB1, 0xD8, 0xB2, 0xD8, 0xB2, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB3, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB4, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB5, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB6, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB7, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB8, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xB9, 0xD8, 0xBA, 0xD8, 0xBA, 0xD8, 0xBA, 0xD8, 0xBA, 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x81, 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x82, 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x83, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x84, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x85, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x86, 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x87, 0xD9, 0x88, 0xD9, 0x88, 0xD9, 0x89, 0xD9, 0x89, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x8A, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x93, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x94, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x95, 0xD9, 0x84, 0xD8, 0xA7, 0xD9, 0x84, 0xD8, 0xA7, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0xE2, 0xA6, 0x85, 0xE2, 0xA6, 0x86, 0xE3, 0x80, 0x82, 0xE3, 0x80, 0x8C, 0xE3, 0x80, 0x8D, 0xE3, 0x80, 0x81, 0xE3, 0x83, 0xBB, 0xE3, 0x83, 0xB2, 0xE3, 0x82, 0xA1, 0xE3, 0x82, 0xA3, 0xE3, 0x82, 0xA5, 0xE3, 0x82, 0xA7, 0xE3, 0x82, 0xA9, 0xE3, 0x83, 0xA3, 0xE3, 0x83, 0xA5, 0xE3, 0x83, 0xA7, 0xE3, 0x83, 0x83, 0xE3, 0x83, 0xBC, 0xE3, 0x82, 0xA2, 0xE3, 0x82, 0xA4, 0xE3, 0x82, 0xA6, 0xE3, 0x82, 0xA8, 0xE3, 0x82, 0xAA, 0xE3, 0x82, 0xAB, 0xE3, 0x82, 0xAD, 0xE3, 0x82, 0xAF, 0xE3, 0x82, 0xB1, 0xE3, 0x82, 0xB3, 0xE3, 0x82, 0xB5, 0xE3, 0x82, 0xB7, 0xE3, 0x82, 0xB9, 0xE3, 0x82, 0xBB, 0xE3, 0x82, 0xBD, 0xE3, 0x82, 0xBF, 0xE3, 0x83, 0x81, 0xE3, 0x83, 0x84, 0xE3, 0x83, 0x86, 0xE3, 0x83, 0x88, 0xE3, 0x83, 0x8A, 0xE3, 0x83, 0x8B, 0xE3, 0x83, 0x8C, 0xE3, 0x83, 0x8D, 0xE3, 0x83, 0x8E, 0xE3, 0x83, 0x8F, 0xE3, 0x83, 0x92, 0xE3, 0x83, 0x95, 0xE3, 0x83, 0x98, 0xE3, 0x83, 0x9B, 0xE3, 0x83, 0x9E, 0xE3, 0x83, 0x9F, 0xE3, 0x83, 0xA0, 0xE3, 0x83, 0xA1, 0xE3, 0x83, 0xA2, 0xE3, 0x83, 0xA4, 0xE3, 0x83, 0xA6, 0xE3, 0x83, 0xA8, 0xE3, 0x83, 0xA9, 0xE3, 0x83, 0xAA, 0xE3, 0x83, 0xAB, 0xE3, 0x83, 0xAC, 0xE3, 0x83, 0xAD, 0xE3, 0x83, 0xAF, 0xE3, 0x83, 0xB3, 0xE3, 0x82, 0x99, 0xE3, 0x82, 0x9A, 0xE1, 0x85, 0xA0, 0xE1, 0x84, 0x80, 0xE1, 0x84, 0x81, 0xE1, 0x86, 0xAA, 0xE1, 0x84, 0x82, 0xE1, 0x86, 0xAC, 0xE1, 0x86, 0xAD, 0xE1, 0x84, 0x83, 0xE1, 0x84, 0x84, 0xE1, 0x84, 0x85, 0xE1, 0x86, 0xB0, 0xE1, 0x86, 0xB1, 0xE1, 0x86, 0xB2, 0xE1, 0x86, 0xB3, 0xE1, 0x86, 0xB4, 0xE1, 0x86, 0xB5, 0xE1, 0x84, 0x9A, 0xE1, 0x84, 0x86, 0xE1, 0x84, 0x87, 0xE1, 0x84, 0x88, 0xE1, 0x84, 0xA1, 0xE1, 0x84, 0x89, 0xE1, 0x84, 0x8A, 0xE1, 0x84, 0x8B, 0xE1, 0x84, 0x8C, 0xE1, 0x84, 0x8D, 0xE1, 0x84, 0x8E, 0xE1, 0x84, 0x8F, 0xE1, 0x84, 0x90, 0xE1, 0x84, 0x91, 0xE1, 0x84, 0x92, 0xE1, 0x85, 0xA1, 0xE1, 0x85, 0xA2, 0xE1, 0x85, 0xA3, 0xE1, 0x85, 0xA4, 0xE1, 0x85, 0xA5, 0xE1, 0x85, 0xA6, 0xE1, 0x85, 0xA7, 0xE1, 0x85, 0xA8, 0xE1, 0x85, 0xA9, 0xE1, 0x85, 0xAA, 0xE1, 0x85, 0xAB, 0xE1, 0x85, 0xAC, 0xE1, 0x85, 0xAD, 0xE1, 0x85, 0xAE, 0xE1, 0x85, 0xAF, 0xE1, 0x85, 0xB0, 0xE1, 0x85, 0xB1, 0xE1, 0x85, 0xB2, 0xE1, 0x85, 0xB3, 0xE1, 0x85, 0xB4, 0xE1, 0x85, 0xB5, 0xC2, 0xA2, 0xC2, 0xA3, 0xC2, 0xAC, 0x20, 0xCC, 0x84, 0xC2, 0xA6, 0xC2, 0xA5, 0xE2, 0x82, 0xA9, 0xE2, 0x94, 0x82, 0xE2, 0x86, 0x90, 0xE2, 0x86, 0x91, 0xE2, 0x86, 0x92, 0xE2, 0x86, 0x93, 0xE2, 0x96, 0xA0, 0xE2, 0x97, 0x8B, 0xF6, 0xF0, 0x9D, 0x85, 0x97, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB0, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB1, 0xF6, 0xF0, 0x9D, 0x85, 0x98, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xB2, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAE, 0xF6, 0xF0, 0x9D, 0x86, 0xB9, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0xF6, 0xF0, 0x9D, 0x86, 0xBA, 0xF0, 0x9D, 0x85, 0xA5, 0xF0, 0x9D, 0x85, 0xAF, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x43, 0x44, 0x47, 0x4A, 0x4B, 0x4E, 0x4F, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x66, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x44, 0x45, 0x46, 0x47, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x44, 0x45, 0x46, 0x47, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4F, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xC4, 0xB1, 0xC8, 0xB7, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0x98, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xE2, 0x88, 0x87, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x82, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xE2, 0x88, 0x82, 0xCE, 0xB5, 0xCE, 0xB8, 0xCE, 0xBA, 0xCF, 0x86, 0xCF, 0x81, 0xCF, 0x80, 0xCF, 0x9C, 0xCF, 0x9D, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0xF6, 0xE4, 0xB8, 0xBD, 0xF6, 0xE4, 0xB8, 0xB8, 0xF6, 0xE4, 0xB9, 0x81, 0xF6, 0xF0, 0xA0, 0x84, 0xA2, 0xF6, 0xE4, 0xBD, 0xA0, 0xF6, 0xE4, 0xBE, 0xAE, 0xF6, 0xE4, 0xBE, 0xBB, 0xF6, 0xE5, 0x80, 0x82, 0xF6, 0xE5, 0x81, 0xBA, 0xF6, 0xE5, 0x82, 0x99, 0xF6, 0xE5, 0x83, 0xA7, 0xF6, 0xE5, 0x83, 0x8F, 0xF6, 0xE3, 0x92, 0x9E, 0xF6, 0xF0, 0xA0, 0x98, 0xBA, 0xF6, 0xE5, 0x85, 0x8D, 0xF6, 0xE5, 0x85, 0x94, 0xF6, 0xE5, 0x85, 0xA4, 0xF6, 0xE5, 0x85, 0xB7, 0xF6, 0xF0, 0xA0, 0x94, 0x9C, 0xF6, 0xE3, 0x92, 0xB9, 0xF6, 0xE5, 0x85, 0xA7, 0xF6, 0xE5, 0x86, 0x8D, 0xF6, 0xF0, 0xA0, 0x95, 0x8B, 0xF6, 0xE5, 0x86, 0x97, 0xF6, 0xE5, 0x86, 0xA4, 0xF6, 0xE4, 0xBB, 0x8C, 0xF6, 0xE5, 0x86, 0xAC, 0xF6, 0xE5, 0x86, 0xB5, 0xF6, 0xF0, 0xA9, 0x87, 0x9F, 0xF6, 0xE5, 0x87, 0xB5, 0xF6, 0xE5, 0x88, 0x83, 0xF6, 0xE3, 0x93, 0x9F, 0xF6, 0xE5, 0x88, 0xBB, 0xF6, 0xE5, 0x89, 0x86, 0xF6, 0xE5, 0x89, 0xB2, 0xF6, 0xE5, 0x89, 0xB7, 0xF6, 0xE3, 0x94, 0x95, 0xF6, 0xE5, 0x8B, 0x87, 0xF6, 0xE5, 0x8B, 0x89, 0xF6, 0xE5, 0x8B, 0xA4, 0xF6, 0xE5, 0x8B, 0xBA, 0xF6, 0xE5, 0x8C, 0x85, 0xF6, 0xE5, 0x8C, 0x86, 0xF6, 0xE5, 0x8C, 0x97, 0xF6, 0xE5, 0x8D, 0x89, 0xF6, 0xE5, 0x8D, 0x91, 0xF6, 0xE5, 0x8D, 0x9A, 0xF6, 0xE5, 0x8D, 0xB3, 0xF6, 0xE5, 0x8D, 0xBD, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xE5, 0x8D, 0xBF, 0xF6, 0xF0, 0xA0, 0xA8, 0xAC, 0xF6, 0xE7, 0x81, 0xB0, 0xF6, 0xE5, 0x8F, 0x8A, 0xF6, 0xE5, 0x8F, 0x9F, 0xF6, 0xF0, 0xA0, 0xAD, 0xA3, 0xF6, 0xE5, 0x8F, 0xAB, 0xF6, 0xE5, 0x8F, 0xB1, 0xF6, 0xE5, 0x90, 0x86, 0xF6, 0xE5, 0x92, 0x9E, 0xF6, 0xE5, 0x90, 0xB8, 0xF6, 0xE5, 0x91, 0x88, 0xF6, 0xE5, 0x91, 0xA8, 0xF6, 0xE5, 0x92, 0xA2, 0xF6, 0xE5, 0x93, 0xB6, 0xF6, 0xE5, 0x94, 0x90, 0xF6, 0xE5, 0x95, 0x93, 0xF6, 0xE5, 0x95, 0xA3, 0xF6, 0xE5, 0x96, 0x84, 0xF6, 0xE5, 0x96, 0x84, 0xF6, 0xE5, 0x96, 0x99, 0xF6, 0xE5, 0x96, 0xAB, 0xF6, 0xE5, 0x96, 0xB3, 0xF6, 0xE5, 0x97, 0x82, 0xF6, 0xE5, 0x9C, 0x96, 0xF6, 0xE5, 0x98, 0x86, 0xF6, 0xE5, 0x9C, 0x97, 0xF6, 0xE5, 0x99, 0x91, 0xF6, 0xE5, 0x99, 0xB4, 0xF6, 0xE5, 0x88, 0x87, 0xF6, 0xE5, 0xA3, 0xAE, 0xF6, 0xE5, 0x9F, 0x8E, 0xF6, 0xE5, 0x9F, 0xB4, 0xF6, 0xE5, 0xA0, 0x8D, 0xF6, 0xE5, 0x9E, 0x8B, 0xF6, 0xE5, 0xA0, 0xB2, 0xF6, 0xE5, 0xA0, 0xB1, 0xF6, 0xE5, 0xA2, 0xAC, 0xF6, 0xF0, 0xA1, 0x93, 0xA4, 0xF6, 0xE5, 0xA3, 0xB2, 0xF6, 0xE5, 0xA3, 0xB7, 0xF6, 0xE5, 0xA4, 0x86, 0xF6, 0xE5, 0xA4, 0x9A, 0xF6, 0xE5, 0xA4, 0xA2, 0xF6, 0xE5, 0xA5, 0xA2, 0xF6, 0xF0, 0xA1, 0x9A, 0xA8, 0xF6, 0xF0, 0xA1, 0x9B, 0xAA, 0xF6, 0xE5, 0xA7, 0xAC, 0xF6, 0xE5, 0xA8, 0x9B, 0xF6, 0xE5, 0xA8, 0xA7, 0xF6, 0xE5, 0xA7, 0x98, 0xF6, 0xE5, 0xA9, 0xA6, 0xF6, 0xE3, 0x9B, 0xAE, 0xF6, 0xE3, 0x9B, 0xBC, 0xF6, 0xE5, 0xAC, 0x88, 0xF6, 0xE5, 0xAC, 0xBE, 0xF6, 0xE5, 0xAC, 0xBE, 0xF6, 0xF0, 0xA1, 0xA7, 0x88, 0xF6, 0xE5, 0xAF, 0x83, 0xF6, 0xE5, 0xAF, 0x98, 0xF6, 0xE5, 0xAF, 0xA7, 0xF6, 0xE5, 0xAF, 0xB3, 0xF6, 0xF0, 0xA1, 0xAC, 0x98, 0xF6, 0xE5, 0xAF, 0xBF, 0xF6, 0xE5, 0xB0, 0x86, 0xF6, 0xE5, 0xBD, 0x93, 0xF6, 0xE5, 0xB0, 0xA2, 0xF6, 0xE3, 0x9E, 0x81, 0xF6, 0xE5, 0xB1, 0xA0, 0xF6, 0xE5, 0xB1, 0xAE, 0xF6, 0xE5, 0xB3, 0x80, 0xF6, 0xE5, 0xB2, 0x8D, 0xF6, 0xF0, 0xA1, 0xB7, 0xA4, 0xF6, 0xE5, 0xB5, 0x83, 0xF6, 0xF0, 0xA1, 0xB7, 0xA6, 0xF6, 0xE5, 0xB5, 0xAE, 0xF6, 0xE5, 0xB5, 0xAB, 0xF6, 0xE5, 0xB5, 0xBC, 0xF6, 0xE5, 0xB7, 0xA1, 0xF6, 0xE5, 0xB7, 0xA2, 0xF6, 0xE3, 0xA0, 0xAF, 0xF6, 0xE5, 0xB7, 0xBD, 0xF6, 0xE5, 0xB8, 0xA8, 0xF6, 0xE5, 0xB8, 0xBD, 0xF6, 0xE5, 0xB9, 0xA9, 0xF6, 0xE3, 0xA1, 0xA2, 0xF6, 0xF0, 0xA2, 0x86, 0x83, 0xF6, 0xE3, 0xA1, 0xBC, 0xF6, 0xE5, 0xBA, 0xB0, 0xF6, 0xE5, 0xBA, 0xB3, 0xF6, 0xE5, 0xBA, 0xB6, 0xF6, 0xE5, 0xBB, 0x8A, 0xF6, 0xF0, 0xAA, 0x8E, 0x92, 0xF6, 0xE5, 0xBB, 0xBE, 0xF6, 0xF0, 0xA2, 0x8C, 0xB1, 0xF6, 0xF0, 0xA2, 0x8C, 0xB1, 0xF6, 0xE8, 0x88, 0x81, 0xF6, 0xE5, 0xBC, 0xA2, 0xF6, 0xE5, 0xBC, 0xA2, 0xF6, 0xE3, 0xA3, 0x87, 0xF6, 0xF0, 0xA3, 0x8A, 0xB8, 0xF6, 0xF0, 0xA6, 0x87, 0x9A, 0xF6, 0xE5, 0xBD, 0xA2, 0xF6, 0xE5, 0xBD, 0xAB, 0xF6, 0xE3, 0xA3, 0xA3, 0xF6, 0xE5, 0xBE, 0x9A, 0xF6, 0xE5, 0xBF, 0x8D, 0xF6, 0xE5, 0xBF, 0x97, 0xF6, 0xE5, 0xBF, 0xB9, 0xF6, 0xE6, 0x82, 0x81, 0xF6, 0xE3, 0xA4, 0xBA, 0xF6, 0xE3, 0xA4, 0x9C, 0xF6, 0xE6, 0x82, 0x94, 0xF6, 0xF0, 0xA2, 0x9B, 0x94, 0xF6, 0xE6, 0x83, 0x87, 0xF6, 0xE6, 0x85, 0x88, 0xF6, 0xE6, 0x85, 0x8C, 0xF6, 0xE6, 0x85, 0x8E, 0xF6, 0xE6, 0x85, 0x8C, 0xF6, 0xE6, 0x85, 0xBA, 0xF6, 0xE6, 0x86, 0x8E, 0xF6, 0xE6, 0x86, 0xB2, 0xF6, 0xE6, 0x86, 0xA4, 0xF6, 0xE6, 0x86, 0xAF, 0xF6, 0xE6, 0x87, 0x9E, 0xF6, 0xE6, 0x87, 0xB2, 0xF6, 0xE6, 0x87, 0xB6, 0xF6, 0xE6, 0x88, 0x90, 0xF6, 0xE6, 0x88, 0x9B, 0xF6, 0xE6, 0x89, 0x9D, 0xF6, 0xE6, 0x8A, 0xB1, 0xF6, 0xE6, 0x8B, 0x94, 0xF6, 0xE6, 0x8D, 0x90, 0xF6, 0xF0, 0xA2, 0xAC, 0x8C, 0xF6, 0xE6, 0x8C, 0xBD, 0xF6, 0xE6, 0x8B, 0xBC, 0xF6, 0xE6, 0x8D, 0xA8, 0xF6, 0xE6, 0x8E, 0x83, 0xF6, 0xE6, 0x8F, 0xA4, 0xF6, 0xF0, 0xA2, 0xAF, 0xB1, 0xF6, 0xE6, 0x90, 0xA2, 0xF6, 0xE6, 0x8F, 0x85, 0xF6, 0xE6, 0x8E, 0xA9, 0xF6, 0xE3, 0xA8, 0xAE, 0xF6, 0xE6, 0x91, 0xA9, 0xF6, 0xE6, 0x91, 0xBE, 0xF6, 0xE6, 0x92, 0x9D, 0xF6, 0xE6, 0x91, 0xB7, 0xF6, 0xE3, 0xA9, 0xAC, 0xF6, 0xE6, 0x95, 0x8F, 0xF6, 0xE6, 0x95, 0xAC, 0xF6, 0xF0, 0xA3, 0x80, 0x8A, 0xF6, 0xE6, 0x97, 0xA3, 0xF6, 0xE6, 0x9B, 0xB8, 0xF6, 0xE6, 0x99, 0x89, 0xF6, 0xE3, 0xAC, 0x99, 0xF6, 0xE6, 0x9A, 0x91, 0xF6, 0xE3, 0xAC, 0x88, 0xF6, 0xE3, 0xAB, 0xA4, 0xF6, 0xE5, 0x86, 0x92, 0xF6, 0xE5, 0x86, 0x95, 0xF6, 0xE6, 0x9C, 0x80, 0xF6, 0xE6, 0x9A, 0x9C, 0xF6, 0xE8, 0x82, 0xAD, 0xF6, 0xE4, 0x8F, 0x99, 0xF6, 0xE6, 0x9C, 0x97, 0xF6, 0xE6, 0x9C, 0x9B, 0xF6, 0xE6, 0x9C, 0xA1, 0xF6, 0xE6, 0x9D, 0x9E, 0xF6, 0xE6, 0x9D, 0x93, 0xF6, 0xF0, 0xA3, 0x8F, 0x83, 0xF6, 0xE3, 0xAD, 0x89, 0xF6, 0xE6, 0x9F, 0xBA, 0xF6, 0xE6, 0x9E, 0x85, 0xF6, 0xE6, 0xA1, 0x92, 0xF6, 0xE6, 0xA2, 0x85, 0xF6, 0xF0, 0xA3, 0x91, 0xAD, 0xF6, 0xE6, 0xA2, 0x8E, 0xF6, 0xE6, 0xA0, 0x9F, 0xF6, 0xE6, 0xA4, 0x94, 0xF6, 0xE3, 0xAE, 0x9D, 0xF6, 0xE6, 0xA5, 0x82, 0xF6, 0xE6, 0xA6, 0xA3, 0xF6, 0xE6, 0xA7, 0xAA, 0xF6, 0xE6, 0xAA, 0xA8, 0xF6, 0xF0, 0xA3, 0x9A, 0xA3, 0xF6, 0xE6, 0xAB, 0x9B, 0xF6, 0xE3, 0xB0, 0x98, 0xF6, 0xE6, 0xAC, 0xA1, 0xF6, 0xF0, 0xA3, 0xA2, 0xA7, 0xF6, 0xE6, 0xAD, 0x94, 0xF6, 0xE3, 0xB1, 0x8E, 0xF6, 0xE6, 0xAD, 0xB2, 0xF6, 0xE6, 0xAE, 0x9F, 0xF6, 0xE6, 0xAE, 0xBA, 0xF6, 0xE6, 0xAE, 0xBB, 0xF6, 0xF0, 0xA3, 0xAA, 0x8D, 0xF6, 0xF0, 0xA1, 0xB4, 0x8B, 0xF6, 0xF0, 0xA3, 0xAB, 0xBA, 0xF6, 0xE6, 0xB1, 0x8E, 0xF6, 0xF0, 0xA3, 0xB2, 0xBC, 0xF6, 0xE6, 0xB2, 0xBF, 0xF6, 0xE6, 0xB3, 0x8D, 0xF6, 0xE6, 0xB1, 0xA7, 0xF6, 0xE6, 0xB4, 0x96, 0xF6, 0xE6, 0xB4, 0xBE, 0xF6, 0xE6, 0xB5, 0xB7, 0xF6, 0xE6, 0xB5, 0x81, 0xF6, 0xE6, 0xB5, 0xA9, 0xF6, 0xE6, 0xB5, 0xB8, 0xF6, 0xE6, 0xB6, 0x85, 0xF6, 0xF0, 0xA3, 0xB4, 0x9E, 0xF6, 0xE6, 0xB4, 0xB4, 0xF6, 0xE6, 0xB8, 0xAF, 0xF6, 0xE6, 0xB9, 0xAE, 0xF6, 0xE3, 0xB4, 0xB3, 0xF6, 0xE6, 0xBB, 0x8B, 0xF6, 0xE6, 0xBB, 0x87, 0xF6, 0xF0, 0xA3, 0xBB, 0x91, 0xF6, 0xE6, 0xB7, 0xB9, 0xF6, 0xE6, 0xBD, 0xAE, 0xF6, 0xF0, 0xA3, 0xBD, 0x9E, 0xF6, 0xF0, 0xA3, 0xBE, 0x8E, 0xF6, 0xE6, 0xBF, 0x86, 0xF6, 0xE7, 0x80, 0xB9, 0xF6, 0xE7, 0x80, 0x9E, 0xF6, 0xE7, 0x80, 0x9B, 0xF6, 0xE3, 0xB6, 0x96, 0xF6, 0xE7, 0x81, 0x8A, 0xF6, 0xE7, 0x81, 0xBD, 0xF6, 0xE7, 0x81, 0xB7, 0xF6, 0xE7, 0x82, 0xAD, 0xF6, 0xF0, 0xA0, 0x94, 0xA5, 0xF6, 0xE7, 0x85, 0x85, 0xF6, 0xF0, 0xA4, 0x89, 0xA3, 0xF6, 0xE7, 0x86, 0x9C, 0xF6, 0xF0, 0xA4, 0x8E, 0xAB, 0xF6, 0xE7, 0x88, 0xA8, 0xF6, 0xE7, 0x88, 0xB5, 0xF6, 0xE7, 0x89, 0x90, 0xF6, 0xF0, 0xA4, 0x98, 0x88, 0xF6, 0xE7, 0x8A, 0x80, 0xF6, 0xE7, 0x8A, 0x95, 0xF6, 0xF0, 0xA4, 0x9C, 0xB5, 0xF6, 0xF0, 0xA4, 0xA0, 0x94, 0xF6, 0xE7, 0x8D, 0xBA, 0xF6, 0xE7, 0x8E, 0x8B, 0xF6, 0xE3, 0xBA, 0xAC, 0xF6, 0xE7, 0x8E, 0xA5, 0xF6, 0xE3, 0xBA, 0xB8, 0xF6, 0xE3, 0xBA, 0xB8, 0xF6, 0xE7, 0x91, 0x87, 0xF6, 0xE7, 0x91, 0x9C, 0xF6, 0xE7, 0x91, 0xB1, 0xF6, 0xE7, 0x92, 0x85, 0xF6, 0xE7, 0x93, 0x8A, 0xF6, 0xE3, 0xBC, 0x9B, 0xF6, 0xE7, 0x94, 0xA4, 0xF6, 0xF0, 0xA4, 0xB0, 0xB6, 0xF6, 0xE7, 0x94, 0xBE, 0xF6, 0xF0, 0xA4, 0xB2, 0x92, 0xF6, 0xE7, 0x95, 0xB0, 0xF6, 0xF0, 0xA2, 0x86, 0x9F, 0xF6, 0xE7, 0x98, 0x90, 0xF6, 0xF0, 0xA4, 0xBE, 0xA1, 0xF6, 0xF0, 0xA4, 0xBE, 0xB8, 0xF6, 0xF0, 0xA5, 0x81, 0x84, 0xF6, 0xE3, 0xBF, 0xBC, 0xF6, 0xE4, 0x80, 0x88, 0xF6, 0xE7, 0x9B, 0xB4, 0xF6, 0xF0, 0xA5, 0x83, 0xB3, 0xF6, 0xF0, 0xA5, 0x83, 0xB2, 0xF6, 0xF0, 0xA5, 0x84, 0x99, 0xF6, 0xF0, 0xA5, 0x84, 0xB3, 0xF6, 0xE7, 0x9C, 0x9E, 0xF6, 0xE7, 0x9C, 0x9F, 0xF6, 0xE7, 0x9C, 0x9F, 0xF6, 0xE7, 0x9D, 0x8A, 0xF6, 0xE4, 0x80, 0xB9, 0xF6, 0xE7, 0x9E, 0x8B, 0xF6, 0xE4, 0x81, 0x86, 0xF6, 0xE4, 0x82, 0x96, 0xF6, 0xF0, 0xA5, 0x90, 0x9D, 0xF6, 0xE7, 0xA1, 0x8E, 0xF6, 0xE7, 0xA2, 0x8C, 0xF6, 0xE7, 0xA3, 0x8C, 0xF6, 0xE4, 0x83, 0xA3, 0xF6, 0xF0, 0xA5, 0x98, 0xA6, 0xF6, 0xE7, 0xA5, 0x96, 0xF6, 0xF0, 0xA5, 0x9A, 0x9A, 0xF6, 0xF0, 0xA5, 0x9B, 0x85, 0xF6, 0xE7, 0xA6, 0x8F, 0xF6, 0xE7, 0xA7, 0xAB, 0xF6, 0xE4, 0x84, 0xAF, 0xF6, 0xE7, 0xA9, 0x80, 0xF6, 0xE7, 0xA9, 0x8A, 0xF6, 0xE7, 0xA9, 0x8F, 0xF6, 0xF0, 0xA5, 0xA5, 0xBC, 0xF6, 0xF0, 0xA5, 0xAA, 0xA7, 0xF6, 0xF0, 0xA5, 0xAA, 0xA7, 0xF6, 0xE7, 0xAB, 0xAE, 0xF6, 0xE4, 0x88, 0x82, 0xF6, 0xF0, 0xA5, 0xAE, 0xAB, 0xF6, 0xE7, 0xAF, 0x86, 0xF6, 0xE7, 0xAF, 0x89, 0xF6, 0xE4, 0x88, 0xA7, 0xF6, 0xF0, 0xA5, 0xB2, 0x80, 0xF6, 0xE7, 0xB3, 0x92, 0xF6, 0xE4, 0x8A, 0xA0, 0xF6, 0xE7, 0xB3, 0xA8, 0xF6, 0xE7, 0xB3, 0xA3, 0xF6, 0xE7, 0xB4, 0x80, 0xF6, 0xF0, 0xA5, 0xBE, 0x86, 0xF6, 0xE7, 0xB5, 0xA3, 0xF6, 0xE4, 0x8C, 0x81, 0xF6, 0xE7, 0xB7, 0x87, 0xF6, 0xE7, 0xB8, 0x82, 0xF6, 0xE7, 0xB9, 0x85, 0xF6, 0xE4, 0x8C, 0xB4, 0xF6, 0xF0, 0xA6, 0x88, 0xA8, 0xF6, 0xF0, 0xA6, 0x89, 0x87, 0xF6, 0xE4, 0x8D, 0x99, 0xF6, 0xF0, 0xA6, 0x8B, 0x99, 0xF6, 0xE7, 0xBD, 0xBA, 0xF6, 0xF0, 0xA6, 0x8C, 0xBE, 0xF6, 0xE7, 0xBE, 0x95, 0xF6, 0xE7, 0xBF, 0xBA, 0xF6, 0xE8, 0x80, 0x85, 0xF6, 0xF0, 0xA6, 0x93, 0x9A, 0xF6, 0xF0, 0xA6, 0x94, 0xA3, 0xF6, 0xE8, 0x81, 0xA0, 0xF6, 0xF0, 0xA6, 0x96, 0xA8, 0xF6, 0xE8, 0x81, 0xB0, 0xF6, 0xF0, 0xA3, 0x8D, 0x9F, 0xF6, 0xE4, 0x8F, 0x95, 0xF6, 0xE8, 0x82, 0xB2, 0xF6, 0xE8, 0x84, 0x83, 0xF6, 0xE4, 0x90, 0x8B, 0xF6, 0xE8, 0x84, 0xBE, 0xF6, 0xE5, 0xAA, 0xB5, 0xF6, 0xF0, 0xA6, 0x9E, 0xA7, 0xF6, 0xF0, 0xA6, 0x9E, 0xB5, 0xF6, 0xF0, 0xA3, 0x8E, 0x93, 0xF6, 0xF0, 0xA3, 0x8E, 0x9C, 0xF6, 0xE8, 0x88, 0x81, 0xF6, 0xE8, 0x88, 0x84, 0xF6, 0xE8, 0xBE, 0x9E, 0xF6, 0xE4, 0x91, 0xAB, 0xF6, 0xE8, 0x8A, 0x91, 0xF6, 0xE8, 0x8A, 0x8B, 0xF6, 0xE8, 0x8A, 0x9D, 0xF6, 0xE5, 0x8A, 0xB3, 0xF6, 0xE8, 0x8A, 0xB1, 0xF6, 0xE8, 0x8A, 0xB3, 0xF6, 0xE8, 0x8A, 0xBD, 0xF6, 0xE8, 0x8B, 0xA6, 0xF6, 0xF0, 0xA6, 0xAC, 0xBC, 0xF6, 0xE8, 0x8B, 0xA5, 0xF6, 0xE8, 0x8C, 0x9D, 0xF6, 0xE8, 0x8D, 0xA3, 0xF6, 0xE8, 0x8E, 0xAD, 0xF6, 0xE8, 0x8C, 0xA3, 0xF6, 0xE8, 0x8E, 0xBD, 0xF6, 0xE8, 0x8F, 0xA7, 0xF6, 0xE8, 0x91, 0x97, 0xF6, 0xE8, 0x8D, 0x93, 0xF6, 0xE8, 0x8F, 0x8A, 0xF6, 0xE8, 0x8F, 0x8C, 0xF6, 0xE8, 0x8F, 0x9C, 0xF6, 0xF0, 0xA6, 0xB0, 0xB6, 0xF6, 0xF0, 0xA6, 0xB5, 0xAB, 0xF6, 0xF0, 0xA6, 0xB3, 0x95, 0xF6, 0xE4, 0x94, 0xAB, 0xF6, 0xE8, 0x93, 0xB1, 0xF6, 0xE8, 0x93, 0xB3, 0xF6, 0xE8, 0x94, 0x96, 0xF6, 0xF0, 0xA7, 0x8F, 0x8A, 0xF6, 0xE8, 0x95, 0xA4, 0xF6, 0xF0, 0xA6, 0xBC, 0xAC, 0xF6, 0xE4, 0x95, 0x9D, 0xF6, 0xE4, 0x95, 0xA1, 0xF6, 0xF0, 0xA6, 0xBE, 0xB1, 0xF6, 0xF0, 0xA7, 0x83, 0x92, 0xF6, 0xE4, 0x95, 0xAB, 0xF6, 0xE8, 0x99, 0x90, 0xF6, 0xE8, 0x99, 0x9C, 0xF6, 0xE8, 0x99, 0xA7, 0xF6, 0xE8, 0x99, 0xA9, 0xF6, 0xE8, 0x9A, 0xA9, 0xF6, 0xE8, 0x9A, 0x88, 0xF6, 0xE8, 0x9C, 0x8E, 0xF6, 0xE8, 0x9B, 0xA2, 0xF6, 0xE8, 0x9D, 0xB9, 0xF6, 0xE8, 0x9C, 0xA8, 0xF6, 0xE8, 0x9D, 0xAB, 0xF6, 0xE8, 0x9E, 0x86, 0xF6, 0xE4, 0x97, 0x97, 0xF6, 0xE8, 0x9F, 0xA1, 0xF6, 0xE8, 0xA0, 0x81, 0xF6, 0xE4, 0x97, 0xB9, 0xF6, 0xE8, 0xA1, 0xA0, 0xF6, 0xE8, 0xA1, 0xA3, 0xF6, 0xF0, 0xA7, 0x99, 0xA7, 0xF6, 0xE8, 0xA3, 0x97, 0xF6, 0xE8, 0xA3, 0x9E, 0xF6, 0xE4, 0x98, 0xB5, 0xF6, 0xE8, 0xA3, 0xBA, 0xF6, 0xE3, 0x92, 0xBB, 0xF6, 0xF0, 0xA7, 0xA2, 0xAE, 0xF6, 0xF0, 0xA7, 0xA5, 0xA6, 0xF6, 0xE4, 0x9A, 0xBE, 0xF6, 0xE4, 0x9B, 0x87, 0xF6, 0xE8, 0xAA, 0xA0, 0xF6, 0xE8, 0xAB, 0xAD, 0xF6, 0xE8, 0xAE, 0x8A, 0xF6, 0xE8, 0xB1, 0x95, 0xF6, 0xF0, 0xA7, 0xB2, 0xA8, 0xF6, 0xE8, 0xB2, 0xAB, 0xF6, 0xE8, 0xB3, 0x81, 0xF6, 0xE8, 0xB4, 0x9B, 0xF6, 0xE8, 0xB5, 0xB7, 0xF6, 0xF0, 0xA7, 0xBC, 0xAF, 0xF6, 0xF0, 0xA0, 0xA0, 0x84, 0xF6, 0xE8, 0xB7, 0x8B, 0xF6, 0xE8, 0xB6, 0xBC, 0xF6, 0xE8, 0xB7, 0xB0, 0xF6, 0xF0, 0xA0, 0xA3, 0x9E, 0xF6, 0xE8, 0xBB, 0x94, 0xF6, 0xE8, 0xBC, 0xB8, 0xF6, 0xF0, 0xA8, 0x97, 0x92, 0xF6, 0xF0, 0xA8, 0x97, 0xAD, 0xF6, 0xE9, 0x82, 0x94, 0xF6, 0xE9, 0x83, 0xB1, 0xF6, 0xE9, 0x84, 0x91, 0xF6, 0xF0, 0xA8, 0x9C, 0xAE, 0xF6, 0xE9, 0x84, 0x9B, 0xF6, 0xE9, 0x88, 0xB8, 0xF6, 0xE9, 0x8B, 0x97, 0xF6, 0xE9, 0x8B, 0x98, 0xF6, 0xE9, 0x89, 0xBC, 0xF6, 0xE9, 0x8F, 0xB9, 0xF6, 0xE9, 0x90, 0x95, 0xF6, 0xF0, 0xA8, 0xAF, 0xBA, 0xF6, 0xE9, 0x96, 0x8B, 0xF6, 0xE4, 0xA6, 0x95, 0xF6, 0xE9, 0x96, 0xB7, 0xF6, 0xF0, 0xA8, 0xB5, 0xB7, 0xF6, 0xE4, 0xA7, 0xA6, 0xF6, 0xE9, 0x9B, 0x83, 0xF6, 0xE5, 0xB6, 0xB2, 0xF6, 0xE9, 0x9C, 0xA3, 0xF6, 0xF0, 0xA9, 0x85, 0x85, 0xF6, 0xF0, 0xA9, 0x88, 0x9A, 0xF6, 0xE4, 0xA9, 0xAE, 0xF6, 0xE4, 0xA9, 0xB6, 0xF6, 0xE9, 0x9F, 0xA0, 0xF6, 0xF0, 0xA9, 0x90, 0x8A, 0xF6, 0xE4, 0xAA, 0xB2, 0xF6, 0xF0, 0xA9, 0x92, 0x96, 0xF6, 0xE9, 0xA0, 0x8B, 0xF6, 0xE9, 0xA0, 0x8B, 0xF6, 0xE9, 0xA0, 0xA9, 0xF6, 0xF0, 0xA9, 0x96, 0xB6, 0xF6, 0xE9, 0xA3, 0xA2, 0xF6, 0xE4, 0xAC, 0xB3, 0xF6, 0xE9, 0xA4, 0xA9, 0xF6, 0xE9, 0xA6, 0xA7, 0xF6, 0xE9, 0xA7, 0x82, 0xF6, 0xE9, 0xA7, 0xBE, 0xF6, 0xE4, 0xAF, 0x8E, 0xF6, 0xF0, 0xA9, 0xAC, 0xB0, 0xF6, 0xE9, 0xAC, 0x92, 0xF6, 0xE9, 0xB1, 0x80, 0xF6, 0xE9, 0xB3, 0xBD, 0xF6, 0xE4, 0xB3, 0x8E, 0xF6, 0xE4, 0xB3, 0xAD, 0xF6, 0xE9, 0xB5, 0xA7, 0xF6, 0xF0, 0xAA, 0x83, 0x8E, 0xF6, 0xE4, 0xB3, 0xB8, 0xF6, 0xF0, 0xAA, 0x84, 0x85, 0xF6, 0xF0, 0xAA, 0x88, 0x8E, 0xF6, 0xF0, 0xAA, 0x8A, 0x91, 0xF6, 0xE9, 0xBA, 0xBB, 0xF6, 0xE4, 0xB5, 0x96, 0xF6, 0xE9, 0xBB, 0xB9, 0xF6, 0xE9, 0xBB, 0xBE, 0xF6, 0xE9, 0xBC, 0x85, 0xF6, 0xE9, 0xBC, 0x8F, 0xF6, 0xE9, 0xBC, 0x96, 0xF6, 0xE9, 0xBC, 0xBB, 0xF6, 0xF0, 0xAA, 0x98, 0x80, }, }; static const uchar_t u8_case_common_b2_tbl[2][2][256] = { { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, 2, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 3, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 4, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, { { 0, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 1, 2, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 3, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, { N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, 4, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, N_, }, }, }; static const u8_displacement_t u8_tolower_b3_tbl[2][5][256] = { { { /* Third byte table 0. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 0 }, { 1, 60 }, { 2, 123 }, { 3, 185 }, { 4, 257 }, { 5, 321 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 6, 373 }, { 7, 439 }, { 8, 465 }, { 9, 561 }, { 10, 593 }, { 11, 649 }, { 12, 703 }, { 13, 749 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 1. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 14, 795 }, { 15, 891 }, { 16, 987 }, { 17, 1068 }, { 18, 1155 }, { 19, 1245 }, { 20, 1299 }, { 21, 1386 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 2. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 22, 1443 }, { 23, 1448 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 24, 1496 }, { 25, 1526 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 3. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 26, 1574 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 4. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 27, 1652 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, }, { { /* Third byte table 0. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 0 }, { 1, 60 }, { 2, 123 }, { 3, 185 }, { 4, 257 }, { 5, 321 }, { 6, 383 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 7, 401 }, { 8, 467 }, { 9, 505 }, { 10, 601 }, { 11, 633 }, { 12, 689 }, { 13, 753 }, { 14, 803 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 1. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 15, 849 }, { 16, 945 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 17, 963 }, { 18, 1059 }, { 19, 1155 }, { 20, 1236 }, { 21, 1323 }, { 22, 1413 }, { 23, 1467 }, { 24, 1554 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 2. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 25, 1611 }, { 26, 1619 }, { 27, 1667 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 28, 1670 }, { 29, 1700 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 30, 1748 }, { 31, 1889 }, { 32, 1911 }, { 33, 2007 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 3. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 34, 2061 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 4. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 35, 2139 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, }, }; static const uchar_t u8_tolower_b4_tbl[2][36][257] = { { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 46, 48, 50, 52, 54, 56, 58, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 49, 49, 51, 51, 53, 53, 55, 55, 55, 57, 57, 59, 59, 61, 61, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 58, 58, 60, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 6, 8, 10, 10, 12, 14, 16, 16, 16, 18, 20, 22, 24, 24, 26, 28, 28, 30, 32, 34, 34, 34, 34, 36, 38, 38, 40, 42, 42, 44, 44, 46, 46, 48, 50, 50, 52, 52, 52, 54, 54, 56, 58, 58, 60, 62, 64, 64, 66, 66, 68, 70, 70, 70, 70, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 8, 8, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 46, 48, 50, 50, 52, 52, 54, 56, 58, 58, 60, 60, 62, 62, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10, 12, 14, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 24, 24, 24, 24, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 52, 52, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 30, 33, 36, 39, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 45, 48, 51, 54, 57, 60, 63, 66, 66, 66, 66, 66, 66, 66, 66, 66, 69, 72, 75, 78, 81, 84, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 30, 30, 30, 30, 30, 30, 30, 33, 36, 39, 42, 45, 48, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 54, 57, 60, 63, 66, 69, 72, 72, 72, 72, 72, 72, 72, 72, 72, 75, 78, 81, 84, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 18, 21, 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 30, 33, 36, 39, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 45, 48, 51, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 46, 48, 50, 52, 54, 56, 58, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 49, 49, 51, 51, 53, 53, 55, 55, 55, 57, 57, 59, 59, 61, 61, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 58, 58, 60, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 6, 8, 10, 10, 12, 14, 16, 16, 16, 18, 20, 22, 24, 24, 26, 28, 28, 30, 32, 34, 34, 34, 34, 36, 38, 38, 40, 42, 42, 44, 44, 46, 46, 48, 50, 50, 52, 52, 52, 54, 54, 56, 58, 58, 60, 62, 64, 64, 66, 66, 68, 70, 70, 70, 70, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 8, 8, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 46, 48, 50, 50, 52, 52, 54, 56, 58, 58, 60, 60, 62, 62, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 52, 52, 52, 52, 52, 52, 55, 57, 57, 59, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10, 12, 14, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 24, 24, 24, 24, 26, 26, 26, 28, 28, 30, 32, 32, 32, 34, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 30, 33, 36, 39, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 45, 48, 51, 54, 57, 60, 63, 66, 66, 66, 66, 66, 66, 66, 66, 66, 69, 72, 75, 78, 81, 84, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 30, 30, 30, 30, 30, 30, 30, 33, 36, 39, 42, 45, 48, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 54, 57, 60, 63, 66, 69, 72, 72, 72, 72, 72, 72, 72, 72, 72, 75, 78, 81, 84, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 18, 21, 24, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 30, 33, 36, 39, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 45, 48, 51, 54, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 5, 5, 5, 5, 5, 5, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, 126, 129, 132, 135, 138, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 5, 8, 10, 10, 10, 13, 13, 16, 16, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, }, }, }; static const uchar_t u8_tolower_final_tbl[2][2299] = { { 0xC3, 0xA0, 0xC3, 0xA1, 0xC3, 0xA2, 0xC3, 0xA3, 0xC3, 0xA4, 0xC3, 0xA5, 0xC3, 0xA6, 0xC3, 0xA7, 0xC3, 0xA8, 0xC3, 0xA9, 0xC3, 0xAA, 0xC3, 0xAB, 0xC3, 0xAC, 0xC3, 0xAD, 0xC3, 0xAE, 0xC3, 0xAF, 0xC3, 0xB0, 0xC3, 0xB1, 0xC3, 0xB2, 0xC3, 0xB3, 0xC3, 0xB4, 0xC3, 0xB5, 0xC3, 0xB6, 0xC3, 0xB8, 0xC3, 0xB9, 0xC3, 0xBA, 0xC3, 0xBB, 0xC3, 0xBC, 0xC3, 0xBD, 0xC3, 0xBE, 0xC4, 0x81, 0xC4, 0x83, 0xC4, 0x85, 0xC4, 0x87, 0xC4, 0x89, 0xC4, 0x8B, 0xC4, 0x8D, 0xC4, 0x8F, 0xC4, 0x91, 0xC4, 0x93, 0xC4, 0x95, 0xC4, 0x97, 0xC4, 0x99, 0xC4, 0x9B, 0xC4, 0x9D, 0xC4, 0x9F, 0xC4, 0xA1, 0xC4, 0xA3, 0xC4, 0xA5, 0xC4, 0xA7, 0xC4, 0xA9, 0xC4, 0xAB, 0xC4, 0xAD, 0xC4, 0xAF, 0x69, 0xC4, 0xB3, 0xC4, 0xB5, 0xC4, 0xB7, 0xC4, 0xBA, 0xC4, 0xBC, 0xC4, 0xBE, 0xC5, 0x80, 0xC5, 0x82, 0xC5, 0x84, 0xC5, 0x86, 0xC5, 0x88, 0xC5, 0x8B, 0xC5, 0x8D, 0xC5, 0x8F, 0xC5, 0x91, 0xC5, 0x93, 0xC5, 0x95, 0xC5, 0x97, 0xC5, 0x99, 0xC5, 0x9B, 0xC5, 0x9D, 0xC5, 0x9F, 0xC5, 0xA1, 0xC5, 0xA3, 0xC5, 0xA5, 0xC5, 0xA7, 0xC5, 0xA9, 0xC5, 0xAB, 0xC5, 0xAD, 0xC5, 0xAF, 0xC5, 0xB1, 0xC5, 0xB3, 0xC5, 0xB5, 0xC5, 0xB7, 0xC3, 0xBF, 0xC5, 0xBA, 0xC5, 0xBC, 0xC5, 0xBE, 0xC9, 0x93, 0xC6, 0x83, 0xC6, 0x85, 0xC9, 0x94, 0xC6, 0x88, 0xC9, 0x96, 0xC9, 0x97, 0xC6, 0x8C, 0xC7, 0x9D, 0xC9, 0x99, 0xC9, 0x9B, 0xC6, 0x92, 0xC9, 0xA0, 0xC9, 0xA3, 0xC9, 0xA9, 0xC9, 0xA8, 0xC6, 0x99, 0xC9, 0xAF, 0xC9, 0xB2, 0xC9, 0xB5, 0xC6, 0xA1, 0xC6, 0xA3, 0xC6, 0xA5, 0xCA, 0x80, 0xC6, 0xA8, 0xCA, 0x83, 0xC6, 0xAD, 0xCA, 0x88, 0xC6, 0xB0, 0xCA, 0x8A, 0xCA, 0x8B, 0xC6, 0xB4, 0xC6, 0xB6, 0xCA, 0x92, 0xC6, 0xB9, 0xC6, 0xBD, 0xC7, 0x86, 0xC7, 0x86, 0xC7, 0x89, 0xC7, 0x89, 0xC7, 0x8C, 0xC7, 0x8C, 0xC7, 0x8E, 0xC7, 0x90, 0xC7, 0x92, 0xC7, 0x94, 0xC7, 0x96, 0xC7, 0x98, 0xC7, 0x9A, 0xC7, 0x9C, 0xC7, 0x9F, 0xC7, 0xA1, 0xC7, 0xA3, 0xC7, 0xA5, 0xC7, 0xA7, 0xC7, 0xA9, 0xC7, 0xAB, 0xC7, 0xAD, 0xC7, 0xAF, 0xC7, 0xB3, 0xC7, 0xB3, 0xC7, 0xB5, 0xC6, 0x95, 0xC6, 0xBF, 0xC7, 0xB9, 0xC7, 0xBB, 0xC7, 0xBD, 0xC7, 0xBF, 0xC8, 0x81, 0xC8, 0x83, 0xC8, 0x85, 0xC8, 0x87, 0xC8, 0x89, 0xC8, 0x8B, 0xC8, 0x8D, 0xC8, 0x8F, 0xC8, 0x91, 0xC8, 0x93, 0xC8, 0x95, 0xC8, 0x97, 0xC8, 0x99, 0xC8, 0x9B, 0xC8, 0x9D, 0xC8, 0x9F, 0xC6, 0x9E, 0xC8, 0xA3, 0xC8, 0xA5, 0xC8, 0xA7, 0xC8, 0xA9, 0xC8, 0xAB, 0xC8, 0xAD, 0xC8, 0xAF, 0xC8, 0xB1, 0xC8, 0xB3, 0xCE, 0xAC, 0xCE, 0xAD, 0xCE, 0xAE, 0xCE, 0xAF, 0xCF, 0x8C, 0xCF, 0x8D, 0xCF, 0x8E, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xCF, 0x8A, 0xCF, 0x8B, 0xCF, 0x99, 0xCF, 0x9B, 0xCF, 0x9D, 0xCF, 0x9F, 0xCF, 0xA1, 0xCF, 0xA3, 0xCF, 0xA5, 0xCF, 0xA7, 0xCF, 0xA9, 0xCF, 0xAB, 0xCF, 0xAD, 0xCF, 0xAF, 0xCE, 0xB8, 0xD1, 0x90, 0xD1, 0x91, 0xD1, 0x92, 0xD1, 0x93, 0xD1, 0x94, 0xD1, 0x95, 0xD1, 0x96, 0xD1, 0x97, 0xD1, 0x98, 0xD1, 0x99, 0xD1, 0x9A, 0xD1, 0x9B, 0xD1, 0x9C, 0xD1, 0x9D, 0xD1, 0x9E, 0xD1, 0x9F, 0xD0, 0xB0, 0xD0, 0xB1, 0xD0, 0xB2, 0xD0, 0xB3, 0xD0, 0xB4, 0xD0, 0xB5, 0xD0, 0xB6, 0xD0, 0xB7, 0xD0, 0xB8, 0xD0, 0xB9, 0xD0, 0xBA, 0xD0, 0xBB, 0xD0, 0xBC, 0xD0, 0xBD, 0xD0, 0xBE, 0xD0, 0xBF, 0xD1, 0x80, 0xD1, 0x81, 0xD1, 0x82, 0xD1, 0x83, 0xD1, 0x84, 0xD1, 0x85, 0xD1, 0x86, 0xD1, 0x87, 0xD1, 0x88, 0xD1, 0x89, 0xD1, 0x8A, 0xD1, 0x8B, 0xD1, 0x8C, 0xD1, 0x8D, 0xD1, 0x8E, 0xD1, 0x8F, 0xD1, 0xA1, 0xD1, 0xA3, 0xD1, 0xA5, 0xD1, 0xA7, 0xD1, 0xA9, 0xD1, 0xAB, 0xD1, 0xAD, 0xD1, 0xAF, 0xD1, 0xB1, 0xD1, 0xB3, 0xD1, 0xB5, 0xD1, 0xB7, 0xD1, 0xB9, 0xD1, 0xBB, 0xD1, 0xBD, 0xD1, 0xBF, 0xD2, 0x81, 0xD2, 0x8B, 0xD2, 0x8D, 0xD2, 0x8F, 0xD2, 0x91, 0xD2, 0x93, 0xD2, 0x95, 0xD2, 0x97, 0xD2, 0x99, 0xD2, 0x9B, 0xD2, 0x9D, 0xD2, 0x9F, 0xD2, 0xA1, 0xD2, 0xA3, 0xD2, 0xA5, 0xD2, 0xA7, 0xD2, 0xA9, 0xD2, 0xAB, 0xD2, 0xAD, 0xD2, 0xAF, 0xD2, 0xB1, 0xD2, 0xB3, 0xD2, 0xB5, 0xD2, 0xB7, 0xD2, 0xB9, 0xD2, 0xBB, 0xD2, 0xBD, 0xD2, 0xBF, 0xD3, 0x82, 0xD3, 0x84, 0xD3, 0x86, 0xD3, 0x88, 0xD3, 0x8A, 0xD3, 0x8C, 0xD3, 0x8E, 0xD3, 0x91, 0xD3, 0x93, 0xD3, 0x95, 0xD3, 0x97, 0xD3, 0x99, 0xD3, 0x9B, 0xD3, 0x9D, 0xD3, 0x9F, 0xD3, 0xA1, 0xD3, 0xA3, 0xD3, 0xA5, 0xD3, 0xA7, 0xD3, 0xA9, 0xD3, 0xAB, 0xD3, 0xAD, 0xD3, 0xAF, 0xD3, 0xB1, 0xD3, 0xB3, 0xD3, 0xB5, 0xD3, 0xB9, 0xD4, 0x81, 0xD4, 0x83, 0xD4, 0x85, 0xD4, 0x87, 0xD4, 0x89, 0xD4, 0x8B, 0xD4, 0x8D, 0xD4, 0x8F, 0xD5, 0xA1, 0xD5, 0xA2, 0xD5, 0xA3, 0xD5, 0xA4, 0xD5, 0xA5, 0xD5, 0xA6, 0xD5, 0xA7, 0xD5, 0xA8, 0xD5, 0xA9, 0xD5, 0xAA, 0xD5, 0xAB, 0xD5, 0xAC, 0xD5, 0xAD, 0xD5, 0xAE, 0xD5, 0xAF, 0xD5, 0xB0, 0xD5, 0xB1, 0xD5, 0xB2, 0xD5, 0xB3, 0xD5, 0xB4, 0xD5, 0xB5, 0xD5, 0xB6, 0xD5, 0xB7, 0xD5, 0xB8, 0xD5, 0xB9, 0xD5, 0xBA, 0xD5, 0xBB, 0xD5, 0xBC, 0xD5, 0xBD, 0xD5, 0xBE, 0xD5, 0xBF, 0xD6, 0x80, 0xD6, 0x81, 0xD6, 0x82, 0xD6, 0x83, 0xD6, 0x84, 0xD6, 0x85, 0xD6, 0x86, 0xE1, 0xB8, 0x81, 0xE1, 0xB8, 0x83, 0xE1, 0xB8, 0x85, 0xE1, 0xB8, 0x87, 0xE1, 0xB8, 0x89, 0xE1, 0xB8, 0x8B, 0xE1, 0xB8, 0x8D, 0xE1, 0xB8, 0x8F, 0xE1, 0xB8, 0x91, 0xE1, 0xB8, 0x93, 0xE1, 0xB8, 0x95, 0xE1, 0xB8, 0x97, 0xE1, 0xB8, 0x99, 0xE1, 0xB8, 0x9B, 0xE1, 0xB8, 0x9D, 0xE1, 0xB8, 0x9F, 0xE1, 0xB8, 0xA1, 0xE1, 0xB8, 0xA3, 0xE1, 0xB8, 0xA5, 0xE1, 0xB8, 0xA7, 0xE1, 0xB8, 0xA9, 0xE1, 0xB8, 0xAB, 0xE1, 0xB8, 0xAD, 0xE1, 0xB8, 0xAF, 0xE1, 0xB8, 0xB1, 0xE1, 0xB8, 0xB3, 0xE1, 0xB8, 0xB5, 0xE1, 0xB8, 0xB7, 0xE1, 0xB8, 0xB9, 0xE1, 0xB8, 0xBB, 0xE1, 0xB8, 0xBD, 0xE1, 0xB8, 0xBF, 0xE1, 0xB9, 0x81, 0xE1, 0xB9, 0x83, 0xE1, 0xB9, 0x85, 0xE1, 0xB9, 0x87, 0xE1, 0xB9, 0x89, 0xE1, 0xB9, 0x8B, 0xE1, 0xB9, 0x8D, 0xE1, 0xB9, 0x8F, 0xE1, 0xB9, 0x91, 0xE1, 0xB9, 0x93, 0xE1, 0xB9, 0x95, 0xE1, 0xB9, 0x97, 0xE1, 0xB9, 0x99, 0xE1, 0xB9, 0x9B, 0xE1, 0xB9, 0x9D, 0xE1, 0xB9, 0x9F, 0xE1, 0xB9, 0xA1, 0xE1, 0xB9, 0xA3, 0xE1, 0xB9, 0xA5, 0xE1, 0xB9, 0xA7, 0xE1, 0xB9, 0xA9, 0xE1, 0xB9, 0xAB, 0xE1, 0xB9, 0xAD, 0xE1, 0xB9, 0xAF, 0xE1, 0xB9, 0xB1, 0xE1, 0xB9, 0xB3, 0xE1, 0xB9, 0xB5, 0xE1, 0xB9, 0xB7, 0xE1, 0xB9, 0xB9, 0xE1, 0xB9, 0xBB, 0xE1, 0xB9, 0xBD, 0xE1, 0xB9, 0xBF, 0xE1, 0xBA, 0x81, 0xE1, 0xBA, 0x83, 0xE1, 0xBA, 0x85, 0xE1, 0xBA, 0x87, 0xE1, 0xBA, 0x89, 0xE1, 0xBA, 0x8B, 0xE1, 0xBA, 0x8D, 0xE1, 0xBA, 0x8F, 0xE1, 0xBA, 0x91, 0xE1, 0xBA, 0x93, 0xE1, 0xBA, 0x95, 0xE1, 0xBA, 0xA1, 0xE1, 0xBA, 0xA3, 0xE1, 0xBA, 0xA5, 0xE1, 0xBA, 0xA7, 0xE1, 0xBA, 0xA9, 0xE1, 0xBA, 0xAB, 0xE1, 0xBA, 0xAD, 0xE1, 0xBA, 0xAF, 0xE1, 0xBA, 0xB1, 0xE1, 0xBA, 0xB3, 0xE1, 0xBA, 0xB5, 0xE1, 0xBA, 0xB7, 0xE1, 0xBA, 0xB9, 0xE1, 0xBA, 0xBB, 0xE1, 0xBA, 0xBD, 0xE1, 0xBA, 0xBF, 0xE1, 0xBB, 0x81, 0xE1, 0xBB, 0x83, 0xE1, 0xBB, 0x85, 0xE1, 0xBB, 0x87, 0xE1, 0xBB, 0x89, 0xE1, 0xBB, 0x8B, 0xE1, 0xBB, 0x8D, 0xE1, 0xBB, 0x8F, 0xE1, 0xBB, 0x91, 0xE1, 0xBB, 0x93, 0xE1, 0xBB, 0x95, 0xE1, 0xBB, 0x97, 0xE1, 0xBB, 0x99, 0xE1, 0xBB, 0x9B, 0xE1, 0xBB, 0x9D, 0xE1, 0xBB, 0x9F, 0xE1, 0xBB, 0xA1, 0xE1, 0xBB, 0xA3, 0xE1, 0xBB, 0xA5, 0xE1, 0xBB, 0xA7, 0xE1, 0xBB, 0xA9, 0xE1, 0xBB, 0xAB, 0xE1, 0xBB, 0xAD, 0xE1, 0xBB, 0xAF, 0xE1, 0xBB, 0xB1, 0xE1, 0xBB, 0xB3, 0xE1, 0xBB, 0xB5, 0xE1, 0xBB, 0xB7, 0xE1, 0xBB, 0xB9, 0xE1, 0xBC, 0x80, 0xE1, 0xBC, 0x81, 0xE1, 0xBC, 0x82, 0xE1, 0xBC, 0x83, 0xE1, 0xBC, 0x84, 0xE1, 0xBC, 0x85, 0xE1, 0xBC, 0x86, 0xE1, 0xBC, 0x87, 0xE1, 0xBC, 0x90, 0xE1, 0xBC, 0x91, 0xE1, 0xBC, 0x92, 0xE1, 0xBC, 0x93, 0xE1, 0xBC, 0x94, 0xE1, 0xBC, 0x95, 0xE1, 0xBC, 0xA0, 0xE1, 0xBC, 0xA1, 0xE1, 0xBC, 0xA2, 0xE1, 0xBC, 0xA3, 0xE1, 0xBC, 0xA4, 0xE1, 0xBC, 0xA5, 0xE1, 0xBC, 0xA6, 0xE1, 0xBC, 0xA7, 0xE1, 0xBC, 0xB0, 0xE1, 0xBC, 0xB1, 0xE1, 0xBC, 0xB2, 0xE1, 0xBC, 0xB3, 0xE1, 0xBC, 0xB4, 0xE1, 0xBC, 0xB5, 0xE1, 0xBC, 0xB6, 0xE1, 0xBC, 0xB7, 0xE1, 0xBD, 0x80, 0xE1, 0xBD, 0x81, 0xE1, 0xBD, 0x82, 0xE1, 0xBD, 0x83, 0xE1, 0xBD, 0x84, 0xE1, 0xBD, 0x85, 0xE1, 0xBD, 0x91, 0xE1, 0xBD, 0x93, 0xE1, 0xBD, 0x95, 0xE1, 0xBD, 0x97, 0xE1, 0xBD, 0xA0, 0xE1, 0xBD, 0xA1, 0xE1, 0xBD, 0xA2, 0xE1, 0xBD, 0xA3, 0xE1, 0xBD, 0xA4, 0xE1, 0xBD, 0xA5, 0xE1, 0xBD, 0xA6, 0xE1, 0xBD, 0xA7, 0xE1, 0xBE, 0x80, 0xE1, 0xBE, 0x81, 0xE1, 0xBE, 0x82, 0xE1, 0xBE, 0x83, 0xE1, 0xBE, 0x84, 0xE1, 0xBE, 0x85, 0xE1, 0xBE, 0x86, 0xE1, 0xBE, 0x87, 0xE1, 0xBE, 0x90, 0xE1, 0xBE, 0x91, 0xE1, 0xBE, 0x92, 0xE1, 0xBE, 0x93, 0xE1, 0xBE, 0x94, 0xE1, 0xBE, 0x95, 0xE1, 0xBE, 0x96, 0xE1, 0xBE, 0x97, 0xE1, 0xBE, 0xA0, 0xE1, 0xBE, 0xA1, 0xE1, 0xBE, 0xA2, 0xE1, 0xBE, 0xA3, 0xE1, 0xBE, 0xA4, 0xE1, 0xBE, 0xA5, 0xE1, 0xBE, 0xA6, 0xE1, 0xBE, 0xA7, 0xE1, 0xBE, 0xB0, 0xE1, 0xBE, 0xB1, 0xE1, 0xBD, 0xB0, 0xE1, 0xBD, 0xB1, 0xE1, 0xBE, 0xB3, 0xE1, 0xBD, 0xB2, 0xE1, 0xBD, 0xB3, 0xE1, 0xBD, 0xB4, 0xE1, 0xBD, 0xB5, 0xE1, 0xBF, 0x83, 0xE1, 0xBF, 0x90, 0xE1, 0xBF, 0x91, 0xE1, 0xBD, 0xB6, 0xE1, 0xBD, 0xB7, 0xE1, 0xBF, 0xA0, 0xE1, 0xBF, 0xA1, 0xE1, 0xBD, 0xBA, 0xE1, 0xBD, 0xBB, 0xE1, 0xBF, 0xA5, 0xE1, 0xBD, 0xB8, 0xE1, 0xBD, 0xB9, 0xE1, 0xBD, 0xBC, 0xE1, 0xBD, 0xBD, 0xE1, 0xBF, 0xB3, 0xCF, 0x89, 0x6B, 0xC3, 0xA5, 0xE2, 0x85, 0xB0, 0xE2, 0x85, 0xB1, 0xE2, 0x85, 0xB2, 0xE2, 0x85, 0xB3, 0xE2, 0x85, 0xB4, 0xE2, 0x85, 0xB5, 0xE2, 0x85, 0xB6, 0xE2, 0x85, 0xB7, 0xE2, 0x85, 0xB8, 0xE2, 0x85, 0xB9, 0xE2, 0x85, 0xBA, 0xE2, 0x85, 0xBB, 0xE2, 0x85, 0xBC, 0xE2, 0x85, 0xBD, 0xE2, 0x85, 0xBE, 0xE2, 0x85, 0xBF, 0xE2, 0x93, 0x90, 0xE2, 0x93, 0x91, 0xE2, 0x93, 0x92, 0xE2, 0x93, 0x93, 0xE2, 0x93, 0x94, 0xE2, 0x93, 0x95, 0xE2, 0x93, 0x96, 0xE2, 0x93, 0x97, 0xE2, 0x93, 0x98, 0xE2, 0x93, 0x99, 0xE2, 0x93, 0x9A, 0xE2, 0x93, 0x9B, 0xE2, 0x93, 0x9C, 0xE2, 0x93, 0x9D, 0xE2, 0x93, 0x9E, 0xE2, 0x93, 0x9F, 0xE2, 0x93, 0xA0, 0xE2, 0x93, 0xA1, 0xE2, 0x93, 0xA2, 0xE2, 0x93, 0xA3, 0xE2, 0x93, 0xA4, 0xE2, 0x93, 0xA5, 0xE2, 0x93, 0xA6, 0xE2, 0x93, 0xA7, 0xE2, 0x93, 0xA8, 0xE2, 0x93, 0xA9, 0xEF, 0xBD, 0x81, 0xEF, 0xBD, 0x82, 0xEF, 0xBD, 0x83, 0xEF, 0xBD, 0x84, 0xEF, 0xBD, 0x85, 0xEF, 0xBD, 0x86, 0xEF, 0xBD, 0x87, 0xEF, 0xBD, 0x88, 0xEF, 0xBD, 0x89, 0xEF, 0xBD, 0x8A, 0xEF, 0xBD, 0x8B, 0xEF, 0xBD, 0x8C, 0xEF, 0xBD, 0x8D, 0xEF, 0xBD, 0x8E, 0xEF, 0xBD, 0x8F, 0xEF, 0xBD, 0x90, 0xEF, 0xBD, 0x91, 0xEF, 0xBD, 0x92, 0xEF, 0xBD, 0x93, 0xEF, 0xBD, 0x94, 0xEF, 0xBD, 0x95, 0xEF, 0xBD, 0x96, 0xEF, 0xBD, 0x97, 0xEF, 0xBD, 0x98, 0xEF, 0xBD, 0x99, 0xEF, 0xBD, 0x9A, 0xF0, 0x90, 0x90, 0xA8, 0xF0, 0x90, 0x90, 0xA9, 0xF0, 0x90, 0x90, 0xAA, 0xF0, 0x90, 0x90, 0xAB, 0xF0, 0x90, 0x90, 0xAC, 0xF0, 0x90, 0x90, 0xAD, 0xF0, 0x90, 0x90, 0xAE, 0xF0, 0x90, 0x90, 0xAF, 0xF0, 0x90, 0x90, 0xB0, 0xF0, 0x90, 0x90, 0xB1, 0xF0, 0x90, 0x90, 0xB2, 0xF0, 0x90, 0x90, 0xB3, 0xF0, 0x90, 0x90, 0xB4, 0xF0, 0x90, 0x90, 0xB5, 0xF0, 0x90, 0x90, 0xB6, 0xF0, 0x90, 0x90, 0xB7, 0xF0, 0x90, 0x90, 0xB8, 0xF0, 0x90, 0x90, 0xB9, 0xF0, 0x90, 0x90, 0xBA, 0xF0, 0x90, 0x90, 0xBB, 0xF0, 0x90, 0x90, 0xBC, 0xF0, 0x90, 0x90, 0xBD, 0xF0, 0x90, 0x90, 0xBE, 0xF0, 0x90, 0x90, 0xBF, 0xF0, 0x90, 0x91, 0x80, 0xF0, 0x90, 0x91, 0x81, 0xF0, 0x90, 0x91, 0x82, 0xF0, 0x90, 0x91, 0x83, 0xF0, 0x90, 0x91, 0x84, 0xF0, 0x90, 0x91, 0x85, 0xF0, 0x90, 0x91, 0x86, 0xF0, 0x90, 0x91, 0x87, 0xF0, 0x90, 0x91, 0x88, 0xF0, 0x90, 0x91, 0x89, 0xF0, 0x90, 0x91, 0x8A, 0xF0, 0x90, 0x91, 0x8B, 0xF0, 0x90, 0x91, 0x8C, 0xF0, 0x90, 0x91, 0x8D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 0xC3, 0xA0, 0xC3, 0xA1, 0xC3, 0xA2, 0xC3, 0xA3, 0xC3, 0xA4, 0xC3, 0xA5, 0xC3, 0xA6, 0xC3, 0xA7, 0xC3, 0xA8, 0xC3, 0xA9, 0xC3, 0xAA, 0xC3, 0xAB, 0xC3, 0xAC, 0xC3, 0xAD, 0xC3, 0xAE, 0xC3, 0xAF, 0xC3, 0xB0, 0xC3, 0xB1, 0xC3, 0xB2, 0xC3, 0xB3, 0xC3, 0xB4, 0xC3, 0xB5, 0xC3, 0xB6, 0xC3, 0xB8, 0xC3, 0xB9, 0xC3, 0xBA, 0xC3, 0xBB, 0xC3, 0xBC, 0xC3, 0xBD, 0xC3, 0xBE, 0xC4, 0x81, 0xC4, 0x83, 0xC4, 0x85, 0xC4, 0x87, 0xC4, 0x89, 0xC4, 0x8B, 0xC4, 0x8D, 0xC4, 0x8F, 0xC4, 0x91, 0xC4, 0x93, 0xC4, 0x95, 0xC4, 0x97, 0xC4, 0x99, 0xC4, 0x9B, 0xC4, 0x9D, 0xC4, 0x9F, 0xC4, 0xA1, 0xC4, 0xA3, 0xC4, 0xA5, 0xC4, 0xA7, 0xC4, 0xA9, 0xC4, 0xAB, 0xC4, 0xAD, 0xC4, 0xAF, 0x69, 0xC4, 0xB3, 0xC4, 0xB5, 0xC4, 0xB7, 0xC4, 0xBA, 0xC4, 0xBC, 0xC4, 0xBE, 0xC5, 0x80, 0xC5, 0x82, 0xC5, 0x84, 0xC5, 0x86, 0xC5, 0x88, 0xC5, 0x8B, 0xC5, 0x8D, 0xC5, 0x8F, 0xC5, 0x91, 0xC5, 0x93, 0xC5, 0x95, 0xC5, 0x97, 0xC5, 0x99, 0xC5, 0x9B, 0xC5, 0x9D, 0xC5, 0x9F, 0xC5, 0xA1, 0xC5, 0xA3, 0xC5, 0xA5, 0xC5, 0xA7, 0xC5, 0xA9, 0xC5, 0xAB, 0xC5, 0xAD, 0xC5, 0xAF, 0xC5, 0xB1, 0xC5, 0xB3, 0xC5, 0xB5, 0xC5, 0xB7, 0xC3, 0xBF, 0xC5, 0xBA, 0xC5, 0xBC, 0xC5, 0xBE, 0xC9, 0x93, 0xC6, 0x83, 0xC6, 0x85, 0xC9, 0x94, 0xC6, 0x88, 0xC9, 0x96, 0xC9, 0x97, 0xC6, 0x8C, 0xC7, 0x9D, 0xC9, 0x99, 0xC9, 0x9B, 0xC6, 0x92, 0xC9, 0xA0, 0xC9, 0xA3, 0xC9, 0xA9, 0xC9, 0xA8, 0xC6, 0x99, 0xC9, 0xAF, 0xC9, 0xB2, 0xC9, 0xB5, 0xC6, 0xA1, 0xC6, 0xA3, 0xC6, 0xA5, 0xCA, 0x80, 0xC6, 0xA8, 0xCA, 0x83, 0xC6, 0xAD, 0xCA, 0x88, 0xC6, 0xB0, 0xCA, 0x8A, 0xCA, 0x8B, 0xC6, 0xB4, 0xC6, 0xB6, 0xCA, 0x92, 0xC6, 0xB9, 0xC6, 0xBD, 0xC7, 0x86, 0xC7, 0x86, 0xC7, 0x89, 0xC7, 0x89, 0xC7, 0x8C, 0xC7, 0x8C, 0xC7, 0x8E, 0xC7, 0x90, 0xC7, 0x92, 0xC7, 0x94, 0xC7, 0x96, 0xC7, 0x98, 0xC7, 0x9A, 0xC7, 0x9C, 0xC7, 0x9F, 0xC7, 0xA1, 0xC7, 0xA3, 0xC7, 0xA5, 0xC7, 0xA7, 0xC7, 0xA9, 0xC7, 0xAB, 0xC7, 0xAD, 0xC7, 0xAF, 0xC7, 0xB3, 0xC7, 0xB3, 0xC7, 0xB5, 0xC6, 0x95, 0xC6, 0xBF, 0xC7, 0xB9, 0xC7, 0xBB, 0xC7, 0xBD, 0xC7, 0xBF, 0xC8, 0x81, 0xC8, 0x83, 0xC8, 0x85, 0xC8, 0x87, 0xC8, 0x89, 0xC8, 0x8B, 0xC8, 0x8D, 0xC8, 0x8F, 0xC8, 0x91, 0xC8, 0x93, 0xC8, 0x95, 0xC8, 0x97, 0xC8, 0x99, 0xC8, 0x9B, 0xC8, 0x9D, 0xC8, 0x9F, 0xC6, 0x9E, 0xC8, 0xA3, 0xC8, 0xA5, 0xC8, 0xA7, 0xC8, 0xA9, 0xC8, 0xAB, 0xC8, 0xAD, 0xC8, 0xAF, 0xC8, 0xB1, 0xC8, 0xB3, 0xE2, 0xB1, 0xA5, 0xC8, 0xBC, 0xC6, 0x9A, 0xE2, 0xB1, 0xA6, 0xC9, 0x82, 0xC6, 0x80, 0xCA, 0x89, 0xCA, 0x8C, 0xC9, 0x87, 0xC9, 0x89, 0xC9, 0x8B, 0xC9, 0x8D, 0xC9, 0x8F, 0xCE, 0xAC, 0xCE, 0xAD, 0xCE, 0xAE, 0xCE, 0xAF, 0xCF, 0x8C, 0xCF, 0x8D, 0xCF, 0x8E, 0xCE, 0xB1, 0xCE, 0xB2, 0xCE, 0xB3, 0xCE, 0xB4, 0xCE, 0xB5, 0xCE, 0xB6, 0xCE, 0xB7, 0xCE, 0xB8, 0xCE, 0xB9, 0xCE, 0xBA, 0xCE, 0xBB, 0xCE, 0xBC, 0xCE, 0xBD, 0xCE, 0xBE, 0xCE, 0xBF, 0xCF, 0x80, 0xCF, 0x81, 0xCF, 0x83, 0xCF, 0x84, 0xCF, 0x85, 0xCF, 0x86, 0xCF, 0x87, 0xCF, 0x88, 0xCF, 0x89, 0xCF, 0x8A, 0xCF, 0x8B, 0xCF, 0x99, 0xCF, 0x9B, 0xCF, 0x9D, 0xCF, 0x9F, 0xCF, 0xA1, 0xCF, 0xA3, 0xCF, 0xA5, 0xCF, 0xA7, 0xCF, 0xA9, 0xCF, 0xAB, 0xCF, 0xAD, 0xCF, 0xAF, 0xCE, 0xB8, 0xCF, 0xB8, 0xCF, 0xB2, 0xCF, 0xBB, 0xCD, 0xBB, 0xCD, 0xBC, 0xCD, 0xBD, 0xD1, 0x90, 0xD1, 0x91, 0xD1, 0x92, 0xD1, 0x93, 0xD1, 0x94, 0xD1, 0x95, 0xD1, 0x96, 0xD1, 0x97, 0xD1, 0x98, 0xD1, 0x99, 0xD1, 0x9A, 0xD1, 0x9B, 0xD1, 0x9C, 0xD1, 0x9D, 0xD1, 0x9E, 0xD1, 0x9F, 0xD0, 0xB0, 0xD0, 0xB1, 0xD0, 0xB2, 0xD0, 0xB3, 0xD0, 0xB4, 0xD0, 0xB5, 0xD0, 0xB6, 0xD0, 0xB7, 0xD0, 0xB8, 0xD0, 0xB9, 0xD0, 0xBA, 0xD0, 0xBB, 0xD0, 0xBC, 0xD0, 0xBD, 0xD0, 0xBE, 0xD0, 0xBF, 0xD1, 0x80, 0xD1, 0x81, 0xD1, 0x82, 0xD1, 0x83, 0xD1, 0x84, 0xD1, 0x85, 0xD1, 0x86, 0xD1, 0x87, 0xD1, 0x88, 0xD1, 0x89, 0xD1, 0x8A, 0xD1, 0x8B, 0xD1, 0x8C, 0xD1, 0x8D, 0xD1, 0x8E, 0xD1, 0x8F, 0xD1, 0xA1, 0xD1, 0xA3, 0xD1, 0xA5, 0xD1, 0xA7, 0xD1, 0xA9, 0xD1, 0xAB, 0xD1, 0xAD, 0xD1, 0xAF, 0xD1, 0xB1, 0xD1, 0xB3, 0xD1, 0xB5, 0xD1, 0xB7, 0xD1, 0xB9, 0xD1, 0xBB, 0xD1, 0xBD, 0xD1, 0xBF, 0xD2, 0x81, 0xD2, 0x8B, 0xD2, 0x8D, 0xD2, 0x8F, 0xD2, 0x91, 0xD2, 0x93, 0xD2, 0x95, 0xD2, 0x97, 0xD2, 0x99, 0xD2, 0x9B, 0xD2, 0x9D, 0xD2, 0x9F, 0xD2, 0xA1, 0xD2, 0xA3, 0xD2, 0xA5, 0xD2, 0xA7, 0xD2, 0xA9, 0xD2, 0xAB, 0xD2, 0xAD, 0xD2, 0xAF, 0xD2, 0xB1, 0xD2, 0xB3, 0xD2, 0xB5, 0xD2, 0xB7, 0xD2, 0xB9, 0xD2, 0xBB, 0xD2, 0xBD, 0xD2, 0xBF, 0xD3, 0x8F, 0xD3, 0x82, 0xD3, 0x84, 0xD3, 0x86, 0xD3, 0x88, 0xD3, 0x8A, 0xD3, 0x8C, 0xD3, 0x8E, 0xD3, 0x91, 0xD3, 0x93, 0xD3, 0x95, 0xD3, 0x97, 0xD3, 0x99, 0xD3, 0x9B, 0xD3, 0x9D, 0xD3, 0x9F, 0xD3, 0xA1, 0xD3, 0xA3, 0xD3, 0xA5, 0xD3, 0xA7, 0xD3, 0xA9, 0xD3, 0xAB, 0xD3, 0xAD, 0xD3, 0xAF, 0xD3, 0xB1, 0xD3, 0xB3, 0xD3, 0xB5, 0xD3, 0xB7, 0xD3, 0xB9, 0xD3, 0xBB, 0xD3, 0xBD, 0xD3, 0xBF, 0xD4, 0x81, 0xD4, 0x83, 0xD4, 0x85, 0xD4, 0x87, 0xD4, 0x89, 0xD4, 0x8B, 0xD4, 0x8D, 0xD4, 0x8F, 0xD4, 0x91, 0xD4, 0x93, 0xD5, 0xA1, 0xD5, 0xA2, 0xD5, 0xA3, 0xD5, 0xA4, 0xD5, 0xA5, 0xD5, 0xA6, 0xD5, 0xA7, 0xD5, 0xA8, 0xD5, 0xA9, 0xD5, 0xAA, 0xD5, 0xAB, 0xD5, 0xAC, 0xD5, 0xAD, 0xD5, 0xAE, 0xD5, 0xAF, 0xD5, 0xB0, 0xD5, 0xB1, 0xD5, 0xB2, 0xD5, 0xB3, 0xD5, 0xB4, 0xD5, 0xB5, 0xD5, 0xB6, 0xD5, 0xB7, 0xD5, 0xB8, 0xD5, 0xB9, 0xD5, 0xBA, 0xD5, 0xBB, 0xD5, 0xBC, 0xD5, 0xBD, 0xD5, 0xBE, 0xD5, 0xBF, 0xD6, 0x80, 0xD6, 0x81, 0xD6, 0x82, 0xD6, 0x83, 0xD6, 0x84, 0xD6, 0x85, 0xD6, 0x86, 0xE2, 0xB4, 0x80, 0xE2, 0xB4, 0x81, 0xE2, 0xB4, 0x82, 0xE2, 0xB4, 0x83, 0xE2, 0xB4, 0x84, 0xE2, 0xB4, 0x85, 0xE2, 0xB4, 0x86, 0xE2, 0xB4, 0x87, 0xE2, 0xB4, 0x88, 0xE2, 0xB4, 0x89, 0xE2, 0xB4, 0x8A, 0xE2, 0xB4, 0x8B, 0xE2, 0xB4, 0x8C, 0xE2, 0xB4, 0x8D, 0xE2, 0xB4, 0x8E, 0xE2, 0xB4, 0x8F, 0xE2, 0xB4, 0x90, 0xE2, 0xB4, 0x91, 0xE2, 0xB4, 0x92, 0xE2, 0xB4, 0x93, 0xE2, 0xB4, 0x94, 0xE2, 0xB4, 0x95, 0xE2, 0xB4, 0x96, 0xE2, 0xB4, 0x97, 0xE2, 0xB4, 0x98, 0xE2, 0xB4, 0x99, 0xE2, 0xB4, 0x9A, 0xE2, 0xB4, 0x9B, 0xE2, 0xB4, 0x9C, 0xE2, 0xB4, 0x9D, 0xE2, 0xB4, 0x9E, 0xE2, 0xB4, 0x9F, 0xE2, 0xB4, 0xA0, 0xE2, 0xB4, 0xA1, 0xE2, 0xB4, 0xA2, 0xE2, 0xB4, 0xA3, 0xE2, 0xB4, 0xA4, 0xE2, 0xB4, 0xA5, 0xE1, 0xB8, 0x81, 0xE1, 0xB8, 0x83, 0xE1, 0xB8, 0x85, 0xE1, 0xB8, 0x87, 0xE1, 0xB8, 0x89, 0xE1, 0xB8, 0x8B, 0xE1, 0xB8, 0x8D, 0xE1, 0xB8, 0x8F, 0xE1, 0xB8, 0x91, 0xE1, 0xB8, 0x93, 0xE1, 0xB8, 0x95, 0xE1, 0xB8, 0x97, 0xE1, 0xB8, 0x99, 0xE1, 0xB8, 0x9B, 0xE1, 0xB8, 0x9D, 0xE1, 0xB8, 0x9F, 0xE1, 0xB8, 0xA1, 0xE1, 0xB8, 0xA3, 0xE1, 0xB8, 0xA5, 0xE1, 0xB8, 0xA7, 0xE1, 0xB8, 0xA9, 0xE1, 0xB8, 0xAB, 0xE1, 0xB8, 0xAD, 0xE1, 0xB8, 0xAF, 0xE1, 0xB8, 0xB1, 0xE1, 0xB8, 0xB3, 0xE1, 0xB8, 0xB5, 0xE1, 0xB8, 0xB7, 0xE1, 0xB8, 0xB9, 0xE1, 0xB8, 0xBB, 0xE1, 0xB8, 0xBD, 0xE1, 0xB8, 0xBF, 0xE1, 0xB9, 0x81, 0xE1, 0xB9, 0x83, 0xE1, 0xB9, 0x85, 0xE1, 0xB9, 0x87, 0xE1, 0xB9, 0x89, 0xE1, 0xB9, 0x8B, 0xE1, 0xB9, 0x8D, 0xE1, 0xB9, 0x8F, 0xE1, 0xB9, 0x91, 0xE1, 0xB9, 0x93, 0xE1, 0xB9, 0x95, 0xE1, 0xB9, 0x97, 0xE1, 0xB9, 0x99, 0xE1, 0xB9, 0x9B, 0xE1, 0xB9, 0x9D, 0xE1, 0xB9, 0x9F, 0xE1, 0xB9, 0xA1, 0xE1, 0xB9, 0xA3, 0xE1, 0xB9, 0xA5, 0xE1, 0xB9, 0xA7, 0xE1, 0xB9, 0xA9, 0xE1, 0xB9, 0xAB, 0xE1, 0xB9, 0xAD, 0xE1, 0xB9, 0xAF, 0xE1, 0xB9, 0xB1, 0xE1, 0xB9, 0xB3, 0xE1, 0xB9, 0xB5, 0xE1, 0xB9, 0xB7, 0xE1, 0xB9, 0xB9, 0xE1, 0xB9, 0xBB, 0xE1, 0xB9, 0xBD, 0xE1, 0xB9, 0xBF, 0xE1, 0xBA, 0x81, 0xE1, 0xBA, 0x83, 0xE1, 0xBA, 0x85, 0xE1, 0xBA, 0x87, 0xE1, 0xBA, 0x89, 0xE1, 0xBA, 0x8B, 0xE1, 0xBA, 0x8D, 0xE1, 0xBA, 0x8F, 0xE1, 0xBA, 0x91, 0xE1, 0xBA, 0x93, 0xE1, 0xBA, 0x95, 0xE1, 0xBA, 0xA1, 0xE1, 0xBA, 0xA3, 0xE1, 0xBA, 0xA5, 0xE1, 0xBA, 0xA7, 0xE1, 0xBA, 0xA9, 0xE1, 0xBA, 0xAB, 0xE1, 0xBA, 0xAD, 0xE1, 0xBA, 0xAF, 0xE1, 0xBA, 0xB1, 0xE1, 0xBA, 0xB3, 0xE1, 0xBA, 0xB5, 0xE1, 0xBA, 0xB7, 0xE1, 0xBA, 0xB9, 0xE1, 0xBA, 0xBB, 0xE1, 0xBA, 0xBD, 0xE1, 0xBA, 0xBF, 0xE1, 0xBB, 0x81, 0xE1, 0xBB, 0x83, 0xE1, 0xBB, 0x85, 0xE1, 0xBB, 0x87, 0xE1, 0xBB, 0x89, 0xE1, 0xBB, 0x8B, 0xE1, 0xBB, 0x8D, 0xE1, 0xBB, 0x8F, 0xE1, 0xBB, 0x91, 0xE1, 0xBB, 0x93, 0xE1, 0xBB, 0x95, 0xE1, 0xBB, 0x97, 0xE1, 0xBB, 0x99, 0xE1, 0xBB, 0x9B, 0xE1, 0xBB, 0x9D, 0xE1, 0xBB, 0x9F, 0xE1, 0xBB, 0xA1, 0xE1, 0xBB, 0xA3, 0xE1, 0xBB, 0xA5, 0xE1, 0xBB, 0xA7, 0xE1, 0xBB, 0xA9, 0xE1, 0xBB, 0xAB, 0xE1, 0xBB, 0xAD, 0xE1, 0xBB, 0xAF, 0xE1, 0xBB, 0xB1, 0xE1, 0xBB, 0xB3, 0xE1, 0xBB, 0xB5, 0xE1, 0xBB, 0xB7, 0xE1, 0xBB, 0xB9, 0xE1, 0xBC, 0x80, 0xE1, 0xBC, 0x81, 0xE1, 0xBC, 0x82, 0xE1, 0xBC, 0x83, 0xE1, 0xBC, 0x84, 0xE1, 0xBC, 0x85, 0xE1, 0xBC, 0x86, 0xE1, 0xBC, 0x87, 0xE1, 0xBC, 0x90, 0xE1, 0xBC, 0x91, 0xE1, 0xBC, 0x92, 0xE1, 0xBC, 0x93, 0xE1, 0xBC, 0x94, 0xE1, 0xBC, 0x95, 0xE1, 0xBC, 0xA0, 0xE1, 0xBC, 0xA1, 0xE1, 0xBC, 0xA2, 0xE1, 0xBC, 0xA3, 0xE1, 0xBC, 0xA4, 0xE1, 0xBC, 0xA5, 0xE1, 0xBC, 0xA6, 0xE1, 0xBC, 0xA7, 0xE1, 0xBC, 0xB0, 0xE1, 0xBC, 0xB1, 0xE1, 0xBC, 0xB2, 0xE1, 0xBC, 0xB3, 0xE1, 0xBC, 0xB4, 0xE1, 0xBC, 0xB5, 0xE1, 0xBC, 0xB6, 0xE1, 0xBC, 0xB7, 0xE1, 0xBD, 0x80, 0xE1, 0xBD, 0x81, 0xE1, 0xBD, 0x82, 0xE1, 0xBD, 0x83, 0xE1, 0xBD, 0x84, 0xE1, 0xBD, 0x85, 0xE1, 0xBD, 0x91, 0xE1, 0xBD, 0x93, 0xE1, 0xBD, 0x95, 0xE1, 0xBD, 0x97, 0xE1, 0xBD, 0xA0, 0xE1, 0xBD, 0xA1, 0xE1, 0xBD, 0xA2, 0xE1, 0xBD, 0xA3, 0xE1, 0xBD, 0xA4, 0xE1, 0xBD, 0xA5, 0xE1, 0xBD, 0xA6, 0xE1, 0xBD, 0xA7, 0xE1, 0xBE, 0x80, 0xE1, 0xBE, 0x81, 0xE1, 0xBE, 0x82, 0xE1, 0xBE, 0x83, 0xE1, 0xBE, 0x84, 0xE1, 0xBE, 0x85, 0xE1, 0xBE, 0x86, 0xE1, 0xBE, 0x87, 0xE1, 0xBE, 0x90, 0xE1, 0xBE, 0x91, 0xE1, 0xBE, 0x92, 0xE1, 0xBE, 0x93, 0xE1, 0xBE, 0x94, 0xE1, 0xBE, 0x95, 0xE1, 0xBE, 0x96, 0xE1, 0xBE, 0x97, 0xE1, 0xBE, 0xA0, 0xE1, 0xBE, 0xA1, 0xE1, 0xBE, 0xA2, 0xE1, 0xBE, 0xA3, 0xE1, 0xBE, 0xA4, 0xE1, 0xBE, 0xA5, 0xE1, 0xBE, 0xA6, 0xE1, 0xBE, 0xA7, 0xE1, 0xBE, 0xB0, 0xE1, 0xBE, 0xB1, 0xE1, 0xBD, 0xB0, 0xE1, 0xBD, 0xB1, 0xE1, 0xBE, 0xB3, 0xE1, 0xBD, 0xB2, 0xE1, 0xBD, 0xB3, 0xE1, 0xBD, 0xB4, 0xE1, 0xBD, 0xB5, 0xE1, 0xBF, 0x83, 0xE1, 0xBF, 0x90, 0xE1, 0xBF, 0x91, 0xE1, 0xBD, 0xB6, 0xE1, 0xBD, 0xB7, 0xE1, 0xBF, 0xA0, 0xE1, 0xBF, 0xA1, 0xE1, 0xBD, 0xBA, 0xE1, 0xBD, 0xBB, 0xE1, 0xBF, 0xA5, 0xE1, 0xBD, 0xB8, 0xE1, 0xBD, 0xB9, 0xE1, 0xBD, 0xBC, 0xE1, 0xBD, 0xBD, 0xE1, 0xBF, 0xB3, 0xCF, 0x89, 0x6B, 0xC3, 0xA5, 0xE2, 0x85, 0x8E, 0xE2, 0x85, 0xB0, 0xE2, 0x85, 0xB1, 0xE2, 0x85, 0xB2, 0xE2, 0x85, 0xB3, 0xE2, 0x85, 0xB4, 0xE2, 0x85, 0xB5, 0xE2, 0x85, 0xB6, 0xE2, 0x85, 0xB7, 0xE2, 0x85, 0xB8, 0xE2, 0x85, 0xB9, 0xE2, 0x85, 0xBA, 0xE2, 0x85, 0xBB, 0xE2, 0x85, 0xBC, 0xE2, 0x85, 0xBD, 0xE2, 0x85, 0xBE, 0xE2, 0x85, 0xBF, 0xE2, 0x86, 0x84, 0xE2, 0x93, 0x90, 0xE2, 0x93, 0x91, 0xE2, 0x93, 0x92, 0xE2, 0x93, 0x93, 0xE2, 0x93, 0x94, 0xE2, 0x93, 0x95, 0xE2, 0x93, 0x96, 0xE2, 0x93, 0x97, 0xE2, 0x93, 0x98, 0xE2, 0x93, 0x99, 0xE2, 0x93, 0x9A, 0xE2, 0x93, 0x9B, 0xE2, 0x93, 0x9C, 0xE2, 0x93, 0x9D, 0xE2, 0x93, 0x9E, 0xE2, 0x93, 0x9F, 0xE2, 0x93, 0xA0, 0xE2, 0x93, 0xA1, 0xE2, 0x93, 0xA2, 0xE2, 0x93, 0xA3, 0xE2, 0x93, 0xA4, 0xE2, 0x93, 0xA5, 0xE2, 0x93, 0xA6, 0xE2, 0x93, 0xA7, 0xE2, 0x93, 0xA8, 0xE2, 0x93, 0xA9, 0xE2, 0xB0, 0xB0, 0xE2, 0xB0, 0xB1, 0xE2, 0xB0, 0xB2, 0xE2, 0xB0, 0xB3, 0xE2, 0xB0, 0xB4, 0xE2, 0xB0, 0xB5, 0xE2, 0xB0, 0xB6, 0xE2, 0xB0, 0xB7, 0xE2, 0xB0, 0xB8, 0xE2, 0xB0, 0xB9, 0xE2, 0xB0, 0xBA, 0xE2, 0xB0, 0xBB, 0xE2, 0xB0, 0xBC, 0xE2, 0xB0, 0xBD, 0xE2, 0xB0, 0xBE, 0xE2, 0xB0, 0xBF, 0xE2, 0xB1, 0x80, 0xE2, 0xB1, 0x81, 0xE2, 0xB1, 0x82, 0xE2, 0xB1, 0x83, 0xE2, 0xB1, 0x84, 0xE2, 0xB1, 0x85, 0xE2, 0xB1, 0x86, 0xE2, 0xB1, 0x87, 0xE2, 0xB1, 0x88, 0xE2, 0xB1, 0x89, 0xE2, 0xB1, 0x8A, 0xE2, 0xB1, 0x8B, 0xE2, 0xB1, 0x8C, 0xE2, 0xB1, 0x8D, 0xE2, 0xB1, 0x8E, 0xE2, 0xB1, 0x8F, 0xE2, 0xB1, 0x90, 0xE2, 0xB1, 0x91, 0xE2, 0xB1, 0x92, 0xE2, 0xB1, 0x93, 0xE2, 0xB1, 0x94, 0xE2, 0xB1, 0x95, 0xE2, 0xB1, 0x96, 0xE2, 0xB1, 0x97, 0xE2, 0xB1, 0x98, 0xE2, 0xB1, 0x99, 0xE2, 0xB1, 0x9A, 0xE2, 0xB1, 0x9B, 0xE2, 0xB1, 0x9C, 0xE2, 0xB1, 0x9D, 0xE2, 0xB1, 0x9E, 0xE2, 0xB1, 0xA1, 0xC9, 0xAB, 0xE1, 0xB5, 0xBD, 0xC9, 0xBD, 0xE2, 0xB1, 0xA8, 0xE2, 0xB1, 0xAA, 0xE2, 0xB1, 0xAC, 0xE2, 0xB1, 0xB6, 0xE2, 0xB2, 0x81, 0xE2, 0xB2, 0x83, 0xE2, 0xB2, 0x85, 0xE2, 0xB2, 0x87, 0xE2, 0xB2, 0x89, 0xE2, 0xB2, 0x8B, 0xE2, 0xB2, 0x8D, 0xE2, 0xB2, 0x8F, 0xE2, 0xB2, 0x91, 0xE2, 0xB2, 0x93, 0xE2, 0xB2, 0x95, 0xE2, 0xB2, 0x97, 0xE2, 0xB2, 0x99, 0xE2, 0xB2, 0x9B, 0xE2, 0xB2, 0x9D, 0xE2, 0xB2, 0x9F, 0xE2, 0xB2, 0xA1, 0xE2, 0xB2, 0xA3, 0xE2, 0xB2, 0xA5, 0xE2, 0xB2, 0xA7, 0xE2, 0xB2, 0xA9, 0xE2, 0xB2, 0xAB, 0xE2, 0xB2, 0xAD, 0xE2, 0xB2, 0xAF, 0xE2, 0xB2, 0xB1, 0xE2, 0xB2, 0xB3, 0xE2, 0xB2, 0xB5, 0xE2, 0xB2, 0xB7, 0xE2, 0xB2, 0xB9, 0xE2, 0xB2, 0xBB, 0xE2, 0xB2, 0xBD, 0xE2, 0xB2, 0xBF, 0xE2, 0xB3, 0x81, 0xE2, 0xB3, 0x83, 0xE2, 0xB3, 0x85, 0xE2, 0xB3, 0x87, 0xE2, 0xB3, 0x89, 0xE2, 0xB3, 0x8B, 0xE2, 0xB3, 0x8D, 0xE2, 0xB3, 0x8F, 0xE2, 0xB3, 0x91, 0xE2, 0xB3, 0x93, 0xE2, 0xB3, 0x95, 0xE2, 0xB3, 0x97, 0xE2, 0xB3, 0x99, 0xE2, 0xB3, 0x9B, 0xE2, 0xB3, 0x9D, 0xE2, 0xB3, 0x9F, 0xE2, 0xB3, 0xA1, 0xE2, 0xB3, 0xA3, 0xEF, 0xBD, 0x81, 0xEF, 0xBD, 0x82, 0xEF, 0xBD, 0x83, 0xEF, 0xBD, 0x84, 0xEF, 0xBD, 0x85, 0xEF, 0xBD, 0x86, 0xEF, 0xBD, 0x87, 0xEF, 0xBD, 0x88, 0xEF, 0xBD, 0x89, 0xEF, 0xBD, 0x8A, 0xEF, 0xBD, 0x8B, 0xEF, 0xBD, 0x8C, 0xEF, 0xBD, 0x8D, 0xEF, 0xBD, 0x8E, 0xEF, 0xBD, 0x8F, 0xEF, 0xBD, 0x90, 0xEF, 0xBD, 0x91, 0xEF, 0xBD, 0x92, 0xEF, 0xBD, 0x93, 0xEF, 0xBD, 0x94, 0xEF, 0xBD, 0x95, 0xEF, 0xBD, 0x96, 0xEF, 0xBD, 0x97, 0xEF, 0xBD, 0x98, 0xEF, 0xBD, 0x99, 0xEF, 0xBD, 0x9A, 0xF0, 0x90, 0x90, 0xA8, 0xF0, 0x90, 0x90, 0xA9, 0xF0, 0x90, 0x90, 0xAA, 0xF0, 0x90, 0x90, 0xAB, 0xF0, 0x90, 0x90, 0xAC, 0xF0, 0x90, 0x90, 0xAD, 0xF0, 0x90, 0x90, 0xAE, 0xF0, 0x90, 0x90, 0xAF, 0xF0, 0x90, 0x90, 0xB0, 0xF0, 0x90, 0x90, 0xB1, 0xF0, 0x90, 0x90, 0xB2, 0xF0, 0x90, 0x90, 0xB3, 0xF0, 0x90, 0x90, 0xB4, 0xF0, 0x90, 0x90, 0xB5, 0xF0, 0x90, 0x90, 0xB6, 0xF0, 0x90, 0x90, 0xB7, 0xF0, 0x90, 0x90, 0xB8, 0xF0, 0x90, 0x90, 0xB9, 0xF0, 0x90, 0x90, 0xBA, 0xF0, 0x90, 0x90, 0xBB, 0xF0, 0x90, 0x90, 0xBC, 0xF0, 0x90, 0x90, 0xBD, 0xF0, 0x90, 0x90, 0xBE, 0xF0, 0x90, 0x90, 0xBF, 0xF0, 0x90, 0x91, 0x80, 0xF0, 0x90, 0x91, 0x81, 0xF0, 0x90, 0x91, 0x82, 0xF0, 0x90, 0x91, 0x83, 0xF0, 0x90, 0x91, 0x84, 0xF0, 0x90, 0x91, 0x85, 0xF0, 0x90, 0x91, 0x86, 0xF0, 0x90, 0x91, 0x87, 0xF0, 0x90, 0x91, 0x88, 0xF0, 0x90, 0x91, 0x89, 0xF0, 0x90, 0x91, 0x8A, 0xF0, 0x90, 0x91, 0x8B, 0xF0, 0x90, 0x91, 0x8C, 0xF0, 0x90, 0x91, 0x8D, 0xF0, 0x90, 0x91, 0x8E, 0xF0, 0x90, 0x91, 0x8F, }, }; static const u8_displacement_t u8_toupper_b3_tbl[2][5][256] = { { { /* Third byte table 0. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 0 }, { 1, 2 }, { 2, 64 }, { 3, 125 }, { 4, 188 }, { 5, 226 }, { 6, 288 }, { 7, 338 }, { 8, 364 }, { N_, 0 }, { N_, 0 }, { 9, 376 }, { 10, 378 }, { 11, 416 }, { 12, 486 }, { 13, 518 }, { 14, 614 }, { 15, 670 }, { 16, 724 }, { 17, 740 }, { 18, 802 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 1. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 19, 816 }, { 20, 912 }, { 21, 1008 }, { 22, 1092 }, { 23, 1179 }, { 24, 1269 }, { 25, 1365 }, { 26, 1448 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 2. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 27, 1469 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 28, 1517 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 3. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 29, 1595 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 4. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 30, 1673 }, { 31, 1769 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, }, { { /* Third byte table 0. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 0, 0 }, { 1, 2 }, { 2, 64 }, { 3, 125 }, { 4, 188 }, { 5, 230 }, { 6, 292 }, { 7, 344 }, { 8, 388 }, { N_, 0 }, { N_, 0 }, { 9, 404 }, { 10, 412 }, { 11, 450 }, { 12, 524 }, { 13, 556 }, { 14, 652 }, { 15, 708 }, { 16, 772 }, { 17, 792 }, { 18, 854 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 1. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 19, 868 }, { N_, 0 }, { N_, 0 }, { 20, 871 }, { 21, 967 }, { 22, 1063 }, { 23, 1147 }, { 24, 1234 }, { 25, 1324 }, { 26, 1420 }, { 27, 1503 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 2. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 28, 1524 }, { 29, 1575 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 30, 1578 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 31, 1656 }, { 32, 1704 }, { 33, 1816 }, { 34, 1912 }, { 35, 1966 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 3. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 36, 2080 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, { /* Third byte table 4. */ { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { 37, 2158 }, { 38, 2254 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, { N_, 0 }, }, }, }; static const uchar_t u8_toupper_b4_tbl[2][39][257] = { { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 46, 48, 50, 52, 54, 56, 58, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 49, 49, 51, 51, 53, 53, 55, 55, 55, 57, 57, 59, 59, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 56, 58, 58, 60, 60, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 4, 6, 6, 6, 6, 8, 8, 8, 8, 8, 8, 10, 10, 10, 12, 12, 12, 12, 14, 14, 14, 14, 14, 16, 16, 16, 18, 18, 20, 20, 22, 22, 22, 24, 24, 24, 24, 24, 26, 26, 26, 28, 28, 28, 28, 30, 30, 32, 32, 32, 34, 34, 34, 34, 36, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 8, 8, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 48, 50, 52, 52, 54, 54, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 8, 8, 10, 10, 12, 12, 12, 12, 12, 14, 14, 14, 16, 16, 16, 16, 16, 18, 20, 20, 20, 20, 20, 20, 22, 22, 22, 24, 24, 24, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 8, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 30, 32, 34, 34, 34, 34, 36, 38, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 64, 66, 68, 68, 68, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 92, 94, 94, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 52, 52, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 33, 33, 33, 33, 36, 36, 36, 36, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 30, 33, 36, 39, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 45, 48, 51, 54, 57, 60, 63, 66, 66, 66, 66, 66, 66, 66, 66, 66, 69, 72, 75, 78, 81, 84, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 30, 30, 30, 30, 30, 30, 30, 33, 36, 39, 42, 45, 48, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 54, 57, 60, 63, 66, 69, 72, 72, 72, 72, 72, 72, 72, 72, 72, 75, 78, 78, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 12, 15, 15, 15, 15, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 36. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 37. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { /* Fourth byte table 38. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, }, { { /* Fourth byte table 0. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, }, { /* Fourth byte table 1. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 46, 48, 50, 52, 54, 56, 58, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 2. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 49, 49, 51, 51, 53, 53, 55, 55, 55, 57, 57, 59, 59, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, }, { /* Fourth byte table 3. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 56, 58, 58, 60, 60, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, }, { /* Fourth byte table 4. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 4, 4, 6, 6, 6, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 12, 12, 12, 14, 14, 14, 14, 16, 18, 18, 18, 18, 20, 20, 20, 22, 22, 24, 24, 26, 26, 26, 28, 28, 28, 28, 28, 30, 30, 30, 32, 32, 32, 32, 34, 34, 36, 36, 36, 38, 38, 38, 38, 40, 40, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, }, { /* Fourth byte table 5. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 8, 8, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 48, 50, 52, 52, 54, 54, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 6. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 50, 50, 50, 50, 50, 50, 50, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, }, { /* Fourth byte table 7. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 12, 12, 14, 16, 16, 18, 20, 20, 22, 22, 24, 24, 24, 24, 24, 26, 26, 26, 28, 28, 28, 28, 28, 30, 32, 32, 35, 35, 35, 35, 37, 37, 37, 39, 39, 39, 41, 41, 41, 41, 41, 41, 41, 41, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, }, { /* Fourth byte table 8. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 4, 4, 4, 4, 4, 6, 8, 10, 12, 14, 14, 14, 14, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, }, { /* Fourth byte table 9. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }, { /* Fourth byte table 10. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, }, { /* Fourth byte table 11. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 30, 32, 34, 34, 34, 34, 36, 38, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 64, 66, 68, 68, 68, 70, 70, 70, 72, 72, 72, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, }, { /* Fourth byte table 12. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, }, { /* Fourth byte table 13. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 64, 66, 66, 68, 68, 70, 70, 72, 72, 74, 74, 76, 76, 78, 78, 80, 80, 82, 82, 84, 84, 86, 86, 88, 88, 90, 90, 92, 92, 94, 94, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 14. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, }, { /* Fourth byte table 15. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, { /* Fourth byte table 16. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, }, { /* Fourth byte table 17. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, }, { /* Fourth byte table 18. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 6, 8, 10, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, }, { /* Fourth byte table 19. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 20. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 21. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 22. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 33, 33, 33, 33, 36, 36, 36, 36, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, }, { /* Fourth byte table 23. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, }, { /* Fourth byte table 24. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 30, 33, 36, 39, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 45, 48, 51, 54, 57, 60, 63, 66, 66, 66, 66, 66, 66, 66, 66, 66, 69, 72, 75, 78, 81, 84, 87, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, }, { /* Fourth byte table 25. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 30, 30, 30, 30, 30, 30, 30, 33, 36, 39, 42, 45, 48, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 26. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 24, 24, 24, 24, 24, 24, 24, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 54, 57, 60, 63, 66, 69, 72, 72, 72, 72, 72, 72, 72, 72, 72, 75, 78, 78, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, }, { /* Fourth byte table 27. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 12, 15, 15, 15, 15, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, }, { /* Fourth byte table 28. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, }, { /* Fourth byte table 29. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, }, { /* Fourth byte table 30. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, }, { /* Fourth byte table 31. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }, { /* Fourth byte table 32. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 93, 93, 96, 96, 96, 96, 98, 100, 100, 103, 103, 106, 106, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, }, { /* Fourth byte table 33. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 57, 57, 60, 60, 63, 63, 66, 66, 69, 69, 72, 72, 75, 75, 78, 78, 81, 81, 84, 84, 87, 87, 90, 90, 93, 93, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 34. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 6, 9, 9, 12, 12, 15, 15, 18, 18, 21, 21, 24, 24, 27, 27, 30, 30, 33, 33, 36, 36, 39, 39, 42, 42, 45, 45, 48, 48, 51, 51, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, }, { /* Fourth byte table 35. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, }, { /* Fourth byte table 36. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, }, { /* Fourth byte table 37. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, 84, 88, 92, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, }, { /* Fourth byte table 38. */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }, }, }; static const uchar_t u8_toupper_final_tbl[2][2318] = { { 0xCE, 0x9C, 0xC3, 0x80, 0xC3, 0x81, 0xC3, 0x82, 0xC3, 0x83, 0xC3, 0x84, 0xC3, 0x85, 0xC3, 0x86, 0xC3, 0x87, 0xC3, 0x88, 0xC3, 0x89, 0xC3, 0x8A, 0xC3, 0x8B, 0xC3, 0x8C, 0xC3, 0x8D, 0xC3, 0x8E, 0xC3, 0x8F, 0xC3, 0x90, 0xC3, 0x91, 0xC3, 0x92, 0xC3, 0x93, 0xC3, 0x94, 0xC3, 0x95, 0xC3, 0x96, 0xC3, 0x98, 0xC3, 0x99, 0xC3, 0x9A, 0xC3, 0x9B, 0xC3, 0x9C, 0xC3, 0x9D, 0xC3, 0x9E, 0xC5, 0xB8, 0xC4, 0x80, 0xC4, 0x82, 0xC4, 0x84, 0xC4, 0x86, 0xC4, 0x88, 0xC4, 0x8A, 0xC4, 0x8C, 0xC4, 0x8E, 0xC4, 0x90, 0xC4, 0x92, 0xC4, 0x94, 0xC4, 0x96, 0xC4, 0x98, 0xC4, 0x9A, 0xC4, 0x9C, 0xC4, 0x9E, 0xC4, 0xA0, 0xC4, 0xA2, 0xC4, 0xA4, 0xC4, 0xA6, 0xC4, 0xA8, 0xC4, 0xAA, 0xC4, 0xAC, 0xC4, 0xAE, 0x49, 0xC4, 0xB2, 0xC4, 0xB4, 0xC4, 0xB6, 0xC4, 0xB9, 0xC4, 0xBB, 0xC4, 0xBD, 0xC4, 0xBF, 0xC5, 0x81, 0xC5, 0x83, 0xC5, 0x85, 0xC5, 0x87, 0xC5, 0x8A, 0xC5, 0x8C, 0xC5, 0x8E, 0xC5, 0x90, 0xC5, 0x92, 0xC5, 0x94, 0xC5, 0x96, 0xC5, 0x98, 0xC5, 0x9A, 0xC5, 0x9C, 0xC5, 0x9E, 0xC5, 0xA0, 0xC5, 0xA2, 0xC5, 0xA4, 0xC5, 0xA6, 0xC5, 0xA8, 0xC5, 0xAA, 0xC5, 0xAC, 0xC5, 0xAE, 0xC5, 0xB0, 0xC5, 0xB2, 0xC5, 0xB4, 0xC5, 0xB6, 0xC5, 0xB9, 0xC5, 0xBB, 0xC5, 0xBD, 0x53, 0xC6, 0x82, 0xC6, 0x84, 0xC6, 0x87, 0xC6, 0x8B, 0xC6, 0x91, 0xC7, 0xB6, 0xC6, 0x98, 0xC8, 0xA0, 0xC6, 0xA0, 0xC6, 0xA2, 0xC6, 0xA4, 0xC6, 0xA7, 0xC6, 0xAC, 0xC6, 0xAF, 0xC6, 0xB3, 0xC6, 0xB5, 0xC6, 0xB8, 0xC6, 0xBC, 0xC7, 0xB7, 0xC7, 0x84, 0xC7, 0x84, 0xC7, 0x87, 0xC7, 0x87, 0xC7, 0x8A, 0xC7, 0x8A, 0xC7, 0x8D, 0xC7, 0x8F, 0xC7, 0x91, 0xC7, 0x93, 0xC7, 0x95, 0xC7, 0x97, 0xC7, 0x99, 0xC7, 0x9B, 0xC6, 0x8E, 0xC7, 0x9E, 0xC7, 0xA0, 0xC7, 0xA2, 0xC7, 0xA4, 0xC7, 0xA6, 0xC7, 0xA8, 0xC7, 0xAA, 0xC7, 0xAC, 0xC7, 0xAE, 0xC7, 0xB1, 0xC7, 0xB1, 0xC7, 0xB4, 0xC7, 0xB8, 0xC7, 0xBA, 0xC7, 0xBC, 0xC7, 0xBE, 0xC8, 0x80, 0xC8, 0x82, 0xC8, 0x84, 0xC8, 0x86, 0xC8, 0x88, 0xC8, 0x8A, 0xC8, 0x8C, 0xC8, 0x8E, 0xC8, 0x90, 0xC8, 0x92, 0xC8, 0x94, 0xC8, 0x96, 0xC8, 0x98, 0xC8, 0x9A, 0xC8, 0x9C, 0xC8, 0x9E, 0xC8, 0xA2, 0xC8, 0xA4, 0xC8, 0xA6, 0xC8, 0xA8, 0xC8, 0xAA, 0xC8, 0xAC, 0xC8, 0xAE, 0xC8, 0xB0, 0xC8, 0xB2, 0xC6, 0x81, 0xC6, 0x86, 0xC6, 0x89, 0xC6, 0x8A, 0xC6, 0x8F, 0xC6, 0x90, 0xC6, 0x93, 0xC6, 0x94, 0xC6, 0x97, 0xC6, 0x96, 0xC6, 0x9C, 0xC6, 0x9D, 0xC6, 0x9F, 0xC6, 0xA6, 0xC6, 0xA9, 0xC6, 0xAE, 0xC6, 0xB1, 0xC6, 0xB2, 0xC6, 0xB7, 0xCE, 0x99, 0xCE, 0x86, 0xCE, 0x88, 0xCE, 0x89, 0xCE, 0x8A, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0xA3, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xCE, 0xAA, 0xCE, 0xAB, 0xCE, 0x8C, 0xCE, 0x8E, 0xCE, 0x8F, 0xCE, 0x92, 0xCE, 0x98, 0xCE, 0xA6, 0xCE, 0xA0, 0xCF, 0x98, 0xCF, 0x9A, 0xCF, 0x9C, 0xCF, 0x9E, 0xCF, 0xA0, 0xCF, 0xA2, 0xCF, 0xA4, 0xCF, 0xA6, 0xCF, 0xA8, 0xCF, 0xAA, 0xCF, 0xAC, 0xCF, 0xAE, 0xCE, 0x9A, 0xCE, 0xA1, 0xCE, 0xA3, 0xCE, 0x95, 0xD0, 0x90, 0xD0, 0x91, 0xD0, 0x92, 0xD0, 0x93, 0xD0, 0x94, 0xD0, 0x95, 0xD0, 0x96, 0xD0, 0x97, 0xD0, 0x98, 0xD0, 0x99, 0xD0, 0x9A, 0xD0, 0x9B, 0xD0, 0x9C, 0xD0, 0x9D, 0xD0, 0x9E, 0xD0, 0x9F, 0xD0, 0xA0, 0xD0, 0xA1, 0xD0, 0xA2, 0xD0, 0xA3, 0xD0, 0xA4, 0xD0, 0xA5, 0xD0, 0xA6, 0xD0, 0xA7, 0xD0, 0xA8, 0xD0, 0xA9, 0xD0, 0xAA, 0xD0, 0xAB, 0xD0, 0xAC, 0xD0, 0xAD, 0xD0, 0xAE, 0xD0, 0xAF, 0xD0, 0x80, 0xD0, 0x81, 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0x84, 0xD0, 0x85, 0xD0, 0x86, 0xD0, 0x87, 0xD0, 0x88, 0xD0, 0x89, 0xD0, 0x8A, 0xD0, 0x8B, 0xD0, 0x8C, 0xD0, 0x8D, 0xD0, 0x8E, 0xD0, 0x8F, 0xD1, 0xA0, 0xD1, 0xA2, 0xD1, 0xA4, 0xD1, 0xA6, 0xD1, 0xA8, 0xD1, 0xAA, 0xD1, 0xAC, 0xD1, 0xAE, 0xD1, 0xB0, 0xD1, 0xB2, 0xD1, 0xB4, 0xD1, 0xB6, 0xD1, 0xB8, 0xD1, 0xBA, 0xD1, 0xBC, 0xD1, 0xBE, 0xD2, 0x80, 0xD2, 0x8A, 0xD2, 0x8C, 0xD2, 0x8E, 0xD2, 0x90, 0xD2, 0x92, 0xD2, 0x94, 0xD2, 0x96, 0xD2, 0x98, 0xD2, 0x9A, 0xD2, 0x9C, 0xD2, 0x9E, 0xD2, 0xA0, 0xD2, 0xA2, 0xD2, 0xA4, 0xD2, 0xA6, 0xD2, 0xA8, 0xD2, 0xAA, 0xD2, 0xAC, 0xD2, 0xAE, 0xD2, 0xB0, 0xD2, 0xB2, 0xD2, 0xB4, 0xD2, 0xB6, 0xD2, 0xB8, 0xD2, 0xBA, 0xD2, 0xBC, 0xD2, 0xBE, 0xD3, 0x81, 0xD3, 0x83, 0xD3, 0x85, 0xD3, 0x87, 0xD3, 0x89, 0xD3, 0x8B, 0xD3, 0x8D, 0xD3, 0x90, 0xD3, 0x92, 0xD3, 0x94, 0xD3, 0x96, 0xD3, 0x98, 0xD3, 0x9A, 0xD3, 0x9C, 0xD3, 0x9E, 0xD3, 0xA0, 0xD3, 0xA2, 0xD3, 0xA4, 0xD3, 0xA6, 0xD3, 0xA8, 0xD3, 0xAA, 0xD3, 0xAC, 0xD3, 0xAE, 0xD3, 0xB0, 0xD3, 0xB2, 0xD3, 0xB4, 0xD3, 0xB8, 0xD4, 0x80, 0xD4, 0x82, 0xD4, 0x84, 0xD4, 0x86, 0xD4, 0x88, 0xD4, 0x8A, 0xD4, 0x8C, 0xD4, 0x8E, 0xD4, 0xB1, 0xD4, 0xB2, 0xD4, 0xB3, 0xD4, 0xB4, 0xD4, 0xB5, 0xD4, 0xB6, 0xD4, 0xB7, 0xD4, 0xB8, 0xD4, 0xB9, 0xD4, 0xBA, 0xD4, 0xBB, 0xD4, 0xBC, 0xD4, 0xBD, 0xD4, 0xBE, 0xD4, 0xBF, 0xD5, 0x80, 0xD5, 0x81, 0xD5, 0x82, 0xD5, 0x83, 0xD5, 0x84, 0xD5, 0x85, 0xD5, 0x86, 0xD5, 0x87, 0xD5, 0x88, 0xD5, 0x89, 0xD5, 0x8A, 0xD5, 0x8B, 0xD5, 0x8C, 0xD5, 0x8D, 0xD5, 0x8E, 0xD5, 0x8F, 0xD5, 0x90, 0xD5, 0x91, 0xD5, 0x92, 0xD5, 0x93, 0xD5, 0x94, 0xD5, 0x95, 0xD5, 0x96, 0xE1, 0xB8, 0x80, 0xE1, 0xB8, 0x82, 0xE1, 0xB8, 0x84, 0xE1, 0xB8, 0x86, 0xE1, 0xB8, 0x88, 0xE1, 0xB8, 0x8A, 0xE1, 0xB8, 0x8C, 0xE1, 0xB8, 0x8E, 0xE1, 0xB8, 0x90, 0xE1, 0xB8, 0x92, 0xE1, 0xB8, 0x94, 0xE1, 0xB8, 0x96, 0xE1, 0xB8, 0x98, 0xE1, 0xB8, 0x9A, 0xE1, 0xB8, 0x9C, 0xE1, 0xB8, 0x9E, 0xE1, 0xB8, 0xA0, 0xE1, 0xB8, 0xA2, 0xE1, 0xB8, 0xA4, 0xE1, 0xB8, 0xA6, 0xE1, 0xB8, 0xA8, 0xE1, 0xB8, 0xAA, 0xE1, 0xB8, 0xAC, 0xE1, 0xB8, 0xAE, 0xE1, 0xB8, 0xB0, 0xE1, 0xB8, 0xB2, 0xE1, 0xB8, 0xB4, 0xE1, 0xB8, 0xB6, 0xE1, 0xB8, 0xB8, 0xE1, 0xB8, 0xBA, 0xE1, 0xB8, 0xBC, 0xE1, 0xB8, 0xBE, 0xE1, 0xB9, 0x80, 0xE1, 0xB9, 0x82, 0xE1, 0xB9, 0x84, 0xE1, 0xB9, 0x86, 0xE1, 0xB9, 0x88, 0xE1, 0xB9, 0x8A, 0xE1, 0xB9, 0x8C, 0xE1, 0xB9, 0x8E, 0xE1, 0xB9, 0x90, 0xE1, 0xB9, 0x92, 0xE1, 0xB9, 0x94, 0xE1, 0xB9, 0x96, 0xE1, 0xB9, 0x98, 0xE1, 0xB9, 0x9A, 0xE1, 0xB9, 0x9C, 0xE1, 0xB9, 0x9E, 0xE1, 0xB9, 0xA0, 0xE1, 0xB9, 0xA2, 0xE1, 0xB9, 0xA4, 0xE1, 0xB9, 0xA6, 0xE1, 0xB9, 0xA8, 0xE1, 0xB9, 0xAA, 0xE1, 0xB9, 0xAC, 0xE1, 0xB9, 0xAE, 0xE1, 0xB9, 0xB0, 0xE1, 0xB9, 0xB2, 0xE1, 0xB9, 0xB4, 0xE1, 0xB9, 0xB6, 0xE1, 0xB9, 0xB8, 0xE1, 0xB9, 0xBA, 0xE1, 0xB9, 0xBC, 0xE1, 0xB9, 0xBE, 0xE1, 0xBA, 0x80, 0xE1, 0xBA, 0x82, 0xE1, 0xBA, 0x84, 0xE1, 0xBA, 0x86, 0xE1, 0xBA, 0x88, 0xE1, 0xBA, 0x8A, 0xE1, 0xBA, 0x8C, 0xE1, 0xBA, 0x8E, 0xE1, 0xBA, 0x90, 0xE1, 0xBA, 0x92, 0xE1, 0xBA, 0x94, 0xE1, 0xB9, 0xA0, 0xE1, 0xBA, 0xA0, 0xE1, 0xBA, 0xA2, 0xE1, 0xBA, 0xA4, 0xE1, 0xBA, 0xA6, 0xE1, 0xBA, 0xA8, 0xE1, 0xBA, 0xAA, 0xE1, 0xBA, 0xAC, 0xE1, 0xBA, 0xAE, 0xE1, 0xBA, 0xB0, 0xE1, 0xBA, 0xB2, 0xE1, 0xBA, 0xB4, 0xE1, 0xBA, 0xB6, 0xE1, 0xBA, 0xB8, 0xE1, 0xBA, 0xBA, 0xE1, 0xBA, 0xBC, 0xE1, 0xBA, 0xBE, 0xE1, 0xBB, 0x80, 0xE1, 0xBB, 0x82, 0xE1, 0xBB, 0x84, 0xE1, 0xBB, 0x86, 0xE1, 0xBB, 0x88, 0xE1, 0xBB, 0x8A, 0xE1, 0xBB, 0x8C, 0xE1, 0xBB, 0x8E, 0xE1, 0xBB, 0x90, 0xE1, 0xBB, 0x92, 0xE1, 0xBB, 0x94, 0xE1, 0xBB, 0x96, 0xE1, 0xBB, 0x98, 0xE1, 0xBB, 0x9A, 0xE1, 0xBB, 0x9C, 0xE1, 0xBB, 0x9E, 0xE1, 0xBB, 0xA0, 0xE1, 0xBB, 0xA2, 0xE1, 0xBB, 0xA4, 0xE1, 0xBB, 0xA6, 0xE1, 0xBB, 0xA8, 0xE1, 0xBB, 0xAA, 0xE1, 0xBB, 0xAC, 0xE1, 0xBB, 0xAE, 0xE1, 0xBB, 0xB0, 0xE1, 0xBB, 0xB2, 0xE1, 0xBB, 0xB4, 0xE1, 0xBB, 0xB6, 0xE1, 0xBB, 0xB8, 0xE1, 0xBC, 0x88, 0xE1, 0xBC, 0x89, 0xE1, 0xBC, 0x8A, 0xE1, 0xBC, 0x8B, 0xE1, 0xBC, 0x8C, 0xE1, 0xBC, 0x8D, 0xE1, 0xBC, 0x8E, 0xE1, 0xBC, 0x8F, 0xE1, 0xBC, 0x98, 0xE1, 0xBC, 0x99, 0xE1, 0xBC, 0x9A, 0xE1, 0xBC, 0x9B, 0xE1, 0xBC, 0x9C, 0xE1, 0xBC, 0x9D, 0xE1, 0xBC, 0xA8, 0xE1, 0xBC, 0xA9, 0xE1, 0xBC, 0xAA, 0xE1, 0xBC, 0xAB, 0xE1, 0xBC, 0xAC, 0xE1, 0xBC, 0xAD, 0xE1, 0xBC, 0xAE, 0xE1, 0xBC, 0xAF, 0xE1, 0xBC, 0xB8, 0xE1, 0xBC, 0xB9, 0xE1, 0xBC, 0xBA, 0xE1, 0xBC, 0xBB, 0xE1, 0xBC, 0xBC, 0xE1, 0xBC, 0xBD, 0xE1, 0xBC, 0xBE, 0xE1, 0xBC, 0xBF, 0xE1, 0xBD, 0x88, 0xE1, 0xBD, 0x89, 0xE1, 0xBD, 0x8A, 0xE1, 0xBD, 0x8B, 0xE1, 0xBD, 0x8C, 0xE1, 0xBD, 0x8D, 0xE1, 0xBD, 0x99, 0xE1, 0xBD, 0x9B, 0xE1, 0xBD, 0x9D, 0xE1, 0xBD, 0x9F, 0xE1, 0xBD, 0xA8, 0xE1, 0xBD, 0xA9, 0xE1, 0xBD, 0xAA, 0xE1, 0xBD, 0xAB, 0xE1, 0xBD, 0xAC, 0xE1, 0xBD, 0xAD, 0xE1, 0xBD, 0xAE, 0xE1, 0xBD, 0xAF, 0xE1, 0xBE, 0xBA, 0xE1, 0xBE, 0xBB, 0xE1, 0xBF, 0x88, 0xE1, 0xBF, 0x89, 0xE1, 0xBF, 0x8A, 0xE1, 0xBF, 0x8B, 0xE1, 0xBF, 0x9A, 0xE1, 0xBF, 0x9B, 0xE1, 0xBF, 0xB8, 0xE1, 0xBF, 0xB9, 0xE1, 0xBF, 0xAA, 0xE1, 0xBF, 0xAB, 0xE1, 0xBF, 0xBA, 0xE1, 0xBF, 0xBB, 0xE1, 0xBE, 0x88, 0xE1, 0xBE, 0x89, 0xE1, 0xBE, 0x8A, 0xE1, 0xBE, 0x8B, 0xE1, 0xBE, 0x8C, 0xE1, 0xBE, 0x8D, 0xE1, 0xBE, 0x8E, 0xE1, 0xBE, 0x8F, 0xE1, 0xBE, 0x98, 0xE1, 0xBE, 0x99, 0xE1, 0xBE, 0x9A, 0xE1, 0xBE, 0x9B, 0xE1, 0xBE, 0x9C, 0xE1, 0xBE, 0x9D, 0xE1, 0xBE, 0x9E, 0xE1, 0xBE, 0x9F, 0xE1, 0xBE, 0xA8, 0xE1, 0xBE, 0xA9, 0xE1, 0xBE, 0xAA, 0xE1, 0xBE, 0xAB, 0xE1, 0xBE, 0xAC, 0xE1, 0xBE, 0xAD, 0xE1, 0xBE, 0xAE, 0xE1, 0xBE, 0xAF, 0xE1, 0xBE, 0xB8, 0xE1, 0xBE, 0xB9, 0xE1, 0xBE, 0xBC, 0xCE, 0x99, 0xE1, 0xBF, 0x8C, 0xE1, 0xBF, 0x98, 0xE1, 0xBF, 0x99, 0xE1, 0xBF, 0xA8, 0xE1, 0xBF, 0xA9, 0xE1, 0xBF, 0xAC, 0xE1, 0xBF, 0xBC, 0xE2, 0x85, 0xA0, 0xE2, 0x85, 0xA1, 0xE2, 0x85, 0xA2, 0xE2, 0x85, 0xA3, 0xE2, 0x85, 0xA4, 0xE2, 0x85, 0xA5, 0xE2, 0x85, 0xA6, 0xE2, 0x85, 0xA7, 0xE2, 0x85, 0xA8, 0xE2, 0x85, 0xA9, 0xE2, 0x85, 0xAA, 0xE2, 0x85, 0xAB, 0xE2, 0x85, 0xAC, 0xE2, 0x85, 0xAD, 0xE2, 0x85, 0xAE, 0xE2, 0x85, 0xAF, 0xE2, 0x92, 0xB6, 0xE2, 0x92, 0xB7, 0xE2, 0x92, 0xB8, 0xE2, 0x92, 0xB9, 0xE2, 0x92, 0xBA, 0xE2, 0x92, 0xBB, 0xE2, 0x92, 0xBC, 0xE2, 0x92, 0xBD, 0xE2, 0x92, 0xBE, 0xE2, 0x92, 0xBF, 0xE2, 0x93, 0x80, 0xE2, 0x93, 0x81, 0xE2, 0x93, 0x82, 0xE2, 0x93, 0x83, 0xE2, 0x93, 0x84, 0xE2, 0x93, 0x85, 0xE2, 0x93, 0x86, 0xE2, 0x93, 0x87, 0xE2, 0x93, 0x88, 0xE2, 0x93, 0x89, 0xE2, 0x93, 0x8A, 0xE2, 0x93, 0x8B, 0xE2, 0x93, 0x8C, 0xE2, 0x93, 0x8D, 0xE2, 0x93, 0x8E, 0xE2, 0x93, 0x8F, 0xEF, 0xBC, 0xA1, 0xEF, 0xBC, 0xA2, 0xEF, 0xBC, 0xA3, 0xEF, 0xBC, 0xA4, 0xEF, 0xBC, 0xA5, 0xEF, 0xBC, 0xA6, 0xEF, 0xBC, 0xA7, 0xEF, 0xBC, 0xA8, 0xEF, 0xBC, 0xA9, 0xEF, 0xBC, 0xAA, 0xEF, 0xBC, 0xAB, 0xEF, 0xBC, 0xAC, 0xEF, 0xBC, 0xAD, 0xEF, 0xBC, 0xAE, 0xEF, 0xBC, 0xAF, 0xEF, 0xBC, 0xB0, 0xEF, 0xBC, 0xB1, 0xEF, 0xBC, 0xB2, 0xEF, 0xBC, 0xB3, 0xEF, 0xBC, 0xB4, 0xEF, 0xBC, 0xB5, 0xEF, 0xBC, 0xB6, 0xEF, 0xBC, 0xB7, 0xEF, 0xBC, 0xB8, 0xEF, 0xBC, 0xB9, 0xEF, 0xBC, 0xBA, 0xF0, 0x90, 0x90, 0x80, 0xF0, 0x90, 0x90, 0x81, 0xF0, 0x90, 0x90, 0x82, 0xF0, 0x90, 0x90, 0x83, 0xF0, 0x90, 0x90, 0x84, 0xF0, 0x90, 0x90, 0x85, 0xF0, 0x90, 0x90, 0x86, 0xF0, 0x90, 0x90, 0x87, 0xF0, 0x90, 0x90, 0x88, 0xF0, 0x90, 0x90, 0x89, 0xF0, 0x90, 0x90, 0x8A, 0xF0, 0x90, 0x90, 0x8B, 0xF0, 0x90, 0x90, 0x8C, 0xF0, 0x90, 0x90, 0x8D, 0xF0, 0x90, 0x90, 0x8E, 0xF0, 0x90, 0x90, 0x8F, 0xF0, 0x90, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x91, 0xF0, 0x90, 0x90, 0x92, 0xF0, 0x90, 0x90, 0x93, 0xF0, 0x90, 0x90, 0x94, 0xF0, 0x90, 0x90, 0x95, 0xF0, 0x90, 0x90, 0x96, 0xF0, 0x90, 0x90, 0x97, 0xF0, 0x90, 0x90, 0x98, 0xF0, 0x90, 0x90, 0x99, 0xF0, 0x90, 0x90, 0x9A, 0xF0, 0x90, 0x90, 0x9B, 0xF0, 0x90, 0x90, 0x9C, 0xF0, 0x90, 0x90, 0x9D, 0xF0, 0x90, 0x90, 0x9E, 0xF0, 0x90, 0x90, 0x9F, 0xF0, 0x90, 0x90, 0xA0, 0xF0, 0x90, 0x90, 0xA1, 0xF0, 0x90, 0x90, 0xA2, 0xF0, 0x90, 0x90, 0xA3, 0xF0, 0x90, 0x90, 0xA4, 0xF0, 0x90, 0x90, 0xA5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, { 0xCE, 0x9C, 0xC3, 0x80, 0xC3, 0x81, 0xC3, 0x82, 0xC3, 0x83, 0xC3, 0x84, 0xC3, 0x85, 0xC3, 0x86, 0xC3, 0x87, 0xC3, 0x88, 0xC3, 0x89, 0xC3, 0x8A, 0xC3, 0x8B, 0xC3, 0x8C, 0xC3, 0x8D, 0xC3, 0x8E, 0xC3, 0x8F, 0xC3, 0x90, 0xC3, 0x91, 0xC3, 0x92, 0xC3, 0x93, 0xC3, 0x94, 0xC3, 0x95, 0xC3, 0x96, 0xC3, 0x98, 0xC3, 0x99, 0xC3, 0x9A, 0xC3, 0x9B, 0xC3, 0x9C, 0xC3, 0x9D, 0xC3, 0x9E, 0xC5, 0xB8, 0xC4, 0x80, 0xC4, 0x82, 0xC4, 0x84, 0xC4, 0x86, 0xC4, 0x88, 0xC4, 0x8A, 0xC4, 0x8C, 0xC4, 0x8E, 0xC4, 0x90, 0xC4, 0x92, 0xC4, 0x94, 0xC4, 0x96, 0xC4, 0x98, 0xC4, 0x9A, 0xC4, 0x9C, 0xC4, 0x9E, 0xC4, 0xA0, 0xC4, 0xA2, 0xC4, 0xA4, 0xC4, 0xA6, 0xC4, 0xA8, 0xC4, 0xAA, 0xC4, 0xAC, 0xC4, 0xAE, 0x49, 0xC4, 0xB2, 0xC4, 0xB4, 0xC4, 0xB6, 0xC4, 0xB9, 0xC4, 0xBB, 0xC4, 0xBD, 0xC4, 0xBF, 0xC5, 0x81, 0xC5, 0x83, 0xC5, 0x85, 0xC5, 0x87, 0xC5, 0x8A, 0xC5, 0x8C, 0xC5, 0x8E, 0xC5, 0x90, 0xC5, 0x92, 0xC5, 0x94, 0xC5, 0x96, 0xC5, 0x98, 0xC5, 0x9A, 0xC5, 0x9C, 0xC5, 0x9E, 0xC5, 0xA0, 0xC5, 0xA2, 0xC5, 0xA4, 0xC5, 0xA6, 0xC5, 0xA8, 0xC5, 0xAA, 0xC5, 0xAC, 0xC5, 0xAE, 0xC5, 0xB0, 0xC5, 0xB2, 0xC5, 0xB4, 0xC5, 0xB6, 0xC5, 0xB9, 0xC5, 0xBB, 0xC5, 0xBD, 0x53, 0xC9, 0x83, 0xC6, 0x82, 0xC6, 0x84, 0xC6, 0x87, 0xC6, 0x8B, 0xC6, 0x91, 0xC7, 0xB6, 0xC6, 0x98, 0xC8, 0xBD, 0xC8, 0xA0, 0xC6, 0xA0, 0xC6, 0xA2, 0xC6, 0xA4, 0xC6, 0xA7, 0xC6, 0xAC, 0xC6, 0xAF, 0xC6, 0xB3, 0xC6, 0xB5, 0xC6, 0xB8, 0xC6, 0xBC, 0xC7, 0xB7, 0xC7, 0x84, 0xC7, 0x84, 0xC7, 0x87, 0xC7, 0x87, 0xC7, 0x8A, 0xC7, 0x8A, 0xC7, 0x8D, 0xC7, 0x8F, 0xC7, 0x91, 0xC7, 0x93, 0xC7, 0x95, 0xC7, 0x97, 0xC7, 0x99, 0xC7, 0x9B, 0xC6, 0x8E, 0xC7, 0x9E, 0xC7, 0xA0, 0xC7, 0xA2, 0xC7, 0xA4, 0xC7, 0xA6, 0xC7, 0xA8, 0xC7, 0xAA, 0xC7, 0xAC, 0xC7, 0xAE, 0xC7, 0xB1, 0xC7, 0xB1, 0xC7, 0xB4, 0xC7, 0xB8, 0xC7, 0xBA, 0xC7, 0xBC, 0xC7, 0xBE, 0xC8, 0x80, 0xC8, 0x82, 0xC8, 0x84, 0xC8, 0x86, 0xC8, 0x88, 0xC8, 0x8A, 0xC8, 0x8C, 0xC8, 0x8E, 0xC8, 0x90, 0xC8, 0x92, 0xC8, 0x94, 0xC8, 0x96, 0xC8, 0x98, 0xC8, 0x9A, 0xC8, 0x9C, 0xC8, 0x9E, 0xC8, 0xA2, 0xC8, 0xA4, 0xC8, 0xA6, 0xC8, 0xA8, 0xC8, 0xAA, 0xC8, 0xAC, 0xC8, 0xAE, 0xC8, 0xB0, 0xC8, 0xB2, 0xC8, 0xBB, 0xC9, 0x81, 0xC9, 0x86, 0xC9, 0x88, 0xC9, 0x8A, 0xC9, 0x8C, 0xC9, 0x8E, 0xC6, 0x81, 0xC6, 0x86, 0xC6, 0x89, 0xC6, 0x8A, 0xC6, 0x8F, 0xC6, 0x90, 0xC6, 0x93, 0xC6, 0x94, 0xC6, 0x97, 0xC6, 0x96, 0xE2, 0xB1, 0xA2, 0xC6, 0x9C, 0xC6, 0x9D, 0xC6, 0x9F, 0xE2, 0xB1, 0xA4, 0xC6, 0xA6, 0xC6, 0xA9, 0xC6, 0xAE, 0xC9, 0x84, 0xC6, 0xB1, 0xC6, 0xB2, 0xC9, 0x85, 0xC6, 0xB7, 0xCE, 0x99, 0xCF, 0xBD, 0xCF, 0xBE, 0xCF, 0xBF, 0xCE, 0x86, 0xCE, 0x88, 0xCE, 0x89, 0xCE, 0x8A, 0xCE, 0x91, 0xCE, 0x92, 0xCE, 0x93, 0xCE, 0x94, 0xCE, 0x95, 0xCE, 0x96, 0xCE, 0x97, 0xCE, 0x98, 0xCE, 0x99, 0xCE, 0x9A, 0xCE, 0x9B, 0xCE, 0x9C, 0xCE, 0x9D, 0xCE, 0x9E, 0xCE, 0x9F, 0xCE, 0xA0, 0xCE, 0xA1, 0xCE, 0xA3, 0xCE, 0xA3, 0xCE, 0xA4, 0xCE, 0xA5, 0xCE, 0xA6, 0xCE, 0xA7, 0xCE, 0xA8, 0xCE, 0xA9, 0xCE, 0xAA, 0xCE, 0xAB, 0xCE, 0x8C, 0xCE, 0x8E, 0xCE, 0x8F, 0xCE, 0x92, 0xCE, 0x98, 0xCE, 0xA6, 0xCE, 0xA0, 0xCF, 0x98, 0xCF, 0x9A, 0xCF, 0x9C, 0xCF, 0x9E, 0xCF, 0xA0, 0xCF, 0xA2, 0xCF, 0xA4, 0xCF, 0xA6, 0xCF, 0xA8, 0xCF, 0xAA, 0xCF, 0xAC, 0xCF, 0xAE, 0xCE, 0x9A, 0xCE, 0xA1, 0xCF, 0xB9, 0xCE, 0x95, 0xCF, 0xB7, 0xCF, 0xBA, 0xD0, 0x90, 0xD0, 0x91, 0xD0, 0x92, 0xD0, 0x93, 0xD0, 0x94, 0xD0, 0x95, 0xD0, 0x96, 0xD0, 0x97, 0xD0, 0x98, 0xD0, 0x99, 0xD0, 0x9A, 0xD0, 0x9B, 0xD0, 0x9C, 0xD0, 0x9D, 0xD0, 0x9E, 0xD0, 0x9F, 0xD0, 0xA0, 0xD0, 0xA1, 0xD0, 0xA2, 0xD0, 0xA3, 0xD0, 0xA4, 0xD0, 0xA5, 0xD0, 0xA6, 0xD0, 0xA7, 0xD0, 0xA8, 0xD0, 0xA9, 0xD0, 0xAA, 0xD0, 0xAB, 0xD0, 0xAC, 0xD0, 0xAD, 0xD0, 0xAE, 0xD0, 0xAF, 0xD0, 0x80, 0xD0, 0x81, 0xD0, 0x82, 0xD0, 0x83, 0xD0, 0x84, 0xD0, 0x85, 0xD0, 0x86, 0xD0, 0x87, 0xD0, 0x88, 0xD0, 0x89, 0xD0, 0x8A, 0xD0, 0x8B, 0xD0, 0x8C, 0xD0, 0x8D, 0xD0, 0x8E, 0xD0, 0x8F, 0xD1, 0xA0, 0xD1, 0xA2, 0xD1, 0xA4, 0xD1, 0xA6, 0xD1, 0xA8, 0xD1, 0xAA, 0xD1, 0xAC, 0xD1, 0xAE, 0xD1, 0xB0, 0xD1, 0xB2, 0xD1, 0xB4, 0xD1, 0xB6, 0xD1, 0xB8, 0xD1, 0xBA, 0xD1, 0xBC, 0xD1, 0xBE, 0xD2, 0x80, 0xD2, 0x8A, 0xD2, 0x8C, 0xD2, 0x8E, 0xD2, 0x90, 0xD2, 0x92, 0xD2, 0x94, 0xD2, 0x96, 0xD2, 0x98, 0xD2, 0x9A, 0xD2, 0x9C, 0xD2, 0x9E, 0xD2, 0xA0, 0xD2, 0xA2, 0xD2, 0xA4, 0xD2, 0xA6, 0xD2, 0xA8, 0xD2, 0xAA, 0xD2, 0xAC, 0xD2, 0xAE, 0xD2, 0xB0, 0xD2, 0xB2, 0xD2, 0xB4, 0xD2, 0xB6, 0xD2, 0xB8, 0xD2, 0xBA, 0xD2, 0xBC, 0xD2, 0xBE, 0xD3, 0x81, 0xD3, 0x83, 0xD3, 0x85, 0xD3, 0x87, 0xD3, 0x89, 0xD3, 0x8B, 0xD3, 0x8D, 0xD3, 0x80, 0xD3, 0x90, 0xD3, 0x92, 0xD3, 0x94, 0xD3, 0x96, 0xD3, 0x98, 0xD3, 0x9A, 0xD3, 0x9C, 0xD3, 0x9E, 0xD3, 0xA0, 0xD3, 0xA2, 0xD3, 0xA4, 0xD3, 0xA6, 0xD3, 0xA8, 0xD3, 0xAA, 0xD3, 0xAC, 0xD3, 0xAE, 0xD3, 0xB0, 0xD3, 0xB2, 0xD3, 0xB4, 0xD3, 0xB6, 0xD3, 0xB8, 0xD3, 0xBA, 0xD3, 0xBC, 0xD3, 0xBE, 0xD4, 0x80, 0xD4, 0x82, 0xD4, 0x84, 0xD4, 0x86, 0xD4, 0x88, 0xD4, 0x8A, 0xD4, 0x8C, 0xD4, 0x8E, 0xD4, 0x90, 0xD4, 0x92, 0xD4, 0xB1, 0xD4, 0xB2, 0xD4, 0xB3, 0xD4, 0xB4, 0xD4, 0xB5, 0xD4, 0xB6, 0xD4, 0xB7, 0xD4, 0xB8, 0xD4, 0xB9, 0xD4, 0xBA, 0xD4, 0xBB, 0xD4, 0xBC, 0xD4, 0xBD, 0xD4, 0xBE, 0xD4, 0xBF, 0xD5, 0x80, 0xD5, 0x81, 0xD5, 0x82, 0xD5, 0x83, 0xD5, 0x84, 0xD5, 0x85, 0xD5, 0x86, 0xD5, 0x87, 0xD5, 0x88, 0xD5, 0x89, 0xD5, 0x8A, 0xD5, 0x8B, 0xD5, 0x8C, 0xD5, 0x8D, 0xD5, 0x8E, 0xD5, 0x8F, 0xD5, 0x90, 0xD5, 0x91, 0xD5, 0x92, 0xD5, 0x93, 0xD5, 0x94, 0xD5, 0x95, 0xD5, 0x96, 0xE2, 0xB1, 0xA3, 0xE1, 0xB8, 0x80, 0xE1, 0xB8, 0x82, 0xE1, 0xB8, 0x84, 0xE1, 0xB8, 0x86, 0xE1, 0xB8, 0x88, 0xE1, 0xB8, 0x8A, 0xE1, 0xB8, 0x8C, 0xE1, 0xB8, 0x8E, 0xE1, 0xB8, 0x90, 0xE1, 0xB8, 0x92, 0xE1, 0xB8, 0x94, 0xE1, 0xB8, 0x96, 0xE1, 0xB8, 0x98, 0xE1, 0xB8, 0x9A, 0xE1, 0xB8, 0x9C, 0xE1, 0xB8, 0x9E, 0xE1, 0xB8, 0xA0, 0xE1, 0xB8, 0xA2, 0xE1, 0xB8, 0xA4, 0xE1, 0xB8, 0xA6, 0xE1, 0xB8, 0xA8, 0xE1, 0xB8, 0xAA, 0xE1, 0xB8, 0xAC, 0xE1, 0xB8, 0xAE, 0xE1, 0xB8, 0xB0, 0xE1, 0xB8, 0xB2, 0xE1, 0xB8, 0xB4, 0xE1, 0xB8, 0xB6, 0xE1, 0xB8, 0xB8, 0xE1, 0xB8, 0xBA, 0xE1, 0xB8, 0xBC, 0xE1, 0xB8, 0xBE, 0xE1, 0xB9, 0x80, 0xE1, 0xB9, 0x82, 0xE1, 0xB9, 0x84, 0xE1, 0xB9, 0x86, 0xE1, 0xB9, 0x88, 0xE1, 0xB9, 0x8A, 0xE1, 0xB9, 0x8C, 0xE1, 0xB9, 0x8E, 0xE1, 0xB9, 0x90, 0xE1, 0xB9, 0x92, 0xE1, 0xB9, 0x94, 0xE1, 0xB9, 0x96, 0xE1, 0xB9, 0x98, 0xE1, 0xB9, 0x9A, 0xE1, 0xB9, 0x9C, 0xE1, 0xB9, 0x9E, 0xE1, 0xB9, 0xA0, 0xE1, 0xB9, 0xA2, 0xE1, 0xB9, 0xA4, 0xE1, 0xB9, 0xA6, 0xE1, 0xB9, 0xA8, 0xE1, 0xB9, 0xAA, 0xE1, 0xB9, 0xAC, 0xE1, 0xB9, 0xAE, 0xE1, 0xB9, 0xB0, 0xE1, 0xB9, 0xB2, 0xE1, 0xB9, 0xB4, 0xE1, 0xB9, 0xB6, 0xE1, 0xB9, 0xB8, 0xE1, 0xB9, 0xBA, 0xE1, 0xB9, 0xBC, 0xE1, 0xB9, 0xBE, 0xE1, 0xBA, 0x80, 0xE1, 0xBA, 0x82, 0xE1, 0xBA, 0x84, 0xE1, 0xBA, 0x86, 0xE1, 0xBA, 0x88, 0xE1, 0xBA, 0x8A, 0xE1, 0xBA, 0x8C, 0xE1, 0xBA, 0x8E, 0xE1, 0xBA, 0x90, 0xE1, 0xBA, 0x92, 0xE1, 0xBA, 0x94, 0xE1, 0xB9, 0xA0, 0xE1, 0xBA, 0xA0, 0xE1, 0xBA, 0xA2, 0xE1, 0xBA, 0xA4, 0xE1, 0xBA, 0xA6, 0xE1, 0xBA, 0xA8, 0xE1, 0xBA, 0xAA, 0xE1, 0xBA, 0xAC, 0xE1, 0xBA, 0xAE, 0xE1, 0xBA, 0xB0, 0xE1, 0xBA, 0xB2, 0xE1, 0xBA, 0xB4, 0xE1, 0xBA, 0xB6, 0xE1, 0xBA, 0xB8, 0xE1, 0xBA, 0xBA, 0xE1, 0xBA, 0xBC, 0xE1, 0xBA, 0xBE, 0xE1, 0xBB, 0x80, 0xE1, 0xBB, 0x82, 0xE1, 0xBB, 0x84, 0xE1, 0xBB, 0x86, 0xE1, 0xBB, 0x88, 0xE1, 0xBB, 0x8A, 0xE1, 0xBB, 0x8C, 0xE1, 0xBB, 0x8E, 0xE1, 0xBB, 0x90, 0xE1, 0xBB, 0x92, 0xE1, 0xBB, 0x94, 0xE1, 0xBB, 0x96, 0xE1, 0xBB, 0x98, 0xE1, 0xBB, 0x9A, 0xE1, 0xBB, 0x9C, 0xE1, 0xBB, 0x9E, 0xE1, 0xBB, 0xA0, 0xE1, 0xBB, 0xA2, 0xE1, 0xBB, 0xA4, 0xE1, 0xBB, 0xA6, 0xE1, 0xBB, 0xA8, 0xE1, 0xBB, 0xAA, 0xE1, 0xBB, 0xAC, 0xE1, 0xBB, 0xAE, 0xE1, 0xBB, 0xB0, 0xE1, 0xBB, 0xB2, 0xE1, 0xBB, 0xB4, 0xE1, 0xBB, 0xB6, 0xE1, 0xBB, 0xB8, 0xE1, 0xBC, 0x88, 0xE1, 0xBC, 0x89, 0xE1, 0xBC, 0x8A, 0xE1, 0xBC, 0x8B, 0xE1, 0xBC, 0x8C, 0xE1, 0xBC, 0x8D, 0xE1, 0xBC, 0x8E, 0xE1, 0xBC, 0x8F, 0xE1, 0xBC, 0x98, 0xE1, 0xBC, 0x99, 0xE1, 0xBC, 0x9A, 0xE1, 0xBC, 0x9B, 0xE1, 0xBC, 0x9C, 0xE1, 0xBC, 0x9D, 0xE1, 0xBC, 0xA8, 0xE1, 0xBC, 0xA9, 0xE1, 0xBC, 0xAA, 0xE1, 0xBC, 0xAB, 0xE1, 0xBC, 0xAC, 0xE1, 0xBC, 0xAD, 0xE1, 0xBC, 0xAE, 0xE1, 0xBC, 0xAF, 0xE1, 0xBC, 0xB8, 0xE1, 0xBC, 0xB9, 0xE1, 0xBC, 0xBA, 0xE1, 0xBC, 0xBB, 0xE1, 0xBC, 0xBC, 0xE1, 0xBC, 0xBD, 0xE1, 0xBC, 0xBE, 0xE1, 0xBC, 0xBF, 0xE1, 0xBD, 0x88, 0xE1, 0xBD, 0x89, 0xE1, 0xBD, 0x8A, 0xE1, 0xBD, 0x8B, 0xE1, 0xBD, 0x8C, 0xE1, 0xBD, 0x8D, 0xE1, 0xBD, 0x99, 0xE1, 0xBD, 0x9B, 0xE1, 0xBD, 0x9D, 0xE1, 0xBD, 0x9F, 0xE1, 0xBD, 0xA8, 0xE1, 0xBD, 0xA9, 0xE1, 0xBD, 0xAA, 0xE1, 0xBD, 0xAB, 0xE1, 0xBD, 0xAC, 0xE1, 0xBD, 0xAD, 0xE1, 0xBD, 0xAE, 0xE1, 0xBD, 0xAF, 0xE1, 0xBE, 0xBA, 0xE1, 0xBE, 0xBB, 0xE1, 0xBF, 0x88, 0xE1, 0xBF, 0x89, 0xE1, 0xBF, 0x8A, 0xE1, 0xBF, 0x8B, 0xE1, 0xBF, 0x9A, 0xE1, 0xBF, 0x9B, 0xE1, 0xBF, 0xB8, 0xE1, 0xBF, 0xB9, 0xE1, 0xBF, 0xAA, 0xE1, 0xBF, 0xAB, 0xE1, 0xBF, 0xBA, 0xE1, 0xBF, 0xBB, 0xE1, 0xBE, 0x88, 0xE1, 0xBE, 0x89, 0xE1, 0xBE, 0x8A, 0xE1, 0xBE, 0x8B, 0xE1, 0xBE, 0x8C, 0xE1, 0xBE, 0x8D, 0xE1, 0xBE, 0x8E, 0xE1, 0xBE, 0x8F, 0xE1, 0xBE, 0x98, 0xE1, 0xBE, 0x99, 0xE1, 0xBE, 0x9A, 0xE1, 0xBE, 0x9B, 0xE1, 0xBE, 0x9C, 0xE1, 0xBE, 0x9D, 0xE1, 0xBE, 0x9E, 0xE1, 0xBE, 0x9F, 0xE1, 0xBE, 0xA8, 0xE1, 0xBE, 0xA9, 0xE1, 0xBE, 0xAA, 0xE1, 0xBE, 0xAB, 0xE1, 0xBE, 0xAC, 0xE1, 0xBE, 0xAD, 0xE1, 0xBE, 0xAE, 0xE1, 0xBE, 0xAF, 0xE1, 0xBE, 0xB8, 0xE1, 0xBE, 0xB9, 0xE1, 0xBE, 0xBC, 0xCE, 0x99, 0xE1, 0xBF, 0x8C, 0xE1, 0xBF, 0x98, 0xE1, 0xBF, 0x99, 0xE1, 0xBF, 0xA8, 0xE1, 0xBF, 0xA9, 0xE1, 0xBF, 0xAC, 0xE1, 0xBF, 0xBC, 0xE2, 0x84, 0xB2, 0xE2, 0x85, 0xA0, 0xE2, 0x85, 0xA1, 0xE2, 0x85, 0xA2, 0xE2, 0x85, 0xA3, 0xE2, 0x85, 0xA4, 0xE2, 0x85, 0xA5, 0xE2, 0x85, 0xA6, 0xE2, 0x85, 0xA7, 0xE2, 0x85, 0xA8, 0xE2, 0x85, 0xA9, 0xE2, 0x85, 0xAA, 0xE2, 0x85, 0xAB, 0xE2, 0x85, 0xAC, 0xE2, 0x85, 0xAD, 0xE2, 0x85, 0xAE, 0xE2, 0x85, 0xAF, 0xE2, 0x86, 0x83, 0xE2, 0x92, 0xB6, 0xE2, 0x92, 0xB7, 0xE2, 0x92, 0xB8, 0xE2, 0x92, 0xB9, 0xE2, 0x92, 0xBA, 0xE2, 0x92, 0xBB, 0xE2, 0x92, 0xBC, 0xE2, 0x92, 0xBD, 0xE2, 0x92, 0xBE, 0xE2, 0x92, 0xBF, 0xE2, 0x93, 0x80, 0xE2, 0x93, 0x81, 0xE2, 0x93, 0x82, 0xE2, 0x93, 0x83, 0xE2, 0x93, 0x84, 0xE2, 0x93, 0x85, 0xE2, 0x93, 0x86, 0xE2, 0x93, 0x87, 0xE2, 0x93, 0x88, 0xE2, 0x93, 0x89, 0xE2, 0x93, 0x8A, 0xE2, 0x93, 0x8B, 0xE2, 0x93, 0x8C, 0xE2, 0x93, 0x8D, 0xE2, 0x93, 0x8E, 0xE2, 0x93, 0x8F, 0xE2, 0xB0, 0x80, 0xE2, 0xB0, 0x81, 0xE2, 0xB0, 0x82, 0xE2, 0xB0, 0x83, 0xE2, 0xB0, 0x84, 0xE2, 0xB0, 0x85, 0xE2, 0xB0, 0x86, 0xE2, 0xB0, 0x87, 0xE2, 0xB0, 0x88, 0xE2, 0xB0, 0x89, 0xE2, 0xB0, 0x8A, 0xE2, 0xB0, 0x8B, 0xE2, 0xB0, 0x8C, 0xE2, 0xB0, 0x8D, 0xE2, 0xB0, 0x8E, 0xE2, 0xB0, 0x8F, 0xE2, 0xB0, 0x90, 0xE2, 0xB0, 0x91, 0xE2, 0xB0, 0x92, 0xE2, 0xB0, 0x93, 0xE2, 0xB0, 0x94, 0xE2, 0xB0, 0x95, 0xE2, 0xB0, 0x96, 0xE2, 0xB0, 0x97, 0xE2, 0xB0, 0x98, 0xE2, 0xB0, 0x99, 0xE2, 0xB0, 0x9A, 0xE2, 0xB0, 0x9B, 0xE2, 0xB0, 0x9C, 0xE2, 0xB0, 0x9D, 0xE2, 0xB0, 0x9E, 0xE2, 0xB0, 0x9F, 0xE2, 0xB0, 0xA0, 0xE2, 0xB0, 0xA1, 0xE2, 0xB0, 0xA2, 0xE2, 0xB0, 0xA3, 0xE2, 0xB0, 0xA4, 0xE2, 0xB0, 0xA5, 0xE2, 0xB0, 0xA6, 0xE2, 0xB0, 0xA7, 0xE2, 0xB0, 0xA8, 0xE2, 0xB0, 0xA9, 0xE2, 0xB0, 0xAA, 0xE2, 0xB0, 0xAB, 0xE2, 0xB0, 0xAC, 0xE2, 0xB0, 0xAD, 0xE2, 0xB0, 0xAE, 0xE2, 0xB1, 0xA0, 0xC8, 0xBA, 0xC8, 0xBE, 0xE2, 0xB1, 0xA7, 0xE2, 0xB1, 0xA9, 0xE2, 0xB1, 0xAB, 0xE2, 0xB1, 0xB5, 0xE2, 0xB2, 0x80, 0xE2, 0xB2, 0x82, 0xE2, 0xB2, 0x84, 0xE2, 0xB2, 0x86, 0xE2, 0xB2, 0x88, 0xE2, 0xB2, 0x8A, 0xE2, 0xB2, 0x8C, 0xE2, 0xB2, 0x8E, 0xE2, 0xB2, 0x90, 0xE2, 0xB2, 0x92, 0xE2, 0xB2, 0x94, 0xE2, 0xB2, 0x96, 0xE2, 0xB2, 0x98, 0xE2, 0xB2, 0x9A, 0xE2, 0xB2, 0x9C, 0xE2, 0xB2, 0x9E, 0xE2, 0xB2, 0xA0, 0xE2, 0xB2, 0xA2, 0xE2, 0xB2, 0xA4, 0xE2, 0xB2, 0xA6, 0xE2, 0xB2, 0xA8, 0xE2, 0xB2, 0xAA, 0xE2, 0xB2, 0xAC, 0xE2, 0xB2, 0xAE, 0xE2, 0xB2, 0xB0, 0xE2, 0xB2, 0xB2, 0xE2, 0xB2, 0xB4, 0xE2, 0xB2, 0xB6, 0xE2, 0xB2, 0xB8, 0xE2, 0xB2, 0xBA, 0xE2, 0xB2, 0xBC, 0xE2, 0xB2, 0xBE, 0xE2, 0xB3, 0x80, 0xE2, 0xB3, 0x82, 0xE2, 0xB3, 0x84, 0xE2, 0xB3, 0x86, 0xE2, 0xB3, 0x88, 0xE2, 0xB3, 0x8A, 0xE2, 0xB3, 0x8C, 0xE2, 0xB3, 0x8E, 0xE2, 0xB3, 0x90, 0xE2, 0xB3, 0x92, 0xE2, 0xB3, 0x94, 0xE2, 0xB3, 0x96, 0xE2, 0xB3, 0x98, 0xE2, 0xB3, 0x9A, 0xE2, 0xB3, 0x9C, 0xE2, 0xB3, 0x9E, 0xE2, 0xB3, 0xA0, 0xE2, 0xB3, 0xA2, 0xE1, 0x82, 0xA0, 0xE1, 0x82, 0xA1, 0xE1, 0x82, 0xA2, 0xE1, 0x82, 0xA3, 0xE1, 0x82, 0xA4, 0xE1, 0x82, 0xA5, 0xE1, 0x82, 0xA6, 0xE1, 0x82, 0xA7, 0xE1, 0x82, 0xA8, 0xE1, 0x82, 0xA9, 0xE1, 0x82, 0xAA, 0xE1, 0x82, 0xAB, 0xE1, 0x82, 0xAC, 0xE1, 0x82, 0xAD, 0xE1, 0x82, 0xAE, 0xE1, 0x82, 0xAF, 0xE1, 0x82, 0xB0, 0xE1, 0x82, 0xB1, 0xE1, 0x82, 0xB2, 0xE1, 0x82, 0xB3, 0xE1, 0x82, 0xB4, 0xE1, 0x82, 0xB5, 0xE1, 0x82, 0xB6, 0xE1, 0x82, 0xB7, 0xE1, 0x82, 0xB8, 0xE1, 0x82, 0xB9, 0xE1, 0x82, 0xBA, 0xE1, 0x82, 0xBB, 0xE1, 0x82, 0xBC, 0xE1, 0x82, 0xBD, 0xE1, 0x82, 0xBE, 0xE1, 0x82, 0xBF, 0xE1, 0x83, 0x80, 0xE1, 0x83, 0x81, 0xE1, 0x83, 0x82, 0xE1, 0x83, 0x83, 0xE1, 0x83, 0x84, 0xE1, 0x83, 0x85, 0xEF, 0xBC, 0xA1, 0xEF, 0xBC, 0xA2, 0xEF, 0xBC, 0xA3, 0xEF, 0xBC, 0xA4, 0xEF, 0xBC, 0xA5, 0xEF, 0xBC, 0xA6, 0xEF, 0xBC, 0xA7, 0xEF, 0xBC, 0xA8, 0xEF, 0xBC, 0xA9, 0xEF, 0xBC, 0xAA, 0xEF, 0xBC, 0xAB, 0xEF, 0xBC, 0xAC, 0xEF, 0xBC, 0xAD, 0xEF, 0xBC, 0xAE, 0xEF, 0xBC, 0xAF, 0xEF, 0xBC, 0xB0, 0xEF, 0xBC, 0xB1, 0xEF, 0xBC, 0xB2, 0xEF, 0xBC, 0xB3, 0xEF, 0xBC, 0xB4, 0xEF, 0xBC, 0xB5, 0xEF, 0xBC, 0xB6, 0xEF, 0xBC, 0xB7, 0xEF, 0xBC, 0xB8, 0xEF, 0xBC, 0xB9, 0xEF, 0xBC, 0xBA, 0xF0, 0x90, 0x90, 0x80, 0xF0, 0x90, 0x90, 0x81, 0xF0, 0x90, 0x90, 0x82, 0xF0, 0x90, 0x90, 0x83, 0xF0, 0x90, 0x90, 0x84, 0xF0, 0x90, 0x90, 0x85, 0xF0, 0x90, 0x90, 0x86, 0xF0, 0x90, 0x90, 0x87, 0xF0, 0x90, 0x90, 0x88, 0xF0, 0x90, 0x90, 0x89, 0xF0, 0x90, 0x90, 0x8A, 0xF0, 0x90, 0x90, 0x8B, 0xF0, 0x90, 0x90, 0x8C, 0xF0, 0x90, 0x90, 0x8D, 0xF0, 0x90, 0x90, 0x8E, 0xF0, 0x90, 0x90, 0x8F, 0xF0, 0x90, 0x90, 0x90, 0xF0, 0x90, 0x90, 0x91, 0xF0, 0x90, 0x90, 0x92, 0xF0, 0x90, 0x90, 0x93, 0xF0, 0x90, 0x90, 0x94, 0xF0, 0x90, 0x90, 0x95, 0xF0, 0x90, 0x90, 0x96, 0xF0, 0x90, 0x90, 0x97, 0xF0, 0x90, 0x90, 0x98, 0xF0, 0x90, 0x90, 0x99, 0xF0, 0x90, 0x90, 0x9A, 0xF0, 0x90, 0x90, 0x9B, 0xF0, 0x90, 0x90, 0x9C, 0xF0, 0x90, 0x90, 0x9D, 0xF0, 0x90, 0x90, 0x9E, 0xF0, 0x90, 0x90, 0x9F, 0xF0, 0x90, 0x90, 0xA0, 0xF0, 0x90, 0x90, 0xA1, 0xF0, 0x90, 0x90, 0xA2, 0xF0, 0x90, 0x90, 0xA3, 0xF0, 0x90, 0x90, 0xA4, 0xF0, 0x90, 0x90, 0xA5, 0xF0, 0x90, 0x90, 0xA6, 0xF0, 0x90, 0x90, 0xA7, }, }; #undef N_ #undef FIL_ #ifdef __cplusplus } #endif #endif /* _SYS_U8_TEXTPREP_DATA_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/uberblock_impl.h0000644000000000000000000000007413607166132021023 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.584429288 zfs-0.8.3/include/sys/uberblock_impl.h0000644016037001603700000001216013607166132021020 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2016, 2017 by Delphix. All rights reserved. */ #ifndef _SYS_UBERBLOCK_IMPL_H #define _SYS_UBERBLOCK_IMPL_H #include #ifdef __cplusplus extern "C" { #endif /* * The uberblock version is incremented whenever an incompatible on-disk * format change is made to the SPA, DMU, or ZAP. * * Note: the first two fields should never be moved. When a storage pool * is opened, the uberblock must be read off the disk before the version * can be checked. If the ub_version field is moved, we may not detect * version mismatch. If the ub_magic field is moved, applications that * expect the magic number in the first word won't work. */ #define UBERBLOCK_MAGIC 0x00bab10c /* oo-ba-bloc! */ #define UBERBLOCK_SHIFT 10 /* up to 1K */ #define MMP_MAGIC 0xa11cea11 /* all-see-all */ #define MMP_INTERVAL_VALID_BIT 0x01 #define MMP_SEQ_VALID_BIT 0x02 #define MMP_FAIL_INT_VALID_BIT 0x04 #define MMP_VALID(ubp) (ubp->ub_magic == UBERBLOCK_MAGIC && \ ubp->ub_mmp_magic == MMP_MAGIC) #define MMP_INTERVAL_VALID(ubp) (MMP_VALID(ubp) && (ubp->ub_mmp_config & \ MMP_INTERVAL_VALID_BIT)) #define MMP_SEQ_VALID(ubp) (MMP_VALID(ubp) && (ubp->ub_mmp_config & \ MMP_SEQ_VALID_BIT)) #define MMP_FAIL_INT_VALID(ubp) (MMP_VALID(ubp) && (ubp->ub_mmp_config & \ MMP_FAIL_INT_VALID_BIT)) #define MMP_INTERVAL(ubp) ((ubp->ub_mmp_config & 0x00000000FFFFFF00) \ >> 8) #define MMP_SEQ(ubp) ((ubp->ub_mmp_config & 0x0000FFFF00000000) \ >> 32) #define MMP_FAIL_INT(ubp) ((ubp->ub_mmp_config & 0xFFFF000000000000) \ >> 48) #define MMP_INTERVAL_SET(write) \ (((uint64_t)(write & 0xFFFFFF) << 8) | MMP_INTERVAL_VALID_BIT) #define MMP_SEQ_SET(seq) \ (((uint64_t)(seq & 0xFFFF) << 32) | MMP_SEQ_VALID_BIT) #define MMP_FAIL_INT_SET(fail) \ (((uint64_t)(fail & 0xFFFF) << 48) | MMP_FAIL_INT_VALID_BIT) struct uberblock { uint64_t ub_magic; /* UBERBLOCK_MAGIC */ uint64_t ub_version; /* SPA_VERSION */ uint64_t ub_txg; /* txg of last sync */ uint64_t ub_guid_sum; /* sum of all vdev guids */ uint64_t ub_timestamp; /* UTC time of last sync */ blkptr_t ub_rootbp; /* MOS objset_phys_t */ /* highest SPA_VERSION supported by software that wrote this txg */ uint64_t ub_software_version; /* Maybe missing in uberblocks we read, but always written */ uint64_t ub_mmp_magic; /* MMP_MAGIC */ /* * If ub_mmp_delay == 0 and ub_mmp_magic is valid, MMP is off. * Otherwise, nanosec since last MMP write. */ uint64_t ub_mmp_delay; /* * The ub_mmp_config contains the multihost write interval, multihost * fail intervals, sequence number for sub-second granularity, and * valid bit mask. This layout is as follows: * * 64 56 48 40 32 24 16 8 0 * +-------+-------+-------+-------+-------+-------+-------+-------+ * 0 | Fail Intervals| Seq | Write Interval (ms) | VALID | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * This allows a write_interval of (2^24/1000)s, over 4.5 hours * * VALID Bits: * - 0x01 - Write Interval (ms) * - 0x02 - Sequence number exists * - 0x04 - Fail Intervals * - 0xf8 - Reserved */ uint64_t ub_mmp_config; /* * ub_checkpoint_txg indicates two things about the current uberblock: * * 1] If it is not zero then this uberblock is a checkpoint. If it is * zero, then this uberblock is not a checkpoint. * * 2] On checkpointed uberblocks, the value of ub_checkpoint_txg is * the ub_txg that the uberblock had at the time we moved it to * the MOS config. * * The field is set when we checkpoint the uberblock and continues to * hold that value even after we've rewound (unlike the ub_txg that * is reset to a higher value). * * Besides checks used to determine whether we are reopening the * pool from a checkpointed uberblock [see spa_ld_select_uberblock()], * the value of the field is used to determine which ZIL blocks have * been allocated according to the ms_sm when we are rewinding to a * checkpoint. Specifically, if blk_birth > ub_checkpoint_txg, then * the ZIL block is not allocated [see uses of spa_min_claim_txg()]. */ uint64_t ub_checkpoint_txg; }; #ifdef __cplusplus } #endif #endif /* _SYS_UBERBLOCK_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_txg.h0000644000000000000000000000007413607166147020020 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.558428453 zfs-0.8.3/include/sys/trace_txg.h0000644016037001603700000000415713607166147020024 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_txg #if !defined(_TRACE_TXG_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_TXG_H #include #include /* * Generic support for two argument tracepoints of the form: * * DTRACE_PROBE2(..., * dsl_pool_t *, ..., * uint64_t, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_txg_class, TP_PROTO(dsl_pool_t *dp, uint64_t txg), TP_ARGS(dp, txg), TP_STRUCT__entry( __field(uint64_t, txg) ), TP_fast_assign( __entry->txg = txg; ), TP_printk("txg %llu", __entry->txg) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_TXG_EVENT(name) \ DEFINE_EVENT(zfs_txg_class, name, \ TP_PROTO(dsl_pool_t *dp, uint64_t txg), \ TP_ARGS(dp, txg)) /* END CSTYLED */ DEFINE_TXG_EVENT(zfs_dsl_pool_sync__done); DEFINE_TXG_EVENT(zfs_txg__quiescing); DEFINE_TXG_EVENT(zfs_txg__opened); DEFINE_TXG_EVENT(zfs_txg__syncing); DEFINE_TXG_EVENT(zfs_txg__synced); DEFINE_TXG_EVENT(zfs_txg__quiesced); #endif /* _TRACE_TXG_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_txg #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_indirect_mapping.h0000644000000000000000000000007413607166132022372 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.605429963 zfs-0.8.3/include/sys/vdev_indirect_mapping.h0000644016037001603700000001060513607166132022371 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2015 by Delphix. All rights reserved. */ #ifndef _SYS_VDEV_INDIRECT_MAPPING_H #define _SYS_VDEV_INDIRECT_MAPPING_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct vdev_indirect_mapping_entry_phys { /* * Decode with DVA_MAPPING_* macros. * Contains: * the source offset (low 63 bits) * the one-bit "mark", used for garbage collection (by zdb) */ uint64_t vimep_src; /* * Note: the DVA's asize is 24 bits, and can thus store ranges * up to 8GB. */ dva_t vimep_dst; } vdev_indirect_mapping_entry_phys_t; #define DVA_MAPPING_GET_SRC_OFFSET(vimep) \ BF64_GET_SB((vimep)->vimep_src, 0, 63, SPA_MINBLOCKSHIFT, 0) #define DVA_MAPPING_SET_SRC_OFFSET(vimep, x) \ BF64_SET_SB((vimep)->vimep_src, 0, 63, SPA_MINBLOCKSHIFT, 0, x) typedef struct vdev_indirect_mapping_entry { vdev_indirect_mapping_entry_phys_t vime_mapping; uint32_t vime_obsolete_count; list_node_t vime_node; } vdev_indirect_mapping_entry_t; /* * This is stored in the bonus buffer of the mapping object, see comment of * vdev_indirect_config for more details. */ typedef struct vdev_indirect_mapping_phys { uint64_t vimp_max_offset; uint64_t vimp_bytes_mapped; uint64_t vimp_num_entries; /* number of v_i_m_entry_phys_t's */ /* * For each entry in the mapping object, this object contains an * entry representing the number of bytes of that mapping entry * that were no longer in use by the pool at the time this indirect * vdev was last condensed. */ uint64_t vimp_counts_object; } vdev_indirect_mapping_phys_t; #define VDEV_INDIRECT_MAPPING_SIZE_V0 (3 * sizeof (uint64_t)) typedef struct vdev_indirect_mapping { uint64_t vim_object; boolean_t vim_havecounts; /* * An ordered array of all mapping entries, sorted by source offset. * Note that vim_entries is needed during a removal (and contains * mappings that have been synced to disk so far) to handle frees * from the removing device. */ vdev_indirect_mapping_entry_phys_t *vim_entries; objset_t *vim_objset; dmu_buf_t *vim_dbuf; vdev_indirect_mapping_phys_t *vim_phys; } vdev_indirect_mapping_t; extern vdev_indirect_mapping_t *vdev_indirect_mapping_open(objset_t *os, uint64_t object); extern void vdev_indirect_mapping_close(vdev_indirect_mapping_t *vim); extern uint64_t vdev_indirect_mapping_alloc(objset_t *os, dmu_tx_t *tx); extern void vdev_indirect_mapping_free(objset_t *os, uint64_t obj, dmu_tx_t *tx); extern uint64_t vdev_indirect_mapping_num_entries(vdev_indirect_mapping_t *vim); extern uint64_t vdev_indirect_mapping_max_offset(vdev_indirect_mapping_t *vim); extern uint64_t vdev_indirect_mapping_object(vdev_indirect_mapping_t *vim); extern uint64_t vdev_indirect_mapping_bytes_mapped( vdev_indirect_mapping_t *vim); extern uint64_t vdev_indirect_mapping_size(vdev_indirect_mapping_t *vim); /* * Writes the given list of vdev_indirect_mapping_entry_t to the mapping * then updates internal state. */ extern void vdev_indirect_mapping_add_entries(vdev_indirect_mapping_t *vim, list_t *vime_list, dmu_tx_t *tx); extern vdev_indirect_mapping_entry_phys_t * vdev_indirect_mapping_entry_for_offset(vdev_indirect_mapping_t *vim, uint64_t offset); extern vdev_indirect_mapping_entry_phys_t * vdev_indirect_mapping_entry_for_offset_or_next(vdev_indirect_mapping_t *vim, uint64_t offset); extern uint32_t *vdev_indirect_mapping_load_obsolete_counts( vdev_indirect_mapping_t *vim); extern void vdev_indirect_mapping_load_obsolete_spacemap( vdev_indirect_mapping_t *vim, uint32_t *counts, space_map_t *obsolete_space_sm); extern void vdev_indirect_mapping_increment_obsolete_count( vdev_indirect_mapping_t *vim, uint64_t offset, uint64_t asize, uint32_t *counts); extern void vdev_indirect_mapping_free_obsolete_counts( vdev_indirect_mapping_t *vim, uint32_t *counts); #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_INDIRECT_MAPPING_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/space_reftree.h0000644000000000000000000000007413607166147020647 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.527427458 zfs-0.8.3/include/sys/space_reftree.h0000644016037001603700000000325713607166147020653 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_SPACE_REFTREE_H #define _SYS_SPACE_REFTREE_H #include #ifdef __cplusplus extern "C" { #endif typedef struct space_ref { avl_node_t sr_node; /* AVL node */ uint64_t sr_offset; /* range offset (start or end) */ int64_t sr_refcnt; /* associated reference count */ } space_ref_t; void space_reftree_create(avl_tree_t *t); void space_reftree_destroy(avl_tree_t *t); void space_reftree_add_seg(avl_tree_t *t, uint64_t start, uint64_t end, int64_t refcnt); void space_reftree_add_map(avl_tree_t *t, range_tree_t *rt, int64_t refcnt); void space_reftree_generate_map(avl_tree_t *t, range_tree_t *rt, int64_t minref); #ifdef __cplusplus } #endif #endif /* _SYS_SPACE_REFTREE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zcp_global.h0000644000000000000000000000007413607166132020146 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.630430766 zfs-0.8.3/include/sys/zcp_global.h0000644016037001603700000000134613607166132020147 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2016 by Delphix. All rights reserved. */ #ifndef _SYS_ZCP_GLOBALS_H #define _SYS_ZCP_GLOBALS_H #include #ifdef __cplusplus extern "C" { #endif void zcp_load_globals(lua_State *); #ifdef __cplusplus } #endif #endif /* _SYS_ZCP_GLOBALS_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/uio_impl.h0000644000000000000000000000007413607166132017647 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.586429352 zfs-0.8.3/include/sys/uio_impl.h0000644016037001603700000000312713607166132017647 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ /* * University Copyright- Copyright (c) 1982, 1986, 1988 * The Regents of the University of California * All Rights Reserved * * University Acknowledgment- Portions of this document are derived from * software developed by the University of California, Berkeley, and its * contributors. */ #ifndef _SYS_UIO_IMPL_H #define _SYS_UIO_IMPL_H #include extern int uiomove(void *, size_t, enum uio_rw, uio_t *); extern int uio_prefaultpages(ssize_t, uio_t *); extern int uiocopy(void *, size_t, enum uio_rw, uio_t *, size_t *); extern void uioskip(uio_t *, size_t); #endif /* _SYS_UIO_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_fuid.h0000644000000000000000000000007413607166147017651 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.652431473 zfs-0.8.3/include/sys/zfs_fuid.h0000644016037001603700000001021413607166147017644 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_FS_ZFS_FUID_H #define _SYS_FS_ZFS_FUID_H #ifdef _KERNEL #include #include #include #endif #include #ifdef __cplusplus extern "C" { #endif typedef enum { ZFS_OWNER, ZFS_GROUP, ZFS_ACE_USER, ZFS_ACE_GROUP } zfs_fuid_type_t; /* * Estimate space needed for one more fuid table entry. * for now assume its current size + 1K */ #define FUID_SIZE_ESTIMATE(z) ((z)->z_fuid_size + (SPA_MINBLOCKSIZE << 1)) #define FUID_INDEX(x) ((x) >> 32) #define FUID_RID(x) ((x) & 0xffffffff) #define FUID_ENCODE(idx, rid) (((uint64_t)(idx) << 32) | (rid)) /* * FUIDs cause problems for the intent log * we need to replay the creation of the FUID, * but we can't count on the idmapper to be around * and during replay the FUID index may be different than * before. Also, if an ACL has 100 ACEs and 12 different * domains we don't want to log 100 domain strings, but rather * just the unique 12. */ /* * The FUIDs in the log will index into * domain string table and the bottom half will be the rid. * Used for mapping ephemeral uid/gid during ACL setting to FUIDs */ typedef struct zfs_fuid { list_node_t z_next; uint64_t z_id; /* uid/gid being converted to fuid */ uint64_t z_domidx; /* index in AVL domain table */ uint64_t z_logfuid; /* index for domain in log */ } zfs_fuid_t; /* list of unique domains */ typedef struct zfs_fuid_domain { list_node_t z_next; uint64_t z_domidx; /* AVL tree idx */ const char *z_domain; /* domain string */ } zfs_fuid_domain_t; /* * FUID information necessary for logging create, setattr, and setacl. */ typedef struct zfs_fuid_info { list_t z_fuids; list_t z_domains; uint64_t z_fuid_owner; uint64_t z_fuid_group; char **z_domain_table; /* Used during replay */ uint32_t z_fuid_cnt; /* How many fuids in z_fuids */ uint32_t z_domain_cnt; /* How many domains */ size_t z_domain_str_sz; /* len of domain strings z_domain list */ } zfs_fuid_info_t; #ifdef _KERNEL struct znode; extern uid_t zfs_fuid_map_id(zfsvfs_t *, uint64_t, cred_t *, zfs_fuid_type_t); extern void zfs_fuid_node_add(zfs_fuid_info_t **, const char *, uint32_t, uint64_t, uint64_t, zfs_fuid_type_t); extern void zfs_fuid_destroy(zfsvfs_t *); extern uint64_t zfs_fuid_create_cred(zfsvfs_t *, zfs_fuid_type_t, cred_t *, zfs_fuid_info_t **); extern uint64_t zfs_fuid_create(zfsvfs_t *, uint64_t, cred_t *, zfs_fuid_type_t, zfs_fuid_info_t **); extern void zfs_fuid_map_ids(struct znode *zp, cred_t *cr, uid_t *uid, uid_t *gid); extern zfs_fuid_info_t *zfs_fuid_info_alloc(void); extern void zfs_fuid_info_free(zfs_fuid_info_t *); extern boolean_t zfs_groupmember(zfsvfs_t *, uint64_t, cred_t *); void zfs_fuid_sync(zfsvfs_t *, dmu_tx_t *); extern int zfs_fuid_find_by_domain(zfsvfs_t *, const char *domain, char **retdomain, boolean_t addok); extern const char *zfs_fuid_find_by_idx(zfsvfs_t *zfsvfs, uint32_t idx); extern void zfs_fuid_txhold(zfsvfs_t *zfsvfs, dmu_tx_t *tx); #endif char *zfs_fuid_idx_domain(avl_tree_t *, uint32_t); void zfs_fuid_avl_tree_create(avl_tree_t *, avl_tree_t *); uint64_t zfs_fuid_table_load(objset_t *, uint64_t, avl_tree_t *, avl_tree_t *); void zfs_fuid_table_destroy(avl_tree_t *, avl_tree_t *); #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_FUID_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dmu_impl.h0000644000000000000000000000007413607166147017646 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.428424278 zfs-0.8.3/include/sys/dmu_impl.h0000644016037001603700000001717713607166147017660 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2010 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright (c) 2013, 2015 by Delphix. All rights reserved. */ #ifndef _SYS_DMU_IMPL_H #define _SYS_DMU_IMPL_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * This is the locking strategy for the DMU. Numbers in parenthesis are * cases that use that lock order, referenced below: * * ARC is self-contained * bplist is self-contained * refcount is self-contained * txg is self-contained (hopefully!) * zst_lock * zf_rwlock * * XXX try to improve evicting path? * * dp_config_rwlock > os_obj_lock > dn_struct_rwlock > * dn_dbufs_mtx > hash_mutexes > db_mtx > dd_lock > leafs * * dp_config_rwlock * must be held before: everything * protects dd namespace changes * protects property changes globally * held from: * dsl_dir_open/r: * dsl_dir_create_sync/w: * dsl_dir_sync_destroy/w: * dsl_dir_rename_sync/w: * dsl_prop_changed_notify/r: * * os_obj_lock * must be held before: * everything except dp_config_rwlock * protects os_obj_next * held from: * dmu_object_alloc: dn_dbufs_mtx, db_mtx, hash_mutexes, dn_struct_rwlock * * dn_struct_rwlock * must be held before: * everything except dp_config_rwlock and os_obj_lock * protects structure of dnode (eg. nlevels) * db_blkptr can change when syncing out change to nlevels * dn_maxblkid * dn_nlevels * dn_*blksz* * phys nlevels, maxblkid, physical blkptr_t's (?) * held from: * callers of dbuf_read_impl, dbuf_hold[_impl], dbuf_prefetch * dmu_object_info_from_dnode: dn_dirty_mtx (dn_datablksz) * dbuf_read_impl: db_mtx, dmu_zfetch() * dmu_zfetch: zf_rwlock/r, zst_lock, dbuf_prefetch() * dbuf_new_size: db_mtx * dbuf_dirty: db_mtx * dbuf_findbp: (callers, phys? - the real need) * dbuf_create: dn_dbufs_mtx, hash_mutexes, db_mtx (phys?) * dbuf_prefetch: dn_dirty_mtx, hash_mutexes, db_mtx, dn_dbufs_mtx * dbuf_hold_impl: hash_mutexes, db_mtx, dn_dbufs_mtx, dbuf_findbp() * dnode_sync/w (increase_indirection): db_mtx (phys) * dnode_set_blksz/w: dn_dbufs_mtx (dn_*blksz*) * dnode_new_blkid/w: (dn_maxblkid) * dnode_free_range/w: dn_dirty_mtx (dn_maxblkid) * dnode_next_offset: (phys) * * dn_dbufs_mtx * must be held before: * db_mtx, hash_mutexes * protects: * dn_dbufs * dn_evicted * held from: * dmu_evict_user: db_mtx (dn_dbufs) * dbuf_free_range: db_mtx (dn_dbufs) * dbuf_remove_ref: db_mtx, callees: * dbuf_hash_remove: hash_mutexes, db_mtx * dbuf_create: hash_mutexes, db_mtx (dn_dbufs) * dnode_set_blksz: (dn_dbufs) * * hash_mutexes (global) * must be held before: * db_mtx * protects dbuf_hash_table (global) and db_hash_next * held from: * dbuf_find: db_mtx * dbuf_hash_insert: db_mtx * dbuf_hash_remove: db_mtx * * db_mtx (meta-leaf) * must be held before: * dn_mtx, dn_dirty_mtx, dd_lock (leaf mutexes) * protects: * db_state * db_holds * db_buf * db_changed * db_data_pending * db_dirtied * db_link * db_dirty_node (??) * db_dirtycnt * db_d.* * db.* * held from: * dbuf_dirty: dn_mtx, dn_dirty_mtx * dbuf_dirty->dsl_dir_willuse_space: dd_lock * dbuf_dirty->dbuf_new_block->dsl_dataset_block_freeable: dd_lock * dbuf_undirty: dn_dirty_mtx (db_d) * dbuf_write_done: dn_dirty_mtx (db_state) * dbuf_* * dmu_buf_update_user: none (db_d) * dmu_evict_user: none (db_d) (maybe can eliminate) * dbuf_find: none (db_holds) * dbuf_hash_insert: none (db_holds) * dmu_buf_read_array_impl: none (db_state, db_changed) * dmu_sync: none (db_dirty_node, db_d) * dnode_reallocate: none (db) * * dn_mtx (leaf) * protects: * dn_dirty_dbufs * dn_ranges * phys accounting * dn_allocated_txg * dn_free_txg * dn_assigned_txg * dn_dirty_txg * dd_assigned_tx * dn_notxholds * dn_dirtyctx * dn_dirtyctx_firstset * (dn_phys copy fields?) * (dn_phys contents?) * held from: * dnode_* * dbuf_dirty: none * dbuf_sync: none (phys accounting) * dbuf_undirty: none (dn_ranges, dn_dirty_dbufs) * dbuf_write_done: none (phys accounting) * dmu_object_info_from_dnode: none (accounting) * dmu_tx_commit: none * dmu_tx_hold_object_impl: none * dmu_tx_try_assign: dn_notxholds(cv) * dmu_tx_unassign: none * * dd_lock * must be held before: * ds_lock * ancestors' dd_lock * protects: * dd_prop_cbs * dd_sync_* * dd_used_bytes * dd_tempreserved * dd_space_towrite * dd_myname * dd_phys accounting? * held from: * dsl_dir_* * dsl_prop_changed_notify: none (dd_prop_cbs) * dsl_prop_register: none (dd_prop_cbs) * dsl_prop_unregister: none (dd_prop_cbs) * * os_lock (leaf) * protects: * os_dirty_dnodes * os_free_dnodes * os_dnodes * os_downgraded_dbufs * dn_dirtyblksz * dn_dirty_link * held from: * dnode_create: none (os_dnodes) * dnode_destroy: none (os_dnodes) * dnode_setdirty: none (dn_dirtyblksz, os_*_dnodes) * dnode_free: none (dn_dirtyblksz, os_*_dnodes) * * ds_lock * protects: * ds_objset * ds_open_refcount * ds_snapname * ds_phys accounting * ds_phys userrefs zapobj * ds_reserved * held from: * dsl_dataset_* * * dr_mtx (leaf) * protects: * dr_children * held from: * dbuf_dirty * dbuf_undirty * dbuf_sync_indirect * dnode_new_blkid */ struct objset; struct dmu_pool; typedef struct dmu_xuio { int next; int cnt; struct arc_buf **bufs; iovec_t *iovp; } dmu_xuio_t; /* * The list of data whose inclusion in a send stream can be pending from * one call to backup_cb to another. Multiple calls to dump_free() and * dump_freeobjects() can be aggregated into a single DRR_FREE or * DRR_FREEOBJECTS replay record. */ typedef enum { PENDING_NONE, PENDING_FREE, PENDING_FREEOBJECTS } dmu_pendop_t; typedef struct dmu_sendarg { list_node_t dsa_link; dmu_replay_record_t *dsa_drr; vnode_t *dsa_vp; int dsa_outfd; proc_t *dsa_proc; offset_t *dsa_off; objset_t *dsa_os; zio_cksum_t dsa_zc; uint64_t dsa_toguid; uint64_t dsa_fromtxg; int dsa_err; dmu_pendop_t dsa_pending_op; uint64_t dsa_featureflags; uint64_t dsa_last_data_object; uint64_t dsa_last_data_offset; uint64_t dsa_resume_object; uint64_t dsa_resume_offset; boolean_t dsa_sent_begin; boolean_t dsa_sent_end; } dmu_sendarg_t; void dmu_object_zapify(objset_t *, uint64_t, dmu_object_type_t, dmu_tx_t *); void dmu_object_free_zapified(objset_t *, uint64_t, dmu_tx_t *); int dmu_buf_hold_noread(objset_t *, uint64_t, uint64_t, void *, dmu_buf_t **); #ifdef __cplusplus } #endif #endif /* _SYS_DMU_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_arc.h0000644000000000000000000000007413607166147017763 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.543427973 zfs-0.8.3/include/sys/trace_arc.h0000644016037001603700000003017413607166147017765 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #include #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_arc #if !defined(_TRACE_ARC_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_ARC_H #include #include #include /* For ZIO macros */ /* * Generic support for one argument tracepoints of the form: * * DTRACE_PROBE1(..., * arc_buf_hdr_t *, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_arc_buf_hdr_class, TP_PROTO(arc_buf_hdr_t *ab), TP_ARGS(ab), TP_STRUCT__entry( __array(uint64_t, hdr_dva_word, 2) __field(uint64_t, hdr_birth) __field(uint32_t, hdr_flags) __field(uint32_t, hdr_bufcnt) __field(arc_buf_contents_t, hdr_type) __field(uint16_t, hdr_psize) __field(uint16_t, hdr_lsize) __field(uint64_t, hdr_spa) __field(arc_state_type_t, hdr_state_type) __field(clock_t, hdr_access) __field(uint32_t, hdr_mru_hits) __field(uint32_t, hdr_mru_ghost_hits) __field(uint32_t, hdr_mfu_hits) __field(uint32_t, hdr_mfu_ghost_hits) __field(uint32_t, hdr_l2_hits) __field(int64_t, hdr_refcount) ), TP_fast_assign( __entry->hdr_dva_word[0] = ab->b_dva.dva_word[0]; __entry->hdr_dva_word[1] = ab->b_dva.dva_word[1]; __entry->hdr_birth = ab->b_birth; __entry->hdr_flags = ab->b_flags; __entry->hdr_bufcnt = ab->b_l1hdr.b_bufcnt; __entry->hdr_psize = ab->b_psize; __entry->hdr_lsize = ab->b_lsize; __entry->hdr_spa = ab->b_spa; __entry->hdr_state_type = ab->b_l1hdr.b_state->arcs_state; __entry->hdr_access = ab->b_l1hdr.b_arc_access; __entry->hdr_mru_hits = ab->b_l1hdr.b_mru_hits; __entry->hdr_mru_ghost_hits = ab->b_l1hdr.b_mru_ghost_hits; __entry->hdr_mfu_hits = ab->b_l1hdr.b_mfu_hits; __entry->hdr_mfu_ghost_hits = ab->b_l1hdr.b_mfu_ghost_hits; __entry->hdr_l2_hits = ab->b_l1hdr.b_l2_hits; __entry->hdr_refcount = ab->b_l1hdr.b_refcnt.rc_count; ), TP_printk("hdr { dva 0x%llx:0x%llx birth %llu " "flags 0x%x bufcnt %u type %u psize %u lsize %u spa %llu " "state_type %u access %lu mru_hits %u mru_ghost_hits %u " "mfu_hits %u mfu_ghost_hits %u l2_hits %u refcount %lli }", __entry->hdr_dva_word[0], __entry->hdr_dva_word[1], __entry->hdr_birth, __entry->hdr_flags, __entry->hdr_bufcnt, __entry->hdr_type, __entry->hdr_psize, __entry->hdr_lsize, __entry->hdr_spa, __entry->hdr_state_type, __entry->hdr_access, __entry->hdr_mru_hits, __entry->hdr_mru_ghost_hits, __entry->hdr_mfu_hits, __entry->hdr_mfu_ghost_hits, __entry->hdr_l2_hits, __entry->hdr_refcount) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_ARC_BUF_HDR_EVENT(name) \ DEFINE_EVENT(zfs_arc_buf_hdr_class, name, \ TP_PROTO(arc_buf_hdr_t *ab), \ TP_ARGS(ab)) /* END CSTYLED */ DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__hit); DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__evict); DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__delete); DEFINE_ARC_BUF_HDR_EVENT(zfs_new_state__mru); DEFINE_ARC_BUF_HDR_EVENT(zfs_new_state__mfu); DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__async__upgrade__sync); DEFINE_ARC_BUF_HDR_EVENT(zfs_arc__demand__hit__predictive__prefetch); DEFINE_ARC_BUF_HDR_EVENT(zfs_l2arc__hit); DEFINE_ARC_BUF_HDR_EVENT(zfs_l2arc__miss); /* * Generic support for two argument tracepoints of the form: * * DTRACE_PROBE2(..., * vdev_t *, ..., * zio_t *, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_l2arc_rw_class, TP_PROTO(vdev_t *vd, zio_t *zio), TP_ARGS(vd, zio), TP_STRUCT__entry( __field(uint64_t, vdev_id) __field(uint64_t, vdev_guid) __field(uint64_t, vdev_state) ZIO_TP_STRUCT_ENTRY ), TP_fast_assign( __entry->vdev_id = vd->vdev_id; __entry->vdev_guid = vd->vdev_guid; __entry->vdev_state = vd->vdev_state; ZIO_TP_FAST_ASSIGN ), TP_printk("vdev { id %llu guid %llu state %llu } " ZIO_TP_PRINTK_FMT, __entry->vdev_id, __entry->vdev_guid, __entry->vdev_state, ZIO_TP_PRINTK_ARGS) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_L2ARC_RW_EVENT(name) \ DEFINE_EVENT(zfs_l2arc_rw_class, name, \ TP_PROTO(vdev_t *vd, zio_t *zio), \ TP_ARGS(vd, zio)) /* END CSTYLED */ DEFINE_L2ARC_RW_EVENT(zfs_l2arc__read); DEFINE_L2ARC_RW_EVENT(zfs_l2arc__write); /* * Generic support for two argument tracepoints of the form: * * DTRACE_PROBE2(..., * zio_t *, ..., * l2arc_write_callback_t *, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_l2arc_iodone_class, TP_PROTO(zio_t *zio, l2arc_write_callback_t *cb), TP_ARGS(zio, cb), TP_STRUCT__entry(ZIO_TP_STRUCT_ENTRY), TP_fast_assign(ZIO_TP_FAST_ASSIGN), TP_printk(ZIO_TP_PRINTK_FMT, ZIO_TP_PRINTK_ARGS) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_L2ARC_IODONE_EVENT(name) \ DEFINE_EVENT(zfs_l2arc_iodone_class, name, \ TP_PROTO(zio_t *zio, l2arc_write_callback_t *cb), \ TP_ARGS(zio, cb)) /* END CSTYLED */ DEFINE_L2ARC_IODONE_EVENT(zfs_l2arc__iodone); /* * Generic support for four argument tracepoints of the form: * * DTRACE_PROBE4(..., * arc_buf_hdr_t *, ..., * const blkptr_t *, * uint64_t, * const zbookmark_phys_t *); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_arc_miss_class, TP_PROTO(arc_buf_hdr_t *hdr, const blkptr_t *bp, uint64_t size, const zbookmark_phys_t *zb), TP_ARGS(hdr, bp, size, zb), TP_STRUCT__entry( __array(uint64_t, hdr_dva_word, 2) __field(uint64_t, hdr_birth) __field(uint32_t, hdr_flags) __field(uint32_t, hdr_bufcnt) __field(arc_buf_contents_t, hdr_type) __field(uint16_t, hdr_psize) __field(uint16_t, hdr_lsize) __field(uint64_t, hdr_spa) __field(arc_state_type_t, hdr_state_type) __field(clock_t, hdr_access) __field(uint32_t, hdr_mru_hits) __field(uint32_t, hdr_mru_ghost_hits) __field(uint32_t, hdr_mfu_hits) __field(uint32_t, hdr_mfu_ghost_hits) __field(uint32_t, hdr_l2_hits) __field(int64_t, hdr_refcount) __array(uint64_t, bp_dva0, 2) __array(uint64_t, bp_dva1, 2) __array(uint64_t, bp_dva2, 2) __array(uint64_t, bp_cksum, 4) __field(uint64_t, bp_lsize) __field(uint64_t, zb_objset) __field(uint64_t, zb_object) __field(int64_t, zb_level) __field(uint64_t, zb_blkid) ), TP_fast_assign( __entry->hdr_dva_word[0] = hdr->b_dva.dva_word[0]; __entry->hdr_dva_word[1] = hdr->b_dva.dva_word[1]; __entry->hdr_birth = hdr->b_birth; __entry->hdr_flags = hdr->b_flags; __entry->hdr_bufcnt = hdr->b_l1hdr.b_bufcnt; __entry->hdr_psize = hdr->b_psize; __entry->hdr_lsize = hdr->b_lsize; __entry->hdr_spa = hdr->b_spa; __entry->hdr_state_type = hdr->b_l1hdr.b_state->arcs_state; __entry->hdr_access = hdr->b_l1hdr.b_arc_access; __entry->hdr_mru_hits = hdr->b_l1hdr.b_mru_hits; __entry->hdr_mru_ghost_hits = hdr->b_l1hdr.b_mru_ghost_hits; __entry->hdr_mfu_hits = hdr->b_l1hdr.b_mfu_hits; __entry->hdr_mfu_ghost_hits = hdr->b_l1hdr.b_mfu_ghost_hits; __entry->hdr_l2_hits = hdr->b_l1hdr.b_l2_hits; __entry->hdr_refcount = hdr->b_l1hdr.b_refcnt.rc_count; __entry->bp_dva0[0] = bp->blk_dva[0].dva_word[0]; __entry->bp_dva0[1] = bp->blk_dva[0].dva_word[1]; __entry->bp_dva1[0] = bp->blk_dva[1].dva_word[0]; __entry->bp_dva1[1] = bp->blk_dva[1].dva_word[1]; __entry->bp_dva2[0] = bp->blk_dva[2].dva_word[0]; __entry->bp_dva2[1] = bp->blk_dva[2].dva_word[1]; __entry->bp_cksum[0] = bp->blk_cksum.zc_word[0]; __entry->bp_cksum[1] = bp->blk_cksum.zc_word[1]; __entry->bp_cksum[2] = bp->blk_cksum.zc_word[2]; __entry->bp_cksum[3] = bp->blk_cksum.zc_word[3]; __entry->bp_lsize = size; __entry->zb_objset = zb->zb_objset; __entry->zb_object = zb->zb_object; __entry->zb_level = zb->zb_level; __entry->zb_blkid = zb->zb_blkid; ), TP_printk("hdr { dva 0x%llx:0x%llx birth %llu " "flags 0x%x bufcnt %u psize %u lsize %u spa %llu state_type %u " "access %lu mru_hits %u mru_ghost_hits %u mfu_hits %u " "mfu_ghost_hits %u l2_hits %u refcount %lli } " "bp { dva0 0x%llx:0x%llx dva1 0x%llx:0x%llx dva2 " "0x%llx:0x%llx cksum 0x%llx:0x%llx:0x%llx:0x%llx " "lsize %llu } zb { objset %llu object %llu level %lli " "blkid %llu }", __entry->hdr_dva_word[0], __entry->hdr_dva_word[1], __entry->hdr_birth, __entry->hdr_flags, __entry->hdr_bufcnt, __entry->hdr_psize, __entry->hdr_lsize, __entry->hdr_spa, __entry->hdr_state_type, __entry->hdr_access, __entry->hdr_mru_hits, __entry->hdr_mru_ghost_hits, __entry->hdr_mfu_hits, __entry->hdr_mfu_ghost_hits, __entry->hdr_l2_hits, __entry->hdr_refcount, __entry->bp_dva0[0], __entry->bp_dva0[1], __entry->bp_dva1[0], __entry->bp_dva1[1], __entry->bp_dva2[0], __entry->bp_dva2[1], __entry->bp_cksum[0], __entry->bp_cksum[1], __entry->bp_cksum[2], __entry->bp_cksum[3], __entry->bp_lsize, __entry->zb_objset, __entry->zb_object, __entry->zb_level, __entry->zb_blkid) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_ARC_MISS_EVENT(name) \ DEFINE_EVENT(zfs_arc_miss_class, name, \ TP_PROTO(arc_buf_hdr_t *hdr, \ const blkptr_t *bp, uint64_t size, const zbookmark_phys_t *zb), \ TP_ARGS(hdr, bp, size, zb)) /* END CSTYLED */ DEFINE_ARC_MISS_EVENT(zfs_arc__miss); /* * Generic support for four argument tracepoints of the form: * * DTRACE_PROBE4(..., * l2arc_dev_t *, ..., * list_t *, ..., * uint64_t, ..., * boolean_t, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_l2arc_evict_class, TP_PROTO(l2arc_dev_t *dev, list_t *buflist, uint64_t taddr, boolean_t all), TP_ARGS(dev, buflist, taddr, all), TP_STRUCT__entry( __field(uint64_t, vdev_id) __field(uint64_t, vdev_guid) __field(uint64_t, vdev_state) __field(uint64_t, l2ad_hand) __field(uint64_t, l2ad_start) __field(uint64_t, l2ad_end) __field(boolean_t, l2ad_first) __field(boolean_t, l2ad_writing) __field(uint64_t, taddr) __field(boolean_t, all) ), TP_fast_assign( __entry->vdev_id = dev->l2ad_vdev->vdev_id; __entry->vdev_guid = dev->l2ad_vdev->vdev_guid; __entry->vdev_state = dev->l2ad_vdev->vdev_state; __entry->l2ad_hand = dev->l2ad_hand; __entry->l2ad_start = dev->l2ad_start; __entry->l2ad_end = dev->l2ad_end; __entry->l2ad_first = dev->l2ad_first; __entry->l2ad_writing = dev->l2ad_writing; __entry->taddr = taddr; __entry->all = all; ), TP_printk("l2ad { vdev { id %llu guid %llu state %llu } " "hand %llu start %llu end %llu " "first %d writing %d } taddr %llu all %d", __entry->vdev_id, __entry->vdev_guid, __entry->vdev_state, __entry->l2ad_hand, __entry->l2ad_start, __entry->l2ad_end, __entry->l2ad_first, __entry->l2ad_writing, __entry->taddr, __entry->all) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_L2ARC_EVICT_EVENT(name) \ DEFINE_EVENT(zfs_l2arc_evict_class, name, \ TP_PROTO(l2arc_dev_t *dev, \ list_t *buflist, uint64_t taddr, boolean_t all), \ TP_ARGS(dev, buflist, taddr, all)) /* END CSTYLED */ DEFINE_L2ARC_EVICT_EVENT(zfs_l2arc__evict); #endif /* _TRACE_ARC_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_arc #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/dmu_zfetch.h0000644000000000000000000000007413607166147020170 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.442424729 zfs-0.8.3/include/sys/dmu_zfetch.h0000644016037001603700000000400413607166147020163 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2014 by Delphix. All rights reserved. */ #ifndef _DMU_ZFETCH_H #define _DMU_ZFETCH_H #include #ifdef __cplusplus extern "C" { #endif extern unsigned long zfetch_array_rd_sz; struct dnode; /* so we can reference dnode */ typedef struct zstream { uint64_t zs_blkid; /* expect next access at this blkid */ uint64_t zs_pf_blkid; /* next block to prefetch */ /* * We will next prefetch the L1 indirect block of this level-0 * block id. */ uint64_t zs_ipf_blkid; kmutex_t zs_lock; /* protects stream */ hrtime_t zs_atime; /* time last prefetch issued */ list_node_t zs_node; /* link for zf_stream */ } zstream_t; typedef struct zfetch { krwlock_t zf_rwlock; /* protects zfetch structure */ list_t zf_stream; /* list of zstream_t's */ struct dnode *zf_dnode; /* dnode that owns this zfetch */ } zfetch_t; void zfetch_init(void); void zfetch_fini(void); void dmu_zfetch_init(zfetch_t *, struct dnode *); void dmu_zfetch_fini(zfetch_t *); void dmu_zfetch(zfetch_t *, uint64_t, uint64_t, boolean_t); #ifdef __cplusplus } #endif #endif /* _DMU_ZFETCH_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/note.h0000644000000000000000000000007413607166132016777 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.494426399 zfs-0.8.3/include/sys/note.h0000644016037001603700000000317313607166132017000 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 1994 by Sun Microsystems, Inc. */ /* * sys/note.h: interface for annotating source with info for tools * * This is the underlying interface; NOTE (/usr/include/note.h) is the * preferred interface, but all exported header files should include this * file directly and use _NOTE so as not to take "NOTE" from the user's * namespace. For consistency, *all* kernel source should use _NOTE. * * By default, annotations expand to nothing. This file implements * that. Tools using annotations will interpose a different version * of this file that will expand annotations as needed. */ #ifndef _SYS_NOTE_H #define _SYS_NOTE_H #ifdef __cplusplus extern "C" { #endif #ifndef _NOTE #define _NOTE(s) #endif #define NOTE(s) _NOTE(s) #ifdef __cplusplus } #endif #endif /* _SYS_NOTE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/aggsum.h0000644000000000000000000000007413607166132017315 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.391423091 zfs-0.8.3/include/sys/aggsum.h0000644016037001603700000000244413607166132017316 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2017 by Delphix. All rights reserved. */ #ifndef _SYS_AGGSUM_H #define _SYS_AGGSUM_H #include #ifdef __cplusplus extern "C" { #endif typedef struct aggsum_bucket aggsum_bucket_t; struct aggsum_bucket { kmutex_t asc_lock; int64_t asc_delta; uint64_t asc_borrowed; } ____cacheline_aligned; /* * Fan out over FANOUT cpus. */ typedef struct aggsum { kmutex_t as_lock; int64_t as_lower_bound; int64_t as_upper_bound; uint64_t as_numbuckets; aggsum_bucket_t *as_buckets; } aggsum_t; void aggsum_init(aggsum_t *, uint64_t); void aggsum_fini(aggsum_t *); int64_t aggsum_lower_bound(aggsum_t *); int64_t aggsum_upper_bound(aggsum_t *); int aggsum_compare(aggsum_t *, uint64_t); uint64_t aggsum_value(aggsum_t *); void aggsum_add(aggsum_t *, int64_t); #ifdef __cplusplus } #endif #endif /* _SYS_AGGSUM_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/unique.h0000644000000000000000000000007413607166132017340 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.589429448 zfs-0.8.3/include/sys/unique.h0000644016037001603700000000307313607166132017340 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_UNIQUE_H #define _SYS_UNIQUE_H #include #ifdef __cplusplus extern "C" { #endif /* The number of significant bits in each unique value. */ #define UNIQUE_BITS 56 void unique_init(void); void unique_fini(void); /* * Return a new unique value (which will not be uniquified against until * it is unique_insert()-ed). */ uint64_t unique_create(void); /* Return a unique value, which equals the one passed in if possible. */ uint64_t unique_insert(uint64_t value); /* Indicate that this value no longer needs to be uniquified against. */ void unique_remove(uint64_t value); #ifdef __cplusplus } #endif #endif /* _SYS_UNIQUE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_synctask.h0000644000000000000000000000007413612141510020520 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.469425596 zfs-0.8.3/include/sys/dsl_synctask.h0000644016037001603700000001015313612141510020515 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2017 by Delphix. All rights reserved. */ #ifndef _SYS_DSL_SYNCTASK_H #define _SYS_DSL_SYNCTASK_H #include #include #ifdef __cplusplus extern "C" { #endif struct dsl_pool; typedef int (dsl_checkfunc_t)(void *, dmu_tx_t *); typedef void (dsl_syncfunc_t)(void *, dmu_tx_t *); typedef void (dsl_sigfunc_t)(void *, dmu_tx_t *); typedef enum zfs_space_check { /* * Normal space check: if there is less than 3.2% free space, * the operation will fail. Operations which are logically * creating things should use this (e.g. "zfs create", "zfs snapshot"). * User writes (via the ZPL / ZVOL) also fail at this point. */ ZFS_SPACE_CHECK_NORMAL, /* * Space check allows use of half the slop space. If there * is less than 1.6% free space, the operation will fail. Most * operations should use this (e.g. "zfs set", "zfs rename"), * because we want them to succeed even after user writes are failing, * so that they can be used as part of the space recovery process. */ ZFS_SPACE_CHECK_RESERVED, /* * Space check allows use of three quarters of the slop space. * If there is less than 0.8% free space, the operation will * fail. */ ZFS_SPACE_CHECK_EXTRA_RESERVED, /* * In all cases "zfs destroy" is expected to result in an net * reduction of space, except one. When the pool has a * checkpoint, space freed by "zfs destroy" will not actually * free anything internally. Thus, it starts failing after * three quarters of the slop space is exceeded. */ ZFS_SPACE_CHECK_DESTROY = ZFS_SPACE_CHECK_EXTRA_RESERVED, /* * A channel program can run a "zfs destroy" as part of its * script and therefore has the same space_check policy when * being evaluated. */ ZFS_SPACE_CHECK_ZCP_EVAL = ZFS_SPACE_CHECK_DESTROY, /* * No space check is performed. This level of space check should * be used cautiously as operations that use it can even run when * 0.8% capacity is left for use. In this scenario, if there is a * checkpoint, async destroys are suspended and any kind of freeing * can potentially add space instead of freeing it. * * See also the comments above spa_slop_shift. */ ZFS_SPACE_CHECK_NONE, ZFS_SPACE_CHECK_DISCARD_CHECKPOINT = ZFS_SPACE_CHECK_NONE, } zfs_space_check_t; typedef struct dsl_sync_task { txg_node_t dst_node; struct dsl_pool *dst_pool; uint64_t dst_txg; int dst_space; zfs_space_check_t dst_space_check; dsl_checkfunc_t *dst_checkfunc; dsl_syncfunc_t *dst_syncfunc; void *dst_arg; int dst_error; boolean_t dst_nowaiter; } dsl_sync_task_t; void dsl_sync_task_sync(dsl_sync_task_t *, dmu_tx_t *); int dsl_sync_task(const char *, dsl_checkfunc_t *, dsl_syncfunc_t *, void *, int, zfs_space_check_t); void dsl_sync_task_nowait(struct dsl_pool *, dsl_syncfunc_t *, void *, int, zfs_space_check_t, dmu_tx_t *); int dsl_early_sync_task(const char *, dsl_checkfunc_t *, dsl_syncfunc_t *, void *, int, zfs_space_check_t); void dsl_early_sync_task_nowait(struct dsl_pool *, dsl_syncfunc_t *, void *, int, zfs_space_check_t, dmu_tx_t *); int dsl_sync_task_sig(const char *, dsl_checkfunc_t *, dsl_syncfunc_t *, dsl_sigfunc_t *, void *, int, zfs_space_check_t); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_SYNCTASK_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_dir.h0000644000000000000000000000007413607166147017460 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.458425244 zfs-0.8.3/include/sys/dsl_dir.h0000644016037001603700000001627513607166147017470 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2017 by Delphix. All rights reserved. * Copyright (c) 2014, Joyent, Inc. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. */ #ifndef _SYS_DSL_DIR_H #define _SYS_DSL_DIR_H #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct dsl_dataset; /* * DD_FIELD_* are strings that are used in the "extensified" dsl_dir zap object. * They should be of the format :. */ #define DD_FIELD_FILESYSTEM_COUNT "com.joyent:filesystem_count" #define DD_FIELD_SNAPSHOT_COUNT "com.joyent:snapshot_count" #define DD_FIELD_CRYPTO_KEY_OBJ "com.datto:crypto_key_obj" #define DD_FIELD_LAST_REMAP_TXG "com.delphix:last_remap_txg" typedef enum dd_used { DD_USED_HEAD, DD_USED_SNAP, DD_USED_CHILD, DD_USED_CHILD_RSRV, DD_USED_REFRSRV, DD_USED_NUM } dd_used_t; #define DD_FLAG_USED_BREAKDOWN (1<<0) typedef struct dsl_dir_phys { uint64_t dd_creation_time; /* not actually used */ uint64_t dd_head_dataset_obj; uint64_t dd_parent_obj; uint64_t dd_origin_obj; uint64_t dd_child_dir_zapobj; /* * how much space our children are accounting for; for leaf * datasets, == physical space used by fs + snaps */ uint64_t dd_used_bytes; uint64_t dd_compressed_bytes; uint64_t dd_uncompressed_bytes; /* Administrative quota setting */ uint64_t dd_quota; /* Administrative reservation setting */ uint64_t dd_reserved; uint64_t dd_props_zapobj; uint64_t dd_deleg_zapobj; /* dataset delegation permissions */ uint64_t dd_flags; uint64_t dd_used_breakdown[DD_USED_NUM]; uint64_t dd_clones; /* dsl_dir objects */ uint64_t dd_pad[13]; /* pad out to 256 bytes for good measure */ } dsl_dir_phys_t; struct dsl_dir { dmu_buf_user_t dd_dbu; /* These are immutable; no lock needed: */ uint64_t dd_object; uint64_t dd_crypto_obj; dsl_pool_t *dd_pool; /* Stable until user eviction; no lock needed: */ dmu_buf_t *dd_dbuf; /* protected by lock on pool's dp_dirty_dirs list */ txg_node_t dd_dirty_link; /* protected by dp_config_rwlock */ dsl_dir_t *dd_parent; /* Protected by dd_lock */ kmutex_t dd_lock; list_t dd_props; /* list of dsl_prop_record_t's */ inode_timespec_t dd_snap_cmtime; /* last snapshot namespace change */ uint64_t dd_origin_txg; /* gross estimate of space used by in-flight tx's */ uint64_t dd_tempreserved[TXG_SIZE]; /* amount of space we expect to write; == amount of dirty data */ int64_t dd_space_towrite[TXG_SIZE]; /* protected by dd_lock; keep at end of struct for better locality */ char dd_myname[ZFS_MAX_DATASET_NAME_LEN]; }; static inline dsl_dir_phys_t * dsl_dir_phys(dsl_dir_t *dd) { return (dd->dd_dbuf->db_data); } void dsl_dir_rele(dsl_dir_t *dd, void *tag); void dsl_dir_async_rele(dsl_dir_t *dd, void *tag); int dsl_dir_hold(dsl_pool_t *dp, const char *name, void *tag, dsl_dir_t **, const char **tail); int dsl_dir_hold_obj(dsl_pool_t *dp, uint64_t ddobj, const char *tail, void *tag, dsl_dir_t **); void dsl_dir_name(dsl_dir_t *dd, char *buf); int dsl_dir_namelen(dsl_dir_t *dd); uint64_t dsl_dir_create_sync(dsl_pool_t *dp, dsl_dir_t *pds, const char *name, dmu_tx_t *tx); uint64_t dsl_dir_get_used(dsl_dir_t *dd); uint64_t dsl_dir_get_compressed(dsl_dir_t *dd); uint64_t dsl_dir_get_quota(dsl_dir_t *dd); uint64_t dsl_dir_get_reservation(dsl_dir_t *dd); uint64_t dsl_dir_get_compressratio(dsl_dir_t *dd); uint64_t dsl_dir_get_logicalused(dsl_dir_t *dd); uint64_t dsl_dir_get_usedsnap(dsl_dir_t *dd); uint64_t dsl_dir_get_usedds(dsl_dir_t *dd); uint64_t dsl_dir_get_usedrefreserv(dsl_dir_t *dd); uint64_t dsl_dir_get_usedchild(dsl_dir_t *dd); void dsl_dir_get_origin(dsl_dir_t *dd, char *buf); int dsl_dir_get_filesystem_count(dsl_dir_t *dd, uint64_t *count); int dsl_dir_get_snapshot_count(dsl_dir_t *dd, uint64_t *count); void dsl_dir_stats(dsl_dir_t *dd, nvlist_t *nv); uint64_t dsl_dir_space_available(dsl_dir_t *dd, dsl_dir_t *ancestor, int64_t delta, int ondiskonly); void dsl_dir_dirty(dsl_dir_t *dd, dmu_tx_t *tx); int dsl_dir_get_remaptxg(dsl_dir_t *dd, uint64_t *count); void dsl_dir_sync(dsl_dir_t *dd, dmu_tx_t *tx); int dsl_dir_tempreserve_space(dsl_dir_t *dd, uint64_t mem, uint64_t asize, boolean_t netfree, void **tr_cookiep, dmu_tx_t *tx); void dsl_dir_tempreserve_clear(void *tr_cookie, dmu_tx_t *tx); void dsl_dir_willuse_space(dsl_dir_t *dd, int64_t space, dmu_tx_t *tx); void dsl_dir_diduse_space(dsl_dir_t *dd, dd_used_t type, int64_t used, int64_t compressed, int64_t uncompressed, dmu_tx_t *tx); void dsl_dir_transfer_space(dsl_dir_t *dd, int64_t delta, dd_used_t oldtype, dd_used_t newtype, dmu_tx_t *tx); int dsl_dir_set_quota(const char *ddname, zprop_source_t source, uint64_t quota); int dsl_dir_set_reservation(const char *ddname, zprop_source_t source, uint64_t reservation); int dsl_dir_activate_fs_ss_limit(const char *); int dsl_fs_ss_limit_check(dsl_dir_t *, uint64_t, zfs_prop_t, dsl_dir_t *, cred_t *); void dsl_fs_ss_count_adjust(dsl_dir_t *, int64_t, const char *, dmu_tx_t *); int dsl_dir_update_last_remap_txg(dsl_dir_t *, uint64_t); int dsl_dir_rename(const char *oldname, const char *newname); int dsl_dir_transfer_possible(dsl_dir_t *sdd, dsl_dir_t *tdd, uint64_t fs_cnt, uint64_t ss_cnt, uint64_t space, cred_t *); boolean_t dsl_dir_is_clone(dsl_dir_t *dd); void dsl_dir_new_refreservation(dsl_dir_t *dd, struct dsl_dataset *ds, uint64_t reservation, cred_t *cr, dmu_tx_t *tx); void dsl_dir_snap_cmtime_update(dsl_dir_t *dd); inode_timespec_t dsl_dir_snap_cmtime(dsl_dir_t *dd); void dsl_dir_set_reservation_sync_impl(dsl_dir_t *dd, uint64_t value, dmu_tx_t *tx); void dsl_dir_zapify(dsl_dir_t *dd, dmu_tx_t *tx); boolean_t dsl_dir_is_zapified(dsl_dir_t *dd); /* internal reserved dir name */ #define MOS_DIR_NAME "$MOS" #define ORIGIN_DIR_NAME "$ORIGIN" #define FREE_DIR_NAME "$FREE" #define LEAK_DIR_NAME "$LEAK" #ifdef ZFS_DEBUG #define dprintf_dd(dd, fmt, ...) do { \ if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ char *__ds_name = kmem_alloc(ZFS_MAX_DATASET_NAME_LEN, KM_SLEEP); \ dsl_dir_name(dd, __ds_name); \ dprintf("dd=%s " fmt, __ds_name, __VA_ARGS__); \ kmem_free(__ds_name, ZFS_MAX_DATASET_NAME_LEN); \ } \ _NOTE(CONSTCOND) } while (0) #else #define dprintf_dd(dd, fmt, ...) #endif #ifdef __cplusplus } #endif #endif /* _SYS_DSL_DIR_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/avl.h0000644000000000000000000000007413612141513016604 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.398423315 zfs-0.8.3/include/sys/avl.h0000644016037001603700000002126513612141513016607 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2014 by Delphix. All rights reserved. */ #ifndef _AVL_H #define _AVL_H /* * This is a private header file. Applications should not directly include * this file. */ #ifdef __cplusplus extern "C" { #endif #include #include /* * This is a generic implementation of AVL trees for use in the Solaris kernel. * The interfaces provide an efficient way of implementing an ordered set of * data structures. * * AVL trees provide an alternative to using an ordered linked list. Using AVL * trees will usually be faster, however they requires more storage. An ordered * linked list in general requires 2 pointers in each data structure. The * AVL tree implementation uses 3 pointers. The following chart gives the * approximate performance of operations with the different approaches: * * Operation Link List AVL tree * --------- -------- -------- * lookup O(n) O(log(n)) * * insert 1 node constant constant * * delete 1 node constant between constant and O(log(n)) * * delete all nodes O(n) O(n) * * visit the next * or prev node constant between constant and O(log(n)) * * * The data structure nodes are anchored at an "avl_tree_t" (the equivalent * of a list header) and the individual nodes will have a field of * type "avl_node_t" (corresponding to list pointers). * * The type "avl_index_t" is used to indicate a position in the list for * certain calls. * * The usage scenario is generally: * * 1. Create the list/tree with: avl_create() * * followed by any mixture of: * * 2a. Insert nodes with: avl_add(), or avl_find() and avl_insert() * * 2b. Visited elements with: * avl_first() - returns the lowest valued node * avl_last() - returns the highest valued node * AVL_NEXT() - given a node go to next higher one * AVL_PREV() - given a node go to previous lower one * * 2c. Find the node with the closest value either less than or greater * than a given value with avl_nearest(). * * 2d. Remove individual nodes from the list/tree with avl_remove(). * * and finally when the list is being destroyed * * 3. Use avl_destroy_nodes() to quickly process/free up any remaining nodes. * Note that once you use avl_destroy_nodes(), you can no longer * use any routine except avl_destroy_nodes() and avl_destroy(). * * 4. Use avl_destroy() to destroy the AVL tree itself. * * Any locking for multiple thread access is up to the user to provide, just * as is needed for any linked list implementation. */ /* * AVL comparator helpers */ #define AVL_ISIGN(a) (((a) > 0) - ((a) < 0)) #define AVL_CMP(a, b) (((a) > (b)) - ((a) < (b))) #define AVL_PCMP(a, b) \ (((uintptr_t)(a) > (uintptr_t)(b)) - ((uintptr_t)(a) < (uintptr_t)(b))) /* * Type used for the root of the AVL tree. */ typedef struct avl_tree avl_tree_t; /* * The data nodes in the AVL tree must have a field of this type. */ typedef struct avl_node avl_node_t; /* * An opaque type used to locate a position in the tree where a node * would be inserted. */ typedef uintptr_t avl_index_t; /* * Direction constants used for avl_nearest(). */ #define AVL_BEFORE (0) #define AVL_AFTER (1) /* * Prototypes * * Where not otherwise mentioned, "void *" arguments are a pointer to the * user data structure which must contain a field of type avl_node_t. * * Also assume the user data structures looks like: * struct my_type { * ... * avl_node_t my_link; * ... * }; */ /* * Initialize an AVL tree. Arguments are: * * tree - the tree to be initialized * compar - function to compare two nodes, it must return exactly: -1, 0, or +1 * -1 for <, 0 for ==, and +1 for > * size - the value of sizeof(struct my_type) * offset - the value of OFFSETOF(struct my_type, my_link) */ extern void avl_create(avl_tree_t *tree, int (*compar) (const void *, const void *), size_t size, size_t offset); /* * Find a node with a matching value in the tree. Returns the matching node * found. If not found, it returns NULL and then if "where" is not NULL it sets * "where" for use with avl_insert() or avl_nearest(). * * node - node that has the value being looked for * where - position for use with avl_nearest() or avl_insert(), may be NULL */ extern void *avl_find(avl_tree_t *tree, const void *node, avl_index_t *where); /* * Insert a node into the tree. * * node - the node to insert * where - position as returned from avl_find() */ extern void avl_insert(avl_tree_t *tree, void *node, avl_index_t where); /* * Insert "new_data" in "tree" in the given "direction" either after * or before the data "here". * * This might be useful for avl clients caching recently accessed * data to avoid doing avl_find() again for insertion. * * new_data - new data to insert * here - existing node in "tree" * direction - either AVL_AFTER or AVL_BEFORE the data "here". */ extern void avl_insert_here(avl_tree_t *tree, void *new_data, void *here, int direction); /* * Return the first or last valued node in the tree. Will return NULL * if the tree is empty. * */ extern void *avl_first(avl_tree_t *tree); extern void *avl_last(avl_tree_t *tree); /* * Return the next or previous valued node in the tree. * AVL_NEXT() will return NULL if at the last node. * AVL_PREV() will return NULL if at the first node. * * node - the node from which the next or previous node is found */ #define AVL_NEXT(tree, node) avl_walk(tree, node, AVL_AFTER) #define AVL_PREV(tree, node) avl_walk(tree, node, AVL_BEFORE) /* * Find the node with the nearest value either greater or less than * the value from a previous avl_find(). Returns the node or NULL if * there isn't a matching one. * * where - position as returned from avl_find() * direction - either AVL_BEFORE or AVL_AFTER * * EXAMPLE get the greatest node that is less than a given value: * * avl_tree_t *tree; * struct my_data look_for_value = {....}; * struct my_data *node; * struct my_data *less; * avl_index_t where; * * node = avl_find(tree, &look_for_value, &where); * if (node != NULL) * less = AVL_PREV(tree, node); * else * less = avl_nearest(tree, where, AVL_BEFORE); */ extern void *avl_nearest(avl_tree_t *tree, avl_index_t where, int direction); /* * Add a single node to the tree. * The node must not be in the tree, and it must not * compare equal to any other node already in the tree. * * node - the node to add */ extern void avl_add(avl_tree_t *tree, void *node); /* * Remove a single node from the tree. The node must be in the tree. * * node - the node to remove */ extern void avl_remove(avl_tree_t *tree, void *node); /* * Swaps the contents of the two trees. */ extern void avl_swap(avl_tree_t *tree1, avl_tree_t *tree2); /* * Return the number of nodes in the tree */ extern ulong_t avl_numnodes(avl_tree_t *tree); /* * Return B_TRUE if there are zero nodes in the tree, B_FALSE otherwise. */ extern boolean_t avl_is_empty(avl_tree_t *tree); /* * Used to destroy any remaining nodes in a tree. The cookie argument should * be initialized to NULL before the first call. Returns a node that has been * removed from the tree and may be free()'d. Returns NULL when the tree is * empty. * * Once you call avl_destroy_nodes(), you can only continuing calling it and * finally avl_destroy(). No other AVL routines will be valid. * * cookie - a "void *" used to save state between calls to avl_destroy_nodes() * * EXAMPLE: * avl_tree_t *tree; * struct my_data *node; * void *cookie; * * cookie = NULL; * while ((node = avl_destroy_nodes(tree, &cookie)) != NULL) * free(node); * avl_destroy(tree); */ extern void *avl_destroy_nodes(avl_tree_t *tree, void **cookie); /* * Final destroy of an AVL tree. Arguments are: * * tree - the empty tree to destroy */ extern void avl_destroy(avl_tree_t *tree); #ifdef __cplusplus } #endif #endif /* _AVL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_raidz.h0000644000000000000000000000007413612141515020161 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.609430091 zfs-0.8.3/include/sys/vdev_raidz.h0000644016037001603700000000340413612141515020157 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2016 Gvozden Neskovic . */ #ifndef _SYS_VDEV_RAIDZ_H #define _SYS_VDEV_RAIDZ_H #include #ifdef __cplusplus extern "C" { #endif struct zio; struct raidz_map; #if !defined(_KERNEL) struct kernel_param {}; #endif /* * vdev_raidz interface */ struct raidz_map *vdev_raidz_map_alloc(struct zio *, uint64_t, uint64_t, uint64_t); void vdev_raidz_map_free(struct raidz_map *); void vdev_raidz_generate_parity(struct raidz_map *); int vdev_raidz_reconstruct(struct raidz_map *, const int *, int); /* * vdev_raidz_math interface */ void vdev_raidz_math_init(void); void vdev_raidz_math_fini(void); const struct raidz_impl_ops *vdev_raidz_math_get_ops(void); int vdev_raidz_math_generate(struct raidz_map *); int vdev_raidz_math_reconstruct(struct raidz_map *, const int *, const int *, const int); int vdev_raidz_impl_set(const char *); #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_RAIDZ_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/avl_impl.h0000644000000000000000000000007413607166132017635 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.401423412 zfs-0.8.3/include/sys/avl_impl.h0000644016037001603700000001146013607166132017634 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _AVL_IMPL_H #define _AVL_IMPL_H /* * This is a private header file. Applications should not directly include * this file. */ #include #ifdef __cplusplus extern "C" { #endif /* * generic AVL tree implementation for kernel use * * There are 5 pieces of information stored for each node in an AVL tree * * pointer to less than child * pointer to greater than child * a pointer to the parent of this node * an indication [0/1] of which child I am of my parent * a "balance" (-1, 0, +1) indicating which child tree is taller * * Since they only need 3 bits, the last two fields are packed into the * bottom bits of the parent pointer on 64 bit machines to save on space. */ #ifndef _LP64 struct avl_node { struct avl_node *avl_child[2]; /* left/right children */ struct avl_node *avl_parent; /* this node's parent */ unsigned short avl_child_index; /* my index in parent's avl_child[] */ short avl_balance; /* balance value: -1, 0, +1 */ }; #define AVL_XPARENT(n) ((n)->avl_parent) #define AVL_SETPARENT(n, p) ((n)->avl_parent = (p)) #define AVL_XCHILD(n) ((n)->avl_child_index) #define AVL_SETCHILD(n, c) ((n)->avl_child_index = (unsigned short)(c)) #define AVL_XBALANCE(n) ((n)->avl_balance) #define AVL_SETBALANCE(n, b) ((n)->avl_balance = (short)(b)) #else /* _LP64 */ /* * for 64 bit machines, avl_pcb contains parent pointer, balance and child_index * values packed in the following manner: * * |63 3| 2 |1 0 | * |-------------------------------------|-----------------|-------------| * | avl_parent hi order bits | avl_child_index | avl_balance | * | | | + 1 | * |-------------------------------------|-----------------|-------------| * */ struct avl_node { struct avl_node *avl_child[2]; /* left/right children nodes */ uintptr_t avl_pcb; /* parent, child_index, balance */ }; /* * macros to extract/set fields in avl_pcb * * pointer to the parent of the current node is the high order bits */ #define AVL_XPARENT(n) ((struct avl_node *)((n)->avl_pcb & ~7)) #define AVL_SETPARENT(n, p) \ ((n)->avl_pcb = (((n)->avl_pcb & 7) | (uintptr_t)(p))) /* * index of this node in its parent's avl_child[]: bit #2 */ #define AVL_XCHILD(n) (((n)->avl_pcb >> 2) & 1) #define AVL_SETCHILD(n, c) \ ((n)->avl_pcb = (uintptr_t)(((n)->avl_pcb & ~4) | ((c) << 2))) /* * balance indication for a node, lowest 2 bits. A valid balance is * -1, 0, or +1, and is encoded by adding 1 to the value to get the * unsigned values of 0, 1, 2. */ #define AVL_XBALANCE(n) ((int)(((n)->avl_pcb & 3) - 1)) #define AVL_SETBALANCE(n, b) \ ((n)->avl_pcb = (uintptr_t)((((n)->avl_pcb & ~3) | ((b) + 1)))) #endif /* _LP64 */ /* * switch between a node and data pointer for a given tree * the value of "o" is tree->avl_offset */ #define AVL_NODE2DATA(n, o) ((void *)((uintptr_t)(n) - (o))) #define AVL_DATA2NODE(d, o) ((struct avl_node *)((uintptr_t)(d) + (o))) /* * macros used to create/access an avl_index_t */ #define AVL_INDEX2NODE(x) ((avl_node_t *)((x) & ~1)) #define AVL_INDEX2CHILD(x) ((x) & 1) #define AVL_MKINDEX(n, c) ((avl_index_t)(n) | (c)) /* * The tree structure. The fields avl_root, avl_compar, and avl_offset come * first since they are needed for avl_find(). We want them to fit into * a single 64 byte cache line to make avl_find() as fast as possible. */ struct avl_tree { struct avl_node *avl_root; /* root node in tree */ int (*avl_compar)(const void *, const void *); size_t avl_offset; /* offsetof(type, avl_link_t field) */ ulong_t avl_numnodes; /* number of nodes in the tree */ size_t avl_size; /* sizeof user type struct */ }; /* * This will only by used via AVL_NEXT() or AVL_PREV() */ extern void *avl_walk(struct avl_tree *, void *, int); #ifdef __cplusplus } #endif #endif /* _AVL_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/arc_impl.h0000644000000000000000000000007413612141513017610 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.396423251 zfs-0.8.3/include/sys/arc_impl.h0000644016037001603700000002316713612141513017616 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. * Copyright 2013 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SYS_ARC_IMPL_H #define _SYS_ARC_IMPL_H #include #include #ifdef __cplusplus extern "C" { #endif /* * Note that buffers can be in one of 6 states: * ARC_anon - anonymous (discussed below) * ARC_mru - recently used, currently cached * ARC_mru_ghost - recently used, no longer in cache * ARC_mfu - frequently used, currently cached * ARC_mfu_ghost - frequently used, no longer in cache * ARC_l2c_only - exists in L2ARC but not other states * When there are no active references to the buffer, they are * are linked onto a list in one of these arc states. These are * the only buffers that can be evicted or deleted. Within each * state there are multiple lists, one for meta-data and one for * non-meta-data. Meta-data (indirect blocks, blocks of dnodes, * etc.) is tracked separately so that it can be managed more * explicitly: favored over data, limited explicitly. * * Anonymous buffers are buffers that are not associated with * a DVA. These are buffers that hold dirty block copies * before they are written to stable storage. By definition, * they are "ref'd" and are considered part of arc_mru * that cannot be freed. Generally, they will acquire a DVA * as they are written and migrate onto the arc_mru list. * * The ARC_l2c_only state is for buffers that are in the second * level ARC but no longer in any of the ARC_m* lists. The second * level ARC itself may also contain buffers that are in any of * the ARC_m* states - meaning that a buffer can exist in two * places. The reason for the ARC_l2c_only state is to keep the * buffer header in the hash table, so that reads that hit the * second level ARC benefit from these fast lookups. */ typedef struct arc_state { /* * list of evictable buffers */ multilist_t *arcs_list[ARC_BUFC_NUMTYPES]; /* * total amount of evictable data in this state */ zfs_refcount_t arcs_esize[ARC_BUFC_NUMTYPES]; /* * total amount of data in this state; this includes: evictable, * non-evictable, ARC_BUFC_DATA, and ARC_BUFC_METADATA. */ zfs_refcount_t arcs_size; /* * supports the "dbufs" kstat */ arc_state_type_t arcs_state; } arc_state_t; typedef struct arc_callback arc_callback_t; struct arc_callback { void *acb_private; arc_read_done_func_t *acb_done; arc_buf_t *acb_buf; boolean_t acb_encrypted; boolean_t acb_compressed; boolean_t acb_noauth; zbookmark_phys_t acb_zb; zio_t *acb_zio_dummy; zio_t *acb_zio_head; arc_callback_t *acb_next; }; typedef struct arc_write_callback arc_write_callback_t; struct arc_write_callback { void *awcb_private; arc_write_done_func_t *awcb_ready; arc_write_done_func_t *awcb_children_ready; arc_write_done_func_t *awcb_physdone; arc_write_done_func_t *awcb_done; arc_buf_t *awcb_buf; }; /* * ARC buffers are separated into multiple structs as a memory saving measure: * - Common fields struct, always defined, and embedded within it: * - L2-only fields, always allocated but undefined when not in L2ARC * - L1-only fields, only allocated when in L1ARC * * Buffer in L1 Buffer only in L2 * +------------------------+ +------------------------+ * | arc_buf_hdr_t | | arc_buf_hdr_t | * | | | | * | | | | * | | | | * +------------------------+ +------------------------+ * | l2arc_buf_hdr_t | | l2arc_buf_hdr_t | * | (undefined if L1-only) | | | * +------------------------+ +------------------------+ * | l1arc_buf_hdr_t | * | | * | | * | | * | | * +------------------------+ * * Because it's possible for the L2ARC to become extremely large, we can wind * up eating a lot of memory in L2ARC buffer headers, so the size of a header * is minimized by only allocating the fields necessary for an L1-cached buffer * when a header is actually in the L1 cache. The sub-headers (l1arc_buf_hdr and * l2arc_buf_hdr) are embedded rather than allocated separately to save a couple * words in pointers. arc_hdr_realloc() is used to switch a header between * these two allocation states. */ typedef struct l1arc_buf_hdr { kmutex_t b_freeze_lock; zio_cksum_t *b_freeze_cksum; arc_buf_t *b_buf; uint32_t b_bufcnt; /* for waiting on writes to complete */ kcondvar_t b_cv; uint8_t b_byteswap; /* protected by arc state mutex */ arc_state_t *b_state; multilist_node_t b_arc_node; /* updated atomically */ clock_t b_arc_access; uint32_t b_mru_hits; uint32_t b_mru_ghost_hits; uint32_t b_mfu_hits; uint32_t b_mfu_ghost_hits; uint32_t b_l2_hits; /* self protecting */ zfs_refcount_t b_refcnt; arc_callback_t *b_acb; abd_t *b_pabd; } l1arc_buf_hdr_t; /* * Encrypted blocks will need to be stored encrypted on the L2ARC * disk as they appear in the main pool. In order for this to work we * need to pass around the encryption parameters so they can be used * to write data to the L2ARC. This struct is only defined in the * arc_buf_hdr_t if the L1 header is defined and has the ARC_FLAG_ENCRYPTED * flag set. */ typedef struct arc_buf_hdr_crypt { abd_t *b_rabd; /* raw encrypted data */ dmu_object_type_t b_ot; /* object type */ uint32_t b_ebufcnt; /* count of encrypted buffers */ /* dsobj for looking up encryption key for l2arc encryption */ uint64_t b_dsobj; /* encryption parameters */ uint8_t b_salt[ZIO_DATA_SALT_LEN]; uint8_t b_iv[ZIO_DATA_IV_LEN]; /* * Technically this could be removed since we will always be able to * get the mac from the bp when we need it. However, it is inconvenient * for callers of arc code to have to pass a bp in all the time. This * also allows us to assert that L2ARC data is properly encrypted to * match the data in the main storage pool. */ uint8_t b_mac[ZIO_DATA_MAC_LEN]; } arc_buf_hdr_crypt_t; typedef struct l2arc_dev { vdev_t *l2ad_vdev; /* vdev */ spa_t *l2ad_spa; /* spa */ uint64_t l2ad_hand; /* next write location */ uint64_t l2ad_start; /* first addr on device */ uint64_t l2ad_end; /* last addr on device */ boolean_t l2ad_first; /* first sweep through */ boolean_t l2ad_writing; /* currently writing */ kmutex_t l2ad_mtx; /* lock for buffer list */ list_t l2ad_buflist; /* buffer list */ list_node_t l2ad_node; /* device list node */ zfs_refcount_t l2ad_alloc; /* allocated bytes */ } l2arc_dev_t; typedef struct l2arc_buf_hdr { /* protected by arc_buf_hdr mutex */ l2arc_dev_t *b_dev; /* L2ARC device */ uint64_t b_daddr; /* disk address, offset byte */ uint32_t b_hits; list_node_t b_l2node; } l2arc_buf_hdr_t; typedef struct l2arc_write_callback { l2arc_dev_t *l2wcb_dev; /* device info */ arc_buf_hdr_t *l2wcb_head; /* head of write buflist */ } l2arc_write_callback_t; struct arc_buf_hdr { /* protected by hash lock */ dva_t b_dva; uint64_t b_birth; arc_buf_contents_t b_type; arc_buf_hdr_t *b_hash_next; arc_flags_t b_flags; /* * This field stores the size of the data buffer after * compression, and is set in the arc's zio completion handlers. * It is in units of SPA_MINBLOCKSIZE (e.g. 1 == 512 bytes). * * While the block pointers can store up to 32MB in their psize * field, we can only store up to 32MB minus 512B. This is due * to the bp using a bias of 1, whereas we use a bias of 0 (i.e. * a field of zeros represents 512B in the bp). We can't use a * bias of 1 since we need to reserve a psize of zero, here, to * represent holes and embedded blocks. * * This isn't a problem in practice, since the maximum size of a * buffer is limited to 16MB, so we never need to store 32MB in * this field. Even in the upstream illumos code base, the * maximum size of a buffer is limited to 16MB. */ uint16_t b_psize; /* * This field stores the size of the data buffer before * compression, and cannot change once set. It is in units * of SPA_MINBLOCKSIZE (e.g. 2 == 1024 bytes) */ uint16_t b_lsize; /* immutable */ uint64_t b_spa; /* immutable */ /* L2ARC fields. Undefined when not in L2ARC. */ l2arc_buf_hdr_t b_l2hdr; /* L1ARC fields. Undefined when in l2arc_only state */ l1arc_buf_hdr_t b_l1hdr; /* * Encryption parameters. Defined only when ARC_FLAG_ENCRYPTED * is set and the L1 header exists. */ arc_buf_hdr_crypt_t b_crypt_hdr; }; #ifdef __cplusplus } #endif #endif /* _SYS_ARC_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/lua0000644000000000000000000000013213612143046016353 xustar000000000000000030 mtime=1579730470.034443738 30 atime=1579730489.077055163 30 ctime=1579730470.034443738 zfs-0.8.3/include/sys/lua/0000775016037001603700000000000013612143046016434 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/sys/lua/PaxHeaders.151519/lualib.h0000644000000000000000000000007413607166132020063 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.027443514 zfs-0.8.3/include/sys/lua/lualib.h0000644016037001603700000000217113607166132020061 0ustar00hutter2hutter200000000000000/* BEGIN CSTYLED */ /* ** $Id: lualib.h,v 1.43.1.1 2013/04/12 18:48:47 roberto Exp $ ** Lua standard libraries ** See Copyright Notice in lua.h */ #ifndef lualib_h #define lualib_h #include LUAMOD_API int (luaopen_base) (lua_State *L); #define LUA_COLIBNAME "coroutine" LUAMOD_API int (luaopen_coroutine) (lua_State *L); #define LUA_TABLIBNAME "table" LUAMOD_API int (luaopen_table) (lua_State *L); #define LUA_IOLIBNAME "io" LUAMOD_API int (luaopen_io) (lua_State *L); #define LUA_OSLIBNAME "os" LUAMOD_API int (luaopen_os) (lua_State *L); #define LUA_STRLIBNAME "string" LUAMOD_API int (luaopen_string) (lua_State *L); #define LUA_BITLIBNAME "bit32" LUAMOD_API int (luaopen_bit32) (lua_State *L); #define LUA_MATHLIBNAME "math" LUAMOD_API int (luaopen_math) (lua_State *L); #define LUA_DBLIBNAME "debug" LUAMOD_API int (luaopen_debug) (lua_State *L); #define LUA_LOADLIBNAME "package" LUAMOD_API int (luaopen_package) (lua_State *L); /* open all previous libraries */ LUALIB_API void (luaL_openlibs) (lua_State *L); #if !defined(lua_assert) #define lua_assert(x) ((void)0) #endif #endif /* END CSTYLED */ zfs-0.8.3/include/sys/lua/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132020476 xustar000000000000000030 atime=1579730429.318136449 30 ctime=1579730470.032443674 zfs-0.8.3/include/sys/lua/Makefile.am0000644016037001603700000000072713607166132020501 0ustar00hutter2hutter200000000000000COMMON_H = \ $(top_srcdir)/include/sys/lua/lua.h \ $(top_srcdir)/include/sys/lua/luaconf.h \ $(top_srcdir)/include/sys/lua/lualib.h \ $(top_srcdir)/include/sys/lua/lauxlib.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs/sys/lua libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/lua kernel_HEADERS = $(COMMON_H) $(KERNEL_H) endif zfs-0.8.3/include/sys/lua/PaxHeaders.151519/lauxlib.h0000644000000000000000000000007413607166132020253 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.029443578 zfs-0.8.3/include/sys/lua/lauxlib.h0000644016037001603700000001432413607166132020254 0ustar00hutter2hutter200000000000000/* BEGIN CSTYLED */ /* ** $Id: lauxlib.h,v 1.120.1.1 2013/04/12 18:48:47 roberto Exp $ ** Auxiliary functions for building Lua libraries ** See Copyright Notice in lua.h */ #ifndef lauxlib_h #define lauxlib_h #include /* extra error code for `luaL_load' */ #define LUA_ERRFILE (LUA_ERRERR+1) typedef struct luaL_Reg { const char *name; lua_CFunction func; } luaL_Reg; LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver); #define luaL_checkversion(L) luaL_checkversion_(L, LUA_VERSION_NUM) LUALIB_API int (luaL_getmetafield) (lua_State *L, int obj, const char *e); LUALIB_API int (luaL_callmeta) (lua_State *L, int obj, const char *e); LUALIB_API const char *(luaL_tolstring) (lua_State *L, int idx, size_t *len); LUALIB_API int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg); LUALIB_API const char *(luaL_checklstring) (lua_State *L, int numArg, size_t *l); LUALIB_API const char *(luaL_optlstring) (lua_State *L, int numArg, const char *def, size_t *l); LUALIB_API lua_Number (luaL_checknumber) (lua_State *L, int numArg); LUALIB_API lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def); LUALIB_API lua_Integer (luaL_checkinteger) (lua_State *L, int numArg); LUALIB_API lua_Integer (luaL_optinteger) (lua_State *L, int nArg, lua_Integer def); LUALIB_API lua_Unsigned (luaL_checkunsigned) (lua_State *L, int numArg); LUALIB_API lua_Unsigned (luaL_optunsigned) (lua_State *L, int numArg, lua_Unsigned def); LUALIB_API void (luaL_checkstack) (lua_State *L, int sz, const char *msg); LUALIB_API void (luaL_checktype) (lua_State *L, int narg, int t); LUALIB_API void (luaL_checkany) (lua_State *L, int narg); LUALIB_API int (luaL_newmetatable) (lua_State *L, const char *tname); LUALIB_API void (luaL_setmetatable) (lua_State *L, const char *tname); LUALIB_API void *(luaL_testudata) (lua_State *L, int ud, const char *tname); LUALIB_API void *(luaL_checkudata) (lua_State *L, int ud, const char *tname); LUALIB_API void (luaL_where) (lua_State *L, int lvl); LUALIB_API int (luaL_error) (lua_State *L, const char *fmt, ...); LUALIB_API int (luaL_checkoption) (lua_State *L, int narg, const char *def, const char *const lst[]); /* pre-defined references */ #define LUA_NOREF (-2) #define LUA_REFNIL (-1) LUALIB_API int (luaL_ref) (lua_State *L, int t); LUALIB_API void (luaL_unref) (lua_State *L, int t, int ref); LUALIB_API int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz, const char *name, const char *mode); LUALIB_API int (luaL_loadstring) (lua_State *L, const char *s); LUALIB_API int (luaL_len) (lua_State *L, int idx); LUALIB_API const char *(luaL_gsub) (lua_State *L, const char *s, const char *p, const char *r); LUALIB_API void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup); LUALIB_API int (luaL_getsubtable) (lua_State *L, int idx, const char *fname); LUALIB_API void (luaL_traceback) (lua_State *L, lua_State *L1, const char *msg, int level); LUALIB_API void (luaL_requiref) (lua_State *L, const char *modname, lua_CFunction openf, int glb); /* ** =============================================================== ** some useful macros ** =============================================================== */ #define luaL_newlibtable(L,l) \ lua_createtable(L, 0, sizeof(l)/sizeof((l)[0]) - 1) #define luaL_newlib(L,l) (luaL_newlibtable(L,l), luaL_setfuncs(L,l,0)) #define luaL_argcheck(L, cond,numarg,extramsg) \ ((void)((cond) || luaL_argerror(L, (numarg), (extramsg)))) #define luaL_checkstring(L,n) (luaL_checklstring(L, (n), NULL)) #define luaL_optstring(L,n,d) (luaL_optlstring(L, (n), (d), NULL)) #define luaL_checkint(L,n) ((int)luaL_checkinteger(L, (n))) #define luaL_optint(L,n,d) ((int)luaL_optinteger(L, (n), (d))) #define luaL_checklong(L,n) ((long)luaL_checkinteger(L, (n))) #define luaL_optlong(L,n,d) ((long)luaL_optinteger(L, (n), (d))) #define luaL_typename(L,i) lua_typename(L, lua_type(L,(i))) #define luaL_dofile(L, fn) \ (luaL_loadfile(L, fn) || lua_pcall(L, 0, LUA_MULTRET, 0)) #define luaL_dostring(L, s) \ (luaL_loadstring(L, s) || lua_pcall(L, 0, LUA_MULTRET, 0)) #define luaL_getmetatable(L,n) (lua_getfield(L, LUA_REGISTRYINDEX, (n))) #define luaL_opt(L,f,n,d) (lua_isnoneornil(L,(n)) ? (d) : f(L,(n))) #define luaL_loadbuffer(L,s,sz,n) luaL_loadbufferx(L,s,sz,n,NULL) /* ** {====================================================== ** Generic Buffer manipulation ** ======================================================= */ typedef struct luaL_Buffer { char *b; /* buffer address */ size_t size; /* buffer size */ size_t n; /* number of characters in buffer */ lua_State *L; char initb[LUAL_BUFFERSIZE]; /* initial buffer */ } luaL_Buffer; #define luaL_addchar(B,c) \ ((void)((B)->n < (B)->size || luaL_prepbuffsize((B), 1)), \ ((B)->b[(B)->n++] = (c))) #define luaL_addsize(B,s) ((B)->n += (s)) LUALIB_API void (luaL_buffinit) (lua_State *L, luaL_Buffer *B); LUALIB_API char *(luaL_prepbuffsize) (luaL_Buffer *B, size_t sz); LUALIB_API void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l); LUALIB_API void (luaL_addstring) (luaL_Buffer *B, const char *s); LUALIB_API void (luaL_addvalue) (luaL_Buffer *B); LUALIB_API void (luaL_pushresult) (luaL_Buffer *B); LUALIB_API void (luaL_pushresultsize) (luaL_Buffer *B, size_t sz); LUALIB_API char *(luaL_buffinitsize) (lua_State *L, luaL_Buffer *B, size_t sz); #define luaL_prepbuffer(B) luaL_prepbuffsize(B, LUAL_BUFFERSIZE) /* }====================================================== */ /* compatibility with old module system */ #if defined(LUA_COMPAT_MODULE) LUALIB_API void (luaL_pushmodule) (lua_State *L, const char *modname, int sizehint); LUALIB_API void (luaL_openlib) (lua_State *L, const char *libname, const luaL_Reg *l, int nup); #define luaL_register(L,n,l) (luaL_openlib(L,(n),(l),0)) #endif #endif /* END CSTYLED */ zfs-0.8.3/include/sys/lua/PaxHeaders.151519/lua.h0000644000000000000000000000007413607166132017374 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.023443383 zfs-0.8.3/include/sys/lua/lua.h0000644016037001603700000003250513607166132017376 0ustar00hutter2hutter200000000000000/* BEGIN CSTYLED */ /* ** $Id: lua.h,v 1.285.1.4 2015/02/21 14:04:50 roberto Exp $ ** Lua - A Scripting Language ** Lua.org, PUC-Rio, Brazil (http://www.lua.org) ** See Copyright Notice at the end of this file */ #ifndef lua_h #define lua_h #include #include #define LUA_VERSION_MAJOR "5" #define LUA_VERSION_MINOR "2" #define LUA_VERSION_NUM 502 #define LUA_VERSION_RELEASE "4" #define LUA_VERSION "Lua " LUA_VERSION_MAJOR "." LUA_VERSION_MINOR #define LUA_RELEASE LUA_VERSION "." LUA_VERSION_RELEASE #define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2015 Lua.org, PUC-Rio" #define LUA_AUTHORS "R. Ierusalimschy, L. H. de Figueiredo, W. Celes" /* mark for precompiled code ('Lua') */ #define LUA_SIGNATURE "\033Lua" /* option for multiple returns in 'lua_pcall' and 'lua_call' */ #define LUA_MULTRET (-1) /* ** pseudo-indices */ #define LUA_REGISTRYINDEX LUAI_FIRSTPSEUDOIDX #define lua_upvalueindex(i) (LUA_REGISTRYINDEX - (i)) /* thread status */ #define LUA_OK 0 #define LUA_YIELD 1 #define LUA_ERRRUN 2 #define LUA_ERRSYNTAX 3 #define LUA_ERRMEM 4 #define LUA_ERRGCMM 5 #define LUA_ERRERR 6 typedef struct lua_State lua_State; typedef int (*lua_CFunction) (lua_State *L); /* ** functions that read/write blocks when loading/dumping Lua chunks */ typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz); typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud); /* ** prototype for memory-allocation functions */ typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize); /* ** basic types */ #define LUA_TNONE (-1) #define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define LUA_TLIGHTUSERDATA 2 #define LUA_TNUMBER 3 #define LUA_TSTRING 4 #define LUA_TTABLE 5 #define LUA_TFUNCTION 6 #define LUA_TUSERDATA 7 #define LUA_TTHREAD 8 #define LUA_NUMTAGS 9 /* minimum Lua stack available to a C function */ #define LUA_MINSTACK 20 /* predefined values in the registry */ #define LUA_RIDX_MAINTHREAD 1 #define LUA_RIDX_GLOBALS 2 #define LUA_RIDX_LAST LUA_RIDX_GLOBALS /* type of numbers in Lua */ typedef LUA_NUMBER lua_Number; /* type for integer functions */ typedef LUA_INTEGER lua_Integer; /* unsigned integer type */ typedef LUA_UNSIGNED lua_Unsigned; /* ** generic extra include file */ #if defined(LUA_USER_H) #include LUA_USER_H #endif /* ** RCS ident string */ extern const char lua_ident[]; /* ** state manipulation */ LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud); LUA_API void (lua_close) (lua_State *L); LUA_API lua_State *(lua_newthread) (lua_State *L); LUA_API lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf); LUA_API const lua_Number *(lua_version) (lua_State *L); /* ** basic stack manipulation */ LUA_API int (lua_absindex) (lua_State *L, int idx); LUA_API int (lua_gettop) (lua_State *L); LUA_API void (lua_settop) (lua_State *L, int idx); LUA_API void (lua_pushvalue) (lua_State *L, int idx); LUA_API void (lua_remove) (lua_State *L, int idx); LUA_API void (lua_insert) (lua_State *L, int idx); LUA_API void (lua_replace) (lua_State *L, int idx); LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx); LUA_API int (lua_checkstack) (lua_State *L, int sz); LUA_API void (lua_xmove) (lua_State *from, lua_State *to, int n); /* ** access functions (stack -> C) */ LUA_API int (lua_isnumber) (lua_State *L, int idx); LUA_API int (lua_isstring) (lua_State *L, int idx); LUA_API int (lua_iscfunction) (lua_State *L, int idx); LUA_API int (lua_isuserdata) (lua_State *L, int idx); LUA_API int (lua_type) (lua_State *L, int idx); LUA_API const char *(lua_typename) (lua_State *L, int tp); LUA_API lua_Number (lua_tonumberx) (lua_State *L, int idx, int *isnum); LUA_API lua_Integer (lua_tointegerx) (lua_State *L, int idx, int *isnum); LUA_API lua_Unsigned (lua_tounsignedx) (lua_State *L, int idx, int *isnum); LUA_API int (lua_toboolean) (lua_State *L, int idx); LUA_API const char *(lua_tolstring) (lua_State *L, int idx, size_t *len); LUA_API size_t (lua_rawlen) (lua_State *L, int idx); LUA_API lua_CFunction (lua_tocfunction) (lua_State *L, int idx); LUA_API void *(lua_touserdata) (lua_State *L, int idx); LUA_API lua_State *(lua_tothread) (lua_State *L, int idx); LUA_API const void *(lua_topointer) (lua_State *L, int idx); /* ** Comparison and arithmetic functions */ #define LUA_OPADD 0 /* ORDER TM */ #define LUA_OPSUB 1 #define LUA_OPMUL 2 #define LUA_OPDIV 3 #define LUA_OPMOD 4 #define LUA_OPPOW 5 #define LUA_OPUNM 6 LUA_API void (lua_arith) (lua_State *L, int op); #define LUA_OPEQ 0 #define LUA_OPLT 1 #define LUA_OPLE 2 LUA_API int (lua_rawequal) (lua_State *L, int idx1, int idx2); LUA_API int (lua_compare) (lua_State *L, int idx1, int idx2, int op); /* ** push functions (C -> stack) */ LUA_API void (lua_pushnil) (lua_State *L); LUA_API void (lua_pushnumber) (lua_State *L, lua_Number n); LUA_API void (lua_pushinteger) (lua_State *L, lua_Integer n); LUA_API void (lua_pushunsigned) (lua_State *L, lua_Unsigned n); LUA_API const char *(lua_pushlstring) (lua_State *L, const char *s, size_t l); LUA_API const char *(lua_pushstring) (lua_State *L, const char *s); LUA_API const char *(lua_pushvfstring) (lua_State *L, const char *fmt, va_list argp); LUA_API const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...); LUA_API void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n); LUA_API void (lua_pushboolean) (lua_State *L, int b); LUA_API void (lua_pushlightuserdata) (lua_State *L, void *p); LUA_API int (lua_pushthread) (lua_State *L); /* ** get functions (Lua -> stack) */ LUA_API void (lua_getglobal) (lua_State *L, const char *var); LUA_API void (lua_gettable) (lua_State *L, int idx); LUA_API void (lua_getfield) (lua_State *L, int idx, const char *k); LUA_API void (lua_rawget) (lua_State *L, int idx); LUA_API void (lua_rawgeti) (lua_State *L, int idx, int n); LUA_API void (lua_rawgetp) (lua_State *L, int idx, const void *p); LUA_API void (lua_createtable) (lua_State *L, int narr, int nrec); LUA_API void *(lua_newuserdata) (lua_State *L, size_t sz); LUA_API int (lua_getmetatable) (lua_State *L, int objindex); LUA_API void (lua_getuservalue) (lua_State *L, int idx); /* ** set functions (stack -> Lua) */ LUA_API void (lua_setglobal) (lua_State *L, const char *var); LUA_API void (lua_settable) (lua_State *L, int idx); LUA_API void (lua_setfield) (lua_State *L, int idx, const char *k); LUA_API void (lua_rawset) (lua_State *L, int idx); LUA_API void (lua_rawseti) (lua_State *L, int idx, int n); LUA_API void (lua_rawsetp) (lua_State *L, int idx, const void *p); LUA_API int (lua_setmetatable) (lua_State *L, int objindex); LUA_API void (lua_setuservalue) (lua_State *L, int idx); /* ** 'load' and 'call' functions (load and run Lua code) */ LUA_API void (lua_callk) (lua_State *L, int nargs, int nresults, int ctx, lua_CFunction k); #define lua_call(L,n,r) lua_callk(L, (n), (r), 0, NULL) LUA_API int (lua_getctx) (lua_State *L, int *ctx); LUA_API int (lua_pcallk) (lua_State *L, int nargs, int nresults, int errfunc, int ctx, lua_CFunction k); #define lua_pcall(L,n,r,f) lua_pcallk(L, (n), (r), (f), 0, NULL) LUA_API int (lua_load) (lua_State *L, lua_Reader reader, void *dt, const char *chunkname, const char *mode); LUA_API int (lua_dump) (lua_State *L, lua_Writer writer, void *data); /* ** coroutine functions */ LUA_API int (lua_yieldk) (lua_State *L, int nresults, int ctx, lua_CFunction k); #define lua_yield(L,n) lua_yieldk(L, (n), 0, NULL) LUA_API int (lua_resume) (lua_State *L, lua_State *from, int narg); LUA_API int (lua_status) (lua_State *L); /* ** garbage-collection function and options */ #define LUA_GCSTOP 0 #define LUA_GCRESTART 1 #define LUA_GCCOLLECT 2 #define LUA_GCCOUNT 3 #define LUA_GCCOUNTB 4 #define LUA_GCSTEP 5 #define LUA_GCSETPAUSE 6 #define LUA_GCSETSTEPMUL 7 #define LUA_GCSETMAJORINC 8 #define LUA_GCISRUNNING 9 #define LUA_GCGEN 10 #define LUA_GCINC 11 LUA_API int (lua_gc) (lua_State *L, int what, int data); /* ** miscellaneous functions */ LUA_API int (lua_error) (lua_State *L); LUA_API int (lua_next) (lua_State *L, int idx); LUA_API void (lua_concat) (lua_State *L, int n); LUA_API void (lua_len) (lua_State *L, int idx); LUA_API lua_Alloc (lua_getallocf) (lua_State *L, void **ud); LUA_API void (lua_setallocf) (lua_State *L, lua_Alloc f, void *ud); /* ** =============================================================== ** some useful macros ** =============================================================== */ #define lua_tonumber(L,i) lua_tonumberx(L,i,NULL) #define lua_tointeger(L,i) lua_tointegerx(L,i,NULL) #define lua_tounsigned(L,i) lua_tounsignedx(L,i,NULL) #define lua_pop(L,n) lua_settop(L, -(n)-1) #define lua_newtable(L) lua_createtable(L, 0, 0) #define lua_register(L,n,f) (lua_pushcfunction(L, (f)), lua_setglobal(L, (n))) #define lua_pushcfunction(L,f) lua_pushcclosure(L, (f), 0) #define lua_isfunction(L,n) (lua_type(L, (n)) == LUA_TFUNCTION) #define lua_istable(L,n) (lua_type(L, (n)) == LUA_TTABLE) #define lua_islightuserdata(L,n) (lua_type(L, (n)) == LUA_TLIGHTUSERDATA) #define lua_isnil(L,n) (lua_type(L, (n)) == LUA_TNIL) #define lua_isboolean(L,n) (lua_type(L, (n)) == LUA_TBOOLEAN) #define lua_isthread(L,n) (lua_type(L, (n)) == LUA_TTHREAD) #define lua_isnone(L,n) (lua_type(L, (n)) == LUA_TNONE) #define lua_isnoneornil(L, n) (lua_type(L, (n)) <= 0) #define lua_pushliteral(L, s) \ lua_pushlstring(L, "" s, (sizeof(s)/sizeof(char))-1) #define lua_pushglobaltable(L) \ lua_rawgeti(L, LUA_REGISTRYINDEX, LUA_RIDX_GLOBALS) #define lua_tostring(L,i) lua_tolstring(L, (i), NULL) /* ** {====================================================================== ** Debug API ** ======================================================================= */ /* ** Event codes */ #define LUA_HOOKCALL 0 #define LUA_HOOKRET 1 #define LUA_HOOKLINE 2 #define LUA_HOOKCOUNT 3 #define LUA_HOOKTAILCALL 4 /* ** Event masks */ #define LUA_MASKCALL (1 << LUA_HOOKCALL) #define LUA_MASKRET (1 << LUA_HOOKRET) #define LUA_MASKLINE (1 << LUA_HOOKLINE) #define LUA_MASKCOUNT (1 << LUA_HOOKCOUNT) typedef struct lua_Debug lua_Debug; /* activation record */ /* Functions to be called by the debugger in specific events */ typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar); LUA_API int (lua_getstack) (lua_State *L, int level, lua_Debug *ar); LUA_API int (lua_getinfo) (lua_State *L, const char *what, lua_Debug *ar); LUA_API const char *(lua_getlocal) (lua_State *L, const lua_Debug *ar, int n); LUA_API const char *(lua_setlocal) (lua_State *L, const lua_Debug *ar, int n); LUA_API const char *(lua_getupvalue) (lua_State *L, int funcindex, int n); LUA_API const char *(lua_setupvalue) (lua_State *L, int funcindex, int n); LUA_API void *(lua_upvalueid) (lua_State *L, int fidx, int n); LUA_API void (lua_upvaluejoin) (lua_State *L, int fidx1, int n1, int fidx2, int n2); LUA_API int (lua_sethook) (lua_State *L, lua_Hook func, int mask, int count); LUA_API lua_Hook (lua_gethook) (lua_State *L); LUA_API int (lua_gethookmask) (lua_State *L); LUA_API int (lua_gethookcount) (lua_State *L); struct lua_Debug { int event; const char *name; /* (n) */ const char *namewhat; /* (n) 'global', 'local', 'field', 'method' */ const char *what; /* (S) 'Lua', 'C', 'main', 'tail' */ const char *source; /* (S) */ int currentline; /* (l) */ int linedefined; /* (S) */ int lastlinedefined; /* (S) */ unsigned char nups; /* (u) number of upvalues */ unsigned char nparams;/* (u) number of parameters */ char isvararg; /* (u) */ char istailcall; /* (t) */ char short_src[LUA_IDSIZE]; /* (S) */ /* private part */ struct CallInfo *i_ci; /* active function */ }; /* }====================================================================== */ /****************************************************************************** * Copyright (C) 1994-2015 Lua.org, PUC-Rio. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to * permit persons to whom the Software is furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ******************************************************************************/ #endif /* END CSTYLED */ zfs-0.8.3/include/sys/lua/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775020505 xustar000000000000000030 mtime=1579730429.360137799 30 atime=1579730453.067898981 30 ctime=1579730470.034443738 zfs-0.8.3/include/sys/lua/Makefile.in0000664016037001603700000006451313612142775020522 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/sys/lua DIST_COMMON = $(am__kernel_HEADERS_DIST) $(am__libzfs_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/lua/lua.h \ $(top_srcdir)/include/sys/lua/luaconf.h \ $(top_srcdir)/include/sys/lua/lualib.h \ $(top_srcdir)/include/sys/lua/lauxlib.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/lua/lua.h \ $(top_srcdir)/include/sys/lua/luaconf.h \ $(top_srcdir)/include/sys/lua/lualib.h \ $(top_srcdir)/include/sys/lua/lauxlib.h HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ COMMON_H = \ $(top_srcdir)/include/sys/lua/lua.h \ $(top_srcdir)/include/sys/lua/luaconf.h \ $(top_srcdir)/include/sys/lua/lualib.h \ $(top_srcdir)/include/sys/lua/lauxlib.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/lua @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/lua @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/lua/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/sys/lua/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/sys/lua/PaxHeaders.151519/luaconf.h0000644000000000000000000000007413612141513020232 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730470.025443448 zfs-0.8.3/include/sys/lua/luaconf.h0000644016037001603700000003632213612141513020235 0ustar00hutter2hutter200000000000000/* BEGIN CSTYLED */ /* ** $Id: luaconf.h,v 1.176.1.2 2013/11/21 17:26:16 roberto Exp $ ** Configuration file for Lua ** See Copyright Notice in lua.h */ #ifndef lconfig_h #define lconfig_h #include extern ssize_t lcompat_sprintf(char *, size_t size, const char *, ...); extern int64_t lcompat_strtoll(const char *, char **); extern int64_t lcompat_pow(int64_t, int64_t); /* ** ================================================================== ** Search for "@@" to find all configurable definitions. ** =================================================================== */ /* @@ LUA_ANSI controls the use of non-ansi features. ** CHANGE it (define it) if you want Lua to avoid the use of any ** non-ansi feature or library. */ #if !defined(LUA_ANSI) && defined(__STRICT_ANSI__) #define LUA_ANSI #endif #if !defined(LUA_ANSI) && defined(_WIN32) && !defined(_WIN32_WCE) #define LUA_WIN /* enable goodies for regular Windows platforms */ #endif #if defined(LUA_WIN) #define LUA_DL_DLL #define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */ #endif #if defined(LUA_USE_LINUX) #define LUA_USE_POSIX #define LUA_USE_DLOPEN /* needs an extra library: -ldl */ #define LUA_USE_READLINE /* needs some extra libraries */ #define LUA_USE_STRTODHEX /* assume 'strtod' handles hex formats */ #define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */ #define LUA_USE_LONGLONG /* assume support for long long */ #endif #if defined(LUA_USE_MACOSX) #define LUA_USE_POSIX #define LUA_USE_DLOPEN /* does not need -ldl */ #define LUA_USE_READLINE /* needs an extra library: -lreadline */ #define LUA_USE_STRTODHEX /* assume 'strtod' handles hex formats */ #define LUA_USE_AFORMAT /* assume 'printf' handles 'aA' specifiers */ #define LUA_USE_LONGLONG /* assume support for long long */ #endif /* @@ LUA_USE_POSIX includes all functionality listed as X/Open System @* Interfaces Extension (XSI). ** CHANGE it (define it) if your system is XSI compatible. */ #if defined(LUA_USE_POSIX) #define LUA_USE_MKSTEMP #define LUA_USE_ISATTY #define LUA_USE_POPEN #define LUA_USE_ULONGJMP #define LUA_USE_GMTIME_R #endif /* @@ LUA_PATH_DEFAULT is the default path that Lua uses to look for @* Lua libraries. @@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for @* C libraries. ** CHANGE them if your machine has a non-conventional directory ** hierarchy or if you want to install your libraries in ** non-conventional directories. */ #if defined(_WIN32) /* { */ /* ** In Windows, any exclamation mark ('!') in the path is replaced by the ** path of the directory of the executable file of the current process. */ #define LUA_LDIR "!\\lua\\" #define LUA_CDIR "!\\" #define LUA_PATH_DEFAULT \ LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" ".\\?.lua" #define LUA_CPATH_DEFAULT \ LUA_CDIR"?.dll;" LUA_CDIR"loadall.dll;" ".\\?.dll" #else /* }{ */ #define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR "/" #define LUA_ROOT "/usr/local/" #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR #define LUA_PATH_DEFAULT \ LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" "./?.lua" #define LUA_CPATH_DEFAULT \ LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so" #endif /* } */ /* @@ LUA_DIRSEP is the directory separator (for submodules). ** CHANGE it if your machine does not use "/" as the directory separator ** and is not Windows. (On Windows Lua automatically uses "\".) */ #if defined(_WIN32) #define LUA_DIRSEP "\\" #else #define LUA_DIRSEP "/" #endif /* @@ LUA_ENV is the name of the variable that holds the current @@ environment, used to access global names. ** CHANGE it if you do not like this name. */ #define LUA_ENV "_ENV" /* @@ LUA_API is a mark for all core API functions. @@ LUALIB_API is a mark for all auxiliary library functions. @@ LUAMOD_API is a mark for all standard library opening functions. ** CHANGE them if you need to define those functions in some special way. ** For instance, if you want to create one Windows DLL with the core and ** the libraries, you may want to use the following definition (define ** LUA_BUILD_AS_DLL to get it). */ #if defined(LUA_BUILD_AS_DLL) /* { */ #if defined(LUA_CORE) || defined(LUA_LIB) /* { */ #define LUA_API __declspec(dllexport) #else /* }{ */ #define LUA_API __declspec(dllimport) #endif /* } */ #else /* }{ */ #define LUA_API extern #endif /* } */ /* more often than not the libs go together with the core */ #define LUALIB_API LUA_API #define LUAMOD_API LUALIB_API /* @@ LUAI_FUNC is a mark for all extern functions that are not to be @* exported to outside modules. @@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables @* that are not to be exported to outside modules (LUAI_DDEF for @* definitions and LUAI_DDEC for declarations). ** CHANGE them if you need to mark them in some special way. Elf/gcc ** (versions 3.2 and later) mark them as "hidden" to optimize access ** when Lua is compiled as a shared library. Not all elf targets support ** this attribute. Unfortunately, gcc does not offer a way to check ** whether the target offers that support, and those without support ** give a warning about it. To avoid these warnings, change to the ** default definition. */ #if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \ defined(__ELF__) /* { */ #define LUAI_FUNC __attribute__((visibility("hidden"))) extern #define LUAI_DDEC LUAI_FUNC #define LUAI_DDEF /* empty */ #else /* }{ */ #define LUAI_FUNC extern #define LUAI_DDEC extern #define LUAI_DDEF /* empty */ #endif /* } */ /* @@ LUA_QL describes how error messages quote program elements. ** CHANGE it if you want a different appearance. */ #define LUA_QL(x) "'" x "'" #define LUA_QS LUA_QL("%s") /* @@ LUA_IDSIZE gives the maximum size for the description of the source @* of a function in debug information. ** CHANGE it if you want a different size. */ #define LUA_IDSIZE 60 /* @@ luai_writestringerror defines how to print error messages. ** (A format string with one argument is enough for Lua...) */ #ifdef _KERNEL #define luai_writestringerror(s,p) \ (zfs_dbgmsg((s), (p))) #else #define luai_writestringerror(s,p) \ (fprintf(stderr, (s), (p)), fflush(stderr)) #endif /* @@ LUAI_MAXSHORTLEN is the maximum length for short strings, that is, ** strings that are internalized. (Cannot be smaller than reserved words ** or tags for metamethods, as these strings must be internalized; ** #("function") = 8, #("__newindex") = 10.) */ #define LUAI_MAXSHORTLEN 40 /* ** {================================================================== ** Compatibility with previous versions ** =================================================================== */ /* @@ LUA_COMPAT_ALL controls all compatibility options. ** You can define it to get all options, or change specific options ** to fit your specific needs. */ #if defined(LUA_COMPAT_ALL) /* { */ /* @@ LUA_COMPAT_UNPACK controls the presence of global 'unpack'. ** You can replace it with 'table.unpack'. */ #define LUA_COMPAT_UNPACK /* @@ LUA_COMPAT_LOADERS controls the presence of table 'package.loaders'. ** You can replace it with 'package.searchers'. */ #define LUA_COMPAT_LOADERS /* @@ macro 'lua_cpcall' emulates deprecated function lua_cpcall. ** You can call your C function directly (with light C functions). */ #define lua_cpcall(L,f,u) \ (lua_pushcfunction(L, (f)), \ lua_pushlightuserdata(L,(u)), \ lua_pcall(L,1,0,0)) /* @@ LUA_COMPAT_LOG10 defines the function 'log10' in the math library. ** You can rewrite 'log10(x)' as 'log(x, 10)'. */ #define LUA_COMPAT_LOG10 /* @@ LUA_COMPAT_LOADSTRING defines the function 'loadstring' in the base ** library. You can rewrite 'loadstring(s)' as 'load(s)'. */ #define LUA_COMPAT_LOADSTRING /* @@ LUA_COMPAT_MAXN defines the function 'maxn' in the table library. */ #define LUA_COMPAT_MAXN /* @@ The following macros supply trivial compatibility for some ** changes in the API. The macros themselves document how to ** change your code to avoid using them. */ #define lua_strlen(L,i) lua_rawlen(L, (i)) #define lua_objlen(L,i) lua_rawlen(L, (i)) #define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ) #define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT) /* @@ LUA_COMPAT_MODULE controls compatibility with previous ** module functions 'module' (Lua) and 'luaL_register' (C). */ #define LUA_COMPAT_MODULE #endif /* } */ /* }================================================================== */ #undef INT_MAX #define INT_MAX 2147483647L /* @@ LUAI_BITSINT defines the number of bits in an int. ** CHANGE here if Lua cannot automatically detect the number of bits of ** your machine. Probably you do not need to change this. */ /* avoid overflows in comparison */ #if INT_MAX-20 < 32760 /* { */ #define LUAI_BITSINT 16 #elif INT_MAX > 2147483640L /* }{ */ /* int has at least 32 bits */ #define LUAI_BITSINT 32 #else /* }{ */ #error "you must define LUA_BITSINT with number of bits in an integer" #endif /* } */ /* @@ LUA_INT32 is a signed integer with exactly 32 bits. @@ LUAI_UMEM is an unsigned integer big enough to count the total @* memory used by Lua. @@ LUAI_MEM is a signed integer big enough to count the total memory @* used by Lua. ** CHANGE here if for some weird reason the default definitions are not ** good enough for your machine. Probably you do not need to change ** this. */ #if LUAI_BITSINT >= 32 /* { */ #define LUA_INT32 int #define LUAI_UMEM size_t #define LUAI_MEM ptrdiff_t #else /* }{ */ /* 16-bit ints */ #define LUA_INT32 long #define LUAI_UMEM unsigned long #define LUAI_MEM long #endif /* } */ /* @@ LUAI_MAXSTACK limits the size of the Lua stack. ** CHANGE it if you need a different limit. This limit is arbitrary; ** its only purpose is to stop Lua from consuming unlimited stack ** space (and to reserve some numbers for pseudo-indices). */ #if LUAI_BITSINT >= 32 #define LUAI_MAXSTACK 1000000 #else #define LUAI_MAXSTACK 15000 #endif /* reserve some space for error handling */ #define LUAI_FIRSTPSEUDOIDX (-LUAI_MAXSTACK - 1000) /* @@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system. ** CHANGE it if it uses too much C-stack space. */ #ifdef __linux__ #define LUAL_BUFFERSIZE 512 #else #define LUAL_BUFFERSIZE 1024 #endif /* ** {================================================================== @@ LUA_NUMBER is the type of numbers in Lua. ** CHANGE the following definitions only if you want to build Lua ** with a number type different from double. You may also need to ** change lua_number2int & lua_number2integer. ** =================================================================== */ #define LUA_NUMBER int64_t /* @@ LUAI_UACNUMBER is the result of an 'usual argument conversion' @* over a number. */ #define LUAI_UACNUMBER int64_t /* @@ LUA_NUMBER_SCAN is the format for reading numbers. @@ LUA_NUMBER_FMT is the format for writing numbers. @@ lua_number2str converts a number to a string. @@ LUAI_MAXNUMBER2STR is maximum size of previous conversion. */ #ifndef PRId64 #define PRId64 "lld" #endif #define LUAI_MAXNUMBER2STR 32 /* 16 digits, sign, point, and \0 */ #define LUA_NUMBER_FMT "%" PRId64 #define lua_number2str(s,n) \ lcompat_sprintf((s), LUAI_MAXNUMBER2STR, LUA_NUMBER_FMT, (n)) /* @@ l_mathop allows the addition of an 'l' or 'f' to all math operations */ #define l_mathop(x) (x ## l) /* @@ lua_str2number converts a decimal numeric string to a number. @@ lua_strx2number converts an hexadecimal numeric string to a number. ** In C99, 'strtod' does both conversions. C89, however, has no function ** to convert floating hexadecimal strings to numbers. For these ** systems, you can leave 'lua_strx2number' undefined and Lua will ** provide its own implementation. */ #define lua_str2number(s,p) lcompat_strtoll((s), (p)) #if defined(LUA_USE_STRTODHEX) #define lua_strx2number(s,p) lcompat_strtoll((s), (p)) #endif /* @@ The luai_num* macros define the primitive operations over numbers. */ /* the following operations need the math library */ #if defined(lobject_c) || defined(lvm_c) #define luai_nummod(L,a,b) ((a) % (b)) #define luai_numpow(L,a,b) (lcompat_pow((a),(b))) #endif /* these are quite standard operations */ #if defined(LUA_CORE) #define luai_numadd(L,a,b) ((a)+(b)) #define luai_numsub(L,a,b) ((a)-(b)) #define luai_nummul(L,a,b) ((a)*(b)) #define luai_numdiv(L,a,b) ((a)/(b)) #define luai_numunm(L,a) (-(a)) #define luai_numeq(a,b) ((a)==(b)) #define luai_numlt(L,a,b) ((a)<(b)) #define luai_numle(L,a,b) ((a)<=(b)) #define luai_numisnan(L,a) (!luai_numeq((a), (a))) #endif /* @@ LUA_INTEGER is the integral type used by lua_pushinteger/lua_tointeger. ** CHANGE that if ptrdiff_t is not adequate on your machine. (On most ** machines, ptrdiff_t gives a good choice between int or long.) */ #define LUA_INTEGER ptrdiff_t /* @@ LUA_UNSIGNED is the integral type used by lua_pushunsigned/lua_tounsigned. ** It must have at least 32 bits. */ #define LUA_UNSIGNED uint64_t /* ** Some tricks with doubles */ #if defined(LUA_NUMBER_DOUBLE) && !defined(LUA_ANSI) /* { */ /* ** The next definitions activate some tricks to speed up the ** conversion from doubles to integer types, mainly to LUA_UNSIGNED. ** @@ LUA_MSASMTRICK uses Microsoft assembler to avoid clashes with a ** DirectX idiosyncrasy. ** @@ LUA_IEEE754TRICK uses a trick that should work on any machine ** using IEEE754 with a 32-bit integer type. ** @@ LUA_IEEELL extends the trick to LUA_INTEGER; should only be ** defined when LUA_INTEGER is a 32-bit integer. ** @@ LUA_IEEEENDIAN is the endianness of doubles in your machine ** (0 for little endian, 1 for big endian); if not defined, Lua will ** check it dynamically for LUA_IEEE754TRICK (but not for LUA_NANTRICK). ** @@ LUA_NANTRICK controls the use of a trick to pack all types into ** a single double value, using NaN values to represent non-number ** values. The trick only works on 32-bit machines (ints and pointers ** are 32-bit values) with numbers represented as IEEE 754-2008 doubles ** with conventional endianness (12345678 or 87654321), in CPUs that do ** not produce signaling NaN values (all NaNs are quiet). */ /* Microsoft compiler on a Pentium (32 bit) ? */ #if defined(LUA_WIN) && defined(_MSC_VER) && defined(_M_IX86) /* { */ #define LUA_MSASMTRICK #define LUA_IEEEENDIAN 0 #define LUA_NANTRICK /* pentium 32 bits? */ #elif defined(__i386__) || defined(__i386) || defined(__X86__) /* }{ */ #define LUA_IEEE754TRICK #define LUA_IEEELL #define LUA_IEEEENDIAN 0 #define LUA_NANTRICK /* pentium 64 bits? */ #elif defined(__x86_64) /* }{ */ #define LUA_IEEE754TRICK #define LUA_IEEEENDIAN 0 #elif defined(__POWERPC__) || defined(__ppc__) /* }{ */ #define LUA_IEEE754TRICK #define LUA_IEEEENDIAN 1 #else /* }{ */ /* assume IEEE754 and a 32-bit integer type */ #define LUA_IEEE754TRICK #endif /* } */ #endif /* } */ /* }================================================================== */ /* =================================================================== */ /* ** Local configuration. You can use this space to add your redefinitions ** without modifying the main part of the file. */ #define getlocaledecpoint() ('.') #ifndef abs #define abs(x) (((x) < 0) ? -(x) : (x)) #endif #if !defined(UCHAR_MAX) #define UCHAR_MAX (0xff) #endif #endif /* END CSTYLED */ zfs-0.8.3/include/sys/PaxHeaders.151519/zcp_iter.h0000644000000000000000000000007313607166132017650 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.63243083 zfs-0.8.3/include/sys/zcp_iter.h0000644016037001603700000000211113607166132017641 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2016 by Delphix. All rights reserved. */ #ifndef _SYS_ZCP_LIST_H #define _SYS_ZCP_LIST_H #include #ifdef __cplusplus extern "C" { #endif void zcp_load_list_funcs(lua_State *); #ifdef __cplusplus } #endif #endif /* _SYS_ZCP_LIST_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_zrlock.h0000644000000000000000000000007413607166147020522 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.567428743 zfs-0.8.3/include/sys/trace_zrlock.h0000644016037001603700000000472313607166147020525 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_zrlock #if !defined(_TRACE_ZRLOCK_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_ZRLOCK_H #include #include /* * Generic support for two argument tracepoints of the form: * * DTRACE_PROBE2(..., * zrlock_t *, ..., * uint32_t, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_zrlock_class, TP_PROTO(zrlock_t *zrl, kthread_t *owner, uint32_t n), TP_ARGS(zrl, owner, n), TP_STRUCT__entry( __field(int32_t, refcount) #ifdef ZFS_DEBUG __field(pid_t, owner_pid) __field(const char *, caller) #endif __field(uint32_t, n) ), TP_fast_assign( __entry->refcount = zrl->zr_refcount; #ifdef ZFS_DEBUG __entry->owner_pid = owner ? owner->pid : 0; __entry->caller = zrl->zr_caller ? zrl->zr_caller : "(null)"; #endif __entry->n = n; ), #ifdef ZFS_DEBUG TP_printk("zrl { refcount %d owner_pid %d caller %s } n %u", __entry->refcount, __entry->owner_pid, __entry->caller, __entry->n) #else TP_printk("zrl { refcount %d } n %u", __entry->refcount, __entry->n) #endif ); /* END_CSTYLED */ #define DEFINE_ZRLOCK_EVENT(name) \ DEFINE_EVENT(zfs_zrlock_class, name, \ TP_PROTO(zrlock_t *zrl, kthread_t *owner, uint32_t n), \ TP_ARGS(zrl, owner, n)) DEFINE_ZRLOCK_EVENT(zfs_zrlock__reentry); #endif /* _TRACE_ZRLOCK_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_zrlock #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/spa_checkpoint.h0000644000000000000000000000007413607166132021024 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.416423894 zfs-0.8.3/include/sys/spa_checkpoint.h0000644016037001603700000000267613607166132021034 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2017 by Delphix. All rights reserved. */ #ifndef _SYS_SPA_CHECKPOINT_H #define _SYS_SPA_CHECKPOINT_H #include typedef struct spa_checkpoint_info { uint64_t sci_timestamp; /* when checkpointed uberblock was synced */ uint64_t sci_dspace; /* disk space used by checkpoint in bytes */ } spa_checkpoint_info_t; int spa_checkpoint(const char *); int spa_checkpoint_discard(const char *); boolean_t spa_checkpoint_discard_thread_check(void *, zthr_t *); void spa_checkpoint_discard_thread(void *, zthr_t *); int spa_checkpoint_get_stats(spa_t *, pool_checkpoint_stat_t *); #endif /* _SYS_SPA_CHECKPOINT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/mntent.h0000644000000000000000000000007413607166147017345 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.489426239 zfs-0.8.3/include/sys/mntent.h0000644016037001603700000001201613607166147017342 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. * * Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T * All Rights Reserved */ #ifndef _SYS_MNTENT_H #define _SYS_MNTENT_H #define MNTTYPE_ZFS "zfs" /* ZFS file system */ #define MOUNT_SUCCESS 0x00 /* Success */ #define MOUNT_USAGE 0x01 /* Invalid invocation or permissions */ #define MOUNT_SYSERR 0x02 /* System error (ENOMEM, etc) */ #define MOUNT_SOFTWARE 0x04 /* Internal mount bug */ #define MOUNT_USER 0x08 /* Interrupted by user (EINTR) */ #define MOUNT_FILEIO 0x10 /* Error updating/locking /etc/mtab */ #define MOUNT_FAIL 0x20 /* Mount failed */ #define MOUNT_SOMEOK 0x40 /* At least on mount succeeded */ #define MOUNT_BUSY 0x80 /* Mount failed due to EBUSY */ #define MNTOPT_ASYNC "async" /* all I/O is asynchronous */ #define MNTOPT_ATIME "atime" /* update atime for files */ #define MNTOPT_NOATIME "noatime" /* do not update atime for files */ #define MNTOPT_AUTO "auto" /* automount */ #define MNTOPT_NOAUTO "noauto" /* do not automount */ #define MNTOPT_CONTEXT "context" /* selinux context */ #define MNTOPT_FSCONTEXT "fscontext" /* selinux fscontext */ #define MNTOPT_DEFCONTEXT "defcontext" /* selinux defcontext */ #define MNTOPT_ROOTCONTEXT "rootcontext" /* selinux rootcontext */ #define MNTOPT_DEFAULTS "defaults" /* defaults */ #define MNTOPT_DEVICES "dev" /* device-special allowed */ #define MNTOPT_NODEVICES "nodev" /* device-special disallowed */ #define MNTOPT_DIRATIME "diratime" /* update atime for dirs */ #define MNTOPT_NODIRATIME "nodiratime" /* do not update atime for dirs */ #define MNTOPT_DIRSYNC "dirsync" /* do dir updates synchronously */ #define MNTOPT_EXEC "exec" /* enable executables */ #define MNTOPT_NOEXEC "noexec" /* disable executables */ #define MNTOPT_GROUP "group" /* allow group mount */ #define MNTOPT_NOGROUP "nogroup" /* do not allow group mount */ #define MNTOPT_IVERSION "iversion" /* update inode version */ #define MNTOPT_NOIVERSION "noiversion" /* do not update inode version */ #define MNTOPT_NBMAND "mand" /* allow non-blocking mandatory locks */ #define MNTOPT_NONBMAND "nomand" /* deny non-blocking mandatory locks */ #define MNTOPT_NETDEV "_netdev" /* network device */ #define MNTOPT_NOFAIL "nofail" /* no failure */ #define MNTOPT_RELATIME "relatime" /* allow relative time updates */ #define MNTOPT_NORELATIME "norelatime" /* do not allow relative time updates */ #define MNTOPT_STRICTATIME "strictatime" /* strict access time updates */ #define MNTOPT_NOSTRICTATIME "nostrictatime" /* No strict access time updates */ #define MNTOPT_LAZYTIME "lazytime" /* Defer access time writing */ #define MNTOPT_SETUID "suid" /* Both setuid and devices allowed */ #define MNTOPT_NOSETUID "nosuid" /* Neither setuid nor devices allowed */ #define MNTOPT_OWNER "owner" /* allow owner mount */ #define MNTOPT_NOOWNER "noowner" /* do not allow owner mount */ #define MNTOPT_REMOUNT "remount" /* change mount options */ #define MNTOPT_RO "ro" /* read only */ #define MNTOPT_RW "rw" /* read/write */ #define MNTOPT_SYNC "sync" /* all I/O is synchronous */ #define MNTOPT_USER "user" /* allow user mount */ #define MNTOPT_NOUSER "nouser" /* do not allow user mount */ #define MNTOPT_USERS "users" /* allow user mount */ #define MNTOPT_NOUSERS "nousers" /* do not allow user mount */ #define MNTOPT_SUB "sub" /* allow mounts on subdirs */ #define MNTOPT_NOSUB "nosub" /* do not allow mounts on subdirs */ #define MNTOPT_QUIET "quiet" /* quiet mount */ #define MNTOPT_LOUD "loud" /* verbose mount */ #define MNTOPT_BIND "bind" /* remount part of a tree */ #define MNTOPT_RBIND "rbind" /* include subtrees */ #define MNTOPT_DIRXATTR "dirxattr" /* enable directory xattrs */ #define MNTOPT_SAXATTR "saxattr" /* enable system-attribute xattrs */ #define MNTOPT_XATTR "xattr" /* enable extended attributes */ #define MNTOPT_NOXATTR "noxattr" /* disable extended attributes */ #define MNTOPT_COMMENT "comment" /* comment */ #define MNTOPT_ZFSUTIL "zfsutil" /* called by zfs utility */ #define MNTOPT_ACL "acl" /* passed by util-linux-2.24 mount */ #define MNTOPT_NOACL "noacl" /* likewise */ #define MNTOPT_POSIXACL "posixacl" /* likewise */ #define MNTOPT_MNTPOINT "mntpoint" /* mount point hint */ #endif /* _SYS_MNTENT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_vdev.h0000644000000000000000000000007413607166147020162 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.560428517 zfs-0.8.3/include/sys/trace_vdev.h0000644016037001603700000000657113607166147020170 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_vdev #if !defined(_TRACE_VDEV_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_VDEV_H #include #include /* * Generic support for three argument tracepoints of the form: * * DTRACE_PROBE3(..., * spa_t *, ..., * uint64_t, ..., * uint64_t, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_removing_class_3, TP_PROTO(spa_t *spa, uint64_t offset, uint64_t size), TP_ARGS(spa, offset, size), TP_STRUCT__entry( __field(spa_t *, vdev_spa) __field(uint64_t, vdev_offset) __field(uint64_t, vdev_size) ), TP_fast_assign( __entry->vdev_spa = spa; __entry->vdev_offset = offset; __entry->vdev_size = size; ), TP_printk("spa %p offset %llu size %llu", __entry->vdev_spa, __entry->vdev_offset, __entry->vdev_size) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_REMOVE_FREE_EVENT(name) \ DEFINE_EVENT(zfs_removing_class_3, name, \ TP_PROTO(spa_t *spa, uint64_t offset, uint64_t size), \ TP_ARGS(spa, offset, size)) /* END CSTYLED */ DEFINE_REMOVE_FREE_EVENT(zfs_remove__free__synced); DEFINE_REMOVE_FREE_EVENT(zfs_remove__free__unvisited); /* * Generic support for four argument tracepoints of the form: * * DTRACE_PROBE4(..., * spa_t *, ..., * uint64_t, ..., * uint64_t, ..., * uint64_t, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_removing_class_4, TP_PROTO(spa_t *spa, uint64_t offset, uint64_t size, uint64_t txg), TP_ARGS(spa, offset, size, txg), TP_STRUCT__entry( __field(spa_t *, vdev_spa) __field(uint64_t, vdev_offset) __field(uint64_t, vdev_size) __field(uint64_t, vdev_txg) ), TP_fast_assign( __entry->vdev_spa = spa; __entry->vdev_offset = offset; __entry->vdev_size = size; __entry->vdev_txg = txg; ), TP_printk("spa %p offset %llu size %llu txg %llu", __entry->vdev_spa, __entry->vdev_offset, __entry->vdev_size, __entry->vdev_txg) ); /* BEGIN CSTYLED */ #define DEFINE_REMOVE_FREE_EVENT_TXG(name) \ DEFINE_EVENT(zfs_removing_class_4, name, \ TP_PROTO(spa_t *spa, uint64_t offset, uint64_t size,uint64_t txg), \ TP_ARGS(spa, offset, size, txg)) /* END CSTYLED */ DEFINE_REMOVE_FREE_EVENT_TXG(zfs_remove__free__inflight); #endif /* _TRACE_VDEV_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_vdev #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/zio.h0000644000000000000000000000007413612141521016622 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.686432563 zfs-0.8.3/include/sys/zio.h0000644016037001603700000005222113612141521016621 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. * Copyright (c) 2013, Joyent, Inc. All rights reserved. * Copyright 2016 Toomas Soome */ #ifndef _ZIO_H #define _ZIO_H #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Embedded checksum */ #define ZEC_MAGIC 0x210da7ab10c7a11ULL typedef struct zio_eck { uint64_t zec_magic; /* for validation, endianness */ zio_cksum_t zec_cksum; /* 256-bit checksum */ } zio_eck_t; /* * Gang block headers are self-checksumming and contain an array * of block pointers. */ #define SPA_GANGBLOCKSIZE SPA_MINBLOCKSIZE #define SPA_GBH_NBLKPTRS ((SPA_GANGBLOCKSIZE - \ sizeof (zio_eck_t)) / sizeof (blkptr_t)) #define SPA_GBH_FILLER ((SPA_GANGBLOCKSIZE - \ sizeof (zio_eck_t) - \ (SPA_GBH_NBLKPTRS * sizeof (blkptr_t))) /\ sizeof (uint64_t)) typedef struct zio_gbh { blkptr_t zg_blkptr[SPA_GBH_NBLKPTRS]; uint64_t zg_filler[SPA_GBH_FILLER]; zio_eck_t zg_tail; } zio_gbh_phys_t; enum zio_checksum { ZIO_CHECKSUM_INHERIT = 0, ZIO_CHECKSUM_ON, ZIO_CHECKSUM_OFF, ZIO_CHECKSUM_LABEL, ZIO_CHECKSUM_GANG_HEADER, ZIO_CHECKSUM_ZILOG, ZIO_CHECKSUM_FLETCHER_2, ZIO_CHECKSUM_FLETCHER_4, ZIO_CHECKSUM_SHA256, ZIO_CHECKSUM_ZILOG2, ZIO_CHECKSUM_NOPARITY, ZIO_CHECKSUM_SHA512, ZIO_CHECKSUM_SKEIN, ZIO_CHECKSUM_EDONR, ZIO_CHECKSUM_FUNCTIONS }; /* * The number of "legacy" compression functions which can be set on individual * objects. */ #define ZIO_CHECKSUM_LEGACY_FUNCTIONS ZIO_CHECKSUM_ZILOG2 #define ZIO_CHECKSUM_ON_VALUE ZIO_CHECKSUM_FLETCHER_4 #define ZIO_CHECKSUM_DEFAULT ZIO_CHECKSUM_ON #define ZIO_CHECKSUM_MASK 0xffULL #define ZIO_CHECKSUM_VERIFY (1 << 8) #define ZIO_DEDUPCHECKSUM ZIO_CHECKSUM_SHA256 #define ZIO_DEDUPDITTO_MIN 100 /* supported encryption algorithms */ enum zio_encrypt { ZIO_CRYPT_INHERIT = 0, ZIO_CRYPT_ON, ZIO_CRYPT_OFF, ZIO_CRYPT_AES_128_CCM, ZIO_CRYPT_AES_192_CCM, ZIO_CRYPT_AES_256_CCM, ZIO_CRYPT_AES_128_GCM, ZIO_CRYPT_AES_192_GCM, ZIO_CRYPT_AES_256_GCM, ZIO_CRYPT_FUNCTIONS }; #define ZIO_CRYPT_ON_VALUE ZIO_CRYPT_AES_256_CCM #define ZIO_CRYPT_DEFAULT ZIO_CRYPT_OFF /* macros defining encryption lengths */ #define ZIO_OBJSET_MAC_LEN 32 #define ZIO_DATA_IV_LEN 12 #define ZIO_DATA_SALT_LEN 8 #define ZIO_DATA_MAC_LEN 16 /* * The number of "legacy" compression functions which can be set on individual * objects. */ #define ZIO_COMPRESS_LEGACY_FUNCTIONS ZIO_COMPRESS_LZ4 /* * The meaning of "compress = on" selected by the compression features enabled * on a given pool. */ #define ZIO_COMPRESS_LEGACY_ON_VALUE ZIO_COMPRESS_LZJB #define ZIO_COMPRESS_LZ4_ON_VALUE ZIO_COMPRESS_LZ4 #define ZIO_COMPRESS_DEFAULT ZIO_COMPRESS_OFF #define BOOTFS_COMPRESS_VALID(compress) \ ((compress) == ZIO_COMPRESS_LZJB || \ (compress) == ZIO_COMPRESS_LZ4 || \ (compress) == ZIO_COMPRESS_GZIP_1 || \ (compress) == ZIO_COMPRESS_GZIP_2 || \ (compress) == ZIO_COMPRESS_GZIP_3 || \ (compress) == ZIO_COMPRESS_GZIP_4 || \ (compress) == ZIO_COMPRESS_GZIP_5 || \ (compress) == ZIO_COMPRESS_GZIP_6 || \ (compress) == ZIO_COMPRESS_GZIP_7 || \ (compress) == ZIO_COMPRESS_GZIP_8 || \ (compress) == ZIO_COMPRESS_GZIP_9 || \ (compress) == ZIO_COMPRESS_ZLE || \ (compress) == ZIO_COMPRESS_ON || \ (compress) == ZIO_COMPRESS_OFF) #define ZIO_FAILURE_MODE_WAIT 0 #define ZIO_FAILURE_MODE_CONTINUE 1 #define ZIO_FAILURE_MODE_PANIC 2 typedef enum zio_suspend_reason { ZIO_SUSPEND_NONE = 0, ZIO_SUSPEND_IOERR, ZIO_SUSPEND_MMP, } zio_suspend_reason_t; enum zio_flag { /* * Flags inherited by gang, ddt, and vdev children, * and that must be equal for two zios to aggregate */ ZIO_FLAG_DONT_AGGREGATE = 1 << 0, ZIO_FLAG_IO_REPAIR = 1 << 1, ZIO_FLAG_SELF_HEAL = 1 << 2, ZIO_FLAG_RESILVER = 1 << 3, ZIO_FLAG_SCRUB = 1 << 4, ZIO_FLAG_SCAN_THREAD = 1 << 5, ZIO_FLAG_PHYSICAL = 1 << 6, #define ZIO_FLAG_AGG_INHERIT (ZIO_FLAG_CANFAIL - 1) /* * Flags inherited by ddt, gang, and vdev children. */ ZIO_FLAG_CANFAIL = 1 << 7, /* must be first for INHERIT */ ZIO_FLAG_SPECULATIVE = 1 << 8, ZIO_FLAG_CONFIG_WRITER = 1 << 9, ZIO_FLAG_DONT_RETRY = 1 << 10, ZIO_FLAG_DONT_CACHE = 1 << 11, ZIO_FLAG_NODATA = 1 << 12, ZIO_FLAG_INDUCE_DAMAGE = 1 << 13, ZIO_FLAG_IO_ALLOCATING = 1 << 14, #define ZIO_FLAG_DDT_INHERIT (ZIO_FLAG_IO_RETRY - 1) #define ZIO_FLAG_GANG_INHERIT (ZIO_FLAG_IO_RETRY - 1) /* * Flags inherited by vdev children. */ ZIO_FLAG_IO_RETRY = 1 << 15, /* must be first for INHERIT */ ZIO_FLAG_PROBE = 1 << 16, ZIO_FLAG_TRYHARD = 1 << 17, ZIO_FLAG_OPTIONAL = 1 << 18, #define ZIO_FLAG_VDEV_INHERIT (ZIO_FLAG_DONT_QUEUE - 1) /* * Flags not inherited by any children. */ ZIO_FLAG_DONT_QUEUE = 1 << 19, /* must be first for INHERIT */ ZIO_FLAG_DONT_PROPAGATE = 1 << 20, ZIO_FLAG_IO_BYPASS = 1 << 21, ZIO_FLAG_IO_REWRITE = 1 << 22, ZIO_FLAG_RAW_COMPRESS = 1 << 23, ZIO_FLAG_RAW_ENCRYPT = 1 << 24, ZIO_FLAG_GANG_CHILD = 1 << 25, ZIO_FLAG_DDT_CHILD = 1 << 26, ZIO_FLAG_GODFATHER = 1 << 27, ZIO_FLAG_NOPWRITE = 1 << 28, ZIO_FLAG_REEXECUTED = 1 << 29, ZIO_FLAG_DELEGATED = 1 << 30, ZIO_FLAG_FASTWRITE = 1 << 31, }; #define ZIO_FLAG_MUSTSUCCEED 0 #define ZIO_FLAG_RAW (ZIO_FLAG_RAW_COMPRESS | ZIO_FLAG_RAW_ENCRYPT) #define ZIO_DDT_CHILD_FLAGS(zio) \ (((zio)->io_flags & ZIO_FLAG_DDT_INHERIT) | \ ZIO_FLAG_DDT_CHILD | ZIO_FLAG_CANFAIL) #define ZIO_GANG_CHILD_FLAGS(zio) \ (((zio)->io_flags & ZIO_FLAG_GANG_INHERIT) | \ ZIO_FLAG_GANG_CHILD | ZIO_FLAG_CANFAIL) #define ZIO_VDEV_CHILD_FLAGS(zio) \ (((zio)->io_flags & ZIO_FLAG_VDEV_INHERIT) | \ ZIO_FLAG_DONT_PROPAGATE | ZIO_FLAG_CANFAIL) #define ZIO_CHILD_BIT(x) (1 << (x)) #define ZIO_CHILD_BIT_IS_SET(val, x) ((val) & (1 << (x))) enum zio_child { ZIO_CHILD_VDEV = 0, ZIO_CHILD_GANG, ZIO_CHILD_DDT, ZIO_CHILD_LOGICAL, ZIO_CHILD_TYPES }; #define ZIO_CHILD_VDEV_BIT ZIO_CHILD_BIT(ZIO_CHILD_VDEV) #define ZIO_CHILD_GANG_BIT ZIO_CHILD_BIT(ZIO_CHILD_GANG) #define ZIO_CHILD_DDT_BIT ZIO_CHILD_BIT(ZIO_CHILD_DDT) #define ZIO_CHILD_LOGICAL_BIT ZIO_CHILD_BIT(ZIO_CHILD_LOGICAL) #define ZIO_CHILD_ALL_BITS \ (ZIO_CHILD_VDEV_BIT | ZIO_CHILD_GANG_BIT | \ ZIO_CHILD_DDT_BIT | ZIO_CHILD_LOGICAL_BIT) enum zio_wait_type { ZIO_WAIT_READY = 0, ZIO_WAIT_DONE, ZIO_WAIT_TYPES }; /* * We'll take the unused errnos, 'EBADE' and 'EBADR' (from the Convergent * graveyard) to indicate checksum errors and fragmentation. */ #define ECKSUM EBADE #define EFRAGS EBADR /* Similar for ENOACTIVE */ #define ENOTACTIVE ENOANO typedef void zio_done_func_t(zio_t *zio); extern int zio_exclude_metadata; extern int zio_dva_throttle_enabled; extern const char *zio_type_name[ZIO_TYPES]; /* * A bookmark is a four-tuple that uniquely * identifies any block in the pool. By convention, the meta-objset (MOS) * is objset 0, and the meta-dnode is object 0. This covers all blocks * except root blocks and ZIL blocks, which are defined as follows: * * Root blocks (objset_phys_t) are object 0, level -1: . * ZIL blocks are bookmarked . * dmu_sync()ed ZIL data blocks are bookmarked . * dnode visit bookmarks are . * * Note: this structure is called a bookmark because its original purpose * was to remember where to resume a pool-wide traverse. * * Note: this structure is passed between userland and the kernel, and is * stored on disk (by virtue of being incorporated into other on-disk * structures, e.g. dsl_scan_phys_t). */ struct zbookmark_phys { uint64_t zb_objset; uint64_t zb_object; int64_t zb_level; uint64_t zb_blkid; }; #define SET_BOOKMARK(zb, objset, object, level, blkid) \ { \ (zb)->zb_objset = objset; \ (zb)->zb_object = object; \ (zb)->zb_level = level; \ (zb)->zb_blkid = blkid; \ } #define ZB_DESTROYED_OBJSET (-1ULL) #define ZB_ROOT_OBJECT (0ULL) #define ZB_ROOT_LEVEL (-1LL) #define ZB_ROOT_BLKID (0ULL) #define ZB_ZIL_OBJECT (0ULL) #define ZB_ZIL_LEVEL (-2LL) #define ZB_DNODE_LEVEL (-3LL) #define ZB_DNODE_BLKID (0ULL) #define ZB_IS_ZERO(zb) \ ((zb)->zb_objset == 0 && (zb)->zb_object == 0 && \ (zb)->zb_level == 0 && (zb)->zb_blkid == 0) #define ZB_IS_ROOT(zb) \ ((zb)->zb_object == ZB_ROOT_OBJECT && \ (zb)->zb_level == ZB_ROOT_LEVEL && \ (zb)->zb_blkid == ZB_ROOT_BLKID) typedef struct zio_prop { enum zio_checksum zp_checksum; enum zio_compress zp_compress; dmu_object_type_t zp_type; uint8_t zp_level; uint8_t zp_copies; boolean_t zp_dedup; boolean_t zp_dedup_verify; boolean_t zp_nopwrite; boolean_t zp_encrypt; boolean_t zp_byteorder; uint8_t zp_salt[ZIO_DATA_SALT_LEN]; uint8_t zp_iv[ZIO_DATA_IV_LEN]; uint8_t zp_mac[ZIO_DATA_MAC_LEN]; uint32_t zp_zpl_smallblk; } zio_prop_t; typedef struct zio_cksum_report zio_cksum_report_t; typedef void zio_cksum_finish_f(zio_cksum_report_t *rep, const abd_t *good_data); typedef void zio_cksum_free_f(void *cbdata, size_t size); struct zio_bad_cksum; /* defined in zio_checksum.h */ struct dnode_phys; struct abd; struct zio_cksum_report { struct zio_cksum_report *zcr_next; nvlist_t *zcr_ereport; nvlist_t *zcr_detector; void *zcr_cbdata; size_t zcr_cbinfo; /* passed to zcr_free() */ uint64_t zcr_align; uint64_t zcr_length; zio_cksum_finish_f *zcr_finish; zio_cksum_free_f *zcr_free; /* internal use only */ struct zio_bad_cksum *zcr_ckinfo; /* information from failure */ }; typedef void zio_vsd_cksum_report_f(zio_t *zio, zio_cksum_report_t *zcr, void *arg); zio_vsd_cksum_report_f zio_vsd_default_cksum_report; typedef struct zio_vsd_ops { zio_done_func_t *vsd_free; zio_vsd_cksum_report_f *vsd_cksum_report; } zio_vsd_ops_t; typedef struct zio_gang_node { zio_gbh_phys_t *gn_gbh; struct zio_gang_node *gn_child[SPA_GBH_NBLKPTRS]; } zio_gang_node_t; typedef zio_t *zio_gang_issue_func_t(zio_t *zio, blkptr_t *bp, zio_gang_node_t *gn, struct abd *data, uint64_t offset); typedef void zio_transform_func_t(zio_t *zio, struct abd *data, uint64_t size); typedef struct zio_transform { struct abd *zt_orig_abd; uint64_t zt_orig_size; uint64_t zt_bufsize; zio_transform_func_t *zt_transform; struct zio_transform *zt_next; } zio_transform_t; typedef zio_t *zio_pipe_stage_t(zio_t *zio); /* * The io_reexecute flags are distinct from io_flags because the child must * be able to propagate them to the parent. The normal io_flags are local * to the zio, not protected by any lock, and not modifiable by children; * the reexecute flags are protected by io_lock, modifiable by children, * and always propagated -- even when ZIO_FLAG_DONT_PROPAGATE is set. */ #define ZIO_REEXECUTE_NOW 0x01 #define ZIO_REEXECUTE_SUSPEND 0x02 /* * The io_trim flags are used to specify the type of TRIM to perform. They * only apply to ZIO_TYPE_TRIM zios are distinct from io_flags. */ enum trim_flag { ZIO_TRIM_SECURE = 1 << 0, }; typedef struct zio_alloc_list { list_t zal_list; uint64_t zal_size; } zio_alloc_list_t; typedef struct zio_link { zio_t *zl_parent; zio_t *zl_child; list_node_t zl_parent_node; list_node_t zl_child_node; } zio_link_t; struct zio { /* Core information about this I/O */ zbookmark_phys_t io_bookmark; zio_prop_t io_prop; zio_type_t io_type; enum zio_child io_child_type; enum trim_flag io_trim_flags; int io_cmd; zio_priority_t io_priority; uint8_t io_reexecute; uint8_t io_state[ZIO_WAIT_TYPES]; uint64_t io_txg; spa_t *io_spa; blkptr_t *io_bp; blkptr_t *io_bp_override; blkptr_t io_bp_copy; list_t io_parent_list; list_t io_child_list; zio_t *io_logical; zio_transform_t *io_transform_stack; /* Callback info */ zio_done_func_t *io_ready; zio_done_func_t *io_children_ready; zio_done_func_t *io_physdone; zio_done_func_t *io_done; void *io_private; int64_t io_prev_space_delta; /* DMU private */ blkptr_t io_bp_orig; /* io_lsize != io_orig_size iff this is a raw write */ uint64_t io_lsize; /* Data represented by this I/O */ struct abd *io_abd; struct abd *io_orig_abd; uint64_t io_size; uint64_t io_orig_size; /* Stuff for the vdev stack */ vdev_t *io_vd; void *io_vsd; const zio_vsd_ops_t *io_vsd_ops; metaslab_class_t *io_metaslab_class; /* dva throttle class */ uint64_t io_offset; hrtime_t io_timestamp; /* submitted at */ hrtime_t io_queued_timestamp; hrtime_t io_target_timestamp; hrtime_t io_delta; /* vdev queue service delta */ hrtime_t io_delay; /* Device access time (disk or */ /* file). */ avl_node_t io_queue_node; avl_node_t io_offset_node; avl_node_t io_alloc_node; zio_alloc_list_t io_alloc_list; /* Internal pipeline state */ enum zio_flag io_flags; enum zio_stage io_stage; enum zio_stage io_pipeline; enum zio_flag io_orig_flags; enum zio_stage io_orig_stage; enum zio_stage io_orig_pipeline; enum zio_stage io_pipeline_trace; int io_error; int io_child_error[ZIO_CHILD_TYPES]; uint64_t io_children[ZIO_CHILD_TYPES][ZIO_WAIT_TYPES]; uint64_t io_child_count; uint64_t io_phys_children; uint64_t io_parent_count; uint64_t *io_stall; zio_t *io_gang_leader; zio_gang_node_t *io_gang_tree; void *io_executor; void *io_waiter; kmutex_t io_lock; kcondvar_t io_cv; int io_allocator; /* FMA state */ zio_cksum_report_t *io_cksum_report; uint64_t io_ena; /* Taskq dispatching state */ taskq_ent_t io_tqent; }; extern int zio_bookmark_compare(const void *, const void *); extern zio_t *zio_null(zio_t *pio, spa_t *spa, vdev_t *vd, zio_done_func_t *done, void *private, enum zio_flag flags); extern zio_t *zio_root(spa_t *spa, zio_done_func_t *done, void *private, enum zio_flag flags); extern zio_t *zio_read(zio_t *pio, spa_t *spa, const blkptr_t *bp, struct abd *data, uint64_t lsize, zio_done_func_t *done, void *private, zio_priority_t priority, enum zio_flag flags, const zbookmark_phys_t *zb); extern zio_t *zio_write(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, struct abd *data, uint64_t size, uint64_t psize, const zio_prop_t *zp, zio_done_func_t *ready, zio_done_func_t *children_ready, zio_done_func_t *physdone, zio_done_func_t *done, void *private, zio_priority_t priority, enum zio_flag flags, const zbookmark_phys_t *zb); extern zio_t *zio_rewrite(zio_t *pio, spa_t *spa, uint64_t txg, blkptr_t *bp, struct abd *data, uint64_t size, zio_done_func_t *done, void *private, zio_priority_t priority, enum zio_flag flags, zbookmark_phys_t *zb); extern void zio_write_override(zio_t *zio, blkptr_t *bp, int copies, boolean_t nopwrite); extern void zio_free(spa_t *spa, uint64_t txg, const blkptr_t *bp); extern zio_t *zio_claim(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, zio_done_func_t *done, void *private, enum zio_flag flags); extern zio_t *zio_ioctl(zio_t *pio, spa_t *spa, vdev_t *vd, int cmd, zio_done_func_t *done, void *private, enum zio_flag flags); extern zio_t *zio_trim(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, zio_done_func_t *done, void *private, zio_priority_t priority, enum zio_flag flags, enum trim_flag trim_flags); extern zio_t *zio_read_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, struct abd *data, int checksum, zio_done_func_t *done, void *private, zio_priority_t priority, enum zio_flag flags, boolean_t labels); extern zio_t *zio_write_phys(zio_t *pio, vdev_t *vd, uint64_t offset, uint64_t size, struct abd *data, int checksum, zio_done_func_t *done, void *private, zio_priority_t priority, enum zio_flag flags, boolean_t labels); extern zio_t *zio_free_sync(zio_t *pio, spa_t *spa, uint64_t txg, const blkptr_t *bp, enum zio_flag flags); extern int zio_alloc_zil(spa_t *spa, objset_t *os, uint64_t txg, blkptr_t *new_bp, uint64_t size, boolean_t *slog); extern void zio_flush(zio_t *zio, vdev_t *vd); extern void zio_shrink(zio_t *zio, uint64_t size); extern int zio_wait(zio_t *zio); extern void zio_nowait(zio_t *zio); extern void zio_execute(zio_t *zio); extern void zio_interrupt(zio_t *zio); extern void zio_delay_init(zio_t *zio); extern void zio_delay_interrupt(zio_t *zio); extern void zio_deadman(zio_t *zio, char *tag); extern zio_t *zio_walk_parents(zio_t *cio, zio_link_t **); extern zio_t *zio_walk_children(zio_t *pio, zio_link_t **); extern zio_t *zio_unique_parent(zio_t *cio); extern void zio_add_child(zio_t *pio, zio_t *cio); extern void *zio_buf_alloc(size_t size); extern void zio_buf_free(void *buf, size_t size); extern void *zio_data_buf_alloc(size_t size); extern void zio_data_buf_free(void *buf, size_t size); extern void zio_push_transform(zio_t *zio, struct abd *abd, uint64_t size, uint64_t bufsize, zio_transform_func_t *transform); extern void zio_pop_transforms(zio_t *zio); extern void zio_resubmit_stage_async(void *); extern zio_t *zio_vdev_child_io(zio_t *zio, blkptr_t *bp, vdev_t *vd, uint64_t offset, struct abd *data, uint64_t size, int type, zio_priority_t priority, enum zio_flag flags, zio_done_func_t *done, void *private); extern zio_t *zio_vdev_delegated_io(vdev_t *vd, uint64_t offset, struct abd *data, uint64_t size, zio_type_t type, zio_priority_t priority, enum zio_flag flags, zio_done_func_t *done, void *private); extern void zio_vdev_io_bypass(zio_t *zio); extern void zio_vdev_io_reissue(zio_t *zio); extern void zio_vdev_io_redone(zio_t *zio); extern void zio_change_priority(zio_t *pio, zio_priority_t priority); extern void zio_checksum_verified(zio_t *zio); extern int zio_worst_error(int e1, int e2); extern enum zio_checksum zio_checksum_select(enum zio_checksum child, enum zio_checksum parent); extern enum zio_checksum zio_checksum_dedup_select(spa_t *spa, enum zio_checksum child, enum zio_checksum parent); extern enum zio_compress zio_compress_select(spa_t *spa, enum zio_compress child, enum zio_compress parent); extern void zio_suspend(spa_t *spa, zio_t *zio, zio_suspend_reason_t); extern int zio_resume(spa_t *spa); extern void zio_resume_wait(spa_t *spa); /* * Initial setup and teardown. */ extern void zio_init(void); extern void zio_fini(void); /* * Fault injection */ struct zinject_record; extern uint32_t zio_injection_enabled; extern int zio_inject_fault(char *name, int flags, int *id, struct zinject_record *record); extern int zio_inject_list_next(int *id, char *name, size_t buflen, struct zinject_record *record); extern int zio_clear_fault(int id); extern void zio_handle_panic_injection(spa_t *spa, char *tag, uint64_t type); extern int zio_handle_decrypt_injection(spa_t *spa, const zbookmark_phys_t *zb, uint64_t type, int error); extern int zio_handle_fault_injection(zio_t *zio, int error); extern int zio_handle_device_injection(vdev_t *vd, zio_t *zio, int error); extern int zio_handle_device_injections(vdev_t *vd, zio_t *zio, int err1, int err2); extern int zio_handle_label_injection(zio_t *zio, int error); extern void zio_handle_ignored_writes(zio_t *zio); extern hrtime_t zio_handle_io_delay(zio_t *zio); /* * Checksum ereport functions */ extern void zfs_ereport_start_checksum(spa_t *spa, vdev_t *vd, const zbookmark_phys_t *zb, struct zio *zio, uint64_t offset, uint64_t length, void *arg, struct zio_bad_cksum *info); extern void zfs_ereport_finish_checksum(zio_cksum_report_t *report, const abd_t *good_data, const abd_t *bad_data, boolean_t drop_if_identical); extern void zfs_ereport_free_checksum(zio_cksum_report_t *report); /* If we have the good data in hand, this function can be used */ extern int zfs_ereport_post_checksum(spa_t *spa, vdev_t *vd, const zbookmark_phys_t *zb, struct zio *zio, uint64_t offset, uint64_t length, const abd_t *good_data, const abd_t *bad_data, struct zio_bad_cksum *info); /* Called from spa_sync(), but primarily an injection handler */ extern void spa_handle_ignored_writes(spa_t *spa); /* zbookmark_phys functions */ boolean_t zbookmark_subtree_completed(const struct dnode_phys *dnp, const zbookmark_phys_t *subtree_root, const zbookmark_phys_t *last_block); int zbookmark_compare(uint16_t dbss1, uint8_t ibs1, uint16_t dbss2, uint8_t ibs2, const zbookmark_phys_t *zb1, const zbookmark_phys_t *zb2); #ifdef __cplusplus } #endif #endif /* _ZIO_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_bookmark.h0000644000000000000000000000007413607166147020507 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.446424857 zfs-0.8.3/include/sys/dsl_bookmark.h0000644016037001603700000000371213607166147020507 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_DSL_BOOKMARK_H #define _SYS_DSL_BOOKMARK_H #include #include #ifdef __cplusplus extern "C" { #endif struct dsl_pool; struct dsl_dataset; /* * On disk zap object. */ typedef struct zfs_bookmark_phys { uint64_t zbm_guid; /* guid of bookmarked dataset */ uint64_t zbm_creation_txg; /* birth transaction group */ uint64_t zbm_creation_time; /* bookmark creation time */ /* fields used for redacted send / recv */ uint64_t zbm_redaction_obj; /* redaction list object */ uint64_t zbm_flags; /* ZBM_FLAG_* */ /* fields used for bookmark written size */ uint64_t zbm_referenced_bytes_refd; uint64_t zbm_compressed_bytes_refd; uint64_t zbm_uncompressed_bytes_refd; uint64_t zbm_referenced_freed_before_next_snap; uint64_t zbm_compressed_freed_before_next_snap; uint64_t zbm_uncompressed_freed_before_next_snap; /* fields used for raw sends */ uint64_t zbm_ivset_guid; } zfs_bookmark_phys_t; #define BOOKMARK_PHYS_SIZE_V1 (3 * sizeof (uint64_t)) #define BOOKMARK_PHYS_SIZE_V2 (12 * sizeof (uint64_t)) int dsl_bookmark_create(nvlist_t *, nvlist_t *); int dsl_get_bookmarks(const char *, nvlist_t *, nvlist_t *); int dsl_get_bookmarks_impl(dsl_dataset_t *, nvlist_t *, nvlist_t *); int dsl_bookmark_destroy(nvlist_t *, nvlist_t *); int dsl_bookmark_lookup(struct dsl_pool *, const char *, struct dsl_dataset *, zfs_bookmark_phys_t *); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_BOOKMARK_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dmu_objset.h0000644000000000000000000000007413607166147020173 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.430424344 zfs-0.8.3/include/sys/dmu_objset.h0000644016037001603700000002207613607166147020177 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. */ /* Portions Copyright 2010 Robert Milkowski */ #ifndef _SYS_DMU_OBJSET_H #define _SYS_DMU_OBJSET_H #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif extern krwlock_t os_lock; struct dsl_pool; struct dsl_dataset; struct dmu_tx; #define OBJSET_PHYS_SIZE_V1 1024 #define OBJSET_PHYS_SIZE_V2 2048 #define OBJSET_PHYS_SIZE_V3 4096 #define OBJSET_BUF_HAS_USERUSED(buf) \ (arc_buf_size(buf) >= OBJSET_PHYS_SIZE_V2) #define OBJSET_BUF_HAS_PROJECTUSED(buf) \ (arc_buf_size(buf) >= OBJSET_PHYS_SIZE_V3) #define OBJSET_FLAG_USERACCOUNTING_COMPLETE (1ULL << 0) #define OBJSET_FLAG_USEROBJACCOUNTING_COMPLETE (1ULL << 1) #define OBJSET_FLAG_PROJECTQUOTA_COMPLETE (1ULL << 2) /* * This mask defines the set of flags which are "portable", meaning * that they can be preserved when doing a raw encrypted zfs send. * Flags included in this mask will be protected by os_portable_mac * when the block of dnodes is encrypted. No portable flags currently * exist. */ #define OBJSET_CRYPT_PORTABLE_FLAGS_MASK (0) typedef struct objset_phys { dnode_phys_t os_meta_dnode; zil_header_t os_zil_header; uint64_t os_type; uint64_t os_flags; uint8_t os_portable_mac[ZIO_OBJSET_MAC_LEN]; uint8_t os_local_mac[ZIO_OBJSET_MAC_LEN]; char os_pad0[OBJSET_PHYS_SIZE_V2 - sizeof (dnode_phys_t)*3 - sizeof (zil_header_t) - sizeof (uint64_t)*2 - 2*ZIO_OBJSET_MAC_LEN]; dnode_phys_t os_userused_dnode; dnode_phys_t os_groupused_dnode; dnode_phys_t os_projectused_dnode; char os_pad1[OBJSET_PHYS_SIZE_V3 - OBJSET_PHYS_SIZE_V2 - sizeof (dnode_phys_t)]; } objset_phys_t; typedef int (*dmu_objset_upgrade_cb_t)(objset_t *); #define OBJSET_PROP_UNINITIALIZED ((uint64_t)-1) struct objset { /* Immutable: */ struct dsl_dataset *os_dsl_dataset; spa_t *os_spa; arc_buf_t *os_phys_buf; objset_phys_t *os_phys; boolean_t os_encrypted; /* * The following "special" dnodes have no parent, are exempt * from dnode_move(), and are not recorded in os_dnodes, but they * root their descendents in this objset using handles anyway, so * that all access to dnodes from dbufs consistently uses handles. */ dnode_handle_t os_meta_dnode; dnode_handle_t os_userused_dnode; dnode_handle_t os_groupused_dnode; dnode_handle_t os_projectused_dnode; zilog_t *os_zil; list_node_t os_evicting_node; /* can change, under dsl_dir's locks: */ uint64_t os_dnodesize; /* default dnode size for new objects */ enum zio_checksum os_checksum; enum zio_compress os_compress; uint8_t os_copies; enum zio_checksum os_dedup_checksum; boolean_t os_dedup_verify; zfs_logbias_op_t os_logbias; zfs_cache_type_t os_primary_cache; zfs_cache_type_t os_secondary_cache; zfs_sync_type_t os_sync; zfs_redundant_metadata_type_t os_redundant_metadata; int os_recordsize; /* * The next four values are used as a cache of whatever's on disk, and * are initialized the first time these properties are queried. Before * being initialized with their real values, their values are * OBJSET_PROP_UNINITIALIZED. */ uint64_t os_version; uint64_t os_normalization; uint64_t os_utf8only; uint64_t os_casesensitivity; /* * The largest zpl file block allowed in special class. * cached here instead of zfsvfs for easier access. */ int os_zpl_special_smallblock; /* * Pointer is constant; the blkptr it points to is protected by * os_dsl_dataset->ds_bp_rwlock */ blkptr_t *os_rootbp; /* no lock needed: */ struct dmu_tx *os_synctx; /* XXX sketchy */ zil_header_t os_zil_header; multilist_t *os_synced_dnodes; uint64_t os_flags; uint64_t os_freed_dnodes; boolean_t os_rescan_dnodes; boolean_t os_raw_receive; /* os_phys_buf should be written raw next txg */ boolean_t os_next_write_raw[TXG_SIZE]; /* Protected by os_obj_lock */ kmutex_t os_obj_lock; uint64_t os_obj_next_chunk; /* Per-CPU next object to allocate, protected by atomic ops. */ uint64_t *os_obj_next_percpu; int os_obj_next_percpu_len; /* Protected by os_lock */ kmutex_t os_lock; multilist_t *os_dirty_dnodes[TXG_SIZE]; list_t os_dnodes; list_t os_downgraded_dbufs; /* Protects changes to DMU_{USER,GROUP,PROJECT}USED_OBJECT */ kmutex_t os_userused_lock; /* stuff we store for the user */ kmutex_t os_user_ptr_lock; void *os_user_ptr; sa_os_t *os_sa; /* kernel thread to upgrade this dataset */ kmutex_t os_upgrade_lock; taskqid_t os_upgrade_id; dmu_objset_upgrade_cb_t os_upgrade_cb; boolean_t os_upgrade_exit; int os_upgrade_status; }; #define DMU_META_OBJSET 0 #define DMU_META_DNODE_OBJECT 0 #define DMU_OBJECT_IS_SPECIAL(obj) ((int64_t)(obj) <= 0) #define DMU_META_DNODE(os) ((os)->os_meta_dnode.dnh_dnode) #define DMU_USERUSED_DNODE(os) ((os)->os_userused_dnode.dnh_dnode) #define DMU_GROUPUSED_DNODE(os) ((os)->os_groupused_dnode.dnh_dnode) #define DMU_PROJECTUSED_DNODE(os) ((os)->os_projectused_dnode.dnh_dnode) #define DMU_OS_IS_L2CACHEABLE(os) \ ((os)->os_secondary_cache == ZFS_CACHE_ALL || \ (os)->os_secondary_cache == ZFS_CACHE_METADATA) /* called from zpl */ int dmu_objset_hold(const char *name, void *tag, objset_t **osp); int dmu_objset_hold_flags(const char *name, boolean_t decrypt, void *tag, objset_t **osp); int dmu_objset_own(const char *name, dmu_objset_type_t type, boolean_t readonly, boolean_t decrypt, void *tag, objset_t **osp); int dmu_objset_own_obj(struct dsl_pool *dp, uint64_t obj, dmu_objset_type_t type, boolean_t readonly, boolean_t decrypt, void *tag, objset_t **osp); void dmu_objset_refresh_ownership(struct dsl_dataset *ds, struct dsl_dataset **newds, boolean_t decrypt, void *tag); void dmu_objset_rele(objset_t *os, void *tag); void dmu_objset_rele_flags(objset_t *os, boolean_t decrypt, void *tag); void dmu_objset_disown(objset_t *os, boolean_t decrypt, void *tag); int dmu_objset_from_ds(struct dsl_dataset *ds, objset_t **osp); void dmu_objset_stats(objset_t *os, nvlist_t *nv); void dmu_objset_fast_stat(objset_t *os, dmu_objset_stats_t *stat); void dmu_objset_space(objset_t *os, uint64_t *refdbytesp, uint64_t *availbytesp, uint64_t *usedobjsp, uint64_t *availobjsp); uint64_t dmu_objset_fsid_guid(objset_t *os); int dmu_objset_find_dp(struct dsl_pool *dp, uint64_t ddobj, int func(struct dsl_pool *, struct dsl_dataset *, void *), void *arg, int flags); void dmu_objset_evict_dbufs(objset_t *os); inode_timespec_t dmu_objset_snap_cmtime(objset_t *os); /* called from dsl */ void dmu_objset_sync(objset_t *os, zio_t *zio, dmu_tx_t *tx); boolean_t dmu_objset_is_dirty(objset_t *os, uint64_t txg); objset_t *dmu_objset_create_impl_dnstats(spa_t *spa, struct dsl_dataset *ds, blkptr_t *bp, dmu_objset_type_t type, int levels, int blksz, int ibs, dmu_tx_t *tx); objset_t *dmu_objset_create_impl(spa_t *spa, struct dsl_dataset *ds, blkptr_t *bp, dmu_objset_type_t type, dmu_tx_t *tx); int dmu_objset_open_impl(spa_t *spa, struct dsl_dataset *ds, blkptr_t *bp, objset_t **osp); void dmu_objset_evict(objset_t *os); void dmu_objset_do_userquota_updates(objset_t *os, dmu_tx_t *tx); void dmu_objset_userquota_get_ids(dnode_t *dn, boolean_t before, dmu_tx_t *tx); boolean_t dmu_objset_userused_enabled(objset_t *os); int dmu_objset_userspace_upgrade(objset_t *os); boolean_t dmu_objset_userspace_present(objset_t *os); boolean_t dmu_objset_userobjused_enabled(objset_t *os); boolean_t dmu_objset_userobjspace_upgradable(objset_t *os); boolean_t dmu_objset_userobjspace_present(objset_t *os); boolean_t dmu_objset_incompatible_encryption_version(objset_t *os); boolean_t dmu_objset_projectquota_enabled(objset_t *os); boolean_t dmu_objset_projectquota_present(objset_t *os); boolean_t dmu_objset_projectquota_upgradable(objset_t *os); void dmu_objset_id_quota_upgrade(objset_t *os); int dmu_fsname(const char *snapname, char *buf); void dmu_objset_evict_done(objset_t *os); void dmu_objset_willuse_space(objset_t *os, int64_t space, dmu_tx_t *tx); void dmu_objset_init(void); void dmu_objset_fini(void); #ifdef __cplusplus } #endif #endif /* _SYS_DMU_OBJSET_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/nvpair.h0000644000000000000000000000007413607166132017331 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.496426463 zfs-0.8.3/include/sys/nvpair.h0000644016037001603700000003525613607166132017341 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. */ #ifndef _SYS_NVPAIR_H #define _SYS_NVPAIR_H #include #include #include #ifdef __cplusplus extern "C" { #endif typedef enum { DATA_TYPE_DONTCARE = -1, DATA_TYPE_UNKNOWN = 0, DATA_TYPE_BOOLEAN, DATA_TYPE_BYTE, DATA_TYPE_INT16, DATA_TYPE_UINT16, DATA_TYPE_INT32, DATA_TYPE_UINT32, DATA_TYPE_INT64, DATA_TYPE_UINT64, DATA_TYPE_STRING, DATA_TYPE_BYTE_ARRAY, DATA_TYPE_INT16_ARRAY, DATA_TYPE_UINT16_ARRAY, DATA_TYPE_INT32_ARRAY, DATA_TYPE_UINT32_ARRAY, DATA_TYPE_INT64_ARRAY, DATA_TYPE_UINT64_ARRAY, DATA_TYPE_STRING_ARRAY, DATA_TYPE_HRTIME, DATA_TYPE_NVLIST, DATA_TYPE_NVLIST_ARRAY, DATA_TYPE_BOOLEAN_VALUE, DATA_TYPE_INT8, DATA_TYPE_UINT8, DATA_TYPE_BOOLEAN_ARRAY, DATA_TYPE_INT8_ARRAY, #if !defined(_KERNEL) DATA_TYPE_UINT8_ARRAY, DATA_TYPE_DOUBLE #else DATA_TYPE_UINT8_ARRAY #endif } data_type_t; typedef struct nvpair { int32_t nvp_size; /* size of this nvpair */ int16_t nvp_name_sz; /* length of name string */ int16_t nvp_reserve; /* not used */ int32_t nvp_value_elem; /* number of elements for array types */ data_type_t nvp_type; /* type of value */ /* name string */ /* aligned ptr array for string arrays */ /* aligned array of data for value */ } nvpair_t; /* nvlist header */ typedef struct nvlist { int32_t nvl_version; uint32_t nvl_nvflag; /* persistent flags */ uint64_t nvl_priv; /* ptr to private data if not packed */ uint32_t nvl_flag; int32_t nvl_pad; /* currently not used, for alignment */ } nvlist_t; /* nvp implementation version */ #define NV_VERSION 0 /* nvlist pack encoding */ #define NV_ENCODE_NATIVE 0 #define NV_ENCODE_XDR 1 /* nvlist persistent unique name flags, stored in nvl_nvflags */ #define NV_UNIQUE_NAME 0x1 #define NV_UNIQUE_NAME_TYPE 0x2 /* nvlist lookup pairs related flags */ #define NV_FLAG_NOENTOK 0x1 /* convenience macros */ #define NV_ALIGN(x) (((ulong_t)(x) + 7ul) & ~7ul) #define NV_ALIGN4(x) (((x) + 3) & ~3) #define NVP_SIZE(nvp) ((nvp)->nvp_size) #define NVP_NAME(nvp) ((char *)(nvp) + sizeof (nvpair_t)) #define NVP_TYPE(nvp) ((nvp)->nvp_type) #define NVP_NELEM(nvp) ((nvp)->nvp_value_elem) #define NVP_VALUE(nvp) ((char *)(nvp) + NV_ALIGN(sizeof (nvpair_t) \ + (nvp)->nvp_name_sz)) #define NVL_VERSION(nvl) ((nvl)->nvl_version) #define NVL_SIZE(nvl) ((nvl)->nvl_size) #define NVL_FLAG(nvl) ((nvl)->nvl_flag) /* NV allocator framework */ typedef struct nv_alloc_ops nv_alloc_ops_t; typedef struct nv_alloc { const nv_alloc_ops_t *nva_ops; void *nva_arg; } nv_alloc_t; struct nv_alloc_ops { int (*nv_ao_init)(nv_alloc_t *, va_list); void (*nv_ao_fini)(nv_alloc_t *); void *(*nv_ao_alloc)(nv_alloc_t *, size_t); void (*nv_ao_free)(nv_alloc_t *, void *, size_t); void (*nv_ao_reset)(nv_alloc_t *); }; extern const nv_alloc_ops_t *nv_fixed_ops; extern nv_alloc_t *nv_alloc_nosleep; #if defined(_KERNEL) extern nv_alloc_t *nv_alloc_sleep; extern nv_alloc_t *nv_alloc_pushpage; #endif int nv_alloc_init(nv_alloc_t *, const nv_alloc_ops_t *, /* args */ ...); void nv_alloc_reset(nv_alloc_t *); void nv_alloc_fini(nv_alloc_t *); /* list management */ int nvlist_alloc(nvlist_t **, uint_t, int); void nvlist_free(nvlist_t *); int nvlist_size(nvlist_t *, size_t *, int); int nvlist_pack(nvlist_t *, char **, size_t *, int, int); int nvlist_unpack(char *, size_t, nvlist_t **, int); int nvlist_dup(nvlist_t *, nvlist_t **, int); int nvlist_merge(nvlist_t *, nvlist_t *, int); uint_t nvlist_nvflag(nvlist_t *); int nvlist_xalloc(nvlist_t **, uint_t, nv_alloc_t *); int nvlist_xpack(nvlist_t *, char **, size_t *, int, nv_alloc_t *); int nvlist_xunpack(char *, size_t, nvlist_t **, nv_alloc_t *); int nvlist_xdup(nvlist_t *, nvlist_t **, nv_alloc_t *); nv_alloc_t *nvlist_lookup_nv_alloc(nvlist_t *); int nvlist_add_nvpair(nvlist_t *, nvpair_t *); int nvlist_add_boolean(nvlist_t *, const char *); int nvlist_add_boolean_value(nvlist_t *, const char *, boolean_t); int nvlist_add_byte(nvlist_t *, const char *, uchar_t); int nvlist_add_int8(nvlist_t *, const char *, int8_t); int nvlist_add_uint8(nvlist_t *, const char *, uint8_t); int nvlist_add_int16(nvlist_t *, const char *, int16_t); int nvlist_add_uint16(nvlist_t *, const char *, uint16_t); int nvlist_add_int32(nvlist_t *, const char *, int32_t); int nvlist_add_uint32(nvlist_t *, const char *, uint32_t); int nvlist_add_int64(nvlist_t *, const char *, int64_t); int nvlist_add_uint64(nvlist_t *, const char *, uint64_t); int nvlist_add_string(nvlist_t *, const char *, const char *); int nvlist_add_nvlist(nvlist_t *, const char *, nvlist_t *); int nvlist_add_boolean_array(nvlist_t *, const char *, boolean_t *, uint_t); int nvlist_add_byte_array(nvlist_t *, const char *, uchar_t *, uint_t); int nvlist_add_int8_array(nvlist_t *, const char *, int8_t *, uint_t); int nvlist_add_uint8_array(nvlist_t *, const char *, uint8_t *, uint_t); int nvlist_add_int16_array(nvlist_t *, const char *, int16_t *, uint_t); int nvlist_add_uint16_array(nvlist_t *, const char *, uint16_t *, uint_t); int nvlist_add_int32_array(nvlist_t *, const char *, int32_t *, uint_t); int nvlist_add_uint32_array(nvlist_t *, const char *, uint32_t *, uint_t); int nvlist_add_int64_array(nvlist_t *, const char *, int64_t *, uint_t); int nvlist_add_uint64_array(nvlist_t *, const char *, uint64_t *, uint_t); int nvlist_add_string_array(nvlist_t *, const char *, char *const *, uint_t); int nvlist_add_nvlist_array(nvlist_t *, const char *, nvlist_t **, uint_t); int nvlist_add_hrtime(nvlist_t *, const char *, hrtime_t); #if !defined(_KERNEL) int nvlist_add_double(nvlist_t *, const char *, double); #endif int nvlist_remove(nvlist_t *, const char *, data_type_t); int nvlist_remove_all(nvlist_t *, const char *); int nvlist_remove_nvpair(nvlist_t *, nvpair_t *); int nvlist_lookup_boolean(nvlist_t *, const char *); int nvlist_lookup_boolean_value(nvlist_t *, const char *, boolean_t *); int nvlist_lookup_byte(nvlist_t *, const char *, uchar_t *); int nvlist_lookup_int8(nvlist_t *, const char *, int8_t *); int nvlist_lookup_uint8(nvlist_t *, const char *, uint8_t *); int nvlist_lookup_int16(nvlist_t *, const char *, int16_t *); int nvlist_lookup_uint16(nvlist_t *, const char *, uint16_t *); int nvlist_lookup_int32(nvlist_t *, const char *, int32_t *); int nvlist_lookup_uint32(nvlist_t *, const char *, uint32_t *); int nvlist_lookup_int64(nvlist_t *, const char *, int64_t *); int nvlist_lookup_uint64(nvlist_t *, const char *, uint64_t *); int nvlist_lookup_string(nvlist_t *, const char *, char **); int nvlist_lookup_nvlist(nvlist_t *, const char *, nvlist_t **); int nvlist_lookup_boolean_array(nvlist_t *, const char *, boolean_t **, uint_t *); int nvlist_lookup_byte_array(nvlist_t *, const char *, uchar_t **, uint_t *); int nvlist_lookup_int8_array(nvlist_t *, const char *, int8_t **, uint_t *); int nvlist_lookup_uint8_array(nvlist_t *, const char *, uint8_t **, uint_t *); int nvlist_lookup_int16_array(nvlist_t *, const char *, int16_t **, uint_t *); int nvlist_lookup_uint16_array(nvlist_t *, const char *, uint16_t **, uint_t *); int nvlist_lookup_int32_array(nvlist_t *, const char *, int32_t **, uint_t *); int nvlist_lookup_uint32_array(nvlist_t *, const char *, uint32_t **, uint_t *); int nvlist_lookup_int64_array(nvlist_t *, const char *, int64_t **, uint_t *); int nvlist_lookup_uint64_array(nvlist_t *, const char *, uint64_t **, uint_t *); int nvlist_lookup_string_array(nvlist_t *, const char *, char ***, uint_t *); int nvlist_lookup_nvlist_array(nvlist_t *, const char *, nvlist_t ***, uint_t *); int nvlist_lookup_hrtime(nvlist_t *, const char *, hrtime_t *); int nvlist_lookup_pairs(nvlist_t *, int, ...); #if !defined(_KERNEL) int nvlist_lookup_double(nvlist_t *, const char *, double *); #endif int nvlist_lookup_nvpair(nvlist_t *, const char *, nvpair_t **); int nvlist_lookup_nvpair_embedded_index(nvlist_t *, const char *, nvpair_t **, int *, char **); boolean_t nvlist_exists(nvlist_t *, const char *); boolean_t nvlist_empty(nvlist_t *); /* processing nvpair */ nvpair_t *nvlist_next_nvpair(nvlist_t *, nvpair_t *); nvpair_t *nvlist_prev_nvpair(nvlist_t *, nvpair_t *); char *nvpair_name(nvpair_t *); data_type_t nvpair_type(nvpair_t *); int nvpair_type_is_array(nvpair_t *); int nvpair_value_boolean_value(nvpair_t *, boolean_t *); int nvpair_value_byte(nvpair_t *, uchar_t *); int nvpair_value_int8(nvpair_t *, int8_t *); int nvpair_value_uint8(nvpair_t *, uint8_t *); int nvpair_value_int16(nvpair_t *, int16_t *); int nvpair_value_uint16(nvpair_t *, uint16_t *); int nvpair_value_int32(nvpair_t *, int32_t *); int nvpair_value_uint32(nvpair_t *, uint32_t *); int nvpair_value_int64(nvpair_t *, int64_t *); int nvpair_value_uint64(nvpair_t *, uint64_t *); int nvpair_value_string(nvpair_t *, char **); int nvpair_value_nvlist(nvpair_t *, nvlist_t **); int nvpair_value_boolean_array(nvpair_t *, boolean_t **, uint_t *); int nvpair_value_byte_array(nvpair_t *, uchar_t **, uint_t *); int nvpair_value_int8_array(nvpair_t *, int8_t **, uint_t *); int nvpair_value_uint8_array(nvpair_t *, uint8_t **, uint_t *); int nvpair_value_int16_array(nvpair_t *, int16_t **, uint_t *); int nvpair_value_uint16_array(nvpair_t *, uint16_t **, uint_t *); int nvpair_value_int32_array(nvpair_t *, int32_t **, uint_t *); int nvpair_value_uint32_array(nvpair_t *, uint32_t **, uint_t *); int nvpair_value_int64_array(nvpair_t *, int64_t **, uint_t *); int nvpair_value_uint64_array(nvpair_t *, uint64_t **, uint_t *); int nvpair_value_string_array(nvpair_t *, char ***, uint_t *); int nvpair_value_nvlist_array(nvpair_t *, nvlist_t ***, uint_t *); int nvpair_value_hrtime(nvpair_t *, hrtime_t *); #if !defined(_KERNEL) int nvpair_value_double(nvpair_t *, double *); #endif nvlist_t *fnvlist_alloc(void); void fnvlist_free(nvlist_t *); size_t fnvlist_size(nvlist_t *); char *fnvlist_pack(nvlist_t *, size_t *); void fnvlist_pack_free(char *, size_t); nvlist_t *fnvlist_unpack(char *, size_t); nvlist_t *fnvlist_dup(nvlist_t *); void fnvlist_merge(nvlist_t *, nvlist_t *); size_t fnvlist_num_pairs(nvlist_t *); void fnvlist_add_boolean(nvlist_t *, const char *); void fnvlist_add_boolean_value(nvlist_t *, const char *, boolean_t); void fnvlist_add_byte(nvlist_t *, const char *, uchar_t); void fnvlist_add_int8(nvlist_t *, const char *, int8_t); void fnvlist_add_uint8(nvlist_t *, const char *, uint8_t); void fnvlist_add_int16(nvlist_t *, const char *, int16_t); void fnvlist_add_uint16(nvlist_t *, const char *, uint16_t); void fnvlist_add_int32(nvlist_t *, const char *, int32_t); void fnvlist_add_uint32(nvlist_t *, const char *, uint32_t); void fnvlist_add_int64(nvlist_t *, const char *, int64_t); void fnvlist_add_uint64(nvlist_t *, const char *, uint64_t); void fnvlist_add_string(nvlist_t *, const char *, const char *); void fnvlist_add_nvlist(nvlist_t *, const char *, nvlist_t *); void fnvlist_add_nvpair(nvlist_t *, nvpair_t *); void fnvlist_add_boolean_array(nvlist_t *, const char *, boolean_t *, uint_t); void fnvlist_add_byte_array(nvlist_t *, const char *, uchar_t *, uint_t); void fnvlist_add_int8_array(nvlist_t *, const char *, int8_t *, uint_t); void fnvlist_add_uint8_array(nvlist_t *, const char *, uint8_t *, uint_t); void fnvlist_add_int16_array(nvlist_t *, const char *, int16_t *, uint_t); void fnvlist_add_uint16_array(nvlist_t *, const char *, uint16_t *, uint_t); void fnvlist_add_int32_array(nvlist_t *, const char *, int32_t *, uint_t); void fnvlist_add_uint32_array(nvlist_t *, const char *, uint32_t *, uint_t); void fnvlist_add_int64_array(nvlist_t *, const char *, int64_t *, uint_t); void fnvlist_add_uint64_array(nvlist_t *, const char *, uint64_t *, uint_t); void fnvlist_add_string_array(nvlist_t *, const char *, char * const *, uint_t); void fnvlist_add_nvlist_array(nvlist_t *, const char *, nvlist_t **, uint_t); void fnvlist_remove(nvlist_t *, const char *); void fnvlist_remove_nvpair(nvlist_t *, nvpair_t *); nvpair_t *fnvlist_lookup_nvpair(nvlist_t *, const char *); boolean_t fnvlist_lookup_boolean(nvlist_t *, const char *); boolean_t fnvlist_lookup_boolean_value(nvlist_t *, const char *); uchar_t fnvlist_lookup_byte(nvlist_t *, const char *); int8_t fnvlist_lookup_int8(nvlist_t *, const char *); int16_t fnvlist_lookup_int16(nvlist_t *, const char *); int32_t fnvlist_lookup_int32(nvlist_t *, const char *); int64_t fnvlist_lookup_int64(nvlist_t *, const char *); uint8_t fnvlist_lookup_uint8(nvlist_t *, const char *); uint16_t fnvlist_lookup_uint16(nvlist_t *, const char *); uint32_t fnvlist_lookup_uint32(nvlist_t *, const char *); uint64_t fnvlist_lookup_uint64(nvlist_t *, const char *); char *fnvlist_lookup_string(nvlist_t *, const char *); nvlist_t *fnvlist_lookup_nvlist(nvlist_t *, const char *); boolean_t *fnvlist_lookup_boolean_array(nvlist_t *, const char *, uint_t *); uchar_t *fnvlist_lookup_byte_array(nvlist_t *, const char *, uint_t *); int8_t *fnvlist_lookup_int8_array(nvlist_t *, const char *, uint_t *); uint8_t *fnvlist_lookup_uint8_array(nvlist_t *, const char *, uint_t *); int16_t *fnvlist_lookup_int16_array(nvlist_t *, const char *, uint_t *); uint16_t *fnvlist_lookup_uint16_array(nvlist_t *, const char *, uint_t *); int32_t *fnvlist_lookup_int32_array(nvlist_t *, const char *, uint_t *); uint32_t *fnvlist_lookup_uint32_array(nvlist_t *, const char *, uint_t *); int64_t *fnvlist_lookup_int64_array(nvlist_t *, const char *, uint_t *); uint64_t *fnvlist_lookup_uint64_array(nvlist_t *, const char *, uint_t *); boolean_t fnvpair_value_boolean_value(nvpair_t *nvp); uchar_t fnvpair_value_byte(nvpair_t *nvp); int8_t fnvpair_value_int8(nvpair_t *nvp); int16_t fnvpair_value_int16(nvpair_t *nvp); int32_t fnvpair_value_int32(nvpair_t *nvp); int64_t fnvpair_value_int64(nvpair_t *nvp); uint8_t fnvpair_value_uint8(nvpair_t *nvp); uint16_t fnvpair_value_uint16(nvpair_t *nvp); uint32_t fnvpair_value_uint32(nvpair_t *nvp); uint64_t fnvpair_value_uint64(nvpair_t *nvp); char *fnvpair_value_string(nvpair_t *nvp); nvlist_t *fnvpair_value_nvlist(nvpair_t *nvp); #ifdef __cplusplus } #endif #endif /* _SYS_NVPAIR_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/spa_impl.h0000644000000000000000000000007413612141511017624 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.532427618 zfs-0.8.3/include/sys/spa_impl.h0000644016037001603700000004202313612141511017622 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. * Copyright 2013 Saso Kiselkov. All rights reserved. * Copyright (c) 2016 Actifio, Inc. All rights reserved. * Copyright (c) 2017 Datto Inc. * Copyright (c) 2017, Intel Corporation. */ #ifndef _SYS_SPA_IMPL_H #define _SYS_SPA_IMPL_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct spa_error_entry { zbookmark_phys_t se_bookmark; char *se_name; avl_node_t se_avl; } spa_error_entry_t; typedef struct spa_history_phys { uint64_t sh_pool_create_len; /* ending offset of zpool create */ uint64_t sh_phys_max_off; /* physical EOF */ uint64_t sh_bof; /* logical BOF */ uint64_t sh_eof; /* logical EOF */ uint64_t sh_records_lost; /* num of records overwritten */ } spa_history_phys_t; /* * All members must be uint64_t, for byteswap purposes. */ typedef struct spa_removing_phys { uint64_t sr_state; /* dsl_scan_state_t */ /* * The vdev ID that we most recently attempted to remove, * or -1 if no removal has been attempted. */ uint64_t sr_removing_vdev; /* * The vdev ID that we most recently successfully removed, * or -1 if no devices have been removed. */ uint64_t sr_prev_indirect_vdev; uint64_t sr_start_time; uint64_t sr_end_time; /* * Note that we can not use the space map's or indirect mapping's * accounting as a substitute for these values, because we need to * count frees of not-yet-copied data as though it did the copy. * Otherwise, we could get into a situation where copied > to_copy, * or we complete before copied == to_copy. */ uint64_t sr_to_copy; /* bytes that need to be copied */ uint64_t sr_copied; /* bytes that have been copied or freed */ } spa_removing_phys_t; /* * This struct is stored as an entry in the DMU_POOL_DIRECTORY_OBJECT * (with key DMU_POOL_CONDENSING_INDIRECT). It is present if a condense * of an indirect vdev's mapping object is in progress. */ typedef struct spa_condensing_indirect_phys { /* * The vdev ID of the indirect vdev whose indirect mapping is * being condensed. */ uint64_t scip_vdev; /* * The vdev's old obsolete spacemap. This spacemap's contents are * being integrated into the new mapping. */ uint64_t scip_prev_obsolete_sm_object; /* * The new mapping object that is being created. */ uint64_t scip_next_mapping_object; } spa_condensing_indirect_phys_t; struct spa_aux_vdev { uint64_t sav_object; /* MOS object for device list */ nvlist_t *sav_config; /* cached device config */ vdev_t **sav_vdevs; /* devices */ int sav_count; /* number devices */ boolean_t sav_sync; /* sync the device list */ nvlist_t **sav_pending; /* pending device additions */ uint_t sav_npending; /* # pending devices */ }; typedef struct spa_config_lock { kmutex_t scl_lock; kthread_t *scl_writer; int scl_write_wanted; kcondvar_t scl_cv; zfs_refcount_t scl_count; } spa_config_lock_t; typedef struct spa_config_dirent { list_node_t scd_link; char *scd_path; } spa_config_dirent_t; typedef enum zio_taskq_type { ZIO_TASKQ_ISSUE = 0, ZIO_TASKQ_ISSUE_HIGH, ZIO_TASKQ_INTERRUPT, ZIO_TASKQ_INTERRUPT_HIGH, ZIO_TASKQ_TYPES } zio_taskq_type_t; /* * State machine for the zpool-poolname process. The states transitions * are done as follows: * * From To Routine * PROC_NONE -> PROC_CREATED spa_activate() * PROC_CREATED -> PROC_ACTIVE spa_thread() * PROC_ACTIVE -> PROC_DEACTIVATE spa_deactivate() * PROC_DEACTIVATE -> PROC_GONE spa_thread() * PROC_GONE -> PROC_NONE spa_deactivate() */ typedef enum spa_proc_state { SPA_PROC_NONE, /* spa_proc = &p0, no process created */ SPA_PROC_CREATED, /* spa_activate() has proc, is waiting */ SPA_PROC_ACTIVE, /* taskqs created, spa_proc set */ SPA_PROC_DEACTIVATE, /* spa_deactivate() requests process exit */ SPA_PROC_GONE /* spa_thread() is exiting, spa_proc = &p0 */ } spa_proc_state_t; typedef struct spa_taskqs { uint_t stqs_count; taskq_t **stqs_taskq; } spa_taskqs_t; typedef enum spa_all_vdev_zap_action { AVZ_ACTION_NONE = 0, AVZ_ACTION_DESTROY, /* Destroy all per-vdev ZAPs and the AVZ. */ AVZ_ACTION_REBUILD, /* Populate the new AVZ, see spa_avz_rebuild */ AVZ_ACTION_INITIALIZE } spa_avz_action_t; typedef enum spa_config_source { SPA_CONFIG_SRC_NONE = 0, SPA_CONFIG_SRC_SCAN, /* scan of path (default: /dev/dsk) */ SPA_CONFIG_SRC_CACHEFILE, /* any cachefile */ SPA_CONFIG_SRC_TRYIMPORT, /* returned from call to tryimport */ SPA_CONFIG_SRC_SPLIT, /* new pool in a pool split */ SPA_CONFIG_SRC_MOS /* MOS, but not always from right txg */ } spa_config_source_t; struct spa { /* * Fields protected by spa_namespace_lock. */ char spa_name[ZFS_MAX_DATASET_NAME_LEN]; /* pool name */ char *spa_comment; /* comment */ avl_node_t spa_avl; /* node in spa_namespace_avl */ nvlist_t *spa_config; /* last synced config */ nvlist_t *spa_config_syncing; /* currently syncing config */ nvlist_t *spa_config_splitting; /* config for splitting */ nvlist_t *spa_load_info; /* info and errors from load */ uint64_t spa_config_txg; /* txg of last config change */ int spa_sync_pass; /* iterate-to-convergence */ pool_state_t spa_state; /* pool state */ int spa_inject_ref; /* injection references */ uint8_t spa_sync_on; /* sync threads are running */ spa_load_state_t spa_load_state; /* current load operation */ boolean_t spa_indirect_vdevs_loaded; /* mappings loaded? */ boolean_t spa_trust_config; /* do we trust vdev tree? */ spa_config_source_t spa_config_source; /* where config comes from? */ uint64_t spa_import_flags; /* import specific flags */ spa_taskqs_t spa_zio_taskq[ZIO_TYPES][ZIO_TASKQ_TYPES]; dsl_pool_t *spa_dsl_pool; boolean_t spa_is_initializing; /* true while opening pool */ boolean_t spa_is_exporting; /* true while exporting pool */ metaslab_class_t *spa_normal_class; /* normal data class */ metaslab_class_t *spa_log_class; /* intent log data class */ metaslab_class_t *spa_special_class; /* special allocation class */ metaslab_class_t *spa_dedup_class; /* dedup allocation class */ uint64_t spa_first_txg; /* first txg after spa_open() */ uint64_t spa_final_txg; /* txg of export/destroy */ uint64_t spa_freeze_txg; /* freeze pool at this txg */ uint64_t spa_load_max_txg; /* best initial ub_txg */ uint64_t spa_claim_max_txg; /* highest claimed birth txg */ inode_timespec_t spa_loaded_ts; /* 1st successful open time */ objset_t *spa_meta_objset; /* copy of dp->dp_meta_objset */ kmutex_t spa_evicting_os_lock; /* Evicting objset list lock */ list_t spa_evicting_os_list; /* Objsets being evicted. */ kcondvar_t spa_evicting_os_cv; /* Objset Eviction Completion */ txg_list_t spa_vdev_txg_list; /* per-txg dirty vdev list */ vdev_t *spa_root_vdev; /* top-level vdev container */ int spa_min_ashift; /* of vdevs in normal class */ int spa_max_ashift; /* of vdevs in normal class */ uint64_t spa_config_guid; /* config pool guid */ uint64_t spa_load_guid; /* spa_load initialized guid */ uint64_t spa_last_synced_guid; /* last synced guid */ list_t spa_config_dirty_list; /* vdevs with dirty config */ list_t spa_state_dirty_list; /* vdevs with dirty state */ /* * spa_alloc_locks and spa_alloc_trees are arrays, whose lengths are * stored in spa_alloc_count. There is one tree and one lock for each * allocator, to help improve allocation performance in write-heavy * workloads. */ kmutex_t *spa_alloc_locks; avl_tree_t *spa_alloc_trees; int spa_alloc_count; spa_aux_vdev_t spa_spares; /* hot spares */ spa_aux_vdev_t spa_l2cache; /* L2ARC cache devices */ nvlist_t *spa_label_features; /* Features for reading MOS */ uint64_t spa_config_object; /* MOS object for pool config */ uint64_t spa_config_generation; /* config generation number */ uint64_t spa_syncing_txg; /* txg currently syncing */ bpobj_t spa_deferred_bpobj; /* deferred-free bplist */ bplist_t spa_free_bplist[TXG_SIZE]; /* bplist of stuff to free */ zio_cksum_salt_t spa_cksum_salt; /* secret salt for cksum */ /* checksum context templates */ kmutex_t spa_cksum_tmpls_lock; void *spa_cksum_tmpls[ZIO_CHECKSUM_FUNCTIONS]; uberblock_t spa_ubsync; /* last synced uberblock */ uberblock_t spa_uberblock; /* current uberblock */ boolean_t spa_extreme_rewind; /* rewind past deferred frees */ kmutex_t spa_scrub_lock; /* resilver/scrub lock */ uint64_t spa_scrub_inflight; /* in-flight scrub bytes */ /* in-flight verification bytes */ uint64_t spa_load_verify_bytes; kcondvar_t spa_scrub_io_cv; /* scrub I/O completion */ uint8_t spa_scrub_active; /* active or suspended? */ uint8_t spa_scrub_type; /* type of scrub we're doing */ uint8_t spa_scrub_finished; /* indicator to rotate logs */ uint8_t spa_scrub_started; /* started since last boot */ uint8_t spa_scrub_reopen; /* scrub doing vdev_reopen */ uint64_t spa_scan_pass_start; /* start time per pass/reboot */ uint64_t spa_scan_pass_scrub_pause; /* scrub pause time */ uint64_t spa_scan_pass_scrub_spent_paused; /* total paused */ uint64_t spa_scan_pass_exam; /* examined bytes per pass */ uint64_t spa_scan_pass_issued; /* issued bytes per pass */ /* * We are in the middle of a resilver, and another resilver * is needed once this one completes. This is set iff any * vdev_resilver_deferred is set. */ boolean_t spa_resilver_deferred; kmutex_t spa_async_lock; /* protect async state */ kthread_t *spa_async_thread; /* thread doing async task */ int spa_async_suspended; /* async tasks suspended */ kcondvar_t spa_async_cv; /* wait for thread_exit() */ uint16_t spa_async_tasks; /* async task mask */ uint64_t spa_missing_tvds; /* unopenable tvds on load */ uint64_t spa_missing_tvds_allowed; /* allow loading spa? */ spa_removing_phys_t spa_removing_phys; spa_vdev_removal_t *spa_vdev_removal; spa_condensing_indirect_phys_t spa_condensing_indirect_phys; spa_condensing_indirect_t *spa_condensing_indirect; zthr_t *spa_condense_zthr; /* zthr doing condense. */ uint64_t spa_checkpoint_txg; /* the txg of the checkpoint */ spa_checkpoint_info_t spa_checkpoint_info; /* checkpoint accounting */ zthr_t *spa_checkpoint_discard_zthr; char *spa_root; /* alternate root directory */ uint64_t spa_ena; /* spa-wide ereport ENA */ int spa_last_open_failed; /* error if last open failed */ uint64_t spa_last_ubsync_txg; /* "best" uberblock txg */ uint64_t spa_last_ubsync_txg_ts; /* timestamp from that ub */ uint64_t spa_load_txg; /* ub txg that loaded */ uint64_t spa_load_txg_ts; /* timestamp from that ub */ uint64_t spa_load_meta_errors; /* verify metadata err count */ uint64_t spa_load_data_errors; /* verify data err count */ uint64_t spa_verify_min_txg; /* start txg of verify scrub */ kmutex_t spa_errlog_lock; /* error log lock */ uint64_t spa_errlog_last; /* last error log object */ uint64_t spa_errlog_scrub; /* scrub error log object */ kmutex_t spa_errlist_lock; /* error list/ereport lock */ avl_tree_t spa_errlist_last; /* last error list */ avl_tree_t spa_errlist_scrub; /* scrub error list */ uint64_t spa_deflate; /* should we deflate? */ uint64_t spa_history; /* history object */ kmutex_t spa_history_lock; /* history lock */ vdev_t *spa_pending_vdev; /* pending vdev additions */ kmutex_t spa_props_lock; /* property lock */ uint64_t spa_pool_props_object; /* object for properties */ uint64_t spa_bootfs; /* default boot filesystem */ uint64_t spa_failmode; /* failure mode for the pool */ uint64_t spa_deadman_failmode; /* failure mode for deadman */ uint64_t spa_delegation; /* delegation on/off */ list_t spa_config_list; /* previous cache file(s) */ /* per-CPU array of root of async I/O: */ zio_t **spa_async_zio_root; zio_t *spa_suspend_zio_root; /* root of all suspended I/O */ zio_t *spa_txg_zio[TXG_SIZE]; /* spa_sync() waits for this */ kmutex_t spa_suspend_lock; /* protects suspend_zio_root */ kcondvar_t spa_suspend_cv; /* notification of resume */ zio_suspend_reason_t spa_suspended; /* pool is suspended */ uint8_t spa_claiming; /* pool is doing zil_claim() */ boolean_t spa_is_root; /* pool is root */ int spa_minref; /* num refs when first opened */ int spa_mode; /* FREAD | FWRITE */ spa_log_state_t spa_log_state; /* log state */ uint64_t spa_autoexpand; /* lun expansion on/off */ ddt_t *spa_ddt[ZIO_CHECKSUM_FUNCTIONS]; /* in-core DDTs */ uint64_t spa_ddt_stat_object; /* DDT statistics */ uint64_t spa_dedup_dspace; /* Cache get_dedup_dspace() */ uint64_t spa_dedup_ditto; /* dedup ditto threshold */ uint64_t spa_dedup_checksum; /* default dedup checksum */ uint64_t spa_dspace; /* dspace in normal class */ kmutex_t spa_vdev_top_lock; /* dueling offline/remove */ kmutex_t spa_proc_lock; /* protects spa_proc* */ kcondvar_t spa_proc_cv; /* spa_proc_state transitions */ spa_proc_state_t spa_proc_state; /* see definition */ proc_t *spa_proc; /* "zpool-poolname" process */ uint64_t spa_did; /* if procp != p0, did of t1 */ boolean_t spa_autoreplace; /* autoreplace set in open */ int spa_vdev_locks; /* locks grabbed */ uint64_t spa_creation_version; /* version at pool creation */ uint64_t spa_prev_software_version; /* See ub_software_version */ uint64_t spa_feat_for_write_obj; /* required to write to pool */ uint64_t spa_feat_for_read_obj; /* required to read from pool */ uint64_t spa_feat_desc_obj; /* Feature descriptions */ uint64_t spa_feat_enabled_txg_obj; /* Feature enabled txg */ kmutex_t spa_feat_stats_lock; /* protects spa_feat_stats */ nvlist_t *spa_feat_stats; /* Cache of enabled features */ /* cache feature refcounts */ uint64_t spa_feat_refcount_cache[SPA_FEATURES]; taskqid_t spa_deadman_tqid; /* Task id */ uint64_t spa_deadman_calls; /* number of deadman calls */ hrtime_t spa_sync_starttime; /* starting time of spa_sync */ uint64_t spa_deadman_synctime; /* deadman sync expiration */ uint64_t spa_deadman_ziotime; /* deadman zio expiration */ uint64_t spa_all_vdev_zaps; /* ZAP of per-vd ZAP obj #s */ spa_avz_action_t spa_avz_action; /* destroy/rebuild AVZ? */ uint64_t spa_autotrim; /* automatic background trim? */ uint64_t spa_errata; /* errata issues detected */ spa_stats_t spa_stats; /* assorted spa statistics */ spa_keystore_t spa_keystore; /* loaded crypto keys */ /* arc_memory_throttle() parameters during low memory condition */ uint64_t spa_lowmem_page_load; /* memory load during txg */ uint64_t spa_lowmem_last_txg; /* txg window start */ hrtime_t spa_ccw_fail_time; /* Conf cache write fail time */ taskq_t *spa_zvol_taskq; /* Taskq for minor management */ taskq_t *spa_prefetch_taskq; /* Taskq for prefetch threads */ uint64_t spa_multihost; /* multihost aware (mmp) */ mmp_thread_t spa_mmp; /* multihost mmp thread */ list_t spa_leaf_list; /* list of leaf vdevs */ uint64_t spa_leaf_list_gen; /* track leaf_list changes */ uint32_t spa_hostid; /* cached system hostid */ /* * spa_refcount & spa_config_lock must be the last elements * because zfs_refcount_t changes size based on compilation options. * In order for the MDB module to function correctly, the other * fields must remain in the same location. */ spa_config_lock_t spa_config_lock[SCL_LOCKS]; /* config changes */ zfs_refcount_t spa_refcount; /* number of opens */ taskq_t *spa_upgrade_taskq; /* taskq for upgrade jobs */ }; extern char *spa_config_path; extern void spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q, task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent); extern void spa_taskq_dispatch_sync(spa_t *, zio_type_t t, zio_taskq_type_t q, task_func_t *func, void *arg, uint_t flags); extern void spa_load_spares(spa_t *spa); extern void spa_load_l2cache(spa_t *spa); extern sysevent_t *spa_event_create(spa_t *spa, vdev_t *vd, nvlist_t *hist_nvl, const char *name); extern void spa_event_post(sysevent_t *ev); #ifdef __cplusplus } #endif #endif /* _SYS_SPA_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/space_map.h0000644000000000000000000000007413607166147017770 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.525427394 zfs-0.8.3/include/sys/space_map.h0000644016037001603700000002010213607166147017760 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012, 2018 by Delphix. All rights reserved. */ #ifndef _SYS_SPACE_MAP_H #define _SYS_SPACE_MAP_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* * The size of the space map object has increased to include a histogram. * The SPACE_MAP_SIZE_V0 designates the original size and is used to * maintain backward compatibility. */ #define SPACE_MAP_SIZE_V0 (3 * sizeof (uint64_t)) #define SPACE_MAP_HISTOGRAM_SIZE 32 /* * The space_map_phys is the on-disk representation of the space map. * Consumers of space maps should never reference any of the members of this * structure directly. These members may only be updated in syncing context. * * Note the smp_object is no longer used but remains in the structure * for backward compatibility. */ typedef struct space_map_phys { /* object number: not needed but kept for backwards compatibility */ uint64_t smp_object; /* length of the object in bytes */ uint64_t smp_length; /* space allocated from the map */ int64_t smp_alloc; /* reserved */ uint64_t smp_pad[5]; /* * The smp_histogram maintains a histogram of free regions. Each * bucket, smp_histogram[i], contains the number of free regions * whose size is: * 2^(i+sm_shift) <= size of free region in bytes < 2^(i+sm_shift+1) */ uint64_t smp_histogram[SPACE_MAP_HISTOGRAM_SIZE]; } space_map_phys_t; /* * The space map object defines a region of space, its size, how much is * allocated, and the on-disk object that stores this information. * Consumers of space maps may only access the members of this structure. * * Note: the space_map may not be accessed concurrently; consumers * must provide external locking if required. */ typedef struct space_map { uint64_t sm_start; /* start of map */ uint64_t sm_size; /* size of map */ uint8_t sm_shift; /* unit shift */ objset_t *sm_os; /* objset for this map */ uint64_t sm_object; /* object id for this map */ uint32_t sm_blksz; /* block size for space map */ dmu_buf_t *sm_dbuf; /* space_map_phys_t dbuf */ space_map_phys_t *sm_phys; /* on-disk space map */ } space_map_t; /* * debug entry * * 2 2 10 50 * +-----+-----+------------+----------------------------------+ * | 1 0 | act | syncpass | txg (lower bits) | * +-----+-----+------------+----------------------------------+ * 63 62 61 60 59 50 49 0 * * * one-word entry * * 1 47 1 15 * +-----------------------------------------------------------+ * | 0 | offset (sm_shift units) | type | run | * +-----------------------------------------------------------+ * 63 62 16 15 14 0 * * * two-word entry * * 2 2 36 24 * +-----+-----+---------------------------+-------------------+ * | 1 1 | pad | run | vdev | * +-----+-----+---------------------------+-------------------+ * 63 62 61 60 59 24 23 0 * * 1 63 * +------+----------------------------------------------------+ * | type | offset | * +------+----------------------------------------------------+ * 63 62 0 * * Note that a two-word entry will not straddle a block boundary. * If necessary, the last word of a block will be padded with a * debug entry (with act = syncpass = txg = 0). */ typedef enum { SM_ALLOC, SM_FREE } maptype_t; typedef struct space_map_entry { maptype_t sme_type; uint32_t sme_vdev; /* max is 2^24-1; SM_NO_VDEVID if not present */ uint64_t sme_offset; /* max is 2^63-1; units of sm_shift */ uint64_t sme_run; /* max is 2^36; units of sm_shift */ } space_map_entry_t; #define SM_NO_VDEVID (1 << SPA_VDEVBITS) /* one-word entry constants */ #define SM_DEBUG_PREFIX 2 #define SM_OFFSET_BITS 47 #define SM_RUN_BITS 15 /* two-word entry constants */ #define SM2_PREFIX 3 #define SM2_OFFSET_BITS 63 #define SM2_RUN_BITS 36 #define SM_PREFIX_DECODE(x) BF64_DECODE(x, 62, 2) #define SM_PREFIX_ENCODE(x) BF64_ENCODE(x, 62, 2) #define SM_DEBUG_ACTION_DECODE(x) BF64_DECODE(x, 60, 2) #define SM_DEBUG_ACTION_ENCODE(x) BF64_ENCODE(x, 60, 2) #define SM_DEBUG_SYNCPASS_DECODE(x) BF64_DECODE(x, 50, 10) #define SM_DEBUG_SYNCPASS_ENCODE(x) BF64_ENCODE(x, 50, 10) #define SM_DEBUG_TXG_DECODE(x) BF64_DECODE(x, 0, 50) #define SM_DEBUG_TXG_ENCODE(x) BF64_ENCODE(x, 0, 50) #define SM_OFFSET_DECODE(x) BF64_DECODE(x, 16, SM_OFFSET_BITS) #define SM_OFFSET_ENCODE(x) BF64_ENCODE(x, 16, SM_OFFSET_BITS) #define SM_TYPE_DECODE(x) BF64_DECODE(x, 15, 1) #define SM_TYPE_ENCODE(x) BF64_ENCODE(x, 15, 1) #define SM_RUN_DECODE(x) (BF64_DECODE(x, 0, SM_RUN_BITS) + 1) #define SM_RUN_ENCODE(x) BF64_ENCODE((x) - 1, 0, SM_RUN_BITS) #define SM_RUN_MAX SM_RUN_DECODE(~0ULL) #define SM_OFFSET_MAX SM_OFFSET_DECODE(~0ULL) #define SM2_RUN_DECODE(x) (BF64_DECODE(x, SPA_VDEVBITS, SM2_RUN_BITS) + 1) #define SM2_RUN_ENCODE(x) BF64_ENCODE((x) - 1, SPA_VDEVBITS, SM2_RUN_BITS) #define SM2_VDEV_DECODE(x) BF64_DECODE(x, 0, SPA_VDEVBITS) #define SM2_VDEV_ENCODE(x) BF64_ENCODE(x, 0, SPA_VDEVBITS) #define SM2_TYPE_DECODE(x) BF64_DECODE(x, SM2_OFFSET_BITS, 1) #define SM2_TYPE_ENCODE(x) BF64_ENCODE(x, SM2_OFFSET_BITS, 1) #define SM2_OFFSET_DECODE(x) BF64_DECODE(x, 0, SM2_OFFSET_BITS) #define SM2_OFFSET_ENCODE(x) BF64_ENCODE(x, 0, SM2_OFFSET_BITS) #define SM2_RUN_MAX SM2_RUN_DECODE(~0ULL) #define SM2_OFFSET_MAX SM2_OFFSET_DECODE(~0ULL) boolean_t sm_entry_is_debug(uint64_t e); boolean_t sm_entry_is_single_word(uint64_t e); boolean_t sm_entry_is_double_word(uint64_t e); typedef int (*sm_cb_t)(space_map_entry_t *sme, void *arg); int space_map_load(space_map_t *sm, range_tree_t *rt, maptype_t maptype); int space_map_load_length(space_map_t *sm, range_tree_t *rt, maptype_t maptype, uint64_t length); int space_map_iterate(space_map_t *sm, uint64_t length, sm_cb_t callback, void *arg); int space_map_incremental_destroy(space_map_t *sm, sm_cb_t callback, void *arg, dmu_tx_t *tx); boolean_t space_map_histogram_verify(space_map_t *sm, range_tree_t *rt); void space_map_histogram_clear(space_map_t *sm); void space_map_histogram_add(space_map_t *sm, range_tree_t *rt, dmu_tx_t *tx); uint64_t space_map_object(space_map_t *sm); int64_t space_map_allocated(space_map_t *sm); uint64_t space_map_length(space_map_t *sm); void space_map_write(space_map_t *sm, range_tree_t *rt, maptype_t maptype, uint64_t vdev_id, dmu_tx_t *tx); uint64_t space_map_estimate_optimal_size(space_map_t *sm, range_tree_t *rt, uint64_t vdev_id); void space_map_truncate(space_map_t *sm, int blocksize, dmu_tx_t *tx); uint64_t space_map_alloc(objset_t *os, int blocksize, dmu_tx_t *tx); void space_map_free(space_map_t *sm, dmu_tx_t *tx); void space_map_free_obj(objset_t *os, uint64_t smobj, dmu_tx_t *tx); int space_map_open(space_map_t **smp, objset_t *os, uint64_t object, uint64_t start, uint64_t size, uint8_t shift); void space_map_close(space_map_t *sm); #ifdef __cplusplus } #endif #endif /* _SYS_SPACE_MAP_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zcp_prop.h0000644000000000000000000000007413607166132017666 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.634430894 zfs-0.8.3/include/sys/zcp_prop.h0000644016037001603700000000141413607166132017663 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2016 by Delphix. All rights reserved. */ #ifndef _SYS_ZCP_PROP_H #define _SYS_ZCP_PROP_H #ifdef __cplusplus extern "C" { #endif int zcp_load_get_lib(lua_State *state); boolean_t prop_valid_for_ds(dsl_dataset_t *ds, zfs_prop_t zfs_prop); #ifdef __cplusplus } #endif #endif /* _SYS_ZCP_PROP_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/range_tree.h0000644000000000000000000000007413607166147020153 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.504426719 zfs-0.8.3/include/sys/range_tree.h0000644016037001603700000001076413607166147020160 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2013, 2017 by Delphix. All rights reserved. */ #ifndef _SYS_RANGE_TREE_H #define _SYS_RANGE_TREE_H #include #include #ifdef __cplusplus extern "C" { #endif #define RANGE_TREE_HISTOGRAM_SIZE 64 typedef struct range_tree_ops range_tree_ops_t; /* * Note: the range_tree may not be accessed concurrently; consumers * must provide external locking if required. */ typedef struct range_tree { avl_tree_t rt_root; /* offset-ordered segment AVL tree */ uint64_t rt_space; /* sum of all segments in the map */ uint64_t rt_gap; /* allowable inter-segment gap */ range_tree_ops_t *rt_ops; /* rt_avl_compare should only be set if rt_arg is an AVL tree */ void *rt_arg; int (*rt_avl_compare)(const void *, const void *); /* * The rt_histogram maintains a histogram of ranges. Each bucket, * rt_histogram[i], contains the number of ranges whose size is: * 2^i <= size of range in bytes < 2^(i+1) */ uint64_t rt_histogram[RANGE_TREE_HISTOGRAM_SIZE]; } range_tree_t; typedef struct range_seg { avl_node_t rs_node; /* AVL node */ avl_node_t rs_pp_node; /* AVL picker-private node */ uint64_t rs_start; /* starting offset of this segment */ uint64_t rs_end; /* ending offset (non-inclusive) */ uint64_t rs_fill; /* actual fill if gap mode is on */ } range_seg_t; struct range_tree_ops { void (*rtop_create)(range_tree_t *rt, void *arg); void (*rtop_destroy)(range_tree_t *rt, void *arg); void (*rtop_add)(range_tree_t *rt, range_seg_t *rs, void *arg); void (*rtop_remove)(range_tree_t *rt, range_seg_t *rs, void *arg); void (*rtop_vacate)(range_tree_t *rt, void *arg); }; typedef void range_tree_func_t(void *arg, uint64_t start, uint64_t size); void range_tree_init(void); void range_tree_fini(void); range_tree_t *range_tree_create_impl(range_tree_ops_t *ops, void *arg, int (*avl_compare) (const void *, const void *), uint64_t gap); range_tree_t *range_tree_create(range_tree_ops_t *ops, void *arg); void range_tree_destroy(range_tree_t *rt); boolean_t range_tree_contains(range_tree_t *rt, uint64_t start, uint64_t size); void range_tree_verify_not_present(range_tree_t *rt, uint64_t start, uint64_t size); range_seg_t *range_tree_find(range_tree_t *rt, uint64_t start, uint64_t size); void range_tree_resize_segment(range_tree_t *rt, range_seg_t *rs, uint64_t newstart, uint64_t newsize); uint64_t range_tree_space(range_tree_t *rt); boolean_t range_tree_is_empty(range_tree_t *rt); void range_tree_swap(range_tree_t **rtsrc, range_tree_t **rtdst); void range_tree_stat_verify(range_tree_t *rt); uint64_t range_tree_min(range_tree_t *rt); uint64_t range_tree_max(range_tree_t *rt); uint64_t range_tree_span(range_tree_t *rt); void range_tree_add(void *arg, uint64_t start, uint64_t size); void range_tree_remove(void *arg, uint64_t start, uint64_t size); void range_tree_remove_fill(range_tree_t *rt, uint64_t start, uint64_t size); void range_tree_adjust_fill(range_tree_t *rt, range_seg_t *rs, int64_t delta); void range_tree_clear(range_tree_t *rt, uint64_t start, uint64_t size); void range_tree_vacate(range_tree_t *rt, range_tree_func_t *func, void *arg); void range_tree_walk(range_tree_t *rt, range_tree_func_t *func, void *arg); range_seg_t *range_tree_first(range_tree_t *rt); void rt_avl_create(range_tree_t *rt, void *arg); void rt_avl_destroy(range_tree_t *rt, void *arg); void rt_avl_add(range_tree_t *rt, range_seg_t *rs, void *arg); void rt_avl_remove(range_tree_t *rt, range_seg_t *rs, void *arg); void rt_avl_vacate(range_tree_t *rt, void *arg); extern struct range_tree_ops rt_avl_ops; #ifdef __cplusplus } #endif #endif /* _SYS_RANGE_TREE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_stat.h0000644000000000000000000000007413607166132017667 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.663431825 zfs-0.8.3/include/sys/zfs_stat.h0000644016037001603700000000272013607166132017665 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_FS_ZFS_STAT_H #define _SYS_FS_ZFS_STAT_H #ifdef _KERNEL #include #include #include #endif #ifdef __cplusplus extern "C" { #endif /* * A limited number of zpl level stats are retrievable * with an ioctl. zfs diff is the current consumer. */ typedef struct zfs_stat { uint64_t zs_gen; uint64_t zs_mode; uint64_t zs_links; uint64_t zs_ctime[2]; } zfs_stat_t; extern int zfs_obj_to_stats(objset_t *osp, uint64_t obj, zfs_stat_t *sb, char *buf, int len); #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_STAT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dmu_send.h0000644000000000000000000000007413607166147017636 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.435424505 zfs-0.8.3/include/sys/dmu_send.h0000644016037001603700000000373713607166147017645 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2014 by Delphix. All rights reserved. * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2013, Joyent, Inc. All rights reserved. */ #ifndef _DMU_SEND_H #define _DMU_SEND_H #include #include #include struct vnode; struct dsl_dataset; struct drr_begin; struct avl_tree; struct dmu_replay_record; int dmu_send(const char *tosnap, const char *fromsnap, boolean_t embedok, boolean_t large_block_ok, boolean_t compressok, boolean_t rawok, int outfd, uint64_t resumeobj, uint64_t resumeoff, struct vnode *vp, offset_t *off); int dmu_send_estimate(struct dsl_dataset *ds, struct dsl_dataset *fromds, boolean_t stream_compressed, uint64_t *sizep); int dmu_send_estimate_from_txg(struct dsl_dataset *ds, uint64_t fromtxg, boolean_t stream_compressed, uint64_t *sizep); int dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, boolean_t embedok, boolean_t large_block_ok, boolean_t compressok, boolean_t rawok, int outfd, struct vnode *vp, offset_t *off); #endif /* _DMU_SEND_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/metaslab.h0000644000000000000000000000007413607166147017630 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.482426012 zfs-0.8.3/include/sys/metaslab.h0000644016037001603700000001136513607166147017633 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright (c) 2017, Intel Corporation. */ #ifndef _SYS_METASLAB_H #define _SYS_METASLAB_H #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct metaslab_ops { uint64_t (*msop_alloc)(metaslab_t *, uint64_t); } metaslab_ops_t; extern metaslab_ops_t *zfs_metaslab_ops; int metaslab_init(metaslab_group_t *, uint64_t, uint64_t, uint64_t, metaslab_t **); void metaslab_fini(metaslab_t *); int metaslab_load(metaslab_t *); void metaslab_potentially_unload(metaslab_t *, uint64_t); void metaslab_unload(metaslab_t *); uint64_t metaslab_allocated_space(metaslab_t *); void metaslab_sync(metaslab_t *, uint64_t); void metaslab_sync_done(metaslab_t *, uint64_t); void metaslab_sync_reassess(metaslab_group_t *); uint64_t metaslab_block_maxsize(metaslab_t *); /* * metaslab alloc flags */ #define METASLAB_HINTBP_FAVOR 0x0 #define METASLAB_HINTBP_AVOID 0x1 #define METASLAB_GANG_HEADER 0x2 #define METASLAB_GANG_CHILD 0x4 #define METASLAB_ASYNC_ALLOC 0x8 #define METASLAB_DONT_THROTTLE 0x10 #define METASLAB_MUST_RESERVE 0x20 #define METASLAB_FASTWRITE 0x40 int metaslab_alloc(spa_t *, metaslab_class_t *, uint64_t, blkptr_t *, int, uint64_t, blkptr_t *, int, zio_alloc_list_t *, zio_t *, int); int metaslab_alloc_dva(spa_t *, metaslab_class_t *, uint64_t, dva_t *, int, dva_t *, uint64_t, int, zio_alloc_list_t *, int); void metaslab_free(spa_t *, const blkptr_t *, uint64_t, boolean_t); void metaslab_free_concrete(vdev_t *, uint64_t, uint64_t, boolean_t); void metaslab_free_dva(spa_t *, const dva_t *, boolean_t); void metaslab_free_impl_cb(uint64_t, vdev_t *, uint64_t, uint64_t, void *); void metaslab_unalloc_dva(spa_t *, const dva_t *, uint64_t); int metaslab_claim(spa_t *, const blkptr_t *, uint64_t); int metaslab_claim_impl(vdev_t *, uint64_t, uint64_t, uint64_t); void metaslab_check_free(spa_t *, const blkptr_t *); void metaslab_fastwrite_mark(spa_t *, const blkptr_t *); void metaslab_fastwrite_unmark(spa_t *, const blkptr_t *); void metaslab_alloc_trace_init(void); void metaslab_alloc_trace_fini(void); void metaslab_trace_init(zio_alloc_list_t *); void metaslab_trace_fini(zio_alloc_list_t *); metaslab_class_t *metaslab_class_create(spa_t *, metaslab_ops_t *); void metaslab_class_destroy(metaslab_class_t *); int metaslab_class_validate(metaslab_class_t *); void metaslab_class_histogram_verify(metaslab_class_t *); uint64_t metaslab_class_fragmentation(metaslab_class_t *); uint64_t metaslab_class_expandable_space(metaslab_class_t *); boolean_t metaslab_class_throttle_reserve(metaslab_class_t *, int, int, zio_t *, int); void metaslab_class_throttle_unreserve(metaslab_class_t *, int, int, zio_t *); uint64_t metaslab_class_get_alloc(metaslab_class_t *); uint64_t metaslab_class_get_space(metaslab_class_t *); uint64_t metaslab_class_get_dspace(metaslab_class_t *); uint64_t metaslab_class_get_deferred(metaslab_class_t *); metaslab_group_t *metaslab_group_create(metaslab_class_t *, vdev_t *, int); void metaslab_group_destroy(metaslab_group_t *); void metaslab_group_activate(metaslab_group_t *); void metaslab_group_passivate(metaslab_group_t *); boolean_t metaslab_group_initialized(metaslab_group_t *); uint64_t metaslab_group_get_space(metaslab_group_t *); void metaslab_group_histogram_verify(metaslab_group_t *); uint64_t metaslab_group_fragmentation(metaslab_group_t *); void metaslab_group_histogram_remove(metaslab_group_t *, metaslab_t *); void metaslab_group_alloc_decrement(spa_t *, uint64_t, void *, int, int, boolean_t); void metaslab_group_alloc_verify(spa_t *, const blkptr_t *, void *, int); void metaslab_recalculate_weight_and_sort(metaslab_t *); void metaslab_disable(metaslab_t *); void metaslab_enable(metaslab_t *, boolean_t); #ifdef __cplusplus } #endif #endif /* _SYS_METASLAB_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_prop.h0000644000000000000000000000007413607166132017654 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.465425468 zfs-0.8.3/include/sys/dsl_prop.h0000644016037001603700000001017513607166132017655 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. */ #ifndef _SYS_DSL_PROP_H #define _SYS_DSL_PROP_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct dsl_dataset; struct dsl_dir; /* The callback func may not call into the DMU or DSL! */ typedef void (dsl_prop_changed_cb_t)(void *arg, uint64_t newval); typedef struct dsl_prop_record { list_node_t pr_node; /* link on dd_props */ const char *pr_propname; list_t pr_cbs; } dsl_prop_record_t; typedef struct dsl_prop_cb_record { list_node_t cbr_pr_node; /* link on pr_cbs */ list_node_t cbr_ds_node; /* link on ds_prop_cbs */ dsl_prop_record_t *cbr_pr; struct dsl_dataset *cbr_ds; dsl_prop_changed_cb_t *cbr_func; void *cbr_arg; } dsl_prop_cb_record_t; typedef struct dsl_props_arg { nvlist_t *pa_props; zprop_source_t pa_source; } dsl_props_arg_t; void dsl_prop_init(dsl_dir_t *dd); void dsl_prop_fini(dsl_dir_t *dd); int dsl_prop_register(struct dsl_dataset *ds, const char *propname, dsl_prop_changed_cb_t *callback, void *cbarg); int dsl_prop_unregister(struct dsl_dataset *ds, const char *propname, dsl_prop_changed_cb_t *callback, void *cbarg); void dsl_prop_unregister_all(struct dsl_dataset *ds, void *cbarg); void dsl_prop_notify_all(struct dsl_dir *dd); boolean_t dsl_prop_hascb(struct dsl_dataset *ds); int dsl_prop_get(const char *ddname, const char *propname, int intsz, int numints, void *buf, char *setpoint); int dsl_prop_get_integer(const char *ddname, const char *propname, uint64_t *valuep, char *setpoint); int dsl_prop_get_all(objset_t *os, nvlist_t **nvp); int dsl_prop_get_received(const char *dsname, nvlist_t **nvp); int dsl_prop_get_ds(struct dsl_dataset *ds, const char *propname, int intsz, int numints, void *buf, char *setpoint); int dsl_prop_get_int_ds(struct dsl_dataset *ds, const char *propname, uint64_t *valuep); int dsl_prop_get_dd(struct dsl_dir *dd, const char *propname, int intsz, int numints, void *buf, char *setpoint, boolean_t snapshot); void dsl_props_set_sync_impl(struct dsl_dataset *ds, zprop_source_t source, nvlist_t *props, dmu_tx_t *tx); void dsl_prop_set_sync_impl(struct dsl_dataset *ds, const char *propname, zprop_source_t source, int intsz, int numints, const void *value, dmu_tx_t *tx); int dsl_props_set(const char *dsname, zprop_source_t source, nvlist_t *nvl); int dsl_prop_set_int(const char *dsname, const char *propname, zprop_source_t source, uint64_t value); int dsl_prop_set_string(const char *dsname, const char *propname, zprop_source_t source, const char *value); int dsl_prop_inherit(const char *dsname, const char *propname, zprop_source_t source); int dsl_prop_predict(dsl_dir_t *dd, const char *propname, zprop_source_t source, uint64_t value, uint64_t *newvalp); /* flag first receive on or after SPA_VERSION_RECVD_PROPS */ boolean_t dsl_prop_get_hasrecvd(const char *dsname); int dsl_prop_set_hasrecvd(const char *dsname); void dsl_prop_unset_hasrecvd(const char *dsname); void dsl_prop_nvlist_add_uint64(nvlist_t *nv, zfs_prop_t prop, uint64_t value); void dsl_prop_nvlist_add_string(nvlist_t *nv, zfs_prop_t prop, const char *value); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_PROP_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/mmp.h0000644000000000000000000000007413607166132016623 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.487426175 zfs-0.8.3/include/sys/mmp.h0000644016037001603700000000446613607166132016632 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (C) 2017 by Lawrence Livermore National Security, LLC. */ #ifndef _SYS_MMP_H #define _SYS_MMP_H #include #include #include #ifdef __cplusplus extern "C" { #endif #define MMP_MIN_INTERVAL 100 /* ms */ #define MMP_DEFAULT_INTERVAL 1000 /* ms */ #define MMP_DEFAULT_IMPORT_INTERVALS 20 #define MMP_DEFAULT_FAIL_INTERVALS 10 #define MMP_MIN_FAIL_INTERVALS 2 /* min if != 0 */ #define MMP_IMPORT_SAFETY_FACTOR 200 /* pct */ #define MMP_INTERVAL_OK(interval) MAX(interval, MMP_MIN_INTERVAL) #define MMP_FAIL_INTVS_OK(fails) (fails == 0 ? 0 : MAX(fails, \ MMP_MIN_FAIL_INTERVALS)) typedef struct mmp_thread { kmutex_t mmp_thread_lock; /* protect thread mgmt fields */ kcondvar_t mmp_thread_cv; kthread_t *mmp_thread; uint8_t mmp_thread_exiting; kmutex_t mmp_io_lock; /* protect below */ hrtime_t mmp_last_write; /* last successful MMP write */ uint64_t mmp_delay; /* decaying avg ns between MMP writes */ uberblock_t mmp_ub; /* last ub written by sync */ zio_t *mmp_zio_root; /* root of mmp write zios */ uint64_t mmp_kstat_id; /* unique id for next MMP write kstat */ int mmp_skip_error; /* reason for last skipped write */ vdev_t *mmp_last_leaf; /* last mmp write sent here */ uint64_t mmp_leaf_last_gen; /* last mmp write sent here */ uint32_t mmp_seq; /* intra-second update counter */ } mmp_thread_t; extern void mmp_init(struct spa *spa); extern void mmp_fini(struct spa *spa); extern void mmp_thread_start(struct spa *spa); extern void mmp_thread_stop(struct spa *spa); extern void mmp_update_uberblock(struct spa *spa, struct uberblock *ub); extern void mmp_signal_all_threads(void); /* Global tuning */ extern ulong_t zfs_multihost_interval; extern uint_t zfs_multihost_fail_intervals; extern uint_t zfs_multihost_import_intervals; #ifdef __cplusplus } #endif #endif /* _SYS_MMP_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_dmu.h0000644000000000000000000000007413607166147020003 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.551428229 zfs-0.8.3/include/sys/trace_dmu.h0000644016037001603700000001023213607166147017776 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_dmu #if !defined(_TRACE_DMU_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_DMU_H #include #include /* * Generic support for three argument tracepoints of the form: * * DTRACE_PROBE3(..., * dmu_tx_t *, ..., * uint64_t, ..., * uint64_t, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_delay_mintime_class, TP_PROTO(dmu_tx_t *tx, uint64_t dirty, uint64_t min_tx_time), TP_ARGS(tx, dirty, min_tx_time), TP_STRUCT__entry( __field(uint64_t, tx_txg) __field(uint64_t, tx_lastsnap_txg) __field(uint64_t, tx_lasttried_txg) __field(boolean_t, tx_anyobj) __field(boolean_t, tx_dirty_delayed) __field(hrtime_t, tx_start) __field(boolean_t, tx_wait_dirty) __field(int, tx_err) __field(uint64_t, min_tx_time) __field(uint64_t, dirty) ), TP_fast_assign( __entry->tx_txg = tx->tx_txg; __entry->tx_lastsnap_txg = tx->tx_lastsnap_txg; __entry->tx_lasttried_txg = tx->tx_lasttried_txg; __entry->tx_anyobj = tx->tx_anyobj; __entry->tx_dirty_delayed = tx->tx_dirty_delayed; __entry->tx_start = tx->tx_start; __entry->tx_wait_dirty = tx->tx_wait_dirty; __entry->tx_err = tx->tx_err; __entry->dirty = dirty; __entry->min_tx_time = min_tx_time; ), TP_printk("tx { txg %llu lastsnap_txg %llu tx_lasttried_txg %llu " "anyobj %d dirty_delayed %d start %llu wait_dirty %d err %i " "} dirty %llu min_tx_time %llu", __entry->tx_txg, __entry->tx_lastsnap_txg, __entry->tx_lasttried_txg, __entry->tx_anyobj, __entry->tx_dirty_delayed, __entry->tx_start, __entry->tx_wait_dirty, __entry->tx_err, __entry->dirty, __entry->min_tx_time) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_DELAY_MINTIME_EVENT(name) \ DEFINE_EVENT(zfs_delay_mintime_class, name, \ TP_PROTO(dmu_tx_t *tx, uint64_t dirty, uint64_t min_tx_time), \ TP_ARGS(tx, dirty, min_tx_time)) /* END CSTYLED */ DEFINE_DELAY_MINTIME_EVENT(zfs_delay__mintime); /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_free_long_range_class, TP_PROTO(uint64_t long_free_dirty_all_txgs, uint64_t chunk_len, \ uint64_t txg), TP_ARGS(long_free_dirty_all_txgs, chunk_len, txg), TP_STRUCT__entry( __field(uint64_t, long_free_dirty_all_txgs) __field(uint64_t, chunk_len) __field(uint64_t, txg) ), TP_fast_assign( __entry->long_free_dirty_all_txgs = long_free_dirty_all_txgs; __entry->chunk_len = chunk_len; __entry->txg = txg; ), TP_printk("long_free_dirty_all_txgs %llu chunk_len %llu txg %llu", __entry->long_free_dirty_all_txgs, __entry->chunk_len, __entry->txg) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_FREE_LONG_RANGE_EVENT(name) \ DEFINE_EVENT(zfs_free_long_range_class, name, \ TP_PROTO(uint64_t long_free_dirty_all_txgs, \ uint64_t chunk_len, uint64_t txg), \ TP_ARGS(long_free_dirty_all_txgs, chunk_len, txg)) /* END CSTYLED */ DEFINE_FREE_LONG_RANGE_EVENT(zfs_free__long__range); #endif /* _TRACE_DMU_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_dmu #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_znode.h0000644000000000000000000000007413612141511020021 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.673432145 zfs-0.8.3/include/sys/zfs_znode.h0000644016037001603700000003533013612141511020022 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright 2016 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SYS_FS_ZFS_ZNODE_H #define _SYS_FS_ZFS_ZNODE_H #ifdef _KERNEL #include #include #include #include #include #include #include #include #include #include #endif #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Additional file level attributes, that are stored * in the upper half of zp_flags */ #define ZFS_READONLY 0x0000000100000000ull #define ZFS_HIDDEN 0x0000000200000000ull #define ZFS_SYSTEM 0x0000000400000000ull #define ZFS_ARCHIVE 0x0000000800000000ull #define ZFS_IMMUTABLE 0x0000001000000000ull #define ZFS_NOUNLINK 0x0000002000000000ull #define ZFS_APPENDONLY 0x0000004000000000ull #define ZFS_NODUMP 0x0000008000000000ull #define ZFS_OPAQUE 0x0000010000000000ull #define ZFS_AV_QUARANTINED 0x0000020000000000ull #define ZFS_AV_MODIFIED 0x0000040000000000ull #define ZFS_REPARSE 0x0000080000000000ull #define ZFS_OFFLINE 0x0000100000000000ull #define ZFS_SPARSE 0x0000200000000000ull /* * PROJINHERIT attribute is used to indicate that the child object under the * directory which has the PROJINHERIT attribute needs to inherit its parent * project ID that is used by project quota. */ #define ZFS_PROJINHERIT 0x0000400000000000ull /* * PROJID attr is used internally to indicate that the object has project ID. */ #define ZFS_PROJID 0x0000800000000000ull #define ZFS_ATTR_SET(zp, attr, value, pflags, tx) \ { \ if (value) \ pflags |= attr; \ else \ pflags &= ~attr; \ VERIFY(0 == sa_update(zp->z_sa_hdl, SA_ZPL_FLAGS(ZTOZSB(zp)), \ &pflags, sizeof (pflags), tx)); \ } /* * Define special zfs pflags */ #define ZFS_XATTR 0x1 /* is an extended attribute */ #define ZFS_INHERIT_ACE 0x2 /* ace has inheritable ACEs */ #define ZFS_ACL_TRIVIAL 0x4 /* files ACL is trivial */ #define ZFS_ACL_OBJ_ACE 0x8 /* ACL has CMPLX Object ACE */ #define ZFS_ACL_PROTECTED 0x10 /* ACL protected */ #define ZFS_ACL_DEFAULTED 0x20 /* ACL should be defaulted */ #define ZFS_ACL_AUTO_INHERIT 0x40 /* ACL should be inherited */ #define ZFS_BONUS_SCANSTAMP 0x80 /* Scanstamp in bonus area */ #define ZFS_NO_EXECS_DENIED 0x100 /* exec was given to everyone */ #define SA_ZPL_ATIME(z) z->z_attr_table[ZPL_ATIME] #define SA_ZPL_MTIME(z) z->z_attr_table[ZPL_MTIME] #define SA_ZPL_CTIME(z) z->z_attr_table[ZPL_CTIME] #define SA_ZPL_CRTIME(z) z->z_attr_table[ZPL_CRTIME] #define SA_ZPL_GEN(z) z->z_attr_table[ZPL_GEN] #define SA_ZPL_DACL_ACES(z) z->z_attr_table[ZPL_DACL_ACES] #define SA_ZPL_XATTR(z) z->z_attr_table[ZPL_XATTR] #define SA_ZPL_SYMLINK(z) z->z_attr_table[ZPL_SYMLINK] #define SA_ZPL_RDEV(z) z->z_attr_table[ZPL_RDEV] #define SA_ZPL_SCANSTAMP(z) z->z_attr_table[ZPL_SCANSTAMP] #define SA_ZPL_UID(z) z->z_attr_table[ZPL_UID] #define SA_ZPL_GID(z) z->z_attr_table[ZPL_GID] #define SA_ZPL_PARENT(z) z->z_attr_table[ZPL_PARENT] #define SA_ZPL_LINKS(z) z->z_attr_table[ZPL_LINKS] #define SA_ZPL_MODE(z) z->z_attr_table[ZPL_MODE] #define SA_ZPL_DACL_COUNT(z) z->z_attr_table[ZPL_DACL_COUNT] #define SA_ZPL_FLAGS(z) z->z_attr_table[ZPL_FLAGS] #define SA_ZPL_SIZE(z) z->z_attr_table[ZPL_SIZE] #define SA_ZPL_ZNODE_ACL(z) z->z_attr_table[ZPL_ZNODE_ACL] #define SA_ZPL_DXATTR(z) z->z_attr_table[ZPL_DXATTR] #define SA_ZPL_PAD(z) z->z_attr_table[ZPL_PAD] #define SA_ZPL_PROJID(z) z->z_attr_table[ZPL_PROJID] /* * Is ID ephemeral? */ #define IS_EPHEMERAL(x) (x > MAXUID) /* * Should we use FUIDs? */ #define USE_FUIDS(version, os) (version >= ZPL_VERSION_FUID && \ spa_version(dmu_objset_spa(os)) >= SPA_VERSION_FUID) #define USE_SA(version, os) (version >= ZPL_VERSION_SA && \ spa_version(dmu_objset_spa(os)) >= SPA_VERSION_SA) #define MASTER_NODE_OBJ 1 /* * Special attributes for master node. * "userquota@", "groupquota@" and "projectquota@" are also valid (from * zfs_userquota_prop_prefixes[]). */ #define ZFS_FSID "FSID" #define ZFS_UNLINKED_SET "DELETE_QUEUE" #define ZFS_ROOT_OBJ "ROOT" #define ZPL_VERSION_STR "VERSION" #define ZFS_FUID_TABLES "FUID" #define ZFS_SHARES_DIR "SHARES" #define ZFS_SA_ATTRS "SA_ATTRS" /* * Convert mode bits (zp_mode) to BSD-style DT_* values for storing in * the directory entries. On Linux systems this value is already * defined correctly as part of the /usr/include/dirent.h header file. */ #ifndef IFTODT #define IFTODT(mode) (((mode) & S_IFMT) >> 12) #endif /* * The directory entry has the type (currently unused on Solaris) in the * top 4 bits, and the object number in the low 48 bits. The "middle" * 12 bits are unused. */ #define ZFS_DIRENT_TYPE(de) BF64_GET(de, 60, 4) #define ZFS_DIRENT_OBJ(de) BF64_GET(de, 0, 48) /* * Directory entry locks control access to directory entries. * They are used to protect creates, deletes, and renames. * Each directory znode has a mutex and a list of locked names. */ #ifdef _KERNEL typedef struct zfs_dirlock { char *dl_name; /* directory entry being locked */ uint32_t dl_sharecnt; /* 0 if exclusive, > 0 if shared */ uint8_t dl_namelock; /* 1 if z_name_lock is NOT held */ uint16_t dl_namesize; /* set if dl_name was allocated */ kcondvar_t dl_cv; /* wait for entry to be unlocked */ struct znode *dl_dzp; /* directory znode */ struct zfs_dirlock *dl_next; /* next in z_dirlocks list */ } zfs_dirlock_t; typedef struct znode { uint64_t z_id; /* object ID for this znode */ kmutex_t z_lock; /* znode modification lock */ krwlock_t z_parent_lock; /* parent lock for directories */ krwlock_t z_name_lock; /* "master" lock for dirent locks */ zfs_dirlock_t *z_dirlocks; /* directory entry lock list */ rangelock_t z_rangelock; /* file range locks */ boolean_t z_unlinked; /* file has been unlinked */ boolean_t z_atime_dirty; /* atime needs to be synced */ boolean_t z_zn_prefetch; /* Prefetch znodes? */ boolean_t z_moved; /* Has this znode been moved? */ boolean_t z_is_sa; /* are we native sa? */ boolean_t z_is_mapped; /* are we mmap'ed */ boolean_t z_is_ctldir; /* are we .zfs entry */ boolean_t z_is_stale; /* are we stale due to rollback? */ boolean_t z_suspended; /* extra ref from a suspend? */ uint_t z_blksz; /* block size in bytes */ uint_t z_seq; /* modification sequence number */ uint64_t z_mapcnt; /* number of pages mapped to file */ uint64_t z_dnodesize; /* dnode size */ uint64_t z_size; /* file size (cached) */ uint64_t z_pflags; /* pflags (cached) */ uint32_t z_sync_cnt; /* synchronous open count */ mode_t z_mode; /* mode (cached) */ kmutex_t z_acl_lock; /* acl data lock */ zfs_acl_t *z_acl_cached; /* cached acl */ krwlock_t z_xattr_lock; /* xattr data lock */ nvlist_t *z_xattr_cached; /* cached xattrs */ uint64_t z_xattr_parent; /* parent obj for this xattr */ uint64_t z_projid; /* project ID */ list_node_t z_link_node; /* all znodes in fs link */ sa_handle_t *z_sa_hdl; /* handle to sa data */ struct inode z_inode; /* generic vfs inode */ } znode_t; typedef struct znode_hold { uint64_t zh_obj; /* object id */ kmutex_t zh_lock; /* lock serializing object access */ avl_node_t zh_node; /* avl tree linkage */ zfs_refcount_t zh_refcount; /* active consumer reference count */ } znode_hold_t; static inline uint64_t zfs_inherit_projid(znode_t *dzp) { return ((dzp->z_pflags & ZFS_PROJINHERIT) ? dzp->z_projid : ZFS_DEFAULT_PROJID); } /* * Range locking rules * -------------------- * 1. When truncating a file (zfs_create, zfs_setattr, zfs_space) the whole * file range needs to be locked as RL_WRITER. Only then can the pages be * freed etc and zp_size reset. zp_size must be set within range lock. * 2. For writes and punching holes (zfs_write & zfs_space) just the range * being written or freed needs to be locked as RL_WRITER. * Multiple writes at the end of the file must coordinate zp_size updates * to ensure data isn't lost. A compare and swap loop is currently used * to ensure the file size is at least the offset last written. * 3. For reads (zfs_read, zfs_get_data & zfs_putapage) just the range being * read needs to be locked as RL_READER. A check against zp_size can then * be made for reading beyond end of file. */ /* * Convert between znode pointers and inode pointers */ #define ZTOI(znode) (&((znode)->z_inode)) #define ITOZ(inode) (container_of((inode), znode_t, z_inode)) #define ZTOZSB(znode) ((zfsvfs_t *)(ZTOI(znode)->i_sb->s_fs_info)) #define ITOZSB(inode) ((zfsvfs_t *)((inode)->i_sb->s_fs_info)) #define S_ISDEV(mode) (S_ISCHR(mode) || S_ISBLK(mode) || S_ISFIFO(mode)) /* Called on entry to each ZFS inode and vfs operation. */ #define ZFS_ENTER_ERROR(zfsvfs, error) \ do { \ rrm_enter_read(&(zfsvfs)->z_teardown_lock, FTAG); \ if ((zfsvfs)->z_unmounted) { \ ZFS_EXIT(zfsvfs); \ return (error); \ } \ } while (0) #define ZFS_ENTER(zfsvfs) ZFS_ENTER_ERROR(zfsvfs, EIO) #define ZPL_ENTER(zfsvfs) ZFS_ENTER_ERROR(zfsvfs, -EIO) /* Must be called before exiting the operation. */ #define ZFS_EXIT(zfsvfs) \ do { \ rrm_exit(&(zfsvfs)->z_teardown_lock, FTAG); \ } while (0) #define ZPL_EXIT(zfsvfs) ZFS_EXIT(zfsvfs) /* Verifies the znode is valid. */ #define ZFS_VERIFY_ZP_ERROR(zp, error) \ do { \ if ((zp)->z_sa_hdl == NULL) { \ ZFS_EXIT(ZTOZSB(zp)); \ return (error); \ } \ } while (0) #define ZFS_VERIFY_ZP(zp) ZFS_VERIFY_ZP_ERROR(zp, EIO) #define ZPL_VERIFY_ZP(zp) ZFS_VERIFY_ZP_ERROR(zp, -EIO) /* * Macros for dealing with dmu_buf_hold */ #define ZFS_OBJ_MTX_SZ 64 #define ZFS_OBJ_MTX_MAX (1024 * 1024) #define ZFS_OBJ_HASH(zfsvfs, obj) ((obj) & ((zfsvfs->z_hold_size) - 1)) extern unsigned int zfs_object_mutex_size; /* * Encode ZFS stored time values from a struct timespec / struct timespec64. */ #define ZFS_TIME_ENCODE(tp, stmp) \ do { \ (stmp)[0] = (uint64_t)(tp)->tv_sec; \ (stmp)[1] = (uint64_t)(tp)->tv_nsec; \ } while (0) #if defined(HAVE_INODE_TIMESPEC64_TIMES) /* * Decode ZFS stored time values to a struct timespec64 * 4.18 and newer kernels. */ #define ZFS_TIME_DECODE(tp, stmp) \ do { \ (tp)->tv_sec = (time64_t)(stmp)[0]; \ (tp)->tv_nsec = (long)(stmp)[1]; \ } while (0) #else /* * Decode ZFS stored time values to a struct timespec * 4.17 and older kernels. */ #define ZFS_TIME_DECODE(tp, stmp) \ do { \ (tp)->tv_sec = (time_t)(stmp)[0]; \ (tp)->tv_nsec = (long)(stmp)[1]; \ } while (0) #endif /* HAVE_INODE_TIMESPEC64_TIMES */ /* * Timestamp defines */ #define ACCESSED (ATTR_ATIME) #define STATE_CHANGED (ATTR_CTIME) #define CONTENT_MODIFIED (ATTR_MTIME | ATTR_CTIME) extern int zfs_init_fs(zfsvfs_t *, znode_t **); extern void zfs_set_dataprop(objset_t *); extern void zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *, dmu_tx_t *tx); extern void zfs_tstamp_update_setup(znode_t *, uint_t, uint64_t [2], uint64_t [2]); extern void zfs_grow_blocksize(znode_t *, uint64_t, dmu_tx_t *); extern int zfs_freesp(znode_t *, uint64_t, uint64_t, int, boolean_t); extern void zfs_znode_init(void); extern void zfs_znode_fini(void); extern int zfs_znode_hold_compare(const void *, const void *); extern int zfs_zget(zfsvfs_t *, uint64_t, znode_t **); extern int zfs_rezget(znode_t *); extern void zfs_zinactive(znode_t *); extern void zfs_znode_delete(znode_t *, dmu_tx_t *); extern void zfs_remove_op_tables(void); extern int zfs_create_op_tables(void); extern int zfs_sync(struct super_block *, int, cred_t *); extern dev_t zfs_cmpldev(uint64_t); extern int zfs_get_zplprop(objset_t *os, zfs_prop_t prop, uint64_t *value); extern int zfs_get_stats(objset_t *os, nvlist_t *nv); extern boolean_t zfs_get_vfs_flag_unmounted(objset_t *os); extern void zfs_znode_dmu_fini(znode_t *); extern int zfs_inode_alloc(struct super_block *, struct inode **ip); extern void zfs_inode_destroy(struct inode *); extern void zfs_inode_update(znode_t *); extern void zfs_mark_inode_dirty(struct inode *); extern boolean_t zfs_relatime_need_update(const struct inode *); extern void zfs_log_create(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, znode_t *dzp, znode_t *zp, char *name, vsecattr_t *, zfs_fuid_info_t *, vattr_t *vap); extern int zfs_log_create_txtype(zil_create_t, vsecattr_t *vsecp, vattr_t *vap); extern void zfs_log_remove(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, znode_t *dzp, char *name, uint64_t foid, boolean_t unlinked); #define ZFS_NO_OBJECT 0 /* no object id */ extern void zfs_log_link(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, znode_t *dzp, znode_t *zp, char *name); extern void zfs_log_symlink(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, znode_t *dzp, znode_t *zp, char *name, char *link); extern void zfs_log_rename(zilog_t *zilog, dmu_tx_t *tx, uint64_t txtype, znode_t *sdzp, char *sname, znode_t *tdzp, char *dname, znode_t *szp); extern void zfs_log_write(zilog_t *zilog, dmu_tx_t *tx, int txtype, znode_t *zp, offset_t off, ssize_t len, int ioflag, zil_callback_t callback, void *callback_data); extern void zfs_log_truncate(zilog_t *zilog, dmu_tx_t *tx, int txtype, znode_t *zp, uint64_t off, uint64_t len); extern void zfs_log_setattr(zilog_t *zilog, dmu_tx_t *tx, int txtype, znode_t *zp, vattr_t *vap, uint_t mask_applied, zfs_fuid_info_t *fuidp); extern void zfs_log_acl(zilog_t *zilog, dmu_tx_t *tx, znode_t *zp, vsecattr_t *vsecp, zfs_fuid_info_t *fuidp); extern void zfs_xvattr_set(znode_t *zp, xvattr_t *xvap, dmu_tx_t *tx); extern void zfs_upgrade(zfsvfs_t *zfsvfs, dmu_tx_t *tx); #if defined(HAVE_UIO_RW) extern caddr_t zfs_map_page(page_t *, enum seg_rw); extern void zfs_unmap_page(page_t *, caddr_t); #endif /* HAVE_UIO_RW */ extern zil_get_data_t zfs_get_data; extern zil_replay_func_t *zfs_replay_vector[TX_MAX_TYPE]; extern int zfsfstype; #endif /* _KERNEL */ extern int zfs_obj_to_path(objset_t *osp, uint64_t obj, char *buf, int len); #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_ZNODE_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/metaslab_impl.h0000644000000000000000000000007413607166147020651 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.484426077 zfs-0.8.3/include/sys/metaslab_impl.h0000644016037001603700000004727113607166147020661 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2011, 2018 by Delphix. All rights reserved. */ #ifndef _SYS_METASLAB_IMPL_H #define _SYS_METASLAB_IMPL_H #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Metaslab allocation tracing record. */ typedef struct metaslab_alloc_trace { list_node_t mat_list_node; metaslab_group_t *mat_mg; metaslab_t *mat_msp; uint64_t mat_size; uint64_t mat_weight; uint32_t mat_dva_id; uint64_t mat_offset; int mat_allocator; } metaslab_alloc_trace_t; /* * Used by the metaslab allocation tracing facility to indicate * error conditions. These errors are stored to the offset member * of the metaslab_alloc_trace_t record and displayed by mdb. */ typedef enum trace_alloc_type { TRACE_ALLOC_FAILURE = -1ULL, TRACE_TOO_SMALL = -2ULL, TRACE_FORCE_GANG = -3ULL, TRACE_NOT_ALLOCATABLE = -4ULL, TRACE_GROUP_FAILURE = -5ULL, TRACE_ENOSPC = -6ULL, TRACE_CONDENSING = -7ULL, TRACE_VDEV_ERROR = -8ULL, TRACE_DISABLED = -9ULL, } trace_alloc_type_t; #define METASLAB_WEIGHT_PRIMARY (1ULL << 63) #define METASLAB_WEIGHT_SECONDARY (1ULL << 62) #define METASLAB_WEIGHT_CLAIM (1ULL << 61) #define METASLAB_WEIGHT_TYPE (1ULL << 60) #define METASLAB_ACTIVE_MASK \ (METASLAB_WEIGHT_PRIMARY | METASLAB_WEIGHT_SECONDARY | \ METASLAB_WEIGHT_CLAIM) /* * The metaslab weight is used to encode the amount of free space in a * metaslab, such that the "best" metaslab appears first when sorting the * metaslabs by weight. The weight (and therefore the "best" metaslab) can * be determined in two different ways: by computing a weighted sum of all * the free space in the metaslab (a space based weight) or by counting only * the free segments of the largest size (a segment based weight). We prefer * the segment based weight because it reflects how the free space is * comprised, but we cannot always use it -- legacy pools do not have the * space map histogram information necessary to determine the largest * contiguous regions. Pools that have the space map histogram determine * the segment weight by looking at each bucket in the histogram and * determining the free space whose size in bytes is in the range: * [2^i, 2^(i+1)) * We then encode the largest index, i, that contains regions into the * segment-weighted value. * * Space-based weight: * * 64 56 48 40 32 24 16 8 0 * +-------+-------+-------+-------+-------+-------+-------+-------+ * |PSC1| weighted-free space | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * PS - indicates primary and secondary activation * C - indicates activation for claimed block zio * space - the fragmentation-weighted space * * Segment-based weight: * * 64 56 48 40 32 24 16 8 0 * +-------+-------+-------+-------+-------+-------+-------+-------+ * |PSC0| idx| count of segments in region | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * PS - indicates primary and secondary activation * C - indicates activation for claimed block zio * idx - index for the highest bucket in the histogram * count - number of segments in the specified bucket */ #define WEIGHT_GET_ACTIVE(weight) BF64_GET((weight), 61, 3) #define WEIGHT_SET_ACTIVE(weight, x) BF64_SET((weight), 61, 3, x) #define WEIGHT_IS_SPACEBASED(weight) \ ((weight) == 0 || BF64_GET((weight), 60, 1)) #define WEIGHT_SET_SPACEBASED(weight) BF64_SET((weight), 60, 1, 1) /* * These macros are only applicable to segment-based weighting. */ #define WEIGHT_GET_INDEX(weight) BF64_GET((weight), 54, 6) #define WEIGHT_SET_INDEX(weight, x) BF64_SET((weight), 54, 6, x) #define WEIGHT_GET_COUNT(weight) BF64_GET((weight), 0, 54) #define WEIGHT_SET_COUNT(weight, x) BF64_SET((weight), 0, 54, x) /* * A metaslab class encompasses a category of allocatable top-level vdevs. * Each top-level vdev is associated with a metaslab group which defines * the allocatable region for that vdev. Examples of these categories include * "normal" for data block allocations (i.e. main pool allocations) or "log" * for allocations designated for intent log devices (i.e. slog devices). * When a block allocation is requested from the SPA it is associated with a * metaslab_class_t, and only top-level vdevs (i.e. metaslab groups) belonging * to the class can be used to satisfy that request. Allocations are done * by traversing the metaslab groups that are linked off of the mc_rotor field. * This rotor points to the next metaslab group where allocations will be * attempted. Allocating a block is a 3 step process -- select the metaslab * group, select the metaslab, and then allocate the block. The metaslab * class defines the low-level block allocator that will be used as the * final step in allocation. These allocators are pluggable allowing each class * to use a block allocator that best suits that class. */ struct metaslab_class { kmutex_t mc_lock; spa_t *mc_spa; metaslab_group_t *mc_rotor; metaslab_ops_t *mc_ops; uint64_t mc_aliquot; /* * Track the number of metaslab groups that have been initialized * and can accept allocations. An initialized metaslab group is * one has been completely added to the config (i.e. we have * updated the MOS config and the space has been added to the pool). */ uint64_t mc_groups; /* * Toggle to enable/disable the allocation throttle. */ boolean_t mc_alloc_throttle_enabled; /* * The allocation throttle works on a reservation system. Whenever * an asynchronous zio wants to perform an allocation it must * first reserve the number of blocks that it wants to allocate. * If there aren't sufficient slots available for the pending zio * then that I/O is throttled until more slots free up. The current * number of reserved allocations is maintained by the mc_alloc_slots * refcount. The mc_alloc_max_slots value determines the maximum * number of allocations that the system allows. Gang blocks are * allowed to reserve slots even if we've reached the maximum * number of allocations allowed. */ uint64_t *mc_alloc_max_slots; zfs_refcount_t *mc_alloc_slots; uint64_t mc_alloc_groups; /* # of allocatable groups */ uint64_t mc_alloc; /* total allocated space */ uint64_t mc_deferred; /* total deferred frees */ uint64_t mc_space; /* total space (alloc + free) */ uint64_t mc_dspace; /* total deflated space */ uint64_t mc_histogram[RANGE_TREE_HISTOGRAM_SIZE]; }; /* * Metaslab groups encapsulate all the allocatable regions (i.e. metaslabs) * of a top-level vdev. They are linked together to form a circular linked * list and can belong to only one metaslab class. Metaslab groups may become * ineligible for allocations for a number of reasons such as limited free * space, fragmentation, or going offline. When this happens the allocator will * simply find the next metaslab group in the linked list and attempt * to allocate from that group instead. */ struct metaslab_group { kmutex_t mg_lock; metaslab_t **mg_primaries; metaslab_t **mg_secondaries; avl_tree_t mg_metaslab_tree; uint64_t mg_aliquot; boolean_t mg_allocatable; /* can we allocate? */ uint64_t mg_ms_ready; /* * A metaslab group is considered to be initialized only after * we have updated the MOS config and added the space to the pool. * We only allow allocation attempts to a metaslab group if it * has been initialized. */ boolean_t mg_initialized; uint64_t mg_free_capacity; /* percentage free */ int64_t mg_bias; int64_t mg_activation_count; metaslab_class_t *mg_class; vdev_t *mg_vd; taskq_t *mg_taskq; metaslab_group_t *mg_prev; metaslab_group_t *mg_next; /* * In order for the allocation throttle to function properly, we cannot * have too many IOs going to each disk by default; the throttle * operates by allocating more work to disks that finish quickly, so * allocating larger chunks to each disk reduces its effectiveness. * However, if the number of IOs going to each allocator is too small, * we will not perform proper aggregation at the vdev_queue layer, * also resulting in decreased performance. Therefore, we will use a * ramp-up strategy. * * Each allocator in each metaslab group has a current queue depth * (mg_alloc_queue_depth[allocator]) and a current max queue depth * (mg_cur_max_alloc_queue_depth[allocator]), and each metaslab group * has an absolute max queue depth (mg_max_alloc_queue_depth). We * add IOs to an allocator until the mg_alloc_queue_depth for that * allocator hits the cur_max. Every time an IO completes for a given * allocator on a given metaslab group, we increment its cur_max until * it reaches mg_max_alloc_queue_depth. The cur_max resets every txg to * help protect against disks that decrease in performance over time. * * It's possible for an allocator to handle more allocations than * its max. This can occur when gang blocks are required or when other * groups are unable to handle their share of allocations. */ uint64_t mg_max_alloc_queue_depth; uint64_t *mg_cur_max_alloc_queue_depth; zfs_refcount_t *mg_alloc_queue_depth; int mg_allocators; /* * A metalab group that can no longer allocate the minimum block * size will set mg_no_free_space. Once a metaslab group is out * of space then its share of work must be distributed to other * groups. */ boolean_t mg_no_free_space; uint64_t mg_allocations; uint64_t mg_failed_allocations; uint64_t mg_fragmentation; uint64_t mg_histogram[RANGE_TREE_HISTOGRAM_SIZE]; int mg_ms_disabled; boolean_t mg_disabled_updating; kmutex_t mg_ms_disabled_lock; kcondvar_t mg_ms_disabled_cv; }; /* * This value defines the number of elements in the ms_lbas array. The value * of 64 was chosen as it covers all power of 2 buckets up to UINT64_MAX. * This is the equivalent of highbit(UINT64_MAX). */ #define MAX_LBAS 64 /* * Each metaslab maintains a set of in-core trees to track metaslab * operations. The in-core free tree (ms_allocatable) contains the list of * free segments which are eligible for allocation. As blocks are * allocated, the allocated segment are removed from the ms_allocatable and * added to a per txg allocation tree (ms_allocating). As blocks are * freed, they are added to the free tree (ms_freeing). These trees * allow us to process all allocations and frees in syncing context * where it is safe to update the on-disk space maps. An additional set * of in-core trees is maintained to track deferred frees * (ms_defer). Once a block is freed it will move from the * ms_freed to the ms_defer tree. A deferred free means that a block * has been freed but cannot be used by the pool until TXG_DEFER_SIZE * transactions groups later. For example, a block that is freed in txg * 50 will not be available for reallocation until txg 52 (50 + * TXG_DEFER_SIZE). This provides a safety net for uberblock rollback. * A pool could be safely rolled back TXG_DEFERS_SIZE transactions * groups and ensure that no block has been reallocated. * * The simplified transition diagram looks like this: * * * ALLOCATE * | * V * free segment (ms_allocatable) -> ms_allocating[4] -> (write to space map) * ^ * | ms_freeing <--- FREE * | | * | v * | ms_freed * | | * +-------- ms_defer[2] <-------+-------> (write to space map) * * * Each metaslab's space is tracked in a single space map in the MOS, * which is only updated in syncing context. Each time we sync a txg, * we append the allocs and frees from that txg to the space map. The * pool space is only updated once all metaslabs have finished syncing. * * To load the in-core free tree we read the space map from disk. This * object contains a series of alloc and free records that are combined * to make up the list of all free segments in this metaslab. These * segments are represented in-core by the ms_allocatable and are stored * in an AVL tree. * * As the space map grows (as a result of the appends) it will * eventually become space-inefficient. When the metaslab's in-core * free tree is zfs_condense_pct/100 times the size of the minimal * on-disk representation, we rewrite it in its minimized form. If a * metaslab needs to condense then we must set the ms_condensing flag to * ensure that allocations are not performed on the metaslab that is * being written. */ struct metaslab { /* * This is the main lock of the metaslab and its purpose is to * coordinate our allocations and frees [e.g metaslab_block_alloc(), * metaslab_free_concrete(), ..etc] with our various syncing * procedures [e.g. metaslab_sync(), metaslab_sync_done(), ..etc]. * * The lock is also used during some miscellaneous operations like * using the metaslab's histogram for the metaslab group's histogram * aggregation, or marking the metaslab for initialization. */ kmutex_t ms_lock; /* * Acquired together with the ms_lock whenever we expect to * write to metaslab data on-disk (i.e flushing entries to * the metaslab's space map). It helps coordinate readers of * the metaslab's space map [see spa_vdev_remove_thread()] * with writers [see metaslab_sync()]. * * Note that metaslab_load(), even though a reader, uses * a completely different mechanism to deal with the reading * of the metaslab's space map based on ms_synced_length. That * said, the function still uses the ms_sync_lock after it * has read the ms_sm [see relevant comment in metaslab_load() * as to why]. */ kmutex_t ms_sync_lock; kcondvar_t ms_load_cv; space_map_t *ms_sm; uint64_t ms_id; uint64_t ms_start; uint64_t ms_size; uint64_t ms_fragmentation; range_tree_t *ms_allocating[TXG_SIZE]; range_tree_t *ms_allocatable; uint64_t ms_allocated_this_txg; /* * The following range trees are accessed only from syncing context. * ms_free*tree only have entries while syncing, and are empty * between syncs. */ range_tree_t *ms_freeing; /* to free this syncing txg */ range_tree_t *ms_freed; /* already freed this syncing txg */ range_tree_t *ms_defer[TXG_DEFER_SIZE]; range_tree_t *ms_checkpointing; /* to add to the checkpoint */ /* * The ms_trim tree is the set of allocatable segments which are * eligible for trimming. (When the metaslab is loaded, it's a * subset of ms_allocatable.) It's kept in-core as long as the * autotrim property is set and is not vacated when the metaslab * is unloaded. Its purpose is to aggregate freed ranges to * facilitate efficient trimming. */ range_tree_t *ms_trim; boolean_t ms_condensing; /* condensing? */ boolean_t ms_condense_wanted; uint64_t ms_condense_checked_txg; /* * The number of consumers which have disabled the metaslab. */ uint64_t ms_disabled; /* * We must always hold the ms_lock when modifying ms_loaded * and ms_loading. */ boolean_t ms_loaded; boolean_t ms_loading; /* * The following histograms count entries that are in the * metaslab's space map (and its histogram) but are not in * ms_allocatable yet, because they are in ms_freed, ms_freeing, * or ms_defer[]. * * When the metaslab is not loaded, its ms_weight needs to * reflect what is allocatable (i.e. what will be part of * ms_allocatable if it is loaded). The weight is computed from * the spacemap histogram, but that includes ranges that are * not yet allocatable (because they are in ms_freed, * ms_freeing, or ms_defer[]). Therefore, when calculating the * weight, we need to remove those ranges. * * The ranges in the ms_freed and ms_defer[] range trees are all * present in the spacemap. However, the spacemap may have * multiple entries to represent a contiguous range, because it * is written across multiple sync passes, but the changes of * all sync passes are consolidated into the range trees. * Adjacent ranges that are freed in different sync passes of * one txg will be represented separately (as 2 or more entries) * in the space map (and its histogram), but these adjacent * ranges will be consolidated (represented as one entry) in the * ms_freed/ms_defer[] range trees (and their histograms). * * When calculating the weight, we can not simply subtract the * range trees' histograms from the spacemap's histogram, * because the range trees' histograms may have entries in * higher buckets than the spacemap, due to consolidation. * Instead we must subtract the exact entries that were added to * the spacemap's histogram. ms_synchist and ms_deferhist[] * represent these exact entries, so we can subtract them from * the spacemap's histogram when calculating ms_weight. * * ms_synchist represents the same ranges as ms_freeing + * ms_freed, but without consolidation across sync passes. * * ms_deferhist[i] represents the same ranges as ms_defer[i], * but without consolidation across sync passes. */ uint64_t ms_synchist[SPACE_MAP_HISTOGRAM_SIZE]; uint64_t ms_deferhist[TXG_DEFER_SIZE][SPACE_MAP_HISTOGRAM_SIZE]; /* * Tracks the exact amount of allocated space of this metaslab * (and specifically the metaslab's space map) up to the most * recently completed sync pass [see usage in metaslab_sync()]. */ uint64_t ms_allocated_space; int64_t ms_deferspace; /* sum of ms_defermap[] space */ uint64_t ms_weight; /* weight vs. others in group */ uint64_t ms_activation_weight; /* activation weight */ /* * Track of whenever a metaslab is selected for loading or allocation. * We use this value to determine how long the metaslab should * stay cached. */ uint64_t ms_selected_txg; uint64_t ms_alloc_txg; /* last successful alloc (debug only) */ uint64_t ms_max_size; /* maximum allocatable size */ /* * -1 if it's not active in an allocator, otherwise set to the allocator * this metaslab is active for. */ int ms_allocator; boolean_t ms_primary; /* Only valid if ms_allocator is not -1 */ /* * The metaslab block allocators can optionally use a size-ordered * range tree and/or an array of LBAs. Not all allocators use * this functionality. The ms_allocatable_by_size should always * contain the same number of segments as the ms_allocatable. The * only difference is that the ms_allocatable_by_size is ordered by * segment sizes. */ avl_tree_t ms_allocatable_by_size; uint64_t ms_lbas[MAX_LBAS]; metaslab_group_t *ms_group; /* metaslab group */ avl_node_t ms_group_node; /* node in metaslab group tree */ txg_node_t ms_txg_node; /* per-txg dirty metaslab links */ /* updated every time we are done syncing the metaslab's space map */ uint64_t ms_synced_length; boolean_t ms_new; }; #ifdef __cplusplus } #endif #endif /* _SYS_METASLAB_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/blkptr.h0000644000000000000000000000007413607166132017330 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.403423478 zfs-0.8.3/include/sys/blkptr.h0000644016037001603700000000162213607166132017326 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_BLKPTR_H #define _SYS_BLKPTR_H #include #include #ifdef __cplusplus extern "C" { #endif void encode_embedded_bp_compressed(blkptr_t *, void *, enum zio_compress, int, int); void decode_embedded_bp_compressed(const blkptr_t *, void *); int decode_embedded_bp(const blkptr_t *, void *, int); #ifdef __cplusplus } #endif #endif /* _SYS_BLKPTR_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zthr.h0000644000000000000000000000007413607166147017027 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.694432819 zfs-0.8.3/include/sys/zthr.h0000644016037001603700000000214613607166147017027 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2017, 2018 by Delphix. All rights reserved. */ #ifndef _SYS_ZTHR_H #define _SYS_ZTHR_H typedef struct zthr zthr_t; typedef void (zthr_func_t)(void *, zthr_t *); typedef boolean_t (zthr_checkfunc_t)(void *, zthr_t *); extern zthr_t *zthr_create(zthr_checkfunc_t checkfunc, zthr_func_t *func, void *arg); extern zthr_t *zthr_create_timer(zthr_checkfunc_t *checkfunc, zthr_func_t *func, void *arg, hrtime_t nano_wait); extern void zthr_destroy(zthr_t *t); extern void zthr_wakeup(zthr_t *t); extern void zthr_cancel(zthr_t *t); extern void zthr_resume(zthr_t *t); extern boolean_t zthr_iscancelled(zthr_t *t); #endif /* _SYS_ZTHR_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/crypto0000644000000000000000000000013213612143045017111 xustar000000000000000030 mtime=1579730469.973441778 30 atime=1579730489.077055163 30 ctime=1579730469.973441778 zfs-0.8.3/include/sys/crypto/0000775016037001603700000000000013612143045017172 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/sys/crypto/PaxHeaders.151519/icp.h0000644000000000000000000000007313607166132020124 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.96944165 zfs-0.8.3/include/sys/crypto/icp.h0000644016037001603700000000251513607166132020125 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2016, Datto, Inc. All rights reserved. */ #ifndef _SYS_CRYPTO_ALGS_H #define _SYS_CRYPTO_ALGS_H int aes_mod_init(void); int aes_mod_fini(void); int edonr_mod_init(void); int edonr_mod_fini(void); int sha1_mod_init(void); int sha1_mod_fini(void); int sha2_mod_init(void); int sha2_mod_fini(void); int skein_mod_init(void); int skein_mod_fini(void); int icp_init(void); void icp_fini(void); int aes_impl_set(const char *); int gcm_impl_set(const char *); #endif /* _SYS_CRYPTO_ALGS_H */ zfs-0.8.3/include/sys/crypto/PaxHeaders.151519/api.h0000644000000000000000000000007313607166132020122 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.96444149 zfs-0.8.3/include/sys/crypto/api.h0000644016037001603700000004526113607166132020130 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_CRYPTO_API_H #define _SYS_CRYPTO_API_H #ifdef __cplusplus extern "C" { #endif #include #include typedef long crypto_req_id_t; typedef void *crypto_bc_t; typedef void *crypto_context_t; typedef void *crypto_ctx_template_t; typedef uint32_t crypto_call_flag_t; /* crypto_call_flag's values */ #define CRYPTO_ALWAYS_QUEUE 0x00000001 /* ALWAYS queue the req. */ #define CRYPTO_NOTIFY_OPDONE 0x00000002 /* Notify intermediate steps */ #define CRYPTO_SKIP_REQID 0x00000004 /* Skip request ID generation */ #define CRYPTO_RESTRICTED 0x00000008 /* cannot use restricted prov */ typedef struct { crypto_call_flag_t cr_flag; void (*cr_callback_func)(void *, int); void *cr_callback_arg; crypto_req_id_t cr_reqid; } crypto_call_req_t; /* * Returns the mechanism type corresponding to a mechanism name. */ #define CRYPTO_MECH_INVALID ((uint64_t)-1) extern crypto_mech_type_t crypto_mech2id(crypto_mech_name_t name); /* * Create and destroy context templates. */ extern int crypto_create_ctx_template(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t *tmpl, int kmflag); extern void crypto_destroy_ctx_template(crypto_ctx_template_t tmpl); /* * Single and multi-part digest operations. */ extern int crypto_digest(crypto_mechanism_t *mech, crypto_data_t *data, crypto_data_t *digest, crypto_call_req_t *cr); extern int crypto_digest_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_data_t *, crypto_data_t *, crypto_call_req_t *); extern int crypto_digest_init(crypto_mechanism_t *mech, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_digest_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_context_t *, crypto_call_req_t *); extern int crypto_digest_update(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_digest_final(crypto_context_t ctx, crypto_data_t *digest, crypto_call_req_t *cr); /* * Single and multi-part MAC operations. */ extern int crypto_mac(crypto_mechanism_t *mech, crypto_data_t *data, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *mac, crypto_call_req_t *cr); extern int crypto_mac_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_data_t *, crypto_key_t *, crypto_ctx_template_t, crypto_data_t *, crypto_call_req_t *); extern int crypto_mac_verify(crypto_mechanism_t *mech, crypto_data_t *data, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *mac, crypto_call_req_t *cr); extern int crypto_mac_verify_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_data_t *, crypto_key_t *, crypto_ctx_template_t, crypto_data_t *, crypto_call_req_t *); extern int crypto_mac_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_mac_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_ctx_template_t, crypto_context_t *, crypto_call_req_t *); extern int crypto_mac_update(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_mac_final(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); /* * Single and multi-part sign with private key operations. */ extern int crypto_sign(crypto_mechanism_t *mech, crypto_key_t *key, crypto_data_t *data, crypto_ctx_template_t tmpl, crypto_data_t *signature, crypto_call_req_t *cr); extern int crypto_sign_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_data_t *, crypto_ctx_template_t, crypto_data_t *, crypto_call_req_t *); extern int crypto_sign_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_sign_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_ctx_template_t, crypto_context_t *, crypto_call_req_t *); extern int crypto_sign_update(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_sign_final(crypto_context_t ctx, crypto_data_t *signature, crypto_call_req_t *cr); extern int crypto_sign_recover_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_ctx_template_t tmpl, crypto_context_t *, crypto_call_req_t *); extern int crypto_sign_recover(crypto_mechanism_t *mech, crypto_key_t *key, crypto_data_t *data, crypto_ctx_template_t tmpl, crypto_data_t *signature, crypto_call_req_t *cr); extern int crypto_sign_recover_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_data_t *, crypto_ctx_template_t, crypto_data_t *, crypto_call_req_t *); /* * Single and multi-part verify with public key operations. */ extern int crypto_verify(crypto_mechanism_t *mech, crypto_key_t *key, crypto_data_t *data, crypto_ctx_template_t tmpl, crypto_data_t *signature, crypto_call_req_t *cr); extern int crypto_verify_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_data_t *, crypto_ctx_template_t, crypto_data_t *, crypto_call_req_t *); extern int crypto_verify_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_verify_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_ctx_template_t, crypto_context_t *, crypto_call_req_t *); extern int crypto_verify_update(crypto_context_t ctx, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_verify_final(crypto_context_t ctx, crypto_data_t *signature, crypto_call_req_t *cr); extern int crypto_verify_recover_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_ctx_template_t tmpl, crypto_context_t *, crypto_call_req_t *); extern int crypto_verify_recover(crypto_mechanism_t *mech, crypto_key_t *key, crypto_data_t *signature, crypto_ctx_template_t tmpl, crypto_data_t *data, crypto_call_req_t *cr); extern int crypto_verify_recover_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_data_t *, crypto_ctx_template_t, crypto_data_t *, crypto_call_req_t *); /* * Single and multi-part encryption operations. */ extern int crypto_encrypt(crypto_mechanism_t *mech, crypto_data_t *plaintext, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *ciphertext, crypto_call_req_t *cr); extern int crypto_encrypt_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_data_t *, crypto_key_t *, crypto_ctx_template_t, crypto_data_t *, crypto_call_req_t *); extern int crypto_encrypt_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_encrypt_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_ctx_template_t, crypto_context_t *, crypto_call_req_t *); extern int crypto_encrypt_update(crypto_context_t ctx, crypto_data_t *plaintext, crypto_data_t *ciphertext, crypto_call_req_t *cr); extern int crypto_encrypt_final(crypto_context_t ctx, crypto_data_t *ciphertext, crypto_call_req_t *cr); /* * Single and multi-part decryption operations. */ extern int crypto_decrypt(crypto_mechanism_t *mech, crypto_data_t *ciphertext, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_data_t *plaintext, crypto_call_req_t *cr); extern int crypto_decrypt_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_data_t *, crypto_key_t *, crypto_ctx_template_t, crypto_data_t *, crypto_call_req_t *); extern int crypto_decrypt_init(crypto_mechanism_t *mech, crypto_key_t *key, crypto_ctx_template_t tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_decrypt_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_ctx_template_t, crypto_context_t *, crypto_call_req_t *); extern int crypto_decrypt_update(crypto_context_t ctx, crypto_data_t *ciphertext, crypto_data_t *plaintext, crypto_call_req_t *cr); extern int crypto_decrypt_final(crypto_context_t ctx, crypto_data_t *plaintext, crypto_call_req_t *cr); /* * Single and multi-part encrypt/MAC dual operations. */ extern int crypto_encrypt_mac(crypto_mechanism_t *encr_mech, crypto_mechanism_t *mac_mech, crypto_data_t *pt, crypto_key_t *encr_key, crypto_key_t *mac_key, crypto_ctx_template_t encr_tmpl, crypto_ctx_template_t mac_tmpl, crypto_dual_data_t *ct, crypto_data_t *mac, crypto_call_req_t *cr); extern int crypto_encrypt_mac_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_mechanism_t *, crypto_data_t *, crypto_key_t *, crypto_key_t *, crypto_ctx_template_t, crypto_ctx_template_t, crypto_dual_data_t *, crypto_data_t *, crypto_call_req_t *); extern int crypto_encrypt_mac_init(crypto_mechanism_t *encr_mech, crypto_mechanism_t *mac_mech, crypto_key_t *encr_key, crypto_key_t *mac_key, crypto_ctx_template_t encr_tmpl, crypto_ctx_template_t mac_tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_encrypt_mac_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_mechanism_t *, crypto_key_t *, crypto_key_t *, crypto_ctx_template_t, crypto_ctx_template_t, crypto_context_t *, crypto_call_req_t *); extern int crypto_encrypt_mac_update(crypto_context_t ctx, crypto_data_t *pt, crypto_dual_data_t *ct, crypto_call_req_t *cr); extern int crypto_encrypt_mac_final(crypto_context_t ctx, crypto_dual_data_t *ct, crypto_data_t *mac, crypto_call_req_t *cr); /* * Single and multi-part MAC/decrypt dual operations. */ extern int crypto_mac_decrypt(crypto_mechanism_t *mac_mech, crypto_mechanism_t *decr_mech, crypto_dual_data_t *ct, crypto_key_t *mac_key, crypto_key_t *decr_key, crypto_ctx_template_t mac_tmpl, crypto_ctx_template_t decr_tmpl, crypto_data_t *mac, crypto_data_t *pt, crypto_call_req_t *cr); extern int crypto_mac_decrypt_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *mac_mech, crypto_mechanism_t *decr_mech, crypto_dual_data_t *ct, crypto_key_t *mac_key, crypto_key_t *decr_key, crypto_ctx_template_t mac_tmpl, crypto_ctx_template_t decr_tmpl, crypto_data_t *mac, crypto_data_t *pt, crypto_call_req_t *cr); extern int crypto_mac_verify_decrypt(crypto_mechanism_t *mac_mech, crypto_mechanism_t *decr_mech, crypto_dual_data_t *ct, crypto_key_t *mac_key, crypto_key_t *decr_key, crypto_ctx_template_t mac_tmpl, crypto_ctx_template_t decr_tmpl, crypto_data_t *mac, crypto_data_t *pt, crypto_call_req_t *cr); extern int crypto_mac_verify_decrypt_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *mac_mech, crypto_mechanism_t *decr_mech, crypto_dual_data_t *ct, crypto_key_t *mac_key, crypto_key_t *decr_key, crypto_ctx_template_t mac_tmpl, crypto_ctx_template_t decr_tmpl, crypto_data_t *mac, crypto_data_t *pt, crypto_call_req_t *cr); extern int crypto_mac_decrypt_init(crypto_mechanism_t *mac_mech, crypto_mechanism_t *decr_mech, crypto_key_t *mac_key, crypto_key_t *decr_key, crypto_ctx_template_t mac_tmpl, crypto_ctx_template_t decr_tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_mac_decrypt_init_prov(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *mac_mech, crypto_mechanism_t *decr_mech, crypto_key_t *mac_key, crypto_key_t *decr_key, crypto_ctx_template_t mac_tmpl, crypto_ctx_template_t decr_tmpl, crypto_context_t *ctxp, crypto_call_req_t *cr); extern int crypto_mac_decrypt_update(crypto_context_t ctx, crypto_dual_data_t *ct, crypto_data_t *pt, crypto_call_req_t *cr); extern int crypto_mac_decrypt_final(crypto_context_t ctx, crypto_data_t *mac, crypto_data_t *pt, crypto_call_req_t *cr); /* Session Management */ extern int crypto_session_open(crypto_provider_t, crypto_session_id_t *, crypto_call_req_t *); extern int crypto_session_close(crypto_provider_t, crypto_session_id_t, crypto_call_req_t *); extern int crypto_session_login(crypto_provider_t, crypto_session_id_t, crypto_user_type_t, char *, size_t, crypto_call_req_t *); extern int crypto_session_logout(crypto_provider_t, crypto_session_id_t, crypto_call_req_t *); /* Object Management */ extern int crypto_object_copy(crypto_provider_t, crypto_session_id_t, crypto_object_id_t, crypto_object_attribute_t *, uint_t, crypto_object_id_t *, crypto_call_req_t *); extern int crypto_object_create(crypto_provider_t, crypto_session_id_t, crypto_object_attribute_t *, uint_t, crypto_object_id_t *, crypto_call_req_t *); extern int crypto_object_destroy(crypto_provider_t, crypto_session_id_t, crypto_object_id_t, crypto_call_req_t *); extern int crypto_object_get_attribute_value(crypto_provider_t, crypto_session_id_t, crypto_object_id_t, crypto_object_attribute_t *, uint_t, crypto_call_req_t *); extern int crypto_object_get_size(crypto_provider_t, crypto_session_id_t, crypto_object_id_t, size_t *, crypto_call_req_t *); extern int crypto_object_find_final(crypto_provider_t, void *, crypto_call_req_t *); extern int crypto_object_find_init(crypto_provider_t, crypto_session_id_t, crypto_object_attribute_t *, uint_t, void **, crypto_call_req_t *); extern int crypto_object_find(crypto_provider_t, void *, crypto_object_id_t *, uint_t *, uint_t, crypto_call_req_t *); extern int crypto_object_set_attribute_value(crypto_provider_t, crypto_session_id_t, crypto_object_id_t, crypto_object_attribute_t *, uint_t, crypto_call_req_t *); /* Key Management */ extern int crypto_key_derive(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_object_attribute_t *, uint_t, crypto_object_id_t *, crypto_call_req_t *); extern int crypto_key_generate(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_object_attribute_t *, uint_t, crypto_object_id_t *, crypto_call_req_t *); extern int crypto_key_generate_pair(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_object_attribute_t *, uint_t, crypto_object_attribute_t *, uint_t, crypto_object_id_t *, crypto_object_id_t *, crypto_call_req_t *); extern int crypto_key_unwrap(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, uchar_t *, size_t *, crypto_object_attribute_t *, uint_t, crypto_object_id_t *, crypto_call_req_t *); extern int crypto_key_wrap(crypto_provider_t, crypto_session_id_t, crypto_mechanism_t *, crypto_key_t *, crypto_object_id_t *, uchar_t *, size_t *, crypto_call_req_t *); extern int crypto_key_check_prov(crypto_provider_t, crypto_mechanism_t *mech, crypto_key_t *key); extern int crypto_key_check(crypto_mechanism_t *mech, crypto_key_t *key); /* * Routines to cancel a single asynchronous request or all asynchronous * requests associated with a particular context. */ extern void crypto_cancel_req(crypto_req_id_t req); extern void crypto_cancel_ctx(crypto_context_t ctx); /* * crypto_get_mech_list(9F) allocates and returns the list of currently * supported cryptographic mechanisms. */ extern crypto_mech_name_t *crypto_get_mech_list(uint_t *count, int kmflag); extern void crypto_free_mech_list(crypto_mech_name_t *mech_names, uint_t count); extern crypto_provider_t crypto_get_provider(char *, char *, char *); extern int crypto_get_provinfo(crypto_provider_t, crypto_provider_ext_info_t *); extern void crypto_release_provider(crypto_provider_t); /* * A kernel consumer can request to be notified when some particular event * occurs. The valid events, callback function type, and functions to * be called to register or unregister for notification are defined below. */ #define CRYPTO_EVENT_MECHS_CHANGED 0x00000001 #define CRYPTO_EVENT_PROVIDER_REGISTERED 0x00000002 #define CRYPTO_EVENT_PROVIDER_UNREGISTERED 0x00000004 typedef enum { CRYPTO_MECH_ADDED = 1, CRYPTO_MECH_REMOVED } crypto_event_change_t; /* The event_arg argument structure for CRYPTO_EVENT_PROVIDERS_CHANGE event */ typedef struct crypto_notify_event_change { crypto_mech_name_t ec_mech_name; crypto_provider_type_t ec_provider_type; crypto_event_change_t ec_change; } crypto_notify_event_change_t; typedef void *crypto_notify_handle_t; typedef void (*crypto_notify_callback_t)(uint32_t event_mask, void *event_arg); extern crypto_notify_handle_t crypto_notify_events( crypto_notify_callback_t nf, uint32_t event_mask); extern void crypto_unnotify_events(crypto_notify_handle_t); /* * crypto_bufcall(9F) group of routines. */ extern crypto_bc_t crypto_bufcall_alloc(void); extern int crypto_bufcall_free(crypto_bc_t bc); extern int crypto_bufcall(crypto_bc_t bc, void (*func)(void *arg), void *arg); extern int crypto_unbufcall(crypto_bc_t bc); /* * To obtain the list of key size ranges supported by a mechanism. */ #define CRYPTO_MECH_USAGE_ENCRYPT 0x00000001 #define CRYPTO_MECH_USAGE_DECRYPT 0x00000002 #define CRYPTO_MECH_USAGE_MAC 0x00000004 typedef uint32_t crypto_mech_usage_t; typedef struct crypto_mechanism_info { size_t mi_min_key_size; size_t mi_max_key_size; crypto_keysize_unit_t mi_keysize_unit; /* for mi_xxx_key_size */ crypto_mech_usage_t mi_usage; } crypto_mechanism_info_t; #ifdef _SYSCALL32 typedef struct crypto_mechanism_info32 { size32_t mi_min_key_size; size32_t mi_max_key_size; crypto_keysize_unit_t mi_keysize_unit; /* for mi_xxx_key_size */ crypto_mech_usage_t mi_usage; } crypto_mechanism_info32_t; #endif /* _SYSCALL32 */ extern int crypto_get_all_mech_info(crypto_mech_type_t, crypto_mechanism_info_t **, uint_t *, int); extern void crypto_free_all_mech_info(crypto_mechanism_info_t *, uint_t); #ifdef __cplusplus } #endif #endif /* _SYS_CRYPTO_API_H */ zfs-0.8.3/include/sys/crypto/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166132021235 xustar000000000000000030 atime=1579730429.087129033 30 ctime=1579730469.971441714 zfs-0.8.3/include/sys/crypto/Makefile.am0000644016037001603700000000066713607166132021243 0ustar00hutter2hutter200000000000000COMMON_H = \ $(top_srcdir)/include/sys/crypto/api.h \ $(top_srcdir)/include/sys/crypto/common.h \ $(top_srcdir)/include/sys/crypto/icp.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs/sys/crypto libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/crypto kernel_HEADERS = $(COMMON_H) $(KERNEL_H) endif zfs-0.8.3/include/sys/crypto/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775021244 xustar000000000000000030 mtime=1579730429.128130349 30 atime=1579730453.007897055 30 ctime=1579730469.973441778 zfs-0.8.3/include/sys/crypto/Makefile.in0000664016037001603700000006435013612142775021260 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/sys/crypto DIST_COMMON = $(am__kernel_HEADERS_DIST) $(am__libzfs_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/crypto/api.h \ $(top_srcdir)/include/sys/crypto/common.h \ $(top_srcdir)/include/sys/crypto/icp.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/crypto/api.h \ $(top_srcdir)/include/sys/crypto/common.h \ $(top_srcdir)/include/sys/crypto/icp.h HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ COMMON_H = \ $(top_srcdir)/include/sys/crypto/api.h \ $(top_srcdir)/include/sys/crypto/common.h \ $(top_srcdir)/include/sys/crypto/icp.h KERNEL_H = USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys/crypto @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys/crypto @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/crypto/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/sys/crypto/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/sys/crypto/PaxHeaders.151519/common.h0000644000000000000000000000007413607166132020642 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.967441586 zfs-0.8.3/include/sys/crypto/common.h0000644016037001603700000004377313607166132020655 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. */ /* * Copyright 2013 Saso Kiselkov. All rights reserved. */ #ifndef _SYS_CRYPTO_COMMON_H #define _SYS_CRYPTO_COMMON_H /* * Header file for the common data structures of the cryptographic framework */ #ifdef __cplusplus extern "C" { #endif #include /* Cryptographic Mechanisms */ #define CRYPTO_MAX_MECH_NAME 32 typedef char crypto_mech_name_t[CRYPTO_MAX_MECH_NAME]; typedef uint64_t crypto_mech_type_t; typedef struct crypto_mechanism { crypto_mech_type_t cm_type; /* mechanism type */ caddr_t cm_param; /* mech. parameter */ size_t cm_param_len; /* mech. parameter len */ } crypto_mechanism_t; #ifdef _SYSCALL32 typedef struct crypto_mechanism32 { crypto_mech_type_t cm_type; /* mechanism type */ caddr32_t cm_param; /* mech. parameter */ size32_t cm_param_len; /* mech. parameter len */ } crypto_mechanism32_t; #endif /* _SYSCALL32 */ /* CK_AES_CTR_PARAMS provides parameters to the CKM_AES_CTR mechanism */ typedef struct CK_AES_CTR_PARAMS { ulong_t ulCounterBits; uint8_t cb[16]; } CK_AES_CTR_PARAMS; /* CK_AES_CCM_PARAMS provides parameters to the CKM_AES_CCM mechanism */ typedef struct CK_AES_CCM_PARAMS { ulong_t ulMACSize; ulong_t ulNonceSize; ulong_t ulAuthDataSize; ulong_t ulDataSize; /* used for plaintext or ciphertext */ uchar_t *nonce; uchar_t *authData; } CK_AES_CCM_PARAMS; /* CK_AES_GCM_PARAMS provides parameters to the CKM_AES_GCM mechanism */ typedef struct CK_AES_GCM_PARAMS { uchar_t *pIv; ulong_t ulIvLen; ulong_t ulIvBits; uchar_t *pAAD; ulong_t ulAADLen; ulong_t ulTagBits; } CK_AES_GCM_PARAMS; /* CK_AES_GMAC_PARAMS provides parameters to the CKM_AES_GMAC mechanism */ typedef struct CK_AES_GMAC_PARAMS { uchar_t *pIv; uchar_t *pAAD; ulong_t ulAADLen; } CK_AES_GMAC_PARAMS; /* * CK_ECDH1_DERIVE_PARAMS provides the parameters to the * CKM_ECDH1_KEY_DERIVE mechanism */ typedef struct CK_ECDH1_DERIVE_PARAMS { ulong_t kdf; ulong_t ulSharedDataLen; uchar_t *pSharedData; ulong_t ulPublicDataLen; uchar_t *pPublicData; } CK_ECDH1_DERIVE_PARAMS; #ifdef _SYSCALL32 /* needed for 32-bit applications running on 64-bit kernels */ typedef struct CK_AES_CTR_PARAMS32 { uint32_t ulCounterBits; uint8_t cb[16]; } CK_AES_CTR_PARAMS32; /* needed for 32-bit applications running on 64-bit kernels */ typedef struct CK_AES_CCM_PARAMS32 { uint32_t ulMACSize; uint32_t ulNonceSize; uint32_t ulAuthDataSize; uint32_t ulDataSize; caddr32_t nonce; caddr32_t authData; } CK_AES_CCM_PARAMS32; /* needed for 32-bit applications running on 64-bit kernels */ typedef struct CK_AES_GCM_PARAMS32 { caddr32_t pIv; uint32_t ulIvLen; uint32_t ulIvBits; caddr32_t pAAD; uint32_t ulAADLen; uint32_t ulTagBits; } CK_AES_GCM_PARAMS32; /* needed for 32-bit applications running on 64-bit kernels */ typedef struct CK_AES_GMAC_PARAMS32 { caddr32_t pIv; caddr32_t pAAD; uint32_t ulAADLen; } CK_AES_GMAC_PARAMS32; typedef struct CK_ECDH1_DERIVE_PARAMS32 { uint32_t kdf; uint32_t ulSharedDataLen; caddr32_t pSharedData; uint32_t ulPublicDataLen; caddr32_t pPublicData; } CK_ECDH1_DERIVE_PARAMS32; #endif /* _SYSCALL32 */ /* * The measurement unit bit flag for a mechanism's minimum or maximum key size. * The unit are mechanism dependent. It can be in bits or in bytes. */ typedef uint32_t crypto_keysize_unit_t; /* * The following bit flags are valid in cm_mech_flags field in * the crypto_mech_info_t structure of the SPI. * * Only the first two bit flags are valid in mi_keysize_unit * field in the crypto_mechanism_info_t structure of the API. */ #define CRYPTO_KEYSIZE_UNIT_IN_BITS 0x00000001 #define CRYPTO_KEYSIZE_UNIT_IN_BYTES 0x00000002 #define CRYPTO_CAN_SHARE_OPSTATE 0x00000004 /* supports sharing */ /* Mechanisms supported out-of-the-box */ #define SUN_CKM_MD4 "CKM_MD4" #define SUN_CKM_MD5 "CKM_MD5" #define SUN_CKM_MD5_HMAC "CKM_MD5_HMAC" #define SUN_CKM_MD5_HMAC_GENERAL "CKM_MD5_HMAC_GENERAL" #define SUN_CKM_SHA1 "CKM_SHA_1" #define SUN_CKM_SHA1_HMAC "CKM_SHA_1_HMAC" #define SUN_CKM_SHA1_HMAC_GENERAL "CKM_SHA_1_HMAC_GENERAL" #define SUN_CKM_SHA256 "CKM_SHA256" #define SUN_CKM_SHA256_HMAC "CKM_SHA256_HMAC" #define SUN_CKM_SHA256_HMAC_GENERAL "CKM_SHA256_HMAC_GENERAL" #define SUN_CKM_SHA384 "CKM_SHA384" #define SUN_CKM_SHA384_HMAC "CKM_SHA384_HMAC" #define SUN_CKM_SHA384_HMAC_GENERAL "CKM_SHA384_HMAC_GENERAL" #define SUN_CKM_SHA512 "CKM_SHA512" #define SUN_CKM_SHA512_HMAC "CKM_SHA512_HMAC" #define SUN_CKM_SHA512_HMAC_GENERAL "CKM_SHA512_HMAC_GENERAL" #define SUN_CKM_SHA512_224 "CKM_SHA512_224" #define SUN_CKM_SHA512_256 "CKM_SHA512_256" #define SUN_CKM_DES_CBC "CKM_DES_CBC" #define SUN_CKM_DES3_CBC "CKM_DES3_CBC" #define SUN_CKM_DES_ECB "CKM_DES_ECB" #define SUN_CKM_DES3_ECB "CKM_DES3_ECB" #define SUN_CKM_BLOWFISH_CBC "CKM_BLOWFISH_CBC" #define SUN_CKM_BLOWFISH_ECB "CKM_BLOWFISH_ECB" #define SUN_CKM_AES_CBC "CKM_AES_CBC" #define SUN_CKM_AES_ECB "CKM_AES_ECB" #define SUN_CKM_AES_CTR "CKM_AES_CTR" #define SUN_CKM_AES_CCM "CKM_AES_CCM" #define SUN_CKM_AES_GCM "CKM_AES_GCM" #define SUN_CKM_AES_GMAC "CKM_AES_GMAC" #define SUN_CKM_AES_CFB128 "CKM_AES_CFB128" #define SUN_CKM_RC4 "CKM_RC4" #define SUN_CKM_RSA_PKCS "CKM_RSA_PKCS" #define SUN_CKM_RSA_X_509 "CKM_RSA_X_509" #define SUN_CKM_MD5_RSA_PKCS "CKM_MD5_RSA_PKCS" #define SUN_CKM_SHA1_RSA_PKCS "CKM_SHA1_RSA_PKCS" #define SUN_CKM_SHA256_RSA_PKCS "CKM_SHA256_RSA_PKCS" #define SUN_CKM_SHA384_RSA_PKCS "CKM_SHA384_RSA_PKCS" #define SUN_CKM_SHA512_RSA_PKCS "CKM_SHA512_RSA_PKCS" #define SUN_CKM_EC_KEY_PAIR_GEN "CKM_EC_KEY_PAIR_GEN" #define SUN_CKM_ECDH1_DERIVE "CKM_ECDH1_DERIVE" #define SUN_CKM_ECDSA_SHA1 "CKM_ECDSA_SHA1" #define SUN_CKM_ECDSA "CKM_ECDSA" /* Shared operation context format for CKM_RC4 */ typedef struct { #if defined(__amd64) uint32_t i, j; uint32_t arr[256]; uint32_t flag; #else uchar_t arr[256]; uchar_t i, j; #endif /* __amd64 */ uint64_t pad; /* For 64-bit alignment */ } arcfour_state_t; /* Data arguments of cryptographic operations */ typedef enum crypto_data_format { CRYPTO_DATA_RAW = 1, CRYPTO_DATA_UIO, } crypto_data_format_t; typedef struct crypto_data { crypto_data_format_t cd_format; /* Format identifier */ off_t cd_offset; /* Offset from the beginning */ size_t cd_length; /* # of bytes in use */ caddr_t cd_miscdata; /* ancillary data */ union { /* Raw format */ iovec_t cdu_raw; /* Pointer and length */ /* uio scatter-gather format */ uio_t *cdu_uio; } cdu; /* Crypto Data Union */ } crypto_data_t; #define cd_raw cdu.cdu_raw #define cd_uio cdu.cdu_uio #define cd_mp cdu.cdu_mp typedef struct crypto_dual_data { crypto_data_t dd_data; /* The data */ off_t dd_offset2; /* Used by dual operation */ size_t dd_len2; /* # of bytes to take */ } crypto_dual_data_t; #define dd_format dd_data.cd_format #define dd_offset1 dd_data.cd_offset #define dd_len1 dd_data.cd_length #define dd_miscdata dd_data.cd_miscdata #define dd_raw dd_data.cd_raw #define dd_uio dd_data.cd_uio #define dd_mp dd_data.cd_mp /* The keys, and their contents */ typedef enum { CRYPTO_KEY_RAW = 1, /* ck_data is a cleartext key */ CRYPTO_KEY_REFERENCE, /* ck_obj_id is an opaque reference */ CRYPTO_KEY_ATTR_LIST /* ck_attrs is a list of object attributes */ } crypto_key_format_t; typedef uint64_t crypto_attr_type_t; /* Attribute types to use for passing a RSA public key or a private key. */ #define SUN_CKA_MODULUS 0x00000120 #define SUN_CKA_MODULUS_BITS 0x00000121 #define SUN_CKA_PUBLIC_EXPONENT 0x00000122 #define SUN_CKA_PRIVATE_EXPONENT 0x00000123 #define SUN_CKA_PRIME_1 0x00000124 #define SUN_CKA_PRIME_2 0x00000125 #define SUN_CKA_EXPONENT_1 0x00000126 #define SUN_CKA_EXPONENT_2 0x00000127 #define SUN_CKA_COEFFICIENT 0x00000128 #define SUN_CKA_PRIME 0x00000130 #define SUN_CKA_SUBPRIME 0x00000131 #define SUN_CKA_BASE 0x00000132 #define CKK_EC 0x00000003 #define CKK_GENERIC_SECRET 0x00000010 #define CKK_RC4 0x00000012 #define CKK_AES 0x0000001F #define CKK_DES 0x00000013 #define CKK_DES2 0x00000014 #define CKK_DES3 0x00000015 #define CKO_PUBLIC_KEY 0x00000002 #define CKO_PRIVATE_KEY 0x00000003 #define CKA_CLASS 0x00000000 #define CKA_VALUE 0x00000011 #define CKA_KEY_TYPE 0x00000100 #define CKA_VALUE_LEN 0x00000161 #define CKA_EC_PARAMS 0x00000180 #define CKA_EC_POINT 0x00000181 typedef uint32_t crypto_object_id_t; typedef struct crypto_object_attribute { crypto_attr_type_t oa_type; /* attribute type */ caddr_t oa_value; /* attribute value */ ssize_t oa_value_len; /* length of attribute value */ } crypto_object_attribute_t; typedef struct crypto_key { crypto_key_format_t ck_format; /* format identifier */ union { /* for CRYPTO_KEY_RAW ck_format */ struct { uint_t cku_v_length; /* # of bits in ck_data */ void *cku_v_data; /* ptr to key value */ } cku_key_value; /* for CRYPTO_KEY_REFERENCE ck_format */ crypto_object_id_t cku_key_id; /* reference to object key */ /* for CRYPTO_KEY_ATTR_LIST ck_format */ struct { uint_t cku_a_count; /* number of attributes */ crypto_object_attribute_t *cku_a_oattr; } cku_key_attrs; } cku_data; /* Crypto Key union */ } crypto_key_t; #ifdef _SYSCALL32 typedef struct crypto_object_attribute32 { uint64_t oa_type; /* attribute type */ caddr32_t oa_value; /* attribute value */ ssize32_t oa_value_len; /* length of attribute value */ } crypto_object_attribute32_t; typedef struct crypto_key32 { crypto_key_format_t ck_format; /* format identifier */ union { /* for CRYPTO_KEY_RAW ck_format */ struct { uint32_t cku_v_length; /* # of bytes in ck_data */ caddr32_t cku_v_data; /* ptr to key value */ } cku_key_value; /* for CRYPTO_KEY_REFERENCE ck_format */ crypto_object_id_t cku_key_id; /* reference to object key */ /* for CRYPTO_KEY_ATTR_LIST ck_format */ struct { uint32_t cku_a_count; /* number of attributes */ caddr32_t cku_a_oattr; } cku_key_attrs; } cku_data; /* Crypto Key union */ } crypto_key32_t; #endif /* _SYSCALL32 */ #define ck_data cku_data.cku_key_value.cku_v_data #define ck_length cku_data.cku_key_value.cku_v_length #define ck_obj_id cku_data.cku_key_id #define ck_count cku_data.cku_key_attrs.cku_a_count #define ck_attrs cku_data.cku_key_attrs.cku_a_oattr /* * Raw key lengths are expressed in number of bits. * The following macro returns the minimum number of * bytes that can contain the specified number of bits. * Round up without overflowing the integer type. */ #define CRYPTO_BITS2BYTES(n) ((n) == 0 ? 0 : (((n) - 1) >> 3) + 1) #define CRYPTO_BYTES2BITS(n) ((n) << 3) /* Providers */ typedef enum { CRYPTO_HW_PROVIDER = 0, CRYPTO_SW_PROVIDER, CRYPTO_LOGICAL_PROVIDER } crypto_provider_type_t; typedef uint32_t crypto_provider_id_t; #define KCF_PROVID_INVALID ((uint32_t)-1) typedef struct crypto_provider_entry { crypto_provider_id_t pe_provider_id; uint_t pe_mechanism_count; } crypto_provider_entry_t; typedef struct crypto_dev_list_entry { char le_dev_name[MAXNAMELEN]; uint_t le_dev_instance; uint_t le_mechanism_count; } crypto_dev_list_entry_t; /* User type for authentication ioctls and SPI entry points */ typedef enum crypto_user_type { CRYPTO_SO = 0, CRYPTO_USER } crypto_user_type_t; /* Version for provider management ioctls and SPI entry points */ typedef struct crypto_version { uchar_t cv_major; uchar_t cv_minor; } crypto_version_t; /* session data structure opaque to the consumer */ typedef void *crypto_session_t; /* provider data structure opaque to the consumer */ typedef void *crypto_provider_t; /* Limits used by both consumers and providers */ #define CRYPTO_EXT_SIZE_LABEL 32 #define CRYPTO_EXT_SIZE_MANUF 32 #define CRYPTO_EXT_SIZE_MODEL 16 #define CRYPTO_EXT_SIZE_SERIAL 16 #define CRYPTO_EXT_SIZE_TIME 16 typedef struct crypto_provider_ext_info { uchar_t ei_label[CRYPTO_EXT_SIZE_LABEL]; uchar_t ei_manufacturerID[CRYPTO_EXT_SIZE_MANUF]; uchar_t ei_model[CRYPTO_EXT_SIZE_MODEL]; uchar_t ei_serial_number[CRYPTO_EXT_SIZE_SERIAL]; ulong_t ei_flags; ulong_t ei_max_session_count; ulong_t ei_max_pin_len; ulong_t ei_min_pin_len; ulong_t ei_total_public_memory; ulong_t ei_free_public_memory; ulong_t ei_total_private_memory; ulong_t ei_free_private_memory; crypto_version_t ei_hardware_version; crypto_version_t ei_firmware_version; uchar_t ei_time[CRYPTO_EXT_SIZE_TIME]; int ei_hash_max_input_len; int ei_hmac_max_input_len; } crypto_provider_ext_info_t; typedef uint_t crypto_session_id_t; typedef enum cmd_type { COPY_FROM_DATA, COPY_TO_DATA, COMPARE_TO_DATA, MD5_DIGEST_DATA, SHA1_DIGEST_DATA, SHA2_DIGEST_DATA, GHASH_DATA } cmd_type_t; #define CRYPTO_DO_UPDATE 0x01 #define CRYPTO_DO_FINAL 0x02 #define CRYPTO_DO_MD5 0x04 #define CRYPTO_DO_SHA1 0x08 #define CRYPTO_DO_SIGN 0x10 #define CRYPTO_DO_VERIFY 0x20 #define CRYPTO_DO_SHA2 0x40 #define PROVIDER_OWNS_KEY_SCHEDULE 0x00000001 /* * Common cryptographic status and error codes. */ #define CRYPTO_SUCCESS 0x00000000 #define CRYPTO_CANCEL 0x00000001 #define CRYPTO_HOST_MEMORY 0x00000002 #define CRYPTO_GENERAL_ERROR 0x00000003 #define CRYPTO_FAILED 0x00000004 #define CRYPTO_ARGUMENTS_BAD 0x00000005 #define CRYPTO_ATTRIBUTE_READ_ONLY 0x00000006 #define CRYPTO_ATTRIBUTE_SENSITIVE 0x00000007 #define CRYPTO_ATTRIBUTE_TYPE_INVALID 0x00000008 #define CRYPTO_ATTRIBUTE_VALUE_INVALID 0x00000009 #define CRYPTO_CANCELED 0x0000000A #define CRYPTO_DATA_INVALID 0x0000000B #define CRYPTO_DATA_LEN_RANGE 0x0000000C #define CRYPTO_DEVICE_ERROR 0x0000000D #define CRYPTO_DEVICE_MEMORY 0x0000000E #define CRYPTO_DEVICE_REMOVED 0x0000000F #define CRYPTO_ENCRYPTED_DATA_INVALID 0x00000010 #define CRYPTO_ENCRYPTED_DATA_LEN_RANGE 0x00000011 #define CRYPTO_KEY_HANDLE_INVALID 0x00000012 #define CRYPTO_KEY_SIZE_RANGE 0x00000013 #define CRYPTO_KEY_TYPE_INCONSISTENT 0x00000014 #define CRYPTO_KEY_NOT_NEEDED 0x00000015 #define CRYPTO_KEY_CHANGED 0x00000016 #define CRYPTO_KEY_NEEDED 0x00000017 #define CRYPTO_KEY_INDIGESTIBLE 0x00000018 #define CRYPTO_KEY_FUNCTION_NOT_PERMITTED 0x00000019 #define CRYPTO_KEY_NOT_WRAPPABLE 0x0000001A #define CRYPTO_KEY_UNEXTRACTABLE 0x0000001B #define CRYPTO_MECHANISM_INVALID 0x0000001C #define CRYPTO_MECHANISM_PARAM_INVALID 0x0000001D #define CRYPTO_OBJECT_HANDLE_INVALID 0x0000001E #define CRYPTO_OPERATION_IS_ACTIVE 0x0000001F #define CRYPTO_OPERATION_NOT_INITIALIZED 0x00000020 #define CRYPTO_PIN_INCORRECT 0x00000021 #define CRYPTO_PIN_INVALID 0x00000022 #define CRYPTO_PIN_LEN_RANGE 0x00000023 #define CRYPTO_PIN_EXPIRED 0x00000024 #define CRYPTO_PIN_LOCKED 0x00000025 #define CRYPTO_SESSION_CLOSED 0x00000026 #define CRYPTO_SESSION_COUNT 0x00000027 #define CRYPTO_SESSION_HANDLE_INVALID 0x00000028 #define CRYPTO_SESSION_READ_ONLY 0x00000029 #define CRYPTO_SESSION_EXISTS 0x0000002A #define CRYPTO_SESSION_READ_ONLY_EXISTS 0x0000002B #define CRYPTO_SESSION_READ_WRITE_SO_EXISTS 0x0000002C #define CRYPTO_SIGNATURE_INVALID 0x0000002D #define CRYPTO_SIGNATURE_LEN_RANGE 0x0000002E #define CRYPTO_TEMPLATE_INCOMPLETE 0x0000002F #define CRYPTO_TEMPLATE_INCONSISTENT 0x00000030 #define CRYPTO_UNWRAPPING_KEY_HANDLE_INVALID 0x00000031 #define CRYPTO_UNWRAPPING_KEY_SIZE_RANGE 0x00000032 #define CRYPTO_UNWRAPPING_KEY_TYPE_INCONSISTENT 0x00000033 #define CRYPTO_USER_ALREADY_LOGGED_IN 0x00000034 #define CRYPTO_USER_NOT_LOGGED_IN 0x00000035 #define CRYPTO_USER_PIN_NOT_INITIALIZED 0x00000036 #define CRYPTO_USER_TYPE_INVALID 0x00000037 #define CRYPTO_USER_ANOTHER_ALREADY_LOGGED_IN 0x00000038 #define CRYPTO_USER_TOO_MANY_TYPES 0x00000039 #define CRYPTO_WRAPPED_KEY_INVALID 0x0000003A #define CRYPTO_WRAPPED_KEY_LEN_RANGE 0x0000003B #define CRYPTO_WRAPPING_KEY_HANDLE_INVALID 0x0000003C #define CRYPTO_WRAPPING_KEY_SIZE_RANGE 0x0000003D #define CRYPTO_WRAPPING_KEY_TYPE_INCONSISTENT 0x0000003E #define CRYPTO_RANDOM_SEED_NOT_SUPPORTED 0x0000003F #define CRYPTO_RANDOM_NO_RNG 0x00000040 #define CRYPTO_DOMAIN_PARAMS_INVALID 0x00000041 #define CRYPTO_BUFFER_TOO_SMALL 0x00000042 #define CRYPTO_INFORMATION_SENSITIVE 0x00000043 #define CRYPTO_NOT_SUPPORTED 0x00000044 #define CRYPTO_QUEUED 0x00000045 #define CRYPTO_BUFFER_TOO_BIG 0x00000046 #define CRYPTO_INVALID_CONTEXT 0x00000047 #define CRYPTO_INVALID_MAC 0x00000048 #define CRYPTO_MECH_NOT_SUPPORTED 0x00000049 #define CRYPTO_INCONSISTENT_ATTRIBUTE 0x0000004A #define CRYPTO_NO_PERMISSION 0x0000004B #define CRYPTO_INVALID_PROVIDER_ID 0x0000004C #define CRYPTO_VERSION_MISMATCH 0x0000004D #define CRYPTO_BUSY 0x0000004E #define CRYPTO_UNKNOWN_PROVIDER 0x0000004F #define CRYPTO_MODVERIFICATION_FAILED 0x00000050 #define CRYPTO_OLD_CTX_TEMPLATE 0x00000051 #define CRYPTO_WEAK_KEY 0x00000052 #define CRYPTO_FIPS140_ERROR 0x00000053 /* * Don't forget to update CRYPTO_LAST_ERROR and the error_number_table[] * in kernelUtil.c when new error code is added. */ #define CRYPTO_LAST_ERROR 0x00000053 /* * Special values that can be used to indicate that information is unavailable * or that there is not practical limit. These values can be used * by fields of the SPI crypto_provider_ext_info(9S) structure. * The value of CRYPTO_UNAVAILABLE_INFO should be the same as * CK_UNAVAILABLE_INFO in the PKCS#11 spec. */ #define CRYPTO_UNAVAILABLE_INFO ((ulong_t)(-1)) #define CRYPTO_EFFECTIVELY_INFINITE 0x0 #ifdef __cplusplus } #endif #endif /* _SYS_CRYPTO_COMMON_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zap.h0000644000000000000000000000007413607166132016624 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.620430443 zfs-0.8.3/include/sys/zap.h0000644016037001603700000004520113607166132016623 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright 2017 Nexenta Systems, Inc. */ #ifndef _SYS_ZAP_H #define _SYS_ZAP_H /* * ZAP - ZFS Attribute Processor * * The ZAP is a module which sits on top of the DMU (Data Management * Unit) and implements a higher-level storage primitive using DMU * objects. Its primary consumer is the ZPL (ZFS Posix Layer). * * A "zapobj" is a DMU object which the ZAP uses to stores attributes. * Users should use only zap routines to access a zapobj - they should * not access the DMU object directly using DMU routines. * * The attributes stored in a zapobj are name-value pairs. The name is * a zero-terminated string of up to ZAP_MAXNAMELEN bytes (including * terminating NULL). The value is an array of integers, which may be * 1, 2, 4, or 8 bytes long. The total space used by the array (number * of integers * integer length) can be up to ZAP_MAXVALUELEN bytes. * Note that an 8-byte integer value can be used to store the location * (object number) of another dmu object (which may be itself a zapobj). * Note that you can use a zero-length attribute to store a single bit * of information - the attribute is present or not. * * The ZAP routines are thread-safe. However, you must observe the * DMU's restriction that a transaction may not be operated on * concurrently. * * Any of the routines that return an int may return an I/O error (EIO * or ECHECKSUM). * * * Implementation / Performance Notes: * * The ZAP is intended to operate most efficiently on attributes with * short (49 bytes or less) names and single 8-byte values, for which * the microzap will be used. The ZAP should be efficient enough so * that the user does not need to cache these attributes. * * The ZAP's locking scheme makes its routines thread-safe. Operations * on different zapobjs will be processed concurrently. Operations on * the same zapobj which only read data will be processed concurrently. * Operations on the same zapobj which modify data will be processed * concurrently when there are many attributes in the zapobj (because * the ZAP uses per-block locking - more than 128 * (number of cpus) * small attributes will suffice). */ /* * We're using zero-terminated byte strings (ie. ASCII or UTF-8 C * strings) for the names of attributes, rather than a byte string * bounded by an explicit length. If some day we want to support names * in character sets which have embedded zeros (eg. UTF-16, UTF-32), * we'll have to add routines for using length-bounded strings. */ #include #ifdef __cplusplus extern "C" { #endif /* * Specifies matching criteria for ZAP lookups. * MT_NORMALIZE Use ZAP normalization flags, which can include both * unicode normalization and case-insensitivity. * MT_MATCH_CASE Do case-sensitive lookups even if MT_NORMALIZE is * specified and ZAP normalization flags include * U8_TEXTPREP_TOUPPER. */ typedef enum matchtype { MT_NORMALIZE = 1 << 0, MT_MATCH_CASE = 1 << 1, } matchtype_t; typedef enum zap_flags { /* Use 64-bit hash value (serialized cursors will always use 64-bits) */ ZAP_FLAG_HASH64 = 1 << 0, /* Key is binary, not string (zap_add_uint64() can be used) */ ZAP_FLAG_UINT64_KEY = 1 << 1, /* * First word of key (which must be an array of uint64) is * already randomly distributed. */ ZAP_FLAG_PRE_HASHED_KEY = 1 << 2, } zap_flags_t; /* * Create a new zapobj with no attributes and return its object number. */ uint64_t zap_create(objset_t *ds, dmu_object_type_t ot, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); uint64_t zap_create_dnsize(objset_t *ds, dmu_object_type_t ot, dmu_object_type_t bonustype, int bonuslen, int dnodesize, dmu_tx_t *tx); uint64_t zap_create_norm(objset_t *ds, int normflags, dmu_object_type_t ot, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); uint64_t zap_create_norm_dnsize(objset_t *ds, int normflags, dmu_object_type_t ot, dmu_object_type_t bonustype, int bonuslen, int dnodesize, dmu_tx_t *tx); uint64_t zap_create_flags(objset_t *os, int normflags, zap_flags_t flags, dmu_object_type_t ot, int leaf_blockshift, int indirect_blockshift, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); uint64_t zap_create_flags_dnsize(objset_t *os, int normflags, zap_flags_t flags, dmu_object_type_t ot, int leaf_blockshift, int indirect_blockshift, dmu_object_type_t bonustype, int bonuslen, int dnodesize, dmu_tx_t *tx); uint64_t zap_create_hold(objset_t *os, int normflags, zap_flags_t flags, dmu_object_type_t ot, int leaf_blockshift, int indirect_blockshift, dmu_object_type_t bonustype, int bonuslen, int dnodesize, dnode_t **allocated_dnode, void *tag, dmu_tx_t *tx); uint64_t zap_create_link(objset_t *os, dmu_object_type_t ot, uint64_t parent_obj, const char *name, dmu_tx_t *tx); uint64_t zap_create_link_dnsize(objset_t *os, dmu_object_type_t ot, uint64_t parent_obj, const char *name, int dnodesize, dmu_tx_t *tx); /* * Initialize an already-allocated object. */ void mzap_create_impl(dnode_t *dn, int normflags, zap_flags_t flags, dmu_tx_t *tx); /* * Create a new zapobj with no attributes from the given (unallocated) * object number. */ int zap_create_claim(objset_t *ds, uint64_t obj, dmu_object_type_t ot, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); int zap_create_claim_dnsize(objset_t *ds, uint64_t obj, dmu_object_type_t ot, dmu_object_type_t bonustype, int bonuslen, int dnodesize, dmu_tx_t *tx); int zap_create_claim_norm(objset_t *ds, uint64_t obj, int normflags, dmu_object_type_t ot, dmu_object_type_t bonustype, int bonuslen, dmu_tx_t *tx); int zap_create_claim_norm_dnsize(objset_t *ds, uint64_t obj, int normflags, dmu_object_type_t ot, dmu_object_type_t bonustype, int bonuslen, int dnodesize, dmu_tx_t *tx); /* * The zapobj passed in must be a valid ZAP object for all of the * following routines. */ /* * Destroy this zapobj and all its attributes. * * Frees the object number using dmu_object_free. */ int zap_destroy(objset_t *ds, uint64_t zapobj, dmu_tx_t *tx); /* * Manipulate attributes. * * 'integer_size' is in bytes, and must be 1, 2, 4, or 8. */ /* * Retrieve the contents of the attribute with the given name. * * If the requested attribute does not exist, the call will fail and * return ENOENT. * * If 'integer_size' is smaller than the attribute's integer size, the * call will fail and return EINVAL. * * If 'integer_size' is equal to or larger than the attribute's integer * size, the call will succeed and return 0. * * When converting to a larger integer size, the integers will be treated as * unsigned (ie. no sign-extension will be performed). * * 'num_integers' is the length (in integers) of 'buf'. * * If the attribute is longer than the buffer, as many integers as will * fit will be transferred to 'buf'. If the entire attribute was not * transferred, the call will return EOVERFLOW. */ int zap_lookup(objset_t *ds, uint64_t zapobj, const char *name, uint64_t integer_size, uint64_t num_integers, void *buf); /* * If rn_len is nonzero, realname will be set to the name of the found * entry (which may be different from the requested name if matchtype is * not MT_EXACT). * * If normalization_conflictp is not NULL, it will be set if there is * another name with the same case/unicode normalized form. */ int zap_lookup_norm(objset_t *ds, uint64_t zapobj, const char *name, uint64_t integer_size, uint64_t num_integers, void *buf, matchtype_t mt, char *realname, int rn_len, boolean_t *normalization_conflictp); int zap_lookup_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, int key_numints, uint64_t integer_size, uint64_t num_integers, void *buf); int zap_contains(objset_t *ds, uint64_t zapobj, const char *name); int zap_prefetch(objset_t *os, uint64_t zapobj, const char *name); int zap_prefetch_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, int key_numints); int zap_lookup_by_dnode(dnode_t *dn, const char *name, uint64_t integer_size, uint64_t num_integers, void *buf); int zap_lookup_norm_by_dnode(dnode_t *dn, const char *name, uint64_t integer_size, uint64_t num_integers, void *buf, matchtype_t mt, char *realname, int rn_len, boolean_t *ncp); int zap_count_write_by_dnode(dnode_t *dn, const char *name, int add, zfs_refcount_t *towrite, zfs_refcount_t *tooverwrite); /* * Create an attribute with the given name and value. * * If an attribute with the given name already exists, the call will * fail and return EEXIST. */ int zap_add(objset_t *ds, uint64_t zapobj, const char *key, int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx); int zap_add_by_dnode(dnode_t *dn, const char *key, int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx); int zap_add_uint64(objset_t *ds, uint64_t zapobj, const uint64_t *key, int key_numints, int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx); /* * Set the attribute with the given name to the given value. If an * attribute with the given name does not exist, it will be created. If * an attribute with the given name already exists, the previous value * will be overwritten. The integer_size may be different from the * existing attribute's integer size, in which case the attribute's * integer size will be updated to the new value. */ int zap_update(objset_t *ds, uint64_t zapobj, const char *name, int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx); int zap_update_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, int key_numints, int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx); /* * Get the length (in integers) and the integer size of the specified * attribute. * * If the requested attribute does not exist, the call will fail and * return ENOENT. */ int zap_length(objset_t *ds, uint64_t zapobj, const char *name, uint64_t *integer_size, uint64_t *num_integers); int zap_length_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, int key_numints, uint64_t *integer_size, uint64_t *num_integers); /* * Remove the specified attribute. * * If the specified attribute does not exist, the call will fail and * return ENOENT. */ int zap_remove(objset_t *ds, uint64_t zapobj, const char *name, dmu_tx_t *tx); int zap_remove_norm(objset_t *ds, uint64_t zapobj, const char *name, matchtype_t mt, dmu_tx_t *tx); int zap_remove_by_dnode(dnode_t *dn, const char *name, dmu_tx_t *tx); int zap_remove_uint64(objset_t *os, uint64_t zapobj, const uint64_t *key, int key_numints, dmu_tx_t *tx); /* * Returns (in *count) the number of attributes in the specified zap * object. */ int zap_count(objset_t *ds, uint64_t zapobj, uint64_t *count); /* * Returns (in name) the name of the entry whose (value & mask) * (za_first_integer) is value, or ENOENT if not found. The string * pointed to by name must be at least 256 bytes long. If mask==0, the * match must be exact (ie, same as mask=-1ULL). */ int zap_value_search(objset_t *os, uint64_t zapobj, uint64_t value, uint64_t mask, char *name); /* * Transfer all the entries from fromobj into intoobj. Only works on * int_size=8 num_integers=1 values. Fails if there are any duplicated * entries. */ int zap_join(objset_t *os, uint64_t fromobj, uint64_t intoobj, dmu_tx_t *tx); /* Same as zap_join, but set the values to 'value'. */ int zap_join_key(objset_t *os, uint64_t fromobj, uint64_t intoobj, uint64_t value, dmu_tx_t *tx); /* Same as zap_join, but add together any duplicated entries. */ int zap_join_increment(objset_t *os, uint64_t fromobj, uint64_t intoobj, dmu_tx_t *tx); /* * Manipulate entries where the name + value are the "same" (the name is * a stringified version of the value). */ int zap_add_int(objset_t *os, uint64_t obj, uint64_t value, dmu_tx_t *tx); int zap_remove_int(objset_t *os, uint64_t obj, uint64_t value, dmu_tx_t *tx); int zap_lookup_int(objset_t *os, uint64_t obj, uint64_t value); int zap_increment_int(objset_t *os, uint64_t obj, uint64_t key, int64_t delta, dmu_tx_t *tx); /* Here the key is an int and the value is a different int. */ int zap_add_int_key(objset_t *os, uint64_t obj, uint64_t key, uint64_t value, dmu_tx_t *tx); int zap_update_int_key(objset_t *os, uint64_t obj, uint64_t key, uint64_t value, dmu_tx_t *tx); int zap_lookup_int_key(objset_t *os, uint64_t obj, uint64_t key, uint64_t *valuep); int zap_increment(objset_t *os, uint64_t obj, const char *name, int64_t delta, dmu_tx_t *tx); struct zap; struct zap_leaf; typedef struct zap_cursor { /* This structure is opaque! */ objset_t *zc_objset; struct zap *zc_zap; struct zap_leaf *zc_leaf; uint64_t zc_zapobj; uint64_t zc_serialized; uint64_t zc_hash; uint32_t zc_cd; boolean_t zc_prefetch; } zap_cursor_t; typedef struct { int za_integer_length; /* * za_normalization_conflict will be set if there are additional * entries with this normalized form (eg, "foo" and "Foo"). */ boolean_t za_normalization_conflict; uint64_t za_num_integers; uint64_t za_first_integer; /* no sign extension for <8byte ints */ char za_name[ZAP_MAXNAMELEN]; } zap_attribute_t; /* * The interface for listing all the attributes of a zapobj can be * thought of as cursor moving down a list of the attributes one by * one. The cookie returned by the zap_cursor_serialize routine is * persistent across system calls (and across reboot, even). */ /* * Initialize a zap cursor, pointing to the "first" attribute of the * zapobj. You must _fini the cursor when you are done with it. */ void zap_cursor_init(zap_cursor_t *zc, objset_t *os, uint64_t zapobj); void zap_cursor_init_noprefetch(zap_cursor_t *zc, objset_t *os, uint64_t zapobj); void zap_cursor_fini(zap_cursor_t *zc); /* * Get the attribute currently pointed to by the cursor. Returns * ENOENT if at the end of the attributes. */ int zap_cursor_retrieve(zap_cursor_t *zc, zap_attribute_t *za); /* * Advance the cursor to the next attribute. */ void zap_cursor_advance(zap_cursor_t *zc); /* * Get a persistent cookie pointing to the current position of the zap * cursor. The low 4 bits in the cookie are always zero, and thus can * be used as to differentiate a serialized cookie from a different type * of value. The cookie will be less than 2^32 as long as there are * fewer than 2^22 (4.2 million) entries in the zap object. */ uint64_t zap_cursor_serialize(zap_cursor_t *zc); /* * Initialize a zap cursor pointing to the position recorded by * zap_cursor_serialize (in the "serialized" argument). You can also * use a "serialized" argument of 0 to start at the beginning of the * zapobj (ie. zap_cursor_init_serialized(..., 0) is equivalent to * zap_cursor_init(...).) */ void zap_cursor_init_serialized(zap_cursor_t *zc, objset_t *ds, uint64_t zapobj, uint64_t serialized); #define ZAP_HISTOGRAM_SIZE 10 typedef struct zap_stats { /* * Size of the pointer table (in number of entries). * This is always a power of 2, or zero if it's a microzap. * In general, it should be considerably greater than zs_num_leafs. */ uint64_t zs_ptrtbl_len; uint64_t zs_blocksize; /* size of zap blocks */ /* * The number of blocks used. Note that some blocks may be * wasted because old ptrtbl's and large name/value blocks are * not reused. (Although their space is reclaimed, we don't * reuse those offsets in the object.) */ uint64_t zs_num_blocks; /* * Pointer table values from zap_ptrtbl in the zap_phys_t */ uint64_t zs_ptrtbl_nextblk; /* next (larger) copy start block */ uint64_t zs_ptrtbl_blks_copied; /* number source blocks copied */ uint64_t zs_ptrtbl_zt_blk; /* starting block number */ uint64_t zs_ptrtbl_zt_numblks; /* number of blocks */ uint64_t zs_ptrtbl_zt_shift; /* bits to index it */ /* * Values of the other members of the zap_phys_t */ uint64_t zs_block_type; /* ZBT_HEADER */ uint64_t zs_magic; /* ZAP_MAGIC */ uint64_t zs_num_leafs; /* The number of leaf blocks */ uint64_t zs_num_entries; /* The number of zap entries */ uint64_t zs_salt; /* salt to stir into hash function */ /* * Histograms. For all histograms, the last index * (ZAP_HISTOGRAM_SIZE-1) includes any values which are greater * than what can be represented. For example * zs_leafs_with_n5_entries[ZAP_HISTOGRAM_SIZE-1] is the number * of leafs with more than 45 entries. */ /* * zs_leafs_with_n_pointers[n] is the number of leafs with * 2^n pointers to it. */ uint64_t zs_leafs_with_2n_pointers[ZAP_HISTOGRAM_SIZE]; /* * zs_leafs_with_n_entries[n] is the number of leafs with * [n*5, (n+1)*5) entries. In the current implementation, there * can be at most 55 entries in any block, but there may be * fewer if the name or value is large, or the block is not * completely full. */ uint64_t zs_blocks_with_n5_entries[ZAP_HISTOGRAM_SIZE]; /* * zs_leafs_n_tenths_full[n] is the number of leafs whose * fullness is in the range [n/10, (n+1)/10). */ uint64_t zs_blocks_n_tenths_full[ZAP_HISTOGRAM_SIZE]; /* * zs_entries_using_n_chunks[n] is the number of entries which * consume n 24-byte chunks. (Note, large names/values only use * one chunk, but contribute to zs_num_blocks_large.) */ uint64_t zs_entries_using_n_chunks[ZAP_HISTOGRAM_SIZE]; /* * zs_buckets_with_n_entries[n] is the number of buckets (each * leaf has 64 buckets) with n entries. * zs_buckets_with_n_entries[1] should be very close to * zs_num_entries. */ uint64_t zs_buckets_with_n_entries[ZAP_HISTOGRAM_SIZE]; } zap_stats_t; /* * Get statistics about a ZAP object. Note: you need to be aware of the * internal implementation of the ZAP to correctly interpret some of the * statistics. This interface shouldn't be relied on unless you really * know what you're doing. */ int zap_get_stats(objset_t *ds, uint64_t zapobj, zap_stats_t *zs); #ifdef __cplusplus } #endif #endif /* _SYS_ZAP_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_userhold.h0000644000000000000000000000007313607166132020520 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.47142566 zfs-0.8.3/include/sys/dsl_userhold.h0000644016037001603700000000353613607166132020525 0ustar00hutter2hutter200000000000000 /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. */ #ifndef _SYS_DSL_USERHOLD_H #define _SYS_DSL_USERHOLD_H #include #include #ifdef __cplusplus extern "C" { #endif struct dsl_pool; struct dsl_dataset; struct dmu_tx; int dsl_dataset_user_hold(nvlist_t *holds, minor_t cleanup_minor, nvlist_t *errlist); int dsl_dataset_user_release(nvlist_t *holds, nvlist_t *errlist); int dsl_dataset_get_holds(const char *dsname, nvlist_t *nvl); void dsl_dataset_user_release_tmp(struct dsl_pool *dp, nvlist_t *holds); int dsl_dataset_user_hold_check_one(struct dsl_dataset *ds, const char *htag, boolean_t temphold, struct dmu_tx *tx); void dsl_dataset_user_hold_sync_one(struct dsl_dataset *ds, const char *htag, minor_t minor, uint64_t now, struct dmu_tx *tx); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_USERHOLD_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/bplist.h0000644000000000000000000000007413607166147017335 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.405423542 zfs-0.8.3/include/sys/bplist.h0000644016037001603700000000302113607166147017326 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_BPLIST_H #define _SYS_BPLIST_H #include #include #ifdef __cplusplus extern "C" { #endif typedef struct bplist_entry { blkptr_t bpe_blk; list_node_t bpe_node; } bplist_entry_t; typedef struct bplist { kmutex_t bpl_lock; list_t bpl_list; } bplist_t; typedef int bplist_itor_t(void *arg, const blkptr_t *bp, dmu_tx_t *tx); void bplist_create(bplist_t *bpl); void bplist_destroy(bplist_t *bpl); void bplist_append(bplist_t *bpl, const blkptr_t *bp); void bplist_iterate(bplist_t *bpl, bplist_itor_t *func, void *arg, dmu_tx_t *tx); #ifdef __cplusplus } #endif #endif /* _SYS_BPLIST_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_destroy.h0000644000000000000000000000007413607166147020373 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.455425145 zfs-0.8.3/include/sys/dsl_destroy.h0000644016037001603700000000415513607166147020375 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2016 by Delphix. All rights reserved. * Copyright (c) 2012, Joyent, Inc. All rights reserved. */ #ifndef _SYS_DSL_DESTROY_H #define _SYS_DSL_DESTROY_H #ifdef __cplusplus extern "C" { #endif struct nvlist; struct dsl_dataset; struct dmu_tx; int dsl_destroy_snapshots_nvl(struct nvlist *, boolean_t, struct nvlist *); int dsl_destroy_snapshot(const char *, boolean_t); int dsl_destroy_head(const char *); int dsl_destroy_head_check_impl(struct dsl_dataset *, int); void dsl_destroy_head_sync_impl(struct dsl_dataset *, struct dmu_tx *); int dsl_destroy_inconsistent(const char *, void *); int dsl_destroy_snapshot_check_impl(struct dsl_dataset *, boolean_t); void dsl_destroy_snapshot_sync_impl(struct dsl_dataset *, boolean_t, struct dmu_tx *); typedef struct dsl_destroy_snapshot_arg { const char *ddsa_name; boolean_t ddsa_defer; } dsl_destroy_snapshot_arg_t; int dsl_destroy_snapshot_check(void *, dmu_tx_t *); void dsl_destroy_snapshot_sync(void *, dmu_tx_t *); typedef struct dsl_destroy_head_arg { const char *ddha_name; } dsl_destroy_head_arg_t; int dsl_destroy_head_check(void *, dmu_tx_t *); void dsl_destroy_head_sync(void *, dmu_tx_t *); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_DESTROY_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/skein.h0000644000000000000000000000007413607166132017143 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.520427234 zfs-0.8.3/include/sys/skein.h0000644016037001603700000001530713607166132017146 0ustar00hutter2hutter200000000000000/* * Interface declarations for Skein hashing. * Source code author: Doug Whiting, 2008. * This algorithm and source code is released to the public domain. * * The following compile-time switches may be defined to control some * tradeoffs between speed, code size, error checking, and security. * * The "default" note explains what happens when the switch is not defined. * * SKEIN_DEBUG -- make callouts from inside Skein code * to examine/display intermediate values. * [default: no callouts (no overhead)] * * SKEIN_ERR_CHECK -- how error checking is handled inside Skein * code. If not defined, most error checking * is disabled (for performance). Otherwise, * the switch value is interpreted as: * 0: use assert() to flag errors * 1: return SKEIN_FAIL to flag errors */ /* Copyright 2013 Doug Whiting. This code is released to the public domain. */ #ifndef _SYS_SKEIN_H_ #define _SYS_SKEIN_H_ #ifdef _KERNEL #include /* get size_t definition */ #else #include #include #endif #ifdef __cplusplus extern "C" { #endif enum { SKEIN_SUCCESS = 0, /* return codes from Skein calls */ SKEIN_FAIL = 1, SKEIN_BAD_HASHLEN = 2 }; #define SKEIN_MODIFIER_WORDS (2) /* number of modifier (tweak) words */ #define SKEIN_256_STATE_WORDS (4) #define SKEIN_512_STATE_WORDS (8) #define SKEIN1024_STATE_WORDS (16) #define SKEIN_MAX_STATE_WORDS (16) #define SKEIN_256_STATE_BYTES (8 * SKEIN_256_STATE_WORDS) #define SKEIN_512_STATE_BYTES (8 * SKEIN_512_STATE_WORDS) #define SKEIN1024_STATE_BYTES (8 * SKEIN1024_STATE_WORDS) #define SKEIN_256_STATE_BITS (64 * SKEIN_256_STATE_WORDS) #define SKEIN_512_STATE_BITS (64 * SKEIN_512_STATE_WORDS) #define SKEIN1024_STATE_BITS (64 * SKEIN1024_STATE_WORDS) #define SKEIN_256_BLOCK_BYTES (8 * SKEIN_256_STATE_WORDS) #define SKEIN_512_BLOCK_BYTES (8 * SKEIN_512_STATE_WORDS) #define SKEIN1024_BLOCK_BYTES (8 * SKEIN1024_STATE_WORDS) typedef struct { size_t hashBitLen; /* size of hash result, in bits */ size_t bCnt; /* current byte count in buffer b[] */ /* tweak words: T[0]=byte cnt, T[1]=flags */ uint64_t T[SKEIN_MODIFIER_WORDS]; } Skein_Ctxt_Hdr_t; typedef struct { /* 256-bit Skein hash context structure */ Skein_Ctxt_Hdr_t h; /* common header context variables */ uint64_t X[SKEIN_256_STATE_WORDS]; /* chaining variables */ /* partial block buffer (8-byte aligned) */ uint8_t b[SKEIN_256_BLOCK_BYTES]; } Skein_256_Ctxt_t; typedef struct { /* 512-bit Skein hash context structure */ Skein_Ctxt_Hdr_t h; /* common header context variables */ uint64_t X[SKEIN_512_STATE_WORDS]; /* chaining variables */ /* partial block buffer (8-byte aligned) */ uint8_t b[SKEIN_512_BLOCK_BYTES]; } Skein_512_Ctxt_t; typedef struct { /* 1024-bit Skein hash context structure */ Skein_Ctxt_Hdr_t h; /* common header context variables */ uint64_t X[SKEIN1024_STATE_WORDS]; /* chaining variables */ /* partial block buffer (8-byte aligned) */ uint8_t b[SKEIN1024_BLOCK_BYTES]; } Skein1024_Ctxt_t; /* Skein APIs for (incremental) "straight hashing" */ int Skein_256_Init(Skein_256_Ctxt_t *ctx, size_t hashBitLen); int Skein_512_Init(Skein_512_Ctxt_t *ctx, size_t hashBitLen); int Skein1024_Init(Skein1024_Ctxt_t *ctx, size_t hashBitLen); int Skein_256_Update(Skein_256_Ctxt_t *ctx, const uint8_t *msg, size_t msgByteCnt); int Skein_512_Update(Skein_512_Ctxt_t *ctx, const uint8_t *msg, size_t msgByteCnt); int Skein1024_Update(Skein1024_Ctxt_t *ctx, const uint8_t *msg, size_t msgByteCnt); int Skein_256_Final(Skein_256_Ctxt_t *ctx, uint8_t *hashVal); int Skein_512_Final(Skein_512_Ctxt_t *ctx, uint8_t *hashVal); int Skein1024_Final(Skein1024_Ctxt_t *ctx, uint8_t *hashVal); /* * Skein APIs for "extended" initialization: MAC keys, tree hashing. * After an InitExt() call, just use Update/Final calls as with Init(). * * Notes: Same parameters as _Init() calls, plus treeInfo/key/keyBytes. * When keyBytes == 0 and treeInfo == SKEIN_SEQUENTIAL, * the results of InitExt() are identical to calling Init(). * The function Init() may be called once to "precompute" the IV for * a given hashBitLen value, then by saving a copy of the context * the IV computation may be avoided in later calls. * Similarly, the function InitExt() may be called once per MAC key * to precompute the MAC IV, then a copy of the context saved and * reused for each new MAC computation. */ int Skein_256_InitExt(Skein_256_Ctxt_t *ctx, size_t hashBitLen, uint64_t treeInfo, const uint8_t *key, size_t keyBytes); int Skein_512_InitExt(Skein_512_Ctxt_t *ctx, size_t hashBitLen, uint64_t treeInfo, const uint8_t *key, size_t keyBytes); int Skein1024_InitExt(Skein1024_Ctxt_t *ctx, size_t hashBitLen, uint64_t treeInfo, const uint8_t *key, size_t keyBytes); /* * Skein APIs for MAC and tree hash: * Final_Pad: pad, do final block, but no OUTPUT type * Output: do just the output stage */ int Skein_256_Final_Pad(Skein_256_Ctxt_t *ctx, uint8_t *hashVal); int Skein_512_Final_Pad(Skein_512_Ctxt_t *ctx, uint8_t *hashVal); int Skein1024_Final_Pad(Skein1024_Ctxt_t *ctx, uint8_t *hashVal); #ifndef SKEIN_TREE_HASH #define SKEIN_TREE_HASH (1) #endif #if SKEIN_TREE_HASH int Skein_256_Output(Skein_256_Ctxt_t *ctx, uint8_t *hashVal); int Skein_512_Output(Skein_512_Ctxt_t *ctx, uint8_t *hashVal); int Skein1024_Output(Skein1024_Ctxt_t *ctx, uint8_t *hashVal); #endif /* * When you initialize a Skein KCF hashing method you can pass this param * structure in cm_param to fine-tune the algorithm's defaults. */ typedef struct skein_param { size_t sp_digest_bitlen; /* length of digest in bits */ } skein_param_t; /* Module definitions */ #ifdef SKEIN_MODULE_IMPL #define CKM_SKEIN_256 "CKM_SKEIN_256" #define CKM_SKEIN_512 "CKM_SKEIN_512" #define CKM_SKEIN1024 "CKM_SKEIN1024" #define CKM_SKEIN_256_MAC "CKM_SKEIN_256_MAC" #define CKM_SKEIN_512_MAC "CKM_SKEIN_512_MAC" #define CKM_SKEIN1024_MAC "CKM_SKEIN1024_MAC" typedef enum skein_mech_type { SKEIN_256_MECH_INFO_TYPE, SKEIN_512_MECH_INFO_TYPE, SKEIN1024_MECH_INFO_TYPE, SKEIN_256_MAC_MECH_INFO_TYPE, SKEIN_512_MAC_MECH_INFO_TYPE, SKEIN1024_MAC_MECH_INFO_TYPE } skein_mech_type_t; #define VALID_SKEIN_DIGEST_MECH(__mech) \ ((int)(__mech) >= SKEIN_256_MECH_INFO_TYPE && \ (__mech) <= SKEIN1024_MECH_INFO_TYPE) #define VALID_SKEIN_MAC_MECH(__mech) \ ((int)(__mech) >= SKEIN_256_MAC_MECH_INFO_TYPE && \ (__mech) <= SKEIN1024_MAC_MECH_INFO_TYPE) #endif /* SKEIN_MODULE_IMPL */ #ifdef __cplusplus } #endif #endif /* _SYS_SKEIN_H_ */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_impl.h0000644000000000000000000000007413607166147020025 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.600429803 zfs-0.8.3/include/sys/vdev_impl.h0000644016037001603700000004615513607166147020035 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright (c) 2017, Intel Corporation. */ #ifndef _SYS_VDEV_IMPL_H #define _SYS_VDEV_IMPL_H #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * Virtual device descriptors. * * All storage pool operations go through the virtual device framework, * which provides data replication and I/O scheduling. */ /* * Forward declarations that lots of things need. */ typedef struct vdev_queue vdev_queue_t; typedef struct vdev_cache vdev_cache_t; typedef struct vdev_cache_entry vdev_cache_entry_t; struct abd; extern int zfs_vdev_queue_depth_pct; extern int zfs_vdev_def_queue_depth; extern uint32_t zfs_vdev_async_write_max_active; /* * Virtual device operations */ typedef int vdev_open_func_t(vdev_t *vd, uint64_t *size, uint64_t *max_size, uint64_t *ashift); typedef void vdev_close_func_t(vdev_t *vd); typedef uint64_t vdev_asize_func_t(vdev_t *vd, uint64_t psize); typedef void vdev_io_start_func_t(zio_t *zio); typedef void vdev_io_done_func_t(zio_t *zio); typedef void vdev_state_change_func_t(vdev_t *vd, int, int); typedef boolean_t vdev_need_resilver_func_t(vdev_t *vd, uint64_t, size_t); typedef void vdev_hold_func_t(vdev_t *vd); typedef void vdev_rele_func_t(vdev_t *vd); typedef void vdev_remap_cb_t(uint64_t inner_offset, vdev_t *vd, uint64_t offset, uint64_t size, void *arg); typedef void vdev_remap_func_t(vdev_t *vd, uint64_t offset, uint64_t size, vdev_remap_cb_t callback, void *arg); /* * Given a target vdev, translates the logical range "in" to the physical * range "res" */ typedef void vdev_xlation_func_t(vdev_t *cvd, const range_seg_t *in, range_seg_t *res); typedef const struct vdev_ops { vdev_open_func_t *vdev_op_open; vdev_close_func_t *vdev_op_close; vdev_asize_func_t *vdev_op_asize; vdev_io_start_func_t *vdev_op_io_start; vdev_io_done_func_t *vdev_op_io_done; vdev_state_change_func_t *vdev_op_state_change; vdev_need_resilver_func_t *vdev_op_need_resilver; vdev_hold_func_t *vdev_op_hold; vdev_rele_func_t *vdev_op_rele; vdev_remap_func_t *vdev_op_remap; /* * For translating ranges from non-leaf vdevs (e.g. raidz) to leaves. * Used when initializing vdevs. Isn't used by leaf ops. */ vdev_xlation_func_t *vdev_op_xlate; char vdev_op_type[16]; boolean_t vdev_op_leaf; } vdev_ops_t; /* * Virtual device properties */ struct vdev_cache_entry { struct abd *ve_abd; uint64_t ve_offset; clock_t ve_lastused; avl_node_t ve_offset_node; avl_node_t ve_lastused_node; uint32_t ve_hits; uint16_t ve_missed_update; zio_t *ve_fill_io; }; struct vdev_cache { avl_tree_t vc_offset_tree; avl_tree_t vc_lastused_tree; kmutex_t vc_lock; }; typedef struct vdev_queue_class { uint32_t vqc_active; /* * Sorted by offset or timestamp, depending on if the queue is * LBA-ordered vs FIFO. */ avl_tree_t vqc_queued_tree; } vdev_queue_class_t; struct vdev_queue { vdev_t *vq_vdev; vdev_queue_class_t vq_class[ZIO_PRIORITY_NUM_QUEUEABLE]; avl_tree_t vq_active_tree; avl_tree_t vq_read_offset_tree; avl_tree_t vq_write_offset_tree; avl_tree_t vq_trim_offset_tree; uint64_t vq_last_offset; hrtime_t vq_io_complete_ts; /* time last i/o completed */ hrtime_t vq_io_delta_ts; zio_t vq_io_search; /* used as local for stack reduction */ kmutex_t vq_lock; }; typedef enum vdev_alloc_bias { VDEV_BIAS_NONE, VDEV_BIAS_LOG, /* dedicated to ZIL data (SLOG) */ VDEV_BIAS_SPECIAL, /* dedicated to ddt, metadata, and small blks */ VDEV_BIAS_DEDUP /* dedicated to dedup metadata */ } vdev_alloc_bias_t; /* * On-disk indirect vdev state. * * An indirect vdev is described exclusively in the MOS config of a pool. * The config for an indirect vdev includes several fields, which are * accessed in memory by a vdev_indirect_config_t. */ typedef struct vdev_indirect_config { /* * Object (in MOS) which contains the indirect mapping. This object * contains an array of vdev_indirect_mapping_entry_phys_t ordered by * vimep_src. The bonus buffer for this object is a * vdev_indirect_mapping_phys_t. This object is allocated when a vdev * removal is initiated. * * Note that this object can be empty if none of the data on the vdev * has been copied yet. */ uint64_t vic_mapping_object; /* * Object (in MOS) which contains the birth times for the mapping * entries. This object contains an array of * vdev_indirect_birth_entry_phys_t sorted by vibe_offset. The bonus * buffer for this object is a vdev_indirect_birth_phys_t. This object * is allocated when a vdev removal is initiated. * * Note that this object can be empty if none of the vdev has yet been * copied. */ uint64_t vic_births_object; /* * This is the vdev ID which was removed previous to this vdev, or * UINT64_MAX if there are no previously removed vdevs. */ uint64_t vic_prev_indirect_vdev; } vdev_indirect_config_t; /* * Virtual device descriptor */ struct vdev { /* * Common to all vdev types. */ uint64_t vdev_id; /* child number in vdev parent */ uint64_t vdev_guid; /* unique ID for this vdev */ uint64_t vdev_guid_sum; /* self guid + all child guids */ uint64_t vdev_orig_guid; /* orig. guid prior to remove */ uint64_t vdev_asize; /* allocatable device capacity */ uint64_t vdev_min_asize; /* min acceptable asize */ uint64_t vdev_max_asize; /* max acceptable asize */ uint64_t vdev_ashift; /* block alignment shift */ uint64_t vdev_state; /* see VDEV_STATE_* #defines */ uint64_t vdev_prevstate; /* used when reopening a vdev */ vdev_ops_t *vdev_ops; /* vdev operations */ spa_t *vdev_spa; /* spa for this vdev */ void *vdev_tsd; /* type-specific data */ vnode_t *vdev_name_vp; /* vnode for pathname */ vnode_t *vdev_devid_vp; /* vnode for devid */ vdev_t *vdev_top; /* top-level vdev */ vdev_t *vdev_parent; /* parent vdev */ vdev_t **vdev_child; /* array of children */ uint64_t vdev_children; /* number of children */ vdev_stat_t vdev_stat; /* virtual device statistics */ vdev_stat_ex_t vdev_stat_ex; /* extended statistics */ boolean_t vdev_expanding; /* expand the vdev? */ boolean_t vdev_reopening; /* reopen in progress? */ boolean_t vdev_nonrot; /* true if solid state */ int vdev_open_error; /* error on last open */ kthread_t *vdev_open_thread; /* thread opening children */ uint64_t vdev_crtxg; /* txg when top-level was added */ /* * Top-level vdev state. */ uint64_t vdev_ms_array; /* metaslab array object */ uint64_t vdev_ms_shift; /* metaslab size shift */ uint64_t vdev_ms_count; /* number of metaslabs */ metaslab_group_t *vdev_mg; /* metaslab group */ metaslab_t **vdev_ms; /* metaslab array */ uint64_t vdev_pending_fastwrite; /* allocated fastwrites */ txg_list_t vdev_ms_list; /* per-txg dirty metaslab lists */ txg_list_t vdev_dtl_list; /* per-txg dirty DTL lists */ txg_node_t vdev_txg_node; /* per-txg dirty vdev linkage */ boolean_t vdev_remove_wanted; /* async remove wanted? */ boolean_t vdev_probe_wanted; /* async probe wanted? */ list_node_t vdev_config_dirty_node; /* config dirty list */ list_node_t vdev_state_dirty_node; /* state dirty list */ uint64_t vdev_deflate_ratio; /* deflation ratio (x512) */ uint64_t vdev_islog; /* is an intent log device */ uint64_t vdev_removing; /* device is being removed? */ boolean_t vdev_ishole; /* is a hole in the namespace */ uint64_t vdev_top_zap; vdev_alloc_bias_t vdev_alloc_bias; /* metaslab allocation bias */ /* pool checkpoint related */ space_map_t *vdev_checkpoint_sm; /* contains reserved blocks */ /* Initialize related */ boolean_t vdev_initialize_exit_wanted; vdev_initializing_state_t vdev_initialize_state; list_node_t vdev_initialize_node; kthread_t *vdev_initialize_thread; /* Protects vdev_initialize_thread and vdev_initialize_state. */ kmutex_t vdev_initialize_lock; kcondvar_t vdev_initialize_cv; uint64_t vdev_initialize_offset[TXG_SIZE]; uint64_t vdev_initialize_last_offset; range_tree_t *vdev_initialize_tree; /* valid while initializing */ uint64_t vdev_initialize_bytes_est; uint64_t vdev_initialize_bytes_done; time_t vdev_initialize_action_time; /* start and end time */ /* TRIM related */ boolean_t vdev_trim_exit_wanted; boolean_t vdev_autotrim_exit_wanted; vdev_trim_state_t vdev_trim_state; list_node_t vdev_trim_node; kmutex_t vdev_autotrim_lock; kcondvar_t vdev_autotrim_cv; kthread_t *vdev_autotrim_thread; /* Protects vdev_trim_thread and vdev_trim_state. */ kmutex_t vdev_trim_lock; kcondvar_t vdev_trim_cv; kthread_t *vdev_trim_thread; uint64_t vdev_trim_offset[TXG_SIZE]; uint64_t vdev_trim_last_offset; uint64_t vdev_trim_bytes_est; uint64_t vdev_trim_bytes_done; uint64_t vdev_trim_rate; /* requested rate (bytes/sec) */ uint64_t vdev_trim_partial; /* requested partial TRIM */ uint64_t vdev_trim_secure; /* requested secure TRIM */ time_t vdev_trim_action_time; /* start and end time */ /* for limiting outstanding I/Os (initialize and TRIM) */ kmutex_t vdev_initialize_io_lock; kcondvar_t vdev_initialize_io_cv; uint64_t vdev_initialize_inflight; kmutex_t vdev_trim_io_lock; kcondvar_t vdev_trim_io_cv; uint64_t vdev_trim_inflight[2]; /* * Values stored in the config for an indirect or removing vdev. */ vdev_indirect_config_t vdev_indirect_config; /* * The vdev_indirect_rwlock protects the vdev_indirect_mapping * pointer from changing on indirect vdevs (when it is condensed). * Note that removing (not yet indirect) vdevs have different * access patterns (the mapping is not accessed from open context, * e.g. from zio_read) and locking strategy (e.g. svr_lock). */ krwlock_t vdev_indirect_rwlock; vdev_indirect_mapping_t *vdev_indirect_mapping; vdev_indirect_births_t *vdev_indirect_births; /* * In memory data structures used to manage the obsolete sm, for * indirect or removing vdevs. * * The vdev_obsolete_segments is the in-core record of the segments * that are no longer referenced anywhere in the pool (due to * being freed or remapped and not referenced by any snapshots). * During a sync, segments are added to vdev_obsolete_segments * via vdev_indirect_mark_obsolete(); at the end of each sync * pass, this is appended to vdev_obsolete_sm via * vdev_indirect_sync_obsolete(). The vdev_obsolete_lock * protects against concurrent modifications of vdev_obsolete_segments * from multiple zio threads. */ kmutex_t vdev_obsolete_lock; range_tree_t *vdev_obsolete_segments; space_map_t *vdev_obsolete_sm; /* * Protects the vdev_scan_io_queue field itself as well as the * structure's contents (when present). */ kmutex_t vdev_scan_io_queue_lock; struct dsl_scan_io_queue *vdev_scan_io_queue; /* * Leaf vdev state. */ range_tree_t *vdev_dtl[DTL_TYPES]; /* dirty time logs */ space_map_t *vdev_dtl_sm; /* dirty time log space map */ txg_node_t vdev_dtl_node; /* per-txg dirty DTL linkage */ uint64_t vdev_dtl_object; /* DTL object */ uint64_t vdev_psize; /* physical device capacity */ uint64_t vdev_wholedisk; /* true if this is a whole disk */ uint64_t vdev_offline; /* persistent offline state */ uint64_t vdev_faulted; /* persistent faulted state */ uint64_t vdev_degraded; /* persistent degraded state */ uint64_t vdev_removed; /* persistent removed state */ uint64_t vdev_resilver_txg; /* persistent resilvering state */ uint64_t vdev_nparity; /* number of parity devices for raidz */ char *vdev_path; /* vdev path (if any) */ char *vdev_devid; /* vdev devid (if any) */ char *vdev_physpath; /* vdev device path (if any) */ char *vdev_enc_sysfs_path; /* enclosure sysfs path */ char *vdev_fru; /* physical FRU location */ uint64_t vdev_not_present; /* not present during import */ uint64_t vdev_unspare; /* unspare when resilvering done */ boolean_t vdev_nowritecache; /* true if flushwritecache failed */ boolean_t vdev_has_trim; /* TRIM is supported */ boolean_t vdev_has_securetrim; /* secure TRIM is supported */ boolean_t vdev_checkremove; /* temporary online test */ boolean_t vdev_forcefault; /* force online fault */ boolean_t vdev_splitting; /* split or repair in progress */ boolean_t vdev_delayed_close; /* delayed device close? */ boolean_t vdev_tmpoffline; /* device taken offline temporarily? */ boolean_t vdev_detached; /* device detached? */ boolean_t vdev_cant_read; /* vdev is failing all reads */ boolean_t vdev_cant_write; /* vdev is failing all writes */ boolean_t vdev_isspare; /* was a hot spare */ boolean_t vdev_isl2cache; /* was a l2cache device */ boolean_t vdev_copy_uberblocks; /* post expand copy uberblocks */ boolean_t vdev_resilver_deferred; /* resilver deferred */ vdev_queue_t vdev_queue; /* I/O deadline schedule queue */ vdev_cache_t vdev_cache; /* physical block cache */ spa_aux_vdev_t *vdev_aux; /* for l2cache and spares vdevs */ zio_t *vdev_probe_zio; /* root of current probe */ vdev_aux_t vdev_label_aux; /* on-disk aux state */ uint64_t vdev_leaf_zap; hrtime_t vdev_mmp_pending; /* 0 if write finished */ uint64_t vdev_mmp_kstat_id; /* to find kstat entry */ uint64_t vdev_expansion_time; /* vdev's last expansion time */ list_node_t vdev_leaf_node; /* leaf vdev list */ /* * For DTrace to work in userland (libzpool) context, these fields must * remain at the end of the structure. DTrace will use the kernel's * CTF definition for 'struct vdev', and since the size of a kmutex_t is * larger in userland, the offsets for the rest of the fields would be * incorrect. */ kmutex_t vdev_dtl_lock; /* vdev_dtl_{map,resilver} */ kmutex_t vdev_stat_lock; /* vdev_stat */ kmutex_t vdev_probe_lock; /* protects vdev_probe_zio */ /* * We rate limit ZIO delay and ZIO checksum events, since they * can flood ZED with tons of events when a drive is acting up. */ zfs_ratelimit_t vdev_delay_rl; zfs_ratelimit_t vdev_checksum_rl; }; #define VDEV_RAIDZ_MAXPARITY 3 #define VDEV_PAD_SIZE (8 << 10) /* 2 padding areas (vl_pad1 and vl_pad2) to skip */ #define VDEV_SKIP_SIZE VDEV_PAD_SIZE * 2 #define VDEV_PHYS_SIZE (112 << 10) #define VDEV_UBERBLOCK_RING (128 << 10) /* * MMP blocks occupy the last MMP_BLOCKS_PER_LABEL slots in the uberblock * ring when MMP is enabled. */ #define MMP_BLOCKS_PER_LABEL 1 /* The largest uberblock we support is 8k. */ #define MAX_UBERBLOCK_SHIFT (13) #define VDEV_UBERBLOCK_SHIFT(vd) \ MIN(MAX((vd)->vdev_top->vdev_ashift, UBERBLOCK_SHIFT), \ MAX_UBERBLOCK_SHIFT) #define VDEV_UBERBLOCK_COUNT(vd) \ (VDEV_UBERBLOCK_RING >> VDEV_UBERBLOCK_SHIFT(vd)) #define VDEV_UBERBLOCK_OFFSET(vd, n) \ offsetof(vdev_label_t, vl_uberblock[(n) << VDEV_UBERBLOCK_SHIFT(vd)]) #define VDEV_UBERBLOCK_SIZE(vd) (1ULL << VDEV_UBERBLOCK_SHIFT(vd)) typedef struct vdev_phys { char vp_nvlist[VDEV_PHYS_SIZE - sizeof (zio_eck_t)]; zio_eck_t vp_zbt; } vdev_phys_t; typedef struct vdev_label { char vl_pad1[VDEV_PAD_SIZE]; /* 8K */ char vl_pad2[VDEV_PAD_SIZE]; /* 8K */ vdev_phys_t vl_vdev_phys; /* 112K */ char vl_uberblock[VDEV_UBERBLOCK_RING]; /* 128K */ } vdev_label_t; /* 256K total */ /* * vdev_dirty() flags */ #define VDD_METASLAB 0x01 #define VDD_DTL 0x02 /* Offset of embedded boot loader region on each label */ #define VDEV_BOOT_OFFSET (2 * sizeof (vdev_label_t)) /* * Size of embedded boot loader region on each label. * The total size of the first two labels plus the boot area is 4MB. */ #define VDEV_BOOT_SIZE (7ULL << 19) /* 3.5M */ /* * Size of label regions at the start and end of each leaf device. */ #define VDEV_LABEL_START_SIZE (2 * sizeof (vdev_label_t) + VDEV_BOOT_SIZE) #define VDEV_LABEL_END_SIZE (2 * sizeof (vdev_label_t)) #define VDEV_LABELS 4 #define VDEV_BEST_LABEL VDEV_LABELS #define VDEV_ALLOC_LOAD 0 #define VDEV_ALLOC_ADD 1 #define VDEV_ALLOC_SPARE 2 #define VDEV_ALLOC_L2CACHE 3 #define VDEV_ALLOC_ROOTPOOL 4 #define VDEV_ALLOC_SPLIT 5 #define VDEV_ALLOC_ATTACH 6 /* * Allocate or free a vdev */ extern vdev_t *vdev_alloc_common(spa_t *spa, uint_t id, uint64_t guid, vdev_ops_t *ops); extern int vdev_alloc(spa_t *spa, vdev_t **vdp, nvlist_t *config, vdev_t *parent, uint_t id, int alloctype); extern void vdev_free(vdev_t *vd); /* * Add or remove children and parents */ extern void vdev_add_child(vdev_t *pvd, vdev_t *cvd); extern void vdev_remove_child(vdev_t *pvd, vdev_t *cvd); extern void vdev_compact_children(vdev_t *pvd); extern vdev_t *vdev_add_parent(vdev_t *cvd, vdev_ops_t *ops); extern void vdev_remove_parent(vdev_t *cvd); /* * vdev sync load and sync */ extern boolean_t vdev_log_state_valid(vdev_t *vd); extern int vdev_load(vdev_t *vd); extern int vdev_dtl_load(vdev_t *vd); extern void vdev_sync(vdev_t *vd, uint64_t txg); extern void vdev_sync_done(vdev_t *vd, uint64_t txg); extern void vdev_dirty(vdev_t *vd, int flags, void *arg, uint64_t txg); extern void vdev_dirty_leaves(vdev_t *vd, int flags, uint64_t txg); /* * Available vdev types. */ extern vdev_ops_t vdev_root_ops; extern vdev_ops_t vdev_mirror_ops; extern vdev_ops_t vdev_replacing_ops; extern vdev_ops_t vdev_raidz_ops; extern vdev_ops_t vdev_disk_ops; extern vdev_ops_t vdev_file_ops; extern vdev_ops_t vdev_missing_ops; extern vdev_ops_t vdev_hole_ops; extern vdev_ops_t vdev_spare_ops; extern vdev_ops_t vdev_indirect_ops; /* * Common size functions */ extern void vdev_default_xlate(vdev_t *vd, const range_seg_t *in, range_seg_t *out); extern uint64_t vdev_default_asize(vdev_t *vd, uint64_t psize); extern uint64_t vdev_get_min_asize(vdev_t *vd); extern void vdev_set_min_asize(vdev_t *vd); /* * Global variables */ extern int vdev_standard_sm_blksz; /* zdb uses this tunable, so it must be declared here to make lint happy. */ extern int zfs_vdev_cache_size; /* * Functions from vdev_indirect.c */ extern void vdev_indirect_sync_obsolete(vdev_t *vd, dmu_tx_t *tx); extern boolean_t vdev_indirect_should_condense(vdev_t *vd); extern void spa_condense_indirect_start_sync(vdev_t *vd, dmu_tx_t *tx); extern int vdev_obsolete_sm_object(vdev_t *vd, uint64_t *sm_obj); extern int vdev_obsolete_counts_are_precise(vdev_t *vd, boolean_t *are_precise); /* * Other miscellaneous functions */ int vdev_checkpoint_sm_object(vdev_t *vd, uint64_t *sm_obj); #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142775017724 xustar000000000000000030 mtime=1579730429.070128487 30 atime=1579730452.886893169 30 ctime=1579730469.715433494 zfs-0.8.3/include/sys/Makefile.in0000664016037001603700000013674313612142775017746 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/sys DIST_COMMON = $(am__kernel_HEADERS_DIST) $(am__libzfs_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__kernel_HEADERS_DIST = $(top_srcdir)/include/sys/abd.h \ $(top_srcdir)/include/sys/aggsum.h \ $(top_srcdir)/include/sys/arc.h \ $(top_srcdir)/include/sys/arc_impl.h \ $(top_srcdir)/include/sys/avl.h \ $(top_srcdir)/include/sys/avl_impl.h \ $(top_srcdir)/include/sys/blkptr.h \ $(top_srcdir)/include/sys/bplist.h \ $(top_srcdir)/include/sys/bpobj.h \ $(top_srcdir)/include/sys/bptree.h \ $(top_srcdir)/include/sys/bqueue.h \ $(top_srcdir)/include/sys/cityhash.h \ $(top_srcdir)/include/sys/spa_checkpoint.h \ $(top_srcdir)/include/sys/dataset_kstats.h \ $(top_srcdir)/include/sys/dbuf.h \ $(top_srcdir)/include/sys/ddt.h \ $(top_srcdir)/include/sys/dmu.h \ $(top_srcdir)/include/sys/dmu_impl.h \ $(top_srcdir)/include/sys/dmu_objset.h \ $(top_srcdir)/include/sys/dmu_recv.h \ $(top_srcdir)/include/sys/dmu_send.h \ $(top_srcdir)/include/sys/dmu_traverse.h \ $(top_srcdir)/include/sys/dmu_tx.h \ $(top_srcdir)/include/sys/dmu_zfetch.h \ $(top_srcdir)/include/sys/dnode.h \ $(top_srcdir)/include/sys/dsl_bookmark.h \ $(top_srcdir)/include/sys/dsl_dataset.h \ $(top_srcdir)/include/sys/dsl_deadlist.h \ $(top_srcdir)/include/sys/dsl_deleg.h \ $(top_srcdir)/include/sys/dsl_destroy.h \ $(top_srcdir)/include/sys/dsl_dir.h \ $(top_srcdir)/include/sys/dsl_crypt.h \ $(top_srcdir)/include/sys/dsl_pool.h \ $(top_srcdir)/include/sys/dsl_prop.h \ $(top_srcdir)/include/sys/dsl_scan.h \ $(top_srcdir)/include/sys/dsl_synctask.h \ $(top_srcdir)/include/sys/dsl_userhold.h \ $(top_srcdir)/include/sys/edonr.h \ $(top_srcdir)/include/sys/efi_partition.h \ $(top_srcdir)/include/sys/frame.h \ $(top_srcdir)/include/sys/hkdf.h \ $(top_srcdir)/include/sys/metaslab.h \ $(top_srcdir)/include/sys/metaslab_impl.h \ $(top_srcdir)/include/sys/mmp.h \ $(top_srcdir)/include/sys/mntent.h \ $(top_srcdir)/include/sys/multilist.h \ $(top_srcdir)/include/sys/note.h \ $(top_srcdir)/include/sys/nvpair.h \ $(top_srcdir)/include/sys/nvpair_impl.h \ $(top_srcdir)/include/sys/pathname.h \ $(top_srcdir)/include/sys/policy.h \ $(top_srcdir)/include/sys/range_tree.h \ $(top_srcdir)/include/sys/refcount.h \ $(top_srcdir)/include/sys/rrwlock.h \ $(top_srcdir)/include/sys/sa.h \ $(top_srcdir)/include/sys/sa_impl.h \ $(top_srcdir)/include/sys/sdt.h \ $(top_srcdir)/include/sys/sha2.h \ $(top_srcdir)/include/sys/skein.h \ $(top_srcdir)/include/sys/spa_boot.h \ $(top_srcdir)/include/sys/space_map.h \ $(top_srcdir)/include/sys/space_reftree.h \ $(top_srcdir)/include/sys/spa.h \ $(top_srcdir)/include/sys/spa_impl.h \ $(top_srcdir)/include/sys/spa_checksum.h \ $(top_srcdir)/include/sys/sysevent.h \ $(top_srcdir)/include/sys/trace.h \ $(top_srcdir)/include/sys/trace_acl.h \ $(top_srcdir)/include/sys/trace_arc.h \ $(top_srcdir)/include/sys/trace_common.h \ $(top_srcdir)/include/sys/trace_dbgmsg.h \ $(top_srcdir)/include/sys/trace_dbuf.h \ $(top_srcdir)/include/sys/trace_dmu.h \ $(top_srcdir)/include/sys/trace_dnode.h \ $(top_srcdir)/include/sys/trace_multilist.h \ $(top_srcdir)/include/sys/trace_txg.h \ $(top_srcdir)/include/sys/trace_vdev.h \ $(top_srcdir)/include/sys/trace_zil.h \ $(top_srcdir)/include/sys/trace_zio.h \ $(top_srcdir)/include/sys/trace_zrlock.h \ $(top_srcdir)/include/sys/txg.h \ $(top_srcdir)/include/sys/txg_impl.h \ $(top_srcdir)/include/sys/u8_textprep_data.h \ $(top_srcdir)/include/sys/u8_textprep.h \ $(top_srcdir)/include/sys/uberblock.h \ $(top_srcdir)/include/sys/uberblock_impl.h \ $(top_srcdir)/include/sys/uio_impl.h \ $(top_srcdir)/include/sys/unique.h \ $(top_srcdir)/include/sys/uuid.h \ $(top_srcdir)/include/sys/vdev_disk.h \ $(top_srcdir)/include/sys/vdev_file.h \ $(top_srcdir)/include/sys/vdev.h \ $(top_srcdir)/include/sys/vdev_impl.h \ $(top_srcdir)/include/sys/vdev_indirect_births.h \ $(top_srcdir)/include/sys/vdev_indirect_mapping.h \ $(top_srcdir)/include/sys/vdev_initialize.h \ $(top_srcdir)/include/sys/vdev_raidz.h \ $(top_srcdir)/include/sys/vdev_raidz_impl.h \ $(top_srcdir)/include/sys/vdev_removal.h \ $(top_srcdir)/include/sys/vdev_trim.h \ $(top_srcdir)/include/sys/xvattr.h \ $(top_srcdir)/include/sys/zap.h \ $(top_srcdir)/include/sys/zap_impl.h \ $(top_srcdir)/include/sys/zap_leaf.h \ $(top_srcdir)/include/sys/zcp.h \ $(top_srcdir)/include/sys/zcp_global.h \ $(top_srcdir)/include/sys/zcp_iter.h \ $(top_srcdir)/include/sys/zcp_prop.h \ $(top_srcdir)/include/sys/zfeature.h \ $(top_srcdir)/include/sys/zfs_acl.h \ $(top_srcdir)/include/sys/zfs_context.h \ $(top_srcdir)/include/sys/zfs_ctldir.h \ $(top_srcdir)/include/sys/zfs_debug.h \ $(top_srcdir)/include/sys/zfs_delay.h \ $(top_srcdir)/include/sys/zfs_dir.h \ $(top_srcdir)/include/sys/zfs_fuid.h \ $(top_srcdir)/include/sys/zfs_project.h \ $(top_srcdir)/include/sys/zfs_ratelimit.h \ $(top_srcdir)/include/sys/zfs_rlock.h \ $(top_srcdir)/include/sys/zfs_sa.h \ $(top_srcdir)/include/sys/zfs_stat.h \ $(top_srcdir)/include/sys/zfs_sysfs.h \ $(top_srcdir)/include/sys/zfs_vfsops.h \ $(top_srcdir)/include/sys/zfs_vnops.h \ $(top_srcdir)/include/sys/zfs_znode.h \ $(top_srcdir)/include/sys/zil.h \ $(top_srcdir)/include/sys/zil_impl.h \ $(top_srcdir)/include/sys/zio_checksum.h \ $(top_srcdir)/include/sys/zio_compress.h \ $(top_srcdir)/include/sys/zio_crypt.h \ $(top_srcdir)/include/sys/zio.h \ $(top_srcdir)/include/sys/zio_impl.h \ $(top_srcdir)/include/sys/zio_priority.h \ $(top_srcdir)/include/sys/zrlock.h \ $(top_srcdir)/include/sys/zthr.h \ $(top_srcdir)/include/sys/zfs_ioctl.h \ $(top_srcdir)/include/sys/zfs_onexit.h \ ${top_srcdir}/include/sys/zpl.h \ $(top_srcdir)/include/sys/zvol.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" am__libzfs_HEADERS_DIST = $(top_srcdir)/include/sys/abd.h \ $(top_srcdir)/include/sys/aggsum.h \ $(top_srcdir)/include/sys/arc.h \ $(top_srcdir)/include/sys/arc_impl.h \ $(top_srcdir)/include/sys/avl.h \ $(top_srcdir)/include/sys/avl_impl.h \ $(top_srcdir)/include/sys/blkptr.h \ $(top_srcdir)/include/sys/bplist.h \ $(top_srcdir)/include/sys/bpobj.h \ $(top_srcdir)/include/sys/bptree.h \ $(top_srcdir)/include/sys/bqueue.h \ $(top_srcdir)/include/sys/cityhash.h \ $(top_srcdir)/include/sys/spa_checkpoint.h \ $(top_srcdir)/include/sys/dataset_kstats.h \ $(top_srcdir)/include/sys/dbuf.h \ $(top_srcdir)/include/sys/ddt.h \ $(top_srcdir)/include/sys/dmu.h \ $(top_srcdir)/include/sys/dmu_impl.h \ $(top_srcdir)/include/sys/dmu_objset.h \ $(top_srcdir)/include/sys/dmu_recv.h \ $(top_srcdir)/include/sys/dmu_send.h \ $(top_srcdir)/include/sys/dmu_traverse.h \ $(top_srcdir)/include/sys/dmu_tx.h \ $(top_srcdir)/include/sys/dmu_zfetch.h \ $(top_srcdir)/include/sys/dnode.h \ $(top_srcdir)/include/sys/dsl_bookmark.h \ $(top_srcdir)/include/sys/dsl_dataset.h \ $(top_srcdir)/include/sys/dsl_deadlist.h \ $(top_srcdir)/include/sys/dsl_deleg.h \ $(top_srcdir)/include/sys/dsl_destroy.h \ $(top_srcdir)/include/sys/dsl_dir.h \ $(top_srcdir)/include/sys/dsl_crypt.h \ $(top_srcdir)/include/sys/dsl_pool.h \ $(top_srcdir)/include/sys/dsl_prop.h \ $(top_srcdir)/include/sys/dsl_scan.h \ $(top_srcdir)/include/sys/dsl_synctask.h \ $(top_srcdir)/include/sys/dsl_userhold.h \ $(top_srcdir)/include/sys/edonr.h \ $(top_srcdir)/include/sys/efi_partition.h \ $(top_srcdir)/include/sys/frame.h \ $(top_srcdir)/include/sys/hkdf.h \ $(top_srcdir)/include/sys/metaslab.h \ $(top_srcdir)/include/sys/metaslab_impl.h \ $(top_srcdir)/include/sys/mmp.h \ $(top_srcdir)/include/sys/mntent.h \ $(top_srcdir)/include/sys/multilist.h \ $(top_srcdir)/include/sys/note.h \ $(top_srcdir)/include/sys/nvpair.h \ $(top_srcdir)/include/sys/nvpair_impl.h \ $(top_srcdir)/include/sys/pathname.h \ $(top_srcdir)/include/sys/policy.h \ $(top_srcdir)/include/sys/range_tree.h \ $(top_srcdir)/include/sys/refcount.h \ $(top_srcdir)/include/sys/rrwlock.h \ $(top_srcdir)/include/sys/sa.h \ $(top_srcdir)/include/sys/sa_impl.h \ $(top_srcdir)/include/sys/sdt.h \ $(top_srcdir)/include/sys/sha2.h \ $(top_srcdir)/include/sys/skein.h \ $(top_srcdir)/include/sys/spa_boot.h \ $(top_srcdir)/include/sys/space_map.h \ $(top_srcdir)/include/sys/space_reftree.h \ $(top_srcdir)/include/sys/spa.h \ $(top_srcdir)/include/sys/spa_impl.h \ $(top_srcdir)/include/sys/spa_checksum.h \ $(top_srcdir)/include/sys/sysevent.h \ $(top_srcdir)/include/sys/trace.h \ $(top_srcdir)/include/sys/trace_acl.h \ $(top_srcdir)/include/sys/trace_arc.h \ $(top_srcdir)/include/sys/trace_common.h \ $(top_srcdir)/include/sys/trace_dbgmsg.h \ $(top_srcdir)/include/sys/trace_dbuf.h \ $(top_srcdir)/include/sys/trace_dmu.h \ $(top_srcdir)/include/sys/trace_dnode.h \ $(top_srcdir)/include/sys/trace_multilist.h \ $(top_srcdir)/include/sys/trace_txg.h \ $(top_srcdir)/include/sys/trace_vdev.h \ $(top_srcdir)/include/sys/trace_zil.h \ $(top_srcdir)/include/sys/trace_zio.h \ $(top_srcdir)/include/sys/trace_zrlock.h \ $(top_srcdir)/include/sys/txg.h \ $(top_srcdir)/include/sys/txg_impl.h \ $(top_srcdir)/include/sys/u8_textprep_data.h \ $(top_srcdir)/include/sys/u8_textprep.h \ $(top_srcdir)/include/sys/uberblock.h \ $(top_srcdir)/include/sys/uberblock_impl.h \ $(top_srcdir)/include/sys/uio_impl.h \ $(top_srcdir)/include/sys/unique.h \ $(top_srcdir)/include/sys/uuid.h \ $(top_srcdir)/include/sys/vdev_disk.h \ $(top_srcdir)/include/sys/vdev_file.h \ $(top_srcdir)/include/sys/vdev.h \ $(top_srcdir)/include/sys/vdev_impl.h \ $(top_srcdir)/include/sys/vdev_indirect_births.h \ $(top_srcdir)/include/sys/vdev_indirect_mapping.h \ $(top_srcdir)/include/sys/vdev_initialize.h \ $(top_srcdir)/include/sys/vdev_raidz.h \ $(top_srcdir)/include/sys/vdev_raidz_impl.h \ $(top_srcdir)/include/sys/vdev_removal.h \ $(top_srcdir)/include/sys/vdev_trim.h \ $(top_srcdir)/include/sys/xvattr.h \ $(top_srcdir)/include/sys/zap.h \ $(top_srcdir)/include/sys/zap_impl.h \ $(top_srcdir)/include/sys/zap_leaf.h \ $(top_srcdir)/include/sys/zcp.h \ $(top_srcdir)/include/sys/zcp_global.h \ $(top_srcdir)/include/sys/zcp_iter.h \ $(top_srcdir)/include/sys/zcp_prop.h \ $(top_srcdir)/include/sys/zfeature.h \ $(top_srcdir)/include/sys/zfs_acl.h \ $(top_srcdir)/include/sys/zfs_context.h \ $(top_srcdir)/include/sys/zfs_ctldir.h \ $(top_srcdir)/include/sys/zfs_debug.h \ $(top_srcdir)/include/sys/zfs_delay.h \ $(top_srcdir)/include/sys/zfs_dir.h \ $(top_srcdir)/include/sys/zfs_fuid.h \ $(top_srcdir)/include/sys/zfs_project.h \ $(top_srcdir)/include/sys/zfs_ratelimit.h \ $(top_srcdir)/include/sys/zfs_rlock.h \ $(top_srcdir)/include/sys/zfs_sa.h \ $(top_srcdir)/include/sys/zfs_stat.h \ $(top_srcdir)/include/sys/zfs_sysfs.h \ $(top_srcdir)/include/sys/zfs_vfsops.h \ $(top_srcdir)/include/sys/zfs_vnops.h \ $(top_srcdir)/include/sys/zfs_znode.h \ $(top_srcdir)/include/sys/zil.h \ $(top_srcdir)/include/sys/zil_impl.h \ $(top_srcdir)/include/sys/zio_checksum.h \ $(top_srcdir)/include/sys/zio_compress.h \ $(top_srcdir)/include/sys/zio_crypt.h \ $(top_srcdir)/include/sys/zio.h \ $(top_srcdir)/include/sys/zio_impl.h \ $(top_srcdir)/include/sys/zio_priority.h \ $(top_srcdir)/include/sys/zrlock.h \ $(top_srcdir)/include/sys/zthr.h HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = fm fs crypto lua sysevent COMMON_H = \ $(top_srcdir)/include/sys/abd.h \ $(top_srcdir)/include/sys/aggsum.h \ $(top_srcdir)/include/sys/arc.h \ $(top_srcdir)/include/sys/arc_impl.h \ $(top_srcdir)/include/sys/avl.h \ $(top_srcdir)/include/sys/avl_impl.h \ $(top_srcdir)/include/sys/blkptr.h \ $(top_srcdir)/include/sys/bplist.h \ $(top_srcdir)/include/sys/bpobj.h \ $(top_srcdir)/include/sys/bptree.h \ $(top_srcdir)/include/sys/bqueue.h \ $(top_srcdir)/include/sys/cityhash.h \ $(top_srcdir)/include/sys/spa_checkpoint.h \ $(top_srcdir)/include/sys/dataset_kstats.h \ $(top_srcdir)/include/sys/dbuf.h \ $(top_srcdir)/include/sys/ddt.h \ $(top_srcdir)/include/sys/dmu.h \ $(top_srcdir)/include/sys/dmu_impl.h \ $(top_srcdir)/include/sys/dmu_objset.h \ $(top_srcdir)/include/sys/dmu_recv.h \ $(top_srcdir)/include/sys/dmu_send.h \ $(top_srcdir)/include/sys/dmu_traverse.h \ $(top_srcdir)/include/sys/dmu_tx.h \ $(top_srcdir)/include/sys/dmu_zfetch.h \ $(top_srcdir)/include/sys/dnode.h \ $(top_srcdir)/include/sys/dsl_bookmark.h \ $(top_srcdir)/include/sys/dsl_dataset.h \ $(top_srcdir)/include/sys/dsl_deadlist.h \ $(top_srcdir)/include/sys/dsl_deleg.h \ $(top_srcdir)/include/sys/dsl_destroy.h \ $(top_srcdir)/include/sys/dsl_dir.h \ $(top_srcdir)/include/sys/dsl_crypt.h \ $(top_srcdir)/include/sys/dsl_pool.h \ $(top_srcdir)/include/sys/dsl_prop.h \ $(top_srcdir)/include/sys/dsl_scan.h \ $(top_srcdir)/include/sys/dsl_synctask.h \ $(top_srcdir)/include/sys/dsl_userhold.h \ $(top_srcdir)/include/sys/edonr.h \ $(top_srcdir)/include/sys/efi_partition.h \ $(top_srcdir)/include/sys/frame.h \ $(top_srcdir)/include/sys/hkdf.h \ $(top_srcdir)/include/sys/metaslab.h \ $(top_srcdir)/include/sys/metaslab_impl.h \ $(top_srcdir)/include/sys/mmp.h \ $(top_srcdir)/include/sys/mntent.h \ $(top_srcdir)/include/sys/multilist.h \ $(top_srcdir)/include/sys/note.h \ $(top_srcdir)/include/sys/nvpair.h \ $(top_srcdir)/include/sys/nvpair_impl.h \ $(top_srcdir)/include/sys/pathname.h \ $(top_srcdir)/include/sys/policy.h \ $(top_srcdir)/include/sys/range_tree.h \ $(top_srcdir)/include/sys/refcount.h \ $(top_srcdir)/include/sys/rrwlock.h \ $(top_srcdir)/include/sys/sa.h \ $(top_srcdir)/include/sys/sa_impl.h \ $(top_srcdir)/include/sys/sdt.h \ $(top_srcdir)/include/sys/sha2.h \ $(top_srcdir)/include/sys/skein.h \ $(top_srcdir)/include/sys/spa_boot.h \ $(top_srcdir)/include/sys/space_map.h \ $(top_srcdir)/include/sys/space_reftree.h \ $(top_srcdir)/include/sys/spa.h \ $(top_srcdir)/include/sys/spa_impl.h \ $(top_srcdir)/include/sys/spa_checksum.h \ $(top_srcdir)/include/sys/sysevent.h \ $(top_srcdir)/include/sys/trace.h \ $(top_srcdir)/include/sys/trace_acl.h \ $(top_srcdir)/include/sys/trace_arc.h \ $(top_srcdir)/include/sys/trace_common.h \ $(top_srcdir)/include/sys/trace_dbgmsg.h \ $(top_srcdir)/include/sys/trace_dbuf.h \ $(top_srcdir)/include/sys/trace_dmu.h \ $(top_srcdir)/include/sys/trace_dnode.h \ $(top_srcdir)/include/sys/trace_multilist.h \ $(top_srcdir)/include/sys/trace_txg.h \ $(top_srcdir)/include/sys/trace_vdev.h \ $(top_srcdir)/include/sys/trace_zil.h \ $(top_srcdir)/include/sys/trace_zio.h \ $(top_srcdir)/include/sys/trace_zrlock.h \ $(top_srcdir)/include/sys/txg.h \ $(top_srcdir)/include/sys/txg_impl.h \ $(top_srcdir)/include/sys/u8_textprep_data.h \ $(top_srcdir)/include/sys/u8_textprep.h \ $(top_srcdir)/include/sys/uberblock.h \ $(top_srcdir)/include/sys/uberblock_impl.h \ $(top_srcdir)/include/sys/uio_impl.h \ $(top_srcdir)/include/sys/unique.h \ $(top_srcdir)/include/sys/uuid.h \ $(top_srcdir)/include/sys/vdev_disk.h \ $(top_srcdir)/include/sys/vdev_file.h \ $(top_srcdir)/include/sys/vdev.h \ $(top_srcdir)/include/sys/vdev_impl.h \ $(top_srcdir)/include/sys/vdev_indirect_births.h \ $(top_srcdir)/include/sys/vdev_indirect_mapping.h \ $(top_srcdir)/include/sys/vdev_initialize.h \ $(top_srcdir)/include/sys/vdev_raidz.h \ $(top_srcdir)/include/sys/vdev_raidz_impl.h \ $(top_srcdir)/include/sys/vdev_removal.h \ $(top_srcdir)/include/sys/vdev_trim.h \ $(top_srcdir)/include/sys/xvattr.h \ $(top_srcdir)/include/sys/zap.h \ $(top_srcdir)/include/sys/zap_impl.h \ $(top_srcdir)/include/sys/zap_leaf.h \ $(top_srcdir)/include/sys/zcp.h \ $(top_srcdir)/include/sys/zcp_global.h \ $(top_srcdir)/include/sys/zcp_iter.h \ $(top_srcdir)/include/sys/zcp_prop.h \ $(top_srcdir)/include/sys/zfeature.h \ $(top_srcdir)/include/sys/zfs_acl.h \ $(top_srcdir)/include/sys/zfs_context.h \ $(top_srcdir)/include/sys/zfs_ctldir.h \ $(top_srcdir)/include/sys/zfs_debug.h \ $(top_srcdir)/include/sys/zfs_delay.h \ $(top_srcdir)/include/sys/zfs_dir.h \ $(top_srcdir)/include/sys/zfs_fuid.h \ $(top_srcdir)/include/sys/zfs_project.h \ $(top_srcdir)/include/sys/zfs_ratelimit.h \ $(top_srcdir)/include/sys/zfs_rlock.h \ $(top_srcdir)/include/sys/zfs_sa.h \ $(top_srcdir)/include/sys/zfs_stat.h \ $(top_srcdir)/include/sys/zfs_sysfs.h \ $(top_srcdir)/include/sys/zfs_vfsops.h \ $(top_srcdir)/include/sys/zfs_vnops.h \ $(top_srcdir)/include/sys/zfs_znode.h \ $(top_srcdir)/include/sys/zil.h \ $(top_srcdir)/include/sys/zil_impl.h \ $(top_srcdir)/include/sys/zio_checksum.h \ $(top_srcdir)/include/sys/zio_compress.h \ $(top_srcdir)/include/sys/zio_crypt.h \ $(top_srcdir)/include/sys/zio.h \ $(top_srcdir)/include/sys/zio_impl.h \ $(top_srcdir)/include/sys/zio_priority.h \ $(top_srcdir)/include/sys/zrlock.h \ $(top_srcdir)/include/sys/zthr.h KERNEL_H = \ $(top_srcdir)/include/sys/zfs_ioctl.h \ $(top_srcdir)/include/sys/zfs_onexit.h \ ${top_srcdir}/include/sys/zpl.h \ $(top_srcdir)/include/sys/zvol.h USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/sys @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/sys @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/sys/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/sys/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/sys/PaxHeaders.151519/hkdf.h0000644000000000000000000000007413607166132016746 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.480425948 zfs-0.8.3/include/sys/hkdf.h0000644016037001603700000000141613607166132016745 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2017, Datto, Inc. All rights reserved. */ #ifndef _SYS_HKDF_H_ #define _SYS_HKDF_H_ #include int hkdf_sha512(uint8_t *key_material, uint_t km_len, uint8_t *salt, uint_t salt_len, uint8_t *info, uint_t info_len, uint8_t *output_key, uint_t out_len); #endif /* _SYS_HKDF_H_ */ zfs-0.8.3/include/sys/PaxHeaders.151519/uuid.h0000644000000000000000000000007413607166132017000 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.591429512 zfs-0.8.3/include/sys/uuid.h0000644016037001603700000000554413607166132017005 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_UUID_H #define _SYS_UUID_H #ifdef __cplusplus extern "C" { #endif /* * The copyright in this file is taken from the original Leach * & Salz UUID specification, from which this implementation * is derived. */ /* * Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. * Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & * Digital Equipment Corporation, Maynard, Mass. Copyright (c) 1998 * Microsoft. To anyone who acknowledges that this file is provided * "AS IS" without any express or implied warranty: permission to use, * copy, modify, and distribute this file for any purpose is hereby * granted without fee, provided that the above copyright notices and * this notice appears in all source code copies, and that none of the * names of Open Software Foundation, Inc., Hewlett-Packard Company, * or Digital Equipment Corporation be used in advertising or * publicity pertaining to distribution of the software without * specific, written prior permission. Neither Open Software * Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital * Equipment Corporation makes any representations about the * suitability of this software for any purpose. */ #include #include typedef struct { uint8_t nodeID[6]; } uuid_node_t; /* * The uuid type used throughout when referencing uuids themselves */ struct uuid { uint32_t time_low; uint16_t time_mid; uint16_t time_hi_and_version; uint8_t clock_seq_hi_and_reserved; uint8_t clock_seq_low; uint8_t node_addr[6]; }; #define UUID_PRINTABLE_STRING_LENGTH 37 /* * Convert a uuid to/from little-endian format */ #define UUID_LE_CONVERT(dest, src) \ { \ (dest) = (src); \ (dest).time_low = LE_32((dest).time_low); \ (dest).time_mid = LE_16((dest).time_mid); \ (dest).time_hi_and_version = LE_16((dest).time_hi_and_version); \ } #ifdef __cplusplus } #endif #endif /* _SYS_UUID_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_ctldir.h0000644000000000000000000000007413607166147020203 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.643431182 zfs-0.8.3/include/sys/zfs_ctldir.h0000644016037001603700000000745213607166147020210 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (C) 2011 Lawrence Livermore National Security, LLC. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * LLNL-CODE-403049. * Rewritten for Linux by: * Rohan Puri * Brian Behlendorf */ #ifndef _ZFS_CTLDIR_H #define _ZFS_CTLDIR_H #include #include #include #include #define ZFS_CTLDIR_NAME ".zfs" #define ZFS_SNAPDIR_NAME "snapshot" #define ZFS_SHAREDIR_NAME "shares" #define zfs_has_ctldir(zdp) \ ((zdp)->z_id == ZTOZSB(zdp)->z_root && \ (ZTOZSB(zdp)->z_ctldir != NULL)) #define zfs_show_ctldir(zdp) \ (zfs_has_ctldir(zdp) && \ (ZTOZSB(zdp)->z_show_ctldir)) extern int zfs_expire_snapshot; /* zfsctl generic functions */ extern int zfsctl_create(zfsvfs_t *); extern void zfsctl_destroy(zfsvfs_t *); extern struct inode *zfsctl_root(znode_t *); extern void zfsctl_init(void); extern void zfsctl_fini(void); extern boolean_t zfsctl_is_node(struct inode *ip); extern boolean_t zfsctl_is_snapdir(struct inode *ip); extern int zfsctl_fid(struct inode *ip, fid_t *fidp); /* zfsctl '.zfs' functions */ extern int zfsctl_root_lookup(struct inode *dip, char *name, struct inode **ipp, int flags, cred_t *cr, int *direntflags, pathname_t *realpnp); /* zfsctl '.zfs/snapshot' functions */ extern int zfsctl_snapdir_lookup(struct inode *dip, char *name, struct inode **ipp, int flags, cred_t *cr, int *direntflags, pathname_t *realpnp); extern int zfsctl_snapdir_rename(struct inode *sdip, char *sname, struct inode *tdip, char *tname, cred_t *cr, int flags); extern int zfsctl_snapdir_remove(struct inode *dip, char *name, cred_t *cr, int flags); extern int zfsctl_snapdir_mkdir(struct inode *dip, char *dirname, vattr_t *vap, struct inode **ipp, cred_t *cr, int flags); extern int zfsctl_snapshot_mount(struct path *path, int flags); extern int zfsctl_snapshot_unmount(char *snapname, int flags); extern int zfsctl_snapshot_unmount_delay(spa_t *spa, uint64_t objsetid, int delay); extern int zfsctl_snapdir_vget(struct super_block *sb, uint64_t objsetid, int gen, struct inode **ipp); /* zfsctl '.zfs/shares' functions */ extern int zfsctl_shares_lookup(struct inode *dip, char *name, struct inode **ipp, int flags, cred_t *cr, int *direntflags, pathname_t *realpnp); /* * These inodes numbers are reserved for the .zfs control directory. * It is important that they be no larger that 48-bits because only * 6 bytes are reserved in the NFS file handle for the object number. * However, they should be as large as possible to avoid conflicts * with the objects which are assigned monotonically by the dmu. */ #define ZFSCTL_INO_ROOT 0x0000FFFFFFFFFFFFULL #define ZFSCTL_INO_SHARES 0x0000FFFFFFFFFFFEULL #define ZFSCTL_INO_SNAPDIR 0x0000FFFFFFFFFFFDULL #define ZFSCTL_INO_SNAPDIRS 0x0000FFFFFFFFFFFCULL #define ZFSCTL_EXPIRE_SNAPSHOT 300 #endif /* _ZFS_CTLDIR_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_raidz_impl.h0000644000000000000000000000007413612141515021202 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.612430187 zfs-0.8.3/include/sys/vdev_raidz_impl.h0000644016037001603700000002337213612141515021206 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2016 Gvozden Nešković. All rights reserved. */ #ifndef _VDEV_RAIDZ_H #define _VDEV_RAIDZ_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define CODE_P (0U) #define CODE_Q (1U) #define CODE_R (2U) #define PARITY_P (1U) #define PARITY_PQ (2U) #define PARITY_PQR (3U) #define TARGET_X (0U) #define TARGET_Y (1U) #define TARGET_Z (2U) /* * Parity generation methods indexes */ enum raidz_math_gen_op { RAIDZ_GEN_P = 0, RAIDZ_GEN_PQ, RAIDZ_GEN_PQR, RAIDZ_GEN_NUM = 3 }; /* * Data reconstruction methods indexes */ enum raidz_rec_op { RAIDZ_REC_P = 0, RAIDZ_REC_Q, RAIDZ_REC_R, RAIDZ_REC_PQ, RAIDZ_REC_PR, RAIDZ_REC_QR, RAIDZ_REC_PQR, RAIDZ_REC_NUM = 7 }; extern const char *raidz_gen_name[RAIDZ_GEN_NUM]; extern const char *raidz_rec_name[RAIDZ_REC_NUM]; /* * Methods used to define raidz implementation * * @raidz_gen_f Parity generation function * @par1 pointer to raidz_map * @raidz_rec_f Data reconstruction function * @par1 pointer to raidz_map * @par2 array of reconstruction targets * @will_work_f Function returns TRUE if impl. is supported on the system * @init_impl_f Function is called once on init * @fini_impl_f Function is called once on fini */ typedef void (*raidz_gen_f)(void *); typedef int (*raidz_rec_f)(void *, const int *); typedef boolean_t (*will_work_f)(void); typedef void (*init_impl_f)(void); typedef void (*fini_impl_f)(void); #define RAIDZ_IMPL_NAME_MAX (16) typedef struct raidz_impl_ops { init_impl_f init; fini_impl_f fini; raidz_gen_f gen[RAIDZ_GEN_NUM]; /* Parity generate functions */ raidz_rec_f rec[RAIDZ_REC_NUM]; /* Data reconstruction functions */ will_work_f is_supported; /* Support check function */ char name[RAIDZ_IMPL_NAME_MAX]; /* Name of the implementation */ } raidz_impl_ops_t; typedef struct raidz_col { uint64_t rc_devidx; /* child device index for I/O */ uint64_t rc_offset; /* device offset */ uint64_t rc_size; /* I/O size */ abd_t *rc_abd; /* I/O data */ void *rc_gdata; /* used to store the "good" version */ int rc_error; /* I/O error for this device */ uint8_t rc_tried; /* Did we attempt this I/O column? */ uint8_t rc_skipped; /* Did we skip this I/O column? */ } raidz_col_t; typedef struct raidz_map { uint64_t rm_cols; /* Regular column count */ uint64_t rm_scols; /* Count including skipped columns */ uint64_t rm_bigcols; /* Number of oversized columns */ uint64_t rm_asize; /* Actual total I/O size */ uint64_t rm_missingdata; /* Count of missing data devices */ uint64_t rm_missingparity; /* Count of missing parity devices */ uint64_t rm_firstdatacol; /* First data column/parity count */ uint64_t rm_nskip; /* Skipped sectors for padding */ uint64_t rm_skipstart; /* Column index of padding start */ abd_t *rm_abd_copy; /* rm_asize-buffer of copied data */ uintptr_t rm_reports; /* # of referencing checksum reports */ uint8_t rm_freed; /* map no longer has referencing ZIO */ uint8_t rm_ecksuminjected; /* checksum error was injected */ const raidz_impl_ops_t *rm_ops; /* RAIDZ math operations */ raidz_col_t rm_col[1]; /* Flexible array of I/O columns */ } raidz_map_t; #define RAIDZ_ORIGINAL_IMPL (INT_MAX) extern const raidz_impl_ops_t vdev_raidz_scalar_impl; #if defined(__x86_64) && defined(HAVE_SSE2) /* only x86_64 for now */ extern const raidz_impl_ops_t vdev_raidz_sse2_impl; #endif #if defined(__x86_64) && defined(HAVE_SSSE3) /* only x86_64 for now */ extern const raidz_impl_ops_t vdev_raidz_ssse3_impl; #endif #if defined(__x86_64) && defined(HAVE_AVX2) /* only x86_64 for now */ extern const raidz_impl_ops_t vdev_raidz_avx2_impl; #endif #if defined(__x86_64) && defined(HAVE_AVX512F) /* only x86_64 for now */ extern const raidz_impl_ops_t vdev_raidz_avx512f_impl; #endif #if defined(__x86_64) && defined(HAVE_AVX512BW) /* only x86_64 for now */ extern const raidz_impl_ops_t vdev_raidz_avx512bw_impl; #endif #if defined(__aarch64__) extern const raidz_impl_ops_t vdev_raidz_aarch64_neon_impl; extern const raidz_impl_ops_t vdev_raidz_aarch64_neonx2_impl; #endif /* * Commonly used raidz_map helpers * * raidz_parity Returns parity of the RAIDZ block * raidz_ncols Returns number of columns the block spans * raidz_nbigcols Returns number of big columns * raidz_col_p Returns pointer to a column * raidz_col_size Returns size of a column * raidz_big_size Returns size of big columns * raidz_short_size Returns size of short columns */ #define raidz_parity(rm) ((rm)->rm_firstdatacol) #define raidz_ncols(rm) ((rm)->rm_cols) #define raidz_nbigcols(rm) ((rm)->rm_bigcols) #define raidz_col_p(rm, c) ((rm)->rm_col + (c)) #define raidz_col_size(rm, c) ((rm)->rm_col[c].rc_size) #define raidz_big_size(rm) (raidz_col_size(rm, CODE_P)) #define raidz_short_size(rm) (raidz_col_size(rm, raidz_ncols(rm)-1)) /* * Macro defines an RAIDZ parity generation method * * @code parity the function produce * @impl name of the implementation */ #define _RAIDZ_GEN_WRAP(code, impl) \ static void \ impl ## _gen_ ## code(void *rmp) \ { \ raidz_map_t *rm = (raidz_map_t *)rmp; \ raidz_generate_## code ## _impl(rm); \ } /* * Macro defines an RAIDZ data reconstruction method * * @code parity the function produce * @impl name of the implementation */ #define _RAIDZ_REC_WRAP(code, impl) \ static int \ impl ## _rec_ ## code(void *rmp, const int *tgtidx) \ { \ raidz_map_t *rm = (raidz_map_t *)rmp; \ return (raidz_reconstruct_## code ## _impl(rm, tgtidx)); \ } /* * Define all gen methods for an implementation * * @impl name of the implementation */ #define DEFINE_GEN_METHODS(impl) \ _RAIDZ_GEN_WRAP(p, impl); \ _RAIDZ_GEN_WRAP(pq, impl); \ _RAIDZ_GEN_WRAP(pqr, impl) /* * Define all rec functions for an implementation * * @impl name of the implementation */ #define DEFINE_REC_METHODS(impl) \ _RAIDZ_REC_WRAP(p, impl); \ _RAIDZ_REC_WRAP(q, impl); \ _RAIDZ_REC_WRAP(r, impl); \ _RAIDZ_REC_WRAP(pq, impl); \ _RAIDZ_REC_WRAP(pr, impl); \ _RAIDZ_REC_WRAP(qr, impl); \ _RAIDZ_REC_WRAP(pqr, impl) #define RAIDZ_GEN_METHODS(impl) \ { \ [RAIDZ_GEN_P] = & impl ## _gen_p, \ [RAIDZ_GEN_PQ] = & impl ## _gen_pq, \ [RAIDZ_GEN_PQR] = & impl ## _gen_pqr \ } #define RAIDZ_REC_METHODS(impl) \ { \ [RAIDZ_REC_P] = & impl ## _rec_p, \ [RAIDZ_REC_Q] = & impl ## _rec_q, \ [RAIDZ_REC_R] = & impl ## _rec_r, \ [RAIDZ_REC_PQ] = & impl ## _rec_pq, \ [RAIDZ_REC_PR] = & impl ## _rec_pr, \ [RAIDZ_REC_QR] = & impl ## _rec_qr, \ [RAIDZ_REC_PQR] = & impl ## _rec_pqr \ } typedef struct raidz_impl_kstat { uint64_t gen[RAIDZ_GEN_NUM]; /* gen method speed B/s */ uint64_t rec[RAIDZ_REC_NUM]; /* rec method speed B/s */ } raidz_impl_kstat_t; /* * Enumerate various multiplication constants * used in reconstruction methods */ typedef enum raidz_mul_info { /* Reconstruct Q */ MUL_Q_X = 0, /* Reconstruct R */ MUL_R_X = 0, /* Reconstruct PQ */ MUL_PQ_X = 0, MUL_PQ_Y = 1, /* Reconstruct PR */ MUL_PR_X = 0, MUL_PR_Y = 1, /* Reconstruct QR */ MUL_QR_XQ = 0, MUL_QR_X = 1, MUL_QR_YQ = 2, MUL_QR_Y = 3, /* Reconstruct PQR */ MUL_PQR_XP = 0, MUL_PQR_XQ = 1, MUL_PQR_XR = 2, MUL_PQR_YU = 3, MUL_PQR_YP = 4, MUL_PQR_YQ = 5, MUL_CNT = 6 } raidz_mul_info_t; /* * Powers of 2 in the Galois field. */ extern const uint8_t vdev_raidz_pow2[256] __attribute__((aligned(256))); /* Logs of 2 in the Galois field defined above. */ extern const uint8_t vdev_raidz_log2[256] __attribute__((aligned(256))); /* * Multiply a given number by 2 raised to the given power. */ static inline uint8_t vdev_raidz_exp2(const uint8_t a, const unsigned exp) { if (a == 0) return (0); return (vdev_raidz_pow2[(exp + (unsigned)vdev_raidz_log2[a]) % 255]); } /* * Galois Field operations. * * gf_exp2 - computes 2 raised to the given power * gf_exp2 - computes 4 raised to the given power * gf_mul - multiplication * gf_div - division * gf_inv - multiplicative inverse */ typedef unsigned gf_t; typedef unsigned gf_log_t; static inline gf_t gf_mul(const gf_t a, const gf_t b) { gf_log_t logsum; if (a == 0 || b == 0) return (0); logsum = (gf_log_t)vdev_raidz_log2[a] + (gf_log_t)vdev_raidz_log2[b]; return ((gf_t)vdev_raidz_pow2[logsum % 255]); } static inline gf_t gf_div(const gf_t a, const gf_t b) { gf_log_t logsum; ASSERT3U(b, >, 0); if (a == 0) return (0); logsum = (gf_log_t)255 + (gf_log_t)vdev_raidz_log2[a] - (gf_log_t)vdev_raidz_log2[b]; return ((gf_t)vdev_raidz_pow2[logsum % 255]); } static inline gf_t gf_inv(const gf_t a) { gf_log_t logsum; ASSERT3U(a, >, 0); logsum = (gf_log_t)255 - (gf_log_t)vdev_raidz_log2[a]; return ((gf_t)vdev_raidz_pow2[logsum]); } static inline gf_t gf_exp2(gf_log_t exp) { return (vdev_raidz_pow2[exp % 255]); } static inline gf_t gf_exp4(gf_log_t exp) { ASSERT3U(exp, <=, 255); return ((gf_t)vdev_raidz_pow2[(2 * exp) % 255]); } #ifdef __cplusplus } #endif #endif /* _VDEV_RAIDZ_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dataset_kstats.h0000644000000000000000000000007313607166132021047 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.41942399 zfs-0.8.3/include/sys/dataset_kstats.h0000644016037001603700000000442113607166132021046 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2018 by Delphix. All rights reserved. * Copyright (c) 2018 Datto Inc. */ #ifndef _SYS_DATASET_KSTATS_H #define _SYS_DATASET_KSTATS_H #include #include #include typedef struct dataset_aggsum_stats_t { aggsum_t das_writes; aggsum_t das_nwritten; aggsum_t das_reads; aggsum_t das_nread; aggsum_t das_nunlinks; aggsum_t das_nunlinked; } dataset_aggsum_stats_t; typedef struct dataset_kstat_values { kstat_named_t dkv_ds_name; kstat_named_t dkv_writes; kstat_named_t dkv_nwritten; kstat_named_t dkv_reads; kstat_named_t dkv_nread; /* * nunlinks is initialized to the unlinked set size on mount and * is incremented whenever a new entry is added to the unlinked set */ kstat_named_t dkv_nunlinks; /* * nunlinked is initialized to zero on mount and is incremented when an * entry is removed from the unlinked set */ kstat_named_t dkv_nunlinked; } dataset_kstat_values_t; typedef struct dataset_kstats { dataset_aggsum_stats_t dk_aggsums; kstat_t *dk_kstats; } dataset_kstats_t; void dataset_kstats_create(dataset_kstats_t *, objset_t *); void dataset_kstats_destroy(dataset_kstats_t *); void dataset_kstats_update_write_kstats(dataset_kstats_t *, int64_t); void dataset_kstats_update_read_kstats(dataset_kstats_t *, int64_t); void dataset_kstats_update_nunlinks_kstat(dataset_kstats_t *, int64_t); void dataset_kstats_update_nunlinked_kstat(dataset_kstats_t *, int64_t); #endif /* _SYS_DATASET_KSTATS_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zio_crypt.h0000644000000000000000000000007413612141513020044 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.684432499 zfs-0.8.3/include/sys/zio_crypt.h0000644016037001603700000001143213612141513020042 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2017, Datto, Inc. All rights reserved. */ #ifndef _SYS_ZIO_CRYPT_H #define _SYS_ZIO_CRYPT_H #include #include #include #include #include #include /* forward declarations */ struct zbookmark_phys; #define WRAPPING_KEY_LEN 32 #define WRAPPING_IV_LEN ZIO_DATA_IV_LEN #define WRAPPING_MAC_LEN ZIO_DATA_MAC_LEN #define MASTER_KEY_MAX_LEN 32 #define SHA512_HMAC_KEYLEN 64 #define ZIO_CRYPT_KEY_CURRENT_VERSION 1ULL typedef enum zio_crypt_type { ZC_TYPE_NONE = 0, ZC_TYPE_CCM, ZC_TYPE_GCM } zio_crypt_type_t; /* table of supported crypto algorithms, modes and keylengths. */ typedef struct zio_crypt_info { /* mechanism name, needed by ICP */ crypto_mech_name_t ci_mechname; /* cipher mode type (GCM, CCM) */ zio_crypt_type_t ci_crypt_type; /* length of the encryption key */ size_t ci_keylen; /* human-readable name of the encryption algorithm */ char *ci_name; } zio_crypt_info_t; extern zio_crypt_info_t zio_crypt_table[ZIO_CRYPT_FUNCTIONS]; /* in memory representation of an unwrapped key that is loaded into memory */ typedef struct zio_crypt_key { /* encryption algorithm */ uint64_t zk_crypt; /* on-disk format version */ uint64_t zk_version; /* GUID for uniquely identifying this key. Not encrypted on disk. */ uint64_t zk_guid; /* buffer for master key */ uint8_t zk_master_keydata[MASTER_KEY_MAX_LEN]; /* buffer for hmac key */ uint8_t zk_hmac_keydata[SHA512_HMAC_KEYLEN]; /* buffer for current encryption key derived from master key */ uint8_t zk_current_keydata[MASTER_KEY_MAX_LEN]; /* current 64 bit salt for deriving an encryption key */ uint8_t zk_salt[ZIO_DATA_SALT_LEN]; /* count of how many times the current salt has been used */ uint64_t zk_salt_count; /* illumos crypto api current encryption key */ crypto_key_t zk_current_key; /* template of current encryption key for illumos crypto api */ crypto_ctx_template_t zk_current_tmpl; /* illumos crypto api current hmac key */ crypto_key_t zk_hmac_key; /* template of hmac key for illumos crypto api */ crypto_ctx_template_t zk_hmac_tmpl; /* lock for changing the salt and dependent values */ krwlock_t zk_salt_lock; } zio_crypt_key_t; void zio_crypt_key_destroy(zio_crypt_key_t *key); int zio_crypt_key_init(uint64_t crypt, zio_crypt_key_t *key); int zio_crypt_key_get_salt(zio_crypt_key_t *key, uint8_t *salt_out); int zio_crypt_key_wrap(crypto_key_t *cwkey, zio_crypt_key_t *key, uint8_t *iv, uint8_t *mac, uint8_t *keydata_out, uint8_t *hmac_keydata_out); int zio_crypt_key_unwrap(crypto_key_t *cwkey, uint64_t crypt, uint64_t version, uint64_t guid, uint8_t *keydata, uint8_t *hmac_keydata, uint8_t *iv, uint8_t *mac, zio_crypt_key_t *key); int zio_crypt_generate_iv(uint8_t *ivbuf); int zio_crypt_generate_iv_salt_dedup(zio_crypt_key_t *key, uint8_t *data, uint_t datalen, uint8_t *ivbuf, uint8_t *salt); void zio_crypt_encode_params_bp(blkptr_t *bp, uint8_t *salt, uint8_t *iv); void zio_crypt_decode_params_bp(const blkptr_t *bp, uint8_t *salt, uint8_t *iv); void zio_crypt_encode_mac_bp(blkptr_t *bp, uint8_t *mac); void zio_crypt_decode_mac_bp(const blkptr_t *bp, uint8_t *mac); void zio_crypt_encode_mac_zil(void *data, uint8_t *mac); void zio_crypt_decode_mac_zil(const void *data, uint8_t *mac); void zio_crypt_copy_dnode_bonus(abd_t *src_abd, uint8_t *dst, uint_t datalen); int zio_crypt_do_indirect_mac_checksum(boolean_t generate, void *buf, uint_t datalen, boolean_t byteswap, uint8_t *cksum); int zio_crypt_do_indirect_mac_checksum_abd(boolean_t generate, abd_t *abd, uint_t datalen, boolean_t byteswap, uint8_t *cksum); int zio_crypt_do_hmac(zio_crypt_key_t *key, uint8_t *data, uint_t datalen, uint8_t *digestbuf, uint_t digestlen); int zio_crypt_do_objset_hmacs(zio_crypt_key_t *key, void *data, uint_t datalen, boolean_t byteswap, uint8_t *portable_mac, uint8_t *local_mac); int zio_do_crypt_data(boolean_t encrypt, zio_crypt_key_t *key, dmu_object_type_t ot, boolean_t byteswap, uint8_t *salt, uint8_t *iv, uint8_t *mac, uint_t datalen, uint8_t *plainbuf, uint8_t *cipherbuf, boolean_t *no_crypt); int zio_do_crypt_abd(boolean_t encrypt, zio_crypt_key_t *key, dmu_object_type_t ot, boolean_t byteswap, uint8_t *salt, uint8_t *iv, uint8_t *mac, uint_t datalen, abd_t *pabd, abd_t *cabd, boolean_t *no_crypt); #endif zfs-0.8.3/include/sys/PaxHeaders.151519/trace_acl.h0000644000000000000000000000007413607166147017755 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.541427908 zfs-0.8.3/include/sys/trace_acl.h0000644016037001603700000001232613607166147017756 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #if defined(_KERNEL) && defined(HAVE_DECLARE_EVENT_CLASS) #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #undef TRACE_SYSTEM_VAR #define TRACE_SYSTEM_VAR zfs_acl #if !defined(_TRACE_ACL_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_ACL_H #include #include #include /* * Generic support for three argument tracepoints of the form: * * DTRACE_PROBE3(..., * znode_t *, ..., * zfs_ace_hdr_t *, ..., * uint32_t, ...); */ /* BEGIN CSTYLED */ DECLARE_EVENT_CLASS(zfs_ace_class, TP_PROTO(znode_t *zn, zfs_ace_hdr_t *ace, uint32_t mask_matched), TP_ARGS(zn, ace, mask_matched), TP_STRUCT__entry( __field(uint64_t, z_id) __field(uint8_t, z_unlinked) __field(uint8_t, z_atime_dirty) __field(uint8_t, z_zn_prefetch) __field(uint8_t, z_moved) __field(uint_t, z_blksz) __field(uint_t, z_seq) __field(uint64_t, z_mapcnt) __field(uint64_t, z_size) __field(uint64_t, z_pflags) __field(uint32_t, z_sync_cnt) __field(mode_t, z_mode) __field(boolean_t, z_is_sa) __field(boolean_t, z_is_mapped) __field(boolean_t, z_is_ctldir) __field(boolean_t, z_is_stale) __field(uint32_t, i_uid) __field(uint32_t, i_gid) __field(unsigned long, i_ino) __field(unsigned int, i_nlink) __field(loff_t, i_size) __field(unsigned int, i_blkbits) __field(unsigned short, i_bytes) __field(umode_t, i_mode) __field(__u32, i_generation) __field(uint16_t, z_type) __field(uint16_t, z_flags) __field(uint32_t, z_access_mask) __field(uint32_t, mask_matched) ), TP_fast_assign( __entry->z_id = zn->z_id; __entry->z_unlinked = zn->z_unlinked; __entry->z_atime_dirty = zn->z_atime_dirty; __entry->z_zn_prefetch = zn->z_zn_prefetch; __entry->z_moved = zn->z_moved; __entry->z_blksz = zn->z_blksz; __entry->z_seq = zn->z_seq; __entry->z_mapcnt = zn->z_mapcnt; __entry->z_size = zn->z_size; __entry->z_pflags = zn->z_pflags; __entry->z_sync_cnt = zn->z_sync_cnt; __entry->z_mode = zn->z_mode; __entry->z_is_sa = zn->z_is_sa; __entry->z_is_mapped = zn->z_is_mapped; __entry->z_is_ctldir = zn->z_is_ctldir; __entry->z_is_stale = zn->z_is_stale; __entry->i_uid = KUID_TO_SUID(ZTOI(zn)->i_uid); __entry->i_gid = KGID_TO_SGID(ZTOI(zn)->i_gid); __entry->i_ino = zn->z_inode.i_ino; __entry->i_nlink = zn->z_inode.i_nlink; __entry->i_size = zn->z_inode.i_size; __entry->i_blkbits = zn->z_inode.i_blkbits; __entry->i_bytes = zn->z_inode.i_bytes; __entry->i_mode = zn->z_inode.i_mode; __entry->i_generation = zn->z_inode.i_generation; __entry->z_type = ace->z_type; __entry->z_flags = ace->z_flags; __entry->z_access_mask = ace->z_access_mask; __entry->mask_matched = mask_matched; ), TP_printk("zn { id %llu unlinked %u atime_dirty %u " "zn_prefetch %u moved %u blksz %u seq %u " "mapcnt %llu size %llu pflags %llu " "sync_cnt %u mode 0x%x is_sa %d " "is_mapped %d is_ctldir %d is_stale %d inode { " "uid %u gid %u ino %lu nlink %u size %lli " "blkbits %u bytes %u mode 0x%x generation %x } } " "ace { type %u flags %u access_mask %u } mask_matched %u", __entry->z_id, __entry->z_unlinked, __entry->z_atime_dirty, __entry->z_zn_prefetch, __entry->z_moved, __entry->z_blksz, __entry->z_seq, __entry->z_mapcnt, __entry->z_size, __entry->z_pflags, __entry->z_sync_cnt, __entry->z_mode, __entry->z_is_sa, __entry->z_is_mapped, __entry->z_is_ctldir, __entry->z_is_stale, __entry->i_uid, __entry->i_gid, __entry->i_ino, __entry->i_nlink, __entry->i_size, __entry->i_blkbits, __entry->i_bytes, __entry->i_mode, __entry->i_generation, __entry->z_type, __entry->z_flags, __entry->z_access_mask, __entry->mask_matched) ); /* END CSTYLED */ /* BEGIN CSTYLED */ #define DEFINE_ACE_EVENT(name) \ DEFINE_EVENT(zfs_ace_class, name, \ TP_PROTO(znode_t *zn, zfs_ace_hdr_t *ace, uint32_t mask_matched), \ TP_ARGS(zn, ace, mask_matched)) /* END CSTYLED */ DEFINE_ACE_EVENT(zfs_zfs__ace__denies); DEFINE_ACE_EVENT(zfs_zfs__ace__allows); #endif /* _TRACE_ACL_H */ #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE #define TRACE_INCLUDE_PATH sys #define TRACE_INCLUDE_FILE trace_acl #include #endif /* _KERNEL && HAVE_DECLARE_EVENT_CLASS */ zfs-0.8.3/include/sys/PaxHeaders.151519/zvol.h0000644000000000000000000000007313607166147017031 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.70343311 zfs-0.8.3/include/sys/zvol.h0000644016037001603700000000440613607166147017033 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2016 Actifio, Inc. All rights reserved. */ #ifndef _SYS_ZVOL_H #define _SYS_ZVOL_H #include #define ZVOL_OBJ 1ULL #define ZVOL_ZAP_OBJ 2ULL #define SPEC_MAXOFFSET_T ((1LL << ((NBBY * sizeof (daddr32_t)) + \ DEV_BSHIFT - 1)) - 1) extern void zvol_create_minors(spa_t *spa, const char *name, boolean_t async); extern void zvol_remove_minors(spa_t *spa, const char *name, boolean_t async); extern void zvol_rename_minors(spa_t *spa, const char *oldname, const char *newname, boolean_t async); #ifdef _KERNEL typedef struct zvol_state zvol_state_t; extern int zvol_check_volsize(uint64_t volsize, uint64_t blocksize); extern int zvol_check_volblocksize(const char *name, uint64_t volblocksize); extern int zvol_get_stats(objset_t *os, nvlist_t *nv); extern boolean_t zvol_is_zvol(const char *); extern void zvol_create_cb(objset_t *os, void *arg, cred_t *cr, dmu_tx_t *tx); extern int zvol_set_volsize(const char *, uint64_t); extern int zvol_set_volblocksize(const char *, uint64_t); extern int zvol_set_snapdev(const char *, zprop_source_t, uint64_t); extern int zvol_set_volmode(const char *, zprop_source_t, uint64_t); extern zvol_state_t *zvol_suspend(const char *); extern int zvol_resume(zvol_state_t *); extern void *zvol_tag(zvol_state_t *); extern int zvol_init(void); extern void zvol_fini(void); #endif /* _KERNEL */ #endif /* _SYS_ZVOL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zap_impl.h0000644000000000000000000000007313607166132017644 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.62343054 zfs-0.8.3/include/sys/zap_impl.h0000644016037001603700000001545313607166132017652 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. * Copyright (c) 2013, 2016 by Delphix. All rights reserved. * Copyright 2017 Nexenta Systems, Inc. */ #ifndef _SYS_ZAP_IMPL_H #define _SYS_ZAP_IMPL_H #include #include #include #ifdef __cplusplus extern "C" { #endif extern int fzap_default_block_shift; #define ZAP_MAGIC 0x2F52AB2ABULL #define FZAP_BLOCK_SHIFT(zap) ((zap)->zap_f.zap_block_shift) #define MZAP_ENT_LEN 64 #define MZAP_NAME_LEN (MZAP_ENT_LEN - 8 - 4 - 2) #define MZAP_MAX_BLKSZ SPA_OLD_MAXBLOCKSIZE #define ZAP_NEED_CD (-1U) typedef struct mzap_ent_phys { uint64_t mze_value; uint32_t mze_cd; uint16_t mze_pad; /* in case we want to chain them someday */ char mze_name[MZAP_NAME_LEN]; } mzap_ent_phys_t; typedef struct mzap_phys { uint64_t mz_block_type; /* ZBT_MICRO */ uint64_t mz_salt; uint64_t mz_normflags; uint64_t mz_pad[5]; mzap_ent_phys_t mz_chunk[1]; /* actually variable size depending on block size */ } mzap_phys_t; typedef struct mzap_ent { avl_node_t mze_node; int mze_chunkid; uint64_t mze_hash; uint32_t mze_cd; /* copy from mze_phys->mze_cd */ } mzap_ent_t; #define MZE_PHYS(zap, mze) \ (&zap_m_phys(zap)->mz_chunk[(mze)->mze_chunkid]) /* * The (fat) zap is stored in one object. It is an array of * 1<= 6] [zap_leaf_t] [ptrtbl] ... * */ struct dmu_buf; struct zap_leaf; #define ZBT_LEAF ((1ULL << 63) + 0) #define ZBT_HEADER ((1ULL << 63) + 1) #define ZBT_MICRO ((1ULL << 63) + 3) /* any other values are ptrtbl blocks */ /* * the embedded pointer table takes up half a block: * block size / entry size (2^3) / 2 */ #define ZAP_EMBEDDED_PTRTBL_SHIFT(zap) (FZAP_BLOCK_SHIFT(zap) - 3 - 1) /* * The embedded pointer table starts half-way through the block. Since * the pointer table itself is half the block, it starts at (64-bit) * word number (1<zap_dbuf->db_data); } static inline mzap_phys_t * zap_m_phys(zap_t *zap) { return (zap->zap_dbuf->db_data); } typedef struct zap_name { zap_t *zn_zap; int zn_key_intlen; const void *zn_key_orig; int zn_key_orig_numints; const void *zn_key_norm; int zn_key_norm_numints; uint64_t zn_hash; matchtype_t zn_matchtype; int zn_normflags; char zn_normbuf[ZAP_MAXNAMELEN]; } zap_name_t; #define zap_f zap_u.zap_fat #define zap_m zap_u.zap_micro boolean_t zap_match(zap_name_t *zn, const char *matchname); int zap_lockdir(objset_t *os, uint64_t obj, dmu_tx_t *tx, krw_t lti, boolean_t fatreader, boolean_t adding, void *tag, zap_t **zapp); void zap_unlockdir(zap_t *zap, void *tag); void zap_evict_sync(void *dbu); zap_name_t *zap_name_alloc(zap_t *zap, const char *key, matchtype_t mt); void zap_name_free(zap_name_t *zn); int zap_hashbits(zap_t *zap); uint32_t zap_maxcd(zap_t *zap); uint64_t zap_getflags(zap_t *zap); #define ZAP_HASH_IDX(hash, n) (((n) == 0) ? 0 : ((hash) >> (64 - (n)))) void fzap_byteswap(void *buf, size_t size); int fzap_count(zap_t *zap, uint64_t *count); int fzap_lookup(zap_name_t *zn, uint64_t integer_size, uint64_t num_integers, void *buf, char *realname, int rn_len, boolean_t *normalization_conflictp); void fzap_prefetch(zap_name_t *zn); int fzap_add(zap_name_t *zn, uint64_t integer_size, uint64_t num_integers, const void *val, void *tag, dmu_tx_t *tx); int fzap_update(zap_name_t *zn, int integer_size, uint64_t num_integers, const void *val, void *tag, dmu_tx_t *tx); int fzap_length(zap_name_t *zn, uint64_t *integer_size, uint64_t *num_integers); int fzap_remove(zap_name_t *zn, dmu_tx_t *tx); int fzap_cursor_retrieve(zap_t *zap, zap_cursor_t *zc, zap_attribute_t *za); void fzap_get_stats(zap_t *zap, zap_stats_t *zs); void zap_put_leaf(struct zap_leaf *l); int fzap_add_cd(zap_name_t *zn, uint64_t integer_size, uint64_t num_integers, const void *val, uint32_t cd, void *tag, dmu_tx_t *tx); void fzap_upgrade(zap_t *zap, dmu_tx_t *tx, zap_flags_t flags); #ifdef __cplusplus } #endif #endif /* _SYS_ZAP_IMPL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/sysevent.h0000644000000000000000000000007413607166132017712 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.537427778 zfs-0.8.3/include/sys/sysevent.h0000644016037001603700000000210413607166132017704 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_SYSEVENT_H #define _SYS_SYSEVENT_H #include typedef struct sysevent { nvlist_t *resource; } sysevent_t; #endif zfs-0.8.3/include/sys/PaxHeaders.151519/vdev_indirect_births.h0000644000000000000000000000007413607166132022232 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.602429867 zfs-0.8.3/include/sys/vdev_indirect_births.h0000644016037001603700000000450013607166132022226 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2015 by Delphix. All rights reserved. */ #ifndef _SYS_VDEV_INDIRECT_BIRTHS_H #define _SYS_VDEV_INDIRECT_BIRTHS_H #include #include #ifdef __cplusplus extern "C" { #endif typedef struct vdev_indirect_birth_entry_phys { uint64_t vibe_offset; uint64_t vibe_phys_birth_txg; } vdev_indirect_birth_entry_phys_t; typedef struct vdev_indirect_birth_phys { uint64_t vib_count; /* count of v_i_b_entry_phys_t's */ } vdev_indirect_birth_phys_t; typedef struct vdev_indirect_births { uint64_t vib_object; /* * Each entry indicates that everything up to but not including * vibe_offset was copied in vibe_phys_birth_txg. Entries are sorted * by increasing phys_birth, and also by increasing offset. See * vdev_indirect_births_physbirth for usage. */ vdev_indirect_birth_entry_phys_t *vib_entries; objset_t *vib_objset; dmu_buf_t *vib_dbuf; vdev_indirect_birth_phys_t *vib_phys; } vdev_indirect_births_t; extern vdev_indirect_births_t *vdev_indirect_births_open(objset_t *os, uint64_t object); extern void vdev_indirect_births_close(vdev_indirect_births_t *vib); extern boolean_t vdev_indirect_births_is_open(vdev_indirect_births_t *vib); extern uint64_t vdev_indirect_births_alloc(objset_t *os, dmu_tx_t *tx); extern void vdev_indirect_births_free(objset_t *os, uint64_t object, dmu_tx_t *tx); extern uint64_t vdev_indirect_births_count(vdev_indirect_births_t *vib); extern uint64_t vdev_indirect_births_object(vdev_indirect_births_t *vib); extern void vdev_indirect_births_add_entry(vdev_indirect_births_t *vib, uint64_t offset, uint64_t txg, dmu_tx_t *tx); extern uint64_t vdev_indirect_births_physbirth(vdev_indirect_births_t *vib, uint64_t offset, uint64_t asize); extern uint64_t vdev_indirect_births_last_entry_txg( vdev_indirect_births_t *vib); #ifdef __cplusplus } #endif #endif /* _SYS_VDEV_INDIRECT_BIRTHS_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/trace_common.h0000644000000000000000000000007413607166147020506 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.545428037 zfs-0.8.3/include/sys/trace_common.h0000644016037001603700000001076413607166147020513 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * This file contains commonly used trace macros. Feel free to add and use * them in your tracepoint headers. */ #ifndef _SYS_TRACE_COMMON_H #define _SYS_TRACE_COMMON_H #include /* ZIO macros */ #define ZIO_TP_STRUCT_ENTRY \ __field(zio_type_t, zio_type) \ __field(int, zio_cmd) \ __field(zio_priority_t, zio_priority) \ __field(uint64_t, zio_size) \ __field(uint64_t, zio_orig_size) \ __field(uint64_t, zio_offset) \ __field(hrtime_t, zio_timestamp) \ __field(hrtime_t, zio_delta) \ __field(uint64_t, zio_delay) \ __field(enum zio_flag, zio_flags) \ __field(enum zio_stage, zio_stage) \ __field(enum zio_stage, zio_pipeline) \ __field(enum zio_flag, zio_orig_flags) \ __field(enum zio_stage, zio_orig_stage) \ __field(enum zio_stage, zio_orig_pipeline) \ __field(uint8_t, zio_reexecute) \ __field(uint64_t, zio_txg) \ __field(int, zio_error) \ __field(uint64_t, zio_ena) \ \ __field(enum zio_checksum, zp_checksum) \ __field(enum zio_compress, zp_compress) \ __field(dmu_object_type_t, zp_type) \ __field(uint8_t, zp_level) \ __field(uint8_t, zp_copies) \ __field(boolean_t, zp_dedup) \ __field(boolean_t, zp_dedup_verify) \ __field(boolean_t, zp_nopwrite) #define ZIO_TP_FAST_ASSIGN \ __entry->zio_type = zio->io_type; \ __entry->zio_cmd = zio->io_cmd; \ __entry->zio_priority = zio->io_priority; \ __entry->zio_size = zio->io_size; \ __entry->zio_orig_size = zio->io_orig_size; \ __entry->zio_offset = zio->io_offset; \ __entry->zio_timestamp = zio->io_timestamp; \ __entry->zio_delta = zio->io_delta; \ __entry->zio_delay = zio->io_delay; \ __entry->zio_flags = zio->io_flags; \ __entry->zio_stage = zio->io_stage; \ __entry->zio_pipeline = zio->io_pipeline; \ __entry->zio_orig_flags = zio->io_orig_flags; \ __entry->zio_orig_stage = zio->io_orig_stage; \ __entry->zio_orig_pipeline = zio->io_orig_pipeline; \ __entry->zio_reexecute = zio->io_reexecute; \ __entry->zio_txg = zio->io_txg; \ __entry->zio_error = zio->io_error; \ __entry->zio_ena = zio->io_ena; \ \ __entry->zp_checksum = zio->io_prop.zp_checksum; \ __entry->zp_compress = zio->io_prop.zp_compress; \ __entry->zp_type = zio->io_prop.zp_type; \ __entry->zp_level = zio->io_prop.zp_level; \ __entry->zp_copies = zio->io_prop.zp_copies; \ __entry->zp_dedup = zio->io_prop.zp_dedup; \ __entry->zp_nopwrite = zio->io_prop.zp_nopwrite; \ __entry->zp_dedup_verify = zio->io_prop.zp_dedup_verify; #define ZIO_TP_PRINTK_FMT \ "zio { type %u cmd %i prio %u size %llu orig_size %llu " \ "offset %llu timestamp %llu delta %llu delay %llu " \ "flags 0x%x stage 0x%x pipeline 0x%x orig_flags 0x%x " \ "orig_stage 0x%x orig_pipeline 0x%x reexecute %u " \ "txg %llu error %d ena %llu prop { checksum %u compress %u " \ "type %u level %u copies %u dedup %u dedup_verify %u nopwrite %u } }" #define ZIO_TP_PRINTK_ARGS \ __entry->zio_type, __entry->zio_cmd, __entry->zio_priority, \ __entry->zio_size, __entry->zio_orig_size, __entry->zio_offset, \ __entry->zio_timestamp, __entry->zio_delta, __entry->zio_delay, \ __entry->zio_flags, __entry->zio_stage, __entry->zio_pipeline, \ __entry->zio_orig_flags, __entry->zio_orig_stage, \ __entry->zio_orig_pipeline, __entry->zio_reexecute, \ __entry->zio_txg, __entry->zio_error, __entry->zio_ena, \ __entry->zp_checksum, __entry->zp_compress, __entry->zp_type, \ __entry->zp_level, __entry->zp_copies, __entry->zp_dedup, \ __entry->zp_dedup_verify, __entry->zp_nopwrite #endif /* _SYS_TRACE_COMMON_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_pool.h0000644000000000000000000000007413607166147017653 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.462425372 zfs-0.8.3/include/sys/dsl_pool.h0000644016037001603700000001432713607166147017657 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013, 2017 by Delphix. All rights reserved. * Copyright 2016 Nexenta Systems, Inc. All rights reserved. */ #ifndef _SYS_DSL_POOL_H #define _SYS_DSL_POOL_H #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif extern int zfs_txg_synctime_ms; struct objset; struct dsl_dir; struct dsl_dataset; struct dsl_pool; struct dmu_tx; struct dsl_scan; struct dsl_crypto_params; extern unsigned long zfs_dirty_data_max; extern unsigned long zfs_dirty_data_max_max; extern int zfs_dirty_data_sync_percent; extern int zfs_dirty_data_max_percent; extern int zfs_dirty_data_max_max_percent; extern int zfs_delay_min_dirty_percent; extern unsigned long zfs_delay_scale; /* These macros are for indexing into the zfs_all_blkstats_t. */ #define DMU_OT_DEFERRED DMU_OT_NONE #define DMU_OT_OTHER DMU_OT_NUMTYPES /* place holder for DMU_OT() types */ #define DMU_OT_TOTAL (DMU_OT_NUMTYPES + 1) typedef struct zfs_blkstat { uint64_t zb_count; uint64_t zb_asize; uint64_t zb_lsize; uint64_t zb_psize; uint64_t zb_gangs; uint64_t zb_ditto_2_of_2_samevdev; uint64_t zb_ditto_2_of_3_samevdev; uint64_t zb_ditto_3_of_3_samevdev; } zfs_blkstat_t; typedef struct zfs_all_blkstats { zfs_blkstat_t zab_type[DN_MAX_LEVELS + 1][DMU_OT_TOTAL + 1]; kmutex_t zab_lock; } zfs_all_blkstats_t; typedef struct dsl_pool { /* Immutable */ spa_t *dp_spa; struct objset *dp_meta_objset; struct dsl_dir *dp_root_dir; struct dsl_dir *dp_mos_dir; struct dsl_dir *dp_free_dir; struct dsl_dir *dp_leak_dir; struct dsl_dataset *dp_origin_snap; uint64_t dp_root_dir_obj; struct taskq *dp_iput_taskq; struct taskq *dp_unlinked_drain_taskq; /* No lock needed - sync context only */ blkptr_t dp_meta_rootbp; uint64_t dp_tmp_userrefs_obj; bpobj_t dp_free_bpobj; uint64_t dp_bptree_obj; uint64_t dp_empty_bpobj; bpobj_t dp_obsolete_bpobj; struct dsl_scan *dp_scan; /* Uses dp_lock */ kmutex_t dp_lock; kcondvar_t dp_spaceavail_cv; uint64_t dp_dirty_pertxg[TXG_SIZE]; uint64_t dp_dirty_total; uint64_t dp_long_free_dirty_pertxg[TXG_SIZE]; uint64_t dp_mos_used_delta; uint64_t dp_mos_compressed_delta; uint64_t dp_mos_uncompressed_delta; /* * Time of most recently scheduled (furthest in the future) * wakeup for delayed transactions. */ hrtime_t dp_last_wakeup; /* Has its own locking */ tx_state_t dp_tx; txg_list_t dp_dirty_datasets; txg_list_t dp_dirty_zilogs; txg_list_t dp_dirty_dirs; txg_list_t dp_sync_tasks; txg_list_t dp_early_sync_tasks; taskq_t *dp_sync_taskq; taskq_t *dp_zil_clean_taskq; /* * Protects administrative changes (properties, namespace) * * It is only held for write in syncing context. Therefore * syncing context does not need to ever have it for read, since * nobody else could possibly have it for write. */ rrwlock_t dp_config_rwlock; zfs_all_blkstats_t *dp_blkstats; } dsl_pool_t; int dsl_pool_init(spa_t *spa, uint64_t txg, dsl_pool_t **dpp); int dsl_pool_open(dsl_pool_t *dp); void dsl_pool_close(dsl_pool_t *dp); dsl_pool_t *dsl_pool_create(spa_t *spa, nvlist_t *zplprops, struct dsl_crypto_params *dcp, uint64_t txg); void dsl_pool_sync(dsl_pool_t *dp, uint64_t txg); void dsl_pool_sync_done(dsl_pool_t *dp, uint64_t txg); int dsl_pool_sync_context(dsl_pool_t *dp); uint64_t dsl_pool_adjustedsize(dsl_pool_t *dp, zfs_space_check_t slop_policy); uint64_t dsl_pool_unreserved_space(dsl_pool_t *dp, zfs_space_check_t slop_policy); void dsl_pool_dirty_space(dsl_pool_t *dp, int64_t space, dmu_tx_t *tx); void dsl_pool_undirty_space(dsl_pool_t *dp, int64_t space, uint64_t txg); void dsl_free(dsl_pool_t *dp, uint64_t txg, const blkptr_t *bpp); void dsl_free_sync(zio_t *pio, dsl_pool_t *dp, uint64_t txg, const blkptr_t *bpp); void dsl_pool_create_origin(dsl_pool_t *dp, dmu_tx_t *tx); void dsl_pool_upgrade_clones(dsl_pool_t *dp, dmu_tx_t *tx); void dsl_pool_upgrade_dir_clones(dsl_pool_t *dp, dmu_tx_t *tx); void dsl_pool_mos_diduse_space(dsl_pool_t *dp, int64_t used, int64_t comp, int64_t uncomp); void dsl_pool_ckpoint_diduse_space(dsl_pool_t *dp, int64_t used, int64_t comp, int64_t uncomp); boolean_t dsl_pool_need_dirty_delay(dsl_pool_t *dp); void dsl_pool_config_enter(dsl_pool_t *dp, void *tag); void dsl_pool_config_enter_prio(dsl_pool_t *dp, void *tag); void dsl_pool_config_exit(dsl_pool_t *dp, void *tag); boolean_t dsl_pool_config_held(dsl_pool_t *dp); boolean_t dsl_pool_config_held_writer(dsl_pool_t *dp); taskq_t *dsl_pool_iput_taskq(dsl_pool_t *dp); taskq_t *dsl_pool_unlinked_drain_taskq(dsl_pool_t *dp); int dsl_pool_user_hold(dsl_pool_t *dp, uint64_t dsobj, const char *tag, uint64_t now, dmu_tx_t *tx); int dsl_pool_user_release(dsl_pool_t *dp, uint64_t dsobj, const char *tag, dmu_tx_t *tx); void dsl_pool_clean_tmp_userrefs(dsl_pool_t *dp); int dsl_pool_open_special_dir(dsl_pool_t *dp, const char *name, dsl_dir_t **); int dsl_pool_hold(const char *name, void *tag, dsl_pool_t **dp); void dsl_pool_rele(dsl_pool_t *dp, void *tag); void dsl_pool_create_obsolete_bpobj(dsl_pool_t *dp, dmu_tx_t *tx); void dsl_pool_destroy_obsolete_bpobj(dsl_pool_t *dp, dmu_tx_t *tx); #ifdef __cplusplus } #endif #endif /* _SYS_DSL_POOL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dbuf.h0000644000000000000000000000007413607166147016760 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.421424054 zfs-0.8.3/include/sys/dbuf.h0000644016037001603700000002665513607166147016773 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2018 by Delphix. All rights reserved. * Copyright (c) 2013 by Saso Kiselkov. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. */ #ifndef _SYS_DBUF_H #define _SYS_DBUF_H #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif #define IN_DMU_SYNC 2 /* * define flags for dbuf_read */ #define DB_RF_MUST_SUCCEED (1 << 0) #define DB_RF_CANFAIL (1 << 1) #define DB_RF_HAVESTRUCT (1 << 2) #define DB_RF_NOPREFETCH (1 << 3) #define DB_RF_NEVERWAIT (1 << 4) #define DB_RF_CACHED (1 << 5) #define DB_RF_NO_DECRYPT (1 << 6) /* * The simplified state transition diagram for dbufs looks like: * * +----> READ ----+ * | | * | V * (alloc)-->UNCACHED CACHED-->EVICTING-->(free) * | ^ ^ * | | | * +----> FILL ----+ | * | | * | | * +--------> NOFILL -------+ * * DB_SEARCH is an invalid state for a dbuf. It is used by dbuf_free_range * to find all dbufs in a range of a dnode and must be less than any other * dbuf_states_t (see comment on dn_dbufs in dnode.h). */ typedef enum dbuf_states { DB_SEARCH = -1, DB_UNCACHED, DB_FILL, DB_NOFILL, DB_READ, DB_CACHED, DB_EVICTING } dbuf_states_t; typedef enum dbuf_cached_state { DB_NO_CACHE = -1, DB_DBUF_CACHE, DB_DBUF_METADATA_CACHE, DB_CACHE_MAX } dbuf_cached_state_t; struct dnode; struct dmu_tx; /* * level = 0 means the user data * level = 1 means the single indirect block * etc. */ struct dmu_buf_impl; typedef enum override_states { DR_NOT_OVERRIDDEN, DR_IN_DMU_SYNC, DR_OVERRIDDEN } override_states_t; typedef struct dbuf_dirty_record { /* link on our parents dirty list */ list_node_t dr_dirty_node; /* transaction group this data will sync in */ uint64_t dr_txg; /* zio of outstanding write IO */ zio_t *dr_zio; /* pointer back to our dbuf */ struct dmu_buf_impl *dr_dbuf; /* pointer to next dirty record */ struct dbuf_dirty_record *dr_next; /* pointer to parent dirty record */ struct dbuf_dirty_record *dr_parent; /* How much space was changed to dsl_pool_dirty_space() for this? */ unsigned int dr_accounted; /* A copy of the bp that points to us */ blkptr_t dr_bp_copy; union dirty_types { struct dirty_indirect { /* protect access to list */ kmutex_t dr_mtx; /* Our list of dirty children */ list_t dr_children; } di; struct dirty_leaf { /* * dr_data is set when we dirty the buffer * so that we can retain the pointer even if it * gets COW'd in a subsequent transaction group. */ arc_buf_t *dr_data; blkptr_t dr_overridden_by; override_states_t dr_override_state; uint8_t dr_copies; boolean_t dr_nopwrite; boolean_t dr_has_raw_params; /* * If dr_has_raw_params is set, the following crypt * params will be set on the BP that's written. */ boolean_t dr_byteorder; uint8_t dr_salt[ZIO_DATA_SALT_LEN]; uint8_t dr_iv[ZIO_DATA_IV_LEN]; uint8_t dr_mac[ZIO_DATA_MAC_LEN]; } dl; } dt; } dbuf_dirty_record_t; typedef struct dmu_buf_impl { /* * The following members are immutable, with the exception of * db.db_data, which is protected by db_mtx. */ /* the publicly visible structure */ dmu_buf_t db; /* the objset we belong to */ struct objset *db_objset; /* * handle to safely access the dnode we belong to (NULL when evicted) */ struct dnode_handle *db_dnode_handle; /* * our parent buffer; if the dnode points to us directly, * db_parent == db_dnode_handle->dnh_dnode->dn_dbuf * only accessed by sync thread ??? * (NULL when evicted) * May change from NULL to non-NULL under the protection of db_mtx * (see dbuf_check_blkptr()) */ struct dmu_buf_impl *db_parent; /* * link for hash table of all dmu_buf_impl_t's */ struct dmu_buf_impl *db_hash_next; /* our block number */ uint64_t db_blkid; /* * Pointer to the blkptr_t which points to us. May be NULL if we * don't have one yet. (NULL when evicted) */ blkptr_t *db_blkptr; /* * Our indirection level. Data buffers have db_level==0. * Indirect buffers which point to data buffers have * db_level==1. etc. Buffers which contain dnodes have * db_level==0, since the dnodes are stored in a file. */ uint8_t db_level; /* db_mtx protects the members below */ kmutex_t db_mtx; /* * Current state of the buffer */ dbuf_states_t db_state; /* * Refcount accessed by dmu_buf_{hold,rele}. * If nonzero, the buffer can't be destroyed. * Protected by db_mtx. */ zfs_refcount_t db_holds; /* buffer holding our data */ arc_buf_t *db_buf; kcondvar_t db_changed; dbuf_dirty_record_t *db_data_pending; /* pointer to most recent dirty record for this buffer */ dbuf_dirty_record_t *db_last_dirty; /* * Our link on the owner dnodes's dn_dbufs list. * Protected by its dn_dbufs_mtx. */ avl_node_t db_link; /* Link in dbuf_cache or dbuf_metadata_cache */ multilist_node_t db_cache_link; /* Tells us which dbuf cache this dbuf is in, if any */ dbuf_cached_state_t db_caching_status; /* Data which is unique to data (leaf) blocks: */ /* User callback information. */ dmu_buf_user_t *db_user; /* * Evict user data as soon as the dirty and reference * counts are equal. */ uint8_t db_user_immediate_evict; /* * This block was freed while a read or write was * active. */ uint8_t db_freed_in_flight; /* * dnode_evict_dbufs() or dnode_evict_bonus() tried to * evict this dbuf, but couldn't due to outstanding * references. Evict once the refcount drops to 0. */ uint8_t db_pending_evict; uint8_t db_dirtycnt; } dmu_buf_impl_t; /* Note: the dbuf hash table is exposed only for the mdb module */ #define DBUF_MUTEXES 8192 #define DBUF_HASH_MUTEX(h, idx) (&(h)->hash_mutexes[(idx) & (DBUF_MUTEXES-1)]) typedef struct dbuf_hash_table { uint64_t hash_table_mask; dmu_buf_impl_t **hash_table; kmutex_t hash_mutexes[DBUF_MUTEXES]; } dbuf_hash_table_t; uint64_t dbuf_whichblock(const struct dnode *di, const int64_t level, const uint64_t offset); void dbuf_create_bonus(struct dnode *dn); int dbuf_spill_set_blksz(dmu_buf_t *db, uint64_t blksz, dmu_tx_t *tx); void dbuf_rm_spill(struct dnode *dn, dmu_tx_t *tx); dmu_buf_impl_t *dbuf_hold(struct dnode *dn, uint64_t blkid, void *tag); dmu_buf_impl_t *dbuf_hold_level(struct dnode *dn, int level, uint64_t blkid, void *tag); int dbuf_hold_impl(struct dnode *dn, uint8_t level, uint64_t blkid, boolean_t fail_sparse, boolean_t fail_uncached, void *tag, dmu_buf_impl_t **dbp); void dbuf_prefetch(struct dnode *dn, int64_t level, uint64_t blkid, zio_priority_t prio, arc_flags_t aflags); void dbuf_add_ref(dmu_buf_impl_t *db, void *tag); boolean_t dbuf_try_add_ref(dmu_buf_t *db, objset_t *os, uint64_t obj, uint64_t blkid, void *tag); uint64_t dbuf_refcount(dmu_buf_impl_t *db); void dbuf_rele(dmu_buf_impl_t *db, void *tag); void dbuf_rele_and_unlock(dmu_buf_impl_t *db, void *tag, boolean_t evicting); dmu_buf_impl_t *dbuf_find(struct objset *os, uint64_t object, uint8_t level, uint64_t blkid); int dbuf_read(dmu_buf_impl_t *db, zio_t *zio, uint32_t flags); void dmu_buf_will_not_fill(dmu_buf_t *db, dmu_tx_t *tx); void dmu_buf_will_fill(dmu_buf_t *db, dmu_tx_t *tx); void dmu_buf_fill_done(dmu_buf_t *db, dmu_tx_t *tx); void dbuf_assign_arcbuf(dmu_buf_impl_t *db, arc_buf_t *buf, dmu_tx_t *tx); dbuf_dirty_record_t *dbuf_dirty(dmu_buf_impl_t *db, dmu_tx_t *tx); arc_buf_t *dbuf_loan_arcbuf(dmu_buf_impl_t *db); void dmu_buf_write_embedded(dmu_buf_t *dbuf, void *data, bp_embedded_type_t etype, enum zio_compress comp, int uncompressed_size, int compressed_size, int byteorder, dmu_tx_t *tx); void dbuf_destroy(dmu_buf_impl_t *db); void dbuf_unoverride(dbuf_dirty_record_t *dr); void dbuf_sync_list(list_t *list, int level, dmu_tx_t *tx); void dbuf_release_bp(dmu_buf_impl_t *db); boolean_t dbuf_can_remap(const dmu_buf_impl_t *buf); void dbuf_free_range(struct dnode *dn, uint64_t start, uint64_t end, struct dmu_tx *); void dbuf_new_size(dmu_buf_impl_t *db, int size, dmu_tx_t *tx); void dbuf_stats_init(dbuf_hash_table_t *hash); void dbuf_stats_destroy(void); #define DB_DNODE(_db) ((_db)->db_dnode_handle->dnh_dnode) #define DB_DNODE_LOCK(_db) ((_db)->db_dnode_handle->dnh_zrlock) #define DB_DNODE_ENTER(_db) (zrl_add(&DB_DNODE_LOCK(_db))) #define DB_DNODE_EXIT(_db) (zrl_remove(&DB_DNODE_LOCK(_db))) #define DB_DNODE_HELD(_db) (!zrl_is_zero(&DB_DNODE_LOCK(_db))) void dbuf_init(void); void dbuf_fini(void); boolean_t dbuf_is_metadata(dmu_buf_impl_t *db); #define DBUF_GET_BUFC_TYPE(_db) \ (dbuf_is_metadata(_db) ? ARC_BUFC_METADATA : ARC_BUFC_DATA) #define DBUF_IS_CACHEABLE(_db) \ ((_db)->db_objset->os_primary_cache == ZFS_CACHE_ALL || \ (dbuf_is_metadata(_db) && \ ((_db)->db_objset->os_primary_cache == ZFS_CACHE_METADATA))) #define DBUF_IS_L2CACHEABLE(_db) \ ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_ALL || \ (dbuf_is_metadata(_db) && \ ((_db)->db_objset->os_secondary_cache == ZFS_CACHE_METADATA))) #define DNODE_LEVEL_IS_L2CACHEABLE(_dn, _level) \ ((_dn)->dn_objset->os_secondary_cache == ZFS_CACHE_ALL || \ (((_level) > 0 || \ DMU_OT_IS_METADATA((_dn)->dn_handle->dnh_dnode->dn_type)) && \ ((_dn)->dn_objset->os_secondary_cache == ZFS_CACHE_METADATA))) #ifdef ZFS_DEBUG /* * There should be a ## between the string literal and fmt, to make it * clear that we're joining two strings together, but gcc does not * support that preprocessor token. */ #define dprintf_dbuf(dbuf, fmt, ...) do { \ if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ char __db_buf[32]; \ uint64_t __db_obj = (dbuf)->db.db_object; \ if (__db_obj == DMU_META_DNODE_OBJECT) \ (void) strcpy(__db_buf, "mdn"); \ else \ (void) snprintf(__db_buf, sizeof (__db_buf), "%lld", \ (u_longlong_t)__db_obj); \ dprintf_ds((dbuf)->db_objset->os_dsl_dataset, \ "obj=%s lvl=%u blkid=%lld " fmt, \ __db_buf, (dbuf)->db_level, \ (u_longlong_t)(dbuf)->db_blkid, __VA_ARGS__); \ } \ _NOTE(CONSTCOND) } while (0) #define dprintf_dbuf_bp(db, bp, fmt, ...) do { \ if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ char *__blkbuf = kmem_alloc(BP_SPRINTF_LEN, KM_SLEEP); \ snprintf_blkptr(__blkbuf, BP_SPRINTF_LEN, bp); \ dprintf_dbuf(db, fmt " %s\n", __VA_ARGS__, __blkbuf); \ kmem_free(__blkbuf, BP_SPRINTF_LEN); \ } \ _NOTE(CONSTCOND) } while (0) #define DBUF_VERIFY(db) dbuf_verify(db) #else #define dprintf_dbuf(db, fmt, ...) #define dprintf_dbuf_bp(db, bp, fmt, ...) #define DBUF_VERIFY(db) #endif #ifdef __cplusplus } #endif #endif /* _SYS_DBUF_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_vnops.h0000644000000000000000000000007413607166147020067 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.670432049 zfs-0.8.3/include/sys/zfs_vnops.h0000644016037001603700000000752113607166147020071 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_FS_ZFS_VNOPS_H #define _SYS_FS_ZFS_VNOPS_H #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif extern int zfs_open(struct inode *ip, int mode, int flag, cred_t *cr); extern int zfs_close(struct inode *ip, int flag, cred_t *cr); extern int zfs_holey(struct inode *ip, int cmd, loff_t *off); extern int zfs_read(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr); extern int zfs_write(struct inode *ip, uio_t *uio, int ioflag, cred_t *cr); extern int zfs_access(struct inode *ip, int mode, int flag, cred_t *cr); extern int zfs_lookup(struct inode *dip, char *nm, struct inode **ipp, int flags, cred_t *cr, int *direntflags, pathname_t *realpnp); extern int zfs_create(struct inode *dip, char *name, vattr_t *vap, int excl, int mode, struct inode **ipp, cred_t *cr, int flag, vsecattr_t *vsecp); extern int zfs_tmpfile(struct inode *dip, vattr_t *vap, int excl, int mode, struct inode **ipp, cred_t *cr, int flag, vsecattr_t *vsecp); extern int zfs_remove(struct inode *dip, char *name, cred_t *cr, int flags); extern int zfs_mkdir(struct inode *dip, char *dirname, vattr_t *vap, struct inode **ipp, cred_t *cr, int flags, vsecattr_t *vsecp); extern int zfs_rmdir(struct inode *dip, char *name, struct inode *cwd, cred_t *cr, int flags); extern int zfs_readdir(struct inode *ip, zpl_dir_context_t *ctx, cred_t *cr); extern int zfs_fsync(struct inode *ip, int syncflag, cred_t *cr); extern int zfs_getattr(struct inode *ip, vattr_t *vap, int flag, cred_t *cr); extern int zfs_getattr_fast(struct inode *ip, struct kstat *sp); extern int zfs_setattr(struct inode *ip, vattr_t *vap, int flag, cred_t *cr); extern int zfs_rename(struct inode *sdip, char *snm, struct inode *tdip, char *tnm, cred_t *cr, int flags); extern int zfs_symlink(struct inode *dip, char *name, vattr_t *vap, char *link, struct inode **ipp, cred_t *cr, int flags); extern int zfs_readlink(struct inode *ip, uio_t *uio, cred_t *cr); extern int zfs_link(struct inode *tdip, struct inode *sip, char *name, cred_t *cr, int flags); extern void zfs_inactive(struct inode *ip); extern int zfs_space(struct inode *ip, int cmd, flock64_t *bfp, int flag, offset_t offset, cred_t *cr); extern int zfs_fid(struct inode *ip, fid_t *fidp); extern int zfs_getsecattr(struct inode *ip, vsecattr_t *vsecp, int flag, cred_t *cr); extern int zfs_setsecattr(struct inode *ip, vsecattr_t *vsecp, int flag, cred_t *cr); extern int zfs_getpage(struct inode *ip, struct page *pl[], int nr_pages); extern int zfs_putpage(struct inode *ip, struct page *pp, struct writeback_control *wbc); extern int zfs_dirty_inode(struct inode *ip, int flags); extern int zfs_map(struct inode *ip, offset_t off, caddr_t *addrp, size_t len, unsigned long vm_flags); extern void zfs_iput_async(struct inode *ip); #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_VNOPS_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfs_acl.h0000644000000000000000000000007413612141513017443 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.638431022 zfs-0.8.3/include/sys/zfs_acl.h0000644016037001603700000002012013612141513017433 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ #ifndef _SYS_FS_ZFS_ACL_H #define _SYS_FS_ZFS_ACL_H #ifdef _KERNEL #include #include #include #endif #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct znode_phys; #define ACE_SLOT_CNT 6 #define ZFS_ACL_VERSION_INITIAL 0ULL #define ZFS_ACL_VERSION_FUID 1ULL #define ZFS_ACL_VERSION ZFS_ACL_VERSION_FUID /* * ZFS ACLs (Access Control Lists) are stored in various forms. * * Files created with ACL version ZFS_ACL_VERSION_INITIAL * will all be created with fixed length ACEs of type * zfs_oldace_t. * * Files with ACL version ZFS_ACL_VERSION_FUID will be created * with various sized ACEs. The abstraction entries will utilize * zfs_ace_hdr_t, normal user/group entries will use zfs_ace_t * and some specialized CIFS ACEs will use zfs_object_ace_t. */ /* * All ACEs have a common hdr. For * owner@, group@, and everyone@ this is all * that's needed. */ typedef struct zfs_ace_hdr { uint16_t z_type; uint16_t z_flags; uint32_t z_access_mask; } zfs_ace_hdr_t; typedef zfs_ace_hdr_t zfs_ace_abstract_t; /* * Standard ACE */ typedef struct zfs_ace { zfs_ace_hdr_t z_hdr; uint64_t z_fuid; } zfs_ace_t; /* * The following type only applies to ACE_ACCESS_ALLOWED|DENIED_OBJECT_ACE_TYPE * and will only be set/retrieved in a CIFS context. */ typedef struct zfs_object_ace { zfs_ace_t z_ace; uint8_t z_object_type[16]; /* object type */ uint8_t z_inherit_type[16]; /* inherited object type */ } zfs_object_ace_t; typedef struct zfs_oldace { uint32_t z_fuid; /* "who" */ uint32_t z_access_mask; /* access mask */ uint16_t z_flags; /* flags, i.e inheritance */ uint16_t z_type; /* type of entry allow/deny */ } zfs_oldace_t; typedef struct zfs_acl_phys_v0 { uint64_t z_acl_extern_obj; /* ext acl pieces */ uint32_t z_acl_count; /* Number of ACEs */ uint16_t z_acl_version; /* acl version */ uint16_t z_acl_pad; /* pad */ zfs_oldace_t z_ace_data[ACE_SLOT_CNT]; /* 6 standard ACEs */ } zfs_acl_phys_v0_t; #define ZFS_ACE_SPACE (sizeof (zfs_oldace_t) * ACE_SLOT_CNT) /* * Size of ACL count is always 2 bytes. * Necessary to for dealing with both V0 ACL and V1 ACL layout */ #define ZFS_ACL_COUNT_SIZE (sizeof (uint16_t)) typedef struct zfs_acl_phys { uint64_t z_acl_extern_obj; /* ext acl pieces */ uint32_t z_acl_size; /* Number of bytes in ACL */ uint16_t z_acl_version; /* acl version */ uint16_t z_acl_count; /* ace count */ uint8_t z_ace_data[ZFS_ACE_SPACE]; /* space for embedded ACEs */ } zfs_acl_phys_t; typedef struct acl_ops { uint32_t (*ace_mask_get) (void *acep); /* get access mask */ void (*ace_mask_set) (void *acep, uint32_t mask); /* set access mask */ uint16_t (*ace_flags_get) (void *acep); /* get flags */ void (*ace_flags_set) (void *acep, uint16_t flags); /* set flags */ uint16_t (*ace_type_get)(void *acep); /* get type */ void (*ace_type_set)(void *acep, uint16_t type); /* set type */ uint64_t (*ace_who_get)(void *acep); /* get who/fuid */ void (*ace_who_set)(void *acep, uint64_t who); /* set who/fuid */ size_t (*ace_size)(void *acep); /* how big is this ace */ size_t (*ace_abstract_size)(void); /* sizeof abstract entry */ int (*ace_mask_off)(void); /* off of access mask in ace */ /* ptr to data if any */ int (*ace_data)(void *acep, void **datap); } acl_ops_t; /* * A zfs_acl_t structure is composed of a list of zfs_acl_node_t's. * Each node will have one or more ACEs associated with it. You will * only have multiple nodes during a chmod operation. Normally only * one node is required. */ typedef struct zfs_acl_node { list_node_t z_next; /* Next chunk of ACEs */ void *z_acldata; /* pointer into actual ACE(s) */ void *z_allocdata; /* pointer to kmem allocated memory */ size_t z_allocsize; /* Size of blob in bytes */ size_t z_size; /* length of ACL data */ uint64_t z_ace_count; /* number of ACEs in this acl node */ int z_ace_idx; /* ace iterator positioned on */ } zfs_acl_node_t; typedef struct zfs_acl { uint64_t z_acl_count; /* Number of ACEs */ size_t z_acl_bytes; /* Number of bytes in ACL */ uint_t z_version; /* version of ACL */ void *z_next_ace; /* pointer to next ACE */ uint64_t z_hints; /* ACL hints (ZFS_INHERIT_ACE ...) */ zfs_acl_node_t *z_curr_node; /* current node iterator is handling */ list_t z_acl; /* chunks of ACE data */ acl_ops_t *z_ops; /* ACL operations */ } zfs_acl_t; typedef struct acl_locator_cb { zfs_acl_t *cb_aclp; zfs_acl_node_t *cb_acl_node; } zfs_acl_locator_cb_t; #define ACL_DATA_ALLOCED 0x1 #define ZFS_ACL_SIZE(aclcnt) (sizeof (ace_t) * (aclcnt)) struct zfs_fuid_info; typedef struct zfs_acl_ids { uint64_t z_fuid; /* file owner fuid */ uint64_t z_fgid; /* file group owner fuid */ uint64_t z_mode; /* mode to set on create */ zfs_acl_t *z_aclp; /* ACL to create with file */ struct zfs_fuid_info *z_fuidp; /* for tracking fuids for log */ } zfs_acl_ids_t; /* * Property values for acl_mode and acl_inherit. * * acl_mode can take discard, noallow, groupmask and passthrough. * whereas acl_inherit has secure instead of groupmask. */ #define ZFS_ACL_DISCARD 0 #define ZFS_ACL_NOALLOW 1 #define ZFS_ACL_GROUPMASK 2 #define ZFS_ACL_PASSTHROUGH 3 #define ZFS_ACL_RESTRICTED 4 #define ZFS_ACL_PASSTHROUGH_X 5 struct znode; struct zfsvfs; #ifdef _KERNEL int zfs_acl_ids_create(struct znode *, int, vattr_t *, cred_t *, vsecattr_t *, zfs_acl_ids_t *); void zfs_acl_ids_free(zfs_acl_ids_t *); boolean_t zfs_acl_ids_overquota(struct zfsvfs *, zfs_acl_ids_t *, uint64_t); int zfs_getacl(struct znode *, vsecattr_t *, boolean_t, cred_t *); int zfs_setacl(struct znode *, vsecattr_t *, boolean_t, cred_t *); void zfs_acl_rele(void *); void zfs_oldace_byteswap(ace_t *, int); void zfs_ace_byteswap(void *, size_t, boolean_t); extern boolean_t zfs_has_access(struct znode *zp, cred_t *cr); extern int zfs_zaccess(struct znode *, int, int, boolean_t, cred_t *); int zfs_fastaccesschk_execute(struct znode *, cred_t *); extern int zfs_zaccess_rwx(struct znode *, mode_t, int, cred_t *); extern int zfs_zaccess_unix(struct znode *, mode_t, cred_t *); extern int zfs_acl_access(struct znode *, int, cred_t *); void zfs_acl_chmod_setattr(struct znode *, zfs_acl_t **, uint64_t); int zfs_zaccess_delete(struct znode *, struct znode *, cred_t *); int zfs_zaccess_rename(struct znode *, struct znode *, struct znode *, struct znode *, cred_t *cr); void zfs_acl_free(zfs_acl_t *); int zfs_vsec_2_aclp(struct zfsvfs *, umode_t, vsecattr_t *, cred_t *, struct zfs_fuid_info **, zfs_acl_t **); int zfs_aclset_common(struct znode *, zfs_acl_t *, cred_t *, dmu_tx_t *); uint64_t zfs_external_acl(struct znode *); int zfs_znode_acl_version(struct znode *); int zfs_acl_size(struct znode *, int *); zfs_acl_t *zfs_acl_alloc(int); zfs_acl_node_t *zfs_acl_node_alloc(size_t); void zfs_acl_xform(struct znode *, zfs_acl_t *, cred_t *); void zfs_acl_data_locator(void **, uint32_t *, uint32_t, boolean_t, void *); uint64_t zfs_mode_compute(uint64_t, zfs_acl_t *, uint64_t *, uint64_t, uint64_t); int zfs_acl_node_read(struct znode *, boolean_t, zfs_acl_t **, boolean_t); int zfs_acl_chown_setattr(struct znode *); #endif #ifdef __cplusplus } #endif #endif /* _SYS_FS_ZFS_ACL_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/spa_boot.h0000644000000000000000000000007413607166132017640 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.522427298 zfs-0.8.3/include/sys/spa_boot.h0000644016037001603700000000224213607166132017635 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _SYS_SPA_BOOT_H #define _SYS_SPA_BOOT_H #include #ifdef __cplusplus extern "C" { #endif extern char *spa_get_bootprop(char *prop); extern void spa_free_bootprop(char *prop); #ifdef __cplusplus } #endif #endif /* _SYS_SPA_BOOT_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/dsl_dataset.h0000644000000000000000000000007413607166147020327 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.448424921 zfs-0.8.3/include/sys/dsl_dataset.h0000644016037001603700000004272113607166147020332 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2018 by Delphix. All rights reserved. * Copyright (c) 2013 Steven Hartland. All rights reserved. * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved. */ #ifndef _SYS_DSL_DATASET_H #define _SYS_DSL_DATASET_H #include #include #include #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct dsl_dataset; struct dsl_dir; struct dsl_pool; struct dsl_crypto_params; struct dsl_key_mapping; #define DS_FLAG_INCONSISTENT (1ULL<<0) #define DS_IS_INCONSISTENT(ds) \ (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_INCONSISTENT) /* * Do not allow this dataset to be promoted. */ #define DS_FLAG_NOPROMOTE (1ULL<<1) /* * DS_FLAG_UNIQUE_ACCURATE is set if ds_unique_bytes has been correctly * calculated for head datasets (starting with SPA_VERSION_UNIQUE_ACCURATE, * refquota/refreservations). */ #define DS_FLAG_UNIQUE_ACCURATE (1ULL<<2) /* * DS_FLAG_DEFER_DESTROY is set after 'zfs destroy -d' has been called * on a dataset. This allows the dataset to be destroyed using 'zfs release'. */ #define DS_FLAG_DEFER_DESTROY (1ULL<<3) #define DS_IS_DEFER_DESTROY(ds) \ (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_DEFER_DESTROY) /* * DS_FIELD_* are strings that are used in the "extensified" dataset zap object. * They should be of the format :. */ /* * This field's value is the object ID of a zap object which contains the * bookmarks of this dataset. If it is present, then this dataset is counted * in the refcount of the SPA_FEATURES_BOOKMARKS feature. */ #define DS_FIELD_BOOKMARK_NAMES "com.delphix:bookmarks" /* * This field is present (with value=0) if this dataset may contain large * dnodes (>512B). If it is present, then this dataset is counted in the * refcount of the SPA_FEATURE_LARGE_DNODE feature. */ #define DS_FIELD_LARGE_DNODE "org.zfsonlinux:large_dnode" /* * These fields are set on datasets that are in the middle of a resumable * receive, and allow the sender to resume the send if it is interrupted. */ #define DS_FIELD_RESUME_FROMGUID "com.delphix:resume_fromguid" #define DS_FIELD_RESUME_TONAME "com.delphix:resume_toname" #define DS_FIELD_RESUME_TOGUID "com.delphix:resume_toguid" #define DS_FIELD_RESUME_OBJECT "com.delphix:resume_object" #define DS_FIELD_RESUME_OFFSET "com.delphix:resume_offset" #define DS_FIELD_RESUME_BYTES "com.delphix:resume_bytes" #define DS_FIELD_RESUME_LARGEBLOCK "com.delphix:resume_largeblockok" #define DS_FIELD_RESUME_EMBEDOK "com.delphix:resume_embedok" #define DS_FIELD_RESUME_COMPRESSOK "com.delphix:resume_compressok" #define DS_FIELD_RESUME_RAWOK "com.datto:resume_rawok" /* * This field is set to the object number of the remap deadlist if one exists. */ #define DS_FIELD_REMAP_DEADLIST "com.delphix:remap_deadlist" /* * This field is set to the ivset guid for encrypted snapshots. This is used * for validating raw receives. */ #define DS_FIELD_IVSET_GUID "com.datto:ivset_guid" /* * DS_FLAG_CI_DATASET is set if the dataset contains a file system whose * name lookups should be performed case-insensitively. */ #define DS_FLAG_CI_DATASET (1ULL<<16) #define DS_CREATE_FLAG_NODIRTY (1ULL<<24) typedef struct dsl_dataset_phys { uint64_t ds_dir_obj; /* DMU_OT_DSL_DIR */ uint64_t ds_prev_snap_obj; /* DMU_OT_DSL_DATASET */ uint64_t ds_prev_snap_txg; uint64_t ds_next_snap_obj; /* DMU_OT_DSL_DATASET */ uint64_t ds_snapnames_zapobj; /* DMU_OT_DSL_DS_SNAP_MAP 0 for snaps */ uint64_t ds_num_children; /* clone/snap children; ==0 for head */ uint64_t ds_creation_time; /* seconds since 1970 */ uint64_t ds_creation_txg; uint64_t ds_deadlist_obj; /* DMU_OT_DEADLIST */ /* * ds_referenced_bytes, ds_compressed_bytes, and ds_uncompressed_bytes * include all blocks referenced by this dataset, including those * shared with any other datasets. */ uint64_t ds_referenced_bytes; uint64_t ds_compressed_bytes; uint64_t ds_uncompressed_bytes; uint64_t ds_unique_bytes; /* only relevant to snapshots */ /* * The ds_fsid_guid is a 56-bit ID that can change to avoid * collisions. The ds_guid is a 64-bit ID that will never * change, so there is a small probability that it will collide. */ uint64_t ds_fsid_guid; uint64_t ds_guid; uint64_t ds_flags; /* DS_FLAG_* */ blkptr_t ds_bp; uint64_t ds_next_clones_obj; /* DMU_OT_DSL_CLONES */ uint64_t ds_props_obj; /* DMU_OT_DSL_PROPS for snaps */ uint64_t ds_userrefs_obj; /* DMU_OT_USERREFS */ uint64_t ds_pad[5]; /* pad out to 320 bytes for good measure */ } dsl_dataset_phys_t; typedef struct dsl_dataset { dmu_buf_user_t ds_dbu; rrwlock_t ds_bp_rwlock; /* Protects ds_phys->ds_bp */ /* Immutable: */ struct dsl_dir *ds_dir; dmu_buf_t *ds_dbuf; uint64_t ds_object; uint64_t ds_fsid_guid; boolean_t ds_is_snapshot; struct dsl_key_mapping *ds_key_mapping; /* only used in syncing context, only valid for non-snapshots: */ struct dsl_dataset *ds_prev; uint64_t ds_bookmarks; /* DMU_OTN_ZAP_METADATA */ /* has internal locking: */ dsl_deadlist_t ds_deadlist; bplist_t ds_pending_deadlist; /* * The remap deadlist contains blocks (DVA's, really) that are * referenced by the previous snapshot and point to indirect vdevs, * but in this dataset they have been remapped to point to concrete * (or at least, less-indirect) vdevs. In other words, the * physical DVA is referenced by the previous snapshot but not by * this dataset. Logically, the DVA continues to be referenced, * but we are using a different (less indirect) physical DVA. * This deadlist is used to determine when physical DVAs that * point to indirect vdevs are no longer referenced anywhere, * and thus should be marked obsolete. * * This is only used if SPA_FEATURE_OBSOLETE_COUNTS is enabled. */ dsl_deadlist_t ds_remap_deadlist; /* protects creation of the ds_remap_deadlist */ kmutex_t ds_remap_deadlist_lock; /* protected by lock on pool's dp_dirty_datasets list */ txg_node_t ds_dirty_link; list_node_t ds_synced_link; /* * ds_phys->ds_ is also protected by ds_lock. * Protected by ds_lock: */ kmutex_t ds_lock; objset_t *ds_objset; uint64_t ds_userrefs; void *ds_owner; /* * Long holds prevent the ds from being destroyed; they allow the * ds to remain held even after dropping the dp_config_rwlock. * Owning counts as a long hold. See the comments above * dsl_pool_hold() for details. */ zfs_refcount_t ds_longholds; /* no locking; only for making guesses */ uint64_t ds_trysnap_txg; /* for objset_open() */ kmutex_t ds_opening_lock; uint64_t ds_reserved; /* cached refreservation */ uint64_t ds_quota; /* cached refquota */ kmutex_t ds_sendstream_lock; list_t ds_sendstreams; /* * When in the middle of a resumable receive, tracks how much * progress we have made. */ uint64_t ds_resume_object[TXG_SIZE]; uint64_t ds_resume_offset[TXG_SIZE]; uint64_t ds_resume_bytes[TXG_SIZE]; /* Protected by our dsl_dir's dd_lock */ list_t ds_prop_cbs; /* * For ZFEATURE_FLAG_PER_DATASET features, set if this dataset * uses this feature. */ void *ds_feature[SPA_FEATURES]; /* * Set if we need to activate the feature on this dataset this txg * (used only in syncing context). */ void *ds_feature_activation[SPA_FEATURES]; /* Protected by ds_lock; keep at end of struct for better locality */ char ds_snapname[ZFS_MAX_DATASET_NAME_LEN]; } dsl_dataset_t; static inline dsl_dataset_phys_t * dsl_dataset_phys(dsl_dataset_t *ds) { return (ds->ds_dbuf->db_data); } typedef struct dsl_dataset_promote_arg { const char *ddpa_clonename; dsl_dataset_t *ddpa_clone; list_t shared_snaps, origin_snaps, clone_snaps; dsl_dataset_t *origin_origin; /* origin of the origin */ uint64_t used, comp, uncomp, unique, cloneusedsnap, originusedsnap; nvlist_t *err_ds; cred_t *cr; } dsl_dataset_promote_arg_t; typedef struct dsl_dataset_rollback_arg { const char *ddra_fsname; const char *ddra_tosnap; void *ddra_owner; nvlist_t *ddra_result; } dsl_dataset_rollback_arg_t; typedef struct dsl_dataset_snapshot_arg { nvlist_t *ddsa_snaps; nvlist_t *ddsa_props; nvlist_t *ddsa_errors; cred_t *ddsa_cr; } dsl_dataset_snapshot_arg_t; /* * The max length of a temporary tag prefix is the number of hex digits * required to express UINT64_MAX plus one for the hyphen. */ #define MAX_TAG_PREFIX_LEN 17 #define dsl_dataset_is_snapshot(ds) \ (dsl_dataset_phys(ds)->ds_num_children != 0) #define DS_UNIQUE_IS_ACCURATE(ds) \ ((dsl_dataset_phys(ds)->ds_flags & DS_FLAG_UNIQUE_ACCURATE) != 0) /* flags for holding the dataset */ typedef enum ds_hold_flags { DS_HOLD_FLAG_DECRYPT = 1 << 0 /* needs access to encrypted data */ } ds_hold_flags_t; int dsl_dataset_hold(struct dsl_pool *dp, const char *name, void *tag, dsl_dataset_t **dsp); int dsl_dataset_hold_flags(struct dsl_pool *dp, const char *name, ds_hold_flags_t flags, void *tag, dsl_dataset_t **dsp); boolean_t dsl_dataset_try_add_ref(struct dsl_pool *dp, dsl_dataset_t *ds, void *tag); int dsl_dataset_create_key_mapping(dsl_dataset_t *ds); int dsl_dataset_hold_obj(struct dsl_pool *dp, uint64_t dsobj, void *tag, dsl_dataset_t **); int dsl_dataset_hold_obj_flags(struct dsl_pool *dp, uint64_t dsobj, ds_hold_flags_t flags, void *tag, dsl_dataset_t **); void dsl_dataset_remove_key_mapping(dsl_dataset_t *ds); void dsl_dataset_rele(dsl_dataset_t *ds, void *tag); void dsl_dataset_rele_flags(dsl_dataset_t *ds, ds_hold_flags_t flags, void *tag); int dsl_dataset_own(struct dsl_pool *dp, const char *name, ds_hold_flags_t flags, void *tag, dsl_dataset_t **dsp); int dsl_dataset_own_obj(struct dsl_pool *dp, uint64_t dsobj, ds_hold_flags_t flags, void *tag, dsl_dataset_t **dsp); void dsl_dataset_disown(dsl_dataset_t *ds, ds_hold_flags_t flags, void *tag); void dsl_dataset_name(dsl_dataset_t *ds, char *name); int dsl_dataset_namelen(dsl_dataset_t *ds); boolean_t dsl_dataset_has_owner(dsl_dataset_t *ds); boolean_t dsl_dataset_tryown(dsl_dataset_t *ds, void *tag); uint64_t dsl_dataset_create_sync(dsl_dir_t *pds, const char *lastname, dsl_dataset_t *origin, uint64_t flags, cred_t *, struct dsl_crypto_params *, dmu_tx_t *); uint64_t dsl_dataset_create_sync_dd(dsl_dir_t *dd, dsl_dataset_t *origin, struct dsl_crypto_params *dcp, uint64_t flags, dmu_tx_t *tx); void dsl_dataset_snapshot_sync(void *arg, dmu_tx_t *tx); int dsl_dataset_snapshot_check(void *arg, dmu_tx_t *tx); int dsl_dataset_snapshot(nvlist_t *snaps, nvlist_t *props, nvlist_t *errors); void dsl_dataset_promote_sync(void *arg, dmu_tx_t *tx); int dsl_dataset_promote_check(void *arg, dmu_tx_t *tx); int dsl_dataset_promote(const char *name, char *conflsnap); int dsl_dataset_rename_snapshot(const char *fsname, const char *oldsnapname, const char *newsnapname, boolean_t recursive); int dsl_dataset_snapshot_tmp(const char *fsname, const char *snapname, minor_t cleanup_minor, const char *htag); blkptr_t *dsl_dataset_get_blkptr(dsl_dataset_t *ds); spa_t *dsl_dataset_get_spa(dsl_dataset_t *ds); boolean_t dsl_dataset_modified_since_snap(dsl_dataset_t *ds, dsl_dataset_t *snap); void dsl_dataset_sync(dsl_dataset_t *ds, zio_t *zio, dmu_tx_t *tx); void dsl_dataset_sync_done(dsl_dataset_t *ds, dmu_tx_t *tx); void dsl_dataset_block_born(dsl_dataset_t *ds, const blkptr_t *bp, dmu_tx_t *tx); int dsl_dataset_block_kill(dsl_dataset_t *ds, const blkptr_t *bp, dmu_tx_t *tx, boolean_t async); void dsl_dataset_block_remapped(dsl_dataset_t *ds, uint64_t vdev, uint64_t offset, uint64_t size, uint64_t birth, dmu_tx_t *tx); int dsl_dataset_snap_lookup(dsl_dataset_t *ds, const char *name, uint64_t *value); void dsl_dataset_dirty(dsl_dataset_t *ds, dmu_tx_t *tx); int get_clones_stat_impl(dsl_dataset_t *ds, nvlist_t *val); char *get_receive_resume_stats_impl(dsl_dataset_t *ds); char *get_child_receive_stats(dsl_dataset_t *ds); uint64_t dsl_get_refratio(dsl_dataset_t *ds); uint64_t dsl_get_logicalreferenced(dsl_dataset_t *ds); uint64_t dsl_get_compressratio(dsl_dataset_t *ds); uint64_t dsl_get_used(dsl_dataset_t *ds); uint64_t dsl_get_creation(dsl_dataset_t *ds); uint64_t dsl_get_creationtxg(dsl_dataset_t *ds); uint64_t dsl_get_refquota(dsl_dataset_t *ds); uint64_t dsl_get_refreservation(dsl_dataset_t *ds); uint64_t dsl_get_guid(dsl_dataset_t *ds); uint64_t dsl_get_unique(dsl_dataset_t *ds); uint64_t dsl_get_objsetid(dsl_dataset_t *ds); uint64_t dsl_get_userrefs(dsl_dataset_t *ds); uint64_t dsl_get_defer_destroy(dsl_dataset_t *ds); uint64_t dsl_get_referenced(dsl_dataset_t *ds); uint64_t dsl_get_numclones(dsl_dataset_t *ds); uint64_t dsl_get_inconsistent(dsl_dataset_t *ds); uint64_t dsl_get_available(dsl_dataset_t *ds); int dsl_get_written(dsl_dataset_t *ds, uint64_t *written); int dsl_get_prev_snap(dsl_dataset_t *ds, char *snap); int dsl_get_mountpoint(dsl_dataset_t *ds, const char *dsname, char *value, char *source); void get_clones_stat(dsl_dataset_t *ds, nvlist_t *nv); void dsl_dataset_stats(dsl_dataset_t *os, nvlist_t *nv); void dsl_dataset_fast_stat(dsl_dataset_t *ds, dmu_objset_stats_t *stat); void dsl_dataset_space(dsl_dataset_t *ds, uint64_t *refdbytesp, uint64_t *availbytesp, uint64_t *usedobjsp, uint64_t *availobjsp); uint64_t dsl_dataset_fsid_guid(dsl_dataset_t *ds); int dsl_dataset_space_written(dsl_dataset_t *oldsnap, dsl_dataset_t *new, uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); int dsl_dataset_space_wouldfree(dsl_dataset_t *firstsnap, dsl_dataset_t *last, uint64_t *usedp, uint64_t *compp, uint64_t *uncompp); int dsl_dsobj_to_dsname(char *pname, uint64_t obj, char *buf); int dsl_dataset_check_quota(dsl_dataset_t *ds, boolean_t check_quota, uint64_t asize, uint64_t inflight, uint64_t *used, uint64_t *ref_rsrv); int dsl_dataset_set_refquota(const char *dsname, zprop_source_t source, uint64_t quota); int dsl_dataset_set_refreservation(const char *dsname, zprop_source_t source, uint64_t reservation); boolean_t dsl_dataset_is_before(dsl_dataset_t *later, dsl_dataset_t *earlier, uint64_t earlier_txg); void dsl_dataset_long_hold(dsl_dataset_t *ds, void *tag); void dsl_dataset_long_rele(dsl_dataset_t *ds, void *tag); boolean_t dsl_dataset_long_held(dsl_dataset_t *ds); int dsl_dataset_clone_swap_check_impl(dsl_dataset_t *clone, dsl_dataset_t *origin_head, boolean_t force, void *owner, dmu_tx_t *tx); void dsl_dataset_clone_swap_sync_impl(dsl_dataset_t *clone, dsl_dataset_t *origin_head, dmu_tx_t *tx); int dsl_dataset_snapshot_check_impl(dsl_dataset_t *ds, const char *snapname, dmu_tx_t *tx, boolean_t recv, uint64_t cnt, cred_t *cr); void dsl_dataset_snapshot_sync_impl(dsl_dataset_t *ds, const char *snapname, dmu_tx_t *tx); void dsl_dataset_remove_from_next_clones(dsl_dataset_t *ds, uint64_t obj, dmu_tx_t *tx); void dsl_dataset_recalc_head_uniq(dsl_dataset_t *ds); int dsl_dataset_get_snapname(dsl_dataset_t *ds); int dsl_dataset_snap_lookup(dsl_dataset_t *ds, const char *name, uint64_t *value); int dsl_dataset_snap_remove(dsl_dataset_t *ds, const char *name, dmu_tx_t *tx, boolean_t adj_cnt); void dsl_dataset_set_refreservation_sync_impl(dsl_dataset_t *ds, zprop_source_t source, uint64_t value, dmu_tx_t *tx); void dsl_dataset_zapify(dsl_dataset_t *ds, dmu_tx_t *tx); boolean_t dsl_dataset_is_zapified(dsl_dataset_t *ds); boolean_t dsl_dataset_has_resume_receive_state(dsl_dataset_t *ds); int dsl_dataset_rollback_check(void *arg, dmu_tx_t *tx); void dsl_dataset_rollback_sync(void *arg, dmu_tx_t *tx); int dsl_dataset_rollback(const char *fsname, const char *tosnap, void *owner, nvlist_t *result); uint64_t dsl_dataset_get_remap_deadlist_object(dsl_dataset_t *ds); void dsl_dataset_create_remap_deadlist(dsl_dataset_t *ds, dmu_tx_t *tx); boolean_t dsl_dataset_remap_deadlist_exists(dsl_dataset_t *ds); void dsl_dataset_destroy_remap_deadlist(dsl_dataset_t *ds, dmu_tx_t *tx); void dsl_dataset_activate_feature(uint64_t dsobj, spa_feature_t f, void *arg, dmu_tx_t *tx); void dsl_dataset_deactivate_feature(dsl_dataset_t *ds, spa_feature_t f, dmu_tx_t *tx); boolean_t dsl_dataset_feature_is_active(dsl_dataset_t *ds, spa_feature_t f); boolean_t dsl_dataset_get_uint64_array_feature(dsl_dataset_t *ds, spa_feature_t f, uint64_t *outlength, uint64_t **outp); #ifdef ZFS_DEBUG #define dprintf_ds(ds, fmt, ...) do { \ if (zfs_flags & ZFS_DEBUG_DPRINTF) { \ char *__ds_name = kmem_alloc(ZFS_MAX_DATASET_NAME_LEN, KM_SLEEP); \ dsl_dataset_name(ds, __ds_name); \ dprintf("ds=%s " fmt, __ds_name, __VA_ARGS__); \ kmem_free(__ds_name, ZFS_MAX_DATASET_NAME_LEN); \ } \ _NOTE(CONSTCOND) } while (0) #else #define dprintf_ds(dd, fmt, ...) #endif #ifdef __cplusplus } #endif #endif /* _SYS_DSL_DATASET_H */ zfs-0.8.3/include/sys/PaxHeaders.151519/zfeature.h0000644000000000000000000000007413607166132017657 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.636430958 zfs-0.8.3/include/sys/zfeature.h0000644016037001603700000000465513607166132017666 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2013 by Delphix. All rights reserved. */ #ifndef _SYS_ZFEATURE_H #define _SYS_ZFEATURE_H #include #include #include "zfeature_common.h" #ifdef __cplusplus extern "C" { #endif #define VALID_FEATURE_FID(fid) ((fid) >= 0 && (fid) < SPA_FEATURES) #define VALID_FEATURE_OR_NONE(fid) ((fid) == SPA_FEATURE_NONE || \ VALID_FEATURE_FID(fid)) struct spa; struct dmu_tx; struct objset; extern void spa_feature_create_zap_objects(struct spa *, struct dmu_tx *); extern void spa_feature_enable(struct spa *, spa_feature_t, struct dmu_tx *); extern void spa_feature_incr(struct spa *, spa_feature_t, struct dmu_tx *); extern void spa_feature_decr(struct spa *, spa_feature_t, struct dmu_tx *); extern boolean_t spa_feature_is_enabled(struct spa *, spa_feature_t); extern boolean_t spa_feature_is_active(struct spa *, spa_feature_t); extern boolean_t spa_feature_enabled_txg(spa_t *spa, spa_feature_t fid, uint64_t *txg); extern uint64_t spa_feature_refcount(spa_t *, spa_feature_t, uint64_t); extern boolean_t spa_features_check(spa_t *, boolean_t, nvlist_t *, nvlist_t *); /* * These functions are only exported for zhack and zdb; normal callers should * use the above interfaces. */ extern int feature_get_refcount(struct spa *, zfeature_info_t *, uint64_t *); extern int feature_get_refcount_from_disk(spa_t *spa, zfeature_info_t *feature, uint64_t *res); extern void feature_enable_sync(struct spa *, zfeature_info_t *, struct dmu_tx *); extern void feature_sync(struct spa *, zfeature_info_t *, uint64_t, struct dmu_tx *); #ifdef __cplusplus } #endif #endif /* _SYS_ZFEATURE_H */ zfs-0.8.3/include/PaxHeaders.151519/zfs_fletcher.h0000644000000000000000000000007413607166147017700 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.900407325 zfs-0.8.3/include/zfs_fletcher.h0000644016037001603700000001115313607166147017676 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright 2013 Saso Kiselkov. All rights reserved. */ #ifndef _ZFS_FLETCHER_H #define _ZFS_FLETCHER_H #include #include #ifdef __cplusplus extern "C" { #endif /* * fletcher checksum functions * * Note: Fletcher checksum methods expect buffer size to be 4B aligned. This * limitation stems from the algorithm design. Performing incremental checksum * without said alignment would yield different results. Therefore, the code * includes assertions for the size alignment. * For compatibility, it is required that some code paths calculate checksum of * non-aligned buffer sizes. For this purpose, `fletcher_4_native_varsize()` * checksum method is added. This method will ignore last (size % 4) bytes of * the data buffer. */ void fletcher_init(zio_cksum_t *); void fletcher_2_native(const void *, uint64_t, const void *, zio_cksum_t *); void fletcher_2_byteswap(const void *, uint64_t, const void *, zio_cksum_t *); void fletcher_4_native(const void *, uint64_t, const void *, zio_cksum_t *); int fletcher_2_incremental_native(void *, size_t, void *); int fletcher_2_incremental_byteswap(void *, size_t, void *); void fletcher_4_native_varsize(const void *, uint64_t, zio_cksum_t *); void fletcher_4_byteswap(const void *, uint64_t, const void *, zio_cksum_t *); int fletcher_4_incremental_native(void *, size_t, void *); int fletcher_4_incremental_byteswap(void *, size_t, void *); int fletcher_4_impl_set(const char *selector); void fletcher_4_init(void); void fletcher_4_fini(void); /* Internal fletcher ctx */ typedef struct zfs_fletcher_superscalar { uint64_t v[4]; } zfs_fletcher_superscalar_t; typedef struct zfs_fletcher_sse { uint64_t v[2] __attribute__((aligned(16))); } zfs_fletcher_sse_t; typedef struct zfs_fletcher_avx { uint64_t v[4] __attribute__((aligned(32))); } zfs_fletcher_avx_t; typedef struct zfs_fletcher_avx512 { uint64_t v[8] __attribute__((aligned(64))); } zfs_fletcher_avx512_t; typedef struct zfs_fletcher_aarch64_neon { uint64_t v[2] __attribute__((aligned(16))); } zfs_fletcher_aarch64_neon_t; typedef union fletcher_4_ctx { zio_cksum_t scalar; zfs_fletcher_superscalar_t superscalar[4]; #if defined(HAVE_SSE2) || (defined(HAVE_SSE2) && defined(HAVE_SSSE3)) zfs_fletcher_sse_t sse[4]; #endif #if defined(HAVE_AVX) && defined(HAVE_AVX2) zfs_fletcher_avx_t avx[4]; #endif #if defined(__x86_64) && defined(HAVE_AVX512F) zfs_fletcher_avx512_t avx512[4]; #endif #if defined(__aarch64__) zfs_fletcher_aarch64_neon_t aarch64_neon[4]; #endif } fletcher_4_ctx_t; /* * fletcher checksum struct */ typedef void (*fletcher_4_init_f)(fletcher_4_ctx_t *); typedef void (*fletcher_4_fini_f)(fletcher_4_ctx_t *, zio_cksum_t *); typedef void (*fletcher_4_compute_f)(fletcher_4_ctx_t *, const void *, uint64_t); typedef struct fletcher_4_func { fletcher_4_init_f init_native; fletcher_4_fini_f fini_native; fletcher_4_compute_f compute_native; fletcher_4_init_f init_byteswap; fletcher_4_fini_f fini_byteswap; fletcher_4_compute_f compute_byteswap; boolean_t (*valid)(void); const char *name; } fletcher_4_ops_t; extern const fletcher_4_ops_t fletcher_4_superscalar_ops; extern const fletcher_4_ops_t fletcher_4_superscalar4_ops; #if defined(HAVE_SSE2) extern const fletcher_4_ops_t fletcher_4_sse2_ops; #endif #if defined(HAVE_SSE2) && defined(HAVE_SSSE3) extern const fletcher_4_ops_t fletcher_4_ssse3_ops; #endif #if defined(HAVE_AVX) && defined(HAVE_AVX2) extern const fletcher_4_ops_t fletcher_4_avx2_ops; #endif #if defined(__x86_64) && defined(HAVE_AVX512F) extern const fletcher_4_ops_t fletcher_4_avx512f_ops; #endif #if defined(__aarch64__) extern const fletcher_4_ops_t fletcher_4_aarch64_neon_ops; #endif #ifdef __cplusplus } #endif #endif /* _ZFS_FLETCHER_H */ zfs-0.8.3/include/PaxHeaders.151519/zfs_namecheck.h0000644000000000000000000000007413607166132020014 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.903407421 zfs-0.8.3/include/zfs_namecheck.h0000644016037001603700000000453413607166132020017 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2013, 2016 by Delphix. All rights reserved. */ #ifndef _ZFS_NAMECHECK_H #define _ZFS_NAMECHECK_H #ifdef __cplusplus extern "C" { #endif typedef enum { NAME_ERR_LEADING_SLASH, /* name begins with leading slash */ NAME_ERR_EMPTY_COMPONENT, /* name contains an empty component */ NAME_ERR_TRAILING_SLASH, /* name ends with a slash */ NAME_ERR_INVALCHAR, /* invalid character found */ NAME_ERR_MULTIPLE_DELIMITERS, /* multiple '@'/'#' delimiters found */ NAME_ERR_NOLETTER, /* pool doesn't begin with a letter */ NAME_ERR_RESERVED, /* entire name is reserved */ NAME_ERR_DISKLIKE, /* reserved disk name (c[0-9].*) */ NAME_ERR_TOOLONG, /* name is too long */ NAME_ERR_SELF_REF, /* reserved self path name ('.') */ NAME_ERR_PARENT_REF, /* reserved parent path name ('..') */ NAME_ERR_NO_AT, /* permission set is missing '@' */ } namecheck_err_t; #define ZFS_PERMSET_MAXLEN 64 extern int zfs_max_dataset_nesting; int get_dataset_depth(const char *); int pool_namecheck(const char *, namecheck_err_t *, char *); int entity_namecheck(const char *, namecheck_err_t *, char *); int dataset_namecheck(const char *, namecheck_err_t *, char *); int dataset_nestcheck(const char *); int mountpoint_namecheck(const char *, namecheck_err_t *); int zfs_component_namecheck(const char *, namecheck_err_t *, char *); int permset_namecheck(const char *, namecheck_err_t *, char *); #ifdef __cplusplus } #endif #endif /* _ZFS_NAMECHECK_H */ zfs-0.8.3/include/PaxHeaders.151519/linux0000644000000000000000000000013213612143045016112 xustar000000000000000030 mtime=1579730469.022411244 30 atime=1579730489.078055195 30 ctime=1579730469.022411244 zfs-0.8.3/include/linux/0000775016037001603700000000000013612143045016173 5ustar00hutter2hutter200000000000000zfs-0.8.3/include/linux/PaxHeaders.151519/dcache_compat.h0000644000000000000000000000007413607166147021133 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.993410313 zfs-0.8.3/include/linux/dcache_compat.h0000644016037001603700000000477213607166147021142 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2011 Lawrence Livermore National Security, LLC. */ #ifndef _ZFS_DCACHE_H #define _ZFS_DCACHE_H #include #define dname(dentry) ((char *)((dentry)->d_name.name)) #define dlen(dentry) ((int)((dentry)->d_name.len)) #ifndef HAVE_D_MAKE_ROOT #define d_make_root(inode) d_alloc_root(inode) #endif /* HAVE_D_MAKE_ROOT */ /* * 2.6.30 API change, * The const keyword was added to the 'struct dentry_operations' in * the dentry structure. To handle this we define an appropriate * dentry_operations_t typedef which can be used. */ #ifdef HAVE_CONST_DENTRY_OPERATIONS typedef const struct dentry_operations dentry_operations_t; #else typedef struct dentry_operations dentry_operations_t; #endif /* * 2.6.38 API change, * Added d_set_d_op() helper function which sets some flags in * dentry->d_flags based on which operations are defined. */ #ifndef HAVE_D_SET_D_OP static inline void d_set_d_op(struct dentry *dentry, dentry_operations_t *op) { dentry->d_op = op; } #endif /* HAVE_D_SET_D_OP */ /* * 2.6.38 API addition, * Added d_clear_d_op() helper function which clears some flags and the * registered dentry->d_op table. This is required because d_set_d_op() * issues a warning when the dentry operations table is already set. * For the .zfs control directory to work properly we must be able to * override the default operations table and register custom .d_automount * and .d_revalidate callbacks. */ static inline void d_clear_d_op(struct dentry *dentry) { #ifdef HAVE_D_SET_D_OP dentry->d_op = NULL; dentry->d_flags &= ~( DCACHE_OP_HASH | DCACHE_OP_COMPARE | DCACHE_OP_REVALIDATE | DCACHE_OP_DELETE); #endif /* HAVE_D_SET_D_OP */ } #endif /* _ZFS_DCACHE_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/simd_aarch64.h0000644000000000000000000000007413612141515020611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.011410889 zfs-0.8.3/include/linux/simd_aarch64.h0000644016037001603700000000313713612141515020612 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2016 Romain Dolbeau . */ /* * USER API: * * Kernel fpu methods: * kfpu_allowed() * kfpu_begin() * kfpu_end() * kfpu_init() * kfpu_fini() */ #ifndef _SIMD_AARCH64_H #define _SIMD_AARCH64_H #include #if defined(__aarch64__) #include #if defined(_KERNEL) #include #define kfpu_allowed() 1 #define kfpu_begin() kernel_neon_begin() #define kfpu_end() kernel_neon_end() #define kfpu_init() 0 #define kfpu_fini() ((void) 0) #else /* * fpu dummy methods for userspace */ #define kfpu_allowed() 1 #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #define kfpu_init() 0 #define kfpu_fini() ((void) 0) #endif /* defined(_KERNEL) */ #endif /* __aarch64__ */ #endif /* _SIMD_AARCH64_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/kmap_compat.h0000644000000000000000000000007413607166147020654 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.005410697 zfs-0.8.3/include/linux/kmap_compat.h0000644016037001603700000000303713607166147020654 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2015 by Chunwei Chen. All rights reserved. */ #ifndef _ZFS_KMAP_H #define _ZFS_KMAP_H #include #include #ifdef HAVE_1ARG_KMAP_ATOMIC /* 2.6.37 API change */ #define zfs_kmap_atomic(page, km_type) kmap_atomic(page) #define zfs_kunmap_atomic(addr, km_type) kunmap_atomic(addr) #else #define zfs_kmap_atomic(page, km_type) kmap_atomic(page, km_type) #define zfs_kunmap_atomic(addr, km_type) kunmap_atomic(addr, km_type) #endif /* 5.0 API change - no more 'type' argument for access_ok() */ #ifdef HAVE_ACCESS_OK_TYPE #define zfs_access_ok(type, addr, size) access_ok(type, addr, size) #else #define zfs_access_ok(type, addr, size) access_ok(addr, size) #endif #endif /* _ZFS_KMAP_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/simd_x86.h0000644000000000000000000000007413612141515020006 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.009410825 zfs-0.8.3/include/linux/simd_x86.h0000644016037001603700000005070613612141515020013 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2016 Gvozden Neskovic . */ /* * USER API: * * Kernel fpu methods: * kfpu_allowed() * kfpu_begin() * kfpu_end() * kfpu_init() * kfpu_fini() * * SIMD support: * * Following functions should be called to determine whether CPU feature * is supported. All functions are usable in kernel and user space. * If a SIMD algorithm is using more than one instruction set * all relevant feature test functions should be called. * * Supported features: * zfs_sse_available() * zfs_sse2_available() * zfs_sse3_available() * zfs_ssse3_available() * zfs_sse4_1_available() * zfs_sse4_2_available() * * zfs_avx_available() * zfs_avx2_available() * * zfs_bmi1_available() * zfs_bmi2_available() * * zfs_avx512f_available() * zfs_avx512cd_available() * zfs_avx512er_available() * zfs_avx512pf_available() * zfs_avx512bw_available() * zfs_avx512dq_available() * zfs_avx512vl_available() * zfs_avx512ifma_available() * zfs_avx512vbmi_available() * * NOTE(AVX-512VL): If using AVX-512 instructions with 128Bit registers * also add zfs_avx512vl_available() to feature check. */ #ifndef _SIMD_X86_H #define _SIMD_X86_H #include /* only for __x86 */ #if defined(__x86) #include #if defined(_KERNEL) #include #else #include #endif #if defined(_KERNEL) /* * Disable the WARN_ON_FPU() macro to prevent additional dependencies * when providing the kfpu_* functions. Relevant warnings are included * as appropriate and are unconditionally enabled. */ #if defined(CONFIG_X86_DEBUG_FPU) && !defined(KERNEL_EXPORTS_X86_FPU) #undef CONFIG_X86_DEBUG_FPU #endif #if defined(HAVE_KERNEL_FPU_API_HEADER) #include #include #else #include #include #endif /* * The following cases are for kernels which export either the * kernel_fpu_* or __kernel_fpu_* functions. */ #if defined(KERNEL_EXPORTS_X86_FPU) #define kfpu_allowed() 1 #define kfpu_init() 0 #define kfpu_fini() ((void) 0) #if defined(HAVE_UNDERSCORE_KERNEL_FPU) #define kfpu_begin() \ { \ preempt_disable(); \ __kernel_fpu_begin(); \ } #define kfpu_end() \ { \ __kernel_fpu_end(); \ preempt_enable(); \ } #elif defined(HAVE_KERNEL_FPU) #define kfpu_begin() kernel_fpu_begin() #define kfpu_end() kernel_fpu_end() #else /* * This case is unreachable. When KERNEL_EXPORTS_X86_FPU is defined then * either HAVE_UNDERSCORE_KERNEL_FPU or HAVE_KERNEL_FPU must be defined. */ #error "Unreachable kernel configuration" #endif #else /* defined(KERNEL_EXPORTS_X86_FPU) */ /* * When the kernel_fpu_* symbols are unavailable then provide our own * versions which allow the FPU to be safely used. */ #if defined(HAVE_KERNEL_FPU_INTERNAL) #include extern union fpregs_state **zfs_kfpu_fpregs; /* * Initialize per-cpu variables to store FPU state. */ static inline void kfpu_fini(void) { int cpu; for_each_possible_cpu(cpu) { if (zfs_kfpu_fpregs[cpu] != NULL) { free_pages((unsigned long)zfs_kfpu_fpregs[cpu], get_order(sizeof (union fpregs_state))); } } kfree(zfs_kfpu_fpregs); } static inline int kfpu_init(void) { zfs_kfpu_fpregs = kzalloc(num_possible_cpus() * sizeof (union fpregs_state *), GFP_KERNEL); if (zfs_kfpu_fpregs == NULL) return (-ENOMEM); /* * The fxsave and xsave operations require 16-/64-byte alignment of * the target memory. Since kmalloc() provides no alignment * guarantee instead use alloc_pages_node(). */ unsigned int order = get_order(sizeof (union fpregs_state)); int cpu; for_each_possible_cpu(cpu) { struct page *page = alloc_pages_node(cpu_to_node(cpu), GFP_KERNEL | __GFP_ZERO, order); if (page == NULL) { kfpu_fini(); return (-ENOMEM); } zfs_kfpu_fpregs[cpu] = page_address(page); } return (0); } #define kfpu_allowed() 1 #define ex_handler_fprestore ex_handler_default /* * FPU save and restore instructions. */ #define __asm __asm__ __volatile__ #define kfpu_fxsave(addr) __asm("fxsave %0" : "=m" (*(addr))) #define kfpu_fxsaveq(addr) __asm("fxsaveq %0" : "=m" (*(addr))) #define kfpu_fnsave(addr) __asm("fnsave %0; fwait" : "=m" (*(addr))) #define kfpu_fxrstor(addr) __asm("fxrstor %0" : : "m" (*(addr))) #define kfpu_fxrstorq(addr) __asm("fxrstorq %0" : : "m" (*(addr))) #define kfpu_frstor(addr) __asm("frstor %0" : : "m" (*(addr))) #define kfpu_fxsr_clean(rval) __asm("fnclex; emms; fildl %P[addr]" \ : : [addr] "m" (rval)); static inline void kfpu_save_xsave(struct xregs_state *addr, uint64_t mask) { uint32_t low, hi; int err; low = mask; hi = mask >> 32; XSTATE_XSAVE(addr, low, hi, err); WARN_ON_ONCE(err); } static inline void kfpu_save_fxsr(struct fxregs_state *addr) { if (IS_ENABLED(CONFIG_X86_32)) kfpu_fxsave(addr); else kfpu_fxsaveq(addr); } static inline void kfpu_save_fsave(struct fregs_state *addr) { kfpu_fnsave(addr); } static inline void kfpu_begin(void) { /* * Preemption and interrupts must be disabled for the critical * region where the FPU state is being modified. */ preempt_disable(); local_irq_disable(); /* * The current FPU registers need to be preserved by kfpu_begin() * and restored by kfpu_end(). They are stored in a dedicated * per-cpu variable, not in the task struct, this allows any user * FPU state to be correctly preserved and restored. */ union fpregs_state *state = zfs_kfpu_fpregs[smp_processor_id()]; if (static_cpu_has(X86_FEATURE_XSAVE)) { kfpu_save_xsave(&state->xsave, ~0); } else if (static_cpu_has(X86_FEATURE_FXSR)) { kfpu_save_fxsr(&state->fxsave); } else { kfpu_save_fsave(&state->fsave); } } static inline void kfpu_restore_xsave(struct xregs_state *addr, uint64_t mask) { uint32_t low, hi; low = mask; hi = mask >> 32; XSTATE_XRESTORE(addr, low, hi); } static inline void kfpu_restore_fxsr(struct fxregs_state *addr) { /* * On AuthenticAMD K7 and K8 processors the fxrstor instruction only * restores the _x87 FOP, FIP, and FDP registers when an exception * is pending. Clean the _x87 state to force the restore. */ if (unlikely(static_cpu_has_bug(X86_BUG_FXSAVE_LEAK))) kfpu_fxsr_clean(addr); if (IS_ENABLED(CONFIG_X86_32)) { kfpu_fxrstor(addr); } else { kfpu_fxrstorq(addr); } } static inline void kfpu_restore_fsave(struct fregs_state *addr) { kfpu_frstor(addr); } static inline void kfpu_end(void) { union fpregs_state *state = zfs_kfpu_fpregs[smp_processor_id()]; if (static_cpu_has(X86_FEATURE_XSAVE)) { kfpu_restore_xsave(&state->xsave, ~0); } else if (static_cpu_has(X86_FEATURE_FXSR)) { kfpu_restore_fxsr(&state->fxsave); } else { kfpu_restore_fsave(&state->fsave); } local_irq_enable(); preempt_enable(); } #else /* * FPU support is unavailable. */ #define kfpu_allowed() 0 #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #define kfpu_init() 0 #define kfpu_fini() ((void) 0) #endif /* defined(HAVE_KERNEL_FPU_INTERNAL) */ #endif /* defined(KERNEL_EXPORTS_X86_FPU) */ #else /* defined(_KERNEL) */ /* * FPU dummy methods for user space. */ #define kfpu_allowed() 1 #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #endif /* defined(_KERNEL) */ /* * CPUID feature tests for user-space. Linux kernel provides an interface for * CPU feature testing. */ #if !defined(_KERNEL) /* * x86 registers used implicitly by CPUID */ typedef enum cpuid_regs { EAX = 0, EBX, ECX, EDX, CPUID_REG_CNT = 4 } cpuid_regs_t; /* * List of instruction sets identified by CPUID */ typedef enum cpuid_inst_sets { SSE = 0, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, OSXSAVE, AVX, AVX2, BMI1, BMI2, AVX512F, AVX512CD, AVX512DQ, AVX512BW, AVX512IFMA, AVX512VBMI, AVX512PF, AVX512ER, AVX512VL, AES, PCLMULQDQ } cpuid_inst_sets_t; /* * Instruction set descriptor. */ typedef struct cpuid_feature_desc { uint32_t leaf; /* CPUID leaf */ uint32_t subleaf; /* CPUID sub-leaf */ uint32_t flag; /* bit mask of the feature */ cpuid_regs_t reg; /* which CPUID return register to test */ } cpuid_feature_desc_t; #define _AVX512F_BIT (1U << 16) #define _AVX512CD_BIT (_AVX512F_BIT | (1U << 28)) #define _AVX512DQ_BIT (_AVX512F_BIT | (1U << 17)) #define _AVX512BW_BIT (_AVX512F_BIT | (1U << 30)) #define _AVX512IFMA_BIT (_AVX512F_BIT | (1U << 21)) #define _AVX512VBMI_BIT (1U << 1) /* AVX512F_BIT is on another leaf */ #define _AVX512PF_BIT (_AVX512F_BIT | (1U << 26)) #define _AVX512ER_BIT (_AVX512F_BIT | (1U << 27)) #define _AVX512VL_BIT (1U << 31) /* if used also check other levels */ #define _AES_BIT (1U << 25) #define _PCLMULQDQ_BIT (1U << 1) /* * Descriptions of supported instruction sets */ static const cpuid_feature_desc_t cpuid_features[] = { [SSE] = {1U, 0U, 1U << 25, EDX }, [SSE2] = {1U, 0U, 1U << 26, EDX }, [SSE3] = {1U, 0U, 1U << 0, ECX }, [SSSE3] = {1U, 0U, 1U << 9, ECX }, [SSE4_1] = {1U, 0U, 1U << 19, ECX }, [SSE4_2] = {1U, 0U, 1U << 20, ECX }, [OSXSAVE] = {1U, 0U, 1U << 27, ECX }, [AVX] = {1U, 0U, 1U << 28, ECX }, [AVX2] = {7U, 0U, 1U << 5, EBX }, [BMI1] = {7U, 0U, 1U << 3, EBX }, [BMI2] = {7U, 0U, 1U << 8, EBX }, [AVX512F] = {7U, 0U, _AVX512F_BIT, EBX }, [AVX512CD] = {7U, 0U, _AVX512CD_BIT, EBX }, [AVX512DQ] = {7U, 0U, _AVX512DQ_BIT, EBX }, [AVX512BW] = {7U, 0U, _AVX512BW_BIT, EBX }, [AVX512IFMA] = {7U, 0U, _AVX512IFMA_BIT, EBX }, [AVX512VBMI] = {7U, 0U, _AVX512VBMI_BIT, ECX }, [AVX512PF] = {7U, 0U, _AVX512PF_BIT, EBX }, [AVX512ER] = {7U, 0U, _AVX512ER_BIT, EBX }, [AVX512VL] = {7U, 0U, _AVX512ER_BIT, EBX }, [AES] = {1U, 0U, _AES_BIT, ECX }, [PCLMULQDQ] = {1U, 0U, _PCLMULQDQ_BIT, ECX }, }; /* * Check if OS supports AVX and AVX2 by checking XCR0 * Only call this function if CPUID indicates that AVX feature is * supported by the CPU, otherwise it might be an illegal instruction. */ static inline uint64_t xgetbv(uint32_t index) { uint32_t eax, edx; /* xgetbv - instruction byte code */ __asm__ __volatile__(".byte 0x0f; .byte 0x01; .byte 0xd0" : "=a" (eax), "=d" (edx) : "c" (index)); return ((((uint64_t)edx)<<32) | (uint64_t)eax); } /* * Check if CPU supports a feature */ static inline boolean_t __cpuid_check_feature(const cpuid_feature_desc_t *desc) { uint32_t r[CPUID_REG_CNT]; if (__get_cpuid_max(0, NULL) >= desc->leaf) { /* * __cpuid_count is needed to properly check * for AVX2. It is a macro, so return parameters * are passed by value. */ __cpuid_count(desc->leaf, desc->subleaf, r[EAX], r[EBX], r[ECX], r[EDX]); return ((r[desc->reg] & desc->flag) == desc->flag); } return (B_FALSE); } #define CPUID_FEATURE_CHECK(name, id) \ static inline boolean_t \ __cpuid_has_ ## name(void) \ { \ return (__cpuid_check_feature(&cpuid_features[id])); \ } /* * Define functions for user-space CPUID features testing */ CPUID_FEATURE_CHECK(sse, SSE); CPUID_FEATURE_CHECK(sse2, SSE2); CPUID_FEATURE_CHECK(sse3, SSE3); CPUID_FEATURE_CHECK(ssse3, SSSE3); CPUID_FEATURE_CHECK(sse4_1, SSE4_1); CPUID_FEATURE_CHECK(sse4_2, SSE4_2); CPUID_FEATURE_CHECK(avx, AVX); CPUID_FEATURE_CHECK(avx2, AVX2); CPUID_FEATURE_CHECK(osxsave, OSXSAVE); CPUID_FEATURE_CHECK(bmi1, BMI1); CPUID_FEATURE_CHECK(bmi2, BMI2); CPUID_FEATURE_CHECK(avx512f, AVX512F); CPUID_FEATURE_CHECK(avx512cd, AVX512CD); CPUID_FEATURE_CHECK(avx512dq, AVX512DQ); CPUID_FEATURE_CHECK(avx512bw, AVX512BW); CPUID_FEATURE_CHECK(avx512ifma, AVX512IFMA); CPUID_FEATURE_CHECK(avx512vbmi, AVX512VBMI); CPUID_FEATURE_CHECK(avx512pf, AVX512PF); CPUID_FEATURE_CHECK(avx512er, AVX512ER); CPUID_FEATURE_CHECK(avx512vl, AVX512VL); CPUID_FEATURE_CHECK(aes, AES); CPUID_FEATURE_CHECK(pclmulqdq, PCLMULQDQ); #endif /* !defined(_KERNEL) */ /* * Detect register set support */ static inline boolean_t __simd_state_enabled(const uint64_t state) { boolean_t has_osxsave; uint64_t xcr0; #if defined(_KERNEL) #if defined(X86_FEATURE_OSXSAVE) has_osxsave = !!boot_cpu_has(X86_FEATURE_OSXSAVE); #else has_osxsave = B_FALSE; #endif #elif !defined(_KERNEL) has_osxsave = __cpuid_has_osxsave(); #endif if (!has_osxsave) return (B_FALSE); xcr0 = xgetbv(0); return ((xcr0 & state) == state); } #define _XSTATE_SSE_AVX (0x2 | 0x4) #define _XSTATE_AVX512 (0xE0 | _XSTATE_SSE_AVX) #define __ymm_enabled() __simd_state_enabled(_XSTATE_SSE_AVX) #define __zmm_enabled() __simd_state_enabled(_XSTATE_AVX512) /* * Check if SSE instruction set is available */ static inline boolean_t zfs_sse_available(void) { #if defined(_KERNEL) return (!!boot_cpu_has(X86_FEATURE_XMM)); #elif !defined(_KERNEL) return (__cpuid_has_sse()); #endif } /* * Check if SSE2 instruction set is available */ static inline boolean_t zfs_sse2_available(void) { #if defined(_KERNEL) return (!!boot_cpu_has(X86_FEATURE_XMM2)); #elif !defined(_KERNEL) return (__cpuid_has_sse2()); #endif } /* * Check if SSE3 instruction set is available */ static inline boolean_t zfs_sse3_available(void) { #if defined(_KERNEL) return (!!boot_cpu_has(X86_FEATURE_XMM3)); #elif !defined(_KERNEL) return (__cpuid_has_sse3()); #endif } /* * Check if SSSE3 instruction set is available */ static inline boolean_t zfs_ssse3_available(void) { #if defined(_KERNEL) return (!!boot_cpu_has(X86_FEATURE_SSSE3)); #elif !defined(_KERNEL) return (__cpuid_has_ssse3()); #endif } /* * Check if SSE4.1 instruction set is available */ static inline boolean_t zfs_sse4_1_available(void) { #if defined(_KERNEL) return (!!boot_cpu_has(X86_FEATURE_XMM4_1)); #elif !defined(_KERNEL) return (__cpuid_has_sse4_1()); #endif } /* * Check if SSE4.2 instruction set is available */ static inline boolean_t zfs_sse4_2_available(void) { #if defined(_KERNEL) return (!!boot_cpu_has(X86_FEATURE_XMM4_2)); #elif !defined(_KERNEL) return (__cpuid_has_sse4_2()); #endif } /* * Check if AVX instruction set is available */ static inline boolean_t zfs_avx_available(void) { boolean_t has_avx; #if defined(_KERNEL) has_avx = !!boot_cpu_has(X86_FEATURE_AVX); #elif !defined(_KERNEL) has_avx = __cpuid_has_avx(); #endif return (has_avx && __ymm_enabled()); } /* * Check if AVX2 instruction set is available */ static inline boolean_t zfs_avx2_available(void) { boolean_t has_avx2; #if defined(_KERNEL) has_avx2 = !!boot_cpu_has(X86_FEATURE_AVX2); #elif !defined(_KERNEL) has_avx2 = __cpuid_has_avx2(); #endif return (has_avx2 && __ymm_enabled()); } /* * Check if BMI1 instruction set is available */ static inline boolean_t zfs_bmi1_available(void) { #if defined(_KERNEL) #if defined(X86_FEATURE_BMI1) return (!!boot_cpu_has(X86_FEATURE_BMI1)); #else return (B_FALSE); #endif #elif !defined(_KERNEL) return (__cpuid_has_bmi1()); #endif } /* * Check if BMI2 instruction set is available */ static inline boolean_t zfs_bmi2_available(void) { #if defined(_KERNEL) #if defined(X86_FEATURE_BMI2) return (!!boot_cpu_has(X86_FEATURE_BMI2)); #else return (B_FALSE); #endif #elif !defined(_KERNEL) return (__cpuid_has_bmi2()); #endif } /* * Check if AES instruction set is available */ static inline boolean_t zfs_aes_available(void) { #if defined(_KERNEL) #if defined(X86_FEATURE_AES) return (!!boot_cpu_has(X86_FEATURE_AES)); #else return (B_FALSE); #endif #elif !defined(_KERNEL) return (__cpuid_has_aes()); #endif } /* * Check if PCLMULQDQ instruction set is available */ static inline boolean_t zfs_pclmulqdq_available(void) { #if defined(_KERNEL) #if defined(X86_FEATURE_PCLMULQDQ) return (!!boot_cpu_has(X86_FEATURE_PCLMULQDQ)); #else return (B_FALSE); #endif #elif !defined(_KERNEL) return (__cpuid_has_pclmulqdq()); #endif } /* * AVX-512 family of instruction sets: * * AVX512F Foundation * AVX512CD Conflict Detection Instructions * AVX512ER Exponential and Reciprocal Instructions * AVX512PF Prefetch Instructions * * AVX512BW Byte and Word Instructions * AVX512DQ Double-word and Quadword Instructions * AVX512VL Vector Length Extensions * * AVX512IFMA Integer Fused Multiply Add (Not supported by kernel 4.4) * AVX512VBMI Vector Byte Manipulation Instructions */ /* Check if AVX512F instruction set is available */ static inline boolean_t zfs_avx512f_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512F) has_avx512 = !!boot_cpu_has(X86_FEATURE_AVX512F); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512f(); #endif return (has_avx512 && __zmm_enabled()); } /* Check if AVX512CD instruction set is available */ static inline boolean_t zfs_avx512cd_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512CD) has_avx512 = boot_cpu_has(X86_FEATURE_AVX512F) && boot_cpu_has(X86_FEATURE_AVX512CD); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512cd(); #endif return (has_avx512 && __zmm_enabled()); } /* Check if AVX512ER instruction set is available */ static inline boolean_t zfs_avx512er_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512ER) has_avx512 = boot_cpu_has(X86_FEATURE_AVX512F) && boot_cpu_has(X86_FEATURE_AVX512ER); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512er(); #endif return (has_avx512 && __zmm_enabled()); } /* Check if AVX512PF instruction set is available */ static inline boolean_t zfs_avx512pf_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512PF) has_avx512 = boot_cpu_has(X86_FEATURE_AVX512F) && boot_cpu_has(X86_FEATURE_AVX512PF); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512pf(); #endif return (has_avx512 && __zmm_enabled()); } /* Check if AVX512BW instruction set is available */ static inline boolean_t zfs_avx512bw_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512BW) has_avx512 = boot_cpu_has(X86_FEATURE_AVX512F) && boot_cpu_has(X86_FEATURE_AVX512BW); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512bw(); #endif return (has_avx512 && __zmm_enabled()); } /* Check if AVX512DQ instruction set is available */ static inline boolean_t zfs_avx512dq_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512DQ) has_avx512 = boot_cpu_has(X86_FEATURE_AVX512F) && boot_cpu_has(X86_FEATURE_AVX512DQ); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512dq(); #endif return (has_avx512 && __zmm_enabled()); } /* Check if AVX512VL instruction set is available */ static inline boolean_t zfs_avx512vl_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512VL) has_avx512 = boot_cpu_has(X86_FEATURE_AVX512F) && boot_cpu_has(X86_FEATURE_AVX512VL); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512vl(); #endif return (has_avx512 && __zmm_enabled()); } /* Check if AVX512IFMA instruction set is available */ static inline boolean_t zfs_avx512ifma_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512IFMA) has_avx512 = boot_cpu_has(X86_FEATURE_AVX512F) && boot_cpu_has(X86_FEATURE_AVX512IFMA); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512ifma(); #endif return (has_avx512 && __zmm_enabled()); } /* Check if AVX512VBMI instruction set is available */ static inline boolean_t zfs_avx512vbmi_available(void) { boolean_t has_avx512 = B_FALSE; #if defined(_KERNEL) #if defined(X86_FEATURE_AVX512VBMI) has_avx512 = boot_cpu_has(X86_FEATURE_AVX512F) && boot_cpu_has(X86_FEATURE_AVX512VBMI); #else has_avx512 = B_FALSE; #endif #elif !defined(_KERNEL) has_avx512 = __cpuid_has_avx512f() && __cpuid_has_avx512vbmi(); #endif return (has_avx512 && __zmm_enabled()); } #endif /* defined(__x86) */ #endif /* _SIMD_X86_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/blkdev_compat.h0000644000000000000000000000007413612141520021153 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.000410537 zfs-0.8.3/include/linux/blkdev_compat.h0000644016037001603700000004507713612141520021165 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2011 Lawrence Livermore National Security, LLC. * Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). * Written by Brian Behlendorf . * LLNL-CODE-403049. */ #ifndef _ZFS_BLKDEV_H #define _ZFS_BLKDEV_H #include #include #include #include #include /* for SECTOR_* */ #ifndef HAVE_FMODE_T typedef unsigned __bitwise__ fmode_t; #endif /* HAVE_FMODE_T */ #ifndef HAVE_BLK_QUEUE_FLAG_SET static inline void blk_queue_flag_set(unsigned int flag, struct request_queue *q) { queue_flag_set(flag, q); } #endif #ifndef HAVE_BLK_QUEUE_FLAG_CLEAR static inline void blk_queue_flag_clear(unsigned int flag, struct request_queue *q) { queue_flag_clear(flag, q); } #endif /* * 4.7 - 4.x API, * The blk_queue_write_cache() interface has replaced blk_queue_flush() * interface. However, the new interface is GPL-only thus we implement * our own trivial wrapper when the GPL-only version is detected. * * 2.6.36 - 4.6 API, * The blk_queue_flush() interface has replaced blk_queue_ordered() * interface. However, while the old interface was available to all the * new one is GPL-only. Thus if the GPL-only version is detected we * implement our own trivial helper. * * 2.6.x - 2.6.35 * Legacy blk_queue_ordered() interface. */ static inline void blk_queue_set_write_cache(struct request_queue *q, bool wc, bool fua) { #if defined(HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY) if (wc) blk_queue_flag_set(QUEUE_FLAG_WC, q); else blk_queue_flag_clear(QUEUE_FLAG_WC, q); if (fua) blk_queue_flag_set(QUEUE_FLAG_FUA, q); else blk_queue_flag_clear(QUEUE_FLAG_FUA, q); #elif defined(HAVE_BLK_QUEUE_WRITE_CACHE) blk_queue_write_cache(q, wc, fua); #elif defined(HAVE_BLK_QUEUE_FLUSH_GPL_ONLY) if (wc) q->flush_flags |= REQ_FLUSH; if (fua) q->flush_flags |= REQ_FUA; #elif defined(HAVE_BLK_QUEUE_FLUSH) blk_queue_flush(q, (wc ? REQ_FLUSH : 0) | (fua ? REQ_FUA : 0)); #else blk_queue_ordered(q, QUEUE_ORDERED_DRAIN, NULL); #endif } /* * Most of the blk_* macros were removed in 2.6.36. Ostensibly this was * done to improve readability and allow easier grepping. However, from * a portability stand point the macros are helpful. Therefore the needed * macros are redefined here if they are missing from the kernel. */ #ifndef blk_fs_request #define blk_fs_request(rq) ((rq)->cmd_type == REQ_TYPE_FS) #endif /* * 2.6.34 API change, * The blk_queue_max_hw_sectors() function replaces blk_queue_max_sectors(). */ #ifndef HAVE_BLK_QUEUE_MAX_HW_SECTORS #define blk_queue_max_hw_sectors __blk_queue_max_hw_sectors static inline void __blk_queue_max_hw_sectors(struct request_queue *q, unsigned int max_hw_sectors) { blk_queue_max_sectors(q, max_hw_sectors); } #endif /* * 2.6.34 API change, * The blk_queue_max_segments() function consolidates * blk_queue_max_hw_segments() and blk_queue_max_phys_segments(). */ #ifndef HAVE_BLK_QUEUE_MAX_SEGMENTS #define blk_queue_max_segments __blk_queue_max_segments static inline void __blk_queue_max_segments(struct request_queue *q, unsigned short max_segments) { blk_queue_max_phys_segments(q, max_segments); blk_queue_max_hw_segments(q, max_segments); } #endif static inline void blk_queue_set_read_ahead(struct request_queue *q, unsigned long ra_pages) { #ifdef HAVE_BLK_QUEUE_BDI_DYNAMIC q->backing_dev_info->ra_pages = ra_pages; #else q->backing_dev_info.ra_pages = ra_pages; #endif } #ifndef HAVE_GET_DISK_AND_MODULE static inline struct kobject * get_disk_and_module(struct gendisk *disk) { return (get_disk(disk)); } #endif #ifndef HAVE_GET_DISK_RO static inline int get_disk_ro(struct gendisk *disk) { int policy = 0; if (disk->part[0]) policy = disk->part[0]->policy; return (policy); } #endif /* HAVE_GET_DISK_RO */ #ifdef HAVE_BIO_BVEC_ITER #define BIO_BI_SECTOR(bio) (bio)->bi_iter.bi_sector #define BIO_BI_SIZE(bio) (bio)->bi_iter.bi_size #define BIO_BI_IDX(bio) (bio)->bi_iter.bi_idx #define BIO_BI_SKIP(bio) (bio)->bi_iter.bi_bvec_done #define bio_for_each_segment4(bv, bvp, b, i) \ bio_for_each_segment((bv), (b), (i)) typedef struct bvec_iter bvec_iterator_t; #else #define BIO_BI_SECTOR(bio) (bio)->bi_sector #define BIO_BI_SIZE(bio) (bio)->bi_size #define BIO_BI_IDX(bio) (bio)->bi_idx #define BIO_BI_SKIP(bio) (0) #define bio_for_each_segment4(bv, bvp, b, i) \ bio_for_each_segment((bvp), (b), (i)) typedef int bvec_iterator_t; #endif /* * Portable helper for correctly setting the FAILFAST flags. The * correct usage has changed 3 times from 2.6.12 to 2.6.38. */ static inline void bio_set_flags_failfast(struct block_device *bdev, int *flags) { #ifdef CONFIG_BUG /* * Disable FAILFAST for loopback devices because of the * following incorrect BUG_ON() in loop_make_request(). * This support is also disabled for md devices because the * test suite layers md devices on top of loopback devices. * This may be removed when the loopback driver is fixed. * * BUG_ON(!lo || (rw != READ && rw != WRITE)); */ if ((MAJOR(bdev->bd_dev) == LOOP_MAJOR) || (MAJOR(bdev->bd_dev) == MD_MAJOR)) return; #ifdef BLOCK_EXT_MAJOR if (MAJOR(bdev->bd_dev) == BLOCK_EXT_MAJOR) return; #endif /* BLOCK_EXT_MAJOR */ #endif /* CONFIG_BUG */ #if defined(HAVE_BIO_RW_FAILFAST_DTD) /* BIO_RW_FAILFAST_* preferred interface from 2.6.28 - 2.6.35 */ *flags |= ( (1 << BIO_RW_FAILFAST_DEV) | (1 << BIO_RW_FAILFAST_TRANSPORT) | (1 << BIO_RW_FAILFAST_DRIVER)); #elif defined(HAVE_REQ_FAILFAST_MASK) /* * REQ_FAILFAST_* preferred interface from 2.6.36 - 2.6.xx, * the BIO_* and REQ_* flags were unified under REQ_* flags. */ *flags |= REQ_FAILFAST_MASK; #else #error "Undefined block IO FAILFAST interface." #endif } /* * Maximum disk label length, it may be undefined for some kernels. */ #ifndef DISK_NAME_LEN #define DISK_NAME_LEN 32 #endif /* DISK_NAME_LEN */ #ifdef HAVE_BIO_BI_STATUS static inline int bi_status_to_errno(blk_status_t status) { switch (status) { case BLK_STS_OK: return (0); case BLK_STS_NOTSUPP: return (EOPNOTSUPP); case BLK_STS_TIMEOUT: return (ETIMEDOUT); case BLK_STS_NOSPC: return (ENOSPC); case BLK_STS_TRANSPORT: return (ENOLINK); case BLK_STS_TARGET: return (EREMOTEIO); case BLK_STS_NEXUS: return (EBADE); case BLK_STS_MEDIUM: return (ENODATA); case BLK_STS_PROTECTION: return (EILSEQ); case BLK_STS_RESOURCE: return (ENOMEM); case BLK_STS_AGAIN: return (EAGAIN); case BLK_STS_IOERR: return (EIO); default: return (EIO); } } static inline blk_status_t errno_to_bi_status(int error) { switch (error) { case 0: return (BLK_STS_OK); case EOPNOTSUPP: return (BLK_STS_NOTSUPP); case ETIMEDOUT: return (BLK_STS_TIMEOUT); case ENOSPC: return (BLK_STS_NOSPC); case ENOLINK: return (BLK_STS_TRANSPORT); case EREMOTEIO: return (BLK_STS_TARGET); case EBADE: return (BLK_STS_NEXUS); case ENODATA: return (BLK_STS_MEDIUM); case EILSEQ: return (BLK_STS_PROTECTION); case ENOMEM: return (BLK_STS_RESOURCE); case EAGAIN: return (BLK_STS_AGAIN); case EIO: return (BLK_STS_IOERR); default: return (BLK_STS_IOERR); } } #endif /* HAVE_BIO_BI_STATUS */ /* * 4.3 API change * The bio_endio() prototype changed slightly. These are helper * macro's to ensure the prototype and invocation are handled. */ #ifdef HAVE_1ARG_BIO_END_IO_T #ifdef HAVE_BIO_BI_STATUS #define BIO_END_IO_ERROR(bio) bi_status_to_errno(bio->bi_status) #define BIO_END_IO_PROTO(fn, x, z) static void fn(struct bio *x) #define BIO_END_IO(bio, error) bio_set_bi_status(bio, error) static inline void bio_set_bi_status(struct bio *bio, int error) { ASSERT3S(error, <=, 0); bio->bi_status = errno_to_bi_status(-error); bio_endio(bio); } #else #define BIO_END_IO_ERROR(bio) (-(bio->bi_error)) #define BIO_END_IO_PROTO(fn, x, z) static void fn(struct bio *x) #define BIO_END_IO(bio, error) bio_set_bi_error(bio, error) static inline void bio_set_bi_error(struct bio *bio, int error) { ASSERT3S(error, <=, 0); bio->bi_error = error; bio_endio(bio); } #endif /* HAVE_BIO_BI_STATUS */ #else #define BIO_END_IO_PROTO(fn, x, z) static void fn(struct bio *x, int z) #define BIO_END_IO(bio, error) bio_endio(bio, error); #endif /* HAVE_1ARG_BIO_END_IO_T */ /* * 2.6.38 - 2.6.x API, * blkdev_get_by_path() * blkdev_put() * * 2.6.28 - 2.6.37 API, * open_bdev_exclusive() * close_bdev_exclusive() * * 2.6.12 - 2.6.27 API, * open_bdev_excl() * close_bdev_excl() * * Used to exclusively open a block device from within the kernel. */ #if defined(HAVE_BLKDEV_GET_BY_PATH) #define vdev_bdev_open(path, md, hld) blkdev_get_by_path(path, \ (md) | FMODE_EXCL, hld) #define vdev_bdev_close(bdev, md) blkdev_put(bdev, (md) | FMODE_EXCL) #elif defined(HAVE_OPEN_BDEV_EXCLUSIVE) #define vdev_bdev_open(path, md, hld) open_bdev_exclusive(path, md, hld) #define vdev_bdev_close(bdev, md) close_bdev_exclusive(bdev, md) #else #define vdev_bdev_open(path, md, hld) open_bdev_excl(path, md, hld) #define vdev_bdev_close(bdev, md) close_bdev_excl(bdev) #endif /* HAVE_BLKDEV_GET_BY_PATH | HAVE_OPEN_BDEV_EXCLUSIVE */ /* * 4.1 - x.y.z API, * 3.10.0 CentOS 7.x API, * blkdev_reread_part() * * For older kernels trigger a re-reading of the partition table by calling * check_disk_change() which calls flush_disk() to invalidate the device. */ #ifdef HAVE_BLKDEV_REREAD_PART #define vdev_bdev_reread_part(bdev) blkdev_reread_part(bdev) #else #define vdev_bdev_reread_part(bdev) check_disk_change(bdev) #endif /* HAVE_BLKDEV_REREAD_PART */ /* * 2.6.22 API change * The function invalidate_bdev() lost it's second argument because * it was unused. */ #ifdef HAVE_1ARG_INVALIDATE_BDEV #define vdev_bdev_invalidate(bdev) invalidate_bdev(bdev) #else #define vdev_bdev_invalidate(bdev) invalidate_bdev(bdev, 1) #endif /* HAVE_1ARG_INVALIDATE_BDEV */ /* * 2.6.27 API change * The function was exported for use, prior to this it existed but the * symbol was not exported. * * 4.4.0-6.21 API change for Ubuntu * lookup_bdev() gained a second argument, FMODE_*, to check inode permissions. */ #ifdef HAVE_1ARG_LOOKUP_BDEV #define vdev_lookup_bdev(path) lookup_bdev(path) #else #ifdef HAVE_2ARGS_LOOKUP_BDEV #define vdev_lookup_bdev(path) lookup_bdev(path, 0) #else #define vdev_lookup_bdev(path) ERR_PTR(-ENOTSUP) #endif /* HAVE_2ARGS_LOOKUP_BDEV */ #endif /* HAVE_1ARG_LOOKUP_BDEV */ /* * 2.6.30 API change * To ensure good performance preferentially use the physical block size * for proper alignment. The physical size is supposed to be the internal * sector size used by the device. This is often 4096 byte for AF devices, * while a smaller 512 byte logical size is supported for compatibility. * * Unfortunately, many drives still misreport their physical sector size. * For devices which are known to lie you may need to manually set this * at pool creation time with 'zpool create -o ashift=12 ...'. * * When the physical block size interface isn't available, we fall back to * the logical block size interface and then the older hard sector size. */ #ifdef HAVE_BDEV_PHYSICAL_BLOCK_SIZE #define vdev_bdev_block_size(bdev) bdev_physical_block_size(bdev) #else #ifdef HAVE_BDEV_LOGICAL_BLOCK_SIZE #define vdev_bdev_block_size(bdev) bdev_logical_block_size(bdev) #else #define vdev_bdev_block_size(bdev) bdev_hardsect_size(bdev) #endif /* HAVE_BDEV_LOGICAL_BLOCK_SIZE */ #endif /* HAVE_BDEV_PHYSICAL_BLOCK_SIZE */ #ifndef HAVE_BIO_SET_OP_ATTRS /* * Kernels without bio_set_op_attrs use bi_rw for the bio flags. */ static inline void bio_set_op_attrs(struct bio *bio, unsigned rw, unsigned flags) { bio->bi_rw |= rw | flags; } #endif /* * bio_set_flush - Set the appropriate flags in a bio to guarantee * data are on non-volatile media on completion. * * 2.6.X - 2.6.36 API, * WRITE_BARRIER - Tells the block layer to commit all previously submitted * writes to stable storage before this one is started and that the current * write is on stable storage upon completion. Also prevents reordering * on both sides of the current operation. * * 2.6.37 - 4.8 API, * Introduce WRITE_FLUSH, WRITE_FUA, and WRITE_FLUSH_FUA flags as a * replacement for WRITE_BARRIER to allow expressing richer semantics * to the block layer. It's up to the block layer to implement the * semantics correctly. Use the WRITE_FLUSH_FUA flag combination. * * 4.8 - 4.9 API, * REQ_FLUSH was renamed to REQ_PREFLUSH. For consistency with previous * ZoL releases, prefer the WRITE_FLUSH_FUA flag set if it's available. * * 4.10 API, * The read/write flags and their modifiers, including WRITE_FLUSH, * WRITE_FUA and WRITE_FLUSH_FUA were removed from fs.h in * torvalds/linux@70fd7614 and replaced by direct flag modification * of the REQ_ flags in bio->bi_opf. Use REQ_PREFLUSH. */ static inline void bio_set_flush(struct bio *bio) { #if defined(REQ_PREFLUSH) /* >= 4.10 */ bio_set_op_attrs(bio, 0, REQ_PREFLUSH); #elif defined(WRITE_FLUSH_FUA) /* >= 2.6.37 and <= 4.9 */ bio_set_op_attrs(bio, 0, WRITE_FLUSH_FUA); #elif defined(WRITE_BARRIER) /* < 2.6.37 */ bio_set_op_attrs(bio, 0, WRITE_BARRIER); #else #error "Allowing the build will cause bio_set_flush requests to be ignored." #endif } /* * 4.8 - 4.x API, * REQ_OP_FLUSH * * 4.8-rc0 - 4.8-rc1, * REQ_PREFLUSH * * 2.6.36 - 4.7 API, * REQ_FLUSH * * 2.6.x - 2.6.35 API, * HAVE_BIO_RW_BARRIER * * Used to determine if a cache flush has been requested. This check has * been left intentionally broad in order to cover both a legacy flush * and the new preflush behavior introduced in Linux 4.8. This is correct * in all cases but may have a performance impact for some kernels. It * has the advantage of minimizing kernel specific changes in the zvol code. * */ static inline boolean_t bio_is_flush(struct bio *bio) { #if defined(HAVE_REQ_OP_FLUSH) && defined(HAVE_BIO_BI_OPF) return ((bio_op(bio) == REQ_OP_FLUSH) || (bio->bi_opf & REQ_PREFLUSH)); #elif defined(REQ_PREFLUSH) && defined(HAVE_BIO_BI_OPF) return (bio->bi_opf & REQ_PREFLUSH); #elif defined(REQ_PREFLUSH) && !defined(HAVE_BIO_BI_OPF) return (bio->bi_rw & REQ_PREFLUSH); #elif defined(REQ_FLUSH) return (bio->bi_rw & REQ_FLUSH); #elif defined(HAVE_BIO_RW_BARRIER) return (bio->bi_rw & (1 << BIO_RW_BARRIER)); #else #error "Allowing the build will cause flush requests to be ignored." #endif } /* * 4.8 - 4.x API, * REQ_FUA flag moved to bio->bi_opf * * 2.6.x - 4.7 API, * REQ_FUA */ static inline boolean_t bio_is_fua(struct bio *bio) { #if defined(HAVE_BIO_BI_OPF) return (bio->bi_opf & REQ_FUA); #elif defined(REQ_FUA) return (bio->bi_rw & REQ_FUA); #else #error "Allowing the build will cause fua requests to be ignored." #endif } /* * 4.8 - 4.x API, * REQ_OP_DISCARD * * 2.6.36 - 4.7 API, * REQ_DISCARD * * 2.6.28 - 2.6.35 API, * BIO_RW_DISCARD * * In all cases the normal I/O path is used for discards. The only * difference is how the kernel tags individual I/Os as discards. * * Note that 2.6.32 era kernels provide both BIO_RW_DISCARD and REQ_DISCARD, * where BIO_RW_DISCARD is the correct interface. Therefore, it is important * that the HAVE_BIO_RW_DISCARD check occur before the REQ_DISCARD check. */ static inline boolean_t bio_is_discard(struct bio *bio) { #if defined(HAVE_REQ_OP_DISCARD) return (bio_op(bio) == REQ_OP_DISCARD); #elif defined(HAVE_BIO_RW_DISCARD) return (bio->bi_rw & (1 << BIO_RW_DISCARD)); #elif defined(REQ_DISCARD) return (bio->bi_rw & REQ_DISCARD); #else /* potentially triggering the DMU_MAX_ACCESS assertion. */ #error "Allowing the build will cause discard requests to become writes." #endif } /* * 4.8 - 4.x API, * REQ_OP_SECURE_ERASE * * 2.6.36 - 4.7 API, * REQ_SECURE * * 2.6.x - 2.6.35 API, * Unsupported by kernel */ static inline boolean_t bio_is_secure_erase(struct bio *bio) { #if defined(HAVE_REQ_OP_SECURE_ERASE) return (bio_op(bio) == REQ_OP_SECURE_ERASE); #elif defined(REQ_SECURE) return (bio->bi_rw & REQ_SECURE); #else return (0); #endif } /* * 2.6.33 API change * Discard granularity and alignment restrictions may now be set. For * older kernels which do not support this it is safe to skip it. */ #ifdef HAVE_DISCARD_GRANULARITY static inline void blk_queue_discard_granularity(struct request_queue *q, unsigned int dg) { q->limits.discard_granularity = dg; } #else #define blk_queue_discard_granularity(x, dg) ((void)0) #endif /* HAVE_DISCARD_GRANULARITY */ /* * 2.6.32 - 4.x API, * blk_queue_discard() */ #if !defined(HAVE_BLK_QUEUE_DISCARD) #define blk_queue_discard(q) (0); #endif /* * 4.8 - 4.x API, * blk_queue_secure_erase() * * 2.6.36 - 4.7 API, * blk_queue_secdiscard() * * 2.6.x - 2.6.35 API, * Unsupported by kernel */ static inline int blk_queue_discard_secure(struct request_queue *q) { #if defined(HAVE_BLK_QUEUE_SECURE_ERASE) return (blk_queue_secure_erase(q)); #elif defined(HAVE_BLK_QUEUE_SECDISCARD) return (blk_queue_secdiscard(q)); #else return (0); #endif } /* * A common holder for vdev_bdev_open() is used to relax the exclusive open * semantics slightly. Internal vdev disk callers may pass VDEV_HOLDER to * allow them to open the device multiple times. Other kernel callers and * user space processes which don't pass this value will get EBUSY. This is * currently required for the correct operation of hot spares. */ #define VDEV_HOLDER ((void *)0x2401de7) static inline void blk_generic_start_io_acct(struct request_queue *q, int rw, unsigned long sectors, struct hd_struct *part) { #if defined(HAVE_GENERIC_IO_ACCT_3ARG) generic_start_io_acct(rw, sectors, part); #elif defined(HAVE_GENERIC_IO_ACCT_4ARG) generic_start_io_acct(q, rw, sectors, part); #endif } static inline void blk_generic_end_io_acct(struct request_queue *q, int rw, struct hd_struct *part, unsigned long start_time) { #if defined(HAVE_GENERIC_IO_ACCT_3ARG) generic_end_io_acct(rw, part, start_time); #elif defined(HAVE_GENERIC_IO_ACCT_4ARG) generic_end_io_acct(q, rw, part, start_time); #endif } #endif /* _ZFS_BLKDEV_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313612141515020227 xustar000000000000000030 atime=1579730428.794119625 29 ctime=1579730469.02041118 zfs-0.8.3/include/linux/Makefile.am0000644016037001603700000000151113612141515020223 0ustar00hutter2hutter200000000000000COMMON_H = KERNEL_H = \ $(top_srcdir)/include/linux/dcache_compat.h \ $(top_srcdir)/include/linux/xattr_compat.h \ $(top_srcdir)/include/linux/vfs_compat.h \ $(top_srcdir)/include/linux/blkdev_compat.h \ $(top_srcdir)/include/linux/utsname_compat.h \ $(top_srcdir)/include/linux/kmap_compat.h \ $(top_srcdir)/include/linux/simd.h \ $(top_srcdir)/include/linux/simd_x86.h \ $(top_srcdir)/include/linux/simd_aarch64.h \ $(top_srcdir)/include/linux/mod_compat.h \ $(top_srcdir)/include/linux/page_compat.h \ $(top_srcdir)/include/linux/compiler_compat.h USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) if CONFIG_USER libzfsdir = $(includedir)/libzfs/linux libzfs_HEADERS = $(COMMON_H) $(USER_H) endif if CONFIG_KERNEL kerneldir = @prefix@/src/zfs-$(VERSION)/include/linux kernel_HEADERS = $(COMMON_H) $(KERNEL_H) endif zfs-0.8.3/include/linux/PaxHeaders.151519/vfs_compat.h0000644000000000000000000000007413612141513020504 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.998410473 zfs-0.8.3/include/linux/vfs_compat.h0000644016037001603700000003603213612141513020505 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2011 Lawrence Livermore National Security, LLC. * Copyright (C) 2015 Jörg Thalheim. */ #ifndef _ZFS_VFS_H #define _ZFS_VFS_H #include #include #include #include /* * 2.6.28 API change, * Added insert_inode_locked() helper function, prior to this most callers * used insert_inode_hash(). The older method doesn't check for collisions * in the inode_hashtable but it still acceptable for use. */ #ifndef HAVE_INSERT_INODE_LOCKED static inline int insert_inode_locked(struct inode *ip) { insert_inode_hash(ip); return (0); } #endif /* HAVE_INSERT_INODE_LOCKED */ /* * 2.6.35 API change, * Add truncate_setsize() if it is not exported by the Linux kernel. * * Truncate the inode and pages associated with the inode. The pages are * unmapped and removed from cache. */ #ifndef HAVE_TRUNCATE_SETSIZE static inline void truncate_setsize(struct inode *ip, loff_t new) { struct address_space *mapping = ip->i_mapping; i_size_write(ip, new); unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); truncate_inode_pages(mapping, new); unmap_mapping_range(mapping, new + PAGE_SIZE - 1, 0, 1); } #endif /* HAVE_TRUNCATE_SETSIZE */ /* * 2.6.32 - 2.6.33, bdi_setup_and_register() is not available. * 2.6.34 - 3.19, bdi_setup_and_register() takes 3 arguments. * 4.0 - 4.11, bdi_setup_and_register() takes 2 arguments. * 4.12 - x.y, super_setup_bdi_name() new interface. */ #if defined(HAVE_SUPER_SETUP_BDI_NAME) extern atomic_long_t zfs_bdi_seq; static inline int zpl_bdi_setup(struct super_block *sb, char *name) { return super_setup_bdi_name(sb, "%.28s-%ld", name, atomic_long_inc_return(&zfs_bdi_seq)); } static inline void zpl_bdi_destroy(struct super_block *sb) { } #elif defined(HAVE_2ARGS_BDI_SETUP_AND_REGISTER) static inline int zpl_bdi_setup(struct super_block *sb, char *name) { struct backing_dev_info *bdi; int error; bdi = kmem_zalloc(sizeof (struct backing_dev_info), KM_SLEEP); error = bdi_setup_and_register(bdi, name); if (error) { kmem_free(bdi, sizeof (struct backing_dev_info)); return (error); } sb->s_bdi = bdi; return (0); } static inline void zpl_bdi_destroy(struct super_block *sb) { struct backing_dev_info *bdi = sb->s_bdi; bdi_destroy(bdi); kmem_free(bdi, sizeof (struct backing_dev_info)); sb->s_bdi = NULL; } #elif defined(HAVE_3ARGS_BDI_SETUP_AND_REGISTER) static inline int zpl_bdi_setup(struct super_block *sb, char *name) { struct backing_dev_info *bdi; int error; bdi = kmem_zalloc(sizeof (struct backing_dev_info), KM_SLEEP); error = bdi_setup_and_register(bdi, name, BDI_CAP_MAP_COPY); if (error) { kmem_free(sb->s_bdi, sizeof (struct backing_dev_info)); return (error); } sb->s_bdi = bdi; return (0); } static inline void zpl_bdi_destroy(struct super_block *sb) { struct backing_dev_info *bdi = sb->s_bdi; bdi_destroy(bdi); kmem_free(bdi, sizeof (struct backing_dev_info)); sb->s_bdi = NULL; } #else extern atomic_long_t zfs_bdi_seq; static inline int zpl_bdi_setup(struct super_block *sb, char *name) { struct backing_dev_info *bdi; int error; bdi = kmem_zalloc(sizeof (struct backing_dev_info), KM_SLEEP); bdi->name = name; bdi->capabilities = BDI_CAP_MAP_COPY; error = bdi_init(bdi); if (error) { kmem_free(bdi, sizeof (struct backing_dev_info)); return (error); } error = bdi_register(bdi, NULL, "%.28s-%ld", name, atomic_long_inc_return(&zfs_bdi_seq)); if (error) { bdi_destroy(bdi); kmem_free(bdi, sizeof (struct backing_dev_info)); return (error); } sb->s_bdi = bdi; return (0); } static inline void zpl_bdi_destroy(struct super_block *sb) { struct backing_dev_info *bdi = sb->s_bdi; bdi_destroy(bdi); kmem_free(bdi, sizeof (struct backing_dev_info)); sb->s_bdi = NULL; } #endif /* * 4.14 adds SB_* flag definitions, define them to MS_* equivalents * if not set. */ #ifndef SB_RDONLY #define SB_RDONLY MS_RDONLY #endif #ifndef SB_SILENT #define SB_SILENT MS_SILENT #endif #ifndef SB_ACTIVE #define SB_ACTIVE MS_ACTIVE #endif #ifndef SB_POSIXACL #define SB_POSIXACL MS_POSIXACL #endif #ifndef SB_MANDLOCK #define SB_MANDLOCK MS_MANDLOCK #endif #ifndef SB_NOATIME #define SB_NOATIME MS_NOATIME #endif /* * 2.6.38 API change, * LOOKUP_RCU flag introduced to distinguish rcu-walk from ref-walk cases. */ #ifndef LOOKUP_RCU #define LOOKUP_RCU 0x0 #endif /* LOOKUP_RCU */ /* * 3.2-rc1 API change, * Add set_nlink() if it is not exported by the Linux kernel. * * i_nlink is read-only in Linux 3.2, but it can be set directly in * earlier kernels. */ #ifndef HAVE_SET_NLINK static inline void set_nlink(struct inode *inode, unsigned int nlink) { inode->i_nlink = nlink; } #endif /* HAVE_SET_NLINK */ /* * 3.3 API change, * The VFS .create, .mkdir and .mknod callbacks were updated to take a * umode_t type rather than an int. To cleanly handle both definitions * the zpl_umode_t type is introduced and set accordingly. */ #ifdef HAVE_MKDIR_UMODE_T typedef umode_t zpl_umode_t; #else typedef int zpl_umode_t; #endif /* * 3.5 API change, * The clear_inode() function replaces end_writeback() and introduces an * ordering change regarding when the inode_sync_wait() occurs. See the * configure check in config/kernel-clear-inode.m4 for full details. */ #if defined(HAVE_EVICT_INODE) && !defined(HAVE_CLEAR_INODE) #define clear_inode(ip) end_writeback(ip) #endif /* HAVE_EVICT_INODE && !HAVE_CLEAR_INODE */ /* * 3.6 API change, * The sget() helper function now takes the mount flags as an argument. */ #ifdef HAVE_5ARG_SGET #define zpl_sget(type, cmp, set, fl, mtd) sget(type, cmp, set, fl, mtd) #else #define zpl_sget(type, cmp, set, fl, mtd) sget(type, cmp, set, mtd) #endif /* HAVE_5ARG_SGET */ #if defined(SEEK_HOLE) && defined(SEEK_DATA) && !defined(HAVE_LSEEK_EXECUTE) static inline loff_t lseek_execute( struct file *filp, struct inode *inode, loff_t offset, loff_t maxsize) { if (offset < 0 && !(filp->f_mode & FMODE_UNSIGNED_OFFSET)) return (-EINVAL); if (offset > maxsize) return (-EINVAL); if (offset != filp->f_pos) { spin_lock(&filp->f_lock); filp->f_pos = offset; filp->f_version = 0; spin_unlock(&filp->f_lock); } return (offset); } #endif /* SEEK_HOLE && SEEK_DATA && !HAVE_LSEEK_EXECUTE */ #if defined(CONFIG_FS_POSIX_ACL) /* * These functions safely approximates the behavior of posix_acl_release() * which cannot be used because it calls the GPL-only symbol kfree_rcu(). * The in-kernel version, which can access the RCU, frees the ACLs after * the grace period expires. Because we're unsure how long that grace * period may be this implementation conservatively delays for 60 seconds. * This is several orders of magnitude larger than expected grace period. * At 60 seconds the kernel will also begin issuing RCU stall warnings. */ #include #if defined(HAVE_POSIX_ACL_RELEASE) && !defined(HAVE_POSIX_ACL_RELEASE_GPL_ONLY) #define zpl_posix_acl_release(arg) posix_acl_release(arg) #else void zpl_posix_acl_release_impl(struct posix_acl *); static inline void zpl_posix_acl_release(struct posix_acl *acl) { if ((acl == NULL) || (acl == ACL_NOT_CACHED)) return; #ifdef HAVE_ACL_REFCOUNT if (refcount_dec_and_test(&acl->a_refcount)) zpl_posix_acl_release_impl(acl); #else if (atomic_dec_and_test(&acl->a_refcount)) zpl_posix_acl_release_impl(acl); #endif } #endif /* HAVE_POSIX_ACL_RELEASE */ #ifdef HAVE_SET_CACHED_ACL_USABLE #define zpl_set_cached_acl(ip, ty, n) set_cached_acl(ip, ty, n) #define zpl_forget_cached_acl(ip, ty) forget_cached_acl(ip, ty) #else static inline void zpl_set_cached_acl(struct inode *ip, int type, struct posix_acl *newer) { struct posix_acl *older = NULL; spin_lock(&ip->i_lock); if ((newer != ACL_NOT_CACHED) && (newer != NULL)) posix_acl_dup(newer); switch (type) { case ACL_TYPE_ACCESS: older = ip->i_acl; rcu_assign_pointer(ip->i_acl, newer); break; case ACL_TYPE_DEFAULT: older = ip->i_default_acl; rcu_assign_pointer(ip->i_default_acl, newer); break; } spin_unlock(&ip->i_lock); zpl_posix_acl_release(older); } static inline void zpl_forget_cached_acl(struct inode *ip, int type) { zpl_set_cached_acl(ip, type, (struct posix_acl *)ACL_NOT_CACHED); } #endif /* HAVE_SET_CACHED_ACL_USABLE */ #ifndef HAVE___POSIX_ACL_CHMOD #ifdef HAVE_POSIX_ACL_CHMOD #define __posix_acl_chmod(acl, gfp, mode) posix_acl_chmod(acl, gfp, mode) #define __posix_acl_create(acl, gfp, mode) posix_acl_create(acl, gfp, mode) #else static inline int __posix_acl_chmod(struct posix_acl **acl, int flags, umode_t umode) { struct posix_acl *oldacl = *acl; mode_t mode = umode; int error; *acl = posix_acl_clone(*acl, flags); zpl_posix_acl_release(oldacl); if (!(*acl)) return (-ENOMEM); error = posix_acl_chmod_masq(*acl, mode); if (error) { zpl_posix_acl_release(*acl); *acl = NULL; } return (error); } static inline int __posix_acl_create(struct posix_acl **acl, int flags, umode_t *umodep) { struct posix_acl *oldacl = *acl; mode_t mode = *umodep; int error; *acl = posix_acl_clone(*acl, flags); zpl_posix_acl_release(oldacl); if (!(*acl)) return (-ENOMEM); error = posix_acl_create_masq(*acl, &mode); *umodep = mode; if (error < 0) { zpl_posix_acl_release(*acl); *acl = NULL; } return (error); } #endif /* HAVE_POSIX_ACL_CHMOD */ #endif /* HAVE___POSIX_ACL_CHMOD */ #ifdef HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T typedef umode_t zpl_equivmode_t; #else typedef mode_t zpl_equivmode_t; #endif /* HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T */ /* * 4.8 API change, * posix_acl_valid() now must be passed a namespace, the namespace from * from super block associated with the given inode is used for this purpose. */ #ifdef HAVE_POSIX_ACL_VALID_WITH_NS #define zpl_posix_acl_valid(ip, acl) posix_acl_valid(ip->i_sb->s_user_ns, acl) #else #define zpl_posix_acl_valid(ip, acl) posix_acl_valid(acl) #endif #endif /* CONFIG_FS_POSIX_ACL */ /* * 2.6.38 API change, * The is_owner_or_cap() function was renamed to inode_owner_or_capable(). */ #ifdef HAVE_INODE_OWNER_OR_CAPABLE #define zpl_inode_owner_or_capable(ip) inode_owner_or_capable(ip) #else #define zpl_inode_owner_or_capable(ip) is_owner_or_cap(ip) #endif /* HAVE_INODE_OWNER_OR_CAPABLE */ /* * 3.19 API change * struct access f->f_dentry->d_inode was replaced by accessor function * file_inode(f) */ #ifndef HAVE_FILE_INODE static inline struct inode *file_inode(const struct file *f) { return (f->f_dentry->d_inode); } #endif /* HAVE_FILE_INODE */ /* * 4.1 API change * struct access file->f_path.dentry was replaced by accessor function * file_dentry(f) */ #ifndef HAVE_FILE_DENTRY static inline struct dentry *file_dentry(const struct file *f) { return (f->f_path.dentry); } #endif /* HAVE_FILE_DENTRY */ #ifdef HAVE_KUID_HELPERS static inline uid_t zfs_uid_read_impl(struct inode *ip) { #ifdef HAVE_SUPER_USER_NS return (from_kuid(ip->i_sb->s_user_ns, ip->i_uid)); #else return (from_kuid(kcred->user_ns, ip->i_uid)); #endif } static inline uid_t zfs_uid_read(struct inode *ip) { return (zfs_uid_read_impl(ip)); } static inline gid_t zfs_gid_read_impl(struct inode *ip) { #ifdef HAVE_SUPER_USER_NS return (from_kgid(ip->i_sb->s_user_ns, ip->i_gid)); #else return (from_kgid(kcred->user_ns, ip->i_gid)); #endif } static inline gid_t zfs_gid_read(struct inode *ip) { return (zfs_gid_read_impl(ip)); } static inline void zfs_uid_write(struct inode *ip, uid_t uid) { #ifdef HAVE_SUPER_USER_NS ip->i_uid = make_kuid(ip->i_sb->s_user_ns, uid); #else ip->i_uid = make_kuid(kcred->user_ns, uid); #endif } static inline void zfs_gid_write(struct inode *ip, gid_t gid) { #ifdef HAVE_SUPER_USER_NS ip->i_gid = make_kgid(ip->i_sb->s_user_ns, gid); #else ip->i_gid = make_kgid(kcred->user_ns, gid); #endif } #else static inline uid_t zfs_uid_read(struct inode *ip) { return (ip->i_uid); } static inline gid_t zfs_gid_read(struct inode *ip) { return (ip->i_gid); } static inline void zfs_uid_write(struct inode *ip, uid_t uid) { ip->i_uid = uid; } static inline void zfs_gid_write(struct inode *ip, gid_t gid) { ip->i_gid = gid; } #endif /* * 2.6.38 API change */ #ifdef HAVE_FOLLOW_DOWN_ONE #define zpl_follow_down_one(path) follow_down_one(path) #define zpl_follow_up(path) follow_up(path) #else #define zpl_follow_down_one(path) follow_down(path) #define zpl_follow_up(path) follow_up(path) #endif /* * 4.9 API change */ #ifndef HAVE_SETATTR_PREPARE static inline int setattr_prepare(struct dentry *dentry, struct iattr *ia) { return (inode_change_ok(dentry->d_inode, ia)); } #endif /* * 4.11 API change * These macros are defined by kernel 4.11. We define them so that the same * code builds under kernels < 4.11 and >= 4.11. The macros are set to 0 so * that it will create obvious failures if they are accidentally used when built * against a kernel >= 4.11. */ #ifndef STATX_BASIC_STATS #define STATX_BASIC_STATS 0 #endif #ifndef AT_STATX_SYNC_AS_STAT #define AT_STATX_SYNC_AS_STAT 0 #endif /* * 4.11 API change * 4.11 takes struct path *, < 4.11 takes vfsmount * */ #ifdef HAVE_VFSMOUNT_IOPS_GETATTR #define ZPL_GETATTR_WRAPPER(func) \ static int \ func(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) \ { \ struct path path = { .mnt = mnt, .dentry = dentry }; \ return func##_impl(&path, stat, STATX_BASIC_STATS, \ AT_STATX_SYNC_AS_STAT); \ } #elif defined(HAVE_PATH_IOPS_GETATTR) #define ZPL_GETATTR_WRAPPER(func) \ static int \ func(const struct path *path, struct kstat *stat, u32 request_mask, \ unsigned int query_flags) \ { \ return (func##_impl(path, stat, request_mask, query_flags)); \ } #else #error #endif /* * 4.9 API change * Preferred interface to get the current FS time. */ #if !defined(HAVE_CURRENT_TIME) static inline struct timespec current_time(struct inode *ip) { return (timespec_trunc(current_kernel_time(), ip->i_sb->s_time_gran)); } #endif /* * 4.16 API change * Added iversion interface for managing inode version field. */ #ifdef HAVE_INODE_SET_IVERSION #include #else static inline void inode_set_iversion(struct inode *ip, u64 val) { ip->i_version = val; } #endif /* * Returns true when called in the context of a 32-bit system call. */ static inline int zpl_is_32bit_api(void) { #ifdef CONFIG_COMPAT #ifdef HAVE_IN_COMPAT_SYSCALL return (in_compat_syscall()); #else return (is_compat_task()); #endif #else return (BITS_PER_LONG == 32); #endif } #endif /* _ZFS_VFS_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/simd.h0000644000000000000000000000007413612141515017301 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.007410761 zfs-0.8.3/include/linux/simd.h0000644016037001603700000000231013612141515017272 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2019 Lawrence Livermore National Security, LLC. */ #ifndef _SIMD_H #define _SIMD_H #if defined(__x86) #include #elif defined(__aarch64__) #include #else #define kfpu_allowed() 0 #define kfpu_begin() do {} while (0) #define kfpu_end() do {} while (0) #define kfpu_init() 0 #define kfpu_fini() ((void) 0) #endif #endif /* _SIMD_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/utsname_compat.h0000644000000000000000000000007413607166147021400 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.003410633 zfs-0.8.3/include/linux/utsname_compat.h0000644016037001603700000000170313607166147021376 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #ifndef _ZFS_UTSNAME_H #define _ZFS_UTSNAME_H #include typedef struct new_utsname utsname_t; #endif /* _ZFS_UTSNAME_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774020244 xustar000000000000000030 mtime=1579730428.836120974 30 atime=1579730452.763889221 30 ctime=1579730469.022411244 zfs-0.8.3/include/linux/Makefile.in0000664016037001603700000006554613612142774020270 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include/linux DIST_COMMON = $(am__kernel_HEADERS_DIST) $(libzfs_HEADERS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__kernel_HEADERS_DIST = $(top_srcdir)/include/linux/dcache_compat.h \ $(top_srcdir)/include/linux/xattr_compat.h \ $(top_srcdir)/include/linux/vfs_compat.h \ $(top_srcdir)/include/linux/blkdev_compat.h \ $(top_srcdir)/include/linux/utsname_compat.h \ $(top_srcdir)/include/linux/kmap_compat.h \ $(top_srcdir)/include/linux/simd.h \ $(top_srcdir)/include/linux/simd_x86.h \ $(top_srcdir)/include/linux/simd_aarch64.h \ $(top_srcdir)/include/linux/mod_compat.h \ $(top_srcdir)/include/linux/page_compat.h \ $(top_srcdir)/include/linux/compiler_compat.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ COMMON_H = KERNEL_H = \ $(top_srcdir)/include/linux/dcache_compat.h \ $(top_srcdir)/include/linux/xattr_compat.h \ $(top_srcdir)/include/linux/vfs_compat.h \ $(top_srcdir)/include/linux/blkdev_compat.h \ $(top_srcdir)/include/linux/utsname_compat.h \ $(top_srcdir)/include/linux/kmap_compat.h \ $(top_srcdir)/include/linux/simd.h \ $(top_srcdir)/include/linux/simd_x86.h \ $(top_srcdir)/include/linux/simd_aarch64.h \ $(top_srcdir)/include/linux/mod_compat.h \ $(top_srcdir)/include/linux/page_compat.h \ $(top_srcdir)/include/linux/compiler_compat.h USER_H = EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs/linux @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include/linux @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) $(KERNEL_H) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/linux/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/linux/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/linux/PaxHeaders.151519/xattr_compat.h0000644000000000000000000000007413607166147021066 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.996410409 zfs-0.8.3/include/linux/xattr_compat.h0000644016037001603700000001676513607166147021102 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2011 Lawrence Livermore National Security, LLC. */ #ifndef _ZFS_XATTR_H #define _ZFS_XATTR_H #include /* * 2.6.35 API change, * The const keyword was added to the 'struct xattr_handler' in the * generic Linux super_block structure. To handle this we define an * appropriate xattr_handler_t typedef which can be used. This was * the preferred solution because it keeps the code clean and readable. */ #ifdef HAVE_CONST_XATTR_HANDLER typedef const struct xattr_handler xattr_handler_t; #else typedef struct xattr_handler xattr_handler_t; #endif /* * 3.7 API change, * Preferred XATTR_NAME_* definitions introduced, these are mapped to * the previous definitions for older kernels. */ #ifndef XATTR_NAME_POSIX_ACL_DEFAULT #define XATTR_NAME_POSIX_ACL_DEFAULT POSIX_ACL_XATTR_DEFAULT #endif #ifndef XATTR_NAME_POSIX_ACL_ACCESS #define XATTR_NAME_POSIX_ACL_ACCESS POSIX_ACL_XATTR_ACCESS #endif /* * 4.5 API change, */ #if defined(HAVE_XATTR_LIST_SIMPLE) #define ZPL_XATTR_LIST_WRAPPER(fn) \ static bool \ fn(struct dentry *dentry) \ { \ return (!!__ ## fn(dentry->d_inode, NULL, 0, NULL, 0)); \ } /* * 4.4 API change, */ #elif defined(HAVE_XATTR_LIST_DENTRY) #define ZPL_XATTR_LIST_WRAPPER(fn) \ static size_t \ fn(struct dentry *dentry, char *list, size_t list_size, \ const char *name, size_t name_len, int type) \ { \ return (__ ## fn(dentry->d_inode, \ list, list_size, name, name_len)); \ } /* * 2.6.33 API change, */ #elif defined(HAVE_XATTR_LIST_HANDLER) #define ZPL_XATTR_LIST_WRAPPER(fn) \ static size_t \ fn(const struct xattr_handler *handler, struct dentry *dentry, \ char *list, size_t list_size, const char *name, size_t name_len) \ { \ return (__ ## fn(dentry->d_inode, \ list, list_size, name, name_len)); \ } /* * 2.6.32 API */ #elif defined(HAVE_XATTR_LIST_INODE) #define ZPL_XATTR_LIST_WRAPPER(fn) \ static size_t \ fn(struct inode *ip, char *list, size_t list_size, \ const char *name, size_t name_len) \ { \ return (__ ## fn(ip, list, list_size, name, name_len)); \ } #endif /* * 4.7 API change, * The xattr_handler->get() callback was changed to take a both dentry and * inode, because the dentry might not be attached to an inode yet. */ #if defined(HAVE_XATTR_GET_DENTRY_INODE) #define ZPL_XATTR_GET_WRAPPER(fn) \ static int \ fn(const struct xattr_handler *handler, struct dentry *dentry, \ struct inode *inode, const char *name, void *buffer, size_t size) \ { \ return (__ ## fn(inode, name, buffer, size)); \ } /* * 4.4 API change, * The xattr_handler->get() callback was changed to take a xattr_handler, * and handler_flags argument was removed and should be accessed by * handler->flags. */ #elif defined(HAVE_XATTR_GET_HANDLER) #define ZPL_XATTR_GET_WRAPPER(fn) \ static int \ fn(const struct xattr_handler *handler, struct dentry *dentry, \ const char *name, void *buffer, size_t size) \ { \ return (__ ## fn(dentry->d_inode, name, buffer, size)); \ } /* * 2.6.33 API change, * The xattr_handler->get() callback was changed to take a dentry * instead of an inode, and a handler_flags argument was added. */ #elif defined(HAVE_XATTR_GET_DENTRY) #define ZPL_XATTR_GET_WRAPPER(fn) \ static int \ fn(struct dentry *dentry, const char *name, void *buffer, size_t size, \ int unused_handler_flags) \ { \ return (__ ## fn(dentry->d_inode, name, buffer, size)); \ } /* * 2.6.32 API */ #elif defined(HAVE_XATTR_GET_INODE) #define ZPL_XATTR_GET_WRAPPER(fn) \ static int \ fn(struct inode *ip, const char *name, void *buffer, size_t size) \ { \ return (__ ## fn(ip, name, buffer, size)); \ } #endif /* * 4.7 API change, * The xattr_handler->set() callback was changed to take a both dentry and * inode, because the dentry might not be attached to an inode yet. */ #if defined(HAVE_XATTR_SET_DENTRY_INODE) #define ZPL_XATTR_SET_WRAPPER(fn) \ static int \ fn(const struct xattr_handler *handler, struct dentry *dentry, \ struct inode *inode, const char *name, const void *buffer, \ size_t size, int flags) \ { \ return (__ ## fn(inode, name, buffer, size, flags)); \ } /* * 4.4 API change, * The xattr_handler->set() callback was changed to take a xattr_handler, * and handler_flags argument was removed and should be accessed by * handler->flags. */ #elif defined(HAVE_XATTR_SET_HANDLER) #define ZPL_XATTR_SET_WRAPPER(fn) \ static int \ fn(const struct xattr_handler *handler, struct dentry *dentry, \ const char *name, const void *buffer, size_t size, int flags) \ { \ return (__ ## fn(dentry->d_inode, name, buffer, size, flags)); \ } /* * 2.6.33 API change, * The xattr_handler->set() callback was changed to take a dentry * instead of an inode, and a handler_flags argument was added. */ #elif defined(HAVE_XATTR_SET_DENTRY) #define ZPL_XATTR_SET_WRAPPER(fn) \ static int \ fn(struct dentry *dentry, const char *name, const void *buffer, \ size_t size, int flags, int unused_handler_flags) \ { \ return (__ ## fn(dentry->d_inode, name, buffer, size, flags)); \ } /* * 2.6.32 API */ #elif defined(HAVE_XATTR_SET_INODE) #define ZPL_XATTR_SET_WRAPPER(fn) \ static int \ fn(struct inode *ip, const char *name, const void *buffer, \ size_t size, int flags) \ { \ return (__ ## fn(ip, name, buffer, size, flags)); \ } #endif #ifdef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY #define zpl_security_inode_init_security(ip, dip, qstr, nm, val, len) \ security_inode_init_security(ip, dip, qstr, nm, val, len) #else #define zpl_security_inode_init_security(ip, dip, qstr, nm, val, len) \ security_inode_init_security(ip, dip, nm, val, len) #endif /* HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY */ /* * Linux 3.7 API change. posix_acl_{from,to}_xattr gained the user_ns * parameter. All callers are expected to pass the &init_user_ns which * is available through the init credential (kcred). */ #ifdef HAVE_POSIX_ACL_FROM_XATTR_USERNS static inline struct posix_acl * zpl_acl_from_xattr(const void *value, int size) { return (posix_acl_from_xattr(kcred->user_ns, value, size)); } static inline int zpl_acl_to_xattr(struct posix_acl *acl, void *value, int size) { return (posix_acl_to_xattr(kcred->user_ns, acl, value, size)); } #else static inline struct posix_acl * zpl_acl_from_xattr(const void *value, int size) { return (posix_acl_from_xattr(value, size)); } static inline int zpl_acl_to_xattr(struct posix_acl *acl, void *value, int size) { return (posix_acl_to_xattr(acl, value, size)); } #endif /* HAVE_POSIX_ACL_FROM_XATTR_USERNS */ #endif /* _ZFS_XATTR_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/compiler_compat.h0000644000000000000000000000007413607166147021536 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.018411116 zfs-0.8.3/include/linux/compiler_compat.h0000644016037001603700000000210313607166147021527 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2018 Lawrence Livermore National Security, LLC. */ #ifndef _ZFS_COMPILER_COMPAT_H #define _ZFS_COMPILER_COMPAT_H #include #if !defined(READ_ONCE) #define READ_ONCE(x) ACCESS_ONCE(x) #endif #endif /* _ZFS_COMPILER_COMPAT_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/mod_compat.h0000644000000000000000000000007413607166147020503 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730469.013410953 zfs-0.8.3/include/linux/mod_compat.h0000644016037001603700000000226213607166147020502 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2016 Gvozden Neskovic . */ #ifndef _MOD_COMPAT_H #define _MOD_COMPAT_H #include #include /* Grsecurity kernel API change */ #ifdef MODULE_PARAM_CALL_CONST typedef const struct kernel_param zfs_kernel_param_t; #else typedef struct kernel_param zfs_kernel_param_t; #endif #endif /* _MOD_COMPAT_H */ zfs-0.8.3/include/linux/PaxHeaders.151519/page_compat.h0000644000000000000000000000007313607166147020637 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730469.01641105 zfs-0.8.3/include/linux/page_compat.h0000644016037001603700000000550313607166147020640 0ustar00hutter2hutter200000000000000#ifndef _ZFS_PAGE_COMPAT_H #define _ZFS_PAGE_COMPAT_H /* * We have various enum members moving between two separate enum types, * and accessed by different functions at various times. Centralise the * insanity. * * < v4.8: all enums in zone_stat_item, via global_page_state() * v4.8: some enums moved to node_stat_item, global_node_page_state() introduced * v4.13: some enums moved from zone_stat_item to node_state_item * v4.14: global_page_state() rename to global_zone_page_state() * * The defines used here are created by config/kernel-global_page_state.m4 */ /* * Create our own accessor functions to follow the Linux API changes */ #if defined(ZFS_GLOBAL_ZONE_PAGE_STATE) /* global_zone_page_state() introduced */ #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES) #define nr_file_pages() global_node_page_state(NR_FILE_PAGES) #else #define nr_file_pages() global_zone_page_state(NR_FILE_PAGES) #endif #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON) #define nr_inactive_anon_pages() global_node_page_state(NR_INACTIVE_ANON) #else #define nr_inactive_anon_pages() global_zone_page_state(NR_INACTIVE_ANON) #endif #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE) #define nr_inactive_file_pages() global_node_page_state(NR_INACTIVE_FILE) #else #define nr_inactive_file_pages() global_zone_page_state(NR_INACTIVE_FILE) #endif #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE) #define nr_slab_reclaimable_pages() global_node_page_state(NR_SLAB_RECLAIMABLE) #else #define nr_slab_reclaimable_pages() global_zone_page_state(NR_SLAB_RECLAIMABLE) #endif #elif defined(ZFS_GLOBAL_NODE_PAGE_STATE) /* global_node_page_state() introduced */ #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES) #define nr_file_pages() global_node_page_state(NR_FILE_PAGES) #else #define nr_file_pages() global_page_state(NR_FILE_PAGES) #endif #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON) #define nr_inactive_anon_pages() global_node_page_state(NR_INACTIVE_ANON) #else #define nr_inactive_anon_pages() global_page_state(NR_INACTIVE_ANON) #endif #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE) #define nr_inactive_file_pages() global_node_page_state(NR_INACTIVE_FILE) #else #define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE) #endif #if defined(ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE) #define nr_slab_reclaimable_pages() global_node_page_state(NR_SLAB_RECLAIMABLE) #else #define nr_slab_reclaimable_pages() global_page_state(NR_SLAB_RECLAIMABLE) #endif #else /* global_page_state() only */ #define nr_file_pages() global_page_state(NR_FILE_PAGES) #define nr_inactive_anon_pages() global_page_state(NR_INACTIVE_ANON) #define nr_inactive_file_pages() global_page_state(NR_INACTIVE_FILE) #define nr_slab_reclaimable_pages() global_page_state(NR_SLAB_RECLAIMABLE) #endif /* ZFS_GLOBAL_ZONE_PAGE_STATE */ #endif /* _ZFS_PAGE_COMPAT_H */ zfs-0.8.3/include/PaxHeaders.151519/libzutil.h0000644000000000000000000000007413607166147017060 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.923408064 zfs-0.8.3/include/libzutil.h0000644016037001603700000001145113607166147017057 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2018 by Delphix. All rights reserved. */ #ifndef _LIBZUTIL_H #define _LIBZUTIL_H #include #include #ifdef __cplusplus extern "C" { #endif /* * Default wait time for a device name to be created. */ #define DISK_LABEL_WAIT (30 * 1000) /* 30 seconds */ /* * Pool Config Operations * * These are specific to the library libzfs or libzpool instance. */ typedef nvlist_t *refresh_config_func_t(void *, nvlist_t *); typedef int pool_active_func_t(void *, const char *, uint64_t, boolean_t *); typedef const struct pool_config_ops { refresh_config_func_t *pco_refresh_config; pool_active_func_t *pco_pool_active; } pool_config_ops_t; /* * An instance of pool_config_ops_t is expected in the caller's binary. */ extern const pool_config_ops_t libzfs_config_ops; extern const pool_config_ops_t libzpool_config_ops; typedef struct importargs { char **path; /* a list of paths to search */ int paths; /* number of paths to search */ const char *poolname; /* name of a pool to find */ uint64_t guid; /* guid of a pool to find */ const char *cachefile; /* cachefile to use for import */ boolean_t can_be_active; /* can the pool be active? */ boolean_t scan; /* prefer scanning to libblkid cache */ nvlist_t *policy; /* load policy (max txg, rewind, etc.) */ } importargs_t; extern nvlist_t *zpool_search_import(void *, importargs_t *, const pool_config_ops_t *); extern int zpool_find_config(void *, const char *, nvlist_t **, importargs_t *, const pool_config_ops_t *); extern const char * const * zpool_default_search_paths(size_t *count); extern int zpool_read_label(int, nvlist_t **, int *); extern int zpool_label_disk_wait(const char *, int); #ifdef HAVE_LIBUDEV struct udev_device; extern int zfs_device_get_devid(struct udev_device *, char *, size_t); extern int zfs_device_get_physical(struct udev_device *, char *, size_t); #else #define zfs_device_get_devid(dev, bufptr, buflen) (ENODATA) #define zfs_device_get_physical(dev, bufptr, buflen) (ENODATA) #endif extern void update_vdev_config_dev_strs(nvlist_t *); /* * Default device paths */ #define DISK_ROOT "/dev" #define UDISK_ROOT "/dev/disk" #define ZVOL_ROOT "/dev/zvol" extern int zfs_append_partition(char *path, size_t max_len); extern int zfs_resolve_shortname(const char *name, char *path, size_t pathlen); extern char *zfs_strip_partition(char *); extern char *zfs_strip_partition_path(char *); extern int zfs_strcmp_pathname(const char *, const char *, int); extern int zfs_dev_is_dm(const char *); extern int zfs_dev_is_whole_disk(const char *); extern char *zfs_get_underlying_path(const char *); extern char *zfs_get_enclosure_sysfs_path(const char *); #ifdef HAVE_LIBUDEV extern boolean_t is_mpath_whole_disk(const char *); #else #define is_mpath_whole_disk(path) (B_FALSE) #endif /* * Formats for iostat numbers. Examples: "12K", "30ms", "4B", "2321234", "-". * * ZFS_NICENUM_1024: Print kilo, mega, tera, peta, exa.. * ZFS_NICENUM_BYTES: Print single bytes ("13B"), kilo, mega, tera... * ZFS_NICENUM_TIME: Print nanosecs, microsecs, millisecs, seconds... * ZFS_NICENUM_RAW: Print the raw number without any formatting * ZFS_NICENUM_RAWTIME: Same as RAW, but print dashes ('-') for zero. */ enum zfs_nicenum_format { ZFS_NICENUM_1024 = 0, ZFS_NICENUM_BYTES = 1, ZFS_NICENUM_TIME = 2, ZFS_NICENUM_RAW = 3, ZFS_NICENUM_RAWTIME = 4 }; /* * Convert a number to a human-readable form. */ extern void zfs_nicebytes(uint64_t, char *, size_t); extern void zfs_nicenum(uint64_t, char *, size_t); extern void zfs_nicenum_format(uint64_t, char *, size_t, enum zfs_nicenum_format); extern void zfs_nicetime(uint64_t, char *, size_t); #define nicenum(num, buf, size) zfs_nicenum(num, buf, size) extern void zpool_dump_ddt(const ddt_stat_t *, const ddt_histogram_t *); extern int zpool_history_unpack(char *, uint64_t, uint64_t *, nvlist_t ***, uint_t *); #ifdef __cplusplus } #endif #endif /* _LIBZUTIL_H */ zfs-0.8.3/include/PaxHeaders.151519/libzfs_impl.h0000644000000000000000000000007113607166147017531 xustar000000000000000030 atime=1579730360.849765597 27 ctime=1579730468.921408 zfs-0.8.3/include/libzfs_impl.h0000644016037001603700000001502313607166147017532 0ustar00hutter2hutter200000000000000/* * CDDL HEADER SART * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2017 by Delphix. All rights reserved. * Copyright (c) 2018 Datto Inc. */ #ifndef _LIBZFS_IMPL_H #define _LIBZFS_IMPL_H #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif struct libzfs_handle { int libzfs_error; int libzfs_fd; FILE *libzfs_mnttab; FILE *libzfs_sharetab; zpool_handle_t *libzfs_pool_handles; uu_avl_pool_t *libzfs_ns_avlpool; uu_avl_t *libzfs_ns_avl; uint64_t libzfs_ns_gen; int libzfs_desc_active; char libzfs_action[1024]; char libzfs_desc[1024]; int libzfs_printerr; int libzfs_storeerr; /* stuff error messages into buffer */ void *libzfs_sharehdl; /* libshare handle */ uint_t libzfs_shareflags; boolean_t libzfs_mnttab_enable; /* * We need a lock to handle the case where parallel mount * threads are populating the mnttab cache simultaneously. The * lock only protects the integrity of the avl tree, and does * not protect the contents of the mnttab entries themselves. */ pthread_mutex_t libzfs_mnttab_cache_lock; avl_tree_t libzfs_mnttab_cache; int libzfs_pool_iter; char libzfs_chassis_id[256]; boolean_t libzfs_prop_debug; }; #define ZFSSHARE_MISS 0x01 /* Didn't find entry in cache */ struct zfs_handle { libzfs_handle_t *zfs_hdl; zpool_handle_t *zpool_hdl; char zfs_name[ZFS_MAX_DATASET_NAME_LEN]; zfs_type_t zfs_type; /* type including snapshot */ zfs_type_t zfs_head_type; /* type excluding snapshot */ dmu_objset_stats_t zfs_dmustats; nvlist_t *zfs_props; nvlist_t *zfs_user_props; nvlist_t *zfs_recvd_props; boolean_t zfs_mntcheck; char *zfs_mntopts; uint8_t *zfs_props_table; }; /* * This is different from checking zfs_type, because it will also catch * snapshots of volumes. */ #define ZFS_IS_VOLUME(zhp) ((zhp)->zfs_head_type == ZFS_TYPE_VOLUME) struct zpool_handle { libzfs_handle_t *zpool_hdl; zpool_handle_t *zpool_next; char zpool_name[ZFS_MAX_DATASET_NAME_LEN]; int zpool_state; size_t zpool_config_size; nvlist_t *zpool_config; nvlist_t *zpool_old_config; nvlist_t *zpool_props; diskaddr_t zpool_start_block; }; typedef enum { PROTO_NFS = 0, PROTO_SMB = 1, PROTO_END = 2 } zfs_share_proto_t; /* * The following can be used as a bitmask and any new values * added must preserve that capability. */ typedef enum { SHARED_NOT_SHARED = 0x0, SHARED_NFS = 0x2, SHARED_SMB = 0x4 } zfs_share_type_t; #define CONFIG_BUF_MINSIZE 262144 int zfs_error(libzfs_handle_t *, int, const char *); int zfs_error_fmt(libzfs_handle_t *, int, const char *, ...); void zfs_error_aux(libzfs_handle_t *, const char *, ...); void *zfs_alloc(libzfs_handle_t *, size_t); void *zfs_realloc(libzfs_handle_t *, void *, size_t, size_t); char *zfs_asprintf(libzfs_handle_t *, const char *, ...); char *zfs_strdup(libzfs_handle_t *, const char *); int no_memory(libzfs_handle_t *); int zfs_standard_error(libzfs_handle_t *, int, const char *); int zfs_standard_error_fmt(libzfs_handle_t *, int, const char *, ...); int zpool_standard_error(libzfs_handle_t *, int, const char *); int zpool_standard_error_fmt(libzfs_handle_t *, int, const char *, ...); zfs_handle_t *make_dataset_handle_zc(libzfs_handle_t *, zfs_cmd_t *); zfs_handle_t *make_dataset_simple_handle_zc(zfs_handle_t *, zfs_cmd_t *); int zprop_parse_value(libzfs_handle_t *, nvpair_t *, int, zfs_type_t, nvlist_t *, char **, uint64_t *, const char *); int zprop_expand_list(libzfs_handle_t *hdl, zprop_list_t **plp, zfs_type_t type); /* * Use this changelist_gather() flag to force attempting mounts * on each change node regardless of whether or not it is currently * mounted. */ #define CL_GATHER_MOUNT_ALWAYS 1 /* * changelist_gather() flag to force it to iterate on mounted datasets only */ #define CL_GATHER_ITER_MOUNTED 2 typedef struct prop_changelist prop_changelist_t; int zcmd_alloc_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *, size_t); int zcmd_write_src_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t *); int zcmd_write_conf_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t *); int zcmd_expand_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *); int zcmd_read_dst_nvlist(libzfs_handle_t *, zfs_cmd_t *, nvlist_t **); void zcmd_free_nvlists(zfs_cmd_t *); int changelist_prefix(prop_changelist_t *); int changelist_postfix(prop_changelist_t *); void changelist_rename(prop_changelist_t *, const char *, const char *); void changelist_remove(prop_changelist_t *, const char *); void changelist_free(prop_changelist_t *); prop_changelist_t *changelist_gather(zfs_handle_t *, zfs_prop_t, int, int); int changelist_unshare(prop_changelist_t *, zfs_share_proto_t *); int changelist_haszonedchild(prop_changelist_t *); void remove_mountpoint(zfs_handle_t *); int create_parents(libzfs_handle_t *, char *, int); boolean_t isa_child_of(const char *dataset, const char *parent); zfs_handle_t *make_dataset_handle(libzfs_handle_t *, const char *); zfs_handle_t *make_bookmark_handle(zfs_handle_t *, const char *, nvlist_t *props); int zpool_open_silent(libzfs_handle_t *, const char *, zpool_handle_t **); boolean_t zpool_name_valid(libzfs_handle_t *, boolean_t, const char *); int zfs_validate_name(libzfs_handle_t *hdl, const char *path, int type, boolean_t modifying); void namespace_clear(libzfs_handle_t *); /* * libshare (sharemgr) interfaces used internally. */ extern int zfs_init_libshare(libzfs_handle_t *, int); extern void zfs_uninit_libshare(libzfs_handle_t *); extern int zfs_parse_options(char *, zfs_share_proto_t); extern int zfs_unshare_proto(zfs_handle_t *, const char *, zfs_share_proto_t *); #ifdef __cplusplus } #endif #endif /* _LIBZFS_IMPL_H */ zfs-0.8.3/include/PaxHeaders.151519/zfs_deleg.h0000644000000000000000000000007413607166147017164 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.898407261 zfs-0.8.3/include/zfs_deleg.h0000644016037001603700000000526413607166147017170 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2010 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2013, 2015 by Delphix. All rights reserved. */ #ifndef _ZFS_DELEG_H #define _ZFS_DELEG_H #include #ifdef __cplusplus extern "C" { #endif #define ZFS_DELEG_SET_NAME_CHR '@' /* set name lead char */ #define ZFS_DELEG_FIELD_SEP_CHR '$' /* field separator */ /* * Max name length for a delegation attribute */ #define ZFS_MAX_DELEG_NAME 128 #define ZFS_DELEG_LOCAL 'l' #define ZFS_DELEG_DESCENDENT 'd' #define ZFS_DELEG_NA '-' typedef enum { ZFS_DELEG_NOTE_CREATE, ZFS_DELEG_NOTE_DESTROY, ZFS_DELEG_NOTE_SNAPSHOT, ZFS_DELEG_NOTE_ROLLBACK, ZFS_DELEG_NOTE_CLONE, ZFS_DELEG_NOTE_PROMOTE, ZFS_DELEG_NOTE_RENAME, ZFS_DELEG_NOTE_SEND, ZFS_DELEG_NOTE_RECEIVE, ZFS_DELEG_NOTE_ALLOW, ZFS_DELEG_NOTE_USERPROP, ZFS_DELEG_NOTE_MOUNT, ZFS_DELEG_NOTE_SHARE, ZFS_DELEG_NOTE_USERQUOTA, ZFS_DELEG_NOTE_GROUPQUOTA, ZFS_DELEG_NOTE_USERUSED, ZFS_DELEG_NOTE_GROUPUSED, ZFS_DELEG_NOTE_USEROBJQUOTA, ZFS_DELEG_NOTE_GROUPOBJQUOTA, ZFS_DELEG_NOTE_USEROBJUSED, ZFS_DELEG_NOTE_GROUPOBJUSED, ZFS_DELEG_NOTE_HOLD, ZFS_DELEG_NOTE_RELEASE, ZFS_DELEG_NOTE_DIFF, ZFS_DELEG_NOTE_BOOKMARK, ZFS_DELEG_NOTE_LOAD_KEY, ZFS_DELEG_NOTE_CHANGE_KEY, ZFS_DELEG_NOTE_PROJECTUSED, ZFS_DELEG_NOTE_PROJECTQUOTA, ZFS_DELEG_NOTE_PROJECTOBJUSED, ZFS_DELEG_NOTE_PROJECTOBJQUOTA, ZFS_DELEG_NOTE_REMAP, ZFS_DELEG_NOTE_NONE } zfs_deleg_note_t; typedef struct zfs_deleg_perm_tab { char *z_perm; zfs_deleg_note_t z_note; } zfs_deleg_perm_tab_t; extern zfs_deleg_perm_tab_t zfs_deleg_perm_tab[]; int zfs_deleg_verify_nvlist(nvlist_t *nvlist); void zfs_deleg_whokey(char *attr, zfs_deleg_who_type_t type, char checkflag, void *data); const char *zfs_deleg_canonicalize_perm(const char *perm); #ifdef __cplusplus } #endif #endif /* _ZFS_DELEG_H */ zfs-0.8.3/include/PaxHeaders.151519/libnvpair.h0000644000000000000000000000007413607166132017202 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.908407583 zfs-0.8.3/include/libnvpair.h0000644016037001603700000001647013607166132017207 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013, Joyent, Inc. All rights reserved. */ #ifndef _LIBNVPAIR_H #define _LIBNVPAIR_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif /* * All interfaces described in this file are private to Solaris, and * are subject to change at any time and without notice. The public * nvlist/nvpair interfaces, as documented in manpage sections 3NVPAIR, * are all imported from included above. */ extern int nvpair_value_match(nvpair_t *, int, char *, char **); extern int nvpair_value_match_regex(nvpair_t *, int, char *, regex_t *, char **); extern void nvlist_print(FILE *, nvlist_t *); int nvlist_print_json(FILE *, nvlist_t *); extern void dump_nvlist(nvlist_t *, int); /* * Private nvlist printing interface that allows the caller some control * over output rendering (as opposed to nvlist_print and dump_nvlist). * * Obtain an opaque nvlist_prtctl_t cookie using nvlist_prtctl_alloc * (NULL on failure); on return the cookie is set up for default formatting * and rendering. Quote the cookie in subsequent customisation functions and * then pass the cookie to nvlist_prt to render the nvlist. Finally, * use nvlist_prtctl_free to release the cookie. * * For all nvlist_lookup_xxx and nvlist_lookup_xxx_array functions * we have a corresponding brace of functions that appoint replacement * rendering functions: * * extern void nvlist_prtctl_xxx(nvlist_prtctl_t, * void (*)(nvlist_prtctl_t ctl, void *private, const char *name, * xxxtype value)) * * and * * extern void nvlist_prtctl_xxx_array(nvlist_prtctl_t, * void (*)(nvlist_prtctl_t ctl, void *private, const char *name, * xxxtype value, uint_t count)) * * where xxxtype is the C datatype corresponding to xxx, eg int8_t for "int8" * and char * for "string". The function that is appointed to render the * specified datatype receives as arguments the cookie, the nvlist * member name, the value of that member (or a pointer for array function), * and (for array rendering functions) a count of the number of elements. */ typedef struct nvlist_prtctl *nvlist_prtctl_t; /* opaque */ enum nvlist_indent_mode { NVLIST_INDENT_ABS, /* Absolute indentation */ NVLIST_INDENT_TABBED /* Indent with tabstops */ }; extern nvlist_prtctl_t nvlist_prtctl_alloc(void); extern void nvlist_prtctl_free(nvlist_prtctl_t); extern void nvlist_prt(nvlist_t *, nvlist_prtctl_t); /* Output stream */ extern void nvlist_prtctl_setdest(nvlist_prtctl_t, FILE *); extern FILE *nvlist_prtctl_getdest(nvlist_prtctl_t); /* Indentation mode, start indent, indent increment; default tabbed/0/1 */ extern void nvlist_prtctl_setindent(nvlist_prtctl_t, enum nvlist_indent_mode, int, int); extern void nvlist_prtctl_doindent(nvlist_prtctl_t, int); enum nvlist_prtctl_fmt { NVLIST_FMT_MEMBER_NAME, /* name fmt; default "%s = " */ NVLIST_FMT_MEMBER_POSTAMBLE, /* after nvlist member; default "\n" */ NVLIST_FMT_BTWN_ARRAY /* between array members; default " " */ }; extern void nvlist_prtctl_setfmt(nvlist_prtctl_t, enum nvlist_prtctl_fmt, const char *); extern void nvlist_prtctl_dofmt(nvlist_prtctl_t, enum nvlist_prtctl_fmt, ...); /* * Function prototypes for interfaces that appoint a new rendering function * for single-valued nvlist members. * * A replacement function receives arguments as follows: * * nvlist_prtctl_t Print control structure; do not change preferences * for this object from a print callback function. * * void * The function-private cookie argument registered * when the replacement function was appointed. * * nvlist_t * The full nvlist that is being processed. The * rendering function is called to render a single * member (name and value passed as below) but it may * want to reference or incorporate other aspects of * the full nvlist. * * const char * Member name to render * * valtype Value of the member to render * * The function must return non-zero if it has rendered output for this * member, or 0 if it wants to default to standard rendering for this * one member. */ #define NVLIST_PRINTCTL_SVDECL(funcname, valtype) \ extern void funcname(nvlist_prtctl_t, \ int (*)(nvlist_prtctl_t, void *, nvlist_t *, const char *, valtype), \ void *) NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_boolean, int); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_boolean_value, boolean_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_byte, uchar_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_int8, int8_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_uint8, uint8_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_int16, int16_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_uint16, uint16_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_int32, int32_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_uint32, uint32_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_int64, int64_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_uint64, uint64_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_double, double); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_string, char *); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_hrtime, hrtime_t); NVLIST_PRINTCTL_SVDECL(nvlist_prtctlop_nvlist, nvlist_t *); #undef NVLIST_PRINTCTL_SVDECL /* was just for "clarity" above */ /* * Function prototypes for interfaces that appoint a new rendering function * for array-valued nvlist members. * * One additional argument is taken: uint_t for the number of array elements * * Return values as above. */ #define NVLIST_PRINTCTL_AVDECL(funcname, vtype) \ extern void funcname(nvlist_prtctl_t, \ int (*)(nvlist_prtctl_t, void *, nvlist_t *, const char *, vtype, uint_t), \ void *) NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_boolean_array, boolean_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_byte_array, uchar_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_int8_array, int8_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_uint8_array, uint8_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_int16_array, int16_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_uint16_array, uint16_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_int32_array, int32_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_uint32_array, uint32_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_int64_array, int64_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_uint64_array, uint64_t *); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_string_array, char **); NVLIST_PRINTCTL_AVDECL(nvlist_prtctlop_nvlist_array, nvlist_t **); #undef NVLIST_PRINTCTL_AVDECL /* was just for "clarity" above */ #ifdef __cplusplus } #endif #endif /* _LIBNVPAIR_H */ zfs-0.8.3/include/PaxHeaders.151519/zfs_gitrev.h0000644000000000000000000000013213612143071017362 xustar000000000000000030 mtime=1579730489.063054713 30 atime=1579730489.063054713 30 ctime=1579730489.063054713 zfs-0.8.3/include/zfs_gitrev.h0000664016037001603700000000006513612143071017367 0ustar00hutter2hutter200000000000000#define ZFS_META_GITREV "zfs-0.8.3-0-g9bb3d57-dirty" zfs-0.8.3/include/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142774017105 xustar000000000000000030 mtime=1579730428.777119079 30 atime=1579730452.732888225 30 ctime=1579730468.930408288 zfs-0.8.3/include/Makefile.in0000664016037001603700000010075413612142774017120 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = include DIST_COMMON = $(am__kernel_HEADERS_DIST) $(am__libzfs_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__kernel_HEADERS_DIST = $(top_srcdir)/include/zfeature_common.h \ $(top_srcdir)/include/zfs_comutil.h \ $(top_srcdir)/include/zfs_deleg.h \ $(top_srcdir)/include/zfs_fletcher.h \ $(top_srcdir)/include/zfs_namecheck.h \ $(top_srcdir)/include/zfs_prop.h am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)" am__libzfs_HEADERS_DIST = $(top_srcdir)/include/zfeature_common.h \ $(top_srcdir)/include/zfs_comutil.h \ $(top_srcdir)/include/zfs_deleg.h \ $(top_srcdir)/include/zfs_fletcher.h \ $(top_srcdir)/include/zfs_namecheck.h \ $(top_srcdir)/include/zfs_prop.h \ $(top_srcdir)/include/libnvpair.h \ $(top_srcdir)/include/libuutil_common.h \ $(top_srcdir)/include/libuutil.h \ $(top_srcdir)/include/libuutil_impl.h \ $(top_srcdir)/include/libzfs.h \ $(top_srcdir)/include/libzfs_core.h \ $(top_srcdir)/include/libzfs_impl.h \ $(top_srcdir)/include/libzutil.h \ $(top_srcdir)/include/thread_pool.h HEADERS = $(kernel_HEADERS) $(libzfs_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = linux spl sys COMMON_H = \ $(top_srcdir)/include/zfeature_common.h \ $(top_srcdir)/include/zfs_comutil.h \ $(top_srcdir)/include/zfs_deleg.h \ $(top_srcdir)/include/zfs_fletcher.h \ $(top_srcdir)/include/zfs_namecheck.h \ $(top_srcdir)/include/zfs_prop.h USER_H = \ $(top_srcdir)/include/libnvpair.h \ $(top_srcdir)/include/libuutil_common.h \ $(top_srcdir)/include/libuutil.h \ $(top_srcdir)/include/libuutil_impl.h \ $(top_srcdir)/include/libzfs.h \ $(top_srcdir)/include/libzfs_core.h \ $(top_srcdir)/include/libzfs_impl.h \ $(top_srcdir)/include/libzutil.h \ $(top_srcdir)/include/thread_pool.h EXTRA_DIST = $(COMMON_H) $(USER_H) @CONFIG_USER_TRUE@libzfsdir = $(includedir)/libzfs @CONFIG_USER_TRUE@libzfs_HEADERS = $(COMMON_H) $(USER_H) @CONFIG_KERNEL_TRUE@kerneldir = @prefix@/src/zfs-$(VERSION)/include @CONFIG_KERNEL_TRUE@kernel_HEADERS = $(COMMON_H) all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-kernelHEADERS: $(kernel_HEADERS) @$(NORMAL_INSTALL) test -z "$(kerneldir)" || $(MKDIR_P) "$(DESTDIR)$(kerneldir)" @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(kerneldir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(kerneldir)" || exit $$?; \ done uninstall-kernelHEADERS: @$(NORMAL_UNINSTALL) @list='$(kernel_HEADERS)'; test -n "$(kerneldir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(kerneldir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(kerneldir)" && rm -f $$files install-libzfsHEADERS: $(libzfs_HEADERS) @$(NORMAL_INSTALL) test -z "$(libzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(libzfsdir)" @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libzfsdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(libzfsdir)" || exit $$?; \ done uninstall-libzfsHEADERS: @$(NORMAL_UNINSTALL) @list='$(libzfs_HEADERS)'; test -n "$(libzfsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libzfsdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(kerneldir)" "$(DESTDIR)$(libzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-kernelHEADERS install-libzfsHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-kernelHEADERS uninstall-libzfsHEADERS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-kernelHEADERS install-libzfsHEADERS \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-kernelHEADERS \ uninstall-libzfsHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/include/PaxHeaders.151519/thread_pool.h0000644000000000000000000000007413607166132017514 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.925408128 zfs-0.8.3/include/thread_pool.h0000644016037001603700000000374513607166132017522 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef _THREAD_POOL_H_ #define _THREAD_POOL_H_ #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct tpool tpool_t; /* opaque thread pool descriptor */ #if defined(__STDC__) extern tpool_t *tpool_create(uint_t min_threads, uint_t max_threads, uint_t linger, pthread_attr_t *attr); extern int tpool_dispatch(tpool_t *tpool, void (*func)(void *), void *arg); extern void tpool_destroy(tpool_t *tpool); extern void tpool_abandon(tpool_t *tpool); extern void tpool_wait(tpool_t *tpool); extern void tpool_suspend(tpool_t *tpool); extern int tpool_suspended(tpool_t *tpool); extern void tpool_resume(tpool_t *tpool); extern int tpool_member(tpool_t *tpool); #else /* Non ANSI */ extern tpool_t *tpool_create(); extern int tpool_dispatch(); extern void tpool_destroy(); extern void tpool_abandon(); extern void tpool_wait(); extern void tpool_suspend(); extern int tpool_suspended(); extern void tpool_resume(); extern int tpool_member(); #endif /* __STDC__ */ #ifdef __cplusplus } #endif #endif /* _THREAD_POOL_H_ */ zfs-0.8.3/include/PaxHeaders.151519/zfs_comutil.h0000644000000000000000000000007413612141516017545 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730468.896407197 zfs-0.8.3/include/zfs_comutil.h0000644016037001603700000000310313612141516017537 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2017 by Delphix. All rights reserved. */ #ifndef _ZFS_COMUTIL_H #define _ZFS_COMUTIL_H #include #include #ifdef __cplusplus extern "C" { #endif extern boolean_t zfs_allocatable_devs(nvlist_t *); extern boolean_t zfs_special_devs(nvlist_t *); extern void zpool_get_load_policy(nvlist_t *, zpool_load_policy_t *); extern int zfs_zpl_version_map(int spa_version); extern int zfs_spa_version_map(int zpl_version); extern boolean_t zfs_dataset_name_hidden(const char *); #define ZFS_NUM_LEGACY_HISTORY_EVENTS 41 extern const char *zfs_history_event_names[ZFS_NUM_LEGACY_HISTORY_EVENTS]; #ifdef __cplusplus } #endif #endif /* _ZFS_COMUTIL_H */ zfs-0.8.3/PaxHeaders.151519/configure0000644000000000000000000000013213612142761015315 xustar000000000000000030 mtime=1579730417.268749589 30 atime=1579730442.643564286 30 ctime=1579730468.732401932 zfs-0.8.3/configure0000775016037001603700001023202713612142761015333 0ustar00hutter2hutter200000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63 for zfs 0.8.3. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='zfs' PACKAGE_TARNAME='zfs' PACKAGE_VERSION='0.8.3' PACKAGE_STRING='zfs 0.8.3' PACKAGE_BUGREPORT='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" gt_needs= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS DEBUG_KMEM_TRACKING_ZFS DEBUG_KMEM_ZFS DEBUGINFO_ZFS KERNEL_DEBUG_CPPFLAGS KERNEL_DEBUG_CFLAGS DEBUG_ZFS DEBUG_LDFLAGS DEBUG_CPPFLAGS DEBUG_CFLAGS WANT_MMAP_LIBAIO_FALSE WANT_MMAP_LIBAIO_TRUE WANT_DEVNAME2DEVID_FALSE WANT_DEVNAME2DEVID_TRUE CONFIG_QAT_FALSE CONFIG_QAT_TRUE CONFIG_KERNEL_FALSE CONFIG_KERNEL_TRUE CONFIG_USER_FALSE CONFIG_USER_TRUE RM ZONENAME zfsexecdir runstatedir LIBAIO LIBSSL LIBUDEV LIBBLKID LIBTIRPC_LIBS LIBTIRPC_CFLAGS LIBUUID ZLIB dracutdir ZFS_INIT_SYSV modulesloaddir systemdgeneratordir systemdpresetdir systemdunitdir DEFINE_SYSTEMD ZFS_MODULE_LOAD ZFS_INIT_SYSTEMD udevruledir udevdir mounthelperdir POSUB LTLIBINTL LIBINTL INTLLIBS INTL_MACOSX_LIBS XGETTEXT_EXTRA_OPTIONS MSGMERGE_FOR_MSGFMT_OPTION MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS LTLIBICONV LIBICONV KERNEL_MAKE QAT_SYMBOLS QAT_OBJ QAT_SRC LINUX_SYMBOLS LINUX_VERSION LINUX_OBJ LINUX pythonsitedir PYZFS_ENABLED PYZFS_ENABLED_FALSE PYZFS_ENABLED_TRUE PYTHON_EXTRA_LDFLAGS PYTHON_EXTRA_LIBS PYTHON_SITE_PKG PYTHON_LIBS PYTHON_CPPFLAGS DEFINE_PYZFS DEFINE_PYTHON_PKG_VERSION DEFINE_PYTHON_VERSION USING_PYTHON_3_FALSE USING_PYTHON_3_TRUE USING_PYTHON_2_FALSE USING_PYTHON_2_TRUE USING_PYTHON_FALSE USING_PYTHON_TRUE pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_PLATFORM PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_VERSION PYTHON TARGET_ASM_GENERIC_FALSE TARGET_ASM_GENERIC_TRUE TARGET_ASM_I386_FALSE TARGET_ASM_I386_TRUE TARGET_ASM_X86_64_FALSE TARGET_ASM_X86_64_TRUE TARGET_ASM_DIR ASAN_ZFS ASAN_LDFLAGS ASAN_CFLAGS ASAN_ENABLED ASAN_ENABLED_FALSE ASAN_ENABLED_TRUE NO_OMIT_FRAME_POINTER NO_FORMAT_TRUNCATION FRAME_LARGER_THAN NO_BOOL_COMPARE NO_UNUSED_BUT_SET_VARIABLE ZFS_CONFIG TEST_JOBS ALIEN_VERSION ALIEN HAVE_ALIEN DPKGBUILD_VERSION DPKGBUILD HAVE_DPKGBUILD DPKG_VERSION DPKG HAVE_DPKG SRPM_DEFINE_COMMON SRPM_DEFINE_DKMS SRPM_DEFINE_KMOD SRPM_DEFINE_UTIL RPM_DEFINE_COMMON RPM_DEFINE_DKMS RPM_DEFINE_KMOD RPM_DEFINE_UTIL RPM_SPEC_DIR RPMBUILD_VERSION RPMBUILD HAVE_RPMBUILD RPM_VERSION RPM HAVE_RPM MULTIARCH_LIBDIR DEFINE_INITRAMFS DEFAULT_INITCONF_DIR DEFAULT_INIT_SCRIPT DEFAULT_INIT_DIR DEFAULT_PACKAGE VENDOR CODE_COVERAGE_RULES CODE_COVERAGE_LDFLAGS CODE_COVERAGE_LIBS CODE_COVERAGE_CXXFLAGS CODE_COVERAGE_CFLAGS CODE_COVERAGE_CPPFLAGS GENHTML LCOV GCOV CODE_COVERAGE_ENABLED CODE_COVERAGE_ENABLED_FALSE CODE_COVERAGE_ENABLED_TRUE am__fastdepCCAS_FALSE am__fastdepCCAS_TRUE CCASDEPMODE CCASFLAGS CCAS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED LIBTOOL am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC am__untar am__tar AMTAR am__leading_dot SET_MAKE mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM AM_BACKSLASH AM_DEFAULT_VERBOSITY MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build ZFS_META_LT_AGE ZFS_META_LT_REVISION ZFS_META_LT_CURRENT ZFS_META_KVER_MAX ZFS_META_KVER_MIN ZFS_META_AUTHOR ZFS_META_DATA ZFS_META_ALIAS ZFS_META_LICENSE RELEASE ZFS_META_RELEASE ZFS_META_VERSION ZFS_META_NAME AWK target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_maintainer_mode enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld enable_libtool_lock with_gcov enable_code_coverage with_spec with_config enable_linux_builtin enable_asan with_python enable_pyzfs with_linux with_linux_obj with_qat with_qat_obj enable_rpath with_libiconv_prefix enable_nls with_libintl_prefix with_mounthelperdir with_udevdir with_udevruledir enable_systemd with_systemdunitdir with_systemdpresetdir with_systemdmodulesloaddir with_systemdgeneratordir enable_sysvinit with_dracutdir with_tirpc with_zfsexecdir enable_debug enable_debuginfo enable_debug_kmem enable_debug_kmem_tracking ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR CCAS CCASFLAGS TEST_JOBS PYTHON_VERSION LIBTIRPC_CFLAGS LIBTIRPC_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures zfs 0.8.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/zfs] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of zfs 0.8.3:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --enable-silent-rules less verbose build output (undo: `make V=1') --disable-silent-rules verbose build output (undo: `make V=0') --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-code-coverage Whether to enable code coverage support --enable-linux-builtin Configure for builtin in-tree kernel modules [default=no] --enable-asan Enable -fsanitize=address support [default=no] --enable-pyzfs install libzfs_core python bindings [default=check] --disable-rpath do not hardcode runtime library paths --disable-nls do not use Native Language Support --enable-systemd install systemd unit/preset files [default:], [yes] --enable-sysvinit install SysV init scripts default:, yes --enable-debug Enable compiler and code assertions [default=no] --enable-debuginfo Force generation of debuginfo [default=no] --enable-debug-kmem Enable basic kmem accounting [default=no] --enable-debug-kmem-tracking Enable detailed kmem tracking [default=no] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-gcov=GCOV use given GCOV for coverage (GCOV=gcov). --with-spec=SPEC Spec files 'generic|redhat' --with-config=CONFIG Config file 'kernel|user|all|srpm' --with-python=VERSION default system python version [default=check] --with-linux=PATH Path to kernel source --with-linux-obj=PATH Path to kernel build objects --with-qat=PATH Path to qat source --with-qat-obj=PATH Path to qat build objects --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-mounthelperdir=DIR install mount.zfs in dir [/sbin] --with-udevdir=DIR install udev helpers [default=check] --with-udevruledir=DIR install udev rules [UDEVDIR/rules.d] --with-systemdunitdir=DIR install systemd unit files in dir [/usr/lib/systemd/system] --with-systemdpresetdir=DIR install systemd preset files in dir [/usr/lib/systemd/system-preset] --with-systemdmodulesloaddir=DIR install systemd module load files into dir [/usr/lib/modules-load.d] --with-systemdgeneratordir=DIR install systemd generators in dir [/usr/lib/systemd/system-generators] --with-dracutdir=DIR install dracut helpers [default=check] --with-tirpc use tirpc for xdr encoding [default=check] --with-zfsexecdir=DIR install scripts [[libexecdir]/zfs] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path CCAS assembler compiler command (defaults to CC) CCASFLAGS assembler compiler flags (defaults to CFLAGS) TEST_JOBS simultaneous jobs during configure (defaults to $(nproc)) PYTHON_VERSION The installed Python version to use, for example '2.3'. This string will be appended to the Python interpreter canonical name. LIBTIRPC_CFLAGS C compiler flags for LIBTIRPC, overriding pkg-config LIBTIRPC_LIBS linker flags for LIBTIRPC, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF zfs configure 0.8.3 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by zfs $as_me 0.8.3, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking metadata" >&5 $as_echo_n "checking metadata... " >&6; } META="$srcdir/META" _zfs_ac_meta_type="none" if test -f "$META"; then _zfs_ac_meta_type="META file" ZFS_META_NAME=`$AWK -F ':[ \t]+' '$1 ~ /^ *(Name|Project|Package)$/ { print $2; exit }' $META`; if test -n "$ZFS_META_NAME"; then cat >>confdefs.h <<_ACEOF #define ZFS_META_NAME "$ZFS_META_NAME" _ACEOF fi ZFS_META_VERSION=`$AWK -F ':[ \t]+' '$1 ~ /^ *Version$/ { print $2; exit }' $META`; if test -n "$ZFS_META_VERSION"; then cat >>confdefs.h <<_ACEOF #define ZFS_META_VERSION "$ZFS_META_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define SPL_META_VERSION ZFS_META_VERSION _ACEOF fi ZFS_META_RELEASE=`$AWK -F ':[ \t]+' '$1 ~ /^ *Release$/ { print $2; exit }' $META`; if test ! -f ".nogitrelease" && git rev-parse --git-dir > /dev/null 2>&1; then _match="${ZFS_META_NAME}-${ZFS_META_VERSION}" _alias=$(git describe --match=${_match} 2>/dev/null) _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') if test -n "${_release}"; then ZFS_META_RELEASE=${_release} _zfs_ac_meta_type="git describe" else _match="${ZFS_META_NAME}-${ZFS_META_VERSION}-${ZFS_META_RELEASE}" _alias=$(git describe --match=${_match} 2>/dev/null) _release=$(echo ${_alias}|cut -f3- -d'-'|sed 's/-/_/g') if test -n "${_release}"; then ZFS_META_RELEASE=${_release} _zfs_ac_meta_type="git describe" fi fi fi if test -n "$ZFS_META_RELEASE"; then cat >>confdefs.h <<_ACEOF #define ZFS_META_RELEASE "$ZFS_META_RELEASE" _ACEOF cat >>confdefs.h <<_ACEOF #define SPL_META_RELEASE ZFS_META_RELEASE _ACEOF RELEASE="$ZFS_META_RELEASE" fi ZFS_META_LICENSE=`$AWK -F ':[ \t]+' '$1 ~ /^ *License$/ { print $2; exit }' $META`; if test -n "$ZFS_META_LICENSE"; then cat >>confdefs.h <<_ACEOF #define ZFS_META_LICENSE "$ZFS_META_LICENSE" _ACEOF fi if test -n "$ZFS_META_NAME" -a -n "$ZFS_META_VERSION"; then ZFS_META_ALIAS="$ZFS_META_NAME-$ZFS_META_VERSION" test -n "$ZFS_META_RELEASE" && ZFS_META_ALIAS="$ZFS_META_ALIAS-$ZFS_META_RELEASE" cat >>confdefs.h <<_ACEOF #define ZFS_META_ALIAS "$ZFS_META_ALIAS" _ACEOF cat >>confdefs.h <<_ACEOF #define SPL_META_ALIAS ZFS_META_ALIAS _ACEOF fi ZFS_META_DATA=`$AWK -F ':[ \t]+' '$1 ~ /^ *Date$/ { print $2; exit }' $META`; if test -n "$ZFS_META_DATA"; then cat >>confdefs.h <<_ACEOF #define ZFS_META_DATA "$ZFS_META_DATA" _ACEOF fi ZFS_META_AUTHOR=`$AWK -F ':[ \t]+' '$1 ~ /^ *Author$/ { print $2; exit }' $META`; if test -n "$ZFS_META_AUTHOR"; then cat >>confdefs.h <<_ACEOF #define ZFS_META_AUTHOR "$ZFS_META_AUTHOR" _ACEOF fi ZFS_META_KVER_MIN=`$AWK -F ':[ \t]+' '$1 ~ /^ *Linux-Minimum$/ { print $2; exit }' $META`; if test -n "$ZFS_META_KVER_MIN"; then cat >>confdefs.h <<_ACEOF #define ZFS_META_KVER_MIN "$ZFS_META_KVER_MIN" _ACEOF fi ZFS_META_KVER_MAX=`$AWK -F ':[ \t]+' '$1 ~ /^ *Linux-Maximum$/ { print $2; exit }' $META`; if test -n "$ZFS_META_KVER_MAX"; then cat >>confdefs.h <<_ACEOF #define ZFS_META_KVER_MAX "$ZFS_META_KVER_MAX" _ACEOF fi ZFS_META_LT_CURRENT=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Current$/ { print $2; exit }' $META`; ZFS_META_LT_REVISION=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Revision$/ { print $2; exit }' $META`; ZFS_META_LT_AGE=`$AWK -F ':[ \t]+' '$1 ~ /^ *LT_Age$/ { print $2; exit }' $META`; if test -n "$ZFS_META_LT_CURRENT" \ -o -n "$ZFS_META_LT_REVISION" \ -o -n "$ZFS_META_LT_AGE"; then test -n "$ZFS_META_LT_CURRENT" || ZFS_META_LT_CURRENT="0" test -n "$ZFS_META_LT_REVISION" || ZFS_META_LT_REVISION="0" test -n "$ZFS_META_LT_AGE" || ZFS_META_LT_AGE="0" cat >>confdefs.h <<_ACEOF #define ZFS_META_LT_CURRENT "$ZFS_META_LT_CURRENT" _ACEOF cat >>confdefs.h <<_ACEOF #define ZFS_META_LT_REVISION "$ZFS_META_LT_REVISION" _ACEOF cat >>confdefs.h <<_ACEOF #define ZFS_META_LT_AGE "$ZFS_META_LT_AGE" _ACEOF fi fi { $as_echo "$as_me:$LINENO: result: $_zfs_ac_meta_type" >&5 $as_echo "$_zfs_ac_meta_type" >&6; } ac_aux_dir= for ac_dir in config "$srcdir"/config; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if test "${ac_cv_target+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 $as_echo "$as_me: error: invalid value of canonical target" >&2;} { (exit 1); exit 1; }; };; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- { $as_echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then enableval=$enable_silent_rules; fi case $enable_silent_rules in yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac AM_BACKSLASH='\' am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) { { $as_echo "$as_me:$LINENO: error: unsafe absolute working directory name" >&5 $as_echo "$as_me: error: unsafe absolute working directory name" >&2;} { (exit 1); exit 1; }; };; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) { { $as_echo "$as_me:$LINENO: error: unsafe srcdir value: \`$srcdir'" >&5 $as_echo "$as_me: error: unsafe srcdir value: \`$srcdir'" >&2;} { (exit 1); exit 1; }; };; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='zfs' VERSION='0.8.3' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_config_headers="$ac_config_headers zfs_config.h" # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.2.6b' macro_revision='1.3017' ltmain="$ac_aux_dir/ltmain.sh" { $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed $as_unset ac_script || ac_script= if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test "${lt_cv_path_NM+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:5020: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:5023: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:5026: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$LINENO: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 6232 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:$LINENO: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8089: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8093: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8428: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8432: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8533: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8537: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8588: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:8592: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat >conftest.$ac_ext <<_ACEOF int foo(void) {} _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Add ABI-specific directories to the system library path. sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 11391 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 11487 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC="$lt_save_CC" ac_config_commands="$ac_config_commands libtool" # Only expand once: if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # By default we simply use the C compiler to build assembly code. test "${CCAS+set}" = set || CCAS=$CC test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS depcc="$CCAS" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CCAS_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CCAS_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CCAS_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CCAS_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CCAS_dependencies_compiler_type" >&5 $as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then am__fastdepCCAS_TRUE= am__fastdepCCAS_FALSE='#' else am__fastdepCCAS_TRUE='#' am__fastdepCCAS_FALSE= fi if test "x$CC" != xcc; then { $as_echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -f conftest2.$ac_objext && { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -f conftest2.$ac_objext && { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } cat >>confdefs.h <<\_ACEOF #define NO_MINUS_C_MINUS_O 1 _ACEOF fi # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi # allow to override gcov location # Check whether --with-gcov was given. if test "${with_gcov+set}" = set; then withval=$with_gcov; _AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov else _AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov fi { $as_echo "$as_me:$LINENO: checking whether to build with code coverage support" >&5 $as_echo_n "checking whether to build with code coverage support... " >&6; } # Check whether --enable-code-coverage was given. if test "${enable_code_coverage+set}" = set; then enableval=$enable_code_coverage; else enable_code_coverage=no fi if test x$enable_code_coverage = xyes; then CODE_COVERAGE_ENABLED_TRUE= CODE_COVERAGE_ENABLED_FALSE='#' else CODE_COVERAGE_ENABLED_TRUE='#' CODE_COVERAGE_ENABLED_FALSE= fi CODE_COVERAGE_ENABLED=$enable_code_coverage { $as_echo "$as_me:$LINENO: result: $enable_code_coverage" >&5 $as_echo "$enable_code_coverage" >&6; } if test "$enable_code_coverage" = "yes" ; then # check for gcov if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args. set dummy ${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_GCOV+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$GCOV"; then ac_cv_prog_GCOV="$GCOV" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_GCOV="${ac_tool_prefix}$_AX_CODE_COVERAGE_GCOV_PROG_WITH" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi GCOV=$ac_cv_prog_GCOV if test -n "$GCOV"; then { $as_echo "$as_me:$LINENO: result: $GCOV" >&5 $as_echo "$GCOV" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_GCOV"; then ac_ct_GCOV=$GCOV # Extract the first word of "$_AX_CODE_COVERAGE_GCOV_PROG_WITH", so it can be a program name with args. set dummy $_AX_CODE_COVERAGE_GCOV_PROG_WITH; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_GCOV+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_GCOV"; then ac_cv_prog_ac_ct_GCOV="$ac_ct_GCOV" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_GCOV="$_AX_CODE_COVERAGE_GCOV_PROG_WITH" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_GCOV=$ac_cv_prog_ac_ct_GCOV if test -n "$ac_ct_GCOV"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_GCOV" >&5 $as_echo "$ac_ct_GCOV" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_GCOV" = x; then GCOV=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac GCOV=$ac_ct_GCOV fi else GCOV="$ac_cv_prog_GCOV" fi if test "X$GCOV" = "X:"; then { { $as_echo "$as_me:$LINENO: error: gcov is needed to do coverage" >&5 $as_echo "$as_me: error: gcov is needed to do coverage" >&2;} { (exit 1); exit 1; }; } fi if test "$GCC" = "no" ; then { { $as_echo "$as_me:$LINENO: error: not compiling with gcc, which is required for gcov code coverage" >&5 $as_echo "$as_me: error: not compiling with gcc, which is required for gcov code coverage" >&2;} { (exit 1); exit 1; }; } fi # Extract the first word of "lcov", so it can be a program name with args. set dummy lcov; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LCOV+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$LCOV"; then ac_cv_prog_LCOV="$LCOV" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LCOV="lcov" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LCOV=$ac_cv_prog_LCOV if test -n "$LCOV"; then { $as_echo "$as_me:$LINENO: result: $LCOV" >&5 $as_echo "$LCOV" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "genhtml", so it can be a program name with args. set dummy genhtml; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_GENHTML+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$GENHTML"; then ac_cv_prog_GENHTML="$GENHTML" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_GENHTML="genhtml" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi GENHTML=$ac_cv_prog_GENHTML if test -n "$GENHTML"; then { $as_echo "$as_me:$LINENO: result: $GENHTML" >&5 $as_echo "$GENHTML" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$LCOV" ; then { { $as_echo "$as_me:$LINENO: error: To enable code coverage reporting you must have lcov installed" >&5 $as_echo "$as_me: error: To enable code coverage reporting you must have lcov installed" >&2;} { (exit 1); exit 1; }; } fi if test -z "$GENHTML" ; then { { $as_echo "$as_me:$LINENO: error: Could not find genhtml from the lcov package" >&5 $as_echo "$as_me: error: Could not find genhtml from the lcov package" >&2;} { (exit 1); exit 1; }; } fi CODE_COVERAGE_CPPFLAGS="" CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage" CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage" CODE_COVERAGE_LIBS="-lgcov" CODE_COVERAGE_LDFLAGS="$CODE_COVERAGE_LIBS" CODE_COVERAGE_RULES_CHECK=' -$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k check $(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) code-coverage-capture ' CODE_COVERAGE_RULES_CAPTURE=' $(code_coverage_v_lcov_cap)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(call code_coverage_sanitize,$(PACKAGE_NAME)-$(PACKAGE_VERSION))" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_OPTIONS) $(code_coverage_v_lcov_ign)$(LCOV) $(code_coverage_quiet) $(addprefix --directory ,$(CODE_COVERAGE_DIRECTORY)) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" $(CODE_COVERAGE_IGNORE_PATTERN) --output-file "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_LCOV_SHOPTS) $(CODE_COVERAGE_LCOV_RMOPTS) -@rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp $(code_coverage_v_genhtml)LANG=C $(GENHTML) $(code_coverage_quiet) $(addprefix --prefix ,$(CODE_COVERAGE_DIRECTORY)) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS) @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html" ' CODE_COVERAGE_RULES_CLEAN=' clean: code-coverage-clean distclean: code-coverage-clean code-coverage-clean: -$(LCOV) --directory $(top_builddir) -z -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY) -find . \( -name "*.gcda" -o -name "*.gcno" -o -name "*.gcov" \) -delete ' else CODE_COVERAGE_RULES_CHECK=' @echo "Need to reconfigure with --enable-code-coverage" ' CODE_COVERAGE_RULES_CAPTURE="$CODE_COVERAGE_RULES_CHECK" CODE_COVERAGE_RULES_CLEAN='' fi CODE_COVERAGE_RULES=' # Code coverage # # Optional: # - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting. # Multiple directories may be specified, separated by whitespace. # (Default: $(top_builddir)) # - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated # by lcov for code coverage. (Default: # $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info) # - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage # reports to be created. (Default: # $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage) # - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage, # set to 0 to disable it and leave empty to stay with the default. # (Default: empty) # - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov # instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE) # - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov # instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT) # - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov # - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the # collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH) # - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov # instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) # - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering # lcov instance. (Default: empty) # - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov # instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT) # - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the # genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE) # - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml # instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) # - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore # # The generated report will be titled using the $(PACKAGE_NAME) and # $(PACKAGE_VERSION). In order to add the current git hash to the title, # use the git-version-gen script, available online. # Optional variables CODE_COVERAGE_DIRECTORY ?= $(top_builddir) CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage CODE_COVERAGE_BRANCH_COVERAGE ?= CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\ --rc lcov_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE)) CODE_COVERAGE_LCOV_SHOPTS ?= $(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT) CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool "$(GCOV)" CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= $(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH) CODE_COVERAGE_LCOV_OPTIONS ?= $(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT) CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?= CODE_COVERAGE_LCOV_RMOPTS ?= $(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT) CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\ $(if $(CODE_COVERAGE_BRANCH_COVERAGE),\ --rc genhtml_branch_coverage=$(CODE_COVERAGE_BRANCH_COVERAGE)) CODE_COVERAGE_GENHTML_OPTIONS ?= $(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT) CODE_COVERAGE_IGNORE_PATTERN ?= GITIGNOREFILES ?= GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY) code_coverage_v_lcov_cap = $(code_coverage_v_lcov_cap_$(V)) code_coverage_v_lcov_cap_ = $(code_coverage_v_lcov_cap_$(AM_DEFAULT_VERBOSITY)) code_coverage_v_lcov_cap_0 = @echo " LCOV --capture"\ $(CODE_COVERAGE_OUTPUT_FILE); code_coverage_v_lcov_ign = $(code_coverage_v_lcov_ign_$(V)) code_coverage_v_lcov_ign_ = $(code_coverage_v_lcov_ign_$(AM_DEFAULT_VERBOSITY)) code_coverage_v_lcov_ign_0 = @echo " LCOV --remove /tmp/*"\ $(CODE_COVERAGE_IGNORE_PATTERN); code_coverage_v_genhtml = $(code_coverage_v_genhtml_$(V)) code_coverage_v_genhtml_ = $(code_coverage_v_genhtml_$(AM_DEFAULT_VERBOSITY)) code_coverage_v_genhtml_0 = @echo " GEN " $(CODE_COVERAGE_OUTPUT_DIRECTORY); code_coverage_quiet = $(code_coverage_quiet_$(V)) code_coverage_quiet_ = $(code_coverage_quiet_$(AM_DEFAULT_VERBOSITY)) code_coverage_quiet_0 = --quiet # sanitizes the test-name: replaces with underscores: dashes and dots code_coverage_sanitize = $(subst -,_,$(subst .,_,$(1))) # Use recursive makes in order to ignore errors during check check-code-coverage:'"$CODE_COVERAGE_RULES_CHECK"' # Capture code coverage data code-coverage-capture: code-coverage-capture-hook'"$CODE_COVERAGE_RULES_CAPTURE"' # Hook rule executed before code-coverage-capture, overridable by the user code-coverage-capture-hook: '"$CODE_COVERAGE_RULES_CLEAN"' A''M_DISTCHECK_CONFIGURE_FLAGS ?= A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage .PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean ' # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} { $as_echo "$as_me:$LINENO: checking how to create a pax tar archive" >&5 $as_echo_n "checking how to create a pax tar archive... " >&6; } # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' _am_tools=${am_cv_prog_tar_pax-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=posix -chf - "'"$$tardir"' am__tar_="$_am_tar --format=posix -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x pax -w "$$tardir"' am__tar_='pax -L -x pax -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H pax -L' am__tar_='find "$tardir" -print | cpio -o -H pax -L' am__untar='cpio -i -H pax -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_pax}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if test "${am_cv_prog_tar_pax+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_prog_tar_pax=$_am_tool fi { $as_echo "$as_me:$LINENO: result: $am_cv_prog_tar_pax" >&5 $as_echo "$am_cv_prog_tar_pax" >&6; } { $as_echo "$as_me:$LINENO: checking zfs author" >&5 $as_echo_n "checking zfs author... " >&6; } { $as_echo "$as_me:$LINENO: result: $ZFS_META_AUTHOR" >&5 $as_echo "$ZFS_META_AUTHOR" >&6; } { $as_echo "$as_me:$LINENO: checking zfs license" >&5 $as_echo_n "checking zfs license... " >&6; } { $as_echo "$as_me:$LINENO: result: $ZFS_META_LICENSE" >&5 $as_echo "$ZFS_META_LICENSE" >&6; } { $as_echo "$as_me:$LINENO: checking linux distribution" >&5 $as_echo_n "checking linux distribution... " >&6; } if test -f /etc/toss-release ; then VENDOR=toss ; elif test -f /etc/fedora-release ; then VENDOR=fedora ; elif test -f /etc/redhat-release ; then VENDOR=redhat ; elif test -f /etc/gentoo-release ; then VENDOR=gentoo ; elif test -f /etc/arch-release ; then VENDOR=arch ; elif test -f /etc/SuSE-release ; then VENDOR=sles ; elif test -f /etc/slackware-version ; then VENDOR=slackware ; elif test -f /etc/lunar.release ; then VENDOR=lunar ; elif test -f /etc/lsb-release ; then VENDOR=ubuntu ; elif test -f /etc/debian_version ; then VENDOR=debian ; elif test -f /etc/alpine-release ; then VENDOR=alpine ; else VENDOR= ; fi { $as_echo "$as_me:$LINENO: result: $VENDOR" >&5 $as_echo "$VENDOR" >&6; } { $as_echo "$as_me:$LINENO: checking default package type" >&5 $as_echo_n "checking default package type... " >&6; } case "$VENDOR" in toss) DEFAULT_PACKAGE=rpm ;; redhat) DEFAULT_PACKAGE=rpm ;; fedora) DEFAULT_PACKAGE=rpm ;; gentoo) DEFAULT_PACKAGE=tgz ;; alpine) DEFAULT_PACKAGE=tgz ;; arch) DEFAULT_PACKAGE=tgz ;; sles) DEFAULT_PACKAGE=rpm ;; slackware) DEFAULT_PACKAGE=tgz ;; lunar) DEFAULT_PACKAGE=tgz ;; ubuntu) DEFAULT_PACKAGE=deb ;; debian) DEFAULT_PACKAGE=deb ;; *) DEFAULT_PACKAGE=rpm ;; esac { $as_echo "$as_me:$LINENO: result: $DEFAULT_PACKAGE" >&5 $as_echo "$DEFAULT_PACKAGE" >&6; } DEFAULT_INIT_DIR=$sysconfdir/init.d { $as_echo "$as_me:$LINENO: checking default init directory" >&5 $as_echo_n "checking default init directory... " >&6; } { $as_echo "$as_me:$LINENO: result: $DEFAULT_INIT_DIR" >&5 $as_echo "$DEFAULT_INIT_DIR" >&6; } { $as_echo "$as_me:$LINENO: checking default init script type" >&5 $as_echo_n "checking default init script type... " >&6; } case "$VENDOR" in toss) DEFAULT_INIT_SCRIPT=redhat ;; redhat) DEFAULT_INIT_SCRIPT=redhat ;; fedora) DEFAULT_INIT_SCRIPT=fedora ;; gentoo) DEFAULT_INIT_SCRIPT=openrc ;; alpine) DEFAULT_INIT_SCRIPT=openrc ;; arch) DEFAULT_INIT_SCRIPT=lsb ;; sles) DEFAULT_INIT_SCRIPT=lsb ;; slackware) DEFAULT_INIT_SCRIPT=lsb ;; lunar) DEFAULT_INIT_SCRIPT=lunar ;; ubuntu) DEFAULT_INIT_SCRIPT=lsb ;; debian) DEFAULT_INIT_SCRIPT=lsb ;; *) DEFAULT_INIT_SCRIPT=lsb ;; esac { $as_echo "$as_me:$LINENO: result: $DEFAULT_INIT_SCRIPT" >&5 $as_echo "$DEFAULT_INIT_SCRIPT" >&6; } { $as_echo "$as_me:$LINENO: checking default init config directory" >&5 $as_echo_n "checking default init config directory... " >&6; } case "$VENDOR" in alpine) DEFAULT_INITCONF_DIR=/etc/conf.d ;; gentoo) DEFAULT_INITCONF_DIR=/etc/conf.d ;; toss) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; redhat) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; fedora) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; sles) DEFAULT_INITCONF_DIR=/etc/sysconfig ;; ubuntu) DEFAULT_INITCONF_DIR=/etc/default ;; debian) DEFAULT_INITCONF_DIR=/etc/default ;; *) DEFAULT_INITCONF_DIR=/etc/default ;; esac { $as_echo "$as_me:$LINENO: result: $DEFAULT_INITCONF_DIR" >&5 $as_echo "$DEFAULT_INITCONF_DIR" >&6; } { $as_echo "$as_me:$LINENO: checking whether initramfs-tools is available" >&5 $as_echo_n "checking whether initramfs-tools is available... " >&6; } if test -d /usr/share/initramfs-tools ; then DEFINE_INITRAMFS='--define "_initramfs 1"' { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else DEFINE_INITRAMFS='' { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi RPM=rpm RPMBUILD=rpmbuild { $as_echo "$as_me:$LINENO: checking whether $RPM is available" >&5 $as_echo_n "checking whether $RPM is available... " >&6; } if tmp=$($RPM --version 2>/dev/null); then RPM_VERSION=$(echo $tmp | $AWK '/RPM/ { print $3 }') HAVE_RPM=yes { $as_echo "$as_me:$LINENO: result: $HAVE_RPM ($RPM_VERSION)" >&5 $as_echo "$HAVE_RPM ($RPM_VERSION)" >&6; } else HAVE_RPM=no { $as_echo "$as_me:$LINENO: result: $HAVE_RPM" >&5 $as_echo "$HAVE_RPM" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether $RPMBUILD is available" >&5 $as_echo_n "checking whether $RPMBUILD is available... " >&6; } if tmp=$($RPMBUILD --version 2>/dev/null); then RPMBUILD_VERSION=$(echo $tmp | $AWK '/RPM/ { print $3 }') HAVE_RPMBUILD=yes { $as_echo "$as_me:$LINENO: result: $HAVE_RPMBUILD ($RPMBUILD_VERSION)" >&5 $as_echo "$HAVE_RPMBUILD ($RPMBUILD_VERSION)" >&6; } else HAVE_RPMBUILD=no { $as_echo "$as_me:$LINENO: result: $HAVE_RPMBUILD" >&5 $as_echo "$HAVE_RPMBUILD" >&6; } fi RPM_DEFINE_COMMON='--define "$(DEBUG_ZFS) 1"' RPM_DEFINE_COMMON+=' --define "$(DEBUG_KMEM_ZFS) 1"' RPM_DEFINE_COMMON+=' --define "$(DEBUG_KMEM_TRACKING_ZFS) 1"' RPM_DEFINE_COMMON+=' --define "$(DEBUGINFO_ZFS) 1"' RPM_DEFINE_COMMON+=' --define "$(ASAN_ZFS) 1"' RPM_DEFINE_UTIL=' --define "_initconfdir $(DEFAULT_INITCONF_DIR)"' if test -n "$dracutdir" ; then RPM_DEFINE_UTIL='--define "_dracutdir $(dracutdir)"' fi if test -n "$udevdir" ; then RPM_DEFINE_UTIL+=' --define "_udevdir $(udevdir)"' fi if test -n "$udevruledir" ; then RPM_DEFINE_UTIL+=' --define "_udevdir $(udevruledir)"' fi RPM_DEFINE_UTIL+=' $(DEFINE_INITRAMFS)' RPM_DEFINE_UTIL+=' $(DEFINE_SYSTEMD)' RPM_DEFINE_UTIL+=' $(DEFINE_PYZFS)' RPM_DEFINE_UTIL+=' $(DEFINE_PYTHON_VERSION)' RPM_DEFINE_UTIL+=' $(DEFINE_PYTHON_PKG_VERSION)' if test "$DEFAULT_PACKAGE" = "deb"; then MULTIARCH_LIBDIR="lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)" RPM_DEFINE_UTIL+=' --define "_lib $(MULTIARCH_LIBDIR)"' fi RPM_DEFINE_KMOD='--define "kernels $(LINUX_VERSION)"' RPM_DEFINE_KMOD+=' --define "ksrc $(LINUX)"' RPM_DEFINE_KMOD+=' --define "kobj $(LINUX_OBJ)"' RPM_DEFINE_KMOD+=' --define "_wrong_version_format_terminate_build 0"' RPM_DEFINE_DKMS='' SRPM_DEFINE_COMMON='--define "build_src_rpm 1"' SRPM_DEFINE_UTIL= SRPM_DEFINE_KMOD= SRPM_DEFINE_DKMS= RPM_SPEC_DIR="rpm/generic" # Check whether --with-spec was given. if test "${with_spec+set}" = set; then withval=$with_spec; RPM_SPEC_DIR="rpm/$withval" fi { $as_echo "$as_me:$LINENO: checking whether spec files are available" >&5 $as_echo_n "checking whether spec files are available... " >&6; } { $as_echo "$as_me:$LINENO: result: yes ($RPM_SPEC_DIR/*.spec.in)" >&5 $as_echo "yes ($RPM_SPEC_DIR/*.spec.in)" >&6; } DPKG=dpkg DPKGBUILD=dpkg-buildpackage { $as_echo "$as_me:$LINENO: checking whether $DPKG is available" >&5 $as_echo_n "checking whether $DPKG is available... " >&6; } if tmp=$($DPKG --version 2>/dev/null); then DPKG_VERSION=$(echo $tmp | $AWK '/Debian/ { print $7 }') HAVE_DPKG=yes { $as_echo "$as_me:$LINENO: result: $HAVE_DPKG ($DPKG_VERSION)" >&5 $as_echo "$HAVE_DPKG ($DPKG_VERSION)" >&6; } else HAVE_DPKG=no { $as_echo "$as_me:$LINENO: result: $HAVE_DPKG" >&5 $as_echo "$HAVE_DPKG" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether $DPKGBUILD is available" >&5 $as_echo_n "checking whether $DPKGBUILD is available... " >&6; } if tmp=$($DPKGBUILD --version 2>/dev/null); then DPKGBUILD_VERSION=$(echo $tmp | \ $AWK '/Debian/ { print $4 }' | cut -f-4 -d'.') HAVE_DPKGBUILD=yes { $as_echo "$as_me:$LINENO: result: $HAVE_DPKGBUILD ($DPKGBUILD_VERSION)" >&5 $as_echo "$HAVE_DPKGBUILD ($DPKGBUILD_VERSION)" >&6; } else HAVE_DPKGBUILD=no { $as_echo "$as_me:$LINENO: result: $HAVE_DPKGBUILD" >&5 $as_echo "$HAVE_DPKGBUILD" >&6; } fi ALIEN=alien { $as_echo "$as_me:$LINENO: checking whether $ALIEN is available" >&5 $as_echo_n "checking whether $ALIEN is available... " >&6; } if tmp=$($ALIEN --version 2>/dev/null); then ALIEN_VERSION=$(echo $tmp | $AWK '{ print $3 }') HAVE_ALIEN=yes { $as_echo "$as_me:$LINENO: result: $HAVE_ALIEN ($ALIEN_VERSION)" >&5 $as_echo "$HAVE_ALIEN ($ALIEN_VERSION)" >&6; } else HAVE_ALIEN=no { $as_echo "$as_me:$LINENO: result: $HAVE_ALIEN" >&5 $as_echo "$HAVE_ALIEN" >&6; } fi if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi if test -n "$LD"; then { $as_echo "$as_me:$LINENO: checking for ld" >&5 $as_echo_n "checking for ld... " >&6; } elif test "$GCC" = yes; then { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test -n "$LD"; then # Let the user override the test with a path. : else if test "${acl_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else acl_cv_path_LD= # Final result of this test ac_prog=ld # Program to search in $PATH if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) acl_output=`($CC -print-prog-name=ld) 2>&5` ;; esac case $acl_output in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'` while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do acl_output=`echo $acl_output | sed "s%$re_direlt%/%"` done # Got the pathname. No search in PATH is needed. acl_cv_path_LD="$acl_output" ac_prog= ;; "") # If it fails, then pretend we aren't using GCC. ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac fi if test -n "$ac_prog"; then # Search for $ac_prog in $PATH. acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined __powerpc64__ || defined _ARCH_PPC64 int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then # The compiler produces 64-bit code. Add option '-b64' so that the # linker groks 64-bit object files. case "$acl_cv_path_LD " in *" -b64 "*) ;; *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;; esac else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; sparc64-*-netbsd*) cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # The compiler produces 32-bit code. Add option '-m elf32_sparc' # so that the linker groks 32-bit object files. case "$acl_cv_path_LD " in *" -m elf32_sparc "*) ;; *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; esac fi LD="$acl_cv_path_LD" fi if test -n "$LD"; then { $as_echo "$as_me:$LINENO: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${acl_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:$LINENO: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if test "${acl_cv_rpath+set}" = set; then $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then enableval=$enable_rpath; : else enable_rpath=yes fi { $as_echo "$as_me:$LINENO: checking 32-bit host C ABI" >&5 $as_echo_n "checking 32-bit host C ABI... " >&6; } if test "${gl_cv_host_cpu_c_abi_32bit+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$gl_cv_host_cpu_c_abi"; then case "$gl_cv_host_cpu_c_abi" in i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) gl_cv_host_cpu_c_abi_32bit=yes ;; *) gl_cv_host_cpu_c_abi_32bit=no ;; esac else case "$host_cpu" in i[4567]86 ) gl_cv_host_cpu_c_abi_32bit=yes ;; x86_64 ) # On x86_64 systems, the C compiler may be generating code in one of # these ABIs: # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 # with native Windows (mingw, MSVC). # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if (defined __x86_64__ || defined __amd64__ \ || defined _M_X64 || defined _M_AMD64) \ && !(defined __ILP32__ || defined _ILP32) int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; arm* | aarch64 ) # Assume arm with EABI. # On arm64 systems, the C compiler may be generating code in one of # these ABIs: # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) # On hppa, the C compiler may be generating 32-bit code or 64-bit # code. In the latter case, it defines _LP64 and __LP64__. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __LP64__ int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; ia64* ) # On ia64 on HP-UX, the C compiler may be generating 64-bit code or # 32-bit code. In the latter case, it defines _ILP32. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef _ILP32 int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; mips* ) # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this # at 32. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; powerpc* ) # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. # No need to distinguish them here; the caller may distinguish # them based on the OS. # On powerpc64 systems, the C compiler may still be generating # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may # be generating 64-bit code. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined __powerpc64__ || defined _ARCH_PPC64 int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; rs6000 ) gl_cv_host_cpu_c_abi_32bit=yes ;; riscv32 | riscv64 ) # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. # Size of 'long' and 'void *': cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined __LP64__ int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; s390* ) # On s390x, the C compiler may be generating 64-bit (= s390x) code # or 31-bit (= s390) code. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined __LP64__ || defined __s390x__ int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; sparc | sparc64 ) # UltraSPARCs running Linux have `uname -m` = "sparc64", but the # C compiler still generates 32-bit code. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #if defined __sparcv9 || defined __arch64__ int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_host_cpu_c_abi_32bit=no else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_host_cpu_c_abi_32bit=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; *) gl_cv_host_cpu_c_abi_32bit=no ;; esac fi fi { $as_echo "$as_me:$LINENO: result: $gl_cv_host_cpu_c_abi_32bit" >&5 $as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; } HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" case "$host_os" in solaris*) { $as_echo "$as_me:$LINENO: checking for 64-bit host" >&5 $as_echo_n "checking for 64-bit host... " >&6; } if test "${gl_cv_solaris_64bit+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef _LP64 int ok; #else error fail #endif _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then gl_cv_solaris_64bit=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gl_cv_solaris_64bit=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $gl_cv_solaris_64bit" >&5 $as_echo "$gl_cv_solaris_64bit" >&6; };; esac { $as_echo "$as_me:$LINENO: checking for the common suffixes of directories in the library search path" >&5 $as_echo_n "checking for the common suffixes of directories in the library search path... " >&6; } if test "${acl_cv_libdirstems+set}" = set; then $as_echo_n "(cached) " >&6 else acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) if test "$HOST_CPU_C_ABI_32BIT" != yes; then searchpath=`(if test -f /usr/bin/gcc \ && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \ LC_ALL=C /usr/bin/gcc -print-search-dirs; \ else \ LC_ALL=C $CC -print-search-dirs; \ fi) 2>/dev/null \ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2" fi { $as_echo "$as_me:$LINENO: result: $acl_cv_libdirstems" >&5 $as_echo "$acl_cv_libdirstems" >&6; } # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2. acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'` acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'` use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && test ! -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:$LINENO: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.20 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_MSGFMT+set}" = set; then $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:$LINENO: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_GMSGFMT+set}" = set; then $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:$LINENO: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_XGETTEXT+set}" = set; then $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:$LINENO: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_MSGMERGE+set}" = set; then $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:$LINENO: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if LC_ALL=C $MSGMERGE --help | grep ' --for-msgfmt ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--for-msgfmt' else if LC_ALL=C $MSGMERGE --help | grep ' --no-fuzzy-matching ' >/dev/null; then MSGMERGE_FOR_MSGFMT_OPTION='--no-fuzzy-matching --no-location --quiet' else MSGMERGE_FOR_MSGFMT_OPTION='--no-location --quiet' fi fi test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" rm -Rf build if test "x$ac_cv_env_TEST_JOBS_set" != "xset"; then TEST_JOBS=$(nproc) fi ZFS_CONFIG=all # Check whether --with-config was given. if test "${with_config+set}" = set; then withval=$with_config; ZFS_CONFIG="$withval" fi # Check whether --enable-linux-builtin was given. if test "${enable_linux_builtin+set}" = set; then enableval=$enable_linux_builtin; else enable_linux_builtin=no fi { $as_echo "$as_me:$LINENO: checking zfs config" >&5 $as_echo_n "checking zfs config... " >&6; } { $as_echo "$as_me:$LINENO: result: $ZFS_CONFIG" >&5 $as_echo "$ZFS_CONFIG" >&6; }; { $as_echo "$as_me:$LINENO: checking whether $CC supports -Wno-unused-but-set-variable" >&5 $as_echo_n "checking whether $CC supports -Wno-unused-but-set-variable... " >&6; } saved_flags="$CFLAGS" CFLAGS="$CFLAGS -Wunused-but-set-variable" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then NO_UNUSED_BUT_SET_VARIABLE=-Wno-unused-but-set-variable { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 NO_UNUSED_BUT_SET_VARIABLE= { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_flags" { $as_echo "$as_me:$LINENO: checking whether $CC supports -Wno-bool-compare" >&5 $as_echo_n "checking whether $CC supports -Wno-bool-compare... " >&6; } saved_flags="$CFLAGS" CFLAGS="$CFLAGS -Wbool-compare" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then NO_BOOL_COMPARE=-Wno-bool-compare { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 NO_BOOL_COMPARE= { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_flags" { $as_echo "$as_me:$LINENO: checking whether $CC supports -Wframe-larger-than=" >&5 $as_echo_n "checking whether $CC supports -Wframe-larger-than=... " >&6; } saved_flags="$CFLAGS" CFLAGS="$CFLAGS -Wframe-larger-than=4096" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then FRAME_LARGER_THAN="-Wframe-larger-than=4096" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 FRAME_LARGER_THAN="" { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_flags" { $as_echo "$as_me:$LINENO: checking whether $CC supports -Wno-format-truncation" >&5 $as_echo_n "checking whether $CC supports -Wno-format-truncation... " >&6; } saved_flags="$CFLAGS" CFLAGS="$CFLAGS -Wno-format-truncation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then NO_FORMAT_TRUNCATION=-Wno-format-truncation { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 NO_FORMAT_TRUNCATION= { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_flags" { $as_echo "$as_me:$LINENO: checking whether $CC supports -fno-omit-frame-pointer" >&5 $as_echo_n "checking whether $CC supports -fno-omit-frame-pointer... " >&6; } saved_flags="$CFLAGS" CFLAGS="$CFLAGS -fno-omit-frame-pointer" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then NO_OMIT_FRAME_POINTER=-fno-omit-frame-pointer { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 NO_OMIT_FRAME_POINTER= { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_flags" { $as_echo "$as_me:$LINENO: checking whether to build with -fsanitize=address support" >&5 $as_echo_n "checking whether to build with -fsanitize=address support... " >&6; } # Check whether --enable-asan was given. if test "${enable_asan+set}" = set; then enableval=$enable_asan; else enable_asan=no fi if test x$enable_asan = xyes; then ASAN_ENABLED_TRUE= ASAN_ENABLED_FALSE='#' else ASAN_ENABLED_TRUE='#' ASAN_ENABLED_FALSE= fi ASAN_ENABLED=$enable_asan { $as_echo "$as_me:$LINENO: result: $enable_asan" >&5 $as_echo "$enable_asan" >&6; } if test "$enable_asan" = "yes" ; then { $as_echo "$as_me:$LINENO: checking whether $CC supports -fsanitize=address" >&5 $as_echo_n "checking whether $CC supports -fsanitize=address... " >&6; } saved_cflags="$CFLAGS" CFLAGS="$CFLAGS -fsanitize=address" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main() { return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ASAN_CFLAGS="-fsanitize=address" ASAN_LDFLAGS="-fsanitize=address" ASAN_ZFS="_with_asan" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: $CC does not support -fsanitize=address" >&5 $as_echo "$as_me: error: $CC does not support -fsanitize=address" >&2;} { (exit 1); exit 1; }; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$saved_cflags" else ASAN_CFLAGS="" ASAN_LDFLAGS="" ASAN_ZFS="_without_asan" fi case "$host_cpu" in x86_64 | x86 | i686) { $as_echo "$as_me:$LINENO: checking whether host toolchain supports SSE" >&5 $as_echo_n "checking whether host toolchain supports SSE... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("xorps %xmm0, %xmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then cat >>confdefs.h <<\_ACEOF #define HAVE_SSE 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports SSE2" >&5 $as_echo_n "checking whether host toolchain supports SSE2... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("pxor %xmm0, %xmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then cat >>confdefs.h <<\_ACEOF #define HAVE_SSE2 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports SSE3" >&5 $as_echo_n "checking whether host toolchain supports SSE3... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { char v[16]; __asm__ __volatile__("lddqu %0,%%xmm0" :: "m"(v[0])); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then cat >>confdefs.h <<\_ACEOF #define HAVE_SSE3 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports SSSE3" >&5 $as_echo_n "checking whether host toolchain supports SSSE3... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("pshufb %xmm0,%xmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then cat >>confdefs.h <<\_ACEOF #define HAVE_SSSE3 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports SSE4.1" >&5 $as_echo_n "checking whether host toolchain supports SSE4.1... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("pmaxsb %xmm0,%xmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then cat >>confdefs.h <<\_ACEOF #define HAVE_SSE4_1 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports SSE4.2" >&5 $as_echo_n "checking whether host toolchain supports SSE4.2... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("pcmpgtq %xmm0, %xmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then cat >>confdefs.h <<\_ACEOF #define HAVE_SSE4_2 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX" >&5 $as_echo_n "checking whether host toolchain supports AVX... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { char v[32]; __asm__ __volatile__("vmovdqa %0,%%ymm0" :: "m"(v[0])); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX2" >&5 $as_echo_n "checking whether host toolchain supports AVX2... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vpshufb %ymm0,%ymm1,%ymm2"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX2 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512F" >&5 $as_echo_n "checking whether host toolchain supports AVX512F... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vpandd %zmm0,%zmm1,%zmm2"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512F 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512CD" >&5 $as_echo_n "checking whether host toolchain supports AVX512CD... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vplzcntd %zmm0,%zmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512CD 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512DQ" >&5 $as_echo_n "checking whether host toolchain supports AVX512DQ... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vandpd %zmm0,%zmm1,%zmm2"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512DQ 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512BW" >&5 $as_echo_n "checking whether host toolchain supports AVX512BW... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vpshufb %zmm0,%zmm1,%zmm2"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512BW 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512IFMA" >&5 $as_echo_n "checking whether host toolchain supports AVX512IFMA... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vpmadd52luq %zmm0,%zmm1,%zmm2"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512IFMA 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512VBMI" >&5 $as_echo_n "checking whether host toolchain supports AVX512VBMI... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vpermb %zmm0,%zmm1,%zmm2"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512VBMI 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512PF" >&5 $as_echo_n "checking whether host toolchain supports AVX512PF... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vgatherpf0dps (%rsi,%zmm0,4){%k1}"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512PF 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512ER" >&5 $as_echo_n "checking whether host toolchain supports AVX512ER... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vexp2pd %zmm0,%zmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512ER 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AVX512VL" >&5 $as_echo_n "checking whether host toolchain supports AVX512VL... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("vpabsq %zmm0,%zmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AVX512VL 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports AES" >&5 $as_echo_n "checking whether host toolchain supports AES... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("aesenc %xmm0, %xmm1"); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AES 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking whether host toolchain supports PCLMULQDQ" >&5 $as_echo_n "checking whether host toolchain supports PCLMULQDQ... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ void main() { __asm__ __volatile__("pclmulqdq %0, %%xmm0, %%xmm1" :: "i"(0)); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PCLMULQDQ 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ;; esac { $as_echo "$as_me:$LINENO: checking for target asm dir" >&5 $as_echo_n "checking for target asm dir... " >&6; } TARGET_ARCH=`echo ${target_cpu} | sed -e s/i.86/i386/` case $TARGET_ARCH in i386|x86_64) TARGET_ASM_DIR=asm-${TARGET_ARCH} ;; *) TARGET_ASM_DIR=asm-generic ;; esac if test $TARGET_ASM_DIR = asm-x86_64; then TARGET_ASM_X86_64_TRUE= TARGET_ASM_X86_64_FALSE='#' else TARGET_ASM_X86_64_TRUE='#' TARGET_ASM_X86_64_FALSE= fi if test $TARGET_ASM_DIR = asm-i386; then TARGET_ASM_I386_TRUE= TARGET_ASM_I386_FALSE='#' else TARGET_ASM_I386_TRUE='#' TARGET_ASM_I386_FALSE= fi if test $TARGET_ASM_DIR = asm-generic; then TARGET_ASM_GENERIC_TRUE= TARGET_ASM_GENERIC_FALSE='#' else TARGET_ASM_GENERIC_TRUE='#' TARGET_ASM_GENERIC_FALSE= fi { $as_echo "$as_me:$LINENO: result: $TARGET_ASM_DIR" >&5 $as_echo "$TARGET_ASM_DIR" >&6; } # Check whether --with-python was given. if test "${with_python+set}" = set; then withval=$with_python; with_python=$withval else with_python=check fi case $with_python in check) for ac_prog in python3 python2 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_PYTHON+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$PYTHON"; then ac_cv_prog_PYTHON="$PYTHON" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PYTHON="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PYTHON=$ac_cv_prog_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PYTHON" && break done test -n "$PYTHON" || PYTHON=":" ;; 2*) PYTHON="python${with_python}" ;; *python2*) PYTHON="${with_python}" ;; 3*) PYTHON="python${with_python}" ;; *python3*) PYTHON="${with_python}" ;; no) PYTHON=":" ;; *) { { $as_echo "$as_me:$LINENO: error: Unknown --with-python value '$with_python'" >&5 $as_echo "$as_me: error: Unknown --with-python value '$with_python'" >&2;} { (exit 1); exit 1; }; } ;; esac # Find any Python interpreter. if test -z "$PYTHON"; then for ac_prog in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PYTHON+set}" = set; then $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PYTHON" && break done test -n "$PYTHON" || PYTHON=":" fi am_display_PYTHON=python if test "$PYTHON" = :; then : else { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON version" >&5 $as_echo_n "checking for $am_display_PYTHON version... " >&6; } if test "${am_cv_python_version+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` fi { $as_echo "$as_me:$LINENO: result: $am_cv_python_version" >&5 $as_echo "$am_cv_python_version" >&6; } PYTHON_VERSION=$am_cv_python_version PYTHON_PREFIX='${prefix}' PYTHON_EXEC_PREFIX='${exec_prefix}' { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON platform" >&5 $as_echo_n "checking for $am_display_PYTHON platform... " >&6; } if test "${am_cv_python_platform+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` fi { $as_echo "$as_me:$LINENO: result: $am_cv_python_platform" >&5 $as_echo "$am_cv_python_platform" >&6; } PYTHON_PLATFORM=$am_cv_python_platform { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if test "${am_cv_python_pythondir+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$prefix" = xNONE then am_py_prefix=$ac_default_prefix else am_py_prefix=$prefix fi am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null || echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` ;; *) case $am_py_prefix in /usr|/System*) ;; *) am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:$LINENO: result: $am_cv_python_pythondir" >&5 $as_echo "$am_cv_python_pythondir" >&6; } pythondir=$am_cv_python_pythondir pkgpythondir=\${pythondir}/$PACKAGE { $as_echo "$as_me:$LINENO: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if test "${am_cv_python_pyexecdir+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$exec_prefix" = xNONE then am_py_exec_prefix=$am_py_prefix else am_py_exec_prefix=$exec_prefix fi am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null || echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` ;; *) case $am_py_exec_prefix in /usr|/System*) ;; *) am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages ;; esac ;; esac fi { $as_echo "$as_me:$LINENO: result: $am_cv_python_pyexecdir" >&5 $as_echo "$am_cv_python_pyexecdir" >&6; } pyexecdir=$am_cv_python_pyexecdir pkgpyexecdir=\${pyexecdir}/$PACKAGE fi if test -z "$PYTHON_VERSION"; then PYTHON_VERSION=$(basename $PYTHON | tr -cd 0-9.) fi PYTHON_MINOR=${PYTHON_VERSION#*\.} case $PYTHON_VERSION in 2.*) if test $PYTHON_MINOR -lt 6; then { { $as_echo "$as_me:$LINENO: error: \"Python >= 2.6 is required\"" >&5 $as_echo "$as_me: error: \"Python >= 2.6 is required\"" >&2;} { (exit 1); exit 1; }; } fi ;; 3.*) if test $PYTHON_MINOR -lt 4; then { { $as_echo "$as_me:$LINENO: error: \"Python >= 3.4 is required\"" >&5 $as_echo "$as_me: error: \"Python >= 3.4 is required\"" >&2;} { (exit 1); exit 1; }; } fi ;; :|2|3) : ;; *) PYTHON_VERSION=3 ;; esac if test "$PYTHON" != :; then USING_PYTHON_TRUE= USING_PYTHON_FALSE='#' else USING_PYTHON_TRUE='#' USING_PYTHON_FALSE= fi if test "x${PYTHON_VERSION%%\.*}" = x2; then USING_PYTHON_2_TRUE= USING_PYTHON_2_FALSE='#' else USING_PYTHON_2_TRUE='#' USING_PYTHON_2_FALSE= fi if test "x${PYTHON_VERSION%%\.*}" = x3; then USING_PYTHON_3_TRUE= USING_PYTHON_3_FALSE='#' else USING_PYTHON_3_TRUE='#' USING_PYTHON_3_FALSE= fi if test "x$with_python" != xcheck; then PYTHON_PKG_VERSION=$(echo $PYTHON_VERSION | tr -d .) DEFINE_PYTHON_PKG_VERSION='--define "__use_python_pkg_version '${PYTHON_PKG_VERSION}'"' DEFINE_PYTHON_VERSION='--define "__use_python '${PYTHON}'"' else DEFINE_PYTHON_VERSION='' DEFINE_PYTHON_PKG_VERSION='' fi # Check whether --enable-pyzfs was given. if test "${enable_pyzfs+set}" = set; then enableval=$enable_pyzfs; enable_pyzfs=$enableval else enable_pyzfs=check fi if test "x$enable_pyzfs" != xcheck; then if test "x$enable_pyzfs" = xyes; then DEFINE_PYZFS='--with pyzfs' else DEFINE_PYZFS='--without pyzfs' fi else if test "$PYTHON" != :; then DEFINE_PYZFS='' else enable_pyzfs=no DEFINE_PYZFS='--without pyzfs' fi fi if test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes; then case $PYTHON_VERSION in 3.*) PYTHON_REQUIRED_VERSION=">= '3.4.0'" ;; 2.*) PYTHON_REQUIRED_VERSION=">= '2.7.0'" ;; *) { { $as_echo "$as_me:$LINENO: error: \"Python $PYTHON_VERSION unknown\"" >&5 $as_echo "$as_me: error: \"Python $PYTHON_VERSION unknown\"" >&2;} { (exit 1); exit 1; }; } ;; esac # # Allow the use of a (user set) custom python version # # Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args. set dummy python$PYTHON_VERSION; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PYTHON+set}" = set; then $as_echo_n "(cached) " >&6 else case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PYTHON=$ac_cv_path_PYTHON if test -n "$PYTHON"; then { $as_echo "$as_me:$LINENO: result: $PYTHON" >&5 $as_echo "$PYTHON" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$PYTHON"; then if test "x$enable_pyzfs" = xyes; then { { $as_echo "$as_me:$LINENO: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&5 $as_echo "$as_me: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&2;} { (exit 1); exit 1; }; } elif test "x$enable_pyzfs" != xno; then enable_pyzfs=no fi fi # # Check for a version of Python >= 2.1.0 # { $as_echo "$as_me:$LINENO: checking for a version of Python >= '2.1.0'" >&5 $as_echo_n "checking for a version of Python >= '2.1.0'... " >&6; } ac_supports_python_ver=`$PYTHON -c "import sys; \ ver = sys.version.split ()[0]; \ print (ver >= '2.1.0')"` if test "$ac_supports_python_ver" != "True"; then if test -z "$PYTHON_NOVERSIONCHECK"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_pyzfs" = xyes; then { { $as_echo "$as_me:$LINENO: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&5 $as_echo "$as_me: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&2;} { (exit 1); exit 1; }; } elif test "x$enable_pyzfs" != xno; then enable_pyzfs=no fi else { $as_echo "$as_me:$LINENO: result: skip at user request" >&5 $as_echo "skip at user request" >&6; } fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } fi # # if the macro parameter ``version'' is set, honour it # if test -n "$PYTHON_REQUIRED_VERSION"; then { $as_echo "$as_me:$LINENO: checking for a version of Python $PYTHON_REQUIRED_VERSION" >&5 $as_echo_n "checking for a version of Python $PYTHON_REQUIRED_VERSION... " >&6; } ac_supports_python_ver=`$PYTHON -c "import sys; \ ver = sys.version.split ()[0]; \ print (ver $PYTHON_REQUIRED_VERSION)"` if test "$ac_supports_python_ver" = "True"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_pyzfs" = xyes; then { { $as_echo "$as_me:$LINENO: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&5 $as_echo "$as_me: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&2;} { (exit 1); exit 1; }; } elif test "x$enable_pyzfs" != xno; then enable_pyzfs=no fi fi fi # # Check if you have distutils, else fail # { $as_echo "$as_me:$LINENO: checking for the distutils Python package" >&5 $as_echo_n "checking for the distutils Python package... " >&6; } ac_distutils_result=`$PYTHON -c "import distutils" 2>&1` if test $? -eq 0; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_pyzfs" = xyes; then { { $as_echo "$as_me:$LINENO: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&5 $as_echo "$as_me: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&2;} { (exit 1); exit 1; }; } elif test "x$enable_pyzfs" != xno; then enable_pyzfs=no fi fi # # Check for Python include path # { $as_echo "$as_me:$LINENO: checking for Python include path" >&5 $as_echo_n "checking for Python include path... " >&6; } if test -z "$PYTHON_CPPFLAGS"; then python_path=`$PYTHON -c "import distutils.sysconfig; \ print (distutils.sysconfig.get_python_inc ());"` plat_python_path=`$PYTHON -c "import distutils.sysconfig; \ print (distutils.sysconfig.get_python_inc (plat_specific=1));"` if test -n "${python_path}"; then if test "${plat_python_path}" != "${python_path}"; then python_path="-I$python_path -I$plat_python_path" else python_path="-I$python_path" fi fi PYTHON_CPPFLAGS=$python_path fi { $as_echo "$as_me:$LINENO: result: $PYTHON_CPPFLAGS" >&5 $as_echo "$PYTHON_CPPFLAGS" >&6; } # # Check for Python library path # { $as_echo "$as_me:$LINENO: checking for Python library path" >&5 $as_echo_n "checking for Python library path... " >&6; } if test -z "$PYTHON_LIBS"; then # (makes two attempts to ensure we've got a version number # from the interpreter) ac_python_version=`cat<>confdefs.h <<_ACEOF #define HAVE_PYTHON "$ac_python_version" _ACEOF # First, the library directory: ac_python_libdir=`cat<&5 $as_echo "$as_me: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&2;} { (exit 1); exit 1; }; } elif test "x$enable_pyzfs" != xno; then enable_pyzfs=no fi fi fi { $as_echo "$as_me:$LINENO: result: $PYTHON_LIBS" >&5 $as_echo "$PYTHON_LIBS" >&6; } # # Check for site packages # { $as_echo "$as_me:$LINENO: checking for Python site-packages path" >&5 $as_echo_n "checking for Python site-packages path... " >&6; } if test -z "$PYTHON_SITE_PKG"; then PYTHON_SITE_PKG=`$PYTHON -c "import distutils.sysconfig; \ print (distutils.sysconfig.get_python_lib(0,0));"` fi { $as_echo "$as_me:$LINENO: result: $PYTHON_SITE_PKG" >&5 $as_echo "$PYTHON_SITE_PKG" >&6; } # # libraries which must be linked in when embedding # { $as_echo "$as_me:$LINENO: checking python extra libraries" >&5 $as_echo_n "checking python extra libraries... " >&6; } if test -z "$PYTHON_EXTRA_LIBS"; then PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \ conf = distutils.sysconfig.get_config_var; \ print (conf('LIBS') + ' ' + conf('SYSLIBS'))"` fi { $as_echo "$as_me:$LINENO: result: $PYTHON_EXTRA_LIBS" >&5 $as_echo "$PYTHON_EXTRA_LIBS" >&6; } # # linking flags needed when embedding # { $as_echo "$as_me:$LINENO: checking python extra linking flags" >&5 $as_echo_n "checking python extra linking flags... " >&6; } if test -z "$PYTHON_EXTRA_LDFLAGS"; then PYTHON_EXTRA_LDFLAGS=`$PYTHON -c "import distutils.sysconfig; \ conf = distutils.sysconfig.get_config_var; \ print (conf('LINKFORSHARED'))"` fi { $as_echo "$as_me:$LINENO: result: $PYTHON_EXTRA_LDFLAGS" >&5 $as_echo "$PYTHON_EXTRA_LDFLAGS" >&6; } # # final check to see if everything compiles alright # { $as_echo "$as_me:$LINENO: checking consistency of all components of python development environment" >&5 $as_echo_n "checking consistency of all components of python development environment... " >&6; } # save current global flags ac_save_LIBS="$LIBS" ac_save_LDFLAGS="$LDFLAGS" ac_save_CPPFLAGS="$CPPFLAGS" LIBS="$ac_save_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_EXTRA_LIBS" LDFLAGS="$ac_save_LDFLAGS $PYTHON_EXTRA_LDFLAGS" CPPFLAGS="$ac_save_CPPFLAGS $PYTHON_CPPFLAGS" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { Py_Initialize(); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then pythonexists=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 pythonexists=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # turn back to default flags CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" LDFLAGS="$ac_save_LDFLAGS" { $as_echo "$as_me:$LINENO: result: $pythonexists" >&5 $as_echo "$pythonexists" >&6; } if test ! "x$pythonexists" = "xyes"; then if test "x$enable_pyzfs" = xyes; then { { $as_echo "$as_me:$LINENO: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&5 $as_echo "$as_me: error: \"Python $PYTHON_REQUIRED_VERSION development library is not installed\"" >&2;} { (exit 1); exit 1; }; } elif test "x$enable_pyzfs" != xno; then enable_pyzfs=no fi fi # # all done! # fi if test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes; then PYTHON_NAME=$(basename $PYTHON) { $as_echo "$as_me:$LINENO: checking for $PYTHON_NAME module: setuptools" >&5 $as_echo_n "checking for $PYTHON_NAME module: setuptools... " >&6; } if $PYTHON -c "import setuptools" 2>/dev/null; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_pyzfs" = xyes; then { { $as_echo "$as_me:$LINENO: error: \"Python $PYTHON_VERSION setuptools is not installed\"" >&5 $as_echo "$as_me: error: \"Python $PYTHON_VERSION setuptools is not installed\"" >&2;} { (exit 1); exit 1; }; } elif test "x$enable_pyzfs" != xno; then enable_pyzfs=no fi fi fi if test "x$enable_pyzfs" = xcheck -o "x$enable_pyzfs" = xyes; then PYTHON_NAME=$(basename $PYTHON) { $as_echo "$as_me:$LINENO: checking for $PYTHON_NAME module: cffi" >&5 $as_echo_n "checking for $PYTHON_NAME module: cffi... " >&6; } if $PYTHON -c "import cffi" 2>/dev/null; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_pyzfs" = xyes; then { { $as_echo "$as_me:$LINENO: error: \"Python $PYTHON_VERSION cffi is not installed\"" >&5 $as_echo "$as_me: error: \"Python $PYTHON_VERSION cffi is not installed\"" >&2;} { (exit 1); exit 1; }; } elif test "x$enable_pyzfs" != xno; then enable_pyzfs=no fi fi fi if test "x$enable_pyzfs" = xcheck; then enable_pyzfs=yes fi if test "x$enable_pyzfs" = xyes; then PYZFS_ENABLED_TRUE= PYZFS_ENABLED_FALSE='#' else PYZFS_ENABLED_TRUE='#' PYZFS_ENABLED_FALSE= fi PYZFS_ENABLED=$enable_pyzfs pythonsitedir=$PYTHON_SITE_PKG { $as_echo "$as_me:$LINENO: checking whether to enable pyzfs: " >&5 $as_echo_n "checking whether to enable pyzfs: ... " >&6; } { $as_echo "$as_me:$LINENO: result: $enable_pyzfs" >&5 $as_echo "$enable_pyzfs" >&6; } case "$ZFS_CONFIG" in kernel) # Check whether --with-linux was given. if test "${with_linux+set}" = set; then withval=$with_linux; kernelsrc="$withval" fi # Check whether --with-linux-obj was given. if test "${with_linux_obj+set}" = set; then withval=$with_linux_obj; kernelbuild="$withval" fi { $as_echo "$as_me:$LINENO: checking kernel source directory" >&5 $as_echo_n "checking kernel source directory... " >&6; } if test -z "$kernelsrc"; then if test -e "/lib/modules/$(uname -r)/source"; then headersdir="/lib/modules/$(uname -r)/source" sourcelink=$(readlink -f "$headersdir") elif test -e "/lib/modules/$(uname -r)/build"; then headersdir="/lib/modules/$(uname -r)/build" sourcelink=$(readlink -f "$headersdir") else sourcelink=$(ls -1d /usr/src/kernels/* \ /usr/src/linux-* \ 2>/dev/null | grep -v obj | tail -1) fi if test -n "$sourcelink" && test -e ${sourcelink}; then kernelsrc=`readlink -f ${sourcelink}` else kernelsrc="Not found" fi else if test "$kernelsrc" = "NONE"; then kernsrcver=NONE fi withlinux=yes fi { $as_echo "$as_me:$LINENO: result: $kernelsrc" >&5 $as_echo "$kernelsrc" >&6; } if test ! -d "$kernelsrc"; then { { $as_echo "$as_me:$LINENO: error: *** Please make sure the kernel devel package for your distribution *** is installed and then try again. If that fails, you can specify the *** location of the kernel source with the '--with-linux=PATH' option." >&5 $as_echo "$as_me: error: *** Please make sure the kernel devel package for your distribution *** is installed and then try again. If that fails, you can specify the *** location of the kernel source with the '--with-linux=PATH' option." >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking kernel build directory" >&5 $as_echo_n "checking kernel build directory... " >&6; } if test -z "$kernelbuild"; then if test x$withlinux != xyes -a -e "/lib/modules/$(uname -r)/build"; then kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} elif test -d ${kernelsrc}-obj/${target_cpu}/default; then kernelbuild=${kernelsrc}-obj/${target_cpu}/default elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} else kernelbuild=${kernelsrc} fi fi { $as_echo "$as_me:$LINENO: result: $kernelbuild" >&5 $as_echo "$kernelbuild" >&6; } { $as_echo "$as_me:$LINENO: checking kernel source version" >&5 $as_echo_n "checking kernel source version... " >&6; } utsrelease1=$kernelbuild/include/linux/version.h utsrelease2=$kernelbuild/include/linux/utsrelease.h utsrelease3=$kernelbuild/include/generated/utsrelease.h if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then utsrelease=linux/version.h elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then utsrelease=linux/utsrelease.h elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then utsrelease=generated/utsrelease.h fi if test "$utsrelease"; then kernsrcver=`(echo "#include <$utsrelease>"; echo "kernsrcver=UTS_RELEASE") | ${CPP} -I $kernelbuild/include - | grep "^kernsrcver=" | cut -d \" -f 2` if test -z "$kernsrcver"; then { $as_echo "$as_me:$LINENO: result: Not found" >&5 $as_echo "Not found" >&6; } { { $as_echo "$as_me:$LINENO: error: *** Cannot determine kernel version. " >&5 $as_echo "$as_me: error: *** Cannot determine kernel version. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: Not found" >&5 $as_echo "Not found" >&6; } if test "x$enable_linux_builtin" != xyes; then { { $as_echo "$as_me:$LINENO: error: *** Cannot find UTS_RELEASE definition. " >&5 $as_echo "$as_me: error: *** Cannot find UTS_RELEASE definition. " >&2;} { (exit 1); exit 1; }; } else { { $as_echo "$as_me:$LINENO: error: *** Cannot find UTS_RELEASE definition. *** Please run 'make prepare' inside the kernel source tree." >&5 $as_echo "$as_me: error: *** Cannot find UTS_RELEASE definition. *** Please run 'make prepare' inside the kernel source tree." >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $kernsrcver" >&5 $as_echo "$kernsrcver" >&6; } LINUX=${kernelsrc} LINUX_OBJ=${kernelbuild} LINUX_VERSION=${kernsrcver} modpost=$LINUX/scripts/Makefile.modpost { $as_echo "$as_me:$LINENO: checking kernel file name for module symbols" >&5 $as_echo_n "checking kernel file name for module symbols... " >&6; } if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then if grep -q Modules.symvers $modpost; then LINUX_SYMBOLS=Modules.symvers else LINUX_SYMBOLS=Module.symvers fi if test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then { { $as_echo "$as_me:$LINENO: error: *** Please make sure the kernel devel package for your distribution *** is installed. If you are building with a custom kernel, make sure *** the kernel is configured, built, and the '--with-linux=PATH' *** configure option refers to the location of the kernel source. " >&5 $as_echo "$as_me: error: *** Please make sure the kernel devel package for your distribution *** is installed. If you are building with a custom kernel, make sure *** the kernel is configured, built, and the '--with-linux=PATH' *** configure option refers to the location of the kernel source. " >&2;} { (exit 1); exit 1; }; } fi else LINUX_SYMBOLS=NONE fi { $as_echo "$as_me:$LINENO: result: $LINUX_SYMBOLS" >&5 $as_echo "$LINUX_SYMBOLS" >&6; } # Check whether --with-qat was given. if test "${with_qat+set}" = set; then withval=$with_qat; if test "$withval" = "yes"; then { { $as_echo "$as_me:$LINENO: error: --with-qat=PATH requires a PATH" >&5 $as_echo "$as_me: error: --with-qat=PATH requires a PATH" >&2;} { (exit 1); exit 1; }; } else qatsrc="$withval" fi fi # Check whether --with-qat-obj was given. if test "${with_qat_obj+set}" = set; then withval=$with_qat_obj; qatbuild="$withval" fi if test ! -z "${qatsrc}"; then { $as_echo "$as_me:$LINENO: checking qat source directory" >&5 $as_echo_n "checking qat source directory... " >&6; } { $as_echo "$as_me:$LINENO: result: $qatsrc" >&5 $as_echo "$qatsrc" >&6; } QAT_SRC="${qatsrc}/quickassist" if test ! -e "$QAT_SRC/include/cpa.h"; then { { $as_echo "$as_me:$LINENO: error: *** Please make sure the qat driver package is installed *** and specify the location of the qat source with the *** '--with-qat=PATH' option then try again. Failed to *** find cpa.h in: ${QAT_SRC}/include" >&5 $as_echo "$as_me: error: *** Please make sure the qat driver package is installed *** and specify the location of the qat source with the *** '--with-qat=PATH' option then try again. Failed to *** find cpa.h in: ${QAT_SRC}/include" >&2;} { (exit 1); exit 1; }; } fi fi if test ! -z "${qatsrc}"; then { $as_echo "$as_me:$LINENO: checking qat build directory" >&5 $as_echo_n "checking qat build directory... " >&6; } if test -z "$qatbuild"; then qatbuild="${qatsrc}/build" fi { $as_echo "$as_me:$LINENO: result: $qatbuild" >&5 $as_echo "$qatbuild" >&6; } QAT_OBJ=${qatbuild} if ! test -e "$QAT_OBJ/icp_qa_al.ko" && ! test -e "$QAT_OBJ/qat_api.ko"; then { { $as_echo "$as_me:$LINENO: error: *** Please make sure the qat driver is installed then try again. *** Failed to find icp_qa_al.ko or qat_api.ko in: $QAT_OBJ" >&5 $as_echo "$as_me: error: *** Please make sure the qat driver is installed then try again. *** Failed to find icp_qa_al.ko or qat_api.ko in: $QAT_OBJ" >&2;} { (exit 1); exit 1; }; } fi cat >>confdefs.h <<\_ACEOF #define HAVE_QAT 1 _ACEOF fi if test ! -z "${qatsrc}"; then { $as_echo "$as_me:$LINENO: checking qat file for module symbols" >&5 $as_echo_n "checking qat file for module symbols... " >&6; } QAT_SYMBOLS=$QAT_SRC/lookaside/access_layer/src/Module.symvers if test -r $QAT_SYMBOLS; then { $as_echo "$as_me:$LINENO: result: $QAT_SYMBOLS" >&5 $as_echo "$QAT_SYMBOLS" >&6; } else { { $as_echo "$as_me:$LINENO: error: *** Please make sure the qat driver is installed then try again. *** Failed to find Module.symvers in: $QAT_SYMBOLS " >&5 $as_echo "$as_me: error: *** Please make sure the qat driver is installed then try again. *** Failed to find Module.symvers in: $QAT_SYMBOLS " >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: checking whether modules can be built" >&5 $as_echo_n "checking whether modules can be built... " >&6; } test -d build/conftest && rm -Rf build/conftest test -f build/Makefile && sed '/conftest/d' build/Makefile test -d build/conftest || mkdir -p build/conftest cat confdefs.h - <<_ACEOF >build/conftest/conftest.c int main (void) { ; return 0; } _ACEOF test -d build/conftest || mkdir -p build/conftest cat - <<_ACEOF >build/conftest/conftest.h _ACEOF test -d build || mkdir -p build test -d build/conftest || mkdir -p build/conftest file=build/conftest/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := conftest.o" >>$file if test "xno" = "xyes"; then echo "obj-m += conftest/" >>build/Makefile fi { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest &>build/conftest/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/conftest/conftest.ko' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_linux_builtin" != xyes; then { { $as_echo "$as_me:$LINENO: error: *** Unable to build an empty module. " >&5 $as_echo "$as_me: error: *** Unable to build an empty module. " >&2;} { (exit 1); exit 1; }; } else { { $as_echo "$as_me:$LINENO: error: *** Unable to build an empty module. *** Please run 'make scripts' inside the kernel source tree." >&5 $as_echo "$as_me: error: *** Unable to build an empty module. *** Please run 'make scripts' inside the kernel source tree." >&2;} { (exit 1); exit 1; }; } fi fi if test "x$cross_compiling" != xyes; then if test "$cross_compiling" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include "$LINUX/include/linux/license.h" int main () { return !license_is_gpl_compatible( "$ZFS_META_LICENSE"); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cat >>confdefs.h <<\_ACEOF #define ZFS_IS_GPL_COMPATIBLE 1 _ACEOF else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi test -d build/config_thread_size || mkdir -p build/config_thread_size cat confdefs.h - <<_ACEOF >build/config_thread_size/config_thread_size.c #include int main (void) { #if (THREAD_SIZE < 16384) #error "THREAD_SIZE is less than 16K" #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_thread_size || mkdir -p build/config_thread_size file=build/config_thread_size/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_thread_size ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_thread_size.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_thread_size/" >>build/Makefile fi if test -n "" ; then test -d build/config_thread_size_license || mkdir -p build/config_thread_size_license cat confdefs.h - <<_ACEOF >build/config_thread_size_license/config_thread_size_license.c #include MODULE_LICENSE(""); #include int main (void) { #if (THREAD_SIZE < 16384) #error "THREAD_SIZE is less than 16K" #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_thread_size_license || mkdir -p build/config_thread_size_license file=build/config_thread_size_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_thread_size_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_thread_size_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_thread_size_license/" >>build/Makefile fi fi test -d build/config_debug_lock_alloc || mkdir -p build/config_debug_lock_alloc cat confdefs.h - <<_ACEOF >build/config_debug_lock_alloc/config_debug_lock_alloc.c #include int main (void) { struct mutex lock; mutex_init(&lock); mutex_lock(&lock); mutex_unlock(&lock); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_debug_lock_alloc || mkdir -p build/config_debug_lock_alloc file=build/config_debug_lock_alloc/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_debug_lock_alloc ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_debug_lock_alloc.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_debug_lock_alloc/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/config_debug_lock_alloc_license || mkdir -p build/config_debug_lock_alloc_license cat confdefs.h - <<_ACEOF >build/config_debug_lock_alloc_license/config_debug_lock_alloc_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include int main (void) { struct mutex lock; mutex_init(&lock); mutex_lock(&lock); mutex_unlock(&lock); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_debug_lock_alloc_license || mkdir -p build/config_debug_lock_alloc_license file=build/config_debug_lock_alloc_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_debug_lock_alloc_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_debug_lock_alloc_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_debug_lock_alloc_license/" >>build/Makefile fi fi test -d build/config_trim_unusued_ksyms || mkdir -p build/config_trim_unusued_ksyms cat confdefs.h - <<_ACEOF >build/config_trim_unusued_ksyms/config_trim_unusued_ksyms.c #if defined(CONFIG_TRIM_UNUSED_KSYMS) #error CONFIG_TRIM_UNUSED_KSYMS not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_trim_unusued_ksyms || mkdir -p build/config_trim_unusued_ksyms file=build/config_trim_unusued_ksyms/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_trim_unusued_ksyms ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_trim_unusued_ksyms.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_trim_unusued_ksyms/" >>build/Makefile fi if test -n "" ; then test -d build/config_trim_unusued_ksyms_license || mkdir -p build/config_trim_unusued_ksyms_license cat confdefs.h - <<_ACEOF >build/config_trim_unusued_ksyms_license/config_trim_unusued_ksyms_license.c #include MODULE_LICENSE(""); #if defined(CONFIG_TRIM_UNUSED_KSYMS) #error CONFIG_TRIM_UNUSED_KSYMS not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_trim_unusued_ksyms_license || mkdir -p build/config_trim_unusued_ksyms_license file=build/config_trim_unusued_ksyms_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_trim_unusued_ksyms_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_trim_unusued_ksyms_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_trim_unusued_ksyms_license/" >>build/Makefile fi fi test -d build/config_zlib_inflate || mkdir -p build/config_zlib_inflate cat confdefs.h - <<_ACEOF >build/config_zlib_inflate/config_zlib_inflate.c #if !defined(CONFIG_ZLIB_INFLATE) && \ !defined(CONFIG_ZLIB_INFLATE_MODULE) #error CONFIG_ZLIB_INFLATE not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_zlib_inflate || mkdir -p build/config_zlib_inflate file=build/config_zlib_inflate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_zlib_inflate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_zlib_inflate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_zlib_inflate/" >>build/Makefile fi if test -n "" ; then test -d build/config_zlib_inflate_license || mkdir -p build/config_zlib_inflate_license cat confdefs.h - <<_ACEOF >build/config_zlib_inflate_license/config_zlib_inflate_license.c #include MODULE_LICENSE(""); #if !defined(CONFIG_ZLIB_INFLATE) && \ !defined(CONFIG_ZLIB_INFLATE_MODULE) #error CONFIG_ZLIB_INFLATE not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_zlib_inflate_license || mkdir -p build/config_zlib_inflate_license file=build/config_zlib_inflate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_zlib_inflate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_zlib_inflate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_zlib_inflate_license/" >>build/Makefile fi fi test -d build/config_zlib_deflate || mkdir -p build/config_zlib_deflate cat confdefs.h - <<_ACEOF >build/config_zlib_deflate/config_zlib_deflate.c #if !defined(CONFIG_ZLIB_DEFLATE) && \ !defined(CONFIG_ZLIB_DEFLATE_MODULE) #error CONFIG_ZLIB_DEFLATE not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_zlib_deflate || mkdir -p build/config_zlib_deflate file=build/config_zlib_deflate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_zlib_deflate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_zlib_deflate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_zlib_deflate/" >>build/Makefile fi if test -n "" ; then test -d build/config_zlib_deflate_license || mkdir -p build/config_zlib_deflate_license cat confdefs.h - <<_ACEOF >build/config_zlib_deflate_license/config_zlib_deflate_license.c #include MODULE_LICENSE(""); #if !defined(CONFIG_ZLIB_DEFLATE) && \ !defined(CONFIG_ZLIB_DEFLATE_MODULE) #error CONFIG_ZLIB_DEFLATE not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_zlib_deflate_license || mkdir -p build/config_zlib_deflate_license file=build/config_zlib_deflate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_zlib_deflate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_zlib_deflate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_zlib_deflate_license/" >>build/Makefile fi fi { $as_echo "$as_me:$LINENO: checking for kernel config option compatibility" >&5 $as_echo_n "checking for kernel config option compatibility... " >&6; } { ac_try=' KBUILD_MODPOST_NOFINAL="yes" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build &>build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/Makefile build/Makefile.compile.config mv build/build.log build/build.log.config else { { $as_echo "$as_me:$LINENO: error: *** Unable to compile test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to compile test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi if test "x$enable_linux_builtin" = "xno"; then for dir in $(awk '/^obj-m/ { print $3 }' \ build/Makefile.compile.config); do name=${dir%/} if test -f build/$name/$name.o; then if test "${name##*_}" = "license"; then { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="yes" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/$name &>build/$name/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/$name/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/$name/Makefile build/$name/Makefile.modpost.config cat build/$name/build.log >>build/build.log.config else { { $as_echo "$as_me:$LINENO: error: *** Unable to modpost test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to modpost test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi echo "obj-n += $dir" >>build/Makefile else echo "obj-m += $dir" >>build/Makefile fi else echo "obj-n += $dir" >>build/Makefile fi done { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="yes" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build &>build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/Makefile build/Makefile.modpost.config cat build/build.log >>build/build.log.config else { { $as_echo "$as_me:$LINENO: error: *** Unable to modpost test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to modpost test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi else for dir in $(awk '/^obj-m/ { print $3 }' \ build/Makefile.compile.config); do name=${dir%/} if test -f build/$name/$name.o; then touch build/$name/$name.ko fi done fi { $as_echo "$as_me:$LINENO: result: done" >&5 $as_echo "done" >&6; } { $as_echo "$as_me:$LINENO: checking whether kernel was built with 16K or larger stacks" >&5 $as_echo_n "checking whether kernel was built with 16K or larger stacks... " >&6; } if test -d build/config_thread_size; then if test -f build/config_thread_size/config_thread_size.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LARGE_STACKS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_thread_size\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_thread_size\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether mutex_lock() is GPL-only" >&5 $as_echo_n "checking whether mutex_lock() is GPL-only... " >&6; } if test -d build/config_debug_lock_alloc; then if test -f build/config_debug_lock_alloc/config_debug_lock_alloc.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } { { $as_echo "$as_me:$LINENO: error: *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible *** with the CDDL license and will prevent the module linking stage *** from succeeding. You must rebuild your kernel without this *** option enabled." >&5 $as_echo "$as_me: error: *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible *** with the CDDL license and will prevent the module linking stage *** from succeeding. You must rebuild your kernel without this *** option enabled." >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_debug_lock_alloc\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_debug_lock_alloc\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether CONFIG_TRIM_UNUSED_KSYM is disabled" >&5 $as_echo_n "checking whether CONFIG_TRIM_UNUSED_KSYM is disabled... " >&6; } if test -d build/config_trim_unusued_ksyms; then if test -f build/config_trim_unusued_ksyms/config_trim_unusued_ksyms.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_linux_builtin" != xyes; then { { $as_echo "$as_me:$LINENO: error: *** This kernel has unused symbols trimming enabled, please disable. *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set." >&5 $as_echo "$as_me: error: *** This kernel has unused symbols trimming enabled, please disable. *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set." >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_trim_unusued_ksyms\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_trim_unusued_ksyms\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether CONFIG_ZLIB_INFLATE is defined" >&5 $as_echo_n "checking whether CONFIG_ZLIB_INFLATE is defined... " >&6; } if test -d build/config_zlib_inflate; then if test -f build/config_zlib_inflate/config_zlib_inflate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: *** This kernel does not include the required zlib inflate support. *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set." >&5 $as_echo "$as_me: error: *** This kernel does not include the required zlib inflate support. *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set." >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_zlib_inflate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_zlib_inflate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether CONFIG_ZLIB_DEFLATE is defined" >&5 $as_echo_n "checking whether CONFIG_ZLIB_DEFLATE is defined... " >&6; } if test -d build/config_zlib_deflate; then if test -f build/config_zlib_deflate/config_zlib_deflate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: *** This kernel does not include the required zlib deflate support. *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set." >&5 $as_echo "$as_me: error: *** This kernel does not include the required zlib deflate support. *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set." >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_zlib_deflate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_zlib_deflate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fpu headers are available" >&5 $as_echo_n "checking whether fpu headers are available... " >&6; } test -d build/conftest && rm -Rf build/conftest test -f build/Makefile && sed '/conftest/d' build/Makefile test -d build/conftest || mkdir -p build/conftest cat confdefs.h - <<_ACEOF >build/conftest/conftest.c #include #include int main (void) { ; return 0; } _ACEOF test -d build/conftest || mkdir -p build/conftest cat - <<_ACEOF >build/conftest/conftest.h _ACEOF test -d build || mkdir -p build test -d build/conftest || mkdir -p build/conftest file=build/conftest/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := conftest.o" >>$file if test "xno" = "xyes"; then echo "obj-m += conftest/" >>build/Makefile fi { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest &>build/conftest/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/conftest/conftest.ko' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_API_HEADER 1 _ACEOF { $as_echo "$as_me:$LINENO: result: asm/fpu/api.h" >&5 $as_echo "asm/fpu/api.h" >&6; } else { $as_echo "$as_me:$LINENO: result: i387.h & xcr.h" >&5 $as_echo "i387.h & xcr.h" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether wait_queue_entry_t exists" >&5 $as_echo_n "checking whether wait_queue_entry_t exists... " >&6; } test -d build/conftest && rm -Rf build/conftest test -f build/Makefile && sed '/conftest/d' build/Makefile test -d build/conftest || mkdir -p build/conftest cat confdefs.h - <<_ACEOF >build/conftest/conftest.c #include int main (void) { wait_queue_entry_t *entry __attribute__ ((unused)); ; return 0; } _ACEOF test -d build/conftest || mkdir -p build/conftest cat - <<_ACEOF >build/conftest/conftest.h _ACEOF test -d build || mkdir -p build test -d build/conftest || mkdir -p build/conftest file=build/conftest/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := conftest.o" >>$file if test "xno" = "xyes"; then echo "obj-m += conftest/" >>build/Makefile fi { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest &>build/conftest/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/conftest/conftest.ko' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_WAIT_QUEUE_ENTRY_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether /dev/zfs minor is available" >&5 $as_echo_n "checking whether /dev/zfs minor is available... " >&6; } for i in $(seq 249 -1 200); do if ! grep -q "^#define\s\+.*_MINOR\s\+.*$i" \ ${LINUX}/include/linux/miscdevice.h; then ZFS_DEVICE_MINOR="$i" { $as_echo "$as_me:$LINENO: result: $ZFS_DEVICE_MINOR" >&5 $as_echo "$ZFS_DEVICE_MINOR" >&6; } cat >>confdefs.h <<_ACEOF #define ZFS_DEVICE_MINOR $ZFS_DEVICE_MINOR _ACEOF break fi done if test -z "$ZFS_DEVICE_MINOR"; then { { $as_echo "$as_me:$LINENO: error: *** No available misc minor numbers available for use." >&5 $as_echo "$as_me: error: *** No available misc minor numbers available for use." >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether DECLARE_EVENT_CLASS() is available" >&5 $as_echo_n "checking whether DECLARE_EVENT_CLASS() is available... " >&6; } test -d build/conftest && rm -Rf build/conftest test -f build/Makefile && sed '/conftest/d' build/Makefile test -d build/conftest || mkdir -p build/conftest cat confdefs.h - <<_ACEOF >build/conftest/conftest.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #define CREATE_TRACE_POINTS #include "conftest.h" int main (void) { trace_zfs_autoconf_event_one(1UL); trace_zfs_autoconf_event_two(2UL); ; return 0; } _ACEOF test -d build/conftest || mkdir -p build/conftest cat - <<_ACEOF >build/conftest/conftest.h #if !defined(_CONFTEST_H) || defined(TRACE_HEADER_MULTI_READ) #define _CONFTEST_H #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #include DECLARE_EVENT_CLASS(zfs_autoconf_event_class, TP_PROTO(unsigned long i), TP_ARGS(i), TP_STRUCT__entry( __field(unsigned long, i) ), TP_fast_assign( __entry->i = i; ), TP_printk("i = %lu", __entry->i) ); #define DEFINE_AUTOCONF_EVENT(name) \ DEFINE_EVENT(zfs_autoconf_event_class, name, \ TP_PROTO(unsigned long i), \ TP_ARGS(i)) DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_one); DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_two); #endif /* _CONFTEST_H */ #undef TRACE_INCLUDE_PATH #define TRACE_INCLUDE_PATH . #define TRACE_INCLUDE_FILE conftest #include _ACEOF test -d build || mkdir -p build test -d build/conftest || mkdir -p build/conftest file=build/conftest/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += -I$PWD/build/conftest " >>$file echo "obj-m := conftest.o" >>$file if test "xno" = "xyes"; then echo "obj-m += conftest/" >>build/Makefile fi { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest &>build/conftest/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/conftest/conftest.ko' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DECLARE_EVENT_CLASS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -d build/objtool || mkdir -p build/objtool cat confdefs.h - <<_ACEOF >build/objtool/objtool.c #undef __ASSEMBLY__ #include int main (void) { #if !defined(FRAME_BEGIN) CTASSERT(1); #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/objtool || mkdir -p build/objtool file=build/objtool/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/objtool ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := objtool.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += objtool/" >>build/Makefile fi if test -n "" ; then test -d build/objtool_license || mkdir -p build/objtool_license cat confdefs.h - <<_ACEOF >build/objtool_license/objtool_license.c #include MODULE_LICENSE(""); #undef __ASSEMBLY__ #include int main (void) { #if !defined(FRAME_BEGIN) CTASSERT(1); #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/objtool_license || mkdir -p build/objtool_license file=build/objtool_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/objtool_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := objtool_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += objtool_license/" >>build/Makefile fi fi test -d build/stack_frame_non_standard || mkdir -p build/stack_frame_non_standard cat confdefs.h - <<_ACEOF >build/stack_frame_non_standard/stack_frame_non_standard.c #include int main (void) { #if !defined(STACK_FRAME_NON_STANDARD) CTASSERT(1); #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/stack_frame_non_standard || mkdir -p build/stack_frame_non_standard file=build/stack_frame_non_standard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/stack_frame_non_standard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := stack_frame_non_standard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += stack_frame_non_standard/" >>build/Makefile fi if test -n "" ; then test -d build/stack_frame_non_standard_license || mkdir -p build/stack_frame_non_standard_license cat confdefs.h - <<_ACEOF >build/stack_frame_non_standard_license/stack_frame_non_standard_license.c #include MODULE_LICENSE(""); #include int main (void) { #if !defined(STACK_FRAME_NON_STANDARD) CTASSERT(1); #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/stack_frame_non_standard_license || mkdir -p build/stack_frame_non_standard_license file=build/stack_frame_non_standard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/stack_frame_non_standard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := stack_frame_non_standard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += stack_frame_non_standard_license/" >>build/Makefile fi fi test -d build/global_node_page_state || mkdir -p build/global_node_page_state cat confdefs.h - <<_ACEOF >build/global_node_page_state/global_node_page_state.c #include #include int main (void) { (void) global_node_page_state(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/global_node_page_state || mkdir -p build/global_node_page_state file=build/global_node_page_state/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/global_node_page_state ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := global_node_page_state.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += global_node_page_state/" >>build/Makefile fi if test -n "" ; then test -d build/global_node_page_state_license || mkdir -p build/global_node_page_state_license cat confdefs.h - <<_ACEOF >build/global_node_page_state_license/global_node_page_state_license.c #include MODULE_LICENSE(""); #include #include int main (void) { (void) global_node_page_state(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/global_node_page_state_license || mkdir -p build/global_node_page_state_license file=build/global_node_page_state_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/global_node_page_state_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := global_node_page_state_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += global_node_page_state_license/" >>build/Makefile fi fi test -d build/global_zone_page_state || mkdir -p build/global_zone_page_state cat confdefs.h - <<_ACEOF >build/global_zone_page_state/global_zone_page_state.c #include #include int main (void) { (void) global_zone_page_state(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/global_zone_page_state || mkdir -p build/global_zone_page_state file=build/global_zone_page_state/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/global_zone_page_state ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := global_zone_page_state.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += global_zone_page_state/" >>build/Makefile fi if test -n "" ; then test -d build/global_zone_page_state_license || mkdir -p build/global_zone_page_state_license cat confdefs.h - <<_ACEOF >build/global_zone_page_state_license/global_zone_page_state_license.c #include MODULE_LICENSE(""); #include #include int main (void) { (void) global_zone_page_state(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/global_zone_page_state_license || mkdir -p build/global_zone_page_state_license file=build/global_zone_page_state_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/global_zone_page_state_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := global_zone_page_state_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += global_zone_page_state_license/" >>build/Makefile fi fi test -d build/access_ok_type || mkdir -p build/access_ok_type cat confdefs.h - <<_ACEOF >build/access_ok_type/access_ok_type.c #include int main (void) { const void __user __attribute__((unused)) *addr = (void *) 0xdeadbeef; unsigned long __attribute__((unused)) size = 1; int error __attribute__((unused)) = access_ok(0, addr, size); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/access_ok_type || mkdir -p build/access_ok_type file=build/access_ok_type/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/access_ok_type ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := access_ok_type.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += access_ok_type/" >>build/Makefile fi if test -n "" ; then test -d build/access_ok_type_license || mkdir -p build/access_ok_type_license cat confdefs.h - <<_ACEOF >build/access_ok_type_license/access_ok_type_license.c #include MODULE_LICENSE(""); #include int main (void) { const void __user __attribute__((unused)) *addr = (void *) 0xdeadbeef; unsigned long __attribute__((unused)) size = 1; int error __attribute__((unused)) = access_ok(0, addr, size); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/access_ok_type_license || mkdir -p build/access_ok_type_license file=build/access_ok_type_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/access_ok_type_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := access_ok_type_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += access_ok_type_license/" >>build/Makefile fi fi test -d build/ctl_name || mkdir -p build/ctl_name cat confdefs.h - <<_ACEOF >build/ctl_name/ctl_name.c #include int main (void) { struct ctl_table ctl __attribute__ ((unused)); ctl.ctl_name = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ctl_name || mkdir -p build/ctl_name file=build/ctl_name/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ctl_name ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ctl_name.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ctl_name/" >>build/Makefile fi if test -n "" ; then test -d build/ctl_name_license || mkdir -p build/ctl_name_license cat confdefs.h - <<_ACEOF >build/ctl_name_license/ctl_name_license.c #include MODULE_LICENSE(""); #include int main (void) { struct ctl_table ctl __attribute__ ((unused)); ctl.ctl_name = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ctl_name_license || mkdir -p build/ctl_name_license file=build/ctl_name_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ctl_name_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ctl_name_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ctl_name_license/" >>build/Makefile fi fi test -d build/pde_data || mkdir -p build/pde_data cat confdefs.h - <<_ACEOF >build/pde_data/pde_data.c #include int main (void) { PDE_DATA(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/pde_data || mkdir -p build/pde_data file=build/pde_data/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/pde_data ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := pde_data.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += pde_data/" >>build/Makefile fi if test -n "" ; then test -d build/pde_data_license || mkdir -p build/pde_data_license cat confdefs.h - <<_ACEOF >build/pde_data_license/pde_data_license.c #include MODULE_LICENSE(""); #include int main (void) { PDE_DATA(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/pde_data_license || mkdir -p build/pde_data_license file=build/pde_data_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/pde_data_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := pde_data_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += pde_data_license/" >>build/Makefile fi fi test -d build/file_fallocate || mkdir -p build/file_fallocate cat confdefs.h - <<_ACEOF >build/file_fallocate/file_fallocate.c #include long test_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_fallocate || mkdir -p build/file_fallocate file=build/file_fallocate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_fallocate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_fallocate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_fallocate/" >>build/Makefile fi if test -n "" ; then test -d build/file_fallocate_license || mkdir -p build/file_fallocate_license cat confdefs.h - <<_ACEOF >build/file_fallocate_license/file_fallocate_license.c #include MODULE_LICENSE(""); #include long test_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_fallocate_license || mkdir -p build/file_fallocate_license file=build/file_fallocate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_fallocate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_fallocate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_fallocate_license/" >>build/Makefile fi fi test -d build/inode_fallocate || mkdir -p build/inode_fallocate cat confdefs.h - <<_ACEOF >build/inode_fallocate/inode_fallocate.c #include long test_fallocate(struct inode *inode, int mode, loff_t offset, loff_t len) { return 0; } static const struct inode_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_fallocate || mkdir -p build/inode_fallocate file=build/inode_fallocate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_fallocate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_fallocate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_fallocate/" >>build/Makefile fi if test -n "" ; then test -d build/inode_fallocate_license || mkdir -p build/inode_fallocate_license cat confdefs.h - <<_ACEOF >build/inode_fallocate_license/inode_fallocate_license.c #include MODULE_LICENSE(""); #include long test_fallocate(struct inode *inode, int mode, loff_t offset, loff_t len) { return 0; } static const struct inode_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_fallocate_license || mkdir -p build/inode_fallocate_license file=build/inode_fallocate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_fallocate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_fallocate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_fallocate_license/" >>build/Makefile fi fi test -d build/2args_zlib_deflate_workspacesize || mkdir -p build/2args_zlib_deflate_workspacesize cat confdefs.h - <<_ACEOF >build/2args_zlib_deflate_workspacesize/2args_zlib_deflate_workspacesize.c #include int main (void) { return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/2args_zlib_deflate_workspacesize || mkdir -p build/2args_zlib_deflate_workspacesize file=build/2args_zlib_deflate_workspacesize/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/2args_zlib_deflate_workspacesize ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := 2args_zlib_deflate_workspacesize.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += 2args_zlib_deflate_workspacesize/" >>build/Makefile fi if test -n "" ; then test -d build/2args_zlib_deflate_workspacesize_license || mkdir -p build/2args_zlib_deflate_workspacesize_license cat confdefs.h - <<_ACEOF >build/2args_zlib_deflate_workspacesize_license/2args_zlib_deflate_workspacesize_license.c #include MODULE_LICENSE(""); #include int main (void) { return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/2args_zlib_deflate_workspacesize_license || mkdir -p build/2args_zlib_deflate_workspacesize_license file=build/2args_zlib_deflate_workspacesize_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/2args_zlib_deflate_workspacesize_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := 2args_zlib_deflate_workspacesize_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += 2args_zlib_deflate_workspacesize_license/" >>build/Makefile fi fi test -d build/rwsem_spinlock_is_raw || mkdir -p build/rwsem_spinlock_is_raw cat confdefs.h - <<_ACEOF >build/rwsem_spinlock_is_raw/rwsem_spinlock_is_raw.c #include int main (void) { struct rw_semaphore dummy_semaphore __attribute__ ((unused)); raw_spinlock_t dummy_lock __attribute__ ((unused)) = __RAW_SPIN_LOCK_INITIALIZER(dummy_lock); dummy_semaphore.wait_lock = dummy_lock; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_spinlock_is_raw || mkdir -p build/rwsem_spinlock_is_raw file=build/rwsem_spinlock_is_raw/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_spinlock_is_raw ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_spinlock_is_raw.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_spinlock_is_raw/" >>build/Makefile fi if test -n "" ; then test -d build/rwsem_spinlock_is_raw_license || mkdir -p build/rwsem_spinlock_is_raw_license cat confdefs.h - <<_ACEOF >build/rwsem_spinlock_is_raw_license/rwsem_spinlock_is_raw_license.c #include MODULE_LICENSE(""); #include int main (void) { struct rw_semaphore dummy_semaphore __attribute__ ((unused)); raw_spinlock_t dummy_lock __attribute__ ((unused)) = __RAW_SPIN_LOCK_INITIALIZER(dummy_lock); dummy_semaphore.wait_lock = dummy_lock; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_spinlock_is_raw_license || mkdir -p build/rwsem_spinlock_is_raw_license file=build/rwsem_spinlock_is_raw_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_spinlock_is_raw_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_spinlock_is_raw_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_spinlock_is_raw_license/" >>build/Makefile fi fi test -d build/rwsem_activity || mkdir -p build/rwsem_activity cat confdefs.h - <<_ACEOF >build/rwsem_activity/rwsem_activity.c #include int main (void) { struct rw_semaphore dummy_semaphore __attribute__ ((unused)); dummy_semaphore.activity = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_activity || mkdir -p build/rwsem_activity file=build/rwsem_activity/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_activity ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_activity.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_activity/" >>build/Makefile fi if test -n "" ; then test -d build/rwsem_activity_license || mkdir -p build/rwsem_activity_license cat confdefs.h - <<_ACEOF >build/rwsem_activity_license/rwsem_activity_license.c #include MODULE_LICENSE(""); #include int main (void) { struct rw_semaphore dummy_semaphore __attribute__ ((unused)); dummy_semaphore.activity = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_activity_license || mkdir -p build/rwsem_activity_license file=build/rwsem_activity_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_activity_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_activity_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_activity_license/" >>build/Makefile fi fi test -d build/rwsem_atomic_long_count || mkdir -p build/rwsem_atomic_long_count cat confdefs.h - <<_ACEOF >build/rwsem_atomic_long_count/rwsem_atomic_long_count.c #include int main (void) { DECLARE_RWSEM(dummy_semaphore); (void) atomic_long_read(&dummy_semaphore.count); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_atomic_long_count || mkdir -p build/rwsem_atomic_long_count file=build/rwsem_atomic_long_count/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_atomic_long_count ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_atomic_long_count.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_atomic_long_count/" >>build/Makefile fi if test -n "" ; then test -d build/rwsem_atomic_long_count_license || mkdir -p build/rwsem_atomic_long_count_license cat confdefs.h - <<_ACEOF >build/rwsem_atomic_long_count_license/rwsem_atomic_long_count_license.c #include MODULE_LICENSE(""); #include int main (void) { DECLARE_RWSEM(dummy_semaphore); (void) atomic_long_read(&dummy_semaphore.count); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_atomic_long_count_license || mkdir -p build/rwsem_atomic_long_count_license file=build/rwsem_atomic_long_count_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_atomic_long_count_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_atomic_long_count_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_atomic_long_count_license/" >>build/Makefile fi fi test -d build/sched_rt_header || mkdir -p build/sched_rt_header cat confdefs.h - <<_ACEOF >build/sched_rt_header/sched_rt_header.c #include #include int main (void) { return 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sched_rt_header || mkdir -p build/sched_rt_header file=build/sched_rt_header/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sched_rt_header ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sched_rt_header.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sched_rt_header/" >>build/Makefile fi if test -n "" ; then test -d build/sched_rt_header_license || mkdir -p build/sched_rt_header_license cat confdefs.h - <<_ACEOF >build/sched_rt_header_license/sched_rt_header_license.c #include MODULE_LICENSE(""); #include #include int main (void) { return 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sched_rt_header_license || mkdir -p build/sched_rt_header_license file=build/sched_rt_header_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sched_rt_header_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sched_rt_header_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sched_rt_header_license/" >>build/Makefile fi fi test -d build/sched_signal_header || mkdir -p build/sched_signal_header cat confdefs.h - <<_ACEOF >build/sched_signal_header/sched_signal_header.c #include #include int main (void) { return 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sched_signal_header || mkdir -p build/sched_signal_header file=build/sched_signal_header/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sched_signal_header ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sched_signal_header.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sched_signal_header/" >>build/Makefile fi if test -n "" ; then test -d build/sched_signal_header_license || mkdir -p build/sched_signal_header_license cat confdefs.h - <<_ACEOF >build/sched_signal_header_license/sched_signal_header_license.c #include MODULE_LICENSE(""); #include #include int main (void) { return 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sched_signal_header_license || mkdir -p build/sched_signal_header_license file=build/sched_signal_header_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sched_signal_header_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sched_signal_header_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sched_signal_header_license/" >>build/Makefile fi fi test -d build/io_schedule_timeout || mkdir -p build/io_schedule_timeout cat confdefs.h - <<_ACEOF >build/io_schedule_timeout/io_schedule_timeout.c #include int main (void) { (void) io_schedule_timeout(1); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/io_schedule_timeout || mkdir -p build/io_schedule_timeout file=build/io_schedule_timeout/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/io_schedule_timeout ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := io_schedule_timeout.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += io_schedule_timeout/" >>build/Makefile fi if test -n "" ; then test -d build/io_schedule_timeout_license || mkdir -p build/io_schedule_timeout_license cat confdefs.h - <<_ACEOF >build/io_schedule_timeout_license/io_schedule_timeout_license.c #include MODULE_LICENSE(""); #include int main (void) { (void) io_schedule_timeout(1); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/io_schedule_timeout_license || mkdir -p build/io_schedule_timeout_license file=build/io_schedule_timeout_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/io_schedule_timeout_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := io_schedule_timeout_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += io_schedule_timeout_license/" >>build/Makefile fi fi test -d build/usleep_range || mkdir -p build/usleep_range cat confdefs.h - <<_ACEOF >build/usleep_range/usleep_range.c #include int main (void) { usleep_range(0, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/usleep_range || mkdir -p build/usleep_range file=build/usleep_range/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/usleep_range ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := usleep_range.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += usleep_range/" >>build/Makefile fi if test -n "" ; then test -d build/usleep_range_license || mkdir -p build/usleep_range_license cat confdefs.h - <<_ACEOF >build/usleep_range_license/usleep_range_license.c #include MODULE_LICENSE(""); #include int main (void) { usleep_range(0, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/usleep_range_license || mkdir -p build/usleep_range_license file=build/usleep_range_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/usleep_range_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := usleep_range_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += usleep_range_license/" >>build/Makefile fi fi test -d build/kmem_cache_allocflags || mkdir -p build/kmem_cache_allocflags cat confdefs.h - <<_ACEOF >build/kmem_cache_allocflags/kmem_cache_allocflags.c #include int main (void) { struct kmem_cache cachep __attribute__ ((unused)); cachep.allocflags = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_allocflags || mkdir -p build/kmem_cache_allocflags file=build/kmem_cache_allocflags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_allocflags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_allocflags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_allocflags/" >>build/Makefile fi if test -n "" ; then test -d build/kmem_cache_allocflags_license || mkdir -p build/kmem_cache_allocflags_license cat confdefs.h - <<_ACEOF >build/kmem_cache_allocflags_license/kmem_cache_allocflags_license.c #include MODULE_LICENSE(""); #include int main (void) { struct kmem_cache cachep __attribute__ ((unused)); cachep.allocflags = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_allocflags_license || mkdir -p build/kmem_cache_allocflags_license file=build/kmem_cache_allocflags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_allocflags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_allocflags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_allocflags_license/" >>build/Makefile fi fi test -d build/kmem_cache_gfpflags || mkdir -p build/kmem_cache_gfpflags cat confdefs.h - <<_ACEOF >build/kmem_cache_gfpflags/kmem_cache_gfpflags.c #include int main (void) { struct kmem_cache cachep __attribute__ ((unused)); cachep.gfpflags = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_gfpflags || mkdir -p build/kmem_cache_gfpflags file=build/kmem_cache_gfpflags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_gfpflags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_gfpflags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_gfpflags/" >>build/Makefile fi if test -n "" ; then test -d build/kmem_cache_gfpflags_license || mkdir -p build/kmem_cache_gfpflags_license cat confdefs.h - <<_ACEOF >build/kmem_cache_gfpflags_license/kmem_cache_gfpflags_license.c #include MODULE_LICENSE(""); #include int main (void) { struct kmem_cache cachep __attribute__ ((unused)); cachep.gfpflags = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_gfpflags_license || mkdir -p build/kmem_cache_gfpflags_license file=build/kmem_cache_gfpflags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_gfpflags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_gfpflags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_gfpflags_license/" >>build/Makefile fi fi test -d build/kmem_cache_create_usercopy || mkdir -p build/kmem_cache_create_usercopy cat confdefs.h - <<_ACEOF >build/kmem_cache_create_usercopy/kmem_cache_create_usercopy.c #include static void ctor(void *foo) { /* fake ctor */ } int main (void) { struct kmem_cache *skc_linux_cache; const char *name = "test"; size_t size = 4096; size_t align = 8; unsigned long flags = 0; size_t useroffset = 0; size_t usersize = size - useroffset; skc_linux_cache = kmem_cache_create_usercopy( name, size, align, flags, useroffset, usersize, ctor); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_create_usercopy || mkdir -p build/kmem_cache_create_usercopy file=build/kmem_cache_create_usercopy/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_create_usercopy ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_create_usercopy.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_create_usercopy/" >>build/Makefile fi if test -n "" ; then test -d build/kmem_cache_create_usercopy_license || mkdir -p build/kmem_cache_create_usercopy_license cat confdefs.h - <<_ACEOF >build/kmem_cache_create_usercopy_license/kmem_cache_create_usercopy_license.c #include MODULE_LICENSE(""); #include static void ctor(void *foo) { /* fake ctor */ } int main (void) { struct kmem_cache *skc_linux_cache; const char *name = "test"; size_t size = 4096; size_t align = 8; unsigned long flags = 0; size_t useroffset = 0; size_t usersize = size - useroffset; skc_linux_cache = kmem_cache_create_usercopy( name, size, align, flags, useroffset, usersize, ctor); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_create_usercopy_license || mkdir -p build/kmem_cache_create_usercopy_license file=build/kmem_cache_create_usercopy_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_create_usercopy_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_create_usercopy_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_create_usercopy_license/" >>build/Makefile fi fi test -d build/wait_on_bit || mkdir -p build/wait_on_bit cat confdefs.h - <<_ACEOF >build/wait_on_bit/wait_on_bit.c #include int main (void) { int (*action)(void *) = NULL; wait_on_bit(NULL, 0, action, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/wait_on_bit || mkdir -p build/wait_on_bit file=build/wait_on_bit/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/wait_on_bit ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := wait_on_bit.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += wait_on_bit/" >>build/Makefile fi if test -n "" ; then test -d build/wait_on_bit_license || mkdir -p build/wait_on_bit_license cat confdefs.h - <<_ACEOF >build/wait_on_bit_license/wait_on_bit_license.c #include MODULE_LICENSE(""); #include int main (void) { int (*action)(void *) = NULL; wait_on_bit(NULL, 0, action, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/wait_on_bit_license || mkdir -p build/wait_on_bit_license file=build/wait_on_bit_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/wait_on_bit_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := wait_on_bit_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += wait_on_bit_license/" >>build/Makefile fi fi test -d build/wait_queue_head_entry || mkdir -p build/wait_queue_head_entry cat confdefs.h - <<_ACEOF >build/wait_queue_head_entry/wait_queue_head_entry.c #include #ifdef HAVE_WAIT_QUEUE_ENTRY_T typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_entry_t spl_wait_queue_entry_t; #else typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_t spl_wait_queue_entry_t; #endif int main (void) { spl_wait_queue_head_t wq_head; spl_wait_queue_entry_t wq_entry; struct list_head *head __attribute__ ((unused)); struct list_head *entry __attribute__ ((unused)); head = &wq_head.head; entry = &wq_entry.entry; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/wait_queue_head_entry || mkdir -p build/wait_queue_head_entry file=build/wait_queue_head_entry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/wait_queue_head_entry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := wait_queue_head_entry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += wait_queue_head_entry/" >>build/Makefile fi if test -n "" ; then test -d build/wait_queue_head_entry_license || mkdir -p build/wait_queue_head_entry_license cat confdefs.h - <<_ACEOF >build/wait_queue_head_entry_license/wait_queue_head_entry_license.c #include MODULE_LICENSE(""); #include #ifdef HAVE_WAIT_QUEUE_ENTRY_T typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_entry_t spl_wait_queue_entry_t; #else typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_t spl_wait_queue_entry_t; #endif int main (void) { spl_wait_queue_head_t wq_head; spl_wait_queue_entry_t wq_entry; struct list_head *head __attribute__ ((unused)); struct list_head *entry __attribute__ ((unused)); head = &wq_head.head; entry = &wq_entry.entry; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/wait_queue_head_entry_license || mkdir -p build/wait_queue_head_entry_license file=build/wait_queue_head_entry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/wait_queue_head_entry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := wait_queue_head_entry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += wait_queue_head_entry_license/" >>build/Makefile fi fi test -d build/inode_times || mkdir -p build/inode_times cat confdefs.h - <<_ACEOF >build/inode_times/inode_times.c #include int main (void) { struct inode ip; struct timespec ts; memset(&ip, 0, sizeof(ip)); ts = ip.i_mtime; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_times || mkdir -p build/inode_times file=build/inode_times/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_times ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_times.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_times/" >>build/Makefile fi if test -n "" ; then test -d build/inode_times_license || mkdir -p build/inode_times_license cat confdefs.h - <<_ACEOF >build/inode_times_license/inode_times_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode ip; struct timespec ts; memset(&ip, 0, sizeof(ip)); ts = ip.i_mtime; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_times_license || mkdir -p build/inode_times_license file=build/inode_times_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_times_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_times_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_times_license/" >>build/Makefile fi fi test -d build/inode_lock || mkdir -p build/inode_lock cat confdefs.h - <<_ACEOF >build/inode_lock/inode_lock.c #include int main (void) { struct inode *inode = NULL; inode_lock_shared(inode); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_lock || mkdir -p build/inode_lock file=build/inode_lock/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_lock ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_lock.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_lock/" >>build/Makefile fi if test -n "" ; then test -d build/inode_lock_license || mkdir -p build/inode_lock_license cat confdefs.h - <<_ACEOF >build/inode_lock_license/inode_lock_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *inode = NULL; inode_lock_shared(inode); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_lock_license || mkdir -p build/inode_lock_license file=build/inode_lock_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_lock_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_lock_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_lock_license/" >>build/Makefile fi fi test -d build/group_info_gid || mkdir -p build/group_info_gid cat confdefs.h - <<_ACEOF >build/group_info_gid/group_info_gid.c #include int main (void) { struct group_info *gi = groups_alloc(1); gi->gid[0] = KGIDT_INIT(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/group_info_gid || mkdir -p build/group_info_gid file=build/group_info_gid/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/group_info_gid ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := group_info_gid.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += group_info_gid/" >>build/Makefile fi if test -n "" ; then test -d build/group_info_gid_license || mkdir -p build/group_info_gid_license cat confdefs.h - <<_ACEOF >build/group_info_gid_license/group_info_gid_license.c #include MODULE_LICENSE(""); #include int main (void) { struct group_info *gi = groups_alloc(1); gi->gid[0] = KGIDT_INIT(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/group_info_gid_license || mkdir -p build/group_info_gid_license file=build/group_info_gid_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/group_info_gid_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := group_info_gid_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += group_info_gid_license/" >>build/Makefile fi fi test -d build/kernel_write || mkdir -p build/kernel_write cat confdefs.h - <<_ACEOF >build/kernel_write/kernel_write.c #include int main (void) { struct file *file = NULL; const void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_write(file, buf, count, pos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_write || mkdir -p build/kernel_write file=build/kernel_write/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_write ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_write.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_write/" >>build/Makefile fi if test -n "" ; then test -d build/kernel_write_license || mkdir -p build/kernel_write_license cat confdefs.h - <<_ACEOF >build/kernel_write_license/kernel_write_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *file = NULL; const void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_write(file, buf, count, pos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_write_license || mkdir -p build/kernel_write_license file=build/kernel_write_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_write_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_write_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_write_license/" >>build/Makefile fi fi test -d build/kernel_read || mkdir -p build/kernel_read cat confdefs.h - <<_ACEOF >build/kernel_read/kernel_read.c #include int main (void) { struct file *file = NULL; void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_read(file, buf, count, pos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_read || mkdir -p build/kernel_read file=build/kernel_read/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_read ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_read.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_read/" >>build/Makefile fi if test -n "" ; then test -d build/kernel_read_license || mkdir -p build/kernel_read_license cat confdefs.h - <<_ACEOF >build/kernel_read_license/kernel_read_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *file = NULL; void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_read(file, buf, count, pos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_read_license || mkdir -p build/kernel_read_license file=build/kernel_read_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_read_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_read_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_read_license/" >>build/Makefile fi fi test -d build/timer_setup || mkdir -p build/timer_setup cat confdefs.h - <<_ACEOF >build/timer_setup/timer_setup.c #include struct my_task_timer { struct timer_list timer; int data; }; void task_expire(struct timer_list *tl) { struct my_task_timer *task_timer = from_timer(task_timer, tl, timer); task_timer->data = 42; } int main (void) { struct my_task_timer task_timer; timer_setup(&task_timer.timer, task_expire, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_setup || mkdir -p build/timer_setup file=build/timer_setup/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_setup ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_setup.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_setup/" >>build/Makefile fi if test -n "" ; then test -d build/timer_setup_license || mkdir -p build/timer_setup_license cat confdefs.h - <<_ACEOF >build/timer_setup_license/timer_setup_license.c #include MODULE_LICENSE(""); #include struct my_task_timer { struct timer_list timer; int data; }; void task_expire(struct timer_list *tl) { struct my_task_timer *task_timer = from_timer(task_timer, tl, timer); task_timer->data = 42; } int main (void) { struct my_task_timer task_timer; timer_setup(&task_timer.timer, task_expire, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_setup_license || mkdir -p build/timer_setup_license file=build/timer_setup_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_setup_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_setup_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_setup_license/" >>build/Makefile fi fi test -d build/timer_list_function || mkdir -p build/timer_list_function cat confdefs.h - <<_ACEOF >build/timer_list_function/timer_list_function.c #include void task_expire(struct timer_list *tl) {} int main (void) { struct timer_list tl; tl.function = task_expire; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_list_function || mkdir -p build/timer_list_function file=build/timer_list_function/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_list_function ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_list_function.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_list_function/" >>build/Makefile fi if test -n "" ; then test -d build/timer_list_function_license || mkdir -p build/timer_list_function_license cat confdefs.h - <<_ACEOF >build/timer_list_function_license/timer_list_function_license.c #include MODULE_LICENSE(""); #include void task_expire(struct timer_list *tl) {} int main (void) { struct timer_list tl; tl.function = task_expire; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_list_function_license || mkdir -p build/timer_list_function_license file=build/timer_list_function_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_list_function_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_list_function_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_list_function_license/" >>build/Makefile fi fi test -d build/timer_list_flags || mkdir -p build/timer_list_flags cat confdefs.h - <<_ACEOF >build/timer_list_flags/timer_list_flags.c #include int main (void) { struct timer_list tl; tl.flags = 2; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_list_flags || mkdir -p build/timer_list_flags file=build/timer_list_flags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_list_flags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_list_flags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_list_flags/" >>build/Makefile fi if test -n "" ; then test -d build/timer_list_flags_license || mkdir -p build/timer_list_flags_license cat confdefs.h - <<_ACEOF >build/timer_list_flags_license/timer_list_flags_license.c #include MODULE_LICENSE(""); #include int main (void) { struct timer_list tl; tl.flags = 2; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_list_flags_license || mkdir -p build/timer_list_flags_license file=build/timer_list_flags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_list_flags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_list_flags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_list_flags_license/" >>build/Makefile fi fi test -d build/current_bio_tail || mkdir -p build/current_bio_tail cat confdefs.h - <<_ACEOF >build/current_bio_tail/current_bio_tail.c #include int main (void) { current->bio_tail = (struct bio **) NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_bio_tail || mkdir -p build/current_bio_tail file=build/current_bio_tail/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_bio_tail ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_bio_tail.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_bio_tail/" >>build/Makefile fi if test -n "" ; then test -d build/current_bio_tail_license || mkdir -p build/current_bio_tail_license cat confdefs.h - <<_ACEOF >build/current_bio_tail_license/current_bio_tail_license.c #include MODULE_LICENSE(""); #include int main (void) { current->bio_tail = (struct bio **) NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_bio_tail_license || mkdir -p build/current_bio_tail_license file=build/current_bio_tail_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_bio_tail_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_bio_tail_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_bio_tail_license/" >>build/Makefile fi fi test -d build/current_bio_list || mkdir -p build/current_bio_list cat confdefs.h - <<_ACEOF >build/current_bio_list/current_bio_list.c #include int main (void) { current->bio_list = (struct bio_list *) NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_bio_list || mkdir -p build/current_bio_list file=build/current_bio_list/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_bio_list ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_bio_list.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_bio_list/" >>build/Makefile fi if test -n "" ; then test -d build/current_bio_list_license || mkdir -p build/current_bio_list_license cat confdefs.h - <<_ACEOF >build/current_bio_list_license/current_bio_list_license.c #include MODULE_LICENSE(""); #include int main (void) { current->bio_list = (struct bio_list *) NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_bio_list_license || mkdir -p build/current_bio_list_license file=build/current_bio_list_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_bio_list_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_bio_list_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_bio_list_license/" >>build/Makefile fi fi test -d build/super_user_ns || mkdir -p build/super_user_ns cat confdefs.h - <<_ACEOF >build/super_user_ns/super_user_ns.c #include #include int main (void) { struct super_block super; super.s_user_ns = (struct user_namespace *)NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_user_ns || mkdir -p build/super_user_ns file=build/super_user_ns/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_user_ns ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_user_ns.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_user_ns/" >>build/Makefile fi if test -n "" ; then test -d build/super_user_ns_license || mkdir -p build/super_user_ns_license cat confdefs.h - <<_ACEOF >build/super_user_ns_license/super_user_ns_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct super_block super; super.s_user_ns = (struct user_namespace *)NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_user_ns_license || mkdir -p build/super_user_ns_license file=build/super_user_ns_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_user_ns_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_user_ns_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_user_ns_license/" >>build/Makefile fi fi test -d build/submit_bio || mkdir -p build/submit_bio cat confdefs.h - <<_ACEOF >build/submit_bio/submit_bio.c #include int main (void) { blk_qc_t blk_qc; struct bio *bio = NULL; blk_qc = submit_bio(bio); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/submit_bio || mkdir -p build/submit_bio file=build/submit_bio/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/submit_bio ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := submit_bio.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += submit_bio/" >>build/Makefile fi if test -n "" ; then test -d build/submit_bio_license || mkdir -p build/submit_bio_license cat confdefs.h - <<_ACEOF >build/submit_bio_license/submit_bio_license.c #include MODULE_LICENSE(""); #include int main (void) { blk_qc_t blk_qc; struct bio *bio = NULL; blk_qc = submit_bio(bio); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/submit_bio_license || mkdir -p build/submit_bio_license file=build/submit_bio_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/submit_bio_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := submit_bio_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += submit_bio_license/" >>build/Makefile fi fi test -d build/block_device_operations_check_events || mkdir -p build/block_device_operations_check_events cat confdefs.h - <<_ACEOF >build/block_device_operations_check_events/block_device_operations_check_events.c #include unsigned int blk_check_events(struct gendisk *disk, unsigned int clearing) { return (0); } static const struct block_device_operations bops __attribute__ ((unused)) = { .check_events = blk_check_events, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/block_device_operations_check_events || mkdir -p build/block_device_operations_check_events file=build/block_device_operations_check_events/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/block_device_operations_check_events ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := block_device_operations_check_events.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += block_device_operations_check_events/" >>build/Makefile fi if test -n "" ; then test -d build/block_device_operations_check_events_license || mkdir -p build/block_device_operations_check_events_license cat confdefs.h - <<_ACEOF >build/block_device_operations_check_events_license/block_device_operations_check_events_license.c #include MODULE_LICENSE(""); #include unsigned int blk_check_events(struct gendisk *disk, unsigned int clearing) { return (0); } static const struct block_device_operations bops __attribute__ ((unused)) = { .check_events = blk_check_events, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/block_device_operations_check_events_license || mkdir -p build/block_device_operations_check_events_license file=build/block_device_operations_check_events_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/block_device_operations_check_events_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := block_device_operations_check_events_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += block_device_operations_check_events_license/" >>build/Makefile fi fi test -d build/block_device_operations_release_void || mkdir -p build/block_device_operations_release_void cat confdefs.h - <<_ACEOF >build/block_device_operations_release_void/block_device_operations_release_void.c #include void blk_release(struct gendisk *g, fmode_t mode) { return; } static const struct block_device_operations bops __attribute__ ((unused)) = { .open = NULL, .release = blk_release, .ioctl = NULL, .compat_ioctl = NULL, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/block_device_operations_release_void || mkdir -p build/block_device_operations_release_void file=build/block_device_operations_release_void/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/block_device_operations_release_void ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := block_device_operations_release_void.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += block_device_operations_release_void/" >>build/Makefile fi if test -n "" ; then test -d build/block_device_operations_release_void_license || mkdir -p build/block_device_operations_release_void_license cat confdefs.h - <<_ACEOF >build/block_device_operations_release_void_license/block_device_operations_release_void_license.c #include MODULE_LICENSE(""); #include void blk_release(struct gendisk *g, fmode_t mode) { return; } static const struct block_device_operations bops __attribute__ ((unused)) = { .open = NULL, .release = blk_release, .ioctl = NULL, .compat_ioctl = NULL, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/block_device_operations_release_void_license || mkdir -p build/block_device_operations_release_void_license file=build/block_device_operations_release_void_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/block_device_operations_release_void_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := block_device_operations_release_void_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += block_device_operations_release_void_license/" >>build/Makefile fi fi test -d build/blkdev_get_by_path || mkdir -p build/blkdev_get_by_path cat confdefs.h - <<_ACEOF >build/blkdev_get_by_path/blkdev_get_by_path.c #include int main (void) { blkdev_get_by_path(NULL, 0, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blkdev_get_by_path || mkdir -p build/blkdev_get_by_path file=build/blkdev_get_by_path/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blkdev_get_by_path ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blkdev_get_by_path.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blkdev_get_by_path/" >>build/Makefile fi if test -n "" ; then test -d build/blkdev_get_by_path_license || mkdir -p build/blkdev_get_by_path_license cat confdefs.h - <<_ACEOF >build/blkdev_get_by_path_license/blkdev_get_by_path_license.c #include MODULE_LICENSE(""); #include int main (void) { blkdev_get_by_path(NULL, 0, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blkdev_get_by_path_license || mkdir -p build/blkdev_get_by_path_license file=build/blkdev_get_by_path_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blkdev_get_by_path_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blkdev_get_by_path_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blkdev_get_by_path_license/" >>build/Makefile fi fi test -d build/blkdev_reread_part || mkdir -p build/blkdev_reread_part cat confdefs.h - <<_ACEOF >build/blkdev_reread_part/blkdev_reread_part.c #include int main (void) { struct block_device *bdev = NULL; int error; error = blkdev_reread_part(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blkdev_reread_part || mkdir -p build/blkdev_reread_part file=build/blkdev_reread_part/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blkdev_reread_part ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blkdev_reread_part.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blkdev_reread_part/" >>build/Makefile fi if test -n "" ; then test -d build/blkdev_reread_part_license || mkdir -p build/blkdev_reread_part_license cat confdefs.h - <<_ACEOF >build/blkdev_reread_part_license/blkdev_reread_part_license.c #include MODULE_LICENSE(""); #include int main (void) { struct block_device *bdev = NULL; int error; error = blkdev_reread_part(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blkdev_reread_part_license || mkdir -p build/blkdev_reread_part_license file=build/blkdev_reread_part_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blkdev_reread_part_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blkdev_reread_part_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blkdev_reread_part_license/" >>build/Makefile fi fi test -d build/invalidate_bdev || mkdir -p build/invalidate_bdev cat confdefs.h - <<_ACEOF >build/invalidate_bdev/invalidate_bdev.c #include int main (void) { struct block_device *bdev = NULL; invalidate_bdev(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/invalidate_bdev || mkdir -p build/invalidate_bdev file=build/invalidate_bdev/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/invalidate_bdev ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := invalidate_bdev.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += invalidate_bdev/" >>build/Makefile fi if test -n "" ; then test -d build/invalidate_bdev_license || mkdir -p build/invalidate_bdev_license cat confdefs.h - <<_ACEOF >build/invalidate_bdev_license/invalidate_bdev_license.c #include MODULE_LICENSE(""); #include int main (void) { struct block_device *bdev = NULL; invalidate_bdev(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/invalidate_bdev_license || mkdir -p build/invalidate_bdev_license file=build/invalidate_bdev_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/invalidate_bdev_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := invalidate_bdev_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += invalidate_bdev_license/" >>build/Makefile fi fi test -d build/lookup_bdev_1arg || mkdir -p build/lookup_bdev_1arg cat confdefs.h - <<_ACEOF >build/lookup_bdev_1arg/lookup_bdev_1arg.c #include int main (void) { lookup_bdev(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_bdev_1arg || mkdir -p build/lookup_bdev_1arg file=build/lookup_bdev_1arg/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_bdev_1arg ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_bdev_1arg.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_bdev_1arg/" >>build/Makefile fi if test -n "" ; then test -d build/lookup_bdev_1arg_license || mkdir -p build/lookup_bdev_1arg_license cat confdefs.h - <<_ACEOF >build/lookup_bdev_1arg_license/lookup_bdev_1arg_license.c #include MODULE_LICENSE(""); #include int main (void) { lookup_bdev(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_bdev_1arg_license || mkdir -p build/lookup_bdev_1arg_license file=build/lookup_bdev_1arg_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_bdev_1arg_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_bdev_1arg_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_bdev_1arg_license/" >>build/Makefile fi fi test -d build/lookup_bdev_2args || mkdir -p build/lookup_bdev_2args cat confdefs.h - <<_ACEOF >build/lookup_bdev_2args/lookup_bdev_2args.c #include int main (void) { lookup_bdev(NULL, FMODE_READ); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_bdev_2args || mkdir -p build/lookup_bdev_2args file=build/lookup_bdev_2args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_bdev_2args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_bdev_2args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_bdev_2args/" >>build/Makefile fi if test -n "" ; then test -d build/lookup_bdev_2args_license || mkdir -p build/lookup_bdev_2args_license cat confdefs.h - <<_ACEOF >build/lookup_bdev_2args_license/lookup_bdev_2args_license.c #include MODULE_LICENSE(""); #include int main (void) { lookup_bdev(NULL, FMODE_READ); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_bdev_2args_license || mkdir -p build/lookup_bdev_2args_license file=build/lookup_bdev_2args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_bdev_2args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_bdev_2args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_bdev_2args_license/" >>build/Makefile fi fi test -d build/open_bdev_exclusive || mkdir -p build/open_bdev_exclusive cat confdefs.h - <<_ACEOF >build/open_bdev_exclusive/open_bdev_exclusive.c #include int main (void) { open_bdev_exclusive(NULL, 0, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/open_bdev_exclusive || mkdir -p build/open_bdev_exclusive file=build/open_bdev_exclusive/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/open_bdev_exclusive ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := open_bdev_exclusive.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += open_bdev_exclusive/" >>build/Makefile fi if test -n "" ; then test -d build/open_bdev_exclusive_license || mkdir -p build/open_bdev_exclusive_license cat confdefs.h - <<_ACEOF >build/open_bdev_exclusive_license/open_bdev_exclusive_license.c #include MODULE_LICENSE(""); #include int main (void) { open_bdev_exclusive(NULL, 0, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/open_bdev_exclusive_license || mkdir -p build/open_bdev_exclusive_license file=build/open_bdev_exclusive_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/open_bdev_exclusive_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := open_bdev_exclusive_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += open_bdev_exclusive_license/" >>build/Makefile fi fi test -d build/bdev_logical_block_size || mkdir -p build/bdev_logical_block_size cat confdefs.h - <<_ACEOF >build/bdev_logical_block_size/bdev_logical_block_size.c #include int main (void) { struct block_device *bdev = NULL; bdev_logical_block_size(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdev_logical_block_size || mkdir -p build/bdev_logical_block_size file=build/bdev_logical_block_size/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdev_logical_block_size ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := bdev_logical_block_size.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdev_logical_block_size/" >>build/Makefile fi if test -n "" ; then test -d build/bdev_logical_block_size_license || mkdir -p build/bdev_logical_block_size_license cat confdefs.h - <<_ACEOF >build/bdev_logical_block_size_license/bdev_logical_block_size_license.c #include MODULE_LICENSE(""); #include int main (void) { struct block_device *bdev = NULL; bdev_logical_block_size(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdev_logical_block_size_license || mkdir -p build/bdev_logical_block_size_license file=build/bdev_logical_block_size_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdev_logical_block_size_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := bdev_logical_block_size_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdev_logical_block_size_license/" >>build/Makefile fi fi test -d build/bdev_physical_block_size || mkdir -p build/bdev_physical_block_size cat confdefs.h - <<_ACEOF >build/bdev_physical_block_size/bdev_physical_block_size.c #include int main (void) { struct block_device *bdev = NULL; bdev_physical_block_size(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdev_physical_block_size || mkdir -p build/bdev_physical_block_size file=build/bdev_physical_block_size/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdev_physical_block_size ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := bdev_physical_block_size.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdev_physical_block_size/" >>build/Makefile fi if test -n "" ; then test -d build/bdev_physical_block_size_license || mkdir -p build/bdev_physical_block_size_license cat confdefs.h - <<_ACEOF >build/bdev_physical_block_size_license/bdev_physical_block_size_license.c #include MODULE_LICENSE(""); #include int main (void) { struct block_device *bdev = NULL; bdev_physical_block_size(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdev_physical_block_size_license || mkdir -p build/bdev_physical_block_size_license file=build/bdev_physical_block_size_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdev_physical_block_size_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := bdev_physical_block_size_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdev_physical_block_size_license/" >>build/Makefile fi fi test -d build/bio_bvec_iter || mkdir -p build/bio_bvec_iter cat confdefs.h - <<_ACEOF >build/bio_bvec_iter/bio_bvec_iter.c #include int main (void) { struct bio bio; bio.bi_iter.bi_sector = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bvec_iter || mkdir -p build/bio_bvec_iter file=build/bio_bvec_iter/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bvec_iter ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bvec_iter.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bvec_iter/" >>build/Makefile fi if test -n "" ; then test -d build/bio_bvec_iter_license || mkdir -p build/bio_bvec_iter_license cat confdefs.h - <<_ACEOF >build/bio_bvec_iter_license/bio_bvec_iter_license.c #include MODULE_LICENSE(""); #include int main (void) { struct bio bio; bio.bi_iter.bi_sector = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bvec_iter_license || mkdir -p build/bio_bvec_iter_license file=build/bio_bvec_iter_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bvec_iter_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bvec_iter_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bvec_iter_license/" >>build/Makefile fi fi test -d build/bio_failfast_dtd || mkdir -p build/bio_failfast_dtd cat confdefs.h - <<_ACEOF >build/bio_failfast_dtd/bio_failfast_dtd.c #include int main (void) { int flags __attribute__ ((unused)); flags = ((1 << BIO_RW_FAILFAST_DEV) | (1 << BIO_RW_FAILFAST_TRANSPORT) | (1 << BIO_RW_FAILFAST_DRIVER)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_failfast_dtd || mkdir -p build/bio_failfast_dtd file=build/bio_failfast_dtd/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_failfast_dtd ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_failfast_dtd.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_failfast_dtd/" >>build/Makefile fi if test -n "" ; then test -d build/bio_failfast_dtd_license || mkdir -p build/bio_failfast_dtd_license cat confdefs.h - <<_ACEOF >build/bio_failfast_dtd_license/bio_failfast_dtd_license.c #include MODULE_LICENSE(""); #include int main (void) { int flags __attribute__ ((unused)); flags = ((1 << BIO_RW_FAILFAST_DEV) | (1 << BIO_RW_FAILFAST_TRANSPORT) | (1 << BIO_RW_FAILFAST_DRIVER)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_failfast_dtd_license || mkdir -p build/bio_failfast_dtd_license file=build/bio_failfast_dtd_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_failfast_dtd_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_failfast_dtd_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_failfast_dtd_license/" >>build/Makefile fi fi test -d build/bio_failfast_mask || mkdir -p build/bio_failfast_mask cat confdefs.h - <<_ACEOF >build/bio_failfast_mask/bio_failfast_mask.c #include int main (void) { int flags __attribute__ ((unused)); flags = REQ_FAILFAST_MASK; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_failfast_mask || mkdir -p build/bio_failfast_mask file=build/bio_failfast_mask/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_failfast_mask ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_failfast_mask.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_failfast_mask/" >>build/Makefile fi if test -n "" ; then test -d build/bio_failfast_mask_license || mkdir -p build/bio_failfast_mask_license cat confdefs.h - <<_ACEOF >build/bio_failfast_mask_license/bio_failfast_mask_license.c #include MODULE_LICENSE(""); #include int main (void) { int flags __attribute__ ((unused)); flags = REQ_FAILFAST_MASK; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_failfast_mask_license || mkdir -p build/bio_failfast_mask_license file=build/bio_failfast_mask_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_failfast_mask_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_failfast_mask_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_failfast_mask_license/" >>build/Makefile fi fi test -d build/bio_set_dev || mkdir -p build/bio_set_dev cat confdefs.h - <<_ACEOF >build/bio_set_dev/bio_set_dev.c #include #include int main (void) { struct block_device *bdev = NULL; struct bio *bio = NULL; bio_set_dev(bio, bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_set_dev || mkdir -p build/bio_set_dev file=build/bio_set_dev/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_set_dev ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_set_dev.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_set_dev/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/bio_set_dev_license || mkdir -p build/bio_set_dev_license cat confdefs.h - <<_ACEOF >build/bio_set_dev_license/bio_set_dev_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #include int main (void) { struct block_device *bdev = NULL; struct bio *bio = NULL; bio_set_dev(bio, bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_set_dev_license || mkdir -p build/bio_set_dev_license file=build/bio_set_dev_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_set_dev_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_set_dev_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_set_dev_license/" >>build/Makefile fi fi test -d build/req_op_discard || mkdir -p build/req_op_discard cat confdefs.h - <<_ACEOF >build/req_op_discard/req_op_discard.c #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_DISCARD; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_discard || mkdir -p build/req_op_discard file=build/req_op_discard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_discard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_discard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_discard/" >>build/Makefile fi if test -n "" ; then test -d build/req_op_discard_license || mkdir -p build/req_op_discard_license cat confdefs.h - <<_ACEOF >build/req_op_discard_license/req_op_discard_license.c #include MODULE_LICENSE(""); #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_DISCARD; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_discard_license || mkdir -p build/req_op_discard_license file=build/req_op_discard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_discard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_discard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_discard_license/" >>build/Makefile fi fi test -d build/req_op_secure_erase || mkdir -p build/req_op_secure_erase cat confdefs.h - <<_ACEOF >build/req_op_secure_erase/req_op_secure_erase.c #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_secure_erase || mkdir -p build/req_op_secure_erase file=build/req_op_secure_erase/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_secure_erase ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_secure_erase.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_secure_erase/" >>build/Makefile fi if test -n "" ; then test -d build/req_op_secure_erase_license || mkdir -p build/req_op_secure_erase_license cat confdefs.h - <<_ACEOF >build/req_op_secure_erase_license/req_op_secure_erase_license.c #include MODULE_LICENSE(""); #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_secure_erase_license || mkdir -p build/req_op_secure_erase_license file=build/req_op_secure_erase_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_secure_erase_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_secure_erase_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_secure_erase_license/" >>build/Makefile fi fi test -d build/req_op_flush || mkdir -p build/req_op_flush cat confdefs.h - <<_ACEOF >build/req_op_flush/req_op_flush.c #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_FLUSH; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_flush || mkdir -p build/req_op_flush file=build/req_op_flush/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_flush ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_flush.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_flush/" >>build/Makefile fi if test -n "" ; then test -d build/req_op_flush_license || mkdir -p build/req_op_flush_license cat confdefs.h - <<_ACEOF >build/req_op_flush_license/req_op_flush_license.c #include MODULE_LICENSE(""); #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_FLUSH; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_flush_license || mkdir -p build/req_op_flush_license file=build/req_op_flush_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_flush_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_flush_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_flush_license/" >>build/Makefile fi fi test -d build/bio_bi_opf || mkdir -p build/bio_bi_opf cat confdefs.h - <<_ACEOF >build/bio_bi_opf/bio_bi_opf.c #include int main (void) { struct bio bio __attribute__ ((unused)); bio.bi_opf = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bi_opf || mkdir -p build/bio_bi_opf file=build/bio_bi_opf/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bi_opf ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bi_opf.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bi_opf/" >>build/Makefile fi if test -n "" ; then test -d build/bio_bi_opf_license || mkdir -p build/bio_bi_opf_license cat confdefs.h - <<_ACEOF >build/bio_bi_opf_license/bio_bi_opf_license.c #include MODULE_LICENSE(""); #include int main (void) { struct bio bio __attribute__ ((unused)); bio.bi_opf = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bi_opf_license || mkdir -p build/bio_bi_opf_license file=build/bio_bi_opf_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bi_opf_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bi_opf_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bi_opf_license/" >>build/Makefile fi fi test -d build/bio_set_op_attrs || mkdir -p build/bio_set_op_attrs cat confdefs.h - <<_ACEOF >build/bio_set_op_attrs/bio_set_op_attrs.c #include int main (void) { struct bio *bio __attribute__ ((unused)) = NULL; bio_set_op_attrs(bio, 0, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_set_op_attrs || mkdir -p build/bio_set_op_attrs file=build/bio_set_op_attrs/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_set_op_attrs ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_set_op_attrs.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_set_op_attrs/" >>build/Makefile fi if test -n "" ; then test -d build/bio_set_op_attrs_license || mkdir -p build/bio_set_op_attrs_license cat confdefs.h - <<_ACEOF >build/bio_set_op_attrs_license/bio_set_op_attrs_license.c #include MODULE_LICENSE(""); #include int main (void) { struct bio *bio __attribute__ ((unused)) = NULL; bio_set_op_attrs(bio, 0, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_set_op_attrs_license || mkdir -p build/bio_set_op_attrs_license file=build/bio_set_op_attrs_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_set_op_attrs_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_set_op_attrs_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_set_op_attrs_license/" >>build/Makefile fi fi test -d build/bio_end_io_t_args || mkdir -p build/bio_end_io_t_args cat confdefs.h - <<_ACEOF >build/bio_end_io_t_args/bio_end_io_t_args.c #include void wanted_end_io(struct bio *bio) { return; } bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_end_io_t_args || mkdir -p build/bio_end_io_t_args file=build/bio_end_io_t_args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_end_io_t_args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_end_io_t_args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_end_io_t_args/" >>build/Makefile fi if test -n "" ; then test -d build/bio_end_io_t_args_license || mkdir -p build/bio_end_io_t_args_license cat confdefs.h - <<_ACEOF >build/bio_end_io_t_args_license/bio_end_io_t_args_license.c #include MODULE_LICENSE(""); #include void wanted_end_io(struct bio *bio) { return; } bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_end_io_t_args_license || mkdir -p build/bio_end_io_t_args_license file=build/bio_end_io_t_args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_end_io_t_args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_end_io_t_args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_end_io_t_args_license/" >>build/Makefile fi fi test -d build/bio_bi_status || mkdir -p build/bio_bi_status cat confdefs.h - <<_ACEOF >build/bio_bi_status/bio_bi_status.c #include int main (void) { struct bio bio __attribute__ ((unused)); blk_status_t status __attribute__ ((unused)) = BLK_STS_OK; bio.bi_status = status; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bi_status || mkdir -p build/bio_bi_status file=build/bio_bi_status/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bi_status ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bi_status.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bi_status/" >>build/Makefile fi if test -n "" ; then test -d build/bio_bi_status_license || mkdir -p build/bio_bi_status_license cat confdefs.h - <<_ACEOF >build/bio_bi_status_license/bio_bi_status_license.c #include MODULE_LICENSE(""); #include int main (void) { struct bio bio __attribute__ ((unused)); blk_status_t status __attribute__ ((unused)) = BLK_STS_OK; bio.bi_status = status; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bi_status_license || mkdir -p build/bio_bi_status_license file=build/bio_bi_status_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bi_status_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bi_status_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bi_status_license/" >>build/Makefile fi fi test -d build/bio_rw_barrier || mkdir -p build/bio_rw_barrier cat confdefs.h - <<_ACEOF >build/bio_rw_barrier/bio_rw_barrier.c #include int main (void) { int flags __attribute__ ((unused)); flags = BIO_RW_BARRIER; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_rw_barrier || mkdir -p build/bio_rw_barrier file=build/bio_rw_barrier/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_rw_barrier ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_rw_barrier.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_rw_barrier/" >>build/Makefile fi if test -n "" ; then test -d build/bio_rw_barrier_license || mkdir -p build/bio_rw_barrier_license cat confdefs.h - <<_ACEOF >build/bio_rw_barrier_license/bio_rw_barrier_license.c #include MODULE_LICENSE(""); #include int main (void) { int flags __attribute__ ((unused)); flags = BIO_RW_BARRIER; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_rw_barrier_license || mkdir -p build/bio_rw_barrier_license file=build/bio_rw_barrier_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_rw_barrier_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_rw_barrier_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_rw_barrier_license/" >>build/Makefile fi fi test -d build/bio_rw_discard || mkdir -p build/bio_rw_discard cat confdefs.h - <<_ACEOF >build/bio_rw_discard/bio_rw_discard.c #include int main (void) { int flags __attribute__ ((unused)); flags = BIO_RW_DISCARD; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_rw_discard || mkdir -p build/bio_rw_discard file=build/bio_rw_discard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_rw_discard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_rw_discard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_rw_discard/" >>build/Makefile fi if test -n "" ; then test -d build/bio_rw_discard_license || mkdir -p build/bio_rw_discard_license cat confdefs.h - <<_ACEOF >build/bio_rw_discard_license/bio_rw_discard_license.c #include MODULE_LICENSE(""); #include int main (void) { int flags __attribute__ ((unused)); flags = BIO_RW_DISCARD; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_rw_discard_license || mkdir -p build/bio_rw_discard_license file=build/bio_rw_discard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_rw_discard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_rw_discard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_rw_discard_license/" >>build/Makefile fi fi test -d build/blk_queue_bdi || mkdir -p build/blk_queue_bdi cat confdefs.h - <<_ACEOF >build/blk_queue_bdi/blk_queue_bdi.c #include int main (void) { struct request_queue q; struct backing_dev_info bdi; q.backing_dev_info = &bdi; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_bdi || mkdir -p build/blk_queue_bdi file=build/blk_queue_bdi/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_bdi ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_bdi.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_bdi/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_bdi_license || mkdir -p build/blk_queue_bdi_license cat confdefs.h - <<_ACEOF >build/blk_queue_bdi_license/blk_queue_bdi_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue q; struct backing_dev_info bdi; q.backing_dev_info = &bdi; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_bdi_license || mkdir -p build/blk_queue_bdi_license file=build/blk_queue_bdi_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_bdi_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_bdi_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_bdi_license/" >>build/Makefile fi fi test -d build/blk_queue_discard || mkdir -p build/blk_queue_discard cat confdefs.h - <<_ACEOF >build/blk_queue_discard/blk_queue_discard.c #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_discard(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_discard || mkdir -p build/blk_queue_discard file=build/blk_queue_discard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_discard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_discard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_discard/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_discard_license || mkdir -p build/blk_queue_discard_license cat confdefs.h - <<_ACEOF >build/blk_queue_discard_license/blk_queue_discard_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_discard(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_discard_license || mkdir -p build/blk_queue_discard_license file=build/blk_queue_discard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_discard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_discard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_discard_license/" >>build/Makefile fi fi test -d build/blk_queue_secure_erase || mkdir -p build/blk_queue_secure_erase cat confdefs.h - <<_ACEOF >build/blk_queue_secure_erase/blk_queue_secure_erase.c #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secure_erase(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_secure_erase || mkdir -p build/blk_queue_secure_erase file=build/blk_queue_secure_erase/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_secure_erase ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_secure_erase.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_secure_erase/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_secure_erase_license || mkdir -p build/blk_queue_secure_erase_license cat confdefs.h - <<_ACEOF >build/blk_queue_secure_erase_license/blk_queue_secure_erase_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secure_erase(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_secure_erase_license || mkdir -p build/blk_queue_secure_erase_license file=build/blk_queue_secure_erase_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_secure_erase_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_secure_erase_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_secure_erase_license/" >>build/Makefile fi fi test -d build/blk_queue_secdiscard || mkdir -p build/blk_queue_secdiscard cat confdefs.h - <<_ACEOF >build/blk_queue_secdiscard/blk_queue_secdiscard.c #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secdiscard(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_secdiscard || mkdir -p build/blk_queue_secdiscard file=build/blk_queue_secdiscard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_secdiscard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_secdiscard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_secdiscard/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_secdiscard_license || mkdir -p build/blk_queue_secdiscard_license cat confdefs.h - <<_ACEOF >build/blk_queue_secdiscard_license/blk_queue_secdiscard_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secdiscard(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_secdiscard_license || mkdir -p build/blk_queue_secdiscard_license file=build/blk_queue_secdiscard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_secdiscard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_secdiscard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_secdiscard_license/" >>build/Makefile fi fi test -d build/blk_queue_flag_set || mkdir -p build/blk_queue_flag_set cat confdefs.h - <<_ACEOF >build/blk_queue_flag_set/blk_queue_flag_set.c #include #include int main (void) { struct request_queue *q = NULL; blk_queue_flag_set(0, q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flag_set || mkdir -p build/blk_queue_flag_set file=build/blk_queue_flag_set/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flag_set ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_flag_set.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flag_set/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_flag_set_license || mkdir -p build/blk_queue_flag_set_license cat confdefs.h - <<_ACEOF >build/blk_queue_flag_set_license/blk_queue_flag_set_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct request_queue *q = NULL; blk_queue_flag_set(0, q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flag_set_license || mkdir -p build/blk_queue_flag_set_license file=build/blk_queue_flag_set_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flag_set_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_flag_set_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flag_set_license/" >>build/Makefile fi fi test -d build/blk_queue_flag_clear || mkdir -p build/blk_queue_flag_clear cat confdefs.h - <<_ACEOF >build/blk_queue_flag_clear/blk_queue_flag_clear.c #include #include int main (void) { struct request_queue *q = NULL; blk_queue_flag_clear(0, q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flag_clear || mkdir -p build/blk_queue_flag_clear file=build/blk_queue_flag_clear/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flag_clear ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_flag_clear.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flag_clear/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_flag_clear_license || mkdir -p build/blk_queue_flag_clear_license cat confdefs.h - <<_ACEOF >build/blk_queue_flag_clear_license/blk_queue_flag_clear_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct request_queue *q = NULL; blk_queue_flag_clear(0, q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flag_clear_license || mkdir -p build/blk_queue_flag_clear_license file=build/blk_queue_flag_clear_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flag_clear_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_flag_clear_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flag_clear_license/" >>build/Makefile fi fi test -d build/blk_queue_flush || mkdir -p build/blk_queue_flush cat confdefs.h - <<_ACEOF >build/blk_queue_flush/blk_queue_flush.c #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_flush(q, REQ_FLUSH); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flush || mkdir -p build/blk_queue_flush file=build/blk_queue_flush/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flush ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_flush.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flush/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/blk_queue_flush_license || mkdir -p build/blk_queue_flush_license cat confdefs.h - <<_ACEOF >build/blk_queue_flush_license/blk_queue_flush_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_flush(q, REQ_FLUSH); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flush_license || mkdir -p build/blk_queue_flush_license file=build/blk_queue_flush_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flush_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_flush_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flush_license/" >>build/Makefile fi fi test -d build/blk_queue_write_cache || mkdir -p build/blk_queue_write_cache cat confdefs.h - <<_ACEOF >build/blk_queue_write_cache/blk_queue_write_cache.c #include #include int main (void) { struct request_queue *q = NULL; blk_queue_write_cache(q, true, true); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_write_cache || mkdir -p build/blk_queue_write_cache file=build/blk_queue_write_cache/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_write_cache ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_write_cache.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_write_cache/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/blk_queue_write_cache_license || mkdir -p build/blk_queue_write_cache_license cat confdefs.h - <<_ACEOF >build/blk_queue_write_cache_license/blk_queue_write_cache_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #include int main (void) { struct request_queue *q = NULL; blk_queue_write_cache(q, true, true); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_write_cache_license || mkdir -p build/blk_queue_write_cache_license file=build/blk_queue_write_cache_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_write_cache_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_write_cache_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_write_cache_license/" >>build/Makefile fi fi test -d build/blk_queue_max_hw_sectors || mkdir -p build/blk_queue_max_hw_sectors cat confdefs.h - <<_ACEOF >build/blk_queue_max_hw_sectors/blk_queue_max_hw_sectors.c #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_max_hw_sectors(q, BLK_SAFE_MAX_SECTORS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_max_hw_sectors || mkdir -p build/blk_queue_max_hw_sectors file=build/blk_queue_max_hw_sectors/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_max_hw_sectors ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_max_hw_sectors.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_max_hw_sectors/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_max_hw_sectors_license || mkdir -p build/blk_queue_max_hw_sectors_license cat confdefs.h - <<_ACEOF >build/blk_queue_max_hw_sectors_license/blk_queue_max_hw_sectors_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_max_hw_sectors(q, BLK_SAFE_MAX_SECTORS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_max_hw_sectors_license || mkdir -p build/blk_queue_max_hw_sectors_license file=build/blk_queue_max_hw_sectors_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_max_hw_sectors_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_max_hw_sectors_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_max_hw_sectors_license/" >>build/Makefile fi fi test -d build/blk_queue_max_segments || mkdir -p build/blk_queue_max_segments cat confdefs.h - <<_ACEOF >build/blk_queue_max_segments/blk_queue_max_segments.c #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_max_segments(q, BLK_MAX_SEGMENTS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_max_segments || mkdir -p build/blk_queue_max_segments file=build/blk_queue_max_segments/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_max_segments ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_max_segments.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_max_segments/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_max_segments_license || mkdir -p build/blk_queue_max_segments_license cat confdefs.h - <<_ACEOF >build/blk_queue_max_segments_license/blk_queue_max_segments_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_max_segments(q, BLK_MAX_SEGMENTS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_max_segments_license || mkdir -p build/blk_queue_max_segments_license file=build/blk_queue_max_segments_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_max_segments_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_max_segments_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_max_segments_license/" >>build/Makefile fi fi test -d build/blk_queue_bio_rw_unplug || mkdir -p build/blk_queue_bio_rw_unplug cat confdefs.h - <<_ACEOF >build/blk_queue_bio_rw_unplug/blk_queue_bio_rw_unplug.c #include int main (void) { enum bio_rw_flags rw __attribute__ ((unused)) = BIO_RW_UNPLUG; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_bio_rw_unplug || mkdir -p build/blk_queue_bio_rw_unplug file=build/blk_queue_bio_rw_unplug/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_bio_rw_unplug ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_bio_rw_unplug.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_bio_rw_unplug/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_bio_rw_unplug_license || mkdir -p build/blk_queue_bio_rw_unplug_license cat confdefs.h - <<_ACEOF >build/blk_queue_bio_rw_unplug_license/blk_queue_bio_rw_unplug_license.c #include MODULE_LICENSE(""); #include int main (void) { enum bio_rw_flags rw __attribute__ ((unused)) = BIO_RW_UNPLUG; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_bio_rw_unplug_license || mkdir -p build/blk_queue_bio_rw_unplug_license file=build/blk_queue_bio_rw_unplug_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_bio_rw_unplug_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_bio_rw_unplug_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_bio_rw_unplug_license/" >>build/Makefile fi fi test -d build/blk_plug || mkdir -p build/blk_plug cat confdefs.h - <<_ACEOF >build/blk_plug/blk_plug.c #include int main (void) { struct blk_plug plug __attribute__ ((unused)); blk_start_plug(&plug); blk_finish_plug(&plug); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_plug || mkdir -p build/blk_plug file=build/blk_plug/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_plug ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_plug.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_plug/" >>build/Makefile fi if test -n "" ; then test -d build/blk_plug_license || mkdir -p build/blk_plug_license cat confdefs.h - <<_ACEOF >build/blk_plug_license/blk_plug_license.c #include MODULE_LICENSE(""); #include int main (void) { struct blk_plug plug __attribute__ ((unused)); blk_start_plug(&plug); blk_finish_plug(&plug); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_plug_license || mkdir -p build/blk_plug_license file=build/blk_plug_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_plug_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_plug_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_plug_license/" >>build/Makefile fi fi test -d build/get_disk_and_module || mkdir -p build/get_disk_and_module cat confdefs.h - <<_ACEOF >build/get_disk_and_module/get_disk_and_module.c #include int main (void) { struct gendisk *disk = NULL; (void) get_disk_and_module(disk); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_disk_and_module || mkdir -p build/get_disk_and_module file=build/get_disk_and_module/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_disk_and_module ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := get_disk_and_module.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_disk_and_module/" >>build/Makefile fi if test -n "" ; then test -d build/get_disk_and_module_license || mkdir -p build/get_disk_and_module_license cat confdefs.h - <<_ACEOF >build/get_disk_and_module_license/get_disk_and_module_license.c #include MODULE_LICENSE(""); #include int main (void) { struct gendisk *disk = NULL; (void) get_disk_and_module(disk); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_disk_and_module_license || mkdir -p build/get_disk_and_module_license file=build/get_disk_and_module_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_disk_and_module_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := get_disk_and_module_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_disk_and_module_license/" >>build/Makefile fi fi test -d build/get_disk_ro || mkdir -p build/get_disk_ro cat confdefs.h - <<_ACEOF >build/get_disk_ro/get_disk_ro.c #include int main (void) { struct gendisk *disk = NULL; (void) get_disk_ro(disk); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_disk_ro || mkdir -p build/get_disk_ro file=build/get_disk_ro/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_disk_ro ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := get_disk_ro.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_disk_ro/" >>build/Makefile fi if test -n "" ; then test -d build/get_disk_ro_license || mkdir -p build/get_disk_ro_license cat confdefs.h - <<_ACEOF >build/get_disk_ro_license/get_disk_ro_license.c #include MODULE_LICENSE(""); #include int main (void) { struct gendisk *disk = NULL; (void) get_disk_ro(disk); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_disk_ro_license || mkdir -p build/get_disk_ro_license file=build/get_disk_ro_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_disk_ro_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := get_disk_ro_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_disk_ro_license/" >>build/Makefile fi fi test -d build/generic_readlink_global || mkdir -p build/generic_readlink_global cat confdefs.h - <<_ACEOF >build/generic_readlink_global/generic_readlink_global.c #include int main (void) { int i __attribute__ ((unused)); i = generic_readlink(NULL, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_readlink_global || mkdir -p build/generic_readlink_global file=build/generic_readlink_global/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_readlink_global ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_readlink_global.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_readlink_global/" >>build/Makefile fi if test -n "" ; then test -d build/generic_readlink_global_license || mkdir -p build/generic_readlink_global_license cat confdefs.h - <<_ACEOF >build/generic_readlink_global_license/generic_readlink_global_license.c #include MODULE_LICENSE(""); #include int main (void) { int i __attribute__ ((unused)); i = generic_readlink(NULL, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_readlink_global_license || mkdir -p build/generic_readlink_global_license file=build/generic_readlink_global_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_readlink_global_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_readlink_global_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_readlink_global_license/" >>build/Makefile fi fi test -d build/discard_granularity || mkdir -p build/discard_granularity cat confdefs.h - <<_ACEOF >build/discard_granularity/discard_granularity.c #include int main (void) { struct queue_limits ql __attribute__ ((unused)); ql.discard_granularity = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/discard_granularity || mkdir -p build/discard_granularity file=build/discard_granularity/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/discard_granularity ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := discard_granularity.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += discard_granularity/" >>build/Makefile fi if test -n "" ; then test -d build/discard_granularity_license || mkdir -p build/discard_granularity_license cat confdefs.h - <<_ACEOF >build/discard_granularity_license/discard_granularity_license.c #include MODULE_LICENSE(""); #include int main (void) { struct queue_limits ql __attribute__ ((unused)); ql.discard_granularity = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/discard_granularity_license || mkdir -p build/discard_granularity_license file=build/discard_granularity_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/discard_granularity_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := discard_granularity_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += discard_granularity_license/" >>build/Makefile fi fi test -d build/inode_owner_or_capable || mkdir -p build/inode_owner_or_capable cat confdefs.h - <<_ACEOF >build/inode_owner_or_capable/inode_owner_or_capable.c #include int main (void) { struct inode *ip = NULL; (void) inode_owner_or_capable(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_owner_or_capable || mkdir -p build/inode_owner_or_capable file=build/inode_owner_or_capable/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_owner_or_capable ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_owner_or_capable.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_owner_or_capable/" >>build/Makefile fi if test -n "" ; then test -d build/inode_owner_or_capable_license || mkdir -p build/inode_owner_or_capable_license cat confdefs.h - <<_ACEOF >build/inode_owner_or_capable_license/inode_owner_or_capable_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip = NULL; (void) inode_owner_or_capable(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_owner_or_capable_license || mkdir -p build/inode_owner_or_capable_license file=build/inode_owner_or_capable_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_owner_or_capable_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_owner_or_capable_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_owner_or_capable_license/" >>build/Makefile fi fi test -d build/is_owner_or_cap || mkdir -p build/is_owner_or_cap cat confdefs.h - <<_ACEOF >build/is_owner_or_cap/is_owner_or_cap.c #include #include int main (void) { struct inode *ip = NULL; (void) is_owner_or_cap(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/is_owner_or_cap || mkdir -p build/is_owner_or_cap file=build/is_owner_or_cap/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/is_owner_or_cap ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := is_owner_or_cap.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += is_owner_or_cap/" >>build/Makefile fi if test -n "" ; then test -d build/is_owner_or_cap_license || mkdir -p build/is_owner_or_cap_license cat confdefs.h - <<_ACEOF >build/is_owner_or_cap_license/is_owner_or_cap_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct inode *ip = NULL; (void) is_owner_or_cap(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/is_owner_or_cap_license || mkdir -p build/is_owner_or_cap_license file=build/is_owner_or_cap_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/is_owner_or_cap_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := is_owner_or_cap_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += is_owner_or_cap_license/" >>build/Makefile fi fi test -d build/const_xattr_handler || mkdir -p build/const_xattr_handler cat confdefs.h - <<_ACEOF >build/const_xattr_handler/const_xattr_handler.c #include #include const struct xattr_handler xattr_test_handler = { .prefix = "test", .get = NULL, .set = NULL, }; const struct xattr_handler *xattr_handlers[] = { &xattr_test_handler, }; const struct super_block sb __attribute__ ((unused)) = { .s_xattr = xattr_handlers, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/const_xattr_handler || mkdir -p build/const_xattr_handler file=build/const_xattr_handler/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/const_xattr_handler ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := const_xattr_handler.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += const_xattr_handler/" >>build/Makefile fi if test -n "" ; then test -d build/const_xattr_handler_license || mkdir -p build/const_xattr_handler_license cat confdefs.h - <<_ACEOF >build/const_xattr_handler_license/const_xattr_handler_license.c #include MODULE_LICENSE(""); #include #include const struct xattr_handler xattr_test_handler = { .prefix = "test", .get = NULL, .set = NULL, }; const struct xattr_handler *xattr_handlers[] = { &xattr_test_handler, }; const struct super_block sb __attribute__ ((unused)) = { .s_xattr = xattr_handlers, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/const_xattr_handler_license || mkdir -p build/const_xattr_handler_license file=build/const_xattr_handler_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/const_xattr_handler_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := const_xattr_handler_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += const_xattr_handler_license/" >>build/Makefile fi fi test -d build/xattr_handler_name || mkdir -p build/xattr_handler_name cat confdefs.h - <<_ACEOF >build/xattr_handler_name/xattr_handler_name.c #include static const struct xattr_handler xops __attribute__ ((unused)) = { .name = XATTR_NAME_POSIX_ACL_ACCESS, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_name || mkdir -p build/xattr_handler_name file=build/xattr_handler_name/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_name ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_name.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_name/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_name_license || mkdir -p build/xattr_handler_name_license cat confdefs.h - <<_ACEOF >build/xattr_handler_name_license/xattr_handler_name_license.c #include MODULE_LICENSE(""); #include static const struct xattr_handler xops __attribute__ ((unused)) = { .name = XATTR_NAME_POSIX_ACL_ACCESS, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_name_license || mkdir -p build/xattr_handler_name_license file=build/xattr_handler_name_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_name_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_name_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_name_license/" >>build/Makefile fi fi test -d build/xattr_handler_get_dentry_inode || mkdir -p build/xattr_handler_get_dentry_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_get_dentry_inode/xattr_handler_get_dentry_inode.c #include int get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_dentry_inode || mkdir -p build/xattr_handler_get_dentry_inode file=build/xattr_handler_get_dentry_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_dentry_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_dentry_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_dentry_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_get_dentry_inode_license || mkdir -p build/xattr_handler_get_dentry_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_get_dentry_inode_license/xattr_handler_get_dentry_inode_license.c #include MODULE_LICENSE(""); #include int get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_dentry_inode_license || mkdir -p build/xattr_handler_get_dentry_inode_license file=build/xattr_handler_get_dentry_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_dentry_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_dentry_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_dentry_inode_license/" >>build/Makefile fi fi test -d build/xattr_handler_get_xattr_handler || mkdir -p build/xattr_handler_get_xattr_handler cat confdefs.h - <<_ACEOF >build/xattr_handler_get_xattr_handler/xattr_handler_get_xattr_handler.c #include int get(const struct xattr_handler *handler, struct dentry *dentry, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_xattr_handler || mkdir -p build/xattr_handler_get_xattr_handler file=build/xattr_handler_get_xattr_handler/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_xattr_handler ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_xattr_handler.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_xattr_handler/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_get_xattr_handler_license || mkdir -p build/xattr_handler_get_xattr_handler_license cat confdefs.h - <<_ACEOF >build/xattr_handler_get_xattr_handler_license/xattr_handler_get_xattr_handler_license.c #include MODULE_LICENSE(""); #include int get(const struct xattr_handler *handler, struct dentry *dentry, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_xattr_handler_license || mkdir -p build/xattr_handler_get_xattr_handler_license file=build/xattr_handler_get_xattr_handler_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_xattr_handler_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_xattr_handler_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_xattr_handler_license/" >>build/Makefile fi fi test -d build/xattr_handler_get_dentry || mkdir -p build/xattr_handler_get_dentry cat confdefs.h - <<_ACEOF >build/xattr_handler_get_dentry/xattr_handler_get_dentry.c #include int get(struct dentry *dentry, const char *name, void *buffer, size_t size, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_dentry || mkdir -p build/xattr_handler_get_dentry file=build/xattr_handler_get_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_get_dentry_license || mkdir -p build/xattr_handler_get_dentry_license cat confdefs.h - <<_ACEOF >build/xattr_handler_get_dentry_license/xattr_handler_get_dentry_license.c #include MODULE_LICENSE(""); #include int get(struct dentry *dentry, const char *name, void *buffer, size_t size, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_dentry_license || mkdir -p build/xattr_handler_get_dentry_license file=build/xattr_handler_get_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_dentry_license/" >>build/Makefile fi fi test -d build/xattr_handler_get_inode || mkdir -p build/xattr_handler_get_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_get_inode/xattr_handler_get_inode.c #include int get(struct inode *ip, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_inode || mkdir -p build/xattr_handler_get_inode file=build/xattr_handler_get_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_get_inode_license || mkdir -p build/xattr_handler_get_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_get_inode_license/xattr_handler_get_inode_license.c #include MODULE_LICENSE(""); #include int get(struct inode *ip, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_inode_license || mkdir -p build/xattr_handler_get_inode_license file=build/xattr_handler_get_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_inode_license/" >>build/Makefile fi fi test -d build/xattr_handler_set_dentry_inode || mkdir -p build/xattr_handler_set_dentry_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_set_dentry_inode/xattr_handler_set_dentry_inode.c #include int set(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_dentry_inode || mkdir -p build/xattr_handler_set_dentry_inode file=build/xattr_handler_set_dentry_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_dentry_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_dentry_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_dentry_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_set_dentry_inode_license || mkdir -p build/xattr_handler_set_dentry_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_set_dentry_inode_license/xattr_handler_set_dentry_inode_license.c #include MODULE_LICENSE(""); #include int set(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_dentry_inode_license || mkdir -p build/xattr_handler_set_dentry_inode_license file=build/xattr_handler_set_dentry_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_dentry_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_dentry_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_dentry_inode_license/" >>build/Makefile fi fi test -d build/xattr_handler_set_xattr_handler || mkdir -p build/xattr_handler_set_xattr_handler cat confdefs.h - <<_ACEOF >build/xattr_handler_set_xattr_handler/xattr_handler_set_xattr_handler.c #include int set(const struct xattr_handler *handler, struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_xattr_handler || mkdir -p build/xattr_handler_set_xattr_handler file=build/xattr_handler_set_xattr_handler/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_xattr_handler ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_xattr_handler.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_xattr_handler/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_set_xattr_handler_license || mkdir -p build/xattr_handler_set_xattr_handler_license cat confdefs.h - <<_ACEOF >build/xattr_handler_set_xattr_handler_license/xattr_handler_set_xattr_handler_license.c #include MODULE_LICENSE(""); #include int set(const struct xattr_handler *handler, struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_xattr_handler_license || mkdir -p build/xattr_handler_set_xattr_handler_license file=build/xattr_handler_set_xattr_handler_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_xattr_handler_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_xattr_handler_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_xattr_handler_license/" >>build/Makefile fi fi test -d build/xattr_handler_set_dentry || mkdir -p build/xattr_handler_set_dentry cat confdefs.h - <<_ACEOF >build/xattr_handler_set_dentry/xattr_handler_set_dentry.c #include int set(struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_dentry || mkdir -p build/xattr_handler_set_dentry file=build/xattr_handler_set_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_set_dentry_license || mkdir -p build/xattr_handler_set_dentry_license cat confdefs.h - <<_ACEOF >build/xattr_handler_set_dentry_license/xattr_handler_set_dentry_license.c #include MODULE_LICENSE(""); #include int set(struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_dentry_license || mkdir -p build/xattr_handler_set_dentry_license file=build/xattr_handler_set_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_dentry_license/" >>build/Makefile fi fi test -d build/xattr_handler_set_inode || mkdir -p build/xattr_handler_set_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_set_inode/xattr_handler_set_inode.c #include int set(struct inode *ip, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_inode || mkdir -p build/xattr_handler_set_inode file=build/xattr_handler_set_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_set_inode_license || mkdir -p build/xattr_handler_set_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_set_inode_license/xattr_handler_set_inode_license.c #include MODULE_LICENSE(""); #include int set(struct inode *ip, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_inode_license || mkdir -p build/xattr_handler_set_inode_license file=build/xattr_handler_set_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_inode_license/" >>build/Makefile fi fi test -d build/xattr_handler_list_simple || mkdir -p build/xattr_handler_list_simple cat confdefs.h - <<_ACEOF >build/xattr_handler_list_simple/xattr_handler_list_simple.c #include bool list(struct dentry *dentry) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_simple || mkdir -p build/xattr_handler_list_simple file=build/xattr_handler_list_simple/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_simple ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_simple.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_simple/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_list_simple_license || mkdir -p build/xattr_handler_list_simple_license cat confdefs.h - <<_ACEOF >build/xattr_handler_list_simple_license/xattr_handler_list_simple_license.c #include MODULE_LICENSE(""); #include bool list(struct dentry *dentry) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_simple_license || mkdir -p build/xattr_handler_list_simple_license file=build/xattr_handler_list_simple_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_simple_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_simple_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_simple_license/" >>build/Makefile fi fi test -d build/xattr_handler_list_xattr_handler || mkdir -p build/xattr_handler_list_xattr_handler cat confdefs.h - <<_ACEOF >build/xattr_handler_list_xattr_handler/xattr_handler_list_xattr_handler.c #include size_t list(const struct xattr_handler *handler, struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_xattr_handler || mkdir -p build/xattr_handler_list_xattr_handler file=build/xattr_handler_list_xattr_handler/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_xattr_handler ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_xattr_handler.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_xattr_handler/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_list_xattr_handler_license || mkdir -p build/xattr_handler_list_xattr_handler_license cat confdefs.h - <<_ACEOF >build/xattr_handler_list_xattr_handler_license/xattr_handler_list_xattr_handler_license.c #include MODULE_LICENSE(""); #include size_t list(const struct xattr_handler *handler, struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_xattr_handler_license || mkdir -p build/xattr_handler_list_xattr_handler_license file=build/xattr_handler_list_xattr_handler_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_xattr_handler_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_xattr_handler_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_xattr_handler_license/" >>build/Makefile fi fi test -d build/xattr_handler_list_dentry || mkdir -p build/xattr_handler_list_dentry cat confdefs.h - <<_ACEOF >build/xattr_handler_list_dentry/xattr_handler_list_dentry.c #include size_t list(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_dentry || mkdir -p build/xattr_handler_list_dentry file=build/xattr_handler_list_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_list_dentry_license || mkdir -p build/xattr_handler_list_dentry_license cat confdefs.h - <<_ACEOF >build/xattr_handler_list_dentry_license/xattr_handler_list_dentry_license.c #include MODULE_LICENSE(""); #include size_t list(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_dentry_license || mkdir -p build/xattr_handler_list_dentry_license file=build/xattr_handler_list_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_dentry_license/" >>build/Makefile fi fi test -d build/xattr_handler_list_inode || mkdir -p build/xattr_handler_list_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_list_inode/xattr_handler_list_inode.c #include size_t list(struct inode *ip, char *lst, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_inode || mkdir -p build/xattr_handler_list_inode file=build/xattr_handler_list_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_list_inode_license || mkdir -p build/xattr_handler_list_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_list_inode_license/xattr_handler_list_inode_license.c #include MODULE_LICENSE(""); #include size_t list(struct inode *ip, char *lst, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_inode_license || mkdir -p build/xattr_handler_list_inode_license file=build/xattr_handler_list_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_inode_license/" >>build/Makefile fi fi test -d build/posix_acl_from_xattr_userns || mkdir -p build/posix_acl_from_xattr_userns cat confdefs.h - <<_ACEOF >build/posix_acl_from_xattr_userns/posix_acl_from_xattr_userns.c #include #include #include int main (void) { posix_acl_from_xattr(&init_user_ns, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_from_xattr_userns || mkdir -p build/posix_acl_from_xattr_userns file=build/posix_acl_from_xattr_userns/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_from_xattr_userns ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_from_xattr_userns.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_from_xattr_userns/" >>build/Makefile fi if test -n "" ; then test -d build/posix_acl_from_xattr_userns_license || mkdir -p build/posix_acl_from_xattr_userns_license cat confdefs.h - <<_ACEOF >build/posix_acl_from_xattr_userns_license/posix_acl_from_xattr_userns_license.c #include MODULE_LICENSE(""); #include #include #include int main (void) { posix_acl_from_xattr(&init_user_ns, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_from_xattr_userns_license || mkdir -p build/posix_acl_from_xattr_userns_license file=build/posix_acl_from_xattr_userns_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_from_xattr_userns_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_from_xattr_userns_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_from_xattr_userns_license/" >>build/Makefile fi fi test -d build/have_generic_setxattr || mkdir -p build/have_generic_setxattr cat confdefs.h - <<_ACEOF >build/have_generic_setxattr/have_generic_setxattr.c #include #include static const struct inode_operations iops __attribute__ ((unused)) = { .setxattr = generic_setxattr }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/have_generic_setxattr || mkdir -p build/have_generic_setxattr file=build/have_generic_setxattr/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/have_generic_setxattr ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := have_generic_setxattr.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += have_generic_setxattr/" >>build/Makefile fi if test -n "" ; then test -d build/have_generic_setxattr_license || mkdir -p build/have_generic_setxattr_license cat confdefs.h - <<_ACEOF >build/have_generic_setxattr_license/have_generic_setxattr_license.c #include MODULE_LICENSE(""); #include #include static const struct inode_operations iops __attribute__ ((unused)) = { .setxattr = generic_setxattr }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/have_generic_setxattr_license || mkdir -p build/have_generic_setxattr_license file=build/have_generic_setxattr_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/have_generic_setxattr_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := have_generic_setxattr_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += have_generic_setxattr_license/" >>build/Makefile fi fi test -d build/posix_acl_release || mkdir -p build/posix_acl_release cat confdefs.h - <<_ACEOF >build/posix_acl_release/posix_acl_release.c #include #include #include int main (void) { struct posix_acl *tmp = posix_acl_alloc(1, 0); posix_acl_release(tmp); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_release || mkdir -p build/posix_acl_release file=build/posix_acl_release/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_release ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_release.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_release/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/posix_acl_release_license || mkdir -p build/posix_acl_release_license cat confdefs.h - <<_ACEOF >build/posix_acl_release_license/posix_acl_release_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #include #include int main (void) { struct posix_acl *tmp = posix_acl_alloc(1, 0); posix_acl_release(tmp); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_release_license || mkdir -p build/posix_acl_release_license file=build/posix_acl_release_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_release_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_release_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_release_license/" >>build/Makefile fi fi test -d build/set_cached_acl || mkdir -p build/set_cached_acl cat confdefs.h - <<_ACEOF >build/set_cached_acl/set_cached_acl.c #include #include #include int main (void) { struct inode *ip = NULL; struct posix_acl *acl = posix_acl_alloc(1, 0); set_cached_acl(ip, ACL_TYPE_ACCESS, acl); forget_cached_acl(ip, ACL_TYPE_ACCESS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/set_cached_acl || mkdir -p build/set_cached_acl file=build/set_cached_acl/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/set_cached_acl ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := set_cached_acl.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += set_cached_acl/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/set_cached_acl_license || mkdir -p build/set_cached_acl_license cat confdefs.h - <<_ACEOF >build/set_cached_acl_license/set_cached_acl_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #include #include int main (void) { struct inode *ip = NULL; struct posix_acl *acl = posix_acl_alloc(1, 0); set_cached_acl(ip, ACL_TYPE_ACCESS, acl); forget_cached_acl(ip, ACL_TYPE_ACCESS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/set_cached_acl_license || mkdir -p build/set_cached_acl_license file=build/set_cached_acl_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/set_cached_acl_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := set_cached_acl_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += set_cached_acl_license/" >>build/Makefile fi fi test -d build/posix_acl_chmod || mkdir -p build/posix_acl_chmod cat confdefs.h - <<_ACEOF >build/posix_acl_chmod/posix_acl_chmod.c #include #include int main (void) { posix_acl_chmod(NULL, 0, 0) ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_chmod || mkdir -p build/posix_acl_chmod file=build/posix_acl_chmod/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_chmod ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_chmod.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_chmod/" >>build/Makefile fi if test -n "" ; then test -d build/posix_acl_chmod_license || mkdir -p build/posix_acl_chmod_license cat confdefs.h - <<_ACEOF >build/posix_acl_chmod_license/posix_acl_chmod_license.c #include MODULE_LICENSE(""); #include #include int main (void) { posix_acl_chmod(NULL, 0, 0) ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_chmod_license || mkdir -p build/posix_acl_chmod_license file=build/posix_acl_chmod_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_chmod_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_chmod_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_chmod_license/" >>build/Makefile fi fi test -d build/__posix_acl_chmod || mkdir -p build/__posix_acl_chmod cat confdefs.h - <<_ACEOF >build/__posix_acl_chmod/__posix_acl_chmod.c #include #include int main (void) { __posix_acl_chmod(NULL, 0, 0) ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/__posix_acl_chmod || mkdir -p build/__posix_acl_chmod file=build/__posix_acl_chmod/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/__posix_acl_chmod ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := __posix_acl_chmod.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += __posix_acl_chmod/" >>build/Makefile fi if test -n "" ; then test -d build/__posix_acl_chmod_license || mkdir -p build/__posix_acl_chmod_license cat confdefs.h - <<_ACEOF >build/__posix_acl_chmod_license/__posix_acl_chmod_license.c #include MODULE_LICENSE(""); #include #include int main (void) { __posix_acl_chmod(NULL, 0, 0) ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/__posix_acl_chmod_license || mkdir -p build/__posix_acl_chmod_license file=build/__posix_acl_chmod_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/__posix_acl_chmod_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := __posix_acl_chmod_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += __posix_acl_chmod_license/" >>build/Makefile fi fi test -d build/posix_acl_equiv_mode || mkdir -p build/posix_acl_equiv_mode cat confdefs.h - <<_ACEOF >build/posix_acl_equiv_mode/posix_acl_equiv_mode.c #include #include int main (void) { umode_t tmp; posix_acl_equiv_mode(NULL,&tmp); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_equiv_mode || mkdir -p build/posix_acl_equiv_mode file=build/posix_acl_equiv_mode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_equiv_mode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_equiv_mode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_equiv_mode/" >>build/Makefile fi if test -n "" ; then test -d build/posix_acl_equiv_mode_license || mkdir -p build/posix_acl_equiv_mode_license cat confdefs.h - <<_ACEOF >build/posix_acl_equiv_mode_license/posix_acl_equiv_mode_license.c #include MODULE_LICENSE(""); #include #include int main (void) { umode_t tmp; posix_acl_equiv_mode(NULL,&tmp); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_equiv_mode_license || mkdir -p build/posix_acl_equiv_mode_license file=build/posix_acl_equiv_mode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_equiv_mode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_equiv_mode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_equiv_mode_license/" >>build/Makefile fi fi test -d build/posix_acl_valid_with_ns || mkdir -p build/posix_acl_valid_with_ns cat confdefs.h - <<_ACEOF >build/posix_acl_valid_with_ns/posix_acl_valid_with_ns.c #include #include int main (void) { struct user_namespace *user_ns = NULL; const struct posix_acl *acl = NULL; int error; error = posix_acl_valid(user_ns, acl); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_valid_with_ns || mkdir -p build/posix_acl_valid_with_ns file=build/posix_acl_valid_with_ns/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_valid_with_ns ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_valid_with_ns.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_valid_with_ns/" >>build/Makefile fi if test -n "" ; then test -d build/posix_acl_valid_with_ns_license || mkdir -p build/posix_acl_valid_with_ns_license cat confdefs.h - <<_ACEOF >build/posix_acl_valid_with_ns_license/posix_acl_valid_with_ns_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct user_namespace *user_ns = NULL; const struct posix_acl *acl = NULL; int error; error = posix_acl_valid(user_ns, acl); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_valid_with_ns_license || mkdir -p build/posix_acl_valid_with_ns_license file=build/posix_acl_valid_with_ns_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_valid_with_ns_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_valid_with_ns_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_valid_with_ns_license/" >>build/Makefile fi fi test -d build/inode_operations_permission || mkdir -p build/inode_operations_permission cat confdefs.h - <<_ACEOF >build/inode_operations_permission/inode_operations_permission.c #include int permission_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_permission || mkdir -p build/inode_operations_permission file=build/inode_operations_permission/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_permission ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_permission.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_permission/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_permission_license || mkdir -p build/inode_operations_permission_license cat confdefs.h - <<_ACEOF >build/inode_operations_permission_license/inode_operations_permission_license.c #include MODULE_LICENSE(""); #include int permission_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_permission_license || mkdir -p build/inode_operations_permission_license file=build/inode_operations_permission_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_permission_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_permission_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_permission_license/" >>build/Makefile fi fi test -d build/inode_operations_permission_with_nameidata || mkdir -p build/inode_operations_permission_with_nameidata cat confdefs.h - <<_ACEOF >build/inode_operations_permission_with_nameidata/inode_operations_permission_with_nameidata.c #include #include int permission_fn(struct inode *inode, int mask, struct nameidata *nd) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_permission_with_nameidata || mkdir -p build/inode_operations_permission_with_nameidata file=build/inode_operations_permission_with_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_permission_with_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_permission_with_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_permission_with_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_permission_with_nameidata_license || mkdir -p build/inode_operations_permission_with_nameidata_license cat confdefs.h - <<_ACEOF >build/inode_operations_permission_with_nameidata_license/inode_operations_permission_with_nameidata_license.c #include MODULE_LICENSE(""); #include #include int permission_fn(struct inode *inode, int mask, struct nameidata *nd) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_permission_with_nameidata_license || mkdir -p build/inode_operations_permission_with_nameidata_license file=build/inode_operations_permission_with_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_permission_with_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_permission_with_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_permission_with_nameidata_license/" >>build/Makefile fi fi test -d build/inode_operations_check_acl || mkdir -p build/inode_operations_check_acl cat confdefs.h - <<_ACEOF >build/inode_operations_check_acl/inode_operations_check_acl.c #include int check_acl_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_check_acl || mkdir -p build/inode_operations_check_acl file=build/inode_operations_check_acl/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_check_acl ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_check_acl.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_check_acl/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_check_acl_license || mkdir -p build/inode_operations_check_acl_license cat confdefs.h - <<_ACEOF >build/inode_operations_check_acl_license/inode_operations_check_acl_license.c #include MODULE_LICENSE(""); #include int check_acl_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_check_acl_license || mkdir -p build/inode_operations_check_acl_license file=build/inode_operations_check_acl_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_check_acl_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_check_acl_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_check_acl_license/" >>build/Makefile fi fi test -d build/inode_operations_check_acl_with_flags || mkdir -p build/inode_operations_check_acl_with_flags cat confdefs.h - <<_ACEOF >build/inode_operations_check_acl_with_flags/inode_operations_check_acl_with_flags.c #include int check_acl_fn(struct inode *inode, int mask, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_check_acl_with_flags || mkdir -p build/inode_operations_check_acl_with_flags file=build/inode_operations_check_acl_with_flags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_check_acl_with_flags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_check_acl_with_flags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_check_acl_with_flags/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_check_acl_with_flags_license || mkdir -p build/inode_operations_check_acl_with_flags_license cat confdefs.h - <<_ACEOF >build/inode_operations_check_acl_with_flags_license/inode_operations_check_acl_with_flags_license.c #include MODULE_LICENSE(""); #include int check_acl_fn(struct inode *inode, int mask, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_check_acl_with_flags_license || mkdir -p build/inode_operations_check_acl_with_flags_license file=build/inode_operations_check_acl_with_flags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_check_acl_with_flags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_check_acl_with_flags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_check_acl_with_flags_license/" >>build/Makefile fi fi test -d build/inode_operations_get_acl || mkdir -p build/inode_operations_get_acl cat confdefs.h - <<_ACEOF >build/inode_operations_get_acl/inode_operations_get_acl.c #include struct posix_acl *get_acl_fn(struct inode *inode, int type) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .get_acl = get_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_acl || mkdir -p build/inode_operations_get_acl file=build/inode_operations_get_acl/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_acl ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_acl.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_acl/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_get_acl_license || mkdir -p build/inode_operations_get_acl_license cat confdefs.h - <<_ACEOF >build/inode_operations_get_acl_license/inode_operations_get_acl_license.c #include MODULE_LICENSE(""); #include struct posix_acl *get_acl_fn(struct inode *inode, int type) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .get_acl = get_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_acl_license || mkdir -p build/inode_operations_get_acl_license file=build/inode_operations_get_acl_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_acl_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_acl_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_acl_license/" >>build/Makefile fi fi test -d build/inode_operations_set_acl || mkdir -p build/inode_operations_set_acl cat confdefs.h - <<_ACEOF >build/inode_operations_set_acl/inode_operations_set_acl.c #include int set_acl_fn(struct inode *inode, struct posix_acl *acl, int type) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .set_acl = set_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_set_acl || mkdir -p build/inode_operations_set_acl file=build/inode_operations_set_acl/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_set_acl ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_set_acl.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_set_acl/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_set_acl_license || mkdir -p build/inode_operations_set_acl_license cat confdefs.h - <<_ACEOF >build/inode_operations_set_acl_license/inode_operations_set_acl_license.c #include MODULE_LICENSE(""); #include int set_acl_fn(struct inode *inode, struct posix_acl *acl, int type) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .set_acl = set_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_set_acl_license || mkdir -p build/inode_operations_set_acl_license file=build/inode_operations_set_acl_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_set_acl_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_set_acl_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_set_acl_license/" >>build/Makefile fi fi test -d build/get_acl_handle_cache || mkdir -p build/get_acl_handle_cache cat confdefs.h - <<_ACEOF >build/get_acl_handle_cache/get_acl_handle_cache.c #include int main (void) { void *sentinel __attribute__ ((unused)) = uncached_acl_sentinel(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_acl_handle_cache || mkdir -p build/get_acl_handle_cache file=build/get_acl_handle_cache/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_acl_handle_cache ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := get_acl_handle_cache.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_acl_handle_cache/" >>build/Makefile fi if test -n "" ; then test -d build/get_acl_handle_cache_license || mkdir -p build/get_acl_handle_cache_license cat confdefs.h - <<_ACEOF >build/get_acl_handle_cache_license/get_acl_handle_cache_license.c #include MODULE_LICENSE(""); #include int main (void) { void *sentinel __attribute__ ((unused)) = uncached_acl_sentinel(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_acl_handle_cache_license || mkdir -p build/get_acl_handle_cache_license file=build/get_acl_handle_cache_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_acl_handle_cache_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := get_acl_handle_cache_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_acl_handle_cache_license/" >>build/Makefile fi fi test -d build/acl_refcount || mkdir -p build/acl_refcount cat confdefs.h - <<_ACEOF >build/acl_refcount/acl_refcount.c #include #include #include int main (void) { struct posix_acl acl; refcount_t *r __attribute__ ((unused)) = &acl.a_refcount; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/acl_refcount || mkdir -p build/acl_refcount file=build/acl_refcount/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/acl_refcount ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := acl_refcount.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += acl_refcount/" >>build/Makefile fi if test -n "" ; then test -d build/acl_refcount_license || mkdir -p build/acl_refcount_license cat confdefs.h - <<_ACEOF >build/acl_refcount_license/acl_refcount_license.c #include MODULE_LICENSE(""); #include #include #include int main (void) { struct posix_acl acl; refcount_t *r __attribute__ ((unused)) = &acl.a_refcount; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/acl_refcount_license || mkdir -p build/acl_refcount_license file=build/acl_refcount_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/acl_refcount_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := acl_refcount_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += acl_refcount_license/" >>build/Makefile fi fi test -d build/inode_operations_getattr_path || mkdir -p build/inode_operations_getattr_path cat confdefs.h - <<_ACEOF >build/inode_operations_getattr_path/inode_operations_getattr_path.c #include int test_getattr( const struct path *p, struct kstat *k, u32 request_mask, unsigned int query_flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_getattr_path || mkdir -p build/inode_operations_getattr_path file=build/inode_operations_getattr_path/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_getattr_path ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_getattr_path.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_getattr_path/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_getattr_path_license || mkdir -p build/inode_operations_getattr_path_license cat confdefs.h - <<_ACEOF >build/inode_operations_getattr_path_license/inode_operations_getattr_path_license.c #include MODULE_LICENSE(""); #include int test_getattr( const struct path *p, struct kstat *k, u32 request_mask, unsigned int query_flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_getattr_path_license || mkdir -p build/inode_operations_getattr_path_license file=build/inode_operations_getattr_path_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_getattr_path_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_getattr_path_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_getattr_path_license/" >>build/Makefile fi fi test -d build/inode_operations_getattr_vfsmount || mkdir -p build/inode_operations_getattr_vfsmount cat confdefs.h - <<_ACEOF >build/inode_operations_getattr_vfsmount/inode_operations_getattr_vfsmount.c #include int test_getattr( struct vfsmount *mnt, struct dentry *d, struct kstat *k) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_getattr_vfsmount || mkdir -p build/inode_operations_getattr_vfsmount file=build/inode_operations_getattr_vfsmount/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_getattr_vfsmount ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_getattr_vfsmount.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_getattr_vfsmount/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_getattr_vfsmount_license || mkdir -p build/inode_operations_getattr_vfsmount_license cat confdefs.h - <<_ACEOF >build/inode_operations_getattr_vfsmount_license/inode_operations_getattr_vfsmount_license.c #include MODULE_LICENSE(""); #include int test_getattr( struct vfsmount *mnt, struct dentry *d, struct kstat *k) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_getattr_vfsmount_license || mkdir -p build/inode_operations_getattr_vfsmount_license file=build/inode_operations_getattr_vfsmount_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_getattr_vfsmount_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_getattr_vfsmount_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_getattr_vfsmount_license/" >>build/Makefile fi fi test -d build/inode_set_flags || mkdir -p build/inode_set_flags cat confdefs.h - <<_ACEOF >build/inode_set_flags/inode_set_flags.c #include int main (void) { struct inode inode; inode_set_flags(&inode, S_IMMUTABLE, S_IMMUTABLE); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_set_flags || mkdir -p build/inode_set_flags file=build/inode_set_flags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_set_flags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_set_flags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_set_flags/" >>build/Makefile fi if test -n "" ; then test -d build/inode_set_flags_license || mkdir -p build/inode_set_flags_license cat confdefs.h - <<_ACEOF >build/inode_set_flags_license/inode_set_flags_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode inode; inode_set_flags(&inode, S_IMMUTABLE, S_IMMUTABLE); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_set_flags_license || mkdir -p build/inode_set_flags_license file=build/inode_set_flags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_set_flags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_set_flags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_set_flags_license/" >>build/Makefile fi fi test -d build/inode_set_iversion || mkdir -p build/inode_set_iversion cat confdefs.h - <<_ACEOF >build/inode_set_iversion/inode_set_iversion.c #include int main (void) { struct inode inode; inode_set_iversion(&inode, 1); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_set_iversion || mkdir -p build/inode_set_iversion file=build/inode_set_iversion/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_set_iversion ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_set_iversion.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_set_iversion/" >>build/Makefile fi if test -n "" ; then test -d build/inode_set_iversion_license || mkdir -p build/inode_set_iversion_license cat confdefs.h - <<_ACEOF >build/inode_set_iversion_license/inode_set_iversion_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode inode; inode_set_iversion(&inode, 1); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_set_iversion_license || mkdir -p build/inode_set_iversion_license file=build/inode_set_iversion_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_set_iversion_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_set_iversion_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_set_iversion_license/" >>build/Makefile fi fi test -d build/super_operations_show_options || mkdir -p build/super_operations_show_options cat confdefs.h - <<_ACEOF >build/super_operations_show_options/super_operations_show_options.c #include int show_options(struct seq_file * x, struct dentry * y) { return 0; }; static struct super_operations sops __attribute__ ((unused)) = { .show_options = show_options, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_operations_show_options || mkdir -p build/super_operations_show_options file=build/super_operations_show_options/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_operations_show_options ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_operations_show_options.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_operations_show_options/" >>build/Makefile fi if test -n "" ; then test -d build/super_operations_show_options_license || mkdir -p build/super_operations_show_options_license cat confdefs.h - <<_ACEOF >build/super_operations_show_options_license/super_operations_show_options_license.c #include MODULE_LICENSE(""); #include int show_options(struct seq_file * x, struct dentry * y) { return 0; }; static struct super_operations sops __attribute__ ((unused)) = { .show_options = show_options, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_operations_show_options_license || mkdir -p build/super_operations_show_options_license file=build/super_operations_show_options_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_operations_show_options_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_operations_show_options_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_operations_show_options_license/" >>build/Makefile fi fi test -d build/file_inode || mkdir -p build/file_inode cat confdefs.h - <<_ACEOF >build/file_inode/file_inode.c #include int main (void) { struct file *f = NULL; file_inode(f); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_inode || mkdir -p build/file_inode file=build/file_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_inode/" >>build/Makefile fi if test -n "" ; then test -d build/file_inode_license || mkdir -p build/file_inode_license cat confdefs.h - <<_ACEOF >build/file_inode_license/file_inode_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *f = NULL; file_inode(f); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_inode_license || mkdir -p build/file_inode_license file=build/file_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_inode_license/" >>build/Makefile fi fi test -d build/file_dentry || mkdir -p build/file_dentry cat confdefs.h - <<_ACEOF >build/file_dentry/file_dentry.c #include int main (void) { struct file *f = NULL; file_dentry(f); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_dentry || mkdir -p build/file_dentry file=build/file_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/file_dentry_license || mkdir -p build/file_dentry_license cat confdefs.h - <<_ACEOF >build/file_dentry_license/file_dentry_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *f = NULL; file_dentry(f); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_dentry_license || mkdir -p build/file_dentry_license file=build/file_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_dentry_license/" >>build/Makefile fi fi test -d build/fsync_with_dentry || mkdir -p build/fsync_with_dentry cat confdefs.h - <<_ACEOF >build/fsync_with_dentry/fsync_with_dentry.c #include int test_fsync(struct file *f, struct dentry *dentry, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_with_dentry || mkdir -p build/fsync_with_dentry file=build/fsync_with_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_with_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_with_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_with_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/fsync_with_dentry_license || mkdir -p build/fsync_with_dentry_license cat confdefs.h - <<_ACEOF >build/fsync_with_dentry_license/fsync_with_dentry_license.c #include MODULE_LICENSE(""); #include int test_fsync(struct file *f, struct dentry *dentry, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_with_dentry_license || mkdir -p build/fsync_with_dentry_license file=build/fsync_with_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_with_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_with_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_with_dentry_license/" >>build/Makefile fi fi test -d build/fsync_without_dentry || mkdir -p build/fsync_without_dentry cat confdefs.h - <<_ACEOF >build/fsync_without_dentry/fsync_without_dentry.c #include int test_fsync(struct file *f, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_without_dentry || mkdir -p build/fsync_without_dentry file=build/fsync_without_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_without_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_without_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_without_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/fsync_without_dentry_license || mkdir -p build/fsync_without_dentry_license cat confdefs.h - <<_ACEOF >build/fsync_without_dentry_license/fsync_without_dentry_license.c #include MODULE_LICENSE(""); #include int test_fsync(struct file *f, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_without_dentry_license || mkdir -p build/fsync_without_dentry_license file=build/fsync_without_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_without_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_without_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_without_dentry_license/" >>build/Makefile fi fi test -d build/fsync_range || mkdir -p build/fsync_range cat confdefs.h - <<_ACEOF >build/fsync_range/fsync_range.c #include int test_fsync(struct file *f, loff_t a, loff_t b, int c) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_range || mkdir -p build/fsync_range file=build/fsync_range/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_range ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_range.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_range/" >>build/Makefile fi if test -n "" ; then test -d build/fsync_range_license || mkdir -p build/fsync_range_license cat confdefs.h - <<_ACEOF >build/fsync_range_license/fsync_range_license.c #include MODULE_LICENSE(""); #include int test_fsync(struct file *f, loff_t a, loff_t b, int c) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_range_license || mkdir -p build/fsync_range_license file=build/fsync_range_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_range_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_range_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_range_license/" >>build/Makefile fi fi test -d build/aio_fsync || mkdir -p build/aio_fsync cat confdefs.h - <<_ACEOF >build/aio_fsync/aio_fsync.c #include static const struct file_operations fops __attribute__ ((unused)) = { .aio_fsync = NULL, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/aio_fsync || mkdir -p build/aio_fsync file=build/aio_fsync/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/aio_fsync ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := aio_fsync.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += aio_fsync/" >>build/Makefile fi if test -n "" ; then test -d build/aio_fsync_license || mkdir -p build/aio_fsync_license cat confdefs.h - <<_ACEOF >build/aio_fsync_license/aio_fsync_license.c #include MODULE_LICENSE(""); #include static const struct file_operations fops __attribute__ ((unused)) = { .aio_fsync = NULL, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/aio_fsync_license || mkdir -p build/aio_fsync_license file=build/aio_fsync_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/aio_fsync_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := aio_fsync_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += aio_fsync_license/" >>build/Makefile fi fi test -d build/evict_inode || mkdir -p build/evict_inode cat confdefs.h - <<_ACEOF >build/evict_inode/evict_inode.c #include void evict_inode (struct inode * t) { return; } static struct super_operations sops __attribute__ ((unused)) = { .evict_inode = evict_inode, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/evict_inode || mkdir -p build/evict_inode file=build/evict_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/evict_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := evict_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += evict_inode/" >>build/Makefile fi if test -n "" ; then test -d build/evict_inode_license || mkdir -p build/evict_inode_license cat confdefs.h - <<_ACEOF >build/evict_inode_license/evict_inode_license.c #include MODULE_LICENSE(""); #include void evict_inode (struct inode * t) { return; } static struct super_operations sops __attribute__ ((unused)) = { .evict_inode = evict_inode, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/evict_inode_license || mkdir -p build/evict_inode_license file=build/evict_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/evict_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := evict_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += evict_inode_license/" >>build/Makefile fi fi test -d build/dirty_inode_with_flags || mkdir -p build/dirty_inode_with_flags cat confdefs.h - <<_ACEOF >build/dirty_inode_with_flags/dirty_inode_with_flags.c #include void dirty_inode(struct inode *a, int b) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .dirty_inode = dirty_inode, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dirty_inode_with_flags || mkdir -p build/dirty_inode_with_flags file=build/dirty_inode_with_flags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dirty_inode_with_flags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dirty_inode_with_flags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dirty_inode_with_flags/" >>build/Makefile fi if test -n "" ; then test -d build/dirty_inode_with_flags_license || mkdir -p build/dirty_inode_with_flags_license cat confdefs.h - <<_ACEOF >build/dirty_inode_with_flags_license/dirty_inode_with_flags_license.c #include MODULE_LICENSE(""); #include void dirty_inode(struct inode *a, int b) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .dirty_inode = dirty_inode, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dirty_inode_with_flags_license || mkdir -p build/dirty_inode_with_flags_license file=build/dirty_inode_with_flags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dirty_inode_with_flags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dirty_inode_with_flags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dirty_inode_with_flags_license/" >>build/Makefile fi fi test -d build/super_block_s_shrink || mkdir -p build/super_block_s_shrink cat confdefs.h - <<_ACEOF >build/super_block_s_shrink/super_block_s_shrink.c #include int shrink(struct shrinker *s, struct shrink_control *sc) { return 0; } static const struct super_block sb __attribute__ ((unused)) = { .s_shrink.shrink = shrink, .s_shrink.seeks = DEFAULT_SEEKS, .s_shrink.batch = 0, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_shrink || mkdir -p build/super_block_s_shrink file=build/super_block_s_shrink/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_shrink ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_shrink.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_shrink/" >>build/Makefile fi if test -n "" ; then test -d build/super_block_s_shrink_license || mkdir -p build/super_block_s_shrink_license cat confdefs.h - <<_ACEOF >build/super_block_s_shrink_license/super_block_s_shrink_license.c #include MODULE_LICENSE(""); #include int shrink(struct shrinker *s, struct shrink_control *sc) { return 0; } static const struct super_block sb __attribute__ ((unused)) = { .s_shrink.shrink = shrink, .s_shrink.seeks = DEFAULT_SEEKS, .s_shrink.batch = 0, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_shrink_license || mkdir -p build/super_block_s_shrink_license file=build/super_block_s_shrink_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_shrink_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_shrink_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_shrink_license/" >>build/Makefile fi fi test -d build/super_block_s_instances_list_head || mkdir -p build/super_block_s_instances_list_head cat confdefs.h - <<_ACEOF >build/super_block_s_instances_list_head/super_block_s_instances_list_head.c #include int main (void) { struct super_block sb __attribute__ ((unused)); INIT_LIST_HEAD(&sb.s_instances); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_instances_list_head || mkdir -p build/super_block_s_instances_list_head file=build/super_block_s_instances_list_head/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_instances_list_head ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_instances_list_head.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_instances_list_head/" >>build/Makefile fi if test -n "" ; then test -d build/super_block_s_instances_list_head_license || mkdir -p build/super_block_s_instances_list_head_license cat confdefs.h - <<_ACEOF >build/super_block_s_instances_list_head_license/super_block_s_instances_list_head_license.c #include MODULE_LICENSE(""); #include int main (void) { struct super_block sb __attribute__ ((unused)); INIT_LIST_HEAD(&sb.s_instances); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_instances_list_head_license || mkdir -p build/super_block_s_instances_list_head_license file=build/super_block_s_instances_list_head_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_instances_list_head_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_instances_list_head_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_instances_list_head_license/" >>build/Makefile fi fi test -d build/nr_cached_objects || mkdir -p build/nr_cached_objects cat confdefs.h - <<_ACEOF >build/nr_cached_objects/nr_cached_objects.c #include int nr_cached_objects(struct super_block *sb) { return 0; } static const struct super_operations sops __attribute__ ((unused)) = { .nr_cached_objects = nr_cached_objects, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/nr_cached_objects || mkdir -p build/nr_cached_objects file=build/nr_cached_objects/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/nr_cached_objects ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := nr_cached_objects.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += nr_cached_objects/" >>build/Makefile fi if test -n "" ; then test -d build/nr_cached_objects_license || mkdir -p build/nr_cached_objects_license cat confdefs.h - <<_ACEOF >build/nr_cached_objects_license/nr_cached_objects_license.c #include MODULE_LICENSE(""); #include int nr_cached_objects(struct super_block *sb) { return 0; } static const struct super_operations sops __attribute__ ((unused)) = { .nr_cached_objects = nr_cached_objects, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/nr_cached_objects_license || mkdir -p build/nr_cached_objects_license file=build/nr_cached_objects_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/nr_cached_objects_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := nr_cached_objects_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += nr_cached_objects_license/" >>build/Makefile fi fi test -d build/free_cached_objects || mkdir -p build/free_cached_objects cat confdefs.h - <<_ACEOF >build/free_cached_objects/free_cached_objects.c #include void free_cached_objects(struct super_block *sb, int x) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .free_cached_objects = free_cached_objects, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/free_cached_objects || mkdir -p build/free_cached_objects file=build/free_cached_objects/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/free_cached_objects ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := free_cached_objects.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += free_cached_objects/" >>build/Makefile fi if test -n "" ; then test -d build/free_cached_objects_license || mkdir -p build/free_cached_objects_license cat confdefs.h - <<_ACEOF >build/free_cached_objects_license/free_cached_objects_license.c #include MODULE_LICENSE(""); #include void free_cached_objects(struct super_block *sb, int x) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .free_cached_objects = free_cached_objects, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/free_cached_objects_license || mkdir -p build/free_cached_objects_license file=build/free_cached_objects_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/free_cached_objects_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := free_cached_objects_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += free_cached_objects_license/" >>build/Makefile fi fi test -d build/shrink_control_nid || mkdir -p build/shrink_control_nid cat confdefs.h - <<_ACEOF >build/shrink_control_nid/shrink_control_nid.c #include int main (void) { struct shrink_control sc __attribute__ ((unused)); unsigned long scnidsize __attribute__ ((unused)) = sizeof(sc.nid); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrink_control_nid || mkdir -p build/shrink_control_nid file=build/shrink_control_nid/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrink_control_nid ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrink_control_nid.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrink_control_nid/" >>build/Makefile fi if test -n "" ; then test -d build/shrink_control_nid_license || mkdir -p build/shrink_control_nid_license cat confdefs.h - <<_ACEOF >build/shrink_control_nid_license/shrink_control_nid_license.c #include MODULE_LICENSE(""); #include int main (void) { struct shrink_control sc __attribute__ ((unused)); unsigned long scnidsize __attribute__ ((unused)) = sizeof(sc.nid); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrink_control_nid_license || mkdir -p build/shrink_control_nid_license file=build/shrink_control_nid_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrink_control_nid_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrink_control_nid_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrink_control_nid_license/" >>build/Makefile fi fi test -d build/shrinker_cb_2arg || mkdir -p build/shrinker_cb_2arg cat confdefs.h - <<_ACEOF >build/shrinker_cb_2arg/shrinker_cb_2arg.c #include int shrinker_cb(int nr_to_scan, gfp_t gfp_mask) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_2arg || mkdir -p build/shrinker_cb_2arg file=build/shrinker_cb_2arg/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_2arg ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_2arg.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_2arg/" >>build/Makefile fi if test -n "" ; then test -d build/shrinker_cb_2arg_license || mkdir -p build/shrinker_cb_2arg_license cat confdefs.h - <<_ACEOF >build/shrinker_cb_2arg_license/shrinker_cb_2arg_license.c #include MODULE_LICENSE(""); #include int shrinker_cb(int nr_to_scan, gfp_t gfp_mask) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_2arg_license || mkdir -p build/shrinker_cb_2arg_license file=build/shrinker_cb_2arg_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_2arg_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_2arg_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_2arg_license/" >>build/Makefile fi fi test -d build/shrinker_cb_3arg || mkdir -p build/shrinker_cb_3arg cat confdefs.h - <<_ACEOF >build/shrinker_cb_3arg/shrinker_cb_3arg.c #include int shrinker_cb(struct shrinker *shrink, int nr_to_scan, gfp_t gfp_mask) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_3arg || mkdir -p build/shrinker_cb_3arg file=build/shrinker_cb_3arg/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_3arg ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_3arg.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_3arg/" >>build/Makefile fi if test -n "" ; then test -d build/shrinker_cb_3arg_license || mkdir -p build/shrinker_cb_3arg_license cat confdefs.h - <<_ACEOF >build/shrinker_cb_3arg_license/shrinker_cb_3arg_license.c #include MODULE_LICENSE(""); #include int shrinker_cb(struct shrinker *shrink, int nr_to_scan, gfp_t gfp_mask) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_3arg_license || mkdir -p build/shrinker_cb_3arg_license file=build/shrinker_cb_3arg_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_3arg_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_3arg_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_3arg_license/" >>build/Makefile fi fi test -d build/shrinker_cb_shrink_control || mkdir -p build/shrinker_cb_shrink_control cat confdefs.h - <<_ACEOF >build/shrinker_cb_shrink_control/shrinker_cb_shrink_control.c #include int shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_shrink_control || mkdir -p build/shrinker_cb_shrink_control file=build/shrinker_cb_shrink_control/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_shrink_control ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_shrink_control.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_shrink_control/" >>build/Makefile fi if test -n "" ; then test -d build/shrinker_cb_shrink_control_license || mkdir -p build/shrinker_cb_shrink_control_license cat confdefs.h - <<_ACEOF >build/shrinker_cb_shrink_control_license/shrinker_cb_shrink_control_license.c #include MODULE_LICENSE(""); #include int shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_shrink_control_license || mkdir -p build/shrinker_cb_shrink_control_license file=build/shrinker_cb_shrink_control_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_shrink_control_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_shrink_control_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_shrink_control_license/" >>build/Makefile fi fi test -d build/shrinker_cb_shrink_control_split || mkdir -p build/shrinker_cb_shrink_control_split cat confdefs.h - <<_ACEOF >build/shrinker_cb_shrink_control_split/shrinker_cb_shrink_control_split.c #include unsigned long shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } int main (void) { struct shrinker cache_shrinker = { .count_objects = shrinker_cb, .scan_objects = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_shrink_control_split || mkdir -p build/shrinker_cb_shrink_control_split file=build/shrinker_cb_shrink_control_split/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_shrink_control_split ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_shrink_control_split.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_shrink_control_split/" >>build/Makefile fi if test -n "" ; then test -d build/shrinker_cb_shrink_control_split_license || mkdir -p build/shrinker_cb_shrink_control_split_license cat confdefs.h - <<_ACEOF >build/shrinker_cb_shrink_control_split_license/shrinker_cb_shrink_control_split_license.c #include MODULE_LICENSE(""); #include unsigned long shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } int main (void) { struct shrinker cache_shrinker = { .count_objects = shrinker_cb, .scan_objects = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_shrink_control_split_license || mkdir -p build/shrinker_cb_shrink_control_split_license file=build/shrinker_cb_shrink_control_split_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_shrink_control_split_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_shrink_control_split_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_shrink_control_split_license/" >>build/Makefile fi fi test -d build/shrink_control_struct || mkdir -p build/shrink_control_struct cat confdefs.h - <<_ACEOF >build/shrink_control_struct/shrink_control_struct.c #include int main (void) { struct shrink_control sc __attribute__ ((unused)); sc.nr_to_scan = 0; sc.gfp_mask = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrink_control_struct || mkdir -p build/shrink_control_struct file=build/shrink_control_struct/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrink_control_struct ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrink_control_struct.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrink_control_struct/" >>build/Makefile fi if test -n "" ; then test -d build/shrink_control_struct_license || mkdir -p build/shrink_control_struct_license cat confdefs.h - <<_ACEOF >build/shrink_control_struct_license/shrink_control_struct_license.c #include MODULE_LICENSE(""); #include int main (void) { struct shrink_control sc __attribute__ ((unused)); sc.nr_to_scan = 0; sc.gfp_mask = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrink_control_struct_license || mkdir -p build/shrink_control_struct_license file=build/shrink_control_struct_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrink_control_struct_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrink_control_struct_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrink_control_struct_license/" >>build/Makefile fi fi test -d build/inode_operations_mkdir || mkdir -p build/inode_operations_mkdir cat confdefs.h - <<_ACEOF >build/inode_operations_mkdir/inode_operations_mkdir.c #include int mkdir(struct inode *inode, struct dentry *dentry, umode_t umode) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .mkdir = mkdir, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_mkdir || mkdir -p build/inode_operations_mkdir file=build/inode_operations_mkdir/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_mkdir ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_mkdir.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_mkdir/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_mkdir_license || mkdir -p build/inode_operations_mkdir_license cat confdefs.h - <<_ACEOF >build/inode_operations_mkdir_license/inode_operations_mkdir_license.c #include MODULE_LICENSE(""); #include int mkdir(struct inode *inode, struct dentry *dentry, umode_t umode) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .mkdir = mkdir, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_mkdir_license || mkdir -p build/inode_operations_mkdir_license file=build/inode_operations_mkdir_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_mkdir_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_mkdir_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_mkdir_license/" >>build/Makefile fi fi test -d build/lookup_nameidata || mkdir -p build/lookup_nameidata cat confdefs.h - <<_ACEOF >build/lookup_nameidata/lookup_nameidata.c #include #include struct dentry *inode_lookup(struct inode *inode, struct dentry *dentry, struct nameidata *nidata) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .lookup = inode_lookup, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_nameidata || mkdir -p build/lookup_nameidata file=build/lookup_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/lookup_nameidata_license || mkdir -p build/lookup_nameidata_license cat confdefs.h - <<_ACEOF >build/lookup_nameidata_license/lookup_nameidata_license.c #include MODULE_LICENSE(""); #include #include struct dentry *inode_lookup(struct inode *inode, struct dentry *dentry, struct nameidata *nidata) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .lookup = inode_lookup, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_nameidata_license || mkdir -p build/lookup_nameidata_license file=build/lookup_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_nameidata_license/" >>build/Makefile fi fi test -d build/create_nameidata || mkdir -p build/create_nameidata cat confdefs.h - <<_ACEOF >build/create_nameidata/create_nameidata.c #include #include #ifdef HAVE_MKDIR_UMODE_T int inode_create(struct inode *inode ,struct dentry *dentry, umode_t umode, struct nameidata *nidata) { return 0; } #else int inode_create(struct inode *inode,struct dentry *dentry, int umode, struct nameidata * nidata) { return 0; } #endif static const struct inode_operations iops __attribute__ ((unused)) = { .create = inode_create, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/create_nameidata || mkdir -p build/create_nameidata file=build/create_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/create_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := create_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += create_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/create_nameidata_license || mkdir -p build/create_nameidata_license cat confdefs.h - <<_ACEOF >build/create_nameidata_license/create_nameidata_license.c #include MODULE_LICENSE(""); #include #include #ifdef HAVE_MKDIR_UMODE_T int inode_create(struct inode *inode ,struct dentry *dentry, umode_t umode, struct nameidata *nidata) { return 0; } #else int inode_create(struct inode *inode,struct dentry *dentry, int umode, struct nameidata * nidata) { return 0; } #endif static const struct inode_operations iops __attribute__ ((unused)) = { .create = inode_create, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/create_nameidata_license || mkdir -p build/create_nameidata_license file=build/create_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/create_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := create_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += create_nameidata_license/" >>build/Makefile fi fi test -d build/inode_operations_get_link || mkdir -p build/inode_operations_get_link cat confdefs.h - <<_ACEOF >build/inode_operations_get_link/inode_operations_get_link.c #include const char *get_link(struct dentry *de, struct inode *ip, struct delayed_call *done) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_link || mkdir -p build/inode_operations_get_link file=build/inode_operations_get_link/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_link ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_link.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_link/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_get_link_license || mkdir -p build/inode_operations_get_link_license cat confdefs.h - <<_ACEOF >build/inode_operations_get_link_license/inode_operations_get_link_license.c #include MODULE_LICENSE(""); #include const char *get_link(struct dentry *de, struct inode *ip, struct delayed_call *done) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_link_license || mkdir -p build/inode_operations_get_link_license file=build/inode_operations_get_link_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_link_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_link_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_link_license/" >>build/Makefile fi fi test -d build/inode_operations_get_link_cookie || mkdir -p build/inode_operations_get_link_cookie cat confdefs.h - <<_ACEOF >build/inode_operations_get_link_cookie/inode_operations_get_link_cookie.c #include const char *get_link(struct dentry *de, struct inode *ip, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_link_cookie || mkdir -p build/inode_operations_get_link_cookie file=build/inode_operations_get_link_cookie/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_link_cookie ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_link_cookie.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_link_cookie/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_get_link_cookie_license || mkdir -p build/inode_operations_get_link_cookie_license cat confdefs.h - <<_ACEOF >build/inode_operations_get_link_cookie_license/inode_operations_get_link_cookie_license.c #include MODULE_LICENSE(""); #include const char *get_link(struct dentry *de, struct inode *ip, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_link_cookie_license || mkdir -p build/inode_operations_get_link_cookie_license file=build/inode_operations_get_link_cookie_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_link_cookie_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_link_cookie_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_link_cookie_license/" >>build/Makefile fi fi test -d build/inode_operations_follow_link || mkdir -p build/inode_operations_follow_link cat confdefs.h - <<_ACEOF >build/inode_operations_follow_link/inode_operations_follow_link.c #include const char *follow_link(struct dentry *de, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_follow_link || mkdir -p build/inode_operations_follow_link file=build/inode_operations_follow_link/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_follow_link ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_follow_link.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_follow_link/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_follow_link_license || mkdir -p build/inode_operations_follow_link_license cat confdefs.h - <<_ACEOF >build/inode_operations_follow_link_license/inode_operations_follow_link_license.c #include MODULE_LICENSE(""); #include const char *follow_link(struct dentry *de, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_follow_link_license || mkdir -p build/inode_operations_follow_link_license file=build/inode_operations_follow_link_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_follow_link_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_follow_link_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_follow_link_license/" >>build/Makefile fi fi test -d build/inode_operations_follow_link_nameidata || mkdir -p build/inode_operations_follow_link_nameidata cat confdefs.h - <<_ACEOF >build/inode_operations_follow_link_nameidata/inode_operations_follow_link_nameidata.c #include void *follow_link(struct dentry *de, struct nameidata *nd) { return (void *)NULL; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_follow_link_nameidata || mkdir -p build/inode_operations_follow_link_nameidata file=build/inode_operations_follow_link_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_follow_link_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_follow_link_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_follow_link_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_follow_link_nameidata_license || mkdir -p build/inode_operations_follow_link_nameidata_license cat confdefs.h - <<_ACEOF >build/inode_operations_follow_link_nameidata_license/inode_operations_follow_link_nameidata_license.c #include MODULE_LICENSE(""); #include void *follow_link(struct dentry *de, struct nameidata *nd) { return (void *)NULL; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_follow_link_nameidata_license || mkdir -p build/inode_operations_follow_link_nameidata_license file=build/inode_operations_follow_link_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_follow_link_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_follow_link_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_follow_link_nameidata_license/" >>build/Makefile fi fi test -d build/put_link_cookie || mkdir -p build/put_link_cookie cat confdefs.h - <<_ACEOF >build/put_link_cookie/put_link_cookie.c #include void put_link(struct inode *ip, void *cookie) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/put_link_cookie || mkdir -p build/put_link_cookie file=build/put_link_cookie/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/put_link_cookie ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := put_link_cookie.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += put_link_cookie/" >>build/Makefile fi if test -n "" ; then test -d build/put_link_cookie_license || mkdir -p build/put_link_cookie_license cat confdefs.h - <<_ACEOF >build/put_link_cookie_license/put_link_cookie_license.c #include MODULE_LICENSE(""); #include void put_link(struct inode *ip, void *cookie) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/put_link_cookie_license || mkdir -p build/put_link_cookie_license file=build/put_link_cookie_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/put_link_cookie_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := put_link_cookie_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += put_link_cookie_license/" >>build/Makefile fi fi test -d build/put_link_nameidata || mkdir -p build/put_link_nameidata cat confdefs.h - <<_ACEOF >build/put_link_nameidata/put_link_nameidata.c #include void put_link(struct dentry *de, struct nameidata *nd, void *ptr) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/put_link_nameidata || mkdir -p build/put_link_nameidata file=build/put_link_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/put_link_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := put_link_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += put_link_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/put_link_nameidata_license || mkdir -p build/put_link_nameidata_license cat confdefs.h - <<_ACEOF >build/put_link_nameidata_license/put_link_nameidata_license.c #include MODULE_LICENSE(""); #include void put_link(struct dentry *de, struct nameidata *nd, void *ptr) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/put_link_nameidata_license || mkdir -p build/put_link_nameidata_license file=build/put_link_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/put_link_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := put_link_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += put_link_nameidata_license/" >>build/Makefile fi fi test -d build/inode_operations_tmpfile || mkdir -p build/inode_operations_tmpfile cat confdefs.h - <<_ACEOF >build/inode_operations_tmpfile/inode_operations_tmpfile.c #include int tmpfile(struct inode *inode, struct dentry *dentry, umode_t mode) { return 0; } static struct inode_operations iops __attribute__ ((unused)) = { .tmpfile = tmpfile, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_tmpfile || mkdir -p build/inode_operations_tmpfile file=build/inode_operations_tmpfile/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_tmpfile ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_tmpfile.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_tmpfile/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_tmpfile_license || mkdir -p build/inode_operations_tmpfile_license cat confdefs.h - <<_ACEOF >build/inode_operations_tmpfile_license/inode_operations_tmpfile_license.c #include MODULE_LICENSE(""); #include int tmpfile(struct inode *inode, struct dentry *dentry, umode_t mode) { return 0; } static struct inode_operations iops __attribute__ ((unused)) = { .tmpfile = tmpfile, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_tmpfile_license || mkdir -p build/inode_operations_tmpfile_license file=build/inode_operations_tmpfile_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_tmpfile_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_tmpfile_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_tmpfile_license/" >>build/Makefile fi fi test -d build/inode_operations_truncate_range || mkdir -p build/inode_operations_truncate_range cat confdefs.h - <<_ACEOF >build/inode_operations_truncate_range/inode_operations_truncate_range.c #include void truncate_range(struct inode *inode, loff_t start, loff_t end) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .truncate_range = truncate_range, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_truncate_range || mkdir -p build/inode_operations_truncate_range file=build/inode_operations_truncate_range/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_truncate_range ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_truncate_range.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_truncate_range/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_truncate_range_license || mkdir -p build/inode_operations_truncate_range_license cat confdefs.h - <<_ACEOF >build/inode_operations_truncate_range_license/inode_operations_truncate_range_license.c #include MODULE_LICENSE(""); #include void truncate_range(struct inode *inode, loff_t start, loff_t end) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .truncate_range = truncate_range, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_truncate_range_license || mkdir -p build/inode_operations_truncate_range_license file=build/inode_operations_truncate_range_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_truncate_range_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_truncate_range_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_truncate_range_license/" >>build/Makefile fi fi test -d build/dentry_operations_d_automount || mkdir -p build/dentry_operations_d_automount cat confdefs.h - <<_ACEOF >build/dentry_operations_d_automount/dentry_operations_d_automount.c #include struct vfsmount *d_automount(struct path *p) { return NULL; } struct dentry_operations dops __attribute__ ((unused)) = { .d_automount = d_automount, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_d_automount || mkdir -p build/dentry_operations_d_automount file=build/dentry_operations_d_automount/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_d_automount ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_d_automount.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_d_automount/" >>build/Makefile fi if test -n "" ; then test -d build/dentry_operations_d_automount_license || mkdir -p build/dentry_operations_d_automount_license cat confdefs.h - <<_ACEOF >build/dentry_operations_d_automount_license/dentry_operations_d_automount_license.c #include MODULE_LICENSE(""); #include struct vfsmount *d_automount(struct path *p) { return NULL; } struct dentry_operations dops __attribute__ ((unused)) = { .d_automount = d_automount, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_d_automount_license || mkdir -p build/dentry_operations_d_automount_license file=build/dentry_operations_d_automount_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_d_automount_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_d_automount_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_d_automount_license/" >>build/Makefile fi fi test -d build/export_operations_encode_fh || mkdir -p build/export_operations_encode_fh cat confdefs.h - <<_ACEOF >build/export_operations_encode_fh/export_operations_encode_fh.c #include int encode_fh(struct inode *inode, __u32 *fh, int *max_len, struct inode *parent) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .encode_fh = encode_fh, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/export_operations_encode_fh || mkdir -p build/export_operations_encode_fh file=build/export_operations_encode_fh/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/export_operations_encode_fh ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := export_operations_encode_fh.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += export_operations_encode_fh/" >>build/Makefile fi if test -n "" ; then test -d build/export_operations_encode_fh_license || mkdir -p build/export_operations_encode_fh_license cat confdefs.h - <<_ACEOF >build/export_operations_encode_fh_license/export_operations_encode_fh_license.c #include MODULE_LICENSE(""); #include int encode_fh(struct inode *inode, __u32 *fh, int *max_len, struct inode *parent) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .encode_fh = encode_fh, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/export_operations_encode_fh_license || mkdir -p build/export_operations_encode_fh_license file=build/export_operations_encode_fh_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/export_operations_encode_fh_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := export_operations_encode_fh_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += export_operations_encode_fh_license/" >>build/Makefile fi fi test -d build/export_operations_commit_metadata || mkdir -p build/export_operations_commit_metadata cat confdefs.h - <<_ACEOF >build/export_operations_commit_metadata/export_operations_commit_metadata.c #include int commit_metadata(struct inode *inode) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .commit_metadata = commit_metadata, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/export_operations_commit_metadata || mkdir -p build/export_operations_commit_metadata file=build/export_operations_commit_metadata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/export_operations_commit_metadata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := export_operations_commit_metadata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += export_operations_commit_metadata/" >>build/Makefile fi if test -n "" ; then test -d build/export_operations_commit_metadata_license || mkdir -p build/export_operations_commit_metadata_license cat confdefs.h - <<_ACEOF >build/export_operations_commit_metadata_license/export_operations_commit_metadata_license.c #include MODULE_LICENSE(""); #include int commit_metadata(struct inode *inode) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .commit_metadata = commit_metadata, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/export_operations_commit_metadata_license || mkdir -p build/export_operations_commit_metadata_license file=build/export_operations_commit_metadata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/export_operations_commit_metadata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := export_operations_commit_metadata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += export_operations_commit_metadata_license/" >>build/Makefile fi fi test -d build/clear_inode || mkdir -p build/clear_inode cat confdefs.h - <<_ACEOF >build/clear_inode/clear_inode.c #include int main (void) { clear_inode(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/clear_inode || mkdir -p build/clear_inode file=build/clear_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/clear_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := clear_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += clear_inode/" >>build/Makefile fi if test -n "" ; then test -d build/clear_inode_license || mkdir -p build/clear_inode_license cat confdefs.h - <<_ACEOF >build/clear_inode_license/clear_inode_license.c #include MODULE_LICENSE(""); #include int main (void) { clear_inode(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/clear_inode_license || mkdir -p build/clear_inode_license file=build/clear_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/clear_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := clear_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += clear_inode_license/" >>build/Makefile fi fi test -d build/setattr_prepare || mkdir -p build/setattr_prepare cat confdefs.h - <<_ACEOF >build/setattr_prepare/setattr_prepare.c #include int main (void) { struct dentry *dentry = NULL; struct iattr *attr = NULL; int error __attribute__ ((unused)) = setattr_prepare(dentry, attr); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/setattr_prepare || mkdir -p build/setattr_prepare file=build/setattr_prepare/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/setattr_prepare ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := setattr_prepare.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += setattr_prepare/" >>build/Makefile fi if test -n "" ; then test -d build/setattr_prepare_license || mkdir -p build/setattr_prepare_license cat confdefs.h - <<_ACEOF >build/setattr_prepare_license/setattr_prepare_license.c #include MODULE_LICENSE(""); #include int main (void) { struct dentry *dentry = NULL; struct iattr *attr = NULL; int error __attribute__ ((unused)) = setattr_prepare(dentry, attr); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/setattr_prepare_license || mkdir -p build/setattr_prepare_license file=build/setattr_prepare_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/setattr_prepare_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := setattr_prepare_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += setattr_prepare_license/" >>build/Makefile fi fi test -d build/insert_inode_locked || mkdir -p build/insert_inode_locked cat confdefs.h - <<_ACEOF >build/insert_inode_locked/insert_inode_locked.c #include int main (void) { insert_inode_locked(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/insert_inode_locked || mkdir -p build/insert_inode_locked file=build/insert_inode_locked/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/insert_inode_locked ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := insert_inode_locked.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += insert_inode_locked/" >>build/Makefile fi if test -n "" ; then test -d build/insert_inode_locked_license || mkdir -p build/insert_inode_locked_license cat confdefs.h - <<_ACEOF >build/insert_inode_locked_license/insert_inode_locked_license.c #include MODULE_LICENSE(""); #include int main (void) { insert_inode_locked(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/insert_inode_locked_license || mkdir -p build/insert_inode_locked_license file=build/insert_inode_locked_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/insert_inode_locked_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := insert_inode_locked_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += insert_inode_locked_license/" >>build/Makefile fi fi test -d build/d_make_root || mkdir -p build/d_make_root cat confdefs.h - <<_ACEOF >build/d_make_root/d_make_root.c #include int main (void) { d_make_root(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_make_root || mkdir -p build/d_make_root file=build/d_make_root/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_make_root ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_make_root.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_make_root/" >>build/Makefile fi if test -n "" ; then test -d build/d_make_root_license || mkdir -p build/d_make_root_license cat confdefs.h - <<_ACEOF >build/d_make_root_license/d_make_root_license.c #include MODULE_LICENSE(""); #include int main (void) { d_make_root(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_make_root_license || mkdir -p build/d_make_root_license file=build/d_make_root_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_make_root_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_make_root_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_make_root_license/" >>build/Makefile fi fi test -d build/d_obtain_alias || mkdir -p build/d_obtain_alias cat confdefs.h - <<_ACEOF >build/d_obtain_alias/d_obtain_alias.c #include int main (void) { d_obtain_alias(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_obtain_alias || mkdir -p build/d_obtain_alias file=build/d_obtain_alias/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_obtain_alias ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_obtain_alias.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_obtain_alias/" >>build/Makefile fi if test -n "" ; then test -d build/d_obtain_alias_license || mkdir -p build/d_obtain_alias_license cat confdefs.h - <<_ACEOF >build/d_obtain_alias_license/d_obtain_alias_license.c #include MODULE_LICENSE(""); #include int main (void) { d_obtain_alias(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_obtain_alias_license || mkdir -p build/d_obtain_alias_license file=build/d_obtain_alias_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_obtain_alias_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_obtain_alias_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_obtain_alias_license/" >>build/Makefile fi fi test -d build/d_prune_aliases || mkdir -p build/d_prune_aliases cat confdefs.h - <<_ACEOF >build/d_prune_aliases/d_prune_aliases.c #include int main (void) { struct inode *ip = NULL; d_prune_aliases(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_prune_aliases || mkdir -p build/d_prune_aliases file=build/d_prune_aliases/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_prune_aliases ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_prune_aliases.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_prune_aliases/" >>build/Makefile fi if test -n "" ; then test -d build/d_prune_aliases_license || mkdir -p build/d_prune_aliases_license cat confdefs.h - <<_ACEOF >build/d_prune_aliases_license/d_prune_aliases_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip = NULL; d_prune_aliases(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_prune_aliases_license || mkdir -p build/d_prune_aliases_license file=build/d_prune_aliases_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_prune_aliases_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_prune_aliases_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_prune_aliases_license/" >>build/Makefile fi fi test -d build/d_set_d_op || mkdir -p build/d_set_d_op cat confdefs.h - <<_ACEOF >build/d_set_d_op/d_set_d_op.c #include int main (void) { d_set_d_op(NULL, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_set_d_op || mkdir -p build/d_set_d_op file=build/d_set_d_op/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_set_d_op ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_set_d_op.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_set_d_op/" >>build/Makefile fi if test -n "" ; then test -d build/d_set_d_op_license || mkdir -p build/d_set_d_op_license cat confdefs.h - <<_ACEOF >build/d_set_d_op_license/d_set_d_op_license.c #include MODULE_LICENSE(""); #include int main (void) { d_set_d_op(NULL, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_set_d_op_license || mkdir -p build/d_set_d_op_license file=build/d_set_d_op_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_set_d_op_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_set_d_op_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_set_d_op_license/" >>build/Makefile fi fi test -d build/dentry_operations_revalidate || mkdir -p build/dentry_operations_revalidate cat confdefs.h - <<_ACEOF >build/dentry_operations_revalidate/dentry_operations_revalidate.c #include #include int revalidate (struct dentry *dentry, struct nameidata *nidata) { return 0; } static const struct dentry_operations dops __attribute__ ((unused)) = { .d_revalidate = revalidate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_revalidate || mkdir -p build/dentry_operations_revalidate file=build/dentry_operations_revalidate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_revalidate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_revalidate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_revalidate/" >>build/Makefile fi if test -n "" ; then test -d build/dentry_operations_revalidate_license || mkdir -p build/dentry_operations_revalidate_license cat confdefs.h - <<_ACEOF >build/dentry_operations_revalidate_license/dentry_operations_revalidate_license.c #include MODULE_LICENSE(""); #include #include int revalidate (struct dentry *dentry, struct nameidata *nidata) { return 0; } static const struct dentry_operations dops __attribute__ ((unused)) = { .d_revalidate = revalidate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_revalidate_license || mkdir -p build/dentry_operations_revalidate_license file=build/dentry_operations_revalidate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_revalidate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_revalidate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_revalidate_license/" >>build/Makefile fi fi test -d build/dentry_operations_const || mkdir -p build/dentry_operations_const cat confdefs.h - <<_ACEOF >build/dentry_operations_const/dentry_operations_const.c #include const struct dentry_operations test_d_op = { .d_revalidate = NULL, }; int main (void) { struct dentry d __attribute__ ((unused)); d.d_op = &test_d_op; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_const || mkdir -p build/dentry_operations_const file=build/dentry_operations_const/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_const ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_const.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_const/" >>build/Makefile fi if test -n "" ; then test -d build/dentry_operations_const_license || mkdir -p build/dentry_operations_const_license cat confdefs.h - <<_ACEOF >build/dentry_operations_const_license/dentry_operations_const_license.c #include MODULE_LICENSE(""); #include const struct dentry_operations test_d_op = { .d_revalidate = NULL, }; int main (void) { struct dentry d __attribute__ ((unused)); d.d_op = &test_d_op; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_const_license || mkdir -p build/dentry_operations_const_license file=build/dentry_operations_const_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_const_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_const_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_const_license/" >>build/Makefile fi fi test -d build/super_block_s_d_op || mkdir -p build/super_block_s_d_op cat confdefs.h - <<_ACEOF >build/super_block_s_d_op/super_block_s_d_op.c #include int main (void) { struct super_block sb __attribute__ ((unused)); sb.s_d_op = NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_d_op || mkdir -p build/super_block_s_d_op file=build/super_block_s_d_op/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_d_op ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_d_op.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_d_op/" >>build/Makefile fi if test -n "" ; then test -d build/super_block_s_d_op_license || mkdir -p build/super_block_s_d_op_license cat confdefs.h - <<_ACEOF >build/super_block_s_d_op_license/super_block_s_d_op_license.c #include MODULE_LICENSE(""); #include int main (void) { struct super_block sb __attribute__ ((unused)); sb.s_d_op = NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_d_op_license || mkdir -p build/super_block_s_d_op_license file=build/super_block_s_d_op_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_d_op_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_d_op_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_d_op_license/" >>build/Makefile fi fi test -d build/truncate_setsize || mkdir -p build/truncate_setsize cat confdefs.h - <<_ACEOF >build/truncate_setsize/truncate_setsize.c #include int main (void) { truncate_setsize(NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/truncate_setsize || mkdir -p build/truncate_setsize file=build/truncate_setsize/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/truncate_setsize ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := truncate_setsize.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += truncate_setsize/" >>build/Makefile fi if test -n "" ; then test -d build/truncate_setsize_license || mkdir -p build/truncate_setsize_license cat confdefs.h - <<_ACEOF >build/truncate_setsize_license/truncate_setsize_license.c #include MODULE_LICENSE(""); #include int main (void) { truncate_setsize(NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/truncate_setsize_license || mkdir -p build/truncate_setsize_license file=build/truncate_setsize_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/truncate_setsize_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := truncate_setsize_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += truncate_setsize_license/" >>build/Makefile fi fi test -d build/security_inode_init_security_6args || mkdir -p build/security_inode_init_security_6args cat confdefs.h - <<_ACEOF >build/security_inode_init_security_6args/security_inode_init_security_6args.c #include int main (void) { struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; char *name __attribute__ ((unused)) = NULL; void *value __attribute__ ((unused)) = NULL; size_t len __attribute__ ((unused)) = 0; security_inode_init_security(ip, dip, str, &name, &value, &len); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/security_inode_init_security_6args || mkdir -p build/security_inode_init_security_6args file=build/security_inode_init_security_6args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/security_inode_init_security_6args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := security_inode_init_security_6args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += security_inode_init_security_6args/" >>build/Makefile fi if test -n "" ; then test -d build/security_inode_init_security_6args_license || mkdir -p build/security_inode_init_security_6args_license cat confdefs.h - <<_ACEOF >build/security_inode_init_security_6args_license/security_inode_init_security_6args_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; char *name __attribute__ ((unused)) = NULL; void *value __attribute__ ((unused)) = NULL; size_t len __attribute__ ((unused)) = 0; security_inode_init_security(ip, dip, str, &name, &value, &len); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/security_inode_init_security_6args_license || mkdir -p build/security_inode_init_security_6args_license file=build/security_inode_init_security_6args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/security_inode_init_security_6args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := security_inode_init_security_6args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += security_inode_init_security_6args_license/" >>build/Makefile fi fi test -d build/security_inode_init_security || mkdir -p build/security_inode_init_security cat confdefs.h - <<_ACEOF >build/security_inode_init_security/security_inode_init_security.c #include int main (void) { struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; initxattrs func __attribute__ ((unused)) = NULL; security_inode_init_security(ip, dip, str, func, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/security_inode_init_security || mkdir -p build/security_inode_init_security file=build/security_inode_init_security/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/security_inode_init_security ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := security_inode_init_security.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += security_inode_init_security/" >>build/Makefile fi if test -n "" ; then test -d build/security_inode_init_security_license || mkdir -p build/security_inode_init_security_license cat confdefs.h - <<_ACEOF >build/security_inode_init_security_license/security_inode_init_security_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; initxattrs func __attribute__ ((unused)) = NULL; security_inode_init_security(ip, dip, str, func, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/security_inode_init_security_license || mkdir -p build/security_inode_init_security_license file=build/security_inode_init_security_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/security_inode_init_security_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := security_inode_init_security_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += security_inode_init_security_license/" >>build/Makefile fi fi test -d build/file_system_type_mount || mkdir -p build/file_system_type_mount cat confdefs.h - <<_ACEOF >build/file_system_type_mount/file_system_type_mount.c #include static struct dentry * mount(struct file_system_type *fs_type, int flags, const char *osname, void *data) { struct dentry *d = NULL; return (d); } static struct file_system_type fst __attribute__ ((unused)) = { .mount = mount, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_system_type_mount || mkdir -p build/file_system_type_mount file=build/file_system_type_mount/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_system_type_mount ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_system_type_mount.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_system_type_mount/" >>build/Makefile fi if test -n "" ; then test -d build/file_system_type_mount_license || mkdir -p build/file_system_type_mount_license cat confdefs.h - <<_ACEOF >build/file_system_type_mount_license/file_system_type_mount_license.c #include MODULE_LICENSE(""); #include static struct dentry * mount(struct file_system_type *fs_type, int flags, const char *osname, void *data) { struct dentry *d = NULL; return (d); } static struct file_system_type fst __attribute__ ((unused)) = { .mount = mount, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_system_type_mount_license || mkdir -p build/file_system_type_mount_license file=build/file_system_type_mount_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_system_type_mount_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_system_type_mount_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_system_type_mount_license/" >>build/Makefile fi fi test -d build/super_setup_bdi_name || mkdir -p build/super_setup_bdi_name cat confdefs.h - <<_ACEOF >build/super_setup_bdi_name/super_setup_bdi_name.c #include struct super_block sb; int main (void) { char *name = "bdi"; atomic_long_t zfs_bdi_seq; int error __attribute__((unused)) = super_setup_bdi_name(&sb, "%.28s-%ld", name, atomic_long_inc_return(&zfs_bdi_seq)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_setup_bdi_name || mkdir -p build/super_setup_bdi_name file=build/super_setup_bdi_name/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_setup_bdi_name ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_setup_bdi_name.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_setup_bdi_name/" >>build/Makefile fi if test -n "" ; then test -d build/super_setup_bdi_name_license || mkdir -p build/super_setup_bdi_name_license cat confdefs.h - <<_ACEOF >build/super_setup_bdi_name_license/super_setup_bdi_name_license.c #include MODULE_LICENSE(""); #include struct super_block sb; int main (void) { char *name = "bdi"; atomic_long_t zfs_bdi_seq; int error __attribute__((unused)) = super_setup_bdi_name(&sb, "%.28s-%ld", name, atomic_long_inc_return(&zfs_bdi_seq)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_setup_bdi_name_license || mkdir -p build/super_setup_bdi_name_license file=build/super_setup_bdi_name_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_setup_bdi_name_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_setup_bdi_name_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_setup_bdi_name_license/" >>build/Makefile fi fi test -d build/bdi_setup_and_register || mkdir -p build/bdi_setup_and_register cat confdefs.h - <<_ACEOF >build/bdi_setup_and_register/bdi_setup_and_register.c #include struct backing_dev_info bdi; int main (void) { char *name = "bdi"; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdi_setup_and_register || mkdir -p build/bdi_setup_and_register file=build/bdi_setup_and_register/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdi_setup_and_register ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bdi_setup_and_register.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdi_setup_and_register/" >>build/Makefile fi if test -n "" ; then test -d build/bdi_setup_and_register_license || mkdir -p build/bdi_setup_and_register_license cat confdefs.h - <<_ACEOF >build/bdi_setup_and_register_license/bdi_setup_and_register_license.c #include MODULE_LICENSE(""); #include struct backing_dev_info bdi; int main (void) { char *name = "bdi"; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdi_setup_and_register_license || mkdir -p build/bdi_setup_and_register_license file=build/bdi_setup_and_register_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdi_setup_and_register_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bdi_setup_and_register_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdi_setup_and_register_license/" >>build/Makefile fi fi test -d build/bdi_setup_and_register_3args || mkdir -p build/bdi_setup_and_register_3args cat confdefs.h - <<_ACEOF >build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.c #include struct backing_dev_info bdi; int main (void) { char *name = "bdi"; unsigned int cap = BDI_CAP_MAP_COPY; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name, cap); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdi_setup_and_register_3args || mkdir -p build/bdi_setup_and_register_3args file=build/bdi_setup_and_register_3args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdi_setup_and_register_3args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bdi_setup_and_register_3args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdi_setup_and_register_3args/" >>build/Makefile fi if test -n "" ; then test -d build/bdi_setup_and_register_3args_license || mkdir -p build/bdi_setup_and_register_3args_license cat confdefs.h - <<_ACEOF >build/bdi_setup_and_register_3args_license/bdi_setup_and_register_3args_license.c #include MODULE_LICENSE(""); #include struct backing_dev_info bdi; int main (void) { char *name = "bdi"; unsigned int cap = BDI_CAP_MAP_COPY; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name, cap); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdi_setup_and_register_3args_license || mkdir -p build/bdi_setup_and_register_3args_license file=build/bdi_setup_and_register_3args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdi_setup_and_register_3args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bdi_setup_and_register_3args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdi_setup_and_register_3args_license/" >>build/Makefile fi fi test -d build/set_nlink || mkdir -p build/set_nlink cat confdefs.h - <<_ACEOF >build/set_nlink/set_nlink.c #include int main (void) { struct inode node; unsigned int link = 0; (void) set_nlink(&node, link); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/set_nlink || mkdir -p build/set_nlink file=build/set_nlink/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/set_nlink ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := set_nlink.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += set_nlink/" >>build/Makefile fi if test -n "" ; then test -d build/set_nlink_license || mkdir -p build/set_nlink_license cat confdefs.h - <<_ACEOF >build/set_nlink_license/set_nlink_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode node; unsigned int link = 0; (void) set_nlink(&node, link); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/set_nlink_license || mkdir -p build/set_nlink_license file=build/set_nlink_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/set_nlink_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := set_nlink_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += set_nlink_license/" >>build/Makefile fi fi test -d build/sget_5args || mkdir -p build/sget_5args cat confdefs.h - <<_ACEOF >build/sget_5args/sget_5args.c #include int main (void) { struct file_system_type *type = NULL; int (*test)(struct super_block *,void *) = NULL; int (*set)(struct super_block *,void *) = NULL; int flags = 0; void *data = NULL; (void) sget(type, test, set, flags, data); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sget_5args || mkdir -p build/sget_5args file=build/sget_5args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sget_5args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sget_5args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sget_5args/" >>build/Makefile fi if test -n "" ; then test -d build/sget_5args_license || mkdir -p build/sget_5args_license cat confdefs.h - <<_ACEOF >build/sget_5args_license/sget_5args_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file_system_type *type = NULL; int (*test)(struct super_block *,void *) = NULL; int (*set)(struct super_block *,void *) = NULL; int flags = 0; void *data = NULL; (void) sget(type, test, set, flags, data); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sget_5args_license || mkdir -p build/sget_5args_license file=build/sget_5args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sget_5args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sget_5args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sget_5args_license/" >>build/Makefile fi fi test -d build/lseek_execute || mkdir -p build/lseek_execute cat confdefs.h - <<_ACEOF >build/lseek_execute/lseek_execute.c #include int main (void) { struct file *fp __attribute__ ((unused)) = NULL; struct inode *ip __attribute__ ((unused)) = NULL; loff_t offset __attribute__ ((unused)) = 0; loff_t maxsize __attribute__ ((unused)) = 0; lseek_execute(fp, ip, offset, maxsize); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lseek_execute || mkdir -p build/lseek_execute file=build/lseek_execute/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lseek_execute ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lseek_execute.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lseek_execute/" >>build/Makefile fi if test -n "" ; then test -d build/lseek_execute_license || mkdir -p build/lseek_execute_license cat confdefs.h - <<_ACEOF >build/lseek_execute_license/lseek_execute_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *fp __attribute__ ((unused)) = NULL; struct inode *ip __attribute__ ((unused)) = NULL; loff_t offset __attribute__ ((unused)) = 0; loff_t maxsize __attribute__ ((unused)) = 0; lseek_execute(fp, ip, offset, maxsize); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lseek_execute_license || mkdir -p build/lseek_execute_license file=build/lseek_execute_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lseek_execute_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lseek_execute_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lseek_execute_license/" >>build/Makefile fi fi test -d build/vfs_getattr_4args || mkdir -p build/vfs_getattr_4args cat confdefs.h - <<_ACEOF >build/vfs_getattr_4args/vfs_getattr_4args.c #include int main (void) { vfs_getattr((const struct path *)NULL, (struct kstat *)NULL, (u32)0, (unsigned int)0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_4args || mkdir -p build/vfs_getattr_4args file=build/vfs_getattr_4args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_4args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_4args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_4args/" >>build/Makefile fi if test -n "" ; then test -d build/vfs_getattr_4args_license || mkdir -p build/vfs_getattr_4args_license cat confdefs.h - <<_ACEOF >build/vfs_getattr_4args_license/vfs_getattr_4args_license.c #include MODULE_LICENSE(""); #include int main (void) { vfs_getattr((const struct path *)NULL, (struct kstat *)NULL, (u32)0, (unsigned int)0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_4args_license || mkdir -p build/vfs_getattr_4args_license file=build/vfs_getattr_4args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_4args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_4args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_4args_license/" >>build/Makefile fi fi test -d build/vfs_getattr_2args || mkdir -p build/vfs_getattr_2args cat confdefs.h - <<_ACEOF >build/vfs_getattr_2args/vfs_getattr_2args.c #include int main (void) { vfs_getattr((struct path *) NULL, (struct kstat *)NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_2args || mkdir -p build/vfs_getattr_2args file=build/vfs_getattr_2args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_2args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_2args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_2args/" >>build/Makefile fi if test -n "" ; then test -d build/vfs_getattr_2args_license || mkdir -p build/vfs_getattr_2args_license cat confdefs.h - <<_ACEOF >build/vfs_getattr_2args_license/vfs_getattr_2args_license.c #include MODULE_LICENSE(""); #include int main (void) { vfs_getattr((struct path *) NULL, (struct kstat *)NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_2args_license || mkdir -p build/vfs_getattr_2args_license file=build/vfs_getattr_2args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_2args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_2args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_2args_license/" >>build/Makefile fi fi test -d build/vfs_getattr_3args || mkdir -p build/vfs_getattr_3args cat confdefs.h - <<_ACEOF >build/vfs_getattr_3args/vfs_getattr_3args.c #include int main (void) { vfs_getattr((struct vfsmount *)NULL, (struct dentry *)NULL, (struct kstat *)NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_3args || mkdir -p build/vfs_getattr_3args file=build/vfs_getattr_3args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_3args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_3args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_3args/" >>build/Makefile fi if test -n "" ; then test -d build/vfs_getattr_3args_license || mkdir -p build/vfs_getattr_3args_license cat confdefs.h - <<_ACEOF >build/vfs_getattr_3args_license/vfs_getattr_3args_license.c #include MODULE_LICENSE(""); #include int main (void) { vfs_getattr((struct vfsmount *)NULL, (struct dentry *)NULL, (struct kstat *)NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_3args_license || mkdir -p build/vfs_getattr_3args_license file=build/vfs_getattr_3args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_3args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_3args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_3args_license/" >>build/Makefile fi fi test -d build/vfs_fsync_2args || mkdir -p build/vfs_fsync_2args cat confdefs.h - <<_ACEOF >build/vfs_fsync_2args/vfs_fsync_2args.c #include int main (void) { vfs_fsync(NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_fsync_2args || mkdir -p build/vfs_fsync_2args file=build/vfs_fsync_2args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_fsync_2args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_fsync_2args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_fsync_2args/" >>build/Makefile fi if test -n "" ; then test -d build/vfs_fsync_2args_license || mkdir -p build/vfs_fsync_2args_license cat confdefs.h - <<_ACEOF >build/vfs_fsync_2args_license/vfs_fsync_2args_license.c #include MODULE_LICENSE(""); #include int main (void) { vfs_fsync(NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_fsync_2args_license || mkdir -p build/vfs_fsync_2args_license file=build/vfs_fsync_2args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_fsync_2args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_fsync_2args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_fsync_2args_license/" >>build/Makefile fi fi test -d build/file_operations_iterate_shared || mkdir -p build/file_operations_iterate_shared cat confdefs.h - <<_ACEOF >build/file_operations_iterate_shared/file_operations_iterate_shared.c #include int iterate(struct file *filp, struct dir_context * context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate_shared = iterate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_iterate_shared || mkdir -p build/file_operations_iterate_shared file=build/file_operations_iterate_shared/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_iterate_shared ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_iterate_shared.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_iterate_shared/" >>build/Makefile fi if test -n "" ; then test -d build/file_operations_iterate_shared_license || mkdir -p build/file_operations_iterate_shared_license cat confdefs.h - <<_ACEOF >build/file_operations_iterate_shared_license/file_operations_iterate_shared_license.c #include MODULE_LICENSE(""); #include int iterate(struct file *filp, struct dir_context * context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate_shared = iterate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_iterate_shared_license || mkdir -p build/file_operations_iterate_shared_license file=build/file_operations_iterate_shared_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_iterate_shared_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_iterate_shared_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_iterate_shared_license/" >>build/Makefile fi fi test -d build/file_operations_iterate || mkdir -p build/file_operations_iterate cat confdefs.h - <<_ACEOF >build/file_operations_iterate/file_operations_iterate.c #include int iterate(struct file *filp, struct dir_context *context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate = iterate, }; #if defined(FMODE_KABI_ITERATE) #error "RHEL 7.5, FMODE_KABI_ITERATE interface" #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_iterate || mkdir -p build/file_operations_iterate file=build/file_operations_iterate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_iterate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_iterate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_iterate/" >>build/Makefile fi if test -n "" ; then test -d build/file_operations_iterate_license || mkdir -p build/file_operations_iterate_license cat confdefs.h - <<_ACEOF >build/file_operations_iterate_license/file_operations_iterate_license.c #include MODULE_LICENSE(""); #include int iterate(struct file *filp, struct dir_context *context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate = iterate, }; #if defined(FMODE_KABI_ITERATE) #error "RHEL 7.5, FMODE_KABI_ITERATE interface" #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_iterate_license || mkdir -p build/file_operations_iterate_license file=build/file_operations_iterate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_iterate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_iterate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_iterate_license/" >>build/Makefile fi fi test -d build/file_operations_readdir || mkdir -p build/file_operations_readdir cat confdefs.h - <<_ACEOF >build/file_operations_readdir/file_operations_readdir.c #include int readdir(struct file *filp, void *entry, filldir_t func) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .readdir = readdir, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_readdir || mkdir -p build/file_operations_readdir file=build/file_operations_readdir/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_readdir ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_readdir.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_readdir/" >>build/Makefile fi if test -n "" ; then test -d build/file_operations_readdir_license || mkdir -p build/file_operations_readdir_license cat confdefs.h - <<_ACEOF >build/file_operations_readdir_license/file_operations_readdir_license.c #include MODULE_LICENSE(""); #include int readdir(struct file *filp, void *entry, filldir_t func) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .readdir = readdir, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_readdir_license || mkdir -p build/file_operations_readdir_license file=build/file_operations_readdir_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_readdir_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_readdir_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_readdir_license/" >>build/Makefile fi fi test -d build/direct_io_iter || mkdir -p build/direct_io_iter cat confdefs.h - <<_ACEOF >build/direct_io_iter/direct_io_iter.c #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter || mkdir -p build/direct_io_iter file=build/direct_io_iter/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter/" >>build/Makefile fi if test -n "" ; then test -d build/direct_io_iter_license || mkdir -p build/direct_io_iter_license cat confdefs.h - <<_ACEOF >build/direct_io_iter_license/direct_io_iter_license.c #include MODULE_LICENSE(""); #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_license || mkdir -p build/direct_io_iter_license file=build/direct_io_iter_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_license/" >>build/Makefile fi fi test -d build/direct_io_iter_offset || mkdir -p build/direct_io_iter_offset cat confdefs.h - <<_ACEOF >build/direct_io_iter_offset/direct_io_iter_offset.c #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_offset || mkdir -p build/direct_io_iter_offset file=build/direct_io_iter_offset/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_offset ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_offset.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_offset/" >>build/Makefile fi if test -n "" ; then test -d build/direct_io_iter_offset_license || mkdir -p build/direct_io_iter_offset_license cat confdefs.h - <<_ACEOF >build/direct_io_iter_offset_license/direct_io_iter_offset_license.c #include MODULE_LICENSE(""); #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_offset_license || mkdir -p build/direct_io_iter_offset_license file=build/direct_io_iter_offset_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_offset_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_offset_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_offset_license/" >>build/Makefile fi fi test -d build/direct_io_iter_rw_offset || mkdir -p build/direct_io_iter_rw_offset cat confdefs.h - <<_ACEOF >build/direct_io_iter_rw_offset/direct_io_iter_rw_offset.c #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_rw_offset || mkdir -p build/direct_io_iter_rw_offset file=build/direct_io_iter_rw_offset/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_rw_offset ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_rw_offset.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_rw_offset/" >>build/Makefile fi if test -n "" ; then test -d build/direct_io_iter_rw_offset_license || mkdir -p build/direct_io_iter_rw_offset_license cat confdefs.h - <<_ACEOF >build/direct_io_iter_rw_offset_license/direct_io_iter_rw_offset_license.c #include MODULE_LICENSE(""); #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_rw_offset_license || mkdir -p build/direct_io_iter_rw_offset_license file=build/direct_io_iter_rw_offset_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_rw_offset_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_rw_offset_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_rw_offset_license/" >>build/Makefile fi fi test -d build/direct_io_iovec || mkdir -p build/direct_io_iovec cat confdefs.h - <<_ACEOF >build/direct_io_iovec/direct_io_iovec.c #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, const struct iovec *iov, loff_t offset, unsigned long nr_segs) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iovec || mkdir -p build/direct_io_iovec file=build/direct_io_iovec/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iovec ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iovec.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iovec/" >>build/Makefile fi if test -n "" ; then test -d build/direct_io_iovec_license || mkdir -p build/direct_io_iovec_license cat confdefs.h - <<_ACEOF >build/direct_io_iovec_license/direct_io_iovec_license.c #include MODULE_LICENSE(""); #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, const struct iovec *iov, loff_t offset, unsigned long nr_segs) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iovec_license || mkdir -p build/direct_io_iovec_license file=build/direct_io_iovec_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iovec_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iovec_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iovec_license/" >>build/Makefile fi fi test -d build/file_operations_rw || mkdir -p build/file_operations_rw cat confdefs.h - <<_ACEOF >build/file_operations_rw/file_operations_rw.c #include ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to) { return 0; } ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .read_iter = test_read, .write_iter = test_write, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_rw || mkdir -p build/file_operations_rw file=build/file_operations_rw/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_rw ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_rw.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_rw/" >>build/Makefile fi if test -n "" ; then test -d build/file_operations_rw_license || mkdir -p build/file_operations_rw_license cat confdefs.h - <<_ACEOF >build/file_operations_rw_license/file_operations_rw_license.c #include MODULE_LICENSE(""); #include ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to) { return 0; } ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .read_iter = test_read, .write_iter = test_write, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_rw_license || mkdir -p build/file_operations_rw_license file=build/file_operations_rw_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_rw_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_rw_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_rw_license/" >>build/Makefile fi fi test -d build/new_sync_rw || mkdir -p build/new_sync_rw cat confdefs.h - <<_ACEOF >build/new_sync_rw/new_sync_rw.c #include int main (void) { ssize_t ret __attribute__ ((unused)); struct file *filp = NULL; char __user *rbuf = NULL; const char __user *wbuf = NULL; size_t len = 0; loff_t ppos; ret = new_sync_read(filp, rbuf, len, &ppos); ret = new_sync_write(filp, wbuf, len, &ppos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/new_sync_rw || mkdir -p build/new_sync_rw file=build/new_sync_rw/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/new_sync_rw ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := new_sync_rw.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += new_sync_rw/" >>build/Makefile fi if test -n "" ; then test -d build/new_sync_rw_license || mkdir -p build/new_sync_rw_license cat confdefs.h - <<_ACEOF >build/new_sync_rw_license/new_sync_rw_license.c #include MODULE_LICENSE(""); #include int main (void) { ssize_t ret __attribute__ ((unused)); struct file *filp = NULL; char __user *rbuf = NULL; const char __user *wbuf = NULL; size_t len = 0; loff_t ppos; ret = new_sync_read(filp, rbuf, len, &ppos); ret = new_sync_write(filp, wbuf, len, &ppos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/new_sync_rw_license || mkdir -p build/new_sync_rw_license file=build/new_sync_rw_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/new_sync_rw_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := new_sync_rw_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += new_sync_rw_license/" >>build/Makefile fi fi test -d build/generic_write_checks || mkdir -p build/generic_write_checks cat confdefs.h - <<_ACEOF >build/generic_write_checks/generic_write_checks.c #include int main (void) { struct kiocb *iocb = NULL; struct iov_iter *iov = NULL; generic_write_checks(iocb, iov); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_write_checks || mkdir -p build/generic_write_checks file=build/generic_write_checks/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_write_checks ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_write_checks.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_write_checks/" >>build/Makefile fi if test -n "" ; then test -d build/generic_write_checks_license || mkdir -p build/generic_write_checks_license cat confdefs.h - <<_ACEOF >build/generic_write_checks_license/generic_write_checks_license.c #include MODULE_LICENSE(""); #include int main (void) { struct kiocb *iocb = NULL; struct iov_iter *iov = NULL; generic_write_checks(iocb, iov); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_write_checks_license || mkdir -p build/generic_write_checks_license file=build/generic_write_checks_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_write_checks_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_write_checks_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_write_checks_license/" >>build/Makefile fi fi test -d build/kmap_atomic || mkdir -p build/kmap_atomic cat confdefs.h - <<_ACEOF >build/kmap_atomic/kmap_atomic.c #include int main (void) { struct page page; kmap_atomic(&page); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmap_atomic || mkdir -p build/kmap_atomic file=build/kmap_atomic/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmap_atomic ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmap_atomic.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmap_atomic/" >>build/Makefile fi if test -n "" ; then test -d build/kmap_atomic_license || mkdir -p build/kmap_atomic_license cat confdefs.h - <<_ACEOF >build/kmap_atomic_license/kmap_atomic_license.c #include MODULE_LICENSE(""); #include int main (void) { struct page page; kmap_atomic(&page); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmap_atomic_license || mkdir -p build/kmap_atomic_license file=build/kmap_atomic_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmap_atomic_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmap_atomic_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmap_atomic_license/" >>build/Makefile fi fi test -d build/follow_down_one || mkdir -p build/follow_down_one cat confdefs.h - <<_ACEOF >build/follow_down_one/follow_down_one.c #include int main (void) { struct path *p = NULL; follow_down_one(p); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/follow_down_one || mkdir -p build/follow_down_one file=build/follow_down_one/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/follow_down_one ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := follow_down_one.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += follow_down_one/" >>build/Makefile fi if test -n "" ; then test -d build/follow_down_one_license || mkdir -p build/follow_down_one_license cat confdefs.h - <<_ACEOF >build/follow_down_one_license/follow_down_one_license.c #include MODULE_LICENSE(""); #include int main (void) { struct path *p = NULL; follow_down_one(p); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/follow_down_one_license || mkdir -p build/follow_down_one_license file=build/follow_down_one_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/follow_down_one_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := follow_down_one_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += follow_down_one_license/" >>build/Makefile fi fi test -d build/make_request_fn_int || mkdir -p build/make_request_fn_int cat confdefs.h - <<_ACEOF >build/make_request_fn_int/make_request_fn_int.c #include int make_request(struct request_queue *q, struct bio *bio) { return (0); } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_int || mkdir -p build/make_request_fn_int file=build/make_request_fn_int/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_int ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_int.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_int/" >>build/Makefile fi if test -n "" ; then test -d build/make_request_fn_int_license || mkdir -p build/make_request_fn_int_license cat confdefs.h - <<_ACEOF >build/make_request_fn_int_license/make_request_fn_int_license.c #include MODULE_LICENSE(""); #include int make_request(struct request_queue *q, struct bio *bio) { return (0); } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_int_license || mkdir -p build/make_request_fn_int_license file=build/make_request_fn_int_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_int_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_int_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_int_license/" >>build/Makefile fi fi test -d build/make_request_fn_void || mkdir -p build/make_request_fn_void cat confdefs.h - <<_ACEOF >build/make_request_fn_void/make_request_fn_void.c #include void make_request(struct request_queue *q, struct bio *bio) { return; } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_void || mkdir -p build/make_request_fn_void file=build/make_request_fn_void/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_void ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_void.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_void/" >>build/Makefile fi if test -n "" ; then test -d build/make_request_fn_void_license || mkdir -p build/make_request_fn_void_license cat confdefs.h - <<_ACEOF >build/make_request_fn_void_license/make_request_fn_void_license.c #include MODULE_LICENSE(""); #include void make_request(struct request_queue *q, struct bio *bio) { return; } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_void_license || mkdir -p build/make_request_fn_void_license file=build/make_request_fn_void_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_void_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_void_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_void_license/" >>build/Makefile fi fi test -d build/make_request_fn_blk_qc_t || mkdir -p build/make_request_fn_blk_qc_t cat confdefs.h - <<_ACEOF >build/make_request_fn_blk_qc_t/make_request_fn_blk_qc_t.c #include blk_qc_t make_request(struct request_queue *q, struct bio *bio) { return (BLK_QC_T_NONE); } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_blk_qc_t || mkdir -p build/make_request_fn_blk_qc_t file=build/make_request_fn_blk_qc_t/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_blk_qc_t ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_blk_qc_t.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_blk_qc_t/" >>build/Makefile fi if test -n "" ; then test -d build/make_request_fn_blk_qc_t_license || mkdir -p build/make_request_fn_blk_qc_t_license cat confdefs.h - <<_ACEOF >build/make_request_fn_blk_qc_t_license/make_request_fn_blk_qc_t_license.c #include MODULE_LICENSE(""); #include blk_qc_t make_request(struct request_queue *q, struct bio *bio) { return (BLK_QC_T_NONE); } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_blk_qc_t_license || mkdir -p build/make_request_fn_blk_qc_t_license file=build/make_request_fn_blk_qc_t_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_blk_qc_t_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_blk_qc_t_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_blk_qc_t_license/" >>build/Makefile fi fi test -d build/generic_acct_3args || mkdir -p build/generic_acct_3args cat confdefs.h - <<_ACEOF >build/generic_acct_3args/generic_acct_3args.c #include void (*generic_start_io_acct_f)(int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(int, struct hd_struct *, unsigned long) = &generic_end_io_acct; int main (void) { generic_start_io_acct(0, 0, NULL); generic_end_io_acct(0, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_acct_3args || mkdir -p build/generic_acct_3args file=build/generic_acct_3args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_acct_3args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_acct_3args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_acct_3args/" >>build/Makefile fi if test -n "" ; then test -d build/generic_acct_3args_license || mkdir -p build/generic_acct_3args_license cat confdefs.h - <<_ACEOF >build/generic_acct_3args_license/generic_acct_3args_license.c #include MODULE_LICENSE(""); #include void (*generic_start_io_acct_f)(int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(int, struct hd_struct *, unsigned long) = &generic_end_io_acct; int main (void) { generic_start_io_acct(0, 0, NULL); generic_end_io_acct(0, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_acct_3args_license || mkdir -p build/generic_acct_3args_license file=build/generic_acct_3args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_acct_3args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_acct_3args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_acct_3args_license/" >>build/Makefile fi fi test -d build/generic_acct_4args || mkdir -p build/generic_acct_4args cat confdefs.h - <<_ACEOF >build/generic_acct_4args/generic_acct_4args.c #include void (*generic_start_io_acct_f)(struct request_queue *, int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(struct request_queue *, int, struct hd_struct *, unsigned long) = &generic_end_io_acct; int main (void) { generic_start_io_acct(NULL, 0, 0, NULL); generic_end_io_acct(NULL, 0, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_acct_4args || mkdir -p build/generic_acct_4args file=build/generic_acct_4args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_acct_4args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_acct_4args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_acct_4args/" >>build/Makefile fi if test -n "" ; then test -d build/generic_acct_4args_license || mkdir -p build/generic_acct_4args_license cat confdefs.h - <<_ACEOF >build/generic_acct_4args_license/generic_acct_4args_license.c #include MODULE_LICENSE(""); #include void (*generic_start_io_acct_f)(struct request_queue *, int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(struct request_queue *, int, struct hd_struct *, unsigned long) = &generic_end_io_acct; int main (void) { generic_start_io_acct(NULL, 0, 0, NULL); generic_end_io_acct(NULL, 0, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_acct_4args_license || mkdir -p build/generic_acct_4args_license file=build/generic_acct_4args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_acct_4args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_acct_4args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_acct_4args_license/" >>build/Makefile fi fi test -d build/kernel_fpu || mkdir -p build/kernel_fpu cat confdefs.h - <<_ACEOF >build/kernel_fpu/kernel_fpu.c #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif int main (void) { kernel_fpu_begin(); kernel_fpu_end(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_fpu || mkdir -p build/kernel_fpu file=build/kernel_fpu/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_fpu ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_fpu.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_fpu/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/kernel_fpu_license || mkdir -p build/kernel_fpu_license cat confdefs.h - <<_ACEOF >build/kernel_fpu_license/kernel_fpu_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif int main (void) { kernel_fpu_begin(); kernel_fpu_end(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_fpu_license || mkdir -p build/kernel_fpu_license file=build/kernel_fpu_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_fpu_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_fpu_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_fpu_license/" >>build/Makefile fi fi test -d build/__kernel_fpu || mkdir -p build/__kernel_fpu cat confdefs.h - <<_ACEOF >build/__kernel_fpu/__kernel_fpu.c #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif int main (void) { __kernel_fpu_begin(); __kernel_fpu_end(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/__kernel_fpu || mkdir -p build/__kernel_fpu file=build/__kernel_fpu/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/__kernel_fpu ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := __kernel_fpu.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += __kernel_fpu/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/__kernel_fpu_license || mkdir -p build/__kernel_fpu_license cat confdefs.h - <<_ACEOF >build/__kernel_fpu_license/__kernel_fpu_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif int main (void) { __kernel_fpu_begin(); __kernel_fpu_end(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/__kernel_fpu_license || mkdir -p build/__kernel_fpu_license file=build/__kernel_fpu_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/__kernel_fpu_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := __kernel_fpu_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += __kernel_fpu_license/" >>build/Makefile fi fi test -d build/fpu_internal || mkdir -p build/fpu_internal cat confdefs.h - <<_ACEOF >build/fpu_internal/fpu_internal.c #if defined(__x86_64) || defined(__x86_64__) || \ defined(__i386) || defined(__i386__) #if !defined(__x86) #define __x86 #endif #endif #if !defined(__x86) #error Unsupported architecture #endif #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #include #else #include #include #endif #if !defined(XSTATE_XSAVE) #error XSTATE_XSAVE not defined #endif #if !defined(XSTATE_XRESTORE) #error XSTATE_XRESTORE not defined #endif int main (void) { struct fpu *fpu = ¤t->thread.fpu; union fpregs_state *st = &fpu->state; struct fregs_state *fr __attribute__ ((unused)) = &st->fsave; struct fxregs_state *fxr __attribute__ ((unused)) = &st->fxsave; struct xregs_state *xr __attribute__ ((unused)) = &st->xsave; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fpu_internal || mkdir -p build/fpu_internal file=build/fpu_internal/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fpu_internal ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fpu_internal.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fpu_internal/" >>build/Makefile fi if test -n "" ; then test -d build/fpu_internal_license || mkdir -p build/fpu_internal_license cat confdefs.h - <<_ACEOF >build/fpu_internal_license/fpu_internal_license.c #include MODULE_LICENSE(""); #if defined(__x86_64) || defined(__x86_64__) || \ defined(__i386) || defined(__i386__) #if !defined(__x86) #define __x86 #endif #endif #if !defined(__x86) #error Unsupported architecture #endif #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #include #else #include #include #endif #if !defined(XSTATE_XSAVE) #error XSTATE_XSAVE not defined #endif #if !defined(XSTATE_XRESTORE) #error XSTATE_XRESTORE not defined #endif int main (void) { struct fpu *fpu = ¤t->thread.fpu; union fpregs_state *st = &fpu->state; struct fregs_state *fr __attribute__ ((unused)) = &st->fsave; struct fxregs_state *fxr __attribute__ ((unused)) = &st->fxsave; struct xregs_state *xr __attribute__ ((unused)) = &st->xsave; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fpu_internal_license || mkdir -p build/fpu_internal_license file=build/fpu_internal_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fpu_internal_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fpu_internal_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fpu_internal_license/" >>build/Makefile fi fi test -d build/type_fmode_t || mkdir -p build/type_fmode_t cat confdefs.h - <<_ACEOF >build/type_fmode_t/type_fmode_t.c #include int main (void) { fmode_t *ptr __attribute__ ((unused)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/type_fmode_t || mkdir -p build/type_fmode_t file=build/type_fmode_t/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/type_fmode_t ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := type_fmode_t.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += type_fmode_t/" >>build/Makefile fi if test -n "" ; then test -d build/type_fmode_t_license || mkdir -p build/type_fmode_t_license cat confdefs.h - <<_ACEOF >build/type_fmode_t_license/type_fmode_t_license.c #include MODULE_LICENSE(""); #include int main (void) { fmode_t *ptr __attribute__ ((unused)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/type_fmode_t_license || mkdir -p build/type_fmode_t_license file=build/type_fmode_t_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/type_fmode_t_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := type_fmode_t_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += type_fmode_t_license/" >>build/Makefile fi fi test -d build/kuidgid_t_init || mkdir -p build/kuidgid_t_init cat confdefs.h - <<_ACEOF >build/kuidgid_t_init/kuidgid_t_init.c #include int main (void) { kuid_t userid __attribute__ ((unused)) = KUIDT_INIT(0); kgid_t groupid __attribute__ ((unused)) = KGIDT_INIT(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuidgid_t_init || mkdir -p build/kuidgid_t_init file=build/kuidgid_t_init/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuidgid_t_init ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuidgid_t_init.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuidgid_t_init/" >>build/Makefile fi if test -n "" ; then test -d build/kuidgid_t_init_license || mkdir -p build/kuidgid_t_init_license cat confdefs.h - <<_ACEOF >build/kuidgid_t_init_license/kuidgid_t_init_license.c #include MODULE_LICENSE(""); #include int main (void) { kuid_t userid __attribute__ ((unused)) = KUIDT_INIT(0); kgid_t groupid __attribute__ ((unused)) = KGIDT_INIT(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuidgid_t_init_license || mkdir -p build/kuidgid_t_init_license file=build/kuidgid_t_init_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuidgid_t_init_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuidgid_t_init_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuidgid_t_init_license/" >>build/Makefile fi fi test -d build/kuidgid_t || mkdir -p build/kuidgid_t cat confdefs.h - <<_ACEOF >build/kuidgid_t/kuidgid_t.c #include int main (void) { kuid_t userid __attribute__ ((unused)) = 0; kgid_t groupid __attribute__ ((unused)) = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuidgid_t || mkdir -p build/kuidgid_t file=build/kuidgid_t/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuidgid_t ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuidgid_t.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuidgid_t/" >>build/Makefile fi if test -n "" ; then test -d build/kuidgid_t_license || mkdir -p build/kuidgid_t_license cat confdefs.h - <<_ACEOF >build/kuidgid_t_license/kuidgid_t_license.c #include MODULE_LICENSE(""); #include int main (void) { kuid_t userid __attribute__ ((unused)) = 0; kgid_t groupid __attribute__ ((unused)) = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuidgid_t_license || mkdir -p build/kuidgid_t_license file=build/kuidgid_t_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuidgid_t_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuidgid_t_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuidgid_t_license/" >>build/Makefile fi fi test -d build/i_uid_read || mkdir -p build/i_uid_read cat confdefs.h - <<_ACEOF >build/i_uid_read/i_uid_read.c #include int main (void) { struct inode *ip = NULL; (void) i_uid_read(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/i_uid_read || mkdir -p build/i_uid_read file=build/i_uid_read/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/i_uid_read ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := i_uid_read.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += i_uid_read/" >>build/Makefile fi if test -n "" ; then test -d build/i_uid_read_license || mkdir -p build/i_uid_read_license cat confdefs.h - <<_ACEOF >build/i_uid_read_license/i_uid_read_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip = NULL; (void) i_uid_read(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/i_uid_read_license || mkdir -p build/i_uid_read_license file=build/i_uid_read_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/i_uid_read_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := i_uid_read_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += i_uid_read_license/" >>build/Makefile fi fi test -d build/module_param_call || mkdir -p build/module_param_call cat confdefs.h - <<_ACEOF >build/module_param_call/module_param_call.c #include #include int param_get(char *b, const struct kernel_param *kp) { return (0); } int param_set(const char *b, const struct kernel_param *kp) { return (0); } module_param_call(p, param_set, param_get, NULL, 0644); int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/module_param_call || mkdir -p build/module_param_call file=build/module_param_call/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/module_param_call ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := module_param_call.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += module_param_call/" >>build/Makefile fi if test -n "" ; then test -d build/module_param_call_license || mkdir -p build/module_param_call_license cat confdefs.h - <<_ACEOF >build/module_param_call_license/module_param_call_license.c #include MODULE_LICENSE(""); #include #include int param_get(char *b, const struct kernel_param *kp) { return (0); } int param_set(const char *b, const struct kernel_param *kp) { return (0); } module_param_call(p, param_set, param_get, NULL, 0644); int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/module_param_call_license || mkdir -p build/module_param_call_license file=build/module_param_call_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/module_param_call_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := module_param_call_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += module_param_call_license/" >>build/Makefile fi fi test -d build/inode_operations_rename || mkdir -p build/inode_operations_rename cat confdefs.h - <<_ACEOF >build/inode_operations_rename/inode_operations_rename.c #include int rename_fn(struct inode *sip, struct dentry *sdp, struct inode *tip, struct dentry *tdp, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .rename = rename_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_rename || mkdir -p build/inode_operations_rename file=build/inode_operations_rename/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_rename ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_rename.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_rename/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_rename_license || mkdir -p build/inode_operations_rename_license cat confdefs.h - <<_ACEOF >build/inode_operations_rename_license/inode_operations_rename_license.c #include MODULE_LICENSE(""); #include int rename_fn(struct inode *sip, struct dentry *sdp, struct inode *tip, struct dentry *tdp, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .rename = rename_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_rename_license || mkdir -p build/inode_operations_rename_license file=build/inode_operations_rename_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_rename_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_rename_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_rename_license/" >>build/Makefile fi fi test -d build/current_time || mkdir -p build/current_time cat confdefs.h - <<_ACEOF >build/current_time/current_time.c #include int main (void) { struct inode ip __attribute__ ((unused)); ip.i_atime = current_time(&ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_time || mkdir -p build/current_time file=build/current_time/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_time ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_time.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_time/" >>build/Makefile fi if test -n "" ; then test -d build/current_time_license || mkdir -p build/current_time_license cat confdefs.h - <<_ACEOF >build/current_time_license/current_time_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode ip __attribute__ ((unused)); ip.i_atime = current_time(&ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_time_license || mkdir -p build/current_time_license file=build/current_time_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_time_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_time_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_time_license/" >>build/Makefile fi fi test -d build/ns_capable || mkdir -p build/ns_capable cat confdefs.h - <<_ACEOF >build/ns_capable/ns_capable.c #include int main (void) { ns_capable((struct user_namespace *)NULL, CAP_SYS_ADMIN); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ns_capable || mkdir -p build/ns_capable file=build/ns_capable/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ns_capable ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ns_capable.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ns_capable/" >>build/Makefile fi if test -n "" ; then test -d build/ns_capable_license || mkdir -p build/ns_capable_license cat confdefs.h - <<_ACEOF >build/ns_capable_license/ns_capable_license.c #include MODULE_LICENSE(""); #include int main (void) { ns_capable((struct user_namespace *)NULL, CAP_SYS_ADMIN); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ns_capable_license || mkdir -p build/ns_capable_license file=build/ns_capable_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ns_capable_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ns_capable_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ns_capable_license/" >>build/Makefile fi fi test -d build/cred_user_ns || mkdir -p build/cred_user_ns cat confdefs.h - <<_ACEOF >build/cred_user_ns/cred_user_ns.c #include int main (void) { struct cred cr; cr.user_ns = (struct user_namespace *)NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/cred_user_ns || mkdir -p build/cred_user_ns file=build/cred_user_ns/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/cred_user_ns ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := cred_user_ns.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += cred_user_ns/" >>build/Makefile fi if test -n "" ; then test -d build/cred_user_ns_license || mkdir -p build/cred_user_ns_license cat confdefs.h - <<_ACEOF >build/cred_user_ns_license/cred_user_ns_license.c #include MODULE_LICENSE(""); #include int main (void) { struct cred cr; cr.user_ns = (struct user_namespace *)NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/cred_user_ns_license || mkdir -p build/cred_user_ns_license file=build/cred_user_ns_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/cred_user_ns_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := cred_user_ns_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += cred_user_ns_license/" >>build/Makefile fi fi test -d build/kuid_has_mapping || mkdir -p build/kuid_has_mapping cat confdefs.h - <<_ACEOF >build/kuid_has_mapping/kuid_has_mapping.c #include int main (void) { kuid_has_mapping((struct user_namespace *)NULL, KUIDT_INIT(0)); kgid_has_mapping((struct user_namespace *)NULL, KGIDT_INIT(0)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuid_has_mapping || mkdir -p build/kuid_has_mapping file=build/kuid_has_mapping/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuid_has_mapping ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuid_has_mapping.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuid_has_mapping/" >>build/Makefile fi if test -n "" ; then test -d build/kuid_has_mapping_license || mkdir -p build/kuid_has_mapping_license cat confdefs.h - <<_ACEOF >build/kuid_has_mapping_license/kuid_has_mapping_license.c #include MODULE_LICENSE(""); #include int main (void) { kuid_has_mapping((struct user_namespace *)NULL, KUIDT_INIT(0)); kgid_has_mapping((struct user_namespace *)NULL, KGIDT_INIT(0)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuid_has_mapping_license || mkdir -p build/kuid_has_mapping_license file=build/kuid_has_mapping_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuid_has_mapping_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuid_has_mapping_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuid_has_mapping_license/" >>build/Makefile fi fi test -d build/in_compat_syscall || mkdir -p build/in_compat_syscall cat confdefs.h - <<_ACEOF >build/in_compat_syscall/in_compat_syscall.c #include int main (void) { in_compat_syscall(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/in_compat_syscall || mkdir -p build/in_compat_syscall file=build/in_compat_syscall/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/in_compat_syscall ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := in_compat_syscall.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += in_compat_syscall/" >>build/Makefile fi if test -n "" ; then test -d build/in_compat_syscall_license || mkdir -p build/in_compat_syscall_license cat confdefs.h - <<_ACEOF >build/in_compat_syscall_license/in_compat_syscall_license.c #include MODULE_LICENSE(""); #include int main (void) { in_compat_syscall(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/in_compat_syscall_license || mkdir -p build/in_compat_syscall_license file=build/in_compat_syscall_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/in_compat_syscall_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := in_compat_syscall_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += in_compat_syscall_license/" >>build/Makefile fi fi test -d build/ktime_get_coarse_real_ts64 || mkdir -p build/ktime_get_coarse_real_ts64 cat confdefs.h - <<_ACEOF >build/ktime_get_coarse_real_ts64/ktime_get_coarse_real_ts64.c #include int main (void) { struct timespec64 ts; ktime_get_coarse_real_ts64(&ts); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ktime_get_coarse_real_ts64 || mkdir -p build/ktime_get_coarse_real_ts64 file=build/ktime_get_coarse_real_ts64/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ktime_get_coarse_real_ts64 ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ktime_get_coarse_real_ts64.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ktime_get_coarse_real_ts64/" >>build/Makefile fi if test -n "" ; then test -d build/ktime_get_coarse_real_ts64_license || mkdir -p build/ktime_get_coarse_real_ts64_license cat confdefs.h - <<_ACEOF >build/ktime_get_coarse_real_ts64_license/ktime_get_coarse_real_ts64_license.c #include MODULE_LICENSE(""); #include int main (void) { struct timespec64 ts; ktime_get_coarse_real_ts64(&ts); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ktime_get_coarse_real_ts64_license || mkdir -p build/ktime_get_coarse_real_ts64_license file=build/ktime_get_coarse_real_ts64_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ktime_get_coarse_real_ts64_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ktime_get_coarse_real_ts64_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ktime_get_coarse_real_ts64_license/" >>build/Makefile fi fi test -d build/totalram_pages || mkdir -p build/totalram_pages cat confdefs.h - <<_ACEOF >build/totalram_pages/totalram_pages.c #include int main (void) { unsigned long pages __attribute__ ((unused)); pages = totalram_pages(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/totalram_pages || mkdir -p build/totalram_pages file=build/totalram_pages/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/totalram_pages ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := totalram_pages.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += totalram_pages/" >>build/Makefile fi if test -n "" ; then test -d build/totalram_pages_license || mkdir -p build/totalram_pages_license cat confdefs.h - <<_ACEOF >build/totalram_pages_license/totalram_pages_license.c #include MODULE_LICENSE(""); #include int main (void) { unsigned long pages __attribute__ ((unused)); pages = totalram_pages(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/totalram_pages_license || mkdir -p build/totalram_pages_license file=build/totalram_pages_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/totalram_pages_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := totalram_pages_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += totalram_pages_license/" >>build/Makefile fi fi test -d build/totalhigh_pages || mkdir -p build/totalhigh_pages cat confdefs.h - <<_ACEOF >build/totalhigh_pages/totalhigh_pages.c #include int main (void) { unsigned long pages __attribute__ ((unused)); pages = totalhigh_pages(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/totalhigh_pages || mkdir -p build/totalhigh_pages file=build/totalhigh_pages/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/totalhigh_pages ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := totalhigh_pages.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += totalhigh_pages/" >>build/Makefile fi if test -n "" ; then test -d build/totalhigh_pages_license || mkdir -p build/totalhigh_pages_license cat confdefs.h - <<_ACEOF >build/totalhigh_pages_license/totalhigh_pages_license.c #include MODULE_LICENSE(""); #include int main (void) { unsigned long pages __attribute__ ((unused)); pages = totalhigh_pages(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/totalhigh_pages_license || mkdir -p build/totalhigh_pages_license file=build/totalhigh_pages_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/totalhigh_pages_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := totalhigh_pages_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += totalhigh_pages_license/" >>build/Makefile fi fi test -d build/kstrtoul || mkdir -p build/kstrtoul cat confdefs.h - <<_ACEOF >build/kstrtoul/kstrtoul.c #include int main (void) { int ret __attribute__ ((unused)) = kstrtoul(NULL, 10, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kstrtoul || mkdir -p build/kstrtoul file=build/kstrtoul/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kstrtoul ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kstrtoul.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kstrtoul/" >>build/Makefile fi if test -n "" ; then test -d build/kstrtoul_license || mkdir -p build/kstrtoul_license cat confdefs.h - <<_ACEOF >build/kstrtoul_license/kstrtoul_license.c #include MODULE_LICENSE(""); #include int main (void) { int ret __attribute__ ((unused)) = kstrtoul(NULL, 10, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kstrtoul_license || mkdir -p build/kstrtoul_license file=build/kstrtoul_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kstrtoul_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kstrtoul_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kstrtoul_license/" >>build/Makefile fi fi { $as_echo "$as_me:$LINENO: checking for available kernel interfaces" >&5 $as_echo_n "checking for available kernel interfaces... " >&6; } { ac_try=' KBUILD_MODPOST_NOFINAL="yes" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build &>build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/Makefile build/Makefile.compile.kabi mv build/build.log build/build.log.kabi else { { $as_echo "$as_me:$LINENO: error: *** Unable to compile test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to compile test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi if test "x$enable_linux_builtin" = "xno"; then for dir in $(awk '/^obj-m/ { print $3 }' \ build/Makefile.compile.kabi); do name=${dir%/} if test -f build/$name/$name.o; then if test "${name##*_}" = "license"; then { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="yes" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/$name &>build/$name/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/$name/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/$name/Makefile build/$name/Makefile.modpost.kabi cat build/$name/build.log >>build/build.log.kabi else { { $as_echo "$as_me:$LINENO: error: *** Unable to modpost test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to modpost test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi echo "obj-n += $dir" >>build/Makefile else echo "obj-m += $dir" >>build/Makefile fi else echo "obj-n += $dir" >>build/Makefile fi done { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="yes" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build &>build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/Makefile build/Makefile.modpost.kabi cat build/build.log >>build/build.log.kabi else { { $as_echo "$as_me:$LINENO: error: *** Unable to modpost test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to modpost test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi else for dir in $(awk '/^obj-m/ { print $3 }' \ build/Makefile.compile.kabi); do name=${dir%/} if test -f build/$name/$name.o; then touch build/$name/$name.ko fi done fi { $as_echo "$as_me:$LINENO: result: done" >&5 $as_echo "done" >&6; } { $as_echo "$as_me:$LINENO: checking whether access_ok() has 'type' parameter" >&5 $as_echo_n "checking whether access_ok() has 'type' parameter... " >&6; } if test -d build/access_ok_type; then if test -f build/access_ok_type/access_ok_type.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_ACCESS_OK_TYPE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"access_ok_type\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"access_ok_type\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether global_node_page_state() exists" >&5 $as_echo_n "checking whether global_node_page_state() exists... " >&6; } if test -d build/global_node_page_state; then if test -f build/global_node_page_state/global_node_page_state.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_GLOBAL_NODE_PAGE_STATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"global_node_page_state\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"global_node_page_state\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether global_zone_page_state() exists" >&5 $as_echo_n "checking whether global_zone_page_state() exists... " >&6; } if test -d build/global_zone_page_state; then if test -f build/global_zone_page_state/global_zone_page_state.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_GLOBAL_ZONE_PAGE_STATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"global_zone_page_state\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"global_zone_page_state\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether enum node_stat_item contains NR_FILE_PAGES" >&5 $as_echo_n "checking whether enum node_stat_item contains NR_FILE_PAGES... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "node_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_FILE_PAGES' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES 1 _ACEOF ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum node_stat_item contains NR_INACTIVE_ANON" >&5 $as_echo_n "checking whether enum node_stat_item contains NR_INACTIVE_ANON... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "node_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_INACTIVE_ANON' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON 1 _ACEOF ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum node_stat_item contains NR_INACTIVE_FILE" >&5 $as_echo_n "checking whether enum node_stat_item contains NR_INACTIVE_FILE... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "node_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_INACTIVE_FILE' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE 1 _ACEOF ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum node_stat_item contains NR_SLAB_RECLAIMABLE" >&5 $as_echo_n "checking whether enum node_stat_item contains NR_SLAB_RECLAIMABLE... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "node_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_SLAB_RECLAIMABLE' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE 1 _ACEOF ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum zone_stat_item contains NR_FILE_PAGES" >&5 $as_echo_n "checking whether enum zone_stat_item contains NR_FILE_PAGES... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "zone_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_FILE_PAGES' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES 1 _ACEOF ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum zone_stat_item contains NR_INACTIVE_ANON" >&5 $as_echo_n "checking whether enum zone_stat_item contains NR_INACTIVE_ANON... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "zone_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_INACTIVE_ANON' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON 1 _ACEOF ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum zone_stat_item contains NR_INACTIVE_FILE" >&5 $as_echo_n "checking whether enum zone_stat_item contains NR_INACTIVE_FILE... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "zone_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_INACTIVE_FILE' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE 1 _ACEOF ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum zone_stat_item contains NR_SLAB_RECLAIMABLE" >&5 $as_echo_n "checking whether enum zone_stat_item contains NR_SLAB_RECLAIMABLE... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "zone_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_SLAB_RECLAIMABLE' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_ZONE_STAT_ITEM_NR_SLAB_RECLAIMABLE 1 _ACEOF ZFS_ENUM_ZONE_STAT_ITEM_NR_SLAB_RECLAIMABLE=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether global_page_state enums are sane" >&5 $as_echo_n "checking whether global_page_state enums are sane... " >&6; } enum_check_a="$ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES" enum_check_b="$ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES" if test -n "$enum_check_a" -a -n "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_FILE_PAGES in either node_stat_item or zone_stat_item: DUPLICATE" >&5 $as_echo "NR_FILE_PAGES in either node_stat_item or zone_stat_item: DUPLICATE" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi if test -z "$enum_check_a" -a -z "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_FILE_PAGES in either node_stat_item or zone_stat_item: NOT FOUND" >&5 $as_echo "NR_FILE_PAGES in either node_stat_item or zone_stat_item: NOT FOUND" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi enum_check_a="$ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON" enum_check_b="$ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON" if test -n "$enum_check_a" -a -n "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_INACTIVE_ANON in either node_stat_item or zone_stat_item: DUPLICATE" >&5 $as_echo "NR_INACTIVE_ANON in either node_stat_item or zone_stat_item: DUPLICATE" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi if test -z "$enum_check_a" -a -z "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_INACTIVE_ANON in either node_stat_item or zone_stat_item: NOT FOUND" >&5 $as_echo "NR_INACTIVE_ANON in either node_stat_item or zone_stat_item: NOT FOUND" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi enum_check_a="$ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE" enum_check_b="$ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE" if test -n "$enum_check_a" -a -n "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_INACTIVE_FILE in either node_stat_item or zone_stat_item: DUPLICATE" >&5 $as_echo "NR_INACTIVE_FILE in either node_stat_item or zone_stat_item: DUPLICATE" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi if test -z "$enum_check_a" -a -z "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_INACTIVE_FILE in either node_stat_item or zone_stat_item: NOT FOUND" >&5 $as_echo "NR_INACTIVE_FILE in either node_stat_item or zone_stat_item: NOT FOUND" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi enum_check_a="$ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE" enum_check_b="$ZFS_ENUM_ZONE_STAT_ITEM_NR_SLAB_RECLAIMABLE" if test -n "$enum_check_a" -a -n "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_SLAB_RECLAIMABLE in either node_stat_item or zone_stat_item: DUPLICATE" >&5 $as_echo "NR_SLAB_RECLAIMABLE in either node_stat_item or zone_stat_item: DUPLICATE" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi if test -z "$enum_check_a" -a -z "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_SLAB_RECLAIMABLE in either node_stat_item or zone_stat_item: NOT FOUND" >&5 $as_echo "NR_SLAB_RECLAIMABLE in either node_stat_item or zone_stat_item: NOT FOUND" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } { $as_echo "$as_me:$LINENO: checking whether compile-time stack validation (objtool) is available" >&5 $as_echo_n "checking whether compile-time stack validation (objtool) is available... " >&6; } if test -d build/objtool; then if test -f build/objtool/objtool.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_OBJTOOL 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether STACK_FRAME_NON_STANDARD is defined" >&5 $as_echo_n "checking whether STACK_FRAME_NON_STANDARD is defined... " >&6; } if test -d build/stack_frame_non_standard; then if test -f build/stack_frame_non_standard/stack_frame_non_standard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_STACK_FRAME_NON_STANDARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"stack_frame_non_standard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"stack_frame_non_standard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"objtool\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"objtool\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct ctl_table has ctl_name" >&5 $as_echo_n "checking whether struct ctl_table has ctl_name... " >&6; } if test -d build/ctl_name; then if test -f build/ctl_name/ctl_name.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CTL_NAME 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"ctl_name\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"ctl_name\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether PDE_DATA() is available" >&5 $as_echo_n "checking whether PDE_DATA() is available... " >&6; } if ! test -f build/pde_data/pde_data.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]PDE_DATA[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in ; do grep -q -E "EXPORT_SYMBOL.*(PDE_DATA)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PDE_DATA 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PDE_DATA 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PDE_DATA 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether fops->fallocate() exists" >&5 $as_echo_n "checking whether fops->fallocate() exists... " >&6; } if test -d build/file_fallocate; then if test -f build/file_fallocate/file_fallocate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FILE_FALLOCATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_fallocate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_fallocate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->fallocate() exists" >&5 $as_echo_n "checking whether iops->fallocate() exists... " >&6; } if test -d build/inode_fallocate; then if test -f build/inode_fallocate/inode_fallocate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_FALLOCATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_fallocate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_fallocate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether zlib_deflate_workspacesize() wants 2 args" >&5 $as_echo_n "checking whether zlib_deflate_workspacesize() wants 2 args... " >&6; } if test -d build/2args_zlib_deflate_workspacesize; then if test -f build/2args_zlib_deflate_workspacesize/2args_zlib_deflate_workspacesize.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"2args_zlib_deflate_workspacesize\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"2args_zlib_deflate_workspacesize\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct rw_semaphore member wait_lock is raw" >&5 $as_echo_n "checking whether struct rw_semaphore member wait_lock is raw... " >&6; } if test -d build/rwsem_spinlock_is_raw; then if test -f build/rwsem_spinlock_is_raw/rwsem_spinlock_is_raw.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define RWSEM_SPINLOCK_IS_RAW 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"rwsem_spinlock_is_raw\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"rwsem_spinlock_is_raw\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct rw_semaphore has member activity" >&5 $as_echo_n "checking whether struct rw_semaphore has member activity... " >&6; } if test -d build/rwsem_activity; then if test -f build/rwsem_activity/rwsem_activity.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_RWSEM_ACTIVITY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"rwsem_activity\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"rwsem_activity\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct rw_semaphore has atomic_long_t member count" >&5 $as_echo_n "checking whether struct rw_semaphore has atomic_long_t member count... " >&6; } if test -d build/rwsem_atomic_long_count; then if test -f build/rwsem_atomic_long_count/rwsem_atomic_long_count.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_RWSEM_ATOMIC_LONG_COUNT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"rwsem_atomic_long_count\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"rwsem_atomic_long_count\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether header linux/sched/rt.h exists" >&5 $as_echo_n "checking whether header linux/sched/rt.h exists... " >&6; } if test -d build/sched_rt_header; then if test -f build/sched_rt_header/sched_rt_header.ko; then cat >>confdefs.h <<\_ACEOF #define HAVE_SCHED_RT_HEADER 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"sched_rt_header\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"sched_rt_header\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether header linux/sched/signal.h exists" >&5 $as_echo_n "checking whether header linux/sched/signal.h exists... " >&6; } if test -d build/sched_signal_header; then if test -f build/sched_signal_header/sched_signal_header.ko; then cat >>confdefs.h <<\_ACEOF #define HAVE_SCHED_SIGNAL_HEADER 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"sched_signal_header\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"sched_signal_header\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether io_schedule_timeout() is available" >&5 $as_echo_n "checking whether io_schedule_timeout() is available... " >&6; } if ! test -f build/io_schedule_timeout/io_schedule_timeout.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]io_schedule_timeout[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in ; do grep -q -E "EXPORT_SYMBOL.*(io_schedule_timeout)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IO_SCHEDULE_TIMEOUT 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IO_SCHEDULE_TIMEOUT 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IO_SCHEDULE_TIMEOUT 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether usleep_range() is available" >&5 $as_echo_n "checking whether usleep_range() is available... " >&6; } if test -d build/usleep_range; then if test -f build/usleep_range/usleep_range.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_USLEEP_RANGE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"usleep_range\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"usleep_range\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct kmem_cache has allocflags" >&5 $as_echo_n "checking whether struct kmem_cache has allocflags... " >&6; } if test -d build/kmem_cache_allocflags; then if test -f build/kmem_cache_allocflags/kmem_cache_allocflags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KMEM_CACHE_ALLOCFLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether struct kmem_cache has gfpflags" >&5 $as_echo_n "checking whether struct kmem_cache has gfpflags... " >&6; } if test -d build/kmem_cache_gfpflags; then if test -f build/kmem_cache_gfpflags/kmem_cache_gfpflags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KMEM_CACHE_GFPFLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kmem_cache_gfpflags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kmem_cache_gfpflags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kmem_cache_allocflags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kmem_cache_allocflags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kmem_cache_create_usercopy() exists" >&5 $as_echo_n "checking whether kmem_cache_create_usercopy() exists... " >&6; } if test -d build/kmem_cache_create_usercopy; then if test -f build/kmem_cache_create_usercopy/kmem_cache_create_usercopy.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KMEM_CACHE_CREATE_USERCOPY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kmem_cache_create_usercopy\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kmem_cache_create_usercopy\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether wait_on_bit() takes an action" >&5 $as_echo_n "checking whether wait_on_bit() takes an action... " >&6; } if test -d build/wait_on_bit; then if test -f build/wait_on_bit/wait_on_bit.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_WAIT_ON_BIT_ACTION 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"wait_on_bit\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"wait_on_bit\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether wq_head->head and wq_entry->entry exist" >&5 $as_echo_n "checking whether wq_head->head and wq_entry->entry exist... " >&6; } if test -d build/wait_queue_head_entry; then if test -f build/wait_queue_head_entry/wait_queue_head_entry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_WAIT_QUEUE_HEAD_ENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"wait_queue_head_entry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"wait_queue_head_entry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode->i_*time's are timespec64" >&5 $as_echo_n "checking whether inode->i_*time's are timespec64... " >&6; } if test -d build/inode_times; then if test -f build/inode_times/inode_times.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_TIMESPEC64_TIMES 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_times\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_times\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode_lock_shared() exists" >&5 $as_echo_n "checking whether inode_lock_shared() exists... " >&6; } if test -d build/inode_lock; then if test -f build/inode_lock/inode_lock.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_LOCK_SHARED 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_lock\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_lock\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether group_info->gid exists" >&5 $as_echo_n "checking whether group_info->gid exists... " >&6; } if test -d build/group_info_gid; then if test -f build/group_info_gid/group_info_gid.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GROUP_INFO_GID 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"group_info_gid\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"group_info_gid\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kernel_write() takes loff_t pointer" >&5 $as_echo_n "checking whether kernel_write() takes loff_t pointer... " >&6; } if test -d build/kernel_write; then if test -f build/kernel_write/kernel_write.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_WRITE_PPOS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kernel_write\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kernel_write\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kernel_read() takes loff_t pointer" >&5 $as_echo_n "checking whether kernel_read() takes loff_t pointer... " >&6; } if test -d build/kernel_read; then if test -f build/kernel_read/kernel_read.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_READ_PPOS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kernel_read\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kernel_read\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether timer_setup() is available" >&5 $as_echo_n "checking whether timer_setup() is available... " >&6; } if test -d build/timer_setup; then if test -f build/timer_setup/timer_setup.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_TIMER_SETUP 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"timer_setup\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"timer_setup\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether timer function expects timer_list" >&5 $as_echo_n "checking whether timer function expects timer_list... " >&6; } if test -d build/timer_list_function; then if test -f build/timer_list_function/timer_list_function.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"timer_list_function\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"timer_list_function\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct timer_list has flags" >&5 $as_echo_n "checking whether struct timer_list has flags... " >&6; } if test -d build/timer_list_flags; then if test -f build/timer_list_flags/timer_list_flags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_TIMER_LIST_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"timer_list_flags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"timer_list_flags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether current->bio_tail exists" >&5 $as_echo_n "checking whether current->bio_tail exists... " >&6; } if test -d build/current_bio_tail; then if test -f build/current_bio_tail/current_bio_tail.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_BIO_TAIL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether current->bio_list exists" >&5 $as_echo_n "checking whether current->bio_list exists... " >&6; } if test -d build/current_bio_list; then if test -f build/current_bio_list/current_bio_list.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_BIO_LIST 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"bio_list\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"bio_list\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"current_bio_list\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"current_bio_list\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"current_bio_tail\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"current_bio_tail\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block->s_user_ns exists" >&5 $as_echo_n "checking whether super_block->s_user_ns exists... " >&6; } if test -d build/super_user_ns; then if test -f build/super_user_ns/super_user_ns.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SUPER_USER_NS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_user_ns\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_user_ns\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether submit_bio() wants 1 arg" >&5 $as_echo_n "checking whether submit_bio() wants 1 arg... " >&6; } if test -d build/submit_bio; then if test -f build/submit_bio/submit_bio.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_SUBMIT_BIO 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"submit_bio\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"submit_bio\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bops->check_events() exists" >&5 $as_echo_n "checking whether bops->check_events() exists... " >&6; } if test -d build/block_device_operations_check_events; then if test -f build/block_device_operations_check_events/block_device_operations_check_events.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"block_device_operations_check_events\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"block_device_operations_check_events\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bops->release() is void" >&5 $as_echo_n "checking whether bops->release() is void... " >&6; } if test -d build/block_device_operations_release_void; then if test -f build/block_device_operations_release_void/block_device_operations_release_void.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"block_device_operations_release_void\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"block_device_operations_release_void\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blkdev_get_by_path() is available" >&5 $as_echo_n "checking whether blkdev_get_by_path() is available... " >&6; } if ! test -f build/blkdev_get_by_path/blkdev_get_by_path.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]blkdev_get_by_path[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(blkdev_get_by_path)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLKDEV_GET_BY_PATH 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLKDEV_GET_BY_PATH 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLKDEV_GET_BY_PATH 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether blkdev_reread_part() is available" >&5 $as_echo_n "checking whether blkdev_reread_part() is available... " >&6; } if test -d build/blkdev_reread_part; then if test -f build/blkdev_reread_part/blkdev_reread_part.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLKDEV_REREAD_PART 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blkdev_reread_part\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blkdev_reread_part\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether invalidate_bdev() wants 1 arg" >&5 $as_echo_n "checking whether invalidate_bdev() wants 1 arg... " >&6; } if test -d build/invalidate_bdev; then if test -f build/invalidate_bdev/invalidate_bdev.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_INVALIDATE_BDEV 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"invalidate_bdev\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"invalidate_bdev\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether lookup_bdev() wants 1 arg" >&5 $as_echo_n "checking whether lookup_bdev() wants 1 arg... " >&6; } if ! test -f build/lookup_bdev_1arg/lookup_bdev_1arg.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether lookup_bdev() wants 2 args" >&5 $as_echo_n "checking whether lookup_bdev() wants 2 args... " >&6; } if ! test -f build/lookup_bdev_2args/lookup_bdev_2args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether lookup_bdev() wants 2 args" >&5 $as_echo_n "checking whether lookup_bdev() wants 2 args... " >&6; } if ! test -f build/lookup_bdev_2args/lookup_bdev_2args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_LOOKUP_BDEV 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_LOOKUP_BDEV 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_LOOKUP_BDEV 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether open_bdev_exclusive() is available" >&5 $as_echo_n "checking whether open_bdev_exclusive() is available... " >&6; } if ! test -f build/open_bdev_exclusive/open_bdev_exclusive.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]open_bdev_exclusive[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(open_bdev_exclusive)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_OPEN_BDEV_EXCLUSIVE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_OPEN_BDEV_EXCLUSIVE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_OPEN_BDEV_EXCLUSIVE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether bdev_logical_block_size() is available" >&5 $as_echo_n "checking whether bdev_logical_block_size() is available... " >&6; } if test -d build/bdev_logical_block_size; then if test -f build/bdev_logical_block_size/bdev_logical_block_size.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BDEV_LOGICAL_BLOCK_SIZE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bdev_logical_block_size\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bdev_logical_block_size\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bdev_physical_block_size() is available" >&5 $as_echo_n "checking whether bdev_physical_block_size() is available... " >&6; } if test -d build/bdev_physical_block_size; then if test -f build/bdev_physical_block_size/bdev_physical_block_size.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BDEV_PHYSICAL_BLOCK_SIZE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bdev_physical_block_size\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bdev_physical_block_size\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio has bi_iter" >&5 $as_echo_n "checking whether bio has bi_iter... " >&6; } if test -d build/bio_bvec_iter; then if test -f build/bio_bvec_iter/bio_bvec_iter.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_BVEC_ITER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_bvec_iter\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_bvec_iter\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether BIO_RW_FAILFAST_* are defined" >&5 $as_echo_n "checking whether BIO_RW_FAILFAST_* are defined... " >&6; } if test -d build/bio_failfast_dtd; then if test -f build/bio_failfast_dtd/bio_failfast_dtd.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_RW_FAILFAST_DTD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_failfast_dtd\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_failfast_dtd\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether REQ_FAILFAST_MASK is defined" >&5 $as_echo_n "checking whether REQ_FAILFAST_MASK is defined... " >&6; } if test -d build/bio_failfast_mask; then if test -f build/bio_failfast_mask/bio_failfast_mask.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_REQ_FAILFAST_MASK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_failfast_mask\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_failfast_mask\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio_set_dev() is available" >&5 $as_echo_n "checking whether bio_set_dev() is available... " >&6; } if test -d build/bio_set_dev; then if test -f build/bio_set_dev/bio_set_dev.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_SET_DEV 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether bio_set_dev() is GPL-only" >&5 $as_echo_n "checking whether bio_set_dev() is GPL-only... " >&6; } if test -d build/bio_set_dev_license; then if test -f build/bio_set_dev_license/bio_set_dev_license.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_SET_DEV_GPL_ONLY 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_set_dev_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_set_dev_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_set_dev\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_set_dev\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether REQ_OP_DISCARD is defined" >&5 $as_echo_n "checking whether REQ_OP_DISCARD is defined... " >&6; } if test -d build/req_op_discard; then if test -f build/req_op_discard/req_op_discard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_REQ_OP_DISCARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"req_op_discard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"req_op_discard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether REQ_OP_SECURE_ERASE is defined" >&5 $as_echo_n "checking whether REQ_OP_SECURE_ERASE is defined... " >&6; } if test -d build/req_op_secure_erase; then if test -f build/req_op_secure_erase/req_op_secure_erase.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_REQ_OP_SECURE_ERASE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"req_op_secure_erase\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"req_op_secure_erase\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether REQ_OP_FLUSH is defined" >&5 $as_echo_n "checking whether REQ_OP_FLUSH is defined... " >&6; } if test -d build/req_op_flush; then if test -f build/req_op_flush/req_op_flush.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_REQ_OP_FLUSH 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"req_op_flush\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"req_op_flush\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio->bi_opf is defined" >&5 $as_echo_n "checking whether bio->bi_opf is defined... " >&6; } if test -d build/bio_bi_opf; then if test -f build/bio_bi_opf/bio_bi_opf.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_BI_OPF 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_bi_opf\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_bi_opf\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio_set_op_attrs is available" >&5 $as_echo_n "checking whether bio_set_op_attrs is available... " >&6; } if test -d build/bio_set_op_attrs; then if test -f build/bio_set_op_attrs/bio_set_op_attrs.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_SET_OP_ATTRS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_set_op_attrs\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_set_op_attrs\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio_end_io_t wants 1 arg" >&5 $as_echo_n "checking whether bio_end_io_t wants 1 arg... " >&6; } if test -d build/bio_end_io_t_args; then if test -f build/bio_end_io_t_args/bio_end_io_t_args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_BIO_END_IO_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_end_io_t_args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_end_io_t_args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio->bi_status exists" >&5 $as_echo_n "checking whether bio->bi_status exists... " >&6; } if test -d build/bio_bi_status; then if test -f build/bio_bi_status/bio_bi_status.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_BI_STATUS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_bi_status\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_bi_status\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether BIO_RW_BARRIER is defined" >&5 $as_echo_n "checking whether BIO_RW_BARRIER is defined... " >&6; } if test -d build/bio_rw_barrier; then if test -f build/bio_rw_barrier/bio_rw_barrier.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_RW_BARRIER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_rw_barrier\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_rw_barrier\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether BIO_RW_DISCARD is defined" >&5 $as_echo_n "checking whether BIO_RW_DISCARD is defined... " >&6; } if test -d build/bio_rw_discard; then if test -f build/bio_rw_discard/bio_rw_discard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_RW_DISCARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_rw_discard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_rw_discard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue bdi is dynamic" >&5 $as_echo_n "checking whether blk_queue bdi is dynamic... " >&6; } if test -d build/blk_queue_bdi; then if test -f build/blk_queue_bdi/blk_queue_bdi.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_BDI_DYNAMIC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_bdi\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_bdi\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_discard() is available" >&5 $as_echo_n "checking whether blk_queue_discard() is available... " >&6; } if test -d build/blk_queue_discard; then if test -f build/blk_queue_discard/blk_queue_discard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_DISCARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_discard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_discard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_secure_erase() is available" >&5 $as_echo_n "checking whether blk_queue_secure_erase() is available... " >&6; } if test -d build/blk_queue_secure_erase; then if test -f build/blk_queue_secure_erase/blk_queue_secure_erase.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_SECURE_ERASE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether blk_queue_secdiscard() is available" >&5 $as_echo_n "checking whether blk_queue_secdiscard() is available... " >&6; } if test -d build/blk_queue_secdiscard; then if test -f build/blk_queue_secdiscard/blk_queue_secdiscard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_SECDISCARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_secdiscard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_secdiscard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_secure_erase\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_secure_erase\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_flag_set() exists" >&5 $as_echo_n "checking whether blk_queue_flag_set() exists... " >&6; } if test -d build/blk_queue_flag_set; then if test -f build/blk_queue_flag_set/blk_queue_flag_set.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_FLAG_SET 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_flag_set\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_flag_set\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_flag_clear() exists" >&5 $as_echo_n "checking whether blk_queue_flag_clear() exists... " >&6; } if test -d build/blk_queue_flag_clear; then if test -f build/blk_queue_flag_clear/blk_queue_flag_clear.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_FLAG_CLEAR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_flag_clear\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_flag_clear\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_flush() is available" >&5 $as_echo_n "checking whether blk_queue_flush() is available... " >&6; } if test -d build/blk_queue_flush; then if test -f build/blk_queue_flush/blk_queue_flush.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_FLUSH 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether blk_queue_flush() is GPL-only" >&5 $as_echo_n "checking whether blk_queue_flush() is GPL-only... " >&6; } if test -d build/blk_queue_flush_license; then if test -f build/blk_queue_flush_license/blk_queue_flush_license.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_FLUSH_GPL_ONLY 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_flush_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_flush_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_flush\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_flush\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_write_cache() exists" >&5 $as_echo_n "checking whether blk_queue_write_cache() exists... " >&6; } if test -d build/blk_queue_write_cache; then if test -f build/blk_queue_write_cache/blk_queue_write_cache.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_WRITE_CACHE 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether blk_queue_write_cache() is GPL-only" >&5 $as_echo_n "checking whether blk_queue_write_cache() is GPL-only... " >&6; } if test -d build/blk_queue_write_cache_license; then if test -f build/blk_queue_write_cache_license/blk_queue_write_cache_license.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_write_cache_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_write_cache_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_write_cache\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_write_cache\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_max_hw_sectors() is available" >&5 $as_echo_n "checking whether blk_queue_max_hw_sectors() is available... " >&6; } if test -d build/blk_queue_max_hw_sectors; then if test -f build/blk_queue_max_hw_sectors/blk_queue_max_hw_sectors.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_MAX_HW_SECTORS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_max_hw_sectors\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_max_hw_sectors\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_max_segments() is available" >&5 $as_echo_n "checking whether blk_queue_max_segments() is available... " >&6; } if test -d build/blk_queue_max_segments; then if test -f build/blk_queue_max_segments/blk_queue_max_segments.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_MAX_SEGMENTS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_max_segments\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_max_segments\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether the BIO_RW_UNPLUG enum is available" >&5 $as_echo_n "checking whether the BIO_RW_UNPLUG enum is available... " >&6; } if test -d build/blk_queue_bio_rw_unplug; then if test -f build/blk_queue_bio_rw_unplug/blk_queue_bio_rw_unplug.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_HAVE_BIO_RW_UNPLUG 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_bio_rw_unplug\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_bio_rw_unplug\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct blk_plug is available" >&5 $as_echo_n "checking whether struct blk_plug is available... " >&6; } if test -d build/blk_plug; then if test -f build/blk_plug/blk_plug.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_HAVE_BLK_PLUG 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_plug\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_plug\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether get_disk_and_module() is available" >&5 $as_echo_n "checking whether get_disk_and_module() is available... " >&6; } if ! test -f build/get_disk_and_module/get_disk_and_module.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]get_disk_and_module[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in block/genhd.c; do grep -q -E "EXPORT_SYMBOL.*(get_disk_and_module)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_DISK_AND_MODULE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_DISK_AND_MODULE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_DISK_AND_MODULE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether get_disk_ro() is available" >&5 $as_echo_n "checking whether get_disk_ro() is available... " >&6; } if test -d build/get_disk_ro; then if test -f build/get_disk_ro/get_disk_ro.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_DISK_RO 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"get_disk_ro\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"get_disk_ro\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether generic_readlink is global" >&5 $as_echo_n "checking whether generic_readlink is global... " >&6; } if test -d build/generic_readlink_global; then if test -f build/generic_readlink_global/generic_readlink_global.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_READLINK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"generic_readlink_global\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"generic_readlink_global\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether ql->discard_granularity is available" >&5 $as_echo_n "checking whether ql->discard_granularity is available... " >&6; } if test -d build/discard_granularity; then if test -f build/discard_granularity/discard_granularity.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DISCARD_GRANULARITY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"discard_granularity\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"discard_granularity\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode_owner_or_capable() exists" >&5 $as_echo_n "checking whether inode_owner_or_capable() exists... " >&6; } if test -d build/inode_owner_or_capable; then if test -f build/inode_owner_or_capable/inode_owner_or_capable.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_OWNER_OR_CAPABLE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether is_owner_or_cap() exists" >&5 $as_echo_n "checking whether is_owner_or_cap() exists... " >&6; } if test -d build/is_owner_or_cap; then if test -f build/is_owner_or_cap/is_owner_or_cap.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IS_OWNER_OR_CAP 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"capability\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"capability\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"is_owner_or_cap\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"is_owner_or_cap\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_owner_or_capable\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_owner_or_capable\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block uses const struct xattr_handler" >&5 $as_echo_n "checking whether super_block uses const struct xattr_handler... " >&6; } if test -d build/const_xattr_handler; then if test -f build/const_xattr_handler/const_xattr_handler.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CONST_XATTR_HANDLER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"const_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"const_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether xattr_handler has name" >&5 $as_echo_n "checking whether xattr_handler has name... " >&6; } if test -d build/xattr_handler_name; then if test -f build/xattr_handler_name/xattr_handler_name.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_HANDLER_NAME 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_name\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_name\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether xattr_handler->get() wants dentry and inode" >&5 $as_echo_n "checking whether xattr_handler->get() wants dentry and inode... " >&6; } if test -d build/xattr_handler_get_dentry_inode; then if test -f build/xattr_handler_get_dentry_inode/xattr_handler_get_dentry_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_GET_DENTRY_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->get() wants xattr_handler" >&5 $as_echo_n "checking whether xattr_handler->get() wants xattr_handler... " >&6; } if test -d build/xattr_handler_get_xattr_handler; then if test -f build/xattr_handler_get_xattr_handler/xattr_handler_get_xattr_handler.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_GET_HANDLER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->get() wants dentry" >&5 $as_echo_n "checking whether xattr_handler->get() wants dentry... " >&6; } if test -d build/xattr_handler_get_dentry; then if test -f build/xattr_handler_get_dentry/xattr_handler_get_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_GET_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->get() wants inode" >&5 $as_echo_n "checking whether xattr_handler->get() wants inode... " >&6; } if test -d build/xattr_handler_get_inode; then if test -f build/xattr_handler_get_inode/xattr_handler_get_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_GET_INODE 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"xattr get()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"xattr get()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_get_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_get_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_get_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_get_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_get_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_get_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_get_dentry_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_get_dentry_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether xattr_handler->set() wants dentry and inode" >&5 $as_echo_n "checking whether xattr_handler->set() wants dentry and inode... " >&6; } if test -d build/xattr_handler_set_dentry_inode; then if test -f build/xattr_handler_set_dentry_inode/xattr_handler_set_dentry_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_SET_DENTRY_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->set() wants xattr_handler" >&5 $as_echo_n "checking whether xattr_handler->set() wants xattr_handler... " >&6; } if test -d build/xattr_handler_set_xattr_handler; then if test -f build/xattr_handler_set_xattr_handler/xattr_handler_set_xattr_handler.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_SET_HANDLER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->set() wants dentry" >&5 $as_echo_n "checking whether xattr_handler->set() wants dentry... " >&6; } if test -d build/xattr_handler_set_dentry; then if test -f build/xattr_handler_set_dentry/xattr_handler_set_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_SET_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->set() wants inode" >&5 $as_echo_n "checking whether xattr_handler->set() wants inode... " >&6; } if test -d build/xattr_handler_set_inode; then if test -f build/xattr_handler_set_inode/xattr_handler_set_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_SET_INODE 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"xattr set()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"xattr set()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_set_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_set_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_set_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_set_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_set_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_set_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_set_dentry_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_set_dentry_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether xattr_handler->list() wants simple" >&5 $as_echo_n "checking whether xattr_handler->list() wants simple... " >&6; } if test -d build/xattr_handler_list_simple; then if test -f build/xattr_handler_list_simple/xattr_handler_list_simple.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_LIST_SIMPLE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->list() wants xattr_handler" >&5 $as_echo_n "checking whether xattr_handler->list() wants xattr_handler... " >&6; } if test -d build/xattr_handler_list_xattr_handler; then if test -f build/xattr_handler_list_xattr_handler/xattr_handler_list_xattr_handler.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_LIST_HANDLER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->list() wants dentry" >&5 $as_echo_n "checking whether xattr_handler->list() wants dentry... " >&6; } if test -d build/xattr_handler_list_dentry; then if test -f build/xattr_handler_list_dentry/xattr_handler_list_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_LIST_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->list() wants inode" >&5 $as_echo_n "checking whether xattr_handler->list() wants inode... " >&6; } if test -d build/xattr_handler_list_inode; then if test -f build/xattr_handler_list_inode/xattr_handler_list_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_LIST_INODE 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"xattr list()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"xattr list()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_list_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_list_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_list_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_list_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_list_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_list_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_list_simple\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_list_simple\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_from_xattr() needs user_ns" >&5 $as_echo_n "checking whether posix_acl_from_xattr() needs user_ns... " >&6; } if test -d build/posix_acl_from_xattr_userns; then if test -f build/posix_acl_from_xattr_userns/posix_acl_from_xattr_userns.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_FROM_XATTR_USERNS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_from_xattr_userns\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_from_xattr_userns\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether generic_setxattr() exists" >&5 $as_echo_n "checking whether generic_setxattr() exists... " >&6; } if test -d build/have_generic_setxattr; then if test -f build/have_generic_setxattr/have_generic_setxattr.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_SETXATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"have_generic_setxattr\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"have_generic_setxattr\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_release() is available" >&5 $as_echo_n "checking whether posix_acl_release() is available... " >&6; } if test -d build/posix_acl_release; then if test -f build/posix_acl_release/posix_acl_release.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_RELEASE 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether posix_acl_release() is GPL-only" >&5 $as_echo_n "checking whether posix_acl_release() is GPL-only... " >&6; } if test -d build/posix_acl_release_license; then if test -f build/posix_acl_release_license/posix_acl_release_license.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_RELEASE_GPL_ONLY 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_release_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_release_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_release\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_release\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether set_cached_acl() is usable" >&5 $as_echo_n "checking whether set_cached_acl() is usable... " >&6; } if test -d build/set_cached_acl_license; then if test -f build/set_cached_acl_license/set_cached_acl_license.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SET_CACHED_ACL_USABLE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"set_cached_acl_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"set_cached_acl_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_chmod exists" >&5 $as_echo_n "checking whether posix_acl_chmod exists... " >&6; } if test -d build/posix_acl_chmod; then if test -f build/posix_acl_chmod/posix_acl_chmod.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_CHMOD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_chmod\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_chmod\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether __posix_acl_chmod exists" >&5 $as_echo_n "checking whether __posix_acl_chmod exists... " >&6; } if test -d build/__posix_acl_chmod; then if test -f build/__posix_acl_chmod/__posix_acl_chmod.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE___POSIX_ACL_CHMOD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"__posix_acl_chmod\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"__posix_acl_chmod\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_equiv_mode() wants umode_t" >&5 $as_echo_n "checking whether posix_acl_equiv_mode() wants umode_t... " >&6; } if test -d build/posix_acl_equiv_mode; then if test -f build/posix_acl_equiv_mode/posix_acl_equiv_mode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_equiv_mode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_equiv_mode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_valid() wants user namespace" >&5 $as_echo_n "checking whether posix_acl_valid() wants user namespace... " >&6; } if test -d build/posix_acl_valid_with_ns; then if test -f build/posix_acl_valid_with_ns/posix_acl_valid_with_ns.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_VALID_WITH_NS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_valid_with_ns\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_valid_with_ns\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->permission() exists" >&5 $as_echo_n "checking whether iops->permission() exists... " >&6; } if test -d build/inode_operations_permission; then if test -f build/inode_operations_permission/inode_operations_permission.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PERMISSION 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_permission\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_permission\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->permission() wants nameidata" >&5 $as_echo_n "checking whether iops->permission() wants nameidata... " >&6; } if test -d build/inode_operations_permission_with_nameidata; then if test -f build/inode_operations_permission_with_nameidata/inode_operations_permission_with_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PERMISSION 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_PERMISSION_WITH_NAMEIDATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_permission_with_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_permission_with_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->check_acl() exists" >&5 $as_echo_n "checking whether iops->check_acl() exists... " >&6; } if test -d build/inode_operations_check_acl; then if test -f build/inode_operations_check_acl/inode_operations_check_acl.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CHECK_ACL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_check_acl\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_check_acl\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->check_acl() wants flags" >&5 $as_echo_n "checking whether iops->check_acl() wants flags... " >&6; } if test -d build/inode_operations_check_acl_with_flags; then if test -f build/inode_operations_check_acl_with_flags/inode_operations_check_acl_with_flags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CHECK_ACL 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_CHECK_ACL_WITH_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_check_acl_with_flags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_check_acl_with_flags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->get_acl() exists" >&5 $as_echo_n "checking whether iops->get_acl() exists... " >&6; } if test -d build/inode_operations_get_acl; then if test -f build/inode_operations_get_acl/inode_operations_get_acl.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_ACL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_get_acl\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_get_acl\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->set_acl() exists" >&5 $as_echo_n "checking whether iops->set_acl() exists... " >&6; } if test -d build/inode_operations_set_acl; then if test -f build/inode_operations_set_acl/inode_operations_set_acl.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SET_ACL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_set_acl\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_set_acl\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether uncached_acl_sentinel() exists" >&5 $as_echo_n "checking whether uncached_acl_sentinel() exists... " >&6; } if test -d build/get_acl_handle_cache; then if test -f build/get_acl_handle_cache/get_acl_handle_cache.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_GET_ACL_HANDLE_CACHE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"get_acl_handle_cache\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"get_acl_handle_cache\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl has refcount_t" >&5 $as_echo_n "checking whether posix_acl has refcount_t... " >&6; } if test -d build/acl_refcount; then if test -f build/acl_refcount/acl_refcount.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_ACL_REFCOUNT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"acl_refcount\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"acl_refcount\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->getattr() takes a path" >&5 $as_echo_n "checking whether iops->getattr() takes a path... " >&6; } if test -d build/inode_operations_getattr_path; then if test -f build/inode_operations_getattr_path/inode_operations_getattr_path.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PATH_IOPS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->getattr() takes a vfsmount" >&5 $as_echo_n "checking whether iops->getattr() takes a vfsmount... " >&6; } if test -d build/inode_operations_getattr_vfsmount; then if test -f build/inode_operations_getattr_vfsmount/inode_operations_getattr_vfsmount.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFSMOUNT_IOPS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_getattr_vfsmount\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_getattr_vfsmount\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_getattr_path\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_getattr_path\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode_set_flags() exists" >&5 $as_echo_n "checking whether inode_set_flags() exists... " >&6; } if test -d build/inode_set_flags; then if test -f build/inode_set_flags/inode_set_flags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_SET_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_set_flags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_set_flags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode_set_iversion() exists" >&5 $as_echo_n "checking whether inode_set_iversion() exists... " >&6; } if test -d build/inode_set_iversion; then if test -f build/inode_set_iversion/inode_set_iversion.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_SET_IVERSION 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_set_iversion\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_set_iversion\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->show_options() wants dentry" >&5 $as_echo_n "checking whether sops->show_options() wants dentry... " >&6; } if test -d build/super_operations_show_options; then if test -f build/super_operations_show_options/super_operations_show_options.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SHOW_OPTIONS_WITH_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_operations_show_options\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_operations_show_options\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether file_inode() is available" >&5 $as_echo_n "checking whether file_inode() is available... " >&6; } if test -d build/file_inode; then if test -f build/file_inode/file_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FILE_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether file_dentry() is available" >&5 $as_echo_n "checking whether file_dentry() is available... " >&6; } if test -d build/file_dentry; then if test -f build/file_dentry/file_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FILE_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants dentry" >&5 $as_echo_n "checking whether fops->fsync() wants dentry... " >&6; } if test -d build/fsync_with_dentry; then if test -f build/fsync_with_dentry/fsync_with_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FSYNC_WITH_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants no dentry" >&5 $as_echo_n "checking whether fops->fsync() wants no dentry... " >&6; } if test -d build/fsync_without_dentry; then if test -f build/fsync_without_dentry/fsync_without_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FSYNC_WITHOUT_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants range" >&5 $as_echo_n "checking whether fops->fsync() wants range... " >&6; } if test -d build/fsync_range; then if test -f build/fsync_range/fsync_range.ko; then { $as_echo "$as_me:$LINENO: result: range" >&5 $as_echo "range" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FSYNC_RANGE 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"fops->fsync\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"fops->fsync\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fsync_range\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fsync_range\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fsync_without_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fsync_without_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fsync_with_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fsync_with_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fops->aio_fsync() exists" >&5 $as_echo_n "checking whether fops->aio_fsync() exists... " >&6; } if test -d build/aio_fsync; then if test -f build/aio_fsync/aio_fsync.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FILE_AIO_FSYNC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"aio_fsync\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"aio_fsync\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->evict_inode() exists" >&5 $as_echo_n "checking whether sops->evict_inode() exists... " >&6; } if test -d build/evict_inode; then if test -f build/evict_inode/evict_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_EVICT_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"evict_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"evict_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->dirty_inode() wants flags" >&5 $as_echo_n "checking whether sops->dirty_inode() wants flags... " >&6; } if test -d build/dirty_inode_with_flags; then if test -f build/dirty_inode_with_flags/dirty_inode_with_flags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DIRTY_INODE_WITH_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"dirty_inode_with_flags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"dirty_inode_with_flags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block has s_shrink" >&5 $as_echo_n "checking whether super_block has s_shrink... " >&6; } if test -d build/super_block_s_shrink; then if test -f build/super_block_s_shrink/super_block_s_shrink.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SHRINK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_block_s_shrink\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_block_s_shrink\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block has s_instances list_head" >&5 $as_echo_n "checking whether super_block has s_instances list_head... " >&6; } if test -d build/super_block_s_instances_list_head; then if test -f build/super_block_s_instances_list_head/super_block_s_instances_list_head.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_S_INSTANCES_LIST_HEAD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_block_s_instances_list_head\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_block_s_instances_list_head\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->nr_cached_objects() exists" >&5 $as_echo_n "checking whether sops->nr_cached_objects() exists... " >&6; } if test -d build/nr_cached_objects; then if test -f build/nr_cached_objects/nr_cached_objects.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_NR_CACHED_OBJECTS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"nr_cached_objects\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"nr_cached_objects\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->free_cached_objects() exists" >&5 $as_echo_n "checking whether sops->free_cached_objects() exists... " >&6; } if test -d build/free_cached_objects; then if test -f build/free_cached_objects/free_cached_objects.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FREE_CACHED_OBJECTS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"free_cached_objects\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"free_cached_objects\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether shrink_control has nid" >&5 $as_echo_n "checking whether shrink_control has nid... " >&6; } if test -d build/shrink_control_nid; then if test -f build/shrink_control_nid/shrink_control_nid.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define SHRINK_CONTROL_HAS_NID 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrink_control_nid\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrink_control_nid\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether old 2-argument shrinker exists" >&5 $as_echo_n "checking whether old 2-argument shrinker exists... " >&6; } if test -d build/shrinker_cb_2arg; then if test -f build/shrinker_cb_2arg/shrinker_cb_2arg.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_OLD_SHRINKER_CALLBACK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether old 3-argument shrinker exists" >&5 $as_echo_n "checking whether old 3-argument shrinker exists... " >&6; } if test -d build/shrinker_cb_3arg; then if test -f build/shrinker_cb_3arg/shrinker_cb_3arg.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_SHRINKER_CALLBACK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether new 2-argument shrinker exists" >&5 $as_echo_n "checking whether new 2-argument shrinker exists... " >&6; } if test -d build/shrinker_cb_shrink_control; then if test -f build/shrinker_cb_shrink_control/shrinker_cb_shrink_control.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_NEW_SHRINKER_CALLBACK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether ->count_objects callback exists" >&5 $as_echo_n "checking whether ->count_objects callback exists... " >&6; } if test -d build/shrinker_cb_shrink_control_split; then if test -f build/shrinker_cb_shrink_control_split/shrinker_cb_shrink_control_split.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SPLIT_SHRINKER_CALLBACK 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"shrinker\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"shrinker\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrinker_cb_shrink_control_split\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrinker_cb_shrink_control_split\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrinker_cb_shrink_control\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrinker_cb_shrink_control\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrinker_cb_3arg\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrinker_cb_3arg\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrinker_cb_2arg\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrinker_cb_2arg\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct shrink_control exists" >&5 $as_echo_n "checking whether struct shrink_control exists... " >&6; } if test -d build/shrink_control_struct; then if test -f build/shrink_control_struct/shrink_control_struct.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SHRINK_CONTROL_STRUCT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrink_control_struct\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrink_control_struct\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->create()/mkdir()/mknod() take umode_t" >&5 $as_echo_n "checking whether iops->create()/mkdir()/mknod() take umode_t... " >&6; } if test -d build/inode_operations_mkdir; then if test -f build/inode_operations_mkdir/inode_operations_mkdir.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_MKDIR_UMODE_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_mkdir\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_mkdir\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->lookup() passes nameidata" >&5 $as_echo_n "checking whether iops->lookup() passes nameidata... " >&6; } if test -d build/lookup_nameidata; then if test -f build/lookup_nameidata/lookup_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LOOKUP_NAMEIDATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"lookup_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"lookup_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->create() passes nameidata" >&5 $as_echo_n "checking whether iops->create() passes nameidata... " >&6; } if test -d build/create_nameidata; then if test -f build/create_nameidata/create_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CREATE_NAMEIDATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"create_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"create_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->get_link() passes delayed" >&5 $as_echo_n "checking whether iops->get_link() passes delayed... " >&6; } if test -d build/inode_operations_get_link; then if test -f build/inode_operations_get_link/inode_operations_get_link.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_LINK_DELAYED 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->get_link() passes cookie" >&5 $as_echo_n "checking whether iops->get_link() passes cookie... " >&6; } if test -d build/inode_operations_get_link_cookie; then if test -f build/inode_operations_get_link_cookie/inode_operations_get_link_cookie.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_LINK_COOKIE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->follow_link() passes cookie" >&5 $as_echo_n "checking whether iops->follow_link() passes cookie... " >&6; } if test -d build/inode_operations_follow_link; then if test -f build/inode_operations_follow_link/inode_operations_follow_link.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FOLLOW_LINK_COOKIE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->follow_link() passes nameidata" >&5 $as_echo_n "checking whether iops->follow_link() passes nameidata... " >&6; } if test -d build/inode_operations_follow_link_nameidata; then if test -f build/inode_operations_follow_link_nameidata/inode_operations_follow_link_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FOLLOW_LINK_NAMEIDATA 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"get_link\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"get_link\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_follow_link_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_follow_link_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_follow_link\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_follow_link\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_get_link_cookie\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_get_link_cookie\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_get_link\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_get_link\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi if test -d build/inode_operations_get_link; then if test -f build/inode_operations_get_link/inode_operations_get_link.ko; then cat >>confdefs.h <<\_ACEOF #define HAVE_PUT_LINK_DELAYED 1 _ACEOF else { $as_echo "$as_me:$LINENO: checking whether iops->put_link() passes cookie" >&5 $as_echo_n "checking whether iops->put_link() passes cookie... " >&6; } if test -d build/put_link_cookie; then if test -f build/put_link_cookie/put_link_cookie.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PUT_LINK_COOKIE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->put_link() passes nameidata" >&5 $as_echo_n "checking whether iops->put_link() passes nameidata... " >&6; } if test -d build/put_link_nameidata; then if test -f build/put_link_nameidata/put_link_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PUT_LINK_NAMEIDATA 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"put_link\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"put_link\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"put_link_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"put_link_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"put_link_cookie\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"put_link_cookie\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_get_link\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_get_link\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether i_op->tmpfile() exists" >&5 $as_echo_n "checking whether i_op->tmpfile() exists... " >&6; } if test -d build/inode_operations_tmpfile; then if test -f build/inode_operations_tmpfile/inode_operations_tmpfile.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TMPFILE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_tmpfile\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_tmpfile\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->truncate_range() exists" >&5 $as_echo_n "checking whether iops->truncate_range() exists... " >&6; } if test -d build/inode_operations_truncate_range; then if test -f build/inode_operations_truncate_range/inode_operations_truncate_range.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_TRUNCATE_RANGE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_truncate_range\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_truncate_range\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether dops->d_automount() exists" >&5 $as_echo_n "checking whether dops->d_automount() exists... " >&6; } if test -d build/dentry_operations_d_automount; then if test -f build/dentry_operations_d_automount/dentry_operations_d_automount.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AUTOMOUNT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"dentry_operations_d_automount\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"dentry_operations_d_automount\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether eops->encode_fh() wants inode" >&5 $as_echo_n "checking whether eops->encode_fh() wants inode... " >&6; } if test -d build/export_operations_encode_fh; then if test -f build/export_operations_encode_fh/export_operations_encode_fh.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_ENCODE_FH_WITH_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"export_operations_encode_fh\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"export_operations_encode_fh\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether eops->commit_metadata() exists" >&5 $as_echo_n "checking whether eops->commit_metadata() exists... " >&6; } if test -d build/export_operations_commit_metadata; then if test -f build/export_operations_commit_metadata/export_operations_commit_metadata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_COMMIT_METADATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"export_operations_commit_metadata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"export_operations_commit_metadata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether clear_inode() is available" >&5 $as_echo_n "checking whether clear_inode() is available... " >&6; } if ! test -f build/clear_inode/clear_inode.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]clear_inode[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/inode.c; do grep -q -E "EXPORT_SYMBOL.*(clear_inode)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CLEAR_INODE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CLEAR_INODE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CLEAR_INODE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether setattr_prepare() is available" >&5 $as_echo_n "checking whether setattr_prepare() is available... " >&6; } if ! test -f build/setattr_prepare/setattr_prepare.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]setattr_prepare[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/attr.c; do grep -q -E "EXPORT_SYMBOL.*(setattr_prepare)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SETATTR_PREPARE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SETATTR_PREPARE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SETATTR_PREPARE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether insert_inode_locked() is available" >&5 $as_echo_n "checking whether insert_inode_locked() is available... " >&6; } if ! test -f build/insert_inode_locked/insert_inode_locked.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/inode.c; do grep -q -E "EXPORT_SYMBOL.*(insert_inode_locked)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INSERT_INODE_LOCKED 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INSERT_INODE_LOCKED 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INSERT_INODE_LOCKED 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether d_make_root() is available" >&5 $as_echo_n "checking whether d_make_root() is available... " >&6; } if ! test -f build/d_make_root/d_make_root.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]d_make_root[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/dcache.c; do grep -q -E "EXPORT_SYMBOL.*(d_make_root)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_MAKE_ROOT 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_MAKE_ROOT 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_MAKE_ROOT 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether d_obtain_alias() is available" >&5 $as_echo_n "checking whether d_obtain_alias() is available... " >&6; } if ! test -f build/d_obtain_alias/d_obtain_alias.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]d_obtain_alias[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/dcache.c; do grep -q -E "EXPORT_SYMBOL.*(d_obtain_alias)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_OBTAIN_ALIAS 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_OBTAIN_ALIAS 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_OBTAIN_ALIAS 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether d_prune_aliases() is available" >&5 $as_echo_n "checking whether d_prune_aliases() is available... " >&6; } if ! test -f build/d_prune_aliases/d_prune_aliases.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]d_prune_aliases[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/dcache.c; do grep -q -E "EXPORT_SYMBOL.*(d_prune_aliases)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_PRUNE_ALIASES 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_PRUNE_ALIASES 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_PRUNE_ALIASES 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether d_set_d_op() is available" >&5 $as_echo_n "checking whether d_set_d_op() is available... " >&6; } if ! test -f build/d_set_d_op/d_set_d_op.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]d_set_d_op[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/dcache.c; do grep -q -E "EXPORT_SYMBOL.*(d_set_d_op)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_SET_D_OP 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_SET_D_OP 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_SET_D_OP 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether dops->d_revalidate() takes struct nameidata" >&5 $as_echo_n "checking whether dops->d_revalidate() takes struct nameidata... " >&6; } if test -d build/dentry_operations_revalidate; then if test -f build/dentry_operations_revalidate/dentry_operations_revalidate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_REVALIDATE_NAMEIDATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"dentry_operations_revalidate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"dentry_operations_revalidate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether dentry uses const struct dentry_operations" >&5 $as_echo_n "checking whether dentry uses const struct dentry_operations... " >&6; } if test -d build/dentry_operations_const; then if test -f build/dentry_operations_const/dentry_operations_const.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CONST_DENTRY_OPERATIONS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"dentry_operations_const\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"dentry_operations_const\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block has s_d_op" >&5 $as_echo_n "checking whether super_block has s_d_op... " >&6; } if test -d build/super_block_s_d_op; then if test -f build/super_block_s_d_op/super_block_s_d_op.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_S_D_OP 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_block_s_d_op\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_block_s_d_op\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether truncate_setsize() is available" >&5 $as_echo_n "checking whether truncate_setsize() is available... " >&6; } if ! test -f build/truncate_setsize/truncate_setsize.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]truncate_setsize[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/truncate.c; do grep -q -E "EXPORT_SYMBOL.*(truncate_setsize)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TRUNCATE_SETSIZE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TRUNCATE_SETSIZE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TRUNCATE_SETSIZE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether security_inode_init_security wants 6 args" >&5 $as_echo_n "checking whether security_inode_init_security wants 6 args... " >&6; } if test -d build/security_inode_init_security_6args; then if test -f build/security_inode_init_security_6args/security_inode_init_security_6args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"security_inode_init_security_6args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"security_inode_init_security_6args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether security_inode_init_security wants callback" >&5 $as_echo_n "checking whether security_inode_init_security wants callback... " >&6; } if test -d build/security_inode_init_security; then if test -f build/security_inode_init_security/security_inode_init_security.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"security_inode_init_security\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"security_inode_init_security\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fst->mount() exists" >&5 $as_echo_n "checking whether fst->mount() exists... " >&6; } if test -d build/file_system_type_mount; then if test -f build/file_system_type_mount/file_system_type_mount.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FST_MOUNT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_system_type_mount\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_system_type_mount\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_setup_bdi_name() exists" >&5 $as_echo_n "checking whether super_setup_bdi_name() exists... " >&6; } if ! test -f build/super_setup_bdi_name/super_setup_bdi_name.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 2 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 2 args... " >&6; } if ! test -f build/bdi_setup_and_register/bdi_setup_and_register.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 3 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } if ! test -f build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 3 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } if ! test -f build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]super_setup_bdi_name[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/super.c; do grep -q -E "EXPORT_SYMBOL.*(super_setup_bdi_name)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 2 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 2 args... " >&6; } if ! test -f build/bdi_setup_and_register/bdi_setup_and_register.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 3 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } if ! test -f build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 3 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } if ! test -f build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SUPER_SETUP_BDI_NAME 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SUPER_SETUP_BDI_NAME 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SUPER_SETUP_BDI_NAME 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether set_nlink() is available" >&5 $as_echo_n "checking whether set_nlink() is available... " >&6; } if test -d build/set_nlink; then if test -f build/set_nlink/set_nlink.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SET_NLINK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"set_nlink\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"set_nlink\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sget() wants 5 args" >&5 $as_echo_n "checking whether sget() wants 5 args... " >&6; } if test -d build/sget_5args; then if test -f build/sget_5args/sget_5args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_5ARG_SGET 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"sget_5args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"sget_5args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether lseek_execute() is available" >&5 $as_echo_n "checking whether lseek_execute() is available... " >&6; } if ! test -f build/lseek_execute/lseek_execute.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]lseek_exclusive[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/read_write.c; do grep -q -E "EXPORT_SYMBOL.*(lseek_exclusive)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK_EXECUTE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK_EXECUTE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK_EXECUTE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether vfs_getattr() wants 4 args" >&5 $as_echo_n "checking whether vfs_getattr() wants 4 args... " >&6; } if test -d build/vfs_getattr_4args; then if test -f build/vfs_getattr_4args/vfs_getattr_4args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_4ARGS_VFS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"vfs_getattr_4args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"vfs_getattr_4args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether vfs_getattr() wants 2 args" >&5 $as_echo_n "checking whether vfs_getattr() wants 2 args... " >&6; } if test -d build/vfs_getattr_2args; then if test -f build/vfs_getattr_2args/vfs_getattr_2args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_VFS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"vfs_getattr_2args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"vfs_getattr_2args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether vfs_getattr() wants 3 args" >&5 $as_echo_n "checking whether vfs_getattr() wants 3 args... " >&6; } if test -d build/vfs_getattr_3args; then if test -f build/vfs_getattr_3args/vfs_getattr_3args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_VFS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"vfs_getattr_3args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"vfs_getattr_3args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether vfs_fsync() wants 2 args" >&5 $as_echo_n "checking whether vfs_fsync() wants 2 args... " >&6; } if test -d build/vfs_fsync_2args; then if test -f build/vfs_fsync_2args/vfs_fsync_2args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_VFS_FSYNC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"vfs_fsync_2args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"vfs_fsync_2args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fops->iterate_shared() is available" >&5 $as_echo_n "checking whether fops->iterate_shared() is available... " >&6; } if test -d build/file_operations_iterate_shared; then if test -f build/file_operations_iterate_shared/file_operations_iterate_shared.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_ITERATE_SHARED 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether fops->iterate() is available" >&5 $as_echo_n "checking whether fops->iterate() is available... " >&6; } if test -d build/file_operations_iterate; then if test -f build/file_operations_iterate/file_operations_iterate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_ITERATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether fops->readdir() is available" >&5 $as_echo_n "checking whether fops->readdir() is available... " >&6; } if test -d build/file_operations_readdir; then if test -f build/file_operations_readdir/file_operations_readdir.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_READDIR 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"vfs_iterate\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"vfs_iterate\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_operations_readdir\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_operations_readdir\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_operations_iterate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_operations_iterate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_operations_iterate_shared\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_operations_iterate_shared\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether aops->direct_IO() uses iov_iter" >&5 $as_echo_n "checking whether aops->direct_IO() uses iov_iter... " >&6; } if test -d build/direct_io_iter; then if test -f build/direct_io_iter/direct_io_iter.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_DIRECT_IO_ITER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether aops->direct_IO() uses offset" >&5 $as_echo_n "checking whether aops->direct_IO() uses offset... " >&6; } if test -d build/direct_io_iter_offset; then if test -f build/direct_io_iter_offset/direct_io_iter_offset.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_DIRECT_IO_ITER_OFFSET 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether aops->direct_IO() uses rw and offset" >&5 $as_echo_n "checking whether aops->direct_IO() uses rw and offset... " >&6; } if test -d build/direct_io_iter_rw_offset; then if test -f build/direct_io_iter_rw_offset/direct_io_iter_rw_offset.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether aops->direct_IO() uses iovec" >&5 $as_echo_n "checking whether aops->direct_IO() uses iovec... " >&6; } if test -d build/direct_io_iovec; then if test -f build/direct_io_iovec/direct_io_iovec.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_DIRECT_IO_IOVEC 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"direct IO\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"direct IO\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"direct_io_iovec\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"direct_io_iovec\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"direct_io_iter_rw_offset\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"direct_io_iter_rw_offset\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"direct_io_iter_offset\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"direct_io_iter_offset\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"direct_io_iter\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"direct_io_iter\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fops->read/write_iter() are available" >&5 $as_echo_n "checking whether fops->read/write_iter() are available... " >&6; } if test -d build/file_operations_rw; then if test -f build/file_operations_rw/file_operations_rw.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_RW_ITERATE 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether new_sync_read/write() are available" >&5 $as_echo_n "checking whether new_sync_read/write() are available... " >&6; } if test -d build/new_sync_rw; then if test -f build/new_sync_rw/new_sync_rw.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_NEW_SYNC_READ 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"new_sync_rw\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"new_sync_rw\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_operations_rw\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_operations_rw\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether generic_write_checks() takes kiocb" >&5 $as_echo_n "checking whether generic_write_checks() takes kiocb... " >&6; } if test -d build/generic_write_checks; then if test -f build/generic_write_checks/generic_write_checks.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_WRITE_CHECKS_KIOCB 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"generic_write_checks\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"generic_write_checks\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kmap_atomic wants 1 args" >&5 $as_echo_n "checking whether kmap_atomic wants 1 args... " >&6; } if test -d build/kmap_atomic; then if test -f build/kmap_atomic/kmap_atomic.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_KMAP_ATOMIC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kmap_atomic\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kmap_atomic\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether follow_down_one() is available" >&5 $as_echo_n "checking whether follow_down_one() is available... " >&6; } if test -d build/follow_down_one; then if test -f build/follow_down_one/follow_down_one.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FOLLOW_DOWN_ONE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"follow_down_one\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"follow_down_one\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether make_request_fn() returns int" >&5 $as_echo_n "checking whether make_request_fn() returns int... " >&6; } if test -d build/make_request_fn_int; then if test -f build/make_request_fn_int/make_request_fn_int.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define MAKE_REQUEST_FN_RET int _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_MAKE_REQUEST_FN_RET_INT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether make_request_fn() returns void" >&5 $as_echo_n "checking whether make_request_fn() returns void... " >&6; } if test -d build/make_request_fn_void; then if test -f build/make_request_fn_void/make_request_fn_void.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define MAKE_REQUEST_FN_RET void _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_MAKE_REQUEST_FN_RET_VOID 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether make_request_fn() returns blk_qc_t" >&5 $as_echo_n "checking whether make_request_fn() returns blk_qc_t... " >&6; } if test -d build/make_request_fn_blk_qc_t; then if test -f build/make_request_fn_blk_qc_t/make_request_fn_blk_qc_t.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define MAKE_REQUEST_FN_RET blk_qc_t _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_MAKE_REQUEST_FN_RET_QC 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"make_request_fn\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"make_request_fn\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"make_request_fn_blk_qc_t\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"make_request_fn_blk_qc_t\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"make_request_fn_void\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"make_request_fn_void\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"make_request_fn_int\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"make_request_fn_int\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether generic IO accounting wants 3 args" >&5 $as_echo_n "checking whether generic IO accounting wants 3 args... " >&6; } if ! test -f build/generic_acct_3args/generic_acct_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether generic IO accounting wants 4 args" >&5 $as_echo_n "checking whether generic IO accounting wants 4 args... " >&6; } if ! test -f build/generic_acct_4args/generic_acct_4args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]generic_start_io_acct[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in block/bio.c; do grep -q -E "EXPORT_SYMBOL.*(generic_start_io_acct)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]generic_start_io_acct[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in block/bio.c; do grep -q -E "EXPORT_SYMBOL.*(generic_start_io_acct)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether generic IO accounting wants 4 args" >&5 $as_echo_n "checking whether generic IO accounting wants 4 args... " >&6; } if ! test -f build/generic_acct_4args/generic_acct_4args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]generic_start_io_acct[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in block/bio.c; do grep -q -E "EXPORT_SYMBOL.*(generic_start_io_acct)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_3ARG 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_3ARG 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_3ARG 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether kernel fpu is available" >&5 $as_echo_n "checking whether kernel fpu is available... " >&6; } if ! test -f build/kernel_fpu_license/kernel_fpu_license.ko; then if ! test -f build/__kernel_fpu_license/__kernel_fpu_license.ko; then if test -d build/fpu_internal; then if test -f build/fpu_internal/fpu_internal.ko; then { $as_echo "$as_me:$LINENO: result: internal" >&5 $as_echo "internal" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_INTERNAL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: unavailable" >&5 $as_echo "unavailable" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]__kernel_fpu_begin[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in arch/x86/kernel/fpu/core.c arch/x86/kernel/i387.c; do grep -q -E "EXPORT_SYMBOL.*(__kernel_fpu_begin)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : if test -d build/fpu_internal; then if test -f build/fpu_internal/fpu_internal.ko; then { $as_echo "$as_me:$LINENO: result: internal" >&5 $as_echo "internal" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_INTERNAL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: unavailable" >&5 $as_echo "unavailable" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else : { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]kernel_fpu_begin[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in arch/x86/kernel/fpu/core.c; do grep -q -E "EXPORT_SYMBOL.*(kernel_fpu_begin)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : if ! test -f build/__kernel_fpu_license/__kernel_fpu_license.ko; then if test -d build/fpu_internal; then if test -f build/fpu_internal/fpu_internal.ko; then { $as_echo "$as_me:$LINENO: result: internal" >&5 $as_echo "internal" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_INTERNAL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: unavailable" >&5 $as_echo "unavailable" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]__kernel_fpu_begin[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in arch/x86/kernel/fpu/core.c arch/x86/kernel/i387.c; do grep -q -E "EXPORT_SYMBOL.*(__kernel_fpu_begin)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : if test -d build/fpu_internal; then if test -f build/fpu_internal/fpu_internal.ko; then { $as_echo "$as_me:$LINENO: result: internal" >&5 $as_echo "internal" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_INTERNAL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: unavailable" >&5 $as_echo "unavailable" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else : { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: kernel_fpu_*" >&5 $as_echo "kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: kernel_fpu_*" >&5 $as_echo "kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: kernel_fpu_*" >&5 $as_echo "kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether kernel defines fmode_t" >&5 $as_echo_n "checking whether kernel defines fmode_t... " >&6; } if test -d build/type_fmode_t; then if test -f build/type_fmode_t/type_fmode_t.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FMODE_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"type_fmode_t\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"type_fmode_t\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kuid_t/kgid_t is available" >&5 $as_echo_n "checking whether kuid_t/kgid_t is available... " >&6; } if test -d build/kuidgid_t_init; then if test -f build/kuidgid_t_init/kuidgid_t_init.ko; then if test -d build/kuidgid_t; then if test -f build/kuidgid_t/kuidgid_t.ko; then { $as_echo "$as_me:$LINENO: result: yes; optional" >&5 $as_echo "yes; optional" >&6; } else { $as_echo "$as_me:$LINENO: result: yes; mandatory" >&5 $as_echo "yes; mandatory" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KUIDGID_T 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kuidgid_t\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kuidgid_t\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kuidgid_t_init\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kuidgid_t_init\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether i_(uid|gid)_(read|write) exist" >&5 $as_echo_n "checking whether i_(uid|gid)_(read|write) exist... " >&6; } if test -d build/i_uid_read; then if test -f build/i_uid_read/i_uid_read.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KUID_HELPERS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"i_uid_read\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"i_uid_read\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether module_param_call() is hardened" >&5 $as_echo_n "checking whether module_param_call() is hardened... " >&6; } if test -d build/module_param_call; then if test -f build/module_param_call/module_param_call.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define MODULE_PARAM_CALL_CONST 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"module_param_call\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"module_param_call\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->rename() wants flags" >&5 $as_echo_n "checking whether iops->rename() wants flags... " >&6; } if test -d build/inode_operations_rename; then if test -f build/inode_operations_rename/inode_operations_rename.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_RENAME_WANTS_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_rename\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_rename\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether current_time() exists" >&5 $as_echo_n "checking whether current_time() exists... " >&6; } if ! test -f build/current_time/current_time.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]current_time[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/inode.c; do grep -q -E "EXPORT_SYMBOL.*(current_time)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_TIME 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_TIME 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_TIME 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether ns_capable exists" >&5 $as_echo_n "checking whether ns_capable exists... " >&6; } if test -d build/ns_capable; then if test -f build/ns_capable/ns_capable.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_NS_CAPABLE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"ns_capable\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"ns_capable\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether cred_t->user_ns exists" >&5 $as_echo_n "checking whether cred_t->user_ns exists... " >&6; } if test -d build/cred_user_ns; then if test -f build/cred_user_ns/cred_user_ns.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CRED_USER_NS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"cred_user_ns\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"cred_user_ns\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kuid_has_mapping/kgid_has_mapping exist" >&5 $as_echo_n "checking whether kuid_has_mapping/kgid_has_mapping exist... " >&6; } if test -d build/kuid_has_mapping; then if test -f build/kuid_has_mapping/kuid_has_mapping.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KUID_HAS_MAPPING 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kuid_has_mapping\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kuid_has_mapping\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether in_compat_syscall() is available" >&5 $as_echo_n "checking whether in_compat_syscall() is available... " >&6; } if test -d build/in_compat_syscall; then if test -f build/in_compat_syscall/in_compat_syscall.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IN_COMPAT_SYSCALL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"in_compat_syscall\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"in_compat_syscall\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether ktime_get_coarse_real_ts64() exists" >&5 $as_echo_n "checking whether ktime_get_coarse_real_ts64() exists... " >&6; } if test -d build/ktime_get_coarse_real_ts64; then if test -f build/ktime_get_coarse_real_ts64/ktime_get_coarse_real_ts64.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KTIME_GET_COARSE_REAL_TS64 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"ktime_get_coarse_real_ts64\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"ktime_get_coarse_real_ts64\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether totalram_pages() exists" >&5 $as_echo_n "checking whether totalram_pages() exists... " >&6; } if test -d build/totalram_pages; then if test -f build/totalram_pages/totalram_pages.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TOTALRAM_PAGES_FUNC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"totalram_pages\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"totalram_pages\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether totalhigh_pages() exists" >&5 $as_echo_n "checking whether totalhigh_pages() exists... " >&6; } if test -d build/totalhigh_pages; then if test -f build/totalhigh_pages/totalhigh_pages.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TOTALHIGH_PAGES 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"totalhigh_pages\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"totalhigh_pages\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kstrtoul() exists" >&5 $as_echo_n "checking whether kstrtoul() exists... " >&6; } if test -d build/kstrtoul; then if test -f build/kstrtoul/kstrtoul.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KSTRTOUL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kstrtoul\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kstrtoul\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi if test "$LINUX_OBJ" != "$LINUX"; then KERNEL_MAKE="$KERNEL_MAKE O=$LINUX_OBJ" fi ;; user) am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:$LINENO: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if test "${am_cv_func_iconv+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_func_iconv=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if test "${am_cv_func_iconv_works+set}" = set; then $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes; then case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv_works=yes else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5 $as_echo_n "checking for iconv declaration... " >&6; } if test "${am_cv_proto_iconv+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then am_cv_proto_iconv_arg1="" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_proto_iconv_arg1="const" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` { $as_echo "$as_me:$LINENO: result: $am_cv_proto_iconv" >&5 $as_echo "$am_cv_proto_iconv" >&6; } else am_cv_proto_iconv_arg1="" fi cat >>confdefs.h <<_ACEOF #define ICONV_CONST $am_cv_proto_iconv_arg1 _ACEOF { $as_echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then gt_cv_func_CFPreferencesCopyAppValue=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_CFPreferencesCopyAppValue=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_CFPREFERENCESCOPYAPPVALUE 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then gt_cv_func_CFLocaleCopyCurrent=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_CFLocaleCopyCurrent=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_CFLOCALECOPYCURRENT 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking for CFLocaleCopyPreferredLanguages" >&5 $as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; } if test "${gt_cv_func_CFLocaleCopyPreferredLanguages+set}" = set; then $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CFLocaleCopyPreferredLanguages(); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then gt_cv_func_CFLocaleCopyPreferredLanguages=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_CFLocaleCopyPreferredLanguages=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 $as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1 _ACEOF fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ || test $gt_cv_func_CFLocaleCopyCurrent = yes \ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$gt_func_gnugettext_libc=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$gt_func_gnugettext_libc=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$gt_func_gnugettext_libc'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:$LINENO: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if test "${am_cv_func_iconv+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_func_iconv=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if test "${am_cv_func_iconv_works+set}" = set; then $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes; then case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv_works=yes else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && test ! -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$gt_func_gnugettext_libintl=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$gt_func_gnugettext_libintl=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi ac_res=`eval 'as_val=${'$gt_func_gnugettext_libintl'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF else USE_NLS=no fi fi { $as_echo "$as_me:$LINENO: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:$LINENO: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:$LINENO: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:$LINENO: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi POSUB=po fi INTLLIBS="$LIBINTL" LIBS="$LIBS $LTLIBINTL $LTLIBICONV" # Check whether --with-mounthelperdir was given. if test "${with_mounthelperdir+set}" = set; then withval=$with_mounthelperdir; mounthelperdir=$withval else mounthelperdir=/sbin fi { $as_echo "$as_me:$LINENO: checking for udev directories" >&5 $as_echo_n "checking for udev directories... " >&6; } # Check whether --with-udevdir was given. if test "${with_udevdir+set}" = set; then withval=$with_udevdir; udevdir=$withval else udevdir=check fi if test "x$udevdir" = xcheck; then path1=/lib/udev path2=/usr/lib/udev default=$path2 if test -d "$path1"; then udevdir="$path1" else if test -d "$path2"; then udevdir="$path2" else udevdir="$default" fi fi fi # Check whether --with-udevruledir was given. if test "${with_udevruledir+set}" = set; then withval=$with_udevruledir; udevruledir=$withval else udevruledir="${udevdir}/rules.d" fi { $as_echo "$as_me:$LINENO: result: $udevdir;$udevruledir" >&5 $as_echo "$udevdir;$udevruledir" >&6; } # Check whether --enable-systemd was given. if test "${enable_systemd+set}" = set; then enableval=$enable_systemd; enable_systemd=$enableval else enable_systemd=check fi # Check whether --with-systemdunitdir was given. if test "${with_systemdunitdir+set}" = set; then withval=$with_systemdunitdir; systemdunitdir=$withval else systemdunitdir=/usr/lib/systemd/system fi # Check whether --with-systemdpresetdir was given. if test "${with_systemdpresetdir+set}" = set; then withval=$with_systemdpresetdir; systemdpresetdir=$withval else systemdpresetdir=/usr/lib/systemd/system-preset fi # Check whether --with-systemdmodulesloaddir was given. if test "${with_systemdmodulesloaddir+set}" = set; then withval=$with_systemdmodulesloaddir; systemdmodulesloaddir=$withval else systemdmodulesloaddir=/usr/lib/modules-load.d fi # Check whether --with-systemdgeneratordir was given. if test "${with_systemdgeneratordir+set}" = set; then withval=$with_systemdgeneratordir; systemdgeneratordir=$withval else systemdgeneratordir=/usr/lib/systemd/system-generators fi if test "x$enable_systemd" = xcheck; then if systemctl --version >/dev/null 2>&1; then enable_systemd=yes else enable_systemd=no fi fi { $as_echo "$as_me:$LINENO: checking for systemd support" >&5 $as_echo_n "checking for systemd support... " >&6; } { $as_echo "$as_me:$LINENO: result: $enable_systemd" >&5 $as_echo "$enable_systemd" >&6; } if test "x$enable_systemd" = xyes; then ZFS_INIT_SYSTEMD=systemd ZFS_MODULE_LOAD=modules-load.d DEFINE_SYSTEMD='--with systemd --define "_unitdir $(systemdunitdir)" --define "_presetdir $(systemdpresetdir)" --define "_generatordir $(systemdgeneratordir)"' modulesloaddir=$systemdmodulesloaddir else DEFINE_SYSTEMD='--without systemd' fi # Check whether --enable-sysvinit was given. if test "${enable_sysvinit+set}" = set; then enableval=$enable_sysvinit; else enable_sysvinit=yes fi if test "x$enable_sysvinit" = xyes; then ZFS_INIT_SYSV=init.d fi { $as_echo "$as_me:$LINENO: checking for dracut directory" >&5 $as_echo_n "checking for dracut directory... " >&6; } # Check whether --with-dracutdir was given. if test "${with_dracutdir+set}" = set; then withval=$with_dracutdir; dracutdir=$withval else dracutdir=check fi if test "x$dracutdir" = xcheck; then path1=/usr/share/dracut path2=/usr/lib/dracut default=$path2 if test -d "$path1"; then dracutdir="$path1" else if test -d "$path2"; then dracutdir="$path2" else dracutdir="$default" fi fi fi { $as_echo "$as_me:$LINENO: result: $dracutdir" >&5 $as_echo "$dracutdir" >&6; } ZLIB= if test "${ac_cv_header_zlib_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for zlib.h" >&5 $as_echo_n "checking for zlib.h... " >&6; } if test "${ac_cv_header_zlib_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 $as_echo "$ac_cv_header_zlib_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking zlib.h usability" >&5 $as_echo_n "checking zlib.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking zlib.h presence" >&5 $as_echo_n "checking zlib.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for zlib.h" >&5 $as_echo_n "checking for zlib.h... " >&6; } if test "${ac_cv_header_zlib_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_zlib_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 $as_echo "$ac_cv_header_zlib_h" >&6; } fi if test "x$ac_cv_header_zlib_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** zlib.h missing, zlib-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** zlib.h missing, zlib-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing compress2" >&5 $as_echo_n "checking for library containing compress2... " >&6; } if test "${ac_cv_search_compress2+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char compress2 (); int main () { return compress2 (); ; return 0; } _ACEOF for ac_lib in '' z; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_compress2=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_compress2+set}" = set; then break fi done if test "${ac_cv_search_compress2+set}" = set; then : else ac_cv_search_compress2=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_compress2" >&5 $as_echo "$ac_cv_search_compress2" >&6; } ac_res=$ac_cv_search_compress2 if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** compress2() missing, zlib-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** compress2() missing, zlib-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing uncompress" >&5 $as_echo_n "checking for library containing uncompress... " >&6; } if test "${ac_cv_search_uncompress+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char uncompress (); int main () { return uncompress (); ; return 0; } _ACEOF for ac_lib in '' z; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_uncompress=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_uncompress+set}" = set; then break fi done if test "${ac_cv_search_uncompress+set}" = set; then : else ac_cv_search_uncompress=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_uncompress" >&5 $as_echo "$ac_cv_search_uncompress" >&6; } ac_res=$ac_cv_search_uncompress if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** uncompress() missing, zlib-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** uncompress() missing, zlib-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing crc32" >&5 $as_echo_n "checking for library containing crc32... " >&6; } if test "${ac_cv_search_crc32+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char crc32 (); int main () { return crc32 (); ; return 0; } _ACEOF for ac_lib in '' z; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_crc32=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_crc32+set}" = set; then break fi done if test "${ac_cv_search_crc32+set}" = set; then : else ac_cv_search_crc32=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_crc32" >&5 $as_echo "$ac_cv_search_crc32" >&6; } ac_res=$ac_cv_search_crc32 if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** crc32() missing, zlib-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** crc32() missing, zlib-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ZLIB="-lz" cat >>confdefs.h <<\_ACEOF #define HAVE_ZLIB 1 _ACEOF LIBUUID= if test "${ac_cv_header_uuid_uuid_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for uuid/uuid.h" >&5 $as_echo_n "checking for uuid/uuid.h... " >&6; } if test "${ac_cv_header_uuid_uuid_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_uuid_uuid_h" >&5 $as_echo "$ac_cv_header_uuid_uuid_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking uuid/uuid.h usability" >&5 $as_echo_n "checking uuid/uuid.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking uuid/uuid.h presence" >&5 $as_echo_n "checking uuid/uuid.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for uuid/uuid.h" >&5 $as_echo_n "checking for uuid/uuid.h... " >&6; } if test "${ac_cv_header_uuid_uuid_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_uuid_uuid_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_uuid_uuid_h" >&5 $as_echo "$ac_cv_header_uuid_uuid_h" >&6; } fi if test "x$ac_cv_header_uuid_uuid_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** uuid/uuid.h missing, libuuid-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** uuid/uuid.h missing, libuuid-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing uuid_generate" >&5 $as_echo_n "checking for library containing uuid_generate... " >&6; } if test "${ac_cv_search_uuid_generate+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char uuid_generate (); int main () { return uuid_generate (); ; return 0; } _ACEOF for ac_lib in '' uuid; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_uuid_generate=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_uuid_generate+set}" = set; then break fi done if test "${ac_cv_search_uuid_generate+set}" = set; then : else ac_cv_search_uuid_generate=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_uuid_generate" >&5 $as_echo "$ac_cv_search_uuid_generate" >&6; } ac_res=$ac_cv_search_uuid_generate if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** uuid_generate() missing, libuuid-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** uuid_generate() missing, libuuid-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing uuid_is_null" >&5 $as_echo_n "checking for library containing uuid_is_null... " >&6; } if test "${ac_cv_search_uuid_is_null+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char uuid_is_null (); int main () { return uuid_is_null (); ; return 0; } _ACEOF for ac_lib in '' uuid; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_uuid_is_null=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_uuid_is_null+set}" = set; then break fi done if test "${ac_cv_search_uuid_is_null+set}" = set; then : else ac_cv_search_uuid_is_null=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_uuid_is_null" >&5 $as_echo "$ac_cv_search_uuid_is_null" >&6; } ac_res=$ac_cv_search_uuid_is_null if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** uuid_is_null() missing, libuuid-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** uuid_is_null() missing, libuuid-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi LIBUUID="-luuid" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBUUID 1 _ACEOF # Check whether --with-tirpc was given. if test "${with_tirpc+set}" = set; then withval=$with_tirpc; else with_tirpc=check fi have_xdr= if test "x$with_tirpc" != "xyes"; then { $as_echo "$as_me:$LINENO: checking for library containing xdrmem_create" >&5 $as_echo_n "checking for library containing xdrmem_create... " >&6; } if test "${ac_cv_search_xdrmem_create+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char xdrmem_create (); int main () { return xdrmem_create (); ; return 0; } _ACEOF for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_xdrmem_create=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_xdrmem_create+set}" = set; then break fi done if test "${ac_cv_search_xdrmem_create+set}" = set; then : else ac_cv_search_xdrmem_create=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_xdrmem_create" >&5 $as_echo "$ac_cv_search_xdrmem_create" >&6; } ac_res=$ac_cv_search_xdrmem_create if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" have_xdr=1 else if test "x$with_tirpc" = "xno"; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: xdrmem_create() requires sunrpc support in libc if not using libtirpc See \`config.log' for more details." >&5 $as_echo "$as_me: error: xdrmem_create() requires sunrpc support in libc if not using libtirpc See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi if test "x$have_xdr" = "x"; then _library_found= pkg_failed=no { $as_echo "$as_me:$LINENO: checking for libtirpc" >&5 $as_echo_n "checking for libtirpc... " >&6; } if test -n "$LIBTIRPC_CFLAGS"; then pkg_cv_LIBTIRPC_CFLAGS="$LIBTIRPC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libtirpc\"") >&5 ($PKG_CONFIG --exists --print-errors "libtirpc") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBTIRPC_CFLAGS=`$PKG_CONFIG --cflags "libtirpc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBTIRPC_LIBS"; then pkg_cv_LIBTIRPC_LIBS="$LIBTIRPC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libtirpc\"") >&5 ($PKG_CONFIG --exists --print-errors "libtirpc") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBTIRPC_LIBS=`$PKG_CONFIG --libs "libtirpc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBTIRPC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtirpc" 2>&1` else LIBTIRPC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtirpc" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBTIRPC_PKG_ERRORS" >&5 if test -f /usr/include/rpc/xdr.h; then LIBTIRPC_LIBS="-ltirpc" _library_found=1 else if test -f /usr/local/include/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/local/include" LIBTIRPC_LIBS="-L/usr/local -ltirpc" _library_found=1 else if test "x$_library_found" != "x1"; then if test -f /usr/include/tirpc/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/include/tirpc" LIBTIRPC_LIBS="-ltirpc" _library_found=1 else if test -f /usr/local/include/tirpc/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/local/include/tirpc" LIBTIRPC_LIBS="-L/usr/local -ltirpc" _library_found=1 fi fi fi fi fi if test -z "$_library_found"; then { $as_echo "$as_me:$LINENO: WARNING: cannot find libtirpc via pkg-config or in the standard locations" >&5 $as_echo "$as_me: WARNING: cannot find libtirpc via pkg-config or in the standard locations" >&2;} fi elif test $pkg_failed = untried; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test -f /usr/include/rpc/xdr.h; then LIBTIRPC_LIBS="-ltirpc" _library_found=1 else if test -f /usr/local/include/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/local/include" LIBTIRPC_LIBS="-L/usr/local -ltirpc" _library_found=1 else if test "x$_library_found" != "x1"; then if test -f /usr/include/tirpc/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/include/tirpc" LIBTIRPC_LIBS="-ltirpc" _library_found=1 else if test -f /usr/local/include/tirpc/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/local/include/tirpc" LIBTIRPC_LIBS="-L/usr/local -ltirpc" _library_found=1 fi fi fi fi fi if test -z "$_library_found"; then { $as_echo "$as_me:$LINENO: WARNING: cannot find libtirpc via pkg-config or in the standard locations" >&5 $as_echo "$as_me: WARNING: cannot find libtirpc via pkg-config or in the standard locations" >&2;} fi else LIBTIRPC_CFLAGS=$pkg_cv_LIBTIRPC_CFLAGS LIBTIRPC_LIBS=$pkg_cv_LIBTIRPC_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } _library_found=1 fi if test -n "$_library_found"; then CPPFLAGS_save="${CPPFLAGS}" CFLAGS_save="${CFLAGS}" CXXFLAGS_save="${CXXFLAGS}" OBJCFLAGS_save="${OBJCFLAGS}" LDFLAGS_save="${LDFLAGS}" LIBS_save="${LIBS}" CPPFLAGS="$CPPFLAGS $(echo $LIBTIRPC_CFLAGS | sed 's/-include */-include-/g; s/^/ /; s/ ^-^ *//g; s/ -^Ii^ *//g; s/-include-/-include /g; s/^ //;')" CFLAGS="$CFLAGS $LIBTIRPC_CFLAGS" LDFLAGS="$LDFLAGS $LIBTIRPC_LIBS" if test "${ac_cv_header_rpc_xdr_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for rpc/xdr.h" >&5 $as_echo_n "checking for rpc/xdr.h... " >&6; } if test "${ac_cv_header_rpc_xdr_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_rpc_xdr_h" >&5 $as_echo "$ac_cv_header_rpc_xdr_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking rpc/xdr.h usability" >&5 $as_echo_n "checking rpc/xdr.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking rpc/xdr.h presence" >&5 $as_echo_n "checking rpc/xdr.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for rpc/xdr.h" >&5 $as_echo_n "checking for rpc/xdr.h... " >&6; } if test "${ac_cv_header_rpc_xdr_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_rpc_xdr_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_rpc_xdr_h" >&5 $as_echo "$ac_cv_header_rpc_xdr_h" >&6; } fi if test "x$ac_cv_header_rpc_xdr_h" = x""yes; then : else { $as_echo "$as_me:$LINENO: WARNING: header rpc/xdr.h for library libtirpc is not usable" >&5 $as_echo "$as_me: WARNING: header rpc/xdr.h for library libtirpc is not usable" >&2;} _library_found= fi { $as_echo "$as_me:$LINENO: checking for xdrmem_create in -ltirpc" >&5 $as_echo_n "checking for xdrmem_create in -ltirpc... " >&6; } if test "${ac_cv_lib_tirpc_xdrmem_create+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltirpc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char xdrmem_create (); int main () { return xdrmem_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_tirpc_xdrmem_create=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_tirpc_xdrmem_create=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tirpc_xdrmem_create" >&5 $as_echo "$ac_cv_lib_tirpc_xdrmem_create" >&6; } if test "x$ac_cv_lib_tirpc_xdrmem_create" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBTIRPC 1 _ACEOF LIBS="-ltirpc $LIBS" else { $as_echo "$as_me:$LINENO: WARNING: cannot find xdrmem_create in library tirpc" >&5 $as_echo "$as_me: WARNING: cannot find xdrmem_create in library tirpc" >&2;} _library_found= fi CPPFLAGS="${CPPFLAGS_save}" CFLAGS="${CFLAGS_save}" CXXFLAGS="${CXXFLAGS_save}" OBJCFLAGS="${OBJCFLAGS_save}" LDFLAGS="${LDFLAGS_save}" LIBS="${LIBS_save}" fi if test -n "$_library_found"; then :; else :; if test "x$with_tirpc" = "xyes"; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: --with-tirpc was given, but libtirpc is not available, try installing libtirpc-devel See \`config.log' for more details." >&5 $as_echo "$as_me: error: --with-tirpc was given, but libtirpc is not available, try installing libtirpc-devel See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: neither libc sunrpc support nor libtirpc is available, try installing libtirpc-devel See \`config.log' for more details." >&5 $as_echo "$as_me: error: neither libc sunrpc support nor libtirpc is available, try installing libtirpc-devel See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi LIBBLKID= if test "${ac_cv_header_blkid_blkid_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for blkid/blkid.h" >&5 $as_echo_n "checking for blkid/blkid.h... " >&6; } if test "${ac_cv_header_blkid_blkid_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_blkid_blkid_h" >&5 $as_echo "$ac_cv_header_blkid_blkid_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking blkid/blkid.h usability" >&5 $as_echo_n "checking blkid/blkid.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking blkid/blkid.h presence" >&5 $as_echo_n "checking blkid/blkid.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for blkid/blkid.h" >&5 $as_echo_n "checking for blkid/blkid.h... " >&6; } if test "${ac_cv_header_blkid_blkid_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_blkid_blkid_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_blkid_blkid_h" >&5 $as_echo "$ac_cv_header_blkid_blkid_h" >&6; } fi if test "x$ac_cv_header_blkid_blkid_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** blkid.h missing, libblkid-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** blkid.h missing, libblkid-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi LIBBLKID="-lblkid" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBBLKID 1 _ACEOF LIBUDEV= if test "${ac_cv_header_libudev_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for libudev.h" >&5 $as_echo_n "checking for libudev.h... " >&6; } if test "${ac_cv_header_libudev_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libudev_h" >&5 $as_echo "$ac_cv_header_libudev_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking libudev.h usability" >&5 $as_echo_n "checking libudev.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking libudev.h presence" >&5 $as_echo_n "checking libudev.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: libudev.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: libudev.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: libudev.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: libudev.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: libudev.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: libudev.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: libudev.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: libudev.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: libudev.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: libudev.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for libudev.h" >&5 $as_echo_n "checking for libudev.h... " >&6; } if test "${ac_cv_header_libudev_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_libudev_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libudev_h" >&5 $as_echo "$ac_cv_header_libudev_h" >&6; } fi if test "x$ac_cv_header_libudev_h" = x""yes; then user_libudev=yes LIBUDEV="-ludev" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBUDEV 1 _ACEOF else user_libudev=no fi { $as_echo "$as_me:$LINENO: checking for library containing udev_device_get_is_initialized" >&5 $as_echo_n "checking for library containing udev_device_get_is_initialized... " >&6; } if test "${ac_cv_search_udev_device_get_is_initialized+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char udev_device_get_is_initialized (); int main () { return udev_device_get_is_initialized (); ; return 0; } _ACEOF for ac_lib in '' udev; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_udev_device_get_is_initialized=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_udev_device_get_is_initialized+set}" = set; then break fi done if test "${ac_cv_search_udev_device_get_is_initialized+set}" = set; then : else ac_cv_search_udev_device_get_is_initialized=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_udev_device_get_is_initialized" >&5 $as_echo "$ac_cv_search_udev_device_get_is_initialized" >&6; } ac_res=$ac_cv_search_udev_device_get_is_initialized if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBUDEV_UDEV_DEVICE_GET_IS_INITIALIZED 1 _ACEOF fi LIBSSL= if test "${ac_cv_header_openssl_evp_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for openssl/evp.h" >&5 $as_echo_n "checking for openssl/evp.h... " >&6; } if test "${ac_cv_header_openssl_evp_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_openssl_evp_h" >&5 $as_echo "$ac_cv_header_openssl_evp_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking openssl/evp.h usability" >&5 $as_echo_n "checking openssl/evp.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking openssl/evp.h presence" >&5 $as_echo_n "checking openssl/evp.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for openssl/evp.h" >&5 $as_echo_n "checking for openssl/evp.h... " >&6; } if test "${ac_cv_header_openssl_evp_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_openssl_evp_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_openssl_evp_h" >&5 $as_echo "$ac_cv_header_openssl_evp_h" >&6; } fi if test "x$ac_cv_header_openssl_evp_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** evp.h missing, libssl-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** evp.h missing, libssl-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi LIBSSL="-lssl -lcrypto" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBSSL 1 _ACEOF LIBAIO= if test "${ac_cv_header_libaio_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for libaio.h" >&5 $as_echo_n "checking for libaio.h... " >&6; } if test "${ac_cv_header_libaio_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libaio_h" >&5 $as_echo "$ac_cv_header_libaio_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking libaio.h usability" >&5 $as_echo_n "checking libaio.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking libaio.h presence" >&5 $as_echo_n "checking libaio.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: libaio.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: libaio.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: libaio.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: libaio.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: libaio.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: libaio.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: libaio.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: libaio.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: libaio.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: libaio.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for libaio.h" >&5 $as_echo_n "checking for libaio.h... " >&6; } if test "${ac_cv_header_libaio_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_libaio_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libaio_h" >&5 $as_echo "$ac_cv_header_libaio_h" >&6; } fi if test "x$ac_cv_header_libaio_h" = x""yes; then user_libaio=yes LIBAIO="-laio" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBAIO 1 _ACEOF else user_libaio=no fi if test "x$runstatedir" = x; then runstatedir='${localstatedir}/run' fi { $as_echo "$as_me:$LINENO: checking makedev() is declared in sys/sysmacros.h" >&5 $as_echo_n "checking makedev() is declared in sys/sysmacros.h... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { int k; k = makedev(0,0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_MAKEDEV_IN_SYSMACROS 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking makedev() is declared in sys/mkdev.h" >&5 $as_echo_n "checking makedev() is declared in sys/mkdev.h... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { int k; k = makedev(0,0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_MAKEDEV_IN_MKDEV 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Check whether --with-zfsexecdir was given. if test "${with_zfsexecdir+set}" = set; then withval=$with_zfsexecdir; zfsexecdir=$withval else zfsexecdir="${libexecdir}/zfs" fi ZONENAME="echo global" for ac_func in mlockall strlcat strlcpy do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ;; all) am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:$LINENO: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if test "${am_cv_func_iconv+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_func_iconv=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if test "${am_cv_func_iconv_works+set}" = set; then $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes; then case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv_works=yes else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking for iconv declaration" >&5 $as_echo_n "checking for iconv declaration... " >&6; } if test "${am_cv_proto_iconv+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then am_cv_proto_iconv_arg1="" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 am_cv_proto_iconv_arg1="const" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" fi am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` { $as_echo "$as_me:$LINENO: result: $am_cv_proto_iconv" >&5 $as_echo "$am_cv_proto_iconv" >&6; } else am_cv_proto_iconv_arg1="" fi cat >>confdefs.h <<_ACEOF #define ICONV_CONST $am_cv_proto_iconv_arg1 _ACEOF { $as_echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then gt_cv_func_CFPreferencesCopyAppValue=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_CFPreferencesCopyAppValue=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_CFPREFERENCESCOPYAPPVALUE 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then gt_cv_func_CFLocaleCopyCurrent=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_CFLocaleCopyCurrent=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_CFLOCALECOPYCURRENT 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking for CFLocaleCopyPreferredLanguages" >&5 $as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; } if test "${gt_cv_func_CFLocaleCopyPreferredLanguages+set}" = set; then $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { CFLocaleCopyPreferredLanguages(); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then gt_cv_func_CFLocaleCopyPreferredLanguages=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 gt_cv_func_CFLocaleCopyPreferredLanguages=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5 $as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; } if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1 _ACEOF fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ || test $gt_cv_func_CFLocaleCopyCurrent = yes \ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$gt_func_gnugettext_libc=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$gt_func_gnugettext_libc=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$gt_func_gnugettext_libc'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:$LINENO: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if test "${am_cv_func_iconv+set}" = set; then $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_func_iconv=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then am_cv_lib_iconv=yes am_cv_func_iconv=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if test "${am_cv_func_iconv_works+set}" = set; then $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes; then case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ { /* Try standardized names. */ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP"); /* Try IRIX, OSF/1 names. */ iconv_t cd2 = iconv_open ("UTF-8", "eucJP"); /* Try AIX names. */ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP"); /* Try HP-UX names. */ iconv_t cd4 = iconv_open ("utf8", "eucJP"); if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1) && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1)) result |= 16; if (cd1 != (iconv_t)(-1)) iconv_close (cd1); if (cd2 != (iconv_t)(-1)) iconv_close (cd2); if (cd3 != (iconv_t)(-1)) iconv_close (cd3); if (cd4 != (iconv_t)(-1)) iconv_close (cd4); } return result; ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then am_cv_func_iconv_works=yes else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { $as_echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then cat >>confdefs.h <<\_ACEOF #define HAVE_ICONV 1 _ACEOF fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:$LINENO: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:$LINENO: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && test ! -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$gt_func_gnugettext_libintl=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$gt_func_gnugettext_libintl=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi ac_res=`eval 'as_val=${'$gt_func_gnugettext_libintl'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then cat >>confdefs.h <<\_ACEOF #define ENABLE_NLS 1 _ACEOF else USE_NLS=no fi fi { $as_echo "$as_me:$LINENO: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:$LINENO: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:$LINENO: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:$LINENO: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:$LINENO: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:$LINENO: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi cat >>confdefs.h <<\_ACEOF #define HAVE_GETTEXT 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_DCGETTEXT 1 _ACEOF fi POSUB=po fi INTLLIBS="$LIBINTL" LIBS="$LIBS $LTLIBINTL $LTLIBICONV" # Check whether --with-mounthelperdir was given. if test "${with_mounthelperdir+set}" = set; then withval=$with_mounthelperdir; mounthelperdir=$withval else mounthelperdir=/sbin fi { $as_echo "$as_me:$LINENO: checking for udev directories" >&5 $as_echo_n "checking for udev directories... " >&6; } # Check whether --with-udevdir was given. if test "${with_udevdir+set}" = set; then withval=$with_udevdir; udevdir=$withval else udevdir=check fi if test "x$udevdir" = xcheck; then path1=/lib/udev path2=/usr/lib/udev default=$path2 if test -d "$path1"; then udevdir="$path1" else if test -d "$path2"; then udevdir="$path2" else udevdir="$default" fi fi fi # Check whether --with-udevruledir was given. if test "${with_udevruledir+set}" = set; then withval=$with_udevruledir; udevruledir=$withval else udevruledir="${udevdir}/rules.d" fi { $as_echo "$as_me:$LINENO: result: $udevdir;$udevruledir" >&5 $as_echo "$udevdir;$udevruledir" >&6; } # Check whether --enable-systemd was given. if test "${enable_systemd+set}" = set; then enableval=$enable_systemd; enable_systemd=$enableval else enable_systemd=check fi # Check whether --with-systemdunitdir was given. if test "${with_systemdunitdir+set}" = set; then withval=$with_systemdunitdir; systemdunitdir=$withval else systemdunitdir=/usr/lib/systemd/system fi # Check whether --with-systemdpresetdir was given. if test "${with_systemdpresetdir+set}" = set; then withval=$with_systemdpresetdir; systemdpresetdir=$withval else systemdpresetdir=/usr/lib/systemd/system-preset fi # Check whether --with-systemdmodulesloaddir was given. if test "${with_systemdmodulesloaddir+set}" = set; then withval=$with_systemdmodulesloaddir; systemdmodulesloaddir=$withval else systemdmodulesloaddir=/usr/lib/modules-load.d fi # Check whether --with-systemdgeneratordir was given. if test "${with_systemdgeneratordir+set}" = set; then withval=$with_systemdgeneratordir; systemdgeneratordir=$withval else systemdgeneratordir=/usr/lib/systemd/system-generators fi if test "x$enable_systemd" = xcheck; then if systemctl --version >/dev/null 2>&1; then enable_systemd=yes else enable_systemd=no fi fi { $as_echo "$as_me:$LINENO: checking for systemd support" >&5 $as_echo_n "checking for systemd support... " >&6; } { $as_echo "$as_me:$LINENO: result: $enable_systemd" >&5 $as_echo "$enable_systemd" >&6; } if test "x$enable_systemd" = xyes; then ZFS_INIT_SYSTEMD=systemd ZFS_MODULE_LOAD=modules-load.d DEFINE_SYSTEMD='--with systemd --define "_unitdir $(systemdunitdir)" --define "_presetdir $(systemdpresetdir)" --define "_generatordir $(systemdgeneratordir)"' modulesloaddir=$systemdmodulesloaddir else DEFINE_SYSTEMD='--without systemd' fi # Check whether --enable-sysvinit was given. if test "${enable_sysvinit+set}" = set; then enableval=$enable_sysvinit; else enable_sysvinit=yes fi if test "x$enable_sysvinit" = xyes; then ZFS_INIT_SYSV=init.d fi { $as_echo "$as_me:$LINENO: checking for dracut directory" >&5 $as_echo_n "checking for dracut directory... " >&6; } # Check whether --with-dracutdir was given. if test "${with_dracutdir+set}" = set; then withval=$with_dracutdir; dracutdir=$withval else dracutdir=check fi if test "x$dracutdir" = xcheck; then path1=/usr/share/dracut path2=/usr/lib/dracut default=$path2 if test -d "$path1"; then dracutdir="$path1" else if test -d "$path2"; then dracutdir="$path2" else dracutdir="$default" fi fi fi { $as_echo "$as_me:$LINENO: result: $dracutdir" >&5 $as_echo "$dracutdir" >&6; } ZLIB= if test "${ac_cv_header_zlib_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for zlib.h" >&5 $as_echo_n "checking for zlib.h... " >&6; } if test "${ac_cv_header_zlib_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 $as_echo "$ac_cv_header_zlib_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking zlib.h usability" >&5 $as_echo_n "checking zlib.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking zlib.h presence" >&5 $as_echo_n "checking zlib.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for zlib.h" >&5 $as_echo_n "checking for zlib.h... " >&6; } if test "${ac_cv_header_zlib_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_zlib_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 $as_echo "$ac_cv_header_zlib_h" >&6; } fi if test "x$ac_cv_header_zlib_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** zlib.h missing, zlib-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** zlib.h missing, zlib-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing compress2" >&5 $as_echo_n "checking for library containing compress2... " >&6; } if test "${ac_cv_search_compress2+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char compress2 (); int main () { return compress2 (); ; return 0; } _ACEOF for ac_lib in '' z; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_compress2=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_compress2+set}" = set; then break fi done if test "${ac_cv_search_compress2+set}" = set; then : else ac_cv_search_compress2=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_compress2" >&5 $as_echo "$ac_cv_search_compress2" >&6; } ac_res=$ac_cv_search_compress2 if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** compress2() missing, zlib-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** compress2() missing, zlib-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing uncompress" >&5 $as_echo_n "checking for library containing uncompress... " >&6; } if test "${ac_cv_search_uncompress+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char uncompress (); int main () { return uncompress (); ; return 0; } _ACEOF for ac_lib in '' z; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_uncompress=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_uncompress+set}" = set; then break fi done if test "${ac_cv_search_uncompress+set}" = set; then : else ac_cv_search_uncompress=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_uncompress" >&5 $as_echo "$ac_cv_search_uncompress" >&6; } ac_res=$ac_cv_search_uncompress if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** uncompress() missing, zlib-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** uncompress() missing, zlib-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing crc32" >&5 $as_echo_n "checking for library containing crc32... " >&6; } if test "${ac_cv_search_crc32+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char crc32 (); int main () { return crc32 (); ; return 0; } _ACEOF for ac_lib in '' z; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_crc32=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_crc32+set}" = set; then break fi done if test "${ac_cv_search_crc32+set}" = set; then : else ac_cv_search_crc32=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_crc32" >&5 $as_echo "$ac_cv_search_crc32" >&6; } ac_res=$ac_cv_search_crc32 if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** crc32() missing, zlib-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** crc32() missing, zlib-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ZLIB="-lz" cat >>confdefs.h <<\_ACEOF #define HAVE_ZLIB 1 _ACEOF LIBUUID= if test "${ac_cv_header_uuid_uuid_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for uuid/uuid.h" >&5 $as_echo_n "checking for uuid/uuid.h... " >&6; } if test "${ac_cv_header_uuid_uuid_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_uuid_uuid_h" >&5 $as_echo "$ac_cv_header_uuid_uuid_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking uuid/uuid.h usability" >&5 $as_echo_n "checking uuid/uuid.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking uuid/uuid.h presence" >&5 $as_echo_n "checking uuid/uuid.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: uuid/uuid.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: uuid/uuid.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for uuid/uuid.h" >&5 $as_echo_n "checking for uuid/uuid.h... " >&6; } if test "${ac_cv_header_uuid_uuid_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_uuid_uuid_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_uuid_uuid_h" >&5 $as_echo "$ac_cv_header_uuid_uuid_h" >&6; } fi if test "x$ac_cv_header_uuid_uuid_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** uuid/uuid.h missing, libuuid-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** uuid/uuid.h missing, libuuid-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing uuid_generate" >&5 $as_echo_n "checking for library containing uuid_generate... " >&6; } if test "${ac_cv_search_uuid_generate+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char uuid_generate (); int main () { return uuid_generate (); ; return 0; } _ACEOF for ac_lib in '' uuid; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_uuid_generate=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_uuid_generate+set}" = set; then break fi done if test "${ac_cv_search_uuid_generate+set}" = set; then : else ac_cv_search_uuid_generate=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_uuid_generate" >&5 $as_echo "$ac_cv_search_uuid_generate" >&6; } ac_res=$ac_cv_search_uuid_generate if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** uuid_generate() missing, libuuid-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** uuid_generate() missing, libuuid-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi { $as_echo "$as_me:$LINENO: checking for library containing uuid_is_null" >&5 $as_echo_n "checking for library containing uuid_is_null... " >&6; } if test "${ac_cv_search_uuid_is_null+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char uuid_is_null (); int main () { return uuid_is_null (); ; return 0; } _ACEOF for ac_lib in '' uuid; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_uuid_is_null=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_uuid_is_null+set}" = set; then break fi done if test "${ac_cv_search_uuid_is_null+set}" = set; then : else ac_cv_search_uuid_is_null=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_uuid_is_null" >&5 $as_echo "$ac_cv_search_uuid_is_null" >&6; } ac_res=$ac_cv_search_uuid_is_null if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** uuid_is_null() missing, libuuid-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** uuid_is_null() missing, libuuid-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi LIBUUID="-luuid" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBUUID 1 _ACEOF # Check whether --with-tirpc was given. if test "${with_tirpc+set}" = set; then withval=$with_tirpc; else with_tirpc=check fi have_xdr= if test "x$with_tirpc" != "xyes"; then { $as_echo "$as_me:$LINENO: checking for library containing xdrmem_create" >&5 $as_echo_n "checking for library containing xdrmem_create... " >&6; } if test "${ac_cv_search_xdrmem_create+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char xdrmem_create (); int main () { return xdrmem_create (); ; return 0; } _ACEOF for ac_lib in '' ; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_xdrmem_create=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_xdrmem_create+set}" = set; then break fi done if test "${ac_cv_search_xdrmem_create+set}" = set; then : else ac_cv_search_xdrmem_create=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_xdrmem_create" >&5 $as_echo "$ac_cv_search_xdrmem_create" >&6; } ac_res=$ac_cv_search_xdrmem_create if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" have_xdr=1 else if test "x$with_tirpc" = "xno"; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: xdrmem_create() requires sunrpc support in libc if not using libtirpc See \`config.log' for more details." >&5 $as_echo "$as_me: error: xdrmem_create() requires sunrpc support in libc if not using libtirpc See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi if test "x$have_xdr" = "x"; then _library_found= pkg_failed=no { $as_echo "$as_me:$LINENO: checking for libtirpc" >&5 $as_echo_n "checking for libtirpc... " >&6; } if test -n "$LIBTIRPC_CFLAGS"; then pkg_cv_LIBTIRPC_CFLAGS="$LIBTIRPC_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libtirpc\"") >&5 ($PKG_CONFIG --exists --print-errors "libtirpc") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBTIRPC_CFLAGS=`$PKG_CONFIG --cflags "libtirpc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBTIRPC_LIBS"; then pkg_cv_LIBTIRPC_LIBS="$LIBTIRPC_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libtirpc\"") >&5 ($PKG_CONFIG --exists --print-errors "libtirpc") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_LIBTIRPC_LIBS=`$PKG_CONFIG --libs "libtirpc" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBTIRPC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libtirpc" 2>&1` else LIBTIRPC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libtirpc" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBTIRPC_PKG_ERRORS" >&5 if test -f /usr/include/rpc/xdr.h; then LIBTIRPC_LIBS="-ltirpc" _library_found=1 else if test -f /usr/local/include/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/local/include" LIBTIRPC_LIBS="-L/usr/local -ltirpc" _library_found=1 else if test "x$_library_found" != "x1"; then if test -f /usr/include/tirpc/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/include/tirpc" LIBTIRPC_LIBS="-ltirpc" _library_found=1 else if test -f /usr/local/include/tirpc/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/local/include/tirpc" LIBTIRPC_LIBS="-L/usr/local -ltirpc" _library_found=1 fi fi fi fi fi if test -z "$_library_found"; then { $as_echo "$as_me:$LINENO: WARNING: cannot find libtirpc via pkg-config or in the standard locations" >&5 $as_echo "$as_me: WARNING: cannot find libtirpc via pkg-config or in the standard locations" >&2;} fi elif test $pkg_failed = untried; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test -f /usr/include/rpc/xdr.h; then LIBTIRPC_LIBS="-ltirpc" _library_found=1 else if test -f /usr/local/include/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/local/include" LIBTIRPC_LIBS="-L/usr/local -ltirpc" _library_found=1 else if test "x$_library_found" != "x1"; then if test -f /usr/include/tirpc/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/include/tirpc" LIBTIRPC_LIBS="-ltirpc" _library_found=1 else if test -f /usr/local/include/tirpc/rpc/xdr.h; then LIBTIRPC_CFLAGS="-I/usr/local/include/tirpc" LIBTIRPC_LIBS="-L/usr/local -ltirpc" _library_found=1 fi fi fi fi fi if test -z "$_library_found"; then { $as_echo "$as_me:$LINENO: WARNING: cannot find libtirpc via pkg-config or in the standard locations" >&5 $as_echo "$as_me: WARNING: cannot find libtirpc via pkg-config or in the standard locations" >&2;} fi else LIBTIRPC_CFLAGS=$pkg_cv_LIBTIRPC_CFLAGS LIBTIRPC_LIBS=$pkg_cv_LIBTIRPC_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } _library_found=1 fi if test -n "$_library_found"; then CPPFLAGS_save="${CPPFLAGS}" CFLAGS_save="${CFLAGS}" CXXFLAGS_save="${CXXFLAGS}" OBJCFLAGS_save="${OBJCFLAGS}" LDFLAGS_save="${LDFLAGS}" LIBS_save="${LIBS}" CPPFLAGS="$CPPFLAGS $(echo $LIBTIRPC_CFLAGS | sed 's/-include */-include-/g; s/^/ /; s/ ^-^ *//g; s/ -^Ii^ *//g; s/-include-/-include /g; s/^ //;')" CFLAGS="$CFLAGS $LIBTIRPC_CFLAGS" LDFLAGS="$LDFLAGS $LIBTIRPC_LIBS" if test "${ac_cv_header_rpc_xdr_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for rpc/xdr.h" >&5 $as_echo_n "checking for rpc/xdr.h... " >&6; } if test "${ac_cv_header_rpc_xdr_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_rpc_xdr_h" >&5 $as_echo "$ac_cv_header_rpc_xdr_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking rpc/xdr.h usability" >&5 $as_echo_n "checking rpc/xdr.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking rpc/xdr.h presence" >&5 $as_echo_n "checking rpc/xdr.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: rpc/xdr.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: rpc/xdr.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for rpc/xdr.h" >&5 $as_echo_n "checking for rpc/xdr.h... " >&6; } if test "${ac_cv_header_rpc_xdr_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_rpc_xdr_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_rpc_xdr_h" >&5 $as_echo "$ac_cv_header_rpc_xdr_h" >&6; } fi if test "x$ac_cv_header_rpc_xdr_h" = x""yes; then : else { $as_echo "$as_me:$LINENO: WARNING: header rpc/xdr.h for library libtirpc is not usable" >&5 $as_echo "$as_me: WARNING: header rpc/xdr.h for library libtirpc is not usable" >&2;} _library_found= fi { $as_echo "$as_me:$LINENO: checking for xdrmem_create in -ltirpc" >&5 $as_echo_n "checking for xdrmem_create in -ltirpc... " >&6; } if test "${ac_cv_lib_tirpc_xdrmem_create+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ltirpc $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char xdrmem_create (); int main () { return xdrmem_create (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_tirpc_xdrmem_create=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_tirpc_xdrmem_create=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_tirpc_xdrmem_create" >&5 $as_echo "$ac_cv_lib_tirpc_xdrmem_create" >&6; } if test "x$ac_cv_lib_tirpc_xdrmem_create" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBTIRPC 1 _ACEOF LIBS="-ltirpc $LIBS" else { $as_echo "$as_me:$LINENO: WARNING: cannot find xdrmem_create in library tirpc" >&5 $as_echo "$as_me: WARNING: cannot find xdrmem_create in library tirpc" >&2;} _library_found= fi CPPFLAGS="${CPPFLAGS_save}" CFLAGS="${CFLAGS_save}" CXXFLAGS="${CXXFLAGS_save}" OBJCFLAGS="${OBJCFLAGS_save}" LDFLAGS="${LDFLAGS_save}" LIBS="${LIBS_save}" fi if test -n "$_library_found"; then :; else :; if test "x$with_tirpc" = "xyes"; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: --with-tirpc was given, but libtirpc is not available, try installing libtirpc-devel See \`config.log' for more details." >&5 $as_echo "$as_me: error: --with-tirpc was given, but libtirpc is not available, try installing libtirpc-devel See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: neither libc sunrpc support nor libtirpc is available, try installing libtirpc-devel See \`config.log' for more details." >&5 $as_echo "$as_me: error: neither libc sunrpc support nor libtirpc is available, try installing libtirpc-devel See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi LIBBLKID= if test "${ac_cv_header_blkid_blkid_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for blkid/blkid.h" >&5 $as_echo_n "checking for blkid/blkid.h... " >&6; } if test "${ac_cv_header_blkid_blkid_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_blkid_blkid_h" >&5 $as_echo "$ac_cv_header_blkid_blkid_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking blkid/blkid.h usability" >&5 $as_echo_n "checking blkid/blkid.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking blkid/blkid.h presence" >&5 $as_echo_n "checking blkid/blkid.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: blkid/blkid.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: blkid/blkid.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for blkid/blkid.h" >&5 $as_echo_n "checking for blkid/blkid.h... " >&6; } if test "${ac_cv_header_blkid_blkid_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_blkid_blkid_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_blkid_blkid_h" >&5 $as_echo "$ac_cv_header_blkid_blkid_h" >&6; } fi if test "x$ac_cv_header_blkid_blkid_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** blkid.h missing, libblkid-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** blkid.h missing, libblkid-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi LIBBLKID="-lblkid" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBBLKID 1 _ACEOF LIBUDEV= if test "${ac_cv_header_libudev_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for libudev.h" >&5 $as_echo_n "checking for libudev.h... " >&6; } if test "${ac_cv_header_libudev_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libudev_h" >&5 $as_echo "$ac_cv_header_libudev_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking libudev.h usability" >&5 $as_echo_n "checking libudev.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking libudev.h presence" >&5 $as_echo_n "checking libudev.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: libudev.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: libudev.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: libudev.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: libudev.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: libudev.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: libudev.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: libudev.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: libudev.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: libudev.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libudev.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: libudev.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for libudev.h" >&5 $as_echo_n "checking for libudev.h... " >&6; } if test "${ac_cv_header_libudev_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_libudev_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libudev_h" >&5 $as_echo "$ac_cv_header_libudev_h" >&6; } fi if test "x$ac_cv_header_libudev_h" = x""yes; then user_libudev=yes LIBUDEV="-ludev" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBUDEV 1 _ACEOF else user_libudev=no fi { $as_echo "$as_me:$LINENO: checking for library containing udev_device_get_is_initialized" >&5 $as_echo_n "checking for library containing udev_device_get_is_initialized... " >&6; } if test "${ac_cv_search_udev_device_get_is_initialized+set}" = set; then $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char udev_device_get_is_initialized (); int main () { return udev_device_get_is_initialized (); ; return 0; } _ACEOF for ac_lib in '' udev; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_search_udev_device_get_is_initialized=$ac_res else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext if test "${ac_cv_search_udev_device_get_is_initialized+set}" = set; then break fi done if test "${ac_cv_search_udev_device_get_is_initialized+set}" = set; then : else ac_cv_search_udev_device_get_is_initialized=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_search_udev_device_get_is_initialized" >&5 $as_echo "$ac_cv_search_udev_device_get_is_initialized" >&6; } ac_res=$ac_cv_search_udev_device_get_is_initialized if test "$ac_res" != no; then test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBUDEV_UDEV_DEVICE_GET_IS_INITIALIZED 1 _ACEOF fi LIBSSL= if test "${ac_cv_header_openssl_evp_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for openssl/evp.h" >&5 $as_echo_n "checking for openssl/evp.h... " >&6; } if test "${ac_cv_header_openssl_evp_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_openssl_evp_h" >&5 $as_echo "$ac_cv_header_openssl_evp_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking openssl/evp.h usability" >&5 $as_echo_n "checking openssl/evp.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking openssl/evp.h presence" >&5 $as_echo_n "checking openssl/evp.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: openssl/evp.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: openssl/evp.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for openssl/evp.h" >&5 $as_echo_n "checking for openssl/evp.h... " >&6; } if test "${ac_cv_header_openssl_evp_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_openssl_evp_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_openssl_evp_h" >&5 $as_echo "$ac_cv_header_openssl_evp_h" >&6; } fi if test "x$ac_cv_header_openssl_evp_h" = x""yes; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: *** evp.h missing, libssl-devel package required See \`config.log' for more details." >&5 $as_echo "$as_me: error: *** evp.h missing, libssl-devel package required See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi LIBSSL="-lssl -lcrypto" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBSSL 1 _ACEOF LIBAIO= if test "${ac_cv_header_libaio_h+set}" = set; then { $as_echo "$as_me:$LINENO: checking for libaio.h" >&5 $as_echo_n "checking for libaio.h... " >&6; } if test "${ac_cv_header_libaio_h+set}" = set; then $as_echo_n "(cached) " >&6 fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libaio_h" >&5 $as_echo "$ac_cv_header_libaio_h" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking libaio.h usability" >&5 $as_echo_n "checking libaio.h usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking libaio.h presence" >&5 $as_echo_n "checking libaio.h presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: libaio.h: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: libaio.h: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: libaio.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: libaio.h: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: libaio.h: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: libaio.h: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: libaio.h: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: libaio.h: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: libaio.h: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: libaio.h: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: libaio.h: in the future, the compiler will take precedence" >&2;} ;; esac { $as_echo "$as_me:$LINENO: checking for libaio.h" >&5 $as_echo_n "checking for libaio.h... " >&6; } if test "${ac_cv_header_libaio_h+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_header_libaio_h=$ac_header_preproc fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_libaio_h" >&5 $as_echo "$ac_cv_header_libaio_h" >&6; } fi if test "x$ac_cv_header_libaio_h" = x""yes; then user_libaio=yes LIBAIO="-laio" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBAIO 1 _ACEOF else user_libaio=no fi if test "x$runstatedir" = x; then runstatedir='${localstatedir}/run' fi { $as_echo "$as_me:$LINENO: checking makedev() is declared in sys/sysmacros.h" >&5 $as_echo_n "checking makedev() is declared in sys/sysmacros.h... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { int k; k = makedev(0,0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_MAKEDEV_IN_SYSMACROS 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking makedev() is declared in sys/mkdev.h" >&5 $as_echo_n "checking makedev() is declared in sys/mkdev.h... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main () { int k; k = makedev(0,0); ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_MAKEDEV_IN_MKDEV 1 _ACEOF else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Check whether --with-zfsexecdir was given. if test "${with_zfsexecdir+set}" = set; then withval=$with_zfsexecdir; zfsexecdir=$withval else zfsexecdir="${libexecdir}/zfs" fi ZONENAME="echo global" for ac_func in mlockall strlcat strlcpy do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Check whether --with-linux was given. if test "${with_linux+set}" = set; then withval=$with_linux; kernelsrc="$withval" fi # Check whether --with-linux-obj was given. if test "${with_linux_obj+set}" = set; then withval=$with_linux_obj; kernelbuild="$withval" fi { $as_echo "$as_me:$LINENO: checking kernel source directory" >&5 $as_echo_n "checking kernel source directory... " >&6; } if test -z "$kernelsrc"; then if test -e "/lib/modules/$(uname -r)/source"; then headersdir="/lib/modules/$(uname -r)/source" sourcelink=$(readlink -f "$headersdir") elif test -e "/lib/modules/$(uname -r)/build"; then headersdir="/lib/modules/$(uname -r)/build" sourcelink=$(readlink -f "$headersdir") else sourcelink=$(ls -1d /usr/src/kernels/* \ /usr/src/linux-* \ 2>/dev/null | grep -v obj | tail -1) fi if test -n "$sourcelink" && test -e ${sourcelink}; then kernelsrc=`readlink -f ${sourcelink}` else kernelsrc="Not found" fi else if test "$kernelsrc" = "NONE"; then kernsrcver=NONE fi withlinux=yes fi { $as_echo "$as_me:$LINENO: result: $kernelsrc" >&5 $as_echo "$kernelsrc" >&6; } if test ! -d "$kernelsrc"; then { { $as_echo "$as_me:$LINENO: error: *** Please make sure the kernel devel package for your distribution *** is installed and then try again. If that fails, you can specify the *** location of the kernel source with the '--with-linux=PATH' option." >&5 $as_echo "$as_me: error: *** Please make sure the kernel devel package for your distribution *** is installed and then try again. If that fails, you can specify the *** location of the kernel source with the '--with-linux=PATH' option." >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking kernel build directory" >&5 $as_echo_n "checking kernel build directory... " >&6; } if test -z "$kernelbuild"; then if test x$withlinux != xyes -a -e "/lib/modules/$(uname -r)/build"; then kernelbuild=`readlink -f /lib/modules/$(uname -r)/build` elif test -d ${kernelsrc}-obj/${target_cpu}/${target_cpu}; then kernelbuild=${kernelsrc}-obj/${target_cpu}/${target_cpu} elif test -d ${kernelsrc}-obj/${target_cpu}/default; then kernelbuild=${kernelsrc}-obj/${target_cpu}/default elif test -d `dirname ${kernelsrc}`/build-${target_cpu}; then kernelbuild=`dirname ${kernelsrc}`/build-${target_cpu} else kernelbuild=${kernelsrc} fi fi { $as_echo "$as_me:$LINENO: result: $kernelbuild" >&5 $as_echo "$kernelbuild" >&6; } { $as_echo "$as_me:$LINENO: checking kernel source version" >&5 $as_echo_n "checking kernel source version... " >&6; } utsrelease1=$kernelbuild/include/linux/version.h utsrelease2=$kernelbuild/include/linux/utsrelease.h utsrelease3=$kernelbuild/include/generated/utsrelease.h if test -r $utsrelease1 && fgrep -q UTS_RELEASE $utsrelease1; then utsrelease=linux/version.h elif test -r $utsrelease2 && fgrep -q UTS_RELEASE $utsrelease2; then utsrelease=linux/utsrelease.h elif test -r $utsrelease3 && fgrep -q UTS_RELEASE $utsrelease3; then utsrelease=generated/utsrelease.h fi if test "$utsrelease"; then kernsrcver=`(echo "#include <$utsrelease>"; echo "kernsrcver=UTS_RELEASE") | ${CPP} -I $kernelbuild/include - | grep "^kernsrcver=" | cut -d \" -f 2` if test -z "$kernsrcver"; then { $as_echo "$as_me:$LINENO: result: Not found" >&5 $as_echo "Not found" >&6; } { { $as_echo "$as_me:$LINENO: error: *** Cannot determine kernel version. " >&5 $as_echo "$as_me: error: *** Cannot determine kernel version. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: Not found" >&5 $as_echo "Not found" >&6; } if test "x$enable_linux_builtin" != xyes; then { { $as_echo "$as_me:$LINENO: error: *** Cannot find UTS_RELEASE definition. " >&5 $as_echo "$as_me: error: *** Cannot find UTS_RELEASE definition. " >&2;} { (exit 1); exit 1; }; } else { { $as_echo "$as_me:$LINENO: error: *** Cannot find UTS_RELEASE definition. *** Please run 'make prepare' inside the kernel source tree." >&5 $as_echo "$as_me: error: *** Cannot find UTS_RELEASE definition. *** Please run 'make prepare' inside the kernel source tree." >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $kernsrcver" >&5 $as_echo "$kernsrcver" >&6; } LINUX=${kernelsrc} LINUX_OBJ=${kernelbuild} LINUX_VERSION=${kernsrcver} modpost=$LINUX/scripts/Makefile.modpost { $as_echo "$as_me:$LINENO: checking kernel file name for module symbols" >&5 $as_echo_n "checking kernel file name for module symbols... " >&6; } if test "x$enable_linux_builtin" != xyes -a -f "$modpost"; then if grep -q Modules.symvers $modpost; then LINUX_SYMBOLS=Modules.symvers else LINUX_SYMBOLS=Module.symvers fi if test ! -f "$LINUX_OBJ/$LINUX_SYMBOLS"; then { { $as_echo "$as_me:$LINENO: error: *** Please make sure the kernel devel package for your distribution *** is installed. If you are building with a custom kernel, make sure *** the kernel is configured, built, and the '--with-linux=PATH' *** configure option refers to the location of the kernel source. " >&5 $as_echo "$as_me: error: *** Please make sure the kernel devel package for your distribution *** is installed. If you are building with a custom kernel, make sure *** the kernel is configured, built, and the '--with-linux=PATH' *** configure option refers to the location of the kernel source. " >&2;} { (exit 1); exit 1; }; } fi else LINUX_SYMBOLS=NONE fi { $as_echo "$as_me:$LINENO: result: $LINUX_SYMBOLS" >&5 $as_echo "$LINUX_SYMBOLS" >&6; } # Check whether --with-qat was given. if test "${with_qat+set}" = set; then withval=$with_qat; if test "$withval" = "yes"; then { { $as_echo "$as_me:$LINENO: error: --with-qat=PATH requires a PATH" >&5 $as_echo "$as_me: error: --with-qat=PATH requires a PATH" >&2;} { (exit 1); exit 1; }; } else qatsrc="$withval" fi fi # Check whether --with-qat-obj was given. if test "${with_qat_obj+set}" = set; then withval=$with_qat_obj; qatbuild="$withval" fi if test ! -z "${qatsrc}"; then { $as_echo "$as_me:$LINENO: checking qat source directory" >&5 $as_echo_n "checking qat source directory... " >&6; } { $as_echo "$as_me:$LINENO: result: $qatsrc" >&5 $as_echo "$qatsrc" >&6; } QAT_SRC="${qatsrc}/quickassist" if test ! -e "$QAT_SRC/include/cpa.h"; then { { $as_echo "$as_me:$LINENO: error: *** Please make sure the qat driver package is installed *** and specify the location of the qat source with the *** '--with-qat=PATH' option then try again. Failed to *** find cpa.h in: ${QAT_SRC}/include" >&5 $as_echo "$as_me: error: *** Please make sure the qat driver package is installed *** and specify the location of the qat source with the *** '--with-qat=PATH' option then try again. Failed to *** find cpa.h in: ${QAT_SRC}/include" >&2;} { (exit 1); exit 1; }; } fi fi if test ! -z "${qatsrc}"; then { $as_echo "$as_me:$LINENO: checking qat build directory" >&5 $as_echo_n "checking qat build directory... " >&6; } if test -z "$qatbuild"; then qatbuild="${qatsrc}/build" fi { $as_echo "$as_me:$LINENO: result: $qatbuild" >&5 $as_echo "$qatbuild" >&6; } QAT_OBJ=${qatbuild} if ! test -e "$QAT_OBJ/icp_qa_al.ko" && ! test -e "$QAT_OBJ/qat_api.ko"; then { { $as_echo "$as_me:$LINENO: error: *** Please make sure the qat driver is installed then try again. *** Failed to find icp_qa_al.ko or qat_api.ko in: $QAT_OBJ" >&5 $as_echo "$as_me: error: *** Please make sure the qat driver is installed then try again. *** Failed to find icp_qa_al.ko or qat_api.ko in: $QAT_OBJ" >&2;} { (exit 1); exit 1; }; } fi cat >>confdefs.h <<\_ACEOF #define HAVE_QAT 1 _ACEOF fi if test ! -z "${qatsrc}"; then { $as_echo "$as_me:$LINENO: checking qat file for module symbols" >&5 $as_echo_n "checking qat file for module symbols... " >&6; } QAT_SYMBOLS=$QAT_SRC/lookaside/access_layer/src/Module.symvers if test -r $QAT_SYMBOLS; then { $as_echo "$as_me:$LINENO: result: $QAT_SYMBOLS" >&5 $as_echo "$QAT_SYMBOLS" >&6; } else { { $as_echo "$as_me:$LINENO: error: *** Please make sure the qat driver is installed then try again. *** Failed to find Module.symvers in: $QAT_SYMBOLS " >&5 $as_echo "$as_me: error: *** Please make sure the qat driver is installed then try again. *** Failed to find Module.symvers in: $QAT_SYMBOLS " >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: checking whether modules can be built" >&5 $as_echo_n "checking whether modules can be built... " >&6; } test -d build/conftest && rm -Rf build/conftest test -f build/Makefile && sed '/conftest/d' build/Makefile test -d build/conftest || mkdir -p build/conftest cat confdefs.h - <<_ACEOF >build/conftest/conftest.c int main (void) { ; return 0; } _ACEOF test -d build/conftest || mkdir -p build/conftest cat - <<_ACEOF >build/conftest/conftest.h _ACEOF test -d build || mkdir -p build test -d build/conftest || mkdir -p build/conftest file=build/conftest/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := conftest.o" >>$file if test "xno" = "xyes"; then echo "obj-m += conftest/" >>build/Makefile fi { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest &>build/conftest/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/conftest/conftest.ko' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_linux_builtin" != xyes; then { { $as_echo "$as_me:$LINENO: error: *** Unable to build an empty module. " >&5 $as_echo "$as_me: error: *** Unable to build an empty module. " >&2;} { (exit 1); exit 1; }; } else { { $as_echo "$as_me:$LINENO: error: *** Unable to build an empty module. *** Please run 'make scripts' inside the kernel source tree." >&5 $as_echo "$as_me: error: *** Unable to build an empty module. *** Please run 'make scripts' inside the kernel source tree." >&2;} { (exit 1); exit 1; }; } fi fi if test "x$cross_compiling" != xyes; then if test "$cross_compiling" = yes; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run test program while cross compiling See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run test program while cross compiling See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include "$LINUX/include/linux/license.h" int main () { return !license_is_gpl_compatible( "$ZFS_META_LICENSE"); ; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cat >>confdefs.h <<\_ACEOF #define ZFS_IS_GPL_COMPATIBLE 1 _ACEOF else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi test -d build/config_thread_size || mkdir -p build/config_thread_size cat confdefs.h - <<_ACEOF >build/config_thread_size/config_thread_size.c #include int main (void) { #if (THREAD_SIZE < 16384) #error "THREAD_SIZE is less than 16K" #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_thread_size || mkdir -p build/config_thread_size file=build/config_thread_size/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_thread_size ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_thread_size.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_thread_size/" >>build/Makefile fi if test -n "" ; then test -d build/config_thread_size_license || mkdir -p build/config_thread_size_license cat confdefs.h - <<_ACEOF >build/config_thread_size_license/config_thread_size_license.c #include MODULE_LICENSE(""); #include int main (void) { #if (THREAD_SIZE < 16384) #error "THREAD_SIZE is less than 16K" #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_thread_size_license || mkdir -p build/config_thread_size_license file=build/config_thread_size_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_thread_size_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_thread_size_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_thread_size_license/" >>build/Makefile fi fi test -d build/config_debug_lock_alloc || mkdir -p build/config_debug_lock_alloc cat confdefs.h - <<_ACEOF >build/config_debug_lock_alloc/config_debug_lock_alloc.c #include int main (void) { struct mutex lock; mutex_init(&lock); mutex_lock(&lock); mutex_unlock(&lock); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_debug_lock_alloc || mkdir -p build/config_debug_lock_alloc file=build/config_debug_lock_alloc/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_debug_lock_alloc ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_debug_lock_alloc.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_debug_lock_alloc/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/config_debug_lock_alloc_license || mkdir -p build/config_debug_lock_alloc_license cat confdefs.h - <<_ACEOF >build/config_debug_lock_alloc_license/config_debug_lock_alloc_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include int main (void) { struct mutex lock; mutex_init(&lock); mutex_lock(&lock); mutex_unlock(&lock); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_debug_lock_alloc_license || mkdir -p build/config_debug_lock_alloc_license file=build/config_debug_lock_alloc_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_debug_lock_alloc_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_debug_lock_alloc_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_debug_lock_alloc_license/" >>build/Makefile fi fi test -d build/config_trim_unusued_ksyms || mkdir -p build/config_trim_unusued_ksyms cat confdefs.h - <<_ACEOF >build/config_trim_unusued_ksyms/config_trim_unusued_ksyms.c #if defined(CONFIG_TRIM_UNUSED_KSYMS) #error CONFIG_TRIM_UNUSED_KSYMS not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_trim_unusued_ksyms || mkdir -p build/config_trim_unusued_ksyms file=build/config_trim_unusued_ksyms/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_trim_unusued_ksyms ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_trim_unusued_ksyms.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_trim_unusued_ksyms/" >>build/Makefile fi if test -n "" ; then test -d build/config_trim_unusued_ksyms_license || mkdir -p build/config_trim_unusued_ksyms_license cat confdefs.h - <<_ACEOF >build/config_trim_unusued_ksyms_license/config_trim_unusued_ksyms_license.c #include MODULE_LICENSE(""); #if defined(CONFIG_TRIM_UNUSED_KSYMS) #error CONFIG_TRIM_UNUSED_KSYMS not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_trim_unusued_ksyms_license || mkdir -p build/config_trim_unusued_ksyms_license file=build/config_trim_unusued_ksyms_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_trim_unusued_ksyms_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_trim_unusued_ksyms_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_trim_unusued_ksyms_license/" >>build/Makefile fi fi test -d build/config_zlib_inflate || mkdir -p build/config_zlib_inflate cat confdefs.h - <<_ACEOF >build/config_zlib_inflate/config_zlib_inflate.c #if !defined(CONFIG_ZLIB_INFLATE) && \ !defined(CONFIG_ZLIB_INFLATE_MODULE) #error CONFIG_ZLIB_INFLATE not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_zlib_inflate || mkdir -p build/config_zlib_inflate file=build/config_zlib_inflate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_zlib_inflate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_zlib_inflate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_zlib_inflate/" >>build/Makefile fi if test -n "" ; then test -d build/config_zlib_inflate_license || mkdir -p build/config_zlib_inflate_license cat confdefs.h - <<_ACEOF >build/config_zlib_inflate_license/config_zlib_inflate_license.c #include MODULE_LICENSE(""); #if !defined(CONFIG_ZLIB_INFLATE) && \ !defined(CONFIG_ZLIB_INFLATE_MODULE) #error CONFIG_ZLIB_INFLATE not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_zlib_inflate_license || mkdir -p build/config_zlib_inflate_license file=build/config_zlib_inflate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_zlib_inflate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_zlib_inflate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_zlib_inflate_license/" >>build/Makefile fi fi test -d build/config_zlib_deflate || mkdir -p build/config_zlib_deflate cat confdefs.h - <<_ACEOF >build/config_zlib_deflate/config_zlib_deflate.c #if !defined(CONFIG_ZLIB_DEFLATE) && \ !defined(CONFIG_ZLIB_DEFLATE_MODULE) #error CONFIG_ZLIB_DEFLATE not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_zlib_deflate || mkdir -p build/config_zlib_deflate file=build/config_zlib_deflate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_zlib_deflate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_zlib_deflate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_zlib_deflate/" >>build/Makefile fi if test -n "" ; then test -d build/config_zlib_deflate_license || mkdir -p build/config_zlib_deflate_license cat confdefs.h - <<_ACEOF >build/config_zlib_deflate_license/config_zlib_deflate_license.c #include MODULE_LICENSE(""); #if !defined(CONFIG_ZLIB_DEFLATE) && \ !defined(CONFIG_ZLIB_DEFLATE_MODULE) #error CONFIG_ZLIB_DEFLATE not defined #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/config_zlib_deflate_license || mkdir -p build/config_zlib_deflate_license file=build/config_zlib_deflate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/config_zlib_deflate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := config_zlib_deflate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += config_zlib_deflate_license/" >>build/Makefile fi fi { $as_echo "$as_me:$LINENO: checking for kernel config option compatibility" >&5 $as_echo_n "checking for kernel config option compatibility... " >&6; } { ac_try=' KBUILD_MODPOST_NOFINAL="yes" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build &>build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/Makefile build/Makefile.compile.config mv build/build.log build/build.log.config else { { $as_echo "$as_me:$LINENO: error: *** Unable to compile test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to compile test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi if test "x$enable_linux_builtin" = "xno"; then for dir in $(awk '/^obj-m/ { print $3 }' \ build/Makefile.compile.config); do name=${dir%/} if test -f build/$name/$name.o; then if test "${name##*_}" = "license"; then { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="yes" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/$name &>build/$name/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/$name/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/$name/Makefile build/$name/Makefile.modpost.config cat build/$name/build.log >>build/build.log.config else { { $as_echo "$as_me:$LINENO: error: *** Unable to modpost test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to modpost test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi echo "obj-n += $dir" >>build/Makefile else echo "obj-m += $dir" >>build/Makefile fi else echo "obj-n += $dir" >>build/Makefile fi done { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="yes" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build &>build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/Makefile build/Makefile.modpost.config cat build/build.log >>build/build.log.config else { { $as_echo "$as_me:$LINENO: error: *** Unable to modpost test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to modpost test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi else for dir in $(awk '/^obj-m/ { print $3 }' \ build/Makefile.compile.config); do name=${dir%/} if test -f build/$name/$name.o; then touch build/$name/$name.ko fi done fi { $as_echo "$as_me:$LINENO: result: done" >&5 $as_echo "done" >&6; } { $as_echo "$as_me:$LINENO: checking whether kernel was built with 16K or larger stacks" >&5 $as_echo_n "checking whether kernel was built with 16K or larger stacks... " >&6; } if test -d build/config_thread_size; then if test -f build/config_thread_size/config_thread_size.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LARGE_STACKS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_thread_size\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_thread_size\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether mutex_lock() is GPL-only" >&5 $as_echo_n "checking whether mutex_lock() is GPL-only... " >&6; } if test -d build/config_debug_lock_alloc; then if test -f build/config_debug_lock_alloc/config_debug_lock_alloc.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } { { $as_echo "$as_me:$LINENO: error: *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible *** with the CDDL license and will prevent the module linking stage *** from succeeding. You must rebuild your kernel without this *** option enabled." >&5 $as_echo "$as_me: error: *** Kernel built with CONFIG_DEBUG_LOCK_ALLOC which is incompatible *** with the CDDL license and will prevent the module linking stage *** from succeeding. You must rebuild your kernel without this *** option enabled." >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_debug_lock_alloc\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_debug_lock_alloc\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether CONFIG_TRIM_UNUSED_KSYM is disabled" >&5 $as_echo_n "checking whether CONFIG_TRIM_UNUSED_KSYM is disabled... " >&6; } if test -d build/config_trim_unusued_ksyms; then if test -f build/config_trim_unusued_ksyms/config_trim_unusued_ksyms.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } if test "x$enable_linux_builtin" != xyes; then { { $as_echo "$as_me:$LINENO: error: *** This kernel has unused symbols trimming enabled, please disable. *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set." >&5 $as_echo "$as_me: error: *** This kernel has unused symbols trimming enabled, please disable. *** Rebuild the kernel with CONFIG_TRIM_UNUSED_KSYMS=n set." >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_trim_unusued_ksyms\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_trim_unusued_ksyms\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether CONFIG_ZLIB_INFLATE is defined" >&5 $as_echo_n "checking whether CONFIG_ZLIB_INFLATE is defined... " >&6; } if test -d build/config_zlib_inflate; then if test -f build/config_zlib_inflate/config_zlib_inflate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: *** This kernel does not include the required zlib inflate support. *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set." >&5 $as_echo "$as_me: error: *** This kernel does not include the required zlib inflate support. *** Rebuild the kernel with CONFIG_ZLIB_INFLATE=y|m set." >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_zlib_inflate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_zlib_inflate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether CONFIG_ZLIB_DEFLATE is defined" >&5 $as_echo_n "checking whether CONFIG_ZLIB_DEFLATE is defined... " >&6; } if test -d build/config_zlib_deflate; then if test -f build/config_zlib_deflate/config_zlib_deflate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:$LINENO: error: *** This kernel does not include the required zlib deflate support. *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set." >&5 $as_echo "$as_me: error: *** This kernel does not include the required zlib deflate support. *** Rebuild the kernel with CONFIG_ZLIB_DEFLATE=y|m set." >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"config_zlib_deflate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"config_zlib_deflate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fpu headers are available" >&5 $as_echo_n "checking whether fpu headers are available... " >&6; } test -d build/conftest && rm -Rf build/conftest test -f build/Makefile && sed '/conftest/d' build/Makefile test -d build/conftest || mkdir -p build/conftest cat confdefs.h - <<_ACEOF >build/conftest/conftest.c #include #include int main (void) { ; return 0; } _ACEOF test -d build/conftest || mkdir -p build/conftest cat - <<_ACEOF >build/conftest/conftest.h _ACEOF test -d build || mkdir -p build test -d build/conftest || mkdir -p build/conftest file=build/conftest/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := conftest.o" >>$file if test "xno" = "xyes"; then echo "obj-m += conftest/" >>build/Makefile fi { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest &>build/conftest/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/conftest/conftest.ko' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_API_HEADER 1 _ACEOF { $as_echo "$as_me:$LINENO: result: asm/fpu/api.h" >&5 $as_echo "asm/fpu/api.h" >&6; } else { $as_echo "$as_me:$LINENO: result: i387.h & xcr.h" >&5 $as_echo "i387.h & xcr.h" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether wait_queue_entry_t exists" >&5 $as_echo_n "checking whether wait_queue_entry_t exists... " >&6; } test -d build/conftest && rm -Rf build/conftest test -f build/Makefile && sed '/conftest/d' build/Makefile test -d build/conftest || mkdir -p build/conftest cat confdefs.h - <<_ACEOF >build/conftest/conftest.c #include int main (void) { wait_queue_entry_t *entry __attribute__ ((unused)); ; return 0; } _ACEOF test -d build/conftest || mkdir -p build/conftest cat - <<_ACEOF >build/conftest/conftest.h _ACEOF test -d build || mkdir -p build test -d build/conftest || mkdir -p build/conftest file=build/conftest/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := conftest.o" >>$file if test "xno" = "xyes"; then echo "obj-m += conftest/" >>build/Makefile fi { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest &>build/conftest/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/conftest/conftest.ko' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_WAIT_QUEUE_ENTRY_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether /dev/zfs minor is available" >&5 $as_echo_n "checking whether /dev/zfs minor is available... " >&6; } for i in $(seq 249 -1 200); do if ! grep -q "^#define\s\+.*_MINOR\s\+.*$i" \ ${LINUX}/include/linux/miscdevice.h; then ZFS_DEVICE_MINOR="$i" { $as_echo "$as_me:$LINENO: result: $ZFS_DEVICE_MINOR" >&5 $as_echo "$ZFS_DEVICE_MINOR" >&6; } cat >>confdefs.h <<_ACEOF #define ZFS_DEVICE_MINOR $ZFS_DEVICE_MINOR _ACEOF break fi done if test -z "$ZFS_DEVICE_MINOR"; then { { $as_echo "$as_me:$LINENO: error: *** No available misc minor numbers available for use." >&5 $as_echo "$as_me: error: *** No available misc minor numbers available for use." >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether DECLARE_EVENT_CLASS() is available" >&5 $as_echo_n "checking whether DECLARE_EVENT_CLASS() is available... " >&6; } test -d build/conftest && rm -Rf build/conftest test -f build/Makefile && sed '/conftest/d' build/Makefile test -d build/conftest || mkdir -p build/conftest cat confdefs.h - <<_ACEOF >build/conftest/conftest.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #define CREATE_TRACE_POINTS #include "conftest.h" int main (void) { trace_zfs_autoconf_event_one(1UL); trace_zfs_autoconf_event_two(2UL); ; return 0; } _ACEOF test -d build/conftest || mkdir -p build/conftest cat - <<_ACEOF >build/conftest/conftest.h #if !defined(_CONFTEST_H) || defined(TRACE_HEADER_MULTI_READ) #define _CONFTEST_H #undef TRACE_SYSTEM #define TRACE_SYSTEM zfs #include DECLARE_EVENT_CLASS(zfs_autoconf_event_class, TP_PROTO(unsigned long i), TP_ARGS(i), TP_STRUCT__entry( __field(unsigned long, i) ), TP_fast_assign( __entry->i = i; ), TP_printk("i = %lu", __entry->i) ); #define DEFINE_AUTOCONF_EVENT(name) \ DEFINE_EVENT(zfs_autoconf_event_class, name, \ TP_PROTO(unsigned long i), \ TP_ARGS(i)) DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_one); DEFINE_AUTOCONF_EVENT(zfs_autoconf_event_two); #endif /* _CONFTEST_H */ #undef TRACE_INCLUDE_PATH #define TRACE_INCLUDE_PATH . #define TRACE_INCLUDE_FILE conftest #include _ACEOF test -d build || mkdir -p build test -d build/conftest || mkdir -p build/conftest file=build/conftest/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += -I$PWD/build/conftest " >>$file echo "obj-m := conftest.o" >>$file if test "xno" = "xyes"; then echo "obj-m += conftest/" >>build/Makefile fi { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/conftest &>build/conftest/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/conftest/conftest.ko' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DECLARE_EVENT_CLASS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -d build/objtool || mkdir -p build/objtool cat confdefs.h - <<_ACEOF >build/objtool/objtool.c #undef __ASSEMBLY__ #include int main (void) { #if !defined(FRAME_BEGIN) CTASSERT(1); #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/objtool || mkdir -p build/objtool file=build/objtool/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/objtool ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := objtool.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += objtool/" >>build/Makefile fi if test -n "" ; then test -d build/objtool_license || mkdir -p build/objtool_license cat confdefs.h - <<_ACEOF >build/objtool_license/objtool_license.c #include MODULE_LICENSE(""); #undef __ASSEMBLY__ #include int main (void) { #if !defined(FRAME_BEGIN) CTASSERT(1); #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/objtool_license || mkdir -p build/objtool_license file=build/objtool_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/objtool_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := objtool_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += objtool_license/" >>build/Makefile fi fi test -d build/stack_frame_non_standard || mkdir -p build/stack_frame_non_standard cat confdefs.h - <<_ACEOF >build/stack_frame_non_standard/stack_frame_non_standard.c #include int main (void) { #if !defined(STACK_FRAME_NON_STANDARD) CTASSERT(1); #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/stack_frame_non_standard || mkdir -p build/stack_frame_non_standard file=build/stack_frame_non_standard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/stack_frame_non_standard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := stack_frame_non_standard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += stack_frame_non_standard/" >>build/Makefile fi if test -n "" ; then test -d build/stack_frame_non_standard_license || mkdir -p build/stack_frame_non_standard_license cat confdefs.h - <<_ACEOF >build/stack_frame_non_standard_license/stack_frame_non_standard_license.c #include MODULE_LICENSE(""); #include int main (void) { #if !defined(STACK_FRAME_NON_STANDARD) CTASSERT(1); #endif ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/stack_frame_non_standard_license || mkdir -p build/stack_frame_non_standard_license file=build/stack_frame_non_standard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/stack_frame_non_standard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := stack_frame_non_standard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += stack_frame_non_standard_license/" >>build/Makefile fi fi test -d build/global_node_page_state || mkdir -p build/global_node_page_state cat confdefs.h - <<_ACEOF >build/global_node_page_state/global_node_page_state.c #include #include int main (void) { (void) global_node_page_state(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/global_node_page_state || mkdir -p build/global_node_page_state file=build/global_node_page_state/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/global_node_page_state ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := global_node_page_state.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += global_node_page_state/" >>build/Makefile fi if test -n "" ; then test -d build/global_node_page_state_license || mkdir -p build/global_node_page_state_license cat confdefs.h - <<_ACEOF >build/global_node_page_state_license/global_node_page_state_license.c #include MODULE_LICENSE(""); #include #include int main (void) { (void) global_node_page_state(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/global_node_page_state_license || mkdir -p build/global_node_page_state_license file=build/global_node_page_state_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/global_node_page_state_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := global_node_page_state_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += global_node_page_state_license/" >>build/Makefile fi fi test -d build/global_zone_page_state || mkdir -p build/global_zone_page_state cat confdefs.h - <<_ACEOF >build/global_zone_page_state/global_zone_page_state.c #include #include int main (void) { (void) global_zone_page_state(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/global_zone_page_state || mkdir -p build/global_zone_page_state file=build/global_zone_page_state/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/global_zone_page_state ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := global_zone_page_state.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += global_zone_page_state/" >>build/Makefile fi if test -n "" ; then test -d build/global_zone_page_state_license || mkdir -p build/global_zone_page_state_license cat confdefs.h - <<_ACEOF >build/global_zone_page_state_license/global_zone_page_state_license.c #include MODULE_LICENSE(""); #include #include int main (void) { (void) global_zone_page_state(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/global_zone_page_state_license || mkdir -p build/global_zone_page_state_license file=build/global_zone_page_state_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/global_zone_page_state_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := global_zone_page_state_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += global_zone_page_state_license/" >>build/Makefile fi fi test -d build/access_ok_type || mkdir -p build/access_ok_type cat confdefs.h - <<_ACEOF >build/access_ok_type/access_ok_type.c #include int main (void) { const void __user __attribute__((unused)) *addr = (void *) 0xdeadbeef; unsigned long __attribute__((unused)) size = 1; int error __attribute__((unused)) = access_ok(0, addr, size); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/access_ok_type || mkdir -p build/access_ok_type file=build/access_ok_type/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/access_ok_type ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := access_ok_type.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += access_ok_type/" >>build/Makefile fi if test -n "" ; then test -d build/access_ok_type_license || mkdir -p build/access_ok_type_license cat confdefs.h - <<_ACEOF >build/access_ok_type_license/access_ok_type_license.c #include MODULE_LICENSE(""); #include int main (void) { const void __user __attribute__((unused)) *addr = (void *) 0xdeadbeef; unsigned long __attribute__((unused)) size = 1; int error __attribute__((unused)) = access_ok(0, addr, size); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/access_ok_type_license || mkdir -p build/access_ok_type_license file=build/access_ok_type_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/access_ok_type_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := access_ok_type_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += access_ok_type_license/" >>build/Makefile fi fi test -d build/ctl_name || mkdir -p build/ctl_name cat confdefs.h - <<_ACEOF >build/ctl_name/ctl_name.c #include int main (void) { struct ctl_table ctl __attribute__ ((unused)); ctl.ctl_name = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ctl_name || mkdir -p build/ctl_name file=build/ctl_name/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ctl_name ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ctl_name.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ctl_name/" >>build/Makefile fi if test -n "" ; then test -d build/ctl_name_license || mkdir -p build/ctl_name_license cat confdefs.h - <<_ACEOF >build/ctl_name_license/ctl_name_license.c #include MODULE_LICENSE(""); #include int main (void) { struct ctl_table ctl __attribute__ ((unused)); ctl.ctl_name = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ctl_name_license || mkdir -p build/ctl_name_license file=build/ctl_name_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ctl_name_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ctl_name_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ctl_name_license/" >>build/Makefile fi fi test -d build/pde_data || mkdir -p build/pde_data cat confdefs.h - <<_ACEOF >build/pde_data/pde_data.c #include int main (void) { PDE_DATA(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/pde_data || mkdir -p build/pde_data file=build/pde_data/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/pde_data ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := pde_data.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += pde_data/" >>build/Makefile fi if test -n "" ; then test -d build/pde_data_license || mkdir -p build/pde_data_license cat confdefs.h - <<_ACEOF >build/pde_data_license/pde_data_license.c #include MODULE_LICENSE(""); #include int main (void) { PDE_DATA(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/pde_data_license || mkdir -p build/pde_data_license file=build/pde_data_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/pde_data_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := pde_data_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += pde_data_license/" >>build/Makefile fi fi test -d build/file_fallocate || mkdir -p build/file_fallocate cat confdefs.h - <<_ACEOF >build/file_fallocate/file_fallocate.c #include long test_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_fallocate || mkdir -p build/file_fallocate file=build/file_fallocate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_fallocate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_fallocate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_fallocate/" >>build/Makefile fi if test -n "" ; then test -d build/file_fallocate_license || mkdir -p build/file_fallocate_license cat confdefs.h - <<_ACEOF >build/file_fallocate_license/file_fallocate_license.c #include MODULE_LICENSE(""); #include long test_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_fallocate_license || mkdir -p build/file_fallocate_license file=build/file_fallocate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_fallocate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_fallocate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_fallocate_license/" >>build/Makefile fi fi test -d build/inode_fallocate || mkdir -p build/inode_fallocate cat confdefs.h - <<_ACEOF >build/inode_fallocate/inode_fallocate.c #include long test_fallocate(struct inode *inode, int mode, loff_t offset, loff_t len) { return 0; } static const struct inode_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_fallocate || mkdir -p build/inode_fallocate file=build/inode_fallocate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_fallocate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_fallocate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_fallocate/" >>build/Makefile fi if test -n "" ; then test -d build/inode_fallocate_license || mkdir -p build/inode_fallocate_license cat confdefs.h - <<_ACEOF >build/inode_fallocate_license/inode_fallocate_license.c #include MODULE_LICENSE(""); #include long test_fallocate(struct inode *inode, int mode, loff_t offset, loff_t len) { return 0; } static const struct inode_operations fops __attribute__ ((unused)) = { .fallocate = test_fallocate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_fallocate_license || mkdir -p build/inode_fallocate_license file=build/inode_fallocate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_fallocate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_fallocate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_fallocate_license/" >>build/Makefile fi fi test -d build/2args_zlib_deflate_workspacesize || mkdir -p build/2args_zlib_deflate_workspacesize cat confdefs.h - <<_ACEOF >build/2args_zlib_deflate_workspacesize/2args_zlib_deflate_workspacesize.c #include int main (void) { return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/2args_zlib_deflate_workspacesize || mkdir -p build/2args_zlib_deflate_workspacesize file=build/2args_zlib_deflate_workspacesize/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/2args_zlib_deflate_workspacesize ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := 2args_zlib_deflate_workspacesize.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += 2args_zlib_deflate_workspacesize/" >>build/Makefile fi if test -n "" ; then test -d build/2args_zlib_deflate_workspacesize_license || mkdir -p build/2args_zlib_deflate_workspacesize_license cat confdefs.h - <<_ACEOF >build/2args_zlib_deflate_workspacesize_license/2args_zlib_deflate_workspacesize_license.c #include MODULE_LICENSE(""); #include int main (void) { return zlib_deflate_workspacesize(MAX_WBITS, MAX_MEM_LEVEL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/2args_zlib_deflate_workspacesize_license || mkdir -p build/2args_zlib_deflate_workspacesize_license file=build/2args_zlib_deflate_workspacesize_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/2args_zlib_deflate_workspacesize_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := 2args_zlib_deflate_workspacesize_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += 2args_zlib_deflate_workspacesize_license/" >>build/Makefile fi fi test -d build/rwsem_spinlock_is_raw || mkdir -p build/rwsem_spinlock_is_raw cat confdefs.h - <<_ACEOF >build/rwsem_spinlock_is_raw/rwsem_spinlock_is_raw.c #include int main (void) { struct rw_semaphore dummy_semaphore __attribute__ ((unused)); raw_spinlock_t dummy_lock __attribute__ ((unused)) = __RAW_SPIN_LOCK_INITIALIZER(dummy_lock); dummy_semaphore.wait_lock = dummy_lock; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_spinlock_is_raw || mkdir -p build/rwsem_spinlock_is_raw file=build/rwsem_spinlock_is_raw/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_spinlock_is_raw ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_spinlock_is_raw.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_spinlock_is_raw/" >>build/Makefile fi if test -n "" ; then test -d build/rwsem_spinlock_is_raw_license || mkdir -p build/rwsem_spinlock_is_raw_license cat confdefs.h - <<_ACEOF >build/rwsem_spinlock_is_raw_license/rwsem_spinlock_is_raw_license.c #include MODULE_LICENSE(""); #include int main (void) { struct rw_semaphore dummy_semaphore __attribute__ ((unused)); raw_spinlock_t dummy_lock __attribute__ ((unused)) = __RAW_SPIN_LOCK_INITIALIZER(dummy_lock); dummy_semaphore.wait_lock = dummy_lock; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_spinlock_is_raw_license || mkdir -p build/rwsem_spinlock_is_raw_license file=build/rwsem_spinlock_is_raw_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_spinlock_is_raw_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_spinlock_is_raw_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_spinlock_is_raw_license/" >>build/Makefile fi fi test -d build/rwsem_activity || mkdir -p build/rwsem_activity cat confdefs.h - <<_ACEOF >build/rwsem_activity/rwsem_activity.c #include int main (void) { struct rw_semaphore dummy_semaphore __attribute__ ((unused)); dummy_semaphore.activity = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_activity || mkdir -p build/rwsem_activity file=build/rwsem_activity/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_activity ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_activity.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_activity/" >>build/Makefile fi if test -n "" ; then test -d build/rwsem_activity_license || mkdir -p build/rwsem_activity_license cat confdefs.h - <<_ACEOF >build/rwsem_activity_license/rwsem_activity_license.c #include MODULE_LICENSE(""); #include int main (void) { struct rw_semaphore dummy_semaphore __attribute__ ((unused)); dummy_semaphore.activity = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_activity_license || mkdir -p build/rwsem_activity_license file=build/rwsem_activity_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_activity_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_activity_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_activity_license/" >>build/Makefile fi fi test -d build/rwsem_atomic_long_count || mkdir -p build/rwsem_atomic_long_count cat confdefs.h - <<_ACEOF >build/rwsem_atomic_long_count/rwsem_atomic_long_count.c #include int main (void) { DECLARE_RWSEM(dummy_semaphore); (void) atomic_long_read(&dummy_semaphore.count); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_atomic_long_count || mkdir -p build/rwsem_atomic_long_count file=build/rwsem_atomic_long_count/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_atomic_long_count ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_atomic_long_count.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_atomic_long_count/" >>build/Makefile fi if test -n "" ; then test -d build/rwsem_atomic_long_count_license || mkdir -p build/rwsem_atomic_long_count_license cat confdefs.h - <<_ACEOF >build/rwsem_atomic_long_count_license/rwsem_atomic_long_count_license.c #include MODULE_LICENSE(""); #include int main (void) { DECLARE_RWSEM(dummy_semaphore); (void) atomic_long_read(&dummy_semaphore.count); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/rwsem_atomic_long_count_license || mkdir -p build/rwsem_atomic_long_count_license file=build/rwsem_atomic_long_count_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/rwsem_atomic_long_count_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := rwsem_atomic_long_count_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += rwsem_atomic_long_count_license/" >>build/Makefile fi fi test -d build/sched_rt_header || mkdir -p build/sched_rt_header cat confdefs.h - <<_ACEOF >build/sched_rt_header/sched_rt_header.c #include #include int main (void) { return 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sched_rt_header || mkdir -p build/sched_rt_header file=build/sched_rt_header/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sched_rt_header ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sched_rt_header.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sched_rt_header/" >>build/Makefile fi if test -n "" ; then test -d build/sched_rt_header_license || mkdir -p build/sched_rt_header_license cat confdefs.h - <<_ACEOF >build/sched_rt_header_license/sched_rt_header_license.c #include MODULE_LICENSE(""); #include #include int main (void) { return 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sched_rt_header_license || mkdir -p build/sched_rt_header_license file=build/sched_rt_header_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sched_rt_header_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sched_rt_header_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sched_rt_header_license/" >>build/Makefile fi fi test -d build/sched_signal_header || mkdir -p build/sched_signal_header cat confdefs.h - <<_ACEOF >build/sched_signal_header/sched_signal_header.c #include #include int main (void) { return 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sched_signal_header || mkdir -p build/sched_signal_header file=build/sched_signal_header/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sched_signal_header ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sched_signal_header.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sched_signal_header/" >>build/Makefile fi if test -n "" ; then test -d build/sched_signal_header_license || mkdir -p build/sched_signal_header_license cat confdefs.h - <<_ACEOF >build/sched_signal_header_license/sched_signal_header_license.c #include MODULE_LICENSE(""); #include #include int main (void) { return 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sched_signal_header_license || mkdir -p build/sched_signal_header_license file=build/sched_signal_header_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sched_signal_header_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sched_signal_header_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sched_signal_header_license/" >>build/Makefile fi fi test -d build/io_schedule_timeout || mkdir -p build/io_schedule_timeout cat confdefs.h - <<_ACEOF >build/io_schedule_timeout/io_schedule_timeout.c #include int main (void) { (void) io_schedule_timeout(1); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/io_schedule_timeout || mkdir -p build/io_schedule_timeout file=build/io_schedule_timeout/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/io_schedule_timeout ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := io_schedule_timeout.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += io_schedule_timeout/" >>build/Makefile fi if test -n "" ; then test -d build/io_schedule_timeout_license || mkdir -p build/io_schedule_timeout_license cat confdefs.h - <<_ACEOF >build/io_schedule_timeout_license/io_schedule_timeout_license.c #include MODULE_LICENSE(""); #include int main (void) { (void) io_schedule_timeout(1); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/io_schedule_timeout_license || mkdir -p build/io_schedule_timeout_license file=build/io_schedule_timeout_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/io_schedule_timeout_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := io_schedule_timeout_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += io_schedule_timeout_license/" >>build/Makefile fi fi test -d build/usleep_range || mkdir -p build/usleep_range cat confdefs.h - <<_ACEOF >build/usleep_range/usleep_range.c #include int main (void) { usleep_range(0, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/usleep_range || mkdir -p build/usleep_range file=build/usleep_range/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/usleep_range ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := usleep_range.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += usleep_range/" >>build/Makefile fi if test -n "" ; then test -d build/usleep_range_license || mkdir -p build/usleep_range_license cat confdefs.h - <<_ACEOF >build/usleep_range_license/usleep_range_license.c #include MODULE_LICENSE(""); #include int main (void) { usleep_range(0, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/usleep_range_license || mkdir -p build/usleep_range_license file=build/usleep_range_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/usleep_range_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := usleep_range_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += usleep_range_license/" >>build/Makefile fi fi test -d build/kmem_cache_allocflags || mkdir -p build/kmem_cache_allocflags cat confdefs.h - <<_ACEOF >build/kmem_cache_allocflags/kmem_cache_allocflags.c #include int main (void) { struct kmem_cache cachep __attribute__ ((unused)); cachep.allocflags = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_allocflags || mkdir -p build/kmem_cache_allocflags file=build/kmem_cache_allocflags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_allocflags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_allocflags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_allocflags/" >>build/Makefile fi if test -n "" ; then test -d build/kmem_cache_allocflags_license || mkdir -p build/kmem_cache_allocflags_license cat confdefs.h - <<_ACEOF >build/kmem_cache_allocflags_license/kmem_cache_allocflags_license.c #include MODULE_LICENSE(""); #include int main (void) { struct kmem_cache cachep __attribute__ ((unused)); cachep.allocflags = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_allocflags_license || mkdir -p build/kmem_cache_allocflags_license file=build/kmem_cache_allocflags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_allocflags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_allocflags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_allocflags_license/" >>build/Makefile fi fi test -d build/kmem_cache_gfpflags || mkdir -p build/kmem_cache_gfpflags cat confdefs.h - <<_ACEOF >build/kmem_cache_gfpflags/kmem_cache_gfpflags.c #include int main (void) { struct kmem_cache cachep __attribute__ ((unused)); cachep.gfpflags = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_gfpflags || mkdir -p build/kmem_cache_gfpflags file=build/kmem_cache_gfpflags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_gfpflags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_gfpflags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_gfpflags/" >>build/Makefile fi if test -n "" ; then test -d build/kmem_cache_gfpflags_license || mkdir -p build/kmem_cache_gfpflags_license cat confdefs.h - <<_ACEOF >build/kmem_cache_gfpflags_license/kmem_cache_gfpflags_license.c #include MODULE_LICENSE(""); #include int main (void) { struct kmem_cache cachep __attribute__ ((unused)); cachep.gfpflags = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_gfpflags_license || mkdir -p build/kmem_cache_gfpflags_license file=build/kmem_cache_gfpflags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_gfpflags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_gfpflags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_gfpflags_license/" >>build/Makefile fi fi test -d build/kmem_cache_create_usercopy || mkdir -p build/kmem_cache_create_usercopy cat confdefs.h - <<_ACEOF >build/kmem_cache_create_usercopy/kmem_cache_create_usercopy.c #include static void ctor(void *foo) { /* fake ctor */ } int main (void) { struct kmem_cache *skc_linux_cache; const char *name = "test"; size_t size = 4096; size_t align = 8; unsigned long flags = 0; size_t useroffset = 0; size_t usersize = size - useroffset; skc_linux_cache = kmem_cache_create_usercopy( name, size, align, flags, useroffset, usersize, ctor); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_create_usercopy || mkdir -p build/kmem_cache_create_usercopy file=build/kmem_cache_create_usercopy/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_create_usercopy ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_create_usercopy.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_create_usercopy/" >>build/Makefile fi if test -n "" ; then test -d build/kmem_cache_create_usercopy_license || mkdir -p build/kmem_cache_create_usercopy_license cat confdefs.h - <<_ACEOF >build/kmem_cache_create_usercopy_license/kmem_cache_create_usercopy_license.c #include MODULE_LICENSE(""); #include static void ctor(void *foo) { /* fake ctor */ } int main (void) { struct kmem_cache *skc_linux_cache; const char *name = "test"; size_t size = 4096; size_t align = 8; unsigned long flags = 0; size_t useroffset = 0; size_t usersize = size - useroffset; skc_linux_cache = kmem_cache_create_usercopy( name, size, align, flags, useroffset, usersize, ctor); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmem_cache_create_usercopy_license || mkdir -p build/kmem_cache_create_usercopy_license file=build/kmem_cache_create_usercopy_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmem_cache_create_usercopy_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmem_cache_create_usercopy_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmem_cache_create_usercopy_license/" >>build/Makefile fi fi test -d build/wait_on_bit || mkdir -p build/wait_on_bit cat confdefs.h - <<_ACEOF >build/wait_on_bit/wait_on_bit.c #include int main (void) { int (*action)(void *) = NULL; wait_on_bit(NULL, 0, action, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/wait_on_bit || mkdir -p build/wait_on_bit file=build/wait_on_bit/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/wait_on_bit ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := wait_on_bit.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += wait_on_bit/" >>build/Makefile fi if test -n "" ; then test -d build/wait_on_bit_license || mkdir -p build/wait_on_bit_license cat confdefs.h - <<_ACEOF >build/wait_on_bit_license/wait_on_bit_license.c #include MODULE_LICENSE(""); #include int main (void) { int (*action)(void *) = NULL; wait_on_bit(NULL, 0, action, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/wait_on_bit_license || mkdir -p build/wait_on_bit_license file=build/wait_on_bit_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/wait_on_bit_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := wait_on_bit_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += wait_on_bit_license/" >>build/Makefile fi fi test -d build/wait_queue_head_entry || mkdir -p build/wait_queue_head_entry cat confdefs.h - <<_ACEOF >build/wait_queue_head_entry/wait_queue_head_entry.c #include #ifdef HAVE_WAIT_QUEUE_ENTRY_T typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_entry_t spl_wait_queue_entry_t; #else typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_t spl_wait_queue_entry_t; #endif int main (void) { spl_wait_queue_head_t wq_head; spl_wait_queue_entry_t wq_entry; struct list_head *head __attribute__ ((unused)); struct list_head *entry __attribute__ ((unused)); head = &wq_head.head; entry = &wq_entry.entry; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/wait_queue_head_entry || mkdir -p build/wait_queue_head_entry file=build/wait_queue_head_entry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/wait_queue_head_entry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := wait_queue_head_entry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += wait_queue_head_entry/" >>build/Makefile fi if test -n "" ; then test -d build/wait_queue_head_entry_license || mkdir -p build/wait_queue_head_entry_license cat confdefs.h - <<_ACEOF >build/wait_queue_head_entry_license/wait_queue_head_entry_license.c #include MODULE_LICENSE(""); #include #ifdef HAVE_WAIT_QUEUE_ENTRY_T typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_entry_t spl_wait_queue_entry_t; #else typedef wait_queue_head_t spl_wait_queue_head_t; typedef wait_queue_t spl_wait_queue_entry_t; #endif int main (void) { spl_wait_queue_head_t wq_head; spl_wait_queue_entry_t wq_entry; struct list_head *head __attribute__ ((unused)); struct list_head *entry __attribute__ ((unused)); head = &wq_head.head; entry = &wq_entry.entry; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/wait_queue_head_entry_license || mkdir -p build/wait_queue_head_entry_license file=build/wait_queue_head_entry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/wait_queue_head_entry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := wait_queue_head_entry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += wait_queue_head_entry_license/" >>build/Makefile fi fi test -d build/inode_times || mkdir -p build/inode_times cat confdefs.h - <<_ACEOF >build/inode_times/inode_times.c #include int main (void) { struct inode ip; struct timespec ts; memset(&ip, 0, sizeof(ip)); ts = ip.i_mtime; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_times || mkdir -p build/inode_times file=build/inode_times/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_times ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_times.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_times/" >>build/Makefile fi if test -n "" ; then test -d build/inode_times_license || mkdir -p build/inode_times_license cat confdefs.h - <<_ACEOF >build/inode_times_license/inode_times_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode ip; struct timespec ts; memset(&ip, 0, sizeof(ip)); ts = ip.i_mtime; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_times_license || mkdir -p build/inode_times_license file=build/inode_times_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_times_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_times_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_times_license/" >>build/Makefile fi fi test -d build/inode_lock || mkdir -p build/inode_lock cat confdefs.h - <<_ACEOF >build/inode_lock/inode_lock.c #include int main (void) { struct inode *inode = NULL; inode_lock_shared(inode); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_lock || mkdir -p build/inode_lock file=build/inode_lock/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_lock ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_lock.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_lock/" >>build/Makefile fi if test -n "" ; then test -d build/inode_lock_license || mkdir -p build/inode_lock_license cat confdefs.h - <<_ACEOF >build/inode_lock_license/inode_lock_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *inode = NULL; inode_lock_shared(inode); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_lock_license || mkdir -p build/inode_lock_license file=build/inode_lock_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_lock_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_lock_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_lock_license/" >>build/Makefile fi fi test -d build/group_info_gid || mkdir -p build/group_info_gid cat confdefs.h - <<_ACEOF >build/group_info_gid/group_info_gid.c #include int main (void) { struct group_info *gi = groups_alloc(1); gi->gid[0] = KGIDT_INIT(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/group_info_gid || mkdir -p build/group_info_gid file=build/group_info_gid/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/group_info_gid ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := group_info_gid.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += group_info_gid/" >>build/Makefile fi if test -n "" ; then test -d build/group_info_gid_license || mkdir -p build/group_info_gid_license cat confdefs.h - <<_ACEOF >build/group_info_gid_license/group_info_gid_license.c #include MODULE_LICENSE(""); #include int main (void) { struct group_info *gi = groups_alloc(1); gi->gid[0] = KGIDT_INIT(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/group_info_gid_license || mkdir -p build/group_info_gid_license file=build/group_info_gid_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/group_info_gid_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := group_info_gid_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += group_info_gid_license/" >>build/Makefile fi fi test -d build/kernel_write || mkdir -p build/kernel_write cat confdefs.h - <<_ACEOF >build/kernel_write/kernel_write.c #include int main (void) { struct file *file = NULL; const void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_write(file, buf, count, pos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_write || mkdir -p build/kernel_write file=build/kernel_write/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_write ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_write.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_write/" >>build/Makefile fi if test -n "" ; then test -d build/kernel_write_license || mkdir -p build/kernel_write_license cat confdefs.h - <<_ACEOF >build/kernel_write_license/kernel_write_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *file = NULL; const void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_write(file, buf, count, pos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_write_license || mkdir -p build/kernel_write_license file=build/kernel_write_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_write_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_write_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_write_license/" >>build/Makefile fi fi test -d build/kernel_read || mkdir -p build/kernel_read cat confdefs.h - <<_ACEOF >build/kernel_read/kernel_read.c #include int main (void) { struct file *file = NULL; void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_read(file, buf, count, pos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_read || mkdir -p build/kernel_read file=build/kernel_read/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_read ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_read.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_read/" >>build/Makefile fi if test -n "" ; then test -d build/kernel_read_license || mkdir -p build/kernel_read_license cat confdefs.h - <<_ACEOF >build/kernel_read_license/kernel_read_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *file = NULL; void *buf = NULL; size_t count = 0; loff_t *pos = NULL; ssize_t ret; ret = kernel_read(file, buf, count, pos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_read_license || mkdir -p build/kernel_read_license file=build/kernel_read_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_read_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_read_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_read_license/" >>build/Makefile fi fi test -d build/timer_setup || mkdir -p build/timer_setup cat confdefs.h - <<_ACEOF >build/timer_setup/timer_setup.c #include struct my_task_timer { struct timer_list timer; int data; }; void task_expire(struct timer_list *tl) { struct my_task_timer *task_timer = from_timer(task_timer, tl, timer); task_timer->data = 42; } int main (void) { struct my_task_timer task_timer; timer_setup(&task_timer.timer, task_expire, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_setup || mkdir -p build/timer_setup file=build/timer_setup/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_setup ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_setup.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_setup/" >>build/Makefile fi if test -n "" ; then test -d build/timer_setup_license || mkdir -p build/timer_setup_license cat confdefs.h - <<_ACEOF >build/timer_setup_license/timer_setup_license.c #include MODULE_LICENSE(""); #include struct my_task_timer { struct timer_list timer; int data; }; void task_expire(struct timer_list *tl) { struct my_task_timer *task_timer = from_timer(task_timer, tl, timer); task_timer->data = 42; } int main (void) { struct my_task_timer task_timer; timer_setup(&task_timer.timer, task_expire, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_setup_license || mkdir -p build/timer_setup_license file=build/timer_setup_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_setup_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_setup_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_setup_license/" >>build/Makefile fi fi test -d build/timer_list_function || mkdir -p build/timer_list_function cat confdefs.h - <<_ACEOF >build/timer_list_function/timer_list_function.c #include void task_expire(struct timer_list *tl) {} int main (void) { struct timer_list tl; tl.function = task_expire; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_list_function || mkdir -p build/timer_list_function file=build/timer_list_function/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_list_function ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_list_function.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_list_function/" >>build/Makefile fi if test -n "" ; then test -d build/timer_list_function_license || mkdir -p build/timer_list_function_license cat confdefs.h - <<_ACEOF >build/timer_list_function_license/timer_list_function_license.c #include MODULE_LICENSE(""); #include void task_expire(struct timer_list *tl) {} int main (void) { struct timer_list tl; tl.function = task_expire; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_list_function_license || mkdir -p build/timer_list_function_license file=build/timer_list_function_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_list_function_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_list_function_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_list_function_license/" >>build/Makefile fi fi test -d build/timer_list_flags || mkdir -p build/timer_list_flags cat confdefs.h - <<_ACEOF >build/timer_list_flags/timer_list_flags.c #include int main (void) { struct timer_list tl; tl.flags = 2; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_list_flags || mkdir -p build/timer_list_flags file=build/timer_list_flags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_list_flags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_list_flags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_list_flags/" >>build/Makefile fi if test -n "" ; then test -d build/timer_list_flags_license || mkdir -p build/timer_list_flags_license cat confdefs.h - <<_ACEOF >build/timer_list_flags_license/timer_list_flags_license.c #include MODULE_LICENSE(""); #include int main (void) { struct timer_list tl; tl.flags = 2; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/timer_list_flags_license || mkdir -p build/timer_list_flags_license file=build/timer_list_flags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/timer_list_flags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := timer_list_flags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += timer_list_flags_license/" >>build/Makefile fi fi test -d build/current_bio_tail || mkdir -p build/current_bio_tail cat confdefs.h - <<_ACEOF >build/current_bio_tail/current_bio_tail.c #include int main (void) { current->bio_tail = (struct bio **) NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_bio_tail || mkdir -p build/current_bio_tail file=build/current_bio_tail/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_bio_tail ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_bio_tail.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_bio_tail/" >>build/Makefile fi if test -n "" ; then test -d build/current_bio_tail_license || mkdir -p build/current_bio_tail_license cat confdefs.h - <<_ACEOF >build/current_bio_tail_license/current_bio_tail_license.c #include MODULE_LICENSE(""); #include int main (void) { current->bio_tail = (struct bio **) NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_bio_tail_license || mkdir -p build/current_bio_tail_license file=build/current_bio_tail_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_bio_tail_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_bio_tail_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_bio_tail_license/" >>build/Makefile fi fi test -d build/current_bio_list || mkdir -p build/current_bio_list cat confdefs.h - <<_ACEOF >build/current_bio_list/current_bio_list.c #include int main (void) { current->bio_list = (struct bio_list *) NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_bio_list || mkdir -p build/current_bio_list file=build/current_bio_list/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_bio_list ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_bio_list.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_bio_list/" >>build/Makefile fi if test -n "" ; then test -d build/current_bio_list_license || mkdir -p build/current_bio_list_license cat confdefs.h - <<_ACEOF >build/current_bio_list_license/current_bio_list_license.c #include MODULE_LICENSE(""); #include int main (void) { current->bio_list = (struct bio_list *) NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_bio_list_license || mkdir -p build/current_bio_list_license file=build/current_bio_list_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_bio_list_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_bio_list_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_bio_list_license/" >>build/Makefile fi fi test -d build/super_user_ns || mkdir -p build/super_user_ns cat confdefs.h - <<_ACEOF >build/super_user_ns/super_user_ns.c #include #include int main (void) { struct super_block super; super.s_user_ns = (struct user_namespace *)NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_user_ns || mkdir -p build/super_user_ns file=build/super_user_ns/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_user_ns ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_user_ns.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_user_ns/" >>build/Makefile fi if test -n "" ; then test -d build/super_user_ns_license || mkdir -p build/super_user_ns_license cat confdefs.h - <<_ACEOF >build/super_user_ns_license/super_user_ns_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct super_block super; super.s_user_ns = (struct user_namespace *)NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_user_ns_license || mkdir -p build/super_user_ns_license file=build/super_user_ns_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_user_ns_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_user_ns_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_user_ns_license/" >>build/Makefile fi fi test -d build/submit_bio || mkdir -p build/submit_bio cat confdefs.h - <<_ACEOF >build/submit_bio/submit_bio.c #include int main (void) { blk_qc_t blk_qc; struct bio *bio = NULL; blk_qc = submit_bio(bio); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/submit_bio || mkdir -p build/submit_bio file=build/submit_bio/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/submit_bio ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := submit_bio.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += submit_bio/" >>build/Makefile fi if test -n "" ; then test -d build/submit_bio_license || mkdir -p build/submit_bio_license cat confdefs.h - <<_ACEOF >build/submit_bio_license/submit_bio_license.c #include MODULE_LICENSE(""); #include int main (void) { blk_qc_t blk_qc; struct bio *bio = NULL; blk_qc = submit_bio(bio); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/submit_bio_license || mkdir -p build/submit_bio_license file=build/submit_bio_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/submit_bio_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := submit_bio_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += submit_bio_license/" >>build/Makefile fi fi test -d build/block_device_operations_check_events || mkdir -p build/block_device_operations_check_events cat confdefs.h - <<_ACEOF >build/block_device_operations_check_events/block_device_operations_check_events.c #include unsigned int blk_check_events(struct gendisk *disk, unsigned int clearing) { return (0); } static const struct block_device_operations bops __attribute__ ((unused)) = { .check_events = blk_check_events, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/block_device_operations_check_events || mkdir -p build/block_device_operations_check_events file=build/block_device_operations_check_events/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/block_device_operations_check_events ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := block_device_operations_check_events.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += block_device_operations_check_events/" >>build/Makefile fi if test -n "" ; then test -d build/block_device_operations_check_events_license || mkdir -p build/block_device_operations_check_events_license cat confdefs.h - <<_ACEOF >build/block_device_operations_check_events_license/block_device_operations_check_events_license.c #include MODULE_LICENSE(""); #include unsigned int blk_check_events(struct gendisk *disk, unsigned int clearing) { return (0); } static const struct block_device_operations bops __attribute__ ((unused)) = { .check_events = blk_check_events, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/block_device_operations_check_events_license || mkdir -p build/block_device_operations_check_events_license file=build/block_device_operations_check_events_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/block_device_operations_check_events_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := block_device_operations_check_events_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += block_device_operations_check_events_license/" >>build/Makefile fi fi test -d build/block_device_operations_release_void || mkdir -p build/block_device_operations_release_void cat confdefs.h - <<_ACEOF >build/block_device_operations_release_void/block_device_operations_release_void.c #include void blk_release(struct gendisk *g, fmode_t mode) { return; } static const struct block_device_operations bops __attribute__ ((unused)) = { .open = NULL, .release = blk_release, .ioctl = NULL, .compat_ioctl = NULL, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/block_device_operations_release_void || mkdir -p build/block_device_operations_release_void file=build/block_device_operations_release_void/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/block_device_operations_release_void ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := block_device_operations_release_void.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += block_device_operations_release_void/" >>build/Makefile fi if test -n "" ; then test -d build/block_device_operations_release_void_license || mkdir -p build/block_device_operations_release_void_license cat confdefs.h - <<_ACEOF >build/block_device_operations_release_void_license/block_device_operations_release_void_license.c #include MODULE_LICENSE(""); #include void blk_release(struct gendisk *g, fmode_t mode) { return; } static const struct block_device_operations bops __attribute__ ((unused)) = { .open = NULL, .release = blk_release, .ioctl = NULL, .compat_ioctl = NULL, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/block_device_operations_release_void_license || mkdir -p build/block_device_operations_release_void_license file=build/block_device_operations_release_void_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/block_device_operations_release_void_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := block_device_operations_release_void_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += block_device_operations_release_void_license/" >>build/Makefile fi fi test -d build/blkdev_get_by_path || mkdir -p build/blkdev_get_by_path cat confdefs.h - <<_ACEOF >build/blkdev_get_by_path/blkdev_get_by_path.c #include int main (void) { blkdev_get_by_path(NULL, 0, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blkdev_get_by_path || mkdir -p build/blkdev_get_by_path file=build/blkdev_get_by_path/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blkdev_get_by_path ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blkdev_get_by_path.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blkdev_get_by_path/" >>build/Makefile fi if test -n "" ; then test -d build/blkdev_get_by_path_license || mkdir -p build/blkdev_get_by_path_license cat confdefs.h - <<_ACEOF >build/blkdev_get_by_path_license/blkdev_get_by_path_license.c #include MODULE_LICENSE(""); #include int main (void) { blkdev_get_by_path(NULL, 0, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blkdev_get_by_path_license || mkdir -p build/blkdev_get_by_path_license file=build/blkdev_get_by_path_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blkdev_get_by_path_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blkdev_get_by_path_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blkdev_get_by_path_license/" >>build/Makefile fi fi test -d build/blkdev_reread_part || mkdir -p build/blkdev_reread_part cat confdefs.h - <<_ACEOF >build/blkdev_reread_part/blkdev_reread_part.c #include int main (void) { struct block_device *bdev = NULL; int error; error = blkdev_reread_part(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blkdev_reread_part || mkdir -p build/blkdev_reread_part file=build/blkdev_reread_part/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blkdev_reread_part ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blkdev_reread_part.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blkdev_reread_part/" >>build/Makefile fi if test -n "" ; then test -d build/blkdev_reread_part_license || mkdir -p build/blkdev_reread_part_license cat confdefs.h - <<_ACEOF >build/blkdev_reread_part_license/blkdev_reread_part_license.c #include MODULE_LICENSE(""); #include int main (void) { struct block_device *bdev = NULL; int error; error = blkdev_reread_part(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blkdev_reread_part_license || mkdir -p build/blkdev_reread_part_license file=build/blkdev_reread_part_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blkdev_reread_part_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blkdev_reread_part_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blkdev_reread_part_license/" >>build/Makefile fi fi test -d build/invalidate_bdev || mkdir -p build/invalidate_bdev cat confdefs.h - <<_ACEOF >build/invalidate_bdev/invalidate_bdev.c #include int main (void) { struct block_device *bdev = NULL; invalidate_bdev(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/invalidate_bdev || mkdir -p build/invalidate_bdev file=build/invalidate_bdev/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/invalidate_bdev ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := invalidate_bdev.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += invalidate_bdev/" >>build/Makefile fi if test -n "" ; then test -d build/invalidate_bdev_license || mkdir -p build/invalidate_bdev_license cat confdefs.h - <<_ACEOF >build/invalidate_bdev_license/invalidate_bdev_license.c #include MODULE_LICENSE(""); #include int main (void) { struct block_device *bdev = NULL; invalidate_bdev(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/invalidate_bdev_license || mkdir -p build/invalidate_bdev_license file=build/invalidate_bdev_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/invalidate_bdev_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := invalidate_bdev_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += invalidate_bdev_license/" >>build/Makefile fi fi test -d build/lookup_bdev_1arg || mkdir -p build/lookup_bdev_1arg cat confdefs.h - <<_ACEOF >build/lookup_bdev_1arg/lookup_bdev_1arg.c #include int main (void) { lookup_bdev(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_bdev_1arg || mkdir -p build/lookup_bdev_1arg file=build/lookup_bdev_1arg/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_bdev_1arg ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_bdev_1arg.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_bdev_1arg/" >>build/Makefile fi if test -n "" ; then test -d build/lookup_bdev_1arg_license || mkdir -p build/lookup_bdev_1arg_license cat confdefs.h - <<_ACEOF >build/lookup_bdev_1arg_license/lookup_bdev_1arg_license.c #include MODULE_LICENSE(""); #include int main (void) { lookup_bdev(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_bdev_1arg_license || mkdir -p build/lookup_bdev_1arg_license file=build/lookup_bdev_1arg_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_bdev_1arg_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_bdev_1arg_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_bdev_1arg_license/" >>build/Makefile fi fi test -d build/lookup_bdev_2args || mkdir -p build/lookup_bdev_2args cat confdefs.h - <<_ACEOF >build/lookup_bdev_2args/lookup_bdev_2args.c #include int main (void) { lookup_bdev(NULL, FMODE_READ); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_bdev_2args || mkdir -p build/lookup_bdev_2args file=build/lookup_bdev_2args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_bdev_2args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_bdev_2args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_bdev_2args/" >>build/Makefile fi if test -n "" ; then test -d build/lookup_bdev_2args_license || mkdir -p build/lookup_bdev_2args_license cat confdefs.h - <<_ACEOF >build/lookup_bdev_2args_license/lookup_bdev_2args_license.c #include MODULE_LICENSE(""); #include int main (void) { lookup_bdev(NULL, FMODE_READ); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_bdev_2args_license || mkdir -p build/lookup_bdev_2args_license file=build/lookup_bdev_2args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_bdev_2args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_bdev_2args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_bdev_2args_license/" >>build/Makefile fi fi test -d build/open_bdev_exclusive || mkdir -p build/open_bdev_exclusive cat confdefs.h - <<_ACEOF >build/open_bdev_exclusive/open_bdev_exclusive.c #include int main (void) { open_bdev_exclusive(NULL, 0, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/open_bdev_exclusive || mkdir -p build/open_bdev_exclusive file=build/open_bdev_exclusive/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/open_bdev_exclusive ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := open_bdev_exclusive.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += open_bdev_exclusive/" >>build/Makefile fi if test -n "" ; then test -d build/open_bdev_exclusive_license || mkdir -p build/open_bdev_exclusive_license cat confdefs.h - <<_ACEOF >build/open_bdev_exclusive_license/open_bdev_exclusive_license.c #include MODULE_LICENSE(""); #include int main (void) { open_bdev_exclusive(NULL, 0, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/open_bdev_exclusive_license || mkdir -p build/open_bdev_exclusive_license file=build/open_bdev_exclusive_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/open_bdev_exclusive_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := open_bdev_exclusive_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += open_bdev_exclusive_license/" >>build/Makefile fi fi test -d build/bdev_logical_block_size || mkdir -p build/bdev_logical_block_size cat confdefs.h - <<_ACEOF >build/bdev_logical_block_size/bdev_logical_block_size.c #include int main (void) { struct block_device *bdev = NULL; bdev_logical_block_size(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdev_logical_block_size || mkdir -p build/bdev_logical_block_size file=build/bdev_logical_block_size/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdev_logical_block_size ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := bdev_logical_block_size.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdev_logical_block_size/" >>build/Makefile fi if test -n "" ; then test -d build/bdev_logical_block_size_license || mkdir -p build/bdev_logical_block_size_license cat confdefs.h - <<_ACEOF >build/bdev_logical_block_size_license/bdev_logical_block_size_license.c #include MODULE_LICENSE(""); #include int main (void) { struct block_device *bdev = NULL; bdev_logical_block_size(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdev_logical_block_size_license || mkdir -p build/bdev_logical_block_size_license file=build/bdev_logical_block_size_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdev_logical_block_size_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := bdev_logical_block_size_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdev_logical_block_size_license/" >>build/Makefile fi fi test -d build/bdev_physical_block_size || mkdir -p build/bdev_physical_block_size cat confdefs.h - <<_ACEOF >build/bdev_physical_block_size/bdev_physical_block_size.c #include int main (void) { struct block_device *bdev = NULL; bdev_physical_block_size(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdev_physical_block_size || mkdir -p build/bdev_physical_block_size file=build/bdev_physical_block_size/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdev_physical_block_size ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := bdev_physical_block_size.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdev_physical_block_size/" >>build/Makefile fi if test -n "" ; then test -d build/bdev_physical_block_size_license || mkdir -p build/bdev_physical_block_size_license cat confdefs.h - <<_ACEOF >build/bdev_physical_block_size_license/bdev_physical_block_size_license.c #include MODULE_LICENSE(""); #include int main (void) { struct block_device *bdev = NULL; bdev_physical_block_size(bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdev_physical_block_size_license || mkdir -p build/bdev_physical_block_size_license file=build/bdev_physical_block_size_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdev_physical_block_size_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := bdev_physical_block_size_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdev_physical_block_size_license/" >>build/Makefile fi fi test -d build/bio_bvec_iter || mkdir -p build/bio_bvec_iter cat confdefs.h - <<_ACEOF >build/bio_bvec_iter/bio_bvec_iter.c #include int main (void) { struct bio bio; bio.bi_iter.bi_sector = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bvec_iter || mkdir -p build/bio_bvec_iter file=build/bio_bvec_iter/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bvec_iter ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bvec_iter.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bvec_iter/" >>build/Makefile fi if test -n "" ; then test -d build/bio_bvec_iter_license || mkdir -p build/bio_bvec_iter_license cat confdefs.h - <<_ACEOF >build/bio_bvec_iter_license/bio_bvec_iter_license.c #include MODULE_LICENSE(""); #include int main (void) { struct bio bio; bio.bi_iter.bi_sector = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bvec_iter_license || mkdir -p build/bio_bvec_iter_license file=build/bio_bvec_iter_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bvec_iter_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bvec_iter_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bvec_iter_license/" >>build/Makefile fi fi test -d build/bio_failfast_dtd || mkdir -p build/bio_failfast_dtd cat confdefs.h - <<_ACEOF >build/bio_failfast_dtd/bio_failfast_dtd.c #include int main (void) { int flags __attribute__ ((unused)); flags = ((1 << BIO_RW_FAILFAST_DEV) | (1 << BIO_RW_FAILFAST_TRANSPORT) | (1 << BIO_RW_FAILFAST_DRIVER)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_failfast_dtd || mkdir -p build/bio_failfast_dtd file=build/bio_failfast_dtd/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_failfast_dtd ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_failfast_dtd.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_failfast_dtd/" >>build/Makefile fi if test -n "" ; then test -d build/bio_failfast_dtd_license || mkdir -p build/bio_failfast_dtd_license cat confdefs.h - <<_ACEOF >build/bio_failfast_dtd_license/bio_failfast_dtd_license.c #include MODULE_LICENSE(""); #include int main (void) { int flags __attribute__ ((unused)); flags = ((1 << BIO_RW_FAILFAST_DEV) | (1 << BIO_RW_FAILFAST_TRANSPORT) | (1 << BIO_RW_FAILFAST_DRIVER)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_failfast_dtd_license || mkdir -p build/bio_failfast_dtd_license file=build/bio_failfast_dtd_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_failfast_dtd_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_failfast_dtd_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_failfast_dtd_license/" >>build/Makefile fi fi test -d build/bio_failfast_mask || mkdir -p build/bio_failfast_mask cat confdefs.h - <<_ACEOF >build/bio_failfast_mask/bio_failfast_mask.c #include int main (void) { int flags __attribute__ ((unused)); flags = REQ_FAILFAST_MASK; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_failfast_mask || mkdir -p build/bio_failfast_mask file=build/bio_failfast_mask/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_failfast_mask ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_failfast_mask.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_failfast_mask/" >>build/Makefile fi if test -n "" ; then test -d build/bio_failfast_mask_license || mkdir -p build/bio_failfast_mask_license cat confdefs.h - <<_ACEOF >build/bio_failfast_mask_license/bio_failfast_mask_license.c #include MODULE_LICENSE(""); #include int main (void) { int flags __attribute__ ((unused)); flags = REQ_FAILFAST_MASK; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_failfast_mask_license || mkdir -p build/bio_failfast_mask_license file=build/bio_failfast_mask_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_failfast_mask_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_failfast_mask_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_failfast_mask_license/" >>build/Makefile fi fi test -d build/bio_set_dev || mkdir -p build/bio_set_dev cat confdefs.h - <<_ACEOF >build/bio_set_dev/bio_set_dev.c #include #include int main (void) { struct block_device *bdev = NULL; struct bio *bio = NULL; bio_set_dev(bio, bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_set_dev || mkdir -p build/bio_set_dev file=build/bio_set_dev/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_set_dev ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_set_dev.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_set_dev/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/bio_set_dev_license || mkdir -p build/bio_set_dev_license cat confdefs.h - <<_ACEOF >build/bio_set_dev_license/bio_set_dev_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #include int main (void) { struct block_device *bdev = NULL; struct bio *bio = NULL; bio_set_dev(bio, bdev); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_set_dev_license || mkdir -p build/bio_set_dev_license file=build/bio_set_dev_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_set_dev_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_set_dev_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_set_dev_license/" >>build/Makefile fi fi test -d build/req_op_discard || mkdir -p build/req_op_discard cat confdefs.h - <<_ACEOF >build/req_op_discard/req_op_discard.c #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_DISCARD; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_discard || mkdir -p build/req_op_discard file=build/req_op_discard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_discard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_discard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_discard/" >>build/Makefile fi if test -n "" ; then test -d build/req_op_discard_license || mkdir -p build/req_op_discard_license cat confdefs.h - <<_ACEOF >build/req_op_discard_license/req_op_discard_license.c #include MODULE_LICENSE(""); #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_DISCARD; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_discard_license || mkdir -p build/req_op_discard_license file=build/req_op_discard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_discard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_discard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_discard_license/" >>build/Makefile fi fi test -d build/req_op_secure_erase || mkdir -p build/req_op_secure_erase cat confdefs.h - <<_ACEOF >build/req_op_secure_erase/req_op_secure_erase.c #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_secure_erase || mkdir -p build/req_op_secure_erase file=build/req_op_secure_erase/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_secure_erase ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_secure_erase.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_secure_erase/" >>build/Makefile fi if test -n "" ; then test -d build/req_op_secure_erase_license || mkdir -p build/req_op_secure_erase_license cat confdefs.h - <<_ACEOF >build/req_op_secure_erase_license/req_op_secure_erase_license.c #include MODULE_LICENSE(""); #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_SECURE_ERASE; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_secure_erase_license || mkdir -p build/req_op_secure_erase_license file=build/req_op_secure_erase_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_secure_erase_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_secure_erase_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_secure_erase_license/" >>build/Makefile fi fi test -d build/req_op_flush || mkdir -p build/req_op_flush cat confdefs.h - <<_ACEOF >build/req_op_flush/req_op_flush.c #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_FLUSH; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_flush || mkdir -p build/req_op_flush file=build/req_op_flush/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_flush ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_flush.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_flush/" >>build/Makefile fi if test -n "" ; then test -d build/req_op_flush_license || mkdir -p build/req_op_flush_license cat confdefs.h - <<_ACEOF >build/req_op_flush_license/req_op_flush_license.c #include MODULE_LICENSE(""); #include int main (void) { int op __attribute__ ((unused)) = REQ_OP_FLUSH; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/req_op_flush_license || mkdir -p build/req_op_flush_license file=build/req_op_flush_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/req_op_flush_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := req_op_flush_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += req_op_flush_license/" >>build/Makefile fi fi test -d build/bio_bi_opf || mkdir -p build/bio_bi_opf cat confdefs.h - <<_ACEOF >build/bio_bi_opf/bio_bi_opf.c #include int main (void) { struct bio bio __attribute__ ((unused)); bio.bi_opf = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bi_opf || mkdir -p build/bio_bi_opf file=build/bio_bi_opf/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bi_opf ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bi_opf.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bi_opf/" >>build/Makefile fi if test -n "" ; then test -d build/bio_bi_opf_license || mkdir -p build/bio_bi_opf_license cat confdefs.h - <<_ACEOF >build/bio_bi_opf_license/bio_bi_opf_license.c #include MODULE_LICENSE(""); #include int main (void) { struct bio bio __attribute__ ((unused)); bio.bi_opf = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bi_opf_license || mkdir -p build/bio_bi_opf_license file=build/bio_bi_opf_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bi_opf_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bi_opf_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bi_opf_license/" >>build/Makefile fi fi test -d build/bio_set_op_attrs || mkdir -p build/bio_set_op_attrs cat confdefs.h - <<_ACEOF >build/bio_set_op_attrs/bio_set_op_attrs.c #include int main (void) { struct bio *bio __attribute__ ((unused)) = NULL; bio_set_op_attrs(bio, 0, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_set_op_attrs || mkdir -p build/bio_set_op_attrs file=build/bio_set_op_attrs/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_set_op_attrs ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_set_op_attrs.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_set_op_attrs/" >>build/Makefile fi if test -n "" ; then test -d build/bio_set_op_attrs_license || mkdir -p build/bio_set_op_attrs_license cat confdefs.h - <<_ACEOF >build/bio_set_op_attrs_license/bio_set_op_attrs_license.c #include MODULE_LICENSE(""); #include int main (void) { struct bio *bio __attribute__ ((unused)) = NULL; bio_set_op_attrs(bio, 0, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_set_op_attrs_license || mkdir -p build/bio_set_op_attrs_license file=build/bio_set_op_attrs_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_set_op_attrs_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_set_op_attrs_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_set_op_attrs_license/" >>build/Makefile fi fi test -d build/bio_end_io_t_args || mkdir -p build/bio_end_io_t_args cat confdefs.h - <<_ACEOF >build/bio_end_io_t_args/bio_end_io_t_args.c #include void wanted_end_io(struct bio *bio) { return; } bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_end_io_t_args || mkdir -p build/bio_end_io_t_args file=build/bio_end_io_t_args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_end_io_t_args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_end_io_t_args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_end_io_t_args/" >>build/Makefile fi if test -n "" ; then test -d build/bio_end_io_t_args_license || mkdir -p build/bio_end_io_t_args_license cat confdefs.h - <<_ACEOF >build/bio_end_io_t_args_license/bio_end_io_t_args_license.c #include MODULE_LICENSE(""); #include void wanted_end_io(struct bio *bio) { return; } bio_end_io_t *end_io __attribute__ ((unused)) = wanted_end_io; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_end_io_t_args_license || mkdir -p build/bio_end_io_t_args_license file=build/bio_end_io_t_args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_end_io_t_args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_end_io_t_args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_end_io_t_args_license/" >>build/Makefile fi fi test -d build/bio_bi_status || mkdir -p build/bio_bi_status cat confdefs.h - <<_ACEOF >build/bio_bi_status/bio_bi_status.c #include int main (void) { struct bio bio __attribute__ ((unused)); blk_status_t status __attribute__ ((unused)) = BLK_STS_OK; bio.bi_status = status; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bi_status || mkdir -p build/bio_bi_status file=build/bio_bi_status/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bi_status ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bi_status.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bi_status/" >>build/Makefile fi if test -n "" ; then test -d build/bio_bi_status_license || mkdir -p build/bio_bi_status_license cat confdefs.h - <<_ACEOF >build/bio_bi_status_license/bio_bi_status_license.c #include MODULE_LICENSE(""); #include int main (void) { struct bio bio __attribute__ ((unused)); blk_status_t status __attribute__ ((unused)) = BLK_STS_OK; bio.bi_status = status; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_bi_status_license || mkdir -p build/bio_bi_status_license file=build/bio_bi_status_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_bi_status_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_bi_status_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_bi_status_license/" >>build/Makefile fi fi test -d build/bio_rw_barrier || mkdir -p build/bio_rw_barrier cat confdefs.h - <<_ACEOF >build/bio_rw_barrier/bio_rw_barrier.c #include int main (void) { int flags __attribute__ ((unused)); flags = BIO_RW_BARRIER; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_rw_barrier || mkdir -p build/bio_rw_barrier file=build/bio_rw_barrier/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_rw_barrier ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_rw_barrier.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_rw_barrier/" >>build/Makefile fi if test -n "" ; then test -d build/bio_rw_barrier_license || mkdir -p build/bio_rw_barrier_license cat confdefs.h - <<_ACEOF >build/bio_rw_barrier_license/bio_rw_barrier_license.c #include MODULE_LICENSE(""); #include int main (void) { int flags __attribute__ ((unused)); flags = BIO_RW_BARRIER; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_rw_barrier_license || mkdir -p build/bio_rw_barrier_license file=build/bio_rw_barrier_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_rw_barrier_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_rw_barrier_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_rw_barrier_license/" >>build/Makefile fi fi test -d build/bio_rw_discard || mkdir -p build/bio_rw_discard cat confdefs.h - <<_ACEOF >build/bio_rw_discard/bio_rw_discard.c #include int main (void) { int flags __attribute__ ((unused)); flags = BIO_RW_DISCARD; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_rw_discard || mkdir -p build/bio_rw_discard file=build/bio_rw_discard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_rw_discard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_rw_discard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_rw_discard/" >>build/Makefile fi if test -n "" ; then test -d build/bio_rw_discard_license || mkdir -p build/bio_rw_discard_license cat confdefs.h - <<_ACEOF >build/bio_rw_discard_license/bio_rw_discard_license.c #include MODULE_LICENSE(""); #include int main (void) { int flags __attribute__ ((unused)); flags = BIO_RW_DISCARD; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bio_rw_discard_license || mkdir -p build/bio_rw_discard_license file=build/bio_rw_discard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bio_rw_discard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bio_rw_discard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bio_rw_discard_license/" >>build/Makefile fi fi test -d build/blk_queue_bdi || mkdir -p build/blk_queue_bdi cat confdefs.h - <<_ACEOF >build/blk_queue_bdi/blk_queue_bdi.c #include int main (void) { struct request_queue q; struct backing_dev_info bdi; q.backing_dev_info = &bdi; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_bdi || mkdir -p build/blk_queue_bdi file=build/blk_queue_bdi/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_bdi ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_bdi.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_bdi/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_bdi_license || mkdir -p build/blk_queue_bdi_license cat confdefs.h - <<_ACEOF >build/blk_queue_bdi_license/blk_queue_bdi_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue q; struct backing_dev_info bdi; q.backing_dev_info = &bdi; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_bdi_license || mkdir -p build/blk_queue_bdi_license file=build/blk_queue_bdi_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_bdi_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_bdi_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_bdi_license/" >>build/Makefile fi fi test -d build/blk_queue_discard || mkdir -p build/blk_queue_discard cat confdefs.h - <<_ACEOF >build/blk_queue_discard/blk_queue_discard.c #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_discard(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_discard || mkdir -p build/blk_queue_discard file=build/blk_queue_discard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_discard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_discard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_discard/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_discard_license || mkdir -p build/blk_queue_discard_license cat confdefs.h - <<_ACEOF >build/blk_queue_discard_license/blk_queue_discard_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_discard(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_discard_license || mkdir -p build/blk_queue_discard_license file=build/blk_queue_discard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_discard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_discard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_discard_license/" >>build/Makefile fi fi test -d build/blk_queue_secure_erase || mkdir -p build/blk_queue_secure_erase cat confdefs.h - <<_ACEOF >build/blk_queue_secure_erase/blk_queue_secure_erase.c #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secure_erase(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_secure_erase || mkdir -p build/blk_queue_secure_erase file=build/blk_queue_secure_erase/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_secure_erase ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_secure_erase.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_secure_erase/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_secure_erase_license || mkdir -p build/blk_queue_secure_erase_license cat confdefs.h - <<_ACEOF >build/blk_queue_secure_erase_license/blk_queue_secure_erase_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secure_erase(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_secure_erase_license || mkdir -p build/blk_queue_secure_erase_license file=build/blk_queue_secure_erase_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_secure_erase_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_secure_erase_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_secure_erase_license/" >>build/Makefile fi fi test -d build/blk_queue_secdiscard || mkdir -p build/blk_queue_secdiscard cat confdefs.h - <<_ACEOF >build/blk_queue_secdiscard/blk_queue_secdiscard.c #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secdiscard(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_secdiscard || mkdir -p build/blk_queue_secdiscard file=build/blk_queue_secdiscard/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_secdiscard ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_secdiscard.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_secdiscard/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_secdiscard_license || mkdir -p build/blk_queue_secdiscard_license cat confdefs.h - <<_ACEOF >build/blk_queue_secdiscard_license/blk_queue_secdiscard_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q __attribute__ ((unused)) = NULL; int value __attribute__ ((unused)); value = blk_queue_secdiscard(q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_secdiscard_license || mkdir -p build/blk_queue_secdiscard_license file=build/blk_queue_secdiscard_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_secdiscard_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_secdiscard_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_secdiscard_license/" >>build/Makefile fi fi test -d build/blk_queue_flag_set || mkdir -p build/blk_queue_flag_set cat confdefs.h - <<_ACEOF >build/blk_queue_flag_set/blk_queue_flag_set.c #include #include int main (void) { struct request_queue *q = NULL; blk_queue_flag_set(0, q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flag_set || mkdir -p build/blk_queue_flag_set file=build/blk_queue_flag_set/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flag_set ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_flag_set.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flag_set/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_flag_set_license || mkdir -p build/blk_queue_flag_set_license cat confdefs.h - <<_ACEOF >build/blk_queue_flag_set_license/blk_queue_flag_set_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct request_queue *q = NULL; blk_queue_flag_set(0, q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flag_set_license || mkdir -p build/blk_queue_flag_set_license file=build/blk_queue_flag_set_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flag_set_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_flag_set_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flag_set_license/" >>build/Makefile fi fi test -d build/blk_queue_flag_clear || mkdir -p build/blk_queue_flag_clear cat confdefs.h - <<_ACEOF >build/blk_queue_flag_clear/blk_queue_flag_clear.c #include #include int main (void) { struct request_queue *q = NULL; blk_queue_flag_clear(0, q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flag_clear || mkdir -p build/blk_queue_flag_clear file=build/blk_queue_flag_clear/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flag_clear ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_flag_clear.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flag_clear/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_flag_clear_license || mkdir -p build/blk_queue_flag_clear_license cat confdefs.h - <<_ACEOF >build/blk_queue_flag_clear_license/blk_queue_flag_clear_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct request_queue *q = NULL; blk_queue_flag_clear(0, q); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flag_clear_license || mkdir -p build/blk_queue_flag_clear_license file=build/blk_queue_flag_clear_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flag_clear_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_flag_clear_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flag_clear_license/" >>build/Makefile fi fi test -d build/blk_queue_flush || mkdir -p build/blk_queue_flush cat confdefs.h - <<_ACEOF >build/blk_queue_flush/blk_queue_flush.c #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_flush(q, REQ_FLUSH); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flush || mkdir -p build/blk_queue_flush file=build/blk_queue_flush/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flush ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_flush.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flush/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/blk_queue_flush_license || mkdir -p build/blk_queue_flush_license cat confdefs.h - <<_ACEOF >build/blk_queue_flush_license/blk_queue_flush_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_flush(q, REQ_FLUSH); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_flush_license || mkdir -p build/blk_queue_flush_license file=build/blk_queue_flush_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_flush_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_flush_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_flush_license/" >>build/Makefile fi fi test -d build/blk_queue_write_cache || mkdir -p build/blk_queue_write_cache cat confdefs.h - <<_ACEOF >build/blk_queue_write_cache/blk_queue_write_cache.c #include #include int main (void) { struct request_queue *q = NULL; blk_queue_write_cache(q, true, true); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_write_cache || mkdir -p build/blk_queue_write_cache file=build/blk_queue_write_cache/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_write_cache ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_write_cache.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_write_cache/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/blk_queue_write_cache_license || mkdir -p build/blk_queue_write_cache_license cat confdefs.h - <<_ACEOF >build/blk_queue_write_cache_license/blk_queue_write_cache_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #include int main (void) { struct request_queue *q = NULL; blk_queue_write_cache(q, true, true); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_write_cache_license || mkdir -p build/blk_queue_write_cache_license file=build/blk_queue_write_cache_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_write_cache_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_write_cache_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_write_cache_license/" >>build/Makefile fi fi test -d build/blk_queue_max_hw_sectors || mkdir -p build/blk_queue_max_hw_sectors cat confdefs.h - <<_ACEOF >build/blk_queue_max_hw_sectors/blk_queue_max_hw_sectors.c #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_max_hw_sectors(q, BLK_SAFE_MAX_SECTORS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_max_hw_sectors || mkdir -p build/blk_queue_max_hw_sectors file=build/blk_queue_max_hw_sectors/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_max_hw_sectors ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_max_hw_sectors.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_max_hw_sectors/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_max_hw_sectors_license || mkdir -p build/blk_queue_max_hw_sectors_license cat confdefs.h - <<_ACEOF >build/blk_queue_max_hw_sectors_license/blk_queue_max_hw_sectors_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_max_hw_sectors(q, BLK_SAFE_MAX_SECTORS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_max_hw_sectors_license || mkdir -p build/blk_queue_max_hw_sectors_license file=build/blk_queue_max_hw_sectors_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_max_hw_sectors_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_max_hw_sectors_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_max_hw_sectors_license/" >>build/Makefile fi fi test -d build/blk_queue_max_segments || mkdir -p build/blk_queue_max_segments cat confdefs.h - <<_ACEOF >build/blk_queue_max_segments/blk_queue_max_segments.c #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_max_segments(q, BLK_MAX_SEGMENTS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_max_segments || mkdir -p build/blk_queue_max_segments file=build/blk_queue_max_segments/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_max_segments ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_max_segments.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_max_segments/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_max_segments_license || mkdir -p build/blk_queue_max_segments_license cat confdefs.h - <<_ACEOF >build/blk_queue_max_segments_license/blk_queue_max_segments_license.c #include MODULE_LICENSE(""); #include int main (void) { struct request_queue *q = NULL; (void) blk_queue_max_segments(q, BLK_MAX_SEGMENTS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_max_segments_license || mkdir -p build/blk_queue_max_segments_license file=build/blk_queue_max_segments_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_max_segments_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := blk_queue_max_segments_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_max_segments_license/" >>build/Makefile fi fi test -d build/blk_queue_bio_rw_unplug || mkdir -p build/blk_queue_bio_rw_unplug cat confdefs.h - <<_ACEOF >build/blk_queue_bio_rw_unplug/blk_queue_bio_rw_unplug.c #include int main (void) { enum bio_rw_flags rw __attribute__ ((unused)) = BIO_RW_UNPLUG; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_bio_rw_unplug || mkdir -p build/blk_queue_bio_rw_unplug file=build/blk_queue_bio_rw_unplug/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_bio_rw_unplug ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_bio_rw_unplug.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_bio_rw_unplug/" >>build/Makefile fi if test -n "" ; then test -d build/blk_queue_bio_rw_unplug_license || mkdir -p build/blk_queue_bio_rw_unplug_license cat confdefs.h - <<_ACEOF >build/blk_queue_bio_rw_unplug_license/blk_queue_bio_rw_unplug_license.c #include MODULE_LICENSE(""); #include int main (void) { enum bio_rw_flags rw __attribute__ ((unused)) = BIO_RW_UNPLUG; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_queue_bio_rw_unplug_license || mkdir -p build/blk_queue_bio_rw_unplug_license file=build/blk_queue_bio_rw_unplug_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_queue_bio_rw_unplug_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_queue_bio_rw_unplug_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_queue_bio_rw_unplug_license/" >>build/Makefile fi fi test -d build/blk_plug || mkdir -p build/blk_plug cat confdefs.h - <<_ACEOF >build/blk_plug/blk_plug.c #include int main (void) { struct blk_plug plug __attribute__ ((unused)); blk_start_plug(&plug); blk_finish_plug(&plug); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_plug || mkdir -p build/blk_plug file=build/blk_plug/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_plug ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_plug.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_plug/" >>build/Makefile fi if test -n "" ; then test -d build/blk_plug_license || mkdir -p build/blk_plug_license cat confdefs.h - <<_ACEOF >build/blk_plug_license/blk_plug_license.c #include MODULE_LICENSE(""); #include int main (void) { struct blk_plug plug __attribute__ ((unused)); blk_start_plug(&plug); blk_finish_plug(&plug); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/blk_plug_license || mkdir -p build/blk_plug_license file=build/blk_plug_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/blk_plug_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := blk_plug_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += blk_plug_license/" >>build/Makefile fi fi test -d build/get_disk_and_module || mkdir -p build/get_disk_and_module cat confdefs.h - <<_ACEOF >build/get_disk_and_module/get_disk_and_module.c #include int main (void) { struct gendisk *disk = NULL; (void) get_disk_and_module(disk); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_disk_and_module || mkdir -p build/get_disk_and_module file=build/get_disk_and_module/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_disk_and_module ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := get_disk_and_module.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_disk_and_module/" >>build/Makefile fi if test -n "" ; then test -d build/get_disk_and_module_license || mkdir -p build/get_disk_and_module_license cat confdefs.h - <<_ACEOF >build/get_disk_and_module_license/get_disk_and_module_license.c #include MODULE_LICENSE(""); #include int main (void) { struct gendisk *disk = NULL; (void) get_disk_and_module(disk); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_disk_and_module_license || mkdir -p build/get_disk_and_module_license file=build/get_disk_and_module_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_disk_and_module_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := get_disk_and_module_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_disk_and_module_license/" >>build/Makefile fi fi test -d build/get_disk_ro || mkdir -p build/get_disk_ro cat confdefs.h - <<_ACEOF >build/get_disk_ro/get_disk_ro.c #include int main (void) { struct gendisk *disk = NULL; (void) get_disk_ro(disk); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_disk_ro || mkdir -p build/get_disk_ro file=build/get_disk_ro/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_disk_ro ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := get_disk_ro.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_disk_ro/" >>build/Makefile fi if test -n "" ; then test -d build/get_disk_ro_license || mkdir -p build/get_disk_ro_license cat confdefs.h - <<_ACEOF >build/get_disk_ro_license/get_disk_ro_license.c #include MODULE_LICENSE(""); #include int main (void) { struct gendisk *disk = NULL; (void) get_disk_ro(disk); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_disk_ro_license || mkdir -p build/get_disk_ro_license file=build/get_disk_ro_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_disk_ro_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "ccflags-y += $NO_UNUSED_BUT_SET_VARIABLE" >>$file echo "obj-m := get_disk_ro_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_disk_ro_license/" >>build/Makefile fi fi test -d build/generic_readlink_global || mkdir -p build/generic_readlink_global cat confdefs.h - <<_ACEOF >build/generic_readlink_global/generic_readlink_global.c #include int main (void) { int i __attribute__ ((unused)); i = generic_readlink(NULL, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_readlink_global || mkdir -p build/generic_readlink_global file=build/generic_readlink_global/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_readlink_global ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_readlink_global.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_readlink_global/" >>build/Makefile fi if test -n "" ; then test -d build/generic_readlink_global_license || mkdir -p build/generic_readlink_global_license cat confdefs.h - <<_ACEOF >build/generic_readlink_global_license/generic_readlink_global_license.c #include MODULE_LICENSE(""); #include int main (void) { int i __attribute__ ((unused)); i = generic_readlink(NULL, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_readlink_global_license || mkdir -p build/generic_readlink_global_license file=build/generic_readlink_global_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_readlink_global_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_readlink_global_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_readlink_global_license/" >>build/Makefile fi fi test -d build/discard_granularity || mkdir -p build/discard_granularity cat confdefs.h - <<_ACEOF >build/discard_granularity/discard_granularity.c #include int main (void) { struct queue_limits ql __attribute__ ((unused)); ql.discard_granularity = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/discard_granularity || mkdir -p build/discard_granularity file=build/discard_granularity/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/discard_granularity ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := discard_granularity.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += discard_granularity/" >>build/Makefile fi if test -n "" ; then test -d build/discard_granularity_license || mkdir -p build/discard_granularity_license cat confdefs.h - <<_ACEOF >build/discard_granularity_license/discard_granularity_license.c #include MODULE_LICENSE(""); #include int main (void) { struct queue_limits ql __attribute__ ((unused)); ql.discard_granularity = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/discard_granularity_license || mkdir -p build/discard_granularity_license file=build/discard_granularity_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/discard_granularity_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := discard_granularity_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += discard_granularity_license/" >>build/Makefile fi fi test -d build/inode_owner_or_capable || mkdir -p build/inode_owner_or_capable cat confdefs.h - <<_ACEOF >build/inode_owner_or_capable/inode_owner_or_capable.c #include int main (void) { struct inode *ip = NULL; (void) inode_owner_or_capable(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_owner_or_capable || mkdir -p build/inode_owner_or_capable file=build/inode_owner_or_capable/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_owner_or_capable ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_owner_or_capable.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_owner_or_capable/" >>build/Makefile fi if test -n "" ; then test -d build/inode_owner_or_capable_license || mkdir -p build/inode_owner_or_capable_license cat confdefs.h - <<_ACEOF >build/inode_owner_or_capable_license/inode_owner_or_capable_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip = NULL; (void) inode_owner_or_capable(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_owner_or_capable_license || mkdir -p build/inode_owner_or_capable_license file=build/inode_owner_or_capable_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_owner_or_capable_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_owner_or_capable_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_owner_or_capable_license/" >>build/Makefile fi fi test -d build/is_owner_or_cap || mkdir -p build/is_owner_or_cap cat confdefs.h - <<_ACEOF >build/is_owner_or_cap/is_owner_or_cap.c #include #include int main (void) { struct inode *ip = NULL; (void) is_owner_or_cap(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/is_owner_or_cap || mkdir -p build/is_owner_or_cap file=build/is_owner_or_cap/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/is_owner_or_cap ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := is_owner_or_cap.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += is_owner_or_cap/" >>build/Makefile fi if test -n "" ; then test -d build/is_owner_or_cap_license || mkdir -p build/is_owner_or_cap_license cat confdefs.h - <<_ACEOF >build/is_owner_or_cap_license/is_owner_or_cap_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct inode *ip = NULL; (void) is_owner_or_cap(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/is_owner_or_cap_license || mkdir -p build/is_owner_or_cap_license file=build/is_owner_or_cap_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/is_owner_or_cap_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := is_owner_or_cap_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += is_owner_or_cap_license/" >>build/Makefile fi fi test -d build/const_xattr_handler || mkdir -p build/const_xattr_handler cat confdefs.h - <<_ACEOF >build/const_xattr_handler/const_xattr_handler.c #include #include const struct xattr_handler xattr_test_handler = { .prefix = "test", .get = NULL, .set = NULL, }; const struct xattr_handler *xattr_handlers[] = { &xattr_test_handler, }; const struct super_block sb __attribute__ ((unused)) = { .s_xattr = xattr_handlers, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/const_xattr_handler || mkdir -p build/const_xattr_handler file=build/const_xattr_handler/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/const_xattr_handler ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := const_xattr_handler.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += const_xattr_handler/" >>build/Makefile fi if test -n "" ; then test -d build/const_xattr_handler_license || mkdir -p build/const_xattr_handler_license cat confdefs.h - <<_ACEOF >build/const_xattr_handler_license/const_xattr_handler_license.c #include MODULE_LICENSE(""); #include #include const struct xattr_handler xattr_test_handler = { .prefix = "test", .get = NULL, .set = NULL, }; const struct xattr_handler *xattr_handlers[] = { &xattr_test_handler, }; const struct super_block sb __attribute__ ((unused)) = { .s_xattr = xattr_handlers, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/const_xattr_handler_license || mkdir -p build/const_xattr_handler_license file=build/const_xattr_handler_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/const_xattr_handler_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := const_xattr_handler_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += const_xattr_handler_license/" >>build/Makefile fi fi test -d build/xattr_handler_name || mkdir -p build/xattr_handler_name cat confdefs.h - <<_ACEOF >build/xattr_handler_name/xattr_handler_name.c #include static const struct xattr_handler xops __attribute__ ((unused)) = { .name = XATTR_NAME_POSIX_ACL_ACCESS, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_name || mkdir -p build/xattr_handler_name file=build/xattr_handler_name/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_name ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_name.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_name/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_name_license || mkdir -p build/xattr_handler_name_license cat confdefs.h - <<_ACEOF >build/xattr_handler_name_license/xattr_handler_name_license.c #include MODULE_LICENSE(""); #include static const struct xattr_handler xops __attribute__ ((unused)) = { .name = XATTR_NAME_POSIX_ACL_ACCESS, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_name_license || mkdir -p build/xattr_handler_name_license file=build/xattr_handler_name_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_name_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_name_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_name_license/" >>build/Makefile fi fi test -d build/xattr_handler_get_dentry_inode || mkdir -p build/xattr_handler_get_dentry_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_get_dentry_inode/xattr_handler_get_dentry_inode.c #include int get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_dentry_inode || mkdir -p build/xattr_handler_get_dentry_inode file=build/xattr_handler_get_dentry_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_dentry_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_dentry_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_dentry_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_get_dentry_inode_license || mkdir -p build/xattr_handler_get_dentry_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_get_dentry_inode_license/xattr_handler_get_dentry_inode_license.c #include MODULE_LICENSE(""); #include int get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_dentry_inode_license || mkdir -p build/xattr_handler_get_dentry_inode_license file=build/xattr_handler_get_dentry_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_dentry_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_dentry_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_dentry_inode_license/" >>build/Makefile fi fi test -d build/xattr_handler_get_xattr_handler || mkdir -p build/xattr_handler_get_xattr_handler cat confdefs.h - <<_ACEOF >build/xattr_handler_get_xattr_handler/xattr_handler_get_xattr_handler.c #include int get(const struct xattr_handler *handler, struct dentry *dentry, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_xattr_handler || mkdir -p build/xattr_handler_get_xattr_handler file=build/xattr_handler_get_xattr_handler/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_xattr_handler ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_xattr_handler.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_xattr_handler/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_get_xattr_handler_license || mkdir -p build/xattr_handler_get_xattr_handler_license cat confdefs.h - <<_ACEOF >build/xattr_handler_get_xattr_handler_license/xattr_handler_get_xattr_handler_license.c #include MODULE_LICENSE(""); #include int get(const struct xattr_handler *handler, struct dentry *dentry, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_xattr_handler_license || mkdir -p build/xattr_handler_get_xattr_handler_license file=build/xattr_handler_get_xattr_handler_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_xattr_handler_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_xattr_handler_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_xattr_handler_license/" >>build/Makefile fi fi test -d build/xattr_handler_get_dentry || mkdir -p build/xattr_handler_get_dentry cat confdefs.h - <<_ACEOF >build/xattr_handler_get_dentry/xattr_handler_get_dentry.c #include int get(struct dentry *dentry, const char *name, void *buffer, size_t size, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_dentry || mkdir -p build/xattr_handler_get_dentry file=build/xattr_handler_get_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_get_dentry_license || mkdir -p build/xattr_handler_get_dentry_license cat confdefs.h - <<_ACEOF >build/xattr_handler_get_dentry_license/xattr_handler_get_dentry_license.c #include MODULE_LICENSE(""); #include int get(struct dentry *dentry, const char *name, void *buffer, size_t size, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_dentry_license || mkdir -p build/xattr_handler_get_dentry_license file=build/xattr_handler_get_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_dentry_license/" >>build/Makefile fi fi test -d build/xattr_handler_get_inode || mkdir -p build/xattr_handler_get_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_get_inode/xattr_handler_get_inode.c #include int get(struct inode *ip, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_inode || mkdir -p build/xattr_handler_get_inode file=build/xattr_handler_get_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_get_inode_license || mkdir -p build/xattr_handler_get_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_get_inode_license/xattr_handler_get_inode_license.c #include MODULE_LICENSE(""); #include int get(struct inode *ip, const char *name, void *buffer, size_t size) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .get = get, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_get_inode_license || mkdir -p build/xattr_handler_get_inode_license file=build/xattr_handler_get_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_get_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_get_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_get_inode_license/" >>build/Makefile fi fi test -d build/xattr_handler_set_dentry_inode || mkdir -p build/xattr_handler_set_dentry_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_set_dentry_inode/xattr_handler_set_dentry_inode.c #include int set(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_dentry_inode || mkdir -p build/xattr_handler_set_dentry_inode file=build/xattr_handler_set_dentry_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_dentry_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_dentry_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_dentry_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_set_dentry_inode_license || mkdir -p build/xattr_handler_set_dentry_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_set_dentry_inode_license/xattr_handler_set_dentry_inode_license.c #include MODULE_LICENSE(""); #include int set(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_dentry_inode_license || mkdir -p build/xattr_handler_set_dentry_inode_license file=build/xattr_handler_set_dentry_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_dentry_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_dentry_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_dentry_inode_license/" >>build/Makefile fi fi test -d build/xattr_handler_set_xattr_handler || mkdir -p build/xattr_handler_set_xattr_handler cat confdefs.h - <<_ACEOF >build/xattr_handler_set_xattr_handler/xattr_handler_set_xattr_handler.c #include int set(const struct xattr_handler *handler, struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_xattr_handler || mkdir -p build/xattr_handler_set_xattr_handler file=build/xattr_handler_set_xattr_handler/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_xattr_handler ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_xattr_handler.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_xattr_handler/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_set_xattr_handler_license || mkdir -p build/xattr_handler_set_xattr_handler_license cat confdefs.h - <<_ACEOF >build/xattr_handler_set_xattr_handler_license/xattr_handler_set_xattr_handler_license.c #include MODULE_LICENSE(""); #include int set(const struct xattr_handler *handler, struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_xattr_handler_license || mkdir -p build/xattr_handler_set_xattr_handler_license file=build/xattr_handler_set_xattr_handler_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_xattr_handler_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_xattr_handler_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_xattr_handler_license/" >>build/Makefile fi fi test -d build/xattr_handler_set_dentry || mkdir -p build/xattr_handler_set_dentry cat confdefs.h - <<_ACEOF >build/xattr_handler_set_dentry/xattr_handler_set_dentry.c #include int set(struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_dentry || mkdir -p build/xattr_handler_set_dentry file=build/xattr_handler_set_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_set_dentry_license || mkdir -p build/xattr_handler_set_dentry_license cat confdefs.h - <<_ACEOF >build/xattr_handler_set_dentry_license/xattr_handler_set_dentry_license.c #include MODULE_LICENSE(""); #include int set(struct dentry *dentry, const char *name, const void *buffer, size_t size, int flags, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_dentry_license || mkdir -p build/xattr_handler_set_dentry_license file=build/xattr_handler_set_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_dentry_license/" >>build/Makefile fi fi test -d build/xattr_handler_set_inode || mkdir -p build/xattr_handler_set_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_set_inode/xattr_handler_set_inode.c #include int set(struct inode *ip, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_inode || mkdir -p build/xattr_handler_set_inode file=build/xattr_handler_set_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_set_inode_license || mkdir -p build/xattr_handler_set_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_set_inode_license/xattr_handler_set_inode_license.c #include MODULE_LICENSE(""); #include int set(struct inode *ip, const char *name, const void *buffer, size_t size, int flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .set = set, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_set_inode_license || mkdir -p build/xattr_handler_set_inode_license file=build/xattr_handler_set_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_set_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_set_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_set_inode_license/" >>build/Makefile fi fi test -d build/xattr_handler_list_simple || mkdir -p build/xattr_handler_list_simple cat confdefs.h - <<_ACEOF >build/xattr_handler_list_simple/xattr_handler_list_simple.c #include bool list(struct dentry *dentry) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_simple || mkdir -p build/xattr_handler_list_simple file=build/xattr_handler_list_simple/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_simple ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_simple.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_simple/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_list_simple_license || mkdir -p build/xattr_handler_list_simple_license cat confdefs.h - <<_ACEOF >build/xattr_handler_list_simple_license/xattr_handler_list_simple_license.c #include MODULE_LICENSE(""); #include bool list(struct dentry *dentry) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_simple_license || mkdir -p build/xattr_handler_list_simple_license file=build/xattr_handler_list_simple_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_simple_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_simple_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_simple_license/" >>build/Makefile fi fi test -d build/xattr_handler_list_xattr_handler || mkdir -p build/xattr_handler_list_xattr_handler cat confdefs.h - <<_ACEOF >build/xattr_handler_list_xattr_handler/xattr_handler_list_xattr_handler.c #include size_t list(const struct xattr_handler *handler, struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_xattr_handler || mkdir -p build/xattr_handler_list_xattr_handler file=build/xattr_handler_list_xattr_handler/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_xattr_handler ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_xattr_handler.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_xattr_handler/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_list_xattr_handler_license || mkdir -p build/xattr_handler_list_xattr_handler_license cat confdefs.h - <<_ACEOF >build/xattr_handler_list_xattr_handler_license/xattr_handler_list_xattr_handler_license.c #include MODULE_LICENSE(""); #include size_t list(const struct xattr_handler *handler, struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_xattr_handler_license || mkdir -p build/xattr_handler_list_xattr_handler_license file=build/xattr_handler_list_xattr_handler_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_xattr_handler_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_xattr_handler_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_xattr_handler_license/" >>build/Makefile fi fi test -d build/xattr_handler_list_dentry || mkdir -p build/xattr_handler_list_dentry cat confdefs.h - <<_ACEOF >build/xattr_handler_list_dentry/xattr_handler_list_dentry.c #include size_t list(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_dentry || mkdir -p build/xattr_handler_list_dentry file=build/xattr_handler_list_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_list_dentry_license || mkdir -p build/xattr_handler_list_dentry_license cat confdefs.h - <<_ACEOF >build/xattr_handler_list_dentry_license/xattr_handler_list_dentry_license.c #include MODULE_LICENSE(""); #include size_t list(struct dentry *dentry, char *list, size_t list_size, const char *name, size_t name_len, int handler_flags) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_dentry_license || mkdir -p build/xattr_handler_list_dentry_license file=build/xattr_handler_list_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_dentry_license/" >>build/Makefile fi fi test -d build/xattr_handler_list_inode || mkdir -p build/xattr_handler_list_inode cat confdefs.h - <<_ACEOF >build/xattr_handler_list_inode/xattr_handler_list_inode.c #include size_t list(struct inode *ip, char *lst, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_inode || mkdir -p build/xattr_handler_list_inode file=build/xattr_handler_list_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_inode/" >>build/Makefile fi if test -n "" ; then test -d build/xattr_handler_list_inode_license || mkdir -p build/xattr_handler_list_inode_license cat confdefs.h - <<_ACEOF >build/xattr_handler_list_inode_license/xattr_handler_list_inode_license.c #include MODULE_LICENSE(""); #include size_t list(struct inode *ip, char *lst, size_t list_size, const char *name, size_t name_len) { return 0; } static const struct xattr_handler xops __attribute__ ((unused)) = { .list = list, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/xattr_handler_list_inode_license || mkdir -p build/xattr_handler_list_inode_license file=build/xattr_handler_list_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/xattr_handler_list_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := xattr_handler_list_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += xattr_handler_list_inode_license/" >>build/Makefile fi fi test -d build/posix_acl_from_xattr_userns || mkdir -p build/posix_acl_from_xattr_userns cat confdefs.h - <<_ACEOF >build/posix_acl_from_xattr_userns/posix_acl_from_xattr_userns.c #include #include #include int main (void) { posix_acl_from_xattr(&init_user_ns, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_from_xattr_userns || mkdir -p build/posix_acl_from_xattr_userns file=build/posix_acl_from_xattr_userns/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_from_xattr_userns ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_from_xattr_userns.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_from_xattr_userns/" >>build/Makefile fi if test -n "" ; then test -d build/posix_acl_from_xattr_userns_license || mkdir -p build/posix_acl_from_xattr_userns_license cat confdefs.h - <<_ACEOF >build/posix_acl_from_xattr_userns_license/posix_acl_from_xattr_userns_license.c #include MODULE_LICENSE(""); #include #include #include int main (void) { posix_acl_from_xattr(&init_user_ns, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_from_xattr_userns_license || mkdir -p build/posix_acl_from_xattr_userns_license file=build/posix_acl_from_xattr_userns_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_from_xattr_userns_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_from_xattr_userns_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_from_xattr_userns_license/" >>build/Makefile fi fi test -d build/have_generic_setxattr || mkdir -p build/have_generic_setxattr cat confdefs.h - <<_ACEOF >build/have_generic_setxattr/have_generic_setxattr.c #include #include static const struct inode_operations iops __attribute__ ((unused)) = { .setxattr = generic_setxattr }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/have_generic_setxattr || mkdir -p build/have_generic_setxattr file=build/have_generic_setxattr/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/have_generic_setxattr ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := have_generic_setxattr.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += have_generic_setxattr/" >>build/Makefile fi if test -n "" ; then test -d build/have_generic_setxattr_license || mkdir -p build/have_generic_setxattr_license cat confdefs.h - <<_ACEOF >build/have_generic_setxattr_license/have_generic_setxattr_license.c #include MODULE_LICENSE(""); #include #include static const struct inode_operations iops __attribute__ ((unused)) = { .setxattr = generic_setxattr }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/have_generic_setxattr_license || mkdir -p build/have_generic_setxattr_license file=build/have_generic_setxattr_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/have_generic_setxattr_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := have_generic_setxattr_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += have_generic_setxattr_license/" >>build/Makefile fi fi test -d build/posix_acl_release || mkdir -p build/posix_acl_release cat confdefs.h - <<_ACEOF >build/posix_acl_release/posix_acl_release.c #include #include #include int main (void) { struct posix_acl *tmp = posix_acl_alloc(1, 0); posix_acl_release(tmp); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_release || mkdir -p build/posix_acl_release file=build/posix_acl_release/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_release ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_release.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_release/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/posix_acl_release_license || mkdir -p build/posix_acl_release_license cat confdefs.h - <<_ACEOF >build/posix_acl_release_license/posix_acl_release_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #include #include int main (void) { struct posix_acl *tmp = posix_acl_alloc(1, 0); posix_acl_release(tmp); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_release_license || mkdir -p build/posix_acl_release_license file=build/posix_acl_release_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_release_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_release_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_release_license/" >>build/Makefile fi fi test -d build/set_cached_acl || mkdir -p build/set_cached_acl cat confdefs.h - <<_ACEOF >build/set_cached_acl/set_cached_acl.c #include #include #include int main (void) { struct inode *ip = NULL; struct posix_acl *acl = posix_acl_alloc(1, 0); set_cached_acl(ip, ACL_TYPE_ACCESS, acl); forget_cached_acl(ip, ACL_TYPE_ACCESS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/set_cached_acl || mkdir -p build/set_cached_acl file=build/set_cached_acl/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/set_cached_acl ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := set_cached_acl.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += set_cached_acl/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/set_cached_acl_license || mkdir -p build/set_cached_acl_license cat confdefs.h - <<_ACEOF >build/set_cached_acl_license/set_cached_acl_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #include #include int main (void) { struct inode *ip = NULL; struct posix_acl *acl = posix_acl_alloc(1, 0); set_cached_acl(ip, ACL_TYPE_ACCESS, acl); forget_cached_acl(ip, ACL_TYPE_ACCESS); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/set_cached_acl_license || mkdir -p build/set_cached_acl_license file=build/set_cached_acl_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/set_cached_acl_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := set_cached_acl_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += set_cached_acl_license/" >>build/Makefile fi fi test -d build/posix_acl_chmod || mkdir -p build/posix_acl_chmod cat confdefs.h - <<_ACEOF >build/posix_acl_chmod/posix_acl_chmod.c #include #include int main (void) { posix_acl_chmod(NULL, 0, 0) ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_chmod || mkdir -p build/posix_acl_chmod file=build/posix_acl_chmod/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_chmod ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_chmod.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_chmod/" >>build/Makefile fi if test -n "" ; then test -d build/posix_acl_chmod_license || mkdir -p build/posix_acl_chmod_license cat confdefs.h - <<_ACEOF >build/posix_acl_chmod_license/posix_acl_chmod_license.c #include MODULE_LICENSE(""); #include #include int main (void) { posix_acl_chmod(NULL, 0, 0) ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_chmod_license || mkdir -p build/posix_acl_chmod_license file=build/posix_acl_chmod_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_chmod_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_chmod_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_chmod_license/" >>build/Makefile fi fi test -d build/__posix_acl_chmod || mkdir -p build/__posix_acl_chmod cat confdefs.h - <<_ACEOF >build/__posix_acl_chmod/__posix_acl_chmod.c #include #include int main (void) { __posix_acl_chmod(NULL, 0, 0) ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/__posix_acl_chmod || mkdir -p build/__posix_acl_chmod file=build/__posix_acl_chmod/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/__posix_acl_chmod ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := __posix_acl_chmod.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += __posix_acl_chmod/" >>build/Makefile fi if test -n "" ; then test -d build/__posix_acl_chmod_license || mkdir -p build/__posix_acl_chmod_license cat confdefs.h - <<_ACEOF >build/__posix_acl_chmod_license/__posix_acl_chmod_license.c #include MODULE_LICENSE(""); #include #include int main (void) { __posix_acl_chmod(NULL, 0, 0) ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/__posix_acl_chmod_license || mkdir -p build/__posix_acl_chmod_license file=build/__posix_acl_chmod_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/__posix_acl_chmod_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := __posix_acl_chmod_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += __posix_acl_chmod_license/" >>build/Makefile fi fi test -d build/posix_acl_equiv_mode || mkdir -p build/posix_acl_equiv_mode cat confdefs.h - <<_ACEOF >build/posix_acl_equiv_mode/posix_acl_equiv_mode.c #include #include int main (void) { umode_t tmp; posix_acl_equiv_mode(NULL,&tmp); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_equiv_mode || mkdir -p build/posix_acl_equiv_mode file=build/posix_acl_equiv_mode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_equiv_mode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_equiv_mode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_equiv_mode/" >>build/Makefile fi if test -n "" ; then test -d build/posix_acl_equiv_mode_license || mkdir -p build/posix_acl_equiv_mode_license cat confdefs.h - <<_ACEOF >build/posix_acl_equiv_mode_license/posix_acl_equiv_mode_license.c #include MODULE_LICENSE(""); #include #include int main (void) { umode_t tmp; posix_acl_equiv_mode(NULL,&tmp); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_equiv_mode_license || mkdir -p build/posix_acl_equiv_mode_license file=build/posix_acl_equiv_mode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_equiv_mode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_equiv_mode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_equiv_mode_license/" >>build/Makefile fi fi test -d build/posix_acl_valid_with_ns || mkdir -p build/posix_acl_valid_with_ns cat confdefs.h - <<_ACEOF >build/posix_acl_valid_with_ns/posix_acl_valid_with_ns.c #include #include int main (void) { struct user_namespace *user_ns = NULL; const struct posix_acl *acl = NULL; int error; error = posix_acl_valid(user_ns, acl); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_valid_with_ns || mkdir -p build/posix_acl_valid_with_ns file=build/posix_acl_valid_with_ns/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_valid_with_ns ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_valid_with_ns.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_valid_with_ns/" >>build/Makefile fi if test -n "" ; then test -d build/posix_acl_valid_with_ns_license || mkdir -p build/posix_acl_valid_with_ns_license cat confdefs.h - <<_ACEOF >build/posix_acl_valid_with_ns_license/posix_acl_valid_with_ns_license.c #include MODULE_LICENSE(""); #include #include int main (void) { struct user_namespace *user_ns = NULL; const struct posix_acl *acl = NULL; int error; error = posix_acl_valid(user_ns, acl); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/posix_acl_valid_with_ns_license || mkdir -p build/posix_acl_valid_with_ns_license file=build/posix_acl_valid_with_ns_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/posix_acl_valid_with_ns_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := posix_acl_valid_with_ns_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += posix_acl_valid_with_ns_license/" >>build/Makefile fi fi test -d build/inode_operations_permission || mkdir -p build/inode_operations_permission cat confdefs.h - <<_ACEOF >build/inode_operations_permission/inode_operations_permission.c #include int permission_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_permission || mkdir -p build/inode_operations_permission file=build/inode_operations_permission/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_permission ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_permission.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_permission/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_permission_license || mkdir -p build/inode_operations_permission_license cat confdefs.h - <<_ACEOF >build/inode_operations_permission_license/inode_operations_permission_license.c #include MODULE_LICENSE(""); #include int permission_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_permission_license || mkdir -p build/inode_operations_permission_license file=build/inode_operations_permission_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_permission_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_permission_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_permission_license/" >>build/Makefile fi fi test -d build/inode_operations_permission_with_nameidata || mkdir -p build/inode_operations_permission_with_nameidata cat confdefs.h - <<_ACEOF >build/inode_operations_permission_with_nameidata/inode_operations_permission_with_nameidata.c #include #include int permission_fn(struct inode *inode, int mask, struct nameidata *nd) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_permission_with_nameidata || mkdir -p build/inode_operations_permission_with_nameidata file=build/inode_operations_permission_with_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_permission_with_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_permission_with_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_permission_with_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_permission_with_nameidata_license || mkdir -p build/inode_operations_permission_with_nameidata_license cat confdefs.h - <<_ACEOF >build/inode_operations_permission_with_nameidata_license/inode_operations_permission_with_nameidata_license.c #include MODULE_LICENSE(""); #include #include int permission_fn(struct inode *inode, int mask, struct nameidata *nd) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .permission = permission_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_permission_with_nameidata_license || mkdir -p build/inode_operations_permission_with_nameidata_license file=build/inode_operations_permission_with_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_permission_with_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_permission_with_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_permission_with_nameidata_license/" >>build/Makefile fi fi test -d build/inode_operations_check_acl || mkdir -p build/inode_operations_check_acl cat confdefs.h - <<_ACEOF >build/inode_operations_check_acl/inode_operations_check_acl.c #include int check_acl_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_check_acl || mkdir -p build/inode_operations_check_acl file=build/inode_operations_check_acl/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_check_acl ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_check_acl.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_check_acl/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_check_acl_license || mkdir -p build/inode_operations_check_acl_license cat confdefs.h - <<_ACEOF >build/inode_operations_check_acl_license/inode_operations_check_acl_license.c #include MODULE_LICENSE(""); #include int check_acl_fn(struct inode *inode, int mask) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_check_acl_license || mkdir -p build/inode_operations_check_acl_license file=build/inode_operations_check_acl_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_check_acl_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_check_acl_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_check_acl_license/" >>build/Makefile fi fi test -d build/inode_operations_check_acl_with_flags || mkdir -p build/inode_operations_check_acl_with_flags cat confdefs.h - <<_ACEOF >build/inode_operations_check_acl_with_flags/inode_operations_check_acl_with_flags.c #include int check_acl_fn(struct inode *inode, int mask, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_check_acl_with_flags || mkdir -p build/inode_operations_check_acl_with_flags file=build/inode_operations_check_acl_with_flags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_check_acl_with_flags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_check_acl_with_flags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_check_acl_with_flags/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_check_acl_with_flags_license || mkdir -p build/inode_operations_check_acl_with_flags_license cat confdefs.h - <<_ACEOF >build/inode_operations_check_acl_with_flags_license/inode_operations_check_acl_with_flags_license.c #include MODULE_LICENSE(""); #include int check_acl_fn(struct inode *inode, int mask, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .check_acl = check_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_check_acl_with_flags_license || mkdir -p build/inode_operations_check_acl_with_flags_license file=build/inode_operations_check_acl_with_flags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_check_acl_with_flags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_check_acl_with_flags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_check_acl_with_flags_license/" >>build/Makefile fi fi test -d build/inode_operations_get_acl || mkdir -p build/inode_operations_get_acl cat confdefs.h - <<_ACEOF >build/inode_operations_get_acl/inode_operations_get_acl.c #include struct posix_acl *get_acl_fn(struct inode *inode, int type) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .get_acl = get_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_acl || mkdir -p build/inode_operations_get_acl file=build/inode_operations_get_acl/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_acl ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_acl.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_acl/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_get_acl_license || mkdir -p build/inode_operations_get_acl_license cat confdefs.h - <<_ACEOF >build/inode_operations_get_acl_license/inode_operations_get_acl_license.c #include MODULE_LICENSE(""); #include struct posix_acl *get_acl_fn(struct inode *inode, int type) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .get_acl = get_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_acl_license || mkdir -p build/inode_operations_get_acl_license file=build/inode_operations_get_acl_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_acl_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_acl_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_acl_license/" >>build/Makefile fi fi test -d build/inode_operations_set_acl || mkdir -p build/inode_operations_set_acl cat confdefs.h - <<_ACEOF >build/inode_operations_set_acl/inode_operations_set_acl.c #include int set_acl_fn(struct inode *inode, struct posix_acl *acl, int type) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .set_acl = set_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_set_acl || mkdir -p build/inode_operations_set_acl file=build/inode_operations_set_acl/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_set_acl ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_set_acl.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_set_acl/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_set_acl_license || mkdir -p build/inode_operations_set_acl_license cat confdefs.h - <<_ACEOF >build/inode_operations_set_acl_license/inode_operations_set_acl_license.c #include MODULE_LICENSE(""); #include int set_acl_fn(struct inode *inode, struct posix_acl *acl, int type) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .set_acl = set_acl_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_set_acl_license || mkdir -p build/inode_operations_set_acl_license file=build/inode_operations_set_acl_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_set_acl_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_set_acl_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_set_acl_license/" >>build/Makefile fi fi test -d build/get_acl_handle_cache || mkdir -p build/get_acl_handle_cache cat confdefs.h - <<_ACEOF >build/get_acl_handle_cache/get_acl_handle_cache.c #include int main (void) { void *sentinel __attribute__ ((unused)) = uncached_acl_sentinel(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_acl_handle_cache || mkdir -p build/get_acl_handle_cache file=build/get_acl_handle_cache/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_acl_handle_cache ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := get_acl_handle_cache.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_acl_handle_cache/" >>build/Makefile fi if test -n "" ; then test -d build/get_acl_handle_cache_license || mkdir -p build/get_acl_handle_cache_license cat confdefs.h - <<_ACEOF >build/get_acl_handle_cache_license/get_acl_handle_cache_license.c #include MODULE_LICENSE(""); #include int main (void) { void *sentinel __attribute__ ((unused)) = uncached_acl_sentinel(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/get_acl_handle_cache_license || mkdir -p build/get_acl_handle_cache_license file=build/get_acl_handle_cache_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/get_acl_handle_cache_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := get_acl_handle_cache_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += get_acl_handle_cache_license/" >>build/Makefile fi fi test -d build/acl_refcount || mkdir -p build/acl_refcount cat confdefs.h - <<_ACEOF >build/acl_refcount/acl_refcount.c #include #include #include int main (void) { struct posix_acl acl; refcount_t *r __attribute__ ((unused)) = &acl.a_refcount; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/acl_refcount || mkdir -p build/acl_refcount file=build/acl_refcount/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/acl_refcount ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := acl_refcount.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += acl_refcount/" >>build/Makefile fi if test -n "" ; then test -d build/acl_refcount_license || mkdir -p build/acl_refcount_license cat confdefs.h - <<_ACEOF >build/acl_refcount_license/acl_refcount_license.c #include MODULE_LICENSE(""); #include #include #include int main (void) { struct posix_acl acl; refcount_t *r __attribute__ ((unused)) = &acl.a_refcount; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/acl_refcount_license || mkdir -p build/acl_refcount_license file=build/acl_refcount_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/acl_refcount_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := acl_refcount_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += acl_refcount_license/" >>build/Makefile fi fi test -d build/inode_operations_getattr_path || mkdir -p build/inode_operations_getattr_path cat confdefs.h - <<_ACEOF >build/inode_operations_getattr_path/inode_operations_getattr_path.c #include int test_getattr( const struct path *p, struct kstat *k, u32 request_mask, unsigned int query_flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_getattr_path || mkdir -p build/inode_operations_getattr_path file=build/inode_operations_getattr_path/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_getattr_path ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_getattr_path.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_getattr_path/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_getattr_path_license || mkdir -p build/inode_operations_getattr_path_license cat confdefs.h - <<_ACEOF >build/inode_operations_getattr_path_license/inode_operations_getattr_path_license.c #include MODULE_LICENSE(""); #include int test_getattr( const struct path *p, struct kstat *k, u32 request_mask, unsigned int query_flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_getattr_path_license || mkdir -p build/inode_operations_getattr_path_license file=build/inode_operations_getattr_path_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_getattr_path_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_getattr_path_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_getattr_path_license/" >>build/Makefile fi fi test -d build/inode_operations_getattr_vfsmount || mkdir -p build/inode_operations_getattr_vfsmount cat confdefs.h - <<_ACEOF >build/inode_operations_getattr_vfsmount/inode_operations_getattr_vfsmount.c #include int test_getattr( struct vfsmount *mnt, struct dentry *d, struct kstat *k) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_getattr_vfsmount || mkdir -p build/inode_operations_getattr_vfsmount file=build/inode_operations_getattr_vfsmount/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_getattr_vfsmount ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_getattr_vfsmount.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_getattr_vfsmount/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_getattr_vfsmount_license || mkdir -p build/inode_operations_getattr_vfsmount_license cat confdefs.h - <<_ACEOF >build/inode_operations_getattr_vfsmount_license/inode_operations_getattr_vfsmount_license.c #include MODULE_LICENSE(""); #include int test_getattr( struct vfsmount *mnt, struct dentry *d, struct kstat *k) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .getattr = test_getattr, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_getattr_vfsmount_license || mkdir -p build/inode_operations_getattr_vfsmount_license file=build/inode_operations_getattr_vfsmount_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_getattr_vfsmount_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_getattr_vfsmount_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_getattr_vfsmount_license/" >>build/Makefile fi fi test -d build/inode_set_flags || mkdir -p build/inode_set_flags cat confdefs.h - <<_ACEOF >build/inode_set_flags/inode_set_flags.c #include int main (void) { struct inode inode; inode_set_flags(&inode, S_IMMUTABLE, S_IMMUTABLE); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_set_flags || mkdir -p build/inode_set_flags file=build/inode_set_flags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_set_flags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_set_flags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_set_flags/" >>build/Makefile fi if test -n "" ; then test -d build/inode_set_flags_license || mkdir -p build/inode_set_flags_license cat confdefs.h - <<_ACEOF >build/inode_set_flags_license/inode_set_flags_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode inode; inode_set_flags(&inode, S_IMMUTABLE, S_IMMUTABLE); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_set_flags_license || mkdir -p build/inode_set_flags_license file=build/inode_set_flags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_set_flags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_set_flags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_set_flags_license/" >>build/Makefile fi fi test -d build/inode_set_iversion || mkdir -p build/inode_set_iversion cat confdefs.h - <<_ACEOF >build/inode_set_iversion/inode_set_iversion.c #include int main (void) { struct inode inode; inode_set_iversion(&inode, 1); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_set_iversion || mkdir -p build/inode_set_iversion file=build/inode_set_iversion/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_set_iversion ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_set_iversion.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_set_iversion/" >>build/Makefile fi if test -n "" ; then test -d build/inode_set_iversion_license || mkdir -p build/inode_set_iversion_license cat confdefs.h - <<_ACEOF >build/inode_set_iversion_license/inode_set_iversion_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode inode; inode_set_iversion(&inode, 1); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_set_iversion_license || mkdir -p build/inode_set_iversion_license file=build/inode_set_iversion_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_set_iversion_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_set_iversion_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_set_iversion_license/" >>build/Makefile fi fi test -d build/super_operations_show_options || mkdir -p build/super_operations_show_options cat confdefs.h - <<_ACEOF >build/super_operations_show_options/super_operations_show_options.c #include int show_options(struct seq_file * x, struct dentry * y) { return 0; }; static struct super_operations sops __attribute__ ((unused)) = { .show_options = show_options, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_operations_show_options || mkdir -p build/super_operations_show_options file=build/super_operations_show_options/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_operations_show_options ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_operations_show_options.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_operations_show_options/" >>build/Makefile fi if test -n "" ; then test -d build/super_operations_show_options_license || mkdir -p build/super_operations_show_options_license cat confdefs.h - <<_ACEOF >build/super_operations_show_options_license/super_operations_show_options_license.c #include MODULE_LICENSE(""); #include int show_options(struct seq_file * x, struct dentry * y) { return 0; }; static struct super_operations sops __attribute__ ((unused)) = { .show_options = show_options, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_operations_show_options_license || mkdir -p build/super_operations_show_options_license file=build/super_operations_show_options_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_operations_show_options_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_operations_show_options_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_operations_show_options_license/" >>build/Makefile fi fi test -d build/file_inode || mkdir -p build/file_inode cat confdefs.h - <<_ACEOF >build/file_inode/file_inode.c #include int main (void) { struct file *f = NULL; file_inode(f); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_inode || mkdir -p build/file_inode file=build/file_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_inode/" >>build/Makefile fi if test -n "" ; then test -d build/file_inode_license || mkdir -p build/file_inode_license cat confdefs.h - <<_ACEOF >build/file_inode_license/file_inode_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *f = NULL; file_inode(f); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_inode_license || mkdir -p build/file_inode_license file=build/file_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_inode_license/" >>build/Makefile fi fi test -d build/file_dentry || mkdir -p build/file_dentry cat confdefs.h - <<_ACEOF >build/file_dentry/file_dentry.c #include int main (void) { struct file *f = NULL; file_dentry(f); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_dentry || mkdir -p build/file_dentry file=build/file_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/file_dentry_license || mkdir -p build/file_dentry_license cat confdefs.h - <<_ACEOF >build/file_dentry_license/file_dentry_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *f = NULL; file_dentry(f); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_dentry_license || mkdir -p build/file_dentry_license file=build/file_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_dentry_license/" >>build/Makefile fi fi test -d build/fsync_with_dentry || mkdir -p build/fsync_with_dentry cat confdefs.h - <<_ACEOF >build/fsync_with_dentry/fsync_with_dentry.c #include int test_fsync(struct file *f, struct dentry *dentry, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_with_dentry || mkdir -p build/fsync_with_dentry file=build/fsync_with_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_with_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_with_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_with_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/fsync_with_dentry_license || mkdir -p build/fsync_with_dentry_license cat confdefs.h - <<_ACEOF >build/fsync_with_dentry_license/fsync_with_dentry_license.c #include MODULE_LICENSE(""); #include int test_fsync(struct file *f, struct dentry *dentry, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_with_dentry_license || mkdir -p build/fsync_with_dentry_license file=build/fsync_with_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_with_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_with_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_with_dentry_license/" >>build/Makefile fi fi test -d build/fsync_without_dentry || mkdir -p build/fsync_without_dentry cat confdefs.h - <<_ACEOF >build/fsync_without_dentry/fsync_without_dentry.c #include int test_fsync(struct file *f, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_without_dentry || mkdir -p build/fsync_without_dentry file=build/fsync_without_dentry/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_without_dentry ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_without_dentry.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_without_dentry/" >>build/Makefile fi if test -n "" ; then test -d build/fsync_without_dentry_license || mkdir -p build/fsync_without_dentry_license cat confdefs.h - <<_ACEOF >build/fsync_without_dentry_license/fsync_without_dentry_license.c #include MODULE_LICENSE(""); #include int test_fsync(struct file *f, int x) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_without_dentry_license || mkdir -p build/fsync_without_dentry_license file=build/fsync_without_dentry_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_without_dentry_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_without_dentry_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_without_dentry_license/" >>build/Makefile fi fi test -d build/fsync_range || mkdir -p build/fsync_range cat confdefs.h - <<_ACEOF >build/fsync_range/fsync_range.c #include int test_fsync(struct file *f, loff_t a, loff_t b, int c) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_range || mkdir -p build/fsync_range file=build/fsync_range/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_range ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_range.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_range/" >>build/Makefile fi if test -n "" ; then test -d build/fsync_range_license || mkdir -p build/fsync_range_license cat confdefs.h - <<_ACEOF >build/fsync_range_license/fsync_range_license.c #include MODULE_LICENSE(""); #include int test_fsync(struct file *f, loff_t a, loff_t b, int c) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .fsync = test_fsync, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fsync_range_license || mkdir -p build/fsync_range_license file=build/fsync_range_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fsync_range_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fsync_range_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fsync_range_license/" >>build/Makefile fi fi test -d build/aio_fsync || mkdir -p build/aio_fsync cat confdefs.h - <<_ACEOF >build/aio_fsync/aio_fsync.c #include static const struct file_operations fops __attribute__ ((unused)) = { .aio_fsync = NULL, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/aio_fsync || mkdir -p build/aio_fsync file=build/aio_fsync/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/aio_fsync ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := aio_fsync.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += aio_fsync/" >>build/Makefile fi if test -n "" ; then test -d build/aio_fsync_license || mkdir -p build/aio_fsync_license cat confdefs.h - <<_ACEOF >build/aio_fsync_license/aio_fsync_license.c #include MODULE_LICENSE(""); #include static const struct file_operations fops __attribute__ ((unused)) = { .aio_fsync = NULL, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/aio_fsync_license || mkdir -p build/aio_fsync_license file=build/aio_fsync_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/aio_fsync_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := aio_fsync_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += aio_fsync_license/" >>build/Makefile fi fi test -d build/evict_inode || mkdir -p build/evict_inode cat confdefs.h - <<_ACEOF >build/evict_inode/evict_inode.c #include void evict_inode (struct inode * t) { return; } static struct super_operations sops __attribute__ ((unused)) = { .evict_inode = evict_inode, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/evict_inode || mkdir -p build/evict_inode file=build/evict_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/evict_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := evict_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += evict_inode/" >>build/Makefile fi if test -n "" ; then test -d build/evict_inode_license || mkdir -p build/evict_inode_license cat confdefs.h - <<_ACEOF >build/evict_inode_license/evict_inode_license.c #include MODULE_LICENSE(""); #include void evict_inode (struct inode * t) { return; } static struct super_operations sops __attribute__ ((unused)) = { .evict_inode = evict_inode, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/evict_inode_license || mkdir -p build/evict_inode_license file=build/evict_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/evict_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := evict_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += evict_inode_license/" >>build/Makefile fi fi test -d build/dirty_inode_with_flags || mkdir -p build/dirty_inode_with_flags cat confdefs.h - <<_ACEOF >build/dirty_inode_with_flags/dirty_inode_with_flags.c #include void dirty_inode(struct inode *a, int b) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .dirty_inode = dirty_inode, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dirty_inode_with_flags || mkdir -p build/dirty_inode_with_flags file=build/dirty_inode_with_flags/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dirty_inode_with_flags ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dirty_inode_with_flags.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dirty_inode_with_flags/" >>build/Makefile fi if test -n "" ; then test -d build/dirty_inode_with_flags_license || mkdir -p build/dirty_inode_with_flags_license cat confdefs.h - <<_ACEOF >build/dirty_inode_with_flags_license/dirty_inode_with_flags_license.c #include MODULE_LICENSE(""); #include void dirty_inode(struct inode *a, int b) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .dirty_inode = dirty_inode, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dirty_inode_with_flags_license || mkdir -p build/dirty_inode_with_flags_license file=build/dirty_inode_with_flags_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dirty_inode_with_flags_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dirty_inode_with_flags_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dirty_inode_with_flags_license/" >>build/Makefile fi fi test -d build/super_block_s_shrink || mkdir -p build/super_block_s_shrink cat confdefs.h - <<_ACEOF >build/super_block_s_shrink/super_block_s_shrink.c #include int shrink(struct shrinker *s, struct shrink_control *sc) { return 0; } static const struct super_block sb __attribute__ ((unused)) = { .s_shrink.shrink = shrink, .s_shrink.seeks = DEFAULT_SEEKS, .s_shrink.batch = 0, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_shrink || mkdir -p build/super_block_s_shrink file=build/super_block_s_shrink/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_shrink ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_shrink.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_shrink/" >>build/Makefile fi if test -n "" ; then test -d build/super_block_s_shrink_license || mkdir -p build/super_block_s_shrink_license cat confdefs.h - <<_ACEOF >build/super_block_s_shrink_license/super_block_s_shrink_license.c #include MODULE_LICENSE(""); #include int shrink(struct shrinker *s, struct shrink_control *sc) { return 0; } static const struct super_block sb __attribute__ ((unused)) = { .s_shrink.shrink = shrink, .s_shrink.seeks = DEFAULT_SEEKS, .s_shrink.batch = 0, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_shrink_license || mkdir -p build/super_block_s_shrink_license file=build/super_block_s_shrink_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_shrink_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_shrink_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_shrink_license/" >>build/Makefile fi fi test -d build/super_block_s_instances_list_head || mkdir -p build/super_block_s_instances_list_head cat confdefs.h - <<_ACEOF >build/super_block_s_instances_list_head/super_block_s_instances_list_head.c #include int main (void) { struct super_block sb __attribute__ ((unused)); INIT_LIST_HEAD(&sb.s_instances); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_instances_list_head || mkdir -p build/super_block_s_instances_list_head file=build/super_block_s_instances_list_head/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_instances_list_head ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_instances_list_head.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_instances_list_head/" >>build/Makefile fi if test -n "" ; then test -d build/super_block_s_instances_list_head_license || mkdir -p build/super_block_s_instances_list_head_license cat confdefs.h - <<_ACEOF >build/super_block_s_instances_list_head_license/super_block_s_instances_list_head_license.c #include MODULE_LICENSE(""); #include int main (void) { struct super_block sb __attribute__ ((unused)); INIT_LIST_HEAD(&sb.s_instances); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_instances_list_head_license || mkdir -p build/super_block_s_instances_list_head_license file=build/super_block_s_instances_list_head_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_instances_list_head_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_instances_list_head_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_instances_list_head_license/" >>build/Makefile fi fi test -d build/nr_cached_objects || mkdir -p build/nr_cached_objects cat confdefs.h - <<_ACEOF >build/nr_cached_objects/nr_cached_objects.c #include int nr_cached_objects(struct super_block *sb) { return 0; } static const struct super_operations sops __attribute__ ((unused)) = { .nr_cached_objects = nr_cached_objects, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/nr_cached_objects || mkdir -p build/nr_cached_objects file=build/nr_cached_objects/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/nr_cached_objects ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := nr_cached_objects.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += nr_cached_objects/" >>build/Makefile fi if test -n "" ; then test -d build/nr_cached_objects_license || mkdir -p build/nr_cached_objects_license cat confdefs.h - <<_ACEOF >build/nr_cached_objects_license/nr_cached_objects_license.c #include MODULE_LICENSE(""); #include int nr_cached_objects(struct super_block *sb) { return 0; } static const struct super_operations sops __attribute__ ((unused)) = { .nr_cached_objects = nr_cached_objects, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/nr_cached_objects_license || mkdir -p build/nr_cached_objects_license file=build/nr_cached_objects_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/nr_cached_objects_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := nr_cached_objects_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += nr_cached_objects_license/" >>build/Makefile fi fi test -d build/free_cached_objects || mkdir -p build/free_cached_objects cat confdefs.h - <<_ACEOF >build/free_cached_objects/free_cached_objects.c #include void free_cached_objects(struct super_block *sb, int x) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .free_cached_objects = free_cached_objects, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/free_cached_objects || mkdir -p build/free_cached_objects file=build/free_cached_objects/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/free_cached_objects ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := free_cached_objects.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += free_cached_objects/" >>build/Makefile fi if test -n "" ; then test -d build/free_cached_objects_license || mkdir -p build/free_cached_objects_license cat confdefs.h - <<_ACEOF >build/free_cached_objects_license/free_cached_objects_license.c #include MODULE_LICENSE(""); #include void free_cached_objects(struct super_block *sb, int x) { return; } static const struct super_operations sops __attribute__ ((unused)) = { .free_cached_objects = free_cached_objects, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/free_cached_objects_license || mkdir -p build/free_cached_objects_license file=build/free_cached_objects_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/free_cached_objects_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := free_cached_objects_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += free_cached_objects_license/" >>build/Makefile fi fi test -d build/shrink_control_nid || mkdir -p build/shrink_control_nid cat confdefs.h - <<_ACEOF >build/shrink_control_nid/shrink_control_nid.c #include int main (void) { struct shrink_control sc __attribute__ ((unused)); unsigned long scnidsize __attribute__ ((unused)) = sizeof(sc.nid); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrink_control_nid || mkdir -p build/shrink_control_nid file=build/shrink_control_nid/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrink_control_nid ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrink_control_nid.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrink_control_nid/" >>build/Makefile fi if test -n "" ; then test -d build/shrink_control_nid_license || mkdir -p build/shrink_control_nid_license cat confdefs.h - <<_ACEOF >build/shrink_control_nid_license/shrink_control_nid_license.c #include MODULE_LICENSE(""); #include int main (void) { struct shrink_control sc __attribute__ ((unused)); unsigned long scnidsize __attribute__ ((unused)) = sizeof(sc.nid); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrink_control_nid_license || mkdir -p build/shrink_control_nid_license file=build/shrink_control_nid_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrink_control_nid_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrink_control_nid_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrink_control_nid_license/" >>build/Makefile fi fi test -d build/shrinker_cb_2arg || mkdir -p build/shrinker_cb_2arg cat confdefs.h - <<_ACEOF >build/shrinker_cb_2arg/shrinker_cb_2arg.c #include int shrinker_cb(int nr_to_scan, gfp_t gfp_mask) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_2arg || mkdir -p build/shrinker_cb_2arg file=build/shrinker_cb_2arg/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_2arg ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_2arg.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_2arg/" >>build/Makefile fi if test -n "" ; then test -d build/shrinker_cb_2arg_license || mkdir -p build/shrinker_cb_2arg_license cat confdefs.h - <<_ACEOF >build/shrinker_cb_2arg_license/shrinker_cb_2arg_license.c #include MODULE_LICENSE(""); #include int shrinker_cb(int nr_to_scan, gfp_t gfp_mask) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_2arg_license || mkdir -p build/shrinker_cb_2arg_license file=build/shrinker_cb_2arg_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_2arg_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_2arg_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_2arg_license/" >>build/Makefile fi fi test -d build/shrinker_cb_3arg || mkdir -p build/shrinker_cb_3arg cat confdefs.h - <<_ACEOF >build/shrinker_cb_3arg/shrinker_cb_3arg.c #include int shrinker_cb(struct shrinker *shrink, int nr_to_scan, gfp_t gfp_mask) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_3arg || mkdir -p build/shrinker_cb_3arg file=build/shrinker_cb_3arg/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_3arg ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_3arg.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_3arg/" >>build/Makefile fi if test -n "" ; then test -d build/shrinker_cb_3arg_license || mkdir -p build/shrinker_cb_3arg_license cat confdefs.h - <<_ACEOF >build/shrinker_cb_3arg_license/shrinker_cb_3arg_license.c #include MODULE_LICENSE(""); #include int shrinker_cb(struct shrinker *shrink, int nr_to_scan, gfp_t gfp_mask) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_3arg_license || mkdir -p build/shrinker_cb_3arg_license file=build/shrinker_cb_3arg_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_3arg_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_3arg_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_3arg_license/" >>build/Makefile fi fi test -d build/shrinker_cb_shrink_control || mkdir -p build/shrinker_cb_shrink_control cat confdefs.h - <<_ACEOF >build/shrinker_cb_shrink_control/shrinker_cb_shrink_control.c #include int shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_shrink_control || mkdir -p build/shrinker_cb_shrink_control file=build/shrinker_cb_shrink_control/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_shrink_control ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_shrink_control.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_shrink_control/" >>build/Makefile fi if test -n "" ; then test -d build/shrinker_cb_shrink_control_license || mkdir -p build/shrinker_cb_shrink_control_license cat confdefs.h - <<_ACEOF >build/shrinker_cb_shrink_control_license/shrinker_cb_shrink_control_license.c #include MODULE_LICENSE(""); #include int shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } int main (void) { struct shrinker cache_shrinker = { .shrink = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_shrink_control_license || mkdir -p build/shrinker_cb_shrink_control_license file=build/shrinker_cb_shrink_control_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_shrink_control_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_shrink_control_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_shrink_control_license/" >>build/Makefile fi fi test -d build/shrinker_cb_shrink_control_split || mkdir -p build/shrinker_cb_shrink_control_split cat confdefs.h - <<_ACEOF >build/shrinker_cb_shrink_control_split/shrinker_cb_shrink_control_split.c #include unsigned long shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } int main (void) { struct shrinker cache_shrinker = { .count_objects = shrinker_cb, .scan_objects = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_shrink_control_split || mkdir -p build/shrinker_cb_shrink_control_split file=build/shrinker_cb_shrink_control_split/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_shrink_control_split ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_shrink_control_split.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_shrink_control_split/" >>build/Makefile fi if test -n "" ; then test -d build/shrinker_cb_shrink_control_split_license || mkdir -p build/shrinker_cb_shrink_control_split_license cat confdefs.h - <<_ACEOF >build/shrinker_cb_shrink_control_split_license/shrinker_cb_shrink_control_split_license.c #include MODULE_LICENSE(""); #include unsigned long shrinker_cb(struct shrinker *shrink, struct shrink_control *sc) { return 0; } int main (void) { struct shrinker cache_shrinker = { .count_objects = shrinker_cb, .scan_objects = shrinker_cb, .seeks = DEFAULT_SEEKS, }; register_shrinker(&cache_shrinker); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrinker_cb_shrink_control_split_license || mkdir -p build/shrinker_cb_shrink_control_split_license file=build/shrinker_cb_shrink_control_split_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrinker_cb_shrink_control_split_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrinker_cb_shrink_control_split_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrinker_cb_shrink_control_split_license/" >>build/Makefile fi fi test -d build/shrink_control_struct || mkdir -p build/shrink_control_struct cat confdefs.h - <<_ACEOF >build/shrink_control_struct/shrink_control_struct.c #include int main (void) { struct shrink_control sc __attribute__ ((unused)); sc.nr_to_scan = 0; sc.gfp_mask = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrink_control_struct || mkdir -p build/shrink_control_struct file=build/shrink_control_struct/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrink_control_struct ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrink_control_struct.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrink_control_struct/" >>build/Makefile fi if test -n "" ; then test -d build/shrink_control_struct_license || mkdir -p build/shrink_control_struct_license cat confdefs.h - <<_ACEOF >build/shrink_control_struct_license/shrink_control_struct_license.c #include MODULE_LICENSE(""); #include int main (void) { struct shrink_control sc __attribute__ ((unused)); sc.nr_to_scan = 0; sc.gfp_mask = GFP_KERNEL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/shrink_control_struct_license || mkdir -p build/shrink_control_struct_license file=build/shrink_control_struct_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/shrink_control_struct_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := shrink_control_struct_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += shrink_control_struct_license/" >>build/Makefile fi fi test -d build/inode_operations_mkdir || mkdir -p build/inode_operations_mkdir cat confdefs.h - <<_ACEOF >build/inode_operations_mkdir/inode_operations_mkdir.c #include int mkdir(struct inode *inode, struct dentry *dentry, umode_t umode) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .mkdir = mkdir, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_mkdir || mkdir -p build/inode_operations_mkdir file=build/inode_operations_mkdir/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_mkdir ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_mkdir.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_mkdir/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_mkdir_license || mkdir -p build/inode_operations_mkdir_license cat confdefs.h - <<_ACEOF >build/inode_operations_mkdir_license/inode_operations_mkdir_license.c #include MODULE_LICENSE(""); #include int mkdir(struct inode *inode, struct dentry *dentry, umode_t umode) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .mkdir = mkdir, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_mkdir_license || mkdir -p build/inode_operations_mkdir_license file=build/inode_operations_mkdir_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_mkdir_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_mkdir_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_mkdir_license/" >>build/Makefile fi fi test -d build/lookup_nameidata || mkdir -p build/lookup_nameidata cat confdefs.h - <<_ACEOF >build/lookup_nameidata/lookup_nameidata.c #include #include struct dentry *inode_lookup(struct inode *inode, struct dentry *dentry, struct nameidata *nidata) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .lookup = inode_lookup, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_nameidata || mkdir -p build/lookup_nameidata file=build/lookup_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/lookup_nameidata_license || mkdir -p build/lookup_nameidata_license cat confdefs.h - <<_ACEOF >build/lookup_nameidata_license/lookup_nameidata_license.c #include MODULE_LICENSE(""); #include #include struct dentry *inode_lookup(struct inode *inode, struct dentry *dentry, struct nameidata *nidata) { return NULL; } static const struct inode_operations iops __attribute__ ((unused)) = { .lookup = inode_lookup, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lookup_nameidata_license || mkdir -p build/lookup_nameidata_license file=build/lookup_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lookup_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lookup_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lookup_nameidata_license/" >>build/Makefile fi fi test -d build/create_nameidata || mkdir -p build/create_nameidata cat confdefs.h - <<_ACEOF >build/create_nameidata/create_nameidata.c #include #include #ifdef HAVE_MKDIR_UMODE_T int inode_create(struct inode *inode ,struct dentry *dentry, umode_t umode, struct nameidata *nidata) { return 0; } #else int inode_create(struct inode *inode,struct dentry *dentry, int umode, struct nameidata * nidata) { return 0; } #endif static const struct inode_operations iops __attribute__ ((unused)) = { .create = inode_create, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/create_nameidata || mkdir -p build/create_nameidata file=build/create_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/create_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := create_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += create_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/create_nameidata_license || mkdir -p build/create_nameidata_license cat confdefs.h - <<_ACEOF >build/create_nameidata_license/create_nameidata_license.c #include MODULE_LICENSE(""); #include #include #ifdef HAVE_MKDIR_UMODE_T int inode_create(struct inode *inode ,struct dentry *dentry, umode_t umode, struct nameidata *nidata) { return 0; } #else int inode_create(struct inode *inode,struct dentry *dentry, int umode, struct nameidata * nidata) { return 0; } #endif static const struct inode_operations iops __attribute__ ((unused)) = { .create = inode_create, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/create_nameidata_license || mkdir -p build/create_nameidata_license file=build/create_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/create_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := create_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += create_nameidata_license/" >>build/Makefile fi fi test -d build/inode_operations_get_link || mkdir -p build/inode_operations_get_link cat confdefs.h - <<_ACEOF >build/inode_operations_get_link/inode_operations_get_link.c #include const char *get_link(struct dentry *de, struct inode *ip, struct delayed_call *done) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_link || mkdir -p build/inode_operations_get_link file=build/inode_operations_get_link/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_link ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_link.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_link/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_get_link_license || mkdir -p build/inode_operations_get_link_license cat confdefs.h - <<_ACEOF >build/inode_operations_get_link_license/inode_operations_get_link_license.c #include MODULE_LICENSE(""); #include const char *get_link(struct dentry *de, struct inode *ip, struct delayed_call *done) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_link_license || mkdir -p build/inode_operations_get_link_license file=build/inode_operations_get_link_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_link_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_link_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_link_license/" >>build/Makefile fi fi test -d build/inode_operations_get_link_cookie || mkdir -p build/inode_operations_get_link_cookie cat confdefs.h - <<_ACEOF >build/inode_operations_get_link_cookie/inode_operations_get_link_cookie.c #include const char *get_link(struct dentry *de, struct inode *ip, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_link_cookie || mkdir -p build/inode_operations_get_link_cookie file=build/inode_operations_get_link_cookie/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_link_cookie ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_link_cookie.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_link_cookie/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_get_link_cookie_license || mkdir -p build/inode_operations_get_link_cookie_license cat confdefs.h - <<_ACEOF >build/inode_operations_get_link_cookie_license/inode_operations_get_link_cookie_license.c #include MODULE_LICENSE(""); #include const char *get_link(struct dentry *de, struct inode *ip, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .get_link = get_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_get_link_cookie_license || mkdir -p build/inode_operations_get_link_cookie_license file=build/inode_operations_get_link_cookie_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_get_link_cookie_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_get_link_cookie_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_get_link_cookie_license/" >>build/Makefile fi fi test -d build/inode_operations_follow_link || mkdir -p build/inode_operations_follow_link cat confdefs.h - <<_ACEOF >build/inode_operations_follow_link/inode_operations_follow_link.c #include const char *follow_link(struct dentry *de, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_follow_link || mkdir -p build/inode_operations_follow_link file=build/inode_operations_follow_link/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_follow_link ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_follow_link.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_follow_link/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_follow_link_license || mkdir -p build/inode_operations_follow_link_license cat confdefs.h - <<_ACEOF >build/inode_operations_follow_link_license/inode_operations_follow_link_license.c #include MODULE_LICENSE(""); #include const char *follow_link(struct dentry *de, void **cookie) { return "symlink"; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_follow_link_license || mkdir -p build/inode_operations_follow_link_license file=build/inode_operations_follow_link_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_follow_link_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_follow_link_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_follow_link_license/" >>build/Makefile fi fi test -d build/inode_operations_follow_link_nameidata || mkdir -p build/inode_operations_follow_link_nameidata cat confdefs.h - <<_ACEOF >build/inode_operations_follow_link_nameidata/inode_operations_follow_link_nameidata.c #include void *follow_link(struct dentry *de, struct nameidata *nd) { return (void *)NULL; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_follow_link_nameidata || mkdir -p build/inode_operations_follow_link_nameidata file=build/inode_operations_follow_link_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_follow_link_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_follow_link_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_follow_link_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_follow_link_nameidata_license || mkdir -p build/inode_operations_follow_link_nameidata_license cat confdefs.h - <<_ACEOF >build/inode_operations_follow_link_nameidata_license/inode_operations_follow_link_nameidata_license.c #include MODULE_LICENSE(""); #include void *follow_link(struct dentry *de, struct nameidata *nd) { return (void *)NULL; } static struct inode_operations iops __attribute__ ((unused)) = { .follow_link = follow_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_follow_link_nameidata_license || mkdir -p build/inode_operations_follow_link_nameidata_license file=build/inode_operations_follow_link_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_follow_link_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_follow_link_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_follow_link_nameidata_license/" >>build/Makefile fi fi test -d build/put_link_cookie || mkdir -p build/put_link_cookie cat confdefs.h - <<_ACEOF >build/put_link_cookie/put_link_cookie.c #include void put_link(struct inode *ip, void *cookie) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/put_link_cookie || mkdir -p build/put_link_cookie file=build/put_link_cookie/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/put_link_cookie ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := put_link_cookie.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += put_link_cookie/" >>build/Makefile fi if test -n "" ; then test -d build/put_link_cookie_license || mkdir -p build/put_link_cookie_license cat confdefs.h - <<_ACEOF >build/put_link_cookie_license/put_link_cookie_license.c #include MODULE_LICENSE(""); #include void put_link(struct inode *ip, void *cookie) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/put_link_cookie_license || mkdir -p build/put_link_cookie_license file=build/put_link_cookie_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/put_link_cookie_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := put_link_cookie_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += put_link_cookie_license/" >>build/Makefile fi fi test -d build/put_link_nameidata || mkdir -p build/put_link_nameidata cat confdefs.h - <<_ACEOF >build/put_link_nameidata/put_link_nameidata.c #include void put_link(struct dentry *de, struct nameidata *nd, void *ptr) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/put_link_nameidata || mkdir -p build/put_link_nameidata file=build/put_link_nameidata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/put_link_nameidata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := put_link_nameidata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += put_link_nameidata/" >>build/Makefile fi if test -n "" ; then test -d build/put_link_nameidata_license || mkdir -p build/put_link_nameidata_license cat confdefs.h - <<_ACEOF >build/put_link_nameidata_license/put_link_nameidata_license.c #include MODULE_LICENSE(""); #include void put_link(struct dentry *de, struct nameidata *nd, void *ptr) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .put_link = put_link, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/put_link_nameidata_license || mkdir -p build/put_link_nameidata_license file=build/put_link_nameidata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/put_link_nameidata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := put_link_nameidata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += put_link_nameidata_license/" >>build/Makefile fi fi test -d build/inode_operations_tmpfile || mkdir -p build/inode_operations_tmpfile cat confdefs.h - <<_ACEOF >build/inode_operations_tmpfile/inode_operations_tmpfile.c #include int tmpfile(struct inode *inode, struct dentry *dentry, umode_t mode) { return 0; } static struct inode_operations iops __attribute__ ((unused)) = { .tmpfile = tmpfile, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_tmpfile || mkdir -p build/inode_operations_tmpfile file=build/inode_operations_tmpfile/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_tmpfile ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_tmpfile.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_tmpfile/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_tmpfile_license || mkdir -p build/inode_operations_tmpfile_license cat confdefs.h - <<_ACEOF >build/inode_operations_tmpfile_license/inode_operations_tmpfile_license.c #include MODULE_LICENSE(""); #include int tmpfile(struct inode *inode, struct dentry *dentry, umode_t mode) { return 0; } static struct inode_operations iops __attribute__ ((unused)) = { .tmpfile = tmpfile, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_tmpfile_license || mkdir -p build/inode_operations_tmpfile_license file=build/inode_operations_tmpfile_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_tmpfile_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_tmpfile_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_tmpfile_license/" >>build/Makefile fi fi test -d build/inode_operations_truncate_range || mkdir -p build/inode_operations_truncate_range cat confdefs.h - <<_ACEOF >build/inode_operations_truncate_range/inode_operations_truncate_range.c #include void truncate_range(struct inode *inode, loff_t start, loff_t end) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .truncate_range = truncate_range, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_truncate_range || mkdir -p build/inode_operations_truncate_range file=build/inode_operations_truncate_range/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_truncate_range ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_truncate_range.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_truncate_range/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_truncate_range_license || mkdir -p build/inode_operations_truncate_range_license cat confdefs.h - <<_ACEOF >build/inode_operations_truncate_range_license/inode_operations_truncate_range_license.c #include MODULE_LICENSE(""); #include void truncate_range(struct inode *inode, loff_t start, loff_t end) { return; } static struct inode_operations iops __attribute__ ((unused)) = { .truncate_range = truncate_range, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_truncate_range_license || mkdir -p build/inode_operations_truncate_range_license file=build/inode_operations_truncate_range_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_truncate_range_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_truncate_range_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_truncate_range_license/" >>build/Makefile fi fi test -d build/dentry_operations_d_automount || mkdir -p build/dentry_operations_d_automount cat confdefs.h - <<_ACEOF >build/dentry_operations_d_automount/dentry_operations_d_automount.c #include struct vfsmount *d_automount(struct path *p) { return NULL; } struct dentry_operations dops __attribute__ ((unused)) = { .d_automount = d_automount, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_d_automount || mkdir -p build/dentry_operations_d_automount file=build/dentry_operations_d_automount/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_d_automount ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_d_automount.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_d_automount/" >>build/Makefile fi if test -n "" ; then test -d build/dentry_operations_d_automount_license || mkdir -p build/dentry_operations_d_automount_license cat confdefs.h - <<_ACEOF >build/dentry_operations_d_automount_license/dentry_operations_d_automount_license.c #include MODULE_LICENSE(""); #include struct vfsmount *d_automount(struct path *p) { return NULL; } struct dentry_operations dops __attribute__ ((unused)) = { .d_automount = d_automount, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_d_automount_license || mkdir -p build/dentry_operations_d_automount_license file=build/dentry_operations_d_automount_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_d_automount_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_d_automount_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_d_automount_license/" >>build/Makefile fi fi test -d build/export_operations_encode_fh || mkdir -p build/export_operations_encode_fh cat confdefs.h - <<_ACEOF >build/export_operations_encode_fh/export_operations_encode_fh.c #include int encode_fh(struct inode *inode, __u32 *fh, int *max_len, struct inode *parent) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .encode_fh = encode_fh, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/export_operations_encode_fh || mkdir -p build/export_operations_encode_fh file=build/export_operations_encode_fh/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/export_operations_encode_fh ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := export_operations_encode_fh.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += export_operations_encode_fh/" >>build/Makefile fi if test -n "" ; then test -d build/export_operations_encode_fh_license || mkdir -p build/export_operations_encode_fh_license cat confdefs.h - <<_ACEOF >build/export_operations_encode_fh_license/export_operations_encode_fh_license.c #include MODULE_LICENSE(""); #include int encode_fh(struct inode *inode, __u32 *fh, int *max_len, struct inode *parent) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .encode_fh = encode_fh, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/export_operations_encode_fh_license || mkdir -p build/export_operations_encode_fh_license file=build/export_operations_encode_fh_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/export_operations_encode_fh_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := export_operations_encode_fh_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += export_operations_encode_fh_license/" >>build/Makefile fi fi test -d build/export_operations_commit_metadata || mkdir -p build/export_operations_commit_metadata cat confdefs.h - <<_ACEOF >build/export_operations_commit_metadata/export_operations_commit_metadata.c #include int commit_metadata(struct inode *inode) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .commit_metadata = commit_metadata, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/export_operations_commit_metadata || mkdir -p build/export_operations_commit_metadata file=build/export_operations_commit_metadata/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/export_operations_commit_metadata ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := export_operations_commit_metadata.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += export_operations_commit_metadata/" >>build/Makefile fi if test -n "" ; then test -d build/export_operations_commit_metadata_license || mkdir -p build/export_operations_commit_metadata_license cat confdefs.h - <<_ACEOF >build/export_operations_commit_metadata_license/export_operations_commit_metadata_license.c #include MODULE_LICENSE(""); #include int commit_metadata(struct inode *inode) { return 0; } static struct export_operations eops __attribute__ ((unused))={ .commit_metadata = commit_metadata, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/export_operations_commit_metadata_license || mkdir -p build/export_operations_commit_metadata_license file=build/export_operations_commit_metadata_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/export_operations_commit_metadata_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := export_operations_commit_metadata_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += export_operations_commit_metadata_license/" >>build/Makefile fi fi test -d build/clear_inode || mkdir -p build/clear_inode cat confdefs.h - <<_ACEOF >build/clear_inode/clear_inode.c #include int main (void) { clear_inode(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/clear_inode || mkdir -p build/clear_inode file=build/clear_inode/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/clear_inode ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := clear_inode.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += clear_inode/" >>build/Makefile fi if test -n "" ; then test -d build/clear_inode_license || mkdir -p build/clear_inode_license cat confdefs.h - <<_ACEOF >build/clear_inode_license/clear_inode_license.c #include MODULE_LICENSE(""); #include int main (void) { clear_inode(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/clear_inode_license || mkdir -p build/clear_inode_license file=build/clear_inode_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/clear_inode_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := clear_inode_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += clear_inode_license/" >>build/Makefile fi fi test -d build/setattr_prepare || mkdir -p build/setattr_prepare cat confdefs.h - <<_ACEOF >build/setattr_prepare/setattr_prepare.c #include int main (void) { struct dentry *dentry = NULL; struct iattr *attr = NULL; int error __attribute__ ((unused)) = setattr_prepare(dentry, attr); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/setattr_prepare || mkdir -p build/setattr_prepare file=build/setattr_prepare/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/setattr_prepare ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := setattr_prepare.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += setattr_prepare/" >>build/Makefile fi if test -n "" ; then test -d build/setattr_prepare_license || mkdir -p build/setattr_prepare_license cat confdefs.h - <<_ACEOF >build/setattr_prepare_license/setattr_prepare_license.c #include MODULE_LICENSE(""); #include int main (void) { struct dentry *dentry = NULL; struct iattr *attr = NULL; int error __attribute__ ((unused)) = setattr_prepare(dentry, attr); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/setattr_prepare_license || mkdir -p build/setattr_prepare_license file=build/setattr_prepare_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/setattr_prepare_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := setattr_prepare_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += setattr_prepare_license/" >>build/Makefile fi fi test -d build/insert_inode_locked || mkdir -p build/insert_inode_locked cat confdefs.h - <<_ACEOF >build/insert_inode_locked/insert_inode_locked.c #include int main (void) { insert_inode_locked(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/insert_inode_locked || mkdir -p build/insert_inode_locked file=build/insert_inode_locked/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/insert_inode_locked ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := insert_inode_locked.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += insert_inode_locked/" >>build/Makefile fi if test -n "" ; then test -d build/insert_inode_locked_license || mkdir -p build/insert_inode_locked_license cat confdefs.h - <<_ACEOF >build/insert_inode_locked_license/insert_inode_locked_license.c #include MODULE_LICENSE(""); #include int main (void) { insert_inode_locked(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/insert_inode_locked_license || mkdir -p build/insert_inode_locked_license file=build/insert_inode_locked_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/insert_inode_locked_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := insert_inode_locked_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += insert_inode_locked_license/" >>build/Makefile fi fi test -d build/d_make_root || mkdir -p build/d_make_root cat confdefs.h - <<_ACEOF >build/d_make_root/d_make_root.c #include int main (void) { d_make_root(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_make_root || mkdir -p build/d_make_root file=build/d_make_root/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_make_root ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_make_root.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_make_root/" >>build/Makefile fi if test -n "" ; then test -d build/d_make_root_license || mkdir -p build/d_make_root_license cat confdefs.h - <<_ACEOF >build/d_make_root_license/d_make_root_license.c #include MODULE_LICENSE(""); #include int main (void) { d_make_root(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_make_root_license || mkdir -p build/d_make_root_license file=build/d_make_root_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_make_root_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_make_root_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_make_root_license/" >>build/Makefile fi fi test -d build/d_obtain_alias || mkdir -p build/d_obtain_alias cat confdefs.h - <<_ACEOF >build/d_obtain_alias/d_obtain_alias.c #include int main (void) { d_obtain_alias(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_obtain_alias || mkdir -p build/d_obtain_alias file=build/d_obtain_alias/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_obtain_alias ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_obtain_alias.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_obtain_alias/" >>build/Makefile fi if test -n "" ; then test -d build/d_obtain_alias_license || mkdir -p build/d_obtain_alias_license cat confdefs.h - <<_ACEOF >build/d_obtain_alias_license/d_obtain_alias_license.c #include MODULE_LICENSE(""); #include int main (void) { d_obtain_alias(NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_obtain_alias_license || mkdir -p build/d_obtain_alias_license file=build/d_obtain_alias_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_obtain_alias_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_obtain_alias_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_obtain_alias_license/" >>build/Makefile fi fi test -d build/d_prune_aliases || mkdir -p build/d_prune_aliases cat confdefs.h - <<_ACEOF >build/d_prune_aliases/d_prune_aliases.c #include int main (void) { struct inode *ip = NULL; d_prune_aliases(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_prune_aliases || mkdir -p build/d_prune_aliases file=build/d_prune_aliases/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_prune_aliases ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_prune_aliases.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_prune_aliases/" >>build/Makefile fi if test -n "" ; then test -d build/d_prune_aliases_license || mkdir -p build/d_prune_aliases_license cat confdefs.h - <<_ACEOF >build/d_prune_aliases_license/d_prune_aliases_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip = NULL; d_prune_aliases(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_prune_aliases_license || mkdir -p build/d_prune_aliases_license file=build/d_prune_aliases_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_prune_aliases_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_prune_aliases_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_prune_aliases_license/" >>build/Makefile fi fi test -d build/d_set_d_op || mkdir -p build/d_set_d_op cat confdefs.h - <<_ACEOF >build/d_set_d_op/d_set_d_op.c #include int main (void) { d_set_d_op(NULL, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_set_d_op || mkdir -p build/d_set_d_op file=build/d_set_d_op/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_set_d_op ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_set_d_op.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_set_d_op/" >>build/Makefile fi if test -n "" ; then test -d build/d_set_d_op_license || mkdir -p build/d_set_d_op_license cat confdefs.h - <<_ACEOF >build/d_set_d_op_license/d_set_d_op_license.c #include MODULE_LICENSE(""); #include int main (void) { d_set_d_op(NULL, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/d_set_d_op_license || mkdir -p build/d_set_d_op_license file=build/d_set_d_op_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/d_set_d_op_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := d_set_d_op_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += d_set_d_op_license/" >>build/Makefile fi fi test -d build/dentry_operations_revalidate || mkdir -p build/dentry_operations_revalidate cat confdefs.h - <<_ACEOF >build/dentry_operations_revalidate/dentry_operations_revalidate.c #include #include int revalidate (struct dentry *dentry, struct nameidata *nidata) { return 0; } static const struct dentry_operations dops __attribute__ ((unused)) = { .d_revalidate = revalidate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_revalidate || mkdir -p build/dentry_operations_revalidate file=build/dentry_operations_revalidate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_revalidate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_revalidate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_revalidate/" >>build/Makefile fi if test -n "" ; then test -d build/dentry_operations_revalidate_license || mkdir -p build/dentry_operations_revalidate_license cat confdefs.h - <<_ACEOF >build/dentry_operations_revalidate_license/dentry_operations_revalidate_license.c #include MODULE_LICENSE(""); #include #include int revalidate (struct dentry *dentry, struct nameidata *nidata) { return 0; } static const struct dentry_operations dops __attribute__ ((unused)) = { .d_revalidate = revalidate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_revalidate_license || mkdir -p build/dentry_operations_revalidate_license file=build/dentry_operations_revalidate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_revalidate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_revalidate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_revalidate_license/" >>build/Makefile fi fi test -d build/dentry_operations_const || mkdir -p build/dentry_operations_const cat confdefs.h - <<_ACEOF >build/dentry_operations_const/dentry_operations_const.c #include const struct dentry_operations test_d_op = { .d_revalidate = NULL, }; int main (void) { struct dentry d __attribute__ ((unused)); d.d_op = &test_d_op; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_const || mkdir -p build/dentry_operations_const file=build/dentry_operations_const/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_const ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_const.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_const/" >>build/Makefile fi if test -n "" ; then test -d build/dentry_operations_const_license || mkdir -p build/dentry_operations_const_license cat confdefs.h - <<_ACEOF >build/dentry_operations_const_license/dentry_operations_const_license.c #include MODULE_LICENSE(""); #include const struct dentry_operations test_d_op = { .d_revalidate = NULL, }; int main (void) { struct dentry d __attribute__ ((unused)); d.d_op = &test_d_op; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/dentry_operations_const_license || mkdir -p build/dentry_operations_const_license file=build/dentry_operations_const_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/dentry_operations_const_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := dentry_operations_const_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += dentry_operations_const_license/" >>build/Makefile fi fi test -d build/super_block_s_d_op || mkdir -p build/super_block_s_d_op cat confdefs.h - <<_ACEOF >build/super_block_s_d_op/super_block_s_d_op.c #include int main (void) { struct super_block sb __attribute__ ((unused)); sb.s_d_op = NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_d_op || mkdir -p build/super_block_s_d_op file=build/super_block_s_d_op/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_d_op ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_d_op.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_d_op/" >>build/Makefile fi if test -n "" ; then test -d build/super_block_s_d_op_license || mkdir -p build/super_block_s_d_op_license cat confdefs.h - <<_ACEOF >build/super_block_s_d_op_license/super_block_s_d_op_license.c #include MODULE_LICENSE(""); #include int main (void) { struct super_block sb __attribute__ ((unused)); sb.s_d_op = NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_block_s_d_op_license || mkdir -p build/super_block_s_d_op_license file=build/super_block_s_d_op_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_block_s_d_op_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_block_s_d_op_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_block_s_d_op_license/" >>build/Makefile fi fi test -d build/truncate_setsize || mkdir -p build/truncate_setsize cat confdefs.h - <<_ACEOF >build/truncate_setsize/truncate_setsize.c #include int main (void) { truncate_setsize(NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/truncate_setsize || mkdir -p build/truncate_setsize file=build/truncate_setsize/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/truncate_setsize ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := truncate_setsize.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += truncate_setsize/" >>build/Makefile fi if test -n "" ; then test -d build/truncate_setsize_license || mkdir -p build/truncate_setsize_license cat confdefs.h - <<_ACEOF >build/truncate_setsize_license/truncate_setsize_license.c #include MODULE_LICENSE(""); #include int main (void) { truncate_setsize(NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/truncate_setsize_license || mkdir -p build/truncate_setsize_license file=build/truncate_setsize_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/truncate_setsize_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := truncate_setsize_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += truncate_setsize_license/" >>build/Makefile fi fi test -d build/security_inode_init_security_6args || mkdir -p build/security_inode_init_security_6args cat confdefs.h - <<_ACEOF >build/security_inode_init_security_6args/security_inode_init_security_6args.c #include int main (void) { struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; char *name __attribute__ ((unused)) = NULL; void *value __attribute__ ((unused)) = NULL; size_t len __attribute__ ((unused)) = 0; security_inode_init_security(ip, dip, str, &name, &value, &len); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/security_inode_init_security_6args || mkdir -p build/security_inode_init_security_6args file=build/security_inode_init_security_6args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/security_inode_init_security_6args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := security_inode_init_security_6args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += security_inode_init_security_6args/" >>build/Makefile fi if test -n "" ; then test -d build/security_inode_init_security_6args_license || mkdir -p build/security_inode_init_security_6args_license cat confdefs.h - <<_ACEOF >build/security_inode_init_security_6args_license/security_inode_init_security_6args_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; char *name __attribute__ ((unused)) = NULL; void *value __attribute__ ((unused)) = NULL; size_t len __attribute__ ((unused)) = 0; security_inode_init_security(ip, dip, str, &name, &value, &len); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/security_inode_init_security_6args_license || mkdir -p build/security_inode_init_security_6args_license file=build/security_inode_init_security_6args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/security_inode_init_security_6args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := security_inode_init_security_6args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += security_inode_init_security_6args_license/" >>build/Makefile fi fi test -d build/security_inode_init_security || mkdir -p build/security_inode_init_security cat confdefs.h - <<_ACEOF >build/security_inode_init_security/security_inode_init_security.c #include int main (void) { struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; initxattrs func __attribute__ ((unused)) = NULL; security_inode_init_security(ip, dip, str, func, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/security_inode_init_security || mkdir -p build/security_inode_init_security file=build/security_inode_init_security/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/security_inode_init_security ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := security_inode_init_security.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += security_inode_init_security/" >>build/Makefile fi if test -n "" ; then test -d build/security_inode_init_security_license || mkdir -p build/security_inode_init_security_license cat confdefs.h - <<_ACEOF >build/security_inode_init_security_license/security_inode_init_security_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip __attribute__ ((unused)) = NULL; struct inode *dip __attribute__ ((unused)) = NULL; const struct qstr *str __attribute__ ((unused)) = NULL; initxattrs func __attribute__ ((unused)) = NULL; security_inode_init_security(ip, dip, str, func, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/security_inode_init_security_license || mkdir -p build/security_inode_init_security_license file=build/security_inode_init_security_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/security_inode_init_security_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := security_inode_init_security_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += security_inode_init_security_license/" >>build/Makefile fi fi test -d build/file_system_type_mount || mkdir -p build/file_system_type_mount cat confdefs.h - <<_ACEOF >build/file_system_type_mount/file_system_type_mount.c #include static struct dentry * mount(struct file_system_type *fs_type, int flags, const char *osname, void *data) { struct dentry *d = NULL; return (d); } static struct file_system_type fst __attribute__ ((unused)) = { .mount = mount, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_system_type_mount || mkdir -p build/file_system_type_mount file=build/file_system_type_mount/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_system_type_mount ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_system_type_mount.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_system_type_mount/" >>build/Makefile fi if test -n "" ; then test -d build/file_system_type_mount_license || mkdir -p build/file_system_type_mount_license cat confdefs.h - <<_ACEOF >build/file_system_type_mount_license/file_system_type_mount_license.c #include MODULE_LICENSE(""); #include static struct dentry * mount(struct file_system_type *fs_type, int flags, const char *osname, void *data) { struct dentry *d = NULL; return (d); } static struct file_system_type fst __attribute__ ((unused)) = { .mount = mount, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_system_type_mount_license || mkdir -p build/file_system_type_mount_license file=build/file_system_type_mount_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_system_type_mount_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_system_type_mount_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_system_type_mount_license/" >>build/Makefile fi fi test -d build/super_setup_bdi_name || mkdir -p build/super_setup_bdi_name cat confdefs.h - <<_ACEOF >build/super_setup_bdi_name/super_setup_bdi_name.c #include struct super_block sb; int main (void) { char *name = "bdi"; atomic_long_t zfs_bdi_seq; int error __attribute__((unused)) = super_setup_bdi_name(&sb, "%.28s-%ld", name, atomic_long_inc_return(&zfs_bdi_seq)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_setup_bdi_name || mkdir -p build/super_setup_bdi_name file=build/super_setup_bdi_name/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_setup_bdi_name ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_setup_bdi_name.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_setup_bdi_name/" >>build/Makefile fi if test -n "" ; then test -d build/super_setup_bdi_name_license || mkdir -p build/super_setup_bdi_name_license cat confdefs.h - <<_ACEOF >build/super_setup_bdi_name_license/super_setup_bdi_name_license.c #include MODULE_LICENSE(""); #include struct super_block sb; int main (void) { char *name = "bdi"; atomic_long_t zfs_bdi_seq; int error __attribute__((unused)) = super_setup_bdi_name(&sb, "%.28s-%ld", name, atomic_long_inc_return(&zfs_bdi_seq)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/super_setup_bdi_name_license || mkdir -p build/super_setup_bdi_name_license file=build/super_setup_bdi_name_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/super_setup_bdi_name_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := super_setup_bdi_name_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += super_setup_bdi_name_license/" >>build/Makefile fi fi test -d build/bdi_setup_and_register || mkdir -p build/bdi_setup_and_register cat confdefs.h - <<_ACEOF >build/bdi_setup_and_register/bdi_setup_and_register.c #include struct backing_dev_info bdi; int main (void) { char *name = "bdi"; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdi_setup_and_register || mkdir -p build/bdi_setup_and_register file=build/bdi_setup_and_register/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdi_setup_and_register ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bdi_setup_and_register.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdi_setup_and_register/" >>build/Makefile fi if test -n "" ; then test -d build/bdi_setup_and_register_license || mkdir -p build/bdi_setup_and_register_license cat confdefs.h - <<_ACEOF >build/bdi_setup_and_register_license/bdi_setup_and_register_license.c #include MODULE_LICENSE(""); #include struct backing_dev_info bdi; int main (void) { char *name = "bdi"; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdi_setup_and_register_license || mkdir -p build/bdi_setup_and_register_license file=build/bdi_setup_and_register_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdi_setup_and_register_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bdi_setup_and_register_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdi_setup_and_register_license/" >>build/Makefile fi fi test -d build/bdi_setup_and_register_3args || mkdir -p build/bdi_setup_and_register_3args cat confdefs.h - <<_ACEOF >build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.c #include struct backing_dev_info bdi; int main (void) { char *name = "bdi"; unsigned int cap = BDI_CAP_MAP_COPY; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name, cap); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdi_setup_and_register_3args || mkdir -p build/bdi_setup_and_register_3args file=build/bdi_setup_and_register_3args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdi_setup_and_register_3args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bdi_setup_and_register_3args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdi_setup_and_register_3args/" >>build/Makefile fi if test -n "" ; then test -d build/bdi_setup_and_register_3args_license || mkdir -p build/bdi_setup_and_register_3args_license cat confdefs.h - <<_ACEOF >build/bdi_setup_and_register_3args_license/bdi_setup_and_register_3args_license.c #include MODULE_LICENSE(""); #include struct backing_dev_info bdi; int main (void) { char *name = "bdi"; unsigned int cap = BDI_CAP_MAP_COPY; int error __attribute__((unused)) = bdi_setup_and_register(&bdi, name, cap); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/bdi_setup_and_register_3args_license || mkdir -p build/bdi_setup_and_register_3args_license file=build/bdi_setup_and_register_3args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/bdi_setup_and_register_3args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := bdi_setup_and_register_3args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += bdi_setup_and_register_3args_license/" >>build/Makefile fi fi test -d build/set_nlink || mkdir -p build/set_nlink cat confdefs.h - <<_ACEOF >build/set_nlink/set_nlink.c #include int main (void) { struct inode node; unsigned int link = 0; (void) set_nlink(&node, link); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/set_nlink || mkdir -p build/set_nlink file=build/set_nlink/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/set_nlink ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := set_nlink.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += set_nlink/" >>build/Makefile fi if test -n "" ; then test -d build/set_nlink_license || mkdir -p build/set_nlink_license cat confdefs.h - <<_ACEOF >build/set_nlink_license/set_nlink_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode node; unsigned int link = 0; (void) set_nlink(&node, link); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/set_nlink_license || mkdir -p build/set_nlink_license file=build/set_nlink_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/set_nlink_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := set_nlink_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += set_nlink_license/" >>build/Makefile fi fi test -d build/sget_5args || mkdir -p build/sget_5args cat confdefs.h - <<_ACEOF >build/sget_5args/sget_5args.c #include int main (void) { struct file_system_type *type = NULL; int (*test)(struct super_block *,void *) = NULL; int (*set)(struct super_block *,void *) = NULL; int flags = 0; void *data = NULL; (void) sget(type, test, set, flags, data); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sget_5args || mkdir -p build/sget_5args file=build/sget_5args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sget_5args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sget_5args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sget_5args/" >>build/Makefile fi if test -n "" ; then test -d build/sget_5args_license || mkdir -p build/sget_5args_license cat confdefs.h - <<_ACEOF >build/sget_5args_license/sget_5args_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file_system_type *type = NULL; int (*test)(struct super_block *,void *) = NULL; int (*set)(struct super_block *,void *) = NULL; int flags = 0; void *data = NULL; (void) sget(type, test, set, flags, data); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/sget_5args_license || mkdir -p build/sget_5args_license file=build/sget_5args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/sget_5args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := sget_5args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += sget_5args_license/" >>build/Makefile fi fi test -d build/lseek_execute || mkdir -p build/lseek_execute cat confdefs.h - <<_ACEOF >build/lseek_execute/lseek_execute.c #include int main (void) { struct file *fp __attribute__ ((unused)) = NULL; struct inode *ip __attribute__ ((unused)) = NULL; loff_t offset __attribute__ ((unused)) = 0; loff_t maxsize __attribute__ ((unused)) = 0; lseek_execute(fp, ip, offset, maxsize); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lseek_execute || mkdir -p build/lseek_execute file=build/lseek_execute/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lseek_execute ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lseek_execute.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lseek_execute/" >>build/Makefile fi if test -n "" ; then test -d build/lseek_execute_license || mkdir -p build/lseek_execute_license cat confdefs.h - <<_ACEOF >build/lseek_execute_license/lseek_execute_license.c #include MODULE_LICENSE(""); #include int main (void) { struct file *fp __attribute__ ((unused)) = NULL; struct inode *ip __attribute__ ((unused)) = NULL; loff_t offset __attribute__ ((unused)) = 0; loff_t maxsize __attribute__ ((unused)) = 0; lseek_execute(fp, ip, offset, maxsize); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/lseek_execute_license || mkdir -p build/lseek_execute_license file=build/lseek_execute_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/lseek_execute_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := lseek_execute_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += lseek_execute_license/" >>build/Makefile fi fi test -d build/vfs_getattr_4args || mkdir -p build/vfs_getattr_4args cat confdefs.h - <<_ACEOF >build/vfs_getattr_4args/vfs_getattr_4args.c #include int main (void) { vfs_getattr((const struct path *)NULL, (struct kstat *)NULL, (u32)0, (unsigned int)0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_4args || mkdir -p build/vfs_getattr_4args file=build/vfs_getattr_4args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_4args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_4args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_4args/" >>build/Makefile fi if test -n "" ; then test -d build/vfs_getattr_4args_license || mkdir -p build/vfs_getattr_4args_license cat confdefs.h - <<_ACEOF >build/vfs_getattr_4args_license/vfs_getattr_4args_license.c #include MODULE_LICENSE(""); #include int main (void) { vfs_getattr((const struct path *)NULL, (struct kstat *)NULL, (u32)0, (unsigned int)0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_4args_license || mkdir -p build/vfs_getattr_4args_license file=build/vfs_getattr_4args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_4args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_4args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_4args_license/" >>build/Makefile fi fi test -d build/vfs_getattr_2args || mkdir -p build/vfs_getattr_2args cat confdefs.h - <<_ACEOF >build/vfs_getattr_2args/vfs_getattr_2args.c #include int main (void) { vfs_getattr((struct path *) NULL, (struct kstat *)NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_2args || mkdir -p build/vfs_getattr_2args file=build/vfs_getattr_2args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_2args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_2args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_2args/" >>build/Makefile fi if test -n "" ; then test -d build/vfs_getattr_2args_license || mkdir -p build/vfs_getattr_2args_license cat confdefs.h - <<_ACEOF >build/vfs_getattr_2args_license/vfs_getattr_2args_license.c #include MODULE_LICENSE(""); #include int main (void) { vfs_getattr((struct path *) NULL, (struct kstat *)NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_2args_license || mkdir -p build/vfs_getattr_2args_license file=build/vfs_getattr_2args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_2args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_2args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_2args_license/" >>build/Makefile fi fi test -d build/vfs_getattr_3args || mkdir -p build/vfs_getattr_3args cat confdefs.h - <<_ACEOF >build/vfs_getattr_3args/vfs_getattr_3args.c #include int main (void) { vfs_getattr((struct vfsmount *)NULL, (struct dentry *)NULL, (struct kstat *)NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_3args || mkdir -p build/vfs_getattr_3args file=build/vfs_getattr_3args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_3args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_3args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_3args/" >>build/Makefile fi if test -n "" ; then test -d build/vfs_getattr_3args_license || mkdir -p build/vfs_getattr_3args_license cat confdefs.h - <<_ACEOF >build/vfs_getattr_3args_license/vfs_getattr_3args_license.c #include MODULE_LICENSE(""); #include int main (void) { vfs_getattr((struct vfsmount *)NULL, (struct dentry *)NULL, (struct kstat *)NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_getattr_3args_license || mkdir -p build/vfs_getattr_3args_license file=build/vfs_getattr_3args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_getattr_3args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_getattr_3args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_getattr_3args_license/" >>build/Makefile fi fi test -d build/vfs_fsync_2args || mkdir -p build/vfs_fsync_2args cat confdefs.h - <<_ACEOF >build/vfs_fsync_2args/vfs_fsync_2args.c #include int main (void) { vfs_fsync(NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_fsync_2args || mkdir -p build/vfs_fsync_2args file=build/vfs_fsync_2args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_fsync_2args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_fsync_2args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_fsync_2args/" >>build/Makefile fi if test -n "" ; then test -d build/vfs_fsync_2args_license || mkdir -p build/vfs_fsync_2args_license cat confdefs.h - <<_ACEOF >build/vfs_fsync_2args_license/vfs_fsync_2args_license.c #include MODULE_LICENSE(""); #include int main (void) { vfs_fsync(NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/vfs_fsync_2args_license || mkdir -p build/vfs_fsync_2args_license file=build/vfs_fsync_2args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/vfs_fsync_2args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := vfs_fsync_2args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += vfs_fsync_2args_license/" >>build/Makefile fi fi test -d build/file_operations_iterate_shared || mkdir -p build/file_operations_iterate_shared cat confdefs.h - <<_ACEOF >build/file_operations_iterate_shared/file_operations_iterate_shared.c #include int iterate(struct file *filp, struct dir_context * context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate_shared = iterate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_iterate_shared || mkdir -p build/file_operations_iterate_shared file=build/file_operations_iterate_shared/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_iterate_shared ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_iterate_shared.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_iterate_shared/" >>build/Makefile fi if test -n "" ; then test -d build/file_operations_iterate_shared_license || mkdir -p build/file_operations_iterate_shared_license cat confdefs.h - <<_ACEOF >build/file_operations_iterate_shared_license/file_operations_iterate_shared_license.c #include MODULE_LICENSE(""); #include int iterate(struct file *filp, struct dir_context * context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate_shared = iterate, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_iterate_shared_license || mkdir -p build/file_operations_iterate_shared_license file=build/file_operations_iterate_shared_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_iterate_shared_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_iterate_shared_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_iterate_shared_license/" >>build/Makefile fi fi test -d build/file_operations_iterate || mkdir -p build/file_operations_iterate cat confdefs.h - <<_ACEOF >build/file_operations_iterate/file_operations_iterate.c #include int iterate(struct file *filp, struct dir_context *context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate = iterate, }; #if defined(FMODE_KABI_ITERATE) #error "RHEL 7.5, FMODE_KABI_ITERATE interface" #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_iterate || mkdir -p build/file_operations_iterate file=build/file_operations_iterate/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_iterate ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_iterate.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_iterate/" >>build/Makefile fi if test -n "" ; then test -d build/file_operations_iterate_license || mkdir -p build/file_operations_iterate_license cat confdefs.h - <<_ACEOF >build/file_operations_iterate_license/file_operations_iterate_license.c #include MODULE_LICENSE(""); #include int iterate(struct file *filp, struct dir_context *context) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .iterate = iterate, }; #if defined(FMODE_KABI_ITERATE) #error "RHEL 7.5, FMODE_KABI_ITERATE interface" #endif int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_iterate_license || mkdir -p build/file_operations_iterate_license file=build/file_operations_iterate_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_iterate_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_iterate_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_iterate_license/" >>build/Makefile fi fi test -d build/file_operations_readdir || mkdir -p build/file_operations_readdir cat confdefs.h - <<_ACEOF >build/file_operations_readdir/file_operations_readdir.c #include int readdir(struct file *filp, void *entry, filldir_t func) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .readdir = readdir, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_readdir || mkdir -p build/file_operations_readdir file=build/file_operations_readdir/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_readdir ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_readdir.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_readdir/" >>build/Makefile fi if test -n "" ; then test -d build/file_operations_readdir_license || mkdir -p build/file_operations_readdir_license cat confdefs.h - <<_ACEOF >build/file_operations_readdir_license/file_operations_readdir_license.c #include MODULE_LICENSE(""); #include int readdir(struct file *filp, void *entry, filldir_t func) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .readdir = readdir, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_readdir_license || mkdir -p build/file_operations_readdir_license file=build/file_operations_readdir_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_readdir_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_readdir_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_readdir_license/" >>build/Makefile fi fi test -d build/direct_io_iter || mkdir -p build/direct_io_iter cat confdefs.h - <<_ACEOF >build/direct_io_iter/direct_io_iter.c #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter || mkdir -p build/direct_io_iter file=build/direct_io_iter/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter/" >>build/Makefile fi if test -n "" ; then test -d build/direct_io_iter_license || mkdir -p build/direct_io_iter_license cat confdefs.h - <<_ACEOF >build/direct_io_iter_license/direct_io_iter_license.c #include MODULE_LICENSE(""); #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_license || mkdir -p build/direct_io_iter_license file=build/direct_io_iter_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_license/" >>build/Makefile fi fi test -d build/direct_io_iter_offset || mkdir -p build/direct_io_iter_offset cat confdefs.h - <<_ACEOF >build/direct_io_iter_offset/direct_io_iter_offset.c #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_offset || mkdir -p build/direct_io_iter_offset file=build/direct_io_iter_offset/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_offset ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_offset.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_offset/" >>build/Makefile fi if test -n "" ; then test -d build/direct_io_iter_offset_license || mkdir -p build/direct_io_iter_offset_license cat confdefs.h - <<_ACEOF >build/direct_io_iter_offset_license/direct_io_iter_offset_license.c #include MODULE_LICENSE(""); #include ssize_t test_direct_IO(struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_offset_license || mkdir -p build/direct_io_iter_offset_license file=build/direct_io_iter_offset_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_offset_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_offset_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_offset_license/" >>build/Makefile fi fi test -d build/direct_io_iter_rw_offset || mkdir -p build/direct_io_iter_rw_offset cat confdefs.h - <<_ACEOF >build/direct_io_iter_rw_offset/direct_io_iter_rw_offset.c #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_rw_offset || mkdir -p build/direct_io_iter_rw_offset file=build/direct_io_iter_rw_offset/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_rw_offset ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_rw_offset.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_rw_offset/" >>build/Makefile fi if test -n "" ; then test -d build/direct_io_iter_rw_offset_license || mkdir -p build/direct_io_iter_rw_offset_license cat confdefs.h - <<_ACEOF >build/direct_io_iter_rw_offset_license/direct_io_iter_rw_offset_license.c #include MODULE_LICENSE(""); #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, struct iov_iter *iter, loff_t offset) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iter_rw_offset_license || mkdir -p build/direct_io_iter_rw_offset_license file=build/direct_io_iter_rw_offset_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iter_rw_offset_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iter_rw_offset_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iter_rw_offset_license/" >>build/Makefile fi fi test -d build/direct_io_iovec || mkdir -p build/direct_io_iovec cat confdefs.h - <<_ACEOF >build/direct_io_iovec/direct_io_iovec.c #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, const struct iovec *iov, loff_t offset, unsigned long nr_segs) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iovec || mkdir -p build/direct_io_iovec file=build/direct_io_iovec/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iovec ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iovec.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iovec/" >>build/Makefile fi if test -n "" ; then test -d build/direct_io_iovec_license || mkdir -p build/direct_io_iovec_license cat confdefs.h - <<_ACEOF >build/direct_io_iovec_license/direct_io_iovec_license.c #include MODULE_LICENSE(""); #include ssize_t test_direct_IO(int rw, struct kiocb *kiocb, const struct iovec *iov, loff_t offset, unsigned long nr_segs) { return 0; } static const struct address_space_operations aops __attribute__ ((unused)) = { .direct_IO = test_direct_IO, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/direct_io_iovec_license || mkdir -p build/direct_io_iovec_license file=build/direct_io_iovec_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/direct_io_iovec_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := direct_io_iovec_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += direct_io_iovec_license/" >>build/Makefile fi fi test -d build/file_operations_rw || mkdir -p build/file_operations_rw cat confdefs.h - <<_ACEOF >build/file_operations_rw/file_operations_rw.c #include ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to) { return 0; } ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .read_iter = test_read, .write_iter = test_write, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_rw || mkdir -p build/file_operations_rw file=build/file_operations_rw/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_rw ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_rw.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_rw/" >>build/Makefile fi if test -n "" ; then test -d build/file_operations_rw_license || mkdir -p build/file_operations_rw_license cat confdefs.h - <<_ACEOF >build/file_operations_rw_license/file_operations_rw_license.c #include MODULE_LICENSE(""); #include ssize_t test_read(struct kiocb *kiocb, struct iov_iter *to) { return 0; } ssize_t test_write(struct kiocb *kiocb, struct iov_iter *from) { return 0; } static const struct file_operations fops __attribute__ ((unused)) = { .read_iter = test_read, .write_iter = test_write, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/file_operations_rw_license || mkdir -p build/file_operations_rw_license file=build/file_operations_rw_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/file_operations_rw_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := file_operations_rw_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += file_operations_rw_license/" >>build/Makefile fi fi test -d build/new_sync_rw || mkdir -p build/new_sync_rw cat confdefs.h - <<_ACEOF >build/new_sync_rw/new_sync_rw.c #include int main (void) { ssize_t ret __attribute__ ((unused)); struct file *filp = NULL; char __user *rbuf = NULL; const char __user *wbuf = NULL; size_t len = 0; loff_t ppos; ret = new_sync_read(filp, rbuf, len, &ppos); ret = new_sync_write(filp, wbuf, len, &ppos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/new_sync_rw || mkdir -p build/new_sync_rw file=build/new_sync_rw/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/new_sync_rw ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := new_sync_rw.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += new_sync_rw/" >>build/Makefile fi if test -n "" ; then test -d build/new_sync_rw_license || mkdir -p build/new_sync_rw_license cat confdefs.h - <<_ACEOF >build/new_sync_rw_license/new_sync_rw_license.c #include MODULE_LICENSE(""); #include int main (void) { ssize_t ret __attribute__ ((unused)); struct file *filp = NULL; char __user *rbuf = NULL; const char __user *wbuf = NULL; size_t len = 0; loff_t ppos; ret = new_sync_read(filp, rbuf, len, &ppos); ret = new_sync_write(filp, wbuf, len, &ppos); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/new_sync_rw_license || mkdir -p build/new_sync_rw_license file=build/new_sync_rw_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/new_sync_rw_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := new_sync_rw_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += new_sync_rw_license/" >>build/Makefile fi fi test -d build/generic_write_checks || mkdir -p build/generic_write_checks cat confdefs.h - <<_ACEOF >build/generic_write_checks/generic_write_checks.c #include int main (void) { struct kiocb *iocb = NULL; struct iov_iter *iov = NULL; generic_write_checks(iocb, iov); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_write_checks || mkdir -p build/generic_write_checks file=build/generic_write_checks/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_write_checks ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_write_checks.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_write_checks/" >>build/Makefile fi if test -n "" ; then test -d build/generic_write_checks_license || mkdir -p build/generic_write_checks_license cat confdefs.h - <<_ACEOF >build/generic_write_checks_license/generic_write_checks_license.c #include MODULE_LICENSE(""); #include int main (void) { struct kiocb *iocb = NULL; struct iov_iter *iov = NULL; generic_write_checks(iocb, iov); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_write_checks_license || mkdir -p build/generic_write_checks_license file=build/generic_write_checks_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_write_checks_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_write_checks_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_write_checks_license/" >>build/Makefile fi fi test -d build/kmap_atomic || mkdir -p build/kmap_atomic cat confdefs.h - <<_ACEOF >build/kmap_atomic/kmap_atomic.c #include int main (void) { struct page page; kmap_atomic(&page); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmap_atomic || mkdir -p build/kmap_atomic file=build/kmap_atomic/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmap_atomic ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmap_atomic.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmap_atomic/" >>build/Makefile fi if test -n "" ; then test -d build/kmap_atomic_license || mkdir -p build/kmap_atomic_license cat confdefs.h - <<_ACEOF >build/kmap_atomic_license/kmap_atomic_license.c #include MODULE_LICENSE(""); #include int main (void) { struct page page; kmap_atomic(&page); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kmap_atomic_license || mkdir -p build/kmap_atomic_license file=build/kmap_atomic_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kmap_atomic_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kmap_atomic_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kmap_atomic_license/" >>build/Makefile fi fi test -d build/follow_down_one || mkdir -p build/follow_down_one cat confdefs.h - <<_ACEOF >build/follow_down_one/follow_down_one.c #include int main (void) { struct path *p = NULL; follow_down_one(p); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/follow_down_one || mkdir -p build/follow_down_one file=build/follow_down_one/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/follow_down_one ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := follow_down_one.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += follow_down_one/" >>build/Makefile fi if test -n "" ; then test -d build/follow_down_one_license || mkdir -p build/follow_down_one_license cat confdefs.h - <<_ACEOF >build/follow_down_one_license/follow_down_one_license.c #include MODULE_LICENSE(""); #include int main (void) { struct path *p = NULL; follow_down_one(p); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/follow_down_one_license || mkdir -p build/follow_down_one_license file=build/follow_down_one_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/follow_down_one_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := follow_down_one_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += follow_down_one_license/" >>build/Makefile fi fi test -d build/make_request_fn_int || mkdir -p build/make_request_fn_int cat confdefs.h - <<_ACEOF >build/make_request_fn_int/make_request_fn_int.c #include int make_request(struct request_queue *q, struct bio *bio) { return (0); } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_int || mkdir -p build/make_request_fn_int file=build/make_request_fn_int/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_int ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_int.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_int/" >>build/Makefile fi if test -n "" ; then test -d build/make_request_fn_int_license || mkdir -p build/make_request_fn_int_license cat confdefs.h - <<_ACEOF >build/make_request_fn_int_license/make_request_fn_int_license.c #include MODULE_LICENSE(""); #include int make_request(struct request_queue *q, struct bio *bio) { return (0); } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_int_license || mkdir -p build/make_request_fn_int_license file=build/make_request_fn_int_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_int_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_int_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_int_license/" >>build/Makefile fi fi test -d build/make_request_fn_void || mkdir -p build/make_request_fn_void cat confdefs.h - <<_ACEOF >build/make_request_fn_void/make_request_fn_void.c #include void make_request(struct request_queue *q, struct bio *bio) { return; } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_void || mkdir -p build/make_request_fn_void file=build/make_request_fn_void/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_void ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_void.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_void/" >>build/Makefile fi if test -n "" ; then test -d build/make_request_fn_void_license || mkdir -p build/make_request_fn_void_license cat confdefs.h - <<_ACEOF >build/make_request_fn_void_license/make_request_fn_void_license.c #include MODULE_LICENSE(""); #include void make_request(struct request_queue *q, struct bio *bio) { return; } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_void_license || mkdir -p build/make_request_fn_void_license file=build/make_request_fn_void_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_void_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_void_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_void_license/" >>build/Makefile fi fi test -d build/make_request_fn_blk_qc_t || mkdir -p build/make_request_fn_blk_qc_t cat confdefs.h - <<_ACEOF >build/make_request_fn_blk_qc_t/make_request_fn_blk_qc_t.c #include blk_qc_t make_request(struct request_queue *q, struct bio *bio) { return (BLK_QC_T_NONE); } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_blk_qc_t || mkdir -p build/make_request_fn_blk_qc_t file=build/make_request_fn_blk_qc_t/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_blk_qc_t ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_blk_qc_t.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_blk_qc_t/" >>build/Makefile fi if test -n "" ; then test -d build/make_request_fn_blk_qc_t_license || mkdir -p build/make_request_fn_blk_qc_t_license cat confdefs.h - <<_ACEOF >build/make_request_fn_blk_qc_t_license/make_request_fn_blk_qc_t_license.c #include MODULE_LICENSE(""); #include blk_qc_t make_request(struct request_queue *q, struct bio *bio) { return (BLK_QC_T_NONE); } int main (void) { blk_queue_make_request(NULL, &make_request); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/make_request_fn_blk_qc_t_license || mkdir -p build/make_request_fn_blk_qc_t_license file=build/make_request_fn_blk_qc_t_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/make_request_fn_blk_qc_t_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := make_request_fn_blk_qc_t_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += make_request_fn_blk_qc_t_license/" >>build/Makefile fi fi test -d build/generic_acct_3args || mkdir -p build/generic_acct_3args cat confdefs.h - <<_ACEOF >build/generic_acct_3args/generic_acct_3args.c #include void (*generic_start_io_acct_f)(int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(int, struct hd_struct *, unsigned long) = &generic_end_io_acct; int main (void) { generic_start_io_acct(0, 0, NULL); generic_end_io_acct(0, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_acct_3args || mkdir -p build/generic_acct_3args file=build/generic_acct_3args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_acct_3args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_acct_3args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_acct_3args/" >>build/Makefile fi if test -n "" ; then test -d build/generic_acct_3args_license || mkdir -p build/generic_acct_3args_license cat confdefs.h - <<_ACEOF >build/generic_acct_3args_license/generic_acct_3args_license.c #include MODULE_LICENSE(""); #include void (*generic_start_io_acct_f)(int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(int, struct hd_struct *, unsigned long) = &generic_end_io_acct; int main (void) { generic_start_io_acct(0, 0, NULL); generic_end_io_acct(0, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_acct_3args_license || mkdir -p build/generic_acct_3args_license file=build/generic_acct_3args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_acct_3args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_acct_3args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_acct_3args_license/" >>build/Makefile fi fi test -d build/generic_acct_4args || mkdir -p build/generic_acct_4args cat confdefs.h - <<_ACEOF >build/generic_acct_4args/generic_acct_4args.c #include void (*generic_start_io_acct_f)(struct request_queue *, int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(struct request_queue *, int, struct hd_struct *, unsigned long) = &generic_end_io_acct; int main (void) { generic_start_io_acct(NULL, 0, 0, NULL); generic_end_io_acct(NULL, 0, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_acct_4args || mkdir -p build/generic_acct_4args file=build/generic_acct_4args/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_acct_4args ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_acct_4args.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_acct_4args/" >>build/Makefile fi if test -n "" ; then test -d build/generic_acct_4args_license || mkdir -p build/generic_acct_4args_license cat confdefs.h - <<_ACEOF >build/generic_acct_4args_license/generic_acct_4args_license.c #include MODULE_LICENSE(""); #include void (*generic_start_io_acct_f)(struct request_queue *, int, unsigned long, struct hd_struct *) = &generic_start_io_acct; void (*generic_end_io_acct_f)(struct request_queue *, int, struct hd_struct *, unsigned long) = &generic_end_io_acct; int main (void) { generic_start_io_acct(NULL, 0, 0, NULL); generic_end_io_acct(NULL, 0, NULL, 0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/generic_acct_4args_license || mkdir -p build/generic_acct_4args_license file=build/generic_acct_4args_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/generic_acct_4args_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := generic_acct_4args_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += generic_acct_4args_license/" >>build/Makefile fi fi test -d build/kernel_fpu || mkdir -p build/kernel_fpu cat confdefs.h - <<_ACEOF >build/kernel_fpu/kernel_fpu.c #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif int main (void) { kernel_fpu_begin(); kernel_fpu_end(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_fpu || mkdir -p build/kernel_fpu file=build/kernel_fpu/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_fpu ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_fpu.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_fpu/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/kernel_fpu_license || mkdir -p build/kernel_fpu_license cat confdefs.h - <<_ACEOF >build/kernel_fpu_license/kernel_fpu_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif int main (void) { kernel_fpu_begin(); kernel_fpu_end(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kernel_fpu_license || mkdir -p build/kernel_fpu_license file=build/kernel_fpu_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kernel_fpu_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kernel_fpu_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kernel_fpu_license/" >>build/Makefile fi fi test -d build/__kernel_fpu || mkdir -p build/__kernel_fpu cat confdefs.h - <<_ACEOF >build/__kernel_fpu/__kernel_fpu.c #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif int main (void) { __kernel_fpu_begin(); __kernel_fpu_end(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/__kernel_fpu || mkdir -p build/__kernel_fpu file=build/__kernel_fpu/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/__kernel_fpu ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := __kernel_fpu.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += __kernel_fpu/" >>build/Makefile fi if test -n "$ZFS_META_LICENSE" ; then test -d build/__kernel_fpu_license || mkdir -p build/__kernel_fpu_license cat confdefs.h - <<_ACEOF >build/__kernel_fpu_license/__kernel_fpu_license.c #include MODULE_LICENSE("$ZFS_META_LICENSE"); #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #else #include #include #endif int main (void) { __kernel_fpu_begin(); __kernel_fpu_end(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/__kernel_fpu_license || mkdir -p build/__kernel_fpu_license file=build/__kernel_fpu_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/__kernel_fpu_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := __kernel_fpu_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += __kernel_fpu_license/" >>build/Makefile fi fi test -d build/fpu_internal || mkdir -p build/fpu_internal cat confdefs.h - <<_ACEOF >build/fpu_internal/fpu_internal.c #if defined(__x86_64) || defined(__x86_64__) || \ defined(__i386) || defined(__i386__) #if !defined(__x86) #define __x86 #endif #endif #if !defined(__x86) #error Unsupported architecture #endif #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #include #else #include #include #endif #if !defined(XSTATE_XSAVE) #error XSTATE_XSAVE not defined #endif #if !defined(XSTATE_XRESTORE) #error XSTATE_XRESTORE not defined #endif int main (void) { struct fpu *fpu = ¤t->thread.fpu; union fpregs_state *st = &fpu->state; struct fregs_state *fr __attribute__ ((unused)) = &st->fsave; struct fxregs_state *fxr __attribute__ ((unused)) = &st->fxsave; struct xregs_state *xr __attribute__ ((unused)) = &st->xsave; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fpu_internal || mkdir -p build/fpu_internal file=build/fpu_internal/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fpu_internal ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fpu_internal.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fpu_internal/" >>build/Makefile fi if test -n "" ; then test -d build/fpu_internal_license || mkdir -p build/fpu_internal_license cat confdefs.h - <<_ACEOF >build/fpu_internal_license/fpu_internal_license.c #include MODULE_LICENSE(""); #if defined(__x86_64) || defined(__x86_64__) || \ defined(__i386) || defined(__i386__) #if !defined(__x86) #define __x86 #endif #endif #if !defined(__x86) #error Unsupported architecture #endif #include #ifdef HAVE_KERNEL_FPU_API_HEADER #include #include #else #include #include #endif #if !defined(XSTATE_XSAVE) #error XSTATE_XSAVE not defined #endif #if !defined(XSTATE_XRESTORE) #error XSTATE_XRESTORE not defined #endif int main (void) { struct fpu *fpu = ¤t->thread.fpu; union fpregs_state *st = &fpu->state; struct fregs_state *fr __attribute__ ((unused)) = &st->fsave; struct fxregs_state *fxr __attribute__ ((unused)) = &st->fxsave; struct xregs_state *xr __attribute__ ((unused)) = &st->xsave; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/fpu_internal_license || mkdir -p build/fpu_internal_license file=build/fpu_internal_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/fpu_internal_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := fpu_internal_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += fpu_internal_license/" >>build/Makefile fi fi test -d build/type_fmode_t || mkdir -p build/type_fmode_t cat confdefs.h - <<_ACEOF >build/type_fmode_t/type_fmode_t.c #include int main (void) { fmode_t *ptr __attribute__ ((unused)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/type_fmode_t || mkdir -p build/type_fmode_t file=build/type_fmode_t/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/type_fmode_t ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := type_fmode_t.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += type_fmode_t/" >>build/Makefile fi if test -n "" ; then test -d build/type_fmode_t_license || mkdir -p build/type_fmode_t_license cat confdefs.h - <<_ACEOF >build/type_fmode_t_license/type_fmode_t_license.c #include MODULE_LICENSE(""); #include int main (void) { fmode_t *ptr __attribute__ ((unused)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/type_fmode_t_license || mkdir -p build/type_fmode_t_license file=build/type_fmode_t_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/type_fmode_t_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := type_fmode_t_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += type_fmode_t_license/" >>build/Makefile fi fi test -d build/kuidgid_t_init || mkdir -p build/kuidgid_t_init cat confdefs.h - <<_ACEOF >build/kuidgid_t_init/kuidgid_t_init.c #include int main (void) { kuid_t userid __attribute__ ((unused)) = KUIDT_INIT(0); kgid_t groupid __attribute__ ((unused)) = KGIDT_INIT(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuidgid_t_init || mkdir -p build/kuidgid_t_init file=build/kuidgid_t_init/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuidgid_t_init ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuidgid_t_init.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuidgid_t_init/" >>build/Makefile fi if test -n "" ; then test -d build/kuidgid_t_init_license || mkdir -p build/kuidgid_t_init_license cat confdefs.h - <<_ACEOF >build/kuidgid_t_init_license/kuidgid_t_init_license.c #include MODULE_LICENSE(""); #include int main (void) { kuid_t userid __attribute__ ((unused)) = KUIDT_INIT(0); kgid_t groupid __attribute__ ((unused)) = KGIDT_INIT(0); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuidgid_t_init_license || mkdir -p build/kuidgid_t_init_license file=build/kuidgid_t_init_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuidgid_t_init_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuidgid_t_init_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuidgid_t_init_license/" >>build/Makefile fi fi test -d build/kuidgid_t || mkdir -p build/kuidgid_t cat confdefs.h - <<_ACEOF >build/kuidgid_t/kuidgid_t.c #include int main (void) { kuid_t userid __attribute__ ((unused)) = 0; kgid_t groupid __attribute__ ((unused)) = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuidgid_t || mkdir -p build/kuidgid_t file=build/kuidgid_t/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuidgid_t ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuidgid_t.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuidgid_t/" >>build/Makefile fi if test -n "" ; then test -d build/kuidgid_t_license || mkdir -p build/kuidgid_t_license cat confdefs.h - <<_ACEOF >build/kuidgid_t_license/kuidgid_t_license.c #include MODULE_LICENSE(""); #include int main (void) { kuid_t userid __attribute__ ((unused)) = 0; kgid_t groupid __attribute__ ((unused)) = 0; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuidgid_t_license || mkdir -p build/kuidgid_t_license file=build/kuidgid_t_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuidgid_t_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuidgid_t_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuidgid_t_license/" >>build/Makefile fi fi test -d build/i_uid_read || mkdir -p build/i_uid_read cat confdefs.h - <<_ACEOF >build/i_uid_read/i_uid_read.c #include int main (void) { struct inode *ip = NULL; (void) i_uid_read(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/i_uid_read || mkdir -p build/i_uid_read file=build/i_uid_read/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/i_uid_read ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := i_uid_read.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += i_uid_read/" >>build/Makefile fi if test -n "" ; then test -d build/i_uid_read_license || mkdir -p build/i_uid_read_license cat confdefs.h - <<_ACEOF >build/i_uid_read_license/i_uid_read_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode *ip = NULL; (void) i_uid_read(ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/i_uid_read_license || mkdir -p build/i_uid_read_license file=build/i_uid_read_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/i_uid_read_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := i_uid_read_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += i_uid_read_license/" >>build/Makefile fi fi test -d build/module_param_call || mkdir -p build/module_param_call cat confdefs.h - <<_ACEOF >build/module_param_call/module_param_call.c #include #include int param_get(char *b, const struct kernel_param *kp) { return (0); } int param_set(const char *b, const struct kernel_param *kp) { return (0); } module_param_call(p, param_set, param_get, NULL, 0644); int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/module_param_call || mkdir -p build/module_param_call file=build/module_param_call/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/module_param_call ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := module_param_call.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += module_param_call/" >>build/Makefile fi if test -n "" ; then test -d build/module_param_call_license || mkdir -p build/module_param_call_license cat confdefs.h - <<_ACEOF >build/module_param_call_license/module_param_call_license.c #include MODULE_LICENSE(""); #include #include int param_get(char *b, const struct kernel_param *kp) { return (0); } int param_set(const char *b, const struct kernel_param *kp) { return (0); } module_param_call(p, param_set, param_get, NULL, 0644); int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/module_param_call_license || mkdir -p build/module_param_call_license file=build/module_param_call_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/module_param_call_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := module_param_call_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += module_param_call_license/" >>build/Makefile fi fi test -d build/inode_operations_rename || mkdir -p build/inode_operations_rename cat confdefs.h - <<_ACEOF >build/inode_operations_rename/inode_operations_rename.c #include int rename_fn(struct inode *sip, struct dentry *sdp, struct inode *tip, struct dentry *tdp, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .rename = rename_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_rename || mkdir -p build/inode_operations_rename file=build/inode_operations_rename/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_rename ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_rename.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_rename/" >>build/Makefile fi if test -n "" ; then test -d build/inode_operations_rename_license || mkdir -p build/inode_operations_rename_license cat confdefs.h - <<_ACEOF >build/inode_operations_rename_license/inode_operations_rename_license.c #include MODULE_LICENSE(""); #include int rename_fn(struct inode *sip, struct dentry *sdp, struct inode *tip, struct dentry *tdp, unsigned int flags) { return 0; } static const struct inode_operations iops __attribute__ ((unused)) = { .rename = rename_fn, }; int main (void) { ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/inode_operations_rename_license || mkdir -p build/inode_operations_rename_license file=build/inode_operations_rename_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/inode_operations_rename_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := inode_operations_rename_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += inode_operations_rename_license/" >>build/Makefile fi fi test -d build/current_time || mkdir -p build/current_time cat confdefs.h - <<_ACEOF >build/current_time/current_time.c #include int main (void) { struct inode ip __attribute__ ((unused)); ip.i_atime = current_time(&ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_time || mkdir -p build/current_time file=build/current_time/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_time ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_time.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_time/" >>build/Makefile fi if test -n "" ; then test -d build/current_time_license || mkdir -p build/current_time_license cat confdefs.h - <<_ACEOF >build/current_time_license/current_time_license.c #include MODULE_LICENSE(""); #include int main (void) { struct inode ip __attribute__ ((unused)); ip.i_atime = current_time(&ip); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/current_time_license || mkdir -p build/current_time_license file=build/current_time_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/current_time_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := current_time_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += current_time_license/" >>build/Makefile fi fi test -d build/ns_capable || mkdir -p build/ns_capable cat confdefs.h - <<_ACEOF >build/ns_capable/ns_capable.c #include int main (void) { ns_capable((struct user_namespace *)NULL, CAP_SYS_ADMIN); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ns_capable || mkdir -p build/ns_capable file=build/ns_capable/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ns_capable ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ns_capable.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ns_capable/" >>build/Makefile fi if test -n "" ; then test -d build/ns_capable_license || mkdir -p build/ns_capable_license cat confdefs.h - <<_ACEOF >build/ns_capable_license/ns_capable_license.c #include MODULE_LICENSE(""); #include int main (void) { ns_capable((struct user_namespace *)NULL, CAP_SYS_ADMIN); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ns_capable_license || mkdir -p build/ns_capable_license file=build/ns_capable_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ns_capable_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ns_capable_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ns_capable_license/" >>build/Makefile fi fi test -d build/cred_user_ns || mkdir -p build/cred_user_ns cat confdefs.h - <<_ACEOF >build/cred_user_ns/cred_user_ns.c #include int main (void) { struct cred cr; cr.user_ns = (struct user_namespace *)NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/cred_user_ns || mkdir -p build/cred_user_ns file=build/cred_user_ns/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/cred_user_ns ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := cred_user_ns.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += cred_user_ns/" >>build/Makefile fi if test -n "" ; then test -d build/cred_user_ns_license || mkdir -p build/cred_user_ns_license cat confdefs.h - <<_ACEOF >build/cred_user_ns_license/cred_user_ns_license.c #include MODULE_LICENSE(""); #include int main (void) { struct cred cr; cr.user_ns = (struct user_namespace *)NULL; ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/cred_user_ns_license || mkdir -p build/cred_user_ns_license file=build/cred_user_ns_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/cred_user_ns_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := cred_user_ns_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += cred_user_ns_license/" >>build/Makefile fi fi test -d build/kuid_has_mapping || mkdir -p build/kuid_has_mapping cat confdefs.h - <<_ACEOF >build/kuid_has_mapping/kuid_has_mapping.c #include int main (void) { kuid_has_mapping((struct user_namespace *)NULL, KUIDT_INIT(0)); kgid_has_mapping((struct user_namespace *)NULL, KGIDT_INIT(0)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuid_has_mapping || mkdir -p build/kuid_has_mapping file=build/kuid_has_mapping/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuid_has_mapping ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuid_has_mapping.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuid_has_mapping/" >>build/Makefile fi if test -n "" ; then test -d build/kuid_has_mapping_license || mkdir -p build/kuid_has_mapping_license cat confdefs.h - <<_ACEOF >build/kuid_has_mapping_license/kuid_has_mapping_license.c #include MODULE_LICENSE(""); #include int main (void) { kuid_has_mapping((struct user_namespace *)NULL, KUIDT_INIT(0)); kgid_has_mapping((struct user_namespace *)NULL, KGIDT_INIT(0)); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kuid_has_mapping_license || mkdir -p build/kuid_has_mapping_license file=build/kuid_has_mapping_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kuid_has_mapping_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kuid_has_mapping_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kuid_has_mapping_license/" >>build/Makefile fi fi test -d build/in_compat_syscall || mkdir -p build/in_compat_syscall cat confdefs.h - <<_ACEOF >build/in_compat_syscall/in_compat_syscall.c #include int main (void) { in_compat_syscall(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/in_compat_syscall || mkdir -p build/in_compat_syscall file=build/in_compat_syscall/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/in_compat_syscall ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := in_compat_syscall.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += in_compat_syscall/" >>build/Makefile fi if test -n "" ; then test -d build/in_compat_syscall_license || mkdir -p build/in_compat_syscall_license cat confdefs.h - <<_ACEOF >build/in_compat_syscall_license/in_compat_syscall_license.c #include MODULE_LICENSE(""); #include int main (void) { in_compat_syscall(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/in_compat_syscall_license || mkdir -p build/in_compat_syscall_license file=build/in_compat_syscall_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/in_compat_syscall_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := in_compat_syscall_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += in_compat_syscall_license/" >>build/Makefile fi fi test -d build/ktime_get_coarse_real_ts64 || mkdir -p build/ktime_get_coarse_real_ts64 cat confdefs.h - <<_ACEOF >build/ktime_get_coarse_real_ts64/ktime_get_coarse_real_ts64.c #include int main (void) { struct timespec64 ts; ktime_get_coarse_real_ts64(&ts); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ktime_get_coarse_real_ts64 || mkdir -p build/ktime_get_coarse_real_ts64 file=build/ktime_get_coarse_real_ts64/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ktime_get_coarse_real_ts64 ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ktime_get_coarse_real_ts64.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ktime_get_coarse_real_ts64/" >>build/Makefile fi if test -n "" ; then test -d build/ktime_get_coarse_real_ts64_license || mkdir -p build/ktime_get_coarse_real_ts64_license cat confdefs.h - <<_ACEOF >build/ktime_get_coarse_real_ts64_license/ktime_get_coarse_real_ts64_license.c #include MODULE_LICENSE(""); #include int main (void) { struct timespec64 ts; ktime_get_coarse_real_ts64(&ts); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/ktime_get_coarse_real_ts64_license || mkdir -p build/ktime_get_coarse_real_ts64_license file=build/ktime_get_coarse_real_ts64_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/ktime_get_coarse_real_ts64_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := ktime_get_coarse_real_ts64_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += ktime_get_coarse_real_ts64_license/" >>build/Makefile fi fi test -d build/totalram_pages || mkdir -p build/totalram_pages cat confdefs.h - <<_ACEOF >build/totalram_pages/totalram_pages.c #include int main (void) { unsigned long pages __attribute__ ((unused)); pages = totalram_pages(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/totalram_pages || mkdir -p build/totalram_pages file=build/totalram_pages/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/totalram_pages ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := totalram_pages.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += totalram_pages/" >>build/Makefile fi if test -n "" ; then test -d build/totalram_pages_license || mkdir -p build/totalram_pages_license cat confdefs.h - <<_ACEOF >build/totalram_pages_license/totalram_pages_license.c #include MODULE_LICENSE(""); #include int main (void) { unsigned long pages __attribute__ ((unused)); pages = totalram_pages(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/totalram_pages_license || mkdir -p build/totalram_pages_license file=build/totalram_pages_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/totalram_pages_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := totalram_pages_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += totalram_pages_license/" >>build/Makefile fi fi test -d build/totalhigh_pages || mkdir -p build/totalhigh_pages cat confdefs.h - <<_ACEOF >build/totalhigh_pages/totalhigh_pages.c #include int main (void) { unsigned long pages __attribute__ ((unused)); pages = totalhigh_pages(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/totalhigh_pages || mkdir -p build/totalhigh_pages file=build/totalhigh_pages/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/totalhigh_pages ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := totalhigh_pages.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += totalhigh_pages/" >>build/Makefile fi if test -n "" ; then test -d build/totalhigh_pages_license || mkdir -p build/totalhigh_pages_license cat confdefs.h - <<_ACEOF >build/totalhigh_pages_license/totalhigh_pages_license.c #include MODULE_LICENSE(""); #include int main (void) { unsigned long pages __attribute__ ((unused)); pages = totalhigh_pages(); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/totalhigh_pages_license || mkdir -p build/totalhigh_pages_license file=build/totalhigh_pages_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/totalhigh_pages_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := totalhigh_pages_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += totalhigh_pages_license/" >>build/Makefile fi fi test -d build/kstrtoul || mkdir -p build/kstrtoul cat confdefs.h - <<_ACEOF >build/kstrtoul/kstrtoul.c #include int main (void) { int ret __attribute__ ((unused)) = kstrtoul(NULL, 10, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kstrtoul || mkdir -p build/kstrtoul file=build/kstrtoul/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kstrtoul ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kstrtoul.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kstrtoul/" >>build/Makefile fi if test -n "" ; then test -d build/kstrtoul_license || mkdir -p build/kstrtoul_license cat confdefs.h - <<_ACEOF >build/kstrtoul_license/kstrtoul_license.c #include MODULE_LICENSE(""); #include int main (void) { int ret __attribute__ ((unused)) = kstrtoul(NULL, 10, NULL); ; return 0; } _ACEOF test -d build || mkdir -p build test -d build/kstrtoul_license || mkdir -p build/kstrtoul_license file=build/kstrtoul_license/Makefile cat - <<_ACEOF >$file # Example command line to manually build source # make modules -C $LINUX_OBJ $ARCH_UM M=$PWD/build/kstrtoul_license ccflags-y := -Werror $FRAME_LARGER_THAN _ACEOF echo "obj-m := kstrtoul_license.o" >>$file if test "xyes" = "xyes"; then echo "obj-m += kstrtoul_license/" >>build/Makefile fi fi { $as_echo "$as_me:$LINENO: checking for available kernel interfaces" >&5 $as_echo_n "checking for available kernel interfaces... " >&6; } { ac_try=' KBUILD_MODPOST_NOFINAL="yes" KBUILD_MODPOST_WARN="" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build &>build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/Makefile build/Makefile.compile.kabi mv build/build.log build/build.log.kabi else { { $as_echo "$as_me:$LINENO: error: *** Unable to compile test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to compile test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi if test "x$enable_linux_builtin" = "xno"; then for dir in $(awk '/^obj-m/ { print $3 }' \ build/Makefile.compile.kabi); do name=${dir%/} if test -f build/$name/$name.o; then if test "${name##*_}" = "license"; then { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="yes" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build/$name &>build/$name/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/$name/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/$name/Makefile build/$name/Makefile.modpost.kabi cat build/$name/build.log >>build/build.log.kabi else { { $as_echo "$as_me:$LINENO: error: *** Unable to modpost test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to modpost test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi echo "obj-n += $dir" >>build/Makefile else echo "obj-m += $dir" >>build/Makefile fi else echo "obj-n += $dir" >>build/Makefile fi done { ac_try=' KBUILD_MODPOST_NOFINAL="" KBUILD_MODPOST_WARN="yes" make modules -k -j$TEST_JOBS -C $LINUX_OBJ $ARCH_UM M=$PWD/build &>build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } if { ac_try='test -f build/build.log' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then mv build/Makefile build/Makefile.modpost.kabi cat build/build.log >>build/build.log.kabi else { { $as_echo "$as_me:$LINENO: error: *** Unable to modpost test source to determine kernel interfaces." >&5 $as_echo "$as_me: error: *** Unable to modpost test source to determine kernel interfaces." >&2;} { (exit 1); exit 1; }; } fi else for dir in $(awk '/^obj-m/ { print $3 }' \ build/Makefile.compile.kabi); do name=${dir%/} if test -f build/$name/$name.o; then touch build/$name/$name.ko fi done fi { $as_echo "$as_me:$LINENO: result: done" >&5 $as_echo "done" >&6; } { $as_echo "$as_me:$LINENO: checking whether access_ok() has 'type' parameter" >&5 $as_echo_n "checking whether access_ok() has 'type' parameter... " >&6; } if test -d build/access_ok_type; then if test -f build/access_ok_type/access_ok_type.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_ACCESS_OK_TYPE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"access_ok_type\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"access_ok_type\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether global_node_page_state() exists" >&5 $as_echo_n "checking whether global_node_page_state() exists... " >&6; } if test -d build/global_node_page_state; then if test -f build/global_node_page_state/global_node_page_state.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_GLOBAL_NODE_PAGE_STATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"global_node_page_state\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"global_node_page_state\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether global_zone_page_state() exists" >&5 $as_echo_n "checking whether global_zone_page_state() exists... " >&6; } if test -d build/global_zone_page_state; then if test -f build/global_zone_page_state/global_zone_page_state.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_GLOBAL_ZONE_PAGE_STATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"global_zone_page_state\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"global_zone_page_state\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether enum node_stat_item contains NR_FILE_PAGES" >&5 $as_echo_n "checking whether enum node_stat_item contains NR_FILE_PAGES... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "node_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_FILE_PAGES' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES 1 _ACEOF ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum node_stat_item contains NR_INACTIVE_ANON" >&5 $as_echo_n "checking whether enum node_stat_item contains NR_INACTIVE_ANON... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "node_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_INACTIVE_ANON' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON 1 _ACEOF ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum node_stat_item contains NR_INACTIVE_FILE" >&5 $as_echo_n "checking whether enum node_stat_item contains NR_INACTIVE_FILE... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "node_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_INACTIVE_FILE' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE 1 _ACEOF ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum node_stat_item contains NR_SLAB_RECLAIMABLE" >&5 $as_echo_n "checking whether enum node_stat_item contains NR_SLAB_RECLAIMABLE... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "node_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_SLAB_RECLAIMABLE' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE 1 _ACEOF ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum zone_stat_item contains NR_FILE_PAGES" >&5 $as_echo_n "checking whether enum zone_stat_item contains NR_FILE_PAGES... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "zone_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_FILE_PAGES' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES 1 _ACEOF ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum zone_stat_item contains NR_INACTIVE_ANON" >&5 $as_echo_n "checking whether enum zone_stat_item contains NR_INACTIVE_ANON... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "zone_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_INACTIVE_ANON' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON 1 _ACEOF ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum zone_stat_item contains NR_INACTIVE_FILE" >&5 $as_echo_n "checking whether enum zone_stat_item contains NR_INACTIVE_FILE... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "zone_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_INACTIVE_FILE' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE 1 _ACEOF ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether enum zone_stat_item contains NR_SLAB_RECLAIMABLE" >&5 $as_echo_n "checking whether enum zone_stat_item contains NR_SLAB_RECLAIMABLE... " >&6; } if { ac_try='"${srcdir}/scripts/enum-extract.pl" "zone_stat_item" "$LINUX/include/linux/mmzone.h" | egrep -qx NR_SLAB_RECLAIMABLE' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define ZFS_ENUM_ZONE_STAT_ITEM_NR_SLAB_RECLAIMABLE 1 _ACEOF ZFS_ENUM_ZONE_STAT_ITEM_NR_SLAB_RECLAIMABLE=1 else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:$LINENO: checking whether global_page_state enums are sane" >&5 $as_echo_n "checking whether global_page_state enums are sane... " >&6; } enum_check_a="$ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES" enum_check_b="$ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES" if test -n "$enum_check_a" -a -n "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_FILE_PAGES in either node_stat_item or zone_stat_item: DUPLICATE" >&5 $as_echo "NR_FILE_PAGES in either node_stat_item or zone_stat_item: DUPLICATE" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi if test -z "$enum_check_a" -a -z "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_FILE_PAGES in either node_stat_item or zone_stat_item: NOT FOUND" >&5 $as_echo "NR_FILE_PAGES in either node_stat_item or zone_stat_item: NOT FOUND" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi enum_check_a="$ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON" enum_check_b="$ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON" if test -n "$enum_check_a" -a -n "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_INACTIVE_ANON in either node_stat_item or zone_stat_item: DUPLICATE" >&5 $as_echo "NR_INACTIVE_ANON in either node_stat_item or zone_stat_item: DUPLICATE" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi if test -z "$enum_check_a" -a -z "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_INACTIVE_ANON in either node_stat_item or zone_stat_item: NOT FOUND" >&5 $as_echo "NR_INACTIVE_ANON in either node_stat_item or zone_stat_item: NOT FOUND" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi enum_check_a="$ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE" enum_check_b="$ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE" if test -n "$enum_check_a" -a -n "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_INACTIVE_FILE in either node_stat_item or zone_stat_item: DUPLICATE" >&5 $as_echo "NR_INACTIVE_FILE in either node_stat_item or zone_stat_item: DUPLICATE" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi if test -z "$enum_check_a" -a -z "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_INACTIVE_FILE in either node_stat_item or zone_stat_item: NOT FOUND" >&5 $as_echo "NR_INACTIVE_FILE in either node_stat_item or zone_stat_item: NOT FOUND" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi enum_check_a="$ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE" enum_check_b="$ZFS_ENUM_ZONE_STAT_ITEM_NR_SLAB_RECLAIMABLE" if test -n "$enum_check_a" -a -n "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_SLAB_RECLAIMABLE in either node_stat_item or zone_stat_item: DUPLICATE" >&5 $as_echo "NR_SLAB_RECLAIMABLE in either node_stat_item or zone_stat_item: DUPLICATE" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi if test -z "$enum_check_a" -a -z "$enum_check_b"; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: result: NR_SLAB_RECLAIMABLE in either node_stat_item or zone_stat_item: NOT FOUND" >&5 $as_echo "NR_SLAB_RECLAIMABLE in either node_stat_item or zone_stat_item: NOT FOUND" >&6; } { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"global page state\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } { $as_echo "$as_me:$LINENO: checking whether compile-time stack validation (objtool) is available" >&5 $as_echo_n "checking whether compile-time stack validation (objtool) is available... " >&6; } if test -d build/objtool; then if test -f build/objtool/objtool.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_OBJTOOL 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether STACK_FRAME_NON_STANDARD is defined" >&5 $as_echo_n "checking whether STACK_FRAME_NON_STANDARD is defined... " >&6; } if test -d build/stack_frame_non_standard; then if test -f build/stack_frame_non_standard/stack_frame_non_standard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_STACK_FRAME_NON_STANDARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"stack_frame_non_standard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"stack_frame_non_standard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"objtool\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"objtool\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct ctl_table has ctl_name" >&5 $as_echo_n "checking whether struct ctl_table has ctl_name... " >&6; } if test -d build/ctl_name; then if test -f build/ctl_name/ctl_name.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CTL_NAME 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"ctl_name\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"ctl_name\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether PDE_DATA() is available" >&5 $as_echo_n "checking whether PDE_DATA() is available... " >&6; } if ! test -f build/pde_data/pde_data.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]PDE_DATA[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in ; do grep -q -E "EXPORT_SYMBOL.*(PDE_DATA)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PDE_DATA 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PDE_DATA 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PDE_DATA 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether fops->fallocate() exists" >&5 $as_echo_n "checking whether fops->fallocate() exists... " >&6; } if test -d build/file_fallocate; then if test -f build/file_fallocate/file_fallocate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FILE_FALLOCATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_fallocate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_fallocate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->fallocate() exists" >&5 $as_echo_n "checking whether iops->fallocate() exists... " >&6; } if test -d build/inode_fallocate; then if test -f build/inode_fallocate/inode_fallocate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_FALLOCATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_fallocate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_fallocate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether zlib_deflate_workspacesize() wants 2 args" >&5 $as_echo_n "checking whether zlib_deflate_workspacesize() wants 2 args... " >&6; } if test -d build/2args_zlib_deflate_workspacesize; then if test -f build/2args_zlib_deflate_workspacesize/2args_zlib_deflate_workspacesize.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"2args_zlib_deflate_workspacesize\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"2args_zlib_deflate_workspacesize\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct rw_semaphore member wait_lock is raw" >&5 $as_echo_n "checking whether struct rw_semaphore member wait_lock is raw... " >&6; } if test -d build/rwsem_spinlock_is_raw; then if test -f build/rwsem_spinlock_is_raw/rwsem_spinlock_is_raw.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define RWSEM_SPINLOCK_IS_RAW 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"rwsem_spinlock_is_raw\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"rwsem_spinlock_is_raw\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct rw_semaphore has member activity" >&5 $as_echo_n "checking whether struct rw_semaphore has member activity... " >&6; } if test -d build/rwsem_activity; then if test -f build/rwsem_activity/rwsem_activity.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_RWSEM_ACTIVITY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"rwsem_activity\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"rwsem_activity\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct rw_semaphore has atomic_long_t member count" >&5 $as_echo_n "checking whether struct rw_semaphore has atomic_long_t member count... " >&6; } if test -d build/rwsem_atomic_long_count; then if test -f build/rwsem_atomic_long_count/rwsem_atomic_long_count.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_RWSEM_ATOMIC_LONG_COUNT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"rwsem_atomic_long_count\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"rwsem_atomic_long_count\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether header linux/sched/rt.h exists" >&5 $as_echo_n "checking whether header linux/sched/rt.h exists... " >&6; } if test -d build/sched_rt_header; then if test -f build/sched_rt_header/sched_rt_header.ko; then cat >>confdefs.h <<\_ACEOF #define HAVE_SCHED_RT_HEADER 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"sched_rt_header\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"sched_rt_header\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether header linux/sched/signal.h exists" >&5 $as_echo_n "checking whether header linux/sched/signal.h exists... " >&6; } if test -d build/sched_signal_header; then if test -f build/sched_signal_header/sched_signal_header.ko; then cat >>confdefs.h <<\_ACEOF #define HAVE_SCHED_SIGNAL_HEADER 1 _ACEOF { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"sched_signal_header\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"sched_signal_header\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether io_schedule_timeout() is available" >&5 $as_echo_n "checking whether io_schedule_timeout() is available... " >&6; } if ! test -f build/io_schedule_timeout/io_schedule_timeout.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]io_schedule_timeout[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in ; do grep -q -E "EXPORT_SYMBOL.*(io_schedule_timeout)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IO_SCHEDULE_TIMEOUT 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IO_SCHEDULE_TIMEOUT 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IO_SCHEDULE_TIMEOUT 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether usleep_range() is available" >&5 $as_echo_n "checking whether usleep_range() is available... " >&6; } if test -d build/usleep_range; then if test -f build/usleep_range/usleep_range.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_USLEEP_RANGE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"usleep_range\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"usleep_range\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct kmem_cache has allocflags" >&5 $as_echo_n "checking whether struct kmem_cache has allocflags... " >&6; } if test -d build/kmem_cache_allocflags; then if test -f build/kmem_cache_allocflags/kmem_cache_allocflags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KMEM_CACHE_ALLOCFLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether struct kmem_cache has gfpflags" >&5 $as_echo_n "checking whether struct kmem_cache has gfpflags... " >&6; } if test -d build/kmem_cache_gfpflags; then if test -f build/kmem_cache_gfpflags/kmem_cache_gfpflags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KMEM_CACHE_GFPFLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kmem_cache_gfpflags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kmem_cache_gfpflags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kmem_cache_allocflags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kmem_cache_allocflags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kmem_cache_create_usercopy() exists" >&5 $as_echo_n "checking whether kmem_cache_create_usercopy() exists... " >&6; } if test -d build/kmem_cache_create_usercopy; then if test -f build/kmem_cache_create_usercopy/kmem_cache_create_usercopy.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KMEM_CACHE_CREATE_USERCOPY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kmem_cache_create_usercopy\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kmem_cache_create_usercopy\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether wait_on_bit() takes an action" >&5 $as_echo_n "checking whether wait_on_bit() takes an action... " >&6; } if test -d build/wait_on_bit; then if test -f build/wait_on_bit/wait_on_bit.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_WAIT_ON_BIT_ACTION 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"wait_on_bit\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"wait_on_bit\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether wq_head->head and wq_entry->entry exist" >&5 $as_echo_n "checking whether wq_head->head and wq_entry->entry exist... " >&6; } if test -d build/wait_queue_head_entry; then if test -f build/wait_queue_head_entry/wait_queue_head_entry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_WAIT_QUEUE_HEAD_ENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"wait_queue_head_entry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"wait_queue_head_entry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode->i_*time's are timespec64" >&5 $as_echo_n "checking whether inode->i_*time's are timespec64... " >&6; } if test -d build/inode_times; then if test -f build/inode_times/inode_times.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_TIMESPEC64_TIMES 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_times\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_times\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode_lock_shared() exists" >&5 $as_echo_n "checking whether inode_lock_shared() exists... " >&6; } if test -d build/inode_lock; then if test -f build/inode_lock/inode_lock.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_LOCK_SHARED 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_lock\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_lock\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether group_info->gid exists" >&5 $as_echo_n "checking whether group_info->gid exists... " >&6; } if test -d build/group_info_gid; then if test -f build/group_info_gid/group_info_gid.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GROUP_INFO_GID 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"group_info_gid\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"group_info_gid\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kernel_write() takes loff_t pointer" >&5 $as_echo_n "checking whether kernel_write() takes loff_t pointer... " >&6; } if test -d build/kernel_write; then if test -f build/kernel_write/kernel_write.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_WRITE_PPOS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kernel_write\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kernel_write\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kernel_read() takes loff_t pointer" >&5 $as_echo_n "checking whether kernel_read() takes loff_t pointer... " >&6; } if test -d build/kernel_read; then if test -f build/kernel_read/kernel_read.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_READ_PPOS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kernel_read\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kernel_read\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether timer_setup() is available" >&5 $as_echo_n "checking whether timer_setup() is available... " >&6; } if test -d build/timer_setup; then if test -f build/timer_setup/timer_setup.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_TIMER_SETUP 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"timer_setup\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"timer_setup\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether timer function expects timer_list" >&5 $as_echo_n "checking whether timer function expects timer_list... " >&6; } if test -d build/timer_list_function; then if test -f build/timer_list_function/timer_list_function.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"timer_list_function\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"timer_list_function\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct timer_list has flags" >&5 $as_echo_n "checking whether struct timer_list has flags... " >&6; } if test -d build/timer_list_flags; then if test -f build/timer_list_flags/timer_list_flags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_TIMER_LIST_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"timer_list_flags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"timer_list_flags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether current->bio_tail exists" >&5 $as_echo_n "checking whether current->bio_tail exists... " >&6; } if test -d build/current_bio_tail; then if test -f build/current_bio_tail/current_bio_tail.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_BIO_TAIL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether current->bio_list exists" >&5 $as_echo_n "checking whether current->bio_list exists... " >&6; } if test -d build/current_bio_list; then if test -f build/current_bio_list/current_bio_list.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_BIO_LIST 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"bio_list\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"bio_list\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"current_bio_list\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"current_bio_list\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"current_bio_tail\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"current_bio_tail\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block->s_user_ns exists" >&5 $as_echo_n "checking whether super_block->s_user_ns exists... " >&6; } if test -d build/super_user_ns; then if test -f build/super_user_ns/super_user_ns.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SUPER_USER_NS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_user_ns\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_user_ns\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether submit_bio() wants 1 arg" >&5 $as_echo_n "checking whether submit_bio() wants 1 arg... " >&6; } if test -d build/submit_bio; then if test -f build/submit_bio/submit_bio.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_SUBMIT_BIO 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"submit_bio\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"submit_bio\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bops->check_events() exists" >&5 $as_echo_n "checking whether bops->check_events() exists... " >&6; } if test -d build/block_device_operations_check_events; then if test -f build/block_device_operations_check_events/block_device_operations_check_events.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"block_device_operations_check_events\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"block_device_operations_check_events\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bops->release() is void" >&5 $as_echo_n "checking whether bops->release() is void... " >&6; } if test -d build/block_device_operations_release_void; then if test -f build/block_device_operations_release_void/block_device_operations_release_void.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"block_device_operations_release_void\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"block_device_operations_release_void\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blkdev_get_by_path() is available" >&5 $as_echo_n "checking whether blkdev_get_by_path() is available... " >&6; } if ! test -f build/blkdev_get_by_path/blkdev_get_by_path.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]blkdev_get_by_path[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(blkdev_get_by_path)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLKDEV_GET_BY_PATH 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLKDEV_GET_BY_PATH 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLKDEV_GET_BY_PATH 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether blkdev_reread_part() is available" >&5 $as_echo_n "checking whether blkdev_reread_part() is available... " >&6; } if test -d build/blkdev_reread_part; then if test -f build/blkdev_reread_part/blkdev_reread_part.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLKDEV_REREAD_PART 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blkdev_reread_part\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blkdev_reread_part\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether invalidate_bdev() wants 1 arg" >&5 $as_echo_n "checking whether invalidate_bdev() wants 1 arg... " >&6; } if test -d build/invalidate_bdev; then if test -f build/invalidate_bdev/invalidate_bdev.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_INVALIDATE_BDEV 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"invalidate_bdev\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"invalidate_bdev\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether lookup_bdev() wants 1 arg" >&5 $as_echo_n "checking whether lookup_bdev() wants 1 arg... " >&6; } if ! test -f build/lookup_bdev_1arg/lookup_bdev_1arg.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether lookup_bdev() wants 2 args" >&5 $as_echo_n "checking whether lookup_bdev() wants 2 args... " >&6; } if ! test -f build/lookup_bdev_2args/lookup_bdev_2args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether lookup_bdev() wants 2 args" >&5 $as_echo_n "checking whether lookup_bdev() wants 2 args... " >&6; } if ! test -f build/lookup_bdev_2args/lookup_bdev_2args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]lookup_bdev[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(lookup_bdev)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_LOOKUP_BDEV 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_LOOKUP_BDEV 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_LOOKUP_BDEV 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_LOOKUP_BDEV 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether open_bdev_exclusive() is available" >&5 $as_echo_n "checking whether open_bdev_exclusive() is available... " >&6; } if ! test -f build/open_bdev_exclusive/open_bdev_exclusive.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]open_bdev_exclusive[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/block_dev.c; do grep -q -E "EXPORT_SYMBOL.*(open_bdev_exclusive)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_OPEN_BDEV_EXCLUSIVE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_OPEN_BDEV_EXCLUSIVE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_OPEN_BDEV_EXCLUSIVE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether bdev_logical_block_size() is available" >&5 $as_echo_n "checking whether bdev_logical_block_size() is available... " >&6; } if test -d build/bdev_logical_block_size; then if test -f build/bdev_logical_block_size/bdev_logical_block_size.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BDEV_LOGICAL_BLOCK_SIZE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bdev_logical_block_size\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bdev_logical_block_size\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bdev_physical_block_size() is available" >&5 $as_echo_n "checking whether bdev_physical_block_size() is available... " >&6; } if test -d build/bdev_physical_block_size; then if test -f build/bdev_physical_block_size/bdev_physical_block_size.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BDEV_PHYSICAL_BLOCK_SIZE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bdev_physical_block_size\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bdev_physical_block_size\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio has bi_iter" >&5 $as_echo_n "checking whether bio has bi_iter... " >&6; } if test -d build/bio_bvec_iter; then if test -f build/bio_bvec_iter/bio_bvec_iter.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_BVEC_ITER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_bvec_iter\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_bvec_iter\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether BIO_RW_FAILFAST_* are defined" >&5 $as_echo_n "checking whether BIO_RW_FAILFAST_* are defined... " >&6; } if test -d build/bio_failfast_dtd; then if test -f build/bio_failfast_dtd/bio_failfast_dtd.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_RW_FAILFAST_DTD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_failfast_dtd\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_failfast_dtd\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether REQ_FAILFAST_MASK is defined" >&5 $as_echo_n "checking whether REQ_FAILFAST_MASK is defined... " >&6; } if test -d build/bio_failfast_mask; then if test -f build/bio_failfast_mask/bio_failfast_mask.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_REQ_FAILFAST_MASK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_failfast_mask\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_failfast_mask\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio_set_dev() is available" >&5 $as_echo_n "checking whether bio_set_dev() is available... " >&6; } if test -d build/bio_set_dev; then if test -f build/bio_set_dev/bio_set_dev.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_SET_DEV 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether bio_set_dev() is GPL-only" >&5 $as_echo_n "checking whether bio_set_dev() is GPL-only... " >&6; } if test -d build/bio_set_dev_license; then if test -f build/bio_set_dev_license/bio_set_dev_license.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_SET_DEV_GPL_ONLY 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_set_dev_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_set_dev_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_set_dev\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_set_dev\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether REQ_OP_DISCARD is defined" >&5 $as_echo_n "checking whether REQ_OP_DISCARD is defined... " >&6; } if test -d build/req_op_discard; then if test -f build/req_op_discard/req_op_discard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_REQ_OP_DISCARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"req_op_discard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"req_op_discard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether REQ_OP_SECURE_ERASE is defined" >&5 $as_echo_n "checking whether REQ_OP_SECURE_ERASE is defined... " >&6; } if test -d build/req_op_secure_erase; then if test -f build/req_op_secure_erase/req_op_secure_erase.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_REQ_OP_SECURE_ERASE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"req_op_secure_erase\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"req_op_secure_erase\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether REQ_OP_FLUSH is defined" >&5 $as_echo_n "checking whether REQ_OP_FLUSH is defined... " >&6; } if test -d build/req_op_flush; then if test -f build/req_op_flush/req_op_flush.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_REQ_OP_FLUSH 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"req_op_flush\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"req_op_flush\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio->bi_opf is defined" >&5 $as_echo_n "checking whether bio->bi_opf is defined... " >&6; } if test -d build/bio_bi_opf; then if test -f build/bio_bi_opf/bio_bi_opf.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_BI_OPF 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_bi_opf\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_bi_opf\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio_set_op_attrs is available" >&5 $as_echo_n "checking whether bio_set_op_attrs is available... " >&6; } if test -d build/bio_set_op_attrs; then if test -f build/bio_set_op_attrs/bio_set_op_attrs.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_SET_OP_ATTRS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_set_op_attrs\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_set_op_attrs\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio_end_io_t wants 1 arg" >&5 $as_echo_n "checking whether bio_end_io_t wants 1 arg... " >&6; } if test -d build/bio_end_io_t_args; then if test -f build/bio_end_io_t_args/bio_end_io_t_args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_BIO_END_IO_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_end_io_t_args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_end_io_t_args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether bio->bi_status exists" >&5 $as_echo_n "checking whether bio->bi_status exists... " >&6; } if test -d build/bio_bi_status; then if test -f build/bio_bi_status/bio_bi_status.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_BI_STATUS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_bi_status\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_bi_status\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether BIO_RW_BARRIER is defined" >&5 $as_echo_n "checking whether BIO_RW_BARRIER is defined... " >&6; } if test -d build/bio_rw_barrier; then if test -f build/bio_rw_barrier/bio_rw_barrier.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_RW_BARRIER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_rw_barrier\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_rw_barrier\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether BIO_RW_DISCARD is defined" >&5 $as_echo_n "checking whether BIO_RW_DISCARD is defined... " >&6; } if test -d build/bio_rw_discard; then if test -f build/bio_rw_discard/bio_rw_discard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BIO_RW_DISCARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"bio_rw_discard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"bio_rw_discard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue bdi is dynamic" >&5 $as_echo_n "checking whether blk_queue bdi is dynamic... " >&6; } if test -d build/blk_queue_bdi; then if test -f build/blk_queue_bdi/blk_queue_bdi.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_BDI_DYNAMIC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_bdi\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_bdi\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_discard() is available" >&5 $as_echo_n "checking whether blk_queue_discard() is available... " >&6; } if test -d build/blk_queue_discard; then if test -f build/blk_queue_discard/blk_queue_discard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_DISCARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_discard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_discard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_secure_erase() is available" >&5 $as_echo_n "checking whether blk_queue_secure_erase() is available... " >&6; } if test -d build/blk_queue_secure_erase; then if test -f build/blk_queue_secure_erase/blk_queue_secure_erase.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_SECURE_ERASE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether blk_queue_secdiscard() is available" >&5 $as_echo_n "checking whether blk_queue_secdiscard() is available... " >&6; } if test -d build/blk_queue_secdiscard; then if test -f build/blk_queue_secdiscard/blk_queue_secdiscard.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_SECDISCARD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_secdiscard\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_secdiscard\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_secure_erase\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_secure_erase\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_flag_set() exists" >&5 $as_echo_n "checking whether blk_queue_flag_set() exists... " >&6; } if test -d build/blk_queue_flag_set; then if test -f build/blk_queue_flag_set/blk_queue_flag_set.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_FLAG_SET 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_flag_set\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_flag_set\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_flag_clear() exists" >&5 $as_echo_n "checking whether blk_queue_flag_clear() exists... " >&6; } if test -d build/blk_queue_flag_clear; then if test -f build/blk_queue_flag_clear/blk_queue_flag_clear.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_FLAG_CLEAR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_flag_clear\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_flag_clear\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_flush() is available" >&5 $as_echo_n "checking whether blk_queue_flush() is available... " >&6; } if test -d build/blk_queue_flush; then if test -f build/blk_queue_flush/blk_queue_flush.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_FLUSH 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether blk_queue_flush() is GPL-only" >&5 $as_echo_n "checking whether blk_queue_flush() is GPL-only... " >&6; } if test -d build/blk_queue_flush_license; then if test -f build/blk_queue_flush_license/blk_queue_flush_license.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_FLUSH_GPL_ONLY 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_flush_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_flush_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_flush\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_flush\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_write_cache() exists" >&5 $as_echo_n "checking whether blk_queue_write_cache() exists... " >&6; } if test -d build/blk_queue_write_cache; then if test -f build/blk_queue_write_cache/blk_queue_write_cache.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_WRITE_CACHE 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether blk_queue_write_cache() is GPL-only" >&5 $as_echo_n "checking whether blk_queue_write_cache() is GPL-only... " >&6; } if test -d build/blk_queue_write_cache_license; then if test -f build/blk_queue_write_cache_license/blk_queue_write_cache_license.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_write_cache_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_write_cache_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_write_cache\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_write_cache\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_max_hw_sectors() is available" >&5 $as_echo_n "checking whether blk_queue_max_hw_sectors() is available... " >&6; } if test -d build/blk_queue_max_hw_sectors; then if test -f build/blk_queue_max_hw_sectors/blk_queue_max_hw_sectors.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_MAX_HW_SECTORS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_max_hw_sectors\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_max_hw_sectors\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether blk_queue_max_segments() is available" >&5 $as_echo_n "checking whether blk_queue_max_segments() is available... " >&6; } if test -d build/blk_queue_max_segments; then if test -f build/blk_queue_max_segments/blk_queue_max_segments.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_MAX_SEGMENTS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_max_segments\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_max_segments\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether the BIO_RW_UNPLUG enum is available" >&5 $as_echo_n "checking whether the BIO_RW_UNPLUG enum is available... " >&6; } if test -d build/blk_queue_bio_rw_unplug; then if test -f build/blk_queue_bio_rw_unplug/blk_queue_bio_rw_unplug.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_HAVE_BIO_RW_UNPLUG 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_queue_bio_rw_unplug\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_queue_bio_rw_unplug\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct blk_plug is available" >&5 $as_echo_n "checking whether struct blk_plug is available... " >&6; } if test -d build/blk_plug; then if test -f build/blk_plug/blk_plug.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_BLK_QUEUE_HAVE_BLK_PLUG 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"blk_plug\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"blk_plug\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether get_disk_and_module() is available" >&5 $as_echo_n "checking whether get_disk_and_module() is available... " >&6; } if ! test -f build/get_disk_and_module/get_disk_and_module.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]get_disk_and_module[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in block/genhd.c; do grep -q -E "EXPORT_SYMBOL.*(get_disk_and_module)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_DISK_AND_MODULE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_DISK_AND_MODULE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_DISK_AND_MODULE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether get_disk_ro() is available" >&5 $as_echo_n "checking whether get_disk_ro() is available... " >&6; } if test -d build/get_disk_ro; then if test -f build/get_disk_ro/get_disk_ro.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_DISK_RO 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"get_disk_ro\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"get_disk_ro\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether generic_readlink is global" >&5 $as_echo_n "checking whether generic_readlink is global... " >&6; } if test -d build/generic_readlink_global; then if test -f build/generic_readlink_global/generic_readlink_global.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_READLINK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"generic_readlink_global\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"generic_readlink_global\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether ql->discard_granularity is available" >&5 $as_echo_n "checking whether ql->discard_granularity is available... " >&6; } if test -d build/discard_granularity; then if test -f build/discard_granularity/discard_granularity.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DISCARD_GRANULARITY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"discard_granularity\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"discard_granularity\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode_owner_or_capable() exists" >&5 $as_echo_n "checking whether inode_owner_or_capable() exists... " >&6; } if test -d build/inode_owner_or_capable; then if test -f build/inode_owner_or_capable/inode_owner_or_capable.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_OWNER_OR_CAPABLE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether is_owner_or_cap() exists" >&5 $as_echo_n "checking whether is_owner_or_cap() exists... " >&6; } if test -d build/is_owner_or_cap; then if test -f build/is_owner_or_cap/is_owner_or_cap.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IS_OWNER_OR_CAP 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"capability\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"capability\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"is_owner_or_cap\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"is_owner_or_cap\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_owner_or_capable\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_owner_or_capable\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block uses const struct xattr_handler" >&5 $as_echo_n "checking whether super_block uses const struct xattr_handler... " >&6; } if test -d build/const_xattr_handler; then if test -f build/const_xattr_handler/const_xattr_handler.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CONST_XATTR_HANDLER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"const_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"const_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether xattr_handler has name" >&5 $as_echo_n "checking whether xattr_handler has name... " >&6; } if test -d build/xattr_handler_name; then if test -f build/xattr_handler_name/xattr_handler_name.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_HANDLER_NAME 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_name\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_name\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether xattr_handler->get() wants dentry and inode" >&5 $as_echo_n "checking whether xattr_handler->get() wants dentry and inode... " >&6; } if test -d build/xattr_handler_get_dentry_inode; then if test -f build/xattr_handler_get_dentry_inode/xattr_handler_get_dentry_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_GET_DENTRY_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->get() wants xattr_handler" >&5 $as_echo_n "checking whether xattr_handler->get() wants xattr_handler... " >&6; } if test -d build/xattr_handler_get_xattr_handler; then if test -f build/xattr_handler_get_xattr_handler/xattr_handler_get_xattr_handler.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_GET_HANDLER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->get() wants dentry" >&5 $as_echo_n "checking whether xattr_handler->get() wants dentry... " >&6; } if test -d build/xattr_handler_get_dentry; then if test -f build/xattr_handler_get_dentry/xattr_handler_get_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_GET_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->get() wants inode" >&5 $as_echo_n "checking whether xattr_handler->get() wants inode... " >&6; } if test -d build/xattr_handler_get_inode; then if test -f build/xattr_handler_get_inode/xattr_handler_get_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_GET_INODE 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"xattr get()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"xattr get()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_get_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_get_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_get_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_get_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_get_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_get_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_get_dentry_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_get_dentry_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether xattr_handler->set() wants dentry and inode" >&5 $as_echo_n "checking whether xattr_handler->set() wants dentry and inode... " >&6; } if test -d build/xattr_handler_set_dentry_inode; then if test -f build/xattr_handler_set_dentry_inode/xattr_handler_set_dentry_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_SET_DENTRY_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->set() wants xattr_handler" >&5 $as_echo_n "checking whether xattr_handler->set() wants xattr_handler... " >&6; } if test -d build/xattr_handler_set_xattr_handler; then if test -f build/xattr_handler_set_xattr_handler/xattr_handler_set_xattr_handler.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_SET_HANDLER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->set() wants dentry" >&5 $as_echo_n "checking whether xattr_handler->set() wants dentry... " >&6; } if test -d build/xattr_handler_set_dentry; then if test -f build/xattr_handler_set_dentry/xattr_handler_set_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_SET_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->set() wants inode" >&5 $as_echo_n "checking whether xattr_handler->set() wants inode... " >&6; } if test -d build/xattr_handler_set_inode; then if test -f build/xattr_handler_set_inode/xattr_handler_set_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_SET_INODE 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"xattr set()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"xattr set()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_set_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_set_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_set_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_set_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_set_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_set_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_set_dentry_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_set_dentry_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether xattr_handler->list() wants simple" >&5 $as_echo_n "checking whether xattr_handler->list() wants simple... " >&6; } if test -d build/xattr_handler_list_simple; then if test -f build/xattr_handler_list_simple/xattr_handler_list_simple.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_LIST_SIMPLE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->list() wants xattr_handler" >&5 $as_echo_n "checking whether xattr_handler->list() wants xattr_handler... " >&6; } if test -d build/xattr_handler_list_xattr_handler; then if test -f build/xattr_handler_list_xattr_handler/xattr_handler_list_xattr_handler.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_LIST_HANDLER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->list() wants dentry" >&5 $as_echo_n "checking whether xattr_handler->list() wants dentry... " >&6; } if test -d build/xattr_handler_list_dentry; then if test -f build/xattr_handler_list_dentry/xattr_handler_list_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_LIST_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether xattr_handler->list() wants inode" >&5 $as_echo_n "checking whether xattr_handler->list() wants inode... " >&6; } if test -d build/xattr_handler_list_inode; then if test -f build/xattr_handler_list_inode/xattr_handler_list_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_XATTR_LIST_INODE 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"xattr list()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"xattr list()\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_list_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_list_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_list_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_list_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_list_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_list_xattr_handler\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"xattr_handler_list_simple\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"xattr_handler_list_simple\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_from_xattr() needs user_ns" >&5 $as_echo_n "checking whether posix_acl_from_xattr() needs user_ns... " >&6; } if test -d build/posix_acl_from_xattr_userns; then if test -f build/posix_acl_from_xattr_userns/posix_acl_from_xattr_userns.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_FROM_XATTR_USERNS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_from_xattr_userns\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_from_xattr_userns\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether generic_setxattr() exists" >&5 $as_echo_n "checking whether generic_setxattr() exists... " >&6; } if test -d build/have_generic_setxattr; then if test -f build/have_generic_setxattr/have_generic_setxattr.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_SETXATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"have_generic_setxattr\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"have_generic_setxattr\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_release() is available" >&5 $as_echo_n "checking whether posix_acl_release() is available... " >&6; } if test -d build/posix_acl_release; then if test -f build/posix_acl_release/posix_acl_release.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_RELEASE 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether posix_acl_release() is GPL-only" >&5 $as_echo_n "checking whether posix_acl_release() is GPL-only... " >&6; } if test -d build/posix_acl_release_license; then if test -f build/posix_acl_release_license/posix_acl_release_license.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_RELEASE_GPL_ONLY 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_release_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_release_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_release\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_release\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether set_cached_acl() is usable" >&5 $as_echo_n "checking whether set_cached_acl() is usable... " >&6; } if test -d build/set_cached_acl_license; then if test -f build/set_cached_acl_license/set_cached_acl_license.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SET_CACHED_ACL_USABLE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"set_cached_acl_license\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"set_cached_acl_license\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_chmod exists" >&5 $as_echo_n "checking whether posix_acl_chmod exists... " >&6; } if test -d build/posix_acl_chmod; then if test -f build/posix_acl_chmod/posix_acl_chmod.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_CHMOD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_chmod\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_chmod\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether __posix_acl_chmod exists" >&5 $as_echo_n "checking whether __posix_acl_chmod exists... " >&6; } if test -d build/__posix_acl_chmod; then if test -f build/__posix_acl_chmod/__posix_acl_chmod.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE___POSIX_ACL_CHMOD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"__posix_acl_chmod\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"__posix_acl_chmod\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_equiv_mode() wants umode_t" >&5 $as_echo_n "checking whether posix_acl_equiv_mode() wants umode_t... " >&6; } if test -d build/posix_acl_equiv_mode; then if test -f build/posix_acl_equiv_mode/posix_acl_equiv_mode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_equiv_mode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_equiv_mode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl_valid() wants user namespace" >&5 $as_echo_n "checking whether posix_acl_valid() wants user namespace... " >&6; } if test -d build/posix_acl_valid_with_ns; then if test -f build/posix_acl_valid_with_ns/posix_acl_valid_with_ns.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_POSIX_ACL_VALID_WITH_NS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"posix_acl_valid_with_ns\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"posix_acl_valid_with_ns\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->permission() exists" >&5 $as_echo_n "checking whether iops->permission() exists... " >&6; } if test -d build/inode_operations_permission; then if test -f build/inode_operations_permission/inode_operations_permission.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PERMISSION 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_permission\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_permission\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->permission() wants nameidata" >&5 $as_echo_n "checking whether iops->permission() wants nameidata... " >&6; } if test -d build/inode_operations_permission_with_nameidata; then if test -f build/inode_operations_permission_with_nameidata/inode_operations_permission_with_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PERMISSION 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_PERMISSION_WITH_NAMEIDATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_permission_with_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_permission_with_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->check_acl() exists" >&5 $as_echo_n "checking whether iops->check_acl() exists... " >&6; } if test -d build/inode_operations_check_acl; then if test -f build/inode_operations_check_acl/inode_operations_check_acl.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CHECK_ACL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_check_acl\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_check_acl\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->check_acl() wants flags" >&5 $as_echo_n "checking whether iops->check_acl() wants flags... " >&6; } if test -d build/inode_operations_check_acl_with_flags; then if test -f build/inode_operations_check_acl_with_flags/inode_operations_check_acl_with_flags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CHECK_ACL 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_CHECK_ACL_WITH_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_check_acl_with_flags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_check_acl_with_flags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->get_acl() exists" >&5 $as_echo_n "checking whether iops->get_acl() exists... " >&6; } if test -d build/inode_operations_get_acl; then if test -f build/inode_operations_get_acl/inode_operations_get_acl.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_ACL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_get_acl\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_get_acl\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->set_acl() exists" >&5 $as_echo_n "checking whether iops->set_acl() exists... " >&6; } if test -d build/inode_operations_set_acl; then if test -f build/inode_operations_set_acl/inode_operations_set_acl.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SET_ACL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_set_acl\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_set_acl\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether uncached_acl_sentinel() exists" >&5 $as_echo_n "checking whether uncached_acl_sentinel() exists... " >&6; } if test -d build/get_acl_handle_cache; then if test -f build/get_acl_handle_cache/get_acl_handle_cache.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_GET_ACL_HANDLE_CACHE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"get_acl_handle_cache\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"get_acl_handle_cache\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether posix_acl has refcount_t" >&5 $as_echo_n "checking whether posix_acl has refcount_t... " >&6; } if test -d build/acl_refcount; then if test -f build/acl_refcount/acl_refcount.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_ACL_REFCOUNT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"acl_refcount\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"acl_refcount\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->getattr() takes a path" >&5 $as_echo_n "checking whether iops->getattr() takes a path... " >&6; } if test -d build/inode_operations_getattr_path; then if test -f build/inode_operations_getattr_path/inode_operations_getattr_path.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PATH_IOPS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->getattr() takes a vfsmount" >&5 $as_echo_n "checking whether iops->getattr() takes a vfsmount... " >&6; } if test -d build/inode_operations_getattr_vfsmount; then if test -f build/inode_operations_getattr_vfsmount/inode_operations_getattr_vfsmount.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFSMOUNT_IOPS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_getattr_vfsmount\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_getattr_vfsmount\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_getattr_path\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_getattr_path\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode_set_flags() exists" >&5 $as_echo_n "checking whether inode_set_flags() exists... " >&6; } if test -d build/inode_set_flags; then if test -f build/inode_set_flags/inode_set_flags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_SET_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_set_flags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_set_flags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether inode_set_iversion() exists" >&5 $as_echo_n "checking whether inode_set_iversion() exists... " >&6; } if test -d build/inode_set_iversion; then if test -f build/inode_set_iversion/inode_set_iversion.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_SET_IVERSION 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_set_iversion\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_set_iversion\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->show_options() wants dentry" >&5 $as_echo_n "checking whether sops->show_options() wants dentry... " >&6; } if test -d build/super_operations_show_options; then if test -f build/super_operations_show_options/super_operations_show_options.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SHOW_OPTIONS_WITH_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_operations_show_options\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_operations_show_options\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether file_inode() is available" >&5 $as_echo_n "checking whether file_inode() is available... " >&6; } if test -d build/file_inode; then if test -f build/file_inode/file_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FILE_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether file_dentry() is available" >&5 $as_echo_n "checking whether file_dentry() is available... " >&6; } if test -d build/file_dentry; then if test -f build/file_dentry/file_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FILE_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants dentry" >&5 $as_echo_n "checking whether fops->fsync() wants dentry... " >&6; } if test -d build/fsync_with_dentry; then if test -f build/fsync_with_dentry/fsync_with_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FSYNC_WITH_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants no dentry" >&5 $as_echo_n "checking whether fops->fsync() wants no dentry... " >&6; } if test -d build/fsync_without_dentry; then if test -f build/fsync_without_dentry/fsync_without_dentry.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FSYNC_WITHOUT_DENTRY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether fops->fsync() wants range" >&5 $as_echo_n "checking whether fops->fsync() wants range... " >&6; } if test -d build/fsync_range; then if test -f build/fsync_range/fsync_range.ko; then { $as_echo "$as_me:$LINENO: result: range" >&5 $as_echo "range" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FSYNC_RANGE 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"fops->fsync\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"fops->fsync\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fsync_range\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fsync_range\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fsync_without_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fsync_without_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fsync_with_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fsync_with_dentry\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fops->aio_fsync() exists" >&5 $as_echo_n "checking whether fops->aio_fsync() exists... " >&6; } if test -d build/aio_fsync; then if test -f build/aio_fsync/aio_fsync.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FILE_AIO_FSYNC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"aio_fsync\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"aio_fsync\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->evict_inode() exists" >&5 $as_echo_n "checking whether sops->evict_inode() exists... " >&6; } if test -d build/evict_inode; then if test -f build/evict_inode/evict_inode.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_EVICT_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"evict_inode\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"evict_inode\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->dirty_inode() wants flags" >&5 $as_echo_n "checking whether sops->dirty_inode() wants flags... " >&6; } if test -d build/dirty_inode_with_flags; then if test -f build/dirty_inode_with_flags/dirty_inode_with_flags.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_DIRTY_INODE_WITH_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"dirty_inode_with_flags\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"dirty_inode_with_flags\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block has s_shrink" >&5 $as_echo_n "checking whether super_block has s_shrink... " >&6; } if test -d build/super_block_s_shrink; then if test -f build/super_block_s_shrink/super_block_s_shrink.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SHRINK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_block_s_shrink\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_block_s_shrink\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block has s_instances list_head" >&5 $as_echo_n "checking whether super_block has s_instances list_head... " >&6; } if test -d build/super_block_s_instances_list_head; then if test -f build/super_block_s_instances_list_head/super_block_s_instances_list_head.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_S_INSTANCES_LIST_HEAD 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_block_s_instances_list_head\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_block_s_instances_list_head\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->nr_cached_objects() exists" >&5 $as_echo_n "checking whether sops->nr_cached_objects() exists... " >&6; } if test -d build/nr_cached_objects; then if test -f build/nr_cached_objects/nr_cached_objects.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_NR_CACHED_OBJECTS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"nr_cached_objects\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"nr_cached_objects\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sops->free_cached_objects() exists" >&5 $as_echo_n "checking whether sops->free_cached_objects() exists... " >&6; } if test -d build/free_cached_objects; then if test -f build/free_cached_objects/free_cached_objects.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FREE_CACHED_OBJECTS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"free_cached_objects\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"free_cached_objects\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether shrink_control has nid" >&5 $as_echo_n "checking whether shrink_control has nid... " >&6; } if test -d build/shrink_control_nid; then if test -f build/shrink_control_nid/shrink_control_nid.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define SHRINK_CONTROL_HAS_NID 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrink_control_nid\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrink_control_nid\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether old 2-argument shrinker exists" >&5 $as_echo_n "checking whether old 2-argument shrinker exists... " >&6; } if test -d build/shrinker_cb_2arg; then if test -f build/shrinker_cb_2arg/shrinker_cb_2arg.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_OLD_SHRINKER_CALLBACK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether old 3-argument shrinker exists" >&5 $as_echo_n "checking whether old 3-argument shrinker exists... " >&6; } if test -d build/shrinker_cb_3arg; then if test -f build/shrinker_cb_3arg/shrinker_cb_3arg.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_SHRINKER_CALLBACK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether new 2-argument shrinker exists" >&5 $as_echo_n "checking whether new 2-argument shrinker exists... " >&6; } if test -d build/shrinker_cb_shrink_control; then if test -f build/shrinker_cb_shrink_control/shrinker_cb_shrink_control.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_NEW_SHRINKER_CALLBACK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether ->count_objects callback exists" >&5 $as_echo_n "checking whether ->count_objects callback exists... " >&6; } if test -d build/shrinker_cb_shrink_control_split; then if test -f build/shrinker_cb_shrink_control_split/shrinker_cb_shrink_control_split.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SPLIT_SHRINKER_CALLBACK 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"shrinker\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"shrinker\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrinker_cb_shrink_control_split\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrinker_cb_shrink_control_split\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrinker_cb_shrink_control\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrinker_cb_shrink_control\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrinker_cb_3arg\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrinker_cb_3arg\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrinker_cb_2arg\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrinker_cb_2arg\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether struct shrink_control exists" >&5 $as_echo_n "checking whether struct shrink_control exists... " >&6; } if test -d build/shrink_control_struct; then if test -f build/shrink_control_struct/shrink_control_struct.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SHRINK_CONTROL_STRUCT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"shrink_control_struct\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"shrink_control_struct\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->create()/mkdir()/mknod() take umode_t" >&5 $as_echo_n "checking whether iops->create()/mkdir()/mknod() take umode_t... " >&6; } if test -d build/inode_operations_mkdir; then if test -f build/inode_operations_mkdir/inode_operations_mkdir.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_MKDIR_UMODE_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_mkdir\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_mkdir\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->lookup() passes nameidata" >&5 $as_echo_n "checking whether iops->lookup() passes nameidata... " >&6; } if test -d build/lookup_nameidata; then if test -f build/lookup_nameidata/lookup_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LOOKUP_NAMEIDATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"lookup_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"lookup_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->create() passes nameidata" >&5 $as_echo_n "checking whether iops->create() passes nameidata... " >&6; } if test -d build/create_nameidata; then if test -f build/create_nameidata/create_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CREATE_NAMEIDATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"create_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"create_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->get_link() passes delayed" >&5 $as_echo_n "checking whether iops->get_link() passes delayed... " >&6; } if test -d build/inode_operations_get_link; then if test -f build/inode_operations_get_link/inode_operations_get_link.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_LINK_DELAYED 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->get_link() passes cookie" >&5 $as_echo_n "checking whether iops->get_link() passes cookie... " >&6; } if test -d build/inode_operations_get_link_cookie; then if test -f build/inode_operations_get_link_cookie/inode_operations_get_link_cookie.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GET_LINK_COOKIE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->follow_link() passes cookie" >&5 $as_echo_n "checking whether iops->follow_link() passes cookie... " >&6; } if test -d build/inode_operations_follow_link; then if test -f build/inode_operations_follow_link/inode_operations_follow_link.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FOLLOW_LINK_COOKIE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->follow_link() passes nameidata" >&5 $as_echo_n "checking whether iops->follow_link() passes nameidata... " >&6; } if test -d build/inode_operations_follow_link_nameidata; then if test -f build/inode_operations_follow_link_nameidata/inode_operations_follow_link_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FOLLOW_LINK_NAMEIDATA 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"get_link\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"get_link\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_follow_link_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_follow_link_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_follow_link\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_follow_link\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_get_link_cookie\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_get_link_cookie\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_get_link\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_get_link\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi if test -d build/inode_operations_get_link; then if test -f build/inode_operations_get_link/inode_operations_get_link.ko; then cat >>confdefs.h <<\_ACEOF #define HAVE_PUT_LINK_DELAYED 1 _ACEOF else { $as_echo "$as_me:$LINENO: checking whether iops->put_link() passes cookie" >&5 $as_echo_n "checking whether iops->put_link() passes cookie... " >&6; } if test -d build/put_link_cookie; then if test -f build/put_link_cookie/put_link_cookie.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PUT_LINK_COOKIE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether iops->put_link() passes nameidata" >&5 $as_echo_n "checking whether iops->put_link() passes nameidata... " >&6; } if test -d build/put_link_nameidata; then if test -f build/put_link_nameidata/put_link_nameidata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_PUT_LINK_NAMEIDATA 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"put_link\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"put_link\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"put_link_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"put_link_nameidata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"put_link_cookie\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"put_link_cookie\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_get_link\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_get_link\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether i_op->tmpfile() exists" >&5 $as_echo_n "checking whether i_op->tmpfile() exists... " >&6; } if test -d build/inode_operations_tmpfile; then if test -f build/inode_operations_tmpfile/inode_operations_tmpfile.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TMPFILE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_tmpfile\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_tmpfile\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->truncate_range() exists" >&5 $as_echo_n "checking whether iops->truncate_range() exists... " >&6; } if test -d build/inode_operations_truncate_range; then if test -f build/inode_operations_truncate_range/inode_operations_truncate_range.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INODE_TRUNCATE_RANGE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_truncate_range\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_truncate_range\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether dops->d_automount() exists" >&5 $as_echo_n "checking whether dops->d_automount() exists... " >&6; } if test -d build/dentry_operations_d_automount; then if test -f build/dentry_operations_d_automount/dentry_operations_d_automount.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_AUTOMOUNT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"dentry_operations_d_automount\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"dentry_operations_d_automount\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether eops->encode_fh() wants inode" >&5 $as_echo_n "checking whether eops->encode_fh() wants inode... " >&6; } if test -d build/export_operations_encode_fh; then if test -f build/export_operations_encode_fh/export_operations_encode_fh.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_ENCODE_FH_WITH_INODE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"export_operations_encode_fh\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"export_operations_encode_fh\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether eops->commit_metadata() exists" >&5 $as_echo_n "checking whether eops->commit_metadata() exists... " >&6; } if test -d build/export_operations_commit_metadata; then if test -f build/export_operations_commit_metadata/export_operations_commit_metadata.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_COMMIT_METADATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"export_operations_commit_metadata\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"export_operations_commit_metadata\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether clear_inode() is available" >&5 $as_echo_n "checking whether clear_inode() is available... " >&6; } if ! test -f build/clear_inode/clear_inode.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]clear_inode[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/inode.c; do grep -q -E "EXPORT_SYMBOL.*(clear_inode)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CLEAR_INODE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CLEAR_INODE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CLEAR_INODE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether setattr_prepare() is available" >&5 $as_echo_n "checking whether setattr_prepare() is available... " >&6; } if ! test -f build/setattr_prepare/setattr_prepare.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]setattr_prepare[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/attr.c; do grep -q -E "EXPORT_SYMBOL.*(setattr_prepare)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SETATTR_PREPARE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SETATTR_PREPARE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SETATTR_PREPARE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether insert_inode_locked() is available" >&5 $as_echo_n "checking whether insert_inode_locked() is available... " >&6; } if ! test -f build/insert_inode_locked/insert_inode_locked.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]insert_inode_locked[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/inode.c; do grep -q -E "EXPORT_SYMBOL.*(insert_inode_locked)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INSERT_INODE_LOCKED 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INSERT_INODE_LOCKED 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_INSERT_INODE_LOCKED 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether d_make_root() is available" >&5 $as_echo_n "checking whether d_make_root() is available... " >&6; } if ! test -f build/d_make_root/d_make_root.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]d_make_root[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/dcache.c; do grep -q -E "EXPORT_SYMBOL.*(d_make_root)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_MAKE_ROOT 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_MAKE_ROOT 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_MAKE_ROOT 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether d_obtain_alias() is available" >&5 $as_echo_n "checking whether d_obtain_alias() is available... " >&6; } if ! test -f build/d_obtain_alias/d_obtain_alias.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]d_obtain_alias[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/dcache.c; do grep -q -E "EXPORT_SYMBOL.*(d_obtain_alias)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_OBTAIN_ALIAS 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_OBTAIN_ALIAS 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_OBTAIN_ALIAS 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether d_prune_aliases() is available" >&5 $as_echo_n "checking whether d_prune_aliases() is available... " >&6; } if ! test -f build/d_prune_aliases/d_prune_aliases.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]d_prune_aliases[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/dcache.c; do grep -q -E "EXPORT_SYMBOL.*(d_prune_aliases)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_PRUNE_ALIASES 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_PRUNE_ALIASES 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_PRUNE_ALIASES 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether d_set_d_op() is available" >&5 $as_echo_n "checking whether d_set_d_op() is available... " >&6; } if ! test -f build/d_set_d_op/d_set_d_op.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]d_set_d_op[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/dcache.c; do grep -q -E "EXPORT_SYMBOL.*(d_set_d_op)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_SET_D_OP 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_SET_D_OP 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_SET_D_OP 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether dops->d_revalidate() takes struct nameidata" >&5 $as_echo_n "checking whether dops->d_revalidate() takes struct nameidata... " >&6; } if test -d build/dentry_operations_revalidate; then if test -f build/dentry_operations_revalidate/dentry_operations_revalidate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_D_REVALIDATE_NAMEIDATA 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"dentry_operations_revalidate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"dentry_operations_revalidate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether dentry uses const struct dentry_operations" >&5 $as_echo_n "checking whether dentry uses const struct dentry_operations... " >&6; } if test -d build/dentry_operations_const; then if test -f build/dentry_operations_const/dentry_operations_const.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CONST_DENTRY_OPERATIONS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"dentry_operations_const\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"dentry_operations_const\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_block has s_d_op" >&5 $as_echo_n "checking whether super_block has s_d_op... " >&6; } if test -d build/super_block_s_d_op; then if test -f build/super_block_s_d_op/super_block_s_d_op.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_S_D_OP 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"super_block_s_d_op\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"super_block_s_d_op\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether truncate_setsize() is available" >&5 $as_echo_n "checking whether truncate_setsize() is available... " >&6; } if ! test -f build/truncate_setsize/truncate_setsize.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]truncate_setsize[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/truncate.c; do grep -q -E "EXPORT_SYMBOL.*(truncate_setsize)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TRUNCATE_SETSIZE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TRUNCATE_SETSIZE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TRUNCATE_SETSIZE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether security_inode_init_security wants 6 args" >&5 $as_echo_n "checking whether security_inode_init_security wants 6 args... " >&6; } if test -d build/security_inode_init_security_6args; then if test -f build/security_inode_init_security_6args/security_inode_init_security_6args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"security_inode_init_security_6args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"security_inode_init_security_6args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether security_inode_init_security wants callback" >&5 $as_echo_n "checking whether security_inode_init_security wants callback... " >&6; } if test -d build/security_inode_init_security; then if test -f build/security_inode_init_security/security_inode_init_security.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"security_inode_init_security\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"security_inode_init_security\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fst->mount() exists" >&5 $as_echo_n "checking whether fst->mount() exists... " >&6; } if test -d build/file_system_type_mount; then if test -f build/file_system_type_mount/file_system_type_mount.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FST_MOUNT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_system_type_mount\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_system_type_mount\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether super_setup_bdi_name() exists" >&5 $as_echo_n "checking whether super_setup_bdi_name() exists... " >&6; } if ! test -f build/super_setup_bdi_name/super_setup_bdi_name.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 2 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 2 args... " >&6; } if ! test -f build/bdi_setup_and_register/bdi_setup_and_register.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 3 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } if ! test -f build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 3 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } if ! test -f build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]super_setup_bdi_name[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/super.c; do grep -q -E "EXPORT_SYMBOL.*(super_setup_bdi_name)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 2 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 2 args... " >&6; } if ! test -f build/bdi_setup_and_register/bdi_setup_and_register.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 3 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } if ! test -f build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether bdi_setup_and_register() wants 3 args" >&5 $as_echo_n "checking whether bdi_setup_and_register() wants 3 args... " >&6; } if ! test -f build/bdi_setup_and_register_3args/bdi_setup_and_register_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]bdi_setup_and_register[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in mm/backing-dev.c; do grep -q -E "EXPORT_SYMBOL.*(bdi_setup_and_register)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_BDI_SETUP_AND_REGISTER 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SUPER_SETUP_BDI_NAME 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SUPER_SETUP_BDI_NAME 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SUPER_SETUP_BDI_NAME 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether set_nlink() is available" >&5 $as_echo_n "checking whether set_nlink() is available... " >&6; } if test -d build/set_nlink; then if test -f build/set_nlink/set_nlink.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_SET_NLINK 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"set_nlink\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"set_nlink\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether sget() wants 5 args" >&5 $as_echo_n "checking whether sget() wants 5 args... " >&6; } if test -d build/sget_5args; then if test -f build/sget_5args/sget_5args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_5ARG_SGET 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"sget_5args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"sget_5args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether lseek_execute() is available" >&5 $as_echo_n "checking whether lseek_execute() is available... " >&6; } if ! test -f build/lseek_execute/lseek_execute.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]lseek_exclusive[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/read_write.c; do grep -q -E "EXPORT_SYMBOL.*(lseek_exclusive)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK_EXECUTE 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK_EXECUTE 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_LSEEK_EXECUTE 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether vfs_getattr() wants 4 args" >&5 $as_echo_n "checking whether vfs_getattr() wants 4 args... " >&6; } if test -d build/vfs_getattr_4args; then if test -f build/vfs_getattr_4args/vfs_getattr_4args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_4ARGS_VFS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"vfs_getattr_4args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"vfs_getattr_4args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether vfs_getattr() wants 2 args" >&5 $as_echo_n "checking whether vfs_getattr() wants 2 args... " >&6; } if test -d build/vfs_getattr_2args; then if test -f build/vfs_getattr_2args/vfs_getattr_2args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_VFS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"vfs_getattr_2args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"vfs_getattr_2args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether vfs_getattr() wants 3 args" >&5 $as_echo_n "checking whether vfs_getattr() wants 3 args... " >&6; } if test -d build/vfs_getattr_3args; then if test -f build/vfs_getattr_3args/vfs_getattr_3args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_3ARGS_VFS_GETATTR 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"vfs_getattr_3args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"vfs_getattr_3args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether vfs_fsync() wants 2 args" >&5 $as_echo_n "checking whether vfs_fsync() wants 2 args... " >&6; } if test -d build/vfs_fsync_2args; then if test -f build/vfs_fsync_2args/vfs_fsync_2args.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_2ARGS_VFS_FSYNC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"vfs_fsync_2args\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"vfs_fsync_2args\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fops->iterate_shared() is available" >&5 $as_echo_n "checking whether fops->iterate_shared() is available... " >&6; } if test -d build/file_operations_iterate_shared; then if test -f build/file_operations_iterate_shared/file_operations_iterate_shared.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_ITERATE_SHARED 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether fops->iterate() is available" >&5 $as_echo_n "checking whether fops->iterate() is available... " >&6; } if test -d build/file_operations_iterate; then if test -f build/file_operations_iterate/file_operations_iterate.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_ITERATE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether fops->readdir() is available" >&5 $as_echo_n "checking whether fops->readdir() is available... " >&6; } if test -d build/file_operations_readdir; then if test -f build/file_operations_readdir/file_operations_readdir.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_READDIR 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"vfs_iterate\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"vfs_iterate\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_operations_readdir\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_operations_readdir\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_operations_iterate\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_operations_iterate\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_operations_iterate_shared\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_operations_iterate_shared\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether aops->direct_IO() uses iov_iter" >&5 $as_echo_n "checking whether aops->direct_IO() uses iov_iter... " >&6; } if test -d build/direct_io_iter; then if test -f build/direct_io_iter/direct_io_iter.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_DIRECT_IO_ITER 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether aops->direct_IO() uses offset" >&5 $as_echo_n "checking whether aops->direct_IO() uses offset... " >&6; } if test -d build/direct_io_iter_offset; then if test -f build/direct_io_iter_offset/direct_io_iter_offset.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_DIRECT_IO_ITER_OFFSET 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether aops->direct_IO() uses rw and offset" >&5 $as_echo_n "checking whether aops->direct_IO() uses rw and offset... " >&6; } if test -d build/direct_io_iter_rw_offset; then if test -f build/direct_io_iter_rw_offset/direct_io_iter_rw_offset.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether aops->direct_IO() uses iovec" >&5 $as_echo_n "checking whether aops->direct_IO() uses iovec... " >&6; } if test -d build/direct_io_iovec; then if test -f build/direct_io_iovec/direct_io_iovec.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_DIRECT_IO_IOVEC 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"direct IO\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"direct IO\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"direct_io_iovec\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"direct_io_iovec\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"direct_io_iter_rw_offset\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"direct_io_iter_rw_offset\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"direct_io_iter_offset\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"direct_io_iter_offset\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"direct_io_iter\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"direct_io_iter\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether fops->read/write_iter() are available" >&5 $as_echo_n "checking whether fops->read/write_iter() are available... " >&6; } if test -d build/file_operations_rw; then if test -f build/file_operations_rw/file_operations_rw.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_VFS_RW_ITERATE 1 _ACEOF { $as_echo "$as_me:$LINENO: checking whether new_sync_read/write() are available" >&5 $as_echo_n "checking whether new_sync_read/write() are available... " >&6; } if test -d build/new_sync_rw; then if test -f build/new_sync_rw/new_sync_rw.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_NEW_SYNC_READ 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"new_sync_rw\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"new_sync_rw\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"file_operations_rw\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"file_operations_rw\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether generic_write_checks() takes kiocb" >&5 $as_echo_n "checking whether generic_write_checks() takes kiocb... " >&6; } if test -d build/generic_write_checks; then if test -f build/generic_write_checks/generic_write_checks.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_WRITE_CHECKS_KIOCB 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"generic_write_checks\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"generic_write_checks\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kmap_atomic wants 1 args" >&5 $as_echo_n "checking whether kmap_atomic wants 1 args... " >&6; } if test -d build/kmap_atomic; then if test -f build/kmap_atomic/kmap_atomic.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_1ARG_KMAP_ATOMIC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kmap_atomic\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kmap_atomic\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether follow_down_one() is available" >&5 $as_echo_n "checking whether follow_down_one() is available... " >&6; } if test -d build/follow_down_one; then if test -f build/follow_down_one/follow_down_one.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FOLLOW_DOWN_ONE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"follow_down_one\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"follow_down_one\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether make_request_fn() returns int" >&5 $as_echo_n "checking whether make_request_fn() returns int... " >&6; } if test -d build/make_request_fn_int; then if test -f build/make_request_fn_int/make_request_fn_int.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define MAKE_REQUEST_FN_RET int _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_MAKE_REQUEST_FN_RET_INT 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether make_request_fn() returns void" >&5 $as_echo_n "checking whether make_request_fn() returns void... " >&6; } if test -d build/make_request_fn_void; then if test -f build/make_request_fn_void/make_request_fn_void.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define MAKE_REQUEST_FN_RET void _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_MAKE_REQUEST_FN_RET_VOID 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether make_request_fn() returns blk_qc_t" >&5 $as_echo_n "checking whether make_request_fn() returns blk_qc_t... " >&6; } if test -d build/make_request_fn_blk_qc_t; then if test -f build/make_request_fn_blk_qc_t/make_request_fn_blk_qc_t.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define MAKE_REQUEST_FN_RET blk_qc_t _ACEOF cat >>confdefs.h <<\_ACEOF #define HAVE_MAKE_REQUEST_FN_RET_QC 1 _ACEOF else { { $as_echo "$as_me:$LINENO: error: *** None of the expected \"make_request_fn\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&5 $as_echo "$as_me: error: *** None of the expected \"make_request_fn\" interfaces were detected. *** This may be because your kernel version is newer than what is *** supported, or you are using a patched custom kernel with *** incompatible modifications. *** *** ZFS Version: $ZFS_META_ALIAS *** Compatible Kernels: $ZFS_META_KVER_MIN - $ZFS_META_KVER_MAX " >&2;} { (exit 1); exit 1; }; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"make_request_fn_blk_qc_t\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"make_request_fn_blk_qc_t\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"make_request_fn_void\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"make_request_fn_void\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"make_request_fn_int\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"make_request_fn_int\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether generic IO accounting wants 3 args" >&5 $as_echo_n "checking whether generic IO accounting wants 3 args... " >&6; } if ! test -f build/generic_acct_3args/generic_acct_3args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether generic IO accounting wants 4 args" >&5 $as_echo_n "checking whether generic IO accounting wants 4 args... " >&6; } if ! test -f build/generic_acct_4args/generic_acct_4args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]generic_start_io_acct[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in block/bio.c; do grep -q -E "EXPORT_SYMBOL.*(generic_start_io_acct)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]generic_start_io_acct[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in block/bio.c; do grep -q -E "EXPORT_SYMBOL.*(generic_start_io_acct)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } { $as_echo "$as_me:$LINENO: checking whether generic IO accounting wants 4 args" >&5 $as_echo_n "checking whether generic IO accounting wants 4 args... " >&6; } if ! test -f build/generic_acct_4args/generic_acct_4args.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]generic_start_io_acct[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in block/bio.c; do grep -q -E "EXPORT_SYMBOL.*(generic_start_io_acct)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_4ARG 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_3ARG 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_3ARG 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_GENERIC_IO_ACCT_3ARG 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether kernel fpu is available" >&5 $as_echo_n "checking whether kernel fpu is available... " >&6; } if ! test -f build/kernel_fpu_license/kernel_fpu_license.ko; then if ! test -f build/__kernel_fpu_license/__kernel_fpu_license.ko; then if test -d build/fpu_internal; then if test -f build/fpu_internal/fpu_internal.ko; then { $as_echo "$as_me:$LINENO: result: internal" >&5 $as_echo "internal" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_INTERNAL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: unavailable" >&5 $as_echo "unavailable" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]__kernel_fpu_begin[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in arch/x86/kernel/fpu/core.c arch/x86/kernel/i387.c; do grep -q -E "EXPORT_SYMBOL.*(__kernel_fpu_begin)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : if test -d build/fpu_internal; then if test -f build/fpu_internal/fpu_internal.ko; then { $as_echo "$as_me:$LINENO: result: internal" >&5 $as_echo "internal" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_INTERNAL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: unavailable" >&5 $as_echo "unavailable" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else : { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]kernel_fpu_begin[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in arch/x86/kernel/fpu/core.c; do grep -q -E "EXPORT_SYMBOL.*(kernel_fpu_begin)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : if ! test -f build/__kernel_fpu_license/__kernel_fpu_license.ko; then if test -d build/fpu_internal; then if test -f build/fpu_internal/fpu_internal.ko; then { $as_echo "$as_me:$LINENO: result: internal" >&5 $as_echo "internal" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_INTERNAL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: unavailable" >&5 $as_echo "unavailable" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]__kernel_fpu_begin[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in arch/x86/kernel/fpu/core.c arch/x86/kernel/i387.c; do grep -q -E "EXPORT_SYMBOL.*(__kernel_fpu_begin)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : if test -d build/fpu_internal; then if test -f build/fpu_internal/fpu_internal.ko; then { $as_echo "$as_me:$LINENO: result: internal" >&5 $as_echo "internal" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU_INTERNAL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: unavailable" >&5 $as_echo "unavailable" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"fpu_internal\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else : { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: __kernel_fpu_*" >&5 $as_echo "__kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_UNDERSCORE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi fi else : { $as_echo "$as_me:$LINENO: result: kernel_fpu_*" >&5 $as_echo "kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: kernel_fpu_*" >&5 $as_echo "kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: kernel_fpu_*" >&5 $as_echo "kernel_fpu_*" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KERNEL_FPU 1 _ACEOF cat >>confdefs.h <<\_ACEOF #define KERNEL_EXPORTS_X86_FPU 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether kernel defines fmode_t" >&5 $as_echo_n "checking whether kernel defines fmode_t... " >&6; } if test -d build/type_fmode_t; then if test -f build/type_fmode_t/type_fmode_t.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_FMODE_T 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"type_fmode_t\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"type_fmode_t\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kuid_t/kgid_t is available" >&5 $as_echo_n "checking whether kuid_t/kgid_t is available... " >&6; } if test -d build/kuidgid_t_init; then if test -f build/kuidgid_t_init/kuidgid_t_init.ko; then if test -d build/kuidgid_t; then if test -f build/kuidgid_t/kuidgid_t.ko; then { $as_echo "$as_me:$LINENO: result: yes; optional" >&5 $as_echo "yes; optional" >&6; } else { $as_echo "$as_me:$LINENO: result: yes; mandatory" >&5 $as_echo "yes; mandatory" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KUIDGID_T 1 _ACEOF fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kuidgid_t\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kuidgid_t\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kuidgid_t_init\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kuidgid_t_init\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether i_(uid|gid)_(read|write) exist" >&5 $as_echo_n "checking whether i_(uid|gid)_(read|write) exist... " >&6; } if test -d build/i_uid_read; then if test -f build/i_uid_read/i_uid_read.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KUID_HELPERS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"i_uid_read\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"i_uid_read\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether module_param_call() is hardened" >&5 $as_echo_n "checking whether module_param_call() is hardened... " >&6; } if test -d build/module_param_call; then if test -f build/module_param_call/module_param_call.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define MODULE_PARAM_CALL_CONST 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"module_param_call\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"module_param_call\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether iops->rename() wants flags" >&5 $as_echo_n "checking whether iops->rename() wants flags... " >&6; } if test -d build/inode_operations_rename; then if test -f build/inode_operations_rename/inode_operations_rename.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_RENAME_WANTS_FLAGS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"inode_operations_rename\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"inode_operations_rename\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether current_time() exists" >&5 $as_echo_n "checking whether current_time() exists... " >&6; } if ! test -f build/current_time/current_time.ko; then { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else if test "x$enable_linux_builtin" != "xyes"; then grep -q -E '[[:space:]]current_time[[:space:]]' \ $LINUX_OBJ/$LINUX_SYMBOLS 2>/dev/null rc=$? if test $rc -ne 0; then export=0 for file in fs/inode.c; do grep -q -E "EXPORT_SYMBOL.*(current_time)" \ "$LINUX/$file" 2>/dev/null rc=$? if test $rc -eq 0; then export=1 break; fi done if test $export -eq 0; then : { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_TIME 1 _ACEOF fi else : { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_TIME 1 _ACEOF fi else { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CURRENT_TIME 1 _ACEOF fi fi { $as_echo "$as_me:$LINENO: checking whether ns_capable exists" >&5 $as_echo_n "checking whether ns_capable exists... " >&6; } if test -d build/ns_capable; then if test -f build/ns_capable/ns_capable.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_NS_CAPABLE 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"ns_capable\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"ns_capable\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether cred_t->user_ns exists" >&5 $as_echo_n "checking whether cred_t->user_ns exists... " >&6; } if test -d build/cred_user_ns; then if test -f build/cred_user_ns/cred_user_ns.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_CRED_USER_NS 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"cred_user_ns\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"cred_user_ns\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kuid_has_mapping/kgid_has_mapping exist" >&5 $as_echo_n "checking whether kuid_has_mapping/kgid_has_mapping exist... " >&6; } if test -d build/kuid_has_mapping; then if test -f build/kuid_has_mapping/kuid_has_mapping.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KUID_HAS_MAPPING 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kuid_has_mapping\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kuid_has_mapping\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether in_compat_syscall() is available" >&5 $as_echo_n "checking whether in_compat_syscall() is available... " >&6; } if test -d build/in_compat_syscall; then if test -f build/in_compat_syscall/in_compat_syscall.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_IN_COMPAT_SYSCALL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"in_compat_syscall\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"in_compat_syscall\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether ktime_get_coarse_real_ts64() exists" >&5 $as_echo_n "checking whether ktime_get_coarse_real_ts64() exists... " >&6; } if test -d build/ktime_get_coarse_real_ts64; then if test -f build/ktime_get_coarse_real_ts64/ktime_get_coarse_real_ts64.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KTIME_GET_COARSE_REAL_TS64 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"ktime_get_coarse_real_ts64\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"ktime_get_coarse_real_ts64\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether totalram_pages() exists" >&5 $as_echo_n "checking whether totalram_pages() exists... " >&6; } if test -d build/totalram_pages; then if test -f build/totalram_pages/totalram_pages.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TOTALRAM_PAGES_FUNC 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"totalram_pages\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"totalram_pages\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether totalhigh_pages() exists" >&5 $as_echo_n "checking whether totalhigh_pages() exists... " >&6; } if test -d build/totalhigh_pages; then if test -f build/totalhigh_pages/totalhigh_pages.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_TOTALHIGH_PAGES 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"totalhigh_pages\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"totalhigh_pages\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: checking whether kstrtoul() exists" >&5 $as_echo_n "checking whether kstrtoul() exists... " >&6; } if test -d build/kstrtoul; then if test -f build/kstrtoul/kstrtoul.ko; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<\_ACEOF #define HAVE_KSTRTOUL 1 _ACEOF else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else { { $as_echo "$as_me:$LINENO: error: *** No matching source for the \"kstrtoul\" test, check that *** both the test source and result macros refer to the same name. " >&5 $as_echo "$as_me: error: *** No matching source for the \"kstrtoul\" test, check that *** both the test source and result macros refer to the same name. " >&2;} { (exit 1); exit 1; }; } fi if test "$LINUX_OBJ" != "$LINUX"; then KERNEL_MAKE="$KERNEL_MAKE O=$LINUX_OBJ" fi ;; srpm) ;; *) { $as_echo "$as_me:$LINENO: result: Error!" >&5 $as_echo "Error!" >&6; } { { $as_echo "$as_me:$LINENO: error: Bad value \"$ZFS_CONFIG\" for --with-config, user kernel|user|all|srpm" >&5 $as_echo "$as_me: error: Bad value \"$ZFS_CONFIG\" for --with-config, user kernel|user|all|srpm" >&2;} { (exit 1); exit 1; }; } ;; esac if test "$ZFS_CONFIG" = user -o "$ZFS_CONFIG" = all; then CONFIG_USER_TRUE= CONFIG_USER_FALSE='#' else CONFIG_USER_TRUE='#' CONFIG_USER_FALSE= fi if test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all && test "x$enable_linux_builtin" != xyes ; then CONFIG_KERNEL_TRUE= CONFIG_KERNEL_FALSE='#' else CONFIG_KERNEL_TRUE='#' CONFIG_KERNEL_FALSE= fi if test "$ZFS_CONFIG" = kernel -o "$ZFS_CONFIG" = all && test "x$qatsrc" != x ; then CONFIG_QAT_TRUE= CONFIG_QAT_FALSE='#' else CONFIG_QAT_TRUE='#' CONFIG_QAT_FALSE= fi if test "x$user_libudev" = xyes ; then WANT_DEVNAME2DEVID_TRUE= WANT_DEVNAME2DEVID_FALSE='#' else WANT_DEVNAME2DEVID_TRUE='#' WANT_DEVNAME2DEVID_FALSE= fi if test "x$user_libaio" = xyes ; then WANT_MMAP_LIBAIO_TRUE= WANT_MMAP_LIBAIO_FALSE='#' else WANT_MMAP_LIBAIO_TRUE='#' WANT_MMAP_LIBAIO_FALSE= fi { $as_echo "$as_me:$LINENO: checking whether assertion support will be enabled" >&5 $as_echo_n "checking whether assertion support will be enabled... " >&6; } # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then enableval=$enable_debug; else enable_debug=no fi case "x$enable_debug" in "xyes") DEBUG_CFLAGS="-Werror" DEBUG_CPPFLAGS="-DDEBUG -UNDEBUG" DEBUG_LDFLAGS="" DEBUG_ZFS="_with_debug" cat >>confdefs.h <<\_ACEOF #define ZFS_DEBUG 1 _ACEOF KERNEL_DEBUG_CFLAGS="-Werror" KERNEL_DEBUG_CPPFLAGS="-DDEBUG -UNDEBUG" ;; "xno") DEBUG_CFLAGS="" DEBUG_CPPFLAGS="-UDEBUG -DNDEBUG" DEBUG_LDFLAGS="" DEBUG_ZFS="_without_debug" KERNEL_DEBUG_CFLAGS="" KERNEL_DEBUG_CPPFLAGS="-UDEBUG -DNDEBUG" ;; *) { { $as_echo "$as_me:$LINENO: error: Unknown option $enable_debug" >&5 $as_echo "$as_me: error: Unknown option $enable_debug" >&2;} { (exit 1); exit 1; }; } ;; esac { $as_echo "$as_me:$LINENO: result: $enable_debug" >&5 $as_echo "$enable_debug" >&6; } { $as_echo "$as_me:$LINENO: checking whether debuginfo support will be forced" >&5 $as_echo_n "checking whether debuginfo support will be forced... " >&6; } # Check whether --enable-debuginfo was given. if test "${enable_debuginfo+set}" = set; then enableval=$enable_debuginfo; else enable_debuginfo=no fi case "x$enable_debuginfo" in "xyes") DEBUG_CFLAGS="$DEBUG_CFLAGS -g -fno-inline" KERNEL_DEBUG_CFLAGS="$KERNEL_DEBUG_CFLAGS -fno-inline" KERNEL_MAKE="$KERNEL_MAKE CONFIG_DEBUG_INFO=y" DEBUGINFO_ZFS="_with_debuginfo" ;; "xno") DEBUGINFO_ZFS="_without_debuginfo" ;; *) { { $as_echo "$as_me:$LINENO: error: Unknown option $enable_debuginfo" >&5 $as_echo "$as_me: error: Unknown option $enable_debuginfo" >&2;} { (exit 1); exit 1; }; } ;; esac { $as_echo "$as_me:$LINENO: result: $enable_debuginfo" >&5 $as_echo "$enable_debuginfo" >&6; } { $as_echo "$as_me:$LINENO: checking whether basic kmem accounting is enabled" >&5 $as_echo_n "checking whether basic kmem accounting is enabled... " >&6; } # Check whether --enable-debug-kmem was given. if test "${enable_debug_kmem+set}" = set; then enableval=$enable_debug_kmem; else enable_debug_kmem=no fi if test "x$enable_debug_kmem" = xyes; then KERNEL_DEBUG_CPPFLAGS+=" -DDEBUG_KMEM" DEBUG_KMEM_ZFS="_with_debug_kmem" else DEBUG_KMEM_ZFS="_without_debug_kmem" fi { $as_echo "$as_me:$LINENO: result: $enable_debug_kmem" >&5 $as_echo "$enable_debug_kmem" >&6; } { $as_echo "$as_me:$LINENO: checking whether detailed kmem tracking is enabled" >&5 $as_echo_n "checking whether detailed kmem tracking is enabled... " >&6; } # Check whether --enable-debug-kmem-tracking was given. if test "${enable_debug_kmem_tracking+set}" = set; then enableval=$enable_debug_kmem_tracking; else enable_debug_kmem_tracking=no fi if test "x$enable_debug_kmem_tracking" = xyes; then KERNEL_DEBUG_CPPFLAGS+=" -DDEBUG_KMEM_TRACKING" DEBUG_KMEM_TRACKING_ZFS="_with_debug_kmem_tracking" else DEBUG_KMEM_TRACKING_ZFS="_without_debug_kmem_tracking" fi { $as_echo "$as_me:$LINENO: result: $enable_debug_kmem_tracking" >&5 $as_echo "$enable_debug_kmem_tracking" >&6; } ac_config_files="$ac_config_files Makefile udev/Makefile udev/rules.d/Makefile etc/Makefile etc/init.d/Makefile etc/zfs/Makefile etc/systemd/Makefile etc/systemd/system/Makefile etc/systemd/system-generators/Makefile etc/sudoers.d/Makefile etc/modules-load.d/Makefile man/Makefile man/man1/Makefile man/man5/Makefile man/man8/Makefile lib/Makefile lib/libspl/Makefile lib/libspl/asm-generic/Makefile lib/libspl/asm-i386/Makefile lib/libspl/asm-x86_64/Makefile lib/libspl/include/Makefile lib/libspl/include/ia32/Makefile lib/libspl/include/ia32/sys/Makefile lib/libspl/include/rpc/Makefile lib/libspl/include/sys/Makefile lib/libspl/include/sys/dktp/Makefile lib/libspl/include/util/Makefile lib/libavl/Makefile lib/libefi/Makefile lib/libicp/Makefile lib/libnvpair/Makefile lib/libzutil/Makefile lib/libtpool/Makefile lib/libunicode/Makefile lib/libuutil/Makefile lib/libzpool/Makefile lib/libzfs/libzfs.pc lib/libzfs/libzfs_core.pc lib/libzfs/Makefile lib/libzfs_core/Makefile lib/libshare/Makefile cmd/Makefile cmd/zdb/Makefile cmd/zhack/Makefile cmd/zfs/Makefile cmd/zinject/Makefile cmd/zpool/Makefile cmd/zstreamdump/Makefile cmd/ztest/Makefile cmd/mount_zfs/Makefile cmd/fsck_zfs/Makefile cmd/zvol_id/Makefile cmd/vdev_id/Makefile cmd/arcstat/Makefile cmd/dbufstat/Makefile cmd/arc_summary/Makefile cmd/zed/Makefile cmd/zed/zed.d/Makefile cmd/raidz_test/Makefile cmd/zgenhostid/Makefile cmd/zvol_wait/Makefile contrib/Makefile contrib/bash_completion.d/Makefile contrib/dracut/Makefile contrib/dracut/02zfsexpandknowledge/Makefile contrib/dracut/90zfs/Makefile contrib/initramfs/Makefile contrib/initramfs/hooks/Makefile contrib/initramfs/scripts/Makefile contrib/initramfs/scripts/local-top/Makefile contrib/pyzfs/Makefile contrib/pyzfs/setup.py contrib/zcp/Makefile module/Makefile module/avl/Makefile module/nvpair/Makefile module/unicode/Makefile module/zcommon/Makefile module/zfs/Makefile module/lua/Makefile module/icp/Makefile module/spl/Makefile include/Makefile include/linux/Makefile include/spl/Makefile include/spl/rpc/Makefile include/spl/sys/Makefile include/sys/Makefile include/sys/fs/Makefile include/sys/fm/Makefile include/sys/fm/fs/Makefile include/sys/crypto/Makefile include/sys/sysevent/Makefile include/sys/lua/Makefile scripts/Makefile tests/Makefile tests/test-runner/Makefile tests/test-runner/bin/Makefile tests/test-runner/include/Makefile tests/test-runner/man/Makefile tests/runfiles/Makefile tests/zfs-tests/Makefile tests/zfs-tests/callbacks/Makefile tests/zfs-tests/cmd/Makefile tests/zfs-tests/cmd/chg_usr_exec/Makefile tests/zfs-tests/cmd/user_ns_exec/Makefile tests/zfs-tests/cmd/devname2devid/Makefile tests/zfs-tests/cmd/dir_rd_update/Makefile tests/zfs-tests/cmd/file_check/Makefile tests/zfs-tests/cmd/file_trunc/Makefile tests/zfs-tests/cmd/file_write/Makefile tests/zfs-tests/cmd/largest_file/Makefile tests/zfs-tests/cmd/libzfs_input_check/Makefile tests/zfs-tests/cmd/mkbusy/Makefile tests/zfs-tests/cmd/mkfile/Makefile tests/zfs-tests/cmd/mkfiles/Makefile tests/zfs-tests/cmd/mktree/Makefile tests/zfs-tests/cmd/mmap_exec/Makefile tests/zfs-tests/cmd/mmap_libaio/Makefile tests/zfs-tests/cmd/mmapwrite/Makefile tests/zfs-tests/cmd/nvlist_to_lua/Makefile tests/zfs-tests/cmd/randfree_file/Makefile tests/zfs-tests/cmd/randwritecomp/Makefile tests/zfs-tests/cmd/readmmap/Makefile tests/zfs-tests/cmd/rename_dir/Makefile tests/zfs-tests/cmd/rm_lnkcnt_zero_file/Makefile tests/zfs-tests/cmd/threadsappend/Makefile tests/zfs-tests/cmd/xattrtest/Makefile tests/zfs-tests/include/Makefile tests/zfs-tests/tests/Makefile tests/zfs-tests/tests/functional/Makefile tests/zfs-tests/tests/functional/acl/Makefile tests/zfs-tests/tests/functional/acl/posix/Makefile tests/zfs-tests/tests/functional/arc/Makefile tests/zfs-tests/tests/functional/atime/Makefile tests/zfs-tests/tests/functional/bootfs/Makefile tests/zfs-tests/tests/functional/cache/Makefile tests/zfs-tests/tests/functional/cachefile/Makefile tests/zfs-tests/tests/functional/casenorm/Makefile tests/zfs-tests/tests/functional/checksum/Makefile tests/zfs-tests/tests/functional/channel_program/Makefile tests/zfs-tests/tests/functional/channel_program/lua_core/Makefile tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile tests/zfs-tests/tests/functional/chattr/Makefile tests/zfs-tests/tests/functional/clean_mirror/Makefile tests/zfs-tests/tests/functional/cli_root/Makefile tests/zfs-tests/tests/functional/cli_root/zdb/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_change-key/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_clone/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_copies/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_create/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_destroy/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_diff/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_get/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_inherit/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_load-key/Makefile tests/zfs-tests/tests/functional/cli_root/zfs/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_program/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_promote/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_property/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_receive/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_remap/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_rename/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_reservation/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_rollback/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_send/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_set/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_share/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_unmount/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_unshare/Makefile tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_add/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_attach/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_clear/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_create/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_destroy/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_detach/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_events/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_expand/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_export/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_get/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_history/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/Makefile tests/zfs-tests/tests/functional/cli_root/zpool/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_offline/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_online/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_remove/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_reopen/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_resilver/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_replace/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_set/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_split/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_status/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_sync/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/Makefile tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/Makefile tests/zfs-tests/tests/functional/cli_user/Makefile tests/zfs-tests/tests/functional/cli_user/misc/Makefile tests/zfs-tests/tests/functional/cli_user/zfs_list/Makefile tests/zfs-tests/tests/functional/cli_user/zpool_iostat/Makefile tests/zfs-tests/tests/functional/cli_user/zpool_list/Makefile tests/zfs-tests/tests/functional/cli_user/zpool_status/Makefile tests/zfs-tests/tests/functional/compression/Makefile tests/zfs-tests/tests/functional/cp_files/Makefile tests/zfs-tests/tests/functional/ctime/Makefile tests/zfs-tests/tests/functional/deadman/Makefile tests/zfs-tests/tests/functional/delegate/Makefile tests/zfs-tests/tests/functional/devices/Makefile tests/zfs-tests/tests/functional/events/Makefile tests/zfs-tests/tests/functional/exec/Makefile tests/zfs-tests/tests/functional/fault/Makefile tests/zfs-tests/tests/functional/features/async_destroy/Makefile tests/zfs-tests/tests/functional/features/large_dnode/Makefile tests/zfs-tests/tests/functional/features/Makefile tests/zfs-tests/tests/functional/grow/Makefile tests/zfs-tests/tests/functional/history/Makefile tests/zfs-tests/tests/functional/hkdf/Makefile tests/zfs-tests/tests/functional/inheritance/Makefile tests/zfs-tests/tests/functional/inuse/Makefile tests/zfs-tests/tests/functional/io/Makefile tests/zfs-tests/tests/functional/large_files/Makefile tests/zfs-tests/tests/functional/largest_pool/Makefile tests/zfs-tests/tests/functional/link_count/Makefile tests/zfs-tests/tests/functional/libzfs/Makefile tests/zfs-tests/tests/functional/limits/Makefile tests/zfs-tests/tests/functional/migration/Makefile tests/zfs-tests/tests/functional/mmap/Makefile tests/zfs-tests/tests/functional/mmp/Makefile tests/zfs-tests/tests/functional/mount/Makefile tests/zfs-tests/tests/functional/mv_files/Makefile tests/zfs-tests/tests/functional/nestedfs/Makefile tests/zfs-tests/tests/functional/no_space/Makefile tests/zfs-tests/tests/functional/nopwrite/Makefile tests/zfs-tests/tests/functional/online_offline/Makefile tests/zfs-tests/tests/functional/pool_names/Makefile tests/zfs-tests/tests/functional/pool_checkpoint/Makefile tests/zfs-tests/tests/functional/poolversion/Makefile tests/zfs-tests/tests/functional/privilege/Makefile tests/zfs-tests/tests/functional/procfs/Makefile tests/zfs-tests/tests/functional/projectquota/Makefile tests/zfs-tests/tests/functional/pyzfs/Makefile tests/zfs-tests/tests/functional/quota/Makefile tests/zfs-tests/tests/functional/raidz/Makefile tests/zfs-tests/tests/functional/redundancy/Makefile tests/zfs-tests/tests/functional/refquota/Makefile tests/zfs-tests/tests/functional/refreserv/Makefile tests/zfs-tests/tests/functional/removal/Makefile tests/zfs-tests/tests/functional/rename_dirs/Makefile tests/zfs-tests/tests/functional/replacement/Makefile tests/zfs-tests/tests/functional/reservation/Makefile tests/zfs-tests/tests/functional/resilver/Makefile tests/zfs-tests/tests/functional/rootpool/Makefile tests/zfs-tests/tests/functional/rsend/Makefile tests/zfs-tests/tests/functional/scrub_mirror/Makefile tests/zfs-tests/tests/functional/slog/Makefile tests/zfs-tests/tests/functional/snapshot/Makefile tests/zfs-tests/tests/functional/snapused/Makefile tests/zfs-tests/tests/functional/sparse/Makefile tests/zfs-tests/tests/functional/suid/Makefile tests/zfs-tests/tests/functional/alloc_class/Makefile tests/zfs-tests/tests/functional/threadsappend/Makefile tests/zfs-tests/tests/functional/tmpfile/Makefile tests/zfs-tests/tests/functional/trim/Makefile tests/zfs-tests/tests/functional/truncate/Makefile tests/zfs-tests/tests/functional/user_namespace/Makefile tests/zfs-tests/tests/functional/userquota/Makefile tests/zfs-tests/tests/functional/upgrade/Makefile tests/zfs-tests/tests/functional/vdev_zaps/Makefile tests/zfs-tests/tests/functional/write_dirs/Makefile tests/zfs-tests/tests/functional/xattr/Makefile tests/zfs-tests/tests/functional/zvol/Makefile tests/zfs-tests/tests/functional/zvol/zvol_cli/Makefile tests/zfs-tests/tests/functional/zvol/zvol_ENOSPC/Makefile tests/zfs-tests/tests/functional/zvol/zvol_misc/Makefile tests/zfs-tests/tests/functional/zvol/zvol_swap/Makefile tests/zfs-tests/tests/perf/Makefile tests/zfs-tests/tests/perf/fio/Makefile tests/zfs-tests/tests/perf/regression/Makefile tests/zfs-tests/tests/perf/scripts/Makefile tests/zfs-tests/tests/stress/Makefile rpm/Makefile rpm/redhat/Makefile rpm/redhat/zfs.spec rpm/redhat/zfs-kmod.spec rpm/redhat/zfs-dkms.spec rpm/generic/Makefile rpm/generic/zfs.spec rpm/generic/zfs-kmod.spec rpm/generic/zfs-dkms.spec zfs.release" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCCAS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${CODE_COVERAGE_ENABLED_TRUE}" && test -z "${CODE_COVERAGE_ENABLED_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"CODE_COVERAGE_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"CODE_COVERAGE_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${ASAN_ENABLED_TRUE}" && test -z "${ASAN_ENABLED_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"ASAN_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"ASAN_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${TARGET_ASM_X86_64_TRUE}" && test -z "${TARGET_ASM_X86_64_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"TARGET_ASM_X86_64\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"TARGET_ASM_X86_64\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${TARGET_ASM_I386_TRUE}" && test -z "${TARGET_ASM_I386_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"TARGET_ASM_I386\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"TARGET_ASM_I386\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${TARGET_ASM_GENERIC_TRUE}" && test -z "${TARGET_ASM_GENERIC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"TARGET_ASM_GENERIC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"TARGET_ASM_GENERIC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${USING_PYTHON_TRUE}" && test -z "${USING_PYTHON_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"USING_PYTHON\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"USING_PYTHON\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${USING_PYTHON_2_TRUE}" && test -z "${USING_PYTHON_2_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"USING_PYTHON_2\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"USING_PYTHON_2\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${USING_PYTHON_3_TRUE}" && test -z "${USING_PYTHON_3_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"USING_PYTHON_3\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"USING_PYTHON_3\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${PYZFS_ENABLED_TRUE}" && test -z "${PYZFS_ENABLED_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"PYZFS_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"PYZFS_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${CONFIG_USER_TRUE}" && test -z "${CONFIG_USER_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"CONFIG_USER\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"CONFIG_USER\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${CONFIG_KERNEL_TRUE}" && test -z "${CONFIG_KERNEL_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"CONFIG_KERNEL\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"CONFIG_KERNEL\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${CONFIG_QAT_TRUE}" && test -z "${CONFIG_QAT_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"CONFIG_QAT\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"CONFIG_QAT\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${WANT_DEVNAME2DEVID_TRUE}" && test -z "${WANT_DEVNAME2DEVID_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"WANT_DEVNAME2DEVID\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"WANT_DEVNAME2DEVID\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${WANT_MMAP_LIBAIO_TRUE}" && test -z "${WANT_MMAP_LIBAIO_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"WANT_MMAP_LIBAIO\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"WANT_MMAP_LIBAIO\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by zfs $as_me 0.8.3, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ zfs config.status 0.8.3 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS" # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "zfs_config.h") CONFIG_HEADERS="$CONFIG_HEADERS zfs_config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "udev/Makefile") CONFIG_FILES="$CONFIG_FILES udev/Makefile" ;; "udev/rules.d/Makefile") CONFIG_FILES="$CONFIG_FILES udev/rules.d/Makefile" ;; "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; "etc/init.d/Makefile") CONFIG_FILES="$CONFIG_FILES etc/init.d/Makefile" ;; "etc/zfs/Makefile") CONFIG_FILES="$CONFIG_FILES etc/zfs/Makefile" ;; "etc/systemd/Makefile") CONFIG_FILES="$CONFIG_FILES etc/systemd/Makefile" ;; "etc/systemd/system/Makefile") CONFIG_FILES="$CONFIG_FILES etc/systemd/system/Makefile" ;; "etc/systemd/system-generators/Makefile") CONFIG_FILES="$CONFIG_FILES etc/systemd/system-generators/Makefile" ;; "etc/sudoers.d/Makefile") CONFIG_FILES="$CONFIG_FILES etc/sudoers.d/Makefile" ;; "etc/modules-load.d/Makefile") CONFIG_FILES="$CONFIG_FILES etc/modules-load.d/Makefile" ;; "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; "man/man1/Makefile") CONFIG_FILES="$CONFIG_FILES man/man1/Makefile" ;; "man/man5/Makefile") CONFIG_FILES="$CONFIG_FILES man/man5/Makefile" ;; "man/man8/Makefile") CONFIG_FILES="$CONFIG_FILES man/man8/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; "lib/libspl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/Makefile" ;; "lib/libspl/asm-generic/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/asm-generic/Makefile" ;; "lib/libspl/asm-i386/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/asm-i386/Makefile" ;; "lib/libspl/asm-x86_64/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/asm-x86_64/Makefile" ;; "lib/libspl/include/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/Makefile" ;; "lib/libspl/include/ia32/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/ia32/Makefile" ;; "lib/libspl/include/ia32/sys/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/ia32/sys/Makefile" ;; "lib/libspl/include/rpc/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/rpc/Makefile" ;; "lib/libspl/include/sys/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/sys/Makefile" ;; "lib/libspl/include/sys/dktp/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/sys/dktp/Makefile" ;; "lib/libspl/include/util/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libspl/include/util/Makefile" ;; "lib/libavl/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libavl/Makefile" ;; "lib/libefi/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libefi/Makefile" ;; "lib/libicp/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libicp/Makefile" ;; "lib/libnvpair/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libnvpair/Makefile" ;; "lib/libzutil/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libzutil/Makefile" ;; "lib/libtpool/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libtpool/Makefile" ;; "lib/libunicode/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libunicode/Makefile" ;; "lib/libuutil/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libuutil/Makefile" ;; "lib/libzpool/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libzpool/Makefile" ;; "lib/libzfs/libzfs.pc") CONFIG_FILES="$CONFIG_FILES lib/libzfs/libzfs.pc" ;; "lib/libzfs/libzfs_core.pc") CONFIG_FILES="$CONFIG_FILES lib/libzfs/libzfs_core.pc" ;; "lib/libzfs/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libzfs/Makefile" ;; "lib/libzfs_core/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libzfs_core/Makefile" ;; "lib/libshare/Makefile") CONFIG_FILES="$CONFIG_FILES lib/libshare/Makefile" ;; "cmd/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/Makefile" ;; "cmd/zdb/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zdb/Makefile" ;; "cmd/zhack/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zhack/Makefile" ;; "cmd/zfs/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zfs/Makefile" ;; "cmd/zinject/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zinject/Makefile" ;; "cmd/zpool/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zpool/Makefile" ;; "cmd/zstreamdump/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zstreamdump/Makefile" ;; "cmd/ztest/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/ztest/Makefile" ;; "cmd/mount_zfs/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/mount_zfs/Makefile" ;; "cmd/fsck_zfs/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/fsck_zfs/Makefile" ;; "cmd/zvol_id/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zvol_id/Makefile" ;; "cmd/vdev_id/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/vdev_id/Makefile" ;; "cmd/arcstat/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/arcstat/Makefile" ;; "cmd/dbufstat/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/dbufstat/Makefile" ;; "cmd/arc_summary/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/arc_summary/Makefile" ;; "cmd/zed/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zed/Makefile" ;; "cmd/zed/zed.d/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zed/zed.d/Makefile" ;; "cmd/raidz_test/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/raidz_test/Makefile" ;; "cmd/zgenhostid/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zgenhostid/Makefile" ;; "cmd/zvol_wait/Makefile") CONFIG_FILES="$CONFIG_FILES cmd/zvol_wait/Makefile" ;; "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; "contrib/bash_completion.d/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/bash_completion.d/Makefile" ;; "contrib/dracut/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/dracut/Makefile" ;; "contrib/dracut/02zfsexpandknowledge/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/dracut/02zfsexpandknowledge/Makefile" ;; "contrib/dracut/90zfs/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/dracut/90zfs/Makefile" ;; "contrib/initramfs/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/initramfs/Makefile" ;; "contrib/initramfs/hooks/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/initramfs/hooks/Makefile" ;; "contrib/initramfs/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/initramfs/scripts/Makefile" ;; "contrib/initramfs/scripts/local-top/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/initramfs/scripts/local-top/Makefile" ;; "contrib/pyzfs/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/pyzfs/Makefile" ;; "contrib/pyzfs/setup.py") CONFIG_FILES="$CONFIG_FILES contrib/pyzfs/setup.py" ;; "contrib/zcp/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/zcp/Makefile" ;; "module/Makefile") CONFIG_FILES="$CONFIG_FILES module/Makefile" ;; "module/avl/Makefile") CONFIG_FILES="$CONFIG_FILES module/avl/Makefile" ;; "module/nvpair/Makefile") CONFIG_FILES="$CONFIG_FILES module/nvpair/Makefile" ;; "module/unicode/Makefile") CONFIG_FILES="$CONFIG_FILES module/unicode/Makefile" ;; "module/zcommon/Makefile") CONFIG_FILES="$CONFIG_FILES module/zcommon/Makefile" ;; "module/zfs/Makefile") CONFIG_FILES="$CONFIG_FILES module/zfs/Makefile" ;; "module/lua/Makefile") CONFIG_FILES="$CONFIG_FILES module/lua/Makefile" ;; "module/icp/Makefile") CONFIG_FILES="$CONFIG_FILES module/icp/Makefile" ;; "module/spl/Makefile") CONFIG_FILES="$CONFIG_FILES module/spl/Makefile" ;; "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; "include/linux/Makefile") CONFIG_FILES="$CONFIG_FILES include/linux/Makefile" ;; "include/spl/Makefile") CONFIG_FILES="$CONFIG_FILES include/spl/Makefile" ;; "include/spl/rpc/Makefile") CONFIG_FILES="$CONFIG_FILES include/spl/rpc/Makefile" ;; "include/spl/sys/Makefile") CONFIG_FILES="$CONFIG_FILES include/spl/sys/Makefile" ;; "include/sys/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/Makefile" ;; "include/sys/fs/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/fs/Makefile" ;; "include/sys/fm/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/fm/Makefile" ;; "include/sys/fm/fs/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/fm/fs/Makefile" ;; "include/sys/crypto/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/crypto/Makefile" ;; "include/sys/sysevent/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/sysevent/Makefile" ;; "include/sys/lua/Makefile") CONFIG_FILES="$CONFIG_FILES include/sys/lua/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/test-runner/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-runner/Makefile" ;; "tests/test-runner/bin/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-runner/bin/Makefile" ;; "tests/test-runner/include/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-runner/include/Makefile" ;; "tests/test-runner/man/Makefile") CONFIG_FILES="$CONFIG_FILES tests/test-runner/man/Makefile" ;; "tests/runfiles/Makefile") CONFIG_FILES="$CONFIG_FILES tests/runfiles/Makefile" ;; "tests/zfs-tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/Makefile" ;; "tests/zfs-tests/callbacks/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/callbacks/Makefile" ;; "tests/zfs-tests/cmd/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/Makefile" ;; "tests/zfs-tests/cmd/chg_usr_exec/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/chg_usr_exec/Makefile" ;; "tests/zfs-tests/cmd/user_ns_exec/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/user_ns_exec/Makefile" ;; "tests/zfs-tests/cmd/devname2devid/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/devname2devid/Makefile" ;; "tests/zfs-tests/cmd/dir_rd_update/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/dir_rd_update/Makefile" ;; "tests/zfs-tests/cmd/file_check/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/file_check/Makefile" ;; "tests/zfs-tests/cmd/file_trunc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/file_trunc/Makefile" ;; "tests/zfs-tests/cmd/file_write/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/file_write/Makefile" ;; "tests/zfs-tests/cmd/largest_file/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/largest_file/Makefile" ;; "tests/zfs-tests/cmd/libzfs_input_check/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/libzfs_input_check/Makefile" ;; "tests/zfs-tests/cmd/mkbusy/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/mkbusy/Makefile" ;; "tests/zfs-tests/cmd/mkfile/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/mkfile/Makefile" ;; "tests/zfs-tests/cmd/mkfiles/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/mkfiles/Makefile" ;; "tests/zfs-tests/cmd/mktree/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/mktree/Makefile" ;; "tests/zfs-tests/cmd/mmap_exec/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/mmap_exec/Makefile" ;; "tests/zfs-tests/cmd/mmap_libaio/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/mmap_libaio/Makefile" ;; "tests/zfs-tests/cmd/mmapwrite/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/mmapwrite/Makefile" ;; "tests/zfs-tests/cmd/nvlist_to_lua/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/nvlist_to_lua/Makefile" ;; "tests/zfs-tests/cmd/randfree_file/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/randfree_file/Makefile" ;; "tests/zfs-tests/cmd/randwritecomp/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/randwritecomp/Makefile" ;; "tests/zfs-tests/cmd/readmmap/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/readmmap/Makefile" ;; "tests/zfs-tests/cmd/rename_dir/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/rename_dir/Makefile" ;; "tests/zfs-tests/cmd/rm_lnkcnt_zero_file/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/rm_lnkcnt_zero_file/Makefile" ;; "tests/zfs-tests/cmd/threadsappend/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/threadsappend/Makefile" ;; "tests/zfs-tests/cmd/xattrtest/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/cmd/xattrtest/Makefile" ;; "tests/zfs-tests/include/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/include/Makefile" ;; "tests/zfs-tests/tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/Makefile" ;; "tests/zfs-tests/tests/functional/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/Makefile" ;; "tests/zfs-tests/tests/functional/acl/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/acl/Makefile" ;; "tests/zfs-tests/tests/functional/acl/posix/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/acl/posix/Makefile" ;; "tests/zfs-tests/tests/functional/arc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/arc/Makefile" ;; "tests/zfs-tests/tests/functional/atime/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/atime/Makefile" ;; "tests/zfs-tests/tests/functional/bootfs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/bootfs/Makefile" ;; "tests/zfs-tests/tests/functional/cache/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cache/Makefile" ;; "tests/zfs-tests/tests/functional/cachefile/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cachefile/Makefile" ;; "tests/zfs-tests/tests/functional/casenorm/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/casenorm/Makefile" ;; "tests/zfs-tests/tests/functional/checksum/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/checksum/Makefile" ;; "tests/zfs-tests/tests/functional/channel_program/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/channel_program/Makefile" ;; "tests/zfs-tests/tests/functional/channel_program/lua_core/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/channel_program/lua_core/Makefile" ;; "tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/channel_program/synctask_core/Makefile" ;; "tests/zfs-tests/tests/functional/chattr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/chattr/Makefile" ;; "tests/zfs-tests/tests/functional/clean_mirror/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/clean_mirror/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zdb/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zdb/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_change-key/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_change-key/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_clone/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_clone/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_copies/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_copies/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_create/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_create/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_destroy/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_destroy/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_diff/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_diff/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_get/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_get/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_inherit/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_inherit/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_load-key/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_load-key/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_program/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_program/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_promote/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_promote/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_property/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_property/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_receive/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_receive/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_remap/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_remap/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_rename/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_rename/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_reservation/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_reservation/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_rollback/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_rollback/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_send/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_send/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_set/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_set/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_share/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_share/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_unmount/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_unmount/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_unshare/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_unshare/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_add/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_add/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_attach/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_attach/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_clear/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_clear/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_create/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_create/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_destroy/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_destroy/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_detach/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_detach/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_events/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_events/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_expand/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_expand/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_export/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_export/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_get/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_get/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_history/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_history/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_offline/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_offline/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_online/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_online/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_remove/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_remove/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_reopen/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_reopen/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_resilver/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_resilver/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_replace/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_replace/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_set/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_set/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_split/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_split/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_status/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_status/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_sync/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_sync/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/Makefile" ;; "tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/Makefile" ;; "tests/zfs-tests/tests/functional/cli_user/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_user/Makefile" ;; "tests/zfs-tests/tests/functional/cli_user/misc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_user/misc/Makefile" ;; "tests/zfs-tests/tests/functional/cli_user/zfs_list/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_user/zfs_list/Makefile" ;; "tests/zfs-tests/tests/functional/cli_user/zpool_iostat/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_user/zpool_iostat/Makefile" ;; "tests/zfs-tests/tests/functional/cli_user/zpool_list/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_user/zpool_list/Makefile" ;; "tests/zfs-tests/tests/functional/cli_user/zpool_status/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cli_user/zpool_status/Makefile" ;; "tests/zfs-tests/tests/functional/compression/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/compression/Makefile" ;; "tests/zfs-tests/tests/functional/cp_files/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/cp_files/Makefile" ;; "tests/zfs-tests/tests/functional/ctime/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/ctime/Makefile" ;; "tests/zfs-tests/tests/functional/deadman/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/deadman/Makefile" ;; "tests/zfs-tests/tests/functional/delegate/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/delegate/Makefile" ;; "tests/zfs-tests/tests/functional/devices/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/devices/Makefile" ;; "tests/zfs-tests/tests/functional/events/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/events/Makefile" ;; "tests/zfs-tests/tests/functional/exec/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/exec/Makefile" ;; "tests/zfs-tests/tests/functional/fault/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/fault/Makefile" ;; "tests/zfs-tests/tests/functional/features/async_destroy/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/features/async_destroy/Makefile" ;; "tests/zfs-tests/tests/functional/features/large_dnode/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/features/large_dnode/Makefile" ;; "tests/zfs-tests/tests/functional/features/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/features/Makefile" ;; "tests/zfs-tests/tests/functional/grow/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/grow/Makefile" ;; "tests/zfs-tests/tests/functional/history/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/history/Makefile" ;; "tests/zfs-tests/tests/functional/hkdf/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/hkdf/Makefile" ;; "tests/zfs-tests/tests/functional/inheritance/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/inheritance/Makefile" ;; "tests/zfs-tests/tests/functional/inuse/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/inuse/Makefile" ;; "tests/zfs-tests/tests/functional/io/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/io/Makefile" ;; "tests/zfs-tests/tests/functional/large_files/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/large_files/Makefile" ;; "tests/zfs-tests/tests/functional/largest_pool/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/largest_pool/Makefile" ;; "tests/zfs-tests/tests/functional/link_count/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/link_count/Makefile" ;; "tests/zfs-tests/tests/functional/libzfs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/libzfs/Makefile" ;; "tests/zfs-tests/tests/functional/limits/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/limits/Makefile" ;; "tests/zfs-tests/tests/functional/migration/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/migration/Makefile" ;; "tests/zfs-tests/tests/functional/mmap/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/mmap/Makefile" ;; "tests/zfs-tests/tests/functional/mmp/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/mmp/Makefile" ;; "tests/zfs-tests/tests/functional/mount/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/mount/Makefile" ;; "tests/zfs-tests/tests/functional/mv_files/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/mv_files/Makefile" ;; "tests/zfs-tests/tests/functional/nestedfs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/nestedfs/Makefile" ;; "tests/zfs-tests/tests/functional/no_space/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/no_space/Makefile" ;; "tests/zfs-tests/tests/functional/nopwrite/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/nopwrite/Makefile" ;; "tests/zfs-tests/tests/functional/online_offline/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/online_offline/Makefile" ;; "tests/zfs-tests/tests/functional/pool_names/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/pool_names/Makefile" ;; "tests/zfs-tests/tests/functional/pool_checkpoint/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/pool_checkpoint/Makefile" ;; "tests/zfs-tests/tests/functional/poolversion/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/poolversion/Makefile" ;; "tests/zfs-tests/tests/functional/privilege/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/privilege/Makefile" ;; "tests/zfs-tests/tests/functional/procfs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/procfs/Makefile" ;; "tests/zfs-tests/tests/functional/projectquota/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/projectquota/Makefile" ;; "tests/zfs-tests/tests/functional/pyzfs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/pyzfs/Makefile" ;; "tests/zfs-tests/tests/functional/quota/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/quota/Makefile" ;; "tests/zfs-tests/tests/functional/raidz/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/raidz/Makefile" ;; "tests/zfs-tests/tests/functional/redundancy/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/redundancy/Makefile" ;; "tests/zfs-tests/tests/functional/refquota/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/refquota/Makefile" ;; "tests/zfs-tests/tests/functional/refreserv/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/refreserv/Makefile" ;; "tests/zfs-tests/tests/functional/removal/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/removal/Makefile" ;; "tests/zfs-tests/tests/functional/rename_dirs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/rename_dirs/Makefile" ;; "tests/zfs-tests/tests/functional/replacement/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/replacement/Makefile" ;; "tests/zfs-tests/tests/functional/reservation/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/reservation/Makefile" ;; "tests/zfs-tests/tests/functional/resilver/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/resilver/Makefile" ;; "tests/zfs-tests/tests/functional/rootpool/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/rootpool/Makefile" ;; "tests/zfs-tests/tests/functional/rsend/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/rsend/Makefile" ;; "tests/zfs-tests/tests/functional/scrub_mirror/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/scrub_mirror/Makefile" ;; "tests/zfs-tests/tests/functional/slog/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/slog/Makefile" ;; "tests/zfs-tests/tests/functional/snapshot/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/snapshot/Makefile" ;; "tests/zfs-tests/tests/functional/snapused/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/snapused/Makefile" ;; "tests/zfs-tests/tests/functional/sparse/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/sparse/Makefile" ;; "tests/zfs-tests/tests/functional/suid/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/suid/Makefile" ;; "tests/zfs-tests/tests/functional/alloc_class/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/alloc_class/Makefile" ;; "tests/zfs-tests/tests/functional/threadsappend/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/threadsappend/Makefile" ;; "tests/zfs-tests/tests/functional/tmpfile/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/tmpfile/Makefile" ;; "tests/zfs-tests/tests/functional/trim/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/trim/Makefile" ;; "tests/zfs-tests/tests/functional/truncate/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/truncate/Makefile" ;; "tests/zfs-tests/tests/functional/user_namespace/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/user_namespace/Makefile" ;; "tests/zfs-tests/tests/functional/userquota/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/userquota/Makefile" ;; "tests/zfs-tests/tests/functional/upgrade/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/upgrade/Makefile" ;; "tests/zfs-tests/tests/functional/vdev_zaps/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/vdev_zaps/Makefile" ;; "tests/zfs-tests/tests/functional/write_dirs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/write_dirs/Makefile" ;; "tests/zfs-tests/tests/functional/xattr/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/xattr/Makefile" ;; "tests/zfs-tests/tests/functional/zvol/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/zvol/Makefile" ;; "tests/zfs-tests/tests/functional/zvol/zvol_cli/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/zvol/zvol_cli/Makefile" ;; "tests/zfs-tests/tests/functional/zvol/zvol_ENOSPC/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/zvol/zvol_ENOSPC/Makefile" ;; "tests/zfs-tests/tests/functional/zvol/zvol_misc/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/zvol/zvol_misc/Makefile" ;; "tests/zfs-tests/tests/functional/zvol/zvol_swap/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/functional/zvol/zvol_swap/Makefile" ;; "tests/zfs-tests/tests/perf/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/perf/Makefile" ;; "tests/zfs-tests/tests/perf/fio/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/perf/fio/Makefile" ;; "tests/zfs-tests/tests/perf/regression/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/perf/regression/Makefile" ;; "tests/zfs-tests/tests/perf/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/perf/scripts/Makefile" ;; "tests/zfs-tests/tests/stress/Makefile") CONFIG_FILES="$CONFIG_FILES tests/zfs-tests/tests/stress/Makefile" ;; "rpm/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/Makefile" ;; "rpm/redhat/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/redhat/Makefile" ;; "rpm/redhat/zfs.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/zfs.spec" ;; "rpm/redhat/zfs-kmod.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/zfs-kmod.spec" ;; "rpm/redhat/zfs-dkms.spec") CONFIG_FILES="$CONFIG_FILES rpm/redhat/zfs-dkms.spec" ;; "rpm/generic/Makefile") CONFIG_FILES="$CONFIG_FILES rpm/generic/Makefile" ;; "rpm/generic/zfs.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/zfs.spec" ;; "rpm/generic/zfs-kmod.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/zfs-kmod.spec" ;; "rpm/generic/zfs-dkms.spec") CONFIG_FILES="$CONFIG_FILES rpm/generic/zfs-dkms.spec" ;; "zfs.release") CONFIG_FILES="$CONFIG_FILES zfs.release" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "zfs_config.h":H) (mv zfs_config.h zfs_config.h.tmp && awk -f ${ac_srcdir}/config/config.awk zfs_config.h.tmp >zfs_config.h && rm zfs_config.h.tmp) || exit 1 ;; "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi zfs-0.8.3/PaxHeaders.151519/zfs_config.h.in0000644000000000000000000000013213612142765016322 xustar000000000000000030 mtime=1579730421.628889577 30 atime=1579730459.301099113 30 ctime=1579730468.718401481 zfs-0.8.3/zfs_config.h.in0000664016037001603700000005222413612142765016333 0ustar00hutter2hutter200000000000000/* zfs_config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS /* bio_end_io_t wants 1 arg */ #undef HAVE_1ARG_BIO_END_IO_T /* invalidate_bdev() wants 1 arg */ #undef HAVE_1ARG_INVALIDATE_BDEV /* kmap_atomic wants 1 args */ #undef HAVE_1ARG_KMAP_ATOMIC /* lookup_bdev() wants 1 arg */ #undef HAVE_1ARG_LOOKUP_BDEV /* submit_bio() wants 1 arg */ #undef HAVE_1ARG_SUBMIT_BIO /* bdi_setup_and_register() wants 2 args */ #undef HAVE_2ARGS_BDI_SETUP_AND_REGISTER /* lookup_bdev() wants 2 args */ #undef HAVE_2ARGS_LOOKUP_BDEV /* new shrinker callback wants 2 args */ #undef HAVE_2ARGS_NEW_SHRINKER_CALLBACK /* old shrinker callback wants 2 args */ #undef HAVE_2ARGS_OLD_SHRINKER_CALLBACK /* vfs_fsync() wants 2 args */ #undef HAVE_2ARGS_VFS_FSYNC /* vfs_getattr wants 2 args */ #undef HAVE_2ARGS_VFS_GETATTR /* zlib_deflate_workspacesize() wants 2 args */ #undef HAVE_2ARGS_ZLIB_DEFLATE_WORKSPACESIZE /* bdi_setup_and_register() wants 3 args */ #undef HAVE_3ARGS_BDI_SETUP_AND_REGISTER /* old shrinker callback wants 3 args */ #undef HAVE_3ARGS_SHRINKER_CALLBACK /* vfs_getattr wants 3 args */ #undef HAVE_3ARGS_VFS_GETATTR /* vfs_getattr wants 4 args */ #undef HAVE_4ARGS_VFS_GETATTR /* sget() wants 5 args */ #undef HAVE_5ARG_SGET /* security_inode_init_security wants 6 args */ #undef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY /* kernel has access_ok with 'type' parameter */ #undef HAVE_ACCESS_OK_TYPE /* posix_acl has refcount_t */ #undef HAVE_ACL_REFCOUNT /* Define if host toolchain supports AES */ #undef HAVE_AES /* dops->automount() exists */ #undef HAVE_AUTOMOUNT /* Define if host toolchain supports AVX */ #undef HAVE_AVX /* Define if host toolchain supports AVX2 */ #undef HAVE_AVX2 /* Define if host toolchain supports AVX512BW */ #undef HAVE_AVX512BW /* Define if host toolchain supports AVX512CD */ #undef HAVE_AVX512CD /* Define if host toolchain supports AVX512DQ */ #undef HAVE_AVX512DQ /* Define if host toolchain supports AVX512ER */ #undef HAVE_AVX512ER /* Define if host toolchain supports AVX512F */ #undef HAVE_AVX512F /* Define if host toolchain supports AVX512IFMA */ #undef HAVE_AVX512IFMA /* Define if host toolchain supports AVX512PF */ #undef HAVE_AVX512PF /* Define if host toolchain supports AVX512VBMI */ #undef HAVE_AVX512VBMI /* Define if host toolchain supports AVX512VL */ #undef HAVE_AVX512VL /* bdev_logical_block_size() is available */ #undef HAVE_BDEV_LOGICAL_BLOCK_SIZE /* bdev_physical_block_size() is available */ #undef HAVE_BDEV_PHYSICAL_BLOCK_SIZE /* bio->bi_opf is defined */ #undef HAVE_BIO_BI_OPF /* bio->bi_status exists */ #undef HAVE_BIO_BI_STATUS /* bio has bi_iter */ #undef HAVE_BIO_BVEC_ITER /* BIO_RW_BARRIER is defined */ #undef HAVE_BIO_RW_BARRIER /* BIO_RW_DISCARD is defined */ #undef HAVE_BIO_RW_DISCARD /* BIO_RW_FAILFAST_* are defined */ #undef HAVE_BIO_RW_FAILFAST_DTD /* bio_set_dev() is available */ #undef HAVE_BIO_SET_DEV /* bio_set_dev() GPL-only */ #undef HAVE_BIO_SET_DEV_GPL_ONLY /* bio_set_op_attrs is available */ #undef HAVE_BIO_SET_OP_ATTRS /* blkdev_get_by_path() is available */ #undef HAVE_BLKDEV_GET_BY_PATH /* blkdev_reread_part() is available */ #undef HAVE_BLKDEV_REREAD_PART /* blk queue backing_dev_info is dynamic */ #undef HAVE_BLK_QUEUE_BDI_DYNAMIC /* blk_queue_discard() is available */ #undef HAVE_BLK_QUEUE_DISCARD /* blk_queue_flag_clear() exists */ #undef HAVE_BLK_QUEUE_FLAG_CLEAR /* blk_queue_flag_set() exists */ #undef HAVE_BLK_QUEUE_FLAG_SET /* blk_queue_flush() is available */ #undef HAVE_BLK_QUEUE_FLUSH /* blk_queue_flush() is GPL-only */ #undef HAVE_BLK_QUEUE_FLUSH_GPL_ONLY /* BIO_RW_UNPLUG is available */ #undef HAVE_BLK_QUEUE_HAVE_BIO_RW_UNPLUG /* struct blk_plug is available */ #undef HAVE_BLK_QUEUE_HAVE_BLK_PLUG /* blk_queue_max_hw_sectors() is available */ #undef HAVE_BLK_QUEUE_MAX_HW_SECTORS /* blk_queue_max_segments() is available */ #undef HAVE_BLK_QUEUE_MAX_SEGMENTS /* blk_queue_secdiscard() is available */ #undef HAVE_BLK_QUEUE_SECDISCARD /* blk_queue_secure_erase() is available */ #undef HAVE_BLK_QUEUE_SECURE_ERASE /* blk_queue_write_cache() exists */ #undef HAVE_BLK_QUEUE_WRITE_CACHE /* blk_queue_write_cache() is GPL-only */ #undef HAVE_BLK_QUEUE_WRITE_CACHE_GPL_ONLY /* bops->check_events() exists */ #undef HAVE_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS /* bops->release() returns void */ #undef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID /* security_inode_init_security wants callback */ #undef HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY /* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES /* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* iops->check_acl() exists */ #undef HAVE_CHECK_ACL /* iops->check_acl() wants flags */ #undef HAVE_CHECK_ACL_WITH_FLAGS /* clear_inode() is available */ #undef HAVE_CLEAR_INODE /* eops->commit_metadata() exists */ #undef HAVE_COMMIT_METADATA /* dentry uses const struct dentry_operations */ #undef HAVE_CONST_DENTRY_OPERATIONS /* super_block uses const struct xattr_handler */ #undef HAVE_CONST_XATTR_HANDLER /* iops->create() passes nameidata */ #undef HAVE_CREATE_NAMEIDATA /* cred_t->user_ns exists */ #undef HAVE_CRED_USER_NS /* struct ctl_table has ctl_name */ #undef HAVE_CTL_NAME /* current->bio_list exists */ #undef HAVE_CURRENT_BIO_LIST /* current->bio_tail exists */ #undef HAVE_CURRENT_BIO_TAIL /* current_time() exists */ #undef HAVE_CURRENT_TIME /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT /* DECLARE_EVENT_CLASS() is available */ #undef HAVE_DECLARE_EVENT_CLASS /* sops->dirty_inode() wants flags */ #undef HAVE_DIRTY_INODE_WITH_FLAGS /* ql->discard_granularity is available */ #undef HAVE_DISCARD_GRANULARITY /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* d_make_root() is available */ #undef HAVE_D_MAKE_ROOT /* d_obtain_alias() is available */ #undef HAVE_D_OBTAIN_ALIAS /* d_prune_aliases() is available */ #undef HAVE_D_PRUNE_ALIASES /* dops->d_revalidate() operation takes nameidata */ #undef HAVE_D_REVALIDATE_NAMEIDATA /* d_set_d_op() is available */ #undef HAVE_D_SET_D_OP /* eops->encode_fh() wants child and parent inodes */ #undef HAVE_ENCODE_FH_WITH_INODE /* sops->evict_inode() exists */ #undef HAVE_EVICT_INODE /* fops->aio_fsync() exists */ #undef HAVE_FILE_AIO_FSYNC /* file_dentry() is available */ #undef HAVE_FILE_DENTRY /* fops->fallocate() exists */ #undef HAVE_FILE_FALLOCATE /* file_inode() is available */ #undef HAVE_FILE_INODE /* kernel defines fmode_t */ #undef HAVE_FMODE_T /* follow_down_one() is available */ #undef HAVE_FOLLOW_DOWN_ONE /* iops->follow_link() cookie */ #undef HAVE_FOLLOW_LINK_COOKIE /* iops->follow_link() nameidata */ #undef HAVE_FOLLOW_LINK_NAMEIDATA /* sops->free_cached_objects() exists */ #undef HAVE_FREE_CACHED_OBJECTS /* fst->mount() exists */ #undef HAVE_FST_MOUNT /* fops->fsync() with range */ #undef HAVE_FSYNC_RANGE /* fops->fsync() without dentry */ #undef HAVE_FSYNC_WITHOUT_DENTRY /* fops->fsync() with dentry */ #undef HAVE_FSYNC_WITH_DENTRY /* generic_start_io_acct()/generic_end_io_acct() available */ #undef HAVE_GENERIC_IO_ACCT_3ARG /* generic_start_io_acct()/generic_end_io_acct() 4 arg available */ #undef HAVE_GENERIC_IO_ACCT_4ARG /* generic_readlink is global */ #undef HAVE_GENERIC_READLINK /* generic_setxattr() exists */ #undef HAVE_GENERIC_SETXATTR /* generic_write_checks() takes kiocb */ #undef HAVE_GENERIC_WRITE_CHECKS_KIOCB /* Define if the GNU gettext() function is already present or preinstalled. */ #undef HAVE_GETTEXT /* iops->get_acl() exists */ #undef HAVE_GET_ACL /* get_disk_and_module() is available */ #undef HAVE_GET_DISK_AND_MODULE /* blk_disk_ro() is available */ #undef HAVE_GET_DISK_RO /* iops->get_link() cookie */ #undef HAVE_GET_LINK_COOKIE /* iops->get_link() delayed */ #undef HAVE_GET_LINK_DELAYED /* group_info->gid exists */ #undef HAVE_GROUP_INFO_GID /* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* fops->fallocate() exists */ #undef HAVE_INODE_FALLOCATE /* yes */ #undef HAVE_INODE_LOCK_SHARED /* inode_owner_or_capable() exists */ #undef HAVE_INODE_OWNER_OR_CAPABLE /* inode_set_flags() exists */ #undef HAVE_INODE_SET_FLAGS /* inode_set_iversion() exists */ #undef HAVE_INODE_SET_IVERSION /* inode->i_*time's are timespec64 */ #undef HAVE_INODE_TIMESPEC64_TIMES /* iops->truncate_range() exists */ #undef HAVE_INODE_TRUNCATE_RANGE /* insert_inode_locked() is available */ #undef HAVE_INSERT_INODE_LOCKED /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* in_compat_syscall() is available */ #undef HAVE_IN_COMPAT_SYSCALL /* yes */ #undef HAVE_IO_SCHEDULE_TIMEOUT /* is_owner_or_cap() exists */ #undef HAVE_IS_OWNER_OR_CAP /* kernel has kernel_fpu_* functions */ #undef HAVE_KERNEL_FPU /* kernel has asm/fpu/api.h */ #undef HAVE_KERNEL_FPU_API_HEADER /* kernel fpu internal */ #undef HAVE_KERNEL_FPU_INTERNAL /* uncached_acl_sentinel() exists */ #undef HAVE_KERNEL_GET_ACL_HANDLE_CACHE /* kernel does stack verification */ #undef HAVE_KERNEL_OBJTOOL /* kernel_read() take loff_t pointer */ #undef HAVE_KERNEL_READ_PPOS /* timer_list.function gets a timer_list */ #undef HAVE_KERNEL_TIMER_FUNCTION_TIMER_LIST /* struct timer_list has a flags member */ #undef HAVE_KERNEL_TIMER_LIST_FLAGS /* timer_setup() is available */ #undef HAVE_KERNEL_TIMER_SETUP /* kernel_write() take loff_t pointer */ #undef HAVE_KERNEL_WRITE_PPOS /* struct kmem_cache has allocflags */ #undef HAVE_KMEM_CACHE_ALLOCFLAGS /* kmem_cache_create_usercopy() exists */ #undef HAVE_KMEM_CACHE_CREATE_USERCOPY /* struct kmem_cache has gfpflags */ #undef HAVE_KMEM_CACHE_GFPFLAGS /* kstrtoul() exists */ #undef HAVE_KSTRTOUL /* ktime_get_coarse_real_ts64() exists */ #undef HAVE_KTIME_GET_COARSE_REAL_TS64 /* kuid_t/kgid_t in use */ #undef HAVE_KUIDGID_T /* kuid_has_mapping/kgid_has_mapping exist */ #undef HAVE_KUID_HAS_MAPPING /* i_(uid|gid)_(read|write) exist */ #undef HAVE_KUID_HELPERS /* kernel has large stacks */ #undef HAVE_LARGE_STACKS /* Define if you have libaio */ #undef HAVE_LIBAIO /* Define if you have libblkid */ #undef HAVE_LIBBLKID /* Define if you have libssl */ #undef HAVE_LIBSSL /* Define to 1 if you have the `tirpc' library (-ltirpc). */ #undef HAVE_LIBTIRPC /* Define if you have libudev */ #undef HAVE_LIBUDEV /* Define if udev_device_get_is_initialized is available */ #undef HAVE_LIBUDEV_UDEV_DEVICE_GET_IS_INITIALIZED /* Define if you have libuuid */ #undef HAVE_LIBUUID /* iops->lookup() passes nameidata */ #undef HAVE_LOOKUP_NAMEIDATA /* lseek_execute() is available */ #undef HAVE_LSEEK_EXECUTE /* makedev() is declared in sys/mkdev.h */ #undef HAVE_MAKEDEV_IN_MKDEV /* makedev() is declared in sys/sysmacros.h */ #undef HAVE_MAKEDEV_IN_SYSMACROS /* Noting that make_request_fn() returns int */ #undef HAVE_MAKE_REQUEST_FN_RET_INT /* Noting that make_request_fn() returns blk_qc_t */ #undef HAVE_MAKE_REQUEST_FN_RET_QC /* Noting that make_request_fn() returns void */ #undef HAVE_MAKE_REQUEST_FN_RET_VOID /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* iops->create()/mkdir()/mknod() take umode_t */ #undef HAVE_MKDIR_UMODE_T /* Define to 1 if you have the `mlockall' function. */ #undef HAVE_MLOCKALL /* new_sync_read()/new_sync_write() are available */ #undef HAVE_NEW_SYNC_READ /* sops->nr_cached_objects() exists */ #undef HAVE_NR_CACHED_OBJECTS /* ns_capable exists */ #undef HAVE_NS_CAPABLE /* open_bdev_exclusive() is available */ #undef HAVE_OPEN_BDEV_EXCLUSIVE /* iops->getattr() takes a path */ #undef HAVE_PATH_IOPS_GETATTR /* Define if host toolchain supports PCLMULQDQ */ #undef HAVE_PCLMULQDQ /* PDE_DATA is available */ #undef HAVE_PDE_DATA /* iops->permission() exists */ #undef HAVE_PERMISSION /* iops->permission() with nameidata exists */ #undef HAVE_PERMISSION_WITH_NAMEIDATA /* posix_acl_chmod() exists */ #undef HAVE_POSIX_ACL_CHMOD /* posix_acl_equiv_mode wants umode_t* */ #undef HAVE_POSIX_ACL_EQUIV_MODE_UMODE_T /* posix_acl_from_xattr() needs user_ns */ #undef HAVE_POSIX_ACL_FROM_XATTR_USERNS /* posix_acl_release() is available */ #undef HAVE_POSIX_ACL_RELEASE /* posix_acl_release() is GPL-only */ #undef HAVE_POSIX_ACL_RELEASE_GPL_ONLY /* posix_acl_valid() wants user namespace */ #undef HAVE_POSIX_ACL_VALID_WITH_NS /* iops->put_link() cookie */ #undef HAVE_PUT_LINK_COOKIE /* iops->put_link() delayed */ #undef HAVE_PUT_LINK_DELAYED /* iops->put_link() nameidata */ #undef HAVE_PUT_LINK_NAMEIDATA /* If available, contains the Python version number currently in use. */ #undef HAVE_PYTHON /* qat is enabled and existed */ #undef HAVE_QAT /* iops->rename() wants flags */ #undef HAVE_RENAME_WANTS_FLAGS /* REQ_FAILFAST_MASK is defined */ #undef HAVE_REQ_FAILFAST_MASK /* REQ_OP_DISCARD is defined */ #undef HAVE_REQ_OP_DISCARD /* REQ_OP_FLUSH is defined */ #undef HAVE_REQ_OP_FLUSH /* REQ_OP_SECURE_ERASE is defined */ #undef HAVE_REQ_OP_SECURE_ERASE /* struct rw_semaphore has member activity */ #undef HAVE_RWSEM_ACTIVITY /* struct rw_semaphore has atomic_long_t member count */ #undef HAVE_RWSEM_ATOMIC_LONG_COUNT /* linux/sched/rt.h exists */ #undef HAVE_SCHED_RT_HEADER /* linux/sched/signal.h exists */ #undef HAVE_SCHED_SIGNAL_HEADER /* setattr_prepare() is available */ #undef HAVE_SETATTR_PREPARE /* iops->set_acl() exists */ #undef HAVE_SET_ACL /* set_cached_acl() is usable */ #undef HAVE_SET_CACHED_ACL_USABLE /* set_nlink() is available */ #undef HAVE_SET_NLINK /* sops->show_options() with dentry */ #undef HAVE_SHOW_OPTIONS_WITH_DENTRY /* struct super_block has s_shrink */ #undef HAVE_SHRINK /* struct shrink_control exists */ #undef HAVE_SHRINK_CONTROL_STRUCT /* ->count_objects exists */ #undef HAVE_SPLIT_SHRINKER_CALLBACK /* Define if host toolchain supports SSE */ #undef HAVE_SSE /* Define if host toolchain supports SSE2 */ #undef HAVE_SSE2 /* Define if host toolchain supports SSE3 */ #undef HAVE_SSE3 /* Define if host toolchain supports SSE4.1 */ #undef HAVE_SSE4_1 /* Define if host toolchain supports SSE4.2 */ #undef HAVE_SSE4_2 /* Define if host toolchain supports SSSE3 */ #undef HAVE_SSSE3 /* STACK_FRAME_NON_STANDARD is defined */ #undef HAVE_STACK_FRAME_NON_STANDARD /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strlcat' function. */ #undef HAVE_STRLCAT /* Define to 1 if you have the `strlcpy' function. */ #undef HAVE_STRLCPY /* super_setup_bdi_name() exits */ #undef HAVE_SUPER_SETUP_BDI_NAME /* super_block->s_user_ns exists */ #undef HAVE_SUPER_USER_NS /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* struct super_block has s_d_op */ #undef HAVE_S_D_OP /* struct super_block has s_instances list_head */ #undef HAVE_S_INSTANCES_LIST_HEAD /* i_op->tmpfile() exists */ #undef HAVE_TMPFILE /* totalhigh_pages() exists */ #undef HAVE_TOTALHIGH_PAGES /* kernel has totalram_pages() */ #undef HAVE_TOTALRAM_PAGES_FUNC /* truncate_setsize() is available */ #undef HAVE_TRUNCATE_SETSIZE /* kernel has __kernel_fpu_* functions */ #undef HAVE_UNDERSCORE_KERNEL_FPU /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* usleep_range is available */ #undef HAVE_USLEEP_RANGE /* iops->getattr() takes a vfsmount */ #undef HAVE_VFSMOUNT_IOPS_GETATTR /* aops->direct_IO() uses iovec */ #undef HAVE_VFS_DIRECT_IO_IOVEC /* aops->direct_IO() uses iov_iter without rw */ #undef HAVE_VFS_DIRECT_IO_ITER /* aops->direct_IO() uses iov_iter with offset */ #undef HAVE_VFS_DIRECT_IO_ITER_OFFSET /* aops->direct_IO() uses iov_iter with rw and offset */ #undef HAVE_VFS_DIRECT_IO_ITER_RW_OFFSET /* fops->iterate() is available */ #undef HAVE_VFS_ITERATE /* fops->iterate_shared() is available */ #undef HAVE_VFS_ITERATE_SHARED /* fops->readdir() is available */ #undef HAVE_VFS_READDIR /* fops->read/write_iter() are available */ #undef HAVE_VFS_RW_ITERATE /* yes */ #undef HAVE_WAIT_ON_BIT_ACTION /* wait_queue_entry_t exists */ #undef HAVE_WAIT_QUEUE_ENTRY_T /* wq_head->head and wq_entry->entry exist */ #undef HAVE_WAIT_QUEUE_HEAD_ENTRY /* xattr_handler->get() wants dentry */ #undef HAVE_XATTR_GET_DENTRY /* xattr_handler->get() wants both dentry and inode */ #undef HAVE_XATTR_GET_DENTRY_INODE /* xattr_handler->get() wants xattr_handler */ #undef HAVE_XATTR_GET_HANDLER /* xattr_handler->get() wants inode */ #undef HAVE_XATTR_GET_INODE /* xattr_handler has name */ #undef HAVE_XATTR_HANDLER_NAME /* xattr_handler->list() wants dentry */ #undef HAVE_XATTR_LIST_DENTRY /* xattr_handler->list() wants xattr_handler */ #undef HAVE_XATTR_LIST_HANDLER /* xattr_handler->list() wants inode */ #undef HAVE_XATTR_LIST_INODE /* xattr_handler->list() wants simple */ #undef HAVE_XATTR_LIST_SIMPLE /* xattr_handler->set() wants dentry */ #undef HAVE_XATTR_SET_DENTRY /* xattr_handler->set() wants both dentry and inode */ #undef HAVE_XATTR_SET_DENTRY_INODE /* xattr_handler->set() wants xattr_handler */ #undef HAVE_XATTR_SET_HANDLER /* xattr_handler->set() wants inode */ #undef HAVE_XATTR_SET_INODE /* Define if you have zlib */ #undef HAVE_ZLIB /* __posix_acl_chmod() exists */ #undef HAVE___POSIX_ACL_CHMOD /* Define as const if the declaration of iconv() needs const. */ #undef ICONV_CONST /* kernel exports FPU functions */ #undef KERNEL_EXPORTS_X86_FPU /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* make_request_fn() return type */ #undef MAKE_REQUEST_FN_RET /* hardened module_param_call */ #undef MODULE_PARAM_CALL_CONST /* Define to 1 if your C compiler doesn't accept -c and -o together. */ #undef NO_MINUS_C_MINUS_O /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* struct rw_semaphore member wait_lock is raw_spinlock_t */ #undef RWSEM_SPINLOCK_IS_RAW /* struct shrink_control has nid */ #undef SHRINK_CONTROL_HAS_NID /* Defined for legacy compatibility. */ #undef SPL_META_ALIAS /* Defined for legacy compatibility. */ #undef SPL_META_RELEASE /* Defined for legacy compatibility. */ #undef SPL_META_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* zfs debugging enabled */ #undef ZFS_DEBUG /* /dev/zfs minor */ #undef ZFS_DEVICE_MINOR /* enum node_stat_item contains NR_FILE_PAGES */ #undef ZFS_ENUM_NODE_STAT_ITEM_NR_FILE_PAGES /* enum node_stat_item contains NR_INACTIVE_ANON */ #undef ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_ANON /* enum node_stat_item contains NR_INACTIVE_FILE */ #undef ZFS_ENUM_NODE_STAT_ITEM_NR_INACTIVE_FILE /* enum node_stat_item contains NR_SLAB_RECLAIMABLE */ #undef ZFS_ENUM_NODE_STAT_ITEM_NR_SLAB_RECLAIMABLE /* enum zone_stat_item contains NR_FILE_PAGES */ #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_FILE_PAGES /* enum zone_stat_item contains NR_INACTIVE_ANON */ #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_ANON /* enum zone_stat_item contains NR_INACTIVE_FILE */ #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_INACTIVE_FILE /* enum zone_stat_item contains NR_SLAB_RECLAIMABLE */ #undef ZFS_ENUM_ZONE_STAT_ITEM_NR_SLAB_RECLAIMABLE /* global_node_page_state() exists */ #undef ZFS_GLOBAL_NODE_PAGE_STATE /* global_zone_page_state() exists */ #undef ZFS_GLOBAL_ZONE_PAGE_STATE /* Define to 1 if GPL-only symbols can be used */ #undef ZFS_IS_GPL_COMPATIBLE /* Define the project alias string. */ #undef ZFS_META_ALIAS /* Define the project author. */ #undef ZFS_META_AUTHOR /* Define the project release date. */ #undef ZFS_META_DATA /* Define the maximum compatible kernel version. */ #undef ZFS_META_KVER_MAX /* Define the minimum compatible kernel version. */ #undef ZFS_META_KVER_MIN /* Define the project license. */ #undef ZFS_META_LICENSE /* Define the libtool library 'age' version information. */ #undef ZFS_META_LT_AGE /* Define the libtool library 'current' version information. */ #undef ZFS_META_LT_CURRENT /* Define the libtool library 'revision' version information. */ #undef ZFS_META_LT_REVISION /* Define the project name. */ #undef ZFS_META_NAME /* Define the project release. */ #undef ZFS_META_RELEASE /* Define the project version. */ #undef ZFS_META_VERSION #undef PACKAGE #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #undef STDC_HEADERS #undef VERSION zfs-0.8.3/PaxHeaders.151519/tests0000644000000000000000000000013213612143051014467 xustar000000000000000030 mtime=1579730473.007539197 30 atime=1579730489.078055195 30 ctime=1579730473.007539197 zfs-0.8.3/tests/0000775016037001603700000000000013612143051014550 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/PaxHeaders.151519/runfiles0000644000000000000000000000013013612143051016314 xustar000000000000000029 mtime=1579730473.06554106 30 atime=1579730489.078055195 29 ctime=1579730473.06554106 zfs-0.8.3/tests/runfiles/0000775016037001603700000000000013612143051016377 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/runfiles/PaxHeaders.151519/perf-regression.run0000644000000000000000000000007413607166133022252 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.061540931 zfs-0.8.3/tests/runfiles/perf-regression.run0000644016037001603700000000166613607166133022260 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # [DEFAULT] pre = setup quiet = False pre_user = root user = root timeout = 0 post_user = root post = cleanup outputdir = /var/tmp/test_results tags = ['perf'] [tests/perf/regression] tests = ['sequential_writes', 'sequential_reads', 'sequential_reads_arc_cached', 'sequential_reads_arc_cached_clone', 'sequential_reads_dbuf_cached', 'random_reads', 'random_writes', 'random_readwrite', 'random_writes_zil', 'random_readwrite_fixed'] post = tags = ['perf', 'regression'] zfs-0.8.3/tests/runfiles/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147020453 xustar000000000000000030 atime=1579730431.447204807 30 ctime=1579730473.063540996 zfs-0.8.3/tests/runfiles/Makefile.am0000644016037001603700000000016413607166147020451 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/runfiles dist_pkgdata_DATA = \ linux.run \ longevity.run \ perf-regression.run zfs-0.8.3/tests/runfiles/PaxHeaders.151519/linux.run0000644000000000000000000000007313612141523020266 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730473.05654077 zfs-0.8.3/tests/runfiles/linux.run0000644016037001603700000011411313612141523020265 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # [DEFAULT] pre = setup quiet = False pre_user = root user = root timeout = 600 post_user = root post = cleanup outputdir = /var/tmp/test_results tags = ['functional'] [tests/functional/acl/posix] tests = ['posix_001_pos', 'posix_002_pos', 'posix_003_pos'] tags = ['functional', 'acl', 'posix'] [tests/functional/alloc_class] tests = ['alloc_class_001_pos', 'alloc_class_002_neg', 'alloc_class_003_pos', 'alloc_class_004_pos', 'alloc_class_005_pos', 'alloc_class_006_pos', 'alloc_class_007_pos', 'alloc_class_008_pos', 'alloc_class_009_pos', 'alloc_class_010_pos', 'alloc_class_011_neg', 'alloc_class_012_pos', 'alloc_class_013_pos'] tags = ['functional', 'alloc_class'] [tests/functional/arc] tests = ['dbufstats_001_pos', 'dbufstats_002_pos', 'dbufstats_003_pos', 'arcstats_runtime_tuning'] tags = ['functional', 'arc'] [tests/functional/atime] tests = ['atime_001_pos', 'atime_002_neg', 'atime_003_pos', 'root_atime_off', 'root_atime_on', 'root_relatime_on'] tags = ['functional', 'atime'] [tests/functional/bootfs] tests = ['bootfs_001_pos', 'bootfs_002_neg', 'bootfs_003_pos', 'bootfs_004_neg', 'bootfs_005_neg', 'bootfs_006_pos', 'bootfs_007_pos', 'bootfs_008_pos'] tags = ['functional', 'bootfs'] [tests/functional/cache] tests = ['cache_001_pos', 'cache_002_pos', 'cache_003_pos', 'cache_004_neg', 'cache_005_neg', 'cache_006_pos', 'cache_007_neg', 'cache_008_neg', 'cache_009_pos', 'cache_010_neg', 'cache_011_pos'] tags = ['functional', 'cache'] [tests/functional/cachefile] tests = ['cachefile_001_pos', 'cachefile_002_pos', 'cachefile_003_pos', 'cachefile_004_pos'] tags = ['functional', 'cachefile'] [tests/functional/casenorm] tests = ['case_all_values', 'norm_all_values', 'mixed_create_failure', 'sensitive_none_lookup', 'sensitive_none_delete', 'sensitive_formd_lookup', 'sensitive_formd_delete', 'insensitive_none_lookup', 'insensitive_none_delete', 'insensitive_formd_lookup', 'insensitive_formd_delete', 'mixed_none_lookup', 'mixed_none_lookup_ci', 'mixed_none_delete', 'mixed_formd_lookup', 'mixed_formd_lookup_ci', 'mixed_formd_delete'] tags = ['functional', 'casenorm'] [tests/functional/channel_program/lua_core] tests = ['tst.args_to_lua', 'tst.divide_by_zero', 'tst.exists', 'tst.integer_illegal', 'tst.integer_overflow', 'tst.language_functions_neg', 'tst.language_functions_pos', 'tst.large_prog', 'tst.libraries', 'tst.memory_limit', 'tst.nested_neg', 'tst.nested_pos', 'tst.nvlist_to_lua', 'tst.recursive_neg', 'tst.recursive_pos', 'tst.return_large', 'tst.return_nvlist_neg', 'tst.return_nvlist_pos', 'tst.return_recursive_table', 'tst.timeout'] tags = ['functional', 'channel_program', 'lua_core'] [tests/functional/channel_program/synctask_core] tests = ['tst.destroy_fs', 'tst.destroy_snap', 'tst.get_count_and_limit', 'tst.get_index_props', 'tst.get_mountpoint', 'tst.get_neg', 'tst.get_number_props', 'tst.get_string_props', 'tst.get_type', 'tst.get_userquota', 'tst.get_written', 'tst.list_children', 'tst.list_clones', 'tst.list_snapshots', 'tst.list_system_props', 'tst.list_user_props', 'tst.parse_args_neg','tst.promote_conflict', 'tst.promote_multiple', 'tst.promote_simple', 'tst.rollback_mult', 'tst.rollback_one', 'tst.snapshot_destroy', 'tst.snapshot_neg', 'tst.snapshot_recursive', 'tst.snapshot_simple', 'tst.terminate_by_signal'] tags = ['functional', 'channel_program', 'synctask_core'] [tests/functional/chattr] tests = ['chattr_001_pos', 'chattr_002_neg'] tags = ['functional', 'chattr'] [tests/functional/checksum] tests = ['run_edonr_test', 'run_sha2_test', 'run_skein_test', 'filetest_001_pos'] tags = ['functional', 'checksum'] [tests/functional/clean_mirror] tests = [ 'clean_mirror_001_pos', 'clean_mirror_002_pos', 'clean_mirror_003_pos', 'clean_mirror_004_pos'] tags = ['functional', 'clean_mirror'] [tests/functional/cli_root/zdb] tests = ['zdb_001_neg', 'zdb_002_pos', 'zdb_003_pos', 'zdb_004_pos', 'zdb_005_pos', 'zdb_006_pos', 'zdb_checksum', 'zdb_decompress'] pre = post = tags = ['functional', 'cli_root', 'zdb'] [tests/functional/cli_root/zfs] tests = ['zfs_001_neg', 'zfs_002_pos', 'zfs_003_neg'] tags = ['functional', 'cli_root', 'zfs'] [tests/functional/cli_root/zfs_bookmark] tests = ['zfs_bookmark_cliargs'] tags = ['functional', 'cli_root', 'zfs_bookmark'] [tests/functional/cli_root/zfs_change-key] tests = ['zfs_change-key', 'zfs_change-key_child', 'zfs_change-key_format', 'zfs_change-key_inherit', 'zfs_change-key_load', 'zfs_change-key_location', 'zfs_change-key_pbkdf2iters', 'zfs_change-key_clones'] tags = ['functional', 'cli_root', 'zfs_change-key'] [tests/functional/cli_root/zfs_clone] tests = ['zfs_clone_001_neg', 'zfs_clone_002_pos', 'zfs_clone_003_pos', 'zfs_clone_004_pos', 'zfs_clone_005_pos', 'zfs_clone_006_pos', 'zfs_clone_007_pos', 'zfs_clone_008_neg', 'zfs_clone_009_neg', 'zfs_clone_010_pos', 'zfs_clone_encrypted', 'zfs_clone_deeply_nested'] tags = ['functional', 'cli_root', 'zfs_clone'] [tests/functional/cli_root/zfs_copies] tests = ['zfs_copies_001_pos', 'zfs_copies_002_pos', 'zfs_copies_003_pos', 'zfs_copies_004_neg', 'zfs_copies_005_neg', 'zfs_copies_006_pos'] tags = ['functional', 'cli_root', 'zfs_copies'] [tests/functional/cli_root/zfs_create] tests = ['zfs_create_001_pos', 'zfs_create_002_pos', 'zfs_create_003_pos', 'zfs_create_004_pos', 'zfs_create_005_pos', 'zfs_create_006_pos', 'zfs_create_007_pos', 'zfs_create_008_neg', 'zfs_create_009_neg', 'zfs_create_010_neg', 'zfs_create_011_pos', 'zfs_create_012_pos', 'zfs_create_013_pos', 'zfs_create_014_pos', 'zfs_create_encrypted', 'zfs_create_crypt_combos'] tags = ['functional', 'cli_root', 'zfs_create'] [tests/functional/cli_root/zfs_destroy] tests = ['zfs_destroy_001_pos', 'zfs_destroy_002_pos', 'zfs_destroy_003_pos', 'zfs_destroy_004_pos', 'zfs_destroy_005_neg', 'zfs_destroy_006_neg', 'zfs_destroy_007_neg', 'zfs_destroy_008_pos', 'zfs_destroy_009_pos', 'zfs_destroy_010_pos', 'zfs_destroy_011_pos', 'zfs_destroy_012_pos', 'zfs_destroy_013_neg', 'zfs_destroy_014_pos', 'zfs_destroy_015_pos', 'zfs_destroy_016_pos'] tags = ['functional', 'cli_root', 'zfs_destroy'] [tests/functional/cli_root/zfs_diff] tests = ['zfs_diff_changes', 'zfs_diff_cliargs', 'zfs_diff_timestamp', 'zfs_diff_types', 'zfs_diff_encrypted'] tags = ['functional', 'cli_root', 'zfs_diff'] [tests/functional/cli_root/zfs_get] tests = ['zfs_get_001_pos', 'zfs_get_002_pos', 'zfs_get_003_pos', 'zfs_get_004_pos', 'zfs_get_005_neg', 'zfs_get_006_neg', 'zfs_get_007_neg', 'zfs_get_008_pos', 'zfs_get_009_pos', 'zfs_get_010_neg'] tags = ['functional', 'cli_root', 'zfs_get'] [tests/functional/cli_root/zfs_inherit] tests = ['zfs_inherit_001_neg', 'zfs_inherit_002_neg', 'zfs_inherit_003_pos', 'zfs_inherit_mountpoint'] tags = ['functional', 'cli_root', 'zfs_inherit'] [tests/functional/cli_root/zfs_load-key] tests = ['zfs_load-key', 'zfs_load-key_all', 'zfs_load-key_file', 'zfs_load-key_location', 'zfs_load-key_noop', 'zfs_load-key_recursive'] tags = ['functional', 'cli_root', 'zfs_load-key'] [tests/functional/cli_root/zfs_mount] tests = ['zfs_mount_001_pos', 'zfs_mount_002_pos', 'zfs_mount_003_pos', 'zfs_mount_004_pos', 'zfs_mount_005_pos', 'zfs_mount_006_pos', 'zfs_mount_007_pos', 'zfs_mount_008_pos', 'zfs_mount_009_neg', 'zfs_mount_010_neg', 'zfs_mount_011_neg', 'zfs_mount_012_neg', 'zfs_mount_all_001_pos', 'zfs_mount_encrypted', 'zfs_mount_remount', 'zfs_multi_mount', 'zfs_mount_all_fail', 'zfs_mount_all_mountpoints', 'zfs_mount_test_race'] tags = ['functional', 'cli_root', 'zfs_mount'] [tests/functional/cli_root/zfs_program] tests = ['zfs_program_json'] tags = ['functional', 'cli_root', 'zfs_program'] [tests/functional/cli_root/zfs_promote] tests = ['zfs_promote_001_pos', 'zfs_promote_002_pos', 'zfs_promote_003_pos', 'zfs_promote_004_pos', 'zfs_promote_005_pos', 'zfs_promote_006_neg', 'zfs_promote_007_neg', 'zfs_promote_008_pos', 'zfs_promote_encryptionroot'] tags = ['functional', 'cli_root', 'zfs_promote'] [tests/functional/cli_root/zfs_property] tests = ['zfs_written_property_001_pos'] tags = ['functional', 'cli_root', 'zfs_property'] [tests/functional/cli_root/zfs_receive] tests = ['zfs_receive_001_pos', 'zfs_receive_002_pos', 'zfs_receive_003_pos', 'zfs_receive_004_neg', 'zfs_receive_005_neg', 'zfs_receive_006_pos', 'zfs_receive_007_neg', 'zfs_receive_008_pos', 'zfs_receive_009_neg', 'zfs_receive_010_pos', 'zfs_receive_011_pos', 'zfs_receive_012_pos', 'zfs_receive_013_pos', 'zfs_receive_014_pos', 'zfs_receive_015_pos', 'receive-o-x_props_override', 'zfs_receive_from_encrypted', 'zfs_receive_to_encrypted', 'zfs_receive_raw', 'zfs_receive_raw_incremental', 'zfs_receive_-e'] tags = ['functional', 'cli_root', 'zfs_receive'] [tests/functional/cli_root/zfs_remap] tests = ['zfs_remap_cliargs', 'zfs_remap_obsolete_counts'] tags = ['functional', 'cli_root', 'zfs_remap'] [tests/functional/cli_root/zfs_rename] tests = ['zfs_rename_001_pos', 'zfs_rename_002_pos', 'zfs_rename_003_pos', 'zfs_rename_004_neg', 'zfs_rename_005_neg', 'zfs_rename_006_pos', 'zfs_rename_007_pos', 'zfs_rename_008_pos', 'zfs_rename_009_neg', 'zfs_rename_010_neg', 'zfs_rename_011_pos', 'zfs_rename_012_neg', 'zfs_rename_013_pos', 'zfs_rename_014_neg', 'zfs_rename_encrypted_child', 'zfs_rename_to_encrypted', 'zfs_rename_mountpoint'] tags = ['functional', 'cli_root', 'zfs_rename'] [tests/functional/cli_root/zfs_reservation] tests = ['zfs_reservation_001_pos', 'zfs_reservation_002_pos'] tags = ['functional', 'cli_root', 'zfs_reservation'] [tests/functional/cli_root/zfs_rollback] tests = ['zfs_rollback_001_pos', 'zfs_rollback_002_pos', 'zfs_rollback_003_neg', 'zfs_rollback_004_neg'] tags = ['functional', 'cli_root', 'zfs_rollback'] [tests/functional/cli_root/zfs_send] tests = ['zfs_send_001_pos', 'zfs_send_002_pos', 'zfs_send_003_pos', 'zfs_send_004_neg', 'zfs_send_005_pos', 'zfs_send_006_pos', 'zfs_send_007_pos', 'zfs_send_encrypted', 'zfs_send_raw', 'zfs_send_sparse', 'zfs_send-b'] tags = ['functional', 'cli_root', 'zfs_send'] [tests/functional/cli_root/zfs_set] tests = ['cache_001_pos', 'cache_002_neg', 'canmount_001_pos', 'canmount_002_pos', 'canmount_003_pos', 'canmount_004_pos', 'checksum_001_pos', 'compression_001_pos', 'mountpoint_001_pos', 'mountpoint_002_pos', 'reservation_001_neg', 'user_property_002_pos', 'share_mount_001_neg', 'snapdir_001_pos', 'onoffs_001_pos', 'user_property_001_pos', 'user_property_003_neg', 'readonly_001_pos', 'user_property_004_pos', 'version_001_neg', 'zfs_set_001_neg', 'zfs_set_002_neg', 'zfs_set_003_neg', 'property_alias_001_pos', 'mountpoint_003_pos', 'ro_props_001_pos', 'zfs_set_keylocation'] tags = ['functional', 'cli_root', 'zfs_set'] [tests/functional/cli_root/zfs_share] tests = ['zfs_share_001_pos', 'zfs_share_002_pos', 'zfs_share_003_pos', 'zfs_share_004_pos', 'zfs_share_005_pos', 'zfs_share_006_pos', 'zfs_share_007_neg', 'zfs_share_008_neg', 'zfs_share_009_neg', 'zfs_share_010_neg', 'zfs_share_011_pos'] tags = ['functional', 'cli_root', 'zfs_share'] [tests/functional/cli_root/zfs_snapshot] tests = ['zfs_snapshot_001_neg', 'zfs_snapshot_002_neg', 'zfs_snapshot_003_neg', 'zfs_snapshot_004_neg', 'zfs_snapshot_005_neg', 'zfs_snapshot_006_pos', 'zfs_snapshot_007_neg', 'zfs_snapshot_008_neg', 'zfs_snapshot_009_pos'] tags = ['functional', 'cli_root', 'zfs_snapshot'] [tests/functional/cli_root/zfs_sysfs] tests = ['zfeature_set_unsupported', 'zfs_get_unsupported', 'zfs_set_unsupported', 'zfs_sysfs_live', 'zpool_get_unsupported', 'zpool_set_unsupported'] tags = ['functional', 'cli_root', 'zfs_sysfs'] [tests/functional/cli_root/zfs_unload-key] tests = ['zfs_unload-key', 'zfs_unload-key_all', 'zfs_unload-key_recursive'] tags = ['functional', 'cli_root', 'zfs_unload-key'] [tests/functional/cli_root/zfs_unmount] tests = ['zfs_unmount_001_pos', 'zfs_unmount_002_pos', 'zfs_unmount_003_pos', 'zfs_unmount_004_pos', 'zfs_unmount_005_pos', 'zfs_unmount_006_pos', 'zfs_unmount_007_neg', 'zfs_unmount_008_neg', 'zfs_unmount_009_pos', 'zfs_unmount_all_001_pos', 'zfs_unmount_nested'] tags = ['functional', 'cli_root', 'zfs_unmount'] [tests/functional/cli_root/zfs_unshare] tests = ['zfs_unshare_001_pos', 'zfs_unshare_002_pos', 'zfs_unshare_003_pos', 'zfs_unshare_004_neg', 'zfs_unshare_005_neg', 'zfs_unshare_006_pos', 'zfs_unshare_007_pos'] tags = ['functional', 'cli_root', 'zfs_unshare'] [tests/functional/cli_root/zfs_upgrade] tests = ['zfs_upgrade_001_pos', 'zfs_upgrade_002_pos', 'zfs_upgrade_003_pos', 'zfs_upgrade_004_pos', 'zfs_upgrade_005_pos', 'zfs_upgrade_006_neg', 'zfs_upgrade_007_neg'] tags = ['functional', 'cli_root', 'zfs_upgrade'] [tests/functional/cli_root/zpool] tests = ['zpool_001_neg', 'zpool_002_pos', 'zpool_003_pos'] tags = ['functional', 'cli_root', 'zpool'] [tests/functional/cli_root/zpool_add] tests = ['zpool_add_001_pos', 'zpool_add_002_pos', 'zpool_add_003_pos', 'zpool_add_004_pos', 'zpool_add_005_pos', 'zpool_add_006_pos', 'zpool_add_007_neg', 'zpool_add_008_neg', 'zpool_add_009_neg', 'zpool_add_010_pos', 'add-o_ashift', 'add_prop_ashift', 'add_nested_replacing_spare'] tags = ['functional', 'cli_root', 'zpool_add'] [tests/functional/cli_root/zpool_attach] tests = ['zpool_attach_001_neg', 'attach-o_ashift'] tags = ['functional', 'cli_root', 'zpool_attach'] [tests/functional/cli_root/zpool_clear] tests = ['zpool_clear_001_pos', 'zpool_clear_002_neg', 'zpool_clear_003_neg', 'zpool_clear_readonly'] tags = ['functional', 'cli_root', 'zpool_clear'] [tests/functional/cli_root/zpool_create] tests = ['zpool_create_001_pos', 'zpool_create_002_pos', 'zpool_create_003_pos', 'zpool_create_004_pos', 'zpool_create_005_pos', 'zpool_create_006_pos', 'zpool_create_007_neg', 'zpool_create_008_pos', 'zpool_create_009_neg', 'zpool_create_010_neg', 'zpool_create_011_neg', 'zpool_create_012_neg', 'zpool_create_014_neg', 'zpool_create_015_neg', 'zpool_create_016_pos', 'zpool_create_017_neg', 'zpool_create_018_pos', 'zpool_create_019_pos', 'zpool_create_020_pos', 'zpool_create_021_pos', 'zpool_create_022_pos', 'zpool_create_023_neg', 'zpool_create_024_pos', 'zpool_create_encrypted', 'zpool_create_crypt_combos', 'zpool_create_features_001_pos', 'zpool_create_features_002_pos', 'zpool_create_features_003_pos', 'zpool_create_features_004_neg', 'zpool_create_features_005_pos', 'create-o_ashift', 'zpool_create_tempname'] tags = ['functional', 'cli_root', 'zpool_create'] [tests/functional/cli_root/zpool_destroy] tests = ['zpool_destroy_001_pos', 'zpool_destroy_002_pos', 'zpool_destroy_003_neg'] pre = post = tags = ['functional', 'cli_root', 'zpool_destroy'] [tests/functional/cli_root/zpool_detach] tests = ['zpool_detach_001_neg'] tags = ['functional', 'cli_root', 'zpool_detach'] [tests/functional/cli_root/zpool_events] tests = ['zpool_events_clear', 'zpool_events_cliargs', 'zpool_events_follow', 'zpool_events_poolname', 'zpool_events_errors'] tags = ['functional', 'cli_root', 'zpool_events'] [tests/functional/cli_root/zpool_expand] tests = ['zpool_expand_001_pos', 'zpool_expand_002_pos', 'zpool_expand_003_neg', 'zpool_expand_004_pos', 'zpool_expand_005_pos'] tags = ['functional', 'cli_root', 'zpool_expand'] [tests/functional/cli_root/zpool_export] tests = ['zpool_export_001_pos', 'zpool_export_002_pos', 'zpool_export_003_neg', 'zpool_export_004_pos'] tags = ['functional', 'cli_root', 'zpool_export'] [tests/functional/cli_root/zpool_get] tests = ['zpool_get_001_pos', 'zpool_get_002_pos', 'zpool_get_003_pos', 'zpool_get_004_neg', 'zpool_get_005_pos'] tags = ['functional', 'cli_root', 'zpool_get'] [tests/functional/cli_root/zpool_history] tests = ['zpool_history_001_neg', 'zpool_history_002_pos'] tags = ['functional', 'cli_root', 'zpool_history'] [tests/functional/cli_root/zpool_import] tests = ['zpool_import_001_pos', 'zpool_import_002_pos', 'zpool_import_003_pos', 'zpool_import_004_pos', 'zpool_import_005_pos', 'zpool_import_006_pos', 'zpool_import_007_pos', 'zpool_import_008_pos', 'zpool_import_009_neg', 'zpool_import_010_pos', 'zpool_import_011_neg', 'zpool_import_012_pos', 'zpool_import_013_neg', 'zpool_import_014_pos', 'zpool_import_015_pos', 'zpool_import_features_001_pos', 'zpool_import_features_002_neg', 'zpool_import_features_003_pos', 'zpool_import_missing_001_pos', 'zpool_import_missing_002_pos', 'zpool_import_missing_003_pos', 'zpool_import_rename_001_pos', 'zpool_import_all_001_pos', 'zpool_import_encrypted', 'zpool_import_encrypted_load', 'zpool_import_errata3', 'zpool_import_errata4', 'import_cachefile_device_added', 'import_cachefile_device_removed', 'import_cachefile_device_replaced', 'import_cachefile_mirror_attached', 'import_cachefile_mirror_detached', 'import_cachefile_shared_device', 'import_devices_missing', 'import_paths_changed', 'import_rewind_config_changed', 'import_rewind_device_replaced'] tags = ['functional', 'cli_root', 'zpool_import'] [tests/functional/cli_root/zpool_labelclear] tests = ['zpool_labelclear_active', 'zpool_labelclear_exported', 'zpool_labelclear_removed', 'zpool_labelclear_valid'] pre = post = tags = ['functional', 'cli_root', 'zpool_labelclear'] [tests/functional/cli_root/zpool_initialize] tests = ['zpool_initialize_attach_detach_add_remove', 'zpool_initialize_import_export', 'zpool_initialize_offline_export_import_online', 'zpool_initialize_online_offline', 'zpool_initialize_split', 'zpool_initialize_start_and_cancel_neg', 'zpool_initialize_start_and_cancel_pos', 'zpool_initialize_suspend_resume', 'zpool_initialize_unsupported_vdevs', 'zpool_initialize_verify_checksums', 'zpool_initialize_verify_initialized'] pre = tags = ['functional', 'cli_root', 'zpool_initialize'] [tests/functional/cli_root/zpool_offline] tests = ['zpool_offline_001_pos', 'zpool_offline_002_neg', 'zpool_offline_003_pos'] tags = ['functional', 'cli_root', 'zpool_offline'] [tests/functional/cli_root/zpool_online] tests = ['zpool_online_001_pos', 'zpool_online_002_neg'] tags = ['functional', 'cli_root', 'zpool_online'] [tests/functional/cli_root/zpool_remove] tests = ['zpool_remove_001_neg', 'zpool_remove_002_pos', 'zpool_remove_003_pos'] tags = ['functional', 'cli_root', 'zpool_remove'] [tests/functional/cli_root/zpool_reopen] tests = ['zpool_reopen_001_pos', 'zpool_reopen_002_pos', 'zpool_reopen_003_pos', 'zpool_reopen_004_pos', 'zpool_reopen_005_pos', 'zpool_reopen_006_neg', 'zpool_reopen_007_pos'] tags = ['functional', 'cli_root', 'zpool_reopen'] [tests/functional/cli_root/zpool_replace] tests = ['zpool_replace_001_neg', 'replace-o_ashift', 'replace_prop_ashift'] tags = ['functional', 'cli_root', 'zpool_replace'] [tests/functional/cli_root/zpool_resilver] tests = ['zpool_resilver_bad_args', 'zpool_resilver_restart'] tags = ['functional', 'cli_root', 'zpool_resilver'] [tests/functional/cli_root/zpool_scrub] tests = ['zpool_scrub_001_neg', 'zpool_scrub_002_pos', 'zpool_scrub_003_pos', 'zpool_scrub_004_pos', 'zpool_scrub_005_pos', 'zpool_scrub_encrypted_unloaded', 'zpool_scrub_print_repairing', 'zpool_scrub_offline_device', 'zpool_scrub_multiple_copies'] tags = ['functional', 'cli_root', 'zpool_scrub'] [tests/functional/cli_root/zpool_set] tests = ['zpool_set_001_pos', 'zpool_set_002_neg', 'zpool_set_003_neg', 'zpool_set_ashift', 'zpool_set_features'] tags = ['functional', 'cli_root', 'zpool_set'] [tests/functional/cli_root/zpool_split] tests = ['zpool_split_cliargs', 'zpool_split_devices', 'zpool_split_encryption', 'zpool_split_props', 'zpool_split_vdevs', 'zpool_split_resilver', 'zpool_split_wholedisk'] tags = ['functional', 'cli_root', 'zpool_split'] [tests/functional/cli_root/zpool_status] tests = ['zpool_status_001_pos', 'zpool_status_002_pos'] tags = ['functional', 'cli_root', 'zpool_status'] [tests/functional/cli_root/zpool_sync] tests = ['zpool_sync_001_pos', 'zpool_sync_002_neg'] tags = ['functional', 'cli_root', 'zpool_sync'] [tests/functional/cli_root/zpool_trim] tests = ['zpool_trim_attach_detach_add_remove', 'zpool_trim_import_export', 'zpool_trim_multiple', 'zpool_trim_neg', 'zpool_trim_offline_export_import_online', 'zpool_trim_online_offline', 'zpool_trim_partial', 'zpool_trim_rate', 'zpool_trim_rate_neg', 'zpool_trim_secure', 'zpool_trim_split', 'zpool_trim_start_and_cancel_neg', 'zpool_trim_start_and_cancel_pos', 'zpool_trim_suspend_resume', 'zpool_trim_unsupported_vdevs', 'zpool_trim_verify_checksums', 'zpool_trim_verify_trimmed'] tags = ['functional', 'zpool_trim'] [tests/functional/cli_root/zpool_upgrade] tests = ['zpool_upgrade_001_pos', 'zpool_upgrade_002_pos', 'zpool_upgrade_003_pos', 'zpool_upgrade_004_pos', 'zpool_upgrade_005_neg', 'zpool_upgrade_006_neg', 'zpool_upgrade_007_pos', 'zpool_upgrade_008_pos', 'zpool_upgrade_009_neg'] tags = ['functional', 'cli_root', 'zpool_upgrade'] [tests/functional/cli_user/misc] tests = ['zdb_001_neg', 'zfs_001_neg', 'zfs_allow_001_neg', 'zfs_clone_001_neg', 'zfs_create_001_neg', 'zfs_destroy_001_neg', 'zfs_get_001_neg', 'zfs_inherit_001_neg', 'zfs_mount_001_neg', 'zfs_promote_001_neg', 'zfs_receive_001_neg', 'zfs_rename_001_neg', 'zfs_rollback_001_neg', 'zfs_send_001_neg', 'zfs_set_001_neg', 'zfs_share_001_neg', 'zfs_snapshot_001_neg', 'zfs_unallow_001_neg', 'zfs_unmount_001_neg', 'zfs_unshare_001_neg', 'zfs_upgrade_001_neg', 'zpool_001_neg', 'zpool_add_001_neg', 'zpool_attach_001_neg', 'zpool_clear_001_neg', 'zpool_create_001_neg', 'zpool_destroy_001_neg', 'zpool_detach_001_neg', 'zpool_export_001_neg', 'zpool_get_001_neg', 'zpool_history_001_neg', 'zpool_import_001_neg', 'zpool_import_002_neg', 'zpool_offline_001_neg', 'zpool_online_001_neg', 'zpool_remove_001_neg', 'zpool_replace_001_neg', 'zpool_scrub_001_neg', 'zpool_set_001_neg', 'zpool_status_001_neg', 'zpool_upgrade_001_neg', 'arcstat_001_pos', 'arc_summary_001_pos', 'arc_summary_002_neg'] user = tags = ['functional', 'cli_user', 'misc'] [tests/functional/cli_user/zfs_list] tests = ['zfs_list_001_pos', 'zfs_list_002_pos', 'zfs_list_003_pos', 'zfs_list_004_neg', 'zfs_list_007_pos', 'zfs_list_008_neg'] user = tags = ['functional', 'cli_user', 'zfs_list'] [tests/functional/cli_user/zpool_iostat] tests = ['zpool_iostat_001_neg', 'zpool_iostat_002_pos', 'zpool_iostat_003_neg', 'zpool_iostat_004_pos', 'zpool_iostat_005_pos', 'zpool_iostat_-c_disable', 'zpool_iostat_-c_homedir', 'zpool_iostat_-c_searchpath'] user = tags = ['functional', 'cli_user', 'zpool_iostat'] [tests/functional/cli_user/zpool_list] tests = ['zpool_list_001_pos', 'zpool_list_002_neg'] user = tags = ['functional', 'cli_user', 'zpool_list'] [tests/functional/cli_user/zpool_status] tests = ['zpool_status_003_pos', 'zpool_status_-c_disable', 'zpool_status_-c_homedir', 'zpool_status_-c_searchpath'] user = tags = ['functional', 'cli_user', 'zpool_status'] [tests/functional/compression] tests = ['compress_001_pos', 'compress_002_pos', 'compress_003_pos', 'compress_004_pos'] tags = ['functional', 'compression'] [tests/functional/cp_files] tests = ['cp_files_001_pos'] tags = ['functional', 'cp_files'] [tests/functional/ctime] tests = ['ctime_001_pos' ] tags = ['functional', 'ctime'] [tests/functional/deadman] tests = ['deadman_sync', 'deadman_zio'] pre = post = tags = ['functional', 'deadman'] [tests/functional/delegate] tests = ['zfs_allow_001_pos', 'zfs_allow_002_pos', 'zfs_allow_003_pos', 'zfs_allow_004_pos', 'zfs_allow_005_pos', 'zfs_allow_006_pos', 'zfs_allow_007_pos', 'zfs_allow_008_pos', 'zfs_allow_009_neg', 'zfs_allow_010_pos', 'zfs_allow_011_neg', 'zfs_allow_012_neg', 'zfs_unallow_001_pos', 'zfs_unallow_002_pos', 'zfs_unallow_003_pos', 'zfs_unallow_004_pos', 'zfs_unallow_005_pos', 'zfs_unallow_006_pos', 'zfs_unallow_007_neg', 'zfs_unallow_008_neg'] tags = ['functional', 'delegate'] [tests/functional/devices] tests = ['devices_001_pos', 'devices_002_neg', 'devices_003_pos'] tags = ['functional', 'devices'] [tests/functional/events] tests = ['events_001_pos', 'events_002_pos', 'zed_rc_filter'] tags = ['functional', 'events'] [tests/functional/exec] tests = ['exec_001_pos', 'exec_002_neg'] tags = ['functional', 'exec'] [tests/functional/fault] tests = ['auto_offline_001_pos', 'auto_online_001_pos', 'auto_replace_001_pos', 'auto_spare_001_pos', 'auto_spare_002_pos', 'auto_spare_ashift', 'auto_spare_multiple', 'auto_spare_shared', 'scrub_after_resilver', 'decrypt_fault', 'decompress_fault', 'zpool_status_-s'] tags = ['functional', 'fault'] [tests/functional/features/async_destroy] tests = ['async_destroy_001_pos'] tags = ['functional', 'features', 'async_destroy'] [tests/functional/features/large_dnode] tests = ['large_dnode_001_pos', 'large_dnode_002_pos', 'large_dnode_003_pos', 'large_dnode_004_neg', 'large_dnode_005_pos', 'large_dnode_006_pos', 'large_dnode_007_neg', 'large_dnode_008_pos', 'large_dnode_009_pos'] tags = ['functional', 'features', 'large_dnode'] [tests/functional/grow] pre = post = tests = ['grow_pool_001_pos', 'grow_replicas_001_pos'] tags = ['functional', 'grow'] [tests/functional/history] tests = ['history_001_pos', 'history_002_pos', 'history_003_pos', 'history_004_pos', 'history_005_neg', 'history_006_neg', 'history_007_pos', 'history_008_pos', 'history_009_pos', 'history_010_pos'] tags = ['functional', 'history'] [tests/functional/hkdf] tests = ['run_hkdf_test'] tags = ['functional', 'hkdf'] [tests/functional/inheritance] tests = ['inherit_001_pos'] pre = tags = ['functional', 'inheritance'] [tests/functional/io] tests = ['sync', 'psync', 'libaio', 'posixaio', 'mmap'] tags = ['functional', 'io'] [tests/functional/inuse] tests = ['inuse_001_pos', 'inuse_003_pos', 'inuse_004_pos', 'inuse_005_pos', 'inuse_006_pos', 'inuse_007_pos', 'inuse_008_pos', 'inuse_009_pos'] post = tags = ['functional', 'inuse'] [tests/functional/large_files] tests = ['large_files_001_pos', 'large_files_002_pos'] tags = ['functional', 'large_files'] [tests/functional/largest_pool] tests = ['largest_pool_001_pos'] pre = post = tags = ['functional', 'largest_pool'] [tests/functional/limits] tests = ['filesystem_count', 'filesystem_limit', 'snapshot_count', 'snapshot_limit'] tags = ['functional', 'limits'] [tests/functional/link_count] tests = ['link_count_001', 'link_count_root_inode'] tags = ['functional', 'link_count'] [tests/functional/migration] tests = ['migration_001_pos', 'migration_002_pos', 'migration_003_pos', 'migration_004_pos', 'migration_005_pos', 'migration_006_pos', 'migration_007_pos', 'migration_008_pos', 'migration_009_pos', 'migration_010_pos', 'migration_011_pos', 'migration_012_pos'] tags = ['functional', 'migration'] [tests/functional/mmap] tests = ['mmap_write_001_pos', 'mmap_read_001_pos', 'mmap_libaio_001_pos'] tags = ['functional', 'mmap'] [tests/functional/mmp] tests = ['mmp_on_thread', 'mmp_on_uberblocks', 'mmp_on_off', 'mmp_interval', 'mmp_active_import', 'mmp_inactive_import', 'mmp_exported_import', 'mmp_write_uberblocks', 'mmp_reset_interval', 'multihost_history', 'mmp_on_zdb', 'mmp_write_distribution', 'mmp_hostid'] tags = ['functional', 'mmp'] [tests/functional/mount] tests = ['umount_001', 'umount_unlinked_drain', 'umountall_001'] tags = ['functional', 'mount'] [tests/functional/mv_files] tests = ['mv_files_001_pos', 'mv_files_002_pos', 'random_creation'] tags = ['functional', 'mv_files'] [tests/functional/nestedfs] tests = ['nestedfs_001_pos'] tags = ['functional', 'nestedfs'] [tests/functional/no_space] tests = ['enospc_001_pos', 'enospc_002_pos', 'enospc_003_pos', 'enospc_df'] tags = ['functional', 'no_space'] [tests/functional/nopwrite] tests = ['nopwrite_copies', 'nopwrite_mtime', 'nopwrite_negative', 'nopwrite_promoted_clone', 'nopwrite_recsize', 'nopwrite_sync', 'nopwrite_varying_compression', 'nopwrite_volume'] tags = ['functional', 'nopwrite'] [tests/functional/online_offline] tests = ['online_offline_001_pos', 'online_offline_002_neg', 'online_offline_003_neg'] tags = ['functional', 'online_offline'] [tests/functional/pool_checkpoint] tests = ['checkpoint_after_rewind', 'checkpoint_big_rewind', 'checkpoint_capacity', 'checkpoint_conf_change', 'checkpoint_discard', 'checkpoint_discard_busy', 'checkpoint_discard_many', 'checkpoint_indirect', 'checkpoint_invalid', 'checkpoint_lun_expsz', 'checkpoint_open', 'checkpoint_removal', 'checkpoint_rewind', 'checkpoint_ro_rewind', 'checkpoint_sm_scale', 'checkpoint_twice', 'checkpoint_vdev_add', 'checkpoint_zdb', 'checkpoint_zhack_feat'] tags = ['functional', 'pool_checkpoint'] timeout = 1800 [tests/functional/pool_names] tests = ['pool_names_001_pos', 'pool_names_002_neg'] pre = post = tags = ['functional', 'pool_names'] [tests/functional/poolversion] tests = ['poolversion_001_pos', 'poolversion_002_pos'] tags = ['functional', 'poolversion'] [tests/functional/privilege] tests = ['privilege_001_pos', 'privilege_002_pos'] tags = ['functional', 'privilege'] [tests/functional/procfs] tests = ['procfs_list_basic', 'procfs_list_concurrent_readers', 'procfs_list_stale_read', 'pool_state'] tags = ['functional', 'procfs'] [tests/functional/projectquota] tests = ['projectid_001_pos', 'projectid_002_pos', 'projectid_003_pos', 'projectquota_001_pos', 'projectquota_002_pos', 'projectquota_003_pos', 'projectquota_004_neg', 'projectquota_005_pos', 'projectquota_006_pos', 'projectquota_007_pos', 'projectquota_008_pos', 'projectquota_009_pos', 'projectspace_001_pos', 'projectspace_002_pos', 'projectspace_003_pos', 'projectspace_004_pos', 'projecttree_001_pos', 'projecttree_002_pos', 'projecttree_003_neg' ] tags = ['functional', 'projectquota'] [tests/functional/pyzfs] tests = ['pyzfs_unittest'] pre = post = tags = ['functional', 'pyzfs'] [tests/functional/quota] tests = ['quota_001_pos', 'quota_002_pos', 'quota_003_pos', 'quota_004_pos', 'quota_005_pos', 'quota_006_neg'] tags = ['functional', 'quota'] [tests/functional/raidz] tests = ['raidz_001_neg', 'raidz_002_pos'] tags = ['functional', 'raidz'] [tests/functional/redundancy] tests = ['redundancy_001_pos', 'redundancy_002_pos', 'redundancy_003_pos', 'redundancy_004_neg'] tags = ['functional', 'redundancy'] [tests/functional/refquota] tests = ['refquota_001_pos', 'refquota_002_pos', 'refquota_003_pos', 'refquota_004_pos', 'refquota_005_pos', 'refquota_006_neg', 'refquota_007_neg', 'refquota_008_neg'] tags = ['functional', 'refquota'] [tests/functional/refreserv] tests = ['refreserv_001_pos', 'refreserv_002_pos', 'refreserv_003_pos', 'refreserv_004_pos', 'refreserv_005_pos', 'refreserv_multi_raidz', 'refreserv_raidz'] tags = ['functional', 'refreserv'] [tests/functional/removal] pre = tests = ['removal_all_vdev', 'removal_cancel', 'removal_check_space', 'removal_condense_export', 'removal_multiple_indirection', 'removal_remap', 'removal_nopwrite', 'removal_remap_deadlists', 'removal_resume_export', 'removal_sanity', 'removal_with_add', 'removal_with_create_fs', 'removal_with_dedup', 'removal_with_errors', 'removal_with_export', 'removal_with_ganging', 'removal_with_faulted', 'removal_with_remap', 'removal_with_remove', 'removal_with_scrub', 'removal_with_send', 'removal_with_send_recv', 'removal_with_snapshot', 'removal_with_write', 'removal_with_zdb', 'remove_expanded', 'remove_mirror', 'remove_mirror_sanity', 'remove_raidz', 'remove_indirect'] tags = ['functional', 'removal'] [tests/functional/rename_dirs] tests = ['rename_dirs_001_pos'] tags = ['functional', 'rename_dirs'] [tests/functional/replacement] tests = ['replacement_001_pos', 'replacement_002_pos', 'replacement_003_pos'] tags = ['functional', 'replacement'] [tests/functional/reservation] tests = ['reservation_001_pos', 'reservation_002_pos', 'reservation_003_pos', 'reservation_004_pos', 'reservation_005_pos', 'reservation_006_pos', 'reservation_007_pos', 'reservation_008_pos', 'reservation_009_pos', 'reservation_010_pos', 'reservation_011_pos', 'reservation_012_pos', 'reservation_013_pos', 'reservation_014_pos', 'reservation_015_pos', 'reservation_016_pos', 'reservation_017_pos', 'reservation_018_pos', 'reservation_019_pos', 'reservation_020_pos', 'reservation_021_neg', 'reservation_022_pos'] tags = ['functional', 'reservation'] [tests/functional/resilver] tests = ['resilver_restart_001'] tags = ['functional', 'resilver'] [tests/functional/rootpool] tests = ['rootpool_002_neg', 'rootpool_003_neg', 'rootpool_007_pos'] tags = ['functional', 'rootpool'] [tests/functional/rsend] tests = ['rsend_001_pos', 'rsend_002_pos', 'rsend_003_pos', 'rsend_004_pos', 'rsend_005_pos', 'rsend_006_pos', 'rsend_007_pos', 'rsend_008_pos', 'rsend_009_pos', 'rsend_010_pos', 'rsend_011_pos', 'rsend_012_pos', 'rsend_013_pos', 'rsend_014_pos', 'rsend_019_pos', 'rsend_020_pos', 'rsend_021_pos', 'rsend_022_pos', 'rsend_024_pos', 'send-c_verify_ratio', 'send-c_verify_contents', 'send-c_props', 'send-c_incremental', 'send-c_volume', 'send-c_zstreamdump', 'send-c_lz4_disabled', 'send-c_recv_lz4_disabled', 'send-c_mixed_compression', 'send-c_stream_size_estimate', 'send-cD', 'send-c_embedded_blocks', 'send-c_resume', 'send-cpL_varied_recsize', 'send-c_recv_dedup', 'send_encrypted_files', 'send_encrypted_hierarchy', 'send_encrypted_props', 'send_encrypted_truncated_files', 'send_freeobjects', 'send_realloc_dnode_size', 'send_realloc_files', 'send_realloc_encrypted_files', 'send_spill_block', 'send_holds', 'send_hole_birth', 'send_mixed_raw', 'send-wDR_encrypted_zvol'] tags = ['functional', 'rsend'] [tests/functional/scrub_mirror] tests = ['scrub_mirror_001_pos', 'scrub_mirror_002_pos', 'scrub_mirror_003_pos', 'scrub_mirror_004_pos'] tags = ['functional', 'scrub_mirror'] [tests/functional/slog] tests = ['slog_001_pos', 'slog_002_pos', 'slog_003_pos', 'slog_004_pos', 'slog_005_pos', 'slog_006_pos', 'slog_007_pos', 'slog_008_neg', 'slog_009_neg', 'slog_010_neg', 'slog_011_neg', 'slog_012_neg', 'slog_013_pos', 'slog_014_pos', 'slog_015_neg', 'slog_replay_fs_001', 'slog_replay_fs_002', 'slog_replay_volume'] tags = ['functional', 'slog'] [tests/functional/snapshot] tests = ['clone_001_pos', 'rollback_001_pos', 'rollback_002_pos', 'rollback_003_pos', 'snapshot_001_pos', 'snapshot_002_pos', 'snapshot_003_pos', 'snapshot_004_pos', 'snapshot_005_pos', 'snapshot_006_pos', 'snapshot_007_pos', 'snapshot_008_pos', 'snapshot_009_pos', 'snapshot_010_pos', 'snapshot_011_pos', 'snapshot_012_pos', 'snapshot_013_pos', 'snapshot_014_pos', 'snapshot_015_pos', 'snapshot_016_pos', 'snapshot_017_pos'] tags = ['functional', 'snapshot'] [tests/functional/snapused] tests = ['snapused_001_pos', 'snapused_002_pos', 'snapused_003_pos', 'snapused_004_pos', 'snapused_005_pos'] tags = ['functional', 'snapused'] [tests/functional/sparse] tests = ['sparse_001_pos'] tags = ['functional', 'sparse'] [tests/functional/suid] tests = ['suid_write_to_suid', 'suid_write_to_sgid', 'suid_write_to_suid_sgid', 'suid_write_to_none'] tags = ['functional', 'suid'] [tests/functional/threadsappend] tests = ['threadsappend_001_pos'] tags = ['functional', 'threadsappend'] [tests/functional/tmpfile] tests = ['tmpfile_001_pos', 'tmpfile_002_pos', 'tmpfile_003_pos', 'tmpfile_stat_mode'] tags = ['functional', 'tmpfile'] [tests/functional/trim] tests = ['autotrim_integrity', 'autotrim_config', 'autotrim_trim_integrity', 'trim_integrity', 'trim_config'] tags = ['functional', 'trim'] [tests/functional/truncate] tests = ['truncate_001_pos', 'truncate_002_pos', 'truncate_timestamps'] tags = ['functional', 'truncate'] [tests/functional/upgrade] tests = ['upgrade_userobj_001_pos', 'upgrade_projectquota_001_pos', 'upgrade_readonly_pool'] tags = ['functional', 'upgrade'] [tests/functional/user_namespace] tests = ['user_namespace_001'] tags = ['functional', 'user_namespace'] [tests/functional/userquota] tests = [ 'userquota_001_pos', 'userquota_002_pos', 'userquota_003_pos', 'userquota_004_pos', 'userquota_005_neg', 'userquota_006_pos', 'userquota_007_pos', 'userquota_008_pos', 'userquota_009_pos', 'userquota_010_pos', 'userquota_011_pos', 'userquota_012_neg', 'userquota_013_pos', 'userspace_001_pos', 'userspace_002_pos', 'userspace_003_pos', 'groupspace_001_pos', 'groupspace_002_pos', 'groupspace_003_pos' ] tags = ['functional', 'userquota'] [tests/functional/vdev_zaps] tests = ['vdev_zaps_001_pos', 'vdev_zaps_002_pos', 'vdev_zaps_003_pos', 'vdev_zaps_004_pos', 'vdev_zaps_005_pos', 'vdev_zaps_006_pos', 'vdev_zaps_007_pos'] tags = ['functional', 'vdev_zaps'] [tests/functional/write_dirs] tests = ['write_dirs_001_pos', 'write_dirs_002_pos'] tags = ['functional', 'write_dirs'] [tests/functional/xattr] tests = ['xattr_001_pos', 'xattr_002_neg', 'xattr_003_neg', 'xattr_004_pos', 'xattr_005_pos', 'xattr_006_pos', 'xattr_007_neg', 'xattr_008_pos', 'xattr_009_neg', 'xattr_010_neg', 'xattr_011_pos', 'xattr_012_pos', 'xattr_013_pos'] tags = ['functional', 'xattr'] [tests/functional/zvol/zvol_ENOSPC] tests = ['zvol_ENOSPC_001_pos'] tags = ['functional', 'zvol', 'zvol_ENOSPC'] [tests/functional/zvol/zvol_cli] tests = ['zvol_cli_001_pos', 'zvol_cli_002_pos', 'zvol_cli_003_neg'] tags = ['functional', 'zvol', 'zvol_cli'] [tests/functional/zvol/zvol_misc] tests = ['zvol_misc_001_neg', 'zvol_misc_002_pos', 'zvol_misc_003_neg', 'zvol_misc_004_pos', 'zvol_misc_005_neg', 'zvol_misc_006_pos', 'zvol_misc_hierarchy', 'zvol_misc_rename_inuse', 'zvol_misc_snapdev', 'zvol_misc_volmode', 'zvol_misc_zil'] tags = ['functional', 'zvol', 'zvol_misc'] [tests/functional/zvol/zvol_swap] tests = ['zvol_swap_001_pos', 'zvol_swap_002_pos', 'zvol_swap_003_pos', 'zvol_swap_004_pos', 'zvol_swap_005_pos', 'zvol_swap_006_pos'] tags = ['functional', 'zvol', 'zvol_swap'] [tests/functional/libzfs] tests = ['many_fds', 'libzfs_input'] tags = ['functional', 'libzfs'] zfs-0.8.3/tests/runfiles/PaxHeaders.151519/longevity.run0000644000000000000000000000007413607166133021160 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.059540866 zfs-0.8.3/tests/runfiles/longevity.run0000644016037001603700000000114213607166133021153 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Delphix. All rights reserved. # [DEFAULT] quiet = False user = root timeout = 10800 outputdir = /var/tmp/test_results [/opt/zfs-tests/tests/longevity] tests = ['slop_space_test'] zfs-0.8.3/tests/runfiles/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612142777020455 xustar000000000000000030 mtime=1579730431.482205931 30 atime=1579730453.277905724 29 ctime=1579730473.06554106 zfs-0.8.3/tests/runfiles/Makefile.in0000664016037001603700000005555513612142777020501 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/runfiles DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/runfiles ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_DATA = \ linux.run \ longevity.run \ perf-regression.run all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/runfiles/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/runfiles/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/PaxHeaders.151519/zfs-tests0000644000000000000000000000013013612143051016427 xustar000000000000000029 mtime=1579730473.35055021 30 atime=1579730489.078055195 29 ctime=1579730473.35055021 zfs-0.8.3/tests/zfs-tests/0000775016037001603700000000000013612143051016512 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133020561 xustar000000000000000030 atime=1579730431.707213155 30 ctime=1579730473.338549826 zfs-0.8.3/tests/zfs-tests/Makefile.am0000644016037001603700000000004613607166133020556 0ustar00hutter2hutter200000000000000SUBDIRS = cmd include tests callbacks zfs-0.8.3/tests/zfs-tests/PaxHeaders.151519/include0000644000000000000000000000013213612143052020055 xustar000000000000000030 mtime=1579730474.797596674 30 atime=1579730489.078055195 30 ctime=1579730474.797596674 zfs-0.8.3/tests/zfs-tests/include/0000775016037001603700000000000013612143052020136 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/libtest.shlib0000644000000000000000000000007413612141523022631 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.783596223 zfs-0.8.3/tests/zfs-tests/include/libtest.shlib0000644016037001603700000022203013612141523022625 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # Copyright (c) 2012, 2017 by Delphix. All rights reserved. # Copyright (c) 2017 by Tim Chase. All rights reserved. # Copyright (c) 2017 by Nexenta Systems, Inc. All rights reserved. # Copyright (c) 2017 Lawrence Livermore National Security, LLC. # Copyright (c) 2017 Datto Inc. # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # Use is subject to license terms. # . ${STF_TOOLS}/include/logapi.shlib . ${STF_SUITE}/include/math.shlib . ${STF_SUITE}/include/blkdev.shlib # # Apply constrained path when available. This is required since the # PATH may have been modified by sudo's secure_path behavior. # if [ -n "$STF_PATH" ]; then PATH="$STF_PATH" fi # # Generic dot version comparison function # # Returns success when version $1 is greater than or equal to $2. # function compare_version_gte { if [[ "$(printf "$1\n$2" | sort -V | tail -n1)" == "$1" ]]; then return 0 else return 1 fi } # Linux kernel version comparison function # # $1 Linux version ("4.10", "2.6.32") or blank for installed Linux version # # Used for comparison: if [ $(linux_version) -ge $(linux_version "2.6.32") ] # function linux_version { typeset ver="$1" [[ -z "$ver" ]] && ver=$(uname -r | grep -Eo "^[0-9]+\.[0-9]+\.[0-9]+") typeset version=$(echo $ver | cut -d '.' -f 1) typeset major=$(echo $ver | cut -d '.' -f 2) typeset minor=$(echo $ver | cut -d '.' -f 3) [[ -z "$version" ]] && version=0 [[ -z "$major" ]] && major=0 [[ -z "$minor" ]] && minor=0 echo $((version * 10000 + major * 100 + minor)) } # Determine if this is a Linux test system # # Return 0 if platform Linux, 1 if otherwise function is_linux { if [[ $(uname -o) == "GNU/Linux" ]]; then return 0 else return 1 fi } # Determine if this is a 32-bit system # # Return 0 if platform is 32-bit, 1 if otherwise function is_32bit { if [[ $(getconf LONG_BIT) == "32" ]]; then return 0 else return 1 fi } # Determine if kmemleak is enabled # # Return 0 if kmemleak is enabled, 1 if otherwise function is_kmemleak { if is_linux && [[ -e /sys/kernel/debug/kmemleak ]]; then return 0 else return 1 fi } # Determine whether a dataset is mounted # # $1 dataset name # $2 filesystem type; optional - defaulted to zfs # # Return 0 if dataset is mounted; 1 if unmounted; 2 on error function ismounted { typeset fstype=$2 [[ -z $fstype ]] && fstype=zfs typeset out dir name ret case $fstype in zfs) if [[ "$1" == "/"* ]] ; then for out in $(zfs mount | awk '{print $2}'); do [[ $1 == $out ]] && return 0 done else for out in $(zfs mount | awk '{print $1}'); do [[ $1 == $out ]] && return 0 done fi ;; ufs|nfs) out=$(df -F $fstype $1 2>/dev/null) ret=$? (($ret != 0)) && return $ret dir=${out%%\(*} dir=${dir%% *} name=${out##*\(} name=${name%%\)*} name=${name%% *} [[ "$1" == "$dir" || "$1" == "$name" ]] && return 0 ;; ext*) out=$(df -t $fstype $1 2>/dev/null) return $? ;; zvol) if [[ -L "$ZVOL_DEVDIR/$1" ]]; then link=$(readlink -f $ZVOL_DEVDIR/$1) [[ -n "$link" ]] && \ mount | grep -q "^$link" && \ return 0 fi ;; esac return 1 } # Return 0 if a dataset is mounted; 1 otherwise # # $1 dataset name # $2 filesystem type; optional - defaulted to zfs function mounted { ismounted $1 $2 (($? == 0)) && return 0 return 1 } # Return 0 if a dataset is unmounted; 1 otherwise # # $1 dataset name # $2 filesystem type; optional - defaulted to zfs function unmounted { ismounted $1 $2 (($? == 1)) && return 0 return 1 } # split line on "," # # $1 - line to split function splitline { echo $1 | sed "s/,/ /g" } function default_setup { default_setup_noexit "$@" log_pass } function default_setup_no_mountpoint { default_setup_noexit "$1" "$2" "$3" "yes" log_pass } # # Given a list of disks, setup storage pools and datasets. # function default_setup_noexit { typeset disklist=$1 typeset container=$2 typeset volume=$3 typeset no_mountpoint=$4 log_note begin default_setup_noexit if is_global_zone; then if poolexists $TESTPOOL ; then destroy_pool $TESTPOOL fi [[ -d /$TESTPOOL ]] && rm -rf /$TESTPOOL log_must zpool create -f $TESTPOOL $disklist else reexport_pool fi rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR mkdir -p $TESTDIR || log_unresolved Could not create $TESTDIR log_must zfs create $TESTPOOL/$TESTFS if [[ -z $no_mountpoint ]]; then log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS fi if [[ -n $container ]]; then rm -rf $TESTDIR1 || \ log_unresolved Could not remove $TESTDIR1 mkdir -p $TESTDIR1 || \ log_unresolved Could not create $TESTDIR1 log_must zfs create $TESTPOOL/$TESTCTR log_must zfs set canmount=off $TESTPOOL/$TESTCTR log_must zfs create $TESTPOOL/$TESTCTR/$TESTFS1 if [[ -z $no_mountpoint ]]; then log_must zfs set mountpoint=$TESTDIR1 \ $TESTPOOL/$TESTCTR/$TESTFS1 fi fi if [[ -n $volume ]]; then if is_global_zone ; then log_must zfs create -V $VOLSIZE $TESTPOOL/$TESTVOL block_device_wait else log_must zfs create $TESTPOOL/$TESTVOL fi fi } # # Given a list of disks, setup a storage pool, file system and # a container. # function default_container_setup { typeset disklist=$1 default_setup "$disklist" "true" } # # Given a list of disks, setup a storage pool,file system # and a volume. # function default_volume_setup { typeset disklist=$1 default_setup "$disklist" "" "true" } # # Given a list of disks, setup a storage pool,file system, # a container and a volume. # function default_container_volume_setup { typeset disklist=$1 default_setup "$disklist" "true" "true" } # # Create a snapshot on a filesystem or volume. Defaultly create a snapshot on # filesystem # # $1 Existing filesystem or volume name. Default, $TESTPOOL/$TESTFS # $2 snapshot name. Default, $TESTSNAP # function create_snapshot { typeset fs_vol=${1:-$TESTPOOL/$TESTFS} typeset snap=${2:-$TESTSNAP} [[ -z $fs_vol ]] && log_fail "Filesystem or volume's name is undefined." [[ -z $snap ]] && log_fail "Snapshot's name is undefined." if snapexists $fs_vol@$snap; then log_fail "$fs_vol@$snap already exists." fi datasetexists $fs_vol || \ log_fail "$fs_vol must exist." log_must zfs snapshot $fs_vol@$snap } # # Create a clone from a snapshot, default clone name is $TESTCLONE. # # $1 Existing snapshot, $TESTPOOL/$TESTFS@$TESTSNAP is default. # $2 Clone name, $TESTPOOL/$TESTCLONE is default. # function create_clone # snapshot clone { typeset snap=${1:-$TESTPOOL/$TESTFS@$TESTSNAP} typeset clone=${2:-$TESTPOOL/$TESTCLONE} [[ -z $snap ]] && \ log_fail "Snapshot name is undefined." [[ -z $clone ]] && \ log_fail "Clone name is undefined." log_must zfs clone $snap $clone } # # Create a bookmark of the given snapshot. Defaultly create a bookmark on # filesystem. # # $1 Existing filesystem or volume name. Default, $TESTFS # $2 Existing snapshot name. Default, $TESTSNAP # $3 bookmark name. Default, $TESTBKMARK # function create_bookmark { typeset fs_vol=${1:-$TESTFS} typeset snap=${2:-$TESTSNAP} typeset bkmark=${3:-$TESTBKMARK} [[ -z $fs_vol ]] && log_fail "Filesystem or volume's name is undefined." [[ -z $snap ]] && log_fail "Snapshot's name is undefined." [[ -z $bkmark ]] && log_fail "Bookmark's name is undefined." if bkmarkexists $fs_vol#$bkmark; then log_fail "$fs_vol#$bkmark already exists." fi datasetexists $fs_vol || \ log_fail "$fs_vol must exist." snapexists $fs_vol@$snap || \ log_fail "$fs_vol@$snap must exist." log_must zfs bookmark $fs_vol@$snap $fs_vol#$bkmark } # # Create a temporary clone result of an interrupted resumable 'zfs receive' # $1 Destination filesystem name. Must not exist, will be created as the result # of this function along with its %recv temporary clone # $2 Source filesystem name. Must not exist, will be created and destroyed # function create_recv_clone { typeset recvfs="$1" typeset sendfs="${2:-$TESTPOOL/create_recv_clone}" typeset snap="$sendfs@snap1" typeset incr="$sendfs@snap2" typeset mountpoint="$TESTDIR/create_recv_clone" typeset sendfile="$TESTDIR/create_recv_clone.zsnap" [[ -z $recvfs ]] && log_fail "Recv filesystem's name is undefined." datasetexists $recvfs && log_fail "Recv filesystem must not exist." datasetexists $sendfs && log_fail "Send filesystem must not exist." log_must zfs create -o mountpoint="$mountpoint" $sendfs log_must zfs snapshot $snap log_must eval "zfs send $snap | zfs recv -u $recvfs" log_must mkfile 1m "$mountpoint/data" log_must zfs snapshot $incr log_must eval "zfs send -i $snap $incr | dd bs=10K count=1 > $sendfile" log_mustnot eval "zfs recv -su $recvfs < $sendfile" destroy_dataset "$sendfs" "-r" log_must rm -f "$sendfile" if [[ $(get_prop 'inconsistent' "$recvfs/%recv") -ne 1 ]]; then log_fail "Error creating temporary $recvfs/%recv clone" fi } function default_mirror_setup { default_mirror_setup_noexit $1 $2 $3 log_pass } # # Given a pair of disks, set up a storage pool and dataset for the mirror # @parameters: $1 the primary side of the mirror # $2 the secondary side of the mirror # @uses: ZPOOL ZFS TESTPOOL TESTFS function default_mirror_setup_noexit { readonly func="default_mirror_setup_noexit" typeset primary=$1 typeset secondary=$2 [[ -z $primary ]] && \ log_fail "$func: No parameters passed" [[ -z $secondary ]] && \ log_fail "$func: No secondary partition passed" [[ -d /$TESTPOOL ]] && rm -rf /$TESTPOOL log_must zpool create -f $TESTPOOL mirror $@ log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } # # create a number of mirrors. # We create a number($1) of 2 way mirrors using the pairs of disks named # on the command line. These mirrors are *not* mounted # @parameters: $1 the number of mirrors to create # $... the devices to use to create the mirrors on # @uses: ZPOOL ZFS TESTPOOL function setup_mirrors { typeset -i nmirrors=$1 shift while ((nmirrors > 0)); do log_must test -n "$1" -a -n "$2" [[ -d /$TESTPOOL$nmirrors ]] && rm -rf /$TESTPOOL$nmirrors log_must zpool create -f $TESTPOOL$nmirrors mirror $1 $2 shift 2 ((nmirrors = nmirrors - 1)) done } # # create a number of raidz pools. # We create a number($1) of 2 raidz pools using the pairs of disks named # on the command line. These pools are *not* mounted # @parameters: $1 the number of pools to create # $... the devices to use to create the pools on # @uses: ZPOOL ZFS TESTPOOL function setup_raidzs { typeset -i nraidzs=$1 shift while ((nraidzs > 0)); do log_must test -n "$1" -a -n "$2" [[ -d /$TESTPOOL$nraidzs ]] && rm -rf /$TESTPOOL$nraidzs log_must zpool create -f $TESTPOOL$nraidzs raidz $1 $2 shift 2 ((nraidzs = nraidzs - 1)) done } # # Destroy the configured testpool mirrors. # the mirrors are of the form ${TESTPOOL}{number} # @uses: ZPOOL ZFS TESTPOOL function destroy_mirrors { default_cleanup_noexit log_pass } # # Given a minimum of two disks, set up a storage pool and dataset for the raid-z # $1 the list of disks # function default_raidz_setup { typeset disklist="$*" disks=(${disklist[*]}) if [[ ${#disks[*]} -lt 2 ]]; then log_fail "A raid-z requires a minimum of two disks." fi [[ -d /$TESTPOOL ]] && rm -rf /$TESTPOOL log_must zpool create -f $TESTPOOL raidz $disklist log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_pass } # # Common function used to cleanup storage pools and datasets. # # Invoked at the start of the test suite to ensure the system # is in a known state, and also at the end of each set of # sub-tests to ensure errors from one set of tests doesn't # impact the execution of the next set. function default_cleanup { default_cleanup_noexit log_pass } # # Utility function used to list all available pool names. # # NOTE: $KEEP is a variable containing pool names, separated by a newline # character, that must be excluded from the returned list. # function get_all_pools { zpool list -H -o name | grep -Fvx "$KEEP" | grep -v "$NO_POOLS" } function default_cleanup_noexit { typeset pool="" # # Destroying the pool will also destroy any # filesystems it contains. # if is_global_zone; then zfs unmount -a > /dev/null 2>&1 ALL_POOLS=$(get_all_pools) # Here, we loop through the pools we're allowed to # destroy, only destroying them if it's safe to do # so. while [ ! -z ${ALL_POOLS} ] do for pool in ${ALL_POOLS} do if safe_to_destroy_pool $pool ; then destroy_pool $pool fi ALL_POOLS=$(get_all_pools) done done zfs mount -a else typeset fs="" for fs in $(zfs list -H -o name \ | grep "^$ZONE_POOL/$ZONE_CTR[01234]/"); do destroy_dataset "$fs" "-Rf" done # Need cleanup here to avoid garbage dir left. for fs in $(zfs list -H -o name); do [[ $fs == /$ZONE_POOL ]] && continue [[ -d $fs ]] && log_must rm -rf $fs/* done # # Reset the $ZONE_POOL/$ZONE_CTR[01234] file systems property to # the default value # for fs in $(zfs list -H -o name); do if [[ $fs == $ZONE_POOL/$ZONE_CTR[01234] ]]; then log_must zfs set reservation=none $fs log_must zfs set recordsize=128K $fs log_must zfs set mountpoint=/$fs $fs typeset enc="" enc=$(get_prop encryption $fs) if [[ $? -ne 0 ]] || [[ -z "$enc" ]] || \ [[ "$enc" == "off" ]]; then log_must zfs set checksum=on $fs fi log_must zfs set compression=off $fs log_must zfs set atime=on $fs log_must zfs set devices=off $fs log_must zfs set exec=on $fs log_must zfs set setuid=on $fs log_must zfs set readonly=off $fs log_must zfs set snapdir=hidden $fs log_must zfs set aclmode=groupmask $fs log_must zfs set aclinherit=secure $fs fi done fi [[ -d $TESTDIR ]] && \ log_must rm -rf $TESTDIR disk1=${DISKS%% *} if is_mpath_device $disk1; then delete_partitions fi rm -f $TEST_BASE_DIR/{err,out} } # # Common function used to cleanup storage pools, file systems # and containers. # function default_container_cleanup { if ! is_global_zone; then reexport_pool fi ismounted $TESTPOOL/$TESTCTR/$TESTFS1 [[ $? -eq 0 ]] && \ log_must zfs unmount $TESTPOOL/$TESTCTR/$TESTFS1 destroy_dataset "$TESTPOOL/$TESTCTR/$TESTFS1" "-R" destroy_dataset "$TESTPOOL/$TESTCTR" "-Rf" [[ -e $TESTDIR1 ]] && \ log_must rm -rf $TESTDIR1 > /dev/null 2>&1 default_cleanup } # # Common function used to cleanup snapshot of file system or volume. Default to # delete the file system's snapshot # # $1 snapshot name # function destroy_snapshot { typeset snap=${1:-$TESTPOOL/$TESTFS@$TESTSNAP} if ! snapexists $snap; then log_fail "'$snap' does not exist." fi # # For the sake of the value which come from 'get_prop' is not equal # to the really mountpoint when the snapshot is unmounted. So, firstly # check and make sure this snapshot's been mounted in current system. # typeset mtpt="" if ismounted $snap; then mtpt=$(get_prop mountpoint $snap) (($? != 0)) && \ log_fail "get_prop mountpoint $snap failed." fi destroy_dataset "$snap" [[ $mtpt != "" && -d $mtpt ]] && \ log_must rm -rf $mtpt } # # Common function used to cleanup clone. # # $1 clone name # function destroy_clone { typeset clone=${1:-$TESTPOOL/$TESTCLONE} if ! datasetexists $clone; then log_fail "'$clone' does not existed." fi # With the same reason in destroy_snapshot typeset mtpt="" if ismounted $clone; then mtpt=$(get_prop mountpoint $clone) (($? != 0)) && \ log_fail "get_prop mountpoint $clone failed." fi destroy_dataset "$clone" [[ $mtpt != "" && -d $mtpt ]] && \ log_must rm -rf $mtpt } # # Common function used to cleanup bookmark of file system or volume. Default # to delete the file system's bookmark. # # $1 bookmark name # function destroy_bookmark { typeset bkmark=${1:-$TESTPOOL/$TESTFS#$TESTBKMARK} if ! bkmarkexists $bkmark; then log_fail "'$bkmarkp' does not existed." fi destroy_dataset "$bkmark" } # Return 0 if a snapshot exists; $? otherwise # # $1 - snapshot name function snapexists { zfs list -H -t snapshot "$1" > /dev/null 2>&1 return $? } # # Return 0 if a bookmark exists; $? otherwise # # $1 - bookmark name # function bkmarkexists { zfs list -H -t bookmark "$1" > /dev/null 2>&1 return $? } # # Set a property to a certain value on a dataset. # Sets a property of the dataset to the value as passed in. # @param: # $1 dataset who's property is being set # $2 property to set # $3 value to set property to # @return: # 0 if the property could be set. # non-zero otherwise. # @use: ZFS # function dataset_setprop { typeset fn=dataset_setprop if (($# < 3)); then log_note "$fn: Insufficient parameters (need 3, had $#)" return 1 fi typeset output= output=$(zfs set $2=$3 $1 2>&1) typeset rv=$? if ((rv != 0)); then log_note "Setting property on $1 failed." log_note "property $2=$3" log_note "Return Code: $rv" log_note "Output: $output" return $rv fi return 0 } # # Assign suite defined dataset properties. # This function is used to apply the suite's defined default set of # properties to a dataset. # @parameters: $1 dataset to use # @uses: ZFS COMPRESSION_PROP CHECKSUM_PROP # @returns: # 0 if the dataset has been altered. # 1 if no pool name was passed in. # 2 if the dataset could not be found. # 3 if the dataset could not have it's properties set. # function dataset_set_defaultproperties { typeset dataset="$1" [[ -z $dataset ]] && return 1 typeset confset= typeset -i found=0 for confset in $(zfs list); do if [[ $dataset = $confset ]]; then found=1 break fi done [[ $found -eq 0 ]] && return 2 if [[ -n $COMPRESSION_PROP ]]; then dataset_setprop $dataset compression $COMPRESSION_PROP || \ return 3 log_note "Compression set to '$COMPRESSION_PROP' on $dataset" fi if [[ -n $CHECKSUM_PROP ]]; then dataset_setprop $dataset checksum $CHECKSUM_PROP || \ return 3 log_note "Checksum set to '$CHECKSUM_PROP' on $dataset" fi return 0 } # # Check a numeric assertion # @parameter: $@ the assertion to check # @output: big loud notice if assertion failed # @use: log_fail # function assert { (($@)) || log_fail "$@" } # # Function to format partition size of a disk # Given a disk cxtxdx reduces all partitions # to 0 size # function zero_partitions # { typeset diskname=$1 typeset i if is_linux; then DSK=$DEV_DSKDIR/$diskname DSK=$(echo $DSK | sed -e "s|//|/|g") log_must parted $DSK -s -- mklabel gpt blockdev --rereadpt $DSK 2>/dev/null block_device_wait else for i in 0 1 3 4 5 6 7 do log_must set_partition $i "" 0mb $diskname done fi return 0 } # # Given a slice, size and disk, this function # formats the slice to the specified size. # Size should be specified with units as per # the `format` command requirements eg. 100mb 3gb # # NOTE: This entire interface is problematic for the Linux parted utility # which requires the end of the partition to be specified. It would be # best to retire this interface and replace it with something more flexible. # At the moment a best effort is made. # # arguments: function set_partition { typeset -i slicenum=$1 typeset start=$2 typeset size=$3 typeset disk=$4 if is_linux; then if [[ -z $size || -z $disk ]]; then log_fail "The size or disk name is unspecified." fi [[ -n $DEV_DSKDIR ]] && disk=$DEV_DSKDIR/$disk typeset size_mb=${size%%[mMgG]} size_mb=${size_mb%%[mMgG][bB]} if [[ ${size:1:1} == 'g' ]]; then ((size_mb = size_mb * 1024)) fi # Create GPT partition table when setting slice 0 or # when the device doesn't already contain a GPT label. parted $disk -s -- print 1 >/dev/null typeset ret_val=$? if [[ $slicenum -eq 0 || $ret_val -ne 0 ]]; then parted $disk -s -- mklabel gpt if [[ $? -ne 0 ]]; then log_note "Failed to create GPT partition table on $disk" return 1 fi fi # When no start is given align on the first cylinder. if [[ -z "$start" ]]; then start=1 fi # Determine the cylinder size for the device and using # that calculate the end offset in cylinders. typeset -i cly_size_kb=0 cly_size_kb=$(parted -m $disk -s -- \ unit cyl print | head -3 | tail -1 | \ awk -F '[:k.]' '{print $4}') ((end = (size_mb * 1024 / cly_size_kb) + start)) parted $disk -s -- \ mkpart part$slicenum ${start}cyl ${end}cyl typeset ret_val=$? if [[ $ret_val -ne 0 ]]; then log_note "Failed to create partition $slicenum on $disk" return 1 fi blockdev --rereadpt $disk 2>/dev/null block_device_wait $disk else if [[ -z $slicenum || -z $size || -z $disk ]]; then log_fail "The slice, size or disk name is unspecified." fi typeset format_file=/var/tmp/format_in.$$ echo "partition" >$format_file echo "$slicenum" >> $format_file echo "" >> $format_file echo "" >> $format_file echo "$start" >> $format_file echo "$size" >> $format_file echo "label" >> $format_file echo "" >> $format_file echo "q" >> $format_file echo "q" >> $format_file format -e -s -d $disk -f $format_file typeset ret_val=$? rm -f $format_file fi if [[ $ret_val -ne 0 ]]; then log_note "Unable to format $disk slice $slicenum to $size" return 1 fi return 0 } # # Delete all partitions on all disks - this is specifically for the use of multipath # devices which currently can only be used in the test suite as raw/un-partitioned # devices (ie a zpool cannot be created on a whole mpath device that has partitions) # function delete_partitions { typeset disk if [[ -z $DISKSARRAY ]]; then DISKSARRAY=$DISKS fi if is_linux; then typeset -i part for disk in $DISKSARRAY; do for (( part = 1; part < MAX_PARTITIONS; part++ )); do typeset partition=${disk}${SLICE_PREFIX}${part} parted $DEV_DSKDIR/$disk -s rm $part > /dev/null 2>&1 if lsblk | grep -qF ${partition}; then log_fail "Partition ${partition} not deleted" else log_note "Partition ${partition} deleted" fi done done fi } # # Get the end cyl of the given slice # function get_endslice # { typeset disk=$1 typeset slice=$2 if [[ -z $disk || -z $slice ]] ; then log_fail "The disk name or slice number is unspecified." fi if is_linux; then endcyl=$(parted -s $DEV_DSKDIR/$disk -- unit cyl print | \ grep "part${slice}" | \ awk '{print $3}' | \ sed 's,cyl,,') ((endcyl = (endcyl + 1))) else disk=${disk#/dev/dsk/} disk=${disk#/dev/rdsk/} disk=${disk%s*} typeset -i ratio=0 ratio=$(prtvtoc /dev/rdsk/${disk}s2 | \ grep "sectors\/cylinder" | \ awk '{print $2}') if ((ratio == 0)); then return fi typeset -i endcyl=$(prtvtoc -h /dev/rdsk/${disk}s2 | nawk -v token="$slice" '{if ($1==token) print $6}') ((endcyl = (endcyl + 1) / ratio)) fi echo $endcyl } # # Given a size,disk and total slice number, this function formats the # disk slices from 0 to the total slice number with the same specified # size. # function partition_disk # { typeset -i i=0 typeset slice_size=$1 typeset disk_name=$2 typeset total_slices=$3 typeset cyl zero_partitions $disk_name while ((i < $total_slices)); do if ! is_linux; then if ((i == 2)); then ((i = i + 1)) continue fi fi log_must set_partition $i "$cyl" $slice_size $disk_name cyl=$(get_endslice $disk_name $i) ((i = i+1)) done } # # This function continues to write to a filenum number of files into dirnum # number of directories until either file_write returns an error or the # maximum number of files per directory have been written. # # Usage: # fill_fs [destdir] [dirnum] [filenum] [bytes] [num_writes] [data] # # Return value: 0 on success # non 0 on error # # Where : # destdir: is the directory where everything is to be created under # dirnum: the maximum number of subdirectories to use, -1 no limit # filenum: the maximum number of files per subdirectory # bytes: number of bytes to write # num_writes: number of types to write out bytes # data: the data that will be written # # E.g. # file_fs /testdir 20 25 1024 256 0 # # Note: bytes * num_writes equals the size of the testfile # function fill_fs # destdir dirnum filenum bytes num_writes data { typeset destdir=${1:-$TESTDIR} typeset -i dirnum=${2:-50} typeset -i filenum=${3:-50} typeset -i bytes=${4:-8192} typeset -i num_writes=${5:-10240} typeset data=${6:-0} typeset -i odirnum=1 typeset -i idirnum=0 typeset -i fn=0 typeset -i retval=0 mkdir -p $destdir/$idirnum while (($odirnum > 0)); do if ((dirnum >= 0 && idirnum >= dirnum)); then odirnum=0 break fi file_write -o create -f $destdir/$idirnum/$TESTFILE.$fn \ -b $bytes -c $num_writes -d $data retval=$? if (($retval != 0)); then odirnum=0 break fi if (($fn >= $filenum)); then fn=0 ((idirnum = idirnum + 1)) mkdir -p $destdir/$idirnum else ((fn = fn + 1)) fi done return $retval } # # Simple function to get the specified property. If unable to # get the property then exits. # # Note property is in 'parsable' format (-p) # function get_prop # property dataset { typeset prop_val typeset prop=$1 typeset dataset=$2 prop_val=$(zfs get -pH -o value $prop $dataset 2>/dev/null) if [[ $? -ne 0 ]]; then log_note "Unable to get $prop property for dataset " \ "$dataset" return 1 fi echo "$prop_val" return 0 } # # Simple function to get the specified property of pool. If unable to # get the property then exits. # # Note property is in 'parsable' format (-p) # function get_pool_prop # property pool { typeset prop_val typeset prop=$1 typeset pool=$2 if poolexists $pool ; then prop_val=$(zpool get -pH $prop $pool 2>/dev/null | tail -1 | \ awk '{print $3}') if [[ $? -ne 0 ]]; then log_note "Unable to get $prop property for pool " \ "$pool" return 1 fi else log_note "Pool $pool not exists." return 1 fi echo "$prop_val" return 0 } # Return 0 if a pool exists; $? otherwise # # $1 - pool name function poolexists { typeset pool=$1 if [[ -z $pool ]]; then log_note "No pool name given." return 1 fi zpool get name "$pool" > /dev/null 2>&1 return $? } # Return 0 if all the specified datasets exist; $? otherwise # # $1-n dataset name function datasetexists { if (($# == 0)); then log_note "No dataset name given." return 1 fi while (($# > 0)); do zfs get name $1 > /dev/null 2>&1 || \ return $? shift done return 0 } # return 0 if none of the specified datasets exists, otherwise return 1. # # $1-n dataset name function datasetnonexists { if (($# == 0)); then log_note "No dataset name given." return 1 fi while (($# > 0)); do zfs list -H -t filesystem,snapshot,volume $1 > /dev/null 2>&1 \ && return 1 shift done return 0 } function is_shared_impl { typeset fs=$1 typeset mtpt if is_linux; then for mtpt in `share | awk '{print $1}'` ; do if [[ $mtpt == $fs ]] ; then return 0 fi done return 1 fi for mtpt in `share | awk '{print $2}'` ; do if [[ $mtpt == $fs ]] ; then return 0 fi done typeset stat=$(svcs -H -o STA nfs/server:default) if [[ $stat != "ON" ]]; then log_note "Current nfs/server status: $stat" fi return 1 } # # Given a mountpoint, or a dataset name, determine if it is shared via NFS. # # Returns 0 if shared, 1 otherwise. # function is_shared { typeset fs=$1 typeset mtpt if [[ $fs != "/"* ]] ; then if datasetnonexists "$fs" ; then return 1 else mtpt=$(get_prop mountpoint "$fs") case $mtpt in none|legacy|-) return 1 ;; *) fs=$mtpt ;; esac fi fi is_shared_impl "$fs" } # # Given a dataset name determine if it is shared via SMB. # # Returns 0 if shared, 1 otherwise. # function is_shared_smb { typeset fs=$1 typeset mtpt if datasetnonexists "$fs" ; then return 1 else fs=$(echo $fs | sed 's@/@_@g') fi if is_linux; then for mtpt in `net usershare list | awk '{print $1}'` ; do if [[ $mtpt == $fs ]] ; then return 0 fi done return 1 else log_unsupported "Currently unsupported by the test framework" return 1 fi } # # Given a mountpoint, determine if it is not shared via NFS. # # Returns 0 if not shared, 1 otherwise. # function not_shared { typeset fs=$1 is_shared $fs if (($? == 0)); then return 1 fi return 0 } # # Given a dataset determine if it is not shared via SMB. # # Returns 0 if not shared, 1 otherwise. # function not_shared_smb { typeset fs=$1 is_shared_smb $fs if (($? == 0)); then return 1 fi return 0 } # # Helper function to unshare a mountpoint. # function unshare_fs #fs { typeset fs=$1 is_shared $fs || is_shared_smb $fs if (($? == 0)); then log_must zfs unshare $fs fi return 0 } # # Helper function to share a NFS mountpoint. # function share_nfs #fs { typeset fs=$1 if is_linux; then is_shared $fs if (($? != 0)); then log_must share "*:$fs" fi else is_shared $fs if (($? != 0)); then log_must share -F nfs $fs fi fi return 0 } # # Helper function to unshare a NFS mountpoint. # function unshare_nfs #fs { typeset fs=$1 if is_linux; then is_shared $fs if (($? == 0)); then log_must unshare -u "*:$fs" fi else is_shared $fs if (($? == 0)); then log_must unshare -F nfs $fs fi fi return 0 } # # Helper function to show NFS shares. # function showshares_nfs { if is_linux; then share -v else share -F nfs fi return 0 } # # Helper function to show SMB shares. # function showshares_smb { if is_linux; then net usershare list else share -F smb fi return 0 } # # Check NFS server status and trigger it online. # function setup_nfs_server { # Cannot share directory in non-global zone. # if ! is_global_zone; then log_note "Cannot trigger NFS server by sharing in LZ." return fi if is_linux; then # # Re-synchronize /var/lib/nfs/etab with /etc/exports and # /etc/exports.d./* to provide a clean test environment. # log_must share -r log_note "NFS server must be started prior to running ZTS." return fi typeset nfs_fmri="svc:/network/nfs/server:default" if [[ $(svcs -Ho STA $nfs_fmri) != "ON" ]]; then # # Only really sharing operation can enable NFS server # to online permanently. # typeset dummy=/tmp/dummy if [[ -d $dummy ]]; then log_must rm -rf $dummy fi log_must mkdir $dummy log_must share $dummy # # Waiting for fmri's status to be the final status. # Otherwise, in transition, an asterisk (*) is appended for # instances, unshare will reverse status to 'DIS' again. # # Waiting for 1's at least. # log_must sleep 1 timeout=10 while [[ timeout -ne 0 && $(svcs -Ho STA $nfs_fmri) == *'*' ]] do log_must sleep 1 ((timeout -= 1)) done log_must unshare $dummy log_must rm -rf $dummy fi log_note "Current NFS status: '$(svcs -Ho STA,FMRI $nfs_fmri)'" } # # To verify whether calling process is in global zone # # Return 0 if in global zone, 1 in non-global zone # function is_global_zone { if is_linux; then return 0 else typeset cur_zone=$(zonename 2>/dev/null) if [[ $cur_zone != "global" ]]; then return 1 fi return 0 fi } # # Verify whether test is permitted to run from # global zone, local zone, or both # # $1 zone limit, could be "global", "local", or "both"(no limit) # # Return 0 if permitted, otherwise exit with log_unsupported # function verify_runnable # zone limit { typeset limit=$1 [[ -z $limit ]] && return 0 if is_global_zone ; then case $limit in global|both) ;; local) log_unsupported "Test is unable to run from "\ "global zone." ;; *) log_note "Warning: unknown limit $limit - " \ "use both." ;; esac else case $limit in local|both) ;; global) log_unsupported "Test is unable to run from "\ "local zone." ;; *) log_note "Warning: unknown limit $limit - " \ "use both." ;; esac reexport_pool fi return 0 } # Return 0 if create successfully or the pool exists; $? otherwise # Note: In local zones, this function should return 0 silently. # # $1 - pool name # $2-n - [keyword] devs_list function create_pool #pool devs_list { typeset pool=${1%%/*} shift if [[ -z $pool ]]; then log_note "Missing pool name." return 1 fi if poolexists $pool ; then destroy_pool $pool fi if is_global_zone ; then [[ -d /$pool ]] && rm -rf /$pool log_must zpool create -f $pool $@ fi return 0 } # Return 0 if destroy successfully or the pool exists; $? otherwise # Note: In local zones, this function should return 0 silently. # # $1 - pool name # Destroy pool with the given parameters. function destroy_pool #pool { typeset pool=${1%%/*} typeset mtpt if [[ -z $pool ]]; then log_note "No pool name given." return 1 fi if is_global_zone ; then if poolexists "$pool" ; then mtpt=$(get_prop mountpoint "$pool") # At times, syseventd/udev activity can cause attempts # to destroy a pool to fail with EBUSY. We retry a few # times allowing failures before requiring the destroy # to succeed. log_must_busy zpool destroy -f $pool [[ -d $mtpt ]] && \ log_must rm -rf $mtpt else log_note "Pool does not exist. ($pool)" return 1 fi fi return 0 } # Return 0 if created successfully; $? otherwise # # $1 - dataset name # $2-n - dataset options function create_dataset #dataset dataset_options { typeset dataset=$1 shift if [[ -z $dataset ]]; then log_note "Missing dataset name." return 1 fi if datasetexists $dataset ; then destroy_dataset $dataset fi log_must zfs create $@ $dataset return 0 } # Return 0 if destroy successfully or the dataset exists; $? otherwise # Note: In local zones, this function should return 0 silently. # # $1 - dataset name # $2 - custom arguments for zfs destroy # Destroy dataset with the given parameters. function destroy_dataset #dataset #args { typeset dataset=$1 typeset mtpt typeset args=${2:-""} if [[ -z $dataset ]]; then log_note "No dataset name given." return 1 fi if is_global_zone ; then if datasetexists "$dataset" ; then mtpt=$(get_prop mountpoint "$dataset") log_must_busy zfs destroy $args $dataset [[ -d $mtpt ]] && \ log_must rm -rf $mtpt else log_note "Dataset does not exist. ($dataset)" return 1 fi fi return 0 } # # Firstly, create a pool with 5 datasets. Then, create a single zone and # export the 5 datasets to it. In addition, we also add a ZFS filesystem # and a zvol device to the zone. # # $1 zone name # $2 zone root directory prefix # $3 zone ip # function zfs_zones_setup #zone_name zone_root zone_ip { typeset zone_name=${1:-$(hostname)-z} typeset zone_root=${2:-"/zone_root"} typeset zone_ip=${3:-"10.1.1.10"} typeset prefix_ctr=$ZONE_CTR typeset pool_name=$ZONE_POOL typeset -i cntctr=5 typeset -i i=0 # Create pool and 5 container within it # [[ -d /$pool_name ]] && rm -rf /$pool_name log_must zpool create -f $pool_name $DISKS while ((i < cntctr)); do log_must zfs create $pool_name/$prefix_ctr$i ((i += 1)) done # create a zvol log_must zfs create -V 1g $pool_name/zone_zvol block_device_wait # # If current system support slog, add slog device for pool # if verify_slog_support ; then typeset sdevs="$TEST_BASE_DIR/sdev1 $TEST_BASE_DIR/sdev2" log_must mkfile $MINVDEVSIZE $sdevs log_must zpool add $pool_name log mirror $sdevs fi # this isn't supported just yet. # Create a filesystem. In order to add this to # the zone, it must have it's mountpoint set to 'legacy' # log_must zfs create $pool_name/zfs_filesystem # log_must zfs set mountpoint=legacy $pool_name/zfs_filesystem [[ -d $zone_root ]] && \ log_must rm -rf $zone_root/$zone_name [[ ! -d $zone_root ]] && \ log_must mkdir -p -m 0700 $zone_root/$zone_name # Create zone configure file and configure the zone # typeset zone_conf=/tmp/zone_conf.$$ echo "create" > $zone_conf echo "set zonepath=$zone_root/$zone_name" >> $zone_conf echo "set autoboot=true" >> $zone_conf i=0 while ((i < cntctr)); do echo "add dataset" >> $zone_conf echo "set name=$pool_name/$prefix_ctr$i" >> \ $zone_conf echo "end" >> $zone_conf ((i += 1)) done # add our zvol to the zone echo "add device" >> $zone_conf echo "set match=/dev/zvol/dsk/$pool_name/zone_zvol" >> $zone_conf echo "end" >> $zone_conf # add a corresponding zvol rdsk to the zone echo "add device" >> $zone_conf echo "set match=$ZVOL_RDEVDIR/$pool_name/zone_zvol" >> $zone_conf echo "end" >> $zone_conf # once it's supported, we'll add our filesystem to the zone # echo "add fs" >> $zone_conf # echo "set type=zfs" >> $zone_conf # echo "set special=$pool_name/zfs_filesystem" >> $zone_conf # echo "set dir=/export/zfs_filesystem" >> $zone_conf # echo "end" >> $zone_conf echo "verify" >> $zone_conf echo "commit" >> $zone_conf log_must zonecfg -z $zone_name -f $zone_conf log_must rm -f $zone_conf # Install the zone zoneadm -z $zone_name install if (($? == 0)); then log_note "SUCCESS: zoneadm -z $zone_name install" else log_fail "FAIL: zoneadm -z $zone_name install" fi # Install sysidcfg file # typeset sysidcfg=$zone_root/$zone_name/root/etc/sysidcfg echo "system_locale=C" > $sysidcfg echo "terminal=dtterm" >> $sysidcfg echo "network_interface=primary {" >> $sysidcfg echo "hostname=$zone_name" >> $sysidcfg echo "}" >> $sysidcfg echo "name_service=NONE" >> $sysidcfg echo "root_password=mo791xfZ/SFiw" >> $sysidcfg echo "security_policy=NONE" >> $sysidcfg echo "timezone=US/Eastern" >> $sysidcfg # Boot this zone log_must zoneadm -z $zone_name boot } # # Reexport TESTPOOL & TESTPOOL(1-4) # function reexport_pool { typeset -i cntctr=5 typeset -i i=0 while ((i < cntctr)); do if ((i == 0)); then TESTPOOL=$ZONE_POOL/$ZONE_CTR$i if ! ismounted $TESTPOOL; then log_must zfs mount $TESTPOOL fi else eval TESTPOOL$i=$ZONE_POOL/$ZONE_CTR$i if eval ! ismounted \$TESTPOOL$i; then log_must eval zfs mount \$TESTPOOL$i fi fi ((i += 1)) done } # # Verify a given disk or pool state # # Return 0 is pool/disk matches expected state, 1 otherwise # function check_state # pool disk state{online,offline,degraded} { typeset pool=$1 typeset disk=${2#$DEV_DSKDIR/} typeset state=$3 [[ -z $pool ]] || [[ -z $state ]] \ && log_fail "Arguments invalid or missing" if [[ -z $disk ]]; then #check pool state only zpool get -H -o value health $pool \ | grep -i "$state" > /dev/null 2>&1 else zpool status -v $pool | grep "$disk" \ | grep -i "$state" > /dev/null 2>&1 fi return $? } # # Get the mountpoint of snapshot # For the snapshot use /.zfs/snapshot/ # as its mountpoint # function snapshot_mountpoint { typeset dataset=${1:-$TESTPOOL/$TESTFS@$TESTSNAP} if [[ $dataset != *@* ]]; then log_fail "Error name of snapshot '$dataset'." fi typeset fs=${dataset%@*} typeset snap=${dataset#*@} if [[ -z $fs || -z $snap ]]; then log_fail "Error name of snapshot '$dataset'." fi echo $(get_prop mountpoint $fs)/.zfs/snapshot/$snap } # # Given a device and 'ashift' value verify it's correctly set on every label # function verify_ashift # device ashift { typeset device="$1" typeset ashift="$2" zdb -e -lll $device | awk -v ashift=$ashift '/ashift: / { if (ashift != $2) exit 1; else count++; } END { if (count != 4) exit 1; else exit 0; }' return $? } # # Given a pool and file system, this function will verify the file system # using the zdb internal tool. Note that the pool is exported and imported # to ensure it has consistent state. # function verify_filesys # pool filesystem dir { typeset pool="$1" typeset filesys="$2" typeset zdbout="/tmp/zdbout.$$" shift shift typeset dirs=$@ typeset search_path="" log_note "Calling zdb to verify filesystem '$filesys'" zfs unmount -a > /dev/null 2>&1 log_must zpool export $pool if [[ -n $dirs ]] ; then for dir in $dirs ; do search_path="$search_path -d $dir" done fi log_must zpool import $search_path $pool zdb -cudi $filesys > $zdbout 2>&1 if [[ $? != 0 ]]; then log_note "Output: zdb -cudi $filesys" cat $zdbout log_fail "zdb detected errors with: '$filesys'" fi log_must zfs mount -a log_must rm -rf $zdbout } # # Given a pool issue a scrub and verify that no checksum errors are reported. # function verify_pool { typeset pool=${1:-$TESTPOOL} log_must zpool scrub $pool log_must wait_scrubbed $pool cksum=$(zpool status $pool | awk 'L{print $NF;L=0} /CKSUM$/{L=1}') if [[ $cksum != 0 ]]; then log_must zpool status -v log_fail "Unexpected CKSUM errors found on $pool ($cksum)" fi } # # Given a pool, and this function list all disks in the pool # function get_disklist # pool { typeset disklist="" disklist=$(zpool iostat -v $1 | nawk '(NR >4) {print $1}' | \ grep -v "\-\-\-\-\-" | \ egrep -v -e "^(mirror|raidz[1-3]|spare|log|cache|special|dedup)$") echo $disklist } # # Given a pool, and this function list all disks in the pool with their full # path (like "/dev/sda" instead of "sda"). # function get_disklist_fullpath # pool { args="-P $1" get_disklist $args } # /** # This function kills a given list of processes after a time period. We use # this in the stress tests instead of STF_TIMEOUT so that we can have processes # run for a fixed amount of time, yet still pass. Tests that hit STF_TIMEOUT # would be listed as FAIL, which we don't want : we're happy with stress tests # running for a certain amount of time, then finishing. # # @param $1 the time in seconds after which we should terminate these processes # @param $2..$n the processes we wish to terminate. # */ function stress_timeout { typeset -i TIMEOUT=$1 shift typeset cpids="$@" log_note "Waiting for child processes($cpids). " \ "It could last dozens of minutes, please be patient ..." log_must sleep $TIMEOUT log_note "Killing child processes after ${TIMEOUT} stress timeout." typeset pid for pid in $cpids; do ps -p $pid > /dev/null 2>&1 if (($? == 0)); then log_must kill -USR1 $pid fi done } # # Verify a given hotspare disk is inuse or avail # # Return 0 is pool/disk matches expected state, 1 otherwise # function check_hotspare_state # pool disk state{inuse,avail} { typeset pool=$1 typeset disk=${2#$DEV_DSKDIR/} typeset state=$3 cur_state=$(get_device_state $pool $disk "spares") if [[ $state != ${cur_state} ]]; then return 1 fi return 0 } # # Wait until a hotspare transitions to a given state or times out. # # Return 0 when pool/disk matches expected state, 1 on timeout. # function wait_hotspare_state # pool disk state timeout { typeset pool=$1 typeset disk=${2#*$DEV_DSKDIR/} typeset state=$3 typeset timeout=${4:-60} typeset -i i=0 while [[ $i -lt $timeout ]]; do if check_hotspare_state $pool $disk $state; then return 0 fi i=$((i+1)) sleep 1 done return 1 } # # Verify a given slog disk is inuse or avail # # Return 0 is pool/disk matches expected state, 1 otherwise # function check_slog_state # pool disk state{online,offline,unavail} { typeset pool=$1 typeset disk=${2#$DEV_DSKDIR/} typeset state=$3 cur_state=$(get_device_state $pool $disk "logs") if [[ $state != ${cur_state} ]]; then return 1 fi return 0 } # # Verify a given vdev disk is inuse or avail # # Return 0 is pool/disk matches expected state, 1 otherwise # function check_vdev_state # pool disk state{online,offline,unavail} { typeset pool=$1 typeset disk=${2#*$DEV_DSKDIR/} typeset state=$3 cur_state=$(get_device_state $pool $disk) if [[ $state != ${cur_state} ]]; then return 1 fi return 0 } # # Wait until a vdev transitions to a given state or times out. # # Return 0 when pool/disk matches expected state, 1 on timeout. # function wait_vdev_state # pool disk state timeout { typeset pool=$1 typeset disk=${2#*$DEV_DSKDIR/} typeset state=$3 typeset timeout=${4:-60} typeset -i i=0 while [[ $i -lt $timeout ]]; do if check_vdev_state $pool $disk $state; then return 0 fi i=$((i+1)) sleep 1 done return 1 } # # Check the output of 'zpool status -v ', # and to see if the content of contain the specified. # # Return 0 is contain, 1 otherwise # function check_pool_status # pool token keyword { typeset pool=$1 typeset token=$2 typeset keyword=$3 typeset verbose=${4:-false} scan=$(zpool status -v "$pool" 2>/dev/null | nawk -v token="$token:" ' ($1==token) {print $0}') if [[ $verbose == true ]]; then log_note $scan fi echo $scan | grep -i "$keyword" > /dev/null 2>&1 return $? } # # These 6 following functions are instance of check_pool_status() # is_pool_resilvering - to check if the pool is resilver in progress # is_pool_resilvered - to check if the pool is resilver completed # is_pool_scrubbing - to check if the pool is scrub in progress # is_pool_scrubbed - to check if the pool is scrub completed # is_pool_scrub_stopped - to check if the pool is scrub stopped # is_pool_scrub_paused - to check if the pool has scrub paused # is_pool_removing - to check if the pool is removing a vdev # is_pool_removed - to check if the pool is remove completed # function is_pool_resilvering #pool { check_pool_status "$1" "scan" "resilver in progress since " $2 return $? } function is_pool_resilvered #pool { check_pool_status "$1" "scan" "resilvered " $2 return $? } function is_pool_scrubbing #pool { check_pool_status "$1" "scan" "scrub in progress since " $2 return $? } function is_pool_scrubbed #pool { check_pool_status "$1" "scan" "scrub repaired" $2 return $? } function is_pool_scrub_stopped #pool { check_pool_status "$1" "scan" "scrub canceled" $2 return $? } function is_pool_scrub_paused #pool { check_pool_status "$1" "scan" "scrub paused since " $2 return $? } function is_pool_removing #pool { check_pool_status "$1" "remove" "in progress since " return $? } function is_pool_removed #pool { check_pool_status "$1" "remove" "completed on" return $? } function wait_for_degraded { typeset pool=$1 typeset timeout=${2:-30} typeset t0=$SECONDS while :; do [[ $(get_pool_prop health $pool) == "DEGRADED" ]] && break log_note "$pool is not yet degraded." sleep 1 if ((SECONDS - t0 > $timeout)); then log_note "$pool not degraded after $timeout seconds." return 1 fi done return 0 } # # Use create_pool()/destroy_pool() to clean up the information in # in the given disk to avoid slice overlapping. # function cleanup_devices #vdevs { typeset pool="foopool$$" for vdev in $@; do zero_partitions $vdev done poolexists $pool && destroy_pool $pool create_pool $pool $@ destroy_pool $pool return 0 } #/** # A function to find and locate free disks on a system or from given # disks as the parameter. It works by locating disks that are in use # as swap devices and dump devices, and also disks listed in /etc/vfstab # # $@ given disks to find which are free, default is all disks in # the test system # # @return a string containing the list of available disks #*/ function find_disks { # Trust provided list, no attempt is made to locate unused devices. if is_linux; then echo "$@" return fi sfi=/tmp/swaplist.$$ dmpi=/tmp/dumpdev.$$ max_finddisksnum=${MAX_FINDDISKSNUM:-6} swap -l > $sfi dumpadm > $dmpi 2>/dev/null # write an awk script that can process the output of format # to produce a list of disks we know about. Note that we have # to escape "$2" so that the shell doesn't interpret it while # we're creating the awk script. # ------------------- cat > /tmp/find_disks.awk </dev/null | /tmp/find_disks.awk)} rm /tmp/find_disks.awk unused="" for disk in $disks; do # Check for mounted grep "${disk}[sp]" /etc/mnttab >/dev/null (($? == 0)) && continue # Check for swap grep "${disk}[sp]" $sfi >/dev/null (($? == 0)) && continue # check for dump device grep "${disk}[sp]" $dmpi >/dev/null (($? == 0)) && continue # check to see if this disk hasn't been explicitly excluded # by a user-set environment variable echo "${ZFS_HOST_DEVICES_IGNORE}" | grep "${disk}" > /dev/null (($? == 0)) && continue unused_candidates="$unused_candidates $disk" done rm $sfi rm $dmpi # now just check to see if those disks do actually exist # by looking for a device pointing to the first slice in # each case. limit the number to max_finddisksnum count=0 for disk in $unused_candidates; do if [ -b $DEV_DSKDIR/${disk}s0 ]; then if [ $count -lt $max_finddisksnum ]; then unused="$unused $disk" # do not impose limit if $@ is provided [[ -z $@ ]] && ((count = count + 1)) fi fi done # finally, return our disk list echo $unused } # # Add specified user to specified group # # $1 group name # $2 user name # $3 base of the homedir (optional) # function add_user # { typeset gname=$1 typeset uname=$2 typeset basedir=${3:-"/var/tmp"} if ((${#gname} == 0 || ${#uname} == 0)); then log_fail "group name or user name are not defined." fi log_must useradd -g $gname -d $basedir/$uname -m $uname echo "export PATH=\"$STF_PATH\"" >>$basedir/$uname/.profile echo "export PATH=\"$STF_PATH\"" >>$basedir/$uname/.bash_profile echo "export PATH=\"$STF_PATH\"" >>$basedir/$uname/.login # Add new users to the same group and the command line utils. # This allows them to be run out of the original users home # directory as long as it permissioned to be group readable. if is_linux; then cmd_group=$(stat --format="%G" $(which zfs)) log_must usermod -a -G $cmd_group $uname fi return 0 } # # Delete the specified user. # # $1 login name # $2 base of the homedir (optional) # function del_user # { typeset user=$1 typeset basedir=${2:-"/var/tmp"} if ((${#user} == 0)); then log_fail "login name is necessary." fi if id $user > /dev/null 2>&1; then log_must_retry "currently used" 6 userdel $user fi [[ -d $basedir/$user ]] && rm -fr $basedir/$user return 0 } # # Select valid gid and create specified group. # # $1 group name # function add_group # { typeset group=$1 if ((${#group} == 0)); then log_fail "group name is necessary." fi # Assign 100 as the base gid, a larger value is selected for # Linux because for many distributions 1000 and under are reserved. if is_linux; then while true; do groupadd $group > /dev/null 2>&1 typeset -i ret=$? case $ret in 0) return 0 ;; *) return 1 ;; esac done else typeset -i gid=100 while true; do groupadd -g $gid $group > /dev/null 2>&1 typeset -i ret=$? case $ret in 0) return 0 ;; # The gid is not unique 4) ((gid += 1)) ;; *) return 1 ;; esac done fi } # # Delete the specified group. # # $1 group name # function del_group # { typeset grp=$1 if ((${#grp} == 0)); then log_fail "group name is necessary." fi if is_linux; then getent group $grp > /dev/null 2>&1 typeset -i ret=$? case $ret in # Group does not exist. 2) return 0 ;; # Name already exists as a group name 0) log_must groupdel $grp ;; *) return 1 ;; esac else groupmod -n $grp $grp > /dev/null 2>&1 typeset -i ret=$? case $ret in # Group does not exist. 6) return 0 ;; # Name already exists as a group name 9) log_must groupdel $grp ;; *) return 1 ;; esac fi return 0 } # # This function will return true if it's safe to destroy the pool passed # as argument 1. It checks for pools based on zvols and files, and also # files contained in a pool that may have a different mountpoint. # function safe_to_destroy_pool { # $1 the pool name typeset pool="" typeset DONT_DESTROY="" # We check that by deleting the $1 pool, we're not # going to pull the rug out from other pools. Do this # by looking at all other pools, ensuring that they # aren't built from files or zvols contained in this pool. for pool in $(zpool list -H -o name) do ALTMOUNTPOOL="" # this is a list of the top-level directories in each of the # files that make up the path to the files the pool is based on FILEPOOL=$(zpool status -v $pool | grep /$1/ | \ awk '{print $1}') # this is a list of the zvols that make up the pool ZVOLPOOL=$(zpool status -v $pool | grep "$ZVOL_DEVDIR/$1$" \ | awk '{print $1}') # also want to determine if it's a file-based pool using an # alternate mountpoint... POOL_FILE_DIRS=$(zpool status -v $pool | \ grep / | awk '{print $1}' | \ awk -F/ '{print $2}' | grep -v "dev") for pooldir in $POOL_FILE_DIRS do OUTPUT=$(zfs list -H -r -o mountpoint $1 | \ grep "${pooldir}$" | awk '{print $1}') ALTMOUNTPOOL="${ALTMOUNTPOOL}${OUTPUT}" done if [ ! -z "$ZVOLPOOL" ] then DONT_DESTROY="true" log_note "Pool $pool is built from $ZVOLPOOL on $1" fi if [ ! -z "$FILEPOOL" ] then DONT_DESTROY="true" log_note "Pool $pool is built from $FILEPOOL on $1" fi if [ ! -z "$ALTMOUNTPOOL" ] then DONT_DESTROY="true" log_note "Pool $pool is built from $ALTMOUNTPOOL on $1" fi done if [ -z "${DONT_DESTROY}" ] then return 0 else log_note "Warning: it is not safe to destroy $1!" return 1 fi } # # Get the available ZFS compression options # $1 option type zfs_set|zfs_compress # function get_compress_opts { typeset COMPRESS_OPTS typeset GZIP_OPTS="gzip gzip-1 gzip-2 gzip-3 gzip-4 gzip-5 \ gzip-6 gzip-7 gzip-8 gzip-9" if [[ $1 == "zfs_compress" ]] ; then COMPRESS_OPTS="on lzjb" elif [[ $1 == "zfs_set" ]] ; then COMPRESS_OPTS="on off lzjb" fi typeset valid_opts="$COMPRESS_OPTS" zfs get 2>&1 | grep gzip >/dev/null 2>&1 if [[ $? -eq 0 ]]; then valid_opts="$valid_opts $GZIP_OPTS" fi echo "$valid_opts" } # # Verify zfs operation with -p option work as expected # $1 operation, value could be create, clone or rename # $2 dataset type, value could be fs or vol # $3 dataset name # $4 new dataset name # function verify_opt_p_ops { typeset ops=$1 typeset datatype=$2 typeset dataset=$3 typeset newdataset=$4 if [[ $datatype != "fs" && $datatype != "vol" ]]; then log_fail "$datatype is not supported." fi # check parameters accordingly case $ops in create) newdataset=$dataset dataset="" if [[ $datatype == "vol" ]]; then ops="create -V $VOLSIZE" fi ;; clone) if [[ -z $newdataset ]]; then log_fail "newdataset should not be empty" \ "when ops is $ops." fi log_must datasetexists $dataset log_must snapexists $dataset ;; rename) if [[ -z $newdataset ]]; then log_fail "newdataset should not be empty" \ "when ops is $ops." fi log_must datasetexists $dataset ;; *) log_fail "$ops is not supported." ;; esac # make sure the upper level filesystem does not exist destroy_dataset "${newdataset%/*}" "-rRf" # without -p option, operation will fail log_mustnot zfs $ops $dataset $newdataset log_mustnot datasetexists $newdataset ${newdataset%/*} # with -p option, operation should succeed log_must zfs $ops -p $dataset $newdataset block_device_wait if ! datasetexists $newdataset ; then log_fail "-p option does not work for $ops" fi # when $ops is create or clone, redo the operation still return zero if [[ $ops != "rename" ]]; then log_must zfs $ops -p $dataset $newdataset fi return 0 } # # Get configuration of pool # $1 pool name # $2 config name # function get_config { typeset pool=$1 typeset config=$2 typeset alt_root if ! poolexists "$pool" ; then return 1 fi alt_root=$(zpool list -H $pool | awk '{print $NF}') if [[ $alt_root == "-" ]]; then value=$(zdb -C $pool | grep "$config:" | awk -F: \ '{print $2}') else value=$(zdb -e $pool | grep "$config:" | awk -F: \ '{print $2}') fi if [[ -n $value ]] ; then value=${value#'} value=${value%'} fi echo $value return 0 } # # Privated function. Random select one of items from arguments. # # $1 count # $2-n string # function _random_get { typeset cnt=$1 shift typeset str="$@" typeset -i ind ((ind = RANDOM % cnt + 1)) typeset ret=$(echo "$str" | cut -f $ind -d ' ') echo $ret } # # Random select one of item from arguments which include NONE string # function random_get_with_non { typeset -i cnt=$# ((cnt =+ 1)) _random_get "$cnt" "$@" } # # Random select one of item from arguments which doesn't include NONE string # function random_get { _random_get "$#" "$@" } # # Detect if the current system support slog # function verify_slog_support { typeset dir=$TEST_BASE_DIR/disk.$$ typeset pool=foo.$$ typeset vdev=$dir/a typeset sdev=$dir/b mkdir -p $dir mkfile $MINVDEVSIZE $vdev $sdev typeset -i ret=0 if ! zpool create -n $pool $vdev log $sdev > /dev/null 2>&1; then ret=1 fi rm -r $dir return $ret } # # The function will generate a dataset name with specific length # $1, the length of the name # $2, the base string to construct the name # function gen_dataset_name { typeset -i len=$1 typeset basestr="$2" typeset -i baselen=${#basestr} typeset -i iter=0 typeset l_name="" if ((len % baselen == 0)); then ((iter = len / baselen)) else ((iter = len / baselen + 1)) fi while ((iter > 0)); do l_name="${l_name}$basestr" ((iter -= 1)) done echo $l_name } # # Get cksum tuple of dataset # $1 dataset name # # sample zdb output: # Dataset data/test [ZPL], ID 355, cr_txg 2413856, 31.0K, 7 objects, rootbp # DVA[0]=<0:803046400:200> DVA[1]=<0:81199000:200> [L0 DMU objset] fletcher4 # lzjb LE contiguous unique double size=800L/200P birth=2413856L/2413856P # fill=7 cksum=11ce125712:643a9c18ee2:125e25238fca0:254a3f74b59744 function datasetcksum { typeset cksum sync cksum=$(zdb -vvv $1 | grep "^Dataset $1 \[" | grep "cksum" \ | awk -F= '{print $7}') echo $cksum } # # Get cksum of file # #1 file path # function checksum { typeset cksum cksum=$(cksum $1 | awk '{print $1}') echo $cksum } # # Get the given disk/slice state from the specific field of the pool # function get_device_state #pool disk field("", "spares","logs") { typeset pool=$1 typeset disk=${2#$DEV_DSKDIR/} typeset field=${3:-$pool} state=$(zpool status -v "$pool" 2>/dev/null | \ nawk -v device=$disk -v pool=$pool -v field=$field \ 'BEGIN {startconfig=0; startfield=0; } /config:/ {startconfig=1} (startconfig==1) && ($1==field) {startfield=1; next;} (startfield==1) && ($1==device) {print $2; exit;} (startfield==1) && ($1==field || $1 ~ "^spares$" || $1 ~ "^logs$") {startfield=0}') echo $state } # # print the given directory filesystem type # # $1 directory name # function get_fstype { typeset dir=$1 if [[ -z $dir ]]; then log_fail "Usage: get_fstype " fi # # $ df -n / # / : ufs # df -n $dir | awk '{print $3}' } # # Given a disk, label it to VTOC regardless what label was on the disk # $1 disk # function labelvtoc { typeset disk=$1 if [[ -z $disk ]]; then log_fail "The disk name is unspecified." fi typeset label_file=/var/tmp/labelvtoc.$$ typeset arch=$(uname -p) if is_linux; then log_note "Currently unsupported by the test framework" return 1 fi if [[ $arch == "i386" ]]; then echo "label" > $label_file echo "0" >> $label_file echo "" >> $label_file echo "q" >> $label_file echo "q" >> $label_file fdisk -B $disk >/dev/null 2>&1 # wait a while for fdisk finishes sleep 60 elif [[ $arch == "sparc" ]]; then echo "label" > $label_file echo "0" >> $label_file echo "" >> $label_file echo "" >> $label_file echo "" >> $label_file echo "q" >> $label_file else log_fail "unknown arch type" fi format -e -s -d $disk -f $label_file typeset -i ret_val=$? rm -f $label_file # # wait the format to finish # sleep 60 if ((ret_val != 0)); then log_fail "unable to label $disk as VTOC." fi return 0 } # # check if the system was installed as zfsroot or not # return: 0 if zfsroot, non-zero if not # function is_zfsroot { df -n / | grep zfs > /dev/null 2>&1 return $? } # # get the root filesystem name if it's zfsroot system. # # return: root filesystem name function get_rootfs { typeset rootfs="" if ! is_linux; then rootfs=$(awk '{if ($2 == "/" && $3 == "zfs") print $1}' \ /etc/mnttab) fi if [[ -z "$rootfs" ]]; then log_fail "Can not get rootfs" fi zfs list $rootfs > /dev/null 2>&1 if (($? == 0)); then echo $rootfs else log_fail "This is not a zfsroot system." fi } # # get the rootfs's pool name # return: # rootpool name # function get_rootpool { typeset rootfs="" typeset rootpool="" if ! is_linux; then rootfs=$(awk '{if ($2 == "/" && $3 =="zfs") print $1}' \ /etc/mnttab) fi if [[ -z "$rootfs" ]]; then log_fail "Can not get rootpool" fi zfs list $rootfs > /dev/null 2>&1 if (($? == 0)); then rootpool=`echo $rootfs | awk -F\/ '{print $1}'` echo $rootpool else log_fail "This is not a zfsroot system." fi } # # Get the package name # function get_package_name { typeset dirpath=${1:-$STC_NAME} echo "SUNWstc-${dirpath}" | /usr/bin/sed -e "s/\//-/g" } # # Get the word numbers from a string separated by white space # function get_word_count { echo $1 | wc -w } # # To verify if the require numbers of disks is given # function verify_disk_count { typeset -i min=${2:-1} typeset -i count=$(get_word_count "$1") if ((count < min)); then log_untested "A minimum of $min disks is required to run." \ " You specified $count disk(s)" fi } function ds_is_volume { typeset type=$(get_prop type $1) [[ $type = "volume" ]] && return 0 return 1 } function ds_is_filesystem { typeset type=$(get_prop type $1) [[ $type = "filesystem" ]] && return 0 return 1 } function ds_is_snapshot { typeset type=$(get_prop type $1) [[ $type = "snapshot" ]] && return 0 return 1 } # # Check if Trusted Extensions are installed and enabled # function is_te_enabled { svcs -H -o state labeld 2>/dev/null | grep "enabled" if (($? != 0)); then return 1 else return 0 fi } # Utility function to determine if a system has multiple cpus. function is_mp { if is_linux; then (($(nproc) > 1)) else (($(psrinfo | wc -l) > 1)) fi return $? } function get_cpu_freq { if is_linux; then lscpu | awk '/CPU MHz/ { print $3 }' else psrinfo -v 0 | awk '/processor operates at/ {print $6}' fi } # Run the given command as the user provided. function user_run { typeset user=$1 shift log_note "user:$user $@" eval su - \$user -c \"$@\" > $TEST_BASE_DIR/out 2>$TEST_BASE_DIR/err return $? } # # Check if the pool contains the specified vdevs # # $1 pool # $2..n ... # # Return 0 if the vdevs are contained in the pool, 1 if any of the specified # vdevs is not in the pool, and 2 if pool name is missing. # function vdevs_in_pool { typeset pool=$1 typeset vdev if [[ -z $pool ]]; then log_note "Missing pool name." return 2 fi shift # We could use 'zpool list' to only get the vdevs of the pool but we # can't reference a mirror/raidz vdev using its ID (i.e mirror-0), # therefore we use the 'zpool status' output. typeset tmpfile=$(mktemp) zpool status -v "$pool" | grep -A 1000 "config:" >$tmpfile for vdev in $@; do grep -w ${vdev##*/} $tmpfile >/dev/null 2>&1 [[ $? -ne 0 ]] && return 1 done rm -f $tmpfile return 0; } function get_max { typeset -l i max=$1 shift for i in "$@"; do max=$(echo $((max > i ? max : i))) done echo $max } function get_min { typeset -l i min=$1 shift for i in "$@"; do min=$(echo $((min < i ? min : i))) done echo $min } # # Generate a random number between 1 and the argument. # function random { typeset max=$1 echo $(( ($RANDOM % $max) + 1 )) } # Write data that can be compressed into a directory function write_compressible { typeset dir=$1 typeset megs=$2 typeset nfiles=${3:-1} typeset bs=${4:-1024k} typeset fname=${5:-file} [[ -d $dir ]] || log_fail "No directory: $dir" # Under Linux fio is not currently used since its behavior can # differ significantly across versions. This includes missing # command line options and cases where the --buffer_compress_* # options fail to behave as expected. if is_linux; then typeset file_bytes=$(to_bytes $megs) typeset bs_bytes=4096 typeset blocks=$(($file_bytes / $bs_bytes)) for (( i = 0; i < $nfiles; i++ )); do truncate -s $file_bytes $dir/$fname.$i # Write every third block to get 66% compression. for (( j = 0; j < $blocks; j += 3 )); do dd if=/dev/urandom of=$dir/$fname.$i \ seek=$j bs=$bs_bytes count=1 \ conv=notrunc >/dev/null 2>&1 done done else log_must eval "fio \ --name=job \ --fallocate=0 \ --minimal \ --randrepeat=0 \ --buffer_compress_percentage=66 \ --buffer_compress_chunk=4096 \ --directory=$dir \ --numjobs=$nfiles \ --nrfiles=$nfiles \ --rw=write \ --bs=$bs \ --filesize=$megs \ --filename_format='$fname.\$jobnum' >/dev/null" fi } function get_objnum { typeset pathname=$1 typeset objnum [[ -e $pathname ]] || log_fail "No such file or directory: $pathname" objnum=$(stat -c %i $pathname) echo $objnum } # # Sync data to the pool # # $1 pool name # $2 boolean to force uberblock (and config including zpool cache file) update # function sync_pool #pool { typeset pool=${1:-$TESTPOOL} typeset force=${2:-false} if [[ $force == true ]]; then log_must zpool sync -f $pool else log_must zpool sync $pool fi return 0 } # # Wait for zpool 'freeing' property drops to zero. # # $1 pool name # function wait_freeing #pool { typeset pool=${1:-$TESTPOOL} while true; do [[ "0" == "$(zpool list -Ho freeing $pool)" ]] && break log_must sleep 1 done } # # Wait for every device replace operation to complete # # $1 pool name # function wait_replacing #pool { typeset pool=${1:-$TESTPOOL} while true; do [[ "" == "$(zpool status $pool | awk '/replacing-[0-9]+/ {print $1}')" ]] && break log_must sleep 1 done } # # Wait for a pool to be scrubbed # # $1 pool name # $2 number of seconds to wait (optional) # # Returns true when pool has been scrubbed, or false if there's a timeout or if # no scrub was done. # function wait_scrubbed { typeset pool=${1:-$TESTPOOL} while true ; do is_pool_scrubbed $pool && break log_must sleep 1 done } # Backup the zed.rc in our test directory so that we can edit it for our test. # # Returns: Backup file name. You will need to pass this to zed_rc_restore(). function zed_rc_backup { zedrc_backup="$(mktemp)" cp $ZEDLET_DIR/zed.rc $zedrc_backup echo $zedrc_backup } function zed_rc_restore { mv $1 $ZEDLET_DIR/zed.rc } # # Setup custom environment for the ZED. # # $@ Optional list of zedlets to run under zed. function zed_setup { if ! is_linux; then return fi if [[ ! -d $ZEDLET_DIR ]]; then log_must mkdir $ZEDLET_DIR fi if [[ ! -e $VDEVID_CONF ]]; then log_must touch $VDEVID_CONF fi if [[ -e $VDEVID_CONF_ETC ]]; then log_fail "Must not have $VDEVID_CONF_ETC file present on system" fi EXTRA_ZEDLETS=$@ # Create a symlink for /etc/zfs/vdev_id.conf file. log_must ln -s $VDEVID_CONF $VDEVID_CONF_ETC # Setup minimal ZED configuration. Individual test cases should # add additional ZEDLETs as needed for their specific test. log_must cp ${ZEDLET_ETC_DIR}/zed.rc $ZEDLET_DIR log_must cp ${ZEDLET_ETC_DIR}/zed-functions.sh $ZEDLET_DIR # Scripts must only be user writable. if [[ -n "$EXTRA_ZEDLETS" ]] ; then saved_umask=$(umask) log_must umask 0022 for i in $EXTRA_ZEDLETS ; do log_must cp ${ZEDLET_LIBEXEC_DIR}/$i $ZEDLET_DIR done log_must umask $saved_umask fi # Customize the zed.rc file to enable the full debug log. log_must sed -i '/\#ZED_DEBUG_LOG=.*/d' $ZEDLET_DIR/zed.rc echo "ZED_DEBUG_LOG=$ZED_DEBUG_LOG" >>$ZEDLET_DIR/zed.rc } # # Cleanup custom ZED environment. # # $@ Optional list of zedlets to remove from our test zed.d directory. function zed_cleanup { if ! is_linux; then return fi EXTRA_ZEDLETS=$@ log_must rm -f ${ZEDLET_DIR}/zed.rc log_must rm -f ${ZEDLET_DIR}/zed-functions.sh log_must rm -f ${ZEDLET_DIR}/all-syslog.sh log_must rm -f ${ZEDLET_DIR}/all-debug.sh log_must rm -f ${ZEDLET_DIR}/state if [[ -n "$EXTRA_ZEDLETS" ]] ; then for i in $EXTRA_ZEDLETS ; do log_must rm -f ${ZEDLET_DIR}/$i done fi log_must rm -f $ZED_LOG log_must rm -f $ZED_DEBUG_LOG log_must rm -f $VDEVID_CONF_ETC log_must rm -f $VDEVID_CONF rmdir $ZEDLET_DIR } # # Check if ZED is currently running, if not start ZED. # function zed_start { if ! is_linux; then return fi # ZEDLET_DIR=/var/tmp/zed if [[ ! -d $ZEDLET_DIR ]]; then log_must mkdir $ZEDLET_DIR fi # Verify the ZED is not already running. pgrep -x zed > /dev/null if (($? == 0)); then log_fail "ZED already running" fi log_note "Starting ZED" # run ZED in the background and redirect foreground logging # output to $ZED_LOG. log_must truncate -s 0 $ZED_DEBUG_LOG log_must eval "zed -vF -d $ZEDLET_DIR -p $ZEDLET_DIR/zed.pid -P $PATH" \ "-s $ZEDLET_DIR/state 2>$ZED_LOG &" return 0 } # # Kill ZED process # function zed_stop { if ! is_linux; then return fi log_note "Stopping ZED" if [[ -f ${ZEDLET_DIR}/zed.pid ]]; then zedpid=$(<${ZEDLET_DIR}/zed.pid) kill $zedpid while ps -p $zedpid > /dev/null; do sleep 1 done rm -f ${ZEDLET_DIR}/zed.pid fi return 0 } # # Drain all zevents # function zed_events_drain { while [ $(zpool events -H | wc -l) -ne 0 ]; do sleep 1 zpool events -c >/dev/null done } # Set a variable in zed.rc to something, un-commenting it in the process. # # $1 variable # $2 value function zed_rc_set { var="$1" val="$2" # Remove the line cmd="'/$var/d'" eval sed -i $cmd $ZEDLET_DIR/zed.rc # Add it at the end echo "$var=$val" >> $ZEDLET_DIR/zed.rc } # # Check is provided device is being active used as a swap device. # function is_swap_inuse { typeset device=$1 if [[ -z $device ]] ; then log_note "No device specified." return 1 fi if is_linux; then swapon -s | grep -w $(readlink -f $device) > /dev/null 2>&1 else swap -l | grep -w $device > /dev/null 2>&1 fi return $? } # # Setup a swap device using the provided device. # function swap_setup { typeset swapdev=$1 if is_linux; then log_must eval "mkswap $swapdev > /dev/null 2>&1" log_must swapon $swapdev else log_must swap -a $swapdev fi return 0 } # # Cleanup a swap device on the provided device. # function swap_cleanup { typeset swapdev=$1 if is_swap_inuse $swapdev; then if is_linux; then log_must swapoff $swapdev else log_must swap -d $swapdev fi fi return 0 } # # Set a global system tunable (64-bit value) # # $1 tunable name # $2 tunable values # function set_tunable64 { set_tunable_impl "$1" "$2" Z } # # Set a global system tunable (32-bit value) # # $1 tunable name # $2 tunable values # function set_tunable32 { set_tunable_impl "$1" "$2" W } function set_tunable_impl { typeset tunable="$1" typeset value="$2" typeset mdb_cmd="$3" typeset module="${4:-zfs}" [[ -z "$tunable" ]] && return 1 [[ -z "$value" ]] && return 1 [[ -z "$mdb_cmd" ]] && return 1 case "$(uname)" in Linux) typeset zfs_tunables="/sys/module/$module/parameters" [[ -w "$zfs_tunables/$tunable" ]] || return 1 cat >"$zfs_tunables/$tunable" <<<"$value" return $? ;; SunOS) [[ "$module" -eq "zfs" ]] || return 1 echo "${tunable}/${mdb_cmd}0t${value}" | mdb -kw return $? ;; esac } # # Get a global system tunable # # $1 tunable name # function get_tunable { get_tunable_impl "$1" } function get_tunable_impl { typeset tunable="$1" typeset module="${2:-zfs}" [[ -z "$tunable" ]] && return 1 case "$(uname)" in Linux) typeset zfs_tunables="/sys/module/$module/parameters" [[ -f "$zfs_tunables/$tunable" ]] || return 1 cat $zfs_tunables/$tunable return $? ;; SunOS) [[ "$module" -eq "zfs" ]] || return 1 ;; esac return 1 } # # Prints the current time in seconds since UNIX Epoch. # function current_epoch { printf '%(%s)T' } # # Get decimal value of global uint32_t variable using mdb. # function mdb_get_uint32 { typeset variable=$1 typeset value value=$(mdb -k -e "$variable/X | ::eval .=U") if [[ $? -ne 0 ]]; then log_fail "Failed to get value of '$variable' from mdb." return 1 fi echo $value return 0 } # # Set global uint32_t variable to a decimal value using mdb. # function mdb_set_uint32 { typeset variable=$1 typeset value=$2 mdb -kw -e "$variable/W 0t$value" > /dev/null if [[ $? -ne 0 ]]; then echo "Failed to set '$variable' to '$value' in mdb." return 1 fi return 0 } # # Set global scalar integer variable to a hex value using mdb. # Note: Target should have CTF data loaded. # function mdb_ctf_set_int { typeset variable=$1 typeset value=$2 mdb -kw -e "$variable/z $value" > /dev/null if [[ $? -ne 0 ]]; then echo "Failed to set '$variable' to '$value' in mdb." return 1 fi return 0 } # # Compute MD5 digest for given file or stdin if no file given. # Note: file path must not contain spaces # function md5digest { typeset file=$1 md5sum -b $file | awk '{ print $1 }' } # # Compute SHA256 digest for given file or stdin if no file given. # Note: file path must not contain spaces # function sha256digest { typeset file=$1 sha256sum -b $file | awk '{ print $1 }' } zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/zpool_script.shlib0000644000000000000000000000007413607166133023722 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.790596447 zfs-0.8.3/tests/zfs-tests/include/zpool_script.shlib0000644016037001603700000000247013607166133023722 0ustar00hutter2hutter200000000000000# # Common functions used by the zpool_status and zpool_iostat tests for running # scripts with the -c option. # # Copyright (c) 2017 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib function test_zpool_script { script="$1" testpool="$2" cmd="$3" wholecmd="$cmd $script $testpool" out="$($wholecmd)" # Default number of columns that get printed without -c if echo "$cmd" | grep -q iostat ; then # iostat dcols=7 else # status dcols=5 fi # Get the new column name that the script created col="$(echo "$out" | \ awk '/^pool +alloc +free +read +write +/ {print $8} \ /NAME +STATE +READ +WRITE +CKSUM/ {print $6}')" if [ -z "$col" ] ; then log_fail "'$wholecmd' created no new columns" fi # Count the number of columns for each vdev. Each script should produce # at least one new column value. Even if scripts return blank, zpool # will convert the blank to a '-' to make things awk-able. Normal # zpool iostat -v output is 7 columns, so if the script ran correctly # we should see more than that. if ! newcols=$(echo "$out" | \ awk '/\/dev/{print NF-'$dcols'; if (NF <= '$dcols') {exit 1}}' | \ head -n 1) ; \ then log_fail "'$wholecmd' didn't create a new column value" else log_note "'$wholecmd' passed ($newcols new columns)" fi } zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/default.cfg.in0000644000000000000000000000007413607166147022667 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.797596674 zfs-0.8.3/tests/zfs-tests/include/default.cfg.in0000644016037001603700000001246613607166147022675 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # Copyright (c) 2017 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/commands.cfg . $STF_SUITE/include/libtest.shlib # ZFS Directories export ZEDLET_ETC_DIR=${ZEDLET_ETC_DIR:-@sysconfdir@/zfs/zed.d} export ZEDLET_LIBEXEC_DIR=${ZEDLET_LIBEXEC_DIR:-@zfsexecdir@/zed.d} export ZPOOL_SCRIPT_DIR=${ZPOOL_SCRIPT_DIR:-@sysconfdir@/zfs/zpool.d} # Define run length constants export RT_LONG="3" export RT_MEDIUM="2" export RT_SHORT="1" # Define macro for zone test export ZONE_POOL="zonepool" export ZONE_CTR="zonectr" # ensure we're running in the C locale, since # localised messages may result in test failures export LC_ALL="C" export LANG="C" # # pattern to ignore from 'zpool list'. # export NO_POOLS="no pools available" # pattern to ignore from 'zfs list'. export NO_DATASETS="no datasets available" # Default directory used for test files # NOTE: remove trailing "/", some functions rely on this to do pattern matching export TEST_BASE_DIR="$(dirname ${FILEDIR:-/var/tmp}/.)" # Default to compression ON export COMPRESSION_PROP=on # Default to using the checksum export CHECKSUM_PROP=on # some common variables used by test scripts : export FIO_SCRIPTS=$STF_SUITE/tests/perf/fio export PERF_SCRIPTS=$STF_SUITE/tests/perf/scripts # some test pool names export TESTPOOL=testpool export TESTPOOL1=testpool1 export TESTPOOL2=testpool2 export TESTPOOL3=testpool3 export PERFPOOL=perfpool # some test file system names export TESTFS=testfs export TESTFS1=testfs1 export TESTFS2=testfs2 export TESTFS3=testfs3 # some test directory names export TESTDIR=${TEST_BASE_DIR%%/}/testdir export TESTDIR0=${TEST_BASE_DIR%%/}/testdir0 export TESTDIR1=${TEST_BASE_DIR%%/}/testdir1 export TESTDIR2=${TEST_BASE_DIR%%/}/testdir2 # some test sub file system names export TESTSUBFS=subfs export TESTSUBFS1=subfs1 export TESTSUBFS2=subfs2 # some temp files export TEMPFILE=${TEST_BASE_DIR%%/}/tempfile$$ export TEMPFILE0=${TEST_BASE_DIR%%/}/tempfile0$$ export TEMPFILE1=${TEST_BASE_DIR%%/}/tempfile1$$ export TEMPFILE2=${TEST_BASE_DIR%%/}/tempfile2$$ export ZFSROOT= export TESTSNAP=testsnap export TESTSNAP1=testsnap1 export TESTSNAP2=testsnap2 export TESTCLONE=testclone export TESTCLONE1=testclone1 export TESTCLONE2=testclone2 export TESTCLCT=testclct export TESTCTR=testctr export TESTCTR1=testctr1 export TESTCTR2=testctr2 export TESTVOL=testvol export TESTVOL1=testvol1 export TESTVOL2=testvol2 export TESTFILE0=testfile0 export TESTFILE1=testfile1 export TESTFILE2=testfile2 export TESTBKMARK=testbkmark export LONGPNAME="poolname50charslong_012345678901234567890123456789" export LONGFSNAME="fsysname50charslong_012345678901234567890123456789" export SNAPFS="$TESTPOOL/$TESTFS@$TESTSNAP" export SNAPFS1="$TESTPOOL/$TESTVOL@$TESTSNAP" export VOLSIZE=150m export BIGVOLSIZE=1eb # Default to limit disks to be checked export MAX_FINDDISKSNUM=6 # Default minimum size for file based vdevs in the test suite export MINVDEVSIZE=$((256 * 1024 * 1024)) # Minimum vdev size possible as defined in the OS export SPA_MINDEVSIZE=$((64 * 1024 * 1024)) # For iscsi target support export ISCSITGTFILE=/tmp/iscsitgt_file export ISCSITGT_FMRI=svc:/system/iscsitgt:default if ! is_linux; then export AUTO_SNAP=$(svcs -a | grep auto-snapshot | grep online | awk \ '{print $3}') fi # # finally, if we're running in a local zone # we take some additional actions if ! is_global_zone; then reexport_pool fi export ZFS_VERSION=5 export ZFS_ALL_VERSIONS="1 2 3 4 5" for i in $ZFS_ALL_VERSIONS; do eval 'export ZFS_VERSION_$i="v${i}-fs"' done export MAX_PARTITIONS=8 if is_linux; then unpack_opts="--sparse -xf" pack_opts="--sparse -cf" verbose=" -v" unpack_preserve=" -xpf" pack_preserve=" -cpf" ZVOL_DEVDIR="/dev/zvol" ZVOL_RDEVDIR="/dev/zvol" DEV_RDSKDIR="/dev" DEV_MPATHDIR="/dev/mapper" ZEDLET_DIR="/var/tmp/zed" ZED_LOG="$ZEDLET_DIR/zed.log" ZED_DEBUG_LOG="$ZEDLET_DIR/zed.debug.log" VDEVID_CONF="$ZEDLET_DIR/vdev_id.conf" VDEVID_CONF_ETC="/etc/zfs/vdev_id.conf" NEWFS_DEFAULT_FS="ext2" else unpack_opts="xv" pack_opts="cf" verbose="v" unpack_preserve="xpf" pack_preserve="cpf" ZVOL_DEVDIR="/dev/zvol/dsk" ZVOL_RDEVDIR="/dev/zvol/rdsk" DEV_DSKDIR="/dev/dsk" DEV_RDSKDIR="/dev/rdsk" NEWFS_DEFAULT_FS="ufs" fi export unpack_opts pack_opts verbose unpack_preserve pack_preserve \ ZVOL_DEVDIR ZVOL_RDEVDIR NEWFS_DEFAULT_FS DEV_RDSKDIR DEV_MPATHDIR \ ZEDLET_DIR ZED_LOG ZED_DEBUG_LOG VDEVID_CONF VDEVID_CONF_ETC zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/commands.cfg0000644000000000000000000000007413612141523022422 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.780596127 zfs-0.8.3/tests/zfs-tests/include/commands.cfg0000644016037001603700000000440213612141523022417 0ustar00hutter2hutter200000000000000# # These variables are used by zfs-tests.sh to constrain which utilities # may be used by the suite. The suite will create a directory which is # the only element of $PATH and create symlinks from that dir to the # binaries listed below. # # Please keep the contents of each variable sorted for ease of reading # and maintenance. # export SYSTEM_FILES='arp awk attr base64 basename bc blkid blockdev bunzip2 bzcat cat chattr chgrp chmod chown cksum cmp cp cpio cut date dd df diff dirname dmesg dmidecode du echo egrep exportfs expr fallocate false fdisk file find fio free getconf getent getfacl getfattr grep groupadd groupdel groupmod gunzip gzip head hostid hostname id iostat kill ksh ln logname losetup ls lsattr lsblk lscpu lsmod lsscsi md5sum mkdir mknod mkswap mktemp modprobe mount mpstat mv net nproc od openssl parted pax perf pgrep ping pkill printenv printf ps pwd python python2 python3 quotaon readlink rm rmdir scp sed seq setenforce setfacl setfattr sh sha256sum shuf sleep sort ssh stat strings su sudo sum swapoff swapon sync tail tar tee timeout touch tr true truncate udevadm umask umount uname useradd userdel usermod uuidgen vmstat wait wc which xargs' export ZFS_FILES='zdb zfs zhack zinject zpool ztest raidz_test arc_summary arc_summary3 arcstat dbufstat zed zgenhostid zstreamdump' export ZFSTEST_FILES='chg_usr_exec devname2devid dir_rd_update file_check file_trunc file_write largest_file libzfs_input_check mkbusy mkfile mkfiles mktree mmap_exec mmap_libaio mmapwrite nvlist_to_lua randfree_file randwritecomp readmmap rename_dir rm_lnkcnt_zero_file threadsappend user_ns_exec xattrtest' zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/properties.shlib0000644000000000000000000000007413607166147023374 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.787596351 zfs-0.8.3/tests/zfs-tests/include/properties.shlib0000644016037001603700000000746113607166147023401 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # typeset -a compress_prop_vals=('on' 'off' 'lzjb' 'gzip' 'gzip-1' 'gzip-2' 'gzip-3' 'gzip-4' 'gzip-5' 'gzip-6' 'gzip-7' 'gzip-8' 'gzip-9' 'zle' 'lz4') typeset -a checksum_prop_vals=('on' 'off' 'fletcher2' 'fletcher4' 'sha256' 'noparity' 'sha512' 'skein' 'edonr') typeset -a recsize_prop_vals=('512' '1024' '2048' '4096' '8192' '16384' '32768' '65536' '131072' '262144' '524288' '1048576') typeset -a canmount_prop_vals=('on' 'off' 'noauto') typeset -a copies_prop_vals=('1' '2' '3') typeset -a logbias_prop_vals=('latency' 'throughput') typeset -a primarycache_prop_vals=('all' 'none' 'metadata') typeset -a redundant_metadata_prop_vals=('all' 'most') typeset -a secondarycache_prop_vals=('all' 'none' 'metadata') typeset -a snapdir_prop_vals=('hidden' 'visible') typeset -a sync_prop_vals=('standard' 'always' 'disabled') typeset -a fs_props=('compress' 'checksum' 'recsize' 'canmount' 'copies' 'logbias' 'primarycache' 'redundant_metadata' 'secondarycache' 'snapdir' 'sync') typeset -a vol_props=('compress' 'checksum' 'copies' 'logbias' 'primarycache' 'secondarycache' 'redundant_metadata' 'sync') # # Given the property array passed in, return 'num_props' elements to the # user, excluding any elements below 'start.' This allows us to exclude # 'off' and 'on' which can be either unwanted, or a duplicate of another # property respectively. # function get_rand_prop { typeset prop_array=($(eval echo \${$1[@]})) typeset -i num_props=$2 typeset -i start=$3 typeset retstr="" [[ -z $prop_array || -z $num_props || -z $start ]] && \ log_fail "get_rand_prop: bad arguments" typeset prop_max=$((${#prop_array[@]} - 1)) typeset -i i for i in $(shuf -i $start-$prop_max -n $num_props); do retstr="${prop_array[$i]} $retstr" done echo $retstr } function get_rand_compress { get_rand_prop compress_prop_vals $1 2 } function get_rand_compress_any { get_rand_prop compress_prop_vals $1 0 } function get_rand_checksum { get_rand_prop checksum_prop_vals $1 2 } function get_rand_checksum_any { get_rand_prop checksum_prop_vals $1 0 } function get_rand_recsize { get_rand_prop recsize_prop_vals $1 0 } function get_rand_large_recsize { get_rand_prop recsize_prop_vals $1 9 } # # Functions to toggle on/off properties # typeset -a binary_props=('atime' 'devices' 'exec' 'readonly' 'setuid' 'xattr' 'zoned') if is_linux; then # Only older kernels support non-blocking mandatory locks if [[ $(linux_version) -lt $(linux_version "4.4") ]]; then binary_props+=('nbmand') fi else binary_props+=('nbmand') fi function toggle_prop { typeset ds=$1 typeset prop=$2 datasetexists $ds || log_fail "$ds does not exist" typeset val=$(get_prop $prop $ds) typeset newval='off' [[ $val = $newval ]] && newval='on' log_must zfs set $prop=$newval $ds } function toggle_binary_props { typeset ds=$1 typeset prop for prop in "${binary_props[@]}"; do toggle_prop $ds $prop done } function randomize_ds_props { typeset ds=$1 typeset prop proplist val datasetexists $ds || log_fail "$ds does not exist" if ds_is_volume $ds; then toggle_prop $ds readonly proplist="${vol_props[@]}" elif ds_is_filesystem $ds; then toggle_binary_props $ds proplist="${fs_props[@]}" else log_fail "$ds is neither a volume nor a file system" fi for prop in $proplist; do typeset val=$(get_rand_prop "${prop}_prop_vals" 1 0) log_must zfs set $prop=$val $ds done } zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147022211 xustar000000000000000030 atime=1579730433.583273389 30 ctime=1579730474.792596511 zfs-0.8.3/tests/zfs-tests/include/Makefile.am0000644016037001603700000000063513607166147022212 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/include dist_pkgdata_DATA = \ blkdev.shlib \ commands.cfg \ libtest.shlib \ math.shlib \ properties.shlib \ zpool_script.shlib EXTRA_DIST = default.cfg.in nodist_pkgdata_DATA = default.cfg $(nodist_pkgdata_DATA): %: %.in -$(SED) -e 's,@zfsexecdir\@,$(zfsexecdir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ $< >'$@' distclean-local:: -$(RM) default.cfg zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/math.shlib0000644000000000000000000000007413607166147022131 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.785596287 zfs-0.8.3/tests/zfs-tests/include/math.shlib0000644016037001603700000000571713607166147022140 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # # # Return 0 if the percentage difference between $a and $b is $percent or # greater. Return 1 if the percentage is lower or if we would divide by # zero. For use like this: # # Do $action if the calculated percentage is greater or equal to that passed in: # within_percent A B P && $action # Do $action if the calculated percentage is less than that passed in: # within_percent A B P || $action # function within_percent { typeset a=$1 typeset b=$1 typeset percent=$3 # Set $a or $b to $2 such that a >= b [[ '1' = $(echo "if ($2 > $a) 1" | bc) ]] && a=$2 || b=$2 # Prevent division by 0 [[ $a =~ [1-9] ]] || return 1 typeset p=$(echo "scale=2; $b * 100 / $a" | bc) log_note "Comparing $a and $b given $percent% (calculated: $p%)" [[ '1' = $(echo "scale=2; if ($p >= $percent) 1" | bc) ]] && return 0 return 1 } # # Return 0 if value is within +/-tolerance of target. # Return 1 if value exceeds our tolerance. # For use like this: # # Do $action if value is within the tolerance from target passed in: # within_tolerance VAL TAR TOL && $action # Do $action if value surpasses the tolerance from target passed in: # within_tolerance VAL TAR TOL || $action # function within_tolerance #value #target #tolerance { typeset val=$1 typeset target=$2 typeset tol=$3 typeset diff=$((abs(val - target))) log_note "Checking if $val is within +/-$tol of $target (diff: $diff)" ((diff <= tol)) && return 0 return 1 } # # Return 0 if the human readable string of the form [suffix] can # be converted to bytes. Allow suffixes are shown in the table below. # function to_bytes { typeset size=$1 typeset value=$(echo "$size" | grep -o '[0-9]\+') case $size in *PB|*pb|*P|*p) factor='1024^5' ;; *TB|*tb|*T|*t) factor='1024^4' ;; *GB|*gb|*G|*g) factor='1024^3' ;; *MB|*mb|*M|*m) factor='1024^2' ;; *KB|*kb|*K|*k) factor='1024^1' ;; *B|*b) factor='1024^0' ;; *[!0-9.]*) return 1 ;; *) factor='1024^0' ;; esac echo "$value * ($factor)" | bc return 0 } # # Verify $a is equal to $b, otherwise raise an error specifying # the $type of values being compared # function verify_eq # { typeset a=$1 typeset b=$2 typeset type=$3 if [[ $a -ne $b ]]; then log_fail "Compared $type should be equal: $a != $b" fi } # # Verify $a is not equal to $b, otherwise raise an error specifying # the $type of values being compared # function verify_ne # { typeset a=$1 typeset b=$2 typeset type=$3 if [[ $a -eq $b ]]; then log_fail "Compared $type should be not equal: $a == $b" fi } zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/blkdev.shlib0000644000000000000000000000007413612141514022432 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.778596063 zfs-0.8.3/tests/zfs-tests/include/blkdev.shlib0000644016037001603700000003300113612141514022424 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # Copyright (c) 2012, 2019 by Delphix. All rights reserved. # Copyright 2016 Nexenta Systems, Inc. # Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved. # Copyright (c) 2017 Lawrence Livermore National Security, LLC. # Copyright (c) 2017 Datto Inc. # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # Copyright 2019 Richard Elling # # # Returns SCSI host number for the given disk # function get_scsi_host #disk { typeset disk=$1 ls /sys/block/${disk}/device/scsi_device | cut -d : -f 1 } # # Cause a scan of all scsi host adapters by default # # $1 optional host number # function scan_scsi_hosts { typeset hostnum=${1} if is_linux; then if [[ -z $hostnum ]]; then for host in /sys/class/scsi_host/host*; do log_must eval "echo '- - -' > $host/scan" done else log_must eval \ "echo /sys/class/scsi_host/host$hostnum/scan" \ > /dev/null log_must eval \ "echo '- - -' > /sys/class/scsi_host/host$hostnum/scan" fi fi } # # Wait for newly created block devices to have their minors created. # Additional arguments can be passed to udevadm trigger, with the expected # arguments to typically be a block device pathname. This is useful when # checking waiting on a specific device to settle rather than triggering # all devices and waiting for them all to settle. # # The udevadm settle timeout can be 120 or 180 seconds by default for # some distros. If a long delay is experienced, it could be due to some # strangeness in a malfunctioning device that isn't related to the devices # under test. To help debug this condition, a notice is given if settle takes # too long. # # Note: there is no meaningful return code if udevadm fails. Consumers # should not expect a return code (do not call as argument to log_must) # function block_device_wait { if is_linux; then udevadm trigger $* typeset local start=$SECONDS udevadm settle typeset local elapsed=$((SECONDS - start)) [[ $elapsed > 60 ]] && \ log_note udevadm settle time too long: $elapsed fi } # # Check if the given device is physical device # function is_physical_device #device { typeset device=${1#$DEV_DSKDIR} device=${device#$DEV_RDSKDIR} if is_linux; then [[ -b "$DEV_DSKDIR/$device" ]] && \ [[ -f /sys/module/loop/parameters/max_part ]] return $? else echo $device | egrep "^c[0-F]+([td][0-F]+)+$" > /dev/null 2>&1 return $? fi } # # Check if the given device is a real device (ie SCSI device) # function is_real_device #disk { typeset disk=$1 [[ -z $disk ]] && log_fail "No argument for disk given." if is_linux; then lsblk $DEV_RDSKDIR/$disk -o TYPE 2>/dev/null | \ egrep disk >/dev/null return $? fi } # # Check if the given device is a loop device # function is_loop_device #disk { typeset disk=$1 [[ -z $disk ]] && log_fail "No argument for disk given." if is_linux; then lsblk $DEV_RDSKDIR/$disk -o TYPE 2>/dev/null | \ egrep loop >/dev/null return $? fi } # # Check if the given device is a multipath device and if there is a symbolic # link to a device mapper and to a disk # Currently no support for dm devices alone without multipath # function is_mpath_device #disk { typeset disk=$1 [[ -z $disk ]] && log_fail "No argument for disk given." if is_linux; then lsblk $DEV_MPATHDIR/$disk -o TYPE 2>/dev/null | \ egrep mpath >/dev/null if (($? == 0)); then readlink $DEV_MPATHDIR/$disk > /dev/null 2>&1 return $? else return $? fi fi } # Set the slice prefix for disk partitioning depending # on whether the device is a real, multipath, or loop device. # Currently all disks have to be of the same type, so only # checks first disk to determine slice prefix. # function set_slice_prefix { typeset disk typeset -i i=0 if is_linux; then while (( i < $DISK_ARRAY_NUM )); do disk="$(echo $DISKS | nawk '{print $(i + 1)}')" if ( is_mpath_device $disk ) && [[ -z $(echo $disk | awk 'substr($1,18,1)\ ~ /^[[:digit:]]+$/') ]] || ( is_real_device $disk ); then export SLICE_PREFIX="" return 0 elif ( is_mpath_device $disk || is_loop_device \ $disk ); then export SLICE_PREFIX="p" return 0 else log_fail "$disk not supported for partitioning." fi (( i = i + 1)) done fi } # # Set the directory path of the listed devices in $DISK_ARRAY_NUM # Currently all disks have to be of the same type, so only # checks first disk to determine device directory # default = /dev (linux) # real disk = /dev (linux) # multipath device = /dev/mapper (linux) # function set_device_dir { typeset disk typeset -i i=0 if is_linux; then while (( i < $DISK_ARRAY_NUM )); do disk="$(echo $DISKS | nawk '{print $(i + 1)}')" if is_mpath_device $disk; then export DEV_DSKDIR=$DEV_MPATHDIR return 0 else export DEV_DSKDIR=$DEV_RDSKDIR return 0 fi (( i = i + 1)) done else export DEV_DSKDIR=$DEV_RDSKDIR fi } # # Get the directory path of given device # function get_device_dir #device { typeset device=$1 if ! $(is_physical_device $device) ; then if [[ $device != "/" ]]; then device=${device%/*} fi if [[ -b "$DEV_DSKDIR/$device" ]]; then device="$DEV_DSKDIR" fi echo $device else echo "$DEV_DSKDIR" fi } # # Get persistent name for given disk # function get_persistent_disk_name #device { typeset device=$1 typeset dev_id if is_linux; then if is_real_device $device; then dev_id="$(udevadm info -q all -n $DEV_DSKDIR/$device \ | egrep disk/by-id | nawk '{print $2; exit}' \ | nawk -F / '{print $3}')" echo $dev_id elif is_mpath_device $device; then dev_id="$(udevadm info -q all -n $DEV_DSKDIR/$device \ | egrep disk/by-id/dm-uuid \ | nawk '{print $2; exit}' \ | nawk -F / '{print $3}')" echo $dev_id else echo $device fi else echo $device fi } # # Online or offline a disk on the system # # First checks state of disk. Test will fail if disk is not properly onlined # or offlined. Online is a full rescan of SCSI disks by echoing to every # host entry. # function on_off_disk # disk state{online,offline} host { typeset disk=$1 typeset state=$2 typeset host=$3 [[ -z $disk ]] || [[ -z $state ]] && \ log_fail "Arguments invalid or missing" if is_linux; then if [[ $state == "offline" ]] && ( is_mpath_device $disk ); then dm_name="$(readlink $DEV_DSKDIR/$disk \ | nawk -F / '{print $2}')" slave="$(ls /sys/block/${dm_name}/slaves \ | nawk '{print $1}')" while [[ -n $slave ]]; do #check if disk is online lsscsi | egrep $slave > /dev/null if (($? == 0)); then slave_dir="/sys/block/${dm_name}" slave_dir+="/slaves/${slave}/device" ss="${slave_dir}/state" sd="${slave_dir}/delete" log_must eval "echo 'offline' > ${ss}" log_must eval "echo '1' > ${sd}" lsscsi | egrep $slave > /dev/null if (($? == 0)); then log_fail "Offlining" \ "$disk failed" fi fi slave="$(ls /sys/block/$dm_name/slaves \ 2>/dev/null | nawk '{print $1}')" done elif [[ $state == "offline" ]] && ( is_real_device $disk ); then #check if disk is online lsscsi | egrep $disk > /dev/null if (($? == 0)); then dev_state="/sys/block/$disk/device/state" dev_delete="/sys/block/$disk/device/delete" log_must eval "echo 'offline' > ${dev_state}" log_must eval "echo '1' > ${dev_delete}" lsscsi | egrep $disk > /dev/null if (($? == 0)); then log_fail "Offlining $disk" \ "failed" fi else log_note "$disk is already offline" fi elif [[ $state == "online" ]]; then #force a full rescan scan_scsi_hosts $host block_device_wait if is_mpath_device $disk; then dm_name="$(readlink $DEV_DSKDIR/$disk \ | nawk -F / '{print $2}')" slave="$(ls /sys/block/$dm_name/slaves \ | nawk '{print $1}')" lsscsi | egrep $slave > /dev/null if (($? != 0)); then log_fail "Onlining $disk failed" fi elif is_real_device $disk; then block_device_wait typeset -i retries=0 while ! lsscsi | egrep -q $disk; do if (( $retries > 2 )); then log_fail "Onlining $disk failed" break fi (( ++retries )) sleep 1 done else log_fail "$disk is not a real dev" fi else log_fail "$disk failed to $state" fi fi } # # Simulate disk removal # function remove_disk #disk { typeset disk=$1 on_off_disk $disk "offline" block_device_wait } # # Simulate disk insertion for the given SCSI host # function insert_disk #disk scsi_host { typeset disk=$1 typeset scsi_host=$2 on_off_disk $disk "online" $scsi_host block_device_wait } # # Load scsi_debug module with specified parameters # $blksz can be either one of: < 512b | 512e | 4Kn > # function load_scsi_debug # dev_size_mb add_host num_tgts max_luns blksz { typeset devsize=$1 typeset hosts=$2 typeset tgts=$3 typeset luns=$4 typeset blksz=$5 [[ -z $devsize ]] || [[ -z $hosts ]] || [[ -z $tgts ]] || \ [[ -z $luns ]] || [[ -z $blksz ]] && \ log_fail "Arguments invalid or missing" case "$5" in '512b') typeset sector=512 typeset blkexp=0 ;; '512e') typeset sector=512 typeset blkexp=3 ;; '4Kn') typeset sector=4096 typeset blkexp=0 ;; *) log_fail "Unsupported blksz value: $5" ;; esac if is_linux; then modprobe -n scsi_debug if (($? != 0)); then log_unsupported "Platform does not have scsi_debug" "module" fi lsmod | egrep scsi_debug > /dev/null if (($? == 0)); then log_fail "scsi_debug module already installed" else log_must modprobe scsi_debug dev_size_mb=$devsize \ add_host=$hosts num_tgts=$tgts max_luns=$luns \ sector_size=$sector physblk_exp=$blkexp block_device_wait lsscsi | egrep scsi_debug > /dev/null if (($? == 1)); then log_fail "scsi_debug module install failed" fi fi fi } # # Unload scsi_debug module, if needed. # function unload_scsi_debug { log_must_retry "in use" 5 modprobe -r scsi_debug } # # Get scsi_debug device name. # Returns basename of scsi_debug device (for example "sdb"). # function get_debug_device { for i in {1..10} ; do val=$(lsscsi | nawk '/scsi_debug/ {print $6; exit}' | cut -d / -f3) # lsscsi can take time to settle if [ "$val" != "-" ] ; then break fi sleep 1 done echo "$val" } # # Get actual devices used by the pool (i.e. linux sdb1 not sdb). # function get_pool_devices #testpool #devdir { typeset testpool=$1 typeset devdir=$2 typeset out="" if is_linux; then out=$(zpool status -P $testpool |grep ${devdir} | awk '{print $1}') out=$(echo $out | sed -e "s|${devdir}/||g" | tr '\n' ' ') fi echo $out } # # Write to standard out giving the level, device name, offset and length # of all blocks in an input file. The offset and length are in units of # 512 byte blocks. In the case of mirrored vdevs, only the first # device is listed, as the levels, blocks and offsets will be the same # on other devices. Note that this function only works with mirrored # or non-redundant pools, not raidz. # # The output of this function can be used to introduce corruption at # varying levels of indirection. # function list_file_blocks # input_file { typeset input_file=$1 [[ -f $input_file ]] || log_fail "Couldn't find $input_file" typeset ds="$(zfs list -H -o name $input_file)" typeset pool="${ds%%/*}" typeset inum="$(stat -c '%i' $input_file)" # # Establish a mapping between vdev ids as shown in a DVA and the # pathnames they correspond to in ${VDEV_MAP[]}. # eval $(zdb -C $pool | awk ' BEGIN { printf("typeset VDEV_MAP\n"); looking = 0; } /^ children/ { id = $1; looking = 1; } /path: / && looking == 1 { print id" "$2; looking = 0; } ' | sed -n 's/^children\[\([0-9]\)\]: \(.*\)$/VDEV_MAP[\1]=\2/p') # # The awk below parses the output of zdb, printing out the level # of each block along with vdev id, offset and length. The last # two are converted to decimal in the while loop. 4M is added to # the offset to compensate for the first two labels and boot # block. Lastly, the offset and length are printed in units of # 512b blocks for ease of use with dd. # log_must zpool sync -f typeset level path offset length zdb -ddddd $ds $inum | awk -F: ' BEGIN { looking = 0 } /^Indirect blocks:/ { looking = 1} /^\t\tsegment / { looking = 0} /L[0-8]/ && looking == 1 { print $0} ' | sed -n 's/^.*\(L[0-9]\) \([0-9]*\):\([0-9a-f]*\):\([0-9a-f]*\) .*$/\1 \2 \3 \4/p' | \ while read level path offset length; do offset=$((16#$offset)) # Conversion from hex length=$((16#$length)) offset="$(((offset + 4 * 1024 * 1024) / 512))" length="$((length / 512))" echo "$level ${VDEV_MAP[$path]} $offset $length" done 2>/dev/null } function corrupt_blocks_at_level # input_file corrupt_level { typeset input_file=$1 typeset corrupt_level="L${2:-0}" typeset level path offset length [[ -f $input_file ]] || log_fail "Couldn't find $input_file" log_must list_file_blocks $input_file | \ while read level path offset length; do if [[ $level = $corrupt_level ]]; then log_must dd if=/dev/urandom of=$path bs=512 \ count=$length seek=$offset conv=notrunc fi done # This is necessary for pools made of loop devices. sync } zfs-0.8.3/tests/zfs-tests/include/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001022171 xustar000000000000000030 mtime=1579730433.621274609 30 atime=1579730454.117932695 30 ctime=1579730474.795596609 zfs-0.8.3/tests/zfs-tests/include/Makefile.in0000664016037001603700000006031413612143001022201 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/include DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) $(nodist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/include ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_DATA = \ blkdev.shlib \ commands.cfg \ libtest.shlib \ math.shlib \ properties.shlib \ zpool_script.shlib EXTRA_DIST = default.cfg.in nodist_pkgdata_DATA = default.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/include/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/include/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files install-nodist_pkgdataDATA: $(nodist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(nodist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-nodist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(nodist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-nodist_pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-nodist_pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distclean-local \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am \ install-dist_pkgdataDATA install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man \ install-nodist_pkgdataDATA install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-nodist_pkgdataDATA $(nodist_pkgdata_DATA): %: %.in -$(SED) -e 's,@zfsexecdir\@,$(zfsexecdir),g' \ -e 's,@sysconfdir\@,$(sysconfdir),g' \ $< >'$@' distclean-local:: -$(RM) default.cfg # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/PaxHeaders.151519/tests0000644000000000000000000000013213612143052017574 xustar000000000000000030 mtime=1579730474.854598502 30 atime=1579730489.078055195 30 ctime=1579730474.854598502 zfs-0.8.3/tests/zfs-tests/tests/0000775016037001603700000000000013612143052017655 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/PaxHeaders.151519/perf0000644000000000000000000000013213612143066020535 xustar000000000000000030 mtime=1579730486.485971967 30 atime=1579730489.078055195 30 ctime=1579730486.485971967 zfs-0.8.3/tests/zfs-tests/tests/perf/0000775016037001603700000000000013612143066020616 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/perf/PaxHeaders.151519/scripts0000644000000000000000000000013213612143066022224 xustar000000000000000030 mtime=1579730486.669977875 30 atime=1579730489.078055195 30 ctime=1579730486.669977875 zfs-0.8.3/tests/zfs-tests/tests/perf/scripts/0000775016037001603700000000000013612143066022305 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/perf/scripts/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133024346 xustar000000000000000030 atime=1579730442.344554685 30 ctime=1579730486.667977811 zfs-0.8.3/tests/zfs-tests/tests/perf/scripts/Makefile.am0000644016037001603700000000014513607166133024343 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/perf/scripts dist_pkgdata_SCRIPTS = prefetch_io.sh zfs-0.8.3/tests/zfs-tests/tests/perf/scripts/PaxHeaders.151519/prefetch_io.sh0000644000000000000000000000007413607166133025135 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.665977747 zfs-0.8.3/tests/zfs-tests/tests/perf/scripts/prefetch_io.sh0000755016037001603700000000424313607166133025140 0ustar00hutter2hutter200000000000000#!/bin/bash # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Intel, Corp. # # # Linux platform placeholder for collecting prefetch I/O stats # TBD if we can add additional kstats to achieve the desired results # zfs_kstats="/proc/spl/kstat/zfs" function get_prefetch_ios { typeset -l data_misses=`awk '$1 == "prefetch_data_misses" \ { print $3 }' $zfs_kstats/arcstats` typeset -l metadata_misses=`awk '$1 == "prefetch_metadata_misses" \ { print $3 }' $zfs_kstats/arcstats` typeset -l total_misses=$(( $data_misses + $metadata_misses )) echo $total_misses } function get_prefetched_demand_reads { typeset -l demand_reads=`awk '$1 == "demand_hit_predictive_prefetch" \ { print $3 }' $zfs_kstats/arcstats` echo $demand_reads } function get_async_upgrade_sync { typeset -l sync_wait=`awk '$1 == "async_upgrade_sync" \ { print $3 }' $zfs_kstats/arcstats` echo $sync_wait } if [ $# -ne 2 ] then echo "Usage: `basename $0` interval" >&2 exit 1 fi poolname=$1 interval=$2 prefetch_ios=$(get_prefetch_ios) prefetched_demand_reads=$(get_prefetched_demand_reads) async_upgrade_sync=$(get_async_upgrade_sync) while true do new_prefetch_ios=$(get_prefetch_ios) printf "%u\n%-24s\t%u\n" $(date +%s) "prefetch_ios" \ $(( $new_prefetch_ios - $prefetch_ios )) prefetch_ios=$new_prefetch_ios new_prefetched_demand_reads=$(get_prefetched_demand_reads) printf "%-24s\t%u\n" "prefetched_demand_reads" \ $(( $new_prefetched_demand_reads - $prefetched_demand_reads )) prefetched_demand_reads=$new_prefetched_demand_reads new_async_upgrade_sync=$(get_async_upgrade_sync) printf "%-24s\t%u\n" "async_upgrade_sync" \ $(( $new_async_upgrade_sync - $async_upgrade_sync )) async_upgrade_sync=$new_async_upgrade_sync sleep $interval done zfs-0.8.3/tests/zfs-tests/tests/perf/scripts/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143012024335 xustar000000000000000030 mtime=1579730442.381555874 30 atime=1579730458.960088165 30 ctime=1579730486.669977875 zfs-0.8.3/tests/zfs-tests/tests/perf/scripts/Makefile.in0000664016037001603700000005713613612143012024355 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/perf/scripts DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/perf/scripts ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = prefetch_io.sh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/perf/scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/perf/scripts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/perf/PaxHeaders.151519/perf.shlib0000644000000000000000000000007413612141522022571 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.472971549 zfs-0.8.3/tests/zfs-tests/tests/perf/perf.shlib0000644016037001603700000003402613612141522022573 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # Copyright (c) 2016, Intel Corporation. # . $STF_SUITE/include/libtest.shlib # If neither is specified, do a nightly run. [[ -z $PERF_REGRESSION_WEEKLY ]] && export PERF_REGRESSION_NIGHTLY=1 # Default runtime for each type of test run. export PERF_RUNTIME_WEEKLY=$((30 * 60)) export PERF_RUNTIME_NIGHTLY=$((10 * 60)) # Default fs creation options export PERF_FS_OPTS=${PERF_FS_OPTS:-'-o recsize=8k -o compress=lz4' \ ' -o checksum=sha256 -o redundant_metadata=most'} function get_sync_str { typeset sync=$1 typeset sync_str='' [[ $sync -eq 0 ]] && sync_str='async' [[ $sync -eq 1 ]] && sync_str='sync' echo $sync_str } function get_suffix { typeset threads=$1 typeset sync=$2 typeset iosize=$3 typeset sync_str=$(get_sync_str $sync) typeset filesystems=$(get_nfilesystems) typeset suffix="$sync_str.$iosize-ios" suffix="$suffix.$threads-threads.$filesystems-filesystems" echo $suffix } function do_fio_run_impl { typeset script=$1 typeset do_recreate=$2 typeset clear_cache=$3 typeset threads=$4 typeset threads_per_fs=$5 typeset sync=$6 typeset iosize=$7 typeset sync_str=$(get_sync_str $sync) log_note "Running with $threads $sync_str threads, $iosize ios" if [[ -n $threads_per_fs && $threads_per_fs -ne 0 ]]; then log_must test $do_recreate verify_threads_per_fs $threads $threads_per_fs fi if $do_recreate; then recreate_perf_pool # # A value of zero for "threads_per_fs" is "special", and # means a single filesystem should be used, regardless # of the number of threads. # if [[ -n $threads_per_fs && $threads_per_fs -ne 0 ]]; then populate_perf_filesystems $((threads / threads_per_fs)) else populate_perf_filesystems 1 fi fi if $clear_cache; then # Clear the ARC zpool export $PERFPOOL zpool import $PERFPOOL fi if [[ -n $ZINJECT_DELAYS ]]; then apply_zinject_delays else log_note "No per-device commands to execute." fi # # Allow this to be overridden by the individual test case. This # can be used to run the FIO job against something other than # the default filesystem (e.g. against a clone). # export DIRECTORY=$(get_directory) log_note "DIRECTORY: " $DIRECTORY export RUNTIME=$PERF_RUNTIME export FILESIZE=$((TOTAL_SIZE / threads)) export NUMJOBS=$threads export SYNC_TYPE=$sync export BLOCKSIZE=$iosize sync # When running locally, we want to keep the default behavior of # DIRECT == 0, so only set it when we're running over NFS to # disable client cache for reads. if [[ $NFS -eq 1 ]]; then export DIRECT=1 do_setup_nfs $script else export DIRECT=0 fi # This will be part of the output filename. typeset suffix=$(get_suffix $threads $sync $iosize) # Start the data collection do_collect_scripts $suffix # Define output file typeset logbase="$(get_perf_output_dir)/$(basename \ $SUDO_COMMAND)" typeset outfile="$logbase.fio.$suffix" # Start the load if [[ $NFS -eq 1 ]]; then log_must ssh -t $NFS_USER@$NFS_CLIENT " fio --output /tmp/fio.out /tmp/test.fio " log_must scp $NFS_USER@$NFS_CLIENT:/tmp/fio.out $outfile else log_must fio --output $outfile $FIO_SCRIPTS/$script fi } # # This function will run fio in a loop, according to the .fio file passed # in and a number of environment variables. The following variables can be # set before launching zfstest to override the defaults. # # PERF_RUNTIME: The time in seconds each fio invocation should run. # PERF_RUNTYPE: A human readable tag that appears in logs. The defaults are # nightly and weekly. # PERF_NTHREADS: A list of how many threads each fio invocation will use. # PERF_SYNC_TYPES: Whether to use (O_SYNC) or not. 1 is sync IO, 0 is async IO. # PERF_IOSIZES: A list of blocksizes in which each fio invocation will do IO. # PERF_COLLECT_SCRIPTS: A comma delimited list of 'command args, logfile_tag' # pairs that will be added to the scripts specified in each test. # function do_fio_run { typeset script=$1 typeset do_recreate=$2 typeset clear_cache=$3 typeset threads threads_per_fs sync iosize for threads in $PERF_NTHREADS; do for threads_per_fs in $PERF_NTHREADS_PER_FS; do for sync in $PERF_SYNC_TYPES; do for iosize in $PERF_IOSIZES; do do_fio_run_impl \ $script \ $do_recreate \ $clear_cache \ $threads \ $threads_per_fs \ $sync \ $iosize done done done done } # This function sets NFS mount on the client and make sure all correct # permissions are in place # function do_setup_nfs { typeset script=$1 zfs set sharenfs=on $TESTFS log_must chmod -R 777 /$TESTFS ssh -t $NFS_USER@$NFS_CLIENT "mkdir -m 777 -p $NFS_MOUNT" ssh -t $NFS_USER@$NFS_CLIENT "sudo -S umount $NFS_MOUNT" log_must ssh -t $NFS_USER@$NFS_CLIENT " sudo -S mount $NFS_OPTIONS $NFS_SERVER:/$TESTFS $NFS_MOUNT " # # The variables in the fio script are only available in our current # shell session, so we have to evaluate them here before copying # the resulting script over to the target machine. # export jobnum='$jobnum' while read line; do eval echo "$line" done < $FIO_SCRIPTS/$script > /tmp/test.fio log_must sed -i -e "s%directory.*%directory=$NFS_MOUNT%" /tmp/test.fio log_must scp /tmp/test.fio $NFS_USER@$NFS_CLIENT:/tmp log_must rm /tmp/test.fio } # # This function iterates through the value pairs in $PERF_COLLECT_SCRIPTS. # The script at index N is launched in the background, with its output # redirected to a logfile containing the tag specified at index N + 1. # function do_collect_scripts { typeset suffix=$1 [[ -n $collect_scripts ]] || log_fail "No data collection scripts." [[ -n $PERF_RUNTIME ]] || log_fail "No runtime specified." # Add in user supplied scripts and logfiles, if any. typeset oIFS=$IFS IFS=',' for item in $PERF_COLLECT_SCRIPTS; do collect_scripts+=($(echo $item | sed 's/^ *//g')) done IFS=$oIFS typeset idx=0 while [[ $idx -lt "${#collect_scripts[@]}" ]]; do typeset logbase="$(get_perf_output_dir)/$(basename \ $SUDO_COMMAND)" typeset outfile="$logbase.${collect_scripts[$idx + 1]}.$suffix" timeout $PERF_RUNTIME ${collect_scripts[$idx]} >$outfile 2>&1 & ((idx += 2)) done # Need to explicitly return 0 because timeout(1) will kill # a child process and cause us to return non-zero. return 0 } # Find a place to deposit performance data collected while under load. function get_perf_output_dir { typeset dir="$(pwd)/perf_data" [[ -d $dir ]] || mkdir -p $dir echo $dir } function apply_zinject_delays { typeset idx=0 while [[ $idx -lt "${#ZINJECT_DELAYS[@]}" ]]; do [[ -n ${ZINJECT_DELAYS[$idx]} ]] || \ log_must "No zinject delay found at index: $idx" for disk in $DISKS; do log_must zinject \ -d $disk -D ${ZINJECT_DELAYS[$idx]} $PERFPOOL done ((idx += 1)) done } function clear_zinject_delays { log_must zinject -c all } # # Destroy and create the pool used for performance tests. # function recreate_perf_pool { [[ -n $PERFPOOL ]] || log_fail "The \$PERFPOOL variable isn't set." # # In case there's been some "leaked" zinject delays, or if the # performance test injected some delays itself, we clear all # delays before attempting to destroy the pool. Each delay # places a hold on the pool, so the destroy will fail if there # are any outstanding delays. # clear_zinject_delays # # This function handles the case where the pool already exists, # and will destroy the previous pool and recreate a new pool. # create_pool $PERFPOOL $DISKS } function verify_threads_per_fs { typeset threads=$1 typeset threads_per_fs=$2 log_must test -n $threads log_must test -n $threads_per_fs # # A value of "0" is treated as a "special value", and it is # interpreted to mean all threads will run using a single # filesystem. # [[ $threads_per_fs -eq 0 ]] && return # # The number of threads per filesystem must be a value greater # than or equal to zero; since we just verified the value isn't # 0 above, then it must be greater than zero here. # log_must test $threads_per_fs -ge 0 # # This restriction can be lifted later if needed, but for now, # we restrict the number of threads per filesystem to a value # that evenly divides the thread count. This way, the threads # will be evenly distributed over all the filesystems. # log_must test $((threads % threads_per_fs)) -eq 0 } function populate_perf_filesystems { typeset nfilesystems=${1:-1} export TESTFS="" for i in $(seq 1 $nfilesystems); do typeset dataset="$PERFPOOL/fs$i" create_dataset $dataset $PERF_FS_OPTS if [[ -z "$TESTFS" ]]; then TESTFS="$dataset" else TESTFS="$TESTFS $dataset" fi done } function get_nfilesystems { typeset filesystems=( $TESTFS ) echo ${#filesystems[@]} } function get_directory { typeset filesystems=( $TESTFS ) typeset directory= typeset idx=0 while [[ $idx -lt "${#filesystems[@]}" ]]; do mountpoint=$(get_prop mountpoint "${filesystems[$idx]}") if [[ -n $directory ]]; then directory=$directory:$mountpoint else directory=$mountpoint fi ((idx += 1)) done echo $directory } function get_min_arc_size { if is_linux; then typeset -l min_arc_size=`awk '$1 == "c_min" { print $3 }' \ /proc/spl/kstat/zfs/arcstats` else typeset -l min_arc_size=$(dtrace -qn 'BEGIN { printf("%u\n", `arc_stats.arcstat_c_min.value.ui64); exit(0); }') fi [[ $? -eq 0 ]] || log_fail "get_min_arc_size failed" echo $min_arc_size } function get_max_arc_size { if is_linux; then typeset -l max_arc_size=`awk '$1 == "c_max" { print $3 }' \ /proc/spl/kstat/zfs/arcstats` else typeset -l max_arc_size=$(dtrace -qn 'BEGIN { printf("%u\n", `arc_stats.arcstat_c_max.value.ui64); exit(0); }') fi [[ $? -eq 0 ]] || log_fail "get_max_arc_size failed" echo $max_arc_size } function get_max_dbuf_cache_size { typeset -l max_dbuf_cache_size if is_linux; then max_dbuf_cache_size=$(get_tunable dbuf_cache_max_bytes) else max_dbuf_cache_size=$(dtrace -qn 'BEGIN { printf("%u\n", `dbuf_cache_max_bytes); exit(0); }') [[ $? -eq 0 ]] || log_fail "get_max_dbuf_cache_size failed" fi echo $max_dbuf_cache_size } # Create a file with some information about how this system is configured. function get_system_config { typeset config=$PERF_DATA_DIR/$1 echo "{" >>$config if is_linux; then echo " \"ncpus\": \"$(nproc --all)\"," >>$config echo " \"physmem\": \"$(free -b | \ awk '$1 == "Mem:" { print $2 }')\"," >>$config echo " \"c_max\": \"$(get_max_arc_size)\"," >>$config echo " \"hostname\": \"$(uname -n)\"," >>$config echo " \"kernel version\": \"$(uname -sr)\"," >>$config else dtrace -qn 'BEGIN{ printf(" \"ncpus\": %d,\n", `ncpus); printf(" \"physmem\": %u,\n", `physmem * `_pagesize); printf(" \"c_max\": %u,\n", `arc_stats.arcstat_c_max.value.ui64); printf(" \"kmem_flags\": \"0x%x\",", `kmem_flags); exit(0)}' >>$config echo " \"hostname\": \"$(uname -n)\"," >>$config echo " \"kernel version\": \"$(uname -v)\"," >>$config fi if is_linux; then lsblk -dino NAME,SIZE | awk 'BEGIN { printf(" \"disks\": {\n"); first = 1} {disk = $1} {size = $2; if (first != 1) {printf(",\n")} else {first = 0} printf(" \"%s\": \"%s\"", disk, size)} END {printf("\n },\n")}' >>$config zfs_tunables="/sys/module/zfs/parameters" printf " \"tunables\": {\n" >>$config for tunable in \ zfs_arc_max \ zfs_arc_meta_limit \ zfs_arc_sys_free \ zfs_dirty_data_max \ zfs_flags \ zfs_prefetch_disable \ zfs_txg_timeout \ zfs_vdev_aggregation_limit \ zfs_vdev_async_read_max_active \ zfs_vdev_async_write_max_active \ zfs_vdev_sync_read_max_active \ zfs_vdev_sync_write_max_active \ zio_slow_io_ms do if [ "$tunable" != "zfs_arc_max" ] then printf ",\n" >>$config fi printf " \"$tunable\": \"$(<$zfs_tunables/$tunable)\"" \ >>$config done printf "\n }\n" >>$config else iostat -En | awk 'BEGIN { printf(" \"disks\": {\n"); first = 1} /^c/ {disk = $1} /^Size: [^0]/ {size = $2; if (first != 1) {printf(",\n")} else {first = 0} printf(" \"%s\": \"%s\"", disk, size)} END {printf("\n },\n")}' >>$config sed -n 's/^set \(.*\)[ ]=[ ]\(.*\)/\1=\2/p' /etc/system | \ awk -F= 'BEGIN {printf(" \"system\": {\n"); first = 1} {if (first != 1) {printf(",\n")} else {first = 0}; printf(" \"%s\": %s", $1, $2)} END {printf("\n }\n")}' >>$config fi echo "}" >>$config } function num_jobs_by_cpu { if is_linux; then typeset ncpu=$($NPROC --all) else typeset ncpu=$(psrinfo | $WC -l) fi typeset num_jobs=$ncpu [[ $ncpu -gt 8 ]] && num_jobs=$(echo "$ncpu * 3 / 4" | bc) echo $num_jobs } # # On illumos this looks like: ":sd3:sd4:sd1:sd2:" # function pool_to_lun_list { typeset pool=$1 typeset ctd ctds devname lun typeset lun_list=':' if is_linux; then ctds=$(zpool list -HLv $pool | \ awk '/sd[a-z]*|loop[0-9]*|dm-[0-9]*/ {print $1}') for ctd in $ctds; do lun_list="$lun_list$ctd:" done else ctds=$(zpool list -v $pool | awk '/c[0-9]*t[0-9a-fA-F]*d[0-9]*/ {print $1}') for ctd in $ctds; do # Get the device name as it appears in /etc/path_to_inst devname=$(readlink -f /dev/dsk/${ctd}s0 | sed -n \ 's/\/devices\([^:]*\):.*/\1/p') # Add a string composed of the driver name and instance # number to the list for comparison with dev_statname. lun=$(sed 's/"//g' /etc/path_to_inst | grep \ $devname | awk '{print $3$2}') un_list="$lun_list$lun:" done fi echo $lun_list } # Create a perf_data directory to hold performance statistics and # configuration information. export PERF_DATA_DIR=$(get_perf_output_dir) [[ -f $PERF_DATA_DIR/config.json ]] || get_system_config config.json zfs-0.8.3/tests/zfs-tests/tests/perf/PaxHeaders.151519/regression0000644000000000000000000000013213612143066022715 xustar000000000000000030 mtime=1579730486.621976333 30 atime=1579730489.078055195 30 ctime=1579730486.621976333 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/0000775016037001603700000000000013612143066022776 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/random_writes.ksh0000644000000000000000000000007413607166147026374 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.600975659 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/random_writes.ksh0000755016037001603700000000637213607166147026404 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the random_writes job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # Prior to each fio run the dataset is recreated, and fio writes new files # into an otherwise empty pool. # # Thread/Concurrency settings: # PERF_NTHREADS defines the number of files created in the test filesystem, # as well as the number of threads that will simultaneously drive IO to # those files. The settings chosen are from measurements in the # PerfAutoESX/ZFSPerfESX Environments, selected at concurrency levels that # are at peak throughput but lowest latency. Higher concurrency introduces # queue time latency and would reduce the impact of code-induced performance # regressions. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during random read load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Aim to fill the pool to 50% capacity while accounting for a 3x compressratio. export TOTAL_SIZE=$(($(get_prop avail $PERFPOOL) * 3 / 2)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'1 4 8 16 32 64 128'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'0 1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k 64k 256k'} elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'32 128'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k'} fi # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "$PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" ) fi log_note "Random writes with $PERF_RUNTYPE settings" do_fio_run random_writes.fio true false log_pass "Measure IO stats during random write load" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025037 xustar000000000000000030 atime=1579730442.292553015 30 ctime=1579730486.618976237 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/Makefile.am0000644016037001603700000000057713607166133025045 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/perf/regression dist_pkgdata_SCRIPTS = \ random_reads.ksh \ random_readwrite.ksh \ random_readwrite_fixed.ksh \ random_writes.ksh \ random_writes_zil.ksh \ sequential_reads_arc_cached_clone.ksh \ sequential_reads_arc_cached.ksh \ sequential_reads_dbuf_cached.ksh \ sequential_reads.ksh \ sequential_writes.ksh \ setup.ksh zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024652 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.616976173 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/setup.ksh0000755016037001603700000000107613607166133024656 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" verify_disk_count "$DISKS" 3 log_pass zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/sequential_reads_dbuf_cached.ksh0000644000000000000000000000007413607166147031336 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.609975949 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/sequential_reads_dbuf_cached.ksh0000755016037001603700000000700513607166147031340 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the sequential_reads job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # The files to read from are created prior to the first fio run, and used # for all fio runs. The ARC is not cleared to ensure that all data is cached. # # This is basically a copy of the sequential_reads_cached test case, but with # a smaller dateset so that we can fit everything into the decompressed, linear # space in the dbuf cache. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during sequential read load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Ensure the working set can be cached in the dbuf cache. export TOTAL_SIZE=$(($(get_max_dbuf_cache_size) * 3 / 4)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'8 16 32 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k 64k 128k'} elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'64k'} fi # Layout the files to be used by the read tests. Create as many files as the # largest number of threads. An fio run with fewer threads will use a subset # of the available files. export NUMJOBS=$(get_max $PERF_NTHREADS) export FILE_SIZE=$((TOTAL_SIZE / NUMJOBS)) export DIRECTORY=$(get_directory) log_must fio $FIO_SCRIPTS/mkfiles.fio # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "$PERF_SCRIPTS/prefetch_io.sh $PERFPOOL 1" "prefetch" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "kstat zfs:0 1" "kstat" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" "dtrace -Cs $PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "dtrace -Cs $PERF_SCRIPTS/prefetch_io.d $PERFPOOL 1" "prefetch" "dtrace -s $PERF_SCRIPTS/profile.d" "profile" ) fi log_note "Sequential cached reads with $PERF_RUNTYPE settings" do_fio_run sequential_reads.fio false false log_pass "Measure IO stats during sequential cached read load" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/sequential_writes.ksh0000644000000000000000000000007413607166147027266 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.614976109 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/sequential_writes.ksh0000755016037001603700000000642113607166147027271 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the sequential_writes job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # Prior to each fio run the dataset is recreated, and fio writes new files # into an otherwise empty pool. # # Thread/Concurrency settings: # PERF_NTHREADS defines the number of files created in the test filesystem, # as well as the number of threads that will simultaneously drive IO to # those files. The settings chosen are from measurements in the # PerfAutoESX/ZFSPerfESX Environments, selected at concurrency levels that # are at peak throughput but lowest latency. Higher concurrency introduces # queue time latency and would reduce the impact of code-induced performance # regressions. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during random read load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Aim to fill the pool to 50% capacity while accounting for a 3x compressratio. export TOTAL_SIZE=$(($(get_prop avail $PERFPOOL) * 3 / 2)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'1 4 8 16 32 64 128'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'0 1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k 64k 256k'} elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'16 32'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k 128k 1m'} fi # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "$PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" ) fi log_note "Sequential writes with $PERF_RUNTYPE settings" do_fio_run sequential_writes.fio true false log_pass "Measure IO stats during sequential write load" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/sequential_reads.ksh0000644000000000000000000000007413607166147027047 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.612976045 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/sequential_reads.ksh0000755016037001603700000000742113607166147027053 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the sequential_reads job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # The files to read from are created prior to the first fio run, and used # for all fio runs. The ARC is cleared with `zinject -a` prior to each run # so reads will go to disk. # # Thread/Concurrency settings: # PERF_NTHREADS defines the number of files created in the test filesystem, # as well as the number of threads that will simultaneously drive IO to # those files. The settings chosen are from measurements in the # PerfAutoESX/ZFSPerfESX Environments, selected at concurrency levels that # are at peak throughput but lowest latency. Higher concurrency introduces # queue time latency and would reduce the impact of code-induced performance # regressions. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during random read load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Aim to fill the pool to 50% capacity while accounting for a 3x compressratio. export TOTAL_SIZE=$(($(get_prop avail $PERFPOOL) * 3 / 2)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'8 16 32 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k 64k 128k'} elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'8 16'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'128k 1m'} fi # Layout the files to be used by the read tests. Create as many files as the # largest number of threads. An fio run with fewer threads will use a subset # of the available files. export NUMJOBS=$(get_max $PERF_NTHREADS) export FILE_SIZE=$((TOTAL_SIZE / NUMJOBS)) export DIRECTORY=$(get_directory) log_must fio $FIO_SCRIPTS/mkfiles.fio # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "$PERF_SCRIPTS/prefetch_io.sh $PERFPOOL 1" "prefetch" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "$PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "$PERF_SCRIPTS/prefetch_io.d $PERFPOOL 1" "prefetch" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" ) fi log_note "Sequential reads with $PERF_RUNTYPE settings" do_fio_run sequential_reads.fio false true log_pass "Measure IO stats during sequential read load" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/sequential_reads_arc_cached.ksh0000644000000000000000000000007413607166147031163 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.607975883 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/sequential_reads_arc_cached.ksh0000755016037001603700000000636313607166147031173 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the sequential_reads job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # The files to read from are created prior to the first fio run, and used # for all fio runs. The ARC is not cleared to ensure that all data is cached. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during random read load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Make sure the working set can be cached in the arc. Aim for 1/2 of arc. export TOTAL_SIZE=$(($(get_max_arc_size) / 2)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'8 16 32 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k 64k 128k'} elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'64 128'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'128k 1m'} fi # Layout the files to be used by the read tests. Create as many files as the # largest number of threads. An fio run with fewer threads will use a subset # of the available files. export NUMJOBS=$(get_max $PERF_NTHREADS) export FILE_SIZE=$((TOTAL_SIZE / NUMJOBS)) export DIRECTORY=$(get_directory) log_must fio $FIO_SCRIPTS/mkfiles.fio # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "$PERF_SCRIPTS/prefetch_io.sh $PERFPOOL 1" "prefetch" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "$PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "$PERF_SCRIPTS/prefetch_io.d $PERFPOOL 1" "prefetch" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" ) fi log_note "Sequential cached reads with $PERF_RUNTYPE settings" do_fio_run sequential_reads.fio false false log_pass "Measure IO stats during sequential cached read load" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/random_writes_zil.ksh0000644000000000000000000000007413607166147027252 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.603975755 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/random_writes_zil.ksh0000755016037001603700000000614413607166147027257 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat # # We're using many filesystems depending on the number of # threads for each test, and there's no good way to get a list # of all the filesystems that should be destroyed on cleanup # (i.e. the list of filesystems used for the last test ran). # Thus, we simply recreate the pool as a way to destroy all # filesystems and leave a fresh pool behind. # recreate_perf_pool } trap "log_fail \"Measure IO stats during random write load\"" SIGTERM log_onexit cleanup recreate_perf_pool # Aim to fill the pool to 50% capacity while accounting for a 3x compressratio. export TOTAL_SIZE=$(($(get_prop avail $PERFPOOL) * 3 / 2)) if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'1 2 4 8 16 32 64 128'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0 1'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k'} elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'1 4 16 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0 1'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k'} fi # Until the performance tests over NFS can deal with multiple file systems, # force the use of only one file system when testing over NFS. [[ $NFS -eq 1 ]] && PERF_NTHREADS_PER_FS='0' lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "kstat zfs:0 1" "kstat" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" "dtrace -Cs $PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "dtrace -s $PERF_SCRIPTS/zil.d $PERFPOOL 1" "zil" "dtrace -s $PERF_SCRIPTS/profile.d" "profile" "dtrace -s $PERF_SCRIPTS/offcpu-profile.d" "offcpu-profile" ) fi log_note "ZIL specific random write workload with $PERF_RUNTYPE settings" do_fio_run random_writes.fio true false log_pass "Measure IO stats during ZIL specific random write workload" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/random_reads.ksh0000644000000000000000000000007413607166147026155 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.594975467 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/random_reads.ksh0000755016037001603700000000721113607166147026156 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the random_reads job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # The files to read from are created prior to the first fio run, and used # for all fio runs. The ARC is cleared with `zinject -a` prior to each run # so reads will go to disk. # # Thread/Concurrency settings: # PERF_NTHREADS defines the number of files created in the test filesystem, # as well as the number of threads that will simultaneously drive IO to # those files. The settings chosen are from measurements in the # PerfAutoESX/ZFSPerfESX Environments, selected at concurrency levels that # are at peak throughput but lowest latency. Higher concurrency introduces # queue time latency and would reduce the impact of code-induced performance # regressions. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during random read load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Aim to fill the pool to 50% capacity while accounting for a 3x compressratio. export TOTAL_SIZE=$(($(get_prop avail $PERFPOOL) * 3 / 2)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'8 16 32 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k 64k 128k'} elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'16 32'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k'} fi # Layout the files to be used by the read tests. Create as many files as the # largest number of threads. An fio run with fewer threads will use a subset # of the available files. export NUMJOBS=$(get_max $PERF_NTHREADS) export FILE_SIZE=$((TOTAL_SIZE / NUMJOBS)) export DIRECTORY=$(get_directory) log_must fio $FIO_SCRIPTS/mkfiles.fio # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "$PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" ) fi log_note "Random reads with $PERF_RUNTYPE settings" do_fio_run random_reads.fio false true log_pass "Measure IO stats during random read load" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/random_readwrite.ksh0000644000000000000000000000007413607166147027045 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.596975531 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/random_readwrite.ksh0000755016037001603700000000726013607166147027052 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the random_readwrite job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # The files to read and write from are created prior to the first fio run, # and used for all fio runs. The ARC is cleared with `zinject -a` prior to # each run so reads will go to disk. # # Thread/Concurrency settings: # PERF_NTHREADS defines the number of files created in the test filesystem, # as well as the number of threads that will simultaneously drive IO to # those files. The settings chosen are from measurements in the # PerfAutoESX/ZFSPerfESX Environments, selected at concurrency levels that # are at peak throughput but lowest latency. Higher concurrency introduces # queue time latency and would reduce the impact of code-induced performance # regressions. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during random read load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Aim to fill the pool to 50% capacity while accounting for a 3x compressratio. export TOTAL_SIZE=$(($(get_prop avail $PERFPOOL) * 3 / 2)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'4 8 16 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'0 1'} export PERF_IOSIZES='' # bssplit used instead elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'32 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES='' # bssplit used instead fi # Layout the files to be used by the readwrite tests. Create as many files # as the largest number of threads. An fio run with fewer threads will use # a subset of the available files. export NUMJOBS=$(get_max $PERF_NTHREADS) export FILE_SIZE=$((TOTAL_SIZE / NUMJOBS)) export DIRECTORY=$(get_directory) log_must fio $FIO_SCRIPTS/mkfiles.fio # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "$PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" ) fi log_note "Random reads and writes with $PERF_RUNTYPE settings" do_fio_run random_readwrite.fio false true log_pass "Measure IO stats during random read and write load" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/random_readwrite_fixed.ksh0000644000000000000000000000007413607166147030224 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.598975595 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/random_readwrite_fixed.ksh0000755016037001603700000000641213607166147030227 0ustar00hutter2hutter200000000000000#!/bin/ksh # file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the random_readwrite_fixed job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # The files to read and write from are created prior to the first fio run, # and used for all fio runs. The ARC is cleared with `zinject -a` prior to # each run so reads will go to disk. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during random read write load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Aim to fill the pool to 50% capacity while accounting for a 3x compressratio. export TOTAL_SIZE=$(($(get_prop avail $PERFPOOL) * 3 / 2)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'8 16 32 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'0 1'} export PERF_IOSIZES='8k 64k' elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'64 128'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES='8k' fi # Layout the files to be used by the readwrite tests. Create as many files # as the largest number of threads. An fio run with fewer threads will use # a subset of the available files. export NUMJOBS=$(get_max $PERF_NTHREADS) export FILE_SIZE=$((TOTAL_SIZE / NUMJOBS)) export DIRECTORY=$(get_directory) log_must fio $FIO_SCRIPTS/mkfiles.fio # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "kstat zfs:0 1" "kstat" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" "dtrace -Cs $PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "dtrace -s $PERF_SCRIPTS/profile.d" "profile" ) fi log_note "Random reads and writes with $PERF_RUNTYPE settings" do_fio_run random_readwrite_fixed.fio false true log_pass "Measure IO stats during random read and write load" zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143012025026 xustar000000000000000030 mtime=1579730442.328554173 30 atime=1579730458.930087201 30 ctime=1579730486.621976333 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/Makefile.in0000664016037001603700000005760213612143012025044 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/perf/regression DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/perf/regression ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ random_reads.ksh \ random_readwrite.ksh \ random_readwrite_fixed.ksh \ random_writes.ksh \ random_writes_zil.ksh \ sequential_reads_arc_cached_clone.ksh \ sequential_reads_arc_cached.ksh \ sequential_reads_dbuf_cached.ksh \ sequential_reads.ksh \ sequential_writes.ksh \ setup.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/perf/regression/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/perf/regression/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/perf/regression/PaxHeaders.151519/sequential_reads_arc_cached_clone.0000644000000000000000000000007413607166147031635 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.605975819 zfs-0.8.3/tests/zfs-tests/tests/perf/regression/sequential_reads_arc_cached_clone.ksh0000755016037001603700000001057613607166147032354 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # # # Description: # Trigger fio runs using the sequential_reads job file. The number of runs and # data collected is determined by the PERF_* variables. See do_fio_run for # details about these variables. # # The files to read from are created prior to the first fio run, and used # for all fio runs. This test will exercise cached read performance from # a clone filesystem. The data is initially cached in the ARC and then # a snapshot and clone are created. All the performance runs are then # initiated against the clone filesystem to exercise the performance of # reads when the ARC has to create another buffer from a different dataset. # It will also exercise the need to evict the duplicate buffer once the last # reference on that buffer is released. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # kill fio and iostat pkill fio pkill iostat recreate_perf_pool } trap "log_fail \"Measure IO stats during random read load\"" SIGTERM log_onexit cleanup recreate_perf_pool populate_perf_filesystems # Make sure the working set can be cached in the arc. Aim for 1/2 of arc. export TOTAL_SIZE=$(($(get_max_arc_size) / 2)) # Variables for use by fio. if [[ -n $PERF_REGRESSION_WEEKLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_WEEKLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'weekly'} export PERF_NTHREADS=${PERF_NTHREADS:-'8 16 32 64'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'8k 64k 128k'} elif [[ -n $PERF_REGRESSION_NIGHTLY ]]; then export PERF_RUNTIME=${PERF_RUNTIME:-$PERF_RUNTIME_NIGHTLY} export PERF_RUNTYPE=${PERF_RUNTYPE:-'nightly'} export PERF_NTHREADS=${PERF_NTHREADS:-'64 128'} export PERF_NTHREADS_PER_FS=${PERF_NTHREADS_PER_FS:-'0'} export PERF_SYNC_TYPES=${PERF_SYNC_TYPES:-'1'} export PERF_IOSIZES=${PERF_IOSIZES:-'128k 1m'} fi # Layout the files to be used by the read tests. Create as many files as the # largest number of threads. An fio run with fewer threads will use a subset # of the available files. export NUMJOBS=$(get_max $PERF_NTHREADS) export FILE_SIZE=$((TOTAL_SIZE / NUMJOBS)) export DIRECTORY=$(get_directory) log_must fio $FIO_SCRIPTS/mkfiles.fio # # Only a single filesystem is used by this test. To be defensive, we # double check that TESTFS only contains a single filesystem. We # wouldn't want to assume this was the case, and have it actually # contain multiple filesystem (causing cascading failures later). # log_must test $(get_nfilesystems) -eq 1 log_note "Creating snapshot, $TESTSNAP, of $TESTFS" create_snapshot $TESTFS $TESTSNAP log_note "Creating clone, $PERFPOOL/$TESTCLONE, from $TESTFS@$TESTSNAP" create_clone $TESTFS@$TESTSNAP $PERFPOOL/$TESTCLONE # # We want to run FIO against the clone we created above, and not the # clone's originating filesystem. Thus, we override the default behavior # and explicitly set TESTFS to the clone. # export TESTFS=$PERFPOOL/$TESTCLONE # Set up the scripts and output files that will log performance data. lun_list=$(pool_to_lun_list $PERFPOOL) log_note "Collecting backend IO stats with lun list $lun_list" if is_linux; then typeset perf_record_cmd="perf record -F 99 -a -g -q \ -o /dev/stdout -- sleep ${PERF_RUNTIME}" export collect_scripts=( "zpool iostat -lpvyL $PERFPOOL 1" "zpool.iostat" "$PERF_SCRIPTS/prefetch_io.sh $PERFPOOL 1" "prefetch" "vmstat -t 1" "vmstat" "mpstat -P ALL 1" "mpstat" "iostat -tdxyz 1" "iostat" "$perf_record_cmd" "perf" ) else export collect_scripts=( "$PERF_SCRIPTS/io.d $PERFPOOL $lun_list 1" "io" "$PERF_SCRIPTS/prefetch_io.d $PERFPOOL 1" "prefetch" "vmstat -T d 1" "vmstat" "mpstat -T d 1" "mpstat" "iostat -T d -xcnz 1" "iostat" ) fi log_note "Sequential cached reads from $DIRECTORY with $PERF_RUNTYPE settings" do_fio_run sequential_reads.fio false false log_pass "Measure IO stats during sequential cached read load" zfs-0.8.3/tests/zfs-tests/tests/perf/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133022656 xustar000000000000000029 atime=1579730442.18554958 30 ctime=1579730486.474971613 zfs-0.8.3/tests/zfs-tests/tests/perf/Makefile.am0000644016037001603700000000022613607166133022654 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/perf dist_pkgdata_DATA = \ nfs-sample.cfg \ perf.shlib SUBDIRS = \ fio \ regression \ scripts zfs-0.8.3/tests/zfs-tests/tests/perf/PaxHeaders.151519/nfs-sample.cfg0000644000000000000000000000007413607166133023351 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.470971485 zfs-0.8.3/tests/zfs-tests/tests/perf/nfs-sample.cfg0000644016037001603700000000255413607166133023354 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # # # This file is a sample NFS configuration for the performance tests. To use the # performance tests over NFS you must have: # - a client machine with fio and sudo installed # - passwordless SSH set up from this host # for delphix and root users to the client # - passwordless sudo for the user on the client # # The IP address for the server export NFS_SERVER=127.0.0.1 # The IP address for the client export NFS_CLIENT=127.0.0.1 # The mountpoint to use inside the client export NFS_MOUNT=/var/tmp/nfs # The user to run the tests as on the client export NFS_USER=delphix # Common NFS client mount options export NFS_OPTIONS="-o rw,nosuid,bg,hard,rsize=1048576,wsize=1048576," NFS_OPTIONS+="nointr,timeo=600,proto=tcp,actimeo=0,port=2049" # illumos NFS client mount options # export NFS_OPTIONS="$NFS_OPTIONS,vers=3" # Linux NFS client mount options export NFS_OPTIONS="-t nfs $NFS_OPTIONS,noacl,nfsvers=3" zfs-0.8.3/tests/zfs-tests/tests/perf/PaxHeaders.151519/fio0000644000000000000000000000013213612143066021312 xustar000000000000000030 mtime=1579730486.551974085 30 atime=1579730489.078055195 30 ctime=1579730486.551974085 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/0000775016037001603700000000000013612143066021373 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/random_readwrite.fio0000644000000000000000000000007413607166147025432 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.538973669 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/random_readwrite.fio0000644016037001603700000000145413607166147025433 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # [global] filename_format=file$jobnum nrfiles=16 group_reporting=1 fallocate=0 overwrite=0 thread=1 rw=randrw rwmixread=80 time_based=1 directory=${DIRECTORY} runtime=${RUNTIME} bssplit=4k/50:8k/30:128k/10:1m/10 ioengine=psync sync=${SYNC_TYPE} direct=${DIRECT} numjobs=${NUMJOBS} buffer_compress_percentage=66 buffer_compress_chunk=4096 [job] zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/mkfiles.fio0000644000000000000000000000007413607166147023536 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.533973507 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/mkfiles.fio0000644016037001603700000000127313607166147023536 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # [global] filename_format=file$jobnum group_reporting=1 fallocate=0 ioengine=psync bs=1024k rw=write thread=1 directory=${DIRECTORY} numjobs=${NUMJOBS} filesize=${FILE_SIZE} buffer_compress_percentage=66 buffer_compress_chunk=4096 [job] zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133023434 xustar000000000000000030 atime=1579730442.240551346 30 ctime=1579730486.549974021 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/Makefile.am0000644016037001603700000000035613607166133023435 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/perf/fio dist_pkgdata_DATA = \ mkfiles.fio \ random_reads.fio \ random_readwrite.fio \ random_readwrite_fixed.fio \ random_writes.fio \ sequential_reads.fio \ sequential_writes.fio zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/sequential_writes.fio0000644000000000000000000000007413607166147025653 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.547973957 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/sequential_writes.fio0000644016037001603700000000141213607166147025646 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # [global] filename_format=file$jobnum group_reporting=1 fallocate=0 thread=1 rw=write time_based=1 directory=${DIRECTORY} runtime=${RUNTIME} bs=${BLOCKSIZE} ioengine=psync sync=${SYNC_TYPE} direct=${DIRECT} numjobs=${NUMJOBS} filesize=${FILESIZE} buffer_compress_percentage=66 buffer_compress_chunk=4096 [job] zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/random_readwrite_fixed.fio0000644000000000000000000000007413607166147026611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.540973733 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/random_readwrite_fixed.fio0000644016037001603700000000142413607166147026607 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Delphix. All rights reserved. # [global] filename_format=file$jobnum nrfiles=16 group_reporting=1 fallocate=0 overwrite=0 thread=1 rw=randrw rwmixread=70 time_based=1 directory=${DIRECTORY} runtime=${RUNTIME} bs=${BLOCKSIZE} ioengine=psync sync=${SYNC_TYPE} direct=${DIRECT} numjobs=${NUMJOBS} buffer_compress_percentage=66 buffer_compress_chunk=4096 [job] zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/sequential_reads.fio0000644000000000000000000000007413607166133025427 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.544973861 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/sequential_reads.fio0000644016037001603700000000130713607166133025425 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # [global] filename_format=file$jobnum group_reporting=1 fallocate=0 overwrite=0 thread=1 rw=read time_based=1 directory=${DIRECTORY} runtime=${RUNTIME} bs=${BLOCKSIZE} ioengine=psync sync=${SYNC_TYPE} direct=${DIRECT} numjobs=${NUMJOBS} [job] zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/random_reads.fio0000644000000000000000000000007413607166133024535 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.535973573 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/random_reads.fio0000644016037001603700000000131313607166133024530 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # [global] filename_format=file$jobnum group_reporting=1 fallocate=0 overwrite=0 thread=1 rw=randread time_based=1 directory=${DIRECTORY} runtime=${RUNTIME} bs=${BLOCKSIZE} ioengine=psync sync=${SYNC_TYPE} direct=${DIRECT} numjobs=${NUMJOBS} [job] zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143012023423 xustar000000000000000030 mtime=1579730442.276552502 30 atime=1579730458.900086237 30 ctime=1579730486.551974085 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/Makefile.in0000664016037001603700000005602713612143012023441 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/perf/fio DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/perf/fio ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_DATA = \ mkfiles.fio \ random_reads.fio \ random_readwrite.fio \ random_readwrite_fixed.fio \ random_writes.fio \ sequential_reads.fio \ sequential_writes.fio all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/perf/fio/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/perf/fio/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/perf/fio/PaxHeaders.151519/random_writes.fio0000644000000000000000000000007413607166147024761 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.542973797 zfs-0.8.3/tests/zfs-tests/tests/perf/fio/random_writes.fio0000644016037001603700000000141613607166147024760 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # [global] filename_format=file$jobnum group_reporting=1 fallocate=0 thread=1 rw=randwrite time_based=1 directory=${DIRECTORY} runtime=${RUNTIME} bs=${BLOCKSIZE} ioengine=psync sync=${SYNC_TYPE} direct=${DIRECT} numjobs=${NUMJOBS} filesize=${FILESIZE} buffer_compress_percentage=66 buffer_compress_chunk=4096 [job] zfs-0.8.3/tests/zfs-tests/tests/perf/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143012022646 xustar000000000000000030 mtime=1579730442.224550832 30 atime=1579730458.868085211 30 ctime=1579730486.477971709 zfs-0.8.3/tests/zfs-tests/tests/perf/Makefile.in0000664016037001603700000007400113612143012022654 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/perf DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/perf ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_DATA = \ nfs-sample.cfg \ perf.shlib SUBDIRS = \ fio \ regression \ scripts all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/perf/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/perf/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_pkgdataDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/PaxHeaders.151519/functional0000644000000000000000000000013213612143053021737 xustar000000000000000030 mtime=1579730475.050604796 30 atime=1579730489.079055227 30 ctime=1579730475.050604796 zfs-0.8.3/tests/zfs-tests/tests/functional/0000775016037001603700000000000013612143053022020 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/libzfs0000644000000000000000000000013213612143062023230 xustar000000000000000030 mtime=1579730482.817854189 30 atime=1579730489.079055227 30 ctime=1579730482.817854189 zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/0000775016037001603700000000000013612143062023311 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147025363 xustar000000000000000030 atime=1579730439.315457431 30 ctime=1579730482.812854029 zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/Makefile.am0000644016037001603700000000070413607166147025361 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/libzfs pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/libzfs dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ libzfs_input.ksh DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include many_fds_LDADD = \ $(top_builddir)/lib/libzfs/libzfs.la pkgexec_PROGRAMS = many_fds many_fds_SOURCES = many_fds.c zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/PaxHeaders.151519/setup.ksh0000644000000000000000000000007213607166133025167 xustar000000000000000030 atime=1579730360.849765597 28 ctime=1579730482.8088539 zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/setup.ksh0000755016037001603700000000203113607166133025165 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025460 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.805853803 zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/cleanup.ksh0000755016037001603700000000200313607166133025453 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/PaxHeaders.151519/libzfs_input.ksh0000644000000000000000000000007413607166133026541 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.810853965 zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/libzfs_input.ksh0000755016037001603700000000141113607166133026536 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" # # DESCRIPTION: # run C program to test passing different input to libzfs ioctls # log_assert "libzfs ioctls handle invalid input arguments" log_must libzfs_input_check $TESTPOOL log_pass "libzfs ioctls handle invalid input arguments" zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/PaxHeaders.151519/many_fds.c0000644000000000000000000000007413607166133025266 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.817854189 zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/many_fds.c0000644016037001603700000000333513607166133025267 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (C) 2015 STRATO AG. */ #include #include #include #include #include #include #include #include #include /* * Check if libzfs works with more than 255 held file handles. */ /* ARGSUSED */ int main(int argc, char **argv) { int i; struct rlimit limit; libzfs_handle_t *h; limit.rlim_cur = 65535; limit.rlim_max = 65535; if (setrlimit(RLIMIT_NOFILE, &limit) != 0) { (void) printf("many_fds: setrlimit() failed with errno=%d\n", errno); exit(1); } for (i = 0; i < 255; ++i) { int fd = open("/dev/null", O_RDONLY); if (fd == -1) { (void) printf("open failed with errno=%d\n", errno); return (1); } } h = libzfs_init(); if (h != NULL) { libzfs_fini(h); return (0); } else { (void) printf("many_fds: libzfs_init() failed with errno=%d\n", errno); return (1); } } zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007025351 xustar000000000000000030 mtime=1579730439.370459196 30 atime=1579730457.286034415 30 ctime=1579730482.814854093 zfs-0.8.3/tests/zfs-tests/tests/functional/libzfs/Makefile.in0000664016037001603700000007713013612143007025365 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = many_fds$(EXEEXT) subdir = tests/zfs-tests/tests/functional/libzfs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(pkgexec_PROGRAMS) am_many_fds_OBJECTS = many_fds.$(OBJEXT) many_fds_OBJECTS = $(am_many_fds_OBJECTS) many_fds_DEPENDENCIES = $(top_builddir)/lib/libzfs/libzfs.la AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' SCRIPTS = $(dist_pkgdata_SCRIPTS) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(many_fds_SOURCES) DIST_SOURCES = $(many_fds_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/libzfs ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/libzfs dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ libzfs_input.ksh many_fds_LDADD = \ $(top_builddir)/lib/libzfs/libzfs.la many_fds_SOURCES = many_fds.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/libzfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/libzfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list many_fds$(EXEEXT): $(many_fds_OBJECTS) $(many_fds_DEPENDENCIES) @rm -f many_fds$(EXEEXT) $(AM_V_CCLD)$(LINK) $(many_fds_OBJECTS) $(many_fds_LDADD) $(LIBS) install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/many_fds.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-dist_pkgdataSCRIPTS \ uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/large_files0000644000000000000000000000013213612143062024213 xustar000000000000000030 mtime=1579730482.698850368 30 atime=1579730489.079055227 30 ctime=1579730482.698850368 zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/0000775016037001603700000000000013612143062024274 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/PaxHeaders.151519/large_files_001_pos.ksh0000644000000000000000000000007413612141513030520 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.691850143 zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/large_files_001_pos.ksh0000755016037001603700000000304513612141513030522 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Write a file to the allowable ZFS fs size. # # STRATEGY: # 1. largest_file will write to a file and increase its size # to the maximum allowable. # 2. The last byte of the file should be accessible without error. # 3. Writing beyond the maximum file size generates an 'errno' of # EFBIG. # verify_runnable "both" log_assert "Write a file to the allowable ZFS fs size." log_note "Invoke 'largest_file' with $TESTDIR/bigfile" log_must largest_file $TESTDIR/bigfile log_pass "Successfully created a file to the maximum allowable size." zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026341 xustar000000000000000030 atime=1579730439.209454028 30 ctime=1579730482.696850303 zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/Makefile.am0000644016037001603700000000026213607166133026336 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/large_files dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ large_files_001_pos.ksh \ large_files_002_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133026154 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.687850015 zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/setup.ksh0000755016037001603700000000203213607166133026151 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib disk=${DISKS%% *} default_setup $disk zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026443 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.689850079 zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/cleanup.ksh0000755016037001603700000000200313607166133026436 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007026334 xustar000000000000000030 mtime=1579730439.245455182 30 atime=1579730457.196031525 30 ctime=1579730482.698850368 zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/Makefile.in0000664016037001603700000005731213612143007026350 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/large_files DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/large_files ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ large_files_001_pos.ksh \ large_files_002_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/large_files/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/large_files/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/PaxHeaders.151519/large_files_002_pos.ksh0000644000000000000000000000007413607166133030532 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.694850239 zfs-0.8.3/tests/zfs-tests/tests/functional/large_files/large_files_002_pos.ksh0000755016037001603700000000350313607166133030533 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2015 by Lawrence Livermore National Security, LLC. # All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify 'ulimit -f' file size restrictions are enforced. # # STRATEGY: # 1. Set ulimit file size to unlimited, verify files can be created. # 2. Reduce ulimit file size, verify the expected error is returned. # verify_runnable "both" log_assert "Verify 'ulimit -f' maximum file size is enforced" # Verify 'ulimit -f unlimited' works log_must ulimit -f unlimited log_must sh -c 'dd if=/dev/zero of=$TESTDIR/ulimit_write_file bs=1M count=2' log_must sh -c 'truncate -s2M $TESTDIR/ulimit_trunc_file' log_must rm $TESTDIR/ulimit_write_file $TESTDIR/ulimit_trunc_file # Verify 'ulimit -f ' works log_must ulimit -f 1024 log_mustnot sh -c 'dd if=/dev/zero of=$TESTDIR/ulimit_write_file bs=1M count=2' log_mustnot sh -c 'truncate -s2M $TESTDIR/ulimit_trunc_file' log_must rm $TESTDIR/ulimit_write_file $TESTDIR/ulimit_trunc_file log_pass "Successfully enforced 'ulimit -f' maximum file size" zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/suid0000644000000000000000000000013213612143065022706 xustar000000000000000030 mtime=1579730485.412937513 30 atime=1579730489.079055227 30 ctime=1579730485.412937513 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/0000775016037001603700000000000013612143065022767 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/suid_write_to_file.c0000644000000000000000000000007413607166133027020 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.412937513 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/suid_write_to_file.c0000644016037001603700000000535613607166133027026 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. */ #include #include #include #include #include #include #include static void test_stat_mode(mode_t extra) { struct stat st; int i, fd; char fpath[1024]; char *penv[] = {"TESTDIR", "TESTFILE0"}; char buf[] = "test"; mode_t res; mode_t mode = 0777 | extra; /* * Get the environment variable values. */ for (i = 0; i < sizeof (penv) / sizeof (char *); i++) { if ((penv[i] = getenv(penv[i])) == NULL) { fprintf(stderr, "getenv(penv[%d])\n", i); exit(1); } } umask(0); if (stat(penv[0], &st) == -1 && mkdir(penv[0], mode) == -1) { perror("mkdir"); exit(2); } snprintf(fpath, sizeof (fpath), "%s/%s", penv[0], penv[1]); unlink(fpath); if (stat(fpath, &st) == 0) { fprintf(stderr, "%s exists\n", fpath); exit(3); } fd = creat(fpath, mode); if (fd == -1) { perror("creat"); exit(4); } close(fd); if (setuid(65534) == -1) { perror("setuid"); exit(5); } fd = open(fpath, O_RDWR); if (fd == -1) { perror("open"); exit(6); } if (write(fd, buf, sizeof (buf)) == -1) { perror("write"); exit(7); } close(fd); if (stat(fpath, &st) == -1) { perror("stat"); exit(8); } unlink(fpath); /* Verify SUID/SGID are dropped */ res = st.st_mode & (0777 | S_ISUID | S_ISGID); if (res != (mode & 0777)) { fprintf(stderr, "stat(2) %o\n", res); exit(9); } } int main(int argc, char *argv[]) { const char *name; mode_t extra; if (argc < 2) { fprintf(stderr, "Invalid argc\n"); exit(1); } name = argv[1]; if (strcmp(name, "SUID") == 0) { extra = S_ISUID; } else if (strcmp(name, "SGID") == 0) { extra = S_ISGID; } else if (strcmp(name, "SUID_SGID") == 0) { extra = S_ISUID | S_ISGID; } else if (strcmp(name, "NONE") == 0) { extra = 0; } else { fprintf(stderr, "Invalid name %s\n", name); exit(1); } test_stat_mode(extra); return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/suid_write_to_suid_sgid.ksh0000644000000000000000000000007413607166133030416 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.399937095 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/suid_write_to_suid_sgid.ksh0000755016037001603700000000272513607166133030424 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify write(2) to SUID/SGID file by non-owner. # Also see https://github.com/pjd/pjdfstest/blob/master/tests/chmod/12.t # # STRATEGY: # 1. creat(2) a file with SUID/SGID. # 2. write(2) to the file with uid=65534. # 3. stat(2) the file and verify .st_mode value. # verify_runnable "both" function cleanup { rm -f $TESTDIR/$TESTFILE0 } log_onexit cleanup log_note "Verify write(2) to SUID/SGID file by non-owner" log_must $STF_SUITE/tests/functional/suid/suid_write_to_file "SUID_SGID" log_pass "Verify write(2) to SUID/SGID file by non-owner passed" zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025031 xustar000000000000000030 atime=1579730441.261519913 30 ctime=1579730485.408937385 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/Makefile.am0000644016037001603700000000064613607166133025034 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/suid dist_pkgdata_SCRIPTS = \ suid_write_to_suid.ksh \ suid_write_to_sgid.ksh \ suid_write_to_suid_sgid.ksh \ suid_write_to_none.ksh \ cleanup.ksh \ setup.ksh pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/suid pkgexec_PROGRAMS = suid_write_to_file suid_write_to_file_SOURCES = suid_write_to_file.c zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024644 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.405937289 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/setup.ksh0000755016037001603700000000204113607166133024641 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025133 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.403937225 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/cleanup.ksh0000755016037001603700000000201313607166133025127 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/suid_write_to_suid.ksh0000644000000000000000000000007413607166133027410 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.395936967 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/suid_write_to_suid.ksh0000755016037001603700000000267413607166133027421 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify write(2) to SUID file by non-owner. # Also see https://github.com/pjd/pjdfstest/blob/master/tests/chmod/12.t # # STRATEGY: # 1. creat(2) a file with SUID. # 2. write(2) to the file with uid=65534. # 3. stat(2) the file and verify .st_mode value. # verify_runnable "both" function cleanup { rm -f $TESTDIR/$TESTFILE0 } log_onexit cleanup log_note "Verify write(2) to SUID file by non-owner" log_must $STF_SUITE/tests/functional/suid/suid_write_to_file "SUID" log_pass "Verify write(2) to SUID file by non-owner passed" zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/suid_write_to_sgid.ksh0000644000000000000000000000007413607166133027372 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.397937031 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/suid_write_to_sgid.ksh0000755016037001603700000000267413607166133027403 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify write(2) to SGID file by non-owner. # Also see https://github.com/pjd/pjdfstest/blob/master/tests/chmod/12.t # # STRATEGY: # 1. creat(2) a file with SGID. # 2. write(2) to the file with uid=65534. # 3. stat(2) the file and verify .st_mode value. # verify_runnable "both" function cleanup { rm -f $TESTDIR/$TESTFILE0 } log_onexit cleanup log_note "Verify write(2) to SGID file by non-owner" log_must $STF_SUITE/tests/functional/suid/suid_write_to_file "SGID" log_pass "Verify write(2) to SGID file by non-owner passed" zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/suid_write_to_none.ksh0000644000000000000000000000007413607166133027403 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.401937159 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/suid_write_to_none.ksh0000755016037001603700000000267313607166133027413 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify write(2) to regular file by non-owner. # Also see https://github.com/pjd/pjdfstest/blob/master/tests/chmod/12.t # # STRATEGY: # 1. creat(2) a file. # 2. write(2) to the file with uid=65534. # 3. stat(2) the file and verify .st_mode value. # verify_runnable "both" function cleanup { rm -f $TESTDIR/$TESTFILE0 } log_onexit cleanup log_note "Verify write(2) to regular file by non-owner" log_must $STF_SUITE/tests/functional/suid/suid_write_to_file "NONE" log_pass "Verify write(2) to regular file by non-owner passed" zfs-0.8.3/tests/zfs-tests/tests/functional/suid/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143011025016 xustar000000000000000029 mtime=1579730441.31652168 30 atime=1579730458.347068481 30 ctime=1579730485.410937449 zfs-0.8.3/tests/zfs-tests/tests/functional/suid/Makefile.in0000664016037001603700000007726613612143011025045 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = suid_write_to_file$(EXEEXT) subdir = tests/zfs-tests/tests/functional/suid ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(pkgexec_PROGRAMS) am_suid_write_to_file_OBJECTS = suid_write_to_file.$(OBJEXT) suid_write_to_file_OBJECTS = $(am_suid_write_to_file_OBJECTS) suid_write_to_file_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' SCRIPTS = $(dist_pkgdata_SCRIPTS) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(suid_write_to_file_SOURCES) DIST_SOURCES = $(suid_write_to_file_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/suid ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) dist_pkgdata_SCRIPTS = \ suid_write_to_suid.ksh \ suid_write_to_sgid.ksh \ suid_write_to_suid_sgid.ksh \ suid_write_to_none.ksh \ cleanup.ksh \ setup.ksh pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/suid suid_write_to_file_SOURCES = suid_write_to_file.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/suid/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/suid/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list suid_write_to_file$(EXEEXT): $(suid_write_to_file_OBJECTS) $(suid_write_to_file_DEPENDENCIES) @rm -f suid_write_to_file$(EXEEXT) $(AM_V_CCLD)$(LINK) $(suid_write_to_file_OBJECTS) $(suid_write_to_file_LDADD) $(LIBS) install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/suid_write_to_file.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-dist_pkgdataSCRIPTS \ uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/pyzfs0000644000000000000000000000013213612143062023112 xustar000000000000000030 mtime=1579730482.930857817 30 atime=1579730489.079055227 30 ctime=1579730482.930857817 zfs-0.8.3/tests/zfs-tests/tests/functional/pyzfs/0000775016037001603700000000000013612143062023173 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/pyzfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007213612141513025225 xustar000000000000000028 atime=1579730440.2924888 30 ctime=1579730482.925857657 zfs-0.8.3/tests/zfs-tests/tests/functional/pyzfs/Makefile.am0000644016037001603700000000067213612141513025231 0ustar00hutter2hutter200000000000000pkgpyzfsdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/pyzfs pkgpyzfs_SCRIPTS = \ pyzfs_unittest.ksh EXTRA_DIST = \ pyzfs_unittest.ksh.in # # The pyzfs module is built either for Python 2 or Python 3. In order # to properly test it the unit tests must be updated to the matching version. # $(pkgpyzfs_SCRIPTS):%:%.in -$(SED) -e 's,@PYTHON\@,$(PYTHON),g' \ $< >'$@' -chmod 775 $@ distclean-local:: -$(RM) $(pkgpyzfs_SCRIPTS) zfs-0.8.3/tests/zfs-tests/tests/functional/pyzfs/PaxHeaders.151519/pyzfs_unittest.ksh.in0000644000000000000000000000007413607166133027432 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.930857817 zfs-0.8.3/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in0000755016037001603700000000335113607166133027434 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify the libzfs_core Python test suite can be run successfully # # STRATEGY: # 1. Run the nvlist and libzfs_core Python unittest # 2. Verify the exit code is 0 (no errors) # verify_runnable "global" # Verify that the required dependencies for testing are installed. @PYTHON@ -c "import cffi" 2>/dev/null if [ $? -eq 1 ]; then log_unsupported "python-cffi not found by Python" fi # We don't just try to "import libzfs_core" because we want to skip these tests # only if pyzfs was not installed due to missing, build-time, dependencies; if # we cannot load "libzfs_core" due to other reasons, for instance an API/ABI # mismatch, we want to report it. @PYTHON@ -c ' import pkgutil, sys sys.exit(pkgutil.find_loader("libzfs_core") is None)' if [ $? -eq 1 ]; then log_unsupported "libzfs_core not found by Python" fi log_assert "Verify the nvlist and libzfs_core Python unittest run successfully" # NOTE: don't use log_must() here because it makes output unreadable @PYTHON@ -m unittest --verbose \ libzfs_core.test.test_nvlist.TestNVList \ libzfs_core.test.test_libzfs_core.ZFSTest if [ $? -ne 0 ]; then log_fail "Python unittest completed with errors" fi log_pass "Python unittest completed without errors" zfs-0.8.3/tests/zfs-tests/tests/functional/pyzfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143010025225 xustar000000000000000030 mtime=1579730440.328489955 30 atime=1579730457.803051015 30 ctime=1579730482.927857721 zfs-0.8.3/tests/zfs-tests/tests/functional/pyzfs/Makefile.in0000664016037001603700000005771113612143010025244 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/pyzfs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgpyzfsdir)" SCRIPTS = $(pkgpyzfs_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ pkgpyzfsdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/pyzfs pkgpyzfs_SCRIPTS = \ pyzfs_unittest.ksh EXTRA_DIST = \ pyzfs_unittest.ksh.in all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/pyzfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/pyzfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgpyzfsSCRIPTS: $(pkgpyzfs_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgpyzfsdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpyzfsdir)" @list='$(pkgpyzfs_SCRIPTS)'; test -n "$(pkgpyzfsdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgpyzfsdir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgpyzfsdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgpyzfsSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(pkgpyzfs_SCRIPTS)'; test -n "$(pkgpyzfsdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgpyzfsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgpyzfsdir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgpyzfsdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-pkgpyzfsSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgpyzfsSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distclean-local \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgpyzfsSCRIPTS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-pkgpyzfsSCRIPTS # # The pyzfs module is built either for Python 2 or Python 3. In order # to properly test it the unit tests must be updated to the matching version. # $(pkgpyzfs_SCRIPTS):%:%.in -$(SED) -e 's,@PYTHON\@,$(PYTHON),g' \ $< >'$@' -chmod 775 $@ distclean-local:: -$(RM) $(pkgpyzfs_SCRIPTS) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/pool_names0000644000000000000000000000013213612143063024074 xustar000000000000000030 mtime=1579730483.741883858 30 atime=1579730489.079055227 30 ctime=1579730483.741883858 zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/0000775016037001603700000000000013612143063024155 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026221 xustar000000000000000030 atime=1579730440.030480389 30 ctime=1579730483.739883793 zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/Makefile.am0000644016037001603700000000022313607166133026213 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/pool_names dist_pkgdata_SCRIPTS = \ pool_names_001_pos.ksh \ pool_names_002_neg.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/PaxHeaders.151519/pool_names_001_pos.ksh0000644000000000000000000000007413607166133030271 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.734883633 zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/pool_names_001_pos.ksh0000755016037001603700000000565713607166133030306 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # Test that a set of valid names can be used to create pools. Further # verify that the created pools can be destroyed. # # STRATEGY: # 1) For each valid character in the character set, try to create # and destroy the pool. # 2) Given a list of valid pool names, try to create and destroy # pools with the given names. # verify_runnable "global" log_assert "Ensure that pool names can use the ASCII subset of UTF-8" function cleanup { if [[ -n $name ]] && poolexists $name ; then log_must zpool destroy $name fi if [[ -d $TESTDIR ]]; then log_must rm -rf $TESTDIR fi } log_onexit cleanup DISK=${DISKS%% *} if [[ ! -e $TESTDIR ]]; then log_must mkdir $TESTDIR fi log_note "Ensure letters of the alphabet are allowable" typeset name="" for name in A B C D E F G H I J K L M \ N O P Q R S T U V W X Y Z \ a b c d e f g h i j k l m \ n o p q r s t u v w x y z do log_must zpool create -m $TESTDIR $name $DISK if ! poolexists $name; then log_fail "Could not create a pool called '$name'" fi log_must zpool destroy $name done log_note "Ensure a variety of unusual names passes" name="" for name in "a.............................." "a_" "a-" "a:" \ "a." "a123456" "bc0t0d0" "m1rr0r_p00l" "ra1dz_p00l" \ "araidz2" "C0t2d0" "cc0t0" "raid2:-_." "mirr_:-." \ "m1rr0r-p00l" "ra1dz-p00l" "spar3_p00l" \ "spar3-p00l" "hiddenmirrorpool" "hiddenraidzpool" \ "hiddensparepool" do log_must zpool create -m $TESTDIR $name $DISK if ! poolexists $name; then log_fail "Could not create a pool called '$name'" fi # # Since the naming convention applies to datasets too, # create datasets with the same names as above. # log_must zfs create $name/$name log_must zfs snapshot $name/$name@$name log_must zfs clone $name/$name@$name $name/clone_$name log_must zfs create -V 150m $name/$name/$name block_device_wait log_must zpool destroy $name done log_pass "Valid pool names were accepted correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/PaxHeaders.151519/pool_names_002_neg.ksh0000644000000000000000000000007413607166133030242 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.737883729 zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/pool_names_002_neg.ksh0000755016037001603700000000706013607166133030245 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # Ensure that a set of invalid names cannot be used to create pools. # # STRATEGY: # 1) For each invalid character in the character set, try to create # and destroy the pool. Verify it fails. # 2) Given a list of invalid pool names, ensure the pools are not # created. # verify_runnable "global" log_assert "Ensure that a set of invalid names cannot be used to create pools." # Global variable use to cleanup failures. POOLNAME="" function cleanup { if poolexists $POOLNAME; then log_must zpool destroy $POOLNAME fi if [[ -d $TESTDIR ]]; then log_must rm -rf $TESTDIR fi } log_onexit cleanup for pool in $(get_all_pools); do if [[ "$pool" != "$TESTPOOL" ]]; then log_must zpool destroy $pool fi done DISK=${DISKS%% *} if [[ ! -e $TESTDIR ]]; then log_must mkdir $TESTDIR fi log_note "Ensure invalid characters fail" for POOLNAME in "!" "\"" "#" "$" "%" "&" "'" "(" ")" \ "\*" "+" "," "-" "\." "/" "\\" \ 0 1 2 3 4 5 6 7 8 9 \ ":" ";" "<" "=" ">" "\?" "@" \ "[" "]" "^" "_" "\`" "{" "|" "}" "~" do log_mustnot zpool create -m $TESTDIR $POOLNAME $DISK if poolexists $POOLNAME; then log_fail "Unexpectedly created pool: '$POOLNAME'" fi log_mustnot zpool destroy $POOLNAME done log_note "Check that invalid octal values fail" for oct in "\000" "\001" "\002" "\003" "\004" "\005" "\006" "\007" \ "\010" "\011" "\012" "\013" "\014" "\015" "\017" \ "\020" "\021" "\022" "\023" "\024" "\025" "\026" "\027" \ "\030" "\031" "\032" "\033" "\034" "\035" "\036" "\037" \ "\040" "\177" do POOLNAME=`eval "echo x | tr 'x' '$oct'"` log_mustnot zpool create -m $TESTDIR $POOLNAME $DISK if poolexists $POOLNAME; then log_fail "Unexpectedly created pool: '$POOLNAME'" fi log_mustnot zpool destroy $POOLNAME done log_note "Verify invalid pool names fail" set -A POOLNAME "c0t0d0s0" "c0t0d0" "c0t0d19" "c0t50000E0108D279d0" \ "mirror" "raidz" ",," ",,,,,,,,,,,,,,,,,,,,,,,,," \ "2222222222222222222" "mirror_pool" "raidz_pool" \ "mirror-pool" "raidz-pool" "spare" "spare_pool" \ "spare-pool" "raidz1-" "raidz2:" ":aaa" "-bbb" "_ccc" ".ddd" if verify_slog_support ; then POOLNAME[${#POOLNAME[@]}]='log' fi typeset -i i=0 while ((i < ${#POOLNAME[@]})); do log_mustnot zpool create -m $TESTDIR ${POOLNAME[$i]} $DISK if poolexists ${POOLNAME[$i]}; then log_fail "Unexpectedly created pool: '${POOLNAME[$i]}'" fi log_mustnot zpool destroy ${POOLNAME[$i]} ((i += 1)) done log_pass "Invalid names and characters were caught correctly" zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143010026206 xustar000000000000000030 mtime=1579730440.065481512 30 atime=1579730457.619045107 30 ctime=1579730483.741883858 zfs-0.8.3/tests/zfs-tests/tests/functional/pool_names/Makefile.in0000664016037001603700000005725013612143010026223 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/pool_names DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/pool_names ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ pool_names_001_pos.ksh \ pool_names_002_neg.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/pool_names/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/pool_names/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/mmap0000644000000000000000000000013213612143063022672 xustar000000000000000030 mtime=1579730483.134864367 30 atime=1579730489.079055227 30 ctime=1579730483.134864367 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/0000775016037001603700000000000013612143063022753 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/PaxHeaders.151519/mmap_write_001_pos.ksh0000644000000000000000000000007413612141513027066 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.127864143 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/mmap_write_001_pos.ksh0000755016037001603700000000365413612141513027076 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Writing to a file and mmapping that file at the # same time does not result in a deadlock. # # STRATEGY: # 1. Make sure this test executes on multi-processes system. # 2. Call mmapwrite binary. # 3. wait 30s and make sure the test file existed. # verify_runnable "both" log_assert "write()s to a file and mmap() that file at the same time does not "\ "result in a deadlock." # Detect and make sure this test must be executed on a multi-process system if ! is_mp; then log_unsupported "This test requires a multi-processor system." fi log_must chmod 777 $TESTDIR mmapwrite $TESTDIR/normal_write_file $TESTDIR/map_write_file & PID_MMAPWRITE=$! log_note "mmapwrite $TESTDIR/normal_write_file $TESTDIR/map_write_file"\ "pid: $PID_MMAPWRITE" log_must sleep 30 log_must kill -9 $PID_MMAPWRITE log_must ls -l $TESTDIR/normal_write_file log_must ls -l $TESTDIR/map_write_file log_pass "write(2) a mmap(2)'ing file succeeded." zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/PaxHeaders.151519/mmap_libaio_001_pos.ksh0000644000000000000000000000007413607166133027204 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.129864207 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/mmap_libaio_001_pos.ksh0000755016037001603700000000343213607166133027206 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2018 Canonical. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmap/mmap.cfg # # DESCRIPTION: # Verify libaio functions correctly with mmap()'d files. # # STRATEGY: # 1. Call mmap_libaio binary # 2. Verify the file exists and is the expected size # 3. Verify the filesystem is intact and not hung in any way # verify_runnable "global" log_assert "verify mmap'd pages work with libaio" # mmap_libaio is built when the libaio-devel package is installed. if ! which mmap_libaio; then log_unsupported "This test requires mmap_libaio." fi log_must chmod 777 $TESTDIR for size in 512 4096 8192; do log_mustnot stat $TESTDIR/test-libaio-file log_must mmap_libaio $TESTDIR/test-libaio-file $size log_must verify_eq $(stat --format=%s $TESTDIR/test-libaio-file) $size log_must rm $TESTDIR/test-libaio-file done typeset dir=$(get_device_dir $DISKS) verify_filesys "$TESTPOOL" "$TESTPOOL/$TESTFS" "$dir" log_pass "mmap'd pages work with libaio" zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025017 xustar000000000000000030 atime=1579730439.545464815 30 ctime=1579730483.132864303 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/Makefile.am0000644016037001603700000000034413607166133025015 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/mmap dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ mmap_read_001_pos.ksh \ mmap_write_001_pos.ksh \ mmap_libaio_001_pos.ksh dist_pkgdata_DATA = \ mmap.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024632 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.120863918 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/setup.ksh0000755016037001603700000000203213607166133024627 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025121 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.123864015 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/cleanup.ksh0000755016037001603700000000200313607166133025114 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/PaxHeaders.151519/mmap.cfg0000644000000000000000000000007413607166133024376 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.118863853 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/mmap.cfg0000644016037001603700000000301013607166133024365 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2014 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export DISK_ARRAY_NUM=0 export DISK_ARRAY_LIMIT=4 export DISKSARRAY="" export VDEVS_NUM=32 function set_disks { typeset -a disk_array=($(find_disks $DISKS)) if (( ${#disk_array[*]} <= 1 )); then export DISK=${DISKS%% *} else export DISK="" typeset -i i=0 while (( i < ${#disk_array[*]} )); do export DISK${i}="${disk_array[$i]}" DISKSARRAY="$DISKSARRAY ${disk_array[$i]}" (( i = i + 1 )) (( i>$DISK_ARRAY_LIMIT )) && break done export DISK_ARRAY_NUM=$i export DISKSARRAY fi } set_disks set_device_dir zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007025012 xustar000000000000000030 mtime=1579730439.583466037 30 atime=1579730457.375037273 30 ctime=1579730483.134864367 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/Makefile.in0000664016037001603700000006136213612143007025026 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/mmap DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/mmap ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ mmap_read_001_pos.ksh \ mmap_write_001_pos.ksh \ mmap_libaio_001_pos.ksh dist_pkgdata_DATA = \ mmap.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/mmap/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/mmap/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/PaxHeaders.151519/mmap_read_001_pos.ksh0000644000000000000000000000007413607166133026660 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.125864079 zfs-0.8.3/tests/zfs-tests/tests/functional/mmap/mmap_read_001_pos.ksh0000755016037001603700000000314013607166133026656 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmap/mmap.cfg # # DESCRIPTION: # read()s from mmap()'ed file contain correct data. # # STRATEGY: # 1. Create a pool & dataset # 2. Call readmmap binary # 3. unmount this file system # 4. Verify the integrity of this pool & dateset # verify_runnable "global" log_assert "read()s from mmap()'ed file contain correct data." log_must chmod 777 $TESTDIR log_must readmmap $TESTDIR/test-read-file log_must zfs unmount $TESTPOOL/$TESTFS typeset dir=$(get_device_dir $DISKS) verify_filesys "$TESTPOOL" "$TESTPOOL/$TESTFS" "$dir" log_pass "read(2) calls from a mmap(2)'ed file succeeded." zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/compression0000644000000000000000000000013213612143061024277 xustar000000000000000030 mtime=1579730481.362807469 30 atime=1579730489.079055227 30 ctime=1579730481.362807469 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/0000775016037001603700000000000013612143061024360 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/compress_003_pos.ksh0000644000000000000000000000007413607166147030204 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.355807245 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/compress_003_pos.ksh0000755016037001603700000000503413607166147030206 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # With 'compression' or 'compress' set, changing filesystem blocksize cannot # cause system panic # # STRATEGY: # 1. Set 'compression' or "compress" to on # 2. Set different blocksize with ZFS filesystem # 3. Use 'mkfile' create single block and multi-block files # 4. Verify the system continued work # verify_runnable "both" function cleanup { rm -f $TESTDIR/* } log_assert "Changing blocksize doesn't cause system panic with compression settings" log_onexit cleanup fs=$TESTPOOL/$TESTFS single_blk_file=$TESTDIR/singleblkfile.$$ multi_blk_file=$TESTDIR/multiblkfile.$$ typeset -i blksize=512 typeset -i fsize=0 typeset -i offset=0 for propname in "compression" "compress" do for value in $(get_compress_opts zfs_compress) do log_must zfs set $propname=$value $fs if [[ $value == "gzip-6" ]]; then value="gzip" fi real_val=$(get_prop $propname $fs) [[ $real_val != $value ]] && \ log_fail "Set property $propname=$value failed." (( blksize = 512 )) while (( blksize <= 131072 )); do log_must zfs set recordsize=$blksize $fs (( offset = $RANDOM )) if (( offset > blksize )); then (( offset = offset % blksize )) fi if (( (offset % 2) == 0 )); then #keep offset as non-power-of-2 (( offset = offset + 1 )) fi (( fsize = offset )) log_must mkfile $fsize $single_blk_file (( fsize = blksize + offset )) log_must mkfile $fsize $multi_blk_file (( blksize = blksize * 2 )) done done done log_pass "The system works as expected while changing blocksize with compression settings" zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026426 xustar000000000000000030 atime=1579730438.185421148 30 ctime=1579730481.360807405 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/Makefile.am0000644016037001603700000000040113607166133026416 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/compression dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ compress_001_pos.ksh \ compress_002_pos.ksh \ compress_003_pos.ksh \ compress_004_pos.ksh dist_pkgdata_DATA = \ compress.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/compress_002_pos.ksh0000644000000000000000000000007413607166133030176 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.353807181 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/compress_002_pos.ksh0000755016037001603700000000444213607166133030202 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/compression/compress.cfg # # DESCRIPTION: # Create two files of exactly the same size. One with compression # and one without. Ensure the compressed file is smaller. # # NOTE: This test uses a dataset rather than a simple file system. # # STRATEGY: # Create a dataset, turn on compression and create files before # and after the property change. The compressed file should be smaller. # verify_runnable "both" typeset OP=create log_assert "Ensure that compressed files in a dataset are smaller." log_note "Ensure compression is off" log_must zfs set compression=off $TESTPOOL/$TESTCTR log_note "Writing file without compression..." log_must file_write -o $OP -f $TESTDIR1/$TESTFILE0 -b $BLOCKSZ \ -c $NUM_WRITES -d $DATA log_note "Add compression property to the dataset and write another file" log_must zfs set compression=on $TESTPOOL/$TESTCTR log_must file_write -o $OP -f $TESTDIR1/$TESTFILE1 -b $BLOCKSZ \ -c $NUM_WRITES -d $DATA sleep 60 FILE0_BLKS=`du -k $TESTDIR1/$TESTFILE0 | awk '{ print $1}'` FILE1_BLKS=`du -k $TESTDIR1/$TESTFILE1 | awk '{ print $1}'` if [[ $FILE0_BLKS -le $FILE1_BLKS ]]; then log_fail "$TESTFILE0 is smaller than $TESTFILE1" \ "($FILE0_BLKS <= $FILE1_BLKS)" fi log_pass "$TESTFILE0 is bigger than $TESTFILE1 ($FILE0_BLKS > $FILE1_BLKS)" zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133026241 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.348807021 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/setup.ksh0000755016037001603700000000204413607166133026241 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.346806957 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/cleanup.ksh0000755016037001603700000000201713607166133026530 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . ${STF_SUITE}/include/libtest.shlib default_container_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/compress.cfg0000644000000000000000000000007413607166133026706 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.344806891 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/compress.cfg0000644016037001603700000000177413607166133026714 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # export BLOCKSZ=8192 export NUM_WRITES=16384 export DATA=13 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/compress_001_pos.ksh0000644000000000000000000000007413607166147030202 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.351807117 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/compress_001_pos.ksh0000755016037001603700000000430213607166147030201 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/compression/compress.cfg # # DESCRIPTION: # Create two files of exactly the same size. One with compression # and one without. Ensure the compressed file is smaller. # # STRATEGY: # Use "zfs set" to turn on compression and create files before # and after the set call. The compressed file should be smaller. # verify_runnable "both" typeset OP=create log_assert "Ensure that compressed files are smaller." log_note "Ensure compression is off" log_must zfs set compression=off $TESTPOOL/$TESTFS log_note "Writing file without compression..." log_must file_write -o $OP -f $TESTDIR/$TESTFILE0 -b $BLOCKSZ \ -c $NUM_WRITES -d $DATA log_note "Add compression property to the dataset and write another file" log_must zfs set compression=on $TESTPOOL/$TESTFS log_must file_write -o $OP -f $TESTDIR/$TESTFILE1 -b $BLOCKSZ \ -c $NUM_WRITES -d $DATA sleep 60 FILE0_BLKS=`du -k $TESTDIR/$TESTFILE0 | awk '{ print $1}'` FILE1_BLKS=`du -k $TESTDIR/$TESTFILE1 | awk '{ print $1}'` if [[ $FILE0_BLKS -le $FILE1_BLKS ]]; then log_fail "$TESTFILE0 is smaller than $TESTFILE1" \ "($FILE0_BLKS <= $FILE1_BLKS)" fi log_pass "$TESTFILE0 is bigger than $TESTFILE1 ($FILE0_BLKS > $FILE1_BLKS)" zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/compress_004_pos.ksh0000644000000000000000000000007413607166147030205 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.357807309 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/compress_004_pos.ksh0000755016037001603700000000710013607166147030203 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # With 'compression' set, a file with non-power-of-2 blocksize storage space # can be freed as will normally. # # STRATEGY: # 1. Set 'compression' or 'compress' to on or lzjb # 2. Set different recordsize with ZFS filesystem # 3. Repeatedly using 'randfree_file' to create a file and then free its # storage space with different range, the system should work normally. # verify_runnable "both" function cleanup { rm -f $TESTDIR/* } function create_free_testing # { typeset -i fsz=$1 typeset file=$2 typeset -i start=0 typeset -i len=0 typeset -i dist=0 for start in 0 `expr $RANDOM % $fsz` do (( dist = fsz - start )) for len in `expr $RANDOM % $dist` $dist \ `expr $start + $dist`; do # Zero length results in EINVAL for fallocate(2). if is_linux; then if (( len == 0 )); then continue fi fi log_must randfree_file -l fsz -s $start \ -n $len $file [[ -e $file ]] && \ log_must rm -f $file done done } log_assert "Creating non-power-of-2 blocksize file and freeing the file \ storage space at will should work normally with compression setting" log_onexit cleanup fs=$TESTPOOL/$TESTFS single_blk_file=$TESTDIR/singleblkfile.$$ multi_blk_file=$TESTDIR/multiblkfile.$$ typeset -i blksize=512 typeset -i fsize=0 typeset -i avail=0 typeset -i blknum=0 for propname in "compression" "compress" do for value in $(get_compress_opts zfs_compress) do log_must zfs set compression=$value $fs real_val=$(get_prop $propname $fs) if [[ $value == "gzip-6" ]]; then value="gzip" fi [[ $real_val != $value ]] && \ log_fail "Set property $propname=$value failed." (( blksize = 512 )) while (( blksize <= 131072 )); do log_must zfs set recordsize=$blksize $fs # doing single block testing (( fsize = $RANDOM )) if (( fsize > blksize )); then (( fsize = fsize % blksize )) fi if (( (fsize % 2) == 0 )); then #make sure fsize is non-power-of-2 (( fsize = fsize + 1 )) fi create_free_testing $fsize $single_blk_file # doing multiple blocks testing avail=$(get_prop available $fs) (( blknum = avail / blksize )) # we just test <10 multi-blocks to limit testing time (( blknum = blknum % 9 )) while (( blknum < 2 )); do (( blknum = blknum + $RANDOM % 9 )) done if (( (blknum % 2) == 0 )); then (( blknum = blknum + 1 )) # keep blknum as odd fi (( fsize = blknum * blksize )) create_free_testing $fsize $multi_blk_file (( blksize = blksize * 2 )) done done done log_pass "Creating and freeing non-power-of-2 blocksize file work as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/compression/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143006026420 xustar000000000000000030 mtime=1579730438.222422338 30 atime=1579730456.643013769 30 ctime=1579730481.362807469 zfs-0.8.3/tests/zfs-tests/tests/functional/compression/Makefile.in0000664016037001603700000006144413612143006026435 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/compression DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/compression ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ compress_001_pos.ksh \ compress_002_pos.ksh \ compress_003_pos.ksh \ compress_004_pos.ksh dist_pkgdata_DATA = \ compress.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/compression/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/compression/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/refreserv0000644000000000000000000000013213612143064023744 xustar000000000000000030 mtime=1579730484.328902707 30 atime=1579730489.079055227 30 ctime=1579730484.328902707 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/0000775016037001603700000000000013612143064024025 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/refreserv_002_pos.ksh0000644000000000000000000000007413607166133030010 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.313902225 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/refreserv_002_pos.ksh0000755016037001603700000000566713607166133030026 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/refreserv/refreserv.cfg # # DESCRIPTION: # Setting full size as refreservation, verify no snapshot can be created. # # STRATEGY: # 1. Setting full size as refreservation on pool # 2. Verify no snapshot can be created on this pool # 3. Setting full size as refreservation on filesystem # 4. Verify no snapshot can be created on it and its subfs # verify_runnable "both" function cleanup { if is_global_zone ; then log_must zfs set refreservation=none $TESTPOOL if datasetexists $TESTPOOL@snap ; then log_must zfs destroy -f $TESTPOOL@snap fi fi log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } # This function iteratively increases refreserv to its highest possible # value. Simply setting refreserv == quota can allow enough writes to # complete that the test fails. function max_refreserv { typeset ds=$1 typeset -i incsize=131072 typeset -i rr=$(get_prop available $ds) log_must zfs set refreserv=$rr $ds while :; do zfs set refreserv=$((rr + incsize)) $ds >/dev/null 2>&1 if [[ $? == 0 ]]; then ((rr += incsize)) continue else ((incsize /= 2)) ((incsize == 0)) && break fi done } log_assert "Setting full size as refreservation, verify no snapshot " \ "can be created." log_onexit cleanup log_must zfs create $TESTPOOL/$TESTFS/subfs typeset datasets if is_global_zone; then datasets="$TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTFS/subfs" else datasets="$TESTPOOL/$TESTFS $TESTPOOL/$TESTFS/subfs" fi for ds in $datasets; do # # Verify refreservation on dataset # log_must zfs set quota=25M $ds max_refreserv $ds log_mustnot zfs snapshot $ds@snap if datasetexists $ds@snap ; then log_fail "ERROR: $ds@snap should not exists." fi log_must zfs set quota=none $ds log_must zfs set refreservation=none $ds done log_pass "Setting full size as refreservation, verify no snapshot " \ "can be created." zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/refreserv_004_pos.ksh0000644000000000000000000000007413607166133030012 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.317902353 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/refreserv_004_pos.ksh0000755016037001603700000000457313607166133030023 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/refreserv/refreserv.cfg # # DESCRIPTION: # Verify refreservation is limited by available space. # # STRATEGY: # 1. Setting quota and refreservation on parent filesystem. # 2. Get available space on sub-filesystem. # 3. Verify refreservation is limited by available on it. # verify_runnable "both" function cleanup { if is_global_zone ; then log_must zfs set refreservation=none $TESTPOOL fi log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "Verify refreservation is limited by available space." log_onexit cleanup pool=$TESTPOOL ; fs=$pool/$TESTFS ; subfs=$fs/subfs log_must zfs create $subfs typeset datasets if is_global_zone; then datasets="$pool $fs" else datasets="$fs" fi for ds in $datasets; do log_must zfs set quota=25M $ds log_must zfs set refreservation=15M $ds typeset -i avail avail=$(get_prop avail $subfs) log_must zfs set refreservation=$avail $subfs typeset mntpnt mntpnt=$(get_prop mountpoint $subfs) log_must mkfile $avail $mntpnt/$TESTFILE typeset -i exceed ((exceed = avail + 1)) log_mustnot zfs set refreservation=$exceed $subfs log_mustnot mkfile $avail $mntpnt/$TESTFILE log_must zfs set quota=none $ds log_must zfs set reservation=15M $ds done log_pass "Verify refreservation is limited by available space." zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/refreserv_001_pos.ksh0000644000000000000000000000007413607166133030007 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.311902161 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/refreserv_001_pos.ksh0000755016037001603700000000416313607166133030013 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/refreserv/refreserv.cfg # # DESCRIPTION: # Reservations are enforced using the maximum of 'reserv' and 'refreserv' # # STRATEGY: # 1. Setting quota for parent filesystem. # 2. Setting reservation and refreservation for sub-filesystem. # 3. Verify the sub-fs reservation are enforced by the maximum of 'reserv' # and 'refreserv'. # verify_runnable "both" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "Reservations are enforced using the maximum of " \ "'reserv' and 'refreserv'" log_onexit cleanup fs=$TESTPOOL/$TESTFS ; subfs=$fs/subfs log_must zfs create $subfs log_must zfs set quota=25M $fs log_must zfs set reserv=10M $subfs log_must zfs set refreserv=20M $subfs mntpnt=$(get_prop mountpoint $fs) log_mustnot mkfile 15M $mntpnt/$TESTFILE log_must rm -f $mntpnt/$TESTFILE log_must zfs set reserv=20M $subfs log_must zfs set refreserv=10M $subfs log_mustnot mkfile 15M $mntpnt/$TESTFILE log_pass "Reservations are enforced using the maximum of " \ "'reserv' and 'refreserv'" zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/refreserv.cfg0000644000000000000000000000007413607166133026520 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.304901935 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/refreserv.cfg0000644016037001603700000000173213607166133026520 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # export TESTFILE=testfile zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/refreserv_005_pos.ksh0000644000000000000000000000007413607166133030013 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.320902449 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/refreserv_005_pos.ksh0000755016037001603700000000412413607166133030014 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Volume (ref)reservation is not limited by volsize # # STRATEGY: # 1. Create volume on filesystem # 2. Setting quota for parent filesystem # 3. Verify volume (ref)reservation is not limited by volsize # verify_runnable "global" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "Volume (ref)reservation is not limited by volsize" log_onexit cleanup fs=$TESTPOOL/$TESTFS vol=$fs/vol log_must zfs create -V 10M $vol refreserv=`get_prop refreservation $vol` fudge=1 # Verify the parent filesystem does not affect volume log_must zfs set quota=25M $fs log_must zfs set reservation=10M $vol log_must zfs set refreservation=10M $vol # Verify it is not affected by volsize log_must zfs set reservation=$(($refreserv + $fudge)) $vol log_must zfs set reservation=$(($refreserv - $fudge)) $vol log_must zfs set refreservation=$(($refreserv + $fudge)) $vol log_must zfs set refreservation=$(($refreserv - $fudge)) $vol log_pass "Volume (ref)reservation is not limited by volsize" zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141510026054 xustar000000000000000030 atime=1579730440.557497309 30 ctime=1579730484.326902643 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/Makefile.am0000644016037001603700000000052113612141510026047 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/refreserv dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ refreserv_001_pos.ksh \ refreserv_002_pos.ksh \ refreserv_003_pos.ksh \ refreserv_004_pos.ksh \ refreserv_005_pos.ksh \ refreserv_multi_raidz.ksh \ refreserv_raidz.ksh dist_pkgdata_DATA = \ refreserv.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025703 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.307902033 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/setup.ksh0000755016037001603700000000206013607166133025701 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026172 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.309902097 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/cleanup.ksh0000755016037001603700000000203213607166133026167 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/refreserv_003_pos.ksh0000644000000000000000000000007413612141513030000 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.315902289 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/refreserv_003_pos.ksh0000755016037001603700000000432513612141513030004 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/refreserv/refreserv.cfg # # DESCRIPTION: # Verify a snapshot will only be allowed if there is enough free pool # space outside of this refreservation. # # STRATEGY: # 1. Setting quota and refreservation # 2. Verify snapshot can be created, when used =< quota - refreserv # 3. Verify failed to create snapshot, when used > quota - refreserv # verify_runnable "both" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "Verify a snapshot will only be allowed if there is enough " \ "free space outside of this refreservation." log_onexit cleanup fs=$TESTPOOL/$TESTFS log_must zfs set quota=25M $fs log_must zfs set refreservation=10M $fs mntpnt=$(get_prop mountpoint $fs) log_must mkfile 7M $mntpnt/$TESTFILE log_must zfs snapshot $fs@snap log_must mkfile 7M $mntpnt/$TESTFILE.2 log_must zfs snapshot $fs@snap2 log_must mkfile 7M $mntpnt/$TESTFILE.3 log_mustnot zfs snapshot $fs@snap3 if datasetexists $fs@snap3 ; then log_fail "ERROR: $fs@snap3 should not exists." fi log_pass "Verify a snapshot will only be allowed if there is enough " \ "free space outside of this refreservation." zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/refreserv_multi_raidz.ksh0000644000000000000000000000007413612141513031140 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.322902513 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/refreserv_multi_raidz.ksh0000755016037001603700000001242713612141513031146 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2019 Joyent, Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/refreserv/refreserv.cfg # # DESCRIPTION: # raidz refreservation=auto picks worst raidz vdev # # STRATEGY: # 1. Create a pool with a single raidz vdev # 2. For each block size [512b, 1k, 128k] or [4k, 8k, 128k] # - create a volume # - remember its refreservation # - destroy the volume # 3. Destroy the pool # 4. Recreate the pool with one more disk in the vdev, then repeat steps # 2 and 3. # # NOTES: # 1. This test will use up to 14 disks but can cover the key concepts with # 5 disks. # 2. If the disks are a mixture of 4Kn and 512n/512e, failures are likely. # verify_runnable "global" typeset -a alldisks=($DISKS) # The larger the volsize, the better zvol_volsize_to_reservation() is at # guessing the right number - though it is horrible with tiny blocks. At 10M on # ashift=12, the estimate may be over 26% too high. volsize=100 function cleanup { default_cleanup_noexit default_setup_noexit "${alldisks[0]}" } log_assert "raidz refreservation=auto picks worst raidz vdev" log_onexit cleanup poolexists "$TESTPOOL" && log_must_busy zpool destroy "$TESTPOOL" # Testing tiny block sizes on ashift=12 pools causes so much size inflation # that small test disks may fill before creating small volumes. However, # testing 512b and 1K blocks on ashift=9 pools is an ok approximation for # testing the problems that arise from 4K and 8K blocks on ashift=12 pools. bps=$(lsblk -nrdo min-io /dev/${alldisks[0]}) case "$bps" in 512) allshifts=(9 10 17) ;; 4096) allshifts=(12 13 17) ;; *) log_fail "bytes/sector: $bps != (512|4096)" ;; esac log_note "Testing in ashift=${allshifts[0]} mode" typeset -A sizes= # # Determine the refreservation for a $volsize MiB volume on each raidz type at # various block sizes. # for parity in 1 2 3; do raid=raidz$parity typeset -A sizes["$raid"] # Ensure we hit scenarios with and without skip blocks for ndisks in $((parity * 2)) $((parity * 2 + 1)); do typeset -a disks=(${alldisks[0..$((ndisks - 1))]}) if (( ${#disks[@]} < ndisks )); then log_note "Too few disks to test $raid-$ndisks" continue fi typeset -A sizes["$raid"]["$ndisks"] log_must zpool create "$TESTPOOL" "$raid" "${disks[@]}" for bits in "${allshifts[@]}"; do vbs=$((1 << bits)) log_note "Gathering refreservation for $raid-$ndisks" \ "volblocksize=$vbs" vol=$TESTPOOL/$TESTVOL log_must zfs create -V ${volsize}m \ -o volblocksize=$vbs "$vol" refres=$(zfs get -Hpo value refreservation "$vol") log_must test -n "$refres" sizes["$raid"]["$ndisks"]["$vbs"]=$refres log_must_busy zfs destroy "$vol" done log_must_busy zpool destroy "$TESTPOOL" done done # A little extra info is always helpful when diagnosing problems. To # pretty-print what you find in the log, do this in ksh: # typeset -A sizes=(...) # print -v sizes log_note "sizes=$(print -C sizes)" # # Helper function for checking that refreservation is calculated properly in # multi-vdev pools. "Properly" is defined as assuming that all vdevs are as # space inefficient as the worst one. # function check_vdevs { typeset raid=$1 typeset nd1=$2 typeset nd2=$3 typeset -a disks1 disks2 typeset vbs vol refres refres1 refres2 expect disks1=(${alldisks[0..$((nd1 - 1))]}) disks2=(${alldisks[$nd1..$((nd1 + nd2 - 1))]}) if (( ${#disks2[@]} < nd2 )); then log_note "Too few disks to test $raid-$nd1 + $raid=$nd2" return fi log_must zpool create -f "$TESTPOOL" \ "$raid" "${disks1[@]}" "$raid" "${disks2[@]}" for bits in "${allshifts[@]}"; do vbs=$((1 << bits)) log_note "Verifying $raid-$nd1 $raid-$nd2 volblocksize=$vbs" vol=$TESTPOOL/$TESTVOL log_must zfs create -V ${volsize}m -o volblocksize=$vbs "$vol" refres=$(zfs get -Hpo value refreservation "$vol") log_must test -n "$refres" refres1=${sizes["$raid"]["$nd1"]["$vbs"]} refres2=${sizes["$raid"]["$nd2"]["$vbs"]} if (( refres1 > refres2 )); then log_note "Expecting refres ($refres) to match refres" \ "from $raid-$nd1 ($refres1)" log_must test "$refres" -eq "$refres1" else log_note "Expecting refres ($refres) to match refres" \ "from $raid-$nd1 ($refres2)" log_must test "$refres" -eq "$refres2" fi log_must zfs destroy "$vol" done log_must zpool destroy "$TESTPOOL" } # # Verify that multi-vdev pools use the last optimistic size for all the # permutations within a particular raidz variant. # for raid in "${!sizes[@]}"; do # ksh likes to create a [0] item for us. Thanks, ksh! [[ $raid == "0" ]] && continue for nd1 in "${!sizes["$raid"][@]}"; do # And with an empty array we get one key, ''. Thanks, ksh! [[ $nd1 == "0" || -z "$nd1" ]] && continue for nd2 in "${!sizes["$raid"][@]}"; do [[ $nd2 == "0" || -z "$nd2" ]] && continue check_vdevs "$raid" "$nd1" "$nd2" done done done log_pass "raidz refreservation=auto picks worst raidz vdev" zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/refreserv_raidz.ksh0000644000000000000000000000007413612141522027726 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.324902578 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/refreserv_raidz.ksh0000755016037001603700000000720313612141522027730 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2019 Joyent, Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/refreserv/refreserv.cfg # # DESCRIPTION: # raidz refreservation=auto accounts for extra parity and skip blocks # # STRATEGY: # 1. Create a pool with a single raidz vdev # 2. For each block size [512b, 1k, 128k] or [4k, 8k, 128k] # - create a volume # - fully overwrite it # - verify that referenced is less than or equal to reservation # - destroy the volume # 3. Destroy the pool # 4. Recreate the pool with one more disk in the vdev, then repeat steps # 2 and 3. # 5. Repeat all steps above for raidz2 and raidz3. # # NOTES: # 1. This test will use up to 14 disks but can cover the key concepts with # 5 disks. # 2. If the disks are a mixture of 4Kn and 512n/512e, failures are likely. # verify_runnable "global" typeset -a alldisks=($DISKS) # The larger the volsize, the better zvol_volsize_to_reservation() is at # guessing the right number. At 10M on ashift=12, the estimate may be over 26% # too high. volsize=100 function cleanup { default_cleanup_noexit default_setup_noexit "${alldisks[0]}" } log_assert "raidz refreservation=auto accounts for extra parity and skip blocks" log_onexit cleanup poolexists "$TESTPOOL" && log_must_busy zpool destroy "$TESTPOOL" # Testing tiny block sizes on ashift=12 pools causes so much size inflation # that small test disks may fill before creating small volumes. However, # testing 512b and 1K blocks on ashift=9 pools is an ok approximation for # testing the problems that arise from 4K and 8K blocks on ashift=12 pools. bps=$(lsblk -nrdo min-io /dev/${alldisks[0]}) log_must test "$bps" -eq 512 -o "$bps" -eq 4096 case "$bps" in 512) allshifts=(9 10 17) maxpct=151 ;; 4096) allshifts=(12 13 17) maxpct=110 ;; *) log_fail "bytes/sector: $bps != (512|4096)" ;; esac log_note "Testing in ashift=${allshifts[0]} mode" # This loop handles all iterations of steps 1 through 4 described in strategy # comment above, for parity in 1 2 3; do raid=raidz$parity # Ensure we hit scenarios with and without skip blocks for ndisks in $((parity * 2)) $((parity * 2 + 1)); do typeset -a disks=(${alldisks[0..$((ndisks - 1))]}) if (( ${#disks[@]} < ndisks )); then log_note "Too few disks to test $raid-$ndisks" continue fi log_must zpool create "$TESTPOOL" "$raid" "${disks[@]}" for bits in "${allshifts[@]}"; do vbs=$((1 << bits)) log_note "Testing $raid-$ndisks volblocksize=$vbs" vol=$TESTPOOL/$TESTVOL log_must zfs create -V ${volsize}m \ -o volblocksize=$vbs "$vol" block_device_wait "/dev/zvol/$vol" log_must dd if=/dev/zero of=/dev/zvol/$vol \ bs=1024k count=$volsize sync ref=$(zfs get -Hpo value referenced "$vol") refres=$(zfs get -Hpo value refreservation "$vol") log_must test -n "$ref" log_must test -n "$refres" typeset -F2 deltapct=$((refres * 100.0 / ref)) log_note "$raid-$ndisks refreservation $refres" \ "is $deltapct% of reservation $res" log_must test "$ref" -le "$refres" log_must test "$deltapct" -le $maxpct log_must_busy zfs destroy "$vol" block_device_wait done log_must_busy zpool destroy "$TESTPOOL" done done log_pass "raidz refreservation=auto accounts for extra parity and skip blocks" zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143010026055 xustar000000000000000030 mtime=1579730440.594498498 30 atime=1579730457.952055799 30 ctime=1579730484.328902707 zfs-0.8.3/tests/zfs-tests/tests/functional/refreserv/Makefile.in0000664016037001603700000006155613612143010026076 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/refreserv DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/refreserv ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ refreserv_001_pos.ksh \ refreserv_002_pos.ksh \ refreserv_003_pos.ksh \ refreserv_004_pos.ksh \ refreserv_005_pos.ksh \ refreserv_multi_raidz.ksh \ refreserv_raidz.ksh dist_pkgdata_DATA = \ refreserv.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/refreserv/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/refreserv/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/migration0000644000000000000000000000013213612143063023731 xustar000000000000000030 mtime=1579730483.072862377 30 atime=1579730489.079055227 30 ctime=1579730483.072862377 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/0000775016037001603700000000000013612143063024012 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_006_pos.ksh0000644000000000000000000000007413607166133027770 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.054861799 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_006_pos.ksh0000755016037001603700000000402613607166133027772 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from UFS fs to ZFS fs using cpio # # STRATEGY: # 1. Calculate chksum of testfile # 2. Cpio up test file and place on a UFS filesystem # 3. Extract cpio contents to a ZFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $NONZFS_TESTDIR/cpio$$.cpio rm -rf $TESTDIR/$BNAME } log_assert "Migrating test file from UFS fs to ZFS fs using cpio" log_onexit cleanup cwd=$PWD cd $DNAME (( $? != 0 )) && log_untested "Could not change directory to $DNAME" ls $BNAME | cpio -oc > $NONZFS_TESTDIR/cpio$$.cpio (( $? != 0 )) && log_fail "Unable to create cpio archive" cd $cwd (( $? != 0 )) && log_untested "Could not change directory to $cwd" migrate_cpio $TESTDIR "$NONZFS_TESTDIR/cpio$$.cpio" $SUMA $SUMB (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to ZFS fs" log_pass "Successfully migrated test file from UFS fs to ZFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_012_pos.ksh0000644000000000000000000000007413607166133027765 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.067862217 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_012_pos.ksh0000755016037001603700000000354513607166133027774 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from UFS fs to ZFS fs using cp # # STRATEGY: # 1. Calculate chksum of testfile # 2. CP up test file and place on a UFS filesystem # 3. Extract cp contents to a ZFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/cp$$.cp rm -rf $NONZFS_TESTDIR/$BNAME } log_assert "Migrating test file from UFS fs to ZFS fs using cp" log_onexit cleanup prepare $DNAME "cp $BNAME $NONZFS_TESTDIR/cp$$.cp" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $TESTDIR $SUMA $SUMB "cp $NONZFS_TESTDIR/cp$$.cp $BNAME" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "UFS fs to ZFS fs" log_pass "Successfully migrated test file from UFS fs to ZFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026056 xustar000000000000000030 atime=1579730439.491463082 30 ctime=1579730483.069862281 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/Makefile.am0000644016037001603700000000074013607166133026054 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/migration dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ migration_001_pos.ksh \ migration_002_pos.ksh \ migration_003_pos.ksh \ migration_004_pos.ksh \ migration_005_pos.ksh \ migration_006_pos.ksh \ migration_007_pos.ksh \ migration_008_pos.ksh \ migration_009_pos.ksh \ migration_010_pos.ksh \ migration_011_pos.ksh \ migration_012_pos.ksh dist_pkgdata_DATA = \ migration.cfg \ migration.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147025676 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.038861285 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/setup.ksh0000755016037001603700000000354713607166147025707 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.cfg verify_runnable "global" case $DISK_COUNT in 0) log_untested "Need at least 1 disk device for test" ;; 1) log_note "Partitioning a single disk ($SINGLE_DISK)" ;; *) log_note "Partitioning disks ($ZFS_DISK $NONZFS_DISK)" ;; esac create_pool $TESTPOOL "$ZFS_DISK" rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR mkdir -p $TESTDIR || log_unresolved Could not create $TESTDIR log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS rm -rf $NONZFS_TESTDIR || log_unresolved Could not remove $NONZFS_TESTDIR mkdir -p $NONZFS_TESTDIR || log_unresolved Could not create $NONZFS_TESTDIR echo "y" | newfs -v ${DEV_DSKDIR}/$NONZFS_DISK (( $? != 0 )) && log_untested "Unable to setup a UFS file system" log_must mount ${DEV_DSKDIR}/$NONZFS_DISK $NONZFS_TESTDIR log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026160 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.040861349 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/cleanup.ksh0000755016037001603700000000314613607166133026164 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.cfg verify_runnable "global" ismounted $NONZFS_TESTDIR $NEWFS_DEFAULT_FS (( $? == 0 )) && log_must umount -f $NONZFS_TESTDIR ismounted $TESTPOOL/$TESTFS [[ $? == 0 ]] && log_must zfs umount -f $TESTDIR destroy_pool $TESTPOOL DISK=${DISKS%% *} if is_mpath_device $DISK; then delete_partitions fi # recreate and destroy a zpool over the disks to restore the partitions to # normal case $DISK_COUNT in 0) log_note "No disk devices to restore" ;; 1) log_must cleanup_devices $ZFS_DISK ;; *) log_must cleanup_devices $ZFS_DISK $NONZFS_DISK ;; esac log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_001_pos.ksh0000644000000000000000000000007413607166133027763 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.043861445 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_001_pos.ksh0000755016037001603700000000353413607166133027770 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from ZFS fs to ZFS fs using tar. # # STRATEGY: # 1. Calculate chksum of testfile # 2. Tar up test file and place on a ZFS filesystem # 3. Extract tar contents to a ZFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/tar$$.tar rm -rf $TESTDIR/$BNAME } log_assert "Migrating test file from ZFS fs to ZFS fs using tar" log_onexit cleanup prepare $DNAME "tar cf $TESTDIR/tar$$.tar $BNAME" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $TESTDIR $SUMA $SUMB "tar xf $TESTDIR/tar$$.tar" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to ZFS fs" log_pass "Successfully migrated test file from ZFS fs to ZFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_008_pos.ksh0000644000000000000000000000007413607166133027772 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.058861927 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_008_pos.ksh0000755016037001603700000000357513607166133030004 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from ZFS fs to UFS fs using dd. # # STRATEGY: # 1. Calculate chksum of testfile # 2. Dd up test file and place on a ZFS filesystem # 3. Extract dd contents to a UFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/dd$$.dd rm -rf $NONZFS_TESTDIR/$BNAME } log_assert "Migrating test file from ZFS fs to UFS fs using dd" log_onexit cleanup prepare $DNAME "dd if=$BNAME obs=128k of=$TESTDIR/dd$$.dd" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $NONZFS_TESTDIR $SUMA $SUMB "dd if=$TESTDIR/dd$$.dd obs=128k of=$BNAME" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to ZFS fs" log_pass "Successfully migrated test file from ZFS fs to UFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_010_pos.ksh0000644000000000000000000000007413607166133027763 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.063862087 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_010_pos.ksh0000755016037001603700000000352013607166133027763 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from ZFS fs to ZFS fs using cp # # STRATEGY: # 1. Calculate chksum of testfile # 2. CP up test file and place on a ZFS filesystem # 3. Extract cp contents to a ZFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/cp$$.cp rm -rf $TESTDIR/$BNAME } log_assert "Migrating test file from ZFS fs to ZFS fs using cp" log_onexit cleanup prepare $DNAME "cp $BNAME $TESTDIR/cp$$.cp" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $TESTDIR $SUMA $SUMB "cp $TESTDIR/cp$$.cp $BNAME" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to ZFS fs" log_pass "Successfully migrated test file from ZFS fs to ZFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_004_pos.ksh0000644000000000000000000000007413607166133027766 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.049861639 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_004_pos.ksh0000755016037001603700000000400113607166133027761 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from ZFS fs to ZFS fs using cpio # # STRATEGY: # 1. Calculate chksum of testfile # 2. Cpio up test file and place on a ZFS filesystem # 3. Extract cpio contents to a ZFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/cpio$$.cpio rm -rf $TESTDIR/$BNAME } log_assert "Migrating test file from ZFS fs to ZFS fs using cpio" log_onexit cleanup cwd=$PWD cd $DNAME (( $? != 0 )) && log_untested "Could not change directory to $DNAME" ls $BNAME | cpio -oc > $TESTDIR/cpio$$.cpio (( $? != 0 )) && log_fail "Unable to create cpio archive" cd $cwd (( $? != 0 )) && log_untested "Could not change directory to $cwd" migrate_cpio $TESTDIR "$TESTDIR/cpio$$.cpio" $SUMA $SUMB (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to ZFS fs" log_pass "Successfully migrated test file from ZFS fs to ZFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_007_pos.ksh0000644000000000000000000000007413607166133027771 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.056861863 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_007_pos.ksh0000755016037001603700000000355713607166133030003 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from ZFS fs to ZFS fs using dd. # # STRATEGY: # 1. Calculate chksum of testfile # 2. Dd up test file and place on a ZFS filesystem # 3. Extract dd contents to a ZFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/dd$$.dd rm -rf $TESTDIR/$BNAME } log_assert "Migrating test file from ZFS fs to ZFS fs using dd" log_onexit cleanup prepare $DNAME "dd if=$BNAME obs=128k of=$TESTDIR/dd$$.dd" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $TESTDIR $SUMA $SUMB "dd if=$TESTDIR/dd$$.dd obs=128k of=$BNAME" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to ZFS fs" log_pass "Successfully migrated test file from ZFS fs to ZFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration.cfg0000644000000000000000000000007413607166133026474 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.033861125 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration.cfg0000644016037001603700000000657213607166133026503 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export DISKSARRAY=$DISKS export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') set -A disk_array $(find_disks $DISKS) case "${#disk_array[*]}" in 0) DISK_COUNT=0 ;; 1) # We need to repartition the single disk to two slices. DISK_COUNT=1 ZFS_DISK=${disk_array[0]} SINGLE_DISK=$ZFS_DISK NONZFS_DISK=$ZFS_DISK if is_linux; then if is_mpath_device $ZFS_DISK; then export DEV_DSKDIR=$DEV_MPATHDIR else export DEV_DSKDIR=$DEV_RDSKDIR fi if ( is_mpath_device $ZFS_DISK ) && [[ -z $(echo $ZFS_DISK | awk 'substr($1,18,1)\ ~ /^[[:digit:]]+$/') ]] || ( is_real_device $ZFS_DISK ); then ZFSSIDE_DISK=${SINGLE_DISK}1 NONZFSSIDE_DISK=${SINGLE_DISK}2 elif ( is_mpath_device $ZFS_DISK || is_loop_device $ZFS_DISK ); then ZFSSIDE_DISK=${SINGLE_DISK}p1 NONZFSSIDE_DISK=${SINGLE_DISK}p2 else log_fail "$ZFS_DISK not supported for partitioning." fi else export DEV_DSKDIR="/dev" ZFSSIDE_DISK=${SINGLE_DISK}s0 NONZFSSIDE_DISK=${SINGLE_DISK}s1 fi ;; *) # In this case there are at least enough disks to use. DISK_COUNT=2 ZFS_DISK=${disk_array[0]} NONZFS_DISK=${disk_array[1]} if is_linux; then if is_mpath_device $ZFS_DISK; then export DEV_DSKDIR=$DEV_MPATHDIR else export DEV_DSKDIR=$DEV_RDSKDIR fi if ( is_mpath_device $ZFS_DISK ) && [[ -z $(echo $ZFS_DISK | awk 'substr($1,18,1)\ ~ /^[[:digit:]]+$/') ]] || ( is_real_device $ZFS_DISK ); then ZFSSIDE_DISK=${ZFS_DISK}1 elif ( is_mpath_device $ZFS_DISK || is_loop_device $ZFS_DISK ); then ZFSSIDE_DISK=${ZFS_DISK}p1 else log_fail "$ZFS_DISK not supported for partitioning." fi if ( is_mpath_device $NONZFS_DISK ) && [[ -z $(echo $NONZFS_DISK | awk 'substr($1,18,1)\ ~ /^[[:digit:]]+$/') ]] || ( is_real_device $NONZFS_DISK ); then NONZFSSIDE_DISK=${NONZFS_DISK}1 elif ( is_mpath_device $NONZFS_DISK || is_loop_device $NONZFS_DISK ); then NONZFSSIDE_DISK=${NONZFS_DISK}p1 else log_fail "$NONZFS_DISK not supported for partitioning." fi else export DEV_DSKDIR="/dev" ZFSSIDE_DISK=${ZFS_DISK}s0 NONZFSSIDE_DISK=${NONZFS_DISK}s0 fi ;; esac export DISK_COUNT ZFS_DISK NONZFS_DISK SINGLE_DISK ZFSSIDE_DISK NONZFSSIDE_DISK export TESTFILE=/etc/passwd export NONZFS_TESTDIR=$TESTDIR/nonzfstestdir tmp=`sum $TESTFILE` export SUMA=`echo $tmp | awk '{print $1}'` export SUMB=`echo $tmp | awk '{print $2}'` export FS_SIZE=1g export BNAME=`basename $TESTFILE` export DNAME=`dirname $TESTFILE` zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_005_pos.ksh0000644000000000000000000000007413607166133027767 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.052861735 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_005_pos.ksh0000755016037001603700000000401713607166133027771 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from ZFS fs to UFS fs using cpio # # STRATEGY: # 1. Calculate chksum of testfile # 2. Cpio up test file and place on a ZFS filesystem # 3. Extract cpio contents to a UFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/cpio$$.cpio rm -rf $NONZFS_TESTDIR/$BNAME } log_assert "Migrating test file from ZFS fs to uFS fs using cpio" log_onexit cleanup cwd=$PWD cd $DNAME (( $? != 0 )) && log_untested "Could not change directory to $DNAME" ls $BNAME | cpio -oc > $TESTDIR/cpio$$.cpio (( $? != 0 )) && log_fail "Unable to create cpio archive" cd $cwd (( $? != 0 )) && log_untested "Could not change directory to $cwd" migrate_cpio $NONZFS_TESTDIR "$TESTDIR/cpio$$.cpio" $SUMA $SUMB (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to UFS fs" log_pass "Successfully migrated test file from ZFS fs to UFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_009_pos.ksh0000644000000000000000000000007413607166133027773 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.060861991 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_009_pos.ksh0000755016037001603700000000360413607166133027776 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from UFS fs to ZFS fs using dd. # # STRATEGY: # 1. Calculate chksum of testfile # 2. Dd up test file and place on a UFS filesystem # 3. Extract dd contents to a ZFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/dd$$.dd rm -rf $NONZFS_TESTDIR/$BNAME } log_assert "Migrating test file from UFS fs to ZFS fs using dd" log_onexit cleanup prepare $DNAME "dd if=$BNAME obs=128k of=$NONZFS_TESTDIR/dd$$.dd" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $TESTDIR $SUMA $SUMB "dd if=$NONZFS_TESTDIR/dd$$.dd obs=128k of=$BNAME" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to ZFS fs" log_pass "Successfully migrated test file from UFS fs to ZFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007026051 xustar000000000000000030 mtime=1579730439.529464301 30 atime=1579730457.346036341 30 ctime=1579730483.072862377 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/Makefile.in0000664016037001603700000006177513612143007026075 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/migration DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/migration ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ migration_001_pos.ksh \ migration_002_pos.ksh \ migration_003_pos.ksh \ migration_004_pos.ksh \ migration_005_pos.ksh \ migration_006_pos.ksh \ migration_007_pos.ksh \ migration_008_pos.ksh \ migration_009_pos.ksh \ migration_010_pos.ksh \ migration_011_pos.ksh \ migration_012_pos.ksh dist_pkgdata_DATA = \ migration.cfg \ migration.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/migration/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/migration/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_003_pos.ksh0000644000000000000000000000007413607166133027765 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.047861575 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_003_pos.ksh0000755016037001603700000000356213607166133027773 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from UFS fs to ZFS fs using tar. # # STRATEGY: # 1. Calculate chksum of testfile # 2. Tar up test file and place on a UFS filesystem # 3. Extract tar contents to a ZFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $NONZFS_TESTDIR/tar$$.tar rm -rf $TESTDIR/$BNAME } log_assert "Migrating test file from UFS fs to ZFS fs using tar" log_onexit cleanup prepare $DNAME "tar cf $NONZFS_TESTDIR/tar$$.tar $BNAME" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $TESTDIR $SUMA $SUMB "tar xvf $NONZFS_TESTDIR/tar$$.tar" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "UFS fs to ZFS fs" log_pass "Successfully migrated test file from UFS fs to ZFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration.kshlib0000644000000000000000000000007413607166133027211 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.036861221 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration.kshlib0000644016037001603700000000633313607166133027213 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/migration/migration.cfg # # This function creates the test archive for migration. # # Usage: # prepare srcdir cmd # # Return value: 0 on success # 1 on failure # # Where: # srcdir: is the directory where the testfile is # cmd: is the command to be executed. # E.g. # tar cf $TESTDIR/tar$$.tar # function prepare #srcdir cmd { typeset srcdir=$1 typeset cmd=$2 typeset -i retval=0 cwd=$PWD cd $srcdir (( $? != 0 )) && return 1 $cmd (( $? != 0 )) && return 1 cd $cwd (( $? != 0 )) && return 1 return 0 } # # This function executes a passed in command and then determines the chksum # of the resulting file. The chksum components are checked against the ones # passed in to determine if they are equal. If they are equal, 0 is returned # otherwise 1 is returned. # # Usage: # migrate destdir oldsuma oldsumb command_to_execute # # Return value: 0 on success # 1 on failure # # Where: # destdir: is the directory where the command is to be executed on # oldsuma: is the first part of the values returned by sum # oldsumb: is the second part of the values returned by sum # cmd: is the command to be executed; # E.g. # "tar xf $TESTDIR/tar$$.tar" # function migrate #destdir oldsuma oldsumb cmd { typeset destdir=$1 typeset oldsuma=$2 typeset oldsumb=$3 typeset cmd=$4 typeset -i retval=0 cwd=$PWD cd $destdir (( $? != 0 )) && return 1 $cmd (( $? != 0 )) && return 1 sumy=`sum ./$BNAME` suma=`echo $sumy | awk '{print $1}'` sumb=`echo $sumy | awk '{print $2}'` if (( $oldsuma != $suma )); then log_note "sum values are not the same" retval=1 fi if (( $oldsumb != $sumb )); then log_note "sum values are not the same" retval=1 fi cd $cwd (( $? != 0 )) && return 1 return $retval } function migrate_cpio { typeset destdir=$1 typeset archive=$2 typeset oldsuma=$3 typeset oldsumb=$4 typeset -i retval=0 cwd=$PWD cd $destdir (( $? != 0 )) && return 1 cpio -iv < $archive (( $? != 0 )) && return 1 sumy=`sum ./$BNAME` suma=`echo $sumy | awk '{print $1}'` sumb=`echo $sumy | awk '{print $2}'` if (( $oldsuma != $suma )); then log_note "sum values are not the same" retval=1 fi if (( $oldsumb != $sumb )); then log_note "sum values are not the same" retval=1 fi cd $cwd (( $? != 0 )) && return 1 return $retval } zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_011_pos.ksh0000644000000000000000000000007413607166133027764 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.065862153 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_011_pos.ksh0000755016037001603700000000353613607166133027773 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from ZFS fs to UFS fs using cp # # STRATEGY: # 1. Calculate chksum of testfile # 2. CP up test file and place on a ZFS filesystem # 3. Extract cp contents to a UFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $NONZFS_TESTDIR/cp$$.cp rm -rf $TESTDIR/$BNAME } log_assert "Migrating test file from ZFS fs to UFS fs using cp" log_onexit cleanup prepare $DNAME "cp $BNAME $TESTDIR/cp$$.cp" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $NONZFS_TESTDIR $SUMA $SUMB "cp $TESTDIR/cp$$.cp $BNAME" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to UFS fs" log_pass "Successfully migrated test file from ZFS fs to UFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/migration/PaxHeaders.151519/migration_002_pos.ksh0000644000000000000000000000007313607166133027763 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730483.04586151 zfs-0.8.3/tests/zfs-tests/tests/functional/migration/migration_002_pos.ksh0000755016037001603700000000355213607166133027771 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/migration/migration.kshlib # # DESCRIPTION: # Migrating test file from ZFS fs to UFS fs using tar. # # STRATEGY: # 1. Calculate chksum of testfile # 2. Tar up test file and place on a ZFS filesystem # 3. Extract tar contents to a UFS file system # 4. Calculate chksum of extracted file # 5. Compare old and new chksums. # verify_runnable "both" function cleanup { rm -rf $TESTDIR/tar$$.tar rm -rf $NONZFS_TESTDIR/$BNAME } log_assert "Migrating test file from ZFS fs to UFS fs using tar" log_onexit cleanup prepare $DNAME "tar cf $TESTDIR/tar$$.tar $BNAME" (( $? != 0 )) && log_fail "Unable to create src archive" migrate $NONZFS_TESTDIR $SUMA $SUMB "tar xf $TESTDIR/tar$$.tar" (( $? != 0 )) && log_fail "Unable to successfully migrate test file from" \ "ZFS fs to UFS fs" log_pass "Successfully migrated test file from ZFS fs to UFS fs". zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/io0000644000000000000000000000013213612143062022346 xustar000000000000000030 mtime=1579730482.640848505 30 atime=1579730489.079055227 30 ctime=1579730482.640848505 zfs-0.8.3/tests/zfs-tests/tests/functional/io/0000775016037001603700000000000013612143062022427 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/mmap.ksh0000644000000000000000000000007413607166133024101 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.636848377 zfs-0.8.3/tests/zfs-tests/tests/functional/io/mmap.ksh0000755016037001603700000000367413607166133024113 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/io/io.cfg # # DESCRIPTION: # Verify memory mapped IO with mmap(2) and memcpy(3) # # STRATEGY: # 1. Use fio(1) in verify mode to perform write, read, # random read, and random write workloads. # 2. Repeat the test with additional fio(1) options. # if ! compare_version_gte $(fio --version) "fio-2.3"; then log_unsupported "Requires fio-2.3 or newer" fi verify_runnable "global" function cleanup { log_must rm -f "$mntpnt/rw*" } log_assert "Verify memory mapped IO with mmap(2) and memcpy(3)" log_onexit cleanup ioengine="--ioengine=mmap" mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) dir="--directory=$mntpnt" set -A fio_arg -- "--sync=0" "--sync=1" "--direct=0" "--direct=1" for arg in "${fio_arg[@]}"; do log_must fio $dir $ioengine $arg $FIO_WRITE_ARGS log_must fio $dir $ioengine $arg $FIO_READ_ARGS log_must fio $dir $ioengine $arg $FIO_RANDWRITE_ARGS log_must fio $dir $ioengine $arg $FIO_RANDREAD_ARGS log_must rm -f "$mntpnt/rw*" done log_pass "Verified memory mapped IO with mmap(2) and memcpy(3)" zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/libaio.ksh0000644000000000000000000000007413607166133024406 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.631848217 zfs-0.8.3/tests/zfs-tests/tests/functional/io/libaio.ksh0000755016037001603700000000344713607166133024416 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/io/io.cfg # # DESCRIPTION: # Verify Linux native asynchronous IO. # # STRATEGY: # 1. Use fio(1) in verify mode to perform write, read, # random read, and random write workloads. # 2. Repeat the test with additional fio(1) options. # verify_runnable "global" function cleanup { log_must rm -f "$mntpnt/rw*" } log_assert "Verify Linux native asynchronous IO" log_onexit cleanup ioengine="--ioengine=libaio" mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) dir="--directory=$mntpnt" set -A fio_arg -- "--sync=0" "--sync=1" "--direct=0" "--direct=1" for arg in "${fio_arg[@]}"; do log_must fio $dir $ioengine $arg $FIO_WRITE_ARGS log_must fio $dir $ioengine $arg $FIO_READ_ARGS log_must fio $dir $ioengine $arg $FIO_RANDWRITE_ARGS log_must fio $dir $ioengine $arg $FIO_RANDREAD_ARGS log_must rm -f "$mntpnt/rw*" done log_pass "Verified Linux native asynchronous IO" zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/posixaio.ksh0000644000000000000000000000007413607166133025002 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.633848281 zfs-0.8.3/tests/zfs-tests/tests/functional/io/posixaio.ksh0000755016037001603700000000357213607166133025011 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/io/io.cfg # # DESCRIPTION: # Verify POSIX asynchronous IO with aio_read(3) and aio_write(3). # # STRATEGY: # 1. Use fio(1) in verify mode to perform write, read, # random read, and random write workloads. # 2. Repeat the test with additional fio(1) options. # verify_runnable "global" function cleanup { log_must rm -f "$mntpnt/rw*" } log_assert "Verify POSIX asynchronous IO with aio_read(3) and aio_write(3)" log_onexit cleanup ioengine="--ioengine=posixaio" mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) dir="--directory=$mntpnt" set -A fio_arg -- "--sync=0" "--sync=1" "--direct=0" "--direct=1" for arg in "${fio_arg[@]}"; do log_must fio $dir $ioengine $arg $FIO_WRITE_ARGS log_must fio $dir $ioengine $arg $FIO_READ_ARGS log_must fio $dir $ioengine $arg $FIO_RANDWRITE_ARGS log_must fio $dir $ioengine $arg $FIO_RANDREAD_ARGS log_must rm -f "$mntpnt/rw*" done log_pass "Verified POSIX asynchronous IO with aio_read(3) and aio_write(3)" zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/io.cfg0000644000000000000000000000007413607166133023530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.620847863 zfs-0.8.3/tests/zfs-tests/tests/functional/io/io.cfg0000644016037001603700000000153313607166133023527 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # FIO_COMMON_ARGS="--numjobs=1 --bs=32k --size=32M --fallocate=none --group_reporting --verify=sha1 --minimal" FIO_READ_ARGS="--name=rw --rw=read $FIO_COMMON_ARGS" FIO_WRITE_ARGS="--name=rw --rw=write $FIO_COMMON_ARGS" FIO_RANDREAD_ARGS="--name=rw --rw=randread $FIO_COMMON_ARGS" FIO_RANDWRITE_ARGS="--name=rw --rw=randwrite $FIO_COMMON_ARGS" zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/sync.ksh0000644000000000000000000000007413607166133024123 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.627848089 zfs-0.8.3/tests/zfs-tests/tests/functional/io/sync.ksh0000755016037001603700000000347313607166133024132 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/io/io.cfg # # DESCRIPTION: # Verify basic read(2), write(2) and lseek(2). # # STRATEGY: # 1. Use fio(1) in verify mode to perform write, read, # random read, and random write workloads. # 2. Repeat the test with additional fio(1) options. # verify_runnable "global" function cleanup { log_must rm -f "$mntpnt/rw*" } log_assert "Verify basic read(2), write(2) and lseek(2)" log_onexit cleanup ioengine="--ioengine=sync" mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) dir="--directory=$mntpnt" set -A fio_arg -- "--sync=0" "--sync=1" "--direct=0" "--direct=1" for arg in ${fio_arg[@]}; do log_must fio $dir $ioengine $arg $FIO_WRITE_ARGS log_must fio $dir $ioengine $arg $FIO_READ_ARGS log_must fio $dir $ioengine $arg $FIO_RANDWRITE_ARGS log_must fio $dir $ioengine $arg $FIO_RANDREAD_ARGS log_must rm -f "$mntpnt/rw*" done log_pass "Verified basic read(2), write(2) and lseek(2)" zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/psync.ksh0000644000000000000000000000007413607166133024303 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.629848153 zfs-0.8.3/tests/zfs-tests/tests/functional/io/psync.ksh0000755016037001603700000000344313607166133024307 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/io/io.cfg # # DESCRIPTION: # Verify basic pread(2) and pwrite(2). # # STRATEGY: # 1. Use fio(1) in verify mode to perform write, read, # random read, and random write workloads. # 2. Repeat the test with additional fio(1) options. # verify_runnable "global" function cleanup { log_must rm -f "/$TESTPOOL/rw*" } log_assert "Verify basic pread(2), pwrite(2)" log_onexit cleanup ioengine="--ioengine=psync" mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) dir="--directory=$mntpnt" set -A fio_arg -- "--sync=0" "--sync=1" "--direct=0" "--direct=1" for arg in "${fio_arg[@]}"; do log_must fio $dir $ioengine $arg $FIO_WRITE_ARGS log_must fio $dir $ioengine $arg $FIO_READ_ARGS log_must fio $dir $ioengine $arg $FIO_RANDWRITE_ARGS log_must fio $dir $ioengine $arg $FIO_RANDREAD_ARGS log_must rm -f "$mntpnt/rw*" done log_pass "Verified basic pread(2), pwrite(2)" zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133024474 xustar000000000000000030 atime=1579730439.156452325 30 ctime=1579730482.638848441 zfs-0.8.3/tests/zfs-tests/tests/functional/io/Makefile.am0000644016037001603700000000032513607166133024471 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/io dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ sync.ksh \ psync.ksh \ libaio.ksh \ posixaio.ksh \ mmap.ksh dist_pkgdata_DATA = \ io.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024307 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.622847927 zfs-0.8.3/tests/zfs-tests/tests/functional/io/setup.ksh0000755016037001603700000000177413607166133024320 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_setup "$DISKS" log_must zfs set compression=on $TESTPOOL/$TESTFS zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133024576 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.625848024 zfs-0.8.3/tests/zfs-tests/tests/functional/io/cleanup.ksh0000755016037001603700000000170413607166133024600 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/io/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007024467 xustar000000000000000030 mtime=1579730439.193453513 30 atime=1579730457.165030529 30 ctime=1579730482.640848505 zfs-0.8.3/tests/zfs-tests/tests/functional/io/Makefile.in0000664016037001603700000006133513612143007024503 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/io DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/io ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ sync.ksh \ psync.ksh \ libaio.ksh \ posixaio.ksh \ mmap.ksh dist_pkgdata_DATA = \ io.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/io/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/io/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/inuse0000644000000000000000000000013213612143062023062 xustar000000000000000030 mtime=1579730482.572846323 30 atime=1579730489.079055227 30 ctime=1579730482.572846323 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/0000775016037001603700000000000013612143062023143 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse_008_pos.ksh0000644000000000000000000000007413612141523026246 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.565846097 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse_008_pos.ksh0000755016037001603700000000535613612141523026257 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/inuse/inuse.cfg # # DESCRIPTION: # Newfs will interfere with devices and spare devices that are in use # by exported pool. # # STRATEGY: # 1. Create a regular|mirror|raidz|raidz2 pool with the given disk # 2. Export the pool # 3. Try to newfs against the disk, verify it succeeds as expect. # verify_runnable "global" if ! is_physical_device $FS_DISK0; then log_unsupported "This directory cannot be run on raw files." fi function cleanup { poolexists $TESTPOOL1 || zpool import $TESTPOOL1 >/dev/null 2>&1 poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 # # Tidy up the disks we used. # cleanup_devices $vdisks $sdisks } function verify_assertion #slices { typeset targets=$1 for t in $targets; do echo "y" | newfs -v $t > /dev/null 2>&1 (( $? !=0 )) && \ log_fail "newfs over exported pool " \ "fails unexpectedly." done return 0 } log_assert "Verify newfs over exported pool succeed." log_onexit cleanup set -A vdevs "" "mirror" "raidz" "raidz1" "raidz2" typeset -i i=0 typeset cyl="" for num in 0 1 2 3 ; do eval typeset disk=\${FS_DISK$num} zero_partitions $disk done for num in 0 1 2 3 ; do eval typeset slice=\${FS_SIDE$num} disk=${slice%${SLICE_PREFIX}*} [[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num} slice=$(echo $slice | awk '{ print substr($1,length($1),1) }') log_must set_partition $slice "$cyl" $FS_SIZE $disk [[ $num < 3 ]] && cyl=$(get_endslice $disk $slice) done while (( i < ${#vdevs[*]} )); do if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vslices spare $sslices log_must zpool export $TESTPOOL1 verify_assertion "$rawtargets" (( i = i + 1 )) done log_pass "Newfs over exported pool succeed." zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse_007_pos.ksh0000644000000000000000000000007413607166147026262 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.563846033 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse_007_pos.ksh0000755016037001603700000000611513607166147026265 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/inuse/inuse.cfg # # DESCRIPTION: # dumpadm will interfere with devices and spare devices that are in use # by exported pool. # # STRATEGY: # 1. Create a regular|mirror|raidz|raidz2 pool with the given disk # 2. Export the pool # 3. Try to dumpadm against the disk, verify it succeeds as expect. # verify_runnable "global" if is_linux; then log_unsupported "Test case isn't applicable to Linux" fi function cleanup { if [[ -n $PREVDUMPDEV ]]; then log_must dumpadm -u -d $PREVDUMPDEV fi poolexists $TESTPOOL1 || zpool import $TESTPOOL1 >/dev/null 2>&1 poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 # # Tidy up the disks we used. # cleanup_devices $vdisks $sdisks } function verify_assertion #slices { typeset targets=$1 for t in $targets; do log_must dumpadm -u -d $t log_must dumpadm -u -d $PREVDUMPDEV done return 0 } log_assert "Verify dumpadm over exported pool succeed." log_onexit cleanup set -A vdevs "" "mirror" "raidz" "raidz1" "raidz2" typeset -i i=0 PREVDUMPDEV=`dumpadm | grep "Dump device" | awk '{print $3}'` while (( i < ${#vdevs[*]} )); do for num in 0 1 2 3 ; do eval typeset disk=\${FS_DISK$num} zero_partitions $disk done for num in 0 1 2 3 ; do eval typeset slice=\${FS_SIDE$num} disk=${slice%${SLICE_PREFIX}*} slice=${slice##*${SLICE_PREFIX}} log_must set_partition $slice "" $FS_SIZE $disk done if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vslices spare $sslices log_must zpool export $TESTPOOL1 verify_assertion "$disktargets" log_must zpool import $TESTPOOL1 destroy_pool $TESTPOOL1 if [[ ( $FS_DISK0 == $FS_DISK2 ) && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi if [[ ( $FS_DISK0 == $FS_DISK3 ) && ( ${vdevs[i]} == "raidz2" ) ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vdisks spare $sdisks log_must zpool export $TESTPOOL1 verify_assertion "$disktargets" log_must zpool import $TESTPOOL1 destroy_pool $TESTPOOL1 (( i = i + 1 )) done log_pass "Dumpadm over exported pool succeed." zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse_003_pos.ksh0000644000000000000000000000007413607166147026256 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.554845745 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse_003_pos.ksh0000755016037001603700000001167613607166147026271 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/inuse/inuse.cfg # # DESCRIPTION: # ZFS will not interfere with devices that are in use by ufsdump or # ufsrestore. # # STRATEGY: # 1. newfs a disk # 2. mount the disk # 3. create files and dirs on disk # 4. umount the disk # 5. ufsdump this disk to a backup disk # 6. Try to create a ZFS pool with same disk (also as a spare device) # 7. ufsrestore the disk from backup # 8. try to create a zpool during the ufsrestore # verify_runnable "global" if is_linux; then log_unsupported "Test case isn't applicable to Linux" fi function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 poolexists $TESTPOOL2 && destroy_pool $TESTPOOL2 log_note "Kill off ufsdump process if still running" kill -0 $PIDUFSDUMP > /dev/null 2>&1 && \ log_must kill -9 $PIDUFSDUMP > /dev/null 2>&1 # # Note: It would appear that ufsdump spawns a number of processes # which are not killed when the $PIDUFSDUMP is whacked. So best bet # is to find the rest of the them and deal with them individually. # for all in `pgrep ufsdump` do kill -9 $all > /dev/null 2>&1 done log_note "Kill off ufsrestore process if still running" kill -0 $PIDUFSRESTORE > /dev/null 2>&1 && \ log_must kill -9 $PIDUFSRESTORE > /dev/null 2>&1 ismounted $UFSMP ufs && log_must umount $UFSMP rm -rf $UFSMP rm -rf $TESTDIR # # Tidy up the disks we used. # log_must cleanup_devices $vdisks $sdisks } log_assert "Ensure ZFS does not interfere with devices that are in use by " \ "ufsdump or ufsrestore" log_onexit cleanup typeset bigdir="${UFSMP}/bigdirectory" typeset restored_files="${UFSMP}/restored_files" typeset -i dirnum=0 typeset -i filenum=0 typeset cwd="" typeset cyl="" for num in 0 1 2; do eval typeset slice=\${FS_SIDE$num} disk=${slice%s*} slice=${slice##*${SLICE_PREFIX}} log_must set_partition $slice "$cyl" $FS_SIZE $disk cyl=$(get_endslice $disk $slice) done log_note "Make a ufs filesystem on source $rawdisk1" echo "y" | newfs -v $rawdisk1 > /dev/null 2>&1 (($? != 0)) && log_untested "Unable to create ufs filesystem on $rawdisk1" log_must mkdir -p $UFSMP log_note "mount source $disk1 on $UFSMP" log_must mount $disk1 $UFSMP log_note "Now create some directories and files to be ufsdump'ed" while (($dirnum <= 2)); do log_must mkdir $bigdir${dirnum} while (( $filenum <= 2 )); do file_write -o create -f $bigdir${dirnum}/file${filenum} \ -b $BLOCK_SIZE -c $BLOCK_COUNT if [[ $? -ne 0 ]]; then if [[ $dirnum -lt 3 ]]; then log_fail "file_write only wrote" \ "<(( $dirnum * 3 + $filenum ))>" \ "files, this is not enough" fi fi ((filenum = filenum + 1)) done filenum=0 ((dirnum = dirnum + 1)) done log_must umount $UFSMP log_note "Start ufsdump in the background" log_note "ufsdump 0bf 512 $rawdisk0 $disk1" ufsdump 0bf 512 $rawdisk0 $disk1 & PIDUFSDUMP=$! unset NOINUSE_CHECK log_note "Attempt to zpool the source device in use by ufsdump" log_mustnot zpool create $TESTPOOL1 "$disk1" log_mustnot poolexists $TESTPOOL1 log_note "Attempt to take the source device in use by ufsdump as spare device" log_mustnot zpool create $TESTPOOL1 "$FS_SIDE2" spare "$disk1" log_mustnot poolexists $TESTPOOL1 wait $PIDUFSDUMP typeset -i retval=$? (($retval != 0)) && log_fail "ufsdump failed with error code $ret_val" log_must mount $disk1 $UFSMP log_must rm -rf $UFSMP/* log_must mkdir $restored_files cwd=$PWD log_must cd $restored_files log_note "Start ufsrestore in the background from the target device" log_note "ufsrestore rbf 512 $rawdisk0" ufsrestore rbf 512 $rawdisk0 & PIDUFSRESTORE=$! log_must cd $cwd log_note "Attempt to zpool the restored device in use by ufsrestore" log_mustnot zpool create -f $TESTPOOL2 "$disk1" log_mustnot poolexists $TESTPOOL2 log_note "Attempt to take the restored device in use by ufsrestore as spare" \ "device" log_mustnot zpool create -f $TESTPOOL2 "$FS_SIDE2" spare "$disk1" log_mustnot poolexists $TESTPOOL2 log_pass "Unable to zpool over a device in use by ufsdump or ufsrestore" zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse_009_pos.ksh0000644000000000000000000000007413607166133026257 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.567846161 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse_009_pos.ksh0000755016037001603700000000576313607166133026272 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/inuse/inuse.cfg # # DESCRIPTION: # format command will interfere with devices and spare devices that are in use # by exported pool. # # STRATEGY: # 1. Create a regular|mirror|raidz|raidz2 pool with the given disk # 2. Export the pool # 3. Try to format against the disk, verify it succeeds as expect. # verify_runnable "global" if ! is_physical_device $FS_DISK0; then log_unsupported "This directory cannot be run on raw files." fi function cleanup { poolexists $TESTPOOL1 || zpool import $TESTPOOL1 >/dev/null 2>&1 poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 # # Tidy up the disks we used. # cleanup_devices $vdisks $sdisks } function verify_assertion #disks { typeset targets=$1 for t in $targets; do log_must zero_partitions $t done return 0 } log_assert "Verify format over exported pool succeed." log_onexit cleanup set -A vdevs "" "mirror" "raidz" "raidz1" "raidz2" typeset -i i=0 while (( i < ${#vdevs[*]} )); do for num in 0 1 2 3 ; do eval typeset disk=\${FS_DISK$num} zero_partitions $disk done typeset cyl="" for num in 0 1 2 3 ; do eval typeset slice=\${FS_SIDE$num} disk=${slice%${SLICE_PREFIX}*} [[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num} slice=$(echo $slice | awk '{ print substr($1,length($1),1) }') log_must set_partition $slice "$cyl" $FS_SIZE $disk [[ $num < 3 ]] && cyl=$(get_endslice $disk $slice) done if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vslices spare $sslices log_must zpool export $TESTPOOL1 verify_assertion "$vdisks $sdisks" if [[ ( $FS_DISK0 == $FS_DISK2 ) && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi if [[ ( $FS_DISK0 == $FS_DISK3 ) && ( ${vdevs[i]} == "raidz2" ) ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vdisks spare $sdisks log_must zpool export $TESTPOOL1 verify_assertion "$vdisks $sdisks" (( i = i + 1 )) done log_pass "Format over exported pool succeed." zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse_006_pos.ksh0000644000000000000000000000007413607166147026261 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.561845969 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse_006_pos.ksh0000755016037001603700000000553013607166147026264 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/inuse/inuse.cfg # # DESCRIPTION: # dumpadm will not interfere with devices and spare devices that are in use # by active pool. # # STRATEGY: # 1. Create a regular|mirror|raidz|raidz2 pool with the given disk # 2. Try to dumpadm against the disk, verify it fails as expect. # verify_runnable "global" if is_linux; then log_unsupported "Test case isn't applicable to Linux" fi function cleanup { if [[ -n $PREVDUMPDEV ]]; then log_must dumpadm -u -d $PREVDUMPDEV fi poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 # # Tidy up the disks we used. # cleanup_devices $vdisks $sdisks } function verify_assertion #slices { typeset targets=$1 for t in $targets; do log_mustnot dumpadm -d $t done return 0 } log_assert "Verify dumpadm over active pool fails." log_onexit cleanup set -A vdevs "" "mirror" "raidz" "raidz1" "raidz2" typeset -i i=0 PREVDUMPDEV=`dumpadm | grep "Dump device" | awk '{print $3}'` unset NOINUSE_CHECK while (( i < ${#vdevs[*]} )); do for num in 0 1 2 3 ; do eval typeset disk=\${FS_DISK$num} zero_partitions $disk done for num in 0 1 2 3 ; do eval typeset slice=\${FS_SIDE$num} disk=${slice%${SLICE_PREFIX}*} slice=${slice##*${SLICE_PREFIX}} log_must set_partition $slice "" $FS_SIZE $disk done if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vslices spare $sslices verify_assertion "$disktargets" destroy_pool $TESTPOOL1 if [[ ( $FS_DISK0 == $FS_DISK2 ) && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi if [[ ( $FS_DISK0 == $FS_DISK3 ) && ( ${vdevs[i]} == "raidz2" ) ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vdisks spare $sdisks verify_assertion "$disktargets" destroy_pool $TESTPOOL1 (( i = i + 1 )) done log_pass "Dumpadm over active pool fails." zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse_004_pos.ksh0000644000000000000000000000007413612141513026241 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.556845809 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse_004_pos.ksh0000755016037001603700000000527213612141513026247 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/inuse/inuse.cfg # # DESCRIPTION: # format will disallow modification of a mounted zfs disk partition or a spare # device # # STRATEGY: # 1. Create a ZFS filesystem # 2. Add a spare device to the ZFS pool # 3. Attempt to format the disk and the spare device. # verify_runnable "global" function cleanup { # # Essentially this is the default_cleanup routine but I cannot get it # to work correctly. So its reproduced below. Still need to fully # understand why default_cleanup does not work correctly from here. # log_must zfs umount $TESTPOOL/$TESTFS rm -rf $TESTDIR || \ log_unresolved Could not remove $TESTDIR log_must zfs destroy $TESTPOOL/$TESTFS destroy_pool $TESTPOOL } # # Currently, if a ZFS disk gets formatted things go horribly wrong, hence the # mini_format function. If the modify option is reached, then we know format # would happily continue - best to not go further. # function mini_format { typeset disk=$1 if is_linux; then parted $disk -s -- mklabel gpt typeset -i retval=$? else typeset format_file=$TEST_BASE_DIR/format_in.$$.1 echo "partition" > $format_file echo "modify" >> $format_file format -e -s -d $disk -f $format_file typeset -i retval=$? rm -rf $format_file fi return $retval } log_assert "format will disallow modification of a mounted zfs disk partition"\ " or a spare device" log_onexit cleanup log_must default_setup_noexit $FS_DISK0 log_must zpool add $TESTPOOL spare $FS_DISK1 log_note "Attempt to format a ZFS disk" log_mustnot mini_format $FS_DISK0 log_note "Attempt to format a ZFS spare device" log_mustnot mini_format $FS_DISK1 log_pass "Unable to format a disk in use by ZFS" zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse_005_pos.ksh0000644000000000000000000000007413607166147026260 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.558845873 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse_005_pos.ksh0000755016037001603700000000574713607166147026275 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/inuse/inuse.cfg # # DESCRIPTION: # newfs will not interfere with devices and spare devices that are in use # by active pool. # # STRATEGY: # 1. Create a regular|mirror|raidz|raidz2 pool with the given disk # 2. Try to newfs against the disk, verify it fails as expect. # verify_runnable "global" if ! is_physical_device $FS_DISK0; then log_unsupported "This directory cannot be run on raw files." fi function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 # # Tidy up the disks we used. # cleanup_devices $vdisks $sdisks } function verify_assertion #slices { typeset targets=$1 for t in $targets; do echo "y" | newfs -v $t > /dev/null 2>&1 (( $? !=0 )) || \ log_fail "newfs over active pool " \ "unexpected return code of 0" done return 0 } log_assert "Verify newfs over active pool fails." log_onexit cleanup set -A vdevs "" "mirror" "raidz" "raidz1" "raidz2" typeset -i i=0 unset NOINUSE_CHECK while (( i < ${#vdevs[*]} )); do for num in 0 1 2 3 ; do eval typeset disk=\${FS_DISK$num} zero_partitions $disk done typeset cyl="" for num in 0 1 2 3 ; do eval typeset slice=\${FS_SIDE$num} disk=${slice%${SLICE_PREFIX}*} [[ -z $SLICE_PREFIX ]] && eval typeset disk=\${FS_DISK$num} slice=$(echo $slice | awk '{ print substr($1,length($1),1) }') log_must set_partition $slice "$cyl" $FS_SIZE $disk [[ $num < 3 ]] && cyl=$(get_endslice $disk $slice) done if [[ -n $SINGLE_DISK && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vslices spare $sslices verify_assertion "$rawtargets" destroy_pool $TESTPOOL1 if [[ ( $FS_DISK0 == $FS_DISK2 ) && -n ${vdevs[i]} ]]; then (( i = i + 1 )) continue fi if [[ ( $FS_DISK0 == $FS_DISK3 ) && ( ${vdevs[i]} == "raidz2" ) ]]; then (( i = i + 1 )) continue fi create_pool $TESTPOOL1 ${vdevs[i]} $vdisks spare $sdisks verify_assertion "$rawtargets" destroy_pool $TESTPOOL1 (( i = i + 1 )) done log_pass "Newfs over active pool fails." zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025210 xustar000000000000000030 atime=1579730439.102450592 30 ctime=1579730482.570846258 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/Makefile.am0000644016037001603700000000046113607166133025206 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/inuse dist_pkgdata_SCRIPTS = \ setup.ksh \ inuse_001_pos.ksh \ inuse_003_pos.ksh \ inuse_004_pos.ksh \ inuse_005_pos.ksh \ inuse_006_pos.ksh \ inuse_007_pos.ksh \ inuse_008_pos.ksh \ inuse_009_pos.ksh dist_pkgdata_DATA = \ inuse.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025023 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.550845615 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/setup.ksh0000755016037001603700000000202613607166133025023 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse.cfg0000644000000000000000000000007413607166133024760 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.547845519 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse.cfg0000644016037001603700000001017013607166133024754 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib if is_linux; then export DISKSARRAY=$DISKS export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') set_device_dir set_slice_prefix export SLICE0=1 export SLICE1=2 else export SLICE_PREFIX="s" export SLICE0=0 export SLICE1=1 fi verify_disk_count "$DISKS" 2 set -A disk_array $(find_disks $DISKS) case "${#disk_array[@]}" in 2) FS_DISK0=${disk_array[0]} FS_DISK1=${disk_array[1]} FS_DISK2=${disk_array[0]} FS_DISK3=${disk_array[1]} FS_SIDE0=${FS_DISK0}${SLICE_PREFIX}${SLICE0} FS_SIDE1=${FS_DISK0}${SLICE_PREFIX}${SLICE1} FS_SIDE2=${FS_DISK1}${SLICE_PREFIX}${SLICE0} FS_SIDE3=${FS_DISK1}${SLICE_PREFIX}${SLICE1} disk0="${DEV_DSKDIR}/$FS_SIDE0" disk1="${DEV_DSKDIR}/$FS_SIDE1" disk2="${DEV_DSKDIR}/$FS_SIDE2" disk3="${DEV_DSKDIR}/$FS_SIDE3" disktargets="$disk0 $disk2" rawdisk0="${DEV_RDSKDIR}/$FS_SIDE0" rawdisk1="${DEV_RDSKDIR}/$FS_SIDE1" rawdisk2="${DEV_RDSKDIR}/$FS_SIDE2" rawdisk3="${DEV_RDSKDIR}/$FS_SIDE3" rawtargets="$rawdisk0 $rawdisk2" vdisks="$FS_DISK0" sdisks="$FS_DISK1" vslices="$FS_SIDE0 $FS_SIDE1 $FS_SIDE2" sslices="$FS_SIDE3" ;; 3) FS_DISK0=${disk_array[0]} FS_DISK1=${disk_array[1]} FS_DISK2=${disk_array[2]} FS_DISK3=${disk_array[0]} FS_SIDE0=${FS_DISK0}${SLICE_PREFIX}${SLICE0} FS_SIDE1=${FS_DISK0}${SLICE_PREFIX}${SLICE1} FS_SIDE2=${FS_DISK1}${SLICE_PREFIX}${SLICE0} FS_SIDE3=${FS_DISK2}${SLICE_PREFIX}${SLICE0} disk0="${DEV_DSKDIR}/$FS_SIDE0" disk1="${DEV_DSKDIR}/$FS_SIDE1" disk2="${DEV_DSKDIR}/$FS_SIDE2" disk3="${DEV_DSKDIR}/$FS_SIDE3" disktargets="$disk0 $disk2 $disk3" rawdisk0="${DEV_RDSKDIR}/$FS_SIDE0" rawdisk1="${DEV_RDSKDIR}/$FS_SIDE1" rawdisk2="${DEV_RDSKDIR}/$FS_SIDE2" rawdisk3="${DEV_RDSKDIR}/$FS_SIDE3" rawtargets="$rawdisk0 $rawdisk2 $rawdisk3" vdisks="$FS_DISK0 $FS_DISK1" sdisks="$FS_DISK2" vslices="$FS_SIDE0 $FS_SIDE2 $FS_SIDE3" sslices="$FS_SIDE1" ;; *) FS_DISK0=${disk_array[0]} FS_DISK1=${disk_array[1]} FS_DISK2=${disk_array[2]} FS_DISK3=${disk_array[3]} FS_SIDE0=${FS_DISK0}${SLICE_PREFIX}${SLICE0} FS_SIDE1=${FS_DISK1}${SLICE_PREFIX}${SLICE0} FS_SIDE2=${FS_DISK2}${SLICE_PREFIX}${SLICE0} FS_SIDE3=${FS_DISK3}${SLICE_PREFIX}${SLICE0} disk0="${DEV_DSKDIR}/$FS_SIDE0" disk1="${DEV_DSKDIR}/$FS_SIDE1" disk2="${DEV_DSKDIR}/$FS_SIDE2" disk3="${DEV_DSKDIR}/$FS_SIDE3" disktargets="$disk0 $disk1 $disk2 $disk3" rawdisk0="${DEV_RDSKDIR}/$FS_SIDE0" rawdisk1="${DEV_RDSKDIR}/$FS_SIDE1" rawdisk2="${DEV_RDSKDIR}/$FS_SIDE2" rawdisk3="${DEV_RDSKDIR}/$FS_SIDE3" rawtargets="$rawdisk0 $rawdisk1 $rawdisk2 $rawdisk3" vdisks="$FS_DISK0 $FS_DISK1 $FS_DISK2" sdisks="$FS_DISK3" vslices="$FS_SIDE0 $FS_SIDE1 $FS_SIDE2" sslices="$FS_SIDE3" ;; esac export FS_DISK0 FS_DISK1 FS_DISK2 FS_DISK3 SINGLE_DISK export FS_SIDE0 FS_SIDE1 FS_SIDE2 FS_SIDE3 export disk0 disk1 disk2 disk3 disktargets export rawdisk0 rawdisk1 rawdisk2 rawdisk3 rawtargets export vdisks sdisks vslices sslices export UFSMP=$TESTDIR/testinuseufsdump export FS_SIZE=1g export PREVDUMPDEV="" export PIDUFSDUMP="" export PIDUFSRESTORE="" # size of block to be written to test file - currently 1mb export BLOCK_SIZE=$(( 1024 * 1024 )) # number of blocks to write == size of file export BLOCK_COUNT=100 export STF_TIMEOUT=1200 # 20 minutes max. zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/inuse_001_pos.ksh0000644000000000000000000000007313612141513026235 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730482.55284568 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/inuse_001_pos.ksh0000755016037001603700000000464413612141513026246 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/inuse/inuse.cfg # # DESCRIPTION: # ZFS will not interfere with devices that are in use by dumpadm. # # STRATEGY: # 1. Create crash dump device using 'dumpadm' # 2. Try to create a ZFS pool using the 'dumpadm' crash dump device. # verify_runnable "global" if is_linux; then log_unsupported "Test case isn't applicable to Linux" fi function cleanup { # # Remove dump device. # if [[ -n $PREVDUMPDEV ]]; then log_must dumpadm -u -d $PREVDUMPDEV > /dev/null fi destroy_pool $TESTPOOL } log_assert "Ensure ZFS cannot use a device designated as a dump device" log_onexit cleanup typeset dumpdev="" typeset diskslice="" PREVDUMPDEV=`dumpadm | grep "Dump device" | awk '{print $3}'` log_note "Zero $FS_DISK0 and place free space in to slice 0" log_must cleanup_devices $FS_DISK0 diskslice="${DEV_DSKDIR}/${FS_DISK0}${SLICE0}" log_note "Configuring $diskslice as dump device" log_must dumpadm -d $diskslice > /dev/null log_note "Confirm that dump device has been setup" dumpdev=`dumpadm | grep "Dump device" | awk '{print $3}'` [[ -z "$dumpdev" ]] && log_untested "No dump device has been configured" [[ "$dumpdev" != "$diskslice" ]] && \ log_untested "Dump device has not been configured to $diskslice" log_note "Attempt to zpool the dump device" unset NOINUSE_CHECK log_mustnot zpool create $TESTPOOL "$diskslice" log_mustnot poolexists $TESTPOOL log_pass "Unable to zpool a device in use by dumpadm" zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007025203 xustar000000000000000030 mtime=1579730439.139451781 30 atime=1579730457.137029631 30 ctime=1579730482.572846323 zfs-0.8.3/tests/zfs-tests/tests/functional/inuse/Makefile.in0000664016037001603700000006150213612143007025213 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/inuse DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/inuse ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ inuse_001_pos.ksh \ inuse_003_pos.ksh \ inuse_004_pos.ksh \ inuse_005_pos.ksh \ inuse_006_pos.ksh \ inuse_007_pos.ksh \ inuse_008_pos.ksh \ inuse_009_pos.ksh dist_pkgdata_DATA = \ inuse.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/inuse/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/inuse/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/largest_pool0000644000000000000000000000013213612143062024431 xustar000000000000000030 mtime=1579730482.751852069 30 atime=1579730489.080055259 30 ctime=1579730482.751852069 zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/0000775016037001603700000000000013612143062024512 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/PaxHeaders.151519/largest_pool_001_pos.ksh0000644000000000000000000000007413607166133031165 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.746851909 zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/largest_pool_001_pos.ksh0000755016037001603700000001070613607166133031171 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/largest_pool/largest_pool.cfg # DESCRIPTION: # The largest pool can be created and a dataset in that # pool can be created and mounted. # # STRATEGY: # create a pool which will contain a volume device. # create a volume device of desired sizes. # create the largest pool allowed using the volume vdev. # create and mount a dataset in the largest pool. # create some files in the zfs file system. # do some zpool list commands and parse the output. verify_runnable "global" # # Parse the results of zpool & zfs creation with specified size # # $1: volume size # # return value: # 0 -> success # 1 -> failure # function parse_expected_output { UNITS=`echo $1 | sed -e 's/^\([0-9].*\)\([a-z].\)/\2/'` case "$UNITS" in 'mb') CHKUNIT="M" ;; 'gb') CHKUNIT="G" ;; 'tb') CHKUNIT="T" ;; 'pb') CHKUNIT="P" ;; 'eb') CHKUNIT="E" ;; *) CHKUNIT="M" ;; esac log_note "Detect zpool $TESTPOOL in this test machine." log_must eval "zpool list $TESTPOOL > $TEST_BASE_DIR/j.$$" log_must eval "grep $TESTPOOL $TEST_BASE_DIR/j.$$ | \ awk '{print $2}' | grep $CHKUNIT" log_note "Detect the file system in this test machine." log_must eval "df -F zfs -h > $TEST_BASE_DIR/j.$$" log_must eval "grep $TESTPOOL $TEST_BASE_DIR/j.$$ | \ awk '{print $2}' | grep $CHKUNIT" return 0 } # # Check and destroy zfs, volume & zpool remove the temporary files # function cleanup { log_note "Start cleanup the zfs and pool" if datasetexists $TESTPOOL/$TESTFS ; then if ismounted $TESTPOOL/$TESTFS ; then log_must zfs unmount $TESTPOOL/$TESTFS fi log_must zfs destroy $TESTPOOL/$TESTFS fi destroy_pool $TESTPOOL datasetexists $TESTPOOL2/$TESTVOL && \ log_must zfs destroy $TESTPOOL2/$TESTVOL destroy_pool $TESTPOOL2 rm -f $TEST_BASE_DIR/j.* > /dev/null } log_assert "The largest pool can be created and a dataset in that" \ "pool can be created and mounted." # Set trigger. When the test case exit, cleanup is executed. log_onexit cleanup # ----------------------------------------------------------------------- # volume sizes with unit designations. # # Note: specifying the number '1' as size will not give the correct # units for 'df'. It must be greater than one. # ----------------------------------------------------------------------- typeset str typeset -i ret for volsize in $VOLSIZES; do log_note "Create a pool which will contain a volume device" create_pool $TESTPOOL2 "$DISKS" log_note "Create a volume device of desired sizes: $volsize" str=$(zfs create -sV $volsize $TESTPOOL2/$TESTVOL 2>&1) ret=$? if (( ret != 0 )); then if [[ is_32bit && \ $str == *${VOL_LIMIT_KEYWORD1}* || \ $str == *${VOL_LIMIT_KEYWORD2}* || \ $str == *${VOL_LIMIT_KEYWORD3}* ]] then log_unsupported \ "Max volume size is 1TB on 32-bit systems." else log_fail "zfs create -sV $volsize $TESTPOOL2/$TESTVOL" fi fi block_device_wait log_note "Create the largest pool allowed using the volume vdev" create_pool $TESTPOOL "$VOL_PATH" log_note "Create a zfs file system in the largest pool" log_must zfs create $TESTPOOL/$TESTFS log_note "Parse the execution result" parse_expected_output $volsize log_note "unmount this zfs file system $TESTPOOL/$TESTFS" log_must zfs unmount $TESTPOOL/$TESTFS log_note "Destroy zfs, volume & zpool" log_must zfs destroy $TESTPOOL/$TESTFS destroy_pool $TESTPOOL log_must zfs destroy $TESTPOOL2/$TESTVOL destroy_pool $TESTPOOL2 done log_pass "Dateset can be created, mounted & destroy in largest pool succeeded." zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026557 xustar000000000000000030 atime=1579730439.261455697 30 ctime=1579730482.748851973 zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/Makefile.am0000644016037001603700000000024613607166133026556 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/largest_pool dist_pkgdata_SCRIPTS = \ largest_pool_001_pos.ksh dist_pkgdata_DATA = \ largest_pool.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/PaxHeaders.151519/largest_pool.cfg0000644000000000000000000000007413607166133027676 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.744851845 zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/largest_pool.cfg0000644016037001603700000000272413607166133027700 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # export TESTVOL=testvol$$ export VOL_PATH=${ZVOL_DEVDIR}/${TESTPOOL2}/$TESTVOL export VOLSIZES=${VOLSIZES-"2pb 5pb 10pb 2eb 5eb 7eb"} # There're 3 different prompt messages while create # a volume that great than 1TB on 32-bit # - volume size exceeds limit for this system. (happy gate) # - max volume size is 1TB on 32-bit systems (s10u2) # - value is too large (old) export VOL_LIMIT_KEYWORD1="1TB on 32-bit" export VOL_LIMIT_KEYWORD2="value is too large" export VOL_LIMIT_KEYWORD3="volume size exceeds limit" zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007026552 xustar000000000000000030 mtime=1579730439.299456916 30 atime=1579730457.226032489 30 ctime=1579730482.751852069 zfs-0.8.3/tests/zfs-tests/tests/functional/largest_pool/Makefile.in0000664016037001603700000006131413612143007026563 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/largest_pool DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/largest_pool ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ largest_pool_001_pos.ksh dist_pkgdata_DATA = \ largest_pool.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/largest_pool/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/largest_pool/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/ctime0000644000000000000000000000013213612143061023037 xustar000000000000000030 mtime=1579730481.493811677 30 atime=1579730489.080055259 30 ctime=1579730481.493811677 zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/0000775016037001603700000000000013612143061023120 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025166 xustar000000000000000030 atime=1579730438.311425194 30 ctime=1579730481.488811515 zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/Makefile.am0000644016037001603700000000045113607166133025163 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/ctime dist_pkgdata_SCRIPTS = \ ctime_001_pos.ksh \ cleanup.ksh \ setup.ksh pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/ctime pkgexec_PROGRAMS = ctime ctime_SOURCES = ctime.c zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025001 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.486811451 zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/setup.ksh0000755016037001603700000000203113607166133024775 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025270 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.483811355 zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/cleanup.ksh0000755016037001603700000000200313607166133025263 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/PaxHeaders.151519/ctime.c0000644000000000000000000000007413607166147024404 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.493811677 zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/ctime.c0000644016037001603700000001664213607166147024412 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2013 by Delphix. All rights reserved. */ #include #include #include #include #include #include #include #include #include #include #include #include #define ST_ATIME 0 #define ST_CTIME 1 #define ST_MTIME 2 #define ALL_MODE (mode_t)(S_IRWXU|S_IRWXG|S_IRWXO) typedef struct timetest { int type; char *name; int (*func)(const char *pfile); } timetest_t; static char tfile[BUFSIZ] = { 0 }; /* * DESCRIPTION: * Verify time will be changed correctly after each operation. * * STRATEGY: * 1. Define time test array. * 2. Loop through each item in this array. * 3. Verify the time is changed after each operation. * */ static int get_file_time(const char *pfile, int what, time_t *ptr) { struct stat stat_buf; if (pfile == NULL || ptr == NULL) { return (-1); } if (stat(pfile, &stat_buf) == -1) { return (-1); } switch (what) { case ST_ATIME: *ptr = stat_buf.st_atime; return (0); case ST_CTIME: *ptr = stat_buf.st_ctime; return (0); case ST_MTIME: *ptr = stat_buf.st_mtime; return (0); default: return (-1); } } static int do_read(const char *pfile) { int fd, ret = 0; char buf[BUFSIZ] = { 0 }; if (pfile == NULL) { return (-1); } if ((fd = open(pfile, O_RDONLY, ALL_MODE)) == -1) { return (-1); } if (read(fd, buf, sizeof (buf)) == -1) { (void) fprintf(stderr, "read(%d, buf, %zd) failed with errno " "%d\n", fd, sizeof (buf), errno); (void) close(fd); return (1); } (void) close(fd); return (ret); } static int do_write(const char *pfile) { int fd, ret = 0; char buf[BUFSIZ] = "call function do_write()"; if (pfile == NULL) { return (-1); } if ((fd = open(pfile, O_WRONLY, ALL_MODE)) == -1) { return (-1); } if (write(fd, buf, strlen(buf)) == -1) { (void) fprintf(stderr, "write(%d, buf, %d) failed with errno " "%d\n", fd, (int)strlen(buf), errno); (void) close(fd); return (1); } (void) close(fd); return (ret); } static int do_link(const char *pfile) { int ret = 0; char link_file[BUFSIZ] = { 0 }; char pfile_copy[BUFSIZ] = { 0 }; char *dname; if (pfile == NULL) { return (-1); } strncpy(pfile_copy, pfile, sizeof (pfile_copy)-1); pfile_copy[sizeof (pfile_copy) - 1] = '\0'; /* * Figure out source file directory name, and create * the link file in the same directory. */ dname = dirname((char *)pfile_copy); (void) snprintf(link_file, BUFSIZ, "%s/%s", dname, "link_file"); if (link(pfile, link_file) == -1) { (void) fprintf(stderr, "link(%s, %s) failed with errno %d\n", pfile, link_file, errno); return (1); } (void) unlink(link_file); return (ret); } static int do_creat(const char *pfile) { int fd, ret = 0; if (pfile == NULL) { return (-1); } if ((fd = creat(pfile, ALL_MODE)) == -1) { (void) fprintf(stderr, "creat(%s, ALL_MODE) failed with errno " "%d\n", pfile, errno); return (1); } (void) close(fd); return (ret); } static int do_utime(const char *pfile) { int ret = 0; if (pfile == NULL) { return (-1); } /* * Times of the file are set to the current time */ if (utime(pfile, NULL) == -1) { (void) fprintf(stderr, "utime(%s, NULL) failed with errno " "%d\n", pfile, errno); return (1); } return (ret); } static int do_chmod(const char *pfile) { int ret = 0; if (pfile == NULL) { return (-1); } if (chmod(pfile, ALL_MODE) == -1) { (void) fprintf(stderr, "chmod(%s, ALL_MODE) failed with " "errno %d\n", pfile, errno); return (1); } return (ret); } static int do_chown(const char *pfile) { int ret = 0; if (pfile == NULL) { return (-1); } if (chown(pfile, getuid(), getgid()) == -1) { (void) fprintf(stderr, "chown(%s, %d, %d) failed with errno " "%d\n", pfile, (int)getuid(), (int)getgid(), errno); return (1); } return (ret); } static int do_xattr(const char *pfile) { int ret = 0; char *value = "user.value"; if (pfile == NULL) { return (-1); } if (setxattr(pfile, "user.x", value, strlen(value), 0) == -1) { (void) fprintf(stderr, "setxattr(%s, %d, %d) failed with errno " "%d\n", pfile, (int)getuid(), (int)getgid(), errno); return (1); } return (ret); } static void cleanup(void) { if ((strlen(tfile) != 0) && (access(tfile, F_OK) == 0)) { (void) unlink(tfile); } } static timetest_t timetest_table[] = { { ST_ATIME, "st_atime", do_read }, { ST_ATIME, "st_atime", do_utime }, { ST_MTIME, "st_mtime", do_creat }, { ST_MTIME, "st_mtime", do_write }, { ST_MTIME, "st_mtime", do_utime }, { ST_CTIME, "st_ctime", do_creat }, { ST_CTIME, "st_ctime", do_write }, { ST_CTIME, "st_ctime", do_chmod }, { ST_CTIME, "st_ctime", do_chown }, { ST_CTIME, "st_ctime", do_link }, { ST_CTIME, "st_ctime", do_utime }, { ST_CTIME, "st_ctime", do_xattr }, }; #define NCOMMAND (sizeof (timetest_table) / sizeof (timetest_table[0])) /* ARGSUSED */ int main(int argc, char *argv[]) { int i, ret, fd; char *penv[] = {"TESTDIR", "TESTFILE0"}; (void) atexit(cleanup); /* * Get the environment variable values. */ for (i = 0; i < sizeof (penv) / sizeof (char *); i++) { if ((penv[i] = getenv(penv[i])) == NULL) { (void) fprintf(stderr, "getenv(penv[%d])\n", i); return (1); } } (void) snprintf(tfile, sizeof (tfile), "%s/%s", penv[0], penv[1]); /* * If the test file is exists, remove it first. */ if (access(tfile, F_OK) == 0) { (void) unlink(tfile); } ret = 0; if ((fd = open(tfile, O_WRONLY | O_CREAT | O_TRUNC, ALL_MODE)) == -1) { (void) fprintf(stderr, "open(%s) failed: %d\n", tfile, errno); return (1); } (void) close(fd); for (i = 0; i < NCOMMAND; i++) { time_t t1, t2; /* * Get original time before operating. */ ret = get_file_time(tfile, timetest_table[i].type, &t1); if (ret != 0) { (void) fprintf(stderr, "get_file_time(%s %d) = %d\n", tfile, timetest_table[i].type, ret); return (1); } /* * Sleep 2 seconds, then invoke command on given file */ (void) sleep(2); timetest_table[i].func(tfile); /* * Get time after operating. */ ret = get_file_time(tfile, timetest_table[i].type, &t2); if (ret != 0) { (void) fprintf(stderr, "get_file_time(%s %d) = %d\n", tfile, timetest_table[i].type, ret); return (1); } if (t1 == t2) { (void) fprintf(stderr, "%s: t1(%ld) == t2(%ld)\n", timetest_table[i].name, (long)t1, (long)t2); return (1); } else { (void) fprintf(stderr, "%s: t1(%ld) != t2(%ld)\n", timetest_table[i].name, (long)t1, (long)t2); } } return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143006025160 xustar000000000000000030 mtime=1579730438.365426928 30 atime=1579730456.705015759 30 ctime=1579730481.490811579 zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/Makefile.in0000664016037001603700000007660613612143006025203 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = ctime$(EXEEXT) subdir = tests/zfs-tests/tests/functional/ctime ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(pkgexec_PROGRAMS) am_ctime_OBJECTS = ctime.$(OBJEXT) ctime_OBJECTS = $(am_ctime_OBJECTS) ctime_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' SCRIPTS = $(dist_pkgdata_SCRIPTS) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(ctime_SOURCES) DIST_SOURCES = $(ctime_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/ctime ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) dist_pkgdata_SCRIPTS = \ ctime_001_pos.ksh \ cleanup.ksh \ setup.ksh pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/ctime ctime_SOURCES = ctime.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/ctime/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/ctime/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list ctime$(EXEEXT): $(ctime_OBJECTS) $(ctime_DEPENDENCIES) @rm -f ctime$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ctime_OBJECTS) $(ctime_LDADD) $(LIBS) install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctime.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-dist_pkgdataSCRIPTS \ uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/PaxHeaders.151519/ctime_001_pos.ksh0000644000000000000000000000007413607166133026203 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.481811291 zfs-0.8.3/tests/zfs-tests/tests/functional/ctime/ctime_001_pos.ksh0000755016037001603700000000250413607166133026204 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # . $STF_SUITE/tests/functional/xattr/xattr_common.kshlib # # DESCRIPTION: # # Verify [acm]time is modified appropriately with xattr=on|sa set -A args "sa" "on" log_note "Verify [acm]time is modified appropriately." for arg in ${args[*]}; do log_note "Testing with xattr set to $arg" log_must zfs set xattr=$arg $TESTPOOL log_must $STF_SUITE/tests/functional/ctime/ctime done log_pass "PASS" zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/raidz0000644000000000000000000000013213612143064023052 xustar000000000000000030 mtime=1579730484.134896477 30 atime=1579730489.080055259 30 ctime=1579730484.134896477 zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/0000775016037001603700000000000013612143064023133 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/PaxHeaders.151519/raidz_002_pos.ksh0000644000000000000000000000007413607166133026224 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.130896349 zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/raidz_002_pos.ksh0000755016037001603700000000255013607166133026226 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Gvozden Neskovic. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Call the raidz_test tool with -S to test all supported raidz # implementations. This options will test several raidz block geometries # and several zio parameters that affect raidz block layout. Data # reconstruction performs all combinations of failed disks. Wall time # is set to 5min, but actual runtime might be longer. # log_must raidz_test -S -t 300 log_pass "raidz_test parameter sweep test succeeded." zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025176 xustar000000000000000030 atime=1579730440.399492236 30 ctime=1579730484.132896413 zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/Makefile.am0000644016037001603700000000024013607166133025167 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/raidz dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ raidz_001_neg.ksh \ raidz_002_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025011 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.123896124 zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/setup.ksh0000755016037001603700000000173413607166133025016 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Gvozden Neskovic. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025300 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.126896221 zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/cleanup.ksh0000755016037001603700000000171313607166133025302 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Gvozden Neskovic. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/PaxHeaders.151519/raidz_001_neg.ksh0000644000000000000000000000007413612141513026162 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.128896285 zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/raidz_001_neg.ksh0000755016037001603700000000222713612141513026165 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Gvozden Neskovic. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Call the raidz_test tool with -T options to test the infrastructure. # This option should make raidz_test to return non 0. # log_mustnot raidz_test -T log_pass "raidz_test detects errors as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143010025162 xustar000000000000000029 mtime=1579730440.43449336 30 atime=1579730457.860052845 30 ctime=1579730484.134896477 zfs-0.8.3/tests/zfs-tests/tests/functional/raidz/Makefile.in0000664016037001603700000005724613612143010025205 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/raidz DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/raidz ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ raidz_001_neg.ksh \ raidz_002_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/raidz/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/raidz/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/procfs0000644000000000000000000000013213612143063023234 xustar000000000000000030 mtime=1579730483.919889573 30 atime=1579730489.080055259 30 ctime=1579730483.919889573 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/0000775016037001603700000000000013612143063023315 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/PaxHeaders.151519/procfs_list_stale_read.ksh0000644000000000000000000000007413607166133030546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.913889381 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/procfs_list_stale_read.ksh0000755016037001603700000000524213607166133030551 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Make sure errors caused by messages being dropped from the list backing the # procfs file are handled gracefully. # # STRATEGY: # 1. Make sure a few entries have been logged. # 2. Open the procfs file and start reading from it. # 3. Write to the file to cause its contents to be dropped. # 4. Resume reading from the first instance, and check that the expected # error is received. # 5. Repeat steps 1-4, except instead of dropping all the messages by writing # to the file, cause enough new messages to be written that the old messages # are dropped. # function cleanup { echo $default_max_entries >$MAX_ENTRIES_PARAM || log_fail } function sync_n { for i in {1..$1}; do log_must zpool sync $TESTPOOL done return 0 } function do_test { typeset cmd=$1 # Clear out old entries echo 0 >$TXG_HIST || log_fail # Add some new entries sync_n 20 # Confirm that there actually is something in the file. [[ $(wc -l <$TXG_HIST) -ge 20 ]] || log_fail "expected more entries" # # Start reading file, pause and run a command that will cause the # current offset into the file to become invalid, and then try to # finish reading. # { log_must dd bs=512 count=4 >/dev/null log_must eval "$cmd" cat 2>&1 >/dev/null | log_must grep "Input/output error" } <$TXG_HIST } typeset -r TXG_HIST=/proc/spl/kstat/zfs/$TESTPOOL/txgs typeset MAX_ENTRIES_PARAM=/sys/module/zfs/parameters/zfs_txg_history typeset default_max_entries log_onexit cleanup default_max_entries=$(<$MAX_ENTRIES_PARAM) || log_fail echo 50 >$MAX_ENTRIES_PARAM || log_fail # Clear all of the existing entries. do_test "echo 0 >$TXG_HIST" # Add enough new entries to the list that all of the old ones are dropped. do_test "sync_n 60" log_pass "Attempting to read dropped message returns expected error" zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/PaxHeaders.151519/procfs_list_concurrent_readers.k0000644000000000000000000000007413607166147032004 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.910889285 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/procfs_list_concurrent_readers.ksh0000755016037001603700000000445213607166147032344 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Make sure that interleaving reads from different readers does not affect the # results that are returned. # # STRATEGY: # 1. Make sure a few debug messages have been logged. # 2. Open the procfs file and start reading from it. # 3. Open the file again, and read its entire contents. # 4. Resume reading from the first instance. # 5. Check that the contents read by the two instances are identical. # function cleanup { [[ -z $msgs1 ]] || log_must rm $msgs1 [[ -z $msgs2 ]] || log_must rm $msgs2 datasetexists $FS && log_must zfs destroy -r $FS } typeset -r ZFS_DBGMSG=/proc/spl/kstat/zfs/dbgmsg typeset -r FS=$TESTPOOL/fs typeset msgs1 msgs2 log_onexit cleanup # Clear out old messages echo 0 >$ZFS_DBGMSG || log_fail "failed to write to $ZFS_DBGMSG" # Add some new messages log_must zfs create $FS for i in {1..20}; do log_must zfs snapshot "$FS@testsnapshot$i" done log_must zpool sync $TESTPOOL msgs1=$(mktemp) || log_fail msgs2=$(mktemp) || log_fail # # Start reading file, pause and read it from another process, and then finish # reading. # { dd bs=512 count=4; cat $ZFS_DBGMSG >$msgs1; cat; } <$ZFS_DBGMSG >$msgs2 # # Truncate the result of the read that completed second in case it picked up an # extra message that was logged after the first read completed. # log_must truncate -s $(stat -c "%s" $msgs1) $msgs2 log_must diff $msgs1 $msgs2 log_pass "Concurrent readers receive identical results" zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/PaxHeaders.151519/pool_state.ksh0000644000000000000000000000007413612141523026175 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.915889445 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/pool_state.ksh0000755016037001603700000000776513612141523026214 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # # # DESCRIPTION: # Test /proc/spl/kstat/zfs//state kstat # # STRATEGY: # 1. Create a mirrored pool # 2. Check that pool is ONLINE # 3. Fault one disk # 4. Check that pool is DEGRADED # 5. Create a new pool with a single scsi_debug disk # 6. Remove the disk # 7. Check that pool is SUSPENDED # 8. Add the disk back in # 9. Clear errors and destroy the pools . $STF_SUITE/include/libtest.shlib verify_runnable "both" function cleanup { # Destroy the scsi_debug pool if [ -n "$TESTPOOL2" ] ; then if [ -n "$host" ] ; then # Re-enable the disk scan_scsi_hosts $host # Device may have changed names after being inserted SDISK=$(get_debug_device) log_must ln $DEV_RDSKDIR/$SDISK $REALDISK fi # Restore our working pool image if [ -n "$BACKUP" ] ; then gunzip -c $BACKUP > $REALDISK log_must rm -f $BACKUP fi # Our disk is back. Now we can clear errors and destroy the # pool cleanly. log_must zpool clear $TESTPOOL2 # Now that the disk is back and errors cleared, wait for our # hung 'zpool scrub' to finish. wait destroy_pool $TESTPOOL2 log_must rm $REALDISK unload_scsi_debug fi } # Check that our pool state values match what's expected # # $1: pool name # $2: expected state ("ONLINE", "DEGRADED", "SUSPENDED", etc) function check_all { pool=$1 expected=$2 state1=$(zpool status $pool | awk '/state: /{print $2}'); state2=$(zpool list -H -o health $pool) state3=$(/state kstat" # Test that the initial pool is healthy check_all $TESTPOOL "ONLINE" # Fault one of the disks, and check that pool is degraded DISK1=$(echo "$DISKS" | awk '{print $2}') log_must zpool offline -tf $TESTPOOL $DISK1 check_all $TESTPOOL "DEGRADED" log_must zpool online $TESTPOOL $DISK1 log_must zpool clear $TESTPOOL # Create a new pool out of a scsi_debug disk TESTPOOL2=testpool2 MINVDEVSIZE_MB=$((MINVDEVSIZE / 1048576)) load_scsi_debug $MINVDEVSIZE_MB 1 1 1 '512b' SDISK=$(get_debug_device) host=$(get_scsi_host $SDISK) # Use $REALDISK instead of $SDISK in our pool because $SDISK can change names # as we remove/add the disk (i.e. /dev/sdf -> /dev/sdg). REALDISK=/dev/kstat-state-realdisk log_must [ ! -e $REALDISK ] ln $DEV_RDSKDIR/$SDISK $REALDISK log_must zpool create $TESTPOOL2 $REALDISK # Backup the contents of the disk image BACKUP=$TEST_BASE_DIR/kstat-state-realdisk.gz log_must [ ! -e $BACKUP ] gzip -c $REALDISK > $BACKUP # Yank out the disk from under the pool log_must rm $REALDISK remove_disk $SDISK # Run a 'zpool scrub' in the background to suspend the pool. We run it in the # background since the command will hang when the pool gets suspended. The # command will resume and exit after we restore the missing disk later on. zpool scrub $TESTPOOL2 & sleep 3 # Give the scrub some time to run before we check if it fails log_must check_all $TESTPOOL2 "SUSPENDED" log_pass "/proc/spl/kstat/zfs//state test successful" zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025361 xustar000000000000000030 atime=1579730440.186485396 30 ctime=1579730483.917889509 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/Makefile.am0000644016037001603700000000034613607166133025361 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/procfs dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ procfs_list_basic.ksh \ procfs_list_concurrent_readers.ksh \ procfs_list_stale_read.ksh \ pool_state.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/PaxHeaders.151519/procfs_list_basic.ksh0000644000000000000000000000007413612141522027513 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.908889221 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/procfs_list_basic.ksh0000755016037001603700000000576113612141522027524 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Test that we can read from and write to a file in procfs whose contents is # backed by a linked list. # # STRATEGY: # 1. Take some snapshots of a filesystem, which will cause some messages to be # written to the zfs dbgmsgs. # 2. Read the dbgmsgs via procfs and verify that the expected messages are # present. # 3. Write to the dbgmsgs file to clear the messages. # 4. Read the dbgmsgs again, and make sure the messages are no longer present. # function cleanup { datasetexists $FS && log_must zfs destroy -r $FS } function count_snap_cmds { typeset expected_count=$1 count=$(grep -E "command: (lt-)?zfs snapshot $FS@testsnapshot" | wc -l) log_must eval "[[ $count -eq $expected_count ]]" } typeset -r ZFS_DBGMSG=/proc/spl/kstat/zfs/dbgmsg typeset -r FS=$TESTPOOL/fs typeset snap_msgs log_onexit cleanup # Clear out old messages echo 0 >$ZFS_DBGMSG || log_fail "failed to write to $ZFS_DBGMSG" log_must zfs create $FS for i in {1..20}; do log_must zfs snapshot "$FS@testsnapshot$i" done log_must zpool sync $TESTPOOL # # Read the debug message file in small chunks to make sure that the read is # split up into multiple syscalls. This tests that when a syscall begins we # correctly pick up in the list of messages where the previous syscall left # off. The size of the read can affect how many bytes the seq_file code has # left in its internal buffer, which in turn can affect the relative pos that # the seq_file code picks up at when the next read starts. Try a few # different size reads to make sure we can handle each case. # # Check that the file has the right contents by grepping for some of the # messages that we expect to be present. # for chunk_sz in {1,64,256,1024,4096}; do dd if=$ZFS_DBGMSG bs=$chunk_sz | count_snap_cmds 20 done # Clear out old messages and check that they really are gone echo 0 >$ZFS_DBGMSG || log_fail "failed to write to $ZFS_DBGMSG" cat $ZFS_DBGMSG | count_snap_cmds 0 # # Even though we don't expect any messages in the file, reading should still # succeed. # log_must cat $ZFS_DBGMSG log_pass "Basic reading/writing of procfs file backed by linked list successful" zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413612141523025164 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.904889092 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/setup.ksh0000755016037001603700000000176213612141523025172 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib if ! is_linux ; then log_unsupported "procfs is only used on Linux" fi default_mirror_setup $DISKS zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025463 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.906889157 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/cleanup.ksh0000755016037001603700000000163513607166133025470 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143010025345 xustar000000000000000029 mtime=1579730440.22148652 30 atime=1579730457.741049025 30 ctime=1579730483.919889573 zfs-0.8.3/tests/zfs-tests/tests/functional/procfs/Makefile.in0000664016037001603700000005735713612143010025373 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/procfs DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/procfs ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ procfs_list_basic.ksh \ procfs_list_concurrent_readers.ksh \ procfs_list_stale_read.ksh \ pool_state.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/procfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/procfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/exec0000644000000000000000000000013213612143061022662 xustar000000000000000030 mtime=1579730481.845822979 30 atime=1579730489.080055259 30 ctime=1579730481.845822979 zfs-0.8.3/tests/zfs-tests/tests/functional/exec/0000775016037001603700000000000013612143061022743 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/exec/PaxHeaders.151519/exec_001_pos.ksh0000644000000000000000000000007413607166133025651 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.838822753 zfs-0.8.3/tests/zfs-tests/tests/functional/exec/exec_001_pos.ksh0000755016037001603700000000337513607166133025661 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # When set property exec=on on a filesystem, processes can be executed from # this filesystem. # # STRATEGY: # 1. Create pool and file system. # 2. Copy '$STF_PATH/ls' to the ZFS file system. # 3. Setting exec=on on this file system. # 4. Make sure '$STF_PATH/ls' can work in this ZFS file system. # 5. Make sure mmap which is using the PROT_EXEC calls succeed. # verify_runnable "both" function cleanup { log_must rm $TESTDIR/myls } log_assert "Setting exec=on on a filesystem, processes can be executed from " \ "this file system." log_onexit cleanup log_must cp $STF_PATH/ls $TESTDIR/myls log_must zfs set exec=on $TESTPOOL/$TESTFS log_must $TESTDIR/myls log_must mmap_exec $TESTDIR/myls log_pass "Setting exec=on on filesystem testing passed." zfs-0.8.3/tests/zfs-tests/tests/functional/exec/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025011 xustar000000000000000030 atime=1579730438.599434443 30 ctime=1579730481.843822915 zfs-0.8.3/tests/zfs-tests/tests/functional/exec/Makefile.am0000644016037001603700000000030513607166133025004 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/exec dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ exec_001_pos.ksh \ exec_002_neg.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/exec/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024624 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.836822689 zfs-0.8.3/tests/zfs-tests/tests/functional/exec/setup.ksh0000755016037001603700000000203113607166133024620 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/exec/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025113 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.834822625 zfs-0.8.3/tests/zfs-tests/tests/functional/exec/cleanup.ksh0000755016037001603700000000200313607166133025106 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/exec/PaxHeaders.151519/exec_002_neg.ksh0000644000000000000000000000007413607166133025622 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.841822851 zfs-0.8.3/tests/zfs-tests/tests/functional/exec/exec_002_neg.ksh0000755016037001603700000000431513607166133025625 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # When set property exec=off on a filesystem, processes can not be executed from # this filesystem. # # STRATEGY: # 1. Create pool and file system. # 2. Copy '/usr/bin/ls' to the ZFS file system. # 3. Setting exec=off on this file system. # 4. Make sure '/usr/bin/ls' can not work in this ZFS file system. # 5. Make sure mmap which is using the PROT_EXEC calls failed. # verify_runnable "both" function cleanup { log_must rm $TESTDIR/myls } # # Execute and check if the return value is equal to expected. # # $1 expected value # $2..$n executed item # function exec_n_check { typeset expect_value=$1 shift $@ ret=$? if [[ $ret != $expect_value ]]; then log_fail "Unexpected return code: '$ret'" fi return 0 } log_assert "Setting exec=off on a filesystem, processes can not be executed " \ "from this file system." log_onexit cleanup log_must cp $STF_PATH/ls $TESTDIR/myls log_must zfs set exec=off $TESTPOOL/$TESTFS if is_linux; then log_must exec_n_check 126 $TESTDIR/myls log_must exec_n_check 1 mmap_exec $TESTDIR/myls # EPERM else log_must exec_n_check 126 $TESTDIR/myls log_must exec_n_check 13 mmap_exec $TESTDIR/myls # EACCES fi log_pass "Setting exec=off on filesystem testing passed." zfs-0.8.3/tests/zfs-tests/tests/functional/exec/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143006025002 xustar000000000000000029 mtime=1579730438.63643563 30 atime=1579730456.860020737 30 ctime=1579730481.845822979 zfs-0.8.3/tests/zfs-tests/tests/functional/exec/Makefile.in0000664016037001603700000006071413612143006025017 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am subdir = tests/zfs-tests/tests/functional/exec ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/exec ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ exec_001_pos.ksh \ exec_002_neg.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/exec/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/exec/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/arc0000644000000000000000000000013213612143053022504 xustar000000000000000030 mtime=1579730475.320613465 30 atime=1579730489.080055259 30 ctime=1579730475.320613465 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/0000775016037001603700000000000013612143053022565 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/arc/PaxHeaders.151519/dbufstats_001_pos.ksh0000644000000000000000000000007413607166147026552 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.311613177 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/dbufstats_001_pos.ksh0000755016037001603700000000455313607166147026561 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2017, Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib # # DESCRIPTION: # Ensure stats presented in /proc/spl/kstat/zfs/dbufstats are correct # based on /proc/spl/kstat/zfs/dbufs. # # STRATEGY: # 1. Generate a file with random data in it # 2. Store output from dbufs kstat # 3. Store output from dbufstats kstat # 4. Compare stats presented in dbufstats with stat generated using # dbufstat and the dbufs kstat output # DBUFSTATS_FILE=$(mktemp $TEST_BASE_DIR/dbufstats.out.XXXXXX) DBUFS_FILE=$(mktemp $TEST_BASE_DIR/dbufs.out.XXXXXX) function cleanup { log_must rm -f $TESTDIR/file $DBUFS_FILE $DBUFSTATS_FILE } function testdbufstat # stat_name dbufstat_filter { name=$1 filter="" [[ -n "$2" ]] && filter="-F $2" from_dbufstat=$(grep -w "$name" "$DBUFSTATS_FILE" | awk '{ print $3 }') from_dbufs=$(dbufstat -bxn -i "$DBUFS_FILE" "$filter" | wc -l) within_tolerance $from_dbufstat $from_dbufs 9 \ || log_fail "Stat $name exceeded tolerance" } verify_runnable "both" log_assert "dbufstats produces correct statistics" log_onexit cleanup log_must file_write -o create -f "$TESTDIR/file" -b 1048576 -c 20 -d R log_must zpool sync log_must eval "cat /proc/spl/kstat/zfs/dbufs > $DBUFS_FILE" log_must eval "cat /proc/spl/kstat/zfs/dbufstats > $DBUFSTATS_FILE" for level in {0..11}; do testdbufstat "cache_level_$level" "dbc=1,level=$level" done testdbufstat "cache_count" "dbc=1" testdbufstat "hash_elements" "" log_pass "dbufstats produces correct statistics passed" zfs-0.8.3/tests/zfs-tests/tests/functional/arc/PaxHeaders.151519/dbufstats_003_pos.ksh0000644000000000000000000000007413612141512026535 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.316613337 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/dbufstats_003_pos.ksh0000755016037001603700000000257013612141512026541 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2015 by Lawrence Livermore National Security, LLC. # All rights reserved. # . $STF_SUITE/include/libtest.shlib set -A args "" "-b" "-d" "-r" "-v" "-s \",\"" "-x" "-n" log_assert "dbufstat generates output and doesn't return an error code" typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_must eval "dbufstat ${args[i]} >/dev/null" ((i = i + 1)) done # A simple test of dbufstat filter functionality log_must eval "dbufstat -F object=10,dbc=1,pool=$TESTPOOL >/dev/null" log_pass "dbufstat generates output and doesn't return an error code" zfs-0.8.3/tests/zfs-tests/tests/functional/arc/PaxHeaders.151519/arcstats_runtime_tuning.ksh0000644000000000000000000000007413612141522030247 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.309613113 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/arcstats_runtime_tuning.ksh0000755016037001603700000000265113612141522030253 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2019, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/perf/perf.shlib function cleanup { # Set tunables to their recorded actual size and then to their original # value: this works for previously unconfigured tunables. log_must set_tunable64 zfs_arc_min "$MINSIZE" log_must set_tunable64 zfs_arc_min "$ZFS_ARC_MIN" log_must set_tunable64 zfs_arc_max "$MAXSIZE" log_must set_tunable64 zfs_arc_max "$ZFS_ARC_MAX" } log_onexit cleanup ZFS_ARC_MAX="$(get_tunable zfs_arc_max)" ZFS_ARC_MIN="$(get_tunable zfs_arc_min)" MINSIZE="$(get_min_arc_size)" MAXSIZE="$(get_max_arc_size)" log_assert "ARC tunables should be updated dynamically" for size in $((MAXSIZE/4)) $((MAXSIZE/3)) $((MAXSIZE/2)) $MAXSIZE; do log_must set_tunable64 zfs_arc_max "$size" log_must test "$(get_max_arc_size)" == "$size" log_must set_tunable64 zfs_arc_min "$size" log_must test "$(get_min_arc_size)" == "$size" done log_pass "ARC tunables can be updated dynamically" zfs-0.8.3/tests/zfs-tests/tests/functional/arc/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141522024621 xustar000000000000000030 atime=1579730433.909283855 30 ctime=1579730475.318613401 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/Makefile.am0000644016037001603700000000033613612141522024620 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/arc dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ arcstats_runtime_tuning.ksh \ dbufstats_001_pos.ksh \ dbufstats_002_pos.ksh \ dbufstats_003_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/arc/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024445 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.307613049 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/setup.ksh0000755016037001603700000000167613607166133024457 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2017, Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/arc/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133024734 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.305612985 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/cleanup.ksh0000755016037001603700000000165013607166133024736 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2017, Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/arc/PaxHeaders.151519/dbufstats_002_pos.ksh0000644000000000000000000000007413607166133026546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.313613241 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/dbufstats_002_pos.ksh0000755016037001603700000000534313607166133026553 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2017, Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib # # DESCRIPTION: # Ensure that dbufs move from mru to mfu as expected. # # STRATEGY: # 1. Set dbuf cache size to a small size (10M for this test) # 2. Generate a file with random data (small enough to fit in cache) # 3. zpool sync to remove dbufs from anon list in ARC # 4. Obtain the object ID using linux stat command # 5. Ensure that all dbufs are on the mru list in the ARC # 6. Generate another random file large enough to flush dbuf cache # 7. cat the first generated file # 8. Ensure that at least some dbufs moved to the mfu list in the ARC # DBUFS_FILE=$(mktemp $TEST_BASE_DIR/dbufs.out.XXXXXX) function cleanup { log_must rm -f $TESTDIR/file $TESTDIR/file2 $DBUFS_FILE } verify_runnable "both" log_assert "dbufs move from mru to mfu list" log_onexit cleanup log_must file_write -o create -f "$TESTDIR/file" -b 1048576 -c 1 -d R log_must zpool sync objid=$(stat --format="%i" "$TESTDIR/file") log_note "Object ID for $TESTDIR/file is $objid" log_must eval "cat /proc/spl/kstat/zfs/dbufs > $DBUFS_FILE" dbuf=$(dbufstat -bxn -i "$DBUFS_FILE" -F "object=$objid" | wc -l) mru=$(dbufstat -bxn -i "$DBUFS_FILE" -F "object=$objid,list=1" | wc -l) mfu=$(dbufstat -bxn -i "$DBUFS_FILE" -F "object=$objid,list=3" | wc -l) log_note "dbuf count is $dbuf, mru count is $mru, mfu count is $mfu" verify_ne "0" "$mru" "mru count" verify_eq "0" "$mfu" "mfu count" log_must eval "cat $TESTDIR/file > /dev/null" log_must eval "cat /proc/spl/kstat/zfs/dbufs > $DBUFS_FILE" dbuf=$(dbufstat -bxn -i "$DBUFS_FILE" -F "object=$objid" | wc -l) mru=$(dbufstat -bxn -i "$DBUFS_FILE" -F "object=$objid,list=1" | wc -l) mfu=$(dbufstat -bxn -i "$DBUFS_FILE" -F "object=$objid,list=3" | wc -l) log_note "dbuf count is $dbuf, mru count is $mru, mfu count is $mfu" verify_ne "0" "$mfu" "mfu count" log_pass "dbufs move from mru to mfu list passed" zfs-0.8.3/tests/zfs-tests/tests/functional/arc/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001024617 xustar000000000000000030 mtime=1579730433.944284979 30 atime=1579730454.265937447 30 ctime=1579730475.320613465 zfs-0.8.3/tests/zfs-tests/tests/functional/arc/Makefile.in0000664016037001603700000005733613612143001024641 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/arc DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/arc ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ arcstats_runtime_tuning.ksh \ dbufstats_001_pos.ksh \ dbufstats_002_pos.ksh \ dbufstats_003_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/arc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/arc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/devices0000644000000000000000000000013213612143061023360 xustar000000000000000030 mtime=1579730481.717818869 30 atime=1579730489.080055259 30 ctime=1579730481.717818869 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/0000775016037001603700000000000013612143061023441 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/devices_common.kshlib0000644000000000000000000000007413612141522027632 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.701818355 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/devices_common.kshlib0000644016037001603700000000533513612141522027635 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/devices/devices.cfg . $STF_SUITE/include/libtest.shlib # # Create block file or character file according to parameter. # # $1 device file type # $2 file name # $3 device path (used for 'b' device type) # function create_dev_file { typeset filetype=$1 typeset filename=$2 typeset devstr=$3 case $filetype in b) case $(uname) in Linux) # # stat(1) --format=FORMAT tokens # %t - major device type in hex # %T - minor device type in hex # major=$(stat --dereference --format="%t" "$devstr") minor=$(stat --dereference --format="%T" "$devstr") log_must mknod $filename b "0x${major}" "0x${minor}" ;; *) # # Get the device file information. i.e: # $devstr: block special (28/768) # devstr=$(file $devstr) major=${devstr##*\(} major=${major%%/*} minor=${devstr##*/} minor=${minor%\)} log_must mknod $filename b $major $minor ;; esac ;; c) # # Create device file '/dev/null', $devstr is unused. # case $(uname) in Linux) # # stat(1) --format=FORMAT tokens # %t - major device type in hex # %T - minor device type in hex # major=$(stat --format="%t" /dev/null) minor=$(stat --format="%T" /dev/null) log_must mknod $filename c "0x${major}" "0x${minor}" ;; FreeBSD) # # Create device file '/dev/null' # major=13 minor=2 log_must mknod $filename b $major $minor ;; *) major=$(getmajor mm) minor=2 log_must mknod $filename b $major $minor ;; esac ;; *) log_fail "'$filetype' is wrong." ;; esac return 0 } function cleanup { log_must zfs set devices=on $TESTPOOL/$TESTFS log_must rm -f $TESTDIR/$TESTFILE1 log_must rm -f $TESTDIR/$TESTFILE2 log_must rm -f $TESTDIR/$TESTFILE1.out1 log_must rm -f $TESTDIR/$TESTFILE1.out2 } zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/devices_002_neg.ksh0000644000000000000000000000007413612141522027005 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.710818643 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/devices_002_neg.ksh0000755016037001603700000000436613612141522027016 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/devices/devices.cfg . $STF_SUITE/tests/functional/devices/devices_common.kshlib # # DESCRIPTION: # When set property devices=off on file system, device files cannot be used # in this file system. # # STRATEGY: # 1. Create pool and file system. # 2. Set devices=off on this file system. # 3. Separately create block device file and character file. # 4. Separately read and write from those two device files. # 5. Check the return value, and make sure it failed. # verify_runnable "global" log_assert "Setting devices=off on file system, the devices files in this file"\ "system can not be used." log_onexit cleanup log_must zfs set devices=off $TESTPOOL/$TESTFS # # Create block device file backed by a ZFS volume. # Verify it cannot be opened, written, and read. # create_dev_file b $TESTDIR/$TESTFILE1 $ZVOL_DEVDIR/$TESTPOOL/$TESTVOL log_mustnot dd if=/dev/urandom of=$TESTDIR/$TESTFILE1 count=1 bs=128k log_mustnot dd if=$TESTDIR/$TESTFILE1 of=/dev/null count=1 bs=128k # Create character device file backed by /dev/null # Verify it cannot be opened and written. create_dev_file c $TESTDIR/$TESTFILE2 log_mustnot dd if=/dev/urandom of=$TESTDIR/$TESTFILE2 count=1 bs=128k log_pass "Setting devices=off on file system and testing it pass." zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/devices_001_pos.ksh0000644000000000000000000000007413612141522027034 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.708818579 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/devices_001_pos.ksh0000755016037001603700000000460113612141522027035 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/devices/devices.cfg . $STF_SUITE/tests/functional/devices/devices_common.kshlib # # DESCRIPTION: # When set property devices=on on file system, devices files can be used in # this file system. # # STRATEGY: # 1. Create pool and file system. # 2. Set devices=on on this file system. # 3. Separately create block device file and character file. # 4. Separately read and write from those two device files. # 5. Check the return value, and make sure it succeeds. # verify_runnable "global" log_assert "Setting devices=on on file system, the devices files in this file" \ "system can be used." log_onexit cleanup log_must zfs set devices=on $TESTPOOL/$TESTFS # # Create block device file backed by a ZFS volume. # Verify it can be opened, written, and read. # create_dev_file b $TESTDIR/$TESTFILE1 $ZVOL_DEVDIR/$TESTPOOL/$TESTVOL log_must dd if=/dev/urandom of=$TESTDIR/$TESTFILE1.out1 count=1 bs=128k log_must dd if=$TESTDIR/$TESTFILE1.out1 of=$TESTDIR/$TESTFILE1 count=1 bs=128k log_must dd if=$TESTDIR/$TESTFILE1 of=$TESTDIR/$TESTFILE1.out2 count=1 bs=128k log_must cmp $TESTDIR/$TESTFILE1.out1 $TESTDIR/$TESTFILE1.out2 # Create character device file backed by /dev/null # Verify it can be opened and written. create_dev_file c $TESTDIR/$TESTFILE2 log_must dd if=/dev/urandom of=$TESTDIR/$TESTFILE2 count=1 bs=128k log_pass "Setting devices=on on file system and testing it pass." zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025507 xustar000000000000000030 atime=1579730438.491430973 30 ctime=1579730481.714818773 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/Makefile.am0000644016037001603700000000037213607166133025506 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/devices dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ devices_001_pos.ksh \ devices_002_neg.ksh \ devices_003_pos.ksh dist_pkgdata_DATA = \ devices.cfg \ devices_common.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413612141522025311 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.706818515 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/setup.ksh0000755016037001603700000000204013612141522025305 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.703818419 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/cleanup.ksh0000755016037001603700000000200313607166133025604 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/devices.cfg0000644000000000000000000000007413607166133025556 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.699818291 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/devices.cfg0000644016037001603700000000177313607166133025563 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # export TESTFILE1=testfile1$$ export TESTFILE2=testfile2$$ zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/devices_003_pos.ksh0000644000000000000000000000007413607166133027047 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.712818709 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/devices_003_pos.ksh0000755016037001603700000000253513607166133027054 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # Writing random data into /dev/zfs should do no harm. # # STRATEGY: # 1. Write some random data into /dev/zfs # 2. Verify that this should fail. # # log_assert "Writing random data into /dev/zfs should do no harm." log_mustnot dd if=/dev/urandom of=/dev/zfs count=1024 log_pass "Writing random data into /dev/zfs should do no harm." zfs-0.8.3/tests/zfs-tests/tests/functional/devices/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143006025501 xustar000000000000000030 mtime=1579730438.528432163 30 atime=1579730456.799018777 30 ctime=1579730481.717818869 zfs-0.8.3/tests/zfs-tests/tests/functional/devices/Makefile.in0000664016037001603700000006142113612143006025511 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/devices DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/devices ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ devices_001_pos.ksh \ devices_002_neg.ksh \ devices_003_pos.ksh dist_pkgdata_DATA = \ devices.cfg \ devices_common.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/devices/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/devices/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/rsend0000644000000000000000000000013213612143064023054 xustar000000000000000030 mtime=1579730484.954922807 30 atime=1579730489.080055259 30 ctime=1579730484.954922807 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/0000775016037001603700000000000013612143064023135 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_incremental.ksh0000644000000000000000000000007413607166133027405 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.902921137 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_incremental.ksh0000755016037001603700000000600013607166133027401 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify that compressed send works correctly with incremental sends. # # Strategy: # 1. Randomly choose either a -i or -I incremental. # 2. Generate compressed incremental replication streams for a pool, a # descendant dataset, and a volume. # 3. Receive these streams verifying both the contents, and intermediate # snapshots are present or absent as appropriate to the -i or -I option. # verify_runnable "both" log_assert "Verify compressed send works with incremental send streams." log_onexit cleanup_pool $POOL2 typeset opt=$(random_get "-i" "-I") typeset final dstlist list vol log_must eval "zfs send -R $POOL@final > $BACKDIR/final" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/final" function do_checks { log_must cmp_ds_cont $POOL $POOL2 [[ $opt = "-I" ]] && log_must cmp_ds_subs $POOL $POOL2 [[ $opt = "-i" ]] && log_mustnot cmp_ds_subs $POOL $POOL2 [[ $1 != "clean" ]] && return cleanup_pool $POOL2 log_must eval "zfs send -R $POOL@final > $BACKDIR/final" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/final" } if is_global_zone; then # Send from the pool root final=$(getds_with_suffix $POOL2 @final) list="$final $(getds_with_suffix $POOL2 @snapA)" list="$list $(getds_with_suffix $POOL2 @snapB)" list="$list $(getds_with_suffix $POOL2 @snapC)" log_must eval "zfs send -c -R $opt @init $POOL2@final >$BACKDIR/pool" log_must destroy_tree $list log_must eval "zfs recv -d -F $POOL2 <$BACKDIR/pool" dstlist=$(getds_with_suffix $POOL2 @final) [[ $final != $dstlist ]] && log_fail "$final != $dstlist" do_checks clean # Send of a volume vol=$POOL2/$FS/vol final=$(getds_with_suffix $vol @final) log_must eval "zfs send -c -R $opt @init $vol@final >$BACKDIR/vol" log_must destroy_tree $vol@snapB $vol@snapC $vol@final log_must eval "zfs recv -d -F $POOL2 <$BACKDIR/vol" dstlist=$(getds_with_suffix $POOL2/$FS/vol @final) [[ $final != $dstlist ]] && log_fail "$final != $dstlist" do_checks clean fi # Send of a descendant fs final=$(getds_with_suffix $POOL2/$FS @final) list="$final $(getds_with_suffix $POOL2/$FS @snapA)" list="$list $(getds_with_suffix $POOL2/$FS @snapB)" list="$list $(getds_with_suffix $POOL2/$FS @snapC)" log_must eval "zfs send -c -R $opt @init $POOL2/$FS@final >$BACKDIR/fs" log_must destroy_tree $list log_must eval "zfs recv -d -F $POOL2 <$BACKDIR/fs" dstlist=$(getds_with_suffix $POOL2/$FS @final) [[ $final != $dstlist ]] && log_fail "$final != $dstlist" do_checks log_pass "Compressed send works with incremental send streams." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_realloc_dnode_size.ksh0000644000000000000000000000007413607166147030515 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.934922165 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh0000755016037001603700000000720313607166147030517 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # Copyright (c) 2018 Datto Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify incremental receive properly handles objects with changed # dnode slot count. # # Strategy: # 1. Populate a dataset with 1k byte dnodes and snapshot # 2. Remove objects, set dnodesize=legacy, and remount dataset so new objects # get recycled numbers and formerly "interior" dnode slots get assigned # to new objects # 3. Remove objects, set dnodesize=2k, and remount dataset so new objects # overlap with recently recycled and formerly "normal" dnode slots get # assigned to new objects # 4. Create an empty file and add xattrs to it to exercise reclaiming a # dnode that requires more than 1 slot for its bonus buffer (Zol #7433) # 5. Generate initial and incremental streams # 6. Verify initial and incremental streams can be received # verify_runnable "both" log_assert "Verify incremental receive handles objects with changed dnode size" function cleanup { rm -f $BACKDIR/fs-dn-legacy rm -f $BACKDIR/fs-dn-1k rm -f $BACKDIR/fs-dn-2k rm -f $BACKDIR/fs-attr if datasetexists $POOL/fs ; then log_must zfs destroy -rR $POOL/fs fi if datasetexists $POOL/newfs ; then log_must zfs destroy -rR $POOL/newfs fi } log_onexit cleanup # 1. Populate a dataset with 1k byte dnodes and snapshot log_must zfs create -o dnodesize=1k $POOL/fs log_must mk_files 200 262144 0 $POOL/fs log_must zfs snapshot $POOL/fs@a # 2. Remove objects, set dnodesize=legacy, and remount dataset so new objects # get recycled numbers and formerly "interior" dnode slots get assigned # to new objects rm /$POOL/fs/* log_must zfs unmount $POOL/fs log_must zfs set dnodesize=legacy $POOL/fs log_must zfs mount $POOL/fs log_must mk_files 200 262144 0 $POOL/fs log_must zfs snapshot $POOL/fs@b # 3. Remove objects, set dnodesize=2k, and remount dataset so new objects # overlap with recently recycled and formerly "normal" dnode slots get # assigned to new objects rm /$POOL/fs/* log_must zfs unmount $POOL/fs log_must zfs set dnodesize=2k $POOL/fs log_must zfs mount $POOL/fs log_must touch /$POOL/fs/attrs mk_files 200 262144 0 $POOL/fs log_must zfs snapshot $POOL/fs@c # 4. Create an empty file and add xattrs to it to exercise reclaiming a # dnode that requires more than 1 slot for its bonus buffer (Zol #7433) log_must zfs set compression=on xattr=sa $POOL/fs log_must eval "python -c 'print \"a\" * 512' | attr -s bigval /$POOL/fs/attrs" log_must zfs snapshot $POOL/fs@d # 5. Generate initial and incremental streams log_must eval "zfs send $POOL/fs@a > $BACKDIR/fs-dn-1k" log_must eval "zfs send -i $POOL/fs@a $POOL/fs@b > $BACKDIR/fs-dn-legacy" log_must eval "zfs send -i $POOL/fs@b $POOL/fs@c > $BACKDIR/fs-dn-2k" log_must eval "zfs send -i $POOL/fs@c $POOL/fs@d > $BACKDIR/fs-attr" # 6. Verify initial and incremental streams can be received log_must eval "zfs recv $POOL/newfs < $BACKDIR/fs-dn-1k" log_must eval "zfs recv $POOL/newfs < $BACKDIR/fs-dn-legacy" log_must eval "zfs recv $POOL/newfs < $BACKDIR/fs-dn-2k" log_must eval "zfs recv $POOL/newfs < $BACKDIR/fs-attr" log_pass "Verify incremental receive handles objects with changed dnode size" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_zstreamdump.ksh0000644000000000000000000000007313607166133027456 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730484.92792194 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_zstreamdump.ksh0000755016037001603700000000350013607166133027455 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib . $STF_SUITE/include/math.shlib # # Description: # Verify compression features show up in zstreamdump # # Strategy: # 1. Create a full compressed send stream # 2. Verify zstreamdump shows this stream has the relevant features # 3. Verify zstreamdump's accounting of logical and compressed size is correct # verify_runnable "both" log_assert "Verify zstreamdump correctly interprets compressed send streams." log_onexit cleanup_pool $POOL2 typeset sendfs=$POOL2/fs log_must zfs create -o compress=lz4 $sendfs typeset dir=$(get_prop mountpoint $sendfs) write_compressible $dir 16m log_must zfs snapshot $sendfs@full log_must eval "zfs send -c $sendfs@full >$BACKDIR/full" log_must stream_has_features $BACKDIR/full lz4 compressed cat $BACKDIR/full | zstreamdump -v > $BACKDIR/dump.out lsize=$(awk '/^WRITE [^0]/ {lsize += $24} END {printf("%d", lsize)}' \ $BACKDIR/dump.out) lsize_prop=$(get_prop logicalused $sendfs) within_percent $lsize $lsize_prop 90 || log_fail \ "$lsize and $lsize_prop differed by too much" csize=$(awk '/^WRITE [^0]/ {csize += $27} END {printf("%d", csize)}' \ $BACKDIR/dump.out) csize_prop=$(get_prop used $sendfs) within_percent $csize $csize_prop 90 || log_fail \ "$csize and $csize_prop differed by too much" log_pass "zstreamdump correctly interprets compressed send streams." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_embedded_blocks.ksh0000644000000000000000000000007413607166147030177 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.900921073 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_embedded_blocks.ksh0000755016037001603700000000734613607166147030211 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib . $STF_SUITE/include/properties.shlib # # Description: # Verify that compressed streams can contain embedded blocks. # # Strategy: # 1. Create a filesystem with compressible data and embedded blocks. # 2. Verify the created streams can be received correctly. # 3. Verify the presence / absence of embedded blocks in the compressed stream, # as well as the receiving file system. # verify_runnable "both" log_assert "Verify that compressed streams can contain embedded blocks." log_onexit cleanup_pool $POOL2 typeset objs obj recsize typeset sendfs=$POOL2/sendfs typeset recvfs=$POOL2/recvfs typeset stream=$BACKDIR/stream typeset dump=$BACKDIR/dump typeset recvfs2=$POOL2/recvfs2 typeset stream2=$BACKDIR/stream2 typeset dump2=$BACKDIR/dump2 log_must zfs create -o compress=lz4 $sendfs log_must zfs create -o compress=lz4 $recvfs log_must zfs create -o compress=lz4 $recvfs2 typeset dir=$(get_prop mountpoint $sendfs) # Populate the send dataset with compressible data and embedded block files. write_compressible $dir 16m for recsize in "${recsize_prop_vals[@]}"; do # For lz4, this method works for blocks up to 16k, but not larger [[ $recsize -eq $((32 * 1024)) ]] && break if is_linux; then log_must truncate -s $recsize $dir/$recsize log_must dd if=/dev/urandom of=$dir/$recsize \ seek=$((recsize - 8)) bs=1 count=8 conv=notrunc else log_must mkholes -h 0:$((recsize - 8)) -d $((recsize - 8)):8 \ $dir/$recsize fi done # Generate the streams and zstreamdump output. log_must zfs snapshot $sendfs@now log_must eval "zfs send -c $sendfs@now >$stream" log_must eval "zstreamdump -v <$stream >$dump" log_must eval "zfs recv -d $recvfs <$stream" cmp_ds_cont $sendfs $recvfs verify_stream_size $stream $sendfs log_mustnot stream_has_features $stream embed_data log_must eval "zfs send -c -e $sendfs@now >$stream2" log_must eval "zstreamdump -v <$stream2 >$dump2" log_must eval "zfs recv -d $recvfs2 <$stream2" cmp_ds_cont $sendfs $recvfs2 verify_stream_size $stream2 $sendfs log_must stream_has_features $stream2 embed_data # Verify embedded blocks are present only when expected. for recsize in "${recsize_prop_vals[@]}"; do [[ $recsize -eq $((32 * 1024)) ]] && break typeset send_obj=$(get_objnum $(get_prop mountpoint $sendfs)/$recsize) typeset recv_obj=$(get_objnum \ $(get_prop mountpoint $recvfs/sendfs)/$recsize) typeset recv2_obj=$(get_objnum \ $(get_prop mountpoint $recvfs2/sendfs)/$recsize) log_must eval "zdb -ddddd $sendfs $send_obj >$BACKDIR/sendfs.zdb" log_must eval "zdb -ddddd $recvfs/sendfs $recv_obj >$BACKDIR/recvfs.zdb" log_must eval "zdb -ddddd $recvfs2/sendfs $recv2_obj >$BACKDIR/recvfs2.zdb" grep -q "EMBEDDED" $BACKDIR/sendfs.zdb || \ log_fail "Obj $send_obj not embedded in $sendfs" grep -q "EMBEDDED" $BACKDIR/recvfs.zdb || \ log_fail "Obj $recv_obj not embedded in $recvfs" grep -q "EMBEDDED" $BACKDIR/recvfs2.zdb || \ log_fail "Obj $recv2_obj not embedded in $recvfs2" grep -q "WRITE_EMBEDDED object = $send_obj offset = 0" $dump && \ log_fail "Obj $obj embedded in zstreamdump output" grep -q "WRITE_EMBEDDED object = $send_obj offset = 0" $dump2 || \ log_fail "Obj $obj not embedded in zstreamdump output" done log_pass "Compressed streams can contain embedded blocks." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_lz4_disabled.ksh0000644000000000000000000000007413607166133027444 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.904921201 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_lz4_disabled.ksh0000755016037001603700000000406313607166133027447 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify a pool without the lz4 feature enabled can create compressed send # streams, and that they can be received into pools with or without the # lz4 feature. # # Strategy: # 1. For each of an uncompressed, and gzip dataset created from a pool with # the lz4 feature disabled, receive the stream into a pool with and without # the feature enabled. # verify_runnable "both" log_assert "Verify compressed streams are rejected if incompatible." typeset send_ds=$POOL2/testds typeset recv_ds=$POOL3/testds function cleanup { poolexists $POOL2 && destroy_pool $POOL2 poolexists $POOL3 && destroy_pool $POOL3 log_must zpool create $POOL2 $DISK2 } log_onexit cleanup datasetexists $POOL2 && log_must zpool destroy $POOL2 log_must zpool create -d $POOL2 $DISK2 for compress in off gzip; do for pool_opt in '' -d; do poolexists $POOL3 && destroy_pool $POOL3 log_must zpool create $pool_opt $POOL3 $DISK3 datasetexists $send_ds && log_must_busy zfs destroy -r $send_ds datasetexists $recv_ds && log_must_busy zfs destroy -r $recv_ds log_must zfs create -o compress=$compress $send_ds typeset dir=$(get_prop mountpoint $send_ds) write_compressible $dir 16m log_must zfs snapshot $send_ds@full log_must eval "zfs send -c $send_ds@full >$BACKDIR/full-c" log_must eval "zfs recv $recv_ds <$BACKDIR/full-c" log_must_busy zfs destroy -r $recv_ds log_must eval "zfs send $send_ds@full >$BACKDIR/full" log_must eval "zfs recv $recv_ds <$BACKDIR/full" done done log_pass "Compressed streams are rejected if incompatible." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_mixed_raw.ksh0000644000000000000000000000007413607166133026643 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.947922583 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_mixed_raw.ksh0000755016037001603700000001020213607166133026636 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that 'zfs receive' produces an error when mixing # raw and non-raw sends in a way that would break IV set # consistency. # # STRATEGY: # 1. Create an initial dataset with 3 snapshots. # 2. Perform a raw send of the first snapshot to 2 other datasets. # 3. Perform a non-raw send of the second snapshot to one of # the other datasets. Perform a raw send from this dataset to # the last one. # 4. Attempt to raw send the final snapshot of the first dataset # to the other 2 datasets, which should fail. # 5. Repeat steps 1-4, but using bookmarks for incremental sends. # # # A B C notes # ------------------------------------------------------------------------------ # snap1 ---raw---> snap1 --raw--> snap1 # all snaps initialized via raw send # snap2 -non-raw-> snap2 --raw--> snap2 # A sends non-raw to B, B sends raw to C # snap3 ------------raw---------> snap3 # attempt send to C (should fail) # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS3 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS3 datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "Mixing raw and non-raw receives should fail" typeset passphrase="password" log_must eval "echo $passphrase | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1" log_must zfs snapshot $TESTPOOL/$TESTFS1@1 log_must touch /$TESTPOOL/$TESTFS1/a log_must zfs snapshot $TESTPOOL/$TESTFS1@2 log_must touch /$TESTPOOL/$TESTFS1/b log_must zfs snapshot $TESTPOOL/$TESTFS1@3 # Testing with snapshots log_must eval "zfs send -w $TESTPOOL/$TESTFS1@1 |" \ "zfs receive $TESTPOOL/$TESTFS2" log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS2" log_must eval "zfs send -w $TESTPOOL/$TESTFS2@1 |" \ "zfs receive $TESTPOOL/$TESTFS3" log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS3" log_must eval "zfs send -i $TESTPOOL/$TESTFS1@1 $TESTPOOL/$TESTFS1@2 |" \ "zfs receive $TESTPOOL/$TESTFS2" log_must eval "zfs send -w -i $TESTPOOL/$TESTFS2@1 $TESTPOOL/$TESTFS2@2 |" \ "zfs receive $TESTPOOL/$TESTFS3" log_mustnot eval "zfs send -w -i $TESTPOOL/$TESTFS1@2 $TESTPOOL/$TESTFS1@3 |" \ "zfs receive $TESTPOOL/$TESTFS2" log_mustnot eval "zfs send -w -i $TESTPOOL/$TESTFS2@2 $TESTPOOL/$TESTFS2@3 |" \ "zfs receive $TESTPOOL/$TESTFS3" log_must zfs destroy -r $TESTPOOL/$TESTFS3 log_must zfs destroy -r $TESTPOOL/$TESTFS2 # Testing with bookmarks log_must zfs bookmark $TESTPOOL/$TESTFS1@1 $TESTPOOL/$TESTFS1#b1 log_must zfs bookmark $TESTPOOL/$TESTFS1@2 $TESTPOOL/$TESTFS1#b2 log_must eval "zfs send -w $TESTPOOL/$TESTFS1@1 |" \ "zfs receive $TESTPOOL/$TESTFS2" log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS2" log_must zfs bookmark $TESTPOOL/$TESTFS2@1 $TESTPOOL/$TESTFS2#b1 log_must eval "zfs send -w $TESTPOOL/$TESTFS2@1 |" \ "zfs receive $TESTPOOL/$TESTFS3" log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS3" log_must eval "zfs send -i $TESTPOOL/$TESTFS1#b1 $TESTPOOL/$TESTFS1@2 |" \ "zfs receive $TESTPOOL/$TESTFS2" log_must eval "zfs send -w -i $TESTPOOL/$TESTFS2#b1 $TESTPOOL/$TESTFS2@2 |" \ "zfs receive $TESTPOOL/$TESTFS3" log_mustnot eval "zfs send -w -i $TESTPOOL/$TESTFS1#b2" \ "$TESTPOOL/$TESTFS1@3 | zfs receive $TESTPOOL/$TESTFS2" log_mustnot eval "zfs send -w -i $TESTPOOL/$TESTFS2#b2" \ "$TESTPOOL/$TESTFS2@3 | zfs receive $TESTPOOL/$TESTFS3" log_pass "Mixing raw and non-raw receives fail as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_holds.ksh0000644000000000000000000000007413607166133025775 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.943922453 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_holds.ksh0000755016037001603700000001363113607166133026001 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright (c) 2018 Datto, Inc. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verify 'zfs send' can send dataset holds. # Verify 'zfs receive' can receive dataset holds. # # STRATEGY: # 1. Create a snapshot. # 2. Create a full send stream with the fs, including holds. # 3. Receive the send stream and verify the data integrity. # 4. Fill in fs with some new data. # 5. Create an incremental send stream with the fs, including holds. # 6. Receive the incremental send stream and verify the data integrity. # 7. Verify the holds have been received as expected. # 8. Create an incremental snap with no holds, and send that with -h. # 9. Confirm the snapshot was received as expected. # 10. Create an incremental snapshot and place a hold on it. # 11. Receive the incremental stream with -h and verify holds skipped. # verify_runnable "both" function cleanup { eval "zfs holds $init_snap |grep -q hold1-1" && log_must zfs release hold1-1 $init_snap eval "zfs holds $init_snap |grep -q hold1-2" && log_must zfs release hold1-2 $init_snap eval "zfs holds $recv_snap |grep -q hold1-1" && log_must zfs release hold1-1 $recv_snap eval "zfs holds $recv_snap |grep -q hold1-2" && log_must zfs release hold1-2 $recv_snap eval "zfs holds $inc_snap |grep -q hold2-1" && log_must zfs release hold2-1 $inc_snap eval "zfs holds $recv_inc_snap |grep -q hold2-1" && log_must zfs release hold2-1 $recv_inc_snap eval "zfs holds $inc_snap3 |grep -q hold3-1" && log_must zfs release hold3-1 $inc_snap3 # destroy datasets datasetexists $recv_root/$TESTFS1 && log_must destroy_dataset "$recv_root/$TESTFS1" "-Rf" datasetexists $recv_root && log_must destroy_dataset "$recv_root" "-Rf" datasetexists $TESTPOOL/$TESTFS1 && log_must destroy_dataset "$TESTPOOL/$TESTFS1" "-Rf" [[ -e $full_bkup ]] && log_must rm -f $full_bkup [[ -e $inc_bkup ]] && log_must rm -f $inc_bkup [[ -e $inc_data2 ]] && log_must rm -f $inc_data2 [[ -d $TESTDIR1 ]] && log_must rm -rf $TESTDIR1 } # # Check if hold exists on the specified dataset. # function check_hold # { typeset dataset=$1 typeset hold=$2 log_note "checking $dataset for $hold" eval "zfs holds $dataset |grep -q $hold" } log_assert "Verify 'zfs send/recv' can send and receive dataset holds." log_onexit cleanup init_snap=$TESTPOOL/$TESTFS1@init_snap inc_snap=$TESTPOOL/$TESTFS1@inc_snap inc_snap2=$TESTPOOL/$TESTFS1@inc_snap2 inc_snap3=$TESTPOOL/$TESTFS1@inc_snap3 full_bkup=$TEST_BASE_DIR/fullbkup.$$ inc_bkup=$TEST_BASE_DIR/incbkup.$$ init_data=$TESTDIR/$TESTFILE1 inc_data=$TESTDIR/$TESTFILE2 inc_data2=$TESTDIR/testfile3 recv_root=$TESTPOOL/rst_ctr recv_snap=$recv_root/$TESTFS1@init_snap recv_inc_snap=$recv_root/$TESTFS1@inc_snap recv_inc_snap2=$recv_root/$TESTFS1@inc_snap2 recv_inc_snap3=$recv_root/$TESTFS1@inc_snap3 recv_data=$TESTDIR1/$TESTFS1/$TESTFILE1 recv_inc_data=$TESTDIR1/$TESTFS1/$TESTFILE2 recv_inc_data2=$TESTDIR1/$TESTFS1/testfile3 log_note "Verify 'zfs send' can create full send stream." # Preparation if ! datasetexists $TESTPOOL/$TESTFS1; then log_must zfs create $TESTPOOL/$TESTFS1 fi [[ -e $init_data ]] && log_must rm -f $init_data log_must zfs create $recv_root [[ ! -d $TESTDIR1 ]] && log_must mkdir -p $TESTDIR1 [[ ! -d $TESTDIR ]] && log_must mkdir -p $TESTDIR log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS1 log_must zfs set mountpoint=$TESTDIR1 $recv_root file_write -o create -f $init_data -b $BLOCK_SIZE -c $WRITE_COUNT log_must zfs snapshot $init_snap log_must zfs hold hold1-1 $init_snap log_must zfs hold hold1-2 $init_snap log_must eval "zfs send -h $init_snap > $full_bkup" log_note "Verify the send stream is valid to receive." log_must zfs recv -F $recv_snap <$full_bkup log_must datasetexists $recv_snap receive_check $recv_snap ${recv_snap%%@*} log_note "Verify the holds were received." log_must check_hold $recv_snap hold1-1 log_must check_hold $recv_snap hold1-2 compare_cksum $init_data $recv_data log_note "Verify 'zfs send -i' can create incremental send stream." file_write -o create -f $inc_data -b $BLOCK_SIZE -c $WRITE_COUNT -d 0 log_must zfs snapshot $inc_snap log_must zfs hold hold2-1 $inc_snap log_must eval "zfs send -h -i $init_snap $inc_snap > $inc_bkup" log_note "Verify the incremental send stream is valid to receive." log_must zfs recv -F $recv_inc_snap <$inc_bkup log_must datasetexists $recv_inc_snap log_note "Verify the hold was received from the incremental send." log_must check_hold $recv_inc_snap hold2-1 compare_cksum $inc_data $recv_inc_data log_note "Verify send -h works when there are no holds." file_write -o create -f $inc_data2 -b $BLOCK_SIZE -c $WRITE_COUNT -d 0 log_must zfs snapshot $inc_snap2 log_must eval "zfs send -h -i $inc_snap $inc_snap2 > $inc_bkup" log_must zfs recv -F $recv_inc_snap2 <$inc_bkup log_must datasetexists $recv_inc_snap2 compare_cksum $inc_data2 $recv_inc_data2 log_note "Verify send -h fails properly when receive dataset already exists" log_must zfs recv -F $recv_inc_snap2 <$inc_bkup log_note "Verify recv -h skips the receive of holds" log_must zfs snapshot $inc_snap3 log_must zfs hold hold3-1 $inc_snap3 log_must eval "zfs send -h -i $inc_snap2 $inc_snap3 > $inc_bkup" log_must zfs recv -F -h $recv_inc_snap3 <$inc_bkup log_must datasetexists $recv_inc_snap3 log_mustnot check_hold $recv_inc_snap3 hold3-1 log_pass "'zfs send/recv' can send and receive dataset holds." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_006_pos.ksh0000644000000000000000000000007413607166133026234 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.855919629 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_006_pos.ksh0000755016037001603700000000411113607166133026231 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # Rename snapshot name will not change the dependent order. # # STRATEGY: # 1. Set up a set of datasets. # 2. Rename part of snapshots. # 3. Send -R all the POOL # 4. Verify snapshot name will not change the dependent order. # verify_runnable "both" # Source Target # set -A snaps "$POOL@init" "$POOL@snap0" \ "$POOL@snapA" "$POOL@snap1" \ "$POOL@snapC" "$POOL@snap2" \ "$POOL@final" "$POOL@init" function cleanup { log_must cleanup_pool $POOL log_must cleanup_pool $POOL2 log_must setup_test_model $POOL } log_assert "Rename snapshot name will not change the dependent order." log_onexit cleanup typeset -i i=0 while ((i < ${#snaps[@]})); do log_must zfs rename -r ${snaps[$i]} ${snaps[((i+1))]} ((i += 2)) done # # Duplicate POOL2 for testing # log_must eval "zfs send -R $POOL@init > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" dstds=$(get_dst_ds $POOL $POOL2) log_must cmp_ds_subs $POOL $dstds log_must cmp_ds_cont $POOL $dstds log_pass "Rename snapshot name will not change the dependent order." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_022_pos.ksh0000644000000000000000000000007413612141513026221 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.883920527 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_022_pos.ksh0000755016037001603700000000364713612141513026233 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify resumability of an incremental ZFS send/receive with ZFS bookmarks in # the presence of a corrupted stream. # # Strategy: # 1. Bookmark a ZFS snapshot # 2. Destroy the ZFS snapshot # 3. Destroy the filesystem for the receive # 4. Verify receive of the full send stream # 5. Start an incremental ZFS send of the ZFS bookmark, redirect output to a # file # 6. Mess up the contents of the stream state file on disk # 7. Try ZFS receive, which should fail with a checksum mismatch error # 8. ZFS send to the stream state file again using the receive_resume_token # 9. ZFS receive and verify the receive completes successfully # verify_runnable "both" log_assert "Verify resumability of an incremental ZFS send/receive with ZFS " \ "bookmarks" sendfs=$POOL/sendfs recvfs=$POOL2/recvfs streamfs=$POOL/stream log_onexit resume_cleanup $sendfs $streamfs test_fs_setup $sendfs $recvfs $streamfs log_must zfs bookmark $sendfs@a $sendfs#bm_a log_must_busy zfs destroy $sendfs@a log_must zfs receive -v $recvfs $BACKDIR/full" log_must eval "zfs recv -d $POOL2 <$BACKDIR/full" verify_stream_size $BACKDIR/full $vol verify_stream_size $BACKDIR/full $vol2 md5=$(dd if=$voldev2 bs=1024k count=$megs 2>/dev/null | md5digest) [[ $md5 = $md5_1 ]] || log_fail "md5 mismatch: $md5 != $md5_1" # Repeat, for an incremental send log_must dd seek=$megs if=$data2 of=$voldev bs=1024k log_must zfs snapshot $vol@snap2 log_must eval "zfs send -c -i snap $vol@snap2 >$BACKDIR/inc" log_must eval "zfs recv -d $POOL2 <$BACKDIR/inc" verify_stream_size $BACKDIR/inc $vol 90 $vol@snap verify_stream_size $BACKDIR/inc $vol2 90 $vol2@snap md5=$(dd skip=$megs if=$voldev2 bs=1024k count=$megs 2>/dev/null | md5digest) [[ $md5 = $md5_2 ]] || log_fail "md5 mismatch: $md5 != $md5_2" log_pass "Verify compressed send works with volumes" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_encrypted_truncated_files.ks0000644000000000000000000000007413607166147031751 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.895920913 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_encrypted_truncated_files.ksh0000755016037001603700000000762113607166147032127 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 by Datto Inc. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # # # STRATEGY: # 1. Create a new encrypted filesystem # 2. Add a 4 files that are to be truncated later # 3. Take a snapshot of the filesystem # 4. Truncate one of the files from 32M to 128k # 5. Truncate one of the files from 512k to 384k # 6. Truncate one of the files from 512k to 0 to 384k via reallocation # 7. Truncate one of the files from 1k to 0 to 512b via reallocation # 8. Take another snapshot of the filesystem # 9. Send and receive both snapshots # 10. Mount the filesystem and check the contents # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 datasetexists $TESTPOOL/recv && \ log_must zfs destroy -r $TESTPOOL/recv [[ -f $keyfile ]] && log_must rm $keyfile [[ -f $sendfile ]] && log_must rm $sendfile } log_onexit cleanup function recursive_cksum { find $1 -type f -exec sha256sum {} \; | \ sort -k 2 | awk '{ print $1 }' | sha256sum } log_assert "Verify 'zfs send -w' works with many different file layouts" typeset keyfile=/$TESTPOOL/pkey typeset sendfile=/$TESTPOOL/sendfile typeset sendfile2=/$TESTPOOL/sendfile2 # Create an encrypted dataset log_must eval "echo 'password' > $keyfile" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file://$keyfile $TESTPOOL/$TESTFS2 # Explicitly set the recordsize since the truncation sizes below depend on # this value being 128k. This is currently same as the default recordsize. log_must zfs set recordsize=128k $TESTPOOL/$TESTFS2 # Create files with varied layouts on disk log_must mkfile 32M /$TESTPOOL/$TESTFS2/truncated log_must mkfile 524288 /$TESTPOOL/$TESTFS2/truncated2 log_must mkfile 524288 /$TESTPOOL/$TESTFS2/truncated3 log_must mkfile 1024 /$TESTPOOL/$TESTFS2/truncated4 log_must zfs snapshot $TESTPOOL/$TESTFS2@snap1 # # Truncate files created in the first snapshot. The first tests # truncating a large file to a single block. The second tests # truncating one block off the end of a file without changing # the required nlevels to hold it. The third tests handling # of a maxblkid that is dropped and then raised again. The # fourth tests an object that is truncated from a single block # to a smaller single block. # log_must truncate -s 131072 /$TESTPOOL/$TESTFS2/truncated log_must truncate -s 393216 /$TESTPOOL/$TESTFS2/truncated2 log_must rm -f /$TESTPOOL/$TESTFS2/truncated3 log_must rm -f /$TESTPOOL/$TESTFS2/truncated4 log_must zpool sync $TESTPOOL log_must zfs umount $TESTPOOL/$TESTFS2 log_must zfs mount $TESTPOOL/$TESTFS2 log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS2/truncated3 \ bs=128k count=3 iflag=fullblock log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS2/truncated4 \ bs=512 count=1 iflag=fullblock log_must zfs snapshot $TESTPOOL/$TESTFS2@snap2 expected_cksum=$(recursive_cksum /$TESTPOOL/$TESTFS2) log_must eval "zfs send -wp $TESTPOOL/$TESTFS2@snap1 > $sendfile" log_must eval "zfs send -wp -i @snap1 $TESTPOOL/$TESTFS2@snap2 > $sendfile2" log_must eval "zfs recv -F $TESTPOOL/recv < $sendfile" log_must eval "zfs recv -F $TESTPOOL/recv < $sendfile2" log_must zfs load-key $TESTPOOL/recv log_must zfs mount -a actual_cksum=$(recursive_cksum /$TESTPOOL/recv) [[ "$expected_cksum" != "$actual_cksum" ]] && \ log_fail "Recursive checksums differ ($expected_cksum != $actual_cksum)" log_pass "Verified 'zfs send -w' works with many different file layouts" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_encrypted_hierarchy.ksh0000644000000000000000000000007413607166133030717 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.890920751 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_encrypted_hierarchy.ksh0000755016037001603700000000607613607166133030730 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Datto Inc. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # Raw recursive sends preserve filesystem structure. # # STRATEGY: # 1. Create an encrypted filesystem with a clone and a child # 2. Snapshot and send the filesystem tree # 3. Verify that the filesystem structure was correctly received # 4. Change the child to an encryption root and promote the clone # 5. Snapshot and send the filesystem tree again # 6. Verify that the new structure is received correctly # verify_runnable "both" function cleanup { log_must cleanup_pool $POOL log_must cleanup_pool $POOL2 log_must setup_test_model $POOL } log_assert "Raw recursive sends preserve filesystem structure." log_onexit cleanup # Create the filesystem hierarchy log_must cleanup_pool $POOL log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase $POOL/$FS" log_must zfs snapshot $POOL/$FS@snap log_must zfs clone $POOL/$FS@snap $POOL/clone log_must zfs create $POOL/$FS/child # Back up the tree and verify the structure log_must zfs snapshot -r $POOL@before log_must eval "zfs send -wR $POOL@before > $BACKDIR/fs-before-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/fs-before-R" dstds=$(get_dst_ds $POOL/$FS $POOL2) log_must cmp_ds_subs $POOL/$FS $dstds log_must verify_encryption_root $POOL/$FS $POOL/$FS log_must verify_keylocation $POOL/$FS "prompt" log_must verify_origin $POOL/$FS "-" log_must verify_encryption_root $POOL/clone $POOL/$FS log_must verify_keylocation $POOL/clone "none" log_must verify_origin $POOL/clone "$POOL/$FS@snap" log_must verify_encryption_root $POOL/$FS/child $POOL/$FS log_must verify_keylocation $POOL/$FS/child "none" # Alter the hierarchy and re-send log_must eval "echo $PASSPHRASE1 | zfs change-key -o keyformat=passphrase" \ "$POOL/$FS/child" log_must zfs promote $POOL/clone log_must zfs snapshot -r $POOL@after log_must eval "zfs send -wR -i $POOL@before $POOL@after >" \ "$BACKDIR/fs-after-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/fs-after-R" log_must cmp_ds_subs $POOL/$FS $dstds log_must verify_encryption_root $POOL/$FS $POOL/clone log_must verify_keylocation $POOL/$FS "none" log_must verify_origin $POOL/$FS "$POOL/clone@snap" log_must verify_encryption_root $POOL/clone $POOL/clone log_must verify_keylocation $POOL/clone "prompt" log_must verify_origin $POOL/clone "-" log_must verify_encryption_root $POOL/$FS/child $POOL/$FS/child log_must verify_keylocation $POOL/$FS/child "prompt" log_pass "Raw recursive sends preserve filesystem structure." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_011_pos.ksh0000644000000000000000000000007413612141513026217 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.866919981 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_011_pos.ksh0000755016037001603700000000612513612141513026223 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # Changes made by 'zfs inherit' can be properly received. # # STRATEGY: # 1. Inherit property for filesystem and volume # 2. Send and restore them in the target pool # 3. Verify all the datasets can be properly backup and receive # verify_runnable "both" function cleanup { log_must cleanup_pool $POOL log_must cleanup_pool $POOL2 log_must setup_test_model $POOL } log_assert "Verify changes made by 'zfs inherit' can be properly received." log_onexit cleanup # # Setting all the $FS properties as local value, # for prop in $(fs_inherit_prop); do value=$(get_prop $prop $POOL/$FS) log_must zfs set $prop=$value $POOL/$FS done # # Inherit properties in sub-datasets # for ds in "$POOL/$FS/fs1" "$POOL/$FS/fs1/fs2" "$POOL/$FS/fs1/fclone" ; do for prop in $(fs_inherit_prop) ; do zfs inherit $prop $ds if (($? !=0 )); then log_fail "zfs inherit $prop $ds" fi done done if is_global_zone ; then for prop in $(vol_inherit_prop) ; do zfs inherit $prop $POOL/$FS/vol if (($? !=0 )); then log_fail "zfs inherit $prop $POOL/$FS/vol" fi done fi # # Verify datasets can be backup and restore correctly # Unmount $POOL/$FS to avoid two fs mount in the same mountpoint # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-R" log_must zfs unmount -f $POOL/$FS log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-R" dstds=$(get_dst_ds $POOL $POOL2) # # Define all the POOL/POOL2 datasets pair # set -A pair "$POOL" "$dstds" \ "$POOL/$FS" "$dstds/$FS" \ "$POOL/$FS/fs1" "$dstds/$FS/fs1" \ "$POOL/$FS/fs1/fs2" "$dstds/$FS/fs1/fs2" \ "$POOL/pclone" "$dstds/pclone" \ "$POOL/$FS/fs1/fclone" "$dstds/$FS/fs1/fclone" if is_global_zone ; then typeset -i n=${#pair[@]} pair[((n))]="$POOL/vol"; pair[((n+1))]="$dstds/vol" pair[((n+2))]="$POOL/$FS/vol" pair[((n+3))]="$dstds/$FS/vol" fi # # Verify all the sub-datasets can be properly received. # log_must cmp_ds_subs $POOL $dstds typeset -i i=0 while ((i < ${#pair[@]})); do log_must cmp_ds_prop ${pair[$i]} ${pair[((i+1))]} ((i += 2)) done log_pass "Changes made by 'zfs inherit' can be properly received." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_encrypted_props.ksh0000644000000000000000000000007413612141517030077 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.893920849 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_encrypted_props.ksh0000755016037001603700000002171213612141517030102 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 by Datto Inc. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # Verify that zfs properly handles encryption properties when receiving # send streams. # # STRATEGY: # 1. Create a few unencrypted and encrypted test datasets with some data # 2. Take snapshots of these datasets in preparation for sending # 3. Verify that 'zfs recv -o keylocation=prompt' fails # 4. Verify that 'zfs recv -x ' fails on a raw send stream # 5. Verify that encryption properties cannot be changed on incrementals # 6. Verify that a simple send can be received as an encryption root # 7. Verify that an unencrypted props send can be received as an # encryption root # 8. Verify that an unencrypted recursive send can be received as an # encryption root # 9. Verify that an unencrypted props send can be received as an # encryption child # 10. Verify that an unencrypted recursive send can be received as an # encryption child # verify_runnable "both" function cleanup { destroy_dataset $TESTPOOL/recv "-r" destroy_dataset $TESTPOOL/crypt "-r" destroy_dataset $TESTPOOL/ds "-r" [[ -f $sendfile ]] && log_must rm $sendfile [[ -f $keyfile ]] && log_must rm $keyfile } log_onexit cleanup log_assert "'zfs recv' must properly handle encryption properties" typeset keyfile=/$TESTPOOL/pkey typeset sendfile=/$TESTPOOL/sendfile typeset snap=$TESTPOOL/ds@snap1 typeset snap2=$TESTPOOL/ds@snap2 typeset esnap=$TESTPOOL/crypt@snap1 typeset esnap2=$TESTPOOL/crypt@snap2 log_must eval "echo 'password' > $keyfile" log_must zfs create $TESTPOOL/ds log_must zfs create $TESTPOOL/ds/ds1 log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file://$keyfile $TESTPOOL/crypt log_must zfs create $TESTPOOL/crypt/ds1 log_must zfs create -o keyformat=passphrase -o keylocation=file://$keyfile \ $TESTPOOL/crypt/ds2 log_must mkfile 1M /$TESTPOOL/ds/$TESTFILE0 log_must cp /$TESTPOOL/ds/$TESTFILE0 /$TESTPOOL/crypt/$TESTFILE0 typeset cksum=$(md5digest /$TESTPOOL/ds/$TESTFILE0) log_must zfs snap -r $snap log_must zfs snap -r $snap2 log_must zfs snap -r $esnap log_must zfs snap -r $esnap2 # Embedded data is incompatible with encrypted datasets, so we cannot # allow embedded streams to be received. log_note "Must not be able to receive an embedded stream as encrypted" log_mustnot eval "zfs send -e $TESTPOOL/crypt/ds1 | zfs recv $TESTPOOL/recv" # We currently don't have an elegant and secure way to pass the passphrase # in via prompt because the send stream itself is using stdin. log_note "Must not be able to use 'keylocation=prompt' on receive" log_must eval "zfs send $snap > $sendfile" log_mustnot eval "zfs recv -o encryption=on -o keyformat=passphrase" \ "$TESTPOOL/recv < $sendfile" log_mustnot eval "zfs recv -o encryption=on -o keyformat=passphrase" \ "-o keylocation=prompt $TESTPOOL/recv < $sendfile" # Raw sends do not have access to the decrypted data so we cannot override # the encryption settings without losing the data. log_note "Must not be able to disable encryption properties on raw send" log_must eval "zfs send -w $esnap > $sendfile" log_mustnot eval "zfs recv -x encryption $TESTPOOL/recv < $sendfile" log_mustnot eval "zfs recv -x keyformat $TESTPOOL/recv < $sendfile" log_mustnot eval "zfs recv -x pbkdf2iters $TESTPOOL/recv < $sendfile" # Encryption properties are set upon creating the dataset. Changing them # afterwards requires using 'zfs change-key' or an update from a raw send. log_note "Must not be able to change encryption properties on incrementals" log_must eval "zfs send $esnap | zfs recv -o encryption=on" \ "-o keyformat=passphrase -o keylocation=file://$keyfile $TESTPOOL/recv" log_mustnot eval "zfs send -i $esnap $esnap2 |" \ "zfs recv -o encryption=aes-128-ccm $TESTPOOL/recv" log_mustnot eval "zfs send -i $esnap $esnap2 |" \ "zfs recv -o keyformat=hex $TESTPOOL/recv" log_mustnot eval "zfs send -i $esnap $esnap2 |" \ "zfs recv -o pbkdf2iters=100k $TESTPOOL/recv" log_must zfs destroy -r $TESTPOOL/recv # Test that we can receive a simple stream as an encryption root. log_note "Must be able to receive stream as encryption root" ds=$TESTPOOL/recv log_must eval "zfs send $snap > $sendfile" log_must eval "zfs recv -o encryption=on -o keyformat=passphrase" \ "-o keylocation=file://$keyfile $ds < $sendfile" log_must test "$(get_prop 'encryption' $ds)" == "aes-256-ccm" log_must test "$(get_prop 'encryptionroot' $ds)" == "$ds" log_must test "$(get_prop 'keyformat' $ds)" == "passphrase" log_must test "$(get_prop 'keylocation' $ds)" == "file://$keyfile" log_must test "$(get_prop 'mounted' $ds)" == "yes" recv_cksum=$(md5digest /$ds/$TESTFILE0) log_must test "$recv_cksum" == "$cksum" log_must zfs destroy -r $ds # Test that we can override encryption properties on a properties stream # of an unencrypted dataset, turning it into an encryption root. log_note "Must be able to receive stream with props as encryption root" ds=$TESTPOOL/recv log_must eval "zfs send -p $snap > $sendfile" log_must eval "zfs recv -o encryption=on -o keyformat=passphrase" \ "-o keylocation=file://$keyfile $ds < $sendfile" log_must test "$(get_prop 'encryption' $ds)" == "aes-256-ccm" log_must test "$(get_prop 'encryptionroot' $ds)" == "$ds" log_must test "$(get_prop 'keyformat' $ds)" == "passphrase" log_must test "$(get_prop 'keylocation' $ds)" == "file://$keyfile" log_must test "$(get_prop 'mounted' $ds)" == "yes" recv_cksum=$(md5digest /$ds/$TESTFILE0) log_must test "$recv_cksum" == "$cksum" log_must zfs destroy -r $ds # Test that we can override encryption properties on a recursive stream # of an unencrypted dataset, turning it into an encryption root. The root # dataset of the stream should become an encryption root with all children # inheriting from it. log_note "Must be able to receive recursive stream as encryption root" ds=$TESTPOOL/recv log_must eval "zfs send -R $snap > $sendfile" log_must eval "zfs recv -o encryption=on -o keyformat=passphrase" \ "-o keylocation=file://$keyfile $ds < $sendfile" log_must test "$(get_prop 'encryption' $ds)" == "aes-256-ccm" log_must test "$(get_prop 'encryptionroot' $ds)" == "$ds" log_must test "$(get_prop 'keyformat' $ds)" == "passphrase" log_must test "$(get_prop 'keylocation' $ds)" == "file://$keyfile" log_must test "$(get_prop 'mounted' $ds)" == "yes" recv_cksum=$(md5digest /$ds/$TESTFILE0) log_must test "$recv_cksum" == "$cksum" log_must zfs destroy -r $ds # Test that we can override an unencrypted properties stream's encryption # settings, receiving it as an encrypted child. log_note "Must be able to receive stream with props to encrypted child" ds=$TESTPOOL/crypt/recv log_must eval "zfs send -p $snap > $sendfile" log_must eval "zfs recv -x encryption $ds < $sendfile" log_must test "$(get_prop 'encryptionroot' $ds)" == "$TESTPOOL/crypt" log_must test "$(get_prop 'encryption' $ds)" == "aes-256-ccm" log_must test "$(get_prop 'keyformat' $ds)" == "passphrase" log_must test "$(get_prop 'mounted' $ds)" == "yes" recv_cksum=$(md5digest /$ds/$TESTFILE0) log_must test "$recv_cksum" == "$cksum" log_must zfs destroy -r $ds # Test that we can override an unencrypted recursive stream's encryption # settings, receiving all datasets as encrypted children. log_note "Must be able to receive recursive stream to encrypted child" ds=$TESTPOOL/crypt/recv log_must eval "zfs send -R $snap > $sendfile" log_must eval "zfs recv -x encryption $ds < $sendfile" log_must test "$(get_prop 'encryptionroot' $ds)" == "$TESTPOOL/crypt" log_must test "$(get_prop 'encryption' $ds)" == "aes-256-ccm" log_must test "$(get_prop 'keyformat' $ds)" == "passphrase" log_must test "$(get_prop 'mounted' $ds)" == "yes" recv_cksum=$(md5digest /$ds/$TESTFILE0) log_must test "$recv_cksum" == "$cksum" log_must zfs destroy -r $ds # Test that we can override an unencrypted, incremental, recursive stream's # encryption settings, receiving all datasets as encrypted children. log_note "Must be able to receive recursive stream to encrypted child" ds=$TESTPOOL/crypt/recv log_must eval "zfs send -R $snap2 > $sendfile" log_must eval "zfs recv -x encryption $ds < $sendfile" log_must test "$(get_prop 'encryptionroot' $ds)" == "$TESTPOOL/crypt" log_must test "$(get_prop 'encryption' $ds)" == "aes-256-ccm" log_must test "$(get_prop 'keyformat' $ds)" == "passphrase" log_must test "$(get_prop 'mounted' $ds)" == "yes" recv_cksum=$(md5digest /$ds/$TESTFILE0) log_must test "$recv_cksum" == "$cksum" log_must zfs destroy -r $ds # Check that we haven't printed the key to the zpool history log log_mustnot eval "zpool history -i | grep -q 'wkeydata'" log_pass "'zfs recv' properly handles encryption properties" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_019_pos.ksh0000644000000000000000000000007413607166133026240 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.876920303 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_019_pos.ksh0000755016037001603700000000332113607166133026237 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify resumability of a full and incremental ZFS send/receive in the # presence of a corrupted stream. # # Strategy: # 1. Start a full ZFS send, redirect output to a file # 2. Mess up the contents of the stream state file on disk # 3. Try ZFS receive, which should fail with a checksum mismatch error # 4. ZFS send to the stream state file again using the receive_resume_token # 5. ZFS receive and verify the receive completes successfully # 6. Repeat steps on an incremental ZFS send # 7. Repeat the entire procedure for a dataset at the pool root # verify_runnable "both" log_assert "Verify resumability of a full and incremental ZFS send/receive " \ "in the presence of a corrupted stream" log_onexit resume_cleanup $sendfs $streamfs sendfs=$POOL/sendfs recvfs=$POOL3/recvfs streamfs=$POOL2/stream for sendfs in $POOL2/sendfs $POOL3; do test_fs_setup $sendfs $recvfs $streamfs resume_test "zfs send -v $sendfs@a" $streamfs $recvfs resume_test "zfs send -v -i @a $sendfs@b" $streamfs $recvfs file_check $sendfs $recvfs done log_pass "Verify resumability of a full and incremental ZFS send/receive " \ "in the presence of a corrupted stream" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-cpL_varied_recsize.ksh0000644000000000000000000000007413607166147030403 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.929922005 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-cpL_varied_recsize.ksh0000755016037001603700000001531213607166147030405 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify compressed send works correctly with datasets of varying recsize. # # Strategy: # 1. Check the recv behavior (into pools with features enabled and disabled) # of all combinations of -c -p and -L. Verify the stream is compressed, # and that the recsize property and that of a received file is correct # according to this matrix: # # +---------+--------+------------+------------+-----------+-----------+ # | send | send | received | received | received | received | # | stream | stream | file bs | prop | file bs | props | # | recsize | flags | (disabled) | (disabled) | (enabled) | (enabled) | # +---------+--------+------------+------------+-----------+-----------+ # | 128k | | 128k | 128k | 128k | 128k | # | 128k | -c | Fails | Fails | 128k | 128k | # | 128k | -p | 128k | 128k | 128k | 128k | # | 128k | -L | 128k | 128k | 128k | 128k | # | 128k | -cp | Fails | Fails | 128k | 128k | # | 128k | -cL | Fails | Fails | 128k | 128k | # | 128k | -pL | 128k | 128k | 128k | 128k | # | 128k | -cpL | Fails | Fails | 128k | 128k | # | 1m | | Fails | Fails | 128k | 128k | # | 1m | -c | Fails | Fails | 128k | 128k | # | 1m | -p | 128k | 128k | 128k | 1m | # | 1m | -L | Fails | Fails | 1m | 128k | # | 1m | -cp | Fails | Fails | 128k | 1m | # | 1m | -cL | Fails | Fails | 1m | 128k | # | 1m | -pL | Fails | Fails | 1m | 1m | # | 1m | -cpL | Fails | Fails | 1m | 1m | # +---------+--------+------------+------------+-----------+-----------+ # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/128k && log_must_busy zfs destroy $TESTPOOL/128k datasetexists $TESTPOOL/1m && log_must_busy zfs destroy $TESTPOOL/1m cleanup_pool $POOL2 destroy_pool $POOL3 } # For a received stream, verify the recsize (prop and file) match expectations. function check_recsize { typeset recv_ds=$1 typeset expected_file_bs=$2 typeset expected_recsize=$3 typeset file="$(get_prop mountpoint $recv_ds)/testfile" [[ -f $file ]] || log_fail "file '$file' doesn't exist" typeset read_recsize=$(get_prop recsize $recv_ds) typeset read_file_bs=$(stat $file | sed -n \ 's/.*IO Block: \([0-9]*\).*/\1/p') [[ $read_recsize = $expected_recsize ]] || log_fail \ "read_recsize: $read_recsize expected_recsize: $expected_recsize" [[ $read_file_bs = $expected_file_bs ]] || log_fail \ "read_file_bs: $read_file_bs expected_file_bs: $expected_file_bs" } # # This function does a zfs send and receive according to the parameters # below, and verifies the data shown in the strategy section. # # -[cpL] flags to pass through to 'zfs send' # -d Receive into a pool with all features disabled # # $1 The recordsize of the send dataset # $2 Whether or not the recv should work. # $3 The blocksize expected in a received file (default 128k) # $4 The recordsize property expected in a received dataset (default 128k) # function check { typeset recv_pool=$POOL2 typeset flags='-' while getopts "cdpL" opt; do case $opt in c) flags+='c' ;; d) recv_pool=$POOL3 ;; p) flags+='p' ;; L) flags+='L' ;; esac done shift $(($OPTIND - 1)) [[ ${#flags} -eq 1 ]] && flags='' typeset recsize=$1 typeset verify=$2 typeset expected_file_bs=${3-131072} typeset expected_recsize=${4-131072} typeset send_ds=$TESTPOOL/$recsize typeset send_snap=$send_ds@snap typeset recv_ds=$recv_pool/$recsize typeset stream=$BACKDIR/stream.out datasetexists $send_ds || log_fail "send ds: $send_ds doesn't exist" [[ -f $stream ]] && log_must rm $stream log_must eval "zfs send $flags $send_snap >$stream" $verify eval "zfs recv $recv_ds <$stream" typeset stream_size=$(cat $stream | zstreamdump | sed -n \ 's/ Total write size = \(.*\) (0x.*)/\1/p') # # Special case: For a send dataset with large blocks, don't try to # verify the stream size is correct if the compress flag is present # but the large blocks flag isn't. In these cases, the user data # isn't compressed in the stream (though metadata is) so the # verification would fail. # typeset do_size_test=true [[ $recsize = $large && $flags =~ 'c' && ! $flags =~ 'L' ]] && \ do_size_test=false $do_size_test && verify_stream_size $stream $send_ds if [[ $verify = "log_mustnot" ]]; then datasetnonexists $recv_ds || log_fail "$recv_ds shouldn't exist" return fi check_recsize $recv_ds $expected_file_bs $expected_recsize $do_size_test && verify_stream_size $stream $recv_ds log_must_busy zfs destroy -r $recv_ds } log_assert "Verify compressed send works with datasets of varying recsize." log_onexit cleanup typeset recsize opts dir typeset small=$((128 * 1024)) typeset large=$((1024 * 1024)) # Create POOL3 with features disabled and datasets to create test send streams datasetexists $POOL3 && log_must zpool destroy $POOL3 log_must zpool create -d $POOL3 $DISK3 write_compressible $BACKDIR 32m for recsize in $small $large; do log_must zfs create -o compress=gzip -o recsize=$recsize \ $TESTPOOL/$recsize dir=$(get_prop mountpoint $TESTPOOL/$recsize) log_must cp $BACKDIR/file.0 $dir/testfile log_must zfs snapshot $TESTPOOL/$recsize@snap done # Run tests for send streams without large blocks for opts in '' -d -c -p -dp -L -dL -cp -cL -pL -dpL -cpL; do check $opts $small log_must done for opts in -dc -dcp -dcL -dcpL; do check $opts $small log_mustnot done # Run tests for send streams with large blocks for opts in '' -d -dp -c; do check $opts $large log_must done for opts in -dc -dL -dcp -dcL -dpL -dcpL; do check $opts $large log_mustnot done check -p $large log_must $small $large check -L $large log_must $large $small check -cp $large log_must $small $large check -cL $large log_must $large $small check -pL $large log_must $large $large check -cpL $large log_must $large $large log_pass "Compressed send works with datasets of varying recsize." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_resume.ksh0000644000000000000000000000007413612141513026373 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.916921587 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_resume.ksh0000755016037001603700000000302213612141513026370 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify resumability of full and incremental ZFS send/receive with the -c # (compress) flag in the presence of a corrupted stream. # # Strategy: # 1. Start a full ZFS send with the -c flag (compress), redirect output to # a file # 2. Mess up the contents of the stream state file on disk # 3. Try ZFS receive, which should fail with a checksum mismatch error # 4. ZFS send to the stream state file again using the receive_resume_token # 5. ZFS receive and verify the receive completes successfully # 6. Repeat steps on an incremental ZFS send # verify_runnable "both" sendfs=$POOL/sendfs recvfs=$POOL2/recvfs streamfs=$POOL/stream log_assert "Verify compressed send streams can be resumed if interrupted" log_onexit resume_cleanup $sendfs $streamfs test_fs_setup $sendfs $recvfs $streamfs resume_test "zfs send -c -v $sendfs@a" $streamfs $recvfs resume_test "zfs send -c -v -i @a $sendfs@b" $streamfs $recvfs file_check $sendfs $recvfs log_pass "Compressed send streams can be resumed if interrupted" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_props.ksh0000644000000000000000000000007413607166133026247 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.908921329 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_props.ksh0000755016037001603700000000347413607166133026257 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib . $STF_SUITE/include/properties.shlib # # Description: # Verify compressed send streams can still preserve properties # # Strategy: # 1. Randomly modify the properties in the src pool # 2. Send a full compressed stream with -p to preserve properties # 3. Verify all the received properties match the source datasets # 4. Repeat the process with -R instead of -p # verify_runnable "global" function cleanup { destroy_pool $POOL destroy_pool $POOL2 log_must zpool create $POOL $DISK1 log_must zpool create $POOL2 $DISK2 log_must setup_test_model $POOL } log_assert "Compressed send doesn't interfere with preservation of properties" log_onexit cleanup typeset -a datasets=("" "/pclone" "/$FS" "/$FS/fs1" "/$FS/fs1/fs2" "/$FS/fs1/fclone" "/vol" "/$FS/vol") typeset ds for opt in "-p" "-R"; do for ds in ${datasets[@]}; do randomize_ds_props $POOL$ds done log_must eval "zfs send -c $opt $POOL@final > $BACKDIR/pool-final$opt" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final$opt" for ds in ${datasets[@]}; do log_must cmp_ds_prop $POOL$ds $POOL2$ds log_must cmp_ds_prop $POOL$ds@final $POOL2$ds@final done # Don't cleanup the second time, since we do that on exit anyway. [[ $opt = "-p" ]] && cleanup done log_pass "Compressed send doesn't interfere with preservation of properties" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_005_pos.ksh0000644000000000000000000000007413607166133026233 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.853919563 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_005_pos.ksh0000755016037001603700000000620013607166133026231 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # zfs send -R -I send all the incremental between fs@init with fs@final # # STRATEGY: # 1. Setup test model # 2. Send -R -I @init @final on pool # 3. Destroy all the snapshots which is later than @init # 4. Verify receive can restore all the snapshots and data # 5. Do the same test on filesystem and volume # verify_runnable "both" log_assert "zfs send -R -I send all the incremental between @init with @final" log_onexit cleanup_pool $POOL2 # # Duplicate POOL2 for testing # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" if is_global_zone ; then # # Testing send -R -I from pool # log_must eval "zfs send -R -I @init $POOL2@final > " \ "$BACKDIR/pool-init-final-IR" list=$(getds_with_suffix $POOL2 @snapA) list="$list $(getds_with_suffix $POOL2 @snapB)" list="$list $(getds_with_suffix $POOL2 @snapC)" list="$list $(getds_with_suffix $POOL2 @final)" log_must destroy_tree $list log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-init-final-IR" log_must cmp_ds_cont $POOL $POOL2 fi dstds=$(get_dst_ds $POOL $POOL2) # # Testing send -R -I from filesystem # log_must eval "zfs send -R -I @init $dstds/$FS@final > " \ "$BACKDIR/fs-init-final-IR" list=$(getds_with_suffix $dstds/$FS @snapA) list="$list $(getds_with_suffix $dstds/$FS @snapB)" list="$list $(getds_with_suffix $dstds/$FS @snapC)" list="$list $(getds_with_suffix $dstds/$FS @final)" log_must destroy_tree $list if is_global_zone ; then log_must eval "zfs receive -d -F $dstds < $BACKDIR/fs-init-final-IR" else zfs receive -d -F $dstds < $BACKDIR/fs-init-final-IR fi log_must cmp_ds_subs $POOL $dstds log_must cmp_ds_cont $POOL $dstds if is_global_zone ; then # # Testing send -I -R for volume # vol=$POOL2/$FS/vol log_must eval "zfs send -R -I @init $vol@final > " \ "$BACKDIR/vol-init-final-IR" log_must destroy_tree $vol@snapB $vol@snapC $vol@final log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/vol-init-final-IR" log_must cmp_ds_subs $POOL $POOL2 log_must cmp_ds_cont $POOL $POOL2 fi log_pass "zfs send -R -I send all the incremental between @init with @final" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_spill_block.ksh0000644000000000000000000000007413607166147027166 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.940922357 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_spill_block.ksh0000755016037001603700000001152613607166147027173 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2019 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify spill blocks are correctly preserved. # # Strategy: # 1) Create a set of files each containing some file data. # 2) Add enough xattrs to the file to require a spill block. # 3) Snapshot and send these files to a new dataset. # 4) Modify the files and spill blocks in a variety of ways. # 5) Send the changes using an incremental send stream. # 6) Verify that all the xattrs (and thus the spill block) were # preserved when receiving the incremental stream. # verify_runnable "both" log_assert "Verify spill blocks are correctly preserved" function cleanup { rm -f $BACKDIR/fs@* destroy_dataset $POOL/fs "-rR" destroy_dataset $POOL/newfs "-rR" } attrvalue="abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" log_onexit cleanup log_must zfs create $POOL/fs log_must zfs set xattr=sa $POOL/fs log_must zfs set dnodesize=legacy $POOL/fs log_must zfs set recordsize=128k $POOL/fs # Create 40 files each with a spill block containing xattrs. Each file # will be modified in a different way to validate the incremental receive. for i in {1..40}; do file="/$POOL/fs/file$i" log_must mkfile 16384 $file for j in {1..20}; do log_must attr -qs "testattr$j" -V "$attrvalue" $file done done # Snapshot the pool and send it to the new dataset. log_must zfs snapshot $POOL/fs@snap1 log_must eval "zfs send -e $POOL/fs@snap1 >$BACKDIR/fs@snap1" log_must eval "zfs recv $POOL/newfs < $BACKDIR/fs@snap1" # # Modify file[1-6]'s contents but not the spill blocks. # # file1 - Increase record size; single block # file2 - Increase record size; multiple blocks # file3 - Truncate file to zero size; single block # file4 - Truncate file to smaller size; single block # file5 - Truncate file to much larger size; add holes # file6 - Truncate file to embedded size; embedded data # log_must mkfile 32768 /$POOL/fs/file1 log_must mkfile 1048576 /$POOL/fs/file2 log_must truncate -s 0 /$POOL/fs/file3 log_must truncate -s 8192 /$POOL/fs/file4 log_must truncate -s 1073741824 /$POOL/fs/file5 log_must truncate -s 50 /$POOL/fs/file6 # # Modify file[11-16]'s contents and their spill blocks. # # file11 - Increase record size; single block # file12 - Increase record size; multiple blocks # file13 - Truncate file to zero size; single block # file14 - Truncate file to smaller size; single block # file15 - Truncate file to much larger size; add holes # file16 - Truncate file to embedded size; embedded data # log_must mkfile 32768 /$POOL/fs/file11 log_must mkfile 1048576 /$POOL/fs/file12 log_must truncate -s 0 /$POOL/fs/file13 log_must truncate -s 8192 /$POOL/fs/file14 log_must truncate -s 1073741824 /$POOL/fs/file15 log_must truncate -s 50 /$POOL/fs/file16 for i in {11..20}; do log_must attr -qr testattr1 /$POOL/fs/file$i done # # Modify file[21-26]'s contents and remove their spill blocks. # # file21 - Increase record size; single block # file22 - Increase record size; multiple blocks # file23 - Truncate file to zero size; single block # file24 - Truncate file to smaller size; single block # file25 - Truncate file to much larger size; add holes # file26 - Truncate file to embedded size; embedded data # log_must mkfile 32768 /$POOL/fs/file21 log_must mkfile 1048576 /$POOL/fs/file22 log_must truncate -s 0 /$POOL/fs/file23 log_must truncate -s 8192 /$POOL/fs/file24 log_must truncate -s 1073741824 /$POOL/fs/file25 log_must truncate -s 50 /$POOL/fs/file26 for i in {21..30}; do for j in {1..20}; do log_must attr -qr testattr$j /$POOL/fs/file$i done done # # Modify file[31-40]'s spill blocks but not the file contents. # for i in {31..40}; do file="/$POOL/fs/file$i" log_must attr -qr testattr$(((RANDOM % 20) + 1)) $file log_must attr -qs testattr$(((RANDOM % 20) + 1)) -V "$attrvalue" $file done # Calculate the expected recursive checksum for the source. expected_cksum=$(recursive_cksum /$POOL/fs) # Snapshot the pool and send the incremental snapshot. log_must zfs snapshot $POOL/fs@snap2 log_must eval "zfs send -e -i $POOL/fs@snap1 $POOL/fs@snap2 >$BACKDIR/fs@snap2" log_must eval "zfs recv -F $POOL/newfs < $BACKDIR/fs@snap2" # Validate the received copy using the received recursive checksum. actual_cksum=$(recursive_cksum /$POOL/newfs) if [[ "$expected_cksum" != "$actual_cksum" ]]; then log_fail "Checksums differ ($expected_cksum != $actual_cksum)" fi log_pass "Verify spill blocks are correctly preserved" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_verify_contents.ksh0000644000000000000000000000007413607166133030325 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.920921715 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_verify_contents.ksh0000755016037001603700000000324413607166133030330 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify compressed send streams replicate data and datasets # # Strategy: # 1. Back up all the data from POOL/FS # 2. Verify all the datasets and data can be recovered in POOL2 # 3. Back up all the data from root filesystem POOL2 # 4. Verify all the data can be recovered, too # verify_runnable "both" log_assert "zfs send -c -R send replication stream up to the named snap." log_onexit cleanup_pool $POOL2 # Verify the entire pool and descendants can be backed up and restored. log_must eval "zfs send -c -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" dstds=$(get_dst_ds $POOL $POOL2) log_must cmp_ds_subs $POOL $dstds log_must cmp_ds_cont $POOL $dstds # Cleanup POOL2 log_must cleanup_pool $POOL2 # Verify all the filesystems and descendants can be backed up and restored. log_must eval "zfs send -c -R $POOL/$FS@final > $BACKDIR/fs-final-R" log_must eval "zfs receive -d $POOL2 < $BACKDIR/fs-final-R" dstds=$(get_dst_ds $POOL/$FS $POOL2) log_must cmp_ds_subs $POOL/$FS $dstds log_must cmp_ds_cont $POOL/$FS $dstds log_pass "zfs send -c -R send replication stream up to the named snap." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_020_pos.ksh0000644000000000000000000000007413607166133026230 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.878920367 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_020_pos.ksh0000755016037001603700000000273713607166133026241 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify resumability of a full ZFS send/receive with the -D (dedup) flag in # the presence of a corrupted stream. # # Strategy: # 1. Start a full ZFS send with the -D flag (dedup), redirect output to a file # 2. Mess up the contents of the stream state file on disk # 3. Try ZFS receive, which should fail with a checksum mismatch error # 4. ZFS send to the stream state file again using the receive_resume_token # 5. ZFS receive and verify the receive completes successfully # verify_runnable "both" log_assert "Verify resumability of full ZFS send/receive with the -D " \ "(dedup) flag" sendfs=$POOL/sendfs recvfs=$POOL2/recvfs streamfs=$POOL/stream log_onexit resume_cleanup $sendfs $streamfs test_fs_setup $sendfs $recvfs $streamfs resume_test "zfs send -D -v $sendfs@a" $streamfs $recvfs file_check $sendfs $recvfs log_pass "Verify resumability of full ZFS send/receive with the -D " \ "(dedup) flag" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147025205 xustar000000000000000030 atime=1579730440.935509446 30 ctime=1579730484.952922743 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/Makefile.am0000644016037001603700000000245613607166147025211 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/rsend dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ rsend_001_pos.ksh \ rsend_002_pos.ksh \ rsend_003_pos.ksh \ rsend_004_pos.ksh \ rsend_005_pos.ksh \ rsend_006_pos.ksh \ rsend_007_pos.ksh \ rsend_008_pos.ksh \ rsend_009_pos.ksh \ rsend_010_pos.ksh \ rsend_011_pos.ksh \ rsend_012_pos.ksh \ rsend_013_pos.ksh \ rsend_014_pos.ksh \ rsend_019_pos.ksh \ rsend_020_pos.ksh \ rsend_021_pos.ksh \ rsend_022_pos.ksh \ rsend_024_pos.ksh \ send_encrypted_files.ksh \ send_encrypted_hierarchy.ksh \ send_encrypted_props.ksh \ send_encrypted_truncated_files.ksh \ send-cD.ksh \ send-c_embedded_blocks.ksh \ send-c_incremental.ksh \ send-c_lz4_disabled.ksh \ send-c_mixed_compression.ksh \ send-c_props.ksh \ send-c_recv_dedup.ksh \ send-c_recv_lz4_disabled.ksh \ send-c_resume.ksh \ send-c_stream_size_estimate.ksh \ send-c_verify_contents.ksh \ send-c_verify_ratio.ksh \ send-c_volume.ksh \ send-c_zstreamdump.ksh \ send-cpL_varied_recsize.ksh \ send_freeobjects.ksh \ send_realloc_dnode_size.ksh \ send_realloc_files.ksh \ send_realloc_encrypted_files.ksh \ send_spill_block.ksh \ send_holds.ksh \ send_hole_birth.ksh \ send_mixed_raw.ksh \ send-wDR_encrypted_zvol.ksh dist_pkgdata_DATA = \ rsend.cfg \ rsend.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_recv_dedup.ksh0000644000000000000000000000007413607166133027224 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.911921427 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_recv_dedup.ksh0000755016037001603700000000316613607166133027232 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify that we can receive a compressed stream into a deduped filesystem. # # Strategy: # 1. Write heavily duplicated data to a filesystem and create a compressed # full stream. # 2. Verify that the stream can be received correctly into a dedup=verify # filesystem. # verify_runnable "both" log_pass "Verify a compressed stream can be received into a deduped filesystem" log_onexit cleanup_pool $POOL2 typeset sendfs=$POOL2/sendfs typeset recvfs=$POOL2/recvfs typeset stream0=$BACKDIR/stream.0 typeset stream1=$BACKDIR/stream.1 typeset inc=$BACKDIR/stream.inc log_must zfs create -o compress=lz4 $sendfs log_must zfs create -o compress=lz4 -o dedup=verify $recvfs typeset dir=$(get_prop mountpoint $sendfs) for i in {0..10}; do log_must file_write -o overwrite -f $dir/file.$i -d R -b 4096 -c 1000 done log_must zfs snapshot $sendfs@snap0 log_must eval "zfs send -c $sendfs@snap0 >$stream0" # Finally, make sure the receive works correctly. log_must eval "zfs recv -d $recvfs <$stream0" cmp_ds_cont $sendfs $recvfs log_pass "The compressed stream could be received into a deduped filesystem" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025013 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.839919115 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/setup.ksh0000755016037001603700000000242213607166133025013 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib verify_runnable "both" verify_disk_count "$DISKS" 2 if is_global_zone ; then log_must zpool create $POOL $DISK1 log_must zpool create $POOL2 $DISK2 log_must zpool create $POOL3 $DISK3 fi log_must mkdir $BACKDIR $TESTDIR log_must setup_test_model $POOL log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025302 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.841919179 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/cleanup.ksh0000755016037001603700000000242213607166133025302 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib verify_runnable "both" if is_global_zone ; then destroy_pool $POOL destroy_pool $POOL2 poolexists $POOL3 && destroy_pool $POOL3 else cleanup_pool $POOL cleanup_pool $POOL2 poolexists $POOL3 && cleanup_pool $POOL3 fi log_must rm -rf $BACKDIR $TESTDIR log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_004_pos.ksh0000644000000000000000000000007413607166133026232 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.851919499 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_004_pos.ksh0000755016037001603700000000716213607166133026240 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # zfs send -R -i send incremental from fs@init to fs@final. # # STRATEGY: # 1. Create a set of snapshots and fill with data. # 2. Create sub filesystems. # 3. Create final snapshot # 4. Verify zfs send -R -i will backup all the datasets which has # snapshot suffix @final # verify_runnable "both" log_assert "zfs send -R -i send incremental from fs@init to fs@final." log_onexit cleanup_pool $POOL2 # # Duplicate POOL2 for testing # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" if is_global_zone ; then # # Testing send -R -i backup from pool # srclist=$(getds_with_suffix $POOL2 @final) interlist="$srclist $(getds_with_suffix $POOL2 @snapC)" interlist="$interlist $(getds_with_suffix $POOL2 @snapB)" interlist="$interlist $(getds_with_suffix $POOL2 @snapA)" log_must eval "zfs send -R -i @init $POOL2@final > " \ "$BACKDIR/pool-init-final-iR" log_must destroy_tree $interlist log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-init-final-iR" # Get current datasets with suffix @final dstlist=$(getds_with_suffix $POOL2 @final) if [[ $srclist != $dstlist ]]; then log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" fi log_must cmp_ds_cont $POOL $POOL2 fi dstds=$(get_dst_ds $POOL $POOL2) # # Testing send -R -i backup from filesystem # log_must eval "zfs send -R -i @init $dstds/$FS@final > " \ "$BACKDIR/fs-init-final-iR" srclist=$(getds_with_suffix $dstds/$FS @final) interlist="$srclist $(getds_with_suffix $dstds/$FS @snapC)" interlist="$interlist $(getds_with_suffix $dstds/$FS @snapB)" interlist="$interlist $(getds_with_suffix $dstds/$FS @snapA)" log_must destroy_tree $interlist if is_global_zone ; then log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/fs-init-final-iR" else zfs receive -F -d $dstds/$FS < $BACKDIR/fs-init-final-iR fi dstlist=$(getds_with_suffix $dstds/$FS @final) if [[ $srclist != $dstlist ]]; then log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" fi log_must cmp_ds_cont $POOL $POOL2 if is_global_zone ; then # # Testing send -R -i backup from volume # srclist=$(getds_with_suffix $POOL2/$FS/vol @final) log_must eval "zfs send -R -i @init $POOL2/$FS/vol@final > " \ "$BACKDIR/vol-init-final-iR" log_must destroy_tree $srclist log_must eval "zfs receive -d $POOL2 < $BACKDIR/vol-init-final-iR" dstlist=$(getds_with_suffix $POOL2/$FS/vol @final) if [[ $srclist != $dstlist ]]; then log_fail "Unexpected: srclist($srclist) != dstlist($dstlist)" fi log_must cmp_ds_cont $POOL $POOL2 fi log_pass "zfs send -R -i send incremental from fs@init to fs@final." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_mixed_compression.ksh0000644000000000000000000000007413607166133030633 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.906921265 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_mixed_compression.ksh0000755016037001603700000000302013607166133030626 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib . $STF_SUITE/include/properties.shlib # # Description: # Verify datasets using mixed compression algorithms can be received. # # Strategy: # 1. Write data with each of the available compression algorithms # 2. Receive a full compressed send, and verify the data and compression ratios # verify_runnable "both" log_assert "Verify datasets using mixed compression algorithms can be received." log_onexit cleanup_pool $POOL2 send_ds=$POOL2/sendfs recv_ds=$POOL2/recvfs log_must zfs create $send_ds for prop in "${compress_prop_vals[@]}"; do log_must zfs set compress=$prop $send_ds write_compressible $(get_prop mountpoint $send_ds) 16m done log_must zfs set compress=off $send_ds log_must zfs snapshot $send_ds@full log_must eval "zfs send -c $send_ds@full >$BACKDIR/full" log_must eval "zfs recv $recv_ds <$BACKDIR/full" verify_stream_size $BACKDIR/full $send_ds verify_stream_size $BACKDIR/full $recv_ds log_must cmp_ds_cont $send_ds $recv_ds log_pass "Datasets using mixed compression algorithms can be received." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_encrypted_files.ksh0000644000000000000000000000007413607166147030050 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.888920687 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh0000755016037001603700000000763213607166147030060 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 by Datto Inc. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # Verify that a raw zfs send and receive can deal with several different # types of file layouts. # # STRATEGY: # 1. Create a new encrypted filesystem # 2. Add an empty file to the filesystem # 3. Add a small 512 byte file to the filesystem # 4. Add a larger 32M file to the filesystem # 5. Add a large sparse file to the filesystem # 6. Add 1000 empty files to the filesystem # 7. Add a file with a large xattr value # 8. Use xattrtest to create files with random xattrs (with and without xattrs=on) # 9. Take a snapshot of the filesystem # 10. Remove the 1000 empty files to the filesystem # 11. Take another snapshot of the filesystem # 12. Send and receive both snapshots # 13. Mount the filesystem and check the contents # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 datasetexists $TESTPOOL/recv && \ log_must zfs destroy -r $TESTPOOL/recv [[ -f $keyfile ]] && log_must rm $keyfile [[ -f $sendfile ]] && log_must rm $sendfile } log_onexit cleanup log_assert "Verify 'zfs send -w' works with many different file layouts" typeset keyfile=/$TESTPOOL/pkey typeset sendfile=/$TESTPOOL/sendfile typeset sendfile2=/$TESTPOOL/sendfile2 # Create an encrypted dataset log_must eval "echo 'password' > $keyfile" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file://$keyfile $TESTPOOL/$TESTFS2 # Create files with varied layouts on disk log_must touch /$TESTPOOL/$TESTFS2/empty log_must mkfile 512 /$TESTPOOL/$TESTFS2/small log_must mkfile 32M /$TESTPOOL/$TESTFS2/full log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS2/sparse \ bs=512 count=1 seek=1048576 >/dev/null 2>&1 log_must mkdir -p /$TESTPOOL/$TESTFS2/dir for i in {1..1000}; do log_must mkfile 512 /$TESTPOOL/$TESTFS2/dir/file-$i done log_must mkdir -p /$TESTPOOL/$TESTFS2/xattrondir log_must zfs set xattr=on $TESTPOOL/$TESTFS2 log_must xattrtest -f 10 -x 3 -s 32768 -r -k -p /$TESTPOOL/$TESTFS2/xattrondir log_must mkdir -p /$TESTPOOL/$TESTFS2/xattrsadir log_must zfs set xattr=sa $TESTPOOL/$TESTFS2 log_must xattrtest -f 10 -x 3 -s 32768 -r -k -p /$TESTPOOL/$TESTFS2/xattrsadir # ZoL issue #7432 log_must zfs set compression=on xattr=sa $TESTPOOL/$TESTFS2 log_must touch /$TESTPOOL/$TESTFS2/attrs log_must eval "python -c 'print \"a\" * 4096' | \ attr -s bigval /$TESTPOOL/$TESTFS2/attrs" log_must zfs set compression=off xattr=on $TESTPOOL/$TESTFS2 log_must zfs snapshot $TESTPOOL/$TESTFS2@snap1 # Remove the empty files created in the first snapshot for i in {1..1000}; do log_must rm /$TESTPOOL/$TESTFS2/dir/file-$i done sync log_must zfs snapshot $TESTPOOL/$TESTFS2@snap2 expected_cksum=$(recursive_cksum /$TESTPOOL/$TESTFS2) log_must eval "zfs send -wp $TESTPOOL/$TESTFS2@snap1 > $sendfile" log_must eval "zfs send -wp -i @snap1 $TESTPOOL/$TESTFS2@snap2 > $sendfile2" log_must eval "zfs recv -F $TESTPOOL/recv < $sendfile" log_must eval "zfs recv -F $TESTPOOL/recv < $sendfile2" log_must zfs load-key $TESTPOOL/recv log_must zfs mount -a actual_cksum=$(recursive_cksum /$TESTPOOL/recv) [[ "$expected_cksum" != "$actual_cksum" ]] && \ log_fail "Recursive checksums differ ($expected_cksum != $actual_cksum)" log_must xattrtest -f 10 -o3 -y -p /$TESTPOOL/recv/xattrondir log_must xattrtest -f 10 -o3 -y -p /$TESTPOOL/recv/xattrsadir log_pass "Verified 'zfs send -w' works with many different file layouts" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_verify_ratio.ksh0000644000000000000000000000007413607166147027613 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.923921811 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_verify_ratio.ksh0000755016037001603700000000360713607166147027621 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib . $STF_SUITE/include/properties.shlib # # Description: # Verify that the amount of data in a send -c stream matches compressratio. # # Strategy: # 1. For random compression types, and compressible / incompressible data: # 2. Create a snap with data # 3. Compare the size of the stream with the data on the dataset, adjusted # by compressratio for normal send, and compared to used for send -c. # verify_runnable "both" log_assert "Verify send -c streams are compressed" log_onexit cleanup_pool $POOL2 typeset sendfs=$POOL2/$FS typeset megs=128 for prop in $(get_rand_compress_any 6); do for compressible in 'yes' 'no'; do log_must zfs create -o compress=$prop $sendfs if [[ $compressible = 'yes' ]]; then write_compressible $(get_prop mountpoint $sendfs) \ ${megs}m else typeset file="$(get_prop mountpoint $sendfs)/ddfile" log_must dd if=/dev/urandom of=$file bs=1024k count=$megs fi log_must zfs snapshot $sendfs@snap # Calculate the sizes and verify the compression ratio. log_must eval "zfs send $sendfs@snap >$BACKDIR/uncompressed" verify_stream_size $BACKDIR/uncompressed $sendfs log_must eval "zfs send -c $sendfs@snap >$BACKDIR/compressed" verify_stream_size $BACKDIR/compressed $sendfs log_must rm $BACKDIR/uncompressed $BACKDIR/compressed log_must_busy zfs destroy -r $sendfs done done log_pass "Verify send -c streams are compressed" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_003_pos.ksh0000644000000000000000000000007413607166133026231 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.848919403 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_003_pos.ksh0000755016037001603700000000531613607166133026236 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # zfs send -I dataset@init to clone@snap can create a clone # # STRATEGY: # 1. Setup test model # 2. send -I pool@init to clone@snap # 3. Verify the clone and snapshot can be recovered via receive # 4. Verify the similar operating in filesystem and volume # verify_runnable "both" log_assert "zfs send -I send all incrementals from dataset@init to clone@snap" log_onexit cleanup_pool $POOL2 # # Duplicate POOL2 # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-R" if is_global_zone ; then # # Verify send -I backup all incrementals from pool # log_must eval "zfs send -I $POOL2@psnap $POOL2/pclone@final > " \ "$BACKDIR/pool-clone-I" log_must_busy zfs destroy -rf $POOL2/pclone log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-clone-I" log_must cmp_ds_subs $POOL $POOL2 log_must cmp_ds_cont $POOL $POOL2 fi dstds=$(get_dst_ds $POOL $POOL2) # # Verify send -I backup all incrementals from filesystem # ds=$dstds/$FS/fs1 log_must eval "zfs send -I $ds/fs2@fsnap $ds/fclone@final > " \ "$BACKDIR/fs-clone-I" log_must_busy zfs destroy -rf $ds/fclone log_must eval "zfs receive -F $ds/fclone < $BACKDIR/fs-clone-I" log_must cmp_ds_subs $POOL $dstds log_must cmp_ds_cont $POOL $dstds if is_global_zone ; then # # Verify send -I backup all incrementals from volume # ds=$POOL2/$FS log_must eval "zfs send -I $ds/vol@vsnap $ds/vclone@final > " \ "$BACKDIR/vol-clone-I" log_must_busy zfs destroy -rf $ds/vclone log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/vol-clone-I" log_must cmp_ds_subs $POOL $POOL2 log_must cmp_ds_cont $POOL $POOL2 fi log_pass "zfs send -I send all incrementals from dataset@init to clone@snap" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_008_pos.ksh0000644000000000000000000000007413612141513026225 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.859919757 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_008_pos.ksh0000755016037001603700000000645713612141513026241 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # Changes made by 'zfs promote' can be properly received. # # STRATEGY: # 1. Separately promote pool clone, filesystem clone and volume clone. # 2. Recursively backup all the POOL and restore in POOL2 # 3. Verify all the datasets and properties were properly received. # verify_runnable "both" # See issue: https://github.com/zfsonlinux/zfs/issues/6066 log_unsupported "Occasionally hangs" # Origin Clone # set -A dtst "$POOL" "$POOL/pclone" \ "$POOL/$FS/fs1/fs2" "$POOL/$FS/fs1/fclone" if is_global_zone ; then typeset -i n=${#dtst[@]} dtst[((n))]="$POOL/$FS/vol"; dtst[((n+1))]="$POOL/$FS/vclone" fi function cleanup { typeset origin typeset -i i=0 while ((i < ${#dtst[@]})); do origin=$(get_prop origin ${dtst[$i]}) if [[ $origin != "-" ]]; then log_must zfs promote ${dtst[$i]} fi ((i += 2)) done origin=$(get_prop origin $POOL2) if [[ $origin != "-" ]]; then log_must zfs promote $POOL2 fi log_must cleanup_pool $POOL2 } log_assert "Changes made by 'zfs promote' can be properly received." log_onexit cleanup typeset -i i=0 while ((i < ${#dtst[@]})); do log_must zfs promote ${dtst[((i+1))]} ((i += 2)) done # # Verify zfs send -R should succeed # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" dstds=$(get_dst_ds $POOL $POOL2) # # Define all the POOL/POOL2 datasets pair # set -A pair "$POOL" "$dstds" \ "$POOL/$FS" "$dstds/$FS" \ "$POOL/$FS/fs1" "$dstds/$FS/fs1" \ "$POOL/$FS/fs1/fs2" "$dstds/$FS/fs1/fs2" \ "$POOL/pclone" "$dstds/pclone" \ "$POOL/$FS/fs1/fclone" "$dstds/$FS/fs1/fclone" if is_global_zone ; then typeset -i n=${#pair[@]} pair[((n))]="$POOL/vol"; pair[((n+1))]="$dstds/vol" pair[((n+2))]="$POOL/$FS/vol" pair[((n+3))]="$dstds/$FS/vol" fi # # Verify all the sub-datasets can be properly received. # log_must cmp_ds_subs $POOL $dstds typeset -i i=0 while ((i < ${#pair[@]})); do log_must cmp_ds_cont ${pair[$i]} ${pair[((i+1))]} log_must cmp_ds_prop ${pair[$i]} ${pair[((i+1))]} ((i += 2)) done # Verify the original filesystem can be promoted log_must zfs promote $dstds if is_global_zone ; then log_must zfs promote $dstds/$FS/vol fi log_must zfs promote $dstds/$FS/fs1/fs2 log_pass "Changes made by 'zfs promote' can be properly received." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend.cfg0000644000000000000000000000007413607166133024740 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.835918985 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend.cfg0000644016037001603700000000227413607166133024742 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # export BACKDIR=${TEST_BASE_DIR%%/}/backdir-rsend export DISK1=$(echo $DISKS | awk '{print $1}') export DISK2=$(echo $DISKS | awk '{print $2}') export DISK3=$(echo $DISKS | awk '{print $3}') export POOL=$TESTPOOL export POOL2=$TESTPOOL2 export POOL3=$TESTPOOL3 export FS=$TESTFS zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_realloc_files.ksh0000644000000000000000000000007413612141521027455 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.936922229 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_realloc_files.ksh0000755016037001603700000000675113612141521027466 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2019 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/properties.shlib . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify incremental receive properly handles reallocation. # # Strategy: # 1. Create a pool containing an encrypted filesystem. # 2. Use 'zfs send -wp' to perform a raw send of the initial filesystem. # 3. Repeat the following steps N times to verify raw incremental receives. # a) Randomly change several key dataset properties. # b) Modify the contents of the filesystem such that dnode reallocation # is likely during the 'zfs receive', and receive_object() exercises # as much of its functionality as possible. # c) Create a new snapshot and generate an raw incremental stream. # d) Receive the raw incremental stream and verify the received contents. # e) Destroy the incremental stream and old snapshot. # verify_runnable "both" log_assert "Verify incremental receive handles reallocation" function cleanup { rm -f $BACKDIR/fs@* destroy_dataset $POOL/fs "-rR" destroy_dataset $POOL/newfs "-rR" } log_onexit cleanup log_must zfs create $POOL/fs last_snap=1 log_must zfs snapshot $POOL/fs@snap${last_snap} log_must eval "zfs send $POOL/fs@snap${last_snap} >$BACKDIR/fs@snap${last_snap}" log_must eval "zfs recv $POOL/newfs < $BACKDIR/fs@snap${last_snap}" # Set atime=off to prevent the recursive_cksum from modifying newfs. log_must zfs set atime=off $POOL/newfs # Due to reduced performance on debug kernels use fewer files by default. if is_kmemleak; then nr_files=100 passes=2 else nr_files=1000 passes=3 fi for i in {1..$passes}; do # Randomly modify several dataset properties in order to generate # more interesting incremental send streams. rand_set_prop $POOL/fs checksum "off" "fletcher4" "sha256" rand_set_prop $POOL/fs compression "${compress_prop_vals[@]}" rand_set_prop $POOL/fs recordsize "32K" "128K" rand_set_prop $POOL/fs dnodesize "legacy" "auto" "4k" rand_set_prop $POOL/fs xattr "on" "sa" # Churn the filesystem in such a way that we're likely to be both # allocating and reallocating objects in the incremental stream. log_must churn_files $nr_files 524288 $POOL/fs expected_cksum=$(recursive_cksum /$POOL/fs) # Create a snapshot and use it to send an incremental stream. this_snap=$((last_snap + 1)) log_must zfs snapshot $POOL/fs@snap${this_snap} log_must eval "zfs send -i $POOL/fs@snap${last_snap} \ $POOL/fs@snap${this_snap} > $BACKDIR/fs@snap${this_snap}" # Receive the incremental stream and verify the received contents. log_must eval "zfs recv $POOL/newfs < $BACKDIR/fs@snap${this_snap}" actual_cksum=$(recursive_cksum /$POOL/newfs) if [[ "$expected_cksum" != "$actual_cksum" ]]; then log_fail "Checksums differ ($expected_cksum != $actual_cksum)" fi # Destroy the incremental stream and old snapshot. rm -f $BACKDIR/fs@snap${last_snap} log_must zfs destroy $POOL/fs@snap${last_snap} log_must zfs destroy $POOL/newfs@snap${last_snap} last_snap=$this_snap done log_pass "Verify incremental receive handles dnode reallocation" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_002_pos.ksh0000644000000000000000000000007413607166133026230 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.846919339 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_002_pos.ksh0000755016037001603700000000544313607166133026236 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # zfs send -I sends all incrementals from fs@init to fs@final. # # STRATEGY: # 1. Create several snapshots in pool2 # 2. Send -I @snapA @final # 3. Destroy all the snapshot except @snapA # 4. Make sure all the snapshots and content are recovered # verify_runnable "both" log_assert "zfs send -I sends all incrementals from fs@init to fs@final." log_onexit cleanup_pool $POOL2 # # Duplicate POOL2 # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-R" if is_global_zone ; then # # Verify send -I will backup all the incrementals in pool # log_must eval "zfs send -I $POOL2@init $POOL2@final > " \ "$BACKDIR/pool-init-final-I" log_must destroy_tree $POOL2@final $POOL2@snapC $POOL2@snapA log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-init-final-I" log_must cmp_ds_subs $POOL $POOL2 log_must cmp_ds_cont $POOL $POOL2 fi dstds=$(get_dst_ds $POOL $POOL2) # # Verify send -I will backup all the incrementals in filesystem # log_must eval "zfs send -I @init $dstds/$FS@final > $BACKDIR/fs-init-final-I" log_must destroy_tree $dstds/$FS@final $dstds/$FS@snapC $dstds/$FS@snapB log_must eval "zfs receive -d -F $dstds < $BACKDIR/fs-init-final-I" log_must cmp_ds_subs $POOL $dstds log_must cmp_ds_cont $POOL $dstds if is_global_zone ; then # # Verify send -I will backup all the incrementals in volume # dataset=$POOL2/$FS/vol log_must eval "zfs send -I @vsnap $dataset@final > " \ "$BACKDIR/vol-vsnap-final-I" log_must destroy_tree $dataset@final $dataset@snapC \ $dataset@snapB $dataset@init log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/vol-vsnap-final-I" log_must cmp_ds_subs $POOL $POOL2 log_must cmp_ds_cont $POOL $POOL2 fi log_pass "zfs send -I sends all incrementals from fs@init to fs@final." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_stream_size_estimate.ksh0000644000000000000000000000007413612141513031313 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.918921651 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_stream_size_estimate.ksh0000755016037001603700000000562413612141513031322 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify the stream size estimate given by -P accounts for compressed send. # Verify the stream size given by -P accounts for compressed send." # # Strategy: # 1. For datasets of varied compression types do the following: # 2. Write data, verify stream size estimates with and without -c # verify_runnable "both" typeset compress_types="off gzip lz4" typeset send_ds="$POOL2/testfs" typeset send_vol="$POOL2/vol" typeset send_voldev="$ZVOL_DEVDIR/$POOL2/vol" typeset file="$BACKDIR/file.0" typeset megs="16" typeset compress function get_estimated_size { typeset cmd=$1 typeset ds=${cmd##* } typeset tmpfile=$(mktemp -p $BACKDIR) eval "$cmd >$tmpfile" [[ $? -eq 0 ]] || log_fail "get_estimated_size: $cmd" typeset size=$(eval "awk '\$2 == \"$ds\" {print \$3}' $tmpfile") rm -f $tmpfile echo $size } log_assert "Verify the stream size given by -P accounts for compressed send." log_onexit cleanup_pool $POOL2 write_compressible $BACKDIR ${megs}m for compress in $compress_types; do datasetexists $send_ds && log_must_busy zfs destroy -r $send_ds datasetexists $send_vol && log_must_busy zfs destroy -r $send_vol log_must zfs create -o compress=$compress $send_ds log_must zfs create -V 1g -o compress=$compress $send_vol block_device_wait typeset dir=$(get_prop mountpoint $send_ds) log_must cp $file $dir log_must zfs snapshot $send_ds@snap log_must dd if=$file of=$send_voldev log_must zfs snapshot $send_vol@snap typeset ds_size=$(get_estimated_size "zfs send -nP $send_ds@snap") typeset ds_lrefer=$(get_prop lrefer $send_ds) within_percent $ds_size $ds_lrefer 90 || log_fail \ "$ds_size and $ds_lrefer differed by too much" typeset vol_size=$(get_estimated_size "zfs send -nP $send_vol@snap") typeset vol_lrefer=$(get_prop lrefer $send_vol) within_percent $vol_size $vol_lrefer 90 || log_fail \ "$vol_size and $vol_lrefer differed by too much" typeset ds_csize=$(get_estimated_size "zfs send -nP -c $send_ds@snap") typeset ds_refer=$(get_prop refer $send_ds) within_percent $ds_csize $ds_refer 90 || log_fail \ "$ds_csize and $ds_refer differed by too much" typeset vol_csize=$(get_estimated_size "zfs send -nP -c $send_vol@snap") typeset vol_refer=$(get_prop refer $send_vol) within_percent $vol_csize $vol_refer 90 || log_fail \ "$vol_csize and $vol_refer differed by too much" done log_pass "The stream size given by -P accounts for compressed send." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_013_pos.ksh0000644000000000000000000000007413607166133026232 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.871920141 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_013_pos.ksh0000755016037001603700000000451713607166133026241 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # zfs receive -dF with incremental stream will destroy all the # dataset that not exist on the sender side. # # STRATEGY: # 1. Setup test model # 2. Send -R @final on pool # 3. Destroy some dataset within the @final, and create @destroy # 4. Send -R -I @final @destroy on pool # 5. Verify receive -dF will destroy all the dataset that not exist # on the sender side. # verify_runnable "both" function cleanup { cleanup_pool $POOL2 cleanup_pool $POOL log_must setup_test_model $POOL } log_assert "zfs receive -dF will destroy all the dataset that not exist" \ "on the sender side" log_onexit cleanup cleanup # # Duplicate POOL2 for testing # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -dF $POOL2 < $BACKDIR/pool-final-R" log_must_busy zfs destroy -Rf $POOL/$FS log_must_busy zfs destroy -Rf $POOL/pclone if is_global_zone ; then log_must_busy zfs destroy -Rf $POOL/vol fi log_must zfs snapshot -r $POOL@destroy log_must eval "zfs send -R -I @final $POOL@destroy > " \ "$BACKDIR/pool-final-destroy-IR" log_must eval "zfs receive -dF $POOL2 < $BACKDIR/pool-final-destroy-IR" dstds=$(get_dst_ds $POOL $POOL2) log_must cmp_ds_subs $POOL $dstds log_must cmp_ds_cont $POOL $dstds log_pass "zfs receive -dF will destroy all the dataset that not exist" \ "on the sender side" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend.kshlib0000644000000000000000000000007413612141514025445 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.837919051 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend.kshlib0000644016037001603700000004566013612141514025455 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib . $STF_SUITE/tests/functional/rsend/rsend.cfg # # Set up test model which includes various datasets # # @final # @snapB # @init # | # ______ pclone # | / # |@psnap # || @final # ||@final @final @snapC # ||@snapC @snapC @snapB # ||@snapA @snapB @snapA # ||@init @init @init # ||| | | # $pool -------- $FS ------- fs1 ------- fs2 # \ \\_____ \ | # vol vol \____ \ @fsnap # | | \ \ \ # @init @vsnap | ------------ fclone # @snapA @init \ | | # @final @snapB \ | @init # @snapC vclone @snapA # @final | @final # @init # @snapC # @final # # $1 pool name # function setup_test_model { typeset pool=$1 log_must zfs create -p $pool/$FS/fs1/fs2 log_must zfs snapshot $pool@psnap log_must zfs clone $pool@psnap $pool/pclone if is_global_zone ; then log_must zfs create -V 16M $pool/vol log_must zfs create -V 16M $pool/$FS/vol block_device_wait log_must zfs snapshot $pool/$FS/vol@vsnap log_must zfs clone $pool/$FS/vol@vsnap $pool/$FS/vclone block_device_wait fi log_must snapshot_tree $pool/$FS/fs1/fs2@fsnap log_must zfs clone $pool/$FS/fs1/fs2@fsnap $pool/$FS/fs1/fclone log_must zfs snapshot -r $pool@init log_must snapshot_tree $pool@snapA log_must snapshot_tree $pool@snapC log_must snapshot_tree $pool/pclone@snapB log_must snapshot_tree $pool/$FS@snapB log_must snapshot_tree $pool/$FS@snapC log_must snapshot_tree $pool/$FS/fs1@snapA log_must snapshot_tree $pool/$FS/fs1@snapB log_must snapshot_tree $pool/$FS/fs1@snapC log_must snapshot_tree $pool/$FS/fs1/fclone@snapA if is_global_zone ; then log_must zfs snapshot $pool/vol@snapA log_must zfs snapshot $pool/$FS/vol@snapB log_must zfs snapshot $pool/$FS/vol@snapC log_must zfs snapshot $pool/$FS/vclone@snapC fi log_must zfs snapshot -r $pool@final return 0 } # # Cleanup the BACKDIR and given pool content and all the sub datasets # # $1 pool name # function cleanup_pool { typeset pool=$1 log_must rm -rf $BACKDIR/* if is_global_zone ; then log_must_busy zfs destroy -Rf $pool else typeset list=$(zfs list -H -r -t all -o name $pool) for ds in $list ; do if [[ $ds != $pool ]] ; then if datasetexists $ds ; then log_must_busy zfs destroy -Rf $ds fi fi done fi typeset mntpnt=$(get_prop mountpoint $pool) if ! ismounted $pool ; then # Make sure mountpoint directory is empty if [[ -d $mntpnt ]]; then log_must rm -rf $mntpnt/* fi log_must zfs mount $pool fi if [[ -d $mntpnt ]]; then rm -rf $mntpnt/* fi return 0 } function cleanup_pools { cleanup_pool $POOL2 destroy_pool $POOL3 } function cmp_md5s { typeset file1=$1 typeset file2=$2 typeset sum1=$(md5digest $file1) typeset sum2=$(md5digest $file2) test "$sum1" = "$sum2" } # # Detect if the given two filesystems have same sub-datasets # # $1 source filesystem # $2 destination filesystem # function cmp_ds_subs { typeset src_fs=$1 typeset dst_fs=$2 zfs list -r -H -t all -o name $src_fs > $BACKDIR/src1 zfs list -r -H -t all -o name $dst_fs > $BACKDIR/dst1 eval sed -e 's:^$src_fs:PREFIX:g' < $BACKDIR/src1 > $BACKDIR/src eval sed -e 's:^$dst_fs:PREFIX:g' < $BACKDIR/dst1 > $BACKDIR/dst diff $BACKDIR/src $BACKDIR/dst typeset -i ret=$? rm -f $BACKDIR/src $BACKDIR/dst $BACKDIR/src1 $BACKDIR/dst1 return $ret } # # Compare all the directories and files in two filesystems # # $1 source filesystem # $2 destination filesystem # function cmp_ds_cont { typeset src_fs=$1 typeset dst_fs=$2 typeset srcdir dstdir srcdir=$(get_prop mountpoint $src_fs) dstdir=$(get_prop mountpoint $dst_fs) diff -r $srcdir $dstdir > /dev/null 2>&1 return $? } # # Compare the given two dataset properties # # $1 dataset 1 # $2 dataset 2 # function cmp_ds_prop { typeset dtst1=$1 typeset dtst2=$2 for item in "type" "origin" "volblocksize" "acltype" "dnodesize" \ "atime" "canmount" "checksum" "compression" "copies" "devices" \ "exec" "quota" "readonly" "recordsize" "reservation" "setuid" \ "snapdir" "version" "volsize" "xattr" "zoned" "mountpoint"; do zfs get -H -o property,value,source $item $dtst1 >> \ $BACKDIR/dtst1 zfs get -H -o property,value,source $item $dtst2 >> \ $BACKDIR/dtst2 done eval sed -e 's:$dtst1:PREFIX:g' < $BACKDIR/dtst1 > $BACKDIR/dtst1 eval sed -e 's:$dtst2:PREFIX:g' < $BACKDIR/dtst2 > $BACKDIR/dtst2 diff $BACKDIR/dtst1 $BACKDIR/dtst2 typeset -i ret=$? rm -f $BACKDIR/dtst1 $BACKDIR/dtst2 return $ret } # # Random create directories and files # # $1 directory # function random_tree { typeset dir=$1 if [[ -d $dir ]]; then rm -rf $dir fi mkdir -p $dir typeset -i ret=$? typeset -i nl nd nf ((nl = RANDOM % 6 + 1)) ((nd = RANDOM % 3 )) ((nf = RANDOM % 5 )) mktree -b $dir -l $nl -d $nd -f $nf ((ret |= $?)) return $ret } # # Put data in filesystem and take snapshot # # $1 snapshot name # function snapshot_tree { typeset snap=$1 typeset ds=${snap%%@*} typeset type=$(get_prop "type" $ds) typeset -i ret=0 if [[ $type == "filesystem" ]]; then typeset mntpnt=$(get_prop mountpoint $ds) ((ret |= $?)) if ((ret == 0)) ; then eval random_tree $mntpnt/${snap##$ds} ((ret |= $?)) fi fi if ((ret == 0)) ; then zfs snapshot $snap ((ret |= $?)) fi return $ret } # # Destroy the given snapshot and stuff # # $1 snapshot # function destroy_tree { typeset -i ret=0 typeset snap for snap in "$@" ; do log_must_busy zfs destroy $snap typeset ds=${snap%%@*} typeset type=$(get_prop "type" $ds) if [[ $type == "filesystem" ]]; then typeset mntpnt=$(get_prop mountpoint $ds) if [[ -n $mntpnt ]]; then rm -rf $mntpnt/$snap fi fi done return 0 } # # Get all the sub-datasets of give dataset with specific suffix # # $1 Given dataset # $2 Suffix # function getds_with_suffix { typeset ds=$1 typeset suffix=$2 typeset list=$(zfs list -r -H -t all -o name $ds | grep "$suffix$") echo $list } # # Output inherited properties which is edited for file system # function fs_inherit_prop { typeset fs_prop if is_global_zone ; then fs_prop=$(zfs inherit 2>&1 | \ awk '$2=="YES" && $3=="YES" {print $1}') if ! is_te_enabled ; then fs_prop=$(echo $fs_prop | grep -v "mlslabel") fi else fs_prop=$(zfs inherit 2>&1 | \ awk '$2=="YES" && $3=="YES" {print $1}'| egrep -v "devices|mlslabel|sharenfs|sharesmb|zoned") fi echo $fs_prop } # # Output inherited properties for volume # function vol_inherit_prop { echo "checksum readonly" } # # Get the destination dataset to compare # function get_dst_ds { typeset srcfs=$1 typeset dstfs=$2 # # If the srcfs is not pool # if ! zpool list $srcfs > /dev/null 2>&1 ; then eval dstfs="$dstfs/${srcfs#*/}" fi echo $dstfs } # # Make test files # # $1 Number of files to create # $2 Maximum file size # $3 File ID offset # $4 File system to create the files on # function mk_files { nfiles=$1 maxsize=$2 file_id_offset=$3 fs=$4 bs=512 for ((i=0; i<$nfiles; i=i+1)); do file_name="/$fs/file-$maxsize-$((i+$file_id_offset))" file_size=$((($RANDOM * $RANDOM % ($maxsize - 1)) + 1)) # # Create an interesting mix of files which contain both # data blocks and holes for more realistic test coverage. # Half the files are created as sparse then partially filled, # the other half is dense then a hole is punched in the file. # if [ $((RANDOM % 2)) -eq 0 ]; then truncate -s $file_size $file_name || \ log_fail "Failed to create $file_name" dd if=/dev/urandom of=$file_name \ bs=$bs count=$(($file_size / 2 / $bs)) \ seek=$(($RANDOM % (($file_size / 2 / $bs) + 1))) \ conv=notrunc >/dev/null 2>&1 || \ log_fail "Failed to create $file_name" else dd if=/dev/urandom of=$file_name \ bs=$file_size count=1 >/dev/null 2>&1 || \ log_fail "Failed to create $file_name" dd if=/dev/zero of=$file_name \ bs=$bs count=$(($file_size / 2 / $bs)) \ seek=$(($RANDOM % (($file_size / 2 / $bs) + 1))) \ conv=notrunc >/dev/null 2>&1 || \ log_fail "Failed to create $file_name" fi done echo Created $nfiles files of random sizes up to $maxsize bytes } # # Remove test files # # $1 Number of files to remove # $2 Maximum file size # $3 File ID offset # $4 File system to remove the files from # function rm_files { nfiles=$1 maxsize=$2 file_id_offset=$3 fs=$4 for ((i=0; i<$nfiles; i=i+1)); do rm -f /$fs/file-$maxsize-$((i+$file_id_offset)) done echo Removed $nfiles files of random sizes up to $maxsize bytes } # # Simulate a random set of operations which could be reasonably expected # to occur on an average filesystem. # # $1 Number of files to modify # $2 Maximum file size # $3 File system to modify the file on # $4 Enabled xattrs (optional) # function churn_files { nfiles=$1 maxsize=$2 fs=$3 xattrs=${4:-1} # # Remove roughly half of the files in order to make it more # likely that a dnode will be reallocated. # for ((i=0; i<$nfiles; i=i+1)); do file_name="/$fs/file-$i" if [[ -e $file_name ]]; then if [ $((RANDOM % 2)) -eq 0 ]; then rm $file_name || \ log_fail "Failed to remove $file_name" fi fi done # # Remount the filesystem to simulate normal usage. This resets # the last allocated object id allowing for new objects to be # reallocated in the locations of previously freed objects. # log_must zfs unmount $fs log_must zfs mount $fs for i in {0..$nfiles}; do file_name="/$fs/file-$i" file_size=$((($RANDOM * $RANDOM % ($maxsize - 1)) + 1)) # # When the file exists modify it in one of five ways to # simulate normal usage: # - (20%) Remove and set and extended attribute on the file # - (20%) Overwrite the existing file # - (20%) Truncate the existing file to a random length # - (20%) Truncate the existing file to zero length # - (20%) Remove the file # # Otherwise create the missing file. 20% of the created # files will be small and use embedded block pointers, the # remainder with have random sizes up to the maximum size. # Three extended attributes are attached to all of the files. # if [[ -e $file_name ]]; then value=$((RANDOM % 5)) if [ $value -eq 0 -a $xattrs -ne 0 ]; then attrname="testattr$((RANDOM % 3))" attrlen="$(((RANDOM % 1000) + 1))" attrvalue="$(random_string VALID_NAME_CHAR \ $attrlen)" attr -qr $attrname $file_name || \ log_fail "Failed to remove $attrname" attr -qs $attrname \ -V "$attrvalue" $file_name || \ log_fail "Failed to set $attrname" elif [ $value -eq 1 ]; then dd if=/dev/urandom of=$file_name \ bs=$file_size count=1 >/dev/null 2>&1 || \ log_fail "Failed to overwrite $file_name" elif [ $value -eq 2 ]; then truncate -s $file_size $file_name || \ log_fail "Failed to truncate $file_name" elif [ $value -eq 3 ]; then truncate -s 0 $file_name || \ log_fail "Failed to truncate $file_name" else rm $file_name || \ log_fail "Failed to remove $file_name" fi else if [ $((RANDOM % 5)) -eq 0 ]; then file_size=$((($RANDOM % 64) + 1)) fi dd if=/dev/urandom of=$file_name \ bs=$file_size count=1 >/dev/null 2>&1 || \ log_fail "Failed to create $file_name" if [ $xattrs -ne 0 ]; then for j in {0..2}; do attrname="testattr$j" attrlen="$(((RANDOM % 1000) + 1))" attrvalue="$(random_string \ VALID_NAME_CHAR $attrlen)" attr -qs $attrname \ -V "$attrvalue" $file_name || \ log_fail "Failed to set $attrname" done fi fi done return 0 } # # Mess up file contents # # $1 The file path # function mess_file { file=$1 filesize=$(stat -c '%s' $file) offset=$(($RANDOM * $RANDOM % $filesize)) if (($RANDOM % 7 <= 1)); then # # We corrupt 2 bytes to minimize the chance that we # write the same value that's already there. # log_must eval "dd if=/dev/urandom of=$file conv=notrunc " \ "bs=1 count=2 seek=$offset >/dev/null 2>&1" else log_must truncate -s $offset $file fi } # # Diff the send/receive filesystems # # $1 The sent filesystem # $2 The received filesystem # function file_check { sendfs=$1 recvfs=$2 if [[ -d /$recvfs/.zfs/snapshot/a && -d \ /$sendfs/.zfs/snapshot/a ]]; then diff -r /$recvfs/.zfs/snapshot/a /$sendfs/.zfs/snapshot/a [[ $? -eq 0 ]] || log_fail "Differences found in snap a" fi if [[ -d /$recvfs/.zfs/snapshot/b && -d \ /$sendfs/.zfs/snapshot/b ]]; then diff -r /$recvfs/.zfs/snapshot/b /$sendfs/.zfs/snapshot/b [[ $? -eq 0 ]] || log_fail "Differences found in snap b" fi } # # Resume test helper # # $1 The ZFS send command # $2 The filesystem where the streams are sent # $3 The receive filesystem # function resume_test { sendcmd=$1 streamfs=$2 recvfs=$3 stream_num=1 log_must eval "$sendcmd >/$streamfs/$stream_num" for ((i=0; i<2; i=i+1)); do mess_file /$streamfs/$stream_num log_mustnot zfs recv -suv $recvfs /$streamfs/$stream_num" [[ -f /$streamfs/$stream_num ]] || \ log_fail "NO FILE /$streamfs/$stream_num" done log_must zfs recv -suv $recvfs /$sendpool/initial.zsend" log_must eval "zfs send -v -i @a $sendfs@b " \ ">/$sendpool/incremental.zsend" fi log_must zfs create -o compress=lz4 $streamfs } # # Check to see if the specified features are set in a send stream. # The values for these features are found in include/sys/zfs_ioctl.h # # $1 The stream file # $2-$n The flags expected in the stream # function stream_has_features { typeset file=$1 shift [[ -f $file ]] || log_fail "Couldn't find file: $file" typeset flags=$(cat $file | zstreamdump | \ awk '/features =/ {features = $3} END {print features}') typeset -A feature feature[dedup]="1" feature[dedupprops]="2" feature[sa_spill]="4" feature[embed_data]="10000" feature[lz4]="20000" feature[mooch_byteswap]="40000" feature[large_blocks]="80000" feature[resuming]="100000" feature[redacted]="200000" feature[compressed]="400000" typeset flag known derived=0 for flag in "$@"; do known=${feature[$flag]} [[ -z $known ]] && log_fail "Unknown feature: $flag" derived=$(printf "%x" $((0x${flags} & 0x${feature[$flag]}))) [[ $derived = $known ]] || return 1 done return 0 } # # Given a send stream, verify that the size of the stream matches what's # expected based on the source or target dataset. If the stream is an # incremental stream, subtract the size of the source snapshot before # comparing. This function does not currently handle incremental streams # that remove data. # # $1 The zstreamdump output file # $2 The dataset to compare against # This can be a source of a send or recv target (fs, not snapshot) # $3 The percentage below which verification is deemed a failure # $4 The source snapshot of an incremental send # function verify_stream_size { typeset stream=$1 typeset ds=$2 typeset percent=${3:-90} typeset inc_src=$4 [[ -f $stream ]] || log_fail "No such file: $stream" datasetexists $ds || log_fail "No such dataset: $ds" typeset stream_size=$(cat $stream | zstreamdump | sed -n \ 's/ Total payload size = \(.*\) (0x.*)/\1/p') typeset inc_size=0 if [[ -n $inc_src ]]; then inc_size=$(get_prop lrefer $inc_src) if stream_has_features $stream compressed; then inc_size=$(get_prop refer $inc_src) fi fi if stream_has_features $stream compressed; then ds_size=$(get_prop refer $ds) else ds_size=$(get_prop lrefer $ds) fi ds_size=$((ds_size - inc_size)) within_percent $stream_size $ds_size $percent || log_fail \ "$stream_size $ds_size differed by too much" } # Cleanup function for tests involving resumable send function resume_cleanup { typeset sendfs=$1 typeset streamfs=$2 typeset sendpool=${sendfs%%/*} datasetexists $sendfs && log_must_busy zfs destroy -r $sendfs datasetexists $streamfs && log_must_busy zfs destroy -r $streamfs cleanup_pool $POOL2 rm -f /$sendpool/initial.zsend /$sendpool/incremental.zsend } # Randomly set the property to one of the enumerated values. function rand_set_prop { typeset dtst=$1 typeset prop=$2 shift 2 typeset value=$(random_get $@) log_must eval "zfs set $prop='$value' $dtst" } # Generate a recursive checksum of a filesystem which includes the file # contents and any associated xattrs. function recursive_cksum { find $1 -type f -exec sh -c 'sha256sum {}; getfattr \ --absolute-names --only-values -d {} | sha256sum' \; | \ sort -k 2 | awk '{ print $1 }' | sha256sum } zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_001_pos.ksh0000644000000000000000000000007413607166133026227 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.843919243 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_001_pos.ksh0000755016037001603700000000420613607166133026231 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # zfs send -R send replication stream up to the named snap. # # STRATEGY: # 1. Back up all the data from POOL/FS # 2. Verify all the datasets and data can be recovered in POOL2 # 3. Back up all the data from root filesystem POOL2 # 4. Verify all the data can be recovered, too # verify_runnable "both" log_assert "zfs send -R send replication stream up to the named snap." log_onexit cleanup_pool $POOL2 # # Verify the entire pool and sub-ds can be backup and restored. # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" dstds=$(get_dst_ds $POOL $POOL2) log_must cmp_ds_subs $POOL $dstds log_must cmp_ds_cont $POOL $dstds # Cleanup POOL2 log_must cleanup_pool $POOL2 # # Verify all the filesystem and sub-fs can be backup and restored. # log_must eval "zfs send -R $POOL/$FS@final > $BACKDIR/fs-final-R" log_must eval "zfs receive -d $POOL2 < $BACKDIR/fs-final-R" dstds=$(get_dst_ds $POOL/$FS $POOL2) log_must cmp_ds_subs $POOL/$FS $dstds log_must cmp_ds_cont $POOL/$FS $dstds log_pass "zfs send -R send replication stream up to the named snap." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-wDR_encrypted_zvol.ksh0000644000000000000000000000007413612141514030415 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.949922647 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-wDR_encrypted_zvol.ksh0000755016037001603700000000541613612141514030423 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 by Datto Inc. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # Verify that zvols with dedup=on and encryption=on can be sent and received # with a deduplicated raw send stream. # # STRATEGY: # 1. Create a zvol with dedup and encryption on and put a filesystem on it # 2. Copy a file into the zvol a few times and take a snapshot # 3. Repeat step 2 a few times to create more snapshots # 4. Send all snapshots in a recursive, raw, deduplicated send stream # 5. Mount the received zvol and verify that all of the data there is correct # verify_runnable "both" function cleanup { ismounted $recvmnt ext4 && log_must umount $recvmnt ismounted $mntpnt ext4 && log_must umount $mntpnt [[ -d $recvmnt ]] && log_must rm -rf $keyfile [[ -d $mntpnt ]] && log_must rm -rf $keyfile destroy_dataset $TESTPOOL/recv "-r" destroy_dataset $TESTPOOL/$TESTVOL "-r" [[ -f $keyfile ]] && log_must rm $keyfile [[ -f $sendfile ]] && log_must rm $sendfile } log_onexit cleanup log_assert "Verify zfs can receive raw, recursive, and deduplicated send streams" typeset keyfile=/$TESTPOOL/pkey typeset snap_count=5 typeset zdev=$ZVOL_DEVDIR/$TESTPOOL/$TESTVOL typeset mntpnt=$TESTDIR/$TESTVOL typeset recvdev=$ZVOL_DEVDIR/$TESTPOOL/recv typeset recvmnt=$TESTDIR/recvmnt typeset sendfile=$TESTDIR/sendfile log_must eval "echo 'password' > $keyfile" log_must zfs create -o dedup=on -o encryption=on -o keyformat=passphrase \ -o keylocation=file://$keyfile -V 128M $TESTPOOL/$TESTVOL block_device_wait log_must eval "echo 'y' | newfs -t ext4 -v $zdev" log_must mkdir -p $mntpnt log_must mkdir -p $recvmnt log_must mount $zdev $mntpnt for ((i = 1; i <= $snap_count; i++)); do log_must dd if=/dev/urandom of=$mntpnt/file bs=1M count=1 for ((j = 0; j < 10; j++)); do log_must cp $mntpnt/file $mntpnt/file$j done log_must sync log_must zfs snap $TESTPOOL/$TESTVOL@snap$i done log_must eval "zfs send -wDR $TESTPOOL/$TESTVOL@snap$snap_count > $sendfile" log_must eval "zfs recv $TESTPOOL/recv < $sendfile" log_must zfs load-key $TESTPOOL/recv block_device_wait log_must mount $recvdev $recvmnt md5_1=$(cat $mntpnt/* | md5digest) md5_2=$(cat $recvmnt/* | md5digest) [[ "$md5_1" == "$md5_2" ]] || log_fail "md5 mismatch: $md5_1 != $md5_2" log_pass "zfs can receive raw, recursive, and deduplicated send streams" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_realloc_encrypted_files.ksh0000644000000000000000000000007413612141513031533 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.938922293 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_realloc_encrypted_files.ksh0000755016037001603700000000750613612141513031543 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2019 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify encrypted raw incremental receives handle dnode reallocation. # Strategy: # 1. Create a pool containing an encrypted filesystem. # 2. Use 'zfs send -wp' to perform a raw send of the initial filesystem. # 3. Repeat the following steps N times to verify raw incremental receives. # a) Randomly change several key dataset properties. # b) Modify the contents of the filesystem such that dnode reallocation # is likely during the 'zfs receive', and receive_object() exercises # as much of its functionality as possible. # c) Create a new snapshot and generate an raw incremental stream. # d) Receive the raw incremental stream and verify the received contents. # e) Destroy the incremental stream and old snapshot. # verify_runnable "both" log_assert "Verify encrypted raw incremental receive handles reallocation" function cleanup { rm -f $BACKDIR/fs@* rm -f $keyfile destroy_dataset $POOL/fs "-rR" destroy_dataset $POOL/newfs "-rR" } log_onexit cleanup typeset keyfile=/$TESTPOOL/pkey # Create an encrypted dataset log_must eval "echo 'password' > $keyfile" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file://$keyfile $POOL/fs last_snap=1 log_must zfs snapshot $POOL/fs@snap${last_snap} log_must eval "zfs send -wp $POOL/fs@snap${last_snap} \ >$BACKDIR/fs@snap${last_snap}" log_must eval "zfs recv $POOL/newfs < $BACKDIR/fs@snap${last_snap}" # Set atime=off to prevent the recursive_cksum from modifying newfs. log_must zfs set atime=off $POOL/newfs # Due to reduced performance on debug kernels use fewer files by default. if is_kmemleak; then nr_files=100 passes=2 else nr_files=1000 passes=3 fi for i in {1..$passes}; do # Randomly modify several dataset properties in order to generate # more interesting incremental send streams. rand_set_prop $POOL/fs checksum "off" "fletcher4" "sha256" rand_set_prop $POOL/fs compression "off" "lzjb" "gzip" "lz4" rand_set_prop $POOL/fs recordsize "32K" "128K" rand_set_prop $POOL/fs dnodesize "legacy" "auto" "4k" rand_set_prop $POOL/fs xattr "on" "sa" # Churn the filesystem in such a way that we're likely to be both # allocating and reallocating objects in the incremental stream. log_must churn_files $nr_files 524288 $POOL/fs expected_cksum=$(recursive_cksum /$POOL/fs) # Create a snapshot and use it to send an incremental stream. this_snap=$((last_snap + 1)) log_must zfs snapshot $POOL/fs@snap${this_snap} log_must eval "zfs send -wp -i $POOL/fs@snap${last_snap} \ $POOL/fs@snap${this_snap} > $BACKDIR/fs@snap${this_snap}" # Receive the incremental stream and verify the received contents. log_must eval "zfs recv -Fu $POOL/newfs < $BACKDIR/fs@snap${this_snap}" log_must zfs load-key $POOL/newfs log_must zfs mount $POOL/newfs actual_cksum=$(recursive_cksum /$POOL/newfs) log_must zfs umount $POOL/newfs log_must zfs unload-key $POOL/newfs if [[ "$expected_cksum" != "$actual_cksum" ]]; then log_fail "Checksums differ ($expected_cksum != $actual_cksum)" fi # Destroy the incremental stream and old snapshot. rm -f $BACKDIR/fs@snap${last_snap} log_must zfs destroy $POOL/fs@snap${last_snap} log_must zfs destroy $POOL/newfs@snap${last_snap} last_snap=$this_snap done log_pass "Verify encrypted raw incremental receive handles reallocation" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_024_pos.ksh0000644000000000000000000000007413612141513026223 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.886920623 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_024_pos.ksh0000755016037001603700000000305713612141513026230 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify resumability of a full ZFS send/receive with the source filesystem # unmounted. # # Strategy: # 1. Destroy the filesystem for the receive # 2. Unmount the source filesystem # 3. Start a full ZFS send, redirect output to a file # 4. Mess up the contents of the stream state file on disk # 5. Try ZFS receive, which should fail with a checksum mismatch error # 6. ZFS send to the stream state file again using the receive_resume_token # 7. ZFS receive and verify the receive completes successfully # verify_runnable "both" log_assert "Verify resumability of a full ZFS send/receive with the source " \ "filesystem unmounted" sendfs=$POOL/sendfs recvfs=$POOL2/recvfs streamfs=$POOL/stream log_onexit resume_cleanup $sendfs $streamfs test_fs_setup $sendfs $recvfs $streamfs log_must zfs unmount -f $sendfs resume_test "zfs send $sendfs" $streamfs $recvfs file_check $sendfs $recvfs log_pass "Verify resumability of a full ZFS send/receive with the source " \ "filesystem unmounted" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-c_recv_lz4_disabled.ksh0000644000000000000000000000007413607166147030470 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.913921491 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-c_recv_lz4_disabled.ksh0000755016037001603700000000404013607166147030466 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify a pool without the lz4 feature gracefully rejects a compressed stream # because on any sending pool that supports it, metadata will be compressed # with lz4 even if user data is not compressed. # # Strategy: # 1. For each of an uncompressed, gzip and lz4 dataset, do the following # receives into a pool without the lz4 feature: # 2. Attempt to receive the compressed stream (should fail) # 3. Attempt to receive the uncompressed stream (should succeed) # verify_runnable "both" log_assert "Verify compressed streams are rejected if incompatible." typeset compress_types="off gzip lz4" typeset send_ds=$POOL2/testds typeset recv_ds=$POOL3/testds function cleanup { poolexists $POOL2 && destroy_pool $POOL2 poolexists $POOL3 && destroy_pool $POOL3 log_must zpool create $POOL2 $DISK2 } log_onexit cleanup datasetexists $POOL3 && log_must zpool destroy $POOL3 log_must zpool create -d $POOL3 $DISK3 for compress in $compress_types; do datasetexists $send_ds && log_must_busy zfs destroy -r $send_ds datasetexists $recv_ds && log_must_busy zfs destroy -r $recv_ds log_must zfs create -o compress=$compress $send_ds typeset dir=$(get_prop mountpoint $send_ds) write_compressible $dir 16m log_must zfs snapshot $send_ds@full log_must eval "zfs send -c $send_ds@full >$BACKDIR/full-c" log_mustnot eval "zfs recv $recv_ds <$BACKDIR/full-c" log_must eval "zfs send $send_ds@full >$BACKDIR/full" log_must eval "zfs recv $recv_ds <$BACKDIR/full" done log_pass "Compressed streams are rejected if incompatible." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_014_pos.ksh0000644000000000000000000000007413607166133026233 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.873920207 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_014_pos.ksh0000755016037001603700000000324113607166133026233 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify that a pool imported readonly can be sent and received. # # Strategy: # 1. Make the source pool readonly, and receive it into pool2. # 2. Reset pool2, and repeat the send from a non-root fs of the source pool. # 3. Make the source pool read-write again. # verify_runnable "both" log_assert "zfs send will work on filesystems and volumes in a read-only pool." log_onexit cleanup_pool $POOL2 log_must zpool export $POOL log_must zpool import -o readonly=on $POOL log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" dstds=$(get_dst_ds $POOL $POOL2) log_must cmp_ds_subs $POOL $dstds log_must cmp_ds_cont $POOL $dstds log_must cleanup_pool $POOL2 log_must eval "zfs send -R $POOL/$FS@final > $BACKDIR/fs-final-R" log_must eval "zfs receive -d $POOL2 < $BACKDIR/fs-final-R" log_must_busy zpool export $POOL log_must zpool import $POOL dstds=$(get_dst_ds $POOL/$FS $POOL2) log_must cmp_ds_subs $POOL/$FS $dstds log_must cmp_ds_cont $POOL/$FS $dstds log_pass "zfs send will work on filesystems and volumes in a read-only pool." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_009_pos.ksh0000644000000000000000000000007413607166133026237 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.862919853 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_009_pos.ksh0000755016037001603700000000474413607166133026250 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # zfs receive can handle out of space correctly. # # STRATEGY: # 1. Create two pools, one is big and another is small. # 2. Fill the big pool with data. # 3. Take snapshot and backup the whole pool. # 4. Receive this stream in small pool. # 5. Verify zfs receive can handle the out of space error correctly. # verify_runnable "global" function cleanup { if datasetexists bpool ; then log_must_busy zpool destroy -f bpool fi if datasetexists spool ; then log_must_busy zpool destroy -f spool fi } log_assert "Verify zfs receive can handle out of space correctly." log_onexit cleanup log_must mkfile $MINVDEVSIZE $TESTDIR/bfile log_must mkfile $SPA_MINDEVSIZE $TESTDIR/sfile log_must zpool create bpool $TESTDIR/bfile log_must zpool create spool $TESTDIR/sfile # # Test out of space on sub-filesystem # log_must zfs create bpool/fs log_must mkfile 30M /bpool/fs/file log_must zfs snapshot bpool/fs@snap log_must eval "zfs send -R bpool/fs@snap > $BACKDIR/fs-R" log_mustnot eval "zfs receive -d -F spool < $BACKDIR/fs-R" log_must datasetnonexists spool/fs log_must ismounted spool # # Test out of space on top filesystem # log_must mv /bpool/fs/file /bpool log_must_busy zfs destroy -rf bpool/fs log_must zfs snapshot bpool@snap log_must eval "zfs send -R bpool@snap > $BACKDIR/bpool-R" log_mustnot eval "zfs receive -d -F spool < $BACKDIR/bpool-R" log_must datasetnonexists spool/fs log_must ismounted spool log_pass "zfs receive can handle out of space correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_021_pos.ksh0000644000000000000000000000007413607166133026231 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.881920463 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_021_pos.ksh0000755016037001603700000000322013607166133026226 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify resumability of a full and incremental ZFS send/receive with the # -e (embedded) flag in the presence of a corrupted stream. # # Strategy: # 1. Start a full ZFS send with the -e flag (embedded), redirect output to # a file # 2. Mess up the contents of the stream state file on disk # 3. Try ZFS receive, which should fail with a checksum mismatch error # 4. ZFS send to the stream state file again using the receive_resume_token # 5. ZFS receive and verify the receive completes successfully # 6. Repeat steps on an incremental ZFS send # verify_runnable "both" log_assert "Verify resumability of a full and incremental ZFS send/receive " \ "with the -e (embedded) flag" sendfs=$POOL/sendfs recvfs=$POOL2/recvfs streamfs=$POOL/stream log_onexit resume_cleanup $sendfs $streamfs test_fs_setup $sendfs $recvfs $streamfs resume_test "zfs send -v -e $sendfs@a" $streamfs $recvfs resume_test "zfs send -v -e -i @a $sendfs@b" $streamfs $recvfs file_check $sendfs $recvfs log_pass "Verify resumability of a full and incremental ZFS send/receive " \ "with the -e (embedded) flag" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_010_pos.ksh0000644000000000000000000000007413607166133026227 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.864919917 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_010_pos.ksh0000755016037001603700000000422513607166133026232 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # ZFS can handle stream with multiple identical (same GUID) snapshots # # STRATEGY: # 1. Recursively backup snapshot # 2. Restore it to the given filesystem # 3. Resend the snapshot again # 4. Verify this stream can be restore to this filesystem again # verify_runnable "both" log_assert "ZFS can handle stream with multiple identical (same GUID) snapshots" log_onexit cleanup_pool $POOL2 log_must zfs create $POOL2/$FS log_must zfs snapshot $POOL2/$FS@snap # # First round restore the stream # log_must eval "zfs send -R $POOL2/$FS@snap > $BACKDIR/fs-R" log_must eval "zfs receive -d -F $POOL2/$FS < $BACKDIR/fs-R" # # In order to avoid 'zfs send -R' failed, create snapshot for # all the sub-systems # list=$(zfs list -r -H -o name -t filesystem $POOL2/$FS) for item in $list ; do if datasetnonexists $item@snap ; then log_must zfs snapshot $item@snap fi done # # Second round restore the stream # log_must eval "zfs send -R $POOL2/$FS@snap > $BACKDIR/fs-R" dstds=$(get_dst_ds $POOL2/$FS $POOL2/$FS) log_must eval "zfs receive -d -F $dstds < $BACKDIR/fs-R" log_pass "ZFS can handle stream with multiple identical (same GUID) snapshots" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send-cD.ksh0000644000000000000000000000007413612141513025117 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.897920977 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send-cD.ksh0000755016037001603700000000513313612141513025121 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify that the -c and -D flags do not interfere with each other. # # Strategy: # 1. Write unique data to a filesystem and create a compressed, deduplicated # full stream. # 2. Verify that the stream and send dataset show the same size # 3. Make several copies of the original data, and create both full and # incremental compressed, deduplicated send streams # 4. Verify the full stream is no bigger than the stream from step 1 # 5. Verify the streams can be received correctly. # verify_runnable "both" log_assert "Verify that the -c and -D flags do not interfere with each other" log_onexit cleanup_pool $POOL2 typeset sendfs=$POOL2/sendfs typeset recvfs=$POOL2/recvfs typeset stream0=$BACKDIR/stream.0 typeset stream1=$BACKDIR/stream.1 typeset inc=$BACKDIR/stream.inc log_must zfs create -o compress=lz4 $sendfs log_must zfs create -o compress=lz4 $recvfs typeset dir=$(get_prop mountpoint $sendfs) # Don't use write_compressible: we want compressible but undeduplicable data. log_must eval "dd if=/dev/urandom bs=1024k count=4 | base64 >$dir/file" log_must zfs snapshot $sendfs@snap0 log_must eval "zfs send -D -c $sendfs@snap0 >$stream0" # The stream size should match at this point because the data is all unique verify_stream_size $stream0 $sendfs for i in {0..3}; do log_must cp $dir/file $dir/file.$i done log_must zfs snapshot $sendfs@snap1 # The stream sizes should match, since the second stream contains no new blocks log_must eval "zfs send -D -c $sendfs@snap1 >$stream1" typeset size0=$(stat -c %s $stream0) typeset size1=$(stat -c %s $stream1) within_percent $size0 $size1 90 || log_fail "$size0 and $size1" # Finally, make sure the receive works correctly. log_must eval "zfs send -D -c -i snap0 $sendfs@snap1 >$inc" log_must eval "zfs recv -d $recvfs <$stream0" log_must eval "zfs recv -d $recvfs <$inc" cmp_ds_cont $sendfs $recvfs # The size of the incremental should be the same as the initial send. typeset size2=$(stat -c %s $inc) within_percent $size0 $size2 90 || log_fail "$size0 and $size1" log_pass "The -c and -D flags do not interfere with each other" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143010025165 xustar000000000000000030 mtime=1579730440.974510698 30 atime=1579730458.164062606 30 ctime=1579730484.954922807 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/Makefile.in0000664016037001603700000006347713612143010025212 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/rsend DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/rsend ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ rsend_001_pos.ksh \ rsend_002_pos.ksh \ rsend_003_pos.ksh \ rsend_004_pos.ksh \ rsend_005_pos.ksh \ rsend_006_pos.ksh \ rsend_007_pos.ksh \ rsend_008_pos.ksh \ rsend_009_pos.ksh \ rsend_010_pos.ksh \ rsend_011_pos.ksh \ rsend_012_pos.ksh \ rsend_013_pos.ksh \ rsend_014_pos.ksh \ rsend_019_pos.ksh \ rsend_020_pos.ksh \ rsend_021_pos.ksh \ rsend_022_pos.ksh \ rsend_024_pos.ksh \ send_encrypted_files.ksh \ send_encrypted_hierarchy.ksh \ send_encrypted_props.ksh \ send_encrypted_truncated_files.ksh \ send-cD.ksh \ send-c_embedded_blocks.ksh \ send-c_incremental.ksh \ send-c_lz4_disabled.ksh \ send-c_mixed_compression.ksh \ send-c_props.ksh \ send-c_recv_dedup.ksh \ send-c_recv_lz4_disabled.ksh \ send-c_resume.ksh \ send-c_stream_size_estimate.ksh \ send-c_verify_contents.ksh \ send-c_verify_ratio.ksh \ send-c_volume.ksh \ send-c_zstreamdump.ksh \ send-cpL_varied_recsize.ksh \ send_freeobjects.ksh \ send_realloc_dnode_size.ksh \ send_realloc_files.ksh \ send_realloc_encrypted_files.ksh \ send_spill_block.ksh \ send_holds.ksh \ send_hole_birth.ksh \ send_mixed_raw.ksh \ send-wDR_encrypted_zvol.ksh dist_pkgdata_DATA = \ rsend.cfg \ rsend.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/rsend/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/rsend/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_freeobjects.ksh0000644000000000000000000000007413607166133027157 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.931922069 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_freeobjects.ksh0000755016037001603700000000420013607166133027153 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # Description: # Verify FREEOBJECTS record frees sequential objects (See # https://github.com/zfsonlinux/zfs/issues/6694) # # Strategy: # 1. Create three files with sequential object numbers, f1 f2 and f3 # 2. Delete f2 # 3. Take snapshot A # 4. Delete f3 # 5. Take snapshot B # 6. Receive a full send of A # 7. Receive an incremental send of B # 8. Fail test if f3 exists on received snapshot B # verify_runnable "both" log_assert "Verify FREEOBJECTS record frees sequential objects" sendds=sendfo recvds=recvfo f1=/$POOL/$sendds/f1 f2=/$POOL/$sendds/f2 f3=/$POOL/$sendds/f3 # # We need to set xattr=sa and dnodesize=legacy to guarantee sequential # object numbers for this test. Otherwise, if we used directory-based # xattrs, SELinux extended attributes might consume intervening object # numbers. # log_must zfs create -o xattr=sa -o dnodesize=legacy $POOL/$sendds tries=100 for ((i=0; i<$tries; i++)); do touch $f1 $f2 $f3 o1=$(ls -li $f1 | awk '{print $1}') o2=$(ls -li $f2 | awk '{print $1}') o3=$(ls -li $f3 | awk '{print $1}') if [[ $o2 -ne $(( $o1 + 1 )) ]] || [[ $o3 -ne $(( $o2 + 1 )) ]]; then rm -f $f1 $f2 $f3 else break fi done if [[ $i -eq $tries ]]; then log_fail "Failed to create three sequential objects" fi log_must rm $f2 log_must zfs snap $POOL/$sendds@A log_must rm $f3 log_must zfs snap $POOL/$sendds@B log_must eval "zfs send $POOL/$sendds@A | zfs recv $POOL/$recvds" log_must eval "zfs send -i $POOL/$sendds@A $POOL/$sendds@B |" \ "zfs recv $POOL/$recvds" log_mustnot zdb $POOL/$recvds@B $o3 log_pass "Verify FREEOBJECTS record frees sequential objects" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_007_pos.ksh0000644000000000000000000000007413607166133026235 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.857919693 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_007_pos.ksh0000755016037001603700000000522713607166133026243 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # Rename parent filesystem name will not change the dependent order. # # STRATEGY: # 1. Separately rename pool clone, filesystem and volume name. # 2. Send -R all the POOL # 3. Verify renamed dataset will not change the snapshot dependent order. # verify_runnable "both" set -A dtst \ "$POOL/pclone" "$POOL/$FS/pclone" \ "$POOL/$FS/fs1/fs2" "$POOL/fs2" if is_global_zone ; then typeset -i n=${#dtst[@]} dtst[((n))]="$POOL/vol"; dtst[((n+1))]="$POOL/$FS/fs1/vol" fi function cleanup { log_must cleanup_pool $POOL log_must cleanup_pool $POOL2 log_must setup_test_model $POOL } log_assert "Rename parent filesystem name will not change the dependent order." log_onexit cleanup typeset -i i=0 while ((i < ${#dtst[@]})); do log_must zfs rename ${dtst[$i]} ${dtst[((i+1))]} ((i += 2)) done # # Verify zfs send -R should succeed # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" dstds=$(get_dst_ds $POOL $POOL2) log_must cmp_ds_subs $POOL $dstds # # Verify zfs send -R -I should succeed # log_must eval "zfs send -R -I @init $dstds@final > " \ "$BACKDIR/pool-init-final-IR" list=$(getds_with_suffix $dstds @snapA) list="$list $(getds_with_suffix $dstds @snapB)" list="$list $(getds_with_suffix $dstds @snapC)" list="$list $(getds_with_suffix $dstds @final)" log_must destroy_tree $list if is_global_zone ; then log_must eval "zfs receive -d -F $dstds < $BACKDIR/pool-init-final-IR" else zfs receive -d -F $dstds < $BACKDIR/pool-init-final-IR fi log_must cmp_ds_subs $POOL $dstds log_pass "Rename parent filesystem name will not change the dependent order." zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/send_hole_birth.ksh0000644000000000000000000000007413607166133027003 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.945922518 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/send_hole_birth.ksh0000755016037001603700000000720513607166133027007 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # Verify send streams which contain holes. # # STRATEGY: # 1. Create an initial file for the full send and snapshot. # 2. Permute the file with holes and snapshot. # 3. Send the full and incremental snapshots to a new pool. # 4. Verify the contents of the files match. # sendpool=$POOL sendfs=$sendpool/sendfs recvpool=$POOL2 recvfs=$recvpool/recvfs verify_runnable "both" log_assert "Test hole_birth" log_onexit cleanup function cleanup { cleanup_pool $sendpool cleanup_pool $recvpool set_tunable64 send_holes_without_birth_time 1 } function send_and_verify { log_must eval "zfs send $sendfs@snap1 > $BACKDIR/pool-snap1" log_must eval "zfs receive -F $recvfs < $BACKDIR/pool-snap1" log_must eval "zfs send -i $sendfs@snap1 $sendfs@snap2 " \ ">$BACKDIR/pool-snap1-snap2" log_must eval "zfs receive $recvfs < $BACKDIR/pool-snap1-snap2" log_must cmp_md5s /$sendfs/file1 /$recvfs/file1 } # By default sending hole_birth times is disabled. This functionality needs # to be re-enabled for this test case to verify correctness. Once we're # comfortable that all hole_birth bugs has been resolved this behavior may # be re-enabled by default. log_must set_tunable64 send_holes_without_birth_time 0 # Incremental send truncating the file and adding new data. log_must zfs create -o recordsize=4k $sendfs log_must truncate -s 1G /$sendfs/file1 log_must dd if=/dev/urandom of=/$sendfs/file1 bs=4k count=11264 seek=1152 log_must zfs snapshot $sendfs@snap1 log_must truncate -s 4194304 /$sendfs/file1 log_must dd if=/dev/urandom of=/$sendfs/file1 bs=4k count=152 seek=384 \ conv=notrunc log_must dd if=/dev/urandom of=/$sendfs/file1 bs=4k count=10 seek=1408 \ conv=notrunc log_must zfs snapshot $sendfs@snap2 send_and_verify log_must cleanup_pool $sendpool log_must cleanup_pool $recvpool # Incremental send appending a hole and data. log_must zfs create -o recordsize=512 $sendfs log_must dd if=/dev/urandom of=/$sendfs/file1 bs=128k count=1 seek=1 log_must zfs snapshot $sendfs@snap1 log_must dd if=/dev/urandom of=/$sendfs/file1 bs=128k count=1 log_must dd if=/dev/urandom of=/$sendfs/file1 bs=128k count=1 seek=3 log_must zfs snapshot $sendfs@snap2 send_and_verify log_must cleanup_pool $sendpool log_must cleanup_pool $recvpool # Incremental send truncating the file and adding new data. log_must zfs create -o recordsize=512 $sendfs log_must truncate -s 300M /$sendfs/file1 log_must dd if=/dev/urandom of=/$sendfs/file1 bs=512 count=128k conv=notrunc log_must zfs snapshot $sendfs@snap1 log_must truncate -s 10M /$sendfs/file1 log_must dd if=/dev/urandom of=/$sendfs/file1 bs=512 count=1 seek=96k \ conv=notrunc log_must zfs snapshot $sendfs@snap2 send_and_verify log_pass "Test hole_birth" zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/PaxHeaders.151519/rsend_012_pos.ksh0000644000000000000000000000007413612141513026220 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.869920077 zfs-0.8.3/tests/zfs-tests/tests/functional/rsend/rsend_012_pos.ksh0000755016037001603700000001232513612141513026223 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/rsend/rsend.kshlib # # DESCRIPTION: # zfs send -R will backup all the filesystem properties correctly. # # STRATEGY: # 1. Setting properties for all the filesystem and volumes randomly # 2. Backup all the data from POOL by send -R # 3. Restore all the data in POOL2 # 4. Verify all the properties in the two pools are the same # verify_runnable "global" function edited_prop { typeset behaviour=$1 typeset ds=$2 typeset backfile=$TESTDIR/edited_prop_$ds case $behaviour in "get") typeset props=$(zfs inherit 2>&1 | \ awk '$2=="YES" {print $1}' | \ egrep -v "^vol|\.\.\.$") for item in $props ; do if [[ $item == "mlslabel" ]] && \ ! is_te_enabled ; then continue fi zfs get -H -o property,value $item $ds >> \ $backfile if (($? != 0)); then log_fail "zfs get -H -o property,value"\ "$item $ds > $backfile" fi done ;; "set") if [[ ! -f $backfile ]] ; then log_fail "$ds need backup properties firstly." fi typeset prop value while read prop value ; do eval zfs set $prop='$value' $ds if (($? != 0)); then log_fail "zfs set $prop=$value $ds" fi done < $backfile ;; *) log_fail "Unrecognized behaviour: $behaviour" esac } function cleanup { log_must cleanup_pool $POOL log_must cleanup_pool $POOL2 log_must edited_prop "set" $POOL log_must edited_prop "set" $POOL2 typeset prop for prop in $(fs_inherit_prop) ; do log_must zfs inherit $prop $POOL log_must zfs inherit $prop $POOL2 done log_must setup_test_model $POOL if [[ -d $TESTDIR ]]; then log_must rm -rf $TESTDIR/* fi } log_assert "Verify zfs send -R will backup all the filesystem properties " \ "correctly." log_onexit cleanup log_must edited_prop "get" $POOL log_must edited_prop "get" $POOL2 for fs in "$POOL" "$POOL/pclone" "$POOL/$FS" "$POOL/$FS/fs1" \ "$POOL/$FS/fs1/fs2" "$POOL/$FS/fs1/fclone" ; do rand_set_prop $fs aclinherit "discard" "noallow" "secure" "passthrough" rand_set_prop $fs checksum "on" "off" "fletcher2" "fletcher4" "sha256" rand_set_prop $fs acltype "off" "noacl" "posixacl" rand_set_prop $fs atime "on" "off" rand_set_prop $fs checksum "on" "off" "fletcher2" "fletcher4" "sha256" rand_set_prop $fs compression "on" "off" "lzjb" "gzip" \ "gzip-1" "gzip-2" "gzip-3" "gzip-4" "gzip-5" "gzip-6" \ "gzip-7" "gzip-8" "gzip-9" rand_set_prop $fs copies "1" "2" "3" rand_set_prop $fs devices "on" "off" rand_set_prop $fs exec "on" "off" rand_set_prop $fs quota "512M" "1024M" rand_set_prop $fs recordsize "512" "2K" "8K" "32K" "128K" rand_set_prop $fs dnodesize "legacy" "auto" "1k" "2k" "4k" "8k" "16k" rand_set_prop $fs setuid "on" "off" rand_set_prop $fs snapdir "hidden" "visible" rand_set_prop $fs xattr "on" "off" rand_set_prop $fs user:prop "aaa" "bbb" "23421" "()-+?" done for vol in "$POOL/vol" "$POOL/$FS/vol" ; do rand_set_prop $vol checksum "on" "off" "fletcher2" "fletcher4" "sha256" rand_set_prop $vol compression "on" "off" "lzjb" "gzip" \ "gzip-1" "gzip-2" "gzip-3" "gzip-4" "gzip-5" "gzip-6" \ "gzip-7" "gzip-8" "gzip-9" rand_set_prop $vol readonly "on" "off" rand_set_prop $vol copies "1" "2" "3" rand_set_prop $vol user:prop "aaa" "bbb" "23421" "()-+?" done # Verify inherited property can be received rand_set_prop $POOL redundant_metadata "all" "most" rand_set_prop $POOL sync "standard" "always" "disabled" # # Duplicate POOL2 for testing # log_must eval "zfs send -R $POOL@final > $BACKDIR/pool-final-R" log_must eval "zfs receive -d -F $POOL2 < $BACKDIR/pool-final-R" # # Define all the POOL/POOL2 datasets pair # set -A pair "$POOL" "$POOL2" \ "$POOL/$FS" "$POOL2/$FS" \ "$POOL/$FS/fs1" "$POOL2/$FS/fs1" \ "$POOL/$FS/fs1/fs2" "$POOL2/$FS/fs1/fs2" \ "$POOL/pclone" "$POOL2/pclone" \ "$POOL/$FS/fs1/fclone" "$POOL2/$FS/fs1/fclone" \ "$POOL/vol" "$POOL2/vol" \ "$POOL/$FS/vol" "$POOL2/$FS/vol" typeset -i i=0 while ((i < ${#pair[@]})); do log_must cmp_ds_prop ${pair[$i]} ${pair[((i+1))]} ((i += 2)) done zpool upgrade -v | grep "Snapshot properties" > /dev/null 2>&1 if (( $? == 0 )) ; then i=0 while ((i < ${#pair[@]})); do log_must cmp_ds_prop ${pair[$i]}@final ${pair[((i+1))]}@final ((i += 2)) done fi log_pass "Verify zfs send -R will backup all the filesystem properties " \ "correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/tmpfile0000644000000000000000000000013213612143065023402 xustar000000000000000030 mtime=1579730485.543941719 30 atime=1579730489.080055259 30 ctime=1579730485.543941719 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/0000775016037001603700000000000013612143065023463 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/tmpfile_001_pos.c0000644000000000000000000000007413607166133026536 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.534941431 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/tmpfile_001_pos.c0000644016037001603700000000354613607166133026543 0ustar00hutter2hutter200000000000000#include #include #include #include #include #include #include #include #include #include /* backward compat in case it's not defined */ #ifndef O_TMPFILE #define O_TMPFILE (020000000|O_DIRECTORY) #endif /* * DESCRIPTION: * Verify we can create tmpfile. * * STRATEGY: * 1. open(2) with O_TMPFILE. * 2. write(2) random data to it, then read(2) and compare. * 3. fsetxattr(2) random data, then fgetxattr(2) and compare. * 4. Verify the above operations run successfully. * */ #define BSZ 64 void fill_random(char *buf, int len) { int i; srand(time(NULL)); for (i = 0; i < len; i++) { buf[i] = (char)rand(); } } int main(int argc, char *argv[]) { int i, fd; char buf1[BSZ], buf2[BSZ] = {}; char *penv[] = {"TESTDIR"}; (void) fprintf(stdout, "Verify O_TMPFILE is working properly.\n"); /* * Get the environment variable values. */ for (i = 0; i < sizeof (penv) / sizeof (char *); i++) { if ((penv[i] = getenv(penv[i])) == NULL) { (void) fprintf(stderr, "getenv(penv[%d])\n", i); exit(1); } } fill_random(buf1, BSZ); fd = open(penv[0], O_RDWR|O_TMPFILE, 0666); if (fd < 0) { perror("open"); exit(2); } if (write(fd, buf1, BSZ) < 0) { perror("write"); close(fd); exit(3); } if (pread(fd, buf2, BSZ, 0) < 0) { perror("pread"); close(fd); exit(4); } if (memcmp(buf1, buf2, BSZ) != 0) { fprintf(stderr, "data corrupted\n"); close(fd); exit(5); } memset(buf2, 0, BSZ); if (fsetxattr(fd, "user.test", buf1, BSZ, 0) < 0) { perror("fsetxattr"); close(fd); exit(6); } if (fgetxattr(fd, "user.test", buf2, BSZ) < 0) { perror("fgetxattr"); close(fd); exit(7); } if (memcmp(buf1, buf2, BSZ) != 0) { fprintf(stderr, "xattr corrupted\n"); close(fd); exit(8); } close(fd); return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/tmpfile_test.c0000644000000000000000000000007413607166133026334 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.543941719 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/tmpfile_test.c0000644016037001603700000000172613607166133026337 0ustar00hutter2hutter200000000000000#include #include #include #include #include #include /* backward compat in case it's not defined */ #ifndef O_TMPFILE #define O_TMPFILE (020000000|O_DIRECTORY) #endif /* * DESCRIPTION: * Check if the kernel support O_TMPFILE. */ int main(int argc, char *argv[]) { int fd; struct stat buf; if (argc < 2) { fprintf(stderr, "Usage: %s dir\n", argv[0]); return (2); } if (stat(argv[1], &buf) < 0) { perror("stat"); return (2); } if (!S_ISDIR(buf.st_mode)) { fprintf(stderr, "\"%s\" is not a directory\n", argv[1]); return (2); } fd = open(argv[1], O_TMPFILE | O_WRONLY, 0666); if (fd < 0) { if (errno == EISDIR) { fprintf(stderr, "The kernel doesn't support O_TMPFILE\n"); return (1); } else if (errno == EOPNOTSUPP) { fprintf(stderr, "The filesystem doesn't support O_TMPFILE\n"); return (2); } perror("open"); } else { close(fd); } return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141521025513 xustar000000000000000030 atime=1579730441.387523957 30 ctime=1579730485.529941269 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/Makefile.am0000644016037001603700000000076513612141521025520 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/tmpfile dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/tmpfile pkgexec_PROGRAMS = tmpfile_test tmpfile_001_pos tmpfile_002_pos \ tmpfile_003_pos tmpfile_stat_mode tmpfile_test_SOURCES= tmpfile_test.c tmpfile_001_pos_SOURCES = tmpfile_001_pos.c tmpfile_002_pos_SOURCES = tmpfile_002_pos.c tmpfile_003_pos_SOURCES = tmpfile_003_pos.c zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025340 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.526941173 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/setup.ksh0000755016037001603700000000231613607166133025342 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup_noexit $DISK if ! $STF_SUITE/tests/functional/tmpfile/tmpfile_test $TESTDIR; then default_cleanup_noexit log_unsupported "The kernel/filesystem doesn't support O_TMPFILE" fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025627 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.524941109 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/cleanup.ksh0000755016037001603700000000200313607166133025622 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/tmpfile_002_pos.c0000644000000000000000000000007413607166133026537 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.536941495 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/tmpfile_002_pos.c0000644016037001603700000000372613607166133026544 0ustar00hutter2hutter200000000000000#include #include #include #include #include #include #include #include /* backward compat in case it's not defined */ #ifndef O_TMPFILE #define O_TMPFILE (020000000|O_DIRECTORY) #endif /* * DESCRIPTION: * Verify we can link tmpfile. * * STRATEGY: * 1. open(2) with O_TMPFILE. * 2. linkat(2). * 3. freeze the pool, export and re-import the pool. * 3. stat(2) the path to verify it has been created. * */ int main(int argc, char *argv[]) { int i, fd, ret; char spath[1024], dpath[1024]; char *penv[] = {"TESTDIR", "TESTFILE0"}; struct stat sbuf; (void) fprintf(stdout, "Verify O_TMPFILE file can be linked.\n"); /* * Get the environment variable values. */ for (i = 0; i < sizeof (penv) / sizeof (char *); i++) { if ((penv[i] = getenv(penv[i])) == NULL) { (void) fprintf(stderr, "getenv(penv[%d])\n", i); exit(1); } } fd = open(penv[0], O_RDWR|O_TMPFILE, 0666); if (fd < 0) { perror("open"); exit(2); } snprintf(spath, 1024, "/proc/self/fd/%d", fd); snprintf(dpath, 1024, "%s/%s", penv[0], penv[1]); if (linkat(AT_FDCWD, spath, AT_FDCWD, dpath, AT_SYMLINK_FOLLOW) < 0) { perror("linkat"); close(fd); exit(3); } if ((ret = system("sudo zpool freeze $TESTPOOL"))) { if (ret == -1) perror("system \"zpool freeze\""); else fprintf(stderr, "zpool freeze exits with %d\n", WEXITSTATUS(ret)); exit(4); } close(fd); if ((ret = system("sudo zpool export $TESTPOOL"))) { if (ret == -1) perror("system \"zpool export\""); else fprintf(stderr, "zpool export exits with %d\n", WEXITSTATUS(ret)); exit(4); } if ((ret = system("sudo zpool import $TESTPOOL"))) { if (ret == -1) perror("system \"zpool import\""); else fprintf(stderr, "zpool import exits with %d\n", WEXITSTATUS(ret)); exit(4); } if (stat(dpath, &sbuf) < 0) { perror("stat"); unlink(dpath); exit(5); } unlink(dpath); return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/tmpfile_stat_mode.c0000644000000000000000000000007413612141521027322 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.541941655 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/tmpfile_stat_mode.c0000644016037001603700000000527113612141521027324 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. */ #include #include #include #include #include #include /* backward compat in case it's not defined */ #ifndef O_TMPFILE #define O_TMPFILE (020000000|O_DIRECTORY) #endif /* * DESCRIPTION: * Verify stat(2) for O_TMPFILE file considers umask. * * STRATEGY: * 1. open(2) with O_TMPFILE. * 2. linkat(2). * 3. fstat(2)/stat(2) and verify .st_mode value. */ static void test_stat_mode(mode_t mask) { struct stat st, fst; int i, fd; char spath[1024], dpath[1024]; char *penv[] = {"TESTDIR", "TESTFILE0"}; mode_t masked = 0777 & ~mask; mode_t mode; /* * Get the environment variable values. */ for (i = 0; i < sizeof (penv) / sizeof (char *); i++) { if ((penv[i] = getenv(penv[i])) == NULL) { fprintf(stderr, "getenv(penv[%d])\n", i); exit(1); } } umask(mask); fd = open(penv[0], O_RDWR|O_TMPFILE, 0777); if (fd == -1) { perror("open"); exit(2); } if (fstat(fd, &fst) == -1) { perror("fstat"); close(fd); exit(3); } snprintf(spath, sizeof (spath), "/proc/self/fd/%d", fd); snprintf(dpath, sizeof (dpath), "%s/%s", penv[0], penv[1]); unlink(dpath); if (linkat(AT_FDCWD, spath, AT_FDCWD, dpath, AT_SYMLINK_FOLLOW) == -1) { perror("linkat"); close(fd); exit(4); } close(fd); if (stat(dpath, &st) == -1) { perror("stat"); exit(5); } unlink(dpath); /* Verify fstat(2) result */ mode = fst.st_mode & 0777; if (mode != masked) { fprintf(stderr, "fstat(2) %o != %o\n", mode, masked); exit(6); } /* Verify stat(2) result */ mode = st.st_mode & 0777; if (mode != masked) { fprintf(stderr, "stat(2) %o != %o\n", mode, masked); exit(7); } } int main(int argc, char *argv[]) { fprintf(stdout, "Verify stat(2) for O_TMPFILE file considers umask.\n"); test_stat_mode(0022); test_stat_mode(0077); return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143011025513 xustar000000000000000030 mtime=1579730441.446525852 30 atime=1579730458.437071371 30 ctime=1579730485.531941335 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/Makefile.in0000664016037001603700000010313513612143011025522 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = tmpfile_test$(EXEEXT) tmpfile_001_pos$(EXEEXT) \ tmpfile_002_pos$(EXEEXT) tmpfile_003_pos$(EXEEXT) \ tmpfile_stat_mode$(EXEEXT) subdir = tests/zfs-tests/tests/functional/tmpfile ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(pkgexec_PROGRAMS) am_tmpfile_001_pos_OBJECTS = tmpfile_001_pos.$(OBJEXT) tmpfile_001_pos_OBJECTS = $(am_tmpfile_001_pos_OBJECTS) tmpfile_001_pos_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am_tmpfile_002_pos_OBJECTS = tmpfile_002_pos.$(OBJEXT) tmpfile_002_pos_OBJECTS = $(am_tmpfile_002_pos_OBJECTS) tmpfile_002_pos_LDADD = $(LDADD) am_tmpfile_003_pos_OBJECTS = tmpfile_003_pos.$(OBJEXT) tmpfile_003_pos_OBJECTS = $(am_tmpfile_003_pos_OBJECTS) tmpfile_003_pos_LDADD = $(LDADD) tmpfile_stat_mode_SOURCES = tmpfile_stat_mode.c tmpfile_stat_mode_OBJECTS = tmpfile_stat_mode.$(OBJEXT) tmpfile_stat_mode_LDADD = $(LDADD) am_tmpfile_test_OBJECTS = tmpfile_test.$(OBJEXT) tmpfile_test_OBJECTS = $(am_tmpfile_test_OBJECTS) tmpfile_test_LDADD = $(LDADD) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' SCRIPTS = $(dist_pkgdata_SCRIPTS) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(tmpfile_001_pos_SOURCES) $(tmpfile_002_pos_SOURCES) \ $(tmpfile_003_pos_SOURCES) tmpfile_stat_mode.c \ $(tmpfile_test_SOURCES) DIST_SOURCES = $(tmpfile_001_pos_SOURCES) $(tmpfile_002_pos_SOURCES) \ $(tmpfile_003_pos_SOURCES) tmpfile_stat_mode.c \ $(tmpfile_test_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/tmpfile ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/tmpfile tmpfile_test_SOURCES = tmpfile_test.c tmpfile_001_pos_SOURCES = tmpfile_001_pos.c tmpfile_002_pos_SOURCES = tmpfile_002_pos.c tmpfile_003_pos_SOURCES = tmpfile_003_pos.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/tmpfile/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/tmpfile/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list tmpfile_001_pos$(EXEEXT): $(tmpfile_001_pos_OBJECTS) $(tmpfile_001_pos_DEPENDENCIES) @rm -f tmpfile_001_pos$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tmpfile_001_pos_OBJECTS) $(tmpfile_001_pos_LDADD) $(LIBS) tmpfile_002_pos$(EXEEXT): $(tmpfile_002_pos_OBJECTS) $(tmpfile_002_pos_DEPENDENCIES) @rm -f tmpfile_002_pos$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tmpfile_002_pos_OBJECTS) $(tmpfile_002_pos_LDADD) $(LIBS) tmpfile_003_pos$(EXEEXT): $(tmpfile_003_pos_OBJECTS) $(tmpfile_003_pos_DEPENDENCIES) @rm -f tmpfile_003_pos$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tmpfile_003_pos_OBJECTS) $(tmpfile_003_pos_LDADD) $(LIBS) tmpfile_stat_mode$(EXEEXT): $(tmpfile_stat_mode_OBJECTS) $(tmpfile_stat_mode_DEPENDENCIES) @rm -f tmpfile_stat_mode$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tmpfile_stat_mode_OBJECTS) $(tmpfile_stat_mode_LDADD) $(LIBS) tmpfile_test$(EXEEXT): $(tmpfile_test_OBJECTS) $(tmpfile_test_DEPENDENCIES) @rm -f tmpfile_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(tmpfile_test_OBJECTS) $(tmpfile_test_LDADD) $(LIBS) install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tmpfile_001_pos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tmpfile_002_pos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tmpfile_003_pos.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tmpfile_stat_mode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tmpfile_test.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-dist_pkgdataSCRIPTS \ uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/PaxHeaders.151519/tmpfile_003_pos.c0000644000000000000000000000007413607166133026540 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.538941559 zfs-0.8.3/tests/zfs-tests/tests/functional/tmpfile/tmpfile_003_pos.c0000644016037001603700000000256313607166133026543 0ustar00hutter2hutter200000000000000#include #include #include #include #include #include #include #include /* backward compat in case it's not defined */ #ifndef O_TMPFILE #define O_TMPFILE (020000000|O_DIRECTORY) #endif /* * DESCRIPTION: * Verify O_EXCL tmpfile cannot be linked. * * STRATEGY: * 1. open(2) with O_TMPFILE|O_EXCL. * 2. linkat(2). * 3. stat(2) the path to verify it wasn't created. * */ int main(int argc, char *argv[]) { int i, fd; char spath[1024], dpath[1024]; char *penv[] = {"TESTDIR", "TESTFILE0"}; struct stat sbuf; (void) fprintf(stdout, "Verify O_EXCL tmpfile cannot be linked.\n"); /* * Get the environment variable values. */ for (i = 0; i < sizeof (penv) / sizeof (char *); i++) { if ((penv[i] = getenv(penv[i])) == NULL) { (void) fprintf(stderr, "getenv(penv[%d])\n", i); exit(1); } } fd = open(penv[0], O_RDWR|O_TMPFILE|O_EXCL, 0666); if (fd < 0) { perror("open"); exit(2); } snprintf(spath, 1024, "/proc/self/fd/%d", fd); snprintf(dpath, 1024, "%s/%s", penv[0], penv[1]); if (linkat(AT_FDCWD, spath, AT_FDCWD, dpath, AT_SYMLINK_FOLLOW) == 0) { fprintf(stderr, "linkat returns successfully\n"); close(fd); exit(3); } if (stat(dpath, &sbuf) == 0) { fprintf(stderr, "stat returns successfully\n"); close(fd); exit(4); } close(fd); return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/mv_files0000644000000000000000000000013213612143063023544 xustar000000000000000030 mtime=1579730483.352871367 30 atime=1579730489.081055291 30 ctime=1579730483.352871367 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/0000775016037001603700000000000013612143063023625 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/PaxHeaders.151519/random_creation.ksh0000644000000000000000000000007413607166147027515 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.348871239 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/random_creation.ksh0000755016037001603700000000214313607166147027515 0ustar00hutter2hutter200000000000000#!/bin/ksh -p source "${STF_SUITE}/include/libtest.shlib" source "${STF_SUITE}/tests/functional/mv_files/mv_files.cfg" # This will test the #7401 regression. log_assert "Check that creating many files quickly is safe" DIR="${TESTDIR}/RANDOM_SMALL" log_must mkdir "${DIR}" count=0 for i in $(shuf -i 1-"${RC_PASS1}") ; do if ! touch "${DIR}/${i}" ; then log_fail "error creating ${i} after ${count} files" fi count=$((count+1)) done visible="$(find "${DIR}" -type f|wc -l)" log_must [ "${visible}" -eq "${RC_PASS1}" ] log_assert "Check that creating them in another order is safe" DIR1="${TESTDIR}/RANDOM2" log_must mv "${DIR}" "${DIR1}" log_must mkdir "${DIR}" count=0 for i in $(cd "${DIR1}" ; ls -U . ) ; do if ! touch "${DIR}/${i}" ; then log_fail "error creating ${i} after ${count} files" fi count=$((count+1)) [ "${count}" -eq "${RC_PASS2}" ] && break done visible="$(find "${DIR}" -type f|wc -l)" if [ "${visible}" -eq "${RC_PASS2}" ] ; then log_pass "Created all ${RC_PASS2} files" else log_fail "Number of created files ${visible} is not ${RC_PASS2}" fi zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/PaxHeaders.151519/mv_files_001_pos.ksh0000644000000000000000000000007413607166133027411 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.344871111 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/mv_files_001_pos.ksh0000755016037001603700000000362713607166133027421 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mv_files/mv_files_common.kshlib # # DESCRIPTION: # Doing a 'mv' of a large amount of files between two directories # within a zfs filesystem works without errors. # # STRATEGY: # # 1. create a pool and a zfs filesystem # 2. create two directories within the filesystem # 3. create a large number of files within a directory # 4. Move files from one directory to another and back again # 5. validate file number # 6. increase the number of files to $MVNUMFILES + $MVNUMINCR # 7. repeat steps 3,4,5,6 above # 8. verify the data integrity # verify_runnable "global" function cleanup { PIDS="" rm -f $OLDDIR/* >/dev/null 2>&1 rm -f $NEWDIR_IN_FS/* >/dev/null 2>&1 } log_assert "Doing a 'mv' of a large amount of files within a zfs filesystem" \ "works without errors." log_onexit cleanup mv_test $OLDDIR $NEWDIR_IN_FS (($? != 0 )) && log_fail "'mv' test failed to complete." log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025671 xustar000000000000000030 atime=1579730439.705469952 30 ctime=1579730483.350871303 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/Makefile.am0000644016037001603700000000037713607166133025675 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/mv_files dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ mv_files_001_pos.ksh \ mv_files_002_pos.ksh \ random_creation.ksh dist_pkgdata_DATA = \ mv_files.cfg \ mv_files_common.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025504 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.339870951 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/setup.ksh0000755016037001603700000000236513607166133025512 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mv_files/mv_files_common.kshlib verify_runnable "global" check_bg_procs_limit_num if [[ $? -ne 0 ]]; then log_note "ksh background process limit number is 25" export GANGPIDS=25 fi export PIDS="" init_setup $DISK log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025773 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.342871047 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/cleanup.ksh0000755016037001603700000000273213607166133025777 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mv_files/mv_files_common.kshlib verify_runnable "global" [[ -f $TEST_BASE_DIR/exitsZero.ksh ]] && \ log_must rm -f $TEST_BASE_DIR/exitsZero.ksh [[ -f $TEST_BASE_DIR/testbackgprocs.ksh ]] && \ log_must rm -f $TEST_BASE_DIR/testbackgprocs.ksh ismounted $TESTPOOL/$TESTFS_TGT (( $? == 0 )) && log_must zfs umount $TESTPOOL/$TESTFS_TGT log_must zfs destroy $TESTPOOL/$TESTFS_TGT [[ -d $TESTDIR_TGT ]] && log_must rm -rf $TESTDIR_TGT default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/PaxHeaders.151519/mv_files_002_pos.ksh0000644000000000000000000000007413607166133027412 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.346871175 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/mv_files_002_pos.ksh0000755016037001603700000000373013607166133027415 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mv_files/mv_files_common.kshlib # # DESCRIPTION: # Doing a 'mv' of a large amount of files between two directories across # two zfs filesystems works without errors. # # STRATEGY: # # 1. create a pool and two zfs filesystems # 2. create a directory in each filesystem # 3. create a large number of files in a directory of a filesystem # 4. Move files from the directory to another directory in another # filesystem and back again # 5. validate file number # 6. increase the number of files to $MVNUMFILES + $MVNUMINCR # 7. repeat steps 3,4,5,6 above # 8. verify the data integrity # verify_runnable "global" function cleanup { PIDS="" rm -f $OLDDIR/* >/dev/null 2>&1 rm -f $NEWDIR_ACROSS_FS/* >/dev/null 2>&1 } log_assert "Doing a 'mv' of a large amount of files across two zfs filesystems" \ "works without errors." log_onexit cleanup mv_test $OLDDIR $NEWDIR_ACROSS_FS (($? != 0 )) && \ log_fail "'mv' test failed to complete." log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007025664 xustar000000000000000030 mtime=1579730439.743471173 30 atime=1579730457.466040195 30 ctime=1579730483.352871367 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/Makefile.in0000664016037001603700000006143113612143007025675 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/mv_files DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/mv_files ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ mv_files_001_pos.ksh \ mv_files_002_pos.ksh \ random_creation.ksh dist_pkgdata_DATA = \ mv_files.cfg \ mv_files_common.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/mv_files/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/mv_files/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/PaxHeaders.151519/mv_files.cfg0000644000000000000000000000007413607166133026122 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.335870821 zfs-0.8.3/tests/zfs-tests/tests/functional/mv_files/mv_files.cfg0000644016037001603700000000322713607166133026123 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # export DISK=${DISKS%% *} export DISKSARRAY=$DISKS export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') set_device_dir export TESTFILE=testfile export TESTDIR_TGT=${TEST_BASE_DIR%%/}/testdir_tgt export TESTFS_TGT=testzfs_tgt export OLDDIR=$TESTDIR/olddir export NEWDIR_IN_FS=$TESTDIR/newdir export NEWDIR_ACROSS_FS=$TESTDIR_TGT/newdir export MVNUMFILES=2000 # export MVNUMINCR=1000 # export GANGPIDS=50 # # controls the "random_creation" test export RC_PASS1=65536 # export RC_PASS2=8192 # $TEST_BASE_DIR/exitsZero.ksh echo "exit 0" >> $TEST_BASE_DIR/exitsZero.ksh chmod 777 $TEST_BASE_DIR/exitsZero.ksh cat < $TEST_BASE_DIR/testbackgprocs.ksh #!/bin/ksh # # exitsZero.ksh is a one line script # that exit with status of "0" # PIDS="" typeset -i i=1 while [ \$i -le 50 ] do $TEST_BASE_DIR/exitsZero.ksh & PIDS="\$PIDS \$!" (( i = i + 1 )) done sleep 1 for pid in \$PIDS do wait \$pid (( \$? == 127 )) && exit 1 done exit 0 EOF ksh $TEST_BASE_DIR/testbackgprocs.ksh if [[ $? -eq 1 ]]; then # # Current ksh being executed has a limit # of 25 background processes. # return 1 else return 0 fi } function init_setup { typeset disklist=$1 create_pool $TESTPOOL "$disklist" if ! is_global_zone ; then reexport_pool fi rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR mkdir -p $TESTDIR || log_unresolved Could not create $TESTDIR rm -rf $TESTDIR_TGT || log_unresolved Could not remove $TESTDIR_TGT mkdir -p $TESTDIR_TGT || log_unresolved Could not create $TESTDIR_TGT log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS_TGT log_must zfs set mountpoint=$TESTDIR_TGT $TESTPOOL/$TESTFS_TGT mkdir -p $OLDDIR || log_unresolved Could not create $OLDDIR mkdir -p $NEWDIR_IN_FS || log_unresolved Could not create $NEWDIR_IN_FS mkdir -p $NEWDIR_ACROSS_FS || log_unresolved Could not create $NEWDIR_ACROSS_FS } # # Generate given number files in a # directory of zfs file system # $1 - the directory holds the generated files # $2 - number of to-be-generated files # function generate_files { typeset -i count typeset -i proc_num=0 if (( $2 == $MVNUMFILES )); then count=1 else count=$MVNUMFILES+1 fi while (( count <= $2 )) do cp /etc/passwd $1/file_$count \ > /dev/null 2>&1 & (( proc_num = proc_num + 1 )) if (( proc_num >= GANGPIDS )); then wait proc_num=0 fi (( count = count + 1 )) done wait } # # Move given number files from one directory to # another directory in parallel # $1 - source directory # $2 - target directory # function mv_files { find $1 -type f -print | xargs -i \ mv {} $2 > /dev/null 2>&1 } # # Count the files number after moving, and # compare it with the original number # $1 - directory that to be operated # $2 - original files number # function count_files { typeset -i file_num file_num=`find $1 -type f -print | \ wc -l` (( file_num != $2 )) && \ log_fail "The file number of target directory"\ "$2 is not equal to that of the source "\ "directory $1" } # # Running the 'mv' test # $1 - old directory # $2 - new directory # function mv_test { typeset old=$1 typeset new=$2 typeset -i inc_num=$(( MVNUMFILES + MVNUMINCR )) typeset -i num=0 for num in $MVNUMFILES $inc_num do generate_files $old $num mv_files $old $new count_files $new $num mv_files $new $old count_files $old $num done typeset dir=$(get_device_dir $DISKS) verify_filesys "$TESTPOOL" "$TESTPOOL/$TESTFS" "$dir" return 0 } zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/checksum0000644000000000000000000000013213612143054023542 xustar000000000000000030 mtime=1579730476.163640535 30 atime=1579730489.081055291 30 ctime=1579730476.163640535 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/0000775016037001603700000000000013612143054023623 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/run_skein_test.ksh0000644000000000000000000000007413607166133027376 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.149640084 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/run_skein_test.ksh0000755016037001603700000000136713607166133027405 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Description: # Run the tests for the Skein hash algorithm. # log_assert "Run the tests for the Skein hash algorithm." freq=$(get_cpu_freq) log_must $STF_SUITE/tests/functional/checksum/skein_test $freq log_pass "Skein tests passed." zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/run_edonr_test.ksh0000644000000000000000000000007413607166133027374 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.145639956 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/run_edonr_test.ksh0000755016037001603700000000136713607166133027403 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Description: # Run the tests for the EdonR hash algorithm. # log_assert "Run the tests for the EdonR hash algorithm." freq=$(get_cpu_freq) log_must $STF_SUITE/tests/functional/checksum/edonr_test $freq log_pass "EdonR tests passed." zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/filetest_001_pos.ksh0000644000000000000000000000007413612141514027412 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.151640148 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/filetest_001_pos.ksh0000755016037001603700000000655513612141514027425 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018, 2019 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/properties.shlib . $STF_SUITE/tests/functional/checksum/default.cfg # DESCRIPTION: # Sanity test to make sure checksum algorithms work. # For each checksum, create a file in the pool using that checksum. Verify # that there are no checksum errors. Next, for each checksum, create a single # file in the pool using that checksum, corrupt the file, and verify that we # correctly catch the checksum errors. # # STRATEGY: # Test 1 # 1. Create a mirrored pool # 2. Create a file using each checksum # 3. Export/import/scrub the pool # 4. Verify there's no checksum errors. # 5. Clear the pool # # Test 2 # 6. For each checksum: # 7. Create a file using the checksum # 8. Corrupt all level 0 blocks in the file # 9. Scrub the pool # 10. Verify that there are checksum errors verify_runnable "both" function cleanup { echo cleanup [[ -e $TESTDIR ]] && \ log_must rm -rf $TESTDIR/* > /dev/null 2>&1 } log_assert "Create and read back files with using different checksum algorithms" log_onexit cleanup WRITESZ=1048576 # Get a list of vdevs in our pool set -A array $(get_disklist_fullpath) # Get the first vdev, since we will corrupt it later firstvdev=${array[0]} # Test each checksum by writing a file using it, confirm there are no errors. typeset -i i=1 while [[ $i -lt ${#CHECKSUM_TYPES[*]} ]]; do type=${CHECKSUM_TYPES[i]} log_must zfs set checksum=$type $TESTPOOL log_must file_write -o overwrite -f $TESTDIR/test_$type \ -b $WRITESZ -c 5 -d R (( i = i + 1 )) done log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL log_must zpool scrub $TESTPOOL log_must wait_scrubbed $TESTPOOL cksum=$(zpool status -P -v $TESTPOOL | grep "$firstvdev" | awk '{print $5}') log_assert "Normal file write test saw $cksum checksum errors" log_must [ $cksum -eq 0 ] rm -fr $TESTDIR/* log_assert "Test corrupting the files and seeing checksum errors" typeset -i j=1 while [[ $j -lt ${#CHECKSUM_TYPES[*]} ]]; do type=${CHECKSUM_TYPES[$j]} log_must zfs set checksum=$type $TESTPOOL log_must file_write -o overwrite -f $TESTDIR/test_$type \ -b $WRITESZ -c 5 -d R # Corrupt the level 0 blocks of this file corrupt_blocks_at_level $TESTDIR/test_$type log_must zpool scrub $TESTPOOL log_must wait_scrubbed $TESTPOOL cksum=$(zpool status -P -v $TESTPOOL | grep "$firstvdev" | \ awk '{print $5}') log_assert "Checksum '$type' caught $cksum checksum errors" log_must [ $cksum -ne 0 ] rm -f $TESTDIR/test_$type log_must zpool clear $TESTPOOL (( j = j + 1 )) done zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/edonr_test.c0000644000000000000000000000007413612141522026134 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.158640372 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/edonr_test.c0000644016037001603700000001530113612141522026131 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2013 Saso Kiselkov. All rights reserved. */ /* * This is just to keep the compiler happy about sys/time.h not declaring * gettimeofday due to -D_KERNEL (we can do this since we're actually * running in userspace, but we need -D_KERNEL for the remaining Edon-R code). */ #ifdef _KERNEL #undef _KERNEL #endif #include #include #include #include #include #include typedef enum boolean { B_FALSE, B_TRUE } boolean_t; typedef unsigned long long u_longlong_t; int aok = 0; /* * Test messages from: * http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/SHA_All.pdf */ const char *test_msg0 = "abc"; const char *test_msg1 = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmn" "lmnomnopnopq"; const char *test_msg2 = "abcdefghbcdefghicdefghijdefghijkefghijklfghi" "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"; /* * Test digests computed by hand. There's no formal standard or spec for edonr. */ const uint8_t edonr_224_test_digests[][28] = { { /* for test_msg0 */ 0x56, 0x63, 0xc4, 0x93, 0x95, 0x20, 0xfa, 0xf6, 0x12, 0x31, 0x65, 0xa4, 0x66, 0xf2, 0x56, 0x01, 0x95, 0x2e, 0xa9, 0xe4, 0x24, 0xdd, 0xc9, 0x6b, 0xef, 0xd0, 0x40, 0x94 }, { /* for test_msg1 */ 0xd0, 0x13, 0xe4, 0x87, 0x4d, 0x06, 0x8d, 0xca, 0x4e, 0x14, 0xb9, 0x37, 0x2f, 0xce, 0x12, 0x20, 0x60, 0xf8, 0x5c, 0x0a, 0xfd, 0x7a, 0x7d, 0x97, 0x88, 0x2b, 0x05, 0x75 } /* no test vector for test_msg2 */ }; const uint8_t edonr_256_test_digests[][32] = { { /* for test_msg0 */ 0x54, 0xd7, 0x8b, 0x13, 0xc7, 0x4e, 0xda, 0x5a, 0xed, 0xc2, 0x71, 0xcc, 0x88, 0x1f, 0xb2, 0x2f, 0x83, 0x99, 0xaf, 0xd3, 0x04, 0x0b, 0x6a, 0x39, 0x2d, 0x73, 0x94, 0x05, 0x50, 0x8d, 0xd8, 0x51 }, { /* for test_msg1 */ 0x49, 0x2d, 0x0b, 0x19, 0xab, 0x1e, 0xde, 0x3a, 0xea, 0x9b, 0xf2, 0x39, 0x3a, 0xb1, 0x21, 0xde, 0x21, 0xf6, 0x80, 0x1f, 0xad, 0xbe, 0x8b, 0x07, 0xc7, 0xfb, 0xe6, 0x99, 0x0e, 0x4d, 0x73, 0x63 } /* no test vectorfor test_msg2 */ }; const uint8_t edonr_384_test_digests[][48] = { { /* for test_msg0 */ 0x0e, 0x7c, 0xd7, 0x85, 0x78, 0x77, 0xe0, 0x89, 0x5b, 0x1c, 0xdf, 0x49, 0xf4, 0x1d, 0x20, 0x9c, 0x72, 0x7d, 0x2e, 0x57, 0x9b, 0x9b, 0x9a, 0xdc, 0x60, 0x27, 0x97, 0x82, 0xb9, 0x90, 0x72, 0xec, 0x7e, 0xce, 0xd3, 0x16, 0x5f, 0x47, 0x75, 0x48, 0xfa, 0x60, 0x72, 0x7e, 0x01, 0xc7, 0x7c, 0xc6 }, { /* no test vector for test_msg1 */ 0 }, { /* for test_msg2 */ 0xe2, 0x34, 0xa1, 0x02, 0x83, 0x76, 0xae, 0xe6, 0x82, 0xd9, 0x38, 0x32, 0x0e, 0x00, 0x78, 0xd2, 0x34, 0xdb, 0xb9, 0xbd, 0xf0, 0x08, 0xa8, 0x0f, 0x63, 0x1c, 0x3d, 0x4a, 0xfd, 0x0a, 0xe9, 0x59, 0xdc, 0xd4, 0xce, 0xcd, 0x8d, 0x67, 0x6c, 0xea, 0xbb, 0x1a, 0x32, 0xed, 0x5c, 0x6b, 0xf1, 0x7f } }; const uint8_t edonr_512_test_digests[][64] = { { /* for test_msg0 */ 0x1b, 0x14, 0xdb, 0x15, 0x5f, 0x1d, 0x40, 0x65, 0x94, 0xb8, 0xce, 0xf7, 0x0a, 0x43, 0x62, 0xec, 0x6b, 0x5d, 0xe6, 0xa5, 0xda, 0xf5, 0x0e, 0xc9, 0x99, 0xe9, 0x87, 0xc1, 0x9d, 0x30, 0x49, 0xe2, 0xde, 0x59, 0x77, 0xbb, 0x05, 0xb1, 0xbb, 0x22, 0x00, 0x50, 0xa1, 0xea, 0x5b, 0x46, 0xa9, 0xf1, 0x74, 0x0a, 0xca, 0xfb, 0xf6, 0xb4, 0x50, 0x32, 0xad, 0xc9, 0x0c, 0x62, 0x83, 0x72, 0xc2, 0x2b }, { /* no test vector for test_msg1 */ 0 }, { /* for test_msg2 */ 0x53, 0x51, 0x07, 0x0d, 0xc5, 0x1c, 0x3b, 0x2b, 0xac, 0xa5, 0xa6, 0x0d, 0x02, 0x52, 0xcc, 0xb4, 0xe4, 0x92, 0x1a, 0x96, 0xfe, 0x5a, 0x69, 0xe7, 0x6d, 0xad, 0x48, 0xfd, 0x21, 0xa0, 0x84, 0x5a, 0xd5, 0x7f, 0x88, 0x0b, 0x3e, 0x4a, 0x90, 0x7b, 0xc5, 0x03, 0x15, 0x18, 0x42, 0xbb, 0x94, 0x9e, 0x1c, 0xba, 0x74, 0x39, 0xa6, 0x40, 0x9a, 0x34, 0xb8, 0x43, 0x6c, 0xb4, 0x69, 0x21, 0x58, 0x3c } }; int main(int argc, char *argv[]) { boolean_t failed = B_FALSE; uint64_t cpu_mhz = 0; if (argc == 2) cpu_mhz = atoi(argv[1]); #define EDONR_ALGO_TEST(_m, mode, testdigest) \ do { \ EdonRState ctx; \ uint8_t digest[mode / 8]; \ EdonRInit(&ctx, mode); \ EdonRUpdate(&ctx, (const uint8_t *) _m, strlen(_m) * 8);\ EdonRFinal(&ctx, digest); \ (void) printf("Edon-R-%-6sMessage: " #_m \ "\tResult: ", #mode); \ if (bcmp(digest, testdigest, mode / 8) == 0) { \ (void) printf("OK\n"); \ } else { \ (void) printf("FAILED!\n"); \ failed = B_TRUE; \ } \ NOTE(CONSTCOND) \ } while (0) #define EDONR_PERF_TEST(mode) \ do { \ EdonRState ctx; \ uint8_t digest[mode / 8]; \ uint8_t block[131072]; \ uint64_t delta; \ double cpb = 0; \ int i; \ struct timeval start, end; \ bzero(block, sizeof (block)); \ (void) gettimeofday(&start, NULL); \ EdonRInit(&ctx, mode); \ for (i = 0; i < 8192; i++) \ EdonRUpdate(&ctx, block, sizeof (block) * 8); \ EdonRFinal(&ctx, digest); \ (void) gettimeofday(&end, NULL); \ delta = (end.tv_sec * 1000000llu + end.tv_usec) - \ (start.tv_sec * 1000000llu + start.tv_usec); \ if (cpu_mhz != 0) { \ cpb = (cpu_mhz * 1e6 * ((double)delta / \ 1000000)) / (8192 * 128 * 1024); \ } \ (void) printf("Edon-R-%-6s%llu us (%.02f CPB)\n", #mode,\ (u_longlong_t)delta, cpb); \ NOTE(CONSTCOND) \ } while (0) (void) printf("Running algorithm correctness tests:\n"); EDONR_ALGO_TEST(test_msg0, 224, edonr_224_test_digests[0]); EDONR_ALGO_TEST(test_msg1, 224, edonr_224_test_digests[1]); EDONR_ALGO_TEST(test_msg0, 256, edonr_256_test_digests[0]); EDONR_ALGO_TEST(test_msg1, 256, edonr_256_test_digests[1]); EDONR_ALGO_TEST(test_msg0, 384, edonr_384_test_digests[0]); EDONR_ALGO_TEST(test_msg2, 384, edonr_384_test_digests[2]); EDONR_ALGO_TEST(test_msg0, 512, edonr_512_test_digests[0]); EDONR_ALGO_TEST(test_msg2, 512, edonr_512_test_digests[2]); if (failed) return (1); (void) printf("Running performance tests (hashing 1024 MiB of " "data):\n"); EDONR_PERF_TEST(256); EDONR_PERF_TEST(512); return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/skein_test.c0000644000000000000000000000007413607166147026154 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.163640535 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/skein_test.c0000644016037001603700000002763313607166147026164 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2013 Saso Kiselkov. All rights reserved. */ /* * This is just to keep the compiler happy about sys/time.h not declaring * gettimeofday due to -D_KERNEL (we can do this since we're actually * running in userspace, but we need -D_KERNEL for the remaining Skein code). */ #ifdef _KERNEL #undef _KERNEL #endif #include #include #include #include #include #define NOTE(x) typedef enum boolean { B_FALSE, B_TRUE } boolean_t; typedef unsigned long long u_longlong_t; /* * Skein test suite using values from the Skein V1.3 specification found at: * http://www.skein-hash.info/sites/default/files/skein1.3.pdf */ /* * Test messages from the Skein spec, Appendix C. */ const uint8_t test_msg0[] = { 0xFF }; const uint8_t test_msg1[] = { 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE1, 0xE0 }; const uint8_t test_msg2[] = { 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE1, 0xE0, 0xDF, 0xDE, 0xDD, 0xDC, 0xDB, 0xDA, 0xD9, 0xD8, 0xD7, 0xD6, 0xD5, 0xD4, 0xD3, 0xD2, 0xD1, 0xD0, 0xCF, 0xCE, 0xCD, 0xCC, 0xCB, 0xCA, 0xC9, 0xC8, 0xC7, 0xC6, 0xC5, 0xC4, 0xC3, 0xC2, 0xC1, 0xC0 }; const uint8_t test_msg3[] = { 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE1, 0xE0, 0xDF, 0xDE, 0xDD, 0xDC, 0xDB, 0xDA, 0xD9, 0xD8, 0xD7, 0xD6, 0xD5, 0xD4, 0xD3, 0xD2, 0xD1, 0xD0, 0xCF, 0xCE, 0xCD, 0xCC, 0xCB, 0xCA, 0xC9, 0xC8, 0xC7, 0xC6, 0xC5, 0xC4, 0xC3, 0xC2, 0xC1, 0xC0, 0xBF, 0xBE, 0xBD, 0xBC, 0xBB, 0xBA, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, 0xB4, 0xB3, 0xB2, 0xB1, 0xB0, 0xAF, 0xAE, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0x9E, 0x9D, 0x9C, 0x9B, 0x9A, 0x99, 0x98, 0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0x91, 0x90, 0x8F, 0x8E, 0x8D, 0x8C, 0x8B, 0x8A, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80 }; const uint8_t test_msg4[] = { 0xFF, 0xFE, 0xFD, 0xFC, 0xFB, 0xFA, 0xF9, 0xF8, 0xF7, 0xF6, 0xF5, 0xF4, 0xF3, 0xF2, 0xF1, 0xF0, 0xEF, 0xEE, 0xED, 0xEC, 0xEB, 0xEA, 0xE9, 0xE8, 0xE7, 0xE6, 0xE5, 0xE4, 0xE3, 0xE2, 0xE1, 0xE0, 0xDF, 0xDE, 0xDD, 0xDC, 0xDB, 0xDA, 0xD9, 0xD8, 0xD7, 0xD6, 0xD5, 0xD4, 0xD3, 0xD2, 0xD1, 0xD0, 0xCF, 0xCE, 0xCD, 0xCC, 0xCB, 0xCA, 0xC9, 0xC8, 0xC7, 0xC6, 0xC5, 0xC4, 0xC3, 0xC2, 0xC1, 0xC0, 0xBF, 0xBE, 0xBD, 0xBC, 0xBB, 0xBA, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5, 0xB4, 0xB3, 0xB2, 0xB1, 0xB0, 0xAF, 0xAE, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9, 0xA8, 0xA7, 0xA6, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0x9E, 0x9D, 0x9C, 0x9B, 0x9A, 0x99, 0x98, 0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0x91, 0x90, 0x8F, 0x8E, 0x8D, 0x8C, 0x8B, 0x8A, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80, 0x7F, 0x7E, 0x7D, 0x7C, 0x7B, 0x7A, 0x79, 0x78, 0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0x70, 0x6F, 0x6E, 0x6D, 0x6C, 0x6B, 0x6A, 0x69, 0x68, 0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60, 0x5F, 0x5E, 0x5D, 0x5C, 0x5B, 0x5A, 0x59, 0x58, 0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, 0x4F, 0x4E, 0x4D, 0x4C, 0x4B, 0x4A, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x3F, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30, 0x2F, 0x2E, 0x2D, 0x2C, 0x2B, 0x2A, 0x29, 0x28, 0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20, 0x1F, 0x1E, 0x1D, 0x1C, 0x1B, 0x1A, 0x19, 0x18, 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }; /* * Test digests from the Skein spec, Appendix C. */ const uint8_t skein_256_test_digests[][32] = { { /* for test_msg0 */ 0x0B, 0x98, 0xDC, 0xD1, 0x98, 0xEA, 0x0E, 0x50, 0xA7, 0xA2, 0x44, 0xC4, 0x44, 0xE2, 0x5C, 0x23, 0xDA, 0x30, 0xC1, 0x0F, 0xC9, 0xA1, 0xF2, 0x70, 0xA6, 0x63, 0x7F, 0x1F, 0x34, 0xE6, 0x7E, 0xD2 }, { /* for test_msg1 */ 0x8D, 0x0F, 0xA4, 0xEF, 0x77, 0x7F, 0xD7, 0x59, 0xDF, 0xD4, 0x04, 0x4E, 0x6F, 0x6A, 0x5A, 0xC3, 0xC7, 0x74, 0xAE, 0xC9, 0x43, 0xDC, 0xFC, 0x07, 0x92, 0x7B, 0x72, 0x3B, 0x5D, 0xBF, 0x40, 0x8B }, { /* for test_msg2 */ 0xDF, 0x28, 0xE9, 0x16, 0x63, 0x0D, 0x0B, 0x44, 0xC4, 0xA8, 0x49, 0xDC, 0x9A, 0x02, 0xF0, 0x7A, 0x07, 0xCB, 0x30, 0xF7, 0x32, 0x31, 0x82, 0x56, 0xB1, 0x5D, 0x86, 0x5A, 0xC4, 0xAE, 0x16, 0x2F } /* no test digests for test_msg3 and test_msg4 */ }; const uint8_t skein_512_test_digests[][64] = { { /* for test_msg0 */ 0x71, 0xB7, 0xBC, 0xE6, 0xFE, 0x64, 0x52, 0x22, 0x7B, 0x9C, 0xED, 0x60, 0x14, 0x24, 0x9E, 0x5B, 0xF9, 0xA9, 0x75, 0x4C, 0x3A, 0xD6, 0x18, 0xCC, 0xC4, 0xE0, 0xAA, 0xE1, 0x6B, 0x31, 0x6C, 0xC8, 0xCA, 0x69, 0x8D, 0x86, 0x43, 0x07, 0xED, 0x3E, 0x80, 0xB6, 0xEF, 0x15, 0x70, 0x81, 0x2A, 0xC5, 0x27, 0x2D, 0xC4, 0x09, 0xB5, 0xA0, 0x12, 0xDF, 0x2A, 0x57, 0x91, 0x02, 0xF3, 0x40, 0x61, 0x7A }, { /* no test vector for test_msg1 */ 0, }, { /* for test_msg2 */ 0x45, 0x86, 0x3B, 0xA3, 0xBE, 0x0C, 0x4D, 0xFC, 0x27, 0xE7, 0x5D, 0x35, 0x84, 0x96, 0xF4, 0xAC, 0x9A, 0x73, 0x6A, 0x50, 0x5D, 0x93, 0x13, 0xB4, 0x2B, 0x2F, 0x5E, 0xAD, 0xA7, 0x9F, 0xC1, 0x7F, 0x63, 0x86, 0x1E, 0x94, 0x7A, 0xFB, 0x1D, 0x05, 0x6A, 0xA1, 0x99, 0x57, 0x5A, 0xD3, 0xF8, 0xC9, 0xA3, 0xCC, 0x17, 0x80, 0xB5, 0xE5, 0xFA, 0x4C, 0xAE, 0x05, 0x0E, 0x98, 0x98, 0x76, 0x62, 0x5B }, { /* for test_msg3 */ 0x91, 0xCC, 0xA5, 0x10, 0xC2, 0x63, 0xC4, 0xDD, 0xD0, 0x10, 0x53, 0x0A, 0x33, 0x07, 0x33, 0x09, 0x62, 0x86, 0x31, 0xF3, 0x08, 0x74, 0x7E, 0x1B, 0xCB, 0xAA, 0x90, 0xE4, 0x51, 0xCA, 0xB9, 0x2E, 0x51, 0x88, 0x08, 0x7A, 0xF4, 0x18, 0x87, 0x73, 0xA3, 0x32, 0x30, 0x3E, 0x66, 0x67, 0xA7, 0xA2, 0x10, 0x85, 0x6F, 0x74, 0x21, 0x39, 0x00, 0x00, 0x71, 0xF4, 0x8E, 0x8B, 0xA2, 0xA5, 0xAD, 0xB7 } /* no test digests for test_msg4 */ }; const uint8_t skein_1024_test_digests[][128] = { { /* for test_msg0 */ 0xE6, 0x2C, 0x05, 0x80, 0x2E, 0xA0, 0x15, 0x24, 0x07, 0xCD, 0xD8, 0x78, 0x7F, 0xDA, 0x9E, 0x35, 0x70, 0x3D, 0xE8, 0x62, 0xA4, 0xFB, 0xC1, 0x19, 0xCF, 0xF8, 0x59, 0x0A, 0xFE, 0x79, 0x25, 0x0B, 0xCC, 0xC8, 0xB3, 0xFA, 0xF1, 0xBD, 0x24, 0x22, 0xAB, 0x5C, 0x0D, 0x26, 0x3F, 0xB2, 0xF8, 0xAF, 0xB3, 0xF7, 0x96, 0xF0, 0x48, 0x00, 0x03, 0x81, 0x53, 0x1B, 0x6F, 0x00, 0xD8, 0x51, 0x61, 0xBC, 0x0F, 0xFF, 0x4B, 0xEF, 0x24, 0x86, 0xB1, 0xEB, 0xCD, 0x37, 0x73, 0xFA, 0xBF, 0x50, 0xAD, 0x4A, 0xD5, 0x63, 0x9A, 0xF9, 0x04, 0x0E, 0x3F, 0x29, 0xC6, 0xC9, 0x31, 0x30, 0x1B, 0xF7, 0x98, 0x32, 0xE9, 0xDA, 0x09, 0x85, 0x7E, 0x83, 0x1E, 0x82, 0xEF, 0x8B, 0x46, 0x91, 0xC2, 0x35, 0x65, 0x65, 0x15, 0xD4, 0x37, 0xD2, 0xBD, 0xA3, 0x3B, 0xCE, 0xC0, 0x01, 0xC6, 0x7F, 0xFD, 0xE1, 0x5B, 0xA8 }, { /* no test vector for test_msg1 */ 0 }, { /* no test vector for test_msg2 */ 0 }, { /* for test_msg3 */ 0x1F, 0x3E, 0x02, 0xC4, 0x6F, 0xB8, 0x0A, 0x3F, 0xCD, 0x2D, 0xFB, 0xBC, 0x7C, 0x17, 0x38, 0x00, 0xB4, 0x0C, 0x60, 0xC2, 0x35, 0x4A, 0xF5, 0x51, 0x18, 0x9E, 0xBF, 0x43, 0x3C, 0x3D, 0x85, 0xF9, 0xFF, 0x18, 0x03, 0xE6, 0xD9, 0x20, 0x49, 0x31, 0x79, 0xED, 0x7A, 0xE7, 0xFC, 0xE6, 0x9C, 0x35, 0x81, 0xA5, 0xA2, 0xF8, 0x2D, 0x3E, 0x0C, 0x7A, 0x29, 0x55, 0x74, 0xD0, 0xCD, 0x7D, 0x21, 0x7C, 0x48, 0x4D, 0x2F, 0x63, 0x13, 0xD5, 0x9A, 0x77, 0x18, 0xEA, 0xD0, 0x7D, 0x07, 0x29, 0xC2, 0x48, 0x51, 0xD7, 0xE7, 0xD2, 0x49, 0x1B, 0x90, 0x2D, 0x48, 0x91, 0x94, 0xE6, 0xB7, 0xD3, 0x69, 0xDB, 0x0A, 0xB7, 0xAA, 0x10, 0x6F, 0x0E, 0xE0, 0xA3, 0x9A, 0x42, 0xEF, 0xC5, 0x4F, 0x18, 0xD9, 0x37, 0x76, 0x08, 0x09, 0x85, 0xF9, 0x07, 0x57, 0x4F, 0x99, 0x5E, 0xC6, 0xA3, 0x71, 0x53, 0xA5, 0x78 }, { /* for test_msg4 */ 0x84, 0x2A, 0x53, 0xC9, 0x9C, 0x12, 0xB0, 0xCF, 0x80, 0xCF, 0x69, 0x49, 0x1B, 0xE5, 0xE2, 0xF7, 0x51, 0x5D, 0xE8, 0x73, 0x3B, 0x6E, 0xA9, 0x42, 0x2D, 0xFD, 0x67, 0x66, 0x65, 0xB5, 0xFA, 0x42, 0xFF, 0xB3, 0xA9, 0xC4, 0x8C, 0x21, 0x77, 0x77, 0x95, 0x08, 0x48, 0xCE, 0xCD, 0xB4, 0x8F, 0x64, 0x0F, 0x81, 0xFB, 0x92, 0xBE, 0xF6, 0xF8, 0x8F, 0x7A, 0x85, 0xC1, 0xF7, 0xCD, 0x14, 0x46, 0xC9, 0x16, 0x1C, 0x0A, 0xFE, 0x8F, 0x25, 0xAE, 0x44, 0x4F, 0x40, 0xD3, 0x68, 0x00, 0x81, 0xC3, 0x5A, 0xA4, 0x3F, 0x64, 0x0F, 0xD5, 0xFA, 0x3C, 0x3C, 0x03, 0x0B, 0xCC, 0x06, 0xAB, 0xAC, 0x01, 0xD0, 0x98, 0xBC, 0xC9, 0x84, 0xEB, 0xD8, 0x32, 0x27, 0x12, 0x92, 0x1E, 0x00, 0xB1, 0xBA, 0x07, 0xD6, 0xD0, 0x1F, 0x26, 0x90, 0x70, 0x50, 0x25, 0x5E, 0xF2, 0xC8, 0xE2, 0x4F, 0x71, 0x6C, 0x52, 0xA5 } }; int main(int argc, char *argv[]) { boolean_t failed = B_FALSE; uint64_t cpu_mhz = 0; if (argc == 2) cpu_mhz = atoi(argv[1]); #define SKEIN_ALGO_TEST(_m, mode, diglen, testdigest) \ do { \ Skein ## mode ## _Ctxt_t ctx; \ uint8_t digest[diglen / 8]; \ (void) Skein ## mode ## _Init(&ctx, diglen); \ (void) Skein ## mode ## _Update(&ctx, _m, sizeof (_m)); \ (void) Skein ## mode ## _Final(&ctx, digest); \ (void) printf("Skein" #mode "/" #diglen \ "\tMessage: " #_m "\tResult: "); \ if (bcmp(digest, testdigest, diglen / 8) == 0) { \ (void) printf("OK\n"); \ } else { \ (void) printf("FAILED!\n"); \ failed = B_TRUE; \ } \ NOTE(CONSTCOND) \ } while (0) #define SKEIN_PERF_TEST(mode, diglen) \ do { \ Skein ## mode ## _Ctxt_t ctx; \ uint8_t digest[diglen / 8]; \ uint8_t block[131072]; \ uint64_t delta; \ double cpb = 0; \ int i; \ struct timeval start, end; \ bzero(block, sizeof (block)); \ (void) gettimeofday(&start, NULL); \ (void) Skein ## mode ## _Init(&ctx, diglen); \ for (i = 0; i < 8192; i++) { \ (void) Skein ## mode ## _Update(&ctx, block, \ sizeof (block)); \ } \ (void) Skein ## mode ## _Final(&ctx, digest); \ (void) gettimeofday(&end, NULL); \ delta = (end.tv_sec * 1000000llu + end.tv_usec) - \ (start.tv_sec * 1000000llu + start.tv_usec); \ if (cpu_mhz != 0) { \ cpb = (cpu_mhz * 1e6 * ((double)delta / \ 1000000)) / (8192 * 128 * 1024); \ } \ (void) printf("Skein" #mode "/" #diglen "\t%llu us " \ "(%.02f CPB)\n", (u_longlong_t)delta, cpb); \ NOTE(CONSTCOND) \ } while (0) (void) printf("Running algorithm correctness tests:\n"); SKEIN_ALGO_TEST(test_msg0, _256, 256, skein_256_test_digests[0]); SKEIN_ALGO_TEST(test_msg1, _256, 256, skein_256_test_digests[1]); SKEIN_ALGO_TEST(test_msg2, _256, 256, skein_256_test_digests[2]); SKEIN_ALGO_TEST(test_msg0, _512, 512, skein_512_test_digests[0]); SKEIN_ALGO_TEST(test_msg2, _512, 512, skein_512_test_digests[2]); SKEIN_ALGO_TEST(test_msg3, _512, 512, skein_512_test_digests[3]); SKEIN_ALGO_TEST(test_msg0, 1024, 1024, skein_1024_test_digests[0]); SKEIN_ALGO_TEST(test_msg3, 1024, 1024, skein_1024_test_digests[3]); SKEIN_ALGO_TEST(test_msg4, 1024, 1024, skein_1024_test_digests[4]); if (failed) return (1); (void) printf("Running performance tests (hashing 1024 MiB of " "data):\n"); SKEIN_PERF_TEST(_256, 256); SKEIN_PERF_TEST(_512, 512); SKEIN_PERF_TEST(1024, 1024); return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147025674 xustar000000000000000030 atime=1579730434.446301097 30 ctime=1579730476.154640244 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/Makefile.am0000644016037001603700000000117713607166147025677 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am AM_CPPFLAGS += -I$(top_srcdir)/include LDADD = $(top_builddir)/lib/libicp/libicp.la AUTOMAKE_OPTIONS = subdir-objects pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/checksum dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ run_edonr_test.ksh \ run_sha2_test.ksh \ run_skein_test.ksh \ filetest_001_pos.ksh dist_pkgdata_DATA = \ default.cfg pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/checksum pkgexec_PROGRAMS = \ edonr_test \ skein_test \ sha2_test edonr_test_SOURCES = edonr_test.c skein_test_SOURCES = skein_test.c sha2_test_SOURCES = sha2_test.c zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025502 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.141639828 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/setup.ksh0000755016037001603700000000205113607166133025500 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_mirror_setup $DISKS zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025771 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.143639892 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/cleanup.ksh0000755016037001603700000000213313607166133025770 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/scrub_mirror/default.cfg verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/run_sha2_test.ksh0000644000000000000000000000007313607166133027121 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.14764002 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/run_sha2_test.ksh0000755016037001603700000000136613607166133027130 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Description: # Run the tests for the SHA-2 hash algorithm. # log_assert "Run the tests for the SHA-2 hash algorithm." freq=$(get_cpu_freq) log_must $STF_SUITE/tests/functional/checksum/sha2_test $freq log_pass "SHA-2 tests passed." zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/default.cfg0000644000000000000000000000007313607166133025737 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.13863973 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/default.cfg0000644016037001603700000000202113607166133025730 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # set -A CHECKSUM_TYPES "fletcher2" "fletcher4" "sha256" "sha512" "skein" "edonr" zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002025655 xustar000000000000000030 mtime=1579730434.507303057 30 atime=1579730454.444943195 30 ctime=1579730476.156640308 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/Makefile.in0000664016037001603700000010343013612143002025662 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = edonr_test$(EXEEXT) skein_test$(EXEEXT) \ sha2_test$(EXEEXT) subdir = tests/zfs-tests/tests/functional/checksum ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)" \ "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(pkgexec_PROGRAMS) am_edonr_test_OBJECTS = edonr_test.$(OBJEXT) edonr_test_OBJECTS = $(am_edonr_test_OBJECTS) edonr_test_LDADD = $(LDADD) edonr_test_DEPENDENCIES = $(top_builddir)/lib/libicp/libicp.la AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am_sha2_test_OBJECTS = sha2_test.$(OBJEXT) sha2_test_OBJECTS = $(am_sha2_test_OBJECTS) sha2_test_LDADD = $(LDADD) sha2_test_DEPENDENCIES = $(top_builddir)/lib/libicp/libicp.la am_skein_test_OBJECTS = skein_test.$(OBJEXT) skein_test_OBJECTS = $(am_skein_test_OBJECTS) skein_test_LDADD = $(LDADD) skein_test_DEPENDENCIES = $(top_builddir)/lib/libicp/libicp.la am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' SCRIPTS = $(dist_pkgdata_SCRIPTS) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(edonr_test_SOURCES) $(sha2_test_SOURCES) \ $(skein_test_SOURCES) DIST_SOURCES = $(edonr_test_SOURCES) $(sha2_test_SOURCES) \ $(skein_test_SOURCES) DATA = $(dist_pkgdata_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/checksum ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) -I$(top_srcdir)/include AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) LDADD = $(top_builddir)/lib/libicp/libicp.la AUTOMAKE_OPTIONS = subdir-objects dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ run_edonr_test.ksh \ run_sha2_test.ksh \ run_skein_test.ksh \ filetest_001_pos.ksh dist_pkgdata_DATA = \ default.cfg pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/checksum edonr_test_SOURCES = edonr_test.c skein_test_SOURCES = skein_test.c sha2_test_SOURCES = sha2_test.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/checksum/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/checksum/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list edonr_test$(EXEEXT): $(edonr_test_OBJECTS) $(edonr_test_DEPENDENCIES) @rm -f edonr_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(edonr_test_OBJECTS) $(edonr_test_LDADD) $(LIBS) sha2_test$(EXEEXT): $(sha2_test_OBJECTS) $(sha2_test_DEPENDENCIES) @rm -f sha2_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(sha2_test_OBJECTS) $(sha2_test_LDADD) $(LIBS) skein_test$(EXEEXT): $(skein_test_OBJECTS) $(skein_test_DEPENDENCIES) @rm -f skein_test$(EXEEXT) $(AM_V_CCLD)$(LINK) $(skein_test_OBJECTS) $(skein_test_LDADD) $(LIBS) install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edonr_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha2_test.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skein_test.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS \ uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-pkgexecPROGRAMS \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-dist_pkgdataDATA \ uninstall-dist_pkgdataSCRIPTS uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/PaxHeaders.151519/sha2_test.c0000644000000000000000000000007413607166147025700 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.161640471 zfs-0.8.3/tests/zfs-tests/tests/functional/checksum/sha2_test.c0000644016037001603700000001732613607166147025706 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://opensource.org/licenses/CDDL-1.0. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2013 Saso Kiselkov. All rights reserved. */ /* * This is just to keep the compiler happy about sys/time.h not declaring * gettimeofday due to -D_KERNEL (we can do this since we're actually * running in userspace, but we need -D_KERNEL for the remaining SHA2 code). */ #ifdef _KERNEL #undef _KERNEL #endif #include #include #include #include #include #define _SHA2_IMPL #include #define NOTE(x) typedef enum boolean { B_FALSE, B_TRUE } boolean_t; typedef unsigned long long u_longlong_t; /* * Test messages from: * http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/SHA_All.pdf */ const char *test_msg0 = "abc"; const char *test_msg1 = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmn" "lmnomnopnopq"; const char *test_msg2 = "abcdefghbcdefghicdefghijdefghijkefghijklfghi" "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu"; /* * Test digests from: * http://csrc.nist.gov/groups/ST/toolkit/documents/Examples/SHA_All.pdf */ const uint8_t sha256_test_digests[][32] = { { /* for test_msg0 */ 0xBA, 0x78, 0x16, 0xBF, 0x8F, 0x01, 0xCF, 0xEA, 0x41, 0x41, 0x40, 0xDE, 0x5D, 0xAE, 0x22, 0x23, 0xB0, 0x03, 0x61, 0xA3, 0x96, 0x17, 0x7A, 0x9C, 0xB4, 0x10, 0xFF, 0x61, 0xF2, 0x00, 0x15, 0xAD }, { /* for test_msg1 */ 0x24, 0x8D, 0x6A, 0x61, 0xD2, 0x06, 0x38, 0xB8, 0xE5, 0xC0, 0x26, 0x93, 0x0C, 0x3E, 0x60, 0x39, 0xA3, 0x3C, 0xE4, 0x59, 0x64, 0xFF, 0x21, 0x67, 0xF6, 0xEC, 0xED, 0xD4, 0x19, 0xDB, 0x06, 0xC1 } /* no test vector for test_msg2 */ }; const uint8_t sha384_test_digests[][48] = { { /* for test_msg0 */ 0xCB, 0x00, 0x75, 0x3F, 0x45, 0xA3, 0x5E, 0x8B, 0xB5, 0xA0, 0x3D, 0x69, 0x9A, 0xC6, 0x50, 0x07, 0x27, 0x2C, 0x32, 0xAB, 0x0E, 0xDE, 0xD1, 0x63, 0x1A, 0x8B, 0x60, 0x5A, 0x43, 0xFF, 0x5B, 0xED, 0x80, 0x86, 0x07, 0x2B, 0xA1, 0xE7, 0xCC, 0x23, 0x58, 0xBA, 0xEC, 0xA1, 0x34, 0xC8, 0x25, 0xA7 }, { /* no test vector for test_msg1 */ 0 }, { /* for test_msg2 */ 0x09, 0x33, 0x0C, 0x33, 0xF7, 0x11, 0x47, 0xE8, 0x3D, 0x19, 0x2F, 0xC7, 0x82, 0xCD, 0x1B, 0x47, 0x53, 0x11, 0x1B, 0x17, 0x3B, 0x3B, 0x05, 0xD2, 0x2F, 0xA0, 0x80, 0x86, 0xE3, 0xB0, 0xF7, 0x12, 0xFC, 0xC7, 0xC7, 0x1A, 0x55, 0x7E, 0x2D, 0xB9, 0x66, 0xC3, 0xE9, 0xFA, 0x91, 0x74, 0x60, 0x39 } }; const uint8_t sha512_test_digests[][64] = { { /* for test_msg0 */ 0xDD, 0xAF, 0x35, 0xA1, 0x93, 0x61, 0x7A, 0xBA, 0xCC, 0x41, 0x73, 0x49, 0xAE, 0x20, 0x41, 0x31, 0x12, 0xE6, 0xFA, 0x4E, 0x89, 0xA9, 0x7E, 0xA2, 0x0A, 0x9E, 0xEE, 0xE6, 0x4B, 0x55, 0xD3, 0x9A, 0x21, 0x92, 0x99, 0x2A, 0x27, 0x4F, 0xC1, 0xA8, 0x36, 0xBA, 0x3C, 0x23, 0xA3, 0xFE, 0xEB, 0xBD, 0x45, 0x4D, 0x44, 0x23, 0x64, 0x3C, 0xE8, 0x0E, 0x2A, 0x9A, 0xC9, 0x4F, 0xA5, 0x4C, 0xA4, 0x9F }, { /* no test vector for test_msg1 */ 0 }, { /* for test_msg2 */ 0x8E, 0x95, 0x9B, 0x75, 0xDA, 0xE3, 0x13, 0xDA, 0x8C, 0xF4, 0xF7, 0x28, 0x14, 0xFC, 0x14, 0x3F, 0x8F, 0x77, 0x79, 0xC6, 0xEB, 0x9F, 0x7F, 0xA1, 0x72, 0x99, 0xAE, 0xAD, 0xB6, 0x88, 0x90, 0x18, 0x50, 0x1D, 0x28, 0x9E, 0x49, 0x00, 0xF7, 0xE4, 0x33, 0x1B, 0x99, 0xDE, 0xC4, 0xB5, 0x43, 0x3A, 0xC7, 0xD3, 0x29, 0xEE, 0xB6, 0xDD, 0x26, 0x54, 0x5E, 0x96, 0xE5, 0x5B, 0x87, 0x4B, 0xE9, 0x09 } }; const uint8_t sha512_224_test_digests[][28] = { { /* for test_msg0 */ 0x46, 0x34, 0x27, 0x0F, 0x70, 0x7B, 0x6A, 0x54, 0xDA, 0xAE, 0x75, 0x30, 0x46, 0x08, 0x42, 0xE2, 0x0E, 0x37, 0xED, 0x26, 0x5C, 0xEE, 0xE9, 0xA4, 0x3E, 0x89, 0x24, 0xAA }, { /* no test vector for test_msg1 */ 0 }, { /* for test_msg2 */ 0x23, 0xFE, 0xC5, 0xBB, 0x94, 0xD6, 0x0B, 0x23, 0x30, 0x81, 0x92, 0x64, 0x0B, 0x0C, 0x45, 0x33, 0x35, 0xD6, 0x64, 0x73, 0x4F, 0xE4, 0x0E, 0x72, 0x68, 0x67, 0x4A, 0xF9 } }; const uint8_t sha512_256_test_digests[][32] = { { /* for test_msg0 */ 0x53, 0x04, 0x8E, 0x26, 0x81, 0x94, 0x1E, 0xF9, 0x9B, 0x2E, 0x29, 0xB7, 0x6B, 0x4C, 0x7D, 0xAB, 0xE4, 0xC2, 0xD0, 0xC6, 0x34, 0xFC, 0x6D, 0x46, 0xE0, 0xE2, 0xF1, 0x31, 0x07, 0xE7, 0xAF, 0x23 }, { /* no test vector for test_msg1 */ 0 }, { /* for test_msg2 */ 0x39, 0x28, 0xE1, 0x84, 0xFB, 0x86, 0x90, 0xF8, 0x40, 0xDA, 0x39, 0x88, 0x12, 0x1D, 0x31, 0xBE, 0x65, 0xCB, 0x9D, 0x3E, 0xF8, 0x3E, 0xE6, 0x14, 0x6F, 0xEA, 0xC8, 0x61, 0xE1, 0x9B, 0x56, 0x3A } }; /* * Local reimplementation of cmn_err, since it's used in sha2.c. */ /*ARGSUSED*/ void cmn_err(int level, char *format, ...) { va_list ap; va_start(ap, format); /* LINTED: E_SEC_PRINTF_VAR_FMT */ (void) vfprintf(stderr, format, ap); va_end(ap); } int main(int argc, char *argv[]) { boolean_t failed = B_FALSE; uint64_t cpu_mhz = 0; if (argc == 2) cpu_mhz = atoi(argv[1]); #define SHA2_ALGO_TEST(_m, mode, diglen, testdigest) \ do { \ SHA2_CTX ctx; \ uint8_t digest[diglen / 8]; \ SHA2Init(SHA ## mode ## _MECH_INFO_TYPE, &ctx); \ SHA2Update(&ctx, _m, strlen(_m)); \ SHA2Final(digest, &ctx); \ (void) printf("SHA%-9sMessage: " #_m \ "\tResult: ", #mode); \ if (bcmp(digest, testdigest, diglen / 8) == 0) { \ (void) printf("OK\n"); \ } else { \ (void) printf("FAILED!\n"); \ failed = B_TRUE; \ } \ NOTE(CONSTCOND) \ } while (0) #define SHA2_PERF_TEST(mode, diglen) \ do { \ SHA2_CTX ctx; \ uint8_t digest[diglen / 8]; \ uint8_t block[131072]; \ uint64_t delta; \ double cpb = 0; \ int i; \ struct timeval start, end; \ bzero(block, sizeof (block)); \ (void) gettimeofday(&start, NULL); \ SHA2Init(SHA ## mode ## _MECH_INFO_TYPE, &ctx); \ for (i = 0; i < 8192; i++) \ SHA2Update(&ctx, block, sizeof (block)); \ SHA2Final(digest, &ctx); \ (void) gettimeofday(&end, NULL); \ delta = (end.tv_sec * 1000000llu + end.tv_usec) - \ (start.tv_sec * 1000000llu + start.tv_usec); \ if (cpu_mhz != 0) { \ cpb = (cpu_mhz * 1e6 * ((double)delta / \ 1000000)) / (8192 * 128 * 1024); \ } \ (void) printf("SHA%-9s%llu us (%.02f CPB)\n", #mode, \ (u_longlong_t)delta, cpb); \ NOTE(CONSTCOND) \ } while (0) (void) printf("Running algorithm correctness tests:\n"); SHA2_ALGO_TEST(test_msg0, 256, 256, sha256_test_digests[0]); SHA2_ALGO_TEST(test_msg1, 256, 256, sha256_test_digests[1]); SHA2_ALGO_TEST(test_msg0, 384, 384, sha384_test_digests[0]); SHA2_ALGO_TEST(test_msg2, 384, 384, sha384_test_digests[2]); SHA2_ALGO_TEST(test_msg0, 512, 512, sha512_test_digests[0]); SHA2_ALGO_TEST(test_msg2, 512, 512, sha512_test_digests[2]); SHA2_ALGO_TEST(test_msg0, 512_224, 224, sha512_224_test_digests[0]); SHA2_ALGO_TEST(test_msg2, 512_224, 224, sha512_224_test_digests[2]); SHA2_ALGO_TEST(test_msg0, 512_256, 256, sha512_256_test_digests[0]); SHA2_ALGO_TEST(test_msg2, 512_256, 256, sha512_256_test_digests[2]); if (failed) return (1); (void) printf("Running performance tests (hashing 1024 MiB of " "data):\n"); SHA2_PERF_TEST(256, 256); SHA2_PERF_TEST(512, 512); return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/nestedfs0000644000000000000000000000013213612143063023553 xustar000000000000000030 mtime=1579730483.408873165 30 atime=1579730489.081055291 30 ctime=1579730483.408873165 zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/0000775016037001603700000000000013612143063023634 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025700 xustar000000000000000030 atime=1579730439.759471688 30 ctime=1579730483.406873101 zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/Makefile.am0000644016037001603700000000022113607166133025670 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/nestedfs dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ nestedfs_001_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025513 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.399872877 zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/setup.ksh0000755016037001603700000000204413607166133025513 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026002 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.401872941 zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/cleanup.ksh0000755016037001603700000000201513607166133026000 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_container_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/PaxHeaders.151519/nestedfs_001_pos.ksh0000644000000000000000000000007413607166133027427 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.404873037 zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/nestedfs_001_pos.ksh0000755016037001603700000000344313607166133027433 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Given a pool create a nested file system and a ZFS file system # in the nested file system. Populate the file system. # # As a sub-assertion, the test verifies that a nested file system with # a mounted file system cannot be destroyed. # # STRATEGY: # 1. Create a file in the new mountpoint # 2. Unmount the new mountpoint # 3. Show a nested file system with file systems cannot be destroyed # verify_runnable "both" log_assert "Verify a nested file system can be created/destroyed." log_must file_write -o create -f $TESTDIR1/file -b 8192 -c 600 -d 0 log_must zfs unmount $TESTDIR1 log_note "Verify that a nested file system with a mounted file system "\ "cannot be destroyed." log_mustnot zfs destroy $TESTPOOL/$TESTCTR log_pass "A nested file system was successfully populated." zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007025673 xustar000000000000000030 mtime=1579730439.795472843 30 atime=1579730457.497041189 30 ctime=1579730483.408873165 zfs-0.8.3/tests/zfs-tests/tests/functional/nestedfs/Makefile.in0000664016037001603700000005724013612143007025707 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/nestedfs DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/nestedfs ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ nestedfs_001_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/nestedfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/nestedfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/quota0000644000000000000000000000013213612143064023072 xustar000000000000000030 mtime=1579730484.079894711 30 atime=1579730489.081055291 30 ctime=1579730484.079894711 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/0000775016037001603700000000000013612143064023153 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/quota.kshlib0000644000000000000000000000007413607166147025516 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.057894005 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/quota.kshlib0000644016037001603700000000502013607166147025510 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/quota/quota.cfg # BLOCK_SIZE, QUOTA_VALUE and TOLERANCE set in quota.cfg if is_linux; then readonly EDQUOT=122 else readonly EDQUOT=49 fi # # Function to fill the quota of a zfs filesystem # # $1 - The File system or container to fill. # $2 - The mountpoint to use. # function fill_quota { typeset FILESYSTEM="$1" typeset MNTPT="$2" log_must zfs set quota=$QUOTA_VALUE $FILESYSTEM typeset -i write_size=0 (( write_size = 2 * QUOTA_VALUE )) typeset -i zret=0 file_write -o create -f $MNTPT/$TESTFILE1 -b $BLOCK_SIZE \ -c $write_size -d 0 zret=$? [[ $zret -ne $EDQUOT ]] && \ log_fail "Returned error code: $zret. Expected: $EDQUOT." typeset -i file_size=`ls -lsk $MNTPT/$TESTFILE1 | awk '{ print $1 }'` typeset -i limit=0 (( file_size = file_size * 1024 )) (( limit = QUOTA_VALUE + TOLERANCE )) (( file_size > limit )) && \ log_fail "File was created larger than the quota value, aborting!!!" return 0 } # # Function attempts to write another file in a ZFS filesystem # that has already filled its quota # function exceed_quota { typeset FILESYSTEM="$1" typeset MNTPT="$2" log_must fill_quota $FILESYSTEM $MNTPT typeset -i write_size=0 (( write_size = 2 * QUOTA_VALUE )) typeset -i zret=0 # # Writing a file without API to access return code # log_note "Creating a file in a FS that has already exceeded its quota" file_write -o create -f $MNTPT/$TESTFILE2 \ -b $BLOCK_SIZE -c $write_size -d 0 zret=$? [[ $zret -ne $EDQUOT ]] && \ log_fail "Returned error code: $zret. Expected: $EDQUOT." return 0 } zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/quota_005_pos.ksh0000644000000000000000000000007413607166133026267 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.072894487 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/quota_005_pos.ksh0000755016037001603700000000407413607166133026274 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/quota/quota.kshlib # # DESCRIPTION: # # Verify that quota doesn't inherit its value from parent. # # STRATEGY: # 1) Set quota for parents # 2) Create a filesystem tree # 3) Verify that the 'quota' for descendent doesnot inherit the value. # ############################################################################### verify_runnable "both" function cleanup { datasetexists $fs_child && \ log_must zfs destroy $fs_child log_must zfs set quota=$quota_val $fs } log_onexit cleanup log_assert "Verify that quota doesnot inherit its value from parent." log_onexit cleanup fs=$TESTPOOL/$TESTFS fs_child=$TESTPOOL/$TESTFS/$TESTFS space_avail=$(get_prop available $fs) quota_val=$(get_prop quota $fs) typeset -i quotasize=$space_avail ((quotasize = quotasize * 2 )) log_must zfs set quota=$quotasize $fs log_must zfs create $fs_child quota_space=$(get_prop quota $fs_child) [[ $quota_space == $quotasize ]] && \ log_fail "The quota of child dataset inherits its value from parent." log_pass "quota doesnot inherit its value from parent as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/quota_001_pos.ksh0000644000000000000000000000007413607166133026263 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.063894197 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/quota_001_pos.ksh0000755016037001603700000000405113607166133026263 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/quota/quota.kshlib # # DESCRIPTION: # # A ZFS file system quota limits the amount of pool space # available to a file system. Apply a quota and verify # that no more file creates are permitted. # # STRATEGY: # 1) Apply quota to ZFS file system # 2) Create a file which is larger than the set quota # 3) Verify that the resulting file size is less than the quota limit # verify_runnable "both" log_assert "Verify that file size is limited by the file system quota" # # cleanup to be used internally as otherwise quota assertions cannot be # run independently or out of order # function cleanup { [[ -e $TESTDIR/$TESTFILE1 ]] && \ log_must rm $TESTDIR/$TESTFILE1 # # Need to allow time for space to be released back to # pool, otherwise next test will fail trying to set a # quota which is less than the space used. # sleep 5 } log_onexit cleanup # # Sets the quota value and attempts to fill it with a file # twice the size of the quota # log_must fill_quota $TESTPOOL/$TESTFS $TESTDIR log_pass "File size limited by quota" zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025216 xustar000000000000000030 atime=1579730440.345490501 30 ctime=1579730484.077894647 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/Makefile.am0000644016037001603700000000044613607166133025217 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/quota dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ quota_001_pos.ksh \ quota_002_pos.ksh \ quota_003_pos.ksh \ quota_004_pos.ksh \ quota_005_pos.ksh \ quota_006_neg.ksh dist_pkgdata_DATA = \ quota.cfg \ quota.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025031 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.059894069 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/setup.ksh0000755016037001603700000000204413607166133025031 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025320 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.061894133 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/cleanup.ksh0000755016037001603700000000201513607166133025316 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_container_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/quota_006_neg.ksh0000644000000000000000000000007413607166133026240 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.074894551 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/quota_006_neg.ksh0000755016037001603700000000403713607166133026244 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/quota/quota.kshlib # # DESCRIPTION: # # Can't set a quota to less than currently being used by the dataset. # # STRATEGY: # 1) Create a filesystem # 2) Set a quota on the filesystem that is lower than the space # currently in use. # 3) Verify that the attempt fails. # verify_runnable "both" log_assert "Verify cannot set quota lower than the space currently in use" function cleanup { log_must zfs set quota=none $TESTPOOL/$TESTFS } log_onexit cleanup typeset -i quota_integer_size=0 typeset invalid_size="123! @456 7#89 0\$ abc123% 123%s 12%s3 %c123 123%d %x123 12%p3 \ ^def456 789&ghi" typeset -i space_used=`get_prop used $TESTPOOL/$TESTFS` (( quota_integer_size = space_used - 1 )) quota_fp_size=${quota_integer_size}.123 for size in 0 -1 $quota_integer_size -$quota_integer_size $quota_fp_size -$quota_fp_size \ $invalid_size ; do log_mustnot zfs set quota=$size $TESTPOOL/$TESTFS done log_must zfs set quota=$space_used $TESTPOOL/$TESTFS log_pass "As expected cannot set quota lower than space currently in use" zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/quota_003_pos.ksh0000644000000000000000000000007413607166133026265 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.068894357 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/quota_003_pos.ksh0000755016037001603700000000430613607166133026270 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/quota/quota.kshlib # # DESCRIPTION: # A ZFS file system quota limits the amount of pool space # available to a file system dataset. Apply a quota and verify # that no more file creates are permitted. # # NOTE: THis test applies to a dataset rather than a file system. # # STRATEGY: # 1) Apply quota to ZFS file system dataset # 2) Create a file which is larger than the set quota # 3) Verify that the resulting file size is less than the quota limit # verify_runnable "both" log_assert "Verify that file size is limited by the file system quota" \ "(dataset version)" # # cleanup to be used internally as otherwise quota assertions cannot be # run independently or out of order # function cleanup { [[ -e $TESTDIR1/$TESTFILE1 ]] && \ log_must rm $TESTDIR1/$TESTFILE1 # # Need to allow time for space to be released back to # pool, otherwise next test will fail trying to set a # quota which is less than the space used. # sleep 5 } log_onexit cleanup # # Sets the quota value and attempts to fill it with a file # twice the size of the quota # log_must fill_quota $TESTPOOL/$TESTCTR/$TESTFS1 $TESTDIR1 log_pass "File size limited by quota" zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/quota_004_pos.ksh0000644000000000000000000000007413607166133026266 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.070894423 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/quota_004_pos.ksh0000755016037001603700000000406413607166133026272 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/quota/quota.kshlib # # DESCRIPTION: # A zfs file system quota limits the amount of pool space # available to a given ZFS file system dataset. Once exceeded, it # is impossible to write any more files to the file system. # # STRATEGY: # 1) Apply quota to the ZFS file system dataset # 2) Exceed the quota # 3) Attempt to write another file # 4) Verify the attempt fails with error code EDQUOTA (linux 122, others 49) # # verify_runnable "both" log_assert "Verify that a file write cannot exceed the file system quota" \ "(dataset version)" # # cleanup to be used internally as otherwise quota assertions cannot be # run independently or out of order # function cleanup { [[ -e $TESTDIR1/$TESTFILE1 ]] && \ log_must rm $TESTDIR1/$TESTFILE1 [[ -e $TESTDIR1/$TESTFILE2 ]] && \ log_must rm $TESTDIR1/$TESTFILE2 } log_onexit cleanup # # Fills the quota & attempts to write another file # log_must exceed_quota $TESTPOOL/$TESTCTR/$TESTFS1 $TESTDIR1 log_pass "Could not write file. Quota limit enforced as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/quota.cfg0000644000000000000000000000007413607166133024774 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.055893941 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/quota.cfg0000644016037001603700000000207213607166133024772 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # export BLOCK_SIZE=8192 export QUOTA_VALUE=10000000 export TESTFILE1=file1 export TESTFILE2=file2 export TOLERANCE=131071 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/quota_002_pos.ksh0000644000000000000000000000007413607166133026264 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.065894261 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/quota_002_pos.ksh0000755016037001603700000000377313607166133026276 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/quota/quota.kshlib # # DESCRIPTION: # A zfs file system quota limits the amount of pool space # available to a given ZFS file system. Once exceeded, it is impossible # to write any more files to the file system. # # STRATEGY: # 1) Apply quota to the ZFS file system # 2) Exceed the quota # 3) Attempt to write another file # 4) Verify the attempt fails with error code EDQUOTA (linux 122, others 49) # # verify_runnable "both" log_assert "Verify that a file write cannot exceed the file system quota" # # cleanup to be used internally as otherwise quota assertions cannot be # run independently or out of order # function cleanup { [[ -e $TESTDIR/$TESTFILE1 ]] && \ log_must rm $TESTDIR/$TESTFILE1 [[ -e $TESTDIR/$TESTFILE2 ]] && \ log_must rm $TESTDIR/$TESTFILE2 } log_onexit cleanup # # Fills the quota & attempts to write another file # log_must exceed_quota $TESTPOOL/$TESTFS $TESTDIR log_pass "Could not write file. Quota limit enforced as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/quota/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143010025202 xustar000000000000000029 mtime=1579730440.38249169 30 atime=1579730457.832051945 30 ctime=1579730484.079894711 zfs-0.8.3/tests/zfs-tests/tests/functional/quota/Makefile.in0000664016037001603700000006146713612143010025225 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/quota DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/quota ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ quota_001_pos.ksh \ quota_002_pos.ksh \ quota_003_pos.ksh \ quota_004_pos.ksh \ quota_005_pos.ksh \ quota_006_neg.ksh dist_pkgdata_DATA = \ quota.cfg \ quota.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/quota/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/quota/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/fault0000644000000000000000000000013213612143061023051 xustar000000000000000030 mtime=1579730481.928825643 30 atime=1579730489.081055291 30 ctime=1579730481.928825643 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/0000775016037001603700000000000013612143061023132 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/auto_spare_001_pos.ksh0000644000000000000000000000007413607166133027256 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.905824905 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/auto_spare_001_pos.ksh0000755016037001603700000000541613607166133027264 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Intel Corporation. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Testing Fault Management Agent ZED Logic - Automated Auto-Spare Test when # drive is faulted due to IO ERRORS. # # STRATEGY: # 1. Create a pool with hot spares # 2. Create a filesystem with the primary cache disable to force reads # 3. Write a file to the pool to be read back # 4. Inject IO ERRORS on read with a zinject error handler # 5. Verify the ZED kicks in a hot spare and expected pool/device status # 6. Clear the fault # 7. Verify the hot spare is available and expected pool/device status # verify_runnable "both" function cleanup { log_must zinject -c all destroy_pool $TESTPOOL rm -f $VDEV_FILES $SPARE_FILE } log_assert "Testing automated auto-spare FMA test" log_onexit cleanup # Clear events from previous runs zed_events_drain TESTFILE="/$TESTPOOL/$TESTFS/testfile" for type in "mirror" "raidz" "raidz2"; do # 1. Create a pool with hot spares truncate -s $SPA_MINDEVSIZE $VDEV_FILES $SPARE_FILE log_must zpool create -f $TESTPOOL $type $VDEV_FILES spare $SPARE_FILE # 2. Create a filesystem with the primary cache disable to force reads log_must zfs create -o primarycache=none $TESTPOOL/$TESTFS log_must zfs set recordsize=16k $TESTPOOL/$TESTFS # 3. Write a file to the pool to be read back log_must dd if=/dev/urandom of=$TESTFILE bs=1M count=16 # 4. Inject IO ERRORS on read with a zinject error handler log_must zinject -d $FAULT_FILE -e io -T read $TESTPOOL log_must cp $TESTFILE /dev/null # 5. Verify the ZED kicks in a hot spare and expected pool/device status log_note "Wait for ZED to auto-spare" log_must wait_vdev_state $TESTPOOL $FAULT_FILE "FAULTED" 60 log_must wait_vdev_state $TESTPOOL $SPARE_FILE "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_FILE "INUSE" log_must check_state $TESTPOOL "" "DEGRADED" # 6. Clear the fault log_must zinject -c all log_must zpool clear $TESTPOOL $FAULT_FILE # 7. Verify the hot spare is available and expected pool/device status log_must wait_vdev_state $TESTPOOL $FAULT_FILE "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_FILE "AVAIL" log_must is_pool_resilvered $TESTPOOL log_must check_state $TESTPOOL "" "ONLINE" cleanup done log_pass "Auto-spare test successful" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/auto_offline_001_pos.ksh0000644000000000000000000000007413607166147027573 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.898824681 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/auto_offline_001_pos.ksh0000755016037001603700000001171613607166147027601 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/events/events_common.kshlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Testing Fault Management Agent ZED Logic - Physically removed device is # offlined and onlined when reattached # # STRATEGY: # 1. Create a pool # 2. Simulate physical removal of one device # 3. Verify the device is offlined # 4. Reattach the device # 5. Verify the device is onlined # 6. Repeat the same tests with a spare device: zed will use the spare to handle # the removed data device # 7. Repeat the same tests again with a faulted spare device: zed should offline # the removed data device if no spare is available # # NOTE: the use of 'block_device_wait' throughout the test helps avoid race # conditions caused by mixing creation/removal events from partitioning the # disk (zpool create) and events from physically removing it (remove_disk). # verify_runnable "both" if is_linux; then # Add one 512b scsi_debug device (4Kn would generate IO errors) # NOTE: must be larger than other "file" vdevs and minimum SPA devsize: # add 32m of fudge load_scsi_debug $(($SPA_MINDEVSIZE/1024/1024+32)) 1 1 1 '512b' else log_unsupported "scsi debug module unsupported" fi function cleanup { destroy_pool $TESTPOOL rm -f $filedev1 rm -f $filedev2 rm -f $filedev3 rm -f $sparedev unload_scsi_debug } log_assert "ZED detects physically removed devices" log_onexit cleanup filedev1="$TEST_BASE_DIR/file-vdev-1" filedev2="$TEST_BASE_DIR/file-vdev-2" filedev3="$TEST_BASE_DIR/file-vdev-3" sparedev="$TEST_BASE_DIR/file-vdev-spare" removedev=$(get_debug_device) typeset poolconfs=("mirror $filedev1 $removedev" "raidz $filedev1 $removedev" "raidz2 $filedev1 $filedev2 $removedev" "raidz3 $filedev1 $filedev2 $filedev3 $removedev" "$filedev1 cache $removedev" "mirror $filedev1 $filedev2 cache $removedev" "raidz $filedev1 $filedev2 $filedev3 cache $removedev" ) log_must truncate -s $SPA_MINDEVSIZE $filedev1 log_must truncate -s $SPA_MINDEVSIZE $filedev2 log_must truncate -s $SPA_MINDEVSIZE $filedev3 log_must truncate -s $SPA_MINDEVSIZE $sparedev for conf in "${poolconfs[@]}" do # 1. Create a pool log_must zpool create -f $TESTPOOL $conf block_device_wait # 2. Simulate physical removal of one device remove_disk $removedev # 3. Verify the device is offlined log_must wait_vdev_state $TESTPOOL $removedev "OFFLINE" # 4. Reattach the device insert_disk $removedev # 5. Verify the device is onlined log_must wait_vdev_state $TESTPOOL $removedev "ONLINE" # cleanup destroy_pool $TESTPOOL log_must parted "/dev/${removedev}" -s -- mklabel msdos block_device_wait done # 6. Repeat the same tests with a spare device: zed will use the spare to handle # the removed data device for conf in "${poolconfs[@]}" do # 1. Create a pool with a spare log_must zpool create -f $TESTPOOL $conf block_device_wait log_must zpool add $TESTPOOL spare $sparedev # 3. Simulate physical removal of one device remove_disk $removedev # 4. Verify the device is handled by the spare unless is a l2arc disk # which can only be offlined if [[ $(echo "$conf" | grep -c 'cache') -eq 0 ]]; then log_must wait_hotspare_state $TESTPOOL $sparedev "INUSE" else log_must wait_vdev_state $TESTPOOL $removedev "OFFLINE" fi # 5. Reattach the device insert_disk $removedev # 6. Verify the device is onlined log_must wait_vdev_state $TESTPOOL $removedev "ONLINE" # cleanup destroy_pool $TESTPOOL log_must parted "/dev/${removedev}" -s -- mklabel msdos block_device_wait done # 7. Repeat the same tests again with a faulted spare device: zed should offline # the removed data device if no spare is available for conf in "${poolconfs[@]}" do # 1. Create a pool with a spare log_must zpool create -f $TESTPOOL $conf block_device_wait log_must zpool add $TESTPOOL spare $sparedev # 2. Fault the spare device making it unavailable log_must zpool offline -f $TESTPOOL $sparedev log_must wait_hotspare_state $TESTPOOL $sparedev "FAULTED" # 3. Simulate physical removal of one device remove_disk $removedev # 4. Verify the device is offlined log_must wait_vdev_state $TESTPOOL $removedev "OFFLINE" # 5. Reattach the device insert_disk $removedev # 6. Verify the device is onlined log_must wait_vdev_state $TESTPOOL $removedev "ONLINE" # cleanup destroy_pool $TESTPOOL log_must parted "/dev/${removedev}" -s -- mklabel msdos block_device_wait done log_pass "ZED detects physically removed devices" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/auto_spare_ashift.ksh0000644000000000000000000000007413607166133027353 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.909825033 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/auto_spare_ashift.ksh0000755016037001603700000000652213607166133027360 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Intel Corporation. All rights reserved. # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Testing Fault Management Agent ZED Logic - Automated Auto-Spare Test when # drive is faulted and a custom ashift value needs to be provided to replace it. # # STRATEGY: # 1. Create a pool from 512b devices and set "ashift" pool property accordingly # 2. Add one 512e spare device (4Kn would generate IO errors on replace) # 3. Inject IO errors with a zinject error handler # 4. Start a scrub # 5. Verify the ZED kicks in the hot spare and expected pool/device status # 6. Clear the fault # 7. Verify the hot spare is available and expected pool/device status # verify_runnable "both" function cleanup { log_must zinject -c all destroy_pool $TESTPOOL unload_scsi_debug rm -f $SAFE_DEVICE $FAIL_DEVICE } log_assert "ZED should replace a device using the configured ashift property" log_onexit cleanup # Clear events from previous runs zed_events_drain SAFE_DEVICE="$TEST_BASE_DIR/safe-dev" FAIL_DEVICE="$TEST_BASE_DIR/fail-dev" # 1. Create a pool from 512b devices and set "ashift" pool property accordingly for vdev in $SAFE_DEVICE $FAIL_DEVICE; do truncate -s $SPA_MINDEVSIZE $vdev done log_must zpool create -f $TESTPOOL mirror $SAFE_DEVICE $FAIL_DEVICE # NOTE: file VDEVs should be added as 512b devices, verify this "just in case" for vdev in $SAFE_DEVICE $FAIL_DEVICE; do verify_eq "9" "$(zdb -e -l $vdev | awk '/ashift: /{print $2}')" "ashift" done log_must zpool set ashift=9 $TESTPOOL # 2. Add one 512e spare device (4Kn would generate IO errors on replace) # NOTE: must be larger than the existing 512b devices, add 32m of fudge load_scsi_debug $(($SPA_MINDEVSIZE/1024/1024+32)) $SDHOSTS $SDTGTS $SDLUNS '512e' SPARE_DEVICE=$(get_debug_device) log_must_busy zpool add $TESTPOOL spare $SPARE_DEVICE # 3. Inject IO errors with a zinject error handler log_must zinject -d $FAIL_DEVICE -e io -T all -f 100 $TESTPOOL # 4. Start a scrub log_must zpool scrub $TESTPOOL # 5. Verify the ZED kicks in a hot spare and expected pool/device status log_note "Wait for ZED to auto-spare" log_must wait_vdev_state $TESTPOOL $FAIL_DEVICE "FAULTED" 60 log_must wait_vdev_state $TESTPOOL $SPARE_DEVICE "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_DEVICE "INUSE" log_must check_state $TESTPOOL "" "DEGRADED" # 6. Clear the fault log_must zinject -c all log_must zpool clear $TESTPOOL $FAIL_DEVICE # 7. Verify the hot spare is available and expected pool/device status log_must wait_vdev_state $TESTPOOL $FAIL_DEVICE "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_DEVICE "AVAIL" log_must is_pool_resilvered $TESTPOOL log_must check_state $TESTPOOL "" "ONLINE" log_pass "ZED successfully replaces a device using the configured ashift property" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/auto_online_001_pos.ksh0000644000000000000000000000007413612141513027417 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.900824745 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/auto_online_001_pos.ksh0000755016037001603700000001001013612141513027407 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved. # Copyright (c) 2019 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Testing Fault Management Agent ZED Logic - Automated Auto-Online Test. # # STRATEGY: # 1. Create a pool # 2. Export a pool # 3. Offline disk # 4. Import pool with missing disk # 5. Online disk # 6. ZED polls for an event change for online disk to be automatically # added back to the pool. # # Creates a raidz1 zpool using persistent disk path names # (ie not /dev/sdc). # # If loop devices are used, then a scsi_debug device is added to the pool. # otherwise just an sd device is used as the auto-online device. # Auto-online matches by devid. # verify_runnable "both" if ! is_physical_device $DISKS; then log_unsupported "Unsupported disks for this test." fi function cleanup { typeset disk # Replace any disk that may have been removed at failure time. for disk in $DISK1 $DISK2 $DISK3; do # Skip loop devices and devices that currently exist. is_loop_device $disk && continue is_real_device $disk && continue insert_disk $disk $(get_scsi_host $disk) done destroy_pool $TESTPOOL unload_scsi_debug } log_assert "Testing automated auto-online FMA test" log_onexit cleanup # If using the default loop devices, need a scsi_debug device for auto-online if is_loop_device $DISK1; then load_scsi_debug $SDSIZE $SDHOSTS $SDTGTS $SDLUNS '512b' SDDEVICE=$(get_debug_device) SDDEVICE_ID=$(get_persistent_disk_name $SDDEVICE) autoonline_disks="$SDDEVICE" else autoonline_disks="$DISK1 $DISK2 $DISK3" fi # Clear disk labels for i in {0..2} do zpool labelclear -f /dev/disk/by-id/"${devs_id[i]}" done if is_loop_device $DISK1; then # create a pool with one scsi_debug device and 3 loop devices log_must zpool create -f $TESTPOOL raidz1 $SDDEVICE_ID $DISK1 \ $DISK2 $DISK3 elif ( is_real_device $DISK1 || is_mpath_device $DISK1 ); then # else use the persistent names for sd devices log_must zpool create -f $TESTPOOL raidz1 ${devs_id[0]} \ ${devs_id[1]} ${devs_id[2]} else log_fail "Disks are not supported for this test" fi # Add some data to the pool log_must mkfile $FSIZE /$TESTPOOL/data for offline_disk in $autoonline_disks do log_must zpool export -F $TESTPOOL host=$(get_scsi_host $offline_disk) # Offline disk remove_disk $offline_disk # Reimport pool with drive missing log_must zpool import $TESTPOOL check_state $TESTPOOL "" "degraded" if (($? != 0)); then log_fail "$TESTPOOL is not degraded" fi # Clear zpool events log_must zpool events -c # Online disk insert_disk $offline_disk $host log_note "Delay for ZED auto-online" typeset -i timeout=0 while true; do if ((timeout == $MAXTIMEOUT)); then log_fail "Timeout occurred" fi ((timeout++)) sleep 1 zpool events $TESTPOOL \ | egrep sysevent.fs.zfs.resilver_finish > /dev/null if (($? == 0)); then log_note "Auto-online of $offline_disk is complete" sleep 1 break fi done # Validate auto-online was successful check_state $TESTPOOL "" "online" if (($? != 0)); then log_fail "$TESTPOOL is not back online" fi sleep 2 done log_must zpool destroy $TESTPOOL log_pass "Auto-online test successful" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/fault.cfg0000644000000000000000000000007413607166133024740 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.890824423 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/fault.cfg0000644016037001603700000000325313607166133024740 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') export DISKSARRAY=$DISKS export FSIZE=10M export MAXTIMEOUT=30 export SDSIZE=256 export SDHOSTS=1 export SDTGTS=1 export SDLUNS=1 export DISK1=$(echo $DISKS | nawk '{print $1}') export DISK2=$(echo $DISKS | nawk '{print $2}') export DISK3=$(echo $DISKS | nawk '{print $3}') if is_linux; then set_slice_prefix set_device_dir devs_id[0]=$(get_persistent_disk_name $DISK1) devs_id[1]=$(get_persistent_disk_name $DISK2) devs_id[2]=$(get_persistent_disk_name $DISK3) export devs_id else DEV_DSKDIR="/dev" fi export VDEV_FILES="$TEST_BASE_DIR/file-1 $TEST_BASE_DIR/file-2 \ $TEST_BASE_DIR/file-3 $TEST_BASE_DIR/file-4" export SPARE_FILE="$TEST_BASE_DIR/spare-1" export FAULT_FILE="$TEST_BASE_DIR/file-1" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/decompress_fault.ksh0000644000000000000000000000007413607166147027217 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.919825355 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/decompress_fault.ksh0000755016037001603700000000322213607166147027216 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Datto Inc. # All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Test that injected decompression errors are handled correctly. # # STRATEGY: # 1. Create an compressed dataset with a test file # 2. Inject decompression errors on the file 20% of the time # 3. Read the file to confirm that errors are handled correctly # 4. Confirm that the decompression injection was added to the ZED logs # log_assert "Testing that injected decompression errors are handled correctly" function cleanup { log_must set_tunable64 zfs_compressed_arc_enabled 1 log_must zinject -c all default_cleanup_noexit } log_onexit cleanup default_mirror_setup_noexit $DISK1 $DISK2 log_must set_tunable64 zfs_compressed_arc_enabled 0 log_must zfs create -o compression=on $TESTPOOL/fs mntpt=$(get_prop mountpoint $TESTPOOL/fs) write_compressible $mntpt 32m 1 0 "testfile" log_must sync log_must zfs umount $TESTPOOL/fs log_must zfs mount $TESTPOOL/fs log_must zinject -a -t data -e decompress -f 20 $mntpt/testfile.0 log_mustnot eval "cat $mntpt/testfile.0 > /dev/null" log_must eval "zpool events $TESTPOOL | grep -q 'data'" log_pass "Injected decompression errors are handled correctly" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/auto_spare_002_pos.ksh0000644000000000000000000000007413607166147027264 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.907824969 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/auto_spare_002_pos.ksh0000755016037001603700000000540513607166147027270 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Intel Corporation. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Testing Fault Management Agent ZED Logic - Automated Auto-Spare Test when # drive is faulted due to CHECKSUM ERRORS. # # STRATEGY: # 1. Create a pool with hot spares # 2. Create a filesystem with the primary cache disable to force reads # 3. Write a file to the pool to be read back # 4. Inject CHECKSUM ERRORS on read with a zinject error handler # 5. Verify the ZED kicks in a hot spare and expected pool/device status # 6. Clear the fault # 7. Verify the hot spare is available and expected pool/device status # verify_runnable "both" function cleanup { log_must zinject -c all destroy_pool $TESTPOOL rm -f $VDEV_FILES $SPARE_FILE } log_assert "Testing automated auto-spare FMA test" log_onexit cleanup # Clear events from previous runs zed_events_drain TESTFILE="/$TESTPOOL/$TESTFS/testfile" for type in "mirror" "raidz" "raidz2"; do # 1. Create a pool with hot spares truncate -s $SPA_MINDEVSIZE $VDEV_FILES $SPARE_FILE log_must zpool create -f $TESTPOOL $type $VDEV_FILES spare $SPARE_FILE # 2. Create a filesystem with the primary cache disable to force reads log_must zfs create -o primarycache=none $TESTPOOL/$TESTFS log_must zfs set recordsize=16k $TESTPOOL/$TESTFS # 3. Write a file to the pool to be read back log_must dd if=/dev/urandom of=$TESTFILE bs=1M count=16 # 4. Inject CHECKSUM ERRORS on read with a zinject error handler log_must zinject -d $FAULT_FILE -e corrupt -f 50 -T read $TESTPOOL log_must cp $TESTFILE /dev/null # 5. Verify the ZED kicks in a hot spare and expected pool/device status log_note "Wait for ZED to auto-spare" log_must wait_vdev_state $TESTPOOL $FAULT_FILE "DEGRADED" 60 log_must wait_vdev_state $TESTPOOL $SPARE_FILE "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_FILE "INUSE" log_must check_state $TESTPOOL "" "DEGRADED" # 6. Clear the fault log_must zinject -c all log_must zpool clear $TESTPOOL $FAULT_FILE # 7. Verify the hot spare is available and expected pool/device status log_must wait_vdev_state $TESTPOOL $FAULT_FILE "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_FILE "AVAIL" log_must check_state $TESTPOOL "" "ONLINE" cleanup done log_pass "Auto-spare test successful" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/auto_spare_multiple.ksh0000644000000000000000000000007313612141513027716 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730481.91282513 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/auto_spare_multiple.ksh0000755016037001603700000001211713612141513027721 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Intel Corporation. All rights reserved. # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Testing Fault Management Agent ZED Logic - Automated Auto-Spare Test when # multiple drives are faulted. # # STRATEGY: # 1. Create a pool with two hot spares # 2. Inject IO ERRORS with a zinject error handler on the first device # 3. Start a scrub # 4. Verify the ZED kicks in a hot spare and expected pool/device status # 5. Inject IO ERRORS on a second device # 6. Start a scrub # 7. Verify the ZED kicks in a second hot spare # 8. Clear the fault on both devices # 9. Verify the hot spares are available and expected pool/device status # 10. Rinse and repeat, this time faulting both devices at the same time # verify_runnable "both" function cleanup { log_must zinject -c all destroy_pool $TESTPOOL rm -f $DATA_DEVS $SPARE_DEVS } log_assert "ZED should be able to handle multiple faulted devices" log_onexit cleanup # Clear events from previous runs zed_events_drain FAULT_DEV1="$TEST_BASE_DIR/fault-dev1" FAULT_DEV2="$TEST_BASE_DIR/fault-dev2" SAFE_DEV1="$TEST_BASE_DIR/safe-dev1" SAFE_DEV2="$TEST_BASE_DIR/safe-dev2" DATA_DEVS="$FAULT_DEV1 $FAULT_DEV2 $SAFE_DEV1 $SAFE_DEV2" SPARE_DEV1="$TEST_BASE_DIR/spare-dev1" SPARE_DEV2="$TEST_BASE_DIR/spare-dev2" SPARE_DEVS="$SPARE_DEV1 $SPARE_DEV2" for type in "mirror" "raidz" "raidz2" "raidz3"; do # 1. Create a pool with two hot spares truncate -s $SPA_MINDEVSIZE $DATA_DEVS $SPARE_DEVS log_must zpool create -f $TESTPOOL $type $DATA_DEVS spare $SPARE_DEVS # 2. Inject IO ERRORS with a zinject error handler on the first device log_must zinject -d $FAULT_DEV1 -e io -T all -f 100 $TESTPOOL # 3. Start a scrub log_must zpool scrub $TESTPOOL # 4. Verify the ZED kicks in a hot spare and expected pool/device status log_note "Wait for ZED to auto-spare" log_must wait_vdev_state $TESTPOOL $FAULT_DEV1 "FAULTED" 60 log_must wait_vdev_state $TESTPOOL $SPARE_DEV1 "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_DEV1 "INUSE" log_must check_state $TESTPOOL "" "DEGRADED" # 5. Inject IO ERRORS on a second device log_must zinject -d $FAULT_DEV2 -e io -T all -f 100 $TESTPOOL # 6. Start a scrub while is_pool_scrubbing $TESTPOOL || is_pool_resilvering $TESTPOOL; do sleep 1 done log_must zpool scrub $TESTPOOL # 7. Verify the ZED kicks in a second hot spare log_note "Wait for ZED to auto-spare" log_must wait_vdev_state $TESTPOOL $FAULT_DEV2 "FAULTED" 60 log_must wait_vdev_state $TESTPOOL $SPARE_DEV2 "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_DEV2 "INUSE" log_must check_state $TESTPOOL "" "DEGRADED" # 8. Clear the fault on both devices log_must zinject -c all log_must zpool clear $TESTPOOL $FAULT_DEV1 log_must zpool clear $TESTPOOL $FAULT_DEV2 # 9. Verify the hot spares are available and expected pool/device status log_must wait_vdev_state $TESTPOOL $FAULT_DEV1 "ONLINE" 60 log_must wait_vdev_state $TESTPOOL $FAULT_DEV2 "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_DEV1 "AVAIL" log_must wait_hotspare_state $TESTPOOL $SPARE_DEV2 "AVAIL" log_must check_state $TESTPOOL "" "ONLINE" # Cleanup cleanup done # Rinse and repeat, this time faulting both devices at the same time # NOTE: "raidz" is excluded since it cannot survive 2 faulted devices # NOTE: "mirror" is a 4-way mirror here and should survive this test for type in "mirror" "raidz2" "raidz3"; do # 1. Create a pool with two hot spares truncate -s $SPA_MINDEVSIZE $DATA_DEVS $SPARE_DEVS log_must zpool create -f $TESTPOOL $type $DATA_DEVS spare $SPARE_DEVS # 2. Inject IO ERRORS with a zinject error handler on two devices log_must eval "zinject -d $FAULT_DEV1 -e io -T all -f 100 $TESTPOOL &" log_must eval "zinject -d $FAULT_DEV2 -e io -T all -f 100 $TESTPOOL &" # 3. Start a scrub log_must zpool scrub $TESTPOOL # 4. Verify the ZED kicks in two hot spares and expected pool/device status log_note "Wait for ZED to auto-spare" log_must wait_vdev_state $TESTPOOL $FAULT_DEV1 "FAULTED" 60 log_must wait_vdev_state $TESTPOOL $FAULT_DEV2 "FAULTED" 60 log_must wait_vdev_state $TESTPOOL $SPARE_DEV1 "ONLINE" 60 log_must wait_vdev_state $TESTPOOL $SPARE_DEV2 "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_DEV1 "INUSE" log_must wait_hotspare_state $TESTPOOL $SPARE_DEV2 "INUSE" log_must check_state $TESTPOOL "" "DEGRADED" # 5. Clear the fault on both devices log_must zinject -c all log_must zpool clear $TESTPOOL $FAULT_DEV1 log_must zpool clear $TESTPOOL $FAULT_DEV2 # Cleanup cleanup done log_pass "ZED successfully handles multiple faulted devices" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/decrypt_fault.ksh0000644000000000000000000000007413607166147026525 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.916825259 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/decrypt_fault.ksh0000755016037001603700000000310713607166147026526 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Datto Inc. # All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Test that injected decryption errors are handled correctly. # # STRATEGY: # 1. Create an encrypted dataset with a test file # 2. Inject decryption errors on the file 20% of the time # 3. Read the file to confirm that errors are handled correctly # 4. Confirm that the decryption injection was added to the ZED logs # log_assert "Testing that injected decryption errors are handled correctly" function cleanup { log_must zinject -c all default_cleanup_noexit } log_onexit cleanup default_mirror_setup_noexit $DISK1 $DISK2 log_must eval "echo 'password' | zfs create -o encryption=on \ -o keyformat=passphrase -o keylocation=prompt $TESTPOOL/fs" mntpt=$(get_prop mountpoint $TESTPOOL/fs) log_must mkfile 32M $mntpt/file1 log_must zinject -a -t data -e decrypt -f 20 $mntpt/file1 log_must zfs umount $TESTPOOL/fs log_must zfs mount $TESTPOOL/fs log_mustnot eval "cat $mntpt/file1 > /dev/null" log_must eval "zpool events $TESTPOOL | grep -q 'authentication'" log_pass "Injected decryption errors are handled correctly" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025200 xustar000000000000000030 atime=1579730438.652436142 30 ctime=1579730481.925825547 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/Makefile.am0000644016037001603700000000071413607166133025177 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/fault dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ auto_offline_001_pos.ksh \ auto_online_001_pos.ksh \ auto_replace_001_pos.ksh \ auto_spare_001_pos.ksh \ auto_spare_002_pos.ksh \ auto_spare_ashift.ksh \ auto_spare_multiple.ksh \ auto_spare_shared.ksh \ decrypt_fault.ksh \ decompress_fault.ksh \ scrub_after_resilver.ksh \ zpool_status_-s.ksh dist_pkgdata_DATA = \ fault.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025013 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.893824519 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/setup.ksh0000755016037001603700000000204013607166133025007 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg verify_runnable "global" zed_setup resilver_finish-start-scrub.sh zed_start log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025302 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.895824585 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/cleanup.ksh0000755016037001603700000000207113607166133025302 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg verify_runnable "global" cleanup_devices $DISKS zed_stop zed_cleanup resilver_finish-start-scrub.sh log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/scrub_after_resilver.ksh0000644000000000000000000000007413612141517030060 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.921825419 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/scrub_after_resilver.ksh0000755016037001603700000000334013612141517030060 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Test the scrub after resilver zedlet # # STRATEGY: # 1. Create a mirrored pool # 2. Fault a disk # 3. Replace the disk, starting a resilver # 4. Verify that a scrub happens after the resilver finishes # log_assert "Testing the scrub after resilver zedlet" # Backup our zed.rc zedrc_backup=$(zed_rc_backup) # Enable ZED_SCRUB_AFTER_RESILVER in zed.rc zed_rc_set ZED_SCRUB_AFTER_RESILVER 1 function cleanup { # Restore our zed.rc log_must zed_rc_restore $zedrc_backup default_cleanup_noexit log_must zpool labelclear -f $DISK1 } log_onexit cleanup verify_disk_count "$DISKS" 3 default_mirror_setup_noexit $DISK1 $DISK2 log_must zpool offline -f $TESTPOOL $DISK1 # Write to our degraded pool so we have some data to resilver log_must mkfile 16M $TESTDIR/file1 # Replace the failed disks, forcing a resilver log_must zpool replace $TESTPOOL $DISK1 $DISK3 # Wait for the resilver to finish, and then the subsequent scrub to finish. # Waiting for the scrub has the effect of waiting for both. Timeout after 10 # seconds if nothing is happening. log_must wait_scrubbed $TESTPOOL log_pass "Successfully ran the scrub after resilver zedlet" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/zpool_status_-s.ksh0000644000000000000000000000007413612141517027013 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.923825483 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/zpool_status_-s.ksh0000755016037001603700000000431013612141517027011 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Verify zpool status -s (slow IOs) works # # STRATEGY: # 1. Create a file # 2. Inject slow IOs into the pool # 3. Verify we can see the slow IOs with "zpool status -s". # 4. Verify we can see delay events. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/zpool_script.shlib DISK=${DISKS%% *} verify_runnable "both" default_mirror_setup_noexit $DISKS function cleanup { log_must zinject -c all log_must set_tunable64 zio_slow_io_ms $OLD_SLOW_IO log_must set_tunable64 zfs_slow_io_events_per_second $OLD_SLOW_IO_EVENTS default_cleanup_noexit } log_onexit cleanup log_must zpool events -c # Mark any IOs greater than 10ms as slow IOs OLD_SLOW_IO=$(get_tunable zio_slow_io_ms) OLD_SLOW_IO_EVENTS=$(get_tunable zfs_slow_io_events_per_second) log_must set_tunable64 zio_slow_io_ms 10 log_must set_tunable64 zfs_slow_io_events_per_second 1000 # Create 20ms IOs log_must zinject -d $DISK -D20:100 $TESTPOOL log_must mkfile 1048576 /$TESTPOOL/testfile log_must zpool sync $TESTPOOL log_must zinject -c all SLOW_IOS=$(zpool status -sp | grep "$DISK" | awk '{print $6}') DELAY_EVENTS=$(zpool events | grep delay | wc -l) if [ $SLOW_IOS -gt 0 ] && [ $DELAY_EVENTS -gt 0 ] ; then log_pass "Correctly saw $SLOW_IOS slow IOs and $DELAY_EVENTS delay events" else log_fail "Only saw $SLOW_IOS slow IOs and $DELAY_EVENTS delay events" fi zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143006025172 xustar000000000000000030 mtime=1579730438.690437364 30 atime=1579730456.891021731 30 ctime=1579730481.928825643 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/Makefile.in0000664016037001603700000006173513612143006025212 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/fault DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/fault ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ auto_offline_001_pos.ksh \ auto_online_001_pos.ksh \ auto_replace_001_pos.ksh \ auto_spare_001_pos.ksh \ auto_spare_002_pos.ksh \ auto_spare_ashift.ksh \ auto_spare_multiple.ksh \ auto_spare_shared.ksh \ decrypt_fault.ksh \ decompress_fault.ksh \ scrub_after_resilver.ksh \ zpool_status_-s.ksh dist_pkgdata_DATA = \ fault.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/fault/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/fault/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/auto_spare_shared.ksh0000644000000000000000000000007413607166133027343 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.914825195 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/auto_spare_shared.ksh0000755016037001603700000000734713607166133027356 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Spare devices (both files and disks) can be shared among different ZFS pools. # # STRATEGY: # 1. Create two pools # 2. Add the same spare device to different pools # 3. Inject IO errors with a zinject error handler # 4. Start a scrub # 5. Verify the ZED kicks in a hot spare and check pool/device status # 6. Clear the fault # 7. Verify the hot spare is available and check pool/device status # verify_runnable "both" if is_linux; then # Add one 512b spare device (4Kn would generate IO errors on replace) # NOTE: must be larger than other "file" vdevs and minimum SPA devsize: # add 32m of fudge load_scsi_debug $(($SPA_MINDEVSIZE/1024/1024+32)) 1 1 1 '512b' else log_unsupported "scsi debug module unsupported" fi function cleanup { log_must zinject -c all destroy_pool $TESTPOOL destroy_pool $TESTPOOL1 unload_scsi_debug rm -f $SAFE_FILEDEVPOOL1 $SAFE_FILEDEVPOOL2 $FAIL_FILEDEVPOOL1 \ $FAIL_FILEDEVPOOL2 $SPARE_FILEDEV } log_assert "Spare devices can be shared among different ZFS pools" log_onexit cleanup # Clear events from previous runs zed_events_drain SAFE_FILEDEVPOOL1="$TEST_BASE_DIR/file-safe-dev1" FAIL_FILEDEVPOOL1="$TEST_BASE_DIR/file-fail-dev1" SAFE_FILEDEVPOOL2="$TEST_BASE_DIR/file-safe-dev2" FAIL_FILEDEVPOOL2="$TEST_BASE_DIR/file-fail-dev2" SPARE_FILEDEV="$TEST_BASE_DIR/file-spare-dev" SPARE_DISKDEV="$(get_debug_device)" for vdev in $SAFE_FILEDEVPOOL1 $SAFE_FILEDEVPOOL2 $FAIL_FILEDEVPOOL1 \ $FAIL_FILEDEVPOOL2 $SPARE_FILEDEV; do log_must truncate -s $SPA_MINDEVSIZE $vdev done for spare in $SPARE_FILEDEV $SPARE_DISKDEV; do # 1. Create two pools log_must zpool create -f $TESTPOOL mirror $SAFE_FILEDEVPOOL1 $FAIL_FILEDEVPOOL1 log_must zpool create -f $TESTPOOL1 mirror $SAFE_FILEDEVPOOL2 $FAIL_FILEDEVPOOL2 # 2. Add the same spare device to different pools log_must_busy zpool add $TESTPOOL spare $spare log_must_busy zpool add $TESTPOOL1 spare $spare log_must wait_hotspare_state $TESTPOOL $spare "AVAIL" log_must wait_hotspare_state $TESTPOOL1 $spare "AVAIL" # 3. Inject IO errors with a zinject error handler log_must zinject -d $FAIL_FILEDEVPOOL1 -e io -T all -f 100 $TESTPOOL log_must zinject -d $FAIL_FILEDEVPOOL2 -e io -T all -f 100 $TESTPOOL1 # 4. Start a scrub log_must zpool scrub $TESTPOOL log_must zpool scrub $TESTPOOL1 # 5. Verify the ZED kicks in a hot spare and check pool/device status log_note "Wait for ZED to auto-spare" log_must wait_vdev_state $TESTPOOL $FAIL_FILEDEVPOOL1 "FAULTED" 60 log_must wait_vdev_state $TESTPOOL $spare "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $spare "INUSE" log_must check_state $TESTPOOL "" "DEGRADED" # 6. Clear the fault log_must zinject -c all log_must zpool clear $TESTPOOL $FAIL_FILEDEVPOOL1 # 7. Verify the hot spare is available and check pool/device status log_must wait_vdev_state $TESTPOOL $FAIL_FILEDEVPOOL1 "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $spare "AVAIL" log_must is_pool_resilvered $TESTPOOL log_must check_state $TESTPOOL "" "ONLINE" # Cleanup destroy_pool $TESTPOOL destroy_pool $TESTPOOL1 done log_pass "Spare devices can be shared among different ZFS pools" zfs-0.8.3/tests/zfs-tests/tests/functional/fault/PaxHeaders.151519/auto_replace_001_pos.ksh0000644000000000000000000000007413607166133027557 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.902824809 zfs-0.8.3/tests/zfs-tests/tests/functional/fault/auto_replace_001_pos.ksh0000755016037001603700000000642713607166133027570 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2017 by Intel Corporation. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/fault/fault.cfg # # DESCRIPTION: # Testing Fault Management Agent ZED Logic - Automated Auto-Replace Test. # # STRATEGY: # 1. Update /etc/zfs/vdev_id.conf with scsidebug alias for a persistent path. # This creates keys ID_VDEV and ID_VDEV_PATH and set phys_path="scsidebug". # 2. Create a pool and set autoreplace=on (auto-replace is opt-in) # 3. Export a pool # 4. Wipe and offline the scsi_debug disk # 5. Import pool with missing disk # 6. Re-online the wiped scsi_debug disk # 7. Verify the ZED detects the new unused disk and adds it back to the pool # # Creates a raidz1 zpool using persistent disk path names # (ie not /dev/sdc) # # Auto-replace is opt in, and matches by phys_path. # verify_runnable "both" if ! is_physical_device $DISKS; then log_unsupported "Unsupported disks for this test." fi function cleanup { destroy_pool $TESTPOOL sed -i '/alias scsidebug/d' $VDEVID_CONF unload_scsi_debug } log_assert "Testing automated auto-replace FMA test" log_onexit cleanup load_scsi_debug $SDSIZE $SDHOSTS $SDTGTS $SDLUNS '512b' SD=$(get_debug_device) SD_DEVICE_ID=$(get_persistent_disk_name $SD) SD_HOST=$(get_scsi_host $SD) # Register vdev_id alias for scsi_debug device to create a persistent path echo "alias scsidebug /dev/disk/by-id/$SD_DEVICE_ID" >>$VDEVID_CONF block_device_wait SD_DEVICE=$(udevadm info -q all -n $DEV_DSKDIR/$SD | \ awk -F'=' '/ID_VDEV=/{print $2; exit}') [[ -z $SD_DEVICE ]] && log_fail "vdev rule was not registered properly" log_must zpool events -c log_must zpool create -f $TESTPOOL raidz1 $SD_DEVICE $DISK1 $DISK2 $DISK3 # Auto-replace is opt-in so need to set property log_must zpool set autoreplace=on $TESTPOOL # Add some data to the pool log_must mkfile $FSIZE /$TESTPOOL/data log_must zpool export $TESTPOOL # Wipe and offline the disk log_must dd if=/dev/zero of=/dev/disk/by-id/$SD_DEVICE_ID bs=1M count=$SDSIZE remove_disk $SD block_device_wait # Re-import pool with drive missing log_must zpool import $TESTPOOL log_must check_state $TESTPOOL "" "DEGRADED" block_device_wait # Online an empty disk in the same physical location insert_disk $SD $SD_HOST # Wait for the new disk to be online and replaced log_must wait_vdev_state $TESTPOOL "scsidebug" "ONLINE" $MAXTIMEOUT log_must wait_replacing $TESTPOOL # Validate auto-replace was successful log_must check_state $TESTPOOL "" "ONLINE" log_pass "Auto-replace test successful" zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/grow0000644000000000000000000000013213612143062022715 xustar000000000000000030 mtime=1579730482.171833447 30 atime=1579730489.081055291 30 ctime=1579730482.171833447 zfs-0.8.3/tests/zfs-tests/tests/functional/grow/0000775016037001603700000000000013612143062022776 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/grow/PaxHeaders.151519/grow.cfg0000644000000000000000000000007413607166133024446 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.162833157 zfs-0.8.3/tests/zfs-tests/tests/functional/grow/grow.cfg0000644016037001603700000000243413607166133024446 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # Copyright 2016 Nexenta Systems, Inc. # . $STF_SUITE/include/libtest.shlib export DEVICE1="$TEST_BASE_DIR/device-1" export DEVICE2="$TEST_BASE_DIR/device-2" export DEVICE3="$TEST_BASE_DIR/device-3" export DEVICE4="$TEST_BASE_DIR/device-4" export BLOCK_SIZE=131072 export TESTFILE1=file$$.1 export SMALL_WRITE_COUNT=100 export WRITE_COUNT=4096000 zfs-0.8.3/tests/zfs-tests/tests/functional/grow/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133025042 xustar000000000000000030 atime=1579730438.863442919 29 ctime=1579730482.16883335 zfs-0.8.3/tests/zfs-tests/tests/functional/grow/Makefile.am0000644016037001603700000000026013607166133025036 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/grow dist_pkgdata_SCRIPTS = \ grow_pool_001_pos.ksh \ grow_replicas_001_pos.ksh dist_pkgdata_DATA = \ grow.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/grow/PaxHeaders.151519/grow_pool_001_pos.ksh0000644000000000000000000000007413607166133026766 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.164833221 zfs-0.8.3/tests/zfs-tests/tests/functional/grow/grow_pool_001_pos.ksh0000755016037001603700000000467113607166133026776 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/grow/grow.cfg # # DESCRIPTION: # A ZFS file system is limited by the amount of disk space # available to the pool. Growing the pool by adding a disk # increases the amount of space. # # STRATEGY: # 1) Fill a ZFS filesystem until ENOSPC by creating a large file # 2) Grow the pool by adding a disk # 3) Verify that more data can now be written to the file system # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL rm -f $DEVICE1 $DEVICE2 $DEVICE3 } log_assert "A zpool may be increased in capacity by adding a disk" log_onexit cleanup truncate -s $SPA_MINDEVSIZE $DEVICE1 $DEVICE2 create_pool $TESTPOOL $pooltype $DEVICE1 $DEVICE2 log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_must zfs set compression=off $TESTPOOL/$TESTFS file_write -o create -f $TESTDIR/$TESTFILE1 \ -b $BLOCK_SIZE -c $WRITE_COUNT -d 0 typeset -i zret=$? readonly ENOSPC=28 if [[ $zret -ne $ENOSPC ]]; then log_fail "file_write completed w/o ENOSPC, aborting!!!" fi if [[ ! -s $TESTDIR/$TESTFILE1 ]]; then log_fail "$TESTDIR/$TESTFILE1 was not created" fi truncate -s $SPA_MINDEVSIZE $DEVICE3 log_must zpool add $TESTPOOL $DEVICE3 log_must file_write -o append -f $TESTDIR/$TESTFILE1 \ -b $BLOCK_SIZE -c $SMALL_WRITE_COUNT -d 0 log_must zfs inherit compression $TESTPOOL/$TESTFS log_must destroy_pool $TESTPOOL rm -f $DEVICE1 $DEVICE2 $DEVICE3 log_pass "TESTPOOL successfully grown" zfs-0.8.3/tests/zfs-tests/tests/functional/grow/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143006025034 xustar000000000000000029 mtime=1579730438.90244417 30 atime=1579730457.014025681 30 ctime=1579730482.171833447 zfs-0.8.3/tests/zfs-tests/tests/functional/grow/Makefile.in0000664016037001603700000006127613612143006025055 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/grow DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/grow ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ grow_pool_001_pos.ksh \ grow_replicas_001_pos.ksh dist_pkgdata_DATA = \ grow.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/grow/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/grow/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/grow/PaxHeaders.151519/grow_replicas_001_pos.ksh0000644000000000000000000000007413607166133027617 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.166833285 zfs-0.8.3/tests/zfs-tests/tests/functional/grow/grow_replicas_001_pos.ksh0000755016037001603700000000513613607166133027624 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # Copyright 2016 Nexenta Systems, Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/grow/grow.cfg # DESCRIPTION: # A ZFS filesystem is limited by the amount of disk space # available to the pool. Growing the pool by adding a disk # increases the amount of space. # # STRATEGY: # 1. Fill the filesystem on mirror/raidz pool by writing a file until ENOSPC. # 2. Grow the mirror/raidz pool by adding another mirror/raidz vdev. # 3. Verify that more data can now be written to the filesystem. verify_runnable "global" function cleanup { destroy_pool $TESTPOOL rm -f $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4 } log_assert "mirror/raidz pool may be increased in capacity by adding a disk" log_onexit cleanup readonly ENOSPC=28 for pooltype in "mirror" "raidz"; do log_note "Creating pool type: $pooltype" truncate -s $SPA_MINDEVSIZE $DEVICE1 $DEVICE2 create_pool $TESTPOOL $pooltype $DEVICE1 $DEVICE2 log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_must zfs set compression=off $TESTPOOL/$TESTFS file_write -o create -f $TESTDIR/$TESTFILE1 \ -b $BLOCK_SIZE -c $WRITE_COUNT -d 0 [[ $? -ne $ENOSPC ]] && \ log_fail "file_write completed w/o ENOSPC" [[ ! -s $TESTDIR/$TESTFILE1 ]] && \ log_fail "$TESTDIR/$TESTFILE1 was not created" truncate -s $SPA_MINDEVSIZE $DEVICE3 $DEVICE4 log_must zpool add $TESTPOOL $pooltype $DEVICE3 $DEVICE4 log_must file_write -o append -f $TESTDIR/$TESTFILE1 \ -b $BLOCK_SIZE -c $SMALL_WRITE_COUNT -d 0 log_must destroy_pool $TESTPOOL rm -f $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4 done log_pass "mirror/raidz pool successfully grown" zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/chattr0000644000000000000000000000013213612143054023225 xustar000000000000000030 mtime=1579730476.087638094 30 atime=1579730489.081055291 30 ctime=1579730476.087638094 zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/0000775016037001603700000000000013612143054023306 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/PaxHeaders.151519/chattr_001_pos.ksh0000644000000000000000000000007413607166147026560 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.080637868 zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/chattr_001_pos.ksh0000755016037001603700000000402213607166147026556 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # # DESCRIPTION: # Check whether chattr works as expected # # # STRATEGY: # 1. Create 3 files # 2. Use chattr to make them writable, immutable and appendonly # 3. Try to write and append to each file # set -A files writable immutable append function cleanup { for i in ${files[*]}; do log_must chattr -ia $TESTDIR/$i log_must rm -f $TESTDIR/$i done } log_onexit cleanup log_assert "Check whether chattr works as expected" log_must touch $TESTDIR/writable log_must touch $TESTDIR/immutable log_must touch $TESTDIR/append log_must chattr -i $TESTDIR/writable log_must chattr +i $TESTDIR/immutable log_must chattr +a $TESTDIR/append log_must eval "echo test > $TESTDIR/writable" log_must eval "echo test >> $TESTDIR/writable" log_mustnot eval "echo test > $TESTDIR/immutable" log_mustnot eval "echo test >> $TESTDIR/immutable" log_mustnot eval "echo test > $TESTDIR/append" log_must eval "echo test >> $TESTDIR/append" log_pass "chattr works as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133025351 xustar000000000000000030 atime=1579730434.394299429 29 ctime=1579730476.08563803 zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/Makefile.am0000644016037001603700000000024313607166133025346 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/chattr dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ chattr_001_pos.ksh \ chattr_002_neg.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025165 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.075637708 zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/setup.ksh0000755016037001603700000000306713607166133025173 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib verify_runnable "both" log_must clean_user_group log_must add_group $QGROUP log_must add_user $QGROUP $QUSER1 log_must add_user $QGROUP $QUSER2 # # Verify the test user can execute the zfs utilities. This may not # be possible due to default permissions on the user home directory. # This can be resolved granting group read access. # # chmod 0750 $HOME # user_run $QUSER1 zfs list if [ $? -ne 0 ]; then log_unsupported "Test user $QUSER1 cannot execute zfs utilities" fi DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025454 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.078637804 zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/cleanup.ksh0000755016037001603700000000213613607166133025456 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib log_must clean_user_group default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/PaxHeaders.151519/chattr_002_neg.ksh0000644000000000000000000000007413607166133026524 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.082637932 zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/chattr_002_neg.ksh0000755016037001603700000000447113607166133026532 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # # DESCRIPTION: # Check whether unprivileged user can chattr # # # STRATEGY: # 1. Create 3 files # 2. Use chattr to make them writable, immutable and appendonly # 3. Try to chattr with unprivileged user # set -A files writable immutable append function cleanup { for i in ${files[*]}; do log_must chattr -ia $TESTDIR/$i log_must rm -f $TESTDIR/$i done log_must chmod 0755 $TESTDIR } log_onexit cleanup log_assert "Check whether unprivileged user can chattr" log_must chmod 0777 $TESTDIR log_must user_run $QUSER1 touch $TESTDIR/writable log_must user_run $QUSER1 touch $TESTDIR/immutable log_must user_run $QUSER1 touch $TESTDIR/append log_must chattr -i $TESTDIR/writable log_must chattr +i $TESTDIR/immutable log_must chattr +a $TESTDIR/append log_must user_run $QUSER1 chattr -i $TESTDIR/writable log_must user_run $QUSER1 chattr -a $TESTDIR/writable log_must user_run $QUSER1 chattr +i $TESTDIR/immutable log_must user_run $QUSER1 chattr +a $TESTDIR/append log_mustnot user_run $QUSER1 chattr +i $TESTDIR/writable log_mustnot user_run $QUSER1 chattr +a $TESTDIR/writable log_mustnot user_run $QUSER1 chattr -i $TESTDIR/immutable log_mustnot user_run $QUSER1 chattr -a $TESTDIR/append log_pass "Unprivileged user cannot chattr as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002025340 xustar000000000000000030 mtime=1579730434.429300551 30 atime=1579730454.565947079 30 ctime=1579730476.087638094 zfs-0.8.3/tests/zfs-tests/tests/functional/chattr/Makefile.in0000664016037001603700000005725413612143002025361 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/chattr DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/chattr ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ chattr_001_pos.ksh \ chattr_002_neg.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/chattr/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/chattr/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/privilege0000644000000000000000000000013213612143063023726 xustar000000000000000030 mtime=1579730483.858887615 30 atime=1579730489.081055291 30 ctime=1579730483.858887615 zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/0000775016037001603700000000000013612143063024007 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/PaxHeaders.151519/privilege_001_pos.ksh0000644000000000000000000000007413607166147027762 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.851887391 zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/privilege_001_pos.ksh0000755016037001603700000000601613607166147027765 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # The RBAC profile "ZFS Storage Management" works # # STRATEGY: # (create) # 1. As a normal user, try to create a pool - which should fail. # 2. Assign "ZFS Storage Management" profile, try to create pool again, # which should succeed. # # (works well with other ZFS profile tests) # 3. Attempt to create a ZFS filesystem, which should fail. # 4. Add the "ZFS File System Management" profile, attempt to create a FS # which should succeed. # # (destroy) # 5. Remove the FS profile, then attempt to destroy the pool, which # should succeed. # 6. Remove the Storage profile, then attempt to recreate the pool, which # should fail. # # We can only run this in the global zone verify_runnable "global" if is_linux; then log_unsupported "Requires pfexec command" fi log_assert "The RBAC profile \"ZFS Storage Management\" works" ZFS_USER=$(<$TEST_BASE_DIR/zfs-privs-test-user.txt) # the user shouldn't be able to do anything initially log_mustnot user_run $ZFS_USER "zpool create $TESTPOOL $DISKS" log_mustnot user_run $ZFS_USER "pfexec zpool create $TESTPOOL $DISKS" # the first time we assign the profile, we insist it should work log_must usermod -P "ZFS Storage Management" $ZFS_USER log_must user_run $ZFS_USER "pfexec zpool create -f $TESTPOOL $DISKS" # ensure the user can't create a filesystem with this profile log_mustnot user_run $ZFS_USER "zfs create $TESTPOOL/fs" # add ZFS File System Management profile, and try to create a fs log_must usermod -P "ZFS File System Management" $ZFS_USER log_must user_run $ZFS_USER "pfexec zfs create $TESTPOOL/fs" # revoke File System Management profile usermod -P, $ZFS_USER usermod -P "ZFS Storage Management" $ZFS_USER # ensure the user can destroy pools log_mustnot user_run $ZFS_USER "zpool destroy $TESTPOOL" log_must user_run $ZFS_USER "pfexec zpool destroy $TESTPOOL" # revoke Storage Management profile usermod -P, $ZFS_USER log_mustnot user_run $ZFS_USER "pfexec zpool create -f $TESTPOOL $DISKS" log_pass "The RBAC profile \"ZFS Storage Management\" works" zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026053 xustar000000000000000030 atime=1579730440.134483727 30 ctime=1579730483.855887519 zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/Makefile.am0000644016037001603700000000025413607166133026051 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/privilege dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ privilege_001_pos.ksh \ privilege_002_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147025673 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.846887229 zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/setup.ksh0000755016037001603700000000361013607166147025673 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib if is_linux; then log_unsupported "Requires pfexec command" fi ZFS_USER=zfsrbac USES_NIS=false # if we're running NIS, turn it off until we clean up # (it can cause useradd to take a long time, hitting our TIMEOUT) svcs svc:/network/nis/client:default | grep online > /dev/null if [ $? -eq 0 ] then svcadm disable svc:/network/nis/client:default USES_NIS=true fi # create a unique user that we can use to run the tests, # making sure not to clobber any existing users. FOUND="" while [ -z "${FOUND}" ] do USER_EXISTS=$( grep $ZFS_USER /etc/passwd ) if [ ! -z "${USER_EXISTS}" ] then ZFS_USER="${ZFS_USER}x" else FOUND="true" fi done log_must mkdir -p /export/home/$ZFS_USER log_must useradd -c "ZFS Privileges Test User" -d /export/home/$ZFS_USER $ZFS_USER echo $ZFS_USER > $TEST_BASE_DIR/zfs-privs-test-user.txt echo $USES_NIS > $TEST_BASE_DIR/zfs-privs-test-nis.txt log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166147026162 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.848887293 zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/cleanup.ksh0000755016037001603700000000302013607166147026155 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib if is_linux; then log_unsupported "Privilege tests require pfexec command" fi verify_runnable "global" ZFS_USER=$(<$TEST_BASE_DIR/zfs-privs-test-user.txt) [[ -z $ZFS_USER ]] && log_fail "no ZFS_USER found" USES_NIS=$(<$TEST_BASE_DIR/zfs-privs-test-nis.txt) if [ "${USES_NIS}" == "true" ] then svcadm enable svc:/network/nis/client:default fi userdel $ZFS_USER [[ -d /export/home/$ZFS_USER ]] && rm -rf /export/home/$ZFS_USER rm $TEST_BASE_DIR/zfs-privs-test-nis.txt rm $TEST_BASE_DIR/zfs-privs-test-user.txt default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/PaxHeaders.151519/privilege_002_pos.ksh0000644000000000000000000000007413607166147027763 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.853887455 zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/privilege_002_pos.ksh0000755016037001603700000000623713607166147027773 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # The RBAC profile "ZFS File System Management" works # # STRATEGY: # # The following actions are taken, both using profile execution (pfexec) # and without profile execution - we make sure that the latter should # always fail. # # (create) # 1. As a normal user, try to create a filesystem - which should fail. # 2. Assign "ZFS File System Management" profile, try to create fs again, # which should succeed. # # (pools) # 3. Ensure a user with this profile can't perform pool administration # by attempting to destroy a pool. # # (destroy) # 5. Remove the FS profile, then attempt to destroy the fs, which # should fail. # 6. Assign the FS profile, then attempt to destroy the fs, which # should succeed. # verify_runnable "both" if is_linux; then log_unsupported "Requires pfexec command" fi log_assert "The RBAC profile \"ZFS File System Management\" works" ZFS_USER=$(<$TEST_BASE_DIR/zfs-privs-test-user.txt) # Set a $DATASET where we can create child files systems if is_global_zone; then log_must zpool create -f $TESTPOOL $DISKS DATASET=$TESTPOOL else DATASET=zonepool/zonectr0 fi # A user shouldn't be able to create filesystems log_mustnot user_run $ZFS_USER "zfs create $DATASET/zfsprivfs" # Insist this invocation of usermod works log_must usermod -P "ZFS File System Management" $ZFS_USER # Now try to create file systems as the user log_mustnot user_run $ZFS_USER "zfs create $DATASET/zfsprivfs" log_must user_run $ZFS_USER "pfexec zfs create $DATASET/zfsprivfs" # Ensure the user can't do anything to pools in this state: log_mustnot user_run $ZFS_USER "zpool destroy $DATASET" log_mustnot user_run $ZFS_USER "pfexec zpool destroy $DATASET" # revoke File System Management profile usermod -P, $ZFS_USER # Ensure the user can't create more filesystems log_mustnot user_run $ZFS_USER "zfs create $DATASET/zfsprivfs2" log_mustnot user_run $ZFS_USER "pfexec zfs create $DATASET/zfsprivfs2" # assign the profile again and destroy the fs. usermod -P "ZFS File System Management" $ZFS_USER log_must user_run $ZFS_USER "pfexec zfs destroy $DATASET/zfsprivfs" usermod -P, $ZFS_USER log_pass "The RBAC profile \"ZFS File System Management\" works" zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143010026040 xustar000000000000000030 mtime=1579730440.169484852 30 atime=1579730457.710048029 30 ctime=1579730483.858887615 zfs-0.8.3/tests/zfs-tests/tests/functional/privilege/Makefile.in0000664016037001603700000005727613612143010026065 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/privilege DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/privilege ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ privilege_001_pos.ksh \ privilege_002_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/privilege/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/privilege/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/limits0000644000000000000000000000013213612143062023240 xustar000000000000000030 mtime=1579730482.878856147 30 atime=1579730489.081055291 30 ctime=1579730482.878856147 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/0000775016037001603700000000000013612143062023321 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/limits/PaxHeaders.151519/filesystem_count.ksh0000644000000000000000000000007413607166133027435 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.867855795 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/filesystem_count.ksh0000755016037001603700000001076413607166133027445 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS 'filesystem_count' property is handled correctly by various actions # # STRATEGY: # 1. Verify 'zfs create' and 'zfs clone' increment 'filesystem_count' value # 2. Verify 'zfs destroy' decrements the value # 3. Verify 'zfs rename' updates counts across different hierarchies # 4. Verify 'zfs promote' preserves counts within different hierarchies # 5. Verify 'zfs receive' correct behaviour # 6. Verify 'zfs rollback' does not update 'filesystem_count' value # 7. Verify 'zfs diff' does not update 'filesystem_count' value # verify_runnable "both" function setup { log_must zfs create "$DATASET_TEST" log_must zfs create "$DATASET_UTIL" # Set filesystem_limit just to activate the filesystem_count property log_must zfs set filesystem_limit=100 "$DATASET_TEST" } function cleanup { destroy_dataset "$DATASET_TEST" "-Rf" destroy_dataset "$DATASET_UTIL" "-Rf" rm -f $ZSTREAM } log_assert "Verify 'filesystem_count' is handled correctly by various actions" log_onexit cleanup DATASET_TEST="$TESTPOOL/$TESTFS/filesystem_count_test" DATASET_UTIL="$TESTPOOL/$TESTFS/filesystem_count_util" ZSTREAM="$TEST_BASE_DIR/filesystem_count.$$" # 1. Verify 'zfs create' and 'zfs clone' increment 'filesystem_count' value setup log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "0" log_must zfs create "$DATASET_TEST/create_clone" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "1" log_must zfs snapshot "$DATASET_TEST/create_clone@snap" log_must zfs clone "$DATASET_TEST/create_clone@snap" "$DATASET_TEST/clone" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "2" cleanup # 2. Verify 'zfs destroy' decrements the value setup log_must zfs create "$DATASET_TEST/destroy" log_must zfs destroy "$DATASET_TEST/destroy" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "0" cleanup # 3. Verify 'zfs rename' updates counts across different hierarchies setup log_must zfs create "$DATASET_TEST/rename" log_must zfs rename "$DATASET_TEST/rename" "$DATASET_UTIL/renamed" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "0" log_must test "$(get_prop 'filesystem_count' "$DATASET_UTIL")" == "1" cleanup # 4. Verify 'zfs promote' preserves counts within different hierarchies setup log_must zfs create "$DATASET_UTIL/promote" log_must zfs snapshot "$DATASET_UTIL/promote@snap" log_must zfs clone "$DATASET_UTIL/promote@snap" "$DATASET_TEST/promoted" log_must zfs promote "$DATASET_TEST/promoted" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "1" log_must test "$(get_prop 'filesystem_count' "$DATASET_UTIL")" == "1" cleanup # 5. Verify 'zfs receive' correct behaviour setup log_must zfs create "$DATASET_UTIL/send" log_must zfs snapshot "$DATASET_UTIL/send@snap1" log_must zfs snapshot "$DATASET_UTIL/send@snap2" log_must eval "zfs send $DATASET_UTIL/send@snap1 > $ZSTREAM" log_must eval "zfs receive $DATASET_TEST/received < $ZSTREAM" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "1" log_must eval "zfs send -i @snap1 $DATASET_UTIL/send@snap2 > $ZSTREAM" log_must eval "zfs receive $DATASET_TEST/received < $ZSTREAM" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "1" cleanup # 6. Verify 'zfs rollback' does not update 'filesystem_count' value setup log_must zfs create "$DATASET_TEST/rollback" log_must zfs snapshot "$DATASET_TEST/rollback@snap" log_must zfs rollback "$DATASET_TEST/rollback@snap" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "1" cleanup # 7. Verify 'zfs diff' does not update 'filesystem_count' value setup log_must zfs create "$DATASET_TEST/diff" log_must zfs snapshot "$DATASET_TEST/diff@snap1" log_must zfs snapshot "$DATASET_TEST/diff@snap2" log_must zfs diff "$DATASET_TEST/diff@snap1" "$DATASET_TEST/diff@snap2" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "1" log_must zfs diff "$DATASET_TEST/diff@snap2" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "1" log_pass "'filesystem_count' property is handled correctly" zfs-0.8.3/tests/zfs-tests/tests/functional/limits/PaxHeaders.151519/filesystem_limit.ksh0000644000000000000000000000007413607166133027423 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.869855859 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/filesystem_limit.ksh0000755016037001603700000000544513607166133027433 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS 'filesystem_limit' is enforced when executing various actions # # STRATEGY: # 1. Verify 'zfs create' and 'zfs clone' cannot exceed the filesystem_limit # 2. Verify 'zfs rename' cannot move filesystems exceeding the limit # 3. Verify 'zfs receive' cannot exceed the limit # verify_runnable "both" function setup { log_must zfs create "$DATASET_TEST" log_must zfs create "$DATASET_UTIL" } function cleanup { destroy_dataset "$DATASET_TEST" "-Rf" destroy_dataset "$DATASET_UTIL" "-Rf" rm -f $ZSTREAM } log_assert "Verify 'filesystem_limit' is enforced executing various actions" log_onexit cleanup DATASET_TEST="$TESTPOOL/$TESTFS/filesystem_limit_test" DATASET_UTIL="$TESTPOOL/$TESTFS/filesystem_limit_util" ZSTREAM="$TEST_BASE_DIR/filesystem_limit.$$" # 1. Verify 'zfs create' and 'zfs clone' cannot exceed the filesystem_limit setup log_must zfs set filesystem_limit=1 "$DATASET_TEST" log_must zfs create "$DATASET_TEST/create" log_mustnot zfs create "$DATASET_TEST/create_exceed" log_mustnot datasetexists "$DATASET_TEST/create_exceed" log_must zfs set filesystem_limit=2 "$DATASET_TEST" log_must zfs snapshot "$DATASET_TEST/create@snap" log_must zfs clone "$DATASET_TEST/create@snap" "$DATASET_TEST/clone" log_mustnot zfs clone "$DATASET_TEST/create@snap" "$DATASET_TEST/clone_exceed" log_mustnot datasetexists "$DATASET_TEST/clone_exceed" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "2" cleanup # 2. Verify 'zfs rename' cannot move filesystems exceeding the limit setup log_must zfs set filesystem_limit=0 "$DATASET_UTIL" log_must zfs create "$DATASET_TEST/rename" log_mustnot zfs rename "$DATASET_TEST/rename" "$DATASET_UTIL/renamed" log_mustnot datasetexists "$DATASET_UTIL/renamed" log_must test "$(get_prop 'filesystem_count' "$DATASET_UTIL")" == "0" cleanup # 3. Verify 'zfs receive' cannot exceed the limit setup log_must zfs set filesystem_limit=0 "$DATASET_TEST" log_must zfs create "$DATASET_UTIL/send" log_must zfs snapshot "$DATASET_UTIL/send@snap1" log_must eval "zfs send $DATASET_UTIL/send@snap1 > $ZSTREAM" log_mustnot eval "zfs receive $DATASET_TEST/received < $ZSTREAM" log_mustnot datasetexists "$DATASET_TEST/received" log_must test "$(get_prop 'filesystem_count' "$DATASET_TEST")" == "0" log_pass "'filesystem_limit' property is enforced" zfs-0.8.3/tests/zfs-tests/tests/functional/limits/PaxHeaders.151519/snapshot_count.ksh0000644000000000000000000000007413607166133027110 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.872855955 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/snapshot_count.ksh0000755016037001603700000000660313607166133027115 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS 'snapshot_count' property is handled correctly by various actions # # STRATEGY: # 1. Verify 'zfs snapshot' increments 'snapshot_count' value # 2. Verify 'zfs destroy' decrements the value # 3. Verify 'zfs rename' updates counts across different hierarchies # 4. Verify 'zfs promote' updates counts across different hierarchies # 5. Verify 'zfs receive' correct behaviour # verify_runnable "both" function setup { log_must zfs create "$DATASET_TEST" log_must zfs create "$DATASET_UTIL" # Set snapshot_limit just to activate the snapshot_count property log_must zfs set snapshot_limit=100 "$DATASET_TEST" } function cleanup { destroy_dataset "$DATASET_TEST" "-Rf" destroy_dataset "$DATASET_UTIL" "-Rf" rm -f $ZSTREAM } log_assert "Verify 'snapshot_count' is handled correctly by various actions" log_onexit cleanup DATASET_TEST="$TESTPOOL/$TESTFS/snapshot_count_test" DATASET_UTIL="$TESTPOOL/$TESTFS/snapshot_count_util" ZSTREAM="$TEST_BASE_DIR/snapshot_count.$$" # 1. Verify 'zfs snapshot' increments 'snapshot_count' value setup log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "0" log_must zfs snapshot "$DATASET_TEST@snap" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "1" cleanup # 2. Verify 'zfs destroy' decrements the value setup log_must zfs snapshot "$DATASET_TEST@snap" log_must zfs destroy "$DATASET_TEST@snap" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "0" cleanup # 3. Verify 'zfs rename' updates counts across different hierarchies setup log_must zfs create "$DATASET_TEST/renamed" log_must zfs snapshot "$DATASET_TEST/renamed@snap" log_must zfs rename "$DATASET_TEST/renamed" "$DATASET_UTIL/renamed" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "0" log_must test "$(get_prop 'snapshot_count' "$DATASET_UTIL")" == "1" cleanup # 4. Verify 'zfs promote' updates counts across different hierarchies setup log_must zfs create "$DATASET_UTIL/promote" log_must zfs snapshot "$DATASET_UTIL/promote@snap" log_must zfs clone "$DATASET_UTIL/promote@snap" "$DATASET_TEST/promoted" log_must zfs promote "$DATASET_TEST/promoted" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "1" log_must test "$(get_prop 'snapshot_count' "$DATASET_UTIL")" == "0" cleanup # 5. Verify 'zfs receive' correct behaviour setup log_must zfs create "$DATASET_UTIL/send" log_must zfs snapshot "$DATASET_UTIL/send@snap1" log_must zfs snapshot "$DATASET_UTIL/send@snap2" log_must eval "zfs send $DATASET_UTIL/send@snap1 > $ZSTREAM" log_must eval "zfs receive $DATASET_TEST/received < $ZSTREAM" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "1" log_must eval "zfs send -i @snap1 $DATASET_UTIL/send@snap2 > $ZSTREAM" log_must eval "zfs receive $DATASET_TEST/received < $ZSTREAM" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "2" log_pass "'snapshot_count' property is handled correctly" zfs-0.8.3/tests/zfs-tests/tests/functional/limits/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025366 xustar000000000000000030 atime=1579730439.387459743 30 ctime=1579730482.876856083 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/Makefile.am0000644016037001603700000000032413607166133025362 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/limits dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ filesystem_count.ksh \ filesystem_limit.ksh \ snapshot_count.ksh \ snapshot_limit.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/limits/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025201 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.863855665 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/setup.ksh0000755016037001603700000000110313607166133025174 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/limits/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025470 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.865855731 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/cleanup.ksh0000755016037001603700000000104513607166133025470 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/limits/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007025361 xustar000000000000000030 mtime=1579730439.423460899 30 atime=1579730457.316035377 30 ctime=1579730482.879856179 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/Makefile.in0000664016037001603700000005733413612143007025401 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/limits DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/limits ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ filesystem_count.ksh \ filesystem_limit.ksh \ snapshot_count.ksh \ snapshot_limit.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/limits/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/limits/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/limits/PaxHeaders.151519/snapshot_limit.ksh0000644000000000000000000000007413607166133027076 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.874856019 zfs-0.8.3/tests/zfs-tests/tests/functional/limits/snapshot_limit.ksh0000755016037001603700000000661513607166133027106 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS 'snapshot_limit' is enforced when executing various actions # # STRATEGY: # 1. Verify 'zfs snapshot' cannot exceed the snapshot_limit # 2. Verify 'zfs rename' cannot move snapshots exceeding the limit # 3. Verify 'zfs promote' cannot exceed the limit # 4. Verify 'zfs receive' cannot exceed the limit # verify_runnable "both" function setup { log_must zfs create "$DATASET_TEST" log_must zfs create "$DATASET_UTIL" } function cleanup { destroy_dataset "$DATASET_TEST" "-Rf" destroy_dataset "$DATASET_UTIL" "-Rf" rm -f $ZSTREAM } log_assert "Verify 'snapshot_limit' is enforced when executing various actions" log_onexit cleanup DATASET_TEST="$TESTPOOL/$TESTFS/snapshot_limit_test" DATASET_UTIL="$TESTPOOL/$TESTFS/snapshot_limit_util" ZSTREAM="$TEST_BASE_DIR/snapshot_limit.$$" # 1. Verify 'zfs snapshot' cannot exceed the snapshot_limit setup log_must zfs set snapshot_limit=1 "$DATASET_TEST" log_must zfs snapshot "$DATASET_TEST@snap" log_mustnot zfs snapshot "$DATASET_TEST@snap_exceed" log_mustnot datasetexists "$DATASET_TEST@snap_exceed" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "1" cleanup # 2. Verify 'zfs rename' cannot move snapshots exceeding the limit setup log_must zfs set snapshot_limit=0 "$DATASET_UTIL" log_must zfs create "$DATASET_TEST/rename" log_must zfs snapshot "$DATASET_TEST/rename@snap" log_mustnot zfs rename "$DATASET_TEST/rename" "$DATASET_UTIL/renamed" log_mustnot datasetexists "$DATASET_UTIL/renamed" log_must test "$(get_prop 'snapshot_count' "$DATASET_UTIL")" == "0" cleanup # 3. Verify 'zfs promote' cannot exceed the limit setup log_must zfs set snapshot_limit=0 "$DATASET_UTIL" log_must zfs create "$DATASET_TEST/promote" log_must zfs snapshot "$DATASET_TEST/promote@snap" log_must zfs clone "$DATASET_TEST/promote@snap" "$DATASET_UTIL/promoted" log_mustnot zfs promote "$DATASET_UTIL/promoted" log_mustnot datasetexists "$DATASET_UTIL/promoted@snap" log_must test "$(get_prop 'snapshot_count' "$DATASET_UTIL")" == "0" cleanup # 4. Verify 'zfs receive' cannot exceed the limit setup log_must zfs set snapshot_limit=0 "$DATASET_TEST" log_must zfs create "$DATASET_UTIL/send" log_must zfs snapshot "$DATASET_UTIL/send@snap1" log_must eval "zfs send $DATASET_UTIL/send@snap1 > $ZSTREAM" log_mustnot eval "zfs receive $DATASET_TEST/received < $ZSTREAM" log_mustnot datasetexists "$DATASET_TEST/received" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "0" log_must zfs set snapshot_limit=1 "$DATASET_TEST" log_must eval "zfs receive $DATASET_TEST/received < $ZSTREAM" log_must zfs snapshot "$DATASET_UTIL/send@snap2" log_must eval "zfs send -i @snap1 $DATASET_UTIL/send@snap2 > $ZSTREAM" log_mustnot eval "zfs receive $DATASET_TEST/received < $ZSTREAM" log_mustnot datasetexists "$DATASET_TEST/received@snap2" log_must test "$(get_prop 'snapshot_count' "$DATASET_TEST")" == "1" log_pass "'snapshot_limit' property is enforced" zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/sparse0000644000000000000000000000013213612143065023237 xustar000000000000000030 mtime=1579730485.342935265 30 atime=1579730489.081055291 30 ctime=1579730485.342935265 zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/0000775016037001603700000000000013612143065023320 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133025361 xustar000000000000000029 atime=1579730441.20751818 30 ctime=1579730485.340935201 zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/Makefile.am0000644016037001603700000000026013607166133025355 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/sparse dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ sparse_001_pos.ksh dist_pkgdata_DATA = \ sparse.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025175 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.333934977 zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/setup.ksh0000755016037001603700000000203213607166133025172 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib disk=${DISKS%% *} default_setup $disk zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025464 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.335935041 zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/cleanup.ksh0000755016037001603700000000200313607166133025457 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/PaxHeaders.151519/sparse.cfg0000644000000000000000000000007413607166133025304 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.331934913 zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/sparse.cfg0000644016037001603700000000257413607166133025311 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export TESTFILE=testfile.sparse export HOLES_FILESIZE=${HOLES_FILESIZE-"67108864"} # 64 Mb export HOLES_BLKSIZE=${HOLES_BLKSIZE-"512"} export HOLES_SEED=${HOLES_SEED-""} export HOLES_FILEOFFSET=${HOLES_FILEOFFSET-""} export HOLES_COUNT=${HOLES_COUNT-"16384"} # FILESIZE/BLKSIZE/8 export STF_TIMEOUT=3600 export DISKSARRAY=$DISKS export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') set_device_dir zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/PaxHeaders.151519/sparse_001_pos.ksh0000644000000000000000000000007413607166133026573 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.338935137 zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/sparse_001_pos.ksh0000755016037001603700000000417213607166133026577 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/sparse/sparse.cfg # # DESCRIPTION: # Holes in ZFS files work correctly. # # STRATEGY: # 1. Open file # 2. Write random blocks in random places # 3. Read each block back to check for correctness. # 4. Repeat steps 2 and 3 lots of times # verify_runnable "global" function cleanup { [[ -e $TESTDIR ]] && log_must rm -rf $TESTDIR/* } log_assert "Ensure random blocks are read back correctly" options="" options_display="default options" log_onexit cleanup [[ -n "$HOLES_FILESIZE" ]] && options=" $options -f $HOLES_FILESIZE " [[ -n "$HOLES_BLKSIZE" ]] && options="$options -b $HOLES_BLKSIZE " [[ -n "$HOLES_COUNT" ]] && options="$options -c $HOLES_COUNT " [[ -n "$HOLES_SEED" ]] && options="$options -s $HOLES_SEED " [[ -n "$HOLES_FILEOFFSET" ]] && options="$options -o $HOLES_FILEOFFSET " options="$options -r " [[ -n "$options" ]] && options_display=$options log_note "Invoking file_trunc with: $options_display" log_must file_trunc $options $TESTDIR/$TESTFILE typeset dir=$(get_device_dir $DISKS) verify_filesys "$TESTPOOL" "$TESTPOOL/$TESTFS" "$dir" log_pass "Random blocks have been read back correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143011025350 xustar000000000000000030 mtime=1579730441.244519367 30 atime=1579730458.316067487 30 ctime=1579730485.342935265 zfs-0.8.3/tests/zfs-tests/tests/functional/sparse/Makefile.in0000664016037001603700000006130413612143011025360 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/sparse DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/sparse ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ sparse_001_pos.ksh dist_pkgdata_DATA = \ sparse.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/sparse/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/sparse/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/trim0000644000000000000000000000013213612143065022715 xustar000000000000000030 mtime=1579730485.608943807 30 atime=1579730489.081055291 30 ctime=1579730485.608943807 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/0000775016037001603700000000000013612143065022776 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/trim_integrity.ksh0000644000000000000000000000007413607166133026564 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.602943613 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/trim_integrity.ksh0000755016037001603700000000476613607166133026601 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/trim/trim.kshlib . $STF_SUITE/tests/functional/trim/trim.cfg # # DESCRIPTION: # Verify manual trim pool data integrity. # # STRATEGY: # 1. Create a pool on sparse file vdevs to trim. # 2. Generate some interesting pool data which can be trimmed. # 3. Manually trim the pool. # 4. Verify trim IOs of the expected type were issued for the pool. # 5. Verify data integrity of the pool after trim. # 6. Repeat test for striped, mirrored, and RAIDZ pools. verify_runnable "global" log_assert "Run 'zpool trim' and verify pool data integrity" function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi log_must rm -f $TRIM_VDEVS log_must set_tunable64 zfs_trim_extent_bytes_min $trim_extent_bytes_min log_must set_tunable64 zfs_trim_txg_batch $trim_txg_batch } log_onexit cleanup # Minimum trim size is decreased to verify all trim sizes. typeset trim_extent_bytes_min=$(get_tunable zfs_trim_extent_bytes_min) log_must set_tunable64 zfs_trim_extent_bytes_min 4096 # Reduced zfs_trim_txg_batch to make trimming more frequent. typeset trim_txg_batch=$(get_tunable zfs_trim_txg_batch) log_must set_tunable64 zfs_trim_txg_batch 8 for type in "" "mirror" "raidz" "raidz2" "raidz3"; do log_must truncate -s 1G $TRIM_VDEVS log_must zpool create -f $TESTPOOL $type $TRIM_VDEVS # Add and remove data from the pool in a random fashion in order # to generate a variety of interesting ranges to be manually trimmed. for n in {0..10}; do dir="/$TESTPOOL/trim-$((RANDOM % 5))" filesize=$((4096 + ((RANDOM * 691) % 131072) )) log_must rm -rf $dir log_must fill_fs $dir 10 10 $filesize 1 R zpool sync done log_must du -hs /$TESTPOOL log_must zpool trim $TESTPOOL wait_trim $TESTPOOL $TRIM_VDEVS verify_trim_io $TESTPOOL "ind" 10 verify_pool $TESTPOOL log_must zpool destroy $TESTPOOL log_must rm -f $TRIM_VDEVS done log_pass "Manual trim successfully validated" zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/autotrim_config.ksh0000644000000000000000000000007413612141516026676 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.597943453 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/autotrim_config.ksh0000755016037001603700000000626213612141516026704 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/trim/trim.kshlib . $STF_SUITE/tests/functional/trim/trim.cfg # # DESCRIPTION: # Check various pool geometries stripe, mirror, raidz) # # STRATEGY: # 1. Create a pool on file vdevs to trim. # 2. Set 'autotrim=on' on pool. # 3. Fill the pool to a known percentage of capacity. # 4. Verify the vdevs contain 75% or more allocated blocks. # 5. Remove all files making it possible to trim the entire pool. # 6. Wait for auto trim to issue trim IOs for the free blocks. # 7. Verify the disks contain 30% or less allocated blocks. # 8. Repeat for test for striped, mirrored, and RAIDZ pools. verify_runnable "global" log_assert "Set 'autotrim=on' verify pool disks were trimmed" function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi log_must rm -f $TRIM_VDEVS log_must set_tunable64 zfs_trim_extent_bytes_min $trim_extent_bytes_min log_must set_tunable64 zfs_trim_txg_batch $trim_txg_batch log_must set_tunable64 zfs_vdev_min_ms_count $vdev_min_ms_count } log_onexit cleanup # Minimum trim size is decreased to verify all trim sizes. typeset trim_extent_bytes_min=$(get_tunable zfs_trim_extent_bytes_min) log_must set_tunable64 zfs_trim_extent_bytes_min 4096 # Reduced zfs_trim_txg_batch to make trimming more frequent. typeset trim_txg_batch=$(get_tunable zfs_trim_txg_batch) log_must set_tunable64 zfs_trim_txg_batch 8 # Increased metaslabs to better simulate larger more realistic devices. typeset vdev_min_ms_count=$(get_tunable zfs_vdev_min_ms_count) log_must set_tunable64 zfs_vdev_min_ms_count 32 typeset VDEV_MAX_MB=$(( floor(4 * MINVDEVSIZE * 0.75 / 1024 / 1024) )) typeset VDEV_MIN_MB=$(( floor(4 * MINVDEVSIZE * 0.30 / 1024 / 1024) )) for type in "" "mirror" "raidz2"; do if [[ "$type" = "" ]]; then VDEVS="$TRIM_VDEV1" elif [[ "$type" = "mirror" ]]; then VDEVS="$TRIM_VDEV1 $TRIM_VDEV2" else VDEVS="$TRIM_VDEV1 $TRIM_VDEV2 $TRIM_VDEV3" fi log_must truncate -s $((4 * MINVDEVSIZE)) $VDEVS log_must zpool create -f $TESTPOOL $VDEVS log_must zpool set autotrim=on $TESTPOOL typeset availspace=$(get_prop available $TESTPOOL) typeset fill_mb=$(( floor(availspace * 0.90 / 1024 / 1024) )) # Fill the pool, verify the vdevs are no longer sparse. file_write -o create -f /$TESTPOOL/file -b 1048576 -c $fill_mb -d R verify_vdevs "-ge" "$VDEV_MAX_MB" $VDEVS # Remove the file, wait for trim, verify the vdevs are now sparse. log_must rm /$TESTPOOL/file wait_trim_io $TESTPOOL "ind" 64 verify_vdevs "-le" "$VDEV_MIN_MB" $VDEVS log_must zpool destroy $TESTPOOL log_must rm -f $VDEVS done log_pass "Auto trim successfully shrunk vdevs" zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025040 xustar000000000000000030 atime=1579730441.463526399 30 ctime=1579730485.606943743 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/Makefile.am0000644016037001603700000000041113607166133025031 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/trim dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ trim.kshlib \ trim.cfg \ autotrim_integrity.ksh \ autotrim_config.ksh \ autotrim_trim_integrity.ksh \ trim_integrity.ksh \ trim_config.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147024660 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.586943101 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/setup.ksh0000755016037001603700000000162213607166147024661 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" DISK1=${DISKS%% *} typeset -i max_discard=0 if [[ -b $DEV_RDSKDIR/$DISK1 ]]; then max_discard=$(lsblk -Dbn $DEV_RDSKDIR/$DISK1 | awk '{ print $4; exit }') fi if test $max_discard -eq 0; then log_unsupported "DISKS do not support discard (TRIM/UNMAP)" fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025142 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.589943197 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/cleanup.ksh0000755016037001603700000000221013607166133025135 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # #!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if poolexists $TESTPOOL1; then destroy_pool $TESTPOOL1 fi TRIM_DIR="$TEST_BASE_DIR" TRIM_VDEVS="$TRIM_DIR/trim-vdev1 $TRIM_DIR/trim-vdev2 \ $TRIM_DIR/trim-vdev3 $TRIM_DIR/trim-vdev4" rm -rf $TRIM_VDEVS default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/autotrim_trim_integrity.ksh0000644000000000000000000000007413607166133030510 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.600943549 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/autotrim_trim_integrity.ksh0000755016037001603700000000533313607166133030514 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/trim/trim.kshlib . $STF_SUITE/tests/functional/trim/trim.cfg # # DESCRIPTION: # Verify automatic trim and manual trim coexist correctly. # # STRATEGY: # 1. Create a pool on sparse file vdevs to trim. # 2. Set autotrim=on to enable asynchronous pool trimming. # 3. Generate some interesting pool data which can be trimmed. # 4. While generating data issue manual trims. # 4. Verify trim IOs of the expected type were issued for the pool. # 5. Verify data integrity of the pool after trim. # 6. Repeat test for striped, mirrored, and RAIDZ pools. verify_runnable "global" log_assert "Set 'autotrim=on', run 'zpool trim' and verify pool data integrity" function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi log_must rm -f $TRIM_VDEVS log_must set_tunable64 zfs_trim_extent_bytes_min $trim_extent_bytes_min log_must set_tunable64 zfs_trim_txg_batch $trim_txg_batch } log_onexit cleanup # Minimum trim size is decreased to verify all trim sizes. typeset trim_extent_bytes_min=$(get_tunable zfs_trim_extent_bytes_min) log_must set_tunable64 zfs_trim_extent_bytes_min 4096 # Reduced zfs_trim_txg_batch to make trimming more frequent. typeset trim_txg_batch=$(get_tunable zfs_trim_txg_batch) log_must set_tunable64 zfs_trim_txg_batch 8 for type in "" "mirror" "raidz" "raidz2" "raidz3"; do log_must truncate -s 1G $TRIM_VDEVS log_must zpool create -f $TESTPOOL $type $TRIM_VDEVS log_must zpool set autotrim=on $TESTPOOL # Add and remove data from the pool in a random fashion in order # to generate a variety of interesting ranges to be auto trimmed. for n in {0..10}; do dir="/$TESTPOOL/autotrim-$((RANDOM % 5))" filesize=$((4096 + ((RANDOM * 691) % 131072) )) log_must rm -rf $dir log_must fill_fs $dir 10 10 $filesize 1 R zpool sync if [[ $((n % 4)) -eq 0 ]]; then log_must zpool trim $TESTPOOL wait_trim $TESTPOOL $TRIM_VDEVS fi done log_must du -hs /$TESTPOOL verify_trim_io $TESTPOOL "ind" 10 verify_pool $TESTPOOL log_must zpool destroy $TESTPOOL log_must rm -f $TRIM_VDEVS done log_pass "Automatic trim and manual trim coexistence successfully validated" zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/autotrim_integrity.ksh0000644000000000000000000000007413607166133027455 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.595943389 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/autotrim_integrity.ksh0000755016037001603700000000501613607166133027457 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/trim/trim.kshlib . $STF_SUITE/tests/functional/trim/trim.cfg # # DESCRIPTION: # Verify automatic trim pool data integrity. # # STRATEGY: # 1. Create a pool on sparse file vdevs to trim. # 2. Set autotrim=on to enable asynchronous pool trimming. # 3. Generate some interesting pool data which can be trimmed. # 4. Verify trim IOs of the expected type were issued for the pool. # 5. Verify data integrity of the pool after trim. # 6. Repeat test for striped, mirrored, and RAIDZ pools. verify_runnable "global" log_assert "Set 'autotrim=on' pool property verify pool data integrity" function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi log_must rm -f $TRIM_VDEVS log_must set_tunable64 zfs_trim_extent_bytes_min $trim_extent_bytes_min log_must set_tunable64 zfs_trim_txg_batch $trim_txg_batch } log_onexit cleanup # Minimum trim size is decreased to verify all trim sizes. typeset trim_extent_bytes_min=$(get_tunable zfs_trim_extent_bytes_min) log_must set_tunable64 zfs_trim_extent_bytes_min 4096 # Reduced zfs_trim_txg_batch to make trimming more frequent. typeset trim_txg_batch=$(get_tunable zfs_trim_txg_batch) log_must set_tunable64 zfs_trim_txg_batch 8 for type in "" "mirror" "raidz" "raidz2" "raidz3"; do log_must truncate -s 1G $TRIM_VDEVS log_must zpool create -f $TESTPOOL $type $TRIM_VDEVS log_must zpool set autotrim=on $TESTPOOL # Add and remove data from the pool in a random fashion in order # to generate a variety of interesting ranges to be auto trimmed. for n in {0..10}; do dir="/$TESTPOOL/autotrim-$((RANDOM % 5))" filesize=$((4096 + ((RANDOM * 691) % 131072) )) log_must rm -rf $dir log_must fill_fs $dir 10 10 $filesize 1 R zpool sync done log_must du -hs /$TESTPOOL verify_trim_io $TESTPOOL "ind" 10 verify_pool $TESTPOOL log_must zpool destroy $TESTPOOL log_must rm -f $TRIM_VDEVS done log_pass "Automatic trim successfully validated" zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/trim.cfg0000644000000000000000000000007413607166133024440 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.593943325 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/trim.cfg0000644016037001603700000000221213607166133024432 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # TRIM_DIR="$TEST_BASE_DIR" TRIM_VDEV1="$TRIM_DIR/trim-vdev1" TRIM_VDEV2="$TRIM_DIR/trim-vdev2" TRIM_VDEV3="$TRIM_DIR/trim-vdev3" TRIM_VDEV4="$TRIM_DIR/trim-vdev4" TRIM_VDEVS="$TRIM_VDEV1 $TRIM_VDEV2 $TRIM_VDEV3 $TRIM_VDEV4" zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/trim_config.ksh0000644000000000000000000000007413612141516026005 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.604943679 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/trim_config.ksh0000755016037001603700000000623513612141516026013 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/trim/trim.kshlib . $STF_SUITE/tests/functional/trim/trim.cfg # # DESCRIPTION: # Check various pool geometries stripe, mirror, raidz # # STRATEGY: # 1. Create a pool on file vdevs to trim. # 2. Fill the pool to a known percentage of capacity. # 3. Verify the vdevs contain 75% or more allocated blocks. # 4. Remove all files making it possible to trim the entire pool. # 5. Manually trim the pool. # 6. Wait for trim to issue trim IOs for the free blocks. # 7. Verify the disks contain 30% or less allocated blocks. # 8. Repeat for test for striped, mirrored, and RAIDZ pools. verify_runnable "global" log_assert "Run 'zpool trim' verify pool disks were trimmed" function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi log_must rm -f $TRIM_VDEVS log_must set_tunable64 zfs_trim_extent_bytes_min $trim_extent_bytes_min log_must set_tunable64 zfs_trim_txg_batch $trim_txg_batch log_must set_tunable64 zfs_vdev_min_ms_count $vdev_min_ms_count } log_onexit cleanup # Minimum trim size is decreased to verify all trim sizes. typeset trim_extent_bytes_min=$(get_tunable zfs_trim_extent_bytes_min) log_must set_tunable64 zfs_trim_extent_bytes_min 4096 # Reduced zfs_trim_txg_batch to make trimming more frequent. typeset trim_txg_batch=$(get_tunable zfs_trim_txg_batch) log_must set_tunable64 zfs_trim_txg_batch 8 # Increased metaslabs to better simulate larger more realistic devices. typeset vdev_min_ms_count=$(get_tunable zfs_vdev_min_ms_count) log_must set_tunable64 zfs_vdev_min_ms_count 32 typeset VDEV_MAX_MB=$(( floor(4 * MINVDEVSIZE * 0.75 / 1024 / 1024) )) typeset VDEV_MIN_MB=$(( floor(4 * MINVDEVSIZE * 0.30 / 1024 / 1024) )) for type in "" "mirror" "raidz2"; do if [[ "$type" = "" ]]; then VDEVS="$TRIM_VDEV1" elif [[ "$type" = "mirror" ]]; then VDEVS="$TRIM_VDEV1 $TRIM_VDEV2" else VDEVS="$TRIM_VDEV1 $TRIM_VDEV2 $TRIM_VDEV3" fi log_must truncate -s $((4 * MINVDEVSIZE)) $VDEVS log_must zpool create -f $TESTPOOL $type $VDEVS typeset availspace=$(get_prop available $TESTPOOL) typeset fill_mb=$(( floor(availspace * 0.90 / 1024 / 1024) )) # Fill the pool, verify the vdevs are no longer sparse. file_write -o create -f /$TESTPOOL/file -b 1048576 -c $fill_mb -d R verify_vdevs "-ge" "$VDEV_MAX_MB" $VDEVS # Remove the file, issue trim, verify the vdevs are now sparse. log_must rm /$TESTPOOL/file log_must zpool trim $TESTPOOL wait_trim $TESTPOOL $VDEVS verify_vdevs "-le" "$VDEV_MIN_MB" $VDEVS log_must zpool destroy $TESTPOOL log_must rm -f $VDEVS done log_pass "Manual trim successfully shrunk vdevs" zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143011025026 xustar000000000000000030 mtime=1579730441.499527555 30 atime=1579730458.468072367 30 ctime=1579730485.608943807 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/Makefile.in0000664016037001603700000005741413612143011025045 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/trim DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/trim ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ trim.kshlib \ trim.cfg \ autotrim_integrity.ksh \ autotrim_config.ksh \ autotrim_trim_integrity.ksh \ trim_integrity.ksh \ trim_config.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/trim/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/trim/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/trim/PaxHeaders.151519/trim.kshlib0000644000000000000000000000007413612141513025144 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.591943261 zfs-0.8.3/tests/zfs-tests/tests/functional/trim/trim.kshlib0000644016037001603700000000645613612141513025154 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # Get the actual size on disk for the provided file. # function get_size_mb { typeset rval=$(du --block-size 1048576 -s "$1" | awk '{print $1}') echo -n "$rval" } # # Get the number of trim IOs issued for the pool (ind or agg). # function get_trim_io { typeset pool="${1-:$TESTPOOL}" typeset type="${2-:ind}" typeset rval # Sum the ind or agg columns of the trim request size histogram. case "$type" in "ind") rval=$(zpool iostat -pr $pool | awk \ '$1 ~ /[0-9].*/ { sum += $12 } END { print sum }') echo -n "$rval" ;; "agg") rval=$(zpool iostat -pr $pool | awk \ '$1 ~ /[0-9].*/ { sum += $13 } END { print sum }') echo -n "$rval" ;; *) log_fail "Type must be 'ind' or 'agg'" ;; esac } # # Verify that trim IOs were send to devices in the pool. # function verify_trim_io { typeset pool="${1:-$TESTPOOL}" typeset type="${2:-ind}" typeset min_trim_ios=${3:-100} typeset ios ios=$(get_trim_io $pool $type) if [[ $ios -ge $min_trim_ios ]]; then log_note "Issued $ios $type trim IOs for pool $pool" else log_fail "Too few trim IOs issued $ios/$min_trim_ios" fi } # # Run N txgs which should be enough to trim the entire pool. # function wait_trim_io # pool type txgs { typeset pool="${1-:$TESTPOOL}" typeset type="${2-:ind}" typeset txgs=${3:-10} typeset timeout=120 typeset stop_time=$(( $(date +%s) + $timeout )) typeset -i i=0 while [[ $i -lt $txgs ]]; do if [ "$(date +%s)" -ge $stop_time ]; then log_fail "Exceeded trim time limit of ${timeout}s" return fi zpool sync -f ((i = i + 1)) done typeset ios=$(get_trim_io $pool $type) log_note "Waited for $txgs txgs, $ios $type TRIM IOs" } # # Verify that file vdevs against a target value. # function verify_vdevs # op size vdevs { typeset tgt_op=$1 typeset tgt_size=$2 shift 2 typeset vdevs=$@ for vdev in $vdevs; do typeset size=$(get_size_mb $vdev) if test $size $tgt_op $tgt_size; then log_note "Success $vdev is $size MB which is $tgt_op" \ "than $tgt_size MB" else log_fail "Failure $vdev is $size MB which is not" \ "$tgt_op than $tgt_size MB" fi done } # # Wait for up to 120 seconds for trimming of the listed vdevs to complete. # function wait_trim # pool vdevs { typeset stop_time=$(( $(date +%s) + 120 )) typeset pool="$1" shift typeset vdevs=$@ typeset complete while [[ $complete -eq 0 ]]; do complete=1 for vdev in $vdevs; do if [[ "$(trim_progress $pool $vdev)" -lt "100" ]]; then complete=0 break else log_must eval "trim_prog_line $pool $vdev | \ grep complete" fi done if [ "$(date +%s)" -ge $stop_time ]; then log_fail "Exceeded trim time limit of 120s" fi sleep 0.5 done log_note "Pool completed trim successfully." } zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/user_namespace0000644000000000000000000000013213612143065024734 xustar000000000000000030 mtime=1579730485.790949651 30 atime=1579730489.081055291 30 ctime=1579730485.790949651 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/0000775016037001603700000000000013612143065025015 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/PaxHeaders.151519/user_namespace_001.ksh0000644000000000000000000000007413607166133031104 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.786949523 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/user_namespace_001.ksh0000755016037001603700000000476313607166133031116 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # . $STF_SUITE/tests/functional/user_namespace/user_namespace_common.kshlib # # # DESCRIPTION: # Regression test for secpolicy_vnode_setids_setgids # # # STRATEGY: # 1. Create files with various owners. # 2. Try to set setgid bit. # verify_runnable "both" # rroot: real root, # uroot: root within user namespace # uother: other user within user namespace set -A files rroot_rroot uroot_uroot uroot_other uother_uroot uother_uother function cleanup { for i in ${files[*]}; do log_must rm -f $TESTDIR/$i done } log_onexit cleanup log_assert "Check root in user namespaces" TOUCH=$(readlink -e $(which touch)) CHMOD=$(readlink -e $(which chmod)) for i in ${files[*]}; do log_must $TOUCH $TESTDIR/$i log_must $CHMOD 0644 $TESTDIR/$i done log_must chown 0:0 $TESTDIR/rroot_rroot log_must chown $ROOT_UID:$ROOT_UID $TESTDIR/uroot_uroot log_must chown $ROOT_UID:$OTHER_UID $TESTDIR/uroot_other log_must chown $OTHER_UID:$ROOT_UID $TESTDIR/uother_uroot log_must chown $OTHER_UID:$OTHER_UID $TESTDIR/uother_uother log_mustnot user_ns_exec $CHMOD 02755 $TESTDIR/rroot_rroot log_mustnot test -g $TESTDIR/rroot_rroot log_must user_ns_exec $CHMOD 02755 $TESTDIR/uroot_uroot log_must test -g $TESTDIR/uroot_uroot log_must user_ns_exec $CHMOD 02755 $TESTDIR/uroot_other log_must test -g $TESTDIR/uroot_other log_must user_ns_exec $CHMOD 02755 $TESTDIR/uother_uroot log_must test -g $TESTDIR/uother_uroot log_must user_ns_exec $CHMOD 02755 $TESTDIR/uother_uother log_must test -g $TESTDIR/uother_uother log_mustnot user_ns_exec $TOUCH $TESTDIR/rroot_rroot log_must $CHMOD 0666 $TESTDIR/rroot_rroot for i in ${files[*]}; do log_must user_ns_exec $TOUCH $TESTDIR/$i done log_pass "Check root in user namespaces" zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133027057 xustar000000000000000030 atime=1579730441.642532146 30 ctime=1579730485.788949587 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/Makefile.am0000644016037001603700000000034413607166133027055 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/user_namespace dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ user_namespace_001.ksh dist_pkgdata_DATA = \ user_namespace_common.kshlib \ user_namespace.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133026672 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.781949361 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/setup.ksh0000755016037001603700000000177013607166133026677 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # . $STF_SUITE/include/libtest.shlib if ! [ -f /proc/self/uid_map ]; then log_unsupported "The kernel doesn't support user namespaces." fi verify_runnable "both" DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027161 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.784949457 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/cleanup.ksh0000755016037001603700000000154213607166133027163 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/PaxHeaders.151519/user_namespace.cfg0000644000000000000000000000007413607166133030476 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.779949297 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/user_namespace.cfg0000644016037001603700000000151713607166133030477 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # export ROOT_UID=100000 export OTHER_UID=101000 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/PaxHeaders.151519/user_namespace_common.ks0000644000000000000000000000007413607166133031724 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.777949233 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/user_namespace_common.kshlib0000644016037001603700000000160313607166133032560 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/user_namespace/user_namespace.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143011027045 xustar000000000000000030 mtime=1579730441.680533366 30 atime=1579730458.528074293 30 ctime=1579730485.790949651 zfs-0.8.3/tests/zfs-tests/tests/functional/user_namespace/Makefile.in0000664016037001603700000006142013612143011027054 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/user_namespace DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/user_namespace ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ user_namespace_001.ksh dist_pkgdata_DATA = \ user_namespace_common.kshlib \ user_namespace.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/user_namespace/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/user_namespace/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141523024055 xustar000000000000000030 atime=1579730433.690276825 30 ctime=1579730474.904600109 zfs-0.8.3/tests/zfs-tests/tests/functional/Makefile.am0000644016037001603700000000166513612141523024062 0ustar00hutter2hutter200000000000000SUBDIRS = \ acl \ alloc_class \ arc \ atime \ bootfs \ cache \ cachefile \ casenorm \ channel_program \ chattr \ checksum \ clean_mirror \ cli_root \ cli_user \ compression \ cp_files \ ctime \ deadman \ delegate \ devices \ events \ exec \ fault \ features \ grow \ history \ hkdf \ inheritance \ inuse \ io \ large_files \ largest_pool \ libzfs \ limits \ pyzfs \ link_count \ migration \ mmap \ mmp \ mount \ mv_files \ nestedfs \ no_space \ nopwrite \ online_offline \ pool_checkpoint \ pool_names \ poolversion \ privilege \ procfs \ projectquota \ quota \ raidz \ redundancy \ refquota \ refreserv \ removal \ rename_dirs \ replacement \ reservation \ resilver \ rootpool \ rsend \ scrub_mirror \ slog \ snapshot \ snapused \ sparse \ suid \ threadsappend \ tmpfile \ trim \ truncate \ upgrade \ user_namespace \ userquota \ vdev_zaps \ write_dirs \ xattr \ zvol zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/features0000644000000000000000000000013213612143061023554 xustar000000000000000030 mtime=1579730481.983827409 30 atime=1579730489.082055323 30 ctime=1579730481.983827409 zfs-0.8.3/tests/zfs-tests/tests/functional/features/0000775016037001603700000000000013612143061023635 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/features/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025703 xustar000000000000000030 atime=1579730438.706437876 30 ctime=1579730481.974827121 zfs-0.8.3/tests/zfs-tests/tests/functional/features/Makefile.am0000644016037001603700000000005213607166133025675 0ustar00hutter2hutter200000000000000SUBDIRS = \ async_destroy \ large_dnode zfs-0.8.3/tests/zfs-tests/tests/functional/features/PaxHeaders.151519/large_dnode0000644000000000000000000000013213612143062026020 xustar000000000000000030 mtime=1579730482.116831681 30 atime=1579730489.082055323 30 ctime=1579730482.116831681 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/0000775016037001603700000000000013612143062026101 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_001_po0000644000000000000000000000007413607166133031356 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.092830909 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_001_pos.ksh0000755016037001603700000000430313607166133032325 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that the dnode sizes of newly created files are consistent # with the dnodesize dataset property. # # STRATEGY: # 1. Create a file system # 2. Set dnodesize to a legal literal value # 3. Create a file # 4. Repeat 2-3 for all legal literal values of dnodesize values # 5. Unmount the file system # 6. Use zdb to check expected dnode sizes # TEST_FS=$TESTPOOL/large_dnode verify_runnable "both" function cleanup { datasetexists $TEST_FS && log_must zfs destroy $TEST_FS } log_onexit cleanup log_assert "dnode sizes are consistent with dnodesize dataset property" log_must zfs create $TEST_FS set -A dnsizes "512" "1k" "2k" "4k" "8k" "16k" set -A inodes for ((i=0; i < ${#dnsizes[*]}; i++)) ; do size=${dnsizes[$i]} if [[ $size == "512" ]] ; then size="legacy" fi file=/$TEST_FS/file.$size log_must zfs set dnsize=$size $TEST_FS touch $file inodes[$i]=$(ls -li $file | awk '{print $1}') done log_must zfs umount $TEST_FS for ((i=0; i < ${#dnsizes[*]}; i++)) ; do dnsize=$(zdb -dddd $TEST_FS ${inodes[$i]} | awk '/ZFS plain file/ {print $6}' | tr K k) if [[ "$dnsize" != "${dnsizes[$i]}" ]]; then log_fail "dnode size is $dnsize (expected ${dnsizes[$i]})" fi done log_pass "dnode sizes are consistent with dnodesize dataset property" zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_005_po0000644000000000000000000000007413607166133031362 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.102831231 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_005_pos.ksh0000755016037001603700000000450213607166133032332 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" TEST_SEND_FS=$TESTPOOL/send_large_dnode TEST_RECV_FS=$TESTPOOL/recv_large_dnode TEST_SNAP=$TEST_SEND_FS@ldnsnap TEST_SNAPINCR=$TEST_SEND_FS@ldnsnap_incr TEST_STREAM=$TESTDIR/ldnsnap TEST_STREAMINCR=$TESTDIR/ldnsnap_incr TEST_FILE=foo TEST_FILEINCR=bar function cleanup { if datasetexists $TEST_SEND_FS ; then log_must zfs destroy -r $TEST_SEND_FS fi if datasetexists $TEST_RECV_FS ; then log_must zfs destroy -r $TEST_RECV_FS fi rm -f $TEST_STREAM rm -f $TEST_STREAMINCR } log_onexit cleanup log_assert "zfs send stream with large dnodes accepted by new pool" log_must zfs create -o dnodesize=1k $TEST_SEND_FS log_must touch /$TEST_SEND_FS/$TEST_FILE log_must zfs snap $TEST_SNAP log_must zfs send $TEST_SNAP > $TEST_STREAM log_must rm -f /$TEST_SEND_FS/$TEST_FILE log_must touch /$TEST_SEND_FS/$TEST_FILEINCR log_must zfs snap $TEST_SNAPINCR log_must zfs send -i $TEST_SNAP $TEST_SNAPINCR > $TEST_STREAMINCR log_must eval "zfs recv $TEST_RECV_FS < $TEST_STREAM" inode=$(ls -li /$TEST_RECV_FS/$TEST_FILE | awk '{print $1}') dnsize=$(zdb -dddd $TEST_RECV_FS $inode | awk '/ZFS plain file/ {print $6}') if [[ "$dnsize" != "1K" ]]; then log_fail "dnode size is $dnsize (expected 1K)" fi log_must eval "zfs recv -F $TEST_RECV_FS < $TEST_STREAMINCR" log_must diff -r /$TEST_SEND_FS /$TEST_RECV_FS log_must zfs umount $TEST_SEND_FS log_must zfs umount $TEST_RECV_FS log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030146 xustar000000000000000030 atime=1579730438.811441249 30 ctime=1579730482.113831584 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/Makefile.am0000644016037001603700000000057013607166133030145 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/features/large_dnode dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ large_dnode_001_pos.ksh \ large_dnode_002_pos.ksh \ large_dnode_003_pos.ksh \ large_dnode_004_neg.ksh \ large_dnode_005_pos.ksh \ large_dnode_006_pos.ksh \ large_dnode_007_neg.ksh \ large_dnode_008_pos.ksh \ large_dnode_009_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027761 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.090830845 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/setup.ksh0000755016037001603700000000174413607166133027767 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030250 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.088830781 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/cleanup.ksh0000755016037001603700000000171513607166133030254 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_007_ne0000644000000000000000000000007413607166133031350 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.106831359 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_007_neg.ksh0000755016037001603700000000344213607166133032306 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that the dnodesize dataset property won't accept a value # other than "legacy" if the large_dnode feature is not enabled. # verify_runnable "both" function cleanup { if datasetexists $LGCYPOOL ; then log_must zpool destroy -f $LGCYPOOL fi } log_onexit cleanup log_assert "values other than dnodesize=legacy rejected by legacy pool" set -A prop_vals "auto" "1k" "2k" "4k" "8k" "16k" LGCYPOOL=lgcypool LGCYFS=$LGCYPOOL/legacy log_must mkfile 64M $TESTDIR/$LGCYPOOL log_must zpool create -d $LGCYPOOL $TESTDIR/$LGCYPOOL log_must zfs create $LGCYFS for val in ${prop_vals[@]} ; do log_mustnot zfs set dnodesize=$val $LGCYFS done log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_006_po0000644000000000000000000000007413607166133031363 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.104831295 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_006_pos.ksh0000755016037001603700000000355313607166133032340 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Run xattrtest on a dataset with large dnodes and xattr=sa # to stress xattr usage of the extra bonus space and verify # contents # TEST_FS=$TESTPOOL/large_dnode verify_runnable "both" function cleanup { datasetexists $TEST_FS && log_must zfs destroy $TEST_FS } log_onexit cleanup log_assert "xattrtest runs cleanly on dataset with large dnodes" log_must zfs create $TEST_FS set -A xattr_sizes "512" "1536" "3584" "7680" "15872" set -A prop_values "1k" "2k" "4k" "8k" "16k" for ((i=0; i < ${#prop_values[*]}; i++)) ; do prop_val=${prop_values[$i]} dir=/$TEST_FS/$prop_val xattr_size=${xattr_sizes[$i]} log_must zfs set dnsize=$prop_val $TEST_FS log_must mkdir $dir log_must xattrtest -R -y -s $xattr_size -f 1024 -p $dir done log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_008_po0000644000000000000000000000007413612141522031354 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.109831455 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_008_pos.ksh0000755016037001603700000000404013612141522032321 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Run many xattrtests on a dataset with large dnodes and xattr=sa to # stress concurrent allocation of large dnodes. # TEST_FS=$TESTPOOL/large_dnode verify_runnable "both" function cleanup { datasetexists $TEST_FS && destroy_dataset $TEST_FS } function verify_dnode_packing { zdb -dd $TEST_FS | grep -A 3 'Dnode slots' | awk ' /Total used:/ {total_used=$NF} /Max used:/ {max_used=$NF} /Percent empty:/ {print total_used, max_used, int($NF)} ' | while read total_used max_used pct_empty do log_note "total_used $total_used max_used $max_used pct_empty $pct_empty" if [ $pct_empty -gt 5 ]; then log_fail "Holes in dnode array: pct empty $pct_empty > 5" fi done } log_onexit cleanup log_assert "xattrtest runs concurrently on dataset with large dnodes" log_must zfs create $TEST_FS log_must zfs set dnsize=auto $TEST_FS log_must zfs set xattr=sa $TEST_FS for ((i=0; i < 100; i++)); do dir="/$TEST_FS/dir.$i" log_must mkdir "$dir" log_must eval "xattrtest -R -r -y -x 1 -f 1024 -k -p $dir >/dev/null 2>&1 &" done log_must wait sync_pool $TESTPOOL verify_dnode_packing log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_004_ne0000644000000000000000000000007413607166133031345 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.099831135 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_004_neg.ksh0000755016037001603700000000357513607166133032312 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" TEST_FS=$TESTPOOL/large_dnode TEST_SNAP=$TESTPOOL/large_dnode@ldnsnap TEST_STREAM=$TESTDIR/ldnsnap function cleanup { if datasetexists $TEST_FS ; then log_must zfs destroy -r $TEST_FS fi if datasetexists $LGCYPOOL ; then log_must zpool destroy -f $LGCYPOOL fi rm -f $TEST_STREAM } log_onexit cleanup log_assert "zfs send stream with large dnodes not accepted by legacy pool" log_must zfs create -o dnodesize=1k $TEST_FS log_must touch /$TEST_FS/foo log_must zfs umount $TEST_FS log_must zfs snap $TEST_SNAP log_must eval "zfs send $TEST_SNAP > $TEST_STREAM" LGCYPOOL=ldnpool LGCYFS=$LGCYPOOL/legacy log_must mkfile 64M $TESTDIR/$LGCYPOOL log_must zpool create -d $LGCYPOOL $TESTDIR/$LGCYPOOL log_mustnot eval "zfs recv $LGCYFS < $TEST_STREAM" log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_009_po0000644000000000000000000000007413607166133031366 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.111831519 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_009_pos.ksh0000755016037001603700000000350713607166133032342 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Run many xattrtests on a dataset with large dnodes and xattr=sa to # stress concurrent allocation of large dnodes. # TEST_FS=$TESTPOOL/large_dnode verify_runnable "both" function cleanup { datasetexists $TEST_FS && log_must zfs destroy $TEST_FS } log_onexit cleanup log_assert "xattrtest runs concurrently on dataset with large dnodes" log_must zfs create $TEST_FS log_must zfs set dnsize=auto $TEST_FS log_must zfs set xattr=sa $TEST_FS for ((i=0; i < 100; i++)); do dir="/$TEST_FS/dir.$i" log_must mkdir "$dir" do_unlink="" if [ $((RANDOM % 2)) -eq 0 ]; then do_unlink="-k -f 1024" else do_unlink="-f $((RANDOM % 1024))" fi log_must eval "xattrtest -R -r -y -x 1 $do_unlink -p $dir >/dev/null 2>&1 &" done log_must wait log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL log_must ls -lR "/$TEST_FS/" >/dev/null 2>&1 log_must zdb -d $TESTPOOL log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_003_po0000644000000000000000000000007413607166133031360 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.097831071 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_003_pos.ksh0000755016037001603700000000363113607166133032332 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" function cleanup { if datasetexists $LDNPOOL ; then log_must zpool destroy -f $LDNPOOL fi } log_onexit cleanup log_assert "feature correctly switches between enabled and active" LDNPOOL=ldnpool LDNFS=$LDNPOOL/large_dnode log_must mkfile 64M $TESTDIR/$LDNPOOL log_must zpool create $LDNPOOL $TESTDIR/$LDNPOOL state=$(zpool list -Ho feature@large_dnode $LDNPOOL) if [[ "$state" != "enabled" ]]; then log_fail "large_dnode has state $state (expected enabled)" fi log_must zfs create -o dnodesize=1k $LDNFS log_must touch /$LDNFS/foo log_must zfs unmount $LDNFS state=$(zpool list -Ho feature@large_dnode $LDNPOOL) if [[ "$state" != "active" ]]; then log_fail "large_dnode has state $state (expected active)" fi log_must zfs destroy $LDNFS state=$(zpool list -Ho feature@large_dnode $LDNPOOL) if [[ "$state" != "enabled" ]]; then log_fail "large_dnode has state $state (expected enabled)" fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143006030140 xustar000000000000000030 mtime=1579730438.846442372 30 atime=1579730456.952023691 30 ctime=1579730482.116831681 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/Makefile.in0000664016037001603700000005765313612143006030164 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/features/large_dnode DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/features/large_dnode ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ large_dnode_001_pos.ksh \ large_dnode_002_pos.ksh \ large_dnode_003_pos.ksh \ large_dnode_004_neg.ksh \ large_dnode_005_pos.ksh \ large_dnode_006_pos.ksh \ large_dnode_007_neg.ksh \ large_dnode_008_pos.ksh \ large_dnode_009_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/features/large_dnode/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/features/large_dnode/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/PaxHeaders.151519/large_dnode_002_po0000644000000000000000000000007413607166133031357 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.095831006 zfs-0.8.3/tests/zfs-tests/tests/functional/features/large_dnode/large_dnode_002_pos.ksh0000755016037001603700000000463413607166133032335 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that extended attributes can use extra bonus space of a large # dnode without kicking in a spill block. # # STRATEGY: # 1. Create a file system with xattr=sa # 2. Set dnodesize to a legal literal value # 3. Create a file # 4 Store an xattr that fits within the dnode size # 4. Repeat 2-3 for all legal literal values of dnodesize values # 5. Unmount the file system # 6. Use zdb to check for missing SPILL_BLKPTR flag # TEST_FS=$TESTPOOL/large_dnode verify_runnable "both" function cleanup { datasetexists $TEST_FS && log_must zfs destroy $TEST_FS } log_onexit cleanup log_assert "extended attributes use extra bonus space of a large dnode" log_must zfs create -o xattr=sa $TEST_FS # Store dnode size minus 512 in an xattr set -A xattr_sizes "512" "1536" "3584" "7680" "15872" set -A prop_values "1k" "2k" "4k" "8k" "16k" set -A inodes for ((i=0; i < ${#prop_values[*]}; i++)) ; do prop_val=${prop_values[$i]} file=/$TEST_FS/file.$prop_val log_must zfs set dnsize=$prop_val $TEST_FS touch $file xattr_size=${xattr_sizes[$i]} xattr_name=user.foo xattr_val=$(dd if=/dev/urandom bs=1 count=$xattr_size | openssl enc -a -A) log_must setfattr -n $xattr_name -v 0s$xattr_val $file inodes[$i]=$(ls -li $file | awk '{print $1}') done log_must zfs umount $TEST_FS for ((i=0; i < ${#inodes[*]}; i++)) ; do log_mustnot eval "zdb -dddd $TEST_FS ${inodes[$i]} | grep SPILL_BLKPTR" done log_pass "extended attributes use extra bonus space of a large dnode" zfs-0.8.3/tests/zfs-tests/tests/functional/features/PaxHeaders.151519/async_destroy0000644000000000000000000000013013612143062026441 xustar000000000000000029 mtime=1579730482.04082924 30 atime=1579730489.082055323 29 ctime=1579730482.04082924 zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/0000775016037001603700000000000013612143062026524 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/PaxHeaders.151519/async_destroy_000000644000000000000000000000007413607166133031645 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.036829111 zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/async_destroy_001_pos.ksh0000755016037001603700000000551313607166133033377 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Exercise the traversal suspend/resume code in async_destroy by # destroying a file system that has more blocks than we can free # in a single txg. # # STRATEGY: # 1. Create a file system # 2. Set recordsize to 512 to create the maximum number of blocks # 3. Set compression to off to force zero-ed blocks to be written # 4. dd a lot of data from /dev/zero to the file system # 5. Destroy the file system # 6. Wait for the freeing property to go to 0 # 7. Use zdb to check for leaked blocks # TEST_FS=$TESTPOOL/async_destroy verify_runnable "both" function cleanup { datasetexists $TEST_FS && log_must zfs destroy $TEST_FS log_must set_tunable64 zfs_async_block_max_blocks 100000 } log_onexit cleanup log_assert "async_destroy can suspend and resume traversal" log_must zfs create -o recordsize=1k -o compression=off $TEST_FS # Fill with 128,000 blocks. log_must dd bs=1024k count=128 if=/dev/zero of=/$TEST_FS/file # # Decrease the max blocks to free each txg, so that freeing takes # long enough that we can observe it. # log_must set_tunable64 zfs_async_block_max_blocks 100 log_must sync log_must zfs destroy $TEST_FS # # We monitor the freeing property, to verify we can see blocks being # freed while the suspend/resume code is exercised. # t0=$SECONDS count=0 while [[ $((SECONDS - t0)) -lt 10 ]]; do [[ "0" != "$(zpool list -Ho freeing $TESTPOOL)" ]] && ((count++)) [[ $count -gt 1 ]] && break sleep 1 done [[ $count -eq 0 ]] && log_fail "Freeing property remained empty" # # After a bit, go back to allowing an unlimited amount of freeing # per txg. # sleep 10 log_must set_tunable64 zfs_async_block_max_blocks 100000 # Wait for everything to be freed. while [[ "0" != "$(zpool list -Ho freeing $TESTPOOL)" ]]; do [[ $((SECONDS - t0)) -gt 180 ]] && \ log_fail "Timed out waiting for freeing to drop to zero" done # Check for leaked blocks. log_must zdb -b $TESTPOOL log_pass "async_destroy can suspend and resume traversal" zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133030570 xustar000000000000000029 atime=1579730438.75943958 30 ctime=1579730482.038829175 zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/Makefile.am0000644016037001603700000000024413607166133030566 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/features/async_destroy dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ async_destroy_001_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030404 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.034829047 zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/setup.ksh0000755016037001603700000000203213607166133030401 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030673 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730482.031828951 zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/cleanup.ksh0000755016037001603700000000200313607166133030666 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143006030563 xustar000000000000000030 mtime=1579730438.794440702 30 atime=1579730456.922022727 30 ctime=1579730482.041829273 zfs-0.8.3/tests/zfs-tests/tests/functional/features/async_destroy/Makefile.in0000664016037001603700000005733513612143006030604 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/features/async_destroy DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/features/async_destroy ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ async_destroy_001_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/features/async_destroy/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/features/async_destroy/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/features/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143006025675 xustar000000000000000030 mtime=1579730438.742439033 30 atime=1579730456.983024685 30 ctime=1579730481.976827185 zfs-0.8.3/tests/zfs-tests/tests/functional/features/Makefile.in0000664016037001603700000006770313612143006025716 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/features DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = \ async_destroy \ large_dnode all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/features/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/features/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/truncate0000644000000000000000000000013213612143065023567 xustar000000000000000030 mtime=1579730485.676945989 30 atime=1579730489.082055323 30 ctime=1579730485.676945989 zfs-0.8.3/tests/zfs-tests/tests/functional/truncate/0000775016037001603700000000000013612143065023650 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/truncate/PaxHeaders.151519/truncate_timestamps.ksh0000644000000000000000000000007413607166147030465 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.669945765 zfs-0.8.3/tests/zfs-tests/tests/functional/truncate/truncate_timestamps.ksh0000755016037001603700000000404713607166147030472 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/tests/functional/truncate/truncate.cfg . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib # # DESCRIPTION: # Ensure both truncate(2)/ftruncate(2) update target file mtime/ctime attributes # # STRATEGY: # 1. Create a file # 2. Truncate the file # 3. Verify both mtime/ctime are updated # 4. Rinse and repeat for both truncate(2) and ftruncate(2) with various sizes # verify_runnable "both" function verify_truncate # { typeset dir=$1 typeset farr_name=$2 typeset aarr_name=$3 [[ ! -d $dir ]] && return typeset oldpwd=$PWD cd $dir typeset files=$(ls file*) typeset -i i=0 typeset -i n=0 while (( i < NUM_FILE )); do typeset f=$(getitem $i $files) eval $farr_name[$i]=\$\(\cksum $f\) typeset -i j=0 while (( j < NUM_ATTR )); do eval $aarr_name[$n]=\$\(\runat \$f \cksum \ attribute.$j\) (( j += 1 )) (( n += 1 )) done (( i += 1 )) done cd $oldpwd } # # This function compare two cksum results array. # # $1 The array name which stored the cksum before operation. # $2 The array name which stored the cksum after operation. # function compare_cksum # { typeset before=$1 typeset after=$2 eval typeset -i count=\${#$before[@]} typeset -i i=0 while (( i < count )); do eval typeset var1=\${$before[$i]} eval typeset var2=\${$after[$i]} if [[ $var1 != $var2 ]]; then return 1 fi (( i += 1 )) done return 0 } # # This function calculate all the files cksum information in current directory # and output them to the specified file. # # $1 directory from which the files will be cksum. # $2 cksum output file # function record_cksum # { typeset dir=$1 typeset outfile=$2 [[ ! -d ${outfile%/*} ]] && usr_exec mkdir -p ${outfile%/*} usr_exec cd $dir ; find . -depth -type f -exec cksum {} \\\; | \ sort > $outfile usr_exec cd $dir ; find . -depth -type f -xattr -exec runat {} \ cksum attribute* \\\; | sort >> $outfile } # # The function create_files creates the directories and files that the script # will operate on to test extended attribute functionality. # # $1 The base directory in which to create directories and files. # function create_files # { typeset basedir=$1 [[ ! -d $basedir ]] && usr_exec mkdir -m 777 $basedir [[ ! -d $RES_DIR ]] && usr_exec mkdir -m 777 $RES_DIR [[ ! -d $INI_DIR ]] && usr_exec mkdir -m 777 $INI_DIR [[ ! -d $TST_DIR ]] && usr_exec mkdir -m 777 $TST_DIR [[ ! -d $TMP_DIR ]] && usr_exec mkdir -m 777 $TMP_DIR # # Create the original file and its attribute files. # [[ ! -a $RES_DIR/file ]] && \ usr_exec file_write -o create -f $RES_DIR/file \ -b 1024 -d 0 -c 1 [[ ! -a $RES_DIR/attribute ]] && \ usr_exec cp $RES_DIR/file $RES_DIR/attribute typeset oldpwd=$PWD cd $INI_DIR typeset -i i=0 while (( i < NUM_FILE )); do typeset dstfile=$INI_DIR/file.$$.$i usr_exec cp $RES_DIR/file $dstfile typeset -i j=0 while (( j < NUM_ATTR )); do usr_exec runat $dstfile \ cp $RES_DIR/attribute ./attribute.$j (( j += 1 )) done (( i += 1 )) done cd $oldpwd } zfs-0.8.3/tests/zfs-tests/tests/functional/acl/PaxHeaders.151519/posix0000644000000000000000000000013213612143053023640 xustar000000000000000030 mtime=1579730475.172608714 30 atime=1579730489.087055483 30 ctime=1579730475.172608714 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/0000775016037001603700000000000013612143053023721 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/PaxHeaders.151519/posix_001_pos.ksh0000644000000000000000000000007413607166133027044 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.164608456 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/posix_001_pos.ksh0000755016037001603700000000562313607166133027052 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/acl/acl_common.kshlib # # Copyright (c) 2012 by Delphix. All rights reserved. # # # DESCRIPTION: # Verify that user can access file/directory if acltype=posixacl. # # STRATEGY: # 1. Test access to file (mode=rw-) # a. Can modify file # b. Can't create new file # b. Can't execute file # verify_runnable "both" function cleanup { rmdir $TESTDIR/dir.0 } log_assert "Verify acltype=posixacl works on file" log_onexit cleanup # Test access to FILE log_note "Testing access to FILE" log_must touch $TESTDIR/file.0 log_must setfacl -m g:$ZFS_ACL_STAFF_GROUP:rw $TESTDIR/file.0 getfacl $TESTDIR/file.0 2> /dev/null | egrep -q \ "^group:$ZFS_ACL_STAFF_GROUP:rw-$" if [ "$?" -eq "0" ]; then # Should be able to write to file log_must user_run $ZFS_ACL_STAFF1 \ "echo 'echo test > /dev/null' > $TESTDIR/file.0" # Since $TESTDIR is 777, create a new dir with controlled permissions # for testing that creating a new file is not allowed. log_must mkdir $TESTDIR/dir.0 log_must chmod 700 $TESTDIR/dir.0 log_must setfacl -m g:$ZFS_ACL_STAFF_GROUP:rw $TESTDIR/dir.0 # Confirm permissions ls -l $TESTDIR |grep "dir.0" |grep -q "drwxrw----+" if [ "$?" -ne "0" ]; then msk=$(ls -l $TESTDIR |grep "dir.0" | awk '{print $1}') log_note "expected mask drwxrw----+ but found $msk" log_fail "Expected permissions were not set." fi getfacl $TESTDIR/dir.0 2> /dev/null | egrep -q \ "^group:$ZFS_ACL_STAFF_GROUP:rw-$" if [ "$?" -ne "0" ]; then acl=$(getfacl $TESTDIR/dir.0 2> /dev/null) log_note $acl log_fail "ACL group:$ZFS_ACL_STAFF_GROUP:rw- was not set." fi # Should NOT be able to create new file log_mustnot user_run $ZFS_ACL_STAFF1 "touch $TESTDIR/dir.0/file.1" # Root should be able to run file, but not user chmod +x $TESTDIR/file.0 log_must $TESTDIR/file.0 log_mustnot user_run $ZFS_ACL_STAFF1 $TESTDIR/file.0 log_pass "POSIX ACL mode works on files" else log_fail "Group '$ZFS_ACL_STAFF_GROUP' does not have 'rw' as specified" fi zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133025765 xustar000000000000000030 atime=1579730433.800280357 29 ctime=1579730475.17060865 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/Makefile.am0000644016037001603700000000027113607166133025763 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/acl/posix dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ posix_001_pos.ksh \ posix_002_pos.ksh \ posix_003_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025601 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.162608392 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/setup.ksh0000755016037001603700000000271513607166133025606 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/acl/acl_common.kshlib log_must getfacl --version log_must setfacl --version cleanup_user_group # Create staff group and add user to it log_must add_group $ZFS_ACL_STAFF_GROUP log_must add_user $ZFS_ACL_STAFF_GROUP $ZFS_ACL_STAFF1 DISK=${DISKS%% *} default_setup_noexit $DISK log_must chmod 777 $TESTDIR # Use POSIX ACLs on filesystem log_must zfs set acltype=posixacl $TESTPOOL/$TESTFS log_must zfs set xattr=sa $TESTPOOL/$TESTFS log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026070 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.159608296 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/cleanup.ksh0000755016037001603700000000202013607166133026062 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/acl/acl_common.kshlib cleanup_user_group default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/PaxHeaders.151519/posix_002_pos.ksh0000644000000000000000000000007313607166133027044 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730475.16660852 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/posix_002_pos.ksh0000755016037001603700000000456613607166133027060 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/acl/acl_common.kshlib # # Copyright (c) 2012 by Delphix. All rights reserved. # # # DESCRIPTION: # Verify that user can access file/directory if acltype=posixacl. # # STRATEGY: # 1. Test access to directory (mode=-wx) # a. Can create file in dir # b. Can't list directory # verify_runnable "both" log_assert "Verify acltype=posixacl works on directory" # Test access to DIRECTORY log_note "Testing access to DIRECTORY" log_must mkdir $TESTDIR/dir.0 # Eliminate access by "other" including our test group, # we want access controlled only by the ACLs. log_must chmod 700 $TESTDIR/dir.0 log_must setfacl -m g:$ZFS_ACL_STAFF_GROUP:wx $TESTDIR/dir.0 # Confirm permissions ls -l $TESTDIR |grep "dir.0" |grep -q "drwx-wx---+" if [ "$?" -ne "0" ]; then msk=$(ls -l $TESTDIR |grep "dir.0" | awk '{print $1}') log_note "expected mask drwx-wx---+ but found $msk" log_fail "Expected permissions were not set." fi getfacl $TESTDIR/dir.0 2> /dev/null | egrep -q \ "^group:$ZFS_ACL_STAFF_GROUP:-wx$" if [ "$?" -eq "0" ]; then # Should be able to create file in directory log_must user_run $ZFS_ACL_STAFF1 "touch $TESTDIR/dir.0/file.0" # Should NOT be able to list files in directory log_mustnot user_run $ZFS_ACL_STAFF1 "ls -l $TESTDIR/dir.0" log_pass "POSIX ACL mode works on directories" else acl=$(getfacl $TESTDIR/dir.0 2> /dev/null) log_note $acl log_fail "Group '$ZFS_ACL_STAFF_GROUP' does not have '-wx' as specified" fi zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/PaxHeaders.151519/posix_003_pos.ksh0000644000000000000000000000007413607166133027046 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.168608585 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/posix_003_pos.ksh0000755016037001603700000000375313607166133027056 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that ACLs survive remount. # Regression test for https://github.com/zfsonlinux/zfs/issues/4520 # # STRATEGY: # 1. Test presence of default and regular ACLs after remount # a. Can set and list ACL before remount # b. Can list ACL after remount # verify_runnable "both" log_assert "Verify regular and default POSIX ACLs survive remount" typeset acl_str1="^group:$ZFS_ACL_STAFF_GROUP:-wx$" typeset acl_str2="^default:group:$ZFS_ACL_STAFF_GROUP:-wx$" typeset ACLDIR="$TESTDIR/dir.1" log_note "Testing access to DIRECTORY" log_must mkdir $ACLDIR log_must setfacl -m g:$ZFS_ACL_STAFF_GROUP:wx $ACLDIR log_must setfacl -d -m g:$ZFS_ACL_STAFF_GROUP:wx $ACLDIR getfacl $ACLDIR 2> /dev/null | egrep -q "$acl_str1" if [ "$?" -eq "0" ]; then getfacl $ACLDIR 2> /dev/null | egrep -q "$acl_str2" fi if [ "$?" -eq "0" ]; then log_must zfs unmount $TESTPOOL/$TESTFS log_must zfs mount $TESTPOOL/$TESTFS log_must eval "getfacl $ACLDIR 2> /dev/null | egrep -q \"$acl_str1\"" log_must eval "getfacl $ACLDIR 2> /dev/null | egrep -q \"$acl_str2\"" log_pass "POSIX ACLs survive remount" else log_fail "Group '$ZFS_ACL_STAFF_GROUP' does not have 'rwx'" fi zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001025753 xustar000000000000000030 mtime=1579730433.836281511 30 atime=1579730454.237936549 30 ctime=1579730475.173608746 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/posix/Makefile.in0000664016037001603700000005731313612143001025770 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/acl/posix DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/acl/posix ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ posix_001_pos.ksh \ posix_002_pos.ksh \ posix_003_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/acl/posix/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/acl/posix/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/acl/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133024623 xustar000000000000000030 atime=1579730433.745278591 29 ctime=1579730475.10460653 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/Makefile.am0000644016037001603700000000020613607166133024617 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/acl dist_pkgdata_DATA = \ acl.cfg \ acl_common.kshlib SUBDIRS = posix zfs-0.8.3/tests/zfs-tests/tests/functional/acl/PaxHeaders.151519/acl.cfg0000644000000000000000000000007413607166133024010 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.099606369 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/acl.cfg0000644016037001603700000000353313607166133024011 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib export NISSTAFILE=$TEST_BASE_DIR/nis_state export TESTFILE=testfile$$ export TESTFILE0=testfile0.$$ export TESTFILE2=testfile2.$$ # Define super user 'zfstest' export ZFS_ACL_ADMIN=zfstest export ZFS_ACL_STAFF_GROUP=zfsgrp export ZFS_ACL_STAFF1=staff1 export ZFS_ACL_STAFF2=staff2 export ZFS_ACL_OTHER_GROUP=othergrp export ZFS_ACL_OTHER1=other1 export ZFS_ACL_OTHER2=other2 # Define the current user who run 'usr_exec' export ZFS_ACL_CUR_USER="" # Define global error string export ZFS_ACL_ERR_STR="" # Define test file and test directory which will be operated by chmod export testfile=$TESTDIR/testfile export testdir=$TESTDIR/testdir # Define several directories for trivial ACLs function test. export RES_DIR=$TESTDIR/RES export INI_DIR=$TESTDIR/INIT export TST_DIR=$TESTDIR/TEST export TMP_DIR=$TESTDIR/TMP # Define test files and their attributes files number for trivial # ACLs function test export NUM_FILE=5 export NUM_ATTR=10 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001024611 xustar000000000000000030 mtime=1579730433.783279811 30 atime=1579730454.206935553 30 ctime=1579730475.106606595 zfs-0.8.3/tests/zfs-tests/tests/functional/acl/Makefile.in0000664016037001603700000007401613612143001024625 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/acl DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/acl ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_DATA = \ acl.cfg \ acl_common.kshlib SUBDIRS = posix all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/acl/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/acl/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_pkgdataDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/alloc_class0000644000000000000000000000013213612143053024216 xustar000000000000000030 mtime=1579730475.260611539 30 atime=1579730489.087055483 30 ctime=1579730475.260611539 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/0000775016037001603700000000000013612143053024277 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_002_neg.ksh0000644000000000000000000000007413607166133030510 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.231610608 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_002_neg.ksh0000755016037001603700000000251413607166133030512 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Creating a pool fails when an invalid special device type is specified. # claim="Creating a pool with an invalid special device type fails." verify_runnable "global" log_assert $claim log_onexit cleanup log_must disk_setup log_mustnot zpool create $TESTPOOL raidz $ZPOOL_DISKS special $CLASS_DISK0 log_mustnot display_status $TESTPOOL log_mustnot zpool destroy -f $TESTPOOL log_mustnot zpool create $TESTPOOL $ZPOOL_DISKS special mirror \ $CLASS_DISK0 $CLASS_DISK1 log_mustnot display_status $TESTPOOL log_mustnot zpool destroy -f $TESTPOOL log_mustnot zpool create $TESTPOOL raidz $ZPOOL_DISKS special raidz \ $CLASS_DISK0 $CLASS_DISK1 $CLASS_DISK2 log_mustnot display_status $TESTPOOL log_mustnot zpool destroy -f $TESTPOOL log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_006_pos.ksh0000644000000000000000000000007413607166133030544 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.240610896 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_006_pos.ksh0000755016037001603700000000207413607166133030547 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Using zpool split command to detach disks from mirrored special pool # to create a new pool with the detached disks. # claim="zpool split command succeeds with special devices present." verify_runnable "global" log_assert $claim log_onexit cleanup log_must disk_setup log_must zpool create $TESTPOOL \ mirror $ZPOOL_DISK0 $ZPOOL_DISK1 \ special mirror $CLASS_DISK0 $CLASS_DISK1 log_must zpool split $TESTPOOL split_pool log_must zpool destroy -f $TESTPOOL log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_001_pos.ksh0000644000000000000000000000007413612141516030531 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.229610544 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_001_pos.ksh0000755016037001603700000000216513612141516030535 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Creating a pool with a special device succeeds, but only if # "feature@allocation_classes" is enabled. # verify_runnable "global" claim="Creating a pool with a special device succeeds." log_assert $claim log_onexit cleanup log_must disk_setup for type in special dedup; do log_mustnot zpool create -d $TESTPOOL $CLASS_DISK0 $type $CLASS_DISK1 done log_must zpool create $TESTPOOL raidz $ZPOOL_DISKS special mirror \ $CLASS_DISK0 $CLASS_DISK1 log_must display_status "$TESTPOOL" log_must zpool destroy -f "$TESTPOOL" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_012_pos.ksh0000644000000000000000000000007413607166147030546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.253611314 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_012_pos.ksh0000755016037001603700000000553713607166147030560 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Removing a special device from a pool succeeds. # verify_runnable "global" # # Verify the file identified by the input is written on a special vdev # According to the pool layout used in this test vdev_id 3 and 4 are special # XXX: move this function to libtest.shlib once we get "Vdev Properties" # function file_in_special_vdev # { typeset dataset="$1" typeset inum="$2" zdb -dddddd $dataset $inum | awk '{ # find DVAs from string "offset level dva" only for L0 (data) blocks if (match($0,"L0 [0-9]+")) { dvas[0]=$3 dvas[1]=$4 dvas[2]=$5 for (i = 0; i < 3; ++i) { if (match(dvas[i],"([^:]+):.*")) { dva = substr(dvas[i], RSTART, RLENGTH); # parse DVA from string "vdev:offset:asize" if (split(dva,arr,":") != 3) { print "Error parsing DVA: <" dva ">"; exit 1; } # verify vdev is "special" if (arr[1] < 3) { exit 1; } } } }}' } claim="Removing a special device from a pool succeeds." log_assert $claim log_onexit cleanup # # Create a non-raidz pool so we can remove top-level vdevs # log_must disk_setup log_must zpool create $TESTPOOL $ZPOOL_DISK0 $ZPOOL_DISK1 $ZPOOL_DISK2 \ special $CLASS_DISK0 special $CLASS_DISK1 log_must display_status "$TESTPOOL" # # Generate some metadata and small blocks in the special class before removal # typeset -l i=1 typeset -l blocks=25 log_must zfs create -o special_small_blocks=32K -o recordsize=32K \ $TESTPOOL/$TESTFS for i in 1 2 3 4; do log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS/testfile.$i bs=1M \ count=$blocks ((blocks = blocks + 25)) done log_must sync_pool $TESTPOOL log_must zpool list -v $TESTPOOL # Verify the files were written in the special class vdevs for i in 1 2 3 4; do dataset="$TESTPOOL/$TESTFS" inum="$(stat -c '%i' /$TESTPOOL/$TESTFS/testfile.$i)" log_must file_in_special_vdev $dataset $inum done # # remove a special allocation vdev and force a remapping # N.B. The 'zfs remap' command has been disabled and may be removed. # export ZFS_REMAP_ENABLED=YES log_must zpool remove $TESTPOOL $CLASS_DISK0 log_must zfs remap $TESTPOOL/$TESTFS sleep 5 log_must sync_pool $TESTPOOL sleep 1 log_must zdb -bbcc $TESTPOOL log_must zpool list -v $TESTPOOL log_must zpool destroy -f "$TESTPOOL" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_005_pos.ksh0000644000000000000000000000007413612141512030531 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.238610832 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_005_pos.ksh0000755016037001603700000000364213612141512030536 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Checking allocation_classes feature flag value after pool is created # (should be enabled) and also after a special device added to existing # pool (should be active). # verify_runnable "global" log_assert "Values of allocation_classes feature flag correct." log_onexit cleanup log_must disk_setup typeset ac_value for type in "" "mirror" "raidz" do if [ "$type" = "mirror" ]; then log_must zpool create $TESTPOOL $type $ZPOOL_DISK0 $ZPOOL_DISK1 else log_must zpool create $TESTPOOL $type $ZPOOL_DISKS fi ac_value="$(zpool get -H -o property,value all | \ egrep allocation_classes | awk '{print $2}')" if [ "$ac_value" = "enabled" ]; then log_note "feature@allocation_classes is enabled" else log_fail "feature@allocation_classes not enabled, \ status = $ac_value" fi if [ "$type" = "" ]; then log_must zpool add $TESTPOOL special $CLASS_DISK0 else log_must zpool add $TESTPOOL special mirror \ $CLASS_DISK0 $CLASS_DISK1 fi ac_value="$(zpool get -H -o property,value all | \ egrep allocation_classes | awk '{print $2}')" if [ "$ac_value" = "active" ]; then log_note "feature@allocation_classes is active" else log_fail "feature@allocation_classes not active, \ status = $ac_value" fi log_must zpool destroy -f $TESTPOOL done log_pass "Values of allocation_classes feature flag correct." zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_013_pos.ksh0000644000000000000000000000007413607166147030547 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.255611378 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_013_pos.ksh0000755016037001603700000000252513607166147030553 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Removing a dedup device from a pool succeeds. # verify_runnable "global" claim="Removing a dedup device from a pool succeeds." log_assert $claim log_onexit cleanup # # Create a non-raidz pool so we can remove top-level vdevs # log_must disk_setup log_must zpool create $TESTPOOL $ZPOOL_DISKS dedup $CLASS_DISK0 log_must display_status "$TESTPOOL" # # Generate some dedup data in the dedup class before removal # log_must zfs create -o dedup=on -V 2G $TESTPOOL/$TESTVOL log_must echo y | newfs $ZVOL_DEVDIR/$TESTPOOL/$TESTVOL >/dev/null 2>&1 sync_pool log_must zpool list -v $TESTPOOL # # remove a dedup allocation vdev # log_must zpool remove $TESTPOOL $CLASS_DISK0 sleep 5 log_must sync_pool $TESTPOOL sleep 1 log_must zdb -bbcc $TESTPOOL log_must zpool destroy -f "$TESTPOOL" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_009_pos.ksh0000644000000000000000000000007413607166133030547 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.247611122 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_009_pos.ksh0000755016037001603700000000256713607166133030561 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Importing and exporting pool with special device succeeds. # claim="Import/export of pool with special device mirror succeeds." verify_runnable "global" log_assert $claim log_onexit cleanup log_must disk_setup typeset stype="" typeset sdisks="" for type in "" "mirror" "raidz" do if [ "$type" = "mirror" ]; then stype="mirror" sdisks="${CLASS_DISK0} ${CLASS_DISK1} ${CLASS_DISK2}" elif [ "$type" = "raidz" ]; then stype="mirror" sdisks="${CLASS_DISK0} ${CLASS_DISK1}" else stype="" special_args="${CLASS_DISK0}" fi log_must zpool create $TESTPOOL $type $ZPOOL_DISKS \ special $stype $sdisks log_must zpool export $TESTPOOL log_must zpool import -d $TEST_BASE_DIR -s $TESTPOOL log_must display_status $TESTPOOL log_must zpool destroy -f $TESTPOOL done log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133026343 xustar000000000000000029 atime=1579730433.85428209 30 ctime=1579730475.257611442 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/Makefile.am0000644016037001603700000000103113607166133026334 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/alloc_class dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ alloc_class_001_pos.ksh \ alloc_class_002_neg.ksh \ alloc_class_003_pos.ksh \ alloc_class_004_pos.ksh \ alloc_class_005_pos.ksh \ alloc_class_006_pos.ksh \ alloc_class_007_pos.ksh \ alloc_class_008_pos.ksh \ alloc_class_009_pos.ksh \ alloc_class_010_pos.ksh \ alloc_class_011_neg.ksh \ alloc_class_012_pos.ksh \ alloc_class_013_pos.ksh dist_pkgdata_DATA = \ alloc_class.cfg \ alloc_class.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133026157 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.224610384 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/setup.ksh0000755016037001603700000000123013607166133026153 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib verify_runnable "global" disk_cleanup log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007313607166133026445 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730475.22761048 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/cleanup.ksh0000755016037001603700000000122013607166133026441 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018, Delphix # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib verify_runnable "global" default_cleanup disk_cleanup log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class.cfg0000644000000000000000000000007413607166133027250 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.219610222 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class.cfg0000644016037001603700000000203513607166133027245 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export ZPOOL_DISK0="$TEST_BASE_DIR/device-0" export ZPOOL_DISK1="$TEST_BASE_DIR/device-1" export ZPOOL_DISK2="$TEST_BASE_DIR/device-2" export ZPOOL_DISKS="${ZPOOL_DISK0} ${ZPOOL_DISK1} ${ZPOOL_DISK2}" export CLASS_DISK0="$TEST_BASE_DIR/device-3" export CLASS_DISK1="$TEST_BASE_DIR/device-4" export CLASS_DISK2="$TEST_BASE_DIR/device-5" export CLASS_DISK3="$TEST_BASE_DIR/device-6" export CLASS_DISKS="${CLASS_DISK0} ${CLASS_DISK1} ${CLASS_DISK2} ${CLASS_DISK3}" export ZPOOL_DEVSIZE=1G export CLASS_DEVSIZE=512M zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_011_neg.ksh0000644000000000000000000000007313612141521030475 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730475.25161125 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_011_neg.ksh0000755016037001603700000000214113612141521030474 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Setting the special_small_blocks property to invalid values fails. # Powers of two from 512 to 1M are allowed. # verify_runnable "global" claim="Setting the special_small_blocks property to invalid values fails." log_assert $claim log_onexit cleanup log_must disk_setup log_must zpool create $TESTPOOL raidz $ZPOOL_DISKS special mirror \ $CLASS_DISK0 $CLASS_DISK1 for value in 256 1025 2097152 do log_mustnot zfs set special_small_blocks=$value $TESTPOOL done log_must zpool destroy -f "$TESTPOOL" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_010_pos.ksh0000644000000000000000000000007413607166133030537 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.249611186 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_010_pos.ksh0000755016037001603700000000245013607166133030540 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Setting the special_small_blocks property to a valid value succeeds. # verify_runnable "global" claim="Setting the special_small_blocks property to a valid value succeeds." log_assert $claim log_onexit cleanup log_must disk_setup log_must zpool create $TESTPOOL raidz $ZPOOL_DISKS special mirror \ $CLASS_DISK0 $CLASS_DISK1 for value in 0 512 1024 2048 4096 8192 16384 32768 65536 131072 do log_must zfs set special_small_blocks=$value $TESTPOOL ACTUAL=$(zfs get -p special_small_blocks $TESTPOOL | \ grep special_small_blocks | awk '{print $3}') if [ "$ACTUAL" != "$value" ] then log_fail "v. $ACTUAL set for $TESTPOOL, expected v. $value!" fi done log_must zpool destroy -f "$TESTPOOL" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class.kshlib0000644000000000000000000000007413607166133027765 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.222610318 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class.kshlib0000644016037001603700000000250213607166133027761 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/alloc_class/alloc_class.cfg function disk_setup { truncate -s $ZPOOL_DEVSIZE $ZPOOL_DISKS truncate -s $CLASS_DEVSIZE $CLASS_DISKS } function disk_cleanup { rm -f $ZPOOL_DEVSIZE $ZPOOL_DISKS 2> /dev/null rm -f $CLASS_DEVSIZE $CLASS_DISKS 2> /dev/null } function cleanup { if datasetexists $TESTPOOL ; then zpool destroy -f $TESTPOOL 2> /dev/null fi disk_cleanup } # # Try zpool status/iostat for given pool # # $1 pool # function display_status { typeset pool=$1 typeset -i ret=0 zpool status -xv $pool > /dev/null 2>&1 ret=$? zpool iostat > /dev/null 2>&1 ((ret |= $?)) typeset mntpnt=$(get_prop mountpoint $pool) dd if=/dev/random of=$mntpnt/testfile.$$ & typeset pid=$! zpool iostat -v 1 3 > /dev/null ((ret |= $?)) kill -9 $pid return $ret } zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143001026330 xustar000000000000000029 mtime=1579730433.89228331 30 atime=1579730458.377069445 30 ctime=1579730475.260611539 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/Makefile.in0000664016037001603700000006207413612143001026346 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/alloc_class DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/alloc_class ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ alloc_class_001_pos.ksh \ alloc_class_002_neg.ksh \ alloc_class_003_pos.ksh \ alloc_class_004_pos.ksh \ alloc_class_005_pos.ksh \ alloc_class_006_pos.ksh \ alloc_class_007_pos.ksh \ alloc_class_008_pos.ksh \ alloc_class_009_pos.ksh \ alloc_class_010_pos.ksh \ alloc_class_011_neg.ksh \ alloc_class_012_pos.ksh \ alloc_class_013_pos.ksh dist_pkgdata_DATA = \ alloc_class.cfg \ alloc_class.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/alloc_class/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/alloc_class/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_007_pos.ksh0000644000000000000000000000007413607166133030545 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.242610961 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_007_pos.ksh0000755016037001603700000000203013607166133030540 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Replacing a special device succeeds # claim="Replacing a special device is successful." verify_runnable "global" log_assert $claim log_onexit cleanup log_must disk_setup log_must zpool create $TESTPOOL raidz $ZPOOL_DISKS \ special mirror $CLASS_DISK0 $CLASS_DISK1 log_must zpool replace $TESTPOOL $CLASS_DISK1 $CLASS_DISK2 log_must sleep 10 log_must zpool iostat -H $TESTPOOL $CLASS_DISK2 log_must zpool destroy -f $TESTPOOL log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_004_pos.ksh0000644000000000000000000000007413612141512030530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.236610768 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_004_pos.ksh0000755016037001603700000000313313612141512030530 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Checking if allocation_classes feature flag status is active after # creating a pool with a special device. # claim="Checking active allocation classes feature flag status successful." verify_runnable "global" log_assert $claim log_onexit cleanup log_must disk_setup typeset ac_value typeset stype="" typeset sdisks="" for type in "" "mirror" "raidz" do if [ "$type" = "mirror" ]; then stype="mirror" sdisks="${CLASS_DISK0} ${CLASS_DISK1} ${CLASS_DISK2}" elif [ "$type" = "raidz" ]; then stype="mirror" sdisks="${CLASS_DISK0} ${CLASS_DISK1}" else stype="" sdisks="${CLASS_DISK0}" fi log_must zpool create $TESTPOOL $type $ZPOOL_DISKS \ special $stype $sdisks ac_value="$(zpool get -H -o property,value all | \ egrep allocation_classes | nawk '{print $2}')" if [ "$ac_value" = "active" ]; then log_note "feature@allocation_classes is active" else log_fail "feature@allocation_classes not active, \ status = $ac_value" fi log_must zpool destroy -f $TESTPOOL done log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_008_pos.ksh0000644000000000000000000000007413607166133030546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.244611026 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_008_pos.ksh0000755016037001603700000000260513607166133030551 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Adding an additional special device to a pool with special succeeds. # claim="Adding an additional special device succeeds." verify_runnable "global" log_assert $claim log_onexit cleanup log_must disk_setup typeset special_type="" typeset create_disks="" typeset added_disks="" for type in "" "raidz" do if [ "$type" = "raidz" ]; then special_type="mirror" create_disks="${CLASS_DISK0} ${CLASS_DISK1}" added_disks="${CLASS_DISK2} ${CLASS_DISK3}" else special_type="" create_disks="${CLASS_DISK0}" added_disks="${CLASS_DISK1}" fi log_must zpool create $TESTPOOL $type $ZPOOL_DISKS \ special $special_type $create_disks log_must zpool add $TESTPOOL special $special_type $added_disks log_must zpool iostat $TESTPOOL $added_disks log_must zpool destroy -f $TESTPOOL done log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/PaxHeaders.151519/alloc_class_003_pos.ksh0000644000000000000000000000007413607166133030541 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.234610704 zfs-0.8.3/tests/zfs-tests/tests/functional/alloc_class/alloc_class_003_pos.ksh0000755016037001603700000000301313607166133030536 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017, Intel Corporation. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/alloc_class/alloc_class.kshlib # # DESCRIPTION: # Adding a special device to a normal pool succeeds. # claim="Adding a special device to a normal pool succeeds." verify_runnable "global" log_assert $claim log_onexit cleanup log_must disk_setup for type in "" "mirror" "raidz" do log_must zpool create $TESTPOOL $type $ZPOOL_DISKS if [ "$type" = "mirror" ]; then log_must zpool add $TESTPOOL special mirror \ $CLASS_DISK0 $CLASS_DISK1 $CLASS_DISK2 log_must zpool iostat -H $TESTPOOL $CLASS_DISK0 log_must zpool iostat -H $TESTPOOL $CLASS_DISK1 log_must zpool iostat -H $TESTPOOL $CLASS_DISK2 elif [ "$type" = "raidz" ]; then log_must zpool add $TESTPOOL special mirror \ $CLASS_DISK0 $CLASS_DISK1 log_must zpool iostat -H $TESTPOOL $CLASS_DISK0 log_must zpool iostat -H $TESTPOOL $CLASS_DISK1 else log_must zpool add $TESTPOOL special $CLASS_DISK0 log_must zpool iostat -H $TESTPOOL $CLASS_DISK0 fi log_must zpool destroy -f $TESTPOOL done log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/userquota0000644000000000000000000000013213612143065023772 xustar000000000000000030 mtime=1579730485.889952829 30 atime=1579730489.088055515 30 ctime=1579730485.889952829 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/0000775016037001603700000000000013612143065024053 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_007_pos.ksh0000644000000000000000000000007413607166133030067 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.864952027 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_007_pos.ksh0000755016037001603700000000427713607166133030101 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # # userquota/groupquota can be set beyond the fs quota # userquota/groupquota can be set at a smaller size than its current usage. # # STRATEGY: # 1. set quota to a fs and set a larger size of userquota and groupquota # 2. write some data to the fs and set a smaller userquota and groupquota # function cleanup { log_must cleanup_quota log_must zfs set quota=none $QFS } log_onexit cleanup log_assert "Check set user|group quota to larger than the quota size of a fs" log_must zfs set quota=200m $QFS log_must zfs set userquota@$QUSER1=500m $QFS log_must zfs set groupquota@$QGROUP=600m $QFS log_must zfs get userquota@$QUSER1 $QFS log_must zfs get groupquota@$QGROUP $QFS log_note "write some data to the $QFS" mkmount_writable $QFS log_must user_run $QUSER1 mkfile 100m $QFILE sync log_note "set user|group quota at a smaller size than it current usage" log_must zfs set userquota@$QUSER1=90m $QFS log_must zfs set groupquota@$QGROUP=90m $QFS log_must zfs get userquota@$QUSER1 $QFS log_must zfs get groupquota@$QGROUP $QFS log_pass "set user|group quota to larger than quota size of a fs pass as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userspace_001_pos.ksh0000644000000000000000000000007413607166133030023 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.879952509 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userspace_001_pos.ksh0000755016037001603700000000426713607166133030034 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the zfs userspace with all parameters # # # STRATEGY: # 1. set zfs userspace to a fs # 2. write some data to the fs with specified user # 3. use zfs userspace with all possible parameters to check the result # function cleanup { if datasetexists $snap_fs; then log_must zfs destroy $snap_fs fi log_must cleanup_quota } log_onexit cleanup log_assert "Check the zfs userspace with all possible parameters" set -A params -- "-n" "-H" "-p" "-o type,name,used,quota" \ "-o name,used,quota" "-o used,quota" "-o used" "-o quota" "-s type" \ "-s name" "-s used" "-s quota" "-S type" "-S name" "-S used" "-S quota" \ "-t posixuser" "-t posixgroup" "-t all" "-i" "-tsmbuser" "-t smbgroup" typeset snap_fs=$QFS@snap log_must zfs set userquota@$QUSER1=100m $QFS mkmount_writable $QFS log_must user_run $QUSER1 mkfile 50m $QFILE sync log_must zfs snapshot $snap_fs for param in "${params[@]}"; do log_must eval "zfs userspace $param $QFS >/dev/null 2>&1" log_must eval "zfs userspace $param $snap_fs >/dev/null 2>&1" done log_pass "zfs userspace with all possible parameters pass as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userspace_002_pos.ksh0000644000000000000000000000007413607166133030024 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.882952605 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userspace_002_pos.ksh0000755016037001603700000000413213607166133030024 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the user used size and quota in zfs userspace # # # STRATEGY: # 1. set zfs userquota to a fs # 2. write some data to the fs with specified user and size # 3. use zfs userspace to check the used size and quota size # function cleanup { if datasetexists $snapfs; then log_must zfs destroy $snapfs fi log_must cleanup_quota } log_onexit cleanup log_assert "Check the zfs userspace used and quota" log_must zfs set userquota@$QUSER1=100m $QFS mkmount_writable $QFS log_must user_run $QUSER1 mkfile 50m $QFILE sync typeset snapfs=$QFS@snap log_must zfs snapshot $snapfs log_must eval "zfs userspace $QFS >/dev/null 2>&1" log_must eval "zfs userspace $snapfs >/dev/null 2>&1" for fs in "$QFS" "$snapfs"; do log_note "check the quota size in zfs userspace $fs" log_must eval "zfs userspace $fs | grep $QUSER1 | grep 100M" log_note "check the user used size in zfs userspace $fs" log_must eval "zfs userspace $fs | grep $QUSER1 | grep 50\\.\*M" done log_pass "Check the zfs userspace used and quota" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_003_pos.ksh0000644000000000000000000000007413607166133030063 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.855951737 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_003_pos.ksh0000755016037001603700000000343213607166133030065 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the basic function of set/get userquota and groupquota on fs # # # STRATEGY: # 1. Set userquota on fs and check the zfs get # 2. Set groupquota on fs and check the zfs get # function cleanup { cleanup_quota } log_onexit cleanup log_assert "Check the basic function of set/get userquota and groupquota on fs" log_note "Check the set|get userquota@$QUSER1 and groupquota@QGROUP" log_must zfs set userquota@$QUSER1=$UQUOTA_SIZE $QFS log_must check_quota "userquota@$QUSER1" $QFS "$UQUOTA_SIZE" log_must zfs set groupquota@$QGROUP=$GQUOTA_SIZE $QFS log_must check_quota "groupquota@$QGROUP" $QFS "$GQUOTA_SIZE" log_pass "Check the basic function of set/get userquota on fs passed as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_005_neg.ksh0000644000000000000000000000007413612141513030024 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.859951867 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_005_neg.ksh0000755016037001603700000000521513612141513030027 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the invalid parameter of zfs set user|group quota # # # STRATEGY: # 1. check the invalid zfs set user|group quota to fs # 1. check the valid zfs set user|group quota to snapshots # function cleanup { if datasetexists $snap_fs; then log_must zfs destroy $snap_fs fi log_must cleanup_quota } log_onexit cleanup log_assert "Check the invalid parameter of zfs set user|group quota" typeset snap_fs=$QFS@snap log_must zfs snapshot $snap_fs set -A no_users "mms1234" "ss@#" "root-122" for user in "${no_users[@]}"; do log_mustnot id $user log_mustnot zfs set userquota@$user=100m $QFS done log_note "can set all numeric id even if that id does not exist" log_must zfs set userquota@12345678=100m $QFS log_mustnot zfs set userquota@12345678=100m $snap_fs set -A sizes "100mfsd" "m0.12m" "GGM" "-1234-m" "123m-m" for size in "${sizes[@]}"; do log_note "can not set user quota with invalid size parameter" log_mustnot zfs set userquota@root=$size $QFS done log_note "can not set user quota to snapshot $snap_fs" log_mustnot zfs set userquota@root=100m $snap_fs set -A no_groups "aidsf@dfsd@" "123223-dsfds#sdfsd" "mss_#ss" "@@@@" for group in "${no_groups[@]}"; do log_mustnot eval "grep $group /etc/group" log_mustnot zfs set groupquota@$group=100m $QFS done log_note "can not set group quota with invalid size parameter" log_mustnot zfs set groupquota@root=100msfsd $QFS log_note "can not set group quota to snapshot $snap_fs" log_mustnot zfs set groupquota@root=100m $snap_fs log_pass "Check the invalid parameter of zfs set user|group quota pas as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userspace_003_pos.ksh0000644000000000000000000000007413607166133030025 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.884952669 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userspace_003_pos.ksh0000755016037001603700000000637313607166133030036 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Jinshan Xiong. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the user used object accounting in zfs userspace # # # STRATEGY: # 1. create a bunch of files by specific users # 2. use zfs userspace to check the used objects # 3. change the owner of test files and verify object count # 4. delete files and verify object count # function cleanup { if datasetexists $snapfs; then log_must zfs destroy $snapfs fi log_must rm -f ${QFILE}_* log_must cleanup_quota } function user_object_count { typeset fs=$1 typeset user=$2 typeset -i userspacecnt=$(zfs userspace -oname,objused $fs | awk /$user/'{print $2}') typeset -i zfsgetcnt=$(zfs get -H -ovalue userobjused@$user $fs) # 'zfs userspace' and 'zfs get userobjused@' should be equal verify_eq "$userspacecnt" "$zfsgetcnt" "userobjused@$user" echo $userspacecnt } log_onexit cleanup log_assert "Check the zfs userspace object used" mkmount_writable $QFS log_must zfs set xattr=sa $QFS ((user1_cnt = RANDOM % 100 + 1)) ((user2_cnt = RANDOM % 100 + 1)) log_must user_run $QUSER1 mkfiles ${QFILE}_1 $user1_cnt log_must user_run $QUSER2 mkfiles ${QFILE}_2 $user2_cnt sync_pool typeset snapfs=$QFS@snap log_must zfs snapshot $snapfs log_must eval "zfs userspace $QFS >/dev/null 2>&1" log_must eval "zfs userspace $snapfs >/dev/null 2>&1" for fs in "$QFS" "$snapfs"; do log_note "check the user used objects in zfs userspace $fs" [[ $(user_object_count $fs $QUSER1) -eq $user1_cnt ]] || log_fail "expected $user1_cnt" [[ $(user_object_count $fs $QUSER2) -eq $user2_cnt ]] || log_fail "expected $user2_cnt" done log_note "change the owner of files" log_must chown $QUSER2 ${QFILE}_1* sync_pool [[ $(user_object_count $QFS $QUSER1) -eq 0 ]] || log_fail "expected 0 files for $QUSER1" [[ $(user_object_count $snapfs $QUSER1) -eq $user1_cnt ]] || log_fail "expected $user_cnt files for $QUSER1 in snapfs" [[ $(user_object_count $QFS $QUSER2) -eq $((user1_cnt+user2_cnt)) ]] || log_fail "expected $((user1_cnt+user2_cnt)) files for $QUSER2" log_note "file removal" log_must rm ${QFILE}_* sync_pool [[ $(user_object_count $QFS $QUSER2) -eq 0 ]] || log_fail "expected 0 files for $QUSER2" cleanup log_pass "Check the zfs userspace object used" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_009_pos.ksh0000644000000000000000000000007413607166133030071 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.868952155 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_009_pos.ksh0000755016037001603700000000563713607166133030104 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check user|group quota to snapshot that: # 1) can not set user|group quota to snapshot directly # 2) snapshot can inherit the parent fs's user|groupquota # 3) the user|group quota will not change even the parent fs's quota changed. # # # STRATEGY: # 1. create a snapshot of a fs # 2. set the user|group quota to snapshot and expect fail # 3. set user|group quota to fs and check the snapshot # 4. re-set user|group quota to fs and check the snapshot's value # function cleanup { if datasetexists $snap_fs; then log_must zfs destroy $snap_fs fi log_must cleanup_quota } log_onexit cleanup log_assert "Check the snapshot's user|group quota" typeset snap_fs=$QFS@snap log_must zfs set userquota@$QUSER1=$UQUOTA_SIZE $QFS log_must check_quota "userquota@$QUSER1" $QFS "$UQUOTA_SIZE" log_must zfs set groupquota@$QGROUP=$GQUOTA_SIZE $QFS log_must check_quota "groupquota@$QGROUP" $QFS "$GQUOTA_SIZE" log_must zfs snapshot $snap_fs log_note "check the snapshot $snap_fs user|group quota" log_must check_quota "userquota@$QUSER1" $snap_fs "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $snap_fs "$GQUOTA_SIZE" log_note "set userquota and groupquota to $snap_fs which will fail" log_mustnot zfs set userquota@$QUSER1=$SNAP_QUOTA $snap_fs log_mustnot zfs set groupquota@$QGROUP=$SNAP_QUOTA $snap_fs log_note "change the parent's userquota and groupquota" log_must zfs set userquota@$QUSER1=$TEST_QUOTA $QFS log_must zfs set groupquota@$QGROUP=$TEST_QUOTA $QFS log_must check_quota "userquota@$QUSER1" $QFS $TEST_QUOTA log_must check_quota "groupquota@$QGROUP" $QFS $TEST_QUOTA log_note "check the snapshot $snap_fs userquota and groupquota" log_must check_quota "userquota@$QUSER1" $snap_fs "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $snap_fs "$GQUOTA_SIZE" log_pass "Check the snapshot's user|group quota pass as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/groupspace_003_pos.ksh0000644000000000000000000000007413607166133030203 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.848951513 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/groupspace_003_pos.ksh0000755016037001603700000000557413607166133030216 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the user used and groupspace object counts in zfs groupspace # # # STRATEGY: # 1. set zfs groupquota to a fs # 2. create objects for different users in the same group # 3. use zfs groupspace to check the object count # function cleanup { if datasetexists $snapfs; then log_must zfs destroy $snapfs fi log_must rm -f ${QFILE}_* log_must cleanup_quota } function group_object_count { typeset fs=$1 typeset group=$2 typeset -i groupspacecnt=$(zfs groupspace -oname,objused $fs | awk /$group/'{print $2}') typeset -i zfsgetcnt=$(zfs get -H -ovalue groupobjused@$group $fs) # 'zfs groupspace' and 'zfs get groupobjused@' should be equal verify_eq "$groupspacecnt" "$zfsgetcnt" "groupobjused@$group" echo $groupspacecnt } log_onexit cleanup log_assert "Check the zfs groupspace object used" mkmount_writable $QFS log_must zfs set xattr=sa $QFS ((user1_cnt = RANDOM % 100 + 1)) ((user2_cnt = RANDOM % 100 + 1)) log_must user_run $QUSER1 mkfiles ${QFILE}_1 $user1_cnt log_must user_run $QUSER2 mkfiles ${QFILE}_2 $user2_cnt ((grp_cnt = user1_cnt + user2_cnt)) sync_pool typeset snapfs=$QFS@snap log_must zfs snapshot $snapfs log_must eval "zfs groupspace $QFS >/dev/null 2>&1" log_must eval "zfs groupspace $snapfs >/dev/null 2>&1" for fs in "$QFS" "$snapfs"; do log_note "check the object count in zfs groupspace $fs" [[ $(group_object_count $fs $QGROUP) -eq $grp_cnt ]] || log_fail "expected $grp_cnt" done log_note "file removal" log_must rm ${QFILE}_* sync_pool [[ $(group_object_count $QFS $QGROUP) -eq 0 ]] || log_fail "expected 0 files for $QGROUP" [[ $(group_object_count $snapfs $QGROUP) -eq $grp_cnt ]] || log_fail "expected $grp_cnt files for $QGROUP" cleanup log_pass "Check the zfs groupspace object used pass as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/groupspace_001_pos.ksh0000644000000000000000000000007413607166133030201 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.844951385 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/groupspace_001_pos.ksh0000755016037001603700000000430613607166133030204 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the zfs groupspace with all parameters # # # STRATEGY: # 1. set zfs groupquota to a fs # 2. write some data to the fs with specified user and group # 3. use zfs groupspace with all possible parameters to check the result # function cleanup { if datasetexists $snap_fs; then log_must zfs destroy $snap_fs fi log_must cleanup_quota } log_onexit cleanup log_assert "Check the zfs groupspace with all possible parameters" set -A params -- "-n" "-H" "-p" "-o type,name,used,quota" \ "-o name,used,quota" "-o used,quota" "-o used" "-o quota" "-s type" \ "-s name" "-s used" "-s quota" "-S type" "-S name" "-S used" "-S quota" \ "-t posixuser" "-t posixgroup" "-t all" "-i" "-t smbuser" "-t smbgroup" typeset snap_fs=$QFS@snap log_must zfs set groupquota@$QGROUP=500m $QFS mkmount_writable $QFS log_must user_run $QUSER1 mkfile 50m $QFILE sync log_must zfs snapshot $snap_fs for param in "${params[@]}"; do log_must eval "zfs groupspace $param $QFS >/dev/null 2>&1" log_must eval "zfs groupspace $param $snap_fs >/dev/null 2>&1" done log_pass "Check the zfs groupspace with all possible parameters" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_004_pos.ksh0000644000000000000000000000007413607166133030064 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.857951801 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_004_pos.ksh0000755016037001603700000000454113607166133030070 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the basic function user|group used # # # STRATEGY: # 1. Write some data to fs by normal user and check the user|group used # function cleanup { cleanup_quota } log_onexit cleanup log_assert "Check the basic function of {user|group} used" sync_pool typeset user_used=$(get_value "userused@$QUSER1" $QFS) typeset group_used=$(get_value "groupused@$QGROUP" $QFS) typeset file_size='100m' if [[ $user_used != 0 ]]; then log_fail "FAIL: userused is $user_used, should be 0" fi if [[ $group_used != 0 ]]; then log_fail "FAIL: groupused is $group_used, should be 0" fi mkmount_writable $QFS log_must user_run $QUSER1 mkfile $file_size $QFILE sync_pool user_used=$(get_value "userused@$QUSER1" $QFS) group_used=$(get_value "groupused@$QGROUP" $QFS) # get_value() reads the exact byte value which is slightly more than 100m if [[ "$(($user_used/1024/1024))m" != "$file_size" ]]; then log_note "user $QUSER1 used is $user_used" log_fail "userused for user $QUSER1 expected to be $file_size, " \ "not $user_used" fi if [[ $user_used != $group_used ]]; then log_note "user $QUSER1 used is $user_used" log_note "group $QGROUP used is $group_used" log_fail "FAIL: userused should equal to groupused" fi log_pass "Check the basic function of {user|group}used pass as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_002_pos.ksh0000644000000000000000000000007413607166133030062 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.853951673 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_002_pos.ksh0000755016037001603700000000464213607166133030070 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # the userquota and groupquota can be set during zpool or zfs creation" # # # STRATEGY: # 1. Set userquota and groupquota via "zpool -O or zfs create -o" # verify_runnable "global" function cleanup { if poolexists $TESTPOOL1; then log_must zpool destroy $TESTPOOL1 fi if [[ -f $pool_vdev ]]; then rm -f $pool_vdev fi } log_onexit cleanup log_assert \ "the userquota and groupquota can be set during zpool,zfs creation" typeset pool_vdev=$TEST_BASE_DIR/pool_dev.$$ log_must mkfile 500m $pool_vdev if poolexists $TESTPOOL1; then zpool destroy $TESTPOOL1 fi log_must zpool create -O userquota@$QUSER1=$UQUOTA_SIZE \ -O groupquota@$QGROUP=$GQUOTA_SIZE $TESTPOOL1 $pool_vdev log_must eval "zfs list -r -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL1 > /dev/null 2>&1" log_must check_quota "userquota@$QUSER1" $TESTPOOL1 "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $TESTPOOL1 "$GQUOTA_SIZE" log_must zfs create -o userquota@$QUSER1=$UQUOTA_SIZE \ -o groupquota@$QGROUP=$GQUOTA_SIZE $TESTPOOL1/fs log_must eval "zfs list -r -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL1 > /dev/null 2>&1" log_must check_quota "userquota@$QUSER1" $TESTPOOL1/fs "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $TESTPOOL1/fs "$GQUOTA_SIZE" log_pass \ "the userquota and groupquota can be set during zpool,zfs creation" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026115 xustar000000000000000030 atime=1579730441.696533881 30 ctime=1579730485.887952765 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/Makefile.am0000644016037001603700000000123113607166133026107 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/userquota dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ groupspace_001_pos.ksh \ groupspace_002_pos.ksh \ groupspace_003_pos.ksh \ userquota_001_pos.ksh \ userquota_002_pos.ksh \ userquota_003_pos.ksh \ userquota_004_pos.ksh \ userquota_005_neg.ksh \ userquota_006_pos.ksh \ userquota_007_pos.ksh \ userquota_008_pos.ksh \ userquota_009_pos.ksh \ userquota_010_pos.ksh \ userquota_011_pos.ksh \ userquota_012_neg.ksh \ userquota_013_pos.ksh \ userspace_001_pos.ksh \ userspace_002_pos.ksh \ userspace_003_pos.ksh dist_pkgdata_DATA = \ userquota.cfg \ userquota_common.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_013_pos.ksh0000644000000000000000000000007413607166133030064 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.877952443 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_013_pos.ksh0000755016037001603700000000417613607166133030074 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Jinshan Xiong. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # # DESCRIPTION: # Check the basic function of the userobjquota and groupobjquota # # # STRATEGY: # 1. Set userobjquota and overwrite the quota size # 2. Creating new object should fail with Disc quota exceeded # 3. Set groupobjquota and overwrite the quota size # 4. Creating new object should fail with Disc quota exceeded # # function cleanup { log_must rm -f ${QFILE}_* cleanup_quota } log_onexit cleanup log_assert "If creating object exceeds {user|group}objquota count, it will fail" mkmount_writable $QFS log_must zfs set xattr=sa $QFS log_note "Check the userobjquota@$QUSER1" log_must zfs set userobjquota@$QUSER1=100 $QFS log_must user_run $QUSER1 mkfiles ${QFILE}_1 100 sync_pool log_mustnot user_run $QUSER1 mkfile 1 $OFILE cleanup_quota log_note "Check the groupobjquota@$QGROUP" log_must zfs set groupobjquota@$QGROUP=200 $QFS mkmount_writable $QFS log_must user_run $QUSER1 mkfiles ${QFILE}_2 100 sync_pool log_mustnot user_run $QUSER2 mkfile 1 $OFILE cleanup log_pass "Creating objects exceeds {user|group}objquota count, it as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_010_pos.ksh0000644000000000000000000000007413612141513030050 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.870952219 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_010_pos.ksh0000755016037001603700000000434313612141513030054 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check userquota and groupquota being exceeded at the same time # # # STRATEGY: # 1. Set userquota and groupquota to a fs # 2. write to exceed the userquota size to check the result # 3. write to exceed the groupquota size to check the result # function cleanup { cleanup_quota } log_onexit cleanup log_assert "overwrite any of the {user|group}quota size, it will fail" log_note "overwrite to $QFS to make it exceed userquota" log_must zfs set userquota@$QUSER1=$UQUOTA_SIZE $QFS log_must zfs set groupquota@$QGROUP=$GQUOTA_SIZE $QFS mkmount_writable $QFS log_must user_run $QUSER1 mkfile $UQUOTA_SIZE $QFILE sync_pool log_must eval "zfs get -p userused@$QUSER1 $QFS >/dev/null 2>&1" log_must eval "zfs get -p groupused@$GROUPUSED $QFS >/dev/null 2>&1" log_mustnot user_run $QUSER1 mkfile 1 $OFILE log_must rm -f $QFILE log_note "overwrite to $QFS to make it exceed userquota" log_mustnot user_run $QUSER1 mkfile $GQUOTA_SIZE $QFILE log_must eval "zfs get -p userused@$QUSER1 $QFS >/dev/null 2>&1" log_must eval "zfs get -p groupused@$GROUPUSED $QFS >/dev/null 2>&1" log_pass "overwrite any of the {user|group}quota size, it fail as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025730 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.840951256 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/setup.ksh0000755016037001603700000000306713607166133025736 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib verify_runnable "both" log_must clean_user_group log_must add_group $QGROUP log_must add_user $QGROUP $QUSER1 log_must add_user $QGROUP $QUSER2 # # Verify the test user can execute the zfs utilities. This may not # be possible due to default permissions on the user home directory. # This can be resolved granting group read access. # # chmod 0750 $HOME # user_run $QUSER1 zfs list if [ $? -ne 0 ]; then log_unsupported "Test user $QUSER1 cannot execute zfs utilities" fi DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026217 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.842951321 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/cleanup.ksh0000755016037001603700000000226613607166133026225 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib log_must cleanup_quota log_must clean_user_group typeset mntp=$(get_prop mountpoint $QFS) chmod 0755 $mntp default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_006_pos.ksh0000644000000000000000000000007413607166133030066 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.861951931 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_006_pos.ksh0000755016037001603700000000424213607166133030070 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the invalid parameter of zfs get user|group quota # # # STRATEGY: # 1. check the invalid zfs get user|group quota to fs # 2. check the valid zfs get user|group quota to snapshots # function cleanup { if datasetexists $snap_fs; then log_must zfs destroy $snap_fs fi log_must cleanup_quota } log_onexit cleanup log_assert "Check the invalid parameter of zfs get user|group quota" typeset snap_fs=$QFS@snap log_must zfs snapshot $snap_fs set -A no_users "mms1234" "ss@#" "root-122" "1234" for user in "${no_users[@]}"; do log_mustnot eval "id $user >/dev/null 2>&1" log_must eval "zfs get userquota@$user $QFS >/dev/null 2>&1" log_must eval "zfs get userquota@$user $snap_fs >/dev/null 2>&1" done set -A no_groups "aidsf@dfsd@" "123223-dsfds#sdfsd" "mss_#ss" "1234" for group in "${no_groups[@]}"; do log_mustnot eval "groupdel $group > /dev/null 2>&1" log_must eval "zfs get groupquota@$group $QFS >/dev/null 2>&1" log_must eval "zfs get groupquota@$group $snap_fs >/dev/null 2>&1" done log_pass "Check the invalid parameter of zfs get user|group quota pass as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_011_pos.ksh0000644000000000000000000000007413607166133030062 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.872952283 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_011_pos.ksh0000755016037001603700000001051513607166133030064 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # the userquota and groupquota will not change during zfs actions, such as # snapshot,clone,rename,upgrade,send,receive. # # # STRATEGY: # 1. Create a pool, and create fs with preset user,group quota # 2. Check set user|group quota via zfs snapshot|clone|list -o # 3. Check the user|group quota can not change during zfs rename|upgrade|promote # 4. Check the user|group quota can not change during zfs clone # 5. Check the user|group quota can not change during zfs send/receive # function cleanup { for ds in $TESTPOOL/fs $TESTPOOL/fs-rename $TESTPOOL/fs-clone; do if datasetexists $ds; then log_must zfs destroy -rRf $ds fi done } log_onexit cleanup log_assert \ "the userquota and groupquota can't change during zfs actions" cleanup log_must zfs create -o userquota@$QUSER1=$UQUOTA_SIZE \ -o groupquota@$QGROUP=$GQUOTA_SIZE $TESTPOOL/fs log_must zfs snapshot $TESTPOOL/fs@snap log_must eval "zfs list -r -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL >/dev/null 2>&1" log_must check_quota "userquota@$QUSER1" $TESTPOOL/fs@snap "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $TESTPOOL/fs@snap "$GQUOTA_SIZE" log_note "clone fs gets its parent's userquota/groupquota initially" log_must zfs clone -o userquota@$QUSER1=$UQUOTA_SIZE \ -o groupquota@$QGROUP=$GQUOTA_SIZE \ $TESTPOOL/fs@snap $TESTPOOL/fs-clone log_must eval "zfs list -r -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL >/dev/null 2>&1" log_must check_quota "userquota@$QUSER1" $TESTPOOL/fs-clone "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $TESTPOOL/fs-clone "$GQUOTA_SIZE" log_must eval "zfs list -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL/fs-clone >/dev/null 2>&1" log_note "zfs promote can not change the previously set user|group quota" log_must zfs promote $TESTPOOL/fs-clone log_must eval "zfs list -r -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL >/dev/null 2>&1" log_must check_quota "userquota@$QUSER1" $TESTPOOL/fs-clone "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $TESTPOOL/fs-clone "$GQUOTA_SIZE" log_note "zfs send receive can not change the previously set user|group quota" log_must zfs send $TESTPOOL/fs-clone@snap | zfs receive $TESTPOOL/fs-rev log_must eval "zfs list -r -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL >/dev/null 2>&1" log_must check_quota "userquota@$QUSER1" $TESTPOOL/fs-rev "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $TESTPOOL/fs-rev "$GQUOTA_SIZE" log_note "zfs rename can not change the previously set user|group quota" log_must zfs rename $TESTPOOL/fs-rev $TESTPOOL/fs-rename log_must eval "zfs list -r -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL >/dev/null 2>&1" log_must check_quota "userquota@$QUSER1" $TESTPOOL/fs-rename "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $TESTPOOL/fs-rename "$GQUOTA_SIZE" log_note "zfs upgrade can not change the previously set user|group quota" log_must zfs upgrade $TESTPOOL/fs-rename log_must eval "zfs list -r -o userquota@$QUSER1,groupquota@$QGROUP \ $TESTPOOL >/dev/null 2>&1" log_must check_quota "userquota@$QUSER1" $TESTPOOL/fs-rename "$UQUOTA_SIZE" log_must check_quota "groupquota@$QGROUP" $TESTPOOL/fs-rename "$GQUOTA_SIZE" log_pass \ "the userquota and groupquota can't change during zfs actions" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_012_neg.ksh0000644000000000000000000000007413612141513030022 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.875952379 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_012_neg.ksh0000755016037001603700000000336413612141513030030 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # userquota and groupquota can not be set against snapshot # # # STRATEGY: # 1. Set userquota on snap and check the zfs get # 2. Set groupquota on snap and check the zfs get # function cleanup { cleanup_quota if datasetexists $snap_fs; then log_must zfs destroy $snap_fs fi } log_onexit cleanup typeset snap_fs=$QFS@snap log_assert "Check set userquota and groupquota on snapshot" log_note "Check can not set user|group quota on snapshot" log_must zfs snapshot $snap_fs log_mustnot zfs set userquota@$QUSER1=$UQUOTA_SIZE $snap_fs log_mustnot zfs set groupquota@$QGROUP=$GQUOTA_SIZE $snap_fs log_pass "Check set userquota and groupquota on snapshot" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_common.kshlib0000644000000000000000000000007413607166133030657 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.838951191 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_common.kshlib0000644016037001603700000000535413607166133030663 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota.cfg # # reset the userquota and groupquota and delete temporary files # function cleanup_quota { if datasetexists $QFS; then log_must zfs set userquota@$QUSER1=none $QFS log_must zfs set userobjquota@$QUSER1=none $QFS log_must zfs set userquota@$QUSER2=none $QFS log_must zfs set userobjquota@$QUSER2=none $QFS log_must zfs set groupquota@$QGROUP=none $QFS log_must zfs set groupobjquota@$QGROUP=none $QFS recovery_writable $QFS fi [[ -f $QFILE ]] && log_must rm -f $QFILE [[ -f $OFILE ]] && log_must rm -f $OFILE sync return 0 } # # delete user and group that created during the test # function clean_user_group { for usr in $QUSER1 $QUSER2; do log_must del_user $usr done log_must del_group $QGROUP return 0 } # # make the $QFS's mountpoint writable for all users # function mkmount_writable { typeset fs=$1 typeset mntp=$(get_prop mountpoint $fs) log_must chmod 0777 $mntp } # # recovery the directory permission for $QFS # function recovery_writable { typeset fs=$1 typeset mntp=$(get_prop mountpoint $fs) log_must chmod 0755 $mntp } # # check the quota value of a specific FS # function check_quota { typeset fs=$2 typeset prop=$1 typeset expected=$3 typeset value=$(get_prop $prop $fs) if (($value != $expected)); then return 1 fi } # # zfs get prop, which return raw value not -p value. # function get_value # property dataset { typeset prop_val typeset prop=$1 typeset dataset=$2 prop_val=$(zfs get -H -p -o value $prop $dataset 2>/dev/null) if [[ $? -ne 0 ]]; then log_note "Unable to get $prop property for dataset " \ "$dataset" return 1 fi echo $prop_val return 0 } zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/groupspace_002_pos.ksh0000644000000000000000000000007413607166133030202 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.846951449 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/groupspace_002_pos.ksh0000755016037001603700000000416513607166133030210 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # Check the user used and groupspace size in zfs groupspace # # # STRATEGY: # 1. set zfs groupquota to a fs # 2. write some data to the fs with specified user and size # 3. use zfs groupspace to check the used size and quota size # function cleanup { if datasetexists $snapfs; then log_must zfs destroy $snapfs fi log_must cleanup_quota } log_onexit cleanup log_assert "Check the zfs groupspace used and quota" log_must zfs set groupquota@$QGROUP=500m $QFS mkmount_writable $QFS log_must user_run $QUSER1 mkfile 100m $QFILE sync typeset snapfs=$QFS@snap log_must zfs snapshot $snapfs log_must eval "zfs groupspace $QFS >/dev/null 2>&1" log_must eval "zfs groupspace $snapfs >/dev/null 2>&1" for fs in "$QFS" "$snapfs"; do log_note "check the quota size in zfs groupspace $fs" log_must eval "zfs groupspace $fs | grep $QGROUP | grep 500M" log_note "check the user used size in zfs groupspace $fs" log_must eval "zfs groupspace $fs | grep $QGROUP | grep 100M" done log_pass "Check the zfs groupspace used and quota pass as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_008_pos.ksh0000644000000000000000000000007413607166133030070 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.866952091 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_008_pos.ksh0000755016037001603700000000314713607166133030075 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # DESCRIPTION: # # zfs get all does not print out userquota/groupquota # # STRATEGY: # 1. set userquota and groupquota to a fs # 2. check zfs get all fs # function cleanup { log_must cleanup_quota } log_onexit cleanup log_assert "Check zfs get all will not print out user|group quota" log_must zfs set userquota@$QUSER1=50m $QFS log_must zfs set groupquota@$QGROUP=100m $QFS log_mustnot zfs get all $QFS | grep userquota log_mustnot zfs get all $QFS | grep groupquota log_pass "zfs get all will not print out user|group quota" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143011026103 xustar000000000000000030 mtime=1579730441.734535099 30 atime=1579730458.558075257 30 ctime=1579730485.889952829 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/Makefile.in0000664016037001603700000006226613612143011026123 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/userquota DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/userquota ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ groupspace_001_pos.ksh \ groupspace_002_pos.ksh \ groupspace_003_pos.ksh \ userquota_001_pos.ksh \ userquota_002_pos.ksh \ userquota_003_pos.ksh \ userquota_004_pos.ksh \ userquota_005_neg.ksh \ userquota_006_pos.ksh \ userquota_007_pos.ksh \ userquota_008_pos.ksh \ userquota_009_pos.ksh \ userquota_010_pos.ksh \ userquota_011_pos.ksh \ userquota_012_neg.ksh \ userquota_013_pos.ksh \ userspace_001_pos.ksh \ userspace_002_pos.ksh \ userspace_003_pos.ksh dist_pkgdata_DATA = \ userquota.cfg \ userquota_common.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/userquota/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/userquota/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota_001_pos.ksh0000644000000000000000000000007413607166133030061 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.851951609 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota_001_pos.ksh0000755016037001603700000000410613607166133030062 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/userquota/userquota_common.kshlib # # # DESCRIPTION: # Check the basic function of the userquota and groupquota # # # STRATEGY: # 1. Set userquota and overwrite the quota size # 2. The write operation should fail with Disc quota exceeded # 3. Set groupquota and overwrite the quota size # 4. The write operation should fail with Disc quota exceeded # # function cleanup { cleanup_quota } log_onexit cleanup log_assert "If write operation overwrite {user|group}quota size, it will fail" mkmount_writable $QFS log_note "Check the userquota@$QUSER1" log_must zfs set userquota@$QUSER1=$UQUOTA_SIZE $QFS log_must user_run $QUSER1 mkfile $UQUOTA_SIZE $QFILE sync_pool log_mustnot user_run $QUSER1 mkfile 1 $OFILE cleanup_quota log_note "Check the groupquota@$QGROUP" log_must zfs set groupquota@$QGROUP=$GQUOTA_SIZE $QFS mkmount_writable $QFS log_must user_run $QUSER1 mkfile $GQUOTA_SIZE $QFILE sync_pool log_mustnot user_run $QUSER1 mkfile 1 $OFILE cleanup_quota log_pass "Write operation overwrite {user|group}quota size, it as expect" zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/PaxHeaders.151519/userquota.cfg0000644000000000000000000000007413607166133026572 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.835951095 zfs-0.8.3/tests/zfs-tests/tests/functional/userquota/userquota.cfg0000644016037001603700000000234613607166133026574 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # export QUSER1=quser1 export QUSER2=quser2 export QGROUP=qgroup export QGROUP1=qgroup1 export QGROUP1=qgroup2 export UQUOTA_SIZE=1000000 export GQUOTA_SIZE=4000000 export QFS=$TESTPOOL/$TESTFS export QFILE=$TESTDIR/qf export OFILE=$TESTDIR/of export SNAP_QUOTA=100m export TEST_QUOTA=88888 zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/rootpool0000644000000000000000000000013213612143064023616 xustar000000000000000030 mtime=1579730484.786917413 30 atime=1579730489.088055515 30 ctime=1579730484.786917413 zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/0000775016037001603700000000000013612143064023677 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/PaxHeaders.151519/rootpool_003_neg.ksh0000644000000000000000000000007413607166133027505 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.779917187 zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/rootpool_003_neg.ksh0000755016037001603700000000344013607166133027506 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # system related filesystems can not be renamed or destroyed # # STRATEGY: # # 1) check if the current system is installed as zfs rootfs # 2) get the rootfs # 3) try to rename the rootfs to some newfs, which should fail. # 4) try to destroy the rootfs, which should fail. # 5) try to destroy the rootfs with -f which should fail # 6) try to destroy the rootfs with -fR which should fail # verify_runnable "global" log_assert "system related filesystems can not be renamed or destroyed" typeset rootpool=$(get_rootpool) typeset rootfs=$(get_rootfs) log_mustnot zfs rename $rootfs $rootpool/newfs log_mustnot zfs rename -f $rootfs $rootpool/newfs log_mustnot zfs destroy $rootfs log_mustnot zfs destroy -f $rootfs log_pass "system related filesystems can not be renamed or destroyed" zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025742 xustar000000000000000030 atime=1579730440.881507711 30 ctime=1579730484.784917349 zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/Makefile.am0000644016037001603700000000030113607166133025731 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/rootpool dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ rootpool_002_neg.ksh \ rootpool_003_neg.ksh \ rootpool_007_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147025562 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.773916995 zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/setup.ksh0000755016037001603700000000235513607166147025567 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" # # This functionality is supported under Linux, but these test cases # are disabled by default since they manipulate the systems root pool. # if is_linux; then log_unsupported "Supported but disabled by default" fi zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026044 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.775917059 zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/cleanup.ksh0000755016037001603700000000203513607166133026044 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/PaxHeaders.151519/rootpool_007_pos.ksh0000644000000000000000000000007413607166147027546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.782917284 zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/rootpool_007_pos.ksh0000755016037001603700000000355613607166147027557 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # the zfs rootfilesystem's compression property can be set to gzip[1-9] # # STRATEGY: # 1) check if the current system is installed as zfs root # 2) get the rootfs # 3) set the rootfs's compression to gzip 1-9 which should not fail. # verify_runnable "global" function cleanup { log_must zfs set compression=$orig_compress $rootfs } log_onexit cleanup log_assert $assert_msg typeset rootpool=$(get_rootpool) typeset rootfs=$(get_pool_prop bootfs $rootpool) typeset orig_compress=$(get_prop compression $rootfs) typeset assert_msg="the zfs rootfs's compression property can be set to \ gzip and gzip[1-9]" set -A gtype "gzip" "gzip-1" "gzip-2" "gzip-3" "gzip-4" "gzip-5" \ "gzip-6" "gzip-7" "gzip-8" "gzip-9" typeset -i i=0 while (( i < ${#gtype[@]} )); do log_must zfs set compression=${gtype[i]} $rootfs (( i += 1 )) done log_pass $assert_msg zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/PaxHeaders.151519/rootpool_002_neg.ksh0000644000000000000000000000007413607166133027504 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.777917123 zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/rootpool_002_neg.ksh0000755016037001603700000000403713607166133027510 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # Copyright 2014 Nexenta Systems, Inc. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # the zfs rootpool/rootfs can not be destroyed # # STRATEGY: # 1) check if the current system is installed as zfs root # 2) get the rootpool # 3) try to destroy the rootpool, which should fail # 4) try to destroy the rootpool filesystem, which should fail # verify_runnable "global" log_assert "zpool/zfs destroy should fail" typeset rootpool=$(get_rootpool) typeset tmpfile="$TEST_BASE_DIR/mounted-datasets.$$" # Collect the currently mounted ZFS filesystems, so that we can repair any # damage done by the attempted pool destroy. The destroy itself should fail, # but some filesystems can become unmounted in the process, and aren't # automatically remounted. mount -p | awk '{if ($4 == "zfs") print $1}' > $tmpfile log_mustnot zpool destroy $rootpool # Remount any filesystems that the destroy attempt unmounted. while read ds; do mounted $ds || log_must zfs mount $ds done < $tmpfile rm -f $tmpfile log_mustnot zfs destroy $rootpool log_pass "rootpool/rootfs can not be destroyed" zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143010025727 xustar000000000000000030 mtime=1579730440.918508899 30 atime=1579730458.133061611 30 ctime=1579730484.786917413 zfs-0.8.3/tests/zfs-tests/tests/functional/rootpool/Makefile.in0000664016037001603700000005732013612143010025742 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/rootpool DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/rootpool ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ rootpool_002_neg.ksh \ rootpool_003_neg.ksh \ rootpool_007_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/rootpool/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/rootpool/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/cli_root0000644000000000000000000000013213612143054023552 xustar000000000000000030 mtime=1579730476.387647726 30 atime=1579730489.088055515 30 ctime=1579730476.387647726 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/0000775016037001603700000000000013612143054023633 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_initialize0000644000000000000000000000013213612143057027141 xustar000000000000000030 mtime=1579730479.712754489 30 atime=1579730489.088055515 30 ctime=1579730479.712754489 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/0000775016037001603700000000000013612143057027222 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000026013607166133032023 xustar0000000000000000116 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_verify_checksums.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.705754265 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_verify_checksu0000755016037001603700000000330513607166133035630 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Initializing does not cause file corruption. # # STRATEGY: # 1. Create a one-disk pool. # 2. Write data to the pool. # 3. Start initializing and verify that initializing is active. # 4. Write more data to the pool. # 5. Run zdb to validate checksums. # DISK1=${DISKS%% *} log_must zpool create -f $TESTPOOL $DISK1 log_must dd if=/dev/urandom of=/$TESTPOOL/file1 bs=1M count=30 log_must sync log_must zpool initialize $TESTPOOL log_must zdb -cc $TESTPOOL [[ -z "$(initialize_progress $TESTPOOL $DISK1)" ]] && \ log_fail "Initializing did not start" log_must dd if=/dev/urandom of=/$TESTPOOL/file2 bs=1M count=30 log_must sync log_must zdb -cc $TESTPOOL log_pass "Initializing does not corrupt existing or new data" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000025513607166133032027 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_import_export.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.687753687 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_import_export.0000755016037001603700000000523313607166133035612 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Initializing automatically resumes across import/export. # # STRATEGY: # 1. Create a one-disk pool. # 2. Start initializing and verify that initializing is active. # 3. Export the pool. # 4. Import the pool. # 5. Verify that initializing resumes and progress does not regress. # 6. Suspend initializing. # 7. Repeat steps 3-4. # 8. Verify that progress does not regress but initializing is still suspended. # DISK1=${DISKS%% *} log_must zpool create -f $TESTPOOL $DISK1 log_must zpool initialize $TESTPOOL sleep 2 progress="$(initialize_progress $TESTPOOL $DISK1)" [[ -z "$progress" ]] && log_fail "Initializing did not start" log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL new_progress="$(initialize_progress $TESTPOOL $DISK1)" [[ -z "$new_progress" ]] && log_fail "Initializing did not restart after import" [[ "$progress" -le "$new_progress" ]] || \ log_fail "Initializing lost progress after import" log_mustnot eval "initialize_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool initialize -s $TESTPOOL $DISK1 action_date="$(initialize_prog_line $TESTPOOL $DISK1 | \ sed 's/.*ed at \(.*\)).*/\1/g')" log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL new_action_date=$(initialize_prog_line $TESTPOOL $DISK1 | \ sed 's/.*ed at \(.*\)).*/\1/g') [[ "$action_date" != "$new_action_date" ]] && \ log_fail "Initializing action date did not persist across export/import" [[ "$new_progress" -le "$(initialize_progress $TESTPOOL $DISK1)" ]] || \ log_fail "Initializing lost progress after import" log_must eval "initialize_prog_line $TESTPOOL $DISK1 | grep suspended" log_pass "Initializing retains state as expected across export/import" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000026213607166133032025 xustar0000000000000000118 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_verify_initialized.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.707754329 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_verify_initial0000755016037001603700000000522613607166133035640 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # After initializing, the disk is actually initialized. # # STRATEGY: # 1. Create a one-disk pool. # 2. Initialize the disk to completion. # 3. Load all metaslabs that don't have a spacemap, and make sure the entire # metaslab has been filled with the initializing pattern (deadbeef). # function cleanup { set_tunable64 zfs_initialize_value $ORIG_PATTERN zpool import -d $TESTDIR $TESTPOOL if datasetexists $TESTPOOL ; then zpool destroy -f $TESTPOOL fi if [[ -d "$TESTDIR" ]]; then rm -rf "$TESTDIR" fi } log_onexit cleanup PATTERN="deadbeefdeadbeef" SMALLFILE="$TESTDIR/smallfile" ORIG_PATTERN=$(get_tunable zfs_initialize_value) log_must set_tunable64 zfs_initialize_value $(printf %llu 0x$PATTERN) log_must mkdir "$TESTDIR" log_must mkfile $MINVDEVSIZE "$SMALLFILE" log_must zpool create $TESTPOOL "$SMALLFILE" log_must zpool initialize $TESTPOOL while [[ "$(initialize_progress $TESTPOOL $SMALLFILE)" -lt "100" ]]; do sleep 0.5 done log_must zpool export $TESTPOOL spacemaps=0 bs=512 while read -r sm; do typeset offset="$(echo $sm | cut -d ' ' -f1)" typeset size="$(echo $sm | cut -d ' ' -f2)" spacemaps=$((spacemaps + 1)) offset=$(((4 * 1024 * 1024) + 16#$offset)) out=$(dd if=$SMALLFILE skip=$(($offset / $bs)) \ count=$(($size / $bs)) bs=$bs 2>/dev/null | od -t x8 -Ad) echo "$out" | log_must egrep "$PATTERN|\*|$size" done <<< "$(zdb -p $TESTDIR -Pme $TESTPOOL | egrep 'spacemap[ ]+0 ' | \ awk '{print $4, $8}')" if [[ $spacemaps -eq 0 ]];then log_fail "Did not find any empty space maps to check" else log_pass "Initializing wrote appropriate amount to disk" fi zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000026413607166133032027 xustar0000000000000000120 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_start_and_cancel_neg.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.696753975 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_start_and_canc0000755016037001603700000000367613607166133035575 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Cancelling and suspending initialize doesn't work if not all specified vdevs # are being initialized. # # STRATEGY: # 1. Create a three-disk pool. # 2. Start initializing and verify that initializing is active. # 3. Try to cancel and suspend initializing on the non-initializing disks. # 4. Try to re-initialize the currently initializing disk. # DISK1=${DISKS%% *} DISK2="$(echo $DISKS | cut -d' ' -f2)" DISK3="$(echo $DISKS | cut -d' ' -f3)" log_must zpool list -v log_must zpool create -f $TESTPOOL $DISK1 $DISK2 $DISK3 log_must zpool initialize $TESTPOOL $DISK1 [[ -z "$(initialize_progress $TESTPOOL $DISK1)" ]] && \ log_fail "Initialize did not start" log_mustnot zpool initialize -c $TESTPOOL $DISK2 log_mustnot zpool initialize -c $TESTPOOL $DISK2 $DISK3 log_mustnot zpool initialize -s $TESTPOOL $DISK2 log_mustnot zpool initialize -s $TESTPOOL $DISK2 $DISK3 log_mustnot zpool initialize $TESTPOOL $DISK1 log_pass "Nonsensical initialize operations fail" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133031263 xustar000000000000000030 atime=1579730437.008383359 30 ctime=1579730479.710754425 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile.am0000644016037001603700000000117513607166133031264 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_initialize dist_pkgdata_SCRIPTS = \ cleanup.ksh \ zpool_initialize_attach_detach_add_remove.ksh \ zpool_initialize_import_export.ksh \ zpool_initialize_offline_export_import_online.ksh \ zpool_initialize_online_offline.ksh \ zpool_initialize_split.ksh \ zpool_initialize_start_and_cancel_neg.ksh \ zpool_initialize_start_and_cancel_pos.ksh \ zpool_initialize_suspend_resume.ksh \ zpool_initialize_unsupported_vdevs.ksh \ zpool_initialize_verify_checksums.ksh \ zpool_initialize_verify_initialized.ksh dist_pkgdata_DATA = \ zpool_initialize.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133031365 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.682753527 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/cleanup.ksh0000755016037001603700000000166713607166133031377 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000026113607166133032024 xustar0000000000000000117 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_unsupported_vdevs.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.702754169 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_unsupported_vd0000755016037001603700000000406013607166133035677 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Attempting to initialize unsupported vdevs should fail. # # STRATEGY: # 1. Create a pool with the following configuration: # root # mirror # vdev0 # vdev1 (offline) # cache # vdev2 # spare # vdev3 # 2. Try to initialize vdev1, vdev2, and vdev3. Ensure that all 3 fail. # function cleanup { if datasetexists $TESTPOOL; then log_must zpool destroy -f $TESTPOOL fi if [[ -d $TESTDIR ]]; then log_must rm -rf $TESTDIR fi } log_onexit cleanup log_must mkdir $TESTDIR set -A FDISKS for n in {0..2}; do log_must mkfile $MINVDEVSIZE $TESTDIR/vdev$n FDISKS+=("$TESTDIR/vdev$n") done FDISKS+=("${DISKS%% *}") log_must zpool create $TESTPOOL mirror ${FDISKS[0]} ${FDISKS[1]} \ spare ${FDISKS[2]} cache ${FDISKS[3]} log_must zpool offline $TESTPOOL ${FDISKS[1]} log_mustnot zpool initialize $TESTPOOL mirror-0 for n in {1..3}; do log_mustnot zpool initialize $TESTPOOL ${FDISKS[$n]} done log_pass "Attempting to initialize failed on unsupported devices" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000007413607166133032026 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.694753911 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_split.ksh0000755016037001603700000000436613607166133034546 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Initializing state is preserved across zpool split. # # STRATEGY: # 1. Create a pool with a two-way mirror. # 2. Start initializing both devices. # 3. Split the pool. Ensure initializing continues on the original. # 4. Import the new pool. Ensure initializing resumes on it. # DISK1="$(echo $DISKS | cut -d' ' -f1)" DISK2="$(echo $DISKS | cut -d' ' -f2)" POOL2="${TESTPOOL}_split" log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2 log_must zpool initialize $TESTPOOL $DISK1 $DISK2 orig_prog1="$(initialize_progress $TESTPOOL $DISK1)" orig_prog2="$(initialize_progress $TESTPOOL $DISK2)" [[ -z "$orig_prog1" ]] && log_fail "Initializing did not start" log_must zpool split $TESTPOOL $TESTPOOL1 $DISK2 # Ensure initializing continued as expected on the original pool. [[ "$(initialize_progress $TESTPOOL $DISK1)" -ge "$orig_prog1" ]] || \ log_fail "Initializing lost progress on original pool" log_mustnot eval "initialize_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool import $TESTPOOL1 [[ "$(initialize_progress $TESTPOOL1 $DISK2)" -ge "$orig_prog2" ]] || \ log_fail "Initializing lost progress on split pool" log_mustnot eval "initialize_prog_line $TESTPOOL1 $DISK1 | grep suspended" log_pass "Initializing behaves as expected on zpool split" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000027413607166133032030 xustar0000000000000000128 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_offline_export_import_online.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.690753783 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_offline_export0000755016037001603700000000452313607166133035645 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Miscellaneous complex sequences of operations function as expected. # # STRATEGY: # 1. Create a pool with a two-way mirror. # 2. Start initializing, offline, export, import, online and verify that # initializing state is preserved / initializing behaves as expected # at each step. # DISK1="$(echo $DISKS | cut -d' ' -f1)" DISK2="$(echo $DISKS | cut -d' ' -f2)" log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2 log_must zpool initialize $TESTPOOL $DISK1 log_must zpool offline $TESTPOOL $DISK1 progress="$(initialize_progress $TESTPOOL $DISK1)" [[ -z "$progress" ]] && log_fail "Initializing did not start" log_mustnot eval "initialize_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL new_progress="$(initialize_progress $TESTPOOL $DISK1)" [[ -z "$new_progress" ]] && log_fail "Initializing did not start after import" [[ "$new_progress" -ge "$progress" ]] || \ log_fail "Initializing lost progress after import" log_mustnot eval "initialize_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool online $TESTPOOL $DISK1 new_progress="$(initialize_progress $TESTPOOL $DISK1)" [[ "$new_progress" -ge "$progress" ]] || \ log_fail "Initializing lost progress after online" log_pass "Initializing behaves as expected at each step of:" \ "initialize + offline + export + import + online" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000026413607166133032027 xustar0000000000000000120 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_start_and_cancel_pos.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.698754039 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_start_and_canc0000755016037001603700000000310413607166133035557 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Starting and stopping an initialize works. # # STRATEGY: # 1. Create a one-disk pool. # 2. Start initializing and verify that initializing is active. # 3. Cancel initializing and verify that initializing is not active. # DISK1=${DISKS%% *} log_must zpool create -f $TESTPOOL $DISK1 log_must zpool initialize $TESTPOOL [[ -z "$(initialize_progress $TESTPOOL $DISK1)" ]] && \ log_fail "Initialize did not start" log_must zpool initialize -c $TESTPOOL [[ -z "$(initialize_progress $TESTPOOL $DISK1)" ]] || \ log_fail "Initialize did not stop" log_pass "Initialize start + cancel works" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000027013607166133032024 xustar0000000000000000124 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_attach_detach_add_remove.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.685753623 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_attach_detach_0000755016037001603700000000456213607166133035540 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Detaching/attaching, adding/removing data devices works with initializing. # # STRATEGY: # 1. Create a single-disk pool. # 2. Start initializing. # 3. Attach a second disk, ensure initializing continues. # 4. Detach the second disk, ensure initializing continues. # 5. Add a second disk, ensure initializing continues. # 6. Remove the first disk, ensure initializing stops. # DISK1="$(echo $DISKS | cut -d' ' -f1)" DISK2="$(echo $DISKS | cut -d' ' -f2)" log_must zpool create -f $TESTPOOL $DISK1 log_must zpool initialize $TESTPOOL $DISK1 progress="$(initialize_progress $TESTPOOL $DISK1)" [[ -z "$progress" ]] && log_fail "Initializing did not start" log_must zpool attach $TESTPOOL $DISK1 $DISK2 new_progress="$(initialize_progress $TESTPOOL $DISK1)" [[ "$progress" -le "$new_progress" ]] || \ log_fail "Lost initializing progress on demotion to child vdev" progress="$new_progress" log_must zpool detach $TESTPOOL $DISK2 new_progress="$(initialize_progress $TESTPOOL $DISK1)" [[ "$progress" -le "$new_progress" ]] || \ log_fail "Lost initializing progress on promotion to top vdev" progress="$new_progress" log_must zpool add $TESTPOOL $DISK2 log_must zpool remove $TESTPOOL $DISK1 [[ -z "$(initialize_prog_line $TESTPOOL $DISK1)" ]] || \ log_fail "Initializing continued after initiating removal" log_pass "Initializing worked as expected across attach/detach and add/remove" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000025613607166133032030 xustar0000000000000000114 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_suspend_resume.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.700754103 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_suspend_resume0000755016037001603700000000414713607166133035665 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Suspending and resuming initializing works. # # STRATEGY: # 1. Create a one-disk pool. # 2. Start initializing and verify that initializing is active. # 3. Wait 3 seconds, then suspend initializing and verify that the progress # reporting says so. # 4. Wait 5 seconds and ensure initializing progress doesn't advance. # 5. Restart initializing and verify that the progress doesn't regress. # DISK1=${DISKS%% *} log_must zpool create -f $TESTPOOL $DISK1 log_must zpool initialize $TESTPOOL [[ -z "$(initialize_progress $TESTPOOL $DISK1)" ]] && \ log_fail "Initializing did not start" sleep 5 log_must zpool initialize -s $TESTPOOL log_must eval "initialize_prog_line $TESTPOOL $DISK1 | grep suspended" progress="$(initialize_progress $TESTPOOL $DISK1)" sleep 3 [[ "$progress" -eq "$(initialize_progress $TESTPOOL $DISK1)" ]] || \ log_fail "Initializing progress advanced while suspended" log_must zpool initialize $TESTPOOL $DISK1 [[ "$progress" -le "$(initialize_progress $TESTPOOL $DISK1)" ]] || log_fail "Initializing progress regressed after resuming" log_pass "Suspend + resume initializing works as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000025613607166133032030 xustar0000000000000000114 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_online_offline.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.692753847 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_online_offline0000755016037001603700000000515313607166133035610 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Initializing automatically resumes across offline/online. # # STRATEGY: # 1. Create a pool with a two-way mirror. # 2. Start initializing one of the disks and verify that initializing is active. # 3. Offline the disk. # 4. Online the disk. # 5. Verify that initializing resumes and progress does not regress. # 6. Suspend initializing. # 7. Repeat steps 3-4 and verify that initializing does not resume. # DISK1=${DISKS%% *} DISK2="$(echo $DISKS | cut -d' ' -f2)" log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2 log_must zpool initialize $TESTPOOL $DISK1 log_must zpool offline $TESTPOOL $DISK1 progress="$(initialize_progress $TESTPOOL $DISK1)" [[ -z "$progress" ]] && log_fail "Initializing did not start" log_must zpool online $TESTPOOL $DISK1 new_progress="$(initialize_progress $TESTPOOL $DISK1)" [[ -z "$new_progress" ]] && \ log_fail "Initializing did not restart after onlining" [[ "$progress" -le "$new_progress" ]] || \ log_fail "Initializing lost progress after onlining" log_mustnot eval "initialize_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool initialize -s $TESTPOOL $DISK1 action_date="$(initialize_prog_line $TESTPOOL $DISK1 | \ sed 's/.*ed at \(.*\)).*/\1/g')" log_must zpool offline $TESTPOOL $DISK1 log_must zpool online $TESTPOOL $DISK1 new_action_date=$(initialize_prog_line $TESTPOOL $DISK1 | \ sed 's/.*ed at \(.*\)).*/\1/g') [[ "$action_date" != "$new_action_date" ]] && \ log_fail "Initializing action date did not persist across offline/online" log_must eval "initialize_prog_line $TESTPOOL $DISK1 | grep suspended" log_pass "Initializing performs as expected across offline/online" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/zpool_initial0000644000000000000000000000007413607166133032026 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.680753461 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib0000644016037001603700000000202213607166133034002 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # function initialize_prog_line # pool disk { typeset pool="$1" typeset disk="$2" zpool status -i "$pool" | grep "$disk" | grep "[[:digit:]]* initialized" } function initialize_progress # pool disk { initialize_prog_line "$1" "$2" | \ sed 's/.*(\([0-9]\{1,\}\)% initialized.*/\1/g' } function cleanup { if poolexists $TESTPOOL; then log_must zpool destroy -f $TESTPOOL fi if poolexists $TESTPOOL1; then log_must zpool destroy -f $TESTPOOL1 fi } log_onexit cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005031254 xustar000000000000000030 mtime=1579730437.045384546 30 atime=1579730455.956991743 30 ctime=1579730479.712754489 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile.in0000664016037001603700000006231213612143005031264 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_initialize DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_initialize ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ zpool_initialize_attach_detach_add_remove.ksh \ zpool_initialize_import_export.ksh \ zpool_initialize_offline_export_import_online.ksh \ zpool_initialize_online_offline.ksh \ zpool_initialize_split.ksh \ zpool_initialize_start_and_cancel_neg.ksh \ zpool_initialize_start_and_cancel_pos.ksh \ zpool_initialize_suspend_resume.ksh \ zpool_initialize_unsupported_vdevs.ksh \ zpool_initialize_verify_checksums.ksh \ zpool_initialize_verify_initialized.ksh dist_pkgdata_DATA = \ zpool_initialize.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_initialize/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_program0000644000000000000000000000013213612143055026104 xustar000000000000000030 mtime=1579730477.419680862 30 atime=1579730489.088055515 30 ctime=1579730477.419680862 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/0000775016037001603700000000000013612143055026165 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/PaxHeaders.151519/zfs_program_json.k0000644000000000000000000000007413612141522031721 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.415680734 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh0000755016037001603700000000716413612141522032264 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy is of the CDDL is also available via the Internet # at http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 Datto Inc. # Copyright (c) 2019 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # STRATEGY: # 1. Compare JSON output formatting for a channel program to template # 2. Using bad command line option (-Z) gives correct error output # verify_runnable "both" function cleanup { log_must zfs destroy $TESTDS return 0 } log_onexit cleanup log_assert "Channel programs output valid JSON" TESTDS="$TESTPOOL/zcp-json" log_must zfs create $TESTDS TESTZCP="/$TESTDS/zfs_rlist.zcp" cat > "$TESTZCP" << EOF succeeded = {} failed = {} function list_recursive(root, prop) for child in zfs.list.children(root) do list_recursive(child, prop) end val, src = zfs.get_prop(root, prop) if (val == nil) then failed[root] = val else succeeded[root] = val end end args = ... argv = args["argv"] list_recursive(argv[1], argv[2]) results = {} results["succeeded"] = succeeded results["failed"] = failed return results EOF # 1. Compare JSON output formatting for a channel program to template typeset -a pos_cmds=("recordsize" "type") typeset -a pos_cmds_out=( "{ \"return\": { \"failed\": {}, \"succeeded\": { \"$TESTDS\": 131072 } } }" "{ \"return\": { \"failed\": {}, \"succeeded\": { \"$TESTDS\": \"filesystem\" } } }") # # N.B. json.tool is needed to guarantee consistent ordering of fields, # sed is needed to trim trailing space in CentOS 6's json.tool output # # As of Python 3.5 the behavior of json.tool changed to keep the order # the same as the input and the --sort-keys option was added. Detect when # --sort-keys is supported and apply the option to ensure the expected order. # if python -m json.tool --sort-keys <<< "{}"; then JSON_TOOL_CMD="python -m json.tool --sort-keys" else JSON_TOOL_CMD="python -m json.tool" fi typeset -i cnt=0 typeset cmd for cmd in ${pos_cmds[@]}; do log_must zfs program $TESTPOOL $TESTZCP $TESTDS $cmd 2>&1 log_must zfs program -j $TESTPOOL $TESTZCP $TESTDS $cmd 2>&1 OUTPUT=$(zfs program -j $TESTPOOL $TESTZCP $TESTDS $cmd 2>&1 | $JSON_TOOL_CMD | sed 's/[[:space:]]*$//') if [ "$OUTPUT" != "${pos_cmds_out[$cnt]}" ]; then log_note "Got :$OUTPUT" log_note "Expected:${pos_cmds_out[$cnt]}" log_fail "Unexpected channel program output"; fi cnt=$((cnt + 1)) done # 2. Using bad command line option (-Z) gives correct error output typeset -a neg_cmds=("-Z") typeset -a neg_cmds_out=( "invalid option 'Z' usage: program [-jn] [-t ] [-m ] [lua args...] For the property list, run: zfs set|get For the delegated permission list, run: zfs allow|unallow") cnt=0 for cmd in ${neg_cmds[@]}; do log_mustnot zfs program $cmd $TESTPOOL $TESTZCP $TESTDS 2>&1 log_mustnot zfs program -j $cmd $TESTPOOL $TESTZCP $TESTDS 2>&1 OUTPUT=$(zfs program -j $cmd $TESTPOOL $TESTZCP $TESTDS 2>&1) if [ "$OUTPUT" != "${neg_cmds_out[$cnt]}" ]; then log_note "Got :$OUTPUT" log_note "Expected:${neg_cmds_out[$cnt]}" log_fail "Unexpected channel program error output"; fi cnt=$((cnt + 1)) done log_pass "Channel programs output valid JSON" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030230 xustar000000000000000030 atime=1579730435.347330027 30 ctime=1579730477.417680798 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/Makefile.am0000644016037001603700000000023513607166133030225 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_program dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_program_json.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030043 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.410680574 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/setup.ksh0000755016037001603700000000173713607166133030053 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007313607166133030331 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730477.41368067 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/cleanup.ksh0000755016037001603700000000171013607166133030331 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143003030216 xustar000000000000000029 mtime=1579730435.38233115 30 atime=1579730455.047962555 30 ctime=1579730477.419680862 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_program/Makefile.in0000664016037001603700000005732013612143003030232 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_program DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_program ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_program_json.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_program/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_program/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_rollback0000644000000000000000000000013213612143055026226 xustar000000000000000030 mtime=1579730477.923697045 30 atime=1579730489.088055515 30 ctime=1579730477.923697045 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/0000775016037001603700000000000013612143055026307 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/zfs_rollback_001_0000644000000000000000000000007413607166133031433 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.911696661 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_001_pos.ksh0000755016037001603700000001107713607166133032747 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rollback/zfs_rollback_common.kshlib # # DESCRIPTION: # 'zfs rollback -r|-rf|-R|-Rf' will recursively destroy any snapshots # more recent than the one specified. # # STRATEGY: # 1. Create pool, fs & volume. # 2. Separately create three snapshots or clones for fs & volume # 3. Roll back to the second snapshot and check the results. # 4. Create the third snapshot or clones for fs & volume again. # 5. Roll back to the first snapshot and check the results. # 6. Separately create two snapshots for fs & volume. # 7. Roll back to the first snapshot and check the results. # verify_runnable "both" log_assert "'zfs rollback -r|-rf|-R|-Rf' will recursively destroy any " \ "snapshots more recent than the one specified." log_onexit cleanup_env # # Create suitable test environment and run 'zfs rollback', then compare with # expected value to check the system status. # # $1 option. # $2 the number of snapshots or clones. # $3 the number of snapshot point which we want to rollback. # function test_n_check #opt num_snap_clone num_rollback { typeset opt=$1 typeset -i cnt=$2 typeset -i pointcnt=$3 typeset dtst (( cnt > 3 || pointcnt > cnt )) && \ log_fail "Unsupported testing condition." # Clean up the test environment if pgrep -x dd 2>/dev/null; then pkill -x dd fi datasetexists $FS && log_must zfs destroy -Rf $FS if datasetexists $VOL; then if ismounted $TESTDIR1 $NEWFS_DEFAULT_FS; then log_must umount -f $TESTDIR1 fi log_must zfs destroy -Rf $VOL fi # Create specified test environment case $opt in *r*) setup_snap_env $cnt ;; *R*) setup_clone_env $cnt ;; esac all_snap="$TESTSNAP $TESTSNAP1 $TESTSNAP2" all_clone="$TESTCLONE $TESTCLONE1 $TESTCLONE2" typeset snap_point typeset exist_snap typeset exist_clone case $pointcnt in 1) snap_point=$TESTSNAP exist_snap=$TESTSNAP [[ $opt == *R* ]] && exist_clone=$TESTCLONE ;; 2) snap_point=$TESTSNAP1 exist_snap="$TESTSNAP $TESTSNAP1" [[ $opt == *R* ]] && exist_clone="$TESTCLONE $TESTCLONE1" ;; esac typeset snap for dtst in $FS $VOL; do # Volume is not available in Local Zone. if [[ $dtst == $VOL ]]; then if ! is_global_zone; then break fi fi if [[ $opt == *f* ]]; then # To write data to the mountpoint directory, write_mountpoint_dir $dtst opt=${opt%f} fi if [[ $dtst == $VOL ]]; then if ismounted $TESTDIR1 $NEWFS_DEFAULT_FS; then log_must umount -f $TESTDIR1 fi log_must zfs rollback $opt $dtst@$snap_point log_must mount \ $ZVOL_DEVDIR/$TESTPOOL/$TESTVOL $TESTDIR1 else log_must zfs rollback $opt $dtst@$snap_point fi for snap in $all_snap; do if [[ " $exist_snap " == *" $snap "* ]]; then log_must datasetexists $dtst@$snap else log_must datasetnonexists $dtst@$snap fi done for clone in $all_clone; do if [[ " $exist_clone " == *" $clone "* ]]; then log_must datasetexists $dtst$clone else log_must datasetnonexists $dtst$clone fi done check_files $dtst@$snap_point done } typeset opt for opt in "-r" "-rf" "-R" "-Rf"; do # # Currently, the test case was limited to create and rollback # in three snapshots # log_note "Create 3 snapshots, rollback to the 2nd snapshot " \ "using $opt." test_n_check "$opt" 3 2 log_note "Create 3 snapshots and rollback to the 1st snapshot " \ "using $opt." test_n_check "$opt" 3 1 log_note "Create 2 snapshots and rollback to the 1st snapshot " \ "using $opt." test_n_check "$opt" 2 1 done log_pass "'zfs rollback -r|-rf|-R|-Rf' recursively destroy any snapshots more "\ "recent than the one specified passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/zfs_rollback_004_0000644000000000000000000000007413607166133031436 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.918696885 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_004_neg.ksh0000755016037001603700000000506113607166133032716 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rollback/zfs_rollback_common.kshlib # # DESCRIPTION: # 'zfs rollback' should fail when passing invalid options, too many # arguments,non-snapshot datasets or missing datasets # # STRATEGY: # 1. Create an array of invalid options # 2. Execute 'zfs rollback' with invalid options, too many arguments # or missing datasets # 3. Verify 'zfs rollback' return with errors # verify_runnable "both" function cleanup { typeset ds for ds in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL; do if snapexists ${ds}@$TESTSNAP; then log_must zfs destroy ${ds}@$TESTSNAP fi done } log_assert "'zfs rollback' should fail with bad options,too many arguments," \ "non-snapshot datasets or missing datasets." log_onexit cleanup set -A badopts "r" "R" "f" "-F" "-rF" "-RF" "-fF" "-?" "-*" "-blah" "-1" "-2" for ds in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL; do log_must zfs snapshot ${ds}@$TESTSNAP done for ds in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL; do for opt in "" "-r" "-R" "-f" "-rR" "-rf" "-rRf"; do log_mustnot eval "zfs rollback $opt $ds >/dev/null 2>&1" log_mustnot eval "zfs rollback $opt ${ds}@$TESTSNAP \ ${ds}@$TESTSNAP >/dev/null 2>&1" log_mustnot eval "zfs rollback $opt >/dev/null 2>&1" # zfs rollback should fail with non-existen snapshot log_mustnot eval "zfs rollback $opt ${ds}@nosnap >/dev/null 2>&1" done for badopt in ${badopts[@]}; do log_mustnot eval "zfs rollback $badopt ${ds}@$TESTSNAP \ >/dev/null 2>&1" done done log_pass "'zfs rollback' fails as expected with illegal arguments." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/zfs_rollback.cfg0000644000000000000000000000007413607166133031452 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.902696371 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback.cfg0000644016037001603700000000253513607166133031454 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib export FS=$TESTPOOL/$TESTFS export VOL=$TESTPOOL/$TESTVOL export FSSNAP0=$FS@$TESTSNAP export FSSNAP1=$FS@$TESTSNAP1 export FSSNAP2=$FS@$TESTSNAP2 export VOLSNAP0=$VOL@$TESTSNAP export VOLSNAP1=$VOL@$TESTSNAP1 export VOLSNAP2=$VOL@$TESTSNAP2 export FSCLONE0=$FS$TESTCLONE export FSCLONE1=$FS$TESTCLONE1 export FSCLONE2=$FS$TESTCLONE2 export VOLCLONE0=$VOL$TESTCLONE export VOLCLONE1=$VOL$TESTCLONE1 export VOLCLONE2=$VOL$TESTCLONE2 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/zfs_rollback_003_0000644000000000000000000000007413607166133031435 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.916696821 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_003_neg.ksh0000755016037001603700000000457113607166133032722 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rollback/zfs_rollback_common.kshlib # # DESCRIPTION: # Separately verify 'zfs rollback ''|-f|-r|-rf|-R|-rR will fail in # different conditions. # # STRATEGY: # 1. Create pool and file system # 2. Create 'snap' and 'snap1' of this file system. # 3. Run 'zfs rollback ""|-f ' and it should fail. # 4. Create 'clone1' based on 'snap1'. # 5. Run 'zfs rollback -r|-rf ' and it should fail. # verify_runnable "both" function cleanup { pkill ${DD##*/} for snap in $FSSNAP0 $FSSNAP1 $FSSNAP2; do if snapexists $snap; then log_must zfs destroy -Rf $snap fi done } log_assert "Separately verify 'zfs rollback ''|-f|-r|-rf will fail in " \ "different conditions." log_onexit cleanup # Create snapshot1 and snapshot2 for this file system. # create_snapshot $TESTPOOL/$TESTFS $TESTSNAP create_snapshot $TESTPOOL/$TESTFS $TESTSNAP1 # Run 'zfs rollback ""|-f ' and it should fail. # log_mustnot zfs rollback $TESTPOOL/$TESTFS@$TESTSNAP log_mustnot zfs rollback -f $TESTPOOL/$TESTFS@$TESTSNAP # Create 'clone1' based on 'snap1'. # create_clone $TESTPOOL/$TESTFS@$TESTSNAP1 $TESTPOOL/$TESTCLONE1 # Run 'zfs rollback -r|-rf ' and it should fail. # log_mustnot zfs rollback -r $TESTPOOL/$TESTFS@$TESTSNAP log_mustnot zfs rollback -rf $TESTPOOL/$TESTFS@$TESTSNAP log_pass "zfs rollback ''|-f|-r|-rf will fail in different conditions " \ "passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030352 xustar000000000000000030 atime=1579730435.715341842 30 ctime=1579730477.920696949 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/Makefile.am0000644016037001603700000000047513607166133030355 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_rollback dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_rollback_001_pos.ksh \ zfs_rollback_002_pos.ksh \ zfs_rollback_003_neg.ksh \ zfs_rollback_004_neg.ksh dist_pkgdata_DATA = \ zfs_rollback.cfg \ zfs_rollback_common.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030165 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.907696533 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/setup.ksh0000755016037001603700000000174513607166133030174 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030454 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.909696597 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/cleanup.ksh0000755016037001603700000000200113607166133030445 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/tests/functional/cli_root/zfs_rollback/zfs_rollback_common.kshlib cleanup_env default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/zfs_rollback_comm0000644000000000000000000000007413612141513031716 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.904696435 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_common.kshlib0000644016037001603700000001526513612141513033534 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rollback/zfs_rollback.cfg # Get file sum # # $1 full file name function getsum #fname { (( ${#1} == 0 )) && \ log_fail "Need give file name." return $(sum $1 | awk '{print $1}') } # Define global variable checksum, get the original file sum. # origsum=$(getsum /etc/passwd) # # Setup or recover the test environment. Firstly, copy /etc/passwd to ZFS file # system or volume, then make a snapshot or clone. Repeat up to three times. # # $1 number of snapshot. Note: Currently only support three snapshots. # $2 indicate if it is necessary to create clone # function setup_snap_env { typeset -i cnt=${1:-3} typeset createclone=${2:-"false"} if datasetnonexists $FS; then log_must zfs create $FS log_must zfs set mountpoint=$TESTDIR $FS fi # Volume can't be created in Local Zone. if datasetnonexists $VOL && is_global_zone; then log_must zfs create -V $VOLSIZE $VOL block_device_wait fi # Make sure $VOL is volume typeset type=$(get_prop type $VOL) if datasetexists $VOL && \ [[ $type == 'volume' ]]; then # # At the first time, Make a UFS file system in volume and # mount it. Otherwise, only check if this ufs|ext file system # was mounted. # log_must eval "echo "y" | \ newfs -v $ZVOL_DEVDIR/$VOL > /dev/null 2>&1" [[ ! -d $TESTDIR1 ]] && log_must mkdir $TESTDIR1 # Make sure the ufs|ext filesystem hasn't been mounted, # then mount the new ufs|ext filesystem. if ! ismounted $TESTDIR1 $NEWFS_DEFAULT_FS; then log_must mount \ $ZVOL_DEVDIR/$TESTPOOL/$TESTVOL $TESTDIR1 fi fi # Separately Create three snapshots for file system & volume typeset -i ind=0 typeset dtst for dtst in $FS $VOL; do # Volume can be created in Local Zone. if [[ $dtst == $VOL ]]; then if ! is_global_zone; then break fi fi ind=0 while (( ind < cnt )); do case $dtst in $FS) eval typeset snap=\$FSSNAP$ind eval typeset clone=\$FSCLONE$ind eval typeset fname=\$TESTDIR/\$TESTFILE$ind ;; $VOL) eval typeset snap=\$VOLSNAP$ind eval typeset clone=\$VOLCLONE$ind eval typeset fname=\$TESTDIR1/\$TESTFILE$ind ;; esac if datasetnonexists $snap; then log_must cp /etc/passwd $fname if is_linux; then log_must sync else # # using 'lockfs -f' to flush the writes # to disk before taking a snapshot. # if [[ $dtst == $VOL ]]; then log_must lockfs -f $TESTDIR1 fi fi log_must zfs snapshot $snap fi if [[ $createclone == "true" ]]; then if datasetnonexists $clone; then log_must zfs clone $snap $clone block_device_wait fi fi (( ind += 1 )) done done } function setup_clone_env { setup_snap_env $1 "true" } # # Clean up the test environment # # $1 number of snapshot Note: Currently only support three snapshots. # function cleanup_env { typeset -i cnt=${1:-3} typeset -i ind=0 typeset dtst typeset snap pkill -x dd if ismounted $TESTDIR1 $NEWFS_DEFAULT_FS; then log_must umount -f $TESTDIR1 fi [[ -d $TESTDIR ]] && log_must rm -rf $TESTDIR/* [[ -d $TESTDIR1 ]] && log_must rm -rf $TESTDIR1/* for dtst in $FS $VOL; do for snap in $TESTSNAP $TESTSNAP1 $TESTSNAP2; do if snapexists $dtst@$snap; then log_must zfs destroy -Rf $dtst@$snap fi done done # Restore original test environment if datasetnonexists $FS ; then log_must zfs create $FS fi if datasetnonexists $VOL ; then if is_global_zone ; then log_must zfs create -V $VOLSIZE $VOL else log_must zfs create $VOL fi fi } # # check if the specified files have specified status. # # $1 expected status # $2-n full file name # If it is true return 0, else return 1 # function file_status { (( $# == 0 )) && \ log_fail "The file name is not defined." typeset opt case $1 in exist) opt="-e" ;; nonexist) opt="! -e" ;; *) log_fail "Unsupported file status." ;; esac shift while (( $# > 0 )); do eval [[ $opt $1 ]] || return 1 shift done return 0 } function files_exist { file_status "exist" $@ } function files_nonexist { file_status "nonexist" $@ } # # According to snapshot check if the file system was recovered to the right # point. # # $1 snapshot. fs@snap or vol@snap # function check_files { typeset dtst=$1 if [[ $(get_prop type $dtst) != snapshot ]]; then log_fail "Parameter must be a snapshot." fi typeset fsvol=${dtst%%@*} typeset snap=${dtst##*@} if [[ $(get_prop type $fsvol) == "filesystem" ]]; then ind="" else ind="1" fi eval typeset file0=\$TESTDIR$ind/\$TESTFILE0 eval typeset file1=\$TESTDIR$ind/\$TESTFILE1 eval typeset file2=\$TESTDIR$ind/\$TESTFILE2 case $snap in $TESTSNAP2) log_must files_exist $file0 $file1 $file2 typeset sum0=$(getsum $file0) typeset sum1=$(getsum $file1) typeset sum2=$(getsum $file2) if [[ $sum0 != $origsum || \ $sum1 != $origsum || sum2 != $origsum ]] then log_fail "After rollback, file sum is changed." fi ;; $TESTSNAP1) log_must files_exist $file0 $file1 log_must files_nonexist $file2 typeset sum0=$(getsum $file0) typeset sum1=$(getsum $file1) if [[ $sum0 != $origsum || $sum1 != $origsum ]] then log_fail "After rollback, file sum is changed." fi ;; $TESTSNAP) log_must files_exist $file0 log_must files_nonexist $file1 $file2 typeset sum0=$(getsum $file0) if [[ $sum0 != $origsum ]]; then log_fail "After rollback, file sum is changed." fi ;; esac } # According to dataset type, write file to different directories. # # $1 dataset # function write_mountpoint_dir { typeset dtst=$1 typeset dir if [[ $dtst == $FS ]]; then dir=$TESTDIR log_must ismounted $dir else dir=$TESTDIR1 log_must ismounted $dir $NEWFS_DEFAULT_FS fi dd if=/dev/urandom of=$dir/$TESTFILE1 & log_must sleep 3 } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003030341 xustar000000000000000030 mtime=1579730435.753343064 30 atime=1579730455.260969395 30 ctime=1579730477.923697045 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/Makefile.in0000664016037001603700000006157613612143003030364 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_rollback DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_rollback ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_rollback_001_pos.ksh \ zfs_rollback_002_pos.ksh \ zfs_rollback_003_neg.ksh \ zfs_rollback_004_neg.ksh dist_pkgdata_DATA = \ zfs_rollback.cfg \ zfs_rollback_common.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_rollback/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_rollback/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/PaxHeaders.151519/zfs_rollback_002_0000644000000000000000000000007413607166133031434 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.913696725 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_002_pos.ksh0000755016037001603700000000354113607166133032745 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rollback/zfs_rollback_common.kshlib # # DESCRIPTION: # 'zfs rollback -f' will force unmount any filesystems. # # STRATEGY: # 1. Create pool & fs. # 2. Create the snapshot of this file system. # 3. Write the mountpoint directory of this file system. # 4. Make sure 'zfs rollback -f' succeeds. # verify_runnable "both" log_assert "'zfs rollback -f' will force unmount any filesystems." log_onexit cleanup_env # Create a snapshot of this file system: FSSNAP0 setup_snap_env 1 # # Write file and make the mountpoint directory busy when try to unmount # the file system that was mounted on it. # write_mountpoint_dir ${FSSNAP0%%@*} log_must zfs rollback $FSSNAP0 log_must zfs rollback -f $FSSNAP0 log_must datasetexists $FSSNAP0 pkill ${DD##*/} check_files $FSSNAP0 log_pass "'zfs rollback -f' force unmount any filesystem passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_destroy0000644000000000000000000000013213612143057026471 xustar000000000000000030 mtime=1579730479.052733298 30 atime=1579730489.088055515 30 ctime=1579730479.052733298 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/0000775016037001603700000000000013612143057026552 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/PaxHeaders.151519/zpool_destroy_000000644000000000000000000000007413607166133031715 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.045733072 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/zpool_destroy_002_pos.ksh0000755016037001603700000000616213607166133033451 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_destroy/zpool_destroy.cfg # # DESCRIPTION: # 'zpool destroy -f ' can forcely destroy the specified pool. # # STRATEGY: # 1. Create a storage pool # 2. Create some datasets within the pool # 3. Change directory to any mountpoint of these datasets, # Verify 'zpool destroy' without '-f' will fail. # 4. 'zpool destroy -f' the pool # 5. Verify the pool is destroyed successfully # verify_runnable "global" function cleanup { [[ -n $cwd ]] && log_must cd $cwd if [[ -d $TESTDIR ]]; then ismounted $TESTDIR && log_must umount $TESTDIR log_must rm -rf $TESTDIR fi typeset -i i=0 while (( $i < ${#datasets[*]} )); do datasetexists ${datasets[i]} && \ log_must zfs destroy ${datasets[i]} (( i = i + 1 )) done poolexists $TESTPOOL && destroy_pool $TESTPOOL } set -A datasets "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTVOL" \ log_assert "'zpool destroy -f ' can forcely destroy the specified pool" log_onexit cleanup typeset cwd="" create_pool "$TESTPOOL" "$DISK" log_must zfs create $TESTPOOL/$TESTFS log_must mkdir -p $TESTDIR log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTCTR log_must zfs create $TESTPOOL/$TESTCTR/$TESTFS1 log_must zfs create -V $VOLSIZE $TESTPOOL/$TESTVOL typeset -i i=0 while (( $i < ${#datasets[*]} )); do datasetexists "${datasets[i]}" || \ log_fail "Create datasets fail." ((i = i + 1)) done cwd=$PWD log_note "'zpool destroy' without '-f' will fail " \ "while pool is busy." for dir in $TESTDIR /$TESTPOOL/$TESTCTR /$TESTPOOL/$TESTCTR/$TESTFS1 ; do log_must cd $dir log_mustnot zpool destroy $TESTPOOL # Need mount here, otherwise some dataset may be unmounted. log_must zfs mount -a i=0 while (( i < ${#datasets[*]} )); do datasetexists "${datasets[i]}" || \ log_fail "Dataset ${datasets[i]} removed unexpected." ((i = i + 1)) done done # 4. 'zpool destroy -f' the pool (unsupported behavior in Linux) if is_linux; then log_must cd $cwd fi destroy_pool $TESTPOOL log_mustnot poolexists "$TESTPOOL" log_pass "'zpool destroy -f ' success." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030613 xustar000000000000000030 atime=1579730436.521367721 30 ctime=1579730479.050733233 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/Makefile.am0000644016037001603700000000035413607166133030612 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_destroy dist_pkgdata_SCRIPTS = \ zpool_destroy_001_pos.ksh \ zpool_destroy_002_pos.ksh \ zpool_destroy_003_neg.ksh dist_pkgdata_DATA = \ zpool_destroy.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/PaxHeaders.151519/zpool_destroy.cf0000644000000000000000000000007413607166133032005 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.040732912 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/zpool_destroy.cfg0000644016037001603700000000234013607166133032150 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export DISK=${DISKS%% *} export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') export DISKSARRAY=$DISKS if is_linux; then set_device_dir set_slice_prefix export SLICE0=1 export SLICE1=2 else export SLICE_PREFIX="s" export SLICE0=0 export SLICE1=1 fi export SLICE_SIZE=500m zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/PaxHeaders.151519/zpool_destroy_000000644000000000000000000000007413607166133031715 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.047733136 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/zpool_destroy_003_neg.ksh0000755016037001603700000000313613607166133033420 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zpool destroy' should return an error with badly formed parameters, # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute 'zpool destroy' # 3. Verify an error is returned. # verify_runnable "global" set -A args "" "-f" "-? $TESTPOOL" "nonexistent_pool" \ "$TESTPOOL abcd" "abcd $TESTPOOL" log_assert "'zpool destroy' should return an error with badly-formed parameters." typeset -i i=0 while (( $i < ${#args[*]} )); do log_mustnot zpool destroy ${args[i]} ((i = i + 1)) done log_pass "'zpool destroy' badly formed parameters fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030603 xustar000000000000000030 mtime=1579730436.558368911 30 atime=1579730455.684983009 30 ctime=1579730479.052733298 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/Makefile.in0000664016037001603700000006146013612143004030616 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_destroy DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_destroy ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ zpool_destroy_001_pos.ksh \ zpool_destroy_002_pos.ksh \ zpool_destroy_003_neg.ksh dist_pkgdata_DATA = \ zpool_destroy.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_destroy/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_destroy/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/PaxHeaders.151519/zpool_destroy_000000644000000000000000000000007413607166133031715 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.043733008 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_destroy/zpool_destroy_001_pos.ksh0000755016037001603700000000447013607166133033450 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_destroy/zpool_destroy.cfg # # DESCRIPTION: # 'zpool destroy ' can successfully destroy the specified pool. # # STRATEGY: # 1. Create a storage pool # 2. Destroy the pool # 3. Verify the is destroyed successfully # verify_runnable "global" function cleanup { poolexists $TESTPOOL2 && destroy_pool $TESTPOOL2 datasetexists $TESTPOOL1/$TESTVOL && \ log_must zfs destroy -f $TESTPOOL1/$TESTVOL typeset pool for pool in $TESTPOOL1 $TESTPOOL; do poolexists $pool && destroy_pool $pool done zero_partitions $DISK } set -A datasets "$TESTPOOL" "$TESTPOOL2" if ! $(is_physical_device $DISKS) ; then log_unsupported "This case cannot be run on raw files." fi log_assert "'zpool destroy ' can destroy a specified pool." log_onexit cleanup partition_disk $SLICE_SIZE $DISK 2 create_pool "$TESTPOOL" "${DISK}${SLICE_PREFIX}${SLICE0}" create_pool "$TESTPOOL1" "${DISK}${SLICE_PREFIX}${SLICE1}" log_must zfs create -s -V $VOLSIZE $TESTPOOL1/$TESTVOL block_device_wait create_pool "$TESTPOOL2" "${ZVOL_DEVDIR}/$TESTPOOL1/$TESTVOL" typeset -i i=0 while (( i < ${#datasets[*]} )); do log_must poolexists "${datasets[i]}" log_must zpool destroy "${datasets[i]}" log_mustnot poolexists "${datasets[i]}" ((i = i + 1)) done log_pass "'zpool destroy ' executes successfully" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_trim0000644000000000000000000000013213612143060025745 xustar000000000000000030 mtime=1579730480.550781397 30 atime=1579730489.088055515 30 ctime=1579730480.550781397 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/0000775016037001603700000000000013612143060026026 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_neg.ksh0000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.516780305 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_neg.ksh0000755016037001603700000000256513607166133031607 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # A badly formed parameter passed to 'zpool trim' should # return an error. # # STRATEGY: # 1. Create an array containing bad 'zpool trim' parameters. # 2. For each element, execute the sub-command. # 3. Verify it returns an error. # DISK1=${DISKS%% *} DISK2="$(echo $DISKS | cut -d' ' -f2)" verify_runnable "global" set -A args "1" "-a" "-?" "--%" "-123456" "0.5" "-o" "-b" "-b no" "-z 2" log_assert "Execute 'zpool trim' using invalid parameters." log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2 typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool trim ${args[i]} $TESTPOOL ((i = i + 1)) done log_pass "Invalid parameters to 'zpool trim' fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim.kshlib0000644000000000000000000000007413607166133031435 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.502779855 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib0000644016037001603700000000174213607166133031436 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # Copyright (c) 2019 by Lawrence Livermore National Security, LLC. # function trim_prog_line # pool disk { typeset pool="$1" typeset disk="$2" zpool status -t "$pool" | grep "$disk" | grep "[[:digit:]]* trimmed" } function trim_progress # pool disk { trim_prog_line "$1" "$2" | sed 's/.*(\([0-9]\{1,\}\)% trimmed.*/\1/g' } function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if poolexists $TESTPOOL1; then destroy_pool $TESTPOOL1 fi } log_onexit cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_start_an0000644000000000000000000000007413607166133032055 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.534780883 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_start_and_cancel_neg.ksh0000755016037001603700000000310013607166133035135 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Cancelling and suspending trim doesn't work if not all specified vdevs # are being trimmed. # # STRATEGY: # 1. Create a three-disk pool. # 2. Start trimming and verify that trimming is active. # 3. Try to cancel and suspend trimming on the non-trimming disks. # 4. Try to re-trim the currently trimming disk. # DISK1=${DISKS%% *} DISK2="$(echo $DISKS | cut -d' ' -f2)" DISK3="$(echo $DISKS | cut -d' ' -f3)" log_must zpool list -v log_must zpool create -f $TESTPOOL $DISK1 $DISK2 $DISK3 log_must zpool trim -r 128M $TESTPOOL $DISK1 [[ -z "$(trim_progress $TESTPOOL $DISK1)" ]] && \ log_fail "Trim did not start" log_mustnot zpool trim -c $TESTPOOL $DISK2 log_mustnot zpool trim -c $TESTPOOL $DISK2 $DISK3 log_mustnot zpool trim -s $TESTPOOL $DISK2 log_mustnot zpool trim -s $TESTPOOL $DISK2 $DISK3 log_mustnot zpool trim $TESTPOOL $DISK1 log_pass "Nonsensical trim operations fail" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_start_an0000644000000000000000000000007413607166133032055 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.537780979 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_start_and_cancel_pos.ksh0000755016037001603700000000244413607166133035177 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib # # DESCRIPTION: # Starting and stopping an initialize works. # # STRATEGY: # 1. Create a one-disk pool. # 2. Start initializing and verify that initializing is active. # 3. Cancel initializing and verify that initializing is not active. # DISK1=${DISKS%% *} log_must zpool create -f $TESTPOOL $DISK1 log_must zpool initialize $TESTPOOL [[ -z "$(initialize_progress $TESTPOOL $DISK1)" ]] && \ log_fail "Initialize did not start" log_must zpool initialize -c $TESTPOOL [[ -z "$(initialize_progress $TESTPOOL $DISK1)" ]] || \ log_fail "Initialize did not stop" log_pass "Initialize start + cancel works" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_attach_d0000644000000000000000000000025413607166133032011 xustar0000000000000000112 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_attach_detach_add_remove.ksh 30 atime=1579730360.849765597 30 ctime=1579730480.509780081 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_attach_detach_add_remove.k0000755016037001603700000000400013607166133035426 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Detaching/attaching, adding/removing data devices works with trimming. # # STRATEGY: # 1. Create a single-disk pool. # 2. Start trimming. # 3. Attach a second disk, ensure trimming continues. # 4. Detach the second disk, ensure trimming continues. # 5. Add a second disk, ensure trimming continues. # 6. Remove the first disk, ensure trimming stops. # DISK1="$(echo $DISKS | cut -d' ' -f1)" DISK2="$(echo $DISKS | cut -d' ' -f2)" log_must zpool create -f $TESTPOOL $DISK1 log_must zpool trim -r 128M $TESTPOOL $DISK1 progress="$(trim_progress $TESTPOOL $DISK1)" [[ -z "$progress" ]] && log_fail "Trim did not start" log_must zpool attach $TESTPOOL $DISK1 $DISK2 new_progress="$(trim_progress $TESTPOOL $DISK1)" [[ "$progress" -le "$new_progress" ]] || \ log_fail "Lost trimming progress on demotion to child vdev" progress="$new_progress" log_must zpool detach $TESTPOOL $DISK2 new_progress="$(trim_progress $TESTPOOL $DISK1)" [[ "$progress" -le "$new_progress" ]] || \ log_fail "Lost trimming progress on promotion to top vdev" progress="$new_progress" log_must zpool add $TESTPOOL $DISK2 log_must zpool remove $TESTPOOL $DISK1 [[ -z "$(trim_prog_line $TESTPOOL $DISK1)" ]] || \ log_fail "Trimming continued after initiating removal" log_pass "Trimming worked as expected across attach/detach and add/remove" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030075 xustar000000000000000030 atime=1579730437.699405544 30 ctime=1579730480.548781333 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile.am0000644016037001603700000000131613607166133030073 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_trim dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_trim_attach_detach_add_remove.ksh \ zpool_trim_import_export.ksh \ zpool_trim_multiple.ksh \ zpool_trim_neg.ksh \ zpool_trim_offline_export_import_online.ksh \ zpool_trim_online_offline.ksh \ zpool_trim_partial.ksh \ zpool_trim_rate.ksh \ zpool_trim_rate_neg.ksh \ zpool_trim_secure.ksh \ zpool_trim_split.ksh \ zpool_trim_start_and_cancel_neg.ksh \ zpool_trim_start_and_cancel_pos.ksh \ zpool_trim_suspend_resume.ksh \ zpool_trim_unsupported_vdevs.ksh \ zpool_trim_verify_checksums.ksh \ zpool_trim_verify_trimmed.ksh dist_pkgdata_DATA = \ zpool_trim.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_suspend_0000644000000000000000000000007413607166133032062 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.539781043 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_suspend_resume.ksh0000755016037001603700000000372713607166133034100 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Suspending and resuming trimming works. # # STRATEGY: # 1. Create a one-disk pool. # 2. Start trimming and verify that trimming is active. # 3. Wait 3 seconds, then suspend trimming and verify that the progress # reporting says so. # 4. Wait 3 seconds and ensure trimming progress doesn't advance. # 5. Restart trimming and verify that the progress doesn't regress. # function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d "$TESTDIR" ]]; then rm -rf "$TESTDIR" fi } LARGEFILE="$TESTDIR/largefile" log_must mkdir "$TESTDIR" log_must truncate -s 10G "$LARGEFILE" log_must zpool create -f $TESTPOOL $LARGEFILE log_must zpool trim -r 256M $TESTPOOL sleep 2 [[ -z "$(trim_progress $TESTPOOL $LARGEFILE)" ]] && \ log_fail "Trimming did not start" sleep 3 log_must zpool trim -s $TESTPOOL log_must eval "trim_prog_line $TESTPOOL $LARGEFILE | grep suspended" progress="$(trim_progress $TESTPOOL $LARGEFILE)" sleep 3 [[ "$progress" -eq "$(trim_progress $TESTPOOL $LARGEFILE)" ]] || \ log_fail "Trimming progress advanced while suspended" log_must zpool trim $TESTPOOL $LARGEFILE [[ "$progress" -le "$(trim_progress $TESTPOOL $LARGEFILE)" ]] || log_fail "Trimming progress regressed after resuming" log_pass "Suspend + resume trimming works as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/setup.ksh0000644000000000000000000000007313607166147027714 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730480.50477992 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/setup.ksh0000755016037001603700000000162213607166147027716 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" DISK1=${DISKS%% *} typeset -i max_discard=0 if [[ -b $DEV_RDSKDIR/$DISK1 ]]; then max_discard=$(lsblk -Dbn $DEV_RDSKDIR/$DISK1 | awk '{ print $4; exit }') fi if test $max_discard -eq 0; then log_unsupported "DISKS do not support discard (TRIM/UNMAP)" fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030177 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.506779985 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/cleanup.ksh0000755016037001603700000000141413607166133030177 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if poolexists $TESTPOOL1; then destroy_pool $TESTPOOL1 fi default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_secure.k0000644000000000000000000000007413607166133031761 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.530780755 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_secure.ksh0000755016037001603700000000302513607166133032314 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Verify 'zpool trim -d' secure trim. # # STRATEGY: # 1. Create a pool on a single file vdev. # 2. Run 'zpool trim -d' to securely TRIM allocated space maps. # 3. Verify it fails when using a file vdev. # # NOTE: Currently secure discard cannot be verified using file vdevs, # loopback, or scsi_debug devices. None of which support the feature. # It can only be tested using real SSDs which provide support. # function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d "$TESTDIR" ]]; then rm -rf "$TESTDIR" fi } log_onexit cleanup LARGESIZE=$((MINVDEVSIZE * 4)) LARGEFILE="$TESTDIR/largefile" log_must mkdir "$TESTDIR" log_must truncate -s $LARGESIZE "$LARGEFILE" log_must zpool create $TESTPOOL "$LARGEFILE" log_mustnot zpool trim -d $TESTPOOL log_pass "Manual 'zpool trim -d' failed as expected for file vdevs" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_partial.0000644000000000000000000000007413607166133031754 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.523780529 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_partial.ksh0000755016037001603700000000717013607166133032467 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Verify 'zpool trim' partial trim. # # STRATEGY: # 1. Create a pool on a single disk and mostly fill it. # 2. Expand the pool to create new unallocated metaslabs. # 3. Run 'zpool trim' to only TRIM allocated space maps. # 4. Verify the disk is least 90% of its original size. # 5. Run 'zpool trim' to perform a full TRIM. # 6. Verify the disk is less than 10% of its original size. function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d "$TESTDIR" ]]; then rm -rf "$TESTDIR" fi log_must set_tunable64 zfs_trim_metaslab_skip 0 log_must set_tunable64 zfs_trim_extent_bytes_min $trim_extent_bytes_min log_must set_tunable64 zfs_vdev_min_ms_count $vdev_min_ms_count } log_onexit cleanup LARGESIZE=$((MINVDEVSIZE * 4)) LARGEFILE="$TESTDIR/largefile" # The minimum number of metaslabs is increased in order to simulate the # behavior of partial trimming on a more typically sized 1TB disk. typeset vdev_min_ms_count=$(get_tunable zfs_vdev_min_ms_count) log_must set_tunable64 zfs_vdev_min_ms_count 64 # Minimum trim size is decreased to verify all trim sizes. typeset trim_extent_bytes_min=$(get_tunable zfs_trim_extent_bytes_min) log_must set_tunable64 zfs_trim_extent_bytes_min 4096 log_must mkdir "$TESTDIR" log_must truncate -s $LARGESIZE "$LARGEFILE" log_must zpool create $TESTPOOL "$LARGEFILE" log_must mkfile $(( floor(LARGESIZE * 0.80) )) /$TESTPOOL/file log_must zpool sync new_size=$(du -B1 "$LARGEFILE" | cut -f1) log_must test $new_size -le $LARGESIZE log_must test $new_size -gt $(( floor(LARGESIZE * 0.70) )) # Expand the pool to create new unallocated metaslabs. log_must zpool export $TESTPOOL log_must dd if=/dev/urandom of=$LARGEFILE conv=notrunc,nocreat \ seek=$((LARGESIZE / (1024 * 1024))) bs=$((1024 * 1024)) \ count=$((3 * LARGESIZE / (1024 * 1024))) log_must zpool import -d $TESTDIR $TESTPOOL log_must zpool online -e $TESTPOOL "$LARGEFILE" new_size=$(du -B1 "$LARGEFILE" | cut -f1) log_must test $new_size -gt $((4 * floor(LARGESIZE * 0.70) )) # Perform a partial trim, we expect it to skip most of the new metaslabs # which have never been used and therefore do not need be trimmed. log_must set_tunable64 zfs_trim_metaslab_skip 1 log_must zpool trim $TESTPOOL log_must set_tunable64 zfs_trim_metaslab_skip 0 log_must zpool sync while [[ "$(trim_progress $TESTPOOL $LARGEFILE)" -lt "100" ]]; do sleep 0.5 done new_size=$(du -B1 "$LARGEFILE" | cut -f1) log_must test $new_size -gt $LARGESIZE # Perform a full trim, all metaslabs will be trimmed the pool vdev # size will be reduced but not down to its original size due to the # space usage of the new metaslabs. log_must zpool trim $TESTPOOL log_must zpool sync while [[ "$(trim_progress $TESTPOOL $LARGEFILE)" -lt "100" ]]; do sleep 0.5 done new_size=$(du -B1 "$LARGEFILE" | cut -f1) log_must test $new_size -le $(( 2 * LARGESIZE)) log_must test $new_size -gt $(( floor(LARGESIZE * 0.70) )) log_pass "Manual 'zpool trim' successfully partially trimmed pool" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_rate_neg0000644000000000000000000000007413607166133032026 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.527780659 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_rate_neg.ksh0000755016037001603700000000256013607166133032615 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # A badly formed parameter passed to 'zpool trim -r' should # return an error. # # STRATEGY: # 1. Create an array containing bad 'zpool trim -r' parameters. # 2. For each element, execute the sub-command. # 3. Verify it returns an error. # DISK1=${DISKS%% *} DISK2="$(echo $DISKS | cut -d' ' -f2)" verify_runnable "global" set -A args "a" "--%" "10X" "yes" "-?" "z 99" log_assert "Execute 'zpool trim -r' using invalid parameters." log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2 typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool trim -r ${args[i]} $TESTPOOL ((i = i + 1)) done log_pass "Invalid parameters to 'zpool trim -r' fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_unsuppor0000644000000000000000000000007413607166133032135 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.541781108 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_unsupported_vdevs.ksh0000755016037001603700000000333113607166133034625 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Attempting to trim unsupported vdevs should fail. # # STRATEGY: # 1. Create a pool with the following configuration: # root # mirror # vdev0 # vdev1 (offline) # cache # vdev2 # spare # vdev3 # 2. Try to trim vdev1, vdev2, and vdev3. Ensure that all 3 fail. # function cleanup { if datasetexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d $TESTDIR ]]; then log_must rm -rf $TESTDIR fi } log_onexit cleanup log_must mkdir $TESTDIR set -A FDISKS for n in {0..2}; do log_must mkfile $MINVDEVSIZE $TESTDIR/vdev$n FDISKS+=("$TESTDIR/vdev$n") done FDISKS+=("${DISKS%% *}") log_must zpool create $TESTPOOL mirror ${FDISKS[0]} ${FDISKS[1]} \ spare ${FDISKS[2]} cache ${FDISKS[3]} log_must zpool offline $TESTPOOL ${FDISKS[1]} log_mustnot zpool trim $TESTPOOL mirror-0 for n in {1..3}; do log_mustnot zpool trim $TESTPOOL ${FDISKS[$n]} done log_pass "Attempting to trim failed on unsupported devices" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_online_o0000644000000000000000000000007413607166133032044 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.520780433 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_online_offline.ksh0000755016037001603700000000435313607166133034021 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Trimming automatically resumes across offline/online. # # STRATEGY: # 1. Create a pool with a two-way mirror. # 2. Start trimming one of the disks and verify that trimming is active. # 3. Offline the disk. # 4. Online the disk. # 5. Verify that trimming resumes and progress does not regress. # 6. Suspend trimming. # 7. Repeat steps 3-4 and verify that trimming does not resume. # DISK1=${DISKS%% *} DISK2="$(echo $DISKS | cut -d' ' -f2)" log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2 log_must zpool trim -r 128M $TESTPOOL $DISK1 log_must zpool offline $TESTPOOL $DISK1 progress="$(trim_progress $TESTPOOL $DISK1)" [[ -z "$progress" ]] && log_fail "Trimming did not start" log_must zpool online $TESTPOOL $DISK1 new_progress="$(trim_progress $TESTPOOL $DISK1)" [[ -z "$new_progress" ]] && \ log_fail "Trimming did not restart after onlining" [[ "$progress" -le "$new_progress" ]] || \ log_fail "Trimming lost progress after onlining" log_mustnot eval "trim_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool trim -s $TESTPOOL $DISK1 action_date="$(trim_prog_line $TESTPOOL $DISK1 | \ sed 's/.*ed at \(.*\)).*/\1/g')" log_must zpool offline $TESTPOOL $DISK1 log_must zpool online $TESTPOOL $DISK1 new_action_date=$(trim_prog_line $TESTPOOL $DISK1 | \ sed 's/.*ed at \(.*\)).*/\1/g') [[ "$action_date" != "$new_action_date" ]] && \ log_fail "Trimming action date did not persist across offline/online" log_must eval "trim_prog_line $TESTPOOL $DISK1 | grep suspended" log_pass "Trimming performs as expected across offline/online" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_multiple0000644000000000000000000000007413607166133032075 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.514780241 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_multiple.ksh0000755016037001603700000000350213607166133032661 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Trimming can be performed multiple times # # STRATEGY: # 1. Create a pool with a single disk. # 2. Trim the entire pool. # 3. Verify trimming is reset (status, offset, and action date). # 4. Repeat steps 2 and 3 with the existing pool. # DISK1=${DISKS%% *} log_must zpool create -f $TESTPOOL $DISK1 typeset action_date="none" for n in {1..3}; do log_must zpool trim -r 2G $TESTPOOL log_mustnot eval "trim_prog_line $TESTPOOL $DISK1 | grep complete" [[ "$(trim_progress $TESTPOOL $DISK1)" -lt "100" ]] || log_fail "Trimming progress wasn't reset" new_action_date="$(trim_prog_line $TESTPOOL $DISK1 | \ sed 's/.*ed at \(.*\)).*/\1/g')" [[ "$action_date" != "$new_action_date" ]] || log_fail "Trimming action date wasn't reset" action_date=$new_action_date while [[ "$(trim_progress $TESTPOOL $DISK1)" -lt "100" ]]; do progress="$(trim_progress $TESTPOOL $DISK1)" sleep 0.5 [[ "$progress" -le "$(trim_progress $TESTPOOL $DISK1)" ]] || log_fail "Trimming progress regressed" done log_must eval "trim_prog_line $TESTPOOL $DISK1 | grep complete" sleep 1 done log_pass "Trimming multiple times performs as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_import_e0000644000000000000000000000007413607166133032060 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.511780145 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_import_export.ksh0000755016037001603700000000503413607166133033743 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Trimming automatically resumes across import/export. # # STRATEGY: # 1. Create a one-disk pool. # 2. Start trimming and verify that trimming is active. # 3. Export the pool. # 4. Import the pool. # 5. Verify that trimming resumes and progress does not regress. # 6. Suspend trimming. # 7. Repeat steps 3-4. # 8. Verify that progress does not regress but trimming is still suspended. # function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d "$TESTDIR" ]]; then rm -rf "$TESTDIR" fi } LARGEFILE="$TESTDIR/largefile" log_must mkdir "$TESTDIR" log_must truncate -s 10G "$LARGEFILE" log_must zpool create -f $TESTPOOL $LARGEFILE log_must zpool trim -r 256M $TESTPOOL sleep 2 progress="$(trim_progress $TESTPOOL $LARGEFILE)" [[ -z "$progress" ]] && log_fail "Trimming did not start" log_must zpool export $TESTPOOL log_must zpool import -d $TESTDIR $TESTPOOL new_progress="$(trim_progress $TESTPOOL $LARGEFILE)" [[ -z "$new_progress" ]] && log_fail "Trimming did not restart after import" [[ "$progress" -le "$new_progress" ]] || \ log_fail "Trimming lost progress after import" log_mustnot eval "trim_prog_line $TESTPOOL $LARGEFILE | grep suspended" log_must zpool trim -s $TESTPOOL $LARGEFILE action_date="$(trim_prog_line $TESTPOOL $LARGEFILE | \ sed 's/.*ed at \(.*\)).*/\1/g')" log_must zpool export $TESTPOOL log_must zpool import -d $TESTDIR $TESTPOOL new_action_date=$(trim_prog_line $TESTPOOL $LARGEFILE | \ sed 's/.*ed at \(.*\)).*/\1/g') [[ "$action_date" != "$new_action_date" ]] && \ log_fail "Trimming action date did not persist across export/import" [[ "$new_progress" -le "$(trim_progress $TESTPOOL $LARGEFILE)" ]] || \ log_fail "Trimming lost progress after import" log_must eval "trim_prog_line $TESTPOOL $LARGEFILE | grep suspended" log_pass "Trimming retains state as expected across export/import" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_verify_t0000644000000000000000000000007413607166133032071 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.546781269 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_verify_trimmed.ksh0000755016037001603700000000431213607166133034053 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_initialize/zpool_initialize.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # After trimming, the disk is actually trimmed. # # STRATEGY: # 1. Create a one-disk pool using a sparse file. # 2. Initialize the pool and verify the file vdev is no longer sparse. # 3. Trim the pool and verify the file vdev is again sparse. # function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d "$TESTDIR" ]]; then rm -rf "$TESTDIR" fi log_must set_tunable64 zfs_trim_extent_bytes_min $trim_extent_bytes_min } log_onexit cleanup LARGESIZE=$((MINVDEVSIZE * 4)) LARGEFILE="$TESTDIR/largefile" # Reduce trim size to allow for tighter tolerance below when checking. typeset trim_extent_bytes_min=$(get_tunable zfs_trim_extent_bytes_min) log_must set_tunable64 zfs_trim_extent_bytes_min 4096 log_must mkdir "$TESTDIR" log_must truncate -s $LARGESIZE "$LARGEFILE" log_must zpool create $TESTPOOL "$LARGEFILE" original_size=$(du -B1 "$LARGEFILE" | cut -f1) log_must zpool initialize $TESTPOOL while [[ "$(initialize_progress $TESTPOOL $LARGEFILE)" -lt "100" ]]; do sleep 0.5 done new_size=$(du -B1 "$LARGEFILE" | cut -f1) log_must within_tolerance $new_size $LARGESIZE $((128 * 1024 * 1024)) log_must zpool trim $TESTPOOL while [[ "$(trim_progress $TESTPOOL $LARGEFILE)" -lt "100" ]]; do sleep 0.5 done new_size=$(du -B1 "$LARGEFILE" | cut -f1) log_must within_tolerance $new_size $original_size $((128 * 1024 * 1024)) log_pass "Trimmed appropriate amount of disk space" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_split.ks0000644000000000000000000000007413607166133032011 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.532780819 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_split.ksh0000755016037001603700000000357413607166133032172 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Trimming state is preserved across zpool split. # # STRATEGY: # 1. Create a pool with a two-way mirror. # 2. Start trimming both devices. # 3. Split the pool. Ensure trimming continues on the original. # 4. Import the new pool. Ensure trimming resumes on it. # DISK1="$(echo $DISKS | cut -d' ' -f1)" DISK2="$(echo $DISKS | cut -d' ' -f2)" POOL2="${TESTPOOL}_split" log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2 log_must zpool trim $TESTPOOL $DISK1 $DISK2 orig_prog1="$(trim_progress $TESTPOOL $DISK1)" orig_prog2="$(trim_progress $TESTPOOL $DISK2)" [[ -z "$orig_prog1" ]] && log_fail "Trimming did not start" log_must zpool split $TESTPOOL $TESTPOOL1 $DISK2 # Ensure trimming continued as expected on the original pool. [[ "$(trim_progress $TESTPOOL $DISK1)" -ge "$orig_prog1" ]] || \ log_fail "Trimming lost progress on original pool" log_mustnot eval "trim_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool import $TESTPOOL1 [[ "$(trim_progress $TESTPOOL1 $DISK2)" -ge "$orig_prog2" ]] || \ log_fail "Trimming lost progress on split pool" log_mustnot eval "trim_prog_line $TESTPOOL1 $DISK1 | grep suspended" log_pass "Trimming behaves as expected on zpool split" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_verify_c0000644000000000000000000000007413607166133032050 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.544781205 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_verify_checksums.ksh0000755016037001603700000000331113607166133034375 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Trimming does not cause file corruption. # # STRATEGY: # 1. Create a one-disk pool. # 2. Write data to the pool. # 3. Start trimming and verify that trimming is active. # 4. Write more data to the pool. # 5. Export the pool and use zdb to validate checksums. # function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d "$TESTDIR" ]]; then rm -rf "$TESTDIR" fi } log_onexit cleanup LARGESIZE=$((MINVDEVSIZE * 4)) LARGEFILE="$TESTDIR/largefile" log_must mkdir "$TESTDIR" log_must truncate -s $LARGESIZE "$LARGEFILE" log_must zpool create $TESTPOOL "$LARGEFILE" log_must dd if=/dev/urandom of=/$TESTPOOL/file1 bs=1048576 count=64 log_must zpool sync log_must zpool trim $TESTPOOL [[ -z "$(trim_progress $TESTPOOL $DISK1)" ]] && \ log_fail "Trimming did not start" log_must dd if=/dev/urandom of=/$TESTPOOL/file2 bs=1048576 count=64 log_must zpool sync log_must zpool export $TESTPOOL log_must zdb -e -p "$TESTDIR" -cc $TESTPOOL log_pass "Trimming does not corrupt existing or new data" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030066 xustar000000000000000030 mtime=1579730437.737406765 30 atime=1579730456.372005067 30 ctime=1579730480.551781429 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile.in0000664016037001603700000006241113612143005030076 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_trim DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_trim ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_trim_attach_detach_add_remove.ksh \ zpool_trim_import_export.ksh \ zpool_trim_multiple.ksh \ zpool_trim_neg.ksh \ zpool_trim_offline_export_import_online.ksh \ zpool_trim_online_offline.ksh \ zpool_trim_partial.ksh \ zpool_trim_rate.ksh \ zpool_trim_rate_neg.ksh \ zpool_trim_secure.ksh \ zpool_trim_split.ksh \ zpool_trim_start_and_cancel_neg.ksh \ zpool_trim_start_and_cancel_pos.ksh \ zpool_trim_suspend_resume.ksh \ zpool_trim_unsupported_vdevs.ksh \ zpool_trim_verify_checksums.ksh \ zpool_trim_verify_trimmed.ksh dist_pkgdata_DATA = \ zpool_trim.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_trim/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_offline_0000644000000000000000000000026013607166133032020 xustar0000000000000000116 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_offline_export_import_online.ksh 30 atime=1579730360.849765597 30 ctime=1579730480.518780369 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_offline_export_import_onli0000755016037001603700000000374513607166133035711 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Miscellaneous complex sequences of operations function as expected. # # STRATEGY: # 1. Create a pool with a two-way mirror. # 2. Start trimming, offline, export, import, online and verify that # trimming state is preserved / trimming behaves as expected # at each step. # DISK1="$(echo $DISKS | cut -d' ' -f1)" DISK2="$(echo $DISKS | cut -d' ' -f2)" log_must zpool create -f $TESTPOOL mirror $DISK1 $DISK2 log_must zpool trim -r 128M $TESTPOOL $DISK1 log_must zpool offline $TESTPOOL $DISK1 progress="$(trim_progress $TESTPOOL $DISK1)" [[ -z "$progress" ]] && log_fail "Trimming did not start" log_mustnot eval "trim_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL new_progress="$(trim_progress $TESTPOOL $DISK1)" [[ -z "$new_progress" ]] && log_fail "Trimming did not start after import" [[ "$new_progress" -ge "$progress" ]] || \ log_fail "Trimming lost progress after import" log_mustnot eval "trim_prog_line $TESTPOOL $DISK1 | grep suspended" log_must zpool online $TESTPOOL $DISK1 new_progress="$(trim_progress $TESTPOOL $DISK1)" [[ "$new_progress" -ge "$progress" ]] || \ log_fail "Trimming lost progress after online" log_pass "Trimming behaves as expected at each step of:" \ "trim + offline + export + import + online" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/PaxHeaders.151519/zpool_trim_rate.ksh0000644000000000000000000000007413607166133031761 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.525780595 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_rate.ksh0000755016037001603700000000541113607166133031762 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Tim Chase. All rights reserved. # Copyright (c) 2019 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_trim/zpool_trim.kshlib # # DESCRIPTION: # Verify 'zpool trim -r ' rate limiting. # # STRATEGY: # 1. Create a pool on a single disk. # 2. Manually TRIM the pool with rate limiting. # 3. Verify the TRIM can be suspended. # 4. Restart the TRIM and verify the rate is preserved. # # NOTE: The tolerances and delays used in the test below are intentionally # set be to fairly large since we are capping the maximum trim rate. The # actual trim rate can be lower. The critical thing is that the trim rate # is limited, the rate is preserved when resuming, and it can be changed. # function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d "$TESTDIR" ]]; then rm -rf "$TESTDIR" fi } log_onexit cleanup LARGEFILE="$TESTDIR/largefile" log_must mkdir "$TESTDIR" log_must truncate -s 10G "$LARGEFILE" log_must zpool create -f $TESTPOOL "$LARGEFILE" # Start trimming at 200M/s for 5 seconds (approximately 10% of the pool) log_must zpool trim -r 200M $TESTPOOL log_must sleep 4 progress=$(trim_progress $TESTPOOL $LARGEFILE) log_must zpool trim -s $TESTPOOL log_must eval "trim_prog_line $TESTPOOL $LARGEFILE | grep suspended" log_must within_tolerance 10 $progress 5 # Resuming trimming at 200M/s for 5 seconds (approximately 20% of the pool) log_must zpool trim $TESTPOOL log_must sleep 4 progress=$(trim_progress $TESTPOOL $LARGEFILE) log_must zpool trim -s $TESTPOOL log_must eval "trim_prog_line $TESTPOOL $LARGEFILE | grep suspended" log_must within_tolerance 20 $progress 10 # Increase trimming to 600M/s for 5 seconds (approximately 50% of the pool) log_must zpool trim -r 600M $TESTPOOL log_must sleep 4 progress=$(trim_progress $TESTPOOL $LARGEFILE) log_must zpool trim -s $TESTPOOL log_must eval "trim_prog_line $TESTPOOL $LARGEFILE | grep suspended" log_must within_tolerance 50 $progress 15 # Set maximum trim rate for 5 seconds (100% of the pool) log_must zpool trim -r 1T $TESTPOOL log_must sleep 4 progress=$(trim_progress $TESTPOOL $LARGEFILE) log_must eval "trim_prog_line $TESTPOOL $LARGEFILE | grep complete" log_must within_tolerance 100 $progress 0 log_pass "Manual TRIM rate throttles as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_import0000644000000000000000000000013213612143057026312 xustar000000000000000030 mtime=1579730479.578750187 30 atime=1579730489.089055548 30 ctime=1579730479.578750187 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/0000775016037001603700000000000013612143057026373 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_015_0000644000000000000000000000007413607166133031604 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.539748935 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_015_pos.ksh0000755016037001603700000000252613607166133033117 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Nutanix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Make sure zpool import -d works. # # STRATEGY: # 1. Create test pool A. # 2. Export pool A. # 3. Verify 'import -d ' works # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL1 log_must rm $VDEV0 $VDEV1 log_must truncate -s $FILE_SIZE $VDEV0 $VDEV1 } log_assert "Pool can be imported with '-d '" log_onexit cleanup log_must zpool create $TESTPOOL1 $VDEV0 $VDEV1 log_must zpool export $TESTPOOL1 log_must zpool import -d $VDEV0 -d $VDEV1 $TESTPOOL1 log_must zpool export $TESTPOOL1 # mix -d and -d log_must mkdir $DEVICE_DIR/test_dir log_must ln -s $VDEV0 $DEVICE_DIR/test_dir/disk log_must zpool import -d $DEVICE_DIR/test_dir -d $VDEV1 $TESTPOOL1 log_pass "Pool can be imported with '-d '" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_miss0000644000000000000000000000007413607166133032113 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.556749481 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_missing_003_pos.ksh0000755016037001603700000001316513607166133034646 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Once a pool has been exported, but one or more devices are # overlapped with other exported pool, import should handle # this kind of situation properly. # # STRATEGY: # 1. Repeat 1-3, create two test pools upon device files separately. # These two pools should have one or more devices are overlapped. # using the various combinations. # - Regular pool # - Mirror # - Raidz # 2. Create necessary filesystem and test files. # 3. Export the test pool. # 4. Verify 'zpool import -d' with these two pools will have results # as described: # - Regular, report error while any number of devices failing. # - Mirror could withstand (N-1) devices failing # before data integrity is compromised # - Raidz could withstand one devices failing # before data integrity is compromised # verify_runnable "global" # See issue: https://github.com/zfsonlinux/zfs/issues/6839 if is_linux; then log_unsupported "Test case may be slow" fi set -A vdevs "" "mirror" "raidz" function verify { typeset pool=$1 typeset fs=$2 typeset mtpt=$3 typeset health=$4 typeset file=$5 typeset checksum1=$6 typeset myhealth typeset mymtpt typeset checksum2 log_must poolexists $pool myhealth=$(zpool list -H -o health $pool) [[ $myhealth == $health ]] || \ log_fail "$pool: Incorrect health ($myhealth), " \ "expected ($health)." log_must ismounted $pool/$fs mymtpt=$(get_prop mountpoint $pool/$fs) [[ $mymtpt == $mtpt ]] || \ log_fail "$pool/$fs: Incorrect mountpoint ($mymtpt), " \ "expected ($mtpt)." [[ ! -e $mtpt/$file ]] && \ log_fail "$mtpt/$file missing after import." checksum2=$(sum $mymtpt/$file | awk '{print $1}') [[ "$checksum1" != "$checksum2" ]] && \ log_fail "Checksums differ ($checksum1 != $checksum2)" return 0 } function cleanup { cd $DEVICE_DIR || log_fail "Unable change directory to $DEVICE_DIR" for pool in $TESTPOOL1 $TESTPOOL2; do if poolexists "$pool" ; then cleanup_filesystem $pool $TESTFS destroy_pool $pool fi done [[ -e $DEVICE_DIR/$DEVICE_ARCHIVE ]] && \ log_must tar xf $DEVICE_DIR/$DEVICE_ARCHIVE } function cleanup_all { cleanup # recover dev files typeset i=0 while (( i < $MAX_NUM )); do typeset file=${DEVICE_DIR}/${DEVICE_FILE}$i if [[ -e $file ]]; then log_must rm $file fi log_must mkfile $FILE_SIZE $file ((i += 1)) done log_must rm -f $DEVICE_DIR/$DEVICE_ARCHIVE cd $CWD || log_fail "Unable change directory to $CWD" } log_onexit cleanup_all log_assert "Verify that import could handle device overlapped." CWD=$PWD cd $DEVICE_DIR || log_fail "Unable change directory to $DEVICE_DIR" log_must tar cf $DEVICE_DIR/$DEVICE_ARCHIVE ${DEVICE_FILE}* checksum1=$(sum $MYTESTFILE | awk '{print $1}') typeset -i i=0 typeset -i j=0 typeset -i count=0 typeset -i num=0 typeset vdev1="" typeset vdev2="" typeset action while (( num < $GROUP_NUM )); do vdev1="$vdev1 ${DEVICE_DIR}/${DEVICE_FILE}$num" (( num = num + 1 )) done while (( i < ${#vdevs[*]} )); do j=0 while (( j < ${#vdevs[*]} )); do (( j != 0 )) && \ log_must tar xf $DEVICE_DIR/$DEVICE_ARCHIVE typeset -i overlap=1 typeset -i begin typeset -i end while (( overlap <= $GROUP_NUM )); do vdev2="" (( begin = $GROUP_NUM - overlap )) (( end = 2 * $GROUP_NUM - overlap - 1 )) (( num = begin )) while (( num <= end )); do vdev2="$vdev2 ${DEVICE_DIR}/${DEVICE_FILE}$num" (( num = num + 1 )) done setup_filesystem "$vdev1" $TESTPOOL1 $TESTFS $TESTDIR1 \ "" ${vdevs[i]} log_must cp $MYTESTFILE $TESTDIR1/$TESTFILE0 log_must zfs umount $TESTDIR1 poolexists $TESTPOOL1 && \ log_must zpool export $TESTPOOL1 setup_filesystem "$vdev2" $TESTPOOL2 $TESTFS $TESTDIR2 \ "" ${vdevs[j]} log_must cp $MYTESTFILE $TESTDIR2/$TESTFILE0 log_must zfs umount $TESTDIR2 poolexists $TESTPOOL2 && \ log_must zpool export $TESTPOOL2 action=log_must case "${vdevs[i]}" in 'mirror') (( overlap == $GROUP_NUM )) && \ action=log_mustnot ;; 'raidz') (( overlap > 1 )) && \ action=log_mustnot ;; '') action=log_mustnot ;; esac $action zpool import -d $DEVICE_DIR $TESTPOOL1 log_must zpool import -d $DEVICE_DIR $TESTPOOL2 if [[ $action == log_must ]]; then verify "$TESTPOOL1" "$TESTFS" "$TESTDIR1" \ "DEGRADED" "$TESTFILE0" "$checksum1" fi verify "$TESTPOOL2" "$TESTFS" "$TESTDIR2" \ "ONLINE" "$TESTFILE0" "$checksum1" cleanup (( overlap = overlap + 1 )) done ((j = j + 1)) done ((i = i + 1)) done log_pass "Import could handle device overlapped." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_rewind_con0000644000000000000000000000007413612141513032033 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.503747779 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_rewind_config_changed.ksh0000755016037001603700000001645713612141513034773 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # It should be possible to rewind a pool beyond a configuration change. # # STRATEGY: # 1. Create a pool. # 2. Generate files and remember their md5sum. # 3. Note last synced txg. # 4. Take a snapshot to make sure old blocks are not overwritten. # 5. Perform zpool add/attach/detach/remove operation. # 6. Change device paths if requested and re-import pool. # 7. Checkpoint the pool as one last attempt to preserve old blocks. # 8. Overwrite the files. # 9. Export the pool. # 10. Verify that we can rewind the pool to the noted txg. # 11. Verify that the files are readable and retain their old data. # # DISCLAIMER: # This test can fail since nothing guarantees that old MOS blocks aren't # overwritten. Snapshots protect datasets and data files but not the MOS. # sync_some_data_a_few_times interleaves file data and MOS data for a few # txgs, thus increasing the odds that some txgs will have their MOS data # left untouched. # verify_runnable "global" function custom_cleanup { set_vdev_validate_skip 0 cleanup log_must set_tunable64 zfs_vdev_min_ms_count 16 } log_onexit custom_cleanup function test_common { typeset poolcreate="$1" typeset addvdevs="$2" typeset attachargs="${3:-}" typeset detachvdev="${4:-}" typeset removevdev="${5:-}" typeset finalpool="${6:-}" typeset poolcheck="$poolcreate" log_must zpool create $TESTPOOL1 $poolcreate log_must generate_data $TESTPOOL1 $MD5FILE # syncing a few times while writing new data increases the odds that MOS # metadata for some of the txgs will survive log_must sync_some_data_a_few_times $TESTPOOL1 typeset txg txg=$(get_last_txg_synced $TESTPOOL1) log_must zfs snapshot -r $TESTPOOL1@snap1 # # Perform config change operations # if [[ -n $addvdevs ]]; then log_must zpool add -f $TESTPOOL1 $addvdevs fi if [[ -n $attachargs ]]; then log_must zpool attach $TESTPOOL1 $attachargs fi if [[ -n $detachvdev ]]; then log_must zpool detach $TESTPOOL1 $detachvdev fi if [[ -n $removevdev ]]; then [[ -z $finalpool ]] && log_fail "Must provide final pool status!" log_must zpool remove $TESTPOOL1 $removevdev log_must wait_for_pool_config $TESTPOOL1 "$finalpool" fi if [[ -n $pathstochange ]]; then # # Change device paths and re-import pool to update labels # zpool export $TESTPOOL1 for dev in $pathstochange; do log_must mv $dev "${dev}_new" poolcheck=$(echo "$poolcheck" | \ sed "s:$dev:${dev}_new:g") done zpool import -d $DEVICE_DIR $TESTPOOL1 fi # # In an attempt to leave MOS data untouched so extreme # rewind is successful during import we checkpoint the # pool and hope that these MOS data are part of the # checkpoint (e.g they stay around). If this goes as # expected, then extreme rewind should rewind back even # further than the time that we took the checkpoint. # # Note that, ideally we would want to take a checkpoint # right after we record the txg we plan to rewind to. # But since we can't attach, detach or remove devices # while having a checkpoint, we take it after the # operation that changes the config. # log_must zpool checkpoint $TESTPOOL1 log_must overwrite_data $TESTPOOL1 "" log_must zpool export $TESTPOOL1 log_must zpool import -d $DEVICE_DIR -T $txg $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolcheck" log_must verify_data_md5sums $MD5FILE # Cleanup log_must zpool destroy $TESTPOOL1 if [[ -n $pathstochange ]]; then for dev in $pathstochange; do log_must mv "${dev}_new" $dev done fi # Fast way to clear vdev labels log_must zpool create -f $TESTPOOL2 $VDEV0 $VDEV1 $VDEV2 $VDEV3 $VDEV4 log_must zpool destroy $TESTPOOL2 log_note "" } function test_add_vdevs { typeset poolcreate="$1" typeset addvdevs="$2" log_note "$0: pool '$poolcreate', add $addvdevs." test_common "$poolcreate" "$addvdevs" } function test_attach_vdev { typeset poolcreate="$1" typeset attachto="$2" typeset attachvdev="$3" log_note "$0: pool '$poolcreate', attach $attachvdev to $attachto." test_common "$poolcreate" "" "$attachto $attachvdev" } function test_detach_vdev { typeset poolcreate="$1" typeset detachvdev="$2" log_note "$0: pool '$poolcreate', detach $detachvdev." test_common "$poolcreate" "" "" "$detachvdev" } function test_attach_detach_vdev { typeset poolcreate="$1" typeset attachto="$2" typeset attachvdev="$3" typeset detachvdev="$4" log_note "$0: pool '$poolcreate', attach $attachvdev to $attachto," \ "then detach $detachvdev." test_common "$poolcreate" "" "$attachto $attachvdev" "$detachvdev" } function test_remove_vdev { typeset poolcreate="$1" typeset removevdev="$2" typeset finalpool="$3" log_note "$0: pool '$poolcreate', remove $removevdev." test_common "$poolcreate" "" "" "" "$removevdev" "$finalpool" } # Record txg history is_linux && log_must set_tunable32 zfs_txg_history 100 # Make the devices bigger to reduce chances of overwriting MOS metadata. increase_device_sizes $(( FILE_SIZE * 4 )) # Increase the number of metaslabs for small pools temporarily to # reduce the chance of reusing a metaslab that holds old MOS metadata. log_must set_tunable64 zfs_vdev_min_ms_count 150 # Part of the rewind test is to see how it reacts to path changes typeset pathstochange="$VDEV0 $VDEV1 $VDEV2 $VDEV3" log_note " == test rewind after device addition == " test_add_vdevs "$VDEV0" "$VDEV1" test_add_vdevs "$VDEV0 $VDEV1" "$VDEV2" test_add_vdevs "$VDEV0" "$VDEV1 $VDEV2" test_add_vdevs "mirror $VDEV0 $VDEV1" "mirror $VDEV2 $VDEV3" test_add_vdevs "$VDEV0" "raidz $VDEV1 $VDEV2 $VDEV3" test_add_vdevs "$VDEV0" "log $VDEV1" test_add_vdevs "$VDEV0 log $VDEV1" "$VDEV2" log_note " == test rewind after device attach == " test_attach_vdev "$VDEV0" "$VDEV0" "$VDEV1" test_attach_vdev "mirror $VDEV0 $VDEV1" "$VDEV0" "$VDEV2" test_attach_vdev "$VDEV0 $VDEV1" "$VDEV0" "$VDEV2" log_note " == test rewind after device removal == " # Once we remove a device it will be overlooked in the device scan, so we must # preserve its original path pathstochange="$VDEV0 $VDEV2" test_remove_vdev "$VDEV0 $VDEV1 $VDEV2" "$VDEV1" "$VDEV0 $VDEV2" # # Path change and detach are incompatible. Detach changes the guid of the vdev # so we have no direct way to link the new path to an existing vdev. # pathstochange="" log_note " == test rewind after device detach == " test_detach_vdev "mirror $VDEV0 $VDEV1" "$VDEV1" test_detach_vdev "mirror $VDEV0 $VDEV1 mirror $VDEV2 $VDEV3" "$VDEV1" test_detach_vdev "$VDEV0 log mirror $VDEV1 $VDEV2" "$VDEV2" log_note " == test rewind after device attach followed by device detach == " # # We need to disable vdev validation since once we detach VDEV1, VDEV0 will # inherit the mirror tvd's guid and lose its original guid. # set_vdev_validate_skip 1 test_attach_detach_vdev "$VDEV0" "$VDEV0" "$VDEV1" "$VDEV1" set_vdev_validate_skip 0 log_pass "zpool import rewind after configuration change passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_paths_chan0000644000000000000000000000007413607166133032025 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.500747683 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_paths_changed.ksh0000755016037001603700000000453313607166133033276 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # A pool should be importable even if device paths have changed. # # STRATEGY: # 1. Create a pool. # 2. Export the pool. # 3. Change the paths of some of the devices. # 4. Verify that we can import the pool in a healthy state. # verify_runnable "global" log_onexit cleanup function test_new_paths { typeset poolcreate="$1" typeset pathstochange="$2" log_note "$0: pool '$poolcreate', changing paths of $pathstochange." log_must zpool create $TESTPOOL1 $poolcreate log_must zpool export $TESTPOOL1 for dev in $pathstochange; do log_must mv $dev "${dev}_new" done log_must zpool import -d $DEVICE_DIR $TESTPOOL1 log_must check_pool_healthy $TESTPOOL1 # Cleanup log_must zpool destroy $TESTPOOL1 for dev in $pathstochange; do log_must mv "${dev}_new" $dev done log_note "" } function test_swap_paths { typeset poolcreate="$1" typeset pathtoswap1="$2" typeset pathtoswap2="$3" log_note "$0: pool '$poolcreate', swapping paths of $pathtoswap1" \ "and $pathtoswap2." log_must zpool create $TESTPOOL1 $poolcreate log_must zpool export $TESTPOOL1 log_must mv $pathtoswap2 "$pathtoswap2.tmp" log_must mv $pathtoswap1 "$pathtoswap2" log_must mv "$pathtoswap2.tmp" $pathtoswap1 log_must zpool import -d $DEVICE_DIR $TESTPOOL1 log_must check_pool_healthy $TESTPOOL1 # Cleanup log_must zpool destroy $TESTPOOL1 log_note "" } test_new_paths "$VDEV0 $VDEV1" "$VDEV0 $VDEV1" test_new_paths "mirror $VDEV0 $VDEV1" "$VDEV0 $VDEV1" test_new_paths "$VDEV0 log $VDEV1" "$VDEV1" test_new_paths "raidz $VDEV0 $VDEV1 $VDEV2" "$VDEV1" test_swap_paths "$VDEV0 $VDEV1" "$VDEV0" "$VDEV1" test_swap_paths "raidz $VDEV0 $VDEV1 $VDEV2" "$VDEV0" "$VDEV1" test_swap_paths "mirror $VDEV0 $VDEV1 mirror $VDEV2 $VDEV3" \ "$VDEV0" "$VDEV2" log_pass "zpool import succeeded after changing device paths." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_cachefile_0000644000000000000000000000007413607166133031757 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.484747169 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_device_added.ksh0000755016037001603700000000426313607166133035051 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # A pool should be importable using an outdated cachefile that is unaware # that one or two top-level vdevs were added. # # STRATEGY: # 1. Create a pool with some devices and an alternate cachefile. # 2. Backup the cachefile. # 3. Add a device/mirror/raid to the pool. # 4. Export the pool. # 5. Verify that we can import the pool using the backed-up cachefile. # verify_runnable "global" log_onexit cleanup function test_add_vdevs { typeset poolcreate="$1" typeset addvdevs="$2" typeset poolcheck="$3" log_note "$0: pool '$poolcreate', add $addvdevs." log_must zpool create -o cachefile=$CPATH $TESTPOOL1 $poolcreate log_must cp $CPATH $CPATHBKP log_must zpool add -f $TESTPOOL1 $addvdevs log_must zpool export $TESTPOOL1 log_must zpool import -c $CPATHBKP $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolcheck" # Cleanup log_must zpool destroy $TESTPOOL1 log_must rm -f $CPATH $CPATHBKP log_note "" } test_add_vdevs "$VDEV0" "$VDEV1" "$VDEV0 $VDEV1" test_add_vdevs "$VDEV0 $VDEV1" "$VDEV2" "$VDEV0 $VDEV1 $VDEV2" test_add_vdevs "$VDEV0" "$VDEV1 $VDEV2" "$VDEV0 $VDEV1 $VDEV2" test_add_vdevs "$VDEV0" "mirror $VDEV1 $VDEV2" \ "$VDEV0 mirror $VDEV1 $VDEV2" test_add_vdevs "mirror $VDEV0 $VDEV1" "mirror $VDEV2 $VDEV3" \ "mirror $VDEV0 $VDEV1 mirror $VDEV2 $VDEV3" test_add_vdevs "$VDEV0" "raidz $VDEV1 $VDEV2 $VDEV3" \ "$VDEV0 raidz $VDEV1 $VDEV2 $VDEV3" test_add_vdevs "$VDEV0" "log $VDEV1" "$VDEV0 log $VDEV1" test_add_vdevs "$VDEV0 log $VDEV1" "$VDEV2" "$VDEV0 $VDEV2 log $VDEV1" test_add_vdevs "$VDEV0" "$VDEV1 log $VDEV2" "$VDEV0 $VDEV1 log $VDEV2" log_pass "zpool import -c cachefile_unaware_of_add passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_erra0000644000000000000000000000007413607166133032071 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.568749865 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata4.ksh0000755016037001603700000001127513607166133033274 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zpool import' should import a pool with Errata #4. Users should be # able to set the zfs_disable_ivset_guid_check to continue normal # operation and the errata should disappear when no more effected # datasets remain. # # STRATEGY: # 1. Import a pre-packaged pool with Errata #4 and verify its state # 2. Prepare pool to fix existing datasets # 3. Use raw sends to fix datasets # 4. Ensure fixed datasets match their initial counterparts # 5. Destroy the initial datasets and verify the errata is gone # verify_runnable "global" POOL_NAME=missing_ivset POOL_FILE=missing_ivset.dat function uncompress_pool { log_note "Creating pool from $POOL_FILE" log_must bzcat \ $STF_SUITE/tests/functional/cli_root/zpool_import/blockfiles/$POOL_FILE.bz2 \ > /$TESTPOOL/$POOL_FILE return 0 } function cleanup { log_must set_tunable32 zfs_disable_ivset_guid_check 0 poolexists $POOL_NAME && log_must zpool destroy $POOL_NAME [[ -e /$TESTPOOL/$POOL_FILE ]] && rm /$TESTPOOL/$POOL_FILE return 0 } log_onexit cleanup log_assert "Verify that Errata 4 is properly handled" function has_ivset_guid # dataset { ds="$1" ivset_guid=$(get_prop ivsetguid $ds) if [ "$ivset_guid" == "-" ]; then return 1 else return 0 fi } # 1. Import a pre-packaged pool with Errata #4 and verify its state uncompress_pool log_must zpool import -d /$TESTPOOL/ $POOL_NAME log_must eval "zpool status $POOL_NAME | grep -q 'Errata #4'" log_must eval "zpool status $POOL_NAME | grep -q ZFS-8000-ER" bm2_value=$(zpool get -H -o value feature@bookmark_v2 $POOL_NAME) if [ "$bm2_value" != "disabled" ]; then log_fail "initial pool's bookmark_v2 feature is not disabled" fi log_mustnot has_ivset_guid $POOL_NAME/testfs@snap1 log_mustnot has_ivset_guid $POOL_NAME/testfs@snap2 log_mustnot has_ivset_guid $POOL_NAME/testfs@snap3 log_mustnot has_ivset_guid $POOL_NAME/testvol@snap1 log_mustnot has_ivset_guid $POOL_NAME/testvol@snap2 log_mustnot has_ivset_guid $POOL_NAME/testvol@snap3 # 2. Prepare pool to fix existing datasets log_must zpool set feature@bookmark_v2=enabled $POOL_NAME log_must set_tunable32 zfs_disable_ivset_guid_check 1 log_must zfs create $POOL_NAME/fixed # 3. Use raw sends to fix datasets log_must eval "zfs send -w $POOL_NAME/testfs@snap1 | \ zfs recv $POOL_NAME/fixed/testfs" log_must eval "zfs send -w -i @snap1 $POOL_NAME/testfs@snap2 | \ zfs recv $POOL_NAME/fixed/testfs" log_must eval \ "zfs send -w -i $POOL_NAME/testfs#snap2 $POOL_NAME/testfs@snap3 | \ zfs recv $POOL_NAME/fixed/testfs" log_must eval "zfs send -w $POOL_NAME/testvol@snap1 | \ zfs recv $POOL_NAME/fixed/testvol" log_must eval "zfs send -w -i @snap1 $POOL_NAME/testvol@snap2 | \ zfs recv $POOL_NAME/fixed/testvol" log_must eval \ "zfs send -w -i $POOL_NAME/testvol#snap2 $POOL_NAME/testvol@snap3 | \ zfs recv $POOL_NAME/fixed/testvol" # 4. Ensure fixed datasets match their initial counterparts log_must eval "echo 'password' | zfs load-key $POOL_NAME/testfs" log_must eval "echo 'password' | zfs load-key $POOL_NAME/testvol" log_must eval "echo 'password' | zfs load-key $POOL_NAME/fixed/testfs" log_must eval "echo 'password' | zfs load-key $POOL_NAME/fixed/testvol" log_must zfs mount $POOL_NAME/testfs log_must zfs mount $POOL_NAME/fixed/testfs block_device_wait old_mntpnt=$(get_prop mountpoint $POOL_NAME/testfs) new_mntpnt=$(get_prop mountpoint $POOL_NAME/fixed/testfs) log_must diff -r "$old_mntpnt" "$new_mntpnt" log_must diff /dev/zvol/$POOL_NAME/testvol /dev/zvol/$POOL_NAME/fixed/testvol log_must has_ivset_guid $POOL_NAME/fixed/testfs@snap1 log_must has_ivset_guid $POOL_NAME/fixed/testfs@snap2 log_must has_ivset_guid $POOL_NAME/fixed/testfs@snap3 log_must has_ivset_guid $POOL_NAME/fixed/testvol@snap1 log_must has_ivset_guid $POOL_NAME/fixed/testvol@snap2 log_must has_ivset_guid $POOL_NAME/fixed/testvol@snap3 # 5. Destroy the initial datasets and verify the errata is gone log_must zfs destroy -r $POOL_NAME/testfs log_must zfs destroy -r $POOL_NAME/testvol log_must zpool export $POOL_NAME log_must zpool import -d /$TESTPOOL/ $POOL_NAME log_mustnot eval "zpool status $POOL_NAME | grep -q 'Errata #4'" log_mustnot eval "zpool status $POOL_NAME | grep -q ZFS-8000-ER" log_pass "Errata 4 is properly handled" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_003_0000644000000000000000000000007413607166133031601 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.511748035 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_003_pos.ksh0000755016037001603700000000346713607166133033121 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Destroyed pools are not listed unless with -D option is specified. # # STRATEGY: # 1. Create test pool A. # 2. Destroy pool A. # 3. Verify only 'import -D' can list pool A. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL1 log_must rm $VDEV0 $VDEV1 log_must mkfile $FILE_SIZE $VDEV0 $VDEV1 } log_assert "Destroyed pools are not listed unless with -D option is specified." log_onexit cleanup log_must zpool create $TESTPOOL1 $VDEV0 $VDEV1 log_must zpool destroy $TESTPOOL1 # # 'pool:' is the keywords of 'zpool import -D' output. # log_mustnot eval "zpool import -d $DEVICE_DIR | grep pool:" log_must eval "zpool import -d $DEVICE_DIR -D | grep pool:" log_pass "Destroyed pool only can be listed with -D option." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_feat0000644000000000000000000000007413607166133032057 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.549749255 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_features_003_pos.ksh0000755016037001603700000000641113607166133035007 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg ################################################################################# # # Pool can be imported with active read-only compatible features. If a feature # is read-only compatible but also inactive its property status should be # "inactive" rather than "readonly". # # 1. Create new pool. # 2. Export and inject variety of unsupported features. # 3. Try to import read-write, this should fail. The error should only list # the active read-only compatible feature and mention "readonly=on". # 4. Import the pool in read-only mode. # 5. Verify values of unsupported@ properties. # ################################################################################ verify_runnable "global" enabled_features="com.test:xxx_unsup0 com.test:xxx_unsup2" active_features="com.test:xxx_unsup1 com.test:xxx_unsup3" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 log_must rm $VDEV0 log_must mkfile $FILE_SIZE $VDEV0 } log_assert "Pool with active read-only compatible features can be imported." log_onexit cleanup log_must zpool create $TESTPOOL1 $VDEV0 log_must zpool export $TESTPOOL1 for feature in $enabled_features $active_features; do log_must zhack -d $DEVICE_DIR feature enable -r $TESTPOOL1 $feature done for feature in $active_features; do log_must zhack -d $DEVICE_DIR feature ref $TESTPOOL1 $feature done log_mustnot zpool import -d $DEVICE_DIR $TESTPOOL1 # error message should mention "readonly" log_must eval "zpool import -d $DEVICE_DIR $TESTPOOL1 | grep readonly" log_mustnot poolexists $TESTPOOL1 for feature in $enabled_features; do log_mustnot eval "zpool import -d $DEVICE_DIR $TESTPOOL1 \ | grep $feature" log_mustnot poolexists $TESTPOOL1 done for feature in $active_features; do log_must eval "zpool import -d $DEVICE_DIR $TESTPOOL1 \ | grep $feature" log_mustnot poolexists $TESTPOOL1 done log_must zpool import -o readonly=on -d $DEVICE_DIR $TESTPOOL1 for feature in $enabled_features; do state=$(zpool list -Ho unsupported@$feature $TESTPOOL1) if [[ "$state" != "inactive" ]]; then log_fail "unsupported@$feature is '$state'" fi done for feature in $active_features; do state=$(zpool list -Ho unsupported@$feature $TESTPOOL1) if [[ "$state" != "readonly" ]]; then log_fail "unsupported@$feature is '$state'" fi done log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_rena0000644000000000000000000000007413607166133032065 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.558749545 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_rename_001_pos.ksh0000755016037001603700000001062313607166133034436 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # An exported pool can be imported under a different name. Hence # we test that a previously exported pool can be renamed. # # STRATEGY: # 1. Copy a file into the default test directory. # 2. Umount the default directory. # 3. Export the pool. # 4. Import the pool using the name ${TESTPOOL}-new, # and using the various combinations. # - Regular import # - Alternate Root Specified # 5. Verify it exists in the 'zpool list' output. # 6. Verify the default file system is mounted and that the file # from step (1) is present. # verify_runnable "global" set -A pools "$TESTPOOL" "$TESTPOOL1" set -A devs "" "-d $DEVICE_DIR" set -A options "" "-R $ALTER_ROOT" set -A mtpts "$TESTDIR" "$TESTDIR1" function cleanup { typeset -i i=0 while (( i < ${#pools[*]} )); do if poolexists "${pools[i]}-new" ; then log_must zpool export "${pools[i]}-new" [[ -d /${pools[i]}-new ]] && \ log_must rm -rf /${pools[i]}-new log_must zpool import ${devs[i]} \ "${pools[i]}-new" ${pools[i]} fi datasetexists "${pools[i]}" || \ log_must zpool import ${devs[i]} ${pools[i]} ismounted "${pools[i]}/$TESTFS" || \ log_must zfs mount ${pools[i]}/$TESTFS [[ -e ${mtpts[i]}/$TESTFILE0 ]] && \ log_must rm -rf ${mtpts[i]}/$TESTFILE0 ((i = i + 1)) done cleanup_filesystem $TESTPOOL1 $TESTFS $TESTDIR1 destroy_pool $TESTPOOL1 [[ -d $ALTER_ROOT ]] && \ log_must rm -rf $ALTER_ROOT [[ -e $VDEV_FILE ]] && \ log_must rm $VDEV_FILE } log_onexit cleanup log_assert "Verify that an imported pool can be renamed." setup_filesystem "$DEVICE_FILES" $TESTPOOL1 $TESTFS $TESTDIR1 checksum1=$(sum $MYTESTFILE | awk '{print $1}') typeset -i i=0 typeset -i j=0 typeset basedir while (( i < ${#pools[*]} )); do guid=$(get_config ${pools[i]} pool_guid) log_must cp $MYTESTFILE ${mtpts[i]}/$TESTFILE0 log_must zfs umount ${mtpts[i]} j=0 while (( j < ${#options[*]} )); do log_must zpool export ${pools[i]} [[ -d /${pools[i]} ]] && \ log_must rm -rf /${pools[i]} typeset target=${pools[i]} if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool import ${devs[i]} ${options[j]} \ $target ${pools[i]}-new log_must poolexists "${pools[i]}-new" log_must ismounted ${pools[i]}-new/$TESTFS basedir=${mtpts[i]} [[ -n ${options[j]} ]] && \ basedir=$ALTER_ROOT/${mtpts[i]} [[ ! -e $basedir/$TESTFILE0 ]] && \ log_fail "$basedir/$TESTFILE0 missing after import." checksum2=$(sum $basedir/$TESTFILE0 | awk '{print $1}') [[ "$checksum1" != "$checksum2" ]] && \ log_fail "Checksums differ ($checksum1 != $checksum2)" log_must zpool export "${pools[i]}-new" [[ -d /${pools[i]}-new ]] && \ log_must rm -rf /${pools[i]}-new target=${pools[i]}-new if (( RANDOM % 2 == 0 )) ; then target=$guid fi log_must zpool import ${devs[i]} $target ${pools[i]} ((j = j + 1)) done ((i = i + 1)) done VDEV_FILE=$(mktemp $TEST_BASE_DIR/tmp.XXXXXX) log_must mkfile -n 128M $VDEV_FILE log_must zpool create overflow $VDEV_FILE log_must zfs create overflow/testfs ID=$(zpool get -Ho value guid overflow) log_must zpool export overflow log_mustnot zpool import -d $TEST_BASE_DIR $(echo id) \ $(printf "%*s\n" 250 "" | tr ' ' 'c') log_pass "Successfully imported and renamed a ZPOOL" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_cachefile_0000644000000000000000000000025313607166133031756 xustar0000000000000000111 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_mirror_attached.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.491747393 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_mirror_attached.ks0000755016037001603700000000365013607166133035467 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # A pool should be importable using an outdated cachefile that misses a # mirror that was attached. # # STRATEGY: # 1. Create a pool with some devices and an alternate cachefile. # 2. Backup the cachefile. # 3. Attach a mirror to one of the devices in the pool. # 4. Export the pool. # 5. Verify that we can import the pool using the backed-up cachefile. # verify_runnable "global" log_onexit cleanup function test_attach_vdev { typeset poolcreate="$1" typeset attachto="$2" typeset attachvdev="$3" typeset poolcheck="$4" log_note "$0: pool '$poolcreate', attach $attachvdev to $attachto." log_must zpool create -o cachefile=$CPATH $TESTPOOL1 $poolcreate log_must cp $CPATH $CPATHBKP log_must zpool attach $TESTPOOL1 $attachto $attachvdev log_must zpool export $TESTPOOL1 log_must zpool import -c $CPATHBKP $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolcheck" # Cleanup log_must zpool destroy $TESTPOOL1 log_must rm -f $CPATH $CPATHBKP log_note "" } test_attach_vdev "$VDEV0" "$VDEV0" "$VDEV4" "mirror $VDEV0 $VDEV4" test_attach_vdev "$VDEV0 $VDEV1" "$VDEV1" "$VDEV4" \ "$VDEV0 mirror $VDEV1 $VDEV4" test_attach_vdev "mirror $VDEV0 $VDEV1" "$VDEV0" "$VDEV4" \ "mirror $VDEV0 $VDEV1 $VDEV4" test_attach_vdev "$VDEV0 log $VDEV1" "$VDEV1" "$VDEV4" \ "$VDEV0 log mirror $VDEV1 $VDEV4" log_pass "zpool import -c cachefile_unaware_of_attach passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_cachefile_0000644000000000000000000000007413612141514031747 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.496747553 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_shared_device.ksh0000755016037001603700000000533513612141514035247 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # A pool should not try to write to a device that doesn't belong to it # anymore, even if the device is in its cachefile. # # STRATEGY: # 1. Create pool1 with some devices and an alternate cachefile. # 2. Backup the cachefile. # 3. Export pool1. # 4. Create pool2 using a device that belongs to pool1. # 5. Export pool2. # 6. Compute checksum of the shared device. # 7. Import pool1 and write some data to it. # 8. Verify that the checksum of the shared device hasn't changed. # verify_runnable "global" function custom_cleanup { destroy_pool $TESTPOOL2 cleanup } log_onexit custom_cleanup function dev_checksum { typeset dev="$1" typeset checksum log_note "Compute checksum of '$dev'" checksum=$(md5digest $dev) if [[ $? -ne 0 ]]; then log_fail "Failed to compute checksum of '$dev'" return 1 fi echo "$checksum" return 0 } function test_shared_device { typeset pool1="$1" typeset pool2="$2" typeset sharedvdev="$3" typeset importflags="${4:-}" log_note "$0: pool1 '$pool1', pool2 '$pool2' takes $sharedvdev." log_must zpool create -o cachefile=$CPATH $TESTPOOL1 $pool1 log_must cp $CPATH $CPATHBKP log_must zpool export $TESTPOOL1 log_must zpool create -f $TESTPOOL2 $pool2 log_must zpool export $TESTPOOL2 typeset checksum1=$(dev_checksum $sharedvdev) log_must zpool import -c $CPATHBKP $importflags $TESTPOOL1 log_must write_some_data $TESTPOOL1 2 log_must zpool destroy $TESTPOOL1 typeset checksum2=$(dev_checksum $sharedvdev) if [[ $checksum1 == $checksum2 ]]; then log_pass "Device hasn't been modified by original pool" else log_fail "Device has been modified by original pool." \ "Checksum mismatch: $checksum1 != $checksum2." fi # Cleanup log_must zpool import -d $DEVICE_DIR $TESTPOOL2 log_must zpool destroy $TESTPOOL2 log_must rm -f $CPATH $CPATHBKP log_note "" } test_shared_device "mirror $VDEV0 $VDEV1" "mirror $VDEV1 $VDEV2" "$VDEV1" test_shared_device "mirror $VDEV0 $VDEV1 $VDEV2" "mirror $VDEV2 $VDEV3" \ "$VDEV2" test_shared_device "raidz $VDEV0 $VDEV1 $VDEV2" "$VDEV2" "$VDEV2" test_shared_device "$VDEV0 log $VDEV1" "$VDEV2 log $VDEV1" "$VDEV1" "-m" log_pass "Pool doesn't write to a device it doesn't own anymore." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_all_0000644000000000000000000000007413607166133032047 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.542749031 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_all_001_pos.ksh0000755016037001603700000000730413607166133033741 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Verify that 'zpool import -a' succeeds as root. # # STRATEGY: # 1. Create a group of pools with specified vdev. # 2. Create zfs filesystems within the given pools. # 3. Export the pools. # 4. Verify that import command succeed. # verify_runnable "global" set -A options "" "-R $ALTER_ROOT" typeset -A testpools typeset -i number=0 typeset -i i=0 typeset checksum1 typeset poolname function setup_single_disk #disk #pool #fs #mtpt { typeset disk=$1 typeset pool=$2 typeset fs=${3##/} typeset mtpt=$4 setup_filesystem "$disk" "$pool" "$fs" "$mtpt" log_must cp $MYTESTFILE $mtpt/$TESTFILE0 log_must zpool export $pool [[ -d $mtpt ]] && \ rm -rf $mtpt } function cleanup_all { typeset -i id=1 # # Try import individually if 'import -a' failed. # for pool in `zpool import | grep "pool:" | awk '{print $2}'`; do zpool import -f $pool done for pool in `zpool import -d $DEVICE_DIR | grep "pool:" | awk '{print $2}'`; do log_must zpool import -d $DEVICE_DIR -f $pool done while (( id < number )); do if poolexists ${TESTPOOL}-$id ; then cleanup_filesystem "${TESTPOOL}-$id" $TESTFS destroy_pool ${TESTPOOL}-$id fi (( id = id + 1 )) done [[ -d $ALTER_ROOT ]] && \ rm -rf $ALTER_ROOT } function checksum_all #alter_root { typeset alter_root=$1 typeset -i id=1 typeset file typeset checksum2 while (( id < number )); do file=${alter_root}/$TESTDIR.$id/$TESTFILE0 [[ ! -e $file ]] && \ log_fail "$file missing after import." checksum2=$(sum $file | awk '{print $1}') [[ "$checksum1" != "$checksum2" ]] && \ log_fail "Checksums differ ($checksum1 != $checksum2)" (( id = id + 1 )) done return 0 } log_assert "Verify that 'zpool import -a' succeeds as root." log_onexit cleanup_all checksum1=$(sum $MYTESTFILE | awk '{print $1}') number=1 # # setup exported pools on raw files # for disk in $DEVICE_FILES do poolname="${TESTPOOL}-$number" setup_single_disk "$disk" \ "$poolname" \ "$TESTFS" \ "$TESTDIR.$number" testpools[$poolname]=$poolname (( number = number + 1 )) done while (( i < ${#options[*]} )); do log_must zpool import -d $DEVICE_DIR ${options[i]} -a -f # export unintentionally imported pools for poolname in $(get_all_pools); do if [[ -z ${testpools[$poolname]} ]]; then log_must_busy zpool export $poolname fi done if [[ -n ${options[i]} ]]; then checksum_all $ALTER_ROOT else checksum_all fi for poolname in ${testpools[@]}; do if poolexists $poolname ; then log_must_busy zpool export $poolname fi done (( i = i + 1 )) done log_pass "'zpool import -a' succeeds as root." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_007_0000644000000000000000000000007413607166133031605 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.520748325 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_007_pos.ksh0000755016037001603700000000510113607166133033110 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # For raidz, one destroyed pools devices was removed or used by other # pool, it still can be imported correctly. # # STRATEGY: # 1. Create a raidz pool A with N disks. # 2. Destroy this pool A. # 3. Create another pool B with 1 disk which was used by pool A. # 4. Verify import this raidz pool can succeed. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL2 destroy_pool $TESTPOOL1 log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } log_assert "For raidz, one destroyed pools devices was removed or used by " \ "other pool, it still can be imported correctly." log_onexit cleanup log_must zpool create $TESTPOOL1 raidz $VDEV0 $VDEV1 $VDEV2 $VDIV3 typeset guid=$(get_config $TESTPOOL1 pool_guid) typeset target=$TESTPOOL1 if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool destroy $TESTPOOL1 log_must zpool create $TESTPOOL2 $VDEV0 log_must zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy $TESTPOOL1 log_must zpool destroy $TESTPOOL2 log_must rm -rf $VDEV0 log_must zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy $TESTPOOL1 log_note "For raidz, two destroyed pool's devices were used, import failed." log_must mkfile $FILE_SIZE $VDEV0 log_must zpool create $TESTPOOL2 $VDEV0 $VDEV1 log_mustnot zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy $TESTPOOL2 log_pass "zpool import -D raidz passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_feat0000644000000000000000000000007413607166133032057 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.547749191 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_features_002_neg.ksh0000755016037001603700000000525113607166133034757 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg ################################################################################# # # Pool cannot be opened with active unsupported features. Error message should # list active unsupported features. # # 1. Create new pool. # 2. Export and inject unsuppored features with zhack, make some of them active. # 3. Try to import pool, error should only list active features. It should # not say anything about being able to import the pool in readonly mode. # ################################################################################ verify_runnable "global" enabled_features="com.test:xxx_unsup1 com.test:xxx_unsup3" active_features="com.test:xxx_unsup0 com.test:xxx_unsup2" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 log_must rm $VDEV0 log_must mkfile $FILE_SIZE $VDEV0 } log_assert "Pool with active unsupported features cannot be imported." log_onexit cleanup log_must zpool create $TESTPOOL1 $VDEV0 log_must zpool export $TESTPOOL1 for feature in $enabled_features $active_features; do log_must zhack -d $DEVICE_DIR feature enable $TESTPOOL1 $feature done for feature in $active_features; do log_must zhack -d $DEVICE_DIR feature ref $TESTPOOL1 $feature done log_mustnot zpool import -d $DEVICE_DIR $TESTPOOL1 # error message should not mention "readonly" log_mustnot eval "zpool import -d $DEVICE_DIR $TESTPOOL1 | grep readonly" log_mustnot poolexists $TESTPOOL1 for feature in $active_features; do log_must eval "zpool import -d $DEVICE_DIR $TESTPOOL1 \ | grep $feature" log_mustnot poolexists $TESTPOOL1 done for feature in $enabled_features; do log_mustnot eval "zpool import -d $DEVICE_DIR $TESTPOOL1 \ | grep $feature" log_mustnot poolexists $TESTPOOL1 done log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import.kshl0000644000000000000000000000007413612141514032010 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.477746943 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import.kshlib0000644016037001603700000001713713612141514032331 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # Prototype cleanup function for zpool_import tests. # function cleanup { # clear any remaining zinjections log_must zinject -c all > /dev/null destroy_pool $TESTPOOL1 log_must rm -f $CPATH $CPATHBKP $CPATHBKP2 $MD5FILE $MD5FILE2 log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done is_linux && set_tunable32 "zfs_txg_history" 0 } # # Write a bit of data and sync several times. # This function is intended to be used by zpool rewind tests. # function sync_some_data_a_few_times { typeset pool=$1 typeset -i a_few_times=${2:-10} typeset file="/$pool/tmpfile" for i in {0..$a_few_times}; do dd if=/dev/urandom of=${file}_$i bs=128k count=10 sync_pool "$pool" done return 0 } # # Just write a moderate amount of data to the pool. # function write_some_data { typeset pool=$1 typeset files10mb=${2:-10} typeset ds="$pool/fillerds" zfs create $ds [[ $? -ne 0 ]] && return 1 # Create 100 MB of data typeset file="/$ds/fillerfile" for i in {1..$files10mb}; do dd if=/dev/urandom of=$file.$i bs=128k count=80 [[ $? -ne 0 ]] && return 1 done return 0 } # # Create/overwrite a few datasets with files. # Checksum all the files and store digests in a file. # # newdata: overwrite existing files if false. # md5file: file where to store md5 digests # datasetname: base name for datasets # function _generate_data_common { typeset pool=$1 typeset newdata=$2 typeset md5file=$3 typeset datasetname=$4 typeset -i datasets=3 typeset -i files=5 typeset -i blocks=10 [[ -n $md5file ]] && rm -f $md5file for i in {1..$datasets}; do ( $newdata ) && log_must zfs create "$pool/$datasetname$i" for j in {1..$files}; do typeset file="/$pool/$datasetname$i/file$j" dd if=/dev/urandom of=$file bs=128k count=$blocks > /dev/null if [[ -n $md5file ]]; then typeset cksum=$(md5digest $file) echo $cksum $file >> $md5file fi done ( $newdata ) && sync_pool "$pool" done return 0 } function generate_data { typeset pool=$1 typeset md5file="$2" typeset datasetname=${3:-ds} _generate_data_common $pool true "$md5file" $datasetname } function overwrite_data { typeset pool=$1 typeset md5file="$2" typeset datasetname=${3:-ds} _generate_data_common $1 false "$md5file" $datasetname } # # Verify md5sums of every file in md5sum file $1. # function verify_data_md5sums { typeset md5file=$1 if [[ ! -f $md5file ]]; then log_note "md5 sums file '$md5file' doesn't exist" return 1 fi cat $md5file | \ while read digest file; do typeset digest1=$(md5digest $file) if [[ "$digest1" != "$digest" ]]; then return 1 fi done return 0 } # # Set devices size in DEVICE_DIR to $1. # function increase_device_sizes { typeset newfilesize=$1 typeset -i i=0 while (( i < $MAX_NUM )); do log_must mkfile $newfilesize ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } # # Translate vdev names returned by zpool status into more generic names. # # eg: mirror-2 --> mirror # function _translate_vdev { typeset vdev=$1 typeset keywords="mirror replacing raidz1 raidz2 raidz3 indirect" for word in $keywords; do echo $vdev | egrep "^${word}-[0-9]+\$" > /dev/null if [[ $? -eq 0 ]]; then vdev=$word break fi done [[ $vdev == "logs" ]] && echo "log" && return 0 [[ $vdev == "raidz1" ]] && echo "raidz" && return 0 echo $vdev return 0 } # # Check that pool configuration returned by zpool status matches expected # configuration. Format for the check string is same as the vdev arguments for # creating a pool # Add -q for quiet mode. # # eg: check_pool_config pool1 "mirror c0t0d0s0 c0t1d0s0 log c1t1d0s0" # function check_pool_config { typeset logfailure=true if [[ $1 == '-q' ]]; then logfailure=false shift fi typeset poolname=$1 typeset expected=$2 typeset status status=$(zpool status $poolname 2>&1) if [[ $? -ne 0 ]]; then if ( $logfailure ); then log_note "zpool status $poolname failed: $status" fi return 1 fi typeset actual="" typeset began=false printf "$status\n" | while read line; do typeset vdev=$(echo "$line" | awk '{printf $1}') if ( ! $began ) && [[ $vdev == NAME ]]; then began=true continue fi ( $began ) && [[ -z $vdev ]] && break; if ( $began ); then [[ -z $actual ]] && actual="$vdev" && continue vdev=$(_translate_vdev $vdev) actual="$actual $vdev" fi done expected="$poolname $expected" if [[ "$actual" != "$expected" ]]; then if ( $logfailure ); then log_note "expected pool vdevs:" log_note "> '$expected'" log_note "actual pool vdevs:" log_note "> '$actual'" fi return 1 fi return 0 } # # Check that pool configuration returned by zpool status matches expected # configuration within a given timeout in seconds. See check_pool_config(). # # eg: wait_for_pool_config pool1 "mirror c0t0d0s0 c0t1d0s0" 60 # function wait_for_pool_config { typeset poolname=$1 typeset expectedconfig="$2" typeset -i timeout=${3:-60} timeout=$(( $timeout + $(date +%s) )) while (( $(date +%s) < $timeout )); do check_pool_config -q $poolname "$expectedconfig" [[ $? -eq 0 ]] && return 0 sleep 3 done check_pool_config $poolname "$expectedconfig" return $? } # # Check that pool status is ONLINE # function check_pool_healthy { typeset pool=$1 typeset status status=$(zpool status $pool 2>&1) if [[ $? -ne 0 ]]; then log_note "zpool status $pool failed: $status" return 1 fi status=$(echo "$status" | grep "$pool" | grep -v "pool:" | \ awk '{print $2}') if [[ $status != "ONLINE" ]]; then log_note "Invalid zpool status for '$pool': '$status'" \ "!= 'ONLINE'" return 1 fi return 0 } # # Return 0 if a device is currently being replaced in the pool. # function pool_is_replacing { typeset pool=$1 zpool status $pool | grep "replacing" | grep "ONLINE" > /dev/null return $? } function set_vdev_validate_skip { set_tunable32 "vdev_validate_skip" "$1" } function get_zfs_txg_timeout { get_tunable "zfs_txg_timeout" } function set_zfs_txg_timeout { set_tunable32 "zfs_txg_timeout" "$1" } function set_spa_load_verify_metadata { set_tunable32 "spa_load_verify_metadata" "$1" } function set_spa_load_verify_data { set_tunable32 "spa_load_verify_data" "$1" } function set_zfs_max_missing_tvds { set_tunable32 "zfs_max_missing_tvds" "$1" } # # Use mdb to find the last txg that was synced in an active pool. # function get_last_txg_synced { typeset pool=$1 if is_linux; then txg=$(tail "/proc/spl/kstat/zfs/$pool/txgs" | awk '$3=="C" {print $1}' | tail -1) [[ "$txg" ]] || txg=0 echo $txg return 0 fi typeset spas spas=$(mdb -k -e "::spa") [[ $? -ne 0 ]] && return 1 typeset spa="" print "$spas\n" | while read line; do typeset poolname=$(echo "$line" | awk '{print $3}') typeset addr=$(echo "$line" | awk '{print $1}') if [[ $poolname == $pool ]]; then spa=$addr break fi done if [[ -z $spa ]]; then log_fail "Couldn't find pool '$pool'" return 1 fi typeset mdbcmd="$spa::print spa_t spa_ubsync.ub_txg | ::eval '.=E'" typeset -i txg txg=$(mdb -k -e "$mdbcmd") [[ $? -ne 0 ]] && return 1 echo $txg return 0 } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_005_0000644000000000000000000000007413607166133031603 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.516748195 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_005_pos.ksh0000755016037001603700000000473413607166133033121 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Destroyed pools devices was renamed, it still can be imported correctly. # # STRATEGY: # 1. Create test pool A with several devices. # 2. Destroy pool A and rename devices name. # 3. Verify 'zpool import -D' succeed. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL1 log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } log_assert "Destroyed pools devices was renamed, it still can be imported " \ "correctly." log_onexit cleanup log_must zpool create $TESTPOOL1 $VDEV0 $VDEV1 $VDEV2 typeset guid=$(get_config $TESTPOOL1 pool_guid) typeset target=$TESTPOOL1 if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool destroy $TESTPOOL1 log_note "Part of devices was renamed in the same directory." log_must mv $VDEV0 $DEVICE_DIR/vdev0-new log_must zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy -f $TESTPOOL1 log_note "All of devices was rename to different directories." log_must mkdir $DEVICE_DIR/newdir1 $DEVICE_DIR/newdir2 log_must mv $VDEV1 $DEVICE_DIR/newdir1/vdev1-new log_must mv $VDEV2 $DEVICE_DIR/newdir2/vdev2-new log_must zpool import -d $DEVICE_DIR/newdir1 -d $DEVICE_DIR/newdir2 \ -d $DEVICE_DIR -D -f $target log_must zpool destroy -f $TESTPOOL1 log_pass "Destroyed pools devices was renamed, 'zpool import -D' passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_miss0000644000000000000000000000007413607166133032113 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.551749319 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_missing_001_pos.ksh0000755016037001603700000001160313607166133034637 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Once a pool has been exported, and one or more devices are # damaged or missing (d/m), import should handle this kind of situation # as described: # - Regular, report error while any number of devices failing. # - Mirror could withstand (N-1) devices failing # before data integrity is compromised # - Raidz could withstand one devices failing # before data integrity is compromised # Verify those are true. # # STRATEGY: # 1. Create test pool upon device files using the various combinations. # - Regular pool # - Mirror # - Raidz # 2. Create necessary filesystem and test files. # 3. Export the test pool. # 4. Remove one or more devices # 5. Verify 'zpool import' will handle d/m device successfully. # Using the various combinations. # - Regular import # - Alternate Root Specified # It should be succeed with single d/m device upon 'raidz' & 'mirror', # but failed against 'regular' or more d/m devices. # 6. If import succeed, verify following is true: # - The pool shows up under 'zpool list'. # - The pool's health should be DEGRADED. # - It contains the correct test file # verify_runnable "global" set -A vdevs "" "mirror" "raidz" set -A options "" "-R $ALTER_ROOT" function cleanup { # recover the vdevs recreate_files [[ -d $ALTER_ROOT ]] && \ log_must rm -rf $ALTER_ROOT } function recreate_files { if poolexists "$TESTPOOL1" ; then cleanup_filesystem $TESTPOOL1 $TESTFS destroy_pool $TESTPOOL1 fi log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } log_onexit cleanup log_assert "Verify that import could handle damaged or missing device." CWD=$PWD cd $DEVICE_DIR || log_fail "Unable change directory to $DEVICE_DIR" checksum1=$(sum $MYTESTFILE | awk '{print $1}') typeset -i i=0 typeset -i j=0 typeset -i count=0 typeset basedir backup while (( i < ${#vdevs[*]} )); do setup_filesystem "$DEVICE_FILES" \ $TESTPOOL1 $TESTFS $TESTDIR1 \ "" ${vdevs[i]} backup="" guid=$(get_config $TESTPOOL1 pool_guid) log_must cp $MYTESTFILE $TESTDIR1/$TESTFILE0 log_must zfs umount $TESTDIR1 j=0 while (( j < ${#options[*]} )); do count=0 action=log_must # # Restore all device files. # [[ -n $backup ]] && \ log_must tar xf $DEVICE_DIR/$DEVICE_ARCHIVE for device in $DEVICE_FILES ; do log_must rm -f $device poolexists $TESTPOOL1 && \ log_must zpool export $TESTPOOL1 # # Backup all device files while filesystem prepared. # if [[ -z $backup ]]; then log_must tar cf $DEVICE_DIR/$DEVICE_ARCHIVE \ ${DEVICE_FILE}* backup="true" fi (( count = count + 1 )) case "${vdevs[i]}" in 'mirror') (( count == $GROUP_NUM )) && \ action=log_mustnot ;; 'raidz') (( count > 1 )) && \ action=log_mustnot ;; '') action=log_mustnot ;; esac typeset target=$TESTPOOL1 if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi $action zpool import \ -d $DEVICE_DIR ${options[j]} $target [[ $action == "log_mustnot" ]] && continue log_must poolexists $TESTPOOL1 health=$(zpool list -H -o health $TESTPOOL1) [[ $health == "DEGRADED" ]] || \ log_fail "$TESTPOOL1: Incorrect health($health)" log_must ismounted $TESTPOOL1/$TESTFS basedir=$TESTDIR1 [[ -n ${options[j]} ]] && \ basedir=$ALTER_ROOT/$TESTDIR1 [[ ! -e $basedir/$TESTFILE0 ]] && \ log_fail "$basedir/$TESTFILE0 missing after import." checksum2=$(sum $basedir/$TESTFILE0 | awk '{print $1}') [[ "$checksum1" != "$checksum2" ]] && \ log_fail "Checksums differ ($checksum1 != $checksum2)" done ((j = j + 1)) done recreate_files ((i = i + 1)) done log_pass "Import could handle damaged or missing device." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_cachefile_0000644000000000000000000000025313607166133031756 xustar0000000000000000111 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_device_replaced.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.489747329 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_device_replaced.ks0000755016037001603700000001157713607166133035425 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # A pool should be importable using an outdated cachefile that is unaware # of a zpool replace operation at different stages in time. # # STRATEGY: # 1. Create a pool with some devices and an alternate cachefile. # 2. Backup the cachefile. # 3. Initiate device replacement, backup cachefile again and export pool. # Special care must be taken so that resilvering doesn't complete # before we exported the pool. # 4. Verify that we can import the pool using the first cachefile backup. # (Test 1. cachefile: pre-replace, pool: resilvering) # 5. Wait for the resilvering to finish and export the pool. # 6. Verify that we can import the pool using the first cachefile backup. # (Test 2. cachefile: pre-replace, pool: post-replace) # 7. Export the pool. # 8. Verify that we can import the pool using the second cachefile backup. # (Test 3. cachefile: resilvering, pool: post-replace) # # STRATEGY TO SLOW DOWN RESILVERING: # 1. Reduce zfs_txg_timeout, which controls how long can we resilver for # each sync. # 2. Add data to pool # 3. Re-import the pool so that data isn't cached # 4. Use zfs_scan_suspend_progress to ensure resilvers don't progress # 5. Trigger the resilvering # 6. Use spa freeze to stop writing to the pool. # 7. Re-enable scan progress # 8. Export the pool # verify_runnable "global" ZFS_TXG_TIMEOUT="" function custom_cleanup { # Revert zfs_txg_timeout to defaults [[ -n ZFS_TXG_TIMEOUT ]] && log_must set_zfs_txg_timeout $ZFS_TXG_TIMEOUT log_must set_tunable32 zfs_scan_suspend_progress 0 cleanup } log_onexit custom_cleanup function test_replacing_vdevs { typeset poolcreate="$1" typeset replacevdev="$2" typeset replaceby="$3" typeset poolfinalstate="$4" typeset zinjectdevices="$5" typeset earlyremove="$6" typeset writedata="$7" log_note "$0: pool '$poolcreate', replace $replacevdev by $replaceby." log_must zpool create -o cachefile=$CPATH $TESTPOOL1 $poolcreate # Cachefile: pool in pre-replace state log_must cp $CPATH $CPATHBKP # Steps to insure resilvering happens very slowly. log_must write_some_data $TESTPOOL1 $writedata log_must zpool export $TESTPOOL1 log_must cp $CPATHBKP $CPATH log_must zpool import -c $CPATH -o cachefile=$CPATH $TESTPOOL1 log_must set_tunable32 zfs_scan_suspend_progress 1 log_must zpool replace $TESTPOOL1 $replacevdev $replaceby # Cachefile: pool in resilvering state log_must cp $CPATH $CPATHBKP2 # Confirm pool is still replacing log_must pool_is_replacing $TESTPOOL1 log_must zpool export $TESTPOOL1 log_must set_tunable32 zfs_scan_suspend_progress 0 ( $earlyremove ) && log_must rm $replacevdev ############################################################ # Test 1. Cachefile: pre-replace, pool: resilvering ############################################################ log_must cp $CPATHBKP $CPATH log_must zpool import -c $CPATH $TESTPOOL1 # Wait for resilvering to finish log_must wait_for_pool_config $TESTPOOL1 "$poolfinalstate" log_must zpool export $TESTPOOL1 ( ! $earlyremove ) && log_must rm $replacevdev ############################################################ # Test 2. Cachefile: pre-replace, pool: post-replace ############################################################ log_must zpool import -c $CPATHBKP $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolfinalstate" log_must zpool export $TESTPOOL1 ############################################################ # Test 3. Cachefile: resilvering, pool: post-replace ############################################################ log_must zpool import -c $CPATHBKP2 $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolfinalstate" # Cleanup log_must zpool destroy $TESTPOOL1 log_must rm -f $CPATH $CPATHBKP $CPATHBKP2 log_must mkfile $FILE_SIZE $replacevdev log_note "" } # We set zfs_txg_timeout to 1 to reduce resilvering time at each sync. ZFS_TXG_TIMEOUT=$(get_zfs_txg_timeout) set_zfs_txg_timeout 1 test_replacing_vdevs "$VDEV0 $VDEV1" \ "$VDEV1" "$VDEV2" \ "$VDEV0 $VDEV2" \ "$VDEV0 $VDEV1" \ false 20 test_replacing_vdevs "mirror $VDEV0 $VDEV1" \ "$VDEV1" "$VDEV2" \ "mirror $VDEV0 $VDEV2" \ "$VDEV0 $VDEV1" \ true 10 test_replacing_vdevs "raidz $VDEV0 $VDEV1 $VDEV2" \ "$VDEV1" "$VDEV3" \ "raidz $VDEV0 $VDEV3 $VDEV2" \ "$VDEV0 $VDEV1 $VDEV2" \ true 20 set_zfs_txg_timeout $ZFS_TXG_TIMEOUT log_pass "zpool import -c cachefile_unaware_of_replace passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_encr0000644000000000000000000000007413607166133032067 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.563749705 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_encrypted_load.ksh0000755016037001603700000000315613607166133034725 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zpool import -l' should import a pool with an encrypted dataset and load # its key. # # STRATEGY: # 1. Create an encrypted pool # 2. Export the pool # 3. Attempt to import the pool with the key # 4. Verify the pool exists and the key is loaded # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL1 log_must rm $VDEV0 log_must mkfile $FILE_SIZE $VDEV0 } log_onexit cleanup log_assert "'zpool import -l' should import a pool with an encrypted dataset" \ "and load its key" log_must eval "echo $PASSPHRASE | zpool create -O encryption=on" \ "-O keyformat=passphrase -O keylocation=prompt $TESTPOOL1 $VDEV0" log_must zpool export $TESTPOOL1 log_must eval "echo $PASSPHRASE | zpool import -l -d $DEVICE_DIR $TESTPOOL1" log_must poolexists $TESTPOOL1 log_must key_available $TESTPOOL1 log_must mounted $TESTPOOL1 log_pass "'zpool import -l' imports a pool with an encrypted dataset and" \ "loads its key" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_011_0000644000000000000000000000007413607166133031600 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.530748645 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_011_neg.ksh0000755016037001603700000000437513607166133033067 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # For strip pool, any destroyed pool devices was demaged, zpool import -D # will failed. # # STRATEGY: # 1. Create strip pool A with three devices. # 2. Destroy this pool B. # 3. Create pool B with one of devices in step 1. # 4. Verify 'import -D' pool A will failed whenever pool B was destroyed # or not. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL1 destroy_pool $TESTPOOL2 # # Recreate virtual devices to avoid destroyed pool information on files. # log_must rm -rf $VDEV0 $VDEV1 $VDEV2 log_must mkfile $FILE_SIZE $VDEV0 $VDEV1 $VDEV2 } log_assert "For strip pool, any destroyed pool devices was demaged," \ "zpool import -D will failed." log_onexit cleanup log_must zpool create $TESTPOOL1 $VDEV0 $VDEV1 $VDEV2 typeset guid=$(get_config $TESTPOOL1 pool_guid) typeset target=$TESTPOOL1 if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool destroy $TESTPOOL1 log_must zpool create $TESTPOOL2 $VDEV2 log_mustnot zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy $TESTPOOL2 log_mustnot zpool import -d $DEVICE_DIR -D -f $target log_pass "Any strip pool devices damaged, pool can't be import passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_rewind_dev0000644000000000000000000000007413607166133032043 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.505747843 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_rewind_device_replaced.ksh0000755016037001603700000001331513607166133035152 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # It should be possible to rewind a pool beyond a device replacement. # # STRATEGY: # 1. Create a pool. # 2. Generate files and remember their md5sum. # 3. Sync a few times and note last synced txg. # 4. Take a snapshot to make sure old blocks are not overwritten. # 5. Initiate device replacement and export the pool. Special care must # be taken so that resilvering doesn't complete before the export. # 6. Test 1: Rewind pool to noted txg and then verify data checksums. # Import it read-only so that we do not overwrite blocks in later txgs. # 7. Re-import pool at latest txg and let the replacement finish. # 8. Export the pool an remove the new device - we shouldn't need it. # 9. Test 2: Rewind pool to noted txg and then verify data checksums. # # STRATEGY TO SLOW DOWN RESILVERING: # 1. Reduce zfs_txg_timeout, which controls how long can we resilver for # each sync. # 2. Add data to pool # 3. Re-import the pool so that data isn't cached # 4. Use zinject to slow down device I/O # 5. Trigger the resilvering # 6. Use spa freeze to stop writing to the pool. # 7. Clear zinject events (needed to export the pool) # 8. Export the pool # # DISCLAIMER: # This test can fail since nothing guarantees that old MOS blocks aren't # overwritten. Snapshots protect datasets and data files but not the MOS. # sync_some_data_a_few_times interleaves file data and MOS data for a few # txgs, thus increasing the odds that some txgs will have their MOS data # left untouched. # verify_runnable "global" ZFS_TXG_TIMEOUT="" function custom_cleanup { # Revert zfs_txg_timeout to defaults [[ -n ZFS_TXG_TIMEOUT ]] && log_must set_zfs_txg_timeout $ZFS_TXG_TIMEOUT log_must rm -rf $BACKUP_DEVICE_DIR log_must set_tunable32 zfs_scan_suspend_progress 0 cleanup } log_onexit custom_cleanup function test_replace_vdev { typeset poolcreate="$1" typeset replacevdev="$2" typeset replaceby="$3" typeset poolfinalstate="$4" typeset zinjectdevices="$5" typeset writedata="$6" log_note "$0: pool '$poolcreate', replace $replacevdev by $replaceby." log_must zpool create $TESTPOOL1 $poolcreate # generate data and checksum it log_must generate_data $TESTPOOL1 $MD5FILE # add more data so that resilver takes longer log_must write_some_data $TESTPOOL1 $writedata # Syncing a few times while writing new data increases the odds that # MOS metadata for some of the txgs will survive. log_must sync_some_data_a_few_times $TESTPOOL1 typeset txg txg=$(get_last_txg_synced $TESTPOOL1) log_must zfs snapshot -r $TESTPOOL1@snap1 # This should not free original data. log_must overwrite_data $TESTPOOL1 "" log_must zpool export $TESTPOOL1 log_must zpool import -d $DEVICE_DIR $TESTPOOL1 # Ensure resilvering doesn't complete. log_must set_tunable32 zfs_scan_suspend_progress 1 log_must zpool replace $TESTPOOL1 $replacevdev $replaceby # Confirm pool is still replacing log_must pool_is_replacing $TESTPOOL1 log_must zpool export $TESTPOOL1 log_must set_tunable32 zfs_scan_suspend_progress 0 ############################################################ # Test 1: rewind while device is resilvering. # Import read only to avoid overwriting more recent blocks. ############################################################ log_must zpool import -d $DEVICE_DIR -o readonly=on -T $txg $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolcreate" log_must verify_data_md5sums $MD5FILE log_must zpool export $TESTPOOL1 # Import pool at latest txg to finish the resilvering log_must zpool import -d $DEVICE_DIR $TESTPOOL1 log_must overwrite_data $TESTPOOL1 "" log_must wait_for_pool_config $TESTPOOL1 "$poolfinalstate" log_must zpool export $TESTPOOL1 # Move out the new device log_must mv $replaceby $BACKUP_DEVICE_DIR/ ############################################################ # Test 2: rewind after device has been replaced. # Import read-write since we won't need the pool anymore. ############################################################ log_must zpool import -d $DEVICE_DIR -T $txg $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolcreate" log_must verify_data_md5sums $MD5FILE # Cleanup log_must zpool destroy $TESTPOOL1 # Restore the device we moved out log_must mv "$BACKUP_DEVICE_DIR/$(basename $replaceby)" $DEVICE_DIR/ # Fast way to clear vdev labels log_must zpool create -f $TESTPOOL2 $VDEV0 $VDEV1 $VDEV2 $VDEV3 $VDEV4 log_must zpool destroy $TESTPOOL2 log_note "" } # Record txg history is_linux && log_must set_tunable32 zfs_txg_history 100 log_must mkdir -p $BACKUP_DEVICE_DIR # Make the devices bigger to reduce chances of overwriting MOS metadata. increase_device_sizes $(( FILE_SIZE * 4 )) # We set zfs_txg_timeout to 1 to reduce resilvering time at each sync. ZFS_TXG_TIMEOUT=$(get_zfs_txg_timeout) set_zfs_txg_timeout 1 test_replace_vdev "$VDEV0 $VDEV1" \ "$VDEV1" "$VDEV2" \ "$VDEV0 $VDEV2" \ "$VDEV0 $VDEV1" 15 test_replace_vdev "mirror $VDEV0 $VDEV1" \ "$VDEV1" "$VDEV2" \ "mirror $VDEV0 $VDEV2" \ "$VDEV0 $VDEV1" 10 test_replace_vdev "raidz $VDEV0 $VDEV1 $VDEV2" \ "$VDEV1" "$VDEV3" \ "raidz $VDEV0 $VDEV3 $VDEV2" \ "$VDEV0 $VDEV1 $VDEV2" 10 set_zfs_txg_timeout $ZFS_TXG_TIMEOUT log_pass "zpool import rewind after device replacement passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030434 xustar000000000000000030 atime=1579730436.897379793 30 ctime=1579730479.570749929 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile.am0000644016037001603700000000260513607166133030434 0ustar00hutter2hutter200000000000000SUBDIRS = blockfiles pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_import dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ import_cachefile_device_added.ksh \ import_cachefile_device_removed.ksh \ import_cachefile_device_replaced.ksh \ import_cachefile_mirror_attached.ksh \ import_cachefile_mirror_detached.ksh \ import_cachefile_shared_device.ksh \ import_devices_missing.ksh \ import_paths_changed.ksh \ import_rewind_config_changed.ksh \ import_rewind_device_replaced.ksh \ zpool_import_001_pos.ksh \ zpool_import_002_pos.ksh \ zpool_import_003_pos.ksh \ zpool_import_004_pos.ksh \ zpool_import_005_pos.ksh \ zpool_import_006_pos.ksh \ zpool_import_007_pos.ksh \ zpool_import_008_pos.ksh \ zpool_import_009_neg.ksh \ zpool_import_010_pos.ksh \ zpool_import_011_neg.ksh \ zpool_import_012_pos.ksh \ zpool_import_013_neg.ksh \ zpool_import_014_pos.ksh \ zpool_import_015_pos.ksh \ zpool_import_all_001_pos.ksh \ zpool_import_features_001_pos.ksh \ zpool_import_features_002_neg.ksh \ zpool_import_features_003_pos.ksh \ zpool_import_missing_001_pos.ksh \ zpool_import_missing_002_pos.ksh \ zpool_import_missing_003_pos.ksh \ zpool_import_rename_001_pos.ksh \ zpool_import_encrypted.ksh \ zpool_import_encrypted_load.ksh \ zpool_import_errata3.ksh \ zpool_import_errata4.ksh dist_pkgdata_DATA = \ zpool_import.cfg \ zpool_import.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_014_0000644000000000000000000000007413607166133031603 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.537748871 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_014_pos.ksh0000755016037001603700000000427413607166133033120 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2016, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Temporary pool names should not be persisted on devices. # # STRATEGY: # 1. Create pool A, then export it. # 2. Re-import the pool with a temporary name B, then export it. # 3. Verify device labels still contain the expected pool name (A). # verify_runnable "global" function cleanup { typeset dt for dt in $poolB $poolA; do destroy_pool $dt done log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } # # Verify name of (exported) pool from device $1 label is equal to $2 # $1 device # $2 pool name # function verify_pool_name { typeset device=$1 typeset poolname=$2 typeset labelname zdb -e -l $device | grep " name:" | { while read labelname ; do if [[ "name: '$poolname'" != "$labelname" ]]; then return 1 fi done } return 0 } log_assert "Temporary pool names should not be persisted on devices." log_onexit cleanup poolA=poolA.$$; poolB=poolB.$$; log_must zpool create $poolA $VDEV0 log_must zpool export $poolA log_must zpool import -t $poolA $poolB -d $DEVICE_DIR log_must zpool export $poolB log_must eval "verify_pool_name $VDEV0 $poolA" log_pass "Temporary pool names are not persisted on devices." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147030254 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.479747007 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/setup.ksh0000755016037001603700000000403013607166147030251 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg verify_runnable "global" verify_disk_count "$DISKS" 2 if ! $(is_physical_device $ZFS_DISK1) ; then log_unsupported "Only partitionable physical disks can be used" fi DISK=${DISKS%% *} for dev in $ZFS_DISK1 $ZFS_DISK2 ; do log_must cleanup_devices $dev done typeset -i i=0 while (( i <= $GROUP_NUM )); do if ! is_linux; then if (( i == 2 )); then (( i = i + 1 )) continue fi fi log_must set_partition $i "$cyl" $SLICE_SIZE $ZFS_DISK1 cyl=$(get_endslice $ZFS_DISK1 $i) (( i = i + 1 )) done create_pool "$TESTPOOL" "$ZFSSIDE_DISK1" if [[ -d $TESTDIR ]]; then rm -rf $TESTDIR || log_unresolved Could not remove $TESTDIR mkdir -p $TESTDIR || log_unresolved Could not create $TESTDIR fi log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS [[ ! -d $DEVICE_DIR ]] && \ log_must mkdir -p $DEVICE_DIR i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i (( i = i + 1 )) done log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030536 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.482747105 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/cleanup.ksh0000755016037001603700000000330113607166133030533 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg verify_runnable "global" log_must set_tunable32 zfs_scan_suspend_progress 0 for pool in "$TESTPOOL" "$TESTPOOL1"; do datasetexists $pool/$TESTFS && \ log_must zfs destroy -Rf $pool/$TESTFS destroy_pool "$pool" done for dir in "$TESTDIR" "$TESTDIR1" "$DEVICE_DIR" ; do [[ -d $dir ]] && \ log_must rm -rf $dir done DISK=${DISKS%% *} if is_mpath_device $DISK; then delete_partitions fi # recreate and destroy a zpool over the disks to restore the partitions to # normal case $DISK_COUNT in 0|1) log_note "No disk devices to restore" ;; *) log_must cleanup_devices $ZFS_DISK1 log_must cleanup_devices $ZFS_DISK2 ;; esac log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_encr0000644000000000000000000000007413607166133032067 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.561749641 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_encrypted.ksh0000755016037001603700000000311313607166133033717 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zpool import' should import a pool with an encrypted dataset without # mounting it. # # STRATEGY: # 1. Create an encrypted pool # 2. Export the pool # 3. Attempt to import the pool # 4. Verify the pool exists and the key is not loaded # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL1 log_must rm $VDEV0 log_must mkfile $FILE_SIZE $VDEV0 } log_onexit cleanup log_assert "'zpool import' should import a pool with an encrypted dataset" \ "without mounting it" log_must eval "echo $PASSPHRASE | zpool create -O encryption=on" \ "-O keyformat=passphrase -O keylocation=prompt $TESTPOOL1 $VDEV0" log_must zpool export $TESTPOOL1 log_must zpool import -d $DEVICE_DIR $TESTPOOL1 log_must poolexists $TESTPOOL1 log_must key_unavailable $TESTPOOL1 log_must unmounted $TESTPOOL1 log_pass "'zpool import' imports a pool with an encrypted dataset without" \ "mounting it" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_cachefile_0000644000000000000000000000025313607166133031756 xustar0000000000000000111 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_mirror_detached.ksh 30 atime=1579730360.849765597 30 ctime=1579730479.493747457 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_mirror_detached.ks0000755016037001603700000000352213607166133035451 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # A pool should be importable using an outdated cachefile that is unaware # that a mirror was detached. # # STRATEGY: # 1. Create a pool with some devices mirrored and an alternate cachefile. # 2. Backup the cachefile. # 3. Detach a mirror from the pool. # 4. Export the pool. # 5. Verify that we can import the pool using the backed-up cachefile. # verify_runnable "global" log_onexit cleanup function test_detach_vdev { typeset poolcreate="$1" typeset poolcheck="$2" log_note "$0: pool '$poolcreate', detach $VDEV4." log_must zpool create -o cachefile=$CPATH $TESTPOOL1 $poolcreate log_must cp $CPATH $CPATHBKP log_must zpool detach $TESTPOOL1 $VDEV4 log_must rm -f $VDEV4 log_must zpool export $TESTPOOL1 log_must zpool import -c $CPATHBKP $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolcheck" # Cleanup log_must zpool destroy $TESTPOOL1 log_must rm -f $CPATH $CPATHBKP log_must mkfile $FILE_SIZE $VDEV4 log_note "" } test_detach_vdev "mirror $VDEV0 $VDEV4" "$VDEV0" test_detach_vdev "mirror $VDEV0 $VDEV4 mirror $VDEV1 $VDEV2" \ "$VDEV0 mirror $VDEV1 $VDEV2" test_detach_vdev "mirror $VDEV0 $VDEV1 $VDEV4" "mirror $VDEV0 $VDEV1" test_detach_vdev "$VDEV0 log mirror $VDEV1 $VDEV4" "$VDEV0 log $VDEV1" log_pass "zpool import -c cachefile_unaware_of_detach passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_004_0000644000000000000000000000007413607166133031602 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.514748131 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_004_pos.ksh0000755016037001603700000000504313607166133033112 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Destroyed pools devices was moved to another directory, it still can be # imported correctly. # # STRATEGY: # 1. Create test pool A with several devices. # 2. Destroy pool A. # 3. Move devices to another directory. # 4. Verify 'zpool import -D' succeed. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL1 log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } log_assert "Destroyed pools devices was moved to another directory," \ "it still can be imported correctly." log_onexit cleanup log_must zpool create $TESTPOOL1 $VDEV0 $VDEV1 $VDEV2 typeset guid=$(get_config $TESTPOOL1 pool_guid) typeset target=$TESTPOOL1 if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool destroy $TESTPOOL1 log_note "Devices was moved to different directories." log_must mkdir $DEVICE_DIR/newdir1 $DEVICE_DIR/newdir2 log_must mv $VDEV1 $DEVICE_DIR/newdir1 log_must mv $VDEV2 $DEVICE_DIR/newdir2 log_must zpool import -d $DEVICE_DIR/newdir1 -d $DEVICE_DIR/newdir2 \ -d $DEVICE_DIR -D -f $target log_must zpool destroy -f $TESTPOOL1 log_note "Devices was moved to same directory." log_must mv $VDEV0 $DEVICE_DIR/newdir2 log_must mv $DEVICE_DIR/newdir1/* $DEVICE_DIR/newdir2 log_must zpool import -d $DEVICE_DIR/newdir2 -D -f $target log_must zpool destroy -f $TESTPOOL1 log_pass "Destroyed pools devices was moved, 'zpool import -D' passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_miss0000644000000000000000000000007413612141513032102 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.554749417 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_missing_002_pos.ksh0000755016037001603700000001101213612141513034621 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Once a pool has been exported, and one or more devices are # move to other place, import should handle this kind of situation # as described: # - Regular, report error while any number of devices failing. # - Mirror could withstand (N-1) devices failing # before data integrity is compromised # - Raidz could withstand one devices failing # before data integrity is compromised # Verify that is true. # # STRATEGY: # 1. Create test pool upon device files using the various combinations. # - Regular pool # - Mirror # - Raidz # 2. Create necessary filesystem and test files. # 3. Export the test pool. # 4. Move one or more device files to other directory # 5. Verify 'zpool import -d' with the new directory # will handle moved files successfully. # Using the various combinations. # - Regular import # - Alternate Root Specified # verify_runnable "global" set -A vdevs "" "mirror" "raidz" set -A options "" "-R $ALTER_ROOT" function cleanup { cd $DEVICE_DIR || log_fail "Unable change directory to $DEVICE_DIR" [[ -e $DEVICE_DIR/$DEVICE_ARCHIVE ]] && \ log_must tar xf $DEVICE_DIR/$DEVICE_ARCHIVE poolexists $TESTPOOL1 || \ log_must zpool import -d $DEVICE_DIR $TESTPOOL1 cleanup_filesystem $TESTPOOL1 $TESTFS destroy_pool $TESTPOOL1 } function cleanup_all { cleanup # recover dev files typeset i=0 while (( i < $MAX_NUM )); do typeset dev_file=${DEVICE_DIR}/${DEVICE_FILE}$i if [[ ! -e ${dev_file} ]]; then log_must mkfile $FILE_SIZE ${dev_file} fi ((i += 1)) done log_must rm -f $DEVICE_DIR/$DEVICE_ARCHIVE cd $CWD || log_fail "Unable change directory to $CWD" [[ -d $ALTER_ROOT ]] && \ log_must rm -rf $ALTER_ROOT [[ -d $BACKUP_DEVICE_DIR ]] && \ log_must rm -rf $BACKUP_DEVICE_DIR } log_onexit cleanup_all log_assert "Verify that import could handle moving device." CWD=$PWD [[ ! -d $BACKUP_DEVICE_DIR ]] && log_must mkdir -p $BACKUP_DEVICE_DIR cd $DEVICE_DIR || log_fail "Unable change directory to $DEVICE_DIR" typeset -i i=0 typeset -i j=0 typeset -i count=0 typeset basedir backup typeset action while (( i < ${#vdevs[*]} )); do (( i != 0 )) && \ log_must tar xf $DEVICE_DIR/$DEVICE_ARCHIVE setup_filesystem "$DEVICE_FILES" \ $TESTPOOL1 $TESTFS $TESTDIR1 \ "" ${vdevs[i]} guid=$(get_config $TESTPOOL1 pool_guid) backup="" log_must cp $MYTESTFILE $TESTDIR1/$TESTFILE0 log_must zfs umount $TESTDIR1 j=0 while (( j < ${#options[*]} )); do count=0 # # Restore all device files. # [[ -n $backup ]] && \ log_must tar xf $DEVICE_DIR/$DEVICE_ARCHIVE log_must rm -f $BACKUP_DEVICE_DIR/* for device in $DEVICE_FILES ; do poolexists $TESTPOOL1 && \ log_must zpool export $TESTPOOL1 # # Backup all device files while filesystem prepared. # if [[ -z $backup ]] ; then log_must tar cf $DEVICE_DIR/$DEVICE_ARCHIVE ${DEVICE_FILE}* backup="true" fi log_must mv $device $BACKUP_DEVICE_DIR (( count = count + 1 )) action=log_mustnot case "${vdevs[i]}" in 'mirror') (( count < $GROUP_NUM )) && \ action=log_must ;; 'raidz') (( count == 1 )) && \ action=log_must ;; esac typeset target=$TESTPOOL1 if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi $action zpool import \ -d $DEVICE_DIR ${options[j]} $target done ((j = j + 1)) done cleanup ((i = i + 1)) done log_pass "Import could handle moving device." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_cachefile_0000644000000000000000000000007413607166133031757 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.486747233 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_cachefile_device_removed.ksh0000755016037001603700000000745413607166133035456 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # A pool should be importable using an outdated cachefile that is unaware # that one or more vdevs were removed. # # STRATEGY: # 1. Create a pool with some devices and an alternate cachefile. # 2. Backup the cachefile. # 3. Remove device(s) from the pool and remove them. # 4. (Optionally) Add device(s) to pool. # 5. Export the pool. # 6. Verify that we can import the pool using the backed-up cachefile. # verify_runnable "global" function custom_cleanup { cleanup } log_onexit custom_cleanup function test_remove_vdev { typeset poolcreate="$1" typeset removevdev="$2" typeset poolcheck="$3" log_note "$0: pool '$poolcreate', remove $2." log_must zpool create -o cachefile=$CPATH $TESTPOOL1 $poolcreate log_must cp $CPATH $CPATHBKP log_must zpool remove $TESTPOOL1 $removevdev log_must wait_for_pool_config $TESTPOOL1 "$poolcheck" log_must rm $removevdev log_must zpool export $TESTPOOL1 log_must zpool import -c $CPATHBKP $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$poolcheck" # Cleanup log_must zpool destroy $TESTPOOL1 log_must rm -f $CPATH $CPATHBKP log_must mkfile $FILE_SIZE $removevdev log_note "" } # # We have to remove top-level non-log vdevs one by one, else there is a high # chance pool will report busy and command will fail for the second vdev. # function test_remove_two_vdevs { log_note "$0." log_must zpool create -o cachefile=$CPATH $TESTPOOL1 \ $VDEV0 $VDEV1 $VDEV2 $VDEV3 $VDEV4 log_must cp $CPATH $CPATHBKP log_must zpool remove $TESTPOOL1 $VDEV4 log_must wait_for_pool_config $TESTPOOL1 \ "$VDEV0 $VDEV1 $VDEV2 $VDEV3" log_must zpool remove $TESTPOOL1 $VDEV3 log_must wait_for_pool_config $TESTPOOL1 "$VDEV0 $VDEV1 $VDEV2" log_must rm $VDEV3 $VDEV4 log_must zpool export $TESTPOOL1 log_must zpool import -c $CPATHBKP $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$VDEV0 $VDEV1 $VDEV2" # Cleanup log_must zpool destroy $TESTPOOL1 log_must rm -f $CPATH $CPATHBKP log_must mkfile $FILE_SIZE $VDEV3 $VDEV4 log_note "" } # # We want to test the case where a whole created by a log device is filled # by a regular device # function test_remove_log_then_add_vdev { log_note "$0." log_must zpool create -o cachefile=$CPATH $TESTPOOL1 \ $VDEV0 $VDEV1 $VDEV2 log $VDEV3 log_must cp $CPATH $CPATHBKP log_must zpool remove $TESTPOOL1 $VDEV1 log_must wait_for_pool_config $TESTPOOL1 "$VDEV0 $VDEV2 log $VDEV3" log_must zpool remove $TESTPOOL1 $VDEV3 log_must check_pool_config $TESTPOOL1 "$VDEV0 $VDEV2" log_must rm $VDEV1 $VDEV3 log_must zpool add $TESTPOOL1 $VDEV4 log_must zpool export $TESTPOOL1 log_must zpool import -c $CPATHBKP $TESTPOOL1 log_must check_pool_config $TESTPOOL1 "$VDEV0 $VDEV2 $VDEV4" # Cleanup log_must zpool destroy $TESTPOOL1 log_must rm -f $CPATH $CPATHBKP log_must mkfile $FILE_SIZE $VDEV1 $VDEV3 log_note "" } test_remove_vdev "$VDEV0 $VDEV1 $VDEV2" "$VDEV2" "$VDEV0 $VDEV1" test_remove_vdev "$VDEV0 $VDEV1 $VDEV2" "$VDEV1" "$VDEV0 $VDEV2" test_remove_vdev "$VDEV0 log $VDEV1" "$VDEV1" "$VDEV0" test_remove_vdev "$VDEV0 log $VDEV1 $VDEV2" "$VDEV1 $VDEV2" "$VDEV0" test_remove_vdev "$VDEV0 $VDEV1 $VDEV2 log $VDEV3" "$VDEV2" \ "$VDEV0 $VDEV1 log $VDEV3" test_remove_two_vdevs test_remove_log_then_add_vdev log_pass "zpool import -c cachefile_unaware_of_remove passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/import_devices_mi0000644000000000000000000000007413607166133032024 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.498747618 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/import_devices_missing.ksh0000755016037001603700000000713513607166133033662 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.kshlib # # DESCRIPTION: # A pool should be importable when up to 2 top-level devices are missing. # # STRATEGY: # 1. Create a pool. # 2. Write some data to the pool and checksum it. # 3. Add one or more devices. # 4. Write more data to the pool and checksum it. # 5. Export the pool. # 6. Move added devices out of the devices directory. # 7. Import the pool with missing devices. # 8. Verify that the first batch of data is intact. # 9. Verify that accessing the second batch of data doesn't suspend pool. # 10. Export the pool, move back missing devices, Re-import the pool. # 11. Verify that all the data is intact. # verify_runnable "global" function custom_cleanup { log_must set_spa_load_verify_metadata 1 log_must set_spa_load_verify_data 1 log_must set_zfs_max_missing_tvds 0 log_must rm -rf $BACKUP_DEVICE_DIR # Highly damaged pools may fail to be destroyed, so we export them. poolexists $TESTPOOL1 && log_must zpool export $TESTPOOL1 cleanup } log_onexit custom_cleanup function test_devices_missing { typeset poolcreate="$1" typeset addvdevs="$2" typeset missingvdevs="$3" typeset -i missingtvds="$4" log_note "$0: pool '$poolcreate', adding $addvdevs, then" \ "moving away $missingvdevs." log_must zpool create $TESTPOOL1 $poolcreate log_must generate_data $TESTPOOL1 $MD5FILE "first" log_must zpool add $TESTPOOL1 $addvdevs log_must generate_data $TESTPOOL1 $MD5FILE2 "second" log_must zpool export $TESTPOOL1 log_must mv $missingvdevs $BACKUP_DEVICE_DIR # Tell zfs that it is ok to import a pool with missing top-level vdevs log_must set_zfs_max_missing_tvds $missingtvds # Missing devices means that data or metadata may be corrupted. (( missingtvds > 1 )) && log_must set_spa_load_verify_metadata 0 log_must set_spa_load_verify_data 0 log_must zpool import -o readonly=on -d $DEVICE_DIR $TESTPOOL1 log_must verify_data_md5sums $MD5FILE log_note "Try reading second batch of data, make sure pool doesn't" \ "get suspended." verify_data_md5sums $MD5FILE >/dev/null 2>&1 log_must zpool export $TESTPOOL1 typeset newpaths=$(echo "$missingvdevs" | \ sed "s:$DEVICE_DIR:$BACKUP_DEVICE_DIR:g") log_must mv $newpaths $DEVICE_DIR log_must set_spa_load_verify_metadata 1 log_must set_spa_load_verify_data 1 log_must set_zfs_max_missing_tvds 0 log_must zpool import -d $DEVICE_DIR $TESTPOOL1 log_must verify_data_md5sums $MD5FILE log_must verify_data_md5sums $MD5FILE2 # Cleanup log_must zpool destroy $TESTPOOL1 log_note "" } log_must mkdir -p $BACKUP_DEVICE_DIR test_devices_missing "$VDEV0" "$VDEV1" "$VDEV1" 1 test_devices_missing "$VDEV0" "$VDEV1 $VDEV2" "$VDEV1" 1 test_devices_missing "mirror $VDEV0 $VDEV1" "mirror $VDEV2 $VDEV3" \ "$VDEV2 $VDEV3" 1 test_devices_missing "$VDEV0 log $VDEV1" "$VDEV2" "$VDEV2" 1 # # Note that we are testing for 2 non-consecutive missing devices. # Missing consecutive devices results in missing metadata. Because of # Missing metadata can cause the root dataset to fail to mount. # test_devices_missing "$VDEV0" "$VDEV1 $VDEV2 $VDEV3" "$VDEV1 $VDEV3" 2 log_pass "zpool import succeeded with missing devices." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_erra0000644000000000000000000000007413607166133032071 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.565749769 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata3.ksh0000755016037001603700000000653613607166133033277 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zpool import' should import a pool with Errata #3 while preventing # the user from performing read write operations # # STRATEGY: # 1. Import a pre-packaged pool with Errata #3 # 2. Attempt to write to the effected datasets # 3. Attempt to read from the effected datasets # 4. Attempt to perform a raw send of the effected datasets # 5. Perform a regular send of the datasets under a new encryption root # 6. Verify the new datasets can be read from and written to # 7. Destroy the old effected datasets # 8. Reimport the pool and verify that the errata is no longer present # verify_runnable "global" POOL_NAME=cryptv0 POOL_FILE=cryptv0.dat function uncompress_pool { log_note "Creating pool from $POOL_FILE" log_must bzcat \ $STF_SUITE/tests/functional/cli_root/zpool_import/blockfiles/$POOL_FILE.bz2 \ > /$TESTPOOL/$POOL_FILE return 0 } function cleanup { poolexists $POOL_NAME && log_must zpool destroy $POOL_NAME [[ -e /$TESTPOOL/$POOL_FILE ]] && rm /$TESTPOOL/$POOL_FILE return 0 } log_onexit cleanup log_assert "Verify that Errata 3 is properly handled" uncompress_pool log_must zpool import -d /$TESTPOOL/ $POOL_NAME log_must eval "zpool status $POOL_NAME | grep -q Errata" # also detects 'Errata #4' log_must eval "zpool status $POOL_NAME | grep -q ZFS-8000-ER" log_must eval "echo 'password' | zfs load-key $POOL_NAME/testfs" log_must eval "echo 'password' | zfs load-key $POOL_NAME/testvol" log_mustnot zfs mount $POOL_NAME/testfs log_must zfs mount -o ro $POOL_NAME/testfs old_mntpnt=$(get_prop mountpoint $POOL_NAME/testfs) log_must eval "ls $old_mntpnt | grep -q testfile" block_device_wait log_mustnot dd if=/dev/zero of=/dev/zvol/$POOL_NAME/testvol bs=512 count=1 log_must dd if=/dev/zvol/$POOL_NAME/testvol of=/dev/null bs=512 count=1 log_must zpool set feature@bookmark_v2=enabled $POOL_NAME # necessary for Errata #4 log_must eval "echo 'password' | zfs create \ -o encryption=on -o keyformat=passphrase -o keylocation=prompt \ $POOL_NAME/encroot" log_mustnot eval "zfs send -w $POOL_NAME/testfs@snap1 | \ zfs recv $POOL_NAME/encroot/testfs" log_mustnot eval "zfs send -w $POOL_NAME/testvol@snap1 | \ zfs recv $POOL_NAME/encroot/testvol" log_must eval "zfs send $POOL_NAME/testfs@snap1 | \ zfs recv $POOL_NAME/encroot/testfs" log_must eval "zfs send $POOL_NAME/testvol@snap1 | \ zfs recv $POOL_NAME/encroot/testvol" block_device_wait log_must dd if=/dev/zero of=/dev/zvol/$POOL_NAME/encroot/testvol bs=512 count=1 new_mntpnt=$(get_prop mountpoint $POOL_NAME/encroot/testfs) log_must eval "ls $new_mntpnt | grep -q testfile" log_must zfs destroy -r $POOL_NAME/testfs log_must zfs destroy -r $POOL_NAME/testvol log_must zpool export $POOL_NAME log_must zpool import -d /$TESTPOOL/ $POOL_NAME log_mustnot eval "zpool status $POOL_NAME | grep -q 'Errata #3'" log_pass "Errata 3 is properly handled" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_002_0000644000000000000000000000007413607166133031600 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.509747971 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_002_pos.ksh0000755016037001603700000000671613607166133033120 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Verify that an exported pool cannot be imported # more than once. # # STRATEGY: # 1. Populate the default test directory and unmount it. # 2. Export the default test pool. # 3. Import it using the various combinations. # - Regular import # - Alternate Root Specified # 4. Verify it shows up under 'zpool list'. # 5. Verify it contains a file. # 6. Attempt to import it for a second time. Verify this fails. # verify_runnable "global" set -A pools "$TESTPOOL" "$TESTPOOL1" set -A devs "" "-d $DEVICE_DIR" set -A options "" "-R $ALTER_ROOT" set -A mtpts "$TESTDIR" "$TESTDIR1" function cleanup { typeset -i i=0 while (( i < ${#pools[*]} )); do poolexists ${pools[i]} && \ log_must zpool export ${pools[i]} datasetexists "${pools[i]}/$TESTFS" || \ log_must zpool import ${devs[i]} ${pools[i]} ismounted "${pools[i]}/$TESTFS" || \ log_must zfs mount ${pools[i]}/$TESTFS [[ -e ${mtpts[i]}/$TESTFILE0 ]] && \ log_must rm -rf ${mtpts[i]}/$TESTFILE0 ((i = i + 1)) done cleanup_filesystem $TESTPOOL1 $TESTFS destroy_pool $TESTPOOL1 [[ -d $ALTER_ROOT ]] && \ log_must rm -rf $ALTER_ROOT } log_onexit cleanup log_assert "Verify that an exported pool cannot be imported more than once." setup_filesystem "$DEVICE_FILES" $TESTPOOL1 $TESTFS $TESTDIR1 checksum1=$(sum $MYTESTFILE | awk '{print $1}') typeset -i i=0 typeset -i j=0 typeset basedir while (( i < ${#pools[*]} )); do guid=$(get_config ${pools[i]} pool_guid) log_must cp $MYTESTFILE ${mtpts[i]}/$TESTFILE0 log_must zfs umount ${mtpts[i]} j=0 while (( j < ${#options[*]} )); do log_must zpool export ${pools[i]} typeset target=${pools[i]} if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool import ${devs[i]} ${options[j]} $target log_must poolexists ${pools[i]} log_must ismounted ${pools[i]}/$TESTFS basedir=${mtpts[i]} [[ -n ${options[j]} ]] && \ basedir=$ALTER_ROOT/${mtpts[i]} [[ ! -e $basedir/$TESTFILE0 ]] && \ log_fail "$basedir/$TESTFILE0 missing after import." checksum2=$(sum $basedir/$TESTFILE0 | awk '{print $1}') [[ "$checksum1" != "$checksum2" ]] && \ log_fail "Checksums differ ($checksum1 != $checksum2)" log_mustnot zpool import ${devs[i]} $target ((j = j + 1)) done ((i = i + 1)) done log_pass "Unable to import the same pool twice as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/blockfiles0000644000000000000000000000013213612143057030427 xustar000000000000000030 mtime=1579730479.634751985 30 atime=1579730489.089055548 30 ctime=1579730479.634751985 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/0000775016037001603700000000000013612143057030510 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/PaxHeaders.151519/cryptv0000644000000000000000000000007413607166133031767 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.628751793 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/cryptv0.dat.bz20000644016037001603700000027077413607166133033330 0ustar00hutter2hutter200000000000000BZh91AY&SYAh@NØÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàšßò(B¡I )E¨ *ˆ!@‰R"   H P%@(B  ‚P”‘@ ª©@@PP 4P…(€ € PPPª@€ €@€( (("ª”hdd hРô@ oõ5IÐOQz†4dÉ“ ¡ÔÉš7ª‘& €˜“ÀLI€`&©Ñ 4ÀLChÐÐ4ÐhÀžL0šb`Ä`™@¥$„ šO4žƒ"böSôÍL4ÑSñ2oõRO'©©µ5?J~ ‘<£ÐÁ5Fõ<ši¤õ4ÚOj<§¦ÔžÊ›Ê'ˆÉ?*{I=Aú¦OS2Ÿ…2'Œ©žShIµ<£dz§Ù%öVϸzwñ¯ú'ýwçÇÂtèœðcœõç³}»g©µÒŸ –9×1íÏÂ4i†ìi³G„Oæs ÙɆ1 77¶r;çIÈÙת\ §ß¿î'ž0í]³·wåÙ7·¶oor»§†wNéâ^ô¯4é9ÎVáÈär¹›žƒÌ<IäØ71^Aè^Q§‹xö9[—#M,ai•;Gí|íÓu¥Ø½Cqô†ë}P9qÎ C¡4¤'±iÔ4c¹ŽtÏÆx°/&êàc¯c+‰e€W°0lEÁËœÁÌœÑûƒˆ±;C´;cµ;f÷tXÇ*f™u–^-Ý;FÒºl¾íõϹ›_ƒpZÞ±âï¼5ã­Îq‘x÷BÆ#-¦ö&묪p²í£‹+’ÄÓ3ܵfI«g×Ú´_XÎ\fË„e·°Æg–Ìa³!ndÕ‹XÆ,L¬Ktì·[\­­ Ë9#Sˬ“À==«}— Eªûû…­ÌÎkÌt—'R\$ê®….«Ù3«cfµèbæ9l2Ã,KX»t±að~¿ì7ªý†(|O¥IňRñ8£2u”ˆ/YÏÒ*ê°J^¿ÿÇð8?vo¡$'áePU.®$‰C?M§`uŒcÅŒ¼0Ðæ3ÖÚ“²mµ—f=•Žuì¯å7»fIöŒ¿‚û SfÞX¿ômiéYV dè.{K£x RõËzÒh¾öÔlËÚÙ÷–KgZÐð6^¶ÈÝeÊö–ƒ±b[¬©Ö<Õª÷w×-D×0.K.ÁØY ¯¼CRnÖª•í¬'bÄXÕ¿j­>z«µ—FÄþݶXôןeíš´¼zÜÔodõ I)æm[cü.‚Ï.²zèä²Ðw«ÜÂÄ» ׺Q²ÿ}rêG8ȼ0Ne„Ä ÙƒLÆ1·,Kî,²îl½}ηAŒ¾3ÅX{k´jŽº¬ªú‹)ÞÙX°¾–Á=#ÛÛ[=Xê^JÓúmÍÕlš¾ùj­£YxÒÅ‹%‹Ýǃyk¸·ccèØÿc9÷§µ}le€CŒB#hÕ± ÆúD™V2&FÝ´/ ƒ–ÙPÀéˆ÷> 6 NÝ÷cN$ÊL°cBüõìL¢ Ñ6ìJJ`¶ì%+Ó²äF&µŠg±@g1h |ÛºÅâ.e´wF쉹Lõ~´½ca£,cЧ½¿¹n©Òcío/iSÆY(sÞ=ëR¤¢Gq¸`0{q‰¿¡( €¸(0VÈ5îìÛÒ±‚28&¹ß2ÐÝ8•«£}U̼Çzþͧ%ƒÈ0‡)s]þK™o–:ëüQÂÐöŒ·JÓV{5ÈzH[›Z‘”©læÐ¦e²­BSØ=ÓT;êæþ6ÌŒMƒ{R¬ÁX!)Ôª½xÌB'žê‚-éZñ K®kZÖCçkP¯g¤LBÑVÑ[‘š3ǰtm±«h3´WjbxD'ƒ`1·f¥X›'ëbB6ZÖ¼ˆ>›lÈcPíã+Ù´Ísä4í٤ܽ;½0o Úµ…‹VAçÛd #9¼€òÍÝäÐÁ7óJAÎ…ÍÝÏlX:öëW‚±ºÇçÛ‹Á>…¸ønäâñÌ ¥n Ö6ÁÚ5nÜÄõn¼–pC× CÕ;Ûv2LOìáÆS…xáÑ¡8æšÇvdd £Å®±ê¯†´¾{„t›'¢“ÃÝ(ó6^véÎɵ”…Âo í= ÖStoêÒsMÝ  § ã¨+RÁ1à‚) öƒ)‘ûX„®CV;àíˆgÆ¥^YÝUÄ¡4sï Þ\s\Ï/ÍB$Œÿ5Ë×¢}­Ö®Îä:‹¡e£V£F¬‰Ƀ¶ƒX@Mý¦—Ãã=€òí „XÄ÷¨Nù‚U¨e!ã¬h\¢•£ŠQØ5N uÅi=ÝØ‰Læ©íû€1èrŽÈ?Á@þÚ1·ÚzÇ®§e«Z¬ñ‘Ê3 PÁb—,BD)›„&ŸÃÒ½+°B“¿!Á㛡‘ñU€à5ã,s,¨h5/Bç˜7 j\xꆠzvÌîcf²ÐàÙEá¦2£î7§ŽC–åYJñOFÎy·–y0|¶“IÕ›ÓX2ÆSÚ7 pªãF¹½»ÂÄ0Ã6Öáλ“E ùcA„NH§iá”eHÏ~¶S’oH`S±{ue¼ã°w4& åµeÕiidŸ`²éØèÝmmeÔ%üਫí…yâ7ª|Ö@ªnYƒÅµŽ,­¹EÕŽbØt/ô4º6FʸŒ°‰ð]KÌdPèYú;ËòÙllû/ÍôÈÛ»Ë|!æÙŽØöìE’;Aº0l”•lçDâ¿7…xðÊmZvôPëÊŒú¡låÝ£Ü;Á=˜„*™ƒC<Ùº†ˆÈÓ¢OBÑ̺ÆS‹eµ@ô„¥PÖ¡…E<¶™ r·.aèÞÁšÏ#n‡ê†IÞÐí†GÁ fèø ÿàoíÙ·CÕ´*\,Fݘ0`öîYˆv-²$ß5ªqmáÁ6-óÃ¥{G—eº‡…{— {Ç(Èã]#b4K— hœó†{¦½È½“º¼Ëtdx7µg·¦±‰ óIÈ1ZLq¼!- Ý0|æ&^ÆìØ0jX5 ù g@…øƒî°~¤T0>—î«=òŠä#qL¡ÛÈ  ê7„ Ù±ŒŒ`ï,æàœçK€#?"®t섹olåe€;Iƒ·1QÆ:·f؃š.P¢ìÅf sh sL„L¾{öŘì1–ï[呵ïXÄæ »!Î&ÞP~b‰€´œœ#È¡)ônÎà¶ŽÆákã]«Ö¸:ÛhüËÀwñbßá ÈômõªBc}CÆÆÇ~C¡`â˜Ç àß™”ÈnìÀ4,ñXèÆ$%¸d"G&òo<äœK¹°{çHÜ3‘?³¦lÛñhöjÊ"B ›øÁ‘ƒ&'Ì{Æäu*áYcÔbfº°ÐBŠ·±ŒãÇì$Û%Ñ^͘:ÖÔíìL²©ÛؘãÙ°W4­;Â!£beÛ@2½s#dÁ9u`{hqˆ^ÐôÞµ¬(„ÂúdY@ä”â̆P‰ªVüí¯.ÿ&GÈfƒÜ³WÒ ÿa°Z¿¢²OÄX¼‡›±4²¯gyÛRë¬Uﬧü ÅÚŽÁdjËVæ‹áÚµeì.ÉlP ±x¯@9¶?ááÝøcsNÔíïÜ»ëæ›c³‡3Ü\#O2Ôó{ëw³/Wjì™r_µ|¨o¨J%$*ôMÕ»>K)Ï0`„Â>“à0Â`í1ßšf& Á½>3ôH4îYˆ¶,þ] V{Î5l@Y+*9Ö<{ã4Ωۋp>»Ü1Uªo­£§eFèØ‡¶lÐÚ1¹vÖÝžuËž 2‡6úÌNƒ1¼‘O¶rŒi\ cNÄ%«¶1”äX‡ñv.MÞÞ¼uÏ:_›¤„÷ù"xÈf©‘«}6êñvÿ&[#ÿ\ó{uÎúè›a¦uãŸVlÖý†­«y‡Ó+0 âÞGF„€ïîM¤+¾!™C¾`Ë3 nZ.öÊKÑ·Wxbc9'Ñoš<Ë9Yo‚Þ0¿«upjà ZéšÑ‘€F¤Æ×pÚ¶/éܘÐf˜‡¯,†’èÄÄÉäÚ¦µ©‹‹BeÔ`î¬Ç¯WÂBD½=ý±»¶)¢­¸æÙàìØ8pǤÆuì [ߘ;è6¬ÖØbnŽ9”£wvhT?›†kYí«"ÞØ3œÀ ƒ9±CÈûN%ö^%ÀµÏ@Ìk¼Z.AžÑe'NÝÛ³#Õ»k9¦f·(lZ–7`ÀgÆÌ#Lç)ìv‹˜½Ç_˸™c LŠt铈´-z7}†¥¬jPÑ0iÕ¸sŒ~ ½0z§Ä^ÙŽ c{fÄÛ+RÒ9g^ýïì»8)ƒØ³šÆðÈꘘ™aí+ß·‘±%¼,‰Á:–'$¬š`ùh_^ÈsŒ€Ú°{KbrMí”ù„”žiŠâæŸ@nÌl‰lÅ‹=²sxd–oO˜ß\àJˆuì^kóœ 2ÙææÓ;‹)Ý]C,{†Aí­bã9©`ÁÑ´\k=ɰe/¢ùUXÇÒ}WFÆÌ~æ$ìÁ‰{Ö}Üêô,†!Î8Wˆg²›F‚o¬Cèõli„lÆ&± ¯DÆÞ\«9ó†GZÁîÜq1 HÕCê`…`o,DLJÄ3ÃÓ¾û€0¬¼IÕÚЯwçT<»Õ6àÒ}GñíôÓñŒ »§k˜Ê¥sæê‚7à|ÖZøŒ V6'£yæ°®E¹e²<Ëw,[‡Ùwçû³C ÂÌ á[–cÄ>)`ÍÒ4ì@üí&&ƒ½ƒbeF3ü¹`btÎAö˜Âs¾+j/ ˆˆ‚‹á¸‡:ÈgØê±Ôr]í–’è²x½µ¨þÁ£ XcLc±tßß}sâ<»Æ¿÷nƒ÷ÛÆ1jÆÅÙ˜:f0ÆŒiŒhÓF0ÆÌi¹Æ0ÆØÇÒ—®Í—RÓüëû±ÂšV¬™˜ÎVZ¸ Ž£ê¼Ýø·³¾öïîêóWtçƒð@‘4”òŽèÕ ’ÿÖcÕ+·½«{w—LÛ¸q-š–Ùê‡>ù¯(ðí<öî)§h9—.X3ç={L> ìÆèõ¨V4ÌC-–ÆìÝØ?XË@·f»sç¾áÓº2ÙÀµÎ„Å(³+©`?üúF¨˜ê-–_:ˆ™{E_€X¾}‹,Ybú6MYWôèájË#äX¼½—ͽoS`Çϱýö,XŽÂ¼ôz‹îï'Vøå°u×¬ŽŠÜ½¥½h_Áƒý•¨c¹2:Uqí̪°`‰lÀ`„OºÜ·‡Çf³mÔãµ0B Ø+±/®8v/JÊj^åZw‘v;óÃ)ÛµŽ©ªÄ)ÆSð2Ø!¦vyã1 ÈÁÇ>ãÀ½ò‡ÈÄÁ ©l…g3ƃ¿zó£–:2ÑÎ+\¦¥Õ=cŠw©œÛ>ãZP vc£BYÎëh¯pÀC» æ[‚` 2˜;[0)Š·Zý¶¯4?áÉ0Bkœ9P20zc™7Sû5(ÑÔyebd8‰¥˜ßЯ}öcux%båÛÍoò ŵbc~XH†¤Ûºö%0Mð‚Íšœûù ·­v·êœ EÊ3˜Ç 8çD¬Á«sN©žiljª°nãžBÕÛõ뎡œ ÒrìHqîîñc-Å2†˜kÙ¤ 8Ó\FæYL@ÙˆêT' nÏg9$8ÖXÓ¿C­á$CÌ?#×~'¸>×rêÙÅ[0?˵üÇÈB g!Pߨ<³hÓ1–ªê˜ÜÁ´ÞAÆ;RìÕ¼sIƒ19$)Ÿ<žòìÞœûêƒ\Õ!æ ÷ÇDôíxlÛûû¢w¦°lÚMZµÌÇ ëcÏ6¬±¤)Í&&Œ.Œ¬¨m0p¬3ôã³`rÍõ s¾Ͼø¡~DƒÈYWþö/Ϳ˕l\’rÚ]+æZT XÁxÌl¶[pËC|`æ5-±ZïOŽË {=ײ3ÄÛžáû·¶QÝuL…œíîu Œ€rŒmÀÈ3ðÞi–7¦d³ÿ§tdtùór%Ý™¢0g1Ô€smcI€ÊÛÙÿOV&W0áZÞFœëÆc|<öQU¾ŸSižèÜCß>d¾ða›C*1ÌoˆÇH‰ãGïuL¬Ãÿˆ¦æ,Ž"'tañÛ"_n5*Ó¾;»²®ˆH{è‘ÑD2ƒ}*¸‘‰† #žñº·‡¢ì wvms#¤r 0ý%Pcö1»ÛT…³úºW³CL‡Â3½âãLÐ`;zmé›ÈÒCy,_¢a öuÿÊZXÙ±&à 9óÇ.QÛË&±H°‘Ì„ÉEê3z~å¦ú¤¾8"fÑ#ˆ‡‘þ Sd'Õ’M3P$·òÊù »pZ–¦#CF–0ÆÃÊßuxK}‹…ñ®Q 85`!·!)^Má[Ò¿ºÛ{)¿ýÑ?ƒØ7—iÍࢎj$ vRôl¤€¥JÈð„`ÎkÁ–<ڵ̲1Ú1!µ7ààÄ#/>[‘~½l·Õ‘½irÕtWr/ pG%ÓŽ½Y|[*êß6Å£™z«I}­ñ<3ú¬ðR"AšðìHfHDöîúÄNj^41CÂ`¬ñ_®[pÕ3 ä<†ÑæsŠ`ÄËjÜš Iâæ›ñuzf‡8Ú4[€db 1Ñ¢’›fP2›ù±"I¯ÈÈådf½PÙ"D†óåUéãzú›sé,rÉŒ»;-2Äž-ŽrÁ¾ÄõÖ7Û%«Ÿnp¾ž×ÖZ¼U²åŽë­¯ƒy»p·ØeÚ-'ó±Âñ•Ëzhü»ç-.eÖÜ–_ÙzØÙϸYi¥…ÔV24\pÊ ¦G…sÏeˆJcC`Kyšo±sïcj®K/õXÑx7-²ä»«NÖ2:‹£o¹Ged•Œ«)’¡ºïî¾ÜÜ“ ž1$‹×!é´9óthPe0{ÆöÈ÷€Á·ãÕ'ÆYÀ÷¹}.˜JÃlƇ&Àyò6у?APh0ÎrŽøÄ4äºðªw$&ŒŒÆê„hMf4Ÿ¼˜ã‚°V[ iÙì%ºßabçGóîîÒ>¡n¾®Ë»[FéNEÖ Ë·¶/)dÊèZ«„p¿2Ë©×0Ër,hé™®nÏ…#–xÇbÈîÊᙣ­bp­Ã×:'–qxÊB ÉÜ5#ìÑ«pHñn5ÐZÖ5mä'¾ƒ€vö4OäPoÈAÄ¢{,C"ÀG³¿к·|^¢2?evv£ÕFGù¤Õó‹#­¶«æ-®ÒÚ­Rúë}\¶#ίMm~õºOÖ²¬°YabÊ]݉pmpÜ¡|â·miü 4쌊ðâd=F1­e³ƒÆ+`3Ÿ`‡\5 ×âCð¨÷åPþϲÈà‘;Ô.ŠËg!8lP ‡,ÄÁƒV3o¨u Ù­`è^Uò ;=¯+KÇ+—ãÌ¿õâž½_UáMÖ¡r>Sé6Oš®@7†àœ€:÷6 ä<—qv÷‹têÌqBÜ<ê3šVú>»ÿ\»–wa‰ëPš8çÀxöƒ‰PŸ&èî£jŠa+º bmpŽ$ =á9דz±ð+@bjF1üP¼wBô7¦½µg¡ó»îÎS°x§ÐCæBSŽèÝÍ3ß™ @Ä­J``òÈ$8D)™3˜o,ô8á‘ÜÜ+ò†ø†üÑJJêû48vG›BÌB 0˜j>˜ßÇËCR­Z¸°W,Œg¡Ù!`?Ý Å ;zjvÌ¿;j‡’?í 3¶½›ˆCû0n}¯s#nÊVA±vðqcf ›d¬@ìYΘòj³°ÅèØ•Œc{ =[éÁÌ5@á2„æ7bzgÏÑ¡—çC(ãâÌîu§Ú*ä_áÜê¶•L°«©o»{£jþ}9Ë*r„HhÚ¡ƒ:Ä$.„ÖÉôÞyá›Û5 ŽiYh<°ãÝÙLJHñHF‡’k:!ý­xñ–…%ª°õÎÙ¸f™®}V½âb2›Èîu¬LlÙÇ!üÙ,3‹Zçfñìð}a²wBBˆÚ¼Ûß¡0‘”ÖXÆ„oÌò/`õ„§DñðѤy#QÍido¼ n_y•|Š¢wáÎ!…á‘䜋Lït\³†x¢SRÀé˜! :ÆöÁ %p,ƒ~B (Áƒ)Ú¿1¼cÄ5hU5/Í|Ñ¿29È¢‚ÓEYè|nòçZw{CwC€lO &‚î4â_Â3X ÁñËv‹´¹˜÷LÕ•'¼âÝš—ÂiÌ84¼`… °BRT³‰C“ykƲÛaòÏ f—aÈm«`ß\+Ú#NçÕ¡ÀƒywhÚ³s„0Â^Žäö¬Ó“ÉÃ-‚ ‡ Ä6ƒÍ¡ÎŽ™Á°bDþ@07wrÙ‰µ* úÌ;«XùÎŒž†5¼’ñÆ ÷ßYÌêA -¸¤ µÎ埚…Kñ¡²fÌ…Å©räÚÇ=kp3``Õ°ò5øt¯lRO%–h=ÁYä½á”ëø\ÓÄŽÖ?ÀkÚaïßèÁ¢†êéFðöƒ)±f«§h2Ø Ftî}Ía1¦v¶' x‡à~—Î}WÓê^‡ S»k½¡”~!­vŽ „ 9¡ƒÄ0=vòÎVò<+7X‡ã×±“Q¢¼ xïìÕcj˜ Ƕ5 “ùµ<0i?ƒà03CVÄã^ÙŒ'!ˆC"Ï`5#¶!˜u#³¢a¯-ÞEØðÆòÔµ†5ÝQ `9cv6 kJ$ö%csäâ0sçèÑf7£Þ/%IµÏ”dI¬`ßœàP½ð]ì–Á È¡ `!õ Ô+Pë›êdg¦¬YÐ0t-ùM íνƒ=”1ûÇ1!“‘ž3k4tè@p3\3ÄhŸ…žVÍV Ö™áó&€f±L¡í‡‚ðû,öSPÁº0e¶tÊäe‘‹…äãìc‚éÇÕY&®„j÷v×Ò¡úºæ°B Á¯|ÖÁÕ3Æñ¡AÇœ[EöLSã7¤$gZ´5£"±ddBû›ežðˆà™î™ ¡®ÔÒ¿€ÿ·íì†]ªÃn0o,@<3)Œh»±^ÞG0í¤×ßoÌËÜošw]Ls€Cço¯Òçž8äî›k6Cî¡2±½;sh‡¹¾Ú7)ÂéÝ´lY{·9{‹…¹v7 }–#¶·[í—sFËWö.k÷–ë§!ïÙd¼1´cBA8¦jÕ½lËT6÷“ižœn¹ëÙYmmKrü»ž·ÇˆŽKQа¸Gõm\^fðµÖX Ga·:Ü¥8€6,Õ0~F¸œÆ…;YèMbbC†ÖÈÓ2†&SȳY Lµ«kF¡¹e23ìjH3ŒøK0YŒðÌDñš›× .¹‰‰Êh˜œTȞȄð5¬¤(¿Ñ–4™¦'¶ S 9Òò)XìÛøÍ#ï3dÈOCPÕ%2Q JeÁ\ôí»TÚŠÏ&“±B€—v `‡ÜX¸‘ºº—™nfŒæ™‰ÂË»#}—ÍýŸb_Ãt—>ê/]yayk-öZWFÍTeÖ^$ºún»%Ø:×ÐV7°íM $DC9îݵÌ6¦ò ÄL°Á«§Ù q”†…‘"`9–VÀ¬sNeŠUƒy–òüÑWX7Áš]˜<×–cbkYLhTˆ¥{ýC9FçŸeÖ«A 5¬Vˆî‡ÿ;Ëä!Éì¯j3Gˆ!\4‡ÂtcŠB’»ãÕ>£Ý«PÆëãWÛG•~¥´o°¼aØ1(–@ùN¹ Ã×1 ˜Àe¡úá ¹Úóo1 ÿ'Înƒ9‰¹xWdḗ£»>ƒ9³z¶¹Zå{vcAšÄÁéÜë¬d`è›4*ßúø¬ñͰuí;-óßUúYŽ$C®`…ñA­`Ø[8æ çÚwVš¯p†Ý&ôÄ„‡Ó·ä+˜ž?yþ÷£Þ ×Q˜C€×¡à°ÜƒP8&á²BX>Bô± ~—†Ü@r졈poÈ0y&òðLmÃIšé#†f«…föÛ1!vf*•ƒvÙ¦B䔆] àbw¦r½`Ú!Ž[#RÁò«cÁÄ»óVðèJbb`Ó±°W¤81žé_A¸lœ3¤kÄ2ì4H;1äMð` UƒTÒBöÝŽsìÆÌxö 9¤ÝÃ1Z¡ßLè¥ðA”…!”ÿM¶e¼[ÞXUÍ»Ø2 ¡`2Ý©¦B[bÓ2ÈÐÁ²†%~Ö¦l´,Å3lŸÙ‘Ì7h†˜g10vä#t¦jó´±éqž?·@ç»/˜øù,µ4® @xÖ'æÀȺ¤"}gÐ<ær¸¥eÁº°v «¶!u6ÃmvÖcL‰ÿ‡ÍÂ+ð[Zø?+¦uÌNUöÐñž™‘ľ›Ì¡hÚ³žaïwç£Þ!#|y‡xg=½;û¬níK¹œ1ÏBüïv8#m<ù^á ãšsîÖÕºWý·ç©wˆuêíÍ{¼>Ë®sÃá¹sr|×n®øë]£Ú?«~Gyzz~W`æ_5Ï3‘šòÎÙ0øèЈv³®mØöÄ´"mÃ:F'TÀ`3™ìáá^213¯&3FP×î'·–6Bö… ÀBu¬HyŒL@ÏcdzÆDIŒöGüƒ¦Bƒ9ðÐÉàÄÁ ãPñìLµqÏJ…Ë»8†úýdPÙ¸¦'<Öö}˜2:æAßêË|bÕ»lbÓ±?àœÛ¢-üÄ Œ0jÆŒlÑéZÒ'*_fãОØ9† ¨À ÷ãÐ{ì0cg°ckDjG ×0 rú0ªgó¬*ÚgÆ“~ÆAªb˜8ѨüÝF¬éÞ•–ñŽÉ¦„#c€ÆÆ„cû·¦SukõÁ~Êe±+Þ¹êÆ6GÔ·ö€B¹"(ê^eûÞ¹ùZ†î s5c“ݤíl£n  ·xcrÌC CVÛ«ucišwyã2FÁ^ÙÊ’6l¡¤‘»% ×5ì¡€Õ±1 onÄ6·ØYx5¥ä/¿¹-ë§o-›-^þæ¶žV̽é-éR[â¡¢B'q{öðÁš4Z¶47¦{) —ý°w§ ÈØ0k[V“Ië_=é^AäOÿ‘Í?“º>ƒ™}JçžÅ¦{—¼ooTõotómܹVr¶£d‡"7-À²ÜÊcÇbb`îLÆ7dpßõ‘|öFZ°Bªcb`Ó¡Î2˜Ù8Ä8c¿¯e²ël´éßiyÝi{…–¬¶[[[#*ë¯_jÚä-¯âXYe—”µjÝTHDÓ¡à0– ÞìYƒ‹e1 š!v}ÒÙnÖG}e«#öš«HÂʱbñëKVYdb®E«àÛ\–Uµ‹ÿíªËÜÚZ»Ë‘ï-—}oŽ•ÌêÛï%bße¾ÒÕ–YnµibÅ‹ÞÚµy]ZŒ«,í_Œw7Ük“Œf²Úv&0jX+Ô¹¶S)Y,˜•‰ƒî»‘¿å‘‰ß_YÊ1z·Ùe‹,²Ë,¿VÕ´"ÝyÈèÇ%³`„Æèü@Íe¢—v,–›LÝÀf7Ö6ø0{¢ä¹`>+L ̱°V ѶÌ/ÝxTz:½ °¼Stn±u ª¾ŠÈÚÚÔntܵeÕ.¶ì*èÝ5²ÞŽ-Ó-^Ž®fcÍU‰Ç‡~xQÂÜ„æXúìVM»9°B±¤4M{‚Xd`ê$3mÃþ„øž¹¢1¡5Ö°ƒ!V5ìÆ!²m ƒ çqw·Íg¥ñ0år‘òfpòº›dÛ ³°ŽGIiÆ6±|ûš;«ÔüÊ&[ô?ZGXþÌæ‰Í=Dæ¡ Ãj„çÐx×´ã3ôµÐúO†Û>ëë<ë»>;¦oˆaeä[ÌkÁëq ¶Ô–Ípo,ÄöO¨JrL×<Ú½»r &b»“ðHT7‡&91–Ìhƒ= lbz-0Êduüƒ‰qîÜ7ö€Ì€ä8E ÷¨`ò©^¹º<#VÑ`‡@?ùƒžj[z¤5§ãϱ¿2œx1€€Ó1 ’oÁ£9ѸBQ<Ê$wD%=(âÞdҙġ‡p éÅ¡Lðgqóµn ãØ!yhŒ¦{=K@r%h…“-íR½‘³pÊàÌ:F®`®Á³GÀuØÉ6.…‚ͽ±C2…1x|¦Y‰rJùêæI÷žßìÄiéÕ¶[«Hl µF ˜‡®„Ä?ë5˜„k•`8㇠0qOl„í€sJ, Ç•`ÄvŒ jb0CzäÍÈ`8¦¥¢ ‹D”Ð}ö @†Íà_êÈÕ;Rí`?Kµ½[Ã;cì÷m»¾ÓDÒw¢3ÁÕ¿“ì5âáÙcEÿLO‚è†y#jÜ3_‘Ð’™ÏpN}F"c°(aÈ<ÓÙ7Á¾vµœqÃÆÒ|öF2­Ñ118ÏckYDLçÁ¤„„ŒcÄ?»bÏ MƒTÄ5ïÎi‰ ż£¿²4FÉ­`ýlŽaƒVñ#Ä0iÚ¦7©bbdi63l Æ5ŒÖ¹µ~q±nŒìÐbnFݤÎdf3œÓwÚ—6Æ7VXÔ±3†²BSÒ™íP<PÁ³dÌu8àÔ”rOÄ@>­aÄ< Ñ;¸õ­£ê¤ñд߭»ŸÙ˜æ›ð8ç¿bC‰§ÒíÝS)Œy5'¿‹b}ï˜0ÄlßݘÔ9Öz$Mb–M¤ÝÜãTÐr.˜l[Ú˜!I¼ M›jT5,áŒqˆD JËw‘¹[Öøå[ÖËe¨ÕËdmZ\ûí.zŒ Á–Û=+hœ-Á«†gý’º0ãDlÎbs l±çÙ€Àf+Ä3ƒ8”„±¶cccBFbce¹ö™Œt(¬}44 Ù»3 )-Ыî!ó½J3ØßÍЉƒ) â7pó Ô°8EÃdÏo­ùŒz#P{bÀ9‰ $„“°áÑ?i‡bon9fhãÐõÝͳxT%6LÅ6ÄŒBîÎWJʬW>ô‚³c9ÿªÓ8pg²9e`ýŒfìÁõ#» ƒ+Uœ„Mä5­Ýˆ}׌b0RÄó,Ô+œsÞÁú™aut*4íC8rL†2&Ü«{g"ÞÝñ€Ò`Ý]<7v‰©nƒ#TÁŸv×HÆß^][À=N0kÜKà”S4ó£Ó»šS›§7áˆÌ81ZñÞ]õ¤Êœø¼¼#Šy4ulƒ`¯Ò\6èq Á§ol¦`7b©¹yvÅ v[¡fãÐİCÚº7^Á· Föc^­˜ÐpDÇLç¦7wÄ*P–mŽ5 cÝ4äÁ܆G¡yÇjpNÜÊgƒLÕ5/ìýŽè×?{”g W¾S(tŒC·»q|1¨gÐôÆŽ Ϋ5¯lŽ­” àrnY¬C¦ áí2sš3Û23„=2Ât­¢Ö¸x×ov¶“,ÛžlÝÃ!•.x±­3¦ òÒ rÔ!lxí ªCmÌk‰€ñm{þÚ Ö1VcÚ¡Ì¡1Å2!»5ªÚ¼#}Fkײ™n9ïéÄ’=îg@à ‰N© ¯¬Ø8§º`âL@-:C h<[Pÿgzg¼«%ºT:6ôï'Vé €Ô0mÛÓsœq­ñà˜;jžàÔ–Þ]7Îð/¸Ñ<±šÆ†ABŠlŽm‚oÜË*Ú7ónfËÆ­áÞ*Å9£áß|¶'»ì­Q×_S¸«=)y {£-§WfÊ­`‰T»{ÑÞî9£z8_Ð/3§eN•¥<‘€ rT`œöÃAÝYBdØàZ’H[ªìÖûaeW˜°¯­bVÑ’dWäY嬣 »+*+äÙGAbW‚Òµîʃô°Itl£ùbWÈd£É1*ºvTÊ1(èÙEyøÊŽÂ¬”½ŒH. FÖ¡”z'Íu®îï.üØ2ÇšÍC*‡Ó¹áÌ9Ö7¼1 öpÿA IÅÂ7à `îó€Ì~âêFÆqÏš‡(Æ|èJbQêÛ'ì±VF(`ÿ‘þŒJûO{î0ÿ|©ÿÓ&Ñr`ô-“Rï [fÔÄæɇÅj٣̷çæg»{JkªÈŠ [´q¥óßб¨eºg8$Jv¡”ÿF7Ö8* c±B&“wÚâx«ŽM§ð%:wàžÈy ÁƒuwVärc!ˆvÖçÆsÎ6*÷¯À9vXHÄðíã5 È`ÙCšrs†¡Ú>ʳ¾—Õ½€æû5ùÛûž~"Ðl†±¯+¦x郋½ÿD?S§`Íqí[ló><#8j!‰«½ƒÎ!(iØ$ŬpÇ>Ã"xÆ`÷N¡À¹U&!‚`Þs¢wvXù§LaâܹŸä6”gxû­á–ñ®Æ‘¡ƒofŸ!÷=£gL;6pú &½åœAØ–Ì×N Ùº;3§Bűhp5ÃFÛ˜‘nD{BXð– ë':É8÷x5)9סé¸Ev£f¥;å;A´g+öâº÷çæÅrŒ¶%™èaH"iˆ(ߨ!ê0=ƒve‘\ÖXË.êÒð«Y~}„î¯Éjà²ó––š“ÆìXH:ö%kÞ8×´“&ܺ`¬æ© ±éÚt4N´ú\;už÷/hâ B‡Þ†aˆl·f½á3ÝbË¢xÖbµÝ6-Ѳ6Íúå¬pè_KXÕl§">w“‘;²¨¬À5ÅáÌ?[¯V% ƒ,9±!p†¤e8vBÈ­Ù Õf8ƒ>>ƒg2˜00­ÜÕ¬0­S‹ƒ1ZÑØ3Ü{ÝŽ=… Ãñ:&S¾ˆNhÞ]±¢…ÃZïSÇbólÁ˜Ø¡Ïx½½›Û#5˜Ñ~ƒÊ²ßmƒ½ÛŒkл>;|un‰‰âYè]ÞZ—ím‹—VÞ!Ý8åˆ|p{Ô.Ã|j_!ÙxmÇ©VRµjÁ_ý˜n¿¾¸ãß•ñÝý¦X«†q.=¾9§jqìÒqŒMÕà\‚¼«I_ÔšNÑÄ«uVÕ ãÖ7á¾·Ô.­«ŒÖåñë}BhâU‚lûNè¬åkîÐÝÐÅ+´e«Ï–êÒMÀi ?c#jÁÝZ§çB±°wrÇUÜ1±¶,·ûiÝs)¦w¾ñÐ;s(djŸˆ¾(ÈS™s.ôïã^,mß`o¤÷µg l˜äÑ2A˜Ô õˆx, s‰d1lÇØå]é¶vÊ çܜ٠lŸ4c{ˆÜ #ˆ{AúP¼hÛ¾!x|'Ò}‘¤Ëù,{æÁ ò®“ KCû—Âà¤>(Á§dfµŒ@r«†z9†A OÈÛæx=@ߨCñ`Û²6ˆi]˜;“¸JuUNþFÄÕ¹qÔ6AôZñëÛ–DoÈW²ŸôÈñφ½õ`eÝî)ϴΰrjÊHÚq¼± Ôº ÄÆ„‚~Ì×¢qeCše“Y¤Ù4ÑÄÃ/Eñã<‘ ¢°oc^®5 ÛLÓ½ÐúMÈ×±5ˆ~,§yÇ“BÉÀ¡fòì¶\êMKĶ høŽ)Ö·a\û®~çznÞÆ¥ Óæ6¯çÍíɳUàÜAˆ­¯¾ HS’0uªó?鯏áûÝ­–…žÉ!à5r‡r(½ãPÎj€v(Z²ÇÊ‚ˆF„  ÆËVAÛÏÜF0e={J½©rĎÇ&ƒpÖâ_dšÌ—ÄÆäÝá¼F^³¦Ò¿íâБÃV¸ÆÈkÚİv”] Ü|wmnÏ&ïæþþN-ɶEäV ÑßÍ‹#yd  ¥–/ÅhÞ†¸C•`øL·î0/€Á½º–½òœ VõáÛ)þ~DþŸ³á¡£mMæZaÁ6íc¾0pcR„îÚ$¦4Kê°cn ta i„u4¿DPC<ßU”Ü2(Ó‹4üŸP´mË¿¯MW×Cü>´ iÃBœM#crÿÚ÷å¥õk*ìãÏ܇ÝEÞ[ïzƪŒ[E­`gßIè[6b½x–r±!Ý¿+¸+^ô­'Ø—.(çÁ¯ëhq-cNü¤÷îe«©kxaÉ»ƒ‡BŽû¨mïÈÞž„É"D H<ÅÃõ™ÁΩÈaÕÜPã@à–R†ö‡¼¯Í#PÏW&êÛãñ²2ÚÖ&&|¨Æ¥©;LÌBq®Ì’+Œ|5|Q˜ç C.F:6ÀwrMѺ(ÄÑ`éGçW³)=Ë)ï[¹´ªiÁ˜ãn‘ך×7ÖPžé"ÔX´YŸM˜8ev§ÊÆêÄÌ}°yÉ Ï$þŽIùOÕœÝÆîN„° ð•ú[VF Ò`Æç§8=ƒÌj¥à>Až™Üyc”ìÔ·ѤñÎAÚ‹ü³oé”co\óâ¹—ì}|KÄ5\mŸÕ³jÓ7·âÁ&©Í±öÍÐòŸ²aƒnžbH2Õ³}ƬkÝY¸vz¬ö®eMš¡€? ?*=ó½°ßMƒ"•L§$Ø»“X2œ“-‘¦c~FÁÖ)Rûlj?[îúöÕ:—oBÅþ†û©hŠú-0Ú•¯ÈKvˆMüJtn‰‰Ã$ YøîÌ}ËwzⱩî ™­Ë£jïö.'ž€iÙ£Ø6® Ðl•æÎÄâÙãwBpÀð]`:‚0ËŽ±ÕÝ{7ïVÝÉÕ`1»³©MƒÌ wÌ+¸ÐoÃ}Aù•Z:¨»«®Ò1«Ç”ÃRö‡xí®’Fº±Å¢5/ý­2¦ƒ|VòRÓ6N1Õ`À`ÁƒZÄúŒ-H9W”h¾›ýÆåƒ®)Æœ&¡ª:õz^m]8ã5 !½(æ–ü_zvÐê%0Ø;ÃXÈ6l a؆Øl˜š§›þºözµGŽÓ<; Æa{ÚŽê\s)÷Ä) Ù¸ž”~È Ö`<®æJí ·¦XóîˆôØÝÖLC уˆ`7.¾!…nUÁ â¼†ÖÆ7®|ðqŽ,·Âõ=g 2¾¾‡P9·ôøëª†¬1-ˆ|B~ŠÊFìç–!1ÜÚ¶(И…Ëü9ö CŸf„ €ÐÈ‘žKz9ÓRsÇ–sá9Z€`æ\T®Z÷úŒÚÀ¤6ìŒÅ}Ô{Ƙ*ÀpiƒAÿâk‚Y29x4FÕˆêÐåYùžñç^iÌ»]`ÛÜÜÃykFŃԞsZÈÏqÍüg0`>ÄÁž Šmùš­cXÄ…$)ËçFJ›T ©ŒBsò;Vÿ–ê÷¯ÿÖ$9fS×´A­{ÝZM“Ù8%f+dÀCÎøßg11Ä:NÁôÇœf»¡dÄõ sÔ¸–'Ê=ç àg!§nãÅ—õol¦y<‰þ­²²3[°Â¨žìo†­1Ï‘·;ª¾cä¡#£ucÍ=›9ÛUÆ%¨_©Ì£è>StvÙº(ÁÄ8vÝèPäPêÏ ã>‡uÐ…3ºÞËÒ¯I#zû_¬G\Ô±5Žy®l•õw2Yµ—¶öážêF{Ò³YEªÛ7jNÊë1!ˆ&¨p ï*ÆÁ‚nZ@ö„£ZÎxsÖo@Ê)5í‹É¹†SP­£~h+ù7ãÏ0…‘jsçÔP0IZƒN„5m7‘››À1²Øy{İjÈÜ@F‹(¤s#›ý·ÔÛê80Ydo[Y&®Ö÷¶–òîîÚâAĺpuו?³= Û#äDç[â±5&>ê6Ê2<ô±õ_…÷w‚æäh0C “¾ƒÈ•#pÁÀ°d™9ùOï‚´1¤’¡¾8Ör¸†Ñ_‰Zi­&ÔmTx×0Õ¸F¡â^Õ\Š´R¹®V kÂd5Î ÚÞq S÷ˆ{›y6'f4”yw.ó΄ƒÒ:†[µ¹%vÅsfÛ«ü]i`ÞKʯ”dš&§vô2oÒýg”øÏRñn) gÓkò_ÕYÊ! :ñưÛŸ¥ž„ÌÈ»µûÙìÖèÞÝÁšÓ½»Ã½³Á7†êLª?ýÈľÑvä%Ž`–ÖZ³ÙOÝ¿#?ÏàL|à ­žá馆À0Bi¿·öqR_ÐÕ Á˜îÈD!Ú‡Ù¼zêæÛfbQ;Ÿpnƒ9ŠÀ‚ÇËÆþCü]ó`ÞX!©Èî5 –Õé–€X¶¦ÑÁ2W““Ê4S¾¤oúÇ›{q·Üñ=¨1'DgžLà;™[ËДL™pÊlGúƒòÝCj„¡Ñ¼Xï(oŽu >Rf%" Ë<¦eU§[û²ÛWÓ;sçûûÄïY Ø9—ä~§¯* ª¹ÇÕ0 ÔŒn=ßÕ¤Ü6dV{¨‘"DÄý—§ Î{ä>§~'=Kú˜6krÖp<ë«?XK9ç?«pûü™(å¸ï¨çÐ̵L÷‹§nc›dúofˆ&º¾»â?í¦e¡°yáÁ'Äñn”܆`¾íí«b4ì@¢¹¦™ä˜0z&!‰°b†`†Aó™À݉çÝõ‰°i¢4X!rS25Œ€¯‚¥ZÇ‹kF'Ó1!¼ Mù¦¯V‹I0`Á¤ìšHA´B¤§lMhÁ  ËŠg:g KnÛ0;cX§r…kÍs-ÅÉVqv­I¾®Î­C¹.K­«VYz‹z<ŵZ¿.š÷MHÿ²Åð;ÕäiMdnlC¡lÛ–ìÈ0`>`;¼J6Á”ÿ´®tbÉ1e‹»²S´ºû¬¸]’ûžÜÝáE…ˆÚ7Ø ±°'r]*½“i…ÍuˆË¥nŽÎÇàXRíì„èÙ}5‘]Óbޱ‘鮥ªtïضQ ¨7ð´Ìž7†µåÚÆ¤:¦ìS”Ê­0CÈm€ÏºæÀoË`=“í9bF‹Ã&9Ó«Š5môt¤çtã ëPu i‰-j ö&òñ$oŠJ8 mf“h7G¤‘Ιç¿u€ê†YjåJû+¼m:=”rZ“Û¬*ëWXýöòßåž„§ú–ƒX[¢ÕšL§ø0',ÝÒêƒÖ¾[{'3ÇBW ±µ^Ëg<›£#zø}Šá›¾m ±–yÛž¨Ð·öS¾r;Î õàuÀݲÝÌ£´e½“z¤gˆFâø7D„ªx"ÐìIEy~ni›¡zzym’¹YêëÜ!ÒÊpN ñÛ–Ý ØÑ|â“9 áÚÆS½°McÈ’ÑsìNmȵÎYî^4±x÷n/Crž;h9í·ªH]ßMygP…‹Táþçªc{öØ@mÅϰU{¶qI Cj7 FÁV6s&Ño ƒÖ³ÕSÌú’È·Aâ û y‚¯g©¬u¢ò^ÕõÛá37Õ\4 ­Ú!·7@6ÊX…“¯f3Yc²%Œlä‰Õñ’´-¯¸«öãKhêÇgu.eÉ„0 3Ô1Žy€¹f æëA¿3™HA¢ïtYfÁ–3\Ûæf_`úÃo-˜4ÌÄhxжqIˆ14™ØÕæØ9Ä2Õ¨W2&Mg0(²;ýá”ïl…\·Ž#VS8„½!)‰çŸÉ\-‘Ô¾kW_×Þ¼5²Ü±w–ëKr k …c^…cs쌧{oÃ|p-£T5oŒ÷³î­4(VŽŒÖ¡­4eàh ÿŽŒ´eœ°ôOãëÞœ8þ̶kð· “X♉EÈ9‡ocx†^š,Ö}á§eÛ¡ùí Ø€äÍcúËp*à»íøªwñÓ4ÀyVs‘tlOœŒºrcÏQ—Ü©‹ÝQ—_&;z2ù bï(˵“®Œ½Ò˜¿BŒ»©1ÚQ—l¦/9F^ªL}ExU1~-wÒcó¨ËÕ©‹ÜQ—‰“BŒ¾J˜¿¿F\dǾSìï«¶¿ÄV/R¦^¤XþÌY|¢±y2û¡cåE—‘+ý eú"Ç«‹/(V/µS/’,~DY{‚±y52ûacçE—ã•‹ã)—«=T^ñ«Ú‹ì”ËÑ‹¦,½™X¿¨¦_n,zH²ùÅbüÕ2üacÒÅ—£+ù—¥S/³?.,½AX½’™$X«Ò•‹ö”Ëü‚Ç©‹/^V/àS/ö ò,¿l¬^íL½À±ìbËø ÅùŠeïEU_ë+ºS/V,~üYP¬^ÕL¾€±üqe÷¥bü•2üac÷bËü%bøêeþ1 ¦)ñV¬Sè-,;5eÍd?ÏMYgY/—FžÒ|(bøÒö´iûË÷á‹üý 4ÿÊß _F^ò>Œ2øpÅú’ùtiþ˜eð!‹÷¥ùtiñá—æÃ÷%òhÓèC/‘ __2?R{øbÿ\¿Z?½ ¿V¿*_â£O ¿>¾„¿Z?V|¸~ËK)ód1bX¶#bX–-ˆÈ‘&C"D™ ‰d2$IÈ‘&C"D™ ‰d2$IÐP” ABP4  @Ð4%@ÐP” ABP4 00B@ÀÁ d ñ\000B@è‚0B@ÀÁ $ 00B@ÀÁ $ 00BC à à à à à à à à à à à ÃÄ>¹Žqm7Y8·Ýf]9Fíü‹WólŸØ›’i¶¦EÆ¿³•/sfÓ-ñû\¡Mÿ[–ÜÎ6®aþÌÓh圹6Ñÿ[B«nÚ¹‚Ù´k7üÒsMÁYºj5JNq¨Ü-ÛQªSfç[Âñ¬ÍΙÖþ…ƒ\ x98ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈã°qY8ÑÄlÈãMX¸¦–7Š’Ю³‚k…´q*çãø!û™`j¢væœßŸ¡þoO¡nòìoTîôAï ü @4Êð£XX+Î;“Ô àj_ìü‚Ãâ’˜ªwKÃ䳇ƒóIŠùÏžÀsoäÓµ-©CÜy†¡á›—Û9'í­›xé.€…SVrîeØÐÙGXA²+Œî♨wlck˜7çélrìXÀy¶´ÆÍ‰[Ñêê{òocuBCÙ/èŸØˆ¨cxfÊŒðe?y^ÿƒÙ:©0Ž'sr/ÜÍrÅxÕžcw{rÝØ–£×¿[‡=©n@z§Ù³]üµ#-žÂ°½ž£¥sN1[á{AöJ Y}q(q~£y}goq­mßÝî·ˆýìÛá,÷פh:×K˜àteâ´åiŒn”¹B™õÍZob¤`+dâi¸m\à ‰ýÍñ[ãš:Ì1^7 áÀ%ý¤œP&„Ž›È}öòí6m:¾ ZY6Oè7ˆüˆ~fÉâߨh¿É‘ú•ž­Cû¡‰éƒÖµQV÷×fô‡pÁÚž“r,×ÝjØ¿Ÿä¹q$§`7–Ôĵíݳ7§÷i:C÷w~kKWdU™²3õ¯9×;ƒ2nfòÞ¬yg4ÌoÌÌ+1›3Ãv᛼kÇifM˜à^Ôߙ̛1›ËãáôñÄÜõMì¯ocÝ<É}{›äœã}%¿{ÆÀØîêf8'Î0/d=+Ò“{!›3˜|QÂ8boZ6 ɽ@Ͱ&ÌfÌ›1›2n pî›^5ŠÎkšÃð›`5J­Qïʯœ4Y(ªÕ‡¶ÔAí5¡düƒv|O´7eìoØÐ]7Ct]6cì}á¹.\@Ó)¿@Ó)¸‘¸.øËwçrÉ·áœqCf[6ÃlcÛaË™7?lÛ ©jÚŽH͹±¤dCH¤ÒÑI¤9’“üÀ¯vo&MòÞÿb,Ü«ö¼Ã8¯å`tDÐk¥¹WX>î=s½SZúht¯žX½ð÷}ã»{›ì Òí£=FSîÁþOºûa¼2%<‹-û]öP®wçÿ15%«Z?Ýì›GÇsHW•ê¾à;¿A8±}´)¨~7øœÆÓ·,—~(Ö;iƒ§»#q=ƒð0zt-Úpõ[Ñð3)Ý}2$1 ÿF¯’_Û´m“ö¼ ‹Ù-/>Ûž~Éýç¤Ü´™HzƒÇ¾QX7¡§>±šü¨…Ù #9gÆ Xë«ç0by7â?»O‹yR{›qÍ÷fëÒ¼-Õ‘{4ºû;tû†1=óûmVÖ+鬫âPQŒ`„L@Ë#Ô+"µ¯ýªù?;‰zÇ8G âóe¿é̲ßu–  ëÉ·G:Ðx)ƒýÆèX•9 !¼¹vÕɲ6íB}–s ¯# Ç_Fø(÷LÃ-êÁÔÒv'6÷àèÚÄÌiÐÅ>Ø:¤?“´~gê'§”ÂèúÃpH÷O×7a¾–¥š l¡ ­íßž¹¼®É3jüßÌV½Ó~.š9ÖW„G$íΩÈ!V7¶cé6O×2žöÙ% ïì=â]‹ãùHW?A¬.ÍyºŽž#ôt I`þG ìMk)¢Ëb‰ð˜ƒ*Ú¸$#nŒBÎíw—òvMÀÛ ü®eˆå'ùþÛfÔ<ó+×0¬NÏåb}÷ëýùYðÀ¶WáÜ+Œ{GšwlÆÅF%ShÁHÀ•€£ë!RÑ`á\Ìž—Îñ®žýØó ±ë*•ê˜!»º§RU¹÷8ÇÊ>Ãõ<pסλÈôNu¦vö{¶«bþ'|­#Íãé}AÕcÌ1‰¼"þÄÁ€éZÖÕL^AþïàÈ’?Ü¿+ïoíšT9z|çÜ(²Ý“ó7t/döòó*å^är®Í5¨eÅø‡ìCÝϽ ØB2 s^EÂPŃ Øðî=1™zñå‡0á•¢îïÌths¥sò²š×– ¾nÝÙŽîãµg¼×!NüC>€czg.Èãм5íÕØoˆU0C{øÙÎUv¥kh­[f艉l2(þŒ<®QJHDæD$ƒŠC nÌô†Í[[X8õ`ƒLNÁõÚ‡ojÑË, õwÔ7ñ˜Ö!Ø7v&«DÜžäF4'¶ŠÀïÙªö‚ÜÐÄT½G`ßB[Æ0nïv5ˆz¬Ö8d"yæÚÄáGpWålÐÅ€¢;ûtg4áÓwkº¥ÎõwŽÀme‘÷uë£ÛZií®å¤… ëX!h!—CZ0V$,ÐñF‰V ‚`éF$)Õ¨lÈ…g2†Ôp/8JV™œŒô7GvoD¹ZS¬dêŒöÊq'OäöAœ÷!byW¿©. ÈÞTtš'—;m§|¦'¤16 ûÌoÿ8föÚ2 ¡ÿoÜü,×ltg¼äÞ¤ÿÝ«©WÝÔ+ÛZ·Â†Ào¬×4†Áº:1ƒÄ Àì:R1çÙFå~bvOªÄ£î!qCø9w÷s®¼–„ô2e]‹LÊkÛ¬}„uCLÚŽt¨rã½=û[¹«"&uXžè©t.uƒ$%<;ä0BÅ]“©V[-ƒ8¼ì¯ß Wú-“Nš·ÝB&ÕmÇÀ_mCBÖƒZÿ¶k5»¡Äe!iÆúÍ}ÇÄ1O6Ýý^G<-ƒÇñ é§p£™«B!–óðÛçZçª`¬ÇÞo(E¦sC³˜ÎíI¢“˜ß†üƒ<`~mµwei"PVå®PõP½1=ªÔÌ`„•nŽíkÙ†œ|Ó.îlç.Ël]ÑÆS˜BV²ß¿8ÕâÄ<‡a8{h„JîŽ!¦c]addÓ¹öøßs5pªÿªï®Ke½vñŽéu´ºÅë£ ócó£Ï.‰v|Ë¡d!rJ/ ÄäÆúÒg@V ÎÔ3š¦PÔ+5!BT)„7MÕ³,a§lšgàƒ½þb;4KËþØ ÑÀ!«uî ¯C@àߎòÔ4Aô9zW³qª÷Ùâ`ÑVhëú<=V[vy¡Ê_Ç \…Ù +b;ðm <У`Ylæ/èÇ_dn¥Èµu—%å´¬²ëSZÀ`]20B `Îdf2Åsˆ&}©@˜ÁÀ—„)s1çIãÍýÏ?Ø¿[>‹ö¡)§`×2ØÇðáA¬n£XëÕ­s‰ ìÌŒƒµ±«—y'6õÌÇ» ÎCˆL’(`PÏ6`Ô9zÆÉÚßýÁ¶hA Ô ÿ{RÜ6cL€,LÆêqÎ5Zã²éÐçG^Ø–ÄÀq£˜Cð-Ý–­ø Èí®|jßm¿:¹‚n¬ …ƒfêÙRáŽé–Ù=ó‰omÛçBAá ×<èª&öÊèýr¤3{™jÜ‘)ðFþöÌäaÊ8§1<ð ÃLÎh¡Ù!pãÆ1GœiÈ]¶÷?ܬe½iô’üª`ßßï1ÝÞì‘Üt`!õºÁÝÔsªïªæšÈðÒPîcTË}7BãX؇z…ØnÊ97se¥3sWt8–m OعEsàìS–J1 ÂYXÀcB‹,f=ë%@Ye|»î ÞëX—"ÅÒ\û#ÏÆ‰¦ P ‡s¶Ú›b€ì[¡)­·tNŒ`?[L׳وZ+jø¯þd·*Õ³ž©J’N…Ã’BÕ ÀìÙm06ªÑzvk®Ü…»5 €ß‹ò­$(·vz–I‹W‚`Êe7P`!,`9Á¼»½«!7Šèx H] †¼f'X±.\ªtŲù=Ô\*Õ^2âÝzxôK{±¥ÉK{Óh9'bÓŽÚt±V¾6¦s Ê4Æ‘Â?ÞÕ¡(p¦$p!jJC¿Ñ€7u`ëØ!Xðì©bt,ˆ”Ã=˜Ðg=0ÞQ'2Ðâqá_i§V™È;pôŽøÿFå»5MX¶HW´»Ó«qJ9È‚çœÚ6$ê×]>ß[žñöZiixËήáb9K¸BbeÒ¹1§bdB5ìÐ*X!›f0C’ï®õ½êóÖ‘ø·|Ô}}]e]Py"Ð"hÊpjÜOA^U‚f¡XùåûÛøû­CpY ㊧‡µt-3i!Pâ_Ý­sŠÜ»6ê†Ùù^8wökb†Hœ¡CXÄ7‚NG8•ÇÓX¡ˆ*ƒ ”S€V6ìà^5TØ5"ý,ÜBÁ˜ÝÙãŸùlÚÈyÌO:8Ø{F øbo…ˆ„Žøù/f5Š6Íh×sÊC¯l{JHwãx–4mí¾ f=Ø=¶¤Á}È¿9—u%ÑX1µ¼†4|Jl™¦Í X¶(zÍKÿ¯(Mo$<§hþÈaú…‘wuî]ÕYO®hJiOñRÞòABFØÜ+«YZÓÔ¸— ð èÑX½[Õ“~§–WspãʱàXÛÙ›FòÜŽö15hu¤¡»·,¥óDƒEišËCRÜ1±»™5÷#BõqZånØã×r­ñ¾ ¡Ó°l ëN†P3ÐÂ20BÅ×;kÍf ”í…Ÿ`Ï(o%1èžÕ¹v¡ ù=»¾‹µµ ”† € Ø`ú k-µ¾n&3˜‰cÖ0aò¢Ä7ô5ÃT<@´B€æ 5K-Dù0à¢ß܃yq%p8Ń%q@Ó©áÛÃìÚ‹k”'¸g«`ÑÅrÍÀסné›ÀØ ÇÚŒO w‡Lh]ðy6ôÙ«AùŸôÜ6ŽHyC¶0^MúƒŠ¨e3Ô· -&Í î1Î<³Pâ˸Ê`Ñv^IE3°e´Ïêð¯(ÈÊ Ã=ðxLH—¡vÂÁ ÃZè™ìn«c<÷Ên„·Š-š¥”/¸`íN%ìŒÉì~ïÛ5l ãÏR“#4;ò¦Ù Ù¦B[Ø¡ñ3X“éëÐϲœS½·t?‰£¬³ý·ÿåÝÁöïà_}€òN Ü<é/g…\bsí¹ ³Ë-óFD^ÔÍÙºß Ïã˜7W$ùîä!z`üíkdò¦\þ§Xv‡’wØï€ ¹×¿ R9PjÜYe– |l·/p¿J=u¥–Öë•r[[:v¹ Õ‰+˜&e ¦œqrÄcšMÃܳЧwÖ`Ðm]¬yј4›†c5º©ŒË£qM­ž õ§r-¸Ä=LïcÛ6ƒÃµa9«kÏáÝ`7–ÝGÀh´N¤Ñ xÛ!«i3Z ÐzÖú7ÆÐe²Y­C©V'L<€Ä×>›¤bgŒç•ØÓ9§‘q¬´+ö&$'!jX«p8PjÐÁ¡- MZ\ËA§1&ös †¡¾D( kuCPã3üÝ+PÂZ–±­ù¼›©Ëç|ñ 5eãFD+PÛ%žñ­ÐnÎ Ï»ãÍ Bð?Ìyњݩl†¥è¤U·gÊ ¬Á æm¨MpŒde²á֌Ǭv,áã(³Ýè)Ô‰Ò0;l×¹‘7d;—{yW2Îoƒ1žÀ=¶EˆB܉½ K­cö,×L‡2ÈÛ”*=Œ|²ý·»wyQæ™Ä›Cë?¹‰=3ty—òÃз¦ûÛFkŰt¨q,¤ÙC©g’:B¡u)Íéö9× 5橤>Ôßߘ~S6þmåðÚ a¯B\lŒm04‡Ñg´ÄÑô_ßÉÍ™A³lÔ7¶±à²¹÷<ô†]×4y7|qï¶\;ËÎ!ÏY=ý\¨ÖcdöŽ¥Á!çX9·Jà›ÉŠC6Ëf7á³Ú¡‘çz³Fê^ˆ¯i›óßòþ „е#I©`3†© ,lŒ3ìŒÓM¯¡b áÜÆ­Á÷?aüy¼)5ÊL+-°{“T×¾;,À?š°l›% ^þoúØ¡Zó,à9פaíLš{ׂhDÀnälJß!5^U€2Ç Pczg^ó¤ÑêíóŽÍZæÙéÈ›vÜ&<Ë=€ëÛØÈ„l»øÜ]0©n±FúlDæXÄÄ…SIÞ.åaX Ƽ[Û6Ρ„#MøRa JÄ„ìı½ó C x~¤i™lèÕ¨†XËBîÄÈÖ·ªOP­õ¦n©Õ¶.u¢ÎýCyc,ßd`>C»S·V­CÜq® h2›—Y¿HË`z§ÓÒT´O|îüK97„qC«²°i8f‚ ðžOÉ48|w0åE‘÷Çã|¿½ÒõXذµ±l>âîAÿ+ùÊfÐÆ¸‡ÀeøCÜ3”íí7æðOCÉçÊÒ°XÐ^eÖDN;À}šd ‹‚vç,Ý™c¥CäžèÃÊ SZÀe¡x6.4àÙHRè^ ýÊqÚØl  ­Ñ®P¤#MË ñ¯CÓx7ý Pñ c,`Ìz×’$nƼGLT¼¦­¹KµhºÆÅ‘Òºòò¸ÑmT9WätôÍ”ÞbÖ&¡°‘.#Áy‡øe¾ŠƒjÖŒZQœX¾û-Û8z¦ÀúÁ¢Ðg¸Áº²^ÊO–×;ÃàÖ{Ä4F@f¼«´u­9§+þšò¼^JVþÀíî ׳_ÃŽeºs%`qÈcZÑ€b‡¹X!Ï1»ñ‚C•lõå˜&«Ýž!p¯6û÷MÜO±8ñïPÁ°waÃ6ŽØÍpæq(cÆD<ö³F+³½6íº‡A³yœ½[=â ú ù¬Ck`ÒWKÄ‘±wŒŸ-¡‚x—Í0cBGê½6M² Ww;ehþÿ îû¬Ú—¤u§œÕÍó­V6ÿÓ=è77bX Í|Q ð' ó;L^zøJ4Å{X0x‡Vþç`nÓ%Ñ»£ò…e?)É·‘ÌÿLB­Ši,$æÁÛþ:b n ³ ]ã4­3P!‹B'DƦ)ÛX˜ÞW“-埮¤åª‡p?Ý:ŸSë»Â•.Ƀ+[Ë^âN¤ÑK@‡šô-$'J†yóJaósAÍ4_ÆèœãxòÁO=³iƒp5yƒž5ÛÑ|zþ¼Ë {ÇwWö}gÆ)6oÜe˜žÁ²zsÞ ãb0VÀj›'¢pN%´di™ú÷LÆ[(;V Þ&Ü=v«¹<¯pÍvoϪl=תé#`ÊVq¢0m™Æ €ä¥Ž”é‘-'„m3bp l QC =Àä_³¯þÌÿ=ä–eñ÷[ÛÒµlðßÐDzl ^íf LžÅ–Û!­qÔ-È)¯<)t0¯6ã¶•ø¥›ï<>1Þßü×¶®9ãnƒÅŽ]['‚Ä8gÈà˜› …£®zw³õµ"‡æÀö®@¼0SÁnŽâU<3Ñ?[Á+x`8—j;g ð¦]ÿ½óÉ;£PåX+…lŸ›åVáιaäs™¶{l».ÈS¾#ι5v8—ð#žò}gNóø½ü˜!b–-âöÏqŒ)òÜêãt&»›â)5Ì?Üm€·`§Dåj‹óåhÙã£ks&…ôî„¶Ýú—49–æ¾K0u¯òk¯ Ÿ^òÄ4ÃÉLÛ8G4ÏhèNWH×`Á ÈÀ¨a¦o¡Žp¼ä_‡½k>Ý5#®%IÀÔ¸5 ͻœ•<íB[,˜LÁÿçÅpÍ¡å=Ñ1ÿ~IPâÎE¼<Ã^­kjIc¯}sÔh8•nRÓŒoÎûn9ʾ»ö6È[KFuy—B`Úªw*7Óp>ñþm¸‡¶tŽœå[`ز7g7.¼;$8¶âµêŽEûÛ$3&Y ä6·°B‹=›‡í`~íØ – fP ÞÜG$쌡åãÔóͲ{›¬@Þ†ìÁˆxÒ„€÷Æ_·tˆMy¦è1³ë†u®}Ã?A¼<á§z÷Îomé\›Tc˜Þeæ8VSÿ^À¾0Rúâ‰oyoáºQ*¹uÈNm‡Ôk2_X˜Æ“ðœNîúršÐ+˜)µ´(ë,I%:‡£d4í‘̱¾«³vn`‡†â3`5N!˜¬Ç›yÂaL5èXM‘æ›AÅ<{9ÛýøèžµîP¶B±ÜŸæÝ]KdÝÙFl¤Ö6/xÀbzgvwQíZôêÜx4 rÔ »2®so0úlä+Ü`<(ó²8ÿw§vź;S=Ý›W·`ä‡ï§+@jÞ]Ç  ¬Å·´0¦©€y̨bm‹?üåÞ%ãx·À<{ŒB‹Á=[®l_©Ã5¨F§Åñõ÷aåß•üKp.)Ú¾k±{ínmóJ§ç±˜>c}|¡ÈIükçCh„÷ü!Ä·~yô?><›f…¡ÛìšrÉ_XóZƨoÎM«x]#›ö=f±óMŸO ÷ìþ‡=›î;ã›qÃÚ9VcܹaìZÒi\®öÐ:÷V\y`¥Aý Ó>SÛõ‹x÷äOêß¹Ù=S„dyîE‰Îc˜‡oy´:QƒÃ=‹nîÍ¡ÂÎQüa V1Í4ÃEåºA‚œ‰ziŸ¾ŒNX⌃ªÀºþeò\ÔóhÐBxÏOìôò6,özÑ]·06X°S­ïê¼v} /ú7gÃyý4Ϭî&àñ«î¡ð÷ bˆ%ð`4'5îòr&ö_ zÃkz…^†=ZøÏS%2†ì…'>ÊÃê4ÛYЦ9ê‚f–ç¤åØ w15op;QöÈÐv¦Ù÷k'¸ÇhÄúLä4Èû~þÁI€èž¸÷›7 eÄãœS°diØ7:¦“Þ2;Û`Ýޜ왘ûLoÀ<ë½ݰz,@²`¤÷LÁ”0g¸þ%×>‰üŸKê=å[†2ö…@˜)¿ïø=Ïìµ§·Hôú×Ûcs£Q‹*žZ¤*È)±nÏ´jú¸ïéÁŸ³»<É0´+tð:gú’Ñýé‰\ :‘Î!|y€y~mËà\0RFêôà4ÂBÝ¿|W⥼œúgÇ`ÆÎww—Ëþï‚…XŒRèf¿7’ïäÇAÌ7ÏðîªëÏ™¶š7¨~ÂÅ­QXk7çù9aà5/–;Òà¡©nƒdÓZð¬¡ášƒ¤jЬ ™ ‡ ï]P>›#\áº5unøý4u¬§ûŒÑ­`ðïèíÏë¡`Î{‡¸~¶‚×vu¯M“˳Çþ–î‰âÚ)ȃ«bx‘‚ , F N+ä¹£þ4çKÆŸ1ùrçJÑKw&ÅQ£u#4 ¦ J?6áӜɌ¬%œ?ªÙ<7–áÞ]äÇŽiÙï\≠Pj€«`âbˆœ }jÏÉÙp?ñã¹íÞ¢kR &ìÀyÌc‚w„;!û5Ô`î..Å Býï%¾™‚¥¼½Söº'Fòõ&7%ƒò)ô!² êÀ7 ç«v~×èVc‘~ä å—Ê«é£tË¡!üË#ëïѵj>ÜæÊ9gk1O‡Ø^P½½­XÛ?-Cèm†ßrð ®pèp”íÝ^ÍÖ—-Õä]Ù»èÕ9€`þŽ%ø‘Zf¹Úß’íwå‚›fÜö¯BÁ¶øÞ‘ü´î˜Û‘´|×q~ç\8.LxV¨è͘"±·§Tñ-lÞ_Ô¡LÞ WŠ3rþn­ß´‰Ì2œa{é&Ž=¦jЬ œÜîÈÄ}ù…›Â>ç`†Y9”àìÇäá'ó`¼°V¤ Ö _«|h6þÓ?¨CVæ‡ ïÖø†þÈ4]þ2í˜ñmvá_¯Á‚AM þòýCÂøO]ß7VÛtÑ´iÊñƒÅØ¡²uÍ`Ì­»¸8ööù§ø F¯HÕ1±c¢À}×ç=Éæà~×”óžI´kа ¦­©}Þ5÷ÞÑ¿]_ê!Ö·±‰Y`ïÞÕªvÑÏ’jžý€ïÆ;}cI®Øÿ‡k{Ê¥hŸñü›`-Ø)¾7ç mšÁØ«¥mjõooCšAÔ»»lÁŒ``Gï`È„C ÁÞ_­-ŸäîT0žÎtºFð… )Ù!¹îì×¹y“/ñWýšwÞƒ#9‚iÁªkÚV¡Ì7wÁ?'éˆÿ­j'82„Y¢È 6~ä2ùýÝ3Ÿ ímíéöJü!ͳ™ƒá=Ø=ã`ذ`äFÐn¯ ö‚DœømCUŒ­cÆ2ÜeÙÉ–9§®¼?Žy$?†cxhy¯êP{Öˆì`‹'Žúøq5xÓïs¤°y'ø¼‹9½—/ †) ó)à ú¬öÑ_ Ä»7°pàðÍÐs#¬mÀ¸`†¹âMÐ=Ò¾[Lö[¥*~ &دÎã±gŽ<ŒÑÕ1<{–|†80=&ì5f‰²Ñ€ßZ'SµÆ­–܇"è‡uf>ÛÕ¹qôí蟠<éKc^÷ƒTòÈlƒC‚Ž€4‰¨q†®{½ºB ´€÷.5œíyÒª{í\éÓÄÈdÚ¦½ úžX|F"&ˆî}ËͲ2 åƒ& †1ø˜Øšwû>“ì3Yoä ¶ôùÎùɪCr6FEºv`¦}ÛZ7çªb4'Ø"ßIPÈÌu­Œ{FÅê™cVÚ¿›|z41OžÄ;[5˜åžùÑ»ÁÒ8Åe½`FO`L|–x‹ýF¸`ò¿ŠÐ0h·/8d™Hù,Na€2=pPu5 W0Rræ½ÌšG4-P7÷ÊrSÜ“(x'(qË5Ã¥uL@ßY®=׺ÖSþ?Ëb…‘*Ø~Š™Ì˜fòY!Cù=›Ó°B¬{>éìYåþþmCÔ!ØÖƒ^ƒ86aßžøÅXõù>þùæÓ;Œš\½›t;}ìÂùÜšà+Ø){ee´À^vz³G¸›ö¾„hF…n.¹ý!¤|ç †ÌæÙNðصàX0Sµk•ú¯\ò˜A çZ‘€úŠÆ>Ú4P§ §F…;Æ¡wÁ,´%97ß}¯xd*Tf!î5.ÚíÔ²+ÒßåXä™­0,¿œãIëÚ–ÑÝôyKbÉ Å’ãú¿ÝðŸÝŸyåPÀ7šç¡B®7V÷ ¬¥xnÎ ÛgžÃPüìëò»ÂGsŒ„k4#œRîb2Ë<’°QƒÁ½³PØbÁK–öÓ¾“R¯Â÷Ý¿[‡eKIÜ•ÜF&MÅmâ\p¬0¢½e:1ľnÏ6Üs Lu¶¨[SáýK‹Wèú\ ¾ÀÃN~V© äAî˜5ÈlDbo%KNUXÁN5± ãQ׿¡RÚkœ_x†¹°+ëPÈÊÓºfQ^ÕXÁHø6=ò[}áÝ®ªÓ´Uª9éÜàáåßþµjÄ…õ˜Á‰ƒb|C-˜ùX°‹sÌNH|×±áÙÏE‘y!¢ÀkÕ˜õ&Ú ·±3…«f?k衼ŒùN…³jnÊ…Ãx{Ç»2úøM:D.äöþ“Ù«ìü‹fœ öÈcø`#pòÄCý8¼xÂÈgƒ–4Îè…›`õ/$ý½(äZf™¼9qs6›ZÓu`§ÄïŽÁ¬Ü´xF­îÚ·î`Ñ〻¯3ÊÊ~w¥ÿ\»`Ê|—@Äí R¡ÞŒ¯Ë1Ë0dÃ>+^pyWtpŽþs3ž·~&öñ‚ŸÄ¿YÜÜÓÆ2lÜWV~ñ¤,ZwDåÙ•ÕbÍ)° ì‰çÌÚž‹á<£àf´Èrªë†7¢{ó}ÂîìEJDÂŽÚí×ó ×þ¼bqó~ÝN8Î<3Œd|3‘r#jõhD—Gm`Áƒ·4Š2›,˜)cÙ@¤îMâ¼A˜8ït=XÖ5O´8gHðe'ÄtF……ƒ Íð,!º°8yHNx üm&GnïðªwHaàÇìXŸ@ÝœûãD*ÀÖ!é?!Nʰ`¥Ëï<åä] ѲëÊí¯¬i—–î×!žgÇ…Ë;óÊ!|h!²jÒcKZ…af…¡2=È!îœf½éÓNþlÑ«8d úíü±ß…ªVrì°7³É7§„~FÁ Œ·—Ã÷´ÀZ°RÑú©¿}46±‘̼(ùe3y`Ú!~x/=¬ef;øÁÍŽ 4í³·3 sºœó8g4ܱ@c3 ès{€”ú½Érá‚ØŸtB“f?‘çdÚÖ[Æ× b{ïœ6âg£âƒÕ¹ÜÁlD²`‡LøMkýŽ?ûÕ˜êÆÅÙƒ9å³/ý”‚€ l Ä·gÀcÕå$Â>‚Ÿtj±üÌ£ô<Ë ?*g:ÐÖÙº©v Ò`3øÍCà?+d2Ð÷ˆèÿw~tlÂÁÌ|·ñqî9Å2’™Æ'ŽcvðmFûÛPák^ Œyæ[Ý &SI‰‚ÖášÕ’˜+AžöìýXŒÀ:@ižÆ14ìöSE¨e3† Ñe¿áþlôIãm€Ð`ÿ§­Ëe‹. z¯ò,Œdmalé.“E°S<Êcz–XPbJÇ,óîµ2ÍÁõèH5¬ Á w†}'®z¶°iÈ!±{†{"eÛ7*Ö·¢!âÆ`÷/ôp8e¶ŒLlzùB5አ-èØM€úÍ['èØZÁåŸ$²OœÄÁÞœBm3ý\´j w0g™íØÓøNŪBXÄ3³ ÿóýï†îü· à`óqØ7áì›Ìdsä,2Ë,²Ìc ˜†XC,O¿X.›(ôV]µ»ûÁÆ©É~Å[æÕwö-Y ó/yjÕ‹k.[÷–Õe´¯é[Ö–ë,GÝYKQ)t×1o“qÖ\ëM‹šýu´mijÕË9-•|›ûVTo,ðÙK­±x&Ena> Êž¶Át,“ôl¤n¿ŽÔp/еx›Ö#Ö^ó6Ån±0S,N¢çÚ¶±2¦_Wj/e^.Åà­ëU;VF£5—bÁl°·ÙFÂóÖUúV//b笱bû;.²ÂÅÒ¹öÔL²¨ä¶Ž…µX½5´j2ÅÉn«Q¾ÈËKEÒ¸\ÂÈe”²Ë,bɺūKTÖ*7[JË`bí­ uñVëcÁ²5o°¿ã²>ÒÙh¼ Íp]uϹm£‚GVÅjçFÖG3*eˆË"Å– ;kà\-–Ö®…µ–FY+ÇÙe’™2ŠêF‹£u‘È·.ŠÁÍbË*ÌXʲËDu³ÃÚ)¸Êw’ÂË,’ú–Bt☪S®±*Ž•’ðK eO„Ë2R©Z±T²É¶,ˆVë"¬¢Ë©VY#a–,”©Õ°ª¥µ‘MÖ%ÂÉ&¬¢)Z±I6²ŽÒÉodU,©–%)nb‘Éd X…p²(Ëu„ô–\ "ÙŠ¨‰½‚…«!–Ë"U<Ý”T¤å² Un°/„º &,”ÿµz ùÍËÿÂ`Þ7-.Òñ©Á0Cwxk缡{CÞ=3‰|gpµ¦kKõºv l©D&9'´p#š‚ÀKe"`^ÈÑV*NBb–,Šïn @ùÎÉ]‰ãBrsjØØ0`&tw·&2›‡ Ä<[9œÁ 1¿É§eƒßõlƒ HÌ"e¼º.ôÚÔ% ‰•X(‰—Ž£ôêú—nà1G¤,¨íWÏU»u*úG¤CŸ m2Œ‰”r »Ì3‡üæ"‹ž.æ0 †aâŽì7Aе¼!þ¨S; ÷ Ðô‰Í0OèÁȹ”.A;çô#NÀlZ¤-¦k¬ 4èPb`ÑzÝ3ÉÂ=CÀ<³Å<Ùí5JÑ{°~¶¡»œÛ‘Cù¡Á±±³A½!ràÓJÁMx÷9ð{“öx±çÇ]*Ý÷‘·ö·x]³C­ýé€Ñˆ}g¡gµíÙ§ÂMðà>”:"Y)­gS}é]Ⱥ¶í÷olöyw78Õ¡ˆ–w´šCRZ<#lê Êz.;ó3TÄô›&Týf áž+i+¿+¢lL2¼ )”Í+pÌÌY™S ‚Ã3¾ª°–zlÜ É¨Ï-ë£plÔóϤ⨯¬Âoiöç%5%¬Åhk?‰š+ù¬R½ëµm•¦êÚxšaXl%©Eͼ’¯býYépÊñ3æUɾ³rûí;EÛ¬í5faëU”Þ«Jß±Fub™ê¸‘سUç¬Mʱ.òç]#Ro&Šôtù´à­zsr´Cp®zq‰gW$4æÚz§’§z¹¦Ä·Í«Yšq 3¶Êµ"°«œw÷º§«ÙMŠd÷ÓÑO^¬™é¸oœ}9׳a“UÙºf«z÷õ<ãgJáUo›UmfÅâ܃kUiš¬2yºjµRÞLî.fÌ­óæ:÷¨g¦›Y”âÆW¹Ôg|!¤¯ÛV°­Ý;zqí7@¶OW+»¶5n®EÀé0®ØðÍ*Oße^W­rD×›ÅV…dÊ| ’½Z³«ôžxÇ1>³IZO õ3bb~³Î+´¦Ù7l5Øy†O~ÉÔ»FgáW0¯P®ëMEyÌ÷oM;:s6­»E;³­fUÃ4”:ÈYA¬ƒÖ†+,3¸cZÊV³È·ãlëe\ÔM•Niê+£Wc<µ:äÀùè@ ]–e„2HP=$ pÂk.‘¡]ѶaÞY7ŠÍ1?Ë aßZ¶Ó¢V‹M[¦VJÉ‘YÞq[ªf¤ÕWb­EjM›Ö«Y´Wp£µÓý_æ×Uk4JóÊÊs(·Êïsqzæå]òf²l6í7NäNÿLí=û´rnu™ÀÍ'⦸k?#3’fs 8 äz”Ôdßa¤¬Ì¢çÆøméØÓ]ä)空 “ë@ÂB4†¬Ì±Œ“@…¤zÍáóCI⇵aÍ0«ŒjÓ÷'ONާæÊþ6UҰݳ;ƒÒ¿=ËLÎñ9†›4ÉüÍû4ä ç.òίrÃRžaYUÿÖm†ò|'¿Uгv)‡º~«zéž W<ÓnØn•¨æÕf:›Ø;ܯ^Ì8…pj½ us˲V½ç‡ÑoUsê¶Õ‡ëŽq™Y•¬=0×Wµa¼˜r °ÒlŸRž²ž]Wª~Ú·ï|ÕsŒõ9±ß\¦WiÓp7vMÐíÊõOåiSE3O˜É݆8 ‰þlYXVá‰ù¬Vù†yå§H¬©Ç´L•]dýfR¹9©7tÊž%‰¼•Šfa†ÃJ{‚¦£<Ú vˆhß=æŽþÆDÏ"e„! ØÍ·¦¨‰¡Àû-ý™pHt$‡¢Æ0þ›š!cˆ}zxêpJàÜ‹J™9§ð8§­ LœæÜšo`ó³Iãg•h™¦'ÙpŠöí&†Ñèõ“þæä±ìÝ#0èœ84I 'T5!°´f(X•€6MÅÉëßY•te]›hüë)ýlôÒvQÄ«l;slú­JwÛ£ Šgi8AÏ9'—jÏPù FHþZ®A¢}F Ý᤬­Ôî—€V“:ÃÊ9LÊÝa_Q^…À=µ9W 6CUà­Ëµò•39æÙà«UÕ´©ä^Ù<ëÅ3:w÷«–§¨z­óaéXΰݳ8¯¬Ïº¦ìÚ·åc€<ÆU »5]Ìtï4.-v'·nç8‡q™J嘚)i1\<µGÜÜ ¬í›±¡©•@£¿™,Äm(Bo£ ½µ4 h0Ú@ñ£tk;; i²U—¤¦Ä¬ž)^t|*fnÈæšŠ¿¹7³L<à ŠU÷Õ’¸«hÊvl{§Qj¼R­ÜÐðÌÊ®]\긶ŠjLC¾³9•aöÚ#)‡®§­†e{Í?Mɶ̩ۚ’·Œ+›a¸yºhk®=“€VÕö/Îz‡Ñ}‹¡•â'V•CZé=ö™7Ý)-M¤>#yäÔ[¸2Ž9€˜ñÞÁ„ }É¡€uŽqŠðÐ-íØ}gçn„gÔ„F®°+”pι è¾›Nø®ý2ž á•þ¬>¹•hWé<û'Õ˜W–xgôY§pWe=ôÞ3³O2«õYOãxzs %y5hd¬<*½ÿŸiâZ'Šiΰl=ò´ONßxWY3»#û~Ó‘bÿ¶*ìÒ«-ãŒp ôôéÞ)É´­F’¾Óåµ®ì÷öOûK•;Ó'¾vmõþo6ŠêÅ2j¿É‡t°®‰üM›ï«UÊÓí½3Rw9°É×;Y™šwËf÷ªï#~ó¯Ó~Üûoý³5Ý£'>é™8¦vÉ\Cšdýåb·nã,Ëó[‰–›C'~ù^ÖâÙâñŠÂ»Ãe하Ú1°­¤É¶bó6TÙŒ—•¸Ç{ÉŸä°¼ƒøŠÅÌ1?5ëØe3Œêò³°sm»„žVÝZk›¹ eþ ]TúorÌäZc)ìïîe[›êÙW±¼clÍz™þÍfeá›–Xë+*bpÓúc©WÕeyù£Æ&eeèØ·Ov¬ŸØ™48)™ÝÕıUºV»'ÀaÞÙ™N˜^©Šèj¹FOç¦OúxççIß…™‘a‡Ú~Ú3ªÎ¹iåY;²º)áU¶gœ¥ºeY˜M62b˜c¹°®äÄô”Ŭ¯0ýv*ùÊþÅ{×yªü ž «ð»mÈ3»"‘Q8þ±—po.1 £kBiͽ«Û¡ÆdØïÛkŠm/¬ÅÀpC‰p¨F9Eh[“6ǹwnÀ ÖÛ£(%d1 2¬Uj[ËÄÛŸ´ÑbÅ‹,^ޱX¶v,X±bÅ‹n™YX±hjJÙÍ·2e4L[/põ©»Üµ©†œ®äúïD®‘©%Õ=É2šªë_×v2j=ŽÜ^c*È;„ ³xrÀÇ´–ºÍ mφ„«ð6ÆU± _C¬1€ç]»i(öÊÈ1ŒW%s/ŠÉÿ/»NÖi+•hW#b› üÑn©3×é1+Ð^¹ÐCÏÌ%ÿŒNÍ„d¬SøÇÔVf…èÞ‘“˜›öíV’•wy†&)ûlJÐÄçÕÝ,úÓœ¥hšV)Ý¢yšlÕ¡îl4©‡Æb~ËùFÙê]LÃ&2yçÜU´U~{ÛNpk« |zd¯–î³ôí}Vµ5Y§ï±L+ àbl+ôç,ïSõ©Ñ<3È+×;Û‰kÓhÙ+rûJï <¸ªqªâ[¹ü÷ ?ÚaÄ0ÿjxª6íW‰§›rÏ¿6í'F2«“™6JÛºõmÛî½ÔS¹îWmbŸÍ0–zq¬S ÄØW6Ü7WÚrêÃÐdÝ5KÇ€bÈA˜,fœ£^hÌB}#ªG´*Äd^Z£­Å g¤|E}Ü;B*(kÉÆMˆï˜¬2Œ ø5´Ã’ž…•†…hÔ†¥§i©²P÷5àáŒ+é½£:1­M€r¤ }G¦\Ç”à];à6‚ÌyLˆ†åX»«OC”àv¾L€ÓÙ}SJlSëZ×Nâfªº%iÊÃk9v¥Wv²W­°¬¬ÏšÔg§xUßU™^¬­òº¦vïA|iÀÝKÖº×ÕŸÐþs évnÕÒÓ1?#Js²læ²·jÎÙ;Û…qì+‘hVí]õ…xµk»Ú¿U‰ÆUdØíIðßð×w2øÍ7‡©Í°æ'ÐVû¸ÙÆ[×L6Šô “é[[Æ]8ñmuêAåî{Ö)èØW²aù^QÍJñ.9õ™ãMI¨¯¸å‡ø3Eþ/\¬žÂa™Ç5år”®äÂ¾Š°ïªýez&hyF»)¨ùnE²½å‹<ÄÐMÝ=CðM äh§`k+’²i¼&“B¸ ™™¨¬0þ7ßWè%ý­'J۫뫆t²¼Æ+4Âf›K[ëÔ‡ó#r­ìϪiÂ&ÊÐöhtYg2lœð­ÖÔ?Ôö-‰Ï hiODjc*†¿¡n#Ä4 ‹ü2 7É0†ôZÃdrĵۤ±Ì'Ýp5Ÿ,Ç7e©)Py QÊ5¦]¶¹i´dÃà ¥tŠÖVâ~›œOm0_vâ&SŠW¶¦¥LÔµU¦2i4ª´§V1S˜Ù«¤z'ÉgyA™\|ãçhøO÷lL5 j7U>ûj®ªbnØ©è¬RÐÅùìótà6õ†‘šŸ¸Ìߥ™WŠ•àÇDÏ2™åb™ÑÖMAû2¾3²g;NtŽàÃHWï1>»B¾30Ôa^Í‹fâFOT¬^•[iåÕ`~¢°–{^ò¬ÖÝ]¥3Zã~Äña:Ua[ZiV£Mºj+Á¼ûƳM;€+&R,̇bè-¿±gV.1“'ñßôȳ:ëœÚ«àÓFT؉òm=µ9¥96wÅú`ð–Òóv.õb{û~­*jM«ÿ,+Œn7-+ÜZI®ªážÉÞÕ¬Íe8éö,‘$È5$#KYy‡ÂcÕúØÝz°“e±>ÉA©6*ÃÎÓhÉôš´ÊhW±±j«3+ ņÎ;F¼J9ӆטæœVÁŒBºÊ2D`<"a†Æ>††µÇ0Üe38ÛIìl+<öÊÊ«Ãê¶LÍPÅèîE¤ÍL86ØV*KÄ…uÖg 4©žiµ\uËX–Äýúw'„µoÄ®­ßÙ©lm!œdØ ñÕ€c[³ŽjcÓzò0Vœø|#+J"€û*ß+*po*É嘧™UÈÍ måbxw°›ÇέFa¥LæwF«%ba„ÄÇ¥aY0ÃMZ¬Í%g™15ðŒJÌçŸØ8–q6IVͨÍK˜bªßÌJÑLîu¤:¦¬Ù=»)¨êÙÇÇq;Î¥ôGËr- ÉùÌÓ”™šoÖWžÚW.Ò$ÒžÄ{ËzØyWö¯<à 5ÃÍIÿÚ®à®$frôêÅJí:ÜʘåL*õ”Å96”¬‘‡T«YšW„WÝd«;véU5fwúrC¶LÏÜg‡‡`˜bbbV&!ñ•¹œ½8™Ó«‡KÅ+`pêÙ33%ܵ33MË—Ÿî4Ÿ`kµ[—Å¿ 9Úxõ[Ú­9ÇÕ]­>›YVÙZ´Õ›‘™À°¯NÃÖ4â¸êmÕü âglW©w'`9ºqO0><ùÍÓ?=°¬ïª9Šmœ…5ñ¸ezw,êëZò·†T°ãиX^ 8  @«¡æ`„`õ[+‡C(á±¶!&ªÈ!@3´;º¶ôíå:»rÔØ™ÕwW¨~kІvÈÉ\=+)ÃSž ¾›´q× +\fs k¾ºVJåâŸ&™ÚS×Ì fûTÕ-™W'+AOݧ-MugrªÃÎ2Wnœå2v §NþÙ5Û9^Ñ×S:¼u;“µV¦•ŵS}><ä§ÄUó•ns3x«)ÂÅkSЧ#:wšvÅ^îŸ=]cdüMý:ÇÿÃdÌý…roía¿zêtS8ín™N=ÞG/7Ò¶jÞŒ†ju¼­ÝÓxÞ2§PΈÀ1ñPà¡|pƒ‘j„7†ÐŸ_Ì:ÚuƒñÓ šoükMóe^Ãóç$êgC1Jè hV» ècB¶%bšrX¨q*³L͵3‹‹ycä™–äщä!6Œ6w 1¯ƒ§´`éô$lh‘ÌŒ`4u|ev¸u#³s.§dç›ÇÓœDöl3L9*|úffÃtý¯ ѱ¨|έÀ¡h©hºÕsÆB}¬³²a¼ÂßéN-œhuçvæêœm2…Zó*bšln©†yãU¥+“µæS¥¦yÛÙÒæÕ¯5Í[e|§ Î1LJxËv:†Šq¬J°Ð5ÞRžÉžyumgDŒCâ)í³0f)«8WŒN¡ çÎè t¤Â´°q¯:®éxÊmiÙNjŽÞ­£^š“;§ôÓ úŒ{"ü„4)ït®œŽC*nÐ˃gsE9•Zm”ûÊÉY›•Yé™[ço7÷yd›C€=c|Ϋs'[qt|x3ÌñQCœ­Ñ—nMY¾C†õ ‰c,ä T„*(@Ì—’˜©Í¸Yò©õçt˜w˜WHçÕöØpl+“qjæàrCê89¡X¸[ÄNY^ÙÔ3=ØñT5³·Ò°â¥mY9w–Ùî^­OµMœÖšÊûØœš¹v”ñŽüýFep3h«nï“W\Í'=µ°Îÿ)ó•Y’ÛL?jœM<—§êLî¦7¯/j“z)óÙÐ`f›ƒ£à€g_¼Ÿk$:£ÏmGì8àm#¹|)å˜à.ZÿË’¦vΟ»}«‰“ Чõ¹zw)éîG²öWw•v.9fõ_][É߯ìgU¸BƇ”fAÚÆ*ºUÊ4lëXzMØí(úZûšl¬{î¡w¬½±ã°§0è :Ĩ858È´d2nèóÅÑ•“~„b³³ ¶vææUâ)ßÝé\œ¬ I­3 LE™Zégy‡Œ§«s‰w–&˜Ö¥øæÄþ’´>а®â¡ÉÛJÝSÌMFM Ö'ÄlБÐ…i* `;¶'ÒÈE C6ÝÜ$¯ÌpÍ›aVÞpm)“ÛO$«jÌ­û2·ŠõÔÀįö÷鹇€U©6r¶¯Cd3M³'ÍWZ1ng^Ü“$°¯§o]Dí¯­i¶ˆÙχqÎmUºoÕÆ³1LÖJú6£–§æ1"¶‡ËW6ÃpD‚ÐeÇêöíÛ1¶j(VU>²…¤!Oa0«°;³ ­©Šý'žT© ZñJb6$8e0§€V_% y4ÂÌÂiäƒ`-Ç”ÿ+‘iº·)u2µæÒŸôŤ޽0Ü%™‡•§Ìâ]¶pOHñª³Uk JÓi¼³&S=33µŸÚå­9ýL 5pMYÄ0¯RÑN²Ý+:¿´lD¯ =£)‰[&ášWp¦Îlïí´Ur“ÑxGîMVíµÊ'=8EœÉY‘ý–³*nUÓ6ªÔ…1S„h¦“œªÏ+wUªÉ†*°­ò²šŠÅJÎÅ6Œ+€wFSÿ¦¢´™¡¶VÿŒMa†)Ó¿EÁÓ½OIméêZí¤Ö²bùŒ[fí[¥dÔr άœm[‡ƒ°­5}ë¼¼‹^Z©jL­9½¼”Ì®úÁ;V ˜dÃ;Q¿³SˆuöMgl²§3nÕ·¦Um`’(KMÒ°?ÑM­ˆxtÃÁSÜJãí›önQá­‰æÕ¬Òp ÜÔÄÜ·54ÜL"ºÂ „úŒq2!Ì2EHa¶[ʬ“Ã=ÂL‚³ T:L@Jx³äË[y¬àǃHë6ÃF !&ÀÜÌ«7ãÔ&^©Ý+#zKIðî0nئ†Ñ’­«¨¶î.™8vmζÇäv¾ünáüÙBÒ2õeù†Â˜8pyeg˜a]"´+j¸wý<2´˜§HïuÊÌêÞŽ½Ù«ã¸)[AÊ8fà ýZfzuvçë´+xïì•Á5Hg›TXw'€W¯UþsÈSNtŽU¸•æ_~cñ Ìó•V)Ð+âÓã#„p3H0üÃapÊ÷Œ€óàBtr-u¼!ýŒÂøP¹<–HB‰ÁŒjù(UÇÞU}GÜ…m0=AüàƒjïÞÍ º•j¹:qîÑíYånÕàæO<3ÞŽ¾{ñÉÎuÝZN‰¿a®çJ»’¿ÙÓ›VØ|AØ=0ùª÷Sè! !ÔrhW°dûæŽ=±!,7€híüj0N!žaŠž Xfbh|ÉÓSqJ´÷[÷wi÷Z¾W lâÜËñºW«›§eOž<Òµ&áéønÆ»éÁÛ::k½Û;vúŒ$™0Tuq XþŠÇ•C¦Ö6¯AºÙ¢BwJÕŸó9·l˜~“aÐ!V›JŸ´Å30Ów5o’Ú>ãµ1´Ò Sû™ž[ ûžrÓ‰W<Û´§<Ý©ûªø×A4©ým'ÒSVû“Æ5]o„±ç>’Hwjãª]ì˜Èǃv$Û`Ñ5|šn)îg+?öÄñ— ;ÓŒ|y†a^ɳzå ÓôÖfK„{[Å>jµ&‡O;ðÙZJ{ÆŠa*ÿ¦Ä©uêÝ»PpÍJfÇì#› 8ü…±”fÅ Jƒ4íYA,ÎɱO»8ÕuI‡wºîckOpê¼CÿÉ<5V€Ù Ð<ñ@õß„ʃÆ!Æ#L•™V'ò–yòÕ‰_ÿ+Ü+¿ŠŸ!¡«UÀ¼¾6s4ÎàiÝ©’´8‰ÏÔЮE^­-6š·ûc]™Á¥Y:ËUZÊëFâ¦)š˜}K4ïV àÞ–“Gªl=ãt¯2Ú´• dü7×·~õù¸‘¦Øx×­uz¹‡,óïæøF†EWþc™&eÀáíÈ›¢+î³/Ü}Ny¬íÄÉ^.}ç 878®ü¬2nœÕz•a”Ñ:W éYŸšæ-›ÜªÚªíŠñêà¥hbg•“%WY†JîÏõd“DÂX•É?’2µŸÚ0Ú_!VéªÕaÚXVef‡ÒVš[uoY9ÛI[jgl§<̬ êãi®û-FÉX¦>Å6)µ§³V›ãÛéèí:x+¬¬+Þ16ê×d®‰îYTÍ=m•¼˜§Å|«À:©[i¢«&-äî—–³g+ØkªÉ…a¨ëÙM °Ê•ønÖί1gW/LN³˜d­g 2Ÿáp·ú+0Ðêí9ìnÙyzlÚjÓa”Àð!Þ)…lÆètL%ó¬ÎëxKJ‡+]®ûw:à¦÷žléÍÍ5;s¢W‚Vº$•²¡Êš½d&Ò9#â6§ ¿Ž¨˜|t>öK!‘gÇ„À™1¬5$K*±_Àd†Ë_C–Ï;×¶ôÎ\„NàªïŒ ÌÜ+Ç[Ô«®~â¯tÉ1ÈK ʽ£é˜dŒ¢æ€Õs5} œÃÝÂ6tl°ï÷êÞÊÒ§1NVó긛Ÿvqó ¸æHCCœ…Ø«áïI‡8@Ô­ S0ä©5ÓÖ?’pŠÃ`i=ä¡ ß‘œ’Ñ óö! ža¶Æ ƒ 0Ë4Åüš‰Pi…`”cÂäüD#B@$£Ä0gúSY¦Ë±®ñˆ…$úȪ@Í c †qX¯ÂPp ™ KDð‰qļæœ1îPhî¹ûˆæ]ÜÚsRžÕ©OxÎêÞ‰‡¬nÙçæªòïxWØrx¬h?ǹ±»L1^åø†#z3ÅÙ{è4”0)j>+šÂäoº÷Y4NYKšrL™©Ú+ÜZ–hùŽ™<ˆÒƒ8Uò“nÄrìËÐ%Úù|h‘#XŽ‘óÐáŠjˆã …5Fƒ%A­¹Ù•¦è3ƒ˜Z¬6ØiŠ9CÅ,…ä”jÈN ÉrlãGkÆõËÈsædíѦce`r&Àè‘Y˜Bºò®§„šÖœôL8 ‡©U¥6¬5™ÜÍ«O¯¤¬óIXŠÿ›4àÆCì&PÖFY]òa¼±Ts`ÖœÂÁ† Ѓoj»%q¯Bà Éñ™Orà Π‡õ2q“B¹i„· ŠqlÍfu•_ú¯º®•¬ðmg¨p 㧺­Â4ö k`yíI߿Ԛt2Ȉõœ5‚¿A”à§ËaÔ²dý&%fvJ׬îÊέ6“ý/}+Vš-•0Û«W1+Ø+ Ù+;ì« ¢´åx‡ð«šŸ¼¯20 fP¯ºô!¡ À05±äŸ®òwæÓxÖ“#jsªÅOœÚ<+Ÿ5ø!͵'ÆÑö­jsL4ÒðS§Ï°­7DîœÃÓ«a“C4ÜÓC'n̳%ÊÌ=øÚ<ÔÙŒ¥5G>ËY[9ǹOO%5ç"­&ÙªæG§œªf­…ÅÝéªÞ9fŒ˜dìœ}7ŠÃé^~p «¦µfº®†JטiçÇæ]nìŸQó5›Öº½=;§WZû/N¬ß1+Vœ›Í4Þe‰È«~¯µm¦ðpSQøfº® ž]ÔÊðjÜ;m]¸´š“»Ûy¸hk+@üŒ<­…y&!è)¥=•˜{y¹w¶eh~¥®Ú°®ÉÀͽ0­'ãåz¦œÐ­9„±`x–åç_ŽW6Ú_ëyK˳J•VgPòJ‰¯Yíá:G yØÓÒjz…ª›`xA˜C˜xã&¬KÂñMaØÄWž@„ø;"9_¼= 2 éßô(2cÒ¼;;XžŽrJägjÚ »¹{6èÜ0·¡Û(Î9CÒrM-ï?’U£5Ñ’y䋤眫ñ!ùLi×0Á•ì}§äxo)ͳ€Ç<’œÒ¢W½§¾Vyþ6)¸ås7}wIYæÅä¦g¢š¼{‰+ üv« x¶Ôæ˜W’¼…ÍÚªãa¥ !왃NbˆäÀì†xõJ±ø‘¢%Ôߟ)Œù‰ÖÆ …—;òy°a­•EË€]÷Ðk/‘r×ݻ•l§ÞV!™ÑO«&êŸò«æb! s-`ðâØ¯y $=¶@àÉ¡'b4Oéwµj3¾<ÓaXfxM»r­½<=ŸÕ+|«U뇪¦‡§ŸÞÉÝ\¼º¼ íà^uÄS Ôz›9¦åUˆ{Û|ORÓU圔؛K—@Ü TÁšzQÄã{.!Êr”ÖWœ¨—Ä®èå.yÀ>ã‘a†›–UÂÊ×wæõ¡þêÖ‡+‡lha»›'éÙ§à¯qdª›"z d €sÊù"J²%\†#äÓZwE,Š•p*ò®mµpãtÒž¹\LߌÏ@¬6ó31ÇMã¶Y7sžx—÷4æá^öho¬ôðÖåòYž6îóe6ÔíÍ g$—;1SMXgb›šc›ó¨B¼ù&øý„׿iPdв»ß9ÂXj'<›™ªá-•5Ù§ÇWBÜÊÍ7B²h|‹ÐO/ttW}¸V«¨UmÕ‰®ì•ÝÂÞžõïDü*9lpͤ„'PÈ“&o±£h_Éá¡mxÑ 0Ä7ÊʶÓdŽòÄ­³Â+à¹6v.ZJîNšµ>ƒUZí(s áæNÙ5í²uMfàa™ùµ7jÉ«< ÃU™YUS©b¥m)õ©·U™”ĬÓ+Uª2§&¬•’µžš®¡¢~³I¤Ò›¶i†›̱?Á‰Î°àfÔ§ÎÌðŠýW½z—Øs- 9ö“Â=“Î:¹øÛ‡ N|d«»SŒ§±U‰ÐS‰UÂN!Ûçªpõ;JaßœDÊœªµ™S²qSZšŒxÆî›v¤ÉV½V£:¼\óϰÖmÛIƒB†åóôŸ‰ä%ZÛÙ¹6Ll@÷†ÒÛ•aò™9fsŽôðo;<ȸ×4ܹ)ún=ÅÌCpÍÕ3+Žyfòv×—V¢µFfS‚°–µOR< ­Št.Ñ¡]Æ«4Éçܺ a_lgíx­µ>Òc›[ú³®¹Ç9`a! Þ²|îÚ«ÿÊɇSMEz¶¢³44¦“Ý5ªÃM™_uYÕúJ÷ìLï?#ðO Éæê¿+IYÚ‡ú‡áZzÒãð!D…YøPˆ†ù†È¾k ê„ûÄt£fBöýoö×Õϼ\= ›xÀØ•¯ƒmBÒÃ{vºÌ¶× ÝÄ0„jeß™©7×jÇ0žsî¿ ×51 *ÀÙßíð_…¦¾Ãû!Ù½ãÕ2­Ìg³¢çμ†aÇ¡2È>æÃfœãø6ö¢-mÿÏY™Cïx Ý™§ó›Kí2 ƒla·v¸îFâòjÎ4À!§~Èö9² ]ñ™®kMu°5A¨¿î=GH혯¤È»”™† ±Î95¢Ú­ƒŸkÎà¡ "ì5¨+UîŒc^ÝôkŒ'c_uΩÄ+}“l_جGnÔi¶î]Ò°ÿa³Wœb¦³!ª¬ÃfÉ[ Òµ¦v†f³ñÛVyáÕaçZ´ÙOáW˜}Škà ٺ¾›)À:¶Éà\cÜOšúìÏégdÙM󲘘a[·:ß3·sDçš9¡ÀÅNÞ™OL6êúSYžjM ™+­V]ûtݺi±0ÐþGÔa]ùýt×W"6N)¶ ²~æÍx d2Q›}Ô¬7ù`b²£ ¨ÿ*ö“¥oUç•׫U_™ÁµÆff‰Õ3´Sʹ7ÀVuqŠè¹†œöí£Å«–ûMÛ‡y:qŽÞÙ¸6¨ù¶Nâã†în\Åĺ¥nÌ9æSIèj}FÛ=®½™§¿m™6S ™LL˜|q×Ü[M¤Ú6¯ón+€a¥:‘â\m½pMãÆÚNµ»•Ü»V›]YÙ;˜Â²gWçÚ™†‡ 0ã/„ÎáYß`|vÑÔ¸•a“忆VO—M'¸U‰ØÓös퉶`vNº×h¶ùûìŸÐß9vê·ív”û—@ß½{á+nñyç`õºàŸUÝ»ÇTߛ弤ˆË#å³²˜œc&«Yž{…gs4½$ÎÉÎ3+2¾5Ÿ&ÍYS³w‰’³µ•dá•™_ô®Ûg™ª`bhU‡\àͰM³ φ”°™~³ Íź…e30â˜uŒ+ÇYÕ’˜˜úÃUÑ«;òÛ6‰ÇXŠha‰©}j«8ά+ ˜™ +uj³+Þ8ûúU¤¬é|æñ´w†y¢ba‰‰†»âÙ+­½[Cù¬ì¦sß5<{E2¦Š`b˜aê,‡øÙ¥e0Ùáð&ÙéßôåšÐô¯|þ¶¼ð]3«u í˜Å0N9X™NÊÉ^ñ\#)¼š&JÊLLLEô™+%aѼʸùÇÍ6’·´ïRµ–Ã!†aí¢•γϠ5)ô*B½£%Z~šm*¦g’á®ãkNÛ'ó²shaÝýœÅŠ…‰Œp"6y#*  €ƒ¨òÊÐÄÎÃ&JækŸ•¡\­ÐÞšõ÷Wx²w±…pCzªÌ¬¦S4ÍL+ Í8ù[Zmižš¤­­=D­F›ìL2f­½¬óîy\Ò¼-?ŠÔóïNèœaǸ&VÊm𬠬Ýø‡b‡ŠÑˆñú ’¡¡C4]ŽÀ–f—¦ÔÝI?hüžå†ÝHçnG²æTÒ»F}÷ãoÍy³q-‰“fÞX§Ú¸Šq3þï?å¤åÕÑY6—ð¸3uAŠÊ½Qdd¡VÊý‡5ÿŸ¸u¾Ö𣠦ýO0ßÁ².uõéÄ1Ž Æ!u ze!¿±¸ù¢x[;=5¦…v“…gd¬3«Ö¸ª­)Ð^¹ªÓ•®9»0åçÐqNêÓk¶CMõlÃYRÒ‹&¨DlHHùºw±~²Lq#Ûñqh蚣z9“³VÜm ¹¥²ŒxhK"RlhAýÑ*í Õ3‰:¤k}0„Ë£*d nGóô7îÐ꣎( »Ž-ïÊ!(4§šÔL®%ŠÃmàáX«ºñbnŽÊ¡i|+#¥8hFƒš¶äñ¯é»Qó®^Úë@èþ[0ûklOÂMÕ¸—Cú0ªåŽì„wfíù 895`4GÚ]ƒÂVd Ùê=WãfCCör-¥ AIú¥g];’·óÜ¿«58Až|;ùÊÉ] ¾*x–øuŠø,9ÓE4ÕÙÌUZívR­Gò:6¬5ðb¶Gà\PëÆ¤Íƒ&Ç96¢„’×b„!ê᦯L7¯zâ ëÝù÷Þ…ìžÉ…aZóxöVêlÜ+B¼Œîê÷nQ®¯ýi²hgud¬14˜dÓW3ι¨Îß;ÉæšoÎy'P­ê¿M™’¼;;^l=#þÕ“ Í…z¶Lšn5ši446NÂhq#Ušœ&åY™ODÊz&iñšû7ý· 6ùçÚŒÉaµšŒ½vÝ´œƒI¦Øo)¼dØk¶l•¤ÐÓa^ \#E5&N‰Xœ Ì­£vÎÒh•Ä3=û][–«rÍ6lÓõYÚlÊÎÃrÑ6c:îKS”hîM©9D6 ͑ⰜK {§ÚjÊÏ=Yú»·LMÛíÚ¾ÎîŠæxù镊t6sЧ±¦iÙ´3Nä­gáXV˜Kò¸¥tŠÉ††êkºa’·Î¥0멘f™ ЬÌ̆R²•ñ}“¦pDàG,ÕVöòmW{}ÉŽf|Ùª5ŸÔ¬’°=ÜÄ­Ú³²VOe>Óû™Æ“áhÓVvžVª°Ój´‡VÉYçµwÖ£Í;”Î×iM6m)ÕJó.ý+;Ò*û#ý©ém¬è25/ bWP7óÀFgNZ]™¿¬!I`m¯ „Ã`n‡<¹’"»¡·!i¼}02r yÚtNêõ “øé¤þ;QÑSuªÞÌŸfžfýûTsómfgGp6CûíeY7J°ÃÊŒœÃõŸì5Õ¬õ®-§s*±>­Ô*É^pÜ!³ Ádb¿õ£7ñŠ€H°34¤H«"¶úóPȱ[‹9Í® Ï”TÉaýJºa§ž$Ö¸ &”Eìãΰ!ã!Ü¿St$›Ù—$"€}6ŽîÞa>»,é¾"9 ±¹¢dHÖ’ß]óµ#Kz£$ÿ¥iÆ0‰Â5Ô2ì¨×Ø¢ñKiç–ÖHK¤aŠu—4ï ñLïŽêݲméXng†b¸÷ÞaK1ÂBÒÞνÊ“VFUYÁé” H"\dÚá"_Ãâk&‘™ ó б(2Ü­ÀKYt©¸~M'¯ÓVÉ’³”,JЫ  Ð=ÕNYÑÌ™åyr,¥z ¦×èÊz•®Ò•ê[i’^½_ä¯r5t¿9,:êa/äqãE3%«L%ØZ’YØKá°–fg½¦²½Ò´%å,IoµRYJî´É-&íͳInÕbKèX’ÓbK¡°—€bKýoÁe%¡‰/Ña.ªÂ_)]“ ¢oاÅM:˜EÆ1TɸpC4£‚b¦õXªxza,>•’›«d‚þë+jÂ_îôm…aY’7ÊÅN*Á:ç]+$\Цń³0…ÜîÜʧá±*\C+IVïöš¬ª›õXJ¼»9¦*o•„\ôÅM¸Ä©vv*x ;ª¬"ïlTÔ•’.¶ÅS†g¦UOñ±]퉅Wª±E7órÈmiЧïLUOLÄ¡38fP?ÖÒe+ Q=%ˆKüØñ€y[ —İ7ö!ÍXÀ«7R°;+ø¬•_ŠÄ+h®%ɉ_FÀ8§Þ¦PÛªÀ5ÝtÊ©ÎS4á°éÝ#´›fTõ×¶éÕyÇ=fø÷tlßs¯ÀFµX3Ìcþ›Sð?2”Ù› „yY'^‘ÛšB”S T3(u幆û'ÔB añ‡ vFäѯŽ~ÇÊCyûÁ_ä=ý³¾µ¡¤Ãà œ8Ç.æ•ѿ֛a÷˜¢ᇴ4Y_`‰” CÓvôTQ•o¬Pja˜j-ìóнƒç“Íñ 3 Ɇ!?솬|æ;$ÄrÔ-m¬BÄ@˜góç“i¸ûÊ{Jg›7Èdûö“‡·v,êú÷jbr®žyçv´3_ÒfaýOÛº«&vàŸªö¬ð®DeZ Ì¹&+ÍèyM´·¢Ê!ù:Æ gÉÁ¨wå¡™ˆÏ M¹0êX˜Àq( {Ë<Ótõ•ÂÇ@…}¯qÌ0À0™ Ùy?ÂìO´¨³¤F’ÀhÙr®`ÑùïÊñX1†@¤cDl q_&žÀ—Ö¸[%vñ‹¿Ü¥ÜFh4Û§ËK=96‹Ý >¸{æ+׎HÀ±êÚHöÀ]%àx({–5‰âZÔ,†O×Vqñ0þ)ŰÜ2°Ô†YØ{Á“!ŽÑ_i• àPúËø? ãÌ“‡@¨´%£³íìÈÒÒƒÞ¡‚+íÄBÜ@ù¸õŽô¨9|‚Îê 5×â õA¥@ÿ.Œl¥ª8bÂVË{BãÈ!¼œRœ:³Ú€à«O*Í$lEôlÍ£™W +ßÓ¾¾ûÖÏÔ…©9÷ˆSâ5ßÄ k™0 z­qÊ),Ûu±0ž‹i«,äɺw E”ç°>8FЗtèR]1«) \Ù‘PÄ…¦Ãg ñë¡üœƒ÷:`À=$/EdCI"Ç<|ªû‘¡):ûƒezNäCj`uG¨G»VÖ÷” ¡º¡ Èø„‰Ý0;3êjWÝ1瘳–h†ÄØQ6g<=BqíÊhøÀýèRÛ£N}D3ÅÏ«lW^mÍ¥¼jÆ´¦¡×kVaÐ1' ò•øí’Ь+M_>Àq¬%úÌR¾¬ÃI1>í…q°¯vÊŒžÝÜ_‘áCW÷Ü-ªØ•‰‰‰XcJ÷,Ó¬½;C3ñÛöhäZWÌW<ëíG„¼SP,Í÷JÜ3¸)ä®i·•Ð;£'j¥;ÊJµÒî}NY]9é 6ÂHï\°zå¥ö;@§“¨}ª°!Ë<²ŽÕÿLá[3¯Üô(HâUô‹†e £B4÷"éß™b‘%Q„|…qt )‰Y¥hVæÉðØUáéØOhÒVeZʶª¹·+‹tƒq#ȹ–Ý´š£%^‰\sY]{û)è©êiâ°j5Ü3«Û$â•™Zã”KeNâ¼hœ%;½•7Oy+¿¶Ã¤t Ãøb~õö€ÿæîÔPÂ=l øË½r)nì–´Ä Êàà‡ãBšÿŒÑ>ÊT³¡¾kn1ùb£‹ dUóÂqÙµ“4ž@£ƒ_r@`)¨&¦z…•¼½Éú UØÑ©Z²m¯ @ Ì­ `*ˆ}$ ð0ÆÄðu•k=ôÙbl¦½;z³½ ÐÓbz[ ÛÏK³LFކˆÚ—ÇÖb¾Ñì”\G²,‹¥|Æ<ˆ…‰¼Œˆöd`áŠÈ+d}«€î™ó»žù.ÔÌ!?½®ïƒ ÌàWü]E2›™Îº›¶ô­Ûté]„z\OžSËù¶=ƒ89b=¨9ó|d ¤ÒB9ã™çyĉ\0¤Û®#Мe‰£DC¨Içà'°”=â»:ãÊ%Ǩj•¯•Ö€Ÿ=WÛ>£ QŠ{ö½Ë8 j¶'ŽVlêèmAÀÏëa¡·d­’¸6NÜÐÐudßT$ê)½$UÖ K…¤ˆ„êh åÝ 3 #‰ðw<¹”rðbŒÉ£-G˜] YöÆ~Å% áFkÏ@½Â#ùÆìWˆwdF‰…ûü6×z„P|¤+`ØØb wC†=—´gг=Û_B9Ú‘ðoöaÐ!=yùó<ÙÙâÌÙ„!¿i ß‘ŠÛ‰Ï”€g¼°2ã3¦$†M¡&ãȘyg–Cxäð÷GèŸqÈ5† wäà;ÂöͺVlCÀVØ DBòçßžáYMã¤WõŠíã†zöÑL•Í¿‘Xa?[°0#”&›SkªÒKxYüžü¨ ×ÞkߨG¾Ö6ã2˃³oìÂäR›Sdwnµüˆæð@Už@É‚y(†øÂrsÜy®åñ€×úÐŽ {­D¨£q0')ßò¬QÅu'È÷éúž3ÏúUïJ 4À~‚ <ˆÊ+ ±;t‡\ÄDÍ3NÕ×W>vlˆü é—U×Ýîû–æÓW*Ã)…nlH«úXOpE «³¨›‚lé—Pv¯¬v¹Ú’O4¾°µŽT™VžoÊq›.GàðøJj´rm’D¼špÿØÐ942LâÕnü¥ã>‰˜Y¢n•bm¦ÅŽ]­?êäœå¤£Ô¶ó£¿@VyºoYJ襯+á•}róÛÛtE|QÇ•÷uŽ`QÉf<€âU§•¦ªE@Œ@ÏfÆÒ‘;6cY0˜ž)É ÒÄ; }wê@šÂ“h£¤Á@úÈÑð &1 IÇ•WâCÁ:.¼hŠRù ù‚=ô·*$FˆcFÙÁµÜíÂ+ÝÚmÛV˜¦£'Ó`~øÇ×¼u v¤‹†d†2€Ô^a„ôO¤RÌq­dŠ5”°¢h„ 2Q¡) «U9 ö,7ñ |^Mœ?s:òÐÿ õ҈ϟI¢9-Ä¥µ&P¤»‡~Äb¸ô?ÖúàÁ „B¾<¢y‰UƒÉ9­ŒÒ±àÙ“¹]ÁÀ3¾>»^w¯es·3i¹6òßS…WŽ¿žÕŸMÊ–‰4¯èBb¡­Ë4å8(2ïºx„ƒŒex˜"”áP˜i.I 6–‰òÙo§Ž[1æ ¨{r€µ+±/%œÃ‰[i(ŸQ:C ô Ù»*ÅàöJaj+. Ë56î?APjåTêšs*kOØÚ£ gL!Œ,‚³î{Ò´Ë:Ƭ3.IŽol{Öb<"¼ý7óoz4³9 YNÉúŠôªý–Lôέ¼úM¹LÏG7,ì›'­£Î+ƒggUÓÿžþ1ÞZUqÍÛæ]õ[ö'7?¡¨9;ü-PÜ:!™[²-ƒB@ûFôøÐä—ó8íÈo¤¡,Ñ®0Ÿ<߈~ŒñÏïX×ø<#œjßTε¶…Ûvðü„ùUf•É5V4|WtÕë¥xÈT˜­­Ã?ÊXsŽ]ùõǶWP­6-_•[Å}÷û<ËJq/ÙѾBê)á½Ëè!{wR0?1Ïô!é´NuŸpy†þêóPüÇú”Ð0‡ßç ¸œ?r_}à'ÑWÿ+ÀÏœ­FO5«uq×döPò#ü,SÍSî½°Ý95~}¡«;¬*û´lS3í*òƒIR¯{O^«é«ÒU¦¯×fUÑ3Oa7²¹VwÅ´S4ÍL™Û7àžÖ›Iòí³?á¡‘¨9qÝ“ÀÊ5ƒ¯)CÚýéáyçˆxSÈH~/Ê\Š#X c]áR#œBG\ö ÷peJ;M[ŒS*ÛÎ&⮠ꢲaûôýGÀŸ—ƒ’̽$%Õoô <¦ÿnP² [ Ð0! <Rb yÏÿžqgmM @j¥ÕÑ›b–E}'\UH`úE<רøÅDÑâŽÑŸÄôN° ºƒjÈQŽ3«à«jsèz ÔÐ)(qÕôÇ8­¤|á«Ì²— +à¨uî’ö—s•tvqʹ%\Eºš«•K‘°ØtÇ@‘C¨‰D\܉Ç>V… ê…=äÔ!i>’”ëŽ1òž)Ì*Ð…`’k`d9s=S@iM2ÃÏ*çÆ[Þ2²àÚFìÜCr îØ¨-OT}Sõ|VÚ³ÀÌO@¾‘ c¬-(°reÆ|œD´6tI“øw˜ŽÜëìSØ?CV[Š@÷`Ôš©[8fÔôöKHÿÇh Î ¸£“êñBt4ç Ϙ#ZÔzVq§NBûO¬Ôàï|ùöa¦0ë'†l*íªºzjSm=¢~ë9&²ZãºÇgr²´!03HWÁÅ·aŠ„@[>á£*Yø˜Ë23ãÑ>òŽÌ>IþÚaKB1 •9¤Ë¢`{0rW!sƒÄ*ÃzÿËÒY*¿†ÙJå\ É]3®…fFÚ1?ƤʎŠ”u§öEK£&Þc[tl6Ú‡-CJj¨ ¼©–Äù¦3H£œPvy¤T ¡1ÙV–‰r%Çø!²„rºÂì2†äŒCn}.¸¡Æ3 I¸ÒY‰‡\@Ç (Þ“jˆ¤™#vuèwd™P{2Ú®¡¹66+ÿÕÓÒ|¨cJ„ã]@‘j@ã?²QÅ^@—X¯$Ý¡yf (á¤#GïBèqLÍ-(±ÄbªdJû*ûç©ÌGÐ$_HïPçA»?yï¸æÕY[&N|ºx§\Í;Í4:÷n²n›L‡Mà$¾æ¹etÊÀ‰¥5ä'ˆJ»G„¹:z… ½EÕ¤8"šþÈ@ÉÚSŽj怘,¬k‹hP©&O^ìçúsÓ„ºfª­7Ÿe™¾t“)ÛñØy‹EO÷˜UÃÎ1úN¦«2V'°°Ò|¦TÅ2Ï^?Kc{wÞ*ªÒ™všðÁÓ2CN"2h±±xeSqO”ç¹¢ŽY†|BUX”™C×*ǶF!=‘ø&tˆ­l¯3¨I´–öBuçª|i£òd!Wªý$4HõݹÉ,ÄWö VqˆC@ñM»!‡¥yë“gÚtʶ,Ò» ÂZµ95|†‘•¼=ƒ^x€Ë6Sï!zÌš¿;™|òp”*åLþpÍ•”CvgØäM14ìÈÆÈÖ*„Œˆ57”; [ÉÃzG3 ß°›yüži–pŘ#ˆáð„XÛ x§ÂW‡yÞ¡›xm ;bc˜LV¸øM‘C ÊW›Ù]+¶5^òÚ]%õo•uñoFNäÛ5؇†öæxý‹*‘þÓŽôž$£–6ĉü7Gµq,ûX3G´îÈÆ¡Ä(Z iJüFħKs'ºZÔ÷ÈñÓ5RÊiŠqŒãÁËQüÇ„> “ÛŒ 5‘ùÁÆ3a­!$…%p†¢y$Ì>‰šky%”³³ºVÀ×Ài°uLxôJC¬j§ö]Yáh]¡ 9"ZN!ï=éz>¬~Ç4‘)Œb´æœ¬ÃÚ>Î6W¨wÚiÊõ³ÿZò±8Žñܳ,ß]¹ÔÙÏ™E½ VZ¡Æ+X¢`} d_,ý‰ô$_\±±ÄAá’Æ(òqÜŽi±·æºe­¸ß5o<­ÃŒd8WvË{2½}›—¾µ6“Q²›&”@àÉ+€ÅVš1 òº’íbù€èL³ ûÉÒU™$L©÷¨U>‘äÍüyÎŽ‘£d}fPˆ¶`zø ç—TÌÆ¶vHi(@Ñ!Qno¾¬k¿±ƒxlDW"xÇps8õÏ-ä¶‚ÒißÕé²|¾•¶¶á€L¼’x„'h@E4)§xUè³çà}ãø‘Í<ΔóFG5¦¤cˆm´óÕ¤!Û¸d2/b7G"öƒ8 e !ã»Ã$Bûå!>ʱÉ7vyµ“ìPu¤G¶}£n}$CªqJÛ[D£¡ä3ï(ˆÊ!Ô&Þ™O>R*%€¤s #×°Ü`ÒÞ‰[)Üê!f~U’¸gÅkïÜþÊ1Ít>à8iõU}&ðz·Á»b³Sž\j¼»y3M;ò·ƒhÔ•‡2÷ާ:÷ùLÍê°£Q I ‘BE„?qì–BØošã}³8†H¡'™÷(«áÅ0Ƥß¼é‘åm¥:Ã>võ ëÀ8§ôlŒé¡=aª¾Šª•¶È…qÿªŒPcè4>#:¯Ž¯'?-;kvi±<íû­D¶/(:ɦ¯l­Ëú™˜`fffk?‚äÚÐöÍaÄ2i¶IroèºY³l©³Vž­ÜfÍZý†Ã¯mO‰+x?Í÷^a[y™[FÝY6B·£fܰÅ6”ð òwàpÕÃ0ÕÜpa³Þ8ašW–¦ÕY Ãøm´ÈyÛXo‡Â¼Åðoü¶Vý°­» L˜V‡r›»Û8ÜÓ4?•‡\ëã®ÖÉÑZŠã•§8–'esïƒqŠßÍïUa.žý{]¼oÕ¢j+&PÙCbœ{3–Ÿ:Êz{3Þ³"ä&Ã5™“qnVV)‰YSÍÝæÒVbŸÃ`WíÌûw£d”ªa°Í+ölH¸åsvvð˜VÚhVú²_:¼Ë99š¥n•¬¡¯nÀ"iÍá$êÎAOcÏ¡çž QK=9û W ÏLÊEU+²xê•ÃŽ]Âk+˜i¹[ ªªZtñï.äû®®¯^‹Âæ¤üMÑŸn,ðëÛ"„$<³Ç/%éP‡blKàÌ<³¾#›9Ôní5,ýä&i±Sg óI)oLf ãk?RÉ´'ŽÑ ²ž YŸj®1ãM$ #ù1Šñ <}<ýÃßaü‡4¯xÙ³yXm’®v˜‡•¦"qÄNQÙ«M»W‰¼Å>UÈS½BœYm]QÚãU7Œð×$ˆÆ]ßžQ¸1®”ª“ÈYM 6í‰SÊôhJ#¹W|Çày&°ß²Ø@ý·«¼Tå­F…\«Â:—˜W6ýûzv êg&Þ 7õ®YýfHðÏÍŒ@¡p tp$›{ÿ¡þ4gr06"ÄÕÑ7¤Û¸(ì÷Ì»È~8Ƚ™Muç<—=S˜|‡Ü‘PÐ+¨l§dó ÀË)>ác! é¤L kÔ9 w§4ή|™ß)ÖYÙØbWT?üÍN ðÓ:öÔF;FY¤¡À"“ GßTš.m¯4H—6@ÔÙ‡†­èàŸ•fP!…$4Ž<µƒÀ0#pAϘâv0mØð aퟙ¦|â=1¤a\h…DÉ) ë: `Öœ1J)ýÔ4#¼#ÞÐŽB*¦ü÷Š^R¤Õ›[k(™#¾&|Æ+é h%Ï݉Ï+ÆP VL1•<$2eÈ<·|K+xd]ùy?§¼%[Ql7„ÑJ0˵Å“ Á IkßYÖ9ÊblÞeWÁgœâ®^htÌó&y¤ý„²f•ûséÓ53AÀÓ½Û{CN¥xk Í1MW;d¯Öa.YXqêÒW¢³¿#G°ÄIy” «ûŽˆá‘ÌóÙŸ›g$…lã(0={Ÿœ¬ÊÎý&LÌ0­w[Lœu¸§Æm]öЭóïÛ«û ,Û\#ó®Âñ!¦ä©“R@€oh€täit!¾SÕÆžrm@ûÍa£"%ØLOê¹+3YI³¬+o§N1“º«óg4ͼ‘h˜Ô lƒgB¦Ä|&¶q’8$yX.'ÞV ¯{;Y\×M…}» ýÏY9¶'o˜{ö]‡DÈ¡Zn-Y[‚CšWZÚ%‰0(ÉŠ> Ð«l?gÒ#ßȼ—°hpŠõÈ@…E ›¿³¨,è_[ÈùrBàp‹Y·?ã’oÉ—Í(Z€8”>òhöÚ@ß Ùa'Á§@T•©Ô)Äñ¢9¥!ØÝ«ß«´¼ÍÊ3¾‚¾[Žœk‹r lOÉ’­«$žCþºôHñŒiÄcû¿ƒì\ù¨þZr“ÃB5˜Id+c[¬7g,[LëÙé*…(yó•r8ÈŸyj7`Í4¡Ä:sŽRÊÁã1Ïr†Ðì‰bŒT^À$áoBXVuå´¶ªgß!ŽÜ”ö¤ÔQ*(‚vÔ†…™ât·½»»&T%™&º0D³ëÙBZÉä(œÿŽ©M2£2`MƒNìZ›Ú`å=ùœz,›­t„ì¬>*X{T°úÉaó¥aå’ÃÒ%‡H–©+Ä–òX{$°ù²°þô°õÉaëR㕇ó¥‡sKç²{¤°ñ°ñÉaû aòÒÃùåaåÃÈ%‡d–ÒV‰,;4°üiuìžFVÈ–ŠXx$°ö°ìÁ…?†VOÚ¦æ˜{Ê{9Y?‚˜}ªaêéïedõtÃòÓÚ§Ö•“áSý¦ÙOà•“íSÇL>õ?îVO½L=Í0ú”ý‰Y>M0ûtÃÚSÝÊÉíi‡Â¦¯Oý•“ãPP4‚­lP!îCªU*•J¥R©$’I$’I$’I$’I$’I$’I$’I$’I$ ’I%’I($’IA$’J $’PI$Q‚(¢ŒE`Š(±ð]ÁQFµÆºŠ0EQ‚(¢ŒE`Š(£QE"Š(ÁQF¢Š0TªU,cÆ* †-‹bÔêu:™L¦b˜¦)J¥R©ŠEF¢Q(”* âɲlâ­í3,êÕ›W´O•ù¿•k2Î3ÏšfŸëäeÕïÑô?¥sN®jŃJ¯iŸóVþmZÑû´í[XüZwêÖ5 7ì³jÚ•süZ­ZÇ#Ž ‚á±AýJçæf'?2bsó&'Þ•ÐLÌN‚dÄè&LOÃ+¸ÌÌNã2bw“îJèff'C2bt3&'ýÊè¦f'E2btS&'ß•ÑÌÌNŽdÄèæLO¿+¤™˜$ɉÒL˜Ÿ–WK31:Y“¥™1?®å31;”ɉܦLOÇ+¦™˜4ɉÓL˜ŸŠWO31:y“§™1?®¢fbu&'Q2b~Y]Îfbw9“¹Ì˜ŸŠWS31:™“©™1?®ªfbuS&'U2b~I]\ÌÄêæLN®dÄü’ºÉ™‰ÖL˜dɉøåu³3­™1:Ù“òÊë¦f']2buÓ&'å•Ý&f'tVL;¢²aùe~7÷0¯ütü®Õޝþ:'Þ{ÈÇðC^t™—"},z&Õ„úäËpvİ$ª¤‚Yè‘ïÛù©1f¨d$Ýú*¿bjümlý q ¤$ʾ2d3D«¯àqUð ™ø9óM¬Ð4€çúB5¹³ ­É€§ŽõÏHŠJ5pxgÎBu-‘qdW^<à•Æ‰|@Ã3eÐ'ƒ±=rPÙ"]ò‰’lÛäI–¤ÀáŽ\d ñ&—60&(Íê qˆ]XÑþÈ×úΚÇâ*ªØ#ŠY¦1ǺmÌ}¶|©arÙŒ=’¶Æ"{¸BdSÍ":HGcÇlx¦Xì_ìøÊ±§# 9áš½+ Ô~sÌd6ÇddJÃŽcåðyD»ëòÖš À5s={)乄>’‰›eN£2Ç ^ÚÓYD¢oŒ'”âÌó±î”,˜4”:'¤^ÏÔôÄœöVJ™·{rôcHù%ž™±?A¬˜öðüm5ŽMVškþò;Ç‘<\Ylž: úÄ¢aNÍë03Ì ‡ yç8m%½ç+¸ S…,ä f‰4êP6GîT_™Â#øC~X›PÔD1%ÄÁ0ܲù­¶BôIcŒ9*jLk ?"úÝÏAõ¾Éû @~ÕmæLÙ1p3”ùÎI!Š@´+ZòãÒC¬vÅ%]+h,CÇ:ˆsK¨ýHF’­€û '¶¸w Ã6æÚšäî²n1´7õÉ´±é¦¾;Ý •]ØUÙo_y«ë a—u2‰4Ó^U+s‹qìo5ùo`WTÝ"æÀ<Ä×dS`Wµá‰z)®.•qxÙsMÕ:…ýr^F uv‹Úô¸AMÔ°ŒKÄ_וù6ajo ß&½1®é4Óe‰°ì‚i¦šú›§{еZjÆY6U™`žÚIªMꦛÔzlBi«cædžÊ…𦛚±Í9´Ô«WÖÈ­Yeª¥’e‹EšÍ¡eUŒ‚ÉZ²d™öŸY,žû.²|縉jš¦©bÑ´LêÅœh-"Å£g–*å‹íX¬V ‚½¡i\4 CÀá–Ó×|óº:ˆ†PÁ˜ST|n‘©‚hæ¹S`M+.¯8Ú“ú.Eá ‰Îdq亢Ay^kÒtL7щµ8m`̓fmžiÂç˜Ö¶‘(°!ô¼Hë4Õ›i–6DÎgJqÂ,DV0«qóžÙ*ö¶sA˜p {ÿˆxúM$}¦iΞI€=‡ ¯¸}Í B‰Ø’vlÈŽ¤ßœð{hyƘڗ™X3}MT§yM<£’'¦Kµ6v¦áˆÜGÏ€u–VOÉM‘—ln¼!€VP{Õ\¾«kUü£ý&q^úéozú2¶Õ!re_8ý\YTWã"œ¢hgÛׄ?ÒtÖ0Û.t˜Ò¼öd€ÛØÁ[ñ§8eÈ·”‘ùÌiÁK%¥8g ù áߟ¨ðˆç¶?&š­l@ˆÝÕ¿iuw AÿÄ1±Ö,‡¾äF¦ßÐ{–D×1Î*Ìj%ÅùÈO¸­Ò¯Æ0?òdÉ.E‚e1L+à2†¼CCR`Ý•^!mhÇrÈ+ä ?gû tÅlÖßjþkÖšŽâÿ§Õw瀧Ùª²šs;Q†£Bµ¤ÎÞLšsVNö¯ÒrêïM›d®¹¦O Ó†twM(Íæ+·$PæÎQ†ôFMî,šîwuÓå3Î>æ/MsL’ús Žï–vægCü=¢3œVÑ„<3Ji=îË™C¼`lÅôÚÑNq'4ûP†;âéL£B­ ä0œêP(~æHÄâ[A‰ôž»f*@ý£NCõ{ðü ]k¨šQèñF*Ç@íP™pEìöPΑÏ,d' |¥À©21»’å¬Ä9#Ôá’ÖûD\ÙQBªÀ3‰¡<¨ÿe)Û¿ãÝ‘Œsá»2 †$ŒHD=g>t@ˆÕÐÍãªuêÅz®û&å>éM(ãÿd«µTL;åŒ &@£8RâmÎyôŸ4l¡pkÈY ÙF¡,äëâ™’êoKƒ>f1 xÈ»×ñ(˜¥ sÐ7m”³i$aL}îív­ì¯]rNB§÷Þöô¯øƒÅ0ÿÀ1Í$ñN¨7"]âŸ6ÇÚ~åù¼’ygÎö¦±ß \ýJ2BÈu (qÂ…•c]áÞ?ÑÊBº„žr•ª3Œ›Ùº§ëÆpcbb»J¼C¹9a¸¼µ$ÆYì òb†,ãƒô?7>âÈÓ¬Ú›R$áð0‰Q0ãt&[cÙ¹wŽ}DØ3šN¶C*芊0o¨WŸTá›#Bv§ŒïÕüŸÄí¹€øše@j_2zù¡úWqïž6¯¯û¹ée±”–Äi˜Ž î ù¹}×pG¾s¹¦ƒýÐ:cÐ4$76|ÊeKQu/ÇbW sÞ>–j™‚ކ`ó]ç’HùÙM@ï«6èÁθmqX€°"~K\`ì@>áƒ9‚A8ò•ç¤ÚÏ<¶ðÔÖ_ÃÛßÛhm•z†Í‡bݳ:+¢•¤,76J˜*áØ¦OG>­ëó%xˆœC Mu[5X¦fq¡¿šLÍ[óÙ³¦ñTý'P“@¸R³ï¾eˆã¾)/†ò ³bjlÃÄnæÈ„‡àR ™¬;Sï>2ì{…éÙ•WÓ2/”ÝZbD3ì1¶1­l›ížÔ˜}$"57€` It7DcÔ>b}ÞîïÈÖàÜ2V‹Ï¹ä»ÔÌ«„¸{ú¯“MQa,”-t~CÅ}²ÉšfËáÎ7¬aÊqÔ5&¼Â¡3`ùhtÕé3Ž0è>‚6 ‡ðÆ:bp×5Æ@û©Ä,§€òñ&ÖÚØ³üxĨ…e´“Ì©åyÈiŸå•a5ŠÎK¶áÕ³nDÛ.€D:ħù«;³RxlÃþ⥠JÀy'XqPæ„ÑlH­ä²‡é`C¬@ØÞüÍ·G0 ˜ó-ÍR@Œr JüÇà]ù®vhgØ#%^CÚ6ði \tíÏ9w8ôœ í>RX†óŠ›Å>†Î…kBΟџù²:t>Gª0Þ°†A矨â®5 ~d @: t¤šûàâîM˜"ø]¢4%”ܲÃVBQµ4ãô, èÎé±6†°¤7f´ö/z4Nþ¦TîŠÃü‡ú7êº×Œ­ â¯`ÞZÖÞ«àšó˜Ç’ÞHälΜá†4®lÌ›Ó Á£¢v Ìh!¿iBÆZZ{D²4ânÉ+Ú¡p@¯ƒ< åÎn6Ä ÀÅ1hÓ2J²UÔÒÑ+¶6Ì­¤­ e+I´„ÙJh…ìô@üMɯӂ +mm´@Ê•rAlîŸH­ kL¡\w­ä™Ñ@ÑŠzާ$TOɯèuMáß’-°öº°ø¶C¹]•>‹…WÍ«¼´ßã<äóÎ\jS¦´ÞÁò1°„£d a½Ä2`ùE© —æŒd{ø=ëã›pìÚªxx¤FÚ†Ò!ß>Ùzv¦uÏ$òÄXÍ h#Û6¡† sM@¢c„+¯ÚYK¢Â`B´Ûš9öPö)ýœ2¬[LSŽdIÿ3º:H™¬5ÆÐعn#GÜxÔMÑþ¡TVèÛFèÏŒ@a¶ÓhÌ]…¶QVŽÕœ ÷É$ ÑâÁ2X[;gD¨?;Þ ¸À«¸ÒÊy¦)иQúb盚vÙá¦l*ó4ò³¸&jkÓæLÔ¶j±L š®2áYq3€h¼u§hVekÙ©è[ûAZwöÖ’–íËA¨>¸uœáO'A¤³çÐË5^C²µÇ2a[kŒ3êÍ»æÙ]k@6’.„òM±Ú𖇿eËꟑÒ8©¶×—F´P¼ÂþBlEá„BJÂ׳b3Öß1À ƒ@‡¢ïó·B=ôLÐêGXgó ³&êžÕ²ˆ_H„øÀõüO˜¡d€iåÐpŽyضµulc™Cr÷†ˆí^¼«X˜ƒv5íܬÙX)ÂpNãS*ç$ЕHá5–a Ãà‹y#ŒÝ`ÌG#ŠÃ?Á¸&¹½êvhóJÈøHg·«3'˜Ÿ&ýËøFä)á˜ÍÛUÚO-~Kë= iHÊxŒŠÓ9ŽØ«R5%¸g;ãà3£Êf¢>;…h[ ÛØ?3º·c&Ïe XDá±€}²Txf pý¾9e)ç@»œ?¬Ù¨H­Ü²˜s‡0²8Ú di¤êˆÝ˜É<Ä+ÏÄ÷¨jß=Ø8‰_m±>¢¶ã'“¾3fnÃkbÕ©ìßÕs®u,¦Šò¶ÈÕ•“z«éÓ›dØ€"°(óðÁº“Ï8ıÔDª»ã xAunN Ê¡Hs%0üܱ†t–@›g›³TÁBöîЧ ̺ 0dP4COM†!Öx¬6ÝÐ p- ”gy͇þ{T|»Zšj¹û¸ÚϹ~ E7ŽNœõw+ %È cΉ8; `VÆWÁù¾ …¸!”Ô˜¢"„‚ŽhŠ‘ V­Ý0«XKüi®— Ve_Zá^^ÿkÛmMÙ¹êq0XHGÐù‚=³R€9Çb…öÚ;NBíкò¸ÊU] ¥g.IˆZHæ8s$¢¶Â5t aܹ¢ÆÊùŬjíu ´IÊsLJü1NB–'ë(äÕvøi*ÕUüTþ‰þsÏUnlœª­F¥-ª¾ÚO+dDZ H$°&4„ÿ$Š;’®„7†q‹‘.fž Œ3ˆ|§Úz¥øÙ¡Ok •xãø¾#°`BÐÆ¶—Ü»9]{50áµÁ¸E\¿â˜x9‰‡›•öÌáØŽ]¸0…°n,x=MØš¶Ei/-'€!7v’ '^†=¢6,ø0Iq.•mÍÜ{òžÄoå5Ǿ±v°…PŠÈ°Þ1ö2­Ð†ž{@w£–hí rÃ~TjÄT ù›„ƒ,òÙvº56®9F{¶ 0i£,:£} ¢j¥]Òׯ+팒l„ dâ+³;ò ñAÍœÇΡá¡8 Æœ´ÖåÑ´¶¶øGÒ!ð>Ão(ó¯7CË0dáÈ=‚5 « wTíËpÔ/åɹ"VÃx$ ¢<Ø’­¹\™>Ñ!Þ”òN)Á>âu³!·*ÇHó ¡{&•f›⃇@¶a½ôÑ jP0#“>RÙm¼™³Po®äüŒ ø Äг}"l•pš\ ±6¡ê²­üdìCH÷ ûí9ì6B½²ˆ[Í”›­qçÇl2¬ñ[àjÓUæ)„ L`V"~J¾‰v&’€ÔŸ+µ>óê-åøš=ri†ûFÄÕžqzi`žòç* èkŠQ8<îûeO‡m”­YZSUº§<ý‡Øj¯½kàË¢0ë]õÈ„¨1ÈQ1Í-¯—TLËô´ÑÀHðÉ•ç»4 €ûc,S5Ýf«¢°àšçUx*nÉ¢sʹЫ &“@톒 F*›£·CÞ$‡‚g “_4¯ôNA},/H=²(Çd{¦(±“ïLÝ3ÀÏŒø4Ä Û;¡žòq ¸ÕX¦ùÂ;Åū̳ Zm]Q•à 5rÝ“yŒs" úd¸dÜ›Ä;ih'²?ƒw½™™Ch‰‹.ÃvDÇIB}¤<]ÑÎu[u_³8†áí:]5ÎapTÄ­[56C€´åwQ¦íY…ªÂ?‘Šl*×B®]V•WéÝÝWö*ì\ü­½ØL5Q›`v¨‡Âx_O|ÚϰuŠPïŽYû¯¢y¦x¦ (b72lëg``gÐÀ L FŒÚΑH)H‘˜ä6ÏpÚ’Þ  }B¶ˆ<0†l€3éåô©‘‡m-¤„¦+ e„ÂvÆi›@É“¸f?†ÖT/$ê´ǖǽÛ<2õøÐ‚œ?á®?Cê3F žB˜I¹sß9§˜ú£r`Ç(Ä^bØŸ9°}ýUå-9ýwø-V¥ÈÏ®[y&üÇHôZ“Ô˜H´dpCûŸP5GÖ~%d`ë2íµ£´g^uÍ.ÕL1î–²ô à}6î…È€ÀŸ“Xx‡`ÓD&ˆ„ƒœ<ÒàL´Ðs"kJQ‰2¬Ó—;#x{äS¦¡2Ê×Á±¾KŒ@„5F#³QЩ±&G³,FÌÿ‰ÆºÀ‰>E@0æEî¼Æ wèÏ`±ñ&$˳᳦aOü:§€F¡‡9yÊßË¡ÞÁdõÀÚXOŠ &ºç›γƒDÖ†ôÂcYÔ;ñˆý˜Æ±ÀÅ –@Ó!šeÁ¤÷£þZÃ@Ú«UÞ•Ù_åy‰÷Ü«›˜E†AÆ#}~q¯¼hðcÖ<ÃN=Ùæš¤<3×<ã|RŽBüN³î,Õy >™p_8°6ä=pyp¹g¯f '¬RdbžüfôñL1ä”–ª8&®Ù2|Ke=c9þ–JúŠïlÔ÷Ãtó· –ÌPí |‡XV "àRÐ¥4ò¼}GÎb+ô³êø¤ú’¹›"´¦¤BÂ?¿»$äÚ“’sÝùšÙötl#†D©˜çééY~JÒöc²â« ¤=1öP횀öCÙÈñÆÓÐ41Ž`¸–,!º"?²f¼nYƒü Ý#™„%Ä, ÖÁ²ÎÁ®aFÀ&Ç ~GT¾žU(Lùs;£ï'Ú˜Î9¢ªeÏФ³¨y-U™¨êßmóØ‘YÞ>âUã¦úoܺ×0ÔVΞžÝ—BÎ}e :öFÌ¿²›+M%ZÉú™‡L8ëJIW?ä;Rú_Êaž:´ëÎqLiã8rñˆÀ…¹¾¥‘«ñÆ|íö]Lî”Å0팉™ñn•ÇÛZóì2w7²¿±Pç‘G&ñÎÀª¾Ò±ªûÄêýïî_] i*GöúÆm "—Ø/%œúŽÒ+ãF4é†Ãi«ó:¦îdœ è+ÏCîL»sp=á’e¨óNЦ«×! (nÐ"±ؽR„¦5ufÊ¡æ™T,M̳rlØ4s³Ái¸#•«–÷‚}&yCS”É2|ƒŸdA龪µv>š¯¤ÜÛ!¨ô4õêÒaöïMOj¾IÛ&Àre¯9Æ1Å¡pBú[Ýâà¬5€vÄ„jœ™ÛrgMÆÌ=_OäºæwËVÈhp´ém³²yÇhòlãé+éÎ1ݛٷa½{—;»ò5Ó³6mqß¡Ý4`kŒc 'RÕlæðv‚'¸n޵¯bàýË ‡š2åɈxì“ã·ç´¶#Ry¯tË´gDÀø"Î5ÓÌ5Glg‚f™ó¦v È?y¿7eÌ›,ìã &›bâµ£u aÉ&‹‡CZÖ²!iDÝŒð>C²hUʈòY§•£$bZy$;C‚ù'„t‰F¨¬#v^ßH×±OHòL2£ö‡8pxõ ÁSPs ùÞ”s‡ÄU]≠ա׃ùŒÛḢ8À!±¼1 cYicžvÀÈ»óãmÈF5w$Ù =“ã0š@Óæh¾˜“>I5°u†4„ë ¡ÔdØ y|ByžgžíhCB]$ŽhOþ;BÂÔC÷:ãc¸°9ƒduŽIh6äÀýrVÊ£\{ç®CXü}2 ùxYÁùT,hj=óþÙÝ)iúÈUÂ¥|>âbšZðˆîä‹í;aÝB×ÐÏNuÑÀ"˜"hKò³å {ï.mÅ\aÓ<²]¨˜”TÚZzNÜøŠÚþH@ `z Ù_V’lOôÿO$Û=ê´X§´æQŒ;çJw$cä â”D›ÃWŽ Äjjΰ<³ÚþôˆòÒ_Ì’âq¤?Áó³È™IlG ¸CXcšYœ;ƒfÖU˜l§¦®Ù¢}5}£†ÃsHïp­¡.5ƺ°?›K&˜chp! Iþ°òŒ!ò½44,{;Ð ¸Ñåʲg¼[Þ½´t;"þ•3²/Ƭ†÷¥t˜<2iìV¦}Gl÷Åã•¶…ŠbÙW@¯Hó Fö‡–x­ BÊòŸîp*ú¤r!xj¦¹XØÐ·> 帲¶ÖAÂ8S>ñàîÜiçƒHm‡ÊO¡Þ–òi¬ȬžaÃ+ƒ£>óP®@Ä>aß+€$ Àã‰ÖÜûHq-;ë~ðoŽU ¸6e ‹çã 0é^ðÅ3Lpà“£s…å–njþ¤ÐéÞA>iÎÁhUüÉ"4†…¡³«ø7ªB<ÖA ui¥yùa¢x,i´+EÔ™=Ö8«Ÿ"ñÊ2óq(\©2Fƒ‚yÇʇ0©€‰" ¡ò¼º‰å“¨`‹è¡‰gKêaðŸ¸þñÀVWË }éšÒ¦_Ý l>üt ’.}Àó*yfq%@¹”£ä-dy¶,J°=3ò?ù"—C¢UÄ=ÁÓ²¢níÂ"¶á]öèK=ñ†Úë`n*ÀèÜ ¦¼¬'^?Ñ&É=Bô1ƒá›2ΆÌÚ”ó¾1Ŭª;ãJsáS”;cÑ‚ÀØÁ¾!»{…jºsßQŠ:æ5ž>ÂkGÜqƶ~DŠÒ¼ÕZ³1Å´–-¥DŠðK¡Í<ƒÙ>Gµ0‡–~Œá… )&\öÊé›0§¾w‡Ìlœ¥7³ï!4³¿1¦‹,ì–‡¦ü…éåaM@oècŠâ°ßMˆk†¦Ož2¸³*z-,Ë©Ã:äRˆ³—öÂΫ2†b¦p†ýÆÈ=Ÿ}´‘Ä£|jN™P+8r€º—vž®ÔÑ».Ë!üÂqÁ«ŒT©’Lï ÁòBÈc ù¼=RŽÑч"ù­ÔÄ!³lÊÕuæÞ¨^É”?¢š>cük(I5 eÍY Åzt ‚üÝ„&ÝyZañäß—ƒ¯ÖY [ Ñ “8òÍ8_ÎQìŸíÒÜ늫q{PuÍÅ«{x¨{½+¥!†0ÛPÂd‡È3“ë6ÆéðªCnd¾×Õ&© <£ü‡nÊIé˜ýŒim~t‡¨S Y iúmÏòõêâ "º%¬¿¹÷(Ñ!Ô- E°·æ]ñŒkÞžéVWãBªBn¥EíN‰”#ŽQáiýÑ/])E¸Òµâ!Ï8öÐúBþWÊr2¡¤tŒ_LpâFˆ’V¬Þ_çt ÓË’!ouNLúì/d½5 s„¨óÐú‹KO6ä'˜^éÞB’â×Ö),h]L* _w%0Ñ–'@É„Óo?ÓP{…ÅüL19ThÌ 5ðv85Åôóݱc[¹Ì?VŽ2OÀn LVi û…|‡H1èRXÑ÷Êkמ#‡ü{äÛ›;2tòÍ1õ #ã0Ç Š&<ûí°þÐ1­ØCÓ>i ‘î—³Õ;’Œn‰uo'dÂgYG³$ˉ\7 æ<Ê1éŒÒSO@Ø<²˜8âôM£Ý|3TI½1µ¢Ä„ûŒq& ÑX>ãˆTC¬‘ 3 À>«_7g€\š°;òé%LÒúøÝÆ»Vüøæ Ô.l¹³FtBbË©îÆ´ØÂPqÏ€Úž@ÚŒØí<ŽWlÀÆ¡Ç4FäÜ—ó¿=ÓÁC¶%Á°“ €Ú›"‰­ƒ[ v‡•1§¨á‰°|Ç4*Q^›H$ù•<ƒ·.E¤¬’¯²x%^Q¶7HvÅ„¬~vå¬Á–’šWЏvOÔm€`BèÓkæÐœC6Z‹ÀâÕˆ'Ϙö Ãq$кS Í4àüHò¾W,ÍÈ£5óV6Æ þ̳»ÓxVL!Pež‰îT¬9slVÏ,>B¨O52+Ø ÒÐÙ!"„4#"îø¤ÛOp·rª†ÀÑú p¸ü*í7òÌnÏÄå’EØÅr|ûÏ,ë‹áõ•³Æ[ˆCµ5F`°Aö?Ð3¥1_ülNÀϨ3É/®öLÑñ’­MZ¡òØö†…š>ð6l«€|²fx§ÀT  õ†=)G÷ˆEW@<$*ÈDx$ë®f›˜62W1æ4ø‰!Íù›>“z_Ú‹R`ž®9¾&@~s² CiÌÀàØ£ HPÂ×–£6gÊÙX='Ë)'¢b_Ò6SÕut6d­&p,¦LÕ‘9¯½ù‘tfÔ“i‡ ÃeuÆ´„ú¢H«ù”F´«´Ô)¥¼üÌ´GZjÏ$iŒF}ƒ.>@ð•hìz@‡ì@œU••SæXtÖ}ë¢Âذ—ïØ†ù„_™b¾Â¾óî¶)à¬U;݇½°®éaç˜F¹Ûß^QY*· òv.Ä÷öò,b½E‡t±?FÅS®±° Qµ ©Ÿ)ÄxÁD|§ÆaÐÑ<Ó÷8Fµå´÷(xfÄò‹qY=ãôÐÓ>Qô¡‡`r{)C_`Cf†Àó³-†E †ìÚ¶œ…ðÛŸñô!n}ÂÈGt0´¡ƒ×½qîQ°ž–{pÇÚ4²®½µâAó*G$ꌛ´+,°‡–=¢"¶4LnŒaŽ.M×çÝ>£ù6 Ù¥4%ÔböhÙ÷„|ÃbK)œj䤯£Z}v¶€H¡à¡t#]‡\~ß)ï²pÔhÇ„× 9Áþ7†È·&ìÐ#6ëÏ ­dRö}ç¾hžÕ ÓQC&†¤ž“(Õúž9ËnvWI¶4}Eu„1¬½zôµWLêƒù=£Ó$Í?Sò`ÿЭ5Á¾0!È$Ë+SWxÆ Ì“¦À®¾óÎq !~'O¼ºŸÉ}/EÔÁŸDÝžqº=S"VÛ•søwî•Òƒ·kM|]!…W櫜ÖÐLwáŒ!õ¡ÉB9ÇŒùå‘æÑ± €t$¬¦µÂ–I“…¯vˆxnùË’å䯒…¥÷Œ«…)§†mO°†yäÓ‡j¨@ûWP,Tlæ=Ž­¸a(ãƒvÌ&ÂÕ•Æ;tÉ›–¦zä“לÅJFõÌ'ÜuœyÓ+ãa`C÷1f´ÊGµCb©>ߌ1 þϸì‹Áû’­ât04á”ǯ=$!8Ò¢nÈOHÑž¥;³žFDˆöo^¯šÞ=÷OT½–Pg˜‡ „¯ŠBu4JîÚy:9¤5%¬èÙ·Ò¼Ã$ÿGdwÇ •}|‘q‡_šÃl/Æšc(~§ª8Fê Lå˜Vi“jÊz¥aÿo’ÉûÎAí.ÎöÓU]ýôžó~W€å=æ¸Ãc›A‰DB¾o¡óÉ*‡È„GrdžH0>;avŒBÄüÍ5AØã}`oäÐçÙq{÷íW uÈx‡ÆÂd@©a ƒWÉ7Á‰#Y·tkˆ©œ(I¢ÐlO¹âœ‚*sá=3®<á˜CøJÑç¼f¬†a¨µD=²@ygUÜŠÓ¬lPä1 Ç÷*GžôOÌ Ý“#¸ƒ–x'$“>RiöÈóû3ûzç´s‘ˆ+#ï05fèÝXâ 1¬ƒW"°!KîˆÆPœ3,4$ÛI;Pd Y·°ØK°ž’ɨsSàó‹©½:òi”Bx”8„†T¸“Ì4 ƒù4åhíHMý«¼Àfš<eÆôç4nt·’CÑ3Úp×å›c4v†èô¹{‡znœKf‘fKÙÞŸ‘h, &¨ðŽäÆ–ø÷Ç¢XŸÄ–%LiI(Ìù*a½÷C•*g˜úŒ%/Œû`C4=š†âœâ=ᜎ0ßäÒaã36W„< 58›fØ‚¥ŒrDa6„±ß±åÓkK¹&oÈ¥ôã·â@ê•7¿oì';Fú½7¨ÒA”iìøØmູ`>C*;çlמ *ƒ"À„é¥5/bdÂ!Í)'¢J¼·rˆÂXŽk…4æÚúà¨É1ãZi€ð•ˆèϹÞ6‚Öð-ïOX»Éßœ‡šW ‚1Ÿ`àå!H&™ÇK˜Óz/ kO$•2*ü&…ÔèÆ8ˆ‡lmȆ •j{§¤n°Ö)¡o­eÎ8†â̵áÜ’¾@Ï!è¿:£«jC1î©äùܵgÛo”äÛ‚6uzRuFL¶yкž¨eг¥ ák:¦¸¼±@êµFÖì-£¶ÁíÔë>I§0djùi!!ò €¶4rô6·Zø§–zí©‘Cš~æQç•‚*–‰ÎQ7kmaùŽ}D4nY £¢zV‰†aÕ¹k¦¼EÜ/Ú¿¦Û+é0øƒ¸Z£Ñ\%“F7—&}¤Ë£b¡Â!Ån$AñqšaéOÌ2#no'(°•‚-Ì!“oOÅ{¤³‹–*Û~–~£©,d²uxêìM©ï•A«° B^ï’'jD}ƒìV¤m áûŸñy~3ô;’DòM¹ü—"Öz/ÂOÚH–Øøèa›Sÿ¸Ý‘ƹ÷íëu>cóVÞVËñæ!Î$˜gØyæÌ­ ÑÐ랸ܟ¡ˆd•¸›2PüN)ÚÑ8UÎYü“¤3ŠoÏ$¹¸8/P†ó ÈtÏ@”.Güv0Þí—`rƒ˜m"¼ók/Â(FP¼=³©P?ØÊU¬$doííŸt­h˜:’þá•4 è=Ùª€ëCBxÊ<Ö¥MôV+¥iÀì÷ù „ê1ÈTPú ñnƒÉ… àÉéØ˜nÞ½þ”–v†ÿðý«ÔÏ»hK¼^Q^Í›>"mß´Æ4öìŸ2ÆÄØæç]Ö’Ci.æÚ’"Tà•’MÝ‘ Z#GHÀ¬3ú;·VD=¢t)çªTxä ¹Ä/"¨pÉ€÷ßÈÙ1l.TÿOÅ?o~[†XŽ% mCÚš£Ô;"ÈT‹ùN›Ñ@׊ÁsCù0 cYtgÌuÆè¨rÌqϸ’ ѹ|3Ð9åY—vÚ 2¼Z¤›È+‡(ù‹1p?Rdg\yKVæSÆ À†ôØš£|†àÏž JnÇúdKB®$±š³eÓ¤h5Æ\ yâ-¼¨1ÈZÛj¼â®P¹€m¥qô ²­¶ããCýfp¬ e £ƒ.¨iË€¬á ‹ï·–²9“ù#þÈâÒGÉð£ã;“®/í ýäÐæÓlcËñ¢8GÆwÌâ#Æ'м•f#¦-O²û¥ :.Ô²½‘B}ÂèeÎI1±Z~cêC"{…$pæÃ›#€VO ›;£X®tºq[C"m´ì ›²)êðÇ|SÆäÀ<–?a÷¥<ÁŸhÙ1Ùk_-æÄëôó™8XÍ{"eKa½4G\WÎÀÌ!O8ïrøhkAïιÃ!¿Cçq@èK@áÛ òY•;R1‘÷×XIýßøÀ<¤1ŠÚ ˜É M·ŸYDòŽ£­eŽ‘2™{& §4bYø #|àX‰èžB¤3orÂuLë*®aùŠã*Àá€Ü·sK€@ÒÀëž`"¹æÜÛÍ{]d c]#»j@†3%˜#BY°–B ùèpÉ/T8Å”=¢|×–Wß;æq AÿiÐgôÏè3¬š´ç4SÍ)ˆ9ÃOÞ$¢½y°1E­¡$Í"¾|Ç=ÛÿF¬÷Éý.ˆdNIà¸mÏìúô¶•ã6TžYBªTM©º'ÈeÀðÈÒxå4i/Y¬¼Z q¿¡‰@„0@ `nl~%pÿNi,‘…;¼BxÛ™C<~l±²?Ä*FêzTO¸}‡*UÌâ³.O¶WJû½*JÔÞñó\ Àß ƒ¬Ö6îÐÙŸ[Û+C[`B98“nœÊ=¡íÒØîNå›RE~wÛjàû€!xe˜à5‘’wo¦{\ÛéŒ@„Ô¯[—Á½ÃëªÿëüU¶°ô Ý9i˰¯c]é;ã†ÞÕìOQ´‘ ‘K)ÇjÌ¡€{RŒgI£Ç'Ýûô•ò›[tÿÌÕ¤¯þ9¥% a¥0!ú³@z…}°´ÃŪÒ¡ñÜi@‡`À;6 ä€#Û£zw*Ó˜Ô;44¯¤ôOìïÎøûOP«“šR’¯~xç`CmçâRŽ“>2‘:óÐí IwBû¡Z6„qœ?ƒPFÓJc™ƒëCœMiö,(|,Q‘BY)ÏjÀ†a_X W²z…DŽ~“†É´Ô*…Ü¡R3ÔNÜ„Â4ÄËqÑ6ïa‚~BØ{ÅÈíìŽ>R‰õó™çÑ*¤"òYˉܘ„„ã"òŽÑ Ë2}|Ñ#Ly…xá•–°oÏø«eЯSŽ™]8&tõŠáûŽ|:âqéb¤\y³ò§ hÌÁ(eÍaÀ)¨SÍéï•2à2g^Ñ’m êA‡®dßü•î˜EÍŒ?ÆvìsDòŒ°ª„½`@(Š‘ a\ëfÔØ!t6„S‚ÔÛ;@eÆqºŸQ«4¦܃¡C¿3OxlÉÉžùi n¸ZŽÐḃ†äðÐýPè?ÖL1¡>c˜u‹‘ø6!½¡k˜Æ 6$7ëf•ÄŸÙÛž1ø¡¯0§^WL9[}ö¦Ë°ñ2=Ù2~îð "1Ž„ûMIûoˆnÌ>aBP¹ÂÈÕFüÀ4’Ó½šB#«|–AøËéì”ÖDîÛƒ¢/§<ÛŸiý’.÷ß i0sÏpï!‹9 É!z?$7¥8êš·&W9Ò»VYÄuÎïF4Ù6}°»xÜ–”)†˜¯¡®odb0 ŒÍùK*íQɹ£ù†ÚŒcmCÄ0F°šo,ÛÓ%ÌKÇ2Ũ²‘îˆØ¡¢tL$ # †]¸Žµq=3Šn^Õ?ÆiM¡²³®0cœÑkvèzE)è4×&Âq‡ÎQç™ð ²a†O~+™½…iÏÿMÛ¾íáîiÛK¢U½eóítö®…wgÂåO„¸›€ÈÀxbDúßÄöš±êžÎþ|sŠÊ™NNÿerLÌ•†Wü^]öna9Ë9 7•÷žK&[¯ „"2¬xÛ[)ZÄ+ä¿Ú®0y&À¼š42îL§“„°ï ;×0‰6úÇŽaOÜ«y>AŸW Û¨Mÿ]SÀrÅk'T’C$GÑ0ż·š’ŽdžU‡¯`Cˆü-¼²—"ÐqŒ«Q=ÈRéH,æÄùœae8ÆL·#Ý*¥t*EýŽÄÇ·W6cÕû\3[*äápEeàšñÄ>³ƒStHjM¶Sþ-({f™¥?ÙŸ+ã``BŽHD«Ìi,‹`?fŒ„FîA™#OÐÁ–Ò…b›ƒå2hH!ÿ7‡Ú(Çë?SÃ5à¡/Å&þ m§O¥}«­VòlÕÀ\DâXW‚µŸŽñÊñø7óFtU©¸Îñi;"îMH|ì0æÀÇãºw£žä®Ü°µ1Ñ£!(!g!> i1DaÇ#Ücë¶F"!ã6S„p ñ85¡mø´£˜I—Ò\³?MCñ>í8~#‚ò9Y9DÃÆc¯ y¹o¦¤Î«ô¯U­ŽÝò ‘Å%PŠýG`{¦üb@†lýθ° ˜ª•Q½° xÀìŸÓ™Cä$§ÒaL±×4O¿ÙÉ}ÃW ó÷BW vãöaÖ6$š¢Ø`SCÁ¨™Ñ¾<€wÑhÍu¯ƒá¸qAR7ŨðN!àH}¦`®y€{"x;ÁpÌ1¦‰&LYBY—ëøÇ£¿2‡ð_‘æ k!–gÆ4…Ql-ǨòÆE ø0EMÆ2-pS—5`|&¬X^s˜B*²‰bd¬˜LL¦2dÊW¼aš˜a‡ˆº·Üo•ð\c{kNŬ¯n5*¿yùíÒps±™4LiIsÌ Y†ÎÀ‡Ü‡9å¿+½iÎ}„ÒuñÍã›0;¢5þߨößh«œG~_¨ëÛIà²LgÑ!:jÀ°5T9…·’-ÓŸJ»“^qN©Õ39œ>RH}Âä…äùµ1 ùŒÏñÑó I´åyÌ!„ìIÂÔtÍY0ýcö¥9çAæž«³+äwØž^?‡8OžæóH`C‚:fLÞ¡h ‚ÅkìØè˜s #ÇJeÌ¡9Áa òÔÆîΩWKó.ÒÎà—gã Þ²$¹·òh¢„Ñ­ù÷IEqHtÏ…ÄèRF36m1 |ÖUè›Éì!P¤¡^ºÿE¡öL·ó7¤‹uw#T«Ê9ãNCcŠ@Ê7CTaüåÔÂhƒÙ*fÄä•RäF6ÒžjO°¦¸¤6úa”÷ÏŒäµàdÏ\lh Û!Í`hPøÊñù?Cƒ³^{dc|ùÑà’hP9r¶5Ö+¥|û YœÛ D–=cºeˆ {§à>¢Dô öÏ·>£¤+‡~R•ÿœi.ðŽøÅ–ÓH@ºdHÒüðÏp¶•5wäñËTW}eÄ–{âîüÖXÒ’Z‹Qe;³TsMñî¹ÓÊùÅ!ÜЧºG*vUϬƒB† é! œx€üD7ø7$—bˆðŽ.‡ØUùš=b´7Æ'È7(o‰` ép?Sš}ÅA†QÎì¾>Á];ß4'²çÐBƬy:¬0j&¹Èª?’”4¶àÒ»WBc ÉVz%›;bÂy­ öÙWWŽhÛÂãnRËiyÏÂÍ¿ù¦µ¶º†üuεԃ¿«(Î?±$ X`cXCâ¤5åȃ‹!Ÿ{È=óÇdF´À†¬×šrønŽy4È?Ùì3C‚8ÇÌx¯ fËYÞŸáSj Ó»b<jMP`TúMqe)DÉDP¶D;c°ì„AÍÞ™'>…Áô°¨^ Iÿ˜çºB`µ·ÒIçgØ¢sð:|§`ñßmÇ”ñÙžAŽ2G˜`Ã|XKçºãÐ?rê^š[¢j Ñç0Æ”3M5Šú>›•|G¿V쮌öNèŒWJ_ ,›`NØZ3ì©e(‡À5ÂÍ3˜1-ÔnÇæR_¤ñP Wµ/dõI²~Á&y«Þ2÷W£¶-ú·ï>0¯éUòç§&¦ˆØs¹ä!_~«3~7†0ÀîWd§6ä'^Ρ ¦Ì8â4mfÉ£ö6Ìù8fK± a8\†˜~#×Ù@ÌŒ{× †xxí!½·@<€x%8?CÍ-$DGŽÕ•)ãBÀ…äé¡»¸À•Òèc ;¨3䳃5ìíOˆÎ³$~DéNnXÏÌΞ Þ hühB´þk³4ç’ÊVº\Í97¢¬!˜,hYñðÍÂf˜jJ‰$ycDÏ0݃üÅoH}ÆøŸŽñ­Î!õ1^Y."ŸŠ¾Qü ÷Nå“!¡bsŒR¸ÿÅDnÌ® v§¾rËi׸±Î9“r\ t:÷šS£-ôÚái5e öO(÷F–1_Ð÷ ‰Un- *Ê%!¶—ÅÔšõo³WBA´aï‘ܤ½²¥]ZÀϰ!>“TpK ö&XÓÿÙi*ofI‡¼N!ž.ƒ"…Œûß}EÅ×1ƒô=f&mØnðb=Šâ„’@€l¦àÖ ZÍùBjødC¼CÎn$“ðŒÛþÚ‰Ð?VPh˜òË¡F?w¼(ãã«êŽ˜ó‡÷ÜŠí*ˆ\P´ÒN!m|áœÙðÑÆ8cHcv`Cú2ÆÈº¬sú¶"ÒdŽÅP¿bweìÂ’HqÝBá÷œSáW½*Eí£ƒ\@±4¶Òö‡ÀCnó‰Zq<ƒzfЙWÈi(wEÿÅ[AXË£Ù4Íi÷Ìùq'ܱÊ’ë áØ›'‹¡ÇC`kÆu Q¹a®8/H®«ðy¤/ƒhMIñ+Ts.¥ èÙ‹Âv¨æš²â¶T-.Ä꓆]ÁXynü€Ð€ul˜ü†I}oðYϰ³°!èPŒ/§zN“Œ¬~çì&ÌAfBôe˜év>Sè-ï8Ε‘¿¡ƒ;Ç0zy¼”§DÀ̓ÒkHY†oϬÇ_O•ïN•²<ó,…œs®÷˜o,ÅrŽz «ç–o, {U6€Ð€dÏ,Ö=ûÖ/eDÏ3’G´Ö@˜x†PΑLÉNfH:¢À­Pà•=Û+Ík@ÍœQç¡4á ©é«Üq=¢’Tо0=©ÃCrŸ$Î3g4Õb{&ýMÁQ'‰ €>S ¶‰oi†°í Ü0gbÚÍ $ª ‰ÿ) Šv/ÜeÀ¸—̳_•ø)ýÏ ø,;9½ª~æüû‰6H?RâRÊ#Á}Ɖ &ð3樑ˆøD'd@ÒXÁ>kð`ß±×f‰qÅUôM!¡"¡ªxF„†ûƒ‘$^Il+¤cþ:Ra¢:ô"!DÌ9@yÌ1|ǵBÌÐ |oMiŠõ[ë‰C Æ=fÀ"1޳|¯LÐÒpCD×})ó•õÙSj+j­£Y¬É,šªÖVÙY32i2; ¦ÄÒ}VÍž¦Õ‰‰™Â«M°ÎêU¯42VLêý¶ejM!±1 Ì*¶Šäµ˜m[Úb[vK»«ØSªgq­ÛrÑL+MÚ¾«a´•²œ›MÙ¿#—u¯à›Çê[&õú wÓnÚsz¯ˆí³pÙ4+¸³¿<ÉÂ+nÝ«ëYJÌÎܽ³­týƬ³Œ«Òk¬èÅlO%±¾+–BºÀÑ `tÕ£¶’P5ƵœE9;uxGÙ§T¯Q+ܾ€ÉŠzW¾LàÙ˜W÷^‘áU¿Ÿ\ó¨´è±1« R¬0êF$_´®a½f§÷ŒOïbšJÅ+ 9i“)†¦Èu¬Â²©þLTÊ{{Ý16Œ 9 › EeOz¯ìšÍ2³« Oɨ¬"û¬õXK@Å?å€Wþ°‹á0£¼±MFös a…iÓþ¦›5Oçݲl5&›¬L0Â+ IµVÙ’¬ÊÁ0®ne¦tŠàœÏM6öe+Pa°¬R²xÖ&Lì0=Ã$Øb§{bÙZS 6Ã&KY‰™’²˜V'–™4M“9SëU“)X™¦…gf¦Ih˜œSÚ´†i„´–$°Å0ÄV«*Æ,˜a”¬`¦ÙˆmX•†ue+e ˜‹L32•‡`¬Ó*š)¸j+MššM!-« É™_>Vua,ó ÄÀÃà 1S *ÄÄ©i»ëJ¸f«E3MvTÃÄÅ+¸+ JÆ)U·b§Ù«ƒ¦y]âaXb‹ 0ŠÜL+•VÂʼnaŒ1X˜aƒ JVÌ€+’m˜ *%°Å0ĪwÍ”ÞÌI“ L1+Ö,LbˆDÄŠ4˜a"‰ë°*ÑgìY3(£C UsWÀR£†šTª41K1‰XX±€¢Ó`UA…ÐÀ¤&“«Q„KÃ1-;”—­ÀªMV!TŒã*gb`X`R¦£F³¾k sšÌ*µ˜¨†›ÄÁaPJ³0©d“bc£Ÿ)·V({é‡í3+3:é„ AíΨT±¡˜`ÐÌ»c,Q™FQ뛞¿%ÈÓ¸¼» Õo›'&ÃxÉÉÍ›öZl0ØpŒ™œU4ž9ìï²×tŠó8„U‰²’Õ„<Ñ€D†D*e|˰¹ÜÏDªW|Ü_dûÆa¬3@ Âv‡v0г:r(þƪ¿ sKÙ©<[­¶×a†'>õî5Û2´M6e\l¯ªÅ0ÅM ïYvw¶§®øî –U‰/í»!лcb˜Qäb›ë3t<³qTñƒè*÷·+“š”ÉäUèUÈSj8›!³{™ê~ê¿Ný“ý*#(Àö£*†„›yåMû‰`tÏÈàÍc×·âÔrÛÙ¹sïÊpBÔÙØëÏÕ] Ó‚{Æš¬5!‰\½N±[ 6¢³Îšÿi’¶ :ÖÊ7·¾d^è¶¡Bû%]Q"­Å´Ó\˜9­{"ŒÁcûKA¥0%[~`C~`̶aô˸=úCö<’y“sNÉÅŸ«:á‚ì¬Ë[?cè4#“„SŠIR1eØÙé—óFnüðÍÁ8Ù’#<ë ¸'‹W½œÂ»Jñ“Uàg†¦L˜¦©7.ଙ˜§…aɼƭ<ÓúUã¤åÞâןí´}Jü#¥˜¨Do¯[k"˜„³(È\AÏ¡mçPÌ4 smö f@i†H›rÑùP/…À³@îÆm Sä˜c¶ ›QioÚpA—$Ù6Øoòc’\JˆDGzG‘ã(Û[I¢.åÞ†ÜÕžs®ÍïÅ©¸7k6ä㘤Ut,Tád(Õ‰ {F ©²˜H ò»Ò»‹˜qrY•¸næ0ïZéÄÛ9æù‡Bܾk€nÿ˜ ¬“)¬ƒŒõ6?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð/}€ $@¢…P*¨J€¥!HT Tª*‘! ¨’‰’€€’ª€TT¤D%( „UR¤(@ €*€ª 0LÀ˜&`L0& €˜"’š40†CDÀi„É„iO44É£C#CM2ÐLÓ4L@M66a4ÃA2e62Sö“#¦i=LÑ¡¦¤U&@ 1 ƒF€ŒL2`a11Fi£˜&!“SÓ&™† ¦©ù2ddÓ&™ š4Èi‰“Lši¦ œKvz§ŽfO¬{'ðw®Ñû¥‰b  زƒv,Õ'Q¶' pÈÀ@“’''&& €` € ‰È  è^‰œœ ‚¡`¸flCè‘@²m‚€{¡¸wg|ñßÅG âR½œ¼ Ñ”ÍÙÇ Âoì ; H† mÙ2›Û“Y™.úmIÙÈœJ¬‚÷Á•?)ýŽìɩԠaÞÚð$Ìô¤í`¢†í“$*ˆ›XˆS·!UU^7̸¼š'D)ñ$U]ø-¤³]XÀ@@À°°ª0 S DA#•`±!̰#$Ÿ1 ƒ%\ƒ1- u, Šóû7N­¡ ÁƒdöÔ$„¦ ¦ÈÇ0¦(„áXJD<£ ˆ@DD,Ø ËƒhÈvagoO@0@(Áî°S}̘ Œ3¿"ŸU³d=›˜a’£´`­\ȇÉǸ¡àY”nžU‘‡a `B£ !¡bÁ„ÿæ,Œƒ“Û!öˆi8˜L¤:áÂ7¦þÎÓ`z"³$x”Ãáʼ¡CİsÎ’Æ V¨aëØ“Lײ/HMµÕµ‹¾]Ê4›Tݽ»jÎ0@¥£ Ѝ‡o|ä ìÜ Á¬4eÑÅÔÂw¬?ѳU“ xÒ|`È@!ÝN¨ÇŒ±Â”Õ.Þ\»ƒñ´€=&Ì?RîN D¦@ò„¡Ï=0d=iC~ÎHÄÕf$7,¬À•k <æÔÇ·ìí{ŠoO†Ä™·VÏIÄ2A¯ŒLÓA’cZÙŒxÉ 2N½²faû¯|ôîî†!ºn ¨ìZó`ÀVdS~pä V¼h;†wLÚ7ÏðîÑ<û£ ÌçÐeþǺ–’d#lŽä?‰“…@¾s-g¿tŒ97›uÌås£j=˼³Œœ#\Ry6ÁÖ4œÃ°i4;ëC~… Ø]çö÷Ž¥`×5Òð;;HxÕÛƒȽÏ|!гαæ4aôØv W"ÑG’Ë”7Zè¶ÙKãHm KwoÄKìÁз#LÑš£ú±M%€ù-«$;Ö4¯ñ zÙEƒæŸYÓ>0ðÜYš6t*9CïµÌ‡*Ê8òp{vÅÝ\C \⇯rN¹t&©òéɉ·· ÆiÅ™WNÃr4œ£²|F½æÛ—Jbƒì35Æ%¸~gfù Ã~wt3F8É=[ šrÎɺ.ÛG›;Çnnž‡yp/räž4|w.ïî=“ÇŸ”¸(ghvCÍ Ǽƒ`å[—Bek¼9Vs}.ŸÐIÉ y&9,[$3Î(‡§‘8ó/²lßìíqmÜÛg6< “pÎyÖ[2p“ÍRaä_òãšæ›'âÆ«ä»áTÝ·t¦ÞÌßk2x– ä»}·ê½K²vN%èŸ|“nW»“‘k7…›Ò;k\Ô)¼„}§soôyÂÕÍ…V¹²+‰–½‚õÔ’9ÆÓ°÷ÃÔaÞœÃ'õ0Û1ŒdàHlØgKfgËt- Có¼3»39çnyÆmɇ¯a8÷Ñl€À¸AÃ3$ìm†øÈ‚f‚fgð¼ë…z`Å›ó­qŽè×ÇB2Ýö ñê= Ø±½¶mñ2î.¥-Xë]ñìÞŧ3®)È;AѼMåÝÙð é™Çº&ç°œ«ç¹çFúçe'…v×Þ|·¸w²†˜³üœáð<ÂnÎ;‹Ž7'ïíGLà rr £'»r,ž„Á›æw¢o ÞYÝcQò™9²%noåÓqGä&wÇ>×֨Ǖp'ý¶L‚’nϮɤý.õ «8bÚ¥W•kœ4ž<ºhf>'‚u-³¡h6ordgþHY2à™·mŸÐëgMKõÙÂêÏãÜ#jÕoŽý.d¯'á~ÉýPãÞLÈ´šƒbÂô¯RùEëŽhC}sqê“f>;ð“7D&å•W½$ü &d1,Œ“Ò« 1Lï>³3°ü’¢€*!È5ÁÊ“+Q‡æ5 ׄÀX†øH$µÈãMÕõ§˜‚ óà‘Ah†Dˆ ‚ ‘"Ì{ †€+Ï‚ Ÿ`@-€@u¬Cµv†a£<–„ßÚCÉz-ÍÂ>©º?©Ç¹ ·Së2EèxþV&``¾!Ñ;û8$À!T5% ’™œto Î3½»‰|Ö¢¸†Éô8†“&«áµ˜kζ sÜ>‹l×:F¸Ê<¦öÄ4†4J9$tŠ[¶mþ‹ðýDëº'£í_)€çŸh‡j,ønå=»1ŽjNij§,Pš[4Å› Èrn=ücbæÊœáÜ"g‹v¥áÍÌÅ”ÊkõÂÞ¹§6R:ÂÙ‘¸’+˜{ГPhÌýn,ðÎÔá\AP¶6Fx:€±4çVȸ+ÌñŠ n¼g.ÊFQüÌ Ž­‚ÑÚ2-F³YªÔz³Ý7ú›Ù\õã'æË¦½éNÌþÑŽ.ÏêùÌèÓ:ãGN?é¤ö³ÉCXô Ù0:–{í2¡#ª,‰‹³ôâCqh=‡Ñmç äÀº`!YëÙÌSýŽÙÁ=£®}S«´ ßÝCð¾ÕmHo Áñ3í?Ý㋱Üé¤}a½0Íó¾4#fÈdÏ Éü`LÀ0¤ñ°ŽŒó]9óÊ:W¿{¶ÉéºcJçžsOŠÌäyGwm×VÎòÌÙ†£zÒáªÉ 7ouÅGm}—œ+ÚŽðÞ87ÎãÚ̇×!êZÅ™Í>tÒ~fÈ,šÌévÖ~#¤dò®…¯wÓ’à\ lPsdm•€/AÌøi%¡¶6M :'¾Ï‚pÑ™·6åLÁ×"[-Û‚r/J×dáÛv™jÕlA¯5OfÚ5í%ôœ׈BM±¯â;Óì?ƒì%H¶0Ö1¬‘o$Fð™fYÊ0É싼¿x–¸´pîÅá^ åZåôŽÔ±:—¿6ÇZ)˜P˜ã ÅÊClú¡êœñÃ^<ãæ7ë5[°Jç¶~¹™(zÐ)?x˜k0×S3~í­ä0ôƒå^8ÕßÚC`ä-ç»»"ÄdÃô–ÎôäœA’j»Rñ³7óV盇Ôi9'yL?Ƚp#ÏIè™ 9³àތÉ1 k¨×< `8Ç>Èoò +j×·ÍË”4Mp†À`;ØÕqG(٠Üp Í f£;M윣29Q’`a Ø“–ՄŰÓÀª@Crð¬ÅGì™÷åg£@YC<س½Ñ›i‡éqN¤>ñÀLü- ïßk!l38û°àÞ¦u¥7@Ãë›Ñ‚{&ñ¤ÔdàY!ßk¶µ°a…˜¦Ì®0Ž-Û´Þ8DæIÚâbL1ªgrAYÛœ×>³í¶£P¯°òQToM‹ÎSß´30åZÏPüPÛŸ¦å‰œ;£Û¦ul³´g^cõÞi{ ¬±Ž}Ö éÔ:#(Úšc.ùŲo4ê¹i/ÊÙo\‹‘uWnŽ×¹fqìÃÌ`¸×tû Î>#XjOŠ„(ÅU€ð…á˜IÆâõ &îȲ~w¬YYºW:Ùºvdºhd6Åó08‡Ðóε§!_n¡Œb ˆÛ^QRg+E+,ŠæÈ9R½ÜÛlpOÒÚ¾M·fl6L™ d]i0œ;ªfpc§‹Tt¯Tm]Kvü &E»UÖ6¬4ÓïZ!÷¸Ö5›6§òY6ÝÀ¥€Û2îÆ¨¦†|˹Sì5ÎÜ)YîÍ9ø ¦ÐÓø0€æ^eÛÍÓ6î¡ñ¨‘¶³»‹UóÞ@ëËçllC³oc ÅÃ6ÐÏ|£±nɆm ¼ó 0t\jdi¹´x´lP¼jNAúã!·qÕl˜C"‡Ú, èœ9¤8·àÚÒrgFÓv,à{­vÌáÆåÉ!3 f“ì³dL=æµäÏ>ÆqŽiÈ8°FS÷6„ËÜcŽÒN[­Iû2ÀB¶Â#†~Õ\àbYÛgùŽ˜fj½c”`a¡Æ2rï”Èf{ šM6fL'·f 5 9q€ÅcÁ½G êœK$òáþ]£¯}çÜwÏÆß¥üð܃{plËÈrMYÔ¿;ô¹æˆÙÍÓã”3®|Å2ÇÄÚÊ“½'“×G¢07,ìš=[`„ã0çdL !!“'÷ó8ÌÎHdÃCæ’f`ga“¼³ ÌÌ0à 4‰2x¦g‚¡Í·Ï–Ì?ݪɤÃß² 9¦£jÎãJ™ãÆÍº}‡Ì ŸÊƒÕšçôŒ8qœ²ð6.Òz£lËóŸ$}Á˵ÁL™·mP†„3¸fŲ&rδdô40ðlïR,œS~~vcvun¤ñ^ˆùI ÑvÖJ¯róÈð…ƒCq5E%ìGç|fzÙ\[‚b@Ž#ðwN¡öÚq¨a2ãi¹CÇ*µí6‡ñ¿|“yà3Žqã«dñ­b«¯` ±qrD »*S†,¬½G×gÅTÚ’-Žcòñœ9hH}Cžt¬Ý•çì?sϺãH8VÉð%²peé'4ÀñÎÜv¯XÚ8†0®}Î3 {åTðœ1©i´£õ^m¾ëžbcÏGv9GÆb, …DÉ•òmÍé‰ÎþöÝÜûÍgƒj3½¹fX3;B‘8Ó|ö“Ÿ!ÝÝÅÃ5œëĵÁºnA™±Èû!渖Ä~cƒt/"aÜèµðÜy÷³׎-Áµ_)èÂq¬Å4¬3³³°Ã2`Ùž”¹w§ÀvÖ“©HHi?É“úÜ  ùŠ˜kœ331‰8“C×=3¹?#´zp=#·kže³-[–ìÄ“8&›jÁ–$ñn¤®pÆÀ›dÛ+4¦zYH-’~çxežKç4Çd{-‘”hŽüŽh¥“Ô–Á“' ï®øÌ‡ù6×…5F˜w|açHvùe*Ρµ3M,Zš °\+D3ã‰q-´’dSßš9‹fÆÖÿMyŠ'IFcžƒ:;sÅ%«ÃìkëüšÆ‘PþÆLœÑ7ôh^ÜÈ;ù¢kÓ2g(ä_=×€Õû ñȲ¨ÁtŒÑNkïŠy9Ø5–ü_œ“y!Ûù‡wálÝílÿGhî¦06-{XÄ<1Ý[rå‘nb L|–‹hlyàk=¶H³ŸÁTm§hžØkË#F¹† dp-Áʶ3Þ}r%è™ë7“fÓY¦–ÃÕýFê…˜mOØÅ3N!À¶¶–ù­Až¹Æ†çØ—:Á›&àBÞ˜­WØ*=#˜-Ùšn¡ç^9ò›×„a²1nŸ«Ñ¹ÖúÆ2®Œ¥™¢àþL«ÏÏÕ·&ŽýFeŠ).TŒrÍùHÙ§û|!òÀÎ_°âšeR±±hf1D“Ó9'"oÓÊ6ìoM¹›=2ÆñŽ<,Æè.¥Øßƒ(I2j“÷`]CH(ˆxL£¼âØÆyp,áYèI¶h‚õ§ÒåÃèü Ú“ ƒÃ:7²fT¡éœ[·¿l¦PÝ2ðͲ|Æõǽ“P(³o6ΦëaÍ;aöÎÿgÎÒSÖÊwl‹S>]:—Rx-'¦w6O†\žŒ/Ž`D?›’¶VJYúB)²7ÂtÑm±ºóÊ"Ë[Æy%U´°æ)ªa½˜W× ± DÇóºT8PJ´;ŒÛˆtg÷Myº›Ù¢-_ØÆÄt拇Æ![Â场2ÄèU{s)³Œì 7ë­ëHg|£^üLå³;³>{ÇìÎ$Ó;ˆUrúË×9£¥<#ZØ– áT+¸œ0~Öé…“@ðL˜~–ݽz6£’|7®WRÒt ûÞ¸Ævá³R~Ç5³ß”5$[¤slñå™ÇfÞ™4ÒI§0š ð?› PNs«wå… >C晲Eá·F”Ï_y”snÝö˜L«å°ÕÝò1¥»CzYÐÕ h„­‰ã~mLpÁ2eAòÛ®kŒK…<& ‘3¥5Žs¬™.i±mmŒæ‰ûž±ú’¯p|2®VžÈhùÈ{Å„i Õ£« }¬ë± úÞñ©2Œk÷+ó†Ì4-È☃Bhœÿ_œ {eÉ‚ÕZŠ_ {QdÊ3á¸Ö-Êš²m‚D BÉß<ç†Zˆ±½2 p)¤S&Ö ·‚äšc.=óŠÏ»Í?ßÞñŠ&ˆ.é„ù‡ÞM>™[<PÝ‘d‹p5Œ£Æ-D;hh£² 52]ï&òo ¹C!Gp¤$Æ2Æôdù.Ã)Ä(nMÕÈåŸdÕâsã;–ô˜éM¼úL©ÃšF™pã_¾ÿG:ÿñ˜ ƒÁÀ·.Œ‡$÷nÇŸ´Å8°ù >“µ,Ý©|Ø«µ|ÂgVù¬œÜ V`}ævùæ  .A ‰!ªýç‚;'Ñ6óPaÚƒÙšØflÜS&ñæIÝÑϹâ7&Öµî]ÝŠ0ǘY7®¬³pCQü†‰C’\‰g³CÎ.Õ¯YÄ/–xCŠj ëe‰vŒÔ'Ì“VnÙö9P™ûÑ}Ê1bb\)S%‚¦ÚßX{O¢k͉.tQ+4¥)ä¤áš# Tö‘s,ŒÁÅnE­Óœ‚˜ÏŠû=vœÀcšÓn=2œ{¦Xô )p*#,OÚÙ@Y„:d"¾yç9G†`8ú·åÓbC >³ê”‡´&9C éÜ{¯"ß!óØfÒòÜÁrº7·ègïQ›|wj蟖oìÑ=göl¯ ä¿kb~öÎÑÞƒn­!öã}#Úyîe–sL¾Ú†a9ÖÊÆ²î¡Ô?ãj#—vN9óÜ€*¯ŠîC`ví6OÝsmɺWTÐÒf{ÒüòÙÜëÚI賞û¦uo†hÊ c¼8&ªÃ;ðN™Î?Ý»ù«|V«òŸCÆ=cɹ>#KoAƒ6âðJK:3Çæe˜MýŽ‘oÌDËÉ'sº$vnÕ²tÏpܼZC9t.ZO²ö¦Æ;ʸæÌÎŒúÇò;1'y£TZ<«&wø#°7fMC Þ7/Ê[1üã¦o)Š9&Á¹‘eÀ÷ˆføáÌóWtÃ=)D[@`7B˜ú$¦Äv Ê"¦ÁgÑ‘xå±í–i€þM¥øŠÈtÄ8—jé ŒîÄ´4 Î=»:7 ôçaÞ …pÌp÷ߤž:Öø}§5Ô–!ÿ±°`¼ŠO>fJ©O}–Y¤½’ˆÓ„Êœ²< ´`Ξقh-Å”ÕdÚóO|âÈcKY‚j'è]ÙèüÍ¡×>ë ôMá$úåð¨›sÉ"MÛÌ&u½:×û¶Nòî,žËg |fM±¹u„3çÑ2¯ÿŒ›×‹L{ÐöÉ7$&xÑ»Áá“~ROá! í j#Ï'\aˆ‰’§ {Řu¡x(o¸èŠQ›&ØqÚ‚bÌ4ï Ë”Îo­ÙVæÄ¥9’s$ýÞ¿™é¶£$Ežée:cUdJñ"É2NA¢„«}FÄ>!Ù›!郬|×Éu¬"=§¾)f>–¨4ÂÀuN±˜"¦tϰäžkk57ø•ž!ųž †7³LæJLƒ®v‡Û&6gÄÉëÛ²FÁàœãž&5íI&|!ޫϼQ8ýƒªlϬ^9˜4ÍN0ùÌ †væ„$ïe™É›CXr8=)ƒzк:"EyI7¸D¶ÇDÁ½¦úûφøÍÑ‹v Þ›ò 3EŒ;e ÅŸé‹bŸ¸‡ÌF°Ÿ<:¦˜g¦ð¤snR `%ôÕ>†y§"ý/TÛ;˜ƕüá¨qÌÎ;ó‹m]ìœúïÉ y31IÏωÚ9'À<Žg}‡¼vey¯aµu„‰Ã4$‹(D³MÁ†aÎðf˜/îõ^ùú8¡Ê { ÚÌafæžX)¿íôØaóAÔÑ\ûºv'N÷¦iù KMõ÷ÕU¾>“0êÖÌ<‹xñ 3Œíóßµ òڋγ=ÀÂUÙ35k5Íf rÅ»Œûg?ÑIÊ•NÁ¸dNÛ„šæplÆ0¯2íshÌòÍ “ üËWBLàX„ã›§ñ¾0Àý‚á’ÃQ +Ý ú醅mµ“&.ào™Š÷f}Fa“ „So=£õ¥óŒ|b˜(ª—vD¥„ˆ R ªH“¥=ÞžAFhîÄñIÎMœwê-縘aN£Ö8œ=Sæ'XNäèã¶ÔÍ6æm,ŒmçŠÎQϨaÚɺ»¾´ßÔP…É Ì8³JhÜéç´=Aÿ +pÁØ0§:A— |Bìz‡3ŽäØ47'T²zƼaòÑÃ?—’S±|GœTO1àº3BWš*j{t +à5 »Î!Î9ðK‹ó¿sé´V²î™Ð3e\ȶ†ÍÃ1~h_X2ÎàóÅ.µ¬þ§vf¹ÛŸX²|òíöK±F à»6bu —³fYnaI/DrC”³8XÞ)Ý¡‚ÉõL!9ǼqžoÏêbËBt.8s­ÃÇŸìϹ#ù—ó$àËWgäeöŸQøŒ v;ô=³Û"Kñƒ?ƒw'HsfÒmsš5Cô3¾çÜ“‰a5Í@o߉âÏ®êÌSÌ9Î>³tD±¬›‰{! ˜>G¨h a5âvÌq Ã0Á»rÅăÆ)§ÆéÍ(ZÍ1õö¸gNËg!2-Ì’BÆSšûîÃÍ5漓-$Ë–d ;V?ƒÇ>@÷\óÕ&q4[Þɨ5gœÚMIjìs Ú(L—èmiÇQ‡vhgÎYÎ5åy£S¢s[iyyÆã^Qœ.FÙ”uf טJ;v%¾0tY#4T›ójN„á—çNq^iß;æÐd‰åŸyÂ#œ©éNAÂ5,» 5E„Ñ”£’g©¦{—1!3ÂùíáÁÇ&QÏ¢2þÀ(íMï™Ã Ç&)ûÌ!fqŽ)ª5ƒrç‡í;6d}†í¯èéÌq®9¯f;Ó°3‡Ì;&Y°…¤à™f`bœøË;sž}ä9“>Zp΃Œ9 sï0„³'Éa7ÍôM“¼m'ß>GDÙ÷æcY={Õaùa¶x7"Ø3ªp ¬m½¦ôÍ1ý%2GŠCl#,rOf|gð*ÃPOHäY;7ŠØØ³‹¶>AnõžÓæÍ‘ †0…­öˆ ,ÍñÞóßJiw5çÖ^ãÓ™1¦øt%ãYÀ2N9Ó>6lÒ¤g )Ùƒ aÁ|ÊÀnC¹ÒêB`˜“ßf^QΆ!æµw8Ö6hŸE„È4'|ðÚÎ'Œ;No½ËøŒfu¬4Ö¦É7¦„‡´Ê0í5±gžQ²°wŽ u0N<ó“Ó(c ` Sç=òzÈŸ!³'IÇ^ø¹d Í1ø6èý†fŽ å6C˜²ŠÈ £Ÿ(o¾ßIWHØßí€Õ†!³›çü?R`°?sbdˆ‚¾y~eXñœ—ÚWhìß‘î8Ò7OvæÜc¶˜‡vg1í‹èºV“çy´9çTÁ›—8eOÄ GÔ.iª4FæÚ\[Cg«óŠÑuz’Ë“u®âÎã݉v泎p#vݹFÕ“½0”Ü;M™ò NþÞ–ŽUœy–vol}swn¢/õÞ-÷å•îhN˜ÜãTUŸT·%Ìv ˆöZ“Õ4ÇæÏ vçP•>“kJ®™ö¬ØO`ú iø4ñá˜CbÙÝŸ°Íñ†hOÚÞJQôS=p.]Û2ì›J|æ¶Àj¬8MŽÀúãC²|D‹åìÑdÔ¸–œÐ]ãnhƬÏŽtÜÎhŠažé© Aql³gb[€ôÛHÅ?™ʹsç?³>Ø ãhg±±&™ëI0§P–£Ç?Ǧ{å8æxqŠÐy†lýÜ`>Ê2NE˜R,¼óÝwLÙß/Î\θ³Ns¼ç'.ÑÜùnÇqª0\S¦/‡½;Ïw–Áj¤³Z/'Üê“\Þ¸ƒ¼-pá‹ñßÙß²^µ^õ¨h‹—×8÷6}ö›ùœ(W½‰÷ —,ñMO]ãYX¦…7dngZö VŦ0y¦èN@êŒPõŒÓnãâ½Cî38#@å¬ïÔq,Î!‡ˆ/•êÙ™ÚñŸæV}Ö“zÿÓìëYÇ0ó$5à 0ñ­xc›ƒ©5“bè æ[PÆ &õܰpÍQâLSûߡĸ7š7“Ë?•q­6Õ²m›³ûŒ™ÞÏݱŒSïYv 會ªG¶7 KµÇJñÇT|.ØÇÏ(Ä»—eaÞ:BE䑌ÙìMÙk&šùá”fUlŽé¨Ü¼ùÁ3zãŽUZmÁ´4¦… õäY=+œ~P±ïâü­I°«¿/1€ÞÞ±›(í9²´§ƒÓ!Ùðø¦‰ó iÐÃrhŽì¦²%!ÖÒtÙš7É"öE›Ž4o]»7¸kšˆ\¾‘•vtW„a×ó©•sotùdc*Ë0Ç åš—\ÞAt#™ Ó•¯¾á¼$ A¡>v =)§;—Ñ8o»¿©4t aÅ1Ƽ¢–çTžúà˜öYšc<‚ψ+¦6nY®œBöz†0÷Žáž{К¸ÊaH2U§>ˆñO9³žÑ¡jæäÑšiäËS(Îð%N“a3f ßchÄ™Ø © _N¡$3‡Ÿ³€å–ò%Õ9æ´Ô™†ôtËÁ‰m.•îŒãÿüe4>É¡'L¡þŸ3Ï6áþœÑ*îÀ¼!¹7¥­Ögrîßu»:vtjÌ34懾tORì™! c(Óx›™aì\»Ë´ÍÝ\cõ÷Làž õ\»•j¬l˜Ã1¬‹hgŒ‚4 ؼ¶psï¶cÚæíÜ3Y²m33l8súSd\86“ø øªøl5탙z‡Vè›÷áœKæ¶À_0ù¬“d3¶ÏxñmÉ‚}2á®)ÚÚ?1¬r„X¥3DïlŸØÎÕ`™í_,òÙ›Ç àœ³9zÐó{Hù-ë蛹˜m àžq9ÃÛäã*] ñ;|¢>Ñmi ¸° ‰Za7£Ì9Öl»fË¡í¶VA>“~~fPŠjÅDª¿™Î1æ•>RÎaͺväx†`fŸ-öZgqì1Xuä“B'Åð«»ÀÛ‘E’n dâ\À˜ÃÉ<7k Çµ•ÜŸÌéW} !ÀÊàm™¦ºÍrÞm Ëç2øpiQ$ «‡>’èN4Æ%¡šr¥ù#.í¦ú[—a–'p4ó´Lúç+øáw¥4Ôµ'˜lE’Ǩáà½7—„/ÒV +Ź—xqÎdÎËzÔ}Piʆ|ÌšCÅ>Ãà*nI·´‚aµ·—Rt`Ú’ÇúVlõ[i¢yg ^\I¬%ËI.-EÒçÀòHOŠYÝqÃ0¢;sbXŽk„" ‘̗ǰöÅ£öN“bíÈaÛþ;Cð4†››nŸmª>ÑÇ4ÇÂ:äY~=ž{ï!ÿYÀ‚zMŒ3'ÚQŽpBY‡‘xbÄ[֙О™ç5ž(øŽð³ñáÊž•hoÈq/"á={¿Šyvsî@õˆlœ[ 2îIÓ–h[›b«(¤¬šX5¶ã€È™ƒ_^A©(£&ÛˆgÚ1ÇÙ Q6F(ÜÓ QÜùu7eœð‰‡c_œ’}"ÄÝ w´yE4ºÃÚ"¬ÅšãzÇ8ðê1&Øä³à+eÌÚ²HxL£4JºC Ûaé bÊñ #jmZ‘k~Ãû.ß𜠃¼2åØÿÆÕ½ØP_ù<¦þÏ ÈËFmÁ•‡j^àá @åÊÛ^k¥!‚rŒ¾Çvyä¦Mš3®W9Ò4…a•hO¢iHâðRÊ¡¾3g¦yohæ:gÃ*-‚0‡|I´3ía«Ñ1DéØ)M×8çbßJ¹h.ç<‹"1eÒ|áÌYì7úc‡š>(ëÈøž¡œl¤S<}£ f•¸™7šÅ³RèËñ$ʲ¬IGyŒ#8SHFP§-¸ÝºR`óHó¬Èµsrr%˜þϸåf0>Zå ó°7ijq?Ø•@ye4ëÇ*^ž±G£à"È%L¥ΰªŸ C>b¸¿I€dJKc,¥œ¨á‹³\æN¨Ç”ЧÂqï˜zÆ„àNîýääÃÉðäÛ Nm­–—Ã/d³âÍ ı.bÂІpš)Acn¯í‰I¼“É,LüñÛ¡(XO4Ô8#ÄcßÜ¡µ7"\ ,C™SbÇ5ú SâzìCu'¥8Æ=ãû3…Ëšâl™g¯Dˆ)Gì—£¤KXÕÜ'¥aË´ó<}&2ÌH:³¶|.ˆúÙºhÊaø™“ø5¤±>2­Q¦Ž Ÿ!.3ÃÞjM„êŸñ–*M´»’tÓ‘$ a›Åtl¡­+o0é3dô¥¸†àI›#„n A¦zŒ’²šG”‡ú/Ž˜R–Ñž9ÿÇŒ_ÍÙú#ra^Á`0%œ©ž¹ª?2¶Î2¯6F`„^Í!ò¿SR,æÜÛ†”‡ë'ì›÷»vq¶6ÖkÊñƒ8£Ï-|Ž{¬\€ÔÙÒ@‹=ÊpΙé˜P“–ÓÓ*§îP]Qe?#z×ÝI&oˆçÉ/Ƅǻ×5†çáE>“JaKy­ ÑùƒÈ1±Ù<óð!‹í8}'¤eÌiT-ìº\ÆH-Ç Ÿ…¼Ï8WÒ+“DÉ™s& Õ˜7ë ÆÌhß)D;0ÙÓ‚2f¨Ù”#Ç%Ìd+‡§·Ñ4µšbU•="¶ZŸA»¿ë㛂-'`5­hýÝÉê8òa” _aŠle‚ò!\n.QÿŒq/dnF´z'ìÂY'Í30ȰÅHÞ¼¼uN‘Ê*†´3„™€-έ2’£äž¹Ðô'J„ý€6ƒ4ÝÜé»:%Üí1ål’|f°.x÷‰’£™:rO¾AôžΜùtñl?lßÚ ëÜ“º´8¢ƒç#‰Ã¨VÎ90SNA…$Êñ©:Çÿ;¢I£=øiÉC¦H˜bÜíHG]í#f“°È±o×0K£Îó$PXcß=>Èö™'ºÔÝITw%Ô˜~sÈ.%ð—i'ò‰a™`6GN¹ö ûŸ©äœ²Âa·´rMév3ÍdÝ–'tù%œÿŽA~eÝèT¤·beÐ47 Ñ i—w‡ ª[ý…Ô–.…Tg]Ó?cÜh2âÃDÏŸeÉ’.PÅmÕÕš2p“~³RžYÆ(¹˜:Æ ×`·sxQ‹SiaÞ`Ø ñO}§8M:Gó1ÄÜUÎ:i\ñ(†,úŠñ‹n ˆ>qκ×6^š)·%‘^ ú8…™ß²@ü ÁÆ+]Ä5Ì] 6œæˆ$so=sš`ޱ”=2‚A?Óˆcž£J|V\uîyËV΄{E2fôÞÞž!× ƒŒ9â\¯ÒÈÌ @ñ™†QòÃ(aÊS˜d ùå"<ÿIÔ*¬#ÐcY úV¦½#ÍbLy~8D`ðÏ‚à^)}eÉ‚|z.©»—ü'…ô£¿!ãº3Õ!Ýk²(ÄK–4Ímðˉ˜.ÄKK`6ªxåùÎ83`xìñ‹À;Æ\ˆ{Ï,‰jxzF„„ÛÈ¢õžyÿÏlôpyí)ðYí’,Ñn3滼“®d Ú>f,ÜšSË,  ·³œ…IܘÓÇ4÷Jyü¾“Lq Tp±e@´0KÞhö徕˕S!ôŒÌãK ѽþÚLŽ0苳®r/¤U5-£õÍp~Åx³âøÏ½óßq§ÃrúÌÛ¶2fØ„iŠÈ2tÖ:ãlB.%µµç’0¦ÈÝ!ãØŹÎ×¼ë‡3°d!¼¸G,c âì½›×á%›ãlhü ÑÏ`‚ûÄ1‘w-\Žmy}SbçVØÊaÉwïØíØÂÜ^ C¸r‰°p…Œ´—“¤[ Õ9eŒÆ•³Žl ùjo„é6VÍñ`g¯Ø0îé?„=wºEŒ©ivìéa=Ãx^IJ‚š7Û*ùíÜ¥´ˆ[ ¹Y>Óò ‹>à/liN|†¬ßꂇÙ.ܸÌ0Ã&aäøß¡î£ü^LÓŸeøÉVþýL{sj¦¨Ð›ÒþM¾CµcœyÎ=æ Ò 4r°Ó€jß\ÿÎØ´Ñ³?áOrX»v{Ït›8¹—jOÒVX¦ ÃºòœC;¦®cöxŽÐ‘~Ò'zËŸsJodÁºxÇôKžmtˉ›s&ˆPPD>v‘â½#†}®üÀž£\>ˆ®MàH9B`¬ìYCU°i•‰8T8Æw“|ö˜ï.]¦Ðæ ö†½‡ô²vv˜ÌÌ<¨ëH!“Uå æ½Íûdã}î_øÜÌX5\Sæ¸ð†“Æ»ë™éà•öÖ8g ×Ü(M9Ÿ´ƒˆMºö´ÏÞæš+‡I9§Á$ÌÂ)tÉÛBg`ü ™ÞÍ¡˜q/ÐÎÂŒìAœjØVa…a‚‘ ˆT!†“ü™’d.ØFáÁ²T×… †~&OPÀÌÃQ¦É“L¡bÐÙ´2vfb ˜%¤™2˜›3%D…$Ø0CC 0¨Ì0>;X€Sñµ ‘†5$…ˆ* $"UaQDȰ(T¬²€TfA@,˜ À„U ØQQ'!D-˜~f@Q)0©M  LB¡3ˆ!› Ø´±Á5•²5Ž%ì›6–ÖGÌuÌÛÚ Á“#ÝIå¢|ÛžÀ|fxÌš¦Äîß=Ç—× .e‰uÏØþet±¿Mb—¶IÅ5·™¢òvÈ“j[‡ºÿNÔ}ÖÖ÷ßP‚ľ*ȉÄy3d-Ôê{ö²lýŒ«$Rߥ‡?†×ÙÕ4þpïšÇ:W çŽ˜Ó°M!Ç?ñÅÀ&k@.a‰fA¹…µ€ÝÚÃau æ™Vˆ×ض-°2A,q¢†$ ùg8³ë‹ÂcŸ4™ ÈYÌ9E9g8ÕÊ{gäS‹Iè”FºÈ ‚S@èÿ˜ ¬“)¬·šî=€Ž?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð¿€#1RÀ6Ñ¥K¶©„ªM¥?hÚž©“ÓÔÔØ§å=Iå<¡äÔlÔžšƒMCQš&ÄM3Õ£PÓj='¨ôÐG£I½SÒi½P =@ôi£"zŸªzž¡¦žM'è¦ô¦šmFf…=RSõOj›Õ7©©êzaT¥ô&É@Ñú§¤Pz€€Úž£Ò¨hÐ4Ðb &šé šhz€Äh 44 ÓCAê44=C(&L˜#€Àh` „ÄÀ&a¤À™10“ÀLI€`&Q$#M'¦¦1O)‘“M(™¤ÄÓ'¤ÍLD‘2zŒM4mLž¦FM!µ˜žHЉ‘¦Œ¦ƒ&š=Úš!2Õ= äŠ5Î]¸2‹%€JP®çŽÌ*kY.é²t‡TQ (¡††¸½\*EêP(¬®©Á-*A§$¿eÛ“˜VVQYY‚ÂfØL&3Šá–Vëeaeel·VqIPÒ$T’4ŒfX©’‚X-ê¬Î% 1%(EˆˆlЉ‡‹¯×ùu‡Sô¨ˆˆÅH ñ¤‚ªJaD""\RÂR’ÒQ!)ŒØ¢"#*’„J%GÇB%Eˆ…ºˆÌ%Q$¥*QC<ŠÎŸG@¢ËR¢ålQœŠ¨„\)"Ý]ôÒ®„u«Õnµ]l¹5Ý— FUYSL¹vËå3ì³x7••uef…EQ""õ! tÂé"‰B(’RþÉ©*’”’‘*3éUBù¤‹Â""R‡e0ØÊ¤¢%(”³\‘88j«qµÕM,Õc±:E½4w%Ò$”¥$¦ˆ#Í›„”(‰%D¥|¿uN­ä<—Ó¼¥Ò#Ñ’-’T%D¥BŠ’T$¡)%$¨QDm1Ô]¥Í9fêèšö±Ã6 é´l… i´½DòrÕ!”¹N1Db¢Hh¤&S(8©E$ˆ™ôT¢D¦òHÍJÜ¢%$¤”«""<9v’Œ™FÒDidpkf#¯f«¾öß©|—/r¹Ö•â;†Ñz·GCÆsÕ—K¦•Ù¼fÃo •§nÛ®›´š+»IYcJ\rRk{NͲJé7r‰BŠ#·õ[jŸ’åqk-— ÇsDkµzëÇ~²ÊYvšno§þû•êõÃ:‡«oo–Û¼…†+4»rN­³l»Ü»!Ùà²Ì³ŸvÜ[è‚ÃWývßqãeÿ­Öeæ7Ы§à/s•š•LÏÒÚXfZ••—>ñv[[“ÜÜâ].sÅr c¡eõN•Œ uÏaÿ5µ-V¢_Qña¯“²˜±4“t­H,9Ž“as÷°ß‘¨þ]+Ù*x*/LDÀ!V"‡Kuí³äâû„î©°ÿo±0W1£à+{“+Lí“æÃž7:H§¥}þNóV:â t# ¢«‹­¢¨{œ"_ò—›ñ|Œx‚N–fòãì~Ýÿ©Þ­!þ'|æ.е._GD6 ^>CTßÿFÛÆà:áÐg«:Íùiày›»¾íw׿õ÷ŒëÄó¦y5Æ©ÝüFã½ÕWgwµ­¶ÇwœšÍþŸ÷³¾ºX Ì¿¦ÉtZ·š‡}3𜙼¹Öë |ÂE¦œå˜!IM¸3ÅNlÉÄ¥ˆÈ/Yìqd–˜ÓëN,4\é(ø¤™§ž®\uÌbªKݱËj(#Uþ£‘éÞlN/ (úŒ5 Mƒ<ÌnI¼$_Ž{½"·]§d']K×̸¶¾jÚGⲄXÁYŒ/º@iKñ!˜™ÔÖ»…A»K¨çˆr§ðûgc ³¿^)’4éë­ÌhÈv½³LÍTRнâᇑóÅYðbÆ[³ÖÚ/çëD¨kê}ɲ³“êÇõûbSe؉"7ÿ±A°·¥bVH¢<@‡ÍÖc[ÇXxs5Ž´ËÄ ùF‘,ÏÉÜÎ*ê`{ªe¥j×C[ªzÈa—•‰CñÓx&"" ~a0G'õDõröÿÇ£ÄLÆ[‰*£b`âœÄ»Ì;4R¨Úˆ4DSf-£ü™Ð<†|¢¢TT)8DL5Ù¶=˜˜ ì­"ü#ƒù ”ƒ‹DÂÊŽ»Ú Š9Ùsg^‚aé¡(Íy~ã†ZJ;nÙœ0–ÉÃf[›2çJظ;f!•JòV”\¡xÐyßuÂoºÆ•›f v®_‹=§Â[å“Éòs/¤¹7§½mmÎãÇj»ï¹ç!â£:¼g‹N!+¶n¦‡šÅa-ÑÎK ¹ádñÍ×u •§øÙeÖqŸfX~„h—,³FÇ[°˜k wVå<=ŽOïí—ÎÕ¶I‚ºf4{W!©ds9¾ËqÙìnÝ5ó6nÍ3 èWmC<ÞR°{¥ÓúKsØXníwup¼^¨ŽU•N­äc4‡zér‹v3&Ã(p "\Bõº«1Ë…e¥ûQÀûV#¦Ð¶£™hë¼-—[¸œÁ˜äaIzW)1K󧀓¨Ý³ð´,í~bK‡2×.ÅYÛ†MN€ÜåŠ@ô|ÛROù †.Ë!Ô Há½´Ô©Ä´+d"íÁ·çà_-Ý‹Ña6žŸp®mæ²í“ÊožSÒuÛ ]ƒš>KuúˆcúV¾ó¥7 _:ŸŽ_Ƥ)©ßS  ˆ€‚$¹£Ä'¨f\^ñFuÛsýbH™â“*B 8ê„þõ’æùÖBj5,[ÆZ’ºhy×cüëè s¶àªy›m M8óäÓDË4.z<¨W¸Sx9ópLwÔìã9ÝHUðã<‰R5K›¥V«ÅÙDunÿ<òåt/Љyñ‚ X÷ä9‰Ä%»9ƒpwâ‚g§ÿŠ–ç´D˜€†³N÷ d@CF£{/[É÷z¶{T a®Zë…«}uáÏ«ÝF +nÒÐ>ÁD¹ÃáHöµTù#ùW®ï ™$HÕ^Gò¯‹u+RJ£{(¤çocßËöQ'Aš?/“à,F‹·E}ËÄ“,©àªËÝd¿+2ÓLþ3’68J[cg]îÊ üpÜÇË‘b‚CÌÕ‰T’qod:IÁo¿téö³ô‚»òuêT®XŽ›´<ˆHÑ´ù}=º9úÑ’2Fji««x×3Ï÷þ÷p Ƀý¡÷*}è‘XÞmw DßKdé²›¿$9”ª›{#4AÚdæ¿:Cx™mйõkÆ¢rµÞöR{:êbÄ¢à$<™9§¦ø!€dÈE3Xr`·ÚØà§ƒHå(ƒ&Á ÊÞlgz”žC¸ˆÞÎwÛqz@ :¶2Õ×}?Ãe-25‰\º·c™r²8—Q †ƒ´ÉŽçlw¯ÂÈ›S£ÍÚ¼uyÈ»#uGž®.6XU8àÈd-,>obßvÀÔá袭ïÙ˜¢ª¾oö Cv ša¶ÿ`.°J -4fâjEøAQ ÃJ˜ÊN|Jç¿Ú›‰B iÈ­ Ê›ì¾TZ~Ö-ÚÔÊÝ™Œ}r.IF‘1‹ôñ`Ìdœyà…Œý%¥$6ô΀‘›w(~²UµÍ£]@¹šK„@ÚCu:jÙ¸EMùôD/ l¤ä²£œ¯©ï[Õf˜ñ¯ž÷rE8P'aî±zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/PaxHeaders.151519/unclea0000644000000000000000000000007413607166133031707 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.625751695 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/unclean_export.dat.bz20000644016037001603700000003352113607166133034732 0ustar00hutter2hutter200000000000000BZh91AY&SY°Æ[ì`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà8P¢  *TTФU! J(©P%*(D€ …J)¥" ¥%šTÓXÁIPMJH¢” „‘ ¤Š)R©J@¥0ŠªSÔÔÈ4‡¨44h€õ hi¦ž¦˜ž¦šzžÑ4ÐÔÓÊ=OإꩣOPÈziU˜&`L0& €˜"” “@ ‚hL4`i¦S©úz#2›4#FÈÉ©á'’mO&š§“i¥?"l#M4ÓU<ÔýG¦E2§š(üšM¦¦iPE$@š&M2i¦“Úji„SÞ“&SO¦šM<š§ê›ÔÍ FM4ÔÚM¢™èÔxASh›I”ôÓÔé“&ÊŸ¡£ScBhÓÉ !´&™MÓ&á‡<ùBù­È(‡”z†ö>ˆëÙ@04ÝÃzý±ìMÆÓ>vrÏHŸXݼËtœ@Ȇ٦ÉÊJ'*4ß5”é[ †3 óJ~w«a¡m€(IKæVQØ9ÆøùG¸Pº7.7Ã+·(Lø]°à¡­—«j‡¦v,êE”- >y.ÙÜ ë8À„§ HÎ ;‚í?A(|W›tAMɉnÐ0ñ̌쿰x§Åh-3Ó¬1ΖÀqï,ÙnÜa²Ì[—õ ‡~WÁ°ùIY¡ë˜`{²e‹/Äj!)7Ñi‡”ùL‰¢;AîX[÷™_žLðox{Lä3!üÈJ†7¡£ É.Ú‡ûÇzÃ#Æ:³zÖ~`Îû 6ûYôZïÔ¦q„ÂP;‡&Êræ# |“ ßšGZv¯P妄øèPДN‘<DÚª`X¥GNÃ6…#^bÇ€r¥Bá‚Ìt,†¸p›×&g혔¨®p˸B¨ÒzfÜ|‚qœC¿dY4™Ý‘ŸdfÑ躗$ômŠy·\%ñ¤g1Çp?`ú¬Æ1¿7C)x÷îuwŠë G~5ÆQÐ#]½ ZLÞ ãôgªëYÓÞ/§z!‡~ضo‚7ç›h:Á¯Ž;q´tQ^q¤2209ä'g©lô'Žú ëHQ½¨ñÚQùψgÄìËH!é_!ôN%Ë&rÞ¾Ô­Ë™WÚ+œhÐDh ‡bǰ Ü;˜i&MÇÐP#þ™A®÷ pa‡š`C^åp¡²U.vp ›M$>aóIJaà²6×Íá1×:öaßg, Ø–ÍÈ…"a•Y¬Œ5ÙÇ8ª&"BŒ!è^±¦XI$@È€‚Có0‡Zú$„ã! pcÕi•!Ç –F‡:@NÌ×-Çè¾+ :ÁÝ;qá¡iöc]øÎLäG’LRÝ7Eʆ*]·¯Î+aÍ4ÕÓ4šC´<[hyòwò5]XÃP@Ü$KfšÆîÐc@pÌÁç?t÷YМɗG’äâlÁ!A~›v¨hÓLÎ %¯<Ì'†G0ãžeú†m¬Oe€O…-5 ò\&ìùÅí®g ËÃÒ³;gü¤Ÿ-Î;g”&yæ&ô¡Àæì béºt£–{Rì|f›ñƬ0y­såG¥Ý°Þ `;¾d6(@ØŸ@ƒðŒ6˜.Á‚¶D+°¡#4@È0-QÒ¶îÌ>Á|çÕyfPmVò ¡ TsÏçroŒùã3zÎÌÍduC¥’Z1 1¬rø“ü_ªÉ]¾ÂØqðjºô¤b“Ÿ`Èé¬ä£¥ ´äB ‰Òƒª~9½N™û­Ã‚4‡ýŸ®í^aîη[¶Ð: ÆìMíãn9ÇÙÖÔzn$p¡å¹7—j•¦¢&Q„¸yÆ™ áΜ!2WߣP±)ž)l_¸çÎQ»&•üN½„>Wzý0èx> À5‡ˆz@dB£”a„O}†1 ®ÌjVcçŒGŠÞ÷/JQµ®|TΫ‰‡HÚ D½8§…˜Á‰ƒÊk©Ì0fXkÜâ^è‚R˜øeÏ¡ÖÎg“¡dà™ßo2;:9w.g!˜î[”5 H€úm!×” ÏHòfñ¯4<[Õ;¶šÖ¤yçb?Ì8d?k‡‡¦Ö/AÀäéYÕ®ÀÌÝ=E&cpš× Œƒ0Û°8\Ǻ÷å·£ HxPîAùÃódz2ƒ¬9äßæÀôƒ+#Þ´Þy™ fvÃòDlðÞ94Æg8÷ߘç(7æ¡Ü²”*Ýil!r|] Ì Í¹# Ø.ÚÚ삌Ø0:WÁ0î`mŽa±èj©í á!½;¢<úRqóšnìǻƃê8M°•– yÚ:±ÂD”†í¸-Ï€ø¥ÓYÑŒ€˜%ã•s¹Ë9àk½¹hnš,š£÷d0úì ‡+M’fÕnåÁ£wOû8¶|ƒôî@?Å®d÷ãe°3·H\´‚í(ДËqÌ£óˆg k¿s.L†éŒ6 ™™ÁÍŽÄ~{(ÖŸyä gjЭVèpÞÁÓ²J~ÚÃ÷_U‘`fo§\ÀêÝ[@ÝŽÈßññFéòFáå[£ú¯ 寻Œ<ãÒ.x%§ô5_üMå&ÃC¾v¤¬îaãM˜õãaºdi<ÓÀ^ô,7‡Û»2Ã̶Ÿ°4ÈŽ#C‘oæŸêÊñc©‚×5 Œ­Ñ¶SÅyJŽ4™Ôá›Nüø£‘Á»P9A¨UzRaçPðœË¢xñ“¼r,Ÿé&N4æ2<0ø«±l[VŲ!¨Ù«&i¼ƒ‰fÓ&¼ûÌ€·)‚²J­1 C×mÕ•¡®Ò%2¦˜LInK'Ä5ÓnZÌ î»|ì‹#A¤aÌ04›CÏžkݹ†äñü]AñßàÈ6έ´ÀÌùvÏ®{éi;F—òr.TufQKIêFùÈU=†PK åÎàœÜ¶Œ†¸o Éä²kyWØ)“d ý¹*´Æ´¤X B¶:%£Ÿ$lØzìîÙPÊ0[0N¤êÇZ7cË44˜y¡Ãàò®±å^ّغÁ´S7&°çŽ òœ`²ÈÈ0;ûÚwhJÊÌÈäÙ_lƒ(Þ?<K³¦™‡RnÎŤeG6ÛÛõÉǬŒëì¿7‡¨ÎýG,Þ¼ë ùeL›p8¥D>es\ëÙ›¦è†ÉIÄ7§žf aUúÍ! EÃòºcRî G”SÈavm4¿yƒ© ››{sDq#IÑ©ëݫ˖YÇ«}æíº*´G4×û¬Œéeäœq°&aõÏQɹ>¹Œã¸çÌÃ#ç9fí¼FwμúƒU•®­aê ŸÞÞ\ÐäÛᇢwCÈÆá˜d“¿ 7¥”{Ó¤ãoîù?a£Æ:7òÖÝö‚y†é¸n¤øfñàÚNüÊð]í\¸pÞ¶mœVf“ß8g(xèrË"[› ’r ‰i¾sc›Nõí[ WxwÌ4CƘ)Û˜öQ3 –Bé×µ-ö/ÏN‡BU|pCéÈùxò/sÿfwH7*Ý9Va°Yfso†[5ÜQûÎäȳñ¯pø ±ˆZF£Ì=‰ö¸ò…k¹!­m™5ù÷Tî˜trìœc߀ñb6ž °bŽmÃ:ÞÉ•»tó‰ÞݰS1mþüi\xfÈLà&´íNœ ·qãt4Ì›£&pÇŒmÏP)7Fw'Ð/­Èóm¨ñ-ˉuc&©ã¸ÌMà‰G¶uM2¼Ä Ù Ø`p §j3ŽEõš.œõ†¹Ç<ˆo/zÐÃ0õå˜;R“&ß㺠W¸Ë8á7î±ÓTÌäGpÈߎÏ¿M‘Í»Çí•ÜÑdwcþC®v &7ϰve¦‡:a£ÿÀ|Ö骆­‘áfaÎ0åÞ\eñ®×NpFÈÛéÊmÅGH…l‹|>HÓLνïËßA°Ü7Ò6L5ŠcN…¸þvþÓ/ƒMѤꛜzKë^­7m2w±\„ÃPm>?¬;Öø¶FÐCMªsMW`Cvÿcå4Úã]®'ùAÛ³¸ö;cÛe6W˜ucº.§&}"F Û'ð`Ï1„(1Ô—’̦6­àxBSÒ;‚Qññå»(ß¹t9¦PÐçq]ëU”sî}Ï€ÃÛŸøhrè5˜j<ôî‘úĉ»sÜoÆFt,°á•Ñ•Ë Î<7ÚÐ&:f^Yòæ»\ sôÞ€yQ™×™ÇvCrØ™ë ?è‚ùí}þãzøæØümÊ^óȹ†ì¹,«Ú´›§¾âà+h×;ÔëNñ¸k?Þúl‡ˆXÔ½éŠ\£QÿƒÝ•´9'úš¶guNÐùŽºÃ` ÙÔde<ûŽeÎ!;l;ê?4ϰ}Æw±;ÓjvvðÍ2D>à¼[]êÚvÌ<)ó æSnb_Î;°6f+LIC Å*¸/äúèŸÖønù½iÊqb²b4Ýyãó#«-Ý€îŒÌ‡Õ6f½Úám§)”ð¨S-ŸÄgZ¥©ï"Qu´wãŸyÈr£±I Ù ƒ8è^Aë˜1ªÖ2a“QNvìÃ; Q õc;8ÜŒ(çÝ0ÃQ¤ 8Öi°ÊÖ7¥£Ã™CþƒpÕe™?Öaå8à”! ¹ÿR©aªü·’yÚj[š³.Œ®÷¬!U…K†=Q„¶pØ$`LGFàŒ¡¨02/\eÝ (©—K°°W†p˜@a†f’Àíš.@Ö”xb f´IÈ+KÑ¢yCƒ-˳ˆ)4Ž” Ü)8Õ0¯ØCÕaÑ÷L7ïÙcÍ»WóÓóá¡Çš³ƒunèÙ˜÷K×,¼™éT~+`uãhoL3é ^Lcê'0xD…È7ܬJÐR9s¦0œÃÌ c û…ºfƹÿq¨èx'fi †þRFN¢óÇ_†êïÄyã¬;Öªm‡†+Úñ.<ªéµ…Ñ0çô»¤U¹XV™°æœfï`á< ýaÞTö_–=£³/Û`rM¦Óët-S‚7T÷_%€aM’ªz«‘Òhñ§ Xƒ1I‘Ô˜öðæ¤jœ‘CKÂ/ÉQι3•üc캄Ö4ÙDáÈ/‰Ýù‡HÊœÑ~™2†”œ®Öxu/nà_Œ÷œ±ï)˜£dÙ=k1¦¤8†bq¢é_Œ²lx’ô¤PÞ•Q¬NS~ dÙG\À&è`]ÑXÑšÂ\ í‚RðÈ ­bé0fK‚9ç†'wç°ªâœ*qbrË1}]:d`D‚öŒ8Q=ÓD Ç|$(Ö¡Gä 4aÅ ¶C¯ aÚ‰‚ ‡à Š0õ"h‘ b0í„у#¬ 0óByÈæƒ‰FpO( d‡T'ëFäH>š0ù‚uÀÈð„ƒ6Œ;A7Èß ZŒ<è™d1 鑇L'z ŽìH6èøv Èe‘‡*&¡Õƒ1’ J0å„Ú#B$äaå„Þ#Õ 0åÄý Èåă<Œ:a3 ÈèDƒFŒ#уò "0óBg‘¨ ª0þ;ðd}Á ×£N¸ Ú£ÀO(PtÃ߉ø‘ÿÂA­FM 2>Ø4aÓ‰ý‘׉• ž€2<;¦D ¶I0žÀ:bbýIíÓn²5`k„“»NÕdnÀëē觌²;À;!$üéÛ,ŽÄüI>b~e‘çæ‰'n›‘ûü¢IïSßYØè’}„߬€è’{ÄþK#‚Œ$žá<‘ù€Ü 'ÖNÿË1 ²»6.À×¹ó<ç›bÙ¶mKVÕ´-F̳lÛ"ɲlKŰ,¼¯kÚâ¹®kJÖµ¬+Ƭ«jÚ¢©ªjJ†¡§)Úv˜¦išR•ÃxÆH¦iJV•׊F‘£(Ú6ˆ¢hš…¡h Ÿ'Ùöxžg™Òug Æq›&Ù¢iΙ×8g’eÍ™·2f\Á˜f ‡.eܱ–r¦UÇžk„jÛrñ¿>—B^º¢C€~/àÐŽÄpC¨.Rý¥ó©5Ž û7f­¾1òýÁ=×ß=‡,¾òq¤?¬LÃ+azJCꉚe`Í/¾’þñ3Œ¬ÅøRRÜ&y•ƒ<¿Í%!÷¹f`¹_ò“ïâÙ˜8µà$Ä?˜–f Jü )¸&••ƒJ¿Õ%!÷Ó²°i×àIH€š–V Jþ䔇þDÕ²°j×ßIH}Ñ5Œ¬ÅÞ¤Ä;á1ìÌõùbü ÌÁ]úLC½`ÊÁ°_ì’ÿQ6L¬%÷ÒRì&Ñ•ƒh¿2LCó “f`ɯΓü¢e˜2‹ÁIˆx"eY˜2«Ác‚&ùÚ°Òï‡å8/jÂN@öŽÑœÉºÐijNd­£zË?Û±FI8e¹®ºáˆIô“pkÃ\;òȪ§ñ›û’)ÁÞZò«9ýìLëvo¦¾›cô–“d'vl‰Êüðw%ÔMáé8– Úä`™¢ÓdLr AìÇŸèߟìYL­'¢CzyÙùÝxïljŸ$ŲdÕxWnöLÃI‚ìxe¹Â»IxÞ ñ"ï†@…€Œå˜ ÜF@È9"C,d ‚2@ÀKû Œå΀Ç2 Syâ3ô¤fAèÌ›’#8¶\—%ÙQ!2D,$dOVFDÂFDÂFDÂFtL$dL&P…€Œ…Œ…Œ…Œ…Ä!pÈœ2'‰Ö‘8$N°‰À"fÏ Ç2».ߘù[¢å¹*_ÓµEæ>'á>ß=çJ{¯¸{nöŸdö\õŸTѾ¡¢tF}òMnu¦5’+‰SJÌmD›ñž3t÷FP°7CÊ1hášw‘Õ÷…Ñnc"Q”l:ûsBãÇþÛL‹.ƒ³7å.ôsÛ¡v¦É†t<#NQlÄûÄF‘é:òG¨~·{¾hZU*«À;÷jÃÒ½yu(F }3­ R ôÌ=Óæ3·ÍV¨>8ÿcÈ~³Ü– Ž9_…q…a†ý¦@¶müe‚gÒ˜ûãÎRVqóK£¡(ƒüÜFØ¦Ž˜ð[†³ô‡ìßqȾëù ±þ'Ae²&̃À=äÓ?Á-6Í–Âö@véÚ’$7ÐkNäñ_¸èœ$rŒÎÉÏ.±oŒÛÄ–æLaÞ`âÌKã¹€jƒlÖHÎ:Íë~yÖÍ»…é^ùÞÇ„l+– ’eÞôâd ‹ Ívw»o“6wrØ‘~øÛ•a•‘‚Bé=âC×0S‡n]¹|<@ðëN´-‘Ø™ ~Á¼¿l¦bôÍáÙ·çã|ñÙÖ5li2P$'Hïž]´y ƒç?ÍòÛ€6ŽDmˆtg;núùôO¦To’øÈðë™4·dddÎÿªû9ÔÃ%ξãÑ%wš1F Åâ‰R‰§dtÈRaд%—i+|­ IaÚ°A QfB›v¤ÍÓ2W%aœ®²­âq ÇíØ´›–«#¸[ÂêÛF<»Fª9f™–}Æì™°Ú†stÃé\?d4ÆÈô^¸fi3:ÖnÛ°zBÐNûnYªßŸìÃpÚ>Ó©g8áõw0ôîÜ`LËê¡ -Ûv GÎ9•·w%Ó2›§2Æl“–ŽiéÏþ—§Ðzoù‡HíœëÝú·îÍÉiaJëªHJŒî A½Lƒª&g:b‘H ]ü‚G6ö/Þ?$fueÁÆ7f\½Gõ¾ƒ‘Cù;§ M gxæÙ°š‡rô­–q\¸u¯íÞ8¦ØmÛphL5²º]Ñ<lEÎ¥wLTl—N©’âÃòß¡¨Ì÷Ÿ„”¹§s†Ý®%4ÆXn‰â|wNCÑŽ×Ó)•Ýéûß@gn \#hJn̘¯ßCV% Vv ±iù ±–5™Ó9†WRåšMÓtͧ¬)M¨ÂWj$®´½j é#¡4NÊ„Ï<Õ³5 7TÃvgò-»™wᇌBåÓN¹äÎ0ß<ÂS+¸N7eg¤k¥‘ãÜ©p-»°nâq@ëqZ@{Æì²wczÛ91ô 6Ã`é½Wjÿ©ÙûíûLÍ?|Âs.`Å+£0dÍ»“¢ti2Jg™ÍBjØn,‘ãXV›Í);x•’ ™$… ÿb„¼DÙƒÝ^O¨6­iú8–Ø ûÚ<ã‘t‡áhse§ê·$ÎÚ´Ê€¤m†€Î¸ׇöê0›–g{gRà7–ÝoøÏŠ3Ÿ·­n f˜—#UлÃxÞ‰ÌØÌã_û$×ÖÄþÎþÀKS6R8!©€Ø.^õ®ÖåÂ-€½>¥—Hü9F»Ä?ùçÇ)µÚëhnßÇòßæ#^?•¿pO¨îŸQ/BP»1™+£æÆ‡Žº™ó©½SHyÈ8EA5ÔŸüŒéÀüXò˜4†Õ7pÐмν4Àí\xó¨ÌuÄÉVsFHÙ9!ÖÁ3Uª¾®Ä¢ñ‡lcMIt4ø ôÉÖ‰^ûnLþ»Wà‡‚S¨øãÄØ½Ñ^ÎÀÐ-J@}aÓ5í'^xaM¦¾>“‘<–Î'õ߆y¡˜IÇípM»¦z1ÿ2¨ó ;#‡{‡û™Þt`y“|A 5ž÷4aßEàþo‡,?ÉÖ¾+Þ¼ ê8(Wk¯ÿwj×z‰óÜ>¨×•âó\Þ—c?DNÇÓ6çn~fÌ¢¾9ÙjÚ0wCI¤¿•ѹÌ“xCtúÁÓ8/Õ9Ö‡Í`{ƒë>‹I[q3F}öJï¸zN±®ÎT¨Êx#Ò†´¤räéƒò+ë8…p;wZÓDÃé4/ôæ8w¿>óÏ2 Mƒtn ¢RlO\h&¿JàŸï_Ž¡&¨ŸtÎ7‚mÛR€°ÝÜyîü{GŽpŽí½kµÓc ¾x ÁÖNAÕŒ#nÏälÍ)–~(ò¸’µ؆Ø+½yBíBI·ñMÖh(?+Ý4„a…/$"|ð¡@„‚Iö•þ, 0 D»ŒŠŒ'÷ÂøI.^¼ c´}qíµ,¬ý'l õªÔrMÔN½ÛºžÛ›w5¬o(Tâ1úYÏ€z±YIÅ!:üy—P:ƒýw`ÖÉ8cšIZå³ à|Û5]»>3Yœl¿eëÞøàÖ~ªzáž‘6î+T¸0Y?­“ß?áõ-A.Ó·,‚s–}ç“lõÓš)h“Ö¶r¤$ÅsXížØõFq ¤ÂNÜ=Á<#„Órnú‡L:ÃFôpå›q9>¢z‡üž@–Ffýä‡z>C1]ЉÛÔpHN¬)7oxá”Eªð­B« 3M¾hs´üZq'LoîY™•éž³÷g°pœ«MÃuÏúm ÓI¦ô®}ûï89ÙôÕªÕ2`eKÑÍ•›¦í°ÞÖL#Ðzs»t­°˜q•ÚÀëü7죕|ä2‡jîÛ£ZB}ýÑ„hó¯2^[¡QîFbfÍç‹bÉnÂsFŒs.YäÍ“l;Ã<øCº9!ö´-fȖΰÂ$ɺÖ5¤$›¨Ú¾(ÌþóÊpŒÍ&Ø„¤äwVM'ú»Ý)žã¸º³•Ì&Ý7ŸlOóœp' êž ¢Ž û&0úoâÍA­oE‹ÎG#ü A0&ØÙ&ч„7§çÝËá?ÃÀ¶oC^°C­7ŒÍÕ6-‹Œ(6¤39bG|Aᵃ†4˜L‰ºoßîi·Ž̾CîšàºsIñœš¥¸—gæhO&ÓSÓ!ìßQ%v¾ZTa ÞHOd×k¨»·n陦Taã!™ ôNþͼ !<Çôz§,8‡h?#›ÅxCTNuº5Æ/NÁ¢ÞY+ô›±ÊOƒyü ÛzWCTôŒŠ6˜Dª&½ðÙ7#õFGê;˜ÏGèa³7„'‘Æ8üwZëÙ÷F™Q„ÎÛ»FùùÉ¡,€®½ð‡Z¢j Ù˜74Ý{o¢Û»Ög•i¾o×nœÈÌ@UmHIÇä0@uŽ)òÎ>Ð~ãHLãïø¥q¨hp…1ü»:é&™Ð_4€n(ÇeWª”ttûðÕ˜†`Ãgí¨´ô‰V¨Ë1Yc¥ÈZ_®3+kª"³ÅÑì™ëÅÆ}ŠãLÈEÝ+;zÛX¬f ˆÌ±VÑì"ŒUkÅêˆÏ-c¢ÑšV‰2Õ2b<ñœm,ÃúÊæ3RÈ`5öËH¿QÞmèYlú¿ŠóZþƒÀ{0ëÛº8 Í,ü©Í¤²~µÐWš0ƒR¸u ßû[úÇæ ”r¤¥N™l%Ø'ì.ÂJli´¡VuY˜T°v×|àKñ Zñæt¥nדùæ`|Uù&!PgD:–|ÚèrK–çÝTVÄfW9#äß^J^ò°˜At²kÙþ0׈n^’CÄ@ m†½•Wëˆi¶ÇÒR½Bf¾_·n)/«² ”ËÔÎC(ªf”ôÒØéíÞ¶ãÀ?Ygpá&!‡÷®·ÀDL‘i³bˆˆ" ûŽ ¥ß×cËèù?ü]ÉáBB°hÈzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/PaxHeaders.151519/Makefi0000644000000000000000000000007413607166133031634 xustar000000000000000030 atime=1579730436.956381689 30 ctime=1579730479.632751921 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile.am0000644016037001603700000000027013607166133032545 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles dist_pkgdata_DATA = \ unclean_export.dat.bz2 \ cryptv0.dat.bz2 \ missing_ivset.dat.bz2 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/PaxHeaders.151519/missin0000644000000000000000000000007413607166133031742 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.630751857 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/missing_ivset.dat.bz20000644016037001603700000050623213607166133034573 0ustar00hutter2hutter200000000000000BZh91AY&SYÂ6«èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿá°üÏŸpJ"¹µ€ 0UŠl¤0 Ðhj[ KVÆ«6ÌM4m¦³I™¬õô»B•í€ 6Ûî˶š%¶«j¥*U Z m4Ê›6T3»€Ð2k Ú[Pš0C$„ ¤‚´2M”Ö˜mŒJhh…PQJRµ¬´Ñ•²-ÞóǶH³R,ÃCÛ9•dÑ·ßb»ß\Õéçx¶ˆ@¤“AHªÍ²Ô¨m‹Zì}Û¾¾¦²ûëH¡°5÷·KÉ‘Xˆ+ZVŠž»Œµ´S6=ìè}÷)ó»ã½MÌõ¹:àé»uy½*%àï_|Ýzø-¬ÂCmÖá´õ Švû»žJŸ`í²7eW}»¾»ïhªì÷<îzÏî¶;=•Þ›‡´$2‘ERÛf¢Šzèë6¾ãUGRG§l)έct4 ,7AÕ(î m-am)Sf½71çw|ŒO}€3ÝwA±Î{è¡Ãêëíé;T¾ã8 |›¶Ÿo—ž÷Øzûg{;﫞÷t4 %@$Óד†¾öóÐÂ;Œ>[羞ûß;Këî|×7lêܯ{ÖòÝ\»Nç¯yÝYW»;ï;Þ÷¯=î}>IëÕòVƒzVúcïn9®VÏkŽ÷®ÕsŸç»Û&Åuí»yηq»œ¢Aïwo;ß{vS¯¯okÑÝ\1®;ÉÜ·[½é·¼_xηÝÇŸn-÷wZí¨kuÁnžØú£ÝwwÞ㥷[»r¹Ç%·{Üñœ÷kƒÌÑv1ß('$‘»ù/Œö 8±†• ë¨ÝÁ>3f84¬U6Y…M1ŠÙ[?–äWIù.FÎ.-ØÓã88186dÇI‡7i²¸ªt“ÇyüM*T®™Ì§"ªºG"•ΜãäQN.FœM›= ÁbÆóvN¹+ƒf1ÖrºÊ-G;¤¦'eÅÊæ>óï%ÈåJuTx‰Á»¤Ñ;5ù=8®c)x0¦Í—7<¥1_÷;‡ wMÕ\àøG´y‡Í8¸œ˜œ¸æÎ(Úy1î‘îÑ¿”ùäÏfŽ›Øµ<õjÕ¸Èö7J–9û¤î”ª¬ë·#°àØë÷N.ËÃÝá¼"¾};m;-žÖÖêÂ¥ÑÁÁšc‡im…Å¸ÆÆãVXľ(—Ê$ªLªY/Zûù>ÂøZúírÍäÞIÖ2ly€(¢J*i*.M4¡ƒftM†]äËKõâX]%Ó0hlñgÊ"Ä`RÍÜ]­°‹õ›Ñ’¢ål£F[\,/—X{ƒâZ[\3­ÕKâËø)Qz.4ðIiiŒ¶b5‡ú–ØKk*0Ê#M˜>ÙFÊþ+ Ür86í8»ŽÛPs%§ç=rKåÒù(¢eÓ¬¾J}I†VWCëUÖ)8W*§CÀbOl4뛾¡Ô1ÀärÔœUU³Ø<뫆:^µôíßP¹K¥Â£>ÛÚñY¡7²¶!FÞÛÙ7"´…¦â§¡S½Sê”xž*¼—†ê9ÞsâïÔæSøm07n®ëN*UxÎA·kv2°åc‘¾'"£¿TÝS û¶`§ÂsºNN.ZéœÉ“‚£¦t”®b·t•Á^yÄÅRœ²¸•UèÔ›¥MÛ©»Mž2t›¹«\W¤{yän˜”¬r±Ñ¦¦¶6R¹ ØÝÎØhp¯q_~øNSªàÝÌÙ…R}땊­Ë8x =ªë¸¼&9”f™U”fÙ–Y“h –fØV€Í3mˆ“QB‰1+ŒBÂdñøÖqe—,3«k‹ L…v–Y¥EF€¬WAƒSÅYÐÙÒCN£ïÜZ)ôøJiJ§"º†øŒs6iZvx55[øÎw lr8¸°t•§4èx ŽÛw#ÊO¬ÊŽá–qåehRõâïy„‹¥¶‚¼*4_8Xgu²~«M£•á¸9fÄ7O(²¶ŒÛ듌;a¿×†·ËpWP¹E¦7k¶KD·¡[§BÃér8-+Ó,,Eᨭ5#mLÊV`˜UÊJÔ2$¾XXM†îÿPdMÕ¬™ \“$IJJí9^rT´µ I¹›Ë÷ºóz-(¢æIt]jcä I'r°T= ‰Ì©T4šc­Q³ƒ×nc‚¬£M0Ô°ÝI-UåNA9Q$Ó¤šm°S²ÂÂÇÛÉY"¸\ˆÚ‡À.vÊUkÉ);iÙ*QS¸SïI䱎5Ri ¡¥µ†¸ÀbÙÄ?jjÅûFa!Ê& ¾¥r2ô’]ÅŽt§6VàäÆ,3&(¬Å–®Tn3w’ôìJ¨õf6MÛ1[·6li²cÙ¦“e+¿OÃN’s¹Üþ“¢N¡S‚¹z4¼˜'†rr'À›²Þ)ø©“ðÏRÄœ‡ËŒg#–E)vs•š 4Ç5Þ·o2[%«bªI«æ5è«ý[271‹:iÝëVR2˜ªŠZÞ¹I­TÒÊ‹lŠ!U>y,hVÄ+e),²­ïÌR¯”÷OºlçJÞ¥*JY¾yÁ³i#ùו,4Zª–ʧ4Æ"UZ*βÈÅ.+ J²¨ªõR¬°ÅQf²åÀ”É%T¥6ðÿø‡ïp«gÛVZ³>¹^%ìR‘Öž‰¤jY]VLYŒgrH|ùbL}3 ±(p)aŒI1al–Ä…”U*ªÉE’r¡L{¦&U”à 0©aЧs ‰…{þüæ‰!þ,Q}¿í|þŠ]ÛŒIÉá'K„ßyÿ3ót{Ÿ˜ùŒ¯úѶ¬B`Âv¬VäÂó,Tò¬%ûòB8†@Á…W$À®m‰ÝX«’ģЉ’üÈ ÿyE"xÏåÊŠ£i‚†/”*ºÜ(J”Ýp×tþƒº?¥ªµ¦³‚ønµÿK༷Y9¶={½Nü¦¤UQayÁâ…ÛKCº”°¨ÄÁb,,ÈÊüÅRêÁ Â*Êd‰‘:JdÚbTØ*E€¹Ü$µ¸Å•U=dÉAÕb‚½~ ÒÅIc M,§ÈÁ+C±‚°ÌÃé#Ö´ÒB¤œTÉ"¢WC$ä§ÂQ¨°à’Yù [)ÁIänåjzùŠÁoZævT4¼ó+Ƚ#)Zí,–ñK"w BÉ(ªåÆD;¹{ O‹IØSºP¹næi>͇A¨|R½V°¥ŠœT`k³4…v9iN?$±]È •kÔ=»@…qWÉP¹L(þ„0¡ÞÜS$·¯ú²­ï~Y]Oî9fn+k*˜ÁwLûe„çfæÓŸ«šnœË^-­n5‰UÃijb¥™Ûpi=ÃÒ¾Ñù­Û;cêÂmC$Ú:ÎôÁÄnt×ĬEë;L­BçÌ)âß‹8,Û¦å‡øÊ?9çÙ’Ÿsê]g„ÜèÇyñ†*ÉE£0 qôGÓRI5¡¼][I|“ÿcåiàð¹vÅÃüŸ„Õ–í’t¯B£SšÐwý¼Y‰{ Gêd Äå£ÈðmÌ*‘ ©”تhÅ!Ê%Äâ©û}$dí8?¨lúÖ÷{<‡a†KT­5n’¬ª”¢Ê˜õ.4Ρa½KŽx¸Ÿ2‘\µ¤è•Ru+>NØÖh‰ê Žë?’¯.Â-ëå Uɺ—VÞ8M.ý¥—–3þu:Ï‹ÕÐ=£ÎdðÕÝÔóÎOg¼ó9™#¡^ÒÍXøíº³Ý¯ä||á¿ÃÇU¼«'»íLOtõxr=ÓPÞÖ"de¨/ f„Ã*ˆÐûyƒca¬2*öµ&%w». *š,J&Œ¡iaV› G+¥¾ ئ½epÞØ‹xÙ­³MéT–Tã¢Öإ٩MV¤“ÅË8Ò–$–”[¹*R[¨vÑo\ûVvUë¨÷Ê夾mðkÏì&|¥Èò:쑨 «öÙyy,šª©5•Z«ª_ºêJ“yþf´ìl?gÕ=ét§™§|ê1ë݇À¾œ§"É;¯ÃOB‰Ù9—í²,iôüZ;]ÞO»Xs=ʨØÊAƒ|!~óØ›FGS£Ä•`ð*ÈÐl“Ia×R%ÄtMiQÙS¿*?U‰Ô¬: ¢°V•5t¯Njj®–FeD¼”“lëv¸¬™ex‹»­¿:ßÙWÜè¨.ä#ÕcU<׊¤œÚR/[Ÿ!9Öš5”œð¿d …æE©U]±QÉ#Y*G ôù$|V8Ì%WtÁ'@±SnÂ]¼Ä©¹aäɉZN ­W—^âíµßœîús LÙ5FŸ!Œ2,µCúÙv²ã[î•TòPˤ¤ŽIó"žiƒ¹1JãX1`U^“ 'ÄDè˜!\¾$’çíÔü;:4ا$ÂQНó`ìl&•ê2¥z—;ÑÜú`±wsj+—Wš`Éÿó%2wfhÀâè£ ópèqU>)7nêÍÅEeCð”cFOOà2I;r‘>L• çs2Øtù.îÑ<­Y§žwç»ÎG€bÙ„m±JýE8¬S×app¯&Å'à¶2=³Ñ7\ä’K¡>’ZõÔ2 ìî Åã²3¨¹1›»ÖMü1xf+¿°ƒ[³šL ©aa‰Pçl)].w)S”ãר¥"»)T¢ýšñ?Z ֌¹2¼zÄ5Ž·.Kw+*zó kŸeÞØ“³°u³$üüU­‰ÃÁ9—ʆ;´:õ[ÖkZÓPÅ웿:}Ö¶_!ŠµØ•s¸w[³b-}NyöLŽWúYN]»™N’Ž4ä|ï¡DíÉ&ä9&'‡]? Ä]?5i‚Ãÿ|ªËQ1ðØ:F¦I†…‡ÉSS õjWޤO6;§ÌvШ0ÔôçÐÉ%’§€'²Éò—ð{æO W@,Êsà|˜¤à£žºÒFQOx,xŠ7TÎë#’HøÚ#ƒe˜ÉE;Õy5<*rñ1úJôtid“ãTx _lñŒºŒR߬MŠŸŽÖ *Ã`äf%y«*®~j MeÉÑ‘7Ì9÷£+íF-¦8Îûv÷ƒI¡ã˜åÁÊñL{³¼2¯2Ý{¸è# [šè¬—‡CÛ·ží¥¤Ã„Å/örlžGCé´Â§EqC’|´MÄ”M#ÖÅœ =yBí#H•H¾Ø-%ÊÄ׎a•T–õ&…\;¥Ð˘–tèØ®—`ŸÚ͸»·d;‘¸y¦¤ø,]C`żãÝ2‡árôÞÓƒ«uV§RÀÜb¿|ß ˜gOä!­ƒ¦Ål,%ÿ­Ì«žñVª»³ k‰Ú¸9ß,/hÂK  C}Qé0Ê›V!S¡¯öj¢íÅàÈÂHh19dŽÒqªþÊÇñO^ÁàÞÝýe{…G¥xl²D¤N-½ºcÒÄà6ö‚øR-(•Ø]o1×+,oH” à¤íØvcC[GÒ¢õFC?SáXîÖu¡{µ^€È{'¯dœÈ³ê}ù‘Õvøõ‘ÝVбÄÀäf6*ºÖ7+É;/Ú"¤ïiçVt•ʧòVŠá÷1ëXñ3nó[û 鵑\NàËzü6Jõ©cro Ɉ\6DïÅaø —R·’¹‘«–u4ƒóØNò£ë"ºrð§=rΩ«¥S¹œ¸ïý ÂI>õÞ,Ûº²X’Æ"½)ß°|…Ÿè§ÓúuÝ™“¯û¬öÊèWp¦Y‰^•~Fqt¬'dá2mñüUpXŽr–ÙVJò,yÒ1;+î™àß@î=šÉÚ #”Ã…‡ßï>n•»~ÛQ.Çñ›\cE\ïѠhÓYóñà°ïm¾²=ãÓ5×xLsC¸ÉýÕtå9«S~Ü\¦õx©7• µ"µ)G föÅö#×ȶũƒ¤¿SÔÙUr0ôasÊ¡¡2Í6·ùXjewrà²^U‡CEˬ”ü7m)˜Ð1z'ù•[¨qŒî•$ý冬r¬“ÿìœbÍâÏæ½kWZùÞ6ÉölMž·ÑÇU²U‘÷ž¦0y}¡Ü±–+­‡#Ú±æYV$õ>—u$é+ÕÓÒ1ùLÍÕ»ôgØëáÓÙpbHìÞÄ#IUÿÊLÑEûý.é08 s`/•7œÃD¯õÑŽÌ™#ûª“Û¬…°õâÇH,zQdïŸÞ1üý2‹·c÷ƒ]V];ÁÅqÌ·Ö(yìJ‚ÃþÝO­Ù ï¬GEQˆkÿ#$Ö’Q¼R#sk*(æÛ››»˜koy“{ÍøÝ›S`ÚRŠ•5·ÎdY—dŶ‡;:6’œ;È{¯ؽçœâSÈ<¥‡ ï”Q¡ýéÉ 8H:‘ AŠ…¼£Î2]C¤ëß´xk&DY&PÀ†²òŠZÙ,VS3¿£ U´ØZµ….0YŠ1-TÄXɯæxú‹p\³«¢­DÂ3Fßí¹f¢½3lÉ|[zz‘½Â¹#›¼÷¤K­mBI~¤År3Vßs‡­¤u¾»â¾ï ƒö[ÞÙx,?•ÙûMù‡hûXÏÏ´c*ͰDóøqW'›èQêm0™±j‰ék‰ý,#EáZ«'±?M‘ÜE ŠC8ñ‡5 »¡ìgÍHwÈ;^‡”êF;Ë4R©Å»û\é%D–hÉÑ :~¥V°k´T‰ãŽ{WÔoÓ¸ÜløŸàÎvwvyÉ8´ÄÝ:'¸¤xÇ¢y…ZÈì¬ÔÎ㢓:­yiRF–‚¬é±šZÊÑspÖÍaÑÚpÒTÄ!ƒc:¥züxÖà,ËåÕý"’Çõ§ë´ß…tÔ%›s±º1_2¨ž ³Ì­eŽK‰#ÜŠŽçëWa$à ;2¿ùq®ÄÎÜ׎yùÀµÛl×dÐÃ’†í !¡ ,%…[pu-s[œžcégºm&¯]eUÔë¹Ó¦uñÊé1d;ÐõGUQ»S…¦ÞTb7 •Å«ˆãêÃ@´CvÜÕµÙ d¦l%ËïÍd=Ø,bÄptNM\·ÈF9›ÏCNF¸«Pœ#‰,ŒìÚ@Ÿ¸'œMµ+’ †ç9õÓð;™Ý2í&- _Åá'Èùb*"¹êHdêjNSUÈbußÝËéY§1w‘†bU/©H¤o’Å…¼sÓµcƒÌò Ç¢­¦Cϱ¯‰;ƒiNT½,żÄ5æÑ´±6 ž‡>«‹d¬ ŒDhÚTÿ¿ù4Í£Ù™èoòfžM±fц†âŒ­êí…ǬÓÙQÏÐÑÈM-$– )HIʸx_–[2Û¥Vý]V÷ÚgY8¶úpÄ7FôÍ´i%ÍÄy,4Ó•µçsœÉÓ3®Óf1äÜæìQ–t ²ŒÃòF´à˜÷Ÿ7g€GÐÖqí8¢€£?Rg_g%¹>]A«6 î–žšÔs®|e1W4¹¦Ô.Fœ½™°ý±yûɪn_)‹æßÜ ôῌ‰¤7o¡ži.Óžj¸ö”š0;¹«IÅB+&Æ_Úœ.·!´³òüè"KGšòÝé ™&|yøÅɨ±ˆˆ€¡*d¨N§l±½)8GíVûÒIµËíÁ^›8‹ÁÎ|—ŒÉ逿ž%ÑUtDô5aKáÏXïˆSÊAê&q§/&UÐC‰}Í€gœìÜfê”REhyËÑÇ•#lwUQç^¾®Uâ*]ŒqGç›…¡Eå âøËl+¦NõK‘¢ëgQá ²6XXãlƒÖµUm¨b«·Ô¶hÓÁÂubŸRFÑDÛ'hõ÷÷|.ݾ8¥•±„vrL9dȤñl“’7ðàÊàÀæ´Ÿ)§)ðåÕq˜¶]ƒ Of=ñùPî\uKv¯»Zõ³9 Â|ëךÒÔ^…d‡”ž“GY@í) 1•òØÜ–ùazöîMÐó5uú£Š9}q ¦Íÿ2)[¨ýŸ¦dý-eª­+’Ñ}|”t—É騲t„¾sN 5öÞ©ÙY|¿¯~bã«ÁLï;ÖïŒú§akó˜{[ù}íÒ*wʼ‚<µFª´ŒqËv[—(ÎÎLêüµx¬Þ±Ø]NÅ ü‡WíÞOÙ ëD2•i¿éÍ/ÐdåmRäk·Öùg.ËÏ=Ï$Í[ˆšÃ“X¼³´)±td©úÍš¸gïiµíÄ`†,*³p–ÂüakY£xVËËä¹&(ÿåG­aŠÍ†*¾:0¦¬TÔÂ}[9*{6P]rXYÔn™«0ÃV o˜”ÊaßUwü’µá…¬Â –î0´)ŠÇ`Ÿ°£5*=ôVA=OIUkcÛ4ˆ|A”GaHOÄï`©U]õ#UõÉðäÒ{ƒrÄN‘‰fHïdSèI’ «‡A¼$’îqGü!S϶÷ia<™a°Q”K ˜„’•(fè}m°e#Gp®Z~ƒä™SŠ-í4;©)â ñ»°ê¢}Ó•µž]²Úd=u¥Oeçb&ô´Ñ~ ­¦F‘ɦ}”LS’1*"kZeÞx0çyGå º¤ê4·íåÛê6äu-½ÿäÈ¡q7¹pƒ6¼kü^¢èoü¬—é™”;¡0ïÀ榥4M.¥®Ø7‰ƒâ§dh\òT®WúÑóE¹)zžPìft6#. »°koë”ýí$x‘>©"©ãªÅESîMþáŠ\Ëaî<Í©‰51w³^®ƒZ£¥Å)dž}1ޓְiûLŒŠ§ƒ#Á=ƒÎ¿çdqÃ…Ç® \@oÜØ. Ñ£rð»…]ùñ¯ŽÁÛÒÙ¸7µ%¢²<Á¸dîf*ãÝC}ü&—‚N:çaû»k較;>W·&¶ˆ=³þ^EÝÖ—â3£ æ‘çÞ·R­Óå9%ï€l¹mݽ„µ”蛚̞ùÕ[r2{g\a¼bMæß˜þVQ¢´-ªîæÒXäÕ\¢šeà\Sç6ÅŸDqµZ³q&B8¾¼dç莾Wel® Þƒ‚à´Vh쟮L 0²½’%9(áèhø h:ÆîÈwžß"5s„àõgZÚ㕬#(\Øû‡\æe΂ÊZÅzë .¦6[)8úˆ¹k«Xq.ò·¶–ÕG>ÇJ³†i¢çõݬ6Í–ëS)ÍMÂÇs-´ê¨·å³m©Â›<7½vö݆1ýÜ»líŽN•¦pU²ÉÞÙ2UßU9ˆ­¬³ÓŽDÑEˆÃÛ1¨+)(š·Qn­³­´%¨žîÃ'Àuî”É ÉÜÜC8å Û8YXTФ’‘Ulj£Òb¯ÊMåÛ'šËHΓ¬›fÞ17 ˆæžu®F¢ÓÍyPgx{BúgƒÛêÚ‘ØUÛäêxÄ?BåÙƒ¶†Ý™†á/×eá)YeMIc³Y!î΂‹¤áÅyؽR !ˆwCuµ:6 ÛN}ÙwM€íÁƒ½\ÎV‰™¼-©&8†IÍVÞ`s/-¨¸˜Ž=ƒ‰iw#:xµ4ÙTx«9ÖfË^îIny&Á•t`îM6˜ólUpX•ðmÓiÄp´LQ¡h& 7ŒÑùMÎx‡†dùÎf&K`µ&į•=¯w^º©kî lV‹`xgÞýƒSŽ0ïŠnG©;‡2;‡¿ëH,ÞMø{n¾Ò'ç~Ë²Žš‹Oyª²ê¶3•Ñ)‚5¦5îÅN Ùº‰5M ßÔ˜+ÃnYkÈ“BQ’5å] Ų•¢1ÍxÍ’Þ£I‡aRð,¸®UªçI®Gƒ¡ÀèØ>“=ûOdÊ«Y)‰¤bGoÛ—šn'ÎÓTܳŽdÓx§"GñN…Â`î/ç¡ µ+Bà®ç~++pûÖbC}®ã(éÕëÈÕXñl[™Bº^±—rÛ‚,–ÝJƒ4¹,ììæ’é‹º´Ä ~1 “íVI±â˜GAÓ,•ɵΗuw¶]P< îÜ­F9¦7É-+ØCQF¥´Æ)E….A˜`œÛBÈW4ù³Ä8Gcv•æNFŠèÂÖ8ù]Ä!Φ–W5“rá¼Å)dà8‚âÑÅXì^Íõsò¦,Îܵko¨­•ýˆ¿míý-v™í{†óe1À#€7f ýs/ºÆüðùq3V•³“®Å*êç—dzÓKõDÜ]uêðÕÉZ¤ë‡@—£MwŒSs`¦]€‘R»œ£E6X“Fa#Úsj¤2ŠKé`†ŠnóßHsjÚ£›ÿ(zvîWëO„¯×ŸÅK£ Ÿê>ÃxªÞ7-yœy‘Ž’!œL:;%4Â>…tÚœk"ÓNN\¹¸#Áî.ØÙ ×9×%¥lmÖ£ -ÂÉjS£T{ quo+eÖrn9þŸ<ýnzÏíì›VÜ~Þüuks‚´lTì²£o4¢ÈÁKmézÂŒ"hip:É4UËQ’sú;(±4‹FUB²…Lƒ³6ðÖâÙK 0ŒF&!Ë5:ªðèò Rz÷“]S눔ª#iY$¡†*ªYlݦ *¢¼ÆL1[óÖ80ÈÝ!d$,po[+ÀÆ–´™1f8I4Ø­3i¥Ñ®«$õIÅ05œózÊ8 ‘bü$4T?Ð5ŒŒ[fL°ž›%vsž}yVO¬Ì›£Û2ƒÒsî…WÏÇ@ÖHöU‡µg;Âvñyûwݨ›I8“j&(÷J:ØÝGjM Í|E_09¤ž\œú®ºM–Çš éº«'JM “ãÖ函1 ¦› è«w2jiŠßNìݵÚ9¿‡uùºjÔµ`Ä™8ÌÏÇVsiÃ7¹ëâ™!²8EáfqFØÊ-†Dßô—÷þæ´æŒ—NM ÿ­ÅáuéßxôÆìi1Ób¯skâ³µqJæ1x\ºy‰Â‘ar^©Y$ÃËSXU9R¼°´tk¬{©ZŒ ãme Ú8Ð~ǹ®![ó0Ê Ô¡_„? Å®#A“!É-Í ØÙ¡£ê²IôÕCÊšr$%àè-¦UX,49jãis‘wÅve[ªjRÔ­×6ËS¦Aœ‡([VÞŽxÎ5Za†5:…“1­?ÜÕ6ªÜÖá™5tÔ]ƒ¯}Cס¯X¦í´íåS{Kf“*~À·Qoš*l;Ë$ÛK¹+e¬oG¾w«ÚÕñß Ãr ÷ì[¦Ùm–u]/©b.Oy-eÇ]ÃeJÚ|Ö†OýPæß|ѵ_Ï[œØ2[,™±'é­±Yg.Å®F¥êôÝŽ¡Ë÷¾‘²Éã; ©UV®©²c%5×¶MŽAú!ù³O±Ôü?ËÊ›¤Ÿ 72GC‹¥Í±Å*H‰\ò¸idNÊúêbð8 ³ÕGà8»Ù$mýsN(v÷RTl­»f¤LrÉ®ó²d鬜bqjDÍjê%œ`|Ó™Ã`Üî#\¨^˜ì#Õm)É®D ë^1‡aÎs›nBòÎYƸóu5¤á&ug'ùpù·v؇ÎNV'±;y«9íU*Ï‘žl‡ð$Mºo]Uí¦¹ï¾™œ—«Œ®Û£;-ŽÞ“‰ÅÅÙïXôÍlqnÖýQqLâ·èz mab_).¤)i{«hK*º…é74ÐÓѱ÷î÷=T’vÌäGb£îŸãvß­ózkÄuXåÚ¼fºÎ´ÉãÊý•q›1úõ›mŽùÒaüûè&çIÎÍçr]ZöÒxÉÅÁfíšã7y3èxr««9±9†1bóräUwµ‡!´©V*É?R¶Y=ŒÚ¦AßP}#È™9¬qXªu•Ȳs_ZwéÃ`ç±ÀÄØÇV\ÊeºÆÙWx]mr÷{?_i­´G‡+vÛl)”ƒ¦E]Úpò¨{c ì"ªMŠ‹ddX˜BÉ$í¬’ýç‘3©6'=É»ª|˜â&ÝYÍ õŽMçùÀ“Ç4ˆÒ~]HÅÙµ\!r«×+ÖKèç0Þ‰É'ì*1ŠqÌ÷¨®-zެ÷mÃM1M5Šp‡æÙ+®µHÅ¢ÄÑÜ[Üá–$š3y*ȳë¸Ô,JƒF…$ѫˠÚÞý¼ÉYö/ÃcŠr#‹?,âÝöIiø«¨°«!!^,’cÖ½þO如ÔÜ_Lsïø¼`Ž™7ù›t·J3K¡.¥Ë¡Ó:ÉZ™+õ,k)àay¼Â0ÖÅG[/Ëð²Ð¸¶Êµ— ׌—}v÷Rý†Ùja€Xùö{Ë4º6Æ.[tÁW0žMÛœ›Sšql˜%•K¹Qe‰k“.ïÕ£–In.*TG¬ÿå=Šâ<+Ù&èÖÜ&ü,Ú­Ò›f•.íe+ÔD<ˆÔ8»,qŠ›Ù󱌟£‡»^¨Q„xG Þ×± It¸¸ÒÔý´¾°!w`Øéµ,ýý§ý³ß·ë¸IÓ)ÁÓ&1¡Î'r –4Et”iʼn²§%GpYóOæ´Ö˜hÈÕÈ{%z¼[Â)¤ÇRµ$bßÂ`WÕ=Þ.@×'t­»gtJidµYZsx›¦kr¬ÚÈ©jNãÞ0j?ÒÃÓÅÏÀ{ Lý½Èÿ9ÚÕà¢m‰°ë2´ïê´°²0‘–DÅ’vø3Ý »§bNç 8°ÿÆ}TÆÎ˜=¼×;±ÉÁ£ÊI“æV>ZAí˜Ú4‚˜§"é8}uh­"aý机d.Ÿ$É«rS+áò§bCÛOžmè½¾¬ùôÄ7 À6ÞJåÃÍ´.’h²½%vxŠgF¼SVâü}½ÈMú_/>ácYõv2ßJв+5×^mËý<„¶¹¢aä?º¬Á5Ä–/Ùq‡°n5ÍL¸…ö£ÓRµslU6Ì ¬6‹‘¥•Þ(hìðòô³£*§¹¡¼¢Üyʹ݇“l..­Û] ÄÄÓ‘±†ûNâK¥³¿Œ9dkSœzq3Íž~ÿ¤œMðã«ÐìI¼j¥¨ÅŒc;²Í #èwÔBÕ›a¥bÎÒ⟉"N‰$êÜ’ppp‡"ÚÅÅË–x&¦5XªÛ-]1q¥ÃÀ¬›mä1µWMÞ[*©VÙN™N ÓÐd¹²±§â3²Í­oБ¾ÒKÝõu'Ðéþ{×Þ¿üìò‡ÄgpÓDœ_ïÚoW“i ü}›jC*µ¦-òÕ¦˜ªÙ«»L>‰6do¹WNGA Ô<9’u Ì.¦Wr&&HZÙšô |¼””ÀQP·$-ª˜î .ì¾¶ ;Õy‡Vb9¹±âÖªqyšÙ’NºÆçÔº r"Èm=;÷rBŸ°úoÑY¼&Ññ?I‡ß,Ì®€žÇª“Û6“»¼ÓvG±?ðÔê¡[8>÷Èm$M uvÇK’&è­¾86+œ«òD˜›6ì0Éäå?:Rñn¡¦N¶dãºã&XhW]¡¤Œºõê6˜ËýÅšðã7^U¥VÓ1e‹ŸßkEº¡pϺS.Ï”’OÃcú:x±eÀaz,RÜø9]Ce£Š`nØq¸\FMGÜröËHå#~õ®Gxäjâ6¶¸VØ_ô,6šZghdwjeAŒ™&o£ÄÙ’Á*r¼ùô~,ïµ1Š%HÒ©(ò‹ '¾•‡Ì'+Nwmæ'Çp‰XV«ÊC¯‘[5)È îÚHJ' « Èÿ4hÏçI‘ѱ|nõZ$:óÅ39¯.†Bqòé*\°<K*oJâé•u(ïÒ4HäÔ<;Šò5/K¬•¾jQj£ ‚Ù‹wŒj­H›ÇeNuàhx:;õ ªµ©³L¨ÚZÅ.¼½+j†–ˆšÇn6?§ë\R¬§#Š%a$ê±;Œ•kOA<üx’CÑž¦%–ÇD”ï£ã+I“ ,,Ta†g^Ø¢¥b‹ e}Œé}[] {êþCnË—µÛÅ6¥¼VT#˜Ö­Â”àïïY—Q÷üŒC:dÑ–~¹´ƒÜÕ8Å¡»go縘›BlTë¼ÿÜ<æóÞ9‘úô»57T[ˆ¸Jùnû½kö•ÆcÊ´vì ®žúÌ᜵ç6TY½.æ—GN–›ÑK×+«¨ä$ýv—ØGY;'ŸÝZ#Ð2o"±Srd‡q^Z[ªNª§~ ]K­NÜÂ5ÝÒ]Rß«©Ñ8ÍÊ£úM Žn*¹¦NpZ%…®â–fx®¶ó=|¦’îI­‘ˆÝgƒ]óöY<ªœþ;5}}ïåCC%vÛoÑ„µÙ–é1GÝ䃫ªvê2seº¾¡þ¢M¥R¤ŸJ#BdS<^’rŽ_½Nìöû§%›&4§(ªÍfÃF¸wÊ&ÅW‘ÅõFNM`pnðœkYgªŽ.ù â£Gã#¯3£A:Ö¿b`å”ÔÔçÚwØÁ‹=âÖ¿ÅU4ãVyâÈdœ­œ\êÛ~ 8ÙíÑ.½Fïž;#úO½•X&C*b¤“ê8myWd–î jVذ¢ÔÔ˜zVøZKŽÃ‡V5èßïøpʶÀýçC³ÿ7À[Ûg3¼|HÏ~£Ï;ß4¢1ôlr¹Õ´ÑöÇi‰5± ®–ÐóxµÙ™Ý$Òlô’‡ £ˆbvþPœŽöjDÙDÂ_üvÏÅA§0í×1“RŸŽs÷Ÿ™F©5†IÂÈ“™UªÖø¬-OÂÊqiÓ‘•ÈóL(†áڢʹʖúVkAÛA¥idlCLTÙAÌöVí¡í s­å¥¹¬4+/ÓbGž‹=Ìd9ß!$ÜIÊ‚‚ÃHfÊ• Ñ™ üIjg­£/LÒuI¢%©RÚɯáVQ`²©â{[k$Å-% ‘„7õžwT©ȰdºF*ÐÃÆ¿ðÉŸ?G…sÌãüÖmóQÔ½ÕgQÔ[xnê´Òçñv´;ÅýF´Ÿ›Mz–R¼1‡¬¼5¦ UX”|$”«Ác%SGn˜*Ρ…VÛPÑJÉẕ̌3¦$kU=C:zÛ»“P´E¯Š21#YTp‘&¶™’M"¤Q81µ#EÅ’W¥’ôì6m“íŸ.bv8Äœ^Ïf˜+)YÇéʼn.u­»n¦3àYC”T‘Þ^uË‘úvqg"žv>JïôK góï²Ô“W˜b{ =”¼–n±#ýÖÔ±hì,za®ßŸþ.¾ãgcÙæ·óÜ›ðáÉ÷ûðæä{®Nã‡Vûã{êFu–>,È}ÂË*dÙaZÚº]O¾ÂZ­IeaDz£Œk ¹´•%’'-!‘G«Æ4¯\©«~îLžYà²l1NÇ+̳zÔÜ­iÓ1HþÊÃk+Úâx²¼”Tu"·¥BÏÓ ƒg³Dàt«Jø žÜ¿ò¬O;dÙç™;÷+'|úg«jxT÷ŸCÐÄÓÖ=ÌÀñbz–Nª½z÷DX±|Šè4&>ÑðÇ»«"Y#ð8aÁÝä:¯£fÉX>Õ¨Ýé/Üøù/ËÇa\ѹ=ψM¢7!ž‹_¸dÇLÒÙV‹’šgÜNÏtÔî¹²OãdÉy"N†2ì=½&ù+#‰÷ÎÂw»FG%;¹gž”öuo]%õªCIà²b½¢Ã"ÂOi*NÚŦ¬©0WOÞÙ^TÓ7xÎg' v…L›YöOO'Hò}3ζ|ÝK#•2ª'†÷²wGxá$bVÆýÛ"<:ÛÍåûVÑ>Áyo˜–7þxkÍjpË:àf}Û9¾ðì']³µóZ•Ñø˜Ä~£×:„mDUsOZó¬#I<þµ$ï,}ºÉ˜íS˜-úì/ÿb´»FN¶X¯àúÚK%m¼#»zµ’õ™,qg ÔÀ©4#È©ÇlÙ;èðY=uGìÔÙg$–s,íØê'¶s~ŸgÌTqÎanÓ<5’œ‚qÖ;ý³í®DÛ»Š˜©JzX’§ÐXôgù¿!Ë6úŸ…‘̸£‹c™âF»+j´XÀ.!Õ¬g ;tI<<§F2Ïç3¥Å‰­s¦?b½9^Tš¢Ýâ0Ÿ›\’ÏsÜñs<ð£h}Rñ?gyÜœ-9S–û/³´É0GçþzLÛêëÛÒ»eÔÑÐmÓpÓfÿ¼£ŽÛÐÐöoKjð¾l„±åúDï–-‰-ÄÄÃί؇raŠW­œ’x'͵máH™wpiú ²Ù ¨^+Nº.˜÷D±#%I;Ç#­$k—ø'à­žæuç:ºx™%31R§æª±i‘Zd5VÈ™'wÂx1Ï$ê!ÀòrVE"zwÅÉy%âŠRaU‡'ÛL¤FQ¼t«Ö ¦°²¶F%«8äÝ´%ü.$UP£—RHÊ2¦lÃÜ´YC*£Ä¡¦L ¥¢©篑R>m^X'š½ªêפ)èKÍîJ&§+q•ÃÇ?ÙÖ(ʇêâ  ›j8ŽÂÌ?ÊW™b'ÎPöfŠÁ\Ž Ê&ÇB|n;ƒáŒ$ÈQôÒœcLM1ðÁ“š5‡' c3%AÊ)ÌY™;Ĥ33çn-9Ö²í¤´VŠTÃÍm[÷='†Ñ{$£iRU3kËœí™RLcˆÏä™ Rí%›IF«©µàøû®'ÑÉB U(ôI8Ç©ŠÓ"b«è‘öj–»š„í¡FHI8UY ÷I$§X'y.EIB¤¸¢Ý¦Td;s}A»dÍU7ÄĤªQ$†€Ü— òniÛ§žškRQ¬¸glÂjyú^i*w*‡X›¤ØŸPT›°ªÝì•¢¸4ÒnX•*JRÅx½eh¢…k »×PÉ-° 3x~I­1Í®¶“ÒZsDZÌs¶vÌKö4ç>ÅÌCWTÓXG­“•UEìs C(•²ªb1ºcB«ä+f‘XðÚi[¥J|WtÜñ‰^å[1ŠÄâÅUSÙ¦˜Ç¥V Û0Æ1+L1†”Æ4ÓLUcªª®îkiQņꪪªšJªiGÍÅs¶ÒªbV*°Å˜ÄĨ¦1‹*§"±X¬cÅUUcJ˜¬c¤ÂTbs¶N(n%”¿`Ÿµ®G†ì‹iÓ®—b]‚jmÌ´ZvLŠ2-…tL–ÓžªL™paW.í*‹)~ÒO%^ÒR©4&Âb¿è‰©ÒDY¡¢óHpè4 :1Ç“:^%éà믿~ù9õ¹W‡Ci}ò­ÕG4­˜z}ï°8F (Cxr³7È3Rùñlᘇ#¥2uï‰Ùr‚Ðóìïüç~'^6Í·®qŒ%‚K"‘"5„ô’Lvµ³­mâŒg¹h+ j²þBæN†‚O @Ÿïn²Ø6½ø˜ˆDÃD/Þ½ÍTw›VÖû"]¶ ðåf¸ñy7p>+þÍE_1,%€ô ‘^5›‹oDs6uØÆ¨'òϹšV—ÿYTµ–5#y§‚™˜…À^G(ãñ”ž’ê}–=3 ºóHx˜5²-ÇF%)¬1â=ó¢é’ýÆöVÔu‡øOÛFÉаö/•à[Vˆ›B(Ù¨›âwš°i ‹­í§ÂÇIÉ]oðóR;&ùä,É&.n|×$0ê»×úAi¬ü¡Â5g\jëL´/ŠM ª3=Ö–œnýQôœÌªH`‚jsŠš’®]ÖEs·ƒ¼a'£°¥äRõVHó6i̲0I€–˜–¦¬8(Ö’}ÓŸÈÖˆñ³KÁÙæc߃¹ÐÉÎ0ŽÕ{°ÛoÚV¬(âÛ6j/Ü=›vÍ'´CiY ÁÌ„ºôgT²‰ZIÄì­y·>×ÂØ¡ò0/â1=<ϼ•þ)Ï'Õ*âJÂKW*Ȭc%{dvö·ÛÊnçw©&N2=ÔöØr7ÿ7¹´¿;š¨ãcFÓiJäŸYï‘{KZç[æH鮽Áo\4¸mmÂSNªÉ5Õ·ÖõlÞqæxÖñØÝ·¦w‚=Mãl’ï*n|“”uôÛõUqs„Ô—ï—Ê7ͱùb^/z™mâ°¯NÂ2<\í0m pÆ{åRHØ›³Pr¬‹³; {×Sm¢¾o±úo´;.ÙªÍ å¿‡ ¸§ÚŒ»2ººæç.´<§¯ðmnoÈi=g⺦ËJdÊ–A¡¬à·N\šˆÛuì ÷q|KbŽšoå•ȱ Öúor§Ð “ 2WœÚïJ '°.jPRãd4ƒÐD“¥'¡‘Qx"Ô¼—u¶’yF¾‘Õ9‚•Ïë·‚c¹Nʆ‡r©¿£!†…ò¯'<ó§¹,‡h— ­ Nó\mÙ± Ozƒú?ÒJbAØv'€ž1KeSðV>ÑÉòÔúСÓ(òId‡Ä`–KsOKiÚÌ%í 1á& Uçó–Œx•—"ìY*îʬVÑs ¯Õ=xåä²÷21¬ÍŠÂ>ÎÝ­2î£âà-¶vRMIÑ) ] ¢âbÊ;và´E PñxEQœí£Q³¢óa›A™l>Ž}‹IÝ´¦kç`&âP­H¢RR‘ǹ”2}fÌ6¯3ƒ yƒ"OrÙ´D­IÅ¥‚î™Yq¢V&(¿Sûýxï^;Ý¿¾c5ï©c…hð„/DéDó0zj“•Ô÷é+1çŽòEË …äƒO&þÛ ‚ð al"ÁÐ䇲öyÏeÝîмHÁ ÝõþŽålùœS“œ÷WÜ ¸A³ü-‚<ïÍÕoõþyÉÕu³¤ê7vØtøšcíIÙ66U*«Ö«a>Õ]péu=6‚BÈk[,…îC+C5‰\<6íÛ:††äo”Ú­ f#Zid.üÔÚŒî]°§Ñœ`ˆw"9dì¹XHçQï®` ”înîƒH‚i4©© ŽYfÃÔ±R²KUmìÖ¸m9î™`íZSU¢V“QâhûyT©xç¾|§opMÞžqè‰$}ÍÊ„ÒÚzO]üÓÞ~‡ŽõW)éÀÔ~…kÊÛ§„ý¶Š‡¦}&Nž“*:gFdÿÑ…ûWTÉÑÐé ’îÂuÏÄK7ÈÄŸ´ð‡ùoÿÜ­»«×&Q©Ó׳º÷¤®Zþë&‰úÕ¢ŽU¡ûŒïøaÙbœâ]w åá ‘‘7MÜ™!úŒ¾ZXS¶£Ã«fÖª:âwÕ£ð˜Kô§zÞêOÞÅÉúõlÚâáIœ >2›Â6Íåý*Ì©‰ˆ{'`ÙÍ=;Í9sâצ•|é^,ÉÊ/.Êa`m¶CÜ~í¢Z¦HJ¸a¼½ÝR·ðÓmð†°&æJ8¥™R=# »ªQ .0iÐÞ_‡Ûû›3ý¤yìmÞ£Àx I$ÍH“>Ò,#¦lÜú¤mV™ÑßàÉç󲿛œzöl¹ç0«:?J{O½µs%I&Å Å®šUõÖ^µ¦ÄQäI&ÂÊvïEô>E;m^Í„Ý?€{d»É\ç¤rR¿3†ÊC $ïDÄ ØNu„‹.½(ŸlýyŸ«(K_®âø†“Âz)ß(®ßgÂáßœX­çÇJàz–éUØ+i¼6ggB¿MæV¾-»Êe›±d»î9:?óC+ÚHö®šØÎgb›n-Ä;ÀÖÝbõ º¶A£\m±TÅ 5@é¬i*NòÎ)SÂ,”©êÇ\PT²t’ÃùkNq>øõ—åÿç>nbêÀ±Œ _ì+@-h¯Ê¬ &¡KÈô®½U*³Óß11õýï[ÿJÂÙd”î®uï¸Î…oËò¾Vh¢^´•o^ÓÍ,$|Sï߸g=%‰’äÁjãåà[š ,Œ¹×-åØxž0óçí £”a †-¦Àø™²Ë™ñ;ãYw7gdb2­¡7?½ääž§vâÍ‚o'¦”t • ÍEeHÏî±û½úšz빓Qâ}aƒ#ªPU$”T„ȨîÃËmnÑåHXllsäl1íŸuÞ ú òR¡ÂHÄÍšá/P¾3ÜD´æ¿*iˬ=9H2La EUÁ?'§K®Kïɪç‹öIÙYþuã^•»qm(—¥¨÷Ðt.ÅO¶ÎKðñt,ÐâØ$tK?MM)!餮“Ø«iQõ/ŒîÒ3—p𧋾Ų†’6ô,«lù(w”aŸËdµ'æ¢gS¯xH—ùVq2¯ßtäk:DJŠ5~j`бb “œ©]#ËòÜ¢Ñ Í$t/TóŽÍìZdšÆ s xù•Q=KÛ>“Édá 5§Ø¨-äIiGPÄ3|NÜAââägÌxDŠ&Ÿ$1N¡ír•°\SUœ{ðYF²ô^c>Ód³#Žðª5)WA' ƒÆŒÓ›êz&/Ej:šÛýÈî’¨F¬Š$ÐþT² ž+OaØ¡•D·¬ S£ ãdƒ: úíírIGpäI!i9%#È»^+›3ŠO-BµF ›&A®ýü/~ð¡87U=1žå‹*¥J›úµOâ²›ñ%¹è¢¦œðC\‹0tE…ÙÌ6 ‘a;ŒúÏ›¤¡€á.ïC¹[º´4aŠ­ÙæØšk:—'b'Xº¼‰È¶/žQ’¾» 8Ÿ—îòM?UW >9^VǨéhÜ_Ôªt ®bšâÊJ'£À¹'÷bÖoÔbh|ÿ\GIѪ&z#D£D+mŠ ÕßoOY2Ï´Ëh(5t´EyD‰ûé—Ÿ•™Dç\ß0Ìpë:÷¿óóº)ª¦e+ ttƒX̪_(Éû*ëgŠ#vQ$ÏE}@Ô´„•'6PÓTnê!Þóê“ËóªLáRuTGÏCÜñ”eO¾ÁÞÝZÊdçzΓD4o5bŸÏßFÍÅ/ß±ý…»«ÿ°?5‡Ï`®óŠ\sþØ] ò^ï%=E‰>£ ý@éò{ß{»CŠG©á=屸Ñ'ÜÚÕ!¡‰DШè”LÃÁíØË›ÝIB°yë¬u£5¢aÚÛ]ó,—Øu}k“ê|Žð­´¯žÁÑaéÜdxv'HÃÏO²¤ž(À=¯²«Ë?žŒ¦*ô”\|V 3U–Th¥“*b’§½¯qOÂR|§ë0üÏLÓÇ_õQêÖ£ì¢tt:Ý—?Z0¤pÿz´ÿ´J1´1| m¡CHQ°ôn‰ÚhòivÉÀ|¯±=ª7ЉD‰ªRG©Dw4OΤåt ´íõÚ„jLï}[äî•5lk ¤M.ÂJÔQAŸÓ•?¨TvôN~‡GÞUžR9‡§ÅåßšÊqôÛ€Ulª)(nŽr©CB¨õ>ý míTÕé45 ’‚_ #n©‘ÇU"Õé`¥ÁC !ÈåNÝ…š'êåÒâ=Jukõ8Ú9h¡øÔ]¿²¨o E¹©F{QHãÝXÚ`À‘[‚Ì&ô–&‰EL“e¼wùfannc9Ƣʡôýd•µ+½ ÷ˬ°Wvô«ö®ô~›/›9ÆijëÃó9‹Æ ¦Àa4‰&e_ù­|y&Ò¹zåH”piv£C,:â­RËFX†RØtèðì<Û]°š¸õû«¨ZNeDI¾¥=1.š.“Uoó¨}¯œd+Õãô·ˆv¯Q€N¾HLŠ#’ŠEtãûisÄè- K¯ž_9ê ¹¿¶Àb¶æ¾´Õ:[çþ×Ù?AÇLJV8Dk•³îdë·––߯HÑ©8œ³ìæ’Ctb”}$Y2|tÚ®Ýx–©íËHÔŸ ¡”}Þ#&j¸ÒÿG(ÈY®ž«¼a·8ªäšRêŒæØ³ñ±3aÜ¥ˆÁÙ$.´ë„tIT:„¤f#ÚUÌ5'Èß_Ž*¸2SHtÎ=¦98íÄúÞËÛ~Ÿ1óî%ʧÁÓe96@ü/y0ƒÀ°Ó+€Ê^à,{ÕÿN¨4XUsÆ>‰•LÁÐî«#å1_Eù'‡?O'bîÕofÜRL=Ó'¤ý‡¬7—òvëÈ‘¸ý£6kº’šõl‹½Œ¯©ìk:Ó²½G£wù;£ÃXñgçñ{i³c¿Y¥’–G â1îúÏâiV¬“„²yÝýÅrÏtÜcÜ9âÔœJ«`ÔÇ+yca­:ú§2zišŸ_Ç™V¤À9W¢žQµ\}V•ÁW¾Ê§Ó8¨ìjñáòÛ Y#€y¹“zÛÑè™—ŒV*8¶)=¥öÊ<ÂÂvnî_`ƒöÐu´›ðYçLéÀÙ–Êiïf†Ieµe¢+0™L_Mæ¤4©išÉëªË8Fv¬cÊjÎÍLiƒ8cmI²§,Ó|-7qdclŽ:ÉbˆÚQÂÉ“fü‰6ZÙ\o)²I“ŶeeUD¶¾ÙÛç_,+n ½< ÛÜsutOlöÝ'yµï_ëG×^+’~®­ô…cŽn¤Ë$¤‘ÉUˆR_‘ºÂ€üüWRÀE<í'ª¦+*L²/ÒÍë×~Øïÿ5®–«í‚“úûï+7)êˆÁ¯ßòQÛ×bos7Cj_«ªF¦Ý›fI¬è[†–O}6I;¿5^½ºG#Š{'|kHG…D;w]Y_Uz$¶¶ß]êÞ§#FÁÚXŸÐXዽ¶¹MD°1¼¨•#U"‘&ˆëú> ÿ1S´D윦=u&“/(œ‹pÛÆK:äÈÌ4{*lÓÊÕð=¹…©Ýª‹ºe”#ÊàˆbˆÐBdc ÆÊËù¨ªű»^ðõ/å‘Þ.d»‰½¹šÄˆÂE/ÙD&hQ,!v¡¾ÇIi lr.Þ6™xÓ:R/èŠíȸ¹ˆIþ6g•SBP¬ý®‰YlÌ“Ñ1q{ézDîérÃÔSÓ=©Lǽ=­M7aå“u¬£Þ÷î}ä¶ka¹?S€Ð– ;†ú™8¦.¨îìwžÍ}³&nM´nÆ»$Ö·Ë;EÆdìîâ½EšLX|:îÝçOèq£}×9Ûl˜©¸ÉrÀ(ÏkÈš}eÏÑŠÊè+© ‹JLš²]†ø‹,“¨Ç–ã#^Òéfä¶Ê¡‚L¾Ç'ê]e‡T0“Ë‹xý£ÜKFÜ1¢¬1XãŠÐ¬©Å›I ‰¯<_ÏÛFÈÙ-²« j–º«ä4Å¥9 \HVÕP`XY,ˆæãÇá¿Úœ%–Ñä×Ö'D£Ðùÿžçn~UŸ:ôó³¥’/{{VOX÷K’q’Š~´ÝôÙ)iÃòWˆ´ S&¤Ûí "ªYÊ,òì½ßá™fiu°Ûi7’aT6¾1îr:‹8Zc؆“%J´Œt°P®T‹¥)C[c& †c¢Gì{›èí{‡–¾¥°ï"¤•ä,Žóé­’;ê|Svûþ涪I?Å©p ±.[±ÆÉ4kq2eD86ÿ‹•°T!Â"+Cì& Çó66á…uO`ͳ¿™t «\®ä¶ÚäïŠÓ‚j¸Ó_%ZV3z€lØ}~ QÏ=VSlŒjWîg_ô<‘îãŠæí)ËÑï¶T§þ—¹FDºñ~µ½~VÈœ¾ ñ‰²¿DøH¼q¶ªê2øXY¥öÊõõÙ:#ªq¤©ÚTã³ü,²Ö“\eÖ(Ÿ/çb’Ȫ¤ÌÏKNî‘vŸN£8°íÞUQ•‰/¤Aˆ²÷š="™w‰\¦Âj…£ôt§–E¤S £íç>«+ ûmB¡Í¥g¯vÃ÷~.~yßÚ‘ËjoÌ_=óŒnÉPúÉa) œDté§9“@`'NZAõQØ´¦d˜V¬ØgÚ½jޱq´»ë˜FI<6ÚÁÃ÷>”À"þkˆíæˆDþÂG×ð‰TZZñ¯ jXÿè󨜳ëͦµJ¶t§@m¤(¿žz¨ä’Ûñ]1§FtT|¤8G4/^vÒÞÚyûî +M[‹¦”¦MmbŲګ+K:“æð—í10ï;Eû§ÿ2¨«}uoêKâå(séQû„êDµ0S‡ÎIèxµ4s…܆QHö—S¾ æˆ|!LI¶!GsnÆAG£îqOó¾Öà×.ž°gÈü*ùo»»õéÍ ïMn]I!ID“ó(yEM|Täì´ålæžò_‰ø MI»‘讑¿HjþÄÿynpNb4¤¸,Eäו%é ƒE¤W(4B &φEF|œ ,+äÖ\S/hÒ3ÌQ«i'²ÑÍÀ9Ö5µD¸QÒ(÷Ý;à2oVu¶º]#lœãÛ¿Açkš•¥W>¹&\éÈ¥±˜á—¨¡ìô¶G˜ý„âlú$ŽŠÓÞ;VÉ q$Ât–O°3[,CÒÖ–O1d˜ôðÂrºí¦¤ùÕ&(JÑYU‡m¦OŽ­~I˜[ŠÒ8Ç©Âó¥ÕÕá‚ ñÓ¤£}áž& œÏì²BàMð…³‡ÌÇø[áÄáÝW^ü9#Ýdæ-ópÅ+ -µ ùÉ û¬OlÜ|ûyS¸Dÿ×ò‡ÚWÈ×÷v§kÆü›Sðt¹ÄŸ*£EW´f ÂþÊÚÿYp7ŽƒJdk-w¾8íÃíî—‹hŸ³ïwL{TY‡@ƒg©ýü›äñXj„¸ö—Dv¥ÌßYv‡tÜn5wAFþrP‹ˆŸï~Àü;EmxÚ«µöñát7Ä.3åÑ„™Ã{Ê-YØW+«BùFw P‘{ˆFa#ÅìaI•³ø>‰éù¥C_o§ó›Ä<ïRÔü<ɉ†Eì¥LØ¡›4a•ÇVYÓD&L!/A‹/}0¯|›˜Ìt|Ñ©àš5žâIÞ÷¸Jç^È“/Qû+“”4g¼ 8y‘â€üwC)·qjæLÉ…Šp3Ãâ•q@}ŒA–ŠNðjº£ó¯(Žòq*E\_Uõn~ÈáÈ\1s¶a”åjkpgEi!¸\££–„Bpï£éÔ!Då%ߣӗbCizø;dj ¥î×2hjœçùð—½Óåõ°lùV;‡×Ô˜âß"},ŽsùÍG¹••»+™Žsüq5Õ8¦,=åikã ¦ò™÷í–FÏäêcÐw/qÝ8;Y Æ áà'Ó;RàvìæÞíµüU[¡mTCÔêºÖƈÃ7«RL™q0rÂE}7Çléž>¼bå0¥!AËéªdì9Þš¦„²Û»´­£$v³ª<ÝгŒ¹÷õ¹T'uy"fŠrêÒcbcÐtAnþþ-žhuš?{zÑÄ…¬š‚>::ahçãй‹i7ǧáWCAHšƒê« ûø.ïqgîwƒn‡Ý¹‚GENä‘ }.MîÞÉ-v“ÈÌîÓ?Ô÷#2ànTý®û×Zª'Ó-¾}uM²Qõi ¬Û$íÐn°ÿn­pÕo¸çû]6£Wf+RJ4¥*]/°ä4^´ §5š«6d¯W$Ƥ“|–D¬’$mU»RDýÁáöâ>ùÑ;×fØ×¯qÓè–(8uÞá"ïp8&OëÊ J8Cr fÈ@wï1cÁÞ‚ ð8/÷`ÌB ‰ª½»µ%ÛÂÇÐÿØ}ã9"á´ÞÄÓ@l*ˆ«àx‚q^ÇSkõ}kÀ©Žÿ&ÊÕ_¬q éYÃ…0#Ÿw.þ]ÙцY2ÅVIÀ„«‰¸Žáñ;#ÚŒ†<òK†®ÁŽD©‡A nc_ŸÆQ,?Hãž°V@xñ‘Ò¡>Ä™ç7Fð_<øÈRÂÊvKA¸9çcxjUÿ³»ã€YŠÏUúÕ+QJ9UœòöãbKÍ’¼Ñ€a…yæ"»e{ב¯Á~[zÑÝö²›IhØäó¬}*·§\±5”ëÿç¹°3ŸéÚýK•ú‰uµ>4ÁÆð¾A›ŒBæ¤Ã¶:JÈ9àÆª\îéù§CµÃb†ÇuÉ~y5O_xù¨X˜~¦-iË!¯…ØÄbU*UYjÉó›‰ù¤yÏËïþçú‚9Áë>Ùô‡ò=XȪëJJ”RT°t í£ûß3öœË…G"Ä¥JYUVERIUUl"ÊHÿƒÒ´",·ÔÊý—pòwMŠª’ª%T«%þq1®öo‘c$(c±d¹‰6²†°´Ž‰º ¢%òEqS&B‹PÚÿïˆG‡ŸœAmÍú¸ÄMWîŸóርäÝ*˜HÔQÊÓÅæŸìŽ>àE¿ÎGE\CoS‹Ê&’þ_•ͼ¿IÕºn-‘A™?+"!øþc \z°Åè+ 12TŒ6¡Ì !‰Ñ\«©8»LŒ>šIjF“ýPÛøL˦d §%ú%-ÝØàµ6ƒì¬¹VA! þíb#Ɖ!FzÑI²>‹wA˜.ãT"þÅ’øŒF/óð3Žv[¾%apØñBÛÛP Å1@¾œ\As«æÎë†ñPlW¡˜…T >vÍÃóž'ï·ÞoÀÒõ¦½¾ddbÔ|’ ²§žY1VRùŒÿ:š)eð˜Wl$“¡SŒò_{ó×öˆûU5+6Ú5{/Í@b垣jÍÿËÜ3%¥¸ÁbƒþÙÊ¡ª>äê2/§šps;¾ß¤š –(“q¹ÝXM­¥!ö3ö›Bm˜¤¶ssì1«™ïeÁg¶P[?8õq(ÿ¾Ã#P¼O,ñÉ×h쨲Ê2VÚ +jœ«²Øo‘é8U„vcû>i«Þ’ÒQ(”…Ê–}Cü¯†ü˜‡Žüæ '¥cþË •îÚhÐÑUÌÆ1[61Œ1²¨Ç¼nÝ£f•ó›°i8¡öi¥:iŠ*TºÛç{-¡…}Ç`‰·0,„†á«.ãRB‰³'7 ù ,9òX›§ÿyïwQÚðñ¤˜Dù_<9ØÿrõÎ(a]ËZ\C#Ã^È{§… î5þ«Lu•OãLªøµÞ«ú*¾zìé^‰pW†m2¨üÓ €cÀâg$Ö }6§R(-©5JL³&³K–L’»¼n„Í«Tê¿@é=ôóIh}ñýfíÆósõaÑiÝm–¥Y­à²¸ êÑ®˜ÖºîÛïÅÛ~²¶ö«ô÷ú¼1? S¿X:ª''””—Êã¶c{O9Öš<­Æ U86!‰Yž5~+—Åäa=»##¢^ÅÀ6zžŽy|êuò¾]K'/r¼£oO€àל¨ø•[’=ZïCü¨ù<ø?ÂÈ?•Uù•]…GéÐæWÉwÕõŸ³\\{øãÒØ£hÁ†%ÓùN½ÃóŒqÑ\ïJtœL™÷&LÕ-X7"wÂÆŽá>b½gQÕ{Ÿ÷eÒþ﩯ùöRrRŸ9Þ×c¶ýŽ]…–7Œlg™öÐÈQ‘UFEDV°©ËP³E…Ø%¼š‹‚Ô6f`Ô•w‹êü¯ã¤T¢‹]2§éÄÝ7ì F”µWð' 3©Í|.ƒ$ÑÊ4÷z‚¦EFfŒ‚PÀ$V©Ë(˦V~‘Wt‹I¶}ˆü–NívÀ˶zŠRIÑHZÌ3K…`ñ·à]1©É±Ò9õ‡FÈi00i$¾’{Ú¤ü Ði¾Ñ ma1..Ÿ×]GfŸ.µX¶ñh½Æ'VîÙ²~É׳¸^†a‡ý÷o@­{—0“ÊM®rή|«2I…ËçÚSÖï0Vàqê”hwéKÈà9«½†ìÜêƒÄ#Â$'¨°ÀqØS|³õ‰ª+Hkh¬Ó•‘/©¾Åæ–ù_13UþÜÉ«ÌZÌ¢ým/6§à¿ËOAåF¢xïA·ä7ÕÈ0$ûºþ½iùßÎÃË©ÓSÌNtkÙ9p‡:î×ÝcÂ?3»7)¡ÛU°Ã ðLòA’€a&ü¢ k¸%éd˜l2ò\Ì?Gºü̪ËüYûX/BîZ¦ôìÂP…½+!XFyïê™6B¤ãÊŒ`ÓWð+è¨r+RG§†&é°äÿ2žÑ‡~ššMA«Ö‰R&µ’ߺ?¦ðnuWÛî]í9׌m,a1aŒ1dÕ?Ô‚¢ T± Šc¢|©°Yd’²B\‘/çÉq-J² d*É b,²7Éüô’š‹RØ¥’%±%,%n)ýÌÄÒI,ó?soŠ¿xŸÈØ"=‘-çÔXƒñ7t47V†úè¤<ÙçIííÿUà ·>¹ZªßÓs•c¿¼s¦Ð8·j‡VÒáè¡ùþXó¬#NÙ)FÃ7+×dS¤çQy'rCÇFêR1)»=‡’òDÞd>vmÚŸÛ¤0í!Î=G`ãèÛÞýí=ßÙ,žœ’|«ÕÔíš<Üèñ¨¥¬º”UU)û^6“;Ô3J”QQÇh×F’©T-±­xó–—/§µî‘´/ÿcÔ(ÒäЦ$T›2V˜d¼?k$ø Ø}º5üüïÆéx?‘ó•ð;¦ÿØL_”üzÌΧ?arÑøßŽîêµ×Cï&³üXdãS’®>y²uKMk=o†­ £Wª2òаwŠv¡æŸìkQÌѨ=‚I·¢…í€Õ›dî0ÇõÎBXD¸>ˆÞd¢ »i¸•Ž#Û}=õ©NÍǵ­ ¼øF§}W¯bê ´³çî’tëÉÙƒþäg‚oq7-epÍÉœo>‹ú+yì !'˜ñ–~ü"fqm†¬ûaɃ‘'Ë¿.+`(ÌøÕä8 ÿw‚üÛ#©F¬¼xJ27¯Êe ¼%6—_¡¯ý¾Ë.!Dâ.¤œ%ÅÙxÁè rÈ­¢‹‘&µi˜pL{áf/C€TÌ™PýÄG¾Ó”dv•ÅØ%@-¼Ùïåß°,¼_§"ÇÝ%…Š¡RSî©ÀÈ)IöèŒÇûV]¨³º‚Ô‰ ª +/†T3Mx¥t­ <&XîÇ3Yh17Ñle~fžÀëw(C '¹¾ód^ ¶î2(†UÀß—«ˆ5ü8vk0þṁÿEÇÖäbÜŸK©Ãô½ † #h33‚K€y_ÝÇë¶¼zFg ¤šÎZ,Œr´­e+¨êœÆêXI¦¸÷ þñsä¢ëWUxêØIZqˆ?òž;zð'Ôí€×¿¬Úþªð_ñoMt »«"L…òýCµ,Žªñ—¾aabÃiëš^{)2¸ÂàCÖ±èiE{‡1ås¯¥…ÊÓ€aAå>Ž&¹/QqUXæ¦ÇÌù:y$Ç$[ºQŠ„uV÷A£Ö²ÕgpüjfMÓÊ0«‘XN­ BkJO~‹RQ¥Ü¨ö¨ÑÔåð^ƒ™#®Õ ˜8¢2^;™a6käy>9äÞó´¡îÜ»]~Ëpª³¯æ&xT7 nÐg>“Ý^ÅþåÉ$ÙþÜ<&A¯9¾p-dœå‰/ËM!ïØr«m•§¬5Õ‡n“:ÔOvÒNËdôû,ªø7†1ã;þW6¼o×ÒïEÿ\w¸½´GH¦Å“Çyê¡&üαè^ÄXuSùˆ9¤Èv&-ã¡Ö:°F­2ÎÈqÈó2_4}¶ÅD98$†`+ó§9¥%*?FÉõâÏkõÌ$ùt-³ßÒìÍ:¿Ÿz™ÕÑÌè,ÒÊ›ëËùÍÚêCfm,’â°$Јd ÊÍpüÅO×òÈœÙÁÌKáè)[”é“åò‡­Ô` Ò»i¡jeèýy¶'“Â=ØkÁ%›IÝ.pç5GV¼\h{œ‰q&½ªo=z¥ÞÚŸºwNÕZGïÍ-ÝpÜõ¨x®%¡3¯î­Ç­OäÜ& ˲ ‚5½‹Q™….ߊ’ÅxHÚaTU,NáŒVG|´ÒVÚnÃÀîÚ Ÿ’$ÅH¯]•‘âÊ~zg ‰õÈŒxò ³¤÷,²©¨O~“÷ -(aò&ì02 Ê3²i:RÑêCQûk9¬ú+aåÇù®Dñ±‹*Æ~Sõjõ‰éÊn>¤{HÃ/¬“y9"b› ýZÞþ¯áCLÕMí5«×+ µ‰EɵE¦Œ¶sçЛs–Ò’O£¬òÆ•ä\–gu¼%ä:½ÊZMµdwú_Q¡ÔÝ@©ä?ï ox¸ÉÛLò’b9 êÉt¢cöIXh ÕÊÔŸÍx®gF ÒÌ`P!Ø £0<ç¢Û9¬#j[{‘…)2}Ö´¿‰Õ@ì—r(jH×Ðä4}ÓÕ«ëüg·s±/]Æ.›:Ã|â—mm„`@¸[*j"Šåñ=†—gUŒS§àt”\6ƒöØroþ|ÿæòm‰œyn†C°°:¥”~:ŽoÓèà—¨òZŒæ—ÖòtmCV©NçÞðHüMÆC ,vÿñκ &×åéæÌÇ}TÓBüµp.ãCŸ±ªÑ ~f¤à2¾ä¯meJÐìX{B;N ‚ÁacuK$“ÉšiØÇ¢°ï›ƒauqdKèé‘+zÀv^jº’,…þë€ÒȰüx’¾9únµM¬+¬bߊÍxÁv-©åHÂÜÚB†á4uNœ3ò£hAÞ*^ ªq’×⥢â¦a¦—$FOh¬–tÉøÈ÷Ø j0#hbÙX¢z}ÜNÔŒÔ~óá”ÚM›dĽûû2,méY”|•Z±T#D>†þ`VŸQÊ{9_À÷{ý ãEް?ÛhJõÞ6ºdé;to.!À …Ñ£šÕY0¢ÓAî#\dóŠ›õ•Šü–NÒVá埅›÷ØSè:eËa•ß÷{Åx}c„ê†c,„ž2ÔRi ïé$êtJ‚Ð}¤K~5¶æ¤m2rºÅnjÚç‹°†”RŒó´&B|ÏÐá–úf_ï9oéfAÄ©=l™Rf»Ÿ¦l–Rcw5RyцÆÑƒòI,ÄÚùÅm( |ÄÎ+6›nQu„ì]ð‡;Øüãôºžìú;N¥ìg™e^Z¥‹°7cöMŒO.–*°<¬Ó5<Ð2LŒ•YG ¿Hž´Íä’£R2AU¢ÉI[ud<”hÙ,b&Û&³¿NHW UQW ¥$ü˜›î´ìfãy„}Ÿ„’u§¯¬ºÖ³“*[8f3¬q)Íyái×\ J‘f@‡*…ÉUvĤEMfÌï­Kíròºù_]tBéÂüàO ÕUÊ:øÎ®{{œÌ?(r5«« ÅD=fô¸\,ä 2°ala¤ã:x‘9Rô@‰°+ PyœÖoc;>HÞŒª{>/¸§ëªùÎпôk8Ɖtîw‰5þ[9-ĘJ$gsØnŸVMï\t®©$Ã^ù³ÕèT‡"ÒåSäoé$~ídGmŸ–'ˆ¸sIi§#+^Òð¨ôþêm—¢ oIbQü,Æt0}ze¢¯Î:›lq‹—N†²™VÌI†Ëp¿a4©¡9½Âiúú>ãN²÷¨ŽpŠ¢w ºîÝŽ`)<*›´˜t ùiÏIÕ3 ù4‰–ÆÈÐߎCéàt5OIÈ£¾#ŠI¿¬þ7€Þ.ìæ€PßíØýmä} ¾¼á|ngs¢Å*0µÅ^d9Èæ_Óâ8î9¬ÕGzÂNy‡AJþWü¼‹EKNš¯ªr4þ=æÝq{Œ'#)É8t›Qc¢/Ò?C×W8Ѫ>w¯á@¨;ocm©±$kD§s9ï),ÚQXÈ:2‹þÀìq²cGE„Ã:—j¾d~™ct=‡fu¯º ž†Bùã+\Í¢nKQû?‘Ë(Ø@亩˜VÅ©(& êa4®ÿq8oÊÃsQ…¹å˜f„&´¼ç.îZä}VõGg|¨>ͺ|Þÿ¯Cë<¦æ+³CG"˜0Å00¥ŽºÊ!B}*Ïô9™="¿–þ:cÏ,œ’£ÆM¥\‘ØXG„þ¶‡ÚbžåÑ—>jã‰Ø÷ð?1ÒÙ[bé  Í=T{‰Ê'q\$Õ}^Ï$xi7|©T«|lxO‘çFD>Õ¨àE„–1¯¡½W ÑÚÕRÁŸÝ>›NoNÿ;fHòÈ©Ã4XÄ3jÃP å¼T·© 7]ü¦YLïþmP5ŸXHÏæj䈤mÊí¿äZ4.[¡¹Q‚µ ?¶J‡w~ýñxWÅžÓ¸zŠXt=[\*š'–0ðv|ÒñçË\yNAܦjô­Ö@2ž:†1Äì«Òš=j͘ËÐôª _Y«Ã £öyFüúËû?<(P•<妇F.‡ª¢Nïíp©9v†³*i ÕÈ&Í- …{ò¾ŸúyËGòž«Ö=ëoš>‰÷3QÒ²Þl•‡BŒ®š¿µÓá!»ãÉͼȯéNÁ·º/VZ³ŠñU‹tʹ b¬ª[L§ößì>Ì«eu‘ù½\,ªªìã 쿌3Œê=vù–~nÃô›4eKY”íÄvPœô°Tv¯6J|ˉ!ìM"`Y7jF–Øÿ©'Ýr8à ººò=ɹoåþŒaоÙá„?°Ž0ó§VÒœhŽxþÒ5šâ7mE¥w«yqõ™¡05V¹ûœ¥pÓàZâånÛCk‚r¬Ok<®oß!1QÓÿ¹í¬¬ {‰ˆ# »ØøŒÜͱŒáæC}¡‡ì©-ól„Œ¬[ŽÔÝ©ëÿ‰–NŸ+òÆÝÑác%•d|Ÿ`Gu·®bî2á–Óž‘’»{ 2Ô­ÀË‘~2»âZ?À5®N«wJü>ÿª»}fʽW~}‡N/—†ýÝYJo˜)µa¾`´‘ŠºçÐwóDwJ7T“‰P˜RO+æ {D°,Xl‘Òj=áƒ&ÆTàÓÓ5$ÖÖ­f· Åš~_&DÓa€ìˆíõUUT¶YE”«e$æŸY%‰UJv$ç9ÑÁ– ÿ–É׺±ÿ¡1*Û1F²°ð¦Î¡hšÄßÞͬ ß•–ô»üÉ»¶#"Gwa~ÒÁÁX#B˜°Þb zÙi£¼0œbècVõ¢Û±Tëº#êEn³½°=É&Ä,ƒ¨Áx¹±fGÅ}ÆÓ%f¦T ë¡É;[mŒŽ&ÊÈÛ½'ɳœ…·ÊfÁNytVI¢Ï)8¼\£rŽmÝL¦%±$§á4C„:Œ±IÞéT‘ÀõjÍÄ!Q¯.LS}Q™a8Â-SI;žº[ nŽ3øŠ‘Ôì¤À­¢6“*Wþ ×F4S»b­L)ß°\lª²K‚Í‹ã7'^óÊá÷³£„GôüâÆ?Y‡4ÿºdù ã%RÎ |.Ç£Z[£‡"¶Ò­ï(ÿÏ}ø_åóýª“ö\2$6ü\rµª¯ÔèòŒßöõ_Ûiº~ý¬KÚÌALa"VFB&,-*)d.†C—äaÆ 1 ¤ôÙ£Ni€J;JHeã*~—“’Žÿ°9s!vÁú²ñ›úе+&‡Z†D7t‚Ü‹ŠKB_ΟBviû“ëHúÝZ&诃`dƒÓ õD{ÞÁ^&úŽUSI¿CzC)”ß.ø±2]\ÿ]SSo~CÚgÞb‡C¿!¢ò<q­šåct#;47l ™«µáÑýˆ>äm(:÷Q¦þm¹"ÔH¾A¥¾æro$Ý>“­h'DhKY ú(vhh[uôòGü¹®‹4s,QµS ˜KÈâ¼Ûe掋ìõÁàö¶-áýÅ&j¿^QVEib°/ePÀÿ>ÇE¿|Û<›Âé…mh6ˆ6D>ç]y\éû½øÚ+n‘Î!æÚB¹?N“ù®À°²Ü(ñYåQ­IÝìN]£ºö²F"„\&U2µv jœvô†%+_¬ÿ}µç_£ö/É’\ý¹/á¶3œ÷ºhj"Z¤“2P˜–N¬+’¨Ð< #‚K(¶¦ñ,D­ ®ˆ¯¢AD<I̾„á8N™ä~}ŠáïÓr lË¥LÓ4ªm<£î;G™4÷î?žØIg†œKZ OÄ|¿‹˜íÂC)Ô,MLögݦ"5­ 4÷sÅg×s¤þïeXº¼¢êPÍV[$ê ^·ûÞwéz?’ÛI²Sù½O$]6ŸÇm¢aPÀ•™YÄNïù4ë!Ïé|Šƒ4s\ï+œû,¼w¢ðn‘2AËÞHä7Ã,GG³‘“}ý÷^›¼Ý Âk7®ÅwŸ¨ûxŠE ß¶ɸy¶IËTu–<ææ)ð©í–Iÿzˆ;õ ?©D¸¼°ñÿR+T½ÈDéb¯Æ¡¢‡‚|/8â.rqÅõê·+ÏPðƒ˜¾ygg Ïœs*«Ÿ`0`ÂÄÆ|d†ÁT&¥H~„þüÛ¾$l *¾ÙK^‰ž´‘Þ9_2îO?úÉ¡ÔTRÊe1•pÆNÓM5¦škM4ÖŠb˜¦¡¤]XAw=¤!I‘fÐ/³2³ZW_ÚváiØo8Á-ÎÆ2a,\Æ>Fõý*»ª­½Š^©ÎP?ýJÙ6†lÓOˆd‘»©¼¤ÉN%¬Æ1*ÿ§9Æ#8r“$HëØÕ†Íd²Hò!<ñŒIŠ®E‡¸•ÄŒÒkârÌJ™bUÅ投UUT²U*ÃQ”úJaYÆ,×}d+³ÏU2º©‡6Åb¥ª¯˜XÌ-[)‰‹%•#1Øcf/ýzv®kV7]V>k[]™­I¦±qŠñÚÂâè›VÍ~tŸ«ÄE-Ke²Ô²’ªn³¸!ùÒC¢AÏ!ñ—¥[?«Lk›–Xc룩z-8Çl±ü5o+ÜN!òßð½Ü´+ÔIñª6eÐS¯§§§Ð.ô›„ñqi£þj|êO“ßÐt•ÅÝÑLÕ_’Ö«î¯ê^Ž¿ù\ ѽÎxð´Ã慨­/Ê©tr½ WŠŸ|eóê› ïSáÔe"õ¾JŽ á ë!ô¥¼Ÿ/|?4í;u³m_.œ‹·1ݦ…VâGØAίî(:õWüҾʭûà5•OÍUϺg´‡ôÉçek*¼åÔN½ß-|¸Œ+ñü=à'õSÁ¡Ã“q‰b¾,§ç-vñ èrr¢H®NS"~A 'ôva3&*b«>Á^'4¶¯à`ø÷†m£Ï14#ð½ i4ÉŠ–)°øœ³“F‹+k¡læka\³x–ø‹_Ɇšÿµ†ÞÅÐL~Só¿èñJÔžÁB’ѽQEz¤wRR]æ¥ìfyý@ÉŠ-Q[º¿c6ÂÅ…„÷x­Nï#”ë=µÔ•Ii ¥WŽcBh’p¨+Z=¬žûÍȈFd\ò?-ܘ$¤†&tõ"1Î#T®ÂÖÎ×7l⦙À,Tk¯þd»œ˜ªëqM–ZcÚ«Æïõ˜šäâ«ô±:ÊLvçvK ¤²”Oqu±5>ú%§èN Q{uúU‘É.ê… ‹¨$•É$×Q2Œ ÎG€ò~± qš]ËÜÒ•d±ªƒšSBíÅþÂ,˜>äéO§Î“³½I. —»ˆ2Bø]OŽÝ2P®HJR¤©vÎ;€ôo"˜Ð«ÃDþ~²Î±b¦ÝPð¶Qé0ý&)¨Ü®*½+ªf<é4{¯ý½”u¬{=&-mm­X`>åQ Lrw¨©$¤«VºÍã¬ø RO¦`éùÚž¾Þ'dÖ$Á6ž3³B/³Ž#r*€H‡¤£O7 ‰\ñôÛt£I6áUMsq¹ó{û‡Ä–îg.šÊçÌ­ü¼¦Y’N«e«äÒí¼i†Ú椼¸ôèïVÃXÛ{?‹Ìj!ƒ[]>Úݽ2=Ll·&1.cUáØ…†‰ll¯èu`Ù>ڗ̦®½‘8>&Ãdx/_fßnYÅúîW¸¦G«d¬p˜¿#Øë[“¾Áe,)¦×ŠJ Á ØBÁS˜œ>}È‘9ù4gLî›3xnM~[ÜRIÇ>Yõ=÷sžüêTáŽ-ð¿+ªÃ&’ÿSºtž'N‹„L£¸}²X‰9tÄÃVN5GBìëEòOÍlÿÎ8ãÀ°€Îë«â•ðÝùWFšJ¼8¼a`ŽóturŠŽuý‹]éðJ””œ¤ò“íÓпm‰Œl˜ÇÔ’^Roíu;£Á½³’ïOÆiå'q*ïI0&‘=ƒ+Í;#—VGwbT¤Ä"âd¤*ݤ¬ísOIƒI/}h;„ö é½&ûè>A²È‡iôù½WUå³¥é}›qôE”Úx¦ËB¹²:b:ÇKw‡~ª†RòŽ»n³ zÇë¸æ¡S[ןïp¿ÑÏ'ß6Ôï¥?RºµÐ­N†–ŒŠÃUã]zÊb#.Ì,,/nÕhb~îY’y™,´÷‹ý ¿Ø@S¤A%XÝ“ †ÐÉ<‰€A£jråðl‡4KþªüÐdÂ`ì²&YÚeK0ØÙ\È_Dònfñ³‚¦vb¢òrD]Ì%UmiŸ^º®Ë]YWÙÊÖ=žòÛFë|s¶ív›XK2îcpöfTø»¹™Ó™ˆ¹‘ ÈvŸv%–ÕWÊÿÕœ$ŠÔ“=ܲA¿œ§S“¹^Å«@áí!›Çy1×^UM–ÞŽ SiR0²'ýÚçTÞnä–ßfó{!u÷ áQÁÐÙè4êêÛ,Ð,ûײxºúTÿ”#Ùü ˆ˜óq‡g…°°÷omgɸy¿ÖáeB& Š›%rc«xlÄ~*¬+N™qS>£Y~ŸM#žËHë§Ùéº{ÇujDÔ0xáíÂãæT¸‘Õ¬jÓ³9fî´üÇ?Ï^Hºõ—µ&E ÙéçÕ œ¢¶“)?ÚéFZ÷y‹p7ü‚8›¸ ÒA0†I"K”Ú¯Ú­õûÇ­ø6#QØKBújwÚúãü].ÿ,Dr ’ó6¿¢’ÎEà­,RòõS,ÔÍ‚&üˆÞ^["rm4é›É§®Ÿ•T©Ù?Sö¾&„Y@\Š‹&õ}Hz WÂK]ˆ²Š VD¼¼aê’ä$ 3˜s^ÓùUV= ü'ð$÷-wyØÉ0í3¯å¯ÎèóZø\ÚÅG¿mÙ[¦ç)ðX©æv²´ã -þË´hìšPîÌýË9Vn-”Á£Üç–o±Ú4HÙ®Ûe4»JÊ·©•x¥hmi-¶Ôr€òß»©Ñ5.[SÃj P1‰-KJݤ^2UͦZZvuuí‰#uêÿÙòヅ‹oo3œ“*O ªúí=Ä»Å9g2ïo”•RÇkV•ëµV9çø 3F¸â×oWqddÃéWŠ™©.n6Ï£¨nlKSátÿÞñþ–¡¥¶\m”dnªe~Š•ã”ªIý56ÚØ_¾¦íþ¾JÅÄhwé|¢’Q¬ÿï˶¾·Ís.žKUʱro+E¦øäU¾ SãaüüL#A]¸½åpÔ£ÿ¶)_õ÷olavH¡<%a(Fü1$Ï%pJʳ‚E}sЬe>8È6¹.·2ÉíåÅì örø*Hêý»º3m²«ïã7’‚i*›­–)¬?æýÿ³¶–§ÿr ®Ñs¸FžÖB–ñ®]eº"ÜitM‡­KÉØ`Î_åšFäÔŒªýO'±Õ°ë2u½— ÂØkד‘¤‘&AT¡¨&©×ÎAm~üJ;]¢ª†{%x·µ³×¡¸O<׉£® Ï$:¤“$ÁõʤÂh%>oÆ7»‰³.ò]Ž;aõè¶×Ü# wN}ž*]Âáx›×± @«ôCš%b'ëjÑRȘø`[FxýKsÝtlÄÌ ÜÛNB[šÒˆ½JÐ0×÷+|ËE~˪¼»N…•KÙÍ3î÷†­ÀÊÙÄßó¯ÀY§ïA…²a®M IJrEÓb•‰•ÜDäyç!ÜNõÓp{#ƒÒsº“±Àj×)ŽEGGO#—ÈÞ#vÒIúΡß:³¨ÙȸSŒ±´,Hþ·®mô³g£ëyËÔåb$ÑÉê£wI·x'2&æD˜àÈhJPTÁ¨ÙôÉ¥Ñ:Üþ UYKdá“$Ï„Éê›·Æ*`Wr܇4ÆéªØÕ«jnÒï|ÇÞ.’ă<˜õŽÒ• u³RâÉûôøS¨Û"¾Ühp†jö®¥SÔ©§ckukÔpa\\¸9$ûw·‚sXO PËé|þ>½YbuùŒïú¼“ó 8ìæ‡gÎoÊ­ásC*Žòâ§ÀØhìp¹ïjm³X81<5 â%å1kXeUš(¦¤‚†kÊ!`yÄvÇÛŒÄØ1ócuº4 À93Øg£ŠVWðüû™EXyèµO *=|–> •üô°9èŸ0%ÿ§ˆmÙqy2mÆÏÏúz½ÏÄÊG;‰Ý?O'\'&wî¯ÌÍ~O|˜ª~Ë™‡ÎGÖi£ü™’UŸhùìÕïŒ3ºYZî¥9ZͲaém^¥›¶LkŸÚÁ¶Xâ‘(1 ;ƪ8—n³ÿ,s ºÂTL%t"Ȩ¤úïõ’Ú²W¦#c÷=GSNKà”ÁÄ©dþÕ<¥ _¾Å¥zªŽ¥v©…ݪZZUÁ(<OþQ¡(µÌú5°…á¦4ûnË•S¢í‘U'µÿƒúMöî™ûÿ€ÓUÛuZ“øÒ±^Xc‘Óß±ÄZš1¨ü-E[sŠ=ò©Š¿TºŠI©4¿Â¡a4Ò˜¦å “q¡¢âªE†‰U²»™òñ÷TÛÍcþªùÊùžç%K?Sždýµv—¥gx®g¥+|wlrÇê®™0åjlh‹Ùy\kÉašO5Óè­ãÓGî¾&¹ù^C ÎWÆìµ ÕMg+×±>cÙ´ÓnGJi+µ›{«ÙpÉo¸³ƒØ#ÿÒ¼ôHÒ›+Ðe¬ÚÉÐÍ?ǘvÖ!¸b«ýiú2ývMy1rKq‰»º¬_…'1GFǪYsê“oPb׊*š–V›=<}ã¼KXh¢”dé ™¥Þ+~ª}"¤ô‰Øéµø=Ñ‘óüLæv˜yû:/7õYÒK=ƒlèýu»£§o 5Q!a$âš=IÌíJ¤­±œªƒ P âuZ È—1¨‚ Œ1*I¶–Æhy;v¢å¨¹j( ’$?HWúúµrI¿¹AÈøïÃkW]<A¥ò¾ÜI3Ì–„ëNšìa{ sZH¨'*áîœÕêÖ¾RN/A ’s)žK‹?‡+•‰„“ì><˜¶Óþ'êz6—µóLºv1†ý§º½ÆƒÁIúLœ9cªV½¡ÓQƒæ»|²:V'`ÇPún+s¡h:Í9$n&á~j6ßJŒŠJãÆk ¬†tÂVÓ(‰+R½p†oëÒOËv[hìg fä’ñ{h‡öÄ*oÛâ©7ÈLãr¯i‚h[ü7¨dk¿ƒ{…<²~îòÅ©Ó{WC‹!ØpàÚ7EU`b•‹ ´PvtÓ¦±ˆÆ#—ölä‹–¶´;ùd’òRK÷J°ûÛ@ñ½ }ÿïŸm«ÙÄ4z6UWsUA`¾/¹'ÂÍbW†w]pÄ4!šõ<1UH´…BèÂfñûçtöCð¶SQv«³ÔøP¤¼5£@uÅ“ô|N¢²ª=¢E±y­‰7÷’ÌûþëªÀšz‚jï/…¸é»b–ÿ|È»²1Ú wϰTáµf?‰a!ÚÑ03[uEPâ.É1ª¤8–Eü›d…õÜŸë,«õ´u¦SoVûœ£¤Á0m»Ð» òsªpZ©\6võ†ØÉþìõÞáìOñØ«n– ÂÓä1Uо•Þ?lîÇÍh¾z¯Æüf›G¹ÂGucóhñÆJ|õº¨ìŸCë÷Ûm¶ œ9ÿ³“åŸTØw ¾§C¸![ÏÙ1*û&è’*¼¦î×Éö27õã7B-wÊ-7¤ue›7²Ÿù€Ê0¿ð%mÈ}²Qî(@ëAª_èµ–}fLƒ5è‹ió`aNúŸ[)Iôˆž×¤U8;\KN§ѬŸ!ga1±¢nÒÓ\Ö¶ªùó§T5mèMÍÁh _“äËñîÁwòÒ#‘cê„Þ§ Ó¿eo‹ãÅ×æÑ’ä?õ dÄ/4^{_£Tâí½Õ»LmDeßœ0fê’8ÕëĬ{ô—˜ð+DÉtœÓ™Xl¾OµHÖ?Äàú†Ñf~J`”:îæÞêÇüö=yÊaö·ôÔÑT'%ð&‰d5Ê">5$œ i‰Qç8ßAgšfuÖ´&ÖÞÛy†Ú½Z‹³*å'G7B³ FÜ©wª$ŸñUrr«n}fa5U‘çd*rü­_ Tš¾›\Õ B˜á—¤¨æ‡`A¨‰7zõq¨â$_hÿÜÏ>àU.&!HÚb>–nò+Wn>}mÅ‹) -@ž³3f§%&9ÜZù&{»Dm˜Ÿs†nºV¬‰Hì°hªI¾­*U3íÑ.¼ãâˆ: éÔlÝ·›r¦Ñ‰3t·SçÊcê»Ä[½€Ë’ …ŽÏé:y­2 µJÖ ™Ô/‡ñ¹ŸRýb(ÍI¿ln¥Ž1-½i£I"áR' Î¼Äz÷?¶¸2—5r Š]´s\n/}Œš»öÜR÷k”ŽÁOÑ>ì vwåD0×, l›«`¥·ÒãÝÒ¸N‚`u™ šsäÜ8Á$Y¯ý’~lmÀoŸ%o÷Fö [@´Au(Õ o8¹g¨…qõÕ  ¶Ž¤O«~5•sû£4(vðV1X'¥ñÈj”Ñ&{î“çèA[§øFËU‡º»gQă?Öš×»†öF”uBKÃyf”)ƒIz}‚aä°Õ¡' ñ4¸>{4´ ,9þa3c¿6¯$¡îjÔRi¤Pƒné‘×3÷|v·7×÷9[ÉYøX‘ð‚);Gsêy …ž-5R–ÍPéAxçDö¦tÊÆ‡x¤~ô+Ì}¢úM¢¶OêÊ54lþ6îú«q]MÕ¯8 àŒ..#p:)!»vrp2i’Töüš qši[F+´Àx®8 (ªéY£¹¯/ÕQ’ËùÞ)‡ÕI“6m£Ì½ÛݱŒjcO¡r8¹]k‡„ãÇ—~töjÔ’~Œ‡PŽZG/#LŽýQŤïÉ9bŸšS›TêÕ8 žISïÕ7 œ‚§àªvªœr§þ•=²§„Tð*žSÀª~2§TôÊŠ§á*{ON©Ò*áS¼ªxuOìTôŠŸÊ©î•>ê§H©å•?¾©ûT_õEñ¾º—rRñ*_þRýå/¤¥çT»%/‚¥Ø){5/éRøÊ_AKû”¿Kß©zE/:¥ú ^!Kâ©{å/®¥ù*_ð¥ï”½Z—é©xÕ/÷R÷ê^‘K©{¥/ÍRó*_†¥Ú)yõ/ÑRþÅ/–¥çT¾Ê—’R÷ ^Kä©|•/ÚRôê_’¥ïT¾’—³Rüe/`¥þª_iKý”¿ÕKå)~—´Rú*_eKø¿KÕ)b—ÞRþ5/ËR÷Š_ô¥ùÊ^¦‡Æ¡ø4=MCCÓPô”=-MCöd}9½#þ¤úGòHþ™^GÁ‘÷${Ù×#ÝÈýé2GéHþy™#ôd| rGäHû’>”»#ô¤{ÉêG»‘îä{ÉúGíHû²?‚GÓ‘ó$|I›#ôä}IJGÒ‘üÒ?rGïHýÉFGéÈù’>|õ‘õ¤~´±#íHÿiÏ#ö$}Y×#û¤}éÉ#éHÿ9á#ûäÜ«#ü¤}¹þ‘õ$}ÉBGòÈú?ÆGÒ‘õätñ‘õ¤}ifGùHþù^GõÈÿ9fGõÈûÒ>ô±#þ¤Äø‘þ2?ºGúHû2?ÂGüÈÿyí#ïHû’?ÒGÜ‘ÿR>Ü»#ïHÿyzGÞ‘ÿr?îGÞ‘öÿ½# çŸhò7˜$Ç¡ ÁyóÜþVäûÑ/ÈÅôŸú»ŠÊ´Ldñ=0ª‡ÇÙÛ> ÛÿîÓÇ¿ÓÛšs?åëcœ+!½Üb"ÜÄߨ¯{ÜbÜ"IQ—¢ìXÍf/?j ¶÷äí®éJ‰y,êÒ$³5)a>9b&K>èv&îõÝe´°Nßñ²œ®~Ó$žÂÙ Ä!|w¼ ®_Fnôð%ÈôÏBðIÛà÷Éj+ `ÉýHÄבÇÔñÅXüñ÷2bÇÐÔøKé¹Qå{¸ ƒ)=F"P_ilºÆœ»YAÀµŸk¸Ìx8\ï=°pH€³ÖÒ ’¤g'TÑf¬›ÞøæYˆ¦ã¹Û.¹Wù#eõwÕÛþ­bHœ„‘=WCÖ6×­waU€ØZ9Y¸Ì›Z!eš¶zöfø†’tíͶn«Ls1unûƒÎfg(ÈÍY¾ ósws.ì¾îÄÝ/"ÃAÆ2ðO û¶jÔîš×0ןLáÁ¾Ïm—ýnì ¯ü¿!©ñ—oUfNWóZú‰{K(Ÿ6 éð "½÷Zeûz­£Ñ¨È?*qÄ¿/.ýQÆGÝIããè½²LúkÔ«×7—J“ùŸÑñj·ÙXË$üü“¶zºù®b·É?c›oÁÏ|N)‹Ùˤ¹Ö$X‘,oÇÓKÝ2(à3'ãÉ£ô6^Êõc(/ªt ¦8U ß4±¥s¯_À§–2]£±¸&.¼„µÒ4@í³ô[\Á…¨ jRKƒÐf\ zº‚¥:‚+MÒE¨Jia:™aœìê_…F‰É~mš/ÜŸÅ{N ÙS&yñÝÅÃ`ÄõÕ}9Do–t°.$Av>dbæ¬Ûp,…àúdÎgq¯ûÅù Cc*:]ô ã~ \šÊz7„QÒÏ'F¨šM7ƒ0çïp’0*G<ýÏá#D{‡‡ët&€ƒ3£“Ø‹³Ér‰ ‡ÆLe¯¾àì;érÝfŠRœsW!cË™Gñ†Óf¶æÚØF’­°¼v캲Ö.Q‡Ã£ ”U-ãKlfÃ6mG·CüæèÂXÎĤÊå35v4 ƒö’”ð;*âºvv§&â—^XHòÐnÿ[£ù–ŒZ’ÿqâk‘Ò;vÿùt&I$`×c)Q:ûˆ·¼I%I"1擤öBûô¤³ êgÄÜí’µ í´¡Ý „Q.ºbÎÇz†¹dEÅ ¡|ýù“ŠÛÞïåßÎi|3ÆK´Õ€–ÀCe‹¿ŽYÞKÖþ÷X¸tl#hó¥Cd °ŠB‚ ­E}X5oBšqL@ƒ}xòõ9XWœ¯ìx‡§‘¯Æn¥ÖCh4GfÙÔTÿ}[.Õ ¦³Ýïµ,‡‘ÛG7r`áô?}·¥Žœ¢¢¿„tÞwÊu06L" 6 V`<å4¹v>îpº…·vX~êlMZ2 ħæ(÷þôbeÅç5¯ä±FmˆË‰î—O‘Î`y8º‚.ý¥aÄP¥Œåµ3rS‹¢+ˆ[z×áLýgÜ=bº¢•gk øöà­N&6ägAّЊÑ{w…ØV~W)R2 /€8ÇI7ËqßOe™ÖQa]åHä7>1 °#ÖÐö¤ÜVðiÀÒàÖ§3Ý4EÉ€rŒÉ£§Œ\˜‰¡LÃÛŽ2il—FÝ Z°éëv3ÂZG”‰¢ú½Ga¯Æa„’f’L“Oj„2Ñ&•|«˜Y¾g·ùN i8u`Ýk>oHö>kšwÕMKøÈùÌ€U9»€ítO›Tæ9¢Ä]K9ÄŸ¨qz`Ý«¨ÑfHxA¿sL^Vå_5bb¹ƒ~áæYAعê®—A…(²xÀ¬úìK`o›÷Éèò”€Á±?[ÅÞý9 »P àaÒÑá#2Žò¨c_7t'»J0q4å‚ÕCåH䇒Æe48/BÆi2AqD!oÍT9ýˆAWR­ùãs8Y#—½ƒtçøÿvø‚òÄQh0 žmbÁ.÷z£ŽMŠ|Ž‘^ÁhãùÙ­æøDìEˆºCÑ^<Œ( ¸K§¬yޯ竔™E JD´“Ÿ¥Ñ¬Á§ÏF\£ºÖõÑ:&G`øJ½‹\œQ«Kó“Ù«cÞ{Wò=ÂmÞ¬8yßF9™Çy†EýahÂ2“ôÿeÛmoW`Y+Ìk}îø·$ë $iD5eb JâmNéT³Î=Þ5’òIÈÝÜ)(¸ƒ‘èÙ¥K šÞU¤¤Ž òZŸF†´ÆÃ{91ùQˆ\´É=—ô,_;†®Üù&ôû±ÉêàG0ÙÜ7ÊËýo‘ ·Ó—Þ-D×/PsqZY_ßîôæÑk¼òuÐDËßtõ¸Ü·ço-•4Bb¨{„`êíŠPøí¿åñOeàtG…õË ÍOrxBgto |æË½—hžÈQÌìýe±îâ¯Î#ãxÒtï&.½}]Ì —Ûºodé1^«†`8µÆhæ\ì>Ò?Ç­ßêõ¡ÓÀµúyì‰uÓè“zh«å—k·  ™ôà´’äá#¬š¬5ÕGçF­»Þ»…à§F®¤K“‹=ûE”äŽÍiºrÀÓ„›˜å66XxÿÑ? Óqm“6Á£éèëuK÷£pö­R¹Ûç|õÈûÚ6Ì’¹ÒçÖï,7­]SWk°Š¡pϸn ‰‡R:ù>eF×EÒ‘O)Þé1ülËÎú¬zHÑÝs“°ª—ÊgYI#1Ò¤+1…ÞªFû-úa'I—‚Ù’&Œk±£ž*œtüûIÍö]Ïóézè»0¬ÂÁÞ˜‰–“'’Äz-¡ t@ãµNœ¸[c·ÎÖ"XÏŠÂÂŽ‰¯³Sÿ6Ž8H¨›Ú“Úõ«•-AÑÛÄ×—£$L¸(ÈeÖÊmIœ¡kAÁVv ¾¼œ'€}e´øSõzc}«'èAl¼Ý|?ìÁ(w™iŠZÈ.æ:ÒòѦ/ý è õ7vÖö¬I9&qÆóbŠªœ hpJ ¿7ø®'u%ˆ‰Äyk ¶8§ÑÔWRZB©7_ÈË57çùÜ|åܯ¶tNOuGG¬Û7cb²ƒ `S–;Å–¬TC¨‹Â0æB¿Ìž|ÿ%¥ÉdsS ©'Õ¸¾¥M’¥Âð÷›BI>÷²íÒ8Í @<¹í4g<‹4h$¨Ä">–9lyx¿†Ü³øFŒñ^…ñçļiéHm?ƒô-J²¬Gé)±{Œä|Ý'곑“øØ5–ÍF‰è?2ÊsKS ’ñD9˜ÀÝH]¨†©ö®MþVŠ4Ø&ôÙSn¦UŒ–i2¥ðœ‹:51Sú4»ê[lŒX1Š×íQNq§ÞéjÃM E´ÅXZ«KåjiTÕY2TÔÓ¹ô¯ÙŸMŠ_òÈ×TÖCh¶}4;2«øä9G'—SÏÈ’ÉÔøolUUv,5•>Íj™*mÙ*k&1prTÌÏrÑ¡Sâé½»5OòÊ3TýQ…NïØªd©¯|kÍ}µ¡SCqþy•7NßäsTë{Wý9…O XTÖ¶[EŠªnØ*|~0â÷­*›‡ ’§ã¿ß ˜éoÁË5N–í¬•3xÞG5N)ýÙªvç ôÐÌ©ï7–ªfò¹ÒáÝ‚²0¡ÏðÆí™ZoËÉKðÒñMLÔ± ){õ…-OÐ=9‰Êe2‡7V•-6¾€Â–ÆäRߣ–¡‘KÛvR¿r³RöOÑ·öe/õ`¥ú¬ Þ¡Õ¦Q_õ·lÔ¹Ö¦JXaKßy¶lÔ¹£ Z˜RÍâ\ÎjY¡…/Îÿ¼”¾V´5²RúïBÝ&jZL){·¬d¥íû­š–hsûk5&Š‘*¤OÔÆ$MIR&?Á„‰ï•*ŸÕ¸o‰©¡KÓ`¥¾0RϽ|FhOòÁKB—úŒ”¾ÎŒ”±aK -Ë/Øêô%š—.Ë%-,)~þy)f—eàrRép¥¥ä53Rè)t8BhqY(u ÿ^j—öšhbm˜1eCÏ¿£íé¶nY“ ÉdNe’MD˜õšˆibfD?Î×}¶ÒÕØHÈbF1#F*—M‰–$r^1’FÆ*—æ1#ê¶2‘ÊbGœÏ)G‡¼tÿQ õ™ù¾,ˆl± X‡§±fÍD9šd$!lC÷¬CÄ32‘ÞHË$ÆÄÒbGÌr¿C9ùb®Û“H‡…b?Î㨆ö!²Ä7Žõѳ‘£æ½Ë9¶Ûå#tÕ¶ÎFVFIx<¤f±#;?¯6Iõùy$t‘äX‘âØª^ó>g´ƒ¥sÉ¡#€– †$oñ#ç³e#»âG¹x̤}Gõd‘Æ1#ýñ#ÐðYHõœ’8Y2‘ïÙå#À¬Hå?e#zi÷¹Õ/xØÊFŒ$q™,©±#/ž™ENgö´f‘¥a#í{7ÝíZ$híY${ uH~+ìá;0y½9NTöm[’ÜÑ\Ù²§æ?†ÜâÙZhýæÒ|#Ë&ÉÒÌr#êÕ`ÂX‡6ÃèhY=+‡²ƒМ*¯±KiKxŽ6ö‹°¡à\>äíNôFÿ}Ådµ”Ãz’/Q5¹+"¨a9º;Ä_nȶµ¾c²7ó<¶$Ê£:gþ-¬†¨ÖŒ•¸Â·KIÜ0Æ„ž¿†«‚ômEÑ+qç·_yx˜ã-–‡‰:äî‡EìÎ+Ò# ±fžPŸ#òeü¤q·6œ91 ldªèñwlQÊ­a“ïÝHˆ Šb?K›qÔij®Xæàºô2¹iÜDÔ½=¦ª»ó — ÐQ†ØC¼ !3ÕUÜ\©—bë2Ë„GâMÿA]Òùìq ~ýº:S§N’žËž²Ûâ—¤]B²Â´lüþu²Õû> Em^Œ©”ë<›]ÿM;v+µÂ`÷¾EáTêHÓêËܾtÏTÒR<–ñ…ÅÆˆâ}Íá€~¶Û³ƒó±Í˜ n¨‚& y#d|è6˜Úî^Z òã.øØ&-‹´§qA¡8øüŸ‡ïò¤ýõ:_¿‡K½þ¤®e†0É¢•ßÜ*˜‹ƒ?ˆFŒ@ú¤ñ£»—W)•–!he;¶!ŽVõƒI¢ÃUYh-m‹{{ð¬µö¨Åç1m¹_h‚Û±ý˜‚`Ö˜5 :'½±9f³½¥ÛÒ.Þ*ŠÖµÃ– ° óWŽ‚Låmaz×dÈX#e ²Ï{KrÒá0²òÙ{‡ã€eÀ´!~”§Ç/·ïÃf6"Á†T1…Ïd­ùáàYæã JI‹ÛÕ”…)_¼§Cm€æY@©1 Æ8— µÖ2;HA"Rò:Ðὑ€ðmÈÀÜk’Î$^o•ÔäfG.|ž\ÛàlìïZ…ŸÌ˜OËPx*&ª¾}TÜ‚¨Žáh +ääùâÛEDØoÐ}GÚñæ‡Ð î3|“_ìØÇ1c¯eä/'¤­¢(öljß#[X{ïð84kÈÑþÔëã%Àâ2’±L¼7¨é±£YÞWˆ^ŒF@J'Hþ©Î'Ü›2´ôXW´éTJÖ’Ê~¬1žå)J5w ñ"G¦Ë.œÂ¥j×g\p)4´ÑpL«-–™ÓWC›h¾¶$ËÜ}¬;ø{¶Òb´òó;ûg¤é’v #PªH™›N­ýÙæùŸüYÄnL aÁpf˜Ñv`vÓΟE×J²g_OÒòÊOX ˜⋆K|§ÃŠ0”0Ñ&JR>× Ç`CC(ïc4pVÃ9„¿fá÷zAUÎfÞ9,Gö÷t^•Qñ"] àÈ¿_ôÒž¢ãÔèžÙ1h÷ÿè7ýj…סz£ÿ§w5:|ë$^i-DaÛ+«´Â¡Ý:)cšæ Y\‘ø:gŠê‚#Eº€óÿ¥˜Ê‹1ˆ~Û:ŠqÇÊ©¯8RÞ§ƒHèÕ¹WÀkí~béÆÖª·Ðþ³/‰¬éï [°DQ´¥$IHñs‘?B¨'œ|æ8½Ù[—«|ª·ñé] jkê.]Ö)ù6#» Œ¥O‘›Ã{0diR²a”D"Äôü7ÅÔA:æx P7‹ÆŒÆ–C&åò²f<ö0ÁÐü°t[R¯p“ìáÖ»‹Ä»ÆŠR憜¯b±SmKß5È=¢g;-ãõ‹OU’ãð›}¾º³j"‘Îýõúƒ>’(Ùhe¼wN­¯©Â|ª¡Ç:°ä]|ÿ,­„‹˜s2¿FñSAÜã¡+ˆÇœBµg^¼©¡)=†•Tœ$í›tH¨¾(7u¸ý~æ·&ʪAó­9e$˳ʇ¿È}ºj®¤‘ ¤šª¯ËF§ÚÔ²Ò•fößuʬe8¿Y¡öµ8 K•&AFï¼ð Ýâ‰"?-$“õð.kÂÏÙ‰[øT¸¦ ›Õ-ÖØêšóöè äåóê“5HxŠbT>¥3ù ¤ðò¾=sß G¸£ÜT6rÿ)\s4cÜ®ú­íg_²·ûzJzšM#˜PVúªOÙAϨéÚ8ÝU}aó8J:WÌ®5ô¦.Qû¥!ÆRns´Vî}¥ã#Õ¤l”~:yêpLy¤+žßT‘\ñU~ë¹}6Ê>5ÎbꆰŠ$þJÚrêÙK\³’*ÿ2‡Å)9IFîÕQì:³A,”=Ï»X*£®FÏó\<^+R ÷ŒŸ—g ´±#ÂQ;InMì‘Í£,‡Iü©J¢Åñ¤*¤vŽÒUÛdÕ·>õ[wµø…bº¶Šë5 ü†ds®Çÿm§ÉÜU9§¬k€Oì«™6„öIN1$x\SÅjBCÏk=,Ë ZËð”æj¯©žAäŠÿl} !Qˆ 5‰‰ÌѪ;ÞŽ²4^/¥Ô×µ ?~C€îaj ÃLnÈÁ1­Õ3ÕùéÅÒäu#˜àzwT@ÍÊw¬º+røcND²áÿ¹JÒ¯6ÑH.\:›*£6d5·—®O½a$ò(ø!M€ nIéXÆr ÁPE¯¤F1tb5ÂòrLç_õj” ËèpdÕk1kZoNÔµuB´ÉãÄEQ@;F2ÿÞÉ-‰ºÓd{½lÃ÷i»¼±<ºjd<ÿs][†ºgÎâ¦!ç Û)ÔU•÷ÌðtC”û(ï1Ø0³BYÔ”ºH¡-H•5Ç˜Û Š+piÔ‹ÑÑSÊz¤õ³SîÉÁ^üŒ¸û X9F+û\F]¹áÞb‡Úi#À6Íãüy=6šÖŒ+U’ÿ)äç˜GwÝúMáøt~qx“Æ!IÊ( ¿íÚDëF$‰æl÷ƒ½›A´1Ä8¦NéÜ@æ}“’F`u<ÐeϽûkÑc¢íw|™È¯œƒp¡­Ò4oo´_¢8ëc²·$>=T±÷»]ü";¯Âó.ŽHyºÙ@ÉP ‡w+̃¨+’6Žñºšâ(n 1ÿqGͽÇC¦†LÊUF/'IÄÛÇ”W{P¹nIÒ—Ù?¬p|à"RR`kÞô"Óšéí‰õ„?‚Óñ’ÂnñWÕ:îÕY®~]Sžò=mχÀ)ˆÙ»»ÖfzbËòb‹+ºà£/[ÿ‰`=©..E‹>…¢¶ÑK*ø¿ ˜“, ÑÝN£¼>'¤ÅfﯗPtò©'I$­ŸJÆö5ûãõµÉ&»Õ"œÛŸˆ¾okR ûoØyÔz·7ÿXú:üWs1Uóç¸HÃïZÊU–Ú¶Z¶¼—ñ½£Æì9?¶“ð^ÛO:îù?‹ˆ‡kHŒ(š«÷úÄĽ+¼¥Âi81jœM ì›ÖMý¡W ÙûW9L/Þ©$m|•ȵGiÐpk•‚8] ž=ÑÈ —¬êÚ)6z‚˜\ºÅ‰ÐÈÙÉúûáb•A=fÌrÿ]™²Z,ÔÃDÞÈ…1Xð"‡‘‹ Ì14X鱕ƒŒ‰,LJ¨¡7¦óóP£„½fÀÉ+}#¿:áÈÑLê3½~þñä[é0ðÔ<;.uy™!.Å%˜Çtþ¹.Úùî°3YžA nέ)ø¾rÊv !¨‰ïf»µ8šñS:b襜ÌÈ3ñ1*‚{¸W4È”¢pMtÙæca þïTƒù=çkŸ&¦qßS?ýâñÂàç£)(B  @eE£9þÞ‚!¤Ô‘Ž•›}hˆ…èëoWLWâÈ<ƒðâ;U¦¬ž va(fŠ'!ÌÏ>‹Ï=2/²:ÑÙ.pOYüéu¯¤â1Vjð™ ¥ßØl‡³}€P°´7·i¦)µ¢ç6 –²olµk&ýÝ£§/'œs6¥ð_]8P¥B¯Läx¸^ qêù¨oï´J“¤H5³EDf ÷øaÌOp¥Ç÷>O£^Œoô¬qéæŒ“<Â÷—£¥·]hj] 9gZšì[nK€ȱX(·†@¸Š[ù¯ ÿŒ•cPÆ=¤í~O¶r¸D´ ÙBÙÏêN/Ï›žãékž¶¶Ì/otåò£AeÝÂÂŒ èg40€Á·"„ K‘@çŠCÔýÉ ýcfÎQÉ'^ÑŽ¦íKæ«7GìX›kÝDlm¼°.ãך*HçŸÒýÚ¶Apë©;/ZiæÊá¼ßÿ¯ãáÃHáH@7í…žàávjñ†~Àâ"\Üõ¥Êð7䯀½Kf¦{Gôd}£†7@‘†Ç ,%è»ñö‡O" †Üàg†4£CAÁ#žcÒüÚ v;爓ãdC¸ÞFB³ŽŠÏ(kð"¸ŽÐhÔiÖºô—ÖO÷Ô™³ ²é¨t@ZͱGþ]3¶Wsr´éb"~ ¼‰Ë‡Á•1Åþ´ ¿[ ü,“ä\¡q[èÚÅ÷R!ÙcQ|SC©úxì¾½¹ÉµGïL/ØÑö³Ú;u1—ÒôIÓûMÐôhsó!¤øeÙ ¬Œ–òÈã˦Ÿ,/>VK1“ÉÇDPNõÒqž&%®s`eSðöÑ'JC«]ÿ¦JQ&9•Æ:˜½¾M£DµDY^s~q€°ŸUþíXÊr\ócp¿ž™LîÿÂW ã’E´é9Ye×iZõòåQã ¦Üò¿‹òÜñ-;~ƯiL9Iý}ê¸ mN.®Û??˜œC|³ZZ6 ÛŽtKk_ypèZigj¦ž£¸©?£cÑPõ¨sE[»üÜ×UÙúÂÏsZt;µAÄÔç–NKÇô\>)ÃmFBs192\[Ý@r\_ù– ³ÿG‘-¹ƒ(¯·üå¹ 0‘¯Ê]ZEîªI¿f¾)MäÄéÈ%_"„ÚŽ}­fVX˜è.pê8*~ŠMÃÌjz2Äìouæub:.ãHÕeŸÖãêx.¹S'¼®ö;ì›ÿÒESÜåjü”½Q? ITà8ëru9(Q#˜F;~ÜÚzðzìûûO"C‹QÛ3îÑа‹‡þ~2ðäþ»Å™”ð~L»½Y“ùPâÖJƹ“p+ìy2KɉCväIæÎCdñÞ ç¼Ì³{½-B†ìý|Y$sÏ7‚aº¸/Ñ7¬Üе¤ý„rpÝ;m‹do##Lr‚7æ<ç«€ÝÝÇh`rÑ#2ˆ†ŽT„n e + %^ ™qWëæçñÊȉ7Ö}Ü¿û‰º‘ÜJ_¹o S¤ ^ ´®³y¼wg%®Öëð «ÒD›¿{Ãöz$fØh^<ƈ YŸRÞ!G™”& qs¡p$¡¯„6ä4s ×ØÏ¬ÂXà¤û·±ÞanªnxË !‡w8© ˜¡¿Ì“ˆ5å2>ãI­3õroxÿš=Eôžœê÷R,':^OÑIÈ&=f¤åU²4øÿ×Ê;Ž’·ers¥j¤ÑH“ÔxÉS¿8 ›©c«É#n!Øý­ÿ£.jLtîåuXdRwddˆr<”¿v„÷0ö³gšWD¯ñ8Be¸î^Љf‘”Åyä øþ#6WA_nѰ¸SÔ*o¦Ò~øsE6DCä¹Ú,{qæ,†@f=OºœUâ”ã8ŸÕÃ2ï#H5•œ Ðh­Ÿ3eYôZ ŧH8$8Øj¦‡¼õ¯–ð€…‹ÂêöôªÞð ž„´›s‚n©ù®èìd5tl²‡œ,Áµ×‰4é/WìÜ!¶þ¥‰§ À0 ýúã}löN/×gÚ¡S§P–¶Iõ3ˆ sœ:D¶üÛg¿þxì.4è} ß¡ð¨X*‘µšwjH7¾Hv ]܃ŠüÍ=îéßÃëâÙþOyè:ø¾ á(|´ R5 Xö?píû^Ù #ú.F6IpÜ¡ZFNU–óc`®ˆ&æg´8Mä‚8ÖR˜·½ Ú”›nÚŠŽ{yûå‰r©,O])"y0»ñÊOÿ?P³‹Æ[l¥$ñ†6üTÚ_boABÝ(uªºŠRÅ!ɹ›pÔ8”~ÐKv`m!l£1+C ÷‚{Ôær¿µÑ ‹T¨r”=¢¡>t¢:üCGq4†=œ_$XÕu)æ9²ÑÀ9y…jRQ´&¢? è8j©Å‰–I,[OÙoòtÑX K™ ŽF2ßKêBW‡3”P`陫7òæÿOdËt²®'³H=øŠnÁƒÑ$ q .›²I[ÿ½íCû!ùÆDâ>­öðdµ…w†Pƒj±¼r'D¾ âú0‘n؈b±OI1 q"¯ÂüQ¡l›C—üÏ=ŠqŽWàbùNÈŽk\S/Þåôc#6Åü’T Ú|EÇ}A‚*ÀJÃ(4c‡›R,¸ª³…§úpEq\¶{{šO™ó yI¼ŠÑÁø!Ô†8¬“<øÅÆ»h4×qœD2 M yz‘ÏoÅÓÚM7°¼ží)DJÔAzë›N7ŽŒþŠ^¡„v±wÍŒüƒdÉÊ;DV¥ñAsùÛâÈ’ðvÀ• f±AÛPaÉæ¿kÙR¼þ°„ð‡\¼ws÷G ém/9#ÔGwuX;Ô`ðÓô˜W˜ÖHÇ Óƒ„“Ï?V\«æÊ›"ßcÁ_ä›!•ÿµäÒzP·rœµK—þ¤¹@üIƒʼnÄBÃ.¬Ôˆçˆ°Ùw÷VÖ“ÈI]™DvK˜æhÃÍÕSGäSןzúy›‰öðó9dEÑòÆA!HÉQÿ^S4paJ™îRHšš‹Në›òžG#¤~çA¤BP5Í¥Iññiå+DSVp¦‚/c.°Ý‚Tn Xê$ƒÚÒPáèIG#<; ßèuH£¨QœÌÌ! ¤Op­-Û€úŠf×ãeq˜`[xq2 Íý‚í³ú_eTfðT9ú‘¾·z>áì}ym!¬Ë÷F²l7E9ÓzÒÝSšoÔÁVü €QÆ“‚=ùÏ÷]Ð-…<=öòµxÖ_Q&̧´a†ß·°PT%S¼Þú«îEÿ*9¹!¬/žŠQ&Q.áÇ…‡p’P´ÿ,èÉY_`UlÊ*¿’T›´F¢G]õlI¼ ²R%‘J•Su´’±X¥$¼T†äò³rLj—×Úv±íÁ£Åô’0M‘ÙÍÅù,艕(Ú07\òÂaWGñhíš:Y¢‹[j¥¦ªwù¸ ÆÍƒð« ×|©à…íÏúWѹ{J­u:Z«¡£ÃÆÅˆ÷õx$œÝKõn‚£©<vaÄxy’†åøÕdÛ7ôî ™Eù­GþÔ†d†¦«ü‡7ɱQk±ÎTq«gM)÷_7ÍMð˜žÆn”içM°,ÛKm1Â’ý(I1J}ŽAÇ}öÈcRÿÛŒ¼)ü­Ê·¨mê4#Ii'Q‚wV®Ý[SÿÄ‘1༟‘|Bíà,úÿCoùµO*ÂFrš‰ä•4œþC*—Ô!«cÐq-pv¾/.›ºCið.—iôõHt[Txßéõ"Âe{¶®_Ý<;[$G¿”ùuÛ”ÎsςŽñ¥¿cF%§@§¨"T÷¶ ÊážÓQ0y2OËõ±YIp÷;üá¦wx,ðè4ïÒ®Aš‘öuK¾IÃÝ­°}œŽ¨k(—(o/Ô£}æ¼ &:(ôæ‹Gû´¾Á/L2Ìš³51xºŽ¾¬©ü3¹àð]‚ŸÃá”9KyeBêòyãÝ=ÈYæxy—âW¶^VŽÙìôG§CôÒE˜«¡çšÈi~ùÆ4Ü> £!Œ^¼*Gq’#m¬g›-†úìU»©n ÐXäÞå¥ s%Vaá_Äþߨ¡Öy*×¥lU,Qw€Ê•eV"˜¥Š. ?Ͻð´ša?ÔwúÎDÑRĸ8x\)x§ÿîbŸkØeüÞ5< 4§ø/¦ð­û:Œ Ýþ‡®CHi¯1®¹%b&ÅïN sê]‡Ëï¤{;úüm 9Rd"+È/NѾ=ÿ9ÅGåb¶9{åÐuvóäùÞ½K&Z½Ð³CÃùÛd‡‚¤,ƪÃãÄþÚúÙ—Aǰ(9kƒËî<6‡­Y}îè,þ’b…­<Å<ñ àRdœ2S®zìÈò@oÆ¢KIü‘Fti“ÈÈç&™=õ2©É§~Ì*Cîy7ι –¦¹C·óú^ëMûÙ~«5v$ð9 ¡° ¼/ÿ ÆIÔÕ7ýv¥¤#c»AÙÙÑöʾmºûWæÁ+t5ã㸔þ¡»U¯ü™ÁŸï\ŒU$«’›Ž ë¢ÀE’2æ|Ý*öÝ9CAÞú{úÀ ÿwҦؕE‡”ÔÎG?‡ÞÃoù™5˜¯ªºc%LvÛÞ1Î Ÿb“VSR±qP5$'.Á§® =¦¶¿ÿ\ÅÚ–ÒIÚ¼Žú_47ƒ.ahÊkn$2$8&Y ?8šô–ÿDøùÊ“Õn*x”FÓ–¾4W¸°× Û ­pš¦ŠTÛÅ+JR^»†µ!{Ãy^ž)‘­«þ‘'&ƒ­Û|–c£“‹âЈ÷ÓuQˆêçQŽ)I”4@G–s=Õ¬=bÂQ“Ñ?¢6º—¶n)Ï\p @Ë’üû èÐ7y@û‘Ó°.΢"nI8³á?{1úµ6?.ÚdÈâïD!付R¬Ÿ7ÇXª<äÐÀ–îý+w¾Êd­Öþ©Ô«aB><ùPN›VY$ ÙkÈž#K--d('$ã#¢s*&=üc9ôx³”ÑØ·Èö©æwSÍêÑhIk_៹dhŒÚXÓÒFþÂ9] ùÒ¼ŠûN1\“Ä.ëA@êm*5 R'Yö\6Û6­‘(¢µªä}3í¦¶_–ÄOœOs¿{ôœ[°’qJ5: ·Q¬+»aÐ2[çÿ¶c]RÐçR†ú¼ÉE ø5ŸúàØÜgP‘?\%‡rò66ȳQWêÉ@<šQq’A3±¦e°)é«úîîÛ!»tQà,€ÂÉÜE»`j .ÕŽn è€1ÀLŸË¨ÐÕsò°R{‰õì®Äqö."ê+a'?¡‡tçsY¡>E8I¨ëл̤Š(oòƒ‰ÎYOP ²‡"GÞÚ{ŽM¢¢ùjæ•ý±ÄÃåpÅß[®õSÆ·… €åÓqÕWO¯Ò…$ Ééáì×Þ+n#ÏËøŒ˜ÔŒËûåÊ?ÆNÇŒvd-ñ±?á=aðÎùt†LsBbÎJ¡¼Óâ¬á›]$&(î„´Q?“AŸµÄÙ[ií—v`z¦­Ü4ÏQâ°AÀݱ~ž+æšYLW#G–rL5Ö­žÿ[{.»A<ÆÔï“Ûê²Éfêú7ëµÑây¾“çîö6Šƒ¬Ñ9ßï¢=·Õn{”A£ ½‰Ì—h9¬i‹pBGPH€ŠAâÛÄqôsü>ºÿUSî šjL™»«U1™íÂõ_У=ìD ß¼œœ¡öüÇ›rI•`é© —©iÁpº@ÛnÁ`aß…¤]­H€¤?ꩬ ¿•yìsYo?û—1+Á¦}H1ïíjRµ?9¿äˆè­öy.YÕÎ|3GéØç9ó¨Gn‹Q5î<«ÂMлÅÀPðN›£éù”7 [C*=µØtúHÍþ¨Óõ¦TŒ@ŒçømÅÝþ1|ìÅï–64 %TŒŠº.‰ 0Œ‡:çfü‹ó/ !0%àý®Okʆ §ùOÂ~_LÄ…Ûkd=˨dhNˆŠ'¡â¨W)—R$šG¼LfÎ7+s¥`==ÏËyÏÖÅM¤Ö6@ø —q@Æÿ¶6ù,íLá·—³Ã ŸDÙÕ5°c™ÑvÆ®hÎRžŽ õ'ÕëtÝÈþOþ‡ŠzB„PB†’&;9ÚSâ@|¶l-'Èï’m§ÝÌíjnÃx†ºƒo4xsŠŸ8‡±½Ë5ÞÊÃú+Š£ãÉ¢[ÂFíêžr#JSF:«ÊB]‘Ÿ@ae¶¯‹\sÄ!Ÿ¯‰;&|”êã{_?-?÷†ðH˜Ç…¦Ü™³»fTß²ŒHá“VxÿVCVÛ¡NÄ÷þIZÛ2âe?2£Rœ#pƒ0+ÉØeô%n+øÑåÝåÂÐǽ\ž]ÇQèÆŽ­›=—ƒ‚;6‚lØf „Áï}#¼y®‰‹ÉH07µ4 EŸô×ȘAù2UO@ÝÄWÍÐhs €ÈlÁüýçqÌôǤº†Y”UŠæK-•–¡«÷VÚ>·Òáqo{bÒ  ½è×`Л°ÊÇààKûÙ®{ò´…ÑUYÓM%2¬s?<9üõ»tB¥ßÂ@)òˆsdÍ÷B”÷£­¼pµJz¨·²ö™Ê^®€¥rC Ö1€Œ•EþfÏÖb1ßzb^:yøñØÃ™Œ‹£êÝß|}:ŠÉÄP†qß‘1e¦/_¿q8ÂüóS!0ØÀay£} - æÏNŸµpT§]÷œÝß/¼u æŠt«‡ýùŽf…éI…W¯¥aQÑs†½Gů=r5vËÕ1=^uÕ{°UÅ>NlyŠ!¯Jˆˆ&™òçã’¹´$¹ì!Ì1v3ÒU‚WYbµ…ÆelˆÙÅzé >/óº—³úÓ•By©ÏÅÞ“û1%8-Qøï³dÊØ²\KVŒ‹g<…™‡ð>›Qá$—Œá™„™$î¢mB\¼”$j“üš&K(oeKhC±)K»V.“¦±¶ê`Í M';BS-É ô{Ü´DGÁXù˜BÑÜ|ô_ ¡æÝL×Z-R_èÞ\‘‹½dØN&ÙäÌn!Ê#Ia âkö[No¢Èͪ_5BÑ(K—Ž ^\CG‰Íä<3Hé#žhºЙL¸à`Æöâ2ÉÞ²üưÜLoviÑ4ãÇðdÚ®súdù †AA“(E!=œ÷x#x@6t0 "ÙÅÞ–ÑL\*Wõs|rDý[XZé^.@ù7éÃÓÞÐAP<°:5†ÓpZ’ Œ">Õ݇e&%¡œgHÅ­Ñtµ5:–SÐ{Ût.KÄ|­FŠ]uO}œžOKõv8%´8Iz¸“¨ø—‘ b«"F;.œTýžkÎìÆP‚'.¡—²k4÷G©¨‡"ë6þsÍÞñCÙÏI/ ï¨‹Kx\Qî~5‚eCÊãÛqU¹aêN!Û§Õ&W3ÄÐ]‘anå“'·¯d†°Øýó:zÔÔa9êäÎ<÷,Úc00À×’N‰xßfÂé”@Wžœ?£ŸÇ©8[+»2Zaš¿õ¼g¸²†ñ)÷Ä¡(¢(–ç“BB~‘Ïÿm@€‘…ý'McD¸ÏBùhK'qN1}¨ ¥±}¤üãã¢HÁšÇILÁ°ÍÑqe•qw£#X§Ç@HÚ¿Åmüð¹Û~Mù¤n&ʤ°{m¡n>9ï9Ùm†Óüs|_Y¶÷×*Ù£w›«Pþ{—ÄåW,üR‡~ÑD)J|÷XìÈš²_pî¦ãóçäŸ\:åò{'©Ú2»~8[ßèIŠ`¹ä3ãÔRE½¨AlŒ…èd¼µ·„]t5¹~æ$Iйƒ¼R·©Ø4-6µ\œŒÒnž¤?ŠsˈƒÄs2ª‰(vúY˜D¤-۱ߪ;„½€‹„“QÑ–%šÀ82$)*~ÙÞÈR@ðð3Ñ”øX­ͮ_À‚A(B­\Å#I$®@‹Ýµ{í«¸£ñˆÊ9é—n#si:ô•%ª>î!:=€îLÍΚ@«Òr'F¶Ñ©üÛtØkÁ~ö×ùø& Ò¯úׯW‘xoí lœÚZ´Ý̯Âì/¼ â tBt—# ‘ýdg1«¦û/†âwÿYfôzt‰r¢R/ÿž%[àh ´êºú‹¢J ;®‹,0®ÅÆ<‹›H"ˆi´ç”ÏÙk‹’4ÛøU–‚wç®Ç:ŒhŒ>Õdbâì³åXw=¤©ÊÔuyÝÊ9 ÿ¸Æ½ÁJ©kvn™÷íh‰fÎÙø7ŽƒHóÝÞ¥¡ï¡"Pþ®µüp)a®Ü‚ò2ró¡Z±¼Ó_̹µ!ËÃã˜0Z"¾LÇ@é˜!q«³ËTÏYEC=œ9úÕÛZªb8>xA|.oj»Ü£6pèÃÙï"­éiÜ_îjÎÿÊ]–˜÷Yº[KÑ+o3%¨–=ð¶ö(üÕ_ÇIcǧzNA€Ã Õ}L-—†ý+ýzŠÊÉûÔ[š4ïéç¿^¯œ´ÛF –pXha)Í{ϪíZŽke’%oºˆåJÈöä—+îHÊr‰­‘á1‚àqÃÈm<ã$lR}Oñɳ¿Á€Ü<ÜŽh÷ÖÔ:Nl½¬À–öGóh‚:V%•dÌ@gO Dÿû–Î3]¶ÐÄ—l´ ˜„ÙÆ1Í…ÐÁ¾«G˜õ’U®–4õŒ^Ã59uÚÚÎüñq]¢ÿÒd‰¬dAý@Ó…3Ö¶ÓÒDwwî> ë?\–Ò-¼A ù¤”ƒ-Ü´ dë6p¸³ |ÜÏâH”O)%cO´Ñm7oB„[ LL2£~ù äᶃ$šÔ™°™Tݘ£EMvL––*ØnÌ”½å¬ÙÞU¢Ví¡aîÝE+eÂnÃi•(ÖloYÑ·W¡Ð—j¦ŠŒ’Å ½†>“aàÚfãaèëöúWºÜz×<éJظ¿»pªŽéûö¤NÁDÚþ'nî’K¤ü ¨sõîßÇ|ômƤ¤Jæ"zl×±²çÚ.Êà)ì³ޱŽZ#BâaTë"ÏÇξ~¢Kü[A¢á1Ì[×,?=¯ wÙëÕÔòZ» d_]Réûög×ckçÈZiï’*~HhçÏìVjLæLp€qý¨Õ‰éáTµ±å¥:ä/@Мs¥¸á«&¦~bâ¯Þœñä8È ±†ëC“+ã Ö”+Q5z _?Sºšfö¯rQ¼ßÝCðP&Ï0£uÖk9‡ ¯‡c,‰’‚‡wUMÂß5¨{»+ž#Iù74ÇNÙª‰Ξ—8ÑglVrŒº¸óìn30:æt>ûÇ[xMO–þW:õ£¦ÔÒªKÆÌ­#"”(\ïc^Ùìw+}ûRêúnæÎIŒ¡ðf5lO›«Hà04HŸÕ–ww ЪÉþ“®k~k˜žÎ¥ßZç;ãw[Å>˜w7’úO“[a®ËÁ`Ñï$°ètן°É¨èªAõ»(RÍ4õ1´ï ðìF nÅe`ÿ‚à¶—#ç‚Ìó‡ÑÀmDŒQ®1Ú/z̾V–Àý ßÙ¥mÔðÞ«œV_&L€ ëŒÅ(·ï#K¼C×Ô ßÉœ%°” /¥Ë¸v+–"Óäo¸‡´ˆ%;Ͻaz²·%ˆ9Á2´qk¡ÆŒ~LJ'Olø„Œ~xÁœÄ€¢ûƒ98döJn±ƒ•æó³q–¢Ê$‡JQ䪱.(Ù&^áϼì¶ÿ«Ú}-žah]dà©s9c·Š]ÍÝpY˜–ˆI°…HHN)ª3÷öƒø¼—ñüVçr]pÌK)i…µ{äC"‘ÐÞ¶6»üRK–nšµê‹uµ4døÝ¢s˜‚òÜ“ÔS¸ÕyFµU‰á¦bÒ%Ч"ÒÅvÍ|i«A³Ÿ›@¦mº ­çe„8„>ÏqÞÍÖ+G·t@i9š†r羂E¡.2aI.¨ '1°¬âë^…„9”•50ƒz´8&Ê20á -¿’¹½Ì¨(ñ¬e¾· ôeöîdÛÈ‘ô^åb±$QUàËœÆ_ôKqÙ]Obä@†ÃWç¡#¶°ú\†s8=®¶Ðãµè-’hqØñŽ.-T«jñ$F‡@Oeb ´Å[AR(¢$êæŽ™Ù¬†aT‡pãjf˜&·ìï¿êÜ%üÃ×D£²ù†ÖÙR'gç.y\Cukˆ1ͳX\ÉaΫ,çs|îbC-XÀî?âÓR„_Se% Z¨MÀ”tQ¹,ØÒZLU)~#XNàN¬Œœ‘T¼š†vÕ 'ßCºÈ-âW×1ý“®ÛNA……[0ä"ž(º;v­ËžÂ¿ ª:Ž“‡‹lV ~ý®çºD^÷•®eLA›WAò(YÒ“ÆT††*J>£d£ge|ÈokÇÑL•">>ÓŠ‡Ý­éxóñè!HT½ˆ!±7½où–˜Ú&}̵GÉ'\µ&ù4E k“¹V’ÿ—«ÕgÙ\HÊ?ŽM…°ÕñSì¤ØR4èJ=7}ÚWø’'Šò¼Ý&Æ­ÿå¶ ¥Æv÷ñe—QQúèR”§³ÿ}Q~¶MqͱìJ®þÊånНcð‡§­¸3Ó5¥§ïÕ:&ú5w€ß[GPh Õzv,bš"EÊ-Ž¿B¼@™àÔKp‚ DÙ߯ze†™ÑøQmX&A Fá§ç5|6VC,åÐv ÍDH »v¨»ðn†¤\ñHJõŽ]`¶D¹K Ê ƨì&‰Ìù¼¾Ð‘¡Ó—•^µ`‹¢ls¾Q±õ2E‡˜©¿ŠgLº`Îf-`ù4'δç/ª À­q-B8çfE‡€ÎІ´’F ÀÔ=i¯[šôp+í\.¬†Ìf˜I%z ЄR}‡­[Y¡!n¬˜l @;•¶¤‚þÀ aü!?ó}: 0† —L‹3×)&‹ïÊ}w¯ÞwA îŒq¤1Çùb’Bܘ“K¦C›é4Ñ>®-å/E»ï£u ä)zDˆ¬^ž˜æj^ì44Ð÷7”´Þ†ùÕràêûªŒ{Ö` J¥ðÓ CÕEúfï‡Æ†ä†Sæÿ é=Õ9>+UìP¥‘½²¯bfw±TRsYå·GX@iÎSäI`Hë[˜vô¦¿û@X0'}¬bÚΤx¦É±OêÀD‹ Ÿ7V×Á ñ5~½vÙ×?Ü—¹Âé|ú]\äáéëz“å‡ãt®õpƒÁ[È/q~‹ÍÅ+°‰µ;Vøóž³ˆZHÑ_¯[ðÚº ±¢ïX¶¤\§”諜Qµº:ê*"¢;ø8àQ“HûéÌ©ü-ëÛ Ô‘¸ÝPaôA g6·áØO`É…¡"¶öã¬Z ‚w:e««ƒmN¹w†¥9öÓûäÙ.ò9ˆDãêäÍÔµx }ÐÔý¦µX@ä‹fk7‡'eÊ‹SÐnuÿÝ‘Ÿñ÷$Ê£|j„ªÂÚñg½Æ®‘‡ô®e?ÍkÞÌÉáìÂôùÜ÷" ¨®®ÍšSôXì·öx€µÆ,Š:ðW™@/Æ}«¬œÐ?­wüSÃÓó'(ðæ¤€¡IAºåeUæ Yx®ÕØãÚûô°Ž‘íó.vÚ ÒWÌõË…YÄÀ½gˆÍ3ÙË>LëSèéô‰iϻǶԼ .ÑijêÝë×Êá9»Tä&¸“$ïîoÄîm2Ƚ" —rœß%‚"©ë2—=‚ïH7ˆœær ÊÞJ—DUüñ„ß˵ ÿF U˜.,A›$q-äêÒ™=²/¦ÁØéáßÕ˜ƒÑYZÝð…‰óv]µ".‚w‡‡yÁ—Ì­¸ÞǼÓÏzc‹j¶ôc>"ì<çù;ǸRËû‹±Ì/&g:fYöxÏÄ£±Ýp/¯ï<`PaD’t-±Þø‹ž ãê›gùÙUO2_xq³a™¹bJH¿œ_IûV½¥°÷ ‹Ê·!_*Z©;¥Sé rÙ!B*cˆa­W!ô PÅzIjÉÃ`RDÅÒ_Äÿg’¿äÍ¡Ê\Jq-ü²UÊYS!ÙÎAW+_€ÈZ¤²Jõ¸inŒ«™S7c†a1Ž‘8oç½ûwrGR¤0 Í]Ha" wŸ’&ô7,0“"B¢¨9T¿–Èì$ÈÓ¾:ýΖ€¼„¾É‘¥÷‡f–´‚Û]Ë¡<~«pWâÈYJ~•Fc[¼'¾òlf‹ý4sŒì;f;ˆ²FHœÝÖè~WŒýÅÕ¦¡P+üÏÕc0"¹ ¡v«ýŲÉì@ÔÂÿ®#X !Ÿ³° ŠÅ#š)õ¿;hb‡Ê,±EùZ=T—Â24zÃVåÎI™4§@Œ_î¢Nü^ʃ»XVãé&Ç ³s¤%kÙzWÈ/‹¥¦U¹t/è¾èÆ~;Q0e”·.ª¨2Dè‚ùÓèyjíÉd€ö2˜÷QwH Þâ 6œ§ÀC{‡"tñÙÆîFS—VLJÅ‚ýÈÌ_á<ë-ù#4äJ ¡h5äuQ‰!ÞÛqeNHÖør@´q²¥C={ØÄ±@{ÒÿÝ,~Ø 1 ´rÈ)¡ªLÉwfÓ0øÃµ$'F$ÑÎ9¹¾xÑ‚'™t!ö¾“´ÅßVLJhÃw<\8’fh°ëi8[™GÈlþR¯½ëõ _q#¦¬uȇ`ò˜›ù.ÒòedKÐÞ÷q, ßq<7?Šm V%”ÌX4¸*‰EŠ˜ãÔ¦_¿JEÌDÚc'ø8UEñÓÊ8þkÚJȤ‹¥)òøÞšXÆCNPíüÏ\ù[E¸m”WŸ)_´ˆžÒb>³1¹oÖ̓1otY½Ó\o1çïxQŸ#‘tX«ó –Þ™h¬ 'm¶DÉv'_Žè‘|[É¡`XÇ—ëÑ n¾×Óy:7_⯋ß\g=+ͤráS)_R›UÙð«r†wÕÙ3eÂ(ÚMBcèyç תaIZƒfÑÖŒtw£,+ãÞE¦AÌÌh׋9•lÂZ"îjí-cì¶Xì¾tH‹½ \Æ>Äri %¡-$2Úfòî›hd7*O# ìYÀ÷íMb–âëõÊÊé‰é_¥‰Ò-%ÜÑþ¥ãrâM½"tûKçèO7,X—T@6%)j.ß iü•o;Ûè4êåÌ×Óúë=–•ôÔ]쟉jÝ»+G—†ÿ‹ÑþóÚ%ø Sl£÷ ²ÐJÒg¦V¬aÿÛc‚ëBÄ„ê‰åÏ­÷þéòéo<ÌA™»ëë ¡$=’û ¤¶{XnÅC‚M¯G ÃmÚ.DÔ—D‘á|[0D=Í „ש«Îƒ¹ÑÌô·_8’xšÕê KžW¤gÏýRîXë„ÉÏT·Ñ?Þ„Î\WÆ„õ„¦¸ÚLy¸¬D}€£™ñÐòO#0ôÃq%QØâÖžm¼”oÉé46íë¥N56Ò§ÁÉ'V ]t1Â5Hbæ*ÔEþ>)Òàß éEDä,•6lñùvÙÖ··û¢ÃJƒì£,Â8f3zþµx6–ØÚ‡žßßÔÃË’öóëx©…ñ•ùgW_EKOüªÕtù•×)IJ RðúŒÒÉûÿïaݧÌaÿ$×z“ùYðt-ðÁ¨R‚Á§ÒŒä‘l­% ñŠ>ÅiÓÆLAmNYc+FpS©fêr‘'Z£m}Ý9y¿u%hlýÿ ÏEêÃLÇ*X[ͪg;Q©)$K‰ýÿJÕjRåJ™Ý[°ò‹ yEÿå}üìÖv©•ToÓð9ŠÏÆ»Ðëq44wW«§ !þ ÊS0ðÖ¯¿•æm1ý‰k¢}VøÀÂ&¤~(I™y±%—†çqùšÄܺOò»0M[ŠI0ì¿£Õ%â8¦ü<­d»[U?õÞŸžžkSá±A£èQ„Iî¶…l´£ ÞfY£&‰Ì-0ä2ˆ6I{e=E”“·á?ûÑîœÚ'ÔÓíæ£û»fÇg’&KÛä´ïsÏQ) $¡µ·Ü¢ q¦)¶…=»fa‹1³÷Ïpp? Iâ'(rÙÏ,Ùa”ó‡L‹$”«Ú‡óþ,ÕCW$*¿éM´ÔhAö QcÛ¶‰»3ì) Ÿ;®Þ®ß+Žjšæ\‰+V¡ÄšÃ²)ü¤á?}§°¨îN›Á4ß|,_­Ò2:XÒò»šW¿Nà“äx,'¬Þ=ž5 â,$†¥7ááôA–Ä~?µ¨]ó&xì1+PÔ^àÁa;jÆͲži³™ñ\Å*0¯b…¡O!P¨HßîÉ” YA ¹–TCLmÜñäLÏÏ%t+w%ħd¾±¶•dD!R ?ˆB¼Í'+˜Â -h÷ô1g¯˜&ÏD’éÉ1§0ç,l<³Ó<†î©Rð¨•0¬ˆ¹ùx•B#$ïçE€ê­!+†T!0ŽM-\Â4†Ï±è·-ŒéatEÌ$iÝaë@ˤL’¯çëÛérBy…±¬Ñúoò‘Š@€ç,mÖ :U˜ËžçñŒab[û/\Âîía-9ž,0BS]ÚÏíšOkÝiÿ»L$ùº4Jb ¼íæ §ë±*°_$Ï6iTVMíÊ0 Þ   ¼ ¸’Æ %A<{$LõçÆí®šËôû¯§Ø¾×@þþ7ãx:ò5)Í¢k=_›þ&ÿFYé\^n»ù—Óg æzás~9”—#ͧþ°l åw8[rôÁŒ_GÕ|'¹sbÇèù`ÅwÒ<{=|ú£;ºHÐß9Âi2*ŸÍΤÕ[•á,NK•¨ší·˜z1FRü5tr…œß?,š±»" î—9Ö½ê³Ò-‹ãS{:¡½-é ¥%σá\„§b"–xîTA I8Y 2”£/«:ú•¦©ŒD1ì"P"Mß4¬Àþ)ûàÎØX@€ ص r3'fA³óå.¦ ÜЪµ1¶WÚÈ|ò•i`ÐYÄõèû8?~ºs/UבDÆcZAp~/͉l(‘ÙþØáðµ†h#¦!~CÉ'“1¦gCK&``?â~B'V´juþâ2 ¶åÊ!¼¼ŸŽŸMÌ#ÄeL‹¥]4Ò(1$™³œjMêAgl±Àºé÷U#]NßF7ïžSñË‹…“.½WÁQŒméÇ(‡â‚´Q‰ ­Ôû ÝØ“ªcvztöRJñ®ÎnÊ =šºÅq' Ö³ü²Þâ ïíƒ(g„ÒÑbÔïâÀ™@º¹°oG“|àvF€Ù2CéM²ÙCðs…‘ª€ðÚ* {6q°;‚¸j6µDõÜ,›ép¢R—?^4V|OW<èòª2Ç¢¾lcúÚp(1ÓV»òn6º½ûD_rãLò;¤xr<„d•Ý +æeôV‘éi™Õ/ðÏÛËŠPœr Q眲¿¿¥£îöN§X#HÎ[’:ŽP56-mmˆM.Fjâp_‹ù×%·qÜ*ìI'ÖÂ*’­jmïÜr©òà$,+óÉgõ—zçuÝÄ%¼káWÎb$É3 ZàQf¢ø_ €WtJ…°ˆÃ Åyd/J¢èØ]`”4B. X ( ‚8nÞ”¼>1‹Â"ž&ç¼\Q]íd p¤OË"dNÁËïQ¬¼–ðžð´Œ?å‘Eb¥¬aúÕ œŸêù"ü·îô¹«ô¿uÃR²+òô:{ièÞâ¤õ{©ß‰’½œ’hçÉÍx~: ¿#2` ‚ûkcC}€ýŠñb<äXÓMŸ‹>ÿLœ7P¦³Û¼Î"1 (á@B[B,×]4l§®´Eµ¦²£\—.Gd¾MÙeÓîìcçh+EÃ5ã%íÄh!!Ziö™r$î¤3±qK ~2¦°©ÿÂø0}¹R##j 'VBóì*á3ÙÅSñ§9ŸÃZzׇ¤Ðà—Ã?Ù\ MØ}$Á† :çÂY¹Ü”Ûá•>m¯çp40)pþ QóF?¦Ë_fÑU ÷Æ¢‡HÒ1cð¸+Qãë[Î!óŽË[Õ¾tô–ïØï[2÷…„!–ñàÆˆ ƒþ e\探fV.±%Ç{º¡üê>lºRæõÕÄK—²ßžŠc/¨AoÇð*ž˜ü]ËhxÏŒ±›“ï]ËÑú±óÂjªq&ÛænðÓz͘$ÙeŸO¶@gWŒÁÆ'W4iM o(òÐHrWoí 6‚øBÐØ¾÷8ÆàÈèü^3’ƒcù•~ã/f0«ÂL:%•»ÂC8ü0ü.Dï‹rÿ¿6L‚tGPRéus:h‘E XªF ¢hNk±¿x§óóÊT» %Æø±bB»4?.Fbò^êÇCŠ¢€]ÊÕ;7~VøoH¾5o“"û<šŠØ,–(ö›²¦ŒÿB[<¦eŠ¢«Sõ§¿jS¯}ϰ0êBeðw§7ûƒ¡eÐåŒBÎQÆ=p8Œ¬‡ –—>~úÃ.Y’awʘ1¿å¤ œX—”><ÓÞÿûw|ݦâ¢k©—åÿGBÎP¦¾ŒÕþ®gÇ!WL×5—B=ÜðÙGݯúÔ€¼3Þ•þ¦ëèÊͯˆI BjïÌÑfÀàÝ ¨ñ Oº[Sƒ?m»÷ü|ÖÊÓ_mŸÉêG‡fi’ù¦ÖNQÆ$+Ñà†ÒžSú+–Éà †À*“!Óhp¢ù?ß¼=?ž¢dQ¤7£ý'c#"u:<¿p¶6oæmøætö˜ŽÞ@ûËFóbœç¾§4œ*2'ôè%¶3—A‚8È—üqÒ§¡²’z+´NùÃ.ØãgmÿÒ †v Ê“˜:¿¾†¾NI›ƒêIbÙ‡@hf¥ë˜s  ×;ÈsOjCòP< ºÊO…s†[,5’_LºÞÿ÷ÑÍ0êl‚FQ ñÔ¹çË?¤I3ÔJ<ËSlXÎ36-Q?ÛKퟅúípÔ’&òb»óÒŽÈTbB¹äÐn‰Ã™l;·%¤–õ~ïÆP ®D žØ×alã³ýÐmákã÷éeŽì>eöдYî+À„P?ì{X )ÆõVÉÄ/JÖ=L£N|û×ðÅQ.ÙÑô~Åo×϶Ý,n¸»ß! ¤;,×aåŸ3gòFèÒBÓYëV¼ç¬âÉкãšú@²ˆ!4g Ð›ÆÓN^ªL?‚¡¤‚½ ¼†#Zª’s¾u$ŸS2·¿Ûð/~Õ‚€´Ð&… {tÃyÀòsИ' SÂÖøBKó·˜TD9Ùÿ‹ì±è.6ë„A"@4Ö®… ~ÛŸ.¡LNcìw¬;>¿.Ù'Ž-9øž±9]y4F%üjiuñ§P ¾Y¢Ä:˜} „YŒ Êé/±ƒ­ü¸“•?ÜÈ»úãBÏ] ¸È@mÚT£†£n$cÉ¢W‡ÊÑfs8é®Uq&6]èæ Øegü›=i±ðO?3+íË‚ñO©¤äÑD^³Õge›Ä7ì­M7Q¤ªÞQd1ëV#!ÕóN°ÓãÉÛ½{ö½pŒ™³µØ·àÙ‹.ð0‡A ó¤OC™`%O¹‰]FãÔèå)H„8 ð§=.aù£(1ù"ȉñ¢¤rgpCʰ‘Š*Åi—t@÷ŽÔ¦8Lz’z—)š5§›nþZ©“ÎiÉ("òÁî08aÛ*F˜%1÷›?8àÐÁA¬Ÿ¬ð7õ-“|åN¥Ô Ê¼ ¬ýŽYŸ:ß©F¨&Ü%1ÆØ@!ûÃÓkp·þ°¯;!“8Ø_“ê(n}êKö&úãoOE•…ÉûœZÌöä~;×É“üÉa@Óöûk«¶ê_n+rílT²pÙ’Ö»Ïî!¡Ô†õÖ1bN>£»vbÎÞ:Ø­yîPõ)os¾£*Ki¼%¸þŽ9ó[çªpÚÏŒ†„·n|–ÍÔÜû]kÈÑ  *(ƒ@)Óø¶E IIëÎØÌ›ªñšÐ¤mó޾kÛIÿ M tTÊcÍ$ãÔ|ÁÔ[ÛŽRA• ¨¤ýsÉQý-ø"ÀúØzßUýÀ›8÷NÌ}~N>AXI‚òe€FGmÀoăèË ª6~=Gû¸çá<|¶ë^±K u]Rƒ“XEÔR²íÓ8çÖÌsŽêõRùOŒÇntºq²câ(“Iù F¿4wvÌ߉ÆeWl´mRЫ±:O4ñ_ ]ÁÞÀWNÉ–ApLÇÓ× Dì(RÊ!VŽ9Ì:•®ò®‡ŒÏÈMcOä_lØß£›ØììHœÖžÔ ‡/¶F£ h9ë¹ dëŸá‹A—l®äZà»vÐØá)$u¶t¦·øL¤KIà[HÄä×¶¹ èY÷åÊÖ¬bÚ΂¢‚‘ID:ê!îØ|ë§í˜ü/)ݽzÛRx¾Æ“Ý^û‹Àò*tïCýQñt’`'f5l¸Šs'ð,/¿¾Ém ]i®W5¨‚ ¼:“¢/ëÊâê%¸ÃÍu0ÓEõº»bý(°F€è ÈxP⸟AalpNŽ$H^‚PÓ— ©!C¡hR‡^û^\JÁ˜Å+¥Ÿ“„”½,ÅW„…ü0{rR{nˆøî¿»,T^¾•S­¬Â—\q­y×Ö¬2å{¶!`6ÿŸvF(I-d‰P ŠEt,¢uÉñûŽV“•áÊÚCôCy„Û´5© ô˜|f–¥´ÃÌEkÄô/HÝÌÅè2H¦X‹+Î>©±SÓ!¡ÂRùp83·6­Ê[ƒ›2\›”š+mJÛ¥ùî] IÜ›æ«pmšXI§|‚¬r¹c²t;‚Äqᡞˆ¸$hn; ‹Øà®_xíŸ6N¼†*‰I©%!úÍ{Æyä¸U‹×3×iPuÕÚ/E˜óý¯€Èà  wq ³Ôm7'ó’ÉsK )‡»‚kç<­Œ™¨iËxЉ¿¶ií›Ât6½Þ‰h³V“vQVj¥ÍGdÆþeçêwï²ÛÓf³³ßô<'AâHsïÄ¡C’(ö™xªhÍ™eãRÌáš&µuû6Ýݵ(£pY¼ñÅãýš$@$“šÕË¡Ž=çRÊúc±É|qÖã§($HN ÜEÓz=gÜZ”T8|HÜhO{4¼gÇÙ¸Ä_bîÕòé’-¥“k¬{CÜ(hhâó–i$“s}·‹5Y¿?´­‡™‘µ.é c¼Ó÷ýM+Ã7ˆy%'šîj»ëS·*¬ˆŸvKÌ;Pê?"¥ƒü ·$“Pg„÷ò$d”ÚH)óšS˜mãùÐÆGÚýˆÆ‚?ܶÛêú{I. (‚ÙŸaÁs))d"L öfüÖó²H°y6E ³‘ŒŸ?Fî45 eÜèRû;øÞ“äÀèóÿ}Ié*Ãm/­±œãni3áë> „=Z¹o1âŠr…È›Ñ÷s˜1!.„‰Éжdüås‚`¿ F³:ÂË+I\âÕÍÞW"Mûç×.9½V)n"x¬÷3eºj\ÚDÜs§ÖŸCzAÇ Ù›;Kç[nÙìæäÀ€|7…îÌåëð…H€èc ¸X[Í»3²©€u‡¸.ùìfXõ›§ë7v àüö$0 #ž4Ï@]ÆR®½ÊéÛéleÉ&‚âß9\‘¥¨Ñrf¼à5³ØsŽoŸý§ÄÝ)nÛ¯µê½çSÄEw+…dÐómNK‚Té‘“U+ô=w¸G²;¥°Ñ&lÏ1s‡Zœ@u ½"W/Ù¸l0ŠBNï£Õí’ß¡º›àÜ|«ˆ/·åŠK‹Kú?Ùµ¸î>’g¿ïx• k8)õ0òrä]Q™‡öoÕSvÞÌ›¶ùçï‰ÏMbðѰ»Ü¹eƃԜ¼D.ÿw)©s(zæi¸S•6ÃïÈ®óý’±Ë_&íB“<3èü³\aïËÏ%ØŒz Œ`¤($.‰äAXÿ[Xl€Ëd›:EÏìÚWK5nIŒõý9<§'Ö2Kˆ’1ÐD¯ØÞÎ *EúÏ uîc¾ÖÆÝÐÌÃ!°È¿ë²æPÆ›’_èCV‹…‹àûø`2j2¢ä–K¼Õ¨Wl@l>ï–b7C¬œt(bØÝ‹í“nW–»êYòÞd4(ŠÅW<À;ÅÜ;ƒ^•çüÊV½O|Â{bbÔZ °ø*¯áxô8Nä7)þÖ× <Ä“Ñf]–øëY…ƒ|h.Ãò<†%"['‘î 'ßÔI8`…nÚ–¼•/…A°Ön9ÁïwŽù^†·^µ˜ëÉ­¹aaL<8ño›ËúÈVþ±—ÆÞïÀ·5J?Á íæoË!‘s÷¬”Ú’*\k-åÜú¿tÜz¬Ø$Ü—Œ •¨-¤~3ý8‘Ñ3 Ÿ™¯É¬(ƒ0j$mn'ãdýˆöðÚçDn¡ÈÓÁ>âOÙL»%à/Ùa xGL5O'˜‡dÖ †È©¶°«M½¿ cƒbDiN•êç·ÖœÂ¸cJ­ƒ¨éTÆÀ §ŽW­ 4·;¢Ϊ–Q×í¯Ã!Ûýг©ŸMÈãxöy¬=ivçáÔ3¦m  ‰YÙ*u,-ö¥‚¾¸¹‰ŠÅŠŒ"‰­rè;÷Áa×’NqbDL–]êùŸWÜ®åJß¡éÕɦl…çÐóèh¥Ãsˆ]¯’%f ôB>w\å~r.MÃèÆ¢ñea…‘[ûÝ!Û¤4Ò]æd«RLÊÃD™¶±ÃZŒŠäX•9—È=£]#Z¥¦•þmvlýþi¥f‡ J«ôv^9˜­ã6{ÇŽ%ÊóªOáx'-ß›/7üÊ`žÑØ×,ÝÜAjóŒLG®­TÄ*ZÎ\æd‚)âÄUÈcjÎUFu©å'>ôDv¥H©r6ª»GQ¥G!¶<WŒÙ¼EÛ 'Ö¯‚…j#³¹fL™leM®ÛäX‰“¾eÕÐö˸˜¬¤„ $¹÷3lðwÂ=äÙäŸ(Њv –¸l‹Ö'iÄ…«+%`±°¼<à¯4f¥®hÞ–¼8ˆ‘ÔÝÆWÐÕŽÃH€f' 9žTHU<Ö"÷#¸É5(,¾ CÚ–™ãi£ÌéÿŠ!£ ¢Hd0 ìèÐ-íldÖäiˆ8é"õâMM™^N뜄“O²øßºß[-‚¹Ò«n’¯†@¿ÜB­¸€s;Oû¹2¡¼`&¾e”¯Ióu¦aï‹§düܺ 6 ºßII¿<‰0UÍOÁh¼Füˆ{'Ê£•§¤Û•߆Ў¸cN?ó+ð|5ûémœéóVó§#t1š2¬_”óü(T(Y—8øÜ}WHz;ž3½p-q.)lŒ0ìÄuEä×"j´fÉ„Þ÷&ä<à1€ïï%ÛØê@‚ ÑÐù|Óæ l`Ä„Ô7_™”ÑÑŽŽäPS2Ö˲>&EævYùbÿB] ¹ê·ÍLnåïæÑÍØ³ä—ç(æN;ˆaŒž—fÐý W·™~¡ ƒ@ŒhÂH. ×òkûgãAþYD‰R :í!¸3îÛUrì;"í±hѓŌ#IÞ´—1F{Û×&í\RŠÍWgõ÷·ì:F­\®€jË °{ƒ¥Çö[¢ ˜ä=ÉcýÏ‹õìE/‘!¥ÓCü7œ®J”o‚ÕùÛÛù·Ì|úUû»i¿F˜g•»ù&Ç®ÙE 'i«•ÓÈ0‹*aŽÁŠI?rAŠ6ÉÁ·Nµ7ž}àXsÔnJ܃RàÕ†:§µ‹3ч3É2hux~š­ê«kÚ®%^ÃðŠÂõŸ¢Ë‰ 4{¸Ê×N8µ“d^úç/ø=Œ¨È¶‰ 1ÁþxSG£õð>øÓzÃ2ðW\"\):;nÞTYÜ Â ÕE¬Ëÿ»TB¼»Sg6É ú° Ò'îdX7O5WµåhD’ÒŒ² ×»Ü Ò¿+Y¾ÝVÄô’mšèbÛ æ2Û¾cxÿ>ÕAÎNaì ÔfŒ/Q=—Eäë/zâ6wÏ£oZt¿ñ}ï›9ð¦0€öKâ39=¼é&ßX³Ó˜%Éœ«ÖÀ_E’ø\£{‡ùÒg © luç0Ä ¦4Çå~#;ϨŸ±µ6Э)™‚|ìÕz½ ®køÝã%G¦Õ¶{½&8þYˆ¬4‘Î7äá=÷÷Ó¼ìò‰KÀcg- Ž˜àÁ8~o>)$,ÿùÇ#–µ"Lΰ@=½Æ}n_>­‰þú·d©vPu&@J=6ÈDIûpX;Øs[¿È¡}w>r " ›E©·sÍ•èsdO„ØZ‹ù±i8ƒR`R&ôðÔÑóÔEЖ¥;+‰­9·äzo¦ÜZ@äbr í+;b•БߘW ƒ™e[·¹e^£½Q¬ðˆd؇”Ô†LTÂCòRÖe _X¨É¿& x^6öïNø"¿‹pð/_ðæùÜÞ£ˆU¿²¥mïì~Óè%ÕÈ÷n(æ‡|à/yQë]–½¬a.ò¸ÒNèG ²Ý?h Å9l&Îév»¡ÀÈv+|&øÏ%‰¦v,XL‹i¬°l;>&‹»ä7È’‡oÚA¦€çÁ9_?o¿´öFs; d7í<ÿ»£x÷“ÃýÒ'jhI7ˆB´Údøúhõ/Þ'À0b±+|vš»›ó;: 0YK%ŒHM‡ƒá™Ð‘~ö”l›’­š—üyº«¶`-\×AwÝGÿЫ?|5#æoæ7z±¼a§0G@Eˆ·ÚìÆHh0 §ÕÕiHD5eÐÙ¨B¸r÷Í«áf *Þ/½« J­„ž-È„i.bñ¢ÃiÁ眞¨»ÛèØ)‰&RZiœ{™–ÏXÿ;3¤GœƒZ5œîm›¤MöÊãÿ½æ:ÊÔbÎdª¾7ðÂdŒ.`›‘æ&cˆ¯\yn9·ø+—â¨(¢"š™hÄa0Jj¦[yKy& ¸§ß.¨e%Ísˆ%“•qKz,»M D‡AZ5µV|ëd™þÀX ¨GÔœP ØÌ*‹~¬AE²'[|Öˆúæ<g¡&î¼%É@ˆÒæ‘0ƒ $ðûŸ³˜ºÅ÷2$ÕÑ)]G•»dý³ƒâÿÜé›OÜÜ`Ýl0.Ùçòò`mÂÉjÚòþMöMç´Ã…ûe/ºT~ëaxÎ} .©"KúoãQq„·ŽÙ ½2|/mß…‰r€=1ëûŸVn !ˆ²;ÇSŸÆ0ÙC'BR£ Lü\¤ºg5Ãj yË"~i ¥–x±4ì%s.¸–Äïnì¡©k>’þÂuÍ[\­ùÒ„ØtßÉ/Z/£‰H›ÏíÞ¼GêÒõ:YDZ²'àd_ ´ÍoìÝ—~ú-Ä–ÿfë¡f{Áë"}7ÿßIi¹¾lL‰9“Br«>Ó¯¾­QUZÃÐC ;%X)7vîYF¸=•Ú(ïR²²u#AZÏ÷wg^õûHa®•¶{Nµ“ÄבmR¹RYÏÀ²UigJÑJù^§t;nUò¦Ú•úʦüqö²þæ)[U:Çòw6Å»CÏ;bb¦Aü¬43k Øwwt§DKCØëIÒ$Á5¼c›ª É®¦œôØJ25³ùüWÄ^A` ï÷ÒXźÏõŒ‚Àòɸ·¦“¿¶8æ€úÐ0£•mµ/¤`ª ‘ÎÎjо¿ëZz“ƒÇ%ÔRò7D–|ë¡„ð !öo쫬‰~8£fWÆóÀr C€ ãè ¼™j“ÃÛ$"¯xrõJdâ1½ï-`@{‚B«sªuú³&_$?!,©õ4$FÈBêû^ËMm¯ðˆZ†M£É*AÖÒ`ÆJž•2ù aËyÊ9NG9äñ»Uù”õ=^°ö…š¬$þn9~vÈ9 fDœÀ –³aQ' ¤fˆEÛÅcäù>ÞScj*ÊòT¬ª;.â»ÓnØôÝ+û¶[ǧÉK$Zâ²¥dï9•›|ðok¸óoêCD8ˆ71 ó |6×lÅ Ã^$âÿEã ›9çð±û3•(C‡)ý¹KNŸL2—wà`ÌD¹Ùf5£Ö‡ŒFl_ö„]1Ñ jé%Ör¹Ñ–G§pÐBm–Áƒl¥YÔ=¢åÜØÜÿ"zísQŒªRfÖ.^oAX8¦A dÆ ñ1% ¤*ê+Ú£þo88· è2Îañ»Í‰ÄuÙsjaŽe‘.ßQÏ$OøVO5ƒs-Ya!F5as·þžsó9~û<›•ávF?Í®XIÇÑ~êc”°ïÖßc xŸ½Àmþnÿk†,N£ä–Pyxã u£¿I Ò,pè„5$³â ÞƒÓ1ƒÌuhoû•$™¥äI(Y†DpCq~æªÐÁ'øNôøOØzÁi¸z–»ð_(­‚­½‰‚5é,™2¨ò¿äÌ /|Éß{^=áçˆ~ËŸ{²ñÒã“ç$½sDÆõ —£›Où¾fn†q eÕ©ÙÐb ók €€\î4Ä>¤ÊRõ·>‚Ÿ@ì28{hâ}´½3cÉ庤‹µC'œÁõÎÇ ° ‚ݤj¼>.¢Õ“Ù[ž*¼ ×ZR3 ^L¹=óV0Àgͼ˜èÌ´˜B?L¸Mœœ;¾a©i¯Œ†ÍêIæA¦õ¦^lJ·•ÈÑšrB*$H[›H÷~ÞË¢4Á 1 Œ]¦9]o@ÛÚovQŠ*›¤GÅ ¶K›0oí䨻'Q¸nœ”Ž^CCyIoÛM_#›r½[TWÓy™õ.ëæòÒ–¢0èÞÐÊ|_‹ÃZ"5%ÍÔ@kaÌë‡TóähAJÀ-ÌcAsG£Û’'Js½á´šãØYx~çŸmúêª[áäxÙ3Wè¹=närÏë¢?K_4ùé;šæðIÙI k™>›È3{'É´Ñ› ø÷¡÷ëÀÐÕ¦¦¥0±XüÌ|õÛL–„b'Ñv€ÐfDz3É2C+ö ãèX»G±yï±­ôuMÑî4¾•"gmÁ~mÓYi ‰‚–'Q&æ›æÝó7†ŠædŽÖ¶œ\DDÙŠ`€K$<¹±øVs¥*ÊpJ§éáìjþ3#é•¥XÄÿ;º*ÎÁÞ=ì4™‡¬©)ÚÂHfTD×´©Zoè˜Òï‘8³Ùæô¥òôŽ hcЊܥð7ݧõ7Y¡õþ>‚¯kJïˆzꞪyöÅ„]3Y²Ó3‹…žkñÂ9)>ˆ|¤îÈ]2nX¯¨–u6Ç%Ißl$ʕۺjð TS9c'@ë2˜\ä^|àpÞ²PãDN?y~J»l©#¿SJHÙþ:–£ø`Ë,v2»#vHãƒÈÍlx±Q‚—*dºZÁ¯™kK‘¬j…ŽÎÌgPϸòøôÖÂUçýŒ¸9d‰ÔFg•Ç GSí ‹'ôß?ÇK°3*3²sž+6²Í° í¢*8¾ó¸K/¤“œìI¹Q›0cÔA@:ÐÙ@¨D-PÇZ~ìcÈæ5ȯÞÇ'տĕ‹]¯cR*’Ãñ¿î¹jdðÃ)†³ŸwyáˆT#Û‹’`ˆ?þRÚZ™XTí³'¹’‚p[l…;ÈÐB½†^d¦97T®ažŒ³±ü?›ˆB¡t¦µZÅ{°ËêôñµÆi~Ü,ñÈ¡³â± ù|y7ÊÒÂÌ‘º8׈!>LmÉÍ#ló˜DU#3ÜÐИnDûÍѯx¤q¶SKümqSÊP×pvâ @†ðÎÌKÓcгº›‡©¬Ôéµýâ¿G[oYGXƒ°Ç6÷„œ«,šÔšizC¨Ô󻯑/›†éìVõEó(åh­©á7^Oó¾qiÿ—Wè™pÿ—Kø€rK7±WóÒB³(m‹7¾9MžÇõW÷ïÒV)aÐäøîÝu“‘&0ÍÅIPÄàÖQª?C ij Ìê6øÀh?{u—wbt¾®rÆM¢3S‹èÞBñà±o묬¶ýq¹Ëâ(EN{ŸìõíÒpÓ¡"ŠþQdIÁÁ°Hè—)a^Ž­„¼lC›g)1ÕÊ]vâr= åw]» 2¸4†Š·"%d—ç±#ôL•”Â÷¨lE’—0†§6þ4æÞ•æßR×uÜN¡W8¥³JÛÔr5bÌÖž}Å:’pÓMpŽãòÕø¨ä›d=m+„ #Õ¡ïR{Võ-ò–敺¨É’\üì©Y¤qJ¶PÎ¥œ ˆ,é ü7NˆrHIØzí·œi÷’µ%<Óþ^YùR>møÄ} ©DCÅý#ȸ³Ôvsú ôBœÌ—`§É^ÅÃ×i»Ì¥}ߨõù]¼FL*J®è¸¶7óµ®8YsàÇsÌ—húÃËRéh¾k R9/ï½ÑE9©²pByæˆBÑè³~6Ì#…*©2Š36µ£U^5@­ê¿Ï‘7׈¼:mCOî•BX’(‘EíÓØ|-©÷ðfö½kèü¶cêWš¿g8XºFû”‹Ä‡¦4íÛv'¢÷­ÛKš”N¨L>ÜôÞƒÖ|±7b]v½òd€GÓÂ’lâpu¹R8×CúEï Æ„µ9ØX÷`Õ˜ýn#)Ée/‘~ᇟÄåê”’n`EetAÐ1!B”Þ³ÿºÏ¸•âæ1‡C*ÑÉùId\¼Ã{9]û+a—"äcCÔØHRæñ ›Êå}ñ ÿ¾×&äÔ­À%àé¤åÎKUt‘ͱký,DO½Œe‚TЬéÍõŒ€·v}=K¥¼äˆER$Â^Ž)"qæ ³³óœïæÅ¹Õ›;•MÒñtzªVêzT5Xn.¥.,ë4?ʵ’ïaÞé-Ø!’<ÍRAd>ÚÎúÏÝu «*½<¬œÈ»7ã k#Gó‡ ø}#Ÿçy´ËWÞU^™cè*öG*mÏ®ÉØÚ Ø*}½&Ã|{Êìs$¸ì¥êMƒN3OXmÅ}œæh Ü»ÊñŠñÙìÞÞUòk­W .·4ù-îsl1dÔ@oþøƒ(qÜŸ6§Ðä䜛ww.ÿeûT†¨úï×EÓÜ·W*Xß2Zù—ݤƒ”ÏnérhuœbÜë»ÇÏp Ýn0|½7ŽÑß’7Êi´ƒfN@Í‚'þþñ£­ÌöHxÊèSºKÚ<ã @á“͇o £æ@, °K¥ÌŠæñÁÅ«1Û2)°ª/@çô¢ÊR¯rKþG-{~}¨Ûžn†"›ülŒy€´Gã ½ES½65ÊpN§çe®àÝ›WJRDÔ z*/X!«äR¡žð|Â}_…€ªr•Œ¯²*NæÿJÅð—K‹)þW‘ÌCVžR•âß1çíl%ÌhsŒ~‰¿zúbã¢'’Ùßkú¬žFšÝŸÍ›,¡Úµ®ÙÞÕö¨±/¯O`òŒ5•°æÒÃâüÇöHoäDut!jA a|s‡ý›·!ë’àðˆÐh3V·MÐUÒUQË+Ðþø¥U‡ˆz¹}ø |nò#ÐP’~ùtžÖ[ÖeÑ󭤉Ôì«.Ë´ù°–²I]è` Hs£)m¸/v™<–^UeúNé|•Ï‘Waü[ìã×Hµû¾œƒú| ¶™üºž~t¹6*Îx?aÄæqÁ³²?[g O±Á3æîjÿ“ôÞøXí¹ó:VÞ[ãTaÒ‰ã˜bl6URÿ¡=$ü¯þàÁ(œh”d[ÛÊã«d¯™ý œ ûˆ'÷ÈnkIùád‘b$Q ãõv-¥é`7g–e¬U‡kY"q£°NÅK€pK}9bXŸ~å/òó‹qîmSöi”qßf§„˜á5Ù¢\Â?ö“e$ç8Û|– ·]$±yDQŠäI¾öÝÇÛǶäü<&’hýÙÅûPÈ.vb²DÛøá–’Ê»_<)ÏÏÅ}ÿuÃç ÜØâ‰‡ÓñþCžâ>Lú6ý*_ÿ‡|+ìcuÇf<‚'\úO~|ÈQ ×k9­wßr° :Q ÃTaEÒFœÒ c €]9éO$³ß CצYã)­Z¿PЉ»™œÔ«àyÊ/L«®…œQ]ÂÔy=®™ÖÎ ”DrÆDëño!LAðºgM9kÍ^UÍM„LñQ–÷ðë× çƒšYéÇa¦ëfm t ©$M—äöe&¤Œë"È?R4Œá!Þ‘Öjž·bÇ·ýeõE|Æ¡$ö¥‘[¥K$á âfUãTxN߯å÷+Q¦9n³9ÅŒ‘Ù·)žo7“}$ïl<»bT¨ÄÊë ½@È£=mWÝ Ž¬v<-±¯ŒFÑLm¿|P>$ÁÝ>Þ>^¢`K,óùq÷3¾b]5ãµÅ+í³è;ÓÝ7÷ À¾(\/—q‘{¾™sXY?2qÃX¶X-%ð·˜/)kJÔ:í·T@€ŒÄA}4Km¼ÈÎ8~ ‚#ºŽ*Œð¯O.Q‘ã8/Úî[2Þná¶ÌØÒÊ“@0À·û‘ ÷–x²~9yNé;ü—(ÑÑ>üëmø\YqŒE­6i=’ßòÖÝUvá?Ö0q¡ õ¿ˆ¬iÿaXŒ3§p’<$%oò̸+ŒQEAõch²"æêØÏ¬ý€ÖCû™ïsI¿$ ñ;v>>Î#‡ô Ù$æêˆþú~ú¯_õ*pg/Í©ìÌÐÛ,ݹOrÆhDÀcçú­¶tJªº]á+䥶gwÊgõ@‡€§J»>ïáí2¶¯¸ˆDü>SѪ΃må)¤DœÚß‘‰7$- k&UQ&ofT”œ¨Û‹Ëì¹2f0¦d¤Ë™»ŒëúÓ •]Ï. _h8$,2ðdÉðB¹;ÊÜSg¼Æ™áij\`|_¨$:Ž_sé'ÇóQ³qW—YCíêÛñ¼ãšz‰¬—;s…I£r;uu&£4{*ríî”Fõ1×±£o}"vÄ@ÆÊXvD,sÚB…¦ìD˃AÀ€7cýpd†s§c&_.%ËêÙ0¬LWiІ©Õ£žgŒ§ÊÙ‰ö€P³-†ûXcº&ö€ÑÓ]`û³ª˜n$ê Í‰Ó}Í) YY£#jØÃèOѨDë-Wφ­ Ä-}ï¤r€ ±vi”§qóè²FœôËÌöGþ|C9o É9Ù×ëÖýEÌÂVC?ñ2t“Ñ@È´ßTœßRTª)®VÂn í–EX·äÏÐÞ¸ Ccõå÷ÔÍc×ÍtÑ{T@O®tIüùk=~8ª(nýºÚáŽÜ—™¤±¾C!Æ\c ¦tìöF¬üÙ¾-:¡hè}p÷WÑüÄèù>GZÇL¸çaÄ®ò§3þÅ_çY]p„‘!ƒˆüŸ@‚ •1B‰—åôLõÀ@,-˜Bû /„²Lò,–½ÀDˆCdÁ¡d–ÞaöwfMjøÙk=[4@6¥ë nPDVH¹oSí;—“6a3) @’fÂHUã¿uÞHGÙûÈËi‹Ä„¾’â·Yg÷32yÒkÑ’6j^½y“¯]SPˆX6i{^ÂŽéÝ☡©†‚È÷£ËáäÏYòÙ57dš »ù®*ÞH¿&ŽÚ9Ö“ù4MÖ8ø¶tÉ« ¤¢T¤Ýë•V¥Bh/$²B¹(÷øÕ¸&tòßÁŽ6óìf_ѵ»·jדŠOa:– öœ£‡kÇå5CE5äá ÀæÏÚþuàµ8ÓÏ¡' ÜØ¥…J,¦†¹RæKÙ 5ÂzÂñ-eÚ&Ó Ûs¤VÍ)TÙº«vÅnÓfåVðݳMU$66ÅVÌSvìb¥Ek  Õ¦òô´ÆŽu.cjæ|ÎïGᣜL6\ðK÷Ÿ™n\'/kÞh‰1Ü1T’i]‚©­qUFR3ídüø’°–k+/‰±¤.3­Ãð¼Ë—ûxÁ•9Ý=–¢Ç·–]Ô™«¡#T>­D™QJªêXžÖ:{†®eUð¡ƒ1 !¢ôvèTÄö0V ûI¿gŠÐ²k´x–„û<²‡YGO[œLUëªb¯¼zÆküù¯›\¾oBQêÔùqÚ1݇Êäq™›˜(t½o/\Ÿlqý‚·)Üïeoù¸mÕ§òTИ¨rêWËT‡àDï݆D › )" `‡ÌCÓ yÁ¬:¥YLKŸ¨Y¾×|ñgï`™Ò‘~¼}Ë•·>Õš“µo/¹í6çآ˘„£'^@ ÝÔ–8'öxöÎá,kmæ“7³會®#fÍÆ?:£T#8÷£¥8GòhÍ/Hð8+~úìÀr™ ^¬ X¹CÔ‡ŠPþÇ”}Ä÷%à…‚Ò3)Æm¤Ú߃pgl®Ûsó3Mí¯óù@μGýa?ü¤•B’ ‘.I¨Õ¿¦­°ñtb°ðr½»èÏ¥ìC¨iñ÷"¸Ý›AÀu5ƒAÍ>'ØåCiÀqÖIóÚ´Mêøôëx÷{Çc p¢‡é¬« ­ÖòÝ9qùì…^„æ—l6ÐHÛwQ‡H&Ë™Ú Ÿ†±?{r0å¤Ü%Øÿ4þ5åÜ`á„ÌÒèÜD¼Yl$.¶…mÝÛb~ðÃÁßÜèü*ÎK>ž{£DʵWaLŽ™òH&? Ò²*«ô*ËåÚ'Éì?òßÉ}Ù9Ž25¬Òª§Vg®nÝg $8Tš]ÓG£ ØêÐüOýVsòÕÛ èÁÕ;–'³Rübx•©®ùÝìQ¶¸¬»#±ðÌn^ƒ DÈlÆäø1'Ȫ|‰‘‹P6‘¸Ã¿¹•=_« i£7^J²ˆ÷¾xdöýµðÍÜ„@Œ²F°½ŸRML‰,ϰíÓýÿÑÈë0·5e|“ÐõÎÓN{œ7¶†õy¹RZOq€˜„%d²•±[sÁ­–­(R1XÇ7RµÊY.‡›ÈɆlÞYòž}Å{ÆõÆ\¥‹ -¼Û¯çbà(`¢Z¾Ì#2WóADL$˜[Z·pØnw;”×á8•f ;½ªÂÌË·¾›6ñE­¹Ó*´fSŽa2#ú ³¬L)Kòã«»H+üŽßõÊà'-B«Ù¢ÞFÝ cñCÛ&Ýõ›lÓq•Šûn¤i«7¨ªä!P5Vº+ JƒU{(G~¤ x6ßÚYMeÖ.Ââ ˆÀÆù ?,3+ªÂ¶W8©ZÒ2b‰¶ï+Wª¦µÉF[‘pØÖ(²•¬Ñ1UÁühÓ-T˜\£µÕU•FSTДÁÏÓÔœÍKI[YÐjÔ†ýúJã(iAÃg¦äöiiZ)ºžÓ>Îj®åZ84î~A]3Þ¹]ÕVý”[–Ù`«ž¶éž|RúÏè±ZjY°&²p¡pü~ÚÓ0 iبz rs]Ü¿ó—Y­×gC²Í»Sf•³¥¡3©açºmàåÅ¿K¥!¿kª³þ¬&ø£K¨å§ô±›#ÛKhœFÓ<¯Àƒ †KJeϵ¬.ÛjY?·JØ® Ë~é{óÒ÷Í—]®Ù'Þb•æ¿•¥lñz Ouìzªÿ]®™…¹Ûžt­˜®æjWµÚì¾Î[ÆšÕ“ ¬©Y6ìQfͨ±»XV¯êþ˜öÍÒãu5ÚÛ5‰xÜeKi¦p²©h#nLš)É0ë¶3¥e,¦t8Q4¹&uN§£®ï/¾õœYß&É]Ó5»ÝèmPÊWá·nŸx-+±¯T×ÿj๸cjÖë3lÇh¦h)aÉå$î=ŽúC–’\ÇtŸPˆ34uÎúÙën¿¨Mú_Õ ý.Ø›Ýó¨ÄD\bÚ¸ð´Âî‰Ðd¼ŽÿjO éÒßîhåRè_‚Ùèv(~3Œs5Õ6 ¶ÓºÕ±»þÞV'+Wî|}jMÑ}«cuTädäªY·åV,ë`ÝÊðÓ¾¿+éñå7:ô­U[v‘p7Ò™-ÓWÂÐLž72×ÙMõ5äo½VH×øÞ!ïšür±bV9ʶ¦š.6-Ì÷úu|rrláÛ¿Ïpùú> FåM§ .‰õ2ß+}U«Áâ–-¶ø»‚M)åu2¨Ü¸3sCCEWÿ|{!Š ¾Üa­ž(Å2بÇ'±U¯ZO §¤¥b«ˆXæùÎ[X“ØûΗkj5÷2Öäio%š½¸ªJ¤\%Œ\œÜ— ó6ÇæŽ£Ú>7‰‰0é‡n눽˜ëÎA»¨ù7…ê½Se;mVt2:ƒ¿~hQ ó2&Êž!r=Áp¶§r½;¦uFe³$2uÑ:ÞTƒ7$ª%‘×ÜCŽ@ú;ÝŠ˜Ro…L󢃭°cèf5YhÇ9Y/‰çÑcþU$ˆñ˜WÊýœ‹-¢%y¼¹¨ÃO©ãa…ìù*p²"ß›¨íù?…M듃£5ãΡ@Õ„>nsœn`ä¾¥$ð] "NbôŸ-BL³ pÍ–<É·Üè©É4Cƒª¸"é½ò°´1ºe)ûË äbHcÜð‚´Nãè gjóÎü6ÞœAz5ʆû¼²9ǰè›ç˜g¤’¤+›ã´J§0l7RýÅÕáw>×R9Y2`¿ô£?z©e98²Io‡äÛ=†þP1mÀ4EÀD*@~ÃGÝI‚#› zOÂÌýA)Ùîô<ç³!C3À³¼[›~³´å:Ûzšá§Y ECDºRSñàßš›°ÃA±m%K­Ð|nŸ-ÿºI×ÁÅké!’ìâúÄ+.FŠFF@6_MQuV9º{‰]hdô32aÀdñéÏ>ìªÑ@î 1mn¢<­|¿‰1Å àÂI…¥üÆ•Jæªw*tãKÀ¸]ˆRœ»‚±°°Û‡$лØßœœ‡Wvñ›{Î"‹ V‹bQeÚ{±c;™d™£¶†ɹ‹Y.©Ó»l4Gà‰7R7Å©7¸A”mŽ3øp\aâRYó?~’vßríšnu0ÂCÁˆÒ~|ò°e\ùÿ¤{ƒ6ÇÕ¶¸"3´I’Lôò5—¡ÇûêRrÁÁˆy¨äã/˜‡Cø½Æq`R5c+©_bÏÈaÏÊQ8!³;Ø¿n ˜uÓYf++¦Ô ¬ :Ÿ¾XÚ“Ö²,Qä¡Li›a%C›/eoÀvi¾ÿÃÕžú&-âYtä‹Ý—´V_Ó|Ö%³‹•£J˜íõŽ«´ÂŸ6ù{eÜëEnè\ïÅT{¨Ì 5™5ssiÏmÏZðŽ^©cæýõËI’nÿgã³9Èð:…ûnš”P½«P±Ag¸ÌÎòpÉo`£ú"¿~J\“áŽþþv PƒÉÎaÐßMg=u¬§ÉNŽ,®¬Ÿ(`óGDÈ v)cEÎoôÌý3„+цÕ4º~ !{~Î’R_šé’Ê.i†CãÞ ryèXó0»s³ê¨x¥(ξ‹¼x<›åd‚¿âýèŽé¤9s´†k.¹óãþä/¥ØàLÙaô¹—A2Ú®KÃ#qXmNê{E׳(Zx@¤xú‡,E”EkÇÄ9.á\e9È€——§Ç2p AŒ9'}È@+”ñ‚ì}‘Lf¦æQ|³¡·A2ç´ÖÁnp”ps=•PéŽS·#kÃv“Ž•ÅÝÉ`UÑ`èÝyNñœx4a±Îa3{ûãli%ÉÊÝl¨Ÿ!$I3ù’~+G¿6<ì¡:BÏ&AëɵÂãGJàí>ÍŽ]Š`–¬m N±Nx³XXÜŸPljÈãN4n+ŽJ½Þ‰ …7²•˜”‡œ[®…lS!òµh‘$á®ìñ^Û:âÐÎÌs´ÆÚù}힣UzÿFBP ‰« –®€_‰AYÚ±ü’rñ˜ë÷ÏL&‹-ú_?u¦R9nù¸ ÌŸ¿á·üLR_ñ‡èˆGSª§Hç’%¸ɼ¥¼œ¢ ä°~" ¹ ü¥ˆ Z‹DÑBЇ ±›[Xr£šq:à˜&X5C³#÷FYF<‡Ž£ð8\5îQb_)ðÖpÚ¦¼¾¶¡šg–¨Ååùœm&믟áˆã»ˆ c^mugÄ—3Á;FeÐv@;È—šÕk«ÌƒÉæV„-%€U0~?‰XMä/EëçZjûåQõ˜Ø×#3D!Ž/PjÇ(‚h;¹ÃÞ}(MVP¿ºeT"Ÿ®­ì:ëóø,Òˆ ëL-ÎÁ2Ÿ¥Ã™Ba/ÕjÐ<§ñYÔqòwJÏ÷Pw³c*“M°Òí'†)!ô‘[^¬Æ¸Çæë4uÆkÿC¿À[ub„2⯺¯}îÊ_†Ì¬`‘§œì1‹ Ÿƒ‹ùÝu·Ï¯ß¥£7gãÛcTl¯;ë`¤—ÑH˸°& j’Îó7…ËñQÂßò‚ÛwݘΎÆsÕèÜÌå|b×-¸ã+.WMP¸WÏ ÌðÚ‹ReU±0 üôü¨ÂಅkIÒ‚‘:1†­ª?àÁA“*JCu‹ñqòçï 9á%ênb¹÷þ .X+ÖÂP¶0 ynÿÚ&ý‘¶˜!hŸ£x†üu+F«/X|¸ÅòMHýžß£<*f3~ÛjþSff'e˜º½»ššÃ˜Ø;æ5Í5¿€ÊâOÚ3¤1U;¹ŸŸêELW ]ÎO³Šo“R㌫éNñý#:¤Qô=DõΓuyk0uì’®ÒŸ¸ÒìÐÑù†°õ*ù!`Ð,ÂÏüä-kIî¤ZM8Š9=ï¼V–Pk»ûV¾n/[g[áÝÏ!Àk7ÿõí`H½hR‘:jF¥B%Etª–I1ÌNû³X›œCŒsûª®¹7³Ö½ã°ö©¨¢*òdÁœÄ-´¦äÕ—%´ÂFr逷ڗöÄ»\v­|÷+P·ÕjxÛ‘î';KªçuH¾­¾Í@;‰xRÜ'³ Y«*¿±(X–ÑŽ×v‰_ÉæÇâï™tñÅîâË‚JZ÷’%GÈn7¦p´û]RŠæd}—óLþ>Ÿªz½âe5íyÛè‚j:þS†ky#™5¼Ôn¼^ˆúOLÂA(ކ£2æ5;ÉÊs—»>žÃ òw ·.ßà¬$Ž`¸ k–í¯J -¥¾`Í2:«œî¾\Ö×Ëæ3ürÊÇê:’ù¶s£˜8bçæ-ÛáÃŽÝï‰9d¼€ôd©TøgVEÃìe„Š@“.íŽZxò°ÓE~åVžZ"ÿÞŠW2:PÕ\K8‰÷ʘ8“l¸‚¶CxüêyÈÓcÏ9Ñ]Û}¿Ý['ð#Ëv¨t÷õÌëUÆÛ¶ë…°ïNÁo‡Ë.îëZG1GêÄFØr(\»¾Sn‹YãÇÐê>°ŒšBfn£Pâ$Ä &Pã›t½‹é÷ÇŽëÏ—É‚oó¿ŽÂ˜1}s»‹BÐDžÙÞŽK«•6ŒìÕŽ„´8™5s“ÇhåºÎy£k,ð°Üú;'’IN¸‚cwê¯s{®-’$õ¶§ì4æJ1q :ï7šg¹|fTOO;×öVž' Àò•Òa@ ’QÇù j‹hîÓq†eI™®eZm.®[ ýÙÃÄûµ8àeÆ“ÜÈ<–&‘)Á<:Grj­”DSä?E´ äØðe= …Ç9Œed'Çã>Õ'±Ãè$ÁÇK®TÊÒo”£”È~¿­ôޤÿ.•÷Ýf<…7­Óì"aM? èä“#®ƒ Ua;Õ†ŠV=UK÷jÉ©dL²LIŒI‘Œa™!†2pV!Rª¢q)õ¿ãЈįô¤.ë~¾_HJRK„×{64Z…¼Ux ÒÐÓRÆ%q\ýÅlÒÓ1&1Q†š¬U&¿‹_CL[ÀK‰’9¾ fÐNNî fD–Äc»Ò|$’rHÆÒ8häóv88I ˲/›³šfƒ_b/´ØÍ¢†4Qñ98ûoïnÞH¶D}oÛ¿w×|(‡|ã׋Ql¶tò©âzF3°#>äÞYû³|]‹ÙÅNõŸø0O‰¬òQôfz\µ _÷ÜÙ•X¹õ+òçÞ®¸cý»ÔždõskÝ–ñ€u#8—Ss´„Íuo ayw]>r•5Ú(ÜæÔc£hNƒaŒª4帶Aú†ÚÁÏM|'©bñ÷Ó?|oxZ< £©Í“µŒR˜.ϘÕNfI €(üoâÌ;Ë„h\ãðXî[ÇvAø]›ÌoªÕÌX„‰`Dwd;"*%!»§§<üñùj"ÛáT¦/&\ì’ã¢$z!'̕и ‡XßÇ¿,àò„±P°§ºEòê$"Jñ‘4RÐNigÙ³÷0 ì”´5_LóGAÄØªåˆb_)+ÕQµs÷xþ§ݱ+ZªaZr –#ü¶ÿïò ùÐ^¹×£ÙŒ&˜ÿX5bîÏÖèdŽÐƒ%³2¦'`K¿ŠóëÏÓÐ7qÁ¨GAÔƒ¹èÑ\owúdÈým6L÷âë‹WØt¸‹ySñ·.b!=RbÜ×e6î /9Íé^;¸"úPО¯J"-äf7È£4ŒZÛÉS¶ô#°ŸáÄ…pN0š%Ä#Ç8.éõÐ¥B#ùàÕ³5‚ú‹ÛtêˆF˜¢9öKa‹.­”Úœ±‘_œb6ÒÑÝ»–s‡A ÊÌ"¢3o·›â_R|OÁÃ3_¹f~FÕáÃØtã˼C\CîW‡¹± g‘pR,ím¹;CÍ…#ºØ;“FlåÙm¤RÀd'ËÀõ[Y79Qδó½OËwæ¢ÿ°Ñ!h(ÑÏFSï‚—‡_<ÏÜr 4†ÿ@Kƒ< ŸVï¶¹ e>K“ ú[¡ __¯ñS½!pÏFv_(DiG-H­lãLqÙ7³&™Â¶Tðf b”Ü(àð’yå6€[À•ï§Ôø¿1‘t/ëû\QÚ»\L¾^ÔÒëü™rÀ› É×ÑŸÑ!·Õò×m-e~æ‘°\ø^³ó"S’}qãuL¦šôjºW—>eà{2x]_ˈrŽÚ©Òç:|=„uûB5ÕÈl{õ®Óå‰e—ðˆ!ÅxZϵˆa1Áà[)†,’U‰Èëw£ªD®ñÄÓk‚ZÊ‘ÄW1 ¸M}ªâõ}†<“@Y‘ôÄ)" !¶q–21¬àÕ—ŽïÄÛpÏm$¾bü=K=…“ß-ÿ%YÂ#PƒmrÍ—/cj‚Ah¬ªèN%QéögpS°0ôÔ 4xÅȶd½dA>¶ÿíq 3øäNóbnq„mÄh9/¦I„ê¢~o­(à¸JäíúÈŒFÀoƒà¡£/KW´©¦+M°3Còëî,¤Ùû-·Ññ ý¿w¾`ñ¥'kÖ»í &ÚQƒª9“#R ¦ãÿ9ÿ¶©Ãö¶Ûã­iìxGš»+ÙË=ÜP•ƯÅ!Ì&>"tÄ•NCƒÇoC÷‘ÓjY£Ò.'ÀàD3âÐ@ø;ë]xÝzÄOB×`_Êcî#¢#*„„Äϳ>(«e€ü͇.»â. MýQæå–3ò%ß3>æ¨üä‡<*PÇüU‚˜Ï®±g˜´ÃU=2Ø–ø|‡”{/C1º’1oe¯Á¬µÌë˜$YTÜo%MËɳþUç?©Ø6cãæ¬×߆·ËÃoPôhG“Ö=hI;mÿ×ÒBßÙß0Qœ¯‡ð}ËãÕô×?~xÎCžá“K…þn­Èó±“5"8hd¿¾n5‘ÞüU‘œ¿I׌®Y7† 퇋]c$[Œt!‡±«Íkâ,&w&`˜ÈC›sª]|Æ®³…¤ežlÏà€ÓWˆ3wn?Œ}à’Ùão[Ybõ«š·µÆ‘¸ï¸2NÂê[‰x£Òc†Ú²,®Ø:ú0 þh3ÞAäÎI]ü§'º51Ц°ßž’\Ó¬Ãri=©†j6¦ÏÞe¸O6úåyîqÐ"¤‹P|Ï¡b6_B-ƒFYÒ¹9ÆåÀqH vönTÒC·íJvqxÑš,Èa«>O$Ⱦ‰˜€ŽI°€”ÈVÌêÏÞê ˜Äõº=ŠÓ&'“ü­±Ky{¤Á§Æ?Åð˜œ8鯀îqåë§:ðý=YÞá‹ÛÅŽ…´ß-F‚ÁTÁ?úJù0¥K-„oD\ÿÓËó^zS¡©~8qg§&¸T£i}Ïç/Q¸a‚³3^óä›r¢~ Çñê8E^ ¤y!õ¾¡–ú> c©å–u­Æ»l*â N@îoÖ«çÔ³–…_Æ—oÊM8­¹î®Ÿ“©³;náïIRbeo_mh?kªñz }оa¤òIƒJ_ú¡B ÌlåPEUˆvÿ yÞü ë†02ê”?°¾‘оQ™‰ÎT¼1~u,ùœ&Ĺžº?¡ŠU;¹¢o—qª7Ù#¥,b“‡jË?Ê=¶¶z‡  6;¼‘³Ù³ä®³ %”@û3ÃôÔÇ†Ž‡%–<ûÉoÂ]¢Ö¦> Mc†|,Æ @É v·Ñ²:–a%Õe|ú9R2—·ß]F¸‚U_?é˜ñýw ÿÐå>$¦ÀÜÖæþÏ2)9°‚c]†"÷)6VåæclKÒ­³¹ñ/j¾vB}OÔÙý¨û‹}ò´9x—BþW‚q„ñ¥K/œcå•W¼v Û ±¬2§¦”P>žÃþ£š¹ó©¡¹-ìXeƒgâ=¬°ùeý’óó%Oå¼ ¬#BÄgôšC5š¤‹NÄœò¿Í­:ªã¾¥< Q‚Q±qû…ŒkxÆ|ªF‘mãb/ƒÇ?] V*"yKWŽ!Àª9#;§äïL3ß’üb'¨?$ƒ„cò¹r9àòUñ|‡7´2a·GJGÇ©¶–M™ÓœšqÕw9RÝ# XaˆÌnúd?8ÑW’ex Öh®”§ÃÍ^s·ø^êRnÑ?¦¾ ¯÷+K„û(Ä*Îq"ËÙ}Là˜¡_Yž½ߨþœ´²ñ› #q6Mäku³Øæ"x3‡è°`^:§wÜôoI‚ëùÊ}V¹F1Ózìãò0ågñwi®Zz÷{òŒä'Þ˜¬Z JQ !laãuX #š¶œÒÄà";•¾˜3#×Y¬U£äË6<ºÖD¡´Ä„ýààdHH,ö(ïd ™üKkŒå\Ø¡ˆ‹/¤ûHIsÖ÷üòF‡eÜÿï=¼ï×›§ÂÎm(Oé=ŠÕ™}æ2°ná©mÈÎN½»Ë¢q¦ÔÄvßEÕ¿ÒÒÓÕ%¹˜áJSÂÞ§¡ËñDìr»ÙÆn©#øçÍ!Éø*uåÓ?÷"áÔúEGÅbkçɽvf0ç–õ,gJ0~)" @Üc•o¥w¦+ýýy€ð/Z&ùªÛ~œå1;ŠAyª’8 È48Ǻÿ‡°šŽ“YÜ ù}M‹ùÛ_qçhD YÚCIªoüû-¿”Jzu³ÖÄ)gæyÄðñµþM^4¾d¦ºzGgÝ£Î~=öº°qOŘî¿8RûWrþF>¦Ë³pn8ÍDI #365¨SñJQæ¨lmVd ¥½oò¢kÁôòÎx¥t¨u¢Û•y ˆ„ñB³ïû×ÞŽÆ,YqRU'©«lm½Ÿ1\@©µk/Ê2þÌ‹«•æ`CõfüF̃½‰Éx^Ò+ýî\Wi¯n­ ®¾töÖ jc'ìšC3ä1h@ßËÏ8P—úöÁYøÏŸñÀé£ã¿q3gÁøˆ,6šdÚð®¥ø y5ÉísjÔ¶ÔpN„AAžpÕSMºø£]ËÁ±eºÅ /-ÖöØ4gƒgŒ8ìJUl„öK P`Ÿ½òY ‡áÚN›F×nйd²'OüËYm§ÿ 0®[»vÈ:|nƒáŽ›w$%G”Ř]½ô‡Út¾&°êw[+r—s^:yÜC({ ©»º¾#T¦oâ—¤:,qóöý= äú„û›[¶ÀÞAxˆSõõHtmÍ=Ÿ@C“w‰~íÐ0Œ°iCŒ8b2÷µ2gôg<×!Ã7š{t-€B Ž`¶9Eˆ±ˆyøîÅCäE›·¡êú(ñq1+åÅüxPy‘¿ž¸=LgñäP>J˜ì•/â§`ß$fÍ­–ìݰ::RÛž¶æ,% ×ì–2Ç|Õ Le^œ^aÀ¼&—xˆ‚¯ÑÊvd¹^HÃ*ý»"hï\ßÎhRy8ã©p4b™V #j'剜-‚%­2'‰©w\?MšXe!’½Æ/÷èVžjUï bÉÃ>…ôû>ùý¤˜±ÏÚл*£x„éù—C†ŠUëû[ÅòÔçµnÛ®d2± IÓÞ#SµnœPÊEkú%{÷1•F´ 9ãåmÀX=7´G­WqAi£7çì¶Éº•F¾2z]œÔ´²³¶åGKgö<_iÉŪ…áê›ìDæü]9†Ø»l›ˆ£É’ɱ@UJ’yOJ-âò²£¶5b™pó7©ôª6žÎ „ <é¡ûºOÀ†è™Ô"=š½ÄÔJßM=vÃNø®VºÞlcJ–l‡ÿð±±"ÒíCé*õùµ*üw²ä2¾Ø¬€¬ÄÀME¥7o¯§¬Û~!æY±$—=ë¤ÆM”B뀿A@R(Ê © i½?{ÿÛÜᡋÐb íñ}’øXœâ¤`VJ#Aóé9NÊcª÷"{Þˆ  ÿ’ýúïJÇ ™yGxÃÔJž¯o ²…>¥ðä5úD²ùðËé#%XVöí$Œ);T€C10'KW•24Œ²g‹æ6¤môÝùsúC¨ñ^œÌ_f,ö޹‘¡'F·åã“úÝb”( âÜÌ¡T04y”P0ƒ‘†„½Œ:Hˆ ÷—¸2¨{ÌOG*„Ç"nÖ+šÎÁ gävM½Ì¶Ò)À0djñ¨ü¤5™ºÌµÒFƒ£9‡©Ç}ʼã˜j¹®:nÊXæ6ž}¨<„úJ?-T‘ü2Û_¹RŠÛJ½gûºœFÉølH5I$sŒFOÞâdÍD,Ÿ{æ÷í“Èk‚ðX—³FM k<3Rh=$\pÇcá™<ç~å$¸ÃXÞÍõ&ÅÖ¡½h䂉›ñ®­ÄvŽŽÜ$ý—óÇ©äí &j?Þ_5y$Ê€·ÈÒ„ ˜ †gœM§¦ö'át})O¦Ìæ^Mm`¿Gw¥®ýûÔUÍn":`ƒ*‚/ cÀ·ë{¥¸+ÈÁÌðn‹±ÖÉ ‚¨÷!°º]5v›nS=Ø1Ýo÷“çò8^Ô@©kŒ ¦'p(¡a-Ž dflÆÏ8A½ßœƒéÁ¥„ ÞX‹=ñºB×üžv36·Jãï|€ˆ—kÊmP‰!`ÎÖÌýTë¾b|ÁLÅãP‡xötk‰Ç³™ìœÈsŽÆ2{t^OßYWm]IãM» Ö„ ¸Ç± ZfÚc³w¨(a­\æ÷]ˆq:Î$6Ä`=‡¹ø¼’¤vήD?0RéVÂI-¡æ8ExBçGw¯rþ*žýëv4æž ÀR·*ÝɃõk·²Ù°ï¦b)!Ô>Ý ‰÷:œx,Ðäž86ÎR¢/!’+º™8ÄÔ¯‘œQa)_VÑ8‡Ö‡f‰³A¸V2Ré”\;„,;(A;^>ü >ßÑ.»ë1jõ+ŒWÛÅ×Ë_r0jú;AJo,†h·”¦•…97½ã$*EÑ¥ÖÖFn˜ºx¢³Fe 3ò"xñ.n_ñ7›~"¼vÏäŽ —£tr²—˜?hªr ?‚ó•¯gÁºBâEj͆¯Æ ¢Ô©0‘>B“ÁpA<Òç‚ôp‡Âå–ÜÂºç ”Ï|à' ž>øuô u´—½HP‚~‘™ly§l#.E¾jtƒÊšîw¼Ò‹f9-Ÿ4ˆMnl2† eБ5ú¸¢ ìOí<§6¸ºáîWðõÜÍKñ‰Ô-eèõ@˜¨“Ò5¼+Šþë?PU=9ÛÀRÞN´R”{p4ÔÆCÛÊw8z/aBºM| ÓÒ2avè¬Þ>~Ï)T¦o묋l Ã#ßUf&GƒbyˆrWþàh÷eï<à8Ú¡’á)mã—ÔÍ-Qv4#1ËAtÞ>úúqµµY™Ö– “ú©î1ûµSªâv¹æò­Èáë&¤ˆ3±ë§Ãè}@£‚|^·ùh.CoÏÈ%µu‡=©Ý¤dïaÍ…Í13RÕ¯¶¦â; ‘‰XÀíu,åôuUÇ« Ƕ¾ô¦.JßgÜ^× Ó/Ò?'ïN‚x{¶çè&«e"QH”LG§ÇÿÍKÎw— c:ùßͧ¶Í™¼îŸÂ<ðç­ä³0%b€s)Gss$,(8†µ+ï–*´*Éh~‚3°)­“ Qb$Ê©&^’ÒK…òĨ);ÇßkÜm?{ßnÏÁ}ÓÀö‰úî绩h[c‰™^¿œo¯u×Èʹt¶ „%MÙ ›:1z2ƒ¶wuLì>íȼgŸÞ3@G°!Úþ ì]^ç»3Ù.6©{l½'î=1Ó–@öâ¯%‘ð´`Hжˆ…†y·—Õón¬zÒ»ä Ú¹Lˆíøè{7PY<´ä àðc…œ)¡! >XéáfÛÌJïš»Óø& ™{L°÷±áœÁ¾¶ÄX3ý¤úŽKbk`}XSHë.K¶‰uÂØk4_wؼŽëe7æ‰$Ö•ÇÖ÷•µ´ŸíÚ qãû¡È2H^ÂÞ•áå$³{ZqÛY£TÐ妬ޯaäÜ—˜%Þ¼©3f:Ç-eë¼í-Hr Ÿ›Ï†Ý¦ÂÚˆ`¸:¿XhöJv)ÎŒõXU'ÆôëVuÅøý¼Š$1¸èú)¼ BsÔjM> Ϧcç @ 2‰*ú=ª¯aµzò8e™Œjé-V å«e–-¤¦@Ï,ñBõð«3ñ¬ñ‚Ô€:5y´êO­º÷:8Ñ¡‡)¦·SgêÔ RJQDÄ«º S Ç«ƒÝi­üp‚Pÿ‡ƒ]*ôgs§Å4Ã¥Ó)ìü¢œd‰wІøÎ ÍEÜ'‡[µ#j=ÑÜ@vø¸w’¾5„ǘ®‚|Wøò{k‚á¦Ò)ç—ß¡JÈÑ2n'g÷k)±wŸ’÷Àu‰·³N Vþ­ØŽžÇÒ/“¸ƒ0EAožÐ®eXJŠ®lO´yµ•›”Lª¡4/W{í.»kf^Ž1ÿžsUs„8gÐ}Q–Âðz‚U¾óŒ¿ŠâuΤˆkŒŽ­Ÿ”jÆ$,Ì ¥+IöI5¿Ÿ»¾ ¼¬UÙèñçeÑsÞXC¯3ÔŸ®¿×¶þÂk¤Ï9›ø‰ü €?Ü—ÝFþäœt,ŠàädÉ ÊÐ&n㙊›õgU {¹HûƒN:ÑmCÂ\D“§‚Xe]ÎS„Ñ€ZF¯™Yw'YFÞÿ@¡Ø ÷|t„‹íh[1ÍY(VýK)Ëô¿x§`Ƚ»”Üñ¹ÓÑÎëfâWõèJ Ñ¬Z!„ËæÄ+Ò€!‹Z-pÖ,bŨ®qÞbT國g\£:‚Þ:9?ëµÀC_ˆw(&ù&¸Z(Ä4Ázxi9Ç 3ë–ȯ_ˆZüŠÌA$²‚kë™ý¤¢’ÃÔ¬ eP-߯½öœ‘(BWáÃȱ`éȽéî)Ð’¢ÿ,†òY‹¤8 (?-`0óö`Ôƒ !É%MW˜a^¶†+—rJ}'ï@§D‡Œ/öäv¢‰a´ËÆ©zR&¾¦²œ]U.¹f£s…',ä¸ó.A¼wµ6¶þu}.¿†¦^ñÝv…£T1sŽ•T\™‘Ólöû4Eð¶›ñâÝpÎGªÇž{å4¾;í-PÛy!˜h–tb¼;=Ò z›¹ ¹&¼d¶v¿ŒD™‰S…A$‚gÜB7ƒQY™ŠXˆÍcÀSµ ü³#ðŒ:®L û‰É„äì×|o¶uQåŽeÍÞÞ9äˆã)ËWËI·-g¸Çú3’U¸ØÆ:èžÐÕæ'qøoú‚š'ÜÞM+ ¥H«ÁnÊE¦¼èá=Ÿ‡à©—ÛiÔ òƒ/'ú/‚¥õ`ëÍ„ÁÁH®¥)¾ZU[ã,áæ4çù^$É“Z뜞EËc¶ަª/rlÄQiÆ1ÓCxP(í§ònƒžV2ÚÛ–Ûcuƒÿ¨tU<ÕnŽÑƒÔqÂ#ä ÉìÆiŽ„£,ÕNóåôÔòMk´t ;€“Ä|Ù^¦™Ê8]•ÅLtÐ|Ä‚Òî£÷98‡æ~–åóÈ»R=ÇÄëû–9µ~NóÇu¡SÆm Ãl¶s5F¿|8ûäá™fØF=n<´ ÷¦×Qp3VŸF#¡U/ÞÒ›Žàî˜bõòÐÌvÏ¢áÔ3ÿÉ! …ü“9qªi©Æ3‚*U—ÊU¹Ø;—ÐWlÅ& Ýš2g3DlDµ¯:ëÄìÁÑV¬ÄÛ ÉüÿBåNdÁ—Ch›1˜}®w 6ºÌ˜†Zþë#0Ñ:gø¢ŸÅÓƒí³ü<¦†ì'@ó=%Öû7›O)U…LJðÚÎ$ì'ØS;YýåLWïÌÇïQ>Ü›GÒd‡–ކ<ñ%Øx8EyQ· ä]®×;â47u%”¢b„GÛ2-ªÞ6OŸpä"Ä"Oæ˜!†Á/ã+MAyLK÷ÍhÂêù®z2aðçlAÅéBÛ<À"|2Êq¹2Öcß½#ùrlEOi>—ìè3åm š4EÜÞ’×](@³wÏ–_†nÜ Wýÿnl]!‰­º§ç!7$Ôpƒ1ïD1*p¦¿I:œð—©2mûÏ ‚Y/NnúwܣƾsÈ’[ÌJºOÊ %†LŠyôT‡÷Éê í í™W6fØ)òâ·k?íò!ø³/I„çÍ…ƒkm Ñ2zKÔ´\êoÐmþèJB…ÐŽÁ—0EúÈ@tIóƒ‰B á4µ‰œb.#‹t퓆8Õì)tþesŠ,æ˜dðĹìpœ%<»}ötô m†ùÿYzM×\¼Þ×!¶Ì®¬ ºñ9o×ÌfMxXíô¨cò$¯ŠÛã´¼¸×ïV{>>ˆÌJVfߥ÷©»B—Â>óÖƒ›|4|Ä8áÇ®·69Û<Ù$«*«ê't0ÿ“áæq~|9·Uúi¯ä2':7?¹ƒÏÁäk"OaÉ1£‰¸)"ôT™Á™¾°Š˜æ Î=ôÃÙ]2¬:-ë,ÆšlgöÈXŽ{uz,_KšÙˆ@óúí7(ëOïòèrž ñÐ;Y‡\42Õáü•ÖK¯… °­=óKÙ J¯žòf4lpªŸÈOÇS: Ô§©²§œvæ]zå3ë Ç~%¼æ H^¬ƒÈ•è‚‹» )Ç;ä³ü»Lÿõï'ýa,Û&6_Iœ† ÅSA2kãMŸÙW˜` ÃåV~¤ýGg—ü¿ñdhãVyœÎ| è0­cl)ÁhÉ™âµ=–ìhæ´C4’æÚN MØ“÷#ÝP@¹Ä^ªu3?)Ö‡"ê`Hr¬|úšÖRzg3b͈g5åHМ¸Ë¨0Û8ÆÐ>iÞc£wBïüÏ çõÖ46 ë&ZéUcp6d~bŒÑ;4ÂÕÕý:]F?tJo5¨²Í¶Ÿ¹Ç30K€†p”Þpp™ýŽs"Û©ð36¼åyæ6šêjtdI¼+£‡ßÖO‘LmxæßßÍÂX ~ÜwžË {qßuD0ÄàıV®¼Ÿ}ÀÊ$»<¬»ohê=ç­²†ÞÁ¿6’æÊ÷ Ðcûá‘÷ŒxÿïƒþBP¨As‡Ø”–¶=’B”™Øñž<´ü½’‡Ö‘äæ’6_4ÎG}è÷Åýí‰Q¨»žæ–c_ë ÿ¸õí¬Jåì¹Ð ¯îÉ*ÖŽ/r—Ç·ØÊÈK˜ìöïFK e¶ÿ\pæGÒ@£;3ÃK ³Rõ—…^Z®€ú«à’æoÇ’W2‘¡ÔÍ…–£*ñ˜'°¦ #½„éØ"ö±*Þ?Ûõú1r@€ø(waš[ÀQÕò¾·gϼbš¥Øœ«Ë–Hr?‹¥™ î?‚-…Ì!F“åÁ¬d2„¥çOãŸ#æÅ×e6ûó; aÊad¶Šç;S->aË›ÏEZØÜѳ»Q_ÉV"§ ˜õ±5‡°÷Æ™ÒЛËr7zç‹ÐøØ\ÌËŒ¹²%Eýš¨Ø°/"kÀLw3å÷îE»©â>\ˆr~,»”ü·Šûë¡K``¯¯½ßiù»öú}¥p7i»B†«¨txɯÓêOod#ȉã4ÇIÞk¨èúÖ…ûÅIË?Û‡td2Áõ¢\½î˾^6­&Ôt«×†LN&³5”³Ú1yžAí–7VL™KR­"ö¶Þ©Æ¹ #ð,‡š”¦™úL¿a˜ìVŽ™kvˆ1]Å„®UpÎMï÷…cE˜“Ï­Þ‰mŸœkÖ§>0ªs†$LP(ÇòÒ6ë xþœ®à^WtKˆ<|þ™X¾ñ”,(-u”:«AC€,‡ûôpÍ©¼‹~ÿ{ÉBéH‰® [fÒÙ°9Û–w»XymÅÑ›ô.{U Ö®¸üwƒ1½\ä•×pZc?¢ì@ÁÊnñÚèå‘+{q`WÞCCšv66“¿úd×hcÈE$©KmÑI ‚" †S»·ÿ¦l¦>×+„àŸâ]Žb¨|ºÈ÷F’ýŒßØ·ËŒ¤r×^ì òRFç\p‡ÜO»7ÄÕÅÏÔ\̈!@|±öm¼gÔ#h7âÑx’7Thy – d‰¸6/K> ÆdÍ}ëf_GÖ x¡iÞב˜³&Ó ¡¾Öâ1¬{¼~ë3vO¬N”V‰N‡GÒ/DÙ~™Ë«u~Ž¡‡õ3Uõ­Ig¢~µ÷²Fåp-c+ÜuqkàC ‰æ‰”ýRµýâ,o5e¬‚MN!5y…y7’hAž¼Û·tƒUà”zìñ:ä»Á¿ªrf’ ÑÇ,‰%¬5™›o_¬«÷ ½²dõrÙpaä6Öl9œW~üŒ3¢bË ³x5Ï^OËÙ?†Ä˜übÐÇá¤Î^×#y0jˆ±‡Bi0W–Œÿ†i£»èrÕæn\ sºÑ¹j Ž%©?YɸÄ}ˆ²‚„¶T–c¼f*+¡O×ïóNLÿúÊcŒGãõþà5¼AãEǸSt‹y¼ßS7ƒ§U»;pÈÄj<ì¦YTCdL*„@NuˆÃ ÂÅ×sáèsiAuä ?+ÿ2QíXD½¨à£ÐøÒÿšîIr t23£pDß°œ /(îëE[T^1 ó¥;ãù—ÿWÔ5Ϧw r²±µ†ÐÇþN=øÈgåk„\°€tî†EÂý`Ã-a ¯Î<ÏZ¡ÓyÚ]±¥µê]šúb°lç&/“þ̈S‘°Ð>\œÞ=v…MƒÇñmt±Í\‚¥]ªÁ¶#Gÿêæ_f1šãð,SFu–YZâZð1Ÿx,B}„¹ãætXv_Q …ÜñnHY[Ú¢ûíøN’²W¦+Fñh1qÊI.‡ÔËq=Q¤A,H2ÑiŠ,Ç€ž [xn*?âÜØvÍ÷EÏÜNDÞ¾ÊïŒ6êÿrPŠV%•[?Ë'dE_p¬HXÒáh Ù©>\wz@øvA9»ÄzYuÑW~&ÞN>“-îÞ1Ç\¢H1¯%#ÛÚcK•)U{ô“Jt¡Kz=™p8Ô9 ÍÌþ–£Á‘jI1=÷'Áñÿãg÷Ü«p_á"#ŸÿˆRðA’÷ʉÔóJÅ̉D¤AøÀAqÉ~¡nãeÈùy8~ê +;Ûcy£k€ÝhÄfÚôì³&² ^pL] À¨œ,é;›MÙÌ Ïpóõ&*Α›!©­ÆO§÷Ú¶5C·ƒÖ2ÚÆË?³(C,N¶U%SƆbÜ „LbözEÎ[ÑugCµKuÖó†)ƒ |^ßky"ú!Ÿ78óÒJz§2D”Û!½½k-FËrP¦ "ƒ5&¤“ýœ]%O—Ïr¼Õ© õÚœ#Qº!†kÒ4Œ©žAO‘t5Œ=.I€ól†òí X_þ›“naÜ»¶NŽ Ö!V;Ž(k2þØÛ©5#YÊ‚•‚¦*6¤©Ê9ç‚+"x°ýÏ·ÉM_W¦Úlݵ×BëÆà•f,ÏN/û•VBwçq΋$¡ô"9ù§'³¹.8ZåòÞN.Ò @2ŸìINVlËý²î²/‰­ã6¥½U ˜µ¤=y˜³ Z§ØÍ‘lºpIJ>§;hþ¯ýu7wîžæÔ}y)žºþ`Åãæø«~m¯}[C޲­:ŽÅæ«‚í“ëê7{.·é©ý6ßÉv“r}ãºC<"e>D±~!Ô B†DÉhLÞrX T5³jèbi‹Õëåt¦‚Àm[é\Õý‡Ü€,.zñðY,ͱ:Ïêb‡“%:g<˜Å§'ßýð?²?ö ©%ŸNø„H*U¡­ÐE’ýRpp¢1¦Š\}®›4T§íÕvºgùJØ«žªX*(<\ÿ—òþVâD÷âÅìštˆ¸ÆNÞ|ã–C¢1—€÷þ+uOoŸ•îZ]Èq榳ã>ÙŒz¿Üâ+¤3Í2ÃæJ9Eäò)£õ&}]Jýþ@­¹öÆ Ì gà¦ý’ S®9Ãy‹%K—V”ÿÃñDûçeDÁšmxÑ|i6Åõ`vBrR ÖVºéÉ‚þ´wEmÛÆ çt‚Ën9›¢ÝîAµe|–3†Ïzm8tí¿“ÈÈrAä•ÇãJÓ nV²v7,k…·›Æ†8V6SiÊ9ÞAûÜ:yBòmΔEI¨o+"šÑ ìø‚$c·v6ƯaóðŽÛ›m3…œOú\ÚÀG¯yIâö5¨õ8 —dyë …¦º¹Åeð‹Öã©7g­^ãÀ‚aÌ)©Í —SÙ#Ls†–¦ºåƺ÷§s²ÁÂ{B âGÙä‰;Y1n!•ßß&îã’õW¾héœî¯“i ñ凯´’ŒÃ o ‚öio>/ Õ=« ÉÌ}Ùe;<ç~N€MHC6¢¿LtâH[ÈÉ ,âƒÅ·mX £<Ÿ% @³¢=oï{Æ‚JÅ)G0NúÔ)õ(HÃ>è‚ýþVyÌÅœ/6’Ú“™×MF‹Çéi­æŽÂ„!9)O¡å~6zëTßÉudlºS•Ô7DZMÃêl'SÎC4™%Ê…"*.[‚ ½üÖÖ›úÉÒ?Úûý”4ÚVXS¬©çϱ€Ò\Ô‰~ýO­ª#Ž$»Ý¿«Ï¼Zœf‚ï6›âý [[}kÚ ë3¢ùÞµbîÍl—¿ôÙ&c¸D3IDCW“zŒŽDR˜W´ÿÖ÷(8 ! 3·N|÷Û æ<6Ök qN»8í®Ä–ÄÎAÈ—ÑPjM‚íÖêN®F ªº(•÷L±Qd¸"ÂÊØÃWR(×hHò°ô‘¢¾msÞ W˜l¬5äYdà2,¸Ÿ%.YonêÑB~wEÔ¶ÈÏ® üHº%sr¸K«~vÕª0„¹gî5% è¼ÊlÍ„EÍÃ9Šv™?kˆ± ’ã̩˴,ĵ‘þ¹f˜Àe‰€§ óZ+Gøðq2Z®ÁQñGA Dû¶Kÿ ]ÂÂhæ÷:WSZɱBéÿ Wý¼ofb%½ÿ?2¢Š‘ Bj ZÁ¥(ê+ê®H m$¼²ò„ƒ9úï;NÜS÷ÇÝôz-Öþ’ü>˜Xn1BgK5kuÜy䌶ãóŽE€ÍÓXY˜)k‹ hÀ¹?~|»™…I.¥ûvnØÃuêoÇqÔ¿¬ˆq{£Ö¯dk) ãÌrÿàed¬µˆrBu?æÏØ=›ñb&¶¦]øŸò—2žG6[¾Qh©É5Ó&Œ¢ñR4·û ¡v%Žk¼®‡6½\ Ê0’tÝÉ û—ËLbÌx›W½‘r0Éà t£äA YJ,gw.( {”†ÏPcù'¬û¨ßé *¾¤ÃÙÌÙ6éõåÉ­Ó”Aãxõ9Sý„$” Ìáã ÍT§8~A”&\.ÅðÂj¼ Pç%»AõÉ)É?¦Nr.ÞÑ“øc‡ ³}ãÔøý$™ŽÔ\{0ЯÆ/+“DÓ—3\vÙŒR‰³MR3ÔEï \§%°ýºè* d[%/Ög‡ôSÈi–ÖÎÀªx¹RŒ®º}™ öU´ðoˆ !+–¶Ã¹6<•æ´J Ï>•, AÜà;3!õœi'HA’$ãºÆæÁ7ø–!É0‰¢WEöKT’¡3ȃ8šPA´®@¹xy<=×Ý!œ³Ø½/‡î|Oy£-Gœ¯ Ÿ 8=áaLõÕ—ÄLQez5š$ìœïåßM˼üz‹Txü¢jnX8'*<Ì j¢3®ØlVÐî@CÀžpÒÈûņ„²ù~·Yà#»Ø÷Þ÷¤°$–ƒ°4ͦ`È÷.(—´ìWÓ†ešÙ¤òpó¼—œù~,»vêÈÓÞš–]¨!¹H7‰É2K¥×ÒÑ÷ÍáúÜ(—:Éyß„ì“ê&ð÷TzRC2÷QEiä*Oçˆ~Þp@ýóÒ5½¼žCL~N 2aQìÙ–¾‚Æ@“(ÁÅcG ±ÛiÏדŒn(¶a5 üvëËñ’>÷}¥8häI B+¥`9M<Û¸Âe§´>2É¿ÊìÇzxë2^¬øaf#2ŽÖ“ÚÓì›#‹k5_}ÿ\W£ê“è´÷ã^a.ã%ã²6¬ð¼º“Cÿ ØÂÊsäkÿ Kûg<ÂjÆF+¨Þ1½«­ô¨—ü=6 Õìáa‰:#jÆ4\q𦢡uÍó^$·óê°[±@üK7÷ø›J9ó[?M>Cžþ[|b” 5(¯"kÇÔÌòuPÖ²<¤3]’›ŒÅÜ¢ö‰~5\Qƒ%h?7#HˆQ®x}¾SíÌê€×»¶VIZ¡¡LŸ÷Tx*àÌó .Þ¬XacwÔgÀû-–e¦=¤·¿™qLžÿ‹\Ñ`-*ÇqœDÊ©“,†%hØvjªõzøÃa½è °Ï˜~ËGVHçßÌ· ]³:’Ѭ‡>pœãÃ(Ù_ÌÙF/ ]HeæSJÔkÏ ¶93,cPå¹$‚ìy6¤.‹~7Úœ>²4B ™/¹1™·ÿcx@·¾L®±`4¶¸™ ‹]z¤=K¯êÅÐ實G2Òlæ{7¢âG]èkÙÃîØ …ö⬵‚‚ÅtÎùâ„Ô…Ð÷Ï{o<–œ‰™ŒQ8çºÂ“ÈüÿŒÿOÜÇ“hœ?ãöwëuÀ$½°v@Â`§ƒºdt¥Êf’V´q|jbì;’KÀÃ5½B‡(…¾—1³íãn e’\ÍæÛëŒî(±rƒÀã;æ3€s¯}qDƒÔä{ëþȸïÜËò ÐÃsŒ4ÐÞU2eÓ½/u\•iŽʖqõëÂè™Ѭ·gÿ\r‘vTš²“FBÜ’~ÿ;ÓJw7¹¤>[õ]£È;ƒL­©â]PèJý‡Ñ°Ù,ÛÞâ¿rƧçlxÛ~™ŠšÙ æ6Ûíb§(ÄŸh(­HùûßoŸj«€Øu0»åQæ~a‡e®Œ%½†€@Ÿo‚Ót\)Ê5Ó‘ZLë¬Ù-›nKqfé]R®ËÍ=E1dHû#"„ø¯Jfßk½Ñ–·ÏøÛâ}]TAå7þ¯º§“o*6˜Ðµé4B¹l‹`!ËAJ¥¢º8Lžbº T}IZº(B} ¸Ú( %‡i‰ºçµäm¬ÕüEµ ïÚį:„â½ö܉޿•›[PðIÑjª‡¾¹dýe=ÜSt€†5©O7ÆWGS¨a#’Û‰„%}}‹ñ̇K‚8²$•“[`S©á|/óÈb0WøøVG«Ë”?MeÏÚ®4Ærš%šE-ÑŒOÕжvsòlq4c ÔOÐgë­ƒ|“iפ.Þ¦Ÿ¶ÛðÂK³‘‚áFçVo ûãÇb³ƒÆëë†(Û€ÄqÜr2¤.¨%µ9Ó÷‹TÕ%¼”ÑOê_7æ¿Ðéã#Óì2C~A8nÈ·ä3î·Y^»'ŠÊLŠVõP™ë½a†3þwŸIUòŠÀÿxGßsÉz¢:åhÌÉ©éš?¶zú¬"-:±²™#Ìôç¶h}žáË|Â\øeôÕ™N}æiöK ˆÿx•9ìF¼·áH>?œmpe´^†6ðÛ‹HrM™óZ?×jq³Ðá9/Ì·ßÉ_Ù§öòCr›HßÕ`¹‹bDlÕßääÜÛ…sTM…輊ÈäÎä=gtãS#bã¢ãÈé^@ €äk›q“œào¤8¿Pº·&éz¶í«q’¥i;á7«G5Ony ž(G_vÛÐ\Òο_•âÐ_æÈj€¿—Ü¡Iû:¿Â#[ Ik øÌ¾LÄÞ”•÷ îÉÔÐŽåºEGå_Lù#pá;ƸWÇ'—Qá›rV϶é÷HÙÁd\é¹å.p&U:¨ŽÒÙÓM\c!‡hÃjJݯc(«øãŒ9èFžÓ¹X:HóKŒ‘é0s×ßJÀ‘ú³þ ¡ð¼N×?{þ¬ñÓ뿽v ?«¾¨e”oÜ]è­FÖS©ÕSbOwZ@{ÿ³¢¡3Ÿ +O‹ÁoüÕdü¦'!ƒ*Ý'÷^³;æ>b'ŽkÇú™õ ý¦¶;‘»$M çcÔczG$‰äsß¾ý½goà6ðå3ûUS`\:±‘w'ß[!™{):¤aÅà®—c µÚèTÊÂ7kO´rØÌWùXÈýàî˜^~‹¿”Z3ïÄ õŒkP$†„Íü‹Tx•ÿ°]ç>Î{(/:Ãç 1 ¾äé»_A X,ÉÔÓ#Ü<ÃñsùQþ“j’¬eŒ-DX Ý(ö9?ª¢­™’‘ oŸÂt_ƒ}Us$y _-É–\¤BòFòäW(3½»üâÚ»2ù"3‰am9MÆYytätIkS^âV@t³ý#\9°§7ËL™›;ò …hÅÞœY¨ÍݲdɈ†×¸;Þ?˜‘<”`ÿ æYSÖ̳½ð &˜ªžö~/ EÉ|Ê™H7›ƒ…_ö›¨¹syýÀœ6Aë4#ª0õ‹È¬YÝEMqÄ¿oÈ^]ìVÞSƒæšŽÉõè®5Ko;‰a·KÚC8¬D œ oàòŸ FIã“"‹à†ãN‚4v, ~zîËi‹g½-¦#ÜÆ´…„ͽ:?CpÄQ̱”F,t=DYrîoÁžóú6ð¾·ÒLÒ™÷Ù7 àIó‹ù¨›‡ÆG¬:›JË×å½ãï@¶ø ‚’±0^ ·…(ÂWõÉ9ϛý´\fÇ77ìííFñ<„zH­Œ£L<ËV ÜaÿÌWÐq=NgI>t.Åÿ3êYM„·'“öo;³t´êß\rSË4)væ\£W°ÂY°Ãøuþ¥¥†áTן‰ûVä\¸M«ˆ]ˆŸ}Ëïí¼?u©!uºº÷˜†õ?b× °yf¡˜êßí“0ý&Eù; Ê^ê £å“’v†SXªsL,Pçë Uÿzak( .±~§þVÈ,àE3æò¥G=‘Mé&sy }* [ÜÂ_QêV•º¾ýÉG‹iu3ê!ç "¯ÊÆUNRöŠoâ ¼Y^)ŽÈ©¯ðægò#ÇGúf’x}+#c&hAb•dúñßŲ^Õ¸l^¹Ã±5{"Sdž_jÈÙ Y Ù¤ÅÀD—å5–t’¾9{g€àÍ4‡ÌfxO33žDÌ »>¢ÏûÀàâ÷3´ Må³îQRßf‡a¶sRÁÿ€þÏ•. ëÈYðŽBilÚŸçujÀuý~58‚»ô?|û†¤ÆÝ3w‘ÁÇ$^^°ÊäØ4ܼ£²Ih4WsºPg2ò—qªÃÒƒ¹YùA£/ÑŽQ±™=¦fÕCaml*3ôQ*fŽøò@ȬǨ>„ö,Ô_ÎPÿPDšoe´G•‚b è=Á5(_9šyÅÔ7{‘ˆÃì°•Dy3ˆâá†Øs!üfT݉*äÜ[y¾ÎX‹x”…Èê›…,0ËÒ]‘÷®iÇÁ0ùªµšÛOªa[Cin*’1HÇœd¸tF”á§Ã‚°Î¹ðn÷¢zn þÎ$j¼!=¡E¢ ?G6Üãõ5ÅDq~9³¦]ÛùÇìHp®dµÐ9½sœMN}ظ`³šÐW2°w¥ÇüRšW}n^/$VR×BtUdEóŽAvFBO`6èüsÒs÷°3qWL\bFK& Z5½™øðeLÒÔ›~;Šc¨¾ ¦T'úâÖ÷”]ª:Í;‹i* N!Tü œõÍAPá÷¹yåãh;Géeà*°«Ñ‘–ã³;ôyQ2ÛÂwkĺöy‡<ã_Ùn܉¿&‘HãádJ É8DöMx²†§=ù° ©úæÊ{ÔzHWÒï°*œ‹8wä=«—²3ŽH/x­‰w×÷øðƒ}éÃࣈby›±Œ%‚\¦].Ý“þ0ƈÁÿájeÈå”%Åûd±ºX¶Â5-Dh©(¢NÁzW:‘Åè°&±öŽÉc*Ñü-ü˜œ ä~´ÞÕ¸]$ïñœ;¥Ì¤†3e"Õ])¥o[úÛ^†¶û´–Åû÷ýä—32s)ïìcIʺ¸X:Æá1%ä³th¡k–HéeDÄõ=“[^ /pÝò,í‡ŒÒ €©ÕIZ G>_×u*Æ.yµÇÜ*'üx®Ô¡vYðùý¡/ã¥ÞkûÄïµ­˜‡—GÝ@J—1kû~U>».0§ð/c蘇 ¥ ÙÝ4‡>1ÆœûRXº”ú­w‚Æ!ÒÞß›¹ø17\(ÁŸ‡8³Šd 2ëiºÑ(;›¤ºe¤×üðŠ>BðåÑ‹ æÂñÕÉ{—ßK˨l…Ügïl8‘uŠàˆ4FüR)†9¸®M„€é„Ð7–&¶œ:¨Gn÷?læéž ™ù’[RJ…ÖTÕq’^{H—Õ}”þ]EñD°…ËFÿ}“üõÈeÒžÊÔ"¨‰+Îbh5”( z™JƒÎaƒiíS62ê,´ñ'Óî¶1’PÇ{F7;÷%Î*0â"ÖŽjöXöËÞhózΊ¡)û´[‘Êõ9ÁL÷»D‡Ïù1þØ3:öGç° xÆÖ{”ûЉ4òqÿÏØpâl@³2#Û(ø·€8TÞE"¼¾wË¿þøÄ\Ãþ_=§~8bÅøI·BléÇH8CÒg2pL9‰³NqJÒðŸa^°WôeÌÿz„“SÄ–Ó¾…?$ÔA]§›­¢TDAÎ,½Š;*¢tæò´öÈÓ¼ž>»”Eðç¿êýЬšbÇzPPy’#Û ~äÚý˜Í¾ˆQ6ûwÑó8&²û åDEÁRå ‘ØÌAþ5ž‚\ALŽP'êpÜaÚXëqʬ; Ñ£>,íŸó>#r¸ÌìÓÆ0üÛ‰SI|„’#F=*´OMÞ…Oâfçœ1‹GW‚§=nB=#ô:ñçÕN_›ž]æO¡ “©—Áã)Û˜@D•µ ³>fXäŸ>Zèi'¤BçÕ¹”ÇuSÀXÂÖWTuN³ÞÇž<Çäѱ›Ü,8^Út¦7×›.‡äížÁ¿atEֿ̽I-ЖÝˤDJãâ›øíâ§Àúk}S‹ˆÍ¶ÞEÒäÕóª¤Á{J' žî»²Âd+ø¤ªý2C—ÃAUgƒ/¦Šý× y¬>2AÄ'¼Æýí®ƒ±¶tqÍD”˜.ã=°Åìó¹´Á½AÀ“j$—©··™G^ Ѫ[Rãï^> ¡¬xê¾£U$¼l »A‰/ôÅm«Ìg&Â<Ðß7Í·|ʵbÎäG™™ì(]«ß†Û4 –¤þy ¿eZÁñ[°Éi-¢ç½ESÜ||pð8¼–ÕLâÛšT›·Î¾mf žêpέú«‘¨36S #éYZ6 ( xÿ¡¢¨d¾b¼=”þнcn{m×ßò7Ÿrè~ÏÓÐD„ðŒÉJ%rÞöB¬uoâeU¹.Våô;m$†¹ÓÄ¹í¯–Qo{¿ €Ê‚œ¶Â<25šHË=ó"P’Bôw‡ºi?~%x”h¾C”áhC5ß¡ Ø‘ÄëPp¾úQëõœGôx>ñg~m™Rñ¤Ì²ÃfZ’&<åÒŠ%kwD³ÈÃÛ¶²g…òò>…¨ÐÊ¿­&ƒ÷p²Îc—ŸÚíf9®¯ ’^?EJʤªRi®Óðs1‡±fä‡Ì¸›¯a¹Æ©­±ãâ0íÙ1Å¢-”TÂÐ̘¾ç»šýøã4Ö;×9ïR׳¥'3ý¤bÓŠ_»°úm£[MÈã/ ߣí1yÂ&™FÓ£ãfqßɲn|žúN SŒ>±ü³<açÂÇ“´wØü.ΧÔv2< Òp/w I¹”ÉC,Ñîâ×ÅÛáùs›.¥¼Í ôlæüzÆ@‚Ë•Qü;™£D@¸~Ì3 €ì4Ÿ)­êcçV„úÚ¨ Ó½ÒV’cB^…¤5†?çñŒÎ{xóW‘1¾Ý•ëßÙã$TàJê!-§Ö~åH-´ä³¼÷Cýsl¨šohñ‰äŠÿx¹ì¥V Aœ¨„u‹.“°SÅ1¡æ~¨kˆöpnÔ£pä(——“6ŒÑí¸ÒÎáÛ‚Ä™eðÄ“èMo«;E nŠ)\TQ0öQÉXòbÕr„Óù/ãÿæҜˌŠÏ N°æˆ(-¨è(\üzyã¡K}®ÐøqÃäa ,RòÎ?Μbl…ô\K5yä|õ¢jåá=êDI}V¢þ²‡ÁpÖ ·í6UçÑA«€ÌÃ2Á†õŽøèi}¯ñSNáî&ïñ¶Ï¸tàM¿LC aG’Ê–‡á¯ï™ ’¸jîfù9˜6; Ãü˜Ï)ÀÏ…ABVÒ44–¶š;Š nǪ— ‚*â-O1æ¾c¼â%/żޖðYÌ<‘q¦²úsÐ66î]Žé)Þ#äAsR)5YŤË? ®6Â3o]ž!èïkiÿn¤žZÆP¢ ÒÔ3è 0ª”V÷G½hG®ðÉŸP¦Ò櫼 `Šþ«g ‡P„@õ¯S—1¥;º'kbŠü´?$v{4¿Ì‘ bý[}Œ¬£qÞÆØ\!º" qðíF••ijڮ†iè¡=*Bï(ßù"ìz™ð8oÇk$>I4Ér5lÔšsPÔØ¶Ng>Ýjov®Çƒ ™SÎxN“P²Ýÿ‹nÊBX‰~©îuŸ.…çDèë—1¡8¦`Ådxôsüæ]kA}á«´NÕjMa²ŸábÖa$Á5•v“/#:±if*Q²àx’½·u|#ÎZˆúÑ´ÖHÃÄ+¿¢´×Ú»ÝbøbrÃýüjDD”ÎG×¢Df 0cåiW3%s±/¬å7|ÿ†š&-Eõ_I ÿ唸uÉŽ†Nн~ ì¸äYº‘Ц7œs '*ì+ê–褾Ö¬æÒ.'âeŠèCáåÊ¢¼÷­’Fbl·™=áÃ1–›f˜Ò¾|þ¾õ¹ûcÐ!§ˆ:ÎjÕt–’ýKåVw¾Æü)þ'Û7èv õÊÑ·µ¾·ºçáÈb£BMæîfGÄí ¹ØJ¥¾{Å!d@:%O’˲¯>£zü‚¿.'uŸÅeŸ-éˆ;¾ÿGŽ-§×?9!$~ ÿì u§ ü×´ñ¾n†x¹ÎÑwÊ?8°iÏ@>ÖS ùÙà*€ôÿ "Ž1…ä[9Aá9Õ¦ËKíìe-f ¸žŸÖijۙy)|96]_DD\³–T¯c6ÍB/¹ÕOkYû­£~þHé ©•zøña®(V ãK2³Ï0Ödý²Æ‡j-.ùÿ#¦ªÜærï«bŸ‰â{ŽÖãÞyÚ›¨iÌvá ©HŠ&ÀßCïx¼ JRÞ·›Ö DØÖ‘.ÚÖŠºi‹Ÿã%qû²âÊütIc +‰9H¡)ém q¶mùǽÃ3p©qYw@°¥KI)v6¥Ìrhjª®²ë~}ˆökÏ4§ÖÎJu±'è¯bŸ‰¬£Jä>×i :ÓcŽ.o¸ùyUÆr·nÛmÞ &Þë]= F—ìåÎО„…?‚ykž}»èÙÞÖ°’Œxße…ݦ[úBÛ±!Ø1è¯b¸eTlK´–ÊÏJĺ|üŸ3^µÐ ï~|@]–¿€àBð$òÂeÈÃ(-nG ÑÃ,-G$•,ô„}É5±NgžÁº—3h3EW(¢vÙUD¡—·´³dº†Þ±<0àQ „ºÖ8ˆ©L”¯{hwóFGó:TaØÌh†1ôl '½ä]`2Ç¿Mfi>åÀ´óùÄ´™b,ÖðK$C’«!2SÌ"«¶þÎÆ_ÎqF7Ô~wyƒ$4Ú†²…ÇSaù/Ûz7öñ„ æ¿úÝGýWud2½ŒaTJÖÙ|—z_ÖçÆ›—Þ‘9øó ü8߆dxïÿP][ü¦ðñå´ÿH²õ=„ŒÍvž>DÅÌÚ6+Ô-v¢ØG¿NTGí/;#ÑBÛwÁœ9Eû-s¹Góh'í#²nz~»B}þ ¨Ú„¢‹ôì ËGà]UË3tK Œ˜7Ò™t38Œ Ÿ‡!©K‡º„kÇ,ð²[ãgã¯ÔeÒrhîjöÀðw§§¬Gx'Äö6µš5°æ\¸ àû™BCµ—ܑ‡ÒkO„[¨À"ß<“ yµÃ“Ò¤ö z¸Ö$ú>­þ^éß^¥>A¿†#ÌIÞ' ×¹M÷ôжpÅ#y¼:Ÿ÷$4YÞ¹1®:Å8V‹Ét¶Ëê·†KºX´^¼¹^!‰hc Ϧ#fÚ"ݹÕd¾Ìˆì’ùyšMõ)¯8ãçî˜Ùñ®uÝ·ÖJ{7 Q¾+²ìdP»ìš$»¦hd k*ö‰¥*6X"4¼/—´CU£Šª~X&Š4´%Ï“8¬#ÜÐkË邳¡8ÕœÉÃÇèpd+q£gxòSj‹œbaiíc˜eP…r×ù{NÜ1~ÉŽ¨üÚ{`iWf¹÷Û Û›#rB|ýÄñé §õçÖ—R‡©uÚ×c)Ë.å rË:r`N í;M G–÷1çéÐYÄè?ˆá×iiú†LÔÑvOý4€‚©ÕÜ–ž·ùSõÌÌ”O΀¢q¸Ø˜˜Êp<§7°Â?aC˱ÆQ’$fVéÁøøS©Bƒñ£šÞ˜âÌ1`‹È!nuä@ò[Ê?'ìÝç$Å9=´ì`·MNw£(¼Æ™ÑÆ÷s)ˆcƒ²ÿÏ2aqË™x×^¼y^ P_õ(ã°íŸco;1†%Œý: h¦òN):¶ ¹BÑ…3ÓÈ |ä™ëfÒ„pó7Žý’ˆ^6÷úƒ›þtú¦KÂDáKBåæÐY“+å¹í 5\UöL˜a†L¾#g㦥ÆÐx*®d‰‹ÙÊ?±Œ#©‹/æÛùN"ÕÄaÈpú¤é^ý&obʼnV„–Ðtˆ·ÁÔëù㉱AÍ ˆÌζFýó¦,Q7>,×­9âðãø²¡¢Ä¶Aq–DyÀ±›…ã]nºÏ8ÃÕÖþ\äUó¤q&e >ØæÂ9ÆCÔѦòöÆg^nªÓˆñŸ#$‘p‰±o7Tøk+±½7ì7þ;’*G%öŽt1¤“–1ó–q+ímÙ3,­,Kú~ÆWÖÙŸ8v+I4¡ç vGŸ~´ðS¥$}ª†ò¿­cñ5Ç“‰–`¤PŽ¥«eý£S+3¸c£*˜ZNjŒ«©¿¨I-²û£`È]Ä7•ă£^èûÍ}Òêð>ž ÄÐLO»KÁǧ¿,œ|gDA©‘Ðà+"àu ÇœCŒ/šýñrÝW•&SVÃdt)rK8m>MuÈ¢.-?ïxù•{ÖÒKG0bÿÖï ^á;jbô'¢½PG@Õ-ç!£Œ'€‘ã' ïŒÔXm€ès2…‹¦ÃjÎäyQ~%æO"‘Ññé»þM爳R’§±è´_ÔtÄ=šXMÁÏi©"õ…mM—0ÕƒšI+8øIF‰-Ùp÷U®— ÝkÄ”n•~=Õò,‡Bކå\†éD² c¸vðl$yÃ9¹„£÷î¿õí«“®U$" 8xº6f1öÖOeÎR1\è¢?Uç>¥Ýl“Ú™ ïë;ræîþ\°‚é·*žU½ˆwD AZáó:%§g_·'qaºð«ÊMÎ…ðqébó#SØ!ñävüg®ô/Ü?̧t¨J‡j°`Ã{/9IXd¢ÊÇ®rÙq³•ü`µ3Ô§‰KÃlAsûžâXdI]ž4Ävךy5#å²ë›¸.ÊP KéúÃ_ý ìBš¹2h¹çÇLä•ð)3Æ—aebðNæ@¹»eNGWw1ƒ^ŒY’!º;q„Üà#§j‡}'ŒÒþf£ëË!¢6:$•^ÿ6ýj$ÚVc†«ó×ôÇ®F)¡7–éEÃ@ßMÞÌÖR™K¤2e ¨ztÅ ÊH=bÄÅX§RŒß·ûóŸ«ôÜoÈéݾ°Ëþ rG:‘T¤ûœÙúÃIp¯}fi~ç*F¼“è].ýTC椄°¢G¡Am‚Ÿ×1ûy Ë9-¾p­3Qµ¶.LÂûÉàÖF‡ §ôsŽÈt Í\çö²ÕVz/8è°Íw­æ¸‚÷Zª$æ&ÈßÌfdä…$ªÒbŽ®×T{j.ÙÔŠ%4±¯MK&»pý¶š!Å»Oï~*Tö ŸÓ[–Ž…à/[ØNÕÆ°v‹#ÀÁMV·²ôÄ3ä3ÛÂN0·Òðáj&A"Y`=EumIí¨ÐÛ²}÷m~xOfJ“B"å¤xÒh¾_‡ûZºØ~A—EKm0*¨€8n6ÅØ¹*<Ö(Ù¾g±J°ôfKôÓi„ìÆëp'³•©ƒTRª{#k°jZ޲»áSM´bûM|æ§;LÕb¸ºÅŠÍÏáÛ¾Wè/²½ÛÉ0Ê/.ÓC`»dKIê7Iн¿#´»¼O_ªAò´Û[p÷›¨mÇXl§kh@üN=>˱kÖ-t6÷íC¿"J; .ŒµÌ‘†8^’“bþòI£)LCYÆ\|§ø^/<&ëAÂj¤ÄM w9 z|¯›Om4$Éœ6G™¦Èjoï›¶#U¾ÒeŒÍ6Ž˜±;u'¦üݲœ½ƒQnlÌÚš‰ˆRß$lá§ùcŽyî†B;åjó«ˆöç… |Øæ'àˆ4 š \)ÆëõôAðø¹p3iˆ0#Òðåá;û¼XÑ_Ÿ–­x ò¹¤iþ&{þìÛ×'„ådf}Lãìua;â¬A‰én»Vš;¹¯þõÈŒù‰;r\võcíiÜSרO°Á‘‹½U8ÚP¸è›Ï5;7bÓ¸zê-ÀƒÍ«â+ÔsäÇQ½±¨Z, âÞ!Ô£¹á!ð…£mˆÀùÖ§¶,®E*¯ Vn~E`xñ_SœÅr¹Éð‰ã?K˜VÞxk°{\dÒöS— +“iºõ)< ØÑ˜5½Õóã•qóÞó¢zC¸™a ¼˜ýÖÒ^u¯eíRœ8örìØ?‰28öͪ ½ˆAzýg/ SGÁ«+ #Óq5„@÷ú sì61ZÜ +Åìó Űb¹ù»›KC±¯ùtzË›Xa2  ¹ €°ÃÙbÙŠ.† iÿwYƒ#ÈÃf &¹‡îJ%IþSÔ†£öoVÅØŽ vb˜ß’°ÐòeÙh‚ÌËS Tpé©Ü9õ‹1拏­l7YROèQð=²ÝÛeÎ^<ݳÔjw bñ–> ÷@œPI$=EfíOVoÔI²7eRíŽ=Õi¶Ó°òÑVª0Û÷¦±Ò»ÆJÓ¥<'¹á¬ý–—+ƒ«þ¼$ ~39ýÌeǯ¤9º#$ò"5“!ì}d;¤bÆD‡ÈÕïΦjœ¼¦üøä¼o*:åMwΫXt;ßG@VÐû\Cðì]ëãÚÖÖ<¡ôæ]òy84pÕ6…\q3üÎÎ|<´7ÕË*~¹·Ôšô£‚þ4é«>F¶â;Ø·%òƒ÷O!Såu+,—qÝo5G)5> Õ§åÃoݺÁî®X¾{LÁ'“Œße7$Õ¸^ ù@‹‚¡ÿ¥I“˜$Ž¿KØíæ3³«§»ÀMQ F4PlE­‹Á×<Ë(—½Þ„Ñé³?¹ÍÊE^›qJØÌŒ·RÇÏÅ2|shNqú¼[f)ÇèÑl8Œ;œü“Ȭ-[‹Ø € à¾;üñbÑ©ÿ‚ÿ°¤¥RôöÛ1êJ(V“Zc‹äØ&ÍíÙnf°Ê\KRBò)­-xÿF,̹¥ãdJj<›Ô_C'6–§õô¶Ê›Ômë€ä8jáÏFA‘.%Ïá<Ùù5Á„_ 8ïiÏfUæ…F˜ VÐ"8"o3Ãü!å ~·—%£Ì9Ö”ÿÞÜáed@?Ç/«£‡óTц!p8b 5ø'H£¢Ç|/Û‚ êž™¾ 8"ѽòÕ‘2Â`#OÏ•›Ã†íŠ?âóŠ‹ÿ£ŽÇWµ€Ÿ?ë@¿Oãõ¢öûx¯½©M¤'RŠ¿t„:LÇ·œÍ3ºY ]·´:¿Šp—Ю]I8QÅN(v9å«›Œ|=[GµÞ/ZCfܲŸÑçqk§@Ë/½ÆtS0¬â\yçÓáf=çvCŒät‰K˜±nûŠ5 hÊ%´ºž1E«}¼-ª‡ØÎôNŠÜ‚Òô/a|ŽÛá–[—M±Š1fo…\:D%8© *vªöÿËa¸5‹GÆIŠi¡-GŸ-~0žjøV=m¦ªW¹e¡—xÃøx•¨.òçÍ1ÆÖc¼½µù†WL)Šß±=’‹ø™Œùð㻹ºåBšÂÙG佫¯~“ИÁ¬è’™¨!/úpe³/tŲ£Ét ! ý&¯‡Õ©¼éºÈAZ ›ˆô ÞqŽy†ù§l$¶%ø¥}‡Ù'ó¢OÔÏ‹,”²–J•òÅI<0¾¥ßQ¶¦Äl.—£¯ò¶ãC ˜0û3çɧaþ ²z:òíy¾šX–&ª0À¼‹÷ÑQýæ/ëtËXö‚2F–Êaj#Э0ÑYŠÜ†–uœå4‘¡aíï›0ÀDŽÅ"ÚJâ%É´<”fÝÅxÇ7¯ZÚ ó‰ eŠ­8»3KûÍø=%Á7hø-.>MîÖïW"†¦KÄ+IGùoT…œŽPÄ}™ö‹$Úÿ"r0ù5µHU;¿«šjc˜~2“âí¤Ê^/ èJÔeý\¦Hô+Áj6SjÅj>ãNáñ–Z0ì(Ó4?·ËÄͪĻƒÙ“iËÙcb÷aZGù|D]DÝ –•CnYM¦V©õÿ[y¥¾-Úàçd–´abÛ=0ïzj¡J’<<’LQøvd~6$ÂzŠŒZéR]”OÍHÍ­Í/Ø©×åªõI!îCÒÚc ¢ù&%}N‘•=Fëõý }&¢+‰O¹¬õÙ¿[‡ú˜y¬Sòñ¥Gbü4¾F-š†¶L;M‡ÙVÌ:ÿݯºý¥îÙ±<+‹i  BjÄ9VÈBÁ G¹bHxM…÷©>ú5ýòþ˜|‹”˜ìÓ¶5×2ŸmÍ£Þ¾.¾¤òà_IœÿE´¸“­®u[\‘-?Ü'PáÓn¢â“ñ¨­C~“‚EnÅà0omRA<ÿÉi‚ÇfZuþ`ªý´éÛ«²^E…Á I ÒW’å0uñVRid=ŠÏt²©0Š6Ÿ×öé!i7¥–ZTëÖG~ö¯Ýn›]MwéF¼NŽ4ª4²ÙZHüúÉþ`Ý›d÷Íæ£såÝÆålO ERNç ù®®lšêÛVÑä?ãýZ†l…7W)èjMyÍêo»¡O檞Älѹ»cÖ1f¾F²,T$ÂÈžñ§ 6™éµ$&,l¨øêCZÄŸRe{ت­¯àMŒ$¯ÛTî^›²Zyl»àqŽQ¸¶§\ϹwVÀ›b©‹QýËAŸjæöÿÀòç$¶‚?RH˜uXã©/Ì#QœO¹CB†1RbTþb‚²L¦³Zæ Õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¸õ} °ßªÑ hXuJ0$t­d”£F–czë.'¡âäxhójyUµÞÞÒ·³¡J= ö4¡Cf—­ï(îJ¯vŠÊg¶Žµ»‚m¬L˜F™U€›+v»T$ídÙ!A­‚JÖUm,YfZ=öïVÂʪ>ÖEØÂ›|u»nÃtäÐ!ØëÑáR¨;¼÷¨UÛ »¸ïf*¦ÁïOy=ìõä@zÖAtK£Ööî‹Ý…Üθfí¹š¤»ÛËȃÖwµìÙÜ÷mëtÝipG»mg­Wu¢”ª½`Q&6=ƒmºÁ#7»€.f lÛP×[íê QëuÏ^áæ÷¨õÖÑ©*iî:·;¹ ÖMƒT Í›7­éQ×{ÃF׳”èôP¤ªM»¤<½Ù–Ë/mÛmµmØâG54l›Üuë^öÐ=hô©,wpëb›u×{:v©¶[[£v½Y»{]µšM³»Ž¶™íº ´³<ósÖÆ¨[*em]tºªÛQXj‹Ø éÚÂ'vèh4µµ®çpi*twcmë«°VzzÃÜÀÈ i¶[[F³»Zé¦äÞÍå‘ ÑzCÈ îÞ]×5š»Þàíe•ɸPuë§ZÃUžçIN€{É­ÖlZ”›NîæÓj¦¦a]iÑÖçn£]°¶¶ÐåÒµA‰E[mµÑN®ZÞ¯{§»½zÖê«F–=³¨`Þ[@Ü$¨€¦€&Ó  i¡3@&š`L&10&ÀÓÀšdÈ0ŒLC&ÓbdÄ45=$2¦˜`i“€i€L`À`@˜$D 0˜ª~ž§©è¦§¼0jf£5=Sz©ú0Dðš)ãÔÉ=DdÈhÑ=M=2£zhž©íITòf¦Ñ‘©è'•7¢ŒÍMGše3Jiá2zM¥6)ú‰²OPi´ÓÒž$õ¢HD@†A2`§“FŒ™OA¦§¡§é“i(z›ÂL5¥=Oõ¦ÔÙ&ò§‰©ùHõ=OÒiè5OÔž¡µ=G¤zši£Ôщµ)ãT=ªhÓz‘å=AêÔúH6§¢~¨©€šL @&&™4hdÐÑ¡ 4 Âi€š0 ‰ Â1h0˜SOAOÑ 4 ŸèÒy OHÑšhš16¦OMS4ÓU¤’L™ɉ“š1™53M™jcCA §LLL™4Ú™10“™¤iOÀ0©õéÉ?sdÞœÌ9¥”l•2„©Q»&&ãq1¹‰¼*ndRYRÊ–bbd©eK)¹[5)º¦J–T³tÄÉRÊ•*YIeK*Yóñ2T©Q68+°RŠÅ8)¢¨¥*•J¢ªª«ÅbaL1Á£­…R©XÁŠR˜¥Sb±U»wKvæ1Ьc cLbª±X¥Ršt0äœÝ)±æ§úóÓ,ÖͨåSæÍhÌ5L3Q/5¦Ð³À_Nɳwl<äèOHŸÕbu¡Àæt+Mæ<ÄLrÉL Ë3Æaš ôçyÀ<˜â.ªñkif§b»Õü‹y~…ä×gh¿šÑ“JÕ“V²Šoi½C4Ö©Fñ ZopÖÃMqº”¤×§ l¡Mò Á¦Öa|È/¹eÌtɆcC=2¡–g²Ê)–™‰S=3᜙éˆü3m8)iŽÎR—Ùi–¼ÊÌÐÝ­&.H·±ÃúÞ¬[Å•‹‡o– hÍqråÍFÒ)e”²Íñ>|Å™„ÌŒ–±b̰³’æ©sLKŽØbêkªº%ó§†Òpœ“„ÙÕlš•1åNÍhVÈà Ӕ;ðm‡ñÚ+ä¸ü#ƒˆ¶YxáÁ¾íévØ×áݸß~:xö7y¾ÛÊr™òvá»äÍûkue®Y[mfO×ëwým­ûŸ‰ºruNSÈž¤÷Єâ‡i™‘G-1Œ½âë™m v™RØñ+[c|ò\, -ÞžïUÖeºØÑ* Rdœ‡”!ò#΄,K–»Ä,âËO²R*ÙyެÌ𥘢¬¸î©!§Rk©Jt ó% ¤·ÈR„É£d]U!dXÓ“ê¨Ôl3ƒô÷¤ú%Ö˜Ùý”Ý÷—›)Ó©\úµc â«JÅ‹é)V yŽŒÓÉ ©uzšrTbÀ’ÇSŒŒ‡ÅfiNF&>{€‘¦e|2ƒ!vP2ú³½‰“eD\ngR:Õ˜y-ÒèàjjÔÆ©’¦¸…s’-›ã(–ŒÔã¡–ˆ™[ˆbã,’p¾C™õŸJpTyÁþ­¿ÑÕÔòn*ÎâŒ÷´z×Vµ÷`¶[ƒow=ƒüPæ.<Þgò÷‡Ô,=ÕlËI;…#ºjåÑ/µØ^€Æ ìœÍ"¸dg[Ý ,€ü;#J2ƒ!VÑ:C‰rìLõ‘åèðÕ#ïwþ•yï±%§“kÛlDùÄ`žÇ„cЫ9Ò[¡{v{~|æã9ÀN3|Ä¿'*ÿç+.Œ,y aas «¦÷,| ‚¨¸X?'ñ1zæ;oJœÞšk/B=qÈžbÈÔL$îÉ„8ëÀ²¢Ž7Ù2DõT˜IWŠUߘ…ÏØ¬¡À—zŒSõÎõÅî.ðœòsz¬òëέ7iÀ+Kù4{Äô.?•tì¾/Ns•ˆ8JOÎ,Iöük)_pÅJœÎ$«ÔÛgµ³6.FÓ)#®VRûì­v›}鸊§ 8|›(xÊõV·ÑÙP„)7…ìb38›¸92,c¨b–þÅOÊÅ&›ƒ—VÅÚüÓá ϰî}Ë8^½îß°WÚã‚ÄylTµ1ìþËjð"]»dµ©Õå)ãŽäÙйI%Ïn“À„ÓÞÿu„‡%$4…„ªRN}b£§b—báä«Ò=N·‹0Ä`ÏESuÍ¿áú:;Æí-ì¬Æ§^ÉÊ7 ɱÂzAï¥<瓈%bN*;µ‹Ú˜•Ú%Û%½ÌµšE¬ÇZÃéâ'ÐÄšL.B¢-I œÖ±õo댄Y½¥N’ì<6Ä[ÙMU6±\¶Û•åðÑîð'?cô9{T™ôzrž{B9KuøTo…Ù\Û|Faёᮑáe1 ŽNüÚ¾ÉÅËÀî©eO¸ÙeOÌŠq]=y ò¶2}:Öà4Ç"GßÿB#§ãR9Þöù*ð–t+’ÏN°|eOK~Óë±æ0Lÿ¯g«ƒM;#•LTyÜ¥q ÓËPÁ„šäKFD‹<*˜ôÔ=,à9hº­ÓÑN"Ñã²}t(C%&ߥ<<ã1èoFŽ’?ezf¹¥ ƒ¶j¿`Z‘w¢ë´_¬±ÎÑÓ¬–ãfµÌÎ[‡Yϳ÷ÅЋšc¤ÅÓ¶ü™™ Ä9t™=uÿ[¾ZLÅnT‡q°ˆÍˆÐ¾É‰¾ä1 Â6NMD—ÕjŒ*wì$‘µAÄCRœö²­ûŸoŠŽt0;ߣÜ3ä±Ú=E¦—È2â3$M’Gg/Äf“ Sȸ5ÏW¹¡»kÔ$¢:ïÜ·$^oÊ1âTÔÒìW‰F«?,Q‰?OÂßøw;¬ÚðéØ3óì-ʱªdHZ'i1e7ú÷}±4¢Z2Ć™a¬E1UeSu¤dšeF%yº2ÕyÔ"Zv´üsf‘&JíD¨ou¥p]ÍÐóV‡;³³ß]“ù»§žÙ椑ò²w*÷h÷)Ž¥yºr)õœÅY­Þ72g%0H¨O3[³Kaîê~%r­u™™ÒÌÆÆÍ ²¦Çig½¾´ym cT3”š*›b¢sÉF2™jDÓ©Ðf’Ï|ÃzrŒO+ã“jM½x7ÄáÊõÚ*æ<CAyJ5[”¦øŠiŠÁþ7bÌ+7ÏïhÒ.t ’u:÷+ñâ38¨Œ ëI³\Òoºë“F¬÷hÚëíºUÕ;ã:¥Ë²£ŠÖ£,ؼÞáÄm1qÓZÄOëØÇSÝ7%åÏ6à­ZöÆÆZ1…e(Ý•‚´‚À°–Ý.´ÕÐ.üx³E3ÃzaŒa½¶Ko{–Ö™8Ô}§^†òŽz‡uŒ’w‘;ß)± ìÂ{YDÄŽâ‰ãw<‰>ž¿Þ,Ž:îzV*³ÐäßÁ‘ÏŠo‘É1$äÐݶ‚>98·,äï^³cë?þ½çTïœöêlËù…ˆ´ÿ #\· ³ˆjÚ7 ðY¾»F3W²Z$d©¹¤u’*Q7‰³kWb©ØSIR>4†Ê>at¬y·ZñÐ×EL“ƒ*Z4Rúo0YÖm‚oÙÕæuÙ¶ÓSz]%\¡gz产MÕoøÍ§t?Iýï¯~²ã»àþÙ%ˆI+´ê’U4œ«w:*½–¦MòØtË¡>u<¨ßœÔd>sI«à}#½×®ÖC3Á/@yÅ`_@G,>ò»Ñ²•ÇZgrgsÑŸ1°'ES»ÌkKYê:âh_L1Ë(‰ÙÙœY‹¼#ê—³ó®ÐuÊÙ@WFØ@©„—H¦H °ÌAN€·WǾ°%®Ðh@ø¾ñó]“õ-"®Â¼h þOå>ýÉ4M—j¡fö ÑßÀC£¶m1ãã·¾ €š|_${/ñ.šS¦¨ûH°‘„ü„ð¥zÿΡûeЋ/\¯eþ½7eÞ/´c»=é~¾«Òv]õA÷ñpâ]ஓ¤¡¹Sá ÆãE)èÑ᪷69BaTð`åT¼«8^)°Ù¸ÖðÃJbS±³K„ëÉC—Âì'´ý7âöݯ+Ú³{ápÕ"sôÍDРö¿£¡¾¢k’ø%²Ó÷WÚ]ë%]ùÆÎÉä[Â×¶S”pÿ¯uú}N6Úïîiªý õú])^üX¬Uñ°Ý©î“bû}ê4³ó‘eÑ\ qïG•’P#¶yKŒh/xá™™N%)6Ц Î DÛˆ§±Ôs›’ÀáUˆ^V  , Tî}€3 ¾4ÞGÉä:â”3Ç Àƒþ”ÊÌŒ¢Òдx¼¬î.»—Š~§ê¼j?MYÖ,Eh=¾~<¹mxbYÉͨÛã[pÈ€ù”y¬ÎrBˆ¬‘ñvPÛ«ð‰´Tû:F*¬,jsÜ#S9¼RÈÇÂdðhùÈ>ý9EDþq,œõ¥OÛ fH|7–/¿‘"–ûÉ1áÒî™#\°XXŸç‹; ?£!c$)ðCÔ©‘]–I‡qœO9„Éì±.d\pÉÇbeãì/_~øY‹Ô„2JÇ}_SS¾-o=õ¤´)=^>KÌxË0x™ï™·yø†œGÏݹð®Ò8f‹#Šv¾µÌ1h–Ve’qNQé_­÷˜z²*jÙ§Yªg8(Š(ÇÄp ´£"@oïÿ'Üö·f,ãáwŸ§=mħQP" ê=pGY%õ‹í<I›Ù¬¦>¹3+FXÏ«yb7þ!§ðËãH!æ¡ÝËeÛR¼Ãè!&‡!æ^òØ'.Ã&ËoÈBbä”q"kê/Ôr¦ïŸ‰¤Jƒ%‰-ÝÓy=—ºÅ,_‹ —µCº«yrõ]bÊWÌßóV}•õ”jŸÜéÛv¦ý¤“©QrŽÂÖ‘r)6YXšTw´ÅLý)²É7˜/óaì–7%a=>+U…=ëìÝk)Hê£ñ°ë1³1FoˆüŒÓÃ<;Î2`³’–tœ#[Ê©J*ª¥}£&LXd2™0æ5'uG«ÅƤ¾«°ÃÖþCføµqWRÝqª·{¢Û9öw¬ØtÌ®Y¡Züç~uŠtX#ȹª[¼ì()íƒjnlœYÏc µv½¸ºŽ\>þ'´•½ªÒ×n?¢Ãÿçõ/xöý5”ürfg#;þ5[UYÕrëï§›`ÃA­çVµ\«Œü.ó yb7BjDÕÈëä+\Ëò0±: ¼ã£×ž›[˜xäoEØÉ¡ÖÊݰÿ“wGßÎ’|tk—.²Ïa¤Ãîìøbkév›üdó oÜÖ›hÎGŽ\§¾¨ÈÕ- ~“äóÄ’Lñ‡&‡I¥@Âç-4±–'@ÿ? f ÑȆ|cCMW‚2-ò´vÕ[k…È+ŸqKz/´ÙÐÅ×°ÅJT|â¡SOÐ ãoïOŠÛðß^m»q½0ßvUq0.ÙÙ3Ç›Fæ¾¢—c]{NõÙ!·Ußvïê¹jµšÊ¹ýŸ õµ8ñ°óï¶7CŠxª\öM~Á½°üê¼ÆM·³©À™Ù¿å=5¥†Ûõ‚í»™ÍÊæûmí½;lJÆý1]†mzjeéžEP¿A~˜|vô£‚±wϱeaƇ±áŸÄuIp¥oyŽpÂà]!9t¼7Ç_Àë…°á<«[¦´FKËX¨ñ=Nõÿ?:/Wµ#æ±nSéK,ßÛúKé?OÄf—í$é6Rz.Ò]ˆŸ¯ÌKàr·[]vªŽ–ÝK4{î±mÕeí›ÌSxÛæßôÁ¦4KE6—€Ú“ ±÷õ[º¹z4ø9±?‡UÎ!ÉUŸ2UrN®z¯MàŠñMƒ„ð)Áàè<¿¾ýËw§lV¡<û Ó7mJ¿Éð_ñö쪵9é9w\6œzµ*²AÙóDv5œ_W#€Û ÕQ71ãüv_ÅÎ+^­Uk•úËØöÍÁ[cKŒµx—Ü»wÛ¸îâÕgÀØ«y†â¬-3K„î=¡.‡–ó.›­,s]™]%ªÓU¦–³ÄQä:´iFáãjf1ç=މ88rVóÍ.½t FVbR axa[í{«jªñrµ·ÎËúb«àuk^ˆÁQ# rE­·oL³EºÌæ|ÏÕ|´hk¸ñÊÑU²+MÁvO¼2ú·ÌV ß5Î'ëuU~%Vª] ­òXݳdÝq[_bh—rzw—·ÈoÕk™ñä“"}Áa6Bž#Èc»´´F ÉNJÎ^Á6”ÈïNá' ©½ïšz½XŸ_e›·tÂÓ~œº&ò9gO¿Z†LW–ÀÖåJìj´¥ÐÆœœ¥¬Ýñ~ÆAÆ#M ºèŠq¥%šªUŠ¥oʼUßà³­rNuF}œƒE}yÑI&Šf%3£j畦h—˜Ëx W婨'–Wä={ô Ý=j{‡y²ÚG‚ àþªÛ«´ A“æ;Ù¡Š¥Ð ƒI‹ F¦Õ$ªwz¾¾«×eô¿ÕcÔØ£²~Š|*¿I?çLù?`üÙ„LžGmñMVªI6³BIët¦ì§ÝQóu; ä2%ª2IgÉ‹±%w])i‹Ç΢D¹ “‰Æ$ñOÃÚtùîýO)ä={M=‹{úm‰²›88›|ÝÜšlÓ&î6Í¿©ó6jlÌÝÊýƒÔðÞv\5‚¯XÅ*ÝÆ÷íÉ‹' [b„=ã&&ƒ¢KHÁ¿‚X˜FF2Ú–Uš4™ô˜f{Åñ–®q‘“t’¢(•·\œ šÔÉ•œF¶]cdÕi§y®SGQ롼ô¥g%ô(ÄÔ1“&rõ1ë¾ Ì(½BrÙKàôQ*ÿù.šŽQh“ÍÉÈK³FÆÚQ±KsuM*žßõƒ½ÃCŠœŸ`Zh´8¬ÒíÛpÏÄÈ„ÀÁTI©Yêd—¦F¡‡Ÿ¢LiÉUãØºÈkƒz¥„pKúu½ÀÒïô²êÇâÉFxœa‹Y!LÀÕ4Ha{?;“f?áè³\M¡Ë{g›{©p­.#0Éê©.zjÜõ£Ÿ3Ù´ù;\ȳÌA”fàÀ#(G¢/N†D3 ÷ú·¹ÞÈ›ìÆ~í‘#ܾ¯Ík’ \|W"a4*œ…r€èª»z¼t£xMEªš ­6Z޵U’®_›&ÛuK¤£SFÊ5ºéý™†²~ vKn-Ú· ëS­RðݹZÕMe`·†èéÍé-ð6QdOÑ&î« -u;I4 ᲎û‘z>ùiµŒA‰-[}CZÛx¼ B -*È­‘ï•s¾Sm_;skz]Š89‡ˆÖªÜõ'”Wÿ•ÜøNݦœw ã˜M2tç±óu[ê­åV²­­gPðS´…Ânu9;‹7•ÍÝ›mwÅ1 `–ëb;§¨o«æCh“†À’zé¦\üM†³Zà:WªOƒ¯FÞ“e®à®ìZt8šsÄ[ûrô‰,ó¸òÈš³®8ÛÝ6ÍÃXÑÏO¶XÛnR#j´%ozž9Î6î‘“lŒ6Ãz‡çhe·LšùµÕX{þv«Wß ri´’W4æœ)Ôt» 5ÁŽñÍÿt’qçjI7áTä燵ËYÈ®ÓÝ3Tª)ì–qÈãR/zZÌe:Ée˜TËZÊÑd¬¸h–L0g56Ý\æ…ã–àœ…ß7†¹2iŠ!¸„H?TzÚÈn] 1Td–­‡“=ƒZ}8i|m:I“Ô¥ýɶ&?-£M›dzå62዆ùW)\£e0—®˜WÍå9f)zéÒÉθfÒèb[Ù]–N,ƒibÒOõbj›,™!欒zºèT›ÑÍ]õפèi„®ÒÇ5zFìï?uèDöJæ»ôÛZ’÷DññkÚôã¢ÃVHíSˆÈŸ%¤Ä¥6ŒF2I,Ô’d˜÷¬yÎV‰zHÕ@ÇR×ó; ‹ÌÆ7Eˆ¾ü–HáP1ò©5ë)rI.´öeóåt ae4° Jõ’ÅL“}ÐS’ž¯®~Þ– ,G¬F'¡Éx«AqrP—ÕÀIc˜´æ¨T‚Ò²Ç1@–ƒMOXWñ/Dqõ N ý$Ó£ú5¥ ÔÛï»]OlnÝ—¡zá˜ö{&KÁÈ6H—ï%ÕœÑ]Hz#%_™cTâÕaç˜Ú­–Q8¥lx±gpö*äõ†<4žÓ—~¦Å6ðOHL?u½dWIî§Ø©Š¬Uíjå´xãwàö/æ¿3:¾Öš–Ã,©öf\—w÷5}N’[ù[”kš)v–EgDdöûRfÒÂüªËÛ©ÌÓ,”gcD0Þ‚^s´úJc/$“:ôrJs4ŸÅyà:kì¬&+H]#ŒùüoM!z´×,9¬ÞÏ/þ-iæ&I줯ÏÛ–ÿ¥L™bUýpùÕîp²wºÍ•t)zÓÓuw<Þ¸ŒFÂ’ú¢*ª4N„´¹óg”EIÌáz~ʦ»Óë¿þ‰å™ªñ2lI¯×u2ipA½’*¤e×ú¢JÜÄNñ‘®Xÿî{é›u¤O©k©É¾=l“ÖZIèa„”âá7}’°MGÎ×6²þ%e„î«ûöœ›‰dt«ob¬…¦}GP™¹&!s&¦Ž´kÓ÷똗æ·PÉÔÜ.—pœÈýÂ/Nós·M²;7A˜±eö¶ëÃ…šö±4–XµRG/ž©äþEù½*4­½²~bÍRTË\¥É3‰0Ù»Ó2*iš±5‡ jb²(ÿÈ’Š—øÁ×µäôoPí]—Ü6ùFyc„Tò¥YÚ6 ¾¸ ’±U‰\bÀ8.°eÊÆ™NŸi]l¨ÍF¤;ËâÒÇJœòã#¶kKÈr˜ŽYÍßÜg¯Ò˜s[!h× (³—`[‘B˜Ûç©g‘¬Ô*¬E¤ZÉI$çfK¼æÅ¼ªSR¤ŽäXªZµXô›òtWµjÓÂS &‰ž4$Ò©"û%ïÉÎùh¬ÅpF!d4ø#ȉ:“Ìô¹‹9AŠÁ…ªEâ“Æ¿Ñu2Þ¬˜÷§ã„ó¿”׉ËÙë›Æ5üû´„nÙ\h—HY6^j¢Ìô"Mj<"ɃOôÝ^@§UZøJ€zó‰jù„ÕÃoç˜oW=‚ÝlµŒ8$lgo˜©£e™z–cu8| D’[iפPpëɤa»&®Íåz²Ëƒ³ ;ã•§(Þ5$mDP›§ö’t¹û´ÑÍúz£`y—¥ßÓ„ÕxÔI˜ÖÒhÊ¿'Où¸êi2r®iTyzŠ­šJçEp ÎåQ;V’Òd5ÒÒª›J®mâý¶¸¹íë!¼­eù¬QËáwÌ-ƒï’ЋX¬Rét²+‚Ÿ['=y†š6 ûÝ×Öõ\ÛÂêI'öjt0µ4²f3R\¹ž’E’F¤¡cx¨^®ƒ§µÍ²:MÚïùéš«©=¢³ ;¨[¤·²šAÈ-ñyð»2¹øZÒ¿šâ²ƒ»ªÁS¨x+߯~/–ÂIã@Ñýüp|!j$—¡¿áœ:ù³JfØIg¯ÚÀ´ÀÆ[VæjÝôÆí¨iã­KÔ‘f">ê÷û ±d‡£x‰tˆr‚¶RÑ»¾ñÑÃ['ÜðM²ÙÏ û†úEŽ» 1'U³+CVõ)ß0øn=Å$ÙÈÇlJ~VÒL׻ɿ¡]‚ÒUTÈÄùŒþƒã¤O¾ $‘›$¡#*­†C*‹™)ybJøšËùosÔ*úU`]°eÙsÌ“¾a²±vbÁ[LWIµì)lÈÐ-b·2çO¥qÚ45ee–Q Ê!³«Zýs†÷H•Äæ¯ÔÂÇÚ°°íoèï«K8á/bj3Ý—I%ì¥FG¼¶î©•ªhÊp®#­Ô¯S®S˜­î×7»âÈu’ºVÝ[úM*[»I8Ü]„6ÜΗtïž|³'%…ÆcòÊľö¬[®‹*“Ζ,0À¹F²püŸ¬x&*»|êñZ¬¾û¤Ï;“°§…Ä›Rb±&L•~^»^º°m¤¡ÄGœ#T”•?é쬆’á¡ëóG7'n-¤v¼²×†¹”L˜¡Áÿ‰#X¼V˜ZÅCà*µ!W „º´Ò•X’lÕ4%do ‘0¥¬KÒæ·]ûUFŠ­† Èb+X°MIY´d Ò$Š'l¢4+,Eƒ C¸·ú4ì>E“|Õ+W´Eˆ-Áo°”m‡tÀ‹.hå} ÔDSzJÒô,8I,å{…üÚÚY6Yøõ‚È—Åc0™ô²·³j$˜¥YÖ¤š³øyöiR‘4!ÃÇ{„M„âYØ1¯‡éïµ±9¬’g”¸.½n4©ùÌ2Oÿ¤Ÿ¨“Ž¿OTœD'ì.ª× ñ#¦)µ«<ÖŽŒ=Ãod&2ëueCŒSÖÒ5j^¦M‹¸bQ8åée#gf.ö[:#Z´Å ˆ±Õ‘\Œ©@¢}Óv7;,{© ,‘òê5ð+ò®»Æ5ùˆs’N­§FW¡;1NñuTËg—3ØÍf±{>嘤™v´­Êaâ®{Ú›¿½ìÄ×Klœ–|9]ýŽ¥u–IŠœTIÔ[Å’š%’,Të <«Ci‹4å[Û$LiÏÚ4¤pLRÄmd›+àLÑ `Iz_gZ Rö'IzLE7+-Û²°í €Ñ$aHb8|ëŸÁR#\ó2özž!TJʳòüþ¼FÈä-:'—ß& ç»Å}–šF™N¢’X­ Æ’ÑßÒæ’Óœ‹‹o‘%’2#Ÿ©Äï'ÇEвÈY qêò÷¯4èÕY¾Ô.*aILJÎTÈœÎ+õ¶põs4ÝØ±ÚäY©Ç“‹‡¤¶_mŸ `µ^ô’§§q1ñ_ ‰ÝwëSŒG²×®]NF²«eªœfZ´;îs€ÃG,“Úÿ>j®¡Vj[¶øjäË6ãÏ;–oi…[{ÍÝ;ªêÞÔïñìeT’Ç5T±µ™dœ¾ÕÏÚµ ¬´im:‡h¨ÕS{t‘c[Dàh3)7ÙS'#fiU)e™Õ# ¿ý’³;ai§VÂiVÇÿP¹“R>ÒeKKJ[ueª0­h›ÌúýO*]ð Hu’­Œò‘Y:ddàp œíŸ7ÇhèÜŠžC¥+|ÓZ–íé®C€šBÉ©ƒž¦;Íᓎæ®›)Y É¥m¨‡Ùj²³V¼'aˆ{¡õÑTTdº–ZY¨Fª/8êqL½ðѯ,Ert^™Élj){ÞÀ»7.g7y|cÆEõظ¼'JWÔô~RÔ«N/;—€N# a‰Xb°˜< [êêÖ0•õñÊÇ€ãí6ÑF¿Óo®(“„§œ1575Š4Æ*C-Òqs/©ÒÌYø º[…D×u<îÿ­#¯ïrCÉYŸ  OãMXžK%‰·W"àû’K°ísä–1ËÙÑ­^Å›‹ò¦Z\¼°KDnª"pôÌS³[\*aqœyj²â©ÂNMj%‰- ö¦I NÐ ”ePf¥dù s‘0ôÿ™Þ‚hƒºOF&€¥<*ïr vrê 4¤ BÖ¹&/ßÂaÒ \ïøR¾n l{IÓp@ŠHæ %“mŒàÊý¤šŽ©ÆµÚű×ÜSˆNŸë’z.«ÝE„}«<‡(yҚĒå¿Z_[†ßÓ2pK+4Â%¥ƒ*¯±$1QQd”*Id“®dŒ:ì:ÆæœÕFö˜”eЇ:»ÅÙ¯¾ù{Ôà…JO Ÿ ï5Í*h%…Lº¬¾.®¼©*Å]a’m-WY4ÉZÛçÛõ~OÉþ—Íù3ÂúLò;¿ƒ®ÔÆ-ÿÏî¦Nêl¹*Ü]Óe_Bétÿ^â¹[Z­Ù–Ûm¶Þ¿Ü¿µ¹¹VWŽ÷š5dRÕUuŒm 'mÏÿÏç~¡ÌxIâè­š2'œ¹;^üÛÚéFiz†[`èx©ü& I2ЍÓI*Y•K(”-*Ôœt…š ”§(cš„L, ˜ŽR{—ÕÄ~i åãÛ6¨58Èú¾Ÿû Ý/¦ß8±:›Áp¹^(µ6ÄhiÊkU¶Ôõ~³Îñû‹É:¿Uðï(ɵŽcÁ­§]Np¾´_£>PؽÉX“Èo‰’Û¤ÅzœG'öã= [îƒYéˆ8¾ó÷ùïvÓIúO¹~î~-¿¿1K1Qæ(ðÔo‰šùøx躥s%swYF•÷'a Õ }¯¶/|Âr’0L-¸ª4ÕkÒ¿GȘQ¹Fi‰!Ú=4æä»#¦´9ŽÚÜ›¡Â›‡SŠôÁÆémße–Ñx¶ÖÓ? U¥;J>ôõ úM‡ëµ›âx?_Gs+GZ. ¬¬˜8l_*ò÷¡ê(ì ó%w¢ãèJÂvjå'ˆ¤‡FIîà”,IÄg™é­&Ål–ZûÊ}¡&ÄþLFžúBÈu‡˜~mh¯L–R÷Œ#Ú ¹L Ï#ì‹CÙdåûŒˆðXº•ÏFºx³Ö8¥÷·Š.¾É[4½KqÚ¥™]¦§¼t¥œ-s”‰7|-Ò¢bαídœÖÙòh–¥E~6· Ùñs˼ȗOÙC>HÌÞoħ“Åq׌MK¿˜¬ƒà>ýl‚IQ/yz¼è¨5D 9g@I‹ ðM›ËÏË8O;)Æüe7íö1§ág‚îj,xì0ɵôN18Ë¡ê«ÃibvÈvr¢­$èÀé´8Œ§¬áßÑ(a~VÞŒKŒ‰°ÿàÄòЯ+|ªÉ*”qÜ€˜5èjÉáÙät‘dt«ëÒ»= AVb–%‰=xjAˆÞVÐ)*B¸À[OÄEçBònh‰jSCeä–À¿7¶Ö¬÷¨ák;åŠF`$î ¸¡0 Jeàͧž:~bä©RM¾›\â¿””¬aq¶CtD…3Ó¼œAq»ÔEÖq»V?«K š!)ä³+ÏLÎ…‚XÑ\N à'ÉÚv,qS\•×Z•ë.l¯+¢˜S«ŸÓuövÝæ®EÔ]%ĵ\gãn­pnŽëçˆ1‰ÞYYeee÷†_FêÙ=Umã•>¢#øS[ìß*ÃÉYlIÏ·V__hš~äYQ•uâ>oGö|-Ik 7êlglág‰{Æ%74\$ݨݬL1ÆºÛØáT‹ìÞÕ'Õ¤ô}ÑT'Æ)À1ÏH03Ei*HÌSD¹E´´UiŸmЬ5³ÖgçóÕfPqê䲯$Œšá¶U¦ÐÙò2¶š5VFÓlg¸Ï#*fÜ«7Á’IƒªŒF:ôš-6a×èÃI‰\¢­2ÑLk#É42ÖyØß!¼n›æ†¦¶’ºQgdÃ{§uôbÚZõV¨› *Õ,å3ÝîécVÈÖ¬Ô%Š0lbÉ¥-ë:¨Ë_kzÓoö›ÍÍÆ¶LeµTß-Æ%Û[ŒÓ:·$±OR`²¨mL•w7{8ØÏ=rmk¨mìF½ÓW«n:] v%²::‘%„±%‰,,%ÎC­*ŘºtCuN³LW)Q,Æù!¨Åš£k²3eFuú’I³‰$«c)n/Zi9vlÞI&± âá0ÀóFFëzK)ª˜Žäzú­dàZãwª¬&ýÂÂΘUnb[æšÍŠ9)6¼KA`àäÝÛÓ$ZiÞ"ͨ¬*f1ŒÌ&}Ò F²L ÒAdS©dXÔx8¥(AîuªÒ†f“x<­›z¡ˆkâ,—¢£)’Ä­[ÍÌÒ7´l2Ó)ºÈ¼&­œ×Æ´‹*•ˆÝêÊGR±J²ÀØ7Õ”–ðÈÎÍ#9Lû‹%x&îÎÚz\¯ßî]¢obCºëeŽûÞ郾þ¹‘:’>G[þ~çÚï\­¨’©² æ¯ý6ˆF²H›4H™˜ÈŒ LO3è¥L][èÅíZýÑb5Æ¿?/€»7Z¯ú-þ‹îÕ¢§)£ð³®Ù„s"ìÕÓ³ž L#xLJü–Û'ß‹t$ð”}örn5${Ô8¢^~º‰”§îöZ[žù ØÈ\÷Ôâ2}¥È7zK ’"¨y^"ïèöÛ>üû’|{bH{‘¯E5$T“‘qüßÇlUwÒn˜_³ƒIbr¨|>‰sØÔrÔ‘{«9£Ô>3÷‰ø¤=–Ÿ¿=§ßu¨si\eýôÖ«×|×ìUlÚŒÇêtüŽaUäx(§Iä¡`aÜ)•{à=dIÅñ}(< §>«Óù!êÅߢèx´?v²·‘‚LJÙ+´Þ·‰÷–ž÷ÝÞê}O`œ¾{9ªc/ªk;5^½áYbòú.òß*#U5¼CÀ`K›KÊU2½Bž«¢¼óîÒî?ôô¼W ‘¥Š&F÷@²‰£Q½2d©GAG*ÉÊc %W˜ÙÐüRÒll­š,Ô®Yb•ã;·ô54Ò-Ò^¿C¥°~k,Y=~2ÆD­giGqú¼‘å¾&½ÏÌ/\˜¾!ár%¢ÃÉòÉEbDò´ÄW3Їb§4+ ðv%OXó_š>Aí²)/ý¶,ˆ‰û^˜™üVKe«e~Ç‚Éñìõߨ÷í"r^ÏN:4c˜÷‡Ò'ÊçÊoH‚Ö) Øàø±õQ%E¹úúÜǸà‚ZRq? ;±Al6ä[8žDŸØƒ•'ÃR7‹$@¿ ÙFI ` Á¾Z¸'p©£WŸðæ\ýÊG7½ÄYÍ{ROiãºt7Œ0Åx5‡3†'u öƇН#1uý‚éü‚®œoO6äR 8e |BÒKÈXXª²)’ÃÚ \½ˆÊ&.ñ XJìàgØÜLžï j¿{çñ¡?õŒ’Ø+Íèï9_HWËN\­b¼~´\㘼æó¿h¢ý”b¾.åS/ë|':𠉆£6$RäšÙ´qrÝ<Ÿ /³¦¤’§³ïøF°Ñ²èK$ÏÅÍU{Š>‡CÍZGQý_3ux¸íŸÑùW¢2ÉNˆ×æ·w»Á“DÄT Ô9ôú‡å?á}¿‹:TŒPT0§ÃÔø¬böÅD.› „pŸÌ¾)Ь—ô®µo–Â÷«ý—é¯J¾Rø‹“XB~ÔÍœâtÎQé (êÎy6­á5)ѧü'ÿ ÍŽ?.îÝoóøÃÑÊç-ifâëK“ìm¦¦šä"ùJŠèTóÔõIßûÏ9WP„åµÅže¼!?»ˆyrqmˆø[Ú¬‘ÎURÕ'™ƒÂ‹Å‹ßɪøêzÉ>]Ÿ‹;ŽÛ’ÑAèÿ÷#€Ðä];2z>ÅÈÍ.&*7AÈLVlCî¸Te:ŽÚþš_•TÑSZÅŠ¯hbw '¸Við\F·o'Ž<1/Þg¥žÛÏ.#^ê°Tˆ ËùÜ`ô»H¤“ÒÁê3Ù~’ €‘’HZ2 %j·=wéª)lnBlwÜH&„è/ñEä5‡ÖójÎw”Èçï[/º+ØÆèÓÇr9ìÿ‘XCþ5b¯Û+Ý•Ø'¬/Ä<É8¢é\œJXDvG$`ÉUS÷6HþÔJèg{$® ŒQÂ×´wR–+‡f<ÂÍüIoFIõßÛ½ßþMé-‹òâæ™»¸±ìOk—Û)Ç\|ÅÐ)‡„±]bvÌŽˆ¬ õØÊë-Ò™´bV/;å14™Òr“z‚oË©©ðc}´{ê¼£¹©ßùËMûÏ¥=r3‰?'õ¹ƒèfâ^Ÿì÷œêé屿Á³©a¿þ‡fºk{gñi›Mü“ha{z´Tåžp±'Ö´‰)_ ôêj2V'tɇ3Gs˜Mð¬yG ´ú*ùÎRD²p¡ ç,>Pÿ[Ø1zرQßqÇÂõ¸¿àÅ_vXõOU°WEŠÝߺà I¨uÖO!FÓ DzÔ•ÐÍŽÈÍ¡'rN¥“%þÏcÕ¼Ï{ÅMó‘ž&È¥à0WºpÖPñ–Uˆ¼²—U¦Ð´Ñ ˜I°0É$RÈ‹'ô—ѯ“]MÖ׎¼¢¦DEG0¦ÞBn¥'ÌMjKÓ“þÕ“‡h¥‘ø«¢iX÷"l2²¤¸–©U7f¬éݲóõš»¡6åRPè(òMÆÃZ{êå1-w·T„xrJ¢J‰)î'U[N^§Q]æ²c3wºVË[!ÈÈÉąš ®âNaf‘kè(#ÙòƒË¢™­(Xþ'ÏŸdžpޤÙ&Ì´ž!Éí›ÁÉÜ7GînHƒn_LG¶<&nÿ)Ñ»yð\è+p+Ïê)äïÍ_æè|ÎHlò™º%ÕsntËc„â ´“ÇÚ®ôåÈð˜ªL¯ ;‚‚éUvØ*g¢¾ò@,Q´ñ'{0͇’©ÿasHñ•ÛOÔydnŸ¦–K#­ÍÉNªï_y»ÀvÈiËo¯†ÄÕ·ÑTgÓõÅ’NQ•Iî‘P¨Åè‹j]#ÇjêªÓZªû}GÃÊ«,èã×ËårkÆ¥ÙbÝ9gåiJ3™›É‰™‘š¹ ÜÝ>ÿ%’p¤¤l‘ïí¥O·êÑæo‘×÷}íGéxK(ë„"âñL„v «ˆMDcÐ0$*è`ÒW*™.ý`ùiÔ?òÓ† ™|Š­zÉ<!ÎnÙ'÷â¯X?i—…Õ«¥odJ¸€\Ýï8¼ÎÚŠ2çì ¢ËBXí[‘~aÒã»ÞJ·0«øŠÇ1+Ìœf¹eë]’kG{,ĵRxsÂÃÜv>¹£•´œ%»éן?ðz¼§µç,œ´åmµjF˜tn–ližôn4&?3É •s?\ÞÒ¹D´Ü*1—Ú*ñty=mE\ä#yµSE^&Œ!ÂÂK/eóJëi­ßÑÝ•ûåo¬Þ§¥êDšÒª^·Ö4™*È›SÉ Œ‘Š2¼6·M ª•cd󔪛pŒ­—3ÔÒÅLÖ#%N³Sk³uб¹ÈÃ8dœx&%ŠCiNdÛw9&ÒÙµœ—¡²I‰ÉYUf)‹h–ŸTž%…a[d«VË ‹&ì†CdTi©œ˜×-¡Â×t±ÔHbC’)b¢Ê‰1a“$zt49‰¤I͉el³+$éüæ‹J]ÍX_ÿ½¥,<Ü¿oÿkB>åë«3¯yUÉ̺3cНÁòˆrqgG …Ä`â4©•fÍÉãzw¤ßÑ¥/Bã+Ý'䩉6¥mUáj½SmÐúŸNô¾ÑܾåÔö{iy*¬ÂyÌœ¥X•.0Ī¡=j“sQ›Q¦£xZÖRYHÕr+¢= h&V-¬*®wûø¶pöÕZž”»:2GÁíõ7&ÉR9o‡GÁjDíüëð·ÖkT8Œ*ºØÂüÒôEwi‚¿éø~¬›1•!—ld—e¨xº-Ø)Ä7Ó3›K ¥*Múc£^†?qY+–¼Óú2ŒÆ ¥©4f¸§w¢.òÃE[2sµúm›ÅÁ©´ÖY0a‹ö×êË"p¸isIÆh tž,ÁeN•Sœ¾ÍÎÏ\.•»aÊ,8˜[g«*=ŸvO_izí5¬ÃŽau[ÔrÙÊp£Žpm¥r©”¯iì}·ìtŸžâ<3\ّ׺ÈŒäVN¤K‰¨Ps¬AèvØ`‹?+[øºÿýù˜î˜“`ƒÔ¹SçƒÏ¿£—^;SØÄÄ>Cï¼aŽ~cÏ=£§àvoHëß5õßú f+úœÃ–S›|Öò¼×¾»Ã<Ûð½+±xÖSt!²X͆¬-aD•iX£2—ð1<éãµX¯6]Ú¿¦âÆ{üU¤~œ´m±çN$Žá3Äõ©!~TR”®M†²³±~oZïì@ÓUæÞ«¥ïŒšB?gUꤖœ=2†ç3¶Þåê¨0Ãxò oÈÀÆ~÷y“κ®ù¢„øgíÖÉ-彫`‡Q!úˆíH¼˜úRüIˆKõd2)rB­äÛVé럕‚­ùðâ ­k»­ä~Ñ]=ê;ôæéè›ó[M§åIïǶýUà[4Xb}Ã:©À&´LÔ‹ÛÝ!UnFÝʺˆ­áskòB9'#VOÅ}•8& ¨ìqˆÇˆŸ×ZïX› À4…䬖24Å ™O§ €8™ˆßñ÷kG$ô×ÙIª•1¬óNµóœ ½d®Ë9^ZuÍ,ü2›“ÆïF‚0q!‰$ÚIgäIŒ ¢==Êy3nZxÚZ̤6éÎ'…=’y"2Rl}ý6篭å¸ëŒ2`öO„ðu4%äê¿u)䇨o=c”v.ñÉÕǸ ¸Fâ®c ù•|]ë¹|;ïůkíÖ[ß÷Yq ÿª’õyà®üVzOXú Éðaï ñ ïwnk5èÊÇ™‘/!Ü®™æ‘Ü·çRê[f«eÚÿ1áœñOòv㈤äH¸,óþúv€»5‘ÚI9SrâæfHQe„ÄJ±%0•Iõ¬a0•)*d’}˜I¢„Ñ¢1"~Ì“I°™,‘?>r啕+:mû.6Æ=9œ"c9ŸÀ’zÇ?½oà<3ycÉ5®^ËdË¢M*ææ‹ìùÈ1·vÚmDØ{ÖèœÓq7š_—¢~ëµ_ËjxÍ2Ú£y Y©üž‰ôžeñŸ¹Ï·Ç"æÙíñšÔ½ë˜vOBºÂú1({GüYÎ C’E`Ä•ƒÂhO¹>ã²X2øƒÁáÉ7fäùMÁÖ"Ëá"B&"JÆœ-à /õO=šy1Z“BÛ–ñÀ$ˆªÇ¤²@$Ð4¦ÊödË™“Øö‘aI;ž±aGw NϵÂlkJJXç$É€ N¡kNŒŸ¶•öˆxXÜ&ÚòûwŠ*²"p·ŽY AWRž$´Ú5ò¹“, ò¯OÂâØòdm?^^,&û&âª"ÒsUÍj8ÍWQapb'çðÄì§Õ¿Õ>qáp•ÓuÚçCOÉ«Wóf”·*ÌÏ^`wK銘|Š7;"L#ÀSlÄe'ý=#I2"v|Èâî[‹ÉD=ŽþGâ¤;P €/5œ=¦·òØ?Mœ>8ó‘¡ŸØ5'Dâ›S~'Œù‹„{éŒÈ6L€¥*Ç?Vrt̘ªêæ[+:Ù+åÉÝIßÛ2iVí…M™‹ ÆØYHÕ#¨èŒÎ•J)F||Ë.¿4=§O/ÉYJܩН\õýÅ-öŠ·oÌeG&åñÝ7§öèËÂì[‰ “S{%Qw‚Kmd>'ƒ¢’Eèï4?C:·xåÊßÇÜóU¤Gr^Í2oq+Ótg5Êyí5x¼JäŠÂ>“îÜ·ö6“᦭™]oÂÝ–:áñæ3å”ëôZyí}ÒìüÓhI“½¥o;ª->Q' ú¶Lg;ƒg§"ÚÔ¡'$‰>ÒéâÐf ÖeY™£y8²3”ÒIJ"¦Ø)MÓBOÌ;ÞØK©Áôé‹ÕÀ€’–uh$ã‹õ*é9VÖzyíô™éƒ¡Äžô˜gUç¿'ÍÉð65 wýö»ßEcœ¶U‰sN~‡ˆØÅTÄ™dðžZG~)ŸGôØt½=÷+¤€…èt¡ýnѳïôð¡1es¶MÎC`iì²Ëv¥­øpt¨;íáqŒJtªúþRv^‡ò3/ÕïQödËŒÇÌÓGœúúÇnNšC²ÒhÈÐRcRZ)b°Ÿcî^ÍïÏ¢Ä9W e¬Ä‘“´m#èeÉíõY½<ƒ%Y[‹kñ=ÿØê‰˜«×î›”þ¹Jäöž]âåji¤Ÿ´þi&õ¦‡Æ&óÕ[Á°i53U~sÓ~^ÿCe‘.‚8ÿT¼ú{ï¿y8"v¨üëÜQ®~Ï4úw̲„Ÿ •ÿz:Q'u¤Å[Iá©tdž¦ÝÏðv‡»c4ô˜…äyGDŒb**pÈØ’aFã1i%ªªª¥*¤Ž}ŠÃÚÄi›»ŸjžYær¢1ä“­xçPÈÚ—Ù’¥J•(1àg¿à7N¥€òÜò*Ém[JP•jÉ%–<œ2,¥7Ô«ERJ#:ô|¯ø.Õödœ¢bÛã²5§¬îÊÀ·TgÅ0äÈÆ¨~tŸXOÃs…iõ¾¶L÷6ÝU/Zãÿ”š›8„2abxZ ã t¤@ÛuÛ•¤"‚ÚŒv€`“zÃQ CÌ_ÖY)Nï|Ûs— Ÿ¤¾±Ë)ž³±å³‰ûÙs”i¹kèדfÛèÙD!ö% hÚb°Î–-ç;V ÑÝ–¿1ÂF¦Z.,nùh&Ä“÷dÂÂd&?ŽFt™KòÓüþ*Ÿw§¿AŽ ݲúÂŽO »98é›ÜüÎûWNP"L0˜&¸¸€t° ªŸoÑ÷úÒ) %ƒÖã†rPj.¾`JÀÿú)ôîDÝ*T°©eK>²¯G*úmc̶å¹cyôo ÷ânB;Ýøhïáa›X×|”•‹16ï» Zbëù숃[ðár9b·$—Ω’zº§¤¥ûƒÓÕÌwÄ8¥òKJ:R_æ*õ¿q™)ø%âNXšç•Ȱœ*J•ÖŠpê“pø3è£Æ8þ죓#'œ©á›+ÃDÇKÒ½^6],nýÛ‘ž·]™›Ó+M›®V¢ÕFeº&K¸½ ¦”ÙáÜ#G}}‡;´¼ò%8å;6£OA—I«}Õ†\ lÇ™UuïÁ4/Û#Û*²¾šnÕ_”æ¹5?jñT¼¸_8®|½Ñ<¤àW®mËòÛ©?†yð½\¦ìHªð!}2¾SíPúEnÐø…^šS¸ äÕ9Âög†/Ñ=Џ¨þTrÂØ“lbІþéwPSW"8š”¹o©ÃÞdDv¢á<ß™#(lÜD7^9ëæ;’"ôLjÏô,ž´O4n;ŒÔ+çZМŸ.VpTõÃë¾wÊo6ªÀÿËz¦ƒ¬ãÉSwØþÄôKŸ/fû÷£\Wô Ç«RÃuCYýkïOþAóãçÆuS=O ž¦¬MxÎ z~ž¸ÿFöè{b­¤êÞS$>%V—Df[õûï{vŸºì¿uµÂ~¿?š«â¼a=ÈÕUWÿø¼‹&kªHï‰Ê'–?é?•öñI¼e<¨gD—a¶¸)1C¢pÏìïÃï-§ª;Ö!ÖA«òÿBsŽ×?·CL7¯!r…óoq•¥Ð[ 2©&®QÌÉ"•"dlW;/ ‰=Î=·þ‘kÞrYøSÏ”ï(-ŒrÐYoqú Ùóù’çBˆ„Y§R¸t¦Ôz—W—>r1"NB)‡®2eÜI'òë[1ß¿ù·å‘Ûª»®îÞEO%•S"|÷À.NDò¯cÃ5©­iÚiö.|w_UäOŽ6W<’¯˜3PŸÙZdLr0#]gäá4ïuíbM4†,£H¯2åéKëgìái ª‘®¨MR‘ø¥Zе˜øŒîoêªJîèìÿg·½¢LtGe§´8 rÖü’žmw‚cXm Äå‘…­Yò7…öåhM+w’\sy·älñ‚)mÎÊåÉ'ȽDškq8dßÐÖ¼@2??^–í3Ÿ‹…¹¿Êž+€¹¿ ÈþØ<âÎ) .ââ3I)<ÿ¬à—9ëç¼t3<Íü>^Ò7—½…2°HœÆ$UˆªF"q—y¯ŠæØŒTPQÒb« ²Ý¹ŽŽ«è/°o‘î—ýžÎΫeÙ\½GÚ.­Þ5èt“];‘|N¶–û’0å1º–%aë dÏ+Ó£ÊM¼'m½ªÉ)ÿ}•îj±©Íч:ºs/G3ó¥~æÐníY«»‹€™Ñ¦.V«\òÑ,³¦IÀ2yì dÀm˜¦%ȵVT¾wáÕdŒtc(-—Qïhg«…—œEÇ"ŸñTzÚ3«ÙøFE}¥ã]ûôÏ`â Q‡”£z¸~‚¼Óö~éÿý|š­dâQНuV¨­ÈÉb˜ý’°ù¯êÿVts׿¹NÓ¾Ô´×rVÍGŸàvâ`âRW–T“~RŠ£mÒÉ<­çô¢ ”´Î|¦ÁqTœ]"]ûmØ{ßÕ ²ºý-òO¿ò ú;óËÇpqÃÈ Åb Q³}˜ä0½L À¦“Wr†C&EYFùSã ?œÉº ’iXM¥"¬…IR)³±"}ˆÐØ•’L&͉©Œ%Oµ‚jI2dIMI"ªLÆW Gäö¬½­ë\ÓyÜŒÅC šI?aL+îCù›ËØ4Ö;Ê·-Oc±âÎTöÕlêªúxªêqK‡³ãQ•¡ÎAá]ŠïuúûJ­ýæVµùçÛõÇ[®ŠNåaWl‡ëæg%`†±h©öÏ›Ì[5-9™d™0\ckrëÀ´UbZ´UÐ7-(ý¿&î³´“ çÏL˾ 'ä_º­ù^P¯'#¼ÿf®ã2åù*t?m¶çÊãÎúXìªýÅ—~¾ë°Á_®ãiªÞö_•ÂÝ~?]8$½PÕx=+q¡¢Ï‘?Co§á ϸ§Áþ01ºiÉjù7ÆíP4iI¥D”$´² wºbvü×;Þu¨ÅÉòÌŽeªø¿ëÿ†iœÇ%¢‡º#©"h±#'ûü¯ê‰@5ðœFËRþf÷„Nuþ]•5ê¿Û|uòi’ó.BU­+íñÓnR‘Y¹YaŒL¤Ãœ²©d˜¡Ðala}icºÅ¥7¶F“¡2£9ƒv©„eU„òÔxj»ÖÓ¾?ˆ¬ų̈¹"·ì¾-ŒÛ2Þ¦ùY*Ù HY›Q&ææèONŠÆ¦ýrÿes¨_A/@Î4_£æ´RÃT,w±ÂµßI_Ží}¨W‹aï“r*ÂWãôoô'#“yöni‰à.Í º[J¦%‘jÙ×C‹|šnE†62ßÂÊï]?°+æÙUÅq)QU¬ZÄ̵-)ij8cÌd³%*´udÎá¥× áZ+.n¥lJš¡¦Ýªò)vm=æËÈ|g@ÝùªqüO†­·† _}W¤ªîª¾«|ŸÑ„}Z¯¹Â¯eUĪþ*¶¨àßÕsÃþõZµ•[ÃUM%ðõrrÌh«ßµª¼úf\”¾Ñ‹R\Âóê¶\+™«Ë­cák¸×ܹö¸ü×®ú3Ìà¾g;y¤CGÀQhm“lj6ý«¬}É¥˜fE­M’0#Æõ“ó;RËóF“¦27Æ 2eY¥ùõ]¢Þœòí2™8«¤Cve¦­ÐdåÏ“'n-Ä£]s(o¼çs©^!Yä¯ ÿÓÞ•ÖQê6·ý®T›ü ´½šo$•'·ûÜ›RqQ“×½Pô$j$²í!Ô4Ã`ÆÒb¸×—¢tª¥²9âTÔ?¯Ý@ÁºZŸu$ŸM "jÕ”¥)VYbÙj©/|ul’Ú§f'L“pನÂYæ±}Ã60­Ê1²ÒLÓR8Aª™ú&Mõ^%2Þ-Œ¥.ÛnXƒ:0Þ2•­+ƶtÉÆt‰§5³‰[½«Œ™ÜXb••V)6ñxñÊ5–u\ˆý­œª¶5eJ·&R­z­Œ¸mšÉ·íŸÛfqí¼³Âùt‹*´Yå' ‡-†8üž{ÄÃy‰6%n2ªÓ Ù“ ˆ6]ÓVñG ÷5fq%shsЕÚÈ“RK'#ˆ¶êIÝ»uTQ¼Öy| Þþ¬’¶ê¶æT?a¬ùì3SµbV–(ðìF‡%+)p˜™Ø?–¾#è°%ÎB£ OW#ÎSw²Ó²¾°­]?cA·)L&]§uŸwx9¸öÇÞ˜¦ÂAë’Ú¤–lÚ–ˆ$@“/ß™|ƒâ¢¡¬S–É%O‰î²4Ezb¸…t £ZhånNŽ"7úa½Ý~ݯúÄÓ+*;Ò»áY êŠèªmÔÞ @¿ ùošÿ£ö(ýÿ~/Ño$¿ 72£ûÿb/'þœ©Zg­ð¬–I¿.Ô°™LšSnû­g~/WlW+B¯Ò¯ ÆÙW1 Ê2™T· ]½%®‡Ç+÷ŠÌ®Ü¯ÏîS4[%t'Çüt/Û+xVÉ]ÑZ l°\®!®« xæ>³XòùÿÇR,’ûŠžA,’Û e”6Qóý2³Ò/+àJï¥kØ•ý}Š\ï»lE²¡É•åJØ+5u¾ç¢é•÷¼¯Ýô’n)‰6 †¬NÑõýÑ7…~+”þbw0ž½ˆÚ“§¶guü¾íØl“Tª©¸bä 2²ò ް¬*ÑGéó‡çóžKZNt¯¬£žf­ÿ/ûlÒúîe=#::XÜyÜîT{õß ñ®œBå|^S¡W}.X¬Ñ3ˆW“ͺB~!­}©†A>™>t~‚&T¹7$ÆbÜ£Ìé×ÙÉ?IÏÉóu¨ÒWõÍøêh“ý¥|h[Bé¤íÉÿR|5<)7(õZi|õ^ý¹wJ¯(éÚŠ™b‡òÊ|âù%ð•úJà…™[Ðö¨×G°&?AKãƒÓ ê úRžQ=’~~1-‚þ>à,¥/ï~ ]oUØ¥ù°~쯲­¶ÇG\¶–ÚÿÿÌ«u#ä*º÷OÎCÃ~úWÉCìMeSÊ!Þ•}qÖ‚—Εé Ö*ôtxoׯgÃíÞNñœO »Â¸Ò¸èîéíª\£ÛkïŠß†¾ÅT^}òd’Äj¡QI>QDå_Ë(çðÇ”¤]Ýû7–Ô_ÁDŠ=|K\ÆY6›,š˜«™ÜñTÖyŤù…¼:$øoÚ:(_{ÜT¨“Ø*}´•ÊEïy]àZ”´nQf°X-dÒ¬Yó—œç%ç ÍÅWó’õHØýÝCjÅ-Åìr¡ÀóŒ™én¼k“+8ÝÒ¯xì® XE®bI‡ÜQ»,ˆüGQ’:õ4KÅœžÏÿm¿(Ÿgއ6!ÉRþ HeÔ k‡å_Ó6¦¹„l–Ö*»Ê‘@õKðˆRʲšpYÙ{3A&¯@ܶoh9ô3Œø9æêKÿÿÊüŠ»Imk|B²ËæáMáÑnWß ¢’K*•N®éîd‹dO°²£ãr¯€av!-Ň”†+§i/¹x/NQ(Õ¨(¸ù$²ä÷WöX«sq'`§®n¬IȤ9—Â3­[µIz¢ÑH\2â¤ÒÀ9Âq㌎҈ÛÖ} µ³úÜ.ÙIzùwó=S• ?¿”5†.–8·ÿ¾ŸFå|'˜ŸIé9ãÄí?ö&“pæ¬ö ðÓƒr¬[2Oµë’üÆšú“±0ÅWoÑò‘'‘{¥(£qskýå–µék`]"8ùœÄá±Ü!ßñÈ`™£ŽWó‘kjËÉS~Ä·¸mÁéN2cÁ+윯ÂÞ%´ýðÒÒ…äv(ÙÐÐÉ‹Æà©Û0ê¬Á7ÖUY&*äê¹]®v¤Ó):¶¹ePÀ¼w·Í‘_dóu[žnnç'¬Nü‡¯WFM‚Kѱì,ÍFŸQqŠÇ°iU/ç™é°ó„Þú¯¶G±b«Ÿîºÿ¯£ÕÕ±±Ê+qºÑÁ²3FýÖëRÚ®#®«{ï fâZ$dïVCàõö—Íü¦*ÏŒÈ^ø‰'J4h¾š’¶‘›a,«˜ál6wvZCƒ¬V@iÕ €¶o+†ÔZ¢Ô™&Jë ü4²áù–é#Yd®¤ÄaŠ¿æ$Â'ë§Ï'À]!6gq$‹¢1¥-Ó2\ O7Ì&…^V×…ÀMk>68º#GŽÂaýËD›ŒúŒZ)Ö_.T‚j¼#¾€9Øø"’øXå‡QŒ^±ž]ÖÛMáÌŸAŽ0"!Êîœà¨Ý¸§DØkØÄwÈ«…ofÁ/¼\‘õÏqêù~ ™¦ŸdziRN§K'ȲNl¶»Q¦ˆW½ÂIëûX­‹‰'õ {6$ù²…€BÎ ÑÁÑ¿Æ@b%á)ÜÑ'×$‘†¾¸gìí6¨ª®»å!‹Ÿ"_K¿çnpþÙVL40æÁ¾óœ­- ?Ÿ¾–Ø8JÒÒíSXÚ/{KzLYy §gK¢ª™Åè­úògbN; ÷ Ù$[L’Ø—– ¯I…S‡¥šö•92/2Ç"À×'Paº1U3kí¼­I ¥Æ9§±dÁf—’K>G‹`1ökH_vT²I&×JÙ7ËÙ=-|º…7•œ|`ø“s9ØTyD“rb v„™Á†‚3#}¡]1EûÑ(éIjŸÚ>„ \NU±–dèE„Í!A“ ± ßýÓ)É÷ÏA©Í9²½žzV—W‰Á¬è·­¢ÜÖ’Œlõ‡yY-›½á´ •h8 # ž\óД$ê)Ì¥øNeke¦2÷RJw)8°\¥)ÚÙF «H’ ÃH^S)œ60¦‘¾’IàY×lâ²)¼©µ_§ñ¦Ç¯uÞSLWUd“Îé³uVñÌJIN18B–D ×·È‰·•ô­7‰}ïu`ŒËÎhÃÛdâàš*Õ—‹¢Ã‚¢^’E›ç¯áFêLêãU–O]™>-u—d‡îÉf—ŽéŠòTiØl·èz|kldt¬•j—ÒvX'B‘^ •Ruëºu[Í$“uڜƉ~^ˆÕ–o\´Öô2âgB?lIiOÐÛa›0ÚÊ>WÜÕd½MWçäGšËn±o?L,¹—$´ÔTÄ¢QDã`¥TiT7™(þ1(é‰Bb¨Yß㬗˜ •Òn”š•MJ›Zjø$²¦½[R´Œ¹ ®«Ó1Ý­½Ýަøª’Ôú5b»¡†Hmdšˆ–Ã]Ë¢¸ÝÑLw³«DƬ±*&efQ÷æîé©Ö³‡å`N‰bÉ(yíiEñõ–ç îÅu‰,Ø^•«¾6ýÖI>íjjóÅÛa[“LÚ0ÑT==ß&ÊÈ´œÆ¶½ºÄ.jЫ8}…Ó‚EcÔf²-ŠŠkœuS½ð»>Ñv,‘}+)Ü%†,ÊT{Åå§ÞxKKÊaT²)´JÎÅι~™ÕÖ^uå@éL“þxS¥§Lhó'&+l~½oÕÄŽ…=E97äÒYO1ZYT~D|ù.«üª´SY†ûc.:hd#óp5GMàÐŽrJä¬ýö“±ÆNæ»ô®”Z¾­M“ŒƒüçK­©ê^*,­ŸŸœ¼=˜øøÉúFªþ2CQ ž8¨ 3¾´0®Öqù±EX…ˆžž©W«”01åÄ8'RÔ:–¡Ô¹}AÅHš¶• ¹õVˆqœÏmÌ;¥÷m‰íý[¼so„ coýþa½ø(ÈDÄ\BÑ#ü!ÚãIÉíd-& …Kõ‰id9Á:˜È¶~ΔÿSBê42;Dyê®UÕU¥7”L3\QMÖ««¹Õ7’L§“{M“;y®e­ºwê®teâÊâÊiÔ£¹'—ÍûzY>,¤µÚ~ƒƒz:BáI2 ¡Š‘B3éØÙcAƒF©8<‘‘ù2'¬N ¢’JJ‰,¨60Û¤ª…T);r IAþïß?’ôæ5Êݥ؎tØÉôÿN‡Âù•ZÙ®]bV#Âù‰sÖÕ÷ŽóKà­³Õýû”«¤LDo ²îý `âBàÏ‘-à2’).?4ÒHzðKú$Sf½FóÌüõ×Ð/›H_F‚†lrA(PVòZWmVod°M„°–cu¶õW±KÅuLÁ´±ö1×äžô¶‚ù^åÍã÷ñý.ñ5ð¶šj°í Ä?‚›iûz¨ü”i£¸aÛE„¶Yã3WÖvÖDù<¥èíÓ«´¯*8r9ÿ!¯^ð•$7™"ž"§d¥©Ã¸‹O¹_ó¶BÌÀ¨“Œ¨}Ú—å‹H÷’žâ§ŸRtª!°w' ÷/åâj¾ÌüËòë‡DdUЫ XЃ`çh‡¹¦ûo÷ÚRL×ðá¯ïÕ°fªÓ†Åi21åÜ–T|–Ê«£ªÚªË©hçµ¾/á´xç(Vò—)Ô%¥mùدz¶…»ÝeÀ匋>Aâ¾]"<ËD³˜ÃÛDtúDPÐCÈþÒÄ¿á­o–_%L½ðˆ£d*I3tþW¤nðêGÈ3_¨U±gtÙ ‰š2^BÔyõ1V/F»}¤a@ (cŽAʹƒéšùF9‘]ïEÂo|^•ÛÖÉ8u]WŸ+Þjœmf_À`ýýùës' xbz¾UYÕdªüÁh©ß°–·T–G#­+'Ô|²òÙ‹bW-ÿÚW‚»ìvºŸWŠjsÚ+Ò?K)+ ‹I_ó÷…dæ‹KŠVÛ“£õù¹<Úö¥zçô`F@¹õyu<¦FÆIGþõÊÏþðpOƒþiÌ#tôò¿ðìa~ÇÎWê+ˆ¬ž•ýú{Í?Rþm¸‘™Ôzu ¢I®ºFÄœk‰E‰gëÅ÷ÙÓhû~]å¾O¤ÒÚ^—r¼Å;*rêTÒ§°©Å¥ÕRäæJèJéÊá•וûnË•øåver¥yb¼ù]ô¯rWjWä•ö%v¥x2»"¼9]É^®øW‚+ÆãÊüò¾Q_tWÑ+øÊï…~_:W»ªùÕ_ˆnÔ\Œç´ªŒ2¨÷Ö¢ÍúƒÇƒâƒàÉ胵ìZ”¼¸˜>H;{ x }P{`vÀ÷@ëßÌÝÓþÁ÷ãèÁÑÒƒÒ¼xLèdØ îýßÕŦâß±Õ¶ÉäðÒþƒñìƒêƒ¸ˆý±‚#¸ˆíb=tŸk'­“×Iî”üÅ=òŸÂ§ÍSä)ý ŠŸ%OòSòÔøÊ{Å>’ŸOù©ôTÿe?5OöSå©ïÔÿ¢ŸOü©ðÔüE=ÚžõOz§â)ÿ?‰OëSöý5>ŠŸùSá©ô”ý…?ü§ó)ñÔøÊ Ÿ¨§ñ)ñTÿU?iOª§ÒS÷”ÿºŸöSè)ò”ýu>JŸEOëSé)ò”þ?OíSê©ôùŠ}U?½Oý©ÿÅ?¥O˜§ÿTùŠ*ŸMOåSúTÿE?ÝOª§ÕSûÿʟΧù)ÿµ>zŸæ§ÓSü”úª‚ŸÞ§÷©ô”ùêùOþ©ô”ÿU?ÕOðSýTúŠŠŸQO¨§ù©þÊ}E?ÑOª§ÔSê©õÿu?ùGú¾ª˜¾_Ñžmz?®d´¸Ëþr¿pˆùAÇ9ëŸÿ„.‘õ¤•d·Õ!1U½}6øÒCñŽÿV¯¹¿LžÆ«Ã“ìÆŠ¼ºšœ½‡Î}»íYò­ãêJñK™Š—ôò ÷â°V‚`¯÷Ó}(À?Ý/(8=~‚ŸÜü5VGú},ªËzbæ’Ü£3èƒå¿ç+ÎÕ½º–b¼ _ÌßÕ`»<‡ÕFª­Jú™«ã†T}7~ózé}—ÏÔÙML•|Æ)þÄ»Ðå†jáQÂpg±nß71s˜°¦4ÊyVUp9ª[K?e+µû—3ÀSfIým„;Š.ïónˆøhØ?Å”œöÚh>#|˺Sɵ¬ W¼:i«{–Ïù4"´Iî¶ÒIw»b»û.oŽBUqUÈÞòI6‘oÄð"Ú[´cVà•Øæë¥"çßßI8$d/ãCÅh¬þ?É`þZËð»ëbñ³AIéB—¿•Íù)·¾IÁ|ëi)»¤‹L8DŸÊ ÈÀÙ'$úy-Œ Ëe­b¥Ãƒr¯R®J[q½dŸ8’6vLƒóSªØº®ù´9F„qIµõ²±Ë¹š­(Ö‹‡W´æêþ ¼ -•Ý1Ûš÷¼ÏàgéçÍ¥Ë^Ôi¨ïc½>Ä“Œ¤o¨õ^á¹jÚ–}ÖÊYMËú1w~fûÒ7ß¡–ør&x8¶[+ד« *R°U–˜©·C^(å% B„ C"œƸóÌZ‹-]Úœ« ÎUs¼‰ÝnbÉ_V¨ï5~ð­>u¤ÒU’¹:¶¸ìä‰wœ:4¾ÿKKB¤?­Ò°èù_/¿ß7¥Hié8%6köšèÁÕ¿"CE %Ö|[n×+™‡0iéü¶1h˜H§–1p^³Hëû¼‡Ä^±Ü¾“Œ¹ˆ… õ|7±ã¼¿sòîqŠ'IŒMÄßµI“°aÈUu¤ÍyŸ¥Ëæ8×èðÓçý¾N?A&´½L‡çVrß"¾ƒ“ÔYÕÞÈir]Z^=µ¬|º¬/ïb£tÿé-ë6Uî0ߘªÌÅWÎn›m ׄU¶ÿ¾L>º«“¹u$0c¡øR&qÙög'ͦOÝ$ÙwÎÎíšY¼EV°ÙL50÷ÿàÝ46ÛÆ»CêhkºÔk/ÂæÓWÙéŽ9óÖ)û&Í:vþWã>DÔuœ¹iàÐüwCtÜê7V6xnƒw' wÕûi*¤Ò†A:Ï0âë]ôÛã}÷~.›¿@”,~ œ±¾GÐR<"ЃßB0‚TˆÍößZÒ©Þ1^ñ_]ä¼î‡;ËÙô_wMÚGYl…Ë,üìŽog;¹Ø«ÿösÂüÜúùÎ9¸é´kùS€¤xZíJ¢fÒQ¯ŽÈš•"O‘š>G‰-B×™UÿÁr’Û“Ë%¦«‚WŠ}¹q G…j›±—×<›­âø¶aU‚}ãµrj³O‰‹îÖÙÒ¼hNS†û¿,ì}Ó+OòÃ'=ß•½÷•“½KT™¾¿ìêíYÞµœ–GbœdË7}üæ´CèŒ'-Uø#]œÇ~¿Æ«®K²oZ±bÕN±—9Ë•’²’W˜•H#Vk¼–ˆï` P‚tœŸuó0AÓ tÚc6#Cc3ãP^tè§0)C `úM@Œt~ÜÄÒ/ÃÒQj+IcLC:Aɸ:c¶À L™Ezñw ›5-²ÎÞ“³ÌvóÞä `:Jm%á8I`½e©#Ívü6’Ù K•<§“0vô TëšwïE> ó¹õ͖Ї´ß­å§+üi7n–úñ%ÍÕ<ïˆ~‰ç"«„äÜKZŒ ­Ð¼”³“%Áyw«ÓÕÆ­.•Èk_iŸñŸw¨’Á/w*£P²e* §…Z­y)>Bðö‡ ó"@_P)d ÁΉszôµÐÛ®ÌùG) _üfR\óq«+×®Œ“ñíë:‰Òû¯Üàè%ðÇÝ›‚˜øÏP÷‹vÍì[©ŸV¯NBƒn}§dÛ}Ã&‹A‘ž2ÎxG§hß!ÿs át.g$Ê™•;ä–9ñU«(áæ+&é‰=®Yb­kæòJ¬R×xJ¬‰’yNœ™ªvOêú¦æ‹íJñÿîK¤+ íwØçÿñã¶¼-/ Kàß`/F-±xé<'Å+°Mß+‹ôÿ#€VË`®®oÎûU_á•»kÎòÁ+:!Yp\K> Di>”´Þñâ¡[’øÎftÏdØe^k))U§RÕ!jøÕt^ùšw¾Ö°…½©ÖcA^ÇoÏ+{±­£¢VR¶ ×+O´ëO rÅo{‰„štmÛ±üpÓ^;ZtWx]ø^o‚~e›Ä,ˆÒ^´ Þqõp°ë±C¤«óã“$„¬I%@ ‹ôžŠ_¤š¸Bå›%{ê^)W2vòë[óÓÁl_&[+õ9OƒMîϦìç"Ñû³ÚÌ·Ü,§bIfçå¼ ì)Â<;‘‘ÔŠvŸó̽÷z´ýÿkúT—__÷:ÓýÅ)J?'+ëb«Æûöºî9½7$œ~ºjTã˜å“¦ªÃB¾¼¬ â3<Ÿ÷óÝz}¿€jzäã ¢ä}ØÂœ@ê¶U0èƒ?ÊO?L6‹ûü„†ƒVŸ¢²¸¥öK ª8;·:áëñ=Ï|É1ãÒW©ZRR$¤Sj‘R;^áü¤é:õžEeÝã{õÿ _X½{CömŒZiiÆw;Í3ŸI‚ñîQæ‘A†4 ä©î,zßi—Å<ƒIö'wè1&0¸µ£ÞaÉ1C2žn=ÚÆê?÷X‡}HíHxÌn¨tDQeDZ¢RÝ­;ÍB[~~æ-Dz½ôd0¬Í ¯‘Úä¿Sä;Fž¬¬<ûšþî+Ó}×­ð"ÍL¥¤‘ãkØœÒ]èÁh #ÌÓ¤kbŸˆdÚ¿åz}ôJmù¡y¸æ; $ôå‡ÿÔÜÈw?G—«F ßžÍ.]…¿ªÂ>aÒ±[—šýîàå 9˜þëÀDª¬$«‰*êA7+Û€;¶ã.Ú˜Žª!áDZĄü¢hã»ÿ 5RŠ•$ú:k7ŸIUtš·=ûCB¾Xb£‹-¯1Ê¿Sß8¶'Fy$˜VŒrpçlõ J¯b…·9†r€jÓ„?õI‹ë»Q¬ÌÀâ½<¬Ðæò{è?&€Õ?$Ô «bîpJø”óÔèr‰Ø hU…\§æ>íc&þRô—¢v=“eòWŸÁŒ²‚QP襕xJz†#׿›Ípþ¿’N‹F:þÕ|æ©\þö§Ûó}ûÝßaÚFx'‡!‘•JTª«VUR’•ûŸ©”ÆIØCïøÒòíOû…3Îú¤™h(Ÿ™×!¢ÄÆiÓ<·?LoÉ·®ÇØ‚þ!ŠÄjJ$¾\£ùÑ<¡çž] …ö<Ó¢#D½Á¸&°_ËàZb’†G,š•dÊúFA6ÎŽÆI/´`é)ß¹Šma1åUtë]ÂÔ8 ræT§¶‰È‚Pœ(„ßa=ÞFÁ°ªÇ.önЋFLÃÉ#ÕøE3…aI*"Kðxžž³a¯ß7ª¶É–å"Mfò'J½Æ7¦fn»Þp`ðyzþmŽÓ>Õ½Z!éIã›V‚œ:›Æš¼Á>G(©ø;y–Ÿ?³hGBöoÜ:ª?‘Bèæ\°š20p ø0©8?¬Âˆ›'ÿ¨ÿÀ’u>ܲz] ½¡:ÜS¨h"i?Cc[µ%NxI ðµŽsåAf$ H‚Öo‘¬VW•W¤öŽ E5UŠuDŸ@˜©\“½+¬'‚“¸'?\n¿Ì‹7ŒÞ•ÖÒÌt^ѱ³ïŸ#x–ÚºêZÔlØà òŠÖؤØJrì7*·edVí1íß ¾þSkE µbG2V˜º«b¹_ãêKtÕ)æOpüBs C¢“ñ ÷"¿®L òh€›šLðˆÄ‚˜–l9»Ï¤Ÿ4.¾CiÙ@W›Dø^‡­êß¹¶j$°Eküƒs¤Ÿõ„VZžQ©Å»ª…V„ØÞ0_JV”r _|_~±@ŠQRGáàÖ|Êvû¤äÝ׃Ÿd“Û¶$cýÈù"q” |¶$»ºB™¼¹ü¢îb€·ð´ÀŒsý½ t ï/žn9VßzÞwY MC±$á$“âcF[Ñ•»x—•½7gˆ†åRd(9“•²ClV?UÿeYO¤ÿ:Ü4ðóªÈú#éà|Ý'!t“¼ñ–CÐSÛTë)ÎþÏûiN`«ç´’rxüSéÉ0Gþ*ÑR7ÊGKOcZu$žºEGÜQöiõ$K5ÍÙy†&ç} ©ýʸd^—ß¹è:Êá|vk¬žÞÙ¡H û ÀÐ%a”±€”@&E[¯†w¥Žö¶•Š`gäÕ~½M,LÜR´Ö†‘v-.š«º£©Íý)õhý_Çòø.¨|çñµ°Fdñˆ•¸È_©IÓêAŽAx:+lÔ¶4Qæ G¤X6œ5ÿÈ€£ΨN+•¢<ôeZ²=ªÛ;‚·šVþ-7úBxëî ŽE ÌIÍI&õÕs¼çü° IBØ«ÝÊJGæŽ,RJ¦,é@ Ù«R¦ì³ÁH·Ôsì‚æ¨ñ!^7oõå_<­Öñpâé¹LZíû/!ŽJ«á›3èýkõž”¯êªåJøåsïôå“ëúó°æJüs`ÏÉÒûB¶ÊÖò›…jW$Ñç—q‚áôÃÒJ>ShLŠ(¾‡€1R 'h?f“Dsn—¾<½³…½ðÛª49WæwmW¯ü]ýÜØX³©<é#è·É;RÈY,IEªýmº©©ßß?ƒé÷‰[~o€inrË‹7[U¸YÉÍ<[[gµVpzqfEPÎN+ ]-¹ÒŒˆ>Û¸Œ Ëwß>R?ß^÷åb–){ª°[+/ý²Éh÷?•¦ÔóoXØbkŸuüY›—wq¼•¦ *dÇ“…È‘uV» YB …î1•ÁêÒýmƒ¹#Â[[<›Î¯ùOQ#ÈÈäÅr6Ž=wû 1`Þo¿²‡ñBï1Éÿhö5p0GZ³K¾¾õÿº:è4¼®V#†Á°V–×:yÉ%°ÿHVKgŵx®Këe|Ö炪蟶ÿßúUh«ùÐøþf—™KzÙóŸy{v5]Y[/oUüPžoNš¯²}Ç {7ŠªÔxø>£É|¨4î!ùƒËŒ6Ñ2KK:ÓÎ1n\ÌsœòýÔ½Nß3ô].Ãßn¢éef†÷œÉ¢©Œ*È)Ii8î54«ÛþÖ¿ø¼“ȾÉx§(ä'žÅôõÇ2›ŠŸqÞ=‚®ÆÐÙ¤ÒAšÆuÎÑ Ñc?FÛ"#¼‘0µØ|CÉn*ÊŒm,?˜̺‚É?q3~‘}ÂzÂÿ Mz=µSÂJtô¾ý ò±xè:^¤ÓtÁaôIïQÆük%Sqã¢Øà)Ø›)†—l-y’°V+Ýi¿£j*Úl§'b,ÔÓ>ŸºLäø 'Œn޽•V}OrlØ¢ßÿqz=\zÞ ÖUhe/ÉnŠØC8hªÂvu~»F¿äy0ou­z¯$-óµî˜2‹N+zVå¢VÐÃÖ•Ö•ÖÑxÚ­rµª}íOhV¢½‹a[¡{S o&¼ŸúäÅŸ%Ëq·SþÝÍ¢"öÀð6ÃÆ•‚¼M/ÊÊ–´”X5t1°’7tþ¹yù]Ò+Y+^*—¼£)U”X¥X¤Â«¨Ká²dÄ'lì#)TÌV$à0y¦88xV»ºŠŸ}¯A¹š©à Όդ¸•aUNõ¼W4z«¶[õ¬-ýVMù®û?Èoü®Š§_'€IŒnUÜÔ̬+I]y^«Bo‰ØÂ+d¯2Þéú{k7JÇ). _ÿ9B´%ö”ÐIHžkŸSvÅS íö®D›XI{z+A‚³+*råprµÆióŸ¸+œñͱ'¬Û¤2 bLUjRÅÝEû¢ÅÅXîAl4þ„ÒX…7‰ÈS¼ íjmi¹¤J.ý¾_7<€ô|fìXí0ÒUä÷Ù\9PÏÈž!דíê¸õ\©ã ÒK©)·MïPÂü} [Ú~'!´>!K”¦?;e@Ñ­ý6D±É"T¼ì„›ºà”) ”K´õÖnƒ¤!9D8ž(Lýäw©ð篜ßöúå6tÊ™·=sŒIñЄ¿¤T—ÛÓ¡nÌ®CkÚÇ”Â\ Ú¡IlðÕðuè’V…Ÿhò“${Çû¯}û Û¿ÚXÚÉnªw¾°Í¿)Ðø~¾­m5XU^·cĹ|ÜWäs•[–ÉcÍÊqÆYO«Ôèž,¾»õo%ÑIÅuþz$/„í‰9òMñŠ>βHîI4­ÒâL_žm¬~iÛÜn©òÛ\¤Ÿß_{—áZ{r5M·’^vvÎ;ôò·g+éMå-"¦2Ò8%=úí¶þ¤‡Hè¤ €Z‚1múúâ—¬az_0ÉÉKý1]˜‚pyÚ´‚´›¡Í0 À› š€l8ßJùÉ&µòrªå ø’;â¼Q]39ÈW+€ãÊø,±vΚÍ3+YüÅÅ‘ÀÌ2Hbá3f¼\Nï˜2Gœ|f˜û•`¨]‰}1Ÿ% ):J›Çê4%ûˆ›"ò5ˆî:¼Gû](…‹¡–BWâ熿Ú©:, €9)èÑ€ÂÁÉÁ„­†³½+² O‚W´“c^n?—føJ<€mlÉ3ÈBJêÂI£ªE×…ú<#®¼ãd­Ðx …d’6U²OŠÞ%Ï\•am©Xj$K¡?ܾßáÙÂï`Ûã>»Ól¹ ]½N옰ÇcÞ²gXylec 'T½åõÅŸ¿Þ XêQ„rü¿Ø#6„鉱¯öØ}tiziFN¸¯ êewåéjÑTÙÈ$ÀZ,) ¾ÒÙfß .Õàê¸Õ†NÀ"{Y ä_NòïÇØÂL7Œ?òÃøÕÈs5gÔ<ï‰|fXÕË"ûÉq½ð}‡šØY:65ž.5ÉÓ&)•å ¡T›TB²ö15îW§˜¤YéK 5ui¡3šï9ÅrÈ;û¸Å&ôÿH?B·Cm¥Q« ðܨ;ñY¥àŠòªÌè-®M^†‘P7YòøTËÐ`gÿèŠD@þUF’5\ûqHC[O,Wå¾+’*º‰0Uê’°¤Þ7m„;uyû‘]Bë°½÷14§bà )Œ^­Ó< ~öÒßµšìFòá…jKZS%ZĵÃùVg R×·ü'/:Z!n—%T¼®if`ØðWY”œ¦Tw¸•¥£‹-±pöšbù$Õòµlé‹Kdy= 2Ô,Œ >Úe­ir¸-4hUÏ q™.°ÕeCð‹°«O|+GHWpÉNJ«¡eXW‡ªÜ«†ÕUÂp-gø•¨¯qË Ùv;>¿Ôߎ‡:ýánýYX‹„W.á{WÊì9;˜íåü[Òœ76ù;šˆÿ—¿C›^–B>cû—WüÚMý "½F‰1õ|§ì=H0c0_ǸEœ8ÃFní¦´Ê‘„§Tƒ«i¤Nsóù}1=†ºzÝ3t'·ü|}0¨´¿!(Ó;g¶ŽÑnqº;¬É¤¤‡hTƒPDáå:þ«Ù$O‘ƺVú÷ïCã9©9Ti½ÈKü¢”WJfØÁs˜~^P“É’{v¯‰r.«:Bö}‘»»·Ê&xS•£*³¥”¿‹1÷zQ§2­×‘óKÄ C‚OJ´s- 2ŸÊçªp}qþÁŒ ?œP¾ÞmËzðÆ¡œÚ·”pÄ™NóTM:Ÿ–|¯Qï¤Ñkûi'vI°à¼ã ’’NÁåî`³u4½9׆WJvwPEzN|™ö_.Y^|H /ÿš-ëËH Ôy¨ð¯IÕ8ÛxÃÔÞÊÛÃ¥ƒvnä=žš«¹àZ³A¦"ìyÙ~´ajß’ô/­g˜‚8Úìi²·4¦o<·èWÆsÌ„sƒ_4ÈuÒâtº†¨Û2É!À–h~(ŒoX"<-'¶v/W§á·bÜŸT_Ë_¦z'­ñÉ¥Íýnëàâ§`pr_‘T4J1*Pþ 4sUA°"Þh¬GjßzË#úÕäëx6‘Ÿ]¯-xœõV`)Ñ«°ìÖ»À ûÿ¼j«‹=˜É^z#ƒFÝ“÷å<”‘ ¢KfkØg$Öæ«÷¬¼¸oMN”“AýèM®\ò/^ru棎ÙY!Ãì¯\#»,,QET´øM·0Í`èžÎãÊ·/’ïð¿mNŸã1ãø”·%Åþ_Ï hÕ%hIh/þ’I®*üÊÇ08à 0æ©Ë'ô>»÷ׯÍ7[ɲYÕÏ.ÑÒé]#[ùêKYJ%(•αfæ½ T$aã“•$ÉŸ´7J¿)kÊÂûBê7Ø‘b˜¥Pî7&ê@Õ†Hw‚Á´'›â¤ðv¶ý3ƒo7p•°W¨mê6r†HŽ\؉Ó#õ²A‚T“¦Zè®F;Ñ>‡kØ MI¦†B1½dûÛ¿…T:B¦òè‘1 … zU›TËkOךJCµÅé“Á«Ü¸©¬[¯NôÞ§a¹úŽIj;z¬pÛ$pVðX`Kô+¹½A8^™NìBIðä–:ªa=ËÞô—aÒDÞ•áÄä,L˜šã«»v$¹e9Sj^;D’’V?÷„k²d#”p L3†,b#iý”hS‰O½öû 2®LýDêuñ<@¯ ¬ÿ vÛ›º>ð¶Vß­~näþJ¼KýÞ^éVîÓ‰*€®vM“š¤ Fm³xæêö ‡ô’b k¾3‘úqj¼p¿¹®ì$¼SX„¿2WTñ­[¾ž=%7\¯–÷‹œÄßöá ¢Î’¤0 „øæ¦0ÂJ†þî2'‘5º·’í‘19zjÙ[Wãµ~þ‡‚ðS­ƒQŠœa½mu7þùóµU¹Kš²{ÔeòqJËß+r‚d@_ŒÍx I¡I}Ž/Æ£ÍUØ·n²¼Ï±ÓF)aÍ.ýï´Jù¾|XÙygJ=ûþi&é4Ó±[!”÷-3zónI÷ñ¼›r¶w!Ú¸ô/l²É8V•Ãæ¼£žã˜®#‰4÷@ðúo—w:¼ŽY9̹G,óö¹t/Õ¹ÁO¤f‚4þzÉ™^Ò¦²IMB+tºÙ ëZÑÒ(R”§+«¿ünNïk} ݤ}—e}gÝ2Æ?>DßÀe±ˆ¦¢À­þ%„x~=xô÷ÃkÔ4q@’k\„êÝzq~I¢ÐödÞ›܉œb¡¼ ¢Eudø©"ƒg8^E»°¹F غ¦V%š«‹}x<ã¸mj~„­bð;òüâ¯GðH`>¦ Ž!à¹_ê¹Û»3±użî…#ÑîRŠ%¤ç-¸C×Ñ“µÚ«}I…ýGX²I:Icqz޵;ÁÃÍ…U´¨A/`o=`dkÍsÛþ¯G"AÉz íñˆH‡ÂÈÈjLÈk´8Ä|®ÉöN„Óµ2awÿÙûÈ6Pòò¹R¾ï—+eLdäñJtƒçpNé²^—سö.±­ûçÎY%,£NûRËšiKü¯€Iëzß!âS?|ß×É:Vú¿MPÊsh=   ŸíêŽOpù‚O3ÊÄë$¬®¥ºnú­ä%¾°ˆ†P>C¹ I@ ‘Ä@MQ¹Œ­¯âº‰¢äœfk÷½{ëø>£Zîü;)¤&åªw+ÈYH‘‡Ÿ'×x»]§cál/•¾èýŠjEäI}zÞŸ# ]؃5Es±Ð²ÍvŒú‰B,ã8Kšd¾Êå’æÕøfU5Ò™QhÝŒ¹Ú;F/Wn?Aå?WKb+›ÝUkÆñ2¡Ük´\ =r5>s ÓMO¶^ÍRG¬&ò‰wîù.Tå†ü†$À¹ç9­ï:ÙyÆ Øaãßî sÚÜlw¶ÝÝ.`O¸³Ÿ#Ã9Y̯7–DwT‰Á· oé8 ¤ü­x5ížB?»-ÞÌ ´Î›¯NÍÊ™ëöÞµ›zsò‡ˆF?VKgy£ùÛ ì-Ix÷ÐÇ\^JÄÀFäÀO%ò–~%]èV+ä’†¿Ãê1|cØ0øÖ½aÀ'çÆ{í ÝJAØÎoÎ ¨ûÝ‹d)Hˆo„FëQo(O‹&yѪóhŸÒUèRŽ¿* Ø£¢©˜rî;ÍU‚õ¹ÒÛ2x'é¹4˜.sG»$À™@à“$³S;×~n.|ƒ$**gú-Á÷Â!Íàè@yÒ²ôA ¨mªí˜ãê. +Xô&í}<°ZçàÐåAß{¥_sùÿºíô'Ù·Tó¼žÆ[N¨K_ð¦mäãš¹…ýiÏ’s¬æœr8«#Õ#J˜‰Ük´`¼‡ ‡çÐÊâvCÿÞyô`×e +h@Ü~Ñßã² A"Á: ˤ͔&Dw|í ¡k½Ð2Ý0ÂB”@&IçV<-_°1a&KŽË1”ÅVgÖ®B]Þ ñÌÌǺjJ‡·¯êI;cPoË¢ÆX´(™™.Oê&ër6ølß;áªQâÛÐðÛ¤þ5ýYýnÔæêõåú?Æ;-ñ÷ψÓ嫟ŽWÅÓJ±VU—‡öqª~{ô±~â4òzYüû{ç»núDzöÊú‰õâwÒ ?öðöÂWœz§Ásø•¯´rH`Íó`4JÏ–.õœ‰m—Ü%ôýO·u(£vpŽýöïqÛÃ𺦷 Â|N‹Ñ.mž©mÇšp®®F¡Õ"lâEÒÜÀ÷P=CL½µÒ?^¦–þÌ*½Z=÷óþ¯ÃüOÏ}Ìfo½y4L´9·Ì˜œóE Žf1*5$ Âp–«·Q£F ÐxT4RŠ–—‘JB Õ`¯U®¶› ¬ÌË ÕéG²éÁù—†& ·+øhõÏÞð½{\¯cÒE¹ì®«ÿ‰ÉQÞýÓ‰'I®¸ÜlŸ‰Þ¡Éÿ·FL|Œúö²IæãòI;þþI/?…r´¤hžKòÖs Ϩ¯Öóü¼ëêÒ6×(ê±UÄÅÂNgÎåý|;éùo÷ᱞèôÜ=b. eå¬ Ç ãnB'Z©ÙäóK¯—¥wdЪŸÕ…W|Ÿ¤Y¹ÇcUÝ;órW—wfå[ÁÌËßb—9Ço»lz:Z^zß*±µ¶Kó%ßö9¨Ô÷Æ¿È}b߀èW™/Ç:yü:V%¹¬W„sZÞÇ}«´àùw¶§ÄÂí¾öÝþžAÄbÈ$=ðãn-å(Ô°^Eó‰Ã~;ó››Ê uš%¨‹)óù¼Ã„ê ¯Œò[N^©›®sWšÀä‹á¹ÿHäAÇÙ=Þ×F Ñl÷6I}L¼ø<ÿˆ“ÓŒ`}cìt°÷¬”ëV!€|$)…>ŒöÜ@ð÷ÀÌ­¨¹gŸ7ö\â×תõEî´-rôÈÛÕxF9™À$š'P£pöÈ ¥‡=OÂÙ=DZ³$¦¤oRÖ8Á¨Q gPŠÈU‰È¥g0Ÿ–¼«[bzb-It6žª¨Ñ§ŒGº"ö{B`1_à¹öéÍÖñ'†2DÕ¹îK¶lÚç$I^Wý™˜w¯G×RF!Ä3'Ü4gúeÈñ¹Íü^\ÑquxŸ;¥˜¿˜Èc"ŒR6ž’DôHSl R--•,<Í1iØÿ?ç$8ÛäÑvëÏz““‚ºöE_ÃÉ&{ûûFÈ?)þ*ð®ëõóWè·z)s”xª\›Ü»s~]á0"„¤rˆ“£r âKÏrý}ƒ³_‰·Çý¶ójª{ÿþnõtüÑ8wãJi9-}Ñ”Yª¹ 7ÇH’ÒL„É „$•Jf«GÜ%æ}ºØêA•tô8§‚Ùë¶ßnZ ¾C}z`ÙB¼¦sAŠ>>ŠKið?…RyQ#Ì´ ÎŽ޿º<óÔDkó]Áú ¿í«i·»ëCQWªqùàsCÊõ3TAzá›ñßWü3FÄR†ðßÛ`—IQ†v*­õNYgoÓLÆ:‘ê¾‘æ ¿ãÀ9î;ÉÔ‡,’~^LÍnTšÊz¾å2q[ÀA¸•LžVÜWéÈø¼d[ÎnºšM~Yƒ¢7̓LdÏ\ÿy?GyaN3¬øžÀ³×ßìɆ–$›wHÜùw_ú~K¶_y7U´Fâýˆ¸ëõ*Çøsµ %sáÄQõ}9†¢Ìvšäa£9£á*püÑÝÜ¿çŸEüzwÂ9ö†ØìírÍÛ-•Ž¢vè¬âáÝÜ?.Ì-l@õ$²8bG\>J}Óºÿ¬{©rN2wÞ“ñ<ÛáÒqÜaioe—(ž‚Û \&ȲIì/î›Ã’>Gqö‹!†@aÁtÁñ5Û‹ŒŽb¼ll½qÕ̼A+«Ó—09.{Ô®Ä~¹÷ZŸõðþoFÝ4ÜÀ7<Û›¸?€DÕ·¦øÇ6,{Öœ”öÐy´…¼´¹†#KÛF„Aî›Ä.éYØ‹Cõ¼›Ö¢Zø.ö¢ò#/»&“·6ížx`ÞÅ£Ž:ÄšÞ™T’…ú°]Û€)¸D‰QàÔÜã®$àÖ'[Oí¾òÈ“®î±ñà׎I‘¨Á>j©)£Ñ0Áó üPÁ¸º^ e‹­¤ïÁ Ü>C÷E<Ý­R}›åÉ‹¶£Ó•òÿ8¯ƒîÑ—°‰8¼»e'äÕ6ÿ…L¹‚õ‘9‹çŸËšûÛœGz«­&Vç;TÖ¾)]Ȳ·¢›;¹ˆ›oG»òÅbM¾Z&µÔ8S¼¥¦ß³O_Áá‰ØÛß¹I}?oáÜ´oW:¨Ýôì| ¢žÑL& 2CWé!ýÄ«TÀTEÚ‹–T¸Œ(¦ûÊñ7½nùI1ë.¹D¶lÇÝ-Êx\%gvù™½Iî2h˜–¾©5…f‡4ã2Dò¸‹¤©îNÜ›rÓo>à^ÅÆ¿×¿»obïûOóùè|Œá¿£o2“_:åi}„Oˆ¿Óh΀¥%DêjC:mçÔÂh~ÝÉ&‹Xà‰­®3ü SX…Z Å+Ü£÷D:Çñr€ÖïgÁÜNÜóײ{Gt“H8\Á='j×rN{‘Kœ~VÄèQo¾h¯û q׌+{WwâÒØ+¸É‰9ù¢·ŽïF›c•SZ«’ѳ–)jÑQ•Wø0ŒXôÖv‰7Þ¼­žc]+m[¡oÊe”N5¬Ƚ·+Þi¶Z÷2S’+F-‹Àa¥t¹¤k!Øìڷ瀪þ%‘2F$È`—­•‹÷tóõ2BªÉ—‹ðy_Ÿëº­Õ&6ù¼¦Ý$eùu¬d··^Yžœ®;ºtÜ»¾ïÚ–¿ôè&îVºÕívë"]‚'ûº9I{-BÔ^!røü9Å!å9‡aú,° ½~,ük¾»ì§e)¨¯„Á/²ÑˆšÈ²‰¼~xúcÄ?w-ÿ%j¢ç ´>’eûôüˆosx0ƒóYÁM@š’×à`úçT4õþî·»:JºO'ß9‹nWSä…`­ ¨0éƒH’æê–B+\àAœ=6ìIÉ|ž»¡Ù’}ÿÆxÒºso“v ùÛƒ~ëS²s{ïʪ›ØZåp:L¨ëñßzØ®i©&¶p¾õŸUTåÙ÷öޝs}º,¨âaVZáw„õ¤çg1khF‡ëÿÞÐï…íélD͵Ďtª~»LMÙ[v\Ò¡4duXâFx›Ö*lîÉvoYå›‚ëªÆs»jßzñ2î}®CE"j¼wE!ˆÕ¦-Ï3qæÉÕ¤±? NIð!¨›œ'ÿ3m‰nw9kþ;W³yR¸íhV™lxGå@Ô—§º2˜+}Š^‰¢S •ç%5Qé°V»Z.\°Ô"Ýh’4žø%Ü褾Yg6ðBáWvµ<ÐJPY;¤(„N©Ñ @!4näâ„ÄGªHºBZk Ij©nXó•[-¥Öõ½Øy…úÕ¹ýŸÕxÿ֕ظ¦¬Ò\½ÄÛcvù’Iï`o½-ÙŒ»“Ïb­1 ÿ/å}#Æ·»¢·Ò’LÙ(ßbÑÝ$žˆ›­±b«m OWäå÷0½¾b›Ò¶v»þpÙSÎJsÅußñãŽD÷™Z킹ëÈ[ÏÌà¬ÞÑFX•óŸ8í¸tôlü+]ÿ7R[ïo¸×Ö‹¥ªðû4b“$Ÿ|’Á°MQ&$ÇkHiÞuû§zŽg ŒTñß/¶^ð´r@qjô zJJ %y˜rˆ2¹|t–FÁ„²œ.s.–þ‚’=üÒ¡²Wݾôäaq'õ'õ&º«¼sÝü­´˜+ßGÅêym²³£•¾Îæ¤{í>ŸF¼RK;8V$‘Î!F©&AJ2&Aæd®KeQÕ/(GòRØ/^_ò­øKwN[víRVr§7^_ÔÚö¥áÉ2@ìKƒxB³.¤cµî6µa`¾f/]ü~;KMï>¬( RÔ]*z»Bx$ÆIUAOÚ} Këz ‘l."€B$'àR&Þûîô%%ê §J äV¬b²qê_Œü™k>bº?òvz|J@Tƒ£d¥èHyBiÓå7ðc̃$öX˜¾5äžùþäçúTµ ¢M’¿ëólMd›²¾·Ó¤õþ3Èþ=Úh´1b½«¤Ù ;˜ ‡+œÅ70ëò=®@×Uä¡­Ó–Å%%c`¬Û Õw ÅV^1C‚öò›ãmÏYöê¸P·l‚Ø{ï¾öBæUx}m߈U³T‚@»D°ŠŽ‰Î±^‹zIR{Ý Ð@8˜QÀ“Ö%öîÏæ>?V« ؽEõ޹éz»PfwY‰² _ £ Ý{h9ÝU'QŒTŸòüŠ<^[0i‡b!^£ý›í«ÖæÛ‡ØÃÚw3²ÆE•- ¿3YÄq€>ýf6/6ü"€iž.nÒ…0!} •.Ÿía#µ'é ¤>º/ÂqÒ½öô.eLXîxïyFOöÖ# ‰ú5,«ÄŸö¹ó[ÄËǬ—ÊÙ-¼à©SA“`,çUâÚÒc÷ôIOûɪ}÷$¿µþšÿR­j<š8»­ËöÙ]¨½ªÖQœŸ'÷³ó ²0.îæjasajÒ-T),UqÑ‘¢,zv~Œ‰¬¯ $äLÙU‘Y^?:úõ…Ôþ¯ß³]žA\Îų͉[‚ÅÝ@BÎ7J’ Îá?q¿"qô½_‹2|µI*иoI~‡ëîÍÔ—$ÿ±½öÂì\Ÿ$¯¬» ¦À»Vß³e Ã…Ï•ÛQÚÞ¡n¶7üç%«îÅ’¯þžRVÇ‹²bÙtR;ûd4®Ÿ˶un—–»-1k‹ã¸oâÿïÿ\’]FL0 wÁÃÏó‡ŸwŸ¢/¶.Z”G2BËÒ‘(•‡HMà2ÏIw¯ÔËCï[ Š^·òô‰XÖ”ˆãÍœývø¿òó†i Þ«ï›Gäûúg‹3 â›þeHñ‰!Á=AA¼=a*WI%³%@^Â'WñŽkÄB|>a[Ëz i©/›,9‰à T2}ATóÂÞDïËñŠ×Þ•¹cÅg‚½Ö^Cb«+O»à7ßÛéjg­NÌÎ/Ñ£üJðBkvûÄMêMÎ/ÛÆ+|ð Yá+Y,‰[4W‘{Z[Mþ-S•×¶lR»½¦"Wlν q%S- «A‡5¾®iÜEùÈ@Ç™bòt6“¯jè~¢.X$"l”­ô`I@òfÄ'ðå}Êw,Ãû¸K«ýì.E uܤh oE,šPâ$ÑŽ]¡XVç ïŽýF¡lonvöèhf.§N¢¹÷©üý"šÑk*ûŠ]VTÊÅÛ°OõÍ&ø­n§î#ƒÖõjãIÏ%ÄI°éW%UŒ7W±“‡Áò•xqb»Ð¸!2vEx>}®ì[Ä› ·e¼mÔ…œVˆ[%d©ÄªæÙï÷‰$` ½2X¬8›§ æV#ó£¯_©Âið^±‰ÅðL†oGõÿÊq½.,N²„ÑÀ¤ŠôÍÚ]»`dµÁZ Úþ¾E._Ìt™òø<èòÕ”2Ñ<ÆŠYÛ±^Ÿ+P7T|þÏtö\ê¶[€ç±RÈnXTÙȦÕÑ_Iºi•¦©‹Bõ)5ŠÒ–žŸ%^--Q[‘4Û¦ž’&¸§60ÞUg»·‚*ÐMš?f­X+ïm|•:Ò·ÛEZª°‡DW3Ê•ºÉ”‘[Ýʧ‚¾°YrEnüމè—IûÏlæ¢ Iâr=­qy ˜t=B„._Pˆ$ÜŸ•öÖøj+raabWöáÔáJы˵ÁÔ¿‹üúÛ{ÑÕk©¬ÞVAÊš¢OŸ9>Mƒ¤„lPÁý»ÆË§ë*¹hæ›æuM;\7Þ#» XF0 Z ê©./Hs›¯Ãz[W´—,ð÷á?›I÷ä/ІÎ`‹ìÂ^’üÝ6¡ Ä)ø³‘ækœÓ˜~½Ëüb_ë‡î?éÕ²91"÷ðëÿ©›ÃéòïÅ&ƒÄx¾Ì®ç{)¦]2NµÈmÄê´jvkÝIZXØÒ“™˜¹º6Q'3Lö¾§ ³ß’Sá ý#ú¿çõ÷äœÅ²r1$<ðH2 ~Dœª½ˆŽ PY=Hd—>™¸7z0}Ž{ÉWRy·á_•¢üo–.b~n'ýû Jy`’ÿèIã"h8Eä†äÈÀ;¼Ï©ӈ嶾p™áøßm¬tÛ 9´'õ¾µÒüG ü=×|¾ˆ¿åÞ‚'ç)aORN»ÜcUkv‚Ç©øÝç[í´—IF°¬àò IEÜ%¤‹/*÷'Åü»Øf½«mâGÝ`çoü{ãÏìÁÃûL¨ÿݦ$ÌG;=3ž Ñ44bà4N-$ŸC¬}ßÉ›’Ž4U@OR€$™ú[Ò5"¥r?ÙÞ4B%l²´:fLˆÌ×ÓÂÝfÔ‡¬ß|¨‘=QëH©äöZP{q9çs“Ô•ì¼FYÐêrs_eþ-{jÖúÆ„kU9âuÖ`É/.L9H]¶«t¡c0¼/AÎÇ+H­ëë?tÈž"NýMãøÍ@ïM¢ΟØ)®½Uƒ× †Ó’Ä»¯¤–ÊÌàÜ=iœ—ïìð_ç";ó‹Ï¼•‹‰Øx¿Ç+õ•½Aæ•à©w(ÝùV7\æ](á žùÔ#l«Á¡'qÏOl‚ɦÚ —êK€¨A)ȦVËmÇ1Ó~2Sƒà `F– ¬4<˜ó$¨ö)3'^Éë ~ŒgŠ`’1ލŒkznÊêíCÐ.…q²AÎ)ˆpšóƒH”'œMæ­ûÛOvÇ~Í€7OûõÄA÷/Çtb… ôM1bO!ÖtgI+f%¡8¹´Aû¨û]˜Å ÿÊzcëzKUaÇôçâ,é£ -!™{óa§qÕù:€Å€­ÎkþsŽJºEå8»8G|G‰3¥"ôeì?è˜""Ss,YÙ2à0i%HsãÞÝÜÌ J! qI tãš5¡¿>SújzÀ;b ‚Îa‹ñsø-d9^žItï:Á¡þÀÉÂ;>%üú­j"pÔ¿­r×ì´H¹ñ÷Âþî¦7‰5XÅþyž7Ÿ“¤jF§Õn¸[z¿·—!véY¦X£Œ‹È5¯ þþQÜÇì:ì·NðüídM¤kÑv›ÒÖ,T‹SN¹,¸¥¤Ž>ô’YQô"N¿“Íã9¿»ç{ïgþ¼?ý²-ŠÚªðó3 ’•:Ú÷èê¥T“O™h­„XG¦JÀ E`|^Sã½öu.¼î©‹wÖù©²6Ý“5•¾ù™%-{Å?_–yî%ñßm¶|dxc®g¬óÏØø/ºîWÚ§æPU$6êN þ«DÔ£Š„ØrÀvÎM¼9¤`†ÒtЂàS{‡4ÓSHiLªÒ#è `BÄÇã!柳f?\xc¿¦Yì9„pÍé®ãŽÆGdF/ð#Á6§Õ ·FLvümñXzg¤BðübpˆeFZ²¨íðš’ °âÚmoÃÂã¡#nºã°yO¬²~¡­1Îg™@ ½—¿Û±j6«Þ°+ë>ƒå.‘õ‘Ø-å…Ô ¾Ã¢x¥ÎÁß-´EWÈÿâäy=ce¨“ÍõMHºF˜:ß»å|wèûŸ‡7iÀËê¼~×_äú%_]­éû¶üþUv—Þ¾þ–l¢ÁŠP#0$¶G¨ªó¾Á­Ri¶` œ†”Ah¢Æ0R!QŽüÉíßZ§8|¦nxÝ…Ô÷†@Õ0Á•^(ø›<'?úßœÿÎÐrÇ¡üš#(ÿä0Á¡¸#Á:#z`3òï?=4ƒÊá æaÁ”& ¸§üi‰nÑü–¢²XËñÉ'¹&xâÄèË›&w?œåcO%ôxú3ûâpÓäI™rmÅÉ"˜¬ÇÖv+T¼+\¯Kèâ †ÀS–3× åÝIèíR ¿DGA /üÁ Çùp-äýŠK&*+õ÷¤_ãïôp]#¼?Êëkúºá-gxõŠý~òHŽ ±FbÿbÃOÆ2¦ äŒ/‰~æ&¨EœA¹úñ®ÐâSn[ 8ƒ¶ã“dvÿ"«¬³Œw.ëç»(§°¶J–’åË.*©3 ÙÄß¿LCcBzÆÔù͇c^>èSþq™êvzÅL‚ÓBá¹'Úfššs¿‡;¥£Ú"ÇE5¦šðwÌQ¶4:Ù“Íh.í~ø¨BCcfäƒÔ<ÇôiðeWðçõ®gÊnÏPߘ)‘$¤’L® ùI*„—߬{Xçï;Waœ5&#ƒå?Ôuþ•?µ¤sãó~M÷+¤'Ô«vá©aûãAgÄw{ÝM-8R·ë‘¬ä=½[ɲԓ¬É¾(åSJE)Á ’MSNª˜,2CÒŒu%ê– Ë¸;°{þ£ðöikUL#† ÷аf— I²\SQI®ÂZ®M<ª44¶êY8xk(bS×%kœ𴥩+ͯDÔ†AdšX#[HçhiU ­#êºn$šUZ.Q’ì³MÔOêÈ«ƒm•¡À'“{®Qº•¼È[kX±JçÐÍ›z«kY{ Ð+%€µ úVµša R6–«0¶(ÖJÌÌd+ ¬RØ!6´.qÙ¨«1¶¡¡s÷ 3q¤ýòÔ.ÙúWò7…sKûNá»Ví+’Vù“yà7JªÖ#€¶ØJ׹ǜ‘ЫYËàµÞrúÊ®¦Mêµ·M½MÒÉ`«$¬–Ñ…,ÌÍ n™ÿ¶[Œô­†Â°,ØZyd+EVÊ24„°º»4¬…’føW ÎKÂú6ýõ»FZÔ2¶ì–°YA²¹ÆÑ4R¯=¬ÕVùq†úÕd{½–RK›ÒÛ‹kpÚ¾:*Ý£ì?ëûa³ g®b£Ú¶¬ª¶Öó—œÀ´8/Öµ0ŒjÛk‹ŒÚ¶ â!ʕˮ…€¸œeZJµ f e¢âT¸ƒ$[Š~³œo$¸2¹¡[fܦ·TëÓ|Ú&ÓJWJ†ÂÒMãw#&Ù©1Ó#iKZÙ£xMaO_…¿¶¥1-I¡KU´šý8ZÕ[–Ü-`oËûÍÕ·VÚn€anªsphF…ˆ[[´Û ±´HõÅ $Ž€ÚsRJG jQ©È:$­´7µ8Î5°†%kµÑ²¦n7Bá6Ì•‘5‹E×Qo[Ö̘¥¢M3C 7°¶ŒE†Ë1µE†ÓaÇL‘°­'ü±IñY“u+5Ä¢ØéMü«tä´ ¼oPÖ ’Þ è!!G„倵ÿ‘¿ŒÇííW\•|P[Ù0¾’(}RKúòL?/š <Ôû\ó]fºS¨=\d³¢¶]^]I>ð­¶óÎC[—•”›_l‚*sàn–Ø×‘÷aXdr¡|ññ±‚$¦q !f­,šF‚›sn/\A ã|y¢¾¼Ab+¡öü±_Óò¾Î꛵GŽß¶s¥dÉÜ?o¿´*ÖÚÜó$•—ä$¯Xdºš#Ö9´áF@ùxV8h¨ÐÕlI.à–Aþtßô‘k¯È‡(Øò.?ßuΕ¡™v~^VE˜`Æ^ë¦E©&¬€KT°^uð¥IcM¬& °!«·»›–‰ð.({üPÈA³f´·Bejò‹‹T"Q êܚؓáÜO¥!ï¦|ÌïoLvA[OÅrcktPäª@räû+èõû£ö½£Ñ`ˆÜç4æg=Æ<–že›Ö¢äéÑÈn‰Ä€YÉÿ%ÝT#†w<âœr©|Vk‘ÜÃ0b× ‰+¼¸Ê“Bÿ ÿ · ­6- Øë±Lq¼ø´THUégð‚C¿Sâ™^íŒ\‹(;2X ŸÍ~ZA±ím&‹1çÍXŒ®ïX4Ñ#W;ýc½§÷5~ {¼Ê©ÃÌQÖŠšæFßEÔÒ“wŸ¼ù¾ºú‰™ßr&Ù-—Ýçè‹=c r'Ibä’N<ÅÕ3‘roôHe{é •õ†ß£´íÔpMK—þV aÈ-fXÂòÆ}¤èÙ4SÊã 1º#ΑD^™HxN1à) ðÆ›”‚"oiŠñe"aÄ´¶¨Qv»àjœ·ø„R8ËõJʺ¦Ìpti΀Ýf 0ºN7 oF Ò£ºsú@¦¹$–åBÕ–{;Iïé8$(àÀ… ã>>š†ÐßÎ/Â#˜/j¨W•JÓšHÃ%ý"üЯU>£ÌhÂÆÿϪÜÒߎÊì"·^P@®û¹}6|§[Ðß#Uð~×Ôº[EÍØûÃ2R¹’råd÷ã/'’l4Ç‹>*FÏY|¥ë xöBã æœÃÕ² 8—ù¾ý=ã$Ù¤o[HKmPƒÚ3‘FTÎÐåúzÒÒT¤|Îú¤:n>ñà#’ö­¨ú÷޳]¸ê¥q®ÂGž ¼\Þ•‚Hv’Yý~ ¶âƒ„fÚIg+Ìóú›IYdPL¯žÂKQöjHzøùøíÄ)ªzªOÕ…º*@Ù°„²ÂC±nHã’Ùô(;rU’ Ë„?ñÔö†hdiC†k‹œÆ«Xe3FS¼r¥®˜8.5·ô*â»U¡vNt®8¹ uG¹îÜÒ9ŸCihc¸žµgxhö¨ÃÑyÇÖZÏpþKÏÚù¦;Ü;¢WQ÷\-Io;®K1uäìÝvk™ÁÆ<Ë$ÿá㥞…eÕ0&…XÁ.$XÙ€/»là9I"£ÐÃZް•ÉCýŒ"_[hŒçãc5º›Dþ“‡>ˆ ºº§e©²šÉ£b çêµUsªrÚçßâ÷Kîì™}ó?«ÔwŽ|`´9O”çØŒ¸L’·NQ¬ŠÁè+|e6é  Å’MOÃ&ª$CD Zsâ•-}ýÕ ÔÕ‚–o-ÚBˆD70º›Ïœ;°D Ûx5Þ’ÒÅA¸»þÑr ÷s¢Au_ år+ÉAêÁÓGØÏtØMœ*ô<ÞçÒø2œ³ôöLIQ€²Ñ-ƒäý1¸*GOµ÷ñ¸]5å.}¿M ¾©Ù“[Þö.úøÌªïç§õÔvÑu.áºü^«Üw- 7íW!›E\æÔªÞ¹÷Í|E÷mÊ’ÞI¤¢å\M7/,¥ÉÁÍ鎆 J`}mU¡hJñö1dj&Æ"0ÂLF&Á“ 0aC‚˜C dG‘êþOééûHn<‰^“tÝkmKÁÖU3³C vUÏhÍh‹tÖõ¯I ±+!)´H°š’xÏÑäØÝQN"Ea0£i4$äîQ0É,±&ži$àŒ5»Q$¦“A+q)‚ö,†J­š¬U0Ê—`™,•,¨Oƒæ$iÌ*…T*¥Tá‹&S´Cüú®ñ çû¿ '€…óLúŸÝ¡B›’ïkð5å„ÀJ´„L)a„Tnÿ.cLhjÄ_ÌZ?aM!1èˆCýC&‚§):çõU;d‘wF§­å©ìŸQ–í™­`n%P‡GX,<,„>­ ³¤ŸÉ°èZûÚö§Q¿Ò‚4µˆ4¹¤‘»›Îމã6’Yëèæ ã¥~G¢Câ0<_õËrQ'z¦Û²~‡Òrn±Ê坨DXè!%OÈê£ë;§¼~¨\ f 5V¢¢Ø òdÄRcŒ -_gÛ€"õ¢' Š¿ #žÂ“LMž4i0C«ýg€W™#Aس ŒR¤–‹ßn$S]‹*J]Oßš…A^™`uÿ¢Zç5DˆÛ=ìÏ™—$!óS!sêꤹËò,ã¨xú¦¹q3ƒçë<¥ÔU‰°;`M$è=»óZÕ_%ؼ•”ïúû>Ë€¦´4ܤ¿…Ц.`—Ü#ûö·6PÎn†¢H¡õ°i Yó8_Gïn5ÍîÜ_ ý)-ûªbBÑ=çÑö *ñ"¿mgn¬P;1^kù*w4aˆ°Ÿ;#àƒÁ€ËZú“‚ÿqˆ;†Þgo®Îy£'RIZ䋹kž½§mûo?È}&@mu#²@¥ã™Ë§CÌåÏCÐÚ‚0¯I‘Mn2otÞœj¹ÅÁx¤„‡‚4fIù îH;áßuŽ/¸O8;GùÚØ7O×zïÒjô[oÌüWRáE7Åu•–ª?Ÿ¾Åòf¦”»w, ÒÄÑkÿò4U›þ.ÕÙ•µ+­Kf8.mNº /¹øÍƒ“vKnœ×ZKÑʼbž…Þ¬ÕÓÇ3|ÍÇàìí=™&ýÙm’Xw6¬røN?îp‡âbjÙYÍø¡¾hS™r€RbG¼]Öú‚<À½ºêΰ “éÃ,zeБþÃ|¢êÚÖôD@„_ñ ÕÑ—ÎAq*RC|ˆH‰©'„~xùœ5Ú“ÉÙ6Æ úãa<¾xD4¼žpKw¶Iä"ü†ÃÎ?[¦{Ç”£Å•Ì£aÌ©æhõí*âeKØŽQô»+ 0|8,ÐŒYè ½4’ýú—Ð+êR;ªG&Âym\³ªúGû ³Ë©©Ûí»å¼Þ G—çHÜÁD2ΰëŽbNáýŽD­H=®ŸñN»p¢où¦2Gð´‡;êd‹I&ô³W–̳+é7Žk­x!Ã{¦;ïV3÷05_ì¼¾f¢|$Z#£ïò´%2B2#ñlø/8˜Ýë¢8žÇõo³v¤ÊáÞ‡­O'G.|&³õ Ϻ dà©…kÊü€ÛyüÐp•Á~ÅèüϽyíw·z Æ.>\rm]’øœˆ IRB=$.#pÛ|-F˜a6Ë&ë‰Ð´ÊSKñÚËX¬„ŹX+"°9·4ä)¬‡Õç›%{NÕ—”Yú6:ˆ\û€'¼0儱 $”N”c¸5²U(~²‚„ÝÛÆvt»lDA"{ % H ü’H ð3l³;³eÍ`\ß-Ôy{þø±þùbüu_?ñ*èŠéÊëImq$tõæödÐ+  ý¦¦!÷ÐsĘ¥F¨ƒ& ߺ“ª¸/‡ìÌnïæ?¢ÁÐ’õ+à†·VÈ­íãÞæç¶ÌHÃ"97&Å‘$âõïÉ·;ãý:1DÑ ú`ˆ´5‰-côi” =“¢LeÓÅÔ€€Â±i˜MÔ`\…: 4Z(ḗ"RPHµ×…Ý4ÎÇÎ8Yöª´Ás|P“?Œ@øû:³`uV(ŽçÃýCê·„Aõ$“¤"œA(«ØÀÄÚK~+Ó¾C‰JázlK#2Ïži)Šiä ?RÀ;ý.Á!³Ôm0\vÈUW+Âm·¡FT·‚VH×—‘­Ïx=/ =£ôtw MYø<~c»Ð{¸pÁÁ!u´'Âam„”ëO¡!ŸOî"F@¾Òƈ·Þþ?Ø´HËæÿƒá÷$RJÌXT°$1Âãnë+ ÂGÖP®±¼M$¼ ”B\0XCBYLìQóu™X0£B§‡ak-K­&jȬ4m»—SÌIÛ£Z+"ÒʧÞk¹U1+Û¹aØ úžÿþ •õ—xú &D_GÞ-]BÙå„ÀDž–èyø89$ÄuÜSjp}VKÕãÐʘ䗢µ ¼]|ð'F£(H„*$[†¦AYüÇsut†¹( ;d<˜Ã×Ãi¬ªm>;·±@ë’¿Œû¸=6£“W¬Í÷Ø'šÝ6”ô Ç,-)×®ŽÚˆ,À–ØâüÏ;„ùˆïDܳÚ!’—”€µû'€Áû»ÖÒ{db’Ï,õsžÛptÈÂÙS!ÌÚ]Eîê¼:ðJ4³À-Ž# u 8O24ˆ¡vÍÇ/œæÈË–ãú']õoO†îù'Åö[7bŸã§Lo·ÅØ. eˆÁ#,tµ‚Z?/Çêˆ-º7q™ŸE˜`¿†SÝê;»AšABšG\¹÷RJ®HSpJ Ð ˆ:*ESØ,"‹tБ Àtcˆb¦zGÚ£®"w ûõìÜDaü‘ÅåΖóÐTÁì /‹övò39wz3àìôOܺ“G æéüãƒÏƒÊUí%3dK}lfá#–s÷žoíÁÌúmr¾mLé^™$dK¬8’‹M›C”I~í ³½hü_’JHŒ)l#p’ÜÀ2…iöÞ¡'bG=PÄÐíäJ2HÊÉvyp4ã¸r´•;>ôò(x7›:ˆäÚÖðG$€¥ÇæÁÕWÝÓà‰#úÈ®kv¼Ãá"­Py:8 Þ»uD勸­ÓlB–¯õw`@’~оÏi0„á'òhu5Ðs.bCƒŽ§ëù$›DŽçz„¾ÿÝÞ¦ö»ûæÞ)¬ÎÒþâ<³ygÉ&²šÌCàd“rÐNú³ªçV—Uòõ‡=U÷-¥:Çë¿“Wg+‚ëÉÄ“Pd› ±]ÕÂ’@¸C@5¡eÁ<1í”w%弎³¥nu—ŽïÕvaÍÿâ«â¬Áâ¶L“_°æÞ!¦NBži‘7šàëX×þëÆêƒÈr×RiUË%ß·¸AÅcÉH#ƒuýâKÈKÿKâ2(_›³DxG§hšÖn¥"šÕ#qŸáGƒ½ÀèúòNùrDú?ÄÖ)R¬kÑî¿ú°¤1l+rä 6!‹=™¢ó´‹6‹Ð¿¹”W ¶c%‡§ò>á6Ùé9•=úwìÑ©×U?Îñtx'sŽê“rÎØöY7 ýne×qmçOTý º0¿þ`ù¨Ò$×®–‘I«Ê’ÿDuª{¿]¿Ç„`ÑT¬ú¢êã„Ù÷Tä'iј·ûiPíb<ÖÕ}59Ü ÞãK¦±#(NÓcúûœPÄU:Ïïj—¡éŽsç£ÀwÏ[§E´ D8ÇcTÝUnžÀÿŒše8òõѲ§*ýþ#õÉYÐdã=±’¬Ÿˆ+õF(ÉÿŸŒMpµ;9µ‡äs5^ëÁ!óï³ü|í÷Q<Ðæl2÷ŒÊåsªáyué€)Þ\Z+Њìj³#pGÈòs›ÞRÕ5ù¶Ü’z$¼pî’IT—ˆäyÛ=0Ü&³„øã„Hž÷Mñ]Ÿyó›Óðh›Ÿ˜XyÄYß\’ü{ŸMj¬yA‚[®>BRcQŠÒœˆHïÓÝ5×"¬w$=ЀDëe¬t=-É)ãüÝ´¾cƒñv*×ðeÚ†÷êðºjåÛúß—•¥“šÛSÆ{· —”oÏsª^’D+:niM'žIµ·žÊÈröP*Ðá}¦©ZêÆ!C`õÁ-Ci¼IdÂqlX8|ºi•°‘xFq €ÆN$–Ã(ëœ%¾*æËÆþ7V˜R:0öÄØÜ9ü-òCǽ+÷µù+ÅIáɽs2e+^ Tjû2Îèß’À†‰%kͨ·ñõ\ØbÄaÙ!Œˆ@ØcçI4øÐ›Ão„…5gª2²~÷4µ½I°¨×©*“:]"Gjä˜},æÞâ~÷âÍã™=Ì’D˜"ê2„c sq"h†ÇW.uÃÈAhMÓ#H½îô„̹Ö"sÚ`Œ°®(–ëòW†*<`A$5Zü¿ mfli‡¤°ð ×—pK°VÏU`P¿†úB¢EÀk_ÐîßÃ2@ñùÁ`-–äM T  I+TN„ŽÀàŠªdéµyö®âµ;˜Ýâ»p,^Ìã]ó£aj§ ÿWýð$œD†‰Ùè¢4¤²çÛ×4^j[¥iaK\.”Y¯d¬*ÁaƒKɦ»'# §&™OÜw6Ì{8AÌ0ÇòBDÀ•d²‰{¸U½äAeê”óÄ ¨Ýß^~ m¼à}‘%«}_<÷Ïïáu3…µvÉØ•D†âCûA-ž¸Ñ$‹]ñX-Aþžé@¨a%\„¦Ò7H·A9=0U‹8;¢{Ö²®ÿÃsjl5^ÓO>?2|´7²C$¸bþ„«# ïi/Øg™_ž¤Š‚²CuØK¬DHGì±…$$ n “Îÿ×0Ó‡ºu ƒrN]‡ehAà‚,mE£ü BK™ùRsÏN;rìy,Hðe°ÙÿÄTäÇÃx în‹f’a—•"¤'Â;Tä܈#DŒ¢Bú6 Ý­A +Qöv>£ÜÞ×êîÏö3e" ¿í(G:X°sв¾YUIZ•$r©+øB&˜dK“½avx8ªO£»sÓF/mŒ,Jƒ#X@¦‰1K$&É 5*: ·»èåç6Éœ†f£²o‰’4l•m"ý¸d‚ÒLdk€áxáCŒ(€kׯ¢‚BMBLüÞ©Q#hßÖ* í©‹(È2 v©]š\>lEÏÚóŸ uÄÄ=ˆ²ñà?÷Œ­!º}*\­DúŒç€ýÆ]â¯çÇózj"-zúQ'½áöÉæy'Z÷ï7»yŸßáúVT¶=Æ0Š® ï |wÝËcn žœ[Mò#7pÊ{Ÿè"`0LýHW,2…Gê$à Ç}„U˜îÉÞ–‹FÿÒœólР˜IÿHÉÍɋйû‰ŠØ±¶6iò¸6R{Äb¤d:G›?¦K·4ãX†&Kaª2nd¼=Oh²·dc&mŸÎf;Z“HNïÖÂÝ×AÅÅNµ"šÿz¤1\ƒÿËØ#·Þ~€i äþº\¶à@òA€¬foÍšãÃå])Ü(Œ¢Ø˜A¸÷Â>,×£ö.fPÔVåçDÇ^«È%H'Eôï;:àc3“,5íEe¨ÔÄÄñæh Žå8%$$<0[Ç×)Ød—«ž\„Ù¬Gw©a FWVeb‡ô0!*/EJzÞ=eÔQ¨Â² w”¸nÙ[O..a‘êÑÙ45½ e?G h,Q´æ”ßw/ÄÊü!€ãlãP÷Ó³ŽÍŠ®ÅÊx0z'T~—5œS|Ôý¹¢YjôKÓW<¬%ž/gûCwwí´‡$îöIFkÔgþ.ñ•hÚ x¹×H®Âà%’R²¶>$• §/<ñC—b0d®ûc(K<ø ;Ÿ.í¤ŸI ùÿßhi©¿UxŽrI=>¿„A$a]¹%— y5G$™ÈzGl¦¤Oë$býìÿ¡ÿs0P®Kþµ·Ò¼½”úÚ¬:¶óÝìó©V4q ’LQÆ)éQ®{m>z«Œ¦×:é ÷[FÓ¼…[/3RvD\Lö¤³Oø¸ ,ÑßÅxH%Ö¬@^¬`•„@nD7ÚÇ OÞº#™)ë¿´Qs)+iIx&´¸?GëI¬÷w:ú^­æù Âfí¤z×ÄßUoñ´Þà+}¬ðo»+aÁ<ŸXD…6b{²K¢RáËÆž±=4Ö8˜I=@¤£ŸN˜¼™ª^ˆ¼IÛ }¯ðAЉÝÐ^Ÿâ±õµ$™=ö&,**è´:Ò¼ð9¿‡¦=¾)Ná²p*¸Jh+ƒûNôŸÑ꾂 qí¤¯²I ˜Sä¤HAÒ•I)Û1u¢Ÿæ9†1Ðgï—ºvv,Öhš$Á›Hpwº;µÒbI+SkH—cÏLH£Êu6g®%ðG –¾EŒ™žÐÞ¡„WNIÿéXg=ôÁ\º).7r~ã†ÚS%—I?Ê|L„»ŒF™Ê핹8Hß~µ|M°"oÏ÷ß*Jt¢ÿpqu/C:צÔüçb~Óö ý_MþhõÜ }vFÑͱS§Cï4TŒ <’úÜêSŮʕ1‡{$å׿ÇckTU1láw•UWu=‚éZVKj–¥)J•EVM™);³òýèŸóZ¦¿I.៺óa&¹ƒu=,ÈôuØÆ~óØ:ÿô‰óÎŒóŸÏ¹ö&‡·ã ­!Ÿ·R%#öß$¸›µÙû2÷X¯ÜD²‰¸³ÏNf¬tþ²}ƒz´nÓTt¦T–ÅȘ¨ÚHU„«­‚nR//6Ýû=öíúZþï¡|½ ,ïÇÝÖ<†JŒÑBDÒ&SüÉÓ^t_ÄØUÍÉýIÐÑê*û3e®!–$Ý®eL¿aÏ Â_3˜Âwí‘$@‘Œ5ÍEö-£Ñæ« ’ÿ ØÕ°LC W«-åk¾X©5¿uXq”ò>«0¸/“ @V Ñùb)Ê@Äf<Ú  ié§Oã¶øÒ\È$؆š»*:r¾Àù™ö‚Å{›x‹—S—òëÛ7äé;®š £ºG˜'öÆLø)´ ŽIÿ°¹/†í¦þ‰eÿB4°2$y9­$žU-Ä}uJ•îaµÒ;MÓ´{|SRð„^5¶C ³† }‘À¶ø0JüôU Å$0;Aíü>B`à–k_™ü»×êCò´˜ï@|U¸àèï:dµ‡ÑÀ@ ÷ ÿùŠaë ýð†ˆ†€Î0§@\a“îÍ2éKìêÿë¥mÉÚq~c_ËЩл>{I÷…LÛˆ8Glm|(²hÌcÊ`F(×ø‡…˜ûþ¾iž1ObIÓ΋' •í”ûÓ0@Øv$a>Od²Éæ5\ï|éã]û×ïý4fûÿøŒ-¨¿'nQK5jDÕ+”Š~iO‘œ·+yÀñÅ·w”¹uûãì5É{Á}¥±yÕ³ˆû6ú³€Þí¯Ë1t¶º˜›{·¦±½SUI´ìßYæ]Ûò0í›êÞ!SÌ©ûù>šÊ~£ÇvÃ{3óMíŒZš£Â‹IK¿Âf¹æZ?Ê:†‹J¥¸v¶ŒÒíMBÞñõ)¦ˆØdÂSú…NhT~©%åŽ6ì…EösAÈ®®™Q{Нª#òQ±¿S÷^5ªŸ”Å5ŠÕ•Ù,ÐØg²Ø¨ÚA¤A¥HvY–'¹¸Äb¬U¦ÄüQ‰óØq4Ä|¾Î6™Éì?£"µ˜”¶WwÄ:,MQ„ýým[„À5*Áq*¹š¬ê¶*¹seþÎþÙcÎysá>ÃÒpš÷•¬ûÜÖ‰rnª·äu4a 9ºŒ‡ªÐ™*¸uYÕ›·a•\:¬™bô£™C;<1÷ÌÆ~O:ê­ä4Êo„\!éd’²и’y¨^Ü®¼’VÒ$,ޱëì\Ÿ¶ƒdj Õ‰#+ÛFP“A„!&F“XdÛ³°÷C”ß“ía(ü³WHýýÂÙY¢¯¼½'Ø×·^ûþÉ$ Dš:„)ÀÆO‘U‰C9*΋£ ÿÌPVI”ÖC‚x·ÀWã0 Q¨ jB %ÌPVI”Ö}ãhœ@ç_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø¯À7Xg½Þï7l;jpGcq[Üèô÷apÆOvªFA£Fš¦jeÔõLÄ4i 2hÔmG OPÀÔ¨ôž£z¦ÔÚOSjzLÔb=e“ÄÓSMê›CL£z£Êc)´i<ÈFSÊf§êŸ¤È›'¢5&ƒ(%R*x&Õ? §âSÉåOjŸ¤OÔõCõOjS'¦¦žÕ=CÓ& Ú†Ñ=@ÓÉ<§©µ<¡†“GèMª~©êmF6©éêOHzDÙLjzž“ÔÑê~¨zž£ÉSOöMSÔ2z™¨~TÉèÓÃÅ J¥F'‰2a16¡²ƒ&ƒjf£ 144Ñ£ ¡“ÒiÓFšdÉ 4=C@iÐ4hɉ¦#FƒA¦šhÐÐ 0LÀ$¥4ƒF€ ¡ Ð4Ó@h Ð@@ MhUB4Ñ' M¢zMŠzšbšcÈÓMOF§©€OL˜hÓMFÔÄÍ! z54ÓL™0#ODѵ4PÉåLŒš0™16‰¦@i¦˜A¡ÔˆQ#–jŸð̹…°†­naX碦©þ›PÁ±aßEMÅY±QYEJ(è%Ev)ñÖ+«,*WWWT–-aYR²å‚W\.•ÊÃׯYÄ‘YS©)(ϪDxŒ"ˆ”œ"ZVD_®Ôh¶KtQD7VEd%Ûwníå½2Ì»{]3 fRù›oëÖ}]À85ª—Šš•]EEòJä´iQ$T–‘]D4)+¥Ž`0—Œ:ñŽbX¶-~Æ·%âùŽnKõúù|¿_¯X åxiTF‘(¨¿Q"÷_R¦mD_(ED’ÞHL‘‚(H„6@&QY3Tì G÷¯Z†t µâh膎ÿÄhãI^fHDB8„R‘’Hõz‹D˜¢I”¥”eEDPHB4‰AQ$Q(ˆ‚ÝC}`¨¬‰%(”JQú$©YœG£‘JÝp¶(©…L»XU+¬(¸\¡¾r®Â¥`"í¤l••–œrÊä Ì8•¥³Yh–˵†ÕrìÒ›ó&Å4*Ìiaë·&ÂñE…JB7”„a“"!i(ˆ”‘i$F}Þ(Gv’?ÚV²Žñ(ýË++µÕaCRÝ× (ÜUÛŠ¨óœ:ÃÅJ²%t¢V”[«%ß*‚IÒ$p@K@`I 0 $–$d”#v’”8t¢ŽEB#ŸT¢9]ÖƒY œŽ®©­¬±”·¶¯Zfβ4­UKyÓÙ±b«‹¤a%2¡D£W0FNH¶LBˆ‚ Dc‡&VVVc•"*$”¥)I%… •D‰J’R’R”JR”¤JP”’•J"‰jYFmnÆ­™¬ecÁQ¥èùme™ô¥´‘–~†W•j]ÓÅ~õó¤\·’eLÃ0&L0à ‚ìàâAÜc˜bœJ ¯Œ‰‘a¢E˜’ …ÃÒX?cá'ª Ñ0a„žØBZžó€$p˜8 %“a"®QŠ1–?¥ôš:÷¤êZ庴…‚Á~¦Ò-:ÌIƒ"ú]|žÏï¼Ãí/W®×;‡Dȴιõ[ƒ/Sê•Vtz¼åw·sŽyì^ºíùž3¾²-¨Òl<3`êp†™p(5l‹’%(„¤¬íeåãúuº.ïgœË‰]#zJÊR’Xô¨JL*(‘E´n5“xÎůV‘dÇIÕìvë®Ù0ØvdZsM㢼}»ýî¹®wͺ];ò ± åQ——é§<þoNTŒâ©@ ¸:E‘ts¦DâöpFpëJQð°V½Ã2áŠ0"‰jºù;eJî—i­ÅÂcè~­8Ç‘uâÞmÕ%8ýX”q¡)h[Ï,¸ò¸å ´†‘ÿ±âöã%Û¼,Íso†a Œ®!ëÖír¿ãSjáaÑ.Þš!båÓëÛžcoð–7K¦öÏ©õ6ÖÎ0ëe yôfd7jÔG[´n—´Ù»§KÇö:úà‹uº‰?‡‡Ûf•›¶%Ðí|•Dl|ÚBnßJÛowølo!‰Ë´W‹—Ñ¿XVËô¸uÂÙ›tíNI2”ïÖý‘âú¯$MN‡3÷÷sÄŒ‡3Ô• ¡O– `DsááƒØå|æy!Ü“[Ç+ÅæD‡èNG˜¸…q¢5âQ(œªôêqö>R$óQâ'$F²ô®Á2Åáx{—¨z_*ˆÇ™6n)Œ"žaì1ά!º•º{³#R×!wÓ{²"6oIÉüÀ<#÷¡²Ë{.bý‡}jnnB1mŸWð{…ÂÙ):”›G‰—¿MxÜ.pDŽÕÇy—‹ÖÕ\h´{5šø£ˆ<Úo¢âš  yâ¥UѲDØ€@ĪräH•Tök¹é/Öa <£ñ1<ÜãÑv{–Ž"•å–l›, Óqµ|–BϾ¶=³6Í¥&Ç´w9·è¡1+®ºâ„&ð®x¼ÑðÌ„*¢X¬_„-ïb\ÑC0‚#8[HWÃNýnn>¬Jcœv1:ñÔƒF¦ûœÅLâ–÷V\ŽÃ–p´Ôßô% ߇¢ÿ<»8% “œÎìòÜÙr[O 6AÁùúk×Ùf‹/æ¹)Ma jMÖG›ç•…£…¢ èxª´–‰Ä*`m¸³í‘ü72äñ gÍ‘VÜd:¤³_›_wɧï5Í[yŸª’_ri8X5+·ðÿ3ÄdÃñ˜<Dg…µµG_Ö°½@©+xM4àžë£hñdG&æ•—|ì¾[ÔD¥Ì…hŠ8u3Ü¢w·Ÿn$ç%ÓICÅlxþ(ïÕ@ߊ ÛCA Œ ‡ó4k;Œ’Üûÿ«&Ü3ˆê6šŠ.ÑÈXý5|Ûa­ëñÏ0}æªiS…åRÓ;Ð)vÊ͈`F’6ëóƒá¿Œ§±ðk«+v¸DC¤€uëÂpê`ˆ‹Iz.–|?FHîtp+'a µ'm­âdSTóåN>""‡–S'e—ÔD[)3°ÚµÈÍu¯0|DÇWIÃ8k9µÂ_Œ©£6Š2] 4ä£é¤ö„SËTŒ_•px:ã·ëÏW˜A»ŒË­d¬VùRíÖdÒ=nèÆê0¾*­4ìy4zı&O²|€Ø-‰¦ñðŸ¾âƒaGØÝàØ¿‚C`Oe|Ø(6áGj[”†8L‘ôB"Y_%¥®Ùw üóžú[æ£%Ôï~ĸÍᛳϽó¦Õö\$râ]«¼_j¾Nˆà<~¨Å¥Ÿ“ÔiÙ½†l*]«³(åñüßs[QÔ2‹L£ XzûC¥aY5O£ÍṮ 8bè°j±åºz¬¶Û´Ö½Vp~Cu¿3OmÞôÜä\Z.Ms†À1Mi5̉º8¦O|Ôz™§ÎÖ=l¯âãòn‡q,³A’2$8+€Ü=Š„¶Y ™rìÝÏЩ’«0šqaeØ—Òž#܆j„l…€úZ•õ¼¼Üá¿ÚÎN`ÅÌÕ< É3sx”RUÄ‘CàeJJTèYYÌ>3²¸wHáIš#AAŒÆ²{Ó@ê% I¥±Â,‚Œóe Xì£ðÕDá*UsÔê¯1 ÌͰÎQv˲¬²X÷÷Tœ‡Þf6–Ëg,[°Œñv©Í‹ êú~™Ûä™+,™¸3޾‹LïlV0ªT¨äØw,¬´©tè2‹»§?€øX‡ë¶Ï)›“³²í0þ¿O±‹ ¿(‡*G ´ìå0Ž¢£&„JìAŒ1º³ÑNêÂi V¾Ôœ1VÃÂÄ=–-vbeÍþ2“so/cþш !E5ŽúÓU©Ó›ØûºyƒÛI³Xîqu= ØFËÀ¯ù%PÐS{ȵéHÌkû¶ÎŠ|SjKcEFßPl¦Þ¸|Ez÷‘}Á,ÖCÎVsHü)K]kUeÒ"!5œ€ñN¦ G™ƒÖ"ËA0,ÍÁÈÙ‹JLš-TA!UF³êßáÞߨ˜ üùŽ€ö0‡Îçt‰Æù¦è¸9íq@5—„Ë`ì›=»}±·î›îתÁ\z¼_XÓ®ÞâÝ‘!€NHü3µ¥;4c ÉÓ ÜÑšX¸r„k_/SÊî®ðò?ÀÃNïüL㟿x9Å»-X¸â «e®8Ÿ@Ïh@ ^çU»É„þ÷ûÇŸ“³ ž`‰øåJMý³¹cõ·¢ ÈÌÌò±^Ž`Á—¨Ùíý,]' •]£®gÜè¸g|ÇiRÌ騳ñN4d,êy2FlýNAµÿ¼Â´ÏÏ–ûÜÝÕ/îâŒÞ”å õÝþŸvÉ¥°Ùè Þ ʵ†ªœúvryúdݦj¯­!)otzX±Þß•ìª1J­—EmÕ}«ã3 ò(i <Û¶Ä|ô:œ&áÆÐ^gÜ,e²Î!BÀq0zëedQ’Fƒ”áíUò3qªév”¢©xÙäRE=A‚q[Ÿ·—¿)™(">”xÖë¤XñЇo¸Œï°«*•Ö«=¼‰†sqÍ6“±mäDíÇ8»¯•Þº|BiG1¥§xßSqkdiQ8‰"3ã·]è:‡±ì€ ’J@êwf–C)äó¯ ±¾ çöfz܅жWm³Êw9ŒŽ5šñÂ1›ß=Åg²„YHFýÓÅžŠ¥ÇtJÆå>õþs<©1 (3PmØ2ßU9nœ_‹¼²²‰iÎûZ „~B0jó*Šá±êX¯%…ì%sŽ ,ºjæ»Ý¬?‡Ñld˜<„v2bs_±Ô“$º -š LË4UÙAÖíiVú&)iüžy™=QaÛÜ:™¹±Ìÿ‰-s.ns‘êFߪá7éOÅ-ðÙÇ;é¶æ«~UýM1 ÒD“¬V‚¨¨(x‡ºœûÒêÒÿ%ÁÕõ'”‚è.U•sÃl3B@#“5’uŒ£ ت“d-“„bÙ3?˜JN¸B¢»¿¨å#4î R-Bd¤Ô7±§QŒ@ tÇZݬ{¾ò:o_)c …ePÀT-Sôrcà¤äñ]ÙO þC')+ÛSxØ}QxËpé¹FxáB3»Ðá9 ¦pü%e²‚Å¢]½gPШñB8ý¸SW¾:ÍÉæ2]p¥O[CyÄ4>þƒGÎ}sNñ$b9…ßê '×ÁO^^›2Ý)¬·ÃÔ(ÎÏwx<ã!ë>m®Ó\rtèG–/ò×c“Æ ]ù4¦áp[c2É[`3aª,Í¥ãà’«—ê½Õ¤Ñ*g^§+NÎí¨Æ%Ù<ýœ W%õnðAЩƒO6un·SSÛâCâ,]é{q†~°Çžo›ð÷ÌÃÈC‰hÍfì«=!ƒ Ã:†Ø¢‰øP{„¯ܨÊÑ*ìÖly ëþ¡é܉ºVÝV|GÉ÷·¶°¾ŽÇù² B)rH’HИïP×kl،Դ!Èô,6|ºëû1Ç;s⿎ë3£þ¦]wò:ƵUaµáE3¿äµø»’)„‚«:Èzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/PaxHeaders.151519/Makefi0000644000000000000000000000013213612143004031613 xustar000000000000000030 mtime=1579730436.991382812 30 atime=1579730455.926990779 30 ctime=1579730479.635752017 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile.in0000664016037001603700000005611213612143004032552 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_DATA = \ unclean_export.dat.bz2 \ cryptv0.dat.bz2 \ missing_ivset.dat.bz2 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_001_0000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.507747907 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_001_pos.ksh0000755016037001603700000000666013607166133033115 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Once a pool has been exported, it should be recreated after a # successful import. Verify that is true. # # STRATEGY: # 1. Populate the default test directory and unmount it. # 2. Export the default test pool. # 3. Import it using the various combinations. # - Regular import # - Alternate Root Specified # Try to import it by name or guid randomly. # 4. Verify it shows up under 'zpool list'. # 5. Verify it can be mounted again and contains a file. # verify_runnable "global" set -A pools "$TESTPOOL" "$TESTPOOL1" set -A devs " -s" "-d $DEVICE_DIR" set -A options "" "-R $ALTER_ROOT" set -A mtpts "$TESTDIR" "$TESTDIR1" function cleanup { typeset -i i=0 while (( i < ${#pools[*]} )); do poolexists ${pools[i]} && \ log_must zpool export ${pools[i]} datasetexists "${pools[i]}/$TESTFS" || \ log_must zpool import ${devs[i]} ${pools[i]} ismounted "${pools[i]}/$TESTFS" || \ log_must zfs mount ${pools[i]}/$TESTFS [[ -e ${mtpts[i]}/$TESTFILE0 ]] && \ log_must rm -rf ${mtpts[i]}/$TESTFILE0 ((i = i + 1)) done cleanup_filesystem $TESTPOOL1 $TESTFS destroy_pool $TESTPOOL1 [[ -d $ALTER_ROOT ]] && \ log_must rm -rf $ALTER_ROOT } log_onexit cleanup log_assert "Verify that an exported pool can be imported." setup_filesystem "$DEVICE_FILES" $TESTPOOL1 $TESTFS $TESTDIR1 checksum1=$(sum $MYTESTFILE | awk '{print $1}') typeset -i i=0 typeset -i j=0 typeset basedir while (( i < ${#pools[*]} )); do guid=$(get_config ${pools[i]} pool_guid) log_must cp $MYTESTFILE ${mtpts[i]}/$TESTFILE0 log_must zfs umount ${mtpts[i]} j=0 while (( j < ${#options[*]} )); do log_must zpool export ${pools[i]} typeset target=${pools[i]} if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool import ${devs[i]} ${options[j]} $target log_must poolexists ${pools[i]} log_must ismounted ${pools[i]}/$TESTFS basedir=${mtpts[i]} [[ -n ${options[j]} ]] && \ basedir=$ALTER_ROOT/${mtpts[i]} [[ ! -e $basedir/$TESTFILE0 ]] && \ log_fail "$basedir/$TESTFILE0 missing after import." checksum2=$(sum $basedir/$TESTFILE0 | awk '{print $1}') [[ "$checksum1" != "$checksum2" ]] && \ log_fail "Checksums differ ($checksum1 != $checksum2)" ((j = j + 1)) done ((i = i + 1)) done log_pass "Successfully imported a ZPOOL" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_013_0000644000000000000000000000007413607166133031602 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.535748806 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_013_neg.ksh0000755016037001603700000000403513607166133033062 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # For pool may be in use from other system, # 'zpool import' will prompt the warning and fails. # # STRATEGY: # 1. Prepare rawfile that are created from other system. # 2. Verify 'zpool import' will fail. # 3. Verify 'zpool import -f' succeed. # verify_runnable "global" POOL_NAME=unclean_export POOL_FILE=unclean_export.dat function uncompress_pool { log_note "Creating pool from $POOL_FILE" log_must bzcat \ $STF_SUITE/tests/functional/cli_root/zpool_import/blockfiles/$POOL_FILE.bz2 \ > /$TESTPOOL/$POOL_FILE return 0 } function cleanup { poolexists $POOL_NAME && log_must zpool destroy $POOL_NAME [[ -e /$TESTPOOL/$POOL_FILE ]] && rm /$TESTPOOL/$POOL_FILE return 0 } log_assert "'zpool import' fails for pool that was not cleanly exported" log_onexit cleanup uncompress_pool log_mustnot zpool import -d /$TESTPOOL $POOL_NAME log_must zpool import -d /$TESTPOOL -f $POOL_NAME log_pass "'zpool import' fails for pool that was not cleanly exported" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_006_0000644000000000000000000000007313607166133031603 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730479.51874826 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_006_pos.ksh0000755016037001603700000000444113607166133033115 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # For mirror, N-1 destroyed pools devices was removed or used by other # pool, it still can be imported correctly. # # STRATEGY: # 1. Create mirror with N disks. # 2. Destroy this mirror. # 3. Create another pool with N-1 disks which was used by this mirror. # 4. Verify import mirror can succeed. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL2 destroy_pool $TESTPOOL1 log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } log_assert "For mirror, N-1 destroyed pools devices was removed or used " \ "by other pool, it still can be imported correctly." log_onexit cleanup log_must zpool create $TESTPOOL1 mirror $VDEV0 $VDEV1 $VDEV2 typeset guid=$(get_config $TESTPOOL1 pool_guid) typeset target=$TESTPOOL1 if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool destroy $TESTPOOL1 log_must zpool create $TESTPOOL2 $VDEV0 $VDEV2 log_must zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy $TESTPOOL1 log_must zpool destroy $TESTPOOL2 log_must rm -rf $VDEV2 log_must zpool import -d $DEVICE_DIR -D -f $target log_pass "zpool import -D mirror passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_008_0000644000000000000000000000007413607166133031606 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.523748421 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_008_pos.ksh0000755016037001603700000000517213607166133033121 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # For raidz2, two destroyed pool's devices were removed or used by other # pool, it still can be imported correctly. # # STRATEGY: # 1. Create a raidz2 pool A with N disks. # 2. Destroy this pool A. # 3. Create another pool B with two disks which were used by pool A. # 4. Verify import this raidz2 pool can succeed. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL2 destroy_pool $TESTPOOL1 log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } log_assert "For raidz2, two destroyed pools devices was removed or used by " \ "other pool, it still can be imported correctly." log_onexit cleanup log_must zpool create $TESTPOOL1 raidz2 $VDEV0 $VDEV1 $VDEV2 $VDIV3 typeset guid=$(get_config $TESTPOOL1 pool_guid) typeset target=$TESTPOOL1 if (( RANDOM % 2 == 0 )) ; then target=$guid log_note "Import by guid." fi log_must zpool destroy $TESTPOOL1 log_must zpool create $TESTPOOL2 $VDEV0 $VDEV1 log_must zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy $TESTPOOL1 log_must zpool destroy $TESTPOOL2 log_must rm -rf $VDEV0 $VDEV1 log_must zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy $TESTPOOL1 log_note "For raidz2, more than two destroyed pool's devices were used, " \ "import failed." log_must mkfile $FILE_SIZE $VDEV0 $VDEV1 log_must zpool create $TESTPOOL2 $VDEV0 $VDEV1 $VDEV2 log_mustnot zpool import -d $DEVICE_DIR -D -f $target log_must zpool destroy $TESTPOOL2 log_pass "zpool import -D raidz2 passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_012_0000644000000000000000000000007413607166133031601 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.532748709 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_012_pos.ksh0000755016037001603700000001333013607166133033107 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # Once a pool has been exported, it should be recreated after a # successful import, all the sub-filesystems within it should all be restored, # include mount & share status. Verify that is true. # # STRATEGY: # 1. Create the test pool and hierarchical filesystems. # 2. Export the test pool, or destroy the test pool, # depend on testing import [-Df]. # 3. Import it using the various combinations. # - Regular import # - Alternate Root Specified # 4. Verify the mount & share status is restored. # verify_runnable "global" set -A pools "$TESTPOOL" "$TESTPOOL1" set -A devs "" "-d $DEVICE_DIR" set -A options "" "-R $ALTER_ROOT" set -A mtpts "$TESTDIR" "$TESTDIR1" function cleanup { typeset -i i=0 while ((i < ${#pools[*]})); do if poolexists ${pools[i]}; then log_must zpool export ${pools[i]} log_note "Try to import ${devs[i]} ${pools[i]}" zpool import ${devs[i]} ${pools[i]} else log_note "Try to import $option ${devs[i]} ${pools[i]}" zpool import $option ${devs[i]} ${pools[i]} fi if poolexists ${pools[i]}; then is_shared ${pools[i]} && \ log_must zfs set sharenfs=off ${pools[i]} ismounted "${pools[i]}/$TESTFS" || \ log_must zfs mount ${pools[i]}/$TESTFS fi ((i = i + 1)) done destroy_pool $TESTPOOL1 if datasetexists $TESTPOOL/$TESTFS; then log_must zfs destroy -Rf $TESTPOOL/$TESTFS fi log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS [[ -d $ALTER_ROOT ]] && \ log_must rm -rf $ALTER_ROOT } log_onexit cleanup log_assert "Verify all mount & share status of sub-filesystems within a pool \ can be restored after import [-Df]." setup_filesystem "$DEVICE_FILES" $TESTPOOL1 $TESTFS $TESTDIR1 # create a hierarchy of filesystem for pool in ${pools[@]} ; do log_must zfs create $pool/$TESTFS/$TESTCTR log_must zfs create $pool/$TESTFS/$TESTCTR/$TESTCTR1 log_must zfs set canmount=off $pool/$TESTFS/$TESTCTR log_must zfs set canmount=off $pool/$TESTFS/$TESTCTR/$TESTCTR1 log_must zfs create $pool/$TESTFS/$TESTCTR/$TESTFS1 log_must zfs create $pool/$TESTFS/$TESTCTR/$TESTCTR1/$TESTFS1 log_must zfs create $pool/$TESTFS/$TESTFS1 log_must zfs snapshot $pool/$TESTFS/$TESTFS1@snap log_must zfs clone $pool/$TESTFS/$TESTFS1@snap $pool/$TESTCLONE1 done typeset mount_fs="$TESTFS $TESTFS/$TESTFS1 $TESTCLONE1 \ $TESTFS/$TESTCTR/$TESTFS1 $TESTFS/$TESTCTR/$TESTCTR1/$TESTFS1" typeset nomount_fs="$TESTFS/$TESTCTR $TESTFS/$TESTCTR/$TESTCTR1" typeset -i i=0 typeset -i j=0 typeset -i nfs_share_bit=0 typeset -i guid_bit=0 typeset basedir for option in "" "-Df"; do i=0 while ((i < ${#pools[*]})); do pool=${pools[i]} guid=$(get_pool_prop guid $pool) j=0 while ((j < ${#options[*]})); do # set sharenfs property off/on nfs_share_bit=0 while ((nfs_share_bit <= 1)); do typeset f_share="" typeset nfs_flag="sharenfs=off" if ((nfs_share_bit == 1)); then log_note "Set sharenfs=on $pool" log_must zfs set sharenfs=on $pool log_must is_shared $pool f_share="true" nfs_flag="sharenfs=on" fi # for every off/on nfs bit import guid/pool_name guid_bit=0 while ((guid_bit <= 1)); do typeset guid_flag="pool name" if [[ -z $option ]]; then log_must zpool export $pool else log_must zpool destroy $pool fi typeset target=$pool if ((guid_bit == 1)); then log_note "Import by guid." if [[ -z $guid ]]; then log_fail "guid should "\ "not be empty!" else target=$guid guid_flag="$guid" fi fi log_note "Import with $nfs_flag and " \ "$guid_flag" zpool import $option ${devs[i]} \ ${options[j]} $target #import by GUID if import by pool name fails if [[ $? != 0 ]]; then log_note "Possible pool name" \ "duplicates. Try GUID import" target=$guid log_must zpool import $option \ ${devs[i]} ${options[j]} \ $target fi log_must poolexists $pool for fs in $mount_fs; do log_must ismounted $pool/$fs [[ -n $f_share ]] && \ log_must is_shared $pool/$fs done for fs in $nomount_fs; do log_mustnot ismounted $pool/$fs log_mustnot is_shared $pool/$fs done ((guid_bit = guid_bit + 1)) done # reset nfsshare=off if [[ -n $f_share ]]; then log_must zfs set sharenfs=off $pool log_mustnot is_shared $pool fi ((nfs_share_bit = nfs_share_bit + 1)) done ((j = j + 1)) done ((i = i + 1)) done done log_pass "All mount & share status of sub-filesystems within a pool \ can be restored after import [-Df]." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_feat0000644000000000000000000000007413607166133032057 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.544749095 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_features_001_pos.ksh0000755016037001603700000000415713607166133035012 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg ################################################################################# # # Pool can be imported with inactive unsupported features. # # 1. Create new pool. # 2. Export and inject unsuppored features with zhack. # 3. Import pool normally with no problems. # 4. Verify that unsupported@ properties exist for the unsupported features. # ################################################################################ verify_runnable "global" features="com.test:xxx_unsup0 com.test:xxx_unsup1 com.test:xxx_unsup2" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 log_must rm $VDEV0 log_must mkfile $FILE_SIZE $VDEV0 } log_assert "Pool with inactive unsupported features can be imported." log_onexit cleanup log_must zpool create $TESTPOOL1 $VDEV0 log_must zpool export $TESTPOOL1 for feature in $features; do log_must zhack -d $DEVICE_DIR feature enable $TESTPOOL1 $feature done log_must zpool import -d $DEVICE_DIR $TESTPOOL1 for feature in $features; do state=$(zpool list -Ho unsupported@$feature $TESTPOOL1) if [[ "$state" != "inactive" ]]; then log_fail "unsupported@$feature is '$state'" fi done log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_009_0000644000000000000000000000007413607166133031607 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.525748485 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_009_neg.ksh0000755016037001603700000000544213607166133033072 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # DESCRIPTION: # Try each 'zpool import' with inapplicable scenarios to make sure # it returns an error. include: # * A non-existent pool name is given # * '-d', but no device directory specified # * '-R', but no alter root directory specified # * '-a', but a pool name specified either # * more than 2 pool names is given # * The new pool name specified already exists # * Contain invalid characters not allowed in the ZFS namespace # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute the sub-command # 3. Verify an error is returned. # verify_runnable "global" set -A args "blah" "-d" "-R" "-a $TESTPOOL" \ "$TESTPOOL ${TESTPOOL}-new ${TESTPOOL}-new" \ "$TESTPOOL $TESTPOOL1" \ "$TESTPOOL ${TESTPOOL1}*" "$TESTPOOL ${TESTPOOL1}?" set -A pools "$TESTPOOL" "$TESTPOOL1" set -A devs "" "-d $DEVICE_DIR" function cleanup { typeset -i i=0 typeset -i j=0 while (( i < ${#pools[*]} )); do poolexists ${pools[i]} && \ log_must zpool export ${pools[i]} datasetexists "${pools[i]}/$TESTFS" || \ log_must zpool import ${devs[i]} ${pools[i]} ismounted "${pools[i]}/$TESTFS" || \ log_must zfs mount ${pools[i]}/$TESTFS ((i = i + 1)) done cleanup_filesystem $TESTPOOL1 $TESTFS destroy_pool $TESTPOOL1 } log_onexit cleanup log_assert "Badly-formed 'zpool import' with inapplicable scenarios " \ "should return an error." setup_filesystem "$DEVICE_FILES" $TESTPOOL1 $TESTFS $TESTDIR1 log_must zpool export $TESTPOOL typeset -i i=0 while (( i < ${#args[*]} )); do log_mustnot zpool import ${args[i]} ((i = i + 1)) done log_pass "Badly formed 'zpool import' with inapplicable scenarios " \ "fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import_010_0000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.527748549 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_010_pos.ksh0000755016037001603700000000505213607166133033107 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_import/zpool_import.cfg # # DESCRIPTION: # 'zpool -D -a' can import all the specified directories destroyed pools. # # STRATEGY: # 1. Create a 5 ways mirror pool A with dev0/1/2/3/4, then destroy it. # 2. Create a stripe pool B with dev1. Then destroy it. # 3. Create a raidz2 pool C with dev2/3/4. Then destroy it. # 4. Create a raidz pool D with dev3/4. Then destroy it. # 5. Create a stripe pool E with dev4. Then destroy it. # 6. Verify 'zpool import -D -a' recover all the pools. # verify_runnable "global" function cleanup { typeset dt for dt in $poolE $poolD $poolC $poolB $poolA; do destroy_pool $dt done log_must rm -rf $DEVICE_DIR/* typeset i=0 while (( i < $MAX_NUM )); do log_must mkfile $FILE_SIZE ${DEVICE_DIR}/${DEVICE_FILE}$i ((i += 1)) done } log_assert "'zpool -D -a' can import all the specified directories " \ "destroyed pools." log_onexit cleanup poolA=poolA.$$; poolB=poolB.$$; poolC=poolC.$$; poolD=poolD.$$; poolE=poolE.$$ log_must zpool create $poolA mirror $VDEV0 $VDEV1 $VDEV2 $VDEV3 $VDEV4 log_must zpool destroy $poolA log_must zpool create $poolB $VDEV1 log_must zpool destroy $poolB log_must zpool create $poolC raidz2 $VDEV2 $VDEV3 $VDEV4 log_must zpool destroy $poolC log_must zpool create $poolD raidz $VDEV3 $VDEV4 log_must zpool destroy $poolD log_must zpool create $poolE $VDEV4 log_must zpool destroy $poolE log_must zpool import -d $DEVICE_DIR -D -f -a for dt in $poolA $poolB $poolC $poolD $poolE; do log_must datasetexists $dt done log_pass "'zpool -D -a' test passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030424 xustar000000000000000030 mtime=1579730436.939381142 30 atime=1579730455.894989751 30 ctime=1579730479.573750027 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile.in0000664016037001603700000010202213612143004030425 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_import DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive DATA = $(dist_pkgdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_import ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = blockfiles dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ import_cachefile_device_added.ksh \ import_cachefile_device_removed.ksh \ import_cachefile_device_replaced.ksh \ import_cachefile_mirror_attached.ksh \ import_cachefile_mirror_detached.ksh \ import_cachefile_shared_device.ksh \ import_devices_missing.ksh \ import_paths_changed.ksh \ import_rewind_config_changed.ksh \ import_rewind_device_replaced.ksh \ zpool_import_001_pos.ksh \ zpool_import_002_pos.ksh \ zpool_import_003_pos.ksh \ zpool_import_004_pos.ksh \ zpool_import_005_pos.ksh \ zpool_import_006_pos.ksh \ zpool_import_007_pos.ksh \ zpool_import_008_pos.ksh \ zpool_import_009_neg.ksh \ zpool_import_010_pos.ksh \ zpool_import_011_neg.ksh \ zpool_import_012_pos.ksh \ zpool_import_013_neg.ksh \ zpool_import_014_pos.ksh \ zpool_import_015_pos.ksh \ zpool_import_all_001_pos.ksh \ zpool_import_features_001_pos.ksh \ zpool_import_features_002_neg.ksh \ zpool_import_features_003_pos.ksh \ zpool_import_missing_001_pos.ksh \ zpool_import_missing_002_pos.ksh \ zpool_import_missing_003_pos.ksh \ zpool_import_rename_001_pos.ksh \ zpool_import_encrypted.ksh \ zpool_import_encrypted_load.ksh \ zpool_import_errata3.ksh \ zpool_import_errata4.ksh dist_pkgdata_DATA = \ zpool_import.cfg \ zpool_import.kshlib all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/PaxHeaders.151519/zpool_import.cfg0000644000000000000000000000007413607166147031623 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.475746879 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import.cfg0000644016037001603700000000776213607166147031634 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export DISKSARRAY=$DISKS export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') typeset -a disk_array=($(find_disks $DISKS)) case "${#disk_array[*]}" in 0) # # on stf_configure, disk_freelist returns empty. # DISK_COUNT=0 ;; 1) # We need to repartition the single disk to two slices. if is_linux; then set_device_dir set_slice_prefix PRIMARY_SLICE=1 DISK_COUNT=1 ZFS_DISK1=${disk_array[0]} ZFS_DISK2=${disk_array[0]} if is_mpath_device $ZFS_DISK1; then export DEV_DSKDIR=$DEV_MPATHDIR else export DEV_DSKDIR=$DEV_RDSKDIR fi if ( is_mpath_device $ZFS_DISK1 ) && [[ -z $(echo $ZFS_DISK1 | awk 'substr($1,18,1)\ ~ /^[[:digit:]]+$/') ]] || ( is_real_device $ZFS_DISK1 ); then ZFSSIDE_DISK1=${ZFS_DISK1}1 elif ( is_mpath_device $ZFS_DISK1 || is_loop_device $ZFS_DISK1 ); then ZFSSIDE_DISK1=${ZFS_DISK1}p1 else log_fail "$ZFS_DISK1 not supported for partitioning." fi else export DEV_DSKDIR="/dev" PRIMARY_SLICE=2 DISK_COUNT=1 ZFS_DISK1=${disk_array[0]} ZFSSIDE_DISK1=${ZFS_DISK1}s0 ZFS_DISK2=${disk_array[0]} fi ;; *) # We need to repartition the single disk to two slices. if is_linux; then set_device_dir set_slice_prefix PRIMARY_SLICE=1 DISK_COUNT=2 ZFS_DISK1=${disk_array[0]} if is_mpath_device $ZFS_DISK1; then export DEV_DSKDIR=$DEV_MPATHDIR else export DEV_DSKDIR=$DEV_RDSKDIR fi if ( is_mpath_device $ZFS_DISK1 ) && [[ -z $(echo $ZFS_DISK1 | awk 'substr($1,18,1)\ ~ /^[[:digit:]]+$/') ]] || ( is_real_device $ZFS_DISK1 ); then ZFSSIDE_DISK1=${ZFS_DISK1}1 elif ( is_mpath_device $ZFS_DISK1 || is_loop_device $ZFS_DISK1 ); then ZFSSIDE_DISK1=${ZFS_DISK1}p1 else log_fail "$ZFS_DISK1 not supported for partitioning." fi ZFS_DISK2=${disk_array[1]} else export DEV_DSKDIR="/dev" PRIMARY_SLICE=2 DISK_COUNT=2 ZFS_DISK1=${disk_array[0]} ZFSSIDE_DISK1=${ZFS_DISK1}s0 ZFS_DISK2=${disk_array[1]} fi ;; esac export DISK_COUNT ZFS_DISK1 ZFSSIDE_DISK1 ZFS_DISK2 export FS_SIZE="$((($MINVDEVSIZE / (1024 * 1024)) * 32))m" export FILE_SIZE="$((MINVDEVSIZE))" export SLICE_SIZE="$((($MINVDEVSIZE / (1024 * 1024)) * 2))m" export MAX_NUM=5 export GROUP_NUM=3 export DEVICE_DIR=$TEST_BASE_DIR/dev_import-test export BACKUP_DEVICE_DIR=$TEST_BASE_DIR/bakdev_import-test export DEVICE_FILE=disk export DEVICE_ARCHIVE=archive_import-test export MYTESTFILE=$STF_SUITE/include/libtest.shlib export CPATH=$TEST_BASE_DIR/cachefile.$$ export CPATHBKP=$TEST_BASE_DIR/cachefile.$$.bkp export CPATHBKP2=$TEST_BASE_DIR/cachefile.$$.bkp2 export MD5FILE=$TEST_BASE_DIR/md5sums.$$ export MD5FILE2=$TEST_BASE_DIR/md5sums.$$.2 typeset -i num=0 while (( num < $GROUP_NUM )); do DEVICE_FILES="$DEVICE_FILES ${DEVICE_DIR}/${DEVICE_FILE}$num" (( num = num + 1 )) done export DEVICE_FILES export VDEV0=$DEVICE_DIR/${DEVICE_FILE}0 export VDEV1=$DEVICE_DIR/${DEVICE_FILE}1 export VDEV2=$DEVICE_DIR/${DEVICE_FILE}2 export VDEV3=$DEVICE_DIR/${DEVICE_FILE}3 export VDEV4=$DEVICE_DIR/${DEVICE_FILE}4 export ALTER_ROOT=/alter_import-test zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_sysfs0000644000000000000000000000013213612143056025605 xustar000000000000000030 mtime=1579730478.332710178 30 atime=1579730489.089055548 30 ctime=1579730478.332710178 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/0000775016037001603700000000000013612143056025666 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/zpool_set_unsupporte0000644000000000000000000000007313607166133032140 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.32871005 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/zpool_set_unsupported.ksh0000755016037001603700000000277313607166133033102 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A property not supported by the zfs module should fail in 'zpool set ' # # STRATEGY: # 1. Run zpool set with the env variable 'ZFS_SYSFS_PROP_SUPPORT_TEST' # 2. Verify that zpool set returns error # verify_runnable "global" if ! is_linux ; then log_unsupported "sysfs is linux-only" fi claim="Properties not supported by zfs module should fail in 'zpool set '" unsupported_prop="comment" value="You Shall Not Pass" log_assert $claim log_mustnot eval "ZFS_SYSFS_PROP_SUPPORT_TEST=yes zpool set \ ${unsupported_prop}=${value} $TESTPOOL/$TESTFS >/dev/null 2>&1" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133027727 xustar000000000000000029 atime=1579730435.98935064 30 ctime=1579730478.330710114 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/Makefile.am0000644016037001603700000000045113607166133027725 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_sysfs dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfeature_set_unsupported.ksh \ zfs_get_unsupported.ksh \ zfs_set_unsupported.ksh \ zfs_sysfs_live.ksh \ zpool_get_unsupported.ksh \ zpool_set_unsupported.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147027550 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.312709536 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/setup.ksh0000755016037001603700000000176013607166147027554 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007213607166147030035 xustar000000000000000030 atime=1579730360.849765597 28 ctime=1579730478.3147096 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/cleanup.ksh0000755016037001603700000000171013607166147030036 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/zfs_sysfs_live.ksh0000644000000000000000000000007313607166133031452 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.32370989 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/zfs_sysfs_live.ksh0000755016037001603700000000351113607166133031453 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018, 2019 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Test if the expected '/sys/module/zfs//' are present # verify_runnable "global" if ! is_linux ; then log_unsupported "sysfs is linux-only" fi claim="Expected '/sys/module/zfs//' attributes are present" kernel_feature_attr="/sys/module/zfs/features.kernel/org.zfsonlinux:vdev_trim/supported" pool_feature_attr="/sys/module/zfs/features.pool/org.open-zfs:large_blocks/guid" pool_prop__attr="/sys/module/zfs/properties.pool/comment/values" ds_prop__attr="/sys/module/zfs/properties.dataset/recordsize/values" log_assert $claim log_must cat $kernel_feature_attr log_must cat $pool_feature_attr log_must cat $pool_prop__attr log_must cat $ds_prop__attr # force a read of all the attributes for show func code coverage log_must grep -R "[a-z]" /sys/module/zfs/features.* log_must grep -R "[a-z]" /sys/module/zfs/properties.* log_mustnot grep -RE "[^[:print:]]" /sys/module/zfs/properties.* log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/zfs_get_unsupported.0000644000000000000000000000007413607166133032006 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.319709762 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/zfs_get_unsupported.ksh0000755016037001603700000000271713607166133032523 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A property not supported by the zfs module should fail in 'zfs get ' # # STRATEGY: # 1. Run zfs get with the env variable 'ZFS_SYSFS_PROP_SUPPORT_TEST' # 2. Verify that zfs get returns error # verify_runnable "global" if ! is_linux ; then log_unsupported "sysfs is linux-only" fi claim="Properties not supported by zfs module should fail in 'zfs get '" unsupported_prop="dnodesize" log_assert $claim log_mustnot eval "ZFS_SYSFS_PROP_SUPPORT_TEST=yes zfs get ${unsupported_prop} \ $TESTPOOL/$TESTFS >/dev/null 2>&1" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/zfeature_set_unsuppo0000644000000000000000000000007413607166133032110 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.317709696 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/zfeature_set_unsupported.ksh0000755016037001603700000000300413607166133033550 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A feature not supported by the zfs module should fail in 'zpool set ' # # STRATEGY: # 1. Run zpool set with env var 'ZFS_SYSFS_PROP_SUPPORT_TEST' # 2. Verify that zpool set returns error # verify_runnable "global" if ! is_linux ; then log_unsupported "sysfs is linux-only" fi claim="Features not supported by zfs module should fail in 'zpool set '" unsupported_feature="feature@large_blocks" value="enabled" log_assert $claim log_mustnot eval "ZFS_SYSFS_PROP_SUPPORT_TEST=yes zpool set \ ${unsupported_feature}=${value} $TESTPOOL/$TESTFS >/dev/null 2>&1" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/zfs_set_unsupported.0000644000000000000000000000007413607166133032022 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.321709826 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/zfs_set_unsupported.ksh0000755016037001603700000000274413607166133032537 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A property not supported by the zfs module should fail in 'zfs set ' # # STRATEGY: # 1. Run zfs set with the env variable 'ZFS_SYSFS_PROP_SUPPORT_TEST' # 2. Verify that zfs get returns error # verify_runnable "global" if ! is_linux ; then log_unsupported "sysfs is linux-only" fi claim="Properties not supported by zfs module should fail in 'zfs set '" unsupported_prop="dnodesize" value="any" log_assert $claim log_mustnot eval "ZFS_SYSFS_PROP_SUPPORT_TEST=yes zfs set \ ${unsupported_prop}=${value} $TESTPOOL/$TESTFS >/dev/null 2>&1" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/zpool_get_unsupporte0000644000000000000000000000007413607166133032125 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.325709954 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/zpool_get_unsupported.ksh0000755016037001603700000000277113607166133033064 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A property not supported by the zfs module should fail in 'zpool get ' # # STRATEGY: # 1. Run zpool get with the env variable 'ZFS_SYSFS_PROP_SUPPORT_TEST' # 2. Verify that zfs get returns error # verify_runnable "global" if ! is_linux ; then log_unsupported "sysfs is linux-only" fi export ZFS_SYSFS_PROP_SUPPORT_TEST claim="Properties not supported by zfs module should fail in 'zpool get '" unsupported_prop="comment" log_assert $claim log_mustnot eval "ZFS_SYSFS_PROP_SUPPORT_TEST=yes zpool get \ ${unsupported_prop} $TESTPOOL/$TESTFS >/dev/null 2>&1" log_pass $claim zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004027720 xustar000000000000000030 mtime=1579730436.025351795 30 atime=1579730455.412974275 30 ctime=1579730478.332710178 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/Makefile.in0000664016037001603700000005752613612143004027743 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_sysfs DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_sysfs ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfeature_set_unsupported.ksh \ zfs_get_unsupported.ksh \ zfs_set_unsupported.ksh \ zfs_sysfs_live.ksh \ zpool_get_unsupported.ksh \ zpool_set_unsupported.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_sysfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_split0000644000000000000000000000013213612143060026125 xustar000000000000000030 mtime=1579730480.342774719 30 atime=1579730489.089055548 30 ctime=1579730480.342774719 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/0000775016037001603700000000000013612143060026206 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/zpool_split_cliarg0000644000000000000000000000007413607166133032043 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.324774141 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_cliargs.ksh0000755016037001603700000000423613607166133033017 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_split/zpool_split.cfg # # DESCRIPTION: # 'zpool split' should only work with supported options and parameters. # # STRATEGY: # 1. Verify every supported option is accepted # 2. Verify other unsupported options raise an error # 3. Verify we cannot split a pool if the destination already exists # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 rm -f $DEVICE1 $DEVICE2 $DEVICE3 } function setup_mirror { truncate -s $SPA_MINDEVSIZE $DEVICE1 truncate -s $SPA_MINDEVSIZE $DEVICE2 log_must zpool create -f $TESTPOOL mirror $DEVICE1 $DEVICE2 } log_assert "'zpool split' should only work with supported options and parameters." log_onexit cleanup typeset goodopts=( "" "-g" "-L" "-n" "-P" "-o comment=ok" "-o ro -R /mnt" "-l -R /mnt" "-gLnP") typeset badopts=( "-f" "-h" "-x" "-Pp" "-l" "-G" "-o" "-o ro" "-o comment" "-R" "-R dir" "=") DEVICE1="$TEST_BASE_DIR/device-1" DEVICE2="$TEST_BASE_DIR/device-2" DEVICE3="$TEST_BASE_DIR/device-3" # 1. Verify every supported option and/or parameter is accepted for opt in "${goodopts[@]}" do setup_mirror log_must zpool split $opt $TESTPOOL $TESTPOOL2 cleanup done # 2. Verify other unsupported options and/or parameters raise an error setup_mirror for opt in "${badopts[@]}" do log_mustnot zpool split $opt $TESTPOOL $TESTPOOL2 done cleanup # 3. Verify we cannot split a pool if the destination already exists setup_mirror truncate -s $SPA_MINDEVSIZE $DEVICE3 log_must zpool create $TESTPOOL2 $DEVICE3 log_mustnot zpool split $TESTPOOL $TESTPOOL2 log_pass "'zpool split' only works with supported options and parameters." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/zpool_split_vdevs.0000644000000000000000000000007413607166147032014 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.333774429 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_vdevs.ksh0000755016037001603700000000754413607166147032534 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_split/zpool_split.cfg . $STF_SUITE/include/math.shlib # # DESCRIPTION: # 'zpool split' should only work on mirrors. Every other VDEV layout is not # supported. # # STRATEGY: # Create pools with various VDEV layouts and verify only mirrors can be split # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 rm -f $FILEDEV_PREFIX* } # # Given a vdev type generate a pool configuration which can be immediately # used as "zpool create $poolname $config" or "zpool add $poolname $config". # Supported vdev types are: # "d" - single disk # "t" - stripe # "m" - mirror # "m3" - 3-way mirror # "z1" - raidz1 # "z2" - raidz2 # "z3" - raidz3 # "s" - spare # "l" - log # "ll" - mirrored log # "c" - cache # "sc" - special class # function pool_config # { typeset config="" typeset -A disks disks[d]="d1" disks[t]="t1 t2" disks[m]="m1 m2" disks[m3]="m1 m2 m3" disks[z1]="z1 z2" disks[z2]="z1 z2 z3" disks[z3]="z1 z2 z3 z4" disks[s]="s1" disks[l]="l1" disks[ll]="l1 l2" disks[c]="c1" disks[sc]="sc1 sc2" case $1 in d|t) # single disk or stripe vdev='' ;; m|m3) # 2-way or 3-way mirror vdev='mirror';; z1) # raidz1 vdev='raidz1';; z2) # raidz2 vdev='raidz2';; z3) # raidz3 vdev='raidz3';; s) # spare vdev='spare';; l) # log vdev='log';; ll) # mirrored log vdev='log mirror';; c) # cache vdev='cache';; sc) # mirrored special class vdev='special mirror';; *) log_fail "setup_pool: unsupported vdev type '$1'" esac config="$vdev" for tok in ${disks[$1]}; do filedev="$FILEDEV_PREFIX-$tok" # if $filedev exists we are requesting the same vdev type twice # in a row (eg. pool of striped mirrors): add a random suffix. while [[ -f $filedev ]]; do filedev="$filedev.$RANDOM" done truncate -s $SPA_MINDEVSIZE "$filedev" config="$config $filedev" done echo "$config" } log_assert "'zpool split' should work only on mirror VDEVs" log_onexit cleanup # "good" and "bad" pool layouts # first token is always used with "zpool create" # second to last tokens, if any, are used with "zpool add" typeset -a goodconfs=("m" "m l" "m s" "m c" "m m" "m3" "m3 m3" "m m3 l s c" "m m sc") typeset -a badconfs=("d" "z1" "z2" "z3" "m d" "m3 d" "m z1" "m z2" "m z3") typeset FILEDEV_PREFIX="$TEST_BASE_DIR/filedev" typeset altroot="$TESTDIR/altroot-$TESTPOOL2" # Create pools with various VDEV layouts and verify only mirrors can be split for config in "${goodconfs[@]}" do create_config="${config%% *}" add_config="$(awk '{$1= "";print $0}' <<< $config)" log_must zpool create $TESTPOOL $(pool_config $create_config) for vdev in $add_config; do log_must zpool add $TESTPOOL -f $(pool_config $vdev) done log_must zpool split -R $altroot $TESTPOOL $TESTPOOL2 log_must poolexists $TESTPOOL2 log_must test "$(get_pool_prop 'altroot' $TESTPOOL2)" == "$altroot" cleanup done # Every other pool layout should *not* be splittable for config in "${badconfs[@]}" do create_config="${config%% *}" add_config="$(awk '{$1= "";print $0}' <<< $config)" log_must zpool create $TESTPOOL $(pool_config $create_config) for vdev in $add_config; do log_must zpool add $TESTPOOL -f $(pool_config $vdev) done log_mustnot zpool split -R $altroot $TESTPOOL $TESTPOOL2 log_mustnot poolexists $TESTPOOL2 cleanup done log_pass "'zpool split' works only on mirror VDEVs" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/zpool_split_encryp0000644000000000000000000000007413607166133032102 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.328774269 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_encryption.ksh0000755016037001603700000000332013607166133033556 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_split/zpool_split.cfg # # DESCRIPTION: # 'zpool split' should be able to split encrypted pools # # STRATEGY: # 1. Create an encrypted pool # 2. Split and re-import the pool, verify altroot is mounted. # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 rm -f $DEVICE1 $DEVICE2 } log_assert "'zpool split' should be able to split encrypted pools" log_onexit cleanup DEVICE1="$TEST_BASE_DIR/device-1" DEVICE2="$TEST_BASE_DIR/device-2" passphrase="password" altroot="$TESTDIR/zpool-split-$RANDOM" # 1. Create an encrypted pool truncate -s $SPA_MINDEVSIZE $DEVICE1 truncate -s $SPA_MINDEVSIZE $DEVICE2 log_must eval "echo "$passphrase" | zpool create -O encryption=aes-256-ccm " \ "-O keyformat=passphrase $TESTPOOL mirror $DEVICE1 $DEVICE2" # 2. Split and re-import the pool, verify altroot is mounted. log_must eval "echo "$passphrase" | zpool split -l -R $altroot " \ "$TESTPOOL $TESTPOOL2" log_must test "$(get_prop 'encryption' $TESTPOOL2)" == "aes-256-ccm" log_must test "$(get_pool_prop 'altroot' $TESTPOOL2)" == "$altroot" log_must mounted $altroot/$TESTPOOL2 log_pass "'zpool split' can split encrypted pools" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030255 xustar000000000000000030 atime=1579730437.540400439 30 ctime=1579730480.340774654 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/Makefile.am0000644016037001603700000000062413607166133030254 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_split dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zpool_split_cliargs.ksh \ zpool_split_devices.ksh \ zpool_split_encryption.ksh \ zpool_split_props.ksh \ zpool_split_vdevs.ksh \ zpool_split_resilver.ksh \ zpool_split_wholedisk.ksh dist_pkgdata_DATA = \ zpool_split.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/zpool_split_wholed0000644000000000000000000000007413607166133032064 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.338774589 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_wholedisk.ksh0000755016037001603700000000502613607166133033362 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_split/zpool_split.cfg # # DESCRIPTION: # 'zpool split' should work with whole-disk devices. # # STRATEGY: # 1. Create a mirror with a whole-disk device # 2. Verify 'zpool split' works and successfully split the mirror # 3. Cleanup and create the same mirror # 4. Verify 'zpool split' using the other device # verify_runnable "both" if is_linux; then # Add one 512b spare device (4Kn would generate IO errors on replace) # NOTE: must be larger than other "file" vdevs and minimum SPA devsize: # add 32m of fudge load_scsi_debug $(($SPA_MINDEVSIZE/1024/1024+32)) 1 1 1 '512b' else log_unsupported "scsi debug module unsupported" fi function cleanup { destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 unload_scsi_debug rm -f "$FILE_DEVICE" } function setup_mirror { # NOTE: "-f" is required to create a mixed (file and disk device) mirror log_must truncate -s $SPA_MINDEVSIZE $FILE_DEVICE log_must zpool create -f $TESTPOOL mirror $FILE_DEVICE $DISK_DEVICE # NOTE: verify disk is actually a "whole-disk" device log_must test "$(zdb -PC $TESTPOOL | grep -c 'whole_disk: 1')" == 1 } log_assert "'zpool split' should work with whole-disk devices" log_onexit cleanup FILE_DEVICE="$TEST_BASE_DIR/file-device" DISK_DEVICE="$(get_debug_device)" ALTROOT="$TEST_BASE_DIR/altroot-$TESTPOOL2" # 1. Create a mirror with a whole-disk device setup_mirror # 2. Verify 'zpool split' works and successfully split the mirror log_must zpool split -R "$ALTROOT" $TESTPOOL $TESTPOOL2 $DISK_DEVICE log_must check_vdev_state $TESTPOOL $FILE_DEVICE "ONLINE" log_must check_vdev_state $TESTPOOL2 $DISK_DEVICE "ONLINE" # 3. Cleanup and create the same mirror destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 setup_mirror # 4. Verify 'zpool split' using the other device log_must zpool split -R "$ALTROOT" $TESTPOOL $TESTPOOL2 $FILE_DEVICE log_must check_vdev_state $TESTPOOL $DISK_DEVICE "ONLINE" log_must check_vdev_state $TESTPOOL2 $FILE_DEVICE "ONLINE" log_pass "'zpool split' works with whole-disk devices" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030070 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.322774077 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/setup.ksh0000755016037001603700000000102413607166133030065 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030357 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.319773979 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/cleanup.ksh0000755016037001603700000000104513607166133030357 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/zpool_split_device0000644000000000000000000000007413607166133032041 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.326774205 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_devices.ksh0000755016037001603700000000542213607166133033013 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_split/zpool_split.cfg # # DESCRIPTION: # 'zpool split' should use the provided devices to split the pool # # STRATEGY: # 1. Create various (mirror-only) pools # 2. Verify 'zpool split' can provide a list of devices to be included in the # new pool. At most one disk from each mirror can be specified. # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 rm -f $FILEDEV_PREFIX* } function setup_mirror # { for filedev in "${fd[@]}"; do truncate -s $SPA_MINDEVSIZE "$filedev" done log_must zpool create -f $TESTPOOL $conf } log_assert "'zpool split' should use the provided devices to split the pool" log_onexit cleanup typeset altroot="$TESTDIR/altroot-$TESTPOOL2" typeset FILEDEV_PREFIX="$TEST_BASE_DIR/filedev" typeset -A fd fd[01]="$FILEDEV_PREFIX-01" fd[02]="$FILEDEV_PREFIX-02" fd[03]="$FILEDEV_PREFIX-03" fd[11]="$FILEDEV_PREFIX-11" fd[12]="$FILEDEV_PREFIX-12" fd[13]="$FILEDEV_PREFIX-13" # Base pool configurations typeset poolconfs=("mirror ${fd[01]} ${fd[02]}" "mirror ${fd[01]} ${fd[02]} ${fd[03]}" "mirror ${fd[01]} ${fd[02]} mirror ${fd[11]} ${fd[12]}" "mirror ${fd[01]} ${fd[02]} ${fd[03]} mirror ${fd[11]} ${fd[12]}" "mirror ${fd[01]} ${fd[02]} mirror ${fd[11]} ${fd[12]} ${fd[13]}" "mirror ${fd[01]} ${fd[02]} ${fd[03]} mirror ${fd[11]} ${fd[12]} ${fd[13]}" ) # "good" device specifications typeset gooddevs=("${fd[01]}" "${fd[02]}" "${fd[02]} ${fd[11]}" "${fd[12]}" "${fd[02]}" "${fd[03]} ${fd[12]}" ) # "bad" device specifications typeset baddevs=("${fd[01]} ${fd[02]}" "${fd[02]} ${fd[03]}" "${fd[02]} baddev" "baddev ${fd[11]}" "${fd[11]} ${fd[12]} ${fd[13]}" "${fd[01]} ${fd[02]} ${fd[13]}" ) typeset -i i=0; while [ $i -lt "${#poolconfs[@]}" ] do typeset conf=${poolconfs[$i]} setup_mirror $conf log_mustnot zpool split $TESTPOOL $TESTPOOL2 ${baddevs[$i]} log_must zpool split -R $altroot $TESTPOOL $TESTPOOL2 ${gooddevs[$i]} # Verify "good" devices ended up in the new pool log_must poolexists $TESTPOOL2 for filedev in ${gooddevs[$i]}; do log_must check_vdev_state $TESTPOOL2 $filedev "ONLINE" done cleanup ((i = i + 1)) done log_pass "'zpool split' can use the provided devices to split the pool" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/zpool_split_resilv0000644000000000000000000000007413607166133032106 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.335774493 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_resilver.ksh0000755016037001603700000000473113607166133033226 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018, Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_split/zpool_split.cfg # # DESCRIPTION: # 'zpool split' should fail if resilver in progress for a disk # # STRATEGY: # The first scenario: # 1. Create a mirror pool # 2. Offline the first VDEV # 3. Put some data # 4. Online the first VDEV # 5. Verify 'zpool split' must fail # # The second scenario: # 1. Create a mirror pool # 2. Offline the second VDEV # 3. Put some data # 4. Online the second VDEV # 5. Verify 'zpool split' must fail # verify_runnable "both" function cleanup { log_must set_tunable32 zfs_scan_suspend_progress 0 destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 rm -f $DEVICE1 $DEVICE2 } function setup_mirror { truncate -s $DEVSIZE $DEVICE1 truncate -s $DEVSIZE $DEVICE2 log_must zpool create -f $TESTPOOL mirror $DEVICE1 $DEVICE2 } function zpool_split #disk_to_be_offline/online { typeset disk=$1 setup_mirror # offline a disk, so it will not be fully sync before split log_must zpool offline $TESTPOOL $disk # Create 2G of additional data mntpnt=$(get_prop mountpoint $TESTPOOL) log_must file_write -b 2097152 -c 1024 -o create -d 0 -f $mntpnt/biggerfile log_must sync # temporarily prevent resilvering progress, so it will not finish too early log_must set_tunable32 zfs_scan_suspend_progress 1 log_must zpool online $TESTPOOL $disk typeset i=0 while ! is_pool_resilvering $TESTPOOL; do if (( i > 10 )); then log_fail "resilvering is not started" fi ((i += 1)) sleep 1 done log_mustnot zpool split $TESTPOOL $TESTPOOL2 log_must set_tunable32 zfs_scan_suspend_progress 0 } log_assert "Verify 'zpool split' will fail if resilver in progress for a disk" log_onexit cleanup DEVSIZE='3g' DEVICE1="$TEST_BASE_DIR/device-1" DEVICE2="$TEST_BASE_DIR/device-2" log_note "Verify ZFS prevents main pool corruption during 'split'" zpool_split $DEVICE1 cleanup log_note "Verify ZFS prevents new pool corruption during 'split'" zpool_split $DEVICE2 log_pass "'zpool split' failed as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/zpool_split.cfg0000644000000000000000000000007413607166133031260 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.316773883 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split.cfg0000644016037001603700000000110613607166133031253 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # export DISKSARRAY=$DISKS export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') set_device_dir zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030246 xustar000000000000000030 mtime=1579730437.579401693 30 atime=1579730456.287002339 30 ctime=1579730480.342774719 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/Makefile.in0000664016037001603700000006333113612143005030260 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am subdir = tests/zfs-tests/tests/functional/cli_root/zpool_split ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_split ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zpool_split_cliargs.ksh \ zpool_split_devices.ksh \ zpool_split_encryption.ksh \ zpool_split_props.ksh \ zpool_split_vdevs.ksh \ zpool_split_resilver.ksh \ zpool_split_wholedisk.ksh dist_pkgdata_DATA = \ zpool_split.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_split/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_split/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/PaxHeaders.151519/zpool_split_props.0000644000000000000000000000007413607166147032030 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.331774365 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_split/zpool_split_props.ksh0000755016037001603700000000520613607166147032541 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_split/zpool_split.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib # # DESCRIPTION: # 'zpool split' can set new property values on the new pool # # STRATEGY: # 1. Create a mirror pool # 2. Verify 'zpool split' can set property values on the new pool, but only if # they are valid. # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 rm -f $DEVICE1 $DEVICE2 log_must mmp_clear_hostid } function setup_mirror { truncate -s $SPA_MINDEVSIZE $DEVICE1 truncate -s $SPA_MINDEVSIZE $DEVICE2 log_must zpool create -f $TESTPOOL mirror $DEVICE1 $DEVICE2 } log_assert "'zpool split' can set new property values on the new pool" log_onexit cleanup if [ -e $HOSTID_FILE ]; then log_unsupported "System has existing $HOSTID_FILE file" fi typeset good_props=('comment=text' 'ashift=12' 'multihost=on' 'listsnapshots=on' 'autoexpand=on' 'autoreplace=on' 'dedupditto=1234' 'delegation=off' 'failmode=continue') typeset bad_props=("bootfs=$TESTPOOL2/bootfs" 'version=28' 'ashift=4' 'allocated=1234' 'capacity=5678' 'dedupditto=42' 'multihost=none' 'feature@async_destroy=disabled' 'feature@xxx_fake_xxx=enabled' 'propname=propval' 'readonly=on') DEVICE1="$TEST_BASE_DIR/device-1" DEVICE2="$TEST_BASE_DIR/device-2" # Needed to set multihost=on log_must mmp_set_hostid $HOSTID1 # Verify we can set a combination of valid property values on the new pool for prop in "${good_props[@]}" do propname="$(awk -F= '{print $1}' <<< $prop)" propval="$(awk -F= '{print $2}' <<< $prop)" setup_mirror log_must zpool split -o $prop $TESTPOOL $TESTPOOL2 log_must zpool import -N -d $TEST_BASE_DIR $TESTPOOL2 log_must test "$(get_pool_prop $propname $TESTPOOL2)" == "$propval" destroy_pool $TESTPOOL destroy_pool $TESTPOOL2 rm -f $DEVICE1 $DEVICE2 done # Verify we cannot set invalid property values setup_mirror zfs create $TESTPOOL/bootfs for prop in "${bad_props[@]}" do log_mustnot zpool split -o $prop $TESTPOOL $TESTPOOL2 log_mustnot zpool import -N -d $TEST_BASE_DIR $TESTPOOL2 done log_pass "'zpool split' can set new property values on the new pool" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_get0000644000000000000000000000013213612143055025214 xustar000000000000000030 mtime=1579730477.129671552 30 atime=1579730489.089055548 30 ctime=1579730477.129671552 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/0000775016037001603700000000000013612143055025275 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_002_pos.ksh0000644000000000000000000000007413607166147030723 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.106670814 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_002_pos.ksh0000755016037001603700000000572013607166147030727 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib # # DESCRIPTION: # Setting the valid option and properties 'zfs get' return correct value. # It should be successful. # # STRATEGY: # 1. Create pool, filesystem, dataset, volume and snapshot. # 2. Getting the options and properties random combination. # 3. Using the combination as the parameters of 'zfs get' to check the # command line return value. # verify_runnable "both" typeset options=(" " p r H) typeset zfs_props=("type" used available creation volsize referenced \ compressratio mounted origin recordsize quota reservation mountpoint \ sharenfs checksum compression atime devices exec readonly setuid zoned \ snapdir acltype aclinherit canmount primarycache secondarycache \ usedbychildren usedbydataset usedbyrefreservation usedbysnapshots version) typeset userquota_props=(userquota@root groupquota@root userused@root \ groupused@root) typeset props=("${zfs_props[@]}" "${userquota_props[@]}") typeset dataset=($TESTPOOL/$TESTCTR $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTVOL@$TESTSNAP) log_assert "Setting the valid options and properties 'zfs get' return " \ "correct value. It should be successful." log_onexit cleanup # Create volume and filesystem's snapshot create_snapshot $TESTPOOL/$TESTFS $TESTSNAP create_snapshot $TESTPOOL/$TESTVOL $TESTSNAP # # Begin to test 'get [-prH] # ' # 'get [-prH] <-a|-d> " # typeset -i opt_numb=8 typeset -i prop_numb=20 for dst in ${dataset[@]}; do # option can be empty, so "" is necessary. for opt in "" $(gen_option_str "${options[*]}" "-" "" $opt_numb); do for prop in $(gen_option_str "${props[*]}" "" "," $prop_numb) do zfs get $opt $prop $dst > /dev/null 2>&1 ret=$? if [[ $ret != 0 ]]; then log_fail "zfs get $opt $prop $dst (Code: $ret)" fi done done done log_pass "Setting the valid options to dataset, 'zfs get' pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_008_pos.ksh0000644000000000000000000000007413607166147030731 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.120671262 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_008_pos.ksh0000755016037001603700000000704713607166147030741 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_list_d.kshlib # # DESCRIPTION: # Verify "-d " can work with other options # # STRATEGY: # 1. Create pool, filesystem, dataset, volume, snapshot, and bookmark. # 2. Getting an -d option, other options and properties random combination. # 3. Using the combination as the parameters of 'zfs get' to check the # command line return value. # verify_runnable "both" set -A options " " "-r" "-H" "-p" "-rHp" "-o name" \ "-s local,default,temporary,inherited,none" \ "-o name -s local,default,temporary,inherited,none" \ "-rHp -o name -s local,default,temporary,inherited,none" set -A props type used available creation volsize referenced compressratio \ mounted origin recordsize quota reservation mountpoint sharenfs \ checksum compression atime devices exec readonly setuid zoned snapdir \ acltype aclinherit canmount primarycache secondarycache \ usedbychildren usedbydataset usedbyrefreservation usedbysnapshots \ userquota@root groupquota@root userused@root groupused@root zfs upgrade -v > /dev/null 2>&1 if [[ $? -eq 0 ]]; then set -A all_props ${all_props[*]} version fi set -A dataset $TESTPOOL/$TESTCTR $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTVOL@$TESTSNAP set -A bookmark_props creation set -A bookmark $TESTPOOL/$TESTFS#$TESTBKMARK $TESTPOOL/$TESTVOL#$TESTBKMARK log_assert "Verify '-d ' can work with other options" log_onexit cleanup # Create volume and filesystem's snapshot create_snapshot $TESTPOOL/$TESTFS $TESTSNAP create_snapshot $TESTPOOL/$TESTVOL $TESTSNAP # Create filesystem and volume's bookmark create_bookmark $TESTPOOL/$TESTFS $TESTSNAP $TESTBKMARK create_bookmark $TESTPOOL/$TESTVOL $TESTSNAP $TESTBKMARK typeset -i opt_numb=16 typeset -i prop_numb=16 typeset -i i=0 typeset -i item=0 typeset -i depth_item=0 for dst in ${dataset[@]}; do (( i=0 )) while (( i < opt_numb )); do (( item = $RANDOM % ${#options[@]} )) (( depth_item = $RANDOM % ${#depth_options[@]} )) for prop in $(gen_option_str "${props[*]}" "" "," $prop_numb) do log_must eval "zfs get -${depth_options[depth_item]} ${options[item]} $prop $dst > /dev/null 2>&1" done (( i += 1 )) done done for dst in ${bookmark[@]}; do (( i=0 )) while (( i < opt_numb )); do (( item = $RANDOM % ${#options[@]} )) (( depth_item = $RANDOM % ${#depth_options[@]} )) log_must eval "zfs get -${depth_options[depth_item]} ${options[item]} $bookmark_props $dst > /dev/null 2>&1" (( i += 1 )) done done log_pass "Verify '-d ' can work with other options" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_006_neg.ksh0000644000000000000000000000007413607166133030672 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.115671102 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_006_neg.ksh0000755016037001603700000000406413607166133030676 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib # # DESCRIPTION: # Verify 'zfs get all' can deal with invalid scenarios # # STRATEGY: # 1. Define invalid scenarios for 'zfs get all' # 2. Run zfs get with those invalid scenarios # 3. Verify that zfs get fails with invalid scenarios # verify_runnable "both" log_assert "Verify 'zfs get all' fails with invalid combination scenarios." set -f # Force ksh ignore '?' and '*' set -A bad_combine "ALL" "\-R all" "-P all" "-h all" "-rph all" "-RpH all" "-PrH all" \ "-o all" "-s all" "-? all" "-* all" "-?* all" "all -r" "all -p" \ "all -H" "all -rp" "all -rH" "all -ph" "all -rpH" "all -r $TESTPOOL" \ "all -H $TESTPOOL" "all -p $TESTPOOL" "all -r -p -H $TESTPOOL" \ "all -rph $TESTPOOL" "all,available,reservation $TESTPOOL" \ "all $TESTPOOL?" "all $TESTPOOL*" "all nonexistpool" export POSIXLY_CORRECT=1 typeset -i i=0 while (( i < ${#bad_combine[*]} )) do log_mustnot eval "zfs get ${bad_combine[i]} >/dev/null" (( i = i + 1 )) done unset POSIXLY_CORRECT log_pass "'zfs get all' fails with invalid combinations scenarios as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_004_pos.ksh0000644000000000000000000000007413612141513030707 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.111670974 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_004_pos.ksh0000755016037001603700000001362013612141513030711 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify 'zfs get all' can get all properties for all datasets in the system # # STRATEGY: # 1. Create datasets for testing # 2. Issue 'zfs get all' command # 3. Verify the command gets all available properties of all datasets # verify_runnable "both" function cleanup { [[ -e $propfile ]] && rm -f $propfile datasetexists $clone && \ log_must zfs destroy $clone for snap in $fssnap $volsnap ; do snapexists $snap && \ log_must zfs destroy $snap done if [[ -n $globalzone ]] ; then for pool in $TESTPOOL1 $TESTPOOL2 $TESTPOOL3; do poolexists $pool && \ log_must zpool destroy -f $pool done for file in `ls $TESTDIR1/poolfile*`; do rm -f $file done else for fs in $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS2 $TESTPOOL/$TESTFS3; do datasetexists $fs && \ log_must zfs destroy -rf $fs done fi } log_assert "Verify the functions of 'zfs get all' work." log_onexit cleanup typeset globalzone="" if is_global_zone ; then globalzone="true" fi set -A opts "" "-r" "-H" "-p" "-rHp" "-o name" \ "-s local,default,temporary,inherited,none" \ "-o name -s local,default,temporary,inherited,none" \ "-rHp -o name -s local,default,temporary,inherited,none" set -A usrprops "a:b=c" "d_1:1_e=0f" "123:456=789" fs=$TESTPOOL/$TESTFS fssnap=$fs@$TESTSNAP clone=$TESTPOOL/$TESTCLONE volsnap=$TESTPOOL/$TESTVOL@$TESTSNAP #set user defined properties for $TESTPOOL for usrprop in ${usrprops[@]}; do log_must zfs set $usrprop $TESTPOOL done # create snapshot and clone in $TESTPOOL log_must zfs snapshot $fssnap log_must zfs clone $fssnap $clone log_must zfs snapshot $volsnap # collect datasets which can be set user defined properties usrpropds="$clone $fs" # collect all datasets which we are creating allds="$fs $clone $fssnap $volsnap" #create pool and datasets to guarantee testing under multiple pools and datasets. file=$TESTDIR1/poolfile typeset FILESIZE=$MINVDEVSIZE (( DFILESIZE = $FILESIZE * 2 )) typeset -i VOLSIZE=10485760 availspace=$(get_prop available $TESTPOOL) typeset -i i=0 # make sure 'availspace' is larger then twice of FILESIZE to create a new pool. # If any, we only totally create 3 pools for multiple datasets testing to limit # testing time while (( availspace > DFILESIZE )) && (( i < 3 )) ; do (( i += 1 )) if [[ -n $globalzone ]] ; then log_must mkfile $FILESIZE ${file}$i eval pool=\$TESTPOOL$i log_must zpool create $pool ${file}$i else eval pool=$TESTPOOL/\$TESTFS$i log_must zfs create $pool fi #set user defined properties for testing for usrprop in ${usrprops[@]}; do log_must zfs set $usrprop $pool done #create datasets in pool log_must zfs create $pool/$TESTFS log_must zfs snapshot $pool/$TESTFS@$TESTSNAP log_must zfs clone $pool/$TESTFS@$TESTSNAP $pool/$TESTCLONE if [[ -n $globalzone ]] ; then log_must zfs create -V $VOLSIZE $pool/$TESTVOL else log_must zfs create $pool/$TESTVOL fi ds=`zfs list -H -r -o name -t filesystem,volume $pool` usrpropds="$usrpropds $pool/$TESTFS $pool/$TESTCLONE $pool/$TESTVOL" allds="$allds $pool/$TESTFS $pool/$TESTCLONE $pool/$TESTVOL \ $pool/$TESTFS@$TESTSNAP" availspace=$(get_prop available $TESTPOOL) done #the expected number of property for each type of dataset in this testing typeset -i fspropnum=27 typeset -i snappropnum=8 typeset -i volpropnum=15 propfile=$TEST_BASE_DIR/allpropfile.$$ typeset -i i=0 typeset -i propnum=0 typeset -i failflag=0 while (( i < ${#opts[*]} )); do [[ -e $propfile ]] && rm -f $propfile log_must eval "zfs get ${opts[i]} all >$propfile" for ds in $allds; do grep $ds $propfile >/dev/null 2>&1 (( $? != 0 )) && \ log_fail "There is no property for" \ "dataset $ds in 'get all' output." propnum=`cat $propfile | awk '{print $1}' | \ grep "${ds}$" | wc -l` ds_type=`zfs get -H -o value type $ds` case $ds_type in filesystem ) (( propnum < fspropnum )) && \ (( failflag += 1 )) ;; snapshot ) (( propnum < snappropnum )) && \ (( failflag += 1 )) ;; volume ) (( propnum < volpropnum )) && \ (( failflag += 1 )) ;; esac (( failflag != 0 )) && \ log_fail " 'zfs get all' fails to get out " \ "all properties for dataset $ds." (( propnum = 0 )) (( failflag = 0 )) done (( i += 1 )) done log_note "'zfs get' can get particular property for all datasets with that property." function do_particular_prop_test # { typeset props="$1" typeset ds="$2" for prop in ${commprops[*]}; do ds=`zfs get -H -o name $prop` [[ "$ds" != "$allds" ]] && \ log_fail "The result datasets are $ds, but all suitable" \ "datasets are $allds for the property $prop" done } # Here, we do a testing for user defined properties and the most common properties # for all datasets. commprop="type creation used referenced compressratio" usrprop="a:b d_1:1_e 123:456" do_particular_prop_test "$commprop" "$allds" do_particular_prop_test "$usrprop" "$usrpropds" log_pass "'zfs get all' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_009_pos.ksh0000644000000000000000000000007413612141520030712 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.122671326 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_009_pos.ksh0000755016037001603700000000715713612141520030724 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_list_d.kshlib # # DESCRIPTION: # 'zfs get -d ' should get expected output. # # STRATEGY: # 1. Create a multiple depth filesystem. # 2. 'zfs get -d ' to get the output. # 3. 'zfs get -r|egrep' to get the expected output. # 4. Compare the two outputs, they should be same. # verify_runnable "both" if is_kmemleak; then log_unsupported "Test case runs slowly when kmemleak is enabled" fi log_assert "'zfs get -d ' should get expected output." log_onexit depth_fs_cleanup set -A all_props type used available creation volsize referenced \ compressratio mounted origin recordsize quota reservation mountpoint \ sharenfs checksum compression atime devices exec readonly setuid \ zoned snapdir acltype aclinherit canmount primarycache secondarycache \ usedbychildren usedbydataset usedbyrefreservation usedbysnapshots \ userquota@root groupquota@root userused@root groupused@root zfs upgrade -v > /dev/null 2>&1 if [[ $? -eq 0 ]]; then set -A all_props ${all_props[*]} version fi depth_fs_setup mntpnt=$(get_prop mountpoint $DEPTH_FS) DEPTH_OUTPUT="$mntpnt/depth_output" EXPECT_OUTPUT="$mntpnt/expect_output" typeset -i prop_numb=16 typeset -i old_val=0 typeset -i j=0 typeset eg_opt="$DEPTH_FS"$ for dp in ${depth_array[@]}; do (( j=old_val+1 )) while (( j<=dp && j<=MAX_DEPTH )); do eg_opt="$eg_opt""|depth""$j"$ (( j+=1 )) done for prop in $(gen_option_str "${all_props[*]}" "" "," $prop_numb); do log_must eval "zfs get -H -d $dp -o name $prop $DEPTH_FS > $DEPTH_OUTPUT" log_must eval "zfs get -rH -o name $prop $DEPTH_FS | egrep -e '$eg_opt' > $EXPECT_OUTPUT" log_must diff $DEPTH_OUTPUT $EXPECT_OUTPUT done (( old_val=dp )) done # Ensure 'zfs get -t snapshot ' works as though -d 1 was specified log_must eval "zfs get -H -t snapshot -o name creation $DEPTH_FS > $DEPTH_OUTPUT" log_must eval "zfs get -H -t snapshot -d 1 -o name creation $DEPTH_FS > $EXPECT_OUTPUT" log_must diff $DEPTH_OUTPUT $EXPECT_OUTPUT # Ensure 'zfs get -t snap' works as a shorthand for 'zfs get -t snapshot' log_must eval "zfs get -H -t snap -d 1 -o name creation $DEPTH_FS > $DEPTH_OUTPUT" log_must eval "zfs get -H -t snapshot -d 1 -o name creation $DEPTH_FS > $EXPECT_OUTPUT" log_must diff $DEPTH_OUTPUT $EXPECT_OUTPUT # Ensure 'zfs get -t bookmark ' works as though -d 1 was specified log_must eval "zfs get -H -t bookmark -o name creation $DEPTH_FS > $DEPTH_OUTPUT" log_must eval "zfs get -H -t bookmark -d 1 -o name creation $DEPTH_FS > $EXPECT_OUTPUT" log_must diff $DEPTH_OUTPUT $EXPECT_OUTPUT log_pass "'zfs get -d ' should get expected output." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133027340 xustar000000000000000030 atime=1579730435.132323123 30 ctime=1579730477.127671486 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/Makefile.am0000644016037001603700000000065613607166133027344 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_get dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_get_001_pos.ksh \ zfs_get_002_pos.ksh \ zfs_get_003_pos.ksh \ zfs_get_004_pos.ksh \ zfs_get_005_neg.ksh \ zfs_get_006_neg.ksh \ zfs_get_007_neg.ksh \ zfs_get_008_pos.ksh \ zfs_get_009_pos.ksh \ zfs_get_010_neg.ksh dist_pkgdata_DATA = \ zfs_get_common.kshlib \ zfs_get_list_d.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027153 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.099670587 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/setup.ksh0000755016037001603700000000176013607166133027157 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027442 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.101670651 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/cleanup.ksh0000755016037001603700000000171013607166133027441 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_common.kshlib0000644000000000000000000000007413607166133031513 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.095670459 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib0000644016037001603700000000547513607166133031523 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # According to $elements, $prefix and $separator, the function random produce # the number of $counter combination. # # $1 elements which is used to get the combination. # $2 prefix is appended to the combination # $3 separator between the combination, such as ' ' or ',' # $4 counter is the number of combination which you want to get. # function gen_option_str # $elements $prefix $separator $counter { typeset elements="" typeset prefix=${2} typeset separator=${3} typeset -i counter=${4:-0} typeset -i i=0 typeset comb_str="" for e in $1; do elements[i]="$e" (( i += 1 )) done (( ${#elements[@]} == 0 )) && log_fail "The elements can't be empty." typeset -i item=0 typeset -i j=0 typeset -i numb_item=0 # Loop and get the specified number combination strings. i=0 while (( i < counter )); do j=0 numb_item=0 comb_str="" # Get random number items for each combinations. (( numb_item = ($RANDOM % ${#elements[@]}) + 1 )) while (( j < numb_item )); do # Random select elements from the array (( item = $RANDOM % ${#elements[@]} )) if (( ${#comb_str} == 0 )); then comb_str=${elements[item]} else comb_str=$comb_str$separator${elements[item]} fi (( j += 1 )) done echo "$prefix$comb_str" (( i += 1 )) done } # # Cleanup the volume snapshot, filesystem snapshot, volume bookmark, and # filesystem bookmark that were created for this test case. # function cleanup { datasetexists $TESTPOOL/$TESTVOL@$TESTSNAP && \ destroy_snapshot $TESTPOOL/$TESTVOL@$TESTSNAP datasetexists $TESTPOOL/$TESTFS@$TESTSNAP && \ destroy_snapshot $TESTPOOL/$TESTFS@$TESTSNAP bkmarkexists $TESTPOOL/$TESTVOL#$TESTBKMARK && \ destroy_bookmark $TESTPOOL/$TESTVOL#$TESTBKMARK bkmarkexists $TESTPOOL/$TESTFS#$TESTBKMARK && \ destroy_bookmark $TESTPOOL/$TESTFS#$TESTBKMARK [[ -e $TESTFILE0 ]] && log_must rm $TESTFILE0 } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_list_d.kshlib0000644000000000000000000000007413612141520031466 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.097670523 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_list_d.kshlib0000644016037001603700000000401413612141520031462 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DEPTH_FS=$TESTPOOL/depth_fs MAX_DEPTH=3 DS_COUNT=3 set -A depth_options "d 0" "d 1" "d 2" "d 4" "d 32" set -A depth_array 0 1 2 4 32 # # Setup multiple depths datasets, including fs, volumes, snapshots and bookmarks. # function depth_fs_setup { typeset -i i j k typeset fslist log_must zfs create $DEPTH_FS (( i=1 )) while (( i<=MAX_DEPTH )); do if (( i==1 )); then fslist=$DEPTH_FS else (( k=i-1 )) fslist=$(zfs list -rH -t filesystem -o name $DEPTH_FS|grep depth"$k"$) if (( $? != 0 )); then log_fail "No depth$k filesystem" fi fi for fs in $fslist; do (( j=1 )) while (( j<=DS_COUNT )); do log_must zfs create $fs/fs_"$j"_depth"$i" if is_global_zone ; then log_must zfs create -V 8M $fs/vol_"$j"_depth"$i" fi log_must zfs snapshot $fs@snap_"$j"_depth"$i" log_must zfs bookmark $fs@snap_"$j"_depth"$i" '#bookmark'_"$j"_depth"$i" (( j=j+1 )) done done (( i=i+1 )) done } # # Cleanup multiple depths filesystem. # function depth_fs_cleanup { log_must zfs destroy -rR $DEPTH_FS } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_005_neg.ksh0000644000000000000000000000007413607166147030676 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.113671038 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_005_neg.ksh0000755016037001603700000001072413607166147030702 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib # # DESCRIPTION: # Setting the invalid option and properties, 'zfs get' should failed. # # STRATEGY: # 1. Create pool, filesystem, volume and snapshot. # 2. Getting incorrect combination by invalid parameters # 3. Using the combination as the parameters of 'zfs get' to check the # command line return value. # verify_runnable "both" typeset val_opts=(p r H) typeset v_props=(type used available creation volsize referenced compressratio \ mounted origin recordsize quota reservation mountpoint sharenfs checksum \ compression atime devices exec readonly setuid zoned snapdir acltype \ aclinherit canmount primarycache secondarycache \ usedbychildren usedbydataset usedbyrefreservation usedbysnapshots version) typeset userquota_props=(userquota@root groupquota@root userused@root \ groupused@root) typeset val_props=("${v_props[@]}" "${userquota_props[@]}") set -f # Force shell does not parse '?' and '*' as the wildcard typeset inval_opts=(P R h ? *) typeset inval_props=(Type 0 ? * -on --on readonl time USED RATIO MOUNTED) typeset dataset=($TESTPOOL/$TESTFS $TESTPOOL/$TESTCTR $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTVOL@$TESTSNAP) typeset -i opt_numb=6 typeset -i prop_numb=12 val_opts_str=$(gen_option_str "${val_opts[*]}" "-" "" $opt_numb) val_props_str=$(gen_option_str "${val_props[*]}" "" "," $prop_numb) inval_opts_str=$(gen_option_str "${inval_opts[*]}" "-" "" $opt_numb) inval_props_str=$(gen_option_str "${inval_props[*]}" "" "," $prop_numb) typeset val_bookmark_props=(creation) typeset bookmark=($TESTPOOL/$TESTFS#$TESTBKMARK $TESTPOOL/$TESTVOL#$TESTBKMARK) # # Test different options and properties combination. # # $1 options # $2 properties # function test_options { typeset opts=$1 typeset props=$2 for dst in ${dataset[@]}; do for opt in $opts; do for prop in $props; do zfs get $opt -- $prop $dst > /dev/null 2>&1 ret=$? if [[ $ret == 0 ]]; then log_fail "zfs get $opt -- $prop " \ "$dst unexpectedly succeeded." fi done done done } # # Test different options and properties combination for bookmarks. # # $1 options # $2 properties # function test_options_bookmarks { typeset opts=$1 typeset props=$2 for dst in ${bookmark[@]}; do for opt in $opts; do for prop in $props; do zfs get $opt -- $prop $dst > /dev/null 2>&1 ret=$? if [[ $ret == 0 ]]; then log_fail "zfs get $opt -- $prop " \ "$dst unexpectedly succeeded." fi done done done } log_assert "Setting the invalid option and properties, 'zfs get' should be \ failed." log_onexit cleanup # Create filesystem and volume's snapshot create_snapshot $TESTPOOL/$TESTFS $TESTSNAP create_snapshot $TESTPOOL/$TESTVOL $TESTSNAP # Create filesystem and volume's bookmark create_bookmark $TESTPOOL/$TESTFS $TESTSNAP $TESTBKMARK create_bookmark $TESTPOOL/$TESTVOL $TESTSNAP $TESTBKMARK log_note "Valid options + invalid properties, 'zfs get' should fail." test_options "$val_opts_str" "$inval_props_str" test_options_bookmarks "$val_opts_str" "$inval_props_str" log_note "Invalid options + valid properties, 'zfs get' should fail." test_options "$inval_opts_str" "$val_props_str" test_options_bookmarks "$inval_opts_str" "$val_bookmark_props" log_note "Invalid options + invalid properties, 'zfs get' should fail." test_options "$inval_opts_str" "$inval_props_str" test_options_bookmarks "$inval_opts_str" "$inval_props_str" log_pass "Setting the invalid options to dataset, 'zfs get' pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_001_pos.ksh0000644000000000000000000000007413607166147030722 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.103670717 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_001_pos.ksh0000755016037001603700000001042313607166147030722 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_list_d.kshlib # # DESCRIPTION: # Setting the valid option and properties, 'zfs get' should return the # correct property value. # # STRATEGY: # 1. Create pool, filesystem, volume, snapshot, and bookmark. # 2. Setting valid parameter, 'zfs get' should succeed. # 3. Compare the output property name with the original input property. # verify_runnable "both" typeset options=("" "-p" "-r" "-H") typeset -i i=${#options[*]} typeset -i j=0 while ((j<${#depth_options[*]})); do options[$i]=-"${depth_options[$j]}" ((j+=1)) ((i+=1)) done typeset zfs_props=("type" used available creation volsize referenced \ compressratio mounted origin recordsize quota reservation mountpoint \ sharenfs checksum compression atime devices exec readonly setuid zoned \ snapdir acltype aclinherit canmount primarycache secondarycache \ usedbychildren usedbydataset usedbyrefreservation usedbysnapshots \ version) typeset userquota_props=(userquota@root groupquota@root userused@root \ groupused@root) typeset all_props=("${zfs_props[@]}" "${userquota_props[@]}") typeset dataset=($TESTPOOL/$TESTCTR $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTVOL@$TESTSNAP) typeset bookmark_props=(creation) typeset bookmark=($TESTPOOL/$TESTFS#$TESTBKMARK $TESTPOOL/$TESTVOL#$TESTBKMARK) # # According to dataset and option, checking if 'zfs get' return correct # property information. # # $1 dataset # $2 properties which are expected to output into $TESTDIR/$TESTFILE0 # $3 option # function check_return_value { typeset dst=$1 typeset props=$2 typeset opt=$3 typeset -i found=0 typeset p for p in $props; do found=0 while read line; do typeset item item=$(echo $line | awk '{print $2}' 2>&1) if [[ $item == $p ]]; then ((found += 1)) break fi done < $TESTDIR/$TESTFILE0 if ((found == 0)); then log_fail "'zfs get $opt $props $dst' return " \ "error message.'$p' haven't been found." fi done log_note "SUCCESS: 'zfs get $opt $prop $dst'." } log_assert "Setting the valid options and properties 'zfs get' should return " \ "the correct property value." log_onexit cleanup # Create filesystem and volume's snapshot create_snapshot $TESTPOOL/$TESTFS $TESTSNAP create_snapshot $TESTPOOL/$TESTVOL $TESTSNAP # Create filesystem and volume's bookmark create_bookmark $TESTPOOL/$TESTFS $TESTSNAP $TESTBKMARK create_bookmark $TESTPOOL/$TESTVOL $TESTSNAP $TESTBKMARK typeset -i i=0 while ((i < ${#dataset[@]})); do for opt in "${options[@]}"; do for prop in ${all_props[@]}; do eval "zfs get $opt $prop ${dataset[i]} > \ $TESTDIR/$TESTFILE0" ret=$? if [[ $ret != 0 ]]; then log_fail "zfs get returned: $ret" fi check_return_value ${dataset[i]} "$prop" "$opt" done done ((i += 1)) done i=0 while ((i < ${#bookmark[@]})); do for opt in "${options[@]}"; do for prop in ${bookmark_props[@]}; do eval "zfs get $opt $prop ${bookmark[i]} > \ $TESTDIR/$TESTFILE0" ret=$? if [[ $ret != 0 ]]; then log_fail "zfs get returned: $ret" fi check_return_value ${bookmark[i]} "$prop" "$opt" done done ((i += 1)) done log_pass "Setting the valid options to dataset, it should succeed and return " \ "valid value. 'zfs get' pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_010_neg.ksh0000644000000000000000000000007413607166133030665 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.125671422 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_010_neg.ksh0000755016037001603700000000330713607166133030670 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_list_d.kshlib # # DESCRIPTION: # A negative depth or a non numeric depth should fail in 'zfs get -d ' # # STRATEGY: # 1. Run zfs get -d with negative depth or non numeric depth # 2. Verify that zfs get returns error # verify_runnable "both" log_assert "A negative depth or a non numeric depth should fail in 'zfs get -d '" set -A badargs "a" "AB" "aBc" "2A" "a2b" "aB2" "-1" "-32" "-999" typeset -i i=0 while (( i < ${#badargs[*]} )) do log_mustnot eval "zfs get -d ${badargs[i]} $TESTPOOL/$TESTFS >/dev/null 2>&1" (( i = i + 1 )) done log_pass "A negative depth or a non numeric depth should fail in 'zfs get -d '" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_003_pos.ksh0000644000000000000000000000007413607166133030717 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.108670878 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_003_pos.ksh0000755016037001603700000000355613607166133030730 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs get' should get consistent report with different options. # # STRATEGY: # 1. Create pool and filesystem. # 2. 'zfs mount -o remount,noatime .' # 3. Verify the value of 'zfs get atime' and 'zfs get all | grep atime' # are identical. # verify_runnable "both" function cleanup { log_must zfs mount -o remount,atime $TESTPOOL/$TESTFS } log_assert "'zfs get' should get consistent report with different option." log_onexit cleanup log_must zfs set atime=on $TESTPOOL/$TESTFS log_must zfs mount -o remount,noatime $TESTPOOL/$TESTFS value1=$(zfs get -H atime $TESTPOOL/$TESTFS | awk '{print $3}') value2=$(zfs get -H all $TESTPOOL/$TESTFS | awk '{print $2 " " $3}' | \ grep ^atime | awk '{print $2}') if [[ $value1 != $value2 ]]; then log_fail "value1($value1) != value2($value2)" fi log_pass "'zfs get' get consistent report with different option passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003027327 xustar000000000000000030 mtime=1579730435.170324345 30 atime=1579730454.897957739 30 ctime=1579730477.129671552 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/Makefile.in0000664016037001603700000006174013612143003027343 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_get DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_get ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_get_001_pos.ksh \ zfs_get_002_pos.ksh \ zfs_get_003_pos.ksh \ zfs_get_004_pos.ksh \ zfs_get_005_neg.ksh \ zfs_get_006_neg.ksh \ zfs_get_007_neg.ksh \ zfs_get_008_pos.ksh \ zfs_get_009_pos.ksh \ zfs_get_010_neg.ksh dist_pkgdata_DATA = \ zfs_get_common.kshlib \ zfs_get_list_d.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_get/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_get/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/PaxHeaders.151519/zfs_get_007_neg.ksh0000644000000000000000000000007413607166133030673 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.117671166 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_get/zfs_get_007_neg.ksh0000755016037001603700000000373013607166133030676 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib # # DESCRIPTION: # 'zfs get -o' should fail with invalid column names # # STRATEGY: # 1. Run zfs get -o with invalid column name combinations # 2. Verify that zfs get returns error # verify_runnable "both" log_assert "'zfs get -o' fails with invalid options or column names" set -A badargs "o name,property,value,resource" "o name" \ "-O name,property,value,source" "-oo name" "-o blah" \ "-o name,property,blah,source" "-o name,name,name,name,name" \ "-o name,property,value,," "-o *,*,*,*" "-o ?,?,?,?" \ "-o" "-o ,,,,," "-o -o -o -o" "-o NAME,PROPERTY,VALUE,SOURCE" \ "-o name,properTy,value,source" "-o name, property, value,source" \ "-o name:property:value:source" "-o name,property:value,source" \ "-o name;property;value;source" typeset -i i=0 while (( i < ${#badargs[*]} )) do log_mustnot eval "zfs get \"${badargs[i]}\" >/dev/null 2>&1" (( i = i + 1 )) done log_pass "'zfs get -o' fails with invalid options or column name as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_set0000644000000000000000000000013213612143060025565 xustar000000000000000030 mtime=1579730480.265772245 30 atime=1579730489.089055548 30 ctime=1579730480.265772245 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/0000775016037001603700000000000013612143060025646 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/zpool_set_001_pos.ks0000644000000000000000000000007413607166133031477 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.251771797 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_001_pos.ksh0000755016037001603700000000315613607166133031654 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # Zpool set usage message is displayed when called with no arguments # # STRATEGY: # 1. Run zpool set # 2. Check that exit status is set to 2 # 3. Check usage message contains text "usage" # # log_assert "zpool set usage message is displayed when called with no arguments" zpool set > /dev/null 2>&1 RET=$? if [ $RET != 2 ] then log_fail "\"zpool set\" exit status $RET should be equal to 2." fi OUTPUT=$(zpool set 2>&1 | grep -i usage) if [ $? != 0 ] then log_fail "Usage message for zpool set did not contain the word 'usage'." fi log_pass "zpool set usage message is displayed when called with no arguments" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/zpool_set_003_neg.ks0000644000000000000000000000007413607166133031451 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.256771957 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_003_neg.ksh0000755016037001603700000000357713607166133031635 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # zpool set cannot set a readonly property # # STRATEGY: # 1. Create a pool # 2. Verify that we can't set readonly properties on that pool # verify_runnable "global" function cleanup { zpool destroy $TESTPOOL1 rm $FILEVDEV } set -A props "available" "capacity" "guid" "health" "size" "used" set -A vals "100" "10" "12345" "HEALTHY" "10" "10" log_onexit cleanup log_assert "zpool set cannot set a readonly property" FILEVDEV="$TEST_BASE_DIR/zpool_set_003.$$.dat" log_must mkfile $MINVDEVSIZE $FILEVDEV log_must zpool create $TESTPOOL1 $FILEVDEV typeset -i i=0; while [ $i -lt "${#props[@]}" ] do # try to set each property in the prop list with it's corresponding val log_mustnot eval "zpool set ${props[$i]}=${vals[$i]} $TESTPOOL1 \ > /dev/null 2>&1" i=$(( $i + 1)) done log_pass "zpool set cannot set a readonly property" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/zpool_set_ashift.ksh0000644000000000000000000000007413607166133031744 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.258772021 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_ashift.ksh0000755016037001603700000000404113607166133031743 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # # zpool set can modify 'ashift' property # # STRATEGY: # 1. Create a pool # 2. Verify that we can set 'ashift' only to allowed values on that pool # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL1 rm -f $disk } typeset goodvals=("0" "9" "10" "11" "12" "13" "14" "15" "16") typeset badvals=("off" "on" "1" "8" "17" "1b" "ff" "-") log_onexit cleanup log_assert "zpool set can modify 'ashift' property" disk=$TEST_BASE_DIR/$FILEDISK0 log_must mkfile $SIZE $disk log_must zpool create $TESTPOOL1 $disk for ashift in ${goodvals[@]} do log_must zpool set ashift=$ashift $TESTPOOL1 typeset value=$(get_pool_prop ashift $TESTPOOL1) if [[ "$ashift" != "$value" ]]; then log_fail "'zpool set' did not update ashift value to $ashift "\ "(current = $value)" fi done for ashift in ${badvals[@]} do log_mustnot zpool set ashift=$ashift $TESTPOOL1 typeset value=$(get_pool_prop ashift $TESTPOOL1) if [[ "$ashift" == "$value" ]]; then log_fail "'zpool set' incorrectly set ashift value to $value" fi done log_pass "zpool set can modify 'ashift' property" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133027715 xustar000000000000000030 atime=1579730437.487398738 30 ctime=1579730480.263772181 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/Makefile.am0000644016037001603700000000040013607166133027704 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_set dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_set_001_pos.ksh \ zpool_set_002_neg.ksh \ zpool_set_003_neg.ksh \ zpool_set_ashift.ksh \ zpool_set_features.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.247771667 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/setup.ksh0000755016037001603700000000173713607166133027540 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030017 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.249771732 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/cleanup.ksh0000755016037001603700000000171013607166133030016 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/zpool_set_features.k0000644000000000000000000000007413607166133031751 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.260772085 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_features.ksh0000755016037001603700000000405313607166133032306 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zpool set' should be able to enable features on pools # # STRATEGY: # 1. Create a pool with all features disabled # 2. Verify 'zpool set' is able to enable a single feature # 3. Create a pool with all features enabled # 4. Verify 'zpool set' is *not* able to disable a single feature # 5. Rinse and repeat for known features # verify_runnable "both" function cleanup { destroy_pool $TESTPOOL1 rm -f $FILEVDEV } log_assert "'zpool set' should be able to enable features on pools" log_onexit cleanup typeset -a features=( "async_destroy" "large_blocks" "hole_birth" "large_dnode" "userobj_accounting" "encryption" ) FILEVDEV="$TEST_BASE_DIR/zpool_set_features.$$.dat" # Verify 'zpool set' is able to enable a single feature for feature in "${features[@]}" do propname="feature@$feature" truncate -s $SPA_MINDEVSIZE $FILEVDEV log_must zpool create -d -f $TESTPOOL1 $FILEVDEV log_must zpool set "$propname=enabled" $TESTPOOL1 propval="$(get_pool_prop $propname $TESTPOOL1)" log_must test "$propval" == 'enabled' -o "$propval" == 'active' cleanup done # Verify 'zpool set' is *not* able to disable a single feature for feature in "${features[@]}" do propname="feature@$feature" truncate -s $SPA_MINDEVSIZE $FILEVDEV log_must zpool create -f $TESTPOOL1 $FILEVDEV log_mustnot zpool set "$propname=disabled" $TESTPOOL1 propval="$(get_pool_prop $propname $TESTPOOL1)" log_must test "$propval" == 'enabled' -o "$propval" == 'active' cleanup done log_pass "'zpool set' can enable features on pools" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005027706 xustar000000000000000030 mtime=1579730437.523399893 30 atime=1579730456.258001407 30 ctime=1579730480.265772245 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/Makefile.in0000664016037001603700000005745513612143005027732 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_set DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_set ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_set_001_pos.ksh \ zpool_set_002_neg.ksh \ zpool_set_003_neg.ksh \ zpool_set_ashift.ksh \ zpool_set_features.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_set/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_set/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/PaxHeaders.151519/zpool_set_002_neg.ks0000644000000000000000000000007413607166133031450 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.254771893 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_set/zpool_set_002_neg.ksh0000755016037001603700000000621413607166133031623 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # Malformed zpool set commands are rejected # # STRATEGY: # 1. Create an array of many different malformed zfs set arguments # 2. Run zpool set for each arg checking each will exit with status code 1 # # verify_runnable "global" # note to self - need to make sure there isn't a pool called bootfs # before running this test... function cleanup { zpool destroy bootfs rm $FILEVDEV } log_assert "Malformed zpool set commands are rejected" if poolexists bootfs then log_unsupported "Unable to run test on a machine with a pool called \ bootfs" fi log_onexit cleanup # build up an array of bad arguments. set -A arguments "rubbish " \ "foo@bar= " \ "@@@= +pool " \ "zpool bootfs " \ "bootfs " \ "bootfs +" \ "bootfs=bootfs/123 " \ "bootfs=bootfs@val " \ "Bootfs=bootfs " \ "- " \ "== " \ "set " \ "@@ " \ "12345 " \ "€ã«ã»ã‚“ã” " \ "/ " \ "bootfs=bootfs /" \ "bootfs=a%d%s " # here, we build up a large string. # a word to the ksh-wary, ${#array[@]} gives you the # total number of entries in an array, so array[${#array[@]}] # will index the last entry+1, ksh arrays start at index 0. COUNT=0 while [ $COUNT -le 1025 ] do bigname="${bigname}o" COUNT=$(( $COUNT + 1 )) done # add an argument of maximum length property name arguments[${#arguments[@]}]="$bigname=value" # add an argument of maximum length property value arguments[${#arguments[@]}]="bootfs=$bigname" # Create a pool called bootfs (so-called, so as to trip any clashes between # property name, and pool name) # Also create a filesystem in this pool FILEVDEV="$TEST_BASE_DIR/zpool_set_002.$$.dat" log_must mkfile $MINVDEVSIZE $FILEVDEV log_must zpool create bootfs $FILEVDEV log_must zfs create bootfs/root typeset -i i=0; while [ $i -lt "${#arguments[@]}" ] do log_mustnot eval "zpool set ${arguments[$i]} > /dev/null 2>&1" # now also try with a valid pool in the argument list log_mustnot eval "zpool set ${arguments[$i]}bootfs > /dev/null 2>&1" # now also try with two valid pools in the argument list log_mustnot eval "zpool set ${arguments[$i]}bootfs bootfs > /dev/null" i=$(( $i + 1)) done log_pass "Malformed zpool set commands are rejected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_property0000644000000000000000000000013213612143055026321 xustar000000000000000030 mtime=1579730477.548685005 30 atime=1579730489.089055548 30 ctime=1579730477.548685005 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/0000775016037001603700000000000013612143055026402 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/PaxHeaders.151519/zfs_written_prope0000644000000000000000000000007413612141517032112 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.544684877 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/zfs_written_property_001_pos.ksh0000755016037001603700000001773413612141517034712 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2017 by Delphix. All rights reserved. # # # DESCRIPTION # Verify that "zfs list" gives correct values for written and written@ # properties for the dataset when different operations are on done on it # # # STRATEGY # 1) Create recursive datasets # 2) Take snapshots, write data and verify written/ written@ properties for # following cases # a) Delete data # b) Write Data # c) Clone # d) Delete snapshot # e) Recursive datasets . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/math.shlib function cleanup { for ds in $datasets; do datasetexists $ds && log_must zfs destroy -R $TESTPOOL/$TESTFS1 done } function get_prop_mb { typeset prop=$1 typeset dataset=$2 typeset -l value=$(get_prop $prop $dataset) ((value = value / mb_block)) echo $value } datasets="$TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1/$TESTFS2 \ $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3" log_assert "verify zfs written and written@ property" log_onexit cleanup typeset -l i=1 typeset -l blocks=50 typeset -l expected_written=0 typeset -l expected_writtenat=0 typeset -l written=0 typeset -l total=0 typeset -l snap1_size=0 typeset -l snap2_size=0 typeset -l snap3_size=0 typeset -l mb_block=0 ((mb_block = 1024 * 1024)) log_note "verify written property statistics for dataset" log_must zfs create -p $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3 for i in 1 2 3; do log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS1/testfile.$i bs=1M \ count=$blocks sync_pool written=$(get_prop written $TESTPOOL/$TESTFS1) ((expected_written=blocks * mb_block)) within_percent $written $expected_written 99.5 || \ log_fail "Unexpected written value $written $expected_written" ((total = total + blocks)) ((blocks = blocks + 50)) done log_note "verify written property statistics for snapshots" blocks=0 for i in 1 2 3; do written=$(get_prop written $TESTPOOL/$TESTFS1@snap$i) if [[ $blocks -eq 0 ]]; then # Written value for the first non-clone snapshot is # expected to be equal to the referenced value. expected_written=$( \ get_prop referenced $TESTPOOL/$TESTFS1@snap$i) else ((expected_written = blocks * mb_block)) fi within_percent $written $expected_written 99.5 || \ log_fail "Unexpected written value $written $expected_written $i" ((blocks = blocks + 50)) done snap1_size=$total ((snap2_size = total-50)) ((snap3_size = total-100)) log_note "verify written@ for the same dataset" blocks=50 for i in 1 2 3; do writtenat=$(get_prop written@snap$i $TESTPOOL/$TESTFS1) ((expected_writtenat = total * mb_block)) within_percent $writtenat $expected_writtenat 99.5 || \ log_fail "Unexpected written@ value" ((total = total - blocks)) ((blocks = blocks + 50)) done log_note "delete data" before_written=$(get_prop written $TESTPOOL/$TESTFS1) log_must rm /$TESTPOOL/$TESTFS1/testfile.3 snap3_size=0 sync_pool written=$(get_prop written $TESTPOOL/$TESTFS1) writtenat3=$(get_prop written@snap3 $TESTPOOL/$TESTFS1) [[ $written -eq $writtenat3 ]] || \ log_fail "Written and written@ don't match $written $writtenat3" within_percent $written $before_written 0.1 && \ log_fail "Unexpected written value after delete $written $before_written" writtenat=$(get_prop written@snap1 $TESTPOOL/$TESTFS1) ((snap1_size = snap1_size - 150)) ((expected_writtenat = snap1_size * mb_block)) within_percent $writtenat $expected_writtenat 99.5 || \ log_fail "Unexpected written value after delete $writtenat $expected_writtenat" writtenat=$(get_prop written@snap2 $TESTPOOL/$TESTFS1) ((snap2_size = snap2_size - 150)) ((expected_writtenat = snap2_size * mb_block)) within_percent $writtenat $expected_writtenat 99.5 || \ log_fail "Unexpected written value after delete" log_note "write data" blocks=20 log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS1/testfile.3 bs=1M \ count=$blocks sync_pool written=$(get_prop written $TESTPOOL/$TESTFS1) writtenat1=$(get_prop written@snap1 $TESTPOOL/$TESTFS1) writtenat2=$(get_prop written@snap2 $TESTPOOL/$TESTFS1) writtenat3=$(get_prop written@snap3 $TESTPOOL/$TESTFS1) ((snap3_size = snap3_size + blocks)) ((expected_writtenat = snap3_size * mb_block)) [[ $written -eq $writtenat3 ]] || \ log_fail "Unexpected_written value" within_percent $writtenat3 $expected_writtenat 99.5 || \ log_fail "Unexpected_written@ value for snap3" ((snap2_size = snap2_size + blocks)) ((expected_writtenat = snap2_size * mb_block)) within_percent $writtenat2 $expected_writtenat 99.5 || \ log_fail "Unexpected_written@ value for snap2" ((snap1_size = snap1_size + blocks)) ((expected_writtenat = snap1_size * mb_block)) within_percent $writtenat1 $expected_writtenat 99.5 || \ log_fail "Unexpected_written@ value for snap1" log_note "write data to a clone" before_clone=$(get_prop written $TESTPOOL/$TESTFS1) log_must zfs clone $TESTPOOL/$TESTFS1@snap1 $TESTPOOL/$TESTFS1/snap1.clone log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS1/snap1.clone/testfile bs=1M \ count=40 after_clone=$(get_prop written $TESTPOOL/$TESTFS1) within_percent $before_clone $after_clone 99.5 || \ log_fail "unexpected written for clone $before_clone $after_clone" log_note "deleted snapshot" typeset -l before_written1=$(get_prop_mb written@snap1 $TESTPOOL/$TESTFS1) typeset -l before_written3=$(get_prop_mb written@snap3 $TESTPOOL/$TESTFS1) typeset -l snap_before_written2=$(get_prop_mb written $TESTPOOL/$TESTFS1@snap2) typeset -l snap_before_written3=$(get_prop_mb written $TESTPOOL/$TESTFS1@snap3) log_must zfs destroy $TESTPOOL/$TESTFS1@snap2 log_mustnot snapexists $TESTPOOL/$TESTFS1@snap2 sync_pool written1=$(get_prop_mb written@snap1 $TESTPOOL/$TESTFS1) written3=$(get_prop_mb written@snap3 $TESTPOOL/$TESTFS1) [[ $before_written1 -eq $written1 && $before_written3 -eq $written3 ]] || \ log_fail "unexpected written values $before_written1 $written1" typeset -l expected_written3 ((expected_written3 = snap_before_written2 + snap_before_written3)) prev_written=$(get_prop_mb written $TESTPOOL/$TESTFS1@snap3) within_percent $prev_written $expected_written3 99.5 || \ log_fail "unexpected written value $prev_written $expected_written3" log_must zfs destroy $TESTPOOL/$TESTFS1@snap3 log_mustnot snapexists $TESTPOOL/$TESTFS1@snap3 written=$(get_prop written $TESTPOOL/$TESTFS1) writtenat1=$(get_prop written@snap1 $TESTPOOL/$TESTFS1) [[ $written -ne $writtenat1 ]] && \ log_fail "Unexpected last snapshot written value" log_note "verify written@ property for recursive datasets" blocks=10 log_must zfs snapshot -r $TESTPOOL/$TESTFS1@now for ds in $datasets; do writtenat=$(get_prop written@now $ds) [[ $writtenat -ne 0 ]] && \ log_fail "Unexpected written@ value" log_must dd if=/dev/urandom of=/$ds/testfile bs=1M count=$blocks sync_pool writtenat=$(get_prop written@now $ds) ((expected_writtenat = blocks * mb_block)) within_percent $writtenat $expected_writtenat 0.1 || \ log_fail "Unexpected written value" ((blocks = blocks + 10)) done log_note "verify written@ output for recursive datasets" blocks=20 for ds in $datasets; do log_must zfs snapshot $ds@current log_must dd if=/dev/urandom of=/$ds/testfile bs=1M \ count=$blocks sync_pool done recursive_output=$(zfs get -p -r written@current $TESTPOOL | \ grep -v $TESTFS1@ | grep -v $TESTFS2@ | grep -v $TESTFS3@ | \ grep -v "VALUE" | grep -v "-") expected="$((20 * mb_block))" for ds in $datasets; do writtenat=$(echo "$recursive_output" | grep -v $ds/) writtenat=$(echo "$writtenat" | grep $ds | awk '{print $3}') within_percent $writtenat $expected 99.5 || \ log_fail "Unexpected written@ value on $ds" done log_pass "zfs written and written@ property fields print correct values" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030445 xustar000000000000000030 atime=1579730435.453333431 30 ctime=1579730477.546684941 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/Makefile.am0000644016037001603700000000025213607166133030441 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_property dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_written_property_001_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030260 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.540684748 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/setup.ksh0000755016037001603700000000203213607166133030255 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030547 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.542684813 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/cleanup.ksh0000755016037001603700000000200313607166133030542 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003030434 xustar000000000000000030 mtime=1579730435.488334554 30 atime=1579730455.109964547 30 ctime=1579730477.548685005 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_property/Makefile.in0000664016037001603700000005734013612143003030451 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_property DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_property ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_written_property_001_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_property/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_property/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_reservation0000644000000000000000000000013213612143055026776 xustar000000000000000030 mtime=1579730477.857694927 30 atime=1579730489.089055548 30 ctime=1579730477.857694927 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/0000775016037001603700000000000013612143055027057 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/PaxHeaders.151519/zfs_reservatio0000644000000000000000000000007413607166133032056 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.851694733 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/zfs_reservation_001_pos.ksh0000755016037001603700000000324113607166133034261 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Exceed the maximum limit for a reservation and ensure it fails. # # STRATEGY: # 1. Create a reservation file system. # 2. Set the reservation to an absurd value. # 3. Verify the return code is an error. # verify_runnable "both" RESERVATION="reserve" function cleanup { if datasetexists $TESTPOOL/$RESERVATION ; then log_must zfs unmount $TESTPOOL/$RESERVATION log_must zfs destroy $TESTPOOL/$RESERVATION fi } log_onexit cleanup log_assert "Verify that a reservation > 2^64 -1 fails." log_must zfs create $TESTPOOL/$RESERVATION log_mustnot zfs set reservation=18446744073709551615 $TESTPOOL/$RESERVATION log_pass "Unable to set a reservation > 2^64 - 1" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133031122 xustar000000000000000030 atime=1579730435.664340204 30 ctime=1579730477.855694863 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/Makefile.am0000644016037001603700000000030713607166133031117 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_reservation dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_reservation_001_pos.ksh \ zfs_reservation_002_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030735 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.846694573 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/setup.ksh0000755016037001603700000000173713607166133030745 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133031224 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.848694637 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/cleanup.ksh0000755016037001603700000000171013607166133031223 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/PaxHeaders.151519/zfs_reservatio0000644000000000000000000000007413607166133032056 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.853694799 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/zfs_reservation_002_pos.ksh0000755016037001603700000000450513607166133034266 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A reservation of 'none' (which is an alias for 0) should be allowed. This # test verifies that is true. # # STRATEGY: # 1. Create a new file system in the test pool. # 2. Set the reservation to 'none'. # 3. Verify the associated reservation is indeed 0. # 4. Repeat with reservation set to 0. # verify_runnable "both" # Use a unique value so earlier test failures will not impact this test. RESERVATION="reserve"-$$ RESERVATION2="reserve2"-$$ function cleanup { typeset FS for FS in $TESTPOOL/$RESERVATION $TESTPOOL/$RESERVATION2 do if datasetexists $FS ; then log_must zfs unmount $FS log_must zfs destroy $FS fi done } log_onexit cleanup log_assert "Ensure a reservation of 0 or 'none' is allowed." log_must zfs create $TESTPOOL/$RESERVATION log_must zfs create $TESTPOOL/$RESERVATION2 log_must zfs set reservation=0 $TESTPOOL/$RESERVATION log_must zfs set reservation=none $TESTPOOL/$RESERVATION2 for FS in $TESTPOOL/$RESERVATION $TESTPOOL/$RESERVATION2 do reserve=`zfs get -pH reservation $FS | awk '{print $3}'` if [[ $reserve -ne 0 ]]; then log_fail "ZFS get -p reservation did not return 0" fi reserve=`zfs get -H reservation $FS | awk '{print $3}'` if [[ $reserve != "none" ]]; then log_fail "ZFS get reservation did not return 'none'" fi done log_pass "Successfully set reservation to 0 and 'none'" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143003031110 xustar000000000000000029 mtime=1579730435.69934133 30 atime=1579730455.230968431 30 ctime=1579730477.857694927 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_reservation/Makefile.in0000664016037001603700000005740613612143003031131 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_reservation DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_reservation ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_reservation_001_pos.ksh \ zfs_reservation_002_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_reservation/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_reservation/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_online0000644000000000000000000000013213612143057026264 xustar000000000000000030 mtime=1579730479.880759883 30 atime=1579730489.090055581 30 ctime=1579730479.880759883 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/0000775016037001603700000000000013612143057026345 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/PaxHeaders.151519/zpool_online_002_0000644000000000000000000000007413607166133031524 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.876759755 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/zpool_online_002_neg.ksh0000755016037001603700000000432413607166133033005 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool online' command with bad options fails. # # STRATEGY: # 1. Create an array of badly formed 'zpool online' options. # 2. Execute each element of the array. # 3. Verify an error code is returned. # verify_runnable "global" DISKLIST=$(get_disklist $TESTPOOL) set -A args "" "-?" "-e fakepool" "-v fakepool" "-ev fakepool" "-ve fakepool" \ "-t $TESTPOOL" "-t $TESTPOOL/$TESTFS" "-t $TESTPOOL/$TESTFS $DISKLIST" \ "-t $TESTPOOL/$TESTCTR" "-t $TESTPOOL/$TESTCTR/$TESTFS1" \ "-t $TESTPOOL/$TESTCTR $DISKLIST" "-t $TESTPOOL/$TESTVOL" \ "-t $TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "-t $TESTPOOL/$TESTVOL $DISKLIST" \ "-t $DISKLIST" \ "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTFS $DISKLIST" \ "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTPOOL/$TESTCTR $DISKLIST" "$TESTPOOL/$TESTVOL" \ "$TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" "$TESTPOOL/$TESTVOL $DISKLIST" \ "$DISKLIST" log_assert "Executing 'zpool online' with bad options fails" if [[ -z $DISKLIST ]]; then log_fail "DISKLIST is empty." fi typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool online ${args[$i]} (( i = i + 1 )) done log_pass "'zpool online' command with bad options failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/PaxHeaders.151519/zpool_online_001_0000644000000000000000000000007413607166133031523 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.874759691 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/zpool_online_001_pos.ksh0000755016037001603700000000575413607166133033044 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool online' with valid parameters succeeds. # # STRATEGY: # 1. Create an array of correctly formed 'zpool online' options # 2. Execute each element of the array. # 3. Verify use of each option is successful. # verify_runnable "global" DISKLIST=$(get_disklist $TESTPOOL) set -A args "" function cleanup { # # Ensure we don't leave disks in temporary online state (-t) # for disk in $DISKLIST; do log_must zpool online $TESTPOOL $disk check_state $TESTPOOL $disk "online" if [[ $? != 0 ]]; then log_fail "Unable to online $disk" fi done } log_assert "Executing 'zpool online' with correct options succeeds" log_onexit cleanup if [[ -z $DISKLIST ]]; then log_fail "DISKLIST is empty." fi typeset -i i=0 typeset -i j=0 for disk in $DISKLIST; do i=0 while [[ $i -lt ${#args[*]} ]]; do log_must sync_pool $TESTPOOL log_must zpool offline $TESTPOOL $disk check_state $TESTPOOL $disk "offline" if [[ $? != 0 ]]; then log_fail "$disk of $TESTPOOL did not match offline state" fi log_must zpool online ${args[$i]} $TESTPOOL $disk check_state $TESTPOOL $disk "online" if [[ $? != 0 ]]; then log_fail "$disk of $TESTPOOL did not match online state" fi while [[ $j -lt 20 ]]; do is_pool_resilvered $TESTPOOL && break sleep 0.5 (( j = j + 1 )) done is_pool_resilvered $TESTPOOL || \ log_file "Pool didn't resilver after online" (( i = i + 1 )) done done log_note "Issuing repeated 'zpool online' commands succeeds." typeset -i iters=20 typeset -i index=0 for disk in $DISKLIST; do i=0 while [[ $i -lt $iters ]]; do index=`expr $RANDOM % ${#args[*]}` log_must zpool online ${args[$index]} $TESTPOOL $disk check_state $TESTPOOL $disk "online" if [[ $? != 0 ]]; then log_fail "$disk of $TESTPOOL did not match online state" fi (( i = i + 1 )) done done log_pass "'zpool online' with correct options succeeded" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030406 xustar000000000000000030 atime=1579730437.168388494 30 ctime=1579730479.878759819 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/Makefile.am0000644016037001603700000000027613607166133030410 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_online dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_online_001_pos.ksh \ zpool_online_002_neg.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030221 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.870759563 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/setup.ksh0000755016037001603700000000203613607166133030222 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" verify_disk_count "$DISKS" 2 DISK=${DISKS%% *} default_mirror_setup $DISKS zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030510 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.872759627 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/cleanup.ksh0000755016037001603700000000174213607166133030514 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030377 xustar000000000000000030 mtime=1579730437.203389619 30 atime=1579730456.080995724 30 ctime=1579730479.880759883 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_online/Makefile.in0000664016037001603700000005736413612143005030422 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_online DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_online ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_online_001_pos.ksh \ zpool_online_002_neg.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_online/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_online/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_add0000644000000000000000000000013013612143056025525 xustar000000000000000029 mtime=1579730478.74572344 30 atime=1579730489.090055581 29 ctime=1579730478.74572344 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/0000775016037001603700000000000013612143056025610 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_004_pos.ks0000644000000000000000000000007413607166133031374 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.722722701 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_004_pos.ksh0000755016037001603700000000417413607166133031552 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # 'zpool add ...' can successfully add a zfs volume # to the given pool # # STRATEGY: # 1. Create a storage pool and a zfs volume # 2. Add the volume to the pool # 3. Verify the devices are added to the pool successfully # verify_runnable "global" function cleanup { poolexists $TESTPOOL && \ destroy_pool "$TESTPOOL" datasetexists $TESTPOOL1/$TESTVOL && \ log_must zfs destroy -f $TESTPOOL1/$TESTVOL poolexists $TESTPOOL1 && \ destroy_pool "$TESTPOOL1" partition_cleanup } log_assert "'zpool add ...' can add zfs volume to the pool." log_onexit cleanup create_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE0}" log_must poolexists "$TESTPOOL" create_pool "$TESTPOOL1" "${disk}${SLICE_PREFIX}${SLICE1}" log_must poolexists "$TESTPOOL1" log_must zfs create -V $VOLSIZE $TESTPOOL1/$TESTVOL block_device_wait log_must zpool add "$TESTPOOL" $ZVOL_DEVDIR/$TESTPOOL1/$TESTVOL log_must vdevs_in_pool "$TESTPOOL" "$ZVOL_DEVDIR/$TESTPOOL1/$TESTVOL" log_pass "'zpool add ...' adds zfs volume to the pool successfully" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_009_neg.ks0000644000000000000000000000007413607166133031351 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.732723022 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_009_neg.ksh0000755016037001603700000000367013607166133031527 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # 'zpool add' should return fail if vdevs are the same or vdev is # contained in the given pool # # STRATEGY: # 1. Create a storage pool # 2. Add the two same devices to pool A # 3. Add the device in pool A to pool A again # verify_runnable "global" function cleanup { poolexists "$TESTPOOL" && \ destroy_pool "$TESTPOOL" partition_cleanup } log_assert "'zpool add' should fail if vdevs are the same or vdev is " \ "contained in the given pool." log_onexit cleanup create_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE0}" log_must poolexists "$TESTPOOL" log_mustnot zpool add -f "$TESTPOOL" ${disk}${SLICE_PREFIX}${SLICE1} \ ${disk}${SLICE_PREFIX}${SLICE1} log_mustnot zpool add -f "$TESTPOOL" ${disk}${SLICE_PREFIX}${SLICE0} log_pass "'zpool add' get fail as expected if vdevs are the same or vdev is " \ "contained in the given pool." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/add_nested_replacing0000644000000000000000000000007413607166133031657 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.741723312 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/add_nested_replacing_spare.ksh0000755016037001603700000000720513607166133033641 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool add' works with nested replacing/spare vdevs # # STRATEGY: # 1. Create a redundant pool with a spare device # 2. Manually fault a device, wait for the hot-spare and then replace it: # this creates a situation where replacing and spare vdevs are nested. # 3. Verify 'zpool add' is able to add new devices to the pool. # verify_runnable "global" function cleanup { zed_stop zed_cleanup log_must zinject -c all destroy_pool $TESTPOOL log_must rm -f $DATA_DEVS $SPARE_DEVS } log_assert "'zpool add' works with nested replacing/spare vdevs" log_onexit cleanup FAULT_DEV="$TEST_BASE_DIR/fault-dev" SAFE_DEV1="$TEST_BASE_DIR/safe-dev1" SAFE_DEV2="$TEST_BASE_DIR/safe-dev2" SAFE_DEV3="$TEST_BASE_DIR/safe-dev3" SAFE_DEVS="$SAFE_DEV1 $SAFE_DEV2 $SAFE_DEV3" REPLACE_DEV="$TEST_BASE_DIR/replace-dev" ADD_DEV="$TEST_BASE_DIR/add-dev" DATA_DEVS="$FAULT_DEV $SAFE_DEVS $REPLACE_DEV $ADD_DEV" SPARE_DEV1="$TEST_BASE_DIR/spare-dev1" SPARE_DEV2="$TEST_BASE_DIR/spare-dev2" SPARE_DEVS="$SPARE_DEV1 $SPARE_DEV2" # We need ZED running to work with spares zed_setup zed_start # Clear events from previous runs zed_events_drain for type in "mirror" "raidz1" "raidz2" "raidz3" do # 1. Create a redundant pool with a spare device truncate -s $SPA_MINDEVSIZE $DATA_DEVS $SPARE_DEVS log_must zpool create $TESTPOOL $type $FAULT_DEV $SAFE_DEVS log_must zpool add $TESTPOOL spare $SPARE_DEV1 # 2.1 Fault a device, verify the spare is kicked in log_must zinject -d $FAULT_DEV -e nxio -T all -f 100 $TESTPOOL log_must zpool reopen $TESTPOOL log_must wait_vdev_state $TESTPOOL $FAULT_DEV "UNAVAIL" 60 log_must wait_vdev_state $TESTPOOL $SPARE_DEV1 "ONLINE" 60 log_must wait_hotspare_state $TESTPOOL $SPARE_DEV1 "INUSE" log_must check_state $TESTPOOL "" "DEGRADED" # 2.2 Replace the faulted device: this creates a replacing vdev inside a # spare vdev log_must zpool replace $TESTPOOL $FAULT_DEV $REPLACE_DEV log_must wait_vdev_state $TESTPOOL $REPLACE_DEV "ONLINE" 60 zpool status | awk -v poolname="$TESTPOOL" -v type="$type" 'BEGIN {s=""} $1 ~ poolname {c=4}; (c && c--) { s=s$1":" } END { if (s != poolname":"type"-0:spare-0:replacing-0:") exit 1; }' if [[ $? -ne 0 ]]; then log_fail "Pool does not contain nested replacing/spare vdevs" fi # 3. Verify 'zpool add' is able to add new devices log_must zpool add $TESTPOOL spare $SPARE_DEV2 log_must wait_hotspare_state $TESTPOOL $SPARE_DEV2 "AVAIL" log_must zpool add -f $TESTPOOL $ADD_DEV log_must wait_vdev_state $TESTPOOL $ADD_DEV "ONLINE" 60 # Cleanup log_must zinject -c all destroy_pool $TESTPOOL log_must rm -f $DATA_DEVS $SPARE_DEVS done log_pass "'zpool add' works with nested replacing/spare vdevs" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_003_pos.ks0000644000000000000000000000007413607166147031400 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.720722636 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_003_pos.ksh0000755016037001603700000000426513607166147031557 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # 'zpool add -n ...' can display the configuration without # adding the specified devices to given pool # # STRATEGY: # 1. Create a storage pool # 2. Use -n to add a device to the pool # 3. Verify the device is not added actually # verify_runnable "global" function cleanup { poolexists $TESTPOOL && \ destroy_pool $TESTPOOL partition_cleanup [[ -e $tmpfile ]] && \ log_must rm -f $tmpfile } log_assert "'zpool add -n ...' can display the configuration" \ "without actually adding devices to the pool." log_onexit cleanup tmpfile="$TEST_BASE_DIR/zpool_add_003.tmp$$" create_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE0}" log_must poolexists "$TESTPOOL" zpool add -n "$TESTPOOL" ${disk}${SLICE_PREFIX}${SLICE1} > $tmpfile log_mustnot vdevs_in_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE1}" str="would update '$TESTPOOL' to the following configuration:" cat $tmpfile | grep "$str" >/dev/null 2>&1 (( $? != 0 )) && \ log_fail "'zpool add -n ...' is executed as unexpected" log_pass "'zpool add -n ...'executes successfully." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_006_pos.ks0000644000000000000000000000007313607166133031375 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.72672283 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_006_pos.ksh0000755016037001603700000000427713607166133031560 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # Adding a large number of file based vdevs to a zpool works. # # STRATEGY: # 1. Create a file based pool. # 2. Add 16 file based vdevs to it. # 3. Attempt to add a file based vdev that's too small; verify failure. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && \ destroy_pool $TESTPOOL1 poolexists $TESTPOOL && \ destroy_pool $TESTPOOL [[ -d $TESTDIR ]] && log_must rm -rf $TESTDIR partition_cleanup } log_assert "Adding a large number of file based vdevs to a zpool works." log_onexit cleanup log_must mkdir -p $TESTDIR log_must truncate -s $MINVDEVSIZE $TESTDIR/file.00 create_pool "$TESTPOOL1" "$TESTDIR/file.00" vdevs_list=$(echo $TESTDIR/file.{01..16}) log_must truncate -s $MINVDEVSIZE $vdevs_list log_must zpool add -f "$TESTPOOL1" $vdevs_list log_must vdevs_in_pool "$TESTPOOL1" "$vdevs_list" # Attempt to add a file based vdev that's too small. log_must truncate -s 32m $TESTDIR/broken_file log_mustnot zpool add -f "$TESTPOOL1" ${TESTDIR}/broken_file log_mustnot vdevs_in_pool "$TESTPOOL1" "${TESTDIR}/broken_file" log_pass "Adding a large number of file based vdevs to a zpool works." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_007_neg.ks0000644000000000000000000000007413607166133031347 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.728722894 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_007_neg.ksh0000755016037001603700000000356413607166133031527 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # 'zpool add' should return an error with badly-formed parameters, # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute 'zpool add' # 3. Verify an error is returned. # verify_runnable "global" function cleanup { poolexists "$TESTPOOL" && \ destroy_pool "$TESTPOOL" partition_cleanup } log_assert "'zpool add' should return an error with badly-formed parameters." log_onexit cleanup set -A args "" "-f" "-n" "-?" "-nf" "-fn" "-f -n" "--f" "-blah" \ "-? $TESTPOOL ${disk}${SLICE_PREFIX}${SLICE1}" create_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE0}" log_must poolexists "$TESTPOOL" typeset -i i=0 while (( $i < ${#args[*]} )); do log_mustnot zpool add ${args[i]} ((i = i + 1)) done log_pass "'zpool add' badly formed parameters fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133027652 xustar000000000000000030 atime=1579730436.306360818 30 ctime=1579730478.743723376 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/Makefile.am0000644016037001603700000000100413607166133027642 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_add dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_add_001_pos.ksh \ zpool_add_002_pos.ksh \ zpool_add_003_pos.ksh \ zpool_add_004_pos.ksh \ zpool_add_005_pos.ksh \ zpool_add_006_pos.ksh \ zpool_add_007_neg.ksh \ zpool_add_008_neg.ksh \ zpool_add_009_neg.ksh \ zpool_add_010_pos.ksh \ add-o_ashift.ksh \ add_prop_ashift.ksh \ add_nested_replacing_spare.ksh dist_pkgdata_DATA = \ zpool_add.cfg \ zpool_add.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_001_pos.ks0000644000000000000000000000007413607166133031371 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.715722476 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_001_pos.ksh0000755016037001603700000000754313607166133031552 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # 'zpool add ...' can successfully add the specified # devices to the given pool # # STRATEGY: # 1. Create a storage pool # 2. Add spare devices to the pool # 3. Verify the devices are added to the pool successfully # verify_runnable "global" function cleanup { poolexists $TESTPOOL && \ destroy_pool $TESTPOOL partition_cleanup } log_assert "'zpool add ...' can add devices to the pool." log_onexit cleanup set -A keywords "" "mirror" "raidz" "raidz1" "spare" case $DISK_ARRAY_NUM in 0|1) pooldevs="${disk}${SLICE_PREFIX}${SLICE0} \ ${DEV_DSKDIR}/${disk}${SLICE_PREFIX}${SLICE0} \ \"${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1}\"" mirrordevs="\"${DEV_DSKDIR}/${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1}\"" raidzdevs="\"${DEV_DSKDIR}/${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1}\"" ;; 2|*) pooldevs="${DISK0}${SLICE_PREFIX}${SLICE0} \ \"${DEV_DSKDIR}/${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK1}${SLICE_PREFIX}${SLICE0}\" \ \"${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK0}${SLICE_PREFIX}${SLICE1} \ ${DISK1}${SLICE_PREFIX}${SLICE1}\"\ \"${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK1}${SLICE_PREFIX}${SLICE0} \ ${DISK0}${SLICE_PREFIX}${SLICE1}\ ${DISK1}${SLICE_PREFIX}${SLICE1}\"" mirrordevs="\"${DEV_DSKDIR}/${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK1}${SLICE_PREFIX}${SLICE0}\"" raidzdevs="\"${DEV_DSKDIR}/${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK1}${SLICE_PREFIX}${SLICE0}\"" ;; esac typeset -i i=0 typeset vdev eval set -A poolarray $pooldevs eval set -A mirrorarray $mirrordevs eval set -A raidzarray $raidzdevs while (( $i < ${#keywords[*]} )); do case ${keywords[i]} in ""|spare) for vdev in "${poolarray[@]}"; do create_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE6}" log_must poolexists "$TESTPOOL" log_must zpool add -f "$TESTPOOL" ${keywords[i]} $vdev log_must vdevs_in_pool "$TESTPOOL" "$vdev" destroy_pool "$TESTPOOL" done ;; mirror) for vdev in "${mirrorarray[@]}"; do create_pool "$TESTPOOL" "${keywords[i]}" \ "${disk}${SLICE_PREFIX}${SLICE4}" \ "${disk}${SLICE_PREFIX}${SLICE5}" log_must poolexists "$TESTPOOL" log_must zpool add "$TESTPOOL" ${keywords[i]} $vdev log_must vdevs_in_pool "$TESTPOOL" "$vdev" destroy_pool "$TESTPOOL" done ;; raidz|raidz1) for vdev in "${raidzarray[@]}"; do create_pool "$TESTPOOL" "${keywords[i]}" \ "${disk}${SLICE_PREFIX}${SLICE4}" \ "${disk}${SLICE_PREFIX}${SLICE5}" log_must poolexists "$TESTPOOL" log_must zpool add "$TESTPOOL" ${keywords[i]} $vdev log_must vdevs_in_pool "$TESTPOOL" "$vdev" destroy_pool "$TESTPOOL" done ;; esac (( i = i+1 )) done log_pass "'zpool add ...' executes successfully" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027465 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.711722348 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/setup.ksh0000755016037001603700000000313213607166133027464 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib verify_runnable "global" if ! $(is_physical_device $DISKS) ; then log_unsupported "This directory cannot be run on raw files." fi disk1=${DISKS%% *} if is_mpath_device $disk1; then delete_partitions fi if [[ -n $DISK ]]; then # # Use 'zpool create' to clean up the information in # in the given disk to avoid slice overlapping. # cleanup_devices $DISK partition_disk $SIZE $DISK 7 else for disk in `echo $DISKSARRAY`; do cleanup_devices $disk partition_disk $SIZE $disk 7 done fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027754 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.713722412 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/cleanup.ksh0000755016037001603700000000224513607166133027757 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib DISK=${DISKS%% *} if is_mpath_device $DISK; then delete_partitions fi cleanup_devices $DISKS log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_005_pos.ks0000644000000000000000000000007413607166147031402 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.724722766 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_005_pos.ksh0000755016037001603700000000514113607166147031553 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # 'zpool add' should return fail if # 1. vdev is part of an active pool # 2. vdev is currently mounted # 3. vdev is in /etc/vfstab # 3. vdev is specified as the dedicated dump device # # STRATEGY: # 1. Create case scenarios # 2. For each scenario, try to add the device to the pool # 3. Verify the add operation get failed # verify_runnable "global" function cleanup { poolexists "$TESTPOOL" && \ destroy_pool "$TESTPOOL" poolexists "$TESTPOOL1" && \ destroy_pool "$TESTPOOL1" if [[ -n $saved_dump_dev ]]; then log_must eval "dumpadm -u -d $saved_dump_dev > /dev/null" fi partition_cleanup } log_assert "'zpool add' should fail with inapplicable scenarios." log_onexit cleanup mnttab_dev=$(find_mnttab_dev) vfstab_dev=$(find_vfstab_dev) saved_dump_dev=$(save_dump_dev) dump_dev=${disk}${SLICE_PREFIX}${SLICE3} create_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE0}" log_must poolexists "$TESTPOOL" create_pool "$TESTPOOL1" "${disk}${SLICE_PREFIX}${SLICE1}" log_must poolexists "$TESTPOOL1" unset NOINUSE_CHECK log_mustnot zpool add -f "$TESTPOOL" ${disk}${SLICE_PREFIX}${SLICE1} log_mustnot zpool add -f "$TESTPOOL" $mnttab_dev if is_linux; then log_mustnot zpool add "$TESTPOOL" $vfstab_dev else log_mustnot zpool add -f "$TESTPOOL" $vfstab_dev fi if ! is_linux; then log_must echo "y" | newfs ${DEV_DSKDIR}/$dump_dev > /dev/null 2>&1 log_must dumpadm -u -d ${DEV_DSKDIR}/$dump_dev > /dev/null log_mustnot zpool add -f "$TESTPOOL" $dump_dev fi log_pass "'zpool add' should fail with inapplicable scenarios." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_008_neg.ks0000644000000000000000000000007413607166133031350 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.730722958 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_008_neg.ksh0000755016037001603700000000366413607166133031531 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # 'zpool add' should return an error with nonexistent pools or vdevs # # STRATEGY: # 1. Create an array of parameters which contains nonexistent pools/vdevs # 2. For each parameter in the array, execute 'zpool add' # 3. Verify an error is returned # verify_runnable "global" function cleanup { poolexists "$TESTPOOL" && \ destroy_pool "$TESTPOOL" partition_cleanup } log_assert "'zpool add' should return an error with nonexistent pools and vdevs" log_onexit cleanup set -A args "" "-f nonexistent_pool ${disk}${SLICE_PREFIX}${SLICE1}" \ "-f $TESTPOOL nonexistent_vdev" create_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE0}" log_must poolexists "$TESTPOOL" typeset -i i=0 while (( $i < ${#args[*]} )); do log_mustnot zpool add ${args[i]} ((i = i + 1)) done log_pass "'zpool add' with nonexistent pools and vdevs fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add.cfg0000644000000000000000000000007413607166147030257 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.706722188 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add.cfg0000644016037001603700000000416013607166147030255 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2015 by Delphix. All rights reserved. # export DISK_ARRAY_NUM=0 export DISK_ARRAY_LIMIT=4 export DISKSARRAY="" function set_disks { set -A disk_array $(find_disks $DISKS) if (( ${#disk_array[*]} <= 1 )); then export DISK=${DISKS%% *} else export DISK="" typeset -i i=0 while (( i < ${#disk_array[*]} )); do export DISK${i}="${disk_array[$i]}" DISKSARRAY="$DISKSARRAY ${disk_array[$i]}" (( i = i + 1 )) (( i>$DISK_ARRAY_LIMIT )) && break done export DISK_ARRAY_NUM=$i export DISKSARRAY fi if (( $DISK_ARRAY_NUM == 0 )); then export disk=$DISK else export disk=$DISK0 fi } set_disks export SIZE="$(((MINVDEVSIZE / (1024 * 1024)) * 2))m" if is_linux; then set_device_dir set_slice_prefix export SLICE0=1 export SLICE1=2 export SLICE3=4 export SLICE4=5 export SLICE5=6 export SLICE6=7 else export DEV_DSKDIR="/dev" export SLICE_PREFIX="s" export SLICE0=0 export SLICE1=1 export SLICE3=3 export SLICE4=4 export SLICE5=5 export SLICE6=6 fi export VOLSIZE=$MINVDEVSIZE zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/add_prop_ashift.ksh0000644000000000000000000000007413607166147031460 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.739723247 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/add_prop_ashift.ksh0000755016037001603700000000516413607166147031466 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool add' should use the ashift pool property value as default. # # STRATEGY: # 1. Create a pool with default values. # 2. Verify 'zpool add' uses the ashift pool property value when adding # a new device. # 3. Verify the default ashift value can still be overridden by manually # specifying '-o ashift=' from the command line. # verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL log_must rm -f $disk1 $disk2 } log_assert "'zpool add' uses the ashift pool property value as default." log_onexit cleanup disk1=$TEST_BASE_DIR/$FILEDISK0 disk2=$TEST_BASE_DIR/$FILEDISK1 log_must mkfile $SIZE $disk1 log_must mkfile $SIZE $disk2 typeset ashifts=("9" "10" "11" "12" "13" "14" "15" "16") for ashift in ${ashifts[@]} do log_must zpool create -o ashift=$ashift $TESTPOOL $disk1 log_must zpool add $TESTPOOL $disk2 verify_ashift $disk2 $ashift if [[ $? -ne 0 ]] then log_fail "Device was added without setting ashift value to "\ "$ashift" fi # clean things for the next run log_must zpool destroy $TESTPOOL log_must zpool labelclear $disk1 log_must zpool labelclear $disk2 done for ashift in ${ashifts[@]} do for cmdval in ${ashifts[@]} do log_must zpool create -o ashift=$ashift $TESTPOOL $disk1 log_must zpool add $TESTPOOL -o ashift=$cmdval $disk2 verify_ashift $disk2 $cmdval if [[ $? -ne 0 ]] then log_fail "Device was added without setting ashift " \ "value to $cmdval" fi # clean things for the next run log_must zpool destroy $TESTPOOL log_must zpool labelclear $disk1 log_must zpool labelclear $disk2 done done log_pass "'zpool add' uses the ashift pool property value." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/add-o_ashift.ksh0000644000000000000000000000007413607166133030647 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.737723182 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/add-o_ashift.ksh0000755016037001603700000000465613607166133030662 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool add -o ashift= ...' should work with different ashift # values. # # STRATEGY: # 1. Create a pool with default values. # 2. Verify 'zpool add -o ashift=' works with allowed values (9-16). # 3. Verify 'zpool add -o ashift=' doesn't accept other invalid values. # verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL log_must rm -f $disk1 $disk2 } log_assert "zpool add -o ashift=' works with different ashift values" log_onexit cleanup disk1=$TEST_BASE_DIR/$FILEDISK0 disk2=$TEST_BASE_DIR/$FILEDISK1 log_must mkfile $SIZE $disk1 log_must mkfile $SIZE $disk2 typeset ashifts=("9" "10" "11" "12" "13" "14" "15" "16") for ashift in ${ashifts[@]} do log_must zpool create $TESTPOOL $disk1 log_must zpool add -o ashift=$ashift $TESTPOOL $disk2 verify_ashift $disk2 $ashift if [[ $? -ne 0 ]] then log_fail "Device was added without setting ashift value to "\ "$ashift" fi # clean things for the next run log_must zpool destroy $TESTPOOL log_must zpool labelclear $disk1 log_must zpool labelclear $disk2 done typeset badvals=("off" "on" "1" "8" "17" "1b" "ff" "-") for badval in ${badvals[@]} do log_must zpool create $TESTPOOL $disk1 log_mustnot zpool add $TESTPOOL -o ashift="$badval" $disk2 # clean things for the next run log_must zpool destroy $TESTPOOL log_must zpool labelclear $disk1 log_mustnot zpool labelclear $disk2 done log_pass "zpool add -o ashift=' works with different ashift values" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add.kshlib0000644000000000000000000000007413612141513030756 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.709722284 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add.kshlib0000644016037001603700000000511513612141513030755 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.cfg # # Find the storage device in /etc/vfstab # function find_vfstab_dev { typeset vfstabdev typeset vfstabdevs="" typeset line if is_linux; then vfstab="/etc/fstab" tmpfile="$TEST_BASE_DIR/fstab.tmp" else vfstab="/etc/vfstab" tmpfile="$TEST_BASE_DIR/vfstab.tmp" fi cat $vfstab | grep "^${DEV_DSKDIR}" >$tmpfile while read -r line do vfstabdev=`echo "$line" | awk '{print $1}'` vfstabdev=${vfstabdev%%:} vfstabdevs="$vfstabdev $vfstabdevs" done <$tmpfile rm -f $tmpfile echo $vfstabdevs } # # Find the storage device in /etc/mnttab # function find_mnttab_dev { typeset mnttabdev typeset mnttabdevs="" typeset line if is_linux; then typeset mnttab="/etc/mtab" typeset tmpfile="$TEST_BASE_DIR/mtab.tmp" else typeset mnttab="/etc/mnttab" typeset tmpfile="$TEST_BASE_DIR/mnttab.tmp" fi cat $mnttab | grep "^${DEV_DSKDIR}" >$tmpfile while read -r line do mnttabdev=`echo "$line" | awk '{print $1}'` mnttabdev=${mnttabdev%%:} mnttabdevs="$mnttabdev $mnttabdevs" done <$tmpfile rm -f $tmpfile echo $mnttabdevs } # # Save the system current dump device configuration # function save_dump_dev { typeset dumpdev if is_linux; then dumpdev="" else typeset fnd="Dump device" dumpdev=`dumpadm | grep "$fnd" | cut -f2 -d : | \ awk '{print $1}'` fi echo $dumpdev } # # Common cleanup routine for partitions used in testing # function partition_cleanup { if [[ -n $DISK ]]; then partition_disk $SIZE $DISK 7 else typeset disk="" for disk in $DISK0 $DISK1; do partition_disk $SIZE $disk 7 done fi } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143004027641 xustar000000000000000030 mtime=1579730436.344362039 30 atime=1579730455.563979123 29 ctime=1579730478.74572344 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/Makefile.in0000664016037001603700000006207413612143004027657 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_add DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_add ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_add_001_pos.ksh \ zpool_add_002_pos.ksh \ zpool_add_003_pos.ksh \ zpool_add_004_pos.ksh \ zpool_add_005_pos.ksh \ zpool_add_006_pos.ksh \ zpool_add_007_neg.ksh \ zpool_add_008_neg.ksh \ zpool_add_009_neg.ksh \ zpool_add_010_pos.ksh \ add-o_ashift.ksh \ add_prop_ashift.ksh \ add_nested_replacing_spare.ksh dist_pkgdata_DATA = \ zpool_add.cfg \ zpool_add.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_add/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_add/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_002_pos.ks0000644000000000000000000000007313607166133031371 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.71772254 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_002_pos.ksh0000755016037001603700000000422113607166133031541 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_add/zpool_add.kshlib # # DESCRIPTION: # 'zpool add -f ...' can successfully add the specified # devices to given pool in some cases. # # STRATEGY: # 1. Create a mirrored pool # 2. Without -f option to add 1-way device the mirrored pool will fail # 3. Use -f to override the errors to add 1-way device to the mirrored # pool # 4. Verify the device is added successfully # verify_runnable "global" function cleanup { poolexists $TESTPOOL && \ destroy_pool $TESTPOOL partition_cleanup } log_assert "'zpool add -f ...' can successfully add" \ "devices to the pool in some cases." log_onexit cleanup create_pool "$TESTPOOL" mirror "${disk}${SLICE_PREFIX}${SLICE0}" \ "${disk}${SLICE_PREFIX}${SLICE1}" log_must poolexists "$TESTPOOL" log_mustnot zpool add "$TESTPOOL" ${disk}${SLICE_PREFIX}${SLICE3} log_mustnot vdevs_in_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE3}" log_must zpool add -f "$TESTPOOL" ${disk}${SLICE_PREFIX}${SLICE3} log_must vdevs_in_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE3}" log_pass "'zpool add -f ...' executes successfully." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/PaxHeaders.151519/zpool_add_010_pos.ks0000644000000000000000000000007413607166133031371 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.734723086 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_add/zpool_add_010_pos.ksh0000755016037001603700000001403213607166133031541 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # Verify zpool add succeed when adding vdevs with matching redundancy. # # STRATEGY: # 1. Create several files == $MINVDEVSIZE. # 2. Verify 'zpool add' succeeds with matching redundancy. # 3. Verify 'zpool add' warns with differing redundancy. # 4. Verify 'zpool add' warns with differing redundancy after removal. # verify_runnable "global" function cleanup { datasetexists $TESTPOOL1 && destroy_pool $TESTPOOL1 typeset -i i=0 while ((i < 10)); do log_must rm -f $TEST_BASE_DIR/vdev$i ((i += 1)) done } log_assert "Verify 'zpool add' succeed with keywords combination." log_onexit cleanup # 1. Create several files == $MINVDEVSIZE. typeset -i i=0 while ((i < 10)); do log_must truncate -s $MINVDEVSIZE $TEST_BASE_DIR/vdev$i eval vdev$i=$TEST_BASE_DIR/vdev$i ((i += 1)) done set -A redundancy0_create_args \ "$vdev0" set -A redundancy1_create_args \ "mirror $vdev0 $vdev1" \ "raidz1 $vdev0 $vdev1" set -A redundancy2_create_args \ "mirror $vdev0 $vdev1 $vdev2" \ "raidz2 $vdev0 $vdev1 $vdev2" set -A redundancy3_create_args \ "mirror $vdev0 $vdev1 $vdev2 $vdev3" \ "raidz3 $vdev0 $vdev1 $vdev2 $vdev3" set -A redundancy0_add_args \ "$vdev5" \ "$vdev5 $vdev6" set -A redundancy1_add_args \ "mirror $vdev5 $vdev6" \ "raidz1 $vdev5 $vdev6" \ "raidz1 $vdev5 $vdev6 mirror $vdev7 $vdev8" \ "mirror $vdev5 $vdev6 raidz1 $vdev7 $vdev8" set -A redundancy2_add_args \ "mirror $vdev5 $vdev6 $vdev7" \ "raidz2 $vdev5 $vdev6 $vdev7" set -A redundancy3_add_args \ "mirror $vdev5 $vdev6 $vdev7 $vdev8" \ "raidz3 $vdev5 $vdev6 $vdev7 $vdev8" set -A log_args "log" "$vdev4" set -A cache_args "cache" "$vdev4" set -A spare_args "spare" "$vdev4" typeset -i j=0 function zpool_create_add { typeset -n create_args=$1 typeset -n add_args=$2 i=0 while ((i < ${#create_args[@]})); do j=0 while ((j < ${#add_args[@]})); do log_must zpool create $TESTPOOL1 ${create_args[$i]} log_must zpool add $TESTPOOL1 ${add_args[$j]} log_must zpool destroy -f $TESTPOOL1 ((j += 1)) done ((i += 1)) done } function zpool_create_forced_add { typeset -n create_args=$1 typeset -n add_args=$2 i=0 while ((i < ${#create_args[@]})); do j=0 while ((j < ${#add_args[@]})); do log_must zpool create $TESTPOOL1 ${create_args[$i]} log_mustnot zpool add $TESTPOOL1 ${add_args[$j]} log_must zpool add -f $TESTPOOL1 ${add_args[$j]} log_must zpool destroy -f $TESTPOOL1 ((j += 1)) done ((i += 1)) done } function zpool_create_rm_add { typeset -n create_args=$1 typeset -n add_args=$2 typeset -n rm_args=$3 i=0 while ((i < ${#create_args[@]})); do j=0 while ((j < ${#add_args[@]})); do log_must zpool create $TESTPOOL1 ${create_args[$i]} log_must zpool add $TESTPOOL1 ${rm_args[0]} ${rm_args[1]} log_must zpool add $TESTPOOL1 ${add_args[$j]} log_must zpool remove $TESTPOOL1 ${rm_args[1]} log_mustnot zpool add $TESTPOOL1 ${rm_args[1]} log_must zpool add $TESTPOOL1 ${rm_args[0]} ${rm_args[1]} log_must zpool destroy -f $TESTPOOL1 ((j += 1)) done ((i += 1)) done } # 2. Verify 'zpool add' succeeds with matching redundancy. zpool_create_add redundancy0_create_args redundancy0_add_args zpool_create_add redundancy1_create_args redundancy1_add_args zpool_create_add redundancy2_create_args redundancy2_add_args zpool_create_add redundancy3_create_args redundancy3_add_args # 3. Verify 'zpool add' warns with differing redundancy. zpool_create_forced_add redundancy0_create_args redundancy1_add_args zpool_create_forced_add redundancy0_create_args redundancy2_add_args zpool_create_forced_add redundancy0_create_args redundancy3_add_args zpool_create_forced_add redundancy1_create_args redundancy0_add_args zpool_create_forced_add redundancy1_create_args redundancy2_add_args zpool_create_forced_add redundancy1_create_args redundancy3_add_args zpool_create_forced_add redundancy2_create_args redundancy0_add_args zpool_create_forced_add redundancy2_create_args redundancy1_add_args zpool_create_forced_add redundancy2_create_args redundancy3_add_args zpool_create_forced_add redundancy3_create_args redundancy0_add_args zpool_create_forced_add redundancy3_create_args redundancy1_add_args zpool_create_forced_add redundancy3_create_args redundancy2_add_args # 4. Verify 'zpool add' warns with differing redundancy after removal. zpool_create_rm_add redundancy1_create_args redundancy1_add_args log_args zpool_create_rm_add redundancy2_create_args redundancy2_add_args log_args zpool_create_rm_add redundancy3_create_args redundancy3_add_args log_args zpool_create_rm_add redundancy1_create_args redundancy1_add_args cache_args zpool_create_rm_add redundancy2_create_args redundancy2_add_args cache_args zpool_create_rm_add redundancy3_create_args redundancy3_add_args cache_args zpool_create_rm_add redundancy1_create_args redundancy1_add_args spare_args zpool_create_rm_add redundancy2_create_args redundancy2_add_args spare_args zpool_create_rm_add redundancy3_create_args redundancy3_add_args spare_args log_pass "'zpool add' succeed with keywords combination." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_receive0000644000000000000000000000013213612143055026057 xustar000000000000000030 mtime=1579730477.648688216 30 atime=1579730489.090055581 30 ctime=1579730477.648688216 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/0000775016037001603700000000000013612143055026140 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_013_po0000644000000000000000000000007413607166133031457 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.626687509 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_013_pos.ksh0000755016037001603700000000363513607166133032435 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verifying 'zfs receive' works correctly on deduplicated streams # # STRATEGY: # 1. Create some snapshots with duplicated data # 2. Send a deduplicated stream of the last snapshot # 3. Attempt to receive the deduplicated stream # src_fs=$TESTPOOL/drecvsrc temppool=recvtank dst_fs=$temppool/drecvdest streamfile=$TEST_BASE_DIR/drecvstream.$$ tpoolfile=$TEST_BASE_DIR/temptank.$$ function cleanup { for fs in $src_fs $dst_fs; do datasetexists $fs && log_must zfs destroy -rf $fs done zpool destroy $temppool [[ -f $streamfile ]] && log_must rm -f $streamfile [[ -f $tpoolfile ]] && log_must rm -f $tpoolfile } log_assert "Verifying 'zfs receive' works correctly on deduplicated streams" log_onexit cleanup truncate -s 100M $tpoolfile log_must zpool create $temppool $tpoolfile log_must zfs create $src_fs src_mnt=$(get_prop mountpoint $src_fs) || log_fail "get_prop mountpoint $src_fs" echo blah > $src_mnt/blah zfs snapshot $src_fs@base echo grumble > $src_mnt/grumble echo blah > $src_mnt/blah2 zfs snapshot $src_fs@snap2 echo grumble > $src_mnt/mumble echo blah > $src_mnt/blah3 zfs snapshot $src_fs@snap3 log_must eval "zfs send -D -R $src_fs@snap3 > $streamfile" log_must eval "zfs receive -v $dst_fs < $streamfile" cleanup log_pass "Verifying 'zfs receive' works correctly on deduplicated streams" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_004_ne0000644000000000000000000000007413612141513031432 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.605686835 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_004_neg.ksh0000755016037001603700000000616013612141513032370 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verify 'zfs receive' fails with malformed parameters. # # STRATEGY: # 1. Define malformed parameters array # 2. Feed the malformed parameters to 'zfs receive' # 3. Verify the command should be failed # verify_runnable "both" function cleanup { typeset snap typeset bkup for snap in $init_snap $inc_snap $init_topsnap $inc_topsnap ; do snapexists $snap && \ log_must zfs destroy -Rf $snap done for bkup in $full_bkup $inc_bkup $full_topbkup $inc_topbkup; do [[ -e $bkup ]] && \ log_must rm -f $bkup done } log_assert "Verify that invalid parameters to 'zfs receive' are caught." log_onexit cleanup init_snap=$TESTPOOL/$TESTFS@initsnap inc_snap=$TESTPOOL/$TESTFS@incsnap full_bkup=$TEST_BASE_DIR/full_bkup.$$ inc_bkup=$TEST_BASE_DIR/inc_bkup.$$ init_topsnap=$TESTPOOL@initsnap inc_topsnap=$TESTPOOL@incsnap full_topbkup=$TEST_BASE_DIR/full_topbkup.$$ inc_topbkup=$TEST_BASE_DIR/inc_topbkup.$$ log_must zfs snapshot $init_topsnap log_must eval "zfs send $init_topsnap > $full_topbkup" log_must touch /$TESTPOOL/foo log_must zfs snapshot $inc_topsnap log_must eval "zfs send -i $init_topsnap $inc_topsnap > $inc_topbkup" log_must touch /$TESTPOOL/bar log_must zfs snapshot $init_snap log_must eval "zfs send $init_snap > $full_bkup" log_must touch /$TESTDIR/foo log_must zfs snapshot $inc_snap log_must eval "zfs send -i $init_snap $inc_snap > $inc_bkup" log_must touch /$TESTDIR/bar sync set -A badargs \ "" "nonexistent-snap" "blah@blah" "-d" "-d nonexistent-dataset" \ "$TESTPOOL/$TESTFS" "$TESTPOOL1" "$TESTPOOL/fs@" "$TESTPOOL/fs@@mysnap" \ "$TESTPOOL/fs@@" "$TESTPOOL/fs/@mysnap" "$TESTPOOL/fs@/mysnap" \ "$TESTPOOL/nonexistent-fs/nonexistent-fs" "-d $TESTPOOL/nonexistent-fs" \ "-d $TESTPOOL/$TESTFS/nonexistent-fs" if is_global_zone ; then typeset -i n=${#badargs[@]} badargs[$n]="-d $TESTPOOL" fi typeset -i i=0 while (( i < ${#badargs[*]} )) do for bkup in $full_bkup $inc_bkup $full_topbkup $inc_topbkup ; do log_mustnot eval "zfs receive ${badargs[i]} < $bkup" done (( i = i + 1 )) done log_pass "Invalid parameters to 'zfs receive' are caught as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_-e.ksh0000644000000000000000000000007413607166133031543 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.643688056 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_-e.ksh0000755016037001603700000000644513607166133031554 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS receive '-e' option can be used to discard all but the last element of # the sent snapshot's file system name # # STRATEGY: # 1. Create a filesystem with children and snapshots # 2. Verify 'zfs receive -e' rejects invalid options # 3. Verify 'zfs receive -e' can receive the root dataset # 4. Verify 'zfs receive -e' can receive a replication stream # 5. Verify 'zfs receive -e' can receive an incremental replication stream # verify_runnable "both" function cleanup { destroy_pool "$poolname" log_must rm -f "$vdevfile" log_must rm -f "$streamfile" } log_assert "ZFS receive '-e' option can be used to discard all but the last"\ "element of the sent snapshot's file system name" log_onexit cleanup poolname="$TESTPOOL-zfsrecv" recvfs="$poolname/recv" vdevfile="$TEST_BASE_DIR/vdevfile.$$" streamfile="$TEST_BASE_DIR/streamfile.$$" # # 1. Create a filesystem with children and snapshots # NOTE: set "mountpoint=none" just to speed up the test process # log_must truncate -s $MINVDEVSIZE "$vdevfile" log_must zpool create -O mountpoint=none "$poolname" "$vdevfile" log_must zfs create -p "$poolname/fs/a/b" log_must zfs create "$recvfs" log_must zfs snapshot -r "$poolname@full" log_must zfs snapshot -r "$poolname@incr" # # 2. Verify 'zfs receive -e' rejects invalid options # log_must eval "zfs send $poolname/fs@full > $streamfile" log_mustnot eval "zfs receive -e < $streamfile" log_mustnot eval "zfs receive -e $recvfs@snap < $streamfile" log_mustnot eval "zfs receive -e $recvfs/1/2/3 < $streamfile" log_mustnot eval "zfs receive -A -e $recvfs < $streamfile" log_mustnot eval "zfs receive -e -d $recvfs < $streamfile" # # 3. 'zfs receive -e' can receive the root dataset # recvfs_rootds="$recvfs/rootds" log_must zfs create "$recvfs_rootds" log_must eval "zfs send $poolname@full > $streamfile" log_must eval "zfs receive -e $recvfs_rootds < $streamfile" log_must datasetexists "$recvfs_rootds/$poolname" log_must snapexists "$recvfs_rootds/$poolname@full" # # 4. 'zfs receive -e' can receive a replication stream # recvfs_fs="$recvfs/fs" log_must zfs create "$recvfs_fs" log_must eval "zfs send -R $poolname/fs/a@full > $streamfile" log_must eval "zfs receive -e $recvfs_fs < $streamfile" log_must datasetexists "$recvfs_fs/a" log_must datasetexists "$recvfs_fs/a/b" log_must snapexists "$recvfs_fs/a@full" log_must snapexists "$recvfs_fs/a/b@full" # # 5. 'zfs receive -e' can receive an incremental replication stream # log_must eval "zfs send -R -i full $poolname/fs/a@incr > $streamfile" log_must eval "zfs receive -e $recvfs_fs < $streamfile" log_must snapexists "$recvfs_fs/a@incr" log_must snapexists "$recvfs_fs/a/b@incr" log_pass "ZFS receive '-e' discards all but the last element of the sent"\ "snapshot's file system name as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_005_ne0000644000000000000000000000007413607166133031444 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.607686899 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_005_neg.ksh0000755016037001603700000000541513607166133032404 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verify 'zfs receive' fails with unsupported scenarios. # including: # (1) Invalid send streams; # (2) The received incremental send doesn't match the filesystem # latest status. # # STRATEGY: # 1. Preparation for unsupported scenarios # 2. Execute 'zfs receive' # 3. Verify the results are failed # verify_runnable "both" function cleanup { typeset snap typeset bkup for snap in $init_snap $inc_snap; do snapexists $snap && \ log_must zfs destroy -f $snap done datasetexists $rst_root && \ log_must zfs destroy -Rf $rst_root for bkup in $full_bkup $inc_bkup; do [[ -e $bkup ]] && \ log_must rm -f $bkup done } log_assert "Verify 'zfs receive' fails with unsupported scenarios." log_onexit cleanup init_snap=$TESTPOOL/$TESTFS@initsnap inc_snap=$TESTPOOL/$TESTFS@incsnap rst_root=$TESTPOOL/rst_ctr rst_init_snap=$rst_root/$TESTFS@init_snap rst_inc_snap=$rst_root/$TESTFS@inc_snap full_bkup=$TEST_BASE_DIR/full_bkup.$$ inc_bkup=$TEST_BASE_DIR/inc_bkup.$$ log_must zfs create $rst_root log_must zfs snapshot $init_snap log_must eval "zfs send $init_snap > $full_bkup" log_note "'zfs receive' fails with invalid send streams." log_mustnot eval "zfs receive $rst_init_snap < /dev/zero" log_mustnot eval "zfs receive -d $rst_root $inc_bkup" #make changes on the restoring filesystem log_must touch $ZFSROOT/$rst_root/$TESTFS/tmpfile log_mustnot eval "zfs receive $rst_inc_snap < $inc_bkup" log_mustnot eval "zfs receive -d $rst_root < $inc_bkup" log_pass "Unsupported scenarios to 'zfs receive' fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_007_ne0000644000000000000000000000007413607166133031446 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.612687059 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_007_neg.ksh0000755016037001603700000000446013607166133032405 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs recv -F' should fail if the incremental stream does not match # # STRATEGY: # 1. Create pool and fs. # 2. Create some files in fs and take snapshots. # 3. Keep the incremental stream and restore the stream to the pool # 4. Verify receiving the stream fails # verify_runnable "both" function cleanup { for snap in $snap2 $snap1; do datasetexists $snap && log_must zfs destroy -rf $snap done for file in $ibackup $mntpnt/file1 $mntpnt/file2; do [[ -f $file ]] && log_must rm -f $file done } log_assert "'zfs recv -F' should fail if the incremental stream does not match" log_onexit cleanup fs=$TESTPOOL/$TESTFS snap1=$fs@snap1 snap2=$fs@snap2 ibackup=$TEST_BASE_DIR/ibackup.$$ datasetexists $fs || log_must zfs create $fs mntpnt=$(get_prop mountpoint $fs) || log_fail "get_prop mountpoint $fs" log_must mkfile 10m $mntpnt/file1 log_must zfs snapshot $snap1 log_must mkfile 10m $mntpnt/file2 log_must zfs snapshot $snap2 log_must eval "zfs send -i $snap1 $snap2 > $ibackup" log_must zfs destroy $snap1 log_must zfs destroy $snap2 log_mustnot eval "zfs receive -F $fs < $ibackup" log_must mkfile 20m $mntpnt/file1 log_must rm -rf $mntpnt/file2 log_must zfs snapshot $snap1 log_mustnot eval "zfs receive -F $snap2 < $ibackup" log_pass "'zfs recv -F' should fail if the incremental stream does not match" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_001_po0000644000000000000000000000007413612141513031443 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.598686611 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_001_pos.ksh0000755016037001603700000001116213612141513032413 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verifying 'zfs receive [] -d ' works. # # STRATEGY: # 1. Fill in fs with some data # 2. Create full and incremental send stream # 3. Receive the send stream # 4. Verify the restoring results. # verify_runnable "both" function cleanup { typeset -i i=0 datasetexists $rst_root && \ log_must zfs destroy -Rf $rst_root while (( i < 2 )); do snapexists ${orig_snap[$i]} && \ log_must zfs destroy -f ${orig_snap[$i]} log_must rm -f ${bkup[$i]} (( i = i + 1 )) done log_must rm -rf $TESTDIR1 } function recreate_root { datasetexists $rst_root && \ log_must zfs destroy -Rf $rst_root if [[ -d $TESTDIR1 ]] ; then log_must rm -rf $TESTDIR1 fi log_must zfs create $rst_root log_must zfs set mountpoint=$TESTDIR1 $rst_root } log_assert "Verifying 'zfs receive [] -d ' works." log_onexit cleanup typeset datasets="$TESTPOOL/$TESTFS $TESTPOOL" set -A bkup "$TEST_BASE_DIR/fullbkup" "$TEST_BASE_DIR/incbkup" orig_sum="" rst_sum="" rst_root=$TESTPOOL/rst_ctr rst_fs=${rst_root}/$TESTFS for orig_fs in $datasets ; do # # Preparations for testing # recreate_root set -A orig_snap "${orig_fs}@init_snap" "${orig_fs}@inc_snap" typeset mntpnt=$(get_prop mountpoint ${orig_fs}) set -A orig_data "${mntpnt}/$TESTFILE1" "${mntpnt}/$TESTFILE2" typeset relative_path="" if [[ ${orig_fs} == *"/"* ]]; then relative_path=${orig_fs#*/} fi typeset leaf_fs=${rst_root}/${relative_path} leaf_fs=${leaf_fs%/} rst_snap=${leaf_fs}@snap set -A rst_snap "$rst_root/$TESTFS@init_snap" "$rst_root/$TESTFS@inc_snap" set -A rst_snap2 "${leaf_fs}@init_snap" "${leaf_fs}@inc_snap" set -A rst_data "$TESTDIR1/$TESTFS/$TESTFILE1" "$TESTDIR1/$TESTFS/$TESTFILE2" set -A rst_data2 "$TESTDIR1/${relative_path}/$TESTFILE1" "$TESTDIR1/${relative_path}/$TESTFILE2" typeset -i i=0 while (( i < ${#orig_snap[*]} )); do file_write -o create -f ${orig_data[$i]} -b 512 \ -c 8 >/dev/null 2>&1 (( $? != 0 )) && \ log_fail "Writing data into zfs filesystem fails." log_must zfs snapshot ${orig_snap[$i]} if (( i < 1 )); then log_must eval "zfs send ${orig_snap[$i]} > ${bkup[$i]}" else log_must eval "zfs send -i ${orig_snap[(( i - 1 ))]} \ ${orig_snap[$i]} > ${bkup[$i]}" fi (( i = i + 1 )) done log_note "Verifying 'zfs receive ' works." i=0 while (( i < ${#bkup[*]} )); do if (( i > 0 )); then log_must zfs rollback ${rst_snap[0]} fi log_must eval "zfs receive $rst_fs < ${bkup[$i]}" snapexists ${rst_snap[$i]} || \ log_fail "Restoring filesystem fails. ${rst_snap[$i]} not exist" compare_cksum ${orig_data[$i]} ${rst_data[$i]} (( i = i + 1 )) done log_must zfs destroy -Rf $rst_fs log_note "Verifying 'zfs receive ' works." i=0 while (( i < ${#bkup[*]} )); do if (( i > 0 )); then log_must zfs rollback ${rst_snap[0]} fi log_must eval "zfs receive ${rst_snap[$i]} <${bkup[$i]}" snapexists ${rst_snap[$i]} || \ log_fail "Restoring filesystem fails. ${rst_snap[$i]} not exist" compare_cksum ${orig_data[$i]} ${rst_data[$i]} (( i = i + 1 )) done log_must zfs destroy -Rf $rst_fs log_note "Verifying 'zfs receive -d ' works." i=0 while (( i < ${#bkup[*]} )); do if (( i > 0 )); then log_must zfs rollback ${rst_snap2[0]} fi log_must eval "zfs receive -d -F $rst_root <${bkup[$i]}" snapexists ${rst_snap2[$i]} || \ log_fail "Restoring filesystem fails. ${rst_snap2[$i]} not exist" compare_cksum ${orig_data[$i]} ${rst_data2[$i]} (( i = i + 1 )) done cleanup done log_pass "Verifying 'zfs receive [] -d ' succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_010_po0000644000000000000000000000007413607166133031454 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.619687285 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_010_pos.ksh0000755016037001603700000001251313607166133032425 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Test that receiving a full send as a clone works correctly. # # STRATEGY: # 1. Create pool and filesystems. # 2. Send filesystem, receive as clone of itself. # 3. Verify that nop-write saves space. # 4. Send filesystem, receive as clone of other filesystem. # 5. Verify that contents are correct. # 6. Repeat steps 4 and 5 with filesystems swapped. # verify_runnable "both" fs=$TESTPOOL/$TESTFS/base/fs fs2=$TESTPOOL/$TESTFS/base/fs2 rfs=$TESTPOOL/$TESTFS/base/rfs function make_object { typeset objnum=$1 typeset mntpnt=$2 typeset type=$3 if [[ $type == "file" ]]; then dd if=/dev/urandom of=${mntpnt}/f$objnum bs=512 count=16 elif [[ $type == "hole1" ]]; then dd if=/dev/zero of=${mntpnt}/fh$objnum bs=512 count=5 seek=4 conv=notrunc elif [[ $type == "hole2" ]]; then dd if=/dev/zero of=${mntpnt}/fh$objnum bs=512 count=4 seek=5 conv=notrunc elif [[ $type == "directory" ]]; then mkdir ${mntpnt}/d$objnum elif [[ $type == "missing" ]]; then touch ${mntpnt}/h$objnum fi } function create_pair { typeset objnum=$1 typeset mntpnt1=$2 typeset mntpnt2=$3 typeset type1=$4 typeset type2=$5 make_object $objnum $mntpnt1 $type1 make_object $objnum $mntpnt2 $type2 } function cleanup { zfs destroy -Rf $TESTPOOL/$TESTFS/base rm $TESTDIR/zr010p* } log_assert "zfs receive of full send as clone should work" log_onexit cleanup log_must zfs create -o checksum=sha256 -o compression=gzip -o recordsize=512 \ $TESTPOOL/$TESTFS/base log_must zfs create $fs log_must zfs create $fs2 mntpnt=$(get_prop mountpoint $fs) mntpnt2=$(get_prop mountpoint $fs2) # # Now, we create the two filesystems. By creating objects with # different types and the same object number in each filesystem, we # create a situation where, when you receive the full send of each as # a clone of the other, we will test to ensure that the code correctly # handles receiving all object types onto all other object types. # # Receive a file onto a file (and vice versa). create_pair 8 $mntpnt $mntpnt2 "file" "file" # Receive a file onto a file with holes (and vice versa). create_pair 9 $mntpnt $mntpnt2 "file" "hole1" # Receive a file onto a directory (and vice versa). create_pair 10 $mntpnt $mntpnt2 "file" "directory" # Receive a file onto a missing object (and vice versa). create_pair 11 $mntpnt $mntpnt2 "file" "missing" # Receive a file with holes onto a file with holes (and vice versa). create_pair 12 $mntpnt $mntpnt2 "hole1" "hole2" # Receive a file with holes onto a directory (and vice versa). create_pair 13 $mntpnt $mntpnt2 "hole1" "directory" # Receive a file with holes onto a missing object (and vice versa). create_pair 14 $mntpnt $mntpnt2 "hole1" "missing" # Receive a directory onto a directory (and vice versa). create_pair 15 $mntpnt $mntpnt2 "directory" "directory" # Receive a directory onto a missing object (and vice versa). create_pair 16 $mntpnt $mntpnt2 "directory" "missing" # Receive a missing object onto a missing object (and vice versa). create_pair 17 $mntpnt $mntpnt2 "missing" "missing" # Receive a file with a different record size onto a file (and vice versa). log_must zfs set recordsize=128k $fs dd if=/dev/urandom of=$mntpnt/f18 bs=128k count=64 touch $mntpnt2/f18 # Remove objects that are intended to be missing. rm $mntpnt/h17 rm $mntpnt2/h* # Add empty objects to $fs to exercise dmu_traverse code for i in {1..100}; do log_must touch $mntpnt/uf$i done log_must zfs snapshot $fs@s1 log_must zfs snapshot $fs2@s1 log_must zfs send $fs@s1 > $TESTDIR/zr010p log_must zfs send $fs2@s1 > $TESTDIR/zr010p2 # # Test that, when we receive a full send as a clone of itself, # nop-write saves us all the space used by data blocks. # cat $TESTDIR/zr010p | log_must zfs receive -o origin=$fs@s1 $rfs size=$(get_prop used $rfs) size2=$(get_prop used $fs) if [[ $size -ge $(($size2 / 10)) ]] then log_fail "nop-write failure; expected usage less than "\ "$(($size2 / 10)), but is using $size" fi log_must zfs destroy -fr $rfs # Correctness testing: receive each full send as a clone of the other fiesystem. cat $TESTDIR/zr010p | log_must zfs receive -o origin=$fs2@s1 $rfs mntpnt_old=$(get_prop mountpoint $fs) mntpnt_new=$(get_prop mountpoint $rfs) log_must diff -r $mntpnt_old $mntpnt_new log_must zfs destroy -r $rfs cat $TESTDIR/zr010p2 | log_must zfs receive -o origin=$fs@s1 $rfs mntpnt_old=$(get_prop mountpoint $fs2) mntpnt_new=$(get_prop mountpoint $rfs) log_must diff -r $mntpnt_old $mntpnt_new log_pass "zfs receive of full send as clone works" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166147030207 xustar000000000000000030 atime=1579730435.505335101 29 ctime=1579730477.64568812 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/Makefile.am0000644016037001603700000000131613607166147030206 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_receive dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_receive_001_pos.ksh \ zfs_receive_002_pos.ksh \ zfs_receive_003_pos.ksh \ zfs_receive_004_neg.ksh \ zfs_receive_005_neg.ksh \ zfs_receive_006_pos.ksh \ zfs_receive_007_neg.ksh \ zfs_receive_008_pos.ksh \ zfs_receive_009_neg.ksh \ zfs_receive_010_pos.ksh \ zfs_receive_011_pos.ksh \ zfs_receive_012_pos.ksh \ zfs_receive_013_pos.ksh \ zfs_receive_014_pos.ksh \ zfs_receive_015_pos.ksh \ receive-o-x_props_override.ksh \ zfs_receive_from_encrypted.ksh \ zfs_receive_to_encrypted.ksh \ zfs_receive_raw.ksh \ zfs_receive_raw_incremental.ksh \ zfs_receive_-e.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030016 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.593686449 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/setup.ksh0000755016037001603700000000203413607166133030015 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} if is_global_zone; then default_volume_setup $DISK else default_setup $DISK fi zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030305 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.595686514 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/cleanup.ksh0000755016037001603700000000177513607166133030317 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib poolexists $TESTPOOL1 && \ destroy_pool $TESTPOOL1 default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_006_po0000644000000000000000000000007413607166133031461 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.609686963 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_006_pos.ksh0000755016037001603700000000627613607166133032443 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs recv -d ' should create ancestor filesystem if it does not # exist and it should not fail if it exists # # STRATEGY: # 1. Create pool and fs. # 2. Create some files in fs and take snapshots. # 3. Keep the stream and restore the stream to the pool # 4. Verify receiving the stream succeeds, and the ancestor filesystem # is created if it did not exist # 5. Verify receiving the stream still succeeds when ancestor filesystem # exists # verify_runnable "both" function cleanup { for snap in $snap2 $snap1; do datasetexists $snap && log_must zfs destroy -rf $snap done for file in $fbackup1 $fbackup2 $mntpnt/file1 $mntpnt/file2; do [[ -f $file ]] && log_must rm -f $file done if is_global_zone; then datasetexists $TESTPOOL/$TESTFS/$TESTFS1 && \ log_must zfs destroy -rf $TESTPOOL/$TESTFS/$TESTFS1 else datasetexists $TESTPOOL/${ZONE_CTR}0 && \ log_must zfs destroy -rf $TESTPOOL/${ZONE_CTR}0 fi } log_assert "'zfs recv -d ' should succeed no matter ancestor filesystem \ exists." log_onexit cleanup ancestor_fs=$TESTPOOL/$TESTFS fs=$TESTPOOL/$TESTFS/$TESTFS1 snap1=$fs@snap1 snap2=$fs@snap2 fbackup1=$TEST_BASE_DIR/fbackup1.$$ fbackup2=$TEST_BASE_DIR/fbackup2.$$ datasetexists $ancestor_fs || \ log_must zfs create $ancestor_fs log_must zfs create $fs mntpnt=$(get_prop mountpoint $fs) || log_fail "get_prop mountpoint $fs" log_must mkfile 10m $mntpnt/file1 log_must zfs snapshot $snap1 log_must mkfile 10m $mntpnt/file2 log_must zfs snapshot $snap2 log_must eval "zfs send $snap1 > $fbackup1" log_must eval "zfs send $snap2 > $fbackup2" log_note "Verify 'zfs receive -d' succeed and create ancestor filesystem \ if it did not exist. " log_must zfs destroy -rf $ancestor_fs log_must eval "zfs receive -d $TESTPOOL < $fbackup1" is_global_zone || ancestor_fs=$TESTPOOL/${ZONE_CTR}0/$TESTFS datasetexists $ancestor_fs || \ log_fail "ancestor filesystem is not created" log_note "Verify 'zfs receive -d' still succeed if ancestor filesystem exists" is_global_zone || fs=$TESTPOOL/${ZONE_CTR}0/$TESTFS/$TESTFS1 log_must zfs destroy -rf $fs log_must eval "zfs receive -d $TESTPOOL < $fbackup2" log_pass "'zfs recv -d ' should succeed no matter ancestor filesystem \ exists." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/receive-o-x_props_0000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.632687701 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/receive-o-x_props_override.ksh0000755016037001603700000003317013607166133034127 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Verify ZFS property override (-o) and exclude (-x) options work when # receiving a send stream # # STRATEGY: # 1. Create a filesystem with children. # 2. Snapshot the filesystems. # 3. Create various send streams (full, incremental, replication) and verify # we can both override and exclude native and user properties. # verify_runnable "both" function cleanup { log_must rm -f $streamfile_full log_must rm -f $streamfile_incr log_must rm -f $streamfile_repl log_must rm -f $streamfile_trun destroy_dataset "$orig" "-rf" destroy_dataset "$dest" "-rf" } log_assert "ZFS receive property override and exclude options work as expected." log_onexit cleanup orig=$TESTPOOL/$TESTFS1 origsub=$orig/sub dest=$TESTPOOL/$TESTFS2 destsub=$dest/sub typeset userprop=$(valid_user_property 8) typeset userval=$(user_property_value 8) typeset streamfile_full=$TESTDIR/streamfile_full.$$ typeset streamfile_incr=$TESTDIR/streamfile_incr.$$ typeset streamfile_repl=$TESTDIR/streamfile_repl.$$ typeset streamfile_trun=$TESTDIR/streamfile_trun.$$ # # 3.1 Verify we can't specify the same property in multiple -o or -x options # or an invalid value was specified. # # Create a full send stream log_must zfs create $orig log_must zfs snapshot $orig@snap1 log_must eval "zfs send $orig@snap1 > $streamfile_full" # Verify we reject invalid options log_mustnot eval "zfs recv $dest -o atime < $streamfile_full" log_mustnot eval "zfs recv $dest -x atime=off < $streamfile_full" log_mustnot eval "zfs recv $dest -o atime=off -x atime < $streamfile_full" log_mustnot eval "zfs recv $dest -o atime=off -o atime=on < $streamfile_full" log_mustnot eval "zfs recv $dest -x atime -x atime < $streamfile_full" log_mustnot eval "zfs recv $dest -o version=1 < $streamfile_full" log_mustnot eval "zfs recv $dest -x version < $streamfile_full" log_mustnot eval "zfs recv $dest -x normalization < $streamfile_full" # Verify we also reject invalid ZVOL options log_must zfs create -V 32K -s $orig/zvol log_must eval "zfs send $orig@snap1 > $streamfile_full" log_mustnot eval "zfs recv $dest -x volsize < $streamfile_full" log_mustnot eval "zfs recv $dest -o volsize=32K < $streamfile_full" # Cleanup block_device_wait log_must_busy zfs destroy -r -f $orig # # 3.2 Verify -o property=value works on streams without properties. # # Create a full send stream log_must zfs create $orig log_must zfs snapshot $orig@snap1 log_must eval "zfs send $orig@snap1 > $streamfile_full" # Receive the full stream, override some properties log_must eval "zfs recv -o compression=on -o '$userprop:dest'='$userval' "\ "$dest < $streamfile_full" log_must eval "check_prop_source $dest compression on local" log_must eval "check_prop_source $dest '$userprop:dest' '$userval' local" # Cleanup log_must zfs destroy -r -f $orig log_must zfs destroy -r -f $dest # # 3.3 Verify -o property=value and -x work on both native and user properties # for an incremental replication send stream. # # Create a dataset tree and receive it log_must zfs create $orig log_must zfs create $origsub log_must zfs snapshot -r $orig@snap1 log_must eval "zfs send -R $orig@snap1 > $streamfile_repl" log_must eval "zfs recv $dest < $streamfile_repl" # Fill the datasets with properties and create an incremental replication stream log_must zfs snapshot -r $orig@snap2 log_must zfs snapshot -r $orig@snap3 log_must eval "zfs set copies=2 $orig" log_must eval "zfs set '$userprop:orig'='$userval' $orig" log_must eval "zfs set '$userprop:orig'='$userval' $origsub" log_must eval "zfs set '$userprop:snap'='$userval' $orig@snap1" log_must eval "zfs set '$userprop:snap'='$userval' $origsub@snap3" log_must eval "zfs send -R -I $orig@snap1 $orig@snap3 > $streamfile_incr" # Sets various combination of override and exclude options log_must eval "zfs recv -F -o atime=off -o '$userprop:dest2'='$userval' "\ "-o quota=123456789 -o checksum=sha512 -x compression "\ "-x '$userprop:orig' -x '$userprop:snap3' $dest < $streamfile_incr" # Verify we can correctly override and exclude properties log_must eval "check_prop_source $dest copies 2 received" log_must eval "check_prop_source $dest atime off local" log_must eval "check_prop_source $dest '$userprop:dest2' '$userval' local" log_must eval "check_prop_source $dest quota 123456789 local" log_must eval "check_prop_source $dest checksum sha512 local" log_must eval "check_prop_inherit $destsub copies $dest" log_must eval "check_prop_inherit $destsub atime $dest" log_must eval "check_prop_inherit $destsub checksum $dest" log_must eval "check_prop_inherit $destsub '$userprop:dest2' $dest" log_must eval "check_prop_source $destsub quota 0 default" log_must eval "check_prop_source $destsub compression off default" log_must eval "check_prop_missing $dest '$userprop:orig'" log_must eval "check_prop_missing $destsub '$userprop:orig'" log_must eval "check_prop_source " \ "$dest@snap1 '$userprop:snap' '$userval' received" log_must eval "check_prop_source " \ "$destsub@snap3 '$userprop:snap' '$userval' received" log_must eval "check_prop_missing $dest@snap3 '$userprop:snap3'" log_must eval "check_prop_missing $destsub@snap3 '$userprop:snap3'" # Cleanup log_must zfs destroy -r -f $orig log_must zfs destroy -r -f $dest # # 3.4 Verify '-x property' does not remove existing local properties and a # modified sent property is received and updated to the new value but can # still be excluded. # # Create a dataset tree log_must zfs create $orig log_must zfs create $origsub log_must zfs snapshot -r $orig@snap1 log_must eval "zfs set copies=2 $orig" log_must eval "zfs set '$userprop:orig'='oldval' $orig" log_must eval "zfs set '$userprop:orig'='oldsubval' $origsub" log_must eval "zfs send -R $orig@snap1 > $streamfile_repl" log_must eval "zfs receive $dest < $streamfile_repl" log_must eval "check_prop_source $dest copies 2 received" log_must eval "check_prop_inherit $destsub copies $dest" log_must eval "check_prop_source $dest '$userprop:orig' 'oldval' received" log_must eval "check_prop_source $destsub '$userprop:orig' 'oldsubval' received" # Set new custom properties on both source and destination log_must eval "zfs set copies=3 $orig" log_must eval "zfs set '$userprop:orig'='newval' $orig" log_must eval "zfs set '$userprop:orig'='newsubval' $origsub" log_must eval "zfs set compression=gzip $dest" log_must eval "zfs set '$userprop:dest'='localval' $dest" # Receive the new stream, verify we preserve locally set properties log_must zfs snapshot -r $orig@snap2 log_must zfs snapshot -r $orig@snap3 log_must eval "zfs send -R -I $orig@snap1 $orig@snap3 > $streamfile_incr" log_must eval "zfs recv -F -x copies -x compression -x '$userprop:orig' " \ "-x '$userprop:dest' $dest < $streamfile_incr" log_must eval "check_prop_source $dest '$userprop:dest' 'localval' local" log_must eval "check_prop_received $dest '$userprop:orig' 'newval'" log_must eval "check_prop_received $destsub '$userprop:orig' 'newsubval'" log_must eval "check_prop_missing $dest '$userprop:orig'" log_must eval "check_prop_missing $destsub '$userprop:orig'" log_must eval "check_prop_source $dest copies 1 default" log_must eval "check_prop_received $dest copies 3" log_must eval "check_prop_source $destsub copies 1 default" log_must eval "check_prop_received $destsub copies '-'" log_must eval "check_prop_source $dest compression gzip local" log_must eval "check_prop_inherit $destsub compression $dest" # Cleanup log_must zfs destroy -r -f $orig log_must zfs destroy -r -f $dest # # 3.5 Verify we can exclude non-inheritable properties from a send stream # # Create a dataset tree and replication stream log_must zfs create $orig log_must zfs create $origsub log_must zfs snapshot -r $orig@snap1 log_must eval "zfs set quota=123456789 $orig" log_must eval "zfs send -R $orig@snap1 > $streamfile_repl" # Receive the stream excluding non-inheritable properties log_must eval "zfs recv -F -x quota $dest < $streamfile_repl" log_must eval "check_prop_source $dest quota 0 default" log_must eval "check_prop_source $destsub quota 0 default" # Set some non-inheritable properties on the destination, verify we keep them log_must eval "zfs set quota=123456789 $dest" log_must eval "zfs set canmount=off $destsub" log_must zfs snapshot -r $orig@snap2 log_must zfs snapshot -r $orig@snap3 log_must eval "zfs send -R -I $orig@snap1 $orig@snap3 > $streamfile_incr" log_must eval "zfs recv -F -x quota -x canmount $dest < $streamfile_incr" log_must eval "check_prop_source $dest quota 123456789 local" log_must eval "check_prop_source $destsub quota 0 default" log_must eval "check_prop_source $destsub canmount off local" # Cleanup log_must zfs destroy -r -f $orig log_must zfs destroy -r -f $dest # # 3.6 Verify we correctly restore existing properties on a failed receive # # Receive a "clean" dataset tree log_must zfs create $orig log_must zfs create $origsub log_must zfs snapshot -r $orig@snap1 log_must eval "zfs send -R $orig@snap1 > $streamfile_repl" log_must eval "zfs receive $dest < $streamfile_repl" # Set custom properties on the destination log_must eval "zfs set atime=off $dest" log_must eval "zfs set quota=123456789 $dest" log_must eval "zfs set '$userprop:orig'='$userval' $dest" log_must eval "zfs set '$userprop:origsub'='$userval' $destsub" # Create a truncated incremental replication stream mntpnt=$(get_prop mountpoint $orig) log_must eval "dd if=/dev/urandom of=$mntpnt/file bs=1024k count=10" log_must zfs snapshot -r $orig@snap2 log_must zfs snapshot -r $orig@snap3 log_must eval "zfs send -R -I $orig@snap1 $orig@snap3 > $streamfile_incr" log_must eval "dd if=$streamfile_incr of=$streamfile_trun bs=1024k count=9" # Receive the truncated stream, verify original properties are kept log_mustnot eval "zfs recv -F -o copies=3 -o quota=987654321 "\ "-o '$userprop:new'='badval' $dest < $streamfile_trun" log_must eval "check_prop_source $dest copies 1 default" log_must eval "check_prop_source $destsub copies 1 default" log_must eval "check_prop_source $dest atime off local" log_must eval "check_prop_inherit $destsub atime $dest" log_must eval "check_prop_source $dest quota 123456789 local" log_must eval "check_prop_source $destsub quota 0 default" log_must eval "check_prop_source $dest '$userprop:orig' '$userval' local" log_must eval "check_prop_inherit $destsub '$userprop:orig' $dest" log_must eval "check_prop_source $destsub '$userprop:origsub' '$userval' local" log_must eval "check_prop_missing $dest '$userprop:new'" # Cleanup log_must zfs destroy -r -f $orig log_must zfs destroy -r -f $dest # # 3.7 Verify we can't receive a send stream overriding or excluding properties # invalid for the dataset type unless the stream it's recursive, in which # case only the appropriate properties are set on the destination. # log_must zfs create -V 128K -s $orig log_must zfs snapshot $orig@snap1 log_must eval "zfs send $orig@snap1 > $streamfile_full" log_mustnot eval "zfs receive -x atime $dest < $streamfile_full" log_mustnot eval "zfs receive -o atime=off $dest < $streamfile_full" log_must_busy zfs destroy -r -f $orig log_must zfs create $orig log_must zfs create -V 128K -s $origsub log_must zfs snapshot -r $orig@snap1 log_must eval "zfs send -R $orig@snap1 > $streamfile_repl" log_must eval "zfs receive -o atime=off $dest < $streamfile_repl" log_must eval "check_prop_source $dest type filesystem -" log_must eval "check_prop_source $dest atime off local" log_must eval "check_prop_source $destsub type volume -" log_must eval "check_prop_source $destsub atime - -" # Cleanup block_device_wait log_must_busy zfs destroy -r -f $orig log_must_busy zfs destroy -r -f $dest # # 3.8 Verify 'zfs recv -x|-o' works correctly when used in conjunction with -d # and -e options. # log_must zfs create -p $orig/1/2/3/4 log_must eval "zfs set copies=2 $orig" log_must eval "zfs set atime=on $orig" log_must eval "zfs set '$userprop:orig'='oldval' $orig" log_must zfs snapshot -r $orig@snap1 log_must eval "zfs send -R $orig/1/2@snap1 > $streamfile_repl" # Verify 'zfs recv -e' log_must zfs create $dest log_must eval "zfs receive -e -o copies=3 -x atime "\ "-o '$userprop:orig'='newval' $dest < $streamfile_repl" log_must datasetexists $dest/2/3/4 log_must eval "check_prop_source $dest/2 copies 3 local" log_must eval "check_prop_inherit $dest/2/3/4 copies $dest/2" log_must eval "check_prop_source $dest/2/3/4 atime on default" log_must eval "check_prop_source $dest/2 '$userprop:orig' 'newval' local" log_must eval "check_prop_inherit $dest/2/3/4 '$userprop:orig' $dest/2" log_must zfs destroy -r -f $dest # Verify 'zfs recv -d' log_must zfs create $dest typeset fs="$(echo $orig | awk -F'/' '{print $NF}')" log_must eval "zfs receive -d -o copies=3 -x atime "\ "-o '$userprop:orig'='newval' $dest < $streamfile_repl" log_must datasetexists $dest/$fs/1/2/3/4 log_must eval "check_prop_source $dest/$fs/1/2 copies 3 local" log_must eval "check_prop_inherit $dest/$fs/1/2/3/4 copies $dest/$fs/1/2" log_must eval "check_prop_source $dest/$fs/1/2/3/4 atime on default" log_must eval "check_prop_source $dest/$fs/1/2 '$userprop:orig' 'newval' local" log_must eval "check_prop_inherit $dest/$fs/1/2/3/4 '$userprop:orig' $dest/$fs/1/2" # We don't need to cleanup here log_pass "ZFS receive property override and exclude options passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_raw.ks0000644000000000000000000000007413612141514031653 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.639687928 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_raw.ksh0000755016037001603700000000560013612141514032024 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS should receive streams from raw sends. # # STRATEGY: # 1. Create an encrypted dataset # 2. Create a file and get its checksum # 3. Snapshot the dataset # 4. Attempt to receive a raw send stream as a child of an unencrypted dataset # 5. Verify the key is unavailable # 6. Attempt to load the key and mount the dataset # 7. Verify the checksum of the file is the same as the original # 8. Attempt to receive a raw send stream as a child of an encrypted dataset # 9. Verify the key is unavailable # 10. Attempt to load the key and mount the dataset # 11. Verify the checksum of the file is the same as the original # 12. Verify 'zfs receive -n' works with the raw stream # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 } log_onexit cleanup log_assert "ZFS should receive streams from raw sends" typeset passphrase="password" typeset snap="$TESTPOOL/$TESTFS1@snap" log_must eval "echo $passphrase | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1" log_must mkfile 1M /$TESTPOOL/$TESTFS1/$TESTFILE0 typeset checksum=$(md5digest /$TESTPOOL/$TESTFS1/$TESTFILE0) log_must zfs snapshot $snap log_note "Verify ZFS can receive a raw send stream from an encrypted dataset" log_must eval "zfs send -w $snap | zfs receive $TESTPOOL/$TESTFS2" keystatus=$(get_prop keystatus $TESTPOOL/$TESTFS2) [[ "$keystatus" == "unavailable" ]] || \ log_fail "Expected keystatus unavailable, got $keystatus" log_must eval "echo $passphrase | zfs mount -l $TESTPOOL/$TESTFS2" typeset cksum1=$(md5digest /$TESTPOOL/$TESTFS2/$TESTFILE0) [[ "$cksum1" == "$checksum" ]] || \ log_fail "Checksums differ ($cksum1 != $checksum)" log_must eval "zfs send -w $snap | zfs receive $TESTPOOL/$TESTFS1/c1" keystatus=$(get_prop keystatus $TESTPOOL/$TESTFS1/c1) [[ "$keystatus" == "unavailable" ]] || \ log_fail "Expected keystatus unavailable, got $keystatus" log_must eval "echo $passphrase | zfs mount -l $TESTPOOL/$TESTFS1/c1" typeset cksum2=$(md5digest /$TESTPOOL/$TESTFS1/c1/$TESTFILE0) [[ "$cksum2" == "$checksum" ]] || \ log_fail "Checksums differ ($cksum2 != $checksum)" log_must eval "zfs send -w $snap | zfs receive -n $TESTPOOL/$TESTFS3" log_pass "ZFS can receive streams from raw sends" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_015_po0000644000000000000000000000007413607166133031461 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.630687637 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_015_pos.ksh0000755016037001603700000000521513607166133032433 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2016, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Verify ZFS can receive custom properties on both filesystems and # snapshots from full and incremental streams. # # STRATEGY: # 1. Create a filesystem. # 2. Snapshot the filesystem. # 3. Set custom properties on both the fs and snapshots. # 4. Create different send streams with the properties. # 5. Receive the send streams and verify the properties. # verify_runnable "both" typeset streamfile_full=$TEST_BASE_DIR/streamfile_full.$$ typeset streamfile_incr=$TEST_BASE_DIR/streamfile_incr.$$ orig=$TESTPOOL/$TESTFS1 dest=$TESTPOOL/$TESTFS2 typeset user_prop=$(valid_user_property 8) typeset value=$(user_property_value 8) function cleanup { log_must rm $streamfile_full log_must rm $streamfile_incr log_must zfs destroy -rf $TESTPOOL/$TESTFS1 log_must zfs destroy -rf $TESTPOOL/$TESTFS2 } log_assert "ZFS can receive custom properties." log_onexit cleanup # 1. Create a filesystem. log_must zfs create $orig # 2. Snapshot the filesystem. log_must zfs snapshot $orig@snap1 log_must zfs snapshot $orig@snap2 log_must zfs snapshot $orig@snap3 # 3. Set custom properties on both the fs and snapshots. log_must eval "zfs set '$user_prop'='$value' $orig" log_must eval "zfs set '$user_prop:snap1'='$value:snap1' $orig@snap1" log_must eval "zfs set '$user_prop:snap2'='$value:snap2' $orig@snap2" log_must eval "zfs set '$user_prop:snap3'='$value:snap3' $orig@snap3" # 4. Create different send streams with the properties. log_must eval "zfs send -p $orig@snap1 > $streamfile_full" log_must eval "zfs send -p -I $orig@snap1 $orig@snap3 > $streamfile_incr" # 5. Receive the send streams and verify the properties. log_must eval "zfs recv $dest < $streamfile_full" log_must eval "check_user_prop $dest $user_prop '$value'" log_must eval "check_user_prop $dest@snap1 '$user_prop:snap1' '$value:snap1'" log_must eval "zfs recv $dest < $streamfile_incr" log_must eval "check_user_prop $dest@snap2 '$user_prop:snap2' '$value:snap2'" log_must eval "check_user_prop $dest@snap3 '$user_prop:snap3' '$value:snap3'" log_pass "ZFS can receive custom properties passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_from_e0000644000000000000000000000007213612141514031713 xustar000000000000000030 atime=1579730360.849765597 28 ctime=1579730477.6356878 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_from_encrypted.ksh0000755016037001603700000000476613612141514034267 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS should receive an unencrypted stream from an encrypted dataset # # STRATEGY: # 1. Create an unencrypted dataset # 2. Create an encrypted dataset # 3. Create and checksum a file on the encrypted dataset # 4. Snapshot the encrypted dataset # 5. Attempt to receive the snapshot into an unencrypted child # 6. Verify encryption is not enabled # 7. Verify the checksum of the file is the same as the original # 8. Attempt to receive the snapshot into an encrypted child # 9. Verify the checksum of the file is the same as the original # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 } log_onexit cleanup log_assert "ZFS should receive an unencrypted stream from an encrypted dataset" typeset passphrase="password" typeset snap="$TESTPOOL/$TESTFS2@snap" log_must zfs create $TESTPOOL/$TESTFS1 log_must eval "echo $passphrase | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS2" log_must mkfile 1M /$TESTPOOL/$TESTFS2/$TESTFILE0 typeset checksum=$(md5digest /$TESTPOOL/$TESTFS2/$TESTFILE0) log_must zfs snapshot $snap log_note "Verify ZFS can receive into an unencrypted child" log_must eval "zfs send $snap | zfs receive $TESTPOOL/$TESTFS1/c1" crypt=$(get_prop encryption $TESTPOOL/$TESTFS1/c1) [[ "$crypt" == "off" ]] || log_fail "Received unencrypted stream as encrypted" typeset cksum1=$(md5digest /$TESTPOOL/$TESTFS1/c1/$TESTFILE0) [[ "$cksum1" == "$checksum" ]] || \ log_fail "Checksums differ ($cksum1 != $checksum)" log_note "Verify ZFS can receive into an encrypted child" log_must eval "zfs send $snap | zfs receive $TESTPOOL/$TESTFS2/c1" typeset cksum2=$(md5digest /$TESTPOOL/$TESTFS2/c1/$TESTFILE0) [[ "$cksum2" == "$checksum" ]] || \ log_fail "Checksums differ ($cksum2 != $checksum)" log_pass "ZFS can receive an unencrypted stream from an encrypted dataset" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_009_ne0000644000000000000000000000007413607166133031450 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.616687189 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_009_neg.ksh0000755016037001603700000000601013607166133032400 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verify 'zfs receive' fails with bad options, missing argument or too many # arguments. # # STRATEGY: # 1. Set a array of illegal arguments # 2. Execute 'zfs receive' with illegal arguments # 3. Verify the command should be failed # verify_runnable "both" function cleanup { typeset ds if snapexists $snap; then log_must zfs destroy $snap fi for ds in $ctr1 $ctr2 $fs1; do if datasetexists $ds; then log_must zfs destroy -rf $ds fi done if [[ -d $TESTDIR2 ]]; then rm -rf $TESTDIR2 fi } log_assert "Verify 'zfs receive' fails with bad option, missing or too many arguments" log_onexit cleanup set -A badopts "v" "n" "F" "d" "-V" "-N" "-f" "-D" "-VNfD" "-vNFd" "-vnFD" "-dVnF" \ "-vvvNfd" "-blah" "-12345" "-?" "-*" "-%" set -A validopts "" "-v" "-n" "-F" "-vn" "-nF" "-vnF" "-vd" "-nd" "-Fd" "-vnFd" ctr1=$TESTPOOL/$TESTCTR1 ctr2=$TESTPOOL/$TESTCTR2 fs1=$TESTPOOL/$TESTFS1 fs2=$TESTPOOL/$TESTFS2 fs3=$TESTPOOL/$TESTFS3 snap=$TESTPOOL/$TESTFS@$TESTSNAP bkup=$TESTDIR2/bkup.$$ # Preparations for negative testing for ctr in $ctr1 $ctr2; do log_must zfs create $ctr done if [[ -d $TESTDIR2 ]]; then rm -rf $TESTDIR2 fi log_must zfs create -o mountpoint=$TESTDIR2 $fs1 log_must zfs snapshot $snap log_must eval "zfs send $snap > $bkup" #Testing zfs receive fails with input from terminal log_mustnot eval "zfs recv $fs3 /dev/null 2>&1 if (( $? != 0 )); then log_mustnot eval "zfs recv ${validopts[i]} $fs2 $fs3 < $bkup" else log_mustnot eval "zfs recv ${validopts[i]} $ctr1 $ctr2 < $bkup" fi (( i += 1 )) done # Testing with bad options i=0 while (( i < ${#badopts[*]} )) do log_mustnot eval "zfs recv ${badopts[i]} $ctr1 < $bkup" log_mustnot eval "zfs recv ${badopts[i]} $fs2 < $bkup" (( i = i + 1 )) done log_pass "'zfs receive' as expected with bad options, missing or too many arguments." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_003_po0000644000000000000000000000007413607166133031456 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.602686739 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_003_pos.ksh0000755016037001603700000000531013607166133032424 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs recv -F' to force rollback. # # STRATEGY: # 1. Create pool and fs. # 2. Create some files in fs and take a snapshot1. # 3. Create another files in fs and take snapshot2. # 4. Create incremental stream from snapshot1 to snapshot2. # 5. fs rollback to snapshot1 and modify fs. # 6. Verify 'zfs recv -F' can force rollback. # verify_runnable "both" function cleanup { for snap in $snap2 $snap1; do datasetexists $snap && log_must zfs destroy -rf $snap done for file in $ibackup $mntpnt/file1 $mntpnt/file2; do [[ -f $file ]] && log_must rm -f $file done } log_assert "'zfs recv -F' to force rollback." log_onexit cleanup ibackup=$TEST_BASE_DIR/ibackup.$$ fs=$TESTPOOL/$TESTFS; snap1=$fs@snap1; snap2=$fs@snap2 mntpnt=$(get_prop mountpoint $fs) || log_fail "get_prop mountpoint $fs" log_must mkfile 10m $mntpnt/file1 log_must zfs snapshot $snap1 log_must mkfile 10m $mntpnt/file2 log_must zfs snapshot $snap2 log_must eval "zfs send -i $snap1 $snap2 > $ibackup" log_note "Verify 'zfs receive' succeed, if filesystem was not modified." log_must zfs rollback -r $snap1 log_must eval "zfs receive $fs < $ibackup" if [[ ! -f $mntpnt/file1 || ! -f $mntpnt/file2 ]]; then log_fail "'zfs receive' failed." fi log_note "Verify 'zfs receive' failed if filesystem was modified." log_must zfs rollback -r $snap1 log_must rm -rf $mntpnt/file1 log_mustnot eval "zfs receive $fs < $ibackup" # Verify 'zfs receive -F' to force rollback whatever filesystem was modified. log_must zfs rollback -r $snap1 log_must rm -rf $mntpnt/file1 log_must eval "zfs receive -F $fs < $ibackup" if [[ ! -f $mntpnt/file1 || ! -f $mntpnt/file2 ]]; then log_fail "'zfs receive -F' failed." fi log_pass "'zfs recv -F' to force rollback passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_008_po0000644000000000000000000000007413607166133031463 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.614687125 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_008_pos.ksh0000755016037001603700000001013113607166133032426 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verifying 'zfs receive -vn [] # and zfs receive -vn -d ' # # STRATEGY: # 1. Fill in fs with some data # 2. Create full and incremental send stream # 3. run zfs receive with -v option # 3. Dryrun zfs receive with -vn option # 3. Dryrun zfs receive with -vn -d option # 4. Verify receive output and result # function cleanup { for dset in $rst_snap $rst_fs $orig_snap; do if datasetexists $dset; then log_must zfs destroy -fr $dset fi done for file in $fbackup $mnt_file $tmp_out; do if [[ -f $file ]]; then log_must rm -f $file fi done if datasetexists $TESTPOOL/$TESTFS; then log_must zfs destroy -Rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS fi } verify_runnable "both" log_assert "Verifying 'zfs receive -vn [] " \ "and zfs receive -vn -d '" log_onexit cleanup typeset datasets="$TESTPOOL/$TESTFS $TESTPOOL" typeset rst_fs=$TESTPOOL/$TESTFS/$TESTFS typeset fbackup=$TEST_BASE_DIR/fbackup.$$ typeset tmp_out=$TEST_BASE_DIR/tmpout.$$ for orig_fs in $datasets ; do typeset rst_snap=$rst_fs@snap typeset orig_snap=$orig_fs@snap typeset verb_msg="receiving full stream of ${orig_snap} into ${rst_snap}" typeset dryrun_msg="would receive full stream of ${orig_snap} into ${rst_snap}" if ! datasetexists $orig_fs; then log_must zfs create $orig_fs fi typeset mntpnt mntpnt=$(get_prop mountpoint $orig_fs) if [[ $? -ne 0 ]] ; then log_fail "get_prop mountpoint $orig_fs failed" fi typeset mnt_file=$mntpnt/file1 log_must mkfile 100m $mnt_file log_must zfs snapshot $orig_snap log_must eval "zfs send $orig_snap > $fbackup" for opt in "-v" "-vn"; do if datasetexists $rst_fs; then log_must zfs destroy -fr $rst_fs fi log_note "Check ZFS receive $opt []" log_must eval "zfs receive $opt $rst_fs < $fbackup > $tmp_out 2>&1" if [[ $opt == "-v" ]]; then log_must eval "grep \"$verb_msg\" $tmp_out >/dev/null 2>&1" if ! datasetexists $rst_snap; then log_fail "dataset was not received, even though the"\ " -v flag was used." fi else log_must eval "grep \"$dryrun_msg\" $tmp_out >/dev/null 2>&1" if datasetexists $rst_snap; then log_fail "dataset was received, even though the -nv"\ " flag was used." fi fi done log_note "Check ZFS receive -vn -d " if ! datasetexists $rst_fs; then log_must zfs create $rst_fs fi log_must eval "zfs receive -vn -d -F $rst_fs <$fbackup >$tmp_out 2>&1" typeset relative_path="" if [[ ${orig_fs} == *"/"* ]]; then relative_path=${orig_fs#*/} fi typeset leaf_fs=${rst_fs}/${relative_path} leaf_fs=${leaf_fs%/} rst_snap=${leaf_fs}@snap dryrun_msg="would receive full stream of ${orig_snap} into ${rst_snap}" log_must eval "grep \"$dryrun_msg\" $tmp_out > /dev/null 2>&1" if datasetexists $rst_snap; then log_fail "dataset $rst_snap should not existed." fi log_must zfs destroy -Rf $rst_fs cleanup done log_pass "zfs receive -vn [] and " \ "zfs receive -vn -d ' succeed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_to_enc0000644000000000000000000000007413607166133031725 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.637687864 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_to_encrypted.ksh0000755016037001603700000000454313607166133033747 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS should receive to an encrypted child dataset. # # STRATEGY: # 1. Snapshot the default dataset # 2. Create an encrypted dataset # 3. Attempt to receive a stream to an encrypted child # 4. Attempt to receive a stream with properties to an encrypted child # 5. Attempt to receive a replication stream to an encrypted child # 6. Unmount and unload the encrypted dataset keys # 7. Attempt to receive a snapshot stream to an encrypted child # verify_runnable "both" function cleanup { snapexists $snap && log_must_busy zfs destroy -f $snap datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "ZFS should receive encrypted filesystems into child dataset" typeset passphrase="password" typeset snap="$TESTPOOL/$TESTFS@snap" typeset testfile="testfile" log_must zfs snapshot $snap log_must eval "echo $passphrase | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1" log_note "Verifying ZFS will receive to an encrypted child" log_must eval "zfs send $snap | zfs receive $TESTPOOL/$TESTFS1/c1" log_note "Verifying 'send -p' will receive to an encrypted child" log_must eval "zfs send -p $snap | zfs receive $TESTPOOL/$TESTFS1/c2" log_must test "$(get_prop 'encryption' $TESTPOOL/$TESTFS1/c2)" == "off" log_note "Verifying 'send -R' will receive to an encrypted child" log_must eval "zfs send -R $snap | zfs receive $TESTPOOL/$TESTFS1/c3" log_must test "$(get_prop 'encryption' $TESTPOOL/$TESTFS1/c3)" == "off" log_note "Verifying ZFS will not receive to an encrypted child when the" \ "parent key is unloaded" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_mustnot eval "zfs send $snap | zfs receive $TESTPOOL/$TESTFS1/c4" log_pass "ZFS can receive encrypted filesystems into child dataset" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_002_po0000644000000000000000000000007413607166133031455 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.600686675 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_002_pos.ksh0000755016037001603700000000531613607166133032431 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verifying 'zfs receive ' works. # # STRATEGY: # 1. Fill in volume with some data # 2. Create full and incremental send stream # 3. Restore the send stream # 4. Verify the restoring results. # verify_runnable "global" function cleanup { typeset -i i=0 typeset ds while (( i < ${#orig_snap[*]} )); do snapexists ${rst_snap[$i]} && \ log_must zfs destroy -f ${rst_snap[$i]} snapexists ${orig_snap[$i]} && \ log_must zfs destroy -f ${orig_snap[$i]} [[ -e ${bkup[$i]} ]] && \ log_must rm -rf ${bkup[$i]} (( i = i + 1 )) done for ds in $rst_vol $rst_root; do datasetexists $ds && \ log_must zfs destroy -Rf $ds done } log_assert "Verifying 'zfs receive ' works." log_onexit cleanup set -A orig_snap "$TESTPOOL/$TESTVOL@init_snap" "$TESTPOOL/$TESTVOL@inc_snap" set -A bkup "$TEST_BASE_DIR/fullbkup" "$TEST_BASE_DIR/incbkup" rst_root=$TESTPOOL/rst_ctr rst_vol=$rst_root/$TESTVOL set -A rst_snap "${rst_vol}@init_snap" "${rst_vol}@inc_snap" # # Preparations for testing # log_must zfs create $rst_root [[ ! -d $TESTDIR1 ]] && \ log_must mkdir -p $TESTDIR1 log_must zfs set mountpoint=$TESTDIR1 $rst_root typeset -i i=0 while (( i < ${#orig_snap[*]} )); do log_must zfs snapshot ${orig_snap[$i]} if (( i < 1 )); then log_must eval "zfs send ${orig_snap[$i]} > ${bkup[$i]}" else log_must eval "zfs send -i ${orig_snap[(( i - 1 ))]} \ ${orig_snap[$i]} > ${bkup[$i]}" fi (( i = i + 1 )) done i=0 while (( i < ${#bkup[*]} )); do log_must eval "zfs receive $rst_vol < ${bkup[$i]}" ! datasetexists $rst_vol || ! snapexists ${rst_snap[$i]} && \ log_fail "Restoring volume fails." (( i = i + 1 )) done log_pass "Verifying 'zfs receive ' succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_012_po0000644000000000000000000000007413607166133031456 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.623687413 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_012_pos.ksh0000755016037001603700000000445513607166133032435 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2016, OmniTI Computer Consulting, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # refquota, like regular quota, is loosely enforced. A dataset # can exceed its refquota by one transaction. This loose enforcement # used to cause problems upon receiving a datastream where its # refquota is slightly exceeded. This test confirms that we can # successfully receive a slightly over refquota stream. # # STRATEGY: # 1. Create a filesystem. # 2. Set a refquota. # 3. Snapshot the filesystem. # 4. Send a replication stream to a new filesystem. # 5. On the original filesystem, fill it up to its quota. # 6. Snapshot the original filesystem again. # 7. Send an incremental stream to the same new filesystem. # verify_runnable "both" typeset streamfile=$TEST_BASE_DIR/streamfile.$$ function cleanup { log_must rm $streamfile log_must zfs destroy -rf $TESTPOOL/$TESTFS1 log_must zfs destroy -rf $TESTPOOL/$TESTFS2 } log_assert "The allowable slight refquota overage is properly sent-and-" \ "received." log_onexit cleanup orig=$TESTPOOL/$TESTFS1 dest=$TESTPOOL/$TESTFS2 # 1. Create a filesystem. log_must zfs create $orig origdir=$(get_prop mountpoint $orig) # 2. Set a refquota. log_must zfs set refquota=50M $orig # 3. Snapshot the filesystem. log_must zfs snapshot $orig@1 # 4. Send a replication stream to a new filesystem. log_must eval "zfs send -R $orig@1 > $streamfile" log_must eval "zfs recv $dest < $streamfile" # 5. On the original filesystem, fill it up to its quota. cat < /dev/urandom > $origdir/fill-it-up # 6. Snapshot the original filesystem again. log_must zfs snapshot $orig@2 # 7. Send an incremental stream to the same new filesystem. log_must eval "zfs send -I 1 -R $orig@2 > $streamfile" log_must eval "zfs recv $dest < $streamfile" log_pass "Verified receiving a slightly-over-refquota stream succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003030172 xustar000000000000000030 mtime=1579730435.541336256 30 atime=1579730455.140965542 30 ctime=1579730477.648688216 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/Makefile.in0000664016037001603700000006040113612143003030177 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_receive DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_receive ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_receive_001_pos.ksh \ zfs_receive_002_pos.ksh \ zfs_receive_003_pos.ksh \ zfs_receive_004_neg.ksh \ zfs_receive_005_neg.ksh \ zfs_receive_006_pos.ksh \ zfs_receive_007_neg.ksh \ zfs_receive_008_pos.ksh \ zfs_receive_009_neg.ksh \ zfs_receive_010_pos.ksh \ zfs_receive_011_pos.ksh \ zfs_receive_012_pos.ksh \ zfs_receive_013_pos.ksh \ zfs_receive_014_pos.ksh \ zfs_receive_015_pos.ksh \ receive-o-x_props_override.ksh \ zfs_receive_from_encrypted.ksh \ zfs_receive_to_encrypted.ksh \ zfs_receive_raw.ksh \ zfs_receive_raw_incremental.ksh \ zfs_receive_-e.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_receive/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_receive/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_014_po0000644000000000000000000000007413607166133031460 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.628687573 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_014_pos.ksh0000755016037001603700000000756313607166133032442 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2016, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Verify ZFS successfully receive and restore properties. # # STRATEGY: # 1. Create a filesystem. # 2. Create a full stream with properties and receive it. # 3. Create also an incremental stream without some properties and a truncated # stream. # 4. Fail to receive the truncated incremental stream and verify previously # received properties are still present. # 5. Receive the complete incremental send stream and verify that sent # properties are successfully received. # verify_runnable "both" orig=$TESTPOOL/$TESTFS1 dest=$TESTPOOL/$TESTFS2 typeset userprop=$(valid_user_property 8) typeset userval=$(user_property_value 8) typeset streamfile_full=$TESTDIR/streamfile_full.$$ typeset streamfile_incr=$TESTDIR/streamfile_incr.$$ typeset streamfile_trun=$TESTDIR/streamfile_trun.$$ function cleanup { log_must rm $streamfile_full log_must rm $streamfile_incr log_must rm $streamfile_trun log_must zfs destroy -rf $orig log_must zfs destroy -rf $dest } # # Verify property $2 is set from source $4 on dataset $1 and has value $3. # # $1 checked dataset # $2 user property # $3 property value # $4 source # function check_prop_source { typeset dataset=$1 typeset prop=$2 typeset value=$3 typeset source=$4 typeset chk_value=$(get_prop "$prop" "$dataset") typeset chk_source=$(get_source "$prop" "$dataset") if [[ "$chk_value" != "$value" || \ "$chk_source" != "$4" ]] then return 1 else return 0 fi } log_assert "ZFS successfully receive and restore properties." log_onexit cleanup # 1. Create a filesystem. log_must eval "zfs create $orig" mntpnt=$(get_prop mountpoint $orig) # 2. Create a full stream with properties and receive it. log_must eval "zfs set compression='gzip-1' $orig" log_must eval "zfs set '$userprop'='$userval' $orig" log_must eval "zfs snapshot $orig@snap1" log_must eval "zfs send -p $orig@snap1 > $streamfile_full" log_must eval "zfs recv $dest < $streamfile_full" log_must eval "check_prop_source $dest compression 'gzip-1' received" log_must eval "check_prop_source $dest '$userprop' '$userval' received" # 3. Create also an incremental stream without some properties and a truncated # stream. log_must eval "zfs set compression='gzip-2' $orig" log_must eval "zfs inherit '$userprop' $orig" log_must eval "dd if=/dev/urandom of=$mntpnt/file bs=1024k count=10" log_must eval "zfs snapshot $orig@snap2" log_must eval "zfs send -p -i $orig@snap1 $orig@snap2 > $streamfile_incr" log_must eval "dd if=$streamfile_incr of=$streamfile_trun bs=1024k count=9" log_must eval "zfs snapshot $orig@snap3" log_must eval "zfs send -p -i $orig@snap1 $orig@snap3 > $streamfile_incr" # 4. Fail to receive the truncated incremental stream and verify previously # received properties are still present. log_mustnot eval "zfs recv -F $dest < $streamfile_trun" log_must eval "check_prop_source $dest compression 'gzip-1' received" log_must eval "check_prop_source $dest '$userprop' '$userval' received" # 5. Receive the complete incremental send stream and verify that sent # properties are successfully received. log_must eval "zfs recv -F $dest < $streamfile_incr" log_must eval "check_prop_source $dest compression 'gzip-2' received" log_must eval "check_prop_source $dest '$userprop' '-' '-'" log_pass "ZFS properties are successfully received and restored." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_raw_in0000644000000000000000000000007413612141514031725 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.641687992 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_raw_incremental.ksh0000755016037001603700000000605113612141514034406 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS should receive streams from raw incremental sends. # # STRATEGY: # 1. Create an encrypted dataset # 2. Snapshot the dataset # 3. Create a file and get its checksum # 4. Snapshot the dataset # 5. Attempt to receive a raw send stream of the first snapshot # 6. Change the passphrase required to unlock the original filesystem # 7. Attempt and intentionally fail to receive the second snapshot # 8. Verify that the required passphrase hasn't changed on the receive side # 9. Attempt a real raw incremental send stream of the second snapshot # 10. Attempt load the key and mount the dataset # 11. Verify the checksum of the file is the same as the original # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 [[ -f $ibackup ]] && log_must rm -f $ibackup [[ -f $ibackup_trunc ]] && log_must rm -f $ibackup_trunc } log_onexit cleanup log_assert "ZFS should receive streams from raw incremental sends" typeset ibackup="$TEST_BASE_DIR/ibackup.$$" typeset ibackup_trunc="$TEST_BASE_DIR/ibackup_trunc.$$" typeset passphrase="password" typeset passphrase2="password2" typeset snap1="$TESTPOOL/$TESTFS1@snap1" typeset snap2="$TESTPOOL/$TESTFS1@snap2" log_must eval "echo $passphrase | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1" log_must zfs snapshot $snap1 log_must mkfile 1M /$TESTPOOL/$TESTFS1/$TESTFILE0 typeset checksum=$(md5digest /$TESTPOOL/$TESTFS1/$TESTFILE0) log_must zfs snapshot $snap2 log_must eval "zfs send -w $snap1 | zfs receive $TESTPOOL/$TESTFS2" log_must eval "echo $passphrase2 | zfs change-key $TESTPOOL/$TESTFS1" log_must eval "zfs send -w -i $snap1 $snap2 > $ibackup" typeset trunc_size=$(stat -c %s $ibackup) trunc_size=$(expr $trunc_size - 64) log_must cp $ibackup $ibackup_trunc log_must truncate -s $trunc_size $ibackup_trunc log_mustnot eval "zfs receive $TESTPOOL/$TESTFS2 < $ibackup_trunc" log_mustnot eval "echo $passphrase2 | zfs load-key $TESTPOOL/$TESTFS2" log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS2" log_must zfs unload-key $TESTPOOL/$TESTFS2 log_must eval "zfs receive $TESTPOOL/$TESTFS2 < $ibackup" log_must eval "echo $passphrase2 | zfs mount -l $TESTPOOL/$TESTFS2" typeset cksum1=$(md5digest /$TESTPOOL/$TESTFS2/$TESTFILE0) [[ "$cksum1" == "$checksum" ]] || \ log_fail "Checksums differ ($cksum1 != $checksum)" log_pass "ZFS can receive streams from raw incremental sends" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/PaxHeaders.151519/zfs_receive_011_po0000644000000000000000000000007413607166133031455 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.621687349 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_receive/zfs_receive_011_pos.ksh0000755016037001603700000000455013607166133032430 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2015, OmniTI Computer Consulting, Inc. All rights reserved. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # refquota should be sent-and-received, but it should not interfere with # the receipt of intermediate snapshots that may have preceded the # final snapshot, where the refquota should hold. # # STRATEGY: # 1. Create a filesystem. # 2. Create two equal-sized large files. # 3. Snapshot the filesystem. # 4. Remove one of the two large files. # 5. Create a refquota larger than one file, but smaller than both. # 6. Snapshot the filesystem again. # 7. Send a replication stream of the second snapshot to a new filesystem. # # verify_runnable "both" typeset streamfile=$TEST_BASE_DIR/streamfile.$$ function cleanup { log_must rm $streamfile log_must zfs destroy -rf $TESTPOOL/$TESTFS1 log_must zfs destroy -rf $TESTPOOL/$TESTFS2 } log_assert "refquota is properly sent-and-received, regardless of any " \ "intermediate snapshots sent by a replication stream." log_onexit cleanup orig=$TESTPOOL/$TESTFS1 dest=$TESTPOOL/$TESTFS2 # 1. Create a filesystem. log_must zfs create $orig origdir=$(get_prop mountpoint $orig) # 2. Create two equal-sized large files. log_must mkfile 5M $origdir/file1 log_must mkfile 5M $origdir/file2 log_must sync # 3. Snapshot the filesystem. log_must zfs snapshot $orig@1 # 4. Remove one of the two large files. log_must rm $origdir/file2 log_must sync # 5. Create a refquota larger than one file, but smaller than both. log_must zfs set refquota=8M $orig # 6. Snapshot the filesystem again. log_must zfs snapshot $orig@2 # 7. Send a replication stream of the second snapshot to a new filesystem. log_must eval "zfs send -R $orig@2 > $streamfile" log_must eval "zfs recv $dest < $streamfile" log_pass "refquota is properly sent-and-received, regardless of any " \ "intermediate snapshots sent by a replication stream." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_unload-key0000644000000000000000000000013213612143056026506 xustar000000000000000030 mtime=1579730478.387711944 30 atime=1579730489.090055581 30 ctime=1579730478.387711944 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/0000775016037001603700000000000013612143056026567 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/PaxHeaders.151519/zfs_unload-key_0000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.383711816 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/zfs_unload-key_recursive.ksh0000755016037001603700000000413113607166133034324 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs unload-key -r' should recursively unload keys. # # STRATEGY: # 1. Create a parent encrypted dataset # 2. Create a sibling encrypted dataset # 3. Create a child dataset as an encryption root # 4. Unmount all datasets # 5. Attempt to unload all dataset keys under parent # 6. Verify parent and child have their keys unloaded # 7. Verify sibling has its key loaded # 8. Attempt to mount all datasets # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs unload-key -r' should recursively unload keys" log_must eval "echo $PASSPHRASE > /$TESTPOOL/pkey" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must zfs create -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1/child log_must eval "echo $PASSPHRASE1 | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS2" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL/$TESTFS2 log_must zfs unload-key -r $TESTPOOL/$TESTFS1 log_must key_unavailable $TESTPOOL/$TESTFS1 log_must key_unavailable $TESTPOOL/$TESTFS1/child log_must key_available $TESTPOOL/$TESTFS2 log_mustnot zfs mount $TESTPOOL/$TESTFS1 log_mustnot zfs mount $TESTPOOL/$TESTFS1/child log_must zfs mount $TESTPOOL/$TESTFS2 log_pass "'zfs unload-key -r' recursively unloads keys" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133030630 xustar000000000000000030 atime=1579730436.042352342 29 ctime=1579730478.38571188 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/Makefile.am0000644016037001603700000000033013607166133030622 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_unload-key dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_unload-key.ksh \ zfs_unload-key_all.ksh \ zfs_unload-key_recursive.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/PaxHeaders.151519/zfs_unload-key.0000644000000000000000000000007413607166133031530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.379711688 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/zfs_unload-key.ksh0000755016037001603700000000364113607166133032242 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs unload-key' should only unload the key of an unmounted dataset. # # STRATEGY: # 1. Attempt to unload the default dataset's key # 2. Unmount the dataset # 3. Attempt to unload the default dataset's key # 4. Create an encrypted dataset # 5. Attempt to unload the dataset's key # 6. Verify the key is loaded # 7. Unmount the dataset # 8. Attempt to unload the dataset's key # 9. Verify the key is not loaded # 10. Attempt to unload the dataset's key # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs unload-key' should unload the key for an unmounted" \ "encrypted dataset" log_mustnot zfs unload-key $TESTPOOL/$TESTFS log_must zfs unmount $TESTPOOL/$TESTFS log_mustnot zfs unload-key $TESTPOOL/$TESTFS log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_mustnot zfs unload-key $TESTPOOL/$TESTFS1 log_must key_available $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must key_unavailable $TESTPOOL/$TESTFS1 log_mustnot zfs unload-key $TESTPOOL/$TESTFS1 log_pass "'zfs unload-key' unloads the key for an unmounted encrypted dataset" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030444 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.374711527 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/setup.ksh0000755016037001603700000000173713607166133030454 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030733 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.376711592 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/cleanup.ksh0000755016037001603700000000171013607166133030732 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/PaxHeaders.151519/zfs_unload-key_0000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.381711752 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/zfs_unload-key_all.ksh0000755016037001603700000000436213607166133033073 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs unload-key -a' should unload keys for all datasets. # # STRATEGY: # 1. Create an encrypted filesystem, encrypted child dataset, an encrypted # zvol, and an encrypted pool # 2. Unmount all datasets # 3. Attempt to unload all dataset keys # 4. Verify each dataset has its key unloaded # 5. Attempt to mount each dataset # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/zvol && log_must zfs destroy $TESTPOOL/zvol poolexists $TESTPOOL1 && log_must destroy_pool $TESTPOOL1 } log_onexit cleanup log_assert "'zfs unload-key -a' should unload keys for all datasets" log_must eval "echo $PASSPHRASE1 > /$TESTPOOL/pkey" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must zfs create $TESTPOOL/$TESTFS1/child log_must zfs create -V 64M -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/zvol typeset DISK2="$(echo $DISKS | awk '{ print $2}')" log_must zpool create -O encryption=on -O keyformat=passphrase \ -O keylocation=file:///$TESTPOOL/pkey $TESTPOOL1 $DISK2 log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL1 log_must zfs unload-key -a log_must key_unavailable $TESTPOOL/$TESTFS1 log_must key_unavailable $TESTPOOL/$TESTFS1/child log_must key_unavailable $TESTPOOL/zvol log_must key_unavailable $TESTPOOL1 log_mustnot zfs mount $TESTPOOL log_mustnot zfs mount $TESTPOOL/zvol log_mustnot zfs mount $TESTPOOL/$TESTFS1 log_pass "'zfs unload-key -a' unloads keys for all datasets" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030621 xustar000000000000000030 mtime=1579730436.077353465 30 atime=1579730455.443975271 30 ctime=1579730478.387711944 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/Makefile.in0000664016037001603700000005742413612143004030641 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_unload-key DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_unload-key ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_unload-key.ksh \ zfs_unload-key_all.ksh \ zfs_unload-key_recursive.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_unload-key/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_send0000644000000000000000000000013213612143055025366 xustar000000000000000030 mtime=1579730477.999699487 30 atime=1579730489.090055581 30 ctime=1579730477.999699487 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/0000775016037001603700000000000013612143055025447 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_004_neg.ksh0000644000000000000000000000007413612141513031203 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.979698844 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_004_neg.ksh0000755016037001603700000000557413612141513031216 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib # # DESCRIPTION: # Verify 'zfs send' fails with malformed parameters. # # STRATEGY: # 1. Define malformed parameters in array # 2. Feed the parameters to 'zfs send' # 3. Verify the result # verify_runnable "both" function cleanup { typeset snap f for snap in $snap1 $snap2 $snap3; do snapexists $snap && \ log_must zfs destroy -f $snap done for f in $tmpfile1 $tmpfile2; do if [[ -e $f ]]; then rm -f $f fi done } fs=$TESTPOOL/$TESTFS snap1=$fs@snap1 snap2=$fs@snap2 snap3=$fs@snap3 set -A badargs \ "" "$TESTPOOL" "$TESTFS" "$fs" "$fs@nonexistent_snap" "?" \ "$snap1/blah" "$snap1@blah" "-i" "-x" "-i $fs" \ "-x $snap1 $snap2" "-i $snap1" \ "-i $snap2 $snap1" "$snap1 $snap2" "-i $snap1 $snap2 $snap3" \ "-ii $snap1 $snap2" "-iii $snap1 $snap2" " -i $snap2 $snap1/blah" \ "-i $snap2/blah $snap1" \ "-i $snap2/blah $snap1/blah" \ "-i $snap1 blah@blah" \ "-i blah@blah $snap1" \ "-i $snap1 ${snap2##*@}" "-i $snap1 @${snap2##*@}" \ "-i ${snap1##*@} ${snap2##*@}" "-i @${snap1##*@} @${snap2##*@}" \ "-i ${snap1##*@} $snap2/blah" "-i @${snap1##*@} $snap2/blah" \ "-i @@${snap1##*@} $snap2" "-i $snap1 -i $snap1 $snap2" \ "-i snap1 snap2" "-i $snap1 snap2" \ "-i $snap1 $snap2 -i $snap1 $snap2" \ "-i snap1 $snap2 -i snap1 $snap2" log_assert "Verify that invalid parameters to 'zfs send' are caught." log_onexit cleanup log_must zfs snapshot $snap1 tmpfile1=$TESTDIR/testfile1.$$ log_must touch $tmpfile1 log_must zfs snapshot $snap2 tmpfile2=$TESTDIR/testfile2.$$ log_must touch $tmpfile2 log_must zfs snapshot $snap3 typeset -i i=0 while (( i < ${#badargs[*]} )) do log_mustnot eval "zfs send ${badargs[i]} >/dev/null" (( i = i + 1 )) done #Testing zfs send fails by send backup stream to terminal for arg in "$snap1" "-i $snap1 $snap2"; do log_mustnot eval "zfs send $arg >/dev/console" done log_pass "Invalid parameters to 'zfs send' are caught as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_002_pos.ksh0000644000000000000000000000007413607166133031242 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.975698715 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_002_pos.ksh0000755016037001603700000000676313607166133031256 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_send/zfs_send.cfg # # DESCRIPTION: # Verify 'zfs send' can generate valid streams with a property setup. # # STRATEGY: # 1. Setup property for filesystem # 2. Fill in some data into filesystem # 3. Create a full send streams # 4. Receive the send stream # 5. Verify the receive result # verify_runnable "both" function cleanup { snapexists $snap && \ log_must zfs destroy $snap datasetexists $ctr && \ log_must zfs destroy -r $ctr [[ -e $origfile ]] && \ log_must rm -f $origfile [[ -e $stream ]] && \ log_must rm -f $stream } function do_testing # { typeset property=$1 typeset prop_val=$2 log_must zfs set $property=$prop_val $fs file_write -o create -f $origfile -b $BLOCK_SIZE -c $WRITE_COUNT log_must zfs snapshot $snap zfs send $snap > $stream (( $? != 0 )) && \ log_fail "'zfs send' fails to create send streams." zfs receive -d $ctr <$stream (( $? != 0 )) && \ log_fail "'zfs receive' fails to receive send streams." #verify receive result ! datasetexists $rstfs && \ log_fail "'zfs receive' fails to restore $rstfs" ! snapexists $rstfssnap && \ log_fail "'zfs receive' fails to restore $rstfssnap" if [[ ! -e $rstfile ]] || [[ ! -e $rstsnapfile ]]; then log_fail " Data lost after receiving stream" fi compare_cksum $origfile $rstfile compare_cksum $origsnapfile $rstsnapfile #Destroy datasets and stream for next testing log_must zfs destroy $snap if is_global_zone ; then log_must zfs destroy -r $rstfs else log_must zfs destroy -r $ds_path fi log_must rm -f $stream } log_assert "Verify 'zfs send' generates valid streams with a property setup" log_onexit cleanup fs=$TESTPOOL/$TESTFS snap=$fs@$TESTSNAP ctr=$TESTPOOL/$TESTCTR if is_global_zone; then rstfs=$ctr/$TESTFS else ds_path=$ctr/${ZONE_CTR}0 rstfs=$ds_path/$TESTFS fi rstfssnap=$rstfs@$TESTSNAP snapdir=".zfs/snapshot/$TESTSNAP" origfile=$TESTDIR/$TESTFILE1 rstfile=/$rstfs/$TESTFILE1 origsnapfile=$TESTDIR/$snapdir/$TESTFILE1 rstsnapfile=/$rstfs/$snapdir/$TESTFILE1 stream=$TEST_BASE_DIR/streamfile.$$ set -A props "compression" "checksum" "recordsize" set -A propval "on lzjb" "on fletcher2 fletcher4 sha256" \ "512 1k 4k 8k 16k 32k 64k 128k" #Create a dataset to receive the send stream log_must zfs create $ctr typeset -i i=0 while (( i < ${#props[*]} )) do for value in ${propval[i]} do do_testing ${props[i]} $value done (( i = i + 1 )) done log_pass "'zfs send' generates streams with a property setup as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_007_pos.ksh0000644000000000000000000000007413607166147031254 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.986699069 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_007_pos.ksh0000755016037001603700000000521413607166147031256 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify 'zfs send' drills holes appropriately when files are replaced # # STRATEGY: # 1. Create dataset # 2. Write block 0 in a bunch of files # 3. Snapshot the dataset # 4. Remove all the files and rewrite some files with just block 1 # 5. Snapshot the dataset # 6. Send both snapshots and receive them locally # 7. diff the received dataset and the old datasets. # 8. Repeat steps 1-7 above with pool that never had hole birth enabled. # verify_runnable "both" function cleanup { zfs destroy -rf $TESTPOOL/fs zfs destroy -rf $TESTPOOL/recvfs rm $streamfile rm $vdev zpool destroy tmp_pool } log_assert "Verify that 'zfs send' drills appropriate holes" log_onexit cleanup streamfile=$(mktemp $TESTDIR/file.XXXXXX) vdev=$(mktemp $TEST_BASE_DIR/file.XXXXXX) test_pool () { POOL=$1 log_must zfs create -o recordsize=512 $POOL/fs mntpnt=$(get_prop mountpoint "$POOL/fs") log_must dd if=/dev/urandom of=${mntpnt}/file bs=512 count=1 2>/dev/null object=$(ls -i $mntpnt | awk '{print $1}') log_must zfs snapshot $POOL/fs@a while true; do log_must find $mntpnt/ -type f -delete sync log_must mkfiles "$mntpnt/" 4000 sync # check if we started reusing objects object=$(ls -i $mntpnt | sort -n | awk -v object=$object \ '{if ($1 <= object) {exit 1}} END {print $1}') if [[ $? -ne 0 ]]; then break fi done dd if=/dev/urandom of=${mntpnt}/$FILE bs=512 count=1 seek=1 2>/dev/null log_must zfs snapshot $POOL/fs@b log_must eval "zfs send $POOL/fs@a > $streamfile" cat $streamfile | log_must zfs receive $POOL/recvfs log_must eval "zfs send -i @a $POOL/fs@b > $streamfile" cat $streamfile | log_must zfs receive $POOL/recvfs recv_mntpnt=$(get_prop mountpoint "$POOL/recvfs") log_must diff -r $mntpnt $recv_mntpnt log_must zfs destroy -rf $POOL/fs log_must zfs destroy -rf $POOL/recvfs } test_pool $TESTPOOL log_must truncate --size=1G $vdev log_must zpool create -o version=1 tmp_pool $vdev test_pool tmp_pool log_must zpool destroy tmp_pool log_must zpool create -d tmp_pool $vdev test_pool tmp_pool log_must zpool destroy tmp_pool log_pass "'zfs send' drills appropriate holes" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_001_pos.ksh0000644000000000000000000000007413612141522031230 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.973698651 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_001_pos.ksh0000755016037001603700000000700313612141522031230 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/cli_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_send/zfs_send.cfg # # DESCRIPTION: # Verify 'zfs send' can create valid send streams as expected. # # STRATEGY: # 1. Fill in fs with some data # 2. Create a full send streams with the fs # 3. Receive the send stream and verify the data integrity # 4. Fill in fs with some new data # 5. Create an incremental send stream with the fs # 6. Receive the incremental send stream and verify the data integrity. # verify_runnable "both" function cleanup { for snap in $init_snap $inc_snap $rst_snap $rst_inc_snap; do snapexists $snap && \ log_must zfs destroy -f $snap done datasetexists $rst_root && \ log_must zfs destroy -Rf $rst_root for file in $full_bkup $inc_bkup \ $init_data $inc_data do [[ -e $file ]] && \ log_must rm -f $file done [[ -d $TESTDIR1 ]] && \ log_must rm -rf $TESTDIR1 } log_assert "Verify 'zfs send' can create valid send streams as expected." log_onexit cleanup init_snap=$TESTPOOL/$TESTFS@init_snap inc_snap=$TESTPOOL/$TESTFS@inc_snap full_bkup=$TEST_BASE_DIR/fullbkup.$$ inc_bkup=$TEST_BASE_DIR/incbkup.$$ init_data=$TESTDIR/$TESTFILE1 inc_data=$TESTDIR/$TESTFILE2 orig_sum="" rst_sum="" rst_root=$TESTPOOL/rst_ctr rst_snap=$rst_root/$TESTFS@init_snap rst_inc_snap=$rst_root/$TESTFS@inc_snap rst_data=$TESTDIR1/$TESTFS/$TESTFILE1 rst_inc_data=$TESTDIR1/$TESTFS/$TESTFILE2 log_note "Verify 'zfs send' can create full send stream." #Pre-paration log_must zfs create $rst_root [[ ! -d $TESTDIR1 ]] && \ log_must mkdir -p $TESTDIR1 log_must zfs set mountpoint=$TESTDIR1 $rst_root file_write -o create -f $init_data -b $BLOCK_SIZE -c $WRITE_COUNT log_must zfs snapshot $init_snap zfs send $init_snap > $full_bkup (( $? != 0 )) && \ log_fail "'zfs send' fails to create full send" log_note "Verify the send stream is valid to receive." log_must zfs receive $rst_snap <$full_bkup receive_check $rst_snap ${rst_snap%%@*} compare_cksum $init_data $rst_data log_note "Verify 'zfs send -i' can create incremental send stream." file_write -o create -f $inc_data -b $BLOCK_SIZE -c $WRITE_COUNT -d 0 log_must zfs snapshot $inc_snap zfs send -i $init_snap $inc_snap > $inc_bkup (( $? != 0 )) && \ log_fail "'zfs send -i' fails to create incremental send" log_note "Verify the incremental send stream is valid to receive." log_must zfs rollback $rst_snap log_must zfs receive $rst_inc_snap <$inc_bkup receive_check $rst_inc_snap compare_cksum $inc_data $rst_inc_data log_pass "Verifying 'zfs receive' succeed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133027512 xustar000000000000000030 atime=1579730435.770343608 30 ctime=1579730477.997699421 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/Makefile.am0000644016037001603700000000064613607166133027515 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_send dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_send_001_pos.ksh \ zfs_send_002_pos.ksh \ zfs_send_003_pos.ksh \ zfs_send_004_neg.ksh \ zfs_send_005_pos.ksh \ zfs_send_006_pos.ksh \ zfs_send_007_pos.ksh \ zfs_send_encrypted.ksh \ zfs_send_raw.ksh \ zfs_send_sparse.ksh \ zfs_send-b.ksh dist_pkgdata_DATA = \ zfs_send.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027325 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.969698523 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/setup.ksh0000755016037001603700000000173713607166133027335 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.971698587 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/cleanup.ksh0000755016037001603700000000177513607166133027626 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib poolexists $TESTPOOL1 && \ destroy_pool $TESTPOOL1 default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_encrypted.ks0000644000000000000000000000007413607166133031705 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.988699133 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_encrypted.ksh0000755016037001603700000000411313607166133032054 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017, Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS should perform unencrypted sends of encrypted datasets, unless the '-p' # or '-R' options are specified. # # STRATEGY: # 1. Create an encrypted dataset # 6. Create a child encryption root # 2. Snapshot the dataset # 3. Attempt a send # 4. Attempt a send with properties # 5. Attempt a replication send # 7. Unmount the parent and unload its key # 8. Attempt a send of the parent dataset # 9. Attempt a send of the child encryption root # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "ZFS should perform unencrypted sends of encrypted datasets, " \ "unless the '-p' or '-R' options are specified" typeset passphrase="password" typeset passphrase1="password1" typeset snap="$TESTPOOL/$TESTFS1@snap" log_must eval "echo $passphrase | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1" log_must eval "echo $passphrase1 | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1/child" log_must zfs snapshot -r $snap log_must eval "zfs send $snap > /dev/null" log_mustnot eval "zfs send -p $snap > /dev/null" log_mustnot eval "zfs send -R $snap > /dev/null" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_mustnot eval "zfs send $snap > /dev/null" log_must eval "zfs send $TESTPOOL/$TESTFS1/child@snap > /dev/null" log_pass "ZFS performs unencrypted sends of encrypted datasets, unless the" \ "'-p' or '-R' options are specified" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send.cfg0000644000000000000000000000007413607166133027752 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.967698459 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send.cfg0000644016037001603700000000175413607166133027756 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export BLOCK_SIZE=512 export WRITE_COUNT=8 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_raw.ksh0000644000000000000000000000007413607166133030651 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.990699197 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_raw.ksh0000755016037001603700000000421513607166133030653 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017, Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # ZFS should perform raw sends of datasets. # # STRATEGY: # 1. Create an encrypted dataset # 2. Snapshot the default dataset and the encrypted dataset # 3. Attempt a raw send of both datasets # 4. Attempt a raw send with properties of both datasets # 5. Attempt a raw replication send of both datasets # 6. Unmount and unload the encrypted dataset key # 7. Attempt a raw send of the encrypted dataset # verify_runnable "both" function cleanup { snapexists $snap && \ log_must zfs destroy $snap datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "ZFS should perform raw sends of datasets" typeset passphrase="password" typeset snap="$TESTPOOL/$TESTFS@snap" typeset snap1="$TESTPOOL/$TESTFS1@snap" log_must eval "echo $passphrase | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1" log_must zfs snapshot $snap log_must zfs snapshot $snap1 log_must eval "zfs send -w $snap > /dev/null" log_must eval "zfs send -w $snap1 > /dev/null" log_note "Verify ZFS can perform raw sends with properties" log_must eval "zfs send -wp $snap > /dev/null" log_must eval "zfs send -wp $snap1 > /dev/null" log_note "Verify ZFS can perform raw replication sends" log_must eval "zfs send -wR $snap > /dev/null" log_must eval "zfs send -wR $snap1 > /dev/null" log_note "Verify ZFS can perform a raw send of an encrypted datasets with" \ "its key unloaded" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must eval "zfs send -w $snap1 > /dev/null" log_pass "ZFS performs raw sends of datasets" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_005_pos.ksh0000644000000000000000000000007413607166133031245 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.981698909 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_005_pos.ksh0000755016037001603700000000345013607166133031247 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs send -R' can send from read-only imported pool. It needs to # detect that the pool is read-only and not try to place holds on # datasets being sent. # # STRATEGY: # 1. Create a recursive snapshot on the whole pool. # 2. 'zfs send -R' the recursive snapshots. # verify_runnable "both" function cleanup { poolexists $TESTPOOL && log_must_busy zpool export $TESTPOOL log_must zpool import $TESTPOOL datasetexists $TESTPOOL@snap && \ log_must zfs destroy -r $TESTPOOL@snap } log_assert "'zfs send -R' can send from read-only pools" log_onexit cleanup log_must zfs snapshot -r $TESTPOOL@snap log_must zpool export $TESTPOOL log_must zpool import -o readonly=on $TESTPOOL log_must eval "zfs send -R $TESTPOOL@snap >/dev/null" log_pass "'zfs send -R' can send from read-only pools" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send-b.ksh0000644000000000000000000000007413607166147030224 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.995699357 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send-b.ksh0000755016037001603700000000731313607166147030230 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # 'zfs send -b' should works as expected. # # STRATEGY: # 1. Create a source dataset and set some properties # 2. Verify command line options interact with '-b' correctly # 3. Send the dataset and its properties to a new "backup" destination # 4. Set some properties on the new "backup" dataset # 5. Restore the "backup" dataset to a new destination # 6. Verify only original (received) properties are sent from "backup" # verify_runnable "both" function cleanup { for ds in "$SENDFS" "$BACKUP" "$RESTORE"; do datasetexists $ds && log_must zfs destroy -r $ds done } log_assert "'zfs send -b' should work as expected." log_onexit cleanup SENDFS="$TESTPOOL/sendfs" BACKUP="$TESTPOOL/backup" RESTORE="$TESTPOOL/restore" # 1. Create a source dataset and set some properties log_must zfs create $SENDFS log_must zfs snapshot "$SENDFS@s1" log_must zfs bookmark "$SENDFS@s1" "$SENDFS#bm" log_must zfs snapshot "$SENDFS@s2" log_must zfs set "compression=gzip" $SENDFS log_must zfs set "org.zfsonlinux:prop=val" $SENDFS log_must zfs set "org.zfsonlinux:snapprop=val" "$SENDFS@s1" # 2. Verify command line options interact with '-b' correctly typeset opts=("" "p" "Rp" "cew" "nv" "D" "DLPRcenpvw") for opt in ${opts[@]}; do log_must eval "zfs send -b$opt $SENDFS@s1 > /dev/null" log_must eval "zfs send -b$opt -i $SENDFS@s1 $SENDFS@s2 > /dev/null" log_must eval "zfs send -b$opt -I $SENDFS@s1 $SENDFS@s2 > /dev/null" done for opt in ${opts[@]}; do log_mustnot eval "zfs send -b$opt $SENDFS > /dev/null" log_mustnot eval "zfs send -b$opt $SENDFS#bm > /dev/null" log_mustnot eval "zfs send -b$opt -i $SENDFS#bm $SENDFS@s2 > /dev/null" done # Do 3..6 in a loop to verify various combination of "zfs send" options typeset opts=("" "p" "R" "pR" "cew") for opt in ${opts[@]}; do # 3. Send the dataset and its properties to a new "backup" destination # NOTE: only need to send properties (-p) here log_must eval "zfs send -p $SENDFS@s1 | zfs recv $BACKUP" # 4. Set some properties on the new "backup" dataset # NOTE: override "received" values and set some new properties as well log_must zfs set "compression=lz4" $BACKUP log_must zfs set "exec=off" $BACKUP log_must zfs set "org.zfsonlinux:prop=newval" $BACKUP log_must zfs set "org.zfsonlinux:newprop=newval" $BACKUP log_must zfs set "org.zfsonlinux:snapprop=newval" "$BACKUP@s1" log_must zfs set "org.zfsonlinux:newsnapprop=newval" "$BACKUP@s1" # 5. Restore the "backup" dataset to a new destination log_must eval "zfs send -b$opt $BACKUP@s1 | zfs recv $RESTORE" # 6. Verify only original (received) properties are sent from "backup" log_must eval "check_prop_source $RESTORE compression gzip received" log_must eval "check_prop_source $RESTORE org.zfsonlinux:prop val received" log_must eval "check_prop_source $RESTORE@s1 org.zfsonlinux:snapprop val received" log_must eval "check_prop_source $RESTORE exec on default" log_must eval "check_prop_missing $RESTORE org.zfsonlinux:newprop" log_must eval "check_prop_missing $RESTORE@s1 org.zfsonlinux:newsnapprop" # cleanup log_must zfs destroy -r $BACKUP log_must zfs destroy -r $RESTORE done log_pass "'zfs send -b' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_003_pos.ksh0000644000000000000000000000007413607166133031243 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.977698779 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_003_pos.ksh0000755016037001603700000000345113607166133031246 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs send -i' can deal with abbreviated snapshot name. # # STRATEGY: # 1. Create pool, fs and two snapshots. # 2. Make sure 'zfs send -i' support abbreviated snapshot name. # verify_runnable "both" function cleanup { datasetexists $snap1 && log_must zfs destroy $snap1 datasetexists $snap2 && log_must zfs destroy $snap2 } log_assert "'zfs send -i' can deal with abbreviated snapshot name." log_onexit cleanup snap1=$TESTPOOL/$TESTFS@snap1; snap2=$TESTPOOL/$TESTFS@snap2 set -A args "$snap1 $snap2" \ "${snap1##*@} $snap2" "@${snap1##*@} $snap2" log_must zfs snapshot $snap1 log_must zfs snapshot $snap2 typeset -i i=0 while (( i < ${#args[*]} )); do log_must eval "zfs send -i ${args[i]} > /dev/null" (( i += 1 )) done log_pass "'zfs send -i' deal with abbreviated snapshot name passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_sparse.ksh0000644000000000000000000000007413607166147031362 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.993699293 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_sparse.ksh0000755016037001603700000000461513607166147031370 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs send' should be able to send (big) sparse files correctly. # # STRATEGY: # 1. Create sparse files of various size # 2. Snapshot and send these sparse files # 3. Verify these files are received correctly and we don't trigger any issue # like the one described in https://github.com/zfsonlinux/zfs/pull/6760 # verify_runnable "both" function cleanup { datasetexists $SENDFS && log_must zfs destroy -r $SENDFS datasetexists $RECVFS && log_must zfs destroy -r $RECVFS } # # Write 1 random byte at $offset of "source" file in $sendfs dataset # Snapshot and send $sendfs dataset to $recvfs # Compare the received file with its source # function write_compare_files # { typeset sendfs="$1" typeset recvfs="$2" typeset offset="$3" # create source filesystem log_must zfs create $sendfs # write sparse file sendfile="$(get_prop mountpoint $sendfs)/data.bin" log_must dd if=/dev/urandom of=$sendfile bs=1 count=1 seek=$offset # send/receive the file log_must zfs snapshot $sendfs@snap log_must eval "zfs send $sendfs@snap | zfs receive $recvfs" # compare sparse files recvfile="$(get_prop mountpoint $recvfs)/data.bin" log_must cmp $sendfile $recvfile $offset $offset sendsz=$(stat -c '%s' $sendfile) recvsz=$(stat -c '%s' $recvfile) if [[ $sendsz -ne $recvsz ]]; then log_fail "$sendfile ($sendsz) and $recvfile ($recvsz) differ." fi # cleanup log_must zfs destroy -r $sendfs log_must zfs destroy -r $recvfs } log_assert "'zfs send' should be able to send (big) sparse files correctly." log_onexit cleanup SENDFS="$TESTPOOL/sendfs" RECVFS="$TESTPOOL/recvfs" OFF_T_MAX="$(echo '2 ^ 40 * 8 - 1' | bc)" for i in {1..60}; do offset=$(echo "2 ^ $i" | bc) [[ is_32bit ]] && [[ $offset -ge $OFF_T_MAX ]] && continue; write_compare_files $SENDFS $RECVFS $offset done log_pass "'zfs send' sends (big) sparse files correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143003027500 xustar000000000000000029 mtime=1579730435.80834483 30 atime=1579730455.292970423 30 ctime=1579730477.999699487 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/Makefile.in0000664016037001603700000006173313612143003027517 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_send DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_send ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_send_001_pos.ksh \ zfs_send_002_pos.ksh \ zfs_send_003_pos.ksh \ zfs_send_004_neg.ksh \ zfs_send_005_pos.ksh \ zfs_send_006_pos.ksh \ zfs_send_007_pos.ksh \ zfs_send_encrypted.ksh \ zfs_send_raw.ksh \ zfs_send_sparse.ksh \ zfs_send-b.ksh dist_pkgdata_DATA = \ zfs_send.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_send/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_send/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/PaxHeaders.151519/zfs_send_006_pos.ksh0000644000000000000000000000007413612141517031241 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.984699005 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_006_pos.ksh0000755016037001603700000001420313612141517031241 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify 'zfs send' can generate valid streams with different options # # STRATEGY: # 1. Create datasets # 2. Write some data to the datasets # 3. Create a full send streams # 4. Receive the send stream # 5. Do a dry run with different options and verify the generated size # estimate against the received stream # verify_runnable "both" function cleanup { for ds in $datasets; do destroy_dataset $ds "-rf" done } function cal_percentage { typeset value=$1 return=$(echo "$PERCENT * $value" | bc) return=$(echo "$return / 100" | bc) echo $return } function get_estimate_size { typeset snapshot=$1 typeset option=$2 typeset base_snapshot=${3:-""} if [[ -z $3 ]]; then typeset total_size=$(zfs send $option $snapshot 2>&1 | tail -1) else typeset total_size=$(zfs send $option $base_snapshot $snapshot \ 2>&1 | tail -1) fi total_size=$(echo "$total_size" | awk '{print $NF}') if [[ $options != *"P"* ]]; then total_size=${total_size%M} total_size=$(echo "$total_size * $block_count" | bc) fi echo $total_size } function verify_size_estimates { typeset options=$1 typeset file_size=$2 typeset refer_diff=$(echo "$refer_size - $estimate_size" | bc) refer_diff=$(echo "$refer_diff / 1" | bc) refer_diff=$(echo "$refer_diff" | nawk '{print ($1 < 0) ? ($1 * -1): $1'}) typeset file_diff=$(echo "$file_size - $estimate_size" | bc) file_diff=$(echo "$file_diff / 1" | bc) file_diff=$(echo "$file_diff" | nawk '{print ($1 < 0) ? ($1 * -1):$1'}) typeset expected_diff=$(cal_percentage $refer_size) [[ -z $refer_diff && -z $file_diff && -z $expected_diff ]] && \ log_fail "zfs send $options failed" [[ $refer_diff -le $expected_diff && \ $file_diff -le $expected_diff ]] || \ log_fail "zfs send $options gives wrong size estimates" } log_assert "Verify 'zfs send -nvP' generates valid stream estimates" log_onexit cleanup typeset -l block_count=0 typeset -l block_size typeset -i PERCENT=1 ((block_count=1024*1024)) # create dataset log_must zfs create $TESTPOOL/$TESTFS1 # create multiple snapshot for the dataset with data for block_size in 64 128 256; do log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS1/file$block_size \ bs=1M count=$block_size log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$block_size log_must zfs bookmark $TESTPOOL/$TESTFS1@snap$block_size \ "$TESTPOOL/$TESTFS1#bmark$block_size" done full_snapshot="$TESTPOOL/$TESTFS1@snap64" incremental_snapshot="$TESTPOOL/$TESTFS1@snap256" full_bookmark="$TESTPOOL/$TESTFS1#bmark64" incremental_bookmark="$TESTPOOL/$TESTFS1#bmark256" full_size=$(zfs send $full_snapshot 2>&1 | wc -c) incremental_size=$(zfs send $incremental_snapshot 2>&1 | wc -c) incremental_send=$(zfs send -i $full_snapshot $incremental_snapshot 2>&1 | wc -c) log_note "verify zfs send -nv" options="-nv" refer_size=$(get_prop refer $full_snapshot) estimate_size=$(get_estimate_size $full_snapshot $options) log_must verify_size_estimates $options $full_size log_note "verify zfs send -Pnv" options="-Pnv" estimate_size=$(get_estimate_size $full_snapshot $options) log_must verify_size_estimates $options $full_size log_note "verify zfs send -nv for multiple snapshot send" options="-nv" refer_size=$(get_prop refer $incremental_snapshot) estimate_size=$(get_estimate_size $incremental_snapshot $options) log_must verify_size_estimates $options $incremental_size log_note "verify zfs send -vPn for multiple snapshot send" options="-vPn" estimate_size=$(get_estimate_size $incremental_snapshot $options) log_must verify_size_estimates $options $incremental_size log_note "verify zfs send -inv for incremental send" options="-nvi" refer_size=$(get_prop refer $incremental_snapshot) deduct_size=$(get_prop refer $full_snapshot) refer_size=$(echo "$refer_size - $deduct_size" | bc) estimate_size=$(get_estimate_size $incremental_snapshot $options $full_snapshot) log_must verify_size_estimates $options $incremental_send estimate_size=$(get_estimate_size $incremental_snapshot $options $full_bookmark) log_must verify_size_estimates $options $incremental_send log_note "verify zfs send -ivPn for incremental send" options="-vPni" estimate_size=$(get_estimate_size $incremental_snapshot $options $full_snapshot) log_must verify_size_estimates $options $incremental_send estimate_size=$(get_estimate_size $incremental_snapshot $options $full_bookmark) log_must verify_size_estimates $options $incremental_send log_must zfs destroy -r $TESTPOOL/$TESTFS1 #setup_recursive_send datasets="$TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1/$TESTFS2 $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3" # create nested datasets log_must zfs create -p $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3 # verify dataset creation for ds in $datasets; do datasetexists $ds || log_fail "Create $ds dataset fail." done for ds in $datasets; do log_must dd if=/dev/urandom of=/$ds/file64 \ bs=1M count=64 done # create recursive nested snapshot log_must zfs snapshot -r $TESTPOOL/$TESTFS1@snap64 for ds in $datasets; do datasetexists $ds@snap64 || log_fail "Create $ds@snap64 snapshot fail." done recursive_size=$(zfs send -R $full_snapshot 2>&1 | wc -c) log_note "verify zfs send -Rnv for recursive send" options="-Rnv" refer_size=$(get_prop refer $full_snapshot) refer_size=$(echo "$refer_size * 3" | bc) estimate_size=$(get_estimate_size $full_snapshot $options) log_must verify_size_estimates $options $recursive_size log_note "verify zfs send -RvPn for recursive send" options="-RvPn" estimate_size=$(get_estimate_size $full_snapshot $options) log_must verify_size_estimates $options $recursive_size log_pass "'zfs send' prints the correct size estimates using '-n' and '-P' options." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_rename0000644000000000000000000000013213612143055025704 xustar000000000000000030 mtime=1579730477.801693129 30 atime=1579730489.090055581 30 ctime=1579730477.801693129 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/0000775016037001603700000000000013612143055025765 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_011_pos.0000644000000000000000000000007413607166133031370 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.782692519 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_011_pos.ksh0000755016037001603700000000415013607166133032076 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib # # DESCRIPTION # 'zfs rename -p' should work as expected # # STRATEGY: # 1. Make sure the upper level of $newdataset does not exist # 2. Make sure without -p option, 'zfs rename' will fail # 3. With -p option, rename works # verify_runnable "both" function additional_cleanup { if datasetexists $TESTPOOL/notexist ; then log_must zfs destroy -Rf $TESTPOOL/notexist fi if datasetexists $TESTPOOL/$TESTFS ; then log_must zfs destroy -Rf $TESTPOOL/$TESTFS fi log_must zfs create $TESTPOOL/$TESTFS if is_global_zone ; then if datasetexists $TESTPOOL/$TESTVOL ; then log_must zfs destroy -Rf $TESTPOOL/$TESTVOL fi log_must zfs create -V $VOLSIZE $TESTPOOL/$TESTVOL fi } log_onexit additional_cleanup log_assert "'zfs rename -p' should work as expected" log_must verify_opt_p_ops "rename" "fs" "$TESTPOOL/$TESTFS" \ "$TESTPOOL/notexist/new/$TESTFS1" if is_global_zone; then log_must verify_opt_p_ops "rename" "vol" "$TESTPOOL/$TESTVOL" \ "$TESTPOOL/notexist/new/$TESTVOL1" fi log_pass "'zfs rename -p' should work as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_to_encry0000644000000000000000000000007413607166133031752 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.794692903 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_to_encrypted.ksh0000755016037001603700000000305013607166133033411 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs rename' should be able to move an unencrypted dataset to a child # of an encrypted dataset # # STRATEGY: # 1. Create an encrypted dataset # 2. Rename the default dataset to a child of the encrypted dataset # 3. Confirm the child dataset doesn't have any encryption properties # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 } log_onexit cleanup log_assert "'zfs rename' should allow renaming an unencrypted dataset to a" \ "child of an encrypted dataset" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS2" log_must zfs rename $TESTPOOL/$TESTFS $TESTPOOL/$TESTFS2/$TESTFS log_must test "$(get_prop 'encryption' $TESTPOOL/$TESTFS2/$TESTFS)" == "off" log_pass "'zfs rename' allows renaming an unencrypted dataset to a child" \ "of an encrypted dataset" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_004_neg.0000644000000000000000000000007413607166133031342 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.766692005 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_004_neg.ksh0000755016037001603700000000742213607166133032055 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib # # DESCRIPTION: # 'zfs rename' should fail when this dataset was changed to an existed # dataset name or datasets are of different types. # For example, a filesystem cannot be renamed as a volume. # # STRATEGY: # 1. Given a file system, snapshot and volume. # 2. Rename each dataset object to a different type. # 3. Verify that only the original name is displayed by zfs list. # verify_runnable "both" # # This array is a list of pairs: # item i: original type # item i + 1: new type # set -A bad_dataset $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTCTR1 \ $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTCTR/$TESTFS1 \ $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1/$TESTFS1 \ $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS@snapshot \ $TESTPOOL/$TESTCTR1 $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTCTR1 $TESTPOOL/$TESTFS@snapshot \ $TESTPOOL/$TESTCTR1 $TESTPOOL/$TESTFS1 \ $TESTPOOL/$TESTCTR1 $TESTPOOL/$TESTCTR/$TESTFS1 \ $TESTPOOL/$TESTCTR/$TESTFS1 $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTCTR/$TESTFS1 $TESTPOOL/$TESTFS@snapshot \ $TESTPOOL/$TESTCTR/$TESTFS1 $TESTPOOL/$TESTFS1 \ $TESTPOOL/$TESTCTR/$TESTFS1 $TESTPOOL/$TESTCTR1 \ $TESTPOOL/$TESTVOL $TESTPOOL/$TESTCTR1 \ $TESTPOOL/$TESTVOL $TESTPOOL/$TESTFS@snapshot \ $TESTPOOL/$TESTVOL $TESTPOOL/$TESTFS1 \ $TESTPOOL/$TESTVOL $TESTPOOL/$TESTCTR/$TESTFS1 \ $TESTPOOL/$TESTFS@snapshot $TESTPOOL/$TESTCTR1 \ $TESTPOOL/$TESTFS@snapshot $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTFS@snapshot $TESTPOOL/$TESTFS1 \ $TESTPOOL/$TESTFS@snapshot $TESTPOOL/$TESTCTR/$TESTFS1 \ $TESTPOOL/$TESTFS1 $TESTPOOL/${TESTFS1}%c \ $TESTPOOL/$TESTFS1 $TESTPOOL/${TESTFS1}%d \ $TESTPOOL/$TESTFS1 $TESTPOOL/${TESTFS1}%x \ $TESTPOOL/$TESTFS1 $TESTPOOL/${TESTFS1}%p \ $TESTPOOL/$TESTFS1 $TESTPOOL/${TESTFS1}%s \ $TESTPOOL/$TESTFS@snapshot $TESTPOOL/$TESTFS@snapshot/fs \ $TESTPOOL/$RECVFS/%recv $TESTPOOL/renamed.$$ # # cleanup defined in zfs_rename.kshlib # log_onexit cleanup log_assert "'zfs rename' should fail when datasets are of a different type." additional_setup typeset -i i=0 while ((i < ${#bad_dataset[*]} )); do log_mustnot zfs rename ${bad_dataset[i]} ${bad_dataset[((i + 1))]} log_must datasetexists ${bad_dataset[i]} log_mustnot zfs rename -p ${bad_dataset[i]} ${bad_dataset[((i + 1))]} log_must datasetexists ${bad_dataset[i]} ((i = i + 2)) done #verify 'rename -p' can not work with snapshots log_mustnot zfs rename -p $TESTPOOL/$TESTFS@snapshot \ $TESTPOOL/$TESTFS@snapshot2 log_must datasetexists $TESTPOOL/$TESTFS@snapshot log_mustnot zfs rename -p $TESTPOOL/$TESTFS@snapshot \ $TESTPOOL/$TESTFS/$TESTFS@snapshot2 log_must datasetexists $TESTPOOL/$TESTFS@snapshot log_pass "'zfs rename' fails as expected when given different dataset types." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_001_pos.0000644000000000000000000000007413607166133031367 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.759691781 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_001_pos.ksh0000755016037001603700000000617313607166133032104 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib # # DESCRIPTION: # 'zfs rename' should successfully rename valid datasets. # As a sub-assertion we check to ensure the datasets that can # be mounted are mounted. # # STRATEGY: # 1. Given a file system, snapshot and volume. # 2. Rename each dataset object to a new name. # 3. Verify that only the new name is displayed by zfs list. # 4. Verify mountable datasets are mounted. # ############################################################################### verify_runnable "both" set -A dataset "$TESTPOOL/$TESTFS@snapshot" "$TESTPOOL/$TESTFS1" \ "$TESTPOOL/$TESTCTR/$TESTFS1" "$TESTPOOL/$TESTCTR1" \ "$TESTPOOL/$TESTVOL" "$TESTPOOL/$TESTFS-clone" set -A mountable "$TESTPOOL/$TESTFS1-new" "$TESTPOOL/$TESTFS@snapshot-new" \ "$TESTPOOL/$TESTCTR/$TESTFS1-new" "$TESTPOOL/$TESTFS-clone-new" # # cleanup defined in zfs_rename.kshlib # log_onexit cleanup log_assert "'zfs rename' should successfully rename valid datasets" additional_setup typeset -i i=0 while (( i < ${#dataset[*]} )); do rename_dataset ${dataset[i]} ${dataset[i]}-new ((i = i + 1)) done log_note "Verify mountable datasets are mounted in their new namespace." typeset mtpt i=0 while (( i < ${#mountable[*]} )); do # Snapshot have no mountpoint if [[ ${mountable[i]} != *@* ]]; then log_must mounted ${mountable[i]} mtpt=$(get_prop mountpoint ${mountable[i]}) else mtpt=$(snapshot_mountpoint ${mountable[i]}) fi if ! cmp_data $DATA $mtpt/$TESTFILE0 ; then log_fail "$mtpt/$TESTFILE0 gets corrupted after rename operation." fi ((i = i + 1)) done #verify the data integrity in zvol if is_global_zone; then log_must eval "dd if=${VOL_R_PATH}-new of=$VOLDATA bs=$BS count=$CNT >/dev/null 2>&1" if ! cmp_data $VOLDATA $DATA ; then log_fail "$VOLDATA gets corrupted after rename operation." fi fi # rename back fs typeset -i i=0 while ((i < ${#dataset[*]} )); do if datasetexists ${dataset[i]}-new ; then log_must zfs rename ${dataset[i]}-new ${dataset[i]} fi ((i = i + 1)) done log_pass "'zfs rename' successfully renamed each dataset type." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_008_pos.0000644000000000000000000000007413607166133031376 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.775692293 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_008_pos.ksh0000755016037001603700000000421313607166133032104 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # zfs rename -r can rename snapshot recursively. # # STRATEGY: # 1. Create snapshot recursively. # 2. Rename snapshot recursively. # 3. Verify rename -r snapshot correctly. # verify_runnable "both" function cleanup { typeset -i i=0 while ((i < ${#datasets[@]})); do if datasetexists ${datasets[$i]}@snap ; then log_must zfs destroy ${datasets[$i]}@snap fi if datasetexists ${datasets[$i]}@snap-new ; then log_must zfs destroy ${datasets[$i]}@snap-new fi ((i += 1)) done } log_assert "zfs rename -r can rename snapshot recursively." log_onexit cleanup set -A datasets $TESTPOOL $TESTPOOL/$TESTCTR \ $TESTPOOL/$TESTCTR/$TESTFS1 $TESTPOOL/$TESTFS if is_global_zone; then datasets[${#datasets[@]}]=$TESTPOOL/$TESTVOL fi log_must zfs snapshot -r ${TESTPOOL}@snap typeset -i i=0 while ((i < ${#datasets[@]})); do log_must datasetexists ${datasets[$i]}@snap ((i += 1)) done log_must zfs rename -r ${TESTPOOL}@snap ${TESTPOOL}@snap-new i=0 while ((i < ${#datasets[@]})); do log_must datasetexists ${datasets[$i]}@snap-new ((i += 1)) done log_must zfs destroy -rf ${TESTPOOL}@snap-new log_pass "Verify zfs rename -r passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_002_pos.0000644000000000000000000000007413607166133031370 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.762691877 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_002_pos.ksh0000755016037001603700000000521513607166133032101 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib # # DESCRIPTION: # 'zfs rename' should successfully be capable of renaming # valid datasets back and forth multiple times. # # STRATEGY: # 1. Given a file system, snapshot and volume. # 2. Rename each dataset object to a new name. # 3. Rename each dataset back to its original name. # 4. Repeat steps 2 and 3 multiple times. # 5. Verify that the correct name is displayed by zfs list. # ############################################################################### verify_runnable "both" set -A dataset "$TESTPOOL/$TESTFS@snapshot" "$TESTPOOL/$TESTFS1" \ "$TESTPOOL/$TESTCTR/$TESTFS1" "$TESTPOOL/$TESTCTR1" \ "$TESTPOOL/$TESTVOL" "$TESTPOOL/$TESTFS-clone" # # cleanup defined in zfs_rename.kshlib # log_onexit cleanup log_assert "'zfs rename' should successfully rename valid datasets" additional_setup typeset -i i=0 typeset -i iters=10 while ((i < ${#dataset[*]} )); do j=0 while ((j < iters )); do rename_dataset ${dataset[i]} ${dataset[i]}-new rename_dataset ${dataset[i]}-new ${dataset[i]} ((j = j + 1)) done if [[ ${dataset[i]} == *@* ]]; then data=$(snapshot_mountpoint ${dataset[i]})/$TESTFILE0 elif [[ ${dataset[i]} == "$TESTPOOL/$TESTVOL" ]] && is_global_zone; then log_must eval "dd if=$VOL_R_PATH of=$VOLDATA bs=$BS count=$CNT >/dev/null 2>&1" data=$VOLDATA else data=$(get_prop mountpoint ${dataset[i]})/$TESTFILE0 fi if ! cmp_data $DATA $data; then log_fail "$data gets corrupted after $iters times rename operations." fi ((i = i + 1)) done log_pass "'zfs rename' renamed each dataset type multiple times as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030030 xustar000000000000000030 atime=1579730435.609338438 30 ctime=1579730477.798693033 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/Makefile.am0000644016037001603700000000121213607166133030021 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_rename dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_rename_001_pos.ksh \ zfs_rename_002_pos.ksh \ zfs_rename_003_pos.ksh \ zfs_rename_004_neg.ksh \ zfs_rename_005_neg.ksh \ zfs_rename_006_pos.ksh \ zfs_rename_007_pos.ksh \ zfs_rename_008_pos.ksh \ zfs_rename_009_neg.ksh \ zfs_rename_010_neg.ksh \ zfs_rename_011_pos.ksh \ zfs_rename_012_neg.ksh \ zfs_rename_013_pos.ksh \ zfs_rename_014_neg.ksh \ zfs_rename_encrypted_child.ksh \ zfs_rename_to_encrypted.ksh \ zfs_rename_mountpoint.ksh dist_pkgdata_DATA = \ zfs_rename.cfg \ zfs_rename.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename.cfg0000644000000000000000000000007313607166133030605 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730477.75069149 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename.cfg0000644016037001603700000000226413607166133030607 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export DATAFS=datafs.rename export DATA=$TESTDIR2/data.rename export IF=/dev/urandom export OF=$DATA export BS=512 export CNT=2048 export VOL_R_PATH=$ZVOL_RDEVDIR/$TESTPOOL/$TESTVOL export VOLDATA=$TESTDIR2/voldata.rename export RECVFS=recvfs zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027643 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.755691653 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/setup.ksh0000755016037001603700000000264013607166133027645 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib DISK=${DISKS%% *} default_setup_noexit "$DISK" "true" "true" if [[ -d $TESTDIR2 ]]; then rm -rf $TESTDIR2 if (( $? != 0 )); then log_unresolved Could not remove $TESTDIR2 fi fi log_must zfs create $TESTPOOL/$DATAFS log_must zfs set mountpoint=$TESTDIR2 $TESTPOOL/$DATAFS log_must eval "dd if=$IF of=$OF bs=$BS count=$CNT >/dev/null 2>&1" log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030132 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.757691717 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/cleanup.ksh0000755016037001603700000000226113607166133030133 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup_noexit if [[ -d $TESTDIR2 ]]; then rm -rf $TESTDIR2 if (( $? != 0 )); then log_unresolved Could not remove $TESTDIR2 fi fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_010_neg.0000644000000000000000000000007413607166133031337 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.780692455 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_010_neg.ksh0000755016037001603700000000370113607166133032046 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # The recursive flag -r can only be used for snapshots and not for # volumes/filesystems. # # STRATEGY: # 1. Loop pool, fs, container and volume. # 2. Verify none of them can be rename by rename -r. # verify_runnable "both" log_assert "The recursive flag -r can only be used for snapshots." set -A datasets $TESTPOOL $TESTPOOL/$TESTCTR \ $TESTPOOL/$TESTCTR/$TESTFS1 $TESTPOOL/$TESTFS if is_global_zone; then datasets[${#datasets[@]}]=$TESTPOOL/$TESTVOL fi for opts in "-r" "-r -p"; do typeset -i i=0 while ((i < ${#datasets[@]})); do log_mustnot zfs rename $opts ${datasets[$i]} \ ${datasets[$i]}-new # Check datasets, make sure none of them was renamed. typeset -i j=0 while ((j < ${#datasets[@]})); do if datasetexists ${datasets[$j]}-new ; then log_fail "${datasets[$j]}-new should not exists." fi ((j += 1)) done ((i += 1)) done done log_pass "The recursive flag -r can only be used for snapshots passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_014_neg.0000644000000000000000000000007413607166133031343 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.789692743 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_014_neg.ksh0000755016037001603700000000677513607166133032070 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # zfs rename should work on existing datasets that exceed # zfs_max_dataset_nesting (our nesting limit) except in the # scenario that we try to rename it to something deeper # than it already is. # # STRATEGY: # 1. Create a set of ZFS datasets within our nesting limit. # 2. Try renaming one of them on top of the other so its # children pass the limit - it should fail. # 3. Increase the nesting limit. # 4. Check that renaming a dataset on top of the other # cannot exceed the new nesting limit but can exceed # the old one. # 5. Bring back the old nesting limit so you can simulate # the scenario of existing datasets that exceed our # nesting limit. # 6. Make sure that 'zfs rename' can work only if we are # trying to keep existing datasets that exceed the limit # at the same nesting level or less. Making it even # deeper should not work. # verify_runnable "both" dsA01="a" dsA02="a/a" dsA49=$(printf 'a/%.0s' {1..48})"a" dsB01="b" dsB49=$(printf 'b/%.0s' {1..48})"b" dsC01="c" dsC16=$(printf 'c/%.0s' {1..15})"c" dsB16A=$(printf 'b/%.0s' {1..16})"a" dsB15A=$(printf 'b/%.0s' {1..15})"a" dsB15A47A=$(printf 'b/%.0s' {1..15})$(printf 'a/%.0s' {1..47})"a" dsB15A47C=$(printf 'b/%.0s' {1..15})$(printf 'a/%.0s' {1..47})"c" dsB15A40B=$(printf 'b/%.0s' {1..15})$(printf 'a/%.0s' {1..40})"b" dsB15A47B=$(printf 'b/%.0s' {1..15})$(printf 'a/%.0s' {1..47})"b" function nesting_cleanup { log_must zfs destroy -fR $TESTPOOL/$dsA01 log_must zfs destroy -fR $TESTPOOL/$dsB01 log_must zfs destroy -fR $TESTPOOL/$dsC01 # If the test fails after increasing the limit and # before resetting it, it will be left at the modified # value for the remaining tests. That's the reason # we reset it again here just in case. log_must set_tunable_impl zfs_max_dataset_nesting 50 Z zcommon } log_onexit nesting_cleanup log_must zfs create -p $TESTPOOL/$dsA49 log_must zfs create -p $TESTPOOL/$dsB49 log_must zfs create -p $TESTPOOL/$dsC16 log_mustnot zfs rename $TESTPOOL/$dsA02 $TESTPOOL/$dsB15A # extend limit log_must set_tunable_impl zfs_max_dataset_nesting 64 Z zcommon log_mustnot zfs rename $TESTPOOL/$dsA02 $TESTPOOL/$dsB16A log_must zfs rename $TESTPOOL/$dsA02 $TESTPOOL/$dsB15A # bring back old limit log_must set_tunable_impl zfs_max_dataset_nesting 50 Z zcommon log_mustnot zfs rename $TESTPOOL/$dsC01 $TESTPOOL/$dsB15A47C log_must zfs rename $TESTPOOL/$dsB15A47A $TESTPOOL/$dsB15A47B log_must zfs rename $TESTPOOL/$dsB15A47B $TESTPOOL/$dsB15A40B log_pass "Verify 'zfs rename' limits datasets so they don't pass " \ "the nesting limit. For existing ones that do, it should " \ "not allow them to grow anymore." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_encrypte0000644000000000000000000000007413607166133031761 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.791692807 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_encrypted_child.ksh0000755016037001603700000000474613607166133034067 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs rename' should not move an encrypted child dataset outside of its # encryption root. # # STRATEGY: # 1. Create two encryption roots, and a child and grandchild of the first # encryption root # 2. Attempt to rename the grandchild under an unencrypted parent # 3. Attempt to rename the grandchild under a different encrypted parent # 4. Attempt to rename the grandchild under the current parent # 5. Verify the encryption root of the dataset # 6. Attempt to rename the grandchild to a child # 7. Verify the encryption root of the dataset # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 datasetexists $TESTPOOL/$TESTFS3 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS3 } log_onexit cleanup log_assert "'zfs rename' should not move an encrypted child outside of its" \ "encryption root" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS2" log_must zfs create $TESTPOOL/$TESTFS2/child log_must zfs create $TESTPOOL/$TESTFS2/child/grandchild log_must eval "echo $PASSPHRASE1 | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS3" log_mustnot zfs rename $TESTPOOL/$TESTFS2/child/grandchild \ $TESTPOOL/grandchild log_mustnot zfs rename $TESTPOOL/$TESTFS2/child/grandchild \ $TESTPOOL/$TESTFS3/grandchild log_must zfs rename $TESTPOOL/$TESTFS2/child/grandchild \ $TESTPOOL/$TESTFS2/child/grandchild2 log_must verify_encryption_root $TESTPOOL/$TESTFS2/child/grandchild2 \ $TESTPOOL/$TESTFS2 log_must zfs rename $TESTPOOL/$TESTFS2/child/grandchild2 \ $TESTPOOL/$TESTFS2/grandchild2 log_must verify_encryption_root $TESTPOOL/$TESTFS2/grandchild2 \ $TESTPOOL/$TESTFS2 log_pass "'zfs rename' does not move an encrypted child outside of its" \ "encryption root" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_006_pos.0000644000000000000000000000007413607166133031374 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.771692165 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_006_pos.ksh0000755016037001603700000000465413607166133032113 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib # # DESCRIPTION: # 'zfs rename' can successfully rename a volume snapshot. # # STRATEGY: # 1. Create a snapshot of volume. # 2. Rename volume snapshot to a new one. # 3. Rename volume to a new one. # 4. Create a clone of the snapshot. # 5. Verify that the rename operations are successful and zfs list can # list them. # ############################################################################### verify_runnable "global" # # cleanup defined in zfs_rename.kshlib # log_onexit cleanup log_assert "'zfs rename' can successfully rename a volume snapshot." vol=$TESTPOOL/$TESTVOL snap=$TESTSNAP log_must eval "dd if=$DATA of=$VOL_R_PATH bs=$BS count=$CNT >/dev/null 2>&1" if ! snapexists $vol@$snap; then log_must zfs snapshot $vol@$snap fi rename_dataset $vol@$snap $vol@${snap}-new rename_dataset $vol ${vol}-new rename_dataset ${vol}-new@${snap}-new ${vol}-new@$snap rename_dataset ${vol}-new $vol clone=$TESTPOOL/${snap}_clone create_clone $vol@$snap $clone block_device_wait #verify data integrity for input in $VOL_R_PATH $ZVOL_RDEVDIR/$clone; do log_must eval "dd if=$input of=$VOLDATA bs=$BS count=$CNT >/dev/null 2>&1" if ! cmp_data $VOLDATA $DATA ; then log_fail "$input gets corrupted after rename operation." fi done destroy_clone $clone log_must zfs destroy $vol@$snap log_pass "'zfs rename' can rename volume snapshot as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_007_pos.0000644000000000000000000000007413607166133031375 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.773692229 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_007_pos.ksh0000755016037001603700000000754313607166133032114 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib # # DESCRIPTION: # Rename dataset, verify that the data haven't changed. # # STRATEGY: # 1. Create random data and copy to dataset. # 2. Perform renaming commands. # 3. Verify that the data haven't changed. # verify_runnable "both" function cleanup { if datasetexists $TESTPOOL/$TESTFS ; then log_must zfs destroy -Rf $TESTPOOL/$TESTFS fi log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS rm -f $SRC_FILE $DST_FILE } function target_obj { typeset dtst=$1 typeset obj typeset type=$(get_prop type $dtst) if [[ $type == "filesystem" ]]; then obj=$(get_prop mountpoint $dtst)/${SRC_FILE##*/} elif [[ $type == "volume" ]]; then obj=$ZVOL_DEVDIR/$dtst fi echo $obj } log_assert "Rename dataset, verify that the data haven't changed." log_onexit cleanup # Generate random data # BS=512 ; CNT=2048 SRC_FILE=$TESTDIR/srcfile.$$ DST_FILE=$TESTDIR/dstfile.$$ log_must dd if=/dev/urandom of=$SRC_FILE bs=$BS count=$CNT fs=$TESTPOOL/$TESTFS/fs.$$ fsclone=$TESTPOOL/$TESTFS/fsclone.$$ log_must zfs create $fs obj=$(target_obj $fs) log_must cp $SRC_FILE $obj snap=${fs}@snap.$$ log_must zfs snapshot $snap log_must zfs clone $snap $fsclone # Rename dataset & clone # log_must zfs rename $fs ${fs}-new log_must zfs rename $fsclone ${fsclone}-new # Compare source file and target file # obj=$(target_obj ${fs}-new) log_must diff $SRC_FILE $obj obj=$(target_obj ${fsclone}-new) log_must diff $SRC_FILE $obj # Rename snapshot and re-clone dataset # log_must zfs rename ${fs}-new $fs log_must zfs rename $snap ${snap}-new log_must zfs clone ${snap}-new $fsclone # Compare source file and target file # obj=$(target_obj $fsclone) log_must diff $SRC_FILE $obj if is_global_zone; then vol=$TESTPOOL/$TESTFS/vol.$$ ; volclone=$TESTPOOL/$TESTFS/volclone.$$ log_must zfs create -V 100M $vol block_device_wait obj=$(target_obj $vol) log_must dd if=$SRC_FILE of=$obj bs=$BS count=$CNT snap=${vol}@snap.$$ log_must zfs snapshot $snap log_must zfs clone $snap $volclone block_device_wait # Rename dataset & clone log_must zfs rename $vol ${vol}-new log_must zfs rename $volclone ${volclone}-new block_device_wait # Compare source file and target file obj=$(target_obj ${vol}-new) log_must dd if=$obj of=$DST_FILE bs=$BS count=$CNT log_must diff $SRC_FILE $DST_FILE obj=$(target_obj ${volclone}-new) log_must dd if=$obj of=$DST_FILE bs=$BS count=$CNT log_must diff $SRC_FILE $DST_FILE # Rename snapshot and re-clone dataset log_must zfs rename ${vol}-new $vol log_must zfs rename $snap ${snap}-new log_must zfs clone ${snap}-new $volclone block_device_wait # Compare source file and target file obj=$(target_obj $volclone) log_must dd if=$obj of=$DST_FILE bs=$BS count=$CNT log_must diff $SRC_FILE $DST_FILE fi log_pass "Rename dataset, the data haven't changed passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_003_pos.0000644000000000000000000000007413607166133031371 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.764691941 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_003_pos.ksh0000755016037001603700000000345013607166133032101 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs rename' can address the abbreviated snapshot name. # # STRATEGY: # 1. Create pool, fs and snap. # 2. Verify 'zfs rename' support the abbreviated snapshot name. # verify_runnable "both" function cleanup { datasetexists $snap && log_must zfs destroy $snap } log_assert "'zfs rename' can address the abbreviated snapshot name." log_onexit cleanup fs=$TESTPOOL/$TESTFS; snap=$fs@snap set -A newname "$fs@new-snap" "@new-snap" "new-snap" log_must zfs snapshot $snap log_must datasetexists $snap typeset -i i=0 while ((i < ${#newname[*]} )); do log_must zfs rename $snap ${newname[$i]} log_must datasetexists ${snap%%@*}@${newname[$i]##*@} log_must zfs rename ${snap%%@*}@${newname[$i]##*@} $snap ((i += 1)) done log_pass "'zfs rename' address the abbreviated snapshot name passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_012_neg.0000644000000000000000000000007413607166133031341 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.784692583 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_012_neg.ksh0000755016037001603700000000404513607166133032052 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs rename' should be failed with bad option, null target dataset, # too many datasets and long target dataset name. # # STRATEGY: # 1. Create a set of ZFS datasets; # 2. Try 'zfs rename' with various illegal scenarios; # 3. Verify 'zfs rename' command should be failed. # verify_runnable "both" log_assert "'zfs rename' should fail with bad option, null target dataset and" \ "too long target dataset name." badopts=( "r" "R" "-R" "-rR" "-Rr" "-P" "-pP" "-Pp" "-r*" "-p*" "-?" "-*" "-" "-o") datasets=("$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTFS@$TESTSNAP" "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTCTR/$TESTFS1" "$TESTPOOL/$TESTVOL") longname="$(gen_dataset_name 260 abcdefg)" log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP for ds in ${datasets[@]}; do for opt in ${badopts[@]}; do log_mustnot zfs rename $opt $ds ${ds}-new done log_mustnot zfs rename $ds log_mustnot zfs rename $ds ${ds}-new ${ds}-new1 log_mustnot zfs rename $ds ${ds}.$longname done log_pass "'zfs rename' fails with illegal scenarios as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename.kshlib0000644000000000000000000000007413607166133031323 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.753691588 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib0000644016037001603700000000665713607166133031336 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.cfg function additional_setup { # Create testfile log_must cp $DATA $TESTDIR/$TESTFILE0 log_must cp $DATA $TESTDIR1/$TESTFILE0 # Create snapshot if ! snapexists $TESTPOOL/$TESTFS@snapshot; then log_must zfs snapshot $TESTPOOL/$TESTFS@snapshot log_must zfs clone $TESTPOOL/$TESTFS@snapshot \ $TESTPOOL/$TESTFS-clone fi # Create file system datasetexists $TESTPOOL/$TESTFS1 || \ log_must zfs create $TESTPOOL/$TESTFS1 # Create testfile log_must cp $DATA $(get_prop mountpoint $TESTPOOL/$TESTFS1)/$TESTFILE0 # Create container datasetexists $TESTPOOL/$TESTCTR1 || \ log_must zfs create $TESTPOOL/$TESTCTR1 log_must cp $DATA $(get_prop mountpoint $TESTPOOL/$TESTCTR1)/$TESTFILE0 # Create data in zvol if is_global_zone; then log_must eval "dd if=$DATA of=$VOL_R_PATH bs=$BS count=$CNT \ >/dev/null 2>&1" else log_must cp $DATA $(get_prop mountpoint $TESTPOOL/$TESTVOL)/$TESTFILE0 fi # Create temporary %recv clone create_recv_clone $TESTPOOL/$RECVFS } function rename_dataset # src dest { typeset src=$1 typeset dest=$2 log_must zfs rename $src $dest block_device_wait # # Verify src name no longer in use # log_mustnot datasetexists $src log_must datasetexists $dest } function cleanup { typeset -i i=0 while ((i < ${#dataset[*]} )); do if ! datasetexists ${dataset[i]}-new ; then ((i = i + 1)) continue fi if [[ ${dataset[i]}-new != *@* ]] ; then zfs rename ${dataset[i]}-new ${dataset[i]} if [[ $? -ne 0 ]]; then typeset newfs=${dataset[i]}-new typeset oldfs=${dataset[i]} typeset mntp=$(get_prop mountpoint $newfs) log_must zfs destroy -f $newfs log_must zfs create -p $oldfs log_must zfs set mountpoint=$mntp $oldfs fi else log_must zfs destroy -fR ${dataset[i]}-new fi ((i = i + 1)) done if snapexists $TESTPOOL/$TESTFS@snapshot; then log_must zfs destroy -fR $TESTPOOL/$TESTFS@snapshot fi if datasetexists $TESTPOOL/$RECVFS; then log_must zfs destroy -r $TESTPOOL/$RECVFS fi } function cmp_data #<$1 src data, $2 tgt data> { typeset src=$1 typeset tgt=$2 cmp $src $tgt >/dev/null 2>&1 return $? } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_009_neg.0000644000000000000000000000007313607166133031346 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730477.77869239 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_009_neg.ksh0000755016037001603700000000460313607166133032060 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # When renaming a set of snapshots, if a snapshot already exists with # the new name, then none of the snapshots is renamed. # # STRATEGY: # 1. Create a snapshot for a set of datasets. # 2. Create a new snapshot for one of datasets. # 3. Attempt to "zfs rename -r" with the second snapshot's name. # 4. Verify none of the snapshots is renamed. # verify_runnable "both" function cleanup { for poolname in $(get_all_pools); do for snap in $(zfs list -H -t snapshot -o name -r $poolname); do log_must zfs destroy $snap done done } log_assert "Verify zfs rename -r failed when the snapshot name already exists." log_onexit cleanup set -A datasets $TESTPOOL $TESTPOOL/$TESTCTR \ $TESTPOOL/$TESTCTR/$TESTFS1 $TESTPOOL/$TESTFS if is_global_zone; then datasets[${#datasets[@]}]=$TESTPOOL/$TESTVOL fi log_must zfs snapshot -r ${TESTPOOL}@snap typeset -i i=0 while ((i < ${#datasets[@]})); do # Create one more snapshot log_must zfs snapshot ${datasets[$i]}@snap2 log_mustnot zfs rename -r ${TESTPOOL}@snap ${TESTPOOL}@snap2 log_must zfs destroy ${datasets[$i]}@snap2 # Check datasets, make sure none of them have snap2. typeset -i j=0 while ((j < ${#datasets[@]})); do if datasetexists ${datasets[$j]}@snap2 ; then log_fail "${datasets[$j]}@snap2 should not exist." fi ((j += 1)) done ((i += 1)) done log_pass "zfs rename -r failed when the snapshot name already exists." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_013_pos.0000644000000000000000000000007413607166133031372 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.787692679 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_013_pos.ksh0000755016037001603700000000452213607166133032103 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # zfs rename -r can rename snapshot when child datasets # don't have a snapshot of the given name. # # STRATEGY: # 1. Create snapshot. # 2. Rename snapshot recursively. # 3. Verify rename -r snapshot correctly. # verify_runnable "both" function cleanup { if datasetexists $TESTPOOL/$TESTCTR@snap-new ; then log_must zfs destroy -f $TESTPOOL/$TESTCTR@snap-new fi if datasetexists $TESTPOOL/$TESTCTR@snap ; then log_must zfs destroy -f $TESTPOOL/$TESTCTR@snap fi if datasetexists $TESTPOOL@snap-new ; then log_must zfs destroy -f $TESTPOOL@snap-new fi if datasetexists $TESTPOOL@snap ; then log_must zfs destroy -f $TESTPOOL@snap fi } log_assert "zfs rename -r can rename snapshot when child datasets" \ "don't have a snapshot of the given name." log_onexit cleanup log_must zfs snapshot $TESTPOOL/$TESTCTR@snap log_must zfs rename -r $TESTPOOL/$TESTCTR@snap $TESTPOOL/$TESTCTR@snap-new log_must datasetexists $TESTPOOL/$TESTCTR@snap-new log_must zfs snapshot $TESTPOOL@snap log_must zfs rename -r $TESTPOOL@snap $TESTPOOL@snap-new log_must datasetexists $TESTPOOL/$TESTCTR@snap-new log_must datasetexists $TESTPOOL@snap-new log_must zfs destroy -f $TESTPOOL/$TESTCTR@snap-new log_must zfs destroy -f $TESTPOOL@snap-new log_pass "Verify zfs rename -r passed when child datasets" \ "don't have a snapshot of the given name." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_mountpoi0000644000000000000000000000007413607166133032002 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.796692968 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_mountpoint.ksh0000755016037001603700000000477013607166133033140 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy is of the CDDL is also available via the Internet # at http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 Datto Inc. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # zfs rename should rename datasets even for mountpoint=none children # # STRATEGY: # 1. Create a set of nested datasets with mountpoint=none # 2. Verify datasets aren't mounted except for the parent # 3. Rename mountpoint and verify all child datasets are renamed # verify_runnable "both" function rename_cleanup { log_note zfs destroy -fR $TESTPOOL/rename_test log_note zfs destroy -fR $TESTPOOL/renamed } log_onexit rename_cleanup log_must zfs create $TESTPOOL/rename_test log_must zfs create $TESTPOOL/rename_test/ds log_must zfs create -o mountpoint=none $TESTPOOL/rename_test/child log_must zfs create $TESTPOOL/rename_test/child/grandchild if ! ismounted $TESTPOOL/rename_test; then log_fail "$TESTPOOL/rename_test is not mounted" fi if ! ismounted $TESTPOOL/rename_test/ds; then log_fail "$TESTPOOL/rename_test/ds is not mounted" fi if ismounted $TESTPOOL/rename_test/child; then log_fail "$TESTPOOL/rename_test/child is mounted" fi if ismounted $TESTPOOL/rename_test/child/grandchild; then log_fail "$TESTPOOL/rename_test/child/grandchild is mounted" fi log_must zfs rename $TESTPOOL/rename_test $TESTPOOL/renamed log_mustnot zfs list $TESTPOOL/rename_test log_mustnot zfs list $TESTPOOL/rename_test/ds log_mustnot zfs list $TESTPOOL/rename_test/child log_mustnot zfs list $TESTPOOL/rename_test/child/grandchild log_must zfs list $TESTPOOL/renamed log_must zfs list $TESTPOOL/renamed/ds log_must zfs list $TESTPOOL/renamed/child log_must zfs list $TESTPOOL/renamed/child/grandchild if ! ismounted $TESTPOOL/renamed; then log_must zfs get all $TESTPOOL/renamed log_fail "$TESTPOOL/renamed is not mounted" fi if ! ismounted $TESTPOOL/renamed/ds; then log_fail "$TESTPOOL/renamed/ds is not mounted" fi if ismounted $TESTPOOL/renamed/child; then log_fail "$TESTPOOL/renamed/child is mounted" fi if ismounted $TESTPOOL/renamed/child/grandchild; then log_fail "$TESTPOOL/renamed/child/grandchild is mounted" fi log_pass "Verified rename for mountpoint=none children." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/zfs_rename_005_neg.0000644000000000000000000000007413607166133031343 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.769692101 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/zfs_rename_005_neg.ksh0000755016037001603700000000460613607166133032057 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_rename/zfs_rename.kshlib # # DESCRIPTION: # 'zfs rename' should fail when the dataset are not within the same pool # # STRATEGY: # 1. Given a file system, snapshot and volume. # 2. Rename each dataset object to a different pool. # 3. Verify the operation fails, and only the original name # is displayed by zfs list. # verify_runnable "global" function my_cleanup { poolexists $TESTPOOL1 && \ destroy_pool $TESTPOOL1 [[ -e $TESTDIR/$TESTFILE1 ]] && \ log_must rm -f $TESTDIR/$TESTFILE1 cleanup } set -A src_dataset \ "$TESTPOOL/$TESTFS1" "$TESTPOOL/$TESTCTR1" \ "$TESTPOOL/$TESTCTR/$TESTFS1" "$TESTPOOL/$TESTVOL" \ "$TESTPOOL/$TESTFS@snapshot" "$TESTPOOL/$TESTFS-clone" # # cleanup defined in zfs_rename.kshlib # log_onexit my_cleanup log_assert "'zfs rename' should fail while datasets are within different pool." additional_setup log_must mkfile $MINVDEVSIZE $TESTDIR/$TESTFILE1 create_pool $TESTPOOL1 $TESTDIR/$TESTFILE1 for src in ${src_dataset[@]} ; do dest=${src#$TESTPOOL/} if [[ $dest == *"@"* ]]; then dest=${dest#*@} dest=${TESTPOOL1}@$dest else dest=${TESTPOOL1}/$dest fi log_mustnot zfs rename $src $dest log_mustnot zfs rename -p $src $dest # # Verify original dataset name still in use # log_must datasetexists $src done log_pass "'zfs rename' fail while datasets are within different pool." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143003030016 xustar000000000000000029 mtime=1579730435.64733966 30 atime=1579730455.200967469 30 ctime=1579730477.801693129 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_rename/Makefile.in0000664016037001603700000006230513612143003030031 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_rename DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_rename ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_rename_001_pos.ksh \ zfs_rename_002_pos.ksh \ zfs_rename_003_pos.ksh \ zfs_rename_004_neg.ksh \ zfs_rename_005_neg.ksh \ zfs_rename_006_pos.ksh \ zfs_rename_007_pos.ksh \ zfs_rename_008_pos.ksh \ zfs_rename_009_neg.ksh \ zfs_rename_010_neg.ksh \ zfs_rename_011_pos.ksh \ zfs_rename_012_neg.ksh \ zfs_rename_013_pos.ksh \ zfs_rename_014_neg.ksh \ zfs_rename_encrypted_child.ksh \ zfs_rename_to_encrypted.ksh \ zfs_rename_mountpoint.ksh dist_pkgdata_DATA = \ zfs_rename.cfg \ zfs_rename.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_rename/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_rename/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_snapshot0000644000000000000000000000013213612143056026275 xustar000000000000000030 mtime=1579730478.267708091 30 atime=1579730489.090055581 30 ctime=1579730478.267708091 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/0000775016037001603700000000000013612143056026356 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_004_0000644000000000000000000000007413607166133031552 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.251707577 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_004_neg.ksh0000755016037001603700000000453513607166133033037 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify recursive snapshotting could not break ZFS. # # STRATEGY: # 1. Create deeply-nested filesystems until it is too long to create snap # 2. Verify zfs snapshot -r pool@snap will not break ZFS # verify_runnable "both" function cleanup { if datasetexists $initfs ; then log_must zfs destroy -rf $initfs fi } log_assert "Verify recursive snapshotting could not break ZFS." log_onexit cleanup initfs=$TESTPOOL/$TESTFS/$TESTFS basefs=$initfs typeset -i ret=0 len snaplen while ((ret == 0)); do zfs create $basefs zfs snapshot $basefs@snap1 ret=$? if ((ret != 0)); then len=$(echo $basefs| wc -c) log_note "The deeply-nested filesystem len: $len" # # Make sure there are at lease 2 characters left # for snapshot name space, otherwise snapshot name # is incorrect # if ((len >= 255)); then if datasetexists $basefs; then log_must zfs destroy -r $basefs fi basefs=${basefs%/*} len=$(echo $basefs| wc -c) fi break fi basefs=$basefs/$TESTFS done # Make snapshot name is longer than the max length ((snaplen = 256 - len + 10)) snap=$(gen_dataset_name $snaplen "s") log_mustnot zfs snapshot -r $TESTPOOL@$snap log_must datasetnonexists $TESTPOOL@$snap while [[ $basefs != $TESTPOOL ]]; do log_must datasetnonexists $basefs@$snap basefs=${basefs%/*} done log_pass "Verify recursive snapshotting could not break ZFS." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_003_0000644000000000000000000000007413607166133031551 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.249707513 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_003_neg.ksh0000755016037001603700000000360113607166133033027 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # "zfs snapshot" fails with bad options,too many arguments or too long # snapshot name # # STRATEGY: # 1. Create an array of invalid arguments # 2. Execute 'zfs snapshot' with each argument in the array, # 3. Verify an error is returned. # verify_runnable "both" log_assert "'zfs snapshot' fails with bad options, or too many arguments. " set -A badopts "r" "R" "-R" "-x" "-rR" "-?" "-*" "-123" # set too long snapshot name (>256) l_name="$(gen_dataset_name 260 abcdefg)" for ds in $TESTPOOL/$TESTFS $TESTPOOL/$TESTCTR $TESTPOOL/$TESTVOL; do for opt in ${badopts[@]}; do log_mustnot zfs snapshot $opt $ds@$TESTSNAP done log_mustnot zfs snapshot $ds@snap $ds@snap1 log_mustnot zfs snapshot -r $ds@snap $ds@snap1 log_mustnot zfs snapshot $ds@$l_name log_mustnot zfs snapshot -r $ds@$l_name done log_pass "'zfs snapshot' fails with bad options or too many arguments as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_002_0000644000000000000000000000007413612141513031537 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.246707417 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_002_neg.ksh0000755016037001603700000000545313612141513033024 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # "zfs snapshot -r" fails with invalid arguments or scenarios. # The invalid scenarios may include: # (1) The child filesystem already has snapshot with the same name # (2) The child volume already has snapshot with the same name # # STRATEGY: # 1. Create an array of invalid arguments # 2. Execute 'zfs snapshot -r' with each argument in the array, # 3. Verify an error is returned. # verify_runnable "both" function cleanup { typeset snap for snap in $TESTPOOL/$TESTCTR/$TESTFS1@$TESTSNAP \ $TESTPOOL/$TESTCTR/$TESTVOL@$TESTSNAP; do snapexists $snap && \ log_must zfs destroy $snap done datasetexists $TESTPOOL/$TESTCTR/$TESTVOL && \ log_must zfs destroy -rf $TESTPOOL/$TESTCTR/$TESTVOL } log_assert "'zfs snapshot -r' fails with invalid arguments or scenarios. " log_onexit cleanup set -A args "" \ "$TESTPOOL/$TESTCTR@$TESTSNAP" "$TESTPOOL/$TESTCTR@blah?" \ "$TESTPOOL/$TESTCTR@blah*" "@$TESTSNAP" "$TESTPOOL/$TESTCTR@" \ "$TESTPOOL/$TESTFS/$TESTSNAP" "blah/blah@$TESTSNAP" \ "$TESTPOOL/$TESTCTR@$TESTSNAP@$TESTSNAP" # setup preparations log_must zfs snapshot $TESTPOOL/$TESTCTR/$TESTFS1@$TESTSNAP # testing typeset -i i=0 while (( i < ${#args[*]} )); do log_mustnot zfs snapshot -r ${args[i]} ((i = i + 1)) done # Testing the invalid scenario: the child volume already has an # identical name snapshot, zfs snapshot -r should fail when # creating snapshot with -r for the parent log_must zfs destroy $TESTPOOL/$TESTCTR/$TESTFS1@$TESTSNAP if is_global_zone; then log_must zfs create -V $VOLSIZE $TESTPOOL/$TESTCTR/$TESTVOL else log_must zfs create $TESTPOOL/$TESTCTR/$TESTVOL fi log_must zfs snapshot $TESTPOOL/$TESTCTR/$TESTVOL@$TESTSNAP log_mustnot zfs snapshot -r $TESTPOOL/$TESTCTR@$TESTSNAP log_pass "'zfs snapshot -r' fails with invalid arguments or scenarios as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_007_0000644000000000000000000000007413607166133031555 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.257707771 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_007_neg.ksh0000755016037001603700000000727513607166133033046 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # 'zfs snapshot -o' cannot set properties other than user property # # STRATEGY: # 1. Create snapshot and give '-o property=value' with regular property. # 2. Verify the snapshot creation failed. # verify_runnable "both" function cleanup { for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL/$TESTCTR $TESTPOOL ; do typeset fssnap=$fs@snap if datasetexists $fssnap ; then log_must zfs destroy -rf $fssnap fi done cleanup_user_prop $TESTPOOL } function nonexist_user_prop { typeset user_prop=$1 typeset dtst=$2 typeset source=$(get_source $user_prop $dtst) typeset value=$(get_prop $user_prop $dtst) if [[ $source == '-' && $value == '-' ]]; then return 0 else return 1 fi } log_assert "'zfs snapshot -o' cannot set properties other than user property." log_onexit cleanup typeset ro_props="type used available avail creation referenced refer compressratio \ mounted origin" typeset snap_ro_props="volsize recordsize recsize quota reservation reserv mountpoint \ sharenfs checksum compression compress atime devices exec readonly rdonly \ setuid zoned" zfs upgrade -v > /dev/null 2>&1 if [[ $? -eq 0 ]]; then snap_ro_props="$snap_ro_props version" fi for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL/$TESTCTR $TESTPOOL ; do typeset fssnap=$fs@snap prop_name=$(valid_user_property 10) value=$(user_property_value 16) log_must eval "zfs snapshot -o $prop_name='$value' $fssnap" log_must snapexists $fssnap log_mustnot nonexist_user_prop $prop_name $fssnap log_must zfs destroy -f $fssnap prop_name2=$(valid_user_property 10) value2=$(user_property_value 16) log_must eval "zfs snapshot -o $prop_name='$value' -o $prop_name2='$value2' $fssnap" log_must snapexists $fssnap log_mustnot nonexist_user_prop $prop_name $fssnap log_mustnot nonexist_user_prop $prop_name2 $fssnap log_must zfs destroy -f $fssnap done cleanup prop_name=$(valid_user_property 10) value=$(user_property_value 16) log_must eval "zfs snapshot -r -o $prop_name='$value' $TESTPOOL@snap" for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL/$TESTCTR $TESTPOOL ; do typeset fssnap=$fs@snap log_must snapexists $fssnap log_mustnot nonexist_user_prop $prop_name $fssnap done cleanup prop_name2=$(valid_user_property 10) value2=$(user_property_value 16) log_must eval "zfs snapshot -r -o $prop_name='$value' -o $prop_name2='$value2' $TESTPOOL@snap" for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL/$TESTCTR $TESTPOOL ; do typeset fssnap=$fs@snap log_must snapexists $fssnap log_mustnot nonexist_user_prop $prop_name $fssnap log_mustnot nonexist_user_prop $prop_name2 $fssnap done log_pass "'zfs snapshot -o' cannot set properties other than user property." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot.cfg0000644000000000000000000000007413607166133031566 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.237707128 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot.cfg0000644016037001603700000000250713607166133031567 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export SNAPFS="$TESTPOOL/$TESTFS@$TESTSNAP" export SNAPFS1="$TESTPOOL/$TESTVOL@$TESTSNAP" export SNAPDIR="$TESTDIR@$TESTSNAP" export SNAPDIR1="$ZFSROOT/$SNAPFS1" export SNAPDEV1="/$TESTDIR/snap1.dat" export SNAPDEV2="/$TESTDIR/snap2.dat" # Name lengths for snappool1 and snappool2 must the same export SNAPPOOL1="snappool1" export SNAPPOOL2="snappool2" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_001_0000644000000000000000000000007413607166133031547 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.244707353 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_001_neg.ksh0000755016037001603700000000613013607166133033025 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_snapshot/zfs_snapshot.cfg # # DESCRIPTION: # Try each 'zfs snapshot' with inapplicable scenarios to make sure # it returns an error. include: # * No arguments given. # * The argument contains invalid characters for the ZFS namesapec # * Leading slash in snapshot name # * The argument contains an empty component. # * Missing '@' delimiter. # * Multiple '@' delimiters in snapshot name. # * The snapshot already exist. # * Create snapshot upon the pool. # (Be removed since pool is treated as filesystem as well) # * Create snapshot upon a non-existent filesystem. # * Too many arguments. # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute the sub-command # 3. Verify an error is returned. # verify_runnable "both" set -A args "" \ "$TESTPOOL/$TESTFS@blah*" "$TESTPOOL/$TESTFS@blah?" \ "$TESTPOOL/$TESTVOL@blah*" "$TESTPOOL/$TESTVOL@blah?" \ "/$TESTPOOL/$TESTFS@$TESTSNAP" "/$TESTPOOL/$TESTVOL@$TESTSNAP" \ "@$TESTSNAP" "$TESTPOOL/$TESTFS@" "$TESTPOOL/$TESTVOL@" \ "$TESTPOOL//$TESTFS@$TESTSNAP" "$TESTPOOL//$TESTVOL@$TESTSNAP" \ "$TESTPOOL/$TESTFS/$TESTSNAP" "$TESTPOOL/$TESTVOL/$TESTSNAP" \ "$TESTPOOL/$TESTFS@$TESTSNAP@$TESTSNAP1" \ "$TESTPOOL/$TESTVOL@$TESTSNAP@$TESTSNAP1" \ "$SNAPFS" "$SNAPFS1" \ "blah/blah@$TESTSNAP" function setup_all { log_note "Create snapshots and mount them..." for snap in $SNAPFS $SNAPFS1; do if ! snapexists $snap; then log_must zfs snapshot $snap fi done return 0 } function cleanup_all { typeset -i i=0 while (( i < ${#args[*]} )); do for snap in ${args[i]}; do snapexists $snap && log_must zfs destroy -f $snap done (( i = i + 1 )) done for mtpt in $SNAPDIR $SNAPDIR1; do [[ -d $mtpt ]] && log_must rm -rf $mtpt done return 0 } log_assert "Badly-formed 'zfs snapshot' with inapplicable scenarios " \ "should return an error." log_onexit cleanup_all setup_all typeset -i i=0 while (( i < ${#args[*]} )); do log_mustnot zfs snapshot ${args[i]} ((i = i + 1)) done log_pass "Badly formed 'zfs snapshot' with inapplicable scenarios " \ "fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030420 xustar000000000000000030 atime=1579730435.935348906 30 ctime=1579730478.264707995 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/Makefile.am0000644016037001603700000000065313607166133030421 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_snapshot dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_snapshot_001_neg.ksh \ zfs_snapshot_002_neg.ksh \ zfs_snapshot_003_neg.ksh \ zfs_snapshot_004_neg.ksh \ zfs_snapshot_005_neg.ksh \ zfs_snapshot_006_pos.ksh \ zfs_snapshot_007_neg.ksh \ zfs_snapshot_008_neg.ksh \ zfs_snapshot_009_pos.ksh dist_pkgdata_DATA = \ zfs_snapshot.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030233 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.239707193 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/setup.ksh0000755016037001603700000000176213607166133030241 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_volume_setup ${DISK} zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030522 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.241707257 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/cleanup.ksh0000755016037001603700000000172213607166133030524 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_container_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_005_0000644000000000000000000000007413607166133031553 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.253707641 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_005_neg.ksh0000755016037001603700000000465513607166133033043 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Long name filesystem with snapshot should not break ZFS. # # STRATEGY: # 1. Create filesystem and snapshot. # 2. When the snapshot length is 256, rename the filesystem. # 3. Verify it does not break ZFS # verify_runnable "both" function cleanup { if datasetexists $initfs ; then log_must zfs destroy -rf $initfs fi } log_assert "Verify long name filesystem with snapshot should not break ZFS." log_onexit cleanup initfs=$TESTPOOL/$TESTFS/$TESTFS basefs=$initfs typeset -i ret=0 len snaplen while ((ret == 0)); do zfs create $basefs zfs snapshot $basefs@snap1 ret=$? if ((ret != 0)); then len=$(echo $basefs | wc -c) log_note "The deeply-nested filesystem len: $len" # # Make sure there are at lease 2 characters left # for snapshot name space, otherwise snapshot name # is incorrect # if ((len >= 255)); then if datasetexists $basefs; then log_must zfs destroy -r $basefs fi basefs=${basefs%/*} len=$(echo $basefs| wc -c) fi break fi basefs=$basefs/$TESTFS done # Make snapshot name length match the longest one ((snaplen = 256 - len - 1)) # 1: @ snap=$(gen_dataset_name $snaplen "s") log_must zfs snapshot $basefs@$snap log_mustnot zfs rename $basefs ${basefs}a log_mustnot zfs rename $basefs ${basefs}-new log_mustnot zfs rename $initfs ${initfs}-new log_mustnot zfs rename $TESTPOOL/$TESTFS $TESTPOOL/$TESTFS-new log_pass "Verify long name filesystem with snapshot should not break ZFS." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_009_0000644000000000000000000000007413612141513031546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.262707931 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_009_pos.ksh0000755016037001603700000000727313612141513033065 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # # # DESCRIPTION # verify 'zfs snapshot ' works correctly # # STRATEGY # 1. Create multiple datasets # 2. Create multiple snapshots with a list of valid and invalid # snapshot names # 3. Verify the valid snapshot creation . $STF_SUITE/include/libtest.shlib ZFS_MAX_DATASET_NAME_LEN=256 function cleanup { for ds in $datasets; do datasetexists $ds && log_must zfs destroy -r $ds done zfs destroy -r $TESTPOOL/TESTFS4 } datasets="$TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS2 $TESTPOOL/$TESTFS3" # We subtract 3 for slash (/), at (@), and the terminating nul (\0) SNAPSHOT_XXX=$(printf 'x%.0s' \ {1..$(($ZFS_MAX_DATASET_NAME_LEN - ${#TESTPOOL} - ${#TESTFS1} - 3))}) invalid_args=("$TESTPOOL/$TESTFS1@now $TESTPOOL/$TESTFS2@now \ $TESTPOOL/$TESTFS@blah?" "$TESTPOOL/$TESTFS1@blah* \ $TESTPOOL/$TESTFS2@blah? $TESTPOOL/$TESTFS3@blah%" \ "$TESTPOOL/$TESTFS1@x$SNAPSHOT_XXX $TESTPOOL/$TESTFS2@300 \ $TESTPOOL/$TESTFS3@300") valid_args=("$TESTPOOL/$TESTFS1@snap $TESTPOOL/$TESTFS2@snap \ $TESTPOOL/$TESTFS3@snap" "$TESTPOOL/$TESTFS1@$SNAPSHOT_XXX \ $TESTPOOL/$TESTFS2@2 $TESTPOOL/$TESTFS3@s") log_assert "verify zfs supports multiple consistent snapshots" log_onexit cleanup typeset -i i=1 test_data=$STF_SUITE/tests/functional/cli_root/zpool_upgrade/blockfiles/*.bz2 log_note "destroy a list of valid snapshots" for ds in $datasets; do log_must zfs create $ds log_must cp -r $test_data /$ds done i=0 while (( i < ${#valid_args[*]} )); do log_must zfs snapshot ${valid_args[i]} for token in ${valid_args[i]}; do log_must snapexists $token && \ log_must zfs destroy $token done ((i = i + 1)) done log_note "destroy a list of invalid snapshots" i=0 while (( i < ${#invalid_args[*]} )); do log_mustnot zfs snapshot ${invalid_args[i]} for token in ${invalid_args[i]}; do log_mustnot snapexists $token done ((i = i + 1)) done log_note "verify multiple snapshot transaction group" txg_group=$(zdb -Pd $TESTPOOL | grep snap | awk '{print $7}') for i in 1 2 3; do txg_tag=$(echo "$txg_group" | nawk -v j=$i 'FNR == j {print}') [[ $txg_tag != $(echo "$txg_group" | \ nawk -v j=$i 'FNR == j {print}') ]] \ && log_fail "snapshots belong to different transaction groups" done log_note "verify snapshot contents" for ds in $datasets; do diff -q -r /$ds /$ds/.zfs/snapshot/snap > /dev/null 2>&1 if [[ $? -eq 1 ]]; then log_fail "snapshot contents are different from" \ "the filesystem" fi done # We subtract 3 + 7 + 7 + 1 = 18 for three slashes (/), strlen("TESTFSA") == 7, # strlen("TESTFSB") == 7, and the terminating nul (\0) DATASET_XXX=$(printf 'x%.0s' \ {1..$(($ZFS_MAX_DATASET_NAME_LEN - ${#TESTPOOL} - ${#TESTFS3} - 18))}) log_note "verify multiple snapshot with -r option" log_must zfs create $TESTPOOL/TESTFS4 log_must zfs create -p $TESTPOOL/$TESTFS3/TESTFSA$DATASET_XXX/TESTFSB log_mustnot zfs snapshot -r $TESTPOOL/$TESTFS1@snap1 $TESTPOOL/$TESTFS2@snap1 \ $TESTPOOL/$TESTFS3@snap1 $TESTPOOL/TESTFS4@snap1 log_must zfs rename $TESTPOOL/$TESTFS3/TESTFSA$DATASET_XXX \ $TESTPOOL/$TESTFS3/TESTFSA log_must zfs snapshot -r $TESTPOOL/$TESTFS1@snap1 $TESTPOOL/$TESTFS2@snap1 \ $TESTPOOL/$TESTFS3@snap1 $TESTPOOL/TESTFS4@snap1 log_pass "zfs multiple snapshot verified correctly" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003030407 xustar000000000000000030 mtime=1579730435.973350128 30 atime=1579730455.381973281 30 ctime=1579730478.267708091 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/Makefile.in0000664016037001603700000006175413612143003030430 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_snapshot DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_snapshot ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_snapshot_001_neg.ksh \ zfs_snapshot_002_neg.ksh \ zfs_snapshot_003_neg.ksh \ zfs_snapshot_004_neg.ksh \ zfs_snapshot_005_neg.ksh \ zfs_snapshot_006_pos.ksh \ zfs_snapshot_007_neg.ksh \ zfs_snapshot_008_neg.ksh \ zfs_snapshot_009_pos.ksh dist_pkgdata_DATA = \ zfs_snapshot.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_008_0000644000000000000000000000007413612141513031545 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.260707867 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_008_neg.ksh0000755016037001603700000000365713612141513033036 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_snapshot/zfs_snapshot.cfg # # DESCRIPTION: # 'zfs snapshot pool1@snap pool2@snap' should fail since both snapshots # are not in the same pool. # # STRATEGY: # 1. Create 2 separate zpools, zpool name lengths must be the same. # 2. Attempt to simultaneously create a snapshot of each pool. # 3. Verify the snapshot creation failed. # verify_runnable "both" function cleanup { for pool in $SNAPPOOL1 $SNAPPOOL2 ; do if poolexists $pool ; then log_must zpool destroy -f $pool fi done for dev in $SNAPDEV1 $SNAPDEV2 ; do if [[ -f $dev ]] ; then log_must rm -f $dev fi done } log_assert "'zfs snapshot pool1@snap1 pool2@snap2' should fail since snapshots are in different pools." log_onexit cleanup log_must mkfile $MINVDEVSIZE $SNAPDEV1 log_must mkfile $MINVDEVSIZE $SNAPDEV2 log_must zpool create $SNAPPOOL1 $SNAPDEV1 log_must zpool create $SNAPPOOL2 $SNAPDEV2 log_mustnot zfs snapshot $SNAPPOOL1@snap1 $SNAPPOOL2@snap2 log_pass "'zfs snapshot pool1@snap1 pool2@snap2' should fail since snapshots are in different pools." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/PaxHeaders.151519/zfs_snapshot_006_0000644000000000000000000000007413607166133031554 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.255707707 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_snapshot/zfs_snapshot_006_pos.ksh0000755016037001603700000000646313607166133033073 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # User property could be set via creation time by 'zfs snapshot -o' # # STRATEGY: # 1. Create snapshot and give '-o property=value' # 2. Verify the snapshot be created and user property have been set. # verify_runnable "both" function cleanup { for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL ; do typeset fssnap=$fs@snap if datasetexists $fssnap ; then log_must zfs destroy -rf $fssnap fi done cleanup_user_prop $TESTPOOL } function nonexist_user_prop { typeset user_prop=$1 typeset dtst=$2 typeset source=$(get_source $user_prop $dtst) typeset value=$(get_prop $user_prop $dtst) if [[ $source == '-' && $value == '-' ]]; then return 0 else return 1 fi } log_assert "User property could be set upon snapshot via 'zfs snapshot -o'." log_onexit cleanup typeset snap_property= for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL ; do typeset fssnap=$fs@snap prop_name=$(valid_user_property 10) value=$(user_property_value 16) log_must eval "zfs snapshot -o $prop_name='$value' $fssnap" log_must snapexists $fssnap log_mustnot nonexist_user_prop $prop_name $fssnap log_must zfs destroy -f $fssnap prop_name2=$(valid_user_property 10) value2=$(user_property_value 16) log_must eval "zfs snapshot -o $prop_name='$value' -o $prop_name2='$value2' $fssnap" log_must snapexists $fssnap log_mustnot nonexist_user_prop $prop_name $fssnap log_mustnot nonexist_user_prop $prop_name2 $fssnap done cleanup prop_name=$(valid_user_property 10) value=$(user_property_value 16) log_must eval "zfs snapshot -r -o $prop_name='$value' $TESTPOOL@snap" for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL ; do typeset fssnap=$fs@snap log_must snapexists $fssnap log_mustnot nonexist_user_prop $prop_name $fssnap log_must zfs destroy -rf $fssnap done cleanup prop_name2=$(valid_user_property 10) value2=$(user_property_value 16) log_must eval "zfs snapshot -r -o $prop_name='$value' -o $prop_name2='$value2' $TESTPOOL@snap" for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL ; do typeset fssnap=$fs@snap log_must snapexists $fssnap log_mustnot nonexist_user_prop $prop_name $fssnap log_mustnot nonexist_user_prop $prop_name2 $fssnap log_must zfs destroy -rf $fssnap done log_pass "User property could be set upon snapshot via 'zfs snapshot -o'." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_offline0000644000000000000000000000013213612143057026422 xustar000000000000000030 mtime=1579730479.825758117 30 atime=1579730489.091055613 30 ctime=1579730479.825758117 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/0000775016037001603700000000000013612143057026503 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030544 xustar000000000000000030 atime=1579730437.116386827 30 ctime=1579730479.823758053 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/Makefile.am0000644016037001603700000000033613607166133030543 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_offline dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_offline_001_pos.ksh \ zpool_offline_002_neg.ksh \ zpool_offline_003_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030357 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.812757701 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/setup.ksh0000755016037001603700000000203613607166133030360 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" verify_disk_count "$DISKS" 2 DISK=${DISKS%% *} default_mirror_setup $DISKS zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030646 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.814757765 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/cleanup.ksh0000755016037001603700000000174213607166133030652 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/PaxHeaders.151519/zpool_offline_000000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.819757925 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/zpool_offline_002_neg.ksh0000755016037001603700000000633713607166133033307 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool offline' command with bad options fails. # # STRATEGY: # 1. Create an array of badly formed 'zpool offline' options. # 2. Execute each element of the array. # 3. Verify an error code is returned. # verify_runnable "global" DISKLIST=$(get_disklist $TESTPOOL) set -A args "" "-?" "-t fakepool" "-f fakepool" "-ev fakepool" "fakepool" \ "-t $TESTPOOL" "-t $TESTPOOL/$TESTFS" "-t $TESTPOOL/$TESTFS $DISKLIST" \ "-t $TESTPOOL/$TESTCTR" "-t $TESTPOOL/$TESTCTR/$TESTFS1" \ "-t $TESTPOOL/$TESTCTR $DISKLIST" "-t $TESTPOOL/$TESTVOL" \ "-t $TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "-t $TESTPOOL/$TESTVOL $DISKLIST" \ "-t $DISKLIST" \ "-f $TESTPOOL" "-f $TESTPOOL/$TESTFS" "-f $TESTPOOL/$TESTFS $DISKLIST" \ "-f $TESTPOOL/$TESTCTR" "-f $TESTPOOL/$TESTCTR/$TESTFS1" \ "-f $TESTPOOL/$TESTCTR $DISKLIST" "-f $TESTPOOL/$TESTVOL" \ "-f $TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "-f $TESTPOOL/$TESTVOL $DISKLIST" \ "-f $DISKLIST" \ "-ft $TESTPOOL" "-ft $TESTPOOL/$TESTFS" \ "-ft $TESTPOOL/$TESTFS $DISKLIST" \ "-ft $TESTPOOL/$TESTCTR" "-ft $TESTPOOL/$TESTCTR/$TESTFS1" \ "-ft $TESTPOOL/$TESTCTR $DISKLIST" "-ft $TESTPOOL/$TESTVOL" \ "-ft $TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "-ft $TESTPOOL/$TESTVOL $DISKLIST" \ "-ft $DISKLIST" \ "-tf $TESTPOOL" "-tf $TESTPOOL/$TESTFS" \ "-tf $TESTPOOL/$TESTFS $DISKLIST" \ "-tf $TESTPOOL/$TESTCTR" "-tf $TESTPOOL/$TESTCTR/$TESTFS1" \ "-tf $TESTPOOL/$TESTCTR $DISKLIST" "-tf $TESTPOOL/$TESTVOL" \ "-tf $TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "-tf $TESTPOOL/$TESTVOL $DISKLIST" \ "-tf $DISKLIST" \ "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTFS $DISKLIST" \ "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTPOOL/$TESTCTR $DISKLIST" "$TESTPOOL/$TESTVOL" \ "$TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" "$TESTPOOL/$TESTVOL $DISKLIST" \ "$DISKLIST" log_assert "Executing 'zpool offline' with bad options fails" if [[ -z $DISKLIST ]]; then log_fail "DISKLIST is empty." fi typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool offline ${args[$i]} (( i = i + 1 )) done log_pass "'zpool offline' command with bad options failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/PaxHeaders.151519/zpool_offline_000000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.821757989 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/zpool_offline_003_pos.ksh0000755016037001603700000000604513607166133033334 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Test force faulting a VDEV with 'zpool offline -f' # # STRATEGY: # For both temporary and persistent faults, do the following: # 1. Force fault a vdev, and clear the fault. # 2. Offline a vdev, force fault it, clear the fault, and online it. # 3. Force fault a vdev, export it, then import it. verify_runnable "global" DISKLIST=$(get_disklist $TESTPOOL) set -A disks $DISKLIST typeset -i num=${#disks[*]} set -A args "" "-t" function cleanup { # Ensure we don't leave disks in the offline state for disk in $DISKLIST; do log_must zpool online $TESTPOOL $disk check_state $TESTPOOL $disk "online" if [[ $? != 0 ]]; then log_fail "Unable to online $disk" fi done } log_assert "Executing 'zpool offline -f' with correct options succeeds" log_onexit cleanup if [[ -z $DISKLIST ]]; then log_fail "DISKLIST is empty." fi typeset -i i=0 typeset -i j=1 # Get name of the first disk in the pool disk=${DISKLIST%% *} # Test temporary and persistent faults for arg in f tf ; do # Force fault disk, and clear the fault log_must zpool offline -$arg $TESTPOOL $disk check_state $TESTPOOL $disk "faulted" log_must zpool clear $TESTPOOL $disk check_state $TESTPOOL $disk "online" # Offline a disk, force fault it, clear the fault, and online it log_must zpool offline $TESTPOOL $disk check_state $TESTPOOL $disk "offline" log_must zpool offline -$arg $TESTPOOL $disk check_state $TESTPOOL $disk "faulted" log_must zpool clear $TESTPOOL $disk check_state $TESTPOOL $disk "offline" log_must zpool online $TESTPOOL $disk check_state $TESTPOOL $disk "online" # Test faults across imports log_must zpool offline -tf $TESTPOOL $disk check_state $TESTPOOL $disk "faulted" log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL log_note "-$arg now imported" if [[ "$arg" = "f" ]] ; then # Persistent fault check_state $TESTPOOL $disk "faulted" log_must zpool clear $TESTPOOL $disk else # Temporary faults get cleared by imports check_state $TESTPOOL $disk "online" fi done log_pass "'zpool offline -f' with correct options succeeded" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/PaxHeaders.151519/zpool_offline_000000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.817757861 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/zpool_offline_001_pos.ksh0000755016037001603700000000602313607166133033326 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool offline' with valid parameters succeeds. # # STRATEGY: # 1. Create an array of correctly formed 'zpool offline' options # 2. Execute each element of the array. # 3. Verify use of each option is successful. verify_runnable "global" DISKLIST=$(get_disklist $TESTPOOL) set -A disks $DISKLIST typeset -i num=${#disks[*]} set -A args "" "-t" function cleanup { # # Ensure we don't leave disks in the offline state # for disk in $DISKLIST; do log_must zpool online $TESTPOOL $disk check_state $TESTPOOL $disk "online" if [[ $? != 0 ]]; then log_fail "Unable to online $disk" fi done } log_assert "Executing 'zpool offline' with correct options succeeds" log_onexit cleanup if [[ -z $DISKLIST ]]; then log_fail "DISKLIST is empty." fi typeset -i i=0 typeset -i j=1 for disk in $DISKLIST; do i=0 while [[ $i -lt ${#args[*]} ]]; do if (( j < num )) ; then log_must zpool offline ${args[$i]} $TESTPOOL $disk check_state $TESTPOOL $disk "offline" if [[ $? != 0 ]]; then log_fail "$disk of $TESTPOOL did not match offline state" fi else log_mustnot zpool offline ${args[$i]} $TESTPOOL $disk check_state $TESTPOOL $disk "online" if [[ $? != 0 ]]; then log_fail "$disk of $TESTPOOL did not match online state" fi fi (( i = i + 1 )) done (( j = j + 1 )) done log_note "Issuing repeated 'zpool offline' commands succeeds." typeset -i iters=20 typeset -i index=0 for disk in $DISKLIST; do i=0 while [[ $i -lt $iters ]]; do index=`expr $RANDOM % ${#args[*]}` log_must zpool offline ${args[$index]} $TESTPOOL $disk check_state $TESTPOOL $disk "offline" if [[ $? != 0 ]]; then log_fail "$disk of $TESTPOOL is not offline." fi (( i = i + 1 )) done log_must zpool online $TESTPOOL $disk check_state $TESTPOOL $disk "online" if [[ $? != 0 ]]; then log_fail "$disk of $TESTPOOL did not match online state" fi done log_pass "'zpool offline -f' succeeded" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143005030534 xustar000000000000000029 mtime=1579730437.15138795 30 atime=1579730456.049994729 30 ctime=1579730479.826758149 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_offline/Makefile.in0000664016037001603700000005742713612143005030560 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_offline DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_offline ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_offline_001_pos.ksh \ zpool_offline_002_neg.ksh \ zpool_offline_003_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_offline/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_offline/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_destroy0000644000000000000000000000013013612143054026123 xustar000000000000000029 mtime=1579730476.97266651 30 atime=1579730489.091055613 29 ctime=1579730476.97266651 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/0000775016037001603700000000000013612143054026206 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_007_ne0000644000000000000000000000007413607166133031564 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.947665708 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_007_neg.ksh0000755016037001603700000000415513607166133032524 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg # # DESCRIPTION: # 'zpool destroy' failed if this filesystem is namespace-parent # of origin. # # STRATEGY: # 1. Create pool, fs and snapshot. # 2. Create a namespace-parent of origin clone. # 3. Promote this clone # 4. Verify the original fs can not be destroyed. # verify_runnable "both" function cleanup { if datasetexists $clonesnap; then log_must zfs promote $fs fi datasetexists $clone && log_must zfs destroy $clone datasetexists $fssnap && log_must zfs destroy $fssnap } log_assert "Destroy dataset which is namespace-parent of origin should failed." log_onexit cleanup # Define variable $fssnap & and namespace-parent of origin clone. fs=$TESTPOOL/$TESTFS fssnap=$fs@snap clone=$fs/clone clonesnap=$fs/clone@snap # Define key word for expected failure. KEY_WORDS="filesystem has children" log_must zfs snapshot $fssnap log_must zfs clone $fssnap $clone log_must zfs promote $clone log_mustnot_expect "$KEY_WORDS" zfs destroy $fs log_mustnot_expect "$KEY_WORDS" zfs destroy $clone log_pass "Destroy dataset which is namespace-parent of origin passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_014_po0000644000000000000000000000007413612141514031566 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.963666221 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_014_pos.ksh0000755016037001603700000000406513612141514032542 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg # # DESCRIPTION: # 'zfs destroy -R ' can destroy all the child # snapshots and preserves all the nested datasets. # # STRATEGY: # 1. Create nested datasets in the storage pool. # 2. Create recursive snapshots for all the nested datasets. # 3. Verify when snapshots are destroyed recursively, all # the nested datasets still exist. # verify_runnable "both" log_assert "Verify 'zfs destroy -R ' does not destroy" \ "nested datasets." log_onexit cleanup datasets="$TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1/$TESTFS2 $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3" function cleanup { for ds in $datasets; do datasetexists $ds && zfs destroy -rf $ds done } # create nested datasets log_must zfs create -p $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3 # verify dataset creation for ds in $datasets; do datasetexists $ds || log_fail "Create $ds dataset fail." done # create recursive nested snapshot log_must zfs snapshot -r $TESTPOOL/$TESTFS1@snap for ds in $datasets; do datasetexists $ds@snap || log_fail "Create $ds@snap snapshot fail." done # destroy nested snapshot recursively log_must zfs destroy -R $TESTPOOL/$TESTFS1@snap # verify snapshot destroy for ds in $datasets; do datasetexists $ds@snap && log_fail "$ds@snap exists. Destroy failed!" done # verify nested datasets still exist for ds in $datasets; do datasetexists $ds || log_fail "Recursive snapshot destroy deleted $ds" done log_pass "'zfs destroy -R ' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_010_po0000644000000000000000000000007413607166133031572 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.954665932 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_010_pos.ksh0000755016037001603700000000464313607166133032550 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib ################################################################################ # # When using 'zfs destroy -R' on a file system hierarchy that includes a # snapshot and a clone of that snapshot, and the snapshot has been # defer-destroyed, make sure that the 'zfs destroy -R' works as expected. # In particular make sure that libzfs is not confused by the fact that the # kernel will automatically remove the defer-destroyed snapshot when the # clone is destroyed. # # 1. Create test environment. # 2. Create a clone of the snapshot. # 3. 'zfs destroy -d ' # 4. 'zfs destroy -R' # 5. Verify that the snapshot and clone are destroyed. # ################################################################################ function test_clone_run { typeset dstype=$1 ds=$(eval echo \$${dstype}) snap=$(eval echo \$${dstype}SNAP) clone=$(eval echo \$${dstype}CLONE) log_must zfs destroy -d $snap log_must datasetexists $snap log_must_busy zfs destroy -R $clone log_mustnot datasetexists $snap log_mustnot datasetexists $clone } log_assert "'zfs destroy -R' works on deferred destroyed snapshots" log_onexit cleanup_testenv setup_testenv clone for dstype in FS VOL; do if [[ $dstype == VOL ]]; then if is_global_zone; then test_clone_run $dstype fi else test_clone_run $dstype fi done log_pass "'zfs destroy -R' works on deferred destroyed snapshots" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_013_ne0000644000000000000000000000007413607166133031561 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.960666124 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_013_neg.ksh0000755016037001603700000000323613607166133032520 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib ################################################################################ # # Destroy of held snapshot should fail. # # 1. Create test environment without clones. # 2. 'zfs hold ' # 3. 'zfs destroy ' should fail. # 4. Verify snapshot still exists. # 5. 'zfs release ' # 6. Verify that we can destroy the snapshot. # ################################################################################ function test_snap_run { typeset dstype=$1 snap=$(eval echo \$${dstype}SNAP) log_must zfs hold zfstest $snap log_mustnot zfs destroy $snap log_must datasetexists $snap log_must zfs release zfstest $snap log_must zfs destroy $snap log_mustnot datasetexists $snap } log_assert "zfs destroy of held snapshots fails" log_onexit cleanup_testenv setup_testenv snap for dstype in FS VOL; do if [[ $dstype == VOL ]]; then if is_global_zone; then test_snap_run $dstype fi else test_snap_run $dstype fi done log_pass "zfs destroy of held snapshots fails" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_016_po0000644000000000000000000000007313612141513031566 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.96766635 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_016_pos.ksh0000755016037001603700000001243513612141513032543 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # # DESCRIPTION # Verify zfs destroy test for range of snapshots by giving a list # of valid and invalid arguments. # STRATEGY # 1. Create a list of valid and invalid arguments for range snapshot # destroy. # 2. Set up a filesystem and a volume with multiple snapshots # 3. Run zfs destroy for all the arguments and verify existence of snapshots # 4. Verify the destroy for snapshots with clones and hold . $STF_SUITE/include/libtest.shlib function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -R $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/$TESTVOL && \ log_must zfs destroy -Rf $TESTPOOL/$TESTVOL } function setup_snapshots { for i in $snaps; do datasetexists $TESTPOOL/$TESTFS1@snap$i && \ log_must zfs destroy $TESTPOOL/$TESTFS1@snap$i datasetexists $TESTPOOL/$TESTVOL@snap$i && \ log_must zfs destroy $TESTPOOL/$TESTVOL@snap$i log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i log_must zfs snapshot $TESTPOOL/$TESTVOL@snap$i done } function verify_snapshots { typeset snap_exists=${1:-0} if [[ $snap_exists == 1 ]]; then for i in $range; do snapexists $TESTPOOL/$TESTFS1@snap$i || \ log_fail "zfs destroy should not have destroyed" \ "$TESTPOOL/$TESTFS1@snap$i" snapexists $TESTPOOL/$TESTVOL@snap$i || \ log_fail "zfs destroy should not have destroyed" \ "$TESTPOOL/$TESTVOL@snap$i" done else for i in $range; do snapexists $TESTPOOL/$TESTFS1@snap$i && \ log_fail "zfs destroy should have destroyed" \ "$TESTPOOL/$TESTFS1@snap$i" snapexists $TESTPOOL/$TESTVOL@snap$i && \ log_fail "zfs destroy should have destroyed" \ "$TESTPOOL/$TESTVOL@snap$i" done fi } invalid_args="@snap0%snap5 @snap1%snap6 @snap0%snap6 @snap5%snap1 \ @snap1%$TESTPOOL/$TESTFS1@snap5 @snap1%%snap5 @snap1%@snap5 \ @@snap1%snap5 snap1%snap5 snap1%snap3%snap5" valid_args="@snap1%snap5 @%" log_assert "zfs destroy deletes ranges of snapshots" log_onexit cleanup log_must zfs create $TESTPOOL/$TESTFS1 log_must zfs create -V $VOLSIZE $TESTPOOL/$TESTVOL snaps="1 2 3 4 5" log_note "Verify the valid arguments" range="1 2 3 4 5" for args in $valid_args; do setup_snapshots log_must zfs destroy $TESTPOOL/$TESTFS1$args log_must zfs destroy $TESTPOOL/$TESTVOL$args verify_snapshots done log_note "Verify invalid arguments" setup_snapshots for args in $invalid_args; do log_mustnot zfs destroy $TESTPOOL/$TESTFS1$args log_mustnot zfs destroy $TESTPOOL/$TESTVOL$args log_must verify_snapshots 1 done log_note "Destroy the beginning range" log_must zfs destroy $TESTPOOL/$TESTFS1@%snap3 log_must zfs destroy $TESTPOOL/$TESTVOL@%snap3 range="1 2 3" verify_snapshots range="4 5" verify_snapshots 1 setup_snapshots log_note "Destroy the mid range" log_must zfs destroy $TESTPOOL/$TESTFS1@snap2%snap4 log_must zfs destroy $TESTPOOL/$TESTVOL@snap2%snap4 range="2 3 4" verify_snapshots log_must zfs destroy $TESTPOOL/$TESTFS1@snap1%snap5 log_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap5 range="1 5" verify_snapshots setup_snapshots log_note "Destroy the end range" log_must zfs destroy $TESTPOOL/$TESTFS1@snap3% log_must zfs destroy $TESTPOOL/$TESTVOL@snap3% range="1 2" verify_snapshots 1 range="3 4 5" verify_snapshots setup_snapshots log_note "Destroy a simple list" log_must zfs destroy $TESTPOOL/$TESTFS1@snap2,snap4 log_must zfs destroy $TESTPOOL/$TESTVOL@snap2,snap4 range="2 4" verify_snapshots range="1 3 5" verify_snapshots 1 setup_snapshots log_note "Destroy a list and range together" log_must zfs destroy $TESTPOOL/$TESTFS1@snap1%snap3,snap5 log_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap3,snap5 range="1 2 3 5" verify_snapshots range=4 verify_snapshots 1 snaps="1 2 3 5 6 7 8 9 10" setup_snapshots log_note "Destroy a list of ranges" log_must zfs destroy $TESTPOOL/$TESTFS1@snap1%snap3,snap5 log_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap3,snap5 range="1 2 3 5" verify_snapshots range=4 verify_snapshots 1 snaps="1 2 3 4 5" setup_snapshots log_note "Snapshot destroy with hold" range="1 2 3 4 5" for i in 1 2 3 4 5; do log_must zfs hold keep $TESTPOOL/$TESTFS1@snap$i log_must zfs hold keep $TESTPOOL/$TESTVOL@snap$i done log_mustnot zfs destroy $TESTPOOL/$TESTFS1@snap1%snap5 log_mustnot zfs destroy $TESTPOOL/$TESTVOL@snap1%snap5 verify_snapshots 1 for i in 1 2 3 4 5; do log_must zfs release keep $TESTPOOL/$TESTFS1@snap$i log_must zfs release keep $TESTPOOL/$TESTVOL@snap$i done log_must zfs destroy $TESTPOOL/$TESTFS1@snap1%snap5 log_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap5 verify_snapshots log_note "Range destroy for snapshots having clones" setup_snapshots for i in 1 2 3 4 5; do log_must zfs clone $TESTPOOL/$TESTFS1@snap$i $TESTPOOL/$TESTFS1/clone$i done log_must zfs destroy -R $TESTPOOL/$TESTFS1@snap1%snap5 log_must zfs destroy $TESTPOOL/$TESTVOL@snap1%snap5 verify_snapshots log_pass "'zfs destroy' successfully destroys ranges of snapshots" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_001_po0000644000000000000000000000007413612141514031562 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.933665258 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_001_pos.ksh0000755016037001603700000001446513612141514032543 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib # # DESCRIPTION: # 'zfs destroy -r|-rf|-R|-Rf ' should recursively destroy # all children and clones based on options. # # STRATEGY: # 1. Create test environment according to options. There are three test # models can be created. Only ctr, fs & vol; with snap; with clone. # 2. According to option, make the dataset busy or not. # 3. Run 'zfs destroy [-rRf] ' # 4. According to dataset and option, check if get the expected results. # verify_runnable "both" # # According to parameters, 1st, create suitable testing environment. 2nd, # run 'zfs destroy $opt '. 3rd, check the system status. # # $1 option of 'zfs destroy' # $2 dataset will be destroyed. # function test_n_check { typeset opt=$1 typeset dtst=$2 if ! is_global_zone ; then if [[ $dtst == $VOL || $dtst == $VOLSNAP ]]; then log_note "UNSUPPORTED: Volume are unavailable in LZ." return fi fi # '-f' has no effect on non-filesystems if [[ $opt == -f ]]; then if [[ $dtst != $FS ]]; then log_note "UNSUPPORTED: '-f ' is only available for " \ "leaf FS." return fi fi # Clean the test environment and make it clear. if datasetexists $CTR; then log_must zfs destroy -Rf $CTR fi # According to option create test compatible environment. case $opt in -r|-rf) setup_testenv snap ;; -R|-Rf) setup_testenv clone ;; -f) setup_testenv ;; *) log_fail "Incorrect option: '$opt'." ;; esac # # According to different dataset type, create busy condition when try to # destroy this dataset. # typeset mpt_dir case $dtst in $CTR|$FS) if [[ $opt == *f* ]]; then mpt_dir=$(get_prop mountpoint $FS) pidlist="$pidlist $(mkbusy \ $mpt_dir/$TESTFILE0)" log_note "mkbusy $mpt_dir/$TESTFILE0 " \ "(pidlist: $pidlist)" [[ -z $pidlist ]] && \ log_fail "Failure from mkbusy" log_mustnot zfs destroy -rR $dtst fi ;; $VOL) if [[ $opt == *f* ]]; then pidlist="$pidlist $(mkbusy \ $TESTDIR1/$TESTFILE0)" log_note "mkbusy $TESTDIR1/$TESTFILE0 " \ "(pidlist: $pidlist)" [[ -z $pidlist ]] && \ log_fail "Failure from mkbusy" log_mustnot zfs destroy -rR $dtst fi ;; $VOLSNAP) if [[ $opt == *f* ]]; then pidlist="$pidlist $(mkbusy \ $TESTDIR1/$TESTFILE0)" log_note "mkbusy $TESTDIR1/$TESTFILE0 " \ "(pidlist: $pidlist)" [[ -z $pidlist ]] && \ log_fail "Failure from mkbusy" log_must_busy zfs destroy -rR $dtst log_must zfs snapshot $dtst fi ;; $FSSNAP) if [[ $opt == *f* ]]; then mpt_dir=$(snapshot_mountpoint $dtst) pidlist="$pidlist $(mkbusy $mpt_dir)" log_note "mkbusy $mpt_dir (pidlist: $pidlist)" [[ -z $pidlist ]] && \ log_fail "Failure from mkbusy" if is_linux ; then log_mustnot zfs destroy -rR $dtst else log_must zfs destroy -rR $dtst log_must zfs snapshot $dtst fi fi ;; *) log_fail "Unsupported dataset: '$dtst'." esac # Kill any lingering instances of mkbusy, and clear the list. if is_linux ; then [[ -z $pidlist ]] || log_must kill -TERM $pidlist pidlist="" log_mustnot pgrep -fl mkbusy fi # Firstly, umount ufs filesystem which was created by zfs volume. if is_global_zone; then log_must umount -f $TESTDIR1 fi # Invoke 'zfs destroy [-rRf] ' log_must_busy zfs destroy $opt $dtst block_device_wait # Kill any lingering instances of mkbusy, and clear the list. if ! is_linux ; then [[ -z $pidlist ]] || log_must kill -TERM $pidlist pidlist="" log_mustnot pgrep -fl mkbusy fi case $dtst in $CTR) check_dataset datasetnonexists \ $CTR $FS $VOL $FSSNAP $VOLSNAP if [[ $opt == *R* ]]; then check_dataset datasetnonexists \ $FSCLONE $VOLCLONE fi ;; $FS) check_dataset datasetexists $CTR $VOL check_dataset datasetnonexists $FS if [[ $opt != -f ]]; then check_dataset datasetexists $VOLSNAP check_dataset datasetnonexists $FSSNAP fi if [[ $opt == *R* ]]; then check_dataset datasetexists $VOLCLONE check_dataset datasetnonexists $FSCLONE fi ;; $VOL) check_dataset datasetexists $CTR $FS $FSSNAP check_dataset datasetnonexists $VOL $VOLSNAP if [[ $opt == *R* ]]; then check_dataset datasetexists $FSCLONE check_dataset datasetnonexists $VOLCLONE fi ;; $FSSNAP) check_dataset datasetexists $CTR $FS $VOL $VOLSNAP check_dataset datasetnonexists $FSSNAP if [[ $opt == *R* ]]; then check_dataset datasetexists $VOLCLONE check_dataset datasetnonexists $FSCLONE fi ;; $VOLSNAP) check_dataset datasetexists $CTR $FS $VOL $FSSNAP check_dataset datasetnonexists $VOLSNAP if [[ $opt == *R* ]]; then check_dataset datasetexists $FSCLONE check_dataset datasetnonexists $VOLCLONE fi ;; esac log_note "'zfs destroy $opt $dtst' passed." } log_assert "'zfs destroy -r|-R|-f|-rf|-Rf ' should " \ "recursively destroy all children." log_onexit cleanup_testenv typeset dtst="" typeset opt="" typeset pidlist="" for dtst in $CTR $FS $VOL $FSSNAP $VOLSNAP; do for opt in "-r" "-R" "-f" "-rf" "-Rf"; do log_note "Starting test: zfs destroy $opt $dtst" test_n_check $opt $dtst done done log_pass "'zfs destroy -r|-R|-f|-rf|-Rf ' passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_004_po0000644000000000000000000000007413607166133031575 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.940665482 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_004_pos.ksh0000755016037001603700000000563413607166133032554 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg # # DESCRIPTION: # Verify 'zfs destroy -f' succeeds as root. # # STRATEGY: # 1. Create filesystem in the storage pool # 2. Set mountpoint for the filesystem and make it busy # 3. Verify that 'zfs destroy' fails to destroy the filesystem # 4. Verify 'zfs destroy -f' succeeds to destroy the filesystem. # verify_runnable "both" function cleanup { cd $olddir datasetexists $clone && \ log_must zfs destroy -f $clone snapexists $snap && \ log_must zfs destroy -f $snap for fs in $fs1 $fs2; do datasetexists $fs && \ log_must zfs destroy -f $fs done for dir in $TESTDIR1 $TESTDIR2; do [[ -d $dir ]] && \ log_must rm -rf $dir done } log_assert "Verify that 'zfs destroy -f' succeeds as root. " log_onexit cleanup # # Preparations for testing # olddir=$PWD for dir in $TESTDIR1 $TESTDIR2; do [[ ! -d $dir ]] && \ log_must mkdir -p $dir done fs1=$TESTPOOL/$TESTFS1 mntp1=$TESTDIR1 fs2=$TESTPOOL/$TESTFS2 snap=$TESTPOOL/$TESTFS2@snap clone=$TESTPOOL/$TESTCLONE mntp2=$TESTDIR2 # # Create filesystem and clone in the storage pool, mount them and # make the mountpoint busy # for fs in $fs1 $fs2; do log_must zfs create $fs done log_must zfs snapshot $snap log_must zfs clone $snap $clone log_must zfs set mountpoint=$mntp1 $fs1 log_must zfs set mountpoint=$mntp2 $clone for arg in "$fs1 $mntp1" "$clone $mntp2"; do fs=`echo $arg | awk '{print $1}'` mntp=`echo $arg | awk '{print $2}'` log_note "Verify that 'zfs destroy' fails to" \ "destroy filesystem when it is busy." cd $mntp log_mustnot zfs destroy $fs if is_linux; then log_mustnot zfs destroy -f $fs datasetnonexists $fs && \ log_fail "'zfs destroy -f' destroyed busy filesystem." else log_must zfs destroy -f $fs datasetexists $fs && \ log_fail "'zfs destroy -f' fail to destroy busy filesystem." fi cd $olddir done log_pass "'zfs destroy -f' succeeds as root." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy.cfg0000644000000000000000000000007413607166147031257 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.927665065 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg0000644016037001603700000000233513607166147031257 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export TESTFSCLONE=${TESTFS}clone export TESTVOLCLONE=${TESTVOL}clone export CTR=$TESTPOOL/$TESTCTR export FS=$CTR/$TESTFS export VOL=$CTR/$TESTVOL export FSSNAP=$FS@$TESTSNAP export VOLSNAP=$VOL@$TESTSNAP export FSCLONE=$TESTPOOL/$TESTFSCLONE export VOLCLONE=$TESTPOOL/$TESTVOLCLONE zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_common0000644000000000000000000000007413612141513032053 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.924664968 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib0000644016037001603700000000671213612141513033331 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg # # Create or recover a set of test environment which include ctr, vol, fs, # snap & clone. It looks like the following. # # pool # |ctr # | |fs # | | |fssnap # | |vol # | |volsnap # |fsclone # |volclone # # $1 indicate which dependent dataset need be created. Such as 'snap', 'clone'. # function setup_testenv #[dtst] { typeset dtst=$1 if ! datasetexists $CTR; then log_must zfs create $CTR fi if ! datasetexists $FS; then log_must zfs create $FS fi # Volume test is only available on global zone if ! datasetexists $VOL && is_global_zone; then log_must zfs create -V $VOLSIZE $VOL block_device_wait echo "y" | newfs $ZVOL_DEVDIR/$VOL > /dev/null 2>&1 if (( $? == 0 )); then log_note "SUCCESS: newfs $ZVOL_DEVDIR/$VOL>/dev/null" else log_fail "newfs $ZVOL_DEVDIR/$VOL > /dev/null" fi if [[ ! -d $TESTDIR1 ]]; then log_must mkdir $TESTDIR1 fi log_must mount $ZVOL_DEVDIR/$VOL $TESTDIR1 fi if [[ $dtst == snap || $dtst == clone ]]; then if ! datasetexists $FSSNAP; then log_must zfs snapshot $FSSNAP fi if ! datasetexists $VOLSNAP && is_global_zone; then log_must zfs snapshot $VOLSNAP fi fi if [[ $dtst == clone ]]; then if ! datasetexists $FSCLONE; then log_must zfs clone $FSSNAP $FSCLONE fi if ! datasetexists $VOLCLONE && is_global_zone; then log_must zfs clone $VOLSNAP $VOLCLONE block_device_wait fi fi } # Clean up the testing environment # function cleanup_testenv { if is_global_zone && ismounted "$TESTDIR1" "$NEWFS_DEFAULT_FS" ; then log_must umount -f $TESTDIR1 fi if [[ -d $TESTDIR1 ]]; then log_must rm -rf $TESTDIR1 fi pkill mkbusy if datasetexists $CTR; then log_must zfs destroy -Rf $CTR fi } # # Delete volume and related datasets from list, if the test cases was # running in local zone. Then check them are existed or non-exists. # # $1 function name # $2-n datasets name # function check_dataset { typeset funname=$1 typeset newlist="" typeset dtst shift for dtst in "$@"; do # Volume and related stuff are unavailable in local zone if ! is_global_zone; then if [[ $dtst == $VOL || $dtst == $VOLSNAP || \ $dtst == $VOLCLONE ]] then continue fi fi newlist="$newlist $dtst" done if (( ${#newlist} != 0 )); then # Run each item in $newlist individually so on failure, the # problematic dataset is listed in the logs. for i in $newlist; do log_must $funname $i done fi } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_005_ne0000644000000000000000000000007413612141514031552 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.942665546 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_005_neg.ksh0000755016037001603700000001345713612141514032517 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright (c) 2018 Datto Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib # # DESCRIPTION: # Separately verify 'zfs destroy -f|-r|-rf|-R|-rR ' will fail in # different conditions. # # STRATEGY: # 1. Create pool, fs & vol. # 2. Create snapshot for fs & vol. # 3. Invoke 'zfs destroy ''|-f ', it should fail. # 4. Create clone for fs & vol. # 5. Invoke 'zfs destroy -r|-rf ', it should fail. # 6. Write file to filesystem or enter snapshot mountpoint. # 7. Invoke 'zfs destroy -R|-rR ', it should fail. # verify_runnable "both" log_assert "Separately verify 'zfs destroy -f|-r|-rf|-R|-rR ' will " \ "fail in different conditions." log_onexit cleanup_testenv # # Run 'zfs destroy [-rRf] ', make sure it fail. # # $1 the collection of options # $2 the collection of datasets # function negative_test { typeset options=$1 typeset datasets=$2 for dtst in $datasets; do if ! is_global_zone; then if [[ $dtst == $VOL || $dtst == $VOLSNAP || \ $dtst == $VOLCLONE ]] then log_note "UNSUPPORTED: " \ "Volume is unavailable in LZ." continue fi fi for opt in $options; do log_mustnot zfs destroy $opt $dtst done done } # # Create snapshots for filesystem and volume, # and verify 'zfs destroy' fails without '-r' or '-R'. # setup_testenv snap negative_test "-f" "$CTR $FS $VOL" # # Create clones for filesystem and volume, # and verify 'zfs destroy' fails without '-R'. # setup_testenv clone negative_test "-r -rf" "$CTR $FS $VOL" # # Get $FS mountpoint and make it busy, and verify 'zfs destroy $CTR' fails # without '-f'. Then verify the remaining datasets are correct. See below for # an explanation of what 'correct' means for this test. # mntpt=$(get_prop mountpoint $FS) pidlist=$(mkbusy $mntpt/$TESTFILE0) log_note "mkbusy $mntpt/$TESTFILE0 (pidlist: $pidlist)" [[ -z $pidlist ]] && log_fail "Failure from mkbusy" negative_test "-R -rR" $CTR # The following busy datasets will still exist check_dataset datasetexists $CTR $FS $VOL # The following datasets will not exist because of best-effort recursive destroy if datasetexists $VOLSNAP || datasetexists $FSSNAP; then log_must zfs list -rtall log_fail "Unexpected datasets remaining" fi # # Create the clones for test environment, and verify 'zfs destroy $FS' fails # without '-f'. Then verify the FS snap and clone are the only datasets # that were removed. # setup_testenv clone negative_test "-R -rR" $FS check_dataset datasetexists $CTR $FS $VOL $VOLSNAP $VOLCLONE check_dataset datasetnonexists $FSSNAP $FSCLONE log_must kill $pidlist log_mustnot pgrep -fl mkbusy pidlist="" # # Create the clones for test environment and make the volume busy. # Then verify 'zfs destroy $CTR' fails without '-f'. # # Then verify the expected datasets exist (see below). # if is_global_zone; then setup_testenv clone pidlist=$(mkbusy $TESTDIR1/$TESTFILE0) log_note "mkbusy $TESTDIR1/$TESTFILE0 (pidlist: $pidlist)" [[ -z $pidlist ]] && log_fail "Failure from mkbusy" negative_test "-R -rR" $CTR check_dataset datasetexists $CTR $VOL check_dataset datasetnonexists $VOLSNAP $VOLCLONE # Due to recursive destroy being a best-effort operation, # all of the non-busy datasets below should be gone now. check_dataset datasetnonexists $FS $FSSNAP $FSCLONE fi # # Create the clones for test environment and make the volume busy. # Then verify 'zfs destroy $VOL' fails without '-f'. # # Then verify the snapshot and clone are destroyed, but nothing else is. # if is_global_zone; then setup_testenv clone negative_test "-R -rR" $VOL check_dataset datasetexists $CTR $VOL $FS $FSSNAP $FSCLONE check_dataset datasetnonexists $VOLSNAP $VOLCLONE fi log_must kill $pidlist log_mustnot pgrep -fl mkbusy pidlist="" # # Create the clones for test environment and make the snapshot busy. # # For Linux verify 'zfs destroy $snap' fails due to the busy mount point. Then # verify the snapshot remains and the clone was destroyed, but nothing else is. # # Under illumos verify 'zfs destroy $snap' succeeds without '-f'. Then verify # the snapshot and clone are destroyed, but nothing else is. # mntpt=$(snapshot_mountpoint $FSSNAP) pidlist=$(mkbusy $mntpt) log_note "mkbusy $mntpt (pidlist: $pidlist)" [[ -z $pidlist ]] && log_fail "Failure from mkbusy" for option in -R -rR ; do setup_testenv clone if is_linux; then log_mustnot zfs destroy $option $FSSNAP check_dataset datasetexists $CTR $FS $VOL $FSSNAP check_dataset datasetnonexists $FSCLONE else log_must zfs destroy $option $FSSNAP check_dataset datasetexists $CTR $FS $VOL check_dataset datasetnonexists $FSSNAP $FSCLONE fi done log_must kill $pidlist log_mustnot pgrep -fl mkbusy pidlist="" log_pass "zfs destroy -f|-r|-rf|-R|-rR ' failed in different " \ "condition passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147030257 xustar000000000000000030 atime=1579730435.005319045 30 ctime=1579730476.970666446 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/Makefile.am0000644016037001603700000000117213607166147030255 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_destroy dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_destroy_001_pos.ksh \ zfs_destroy_002_pos.ksh \ zfs_destroy_003_pos.ksh \ zfs_destroy_004_pos.ksh \ zfs_destroy_005_neg.ksh \ zfs_destroy_006_neg.ksh \ zfs_destroy_007_neg.ksh \ zfs_destroy_008_pos.ksh \ zfs_destroy_009_pos.ksh \ zfs_destroy_010_pos.ksh \ zfs_destroy_011_pos.ksh \ zfs_destroy_012_pos.ksh \ zfs_destroy_013_neg.ksh \ zfs_destroy_014_pos.ksh \ zfs_destroy_015_pos.ksh \ zfs_destroy_016_pos.ksh dist_pkgdata_DATA = \ zfs_destroy_common.kshlib \ zfs_destroy.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_002_po0000644000000000000000000000007413607166133031573 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.935665322 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_002_pos.ksh0000755016037001603700000000515713607166133032552 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg # # DESCRIPTION: # 'zfs destroy ' can successfully destroy # the specified dataset which has no active dependents. # # STRATEGY: # 1. Create a filesystem,volume and snapshot in the storage pool # 2. Destroy the filesystem,volume and snapshot # 3. Verify the datasets are destroyed successfully # verify_runnable "both" function cleanup { typeset -i i=0 while (( $i < ${#data_objs[*]} )); do destroy_dataset "${data_objs[i]}" "-rf" ((i = i + 1)) done } log_assert "Verify 'zfs destroy' can destroy the specified datasets without active" \ "dependents." log_onexit cleanup if is_global_zone ; then set -A data_objs "$TESTPOOL/$TESTFS@$TESTSNAP" "$TESTPOOL/$TESTFS1" \ "$TESTPOOL/$TESTVOL" "$TESTPOOL/$TESTVOL1" else set -A data_objs "$TESTPOOL/$TESTFS@$TESTSNAP" "$TESTPOOL/$TESTFS1" fi log_must zfs create $TESTPOOL/$TESTFS1 log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP if is_global_zone ; then log_must zfs create -V $VOLSIZE $TESTPOOL/$TESTVOL # Max volume size is 1TB on 32-bit systems [[ is_32bit ]] && \ BIGVOLSIZE=1Tb log_must zfs create -sV $BIGVOLSIZE $TESTPOOL/$TESTVOL1 fi typeset -i i=0 while (( $i < ${#data_objs[*]} )); do datasetexists ${data_objs[i]} || \ log_fail "Create || fail." ((i = i + 1)) done i=0 while (( $i < ${#data_objs[*]} )); do destroy_dataset "${data_objs[i]}" datasetexists ${data_objs[i]} && \ log_fail "'zfs destroy ||' fail." ((i = i + 1)) done log_pass "'zfs destroy ||' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_003_po0000644000000000000000000000007413607166133031574 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.937665386 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_003_pos.ksh0000755016037001603700000001015513607166133032545 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg # # DESCRIPTION: # Verify 'zfs destroy [-rR]' succeeds as root. # # STRATEGY: # 1. Create two datasets in the storage pool # 2. Create fs,vol,ctr,snapshot and clones of snapshot in the two datasets # 3. Create clone in the second dataset for the snapshot in the first dataset # 4. Verify 'zfs destroy -r' fails to destroy dataset with clone outside it # 5. Verify 'zfs destroy -R' succeeds to destroy dataset with clone outside it # 6. Verify 'zfs destroy -r' succeeds to destroy dataset without clone outside it. # verify_runnable "both" function cleanup { for obj in $ctr2 $ctr1 $ctr; do datasetexists $obj && \ log_must zfs destroy -Rf $obj done for mntp in $TESTDIR1 $TESTDIR2; do [[ -d $mntp ]] && \ log_must rm -rf $mntp done } log_assert "Verify that 'zfs destroy [-rR]' succeeds as root. " log_onexit cleanup # # Preparations for testing # for dir in $TESTDIR1 $TESTDIR2; do [[ ! -d $dir ]] && \ log_must mkdir -p $dir done ctr=$TESTPOOL/$TESTCTR ctr1=$TESTPOOL/$TESTCTR1 ctr2=$ctr/$TESTCTR2 ctr3=$ctr1/$TESTCTR2 child_fs=$ctr/$TESTFS1 child_fs1=$ctr1/$TESTFS2 child_fs_mntp=$TESTDIR1 child_fs1_mntp=$TESTDIR2 child_vol=$ctr/$TESTVOL child_vol1=$ctr1/$TESTVOL child_fs_snap=$child_fs@snap child_fs1_snap=$child_fs1@snap child_fs_snap_clone=$ctr/$TESTCLONE child_fs_snap_clone1=$ctr1/${TESTCLONE}_across_ctr child_fs_snap_clone2=$ctr2/$TESTCLONE2 child_fs1_snap_clone=$ctr1/$TESTCLONE1 child_fs1_snap_clone1=$ctr/${TESTCLONE1}_across_ctr # # Create two datasets in the storage pool # log_must zfs create $ctr log_must zfs create $ctr1 # # Create children datasets fs,vol,snapshot in the datasets, and # clones across two datasets # log_must zfs create $ctr2 for fs in $child_fs $child_fs1; do log_must zfs create $fs done log_must zfs set mountpoint=$child_fs_mntp $child_fs log_must zfs set mountpoint=$child_fs1_mntp $child_fs1 for snap in $child_fs_snap $child_fs1_snap; do log_must zfs snapshot $snap done if is_global_zone ; then for vol in $child_vol $child_vol1; do log_must zfs create -V $VOLSIZE $vol done fi for clone in $child_fs_snap_clone $child_fs_snap_clone1; do log_must zfs clone $child_fs_snap $clone done for clone in $child_fs1_snap_clone $child_fs1_snap_clone1; do log_must zfs clone $child_fs1_snap $clone done log_note "Verify that 'zfs destroy -r' fails to destroy dataset " \ "with dependent clone outside it." for obj in $child_fs $child_fs1 $ctr $ctr1; do log_mustnot zfs destroy -r $obj datasetexists $obj || \ log_fail "'zfs destroy -r' fails to keep dependent " \ "clone outside the hierarchy." done log_note "Verify that 'zfs destroy -R' succeeds to destroy dataset " \ "with dependent clone outside it." log_must zfs destroy -R $ctr1 datasetexists $ctr1 && \ log_fail "'zfs destroy -R' fails to destroy dataset with clone outside it." log_note "Verify that 'zfs destroy -r' succeeds to destroy dataset " \ "without dependent clone outside it." log_must zfs destroy -r $ctr datasetexists $ctr && \ log_fail "'zfs destroy -r' fails to destroy dataset with clone outside it." log_pass "'zfs destroy [-rR] succeeds as root." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/setup.ksh0000644000000000000000000000007313607166133030064 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.92966513 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/setup.ksh0000755016037001603700000000173713607166133030075 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030354 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.931665194 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/cleanup.ksh0000755016037001603700000000176213607166133030362 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_015_po0000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.965666286 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_015_pos.ksh0000755016037001603700000001240713607166133032552 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # # DESCRIPTION # zfs destroy can destroy a list of multiple # snapshots from the same datasets # # STRATEGY # 1. Create multiple snapshots for the same datset # 2. Run zfs destroy for these snapshots for a mix of valid and # invalid snapshot names # 3. Run zfs destroy for snapshots from different datasets and # pools . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg function cleanup { datasetexists $TESTPOOL/$TESTFS1 && zfs destroy -R $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/$TESTFS2 && zfs destroy -R $TESTPOOL/$TESTFS2 poolexists $TESTPOOL2 && zpool destroy $TESTPOOL2 rm -rf $VIRTUAL_DISK } log_assert "zfs destroy for multiple snapshot is handled correctly" log_onexit cleanup zfs create $TESTPOOL/$TESTFS1 typeset -i i=1 snaplist="" log_note "zfs destroy on valid snapshot names" for i in 1 2 3 4 5; do log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i snaplist=$snaplist,snap$i done snaplist=${snaplist#,} log_must zfs destroy $TESTPOOL/$TESTFS1@$snaplist for i in 1 2 3 4 5; do log_mustnot snapexists $TESTPOOL/$TESFS1@snap$i done log_note "zfs destroy with all bogus snapshot names" log_mustnot zfs destroy $TESTPOOL/$TESTFS1@snap12,snap21,sna@pple1@,s""nappy2 log_note "zfs destroy with some bogus snapshot names" for i in 1 2 3; do log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i done log_must zfs destroy $TESTPOOL/$TESTFS1@snap1,snap2,snapple1,snappy2,snap3 for i in 1 2 3; do log_mustnot snapexists $TESTPOOL/$TESTFS1@snap$i done log_note "zfs destroy with some snapshot names having special characters" for i in 1 2 3; do log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i done log_must zfs destroy $TESTPOOL/$TESTFS1@snap1,@,snap2,,,,snap3, for i in 1 2 3; do log_mustnot snapexists $TESTPOOL/$TESTFS1@snap$i done log_note "zfs destroy for too many snapshots" snaplist="" for i in {1..100}; do log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i snaplist=$snaplist,snap$i done snaplist=${snaplist#,} log_must zfs destroy $TESTPOOL/$TESTFS1@$snaplist for i in {1..100}; do log_mustnot snapexists $TESTPOOL/$TESTFS1@snap$i done log_note "zfs destroy multiple snapshots with hold" snaplist="" for i in 1 2 3 4 5; do log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i log_must zfs hold keep $TESTPOOL/$TESTFS1@snap$i snaplist=$snaplist,snap$i done snaplist=${snaplist#,} log_mustnot zfs destroy $TESTPOOL/$TESTFS1@$snaplist for i in 1 2 3 4 5; do log_must zfs release keep $TESTPOOL/$TESTFS1@snap$i done log_must zfs destroy $TESTPOOL/$TESTFS1@$snaplist log_note "zfs destroy for multiple snapshots having clones" for i in 1 2 3 4 5; do log_must zfs snapshot $TESTPOOL/$TESTFS1@snap$i done snaplist="" for i in 1 2 3 4 5; do log_must zfs clone $TESTPOOL/$TESTFS1@snap$i $TESTPOOL/$TESTFS1/clone$i snaplist=$snaplist,snap$i done snaplist=${snaplist#,} log_mustnot zfs destroy $TESTPOOL/$TESTFS1@$snaplist for i in 1 2 3 4 5; do log_must snapexists $TESTPOOL/$TESTFS1@snap$i log_must zfs destroy $TESTPOOL/$TESTFS1/clone$i done log_note "zfs destroy for snapshots for different datasets" log_must zfs create $TESTPOOL/$TESTFS2 log_must zfs snapshot $TESTPOOL/$TESTFS2@fs2snap log_must zfs create $TESTPOOL/$TESTFS1/$TESTFS2 log_must zfs snapshot $TESTPOOL/$TESTFS1/$TESTFS2@fs12snap long_arg=$TESTPOOL/$TESTFS1@snap1,$TESTPOOL/$TESTFS2@fs2snap, long_arg=$long_arg$TESTPOOL/$TESTFS1/$TESTFS2@fs12snap log_must zfs destroy $long_arg log_mustnot snapexists $TESTPOOL/$TESTFS1@snap1 log_must snapexists $TESTPOOL/$TESTFS2@fs2snap log_must snapexists $TESTPOOL/$TESTFS1/$TESTFS2@fs12snap log_must zfs destroy $TESTPOOL/$TESTFS1@fs2snap,fs12snap,snap2 log_must snapexists $TESTPOOL/$TESTFS2@fs2snap log_must snapexists $TESTPOOL/$TESTFS1/$TESTFS2@fs12snap log_mustnot snapexists $TESTPOOL/$TESTFS1@snap2 log_must zfs destroy $TESTPOOL/$TESTFS2@fs2snap,fs12snap,snap3 log_mustnot snapexists $TESTPOOL/$TESTFS2@fs2snap log_must snapexists $TESTPOOL/$TESTFS1/$TESTFS2@fs12snap log_must snapexists $TESTPOOL/$TESTFS1@snap3 log_note "zfs destroy for snapshots from different pools" VIRTUAL_DISK=$TEST_BASE_DIR/disk log_must mkfile $MINVDEVSIZE $VIRTUAL_DISK log_must zpool create $TESTPOOL2 $VIRTUAL_DISK log_must poolexists $TESTPOOL2 log_must zfs create $TESTPOOL2/$TESTFS1 log_must zfs snapshot $TESTPOOL2/$TESTFS1@snap long_arg=$TESTPOOL2/$TESTFS1@snap,$TESTPOOL/$TESTFS1@snap3, long_arg=$long_arg$TESTPOOL/$TESTFS1@snap5 log_must zfs destroy $long_arg log_mustnot snapexists $TESTPOOL2/$TESTFS1@snap log_must snapexists $TESTPOOL/$TESTFS1@snap3 log_must snapexists $TESTPOOL/$TESTFS1@snap5 log_must zfs snapshot $TESTPOOL2/$TESTFS1@snap log_must zfs destroy $TESTPOOL2/$TESTFS1@snap5,snap3,snap log_mustnot snapexists $TESTPOOL2/$TESTFS1@snap log_must snapexists $TESTPOOL/$TESTFS1@snap3 log_must snapexists $TESTPOOL/$TESTFS1@snap5 log_pass "zfs destroy for multiple snapshots passes" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_012_po0000644000000000000000000000007313607166133031573 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.95866606 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_012_pos.ksh0000755016037001603700000000425113607166133032545 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib ################################################################################ # # Deferred destroyed snapshots remain until the last hold is released. # # 1. Create test environment without clones. # 2. 'zfs hold ' # 3. 'zfs destroy -d ' # 4. Sequence of holds/releases including invalid ones that should fail. # 4. Verify snapshot still exists. # 5. Release all holds. # 6. Verify that the snapshot is destroyed. # ################################################################################ function test_snap_run { typeset dstype=$1 snap=$(eval echo \$${dstype}SNAP) log_must zfs hold zfstest1 $snap log_must zfs destroy -d $snap log_must datasetexists $snap log_must eval "[[ $(get_prop defer_destroy $snap) == 'on' ]]" log_must zfs hold zfstest2 $snap log_mustnot zfs hold zfstest1 $snap log_mustnot zfs hold zfstest2 $snap log_must zfs release zfstest1 $snap log_must datasetexists $snap log_mustnot zfs release zfstest1 $snap log_must datasetexists $snap log_mustnot zfs release zfstest3 $snap log_must datasetexists $snap log_must zfs release zfstest2 $snap log_mustnot datasetexists $snap } log_assert "deferred destroyed snapshots remain until last hold is released" log_onexit cleanup_testenv setup_testenv snap for dstype in FS VOL; do if [[ $dstype == VOL ]]; then if is_global_zone; then test_snap_run $dstype fi else test_snap_run $dstype fi done log_pass "deferred destroyed snapshots remain until last hold is released" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_006_ne0000644000000000000000000000007413607166133031563 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.945665643 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_006_neg.ksh0000755016037001603700000000422113607166133032515 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg # # DESCRIPTION: # 'zfs destroy' should return an error with badly formed parameters, # including null destroyed object parameter, invalid options excluding # '-r' and '-f', non-existent datasets. # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute 'zfs destroy' # 3. Verify an error is returned. # verify_runnable "both" set -A args "" "-r" "-f" "-rf" "-fr" "$TESTPOOL" "-f $TESTPOOL" \ "-? $TESTPOOL/$TESTFS" "$TESTPOOL/blah"\ "-r $TESTPOOL/blah" "-f $TESTPOOL/blah" "-rf $TESTPOOL/blah" \ "-fr $TESTPOOL/blah" "-$ $TESTPOOL/$TESTFS" "-5 $TESTPOOL/$TESTFS" \ "-rfgh $TESTPOOL/$TESTFS" "-rghf $TESTPOOL/$TESTFS" \ "$TESTPOOL/$TESTFS@blah" "/$TESTPOOL/$TESTFS" "-f /$TESTPOOL/$TESTFS" \ "-rf /$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTFS $TESTPOOL/$TESTFS" \ "-rRf $TESTPOOL/$TESTFS $TESTPOOL/$TESTFS" log_assert "'zfs destroy' should return an error with badly-formed parameters." typeset -i i=0 while (( $i < ${#args[*]} )); do log_mustnot zfs destroy ${args[i]} ((i = i + 1)) done log_pass "'zfs destroy' badly formed parameters fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_009_po0000644000000000000000000000007413607166133031602 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.951665836 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_009_pos.ksh0000755016037001603700000000434713607166133032561 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib ################################################################################ # # 'zfs destroy -d ' should mark snapshot for deferred destroy when # clone exists and destroy when clone is destroyed. # # 1. Create test environment with clones. # 2. 'zfs destroy -d ' # 3. Verify snapshot is marked for deferred destroy. # 4. 'zfs destroy ' # 3. Verify that the snapshot and clone are destroyed. # ################################################################################ function test_c_run { typeset dstype=$1 snap=$(eval echo \$${dstype}SNAP) clone=$(eval echo \$${dstype}CLONE) log_must zfs destroy -d $snap log_must datasetexists $snap log_must eval "[[ $(get_prop defer_destroy $snap) == 'on' ]]" log_must zfs destroy $clone log_mustnot datasetexists $snap log_mustnot datasetexists $clone } log_assert "'zfs destroy -d ' marks cloned snapshot for deferred destroy" log_onexit cleanup_testenv setup_testenv clone for dstype in FS VOL; do if [[ $dstype == VOL ]]; then if is_global_zone; then test_c_run $dstype fi else test_c_run $dstype fi done log_pass "'zfs destroy -d ' marks cloned snapshot for deferred destroy" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143003030240 xustar000000000000000030 mtime=1579730435.043320266 30 atime=1579730454.835955749 29 ctime=1579730476.97266651 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/Makefile.in0000664016037001603700000006227013612143003030254 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_destroy DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_destroy ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_destroy_001_pos.ksh \ zfs_destroy_002_pos.ksh \ zfs_destroy_003_pos.ksh \ zfs_destroy_004_pos.ksh \ zfs_destroy_005_neg.ksh \ zfs_destroy_006_neg.ksh \ zfs_destroy_007_neg.ksh \ zfs_destroy_008_pos.ksh \ zfs_destroy_009_pos.ksh \ zfs_destroy_010_pos.ksh \ zfs_destroy_011_pos.ksh \ zfs_destroy_012_pos.ksh \ zfs_destroy_013_neg.ksh \ zfs_destroy_014_pos.ksh \ zfs_destroy_015_pos.ksh \ zfs_destroy_016_pos.ksh dist_pkgdata_DATA = \ zfs_destroy_common.kshlib \ zfs_destroy.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_destroy/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_destroy/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_011_po0000644000000000000000000000007413607166133031573 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.956665996 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_011_pos.ksh0000755016037001603700000000347213607166133032550 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib ################################################################################ # # 'zfs destroy -d ' should mark snapshot for deferred destroy when # there is a user hold. # # 1. Create test environment without clones. # 2. 'zfs hold ' # 3. 'zfs destroy -d ' # 4. Verify snapshot is marked for deferred destroy. # 5. 'zfs release ' # 6. Verify that the snapshot is destroyed. # ################################################################################ function test_snap_run { typeset dstype=$1 snap=$(eval echo \$${dstype}SNAP) log_must zfs hold zfstest $snap log_must zfs destroy -d $snap log_must datasetexists $snap log_must eval "[[ $(get_prop defer_destroy $snap) == 'on' ]]" log_must zfs release zfstest $snap log_mustnot datasetexists $snap } log_assert "'zfs destroy -d ' marks held snapshot for deferred destroy" log_onexit cleanup_testenv setup_testenv snap for dstype in FS VOL; do if [[ $dstype == VOL ]]; then if is_global_zone; then test_snap_run $dstype fi else test_snap_run $dstype fi done log_pass "'zfs destroy -d ' marks held snapshot for deferred destroy" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/PaxHeaders.151519/zfs_destroy_008_po0000644000000000000000000000007413607166133031601 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.949665772 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_destroy/zfs_destroy_008_pos.ksh0000755016037001603700000000354613607166133032560 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy.cfg . $STF_SUITE/tests/functional/cli_root/zfs_destroy/zfs_destroy_common.kshlib ################################################################################ # # 'zfs destroy -d ' should destroy the snapshot when no clone exists. # # 1. Create test environment without clones. # 2. 'zfs destroy -d ' # 3. Verify that the snapshot was destroyed. # ################################################################################ function test_s_run { typeset snap=$1 log_must zfs destroy -d $snap log_mustnot datasetexists $snap } log_assert "'zfs destroy -d ' destroys snapshot if there is no clone" log_onexit cleanup_testenv setup_testenv snap for snap in $FSSNAP $VOLSNAP; do if [[ $snap == $VOLSNAP ]]; then if is_global_zone; then test_s_run $snap fi else test_s_run $snap fi done log_pass "'zfs destroy -d ' destroys snapshot if there is no clone" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_upgrade0000644000000000000000000000013213612143060026421 xustar000000000000000030 mtime=1579730480.636784159 30 atime=1579730489.091055613 30 ctime=1579730480.636784159 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/0000775016037001603700000000000013612143060026502 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade_000000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.610783323 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_002_pos.ksh0000755016037001603700000000312513607166133033341 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib # # DESCRIPTION: # import pools of all versions - zpool upgrade on each pools works # # STRATEGY: # 1. Execute the command with several invalid options # 2. Verify a 0 exit status for each # verify_runnable "global" function cleanup { destroy_upgraded_pool $config } log_assert "Import pools of all versions - zpool upgrade on each pool works" log_onexit cleanup for config in $CONFIGS; do create_old_pool $config check_upgrade $config destroy_upgraded_pool $config done log_pass "Import pools of all versions - zpool upgrade on each pool works" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade.ks0000644000000000000000000000007413607166147031733 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.601783035 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib0000644016037001603700000001167513607166147032601 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2017 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.cfg # This part of the test suite relies on variables being setup in the # zpool_upgrade.cfg script. Those variables give us details about which # files make up the pool, and what the pool name is. # A function to import a pool from files we have stored in the test suite # We import the pool, and create some random data in the pool. # $1 a version number we can use to get information about the pool function create_old_pool { typeset vers=$1 typeset -n pool_files=ZPOOL_VERSION_${vers}_FILES typeset -n pool_name=ZPOOL_VERSION_${vers}_NAME log_note "Creating $pool_name from $pool_files" for pool_file in $pool_files; do log_must bzcat \ $STF_SUITE/tests/functional/cli_root/zpool_upgrade/blockfiles/$pool_file.bz2 \ >$TEST_BASE_DIR/$pool_file done log_must zpool import -d $TEST_BASE_DIR $pool_name # Put some random contents into the pool for i in {1..1024} ; do dd if=/dev/urandom of=/$pool_name/random.$i \ count=1 bs=1024 > /dev/null 2>&1 done } # A function to check the contents of a pool, upgrade it to the current version # and then verify that the data is consistent after upgrading. Note that we're # not using "zpool status -x" to see if the pool is healthy, as it's possible # to also upgrade faulted, or degraded pools. # $1 a version number we can use to get information about the pool function check_upgrade { typeset vers=$1 typeset -n pool_files=ZPOOL_VERSION_${vers}_FILES typeset -n pool_name=ZPOOL_VERSION_${vers}_NAME typeset pre_upgrade_checksum typeset post_upgrade_checksum log_note "Checking if we can upgrade from ZFS version $vers" pre_upgrade_checksum=$(check_pool $pool_name pre) log_must zpool upgrade $pool_name post_upgrade_checksum=$(check_pool $pool_name post) log_note "Checking that there are no differences between checksum output" log_must diff $pre_upgrade_checksum $post_upgrade_checksum rm $pre_upgrade_checksum $post_upgrade_checksum } # A function to destroy an upgraded pool, plus the files it was based on. # $1 a version number we can use to get information about the pool function destroy_upgraded_pool { typeset vers=$1 typeset -n pool_files=ZPOOL_VERSION_${vers}_FILES typeset -n pool_name=ZPOOL_VERSION_${vers}_NAME destroy_pool $pool_name for file in $pool_files; do rm -f $TEST_BASE_DIR/$file done } # This function does a basic sanity check on the pool by computing the # checksums of all files in the pool, echoing the name of the file containing # the checksum results. # $1 the name of the pool # $2 a flag we can use to determine when this check is being performed # (ie. pre or post pool-upgrade) function check_pool { typeset pool=$1 typeset flag=$2 find /$pool -type f -exec cksum {} + > \ $TEST_BASE_DIR/pool-checksums.$pool.$flag echo $TEST_BASE_DIR/pool-checksums.$pool.$flag } # This function simply checks that a pool has a particular version number # as reported by zdb and zpool upgrade -v # $1 the name of the pool # $2 the version of the pool we expect to see function check_poolversion { typeset pool=$1 typeset vers=$2 typeset actual # check version using zdb actual=$(zdb -C $pool | sed -n 's/^.*version: \(.*\)$/\1/p') if [[ $actual != $vers ]] ; then log_fail "$pool: zdb reported version $actual, expected $vers" fi # check version using zpool upgrade actual=$(zpool upgrade | grep $pool$ | \ awk '{print $1}' | sed -e 's/ //g') if [[ $actual != $vers ]] ; then log_fail "$pool: zpool reported version $actual, expected $vers" fi } # A simple function to get a random number between two bounds # probably not the most efficient for large ranges, but it's okay. # Note since we're using $RANDOM, 32767 is the largest number we # can accept as the upper bound. # $1 lower bound # $2 upper bound function random { typeset min=$1 typeset max=$2 typeset rand=0 while [[ $rand -lt $min ]] ; do rand=$(( $RANDOM % $max + 1)) done echo $rand } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade_000000644000000000000000000000007413612141513031600 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.622783709 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_007_pos.ksh0000755016037001603700000000407113612141513033336 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # import pools of all versions - verify the following operation not break. # * zfs create -o version= # * zfs upgrade [-V vers] # * zfs set version= # # STRATEGY: # 1. Import pools of all versions # 2. Setup a test environment over the old pools. # 3. Verify the commands related to 'zfs upgrade' succeed as expected. # verify_runnable "global" function cleanup { destroy_upgraded_pool $config } POOL_CONFIGS="1raidz 1mirror 2raidz 2mirror 3raidz 3mirror" log_assert "Import pools of all versions - 'zfs upgrade' on each pool works" log_onexit cleanup # $CONFIGS gets set in the .cfg script for config in $POOL_CONFIGS; do typeset -n pool_name=ZPOOL_VERSION_${config}_NAME create_old_pool $config default_check_zfs_upgrade $pool_name destroy_upgraded_pool $config done log_pass "Import pools of all versions - 'zfs upgrade' on each pool works" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade_000000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.619783613 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_006_neg.ksh0000755016037001603700000000310513607166133033313 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib # # DESCRIPTION: # Attempting to upgrade a non-existent pool will return an error # # STRATEGY: # 1. Compose non-existent pool name, try to upgrade it # 2. Verify non-zero exit status # log_assert "Attempting to upgrade a non-existent pool will return an error" NO_POOL=notapool while true ; do if poolexists $NO_POOL ; then NO_POOL="${NO_POOL}x" else log_mustnot zpool upgrade $NO_POOL break fi done log_pass "Attempting to upgrade a non-existent pool will return an error" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade_000000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.626783837 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_009_neg.ksh0000755016037001603700000000354313607166133033324 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib # # DESCRIPTION: # # zpool upgrade -V shouldn't be able to upgrade a pool to an unknown version # # STRATEGY: # 1. Take an existing pool # 2. Attempt to upgrade it to an unknown version # 3. Verify that the upgrade failed, and the pool version was still the original # verify_runnable "global" function cleanup { destroy_upgraded_pool $config } log_assert "zpool upgrade -V shouldn't be able to upgrade a pool to" \ "unknown version" typeset -i config=2 typeset -n pool_name=ZPOOL_VERSION_${config}_NAME create_old_pool $config log_mustnot zpool upgrade -V 999 $pool_name log_mustnot zpool upgrade -V 999 check_poolversion $pool_name $config destroy_upgraded_pool $config log_pass "zpool upgrade -V shouldn't be able to upgrade a pool to" \ "unknown version" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030551 xustar000000000000000030 atime=1579730437.754407311 30 ctime=1579730480.629783933 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/Makefile.am0000644016037001603700000000074413607166133030553 0ustar00hutter2hutter200000000000000SUBDIRS = blockfiles pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_upgrade dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_upgrade_001_pos.ksh \ zpool_upgrade_002_pos.ksh \ zpool_upgrade_003_pos.ksh \ zpool_upgrade_004_pos.ksh \ zpool_upgrade_005_neg.ksh \ zpool_upgrade_006_neg.ksh \ zpool_upgrade_007_pos.ksh \ zpool_upgrade_008_pos.ksh \ zpool_upgrade_009_neg.ksh dist_pkgdata_DATA = \ zpool_upgrade.cfg \ zpool_upgrade.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade_000000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.617783549 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_005_neg.ksh0000755016037001603700000000315013607166133033312 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib # # DESCRIPTION: # Variations of upgrade -v print usage message, return with non-zero status # # STRATEGY: # 1. Execute the command with several invalid options # 2. Verify a 0 exit status for each # verify_runnable "global" log_assert "Variations of upgrade -v print usage message," \ "return with non-zero status" for arg in "/tmp" "-?" "-va" "-v fakepool" "-a fakepool" ; do log_mustnot zpool upgrade $arg done log_pass "Variations of upgrade -v print usage message," \ "return with non-zero status" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade.cf0000644000000000000000000000007413607166133031701 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.598782939 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.cfg0000644016037001603700000001223513607166133032050 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # # The following variable names describe files, stored as gzip compressed files # in the test directory which can be used to construct a pool of a given # version. The variable names are important, in that the construction # ZPOOL_VERSION_$var_FILES describes the files the pool is made from, and # ZPOOL_VERSION_$var_NAME describes the pool name. # v1 pools ZPOOL_VERSION_1_FILES="zfs-pool-v1.dat" ZPOOL_VERSION_1_NAME="v1-pool" # v1 stripe ZPOOL_VERSION_1stripe_FILES="zfs-pool-v1stripe1.dat \ zfs-pool-v1stripe2.dat zfs-pool-v1stripe3.dat" ZPOOL_VERSION_1stripe_NAME="pool-v1stripe" # v1 raidz ZPOOL_VERSION_1raidz_FILES="zfs-pool-v1raidz1.dat zfs-pool-v1raidz2.dat \ zfs-pool-v1raidz3.dat" ZPOOL_VERSION_1raidz_NAME="pool-v1raidz" # v1 mirror ZPOOL_VERSION_1mirror_FILES="zfs-pool-v1mirror1.dat zfs-pool-v1mirror2.dat \ zfs-pool-v1mirror3.dat" ZPOOL_VERSION_1mirror_NAME="pool-v1mirror" # v2 pools ZPOOL_VERSION_2_FILES="zfs-pool-v2.dat" ZPOOL_VERSION_2_NAME="v2-pool" # v2 stripe ZPOOL_VERSION_2stripe_FILES="zfs-pool-v2stripe1.dat zfs-pool-v2stripe2.dat \ zfs-pool-v2stripe3.dat" ZPOOL_VERSION_2stripe_NAME="pool-v2stripe" # v2 raidz ZPOOL_VERSION_2raidz_FILES="zfs-pool-v2raidz1.dat zfs-pool-v2raidz2.dat \ zfs-pool-v2raidz3.dat" ZPOOL_VERSION_2raidz_NAME="pool-v2raidz" # v2 mirror ZPOOL_VERSION_2mirror_FILES="zfs-pool-v2mirror1.dat zfs-pool-v2mirror2.dat \ zfs-pool-v2mirror3.dat" ZPOOL_VERSION_2mirror_NAME="pool-v2mirror" # v3 pools ZPOOL_VERSION_3_FILES="zfs-pool-v3.dat" ZPOOL_VERSION_3_NAME="v3-pool" # v3 stripe ZPOOL_VERSION_3stripe_FILES="zfs-pool-v3stripe1.dat zfs-pool-v3stripe2.dat \ zfs-pool-v3stripe3.dat" ZPOOL_VERSION_3stripe_NAME="pool-v3stripe" # v3 raidz ZPOOL_VERSION_3raidz_FILES="zfs-pool-v3raidz1.dat zfs-pool-v3raidz2.dat \ zfs-pool-v3raidz3.dat" ZPOOL_VERSION_3raidz_NAME="pool-v3raidz" # v3 mirror ZPOOL_VERSION_3mirror_FILES="zfs-pool-v3mirror1.dat zfs-pool-v3mirror2.dat \ zfs-pool-v3mirror3.dat" ZPOOL_VERSION_3mirror_NAME="pool-v3mirror" # v3 raidz2 ZPOOL_VERSION_3dblraidz_FILES="zfs-pool-v3raidz21.dat zfs-pool-v3raidz22.dat \ zfs-pool-v3raidz23.dat" ZPOOL_VERSION_3dblraidz_NAME="pool-v3raidz2" # v3 hotspares ZPOOL_VERSION_3hotspare_FILES="zfs-pool-v3hotspare1.dat \ zfs-pool-v3hotspare2.dat zfs-pool-v3hotspare3.dat" ZPOOL_VERSION_3hotspare_NAME="pool-v3hotspare" # v4 pool ZPOOL_VERSION_4_FILES="zfs-pool-v4.dat" ZPOOL_VERSION_4_NAME="v4-pool" # v5 pool ZPOOL_VERSION_5_FILES="zfs-pool-v5.dat" ZPOOL_VERSION_5_NAME="v5-pool" # v6 pool ZPOOL_VERSION_6_FILES="zfs-pool-v6.dat" ZPOOL_VERSION_6_NAME="v6-pool" # v7 pool ZPOOL_VERSION_7_FILES="zfs-pool-v7.dat" ZPOOL_VERSION_7_NAME="v7-pool" # v8 pool ZPOOL_VERSION_8_FILES="zfs-pool-v8.dat" ZPOOL_VERSION_8_NAME="v8-pool" # v9 pool ZPOOL_VERSION_9_FILES="zfs-pool-v9.dat" ZPOOL_VERSION_9_NAME="v9-pool" # v10 pool ZPOOL_VERSION_10_FILES="zfs-pool-v10.dat" ZPOOL_VERSION_10_NAME="v10-pool" # v11 pool ZPOOL_VERSION_11_FILES="zfs-pool-v11.dat" ZPOOL_VERSION_11_NAME="v11-pool" # v12 pool ZPOOL_VERSION_12_FILES="zfs-pool-v12.dat" ZPOOL_VERSION_12_NAME="v12-pool" # v13 pool ZPOOL_VERSION_13_FILES="zfs-pool-v13.dat" ZPOOL_VERSION_13_NAME="v13-pool" # v14 pool ZPOOL_VERSION_14_FILES="zfs-pool-v14.dat" ZPOOL_VERSION_14_NAME="v14-pool" # v15 pool ZPOOL_VERSION_15_FILES="zfs-pool-v15.dat" ZPOOL_VERSION_15_NAME="v15-pool" # v2 pool, with device problems on one side of the mirror # so that the pool appears as DEGRADED ZPOOL_VERSION_2brokenmirror_FILES="zfs-broken-mirror1.dat \ zfs-broken-mirror2.dat" ZPOOL_VERSION_2brokenmirror_NAME="zfs-broken-mirror" # v999 pool (an unknown version) which can be used to check whether upgrade, # import or other tests that should fail against unknown pool version. # It should not be listed in the CONFIGS variable below, as these are pool # versions that can be imported and upgraded. ZPOOL_VERSION_9999_FILES="zfs-pool-v999.dat" ZPOOL_VERSION_9999_NAME="v999-pool" # This is a list of pool configurations we should be able to upgrade from, # each entry should have corresponding ZPOOL_VERSION_*_FILES and # ZPOOL_VERSION_*_NAME variables defined above. CONFIGS="1 1stripe 1raidz 1mirror \ 2 2stripe 2raidz 2mirror 2brokenmirror \ 3 3stripe 3raidz 3mirror 3dblraidz 3hotspare \ 4 5 6 7 8 9 10 11 12 13 14 15" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030364 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.603783099 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/setup.ksh0000755016037001603700000000213513607166133030365 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" verify_disk_count "$DISKS" 2 # give us a pool to play in default_setup "$DISKS" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030653 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.605783163 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/cleanup.ksh0000755016037001603700000000224713607166133030660 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib for config in $CONFIGS; do destroy_upgraded_pool $config done default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade_000000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.612783387 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_003_pos.ksh0000755016037001603700000000303113607166133033336 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib # # DESCRIPTION: # Upgrading a pool that has already been upgraded succeeds. # # STRATEGY: # 1. Upgrade a pool, then try to upgrade it again # 2. Verify a 0 exit status # verify_runnable "global" function cleanup { destroy_upgraded_pool 1 } log_assert "Upgrading a pool that has already been upgraded succeeds" log_onexit cleanup # Create a version 1 pool create_old_pool 1 check_upgrade 1 check_upgrade 1 destroy_upgraded_pool 1 log_pass "Upgrading a pool that has already been upgraded succeeds" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/blockfiles0000644000000000000000000000013213612143060030536 xustar000000000000000030 mtime=1579730480.813789841 30 atime=1579730489.091055613 30 ctime=1579730480.813789841 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/0000775016037001603700000000000013612143060030617 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.806789617 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v999.dat.bz20000644016037001603700000007607713607166133034325 0ustar00hutter2hutter200000000000000BZh91AY&SYЀú†¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàL_>Ÿ»€ HPD¢’B)E‰)*PHz  •@B»5@S£[­ógCÏYvyuï7½½ÙvõÞÔAkµzçkÚ®£ÕV;×!ÝŽ„ÙÖº†s®n»©vÖívêÞ’õèi=ìÊÍáïòS5§]ª'×»U f!‰½.Ëo{ílª“hÙãk³WFºë‰ÉWwÆ@.î÷ºá•DÈdz&&ši¦M0#LŒ Ó#MM¦4i¦ši¤Í4ÓM §¦z“ô&&˜ÄÕOÚ™“M4ÓDð#L†CL‚y10##&M44ÀM* ª  L ¦4Ó&ŒMOI´ÓÒd OTóLŒÓÔÁ211&i4É£LMž˜M1O@14OS4Õ=OÓCSFÐÐɤÍFhi1¤Ã@õA•D2 SÑ£S‰™G¡=M0'¨ÓL§©&Új)ú›Iꟈ¥=O45=L)ú)ãM4žLM4ÓS=£MSÅ<§êžÐjš{SÅOÐÐÒžÒmSfŠyˆ SÚ˜Ò†DŒLi ÄÓ ‚dôÔd`hÉ©“G¤ÚCC2bmF&a2dÐôFš` ¦šm&#Ñ ˜&&d 蟨TˆLš4Ó&B`h#M10™12hшÈi0ÓMi‘¦ŒF€&I²LÄÑ54‚UŠxŸûÈSÊ@£Ü´záÊzÊð2æÜB¦Ü¶£‡C2#M¦Ip[ÒpÁx)‚KH-–\ÁÙùÛx(ýÊAqùI' •ÚÝŸjh¡ÕÏþÜÚ–Dv.Ü9?Þ%ùü¹]Äg¼öyPÅø câs•³ùp‰Oεq*ÄÒ;Á¢xÙ{ª”UD”° Zx½‡¼Ñ?É^Âk;óÝ"$Ë +K†ÅY‘较Ž`;Fuð9?{«T#Û%º¼¥9ú_;¾7rÂÖŽß;.›¼fà~ûýÕ³4ÀE à7^s„ Ã%×1»Y0J„T€<ù߀¿¹và=à?Â1øCH1Â-jÑÍ%£óX œF B0×±(ëš+Û»ûcRYgB€4Fá”D@„ÃhP€€Bv.;>9irˆ|¯—üTÌ×V”²†Œ»usâ Á D*ATDS€"E F ë¡2ÙbÒª¡" ª >Έˆ¢h  "$.ýÄ àP()@2A(ŠŽ9W_‚ŠTˆ 4(éþ% …(0„”7ŽíºAãK‚ Þ3… „Zo‰Þt°óZ˜ÄaŽ}Âľˆ@Δ…¨”€’ 1>Dƒ– wÝ"rà…ŒjÄ0µV<¨G6Em`Њ*Â`<AQ „N:a …õrÊc¼8¥UçÆ(¨;êøÀ _˜„6Ïö”4ËŽpÏÊîK½}«å˜ŽQ­*‚™jÀ 5 !ÀÔ 01Pˆ…)Aó Ô|Ò€è¸mòC áB_bv¦P ÝÑMSã1$òZ;Ó±‰Cl|ƒtˆ8ì¶<ŠuÇÒ(¯dFé¿4Cñ1]‚„~Aרy.uÓ–/Ô`¢¹l1ÐÃ4 SXj éH`ïqöª"€¨† üµ7Æ1@Yö&öõåMˆ¬8Œ`ÐHÇ<ÄÐE >Á;ƒQ Zˆc¨TE:ñí .‘úP#™–¢1h·Ö7µ´—P€.ÿËBÖ­úˆAÀ¡P`‹cÏ Eá뼃W@8À솜0Íá€ÁŸ2ŠËBJ ñhR!< ¬ðÜí½Z1£‡z…ÿÀÙŸcVú hoY Ѝ 0ÀqÈA˜;‡fFãJv[QɆ}Pq0ûê3™B×õ—†ùt–3,5CnkV@3®eœ9 ¡®ðf²ai§”B• ,£±oMÑ n)ïÕ–Ý€Z”C‰ ºÃu1ž$³Ìd·Øþà5¢kÿ#…oŸ°B!Ê, n¹CÛ?Õ«Aøï@¡|j>I!BˆçÔ0”5†â2¼B…åB³¾<òeÔ<¤.íÝ–ßà¯L‡pÁùT:ƒjÂx»¡§œiŽöðÌ…B@ç˜(Dä†[³zw®cMònh´Ãëe0c%aö PZ³%4ˆaPøø‡¼¬´‰Z÷Â9 ¡´~áÑà°{åálHvƒÏ!{B¿ VçÂf°šÝüâx¦zKf4°%¨iP‰äÛ8æÛòB愸 2?cI(jÊ*§4­ìäëJ…µŠçŒÊzñ²½!<÷ol‡4Y‹HÁmX ¹«BxKBõmf=b…é:F‘ö•øÛ«Í¿'}i·µ +ä!¤Z˜MrPä&€hÑÊc¥rGp` ²ÑÀÆ‘á^ˆGÖˆrm[¥EwMÁçåæÝ»`Þ E ={|º!ä$yÕBÏDDÁ€Æ!Tý®Pd½R³Ï8ÍsÈtDã!€Ïƒ0R&•âYÁžBHä ¨c$,¡ ¸bž©°CrÑóˆt`µ>b…y#nP‚†Ë+–cš‰Ém^Á8Ò=€Ñ¢ˆ @hZÑÜN¡‰j™XApOrâl„éЂس[¢¼›ÒS²‘°'N¬Ù#ï<âXϰwê\ÅmÕ‡ðÏÞ“ FÀûÈlsš“:ÿ€Y¢b@oMñ¿»aÃ2‡bù#Œ{;0Ö´Œ‡rØ´o,Ï {>¡HñŒÖšÊrÈHgÆ™ #5 ÐgæäÍn±n6µp1ñ˜Uô4mç0ú¬¼çÆÿÕàØónuÀï%GHÕ¡k¿´±œÞE¬ú'ÏBûbsϾõLmÔ4"rãoBCF15]SÇ V L Û È ³,ã;|ŸWFéæ5¨@̵ÀÍ#[x7¥iØÀŒ¥"R7øl¨d#$G’WÐbÃypj÷åjX!¤f(rM”hn\,ý‚}™Sç꜡“Í¥bLYð860Eiyˆ][q $Ù <±,®`á[ŒIÆ#ºmm¹B‰´³Ææ÷ƒÖ˜u$0êé‰iÁäÛC5Â8¡šR7ÊÑØ²#™klYhÛdIF4ìó>Äöì•ÑÁÐ6F&™ƒ47‡8ÕDPµÎ6(é-L6ˆÁ¦Á­ á° ¤3 4#×5hÑ£ô÷£ih,(Z0`Áï9(6©iBÖ1ŒcV¥ ±Œ}Ã,(X0`ÁµÃêŠÀ.(ÜhУF1© A@íqBà° ChpFٱٰ¹tm €ÖŽ CBU0Bü¯–ËñúX–>Óþn”+™hqneÑ»V`ÿ×û4þ[•¡pºÎP©C@¡˜¬TÃB:†îjc–†£BÀÕ*ºÕh¡Ö¹ ìÆªßò˜Žœ}æctëäµõÔ[„Ïór|!’ U…!!B‚ðËyþÔ>ƒÊ;Ö–Hái J9Á”gÀ951 ö°*à±€x¯jÔ“®^Hås=¿´rO0¡)UŸ—…!õ4£ÑOrtST1êµ-ɽ:e /x† N·Ù¼„‰ÿrÍÝßÙ}e(†MC> ŒP?• õñ/Tøi hÿš¹ ×É®|×ïÑÅ 9VS(h+3 PÌ%|Àm爷Áž}€[\p„Ðfƒß:߬Ú!`AÆPïž ¨y- aC¦ôÕ …I îCz¡$$ … ªÄk 蘒ÒäñøºXZü®P«ÜƒÄ¶•O>•56˜bÙG­{ä-["FýáCÖAˆ‚}fõäSÞå;ªâÅØÃßm X|8§ÙÑà!QÍ‘§¦ëéÙE5˜¢ÞöƒSǵBŒNæ?,ôA.ªˆ}˜‡G¹v "5¼]X†üêúAÔ¼ÞôñÍóg¦b½)ÿ|æÜ`†œ5ˆêRd"³6cǽÓA ÁÅ>ì¨4`6 (¯Î Š hÕ«ÀΔ íKa^I¡Š¡b„h䇷µ°häX+âÓ{Šc¬CÓ«yr< ?X™´H÷x™¡ÆéUµ2„‚¹U±©tD³ä VæÈ&(`)¡cµI@ [ÁŒbý˜¯• ŒCZìG$j>ŸÏ>v+içèÃ¥Pú¼e¦˜o«ü1Á°:Võµ©½«¸h.°€&*^~²ª‡i}Q X„’€6$ñÜx± ,n¦`6G$ô-ÀCÉ Žš)Ì¿¢·Æ¾>ä[¹m|F8:4"Bì:¦Úôcb7t)P Cè(¨¡Z6¡ÏŒq¼ÐiÛã9Ѻ‡EŸw³8¯Ó©âÔ"Ôù Ð>)Ès–Ø©àŽ€u£ÒŽÐsŠ*÷"ôGQ½6¯h¡4(@x`éT("x¥GêoÃݾ†¸mã¥B¨hÞ†¬Ó²Æ}ëä¡1Œu*rµhN R„Ô4óUJÜrV–B¸dsì«Â(N’‚Þ„@õF­õBò¡¹’¯°Ûã^õ÷Øçn…è?:-W ¢Ñ\wÂcéе^1ÈTª!縆µ•‡ZóûÕ à -¨Ï+ #f¡|Ù \:zfjºèdò(cЛ$ø8&PÆß§¾'Ù–¸ó!ǹŠÙh=xÁà\†„B›G:‡§B¯À²ÉMèÐÐ ÚA€£Í½ûSz”®ß“C¾kj†ˆÇ7† êµë¼ "ÜTPÁ–4a)Ðùª²¿mpŽ«·ãyzþÖi¦8Ô)Ô4Jñ’ô‹æú„ÇOi°:@LaZH Ô !”}C§?S«7 Ö3ˆ("°}By\ƒð´c1“ß¹fžmj£1×¶×)Š|Í—ñlé?zÎàPš\ÞåB7¢Ú!$ÆŒm™·îÑÚLvu #ÿç}ñèöÚ&Ú3èùØgûbyE +µå_À'ìß]ûgOñið­à!w/GóÅD†ƒ…gG…!AxÕ¢ V€Àz7–ñF­Æ6¨FŠëÁ£¼/€†}Õ;okP`ä)‚»wÞÁœ?@w í¿cék(ùV¡ÓV³¨hÆCм¡aÖ¨Që+k§©ÿåÓ¡¹WãmG¤ŸBÒó£$ƒÄ±æ}ì%;]½Ò©ø ÃøóòƒºÃ7ðêT49>;…¦f¨[ò5/ÏßÔ4FåD(9ÞeˆgÜ0hÀÇú]«ÆB~ØÈ¸¡boŽ:6àêm!±û²<äÅ vxyz¥läeÑ ¾¦é5^ò¿¢×σöÚoeV^ãQô6S?zkH!s0XcDNšãNèÆ“…;‚Îg‚lWD ¬nMä¡B„…³<ÃÑà6÷ìw–; 4#@âПGX1ŽUù Éq,`Év `„He!›bÔCb)Þ¸·°P°Bêv®ÁõŒ ÷ŠÚßeŸ'7ñ–ÈdDVçÆú<è‡r8ÐxÐy~1ÆŽMÃgæAß´ Ù¤À±É2Fð0’hÝ»åŽHnH~#àÜ\"4ÀÓˆ~ cR¶cnÅè<Þ}f‰‰á‡PÿäÁ\+H742Ï2Æ€dZÌP²eÙÔ% Ùr†åJ­Ý¯CtÌP°˜ãÖÿ@Ûô¸|ÎðÞ¯+t{*·Â\â-5®Ú‰ÍÅ ´ õ{*ÐGÝm¨‰ýu*CB&ö;M×Úð3ÿo¸Ò€jŸ³ÝO¨\ ¡ùóX‰­É¤fÇ1O8¯±_î/ÎJ'þ u®ðÈ(™6ÊHÊWrªŸW0Ê×WP‡d!Êd‹`ûïÜï^ͨÉúíŽD©¢‡LÒƒJÒ!R¡+ŠËÊô³<¶$ÞbÊûnÓîCÝÿLÛKýȆJ0.0ÈÆ¬ºó?" Ö#ý·˜Ñ•c“úï‚ÑO¢Øµó4Ør@Øpr0ZË0R £‘ é\pîãjF®4C–f¡†,2 •΋®e“n7_5œ§°Wµšòù7šPþh™bÕ¾KúHá¶R‚»ød©—¯-¾‘lj:yËœ'ðov—§Lh‚¨n(IcoâO¯uŒÉ0BÅN±üQVg Q‹-g~òo®èPƒ¥sY‡ßtiÎ$À¦ܵ ýQ¨Š¢ÒêT-B=H4WUt”ÞW‡l_@>@ðΔF:Ž:AÃáŬèÚ% Ä`„‡;xš6ò÷N¿¡0h]Ø|ªÛ¤(ýjšØ3Ãxb€¨VÚ=š¿@f5íx• kv+ºô6—!öGyÞÕ¸&ä;Q³Ž×I´qM ô”1 fÆÑË XìÜèÆZ¢wŒ0jTåirø¡Òšç:ïÂ-C‰÷®,máî'…i„°!5€¡Ÿe2œá _"QóXâ·PáÌë†9bÜÃ(t`ù ÇÉu­‹u:y}£þ(ŒjŸÕþÍ‘B¡Ý!D6… C7Xð]›-‰ªÅN+(lìëJÁ ¤`4ï¸ñJàÛ}{¶‰_´:< ‚` N ï^Ê7Òêuóïx¼iœàÖ?ó³Õ±XË,#h‚ öæGÂtN<&úo¹Z3ïoû» }‘y€¿S:ø#¹-ÅY[ÌgSN¡È«Ê韣Q†4Æ"ʇŒõ9Az±ýÕ³ #ýy6!øìöÅcb|üö[s2‚æ1¶.;ƒ£×Ÿ¤Á½ulá¡pƒhðÆ+Ź#ÉÆÑñ(ä ÅWÒg‚ヾ„Hñ.P:ScÏ»]çBã;n¬Sy‚x° EID‘d‘JA ‘ €R) „ŠÒ‚²…Uë«æ­[ƒ$^y[Ã`Ü=HŸ¹Ï112^´e³û7#P³šå ŠŠÅ¸è†!X¯Ãh‡ Ï8÷¬e°`2XÚò6K" t4 Ɔbµ\ޱ÷2ÞÑØ!Œî¸®’[Àþæ®§mZ®NZ¸[å›]!<ø<êîÓÃ6¦PÈP¯\ãͼgÂËrÈVß…3ZkHÿT§ˆ8µz.\lÅw@Q+ cŽ>:¸þŒ;$â³0(~+Ff”(Ó!BÜt*˜˜÷6jа +€¥¦}¨3ˆogÞ ò®(’èÜïrÜLB˜î@¶½”s¡˜P›æl ­-ín­­C÷ö1]ª¸o­ò¥XñúqWFKp<(b¾öÖ¤ª|_ÓS¯9 ZGo«”³Dhl•É‚ÅÅ™7ó¯ö騾¼nv¾€³Ø¿¬ÆŸ;ÌJ‡1Ïb.ŸG[™ý³ßeWzú\ODõÍK¶`Bà(P!R2€ýž[ÒIÖ™‰ødc«Š&XØ9°±ÿÖ9O°v­Áê[fâ!cÔ«Ä+PxÀú*˜¬AœŒÖòÄtg×>ê7Ƥ¡Äoã>ùq¢>ÜyЃ¾øÉ¨G g¾¸Ò…ŽL’£-ý(u|w}h×áxÐÐh f> ÛõK² !°ë°²VkI69qs†hóK‚¹nÿå…²0W• ´´kÕ®ËS`À€¦Ý'øá“RÓRw!ϪÉJʉÜ!µÕܿ͡™sŒµ±îv³J?Ê ŒÇ…o1 Os% M$KÍ”ÈÒåѧÖ&ÂÜÑl®¤…?ufM\~<&¶â8’Ó_\˜A"Άƒ®ËjóIQ”9—ç‘–…yD¢Îc)4"b†f˃ÔÖs’f:ÿãhä=]~† -y–ãeE<ö+²ŒÜ§¬±þ’°–€Y5’ǵGÊŠÄ$¡ÇŒ%`õŠôð-wµ”w ÊfË«yïfiøùû$¡Ò»÷"{cKrßõ8… >»“«ûj‡ò´ÃvøpÑDÁ„³ø.…\MpAÏ:sb¹!f-ÇМ²?9DQápq²Õ¾W[ë7@è/SˆËCïæ;#¥á®“¾F.s¶ÒS²˜;<ßÓ‡0ÆÞ‡’³|þžÍ×hær=õ#f.»P€á^AY aÔ6ÁÍ‘²^cÓ ÞÎ(Pž±@o]Ž£¶_ºª'Ù=‡éÁ…s)Ýà÷=ƒX‡ Õ·}-…þÜnœÍ¬kB¬ç,‚›kî¼»'?ó_‡šs?ÔÕ‚Ðpƒ¯Cf5mÐy$.” 7È_Õ§U­â^gRw‰@öVÅ~éw“«¯íõ‘t\¶Bt Ö´Т[µ@aÀÌBüñÑqí£ÜÐo˜Â:R/0kA(4 ”7`xcWýöì±éUÐ4Ä–K$)F&PÆ…~Ìÿâ´¾«,xçÂ@tMéíGø~ÐPÈN†Õ[éiÊÚ$¨iе]WÝò[^ÕòîopÝú|¥ûŽöx½F84ô?½ @@2$‹rZ>óÖüAÓ!ϨkG~BðÁ‚*¸a˜]Wjnþ-g±\6 JµNq g#Gíu(QþµêñGØÏ÷0°”W|Å)æC¡áv4é"ЃکOá'¤©çIÓó•58öî'Ĉ‘WFÆÇÒÐ_^«¶8Ç+Ú3ap¸IrnDÜ‹ž¡`ÍÜp? š’@¯D@â™Ä`ÔùwRÎOᬇ2žÅ&7Õ-·I†hQ%…*¹Úÿ²ÃY°=¯•ðÝ8áÈçxŠS&„—?<ïY,‡Ê #[ÛñÄ•%ª¢iû+n«î½Cï<½ó‡6MNÀYT`âL†©Åù´WÁ+Ü ~š$`'„{ŒÒþ>wûj6%Á % 2uòλ²öÕÅR¢LB…ÍîÚT*™Î“sß'该ì8¬j¿"è@oœÓQÁL ʇÇ~XƒÞ« õ\™»@#‰O#¾o 1hPƒìL³>:ÓÒ¡Gwµñá‡ûûhõûÄÙ;fêè/ë¯ÖÑoøÎBЮЀ~ÏõßYWMf™¬ÆI:"§=;¿Á!ïus‹ëÆ(qyØðÝ]~›Ñä®·Úsz·Ò(lVÄ¢ð>d!¸|îé6;-õ—ZÐ ‘_`ffиDË~VÏ¿†Sºlá—c¦>Hk H\ d†öõ#߃š8.ˆácÑ(F€Çrzáå÷aùûqí=ƒœÏ·Pô­­Cà†sÌÓ`t;T-NèAatÌMEA«‡G[nÚáö}„­9”f0€úiŽÀà, <½«ÓVî¤Ms¿_±ŽmHz_j† M9ÛÑ=vv Û ÿi¥ê+7Ö¯‡!êþõnÎsã…*Ê6D R@N30w!Ì¢,å„Kl@—r)NïþoüqÑGïvžœ2 ¸Ž¿§›/xZY(N{¿3~Ç ³Ô ÓšYj:3’)ƒ,¡]_PñG7¸/žëôð·• áØñ,OkÏ|v5ïâ¡×¿¾‰ ã@ν¿+YwÙþ,+rS*Ϩšr&VF)¬¦‚g´¤áR …•§}ÍÔ´ÃÑDÌ«¯è÷ÉCbÙ† †Ìï\Ã?у¤hq³ÂÄô~/è¡ýÚ#°˜yÍ¥Ü=ƒÔ»®.ÿ·òjøoöpˆZ9½&š¯‘'MwBà6[8„¯“{çë+n”dŸ‚”äf‹ÅÿÏv™Y2è’Vño¨ $5Ø6J>fR@ü5Ü—üä¾~j®€ Ø J­ˆ<¾DXCï¯I/tŽ=³3niÎxà¡Û©k;Sá:Sô<òôfŒ9Ìܦœ¢à2måÒz[¿n@ùÓTýq±jmÉ)ï ö-_ÎCÝìnOíá`2`òwFVtÎxP,¹ v 9% ;Í;†ÒOžå&‘F¨{oÔ7Ƽ騙h~™³³¶TQÆ’÷ „MðrDñ¡Dž-Cå–^¡BÚó)«kﳜ1-ü(/ þCiBP’P$J¯ºêÊ©[Ø‚·® PCc£^{U‘Ž—­W€wÍÞ¼ŒÖ@3œ³ø6DLÎmCˆ¬‘ù‡c8¡ÅtÁƒ¤í5]·‚8Õyé8‹ûàäÕþ o#{~–ëÙö”Ï*\½Èû±Õ™ ƒØp;ãй)>’‘h<\íÀr)fÍ(ÁP«@Q-¾!7mƒç6ÆÁxj3§óR4#`ëÇ3ÇÔP>dè¥q¥v¥ÿߨz4ÔÛO4Ù`RÉ-ÌŒØë€õ¯”«^ÿW´ëî99Z·“Ð<ÂßràŽ³öw$æ§*<üð¶2¤ãœTP÷u{õÔ†b¤ãúš¸§–þOwj´BžH2¸Ÿv ‚q XšhФB̵—¥½UVÞYôÍÀd1!H.óßU?ÍS×3ÙõêÇÝP¶î7˜ææóÝõ™Oœ`Ÿú eÕCËôgJûG©–ú-~žXú^Žš€iн—&kX᜺‡Ûå홓_Ú@Hû9ñaRŸ‹ [åÁŸ;zÙL/«3H §g}øânŠ·e#UËí E ã•H Æ[°Á³Áo#í'©¿<­ÇW*~ŸÚHËGêÌ4Rê`4|ÁƒgH0ü—¥ $ÕW†ÜYN#Ý\ÝH™i4~í>Au¶# Ÿ~%*Õƒ–Ò¯–'~²Ñ®.™"½¦vó»ÀÔÕù)d¤#ï3µˆÌ«ËÌ¢ŒGI¶q?@8ŽVöö©gã9¡Öês‰Zobãî;øÜ-‚ÐIá‡$Ã’qà^ÔÎtþðR»Ê®BóŽ„ Ù¸Æ@-t’Æ/y 9¥ä’à F”=ôc4mRÜ6†¬êCîb¾šÑ§œ‚O·ç.°RÎÙÁõÉ=ï½×]ù'.7áV$É./̾&¤‰[:‡Òƒg?àzòÁ¹3Q‚s´' kÞ{} tLR^:þ¾Äç©›&Û–ÑñÓ‰ mÙó³=ûšuZ´6 d™Õ‡õ#´ò ëß+R>vþ„ð÷üuClyÜÿhÔoè–ß-xŒ–†ö—…>ÕWÈ’?ï9òp}‹¡Ðvó]¿-2;ÎÓâ@@¦Pùߘs*:-°„¥ [ à(H8•dˆE V‚=syјÎí¨\F¡žPؾ!\¡( ötjó!€èšBÈT¶ðØ…Á¼ðMë¶‚åüwÄMó%¾ Ɠ؞#WFè11ªÿ¦+÷è©ÚIh”쇿[¾(D;­}Ðñì4Œ툉†ÄDç`®>ùpÕ a5åéä­cÿšGW0¾-³«Ü|©U7ñ‡V ¡K,e,øù^Ü}VßÉà™o»0\lÍ*:)·V ÒL&çHd”¢H…'™›+W^E7ÙiŒI÷ìûx—¶>&åÂJ(Œv7ôS›½ô%§‡8Hö+ÜQ;£$ “ëè>LÕ§=¶ûP ¡L}FcCi·“šA„4m^dĦ£@Î|œ $ÀóéèW–FH tß-ÆVZ6:JIÐγXXQ'+öw1D€§L¨âÏOóq68Œˆª¼¶Û‚t š»MøªQƒµJ8aR2ŠÑ|Óy]Êò®²Ûé,NÛò´.RŸ-rþ¾Ïéwªií *‡I–«CÝ·„(„#|»ÁN»¨Ûv'”;C›hîhc£#sx˜ÞÀîóÕ¦Iü1^Ž­_×’ÿ{ïõr{¶I õ¨iµyƒý˜fàHÁB´~h|ï´GÈ|Ø“tjJ|Dº¼f¡ë(É æG)hšúTYè57r©¨‹p}‘ëõõÛd¤DšZá8ø—¯;-ßi‰ÍZúó(I¼ÌpcŒ` 2NRCuÑúÍÌEüè…ZÎK]C4ýñ`é [À@"É/þ³÷€]LtõL;ž_y¾ÅÁS -ëa£ÓâŠtWÛK¨î½K˜S ûéy0¥ž‘x³¯?ë‹ð³ž .¢©óœiá'=0`4€²/Që á©´õK+çQäoátϮ߲†‘Q«ÙG›ÆøIq0^T¨ÛN-ª¿UEÝwêX,‘)tÞ7Ìv{ë¼|,HQáUÃL½v¥­´ù¥Ù{<7ArË9t’J?¡Ïù¾ñ—û™lk@‰^ü©ä~‚r%Ì?B©Ó3FÛǶw¹ñ÷,"¢ÖÖ~gÁ™ŸÈNò-a0 [+¥kk–Ô:HÅ´.RBK5бv“8:4..§™¼¿½žã§¸å~{Áë°È+ «­SÒ·ÓX}6Ø –cˆÁˆØšÏûìšóé+@¡B MQndzZ 7Ê—¯òš˜ÖÑ_í©éTº,K {ÒW¥ƒجó?ªŸfNWš¸‘»Tši’:]E#5Ót<%BÍ”QöÞOCµRÁtdgÅxíÞÿqàÆH:8cL¯hvÏß/’’ªÏ¶^Þ®Q1}÷Ö°­<~ꮚ çcø»×oy<œç;¿m{`¿¶âÖ¡^…‡äxFÜø€ˆÀyÝ“ó5lìØ ú0~æä0Û0z2Í…‰Òp´îr¾DïYuW“½É»]ù´6|DtŒõËDÃË€HBØe«óe•—²·^ì2B]õÍÈ’òÓ®±{9—ôaÜ“:ÿ\eN–[ahÅÐ$ Û º¡U$%~EP,®Š3Oè†Sï`Ÿ¦÷ RPúB&Ûš¦^Ï+£(Èaë¸fE<ædÑY~{ês5Y@X¸¬·Ò4¬HÂu=l'€@SÜQ.3S8€¨I¥ ^-§=h½þ:Þ}èŒ$ž©ˆgÜ!Z ¹Ä‡ª°Ê{ 2<"SWåTcIÊHuŒüªpÆKçÇmW‹«®|lu*=ø¨Gý¼-, óŒy'>V¯>ÆÒ@¡Ç=•½Evp¾› žm¿:þ› »3ÁÃø%õL}fŠ™RÈ 0áP?¸äжyÖ7“ëwTîŽXlÃÙôß9w¶}Ó_Í6U²„ÏR•¢bC †«ð°o÷£èùºW·¶¨PKÏá¾þE/·°øÏq¼íիؽb7j4fK´Ò©é#B^ué)Û€‰4eZõ=Nc9‚¶sLbJÃ¥SU7ÌSÞŠBÖÌåʪ²QÖ{qS*®"F¢ë®GlW-cÄÓ—Uñ÷‹¥Ò™\-9ì9h3»¨Ó¢)§Kœòú§d:œjd®L¢'9öC7FuNâq8W€^@‡½Ù_DY_l»¶q=6§JHöyÆì5`:HÓ°<¶7íæÚ‹»½ Ü©Tkžç¡a‰3µ¹Ìâ™pŽÓD–xu€ôtÒ€Üû¸V'{ÌÞ÷%¿i98àn×I›ü¶Ê©E4 R1`¢Zz4QÔjË*ó7ä(qÈZçÎîz~¹ûÔ+0±z:­u½îówµ ½‘[]ØÃ_B5˜ ƒ·(À‰'X%Q @x( ¤v¤@ bF»ÙóR+=W)ö‹IªûÆžn|S纄Î4!ëCåCœö|åižÁµÀBj-œƒÆ 8<˜ek7Î÷tûÄš«¾”[YBnH 'ú$ß½OpîÅöu»M ç•t.êÖÒE+ZÈ ÏÐÙ‹d»Dz>`'¶à‚Jl$ ,Å¡O©ÂÖdšYÀ,¤¢ D ríÿ% ñÂá%CNty†û”§÷޶pm>'‰U&K¾rųH¥à?‰z?Û×’5d .Àr3Þ´g¥ý~`f@Ó;³k׸-Ô]·Gœn-Á’w[»÷?æò(U†žø½o wN©‚¼ôfêÝŽN‡aÆQ|³ûs´úJꯨð0…”éÐ7ŽíiÝ•^Œm/¢Êc'¡±Rþøº[ÀrœK$yt‘^¶÷)ŸRÉœ›•#AÀBXÜóXe¦%ðynãê1àÇGäÂ@±ù?c™†D„S®b¥­Xf²¤ž@õbÓºùO»üÔƒJ>OGò]žGêq–Zà¿+‡?>=í£_‡@é¾ï·„ÕIuq–ßÛ]²f›mpòféJa´«¬hÙFñ-©Bç B¸soÄ„–6]€æ‰œCÏ®sÃ!­ó0œç‹À(YGª*ãÞ-¦äÝÞ°n(@¤Ò~•MPÚ=<4v¼^7h…;j Îo­ò{w}~çóÑ×À|AëLÒ»¥q›Ntúîû½Í¡—x<x€„<òH²¶X´:ýª¦äWCÄÏ-Ç–Ág+s– q1T ö‘ ¨ZQÝö^öÝ—ÌßySÇ÷(r, ºt1^s>¨ ÓZ'ìÿþ^/6Ülû13)ý:B ÄKÐÊëŒ1mHÙÔùø¼š÷³ìó”HZ»(Šûh ľ!‘o€8Æì…ДÈbnHm!¨Ãp”)výê)åê5* ‹^Päk5EÒ öõÞf@ã_àoÍ¡-ì_ÉÂ × »ÁW¥ØT¹ÏEC®zi†ò‹ï¹Å*)Ž l|g蚤h@Ìó®wÆçúU[€P<^ÍúmõÿŸA4ïøâ¢æîµðC t¨|¤œ´zdCW¾M z ³Ü´ 6 2ìàÈ $ <ƒÐGõ¦Àýæfìe’ç碸=™Õ‹ì&2Öóªâe,Ž'푼æ4üKUÂ{YšÛåU€ù>âHXA¨Çf €ró¯«î39®Ç¯ËÙ|KÛtžÞÆ€,¥c}xÖ°‘ D;òµµ²\þéûÆâ­Õ잃äšQÿ8‡Ý¯hAð~ èânµ-©lé>À©R1HHALYª±Rhe?‰ÆS©ÿ;:ÝÇÇý»c>Ûƒa®õû·AgxŠ.ÿ5:\ìoe`A€í9•pãty¾ÀÂÔ{çõ`t£íM­°¹õÑ­Ž‰ ФpØøËã%„ýƒc²ñèÝ9úwnïb ò—¦å[‹;–ÓRôRÞ߇kˆ!Yqrs˜³z0pÂE<Ñúr]Tå’çÌ>­Ã„ËF5LÚSåiõOq³^]•ß’xxAèÝ]UÅ¿Q`•ý±•³güZ ¾ô€èg¸¼,Â8†P’ÐF¾«¿|îZ¿á©›…¦"ºz%¬úW lû«½Ò–ÅDËT"Leë©›\V<ðêSЂõ¯‹’ø'Þ›»~OÂ\ïtùÕ¿;ÔÜò”Öý=™l!X¶Þ ÃP’ÁFh¨‚"âÒ@d§ðïÿÙÑ ³SŒp|*‹ …mÿ)¯ë‘Ö‚¤ƒàÑŽ%b‰Cˆ@Ÿ¨zg2 ^`¢ .K0;ik\Ë‚nE]Ww”XH6D=|  S‡Ùà&ßfåÚžÀ #½}Ö4²bùä€Ö»Óàúr[ܯsü +g¥)‚äž/HI¯PÒ…ö0ÝïÞ€2ulD52"Oú“í»,ò)Ø+÷ïâa…¼†#HÀXsË•#eØt¾ÚÆ5ž¿ c>¡›3xØ3À‚>ŽÆ?§Š“"z—˜Â@N’ö7°Šî+¥¦…͹‚÷,f|zŽœ&v›ûÙå# ¤½ÖSïV°/߆øŠ™"þ Ú˜b@¬É0$ÿÙ´Wãx šÌ;´Þ–+V…ë@ëŸ6…`kéV÷…™v1Ø¡¬+|€¦~Âút¡ by2(a0É[­ç;ɘ誔UBݹ9·Ú©faÓÆWP3LžÌ¹Í:n¥Tõ%Ç B‚ˆsM !!…ÀÕÓ6±‡«w“œÈnŠó¯ Ðwlƒ„ïªá¨EKÈnFÑG ?×÷Aº®mÀ建ºëP¼ßhÀn*‡Îý=7ýå1Æ`ºýç䌽ž+Ó`3Ì} ÃnƒÁ§d²0~ƒÇ¿†}ïg_¸r“dÔ×D„¡ÆDAã{e¡Mžwxm¯|‹«jNœéØzílÙ"?7ö°FƒAPRÄWH“aŽL” éí¢,çzMࣘX”Ó XšO_¶F;nô_¯ú·ë®Á ˜!dÓøb`æÇMŒ“ðÞÅpZʲ±—Û¥ÔÓÈFIa¿$ ÃÆ>#^8óšÜÕoÑ¥Aëµç# kœ–ÅÜ\;²˜8K=Q£U5P~Žäºqw]ƒ¢Ä-Àö‰ZÖ&ê?cÌù$º¬ìå¡ÕZé¥/Yÿ¶å⣴î›Á9|¬ðë¢tu+C£SýÀÑ€|×¢ ›N‚þ>¬§$O&ÃÇb…ªúc—ÞžH»p6®—ºC¿ûÝÄÙØ æðIì°U}5•Q$¨ú~/Ê™lÙÞ"NP‰€ýŒU$âÊúZžÌ²’~2· þÏ|‡¼¡e ÖŸ|9¥èO¼CnS(ŽkŒ=åBLÑãBå¬hH jñH EMÍ =’õóM yt¹ºi5ç¿Æ6e¤Ï¨öÁ(Ún¥›I^yO$œÊ„MRÉd\ß&ßn0wyßêÑ ?ÈuŸâ›“çÜÈÎ'ÕC,“ ’•Hò¬âm¼ëÊ÷a>…ö—ÜÃèV(–Û·&ˆ¬ìÃFÊ»‡’6ÅûðÃX3@:óðŸ3® {SÚx)ì콺¾mgÃú‹P>*M³t„*ŽQ~ÕoÅí•=‚ìwf“|Ù‰Œ¡I+M;iCIôáI6å匧w«£kÅ¿6g4P¾;D<À»•_²7Œ’.ÊŸÄíNéxŒ~òLê‘.¯Da8ö|HHzœri o G=Ëx5ÎÞ¬ë‰ÈÁ³}„Ù%@ _5}S4é 7ªÇÈÙĵ^ÓEDµÖ þÞG “PZA’XŒ¥ÞÉÔË~OØfcG{^ÿfdð·\/6#M}¼þÿÃõÉ*x#çÄVó“5«â@¥^ú0²”*‡2H °%8~¢(¦º5È¡ìäÀ&’c!Àuóû ô?½³ÂÂ<„uÞBóÍz*7z°¤t m½ºö·æ[žå}©l«ÐÌž—ôìöº5›4¡ææ8Iò­gˆ©“¼<;ñ­©òöMxœÔÊI;†Ï²?lLOG/…áPè@·ãXÚ¿¢ûèXWEÏ-Ia)1øèÌ+v(-ÓMƯlilñHÂß_t=y]®ÕÝà¨$Æ¥cÛvûÏ÷QJkõŸÇßõ/žû[ Uë_º¶™ŽGEí#£,gpã¯ru’ŠŠ/¹8n¥¨û+aú”ªäßî:w1~›o}N…k•™Ð,lÚõ¿%«zqšÑ#8=n×;}|ÀÑSKÅ"Î蟽„ž 21Ó1°ê±½ØnHbÿ¶¹«ªjŒ ðÚ/gWq½-±‹äWŠ5’ðÈÁ©Lôâ;J§'h³‘¯|Š3ÍšÚ²ªÕIÈœËíSbyWUµ—zÏ•ŠW bº ‚€jÿ»¾„ÈG2ÎbK¦¤è|CþƒÒ1u¤ŒŽÑ ´âÉÄtí³¸?¶*"@Fþàv@Ì­[H¸–ËY­þ@çTõž‘¦ˆÎA·±p÷«‚apý‚ܵwÏÓ«É?Û ªvÝÓ#„ÉŠŽ-æ¹92š[¿ºüNŸBÕêÙ¯Jn ‰…­Ïk’Ù\ë^4Í…`úö4®£›!¢]uv$jy±Ò¼æ» ã ˜_Ñw¯ò}§üÞÃûÉpíEÖ®ø8¿}— ³“3CቡAÉŸÈ–š«õØO~ äeéZHîV}7Sòˆ°8™å¥­¯Fét°IŽ q´¾0éè$ l3Ç›q“IûúÛ1Ü'Wòv«C%å·—ò§b1ÌZ¹M¸h$¶«Vù®ß1EáhGÙ¡Ûæœ¼‰Î6¼ “†%XÓÖZïrùÔí©±¦y¼½òXmjÇéIÅ$Â@Õ6’6—–‚ÿ=·s”?>fFŠƒhís~ÏúftL¸Ÿ­Öþš½/Å G­‰òNwÁe˜mš[9ö¾— îŸWþAæJp ááhNJþù¸ROü?,…nîÈVÛ2,¯ÎkÝøÞ=l¢ÉM}"‚0$Ndà õÈ †ÝV*/¯ýõú˜8›û("@úý›‹ÉJ9ÆOErMÖD¦ø®oÔ÷¯ðµüËý¿°D‚>“ÌárTVùÖ3~W]¢€ Î|ní·,ÿ€ §ðQP‚ìP³Yrë–†L%Y-‚nÛé4Ϊ'ÃtYøµú…€"Д³—@l'˜ŒÚV!5\KÜ•Ì9É»I `êâ‘»Jˆ4„«'çZgµ¢ÚsdŸaèÝ$ÇÂfflßó[fÿÎÈܾ®-ì]œ“Ýà%q¾Ò,Á "®ˆ©è¯Aî©L¡Ž«Õ÷fdáX§Ò{&Î9ƒ€ÕƒgähémÎ+AÖÃt¦%DwÖ²ÛäãÑ÷Þü›k%Îg;P…+ø†/¬óôÆÝ“PÆ«ÝdyJ?;ÔcG?°Ò@f(Eë×Ko©þ4f¥ÂqNÏðûõÅœÁà£ac`( %O!7åà2]Û®ZïFâŸLÀ LL€§øÝo¾È›éÓ>¬[·ïŒ’·Ð2ä\,Î4&_Kd_ƒBˆÌ{ýÂÖCÌ&,‘ùçÒp£¾ÏßÇ2ex´ £Ùg°]@ûñó¼GNtù¿øüp+v»ûbò‚+wC“¦>Ü®«ïŸEò¿ÛÍÙÇÅ×nè AÒ£XÙKNü*íaÜ :€ãríq ºÞ•ˆÎWlS½g¡VÏ,ÙV.³ÄNŽ*ã¾^ŒÐ‰Xr@ï%ßÛŸõù¡,;Þ5*‰Ç ÿ÷BqñÏM°îQîê è8÷oÅSï‘ÒFã–«v“§ÂÐ/šÔŠCÅ£oÔЩ½0¬Š]ÔÃɬ隥‰ÜMÃeÕ¥”²’/ˆÌg¤^£|Þ´Å…^gÃOŒX€¨•›*ütÉF”0Ð#ÞÛÀúú\>Òq9/ÛÂAl&F“ Æ<‡Žq§LÈpãù¾;ä<úΨzaÆåÛ¼;qžÕPæ Õ:ªBP‡ºæüw&üªñj.¡ ó†±§iäRûåÖÍ}ŠPìêº4Ž×DÃòÏCÊòÓÎÎúy±¾3ýóQúù²79‰Ë…F€62±Š:×$üÝÍ 3˜X¨ö½æ÷ó=jì;¢ì#|r ^oá¦~ f¡ÇÆvâ’ð{V\ooËšÜUv )ÎlZ{m¶qè·¨Òau°èb®ë5×ôt¹ç‚Þ7znýGR/ÂÓ«1£bY ;’nÍ@[ÊjOl“æê6Ø:QÉôßÎjNQæTµï ¶æU˜g`=×™OÒ¶úhëöw…|ÞšCv^ÿBa£é@ïÔMÓ-âm»ÙQ—³ÓNR×YuÆPYôñ+ç¹¶”@ÿ¿_Ï ·ýZ™ Ø(ƒã“i{ =»9íð0§•'S.¤|šbXÂÙ •“F-öΩ~ï$À £~@ Áœ¡Ã ÿç–Ðû.ø5„c^ÿη}ÓZ}Œ7y§f?÷i¾»Ðú4{ R.bð fíŸÎg2ÿÕT»Ô@› çɶÃß#’ð¡k³«Ös ÜKÜ¿ó*‰iGf[fW ºWð]ˆ GŒI0ÀòÌqò+?#yñÞ¤ÐàÔ;úUuªÁY€ìའÝpÛÿÔ¨mˆÒ@± ;"aÀ÷MëÔeW¢Žž­^“‰Sk¥±ù™÷îûdsEúI¤Ò溡k«æ Š@UTü ¯Ï•´Ï}c0âR£ •9o6B­ÝÒuõ¦šúí¯‘¸1E­š1:Q+'KüÏáF磀žQ÷©FDnû¨Qáõéî­MÍ ƒÞþ5ZâàY YŒÛÔ2~Æ ™ {Ÿs~œ&ïȬºžM †¥æ2,€l¤ˆEHyMñ®2☥yÈVxŽD÷sˆÔfA´%þ mƒ8QÄêøú›tªù¢ohõ‰Ôò‡D—¹Ñ¾'³Ðz/ÿ:^=jf‘X}aPþ¤€¯?;ìÿ)B,‹YÝÃâ®7o`”µÏ&¿}nV«J»Ô::W/­<§^£ýû¶wtÊᘇè†sGc=¦¡,0Φ÷º­o!xÏÝWñ‘=àüø:¸G_#Λ–RCSŽ1ª…lÍJ–,²½;yÁ[æCbœEÓÛ«¾ÈÜç§ì$ÇäŽT2uÿ,¶.•5åÕê©ÂË-yw}ù’±Cžì~÷1|¥¬1ÙæÂÑ›Šæ)ñâŽq;Ã~ÇÌ­S‡6¾ðIKm)ofå2íšõl¦éPð­GÌâbI/U½ØˆDƒèŠª‡hä2ynâë›í~¥%lg÷½^+Âu›Í–Æð.£-–oådŽ Çü¡xÎ ”·¢µûÿÆoJß´¯½WßÅH¬L¥íÓ†Oféã…ÙÃïÙŽ“çÁì*z$H·GQŒ†-yòÚ€^ùúo‰ÿ±a˜„3âÊöjŽ “U{"H.jíyzÌ„ ='[[Œˆ}ëNOfç¨÷jB©Æ?GVéî%UQÎ׊/A TeI?#‚OçÛ®8ŸoÃõº©QNñÆq›ä •QäM1uÝ@–ž“ÌßbšüzÙŸkÃ%\Ò†Ž§,ÉÐmÌZ€z ) 4K^N—;pbj[©ý4`0;qéËZ—£Ç*æBjE7¤g@:R®ˆ ¦?4.ê·…a''˾ïë¼äs²_¿kSp;g’£ ûavqæÜñ iÍ#ÏCQN~GÞ1i¥ŽÒ(²2tÉ.\û9 >{aâ|g f–¿†Ãu<×ÿÞ¨?ñqÓ•YË›ýß¼ó ͽerƒz7€ßàJ@îÙW°sBÿiâ€PÓÌ˱ù?>BÁ¼žÿ³ñqÀÌs„eE:3»-+Q™òŠïÒUIDPo wԴߘ…®§À[U›1ÕCCAæÍÆàR´#±‰mçÉ£9&«hÔ;%q4pæXBîÜlþs‹­Î÷7ˆfåòÇÖQÑé’ų/œgKÇ{nØÕ˜ù·P›xÅ\,"Å‚ÁÙÑ’ø©¬¢ðù º €07ÑólžØ}kßòÕsøIï1ÏŸézÝÈDg Ë:ÏV÷{ü{išÆ;éÑÜasTz)ƒ‰kЖiÀŸ÷ƒúÜUò^“7ÒE¡®BáŸG9¿~½òÃCÆw‰{jÚÍœ–ל©‘;«¿x¬Í‰9žÕeÄÉ ±Ï§6b4ÓµÁ€QtÈÍk,"þ>¾K›,q@wW´Í¥Ï0“™ð×ä8užƒžÎIXŠž»õ­ôÎ]gÜÇù7ˢ¬2tU{ŽŠ¹'žîŒ³ ÎijîâþÔç/.Ø º!žö¿Ù!–Ãì߯Ì$k¢½l¹ËçÇu.ÑYˆJQ% áL0`ÊÊ9§>wg!©bÛÔÆQ³¬#iÖ"³`Ùà\ù<º@2¤›>V’F$h)Úêñ±|׋Ã6)v{BH½ 9 )¿/Ò\$I;׋†ßîÛ†8W&Cu¼k¾¾ô&Ú‹~v©Ò0Ý å Øq]NWÇ~L‡i0×^ý]_¡²ã?l£Q³CXm3côùŠÃØ/ñ‡Ä­ÁÝ„Í$p¨Æ¡ª2M'Y~÷îù09q&²+ü~ÝüC¼™èì]6Ý Wž{Æ!zþÈ­œ65ÖðÓ9¹Ì!ò©m´vPG³¼ì7Ø Î]Hp¸:¸†îYz2Ç7Ÿ¥0Èwµ“ÕçF£]¼Ê'¡/'ijÒe./§V¥kâ”Ñ#̰s]¢˜vDô¨¿ÌÓñI:ßã®k8à9wÁÑXÃò3 ¯û³àÛ')Y[Þ·Õ‡ 1¸l¹øêÞ„S¯|1²ԵÃÙÝ`¶{…Àa¾2s~!U7”Þ¿•cU¯¼ÅåWùmÝ“Þúö`óÄ™*É¹Æ †{YF@®Æ¶û |ÑGÓøh¢=q±yÖ¡š€G•rCa¨*&Û‘–çÇBÝ®X‹µ·[cŽÛ踊š‡ íµÏ|mð»DÞ©>—Fˆp[JùçñèÖœ¼0ã S]õa6ìÖµú&?tÕÝSµ×;yìâ}–ÝÛü 9ðæÖÚI¼OžL* êMÁQ`D½ûzy]m-ò¦Þj Y\¥ý¬ëy.«%ö|Óø´OÎncv˜Ã+i߯|«À¼¦¬ârÜf“²Ûœ”˜sý\S#®2†d;zÙ=rè5t‹´í¶uÌ}8ÅãæEÒu±Ø1C¢Â}šHʾ ÏL•MÑOX¶þ"÷<€º¬ þÅÏìçl?ßçèÕhöÅ·Î ÞFÇDù ?FC†[H9ž5‚^%ÕÁã—ûó?댡c~ã4jY¸IĨМkø|ˆÔ&øÐBÛ¹±°œØîvûyrçÀ¶ N¬¬2bØÜLe°öÕÈwûÓ˜+5òL1 5?3Ôˆ3ÀØ¡-Ô4Úyc)5pNÛwßO›/=ío/Ê´†¢ßmÍc^¶•°¥´¨³zûçï:¯?_±¶é÷òª\v#Žb­jþæ.¿ÄtÉ(¾âÀ2q ulm;ðÅûÜ/Ô¡Ž–òab;¾8î]ûýžûÓxVcaÿ,ú½?‡¨a½Qï†Ü“^TŽ–`´^%B¹{Q6p¶rœOKë6¤§€0X¹§yÑ»45.½D¨ž|r?E&Õçù”\+5H×Q jÞš~+Ücx2ªÃz 3èÏ¡™#’e w®«ÐÚ›ÓZ̃o«ŒæÎc u†÷ –¹Í|¼ß¹$—í´¯ñ zŠÍ2l= –ãêûÝ â¦Ròû‹Þ„ºsMÙÎ]JGqž›4u$?¨³ù.‚æÛöÆü ¥åÚ/î3Õ¬~j–ç=â´²žž««àtµèº–ÿ*êHèDÀr¸ía5[È·øe í,ÇÕ‰ö:9¹ï£ìö’æß$÷H#² ÈüQ^Ä?n»´Yç¸&вÇ«n6 WP˜½o‚@ÚX½ÛÐKM•n^Ä·¯×ŒéN柭‘œ8Ò@pzLt#‹½©o+¥²jÎØµ—×3R ‰KÜMÒ“c vì–ત¬X=Nrj´ çG¢q—¬*¡Cþ÷¨*¨,6Ð@8)œ»A0D—¢Nà·î6R#uýùo›KqUn{3®KxyGÒtG­k:¨¤¸µ3÷…-ÛM¬ù`b+œ‘¤Cª Î0–bœ¥œCÅ p‰§+)6“÷T/\Ç=uEØΚ†HÞê²i'Ó£‡[ÜèÓÆý*(ú¬V¶dº5ßÂ2žN—ú{·šæ÷7%Wg4OQçó?¸dÉ*!ü±6@2"ÿ~@ÐY/¼ÃÑuX¯ 9Z݃•Ìû>v¯Yˆq‡§¤Z”+ù/I§ÁˆÓ ­ý&ŽoùáƒRÛ=Ød(Ë(ôæá_nÑ]Z…U8àlcÒ+G\ BƒúØÆAàT-^ÍPµBŠô#pã—·{P¨[á}‡ý@/˜”fÅ¿sCcT,`øÌÿ/ÂÓ¾cqc~ùû_–ÿ(z®uæ[ëZÊd‡•æmÝ‚`!‰ƒ!ø Töì6Ìb°6L¡XÕSâ+(+ú˜ ˆŸŠ+ïÞ! %æÖаŒ¨Aˆ1‚0ˆƒ²(X‡¦µ‚%«É(t&¥[UÖZ»­ŠZ‚­Á‡¨hêšËjˆ‡Ño- $5hƒ!‚ã Ê ŒP:'§ %ªB)ŠÄFøÝ Õlb± '¾SÕ dB W ôƒÂ+QbÄÑ"@b1Œ¦H*4AT1P‚"¥HªÑˆ*+F* ”B(c@aEhÅTA#D(ÀEc#£T(ÅQ/°DªăD*ÅZ1QEJ8±*¡%ƒƒä=ì ‰µùô97Œ/yãñºY8~:ŸÀ<Úü×Ë ô¾5JÔ]~¼ahýDxH·Šœ2PÉš¶ƒLâôWÀ¸çmËy‡÷¹Ôw{Óÿ ‘H^~wñ[Ÿk;‚qéú·ÓY–ü1Y$¡ !$ ;GÀh¯0ìÜf0J¿…Í:n4ûü×fSÂ9îü·é›‹Åójt ß9Ìü€ЄåÖf5ʼnõTö ×8ËÈÒævÒq ÆK%†2£~€¯Uä’T1]çŸWnàúÎgo¾]Ÿåƒ.5¶±0`ç¼7€<3ª$ ÜÃÊ£$ïl´"²½d¼ 8r€š&ÆšiHõ·8èû¾v—;€WÙ¹Y0ö×T=ÛêAM(@H` @vÅÿó’e5™€_ 2Çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ­ñ´÷'Øó\ºíëwÛ}ßGÞg|m YÝÜ·zÉÏ;ìÖöú'ÙßtÞ]í*îïMÏ7or·½înäÎõí{gvõïin·½ã¯zëÍé¾Íâªjdò50&Ó@ŒLÁ4ȧâi´)隘¦ÐÍOI<š0™OhšiƒS!´Lš M1= ¦ÒeOò#)鄞ž”õ<jyO€É ›@OM&›E<™¤ÚO*Qˆ&`L)âz˜˜M!”Úc$Å=M“Lhhša1=ÔÍ)äi¦ÓLLCShÔÚ56€2˜hH3DÀ™¢dÑ“&jb éªb¦“ЛI´&©þªzyOÕOÂdôÐ ©²ž x*~&L‰éž€ÈЧ´a†¦'¡=1M•OÕÓTñèO20§è“ÄÉ©ú›Ù2žš›Tü˜S2Sð „TDÄÍLC=&˜F)±'¦ƒQ±&2hÔõ=54ôÑ1 ™2zž‘©ú†‡ªz42a2z˜™© ÈÈiŠÒãØø‰C¿O6ORw2K&„J\ÿDì(ÞwöqÕA?Ö$—R7ÊÇ&)Z'>OöØ0îGF¹—ì‡3O¹Lw¥ÏD.÷2ŸÛCf¦‘ÎÛ\mëλ¾O.JÁªZ‡ïνÏC«‘H¿¾Òòw;"‚FÄl8çcÛ„ÿ*üz©šîÄHýƒvv€]*ÉZó‡¶îÜöD¼Ç3«öäLz±¡hò«iÑv¡xîìì.£ŸÌdÖuÐæÌWn…á8Úê·¨w}èðH&W bŒ÷‘g%dD“&tÒ¼@’h¯@„„‚ˆi$„$ âP3à AƒÂÄ  +˜ÀS„˜’P4 æH&!„ÁŠ0²Òh_…êN) Ä! *à§ ÀÊ £+É Nj¬íŒÉLQÄ´¥1<$BLhHH,ÀÄ"Q‰ %›9R’íF ²‘ü ”:ƒA!ù4’hR €4Í"xÄŠF$±­$‹!*ï×5S0¼Ð^¾Ùò•³;‰ٲ뙃LÎtkëhBKÃWER±*A•A1AAZV `“`cN7Úñ“D»H8úø$ ƒ-áýc](¨»šÝ'é¤ïgã¶»™gát—Ü-I4Ó‹ÂRöSÀ'M uÌèàÐÆ®í@ÄÆ˜5Ô´Ž!д³L5VÐÆc]s;ö¬Y‡F4`˜÷{hÏ´’ÞÚHÛX& 9…axÇBòZÙ®)­¦é³©¡CF, sTpfÞxå@ F£bÉbýù }k‚Û']ˆ1Ÿ”×ÏQ¾L2—¨;°ßiBņ9s¢÷ÌAÖM@$·ŸßnÙûW„¾g´VåŬYpÌlÿC¢ßüo™yòºz R¶écTUZOôô›DVVÖÄ÷çXP Ö*ý‰·[¨‚1¤¨^k»½É5°/eŽÊ ¡Nr  Å؇ÿêØ ¯íµîKlpÂAs†ôÞ›qmñ¹Z÷žFrÀ kàuâá¦Ë€‚L û+ïÓK$ûYÆÏ--ö·{¦w“ÑqWüü¸ r¸T…äêMÛ) èÒ‰ŒH ¤âìA  YãAìw|•Lí?Kòj~‹ Ìy>uu®`Èr˜ñ±kaÈ€L+BȈs´2¨¤Vü., €¸ €ê0ßwó\—ÒÒu¬TíY:Å2x¤íeQ9Ö«¯Ÿ¦MÄÚ-+1@gßw¢Æy½zâ“+8=#€ô ²‡áR+€ì†€žãôÑQÄï?e“Ò  ž} ½h7ÐÁþ¼Ó¼1>¤†Œ›šëKx©Zœ¤n0â À¸OZEÕ‰Ì'‡Ãm/\X<¯Ðú'¦²QoèÙ+6«z!_!œ%Hän’®Ÿ@Ĥ„Ù­2Š>‚dìiÔ§AC4ÎÜÊ{¬½ÎÖGãGÖ5§‚á~®>eõ³M” ³ë-EèÑü\îªõþ­ïíWU³nÖ•¸Õç}}<êëò=)'©“ƒ€!õJ“æækÜhØ·ú-!uáÖgXYZ–‘Ù—"µ!Æ-ˆ¥µìV%ñaÒÈ¡Kѽû%ÄÚF¹€¡ˆm!´„C bM€6$ÚAë±0Ca D4 pwš :¯ïi™Ú·;Æ:À::tN "´»Û^†€££dêp¯p¸"ë»§'¸«ù¸69Z.1l™›¹wd†0¹¯2‡bh{Cv,oe?N€õ*ã¯n¤£ Ëýkd¡wËâ{³  ?…›§3Up…é1|†!ë8®&u~†UV«Ñ•&jÜOw¦g‚†í誻?ð˜ ûáªshŽdXñ.«ç4†å±–‡säDR‹ÿð[Sê¿×þk‚P&ïEôÑÄ+<_Êñ;¹LµJ;ÚWG¡ÏgÂeš%ùé/¤v§”cÒr‡þ/ÉI ¢ã{Ú[vEKL›>ñÜÕna:ø&6ÕÇ×®g'Öº²œ(y5fo’q%ðÑ6´Þ)€˜¿èÒæÙ!ùÇŒ~£Žºœ­q…J*íוÀ»w’Dœ~ê^Ò¥_‹µÐ¹Ý~_PoWâÚaȘOÇ™d¼peã j'Á°)èSh<˜MøñÒßþ¥äסY[BëѺ‰&Ö V'rx&kOûqt%×:qGº¦„Whk\VVð}¼5DÉÉ4(mÎ2"šqñuP£l¥TP̽J»OИÍêÉ:âÇðs ^›Ôû¬(«#Z,Ý¡e ù°òל¥%Éô ¡” ÷§×{8ªH&œ&ø§»Yq4m•/ CÛ… ã’yhniIûG´>îÚräªh/] vZòTæyìòÞíE”ÛýÌ÷¼É|€Ë, Dˆùþ,ª_‘ˆ‘¿’IÀX½ë5S õd2X Màá05zï›ÅÓíyýþß­«×¾æ°ÅŒ?Ub9I'{Ÿ\‰4ù–å…£ŸÁh{Rˆß®Òš¢Ǹ¦ §ˆ_u¿­f¸i• #!KÊþ²^ðLA6c-Þ.•û˜Ò¢½óýIµt ¬;nÓ>r©»9«¾±ÊÀzÌH` QSS4ë~U•XÕã`ö ¦fö ¼ÝÝ›è2ö;\·îËgȉcÓäߘ†¡°÷t­/Ú ÈȾªÅv7¸è‘)ˆ”xƼ{ì½ e>Ô>[¦YÀb•´(¿Ê®ã×è3AÜ/)æõò§3öu¸m5½Ft¢H<h1È[Ý8ƒÚÝÈê/o]SMT‹ÎB˜wî-*²ÖŸÕYŠÄM² ž¸œ¶nÄ·CŸçß,1:À @‚Ê`¦`i=!ÙÊ$¢Qƒ~cå.x•*6¢Ú!kàù(‚¹yhChD{Ù;°xìLÞ ySÝžF2$†•%ŽÆ|ªÚ6'B‚m©„ïw|ž+Yì°M«UlÕ5—º¸ÎÑ99<32™a=U™sSó|_·Î×9B’Z£´Æ"‘|W/×;@ÃÆØà=6³îæg†1¦¤! ¼ÿgví0zRÎuúVø Ò6:Cìþšl„ö59:;|^L«¸Süœ¸^lfÜžûol§y“g@âxÌ[¹0S£S5ÁŒË£ef¤õüøN«1†(ø0¹}â¯>mJé t’ù™ ZbÔØ¢ì+¾àŽ ¸ö¬×E­^k’ªRzN/EŸó‰GŸ`æŠtø\̪¿ïOµi’–ápÄýÄìaåÓïD¡p¹HÕ¡”Qe¯™²ØtÄ¿ßQéÀ™Röë~90³„•Æ’æ%ŸÖ7nÅ3e%·(}¹Æ»UœŽ¤_õ›Å•`Ü@‰‡$-ô*Ã¥ ù—Ã\ÀûtÄb))§Òª„C¥­)Þ'R°¯³m›‰µÉ1Ï Úïhƒ#ðE ‚@;à¾fÆÊ~÷D?yú[¦>¾œ°oNˆ_Öò½†TDÜ!P]yz™d‰6úöT—eÍà»”iŸ¥ß©¥W>IGÀÉGôÚkùŽKGù!ÝÈŸÀÑñ,»ÀÑáˬÁr°Ôá †Bë÷ìrÜ—Y–»Ö AP„¡?lt›OgE±Ke¹[ ¢'òsŠ\Õu3L­S²ü ÜEÏÁí žæ"s‹$ gušIÎ3Žò]ga¯<Äê÷qZz“Ê*Ì©"þ.½twB•κ·§ «è“r¦«Ì! [zfÄÚôÎë'îç& ïñwFèÐð«÷­î<²uÜoRkí€ËÓ=+LæéG]â_C#ŠÇ[f /µŽa£-ú 1p<ñ¼µØQBÍÝs/o–=ÿW¤^SžÀ¾´ÇßB|‡¬4ÄN•½óª' U%©Ü÷;yxï¼ÖľÙÀNd©î{V*äÚZ[MMz$ŽW¬2£™}ìTx~ž`aqÆQlP$Ôeh¿º…öŸAW‡¤@‰J-r9Â;ù‰s}ëfsK=vzëHÝö ÿ›6vžc¥øº¸ºnÇJ–}ÑjiÌÒæ…ôÛ‚sãö½Ú«¬Y39ƒÕ›E5íL2©ã~59 ùîX~îff™:´ $R7*µ¨òJz»ÂýYK>D×>xŠ%&YÚF@h>&Ç@°£Tí>Ô~Ä¡ìo3ȤøíÝyã¿~^ÜwÏéÃl°Þ­åHJ¼U<¹$R5x Ö8‚ÜÀD©ùáXÏ"×ïïH¾Õ$ù¿¦Ô (­i’ꥰPkc¯&K$÷˜ÖnÖÿÎIZÄFÒ ‰Wî=B) ’<:ÎÈx2:¢$´ˆêytxmqÔ‘»ÊÖ¸ØQK‡bX-ƒU)ðP~P’ ¥"¯Êõ–¢^)]ÍYÑ~}Îĺåáfä²â½–®¼Q<Æúü¬å¦&ht5îÌE=….ýÇ6Àd‹¤À0À>À$ü xÊ—9ÖÝ…Œ„%ã.·ÖxñÜø†ó²›ð俾v=>¯±°7“Ðrª~ï kMÊ5úz¼@¹Í²¿SB÷ˆž±up<åYtÙé!±Ö¿Éãz Zßxlhñ®[áêħ_+í æ¡R¼eO~ 7·ôÖÔÖ¹cûÁLOÑkÆÊ}=c“™+-fªúGU —vYõ˜Ðƒ·Í6BžÓ#©Öal·˜’ˆ¿À^Cã*Êq+Ù±H`sI‡Ó×a²¼ŠkUV§0ûs^Üš¹ã!Â[¶*èïê³:-£Ãë×]ÑvéSƒf×)ÖÙ1Rݼ{šçÞš§»QZr©îà赉iW1õH=¬VµÍgÇ©ô(@pˆ.Ä«ó‡ßI[ûÚ“°Ì—0µ¡ºÌGW¤òoþ!&8,*–UTjœ*:/SGÚˆ ·ÿ¾¡}­§aÝ`²ùyù¬Æp{{Ðã?Ý"†o÷6š['z¾oøgóÝbs6£¾–Öu:w?™îØg4€‹gÀ@2¹]7·Â£F×{7×°‰›é%ÚqÆÃ¹‚ØDÐt8ìð@* )æ&Ä"{.&š20c€-‚¸[Ê0^Ÿ¸kj4 ÁêB@¤‡~w…ˬõIe$•cPWib¡írê„¿IŒÅ8'›UÖ_þ”Ê}ûKÄ cWDë9™~ö?±÷-™ÆLI÷÷D›(ãf;hùæ;ßnƒÎ•KŽ_Uéü6ùæÕ·r;ÍM§{jÈi3TñaêµäDWˆ¼B*Èþ±/œkL«’$Úß!§®ú8è§DâäF±|§‰=\uÿ±ÈxðÓF~• ˆ„âOåÂ?†ÃÂáLgÞ›¿2,o7Iî$»­Ç 6–I. ô\œ*ÐÃTdë§×ÇwEkGNÙDµ‘ü¶š·Ú„¬wþøú~7ºöÿͯ!ƒlr¾}SÄ%Ê>üÅ0íU¿e«Ê%&Ƶ×IÚ˜o3ó4䎛Ò^ ¼èAçzùPÞҸƖ•KwتåZÿ쎮÷Ez `¬a<~ž5æ‹×µKìËsøü™ØW n™ÖdŽ¢Æ÷*’( ~rݾ¦<Á¿ò ²rË¢£<t+"œÇîÆÒo‰_¸ZŸˆUZ°wVDr1´ÄVÏ/y¥™Î»5C£4¥ÞSîŒkN èPÔ&ÇÌVO¹YL^É´§“Ù%ý=˜ÑA"Á»xŽÛH¹àî‘“ð !ê~ÅæfQ[Ú®¬ó¼ î¶q/¼ŠØUûÐÇî,†yß½¥.솾Ïq éüSdáÅ›6Sû¡a$÷·ðÊÙ¾`ôD•ÏÃ{Q9`´r¬ª?Áø8´)å_±:á3¡¢1z-ÌþûVí=Qºd«¸ßÜñ±†Ižl{¸çÌ* rP¥µ$sQ8ÍúR±Ñ‘üg÷ë„6Ïüs.ù¹êÆÔúRdîŸKïu2èæ\Rç^¨Þù÷u܆H›‹Šw;®ò~EzÉ ¼`â~3nxoþŽ×MËB;ü0¬$gƒFç·îd玟múÝ3~EW¡Å§¡Õc/ߺUå²'¼Óÿ·Çcâ1qhÂ÷بIGµU/‚ˆ„IäA€Œ')Ÿ|i¤ê¨ÒY+)Öˆ½¥Ž o=ÝK ˆ„ß#8.ÏrÏlLpµG¯éW¢Ø÷o¾ø½Ã4eêñŒ˜ßMª ¥¶¬ERÞxK©cïôAL¯‚Ѩ SÂzΜœý:¤Ÿ—Ó2L™¼J±û&h»F;pKò3üg@¸ r‚Ad„°/+y÷Ø…ckZÐÆ³+3±3÷3©ïbCRsQç|5Ýå ùKÑìh†£¶O‘ie=ýqÍxzzf 'yWÊ^8BVÎ,—E/Laž ŠóÌ-X5¿§auCˆŽ>îxÛ&5ôgí{­„>ðЬÙa8b^Ƕ¦}‘#Sibm÷[§1êéZ¿V¨ßæ( žw{ñSòYV4þm|JT·vW6?§hþ®¦gòå<Ä—iæ¹.~ƒCYè/ud~´ GUÕÕžµ¸c@ßR,n'›Ð7\bò ÊC\ý=›ìu;oDg9—¯ òÄŽcÐ DÒ¸6N­Ô–Ú¢/¯ó,˜¬x( Ó™úÁ¿>ŸçÔ„kMÅs…²tb4ÆçXH fµõHuG'ãÔ?0w.»Ò}¥"ºßIô§•—ïQžd¤Ì¬ge­­|¯]ã8bF¦óaõʸMÕÕy§5ù¶›£ølÜ}¯ö£= úÄPß5‡ïÓ²å4¢@éD?n\?qÏ8DO¾Þ¡’?zÕÜOR+šÜüÞ»ÙŽÖzx{’03V•+– DOœgR¦Œ™¥Œç/E«?¬, %0 ßž5€µ]HÚë0ÈŒ4|/áOùT¹Æ‹ 2¹VŦ³Š—±&%'Ëí¯°’.6Í»kŸbï'æfíj\¦‹+ŸÖŠ„~(ãð9nm¡0J¹$Ž”8"eË>Ï:Œ¥Úzl1&Ëg†—™³˜>àòüÝ=Ž+æ tŒ|Ë,¨ÛÙ ¾Ù¸ÓxàüF£Y¸ìÍ91ÂnÑ0ÿ´ò…>ù¯ wqõÌØêåKI°_¶W•\‰&µ¹Eî½výèæ4 ·º§,ñ0SæÓQMòK«S*|‚„“ìip<9y ZÉÇb~«³ÞÆ·* {›®#fêàz¥‚§%kl50å*ðØ®Àsæ8ËÏe:"d¿E\l†JÏ!wßã{3kˆáëTá z´„ÊøJm,ÊTkØî|A»%'À.-RN(ß8¤p"˜tN÷¥½ *ÜŒ`dy%ŽùpIÝL®¦c`?ªg:i⣆æ{¾<ÑìE…m^%±@˼KlÚÐ8ü«™¿~ „"Ô—;þ¶–V$4_u5™møKNਬ•°¥®¸ó§î¦³hÍ é^ê÷¯©!ôžSÙŠEÄ-as[«ƒJÉ /|w\<³gà¶c¬ÚŸJÂd¸D²œüå³-mÂq¿–9|øÅéã4f0j_YpÄÊ9¨i,÷ç)À~dʆ¤11ÉUt¤îUµ_;=ý›_Ê,c4!ŠK ’:ýÛ2­Ÿ/å_ãÚݸ1–{´_1p+ø „îg0Ýå¸<µ,6©½-¶JÖ›©'hC?F ?gS‹ úÑ•è½síb=^J:ù§fºŠûŒWYó8³Q.)¸}&xQæÃÌ ïi#Ó]3á ’óɲoüÝ7‚HËQ×Ïå¼¥¿v¥ìüH²M…ùaøý§QRBºTº^:ÍZ¶Ã°­SÙh‘ô““òÊI[°lDµâ‚ù×¢Éé>ÐØ+Îß<ßõÙTEÊæT×'i×`ŸlYFM»‡Ã=À7åfØg=òǴݬoAöb)ƒðîfYô>]Ú“$3§NÆJ_K)`³µÕ3‹Ïý Ö›3-‡ñŸ¯CåÌÌV « {ß0)j/•SÅ'|?Àzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe1.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.785788943 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe1.dat.0000644016037001603700000006307613607166133035022 0ustar00hutter2hutter200000000000000BZh91AY&SY›ÓCNÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà-¿-{}à(IK£$¡ }µ £J³·jÛ¬³»Ýê]·}ósÞ÷w}ì½}ß\ÛÞ¶½õ«Ö&ùóº½çÞ§½¦Ý.jŸg‚¶\ïLîû½öónïïjÒY4ÊMìË¥£2›vʪÛVƒ*æç:Ún­mvûè¾û¼E42IèdÀLLLši€˜&šdeOÓ™14ÓMhÉ À&š0™1LÓAˆ`&&O@`hÁ0&B)#M4F54`i€##F&šž&4“a10˜Œ§†•?OSLF56€4h˜§„À5<Ôô™ š4Ó&™4ÅO£z™4zHòh5O'¦ Õ&шiü$ØFIšh=Ðô4˜M¢zšz§€še=O&”ö¦Â0&†˜Š~“hѦBxŠ~Iꟑ£MLšmM£SF4i£(Ú›&š4iA©$Äò'ˆÄɈ›CLIêž4›PÄe1¦¥OÂjjy’Ÿªyªm<™0˜š)¼4SÍ›I©úOAOôHÌ”üI©ù¦ÊyLÊži“MOTzm¨z”𧆞©? Ñ%0”D&¤ 56šüš'¦š)‚M§’f& ÃQê=MŠž)°FÔò54ÔýF†ÒO$o)‘¤y4Ÿ¥=5§•4yLÄÔfI¶¦˜“ÊhiFž„ÓdLS56H¤  ´FLLA=€“ÚJ~§¥=FhFhÄž&“hÓTÛMIí)í©úhjž'ª{Ô§™M=‘©†$Ñššž™©„zSdõOÑOMO$ýQš˜õG©ê6 0@×£WÔ’ƒ†6c5‡L aA"¸¿›O¨è‰deal_Àe`ØâBÕXEÍ"œ%ÉއÝ{Im™+Óã€èÆHËnÓT‚…+ï1tέ¥¥Óꄸ =þͲÜ9‘¹6†d¶Þa¼n"cR2Ÿ§amWäºG ¸¬„¬"Fѱ lÆ›0­@EΠ Vá~’L#`…#@pF¥4‘A¡´$’HÆ @’@¯X$„7‡áø‘¬XŒESU„EÐ1¢4/ÐR€Á#T‚0‚ˆb 0I$È4« F Lc P£+Âè(†J&©„a:ÌÃ% R½cž#²y!ñ *IKríÑGÉQ r*¢”p`„¹•#äˆ5Zó1”íÃÉ . -»!$—7: 8ÄyM$„×´ 1,þ¶XÒK,0HñÓ½k¨,í ‘“eü¹† 4"ÙŠ[7õ –!­ €4 Ìf ¸£Ž‹2¿˜" «Jó¥":·ó²Á0—Î@X1¦ üT`Ú<¸qà¢BI/9¢±€’!©?¶Áe! ›¶Œ`˜†K`o*”èÂ4"=0úѤ±‹J/ð¯ äù\ Â )‰‚ð¯ÐJcFjE•AOhèÁ$•F³…Îi°ÖõÖù‰±Ï›Ûß ”¬ˆ¯—|XÕ[NÂ¨Ë—ì«£æŒÆŒ5U¥d´ºëmØ·7^/¡ ™}ó³ÝŽvÊŠc-Fc¸g‰AŠ$ ÿ¾¼Õ"¨_d$,¢á[_'“¯æ~êž}Á|ifN3ãÑbn ¹k#ZFÎqа/»é‘!P—|oÃŽ`‚_:‹*#ŧ2j|ý~û[†aÇr5ÿHE Qb¢ëÂH(×mȘˆ¥,IÍáVxÅ žÞ+áå±9DÓkW›¦3—TÒÖcògñS‰ Y(§távƒá„1ÎÖQ$° ñtGW„R¦–æPÅ^~[«p¯ ÆqôÉöeý†0±VÆx¹ÁrIݺëX’¥Ý>Än3¹Ñklò8w¨Ô•"Lø‡0Oh Gsò¸}Ø(]Á¨„&›€ŒÇ˜˜tÞ¿ÊKws{Z°ÓÈ­mÊ(ìv…)`W©@ö)œA„ã~¸€æB"×Ë8€Æ(uU, Úç-«9(…[¢[雎¥>š~ÑôÎK §G[áárÆccš_å8¨8N¸,ÀÂ8j’Ô '!¾‚‚艿÷ÉTâYðÑ#Xå#*WÐoZ{=#´Žt¢ªÝÃ5n°f#›ïPÞ°ê{"ÃÂháTpúßON;²7|Ä rò[é¬C(³¤ÁÅõž•50ü{û2Œ^NJ9GÔ½“ë‚W®óU¸_2;øŒµ’’ù-;ˆ…¡‰ÇkLÎ#;q _gÓúgB„½+¯»é´¤¹¤î ’I+XÍ$Xf´X-Æd¥]ÎBù…îZ:æPq´#qÙ‹[SŒCfé±lx"Š**Vhj.m/ËRµêÑè ¥ä;ÔFŽˆ(dÌÆ‰çzá„«]Hœ§ o"\Òl퉟”¼6㣮yoïI±7‰$E 6–L`XÖžäZ$¢‘G÷R§Œ Œ¸/!±…ìãEj•÷ŽÌ51®|t#©Û†£ ?ÖMïiù¤²_d ‹›ç'Ä*›Åüô¦¤yaÍÑÃî" -¿ün²¿Dý¿ÆÒ{ù k]ÏW85øDbrªâ:©'K'<*­H[¾çxªIvƔӫ…2¹X…ðœðII]GÝþ^b(&)I<Á×JÄ8ˆèjÜD÷6L´a·—³šAF$%´4O1Õ;eh§j^«m —2| L“ ¨Ã€ˆöK6ÁcIVFĸ¬<‡Œ¨Â¸[°?}œˆÑß³š>8tZ“J†9I YÍÏZ†^­ò¹Bõyª!P£X"¥»Aç±nÙGÔÄiÚ¬h¥¢Õ‡ªãwm{ÌJúÑ9«V–AþÆ-ƒÛµ ÷ˆ+¿(UiagÓÃì§Z $¢Xwqß–š-i|æãG»`x´9ÌI!.ZO²€IÉh]Z°€‹³a§Dà•’˜̨i#>†‰à§•L¢Íïð­1À¨g>òˆYa&RZ4º5•þÙlGÁl~Ç ,'ã0öÜðn›öფ±1'“8ë¾ôÃ_1‰7óé0f úÉõœ0lßÌ€Z'ÎyÇÍ…ùxŧ i‰) îŽÑt~ǃpºuÒ"Iâ:¤ŽÉˆ¶mÄ $¿ß­Ù¡÷ªRXÚ RbK{ý°ˆw¶….-Ép{Äe)ˆ(åcþAÌÏK;ÈJ˜C25ØH±¤]O£_êfmrRû›TÌÓ‹õ.%Ÿ­o÷6^µ)iŠãšÝ†" ñ¶ú;u·ÀÀLf‘C"OÈ]¥ôŒ°:¹)NbçØ¶+*—Èš‡$Ž'­iŒ±"‹ŒewSûý¸æ—@vtÙ®À{fSH½1V¯L¸ct‚|Èüœéñ\ÕšéòËÅ…YZð˜rj* ÙIt Ì’qIaUÒæHxJ£6sÑ'¡™¹=©y•;k¿‹i~  b'‘ŒÇÉ±ÏØ„žD¬í•.ý‘â¸ÎºZ-Åc÷  µa&Ë–Œá• iRº.¼áU@Äe`=ÓÄ* ô!3«¡Þêù#‰—'®Ðò_QâÔªŸ¿^>€_IZpr²úáAš#È" JuéCèÞ†TtÚwihÓs¼-ZlŽÊf ÐØF¶¼ú¿¢jÇæ–P»Áx2~&S§ÓLdcK¦4Åa½ó8¼ìýzÖÉ¢ŒIgWÀpñ 1´©“O÷U±N²Å=óŒ£[F)³°Ïž{ÞIßlj¬rS¥™¿Ÿü4ùìÖ{è²é594ÚÀ+O/¾#ÒUyCS2d‰xlÊ9…ïÆ©ÍnpþŽç¸Çé)-÷Ò¨ê²Vް»=Q—íµØ>Ÿ¯';BžÛ?ðzZËkî”ËÿZ‚×&S†5´ïÌàêEÄdƒkuîÁÒCèJ`âM7ÇÌOÀväΗq@+”ªª µ†Ðù´y”ÐÃþÊ F¤=#ÞÈg‡/ÙÛ»r¢C‰!9®¢ä ?ÊÔô|;nç bݼM9SgZÎak¬(ÌdΉ>}Ãô'ÃÖ´/Á0 9mIãâ×@'B–v|Š‘!º:â÷NÂü¤%M`æ‘Ä— ÷b:æHUÞØüªö8…Œ#ž¹zÑÝ~µ7Dí$¿ív*¦–å¦ ê`z°35)?¢<ât‹¾ìÝ’aSé›(2[ßùkzëk|'›žä¿À÷ã%?ƒxìÁypÙ»¾ŒQfj¤ê«0p”=ŸÑ…¶ÕóY\ÕÛr¹}ïs ì9=7GY,*Ïf¡BvÜ«£hóÊP0QD£­ÎàØÍÕGÞ{,;hUÝ-Ëý-©¸›£öw¥ €wµšÊŠÝ*Jr€Óå"¨ceÐFš|kü‚én%-ï¿Wß«‹IòMYÂÀÔy@0sj êËà&ÓÞN‘Ìï†! Òd9]úÆ]LiW.Òí¯dýBå÷ïÜ4î×6Íw‡í””©¬¯¼J)‰9¹XZÆ+ËÉ’!€•iÐIO»í¥-M£ ¨T~©ˆˆFtϺ8ôiv;Lû,jÂú®ümïkÞÝgLt^Ç5Ž ¢ÀÁ¶èáú²¹<†2 A“ s?¤{ €Ì$šp,K”=–î‘J½¤¡œ„ê×jE’¥d$N§Á$A’ô’úÅPX€kËÍÙ1¢;¥åþÍ$½¦’W¬A¡ ¡i&Ä›I´ˆP€©–=ß2Æž|K½ËÖÑî<õ…$M ‰ó CEÎD•‚æz×–"ÊY‹³²ñ³WçŸW ñ1ß<2wmÄÆ³xÕñжšº S@€ø!ðPÑÚ±©9»§œpE¹V?PÓ‡•²0.ÝÔJÎÙï>¯Ç³ØØu¹×òØÎeÆ&æ/µ½/‚ ,»ü~ØäùEæ‹Á‚Þ !4€ŠgÅ2  t>’gwÝŽÚ¢g^Tkžò6éW#_Þ0šLã5ÍA‚µF ¶@åmñZ#E½£¯ž êÉàÓ૎Ðd§4º† '®9W™wá¨H|–2b‚¸ß§°”\êôšLH„@ pfX¯^båû8(Cèé6NŸòÎ8]ã› DÆ7cRo"#/ÚŠŒ_ƒÍ{-•·{šæûž®Þx<îÃ7gHÚ}îU]Æ×¿À ¥Î-|Ü|'laß òÿ¼_ËH2²ýâÞÚb[=‹Îõhq=dD£“ÌHšv¢«ÿõaøs‚ð-ä|î<;I&–Ñqã»vU/¿öÌàò ˜{o¤ÔsmÓù¡RÙSɱoû^¡ J@ö’Ö•ªÈ#d” /‡Ñ_$ÏQ¤³-ô\Å&Öb·ó0ÏàÂ"Oô¾Ötv—ö™ÿ ƒnЃšI mÅþ€äûc%{ã˜Dј©ÜØ!I"{}BûÍóp|¯èÂ}Êej—uæbH! ]!@òXtäiÍ rÊÂüL8ÅY2$dF’`q¹sÑ¢†®µÌ•é`ñÇ„€ÑP\õž—bná¨`µ6L¥ÑÄ·ÎÙ媄»s ˜âü#á³Ú ŒH†DÛǨÀ±OjÌx:h¥fO£‚~²TãÍïZj糎ªªÅOñˆ–FÈÐ -±_7% m¸Ç™û•mJ1Îâ´Þ¡jçZQ0sXÑÉO9*cwìo±4ZZ=2Ê“CÍx´Á.JH;,]Sg÷>‚åï¼ü­-©c¡Ïó'çq”}¥n+2‰©´ÁF0Z§Þ™í-Ú¨ìwzf¨Ï¾MÅ®û’Ði¡*nón-æw78™›S**Ì\gþ·ÌgL šCZذ({tGËIíáw·Òð˜üIÿIb #|uT¿1eš‡Ã‰_‰ï=M®uŒèìqÎ29ÖBÉGä=‘¹<¯ÃÂòñµÇ§+¾BÀ”\iozÙG_÷ˆÖnxϑ͢“ȪA޼|¸çâ³çfMÖèÊeýÚIž=æ"ÓXöWaëÙ–ÂKÿ®ŽnjQ‹Àñ¼ä¤5l—ßN4)áÜ««ÙJÙ.Ñ4€P ]8A~˜’¶50¤†yJMG"C£¼¨4iõß[æ› r•ÿ~O¹ï|gÝì£Ýv_`tñrÿåà>쟣þ§r/ï+Ž+0*p7ú1š©ÂkéqRÞbu«­í†'…£Nn¤e¤7,@8 ¶Q¶u¥€Þw0TlŠ0ÅÌñq£Œ©|—–¥x;Ý çÐ¥ë! ÐçxîY©ÌòÈñA>)ö›£i„ú@,û6 •»Ž¡¡]»vP~o4LJ çx¢êGf÷?_:Ü¢N%¹ˆÍ nˆ5Ab¨ó²à2.ˆ§žŸ4|††KˆAšbÛC¥²Í,!+*2ÂðÍgáûñ¼:›Ì2󚛿siñ²v(ÎBù"ûUøÙqID' E±z VâŦ-‹ÑÀ,á̓ææÁh¾ÔþRê¥pèçE@æpCãB U€}ž¿í“ÝI@J ó°ä¦~<å{û϶Ãü{ñ•¯ö»åŒaÇöã5è½ôŒÑ²š¾G3¦¡—[A‘nTkÈCŽ™¹©À„>1¢¢KLL-‡¸H"q ×Ï:ô'õî¬l5¦HÕZÐmx'€ív[ijôÌÐþl¡ÉŽŸŽ=§¤ýW¦•u"d%?¼Éb€px‚_: ]ç |Ó%píTh%-XÚqrq©hUÓfBÒ}¯_>ÇG„Àò¹…K—ÔB¦d´È5 L–Ù‰1¢£ËKï‘`-â84kä´J2ALË5DZ ?%LiBß, ’ÛT’kO‡ï~e v¬#b›ø}…ë\›ð2ùK{7DZ3…OÀ‡zv!«o¨e\þûä pÔ QsWÅ3Jo¹:.áq±ûö¬.˜Ê䦎o1\mÚÀâ5ʬâ "‡)7à§ôÛXøÞäO>wfORÍ"ã!Àeƒ…×zâ®`wSÛCCÎ+®Þ¾ô”b¥E-©x;ÉÛtè4¹1šï¯0¿¼«/ŽYäÙ{ZÂçøƒ[kEº ÔnËéŠ6Ù;ï2 ùÃÒz~AewX½£s7Z>½¼Oˆì}t·#ïäÑB„gFö'óaöª˜ô¹r+’ßXŸL˹§+=¡”,·1†ÇÝüß~Œ{‡AµÛqú<5 rŽÅ„l¡`8½¬À“ªÜ®A€?RKHLšFÊóVÿÝÑ'Uò»Òª£šð^%³°þ>à.!ÝÏÑ9àÐNhÇ3Ø¢‚Óô)˜íÿTŒö· /³+bû öÚ>:s”×áq–{Öð6Q@µ}úýØÉâ#в·†¢kŠ‘U.½´X&¥/¥ýdé`Ö§wGUÂC5>6 Õßó21ê,Ѫ òŒ’‰•‚•¯ØôÔò ®hv™Ž,ž@ÿŒ1¦³s•ÓÔRrnJVæT%NƒJQî   ̓œYpJ”Åó=¯mq½ñ,ÚjJ§…53²”ɤd9eù -µ­®¿ž+ÁYiHË#õføy¥­m&œÐçÐ;x/×¼<„4H*hfÁÉþNa¯‹ž˜¸‡éÈwKLÙò•ÛC}ÖÌ Ìvç|SpôØÀ®ô}ÉkÅñiG`  c6#|»Ñ—¯,Xtêv’£¿Óåþ¸ìDVé:žOs¦ê[k pü$pÎ’·iࢀ 4ŠˆÏ<’2‘Ý«C?ëÝÅ”:$|7CÇ_—|¡å˜ùz6'®[€ŸÎ Œü=n¶òþ°´&µ'«zSÄ •o[’GGOíd‘~€Â…ÀuVß«!;uáf¥C‚æ˜zÆc¶é'›ÉÔ##­@Sç]}–éKÞ¥æ~A÷ûíeH ʂšž©Û˜8‰jÕº£¯k-}w”óžM:@Šör>h"~£Y•Î:Ô_úœÞ‘w‘ÜJ8ïG ™a¢ú_ƒCª$8 `.pñ2…9FI¤*3þf¯izà£g9§©ØÔˆ¶XY°êW¬‘²7] ä—kMg¨ÊšóûaŽy# ¦­éaÓV¡’jíÝÖÁè?Ÿîž7^3Ô¼* ±‡´qk&ô‘±çé 9Yèïp¨‚BÆÔüÜ:‡Nœ'›¦Ç@~ä/–ƒÚ‰®²~P6íXL'34–í>¨ÂW’ðIð†[zs3O3²R¢YÔ¢3žó¥@Ñä¹^[*ɲýÝÔŒD}Å>(Àã5Ö´–¸ïùÌ*öé~XÏþ …LѲ`>–é~ ÇOˆ%‰$5œqd/- ¿4¦g«B Ÿ¤#Ë2úuGG-ƒkYħ¤á) ¨uv£ˆ1H}èHJ\òH¨™pz¡t¬3W•µæ${õ*bÁ¿Ai€†Úƒ„ÊøTèxmy ·4Ìkû_¾ÉÅ£¸³'€Kñ”rËšl« É"ý‹.‡þúu.¬Ëßkšé©kð›'ŸÀ{)ÿ¡1uÇ·&©nJ^ÆgŽÇ¨wð¬N ïù½Œ»3¹¢á›€"„æ@h)9MÇ^l+l^E `H²kzIá9¸ÃX€è qcè^ð«!w^OÛè[ú‡'o²/›êŽu*—x˜]3‰ÇyÊ5xÊÌ_GM ‡Âù SMÖ8 º–OAµí›i}‘ù8îsòW}M4÷/Ï›ÜÉÛf {SîÖÉTÌ—eÁÊÅ´Ã]žiFãoª@|È·+xVM¼u6;¬Eþ-IñVÒÓEKÍÿ«µëŒqIî ©>Çob†÷ÍDÀ¤Q†„·åbÇaØ,ûS^'µ1Óÿʱ(f—ë*Œ¨0ûû­XOqõäqÚ)SœòrìߨÎÕÒKæñní£e……Íô<ÃÈmíVk+ó•î05Ë¢eÞöP Ù'vtoØ·¿!W‰¯Êeqª‰IÊéÄøÇ–1|íþ4¾êö{(ë>•&U×Þ/oñº$¡^x43Ù„þÂAy…ÞêOùÞ_÷µ}Ä=L×~¦¯¬ÄEÝqêú¦˜¶²{w½É*Ê œ™áËv5„¯ÍËÿmßHë*©‚쑃¼©N_êÊ-µ ¾‡9‡ÝÖÆ~cÁ¢?‹óò¼«—] X$r+æáɽ^¥Ò8™…l\/ VúÈîΤ7ËW´BàÈ¢Zz¬´Y#÷žmeÜz?$|’ÑÚ&ŠP_×Z¸ÿl4“KÜk1JpËt¾ãòòSµ3qý'~»T‘ ~n÷×£>ZìÉ<;( LNdÐà#›·% !Áé²d3×â~¢„S—nÞ­‹vQA•ápÌ6í%þÖ£—ˆ¥X ~˜¯ Ž‹¾RP%–67ÚÆ—÷Œä|½…öj>Z´Äk“5S %]ë½]ëÆ¯H–\©7fFáÀº›ß·gÒ§†|³×Ž<0·z6uÊ0¾ò7F4Y&'C®rLìÏ(Ò¨•G;®¯íÙÊÒ8’MŒô `*g‡Aƒ•Ëk‰‘Ìÿ{ÝG£Ãr•’0P%χjQ€61n ´x7±l.lí¶ÎCÏù*>c¦¦C'ˆ/ʵQpU.zb%Óõ.å…fz:ãÛ‘.»1žbšF]Ä ®p˜qÀš§VW gÚ>Ùzܽ÷~Êö½–ï7'š’årf 'ÕJ˜Œ«ï!ã;}ß#W'¢E=øª0Ùžý‘¦.nsýòK ªôNc߀Jut æw;Æ¿¬8ÀT¶<ˆá`¨(ãuþo‰äõ¤Ž:¶½–ÿð@‚Qß3ŸÜáÄѳÈE¸®W^WcÜÙ\Ø\kÛ\ûª@’JÐkã+C©AæŒÏ§,Ó±r• PÇÄã°p’élN!â–¦°äy…´Cû£úƒ¹¦Œb.‹d[݆V|.Ý¥ÂÑß-âéÚÇ™RNü5èùªåvQõalqd¾ÂËR»g 7õ16ýû§èœ†ìAù5—C2B;¿aªNùCè 0s>*, yÐt°ñ«úI|—…ÔÐVzÎß‘k#‚øbŠ•™&PFO½»›J/Ñ¥==Z¢‚¹ì?8CJ¡YùÓää²!~USiHÊBŠhƒ…qŸ|Øý!Ìÿ`q%2uÑ.W!ÓBqìòU…k7G,·Ø]†fy[ND*Ñ“£Vàj~©=¯cÕËàx`ÀŽ×ÇÝ«õU¹gô¹‚j0Q4ÁZØ9¢êáƒ0¢%Iôž¿²ëžÇkûª8ëJÌnʲêWº95ìÞJwípg —’%­H&°&#:ÇÑ,%Òñ.s –)”ýå±ß>W5Ó¼WÎÐstŽÙ@Fà ‰A3%¡ õ±Aˆ²±ª~³K¬õ½‡¦/@ÀˆýKÛ,‚bà5‰œ ˆ2¥ˆ`…ãÉ“bH/Ñî¦7ªÃkð_ìïe|ø ¨}&âïÕ¼ãPõ¾Ö§^×!£Û‹ŸçŠœÇ³æŒ;'JÓ1®ôì7ÖÓû»cðÀa,ˆ>¹à „ì0@°òkÙÖ£0¾täBOjH+ Jò%[>8°þ ·ž’d¤G³ê\8Ÿ7%¬¢ÜãNoµ‹‘æØDhqIñ«»ç¾ ŽTaóCŽø¥Ÿ~,¨by~VÐöÑ"â—¹üŽ.~³Zmj< ó‡…;kwÉݹK/rDxF“n*”ÆelÂP¶‘ã¸ýÚ߽˧Óe»-ÑòïË:Ë9Ç›ìÑŸ’ë1â TáKÜÏÆÎŸm¶1ÿù-£^AW¯Î¥ò6¥–qyyFÝÁ¤Ç‚ VÜ„UÍÚ`zÆykë“öèc³Â”ìÒÚÿ1B”o¨4/W”À8àÅMî– ‘ÚGÙo"™ÂÓk{áNâyµ§Õú®y^Ø qUXgT§ÑšÜ”µg1þNØ4íîÐ#7¡8 ¾ØÿóWcD€I¬Ö›a\³' $±ô7éš©! 6ˆ+3å€a€štu"C·f˜™ð„âF|yç;¡LŒë0„ŠrÁÚ\”ƒX‹ý(Õ¼Z€®ëaÔ–>5%×âÃéª <4tj)'ïütýˆ%÷”qõ'Ãë¨@Óšž&øªögf¿¾Yà{–ò C: EœP67’ QyŸ¡T$ÕìUãkµš)°0U08 &iiÎ$௣0g­õÛŸ!¢x|Ýeej«à$[Ô-‡H²G]¯£àÅYз¿ýùjl2ÌÛÇ.L/¤¹þÈúsüóý6Y09ݬüq‰¡V$Ä%(ô™Túg¾bl³¯âÛÓ–‡ )ȳ&à0ˆ“Ïs6ÛÙ )Ÿõ^i 7à 96Ú±À@Ûê¿ Ï hLÑêÞ'[îÇùtæË )ii¿Nt;ßѾÅÞÞc»P÷|¾-•îo‰uL3^cC)lØcºÍ1d&þ~.…öcõÝë­ !s°¼D!@etEn$=³p,èöÊ ÉÊÈJ ì:~s™«J?£G3lI°b5CAÒóö‚ˆ|¹ø§ÌÊw€‹™¿OB/mZ^Mš¾ bbŒ*àв Ë]8>åIõrvl)„æøv]¾Wã”a7|ŽóÅ`@[^¼ªòT9ò¡q\‡ 9¸JvÚ·X÷wž4ªq5Nu øq“V¼Z§HòæH=a‚ î<¼ò·º7Ãymô³qÅD3Ž Ó€$„ôrµNx¤£ª7tw°qJ.@5˜sNŠ ‡‚t´UÌ›Ó5²o*¯‡%Ãg±¥ƒû«s¬Ë–6áן äˊÊXî·¿ÉÇë¶;Ìœñ0ô÷¢Ñ†av™©ìäfhÌLl»tTè6.cx…Ú(ÖïjúO§Ñ;õ@žÆÐ—‚×ùxÌÛÕaªO…æÌøÜÎw vŠŒ4¤Â¸÷{Öc³…L¾å޳_Ÿ±Wº³7øqh“Õ¼‡6Ô÷Dˆ‹Ûwå˜aù@þ¯—Ÿœf¹Ü]+”a³Àá…IP7ð(’ëÙ ¶¢ ·cÒ.F§*u{kÕ~y@üæÊ•³\(h#¨3ßÒÈO-WqU9¶%Ž;;îzNÓíi²Øœj.䄯KÀõÖ™Vu3Tör‘“>Ö² $iªä}¿{½'µŒ¬äTò®¿~ί,&Î\ŸmRL†ˆøÇ§ÕJO]Ó1E wn ÈJúh3l’!%ë‹ý4ž†r¨Þ´›èåu1±853ßyë'Ó!,-  0#d_yS£°ÃÑ'f³áx6³ÚŽû-2mob¬ø¶Î9‡ßvøYŸ'YÅ:.YH$ci‹>iˆWF4N²/½]û¬ÒÖyÿX5 Ú¿õú®ôó£)x’õ»Ö¦BÒ¸UÔ¤Z-A“µ=©ÜŒ:5ys+ZÜ»µØ•-º××—-_yQ΋<ˆ°L.ö\XS¼+í!»–ºÐ®@ž€Éªúb596 "ô¦œä ©Öë{õUi¸{ðã0¬»ö†pN¿]n-ö™´”®Ÿâ#•r*]²íÝR–ð)E•O”ý@‚âžÀ¿¤ß¨‘õ£QåèwïodlZÉõB ¥:µáŠe E„T;fv'„°¦F>#>u9c„E”bÈKÉ*…Ú<á £ãEŠc2 $`íä;Lä_ejj͘¥¨²éþÊþ´N÷^žo5Ù“­fÒ“ÛmÌš]ÏcE&ÇüH­èÓpµsêÍÌ0EÏM2ó8@8×½Fz¹ r=Qbµ‰Ù7Ô½¡\Lû \úøo,1¡PoÓe!S]éÓ»„ã-óë¼vÏ$„ ðxøÙ_ï5~Ši¶¯;Hû® Áú«úJsL)œ½“°Xw9\­”y¿öCšاzÐ/0ú8:°§yÎŽÏ€õ-lwŽÌ<—}*óX! f×éõÛòó¦a¹žGé·®ò¡¡ÝÈ~f€ù¤ºÝ…TMrf{¬œo5cñ‹¢0¥÷ÖAnpeY€†©µ8<'¼3®þxý³«±ÔÈŠî’ïñ‚§'a»YiÁ*îâyž¶ŸÕ †w˜öXN®A¬Š;*˜Á"!wžqgqµà-3¾uVËî)›z¬ˆ‹AaÂUDl-Ó»|ûé˜9‡ÿòÛöÞÝýZbµ„Ûì5ÙvQ·þ‰ÈOTÿØcfаV%ø3$­»’0È€k$ȃԨë]éè®è»Ü58t_z¶¾Hþú›{WðFò4ífÁ<(¡©•'¾6¡Ä¯Üï¼Ý_«bž«IP ê rnž5üUécч±¢Ô‘°šÅV™ømq囇ŒÌ‘Õ’Ý©ìüq¸©ðY’ò6’ï¥c:´5¯âî)ïz¡C†ý퇷ÀÇס¦~ê¹ m¬(~Qà¾já–p,â5…Q¦òsï~E`ÿ`0jqÐ_„]iÆ5¨ÿŸÑ²]q¹üåXÆ¸ï‚ŠŽ¼³ˆ>Ŷ+‰#v}*“ÏNâA·¦îFxúB€zš‘“’§ sì¹á°¼kÙrï‡è³sòи9Š\?]WoIC€¢]ž.<ë÷ñI/BZBâ³û4¶eµáI¹ø&\GR‹xõzrÛ*‹Ft ?àbÞºÄW¸?–uöKêÚEÒì:€-Sþã¡"JÄÛGäe!:•€:¹YQÿhmÔAt±ZqSLÏ,ÌÊÇ–Iy?RÇ@mÈx¹Çø0³[â24K[ZùåÙZ«ïÒÕ¶Ó›=oô{ìÉ98ÃárWİõ5È,Ùvržo®!!~WUPBíK"åUPC!‘õ×`^%øÞÌ'òû™”ŠLB¥Ì¼Æ5¸K‚Nt`¦J³N’¨÷¦ýè–bݨ¹pÛáqF¤Žhx€Äóéç·ÄöàÚ:÷'/O¯•«Ð $´_×+Ð/ÞØå$—¹(P*°X)fgîŸc ã;«S\úÏ bÝOÂ/TÇt¶ÚØ<½œ‹Õ»Çîv.—w†Ù{E¬šÃ|þ«>ul#œÐŠŠ‡ìEÛ ;Ë‘í³>×ü\ÁD‘Í>ù_W‡í›Ö’cå Eè8±{׊ûî…Go€‚K §Ï/Ûhï¥úx }þóHLCdo¦”Ê—o°Që„–\¸¥éè´È 5×õ¼£àÉŠ'n…°´ÓîŽ{7â©FæL¥¥•W¾àÜ»»Sˆ†Ö¼­n_Ùÿn«Þ‘õC5Þÿ„bùï`ƒ®ÛýóýÍǵãFœôÎz(`U8¨ÍÇÆKO²Ñµ›•<ütâ»å¶þ Ú÷­˜Šgåeû…Á³HºÍ´©ªXœ=ºþò·bÅ& ®g ã§ØvLÓ#gw«ß.aû:×Þ–„$ªkE^ÉOÖ¹ Y‡>£´ÌsÔÁâËœüÁž8£r]»A–@ ŽJjœ\MOî®KßÂ_› «%÷“F«µ0°Pïè ÚyhÛª^ÿf;8c€kÿÁðÿ-65î(B€WX£âo>ZÛb'~´ß¹ïK¤”/Cáq«‡°ËØÕ1…}ùØÚÄ40@üÙ‡eÏÅŠmŸ€BÄî¨C=¿t|å²€øÖÖ€C¢Š]B˜c€¦”uaŒågý¢ªH´G_{*ÁbÜ×[ŸsË÷&XÔûªMÄ2_Wûb®çì'xNÛbn’0´ ̯xÛÞŽ{yæÜäiÇÉêž½ãCÍ]ÔÁªVå ñJÔßB맯úß< Ë®Ï÷uõum#y³ÎJ¤£Ú±=ëWpWœNËD¨€Ð9‰ŽxQþZöšš— EÉ' cª[gÚÈmßuþ» .­ß`¼Ø/ÎM¬ŸV&à¯Q£ŽýS\;èY‰“›-d²êá]Y 3 b›·KµÃó·—Á´V”…ÜUçØN3p3Tÿ>Q™”=¸€ØD¦;K¤û†¦*,ܕ ¬c´Öv2Z6’Ÿx=µx{3”¦†Ü™oŠç Ûv1çK…­œéväéç©í:ãëy<úãî§•`1€M‘äKi)¦ëCKžñ1 œs ŠQJ~NKÆ/0I2¨³£l݃çñðý ÔÜ@ãÓË3îëÖ]Óô´T–lä‹i±„ÎJ}BTÛ3Ÿ cx•rûëö|NÄïåø«§8ùÞ#$F?s§ºÂ¦ÚvöÌXšek$³F);ã|tsîÂP¥GY–‰ÞÑS¶$±¶Š¢ÞÅâ8’vιPól; “…Û]ž‹ 2úýÇúDlôϺí=>L—êÌïWÃ˦ ÄûBÃ}ó ªB¹­`PA-N.>³ÈŒÑòDÿNÅxÞÌÞó¦ßû°@‘u±¯¡£6Ùèq$N!kde²ñœI ð¤3QÌÌmšø‘/’rœ>”M){gÿ¨ºÇô*R“x¤Õÿé܇…g` ÿ8#•‰´+•µçöŒãºf::„¸ˆfdJqpš çîøT°óZZS»ÛLs.T-Ǥ¥â­f¼Ýãúý¥ \lm¸G@8xóDn‡K‚Ozs}ì@øTÅàíéš>îçé€3¿ ¡–£&Iõê¶Ö5´…gü’ySr~âT®…öŒ3¡Kíg}C0”K,#J‰»m!´ºNeïo¤C•AÎG;[/Ũ9ÿ)Ö9lµWq¡좯‡ ñALèÀ.}3¿ô(PfgÊNïm˜ˆc¡¹{d•òX'.¦7ÌöUò{•ŽŠlÓ ÿ©‡±d¿=I2.ަ@ÑgF$š}­ ôì%Í8F‹‚çx ÂUו¸4127æ>¶osaý–K­^½»•…ݵŒV”â(è:Uí‰Zkó'u_ôਇËN#~¾¿æ·X¹Á¤SßdB:­Yõ,YË?st˳–kVÖ"<ω[à~‚b ½1Œ›ÚC»J=·/©§Ök4D{¯K!ÄÆ €“©­ž§ÍÆ.Ý7Vƒ/vÛG:FÞ“HùÿL™°6zvšîýÛS¾ïÜWuà h_§síyïèÒ»sOqÌLlà°ZGùù+Õë] 1nÏ?°[, WÓ-jY’‚m!×ÔÍ€¨É<¨¬äÚXmøª3ø¯—®YmÒe1ƥݳ›ü×¹—$̳=È·G*Ñ×2Þ3— 1´{¢¸ô™_ÍÎa&@ÔÀ§òï²L_Ìj¹ÍS¬\9Mò­¤üâ™ô×vgñ `·)“ƒß~hÒ5¯ÛœU`UdÑn…f~mcB2Þç1OÅ%Ç>¨0øÝ([ýBÇZeb¹á„k¥þá–Sq¬Þ|Öû·¨öxñçQú$´î-(ì5%ÝÏ(C•,‚ìÏžŸŒ°]× l=§õ¾2 ~9Ü’«0CŒ¼äŸ?¤v‡gž©ïZu§ƒíMéº3”ÿ†´ap÷œõÓLŸæþxJ/ùQCëE²y¶%]¾»¹PæÃÝ[`¤ìPF¼;3t¸úµ™Ý³_•º›­éáœÏêOß5(KYÐèøþ4‘žï>g–«M_ô+«ß²ƒ•½ù=bGÜRñclú*ÖLö®$â*/ b¶"íùaÉʇkU¾×g~`j?bB¥‚W©rשV¡áEìØHÃ?ç>@7To­yoSYLbu¿dã+ˆçÿg而ls™ ÅáÀÖ•›Ìóyi°û¿˜Li;ÏÞËÎ×$²köÁ~Ðø.'ä‚ ‡ÀòE£”xpI›äôL¨v@‚?œ¼”<þ‚‘6çR\Ùg£«ÔdPÀj³ÚÞDÔ‡z²jy݃ÏïƒËGg¼¸ù_+%Û´ó°]SP®þ]v++²<÷[Ä4”‘ü§[Óͳ©2‚b‚æJr™¦šÖ/ ãÚ®8Töã3껀ùÚz÷­:¸ERÏ¡X–Dý»k8—­{å oÁ람C$WînЛeâ$Øç?çlâ|kwt,&7ÔÑê]̨¤'ç—oW;A•}`ÁÇyC¨¹óQ¬ŽÒˆ .õt¤GJlϽ„Dô^1‹z_F*‚š½<Ê»U¿w0nòyñÞ}þsÿá*Q,>=¶“A¶®†êû¨òsž6Ú‚ß“¾„…Fúc§¾3 ×—°9º=;>‡”/(–Ø^VˆNüöHÎM5 ªR÷NB·¥¶M û¸¢õì·2u/Tü(§Ú“«¨ ÀŸB?„"‹Y»s™‡e¼‰>* «@‰T"œ÷1<ͧÓV‘»F û ¯+š‘úah}RËàì¦ÊãöÝÔÑí̈|ݤ1žíXË ÿ¯Æo ç®—ö+¸Ç¡·BjBýáé^ºvZšªÝ*.B@þfÿVªB›\òßÀ2™.âªhÒpµïŠU‚WBm-ù=:+Ü]Þ#Që¸.s™©à9{ÛÞ«¥¥ûqÐü›ÑûWü¿ŸÃÈ}šÿvs¼ñlogf¨n¢xMâ)Ë©G¯[Vê2Jþã„•M«ÿ˜Ò-k$›Œ/ SÓ¨§’Á“J˜|8€w²Œ6Уr×½¤¶ö’M7d‰É_òrü{>]}Gð~¿£øð6¸ßSƒÜ"“ChlLbá´›@îœ}MŒD‰ z*ò .y¤-«ˆð!-€¹ç˜iDК:‰¤HM®¹¢;ˆ%LÂS7NE-ãž1·¿4ÝD‚e7ÐXÁL`ÚWM@’„Q(ÞA‚ÍÆFÛChlITG sM¤ƒ¯cLrFÅÏñB"”„ˆ@”÷“m´Àƒ@Œ ‚a. $‘HDÐ4 M %HÄ!!± Úw|–.î?óõûÏɼüöº`÷ó_Ã-3ý|¿C/áyÓ}PN˜cúÊX¨¾œº¯C€`n˜Ô<(·TËõ'Yç$¥ËcVm®õH'ú6¯U¼2É?zfÕU¢æ?èÕm¼¬ˆ¸¸”TI ,*¦;,)ZYUÄ ZO“ÂõW=4ÞÛ$¬¯tN;"¾–z¨Î(Á«ø_=»Z,Âò¯PpdÃü\ƒ}¼ÿ;E©Ï]Wà¿Û¬›KÁÞîÿ„ÿï¯á̯ïï-tg­N¶½`„Íi$„ÿæ(+$Êk8=L¨ ×?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüæå€}>ûÝÑï{^ë¾»¦†;·{ÝÖí²ç7o<×»Ÿw·.»ÎûÏwß{ï¯}u××e]½Û»½{»u{ï»ÛÜén¾º¶oz^ö½xvêw{ª›&†BdiˆÔØ2 0™ 4dÍØ&!“G¢f£SÀ&™¤4Ú'”ÄIû"i‘é† ƈÓðÔÈÓÔO & †CL@ÔÁ2z24*SO$É´©ûDõSñ&OSSÁªiêx?@š§é&©¼›MC~€ý ¦&i6£!ªlÀ¤¡<‚›ÒmM¡4Æ&52Ÿ“M2™=õ<§ê›Ð4”öMOQú*~Iä` ©‰¨ÌQè¡1¨aªx“õ4Úe=4cE=4Ÿ jm#M1a6šh˜ÔÄÀiŠl“ÓSdÔÊzz¦0Iê<™M“$̧“SzMd56dFDö”ü¦¦ô ‘¦HUS2šbmOB1Oi¨õ0ž£i5=£J~€SØB›aOTý14˜4T¡SÚ§êždÕ7è&Âi„ô ŸêüŒÔSôO ‘4ž¢Ÿå2'“SÉ=2 Lša5OÕ ©¦€I²dd™¦FFšjžž™0M##F“Òz`‰…®Ô³ hrb4Ø[Rû­-‡ÁÚ´)™&ç©vîùõP:ÙûmG†ÑúÍà’P7#àCoÂR{L6ÿpæ(`ç§À¿‘븭¡ŸžÒë)-ìkzžüLÌŸ{ÝüþåäÝ'€ø7ÁáÖœ0µ¥pìH$’`Š#,ä$„‚àd’G*¼+Æ…ˆ0Ã<à8FÐ`€0‡ ’L88„áêL0ÁÂÓ„â×Ç€ø üDXÇ¥ÐÄ!}_€ø‚’ ‹²0ƒ‚ˆ!GÄA $!†OI KBcÇŸ’B8ìæ ƒ&- >¦¥ØAS9Æõ^÷Xz¨œ¯.µMÓƒ’S}+Ã{®À< ÄaG€ðC!¤ì=™¸qCÆäGNÊf쟀1•ò¿ŠB×Ô’ˆ¿MQLÎá'wv¶1AfG$8M0É8b!•k}–IèÉT_Ý«räÈDû:ì/€/ƒ!i™{#*Â^ÃYM2A)pÖi-8Ë5µ³ .ñ’HÂ’(íA0~œ{‰…'—áõ$hëß¼¿?iæ@]GÚó¾f·ÞÔß ÖkÑÚÛ@ç:ð7ìêø‰w¦Ü–½‚!$º~†—‹)»| ºÞ.ï qÏçBTƳß_—²‡Åežù÷±+gJãqÒÚo¨äº?—ò@ãb»|ÈSßÓ8SA[_u|êŃCNØyö»‚Q(ÓI• AZ±ãbgرu{ˆò¸1Ø¥zÐ uÎ?Ñà¸4P‘¤ŽÏ¯U‡öc½¹lmÔ!¿ñõ/«/=?ŽÂH˜ñf~k_KÿbbÈðŠ `-ɾ\l~«8wçÛÌ÷n5O=Ñ…ú|LÖÖ3›âÃ?ö(ñw,à2ˆPËž;Â}Ù™^Úà ­ÀÝók£%,ã–šS#ÔÐe{äh @1[µ"Ãåmúe“9[½\gˆÉ̵uÁe7ª’ÅÐ"3†×‡œáœkËùj̇¨5 4Pí®…8bÚcFl÷Ñ^€1¾Û÷‹<¢ëkk_N6H' Yêã¢SÒãʨí%2XãÏrµ¦ò3=æ ³Q-yióèŠRÒ§Ïû™é·òàkÇÞÿ‚¬š#=¢;Û=ˆˆäþ—ý˜ß×2‚¼*ö× ›à¾öZCóJ½¿ª}w(éym<§ÓàHKQ?àkì¼ UäŇ3ü`Á<掔Îÿ9[þ.oo= ÒäÈ~üË¢ïj0¯ n·kÍ·µÔ>ãøŽÞFOÑž¯½·@¶l„3„Ì ÂWl€Ü0™„æv;øy­'ð)zݙٛÞåõÌÄs·3ö³|~ÚõÁ ôƒI|j’ùîK°]?ZÜªÆÆ¹ @sYÛ©g«H=¯ÁÕM½=:KG}¡~4Zo×{²T„î°{¶Ò ¬íAHƒ\=MÞÐñ°oPÆ©ã)uÓhTÔy ý¬þïMèLß ROŠ‹R±|èï5ľïk­Ô1ß×øåižT!ÜCܸQ÷DI$…¸ª‚PÀ 0-íƒvÙsŸÝa' üÖMzLEÒ‘Ó3S.´‡)±&ßš DÂ÷!·†ÚLÖÓŽkn¢æ7kX¡h:3ÓpïôfÐê98C–ióÄ‘ïËÏ÷“Ãj™rZœ>åÓs·¡Øî¨ïõ‹3\ퟙŸC^Ýìc ·|Õ±÷ºÈ@?!ƒ…uè’Ê3y»Nsú)=×`Ut&Ÿ0ë¶l>·õíY¿”%(’Tžyqc\ ãŸé@¡´\æa`Í0Ì1ÒKmC×Mõço¿£F†•ym™G­ÿÃ;¿l¿ËèÕíÌNd¯€þgCá]¿»^ák)ìÄ–À[øƒê`u>wÕuÔš+!åƒû ½_Ð'ØùÖ1FÐj쌱y~Dc^ujld7=l÷ûWìн€ýÝíå;½vÒÆžŸN-ß$Ý,´7<¬Žw‹]jl¶Ê‰Zœ6ìiÎc?œÃøß¹«Ãôa7êÚÖ B q¯äEt?ÉWRÏØZçœë6Útîp2T/§Àîwÿ4õ˜~³hSÙ"Õ&Y›a ‡­{¥èYeØ›ñüCŸ‰•q˜{Ÿ½â9V>ºS°ðÖ&Ë÷¨ðÃðéâ7rü™‚$I£Y>LLÌÕU¤ ‚ZwKxmheí×§Ò'á ÊÕ¢~Ýxƒ4-"|÷›1- ”µûý¾¯Ê¸~*нI›a¿ƒilîóðqüÆÜ?µyð¯õ—OJEŸFõ'©^…2Î’ªLROÈï»§zÖç£×3ïJk8`Lc}F†µ2NÄH?‰YªýÉë‘ýBš7‚æY«±Éã£ý—n³9uÙŠèØ…¶ádÿí)ÄÜ—cD*ox,YˆÉ4˜R‘D±1ª”_Ϥ8Ì”!¤Vø-ð¢6 à«ßP~ÙTSòÏM¤YtpjQ½—!©3î_¿iŽ›óHýh|Ðï‰pYaý b„ Ä£r/ÐbØ vœ6r³ª“ËOÄý-‹Á§/LÇz> D3œm²©.¥`ØwÞ›J¦xÌó-¸6ÊÉ(Æ\)1¼"‘øPÂÖ_d*èt±Ýx…ñ‹ÃG¹LÎ,; öoˆÃ`Ö<¿)ïqè`’°šònB7¼¼ét}d¾F¶wƒ|;3vµåòõã`ˆ½{V#𑪤c?J75˜ÃmÛD·tÉ»HÞÄK%Êç±÷ Èöi|¸éVŠpýåä‚ÔW¼ôÀ‘¦Ñ¦¨fÎÎM»Å»èÛ®†WÒò½vèû¯Å¤BøŒ‘o SÇ ò¤a•2²^wÓ…µ®“P· 1y“ÒߪT†»Wu06&ïß並¹€?ÑS™Œ‚{ˆƒRñk/0ãûŸ—ÿ7ñ·@08ËÙwÖ ™h&Ýrä…œñ7‘Ö>vÉjù^ì0¶8ó6Žå:hÓ…§RÂÖ¾Ö[øÞjX1NÀ"NPÁñþSBₚPT«t½ý:‰Y¿ÑÁ‹Ï£„ÜåÝ’AÈ=gŸyn”g¦•N2(‡KÛûæœ]PÍ¥åí‡qå¹<û©l¹Å†àš:eÜ‘úêl'J!¿³ñcU¸+„V…ø·Åú<ôFHn±¶^-åƒÃOßez:X8|—mX4Ư‹)„ŸÃ†QHé(­œVðcâKmú9Wð½²l«Z=¡ô¥[ímôjlrfKÔ×âµæuÕ¯BÖö b?¾öT…)FJåeïfo¼[!u"™FÍ95o«-®Ø6jMú ¸3¥:K§h"Óézöç«®rXÍþLü™Vb«9Ã’,Ë‘t3´äÄ…ƒgÇÙy„¿€J¶)÷”6»S¢Þ:ˆ3ì¼Á@e¡ä:J}Ñ͇„Í&ò7F®ß@£UºàQý#'?W¸|ÆaLP }F'ñvóöŸ2´ÉžìW_Ðmðd³âBnfŠªÝ£¿Ñ$9pjd »7òy¬3s}Ÿ4N­w§púm€5¦¨– ÛÚ䩸œ|þ ëOY\:\ú¼¡¸+À( y)*zl™# Íç yåFeêÄNU³Ž¹ì£(&jóm—1ê·ç6NyÞJÆúè ^Éœeÿõhî½ëäÞ –•ÒÐ&JÿÄ3aœ€‡2õP‘y›]ÒÁâ3Y·ÂZØïOˆ$”}KÖô²ù& ˜ƒXj˜âÛΨ_ÖâYwd,{5{°«›ÇÇXbxÕÑ2åIy•´“ÜG§v»™uâ#î`±>wn $ÁÓ¬ÿy~¶3îÒêôŸÇÉõ1ᘞßÇ™bèº8AT1r «IØíTýÝ?ÓŠªcGËjÝ+ÀêïWkîegb@‡OÁòÿ…§Ÿþ?¶B dNš™ã™yvLœÓ#9L)ôµ`’]WV잀AG&±:ÙFÛP³;IFàu¼A†¼?€Ü¨Î¸°KƒM•û…ü…øçL¤mqùxð.Í9ºŸ{yhÿ¿ÉG’Õg-ÌßTCY—ž§ÏXg$±pü?´}îÁsáa¤ç\†€ ½q•”‹ÉúÓÊTD6p+X*¨ÛÝ-0œ,{“¡œ) wú#›u¹ƒ0Ï;eMÞ‡Ò“f ’ œÃ貦¹Ö‡“œo­ÕÜÝdd3)ìÖÛÌ·¦{9 å{µdÈ <‰CgôãÙâ!l©ÚPòäãýË£];a¾”‘¢P‹ŸIjö¨®" ûXoÙàHÓ4gl<ÔaÓ¢A)QéyO¥p¢Ìr4¼¯Zö«×öªúБ¶32f AcÐËyÏ s:>!BF+Ù(@çËž/b#‹à¯xô[Ç@eU£ô‚Hد´t–t&òVŠ!rÛ ·¬¨+pG¶b>`éâоk›ÄæôÕliÚò…ªÕËî²FÁ)™ù¹ì#òmÃ8`Ð eAa»1ÆÿÁaf\vbyÇŽëç©_C:áXÑ Ptç¦M€ cD¤`‚ÄÑë5•Øð8µJŒÝH2¾W/{6Z£înBÃÇÈo—ˆzßyˆûR±*½ÿÚ ËjÂúþ"ã>Œ+€a]°)€ÛærËØM^/ßä°g‚åbdª°Ý jovÀñ·ýGu}ËlÞÉ’c.uÁñz¦€:Ý>ÓÔì4Ûi{=ޝS-¸ìÛd~j‡Ú«(Hãø9.VÓ!ïGßl8~n#ð…Yö›VK™LPÀ `vÁvÍ8HÕuí˜ÝD νÃ3Ôåþ… ˜:Ÿ·çOIdK:)ôC1ž¢ Iô°iĶaCÍÔý™ÔpÉДsFÆå úZ%õРKƵ“ð"ÀØš:"]5ŸéÈ—gAìŠÑ/_êѹ"¨‰Í ý*|¢ªÂ´›ãüç¤nÌ””f#aNü@©(µ~ýÌx~:¾1 ù|ÂàñãÎLžE‡hIöŠÏCIÂÅz³Gy°rz^<ÕŸ3°jïOW‚PúÒ2¿³íù5’»ïjæÿ½²ŸÒ$lfþÆñêÀ€vo82[¼GÕƒ)Aô_€½*;Ÿ¿aO‘auQ=Ê­H”\‘vEŽ¢|§«þiq¥®Õúhfã®i¨ræší»Åc†Ê€[«15Iá•…y®À-{Ó{Â}IÄU=@;þû¡B1pâäÙãù…^úÁâ<fö™»R¼P—tŽx_2¿!0úZ¬:4¶: æh¶«ÛºVúþüNHÚöÇ÷èxžê³ZDHU…G 0R¤(ÁÇÕ¨fè]%Ź0òeÍ„0ÙF%KÀo;ìubKX-}¤º’Ð_NcòϦã{=ÍÝ”Ûeïª9‚$¼ cð¶‹‚9mŒ> (¡=²ìey–Ã.$L¼'1ß«¼dõ«*ú ˆ1?§džoÚчîbŒUg¨s½¯jêe󜴦!·HS){ólÆÑT½/Ùg"¢•$dGd½ÉuË}دQ}Ÿ gŸRVHÀñ`F£˜R^ˆ‡“­7ll¯&娜¤ž½A‘°U'Ýœ©Ì½Äÿo×S쪻2¥Áâú—.;^2+ñVP“kÌÕÐõÇF¬FÞSê„ó­-¾ÿ¿ågÁ¹Ê™§ø%ÉŸúzÊ~7%` .L-5o87–Û¥ƒçG•¿ÎdÅyê›2_G{äŠV¥)öñŒx·ý# ø¨ó·<ÿÑàO WøL%V}òäzýZ5ïè)½¯Ðç›@ŸN&›°D4²tó/ÁéØÓÿC˜æZ~]®·[î_'ê!¤–ë—8öë TOHºÊšêf)Mé‹:ɯ€l´·ÌÔ´˜ê°ë€cRzž{[C0jûr „HjEØÌ ú…mÆå‡>Ñ:C­­ÔŽq…›]¿’·ÿðùžiö@È®4pHj’câk†vŒ¥ OV.©—{>̉¨ÔÑŸ"çÈðlÁd…t0”„Ú?Þ¾G^’פ,zOãdÔèØª¼*`²&ñÖrÿ´é¹}¬¤ßÌOÛ˜û§²­ªÎõŒ¡'ðÆØ][˜Ü6 ?<)u&¸C)ßð0Ã[“?þâi~táYE(eäκ\qqSÍø_‹*€-%­±®U7oå±*NIê܃Ám»Jš5.ÒEð%W†ÛºÈ=ýþp¹].AR7ÿ_èI^lpÄÚyCŒ0õ¦m¥i‡ˆÆãÉσ×6#3lô—øá@ô]¼ýe˜TÙÑsÝRÈ7h’\·ê­QrË•ÆÊÙAÃÙ9r×R%“Ïì!Ûˆ³=úÒ¶w,2•4ŒJ‰)ýä&&+·@ª®(¬ðƒFu5~ãFiÌþœR%¡„ Ù N!›„:ôß’ô\_q9‡O³«šØ‰³œsÈ7?Ufï•Þ•ÓDt¡øFʪ§l½ÚÍã>†§WÎËi+CíK¡ðàt/WÁ§"ïwo/…ôx÷µÛ8Ü}¹&—­ñT ‡eP)Ðâ„™¸Pì »N½reµ³8õ¤VuW}3“¾3öQHrät3·_‹¯=À|1‡3ctH.Ž#ÆÐï6!Ïwã1ÿ#”é1¢J›<ü/×U«ÁM£©<ÊÁã!I‰^2OCU·K'tü”hA+ÉgÃ)¿ó»¢Æ]ŒÁ7öb­ë%¼*¾— ôÇ»t uÖuã¦å`3·øq—Zè{0d G7²üuóT¶ðÂïÂëX-5éöçáÑülÿ„PâÎön[“&ƒÓC0[Þ]öv8ïoŸ)PȱíŸ+D‰q·›ÃÚ¹`Ov4é´€bÔñ­`EIz²$Ic«Ú½†…æ×2Yþz7>°ážSzÑ5+£-g[T"HGí@KGk¿jàm‰²ê:µLAkîSöD%LdO‰J0eÐ]˜Ž EÇ;t’[[ñ1¸¡‡–sÈAÊx‹ªÉùµ¶¤„C©õéóL1·£Ö¶_$^>ƒÞB¬O‰Ùˆ·<ÞËF¥šû)¤QÚzaÃü ZÖhWHrHý«ì~¼YÆþ<¢ãßøµ®T¦45L²Ú*£þ4W2ÄSh÷‚Y#¦/5’„й.0]ÁÝ+•Jw_Ôõ"ë÷Î_·­ÓtÜÖ'ÏjËŒ5Ê Ρ穤ûc¸#ŽÂ 7óÝúRŠMöOf,½TþbeOda"x&Ì‹ÙÚre0F›Ÿ'äHÝqrÃw”’Ð÷…¬êÔTq}ä/É–çÛÆù»Í¨hw‰UÕJÙÕ²M…ùŸßýÿg7kN˜Îtg¡AJEf¶b'¯n|.†û=Ž…•U‹XòOVÝ]žö¦We­ÿ|ÞヒÏâ ±¹ï÷>ÐøûèhÈœõÕ^ž OAq¢ÞC/œ•ñPà¥OSYÌ€x±þg‹ í;/Ê%—(²6/\5æÁ>Öìb¡F`Øý›¯R¤ÿ™.è8eÎ-D$m'÷ £HþÞƒ[£1¨Ì@V\n‚úëî.›ç½ƒ~ç ZÒ…{‡À¥Ð+bmäeK¿C^åÊ^“iˆMR|ÙöŒÁãÛŒ6vÖšü?ÝÕ(õ`OlšdëÔÒÚ^{À‘.üOœkEF™Úä~þÉ©0,|“þxvÁÜØ/ê5¦ß×zò¯Ü—æj¸(óúm*jEXÅk:%EìkB?á'½É*ÁPS“¯Ý·=Àöge@àð27i­XAà­€Æ-jÖÂÚ&n╈²ýñz‹Ó^ôß|ˆ‘ör±–H Õ§wj,¨¾…ØÍöõ„×2¹ËqhôÙXÌ£Ôí\&i)”óë¯JðU²0Pù|¡Çw«ï[³“S„±çó–k>åÅA憩%ëÌO4´¡aaÚÎÎÎö[þ¾5˜ÍĨ*9^ÖßÛãTq¿ðÇîYÈý˜f(5ÉÖ@<ùDkC•|±hž‘‰Ç‘ƒÌ4Ÿ]Uœå‹¿¹ñû´ê&VÄ£•ÿˆ@ùí>õ‰Âèv'f§:ÎÒ“<ô…téºÏ:¸–• ¸îC¼£ï$ÕL~Ño™Oàî4¯‡¿ïÝæ=ÿÁH6+ζP!æØT÷/-‡Þv¢ØwÅñåæ ûÈ·ÞÞGÀ“ËÏW'izQn¬~××Nj€öŠë96/üšƒ7ãZŒšÕ¯9@FìŒÿÅ]ww„áO_ è:àwó@ÝâD¸Ð`'K]]'T—Ï“..”?àqïÖšf(ç¤çÏóìIcn€…………ŒjŸÃ”ožœ¡8½*¥ÿ½79µ™·ªè‹ä‹’éK˽¾ËÛ¬ôOßµ®º‰0Ks1®|¦?=Ç"/ËA¥ª~¥€™'(;?4!LD¼â̘‘­õC¨ û`$ö€ý¤·ö7zˆ¯Dga’©ÝÝiþÿ:f#á V¸·z4 s1ÐIà~|9ê!œB+ä ¬êVØñâ8?k®‰R˜GðŸP‹x5»8àRHù½âú°¿l“tDG±í¿±$$gЙ¾‡~/¿Â4;ÄÚ÷tì;æñ’‡IA¼¢¼k^,ÓZu”Ò†V*‹sÂ0­ÝNûbyÉ‹ ÆÀT´7$Ýíi©ñrÄ©ÁûœQ›ÞrÙâÐAdÅÍÙdæDºÖî)‚ÝòÀnjfY¶l즕1þ:[ã¤H×xÇ*Ÿ ¬a7œÅuó™³ÎÐC\×o×þµ÷WÈ8' z¤ydõ¸ÄÝ=°l!JÀ5V—£”dõ¼ß¤Ëz!ð´×|SÝ7f逗‰ºU&{ØBzÚá¯Ö7¸ƒ0“N€ Òö…Pþâä×¼ü懩åá#¤ÈBpØÈo «!¹’ìóYâçh—:¢ÒgÇÑC:^&We•^O]6ü–ðI5&T^30?±¶Æžz5›*õîv.™‹Ä½4ž\ÍFœd€#Q9ÑéP£1u³·SޱƒÐ2“ €ÃVL†ó2vœ€R+è[[¸<¾´¢ýÜ¿%¶´Ëæ9hªtïW–.ñ» . Ù° ø„d& øwWZÑfÍM#–òâ—nPðŒK6¹Eµ’`›!.@’Ùg®ÙÑ¡æµ?œaõ>6&»Ä‘ ¢U•R½êÖ°Š9iî[ý¦&Y\p`ÇÕdr!²˜~0íhR†^ñ c¥”üùÏpj°á;Ö.ÇÔ›QÒ@µÜVÑò £Î·okgšN•þX%⋎=?Êþ~[«çÑñSÖÕö‘Û5Ểö–œ4£Mœ3:†'ýSÑ Î²¹p•«T6ªlÔNX½|ÁRñä\Uþ†8Á¬´„\Ü™S‡¥˜a™dƒÄ¿,*°tz¸>kÛ…dË%XSÝm­¤~˜G’d«»ÜæuLõÇC“%óE:9ò;%ì?Ú’SßîñO ›Z=ZÍqù;T>ùK7K\Uæ¢âg]¨ëHsm¼Oòû«¢~uõ±1‡ÔÈ#U’&…©_ à#ú¦JÓ59ÄV˜>õ©™m5¥ÝÖ•Üxê>p­Tß‘ O.)ˆžŠéÉq‰ç(±˜‰-yK=Çß= bÂ^¥§Î`Wïà…h¶ªžy±ìdn¹zön.éq·´Àîr6C 6ƒÇX‘ •·/PËkŒd6/óë7ŸtI7––æíd“𕛎øèAÌË#¶þÚ.ˆ…^ƒ£[n¿ˆü¿ÑÕ«ÉàþQ!!»¸«mn†‹ŸŽÆï( pT)Ùy¬ûk§’Xl í$1äööVÄI\Tɸ˪՘T\Ý‚°ÿë3Ž..ÿdÔ®†©0 C#“g*¢ÎPËD¸Cß¡K„¹î©?†Ü¶çèƒz¶2³7Þ’pæ¾uú÷ÏK˜ ~dYô­Ÿ üÙݪ oŸ!îŽiM(6S÷«Ó«Ò±Çò'“ÇÏË3ÐUÞÖw®ô8\3¢–æ¿ø»’)„‡²gÀzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.738787433 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror3.dat.0000644016037001603700000012621213607166133035017 0ustar00hutter2hutter200000000000000BZh91AY&SY¿§([ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà…»í^Áñ¤ >Æ “ïn(J’ IJ"ˆRJèi%JIA{°uJ¥©ªõÑ®‹Yéå^Ú¥ïc€)G¶‡­-g¦é‡dà°æjÛ(ìÁ"H‰J[ܧ%æ^ÀÝv× –€/vínó¼›jãÞ‹ž€sÏw z§U¶tØss&ôÝÛÒwp=ÛÛiëÁY¸z/sli]M” ëT»{¬ol‡xñÞ{‚ÝÜêµ­³®ºp­{²ëj¶ÝǪ=g{›·({Þ÷©KÀM)Ò¼æééÄ=îëëÜôêì:»ª«¶U*ôï–{ë&÷]ípGÚtã±v‹^îr³7L˜ôn÷wu»E7ÝÂæ[[Ïž ïL½ã½yxÛD¡':ÀY{ÎU4Ð&hÐÄÐLÄh˜›DÍ)á0™Sý¦˜£ ˜hhL˜Ðhh šdÒ4À`L¨$©L0&Œ&Œ0 ôŒÐѦ™ Œ&5=0‚cz)ú4ja €bi=0LS2m À&‰‚’SØ@ Q•"zšdÓ£Êx'¦JŸæ¦šžSÄÓ&ª~ÔŸªx˜ÁM6¢ž§êŸå0É3*zm5=J{L”Óy=5 *=´M=@ÓÑ=*~É=L£ÊOmTü'ªm4õ<‰² žžz¦SiêOF$ô…)OHÄÓ#OSFI£Ñ¦“ÒzOH6šž‰„ê›SÔ=CFdi46¦F˜šz˜¡ dɉ§¤= §ê†Ô4ÈÚ˜˜˜4z ¦ÔÚ˜€z#Fš=4=@@L†€LF€Å5n–‡]>óDúâ*›ÚsLÍ|YÉRh&- 9¡BQ Wz´X ë,ü&±csèçj#%¹κ³u_Œ ³™ Sïû¾Åc'95õ5?Áämålu7^öUàmŒ¹¡*‹ÂÜvny w%†÷ºRŽK(”¤²Ëœ¼§·gVçŽuE;åË͑۶÷‚ïWåJ|ÄRHåU išu‘$˜=%–•IU$’R•)LÒº5ËD¨©UJ¤¥/”©* Rª*Å¢G„îoH’\”¡URžÉ_ç®]îTa !JŠ*týœuÑP”ÄAL(¬ÊQ|b …& ò/ð±S@¨¨EPQû0( €¡R!$F¢Z“Õ(=â: Ó¡q)¤‰;QAÎ(™2ÏÌ”íæZ`GØg’ÃÿRŒ*`e$—6)·ÈøsúnáøâtCϼk`îšÅÉ1h(¬6 ’€ƒt]ݘ0£>%‚* %à,ŒÚ^Ø #P×pìvDú,†ecé°@Éd¸ÒaL @`\iŽü²P€Z°.8æÁÆÓvìÈÄ`U^ˆ`JŒã( xJBmÝIªD¸,£ÎCRõ®½ã°öP}YÁË1(‰ôTR‚6rÉ$žvòÆ´ã–k#ÏSÓ*¹$ñÔ–?‰NNQ²©ÊJxò§é¤±Ùø%Êïe ?Á‡<À?‘æß“0ª¹öÐ@©pü¡Ò±:#Ù!ºLd¨bKB“REŠn ë^—¦ªWF…Ë ReœrTÞJ@Öå¨H®JýÆb<×±u4Ø|§Ä}¦ùüê}·ó?íàŒ í=Ø„‹‘/…Q‚<—ssLßlh A’ÀòO(! ¬| Žå‚ü9$ñ Í»Ã8Úºç[ˆNfˆ¹¬$­„!à)X5C$ìXÓ!KÀ ÉH!ÿlÁ'˜~Xɾ rJ¤ˆFäpO°wƬ Q\Ù m[$@DG˜©hÉ,— ¨‚BB8%œ+°Éºÿ‰ëçÁŸ&}yˆÉRE1Ÿ}Î,hdÞN ÇÙ°™×8ŽùRá23àu Ï”îƒ ÿðÁùZJÄÂ`Ëã—j´…/TÛ‡ÉrÌé0„Sù°­ÐûŒ4!‹d4€²ˆp*p‡Ã%“ḐÂRóIˆ“±¡b&i(fŽmzÒNÅ XRùš…D²ARY)5íÆ™Ãò½Y„Ÿ¢R‹^\œ*t“ô̵̖¦Y•6BÌF†\9õçR¸³wTŒe9t/{¦RÉN©G k¥é&’DðÂ¥r106’,83™7¾\mÇBk¬’ðͦÓ3 Ó5*hžl húòƒ´\ì×;5$¹ LÀÚ“A/\N,À)nú§ˆw˜ô-ÓÜB©~h\û¨a›¸ÕžÕ=I”pL ’…¦bv-d̬ÆHëÒ±é@à0òÖå‚0’Ó-IÀJNJT“ Œta”4¥Ó]9Ò“Ö%N¦QÓ&°ib´Š°§ t5«À‰QjTSÀÔ¯.çÀ0$‚õ ØCp€deʶ¬00à 0³–J`€a¾ýðÙ ¡PÀ !Ó–æêÌØ‘¦-è‡þ0äg! ßx†&z©Šp3)5Ž)847ÉÖKN`¦Z̀ЦÆMÂ)½h/¨¢¹BèÛžÉê³—n^È®jÆð¹zaš#hRœ£mH¥<äŒs¾ó‰»ÊM}ìØ—§ .:§~ýÎèéߘԳªIE$øJg ·Í à²asùnQ3s@˜í[¬{·†þn­ü[hçš„ðST‘h©™5r’Mrl#ÑBóiË?ñ²·T¹ÌÏNc¾i8JöÒŽ%ðe™—ø©Äͽ†ØëŸŒ g^?„ÅÁ# ,:6L)Þ1òÏäjÃí¹—Š`€× ã r±¨0®(V 9Á"ˈ|ÕN%5ÓÉ/ |Q”ÎB].Lvʽ.GØÖgYK:$½6y’ðOèjŒ.A0»!d½lÔcÙ›+ɲyÜÌ­ŠÚ*ÙUeÎXQ9ÖåU®bt.êÝ-Ú¢PÄ9ÈP1Áë¨ót±À¦¸›Š`3­}¦K#) ü°cÊASý,Á5;©ØÆËÕ8V€p/4ЬÎPj°0µ°y%º]ÈI7 Â»‡ñÎ5 †— _„Å&‚FaÈõÉç„åRF5åßÊ?é¹ …%@Y’˜í±b](~å"ö±=ëÛª¾}y#Ô4c\:È•‚ð£ÀÈиq™’Ûða8ÐÕCP[—Hö­¸ öÍß)½¹Ç¿Cs  6‡ Ðý¤9w:üÓö1Ž~sÉ=•l²Óº‡zs¯ä|&ýÛºwHܼ;Qûùu­ùŒ3®)Îô!Û¼øÔwgá:y­*cË1'ðSfF¸þ«”¢éL”P¥ Sù¥™µ"C€(¤ ŒD…$\ù*èO,3e@´ óË׃0õm‚ \M½”]¯œC…–=±§[ÞœšÅSM00\‚¸ï$ŽQýgýàíÃX>r¿œªX&dY(;§…,þ– ÉXÅb‘ã]É×îUpyÆsÙËɲçh‡ .fö±s0§,û3bKÓî—¹Œ ØÔ½…¨”›Dï&&ÈÆby³p̧mP®U&ÉA8Õ2-#ê³3Iœ`ªo,ŽèUœ¨V‚Á jkkþ؆©P9'ÛqΈšÅ!HAÏ3ö¸:Õa ˆøBà'fÝöšFgF7dˆY9RÔ=–©3Q¤˜êZN%˜¡æIífå95–YB†'Þ˜ žw³àÌË`K êÒ“ê(IBŒ…$‘ô^’Áú?YE$RŠRJJJH‰Ž§”Ìñ)gЙÃç0à`)ys´—%©Ì0,çæá7Õåì)b¦2ÇÅ…Ýå"õ^S妊ª}%Ñqû&›Á€¹yf‚\Ú—¯`YgOg]0œ…Æ^¹ºÊY>ä2¥'(g‚c1›+ßÜýRôEâæÉÚÊpòõ”Pq Ð2$ÀxQPZIÃöž•ª†q´–ÁùÊ@׸Vq¨ü÷LcÚƒlfFݘ,ÊtóÀ‡.`PÂ1‡‘.‡†Î0=Ùf43îIÌ””bcü¢ÔÕµ Bùã¹ݳ¿Ù˜å¬7ñÛs¶ Þw ÐNT+¼Ã×3å$î)œ˜˜øƒk”½Rkº^øJ05Õ–s à–fZ™…õቴϊ›ìÆc0>d²æ1/\¥=/Yûž l—?}ÇDÎ1þ-’ ‘"øéSbÌ!Aáæ¡ý“˜X™€žÕ0œÒö2å%0¬²Í¹‰ O=þî f-5s ¸½Œø¬M½Òâ^Rd‚ É‘"ÔžÉø] &sZÁ™fB!C¥œ«%…M”§Å’^Å¢c‹O˜^¶“…ž\üI{¼1˜”=|²ÌÁdù2šIëÛÓ™Næbc12aì¥ë”\³a¥¥Ìì¹cäO×1—&š\ÎËÛÀÁh>Ó\ª=‰«¤&mÇdÌX ûï3:Ÿ! Â°tOÕ>áQFEƒ—jÅ ˆBDk"‚ Q rdÇÐNLV&&dHó’&Ù†$0÷/ ¸ýs ÜåìDøÓåÓ–Ç^Ù˜ab†¡ºT`ªf‡—f;v¡ÏMÈc‰*ƒ"ÀAh¤\‡8È$}V¡\J²(‚D›á´ È>«Ö7­ T¨!HÈÆ´–pƒ¯vc†j053–—=œù¬ã±aœ´ÂÀô&2h\.b3ÅêH’Q{"RY¬÷©Û¹¬ r˜c¬²å”ý*nòçËÀ±…e`Y?aeÉîe˘²š©K—,ÀÕ^Z.S‰–,Ùæ†:;òèh …SÓ&?}ñ"sϵq1Í’ƒÃÍg!k¹q‰.Z^«Ö{é¤.L > ³I1,¼³VYnnd/dM…¦˜˜ËÓçs¢b~)Ç4•I”0tl‹ôG”ؼj“•‰2!ÂÌJ‚F‚c\ÐHP´&‰Q Œˆö,Š…R ,zXâÂâDÆK0¨À’O§/ÄÀ²IÒ¥",¢UÌf%Ȉ^®é/`ieò" ˆ!I1Ü'T8R™CpÕÓµž³Ë.`He1–‘>CfH²ôíT±"߀V¡©9º51ËJ;õ²é貤žÓÉ‘7üÓy:?>åÄê¶Ï)½© ’”¹)§ól“ä}û’(Ø™Ãå;%CÆŒdO…(NéM!û§Ã5’òî9 ¸Ë­|Äe½âæ½:)HŒê‰>ÛØî¹I¥5Ò`zéÚ¡PBfý¬”0ˆR…Ÿ¦dq€–NJd›T6 ý˜èsy'éê£ÅE#ËB™ã3ne Èv)Ó$R3裤3┕ÂT®4™Ù 蔽k1†t£"Ô¬+üA®Y ÕyÏC·ª!µ*ƒ|X w‡lÝQ0(¥(5ýs+™¶9ù‘F ;"zgȯig$Ý[V†<¨®Y6‰#-üÙÆh[“’.H-¹ ËÃë>ÞM[äÀÅïbØÖ ›e3Izf’äéèÉÒ¦:çi¹ûYÐêõC NJPnæ~F éa™Ñ¡ÂI¡ ¢TÌÍgø–ÈbÌ»¤1£§k 5Ü{åGU0û“öÎVZvÿz÷j¦}™s±ž§¹ÍöiËjͳ2ÐÃeC†^ÕYÞµôƒ087Žþ¾AªÍ8a‚ÔmM nŸ:Kqȵp ÍA‡ü2}oÎá‹B‹MŒÖç<çWžŸFbs™—ˆë\k¹®Ÿ¥• ”ÑYÊ£&HnH:Ž1€bRke5 ,²É¢lÉÎtåMüNGY}蘑Eh ã˜aÙq*öBpmSp8òJÒÀ40!C3¡¡á†`Ð%(“³lì—%ånóÇX™ IŸ2,Ž‘µx'>Z€æÚTyeòmZÙ´”0‘Ò‹Ú@1 „B‹J!!B!êC(bBP4 à}ãnå‹Rüp‚’*É€˜Ô0{¬1v5š¢¸Oؓʻ£<4žóPRý›¿êÙ‡zËbñœÚóñ›ðÞ8Æ9 ã!ÿÛŒÕ5‰iëì›Pý—ºªIÈËÏáÕŸ-™(šÅ&ør eqÔ"õY‹y|˜¡4І}JÉbæaÛBªCλ§>·Ö…ý]-kÿªES=C¨kZˆ7߯dd"ƒåœ2Ëß°Ùoa¿œÔÞÉ|’K¤”MA3H¥§- œR“&¥Cu«Òñ1"’dJ9ó§l³(Mb†Zã©qæ¹É:8e'ÿ†"és\À¢æBZA|º]/f¹>MÎ_Y6³R–L(R¡1‰c!)¾Ãª$äeìHcß9ºtƒ ª³+×Ê™-CåŽM©°ºv)&m”´ÞŽjÁއ,œ£BRâð×ÐU3°)@!¡ÕIgG xþM­ÔÌÚŽ(èIæT¾/dØ£ô3 ßÉÀ×gC~H¼þU#`…)4…šoÛ4÷W³IrÍ«r0¦«-„ÿ®kW+“–F°??µ¹np¦TÇ! -Ù6Jƒ$óÂYRæ[ &<¦Çå`C»{gæÆM™‘2œÄ£’\ÊžX;ŠŽm>¤)ARÁIj@¿Lî0DšBõ HuL*$”Rj“EõY&úÌNìE”0&™$©t¸Í=Úæ÷‘a J+¨pÃX˜]x ƒ†  Ð³¡<4ór º^Iˆ^\–\šgéY02"vj„m ã½y-q˜ŒwTÆ>ñ³¬ÜÅ$¸¡’ÿg¶|­/>#|^Σ@Ö̃üM9áMªIâ0#Æ15òuOÔûO ͺd"§¸uSF¤ì¸Ë §CZn©è‚Æ©à¿*iXžÈ½½;Ç‚ðÙÃw©á§v±Ñ©{³f˜ŽÙ÷#>¼Þ\“vI»`ÆØ!Ñ f°\\¸‘™ÏG“f&”÷¡ê-;ô¨hÓúJ‡â‡LDÚŒÁ8i¥üÃn„GØwǸê{Ÿ1%\(×7`Ïñ°%tNnTæfQ ·L‰«žñ,'0´8t7fÈÆ1 1ÛºsçÝldÚJPÆ4ï³$ÇI„-Á ¹”%Î@¡—L‡u€0Çæ}9³7e‡fÙÖ¡·ŸA™)ý [W?îjžÝÒ2MõLóÊpŽÕ4á ŒÁiFg$ ,g`T³ZMÅ}‚… £!?Q)…¾—àùÓ´=¤Ú‰á´rL$õ奓~'ØuÚUïXž{þ^Ø–Ë®lN‡ùYIÁqoª:úMЃ­’ Яš"{Ø.‡¢u­‘x~7€Ý–\žé£=k%¶;äõMÅœ1ÛCä9G»vL¶õ)1ŽU—½³®{¤tìF0ÒdºEÈoF¾¦™Ü6—³}·"Èh—ãgY·Æ{ãŽ@9ž2Æë“ãC,YCRÜ`Ó2Ô¹'GÇâeŽ›oué…æ¶¶}Þ¾‹ÉSÄyîëÔÀ›ãÔ¾šçtüëyj3…Øø™ñdGþÏXÄõç°º–’ˆjDg]±˜ò§ìm+;gÀY¬|GÂÍ'ú7¦'2¦…°¬ún‰:‡¼ñZ•œRŸeMáNyé–:U?+ix¯-ã=£Ÿbõ+“ê>;Ì{å—›+ÈXùo䳤z¶aŸ^Ó7'n¤— {ÎQ*Dš‚º_OAÙÀô“Gz$O¸Ðqàíã"°]á~ñéâS°ªvÏK™r-½jžýâ»6zѬÉmy³¥C i $:™óí>…íÛja›ûÔÇ’Yˆ|ßáõF«!¶ €µ æÀQˆ$[ÆÁgÏÀ¼‘U+ŒóÂØ .³B„fâ·±‹ÝæçÞò} u‰Ã4¬p8Y‰Í±;Áeø\ŽøüMÒ†$m2“Ú'”¹4E"\ ¼Ùƒ¹f Xñ_ò!ª)®ó‚•j   ‘É0ÒãZiÝ;Þ²¥S6HÜ5ÖÕ@{ÀdÔó ’9Ó6iSãìÈw‰>É,rž6èý#ˆnÒüLAžð1á¸ßhoÚ¯TÚ&ZÚlK“™døBðXQûhÛø –9ãÑÍ#^Ap<&7l+èôÄcG€H 8˜QjýF x +æÚ¶L–fC‡|{ƒl»›™x÷ßvßíè³/áèÚïcVþ™²É 5ÒwsL†ßŸOa˜Ž¸Q<)²Ou¤‡JjCÆ`,ACªÃs’ L›$=Ôã86zËÝJcCr{†ÌŒÙ/ )Éz˜É¨ ÖC›Ôº×ÐjžéW…у@B¸ãT¥-ËXÆK¼«©>@’`À†»9C®™ÂÔÆÒg{vöÀf‘6¯8hh½Dâ qÔ™S°Àùӊܳº\?å=´ºƒ¸ôˆ‡LŒ¢¥'áfôagpTñø‚]é›Ùù ÿmƒœDõŒ³‚d@Bru಑"náÿìtòÑ´›L÷Tþš‡ñÆp)™rÂQ¥fÉdÖ”'§JD½HFÄ¡"õ$@—¨ƒ ²\Ϥ™¡SåŒäG×”CaNIr¢²rèIðÏû¸®æX„1Œ˜Cÿ°4;ª ía´a †v÷Ù‚øˆd9AÞFMÀèXBa®<§:†åäØk *ÔVñ²IœBQÓ…Bµ²–•goËf°¬ÍF’¡3r€ÒÐÏŒÇBôh Aÿ޾i5¥TSãLL!ZØn¬ λÓÎ;æJr™¸ ëœ!nö5GÖuŒÎ@d~ªîÞÆÑmƒ<äD!õðCòû‹- :#Ó¿pïo%øÀ@ëÊŽÿ`5ã3bôÓ›±ŸÁŠŠÃÉȯ‡ÌÍ<ýã”(x6 ›·U¢œ %°ÒÔH„Ê!…97(Õ³ùqJP¢Yµ¢ÆêNŒµ v<À:Vpj05Xd;Љd¥)3’ô’Ìá:9t¼†H0ÃîžheL·¿’d¯œÁÖ1ܹ«aÔ½ (ÂáSë¤9\cƒuz€[ŽàÏ82àïyüïÀ VºÎ‚sSFÚp¬–hÔ#ÜË6èQ¯½—7Ã!’˜“›Úã2L´Žòkl‰á'¢x • d'®…"bÌ{‡.Á¼wrmÇ69v¹ü[×¥xÆü4c©3msü¼wíßÕs¼s®…1'ìoMc•p5Í‹NvFÄ×Íu JN42Í©ŒÔ˜æû6I­·0ã'ë~×û¥æQ¼%"v….&Å3 !ñż³hkYéÅy(yÖ€—Ä] 3BHSLí ¤Mkñ^ °/þ?)rýö–Møf‹ÐÞ …"›b¢Úî—MèX“Ô>É·Yb}òÇö.&ÖÉ'[LÌõÓ;*Z†HHê§Ù! R†Jø5 -Ò%ËýK± ÑP“M„M[´ Ç|ÎøÌÈxù>ðm'¤ãbré ª¨t†¸'Ž}¡ž;}Ì "Ôzó4vå!qk!é}sfA¦ßhr¼1æ;»¬ª ,ì°E”Àɾ…8þƧ† ¢ƒN£S¼È¬8 ߺ/@Ô|F±xw³¹s|s-³v]®ßCä;éâPû&ÿ!ª9rÔN¾äí÷y¥$×S›|k©ÖÌ%ÒLFnlò‡}<¼+Ûd°TaW”Vó ÀZA´”œƒ‡y±„'°)ïR!'‡ž–[Ͻïè}úßðèžéâd§ãúÙÇd¤Ì©NÕÜÚ]>i°»Ä&éRs‚©’ÉšºÓŽï×àúžÃh8•(1©}ƒL —ê !Œe.aÕ̆ÐSg”s®Z{)îQia¥¤i2¬žBd7¦Ë©gg³Y¨Ú\klNôÓl?8¬Ò ÐijŽ‚G˜7ø4dç$õ‚d•h ¿…¥bV¹pZ…È™Mà CÉȰ v2}BÈ :¿/ƒô8A˜ï‹aÞŸWCr1†™œ8Þ:îË'8aßz>YáõQÞy|}À×¶=£lÈ;'Ä¢¹s\HMy4/ç$âW¶Òps:Ó¿t>ô4\W ’PTù×F*ÎÁ3Úÿ¦‡€.púƒ3ÑìókŽcSÙÏšÈñèGàìuÆB¿®©Þn§gÆ0Çìãþ>­:ÏÉ„ËB‘>ÛÅ' ÞÚ´Lœr’? ¤CØ6‡Ò¶¦È±Æ¨0.b Å’¡Š)s€‘ÞœacÑ:û>k&„N‚f¥¦\Þ3ˆ³®ƒaS‚XA@W¡øëš3dhr¨x>ñÀª+¤Æšƒ¦_Œ¡$s‹©‚/Dé×9E”9#" ÌóØmGñY¯: µœSÎlE¤=Äá&‹ˆ¼æ¤ØÑôXó^hŒq„,‡`… ©¹?s-!¯*F@â“á‘2…躜ƒ6HÂÎK°ó›sÜ{ é\.ƒrÀÓêgŒQú@p2Dñž³Ê1/†ÃxfC›£ªjN™ý—ÑÀÜ” ¼‡0ÍN1ç7ưf`M¹>§€:#StvN!Þ4¥€9&ðlNÔsÏ䯄³³Ð7yNÈጠœNãœrΙ\kÎ)„>Ò<ã¡ãÞrŽùÞ%“ì¼GÑsmõ\Ûø¿³±‘Û§°•;‰ÝNéЗ&2Rb\|uŽñÓ¯t§ÿË?ÿ‰ˆŸçœí”Ojî dæ'±NÙ;©ëÞ[¶!åά§Ñe/rÍóúÂxó5;’Z-3 JO hJo¾õ…7äÖ>cÓlºIÁ»¥Ó™š´ÒžÌçNè£zd2Š“f›¬î'©97ó>µƒÜ 1ã•Þ+7é/µB  î·“;ï©“:ô@õ?„fx+ªèR®ïbÒŸm³¨››ÅXRôÁi+Î"½v3‚º³(ÞŸÍs¯mUÓa€&NÿÍ´‹™‚ŠyË”‚>ú‰Ú¥)JRŠQJJ"’’JE¥%)$”R@üÍc¾xÆ,Õ7Šñøƒò÷ÚÎZqH]“&Üðž ÜÑŠªbžS5:Äkéð¥CpM;ü²eÆðä߆HiC°Þ­¿£„) ÷è[gú|;Zš/D‘»AØ“ã0ÞÞïQòQ€™.²«w”•)S _œ±­¼ÀH;é±¼«Ûh™.ÒX׉ëLÚ2_KLþû?\Än¡²gY†1Ý <xáS&нó›Q“÷!— ^\Bšaý¥‘ý£18Ó–xOÈš'*c3¤öðÊ”—·—Žèšé‚xÍ´6m`x–Í‚³ü˜dLNwÛŇš¡¾}>cT­¿]ÌwX‹Z߃€Ä¾ë@8Ezð›!dêó6ÞŽë|xÎ|å AËg !ï~Þk˜WõRIµdÃÂHô ¸?&’°T#ã¿7ÓŠ„•¡IZ¾Þì\]TXœÂ¼8¸‚Æ€ôƒÉžÊpmáõ4Î ){JLɰÍTÖüŸ)‰½¨¨›ñsÕS%–ê+¾}Âß§C8¨:ôc2WÃ&{–¹ë‡}V¨”Hÿ9’ǰµDV2Y1ç±dCþí°\ŽLõvöï¯Áÿqª*ƒŒ<Ü$Çá ۔ߔ$A¸â\ý©Þo†r“î ®“gÐ\‚8ûfÑÓg™örAï=ãOèXj9€ Ñœ‰8˜@ب, Î0â\“1rý7`ùmv± ¤Þ‹’dÌ!ê0ß7­ÈÜ8JÈd ’N &QR˜îj^à‰F¾¡ŸEÓØ¦ç)> ÓÉ0½13 •¦ö†œåÑn mÿÐÔž“ÍyíÓ·L㘅’ÍÑž™¸À”w€wÓ`Œ †4mÆÒ2 ÜK—ó0¬íÁIʼnРø8àa·j€ÿOlõÏžý§xgáoŸÜ7N@mG,á0v#¼Ùdð¯xÒÞ·ŒâP¼¤)I)J(šµ )%(…)¤=‚„¥!P¥$”¤R‘%()I"Ë‹)²… Ð8Fü0¡ï>ÈÙpïÝvÃP¶˜ÎçZY j¥,˜k2véYÇç¿“h†X,30þ†«3;QéÛ Ej4 F˜l 2!eñÜ»¢{\ÉÚ8âå»tOÎqg,óO,;›› xcA˜LbWkŒùÖFH´mÜWœaä˜q…îùoB(ž“¡˜ÉŒœÒliRÃhölù8‡¦Lú“%ðHáˆ,°™À[EðƒÀ-èÐ<&CAŒŠˆòcæ,¬y™MGÄun…„Æmë;ÚX—2œJ‹Ž å%ÇÍaqkœCñ,î”N-I/Q3Î)¬²”z•‘e)E) aYã-,EéD—%‹%1ÖIÏ(—¨¼¥ JJ1’‰rˆÈQ,¡/g™¢Âõ딆:‘ròÆBL Öñ4" ÁT JsÍ×ýë-V€…sµ‘l(;Ý-ÉÇ>ÒÞá0ÐëöˆÓ˜'!äÜbkž´ÝÙ¦ÿ°û:jfCf¸´¾®”> ×¼Ê7_ìc¿±š{6¡Ø_:ñ¤SZliyý¹Wác)¿:†BScžêS‡/^¹rå’̧É\À—¦arå1—–\±Œ³öZ¶Ì*)sÞ³ ØìLKßÌôtiò©¾ÍæZd¶Â–Q6—,fTäÔ2‰íTÎ):•$Ѩ˜”èrêL*`Pš5å *mÁ{-{ç©\Œ…Õ¾kæèåIà©/RRRN!bÃ@£-)&Ò½e>zÆZ™•éräŸ D¹;UŒ –hTÍ3댔‹)Ó(²˜TÑ7©¾$}§ú=åéi¼ØpÏQC‹Ý³ÍWÙÌ@þ6TkFÔÇ]œK_NØäWD2ß3ÉTµ"ƒ¿1å»™ ¶ëOùécÖ†½¨n?o8±¤Ïùá ¶ãBýÒ¶: w@t-Žœ4„¨U£Z%ß°ÀÑ«òí]PGGÁèw=µþK !ÅÎÜðíœå=ccÛ–.…ÍL˜²ü:ù”{¶A±.'³~¾š¦‰4ŠˆÉ%DsÒ¥˜ aGX0Û r$š– ›–C,¤¹…óØÍ¦u²§‘qòˆ£Þt×ãþMxƒ=û_|®BVS“Я’†ðá—ö[ ±AðÖºÜu äÁŽ;¡§ëØU ý"?Í ì&µn(µÙÖÂ[+i#×9´ÐJ1vÓjnÆ…e¨ õRi]LòªI3Vwˆ«'‘LÀ¹Lb0cüÂáÈ«ÃÁY ³ªÏbz c¿Ù[¢³ ÊcWÁ2GŒÒ–MÅÙìã\‚.µ­ó-i;èÕq¤¥©á˜2ý/Mœ®ÆGq˜lîâãùMrZIÍÊtί4KŸ}A)²)ÔòL‰¸KÑb§Æï­¦–œ>BÆûíæ¼.jO3¦ópÈStd{êíµŒª’¥þØÄÒ÷o1Ûâ”»^»·Ï”V§Síñ~Ï{–hxÜêÔÔXµïG}c:T<’PJTÒÎ\×S|'p›²b’GÆ|#ŒMÊe»Y¤Læ°ÒýRÔéŽLƒð¨ðómcw›¹3°Ï›kf;†Ðzu›1æJÐ¥öy›lŒÊ¢ïb¥„‡Ò ¼`y³÷•ŽÊî6:„äˆrnŒ5!j!R°› !̬aN{ ¡,§iíðG°}¡Ç”ÜËž0ÜÒRQ¼¶0¤™O*qðÞY,îÁ©×õ%æSú05KÛÍ"5*6à¯_y×pš‚SÊ¡é¨J/ZÔJÒŸ™ TSµ£qçi5—14”L÷Åt ›mÝXa—Èï?ùàµQ›$É}ïH?¸£O‡33rž4•çwßÁÛN-GÆÓ?Ð ݧ¼…,Á.üÎdaÀ5 â.³`nÀ,s’ÓÙ­4"×FEøµÐxœëoõ‘ô¡háWÄØÖ%ôÀ¹J-it!–dX°mQ’§¬„ ƒÙ! C%£k[ ºÀܾ{Ï6{Ne3ÃÉ÷RšmFX¦Ô…+@ØkË'€Ö¦üó—Û¬ŽOdÞ'âdÿŸsçdEJ“Ùa÷¥Í_p’‘Û)åBÌ}zYò€Ç&°CÅæÅs§ 8–»¥`¸9'¸á =ƒdRœ—C³2O`5éî´Éµ!ÿZ6uŸ9Â?)÷‡¿;“©8S¾6£ü |Ö“ãž—÷›‰Ói¸Ôù§à=ùÙfÌl‡šsÇ|o§Rg ø²7³å9ÑÇoçç=ü͘ãhcäv¤w‡»8CHt§¤|ƒ±1ÎlîN@àO8öG‚{38#p2OVp§ë:ã«=ÙÇžG±cóÿháŠ<×ñýÞ¬˜\-'?Gîü¬ÞfVø/IèoùÛ—ïÒÀ‰«h?uÉá5ŒïúO.t³u›ûò¦ P}•Ìä›`£ÀSµ NG›ËÕ´4lS~~hR+_bÕÿj`7ßG(¼÷úû»8»á²" ´“ñHN*ï|Y€ê0p/ ¢&"“=\¼…’~Zµ2{‘Øk aÉ©t ä°ž÷ÿ@¾fÚ=¸‹¶v„Úæ¶l‹/4_Å:QÊS[ÕÓ,œpo²¥:ùvÐu ¨Ú¥Õ…%™°É7”tŸxç fÎxö¦¶pæ€ÿ³Ù›)±¹ßé²)Û!§83Ô›AùÍI¸)ŒmfÐXÚÏ à–ngPm§Ë1–|³ÖA÷,ïO8ûçÝ9C$â®XÞŽlÿ#á±ýOù?yŒr'ê>ÉÊÈøg€0¡° pÏ…üÃÒ çĆÝïèéb¥¥žk–žLþ³×>,òÝ«XÊGøÍŸ§µ`5ìç™3¬`L Õ»L0u6dy1 2?u›ß‹y,dؔҶ¦#5Ý>ƒ'pA²Ï›N¦íðnªäà‚r9AÚ0 ñM-ÏGtÞŒGhG[Ý•©z.þÕÄ&q³Þl›ä¦İj¡¬ªÏq¶«†ôF³Ëz,ªf Š zíø¢©cˆ*Pîı|W!˜ hÖ9a}ð²Ø96­,©ïÀûÄÐ~E³?¢ÊœFäÃÂÌ K“ÙŒöOïÂjvÐOøC2µ®§z¼åˆìÅä÷•çNn ‡ÁX@øµ?Ë ’ÉÞ=ïMä8Àa_«lm‘ÿ¨*¯¬Õ"GéÑÂl3ûfó…ͫ숗#åEªÏ`qA‚ŒU†JÎ(SŠ`Ðq–´àœ‚(òŽÙ¹:â)êÜþ$éžuõžqÔ¿òoÿÛÿYzVw¥]|ZõŒU ç…HI‡ÄñzxèÈ>mëÌvVØÇaVˆE§e€W¤L˜÷T>òÓ¢b=þþzžº+M&Œ ?ÊQÜ8æxÉÝ¡B b¿à¼H,aµ"Ä«£D÷â.€[F¤·cˆ"Õöè7³·ÞeeÄ«}…¸ïü°¿*H°•LK˜'5¼±Ëë§=~Þ:åŨ?\ÅìÔ¯9S-¦TODé³o|!¡¶bN½Å ¸ÏщÕ_7M$é9¿‡²ë8ç¹oî¹ÉµOɤâã¦1/‹.r}·E}±¹rõÆøfG2âÓ½ôèSKs³fIª`’b©$!àãì‚L'ŽÀšC…2L{¾ ¤!3ôõî$cø:ˆ ÄH”úìÂpy%¨„[Ü@„ÐZ\ãÔÙÏ áTΤ/צU=ºâg¶`t:£r6ê9m“A@ÜJ%M “D…) R RH¥$’( Qwñ?(IÃuñÍ v´€ú[‘\0ãžøzÔ8Û÷£™ö©9va¦0CüCØ/›á…aôž·¤Êâ] “½L×`>€U¶nÔªeG’a ¥¨_ë˜ÉïñÔª† ù²A-“jè=ì8­£bÌ'¬À f ]ûï.±ÜAåJX@x"¿º€2$ M&€»,ûxâ<)B©k ¿l•ì`@Ð` EDF‹vTÛ“Íc!óÝyœyõ/{4ùN9ûT¤Ó½K\ÄT‡UkÈ{ƒÝ\ÇH÷“ÂbV4½=“û¯Wßb×îÕ³èìû¡ñòÙ«˜!ø¤ª¯4º©âêè §„MñèèQ2÷:Lç;ýoø¾§Áƒâ“xer®¤þ<4éÐpUºosЃMsÆ2\6f/~ð!IÅ rÉúˆ‹UK‘™\ôiÙö»Â¿™1LZ›‚ä)1 ×í¯Ž ¦8 …Òz ­ñ~jèLª¿é"Cú’lbØ–•ÀAï¸:ƒ¸\´_JJª8“ªð³õ\ P`ªJþ·+ä,ô‰ç62s(d>T÷XΜJo×%ϱõ ¤»B¼H…"Ÿÿ° éoÊÀp9P©.üN1Ù†l¡ðtëš”¥¤¤Û”}Vΰ±K)øáO¹»–1¬š^‰þÓ[8O?¸ñ»ÞdS<^ö\nENÿ6'ø[&…ªÆAB+´«€"$ÿâîU„äh<[ŒÄ54ÑsŒ¨0=C¬É[†Mé*¬ÃQƒýKݼ}±ØÙ5_þ©õ?lÊÏËGý«Aq ÒÐÑ%Uy™°å>ø‚ Šu"áG$&0 ‚Ãì}£Øn#•÷ª¼ÉÌ%¬\JÄ»”¤ä £ÛKzÚ• Œk°ï^ ‘ààÎÝŸïHß° û\×법äƒýpXã׳l&–C0Wqá5 Ró­À‚GªÆÄÑâ‰ãN»Þ§ UÅ?ÛD¦öX>*YÓ#È4Æç!¹•¼Ë»Ä0ý¬T棣ªßST€é° ¯†¨Ì:nˆ{?~ß¶Wi(~`tÞ¾hòu¡À?1»{vx,Å{öÐC¶|¶Ðë«TýbþÃRP(ÁÿŽcà2GÜ,Cá™ GA5~"¤;¤–™Ôl$¢ÝÙ,rJPÈVINm掺Ó)TÝ}Û¯å] @7U¯£mÒÿ¡ò˜\§ Iȵ´ ±€Òûx4;²[Å šÿDO딬#Cõ 6¡ób7fàÐfeú®M&ûmÖ‹Ræ }/!·{5»Œh‚ßi½æŸ‚®ìpÌ_¢üê’tTÁ¢áF¿{ħÆ÷“–ã/žu!âñ."gt0M 5‡åEͦth ÅÁtdQhÁ>ßôL³¾Ï°:Á‚/ØVýÙ-ÛQêíDpXÍ;c$þD.×*ÖqÅl˜”Cˆ0M×­cŠ™‚hœŒh&€€S*_ü¯Hp¼²«]Ãí$í!Ùz|¥ïSC×”—Kª“ªŠÈRÌ¡M Å0¯©É}›‚è ßƒ»§ìíÉ\ÙÐ=w¤àZˆ¡üÜÖ’ÑvŒº¯ ²©€G ’L—fŒL„Žx_º£•øªVÿ½\o¾HBÄ4åÂvr.Ê "9ñšôÆ“…×3š¶9’nBð­ÝË<åÀýÉ-Lÿ>üªS6P<¥uª›rK+8¼¢ŠŠ!¬C5n˨2VEW¹—åÎ]×#hú9¡÷…CÕDÂwgyêcq“Ÿt§ÆŨ]áKiW$á¬LT”RJ½“kJIvŒÿŸ:…ôwâ¾<ŠØ°9ˆgÞ¡¾;|œ:ä¤/r-³ÿg$ÜFd$Y°'´–oKá“:LÊeL`y¯ÂÐwûÓò´/éÁj›sÛ:ç~‰ñÉœknj{_Ù·a4g`,,XQE†îΓûÔ¼À`(,Xg®ÍÂãÄûÚf3^CqžÇ'¢v¹;í;wŒ€˜#‘÷jçz§cÉ}zùÚˆ9„]Kzî ˜mëi ®â Æ (’!Ùf ‚Q@̽ÜöÖ\âspÉž8k7ƒ*™<Áè2©<ƒ0|ÒI‘Ë Ø0¬‚…ê¾/úú<œÎßÿ\YéPeìáa|Ìê2¹±ÙÆ’Óµ\±ÃãòÍXÒRØ$ërï¦'·s·Œ\*/í$€ô P¢˜¯rP¨|‡Ò~Aúã8…šv䕸JP°ÃtñÊÕk% qPCã £T¬­óhq/R¬†ä"Ð!eâžÙÚ7ˆxVáTj…ÕQª7C40Ò5 Á݆ ÜNÿéúÞ,`{ºÂHèˆ*ÖÒh1”FðX@:x(N¢mXW¹„N+Ž!—q2CåÜäÌŠ¨€WC  î|Aìžëx¡qSpš…”Œè,7GÆÌ[ b­-wYog˜äP½,½}´<}¦tøïÃÁ¬öüß'{뜆ټ·þ›Š2^,¢xT{l w4Û1ã2’îh‡U-Ac¹(Åw.ÃÙù¿˜)0˦Šþi)Ú>g<ùdlDšñ¦J(Qëì•0PA&þ¸|"ã4Ü Â=ywqŠ1ýj\S$»i4è৯îñCûéþ_ºè¬ÜGÏ÷ú™Ç¹:ɲ3îÙÕ!ÿ‰ˆ›+ DŒF#<Žq¢â1ÃÛ½b ë‡øS²ñYÉDSŸéƒÖ¹FžšQ n+¦¶¼2/”ˆ±2+ ùp¬öª@«Ðœ8»qA`‡€µZØŒÉִЄݱ[üd$  ¾¬„ Ð&Ûò3÷gHé·bÕæHñ¾h)¢¼21ƒpÁ×÷»mœ±Ž¥ü6  Ý5§}Ó3•TíÑœ]³™ÀáômŠðIÑ~[ÿÅa¸È>ÌP[3ýz¢gÒ"µ;ùŽ*ædÎä8ÒnÆ;R !ü©\Pý³wÁ_L©P2·0ÆEŸ5zo͉õ¨á»hõ1VqäÚÏ\Üi¦²Õ» ¶mFØ`Øõ½%iÿÉkÏÏí›Êeˆ®õØ„1â«,¨‚PVPr„ˆ_£²haŽÌIJ¼‚ÕÄ2QÊ6ŠÜÏ?ƒ.°ä1bw$±xw°NÅHb ÀþØ‹ÆÁ!a=”Ÿz ºß­£‹%¨oßó»þºÊ\>ßèûû©xR>4sy¬ƒ¶d=›A`ïN ÙÕØ ¶7gç¸;9@â­Æ¬BBÜfaòû‹%³ ;laª®öu_MÊÃ×2XuÅá^?";æ]¨¾Œ·…ú"xo8`^Ô ÅÌ; i*þ3ÝSÌz³u…VMЍÀÍá9x¬üxzñ;çAç…û:T:á½Z}·þ9‹¦Þ#Áq;î&ê;pOl`Üo´¢hND¸f,xü4Ë[öuVØ9½¿ÖOs¶^ómõãû‡¿{ß·ÿ鬚 hª.Ä–rZ‚*áa0 ƒÅΖªKžz…T0£@§ŒË L’l™./$p4hTÛ(T”1öø¶b/ä;À.?KÁ´û¦S¸²¬ókA[*-> ;Í¥o–±£­.uTI|ä5C§6¸y(8`œ¶ô¢d,èk¡»ßèx3{Ñ[öGÆõFbîò#2mÃzRyûkÚ&îŠJAÑëzîò_ÿÀ|Âxé’‡V‡QãüEÝží©„2ìXi’M ,¼˜ò/)kùÇò5ëF †»d ©lìÒd©Ô0|ߘƒã)6Õš,÷o—·Zåén¸<Ý#%]=‹¢¯Iô-;“‰7‡!–3±ÃÚ/G[ÃÆuöÇMü@éð9ˆi; þ[Î…ûu¤Bô¨ƒ˜@|3g«ÛËîÝ9·U'?òñ15ÇÆŠSúÕÇU/Zˆ,è¹ââpk_WÄ}¸Ó*ÎÃh|>ì¡mW¿Ì›"ÁàzXÇ:Aç‡ÕíA“b¤}×ç3P:MN»ÝÀßQwŽÔz›ÈßŰ®‡Ù¾›F?u- ß5jÎ&üÀ´ædÙì½ìÁج [ »rTåÐÖaÁ Ä öÍ0¯…0@ذƒ ‚„n’½$¡ê·Ð¯ØÂëÊ£zG¨PàœŠa<ø¯WNü#~RÛLç2]Åè›ÿµe[ï;“]Hò6”þ»}µ@ORÁ+AsZ_ëá»d š©:¿TÚò&ÅÔyLËÉ•Œ@e+roÅOóÃãGÙ?›>›ÀîÐT¦;«Ë'9ßr¿Ê1\›"|Ï›ˆÕ—u4b^cMk&ã…“9ýñwƒÌƒä²æ0¼”Ñå‰ögÙ’}HUîپ혋?G¡Ñnemyþµ}ƒ‘q@ðž˜râëK×þ§8+Kçøõ„ÌhžŽ@û&@9÷UüÿÚÿC†BŒ¼>J¹+ó;µù×?î—Zãòô¬Y‡Ã,öTój–ÕR¤;.6 íÏ£.M•¥FÜKš½5“18µS×½óø%4o”ÿÅ—¡Pȇ  Àld‡A™• ¶¦ÄUž—7;ûß°ÚÏ;˜™¯Ú7%©T%4%Ó… äÝ–?}Mk*]›“S Ø‹7˜¶Cb”ÂÁ Ìf™ Ÿa%=Äc#`L'gÎ~­ÛÂósfMš‰çÎ –ñó¸Íj¼´ËÐÙa¡ù¸ª”Õy¾%Äæz¿e~Of70(^Ný¢ÀCª`ñ> ‰Ù¼ÊÂp±µÙHÒ3Oˆ±Üî…°‘ø×^‘ï?€ú¼~LMvÀg»+LWÏ×Ôó°,ÛaÙs%3 Ðó5[çÁÐd¡VÆ·n1âø-öqK´`{¸kÏÒºS>ëÔf3ÞÇ)#-í‡lR£ˆpÐS_SSåí± âËáí5®Ü'Œñ}W×íøË - ¤ÁP@`^\²иnd<‹XHB°Â°­# ÌôÉKž+%( {²©ìÌ2wPódãýn =²’©õÒІ¿ $>WÉÁ_3¹(Õ@Ì;‡Œ‘3w#ÊfÁ8û‚«®wƒ¯ÛPUaÍC«„=ø€q#~ÌÛ˜ 0ÀBP‡MûääD*Á&<{]t_ú¨yãÐ=ãð½_ç *æœ6l½ükÆ ê-sÎeȬú®¥†Ã¡§IMýÏ$j¡°KÇPai uom—X⮬_zYúÛ_Ña¼t0{{Їwái7\Sü/ÁÖ*å)H R P¢ŠRIE)JR)JR%(¥)D²‘e)BŠý¦Øò7–Æ™¹Îl)ŽæË(8A¼ô›&ÚÛˆ¬2ÓeÄ^¯îöÿà+Ÿ¡$à »Ð˶àÆj;jU´«l»P<Œû ?]Ç’S˜¨C|·ÉÅUñšx4*_<€Ìd8ð›¢"†Ãiœ ÊÕèŠÑ â§s4dè=Ç|ÏlŒ;cz)tæ&¦Åª ëÀû¿?yUn«Þ¯T˜Úu©Ê\M™_±p/G¢ìßs™S!³ŽK¸úÊt$˜”¢’G°QîÔR’.JR’E(‹(¥$²…ŠH¤¤)JQ£´P–Q%(¤¤d(²ˆ¥¤QJR¥“9 Áº3||̋ߞäÜL ‚nfçÚw[y4…Nö—rè6yÕhñí“!xg`*£5Ö—é`¹vÑs7ÿ®’Çó¹Ò vËBó´4cTšXÒQ–õ€nPû84 ¢j:ÇÔáÍÚᇀ\kÂ|©“ámãÃC ec€Ö.aüÆ fižSìl¬¦îÎ.ÒQJ}ÛѺòò“¿ØSì~Q`eUPÿc™sÄUÁµ§cÄkvô£Ï‰¥ ÝŽ …\;("”qŸ*âj]?14L£Bþ¿Ûü–}]kC—ý|'{ãAK ªkªôñä‘Õ’¤—KõM¾'ÚMuu¿8܃n0ŸKqD/Û 7F—Ún½ð8öA`Ý&" G~á7Î_s2¹ôÖäúSm–NÂÀ]XûBÃ~«Òxíå&VˆÍšÐl.(ÍnœÐNÓÔ™ Ýz¥O»Ð¦š›$ƒÓ±¥íÔmK™ƒ ÀÃŒÄ`£ä5ÔŒŽ«ƒ:‰ð?êxÄtF}ž|ÒuŠDìÔ:dÁeÓ2ê"|Œ;㡌%ÈÑðp!.TT'lÖðŒUÄÏ3-¿T+™ ÎŒÄðíQ%Œúu<^ÇÈb€ /c‘ž>T~ÁîßÄq^ïÉ3&éýŸ÷óÁÑ•Ã',ê¾4+ò4£ñW{¦J/tó=<ÎëïÕI3Žž.í1°I6ÿÍñóÈ—Z­ã õ`w7OP:Ö"¸‚€¯m†î¦(©ËáJ†ŽØA‚È:JX(…@d_u`œ“Ïñ§Ák;­Óë6EžÐÒUu~?·ÇMÖL±+Âô•è`p‡Ñܬƒ r;{ºÊ¤©yzx6)Ó²SµÈ¹ÃܹPr¼v~ˆ%c^¦f=5ð‚Ö„?‡¸–!¤‚qþ‡ã"zäÖòž×³'5‰•â8^ŸGÕìX7;‰ ܨ gsŸ…kÐçU+Àâ¢#ƒº4UÅÊ™ƒuE*¡—þ)j= ¿Y´ï ðãc«dÓ̕ϕ)Ž‹‰y<‡ÚMF0ÕáB#”XQ€Í) @–Búv ã>Ô½c¤u¸å:W¼zùÙ¿k6î˜_I×»tô_­ëOa§2¤)Ñ‹Áã?"´QàÔËžc",yl,gdÐ ^*©¿8FÔ¸žrª{ˆ0ù‹G“§XŽ*@¨“æJQäb:›cæ-Ç\÷F·ãÉw"ŒabñÇ-D©w3&\ÿÃáá7$YVnK9….&¼´š²ègÍiã‹QŒ!Ï!{ĵB t.e u3p0^KiÎ>âO£ÈÒ<–¡üþ‹±s=äšÈ",/E¸½E|¯â¢,iQ?BŒéœ¢Dµ–œ~g Ï "'Í~À¦¡Fýjù/Ô»5®˜òªª•Ç*YŒÈ¬$ÀY¶_/B5b8Bz?½‰žOŸ§[Î}IãëÚëçßEü™S«cLIšQ«ÌupÛ@wˆ?˜ÜIÁ\ºáÆ{¶>Nê䊧A/\Òêb @xNìCë@uïhAç „ä5†\ûð³Ó½ZÕô:ÎC?h‰÷åÏa¶b¡jP¶Iòlõ[$ìBîí¥{\©™$ô¨.0½8võÄc¥HCzXæÏ7]nãfÊÍlüà7 ¢ýVcx"”BÌ(G^‹xw«7õ¾÷âØ8c GA‡AÆLÊõ(ˆêø¹¿*¦èr?E¶­#Bî¬c[Òòàv?¨ÙS}g¨Ÿ—Þi”—áËÿ³úü·ÆæîX`ÄÍg“úæÍ¬Ø6‡š=B’¹cB”–R“ƒÙ‘Ëoœòt¿Wa<¯£ð­ú¦¼ÍæmŠè$še(°pß'=Lë¾¶`ñoo{QVQeðÓ7àd!%ô[~ • ú±ñX^þ•– Ëj¦ú®žu­pkKÜR›æ£™¹ž?Vµ»tذéª{õβùšmŠÀd:ƒo¨¸“Àð0gX|ClpÈ^?û ×vde®<È%·” ÁCZ?à°q\{êzw®]ÞëÏÛÔM3|–ƒà¸!eRIÑ;®r‚AVñ¤ãâH}T”œÇ“Ùä·¡8‰‘lY·T•§w†·%ø-[¸–²%AêL%l¤ƒ#Tã<ü²÷Â|Ûcµ;·?rks¶p2jŸmd¯áÄßkcû÷„Àɲ „Bª SX H\ÂU<ŸzœNGh,î!Ïìš?­…ðlΊ5dIYŸ8´Ý,u:7ÁèG ùAá&ÄàoÙyH@ÊS¡B…ˆ?P³éØ« +ìH¦Sû%6ð Í}Ò;WVõM~¢ÕÚárÚ‹ï ×Ë€Oo¯s?a#Â@ö}¥°Šd‹`ຠ²¿¿sfØ;›ß7Ÿï÷-k¡2°YDD êÎj¬n>—ê‰ÊêB,”®éÉ{¼ŸÆ!‹ÓÐÙäò:%ƒ¦±•x‡àWÆðAð Ù‘UæŠîœMçþ‚åüS£-`6¶Û¯wñvx¨dÅï ÎXLNåt6ä‘D\LÆl«ƒ¢K€+Ð4 T…8Xs›ËáÜRbÕ»¦«—Ó¶~k=®¹×D–œ|9®¿¬ï¥ïdÙSíΟPššÊž°¤Ç½9 ˆ€a` #£á-ÌŸº…›©Ä"Ka12%D[1M0)$£°œ‹øJXÉi0(éã1ÿ«GK AzÚu=å½:ìðÓéR(Þ°a ‚°Â„‘~4:ʈ%ÀkÐ2¬ë('ï -><ôŇ`çÆÙ„4Žî½“CÏ—‡ü¼0@`†MXSîˆmÈq,âvï4±ôo«3zÝÛ¶ ÆdGµ­ó> b™ÒY½âŽíeWtA…rw´©'ÄXxNaf##‚ /3®5mR]È1>«P Ç•eó4êv§ú.˜Ú¶]V{’¡”œ>{lÆJ3¿S¶@†d{W †ô‡tPP0÷ªò‡¸?ìÏbèÂàÂàšÚ)P½šõuÑ)¢ª&…À#ÄJ™L†ß?p×á~ß1ÁŸé¿&„Ï Á\Ûrì®K­„ÁÙoc í¦Ž\G€©K2f\ ìO 6ƒÉwˆšµúÊ}%¸!…½°-ùš{¼’K'äñ^›£>/*ú7&@óB”{”—VÖb°/†1}ûß÷=§ámSÄ&sÊä)8Å0kL(ÄÔ$U°I¢I€“ò©©ˆ`N¦…°öþ`%œI¾ƒúuÍø}Ø‚½Xä± ‡¶q<ñâ÷âÉcÎ âxqcê¾½”\mzìK§ü±[‹xè°sAåµ{%ÌÇòš¤÷AÔ¡ …¾?)¨2I¸ñ¤hSûoé© ñ”»JMç Ç@ó”ò' 7Ãäû$ú8Ó%n-œÃý>%$VýüÜîž"”£]£ Oq—9Â)ýhI#²|œáÔ¸ÝÓâû¼t~þ¡™sLÚÙ߇լkI~ >eÕHv—%Sù|Þ9þ¼þúÔáé<±é§®Ä®eºjäàµÉÐ4VËô¦S ¸>;8®0 ZÇ5TP阞pQŒÁâ?¹:ö¼—ýw彺 ÍúƒC¾Ü‰´Ü+ÔÛ¨ïMŸvêlµöÁì-ßû†ø¥ðÑ5ލ¡DÈÀŒ &L/ëD¸ÛônŠÂŒN´‹XŸgV L3ã6}ÕO$’óEwòß]‘çv£¹xÊ[©kºrtRvE ìöÜŒ qÕ& ®Ñw×*âµgP»‘ÌÁà ÙÏÛ;Øk-¬’2º!™§õõ¼Ü2ï_àÀr²úEK‰fnlíô0¦®øv ÒÿÐìÌI Þ­4ÑíÐ&Cɹ7}*Î^ÜEãPeà †sUú ¿iï½ãU8mN¹F¨…frDòA4¶ùÿoîìÊ¿ÀÝæ¹b}7¸ÃNO¨Ži/ßÈþ¦¬ƒ°a3tÁúQ‰ ꔣá ïMþE÷•vf·›®Ékà©3%áHƒ¾?ˆ+ ÐVIQǹæqcŸvl†ÀlÆÅ>RTÔ§]2gCí¾s‘2!y;(žµ²´™öò¤˜ÏÞY¡NNu”϶cˆ$±¤tZùéŒ`9ó·i\1ŽßÌ'ϪƒQ–'¹Ysž4 ¯Aœ”b(ÂÝT¥ÅÆ·(°¢Š6,õÅÇæ–5å‹Qö¦v\\(¢Œ2‹ À±bŠ(¢ÒÅŠ(¾y2âã–ëþæÔ” J ¸Q-G3F1BŠ>w½°û”49µŸ}k…kêf×CRmÐØW¥䢦ŽX|K¥¡Díh´Ì©6{…Åùÿ–=T(×’‡®¬M¾PeB„Ùè^”zêº% #À”~º'DhJÅŠ(¢‚ˆ9•~(ÒQ CóQ.£ FëDO£GÙQ£m‰a²(9Z&{g°½ÃØ~O%»&}Üz.§šI‰Ÿ"„ôhiñï„]BÞœSZýEå¡; €sg6þÜ=$QA·¦Í0ÀÙ@pyøÊÀg-Õ¼-?2ðWƧ\àXÅVã¼1@£ÓØjTu:´,"ºݾ¶àì½¥ÜX¦>ƒ`gçºÄa¤âToùØhZµ}Ðý•Þ6„kêÅIN{cy[5IS§ˆ¾UVy™|¿ú4"6Œ› X#0y ìg>u+}™ŒUc”ÿg³ »­A eU}îþ›~s7ÿÈÖQd2|i—ÝÊ~4FýÒÇÁä™4„ðµ®$(r•ýYh‰2lʬ¹]üäÐAÐ×é2…åvÞC)®Ý[ žÎrìCNÉd|þ»î:ä¾úÁøzÞwAüZ©žÑÕðLqdŽÕvm:ŸÌwI¯aúë¥òyî> Ö¼R Ô,eE©åp«…ùÁ˜è²Ÿîj N©W˜ÈÄÿvÈ‹»Mmœ0a-,ˆu3¯õw¸ÿ¾ú§1s2UÁ[´_ÞÃN,Ï»â$S (\28Û­•Rí^MEÁ›)nKxñf¸Ñ÷ÏyÃi ÕlO}¯™Rà SüÑV I–.'ÎÆV!ÆÂÊ«£¿¡uâÑ5ˆN• Ä?”2òÒ ÂIñšg»è%¼ßšò´9ˆ:÷"NjnQˆ—C–÷£·ÃmÒUÕX5œyáŸ[-Š:»SKîúwf—Xìé¥Ï+цÇ3’é‚ ˜=?¥ñN;• O¡ÎPe.©é7‡Ü}T®‰)äû8½xÅ·,2Áä¾HçóÎyp|2o½ÝÅ/xç… ½1ø{î^Q°“VÑK2Äéî‹l=ÊÖJ¬ïøÈ~Þœ›"OS膵XµÎ¤î”(3&ÔgÀýîþ©'[ß}ÐÃrö ßvqƬTz O±÷‰–vÄÒ+F« «"Z‹ôb_¤XbD7VÕ¾’NV™Ë D/LÈúÈã”±¨{ÎT Ü DQôÄþè.ÉÉZØ¢tùÙFÛS¨x (µ#»½ðt1Ëž^¯3IŒ¼¤¹ÜMn€ž69ÒìbÉOI@h}żösÎÔºÚ’‡EüAÕV™µZ*Å|+¹ p EtÉb°ÿk8mÚwÒrùµqXšw}ðÀ Éî%¿­B·íu4ªƒ74édl 3àQaùpÉØ_@ðžwúY )tlÝI `I= óW×ì+›Š¿n4»þzm|‰q>ÞÏÑjÙ«mMˆ‚’ª¿Õw¤ Ãe°Æø–)¸˜ Äu6*±œ”\Ò?å È]ƒbKƒR0áCž{ €à,ñ€Uí{ÆwVª„´ ÝqËE¸bþ1,ÌE©° ¨R!:Ä2q,z)ç¦h)ÕoÕ×å'îǧ Éû7¹×6šØd“Ȇ ^p Ô”{rã\Y#T; Óˆ3É„è9Ó~~ú>á?.tºá>ĵ T¼Ü·¯…¬,£2k(5W°×~þó·ÿ/6"$s+FÖ™k}rV~´n5šrlaªj¨ È0js\…Û{Õ¹†JÀ´J<à³ØÅâ•[HóÎÙ*žzî%â‚5ÌÞ=ÏñÕ[mbê^åKP2ëWü/AªÝ[ý!ûÉQ©5†5Ém×ZeÑTÔ5L3½‹ë3)F'hÈÂtñTt&™¿ëÍ#p—Ïá’ª¼iÌǰÅ>GHb•Ë0„<'g²?ruØé¡Ó~Ѭo°CÕ”aÚ¯xMàæÞ„DüÖÏ~¡êÂEÔ2é\òuÙgÒ=mxÁÊç*¢‚•Uº|Í#p׳VñlÎRÀ| )ŠÄ^ÔÀ}‹R³f1á@ÜzŸÑhãò Ý™½÷`M¯†pI‡ý/(™)Ñު߽ñY™;ÊqO†0z4>Ž®Òü’ B™¤÷tÉÑîJ̾¢D€˜›¾2»¿bSÉ5 h1,5œ4 q€a¡Fµcàãú[óãÂzØ’í¢øª?kÿtU%aÍ^ôæ@‡[¥A$Øwy4‹wNm­F‚ ŒÎ2[;9ÖÐy ¾' kÎ×1øóN9ݶsn ûŸáÚŒÉ4ÿu,Lš·³œg ¿ZS‰\Û[?j€¶¹µòá(X‡b䫾'£™b¿mæËcaÅ™ª·„¤umf¤¤å^z¹Ššûùb Ç¢.ø$?Ø$Åd ‹— [`°™±dNÐ`p´wä£ùª°à á,ê 5ÎO\©_±©6ÁµÖÔŽæilíøÁðW3Yå)ô¹BžÅÐ]}_TÈ_‚`ž@PcúÑ ãòëH€ø0½¶/†ÊúõŽ~o½=°Ó2ÏMÿ3 þjæzƵ6­ E¶}–'ñ#b»£U©‡P|õ†@ * Ô_qu%”ìZ~NÿŠhXȺÂwL†ýßšMš¦ˆÖh²“†{8_ø‚µ ì&Å0)èTi@æJ{>«Hz½.óÿï-/&¢*é¿€èNŠÈ¿ËT4®ÿÖ¦3[ÿ?WC´ü¿±hžßOA|V$uü[ Ø3‘Ž=ƒ™ ¾05 *œÍ45Óq^CeÙæÖ;6ã®9¨F×RlW:qƧ`z¢½©Xge«°ß‰íR^‡Å°Û¾›Ÿˆ®Wÿ"÷.=HÐë­òI˜¼À¸â”¦¯¨õ \ÅZ¡7T¡øýVnÓ½4¿‹tŒ3ñS½ÅåïÐYíóõö»· ƒªgókØžj‡h´lß/ÔE¡RÖJÃ:Àµ†é¡Œ)èæþÁ2¥ KŽM{û°áÜŒ£Â³h…ì0¹"ª¸ÇQ{\x/f3ÿ™\ðPa×^kY­è3åÏÛˆaò:)µ eÕ8ØÄ0ñac»§ñïׄ GüŒUÅ•æñDÆ—Ù‚"XÖdeÚ…o:V³§i@±IÒ/ÂÆ©ë“E¦¥̃Һ‘‚h ºÅ)îÊc 9ÕQË3‰¿ÎédÍaTXÇG9P5\žKð¸"Í}å„=…~,¦:ÞõQøMŒA€ïü~5aõp›ºngë ½^8ƒ x¿^6Hå²@‡2ÒW•pNjcö¤ÂüZÊ{¥wwÛ÷«ß‹ž”[ÅH‡VŸ ÒxWNêWn^~"¡:$\?³ÏÄuk3眢'o*Ö³^íæ7± !í¼æÞ.j‹›² ,y‡žXÂpz+q=Óš"O›ïͪ³}¥åû¹ JûSRH(ñ| Õj›S‹ïÚûu:¹«}zž[oâÍrx]k„Õh‰ÜbðSx¡­%èpîO»’=†ŽÛåÕg[%©ê ­ª»­ª±ž:éžRÖ¸Ø\½øÛêžJ˜±#W–,'¬¦yÞÿ&iÀØj,öÄÙt(áŽÑ† v>ç%1—Ú”ˆ¤ð’â•U‰ï Áèt× ËðÜWÃÃÃSbšè{Š3Þa¶·Þf—fü†vÇlì¾$†ËÄßÖý¶€©qg ÐÜš`†4~sOü ƒÄYz¶…² gª«Ѫ¢Ðñ¢Dî¹ÿ8s0xªoxÔ—Q[›Íægo.ÔÑn)›-ïhºPxo¾?92©"qXS.<(–¹ZüšÇf¥ZäIìj0¬¶ kGÇÓ‡!m:€jD½4 ïöò>O пj:8\½$ï kV sÕ[×j8–mªÒØpOÂ4£Ùw€¹J{ r´rÀ篇¡«…<*KšÝåmPyØÞí•ê˜SJ¹z&ùWÌ9çœðè)°ÔŒré[%ýȽӮ:ù˜YX•ÿÌBòÉ—‚[r›v‰õì|4dÆí:÷ÏxÈ·_[Ts3™kÑ&uÔMÄW€ÕǪ0{o Œ/ùf—1RÌ{i• _EM`””÷mVx£«ªˆçû>.sñ_‘ÝÞ;¤Ÿ¹ &7ò¶çóE/àŸÀnÖTA²¨½ÆÞÃÛöÌtü®œÚªTÄ–X:‡l(EiÔa1^×%Œ#Ëôs ÕלäÈåÖ šè3ìL¥í®X’¶Mqµž|Þƒ?b e¥ðd¼Je~ó]û‹t¦ÄcRȬ‹–{d(Õ­¼AœˆH€îL«mί wRÝ ê‹No¿ôVɽ±XfU‘ô´ó4þ©dÁ©3cñpÚ khú><â[NÂÖýªä·5…Цf¸ƒüz˜ ºp°Ïl*”ªïãàEÚ69K­Œ½0“Цq½ÙÛx+ó*8~rˆêkåL+êâIêY˜qm|«@ ‡È{Ÿ¸î›†ØkªèL¿ÍEðå$‡³*6ÈXJ»MŒ I€h¼ [IóEKµí·ñÇŒyV)ÑVG¨©­ûR¡'$¡õýóŠ´µ”‹úqs-&ÙÔúVª¢ )•‚Úæ“˜¹“«^½œh=_ãpïz9õW²Æüúãò_±Åú×ïvîLë97ž36NÐCb@£¸yÒA™RI¬Y/Q=º“$¤CýÖYd¤’)E)e"ÉAH¢”% (CÜ ÛtÇËõ.‘taÌâº=YçÒ⃣³–¬äÌçPA‚Ù8#÷0ã–8»¬‰²çÞ±”zç`¨¦}LO$¬„+3™ñðY¤Jz2ɨ…Ìú^9€¹šÑå8‡¶Øcƒ@«xNP*Þù/vR·â¦%ÌÁÞ°ùÚÇÌ«Ÿ"å|~kO³’êÙÛèãã ~B ‚IÂajÕ*òFE0þzž®Ò[Ò{¹‡o‡[m¿ÉKçs10Qy2\²FùÂlïw½*ñ§²šŒü,þV¸½6Žû¨s‘“ض†µzÕ8*)g•1 ™Þw`K×,JíU®7TÌŸ!ËÄìD•ƒá[ïk2zN>?gi¾u™ YÊZ¿.³0§¨˜ðxˆ|g~ k²©c2_ x‚3Í´Éùâ¥eKGÝyÞÚí8—[`¡L¢IäÞå ø¡P[­Ör¼2h+Œ Á¥%Ñí,º“A¹ŸçBo¥œ+ÿs×j^颈0«"+i½’¶¯ÖºØë<¯–ÑœåEÿw0¶_Ž3æùtfÚuÓC6žòn†²ŽŽ åèË;™c\¨¥Êô9˜Æ`x¿=®ÿ8Ð ÊÍç`d¾Ó–Ô*Ãuþ6ñ*3êÿ}á/ùÜyù‰ÁÜ8z>²ŽRã7¹\|J3Âh¢Ø¦ó´ùÄ+ÄhÚÆÐôù /éøÀþ¹^Ç&ò®HW ÙÏÝcïŠ|ž?*òo¢ng×Aö9àé[…tŽ ú!¸s¥p,´¾,©±5¦Tº[ß-;ú&m¢²ä5²“ s™Ü Þ‚Ý…fn9X‡‰™¡ëzΣ›´äõ]ު腘w0ܬzÛ‹û%Ú„C¾bU¿•© Úb8eÒNå­ŠŠ 1bÑ bîé¢ñ AtxìÚ]ÈЗlÓ æc°iÜŒ´eœÃmÓûfþ°Vs-jâ²N¼˜³1UaÝ^>»ÝÁ4^¥0Á1‚ÞyºôÔàj-sòî[ÑÖW—1o‚½þÛO‹výed÷áÁÀømƒsüyiÊ´’U‘þ‡cÌŒÝLuŸö Sk ‹V`» ‘îPâÓRÍý•¾(>»¦‰\(¼ßõi硘*\™"¶ä»,YÈp:øÃ0¼ŸV‰ÌïNgmÄ*J+è\™ˆ&K¸}áxO"vAnµ•1f‰IbÊbb–óCÚ°ä/ìÑfËNá%{@ÀQÀ› sc(p<ÞónÖ'/}¨ß7Ï0cË ©k¢Æ“Ĩä¶~,ê¶XbcÞAØ–OŽE´AÐä5]"óóXüŸ˜£PýfÐXIAqDÿ"Å„y DX¡™(±BwEÅ&AD±DuåŠ,P8’„d–x2K Š !BÅ”Q(eX¡2Š%Š (L’Œ%Å„Æ(çuÏ¥¼_Ìô^oÐÝ­o*Lú÷AŽ…·þ*âB(lވ×N…CpS‡ Ô‰(‰"­å‰¸‹ÌìñÂI~“«þ·rwï­4!UÀÓ'¯õRŽ"o78›Ñâ¤ã”·‰£=$´i²LA4&_Iqã{d]º ©÷'2y` ¬ŒØÃji_f ¦»ó­–]êÅ´ Æ&S/ñ‰¡ž&za ú/ü&Iºé§Fæ²ðtXsìV«>=;ËÖ¤2"£»üÿ–ÞOÓÆà½ñI•~uÞî\ßS¥ÇáÂ^:¼ÕkïÌÿt’1Šîâó’uÞWHO©B¦ù0 *‚ȃ©EÆZÃÖ÷xYÙ— ðz9ïódÌh 6ò‰ïJ (N\¢X¡,Q,Qü¢,Q=ùbÂwe ùFQDèÊ0I—ŸÃÓðÚlÊ‘¹ç_b½C­ãªüÐLDê’©ø€#Œyá8¡"!ÓP&Iô*I5ùÚ™´‹ žµœ¿Y—6T38hê´Þ½ l,+•–PÓêß•ÂHÜDžürd¹³EìwÑp0ô&k &æ±XfE£1‘ó¹d”ïY ­´ºƒêÓl¦'P;.%uPî ¾<Æ;iØ8&‹M;Á9ò;&¨ ÜäÓ ! ?Ÿ ¦Žž›¢h§–<RžäÝÌÚM1+˜. WÆðÔê.eæ•t#·›‰‰?†½~¶§M›jzþ]×(^WÜyz+»:ti°jΫ?¸ëÿ*‘5dØ Ó2H³S“‹} L“³ép%ÄŸí»6'‹ni áYQFï2ÜòÓÑ5oüûË¡Ñat^ZŽ‹b,ˆÜŽ¿\I„`Ó½3±óJ¢sä1ALVN ž®þ!“?ù4%‡g,‰$޹þü½Á®)wÈÔä>3šp¥´qÌÿØmMbxI+,Ìù…¹ÝŽÌº^2D»ý˜”µà…Å%ÉÐÀ½:‘WÖòNÄš§š©Ñ®óÁ“/Û»’A¤ÛþÉäZS‚-hªž`Š5ÛÝ!}#LxYSûÛ1-vÀô¬|MBH8‡<¿ú¬ hmK‚ìôGn]»>çŠÐ—Åsôõ^æEœzA²œI\†òTl¶t–ÀªEáçVõQ-¹M­PAMÌg~Rwó0­“_\Üó¹óáîg|g;”ðuKú8“в¶Ìû§Î ÒséÛ-ãœÕV½IÜ£¨W™d^ÝZwXohÆÃøžº2ö*ã빫ÏI¼ô m2§å–†'™?î {"p8ŽK«‘ãzSàt×>Üs~®}uû·Ïg~ZWÝ,PضÑíÂWz ‡%cAs@… ãLu#ÆÂ•0`b8‰èß_ÜNö‹ßµþý5Ósnø$E…|j#­§H`zy4UùÜT¿nŒÁÿZè¹n ºúù¾8¥$A…"KT|„Q2«§å8rø¼lî:˜2¿…T•íWÈóoͨ¬™}¦,b_Õš”Í{ûœ^¨ýÓ§8ØDq…´ÑoÙ03Ó„! T/áqKjÂ@b)l’%w5*›aŽ’Ú‹sˆ]ú@@êœ+YÍ‘¡M ¿á`NF™PØuKÃCÔÖü·ÍÌö@ºò&Ž mWؼLË!rÕë< ‡±D^‹ybÿŽ"oVÓåžÇP&Ðê­ý•û¾ñ9à4¸Ó˜7LJËÒ¶ÄqÏômÛ ƒX|–`‘›¢Ã°¾B1ZëH…ã¯,â馎xôJKøòqç¡à–tÂ՛͈¼p×ý\Óx­f“9 ©1ÍKqâXAÙ=Qôµž²XždCi‰pNïuE¾¾R8o– § z‹™Ù–˜5ûÍcéÐ_ÕÌUý•Çsüßí^sÓ®ÍT¹%ÙW- žÈËûQSÉ8ß.)Öúè{ò·ŠòÞ}Ϻ„†ò‰™y¥ SÉRî­MŠ…í0=Ę=ÀdŠ+¥‰F‹Ó_ÍH#˜ä[4é‰¾ï ¬äí?&˜¬ž"ñ«Â(¾‡G…Îg«uÕ¬ñê,ž.‰­ËÅß$«;ц¾tI°€¼¨¬øXÊßÇ@Œ»ˆ‰7P·×ÆDòO[Éëd¥—Z+Û3àDÒÐÁ,«ºÎ¦Æøöe³ÊÅw!;˜W0}  —;°H'uÇÞõ‡ãJ,'¼Ôî~Ð~?Zºz^o‚¸ë6NjäríÈëåC²‚e®—ózò¸SŸ¤ã»7¢Ë5B`w÷UËdÓ&BàÇQU_3k_ÐÍœ³E;o8—éÅþ „ýØ”ÕÁ~–Vëï^­q/Ëœ1­#Q½b§Æxï–uŽ+©°T©­Lðu9ÆŽ©è €QòJ‘R „Õ^µØòE[䯎¦u‚éžÈË.ã͉æîR­+áþhî¡×\B¼F»L#¼q”É¿%ôQ*È4A‡0ÎËyªS¨p$qbŽôøL{ÏŠþó W¦dúÒRç7ÿ¯c£ž£“ä{ßßã¤EI‚Åt¢}>¹õ;k¤”ØpU”»'¦‹y h+~ŸCtä›×‚}€D~>ŒÓ¦jÐðœ{>v×`åzàáz¥ø­Ø×Z´»™ ´Ü¥Žã!À2Ä…p…°ìw‡Ï=yòOû5³èšÃDrG†yÇ~oGï9s¿ àA© XB:d© g{]4“E‘ˆ]ËgW¡<Ó°\.Ÿ<ñŽdN°VUP›Z閭Ó7 dUÙ8í¼G8¯. œ\Ø"­Ï«§ÃÛ®jù’‡ËŽûV&âÚà Ö«ÜU¯'í%ØR¶}‚͸•ÝxësU"\)~õ’€YØ1ñå Šä®~Ž»ân¨Mž‡µë ]< jê°zÐJ ¸^h“´Æ‹-lVÖÞ Å9GRNUú;xS oY-–ŽÿÛCï°0Þ!›1Z'r<®ÈÏæ³TÙb ú·Ÿ½ÎZ¶‘1ZßûYà»F0æŽÛCÑ’€õ® صåWZ~ÇGÙãµñ4“oðLL|`[S’·C1h¹¹@¡f5¨0Í4æa¬»C6¯ÊŠÐÈ÷b•MÈömhÕÌ¥¯f4êh½×â’eöK¬™4 ¿ dYŸöìŒçÓUñ…©ë ²1’l ³±`8 Ù†$8g›èôô€R/2yÆŠ¸ï…âjp‹5`¦ÆLYçÚºjtÕeÝäß±6p çõ߇ešI…®4MV|²ŠÔúÕìQ¹TæB¹)QÂÕ+ °&ÁÁÉÐЄ ³À{™´©ŒŽ6ÀöÔô¾\«½Fܨ.ú}9À“IEŒ«pÑÄP]֢꺠c•@š‰W7”"ñïEåK¼'ÒðŠQ¯ç¬»ÎÄ=óÈ& ˜n­[è­?×Ã^mníÙJJW%tP$I§˜•‚²è f¡¨AóªAø.×ù°2aÄȰŸ[±C{<¼hþü· Éb"{žfdN‰øw>ãΚý²³ Ú#¤}¦ˆÈœ¡©g<Ç öœã"4<¥ì¬*‹ÓºgŽéŠ;fÔãdí’fì©8EIÑ ƒŒqGSÌ^M)‚ i².%dhu‹Q†"Ïi8C6p‹I~ Z ûTVæËWKM«Ðw5¡ÐØA±ö[šT.jBîwJ+¶uYòßiËe¯°-”ñók‚ïYxÈÂyŠp`!CÓE< ¡/0’ípäHø49pˆX aƒ­P¢Dç«G#â=¦Ã¦ j¼`&‚M4"Œ9åˆf2ÑÒS¾4)ᑃAeWº´bˆIwç\ì*vˆ-=ïnfá]àùõzå~2„üWôýÙí¿7¨à^Øa¦øm´:¤÷u%ëJXÎYS&`#E«Ç=‚ ûºÐâY«Rœ»¶sèTÕi¹°{²·)}î}ŸC kQU[Š'ù/‹:ÁSœ'¾ŸYÝÞ6‚˜+ÿéF=ŒŒ#æc…õ¬˜ºZ¼ÕÆ#ø¤¯k:F† ßê¥ÝáØLlªÞ>“rðVöÒð HÐL>ßþã³)W:ÜlÛY¹ô"ãá Ÿnã4ÄwÞG¦ ãËPMÔ̦…]ò±ºZP[ì9¾S•Œr,Ƥ¹4/ ¼Ö>´<1 õ´‰j³QÐÕjªé¢æt⦅Á²›øZAqŠy‘@Ÿ‡f(¢:ýØ^äÀžö¤ÇŠ.PZŽ-ajêm >­ Duè —¹@~z–fM¿Ûõ³‘¹)·Wj—ÿ¿ì®w‰¼ÄéÈ-¸¡ËL{Ê Â(Wá2]M])ØLÅaVžŠ¯/üRúŽžCe·þsQ¸Â=óæf!uû¹Ð²ˆÃC.‚ƒÕ`“ Í1»,aP*rÆ1Q @ž–sã7Ñß÷B[Ñ'óædªÜ™à»Éñ‹€é&À\ǰ¼¬Šå¦Bd-Xþ,9iW‘ââB]i¢—ÄõÖouíT”–S6'kp´{ÒP{¯c`ºÐs!N‘°²vùì¶ÙÜ„­Uê3Ó[×€OÝŠ«Ùí`MË ž^El¯Ä.Ðt“\Vs+Ià‘O@^|w3AIý÷V'„÷O.Ò¹Ú^<¿ü(Á¸ªeW±fþgX$Õ·ÚE.5OX-òñrD+‚”²ØLU´¯q;>I”YeM†”]" \IAg`¸msj…Òòá±2% ’é¹0y7ªc9uhò‰ˆÁ ÆÖz[_ï3î\êÇ© lú/AŠÇSÏ müز¢<±•$ù ˆÖ õÿh7K«mƒà¶(ÏÈÁ/möFáõ( $ž’²Õ^ºM™+Ó!”FS‚æÊçV%0(U{… Üxav¯Dñ#$.Hgaßµ'R>1ŒƒSh{ÅÃ9lÌ>ÇfÌ%¼=ÜC&{¼~ûÂUù °Ô û~ÉŽíý3±ê/6Å7Vœ–ï5ÙgR¯Ÿf'%›\NvQõS;7›ÑC.söF4¡J{LÚÈó%5i¼lØåE4æöÄF£hs£L2¦ øV•Æ Aé}b(ê–Ÿçá½Ú?“NõIä¾3Ü7ézŒ+ÒÉëXÃ$îêÉþó{} .™4È^­o%®øSп·±÷¼|r;n[ ¼©y†>ÊıQª ŽÊ>‘gp²&¥mMõÖ¥™b„S Aì¡Õ:Nw¹ñáº{v6øO§™®êÙi™#FKìg÷®ø Ýãv<è+3;/þ­Dî¸è%‰óz ôp!D @ ’ü06Ÿ¹v|r ]7w3ér>ñàƒÄ°ã´Äž:`ƒƒlõÅy'·{S4;“XÚõ££ó¬k¦žˆ^PSƒ‹Ôͼ˜ãð#Õ³¹áÏ'Œ‡ „ûqÂjU…ŒV“nsbÝ‹6¯÷æ¿ëñßAExÃÃèyÇW½ˆ3,Ei_ΞÒwëq#>,Âü¶1'¦î–ѦLú& iÂPÆ”qª”ƒ”¸ À&Ä•¨óŒÍÙe{ÊØ RÌÅìá3> °y‚Ç"]#q¹k2ì¸OÔ¢Žôò¬‚›Ùk þ—^©}°ƒiš*u«2„XÉE†Ü-§Ì¾Á)ïU½°¢FâŠo=±~p)€|²% 5óý8 æàÿ75 z[=ÏÛ¾S°j(L%m19ß|9’¾.y—4$ðŽ/xÛ‚iIe1¶QN®ÒôÛÔˆý¥bºpt; ÛAé1‡µú|­¾ãн½6ƒÚp3ž>͆qA“Ù …\ž•̳&8¥iØM—o\÷ÍÅâ\ xPåR—¿™³hœÛ‰hñ;ÚržcãÊmÞ…ó§òjšžwÎÀÿ¯&Y’SÒ}ÉÚæ/5'¢’\²ŸÝ:?Ár÷Ä–zÅ1å6—{B˜Ï¦“чPûKÁ 5A?Úxª9ƒR›Ï§Gmu±Ò'ÑBšê|!„t!0ŠEÖíÏ)Ã@Õ¹ÙÙHÁò…ÚàwÝx.0ÉjÇv%<þï&h¬®_AUq¼ZØmTí{QûÉ,ëåò”»†O$³_ý\0í¿~µÅï¼A=O¿…ÙR aÂÝyØH$„4ƒYƒ68›Ü>&’  T¥MÀ¡s“õkfÔ˜á3Ì tEØü~US³ŸÀ¸\êf˜fj¹¬Mƒ +%º^úåìPÂ*…`c<*ïl¿œƒ+‡Ï ±bÊ¢`/ÉÖ(V:•^Rо^Á̇9\á<’C’¹)Õ‹¬¯X¿²XßB‚³ŠR(¤úUï‰þbô 8¤`Àñl5®ð™fד!àÀZ—«^b*NqÛȱÉ\ÑBŠÂ0 {[ãß©H¤^¥6,çÉϯXú8õ/Q#P³Ù,øŠw(R‰KÔ^£m ) Ô‰)DŠQJI§¤‰r†±L “ å:–žô—Ëã6¢’…À¡sûÜzäR’gW'–ÀÛ”çI3¬Oþáíœúe6.ÙYÇÏc2׸?ù”èØât2äJ)º²Ñï”Y'8¤’ŠJ)u%”¥ ¤¥%)))H’‰I% 1)e(¥(#0͸5ÌãZjŽF%$ËQLêÉsÖ,™ÒaP¢‰ŽÈ^™¤àÔmã ÀÀ“%–X^¹bå–7õfX£ ‰r¹B”Lu )DR—)fŒJz+Ö¡z‰=ª‚ÉLÒ‘z—%$,”F%Œt¤2ÔÀ°À¤À¡rŒf2Ì*I™2Ù¶$™”%“aQ±¨S .a2׬ǘġbäÒ¯r‰ãË&µ1‹0± @„…‡ŽˆªÅéo,óÌ­ º°ezgqÌs? Ác:ÔË›YI¡P¼ ÝK&Æ£×,¥”¥(”‰À)e”‚”J(’””¤J(¥( ‹ØRÁ(”)B’IF±²º£ngØOñP¹B%(R‚”¢’R‰H¤"kŒÔ²95;œ‚†¢Ò4û¶Fƒ²¨ŸŽÉá¹2¢'pl5 ¤¼’Ãrã¾ì*™¶þs:/ø`Ï÷Ä;%)iö^’öƒ¤9n®k`IŠÕV^­‹ç/ÒÔvõÄ1Öz!Z*mÄÍX mPnÍ…ÿœom&kz¹$N2ÄvR™}‡Ù™ƒðÔ¹?—Ý6…ˆüEð! (-È‘ø§$È$.(½îúz×[²\‹ì´mC|¹¼XãǧzFß²CW5`|ÃwÇMMOº¦‰c´hYÃÁü‘.ݦÂx¯±D—ÂpM‰:NÀ°çý<ň¿•üYDŠ í–Å‘Fe þ71åÃ"ðÊëNÙª~ILpÃ39tÈ´`b3¢ ¦€]#š ë™WyxiËï±à³¾¨{¦BÃrh]i§u@(¤ÄÁ€©dàA'ÁQ¥Q‚dFð™jX¢Ri”þb‚²L¦³'nrµyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ4þ=ºàÉÏo»î=Ôïo¾··Ñ½õÇ®ÎvÕöž¤Ý×=×Þkwz÷kšlÎîÍku¾½ÖW­»µ¾"¤ÐÓIšM#FAèOBÄõ0jdÕ?%?Iá2i¦6 mbdõjž'ªj{LCLŠyé10Lš4É£F0©øÈOMš`ÓM4€4j¡%OÓh›MdÄɆŠx?§ ©úa3Q€14žš5O2a4i©²§íbž©ø©þ©úbOMGˆ˜ÐÉ=€&Ð!²LMb4ô&)“M„dÉ•¨Š{ LÔÚ1= ”ý4&©±4ÄɆ‘êd1MObOOCMMOО¡ “Mjl”Ÿ„Âj~¦˜‚ŸêmE?SÍOB§²zSÉ0Ê=LOLShÊ~©èžSÂjx¨U 4§ª{& 24™2lŒA dÂ4¦É j` …OG“i)øBži€Sb“à “hÂdÓI¶’xI¶‰£&¥6Œ”ôÉ©âdPŠ¤Ù 2jz›###Mf©ú§”õ3FŠ0M<£4ÉêšfLž&ÓTÙM3SÚ@Ô=zh™<™M=1M”ò™3)ƒmG¢ž§©úSžy4'§ª~¡¢ $¡Ñ1¢žSÒi´ÚŠ~*z›5G餞)ž‚mSô›L¤Âx†MOSc&šò6”ð£dÔôÓÔõÐÔõOSÀ¦bjxýFSÔôñLbȦÉ™G“SÓ µMèSp8ÈÓäðõBˆËŒ8(Œ§a×ÁÞè)2½ˆ(B b4‰‚#ÍñÁ ŒTIw=éFnΩÛ*H ¸Œ@Áq† ™r HAðø¶=œ×F/×ãiì>ë-a;?4뢶ˆQÑ[OöO pì5`ZÍúéšvÝ&ö²;¼ Î&ñn­‰ÃsKÔ¡Ö†ùŠ`QK åßsLEÙQÌXo¿nyã|®Ir_òŽäk —•Ú*|x¼<*‰õ#kwY ùðk þªh·Kµ¤ì©©)s`µíQ8·„@‰ã½ÄÞ"oûËðÅÛ’Ú8ù~k @Õ?Þ¾¦:;n.‡’oÑ’SËø…)ßGY‡Õ•YôL~gA5¤¼&¢C©‰Âik±ú\ÍV§#1gØôït×þë_\þý}˜Ÿ†ðÖ¦‘L!€@ [ãÅ¿xêw¬õòp’`éâ9$! ‡@B qJ 6"Ô x „0ÂKl£HC†"Äᘈ=z8gAÁ®^BšñBãˆT!$Ã!øô&‡‚ ¡„/$Cñ=-FŒpˆ`ã´T‚Ò8(Çãò<ˆYóšlqð+`ÉHN?Èâ c°_!’Hä ’]s”8’$„ ÄdIŸHVRë’Ú Z6C|m€%öŒ$`uc€$B©Óoì|÷ÆÏ3í¼HI+“c¹ix^3~Á$!„ÅäI0“ c$žÔ3†KÜ|#áö%Å;«Õë óØô¡C1}ÊEýØÝ¶žÐ.dÀávÚ\,oéÕ:¶åw Œ¸úLšaIà>£¼äÍã ˜@3LÂfHfoHì²@ñ ÂÆ@9ã s$.f¶Ð˜±Ç?3ýžž 6íТ(X ÍŽfʳ³ÎãNöêáÄh8ý9Ý–ÓQg²ê¸rãêr<"™‰˜nþÓ"ø¿zn'yØxŒÌ‹B×¢×ðw|ˆRvZÙÌzb>(ˆ÷ l¤8öôŸ×ôdü|fOœò4Õ}nö±N8Ì(fU‡áþ¢RLjI-ˆ¯Ï‚ÞlN ›LØRÛþ#²àvŽmŒqA¤5¤–•®fÂÕµ»ÿäyõâDÒÓ t°W˜ªêl(K ðÇÂŒ¯Èvì3ZÉó&A¸,15öèЃS—ÇVU5z~9> ¢VáU’ÀPQL^ñ ¹þªh3w¨Óñçœd°OM9ìá†âŸå»TYèw/v=íL9tÝSùOL7bJÆò“’6Ò®aù°‘uZÒf&Ú+[Ü;‹ ïÔI .[œWæÄÌÏk‰Àp ¢R§b!¨“ì¼òVÖ\ª™äjA¤±¾)ãcÒœ#}ð°g¯ØÌ±÷+&<îwÝ©7X½pðá DÓŠ$OðŠOÚXdiuò%¡Hõ%ÁsÊ>@Ú sÆü[ÉÅì&ã$¹Ù]î@Îy¤R4ÙoBWI¶ÿa+5áÇn:¶ @‚´ðæ¥èÊ.£€\(ôúµºÝÀ©P¦*ö=Îýæ•”þ#xgÉu‘†«¢5Çì5šŸÐ57…šÌÇQkò¬÷RèLwÓÈ—B÷w]×P¿—ú_3Œ÷×%Èõhøá[¨@c0ÄÿÊ)á»[àùuÁQ©=¼†4*¨ïuOÉY«±Ô ô˜§öC]güÉ™HŸ@GÌ#ŠÁ>Â'ØŽd…odý’£ Ü´3 ½—ä`>fH™a=bÒÈ7,–Ýó­€è°#Ê9r˜[ƽw#¾Âè0”ƒ$¯–ÿÝWAŠ£ØNvAø}ǺÉ´.O¢M¦3ô, fsw˜k×±rX“E`_Ä_hÎ+ôÝöµ+)áÆ‰‘ Ⴝ%̰<;kùùØIØ$c.lºû"¤‡=£æsþµ¶#]5Æâ¯]ÑŠ»Í4ä÷Í´¯-±fZì'#oþP`l~S?6s+‚W¥Ý—>†ø°Ëå>†ŽçxéE¶T_¦@öbDm§ú7¾ ÃvÒÕ‹ê]©œ Ymë¸ê gŸ¬,JrÞq‡O îLuT42yäºß³ô}¬2©óîGóFª $åÊ뜛C ‡ñ»ŒYeTÿ@WeBAX&‰0ºfcëÒ㶺bVjmýYU OqÉ»°¿tÆÃ- ³ë>K&` Hœ‰”!]¯,?¸ú¿ r„ÜiŒX2!å&·äWT˜›KÀÿ¸ì@5kò6Ê:[Y•C®iù,Ûµ¾LRIzЪø»-Ç‹¡¬ùeß#¶ö8Íò«¼¤”9˜8¯¿Eª$Ï ¥ŒqæMl™"‰ýäbÈ5†{yýö—'åÀÜ]`Á ×Ü) èKq ;¡ÖY¥ñn‘9}¥O(œ¥ñ-–Ñ»Œ} ²v;˵Ý?{AË£¤³Îº(3¹niÂ^G0rFs'eS¶;Ÿª#/ aÇÊ­Ó.SæÃd¿Jû¨8姦¡ÿñcVaX’°O ;P’Õ°[¯éùsa^(_<žªÏ¦N¿dÇŠ°ÑæÇà‚D§¥¾côÇ0ã– k'1\0û ‹á,Q„´€† Ô×Lg¢þÒƒí-¡ÙÀ_ºû%MÔÕUrDSôBœˆ¿ñH7ìã>Z´$· 8ܸØõ¼òÖr¹_Ã…|Î(ßQ"©¿Êbˆ›†ÍZŒHÌdµÇÛ!ñÝv¶·:X³E+ Ìc2R¼ù/z«T±Òª¨¯ä¼W µ2©³!¾«0DÚ C° ²ü¢<¾£Œ2—NEBáÆ4 Lþý… ‘}®R÷óçt—½å¥Â¿x2v•½b¸hûŽ~è>,ªë¹úsÕ¸}<õ$ú Zþ‹MYÏ4ÔõdK^+™£ÉÙnÞR ˜WW‡úD·Ì”›ã+Ú- Y7–”:üŠúŽƒ–É¿]R²/[M³­g’÷à”ò(º~¶7pƼÞÞbVÿ“é×_y«ø$QwUE„&—bg£ÝÌL*°M£¬öU¨‡hy€Š€)gi4»ˆÁdÜgë‡?iè® ƒX~žRÀµ¶^`‘À¿ðSæ!@GÂÂÕqDÕ.©Þe9ßKì¸löN%{_é;K¯<>-©Î’°xŸl¹Eý7Á.®ÕÙj’Û}מ½l¼†^æw/yS[|iZ|×¢ecžò†^È—|p*$ÏfcÜè…‚ÎE^›Í-ÄU‘Œ0ª‰!vjF´• ºµ#%+SN÷šŒKkºì Æšìêi@ìJŽ{ ½ZÇoâDåbŸËÄ‹¸¬ÍÊSEߤº«6ŒQåàó;)– –z§^&KÚœIÀÛmÖ]aLt“a%Ш´G–÷ôáwÒ;“§Ê0)×Énê,cÎìiÿHoÐûäd`{°¥z[Vd,ñá;£’tÇÎ 4_ÑK©Sê:ߺ¿¸³¾K¸ã0áã÷áé&u Á'î˜ÈhêG¢”Ïib½¹wÒ¬RnÛ/&C_qX¸a0ÿeH=` C?ˆrÈ´üLå—}ãCe‚#ÜkVöï!ÃÂÙ«d„½„)þ{8Y5O¯åHÑ)ãŒk¯e.¸Ï¯|Ì"WSµËQ„8ûAþçºe ± :]lôˆ–““J›àÓð¸ø¶ <þ¢Ùæ×oâ™ ÅÐæ·“qr¦Äa«â¯¾n×͇z›%©[‚Kñçýf,Ze "N¼Ék¶Ä÷t4âÛíâSÓ‹—wö]ìÌú4réîMãï†ýrB¬=½5b¢tpÂá8A)BÎzbûíE÷žOZz¶ËX›J•R;—ªUÖKìþI>x½1+œ!ëHðK颓)]½EC\FM®ÖK–nB>V2«<¹ní5ëþ2ßãK¤«v$æyÄ›Ö×ê·„ÇÄž<‚þû¡3_ÌVûû²RÊ¥™-ÜÛü´¦Ž·oW†CPÔ?˜¸ÕÚ[\¤¨MÇØâæö·êðˆVD]³vfþ»eÀvª{Àµ´ŽšõYuŒ€¢\H™Fƒü¨ä¥ƒÞÓ/Z@‘=iÑa‘–ÓÇ8edB=×y†*}ØŸ* ef=7/Ò9fóòcR Ýwú%¦*Me:h,ÜšÑùÞ:é])iº šJm‰´–h²<* +xþÙÐèòÜ:ÛØ¨ðH!ߎ6Ím* ¶­•0˜þÎ?NóLÍUQÓè:³üfüU»Xµòv÷ËjH³ê±BóµºùýfzODÉò‚rM–C§œµ|ðÙ=ÜH·’ᬶÄOCÁ¬Ò¶Ë!^À[”Wæ‹È’«q‹¶ùžÿÚ±ò+fek/û#0ÁÑn{}1Ó:3\~-xÛBw´®Lîk¨˜êîÞ[οD+îú[EÆ„^‚—Ì$q½®ð„c? ÷3×o!:%nª`â‹sÞÇRkfmžpm )(8jZÌó+ϵmE+EÀïl Á„9¤åÏMf ‚ÊBÜmâ’¼ê˱ÿÂA_ú©u$Ö;öªA  –Ôù¿;Ï.„ú¡¾ƒ çºÉµÖŽØÓûŸ¿¥‚V5—+f‡Ùí¦>Ý5ì-Ƨ8'ëVã©‹ÖýÓ(aRÓ;·kX‰_$l¯á¿á"£$å´1)À@{,U¶œ~¤ã?i V3;o®ØWZÃ7.ìÔ>MÞ´ÿßSø>O–¶®Z O»¹¨Ö* áö“¤Õ>ÆwJ1±à |sZ/*™%‡`.¬ÖŸ6¿™>UVKñþÂÝq¤jÑr”¾ê¼õ—¹P¢œÂƒkô².LØú'µ¯Ìð.â§ðcWZM±Áˆ/•‡8í̘ÄdŒm–d†½r~¿îwþqJè_Çã 0»®÷ÙÌ#Ó«ú²Y0¶$ÞxÛ}y^wz¢Çý:+üxÌq÷¨Y¯} »¼Üê} #K;@Å»©uhW¦Ð)[X&]* ¹qu@«ñ³[“¢»²å‰o_‡yœŠ3õð‚ô3ʼâÝyŽPwY‘œe'Þs¹cäX-ëòÈï[%®eþð0ú¼UnvqàR½®f]oGpRfä5Õœºÿ¸ÎqPãç=×îëEDý 10&/„ˆ œ\Ò#9yŸ&eW%š2ò©vØÔ©µMÔ\~D™©Ç¾jË©Eå¼à8.í¬bUÍ=jd€D[°fõåõ\]8ó(¸'Bó‚ zs2•ö9ã0nØÝv4M <ŠÍ߈ëÐIˬXw=‡ßᬠïF¾¾“C¬¸>þ:m=Ø-ÛáÈ9¿…H˜— úºï—»žÁy×ÍÖ“RÿÌêÀ&àÛíªbîd‡†ŠF š¯Ñ—ºö=^& š“p9w8Ì÷¬jxï1ÈïM@¼ºfö”’ŠÑ~+±˜ûÀFý[áNò„énůS #ãW ÛByÇ¿|Ñët98^¤­u~ h÷þº"Ê+ùw/Õ¦(î“ÀOÂõþÛ]¯‘¡“âv%±¦O\â&@`Ã^Ε$KØ—¼\ì¯d&ÏÚp²¡’Ä}*{œé™Ö8ƾT0Âêë«aÌpX£*>W‡O®±$Ìý½¤P±RþKÌåæ@p@4/ØÐøë9óPkBJÔ{ÜÞ¨Ý!€Bò»\|¥Mêä%£î•’_ mº0 €1r4nã:iý퉬í;‚=Ï žOª†-“\r‚AIP€ B Ö#ELÌã„7¤ôÖYRü48̧ÉÏ ïQdg©yq”Ý©_Ç+âì³õ^ïÏÚ#+„"qõ¼OŠêO‰ú<œ¾V‰Ò¢dzÊ4w©ø6#G¾nÜÙ¹ÜUíúZN7(öçM!<ÍŽÑ6ËiîÎm:bñM%ƒˆ+’F<~TD;yS«ÒaTgØ€î~¼¬snî{ÉO+ eUXp@÷¡MªvúNï̵chtåAW(…µ] é.!˜ͯ¨$ží—·à¸7]ÆîÎDŠ’Ù×k!µ9 *Q~ܷۜÈî^.XªÎsç ñ{&z¢õ)1[+¦ú9_ Át?­TEÒ³·.÷¥¨æd¾ªr·ŸWAÚšÚæžz‘ÝhøüצþcÁ%Ýc_´O…úv»û¼ý–Às7x·>BÐhŽ»ßËɦ•zÜúçc“…û#mV0¯ïs>Û€u­ê£0^ ra´µŸ2¯ìÕá+¾øÐáÕÀ[SÚŸü¼˜+þJˆ¼´ë øáÁàÌÏBÅ4‡Í¼#P*<ýùà ÀnKІŒy»›õ­˜L/dsN^½^ë~‰?A% aO½¬{7=v–xDpÁpSTœôq$Êcô«4’c ÿ>b»ÂŒ›•Æ\D¸Ve~©bó¯Íd\¯bâ×ϾUo® ŽbO£ò"Ô©ßÅã7V|nu–MƒQ3–·T†¾Áͦ9d§}#¤Ãû®_*Àû ¨!0#–¿V‰è™ŸÅicå4gɉ½å?Á ,ŠÛÔ|é÷fnp0+^šG;_ ð€ ×÷I$÷΢1ï#X‘·ËøzÛÙ@@÷½¦ô£~Ëwáîäå5fò‹o«óô;¯kmƒRµ‹øžRõÄ‚ÿôtÅ}ýÂÊæ‰ÆX¡ÙõAõv/O¹Öƒö‹UKf†t3•O¿Ý‹Tn7¬û §\$Œæ‡¦FÝTê—>3uB´¤ÚƒEl¦á¶umuÚó„‰Îáþ5Hßú“ÐZ¯+Îg7CwÑÎíF¢ÛvŒ7O4Xû,!*ï×XÚ§h»[&@ƒGuk¾#³­A€)Za{ßTËóO’-!jÇ+€|p¢„^¥é&Šx¾ ^ ,Sñœœ+ÚøFUª|ø}OóFºîØÊ=ïñG\’RvBmÙËe2ì:Ûû§}~=x¶£03K#' yðåòF΃ÅÚ-Ý@¦à¡Ÿûý¹çk9“£T‡S²«Zé#·XORÅ‹¯G¢®K*=å̹b_vl%Œ`öšßCŠèVÚ|Rdìö“¿(µ¸>ªÆÏ.69ÉX# Þ®wHÔcïýñ×éÖÍ%Rá‰L&–KÂȇV÷?ÒZµïÄ{Ý&WÌwD† CŒ)ØÌlòê;Žn´{óð®¤jÐÖóOþÛS€†HŸ‹Ðùº½`=÷õ‹5kéWzÞôfÌÂ<Ð]SJÓVi:”«Ââ°ó B©—Œ; ƒä1 \$CÉÕˆýUuûùEù££ÙxÜÏi÷ŒÛm½@#&§?Î9sË4*'š6ŽIzù–¥Ÿžâ˜æõd°5˜3|hb¥ü_Í€õRD6øø6j˜ä&D—ç,õ3$ídU¬`}¸ír)Ÿ`9ª®î{„ŽW7^>Aú.µkÕ‡! ¸1ˆ÷£¦ºÜ)¢ +?±é¢O±ýRö¹;ª~?›[ó|VçƒÝªz9þÞ ü2å>kP]°ÇœTµáú",ˆ#}ÇÉД¼Sµš§$¦ÒcȤ«»HBfÓì{4düÅ®­8Wü[r4¶ùT¨ ¿¥øxpÇ«å¸zßFOyïGr3QeÈ…VýPí×Ôö3q†ª©ü£zŽaÍ'¼®ú9]ùêRÔ$‘v5%k„2 ËQ§÷iŸWŸ„«”¼¸*B‡3ìïÑ Vc¯6XìºäóÞ^$Ë£…ÝŸÎ×d×>ÄwY¬zxjKÛk.­=š˜–õŽLµÝ„3_xpª££«–À‹ìT§ØHŽ=ü¼Ù!§SxIû6‰1ó}GëÅç‡=-”²½ðÛºV6^š:ïöUÔ…EÖokúhÎWÓäHzèŸm2k_ýnò辶5õ$ˆ(C÷ÇXiw¡€†ý®–KxÓÁá˜Ùr‰6]GìBBžÌå2ciÁ;g‡Àθ{ °Lï+*šÏü)úpÒ/ õÞÔ7YÀbîì’jõ^î‚\Òd@ö&â¨<•¼ð4üàè3‘© RÚq£æ|Ô]¤Ñj­~W1Sêæ?CÊèZsœ+ºÓÍÊÓn¬9Q­;rx¶oåù9DtŽkG«áÂÄ:oûqãÈaw:ýciúõtM´ç„›u'AÁmQŒ¶u¥RzÏŽt¹$jš/M{Y &/=²T)–%Y ·9ì^AÊ9"1Ò &+Ëò8ÑíÜ lå8•$7ðìyÇbÞx>JŽåüJõ0¶áR”¨Éëüj-ßYŸ±Yˆ¹&“ûµUñ<±“û·9 Ñ/ìe?á{…ÜeD!výAÄ3¼$ÂRÆY¤Óêé…’è=«\N|U±Þ 0Ûï¬W±]Ÿ€S+²#üý칇ÔQ|?õmœ%¾&EëÚþroFƱ½U­£0‡nû‰ª?ãuƒÝšrÖ¤N š^tcó´æoÍ*ä߀dd²ødžÝvY³ÄÇb½ ®Ö×t&í$fáræaä†ÉÝœ+œa ”9m˦ۈ’úz_?ñæÃ-ÊV½©ã–¾Ìå7ïe¹<¡W@^Eöixš±“÷NhÉ b“ŠV$ïp;ÈL GÉJnFº"©ììø¡³ÅR^·öóЄ¦o/Q( ëWbÊËv~è,˜lz^CŠlÉÖR¬Ì­Ï`¾%ŽóûZ scö(sÓÓ¡Á(¤z {a²›áè($#ûl,åU¦æ%ŒÎŠâ¥g¶îû½”T§Àï|ä!y1³‡ïò5í\áxø)âÑ]Ó›ßÎc2€”šÝ‘Q…‡ú!4‘6‘ó¼]ñœwÝõ,ýþWŽdÌÝ<ÒLÔy”q¿Ç…Ñ0ÉÍžÆÝ+nÁÆxèÑç‡à¹=¨f˜Ë‡R=IܧUFú_’u¡d|%>Þ%x©ÍìK(­+âÔ0 ¹mþÌ«L;¾!î=ŽRý·As„”ÎB;†cMÐj'‚0RÄ™ÖUÇÞó¢æÃ'x9¸UH|4>œÚx¤Ýõ>>l}U-¼œfÕaqñsÙObÙ›oÙ±ØAêì\v>ÿ'ßÚÙú´<`iÕÁ£¨šRÛ‘ôÔÍ%ÂâC' ÝQ›rƉr.,ÁäÖ³±Æçl‡bå®@w'þJgܱÊYY>o³ÜÄ’Žæ¨«²Å>]ñ´…×@Kß¶Ð*ïŸNÜPÞùߎ¾tëäô¹gˆu‘TOöÞ.v¨z žþa(1oqÔ2t£5Œ)»þÜ <ùBQRÑÕmš‡ýhÐ_òù#ÂÁóÅN°ç'0ª±E“êiÖZæ‡94.Oè6¡ÒHum(Þ}øw¿É¼¶ú»/ƒתŽ­³ÛWx\Ü`H±ºÆ¸ž`ó}Í>dÒp8O£kèjs\ þ®íȤJŸÉŒþ¨ö±Ö®x¿/¾ÎGÍ?Òi\^;²ÕÔ·0Ý‘¡"¾†d¯¦Û„jÛ–vÖ/'ZÖöc—rQênê7ˆ7`zð jÙD¡æ8SB}fl_)Õ2±£‰ÖþßSù"gqð}—Hùëq IBïQ6»€p¿¹ç\h·)UÞf=N.Ò(wMËXŒÕœ}ûWøt÷ž%öPVÃ÷[Þ¥R«ÜÚG•ék¼D©—ÐÚOÏfÓg¯É½ãÔ]ÜBÀà*P F‹ ÿ"—NùQ—ÎëÞÆqmÂSØ"ƒ!Q’½+UÍ™ì7}g?ÐKáÜ@ª÷D•·…8ü\/ ïkg—³§w)¾w ¾ã¬ÒÉùÄáh˜N”Õ»%`!˜(-Av˜Éudnò³Ž¿´:·•Ū8k–t+ÛŽk»OS"Hº†Lë³¥¨$ 6TآʠÊp¦Ï«WC„5´®a¹ø²+Ë %‚Ÿ[šCm‚´ü›3ÞÉI—}ZíVÎáʆr—‡3Æ«½È>¡–bý0ëÏ÷mÀ ‹Mê89édã2çŽÔ;ü«÷4Åb–tm`&ÓŸX~-UI Ý÷0K'Ï]¿[SŽž@aÀ.£Â‡kÒ¤›n¯MO•ÄWý†PËìàKw7¯^íη4̓ω¶2vå`¬6/O Îä({13a};¥ºR|™&®+ ’fFnì(Udv7QXžç©ïÿ l·wÏ‘+ðÕÙÍN×jûþ“¤¾ò)ÿ~NQ§¸cÏåèmö[½Gô52z:wM—Ëí­6a%Ú§R·÷†\ðDÌp•ãòYõ‹JÍõ:2ÍcsBêQu®L¬Úr–JãÁYÂôOœÃ´ñ?̽7gnîS©æoýåØ'dØvÝD†ŽçÚÛ÷='â0ÛëçE/VEn5M+î«@b‘ë`ö¹âfú'ŒÒ,ù–(.—,r?TŸAzF6š±sèÚÐXhC‰“l±•³ü®ä³×*Uvå$ÒèâĶtÔcsÒœô†ÃaQâpŒ“«wøE|hÊKÔä‡cÁÑëñgWÉóDÌ0þê˜Ø%ÿ¶ÅL°4åšÃ–›¥3³DoÌJ#ˆú=YsoÔŸ•u&¿?“oÏ{ËrŸh/sÓmM–o‚Èñ0×Û¶u¶†Ì¦Ú.ÜÅ’w—.Ÿ¶¸TI¨@·Œ†?+_Óö”¾ÜЛÑ|ë0õaXâÕˆåñW£t¶;ms6bh@%«+¼Á¾ ë\ž'`®"6Þ’õ7Fû›á¹è¦^ É…kî?]©¸#Ãy¶×ê%· àÊÇdðèSè>š„ ŸUÀ¯Q+kg÷¸]e÷7­»;¿ûæ‚÷P+Îf¹ …T0 ýZ‹yi>…/è'0ê,`îVMUhÜ~7½Kî#£¯z÷Ÿʈ}k¼å]¤â«`§äqg‹‚< 1ñ¼¦»âqR÷£–qe£cõ9\o‰ÿ~`lq±€žä¨)^”gAá§!Ó7–öÀSèÙ/ÇÏ„üéX9/e¬Яl5¥ ÔûÕ‘¹{ÌU?̾V:"«… ý7 }òô–½É3†Ÿ‹QÎ&¦/óíÜož¨2+‡¥ô­Vé%¶“´Ã‰Å)ñê¢>•G$«±#ŽãðYª×Ípý@1Aµ®¶Î²‰|ôR#%ÒqÕjÞ’ój¦d¥¾¸dWqŒÆ¿ ºXf„rõ]‡VZÒ/LÅÉ%Õ½.}G³g®é»ŒÕKöýzkHÿÞŠ>BT:–ƒd!ê(N¸?—Xž àW”Ñâñã ÁŠÄ,eXµC-ðýbE=îu…R+@5/Ë=ûJá#ª™Ç¥¯æ&ý­`Œ0+b l$%f{â³+>"{T)_¸¦)É03Þ7“xø©¬-ª.â²DôÿG½DkÖ‰6ÇT·,tSÛøK0b ?Õyƒp¼L DR ÄvCäçõ8Æ}»F_øŒÐ¤1DÞœÕ.¬Í€§úç-®Ì¢3D±“×'Ülme¼p„œÚl[™Å¡W´mK¹QVþÓ·–Xå—Ž<1Y¥ ¢Ó›q?¦‘L¥£ªa—2:–â—ˆ¤sijú§Ëo¦žÂ©1JEÒ›Á÷í•¢ ÀAá†üq¾•’'ÖÄ{÷%áÂÌ­kï T½ÞF—EA,gRk´²­å†Få®Äî’{”Í2ÕT™¥%_´’Û– qœ´›m}»~t¡(×ö’Ÿ´Y}þãòa, Rýå)šLv´^· W›ûz›Lâ©vµ3nöáû¿ZP¼Še/%íy£àµ»ù}H…oG8'íì:hðr$|ŽàœëhwG Œ»ÊYƒ¦W—t,ås9Õ…¾YâÜjï(.¨–ôƒßøÃ£ã#õ¥ðÿf0%xHÏõlë ¹uظ›VeõâRÝ Ê;[–è–j­ltëÆ*½_ íQ1¡ð†Ãõ‹õ^ÛâIº¦»ƒx–”w,7MUps¾âbú…å} fÂø2ñ„@ @ @€ÐÑŠíµ$›QT†¢ÝUU]Mz>µ¸¯Žâ'%GAy“ï¥ek»³‚ÐÕ%¤_^ [€wX)±Ñò1vA~PÙ€ñÖ¯2@ öž•Ú­!&½šñ)Ûód®_ÛŠhú¼mšñpÝž6æ_P‘ ±Nü¸›4m’.Û@‰Ì·˜ EÀ&Z¤XØ»·ëÌQÖnï´”˜Š}¾·/eA;Ü×>ÀÅL‹`f+:4·Œ·»ÿÅÜ‘N$;>ÖÀzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.787789007 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe2.dat.0000644016037001603700000005753013607166133035021 0ustar00hutter2hutter200000000000000BZh91AY&SYP÷E2;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà'¿/zp}J!@¥Mm±¯\¯kÓïbû{_>õç¾³ïw}{}÷ϷϼöÞìl¾ò÷ÆÏ}žC»F¥u·{ÞÛ·ÝÝíÃjܦ¡¦­ºíÖs£dwVL·ZÛUݺenºíŽC•jæºùð=÷ÜE"bhÑ£F„Â0ŒFL&˜†§“…6ŒA ÐŒ™dɓё¢lFª‚'¢Sö4CL˜4 ='¦‘&OBi€T"’d4hi¦DÍL&&˜¦`Ié’fšb2e<˜&™SóS&™4ÓdÀ3MO@™¦1›@˜&ÔhdÉ‚0L§“M4ÁOF&¡¦†ÈÄÃBe<É‚§âzl‚z4SÆŒ†“@hOM4›JxÔaOÔÓMTöŒ¦i¥?I?L§€MSòSõ3!¦Tü©ø =24Éê&§°ÔÍPŠBhÉ4z`Mƒ$Úh'É£H2i3Tü†Ò§´i=4Á¦õOzL˜hÑši¤ñ 5„™æe»ŸÑÛ"uVΕ[历¼]ýX´D•Çø:Š hÉ–ê=ÛKï{ß~bŠ:Ö°]–Wõ‚§Œ]V3(äì=]ÿVðš…•š£uÀ¬Ô0UÒ1ŽÅ–Õ¹è—+ã¤ÅÉ¡w‡ @„!ìtÈÌQHâH¢%Œ0íjÈ‘Ånde“Š4n:¹óa®»4M©Šü09/Ú_´­Ÿžº[£5‹âO—”¬Q¦|WPF“°Nè ADýÓ6zž4µ‹¦+æ^ŸÒâ”ÍÚtg#vÚ=LCOz÷5_<þ{Õ¸ÉzxK+~‚|5÷ ¿žu6ÃÜàm*pÔJÑU[ÁR‹ZeL²È#¢”_¸Ç„ËšÐi~møP&)ètÎrˆ}™ðûh)ioYÂF$ b) QSÚV‰pµúVGW᱇&³1p4 šxÁsI­,ãñÚ>w€¤ï\A^XûXÑä²ü˜{Ðú"«Z0ì§t.f?ëz¬lÔ¸oßb(Ú/Θk¤h7ì]ÃT7Ž4LÛsZ,˜q]Sµk–ЪÚ'Ú²bÁ¿Y‹HûF±«\P½1 %sì‡pVd²ðGß›ô†”D'Éh>–‘QÁ‡.P™)hÂÕ• ªCJ|GëÑ,‡±_)ƒŒŽ¶PK’±å‘ t,·o’:Û‘Á胎Âõý¦÷Æ• ¼ù1+ìH’a~T$GãY*RÚa®§âD±fêluN¿À:Ÿ–†ÈIN2eÌîOXû÷uYdf'´ !ˆI-…»VB¯ €\Q„8äWPÜ¡I‚œ1á׊5Ö6_ õõw…4Q/“•Oùû/¸.e¯n1^(õëÂÖÀLxqÞÂ×Õñ+šX¾DÔ?a$^¦46B Œn øvµÞÿÙ¥Ôšš<Òï.ܳû5kÌÛH*¥þæ¡Ô…é-‰|õwXNï8Ò¡Œ:ÇhA\ì#Ï' åRŒØ$^ÌÂDjåï‡ò—ëK¾HCL>o+29H#ò”e ÒÉÉøI«â#‡{,9ÝkñŽ‚¢Fã«*“…-9”p£YåN£6¡ëÓÑzxï~=p§Rê(TkQZPï˜õBáimÑ™CgàŸ3Ê+{Ç¥Œ}Ïiy"]Ay|¦·ÂikMìøQ?Äb\&ª*Üý8”œ±$â–¤0-Áã]£OÁbá/ô“GR˜$!XäÇ·×ï%Ç¢ Ï£¶Þuo!O>SxÐ5åqÜv¶2æ×K™^©ùÙÞ\eò¦ö]ѲÐÒ]uSóLWGÚ¬<êLM6®Š³}³$¡ð è0˜(…&8ŒÀ¡(KV+v‡H%¥ŸaƒÀC 1d1ãMôàÌš bþ®Æ§aŽ1Úo‹BÜZmÒ!ë ðßÎ<ƒ Oä}Qøi%! *Y<ÔyuùTÔ¿î(%’,!¼Ô³^¢<üØóã„) xÐåš+¾ ‚áà „Æ®£d­ödê ;^ôe£EXlzlnAìÀ)аbb[éwf/г KµÜ Q#(¿š•ªôW^"ù s¢÷K·âì±Ma¼lÙ%:†ÒC©Œˆ¡²qÅUìjào] ÷‹úŒM;ì;E-¡ ª™ŸÄ2P‘ˆ®òlp[¨å^r/IšŠŽ“²š6[súú71N® Ž ×FæÓRu¢fýjú7 +H°±@5‚gÝô¹¾l‡ïÄ &¶Vó }[HòQú&˜À€w¯ ÃáìÇ'}ÌðìÝoö~?fSXøK¬ ÑZ%ÆÍœš´î;tÔßøŸ&³èMYØR=£iB#ƾ~¯öF¿íg]p-;åQÄA@ ú©P̉u’‡‘bëSuÐøt–ºªn¹Ùà̲74b ÏŽ#œuê.Û¦³ôñ}k?‚΀N õ×NFÊËõãÑáUo¼ª~-O›Ãü¦³6¹w§ðÇ%,Ámî™§%&"Æ"™"GÀ«¤»ffDÓµ’3!Ô)´rìqOͼ¸·Áq¶ÿÓP¨N.w°.A _‡ÊûæDØry¼Nêq§Â_7Lí i?Æ™»§Ì"3AÌ×€Âbü9<²¨$9ŒR "1uV„c®®Fšëñc‚‹ëwÔ2ŠL'ÇÀ mÏFñåß³”Ý.R8[0êFe}ÿF†‚çûzìïÈÑðy¥M·ž¶ù.?Ö²åu³êö7Ýá)”ø ±ÓJ9Œ]KB 5@¼­ú{šI…›S៎H,&->PÙJTjd¯¨ˆ)Œ8'W}4žŠMTz»m²üýf«àðw{lEf‚ŸüŠ_r ÈÚŠ’,.†¿³‰íó_ÜݪuI{g¬ì äPR¤™ïOb麓ՠòX õ„=åÌF}Xœº…iÀ1ÙQÏÝŸNzZí_âàöÉ%Ë`%ß4”€ƒdÚI´6´›I ´Wrõ½ Þßde;#_âå:9Œ&kÑâêóų9³u¹µæä©,Óã1,e…8Á,}\Ó¸òŽ|‡î4x‡?™Ufn,O3‰1xQ–3cDˆDQœm6e9ÛwZ"ù $áyW``ݸÉGùcÑèìò_»—Í=–¦äøø‹J¯cc Íy}÷®#]ћ͉8aÔŠí¦6|b„½v'•ÕÔC&böýïôT»d …˜†Â(€âÈ ö!'Õ«qF &Ÿ„AæÔñ0•åÄo!`û^g©þ¿¾r?^S@`æ{f1|Ðçk-̀̃<9`¸8CƒðX⹸=?†ˆÕUŠ(ÂbòÚÔþìäç]Qô;ú“oÍ©½‰LtÔUXi”ÐáYBÀ¡ÄµËÿeÄëPŽ0ªÏ S~Ñ6CäØÊ5¶C’}KžPˆÏfl‹oâÚ"MK}öï #Imƒª±¡û÷†[ŠEÀ¸›iÿRš/õUŸ.3ìq3½nÓÙ¼Øað9¼"æ–›…Éë¼OÐÖú=ñYÇyþ”³"¡µõfiF#(4`»ñŸn‡ÍŸÖ úæ"Ó3(qò‹Û€rl¾(®ŽB =Ù+Q­EF¸dÊEa î[xqyåYlÆÐj(Ý›œ7¨J'ž’ÙOy´uj`Vó´E\Üž1žZ3üæÖH°P‡ƒ]²9k·ß(MÖx@Nø^HÀ …å 1žÔ4 Ï«Å%KÄ‚…9ÉÞ5¿šü¨¿LÓ—ñK% ½ž bQà Ìãä´S>þ÷îXpnòú 8"KYóÜÊ Úü¬S0õ懧vŽàyÿ¿×2â¡­ØÓÜŸô5xÿ¹³’ÃóEÙJY?E;’É.k Ó뢖¦à7²8Ñ£'j‰„£¸®Òªu>M…ëØð 4üZ `µd„Eó¢Ã¨ùö€»2ÓÍ»Œö–x;Ú8×´0Ô7x20„º$èQ¤e«÷í´À(#Íjbã „JšWôkö\gš+¿8Þ··SnØy¬A8ˆŠK`9ˆ6‚„Zh峯3uê=)ä§ô ²†bFÝÝ„^3ì|g·‡•2ƒʘ Ë5 ‘p¦…5tWîl ò^½•Ž;È* ——4pß)­ìŽýä銨\Ž“¡á§NU Wœ˜a{òðL I‚£œô8|Ï·B-€õún”¹>çâX äɧ‹ú@äzßcAÙ^w­»:¿+¾bø–EÎÝ—I•ùÿ’K¹#ý¡:rh¬\xò7`ó?ºª6"F¡Ëw5] b*³U%JÊvh#ƒ•Ï3ÝXÝĢؑeT”ûÂéÌÖd×û1¯€9°±¶Ì*œ‘[¥Î;‹œ¾_CØ^í°`x€ÑcÆöf…'‰-CÍr&fs/tÞ)nkF¤¹aK6J#¹•¸>†ªjn³"Ov"¡ÛãE=˜NHô[=Øãô) ÉùZ ä?+3o9{]Gäªé7dú˜Üšzüî,{Ý<+§^‚B‚Ђ„—Cgw?*•„0ö_åM½2% G{¥®ÍßM\å{FO/²¢[ØHIUox¡ÀJØŽ™.“KML¿Òoa=×þØcø¿7ƒÉÉý®»—>.Ï2VŠä#§`±%úÄïYaÀHÝùÅ>¶çfSôðhóÐó·{ XòߨþÃÂ#Y| XóÁe0QQ£q¡F¿÷Öi¦ìè=üÖ”òO-Jâÿ:³jÉrèT€˜Ñ¿4€I0n;27Ì_e•c»3È0—yÕ5^[˜NÊÖ“ê³8ú7Ìä#–@@#…èw»ºñ÷/q­·ë×Òc5'±ù~F!üªvŒ\ÿçk‰ÍÅNü8óKÔÐb…ª|tšbT\[Ã>ne?gBU9 ~/ëeó½SŠ+è3«;ìm «h°Æ4¶×´…{á^½Uhé¶•Þ3÷5™—ó àåd0žbbc>GˆÈƒÊ`ê)¼ÇÆ<’Ò^(&[jTuÍ;×Ùç0DY9UšÂ.+Ø9 ½qŽc’hd¾Û ßâ¸Ác·¾ÉDÌÖ4z“ã•w¢®W–”ýEŸžKàZÚS<¼Ë Ø0j¨˜pÊ(tÙúHwG·òq}*ꎳ5‡©O8€nZ°Ã ‚'Ãj œâÿÒV!Eç8P‰Zâ©©â÷ª‡cä×ÝÓ2AÿÓ'ÝÂäQ³)y.‘â(‹7Tô"ÖYþ«³Ýû¯ÁwçU´êNîÆ(0^•ð{íT*ÖÍdNÛ»+³ëdûUˆy›*ñ°Íqd© ØMÐhŒ!ÑE樘Z!hM&“ÖŸ½×r¬„?Ámò€ ¡®{½{TFð·q>æÉL$ÓÂJE}g½ à„)„"ƒ…łҹ‹ p¢«¯s½,)9ø±l¸¸;‘^ —ÔÂC»)}?ÓêW{þêªW}'„‚ΧW”ÇÂ7ê|PVCÚ´½V6Ò~—ORóÃé4:"ñ2‚¥½Ii†^•ÐFZu£ÆB˜™xÃØ„á\ôîy˜ôbäÿ¸ØíËXì^>¶EÀ#:¸FH̓lô!@OTqH£HW¹«Ï[è_è×ß#"ßïVŒý1ƽ(%ƒ~»Ü–!ÿ#®Ú±=_¶b›ý¦ô{i¶4wI#c bh9¨ð£xÿqy"›9˜èðp—[賈™¼ý$²Úqïõ•¿2œýŒt cAD÷æîöfvD‡ª/ÊrTø¸(3(îAW<çïoZl‡ Émrl…ÕÔW:ÌÉ ¬Ö)í¶R}È{…¦¥NTü4Ÿýè¼e Ù²ýj`À¬  º¢Ðjßr,Mã°Ab³—•Ée»9£ØÜÿi_{ºÏ6DÇ†í¥ªÐÙtwYYTzú×r£,oe,ð+Ù©›H¸ÕxJ‹;ºð½q¸!úd³!¶ú¬¡ÑXüf3- °ªH ѽ_R3#–Þ/"æñÓдð°’=û~Jj­”î«eɱ€Ñ ÙŠA"åÊÑLð(CûüçdÁÀJãùäÏOÜž:ÿe©—ϱl÷MÑ™ˆ¡Ùzìnœh ÇàúOÛDÃebÌ ÚPÇ€ŠrÀ¤ï2{Æ¥PȲ§ÇR/ŸÄ%úƒø€AágÝÓÿ·ÎFß&¿ËF   _v‰Ob×f´±i¯W®• °)op—`i¥¨Âl¼yЇ@X#[ÏÔq°Åš.4•¼Þ”âæxrI«~¹j¹ÌböižµÖs¬D Ë€{©‰†ÕþûüÀ&aµ9óG—ìP†]È 7””{~¶/çùŒL!å§øN)Ž$1ÁEfž)ØmX½ P¤ :¼‹Nœ C/£`ûšùUBIc€uôŒ.v¡ú<ôÀG™w¹»ì¡ |ü4ç§/ýŸyÏ1L4¯m-‡¾ä/;Ïú8ð «°P`%Œa$ZåÑš€ÜÌ#_ܹ§¯ðÛÀõ@0€¤å»?e¼òø–g|mºÜX}˜4àà—ê'¨`_›}é”­Çóž—yÚ°ôã#ß—šÖí¯ÄŠ/@)æ#âñöíÓÉܩơ` *ê‚$œ‹nMõdŒ/4Ú*oT¾þ®ï öö×j©ÊÁ÷"o™€%¦U%ùêöá‘Of‘0ÉæRX+ÀÞ@.ý ®Û=×S/y˳xN§å thZ„ÄÞÓó™Ê}K¸+=ÜJmÿå)‰ÖË\ßUì%ì£hùÎ|’GÍéqÜ¢älO«F^=MpfËîÂ@Ž“ýUE 5ldº€Ðˆ–ª¹©=(És÷·€z65O¤qU­R¾&:çÔÓÎÃêÈÀb¶­Q'éЫyò•1QŸþÛ`p­Ún¼×2íÜ`]ø˜ 6˜¦(PZU€kŒL}r’ªð0„m*™ï¢,D.@@é€O2À'L[Ä%»o8°dWn¨bhq±ØrâCM¢¶q¨z‚=yó4›¥Â˜~Hƒ™ím»ÉÎn:äu>ÑÕcÉ˰Ûô=î"s@€e˜%Ά¥gô_à&X84?)y"EEó/Ýn•ÐÝÔœB¨^‚DÜàå¾O‹žÆ~`Œj4ú—û,kCGç¯„Ý g®Kœ&²úgÈYghí-(ë{ŒgU-å”Pb ÝW-rzo›Cñe^ý€$ÞÒg±”® ê+Röå¼×Q.înuœï ܇FõGTª¯³P –#ý:}` Íãb@Bi[N¿ìì¤v‡¦# ’ð@÷YTø#ùsýÖ¬“_ôûŸP÷e“=u)YΊl×"« eç½zõºÑ÷Hs‡$¤IÆJ¯”‘ €G·8C çé3Ó ïËÄ®ÐÆÍàìéë¸ð›¥üÎKu}Ü3R^ø"-oJÂïkÂÕ/ß~ªÅû6€ ½'‹UŽÊ]ØøDEhÍhËl«ÄÐ+ž®ÚJšücœòýKWƒÝ9ª ÞKpm³ëy{Üd•qžÛa˜o>³_‰¢«-húÙ¼(L¶xˆtã÷ÎK‡Öê;šsþèílOÀßU®íhÛÞße–¼†™qhSÄÃ=¦‡ýÃMÓó—@oP’Ô-ÄG§â‰Éœ"pO²þJ:iÖn‡õòûg^ ŤWáWhþ3ŽJÿŒçÅÝGP–Öåõk sì,ÃU“{Þ¸Ë-!mšo718RwD)Å(áˆí°¢‘.Ñ¥ž·à÷iüÇšwÀÜ¥r<Ýb¢ùµ²¿Ø|Zu‹¬™¯{aèŒlÑiÎÑPv}ý_²Û / uÈ© c‹–QBȆ®Ï‚ƒÇ1BÌá03¸çs /ö0Ƀ /µZ ãW)3ˆ|¢/Uoþê ö{jÍxH6N}´@¸¤g$ÎÓbVÄð "—À¤4Üåþ‹¢äU=[Ü)_÷ºÇFC¼Û`$«ü¦ŽÂÉG5šDM$ y},׳ „²R21±Ã?D‡Ðþç68å!§& r±±ÝˆçÙ›†±”áflä™ Á†”ç"%2÷æ›ßžµïU~Ë3ÖaJCÇŽQaƒ!T°àÜû:mË•ðZA³e1êòñi‰Î#~¦âµú‰V–ì\îEŒîÉqË–Ÿ¨tÐ`¹%ên—m©ÃD¼/ž<®ˆ`³æz¦ßžñ!R†ÁxåqÄ,ù™M5ÑEÚB¼š“}GI·ÎÀgH­Ùü]$WNKÅÒ&±ýp2Pï•Ø+îN(õìxœwÝ>½ï‹$sŽ¢ôz+„c¢…oe©îç)§íŒW72ñ³áæ/“˜½»‘üD¹÷.4¬ò!…-³ª¨„~psá"R½âìê]«è}¾6¹íŠ^,ná†åÛåNCH 9æÝÉ<ÜÃP1LÖÓç蘑Ëa¨dºt|BÖÐH)i]Wšû¯Ì·³U[êwBf-Ž+”wÀí »} ËæÑýZ]àiïÖ^)„°¨v1Û ÞÖñý51ŒT>Vvó¤ê¿g­ï!£«y™æÑ$ãÁg¤ì)aBBS¶ !{WCôò,ynòMúièüKÔE>ÅoÒÝý¡9MwD–—òÎÈQB»Å,:áµ¹"Å{óJy„“ž˜>9Ê?›*…™²‚©á@ënð ãUKL)’ª!);b:À®Æ‚öKÉGY’?ÖwýÏìpÂì]=ºWÂãWÃ5å枺ÇÏòàºòe%õœb—ûi„íK/G¶S…ZœÎÑ¥Ädñ¬.š'‡>þšröU§¸¥îþ’G{·(îyÖ™ß:8;“Œ¿¦»FØ›²ò’8‚Ì}ŸÇt¾P¥™„Š­á a®Äѵ´Àãƒ:|ŸAq‘,ÕeÿÞ‰åæ¿òcØ©ï+`üÔlq;¥ç}st–K#¦]ÜA2*¢VÑ•ES¬”I’ ¼-nIO}Éìul1ø5TºDÎþu|ܤ*"ùUFø^9AŠÍ}/p –_EÎ?s¹–4Ó®;O3þAˆÔ›Ax3Km³•‘tåX‰¾Ü+̯”Ôq2®ÍªÐiÜ·þöÊsˆJÍ¥ãÓ._Ààïy^Wi—}?”Þ&$® Ë]žÇT<„V‰Ö$çªNÂíÑRì¤çÁ-™_Štä·˜< Y@^YÈ¥ì¬xUPþŒhI^Eö“¶¸–Àšb[rÒ 3LrÚF€Éª=š§ÂØÇ8cMÒÀ¹DLlÐÆo%?iå³Îþ;°î«•Ñ rÏBqR—wÝDzË.ø=ßÄ‹]Úg¦µ²—8î-mt˧õYEÏEFâßÕ­o®tq”ïçm¹8”âÝ”€ÖyÀŸ(%Å=õUãÔ_ÊU½Ë ÖŽ }\ÐáÙj†tÛB•KÃëô×]hu3_Sò¤‚ Ë·`ÛSÍ{GÞ¸oän­Çj̲ËÃR”9âÑž1T@7»ë nÙ åc[}ÿ+oS.µ ô”Õ‚gOù{ÎG£{ÞTà/áV˜'̤x™Lª›ô7-R"”xÑÌ0Îrƒ:3¹«ìfpƒNõLHP#woE—3 L€°ßr0ÏûäqzƒŒQRzb@ÖÑÏ*`6ç5‡!¢å;s,“‡… º2ã•W¥TŒuðÿ•Ý™¨Ý&ÚÎ=5©ßdQôDî“€Œ€Úð®j¸N°áæ×ɸ¹˜SÎ édïÀ5&K¤SÑg¥Ùã)ÎïËãŒ6ÒÜÀBkA8ߎDþŸC¤”ÎÔê4þ‹&H¢öx÷æ(]´¼D̪ÅkºIß‘ZòùûG0ú;øß/“l’ßú&XG}W6tÃõK•…}j %Š1“âW Øl³Ôæ‹«Œª¼’kú|N<Fà×þR(–<Îh'Áÿµ: ñ9¦>%u|[—Z¸ÛA̤½yXåÞÚÅ6|ˆÞL‹mç=A7ã<1©Ü<îîªñqñ.Ãî%*ô‘HÀ_óH¿-~ýcÊ$1¦P=ÛV#ü™â»­ÂÞ›¨óî M 4/*" žS!ÝOb¬G€uñö£èðÏÁ…Úª!çñ~'xê›ö½˜gbÓ>/¦GQ®³pÆ607¥¶2Ö¾qˆí—¶#3®m)ú Í_‡åtõ¿¸á=>YçÞú!SqlÀÍ<—ÇŽ “ÔO=1|ßrO„ Ó7™q#•éÔ<}çø¿·Mê'ƒÜ]æ9ð"¢k'RÖ1ëç¶çËPÁÉú-µ²`Ëu8/;k²Ëvô ¬hÎ:Œ‹C«øÖMlŒÈ¹ÛµŽæý4ù‘úJöî@ÁåEÿ«äà*U%…ÓuésÑôBËö­lã6ÜNù&0¾$ÒWŽˆ¯8Ó O*ÅO×m¯ó]PÒT‡å~ê½·©6ÔªpÒWn›¨?þ€P½4¶ÞkiÓüµ:¾åœ}{(yep’›ÍR$4 ;Oêù?œ4”‹jlžóöY3 |­í©~Ím¡xež®rXaQÖ[Œ ¥6>ŽÛ…JÜ+q ngûذ8(ˆ¾òù~kÑ jÇ5Añƽ݂RÞÀï×…Üe© E3õÚñA“ó5³örìå|˜Ý@A´Kp· Mkðx}÷ogùÙ±=}ˆÒC¶PʶýnŸŽI'‘$xå#t›¶B,wØ99å­™ËC ÓÉåÛšÝþg­a*hnžWS<Ÿ«–*5‡À ú0wÝŽLSÉ‹ÓÔÉ1C$ýƒÑC@1¦p¿Û¤µß¶Ó‹ŠÕVºÜƒl«F$\jÓÿ×y˧0g#©Ú¥ÕØ+ ðrË!÷ì1»ôœ,ÔZ¹o~¿ßß&OÙÛÄ.èΆ2ÔóÔ'ã[à™å*vcÏ\,Õ‘ÒË#/C¼Àe&[ÁγI·Öˆ€„‚ð©KÆiY×L pï`¤s2‚—t Ó'8byÅIƒ¿ !˜0퀙u&S.S¼W†¢ä¶û-ÿŠ‘Év¾x¢º‹µ ø}Ú·µ¦Îˆí8ê¸ôd8P½!¥Ì(î ˜œÆ'„c>Q·ß2l\ŸëAªÖúÓ šW_]œÊž‚ü`»:í%¥Y—?àw)é®=Ü ¤Ÿæy™4;f5¼ØÌØàÔÈúE®) `èJªtN¯ë¾=ì"„ÏÉ£~oåÃ3ø%Î=#(ɂ͔³®Ó×Ço:кÒ¢ä} —hÑH³ºÝ1FÜϾ–"]‡<ÜStÑÜO™¢UöH¥ºQÐ ’y‡à­_Ým£§€Ù9…è2p,¸4«)I‰thžcçèUë|6œÓ]üåùoª%…|Å’.$Y„„ìú8 Ü–“6Þb Ì<Ó çÕ@×.)“‹Ã[£)É÷Ъä{{u‘ ºJ”qQ©8U ùº%Â#>3’OYnù¬€Õ½MÀ6Ó%tže,-uð÷ì§ | àÇ©®™¸•|õµÜaýW»1Jó m-À:`èVÁ[£ 2'•C¯OR)ÛeÅ»9/&ǽ$¦îØæ3˜<6!ï³Ö~œY•'s€,k(L(ÍÖbZTµ‘0q_²T&Mû÷‡ôsî±Ðýè°ˆ¶Ð‚ï˜ü}Šòrd_×!­Í¸Ý—Ê«»p+¿Å–ñ¡Dv[VM4z³|5ü#aw¿ÜšX†,)r÷;^«…#ÐÝnË^‘5‡ÜÙé}¿Ê¹: ÂË‚D"t?Km›D]Õvës1‡Ò=‘Uɘѯ€]¤÷ÎFq`ùQR"”+Ö¶æ`œb;qÄóh‘ Y£¨ Æ×J`÷W €*éõú)È%,?Ò¼¶\É+xòÚÏ Q¡`¢T•ˆX wü°Ñ³fÒ:Rï»*þŒ1W,ø—’ûƒ«ä–sB&/¤'ÈÙk\¦§5ð@@á­‹æ7Ï7WhîNÉ|_ÈÅêk5mgo¿ˆÄ©ñ½~:É*öl"äRÿ&·ì_Å#Z /¡*žSü»†è¨ì…kñѱH ,ÄIs ß’SÂpµŠÖ$Ç?âs1Þþÿÿ`\Ùí?W‘ÝԴؘÅÃbwÇócbh^ú@KÄ#A^ân¡5‚Ç;g“F–xŠgfÑ%î Q°•©¯ð ¹%òŽæ*ƒk¼ˆ '6Ò¾µ†Qx6 "B¥Œ½“ÅŠ œq4˜ @<ÒH‹H„È…J I J-l `¿ÏÔÔà±s¹_wówÜË,Ø,z­âÖä?¶45=pÝZÌ2‹æ9;Z`U_gÖ0ú¹gϬ¼µ’BW[Ù>F]ô)Þ*´/\ÍC}Þ±~-]€ ¤Ê‰G²ЩIÌ5Ÿ±§¼¿yij©HMù²PÀ-Wi7ª«ÔžžðÞÔ>ûÜ‘ÈH6Ù4•B×ù îp{סÁõvçêYò÷i_îi÷ÛÝçuðÏø5¼?ùÇÛž}‚ÖjP/ÿ1AY&SY‘!Ù¸¬Òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà?;\à{}¾÷^|rûo}sÕç§½ÝzÙ¶ÝíÛ¯{¹½ÝÞÝ÷¾Ûín×zõn÷¦º½¾ïg»ÓÞ¹îuìò}íóÕßm»«TuÞ]ËÛÞ–o{w¾ÎŠ©M¦Q”òŸ¤Ì¦ §’f©êx“ôžAüÀžˆeOÂzS§êOÀ&™&žSÍ&Ê5˜©ùO5OÍM Tý5<ôÁ4eOSÙ6†‰é¦š44i“F€44RA?b`ƒ {ISôÒz& Šzž&ÐÀ›SL¦Â2›M0&О‚i &4Ó i h˜§’m12ž#!”ÌIàFT*¤Ú 4'¤Ú7¢O &M12di¡ƒF‘‚hbz˜˜ ±L4ÂjžÄiOjžj›CM¤˜ÔýOA=Biå=0ÉÍm ¦¡éG¦4!…6ÔÊDÅ'¦i©é=L™1©©ž¡´Ñ=OM&Ôõ4ÆSɤÃS4˜Ó)´Ñ¢bdž3Dm)°žš¦É„LÉ3j=@ÈÓ&&Lš h&CÄÓ4SÐÑ ©1<š)¶ À%?i©‰™i4ÈôLMOAŠx#¢dÓ ê2dhÚFˆõ~º˜ùhé×-ûOfš@½¹]@ß2?¬œn³RWnG‹Œ6œÝtÔ‹ŒM7Y5§^ó…ÐTÃEÇ«ÄkkŽ7näƒÇ™!÷æDx6æYUIìbÐÎ16*íkµ+4¿dDøìÚŸÏ»>/äQu‰ö-rÏï×½ÿ­Ñµ[­/§ýy;hk Û}˜doÄi|Te"öÐR×fCäœ%ó‚ìrpù ÄOˆb ñ<á8M"0AðVŒWÈÅž+Ä0àÕäŒÑÖŽQDˆ²b†>Xã¹(c:xa $üaI©ƒ~ÀO1¡d¬ G°‘CCµù_FÚî/1RÛªÿõ˜ãˆI)zÉ׃YŸ´<HB00\íãÃÂa0˜ Å+r¯„°Ì.[ ¥M–bå3ñB¤…-ÊJ7}Ml‹±à&äií³½îÊÄ*sªHpšôÀ8eË\Öfá’ž²ºÏæ9Œ[+_ËBŒ ,È6 ‰f©d…¶`GlÉÆIÉR2/¬!eÆ]€­:ý}èBÙ2I∱¹¬ ÂÉß9Oƒ¦äÚ'=È“rãØÑм|ù®»MÈÎç¿,ä)GÁÖi‹_»Áî°¸ô]åñ©-Æû„pÌ| %¼ãQ徎º#] Þ‡ŒæÜ?N¿¥²³êŸ¾~*í,úÌYfº  Ê8¢Œãèég-¼Küœ ÎTIÅq»ÐM~tšú[ŠíüêüªBlžÌNÚ~ÒHÈÐ{„àkŰš\Gà°¸£®§2+½RÞð›UP=Ö&2;˜Áƒ²U“ Ÿ‰ÖrD$ PWÚ¹¿Nè× ¥¿»0`-€0 Æ¤Ž†åϵp¥Ó d·ÐÔøøqÞCA{’‰„úæîÜˬ§vpMEa®Ì¢ˆúeÀN°ûI£R\;Ž5ÍæËTFÆ“D ÀYƒÂÍÕô)ýR£Ò³=n!}ž,ú÷\ I¨Ã&‹þôLqlqí 9šíúùÕÃPÉDÿÛî L.&T¸ƒ¹Òþt¾Z•OˆáT/µ)¿†uuug4~€ŽK„ ßâÅçú¦ÐÛö§w€†$›‡>eûèlªNéöú‹ôî‡Îý)lsOÞZšV 8™$"@*¸±='JøK¾ý[–‚»ìÖbœ8XÚôþß!t«Ü2;)Ám@ýfŠ»ƒÃ9˜÷³XÁ¼Xšµy0¿…ŒTT~Ðò2`ˆ³fe#å\t¸ J¢¶§Kö½ ¾“‹øfaªfú5Òvê~$¾Â»Œ…¨a3 Õ`C2H0!™$Ì%û²fI9VÊEJå=#+Ï«ÂH×Z+ÜÎáý+µS_€ÒÒ´½Ã Q¬Ý´å¼Ú%½üëQŽz`M_&6Žé!؃›âø-D·—wä8¼ŸH#Òï±9vÚVƒiÔç2Œ‘ÌÅë|˜ GóØí«ç( q¤ñÉ+O5>·ÀgV÷©ü'´<´Jw”½Sèê2 ^ú‰Gpæ,ßÛ}˜Öö=–星œ&½—w¿vtë›:×Hf!4¾bÝn¯\¯¸Ô; p]ñ ÔOùE³¾Ë ÿ»~fuÙ­e]yEyä¦Ôɼìx-椌› 1_ŸTg¸­®½›äµëãft¥ËÒWEèwÊ8Ëw«£žÁüFsJtÎQ,g •ÀÒ¬x–“ï,8˜ïÔ³6ZìÙŽ˜Ü}œÅ"¿³œ‚ Æ9¶•äTý—¦‡ÕçŽþ„òV5í“66_¸¾fé›×žX2·„’èhÖ¢‹S›ó0+ùmJÝjc!ŠÝ¬Ê1ÿÉ0AiBþtúzžë¥Œ.j’ßI¾ƒ‡ÂÚ*6Ô‘×WûH6e’]9¹ún¯°¿‚0…ƒóùq™[o–¦I£ÖºkÊF2é<ïÓlÂþ?OâvH¾i‘dZ^¢]qtžõ;â"€EMYBkͯk"žš:¥\§¨zZ¾ m?“ò^ ðÈáßÔ?´!KaÖëL‘`<íFõ¿ÞƒØFzAÒ¨ˆð6¨ve3” +à`7ñ/ “ »ïY?Ã;â.VR}Uˆž_¶1(uùñ/äRù;ÕÿL;Õ?ÚÁ¼/ó*c¨6ëè¨ç‘Žè€@ùo°2ˆ;æz¯¯-“=…„l:+àùùYÆ;ãeŠ£[ ×Ux ‹ ÁüâµG¸óèGÔu“cWj=ðr$ªà=%±WÏÏÂe²‡ß7¼§öÅÇ_ÈÊÕMn¶b•—oNã;LJ‰ ¡,ŠB«+KâA}‰¥Óø(€MÔkËsª :æ±yãÅ$¡³Ç]‹gJ°ÎÕ±1QSl[#/ñ(JTC “Y³Þ•Ý|eà º¶Št5iûûNÉⱿ¥X‹²ÓFù«ÃW³8™©ìÎÌ0²CÚLà[k¡»Y›o†B8çä ¬qì,œùÆno4xÏ5¡…×÷®Néÿ¥0ÙűŠG]ŠÑ˜]‘ŠmSD“™Þ]$¨>gQAÛ»öÄín"x™·±ï×)ãä{”Ñvú|?8Tà64ˈõ|hQµôâK‘dL$/-ßöÉ˲ÿ©óÓ-ŒØãNÝÈ&,öNOˆå¢óœøéÀóÕ­]Ýlg5O>¼âŽŸÆõ{N,N >°f5F$K‘LûˆÃý=@çðHÈÆÑm0u˰PGS‹±ô ú2I”—Mþ·ö^õ° }é×2Iû áv¼Ü¬øÝÑN”x'iIWIªË/¡!)ªÞU O(€˜©ØsL Ýàèæƒp„-I‹×·ö…ªPx¹EÂñÃ$zÑèä'—ù_=‰µ¶jõ»_·»¢ä×¥8Èd˜dÃòžÉæZ›ßOSòiKÑÃÆ’\çån[o Š›Ü­ÕºµÆ‘5ì8EðUÝõâ¦/×”!Þ4£h®¤_U0uǃà8`´ÔÝÖb¢0vø”¥Rº‘ Í±nX±[ªO3Þòý'ßûq¼| *ÓS\Ó+’i½×z @ifNž©xØ ‡·š<É*ÄÕCɵ›¡èæªÞaá{ÇþNŒÌþ6»árÓ\Ýkça@I:"5ôXøv`¿.ã)—SǨÍvý9ÃGqÛ2ûbþw.™Pƒïô'Ãy[l˜~ðñõ97z’™°)¼Кټ Š$oìÑš,®6ªÌUAá=pÚ½5~„×§\xϰ¹Ü'Û`l’{ƒ*¸ÍIŸÐ¨%w8çµ^rÁ|8ígFÉê|gµ<êX·ÊŠx+UügºŠÉ0Õ5œaì’ÒÛa•HP)uçŸF¸lQ$w Å,¯gìĵV@Oç7‘ë>K™Wç\¤ fBy~‰ˆˆ3ï5(únÏNqcŒR­‰ÅÀc&,_tv}Ìо+F[ÀöQ¹IÉÞÑÀv°yÃbç×9‚b•¨™Jc•µxÁ=vj¦ô°¶-Í?Òƒú`ånoÚkFqêvÕGü9Ƭë1`TB§{§Àó‘rëÆáz)sœümusϨé6 Úg'»Ýœu3päôjsš“'½µ‹Ž ?#ùÝüˆÏR—9U~3»ª¤²¿˜Zï0?ytúP%/x<Ñ>–á¸ýçšyhf¸MîU8k°q3뚪³¥æÚ$7pþUk‰aìŽüøáÑ"5Xª˜óÉ$òø!î]7˜õ×  ¼˜™Ôß©Þ>hôû"¸Ü–½–¬úîá/¼ýŸKÊêüMa99ÞÖw¹þeÑ"#qg5‚±ºúýoi¨t]ëL½Q”àÝeY{5¹YÇg 63乌©_+â²H «J–阑£<û1®¦ÎƉ÷„oqëiª,noÍð YsAzØ2Æ&l|gºÈù/iã£[¸k< ÔNùw7ó8£êÈ—­Ë¬¬v?¦Š è²'Å©™Hª1¦€cà ë(¼îø i'c66Ê9ßj¿c¯J¯|=ôÈäñ!>·Èºö4ÞVÀ©¢gò{H îHÍŽb")¤EìÊÁ zÚtpµú…Cèßà•ŒG’ÒÒœzlPùé ZäE‹«ƒj¢56‰Âµi%º;vbдeÐåu}j>Ä 9·œˆç@hQòØ®GWÌíJß{¶>×Ö õxš¤îÜË÷â*9W_4>æãùîLiqœ¡ÎŠ\ȓֱO™­òÖÛrž5G¹rw€wIÖ5¡IûrÙµí=½(rôÏ–rÔXà‰ò6؉VC„tL.ú…£i¶ÊJ]µÆãsÔ*ØÊ:!þ¨Œýä¾ÚíÆÖI =ªyr=‰r'ÂÆ‚嘒SBwl<º5϶µ¥R9Ð>é¶⺬ äw*µ½n‹¡¤nòšcê+¦dD¼ÎÔÏhŸúAš5iþK+b0µ2ägÜ*âÌ¢éÄÿvk ±Â¤Úa«°n–úL Ì>‰(Ò{±{Έï¤)'#Bá~lî%–a™¹ö®‹ÇSïô5í…Ce•Ù2­cT¢d{Íë™Å‚^‚àp «ƒD)Ÿ4Û%¶:§=IýÞ§lh¡>Un~i¶;]Fµ»3%ü_|¡~7H®k6ðÅ@+·ÚöQ˜9L&«öbjj …÷-¢Ž»äóv߃ÐÐ_½×F˜¬«=ðÒ E—àЊDͯ×W8øý†Ôǧù guÑ0$V¯Ž1Wý?¬}!‰ƒOù~”Çkyð„ r÷û™Ä›OÓðÇþ –¬PÂRvÒ-Ho‘&–#ûü†L„’…a-¸· A¾/UÅ–…##h7Óè{"vSx­±òKóÏ(ªÙ„³àÿgOð•Ò+¥Û@à]QrUV–Ÿ(e)M¬õ¯1|ºá16pÆí¦fþu&ïʃle1ŠÒÏñg_KÄúuZrD3Ý Jà€0.'V ÈîÁ|×H‡üG¿ŸBŽ£±f„ÄÓc)@É&SÛY%Y°6ŸõØui‹þÍÅOÕ…o‰¼žEŠ¢Áma:Ë÷Ö 3ð¹§ãÀyÈzðŠÑŠÀæ`K9˜=9†cãœ(Æ~=·]¦jÕÚ§Ýz×ÓÖ }„Ù#lÜt’(kɵ•Ž3c d> ÆâèSä3¯ôÚÊŽ…뺻Pó³û9ËTg:mή­aþˆÖÕ‡©sü7½@Ùø)™ rÁØýÓY\õO!, 2b@àh°°vEl¢n¸ªèóT6~ëo×Û4¶ýýã/U¯=ÏkÏä;“¹ÞÌÇ…´q?0àüöf4IŽ€š½ ÎéˆÚO¿±³ÅÔ,¯KãZ$ÆÐb߈+ռܞ?`æüQ–ÞQ‘æ ì@ äÈ0ümœ-û9kéø•l1ÿUË¡Ýê¤.8Y9šJ?OWÌ£è'DߘA5tá!`æ‚u÷”Â~cºXØh¼šè§ƒb]å ºQÕ†@ ÞÐ’¿ŽÎü% ÆÒ*7ŽO»)eH2Jì9—95F¾ŽÇô…ñæV/Ÿ/{µó+›ß MF]A>õ°Àe\h¨®Ð T¬žÏÓ« zr©ÏÔ` '+½7n¬6l¶¿ÐUa–£+¼€ÇÝ•k-§ÎÊåž¹Lá0VCºÇ²cÍZ%±Ï±3ŒZi¥°ýëçû\Avwû#›Ñmª1Ù{ŸÌû$³4¹ÝÔå&r—£„‡ÍÏùÊ¢²Û£€å\ Öc:ž®œoH^ر_ã2¦â#LΤÌ{t6š.³Ò‰l隨v}lñߤ3 ëìlŸ\ÄMò‘øñý•™UMŸC9xëÀCï—éjÓ:µua UäëÀ{BŒ2 ÿB.‰Åj•V/{ñ[:3ÅךêºNN=·6À‰~¦µºš0ªµ—1¥7€!Ñtϲ[Ü¡”9;‹S®÷~\,`™#ó 7ó?aÔdlÜ8â>‘O\ 8-j;Ú¦„h5â"ˆ¦÷GXK¹Ú²Ôïð‡ îÌ@²u^Y—Þ›;•$q€‹…—˜ðN‚é+û ·¿‰×w“ú˜?Ó¯ƒœúþ‡™MS.Ô“ê‹FÆ¡Š¹žJ{­eM›Ô;ÿÕž£ëm7½Ò8çe264~;¼J^ ?QL®§¤NîîÕ‰¨ SÞîósæ ù'eTrº½4äŸ_KàÌ)§¾%mÓº¡ò™(U<‘îP ÷LÊwU!æB³úKÂ3™bŠ™MåîÙ£UO?gHÛëàWÂÓPæLeÇøé츗#¦þ¾Ù]÷A¥Ç»5µxàƒ1ÿÛ¦~4^Ô÷ 3‹n”?ê1V€Žî?C=Ç6ô¤«0œEæ¯S•CRWú Á݈‡A†5†%{ABÐãØÉ²ŽOÖšYé‡Ò¨=[k’~r|Êá{¾d2ñ­ûÊ×9¤Ìfî×üØ{TÛ JÏ®¨>G†L¶õá=–ry>¶ »°ù6ýõŠ qŒlò׌Éã–Ù¤¤º·Ö£Õ“jŽR™"SåuäÁƃ.±¡‚3˜& ×ëÖ¾E5@ô‘Ý>—ßj|Ó®Yö ¡‡`Çj1È/>«N1ûj'½ÑÚ›é‘ÓdÍfôau4H "Ò|v²h¥­žîLìðÙ13EWðyÞ Þ„4ÉÄØ{#ûÏx~_>€\ÆQþõŒùt)ðst×Õíž0ÄÉTaý‡J©,Mn õù'=/¹ûqrD»÷ǾR&°%1éÂàäózBb/ãu^cýrDés¹ò‰»øÏ‹( 3ëŸÎ“O&À#žK‰¸ý!â‡}‹ö$bBùR<Û8U}ùw¨DAE'pà«t!9Dúšøv™7ŠžâzèyÑÍÏ)nðË} À<[Œfþ œ5mö9]ˆê°‡=¤íùùzV¹6ô‰«ZtCÍ$ºÔ v îæOÏ"•à˜}åŒÔlÐ6qQ¿èUßüÌÈ™&ûˆNÙ“†È5âŒEâvï úƒg¥ó°©(nƒV…óhh±–JbôMÒàò Xx4äõ³Ûv_3)eô5ˆ_bö~{VXlÑò³Ó¬GpU”xûWÓ™¯Šž°È¯2Íož>EÑšQ“¿‡«å}sáÂ…âÙSQ>sù‚\=¸Ì½VAõØâPÏa{=“)€ÌÞÐUoû¢ë=SþçŸðø|îH5Öýù( ZgkÏsþ–‡ !$"ÿ›ÿÂ)1e^µE")€ „¹nÃÌ¿{ˆÅÑÍSæõû’Ãøý¦ä~uPÙ†ºŒÌ#$]¥iù˜ÇB—ûlm¶æ¬2×¢•rl1)aÒ+¢„‚X¹¦Q'1düÅÀ]Áe¨áqÅ&0ùˆ‡¥±mÂÁA0ð<[’¬¾Ñ¦êÝø/ÑlÄó“×ÜBç|/J^“S†-Å?KM›w9ÛùÔ¾0–OÖß4^¶(µÕþZù-óå¿LVÆIbpj8Z]î÷òaD §RR³ù@bͺ5Ü$èIcb)),?¡„i£=—ý9áè²z³qV±ãÊçCqêŒE4^ã­L¢t·Ë m¹’<âãö»{'EñA‹ÞŸj@Zå­Þ… ,NJ ÎTUQCic­3wûãl–«… øûfµ¶ßY©e×VŘÉ{ÛpõÒ†ùw·õ¯ºËdÛ;éslÿ*OìchÂ=¶™X6£Ö«»…”–š&áQ"TÛr‚¿ñ‡`ãõè•áŒ|(ÈG¾ž×}ÀÊ/Ì¢ao‚Ò€AyyõT¤‚^%¬5åÔàÑÀ†oéõWÇEõ5n¨Rs5!áß{xøêFæorwKþ}4®gç›*61 !)g¡‚Ó­n‡}]?(aXKÐÍ«™Žã=Ó¥yâ:t dé•›NÌ/MO•éUÞOo…÷ˆ˜6ÿE•…¶bÿ]\@ [w~§›~-„þ‹)â]îoïù|‹-ùËO1Œ%³"¹£»þ㓲þ‚×ÀÎ1åUÿæÄ²õfÀÛ” —¥Än±ˆæTÆÅ¯ÛÖÚøÑ–~)»÷N‘A°%ðæá %lÿ¦;§ƒçw6¦îç<šðs°{:W:NÖ¡Åö×DHƒ*|œÛ*]îíÑÅéºéQ¯Ïݹ»//ªÚ |õoPÀ,¬¿qÔJ5VëÕ§³'²“»‹o<ò¿}^Q¨«£Ì/ök–ùÙr\¾Õ2^-¥ï¬®8Ã4Ýpe¨½VàU¼ˆþÏäÿ¬‹/F}·ê/ÆÄš[˻ÿY– .qð¶!Ò`´z@“‘÷ýó}•P(h5?o|È¿{¦e.• BÇE¾aµ±ø“£MCgm{3ë£[äoÀÜNºŽ½ØïŸPý÷yŒ"Øa!Ý^+Èz:iw—°¯‰†ÞëÅ[¡Á´Sö‡FO+àì’ñ—«DèPƜ똮N" Î@!Þñ¼¯ºú9¡^…WªHæ9ӶĶÁEÖ†øºM%aÙ¼þ &禣À9…“»b¨³9}û“= ݤO’·„¬•…Ì(ýҔɣ\wv” qy‚éh¬šÿ<†íŠj1K’´þôBo$ZZâ$cPËž t]O—‘þxý$-q_œ¾Ç)yõ$®E {((À¼…û6Þ!ÁmÑã™å»d¡\å] !#j¤çN‘šÜ=çpmÔöò(XbkpL:ÿÝì0ÑK”)ð¼™ëDw]¿‹âQ–¼ðá8ßÄyüΊ跆ïì6ë 4p)­ùñ«v»uà«C½cÙYýŸÅhúº$âÚl‰/£…£ƒk9}ÃsÍ%jv<€><àÖjõ“g IúáÏc¼ÛNÐ Ë7$'S)±'3ªÓÔ»¶˜ÐÍÈŸ»?~Iê‘ Ù¢ ¬Ç1¼*hïçÛ©´³û’Àpμ2PYÆ:yn@¥O“4·ì~åU:Û7;ó*«ÒT5Uþ&L;/ìâú¦Pröêbíû:]Ù®'–6lÀ§Dþ70jf|e³ÛÉ£Èpد¯ß"6–/*« $;¦æ~°ns±†#n÷b,›Ð½3adcs|6lâ:l¿ƒI< <6¬W=|äåø{O(WcÐZ.jÎj'wb‚3Žzܕѥ’â äî+I_ž&‹ KÀ—ª>¨[°‘úÙ±nD@íæ´ëîXÈ7|›º8_n*­¨ @P#tlÒ¢mYU'ìy…Sàӧйtg?‚ƒMÿ’¾ŠÝù廇Cô“tÆ€ZõŽ»”Óú–åÎ[j#N×EˆiF£Ÿu6ø¯SWÀ°Ž‹DÜ,º‡¯JøsHCsðgf8xTÖ°’mP'gÅ+×á&¹.E‰Àec´ÃŒÐŒxÝ:T,iYþ)cóµ`ÍM|ÙÔ@_X­wíâŽwAÕ¼óõ Ô$mb&)gļÃÌšê¶ ¬Ì]Û¹²X m«ÇÕ` Õy²Û6kÙú~"Í©c.v ê¬'Öa­üÙÉ ¬kÎÀáð…Rbò†UÁÇì²èäÒËxÏÚ":³`1U•›ãxM —˜C¶•“ž:½spM–E†3ƒÃ:É™ÌAŸCÜן,ŠÍQƒ5Õ Ë§ÎË‹<iÓÍcÇŸÔ¡u½˜ÑÇq…¹ÓÐùÍû-î§ø²t¯„é*[èV[í®Íîdræ}1&¶z4Td]º¿“8Lev$³ vâiˆÉoó5˜HL$°õ,\|!Èh¤ÔÈ€qO1ÏÕcßR~ ñ¨nËŸ¶²|ÍJÑ—^8–"&`"(ÓW­cHƒL‡ÕZE'¾Øšû ÖNLs„2^s†C`ã¥)óªMïã¿7S8ǼØÎOáíè¿b_`”~ÜÞ|˜Ž¥5Ÿ¦W ðQCÙ•–ý€H®œTƒ1biå6=ðﳕ7™í’¯õõŽ*b<ËŠšoÞ8¥¢Ì.­YÕN|› §àYÆ6¹%ö ÛØ;.W(+F¹Ë”Œ”£X®pçy Êžù»‡E•fsúµ¶ ©ò¨Õpä½=}[ JªæœKÖÉ&Ǩã- #þâÆtÒh脬ی^›Œ†LiñUnU‘Ñ'’ö´\ž ÙÇ\éþÒÕ‡­5µD}ó±H½^\¹.Ñx¤]îK[þIYÍTEÉ,a¥Zëq'Žs=(¼')¢®>´aîp›RØ«g«ç‚þ¦Ñ»R…ˆŸÚR2/!ß »!Yç8ŠŒ›BMrÜD—äu`¯¶(Ò¼Ç9„¾¯ãÎË•ÚÚQÙ“äž°º§‰r]N·:1¸ìý]4´)˜!&·ˆub+It9.õ— M.O=§– F=¬HܞͭQiçwìGÍ ûàäñUbú[Ââ©Ú: ’p†ð=Mq6¿G³÷Æd÷.8£–oú kªÒj ½Áü3£hä ‹†ÂÐ÷®Jm úÏãnç«`hâ­X»ÅYNÛoc…?‘ͶŸpèÏ ªª]Ø“ž¦Q±!½'v×¹šo è ¬—² ÊÓ“ÓÃþíX<¾(_Ö!½Çb-#—É.Ûí¤]…n'“ÊA²"M(‚;´Ã9øÊ!KHDÈéT¦¯Ü)ÌN%ÊÜ”2¯©hµ‚åÄ(Vô iK»®zçdEÜlÅ^Ög€.‡ô¯YWyâüy¬•ÇÿÞŠC›´Rú”ªB V ³xØ•3ƒ<.åFV]t\ZÕ»ÂP¤ˆ*’ZöGüLYB{²É²¯å¡S·ñ€ÂŠ“ûeèbé„h?æt5Õ>+ mì›Þ œpi0,.òÚóGˆÎÃC½D£¬U(Ô(82¬Ü[•‰9A$‹S_‡Ãéí¬p½ñ‰ZJ$¨6%õ¥D÷kß-ð‘E³üª `Ø\¯3M ` ¦œg¹ŸÈÜ2…¯£C Es¯ƒ½E.–à¸ÉîÂG²˜PNm~ȺÑ_8ò2~÷ý=ä+·AO7£Šz‚¨Ù ¨ö}ªãÂã_íÜÜ6R^³•­•¢ë?a @’o›}7ÓÉMïä¯qÑ{5¸JNLÝ Qq‡K´ë‡Ù+OÄÅWPÁW‹‹ùM³ÑÿatlíhöTÇʆˆ_'’Hí[µ{(Ò@Ø@=ž-ÝÀ©ÌÉšÑÇ]äÞâ¾]™3~þŽ*×¢ {úºà¡yž9Ó’’mw!aé{$mNþµ`âÙ:ž^w¼Žån‚敜´»ž³†u÷¥-‡>„»ñcYÚï½Q.ì]·'—öÖ%ÿø»’)„†zžàzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2stripe3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.752787883 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2stripe3.dat.0000644016037001603700000010502013607166133035005 0ustar00hutter2hutter200000000000000BZh91AY&SYòÉáxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàN¿=Üö÷À|LØ£l¶RŒu¾ñ¶àulHúÛ2LowuSZ¦H›gzïG{“™[ZS)kT[Ûv]o¶'m÷ÍËT­:pçÜeö³åÕ3Ûï³ë|ÜÓjû]÷»¾u÷¹ïjçÝ­ç½{>{*Yzö_{}»¶]^¾×Øî{9S¦îàâéë»{omÞg¶}ö>õRU×lÕ48÷º£ÙîgM¶%)ljVÙ»m×¶Õ±¬OZu¶„úhêÖ}ÙmÜ5Hµ‚'vé¶öû|À{ÝÒô»·¼’F0˜CÉ“M4Á FCF‰â45=4 SƆF¡ BcA‘€10šiˆÂ4 22iˆe<ŒdÉ6¨5$A¦šiˆa0 ‰¦Ñ ÄOSžF˜ŒOLL ‰‰€š F# ¡“ÓF‚zi¦ƒSd CShÐi0§ši£Si¥’ ™&€ddÐ “F˜ÐLª~ɦIäÓLšjžÔƦ§êžÄÈ'¦‘êzª~”ý)šOSF¦™£Tñ=4SÍODÓi=4hÒ0Ó ššze=6Œ€žª~¨$‘hFš4SÓLDÀžMŒ&L)à Ÿ‰¤ôÂi“)âLž§ª{SeOÊŸ¤ô›)é“M&ÊcBdô§´&hS=)ø”ôy&MM„z£SFGêš44ôŒÊD”"hdÔÄ™’ždi¦Ôôž¦OSe4ö‰¤ÓM¦‰â)´Ôdô˜Ñ=0MOSÍG¢a52z#Aè“bM1=FLÂ&jiê6Ô§©3jM©¦5 &›M2Ÿ© $„4dÂ2i£Sjzh!¦†F“i´FM£@j‰‘‰<É‚ž‰²2'£)ši‰„›FLF¦Òy'ˆš`hSõ<™&hÉ”ÓOIè4$c$X™S»åˆñ™ØYË<þ6š*gDYq‚r^bôÓöu>PÚ%þO—‘\a )Ø~Ë^L„Ô¸œÌLŒ>0.ˆ¤_GŒ1]Z=Q ÝÖÛ‹¤û}æŸ Ëãz?ë_C=Âú™^gK™þ¡ây¼{a¿¶æ¹ñçÑæ­¹Ôpݨ]6èaä<_ÄßÝך3^ü²áÑñ2­|&Ø6ð,Ó‹›ƒ˜9vnŠLo¢É39ò?åMŸ·‚ëÈl: {~úÔÅÄ…S$Ô„ä7¯¡ ï [‹Oäôé#µ¶F¿{dÙ'xUjÉ Ñ¦å÷î]4›ädG»Å9úQ^¶øû6wùYî—JÃ,Ão·wÎæ.ªÿ/FUÖ¯Ÿ´Í{jÕU\Äj6–[óæ|ü„]ŒmßE½‹oUë(Â*bçé3ݤåä;ôƒš=æÇßÈó<ñæZ)ªï®Éî#[5cácQõ ¹z;ÎLû' ÎEhjÆÚaçÌ͵Û"Îà6í+‡é>,ÄAªƒ"‡è"­EdVF0da‡GiaCÐUFBEº !vúÑløô¼÷™Æ{|{¼.éÀ8w( s^_¿•V=ÈŠ±|˜7 H*„ˆôÞ+¡š-‘U9*‚¼ˆˆ€ïŒTa« hÈXB0()ì‡lÑÿf^@ñB` ÁóæœñÍ£Kʿԣ×Íf¨=\ N2‘!q^8[¨G’LRò 0¤= ~,6ÄâÞ0ÂK¥ÎeÞPFØÖLÕ¥š££I-Õb>¸HH !ÄEÈ©oˆ=óðŽ·“ŠCƒŠBV˜q¡!ºb=òG”8ÆÒ/|˜†U:X: ÑOKè~çY ànþöóÚx]/Øòsx¬û\ù3*±Ø3äéo^Á4™ Äʽ¾8Cëkм»^ÎÉÖjh5s‘um÷5Æb_°µm7„å⪹Ý΃ìJøe‚ü2X~¬PA9k€,TCÓ©ˆ:íyî-Lîµ¶#.ôFqñö c¬5cZÓÌšEØõEÖÚó^q™&óX´K¾#ï¶Bq­^Mn"A~ Íò–ÇFÌ2W`i±·ö¨ÙîháHß ­õ6jÍuÎí¼›ÉÞ¦"ØàÂ2Pˆ¿3Uäx¨å0Ñ—¹rr§^~@|mðãÔ,£Ѥc¹ª•üpóhð‘’[ÐYò6޶Öw$t" ö@v_Ås¹B(£ G´0.³fL^,Ö‘•’eb6D}¹â” ‡S;6´…&Ÿ ¾0†e=oZgŒº „ûóXÿ™*: †F•"L~»ÕøúØ k¾,è|Ý M¤M³6”¤2Òq_®pßñq E®?ì@q†y¼ÅH»ˆA¡½£¦ÇÀÛCÇÂÂϬ’̤çʨ'’1RÇêŽJš?ŒrÖ\YM€é§®Ðã >‹#Ivð¹Çh;Å–i6yê‘’UIUg,,²Ö­súúƒ ¸ÉÕŽypÇP|SÞÅæ`‡và¸ÙðG«Å÷ÿ$°ÑcSàô8OžØ¢­£hyÖpúÄ9ÛùfGîwHôRTÁéÞÇ©¤å§c 8Ýž½:§¿%QêóŒÏÊŠŒª³0c*/vEm,F}i²²÷RY{oŽß!‚ÒwŸÂ®Xiw×7ŸS#©ÆBïÙ3Rà(.SgÝí ×\n;bqGœFœ½Çlföå£6h†8´JH;þúôFN‘Ž¨à“…‰þ`Â0ôtœ0õl+¢Ç½jÜždb„ùG€²úD‚+øz²3°&:Š¢AÒ§hsÆo.IDdÅgº à^#F4é+ÔâsyX~ÈŸ½•¯ã>†õ}ÕZ®¥J'îaúýÖïD‘ëµIÏÍ!Ew|=öEÌL^I¡À˺ýzŒ°DHM¾úI=InñÂqraÚª”GêÁÆK0~8Ç­ÈžÂv<¢·´Ð°¥•õ€*íаÑP·£nþ<œopuò…À #¼Q?hÒ—küÓ³ÕŽÌ=0ZHúÓ",àd"ò'á"tá´ú™ßÉö 8, ( Æ›z„~ÂÄ¿¨§óÆ®üí¿Z’ÿ—)0k³vÓ }»Ýƒ¥\ÿ[ïwKŸúòžÞþyYmÊb¬ó.˜`ôwæ¤ê|}8Mgãù,ãà/ª¶îB$°#¾£Û<0£!/CÝrG$`Ú¡n;M4¥_Îõë°uc<‡«hg£ÎA£ÿ2…, _;m©÷4¯ON0á‹þ~ ¼ÿm’h/óüyâåC‹¥ô)A„‹´ = o¿²r^QcÊÜb&‹©¹Õl&]&)”oòú+õtŠ„ëBwn|—‚|‹´T&SBÑi'E8¸žš6:(γ°»¨ >E{f!º„ƒ p“C‰¼æh3B»s\?û›;,rä¡·€è’ì›pf{;‘}¶^@—¯ý÷þÎ×Åtþѽn}՞ϥð³Òi(¤'u£ß$ æcúEýbW¸äAýîæT Í2SDäìæ?¨ú}ÞIÕшÛ4‡*¡9ƒ·ˆÍu`1~Tk~/UG5q¶ª³y)“nçúYe4ýãOǘòù-£ÇõSº³ð7 uß$¦L#IrÁ—‘ZG62×°x"·ø…„)yµ³ Í):r6úûð?¢úaÌ5&yüE“Ë¢ÚÁø|רø~±žËÚf»6d«dpâÄ,T\7Ñë/ã^dë¯L<ÂŒXgâÙö~ Í´·ÒÝiZ>U(âëÆ.ŠêÖS½ùM´ý?& ÄÌc¾ó¡]†¿§ƒ3íG$ˆM˜œI¼r¿ï*Wßlëç™#ù®hf̃1걘¶i?ÄA¨èQ×J­ ZÁš-âôOf>uêßÒ¤ýl„çõ¬öØù·[jbùõe/·ÃJõYZÂñ=q ßjUæ!赈£|ŠœBI>%qnzhöïÓ¥ØbuÐLÐjŸ/ µÑÅGøØðjJ«ÆOÜ>Ëïs r“û gÀþÐÍ0ROëš¼Ô½wM)ÈMú†<ß⊾åjIƒïïýô$®nvâ)–ŽÌÖi ˆ\Súu3fž\q–Þ+NTLy™¿À>è{ÍeÓw²P>9)N7ÿG~D„åŸÊÓ8µcBLc¢£6HÓ¤¤žªŽ{ò€ú¡WŠŠ &Q=ýž’¦mÁÖÿϱë?K(´…ôN§„ë˜ H‘A6å…&£ÓP©ÂîóÖ+½úv!°";X-’I’I"?+b…éN¿ãGöïäô‡ƒ»NèÞ¶®µßvöÔTº í3 ñáæÏ:gbþ=,ûKyŰ(‡'ÐR¾„ &í‚hÊáÆÖãŒx£W<¸ý’ K&±:TDiQÅ2]N‚Ì^—†}ÕGœJ•6kÞ#­ŠÑ:à8R‡]ÓÚ\wâtŽzל‰žGÒÌø9 °†^þÃöWØÐ¼L:\Öf#óf—í✵)Œ1€Jø)®£2Ž.­*‘QT9Œò½qÞ@9Æüfæe«å>“fh»õaV90÷IߨІ‚ŒbÐÁ8™{ÚB‹èÀ®£PLÈ\ô*6¾ùIÑ0gÑ­êuŸgסë-ögñ\¶A%^¬ï ™‚· «Å¦?õÅ^p¸"í8N˜ÎÁ5Ñ· hUا¾öªPÿd½é³K™jî$·©ª@}ê2Ȃ̤Îù!#?i¾ÞCo™<3Z‹^qÕ6"JT÷CJ2pq\÷$èÁ+v`†¹çâ@'ƒl¶h¹ŠÝ—› ÷2uUÚ^ëSµ&b€ÝŒ€…HÍÙœ÷‚ÅåŽãž?!™}KÅáÑÇ —aÊj·³ô½q\4ñc&ƒ™2väüâÑ€§Eñ`–@BEBAIl€TÈ7ç؆{q­ìo<¬|K¤\ΣƲÅmˆC—5—¢Õ·ÿ¬ès–aäÕ®<»¬F Ì¡û?À*™f£Á¡‡Å!àúSÚÚ‘ÒVÊA—ÂæŠ'Xø}—TîkV‚EB’ê7=¥,BôÉc¼cáó< G2\pñ•:yÝ;ûš{’‡câ2` XPÿME:$þG{ ýålà›Ï$װØõ|UëºK½G¶N.d‚BE¦«ż|»_hn C ù1ì1¸ ,j ã‡EgrÜO›üT„Y)QZEP·,í5·ÅIVDÃhž9 8'b‘Ô8’®Iç¦Jß=1bâ¬H†M”Þ,ýäcɉÂü‘›/ÑÀ"ŠŒqEÀÉZ|Á²‚'“XÄVÀ¶F²ðø{;H@¦dC]¼¸Àb¢±UÿmLfÿëÅM™æý„ܱ¤‰29Ú8¡JÈ%ÙÙ·¬”ýˆED€6ßMóî ËB+ñóÌO˜‘87ÏBAæ®1X]SH×PöXxöÑ@«hÄÏåv¼˜ÓïB<*%àÌ]¥D`€ÙeAerðå\ËxS̈r]‚ÞÍ&±¶‚Ï) 9il+ëJˆG^Yav(gλᨽ֒ѦÚÄ8¾¬g\mØ»ô„÷q˜iFzLɆÐÈÔì(«‚2¡¾CW8X,cÈgÌö=ßߪþž…y‡GB[rÖM.%—¬boÏ(y"Ÿ^xÒ¤ zcüz€:âHùÅ~+BA08uùÛuq~ŠÝˆ8„™ãaô¹†ŒÝ“àé¸üh±GKAVšÃ¨šiöÃ#ö ³rÇ”NŒ}Úý¤KÄÜL‹Yùð{0¬ç€ïDÄøV½< Zl±§1v8Sjtàd­Œ²ì™ƒ` Œ5 t:›r÷&ú¶§t3†ˆ¬Êˆ"éLUHúøÔ §IÑÛãÀ2U§%ÚºÓ— øcv×#Í'ÂJ?q০gtü¡Ë/'@XyQ ;ڒ¡E°<éש‡.æ èªâ³º›xWz?Ò3Α4 8sB„é8 pÌ ´€…º~¾•ª vUà~ò+ÖH®+‰ü«tƇÙqWŸŠ$¾‘LÑTçÉd îÁ¼H^ï~iZÉFJÅô¢/ž yW¼Œdõ²tÙ¢…þ#@óœ=Ù1€¦3Là/V˜êIÙ#q1-Ýw‹-uŠSEÌÍœõ—Lq¡"/NrÖãõæ» =‹Ü’³o"©£Ï‰ðžן3oÐr³_&Þ@#œ‘è—D÷:Åk51¨€¯ î,Hy„å]¨qhy®Qá&8eŠRã)Ž(§¡;Òº²áØN‹ao®Ïåg)é© }ìÏæ>E@§½,’Xpa!T[Ößsˆ ío'QÖŸ\y\ÛÍÏ—ñ‘´y#jâ\”ÇÝ–­”!¶eñDv÷˜çw=QeY0)CÕF”©†à´³H³ô9™WÏÊ Q÷O/èÅ .ŸSóEƒpírОžñ2eÝÉÓ>-ïaP¿ƒ%H´äUS}Õ/“!P4ßJ ¯FWТêDR‹ùììûŠ2R±…Î×â*Öºføk`_ÛÈ=’´ÜÛ’î°ÙHW#Çð^ôPU=«šÍxÌÿ8ÛôÆ2^ÈþžÃúxGùãéæô ;›Ôéé9™¸O‚5z“$_¹È}~D Q„«ÈÁ£/31ḛ̀¨ÔʧdK-æÞ1Ê wÉj£¦!5Y&wN&2ŠKàs^Ù)\}‘uTL-jQSϨDˆô§• ,¿[rà%éý¿w{wÅSŸkMé8• åUAžf`Žò³QÚ)y^åQ2ÙËA3—FË t0Ûíáõè´óBåäꃦ¢$ ª×SI+ñhÐ}„†5ŽM„‹A†Ú@«9†ÅdOæÆâHédº~D=±¹<ЇÏO*›öçZ=HhÀðB“ºdo/ 8¿±:ÝR9vbcé`&Ó©Vë Kh*IM(ÔI™®×—'‡óÅòÁ¬ à|(nNñì‹z@‹µ¹Õ'[Ÿß¹€ªmË^ƒ£ÂÄ÷6™€ –T¢¶ Q/I<ËÅ?˜ÝFÀSê3ÃAêD"…sâãkÙä;äD’"œPßßAZ25@D+ãh|®/Sã˜UðÂ/Î÷9Âz·qºrš¨óâ%@Y—¾2:²"oÈPà7a åw¸ÑÃêú7s<Ôü{VêPñÝ®YúÙ¬²#>#ÎúÈŽq“a׎BG×U@ð[¦•‚Ä& ×qãc«øOS†óˆ­À| —»G}*1Ü|BNiÅØ}Û‡”°å¦º “`?‰Ý:ÿžâ'úsÃzJkm0–õ¹fwž-t‘ïO&Qnš¼Ä8ÒëŠS¤ÓYÁògãÕÛþœÔÁÓÄ¡¢`¹§` …yPÅ{"·SA@Ý–t ¯½µ-¦NÙÈéiÁìd–2lˆ‚ë‘°×¾’ÿÀpH¸HäAj€Ð=îòœxƸâ?³ï\’ZÈäøð8÷¶8φJ¿˜XމÜ$ÿ×GÊÉüº“Þê£/ÿF6¬ Á(ó :E`‹4{ÃûäÏ´XY½º {àt|9Ð@÷AÀ8z”ƒ"¹e0O`Å!QRþWLWƒ‚íŸï™x;¯­¡ØTò:Èò¥núVˆ ¶ó±8éø§oº–édG`ÂЩð»úÐÍÇg$›HÚœhC¦'%UÙ‡©¡îâO8|:Ñ1G*®u–¥‡kåØ(¥Í}øø2Lô°þ„CX ¢ɯÈ(…ÁE}<™& ¿•ÔO)™Ÿš/÷¥ýù½†‹û˜Nd«ã#Ëß$5cybúȺ>å¼]Xç˜íô—)jBÉXãP8vÁöƒ@÷“ï$Gݘ”É_ =«3 ëEÙ¥´sõq96s}:s§m¤Ýïm™çS:v1U&a›ÑM|·gØÚ×D‚Êg?¬¢‘Q²[†:.ò™l·¢¶$®›—•¬n†þêë+¶´ÞÌ4$-9q+zÞ:=È„±ìæ"‰ÜPÛ­×j÷œä«É¨ê/g̪Rö†IÃWÉ×¢÷;îên”å0éaŸÿÉ@ÐG¢ã•™®*®%|@6‰×Dm ò—g_'¤…aIâPQñúhÞ–³W›¶Õª¶Ÿ¿F´ä¼ËÀw=ް¥}ÊôG‹oÙ+R¿Í¡¾q)ÉÝ3„W9ìßɶØ?’Qj·*apA‚ùÒ¸/gñÑzô̆³âOêgZ¬oôõ§GÎA ¸M™¿K·—M¹^~ü·~÷žHÇ‘QL3hå/Ä'JƒrûÀÈ Y2Øä“ÇW‡fÉsµæê"XŠšã•Es+hœ¬ýÏ|¬·ëIU@Õ­æû“ý½ ðOQÅOG.D·Y™osû`ãC³[óŽ+’]Ó×Àzõù8eHHµˆL‡Œ*Y»dBã®UÈ´[(Š«C£)‚¶šõ`Ñ…‡A9‘Ù”E†°ÿ. ¨z½M·Vano/¤­,&¾ÆZ‰ÖœúÓù÷:œ>ã­á{3?÷/HßoßNÁkÂè»è‡>«„,+‚þr¹³y´ÛFÂÁÞ¼Ö£ ¿´ÛE¢ò"ùjÝæ`¸<ö®9rîÚA9Â×a}ðß§…SÖ¢³Æ'nõª@6€JVoÆ,L(uºbbdçt);x7«ßë±l)¦q^yó“d0°gp¸4X(F#ûÛéžzŸq‹NþY¶CПZ²YäðÆÂ8dðî·-ƒ#¢F¥£œ-ÞÀài :ÞAÆ_ð²Zï1õÙ%‘u4µ7 7ƒ e0¦S0‰P²Oꊨ°UVêØ24"½x­‡·øsŒš˜Ê«0È“’XáäR6‹•¡Hm©S‘f¬Ân\`n<˜ak”†¯ )ÝÇCqÙx|º1+Ûà %È21›p9˜b}*šŠÌíYÜGʼOQ¶ìì·¢_ïD7Î]¦F¢±šžõÒ;‚h TG#6¯Iù¸Ì~ ãd}£°l Ô•B¬®*4 muû|ˆ§Ÿ‚„öµÀîjê/ìE|»Ñ‡ííiÕ÷ôuãò¦$û$*J|„›cÊ„‡/,CŸ!™Èõv=Œ7Ôê–!c®d®,@Ápu’ÞµQ]‡6”ÉF}‘}R¸ê„^Ø»lE VÃb-  ?Ãê–M—p/,-]WIÔæ6YßÓƒ$—À¸<ñ¥RåJ!‹YOÈXeõÀ ÝûhP.7åÇT××·sX±ÓºšŸâÇÝVü¹EÛòuVöëÆÖ^‹¾R¿D–Êœ%ø+¨Ô©s"7Rœ¸Ùbý˜Q²GšÈZWŸo®½\;Ábqõ’R¹_ä¸Âm¾z²FQÈÍ^{,\‘|¤ÿo ûzê¿?ͨzØ»,65J&”Ø¢¦üNW«-W+tŸ|ÑGPAŠw€> ΀[mðuýÄ;’(eˆöýY·]´ƒe˜Š5¸¹"Š›×ˆ>˜XÜ€ý1NêT•×e@Äu¿%dð=êF˜Æo²åx2˜BÒ{5BÍ¿„X.8‡lÂAÀ*íN¼ÃBB´…À’N›vM# \X€ä’¼¾yrÞmzb8OZ˜Òów]Í£°_ÍÖ£«úªÎÛáCé®S ¨‰ÀéoºöœƒWzAÇ=…(GO¹¹ï¼N o.Ѓ¥ A¬.ÎÅn_Áü»âKÿíù ξ‘2N,S%½ÔÍ *õÜL¿˜8ïÑÀôõŽÌÔ¸^g÷0Sꬖþ§oÆ m߱œÕÔb/ª*ÐéÑiØšœH7ÜwÑ 3d n‚¶b0x¾#û`öOa(Í­!ÆP on_lïâœxØë¶é@aþŸ:¼,¬M›<»y$Õ*"ôñž¤ÁâRD‹‡YzÐ~ûÂå|qk‘+?}æ=Güúqg2¾œjÚÁ-'ן›žáëò™iž×˜NÆÔ09|܉ëÞî\zc…ÆÁp9L)`´±*pGÝñƒû–NŽ!p‚è]&ˆ4+∷„fÔ´¢ð¹«¶K¥ ÞJ³9P¥’;dJ®Èl!ÓQ‘áˆlƒ퇯VØžul* XÒgÜÙý)…zÛœé‡Ns¹³6¤è³gèš–Õ­7ž¶iJ>é­¸ü‡ë¨;À³öƒÔ1\’¶«ý±Ã÷›+]V­ ’‘ƒÑÑ]y³à!ɵí–F4t–¼½=7°ñã÷“ôÇHç2ͤ3+{öÆq³òäž„™ ¤CTbÚ%ˆ>¥W ÆtvQ¢{WÏD©ëy:ë)®,DJ_?ÇúRØQ3Fé¥ý0‚*¦³Qæ,ª‰ªbô€£q…fe´÷Ì>çÅûnÜßÓQ\îÜ)Zš‡nãÚCºÄ}s‘瘄*-æ÷e„gKGyâÑQyQ=´LŸîdò{]¶¯¶õç9ˆµ¯Üù$O'™èHðÒÝ[%uGWËÁèÓÝh‚OóÕGµÎ<ÜÊ8C³+gWQö…_½›¶[¶õ3vn÷WdGZž°` …tœ×¢†’U•qC)£àUVÌÁh¢˜ ’[2£¥íÒ]÷QNôm²<è?ch÷›¾˜Úzãkôæ‰:›Q¬Æ÷ô„å1žp9j:!ÕtÒ÷»·m ¯:¯Ú7ž…Äþi%‡øETÓs'•5‚*—„±«w,‘ÜØMNá0Áïx$"A¼ÀÍ­¡o-fƒ9Ðä]ÂaÈa‰$[¹—ŠC®¦¡ÄoÆì¨üÜ7%G”Ú¯> ¦_­—Ù¹C.åUã ˜WÈçý‘ó«¾ÉÌ]£É°ƒ¾ýõÏýÌj8Þœ"°ia󊇘C °p« &Gª1b-C—…éÂÐßí3PýæKÁnÓ›äýSa\%Òˆ‹¯òýöù!…ÁvXî ènÔíý¿XYÝbš8»ëßÌo+øÜF¸æ$þY´j°º—pľƒ2m4<¯Fù*z4žchwFǵºËع“ÊÛ“©ªôpEn S.5<±]Q%¸Åi`ø­ä½îF®Ø×ÔSþm¾¢š ¸ª•±ùbxk›n"À¡Š:½­·ÀßÞ@¦½ý_ÑÝóÒÙu‰”aß¶I Õ$ ØÌ)TKß´¼÷¤pcÌôÒ¹•Î[Lïòd&¬ò!T'"›Hë»?dâÈÑÊõaøÇ›‡‹<*àVp G¢éŽ”?ûg`<RÔ—S-Šø£WE¨Ä× '¥”2õ²?°ãbèl÷°Ì¸_Ï#êßz±$Œ"S ÃRŃeŒÅ‚e4k5X‡n&hÔ®©““‰Yù»ÑOúÆZüŸo”8JŽ Ö¦‰˜ªéS7¬Ž´”¡¥­?¼°ú3k>iG]Ú}Áå4k “:.gSo†×d–¿™9ï0‹å% /‘"»¶â¼8Ïž0# íÈ<0k” Ë‚qc_Tµ&ÊÔgõ¾ô5ûqj:í>x.-oA>à°èsM)¼¤mž_)èÎ_f!ˆ¡ã@ Ú3Â-âA£÷FDƒŽ«Í¥peS¬Ûôlz›«:n³ÓµS7Ä÷œ<ףּ׶b²æ¡·„l¿ƒ9Mµ¶wÔðœžO3Ái5 ¿©÷}_èì«©á‚÷môJú÷WëðûjÎâžäCß}cä馘Ø>¦»P>ú¹è \?gPút­¥3¹wÕRô¹ûX ‰a?yo¬¸6/U£‹ÛÏ/ Á9޽Òîf¿ÏMØÏc²Kd^ÈL£t~ëbat›FÍÉ\à ä.@‰*QÇxàw!iÙÔ…èp4±Óƒµëöõ`–¹g¨h9Œèœ{“Ôhïlø®X=íRQ_„Û‰µv—" ©O‘àȾn ¿}õp¿[… ×-cjøÙ¬`.$—|·èÝ! æ5Ë.BH¢>¶¿R…%W?¡FúÍÝ–`‹lúOÖçç9ÝQN”ýäg¦5Ô”‘3)(È­’hªÉ(Ÿ{ KøÔ…|¡çI ~¿1[œþ¹Êí´ú/eQåÊN ÅŽxø%€p̨|ñCÒ,Žbൟ½å$ ñ.ºA§XXoÁ !_ßÇÉ까æ jžóC4–±·ŒÍ&= ÜÛÙÜ!ü|jX3ÓgªÜÛuåM¶¥Öü!XÝP¢GSÅ?Fd°L%’)yJ|ô‚œgÁGŒb=6þ)…KGùŒÑb}]˜žöiíìnv=¦[ty  u…Å¥1bäÅ,„ $#ŸvÚRpERˆ´rÎ{²÷>ø"8Û•ŒD!UxúáXæÝ±Êš‹üqffÝã¶ä_’†—êÐ芺À1«Û¾C´³E%ÅFIþ¿˜²~Û³DÔ©Žª‡²;åÌsiØO1weÎxŽ¡§ÌAåê¬Î³™øì•Å÷‰£‹PsMX(5ǃQžÌ@ð¯¢S6%ÿÍ+0Ȭ-Â$è—¸˜±¨¯ÓšÛŽ:˜rÞÁ>Z‚G»\ÝïúH‘…&©ü¿¹çp}g’†¾ÆO묄Œ ½¢5¤€R¾h’¿‰@Ì'¢ÙÇ ÕOÃÏh·Ö*w÷ÁÁxÛªãú«?W$…“¯üæ‰]‘NFÁ6s=ª[ónt9ÙIÌG“¿™Hñ HõšÍ#+>@ŸLÉiÃ6¡?y(—§;ÿÉõDvõgž”¤QG¥tPˆà¾ÊÍB3´¶ &ç‚ôÖۣ͂7…;.‘8½Ò=@<ßé<ߥÓÔÚá­Ù.µQ`–¥Y ƒ­1kðý¼÷k¿LD•¤;óêe•Aƒ‚úÂò™ƒD×"(öï¹yñ½(™B¨—â'?¤ÇVð-߇쿽ô×j~|£áp k#‡­ ˆÍ@½üä9Fxn…ƒJ»WÉïõ½lzÿžGA.Ò$°#72Åõ&k‹2ÉÂÎj[4‘‰jĵ­ˆÆ±wåóÿÀQŽèM+­TŸú7ú\«$⸡ÈôP@Rt5ÑÊ]yºM*Ú¸°yqülÕ ,VVÙI~ࢌ0Ý §`ÛŒ,Ó$Í’ö®Ä“½_×Ó—ÆHI¤H“áœz† 0鹌ê,K'þ¾å–ÆñY€»øSõ¼“ÉÓ5%Ö$# çÍßi3ú·Î'nÚ´­7m¢eÛ€0Ï}¥“¤ÞBåîÀ$À ò`Þñt¼‚ƒF8 Í¿¦˜“šƒ$'þ&ÚJ¼Ž9ó´í·.&ˆvz24¹?ÜÿÌLµdˆÁHª_WÄÚ¡™Ù\§’/ ë²úAÒó±«N9GÓbëÒ ð`#ûVò •ê¢~®šÞI/BBb1ßFªGJOpYç ñt¼WÑaÀ˜­` ï¸ã±fÁÁ•`\Ô˜Õò¾üBñˆmî×ñÀc8Bq’‘!¤ÿyÅžMŒŸŠAmñ+)®ŽÛUà²ÕUÁ9¿p|‹õfý¦òhø[»&}„ÛΚcbßb­G³ d×û¡ôñàºëe¾i#¡³™·‹è:~‡Ó;Ö}\Çl†ñû E^j0¤Œ#*¢ü»É`\AÄoëã»òŒtº–LÉú/õ=øL~(+Bt¸WUãñ¯¸EðŠ1S&|þf׉]g¶×îe>Í,táÁÂÑù Ž¦†4Ñ œiÀª S9©É[ ýßANg;õC§¼DçÏêr¿ÛÅ·Æ7\—öŸÄ}ìI½®}Ÿ‡1Là€Æ„ ƒf8¥”å“e0Zóúùó 1öM”iŒÍ(¾Íào?EO£×á³DÔ±§“ãco½¤·ðk¥Ç`øc§]ÚÍ“ñüî9òåÄ|A1ƒÌûæî»þzäμ¹L´M”‚÷œaÃx—…ÍØtâ¦íÚ•å•^´ÄŸºÉ¸'[ÖÏYïí¹ 4˜‡Z‰#f‡'­`ÿøµåsðXgNzFÑçÃÇÛ8XÒ M­KàÞñx«`QÒ÷å¨È1Ù$¾>²X’I§¬›±ëS@^`Þÿ»ãv¦ŒòS¥=g‹»ÏǦœÅÁ9;Ïø7ÛMֲτØä(dN•a$3£ò>7“"¾ç$7 ~Pá΢ˆÂr§?Jnɨ,YxŸF'i“Üû¸y«5CÿV‘;yò[BC£O~ŌߣeõÑQê]‰¢|G…Û_ B˜s˜ ĹÀ> ï˜ oR0Б¡ppÈ«!gï ž"aô©2b×™ìŒÐ!ŒÀƒ… [5ÙcÔˆˆ à ¼h1.="•\H’c3vLÌIS-ºX¦_v¡ª}' J Ôp>Ž+3îH»uó/æhÌÜB~ƒ“lÎÜ]±¥:(¿›IF^'ÛÓlnCQÃþ͈õQòºº@öq]dGƒ=•ú=p&³Ä,© €«=-ôãÿVý-8•uh8Ÿn{c4êBù­“Žx¢^o Ç(w•ˆ  q D7WP£ÕÕg¯ÜB]þßDf„†ÑwÅyãÜÍ7Cô¡°=0é¡àþ‹lBhÎóÅUªVz©žÑÅ£‡Ù×Â\6a&øcðšaõmh{ö“-R¶²7œAÇGåd…ò’pR,¤Øz°¬èc10ó_îÝe;•Äuùƨ*W0¹æá%slÀC¾˜7 ŒÔ5´¹Ôÿ&µëúÚO@,PÕhgO4WK ¸?C«£ÕDx1g[èyç-jÛõÜmÆžÞx¬ZMóéï1ιï¢Ü]âÖMq=íTýuèòGÍ 9¤RXeŸôüv´¼/±wíg¯¶aä†!95£óv5€® £e ¥Võ»÷(³é2èvY.†{[×Y/%¸›’Çæc'Kc(£ñ‹gíž–¸z@ó3äÚ×úúL1Àƒ“–²Ã|ûºÕ{‰©ÙyÙZæöÖ/3ö ‹¨ í02Æì’‡‡” ± Õ{c¢žW©ÄýÎÐã¤Ê:áû¡¹·qÊŠ¹—e,ŠøÊëX®ÓÕ¨-eñk¼ê`‘€3gÆdÔ4EÇ&Ú‘¬eî’GT6‰6¨­#:%ËIÀF_U.ƒ“Éß/rçx5pµ÷¨Í?J¯ètì]„RÌ¢¹àmˆQ@¬^é¿sµG³‹TË`”9¾ʘ3îü9¢µù×ÉSJcÕ&ÓCQÍJé*ZøÝÓôü²®UàÌyósŽ_Û çÔƒyÁZF‰Mª6³ülÜtéùº ƒãkrZ@Öó¯~šÿ^Zù-®ý1íIîdOñ{yñXN2Я»ÝâÆ(±6d®8bQÃr “£c˜—[ñ-Ì(£…šôHÜfLŒ6(#<ö'Hn*%>K·‘—þ¡°¸Š9mp=I]°ëpÜ>ÊøîÐÎ9LŠ¿CbO«¼œ™öÑa*®mÚ²Y`/nåy6ê\³ ŽEã9ÆÐ©J/3¹­‰ÜLuž…â3òŠ"¢º’[I‚ï RÔLé¯rö¬‹ß½ñ›Þ·Ê|ÅÎè>펭³V`€>fÍ*Ôƒ}i¾={5(æ¨àûXk2³Â|^UÞ^R;JR‡F:gM§JÝuZ™>¼ì@DÁ„ÈMHeMGß»lPVJ„aÝ ©œÃÓ‡®«ž›Ú(cϲpRÈi9*HÕl€)XI=ãúï°ÉmèwelÊ-G[¿ÁŸ8%›ö‰ŒkkØç–“pZ=;ÑÐcïÜEӉז¶h¿Z_ä©ÚnÀWÆÌìQ“ÒîÌHyúн:}?¹‚‹ËÎt×1²ð3ùåp–ã÷ŽiŠ­|ôS¤]·ÒºðÒâo¦Æƒ'¿ƒ»Q?Ãùæ“Är¢ ùÁ;›TÇñOOP2¬T©yªR¾+©yÏC*ÁSG?çJBˆ¤ÀÅ ž\Ùy¶Ëïp¿ŽÄËsîoguu\ú9[_ž#cÝ'êË&<ÁØåfGÙÿÏ¢ŽÁY#ä-wº„ãš®IR~ŠÛðvqu·j A–½³Hãíãr—ó7]ëDoûeÁÖOEåg-&vsöÒÝN+n¦Û¬šL² 9€QÌ„2d{˜W¯ôê¼]n] ûlÝ }­¬+Lž ëG?¨™QÚ7£Ïb¿÷^'xÙ-ŸºÄ‰çÍ2ˆàS ‰Âx¾•™ ¦ôvŸGŒ¨éMݤ_<Äèyùј"ÓɱÔšÚ@ßûÜ^Ù1.Ô´ºÇðöBõ~&éðP±ž&ƒš!¸ ŠQàȤfX)•Êê°ò~˰Ùð¸ŸóÊÊ^7ôûËÊÁЗ¸«èq ³ïp5¶Õ¸?Ð"ôšvçÏþvv{GOÔ5ºÙx”¢$7µi¬¡gÞ¿&(èë– Jê—ä¸ì.¯^Í!ññîqÒ†<¼Üâ J5v—O#åá2³ïþŽ{W«€áRÕE6Cá0dZŠÆzÃçUQãä #¥GYçNWýþnþ>z‡ÖÚ"2莸•ÞÍ!³ªÅêKŸž´)2ÕBþåýš—¼m5¶ú•_5aQðžE OêLé6Wž|¸ /éLÇ;Ó=x{ÿ^ÀÕŽ)w SíZ¸”{Ì›hQ?†2ò'èU½p½+ªvé9»WßAÂmpê~äܯ½QNgêë ŠTЙÞðròšÙÇk¸ì–4oèW‚™]’ˆIôù¹{¾Ž=úÑÜx÷Ÿ[àÁèµþ1Ø}"‘]ÕÓB]¶Éžˆ2T2ªÁ"©luçïs+ø é¿5[¥Ä Çô£3®³íyßN…35`×'BSIÇ*ó$É WE•øö›¹Ühñ²f)€®º ÓŸ·tÓü°/ ÁP›O/-gòkºŠëß­/EŸâñ_ì›1W03! ´,¢¸.|.¾7áfákŇ#I4ê*=¬ xÂVÉŽ‚?'nÊ¢¢Ô´€\û8ç0²6 @O ¥†yþ´jÞÃxíÉgBß\?/{‘®hMSúeWÇî Ä ¨“ˆ²w^ ÎŒ_‡Ü *(âž{È8ySÚšAÀCÞ„Ô;‹(ñ4hÛÙÝÇĪí´V‘/æ`ÔXpIø^6¨"úÕ•c—5°„j¼bXñ²aÅÈ]n¹¼Üƒû.ç6 ÷z DZÜ=Á¸dwbßEãîá "4Ë?¹ßr=x¼¼û¼&.ë¶GÃrÏ4wAŸ²ùõù4ØÏˆåŽÄ‡â…‰.ÒëìC”ÏÉ-!¸ñ 4`Õµ¢–ü¶T³&¬O)™¢!"{@©ÃÄæe}^¿mxÎ¥%€&AòÐпq¿£ßce¯MO½@…ƒ/j"lêÁÝ„»«$r³—vÒ*VÆãºbšnƒ‚ºLè—$âZT#"IÓ;Þ×ñaœÇwvû±ùºsòœ¼6þšÇ'}oÕ¼[Ÿ@S’8ÒbÑ (©„ð’zŠ'•-]öTq;§ÈEëQ{ &„²†aDÛ}ÉBŸ-¤åb—çî–ÂPân"¼†*3?óŒºþÒ3†BxÜǵÁûª¤/¢Çä/ÅÄ Ç²h\¾k!5¥IÔ›î‹ÑCš7n™aZÑ3'ǨNÈ㸔SYIÄ&ÓÚ7K~nŒ³Ãn`xU£°08¹)âk½aÄY2,ÄÌ©@,K"®õ®ðajÞ72Ê¥¥ÅÞdè¬9<ìGÈ›A÷x¹J¤n}ùÀ@¢Dᦂ2Θ5,-U@¥è7éÑgFs­)$}ª ºË q­¬!L‚œZ¬ä•´ŠJ‰k/°ô©ãÝâéîß8qR¬‘’% Þ¢gN?J!ËÃ\ ›¢kÕø *Âß"%d%!»³­ª(„‰^ùyê4ñN}¾ÿ&ÎÃÇÒo«ã1Sàº`7°’§å\3ûâ©”"‘À{~7|qâbá£ÝÊIº¼œ‹«‚¶¶sÓM›-ºr =‡âÊÃA-¡ü™}sü1qí·Ì1ÁUÔ:ØÓl"ƒ³ÍUãݰ5ét–L]jÒþDz‡ß›ÙÉC;Ú_±y{9üaá—â&sDX‹g¥dç$¢T¹Ò¾Rex{4žÃ¦e²Ðàõs®qÅ— æô«U Í)mVÅ Ò, YÖÅٻ߫Ï#ýóPåškàòöÀ Ä (×}ï”7Z-NDªx\CóÜÈí8ÞôcêöŠÞÉ8YA|?Ê}Û&’%ý§®‘Yßgce ^4By x´Í»–3–÷‹°ïNõ“!> &ü%‹¡O65žph6tèVjLyß3iJع§æÒîÐWïƒGåŒÌ½ãÅwu.¡;°¦rK(Ê%æ$¼û7i9H[ª¥' 뚉! 'óXB£ÙÍ7ñ2¨ªvI¬˜¦oñÜnë-wšçlÝÇ©++¸«ÿÁ‹*?Ã(ΫÊ¿2>»¼ó}}DuþíÌ`÷8LŸcm4³/=ogb‘Ë‘»Í v"sµá çµiç?ˆ¼‘þ&<îëËÜ‘C©˜È¤äUµˆoLÙ °( ¢€ÒEÎuìåž‘“Xß$FÁ+¶ÜE9lã‹;ùÆ»¥¹œ­D¨|˜ãÿ ¹Šý<÷aü‘©ÛïиuQ£2)€1'8³¾£<¸Ú ïðZÐê}>]}f¹a-|½×y{ìûø=ú^?=¼¿ <%„nž.jøQÄÄœäB0aà%Õ¨8Æ« yrÉ_reS&–E(Yëþ”ýô0¦"Æö¹:ÿenÚß’{쵓íHéK9-Ú¢3€’œ&‚`5¢úÑëéMa…ÝGÀ™`ÉF‘ÊÆC‚oƒºÔm“Ö¯àð³³öÚ¾ŠÝÆ;ö_ZªÛ*œ žŸS¯sOÍkR`†é¨{þÖ.n·¸vݾóøVÞ׋™7ò’l£Ãw“)"„ÉDÑùk›+ÍC„(L~SqU€"öhÞûO¡m<ç1Αƒ2CKBØWæ†øä~›ÁÈš@‰ó|_Hœh _ÄmÚv'f3v¤@˜Cº@Œ´”ÙJAP bHNQþÊ•89:+†‰þ6Ö^;Ê–†hŒè°Ÿ½¼Þߪ¬ñ2&"B—y"VÈ©…ú’±a7¾NÅ€YˆœUÀH£)ñ΄VBƒ* m6¬¦q=+<¿l3o›I4o,š†$>N¦¯g (·áervž-r¥VVèHªô'%[Ù²áÙÂç¼Ù{ÿž®=ýL,õþ׬Ôu‰Å¹¯Œ}úMÁÍ2± - T t  /¾Úæ0"! "U^m®Á§Š˜B ]SO·¥Ê»}ãê/°›hQk1IØ\§Ë'úÆóô‚áLj9Ÿf÷ú8ßg“à ӊU®{ÍS·9‰ã51³³í–GØæ¼:Öe[ëÖT¦)-„ŽkÅ‹/£d|j´­#÷~KVÛé Un†\•šóÁÕê'³¨µ©xѲոâ¦sƒl`‚›-$BÏhß'–m"åç‘Dë²í’I‰<`MÀÉ5²1LiÕÙgC7ªêFJö!¼b V/ÂDJÒrìxÉð˹äRí«*;oÄ’Ö ïÑ*;>娵G–¿¸¼„ï?OãïÒjåÔª¿µ”PUF> ë=JleÄö®ÜI÷4i]J@£îw¾I~úæIZlWæÓú¸úËt°æ)ºYžäóüèŒß_”çAŸ~>ªÑ‚f„­B€- WÞ¯§öG )Ê¢‚¿Å¶ãf%?á;tÙ6û´ï$"Jg¾²nļšŽïÞçå×E´ço‚07òBûRñ»ªeCkaÝ>¥Í¿²ÍƒØ¥•O?ö•Œ[>$3¬nh%{Û jbÕþ>lÈo¾»ét5 æÁÏ’ï’-¾–ªëõ@5Ñ‹‘U.Z´Ôb³‹1ÍfyÇúsÔpxoŠêmܼjph«¼ë§H/ìiB©—\¹‡ ¤úi¿ã­¹ì]½Mc(“9Ëüކílé¹ ˜*ÔµLN»×[ÛûÎXcòRy‚m«é¢ÚÁq˜¤X /AÅðä݈ž¯¥¤ˆf{Ëô= ( ÔT&‡¿Ž g{­e`Ù˜ý!7m ·±U£—,lʰ:¤µê§¯µùÑPú 1ÇfàÖÒIÉ.Å Ó QÌ ÔÒàz±v²I«Ì~ø¼**¬ÃÉâötÌçKºÀ ð>š A—r3× ›'â%·î5ÚÜV0‡k§SöÓ©% .C\sn2{Õoª½õ[ögßÞð`'8 dÆhóÞç÷’ZÃÎÉ!ï×ý³Éº™÷ÃÓï2œ4r4ñ=Zì};C§n©0üóîl˜e«k©X~KŠØžI€®vùQ@4*öqäÙb¤'ÿI`þ¿³»_Ïq“8KXwBäÚØ¾ÒŽÅÎ3`ž‚®Íw¡›©‘¬eï¤ùbž3£°I§]ì§(Wå9¼÷9,ÝŨª…â”þ´xWáx£bÔØ¿¸xç}&rµ—K—7ðdÂÚ(ïl~¦%Òï>l9Ê ž¥üd3‰·Æ"Н‹©Âô÷Pë†)ë9~úP´ÅᲡ‚GÙÓÿ?yÄùzìïsþk´Á& ÅÛPB6È2SåÔóÊåÊï=çÒê>ª© 'Ýo‰Ñ¹Á“Y‰¼€­›ÀÃç÷žÚÚqÚnϦ ÑøišÝNZ+’¬` >ý¦{qCŽÝ³ÄzQÝ6ÌȘ I¹wy2RrÔ»êiöOˆÉ¸šã#梴-Œ+©hC'Z:¬Á0ðS[• ŸÆJz]Ìæ‘ec;®¬º½­UEô~õ¼×v!WÄûø‰ÎE­úþÂQÇU¼­ "ô”Úk¶DU.²§ ŠÌö 8˜6ó¦>iß¼±“ ïG—Û§ÓV^é8û-YSà¹Ø*õšas ÓÁÐÑ|3kVˆŠ*ÖúœåÓȾX®—à7½(õÖoˆÉDgš—'Úãórš¿ëêÓf(­1Äf-–=òDò`{êT—«YþÎT_®ÊH½2î¯Æ¨"cï¸V}¯ÏLïD±`¼=!á6ïݰ¿€Ìd‰.×gÿ0Õn)§_Á´li¼/’y–¹vïÎ×用Qß9 ¾Û¾DSüô¿)ÿ¥È"¯zgüˆ6»½xÿ¿çß n†–®®uûÁýU¿²lÇVÅÇb°4\Ïæîy¯UÏ·æ/¢™ÄÓD>ÈÄyÖÉI#˜ÔŒ ±âÈúž?K*ß„°;=A¿“¤€¾~ÜŸ_Aä½›††2HéìÿG0zøˆ¿sòÚÝEtË¥ð i-Kw±†Ñáw*€ º 猉öÊ>cC-à¸ûR –¹Š^äVüè¾–®\±Ûi$¶ðòoÞÏpRŠè¤„crFùjÖcE¤ìÒÉBfk²O6îÔ°®ÅéßµËÛeêl:Ý<%cdxL­Q”ø¼.&é´FŒóéœÁ<ÙPÔô{´Þån î”4ù`ô¢J§ kÇiÝ\>_è[?êfü—–8ŒTÖìõÂ;É»ïq“ú:Êè‘Ê/G¨ÒˆÇÎH÷¸?­rÝ©±Ô/SÌH² ù;ùLx£s ^M¼?B÷£ý*]Îk¬úOø¬_jÅ À®È%`N¯F“‹[ ®Sí2g}!×MõH`û–à.…õ&gí ¨(€)Œ3CesšÞڙνcvv_eÒ}öÖ69qr{®§÷džHÑ€²fãü §'–FPIúÿT&|ðè¬ Éí¯ÑÀµaXƒ?—MÆðK_¨è+#3ŸlS&•ótŽš—`1d[)N:=Ôz;︈õÅ6F”X¬×[~wÿ®su¿í°ù$=þd_«Za"µ)> \)0Ùz©z­ù‡¨æ/ª7Ö.ú½žÕ³õü6o-´s’F ñ©TÒšº„eÏšýË~„º‹œ Y{.Ѥ¶íy!ñ¬µ¿çG§Ú¥÷þ¯š“ž$zt|¯0J“jªÀ ̰óƒþ·–Œ¤«ð@‡_º=_`|ï¸ËÍÄÆ ¶nÍš6ªŽj6-.‰(!KÑœ®˜êÆE8Å›gS£àé# ­%º…QqÄÚN3¼\¡Á¿Ê@îH,ž*žÜX/yæÙ÷þô˜]Ø—ŠÇ ZÍRfçµ™¡z÷L¿ôyhNæÕÃ#Œì„w¦ðØX4g¿ˆ»#^®Iÿ{mÌì<©Ý²ègòoBÜú7£}æMÐqdå•ΦUIø]—ÃdÞpi½/ZÛ‡GÈ ÿgì3¿ßZ¿´—qï@ãövòkŸ=)™ç~•Ô~ºR@&úÃn >rjáÐCÅSf›XàÓµhÈ H䨇j7Õ¡Ró;Å|øz·6 uÏæ>ñ=ʃ Íÿ:’ª±ØN[þ  ™~¾^å¿‘¶Ö÷ôwþ[Z¤mºü䥛†mMcöµªÚÆy * ‰çôC]"Þ—«€û}Â,5±Ïû˜Ö´ ê»Ú[ðÑd Ô̲†ìY¡‰P÷’ ¿@>¥"Fɱg“¨=“Vݤ¦ßm¥{Ìê ƒ²Šk#ÓäžC…ܤÌô0Ч¡F0.ÒGF9ÀÆ#¯]k¼÷s¸k)°ñ•ÌF¡>Rú«h~§}7ÜÉJQ¢õ:¼ƒ5ûÛ¶b{o@ÈIÇéÖÃü»×߻®Õ®}?!ÀéÍ…> ~õ‚™oÙC&ºª…b{osö±8°™¥Ö¸\ð~Éhmdð%íÅ:ËIyȃl¤ÕÇA ÒÁS’t­Á) Ç¦¨d¾ì³]L„sÉHçsÔM)_æy6 `&¯+|o£jv¢r®Ïs¦„Ðâ©vÅÓÆõ//Â2ï{¦éå)ê!‹›¼yâB Ñ *”‚ZéföÉ„›èdß"$V,ª½“¥¾pǺ¾íŒ@/®w¶ŸgþGCÁë¾Ë ›09€!¦YÚl÷¥»šhÅêÞÕ_“?Ìζ\Lmz‹&Óp}¯1“5®{^waž¨á½0¾pÀPµŠÞ¾[IxëýÌßomqOîŸ[ YÁ¡'V9\N9é*ÓW=ÁZÑ‹åì¼ë#Q§z…rˆ«Öî KVÈY·)¹Îx±òSemh`.f¹nYÿsò.Ÿ¿ºÃ:ƒu·tÉÖXPÖ©ÙÏÉQüî{i8 ¬ÏŠ‚’„Ñóëô‘Ù¤v°èkQ%pC|%†É…ì¦9B†WƒS Ý”®ëÖÁïY}O~Á]È÷hMçSÈO¦4AASìÄuÌž¢·¯^·n Ò©Óü;—ïKÊf;š¥T¾Áb±mK¿Öx`Oï5X"°R­”:å;¯N©ü¨ÿ¥ö” š…\Ö.O)RoYÄ$ÄúÆ‚âÂ#±Ö¶Ÿ7µ­qÌrY" fo ëñçZôÄ’² REÚê™ |ÈÇ>Z‡ââÈàÅíDOåÝ–µoÁn-µ¼§ûƒ üÙÿH~-ƒ³Cníühoÿƒ‡'kî•ÞéˆKþvLU‘–99ºÝm»ô@¤L¯±ù‘*ùEŠ^ŒûdöåFiñnT ŸîË·@›:’áÁ׉ȥ¬R&¥UyO ¿,~c.¶ãÙ  PëE#àË[ ê;ç÷¦RH¼îÓšÚ^ȬP|~×E^ Tã̆߮•Hi·ÉàCS_ÌÕa>äe áˆ4‰ð-Ô÷DÐHù©Îv>k’á–6,IQˆ‘·¿A¹±,¡<°Ãô¨›Íé&ûî1éxúï­…Iú|Tþ¶æÝ飼é¡vû~ãVÿ`N¯²–þÁ­žxì<)b[é|Ü ‡‚À‡9¶‡‚.¦ü—Aüg)ÖÆHýùàÓ±Ù°»4ß'_¯ò7ñY‡Ùý½ßó-t~“ô•†½ZÖ6ÈE¿ E–Y_øîG¬ìó”nŸ^ß7±Cr‰ŽŸ­K¤Xï4(Ni%Ñ“Æú¿\è|Èn¿åÚ#ºbH»ÀŒywEQ£ôX3üøÉ$t*ƒ­»ûµ²u^ñ[ ÄŸZÞ³‚΂JÕÚæ‹f‡gGœà×ÈeQOô©dߟPtœ‹âoFå©÷AµªuoÅ™oò#bCsb¿ï/òõÕœÊü/ßϱžó»Wˆ&²æ}qotœ9F£H® oœ«ü‡xR0Û#4uµXÏâ·x¼Ï¢”€ðx×û®Â‡³¾.’,Ol}%Ŧ®Öhp£GùÙ$J¥üm˜Ïw’8Ï‹€ Ìåb;¬)@¬IÎѺM»ï¼{±aÉ ¹ðAhy3 ]¬›H°½9)g°ÿÀáGo¸‚à›¸â(ß—6ÑÈWïùûzëGU¦„ÍN\«’QöLøð?@¨Z¬üÛó ;œLÜçaŽu3ØýãÏx-/‡Æ0ÿåŒÇ[‘¨WÀÏÐÔË$g «¢ø{D ±f³ñŠ¿…•vWxuàÿû}£î){…›Ùœ½›B0PmÄSµÐP¨É|ì³nÛ˜{¯‹ÈwU ÉV oé@F þ`DÏ…·jý|°žæûs±òAu´ÇJWE¬èÝö`y›O=öñE?W‰ÒÕMHæó[µêîWàHSÅn²‹ ´7|¦b "‡å¢6ÖQ³Š^qH¤A[¿Ô ]ÓEæªü¯mþºï¼`'¦å¤^ªê–@²x uIP#Þ¾ Œ¹6Oãn…Õ㢹ώù)”²!@¥—‰Å˧üV<¹²YxzXËG3žžd"‚¾Nôü®r¡›~BñðÁz&e 8­ý/µÀ;èÂÄ-÷ \ãVn ï{ØO‘R½ñû@7¨­âÏ4å“RØÔ{ø.ýʕà ¶öõÈ4óâ_ HT;ÁÖdÎ,´^Wƒd×Óx*ÕU!Sè<ÆJêóˆÓ^G“F·–÷á•Ó%žéëc =Nñhëëjœ ÂK…tÔ¥sЦ¤uè¤^½/˜aOhÞp£²Å8e¹%¦Kñ´ø¡ðK¨Žœº% Z$¨’$(msoÇg‚ŸéÒPˆÖ³°Q¤|å Š[/Ì–s0Õ®ž€x¬‘ë@g×µ‘ pÀæ¹o”ô§ÛIäóêœ|•ø‹ß³GS׈õç¯Lä (mÙZþV0-,[ˆ.g%W›Ùõ ÑûdSöfjý©4Mjý&[_¼j§ÖÆNFæüŠªáÈgs›5—@q°W»~ÑæLWe0ܤƒíµ,ÊèÕíLN{LºK©I:›V T€y™NÞ=® d!Ú/«Þ0(•:>§ý­v¥W-x`y³Ük]&*ú…ñsL s”oün'Üámn~Ï%ªR`ä© ÂÈ0Ûî»MsΟ?YßEYþòp6z%º3î¹Ho’×Qbßæ&ÿ¦mÅ.Ÿ3X¸@þP¥T—³5fëm+ 8pägn æ 6“Ó86ž)®èËIή!ú™ˆáO–°‰Fèþ¤ 0“Ë’\¶Gª/õüÂväQ&£ïÐ/1Xs\ÐKðÌç' ë™ðõc].$ÿë'­wÉ©~ÛÊçÿЇŸ:?E“²$ Nµ$†éϯ‹þÜ/²Ây%üi­ÌõIK|®ci]6îei”æ×~{5ßV>ƒ(xººGÇ~5·0j³mo¶Ö³C<16ùÓ#̵vÅI%„~Òš²ˆÿ‰©Ù{ó*aÕö>Øgk«7a GóJev…Fšƒ›å­õehàþÒ’ÝôÅ•@׈?ÏïÝSÙÁXNfci=shöðÙ̸v³¦UØÙI¥ñè/T=–Mý.ª®ºIQ‰Á©µ±ø2”T‹<ü×O†ÖÙ¶\4¤:™!îœÃºªˆÌžÎC…™jQ¿(€Íu ¢s­»Œæ>ÈÃmÐNS9•Ö:N fOîÝ9YHqü7­6ÚÒ•ñ„üŸ9‘ˆ7F|1 I»:t8ë9æ3ÍçöEpO6¤Â±Ï§Z2Ϧ»ò;¡Ç©”NIyv3¼œÊù¾÷sêBî›_úáçL œú—DúðßÌq0žÒ>g¤—› # }0#<Ü&YŒû €(´× Skû ÍSF X¬*ø DÛ†f7”Â^KúJA]iÛVêg¹&ŸÂï÷¿¦F6ã#FòUãuF?ÑïÉöC0™‰@HA‘•òÉKÅÚ… 2uh$€œô-š¾i)(¤ ©€÷”؉®X!ùd‚÷Ðá âÏ—*!"0È;ib!ºŠ¦< Él[ÆH*K¬GøÕÜÀ Ñ5w€¤-ÐCñÀKb DÖÄô?­ˆ—®õ¦+ F™œc 5eµbz…Ñ:,#rÅöúoâÒG 2Á’BFQ*I´‰#" ZGc##$ÈXFc#+‡„"‹Äa%"cÀ„UDÛA½ dTT³ ŠbŠ8ð@¶"ˆÙ’È€,€Š…„D²È€ƒC€¡ ¶ÁAOQ.º‘nˆ‚Ý U.¸”¨ƒqº "@‹ÍäÐy'‡Ó ÜÕâó¾øShMŽ­+”'‚B«vÕRöÿ¸Üo:×v#ŒŒ‹IÎepŸ‘ª_¤G”¶)M騲"Ôâ´ÌmdŸ_ "¾5H…ÏNônÆQÓM¼š»aµùu|»‹×ö;í¥þ8;×åÞ=s'ìua޹8¡j·Ç)™óbiÕ=õ QÓ²¦éŠmCp;Šܰu Ì»´ëȦܜ ‚øgfÅzb<ž÷®ú§‘ˆÑ@Ÿsœ)ÆKÀÌ€! L¬ÞÀ–BeÊbõ¶¾ŠÑu3 l­¼„Ô‘ XuÔ:7ºÁÕ1‰qDù036ÔsÄý¥dÏ–% àíúÈÙÿîÇæt¼Žgþg4‘‚fê Å:x„$I ƒ ˆ²2ˆÄº&LW‰!†C„вrµw4ûd~é}ß ØÖI¯û8ªm_+?ñd_;g&¦áŽÔò}jûô@\¥S×­ÏkÍœóÔL jšýÁO68Þ¨)&8šq ¦ÑúÝ&¸ãŸìMÉ2ºàÀÚ6äÈžÈÎëŸi ¯«Ëš?Áõ4ØY®vç  WÝxP•þtÕ¦®¦ü´¿×%(¹=S­­UƒÊÛÁ¥´IΜPìK-5°öÁ€\øúõ¬Y†&¼¢¸Á Ùr¨¿ä}Ÿu°ÄÃð?·©î<Ž·¸â|ÍN.îîë§?6{šº Š Š6‘®ˆˆsغ¯—Oÿ˜ ¬“)¬é{^o¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ¯ï¾Þ»}æämWwÙ÷}µ¦÷lÛË»Nö×FÆßd¶º©¾w}ï·¾î›ï^î¯nñ×dÖ{»éóïwwkdÛîïzí÷w¯p›nÚíÞûN™R„O£¦dcëËÞy²ëO„ÁZ 1ŠAá0¡Æ@ˆ GG†´@Â`«Óôî¼ÌÿÛ âÄÖåÓÏ£BáX?Ò`½t¥4:‡ŽÙÿ׫˜öß³ý·‹âÑw#%sµDz¯›ÌumÞý÷|*„笼ÛHh^›/_¥ó-ÛâÃÌ[â¦ó|Ž#!QçeDøž=5Þ•ý³Ú,ùú‘µã T8ùn±~{B éOQôž²I Áˆ‰ÍFûí8|µ(v#|ò’µ¾ !."^ò ®®~È=hAÞûC‚4–¼…cþtù‰ a}½†9»éå»ÒÍo{=À [1 y;ŽN…ôš#½ÐOvø|½©\‡ëN‰Óîó¨J•³Ãn®”3›“ŒZ¿.”7)@ "€$ w+9lÎì$“„S–§’HÀ!I »ô’ †NP‡4ÿH‘C~L* I S $&P#~!ÇðÀÁ4'ŠPK ŸD$“øð8'|üx‡,£„)b6fÈ G”‚ "XÇD Ha€øŒ ¶ œ;ÁÄ$$„‘Ð$(òhÐïM°%j ³üza+C!n}ýþ“$ü?I,„®–Ü£…;!„’-Ãa >ÁÑ¡–1ΓÌ"­ì.£ ø6ž×|Äo*íÁʬ€2_…êWz,^cCÅý­$·V—èÊÅ}=•}_ÓóCÇ yjØHIXÄè0Œ¾öy FÓ8Ÿ`q2N°ÆI²ã TëÏ¡Šú#Ã|.|KwF¢«Ïßù5¶Õ¤ÐÆß8Žq÷õß`¢D#î–p€`ëRc]/,`ªæ ¼móèä¬K¤u¼³i:³ñ„¸ÌѼ@Ñ8=0k£~Û¡mÁXa-¶ù­{Eú:*—¡ˆ4]çÂéYx”‰|(ûégþWÄå¤ë¶¤¦qû¯¡ù˜·‘ L]ƒë ²o³®gÀ \~qª¶³øŒä‚3âgÂ÷¡ ‘Ñž«¤KÊDl]šðy#ª'[Ô¥[-!å{[CíX¸^Qºß‚郣¤|H+Ñ.ccG¤=0bÎ0˜patwRp¼m«½M4vÛï»AŠ9ÊJ|¯F·'Sæ lj©®åôêPºÝɱJ0Qåôû³ú–-¸,‹@k¾EO¬?ô´Ç•>žjâØbSL1}æ‘ø³ìÙl,ð{¡÷QR/%à ol8‚ÿŽÔJ¡ EVâOû]£á~;¯s9;å=…Z›ú77‡îØÖü9íW$F|û–oeÉP»Ù°½\EÇQ·¨›{´¿Ùâ½êø`@©§ÏÚ|¹¬’–ùÈÆÊú|É-¬éèW¸Ø ªšë=Y£Øck`ÀQÉè>·þdˆ¥Ž]T†…)¼ïÆJâÍ·ú†–p‰@u‹˜;ðy^ú‹{|Êê–eü'|‘„XV$,Zd‹wfߪùÝŽŠ{ö ý–tŠ.…FO[UfØÜñTïb1³rœyÐ@€ìá7€pØ2 #Åb-•­„ævl‚™¬LŽÅ€îØ»$óL#pÉmØ=v’ÈG~Å©ˆ¶@S2{Žâ«["ü´QÙ¢ÿè€î–ÏS,Mù3ñ®+Ç™²šoøŽ» ”„†ŽspR<‚þ¶ŽkÜÄ›ÂúŸè#‘G+†ªÞŸç^ª‡èµ|× —!Y§–¹®­vÙIt³ÿ íÖõ?ƒ±ÿãS´}]+‹æê¥Ç@ÑûŸx †á—qß+ï¾{ŠG_/¢Ìº½£³ØËô¿tz<7%NtËV$ “Ñ–kFÓÏJˆ©7Áî¡ÙcR* DU ûúêÐÕ²`ê{)ðIØ ñ9©UÁÁ­Z¡V®ù²Ç¦D•"Ìûœ/¬ó›ƒQ:æ÷ _ ¿Øæ´€Æ†ûOþ†Y›!² '‡.FÎbzý±ð9_=f!““!SΈÞÀãr¹”÷¿_u°¨cÊbHT¹dËé~“˜Ýæ§§$åóZØÏXÔ`öWúì¡ÌTW™û…ƒ;g"e5³ÊDYÃò}ȧ™ª"º$-í€Ú%ñ¨Å¢=±`ºxoZ{¹´‡B×»«÷í“oß7²üò/ø÷‚Œè[;³\üOj$Æ:§WÜë&ór*³=×{ÌŸÝãt¬£’“0.3BÖk¶,d€Á©3>°?yÇI}ÙÓ›%éfêÕZpïô!ÜLH³G”´SG¨zû˺º>¾Þï<œn6ÖÀÁ|Á¡HQ'iöŒ…d …r\ˆ$çÉõ•~ݘÜo¤ úfï}Z5Û?I Š­íèWÖØ6®À½LÐ)ø]s%xr_§‘ÀÞ¢ôÓåǹÚà œ8$¢FĦIò«·aåò:½yÖÍU·4ð˜47ŸX†BóëQ¿*‚nàD^ (MÓ%õãÙÞù‹9#æ…š1^zÉ‘Ÿõ{ëõ~±‹’¼ VËýrš´þÒÊþ­ŽøýZ¥!Þe|»ã3ý>#J˽ûÅîá’%4‹ÂÂ;Þ.'œlùS8îûãÀ „‹ìmYzÉ_:K}À{åì·ÁrÂCÐÜÒšˆ~—©¯ Ó8Û)Žâ”ë™?°ƒAÝ„ª › <ªMÆ$•¾íçà}‹ú(%ȵˆ}L'gß °çìî£ ”ªdâÉqÖø$£^„õ•¨Ì5¬Ú.©f®÷0—¼Ÿj²ñ«è5Y·¯jMîî\zE’Ó½«íV€—ž5ÍÍ(³rwÆÏ[MÕš·4»Xß‘¸z,—ܽT„yí5&rÐ>„]´ÓKú À<#»*Óáùr’(ÞFwy5MoŒMZÑ÷´[{~ÀÇáùM@Ôø”ÍVTÂ)hµNîpL÷aH6z$'\S.Žbow1¶ëñþ—¬€÷BÞ§Šì/ð¸VÑ„Û%ÿgýsž]Ÿ(æÞ¨£Sy€5–ìå ¥§!jýî_òÕ• ̘Ð ö¦sñÍÉ ®ÑÓ!?)—•6@ããax¤Ôâ>ÕZ;z|ç<†FkÜËmÍ•"ãöè6DZ^t2ÖXI¸f$uàFXc­ˆrä ©¨Fµçm2cç·toòåkUK¸*¯nÅGÁ°3»KWL¾4)"†¸tz¶ 1‹ëC\Kih¢Çž Õqý­U!ªŠã€º_Ìòñ‘…2¼{ZÞw~L©òq›7˜:òq ޱqाªQö¤ð ¤†µÌho¦§ïšÇätªãU§<§ž"œ níµs0wËM½bmÔÙŠç“gY RCyÎôVbWeº=šöUsšÑd¾0kãÔ zñÄñÛÔ‹ Íäž–¼iñϵQ¥m÷;´4–£o6KJj¨}ÄîJÇO…‹ïÏ3˜viêå?Wt"5zïÛ¿)3B.6þUxI7åû@â.« RI䊄çß³ÓÅæ$_*”ÚÖÌ?´œû6;p}pZžâª: Ⱥ–™Äõouw ¦¨ïÈáâs5½+~ÝlZjgÇw6”C0Ë\éeþ›{ çF€“m\N¨~ó&+WŒ1þ;ah¯[ðõJyþ_˜Åý“ }%CO17à¯ß“l›¡ÜÿÓ‰¯Ø¿8+Ãi˜¡ßŸT“ž^™YÛ¼ØÓÝ7i?‚íÆ¡±_€üB\U>¬eÔÕòãJC‰éw½™CíK \S,Ý-Óù4ôLÆ^:Ç0ǯ²Ôuvµ‡ÃB×_ñhCLðå®<'#¤þÄ )È*óWLnê{SÊ»œD2¶‘ú„Q^ýˆ×wäëÍÀå j‡;ùÉ6Ç5Î%6ö7©8(¢²_RG!©voJÈZ w"ÑËû¸/jb¨ yuÐ4›”+Ñ…³¤ÙžX" \‘özʵë `Þ¶‘0“¤ÑÚ¡_‹ ƒeðReò¥ù´Ãëk—–c Žð‡.ÖI¥Ü—Ÿs…Ÿ÷ÞGXɪÒÛAŒűÔo„øí]ž­53Hc‡h«}$Vnq‰ 3Fù©W &F£ðÍ©6@iåW§˜Ö_*w=idÃd–âBÊQzèì¶*îˆz¢l¥ã¾]Šá&ßòÊ÷GÏÈqÌôš_6q%¡~‰ãsm5/v°~†§ á¿€W|Þ¯—óü)|Níl_’çdÈ›î©wéëv*=5›xϼ»ñõž—[ÕŽã_†¿Kµ‡h×õØä ª–»ß/´ža¦ÑM‹I"çcØaᇞ^ÙîÃÖu‘è-—Ë5ŠÇ’^`*r,3Ç›‰QÄ[¶HFL,@ŽŠ ê­v?)ƶÚê„¥f ÖÒSÑS¥y”øÂl®¥0¤: Åæòÿý†#çöf}ܰ_ot®J½E\b·ãÑ¿n”@´v‘n æn˜Aªp¢3»â3JqL=ýÿ X[×*P­@C4µÕÀßè}jd™7ýÁ\`•š×U«Xj#b˱M³H`õÎC4ƒf9ºxqh‘©g\9=.«1›OðGíd¡æåã*RýOg~h÷‹ö·ìÞÝuºòGò@I…wôP£e ߉'b“o¦.3oý”“Ný•\ÛY2¥}˜œàö;ðQ:n¸GË8fâžÓ#‹y½šËý8)Àz;õÕ xk~îb> DúÊ®îa|‰Þâéá7Í:©9^ŽXÞX ½£dâbN¤¦9NBªÐCMuóöUbl.:œ'×ÀÒ]¸&(®&‚x±™®d’°Ê¾þÕÌØoV܃žó˜X-ž‰Á¢_*e åäeë´´P’ó3¼SäwS ÊÿºÓV”ÐÕÉQ:Ñe,¼q/ÐâÄq?jhr‘™ÅdO—Wº€wM—¿ Mƒžé%̙㋀ímLBÑW# „.°Mÿõ˜Ü/Æ9–“ùáÅÔ8‘Þ6­&‰½[A³'©Ü‰ývhŒKX$¼bèª ¡ªm]Lj´íú©Ê¯†Ÿa -ƒú›®5£>Ó™œî¥¸<؇cÂ1޶ Ù VFBøSàGßÕ1Wõ‚Š„Öå»ä¡ÂÎ6|FÿžÞóG+[ÙgÞ‚+«X´»NnO•ã™!Fa÷s)Íi¯¸¡ö¶R‹r8Öû¯žŽ{ 骓'eßð>ÏeEcH+ÀQ\ìt+ã.Ë*)©Ð²ÌB{ûm;º÷_:2c(””:lDNM-õSª)ÁÄwNd7g 5ùùw%VÊ&7%åAúw Õ™…ë%‰x—eŠ)§¬z›%<ƒWêÌîFíë80x{Ò’&SÜ(쇤,[)Óü*uSÆð&®KÆTô׋6Û­ü–¤ d·Uió3×[·¨å}aÿyÓ塈gQ²‘Ãe*–<ƒ]at•¼än‹Þ%'˜ã¼‡coáùQ~v,Åv?¿­`ãiGqùµW_råBñêk/&08—ëÆ¶úA79þÙ"T×>¿Lz…ä|œ-öÕI„vHÖ/h6ÂÄ â]úçÚ¿}¦ÿYÎ éáËí·ºkÐÞçVß3朗Åõ‘8ë®–lƒ—áYÌ,áS*œâÚ–ÃQ•ñipgT³ñußxÐQ­Aw½Œz¤ÝŸS6± É€O”´:ù`ÓQIö¦””sâ¹ùv‡ÝKÕ׫]·ˆRjùµHUú»ß„Yá³l3oê®'Û·ù} UÐA,Æ$Ï;ìá ·½¯yÓÒ&tÆP˜]’ÖçÚãNµ¼q1CµvŠ Çz³÷°!‹öKYYOic¿#'Ž­ äßhø°Åô2րضÕW˜i°§ËÔ¯ð4qwòçd º°‚6ëÙ?k0Ž Ô£¼U?ìyÅo”‹‰Ûß—‡©[¸˜6v ‡èp < J"Ý+Ì[õ>ÌÏM B-…ë ´ç¬iÇL. N‹;ºä »zń߿÷k Á [Á<°/1 Ò×Ê7öB+òú*êÈ–LU]­a¢XÓÃ&q +³i‘þ•¬:ZMNYƒY3elÿSUDêII5‹¹jÊæÉ‚ˆ‡ð¼¤ªG>•Il9ñ&†8º÷v©)‚F„3°]JއÖÏúÇq¤äéÓœ„þG Xò-\„p‘^þNbs£c>˜7nÒƒÒÛý]³0 ¬­X&ó.Ò¤zI8e?ª´hßs• û9 2bãÌ´É:«¢¸êzÆhoÚí³¹¯–µ÷oö8ËÆ_í qv‰ªŠúÉ,kµphø¦ÓË0ƒsŒ d-[´E}†)”ò¥{Þá3å oùê¶¿F’ÔL‹ª×c2P³™ŒÜFs°“Ùì£ëºTþ^NFG­îõÙ‹÷Ç 'jë/]¶ËsfDq¦M1ƤïZ¦ÄmÁël´B[>è'OƒÏ.»Êk8°«0Nûzî99ýŠN’û)›EidØGMri:"'3ÈÂ~’COˆû—øË#'ÔmRƒ•èÄN/Q:ºPÄV¡Åõ´j+Í.›È‹pâbɸy"ï/¼{2úÐ4Ó±+Œ2oɺž}t .1_Z@uÀ¯jôÛ)#:øÖw~“á÷Æ'W[ªru<ÏÈè‘: .;Rüõš&«·Õ~Ú¿xu‚€ç›¢·MÖλ ©n6¸>€ßq¾¨Ì´=ÖdÖ ˆ'ê.È—JÏæô‚!”‡€Ñü+]ñU9k”©s¬FåMêaÏGµf~?¢ÎG±Ï;º¶â¸R8 Ã>ˆ¨Á‰r51öP”Ò’¶F×° 3ñö &z¦’Ù«)Ä9¼2qÅ 1äXÿq“=›÷“~Ö:´/¥´~RÛ=I¢ª©skܪõjÁµ?h5ávPG°©Ý÷&[ö@ ÕuÊC¿å›ŽCš.ïÇlؤ<’fÓ3¬×ÂLøÞPŲ xŒì7–WUXw]3œí‰ø2)üž1ÆÌºëXx0,Â=ßbDP¶XtkŠÃ§mÐo€BBB@j{˜†-‰6J/ojm¶:˜²? ø··µåj£ü9ÁÈ}ªru©Ñ²×8%>qÍŸÕ¤@ðÝÂɺå$óóX9ÃO¥fw¥_ÃîÐáÀª[ð·f Fà`·ºm½ð æwj?‹„ÔwÝÏ*åñŒ3ÙÃO·xÌôËÇÿ¨Ø %›ÚnÞ¦Fa z‰5¤é®üR@ˆ¤yJêò¯Î]Ý÷í«J)îg¸[aYûÃö¾*â—úzNnNÈ|ž^ŽOÚ–SÀEëòÌchp¥¸÷…±òÄ í¸è]0= °¥˜!vQ£ë—{ Ðe;±Ñ•?½%|ûYæÛî¹ô¸]ô4EcR À³'ã Ñ2{*؉VfGyΧ‰³š¸Ó¾í(bËüÄãítŒÓ@µØhNF7Ë‚LÒÉNIð´xà°Ð>eÔè=`”ÄN+1O¥âÖ'4À}ºÀöq5…íÎ=üaJVW¾5Íi 8‘/2SËäMMÍ­3ÃXÀ­ACÆ‹šò8¨„åXTkr’ ÙLÛ0Æéu<Ôªˆy‹±•X÷\{ayˆúÅ>L5\æa¼˜™-i3Y¿ëk>¾ja£5›0¤bt$Wd¥•Û]ïêf¶Š¦+ênù:Žbì†Mld]ê4¥9ÛgëŽËùœpfFŸ¼piDÁ ¼ÿ"r }‹Ä2 _ž#Æ@§;w‰"!ÉpK¹ò»Âç¾K{ÖÏýoÞ­1mf³…`ä)‘¿¸‡nsÙÕÜ\w/'´Íop‰WZîSt¶oë„§-´ßì2·†HÌI‡äD< ?šð$ Ï‚”ùàÄ^£*Ï3×Ü…M#5”r]Je³š*Í¥áî$uµLÐrò/Õ±[8IÍ-Ò±°5ø|X ÷þJff= fU(ï;Â7–îâìl ž¦Ó‡]ÆÉãdóMªÓà³U¤ÆO-ázäÞ­^>°2èæçk@œF -mX²<ïAØ¢’ÞÐ<®_¦ï {EÍ%ÝMU…‚Ð5›³|Ãx²Eæ~¤QÆïN¤‚Ø#d¸eƒÔ?«âWLÏs~w™E¥âCá à«qVDDZæ&Ÿî(c:^d¿¨ì#2†Ñë­Øô¿Ó.ÞWFöù-›%òÙPru´É!òù¼áž*w0Å'ÒJh-y¥5¢¿¹JÕ?ôO„† l<5ÜÉ^ûž× ¼Ë6rÊ~æ¨zÂqKz 5IøÐ ´ï·w'ð4;¯û¶¿mJ:XË5F·9ó ¯7‘Õàƒ'Rþ«§æˆZ+ßjM"×=£+™žwÀjšÝ#QDª gž"øßÖâ»ÎhÞý žÁ[2ýÙì­úb”ÔÞeCPùo”›ÚMð3nm%Ï®‹ÉCmÕÀ˽—DCRûñâˆte ü!Ò'pvµÞò¦wÏv÷œr•Ÿ¿ûÏc-w—k«p9h+¬¼m¬|9SÝAù&8qÒ–DŸ ƒê€/¬"fc—{»sq~mô½|w"˜],Uv)!ìÀUǧ¾¼]%z1 x&»·ö~ü<ºC “8t/ÙÆm—ë¶Z>öÖÆkߥ/¼¼ÜÜŠt€ÓíâuV€¸ÉjÁZb6g¯tD]âi­Ã.ÃüÚIÙkO ±rÕñâ=Êê‘K7ˆ:úì¨m Z9‡fEj($ùŒ¯ì-f«æ²†H–xã I=äì);l½ ,›0Ân>V lÞjÓ¶úÒðëôp¯x1²TÍšDtmßs½$íg=õæâßJÒ4µní ¥£õÕë#~„úuy™Æ¥ü˜¸ -÷ SµãÂY’JiÞ'ý šÑŸ£(áíÿ¶ˆ=ê׿%_“{×»W”ÚU?å5DâO«k·a@Dnõ;ÀÓNV"ÆO÷\ª>~“|,(™ï½£"ì‡ñ‰JNº€)E ¸°ÑPužº[±’‚N¤ˆÛ$Mç Ü“IV=4a(öžàùœGkÞ;§t1Ù: ?GK^œ)ƒ… þóTŸ>‚·Fh‡ll´ùMþóĨ… ¶¿EÈ ·«S¼ÁÎÅlƒÔ´»Ó9/84ÿp”êz~}œ6S#]DƦh([Ÿ½¹å–$&€ÞA©'4¥™œžéä_}cITб„_<92X Ì|b3ñÞ‹SZxNžýLí¡Æÿ‚o£e<ÉÆñ~0¼qDØh Þã‰AÙG!2ãÇêevÛš-îN_mþå±×„€’GB÷°ÖÒÅðý½¾›¬Yìýu–Ù?E¦ª°E†3-¨¶Æhàz¼˜ŠûÁn\Ï5¯ÝæK·hugáw£Üy‚%BùÚ,gÈ@àsþsæ#ùz´îòlgpU¾ VÍ™<xeí 0¼eäA§‡OßÉEOp:¡š>gGOÚzZÌ.âUÊ6^oíh:’‘¹zÈvò‰Ù7N_άø¶ñ@ûïºu¨ÿáw$S… dBzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.705786374 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v14.dat.bz20000644016037001603700000007361513607166133034212 0ustar00hutter2hutter200000000000000BZh91AY&SY(|Rß3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàG¿=ïú¨AUBPªP!zÅEB+lP^´¥$¨P9b ‹YW·Ó•PªõŸgÖ·}ÇZ ¾ïnó«î÷¾ÔÇÝ»ç}{íÎîù>ÛÏnøôZû齴ú»Õ¾Ãï]ïµÕÛmîõÞ»w¬¶†nÏ6ÄïWÖï=­÷7]ßsWfóe×ÛNÈ»:×{Øõí÷9^o›ª}o)íõ¶­í…qÚƒ»Ý«WźLU ‚1¢a ˜ 4i¦MSÐOE<ÒdÌMñ14Ñ¡0bž¦É<“ “ 4FhĈÁ†hde=4ÓLM0˜¨2©h˜i©¦542ž“ hÓØSÑ“LFLžˆÉ¦L!¦LM4Á0™= ÓTÞš ´M13Iêzž† ¢¦ýI§¡ªy¤Ú4hÐ2M0”T™50›SLÐÔÍ&4'©™'¤`O@OI)âj{M)´ôh™<‘4SÙ i¡6IOÅ6J~€§SÚjmL 44§²i“Á<ö*~§¥<ž52ƒj‘M4TÿBb=*~Si&3𦨔ýL§êžÂQ°)í5OÕ==(õ©é5?Eªy=I⟥?$›44¦ŸéSÚ&Sòž©úD==SÓÂSz(ôÔöˆÁO)ìQ“SõGµOÑOjŸ¤OFj(ÐEH„d ˆÁ4›D`&Ð&4Á £ 1ˆÄ¦ò ♓# `‘é6Bc#CU?d#hðÓA Sò&e4ôOA¤Æ¦™= ‚)!È&Â*~3Tò=LM23SL&)&§èhO ©äÒzM¦‰‰è§´IéM?LI¦§µ4õ‰šE6&)ì¤óF©íSÉäôщ”{TÙ LÔôj©å4òjzžS<Ìɪ5‡ÏC&jÚ€t'NQ"¡â½(+ÇRàtaP‚п3æŒÕ‡ .L)„/GÄD¬Ši$ÄÄ“}N„ú¡Kξy±ìÜËãeigjí¯ü¾ÅÇyó-Iñàô¼ìûؽ¾Ë¸åc%ד—¾srÅõ½”R8 Û‹|\£¼¦¾š¹B{,v:Fy¹²«±ð[O›ìÁºW©äqß[ŠöøÍúm ³0‘P2 ÛŽ“EãùàºÁP7GDÓT+Ûz?l-ß«÷•èûóžÍÓ?1¾“ƒ«ŽV`úþ{ÿ岎ÑýW—‘˜þæRÕ lü½î¶`tCà‰2€^Ü…@À-€Pï€ 0¢Y½+3I dwC¤d§‚À–)²Ha¨À„˜± «`S0ù0ü¶’²oP¡ÕMé@à0…¡<„_¼A»C$®! ˜k½Ó㳫XƒÀývÅ Ÿ€‚nÕ¬+Œ×*ö£T1¨«b)Ø‹3†>b‚¡Á3 p&aß¡ß> 2¨¢(¡±`TÍ(ûïf¨vˆH0Á"!„ Þ%-ÌÝ ä†<†‡8ë„&»`®6î0fI‡4† Ë18™…f¨„á¨ÈJ™’`÷LÄ¡00×s/<00 ‡8üô)ÙŽiqBKoŽP`…¨By¹·6¦ŀ뉎Ç0m“Ša ß¼@ØâE%`Ï¿]XB£~h.eèÁÔ«–(žu\£)á—ë”}B‰ã! £2¶­û}d( uu‚$„ã©£C¯wn4lVÑ«1‚l—¸kT2ÀO!ëVÊ:Ñ¿~zÃ|„7"¨x®È›npêñ/ÐvîÅ¡^á·»g…Áº1<ã@ b,ä†È}#pd½wO˜ÊpƒDÜ•½ ³µïúŒWÞBxbK*Ìc.£ÿZ‘Ä7!˜šçÇ"u RÃýÇð"iXÊû$mÑź¦1 Á;oO$þ¶o3r2^dx…}µf+ ó‰,·f{–`( †g‹C¯¨¬+B˜/P>Ù#€ÐÈļofº°î¬2m…uÃ%hVØf`xÅf`dÀãÛv»Li³4’BIððæٕÚm‡!„·?av_´À6gÈÕonZÀ^ n¤xgï‘U† l›ñÇ35G¯~È×nÇò/s<Ò¶¦bDNf½#²©’mÄ< 9”?ëVaÌ‘do×'ï«ýÀÌÛ¡œu¬û =C„VÒ;Ž¡â òºbÌó_µýæTóçÕéLkî0TíØ'LÀàVRMfþ8×é=czÜPâª?ôýÃ$î­ZGiÁC“&fÆ™çŽ'Pû¬+Œ`ìúfѺ2ÍdÛ•qˆLE¦>Ó!¡ dÑs!Ú<е‹1 «¶döO4Ô;ÆBww“««BUä•ûe˜Ýõîå™ã•`Ó´&r0çéïˆYž˜ƒ$®`GÙÙT:ô-iÙbšˆç`÷¡ãÛ=D!M ²|ö„.Y„E lôMöÆ g7d?‘juìø´BH‘"A"Dyõ ƒHéßš7¬“ÃdPUªq~ylâ’ÀaÊ‚g†ÌÞ!~:·õ˜ùÕ«½}–~6ÐmÇß~sݴЦ‡Ýn‡_ü¸\´B`a z€y6¬Ú@CB2ΘÑÎä§éYâ&B±§ÌÒœðŒ;Ó°„01¦sL B¶eVÓCZÀ0 áªy7æd²ŠQ˜vÎÀ2oÁƒöAÉ>ã\QÊ+&¹&aㆻ¶èS2­Kïx„Áµ4\ ÚuVñú½i³õMAyÚ8…}«ù´ÏáG4Üâl7¿ esÆÂSvè10`2_ø¥3öü2•©VSL²ûyÉcзÉzßײ”8-[»oˆH&Kx$×Órx~w¯2¬±”ûM"J·Þ!Šrcˆ'*íÞ€¡-E¢so¸<6}š;–ñ6a ¬€Îv+n¦BŒ'JÆýOv9SI¿`”'Íñ•ðš~c×¢”ÈhBœ†͉Ç(Hç¢b£$²`“㎱'ZFxeq¬ƒ# Ù1`Âe¡Ý«Cg`ô'N4a&€áZ²8¸M‘ˆkLq ÂŸ’/`;8CÌaÄÀs¯ÄI*¼[ Ã;Ù. j € ˆ žf2‡˜ ôÌ—ÅŒ‰R¯d»Æ$®Æn[±Æ-ìbk2àI¡ Xl•'ƒY $»¶ÄÍ`?l%vcÉ8ëŒiñ¼Wø“Îà‹ê·^)ÈØ<9±>áè›ÖåG i¡œC®d.À 8¤ ¶n™!`z£#œC'üêƒô•¨õ€ÔVvÜ0#ô؆Bi…ôlˆlŠÀ­€†]·‰Ãqz$©j¹€4ÌäàürLÉ·òP̋֘,ßdª×¸‚±x8‰ aZ„¢¯q„ÇàV&¢…ˆ$ 桳7ý—7› bCî"Á¾@ÐB0éÇL?ѪŽPy%VHT‘„!Â+;²lÁ¤ÕnÆ›…C­È:­3›fà>c%VéãD-ƸÕg2Qǰ ê²D¤„0ƒäŒ¾d6­°ü¡º(gj!²&h?QB'&¬ã%yíAØ«B æ6QYE­[ 85sC$mh•žhÕYÂ\U¿3ã$pÊåò%F„ôÄûýèÈe°nc¤­à81ªwÒ`ò ŽÁ‚ Ë1˜{–á¸ga¼uJÁ–Ï¿r HÚU–RÖŒéD¼íþžÈïÙHqØ:×ïC_V=A$pYZ­ç—¾¡JÖ9F¤b¼6‰ÜæNTع¡ BCó:6h•‰ê ¹ûŠì±uO €—£i´˜TëÚcç|YÀi+€£±¨VB®àpŸæ14HDò =3éØF6Ö£ºŸm8AŒ©õ¹¡±ËÿÇGØ ´=¿Ž&Á èÛ.NCq[œW B‘Ã6»HÏ~”…Áû~®¿’oõZ¿Þb¶4æB±Œ+ 3ØÛ£©VH…Õýí#5:ó„²öÉI#ÿŽ™XТM€RƒškÊÆx`Ìžs‘µ AÄ•åª œûˆr-7Z›a÷\M@|ÿ÷ïFe}ÕmI0“èäžØAÊò´©Œl/£.À/à¡”ÂuÀM_ƒU}Ôâ¦| 1hy³Ôp7VÊ«Šy,yÌ3×rFôsäbŽB¼Ó$dŒu ©V6‘€®âõ…'Ês‡Õl†ÁdñêÈa“Iq½„C×yõk(Ú0­E¢‰|ã]SjÛÖ°eÐ4#HÄëEœJhX!<ÞvyÜ|Ÿë‹%¡éÛÿí¡î8}·Õ¬5[D H·ïgÊÑA—Å!åñ¾UÞCƒl&åóKdö™uY2Ø\˜7 (‰}æÈ~qæéÚ@, DCÁ6ï¾aPú™.ùƒŠj†$ ¼£å6,ÍÀÈ 'ÊŒÏ,‡\2ºp3’2ÍaüJäßÜCvN‡Z6‘†ÿá’;€zq”Ä=7èÃÓŒä/%XÖE •ýC3FsÌRƒ-Y(câ>úcQª>+bkÇ0 â­¹'«i Cžíû9ÂÝ (Éä]c!æÐ±¿Z†ñíßOߪ­g[1±bÒ!ZØÕKºîе²Uµ £gunÌÇ—9ã7­AílÓRB¿¦˜È;=ˆû'<À ’á¦=Õt;CSË3ÎE m•ªyFñB®­Ò_ô/à‡–Ì>Úš«–ìd3[¥äz~ì亶áæÚú—r®Y"ôl§Ztå 0kœ(ï‘_I朊›Dõ6!”`>é’äGÛžf2Úup‘!‚½¥CµB6Ëý¸‘¶™LHX†Á;ƲcEmfä‹V鿘™Çy‡:' ÀØ+†c2AºœÖ@6Ü5*¹W“B‰ççÅ{-vPÈa´ˆuhA\g¡»ŽìÔ•^yX…ñ7Œ–®6AL1—ñƒê¡ÉSÎö\;Åpå÷MÝZVÌÒ+‚f¼l÷¯„ßÁct;ýÝÝÇRå§ÉNHnÃ4î´uÞŸ#‹Üì)A´` HxèZI(|tb6¯–ãy>êgšç˵’„˜/-¸Ó,‘É(À(Æ%ƒ@ˆÐ4C 4S„øm¸°2ȘT–§NöÃå8Á¢d8Wß2[T6Cݽ3(Ý”™¡ 8Á^“„ä!„@ìã˜fkë¢~¦X±¿f²~ÀùÏ7Œ7ªÛˆRBvd2CÒ|Öä¶ÄI/¾1cO$ªB­Û° :á¬<{ôùÍÃüa a„!:nÍçpù–ÕGg×åšèf6oÚG ÁbNÄfp@ ¾ÒƒsøÞ"ÿ™+Å B7 .²Î¯ ¡žjÕ·ŸˆnW·|^㤔®sÿè îÛŒhP:SÙcP0Œ‡2®5€È^ïo⼴³¸vñ!f»®hþ˜Ì6r†µZ‘[ØØ! Ö^*Š7Mûøþ]ë{W‘Ó•-­þ“Pÿ‡ø,nS‘~lHB1 ;{PEí¡M©d6Œ<‚s ýÞ¸TQ‡XY Ò훉a ’.×k!Ò” kŽ­[F±È6eT'h]"àj•‚ ^ÍYhfæ2]t zÎÿS´ªÑeõHÝxëÔxÜ’ Ò¹%À™`9¾k7ÿ~N[ÎÏINkc¼‘ ÛIß•Ÿ¾%]†ùÊÞËäO•­­Z3´Ö »¡ýè_u¾xä>CAøõUŒb‡ C'Â`Æd+²DÛN†HsNÒÄõŸ'#¹±W‰Œ‰ÐVQíü?åÚø+7Æ’Ч¼{ oêô6t3Žm©n¶Ã_{VC^ê~Iv‡¯ÙƒwVöÍÂh_{™ô§ß öLà:¥iŠÐyñçÁƒgbýßlÊ×á&!\ÈWÜD†_=E=æýÒ´Ç+¥TI !æI ëh7è`Øk¿©“;TÄ7czôŒ†wxៅѵŰJ¸òÌÛS!¨º&7&× 3üžM¦¯.Â% â*Ú2BC‰B¢ Rj°†¡ëJc1;è°‡¦é›è&JôU¡7쀔Ҷ·§mÌ–½”ÜFR'û`"FèßðÕŽáçY@Ú•Ô>ˆ5€Û"æpÄ”Àîvú¾ ÉšÖ²é¨>þîÎhÁÑ¿<ŠÄÜÕýˆ_ûz×R6wnô ìnL´˜!Tÿf­±Wyêeô/ÎÁ‚æ`×ÚXžHDñØÆ„f¡€VS†r-Ñ»=`ד3{¢c`Ëz·ÛKq¡˜Îe2Ç¥ow§«ƒ1û´±9:']Ü@Í=âŒHcxIøÓ=ƒ5\ÆÝ6 ÑÚÛP¤g9 <5rñ*™áìY(wÈR·O6¥ÄZ^ñò™c{¶ynùÈMqm l2.ÙçOo~,£no¨i®É–†fÌÓ0CÈtÚËh _ ¥Zü̸C¬~ùä'Œ˜ËXwŸ'tgÅÃð÷Ø,æ•[¦Šé™õTNšÆAàB¤ b"  D $Ј‚½OëmV•÷*-¶»[Xîækš¿ç) ¾}GH„Ðp„¡‡DÃQåÙ9§ê8ѤÕuxX­m$¢$ÑÁ˜F0UŽÔô Ç—Fÿƒ—¤ñcù''Cë[) ÚCiÃR*«8Ï¥Õë›èÔvO±ùÝë›ZÀãÕ¾åc¶žý<“ ªr'ø«P•»Ds½óä¼^„ÀïÞH?¢8ç>ã½ÐÑ=€I`Ú¸¹öÐçpÐeÈÚ’æ•°íÑ!\Ä3臻n¨rnm¬†QÆVÞfÚêã¡„“ ¨fdÀÃ¥!“°d3°†Åœdû¬ìšݳL€ÌÿNs Ùºd"oþ®ýcÄ«ü,ŒÐhÇ`Æu/¬„ÖMVÝ K„f„*?• L•æÓ\j³¼Kî´#H¬·vÍ`†mYÀÊDÿ[ªœ.ÿ»J26Þݘß~[È2œæ$µ=MÌ¥`ÛDNe]Ç»’† s1 pq§k»:×B¡ï¨•œêöÕü³×°Bz[°%^ŒE3Ÿr.ìig§4M9¶3©áµhZ٠иÁ¥4—”ô¨zmz¯zšºûW$ç•ÝrÖyÅÝ:³Æ>k'Nø,¹HÛ\òV ‘º°CÓ¸[ó†2MÔÏ'›èš3êóâf2^·cí+Û6C§ôåÉA˜o9í¿ñ<ºHmò…G•Á”À¬2t`[ˆœ–4’€wŠâ±ÚkÞ—Þ¿m>k^w[J4ÊÞß‚n²¸Öp" §ë髈³3Í„$îÙü{ùûØ}ÔoõÇ¿` µY ?ÉÂ>k*ÐøæxqT4¬X6jм0`Í>\|ßð¤¼4تŒQ‰@i¬Ö»’û§]·N]žöÝÍlóÙÞ"ëé´ù2©Ç¿,–1LZÈüÛ–@†É‚Åàðöêæ& ¾ð:FîËÞ¯Çk¦y1 %Eâý¹òßêßt¿ÇŠž,Ù/·,mE|ÓÁ&q +kgW À *öÝ-ðWëCžWòØd»oV‘Õ0×±ìÏj”(I1ŠŸËm²ëîµ±NÛÃéï,uç æðϸ®‰ë~d†°üD™]ý Ì<^d|ß’rš°7—çàxݧ:R;‚ñFd‹ñ%XTF5OwŽ‘®¥·R>£Á¾î«Xm´ëGJu¢ãߌpo…é“]€0•À4ÍÌ´}9ñè¶òÜÜ;èüxF7ˆ=·1ÑÓ!Òu8^ËêÓ¡ùYþºº–T÷óóâPAU•‡mÏ7ŽÏó_>Î÷Fû—Nÿcä›30K§ì¢’¦{ ×¾ßfDè¥Ð6ª `AV3—ê–O†Nºú9ˆ¡ }åà"€ ,ÈÍf/?Ηy_9›·E‘ø~Šƒ_Õ¤4íЙjø¯œÈ$ÓVܹºœvwy|ëU}siƒZ¡ð\­éiW”ým[¹´'ç¿Ác.DN \‹¬séÉ ‰Í‚Cb0À€qØ!0.Å_6¡ÿqÁŒhØ j·d!THŸfcÀpè~rŸì‡r휀ӈP2]a wf“‹wÝó |‘ß²HÊ5x/?É`;©óf‡Š9¼µ¿6>ÐÒ ùC/m Ê\<*¦¦¼BËûÔôfÆSú¼ ?s å°W)Ëug\°¿iOþœytX`_[¶uô(Ggòïe¿5p5uT{3œ>s·éwzš¼Å¾‚¶ª‚ ;Ôôµ¯ûày¶¾·¸¹Zšd&!ßD¯#öï{¬Ý…Ï¡½4Ó-õ&JfKD†7Ñlã)˜‡ÏšÛzèiyàáô¿JAèä=‡ÑÞõ\GݧÍä1vK¯¹`ÎW™ÅëõÆ8GF3åZ!û ñ>,êùmÊk«Ó;" yêFi饛ßæLBèHFî0!((É´å»áNZ短ô)ªÓÞ¾†â¦7×á£Âr%#võ M®?³‹Ûer#)²P¹÷×BWÔEÈ×5 ƒÉ+˜g"P.4|5ü߅)œ¯,ýÕNó6PØ’b™4{Ü‹y³$kvkR5 •CÏ|zxmQ׎¿'‘TênãyC£÷!‹/àfK‚ø\?ÓRToÝ£ZÛ\<óÌ{~—hDhÁ ßìÓXÉ4Œi¤`FÈ|Qf»!·9æ‘ë†Þ5€Ð>Óƒf?µcXñ_½¿ƒ(oÂ奂ÏÀ/ÑysÞ¢ÞáYŽgLãA²Ì»+¨ÛÐãö“õÍxÖ§w¬¡¸ä¸[öSÏ*´ ÍHÕ\jrS¹ú̃’ | éPòÒk£Ì òºš3à¿üö‚€XÂÁdæÛ‡Êðœ3ÏË1’zùq°™ÍV§MœÿxY£ñØðõM3y8€Ûš„.¨a^q W¥c`„‡l8ªMlÏIZhÉ’è£/X…>8d|¯{wu. )oI¬ßŸùâ@ûžâ€9³¸KÅŠ¯HÊñ¬9À­Ë‹ „ 9¨Po¯nÞÀ58¶²;áæêí¤ò#§o…ÞÑu¤3™ä•)¢?„‚­7aËínéØlÁ@PV SáO¶idd¨Z”@íYròaJƒbÞˆ,äîçQšW+ãog´üiøl(æ?7ÁÄ߀0Âî›)Ø[(à[Ut&[Áq v=ód[j<¶¡ªïó|>E¡¿ÏH0Æ) ukEÐøo[(ý‹n³Þ"K‰«Ê¶„1UšA7Ç`¯ºè ñ®2]ˆÿ|… ºy/ªù©Yr ߺœy&óú3ÌéNÿƒµXL¤ökè×;EÃËÀj)åÔ«”£¼ÎÿШ@8H=ú=:‘]@,Õåìç© ­þÝ-œÕtž:É×hÞu'  W[œÞôV>“âbDgm5^„…Ò~·qEpÏs`rq?fÂGmß Ná{(>`˜Zå<­ŠË¯˜¥À)±ëŠëüÆÈKºp<¿™¾¤WÊ?óJi*ϲv…ô“üõiµèø~öŸ”Òáz¬ÕE‹\r¿þó–cI—ndɑϜ«–„ÍàG*ƒso½ö].åÿ¾ÎÃS~ðà°ìÝæ¼”yøâÀ!3bY HNIIͽ$å] à\Ía¨j„Úi³¸²t©Áû¢)~-&»;§µ†!Ìt¿k§RiòÒ¨Ð9àU!¤ˆ,²'ûµÑ]:ãp*Øõ£®Ì™?^|}oqåt¹‰™`†}mkà5løC"^á¡“`7iŽÁ†¬ÛjR¯D>t†1Ù!!àë|vÀx½ã›%²Ð˜ÏÔŸ¸’ìµoEvCÜìû'ëÖÐ7òÍIJÚ{¼[©ü5æ ðŽYÔsÛ{0Þô‚±‡f¦Ç‹+Eî8ñ y泉1eûDYI4!ÓIãвRØn6ÚÅËwmeXå¼wĦϳé®ùÎmnú)øw¹nžTÑ~܉J@z>0 à1! ^Ú\œ;UÏè@Fbe<ÜìÔøñ8/¾'b¤þev‹8Ú€´‚Û~# æUmw韰»9)ãƒÃ1Y»g>”CÕZº£rBªü\1¨Èhrô‚¨9ŠÊ’?ÒGYÝÛÌà›ûå?Oëò¦Œ˜°8óÄYêŸÿÛá‹pH£Ã´ÑuË%­í_‰¿åáä?QpVÅhr-ªhý{Oêºé÷˰<üsËoç3]ƒÒb"ù$ð'…çÆ k—Ù]d»…qvb0h>k½Û—XÈ0D ƒoËe¼ëã>…7pÙµ‘K¶®ƒôø_éX <ß±˜™$_ ï9léújÜòâµÂÌQ™ª*:FÏÈ_®d+fmnÓAA™>-çæj É,‚p“Òº¾£5¼t|`Ëâzt+%\¡Ñ÷+o§æ•é#h0¤á‰X !7t^èè±ÃÊZȉPËOJÒSï¥>,š‹øèüÜ¿V…V|oÐQðç.hbJ·ˆÊŽÇ*€5%$ÄŠå MÝ:þ˾0jð6‹Ñ€w8‰á«^PLœiQ¯ã”³½LÀ=ëÅ™`ámQLº7žÚ`ÆéÁC2ITYw9Ž&ï×|@kÝŠóÊ,‹7{*"ÊfBf-ÑzöIe¹aŒ1˜¨e'MEÒwe§±ÂA¼°‰æqϬ y[{7§)¾Óþb«ñvÅ> .5PTÁZWÊjvh°1‘ Š‚,SN¼u˜—«e€4²½yåKô•´Ù,qs½{u v#Áß!v%%MjûÜN ©Åœ€îl^Ìàí¤!j¹Ž»¼)x™·¥GœüøS‘%—·àúªEº'œØ¿ÐE‹.UͶ|ÚSj1¯3±„T?^òe¼O? Ù_(“‘Ñ?oŒ&níž²Z«‹‰Øða›ÏÞiqý5Yÿ 8=«ª¨ÌÅ+’‚]îlày&0`Ò™3ŠÍM¨JýßwüÝ>šZs')ê—ø]74®oxžÚ>ÚNuKºñ®Z$ãOž¦,ÒNÀlýZNç¢âµ‘cÅçÚ•„l{2ŸK#ãaNãSpñÞÔjþÀN Ü‘bC¼pë€C”B!„NU€\':…pÝCµö±TÁ»Û¥•yr„€”bªôì%ÒU0VsL7ÕI™@õtÊü®‰Œ$ïêUF EÝ_öâãíðr&éæ,ED–Ê7ǺÆVò‚ø´bÄ_Üæêcœ¡û9/êsñ¯ù)cPeOæÇË~@ ƒéÂÊßáNìºÅ_‘X¢y·$I¥™éPA¬Õ >¹ÓŽQMZ$tÊB¬~D 2€Æ˜°P™PÛ€Ñ=*)Xz RíŠCläýl¯ÚÎÌ&h}¸@î€Ï¼‡(IÚt’ÃÞ  (Cd pϘQ0E)„¡)STâ»Ógs‡Ù{_š‚qêÂæ3¡)¡Q¶Ç¡r©?“?cybë¬c}¹W’ÈB6™°Áed §”NÏ÷z^üOˆv:¼«9¤3zÕÀàéw9ºÜä¹®c«Cž`÷­YÈêô·åi;¾šjjF3Êu¨EÑYŒ…!Éè¼o»²Vˆ ÿ$Þ½<üÞ§Jî#–0ê Ó  sÔ;)jâ¶ ‡Ñl±ŒäÝ.Ç9Üyæþ¥]v‡ºÕ «­ˆy§¦`Á‚B!œ×U#ÀÅá4Œ)~µðìðj àZÔ²0ª¡û@Æì¹D©Çš¨1Ñ©(ñP2¢«‚ItÍ7Òè8øbô³QVž× Up¡Ö‰àBQy”vÊPïf LÎûNÓ´ˆCÞ¡KÝý9C”®R~fö—cßÄDøi&Ý. C±—|•¼³fkÛRº@£5úPPÒ7~y3Ë»éuÙ€aTd .‚ŠÅ¼íœA8À+{l Û°é‚„¾Š#_c-já4亽…€_v€d@H.9úfßJÕGuÓmÖî5Ë!ç vÓU P>\z½«Èÿ¿Íàƒ‹ÕΤÖË~ø>ÎÊ@'TÉ­:[€@w#Mg.¡sSåÅ™ŸÂÊèo_‡åWV6æE1¦Áéñ°NÌ¢tB Øû¯ ó®Ä8Çyrñåc¼ÄNÁôdÈ j@8À B@J|(Bº°{Í縶áÚúUò®Ö„D…‘`ð=š¾Ú©PÅ*´C~/ ¬ã'Ȉ”‡ñÂOÛi1º6c±óujô\×µôÇ:/px]»ðò‡ÁŠº×%W,—´¤^ÄlóæÑ€k¼óŒÒß©'NÜôõzï¦ÎáD@6õuë.†Ñ` NWÌÉN ¿Í$’‹Õ¡2ªàÕÿÄ« Þ›$ºØÊͧWä³ ÇÜ9¤®ìUÜ› `Þ÷_“?N²“ªäM˜­ãñUúH\iûçÎá§j@„2ä o£›ýÁ4ÍýEZ ënè `U„_ tŠÚé茛§ôú–Q¾{ÓÝݳÒÚ5¬Cè•cýµügk¯ð;Ãtßq?«çÕ¹N.ÓñËscF@h žYìÐöó®÷Ô½[)Ú^¬÷©D :‚ûÄNØôlåûøüé¸üŽÞðxÏû‘hî±bËñå„ðG½r C/[~gʃB”^vQ$/C±_à̃‹R=<5q&óÖõN`Šùni·áoÞ–™ƒËŽ ãve8VV;TÚjôñá7´ÿ9(_k$¥(±o©( ˜ÀìMûõ½†£è°ç¿_hBËãù–‘ÕÑ‘¯¼ØÜ©½(V®Xf+SÆl“Ä”gR´ë´¬LþÏóT²aÖ1”€y6#U­D:};Õ~Mõ¢¾¯I§y¸Óü{lnh ‚¾ÀÝ:XÐ0†`²hç:ž¬ ³Àá>Î&Ÿ‡¢¸ç<ÏzÙÖ>”¬îYÎ/ä¥{¾Ó·ßVÐ ¯îÿòÇ×éÀë0Äéé]º¦c»!Ç ®$…T.È$œ¿ô–ôÝ)Öû¼W/Þ™ý¬×¡T÷ú]§³…½|pÔíÂ2Ç´BC®@™½ôwOTë÷šàfÕêûVì§_I¸m˜[P$¦ìÌÈò˜g* Œiªœ by~Rn(„ÀæVƒ‡Y#þg®ç»3äׯ¦s4ì`Þ'ý·ÊÅJq•¸ /†Øû A¡¾G¦ù;æM÷ŠIIÐCQ·³f„_­ø»±-·ëã¡ÛYŸ½¨yí»¦ÿïw®ähOiÐu`ßÛ#þ°ã…'lVß¹ec¹(–0|cîŒp7{ÂJ(Ç-äOqܓ쨞Ã/_›N›ˆ=u\/•C^*“LIœÆÐ¹¶7Ïvþv¸y¤xž`B2”Ñ1ŽÁ ÷ÊkF«C<7t=wºƒ ê·o´ô ¾d‡¬3µBNu™“dÅi³vÆ3PþïÞ [ëÐÕÅ©xjÁŒx9úF„B”¦õµ(C |}ØÎ!Qq@Ý>÷ÀZضwª³o´ØkÍè¾'F_Â5¼çf¯Ï?èÐ{Vø¾c‚rP޼WÓ‡ƒkÓÇù½%_›î1ÙªI†/ÅôX4ß¾®Ý qÏzèZê#"' ™×†—éïyŠ}ßfsN3ä¥÷¹]-;ž—´[¯uW /`Hê8pŸÐïø{÷;ûìF¼—$ä†#.\ &zmç¢Ö=ùýðZ’²ô±‚°ê¯ð·Øó6˜ ]¯oUrüh€ô8UѲ‹lÖEO#¤Îô~a'ü2²È2ÒKŸÆ·¬ÍÝÒúàŽŒýüY®᎙ÛÇ+ïôÝyM,E#Èäÿ”ÿ4й+›ÅϪ´”¸æBuU±gúXÝ’Z ?©¸þFé¨öˆo/ösöÇtçîõ7–(›ÖÝþ=†Ñ¾ÊþÇlô7·­Ž~;‰`»ÝõqÍÔb;]oÁ)'›•Õ,]¹íÆ(t{1aŠ)HéOËÇþtÊ™Íï¯{Ê!$a¸hüð*æJXЋ@òX´ÈQá´«ÎNsYæ¿cÉRÅQFc`ãQCÊÒJ´e Þþn¿­^¬^R'}â…e¤qôâîJMåXßlâî…㦇]Ín?Ò¸€ò×hr7fŠÞC,@z¸˜ÅÃt¶›}[u{E„Õw^«5qÈ\.#kfÀ;Æ€êt´Ã·ìŠŸ†ÁÊOÈà-u$T‹t6¥Ç=¶Ÿ6ì<®åÊ÷õø¨>Xü—mQ¨@í¿-‰ßØ¢á'ÆÏ8µ²2k>Íë%+=ý, pÀt3¶[›.AÒ»‡²¹ò¨ê¿ãsîšè{`SãQƒÂ¯wÔ²V»ÖÚ À¾òIb ç·È×ÿ-ÃåqÔÙÎüU¢Rļã7œ÷Ùÿbæ)>¶Oæíu¹p¿…Mp–gy eÆÐѲ⑉ð} _¦!Á²CáòN˜QÖÑž¦ƒÄõg¿M½tž{æ·}G4î OÍ÷ÁÏ÷MEY&‰X€Ç ._ŒÞk¬V Bù]ìjkn"8KC~u«_Ð[Kg½fu—zB†ŠßêÝÐÈm}ìðÀïMØ-dRAF{R7Î|LI'´¶:Œ·'N[ ÔÄõL¶ÍC ŒÇ}0–Í{G“,sfÄÉ)ýV»3^¼ä« ÈÚe»jòRúl»E%b_Ó[Åu­Ç…:ŽÆÁÔ¬ Sò>ÌÜÔùÛuÕAK¤gId‹A0Ã^Á ÜòÛ©ÑzÓÖŠNé¾±+é¸P[ «~Z»c¿»ö’{^šœp_©!ûìéŸlç“g fˆË« VbÊ.„§蓈uV þŒ0DÆÑOí]±>ÂWóãû#‰sÓÀã~°„Ã4í¡š çÊ+WÙÍ0<’È$™Î?ýí¾ŽAGñ‹Pe!k=ú7wÇ ÂDÅZÚÈù—¡T;$ØqõWÊým÷û ó,g(O(ÜŽ_}sŸBÒ¡I°—rE®©­o…rjß”¶_ ÖØ§?MÊä#¡3!\à<%‚(Ô'8ÇhB^¥lcsö ¼ÞîãzJd;¼ Ø6ž©Orf·¨…àô}Ae{°3¯O·ð™Èåò U<…;ªõ_‹ÀÈ·÷ˆ©ÐÉú¤°$Šé£ÂáÀ0n4_¶íá5òâ´ªÍ0ôg e%'o´oÿ£m£`M/ð]íW7a¿òžŽM `âzÉ1UÄjw{¼_Áô¢±óOþž)Ï·}Ucš¤§Ž“½Ý½”8妵Œön4uU’Y\qÕèð±ýy%Nœ¯ïG¤ ¦¿ ÞÂRé0éVÜ8I9¾ÛæYÖÜÏèû±ÀΕæT‚>}üá!EvÄ;bŒÅ@¢³e7E¢úI®æÌîŒ LʧÂa«Z8lR²ý×\òÕÉÖJN칈µÒùl9FìeþŠŽŸ¶°Ÿø‚ÉF'¸<ß"PÈ¢@X $*_šW <ûe{wÉ(›„×+ópÿå¿ã\ͯK’—ÜVæ©vÑê8V6ûÇÊF×jLJM@@BnX§û]í¼ûNŒ0KKܦMþŸG>u×ÅÞ±Ûu&´U¡f?|×0¯ߥŽÞÚDº×’²UˆØ QØa8Äçþõl„žA°³åú,›Q.{äÅIŸ¹½a³]"•ö»¦¡á³W)8[®)™|cj÷߃ØM[…Ês=wÁhåâ$øègx‡»ס—}_P²Íz!õ2°ÓKîÖOT­cÛ£µé¶™5 ´×Û–²ªûsøe5ÝŸÇiß[tnñ×+¦òö˜@lÍ$žÌ!ôƒ­Àï:þýD¨Di¢`¬ 7ÙçðV¦ãøå¦.jÍÎ-/N)(?z4ˆã½QÌ¡†p­‰­¡} vE‡ïÆD yÔ“=%¿’þªÊŒžB¨”ÞP!’û‘X§9,+vÒÅ“£Ñ€SšIí~ ÿÇ\EØdÒ' ÆÍì;Ì7&är]*0£ ½DB¶*÷~ëpÆyæ“° ôҺƙÝÓ·H6i¹æ–¹š‘kèï"m$‘©OYΰt€qð D˜ÍZˆ´ïc¾7·oqüXW1fL[î'£Ioìé±;ëÍ]-\¥€Î";¢t“~Ç‚´˜  e“/·Ê’TÌ`¾x®ÆRÚ('ž?ýèöµ¸®ãWÃMB{8xBþ [O!ðk.î®îßô¾ÙL6„û€‡üV†ûºõ$j˜Qng›°P W?ƧêÈÏ=‹6˽¯7J4’Ê5k TñëˆD[v<7Œ‘d:÷ƒNñ雩…´ƒfÅö¦ o²w‘ÏaùÚ7çn–öµL2Ò>&(ž+Œ5Ú®ãp5?hÖ3YÚ§[#ƒ0?©®x.µˆ|T ‡ŽŸ§†Åö!®|XÌ:KÁvö :¡²(`\jî4”Qœ…[äh ŒÌ,è• (iþ2WN'* ·4P@çåô¾+UÄw½z½Š: ëʽj˜“Ìëòrv9üÏOõ³bx£ªÚwuõt/ý ãË/<¤ÕË/üسÜHlE„æƒSEîíyÔèá¢%_ÍœUùärw4NŸ÷#$^4€¼&ð‚ÿ©Xf,sª ûžYÖ‡ÎëÝYðìpγhlӿױ㛀¬a>)ð¸š2; Á‹4˜yË»FÔþizˆÒ·s-Þ»Òä ÿ=DS#UóˆQ4@y,Ãq‘‹~7æÖY´*žÚy㦸Ü1;Qj[Mi‰ öN†ÏC"IThÖ«)m ÔI¶ôŠ¢šR…GÁ82P­Jë‘8ÇbÀ…owYp½{®k>ÕY™>3óc@”Ž}ë/Vw ðå%í²žïK•'½s_jÕ0?vŽS fJABIfƒO`û“Çïºh)@ëªO¼¢éúP–¯öŽw\êxWDøS DÊ ¢J=3Ò÷™¼‘&{Öò}›õvc»Xœz §.øÉ-¹NtÑfI#¨sÜøj—QÅe]B«óÝBOGXî¨ßµW”8mút³×"XãÌeÓøÑi£x‘ì1Uùg2ŽÊÀuMgÿìŠúÉω‡+xÜà®e­³]¶®g5<\±¸¶¦¦€fæêâ‰Ðd‡Í¯t@šz«›ÏVn½ÔV+”TëLôø›8Š+y©¾Ý4Ó^t·—ƒç<¦žrû£Ó®ð1Í}¯Ì-§qÞ’¤:AÖuu°±_.dÓýäÎó•9é‡ÒÈyãvO&-ðõrŒ‚ŽYñ5F±t6ICÓliN¿®Øc{FÖ$ ÑÊszK9©¦˜æv˜êþ¸Ê>îóo é+À–ý<õÍ©ü,®\"†•¬ÓÏÊC³­{v,jáÊàµ]ÐíûåÓi®¥­´Û¹GÍIÎö·*©YÁt?kúTýS9ø4¥L=6-˵?:OÎÅ`ùú;Ž èò[ë• Òb+«p`†ùÀ^rÜ)ƒëg€N‰ €òÏDú˜VšŠQeúºÍÒösœ'u”Rw¾­†ìC°Ÿ$°Û(§âKéïÿ/WéYävlZ W”O‚Í—²Ö785ê›L2ŒËè=}¥2c¯a \¼†ÆL€’b8±T:ªûmr›%ÞfxƒÙ$žљdù6øbOÍ+G?+WÆÒì`·Q#f›og› …›®\’.ÒX5¸Ò|ܪ㹶ïÄœkÊú™o‘ªºhl*vTwþš‡I gñ¿•.½­ñÔ8óŠUJ O…Ûí‘J­;,¼ºfã#¾[ü¥û¯*÷Lïà‰T3Ú{›ñŠÂ¾1¿á»-£@÷ îÑòÈÛèÙYÌøG§«0µo·öj<‰¶Šóx…(cœq¢È‚^¨éìˆZÛ<£¾wŒåþ8ªÞìŽ $~SOs'ÑçÅä¶…qp.ãÓË´ë¨É1=vm¯¹Ê\úlÝ.Ž—áòsš—ƒk<ò›NȤž «ë¿î>& N÷`2Öz]ÎY>Ÿå§$±ûV–ÖM}nÉCèëš ºÁ6×oÏ{kWAÂ(Í&×üä™G÷G"åÐŒ§ÔõU^ÃD]QÇb©ÃŠd‰ßÉâ 3¢ÔŒrqá•`Sk”6¸Üú´?(Ÿ[G•_®\>¬T¤¾}Ó;2hJŽ–i†Ge%Ò©ËÄG›ÈMJmü–ž?WL¿‚¢Ds¶‚½µ¾©dŸ±Ð®Ö™Ž¯0&€€²òM£¹ Fí\Áº³CÛô7õoìΕ±©MÔÝÆú3!™ÃIöpûíä¢Ll}Wqá”é«>þÖ:ëWS»ð·ïtHuÙHÕØ="Z/¬·œè@|à奼+pâû#·¾ºSk+Y>ÇÚJ*ã] ç×O`òýÒ›¼;ï_®é7§wV‘ÿ[O€X2×»µÎ¦Êx º]‘Ã{ÇÅ$þ¤2¬´¼jÒÝ&Ä皀ñ¬‡Û_ [;¨aCŒTŠ÷)mg+|¹‹–}Oû ¡6µ_gß ÈÞÄ'ôŽïÚ9É8ü\BíÓ¡Ÿ ;iI›‚ðz ÈSî€Öï>å‰ôßë¹øà{‹WzéfL%GKV™’tÑÝYÚt1½2O5D%½À¶èè©]ñòÒ³úý«9´:HƒXË5ZÚòIù)Ô:qf[+²íûÞ '$€¿¬ 68³@v?ƒho5O•mÐ!æù\â5íÈúšäü¤Õvþëý÷Ç-‡™ÿSî¡¶f ¹÷ÛýfèªD4|$%5Pï7ä˜2´  ^£1gœµQO0z}~/Pã ª†ãhP£å¸ s·FTB^»9s»ƒÕ̦!v{±<ûg!–äiMD5Ý{èot=•ÎßÁD€¢røRnð;moŸ=áØßròoEãþ,÷Š#}ça¢âèŠvŒ4QRü#ßôŒ™µM‰5oqª¿ïjÍMQ"B¤çНÓþ¨e1RçQOE«vS{ûX)lŽi3½»²®¸š oHRA™~>C1aÎW¯RÑÕÝüvþ¾')j±?æÑ᎜úà‘>zÈHA™Ÿ‰6¥˜…úÒ°e¶GKR$fÂÕ,ò‘ÆÍäÙ[™OÎóñ~…åûˆê×£°ZÑÜ4ûêÍÜ•0ãþ=óò¹ÜõŽÂ …ï‹•3ì©©”)ZÛ]éøj •²Þ¸…~ëqÖ1:Ìt\+Üû-ç¯é¹¾¥ÆJG QÑ,/EánPº;¢rN(ÖÔ—å ®Zå›ÐÃ.½&¼»QŽZ32É ë¥ÛQZÁy±áh±åPõ£€ùßf”ʼnhÕ‰ œŽØÓTò¶Tóˆ'm®V蜺†¾•UhÛ½ßiü/ƒ™€eû•ñ¹ë"(„“3.É _Õ$ì§¾Ì î¬N§¡ï`wZƫľuYt© ³q픾ΤÉþCù ß§,æôù꣘/Bqk¶Š YŸEj÷\=Ö!Â@7Eœ½ñ>H¬'Î|\Sÿ[3µR,§ÈJ½ó*f@“0@åÜ;;œ9D%h±ƒ¤ÏSRg;–S7)ÇÂÑê_ä<ˆ‰/÷ƒ2f–r'"fväŸÒÌ^]æž;D™ö ^LŸ”êøËk·ÓÄ7Ñô©Ì˜\ú<Ã3é 0JÈéV‰f¦7èg©¹+>ÕuüÀ“â—øÌ¾rèwç’ŒèGU­ fs6çÕú ¶þàZņ­÷¥§øAAyhU盂º±'3äp×RH}ýc|KÛ2ׯõðݰÀØ~¤™3Ž WƒÕd€ñÛš?¬ß)ü–ÕîÙ¯èor"I-5’ëwàk”deæQ%vMNÝ}ÁKòƒH[â6ú:¥ #¯ÓˆÛò³Àñ‘ót@P¤ýbwpxË9Ý­ÿÇ¢ã„ÝßÜí‹]zÏ|œ-M›‘QDQCOÑñùGµ>º÷^ûp½åèº+PÝ•4ŽÒ<ÎEélÿPlLZõ®žƒûùê²a€=€Y•ŽÏk8CÌv• œûfw¯þ´àóˆf]¸?¢Ö¸¯8Âÿ>ú:“þ Öglв@öÛ6£ôœ#M\‹I ˆm“TgaÁ¨hžI²+–ã@™Ûè•„!ï_‰ù¬BäÇê>þUa™©sãÆ@êžæÈÖûn…d3Êи·é²øŠÛ˜þüíë·>p2´`cóþËío÷ŽYÏŒ0 Â@*ÌÀeaå€À%¸0ŠIXCô0+!G ÎÈBa}¶ !@0£­`˜}U`h@Á:öaëa’­v£‘fªÂ!3@! + ‰‡ïvìí!„'fLfJÉY2,Àþt ЀzCj &` *`ÈB’3°À€0¬† ¬(»öi@0@0 Ã$“@©2Aó0¨†)2d®…œ #z‡Ý’³ ¥ªpÈC õÐD…y!DFÄ`Ë &Uú¬(‚]„ ˜F†ABL( ˜@PI˜$„(¨0À¢ ÌÀ 2`T˜€Q‚¹™ Úxhjv™T?ÃÒÛšöãðŽ9ËøVpìs~⤠Ž8ê„^ã-ž·H8GèªXJ@Þhåžÿôáï]wqK³ÐÊ`­aÕÇv<Šîd”ƒ†ñÌPÍlŽ~æ¯)Ƹù¯‡yÜÞü;{ÆR«Ò|LIü¨¯ˆ $΂2ß ôê2Pý«ÝÇX/Ê@H8 SðÜK:’£ ‰k1…±Þû¾0µÔHeÝ^~m8=×Õwf}­×ïwwVÞë­·{ÇŸ{Ýí½î÷Þ¹—VûÔ}xå÷o[Û½Þ·sÏmåͶÛwÆ–:ã`+Üå/S'@ˆ] +UÁZyÝÝó˜ýs™~*ä€Ã€`8Re1WÍCiŸuär±Üˆ#i9=6ô*9’Ö›fv/Í×ÎÑìm¼£o‹ÁÊ—* ‰Ôía¶Vf*«Ð~¦ÅjÇZ-A&˜tg®'2ÆxBé™É²!Î{Õ2Ñ’RW6î™å5ºYñq7BÏuWûðO-ÜÂä@V0ÃÈßÅw§ä®“d `ØëHm9þõ>-SçÙJE Äé|íáêÝv|wg<‘«‹ÑŽx§–ìôûààš¹GÕŽJá yùÉ +yun/võ´ Ñîû–ÚCßkàŽt ^ˆþðx¯¢%œ´Ü( øKzs=\öaújr?gèô,×Z,@`6YÞÌì9}Öi»©2Ÿê»è‚ß´¾ÙU:Ï]C@[T½Ô°­~Æ8Å•‰P7|¦þ*{hÓ«Üÿ0Ó’IXÉÉÍç·ûÂÞ3q/òóK‰¶SËïø¹üûuC†°‚J´À ˜˜HfB†jF€2Iã$ñ'R'«»ÌX)í’o¼Ôt›ÿu™ èÆk…ߪ’E›cšU)v×ý KøàÅË}yNs¡¨Ð¼â×1qK9]]¾7‰¿ îG¢G!…99#Q€ @*û-ÿN!µ¤ó‰Õ/üÕãÆ‹)ˆfæ$ÖËõÝáEŠ4wORÎ#—(¢ç[ â·ŸØ@¯¸^!}[j¤þ0ŒÆ z•³«@e³(Ñ|‡tæ³´ë•£™sß" Zì€ñ³‰kì§Nͯ(û×*ŒczýHWóÜ”I°ò˜†²ð¼põYÐx}î¿jÕ% ®ý ç'rWøEÚß3*B/§'YzºX÷…¯‡„´¦W€(â–æ9—Dºq™¼±²x/Û¤-RüØ;)þK¿¥Ô¥9»ÀxæÞ ÆÜ,uDoC^èk& Ó“µ€ (¤›ÏÞ|6 øK¾üQ1ü­×9åöò¿oš.Û݇Ú<„ôJ0^±î•.ð¬Þë¦`È‚xt÷ ‰ìÞ¯dcHTÎíŠÉ‡¾¬ò>Ǥ K„.(ëR&«¯˘7ãÉ1d„Ý"ïøO“V¨NH¹cÞ+„V8t•Ò|çï¶ÃM}P=“ÍÏ›šè†ðgï=¬l’ƒQ9 û)‚3ñèqþ£–AÞ€¸®ØóY[ÍCûÑ}‹¸Y—±I##ܽˆEÊ}É{^¼îÚZ…)>þàC¾,Ë «»u[ƒ´1TrØT$erDLßÇv¼LôS0§xCÃ!±3z‘ïêy½ÓÔ1>¡ˆ°Q€\*Кæ8ïm'8ÜM#¥½n|»Bæ\Aê¶a9>À½nBtéþÕh7î©’J…¶H,[@©'>-ŒÔ ­©‘Œµº¿ÍÅE™G²+j!Ý…?\* %Õ´Þ\0që¸]ÈüržKõ¢×dœß›+³ªVSÅɾ†²Ýp6Ï"ÿµ^¶:5òÔÛ*®ÿ^b€8="eÀ¨qhÆØ3DÄw•g~Íhe¾òZJdt2S çr¢j©põ•«é#3ˆ_þ‰7 Xp'n/è)ë¼Ìcé²f:c¯,!JãÉŠI¶*µ¹GýQ¾Ü—ò•«Œ0¶ånàà=|›I8ÉœîËm—_ügXx‘m†ÓT$kØæ5Á9)g0 €”þoÆÃkö Ï߯ÿEkJ­™>_Ná/QЬú1]Ð(ßSo™o©A‘ÔnqõjkJhêçûˆàØK7@SûC°ûþª_Æ^jæ *ä]èfÓ ’T‚Ê«—”0Óek_ª;m^Òá^EùiÞ² Ånêu×;½«q«÷´áݜڶcÛŽÝÏ‚g®Xž®rHmì³T·ÅTÇ1¼bð”FÅ”Ì,&¹û‡S‘f¢÷sÈ.ÿœùËj!çùùqèàå×.ÄÐÃD=§:÷ûÿ:‘B*ÄÄ{óF˜@üm›Sä¿ZQ2!¾üO/¡ö¢2bvKÒœ­ÀÞÅH~e@Ý1Ë¢XÙñ8¸/lÊÓÇÁңєìPÛ&Êœ­ÓYˆÈøÊ›ù?vÙœ1|W!Ó7Bg£Kôš©ce*p |[sü)`Y™×ÜRº¬ -Dã…÷äþIáÊâsàžò|Âêµ[®mc¹ngGšTg³Ñ7'®̨Ûrœ¿¥Œ%Åèáã&-ÙóQ¡ŸÃŽc\Øà&õ;>DZl“3$e%¬@ODŽŠOTÃÅ“•Å+wSõáWÔÚ]t\¸1è<Õ8„1c·¥­S|"éI)sìO`;îûY¬_S8¾Œ¬ÚN}JBIé ¬ˆôê·Š€¶Í:?©„¹ƒ82pÛ^yMêkÒ×|J“à¿O±à`Ó Ýaçž,áb¡cÞ^˜FÜeJôrUaTÖ.´ú63&X/:€ºᄃôò®÷±‚hT’´sŠQa½7±“Åì÷DŒù÷Þ³Mñ|·3ÿÊ-E½ÒcëI¦`ü]KÅaÕs%½5 &Üþ“œÔ®†…ŸW߼ʹ_†Ó¾AÕ¯þ@…Dfè2¦|¹·ÄK~ÌÍð—CÌ™ãÔ¯ü×—›Îð…üjcj1£¼ƒ¨IÍÆ+ºx§F \£”°¯þð‚âõÒxgM>+üuÝÛIX!Kœ8cf+³x±b E·Ÿs>ÂMIˆ{Çuæ¿Ý7Ù_MŸÐÔé\´ø²›¢ï4ggðº°|Y©¸üéÒ €Úçâ¡«=tç–ep]`(îÚ0¢L‡MÑßm‰Âô¢asNúd¬lzðd€¹³ÿìxðÐ*ÿåK¯Æ˜5”0½8|õ:K}45Q^®Ñ^Ëk«óíŸ Å 'ëû¥aÕPu}¾Jîñ‘‚þÐl¨/«nŠÖÇ|ÁFxkãp¢&ÍS±£ðO)ãDÑi°å`i ô^éJ8¼Þo'Mè p—rylDDL¤‚EÜíR–Çv‹üdš"®üøOÏ›ñVÇËP_¸XcïÝØUù•ƒYCÚY+Î9:¹sð(>Þ¶K_äªöç%Ûz&Þýv2Ù³½þVG’63ž×Í[ÙË+eÁ„²Ü—VÏ0ÄGBßÈæòM²¯vþúuí²ý]KYu—óC¾#ÈÇÊk8¡ptÊã þ…"ùbr3iÕR*ˆ ;inNµj|ÏÝ4‰š§mÖäŠ-kA-/Œh$ªe½Rtz 盢\—o Š¡ÈgÍ9./Næ»Å{œ™ ›}±Æ§¼sœb!KPûÙ1)Œãáh˜,^Ÿã±:°—"ש-oçzPäHcú·#ÔPxÕêï/>ì½²’°L%1w=¼'g‡‘/Ó†û1ß³†<}‹ÿ'Ö¢/™4§ÿÐ6A¡Ø¶¥ú« e˜²i¿ç:±måÝöÛŒéÓlÝè_/’»UMâ/í%B6·²&o™È-#¦Úüñ¡K]ŸJX÷‡N¹Éª>é/-Í´HÈ“ñ4 W©Zðt™ŽÆ×˜U¬qfNû8Çé ëvõe»¢”@.AœKô¦©|ˆút縲—+—χ/ì"œ0uda]š$ Nª÷óéš"Ôá\ Ú½ãaÁB—Àåée-ßíÿÀëmq’¸Ù›—‡™ïl/îÙé%AúL×£ó (ĉ\îvcI¥#µ˜æƒhˆI6.‡4woÁ’eWÖÊO¼@ÁåÂ;ÀMQM gȘRÚ‹ìÜgZiÅFá·±?8Æ‚î5G}à-6|Ê–UâÄÓ+’”œ^-Wˆ¬_]’´\°ý ^àò>FC]Ë‹ ¬ n&'f÷)g…n±j, q€è$àÀ)êØ´÷Û. Oi q 6ëãdÓ'óÐ 21K˜òQÉ0|ñ7–]À%yøðñëoé¤Û…„þÀ€ˆ÷š³Çà R¦“ZŸDÓ¤¬UÍ'~€\ɽgðaÖ¶wýÒu7]wA•PÚ‡×ÃûæÕø3Àæ˜çÍIÁ³<ߦ¤G“¥¸ÒRNÌ·7z;Ü%M'[S›ûbòü‰+çñì²9­.{‰MÍŽ+Ç8¿s _´ð²aª‘žCå $9hMïš‹ƒÑ’ ޳Ô,Ñ[VG2@¢E+`íQÿFóñ¸¥pž5øsqD] í«mp@׊>}Ç¿Ëäm5¤É\6Ñ'5ÜSµçÌä-Š[ÚNg¤  ¸€`ŒÕgÚ%…Vº7®ÂÁXZfOm,Ðì„>?„DÒø(Êö@`S]û»+Ô3²²‡33_r̃S–“TÔÄ .È=ü0RdËf9+T„ü¦¤Ì\,§O~ku•îVâýŒ«g;ºÆNÉ}¹u¢wö|íÌv£Å‡7‚"É`¯FiÆõJÅúµ³Ö „"¯ùµ(»S@À + ^€ÀÇ0}Â…Ëï¶Ô!„niHü´D˨ÞÁ2q 9 uË[kÔ^À¿IŒ4_'v/µfàdÑŽd¦ÝÍ_CE/viI ‰Vð+-Ã’l=}%¯véÅ⌂èÜLWSÆ&kú»I^„™/}âGÖ|“‹`=rÌ8]ŒY&mŸ·GôÌEXâæö0Û|«ýûWêà>C-#/t¾FQÇÚt·Ü:ù)s ¡M*X´ª˜ãD@’UÊ}TîÂ$êatk]S31è‘y–Òü6ôÖO€2‰&äžA·i‹Àžti|fêMqÒ©uò¶Ûí±&`õAÎíp†ù¿kèDSõš™“èYé×LÌ¿Jdvä3jËçeéÈì®ÝÓ&ï}Óˆj]„[móͩ׳ó7-RK¨gaC çÐ2_Qàñ’lê¨=Ò@GþõÇãR¤P­R‹j¡tyu‘Sy繿Ñíµ³˜j”¹)ì‰dÛ9í‰ärÒ—(*µ©Žur>?•ØèøY{ P%JØœ§/ùLöÆ,ï ­1ÅDx$ï$¼·¤D¡Qõ›B㺚•‚ø.óL»Ç5¬¢É]p—À;÷=AP ÷EŽìM)ZÒ±IöÎ}‰ÜÖà’kêPÓ…ŒÞx˜7ÉøiQ€Ý‚±ù¸™GŒµpºHÐ}#¯'ëÀíÞ!þûPÛ4Íò¦ðƒ‰v0¾çy$ °6Úð<ßÏòà ·û#û?n˜îö€ðá­ØÀøcüoÞ"u°YÁƒ–HV¿œäÅ©;ËñvÖÕ‰¥Lmeký)A’7ó†è ZSƒ. wá¡"‹¿<Ú‹ï­ WS:r¶µC~åMñÔM û>"w)±“´Œëö_áéÉq_'d”ÄȸÍ¥ÁùE‡@u*ìj¹øëmÀÍ31Œ'6%#ÖíËfˆÔÊk¤6©Êù½É.n*ðÔVC»ÑdL?_¸Öç k„ÃI¥¥ý’Iäc(ËTø÷%Ý¢‡që”xÕ¨i¢#¼#‘þ®{™ .ÒO®²ºœõs±œ¼|^nßce†±–jFÀŒH˜qw\“²oŠ$Òì®ì%¼ÀÉ»ôú«':}ËßQ@JIÙ꿊À^O:(¡ŸÁ-†-ÊyFcsä _dþŸ¸2»á@&²'ÃÇí;W¥ÀúÜd5lûÅWýÆÑèÐQV9Ð%Å"­Æïò©‡f¿ÕwýH«Ð"¯^uÚDÅMQFSA“­û*«n2î%ÚŠšvùÁTåÙCà|« öÍeY³ožM+§SH¡¨’ÕsÀv}3)†½BöFJDÑìŸïp:Œ)¹„ 囦姕’Ò«ªz(®~Œr?Iç¦h>r·[rëØ]jFf×¹;½šs’e÷%Ð(ïXãÍ•øõ`…{"°*ãn”˜VÉ×ÓÀkÁ°x´ë ”ý lsóÍ3F?õ]-lIÏä©=\ë#ÞS@RôdÒü^~¼[K!ìKw~ý–ã/£Úõ@V^2Æ‘hèúå–èFÌœO`ÐÍÑk7âj1v§cÈöOf_Ì"¨Åg’”ftÙ>©} Ei€ê¶ÎL}Y—›Í"žÜ+(šLøù[&uðÐÓrW›RÓQ˜¯¼7È»ôÙ§kJÅ•Söum{E›õ‘6k *ãôøfüñwyH¡ ñô+wSÛÄ÷•ÊÍË ‰UÃ~Àf‰•œ±+£»ý©õ09ZÄ’8–L››I{Ùç’ˆmÊX8b¦•HÕÔ.¹ß^ Ä¥o›& €õÎ~Û›«¹Ä~õ&ÆüÞ…;¾/s¤¶ú–Ò;eEYúΖz˽XÝø§±¤€1ÅÛ‰BHûÙ~D®± Û*šø±4K[ 8ZÈ?€| ¶Ú3Âa´ÀeH²¿i p¦¤2ç¬Ä¾7X‹™1a'Iákü¶ç¹pѽv¶ÅúÒU ”e¢¦î§îñŒ9¾ÑÔb Šˆûª\˜ìCmTºCÇ®Hýå$iRü6û«šÚ–ep*×ݤx,-a,ÁKÓQ–T¸ÞmoÔ1³ØF#à);-ÚA1‚÷¸ÐDk§½û{]ef*<½Ž´ŽÝ;Ýr’eB$P‡çûwY|ôÁËoÙ«*…GÐ ¾åÇT¯û—!IúÉ­zUÊâ0›|ã¯ç|ZuöÉ_­ÕáxÙw• .+ö“ÍA?òÕ†$¤XÝÅ„"ÇCÇ0g+<Û;DÂå^*÷^2Ç̌Ŀ`䔀¬t‰à=]Ú•ãÒÂYÚúHLäS˘û¾|$Ñr?_ÖŒ«88¶û 6í µÎÚÜÓYœOD¾^4P©kï w¡7ðRZ—~ãÖ ´[o<áHŽ»Œ%>qŸq0‘g`7ËñIÌu¶4’"M¸'GìŸóÒòl*ãÉ¢¸%÷Š\Ž.[_°¼ôâëæUB‹ä¯ER8œ—¤J5X³´ÿ²Rý Í'jÄT¬³óþ%Êú,öB.›{Gð<Þ$u¯õŽmrgžï)¹‹g¨ù{y/[2ÓKú] w¾ðõI!à\é&pr:ÆùÊ­¾nûSeJYÌ7hj¢8ññØw1ÝÝ–¯®Û,ÖB¤¡HDÐ^;¤É¶&õgÐ1hŪèÞðœVk@€yÿ·;c¾ŠÂ|‚”<ßú‹ûfœ¾‚ïÀµ)Õ¶ÔuŠÆ§«ü)ÕR;댨t.0döïªß˜í ¾¾ž Â#IheËbÿÞá\Oå2«Ô†\œùüQ’EH;!?DŸÎÉì_ RM¹ÅûP”Ì[-ïá³~ZŽy>´&—œìGÂ)lÍÐÖSñô¥”C+ Ê«Oj¢bË<««=Émƒ¦onÁÕ,U€ÝïMË?{ér¶{—¡ÚjuHÚIL•å¢ð]Gõ° sõšˆÙ^ÑÑ`t­=Ä@p1 €ØþõREîðçÁ»r Kѧ™Hõ1ѱK+1Tiî "×0Sm&Ý¡›¿ÇîòÞ]ØÙªç;©ú+ô:ÝÝ@9£Nª÷"Ìò“ C¤Uåyæ±æ;ñ@ªë›”)L`ZZãpI{ÌÛßëŸ[C®Ì’½{KV‘íé«rì²K¿y=3š8‡cæÆR"ü™šB›N,=*"FhUúúr™Çãñó‡¯ÕzWlgm5Ó\n¿Ý «Çi©î¡ÿxÊôsÚéì¤BfÆöƒô°¢Õ~Zëò‚›Iž«¯—îߨþç[L ä+YÊ•!íl¬+س^Ë÷c2ðÔTí©è¬ÓO¢R™Nª^Œ§Q6ÕÇiËÆ9gÜÂÁ^¤vT^˜—õÆ7:¿ ËE€­'x[<ƪÿã%&§»¢„àTÏ%aî£Åå`$ÕÑ2–‚a/.¤/íu–?AXƒï«ûƒ± ~™¦ñ9÷P2§­Ôü¯GÓn€sÜ´«-¿ wIýÆ Z¿Éf?UŽl¾Ûó—Zg˜¿Ô-ò^J ž^,ÆäEÒÛ½°2ý/2íšc‹yvl6¬V#^°X¦Y%p¬‘[rÚJñÂÐnRƒ°Ýή—}Xˆhù«íw=4Ÿ—˜~Û\ä–žT¿š9 ,Ùˆ–(™I Ò 7h©.jf¼#À¦/ܼœÌ"œF MŸhÖˆæ¥=—~‹"X¸²æ3š'¾èÔ®f]—\Úö!‡f~’Jm¼28ø·TéÑÀ7Ûíöú….Rb¤]“cz›€•»¡rui"Kë#ª å öíÄØ÷a~(l-“Þ“Òg±ÀÍ—Á~û#%ReÄa˜xŒŒÁhZÖq½Ìje ÔNrõXsjcvÄ'OHCà“}ncî¼*nûF{ŽüáfÖæù UÙÆåZ±R{ëC1‹Ïiοç>XU’¡kÒå«Ë9çÅb(¸ÿÀÎmÓ—O6:Q¡äÆá<ÖÀ¦cu¶wé&Ö³þ êBÞœY>£¦äï—Læü6°a©JúêÁÃ×#òþÊ&îŽCŒ™áƒ”Jº¢P¾ypÊI׋}î3ÐCF¢*ºÔAÑêeÜ#ãñéo‹Ô0ý1¦5Ù—×&ÍNzÚù[éÜI ·ˆµLî½vjbTö…µÍŒNa9¯ÀþE –ôm1çI<;f!c8Ñuý7R2C4Ùe(TA‚8ñê»i«S”BÖã…®vc_ùœnÖ :Ñ3>xxìÞ/Û[‹GRB!Ýéæ(»´¡¶É.õ¢ZhFÀZiºð°[†È„¸±qþ,]ÉyQÿÓ¶nNiÜ#ŠŒ ] týp¼×aÏ$~Ì"³4¼FmÔµ  Û¹s¶´aºâÉ#mŸ¡øíÃÓ†“›-“—ƒ!#Èa<ä=UŽæØ‡®ƒŒaæêå­¯q&ÖÿJÓµ8mцÑl)qÔ8å> ÷¸x¦ás9ØÚøêX34X\S#“Ù«÷s=ðycúŠÜ@ ßèGƒE>®»s´a¦¡5©zÍØòNùÙ\I\rù ·ãÊ¢g¦™¾áߎl´n¡åµùÃJÜ—-õÑ3á0)+ßmdâš gÑÞéöÜK­Ÿ§P¯†b{YTìK×L\/NTQ®‹ŒžÂèo)í« ÐÏ2«qµX࣮“‘¯.åáÝÛvÈG×3óë”ÿo[Ëc¯F\µÊÔkš…XšÆ‰þ…kÎ#†#ùh„òÊ•¾kýÿîsÝvÄßxþâ+abl¦‹ÿ â©S]ιGí•ÛLÅaGÙ@ Õëg(4L«å’‹pŒÉ+ÒQýlgd·»Ä BòSH¾úgÌ<»P4-´ØúªÓ—¸XXêÆè¡FÕ !Ú™bðâÂ)¢=ŒEGù„i0Ï‹«Ä}ÒcÉxÆåÇŒ»šçÉc ‡Q5—6 ÂMMÜJ•š€M»eX¾F+Q[öGëÖ癃škÿ•¬².S¾í“fþS¥kšË=ý…$¤èùáu\NH嬚üªÌQÆO{®š s½]¦t¹\ðÒI\U,³R¬x¹}¨S¡=d\“ù¼¦ÝçßÜ­.ð?JJj¼K5xSøn1&i~¬ƒ¥»à}âÍáP˜V*ûJð튷]È€I±j$ã!ÞëÆ×̳fïä uàÇŸÎ?&”¾·R£ËXx{0/_3 1 GÝÏ6lsïÈÆÎ Ä‚c½*UL¹p&Ÿ8h¤+¯qNI5@› ŽßßW¶Ïo—rl$áE<ð1 # Û'ó¯vä´Ðæ$0H‹Ä¾Í`‚Ù«.ϛؔWÌÎì·]·k9*ü•Œt<%¼/$$)–¦à¥pÉ®âjFC¯úÆf"êÑì–ýæyΖv”Ÿsײ>8ÑÞ™–Êò-ÝþêGóÛ¿ýÊ_Gÿ­/³vv~6–ÏB_ˆÇ uP®‹3kLùƒ@uLÅÄP;øušŠv$4Çë’~8ÞV¬o4v-uЃ£­!ÝJRŠER+”æÊ(‹ÓHÝ,/䜑F ؽ5±ø\Bß4îûî°>7ë=tÂûîÅjÔ„³ˆÅÔÕ ¹•A%UT… „5¢Q@ (GÞó¡WKcìè÷»´Š©õîbU_Zo}ð^õ÷o½{ì½·—]Üö{Úöû»ïzúù>çÆ7Þ|ßqç«+-4}7nï¯uï¼ðwn÷«ÞzWlxû½ík¹Ü€ÌÔ·nC«dßwîçAÕÛº²ªÕ [ ¾á©íñ”ï[ÞU4€˜M )èÈjz šS&š@i£DژИhhÓ& Ó*xÑ LM4ÓL&š2b ”ôÄÑ€ ƒ* ÓКhɦ&š2Gª~šd 2dÉ<ƒF„ôÍ‚i“514Ó CLF#F¦Ñ…=&MSô)àhh  i ÓMSõOhLhPePÓ “6ši螀 i‰‚zžš†)á2™SÓÊyI²™”Íš§êzjOÑ'‰§¤ôODz™£Jy6BžO zL&Õ¨ô§é“Ié©âM0hÔõj ªŠjaO5=2hÒf”{TòÚGµ#ÔñC!é=&š6§ê€ôŸªÔÚ™“QèFF†MõFS=Qå=M™MÉ ýQêµ=ª é õ ô!Ôšb R ÓŒ€'S‚yV!fp¡t ¨s¦\Ì“:\œ€Ì €[©Â—B`œ9òÔ˜&ª À…‰LBB 9ý®sJÍÖæo5Þ‡^ùêa¾Ï{j¡f©×FÙNþvŽ1éîÔ* =Xu7N_¢‚˪ùe‘hE÷IÞ䥫ÈÕ5k¿Ny™…åÉîo2œ±~û³¥úe3{á²ÁxÉuhך85›}®Qƒ„ÓÀDZËr‰1žŽâ±Y×^5'j‘[Õ£ëÞ1 µÆ»“ÁëÍìðÝé_Ú}ìÜâ>®q<Å»lÌ\÷Ó¿—jmµ®Oì¸ô¼JTeÚWÓ̧ƒÐ"ªin·ùЭæþ7Ðc#úükês™¬³W=ö?ï=¹ÅFÏU·ÓÎp¤Òs⤠—gsRX»GÍÞï¶Û_ Õ¯ 3VtäãfA±'‘ƚЂð!¤`µ˜?Q<Ó˜ãfTø†‰ ‘TËPÁ€mTÙ›2J(O/$‘AB@³œt„Uˆ`¤$,4ýi—”L3 ",ÄU…”„@ =ù¬(Mµ¤HQP*HQAGòBŠ*¤è PDŸuè€-H(B’¥dl€ Ò€B¤b(’ˆÄK¢°b&xH1l ‚Dúw)‹a/£LÊ¥ºQ™²6’,Ѓ ÿ±$¿ ÞjA§wDõ<àlMDÕ‰8’ùÜI'Àº$!g¼üƒnõ$Î!Ä\ëøð­`Ì3RÙ!0áNc Z¹ä4-odcú¦ ŸM¬bb›F/ÒkKlÊóŸb¼‡ë8 ˆdžñ°Ɇü¬ @‹•®Þb€ Lþ$äÃfÝ&FœJÏ \yØoPýãÉ4Œ{^‡Ï–Ú~gw\X€rOø¨4M 5ˆ|sž˜:RÄ€{s"†Œ S€ âBõ݃ùÁ ]¢aþÇTÎ ñDáàcž1¹¡f:p ÎzûÍ Ä{uhºH W¼‡õ{—Ì2¦×ü™“‘ 1°a´äÊÃç ÀoƤf¨…KlóüuœÕf+È/aÝV!´pÅF …“»ë6§4|¤&!n)9È5Ï¡"»+vùO˜Ì%˜áX½8:”¦]Ì×¢?´Ëƒ8âÀq¦Ó ~ÝŽ?ƒW£Í\XQ‡aF@r)¢ž¼Kª¶˜è\aþŸ€(0:‘šà3ØA9–X@1n¤ÅŠÈm”mÙ°qƒÓ)8CH$žÕf‹§hzjžà³(¨è éäU÷ЃͶR õMsDzFÕšT=ÓLi­ÆÁ¶Úз„œš”ˆùÇ&Þ÷â.1bÈ.àI)¤³ý„†ŠXJWh°”)!±ZO04/•y—%é7Ó`Ðeˆä $ÒšÑS"Àft H åÚ²~ÆÀdSyi†pÊÌÃX…ЇÿNÑè[&ò†‚œßÕŽ˜,ŒCì2CëÛÓ¢ºt‡˜rš"ý¦¼=3õ!dúFÜËs$inBO}«Ô6$ñ ‘ ^7·¡,¢b¢lôÅ¿¡l6íC&Ü(Ò†ô+P¦BÄðÆ1.Ãà @6ìÞ1 ÇO "ÎÀ曫¿3ƒd;‰…ùXBÁ¤!w+Œ'ü” ŽÆâºÇ©sÝU[Á—ßçêCïT4µÕÅì¯ÃâŸdzxQh£Ìq‘Î(á(+ŒCåë¹{ £|<ƒzÙ¾µXH,c hÿñbäÙ‡ÇH† ÎäBà7:ë’û¯¨M„=}_Ô‘}‡:%ƒ½Š¦$Òéå…ò~gEK… ‘îZÉó·_¶ò1$6Hz0~Yl™r}¢ó$ŒòìÓoÜ“ïºh¿f‰¬Ù?³¸åvN¸½wæ¹ o« ;Ë®;½%Ÿ_tÏB³î~þvÊíî¸ÕOAlßÄeì EÛy}{–ú=9×$_>ÜX¼ZDé÷L9ú™É†Šœ€­~q¼!€%£¢æ`C¿üÅ+Þ«YÀÖÞÄ<-÷«¬áðyɽ\}]Ô;k#ü¹Zf‰\BHÀó@C`èÝ[ºCÑ3†Õ¬snmñ0={Àh?`ªBx G¿wo`‰µD¯ÈX ©¬+‰ZÈ24L®B ~Ú†4þ„s$¥o˜÷P=¥•ŸÓhÛ@>AËÿ_*¨õ»-}ºÇæû¾TÍòÑÐÉå:“«¨äÍ= $ô 3 íËøu¬ða ë±Ùc2`õ­x„« !‚9ï¯AR³µÊéÈâeSÌ;ÈNË.@ˆÕaP 2Vm´Z$v:]Z»aH¿Æó1«±1ÔÅ*—EÑîë¼Vƒf[>“–DÙÁR0@gëÍÓTê\c˜¤'»ô2àæJ×tï„;’ C’k,b™„…Ìpdž õÚX!ÆpÞ—#Á÷ªÇ÷iÿ9 W3ußè…g-ž}:ùeÓ7Ÿâu¯e­ã5) @•y)óy€ÚŒð” ÈWœé騹¯7=f ³üqÎÿpq‡Åq7 õm!œ;ÿ-$•CN"(ŒHp!V¶ßä]ÏÆ”ÐõU¾†ÚêéË\Lõ. 6ÂUy!‘@a`3…ð×h~$ âüûûJ E8fb[8¢Dvçó¡› Ì*Ú‡©tOlÔ>C=Ê3š@Ô0ɇ`îÞ;¶hi¢ýÀ)‰ÍÔkÁÏ0¬ŸÊâÓ´¢<ÀñÍ– ÜÝ+bÛ½²Kã¼nÎ!Ð…›#ëºÇ€gŸ›M È[?•¾T&31lY Â,çÊzF. ç¾€çŸiüLô3(œûüX8´6Ú÷ …«ãœ7H25Å"-6 {‘: {VcÏ?ºs´<¡ãz~Û‡kFÔo¼œÉ°Áìa¾ˆ@ÏC‚+¯\ aëBîÙÇ”bGÒ˜¿üÿ®Õœ„•­{Äõ{Î>0ÐSmÊsv yôA2ÿ^PßlÁðÍB$@4&¡Ìd²}%™lh!»• ??þÒ ?Üéi…æ—²C‡€t’„þ°¨ "X† Vh@ð6JÆÛ+³ÎÚøÝöÔËÙ'ÓÌ^]g\ÌCI¨&=šRDŸ A@É&„ICØXÌ5riÞq/ª©æ0á•U~.ƒ¡dßL 0Ÿ c'1ëýÌ u.Á™$LTŽ9 îøçs_@áZ9BqÕ~|ÞF/¯9ŒÆŒ¼Ë„¤—’š”F¶£Š¯Ö nöý /=Œ^äór_ÎyŽ˜\h\‚¿ —, ޱ¨"ðPŠ(Hx¯ÜvL×.÷ ¨9‡ÀS¡n…SaP†d!‡rC‚zf=‡âf} S‡ËÂ;"ARëó†ãí8g­j`5DÓThz†³ËB¸'!æ¶ñï`ê›dåØD®i0Öº'„u#,çU羫 À»ÂóÁ¯-ª´õ?Lðw½Ë†~»ŽBc¼Ô?‘¸lÌÈ>ªQ´q-YÑì/³5hgipynÐ3ž‰æ›ÿÜ®z[5^úñ¶õ÷ü‡FÔò8P혋ؕe™ßL ¼”#ßš}Aÿs¨]ô`7´Žàðµ¶X=‹äòJÐåA´¹âÙàéÁþ¶Ÿ;í…é·C‚8Úƒ¿˜=<]cõouFýô²¹-šïÆ@›çŽß9BVNd“ Ì¡xoH^tÃk}Råø®©Ìƒýñ.mµ××ö¸±Õr1XÌ?©Z#šœbâ!¤Nmâe: &>Ô]:‡·R¶ë@ÞÚ oC08GN,àÎÝÐ×s}Ÿ«ïw¸r¯ë»Ï2ËK}Óf¹›AÞîuÙW¦Ýëö|»ÖÐmÔ¸…35O ùŽa ªÁÿžÚ}BîÎ4ß¾Ð9·µpOnÝØa«{6‚ó›sÐ4Í;ó~áóÜ‹&nœG‰Šzê+¸ªÊÌÍÊÍîú44Y“`uËùÅ,¢pÚŒ¦¶Št£`³ó«Û’¬tX–ËpžnA³Õ_ ¨æ¶!E·bÒÿ=¿Ï½|_­ÓÝáe$Ðy0ƒN|el\ç€D åªÞ¥P«Çä~>™Åkx¹§(˜¡§‹-F 1¨’¸P+„!#r@—¹g=2n$jÁᵊ®ªÁÊM$~„Âò2ž¯ Åíc‰ít©¦€€€’k<à ±R7þµG)®[í¾$Jùß6Óжå 7Ö<úõómÞñ»œ²` 6¥¢èE ‰ã.×3ÄØ¿vª‹ãVã èÜÝ3RÛCi‡ú{ûÕ‰ö¬U°*I‚-'ãÑY ùtDfVy1~<ÄÏòÉÕàÈð0“š”,¼lM¥ö¾®õs…ÕUOt>dCÙÜ/b6ŸÂ…º!I-ܱt÷öl®Ò˜8Ñ<@“#g>0W€dÖ¼ÂÅœêƒ:æË†pcY ‚M 0vRVðAš]‡­Rè_ÉC'ê|CW= ýS#fôr¬´aq[O#Mž>Ø–uF§r—c]ŽänÁ»ö§R'¶òÑÂk†ï”æ1gŠT¯ Ò,$÷òýwQBæ|èñ_ÿ¿Œæ T w^9ÐË€t™‰(z±$‹³çšËò*‰£etDai7é¾Þ<\/:‚‰e¡ñ ½O¡:ÁÈ2㑎øÎ@,lþ÷;"hÊxÓsQ‹ôºÜ{O£?´‚æoÐÀºì¸Rð͸+UŒ_ º÷öš?Ó0 !(9ðä9Àq?§|SâžsHÝW`\}ÉZmØO ¢¨1™+õ5Ï»»¼º’€®{ßí+ {÷A‰g @‚6ÇT¥~JQÀp'yÊaM³a©Ç@¡[³í‚ɰáCW¼6$þ0—ÛÑî§{µ‡?DÎ@bÄóg±t?ºÕG^Hévg„kLÒ¥r±~ÝÄh¦¯i¥é1fË÷1ŠÛ?®x28Þ¬­[ød<݆Öäh¶¬Ê_Q5hÝsƒtïv´ÏHì-\{|×ÍšPt¤Ú—²c,¼²/’ÐuÄïq#ùŸ …óŸ¡Ç—sØ R:Þ‰…†`L\Í0çÂŒ›µ˜2FxX'j÷šF°«aÝò¼»~И(‡BΠ¾í|³x`€Ë\7-,Çn8*òּ͟Q Ã^ê+ …ûj©‚P€¤^@kŒ)gÜC’ÃR¡ìuÀŠD‡x6ñ²õñYõXêÈË¡‚Vͯ†À ×—Þ”b’F6ÔÿAœáUªý¸ªö 좆êUyV¨]”B:F>³* ÐòAº`fž[ˆ¤tòlo€èw£ç>»øqq\[™ßÒò¦¶± ]zN½ê `.Ñšù¨—÷ôL$ ÀU¨œ*Ë’Ñ^óVÁ¥äm@¨ múYŸ†}’ n¢¨­¤„ç¢Mé¹Ìh)=“Û}Á<î45ïñt,С\ò(ÈBX¥Ÿ\’ÖJŠaöçSÜÈ ±4>ª“('6¸Äu~7°É¶ÒÒzØ/·[ÒbÏ•,Ié½'O<ßî;úN"€2C.õEAçíþQ'³¶â¬µÕÙŸ2›cÝåh¡Ò˜r O¥bæGûå¿% 7b…?ôĆ$û÷è{ÚRá C–yL©ÙaBAᬠ+–@¨T@8wˆù4è9þÛM´võ©äýŸA¨ó˜•!,ßÜ)³«…tñoñàÈ4åf;˜›Æhƒ•ÑæãƒÜÖƶiÃ+؆aÔ³Vvž¼ß L—w×—-õßcvî§zâR:g`´±Ðnj.¦¾Qlå/¤’ BÖýWÖ¡hÞ¿Yß·i –·¨×ﺀ?Hð`¼`S=]§ ¸¬KªtÙï»ÝïuêÀVpsw¯ÝË"€‹ȹ~–o QÅä71çH`¤ð ò[8MýcŠ¯çŽ‚ˆ£Ì¨0poØöA`r¼(ݪ¶TKXßIð©ì=V“ü`Y¹Añ]›vmMåçî ïÏÝo™Á†6‡¹ù§7ô7ðwD e¹<ö3Ý-“?Ǽ´éûkb퓾‹‡yA‘\Ç@Ž;ÀT+r-ÍèÕÇ#4Pöx¯‚uƒÏ¾¸°®¨Hмº0’ ¹Z3ÜÌ1Œ8hê²¶»Â¡Q0ÐëA˜Ól{K·IG×–O)ô~oÝ•Àó>ÿ½ÔfKp„$ ܱuÓ;Ðf!“`—Pys Ï‹ánÕ{:_×Ù÷”ýÞOÐçCDÛ¥ÐYBÖ*œv£'› 5"¼ÌQpr©Ö6 ˜wg0»™¤ uñÄŽ8:Ý~±Ð…F=CÿïÍ®µ²›„úÚþæªâîI#YHØÐ Y—âW±9(ñdMQlëÇ´PÕ¸¼ÎWBƒhxÙÿ’÷‚Ññä£\Ê.X,Œd…³å˜cüêê¸Þ|‡Èµøåóm°ýÍ9Ìéòв$×*9¼  4˜$²=‹EÈË僥¥÷›…Q­=Š®”£ÊSvc?RÓ°…€ ÎAt5“ÅlÊU¿`}Ýö*Ýcažä01óù;ÈEXL¿OÅýñÄèi)$ÌO©‘D±È”'FPÞœùÆìhÌé{¯ùx;%Gê'ӯѹ_3H÷õü¿­œ›Ú 5¶¹×Ÿ§Ò5…H"îMðC9Óân¾˜Ýòèˆ Ç#1¹ Uësü'аVä¦å7üZ{ °£vkVÚHmºÊrÕ';Ò†u|EÜ+ZTbñ€7Y½šôüH'ƒë‹e_d«vGˆ ÇÐaÜîZýÙY¶5OIý>6ýÉólj_ü»\Cd¢tw/÷(Ê0ýù|ï)ýƒ#éÈ” KyˆÀÈ9g¾U¾Ru2áèE+bÅ£åŽÚÏÉ’æ:ÖŽ«£„¿Ë‹´q €5†­Þ ¢ðêò_F «n5Nê,P˜¬6l®¶ƒ5Ì4¨¥ƒô)‰»AK÷Tl‚Ò\6ô-?÷óu¯˜÷#öx1@ßä%2ù–A‹ WX«ð‹\YJ (C¹X½êfmT¨t)}¾vARvanƒÌ³=p®^·œhÌ}"ŽMÕ ´ƾ혀ád@‹žÝo˜ …Nƒ63óŠyfï“àí®är£Jóî¾GJó/š´‰Sµ¬ò[ò›'‰[’‹xSAH£[$ŠBœ¸e"Õ Sé?’¬2SQæ²Ú3ó&6K±uèoé:(8P†ý÷‡laBæg°’^r‹dz"“HÃ¥ª¶Ý5k}Ѻ86ÁyþÎÍžMV"I„Ôü“óŸ‘åêùïS’lO»ÍãhQ…{—_ö/…c÷Ùš›ä =aŒ1n3X)€²Ðz‡ÒAÈ#ƒÙ ×h#šÚA~fãº{†~·Ã–LrDŠ€ REÙLødWW@®\ÃbÙr:€îÎwªÛ£w@Wáç‹ÐEЈ~ÿn<|™êPV¡†¢¾v‰"Ü'×äÖ÷3÷aIfÅÇ %YžzH…†8ýxe#SôkdmœNM_CGÑC·ÅjµFÇÓ ‰úÅ´NÏÌãš””Űù xd±fÞG\vFn"å oT3)üpÔH1£þ@fK fPÁ7¸ Zrþ~§ÄÎPˆ¦ï‰¼µá~éõfWþ­§|o-^+ÀDóu v{d5L•¯•tDÇù¼a8A¶×'¬£ •ƒÊ\Ë–kØ%d—LiÔWeÜvÏ©S¿l}i`g2VB$Ò•Ö£l •×0Î`¶†q(û„ @r7ÿëy:ÊžKlmü*?ËõÔ6¬¾0 W,£/6/¥Êç…/G¿I·©4³Qãc¦Pâ!³%Œy9Oû]ˆÉ)b‡ åÏUj3’¥ëaPÆ´Íí‰X PBdŸ\c›Â_lÐàütGú¢9—ð 镸o®¤GvÒZ«kû1s\H>,ûưÁûub ~¤å;¸„DAî*ï4©²Ÿ®¼­goƒýï¸1@´%è¾®§Öo‡ž”iÅàçTšs˜4oÖ¿“Áèqä =ó»1œfàŽùMæ*K3|'Ò·6ÇV¿}åÕ«2äi³+²&†N-f¢IÆxaê‡@4¡ÕSn÷`ø*ý×þ('n–ùq!ÚrRiŸAY¢²r\H$r€òSp %áÌbMfg«7yD©ŒGÛWü%}e¸fDÊáŽ[N¡|[’³aIøOÍfµj™0ÙÀxNÅ‚"C"äµ”f,¡¨ÂÃE=kØþúÎ;1²]ÖOu’ì"ãKñçùM¡vþG‚¸ òú>ŠŠŸ ÄÔ'(žÁB,@²Va]ÅWšDÉä0x¶ fyH `bó62H ÕJ0;ûݬ-G‘ ×oŽ˜Hþ!˜E@piª¼1Åê}Y¶©T³µ?Ræ;+4h6 ¦Ûh\Ïu^ùÂÑò-<®a0TJ}ëìízÂÉQläæw+Bȵ8äl¿^Þ¥GüÎ;A …îºð„%ÇHŠ Ø6Ë»Ð;Q`Ëÿ|foŠ›sÂ5ŸÒ®rñܹ½Ì¯ç†ì£Sñ8[HÕ³åÕ=¹†"ã9n›,´3a2„ùsXŒ3<«Ó r“Ç9ãƒv¡lvx‰ÆŒ0ο ,!aQáû1ÚP;Ì7¨¢âq#U)ÌyÙÀ\†)ÉÂlÇì˜Ð»ÿ;o¤ìôENdäk)¬>y«IWÃ~^|¡’Ê›ñøzôΊÖ €.Æ~Áò…ÖÞç–¸ý¼§ý(ÞºP% ˆï ;›¾)‡« (qB¡a®4Qô×ó¡. PdèÂÉïås!zmÔ~œ«d{ûW‚¤áDø~vÈuôEŒ&pA¤ ¸vÁº:@À!rðM'OÞVO®ê©®íãäu»ùù¢à ‚ Zå‘L.W–9¤MRrPžó.mê¥ó‹2l``|Ê8z¼ï´'e$O`Û¨È5g!ÓPýÎѽ·eñç¸8m%$ê â„rAÜ`2WH BÚãtÁqÉöyl# |ÌâÛ´„^©<-Rë U®@aNì]ìs6:’ÖM& aC1²ü©= ¡ó°QÕB Ÿ°@‘Ýæ~Ïs¯—šIgašéƾ¦ÔÏÒ€{òt%¸41‡ª­…œ[¯àk'·Áé–Èi`§àª?ÛU¤H @„ „0žš_S6,pja¡q£QÅãÊ<¡€kÂSˆpO0ÿë1/¶öOæü6ÏîþoVòÒ€ü ƒ ^:ª qSÇÔÕîôÖSÞ³ºø»¼·­Ù{•€_ƒ ßÜ`´x¨÷«ÛŽÅ€:‘ ðï¾A!äK²ËNBë¨qÐŽ —G­mþ@Ýlo¯÷´.UKþ^Ñí\ðC *šÂݳúëÕÐ-usãé£Öt¡§Y4–;{EÊ$;À¾øÁZ@²ññè_æy§i÷Ùº¯”]µ P‡hïý[÷ a»"…Δú§€X P”߀/÷à!ò*仇¤U qÆ ¼á&±ƒ§A„'€y,Ëg?ÞÎm6W­éÑmµVÔ{ßæòÎÒLµ sIß¶~†uý [ä e²y`§!L l#ñ~¨"’SZ!Ð ßàdøŒ÷û…?ݰ®)®<öZ ºQ—)O#Xë‡Q¹(©ÛÐJˆ1Ñi9ò´±üMÞnu–ÊnÝûX4æÝ«j~ΨsÌ©½Rã™#ÿjì”=X¯8’R½¹³I}Ê(!$­|¼:ééÑΕKe…¸ý˳› »¡.¦¼|mAZ$( a]c’.½º>rÀ@šŸ·ìâ ©X&Æ´ é–7™8ýãdb·Ò8$ 5!oÀ XÅ|}iÒÏBŸSNÑD‹?FX¸Ëœ¶j¬¾ZßWÿ¹ ëjÚecÈœü™/Îãe¶’Öþ#ˆÿ$@àh]¸HPÂnÌ.]×åæüZƒç, "Ó 3 thpåK÷s¿K|ƹÿ§¯Ïuý/ñ ¡â8. q?F #GDwÂ!IBQnÔ–0Y1æ]ËVW^1 %°™óŠz<»!ýFt/ð§Ýï6™—¸Ð§±I·]ᡃÇ0!6.:DŒVˆJòH|æ¤è4¨pµ6sƒmâç§£#fÒ,õ¹ÐÕ9›¦ðöŽl€²!¸ ^»WÆÛ1sL˳´k[çêÞõ»ß'š˜ö©>2 7·jä@ÿ,ÿ?é»bT‹Œ’ÅÈ|Ç"–Bvÿ…{™Ûó’Î<7•â3Ï5Ž­aD3Þ¤Ø4[ïç›ÝµÄnõàÌz#ñ Pw:EèŽA[ -`Ý.ñ³R„{|eýÛ;NçºÏÖ“}’Ìþô=€—ç€ !P‡­C@‚>p*’ÿÍPs®cÖÅÈVÔUKo[ Šß_‡ËÈèq4 ›üÇ+ ¸Ü´ ÕüáéaÙ÷Gný¥×24Ê÷ã¸ÌéŸö:=÷Ωv~ñ3[C–€bS\ùå¹4[dkì×bQpm@uêþ\ü|ó˜Ô=[”Ôîí£Ô¦ÇU†ö¨ æ~ºà€ì£Ò3mçϱ.Þè=ë\zS·íô©¬Rï™§ö¶P½ Äûƒ‘TüDs÷ÇIéGHr«Éž³T$F5QëM2ÿº²ÜÊ~róÆ­MºÃ « ^a—¹T¸ÂŸÒÀÎy@9¢ۇ˜0U¾ÌÄ'}˜“}Ù@¿ºÓ}9kÿ¿sÂû×Ïöãw¼ÎóGntàRF¯ X0@ZAVL` Ç=øPg¡>ÐQà "ü‡êíŸ ‚¤Ñ@È2*ë`Ä E{­±¢EƒŸÉz]wzüYs×ñàî¼Y“!§|sÐs}Zj¦×nÊ|¤á`ÁÊŰ{I–†•…'³°ÞÅÑOtWz‹hôÙ&ì.ÒAZYÎ@Õ"ü_‹WFRR´z=½Í'^‚ʳ³•½Í±å¤ÕæÓqÿD@îqEuPSf@n;õ£- rñ·T¯½¼ÉzÊbù{CJÑû\béÞ5ø0q¹7.¹dö„Y”Þx%ñŸe}$…—žÔ's¶ooR4e9bt©<ºéCÈÆÝLO¯0§ÁL¹ã“«Y85öO\«–ÄnJšk£D¿¶¥‰[(°’ÿl› ýÛ9hzIk§W‚í{3̓ DúJÍÝq쨶zͯ练Æp,-üýËRR½ª¹Œ0IÕÃG©—X«{‰Ñ\–²©¢E…GñóV jÞê>èºvM»G ß.kChTñä88QxÙ«iL›ßGàÃæL¡|™ÚÆÕ#ʽ{åþPÛ°ÏžÉq&%K:#ÇÌRu2@q®þº«®ÈƒÄNŠÞžMÏ[ñ•vó=[õ´!€RVË€wœ­ê‚ .'„À2§îÇñ GT~tž–;"”^üêØí¹rU*¥˜o0þÌ”–wi#Ù ­ñ·‚¨JVãâší—èdc!4>ÃÌZ«æ+Mt}Goa¹KúQüâûÆæ[õ_Š<1á­/eÜ`ÿ:otøyúYCâijg¤¿Y"H €š*| kíý”78…£c¶â WCý½¤8:ÃÐ6í2!Æìp< wAt!¼e”wí©dõ\]2÷ÀÓ¼|û3Ée[­y£¦±Ñ…Ôd=ÐÉFbf©Ú»¤ Ê°±Åù¢¼‘üÿ Ôc´nZÒÏæƒ~4¿7ã97?Iwç+R “OV¬Ø)Uò(Ú:‰—_‡!ž\ ÁFòÛ%Û¿Æmûÿo“ Fö]Ξ¡ AI9uYù¹8EÙÝPª@"í[4fø>Åc…æ±a‘ÇŸÌ8­)y¸C¶ZŸýƒÎ3:¬àjëßÞñ}ÚΜð(7:”pÙÙåMo:VÞÃË(£EºÝhm_ŠÎŒ+‚ŸëÑü‹í_Yú‰tË×7{Ë'ñ>[öEJ¢—€ˆlì–P–dtœ®‡ùçýmña+žT ~æ~ 2ª_( ÝlGv£ûsïmŒ_Õì"3MCw·“{ýç±¢¼Õ%Ü.OøyßÕ§éRÖX ˜2…{ôñY鵯úÙ¡À®Ù¤Êô× ydß&ÞÙ7œój)îN?|’ÿ B‘Š©ä(5Ü*„€£¬ZÝ–¼“ŠÅ÷¬xùˆa®À30‘Ùù1ÝP2ãÏ›®G(©œ÷º Ùhh?nóXà2Z.­âºG›™zpÐ ò¡‰\”ïú¨ dTÒ|ùªØ:RÞ’ ¶·OŸßRnH¡}“Ü—ßEÿ•ÑåÇj’ ýÉé|nu‡´ç¬@Îïõ•\’Î@äîz1.[¼üÌÖAݸ]²Á±7þg&¯wßÊʵíu<Õ fÑ+{ªmÚLÕ3@©[i’úvZÉÇþž6áÌ€jm¿.Yí°:/RÖ~¹ôñÈG€[.BRw·uà ¸ØØJu@ [cÖ=îDö‘ÆÅùaõÔݸg¥Z>f„RËu ÕÑ´¥óÄtüãœÆÃøù©QädM-ƒÕÞÍz²{ŸÓìkVLé®xÖ®šœjñ²=«í”ô<º„ƒÝËðcNyå‡D-njq{[6Eà2 mÕ§O¦Ü~±BÔ·¼Ëo]™¦]mŽv¯ï¿õÔ(¯úÔºd#ðŸò\¸arºj}| €±ÎD_QëTÈvcFݧŠ_/)ôø† ¹†`«5ò#ÿg-ûv@AÚ~aÆVüÓ%E[b¥ûiæw¿â½ Kæ\fs÷þ5ügN8€²Ó®Ä(¥=Ž~SóMÈ@Ÿ5ºõ7rÇ¿Á)*}nÇßY?9-·Rú9\aa±Ô­“¿,¿¬ãÄ)_˜ƒç§Å~Öù8Ì›ø z]OîýrAäAݤ»ÑcõùÒþùöbãöòeN-eãn¨¯,@Ú›%5ÿ-ðup‚É`ªrÂ¥ë"†é–¾oM4æí[a¢7Ô—ÉA”"×EaÓípÑm~Eæ¾ï “ô”ås5.'Á\4,BbÈû1Iñ¯æŠÇWf¶Þ°‘®ñª‘…™ïÞgÞ¦²RF6T­Øæ'«¼n C³O7ׯì{æž^u°³ãeo³a¯y¬Z*—ó²_Ðýõ=› M–L,¬§±é“<¢Ñ·Þ·\ÿç‹Ùç­þšºûŽþγãÜ=ëÀÇú,0C1¥a¢Ã ž‡>¯ìò¾@ôÛè W”^±XM ’òWùU±«Æ˜nXñßõêl|­ @Þs=I{[ô]ÞŽ¿Ë=è÷þ“ØEx´( «-EìèÇ€§v {©‚_LáÓæ>½ÝÉjzF‡å’W“w ŒÅÉS ƒˆæ¬}hò«JÚ#Ý Z=kº1YlWVø¥iNþê‡Å#mô·CS`»¿¶¬MÀuB©Òú ÊŠòÒϬT¾ËìÞ™2J:öߪý‚®XZ¾Ž°cjØ£«u“5P{+ÓŠ{þê)^R•=Ñ+,ªÆžÝ¸[ôÐ7Gr½ uõËšÛ¦±7šf˜áÒzxÌ<—Ч¾qå81u” xà8.¦¦sfã!MáŸRÔT]8*Ë×ìèb«Û´4ÚÕMi}É-¦w39÷¥uÁvãéh56ÛG“ZÌÓ°¢pÀ¦€XÁ¬ þqæa2š€ ¡±dNÜÐWžý™ˆ-¼Èó!A%®æï.?¦~•N×ÔG¶Þ÷þ.Žˆ;*÷]ìE2â'Á¶ã‡QóAp›ïYƶá§Iê%¿¡”ôE|R™éd`ë›[è¹j{³ÊÊnþßQf|Ðr:~Žxeû_züWýÒ¾:×yÏé1—4þܰÈîó¸˜ÆÓ<éíû¬MÖv…D[#ê]W?ülp”õ¯µißdº´=lo8§€ÐÍ´«ß—Í4‚ìOånj»­Oˆ×?ÔXd\•Þ\ÏÌê2§ÄùW®jŽrÅÈÏ䆧ðªíö¬ÍG?pG§ÿgúý„x÷Ÿ§6Ú+E=u5§ÙGºÙÇ$`¤|ý•_L‡KÔÑyOTb i:'V!§~jÍØâ](éÙ«\>3^¨IÉÚ†|‚ˆæ¿E ³«Èæ¯|1úO®¿t¢AäüS)ÈT%½M< Ü^šú»ZêX‹YÄqhõްJ…´ ~ÚS» £n@PWˆž#®"Ûðq­“Ú¹¦kÊéz½_/„±ÅWÙÿÑiÒC¬¹¿òñ5WŽñªüjž Ñ…˜p}È¿Éø´°8Æ…Úc¢As¶>[) ݲVâI=hO§^í„·i4o°Wb«:ÙÌ}–½Ÿ(­:ê ns .‘'&ãi#’ôQþOµÙ²!7 æËªÅ:sðjüš…š>ËÌæöyH'•²éìqP£×ì97ð{nþeeʹº.÷.dƒzg+éÕÈ æ{ÁgÂØr¡ëÑÂP x˜ß‹×~0e;ŒYŸfŸÖ˜"»:GýžËt+©µ[ï·òÂ)hò(õ¬Áõ³84¹NÞJkóYú°n…ð"À½U›iã—t%ƒw<«– Uþ_‹?2qsÛnžñ§€??BFÔ§BiæŽKiÙÚ€fðúIGDQ¬[Ÿ—K~·ÕL}}v¬¿ÙÿÏŸÅ:oç9šÝÏP°›Pš@È‚œe±û[¿³ÃTðnuX×P®j):2KS;nÉn“ÇgKZ¹ [ekc†Méä€Ê|¢Ýu²ªMª}HßvFz>^µG(„׉cÅÝöýi}€¡-0€§ž±]#[ë~³|ý÷IŠÆÌ <‘Uqü8Â×x=ÖPèµÁCS•TÔõòØÔŸJ¤ Hs“aà½Ær¨^Ì׆ª6zNnïäô*3îùJ?¬ÿÍ’)t$FeE£0ÿ âycëtÞ@ƨ†°â@©Ù^–¼$SèL±>®Œ3ÏPÕŽ„—‰Ù!=‚˜_m‰ÞÒ[Vxøì)O`ú$ú“6²ŠK?¢4î7}°¸pßb xÝS0\¿Gž…úõZ_‹‚ñ‰ _Ô1ªTPŠï`È ãƒË<«R™ëOrçäsô´æFzwëiþ÷æ:§¦6Ð.m³¹q€oÎOL 'rAŠ<›Žmy¶·6ÀjWW ª—'Šû4B´¯!èCë÷N³íO+b‚R¿Üiv=×EŸóVc?Ä Þ·¹Èýn¹!Ö+3@¾±­=m{'¸Õ¢ß0äHý5tÜ{ÄslO1ý]…ÿˆÀLÈ^¤WÄŒà8¥žÖ›C« æÍ4¦1R~j^ƒ&½xàønÑGóí“ÛHaîX½ŸµV«Lðµû¹¯DR÷ðº}îC½+¼ÒCJ{<ÎMZ\Ã.cm¶,Æ·Ao«-ψ—v-°˜Ô_ﬣAì|^…©8­7•\•kY#ÛÓ -Á8©Y±þÐ*Çk@(ä8EÝw²X^Ói©]fð4*™ÙÎâ̶r×´X¹ÔÔ†¨JI  ÝŸÕ³“šüVÀHfœ›®Ã­vÿ{£4;¢ÍÌ! &bÑÞaÙpˤ?Ix:0jáÇ®žúZíÁ?ÚžiuVÈ@Q½ßub“—ZP1©>1‰e†l:n‹Oè»çPnºV#ÚÞ$X;í—¦w×ßh|èoOÓC Ý÷^ÞÙ­Ï7lëÚwž‡süµqª»ä^l]åLä2Ý*"L{ýùW7€ ,t«:IäPœë)èj¾|vÉ·Ïu£@>ÿcG˹œ¾ ü€;4ìV~v4i$3’W3Ð&rrSÙ5è︯ äÔÁƒæÑ02!(TÛýu–Zo* Û*Ù“ÒÚÐ@ ž¥—Ÿ5.µ#ûœì¡5²[ Ç¢§;‡2¥Û×±—|êOÀŸ'——ÜMã:ûëGtÀ7˜ƒÖœa‰¬yLPRGÔÛRåS¢ò8oô¬Ý޲à-¨îë[$ å‡Vwí»˜½sIBií–ù/ ý¹iÞóvÙpÁ¯<žIœïëOÞHºL¹ zÏNâ'Ÿ($xÚþ²›XÚ2°Ìÿ—b=%c¥sŸÚ>ÜÿÎ’Þ˜:_%©ÁèÒ§{ö>=Б̮øêþ±šœZkƒf¯I–o)U¸µS™Ó ü‹/ ¯T÷ò©~—|=6ˆæ‘ñXq‘¡ÜëHoúùïuŠ“Jë»ÆfÇøëÝÙ°ús–G¼äC…bc#Õ 7Úl»{`Gµ¢R3«H· šê·²@±\Åz?P}­Ú0.SðnY9ŸC×Ú»ÍïT9^Ä?ËÔðD™[=¿=w¤˜¬B¾wÝÙX¹vž9®¦;"«h¯×6% ”ÄÅ$L9=YïùÓN–¥`<$Ey¨ZS¸ÞsÔÁëoŠˆ»ƒ21Ì õ¥¡nÅ4Ú^ç¹õÏñã¢WläÛ»±hi÷«ÁýºA›øÅú³úTÈÁb5,y5Sz[•¾îùN 4GæÑŸÑuP#­xô¹]Ó’ÛÅ8ýÒyN +^ANËx™ Ÿ¹úgq™ñ¿šù>ÌP¹Y—F$_mÜâûФ›ÍÜó¢T3Tÿãðýw"@jö{(•Ž%ñ™ù9â ¤ñ5ëáÏÊ؇Kƒ°àW“í+‹‡Ø"†H ¡eG;¾ìJèZií1‡.ª:ÁÄ5àzÐB,æïq‹õ÷ê;1ß*Í^Ç£ã0&${Ì=_‰¦Ô€¼]¦î¶ËÿYIŸW *– ¤ŸØc¦¼5C¤ZË>×_)mZÕ=%§Øx'~µÌNÓ¿™.=:5λͷ©Juä}Ú³+Üô¾óBñkóÏŒÉèêÒg:ŒÄ|·®açµBöÏ¢s÷CÀ lµ^¤¥d‡Î_¤:³Yúš€6‰ÝÁ}2›Ìše!iïÅÑ…Bçxù•¨e‡ÆoË1°ên¦ý˜i‹Ç>øÞjàæcŸ¬³ú6SaHÞ˜ÕA*áMaé7&›!–—@³§^¢u5+¤‰`O ¦ÙXÁ”NUï|eÇÏJ/䩞K½ws lÒò½0‡‚‡¸|*U¿yËHa&¥AXyj^-ŽHüûp YOßõ ÿUCV±.Øã¦´]*¤y 3ÄÞW˜ÔgfF3,]=E§ïž5ji몞!èÓþdã;J£=•¾’Éç9É{™Æb@é>Rƒêƒ–¶áŒç\{·ÈƒÍ…w~íøóËñ9¬®º×8”X„ëþ8÷)­åwM“oÝÕlec]_(`¯´ݬ—Èuúšm|z>žf{pé>]KYIÄ^>¥'Ú¼.Bfš´±zX9O'Í<ÔèRÏòbsÌoLµ1™[U/žîÕ¾·õ¼Ç#’ t<,rN6×ûNÎVÊA lLÃê¨lgÑN¸ì<ŽÑ5óMg Oÿga!$þœfþÀÚWþŽËZ,ÛMOqÒíÛL ›Ÿóø^œ» F÷åYï 'G¿.` h§pœm`Ó: ªr&n‘)ÓË, VÕ,¡LŽKPM:j¶'™&÷çoæ%ïµ7`X‹ÛÜéÆœátvšë‰Î‚ Œûá€tq‘ºT]Ù:®«o äßnò¬…²‹Û áÊ,=èñÈxÞÓ­ ´o¡v>ä…Ap4A!£S–¶—c7‡é iøµ¶¡·`Y/Õ¿*€;Ëñ˜ìnÔ$WÓܹ«É0y¶Á[|«baéî}vÐ¥Ö]ÞOèëÄ£ke8Î¥i¦¨ËW©UrÍKê)Ì ¬2½tïõQZx}ìè¼ïx?† S-§kΰáD@O¿J=dÒk§òÝ ¼8©›íªYRÆÀâù Û®À0ëÈÑ¡5gÜï?gÛwfó‡_j'7í"¾¯mÎu¥}ûáØŸ¿$²h8j׳ wH/Ðù½€ Md°Ü–[ªôZ1WeˆK„ðXf8~¤¼¯(Í=Tý=Ðc.ª@_¦kŽy›õ^ð3¸ÇdŠléT–-tÎ>=>]й’›ÛΗ¥W¸î/ô1^/»ðŸiÕ/4îžÓmx>xû5 WǬʞY‡K·–„õBM/Ô}õ*&óh4òêRciïõI[ðœ18‹Ý ßj§;9<ðnÐܸ˜Pž†­ËŽ—= ÔÝÞv~ьǜÖz+ÝÇÕëÍÊEëG(¯EÃAúßÛÊKÚ‡yÄ% ´ÿ¤ý>›)§g„¦„@¨=O‹‹ªDA@A<¾[ìkxîh‡ ç–óg5ß6[¾ßOzX^9‡¢Ò>á¿ü¥Úã9JE6·B¾Õj n eœË)@f¬çjóNí ‹Ã•â5àîYèc˜5hLh¢jjœ‡ÉJ´(\g‰çš^3žÜbÝܳk]›nA‹éµ¡D i4ßßé_ØË ö¯’÷m¨:mo òïöHéV`D ø!}¦©’¤æϳ2 À†ÅV{LÉY0ŠnØR{î!CÐf!ÍÛ0eY2²!‹Ãƒd­$)˜g!&“vo)$bt¢B€2! #Y¡ Ì ‘=§pmg„0BVÀ† „‚Crêba «§`7Œ"2o(ˆ¬„D ö& EU<Ʊ’ˆ‰VB@@(¡9X@I‚TYˆ áèj²-­§ß$}Ô»J¶¢â°n2è®5`;ÝjHeÈM³e|ybn®þáܧÕÛz«nbµg_š°yV YçÝfL7Ö¼f5=*OÞ‹ý¼œéwÑ!<¸îLêñÊS °!”có(!;ùœ"ˆsj‹€÷ Š5Sç:A¶fû¥ŒÓæn¸Œ7zà,ÌiØÀ,t¢ïɘ³VìÀôÏ2Tç<;¯Ã3²ƒœ1&I€°{FŸÖÃúÊü»ï KV;!¨É¡ç;kìÆÛ•É©¿í׃ô,ñŽ{ÏÜ;Tغ±TMa(E^­…P a¬€r¯ÿ˜ ¬“)¬¬“kS€\‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ÿ—{ÝàÊ}½ö7\}w¹ïj·¶û¾÷ϼÛuß{imnïvíÏ»m³ë-¾Îw­W×ËÖÛ®w»w—ª}ö÷Í}ëzÝ™çžöìâ·½ž÷O¾ûت’xjb›i112išOBiƒSÐ"m=F§„À™2dÁ0M'“$ñ 14Ú&Ñ FšcDdÂ4h0A´§„z)“LÓFƒFš˜ÈÚ˜0FI¨UC&ššj{Jx™ &&† ¦›C@Ñ4Ó&™'LhõDÔüˆ4ž“ ›™1©ˆ= ¦›I”ôÌŒž¡’zSÚSÚ <ž¤ò™”õ?HmCiLÉ ÈcT*“MIây &IáшôOOAi¤ÚdL§´hÊlžD#„õ=# Ð )ì)èÕOÓJm„ÚšdÈÚ§é§“ m¢›MOSzLjdÙ&Œ)é¤ÓSÁHUF€˜Ó@˜DM‚zi¦@›FƒCLƒ@0 4щ„i“ÐFÀ&&4& jxM0˜$Ÿ©à˜E? ¦Œ…? FŒ¥ ªŸ¦£ 0F$Í4Ié”Ú)èÂOMOòOSô¦Ú)§‘“Òž§„=OI“MOMG’xƒSÂz§‰“SÉ =5=L§´„ñOSÍ#ÉSLšmI摉“Ñ4&ÊyM£OS($’„h ‘¡”ôÉ‘0žŠlSdOÐÕ=0ôÍ&ÐÑOÔÚ˜LÔÚ“ÄõFbz¡=&!´5G„mOF@#ýSƉ“M'¦SÚSÉ„'¤e§§©´š„óEñ ‘4>øYõ`aÁëÑAŠlŒ?f Çá0˜a„XK<ˆaGŒ=‡¤ 7wA™pz´ûýrpÄLüjZYÍ=ˆ…H=] úÛ.Dbž!>ŸûÔ;L™ ú{d¬¶²5ç32P©¬lÅXÕL!ÃíyOç"‹­¼¤Ù3ÚÚž+ïðGÒo=Ÿ$ä±Ebö7ò»ÉaÔùaME’s“ªÕ¯…ÁÿƒzT ¦7{­Ã¾SgÛ­ÝÞë•®åçþB3*ö]¼½.x¸õ^ÅæÊß§Úx »d«ˆ²Ó¡Ì©žØk× åoó޽ún—AÒ"îù  ë§ðDkÃõ3ÃmI½ ¸?þ‰íüÈ#•'\Í ÍêLF™µ®ÎÊ /€Ò+3¶VÔç/'Qéf ~›€ôä¸hæx~± $À!caY$! ~0! G*˜[ñ€…7À$À-@AÀ”@˜x2á8G…€z†ÑÀáƒx ¾@Ápü€CñàoG‚x&‚¬b‰è]Ïdpâ qƒQù 86YoqD O#õˆ²Ü8BILŒ$’HHŠ‚`’š!‡F.…pá$’Ñ „€H‘Ç`è°ê$ Ý0 ð [¾'Šð¶ù&ߎ›¾ éˆðf:¯„$”ùw û‰9' !$„ˆ€p8pÃ]Àpž‰€„è0Z ¯}ð"g®ã%ÂãG⼌vú"Sm›ÀÈ@44%±é_‹ÄN='Ë%ŒzRsw°g§# A0†_Ù'TíÈz2TGYtN`ÈEå¬.ëæ ’ƒ„³Ì‚!‘2ÈR¬»d)–b ·~ç´dx…<¡Yééïb/1’H‘6ãñ.Ó Ø Ûó…ö°±[þ´¯/XÿÃ_¬Ö¼KНG¤èO¿):t¯¯è89ÙIÏIñº‰«ºÿÆ3½C%$ªé3KlT-3ðq bíIuþ®”6»Ä°ŽÁ Ëþ•ÿjã…}B|öÄ‹Z×8ÉýU? Þ2«D/…èX1¿`_ÒH¨%w{1u5IÍõAs7'$BríeÐ@6wô¤Ë#ä6á{UÔaÊÖ°|à虀ˆ >MóY2J|óuÆïJw¶\ØPu´·õ}º>ÃëI)”¼Vç†ßa#Âx"„08`6%ž ±î~p²ÌÛ‚µ]É-n09hÿ¼rô‚Z{’Ïã@˜Z$E¥²ÞBdH!”3Þ‹­~7†_ºä)$:°A1[Û]«;ÎS¨gmæV]Ü[B5î7g·.ŽÞ­­ “ÙîÙÒÑ'³—£½L‡øBjóa ?Yk‰€eEY¬Ê%œéTH…ûø†Z©å¾'?©Ý\ç³<œeVJ¦›·ÈØK\äA]§øebeûfÞÆhv—<Âî4å ‰}B@\¨Àuƒl‡í˜÷%Á`< æ[`õþ°=âñÎ\@ot­Sx¹îÇ Ê‚^޲;´oÓ.øh*mµ§x£N\&S…ÁžÉ][AaÏçY¾ðbç1{Y(Ë,0Zßß^ê|ñþÖ!Ö/ ½­à .²ÇCÓªÃîW^m5j_L@*f§dÌ„†`™€Â_ù˜ܾÙ"/óo»½çòe<ï^îûjïƒÍ•Ü{>÷©5½´L$Ðå“T38G¶·pr£ðCg2H¸æóœ% í£aÛ3€ ÕmEãi)h õÇ ÔY•§·Sd—16$¸‚{=õE@G'xÀ4 ó‚©9Øù±ÝÂñ‹õ?ŠÀU$*È2ë ?aîYË.·Ýß%C2 o÷½¾ß ¢`º-NJç¥w«vD‹oô}HÏñd ÂO9‰ãÖpÆûyÄü-Ç(êŠüü;Ïy7‚Ë;Âzw3£"áË6Á:ž ‡%‡FþËk¢Â.ç¨3e¦ç«=g\ûëM6A¨Åô.í©#Lò6Þ˜²Q´¯36MM Åþ(ÒâºÓQìœ2Ñ…»ž†p—ݶH|sDëiêÌXÉK8á€ë‡ë2Ñ7'Ääî%Ò<Ôú h·¶Âbtt±T€bžÞTLP-š¬7š›dûñ™c:çð…–€xa6±Þ[Ü Z7—²•öÖi&/»³4¹_‘.z›Žãý®Krãð×>ׄfY¥T!áŽ÷o|42G EóÄñ<K;[~ø”0~éâï~È\FTh.ßÈ8È'¾R-¥±ÒWÒï—¾Ž$íÊÈg±Õüx¹Œ``U½Ü½ª2O -qž½{“z|ß'Ûû93E6¤—Ÿ“˹à"ï'ÅPÈÒ!8’kÔºõ®?5V¬ (VW¿ºJ–Ë:ׄ®_©ä[íÂY@ºa¡]«"€9‰úÚ<ÑÓÛR¶¯/Û%èUüˆ·åŒÛKHßÑWó—Ê=¤¦bƒÒô©1p“Æ\zÿN#iÃ倀¦..ÎÅtQ£q¿O?É’£±}ôÔHRH>¸K%ÙõÊÞõêÏã³ß-…%¹>ï3ÝT›« ñís]I£éûkt…Þ•ÿs\³ÿœ`tÌ#ë<}1Š5G¶ÆÕ4®"_ÉÂ:‘¡n_Á}™-§˜_>«G5iæ,Hëi-¥[øwCËÑbØËc>jŸ(ÉÙéo« DÍžo"§'RÜ*¯‚+½²ÊÖ«uô-œãü‘õÎóËþéi52†›9%×$¥ì=¸r?¿ÖïØ`¦ҘÝCvÅèã\lwµÊq„AËu/?XI÷úËÚ‹³øÉ·MÄ“3P]‚[éƒÙ’ẇÖú“µVš¹ .­¾vÿïß"ØÃo›g›÷Ü“ó»J õ–åÅŸ»pMDîâ$Óëq Ô{xŸÌŒFMw¬Éo)2F>]ƒRìfxnIksx7¸lØ}cˆø ¨°HðJ ¼~Ñ‘|4 A<ïy–§\ÖxLQú–¶YNVPņۭ½Ú¹äÑÒàv|’Ƽ룫ë>F>¢‘¸Óв©f×#ÐûÞà i^Áï ²ÈÚ§+HaLŽe°ZLËYŠòÅ NG…©íÂ~&R ÐÈ“òR¼­DNžd’눒åÆÇN@D´l¾GèI;£G3Mc’ZF™e(V2ÕVÁâ9~¡S/ÖA¾dÌV¡ýÎæOz‡¾jûHû}_ë»b›=õL=²(Û[½ÊÛÊΞ3€ fÝÀÏÃMXÏ«ú´GÍÔÊ&`ƒÞ?-mî‹QJ–bæõmz{ ËO C”ònœÃÈU2Ð/SS_‚¾/hìZ°ó‡_„Ò¶ÅE.z͆äéJÿV뚣ÈÍè´¡´å¨ˆzºLœÖݽ>½ï=¨e¥ÎëǸ$Á>§J¯¯…¹1NíÀq† ÿ}ŠWb,Z‚v9Šè 9*µ9z-L§›ý.ºš2¦žy‰zùôÓÇÛÊ òɆӋŒÚ££ß—ëgJj & yЂ0UîÛµâ3®¡Vg ÷’d)‰;†è®æy@ÎQÞ¬fÇõ*?øŠ/ÉɃÑj_ª2ë( IôÎóî 3!1dz;CKÍ}jkûm°q‰þH¥·jƒµW|èNUj¥j.5‚£; Óàe cA–Òs³,Ê`¢?z½(RèZ¢æÊãhgÅ–ðIÁ™±ôEpj“x¢s½½æ‘ îf¯—Hp·´Õ¼ÏTI„ÂA‘«£H¡;‰ÃNaÚö_ò9t4FPàÓPœ,{NÃ%ýAª¥jÑÂ…cO=°ê ­ã£ñ_TÜÍ™§2!Œ[L+yô`S•nÝ ?áFÖÈŽYÐÄÞùós¯áÜeq1ÏÏ'é`+7>5Räê?'ZGyûn5P{ŒbÎME/qਯÔLckî-v¢=öqïýER°­6–”vM7ŠxÊ+¶UVÒW‚ ýùþïË…ëYOyš·¾7"Þb=e¹‡dFÖ@ì¨Æ›üUì*e~“ÖH±–Ÿ>Ûg#í~&M/•@‡+®Ô¤ƒm­$[oɈ¸{Ð/Äâ|Â3Æ=–@‚M[¯Ë õ9Dó ¬K×:yü}±ZnüxøB= £2Jè²­ž-ŸUpî+Deá½öp¥¥ØáÁG‹AgWŽŒàÉ8 l­šEY­F<hwÅîÍ!¥°àpÁª¡dgé4¿dÎ<>n¬­3vñZòW,y­äñ­ž€O¾ÇX_ܹ.Ö\ <¥Ø|íYÒ]¢‰R0à6[»ºJ‰å;Ç:‹Æ‘È—Õ¼yB;ÎäÉUÛ=Ôâ9™êâQ%óÀ¨r¸NOŠý‰VBk>.¥ÇÔ§É †Å[qÕ; í$_ßg ìß|nk.ã-¥z Ìc]ç`„³ˆÇ×Ôf_§jqŒDDt5Ž£Í -Îc2¬ â)4† žÙ"E²õ(±o«2'_#}ÌÌ›þ¼®ééf4Pá‘(ð˜}/IM ã{§üeñèôÉ.Ãsš(† ¶Ÿhr€ú<8ãB¼ó•‘i¿¿6øÌççø-®¹I˜€À˜¬U¦œiÉx:ù7 à6vÕ]’«·±uØë©7`MªF3®™² “šãã=ýµåÏX­9vX™n§ýåÞááôÜÍ$ ´KÕ ö-¢=‹ë©¶ê!3¸Ø*¸XË–Ùåvsj!óžý5Új^ùuÛ»×àßo×iùÇ`r¦ªÿÓ¬U®†ÒY´zL,}kd8tvbÂ{gnä…Å^°aB°tæÀ”®Òôtp6¼ïÍþ­\¾§3ã¿\ç÷~u fe%úÔÕß­ Æ«t—B/iû16Å:—§áÏ4¼`®GR”B¿k6\8Ùg4Võq-™…s¬úº¤KDu\³8Ø7Ölð(Ø@<À"¿žO!¥!ù‡Táæ0AJ Ë\x,æ|RQ5^Äyý®bàà3@Dã õÆ4\’ޏo¿…‘}­ÙwzWi^UÂ×Y¡?&ÎÿÈ]Ò«º·UÃó|6sZ™‡ÙÀ:8ÙÙ*¯—©=¦¢”ù(4Ò{/ >îöàrµ¶°ýçÊñ¾‹çÓ ¹Ýáuž=Ü)*©&a.ÒÂf€=7B^U晹]$ÎÉ£o…=ÛDö^7‚DÝõB^7Ç ƒ< JUÚA˜ Ά‚ç¼Íqi\ðò´ßÃIC-¯9ô8Mñäê£nY ÞJcQA`O wðÑßLDøÃÆZ*Íwdtós»r¼~cö³7j?'ÑrÞá´¶øn̨L×oXC‡nIþôÛá6LÔ1 ¯íe)·y¦Ub¡rL OÆšd$¼‘Â~çÅ×YË,ºv)Ö\–O ¹@]ë˺üÊ6èÚ—âºýr <ÈTÉ<•Ë]>iú;fÏöø›+ÆþbpfÚàkoOçNý‚×Ûpy ΗSŒÊÛêkÖr=ýüðš¡çC}T‡·öKp`¥§(¶üzÐV\ºVKýFûÜ7ïYôV:€àË4Rjט¸šÿkf*®S‡³M“!bël(-ÛÌ&²WüJªb÷«;MŒ%f‚ã;€ _»k›qC—k¨Zsº!«{Õ°$½%«´±:gä¬R.g|ÏõOeE§þ)1ÓóÇ;62ð›¬ešª2n£¢öîNÉx[hØ©¯àkǶ ý¼!‰3£\•àœÐwÑÌ!Ü«=°ÜVîBdsLÎ%«\ÏEDêê»BŒºa6ž‚Ú—öØgþ«£—}O«sæ$º ò̰Á¼ìúÝí(®ÓrÍö÷£ýQÑ”?òr¼¦ü›«ðnÍoÐ[Æõ¿çö<~ª*ÐzvéîÅd뢣¦ùóߢA±Øø-™BLf+.½VÀV<¼tØ ´Îé)ø—n¼’óí¡¢Â­l¹Âz­çÓ»¿ÓÜ9‡¶¡Ê ²çpL¿a,häS§Yø9\øì¤Émµ«ë>Ü㥈ÌwÄ»ÕolĤXïαêÚ–ÕÅëøBxö“."@‡l´ær Ž„‹b†âƒó¦ÀL7¥¿EV¹Ìõ—“?Ó~ÌÊ[Á=·^øÌË6^6Û¹Z±[|¡@|–N£rG[Y$ªN™0Ž} …µ6bºàÈkì?·â÷«zr4À˜ãóRžŒ}ׂœB<²´AJŽ_“ÒÚC(ž‡¬K²ÎÚûåGp…ýžÂ,aæ„§Si³ÎîüÙŒ—ÝÓ÷|ëÚ×MŠ÷ÇtöžÒh’¯áÆqq{4µ»áQ¢ês¢÷|LFãíD½ÔÚôþ‚N½c°cë)'`­S_ò–|Ú"PÇ€6µ£¢Ñ#+žtK¹ÎÊg°êć;¿Hr)Yý¦Å¡µÒÏŸ£"ò¼FïѰ¬HÐ)ªÂ_0ßñ9v_Á¾óó(èm N7$ãßÁ‰Ñ3€®¥ FiÕopä;5î „®Ó¼{›Mª18ïe6?ôÆÃÌâPéÄc®§’ôùñ =r§Ÿ%‡%߇ã¿koA¦yZ*-\¤žN?šœÓ…ÇŠünÓêÿ™Ù°bsÙÍE~œÞ8Ú¡«pHLO%ò@Â`@ˆ v,ç*˜V˜ïøö cî®n’9D[2Õ7,ð`õÊüÍÌï—Å:5ƒû(„[d?*oŸly!Iq®]QB¥J%3F÷ŠI—ߺTràUòäp²¾UN¬ºM.&¨·˜¾Ä ̉ä‡62EŸþrãv¸|O s‹NÂØ xxÝ£@RäMôÛ|ßšFd9{oïŸ>Ø¥À^Æ…nà±Y‚i¦½ðäΟ+e1ª©Y>nT¤½ƒ_{æ˜Óðá=.Ç=K¢óïØed ú;û©¡NHá‹-yŸ÷æñyäˆmwöw;}ç´e˜å~ F-ðgaŸ:™ëÊÚoëQšp=8ÿ§ÊgþsÊ™—bF¼,oÂ{Cþ°4®XZüMØ0æ2ÐR¹x!û‹Ñ·Õl~¸/‰J;ñ“¸O©•iš’ÓW:»Jk²±Kº¤–¦^P´§m3Ï¡ÜT8°Ì~ÉVÅ3 7ýÓ¤l¶ù3?ñ{+ª#zØ»Aa7.auò~Ââ¨>ˆ(Ý.8¸W?5g`]í7Fb¥¥ _XQ*÷ saûyJœ ªøé“á¯ß¤5¿à›Ýâã(’ÌÑÝý·‡þjåìÿF¦wNµM]÷ço•×q ©@¸ôÑébÕñ„¾ÚjíÀàpçÌÊE]¥DÕ­¤–éêh.òëÌ9ï+ÏNöð`;ì8X-§³½é±f: )ú²ˆS¶ÅI‡öÀ™nÄbŸ`z#31 ñ ÿ™¾™5¶Ù4”Š“O—m³Ç™/”!1¦¼ ÔÛ[¡Ž ¥±¬ï f2 LWmg× ^áê…ŸŽþD ,^ôzŽÃkÙTq•QX™Ë½“ðïÌ¥]0×–jØäNóF¬áÅúò 29p ¸”«Pp±Ê|OZ™ñÏå׉ú6 1BÎ2òɬÑbmJÅ'VdA±|†æ¦’ÅçŒëÑ©û*qákÇþŽ!½™×jhúÉ‹=86BߦM&Åé•:O¡‘Mrí\ý·‹¡zÓ›WOqUþ’Ë{„·|Å>†§—!O3;!G,áø5âó,Š$ªåL ìøbÓ•W¿ò¥ì+H¨›Äy–\š ¹ÖÅ>÷h„t7Ã$wªZú­|ùEêž#üB®BÒ"PSÕ¢[¢‡â»Ð#ŒWçäÔ׎Üyvçµ œh–·í_°¼€ŸeUbìhØyÿk í˜Ì2ž–¢gžùB:Uͪ¾E5–YBžïE€‰õK9ã)ö3™À‘ÀkÞÌÈÿJ1 9•W¿98\àsHÔ&ÉWiho§Ösf¯§a»…±ñ¢±9J1«­hŸÃ ¨w+f=ÙM¹Uô´:·’C¬x(zéä×’³§ß·Sì3pÉf^ÇLµ„'Õ®ƒÍu6,3„ejŒÜtëíæ$µr£&üKk©ø»+^.#£Dó1˜²²jiQë 8i\Ëò' 8Í[Áœœ_ï¯ÚJfc4Õ)›í³¼ó[´÷o^ëtÞêŠl½ïw¬ˆ0e+fY­©( ÌÕ†Iµ³&ÄTYI­2­eôÔ]¨šµXÌ«æëœ J˜‚i™L¦4Ñ“ÔÂa i11 ä š)ú§44dÐÓA“FCL#4Ó&MŒF™21bb0§‚0˜˜L&håT¥&i“F Ó& &&&@)á1“£"fLL `L&ɦ ˆÉ“f§ 2d¦•?ñ¤Á0hM0Ñ 4 h§¦†¨5) ÀhLOL“&¤ÀM1OM4ÔÑ´i©“Òm0)í@i3L™4i¦šhÓdF4OTý &ÔÓ éÉ¤Í bi3I„Úhžšª)I·ÿª•Oh§¨OQéêLÔÏF¦õL§ê56 d =A‘ Ñ¦šd4 F‡¨hѦ† 2£M€i§¨h4$’ & “)ä'¨ÆM LSÉ'¦„õ4l¦Òi<=M=Sɵ)êzžÑ4£5&Ó Œ&ŒMOÒ#'¤ôaLh G„ÄÉ ÔýyOP*JI”Ä& ‘ª~ ~™¤ÄdŒÐ)²LzSdò™’Ÿ¡¢žÔÀdMOLŸ¡…6Ôõ6‰£&™2Ÿ©“ÔÍM4Å=¢i‰=¤ôÁ©ˆhÐÍ›M6©³XÀ“ F/ì‘•”ef«ïÍlnXlLÀÍÉ„–FwXã£oÝB6¤ÃºYòøg6|#±hOö_ÕןýÎÅñNiÐ+&nÌYム°jOqtFÄÞžYiÑMÍžŸ<Öê{Èríq²p†¡¼Ÿ™ÝJìðñâ6£Œng>øìZdz'=°j{¶LÑz¯N0ñO_$ÖØÓ&H,ÒÓ‡ÓÌSOQ…*Á! k<#îŒ]êmz&ÞÏø;þ ÙˆgSCù€>iƒÊX¡Ç–À£>€r½bCœ:œÐ×hN†vÅr%gÂLˆÒ.n@]ñŒº!M³ †Ãöx9R‡í ÄrgÒ°ÉL‘qåæH{}=CÂ/ÙÓ´Âd’ñ$W\ý~„œTÄH{†‰°J­”ž·`N¿Q?¾(PÁÿM¤ùç"óÊ,Ç ²#@|‡!Ôc3}H< ,÷AÞÀc5ëàG†·Ã³^07Á›Hgþ® AæÌ‹¥58£gË1zФޔÛ3ÁÀ!õƧnp'9h¯x9’„v¤U¦;š³aê#ô†䛩+÷g÷Ï?Lqo¿#ãIÐîþdÃD”‡¤>û3²¸ø³çÞAoL2dž>ú üò˜¹ ¨¦ O¨4±ŠÛA<ÁŽc1V#ï tþŠÍqÈb!¹¤„¯½8ÛaMHç¹ëMMqq¥jGì¼ðƒ³à©µ =âxücƒ«a$ÐõñB}8§ö ëPi>4ß±Y„2زQ¸É4—ÛѨ²2Œ$ê.éŒãá3(?¿‰aŒ|yÞí1¿«#|±°ô‚"(½ÿ‚Ê Ãá+ZLäH§öH—®qy,aõbôˆÑý†¢Œ>$‰†pŠXòJE@2s6Ü|*C#\º_øug[M7Y ÒCo˜cy2ÙA$YC™7¹3Yhq'M“_šóCÆhÆœN×Å»qÔ[ ” ÙÁmP¾¯,uú²*}r6d'>¾|¹"BìÏ¯Ê Ußýƒµç¤B6/M$Q<Ú„"¥&WÈòŸ×?Ãý¼4·ñfY¸ååɯ6)|º—QÄçr˜ClÚŸ š„Í$JFøäŒyG ÄÂvc2‚™“>a†ÇpePA?´ÏtÞ¿ÜÜ1—_g«é<^ŸÐÁaÒýi ÀaåUEbig‚q3Tz t>áÆ˜TmÑ1r¥LŸ¿¼}D¶þHÜbð  &#ˆ |'Ëй ,Ûv%â˜\骀¢Ì­þVï5:éY_³Œšêá«3ÝÖ?ç†å—? 5]Aö¾¿›„“.¾•‡²põÌ'í[äå5NxžÃ´£ò¬˜±ð:î§›eùv¯`½¯vƺd¹i?Û‘éáºE¿=cßCdx¼=\Ÿã¼×·—sû¤õYó粟úÜj¯‚_ójùTé—ÿQWUØIfCPÎFÄÏá\`ø?žÛÈüÙŸ,mµlµÖ«ÃÓõ­±Ä´*'Ùod^Õßëaa÷±¼—Ÿ‘½šŽŽŽa”´‘–ûÈÏfÉû}sï½Þ¿G–Ͻb`[—Ô§hšÇ›û~° }¬.ëþô™ÔVê‡8lÙ³fͪ8påGâââø¥|zŠãù%àÙáY/bØÝÛ¶´Ëͻٻ?›‘q‹™ŽÇƒ™Ž+7€QYy¹™¹¹¥¯å%4‰7C¦ g»Õ;½Óìñö°Ž1V'ÓÞ ÷èoÁǼ’%ÍëÅ`¬+Ô0±xc†r`a$æñuj/$B/'~ôVÍsÀRÒõw"ôB7”´—³"xbqv–ÒÝZ¦•6‡¦¸—I-¥&lÆi1ÚÒšÝY(ÅÎÀÖìæW/˜ÙÚ,XÇ Áæùy·:ðÛcfáœÃ‹—¡ä³K¦©€G¬ãÜ˲tN…Ê©ê9yFe #ÞoÈc¢sHsVùß¾ ’™ªÈ;¾åN£=§Ö¶Â+ÙåµvÎ(9[íådT2Gwµ_”<¥ŽŠZûû±ït÷üÈm|j}9Éòd#ÓWó¸âÜí8¾´~«J<¢6ºesçµzäðeµHY®ÔGŸÔË*‹`×Y¾{Ɤakóó팕½žXŸãi¥£ézÌ–ü^5\.ßߨêy?ä ÷×U®~¬Ñý˜w¸Ñ”\ -L¾³g+ÙÂý£+Û«Ö9P,•{í_‡— # Ž”…ŽËíòÿƒSï¢aï™êòè©r¬R=ì…Åòó‘7"¯Ícðv$þF™¼sh>Ý¢žÞ:ËJa#²„U¤ö³µ9ëSö i]/, Ÿ.aS[OÄ]Ï“;ÝÙNÆkgvt­¬ïnååç?yy-ÛÖ[²`4¥È±wrÔX¹kÍsŽÉõQ.ž~ƒœ]Ch1€,’T’h¿Œ)k¡Žù+ ê{äãÑâˆF2.#ÈÈbñSwqÃ,‚ þ|vžµÍ`Ú1@Çs ¢ª© ,^-Ët¹æ ±,ÜFÄ,ÑA*‚Q@RQ(e‰bX¥¥¤1Tˆfðv3Þ¥sÞ}\\–î&1¯ËßgÌ©ª¬ml¯˜i­Yz©ª£S¾,Ûtûæ,¬¢ù·*õz½m7 Çvµfk¯WõRÓÁ¯Ì"ä«›C ·³ýúã-¬mk¡ŽKi’LZ[KeýÚ:glæ\ûÊyOªÓ8×Bï^S¬yGXâ çX`2gX•& ¬ÌðÝm·YÒc­˜«…’xªµÇºWºÖ;þÚ>„­'’’ø¶ˆÞyeñ(þ¥´öabh ùúšÝ‹‡áü& ‹,¸^l ñp´eÎ7_„ºâË“…ö|p”Ý‚Ë/Ä\DÏvп<­}Auó%ÒýK,¹òæ­~´TÒÅÍP—ÿQZÓÔÎG7õ·.¶ê®ò̲ég,˱·«¤•¹¸.ƈ»Òî˲,¼kú›,Kû¢ññ°ëqp1-,k*ªêêë*êìlq2nîìî®ËÅÈ,»¼¬œ|l¼¬,Ïæecd‘™—–^ie”QEQEQEQEQEQEQEQEQEQEQLƒ†Ùˆœ2™çmòó¶ÓϬ$N‘D¤„úÔA1U14ÁðHŽúcõ~ž;ÐèóØ Âu”¶…}|/A$㬳… b¨24dR¥J•*T©SmUUUUUUUUUvœW_#G°vŽ‹nÌoá~“ár¼g…‰&:öÈ7l}±Jù)á&g)ÉÏÕ°Mù<çÈtìdÏÃEDqðxH í&£ïzïRøàÁûÿNÏój}½FмHœ%IÛ㳮ΫÄþÕã[¹urêü·A7ÎQ˾¡U^š6o%¿ÐëåvSss]çbò{uÜÂ@ÉÑ«U\/~Rï=þË1_4¸ÕC§úëÏó©™`U¬þ[¦~6uv[Pµ|õî2u”JÊ:ûKÕÜ[Ö:·ÇÎv·§ès¨þl×ÅÒ[|oË㻾ti¥c0±ÏlÿÔgÅsò÷YÀ®t=k—˜yxX+K¯ÑÖï„VO¯tú³H/21`¬Å±5§õ| \\J–c}¤Tk¥‚³=+íÚL2¡ï±ÉQ@FBàÙä;jù¿t.ƒÙ—²ôÎGñ'ï¿Z¿‡×‹ðyj€’lfßsºQªœ™Š” * ªŠ ‰ßÇ›‡ãá—úµkÕL€Þˆ‚</Md9hñ±ûdáçŸEq"¦zH†X‚Œˆ›LEù|dzw›åáwþ?ñqÛ8š4=9US(EDU ˆŠ©bê$úÔA!Ÿ‡»Qê@?;÷R)÷ÔO qÅðUIb„$Ûè\‰Ie‘u07Kµ\¶梨§üD­Ra¸%âõ "\_(º@‰tðÄÈ%€\_¡PL""àbØ€b$h`™xÔ‡¾ùÖE,cEo ØåSD­ÍÊ—!‹’”)9êï¨Åº&`M(/ª­“6›Šb¥ÂP"©½Ewh N H"¦R"õbˆ©˜„"9 Ýá0(Û¥EÉâG²H¿Aš ( ˆ4›Jf’“Æ Ýz"¢}äÅ2iBfM»9WÑ0“=ªYTUÌ+º»éæ¡4 }ü.ò<öCðñµEUËŒmHùD˜U †eRH’BD2 „"¡ ½ª"DÈ…$w‰P>š =ú$B2²!"sJI&-BDr¤Õ©Œ:“™P‘*oM Äœ,\³œ)@)ƒìý:ûvQã{9R ¡Éñ¶D Õ`§3jI5©ŠŽGºYÊF¡çØH‘Ýíéc8™4õS—Lï½£_ ŽAD*¢opGЍŸ>Aþè ¢èàŸ2ªšqŠ Ÿ\ò"*&B* nñõ¾;Nú§Û¢ ðñJD.€êþ„uF9A$ÚÕ«TO·Ú,"’!þR!8è*íb‘ËŠDUyðˆ(1ª(StЉÇD-2±Qî»uÐ7Ï'Kj#‡¨1 4ˆE$B0ÉH„2S±kíIY9å“T—NéD |Å,tSâŽ5*£‚zqg­ Ã8õ£ÆQ0•ýdKM¬Ù»ï`7ºÝÿ­²Š'H1ïÍQèš“ý_ð_yw½íz¶¢7Ì"ÂDŽo–ZJéN¯+`âèCY(ˆ|:çxÛm·,–‹"EDT&ªâT„ŽaD$_(I•¡˜PNJH𠤑-"€èB*¡¤ˆ œ'Äñl¢ Á QT눠Ÿ–*+ûà.ªqð@ú¾Øð¿w¶½Á>bÄIß2K&¦Iì#Hµ“v‹'MO»W²Q5¿åÝ ›‡Ú- ÒSŠ„#ä;«K÷äY8. C‹ó¯8„ $ÍÊ„8«3pï[ý«ï –g ª !›b«ÆeB’»¨(Xµ}”þpD-u>ÿ7dK H ¾PÂI/ÒZ$ÂQcä÷=ÿ_£å0+Š*a ‚PÆë¢t±¨„"¡× ×FqKýÔIy"(ø‘BDl«‘€€=2*'Õ¡4ÓI~XKè©¥B!QY‘g>4rdKBú&À¡ÑôªÜ…^=>ýÔ¯¾ÁÕ`êpÆ®JQªŒ'+(ËA'ûËÓdKÄ<éÙÉ,*)9Kî]´eÐÞ© ˆˆH¤,È¥$æî¶‡í*#AIæö–Hà/K dD"‰’ñgÀº™t8¨;,}h™ W‚Ôâ†Ùgÿ¬ú¾ìö>ä¸ £²Çu÷WONK?¡c·rÞåVžµÒxÕ!æ}ò!®õœŠJìîÍ ðJL¾Öí|âì×ÈãR—¦ØÚ³ü»mŽøíÙ-O±»/aËbmÛÁ¦1œbÓ'I~¤Òcc!˜‚ññK`¦ˆ1èéa ±D‘‚0;âe¿Kœ ¦d3œuA ×€dmpüPë_Eb&iÎ:éäuøÝôŒJÏoV7Œ0(˜w«çÅQ9Þõ Ž8g M´ƒÇŠwH'WE$ª•j,T *Öô¶ËwŽS;:Iûž;µþ}ºϹóº/Á¹þ®/ œÝ¬¸íÔÕ>Ù ˆÌ(}£_A×bl6ꤚâT+ˆQz€Æ¥GŒÿÏÕx >§Ä>oWót>W)Æê~»œ¦Ãæ©eM ?뻫HHHqº[l!tI#ôe §ÚZì}Ê ™‡´9ˆïçj=y§Däÿ…€ÃLD‰"°(¤aL`a¤N‰¸x~‡F21ƒ/_ÉÖ{¹qˆŠ@O6 áÝèâôå‡I;íº¾ŒM{@‰‹6xëc`"H•8Òw£¦ØÀâˆÈõóµ‹ùb™8ÃééÊÇ£‡a6+·“äˆ$Ÿ€î„Q°ÏTn•ÝnÑ—_âG DÜSôÜœù‚ êcÀÄÐEŒC…È4xðuðä ]5åþ³Ìœ€ä‘*.0Ó×Z}ÍJÁÞÒãä¬gióõŸµ›ó/ïs×Z[ó¯oQÇþÜJsÞ†ÐÅèB1̾a…pVÉÆ;ÙˆÐàÄá÷µ²N àß ]zýûåÿÝàþÔï}÷ö+–úÝ<ãôùí qf[E) ëª ¿Oé0¾I@2gßWþ {•¤X,ËÔ™[*laz×R°Ðo^æ·ËÞœ¾«[ƒbc&L­=â¤Z&d½fÁ)’”]H%[%N GìE˜nëƒ Át"ÈËWÆkê=Wa$§ÆS~¤ß³1ÛÛÜÔr€·–Äo{”GR™$¾¹Îéõ–¤ÜîÄ"ÉU*§±šJ›“­»K ] W¯´ç’oʬýÔ^”¢‹”¯ëâ]÷«¢ ©‡)ž‡Õˆ‰}©õì™rà —jè ³2Øú  §0ËÃÃÎû°\hsˆ•óÀ„bˆ(lw©Œœ¸”Ð,&w˜zøÅMR·VõÀñ”+À  ß ‚ufÒeL¢c·b?ì447t Œ:y .@ôº '\r‹gW7‹ÜÈè ’þL”Ì †³îºÃÚ¹ái48ž×âã{|Rn8²ÃÇϬÚ@mcÆ41=™¹’z‚[`o^Bº²²‚£RòŽcu& ÔG€ô‰“Òc-¤Èa4Ø}Ë¥å2ûÇIê\`;‚ĺkF?ê.гýB/ç7#¸m‡Å²ìÇL€¸(!,Kë—VÒ§nÚ!ÖBt½—&šå‹íWáñ¾¥à9} ãîÂŽL8Q^uqàµJ;ËŒJ+A- W=¥µÔæƒXP¯N´ ä Þ-p¬z×­%ͳ9Åû‚¾Þs^èu—òÔÚr»¦û·nç"v_Ÿ]´]n»´øíÞÑ€IΘû\µ¼£ÆSÛ¤À°ãàÂÊ‹Ÿ‰ÍOž]üÑ^–u&¨¥=߉AÎÁîâyDÊ„y9ÑOÁÖÐ,;Ã2×Å ”¤²+ÖÁé¢=TwørÐ}.ö¹™™€vËíXvwçf²Ö­f¦gxÍ ÄˆG%ưØwáò}^_ækþ‡%£ÅñbA)m´tÀäÚF*?¸×„ã©>|éÒ¤£q €‚1”„&‘#çžì2W=”ÚKì‡ðí=a›LfÛúƒ¬v-§•|!Ýkñû‚ùZ›ÝOÄ_Šðª}·öÚß—ðä.´ŽNIœœª”€•’è¿§ Ûm•é>«OÍ0páV¥s¨|qÇ.7ö’ÌbžfÐP®$Ї[GßÈm«G•AjŽ•àË{¼X8Šê¿.¼o?c_Oo®àÖ›‡•aá|ÍÚÓ {bbÉŠ~:a”÷,Xú”êé4tÌùž´ï)æR8þ¹b`i8ÊNMŸÚ ¬6ì¢o‹Qª°üO†4t ¶L8z~ Èãòö§Ñýic_’±.BK½¥a?µ 5ÐÆ‡µð~å…ÊÁñzZ/ÃçÐþV2zrŒ¬ lWx¤è©¨÷ìXÔ(öi9jÇsaÐÑ­£žb±ö¢==ªféô};}ÓXÛóv'œ±Í)7þ†ÃzSìQÛ©£¯¦¹¡9Žßpµ­¢óû® G·ƒÛq§adý°õ*~+¼ýUGG±N7ͱöéúÒ¿&²i”vté)]‡T£e Û±ÙÉj3p¿ ì#r<ÆÃ‰ç¡Ÿƒû¡©)r¥’SHSUMÏ=böœ†bÕ™}4ÞÕve(¾Aø!¬ý«ê6èlaÝìoXäàzèž¡ L¥¦´50|ª¼9øz„?>¼ã Câ”ì™…Ú˜Ïbê—´ßiƒ¡‚ר•‡^Øer¶—Ýf•uv„4±D=|;h" ÃÙƒõ êaèGM â!àQáJN§Y%”~ZtôgèØÑ§F›*9…#MÁö,7qAê?ÀÓí˜ëV²>†øÞ×§QHpsTX5°ÒjÊδ ¤3„<¼ÉBpð;Ø8©†3´íhûÌöv7LrÃÛ¦‚™zb¨Þéÿ´ôèp¿ñc¶ƒÔxBáëÀôˆ[AÃéÑX¼¨ènËQò`Ÿ™ëácGÈÎØT¾ãy½—åÿ›ç A¿Eû¥}Ó!P! )(9W¼E7îšv4׊ȂÇ5ÛþŠ›¥^ÄÎÜnÈ´$8-Ñôo7’·[6>”]Ër§§‰©q_àá¤×o’I$aaòûh‚ÒrE1‰,H"ô3–%Ò’‰û´l´B3œRýÑt¹kœ/éÄö±yFûGFîx™‰úZ½eö“rÑô<õÓ]ˆþ6dXhàe–ð²Õ¼Ý»—ƒf㊧/ÊŽI~ªË³˜l§m|þ ± ) Ë,4T¡bvÞ—A=žÐÅ^¢®â?¸­:7y|úßO<õaF”!­2T5«Ä~¢(Ù¶Þç6’Ã^t©éŒ]ï^uˆwõ¸}—JawSÞ­YHÎn>§JT¨€zIÆ™„i›^h:ãBPkÐ[Aò3»j¢§×Ñ”)ìNuû6Aå~FþG£.Ïrës¹Og®ÅÛ÷Ïú&ýŽ\`}Öâ­eyuVwöt¬Íìb” ‰`—Æ(J!ßFÍáRXü>÷=ï™ÊžÖŒô^s˜eÐ!T$t4%ÇÎû~ó§~œoÓJBƒM’þW\v›ÛÔ(N¬7y#¶™PÎïìS^>ÕÌ ™y5Ý©µ"Ë;n?Åy÷hwSèpî»­ê÷oÆý¬@ðÍ÷Oj9ý¬}¥¬§C'IDÞf¢¡»X‘yL¿lÄZøYˆ¾kxì…¨B¥T‘ª¹»@m×!t‡C3éibʫۈU}-öÐn¿ÞZ6=m ûòB WŠg”„®N2š0_}°9¼©ŸC ºâþ¹Jc+¬ññA˜*nÊ#¦ÂRß&s®‹û:ó·[y䂜–” p[jœÎø}#Å©Üm9œˆÎŒI»ÎÕT6?ù¼ËAÊD3 êÃpôÕÞ˰º¿;ǤäýB'?¤üÍJm"C ;ºÀ¨tL©¬äª!—{UoMò½®Çœ«ÚÉŽé%[2êY:œooÚ²Á„b¡°Ñ¢}5/Œi7™ÏБ!c (2N&íüoI£DgƧþÿŠ*Æ}º »Âdsݪsçì‰ ã¹¦Ä?OCãrÑ_—ð6ðPºY&7ê|b ’!r@mCRí ɉ‡š)«Î ¤á8ÉŠ ø5‡á»ŒD¼ÛÆÃYeAUd®Ê%þÞ¸U¹ öµ¸ê¢bQ½ †Úg…ÝÙѳ‹gÑV¯oT ‚£‘º5Ù¢~ǵ¹Y“vâÏËgÉòýÿfÉàG CêY<÷Yî[läÝŽ-v]j@Üu…è«2B3®˜Z@!¥£%´1†Yå’¹i-¼HH $Å{´‡ pÑÂP‡K­W¿¡ßA"_"¬4‘N†&Æz/)=´"!ËÂAÕÄzÈ8DÜã®ä dùpæ¢n±ô¦:’Û$Á;i±ËÑ£ôº%›)¹C‰žËc㘚Kª'"Nriâ$OÙjói|éFEQËU)"’)"’)"’)#ŒMdô¦~ž¥¦ŸZÅÓ¨­l|ˆÑE©Ôû³og+˜æ›‡Ôê´Wñû}æƒÛ¢Ù"4¥íãö“œ{«‡nïF3€f&F¡A``Á†~'J !'èBnläòœâ3í„ÖfÀ„!}¢›s#°<ªè‚}6O£ÎéS"V–Ðh¯­µTß9n3îzËZú¡ú=n×äð|WÅ{n¥UUqbÅ‹®nÛGœÜä¯?Ÿï6üw/À÷m Ý÷p佯õ¶ú}­sÇáû»~¡Ö÷G¥óy׎×÷ îzþ ÷øìæòÄB4>‹»{ì¬f1¦ž¨š}lt´´´´¶:ÍfÇbªª·½îªæó»NtªáçÕ®OkÐÆƒ©ùé–Ëdª¥*©N¢Ö²•T¥U)UJUR•T§Éµ¬§Çæ73ÆíñxOÎs–=è'5ú;]w%±òüüjÛâû;°‘™Z«f?¨VÉY§@é¡ å' Ò¥J•*thÓ§6lÙ³fÍ›[Þ÷Uqó:nŸ±ÙWE×ûü’·YÙÙrU­i*Ö´•kZBª”ª¥*©OkYJªRª”¬á½ár%þ_·ç>îpu8=¿ÞŸ¬ñë-K˜Sn¡‡Æ«ŠjN<5ËÁªŽp”ààLŒ 6þ2¸žN°®M‹g[=^Çe°Ùlûf–Ïfªª·½îªægtƸ‰Í¦º{ýïDuGn㹜`L¶[#UUUUUUUUUU] ­bŠ*Œ–§c¹!?0{Ò¯ò©*)e÷ID5KkÃgß!Ç‚×Ù°@]C«“‘^~M÷}É‘UUo{ÝUËåºj­ :Ë_§’áó³°µ­kZÖµ­kZÚÛÞöµ¿…ï{ZÙÿg>» ónþä>në7êÙiºíǽUx¾ÿËôßåg»Ïê® Ja³Aæ E«¤—œHomOPêp*T©R§ttNœÙ³fÍ›U½ïuW/Ôoßö}ýßåt5Ÿóõæú†Ž£Q¹µ­néÊÖ,X­UUUUUUUU[ïUëWå£ogÁÇÔÿ.æ#’ã–Õc}í³«âgµsõ[ÍuÝO[Íﯭ~L™2d×ïú½~쪪·½îªæjzÎGÏæ“Úù™ó%“ŪªªÃµ­UUUUUUUUUr'—³´"çÜòÑé¹’—_äÕA®sÝbL›õôÈètnï8ñtI;بġ:‘K{{{~M^§&EUU½ïuW3ÌÛk亭 U*¥v9xï½QR¥T®o†çksÝ3mkZÖµ­öê÷½­kZÖµ­kZÖô]”ç²ë'-]*¶Sü·Z´”‹GvŠï’M»n.9~eÄFf‡¼–³Q•8> # ü\0 /× ¥¥¥¥¾ðšÝ~ÁUUo{ÝUÌÍ­„•Uð½wA3OkZÕ[JZÖÜmkUUUuöµªªª»sJ=fÜk¡Õô&ç¥ÛkÜõ_!Èöo{ò¹ÏÍoÖnÓ¥å9-Uï}ÑÐÐÐÐÐÑÍß´tUUV÷½Õ\ݯêûÔj9íïaÕt›®í™kZÖµ­lW½íkZÖµ­ÀéñbÅk[êq²Â׫ÏLýÐqØ_[ìî¼Z÷W÷éx/üÄ~¦14åÍ™ºãZa¬¤’ŽÁ,œãÂöúmsœÌ·ÜNdž9F€MPËd ¯q]1Îá váž7/¥âúÊ—˜yÐ X8 «Íå–í£F´RÀl‡ãh{ƒ¬4<Ùñ rcÛûIË¿Rªw`6ý¿|Âa&Ï”ÝSYt4¿ΉdV•|Ï!9QInïæ­Ìü‡4ÉœÇ;kAvpG‰¡ŒhÊu¤@Dêt¿¦1 t@£=õ#òü³AC»é´®ìºÿTjþ5™vf+m Þ õB.T¸ š®I€oBƒ¾ÊιìŽsÁÃmó\M³^T]¾üox–&ħôr°^ëF6íV6~gF@nûóÀøaLj½”…™c/ž£è2ÿà•3°Txº|–ßI¯ÃäõƘyЭvÃ9[ÝWæ5¸r,™|˜_?|+À˜ á>›¨ßÝñMz5hqPâ8ÑG~­üwAmô[ì›fˆ¤Ão³ÆùÜáÉ‹P,(² iU?åúJ'ꬷ/·Çæ•:SaØ×™Üg/`í…ýÌxáöƒD<ýL.ÈÍ3\[z}é©ç~mÖÙ<B9gœ‘ý½©ÁPhÜÕ¢ñKØö²C_lVDæy ç@ü®j Ŭ •PópÖø †jEÞBM<º¦T&¶’[Ma‹Ü|.°NÓ}8\bÐ×vÐ xù(þ¦Öå·ù)ôh4ZÈÌp’¯LÁ3×½·x.\»ð„uP2Ï0±+ô=H6~´%ý®!;ì1^ˆ £ zå&G «À¶É2 õ¨_BèC[ý£³ –@K2.ÐÇ—¦±pâà´´â§£ßÃ'ëåÙ»–ªñ¢Ú|xX¹põmæ¦ex°Æ¤‡‚gßÐáAŽJE8±…œ™]¨ œò=áàе­D«¯ÄÒïÿß›ç£Ú­}BL‚              ÈÈÈÈ„ @ @ @ @ @ @ß­h @ @ @­k@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @!bÄ,XHn±û‡gÖÏ~åoÄ8c<ñ¦Û\E¨B8fïÒ‘WbæK/§-à@¼ÍžyùdYpˆD6-KðÔÒDžI·QîŽd~ÓRø:ïè$žn ¸8؇~¸Nôê퀖À¯Í õ’èÂ9lêš…m[LÅÉøL2Ü›†(µ¯íÛÝærP2|Ü 4ËW,kUQüs[ЋGË}Ï%ëlpÙR4‹UùìõÙ1̲ÁŽíoæÓºÊ÷L}{›몰µ·†V¡!Ûv–ÎÜ6?š­«RðâXÁz9 £n‚LQN£,ª7U¶¦p‡äÆäq?Ÿ5ù|½âø³s«o±)GGs{ CQª´ÁÏÝ…šàqĹDnš«S §¹ÕÔÿïÉØzëWßê&cA‘¦çâµ a"£DÂ>ÉÍÜz˜×± •Š z àºåÙrŒ1ƒO¡2dÊÒÔˆÂÀ¯Q~¡¢z¡¨vT%‰Žgs¹›·Wìä-ÈíË_ãfP¯¶¿G>—G]_ç¾à#ŸzÛw“|²0Œ»2aÑÓžÐøw8˜ú-Ø=f5£ ÖÊ´h£Œ%fCªèxÙ_\ñœ¢MðöØ+SW:/wcÝç gúÉ`;ë'×ú¹ˆ\Š3ºÎŒàn 0Þm»T›G«å¼ÑP²žQ³ÓîªïÚbsƒ]¯]|ï~yó £Rõ†ÊZuj›…Î7âáS;`4æ¡NnãtÒ±§ÕþÑÙñ‘%Äßù ìáPyöŠ8b1Ä2ÜëÓz €¾¢”fzŒWT2ó³OvZ>õÎÆ‚Do”º°Ît™[„Á@†N ¤„YºåB·¿š1x8)!¹3N…ÑÓÛ ¥4 Gw ì–¨ÏyÉ_g,Âí;J{­?Ö°§mݽ]8]aŒøƒ&›äÈIòºgO–^¿ýMÆì4hÔÁë sÏQ¿ÈQ­òÒ]LŒýôKVé ns‡Ÿ‹ŸcaZkJ.ë¦])½Y®sÅÏΛ–‹M =µ¸hôAuÒÒÎõÛù+`á‘§‡«ã{ŒØºà+`e°&LOÿ¡ãÃヂ6hô #­ÂÔ>Y†è’ŸÜ}ŒÖñ»˜/Ç 3Õµ»©¹O<6ßd¤d–(ëÆÎJz(m5¼.,Ò¬dÑ8 ™}›”Z÷•l§æ üO´óS§³#ïÃ@hˆaÛé~y `bÄ&=Ñ:WGMèŠòh!gíoi M¥Ia°‚Ù#Ox\ÒR|L'‚Oz$Ð9ŸA²F ™êïFQHP¾¡]0ºÌý˜ÙÚYÖÞ”$Eµõýªÿ<;ÔX€ (áT’r¼-l„õî¬(£2?<ÜÐZ/ÒteÊ<¹ÃV‚Ök{ö4‡Õ[oãÖesݧ]B?r¸|vqºLÿ{ ×r’kÎÑi¨À –ŠÐ\ :Z a`Ð4e]_þ§-×x3¹BR™UwiØÜ­îhwª ôŨ÷píÙbî'švÀùXÒåHp¯tÄ"8Å zA(d4eYZ¯îã3­Ç,°ÁŠ ýÇSéžÌ¾üu§`DcŠÕ1)ýÝìt5Ä›lšÃ”¨ª’ž9Um<T¼N²°óž@05$@Xb—a‡Á³ŽíµN1›Éÿw7>õ*£f44?'³hä9³jT~Wß>ßËÔyô·ˆyÒ€Žsi(ÐTÇ)m#…Oð¾mðÀv—¦ñu?T6ŽLOӣ𤬠ºAÛ}ånŒÅ8¸û+ÿópÖ.’â[Àuù^Vþ?Þà8Dî°ôºp€³¡ûÜM½8ƒÙÛ´ŠÌ~_¢N5|"‘#æü¬eb”âí€÷Ðwvª†[;þ»4:M†6b@øqc_wüÞY8­¥Üç¹õ¤ÙõD:ñ¬ßçvKÿ?Á…>Û÷"×þ™žéˆU´§(öä:ÊÜ͇'okP†ñzz’ÍÞúˆŒYýÞ‰_Å@ûÄðµ[Ð,AÒÂ(hZÏþbMù¡Þÿòn;ÊXëåÞ©(¢Áoø‹¢ƒ>2òÓ–G13É·žŽÄè»Ø´ø>jÓñ4EAÜ-·† {ÊM?žªW áâ5\8¯3·d‚£oà!P'AòÙH ÔKrGaÇ_µè1æ{-Âþ'¨¸§H¤ÒÙÁc£ôºY9s}r"2ÈáÃ~ì'/* Êãí* ]BDBVã}x &S¥Õ Ê6¨otšÃª!8;šíÕJA§mTmüOpöu$d xñb7¨â~4“XšnÝìáqúƒÍéý¬/¸Ë}[LïÙá9OFFò§³å³ãHºÚ‘ËÎ…¾XìåpáAïþýzVÛ&§œ)ã:Ht2pÃW*_Œ 6ŽçeÅòóþýñNľ,Œ¢‘A‡E^S¼Zh6ìVÀ,MA/®€-з‚Ëâéí.*ü¦ÿFùÿyµ^Í\˜ñË7WŽîÏÌ=KÈ#YMzc #8÷ìX)Üe2ý†¥ÎK…ÕâȃµÆäm ¸2ûþmîèÀÿÜpzC=Üw†pɦ؛ZföÞ»MÍ*lÉ™WALjl[Lºáð|\H‚ 2‹bKýAI]å÷1õëC]m„=nïZ_[ÙëoTåø–ùE)R©uÁV­¨ç}bMm†&üëÇ>¯ŸIyž}™'"#W@:®]s²Œ¼"¯É³®Ý„6_<~ﲕNtv!8€¨ò…s‰[™%ÞÒ_ê÷ÿNg÷Ýù„$!™éz„ À ¤t‚þð:®ŒšúNåÙ.óKš{øo7¢ô­Ž–ø+óÈBNp{X¤À}>0žä^}˜QËóáÓ6IÐAù4è(fêTmÃîR ª †Â>äÔTtÇ€|2ŒrC­LÃæýëÔ2å8X QA¤Y´iÛm‚ÉCSs+òª7šé-ߺ>®òäs™IÙ\y¸Î´ð„‚|ELÛ3ùúû aB‘uÕ (£`èV a(:òéÍ›Oë¾t| ‡ÒC-¯.?7¸°[à#õ`Ö?ÙȦõÏú`Ü÷p~A÷E_5¸+ÅÖ¬ r„:~œq$}DQ%Ýž+µù³7½~دòì¹ÇˆüsÎï`w¥ûWŒ>ˆt#£ñÒÿâë@Ÿ¡Ó@Xñ÷pEº1¬{S‘t=@x,=äõ{P×_6ÿxô]a‚I@Ë/u©Ìž¡þ´lŸ¿ÍŽÃÁty«Ì*hau×¢Ç ?zL™6'E.Ö!͵e0€OMìÚ9>Ã6•XxNhîp¼j¤Árœòl"¹¥¦¯ÝÖ_ÿwÍÛÆÿM«ƒì¶cUÑe³úZTéËÜ1®a=€ &‡9\û2%póEA 3r¸k7Lúî:6„É" Œ#„‘õyŸìÌøÿ0­©³¨0 ß wH_4%ß:€FÕNGúê«Ë „ ÊpÇÀ~Ãîݶ;.d$àפI•Šäá0Fü©J B¸A_éî•/ÿ.¢Êž Þ¢\ù§µ¦=¢'r›`ºRÄ1–Ãrƒ&ñ¤EîáoÒ}À[»tHBc4p%8¦s¤!"ÈBÞö‚¢d …H,Ëw¨±âgóǹ„àÃm÷YݪôvBPzãAg›…Ò.øåùÏÙ÷<0Ú JÈÂUßþƒ™5¨[\LíôãòöÞQqɇ´ïÅG Å6tbZˆ‚‰û|Å™BLJƒÈ‘" þ~øÌpá–(¾ÈÖ: øBiÐÖŽãâ{Lü×^¢pÍTrÈš„Çðñô;dãg™Òéô;®_31açw'‚]å¼¼¼o;9†@½çC·²d‚H«<#‹‚Ðáx<}~ÎËöÆ©å@ôè!2Ä‚¤´¨'ðtX*ѵÇubV‘Š?ºæ is;­8‚¬êqœ@ð]¬<'gç6™ 'Ç/ÝN¯Ê2ïãž>'åÁ\y, ™DÞ,)îÝ\Áµ¦_yÞõiúxNg—;­ÛYíÏÍœ­¹×îÃ˶¹–`n‚AOsd}ÊýR˜._6Ĺ8ò09á‘ÂïT)u„Ñ9qþé ‡ƒE>çºö`dÇ¥HûO6ãÂÿáÞnÌÖ… ¶2ÃË¡E#¡Cãè"ZüèÄÎÜß)]üÀmž?Cœw ³ 4@ƒùG)(Ùu>G˜;îç{M‡ìÒ“LÕ "h™R8Åz{´­PñtƒIåláM7¦ËZ1É\æ"™¹ËeìÒR, ÆìRBzW•7HS!ǧ}’nZ®ÔH6 )wH´aÊéŽÚ}´Ú’ä²{Qþª[¤ß˜Èµµãí…” Ý\„×n$ôé41&æNÞj“%}ËaçGšÍ饌<È@²{›š#/µ6sz7Ô>í>ËÑ Žë–n®(B iù™Ôsjslð~~þœVÒn x“oÅ D2úÎpáËP¡Æ:£²HË™Œ` vR(¡¼Éž®sŽÙ Ck€^8¦¾éîõ¿•¿ûq=”2ÏÀ€ã]í6¶Z]!;æeåcË ä˜Jávœ¦êγÔ(Š›lyÄ«’ 3Ð;’RBÅJWDí<¶ÁsŠõAjÎχO›Õ1ì1(?œ ž&µçΰN„éÓ:zÚv|Ökæjxr ÉKû(xˆ¸M]ÚòÞ‹~‡•}×— QÆìÁØ0Æž#:T¬Þ,NzÄ¡ãûàÈ».þ{s¬¢ÇQ®˜ïÊÛ¤+ÐyüsÕuà6¶etþpÑÃn‡mYЬÁ™Œz7 ‹•p#µQLžÜxNµÛÿ¬¯œ36Óþ¨ñòÂ+o7§Uçâž0`ò¦`¼K¤ûmŽŸÜ›˜vµIźmwã${b=Ì`ÖÖõ*³Œ–rk3¾!?í~G©bïS~&ÈFRMgß[lçÈäL%____ǵ‘ô£Æ |Æ1Ì e.PxV«‹4C~óÈŠ¹Ÿñþ¥ãm4–µÜÞÍ9MíŠxRÇi‡¥1³4g,X›SùßÎW®s‡¡’£ˆ:“¾n“*£ÑÜ}Q·óÙS;åy?OY‹Ž3Aƒ´ÀV5c4óyCi/ø ‚JH„¾»ï³Æ„40z'šOÙêøIt!\@CÚç@Wž"¡¡(ö{úpî§݉P^Jíb5#ë¿uã«ÝŽ ‹õÑzÃÂAü€ ¯q»ÕØph~~Hy”Þ$BQøÇßð,™O|pÒÑ‘i@»4ÆE_<Ÿ3½â \qÿ{p©œH>ò3xÛêkPY\êïð L(á^ÍY÷»Ó ^B¯i—ÕÃÏEGç¯ÙÏÊèr9Á’f¾ÅÇÐðL>ÿ¼“û—ÔÕÝQ)Ãñ7íŽ+\•±¿¿?צÒ(R×®©ËòøLUË™ué.NC]»úi3ÔòLŸÓš»NC(bde<<ô-_ÒÕÍ•çÞáÃrHéáñìÄ6qèµ9×Íž2Êÿ­AóUùõ4tü@ù–M·‘d<Í7ðs¢íuOÎÄg}ªŽµ{GgÒ¹Y†ðÂ7A?yÙ—vƒ1Ô'ÆÉèÑý¡šÉŠjv,ðÖ¸p¢§œVw‚±ÑlZ}›ß¯ÐiÓ< ‰¶û¿Ó+œþ¥úÊûy“KV8<[ìeuèÍ D ¿3>•Š:"2³þÔ0I B¡F¤coÒú{§µ'Ý4NZq}ÿï)>.aO×,GÞ¸¡£ÇH²¦L™]ö‰Ê¡}z†·ªâq Ÿ^ ™7zž¿grµÉŒ6лéé©j!eÐ"ŒÜÌß©Ùóu 1ŒqJÝÄרoˆ+6Ï^8µoóé6ã¼[Áðcy„yñ¦]ïoÐân¬Ç c‹¡´e)ñêœ|ïL׎h¨;þ± ƒS±ŒôŸËg¶sbb±Q‘¼bèéö¯4Ua&±Y‘ò|ç†8™·CtœZnú·°þÖL˜Jé(Û!†T¹^³¶íˆŒÄ®?¤c¡…¨ «ë´ñÞ¶x:㼈è¸täq|S ==©÷~ Ó6DàvÕ+h)(È^×]w]”âb‰f“´ýã#v–± lÐ`Ä–,ûà¨ÆÁAA°ÑÂM±¸bùƒÈkâw§šâ{挖bâúš÷Gî1N翊^}OÎ̫iªé¯1S iZå×?Ë.½ ê+Sw+u•"ß™•óɤäw!è×öv”«êª\O6†7üÊü¼¤†´©Q"Ù}îp7_yZ1Ù ƒúY¢H€L‹ÚD£ l} ‚&û1•Dö.¥÷UÓòÙºƒÏé°v£üµ~b¬ Ý÷?º£¸øcS2ÿ<6ib¾qCóÕãOýµq›"~gòø?æš¶ÛœÜHÛã°…„’Äf÷äørý3¹E*>™ƒœyÏ"€Ö)Bº¼e.PÀš.›7êõj5$2tá’ø¾¯oí‹ô”xê¬øã>&ÞÒªñ“ò’œn3_ÒIè:TªÓÍÞÐqð-ü ™ét91ºAL×… dÙ˜HQ%K­ë¯@y¤<ëDêÁk Ð/Ö “Þ>ßÝønÍÉž,nu~ºiïŸ €ØûöbŒS’²7ò­ÃíÏa—ý­Çÿ&Þ1§8FI H(!(o|Ê4W˪h o­±ñ> ¾ KÂuÃ!wŒ;ÚùˆN¼chÅÒ;Õ×(-m*rˆYààއˋ9Öª¡CVÔhzµH§f¦º¿A§ð®Ø¯Ë)Œª±©Ø®™”å’¶àÎpB’‡É _ùšƒAóº0­¥6 ¸œ}\Ä~¯ ü15´‚¤çÛ² oP.j·=w>DgNt>ƒáÝÝ1Z‘6Qc!r’ÂTvsˆ}¶´BåÅN#$à$ÍvèV$ ª(æ8jÜöåÅ&å–Y8;F‡–.]Äch´ñ=ûm?’Hqƒ“2I¤yQ•…e‡m×rf¡=åuLî#mÕ}ƒb¢… >nèGóa¬:þ?ÄocV«y˜Z?03ã-_Mœ¹NTý@‰ÎK[Mrz\µMôÎpMU@Oá½Õ˜0{J%m7M‹Fr’5 P÷ÃjŽå'Y8>\ün]rìâh—ÎŽ¶ªŒ¬-àÛ£5,\ k²(ý­©Ó6OCÖžš•ÁÌüo¿'Ø^™’Xåv$Ẁ±ºÅfWöpòƒcû56#/oŸT·}¢V Á¢ Bé`ƒÒž¯±ÙQ˜î[P*W]áõÂ5—žûíj­8ÓÚàÐ þBÒ’„yc^®µr€º²Ñ—j|O.]WÌÒ†§žÕCM¤}d¬ËëXéó¾ppàžŒ¢œ°š¿E€ q7—H3ý6ášËëäJnYX䘟” ˆ»Ã«@Ê^–—ºæ%ªù ì!½ÓÛgùF‰&© ³TÖ¹xOÂfQ_2Žz.9©¦ ÐÉÉÈð÷ü'C[„sl¹(Q~¨ÆØDŽÏ3•5”šyVá¯P Ó¦Ù-ÕjÕ‚:P±sOý†>÷Æmzd€Ÿó?Фú,Åý_~êmµy¿s‰¤Àq„xÄ_*äZoy·éhšÞíYçï‹Ç±›ö†Ø¦ÐLÚåƒ_¾K\œÑ×7wÃB¯¨x%—`ZQmá¾½y‰I× |9-» ŸÿÙaø¿r•™ÛŒÆïÀÜ……ø¼w=óÿµ¬¹"]z*™&Éyͺ~ý¿*º\Þµ"VgÛDq¤,iŽšw²¾<¸ÍǸŒÀ앵£ç©Ü¤ÔÉü¢Û^(ö¢îÝFçç×gðèŠa¢Ò¸‹­2Ô‚•{>â»M×a™1]9¡$dµìŒo߯“ÿ÷"£þ^²½Üä‹×Še“|¸’N×o‘áSj¸Ýœ&oWÞóéåM¤’[2ØLž: `ëTœÉL¯-Si–c¾˜µhš§eQ’È/2£CB€N™›GZžôtp?jLÆÈš3Ý»<‘¬þŽä€ÇñìW{&xì¦{ëËhÅ¿nÇàÕ –r(³\…1"|< àKhƒ[/K?1:@Ã4=Ñ'Ë´†±ÀSm—ƒU¼Ý÷Pmþ°“59{׬¡åíy/@T|#)C#lŸÛˆ ãoýÕlLð®ºMÛ „r˜`šÈüoêA¤MõÜÁ,öU㮾o¾Ø*hZð¨'Ú:Øk(†]Aá/(԰ȯàÇŽ[ Ÿ¨u·¬°ë1Îl‹³yGÃá9"h+Vt$þ÷P hCS}Ñ0¬~‡‰ƒÅÐÔgÏ»ámâÙ臬TÆu §éÜ’“z½8ôàþòHǶ$kìO¡ã÷ºÕAàìÅèß_-ÔÛpÞnš_{¶9r~èÛÖ­ üÕ‰3?:-•ÀÓNÿâhZžyµ“¤€¦ŸŠkN û'FQSLJfQŒôÂYí¹{ù}wY oiR²·µÁñ- ûfW¤Í—ú© |‡‹ŒÐpCÌmzØÑ@¯$#™ð´È½Î­gq´ßeË|ß.ÑßïY¯†¤±*¦ùÁ¦s\ 8¹ fA“&QK6 íð•L¬º·z„¸lÕrŸlƘÈr956Ç1± ó¬:~ ÀÇÞÊ›·Õ‹Ÿ–²diÊ0ãf¬tzmôô#wû]g´"áãK©z!wÑ?° Óüaß¡V³1üX|Ÿ•5,ôY! íUàgá¶{:4» ˆdqŽ®®ã-§.tÍ?“³ÜßÍIë všØ Mæ ŸÞ9Öà¡ý6…`‹´Þ1W8 `TqÎj)&ëè!z9¶(]¼|â÷gí:y¡žïý‚..=ýj¹2é<:ÂÆ ¡…ÜgQœ¯³‘Iïtó@…"ˆD?E\MxsüBj ƒÌH)¢ü`7˜°çë×ëgw'Æ«õ&ögtí?|^Ú^@´éR ØœÁبͩái…Eq/æ¹âRq¢µ}HÒY;öiSÄ'Ç©@9dÀßlýÃwPØ,Öó¡”'ÞýôÏÝÆÖ‹Ô°˜ïµàºEÈUcñÈßrtjL4ÁTòyÒù5ßm$Ž‘¯l/4ªâ:a„’ïh„+üë#˜œ?*ãƒj~Z>ŒFHü;ðŸyÛŠGt-¼¯ŒsÂø›ûQùñ1·üô“¹¾Ûc#dÍ>VRB Ùþ%8ÜÔ®Ì;vˆ‚޶68iGåYT ÎË8!¿­ø¤¸ê§¸šbÔØ*¡}ç‡HI6ÒúHþ¡õŽÒ¿_n,K'tò"W‹%3 HGåê_È098uؽZÚöºïGk}Ç÷-ŽÞÙA±®–Måç2øäCä¤ÒCy&³ùÀ€­0AÉ}e ²IÜFÁi~ÔD·2Ž‘FãKB.þòD"¬ÕÃj|RùúÿŸó”Á[‡«¯ãõ†tÓyõ홲1%ሦ˜ËoÿFkÔæ¶B·Hà!3ÁÏéòV¤OAr@—àÜËœUÓc”æ-¶ô©|¢ÈJvÎ>¾,ä Œ±PÓáªìÈJË®SÀp)Š$“£õ].@!; |ƒ¨Ò6F9YúEÆð?ŒyýWÂ…!ï‡ Ïk¾š¸qÇ p1wÔœð]n˜+™2¬Žß6¨>MÏ–D˜ @jÁ(P¿IÓî h‹ºï¬µ×¦³ÇH Œƒ:Vo$ñun¡õq+³Óô…¢Å´gñýã|/ç2ýˆqrÉKçéâÙ¢–}ÕˆI†S¢8à=ñ×áòC"«øìŒøD{îd (ÄÏNÍÊ<눹u~^Ä\Y%¯4³Y=5ñƒŒvÿ"¥2V~]©XÇ ¤-fï»'3²”³¸í·ä£¹ål7vã‡ÇŒN·9 ¾/”0ÌÌ·V{Ï/>ÇXPRË1Á•:c!ýÀä) ›5%F…æøñG~ܾïñk»(‚H£gHÏCÓn½WȪwV’Ð'²™£ØJŒÛaD¶j#G¶?å}ßïwòy¼wƒÉÜ àOȆåMØdža°¨ë,š0zœ. €§7ì¬ýèÕ;„JО°•¢ªÒË­("À–Gpдó/ÔÍ€›h¸=IâŠ4ëðN<+ÍZ— V|oËFÏα’¶Ÿ—p"˜êõÝöv¥l>? GAØ^úñ0ÚÇ)ÅòÌ*˜=èLhŸ0÷ÙÀ›ÖŠ¡¤^œä«óûŠÖ¸ç>Iç:<© ¯¥t4¥÷Ú'J5%óÞ¥ÚN0&’L±€F™Áq9¯e؆Bc×!R9³²â•U²”˜ mF¯¤NAÂoæúÙĸ.]Ç ,°éÄ^v—ã§j<8G`ì‡n‘ä/Ø…Ï¥í|9ð9úÁ]^åß¡zg&ÌI Y€±Þ¸cj°ñÄaÉr|×íÝ üe³î‚+å½â.ul{ë‚{ˆ@è1ùXˆ‰9>ÃjVÍçoáþp:íú9|=æWÎ’Õ›ˆVL~ê)I$lm1èBn—ùœ É¦Æ—"(pòâk¼þÇÅIÖ/Ã[±ekÀ!Zköa½è{cl9‘Èöx«Æ²§hÞyoÓ½! 0ˆÿŸ—D° È àFxÍ_¢†t ŸnÓ €pÐÃH ©œä^#‚¿ö/[ãÛß•…æ/˜ÊåºSÔ‹&éÙ«Œú²ÿBFE´вb¥ €„')À÷÷Y!leih|*g¡)ź ¼}Fe5•5tûL€ÍœÂàs1'_o‘8õ7ѯ"@ï"suÊÚ±ýq#lÜ ú·Ë›iH^¼&-~’UâmcïzÞ¿Ã2¢Iá!s3â–:{×ô!L&;÷LãX¨€§Šö4v.{ñfÅ.ä'¤(:ì÷9¾ Px> ˜¡ýø¤ î¶¿‡ ”ÝÍè|_$(£µt$d…ëNàæ¾ŸÕ8“Ϊp‹¨·?“^b’¼\övq¿°ôŒ­Ðe§¬ÒÈN€]p€$|Féòýã•Bë’ü/Ùprr±ßn͘.ÚòfÖ&Àï‡7+¦N}ŒmõÚ”òVçú]U/G¥B!ÂO3–&)Çæ µƒž"¤6Ð̧á=·û¿íûÊ] ÅeyüÚÐI *Ÿ-ß^Ã,ø·q׹ߌoÆ¡è¤øx4ùÁøŽ|?â"î“OÐtÐÓëjh¡3¿cSÈþ^M™Kξ×:;V/‹RJièºXªqûèSbÎ?ý_!ãþsÛ½:ÞM™2dÌ® Úlع©Â?ú5V—‚8_9÷h¹p¿É{tÈOìYsý¬¡¼n +ÒWnêëz½Îâq»3ØT?ájœ-´ Ô Ÿšéµ•Zê½p|®¹ý¾×Ep±|Õã_Ê_SËm–T¶–Ž€«©ý8PÔ¨ó®Æ|ÉI8¬.ë`Ù.î!ºU½<¥æ7ì¸E[ÆÑѤ Ñ"‡ºŒÎì£ôVðnMGwOIðÌž)ù?SŽbœpÀ_êXt p¤ÅÊîw²Þ¡f%îpÅò÷[­´;öÒrÞûW6 XcûlAL.³ÊÉAbMYL„ˆ“2Þ*¦yƒHùµáíU@b_i} ½œ1¸¢8?IÚ¯ñ‹ß%Æ”îÉ©±¿ë„‰0ã«,ÉWagÃ$ÜÓ%r¸“àÔéL@BG9üûoØOA*™ü-þ×ÇÌÄ*ÄG Öe©‚hã$[݈|Ë¿z¦NÓR´¤o*°Ú£Oïž 4aJÅ^®[I°ÚÐyþÄŠë#àÈñ‰#%HH, ,$pȬRl}Ð}×5aHê½NåÐ ˜hÄfcL⟃Þ×´å -¡Ö™0Òä{{ޛ֯à 4dζ!ldFBÀÜzj-D“|«‡íµdè+ïeDòZ5¡LžC«q}¬=$îr¾XD’þ²dw“ÆX0Ú’v=³Ðëºðgó ö°@3Ÿý'–á}¡¼FsaÚ‚-pÍœ¯„H0·ÇÊŠ`Ú ;¬f„sð\F%¬–X›+o©ÖŽ?z×ÇV­4³ xo¡ùH#ÿT|"ÃþjFŠ w*J]ÎAËU…Æøº³«jøHã7è]¥5fµq¥¨8:_±ü7+&&gæ  ?vCx#P¹8:Ìi²BÔÝiµ•¹Çø£?Í`vm÷/:É“ÿݨî?KªO[(Ú×÷ÙxN°ø‚ €Ô…–Œ±Ë/à8ŒoûŒP‚ó¿¢÷VëïªHì2òõúî°æ »Së°>kð¿KX~4P)]GÈNÍ­ åƒI|kÌ®$c˜¹¢€–žw]ÛáÎqm8à¶÷€˘ÿ³¶YÙQª3¨¾´ÿÅúI‘‡Øâ)áXy1µÉ¨  —kDdÏ@üq|X™@teªv­cÌðÝ›öq¸Ü&ÜÓXàZý ]…/ÖTJÖ ‡U¹dWlr-N­!—G2inB¢¦÷~(PWxp 7ˆŠoXB^Icd2àó“þ=>LëÅ,—i3mVÑßì°‹[ã†Ó8Íh3Æ(Æ«jSw;¦Èg;QŸ›ãz bEÙÖòRC0^J®höBô5k_¾)ŒNõ¯õÃ|®`V€­d½5…ú0FnãÙî±ØàïW33{ë| WÚ˜ü“W~TDi~úbYvÇ‘¢ñ<s,³o‰¡©dÊ>Ü,ä2m÷>ƒÍë)B6!3ko;RÙé_ö¬æ91ÑYAƒ]×ú(’Þhž°rY÷!H­DFnçw…1’à¸.äåê±%¦|õ­ðô=¯7é¹Ù„ÁÓ­Ããö )zÀ¦O»ÉpÔwœÚXs0$ÀhâóÁÔ§*G˜m\>; ïì“¥OçíüþPké鋈áã?œüw7üº@¼æ¯kfa½PP[ƒD/·*ª6ùÄ>nåY}Ï…Ö ®Ù2Ótþ˜mEÆNØí%Ì.xí¦žHAm‘&h!¯Ý÷™{ZôíŸ3{òž&ˆ±Æf-z䛢/ÕYy#[A×^‰¯’Çß›àÇ—G[íLó‚]…­\2;%Þ\=ÄЄ•êS ¼dù1öÁ—e=Ž’è8V@';f¯í:96¢¥ÑÈU ©P ZhÉØ©˜JþÊDõ <6k ”™È]Ia{Ïÿ*Ö(ÌÏÛÐÂüdg¯ðŽqÑ£ÕÈØ•ªz—.#ê#Pq¥÷Qàï–|1C¯3&´@@@#ºo*& §Â’Vžé~«=Æ g†3S½xê÷:6¥l{Ö«„äµNÒ´×E9¬ß—Nú—«ŒÑvúŸx  ÏÅ‚lÑ0Ú^‘Öéû=_Ÿç¹Ž¢æ6/¯Ó¾‡ZøŸïš±.¨†f¤ˆA"\jâbû“G‡`WÎõÈsÝÔš¼‡…ý5;â{üsQš–VîXƒHÿlýXgà¶sI;›v–ćrü«0³Gùâ;^/)Ú›÷ãx“ Spë8Õáq.gùIA mfCÍ~…ºÒd1«¡z_P4ÓQNIÖþ=Htd2€ö (¨±esìBÛ¦•€WßÝàw Ý¯0][è½È>dËφ È’Âü°Ü-Òµ–ãwòª•+/*® ª[R–Ê÷€¡¥7e?nö!=‡IïK<Ï“£¿¢¯ͨC+Ü[IŸØ~T‡'tÅdÿݺ';1iÑ(5©¦LzVÂ{çtºØB-]¸v†jNU‘úyµ‡v¶0ýµ í¨ýb&l‡p"÷“ã{·ü·N÷²…õu|cíWä]Ù½7­Vn‘ÔŒÌRH>œÔ*D’2² £?Š<2ï…B¥áÞ¨òS9R”Ø¿¿<‡°7†¦þýGÎ€Ž¯¨ó²¶à“ô¼;íDKrùD˜Oÿj=÷‰Ù“œa=j×êë»ÄGT¬û ¬ô*ú^+,Œ¯Ýñò:U·‰¨¯ˆÓbêè°Ø̦nãÎÞêõ»' Ù?¿¥D pd„‚œ`IHH´0¥Ý€lð`p„o€x\=ãÓ$Gá%á„?ŒL‰Â18œ èÃÑÀáƒp ?‚q?ð.ÃÁ'‚d‚B'¦ÐçBŽ+ÌaAŽ áñf@a`NѺ,ãá`ÀB!TŒ$»ãÀX`[±PÄ™mÈBâÊŒ’ü†àŒ„€,À¦Üx~$Ç ÂÀ€6,QlkÞ°l™—amXÒÕ¸Kh=rhž‹2$Q¬Ÿ…FJ† ñøï\>ÅWú}'ÂBK§~r…Á¹)v2`a0†Í^^<³žàÁ> Ãق˵qìÁá­]ñm`8󇦸çý=m-8H9)_3ɺt}»8$c œ!UÁÃôY$Ì!™’fI2PŒ³.HfC™3 2`3$†d‡Œ™z/EŠÞ9¢þ‹géãÃÁ¯`ÚzÎ9–o:Ièfب¾}Û€øð@¹!-[ Ë`’aùzÌ£óài§³È¸9Œ_–Zþô´—º9éí€SyÑ:)*Kùq'|ŠKðh`°ÓTü^^† #¼íM[³ö` „µ¦\¿€Ÿ`4»Ž®'OQ;³Ú%~. VñõÛ»Œ@•*`EX €FõîÍ×:X×¾÷\ñó^]Ç0_©vávÁº-¶¶ÐÃQú‚ÆÕú¬ÿœîà= A»r WkWÈ{íºa˜QT q>ø¤áê Ü«Y²Q¶9*¦Ì®¹»äGÖT¹!JUÓî²KèyZö+àÊN.ª¾fïàô²   ¢mIfÇÈE½¸ÀšêËpðg½L÷íža¿£²mXòôŒðëy9_–M+^€È8µåÅce¢<bÂêq¤0i*D%uÎvüÄ“üµ*ƒâÿ 3ó]•Çs-¥²ÈII!Ðü‚Ið7N”Ûö·ÔôL8¾ä$Ѝd•í@ÈÊ–„ýz&.ÓØw¸2”ܲ.¯+™Æð¤X‘”/½Ë0Ïq9¾9°ÒÑ|׺¿J±1ÿÄÿ<§ø€@ sYwÏïwòýß¾soõ÷±Þy°c]ùç÷:ö“/ 8ùy}ÏMöÞò8>ž÷÷x5EèÍ=/8OÈ6•AF+aªEÈX%2½›jœßª!€è“OpJÞÀ”rq/¦FˆgDÊ]|mÄL«Sƒ'V%•ÄÛÝÀMçš{G×™Ÿó,ôØÁ”,e…¢ÑXeëÆî!«\1J¼KD~O ÉÅ¥ Üãgíœ Èà@&Zë ÂÀxºN”ÂGà•…6Â,-Â`]V¹€s"Y‹+ .‹,“!kدcBÁ©d‘NÀvX_k k/®/ Ö4˜óë¶X‡>ØCã‘pfÁîzÄqÅmxPø4ÆÜßKQd³ò›lÊÖö7zÆÁ”ÿ£À!d,åÖ;³Ëx$CeTíâËB‡×™XÒpo«Fx)øâ‹ÎV>PÍ5â0^A–ö =Æhfÿ’¢Ýðdü¨ÍùzàejKëv«3°ÖsŒoÝYÃ6n=š7Ùž/äIRû“Šþm5Œd.Ú zWÎõ6­p‡TŠBÑ $E¥Ý,Qâ±ê†¨Ï¢åp­(&·)ä®í’Tyµk¦VtÁ#ãíø,]<Ž6&~mUPt;©[¸ªNli>t¿Q7 ŸŠCôF2¿$¥ ¶—¢!¡€Ö“³L¾;Iðèè`¿GW„÷þªmû£¶Øq±¯ûË~>O]#Þ =ó¥îŽ]ÂøXÐ3˜R7Yáê|Û14ºã—[@@lÿ›>Oš ú…#²IÈÂ?•d%®²­´ÊÌI!’Âûljæ›B9ÐÆš3j…Þ*XL 9êo†—l†d¨èÈ«S}*W_ómälh¶#&ƒÜÈႦÔÖñ7Ê¥ß3w‘/&[-K»Ôa¿š(þz3S‹|Ž"ÇñÔNŠhù?I‹]ŸDYqþ!¿!ó€Š —˜{ÿ3x@@ € $;rþ0F.ôËÒ’]×ÁEïnÝ8W.vrg,š7(ÑϲKbÌÂ_@RÂÚRÂ}Û—Òй¾?È­§ö¡5+œ7Ö9¿ùç¡ìeìo¡å‚ô[ª·'ýó6OëvüÓY¯2‚±ak<ÒS»Z$6³LH¿¸œîÀ?qª=º‚•Z•+:IÝ52z<˜ v‹ö%›kÜRïm1Ñn¥÷6ÇöÝé u=ó…êõ[]˜P(úwi7Ö¼˜m(ÛÿóX„Fõš˜«’¤EÄál  öÛ+>7±óÃÐKÆAÀ¬9QÁ—ÄÌ–Ùãfà2´hö¤ÔO8ˆ›ÚzzÇæe)ŸQ¡Á¬KnµW’…­ZôJü¤ÊŒL@ˆŸx<Y†ŒÈW훼›=õq$Uª§Q)~(ºÝÑáL¶G0¤‰<ê9ƒ{dNâKhH‹ï¡þ¶x˜*aÇÛ\¢×+Sn2z¡R’ç[÷°+Åm/ìhñázTz¯a:kž‚4\½v.«7üñ¦Í6IqZI%œ‰8g.BþÊÒ¨ª÷Å*ª”0Qºö‡~L&¤5íÉøô¹P}ü&ĉµí #NàM(ç7²wÉ–0 d"g…vùu>¥§³.óì¶¶¨`:oVW› DÑŽþÖó¤eR6r¯á4ÑÁBǤ€í[Ò[s1©Ó–À:¹–Ç ·kï¸èð¨üá  [B^±&`èUVö!; {P›¬}ˆm|ó}È œìUW×cƒDUÑ×7NÿÎÜe"nc¥‡š®ž©øF-‡1ÒÖ„îÎfQDJJÇÊ•?›Ry%Y-••Èàm ƒƒ"‹xÔ¿ˆð€Ÿ ¥Õsñ=È@Ûd¿Ú>ìæÝµ6ø=^"Û4ê òÁ\(Ñé3ÇÚLö„~#¡òøD“Ð)wÉÝ#ÒÚœC€+~‘úŽåXÀƒn—è €éÔL˜¯æq}Ǻÿïå–åEÌ„yÌ9ï¿òM[s!_jÔ:w|u`%º‰H”ÞÒðÉ=¨oÊ*Õÿ/~L•^ÊWé×ůJJèǯFÙ•›]?Ñ®®__êéÑ›`ÿê¥G;Òï£8óô]›¨Àó‰¤GÉ\æÉ5ÏìèCþ‚”âíÔ‚p+·;²òúÿtRZÌ]n1wUÆÅø.ڇκ¾ ®´ÿs(Ìuž–·š ôMÌ–ÀA7îMá`…¦ÐK,z·1faåÒ#iù‡ÿE<¡E·™¬e?=à2Ö¸ÉÔs'¹èž ¤Snx?7Ï–¶ßnú2¤±cØ0”7HÓa(J&€øýÚ(‰·q ÅV,Ùcü†Œï½½êJþ#¤ú芳ïûu:ˆ-w*lÿ…ª¤Ñ3B1"ö7ßòrQ‘%¨ŸOpƒa]^ùŒ)´7¤ âÓïÎùµ ¾²´^Çeú²³4hó3\²›T† ­î¼‚%ÒGDçü¦tõeíyöݦà°ãrÒ願çR‹dWLêȺû"¶íšMp<úrCvÊÔ¦øþ‘÷.VªŒ=ý½–.P›Be¦›'ÆEö¼’Ø2«,®EOñŸêÞ ád®àÌvklD8¡Ï2ÿ«³?Öe&ðLà”d5Éxõ=¨2á[ìg½%Ð.’©©Ñ“??ûE«HÞ†½äe–ÊVžUŽrÇäÖ"†I‚`Ž­ªŽÑÆi˜Ž yÄ-Pz²æ¶8 ¹…j1í¯¯gá¿EŽSlF±¡¬±+¸_·ÍKϸáFÈMN¥I%…Rš`Ÿm|¤âÛ™7„ÕO¢´Y ÝI»ÜÜ3…Ç+Âýÿˆsε^ƒú늱.FƒáüDÐWGž›ªu«¹†pêIú´çrà4 ¤ºWOg,ˆE(Õ^v6rš/—8/^!TüN7ç¿D&Àk‚¯ƒ);ÑH¼wè DIøÇ³Å ˜ñêññ¦öQí¼9n䋚ßjy^î0€ƒÈîö™.ÙiÂG)#DÑíÕJô1OµT”” ji×Qê®Â¯ÝÜS\  ÿM™ær?k‹Â/åvp¯>WªÓ´£å…:èÚÔOw’ž½3ï|*çÕwŠ–9Gç³t†È±–{ â(=ýÐ$ið»0fq+Ñæp|;ÄW‹ZëM× “qÓÍ— C;~ÕÖ—0â)µ¡>©Ì\zK¸y£víþèn:íuc]‰ÛM8€F[•èã M–Š•á{<4Hl”¿rñôó~ âì’M®ýÿâù…pîzšcýt³¸ü=çRI] ¼õà1 `æÜ¯ú™éŽ©ä¼a¶mN²J>Ã0z\­â¶b¶«ŸëÞ;ÔEUŸ”Aw7v‡q§Úk&üý«ßÕóF–ÍÉöu¼÷(²îhŸóCó‰ð¢œ[«5dé/—äfýHk©Îõ0ÿ›¡dtŒ8MuJúX˜i‘äSåñ¯G\¤e`_8_×]Öò#G‹¸õ Vq*‹T(ý=~mÓ3ã³”ïË6Z&Þ''uèî ™*Ù&‚“C¨8:Q¤äÞ–W«­Í§ úšdqé¿}Qe¬•³.a ;¢^É–›Î™¼»Bmí?Ý‹í;`ÃÎÀ‰$J#ŒoCƒ¹&¶à=ÅZµ©ºÀ´,—¢DÓÇ÷Ää1{\,´ :Ý{UÙ®ÎÖ÷è—èó\,Kùò\ä:­SØùÛËG>Š“âó|M™Ñ@ï¸_$‰dž+.ì¹ô²TW;÷¨@ÙyM9‘Þ»f³g[`êsU.þÅF`,ÒßfRÇ(u9UJt¼=³Õ›,eU4÷—$l.R5~§ƒ“(Bš3òNÊ×V7nüž…¨Œy¨ð¿VÆ (À%3Qóìj¦£<S.{î6!?TŠÔ Kö¸[$;¾O(µ üâðä~`’#®:QXå_7˜~ ¨³þˆKÓ¡Ó~Y¨Xž¥j†=È2Ų£ÉNöì_7··ÎÓP|o±:F†Œªá~Ái´^“­n!*³‹-o6Zö‘óȨÐÎ;äW1»”·Å½-!StËϺ {Oƒ>)Àgµ!hb|QædFéÅ$|¦@£Þr§zýÍ|—n×_ dÈÐxL†bƒðgGsD‰[þ«a+MžŒ¢ˆ¨#} pÔ?=<çžýhÎo»0°‡?šÆ^ƒt­«$Z?n¬WÆLËñ/Rá5H ¸ËÒ$¤F þ¾¥…©"—swª …f%ƒ ü{ú:EWÏ Þ<ßAÑ|;üË­—ø=mµ=eÁ{ÐÔº˜Ð'DÔ<Ë•'bËÕŽö½Œ¼æËܹî-èÙÏ`~˼Oq8~«~Lè½DlÅçƒ=I‚©ø4ølÚC+”ÏœlV#êÊòׄ„I”‚&hó5ݨLÖ¿Yj×zý}M|Ü£¿´ñSNc¸ºák£Œ-Ü^@]‘ÄV€U{´ùå?ÜDäùln£NbcoäAÅýlî šÍ-©tÑE]iÄ¿A? Ñ¥!ù¯âÙduÕQ†æ‚*¦sÆFXµü›Sü´=l†3_˱kr{¯‚ÎnܯcºÕw?ô(¯P–¢|¶Ž\)`ùä®V¹êW€\© eïÊ ‰ _bPT¡­/€]k{ÝÞ?õÉÑ=ÅASܤ”‚üå~ëÑûˆ¨Á9:YàD ¾­®A¥‚‰rCkÀÑsc¤“{ÞÒŽ Ðuå¶þnC¤Hýw2[Ò~ÃlN—:ʹHÑdòEÁh´ì,Âùæ:MÞ_àËÓ¹‡§:}Z 4‚Ts qô'Š-¦) ‹9Ãó•­sy‹ƒ±ùöï£ÁÿªtûëÛ¤<6“;ÞµFðÄCõ»?â‚‹Y¨ÞZz5=-5Tá™HòXHf þž=£['b"0@¨pÖ*Õ˜zÏÂl@S _Á €{’´ãG' ä{ «ñõãž²èhÖì4žo.ámÚ]7ÃAë€8çá#îXÚMÏ~±ñ-f˜’‰È¯ìÝ9Ne]¤ð²Ñv^rÇ5E³_5¯þËlœ“.ãÖYd·D…×rvWûO5²ÈàsX—q}¬'÷åpá LÙCWåZ‘W¹«8©´‚cÍ1Xd›ð³a¡p/¡¶Î}NöÏÔÔ h)ý˜¬T£Üš¡ˆÄX#:ñ9Ê^vz‹£zgÌ›0†?%ëßTi[Hÿî|á#.Ôg­Ð;%ìaÇð=Œ‚_ÌÚUyãn÷ ooxWgƒ>^]r¿ÇÏX÷èf9 îc;ƒ%1cC[+ïXpR2è´ÌÊaç™uVŸU‚:@z –qCÃFÛM¡Ûü~¢ÏôšÐl :mW™`Å!“—\cƒº3ÙÁ]¬*ÓÇLu´ÉÔ;+¼Œój±º˜µîΗYeJŒŸsé²&:mCì›`•¾àߢ«t2µK8÷NozjGÃÆ×ÐÒÆ«¢4êuàQ…³²Œ ³e«[£&§}2PT v§ýl¿M?{±\ÍN6Œù—ƒ8ø}¢ÒÖËÜzït7Oo2>Ÿr¶Ç4€¾äÍ9ðßäÓ¶Öù0‡¥*<ꜛtÒË?)^¹“¯8¡Ó nB è«üœ< ^I!W>mš[iß„úôÙ «úÙË6\Tª˜xk݆LœºcýÝL^uä¾ÀÑ0×v²0¦l;´·/çû"UÌ­…9úÉbŽ{i„ûñæ¿|sݦÞÏùцó×rG;>Ê}m0Éãäù5ᥠâ›…¬¿>o剀‹2ñ¼èöë\¬Ú(zÐáÝè¡Ctê Eë?j jpUsPš|è&¼ñÀböà“<£Ãè½/¬ ( / 6úW´‰¯Æšág!>"Þ-Aû²(ìì{ªÚÅwgº¾dËŸÈ´WÌ8’½êÍP,%.íŸÓ>ñrß}_M"ðËÓÙöW äù ÷W9Ël¼šö‚¹oý qLTï‚uX!ÕÌ»SR¹^QòË勎sôJ™(-‹ÑÓ¬ÓÚe'y ?ÙÀnR’==“íò{^ÏC/(ÊævìʦÌ7«Åƺe)¨R䮯êmYŒMh²éø  Wºj¹E›®œK6Óf¯.ù‰/<£¾ì|¼{•žg½ëfiÅúc ÖñîÁ9‹5„w옂£_ý,C§S#evúø#[eŸ¡Ã¼¡‘0•[.¦ªìš Û1œŒtO#¬§2pX{Ñ’ÛüI;Ì-YcVªwä™P²VÈ%™eG}Îsa¢û(oBJYÔ•wdüqÆSÑð¾Ö1zó‹È¢qóæ;ä’ùº‹£¡qÜj„‡=Ò?ã}ÛZØjlô§ñ{ñ_ËÖ% Þ+SwGžîÅrÄ¡mKõyëã(Ū$Îꘂî+eÁpæíg´Îª/Þ–ŠÚbÏ|Ñr®yí;ø¯ ĺÆÆBÒFyÑ÷ª+¾çaeâ×fõdƒíZ¼å¯@j÷ŽbGqr² •ªÐªAºK^}ø½Ç)©å.zÈEÔAô»ø^l›6½˜õ5Q’ Ô…E¶¸xÕCçÄKƬr`øÄ]¡@ò%o¯#&;MýöÛPHLX­%ïÂ|â2ÓñccpäÞ˜NžsÉ5”ýïïîäl™¡:Ø+ä6Ü\ô ÷dá—Øð³;?NNÊ÷PûÖ ›£Ö—èÞ¶Æ–L·Û°1ßþx/ð½¿U¥ž¶t‘ˆï:B|\Èþ Þ¦zà¯Pô(a´ß´åŽëiFÕ¥1ÅQWÖyÂ!¸`»hòWò4šõ¨£~} éÅäóòBWAÛÖY+Ž´F` x ’Xy{™ö«Oû±8E'ºàƒµ4˜^`=sÖy©s W\äoëj‘µtö9Üa¸E «á°ã¹ƒi@RY^2/Ûs‹ŸÕ7~}ørT(Ïb„ð”Ë…pà¢Âi9¯gò0QþºõêÖT¸ƒ¤:­(GR¡P(Ÿ=î˜M•˜°ëz®9(>}OØÿ{ŠEf/\¿"€·ZŠܨ¾g×é;ÆÊÉ» þØNÓbu2˜jÔgº>›Íöz[‹¢„òlîõš’ÞÙmÂqúÓ7¾Íõß¾ÿ¯ÀÝ]L³4(Å!úÍ-„…!¸a¦%„º.9Ýï¢è,°¸÷F'§àëáZéqa»3ÓVB1… tI2Üå˜7Ñtiû?N~?=*K!Ÿ¢+‚ò@GŽWêÈ(‘ëm5Ò®}i¢$à}Jl¾Ú_,Oêø­Æÿé–4,w—,³±ä­›Î2¹Å«pCÈf3ÕD6ù¨O÷ìß.™š/ÿ~À#vró¦–xÉJ^!,÷l,Q†©ÎÎÊS+6³dLõŒB5þ¯’Úˆê¯c„Ê“·¯(n!¤âªyfCU/ò,Ó¼ª‹­÷YÆ83|ŒÑyË^¡¯ÏCLGxW¦ä:6Bσñp×,‰Î”Š-öÃ>2¤ŽRÀ~ý^øýO8SÆAg?&\è¥Tˆt· Xš‹ž1ÂÃñ\$K ÇY"Îc»ÓO5úÂéû|S@ó.uGdòëóZ‘G Ôs I­ý·2c×4Œùà!J "4{¿Í‡SMá…ÉMR‡ô¬–ôËp˘ .Ë=á{èº{•yžÒx ÏiþÈÿÞˆxG;tü¦µÅâÅ÷Vz x•2{Ö‰ó­'ºyZ~ÞÿŒ- Ýy.ˆ¸5¦¡[kqœ ü+¿»7wr=|%ÈÌm‰šú+¿ò޵õva+Ø_É| ß³ ¯Ñ‚þ(‚Zkú|õ¸I²Þ>é¥n8Ýh—MJLý/H¶TÍÓuk£‘ªºI±önÒ^½1’[Y…#új_Ø]Çú~‹…Éú˜×®ëö=îØrLƒ`ÜNFôo³öÊÑ”ßǹªå˜Ï–2ߊÜOŸíî]~À}ã5æ:•Ž6 ·é‚˺–2;C’“o´‘©†í0•ÙøA'cóœN©¹ôÍ ™F¿4;™Ÿ=Ûd)²ù¹ õíùHñ¬Ñw« ò\ãVtÆøŒÇÁ«zϦW#Ô8—íÚPm)¸œÉœ`-å!̓ʒ= j£‚"Þ?ã—Òo/pØÆ=èiÍïï¶åÝ»´¯÷¢—+¤Zßõ ¹×ç×AcÚ¦-EU4W‚¸Ù;î*»M~'„ÅÈÇŸad9{_9¥+T„s¤­ÚZÉö¡#Ÿ^…¸®‹Jbg¡ÑÕÖÔËUÝ‘ÙéÖOЦ´õ—Ðÿ'yZ6ƒ7ëk&¸ü‡ÚpÀôõpRÝ »ƒ+ôwŽð7ë.%øg^Ü·cyjÏÖkP5LõÂ\v;KÍ¢9>qã«7ûûÇ­¤)ëøÎ>ÁSf ‹fîm÷Ẻ,3Ìþµâëøˆî¶×;$éÙ¡3ýR°ïâ2tÛ‰7¨ZÖÕæèJÙ–Ü}î-)5|úïSzªCŒ=`ÿÏî…>‚ ¹2ñmh0EÅ)–Œ€•Ï_ä*Æòº7‹z€mrg{|¹L%vhê>ÝïVÉ­wsÜ8O•ûFü>Æ$ô&uœHš_©±{;~YüÃâÓëã#á JIïp45Ó‘ $Ø*ÀzŸ’Çížë¨¸m¯™m‹»Êpý®”†ßÝ«ØëKC@gp:X92VFjb@ =ù ’ÑØ”¹`p’ØzP Ì@#3fÐYt7ï5ÄûÏ ‰ŠÎ/²ïxНnÃnÄ'²û}N8ð£‰çeÚ¸½æ|ŸsŠËÝdDGÍQö=âG€$²Ì¾ÙºéÙS­³ÖÅy;œm/òÓÀáß<­ï[¦sœ;Ìîc87·§ b8„*aH;yŽS‘p³¬IŒ)aOCÈx°6/‰~©RÕÿgªIs É¥æìÂBgÙïRó×¾úr ªóÛQ•-@ À,†:ÒÎño¿%­µY¦˜Åì9"´‚Ø`DóÖõmv]˜­s™^vóà0¶­‡œúîÚ±Z¥´Ïç>ýÇ“?–Њû~©@XöDHtEñsNh%®¯u,¡6Ídøã›7ks},a*ÇñÝóįø>*ŸcتÌF%V§wÀÈk ¹G¼ êýä%l-ø§êšÈ VM÷@ÿÎ0åñ ‹ÍÄ ° HjŸôòßH$ì['Ê¡Ã)Dt‹óf±é#(ˆAž õó¥½ÒÌyW“êpö¸ ZtÅÏw¸IÔîšY„XZÑýçL¦·•(&÷ëæû‘鯑n¶W|m3­¶K¥@>OyF·¯‡óâÁ÷î󲆨Šf°åÿÓÙî÷$Ÿ“t°~†K×ïËÆ=zD>e«x!§»\[u\pˆ°GsR`s…«çluÒ£[û.Å“(Û¤ªf[–[¬.>ýyW?§ 2R{¾½ATÔ:& 3kä¿~‡;VØ/Q¶L•+@Q [Ä[Í–9ÞóS5ãõ puNÿæXQ¯’E&EN:%&Ewh]°Ý µ~;+_:'þòÚ%ÂW]8A=ÖjĨfr¹MÐ/ÙŸ?Ü•õS•J¾Ú¨ÆOmÉàR&»eÁäu„±œØ9 “ˆážéB±‰ÎÔ™U>¡ŽSmŸ4‡ÖÄ’ò Ԧ̋8âyçÊŸÝr£–*‹OÐEñø8$7'¦b2êÕSŽÞV’| ÃãŸ]ù.&]àÒ7h‹‚lƒ§I)‡ïôÌ{w›û>ÝMc3ÿ(Š«²\ЈðÞ„¸šl/OQgAöÊXh¬¤e!Û2!( â~·hÑ"OXÓ±/Ö(ÞJ+Oì7½»ù?®ðw‡q ¯Ÿ»¢‚akF¦5¹'·¬šÐ>Ô¦²\Á¸Z´Fg¥š•‹Ùìî†sï—‚æÄ†•=JÈf\Ò¦"­º›õù3$ûe \þ0‚'¾+eýF‰¦ZžÅ·ÙÜ€m¢3ÚŠ,#&á–û{gî \½EÑR“ÚÜžÀ€üv–k F›ïóÕ1HPŽ)p#¼ 6–+ÏU]bAãø!môËfŒM¦©U™å¤þ!¯®¦w&B&Ý[‚¤rãwÒ:?e]èÔ q3 ÉóK—$øS9Ÿ ™’—)^8oÍØ± (ëu('î¯Ð‡×- lõtåc Åk.(ßWŸM–dC‡¨I çZÝ¡¬z«‘û9à ñ¤3hv›Ý4m¡ilô0n(ÒtR¿%V¶tY$…`Žn{7­NåwüÈÀ2#î—¡ýoˆh=ªè÷c %§^Ó?èÂÛ‡%)ê‘Ï?­˜ªËçùЉLkMSùœÛÁ›œÎ¨¢ó+h:Çf •)ÕåtWÂ3ÐZÏ5¨À0Í@Èþ_jPçô)=õ±S!>]ް{Á—Ü<ð@§Æöžæ?¦ þ&ÙìÎÐVh;ùé‹ñåMÐÔô/úJ]8–IN\:¼¹ÇR|ÜÅDkÕD½©•SH]¬Ï¶Y¬S”…(>BfÈßNn˜Ï&¦Q ntÏo{ózU7y¨úœäW¯;¼È_¡t”C,»MÌO‡LuæUGG`(xqµV½º‚KaR¼.d^-š‘çrÞÍÔ^XÙë5A%ÿ‹¹"œ(Hs¾*<zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz23.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.781788815 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz23.dat.0000644016037001603700000006661613607166133034714 0ustar00hutter2hutter200000000000000BZh91AY&SY…ãâÄdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà9õ¹ëÀ ˆU"%Q}1H ji­TöÚ 3èÁï¾êˆ¢W{zõ6û•m÷žï{½íö·ßo¾ûzèõE»8›>·kW¶÷>Ûß^ùºÓ-›Y²°ãzªï}ß;Ù½w'מ=]o[žûŸKíªtâ ½Ý.cmYZÛ¸×mµª«ö÷okMXµ©IôÀ‘靖a•D02i„ÔôÂi„É“A i ddÑ£!=i’žÈÑ¡“@d&¦ÔôÑ Ò04ÔÚˆÓF# O&†!‚b0&&¨2© ˜24i£SdÔôdÑ“$ôhÈO £L0L™0M11=MM2žSÒlL 1‘0jzhOQ¦ÊxM4˜ÚhSÓ #PeR&™“4Ѐ#Ó4Ù©šM3@†F&#$ÙžI©½™3M‰†“OL¦ž§“@ÔÔýBdò™©§ˆ6„Í4ÊŸ“F#LMlô& ’‰“d§©úe'¦ôFÉ’z Ú2F˜žˆÓÉ3S'¡¡²OS#ÔÓÔÓl)£'¦ˆÚj4z¦4ÓFj ©äšP£Ò¨õG©£OP=F!“M5M56Šm2LÒz? LSÓiO&˜ši©âi¡“AÓBmSý)<¦žÊ'¤ðõ5=Sô§°©ê{)?&ÒOFƒ ŸªÊzQ±Ob§©í)ãI?TüŠo$›“GµGé<…=&‚)"4˜šžL§“A6§¥<?&ÄÄÊz™Ñù)â2OSÚSzOFS4žI©úѦ§¡¨Å=OIâbz˜ýSõ=Sôh5OÕ<›EÒ©”ީ⟪xÑ¡2RTœxÍ”CÁè¬DÑfC´ŒF Fó P,'ˆÀ؆È?}%ˆÀA±Ä£„™È ƒ v4i]ºÇØã.ç23f)©ïï<]—¡¾Óyn¥œc­y“³õ}ßåTr~µ&„sŽRÃÑ<«/Cª—ed×àÃUx§nèYàpá›ç3K¶œˆØK®>;îò³àÚãÃs~çfŸæ£Nµ™³ãîT7>‰…î#Eƒ0yÃs¯ðE£åê{<|–£Ù»Ž–Á©Wúµ÷ïy8wS³lÇ‘U{ )èg“Ï,¯F4C$Þ7æß¤¶Zm­e.…™££Fí­ý½9Lþɉ•eÛ“(ìý¯·eOmëj`IèÁ{—3ß~³Š¢õ¤œ–B-ü.ß™fÛø¢°—˜ ‹“‚Y¶o•`¸Ø;3Øú©k:-’`+BpF„T Ù“™‚‘¯ Dv#ªf?A@‘ÔÓjL÷XH*ŒÄ%BT)wd ÞNAy"BAA‘y"lÜÄ„Uˆ; ‚M T i:’aœ‚ü"¬˜BPJèCÅ!º… "ªBˆ¨Š £µ…EK8"@—#ß!†â@ À2ð@ü€SìˆV“ !!˜ÒÈdáä)ÁöÀ”‹±1@Yˆ „P˜$ Ï‹0ÁPGïƒLg/ á („e‰0±& TÈ…a1´œaÉ(†Wˆ»SÀ6ŒÞ`¡­+ˆ¾‹fõì_U˜+TJD_,‹4 p (‚ ’ PÊÄ0XÍ’BÌSd@ª¹3 ?1úÙ çÈ @©8èÙHÛ2脳f¤8ÑÇ ÎÙጆˆÀ+Û™а jÈhRf¼A$°y¦è™p,}qƒVÁ‹BñóA#Ä`1ƒ0a‡0÷ì˜K$^T`¾“pÍʱôœc ðF@.H-˜=¦É‹|eǰ" ‚qêûì> 0ôä ·bE'Mb!`6c#+ Dx á cÁf4¿’$/B@.ˆ€97z„€ öØÈCúmr´Yƒ5þàÆ„€åÂByˆ$­€ƒÖPÄ ÉPœMd3¡}Ñ”'—¢QhŸK€‘ ¡T’HU°ˆÌ û^W”`ßßPrP0HUµ ZÇSs&•í &  ;Á ñ¡¾,Š—Ö­ ÐY?½¶@ªkŠÍ0à haðº'2!PàŒì‡–3@Ɇ‰zI §f„ƒb†)³Ui’ ä K¤ âܼ!¡pì­³ öa‘)Ïu²b VÔlÙËA‚¸€ºgh6Èr½ìY=CgØ—1³ÏÛ1 ⠈㠘ö¡öÂG †¨$¢ÁÚ— ÐRÑ ‹ppd@BEAÖü½ˆZ¡¡l\ÈÞ¸°Ó…gÍa a}l_}æIÜ1—C–†…³_ã iLãG³%È<ë“qHfC:„7ÍX÷N™÷Ýw¥Xä¿`èGx3«sÌ%W«jÊE‘É•­A•Ô¨Ê}Õg’®xÖ†Œ‘’i €)qd7¡‰ o€ÉRñ!œd&÷ÐÙ)Áo #8½Ô!çL[¡‘ É6AÆ7Æø­Û°d4’f¥ÌChNäq­q!Ѱi‡õš×L¯^4^…áÔl_Ø‘(Ú±M›tnYœ ä˜\0uç o(pÃRY3œê‹Ñ°=˜]¾Ý0ãh˺ÁÓ…Š_Í Häë Ï:ÃZÈ6O•öžÌ².ÈJN{¸ÝóäS[@mŠÁÔ]•]d>+½ º.U°'„6Ψ¸7 èd˜¡Eõ¯ €x$× dSfÁ±l_ª@óÞÄfY¤Óîý%šö¤9Ž¾Ð‘2aÝ“l×ÒfŽ)Ù±VÁ†ë¢¦}!Þ²v0s/Š›¦‘#"N`cØ#fAϰ3° ‚‚N¦1Õšrgü^Ä¢dCLlŠ“VH˜áè"zÑf ‚0`˜f„kˆÃæ§€* 0ÂZy,êØ†X)£‡w.Áœ/èw¨Tr®IY˜vOÐïŸÛi@t%`Ü:!|‚c™2 dDÑŸl6„„׈XdÆE|$O¼¡L.Áƒù—Âq@0ß[ú ä+Z×]!<ùÚ#=¾ÇSÜ? ¨Võ[Á=ä<&Ø™öøMcÃwmânA¶CCœÁÜ’zd0ÔÝî·÷Lxú_Oñáw^Ý0ùÆ6¯Á A«çâ÷Ï8E¥eݳƺT'¡¸ãh,G>Zg àPCÒ9®‘ q¢8c4Ä „ÁšÍyâfƒ@xÞ`™´aâÆÑ’´a€+‰oô¸P'=44íø˜¹BØh–#XB¼…2Â3QßÊœ7%BEF)‘¼ÑÊNôL&FëÅ#âdȲBE?!äÌ–ê BìÈZá‹rÀT!ÁÀøI€„ü`€ø;™˜>™Ä±‚#(Sö¾fhøãà…sÎdëØZ¡Ì®Z8o£$;˜ãXÂÀxPn wQÚÀøÏC™!Ó8S$yf ‘¥ Ýßd_Œ¨ANH€˜- €ÛàæÜÇx¶¹ $›“^v¡$8!Hª3LàL„»0T!®,\DäÄáîÙ«¬d„0!¼wÌ€f½…ǰ>f¸7³…Ý»‘g޳02/¨`~ Âv d3#¢f ÁÑÆÜN~Zª”Œá¾?ƒ:R{¬X ü²l† ‚¾j¯•få¹£®¢†Gƒ„òg*ê¨þø} H”®/Å—‡:H!³8ãZ6Ã9Þ½;²:Áþ–@Hì‰`l‰äPºBéS ’@³%‡àˆÀa¢ 1»5G‚ÈÅ‘av_‰TÆ$4lÞ”_¼ùãŠ&ÜùC^r¦„6¤<;FÀñ솂 Ùä]øð„ÈÂY§„‡x2ëë¶®EÚŸ×\=cÕˆrÍ'^ú(Y¶Î|wePõOµ6nË´]laá3 $Cl„]hÀdo!Ñ7bVᆑ)™¡ÆŶ8$dÚ¥"¼ÕQ.ä ­Â#†j+p0†{Âos†={ óÛXïGé[¼ˆT~›ÁêÂÙ2§y@á¨Ñ ÁdÍpà8Œ„S„ájžŽÄßqƒ wÅ0<*c¼sï¼çÒàš#¹;Ó>­5Ý€¾u›èBi̸ŸsïfÿHÏ ŸŸÇ ¢µú‹ƒ4¥±:¢aŠ蛦½ ͳªBñ˜:£Ás­‹TfhB«“i6%8Å€2ƒ‹õm /§?o pŽÀÛ9ï¯â ÓÚ. m Ñ7ß¡¦-¹{²4¼ Ÿ‰ZÍ5R ôÅxsM-â©TEÙNÝP ¬_[©ŒRºÎIÄùe¿8„Ð¥ÀLA¨åŠÌÉR‚À`$Hƒ=æ¹Æ@š ÝëÀ€Èÿ[@fq¨XmèGæšAì#—{ÆRqœy‰2a©3m~3zJ£ô Cão m ' äÅ¤Ë ‡:1/¬4Ÿ:Õ êâ‹é1€nÞE £I {X¸!Fü]•ìØ…q4rÍQœ)®C^ÚØÛ4/£Uò錹ZzãL÷¯àl_p×zg’Ñ3%*Îo®¹ÞÖ¡(w¡Q“‘ »@b‡HÈÈ!T!~7åüê+YˆJ-c”¶xŒï”Çéë‰Èo]ÌBf®¡Ñpû³Ó=vðk*óÉ‹l0|ùˆf~óZkœ[Nþë»(ág¡‚­ ÇHäPÂ2Œ×öä²§ã>G’øW’ˆ@_Ç¡#)0-ÐË ézyŽÈgPúj ?6§R.gÊο*˜§¯öî Q00ì ëæ¤lqã˜0Äõi÷¯Ž¿ µ³ÁItK+±Ÿÿ¼(» Ú¦†eÝ}òéÒºrÜt?±A Ò F®Ç ü™¨/åa4/ŸØ&½€ éV8ÖP¿K—Å¢K|ÉßQ5LÄ+¶*v*J±€ªBóq3»°½H/²Yñ|ÆÕ詟 ëÝh±W™Ã\ ðtõAƒ!zk@¶¦tü¹A¶Ÿàß´­e/kqÀ«|*%¸jÞSV_°½K–”pý ì8(,©2L¦H”0G&#Ó`ƒHŠ‘{Eä>Ó©}v­ðØ`éFs<{Ö#—b¬Œg^83vܳGR¯– Á¬4mY!)€ÊAðÛf}„&:ÓFRf:G£ÓÜÌÑ÷ôä7,fîQõ 2ë•“öw¿Eí‰=‹ûÝéb]Ækùì"ïÏ\a¨ýŸ'+¾Ã~«‡Tñÿ›ö÷Y‰­rŒ¬˜bⲘ&±Õ¡Ñlñî©Ñ…ù¼4æ´Ëzâ×Â6žÐòÞ,ˆ äŒ[TÿÔAR@œãJrÀ<ˆ &F¶2­ nVñM÷µcð™ÆÔ¥¬(ÛÏ)TBI©<õ>°ø2¤ ÐÜŽÀË¡…eݜڰÈB€ç­rãXÏ…й¤'3Ç‚ôÉþ²T?Êæ›]œqu•¾?½x†=@y]vÖÅꃆëär÷_6…ls—A¿ð2ºŠ]UÍá1÷_J&ÜkÛÑÔÄñMÐ_Þƒ¢,ß@sÃ;oÏ£¶Dù/ÈùÖeW¢ó*=3zú=5–šj-Èɶxåz<_ÏaÃÖ_±Çô¾nëðìmkU}ÎD`NBäÔöºªˆN~#cÝ[½h+€+!Xü‡¶wÇøHìàØ:f¹Ø«–~°Û@Pp£Ž{&`R/ÎUöœèŸÂâ«NPªw» 2 ÉHú¯ÅºtCXÈÓŽðÆ@i:¶¬z£¦÷XÁ¨ó1‘€²9¡Š»6©¹b„fЮlÑ—.Z®—,Ú¡L²oÈI¸vޤzF#@ù„5\cÿÍJ£y±¤þC:(mŽSv¹^w/(šüÌîœm[³~ol®ýó Zf5åç[^ø!»</ɱøžp*Ú-$9lîÙôNLÖ }ª±uNVVwb[§Í’‰hR2=—àù8ÊçÔ„eô#ìIñÇj\Ë¿æ.pCÝTBåK;z?kæäŽ0¹We ™›<£8‚0E£²BkÆû=†nƒÈd½R£võTÈ\jøc„`Ú45¹qAç8W­§4«þð€ða l#4(ˆ"&„ ‚†ã$ûå0âVûÉøÕëjÔ³DsÀ8.'Mö†Â«F´å·—¢Q:Ftà; vH“4Ø%™³MSÝJ²‚¼zg€¥ÀÝÔ6á3Awª×`ö—ïU~ÒZŒvûuKøX–A0r¨sÆøÏ3³IÍ1ÓXšÃpäÁœn²+›å‚”OÙ]ê«‚ü~rÈ †L-&˜óÍ›–h†ÿL#…B ˘ô6åÃØ¾ÿ{ò¾îÝÀÎB¹ËÃD`\Áªg6äšÆ.8æ–¢B®J”èw}ËHÖ?”wŒÃEøBA©oƒý ä(¢ÈW¾óøSæ¹×hÞ‹ûå¢5ðÐìœVCÑbô̯r>û=êœËÁL|‹â²Qýïá1FÓÖß ñÙ¿áÚžv <˜ô€Ä–#±ÀifõnL?’iÕSöàÊ ºäLAÖW©uðÌàõ÷ŽÖ4@óßÌÙåÞE¹¿wS5èVÏ ç"–žùM0 ²´PÁPâo*ÖiPkÙID[“¿|f 8WCñ45'Å^Î ¼v+ÞòÝ!ù}^y<×:PÌÚ¼{‹NÛ?3¬"Ltf­·pŽmMÌ£íÈú„ˆ¨ìÇ=WýÛ{„tâH2é$l(Ü®s;Í.•ÜÀsÏÞ 9Òh¶vH_áÆÏ~ÌM5Ƴ©×kÇ«• p…¬2`N'+õ2“«[–Û7½_{«ÈuíÑ·Úô ®ÉÐ< hhÉŸÏ›»C¾x¡ 2Š0'ªbŠN9Ïgy72ûŽÜË1 Û3èiÞ€Ö!õlâ/¾í\·ÐùCÛ›_¡RÐ[{–€&·Yà^ÐCiå¹aÐZËHù4jT}[= ¼L>õ€Z÷Îôª››Òæ–#¥õ3µGÔÁ.½Oœßi@îõ€æ IêK`½ÀÖù¶]!ˆƒn‡[Ô*3æ/ÀŽØŸuEyJÏø•Ì¢lN dè«"ÔëÓAéÓlˆ ÷ú5‹ÏÈ’Ó0Ûꩌìt&û§<ß‚~nŒñ©€Ïñyù±7O‡xß@èÌîê Á½ýwC¥h9#¡m³›÷éíûÞSù88«ÜÕ”ç~òOnå¤çnÀi„ ¯$`ÓþjMßìÄ Yqá)¶ÿYÃŽ•kzCÙìmÎ%²,+UM!ß:ŽQ¬EÉk„ŒÒÓÍ®ßv°òšb=èš[î—ñ„¨mØæZÓEÛ¬v 9Å÷/ût”jp¿ûbèÌæøžÓ€)u.Òˇº¥ÿ|ÇT¦©ÇTaÂ0©ÄÎü+QÓ¾û¸Ä¬ÞxÏ-ÔðÐK}qì_óbÁ‰Äp®PyâiNAœÏ60«0bYÌç6õSކõ­«Ñ4ÀB)Ÿ‡Šž!\.·$ æpºv> ã©+,r¦½­B²n}µ¹Ÿl“ßî4x¡C$ † D`Á‚_@&Ÿ¨â rC¼ ‡>dO˜ÓµïÝrÆý÷xä_ÔöD÷:f‹òµÍ!®ê ¢ñE¿@ü4 w 齤côÆî1ÂãEÅC}S,PzöÀ´îwÈQ¾hfAËø6<o•㪞È\Їý°í²õ3]Ss£ÅÞ;!—3T³g@ÜŸ>PÍ¿9Ò»Na¬\ð»#äàdÜoK¡Îì>BùüãÖ€‘w( Û-¯€„`å1:¬1iJ$"-W&¾Ý’¾DþSÏÛøý‘.4™ÚûÝ…Z}K8„›æ1ÍßÔÇ+~ËW£gVÛóÏ&dŒIº¡áau¥Útlàá`øÔ-pŠãq²ab ;™Ò„p€°`6%A¢™š…÷Ù˜¾˜ôô9/’ì‡õ¹ä^©S³‘õ¡˜í {ó›jÝ hŠ7°ÅÝddó†ÆVº·½°¨7Ú/äÌÙ]?"š6Ed '„Ç·Û(ˆ)¢˜(tRŸ±€B9<¸e{œ¬Îz*šQ<ò$ê8(Uí¾øÓw]ôŽ#–€Oǹn‚ö,LêPiëÈ[òÓ¾ V ÔVª³Â ã»x@Œ(Ù€‹ù­Â«çÉZ'‘ w,Køçäx²RkðA ¼7­^]ï*ºVžAÑ×Y?°÷E¢H0ˆª8bý ~'çÎóa$.ÌØãvn®Å´ó '0¨Fã$ !0„s*4àzL}–¼º b~ð«v^VDýr¶Qtç‚Å‹¥²PBpßVi:'¹£Ü©„-óзHºztFœ9é»Oå4¡¨ ø\!>ôø Ih„VÎ?ß‹¥ì”hú%Çjó@¥@i‹Çï þ+uÎzVÖÔu+ž šÀ>&üÈ €ôz/K« ¹ŠªéUPÐÛ£ºÖkh¹6¤ = $U…ß’ÿe~Âøu@œ@?¦%¹¯Y½¥ÛÞ¦_RxzÈ!µ!¬}`IX½åtmµF²n EÆ ú\!TóÕ©`ÿ©B.öëNù'kuõ‰îJ7¬ vñwïb]³tÍöG?Ý.™snTÈã—ðUÄÌÁLßÜ„0OÝD¡ÛJTË Bx¢4aÜ%â@˜ Bgâ³/>g¦›Äµ_.šŒH¬ßÇ%Üa¸>—÷Q¡PÅ =ÝØS¦ ]'3©@t$òYÕý¦£³'G—ø§)ÄTd-×óÏ2^{MÿuÌæ®‡ÝøŒ£‚4¦A!•hL¤ „ èðîùS28>“2@h“ eÊÑíD§nþ2T‘Î+॒EýÂêUP§êe ];4ת¸­¯´ï}© d|Ÿ[ì²j“Iˆ‡j€¾`õþ¬»˜*²×y÷,†Vù’D´jzŸÓ~7ÓH­[!»ÑB nÈ€?Âá[²ù§-[Q¾œZÍɼ‚$×-SSž„´Ëø²Iâµ _ «$‡‰£,{¸TrÁ¾¢ÿž¥ÈRG …s #:ãX½ÕâFû.>+†ÂÉØ;øy˜¹ÂàxúàÊ HÉ\[}NŒoáñ†‘ Ó\8Ëf‹Xí¼Mlïìè÷›îâøøÝþ«ÈÐïz×6úGI)Šf’– ÈÿsÕ|Üÿ¡xÐs¤“ðJIˆä—F࿤Àê+Þð” ü¾ú[Áý©1ÑðÑi©áo“raHE7i ésq¼üØfß]ˆgä;"¨Û ! &ã“ÅyüËѾ±ðtíTüÄ[¦ lM«pQËv²Ç©ø¾gÍ«”Ç.d8do§4QÈ‘#Ï8‰ŠjjRä€íåÇâGö>íå;šgßÀiìÎpªå§ùgXŠî„ ë.‘Ýõµœà áž1PO^ŽbÚý¸3sÑàéíBY÷§tÔ{E|×k•š0¥ª?Têª`QNÄÊ26&Þ hÜU†ù¬[@X£Îô!Òrø…S$„Ð ç*"PžÀÇ1:ÉããvæP‡jÜ€/ÑÌž.× Yìjò^ŒÕJV:îq8t;D>4*÷ZkÁÌ!Y=ZcM Є6~ëfüqnÕ:v̬D †yÝ!ôDwl¨NC–Óyê`+‰Ãµ6mõœ²`öR?>b)𿫦AÒ ‚¹qV+„ÄŽ&ŠUù¹qh˜è·~OvJÑürñ¡W`‡¿0!nÀ‡IØ?Ÿú`‡£ØÅÿœ#³`(«”z'©ÊüZRk¦Ø\ÛîóþµL«cÇê.|ꑜÆ&W4NZ4Ͷº¡£œ2ån£îz»Ú .ÎÊt(xR™ÑýsM%H=«‡M¢;¿ma…)Ãñ¹4C¹X§÷GéÖ.m騧Џ b÷äÊ)kÕ2›Þ&‘ˆ­u¿5  ó¿©µYJüõ3K:.ßÒ`Ð105laØÍi—æc™ Pb¾eT´Ž P:€ì=é½ç!¦=ý?#‰è\­Z¿†o»bí kù¶0¢~k³  *ºfÍÖ$åö½,ià>~T†þ…„ߦ¸ÕH«û帙ž‹£8á¼TÙ`zy¶¿_Þ{vkoݨ—NCx!¸+öܤ·ÌNu$j›TåzŒljé|­÷àTF¬ÐÄ£ CZ®Ýÿ¸·Ýÿ²-m$k S5V¥‰¦ÿ⎸mOXý[óáV6á¸tF`¨âò|dž­…ö7ËâYùÂ’¦ÆM÷#áêåaÝ[®5®V}?+ƒeÆœ¤’ÊKÆ/b½a¡S¡TtÀ¹°6¥¤Ï™ÎÐ(Šwy²΀_ÕE%™NÚVú¡.–Js µÌÒÈHR£ºëëp})’¥Ð®ŸÅ1što‡r3DÑÉå^ã‹y yD Û—mäÿ'U>Â\¬& ëèx¨JvªFÖCÍ0~ؾ-Ÿû—ê|륎ñÙçWµÒb,nSg.kŸV6VÆD:­’zHþ Or¬±[.&Ú¡”T‹æÈR­C5h¾•®-¶-¼dô¨±ìd6”^O0Ã`„ïuæöœî}Òòc¦i+ŽŒÇìôõâÌ2­¬(GâO(BäÁ•¯\®œ¨’‰F`Cˆj‘f÷löÍþ‹I7 ”Uu`Þ~¢ÿвx?Q€ Nd+záº\¸_j‡Ü=bH›2|ʃòãüôo->./‚×ÈÖ)Gûlz°yÁ>DZŽÒF`˜=–@ó¶òÍ ²Kg\²_¿Ž™ºçÏVY4(бŒJ4œv :°¯îæ aøž«š<0Ûi½ê‡ÇBR9í-IpúI-~IA­ÉYLôÑ»iüëEIü<ëIê!4° W]¤KLôÖûöÍÄsàĵgˆ9Ѓt«BcL Ñ¤hà)ƒÛÐÞÁ‡¡J˜Y e®¡ÀÚyù¦¥z¬“&'Úu«÷<ÐŒûŽróÕL*¼óäoR~^hùÒˆ¤®vÞ¾vd³ô9µòÜzª)ƒ.æ¾?AèÅæÂÔÐò>0&Oe×qöJt\®cÁ½mí¤À†œ(¹:ŠÚdNZøLå‚:T(@8wJÈ6é¶yàÔÒGnX‡èé*àzï~oûtnÌ9¯+×F 1%­nŠº»'ÓÐã÷Â#-~Ϭ*)b•ô±í!àL†á Vðyt;`äÙƒ«uÆ#,êú—÷-ÞzÔxw|£Q5$‘Ö‹à q9k+úÄ€ÉPø§éÙàð³Iül"¿²¬&iÙ–raix”kºÓìž[oø åÞ?c§kááo>þÏ’µ.¹1é–C\,ÝË ×U²=¯‹LçùÁÈ&CÎROM* »àÐŒhŒÁ\^–Mx£åå¦a=¿ÓÁÏj1^Òw½þÌN ¤AÍÿ¶†ißßîx«®õä~Ÿ5GŒAÒ©†‡ÕrìU!vifb£ƒ€ø]˜.4@_y¸%8¢ÊÏP  8Œ¡ãp¡ò”‡¼ØQÚ‚ˆ‡$ƒÙÝþ•çOa£{ëžús×ñzyú”-FãC¢§9>Cº£ªËÉCîˆm•àQ¯Hñl²«=î¸ÕŽd¤§rëµ~öNƒŸø¾MgŸö=ŽÚ“°Âe 88²,kL çW›Šß529Û%vnæ–¡Î8ÆBˆ63bÆà€¤Rq×€oMqˆ zLÁÀJDŒÔÅ6YB.'ú|A ¤Ëæ>Z½Ä•¢³l]„“¦u“®Ô>Ào¼{óá~ü@ÜìðDwÀ Þ2rìÜe@ƒä%ÿ„}üv0:²8¨ÿ:<€´†^«»ÈAÛÔXƒIN„û‡]8>»ëÊÁ2¸r3þðx(V›t¹I1µ*su  Nˆ#a³TEÚSS±žh”Éfn¦d€kÁDFLpcŸbÁßK÷-nAæèܰê9ÚZßžÛµó;Yüò¶~…¡+‘Wë'PÚLid.šÒ&¤Þ«tY• Wh&mC¡Ü< ÀJ­|ƒ_Ä(°½Û9ˆƒÉ§Q¬á_K® qÅ·Éøèë3¬ ¸ÏÙ?•9Åþâ¸ó—†òm­5@á©Ô¯W=‡£±çƒGQ@áŸoô4£ÐºÝÀAk8²Ë*ƒÀ]³®Ì-Õg»¿¸Ü¬Æ`>[ñnB"— ÃÜ2’€ÑƒaO„øs¹ØjÅ©“Ö¾þ}oo}¦Íï¤yz{NsÙªü©ïº ò<é€}´Úîég’‹rÄy á$6|d _YN7 Nä™ÝŠÊÒWÊ2Û†˜…0ÒùΉÐC`˜bE=¸Üå&;.£7ôRàl[L–G%ä߃ÎÿjðéXã’`˜Z'(ùÈJÙ² ãX4¹vø6—y†æ÷4ŠEY®„à—c h8>ß\p7|ÐuD@õ.°ƒ½æ×pfá’˜ç¸Õ%+ê“aÐúšÛäXUŠÚ;è:ú©,ÈÂU§‰î^éxHÁvàP©Ô€T¼ôÎNûx*$v€ëPýò<Èÿ8ÆížÖòØß€bv;Wùnu3ŒŸ|«>šžI“½°DÞðb<@r‡Á3ôHE+é’xP˰Åg˜ñÿxИmîÿIÿ+#’NqÍèò]¹?›­eOõãmÂ×â $)šäHï+*ûµ~fp*wÁD$³=M…q×Õ k•ŽßªÝ} í‹¿)û€ÓJ‘õº´ëkÔ.ËGCŸ¿ÔDÏGÉ÷´|Ý•·ƒZ›î¦¶øÍ¼Ù ¢Õ†?S“Sà3à@'ªºãÏÁ¿©@°=Ù'HÙ§ê—5•vËM碛OÜÛC#áh,zàHWË@kiý¸\$þ .mµ^ê"”¹k} ‚µw}úX éÉIû€§«f–ø²œmÅ^YTU+èÊÜ~Xåíç×°òááPîº-æÃã¯ÉA¾!8 ƒüišR«n1%{T ¹<^ù6H)¥wfµ¦”¥Î–Æ#… Eôéj•‘‚;¤"4^1~[<Ø!ì¦Csö¢q óè‰c²á¸´ýÐÀó´[é°ßá¬bÜ#^õ÷=„BÀ45C‡€¢£†¤3®Æ„'žÚOã0ÙGÀ“I5²ÉÞ22¨uêä¸ùCaõKvvˆòuj*ì:ÑS_¤°†:å~iSY>HÇÊkaŠ(Ž*qy¥ÃD ÓX¾ F3/]ÃÉ>QÚ£™sÖ`'†„åÅcz¹L>³·V»& ½Ü¥Æ}‡ž~ÊýbÏ[ÃçeB¢TÊ~é%-Ä;ø¢ÁªÔú ø‚[+CõÀiúb‡ëÃd¿RªNß&’¤¨¢ùò¨º‹L±S¿%ŸëW·µ9±º^*3ò_=ü-ç•°ùòùP©®¥X°†ß‹ƒn˜ãê£rtœ&ì¿Oz—ŽÚr@Ì5:X¦æ5œé]þÍìó…‹ÏIJØqg~u X0SNÀIÒÿ˜ä·ýþ‡y4ñ³Yž^ªk‘,Ã%õ+ÃRì ì¸Ü`.à>±ÿŽO`ÃÁš|Ÿ¾k`”Dè?r¦"·™Íwã‹ËZXÓˆ`¨Õ‘ B囩ƒ5Ó—Ü{ïóܱÜÝÜ›íÇã]ù”ökA`ÀPëW ®úhåÄwáïYÜp’_ ¼ôÇxÐ1ËÌÕÜ@2§…°ÛžÙJgk»Ž° ¦ϼØü8^ÆÁÓïiUÅnG ËêHò™6Pö›LÞמåÌÎÚñ\+üw¥ƒ®Äd/<%×ížý’Þïgp¥ë#xnÓxíh­¬á#Ó4•@TÞ#\D#2 <"€q8p{72ÔUuw'zùáÀÕ ® àšcÛ!z·°~góm ÓKgŽå6'«˜i‡Ë`ýß¡åâΜìdµù}Þ*ÅeÄè ‚QÓ6µ N«T5ÈågÓZÍœÀJ)‡¬¾2Z­«7îŒ ‚–ŽëG_¥ú_:ã¾gL§/›koê0™ ‹ú!~–¦·/EïèŸÕ§EÞXÌÛ!ì¤xvk¤ <~&eÏTvÀ_wµ­Ìî'gÜ%D¥9KŠs:å¨j_k¢&á0í ¾å€¯i4ï€k‚Âo®á2³KŸQµbötä}ÁéçÓÈUÎâR@JºJªOb—v4pþ³ž=nŽ7fÀ-¥ßô6 ÷5Ú­ÇþÇšŠÁôk<ÆÓ0¼°›Vªæ/S†ûÖ¯½œ†Øÿ.H³O‰ìÇ[;Ï6ênÃ΄›özðäWĉHÔå,ˆ=•ggíö\@¸èfÝ·«?_ªtîZ~t³AÔÿ+v®Ð­ˆ=[iç¦üÆ:Ĭ*ŸT?=§sþ¦æKÍǹ³mörZè\?›š%@[ ê ÙêÌTûÐo½[N0ë€çª²ÍÂ|çå+žÒ¥e£Ë.á3ñܵnBº†ý¦Sp“ÁïÅ>3½ 3|ÍÝ)ù 3C¬ŠôÌ Ú«kòÏú‚î[X?ÙVN0/vYº0ÿÙýõ´ÎÖÔÝç{oz!>‚'9ÜÏwë¶y9Ã^\_œQ0;W.Ös«Ôb™j²HÀx0 ³B9ÌÍj(ú…¥ê„šÙÐ=íÿñ ˜–›t9°ÆØtQuèï³x”áÁÐ[Ñs'8bì{M¯í»Í/WéÔ!l.³²_æˆF7Š…ññê[À–q¾¿ ô·ü÷†JC@¨W/Ø&0_¾¹¹žÞZ/¤ôe¢“¤WâäHMK®8CZÉÊt,Ÿ5Ç>æûJ`èŒù¹ ‘˜ý]«{‹Iìñêi2ÏÌý3¾|“‰M:ÚˆøŠ“Wuq6ÅÍøÖ—¹Ëû`2U'‚¥FËÓ…F•ø›DrÖfKeo´¥æ»ÙîˆOšÎl½M$‚üËm¿yV†ŒðÐa /)*Ãhöùý[®³.±¡’j†ÕOžsjfáé:¯‰§õTîö-Û0¢»¥wìÙD‰òÿ¾áĹgÖ®æoèÞÕ˜ùþ0Ìôò+ŒwŸòª‡µHh/]òÕ:-;ŸÐÐÞhtÜñCBéݘ§í4¥D¹Ñ¨½NÓ±ä.Ñl:“P¥4á*e€õ"0ýO]þ½(´ë‘ˆé=Zƒvé¿bça§<.ŽÒ~Ò7Ú­á;rÃë±ý/4_Y–"’ –ϰ WîRÔ®{xüÇ£—Ž„QÑ#§ûh»²?DÃê¬ôNø×ŽÁF«#ĸ¥:¦¢mJ¥jÏ9Ùí] Îò~¢óO¨·ýZ{øyŽEž6"ÂàƒbÜ÷µ‰„"ÏMTœÏú¼¼Ì÷È&ŰEnc–×b¿ ‚6·ƒZÂÁÝK”Jàƒc×ßAÙ?n6˪].31ë´ú¾¾w"?ï¿ê›]‚c¬÷Ý`ã¬ÒœûØSHMÝËFú˜&d¿BÕÖ£­?òÕØÄ•žŠäCÅþÌ”°jmœ”ölêî–ç¶Y2^¸l|¸&W"´½É¦ð8Š*Ë}EcÆHŒ‚´ˆ¹lMéIà±nêÖÎKçÁkìº –˜Üv¦sO 8 é9üŸu= xc?ŽÛ?ùcj`)åuþœnÕ³ªßÈa¥ÇÀÅ:,¿t#^ Þª~6*|vÀS<Îh ½€™Ï£˰Ä›T”1ýÉ”Yo,=Òuòø­¿º¢îÓr?Z P.<5¶ú¼I¤;#Åã:¸Ð&³ññ=Ð`¶WU<êXsꥋ­Úù’¾îô…î³Cœ£® ]ípWÔ½ÏÕX×¶ù´¸xÓSp5ñ—É0°/*Ûï>ŠÙ×R\F•⹈¸³õïk«l×ã§¶R)±ÑgS}‡ïU šªrßÀý’óbY° ²õaFñ–òåI¹)JB¡%Å{$Â’Õ<­»ß5EA÷2|{ˆNìÆRÞ:R¶’²MrY/5e™ñå—/ýF °è7`•„ä_ËQ©a9D§n•n_¿îÃE¿÷[tQ’TÕ4j±JÙ:î³$ééß¶ÿ*æèw‘ýM¢—|ºýõ-ÖTñÓ¼”GÛüÉN?Õutýõ×@_’^b…â¥`ºðð»D†ÛakEò¬—fßMŸkV+¬šg]lÀ=~ñ÷Í :i§ÌÒl-‰¢à9ºm»ûPù•~îGß; \+øè§ý–„S¨úm^$nŒ/SîýÛø¿9jT>OòJ;¨Ëþµ, ÔEpþÖ·’CVxtqÖ,&ý:•o·cƒ³âHgu OFëvf~ø§zK~ Á½Ø¢ÔD íd‹µ×ï=ñš·ÿ¢Ê'Ì‚•ÈšöËV2ÇL5záMQ¸ÏQ=Gr€:û˜<Yö>¶éL‰šúgígròë5ƒ«S~÷VXOKõ~3(LùÏ@g‡â ® ‹â¸J>õ4 Z©°dß5,¿¥6ã¯ï¨‚$ÝJ¤SB.sZ>'ßáô«–$&i=ÖÿT”‡3AÜT?n³ ,J6øË|Þ#êO^³IÙGOm-©ÏdE âVVÎ[å8ÿÂÑ­êµþ Uec‘v<þûãM¾ÎæµÖB ^u÷(g4â(È×´ãÌn§œ–2œÖLä½4§0¦¹Yµ#Øgò¼ªÚw˜*¼½$mòbÕv„ý¹¬nÀ£I9Þ¬BŠàÿ©EoÒÍ«g‡âÉNåÚ Ò—U‚ÁG¡7Ç|£ÂÈM†W€ö­~d•!±ÄlÍ4V`ÍøBFÃO4[,øÏ/BzY[ºÃhxú w€¤ mÇ—ùCéyQ•¹µDå&8ÄÏø âÖüô¸íø“ŽE×î­õ(±‘ó] |ä:„æ+éþÐÆ$e#?ƒ³ïüÜ@¬œFX}L¯P‡Ê¢úÁ±›ÉWL¼‰R©YY×åòûYÞKS;*œaŇ›þ ù¸Šø,WHëþßÚ(H/ãò`â]ä²Á^y2;T[åtª¯I;+?½”àr"öxªWò¹FÑ IÅ~ädÜg»\ÿÒ?|ýÃü±_¢ÜÊåªó=IHŒ5ðî|À¸`â¦iÀãö´uy.ùïsè¨\øÂIÿwM /æ¼"ÀÜ¥öríW'2 67’ }ò±žXeNi‹L;yÍ ŽÎ½Ÿ\e—]s‹öu\6½Ïß<@E Z)MÖÖ)Ðiw›šô‘¼°‚ýØÈbÉâÏgêµÿefS§ƒs=Ä÷üahEdS¸kïË]ô¦$ÿÅP:þ8~{ëï§KLãúŒe¢©y$<|/n|Bõyl¹D]ÈÆÇCí¸ñíìÏ#o²[æm4¼—Še½-ã…µ,åºÜÝ2¯ÜÇ*²#(N´¡¥4êv¤ ÛÉwÈÜ)k.š\}n”ìføù.ßðv ù vŽ3¸Û°©J| 楣‡aæ1š{ÖY>«•õ¬†79ñ/ð¹í$½]4¦¾n»Ûªo±ÿ¬wqX2:´—7Ýþÿ X{ò{ ¦b Áýùß—¦Æk›IŒ¿“Û!¤Š²žPÒÔŒ•êh+º)3E'òJ¤‡ã]sW®~*ÇLggšÈç¬+äR†±ö`—°!Çûu’¹òv9Ä3hp˜WŒa ?Ds>ÑõŽ ës;«?gOê}Z±Ï=Eá’º±_ g¶ÖõÔÿ¦ÆbÙ¥PÓoÌñÞAî˜Íð†ÜÏšW @…MŸ¥Ûâij:ÝØ'ÇB´Å¹NødW…cïï<̃c²³¼uG V¨ö&=£•dïœE_¤ƒÞÍ‚›è¬Ü&-4,©d ´åªP%в1㣴7†úVÉ“ƒð¯©m»ª»N¸°¦ìv2õp'“ß7é7§N EÒ´@Р =()ÞûÉäVH¹KÌÙ¥±ËUNi¯d¸Í»ž4<|ó7Á¼;×Iå R„6_8z{C±ìDn±½ÿ8·(爘GÏ£ÌÓvã.‡Ïaq_©áã*°xÖÜI¨á·pªàrfmßvm€ò~ F²ÿ‹²ÈÄë['i?¶Lç‘Ë’½CýÛ_&VRòÊôí:Týtrƒhرé¡Ló<Óñڽ½éèÿôÅÃ¿Ž¢gÝÚýF@¦àI;ØêÄ1œ“(M³s²ìaW>ùK3®Š)çW°¨âk½§Q-[óÙý¿,å³ÿ¥Õ êÆøìÏ‡Ž’‡|õQ[)Rص€¥uíu·\–o½e~€ý&-áÅ…²Ä€)Uh¥Á½wÉÑ”^R¿»Õ7ØÍÇvtówmòkþ·°¡rÓ˜ªð ‹«ÿz_?ÓÈÐEH£ñ«Á—`;HÆ^ÿ¤u&’#Éhý¿qýÔ ¦.ºD·E×~ÆâÏ8Õ#˜pÅ…›MZÄ\¶Pw:rzËf]‹gšc.'Ï:­t8ô%z›oî§š@Ð âqɆ^¥Î¤È·6vë%yY¸,YÔÁÅFMÓ÷,­Qà½ó0ãaÕYèÔç/¶úIKE‹à¢þuÕ'qI÷Ä!ÅØêf£<»ã~õÌØÆ‘sÃ/–Þ`e<]œ.— LÅmºž_j·™E€#Ö³ÁC¹L{çÍ—ªN.FßNáà[j®Ã“ÝX3S=t±oY„G^‡°þGÖ­íÞ@}áz}Ðw@µq¡œ "âUêš6ÒÁ¼Zªã½—v„Ê<ʰ;`žŸ*$® å}lφŽUtvÕ=¡ÜÙbÚà NÑž—c›%-ú’[ h¦$V9ªo¢àhËóƒÉ˜±{@æ>éGŸ×º“Ci”v7—ª¸í±ˆò©-/—‘š½—óRôûÜG, {/ÑnÁš¥™vü¸P¸ ýkÉÈ /d}Ì6Y‚.ü7¤‘zƒÕi cѨÝÌ–sëý²c-ÖsáœM~2«K{mîñդ̙d5Ñ' ]'\W2ôÇEŽŽ W¢vjÔ߸‰vÞZÑÁ‹~nzÐ6b ˆ}ž? uš‘JV5ًÔ/[b‚ g'/ÕYå6òu¦o†üؘõäâ±·l-¤ÃwSÌÙr™à<Ðöï4¾@¦Tô³¼tøïë·Oê•i66vój+Ó]Õ.«ª‹Iy¸êD©ä®\ÿ¬¿Š3áËmƒ ï`Ù1»Pm$0Ò|]Z‡¯K ]‹—£‹àÖ1,m zØ1ñNõT¨Oþ±ëß³Ì*$q¥ŽEõ\ÌΘî¹ú«§­ðÛ¨eè²8ÖÈ?`ïóûq|·;¾[E‘|Óí¤mÈõ ÿñϲ#wÕ/ä±ËjÜvuÓüƒì”w„£‰¿ÑØífœº/ù„{_ƒ*4ô+EÀëiøÀÔîª>8|ŠTÜ®áà ¿ºŸ˜ “ºÉŒvʻ尤t}/ýøt[­~LÛ{Éc²–äG*'²h¿v²þc³ôÍ.ðï¡ cé÷ê>Þ>›LOÑÇÊÆÏÊ'iª¸Ê¾šueþlt_2áš¾R•¤ ê×g›ùböÞ!e˜sðÊ龫YS’ÓåÛJØë¶Sþ\Ÿõ¡Âjs¨ã_®ôÑzب¥F™ŽmwIM, Pšã\]ÏRSó* ³£fÄñ"ªÃ0}ê5©ÿt™%åv#±Vœ”{¬`óJë-4º$€j›x f€õH·VïIjRW+K|#É»«ºÿÉÍySóÈ@©J¬òÝÜ k‰LÛó"¯4ë-w2ü¬oƒ2«Xï‚K1·ªí¼¯ž¤Pâ6*õù5ø²Ãî#¹úq=n¬í-(±¢§ÐåƒÅ}Èøé+|9„{yæñ$¹á?àqm›/óÇ iÊÆã•ä*½[_".›Á¤úgã%°ÿ¶S•c=ìñÃㆷJ¢œù𖙍üÄ–Óqì¦|áW»}u]çøDêÌ1L?†@„¯Ë3b‚ìò£Êq“ë!ÊFÉe˜¼òYn ;÷›ì6-N†CÁÃŒƒ¼ŒnćÿGí÷Ê?oUyã7ùV¦ªÂˆ€^yW8´ÏF¢.4׿ÐoQŒþ åNü÷Ü rÎùOÚæôåBüxEº4yô}齆51sæ²;Uã÷ƒÙ»‚ÕÓÊ5—ë…ßû^)ß–Çm—‚ÀTM)Ø.·ò?C[¬ÖÓ~‡øÏEËãtiPOˆÏw·ò? #Lµù-QÿnÆýy*œÿ¨ü¬SïÝ~*¯(NíFI$n(¾_-Ÿµç_BòûYöiͰ €A1*t ·f¬éiÔïZPÐSP¬f(°ú56K/^^vÏþ¡Ý…f4’¸@Pø-ì÷ÇËz 2ÔÑ Ã„–@f¤¬hòHI½i?©„$ÔçCÇmîF©™ÜzÂàt~Õìø "jlD»µÁj†¸qìëËPmmîæÄà[¡»êû.»Æü*WÀ‰ A–Ìû, ¸1†…lXd=»ÈåF\°À9æt)3 "€‚"Î0‚Ìá÷ R~†L+ 4F˜i²h( † Iˆ!˜# # ƒ12ÃÚ°A …ƨS *—Õ ¢Âžˆ É¨¢"ÈB¸€‚Ͱ€ªŒˆL@ W0©3 ª! „DB@Òd¡} ( N@«vYΊóÊ=õ9ðSÈO{ZHêß„DG+=#yæahŸÃ„»-.küß½Ë¥ÄØOøóÝøtì´‡/$ç8šÉ…Ø]•Þр{«rz a Éb9pÏœÀ€€º@L(ÏæÃ-D©êÿp#Ä£rìßRíºÍ{Tþý‹\üø§ò9÷Ÿ71±‚æ¹òg1Wê"w¾2å_sñNa83¥,£œÁŒM@àâeÒŽ@9ŸòmV]•wµCÕ¥ƒaÃáÔûSå„Ea”ëSJ÷üÕ™16*ŒÈDÖÐ!U# šÒÿ1AY&SYj­å0·Œÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿ;ràÑmÝ×|ß>ùï{w;mõÛµÕÜ«wnͧŸo·]m¾íEdç}öû{«½ãvǶëmÕwßuÞéZ»íÏ»xŸZù±Ç;^õöðUI“ ²›DÓÓLhš <£4šj~Šdôɦ ‰d14§êzžŒ‘é©„Ó'¦¦52a*{SÄ4Ó?oSÑ5¦›/eà ˜¯€ítSJn°øâ)’YØJ¯<<òÙhYxžæŸ7KìÛ¼<Ñö<œË©hw—)ùU.Nµ@º¿M+Æl,_\¯ÂÅtÕ¶a“<­øN24§ãÝàýÓû(ÄK ©±‹(É^`*5úR¾”Uíþg9ë¾¾gýxºÚÜLÎÏøQcÂ—Ó ÁhÓ‰’<c±i‚’ÒÚ/ºSÜ \µ‰¯NO¹Öú[ØÌÊgmlΞ¬ßv0Óü ÞÇìÁL@yBx„ pG.âIàGœ6!’Bã!$$ ~ø·Ã7€ ‚L¦ 8C‰€FB‚7d œà˜x08 *Q#â¤F0NÇÂ~:¡Ñ:&¢Á?ã¢HfN”£rvøDÀM'Q Æ€cðk|¤ã§Ùk{\NOÓx³Së'Kñ~ (œ0Ì,„%  òZ.Ç_Yßñ­$”'ÕpÚf³Æëý½¸˜BO­]SÛ»Eš¡0‡k‹|KAÅ|_¡Ü.ø¸¾¦ž«÷› cÇRY¾¼”3ú¯>󼊴œbÂ>†…©Þy;<ÏŸékì„­3€5ªfŽ–n$Çð©´*£í8 € Q-ÿƒe³˜²Ù]Ã0føúKج†;w#oDp–³?qŸs^#üSÒ"Á_”‚`•಄vK-VhA¾ í‘çmÐʳ’ÀÞÎeûÖÀï` ŸâËÏÏ]Ÿ{ðÞ»Ê=VêK=W7õÏñ6û µö8mâÑâ³¹iž¤#ÑϳÈéñ^b°éÒÌIp‹À’D AYMcÑû:Ÿ“XằÓv+ØÂ2k6 RW®ÃèkA@¡Åm0 çŽ~‹äNw)BÙô1íÂâ Eæ‰Ö­j{—až»†tÓ?µ×ŸϘˀ {7éMÔHZïWÿåK‡çD[feœ³Øþ±î‹Å/¿—kSÌäf_Õb{x(ÿó_1Qúò…¥d ÂLÈfNÉ&g$#ñ` Æve·øOFßژâxö6Ý,GNMöÙÍŽ?ëÄn´4°Äº+>_׆¿ðó/f£èÓà¢M¸žDVžSE?-s¾>ÉßÉRYwm)Û†ÝØt¨†ù—<•¾¼o©œY` 0Àœ·áõéF›"ËêU ]Øžàxkžâò¬$kÆ.–Ô^›®©³ÚµIÇS>yŸé»áN]—·ÖfhÕ¼à”O¶¡Ÿ™døTmݽ}!a«4ÏÚ>Õ`¹=pñĽ²w|› cN-ƒ¤¡¹ŒÒ òzÖø&‡t7);½/õ¤Æ w†j]ö¨f•Ø·ßÓ… è!–»})Ùëz¨¶äiÙm€C‚Çi»;~Sô¤»“ý=¥µã©»¦’/ s²Df8Ž˜ŽHM·JŸã›LOÀªŸ¦kÅ+Ý%Ü’_,Þ&Ê›ƒ t6l×åmWåc^‚uh6žAÁè ¦ÿ” ÌN+u:I)6.§ ®ýÛ® ‘¬0¨:`<51ƒÈXÛuCt'ðОJ§Ha(„KxÃ{°âN¿ÜüTpé_ÎŽ?]×;8‚v Ì€Íݰ¿.tm²‹-tM}ëúÁÚ9@õƒ¡š¼[j[!+oѽÚ}Î÷Õ#¯x‰Ù^_[E·²ÏDÂÅ 0²“@6bçh¿ÀÊ`½:ëEHCRÏeìÌòÒ¡üÞ}ìë«FÖ§Ì!µ/ÓL0èÀÑRjÁÙ^ì;Þ¾1˜¾, Žé^ö˜ñõ.KI'E²áQnb?zꎶHî¢/×mûœ†[.•~ŽÈR¬Ù}èJÕj!äoýù•ùL¦·JS'2Š0§ ý»ØÓ‘À€HC|£ië«ÜþøÑ½Ù¹`½[8s¾KµÍO©µ§¦½Ÿ\5)ôžn6}—4K‘Æ»f‚N±.ž TÜ÷;ÏŽ?!êì‡É’Å„5] ®C‡töƒ(5N„ÙN:¼Æ›e@•×=j†:|"*¦s¥1_Ã&÷)Vï:YÁâÇŸ˜Ñm*p›â!GyWÔ‡y1õÄú#tÚxc$ZÒÕ€ ;T; =£3X%'¸·m×oŠèZG:Ћï ]‰UR’£=E*7u!ÛQ%m¤¾œ.%ÿ§ærCìw–ò¯°ý&LsÖš&À„–ïaì! AÎ@’ ‡es J&¸"WÍ'1ÙÌxi·$´t„Y&£yq0‚.9î ‚³ nÄ/âfÓ;Ù,ùr[Û7IÞâñešÏ¡4ﳊ1Ô—*?µ{øûiŸ…¯õ Ü9!iÚ%Aª=ë>©´ÈRWs5~ƒ~º@°d÷*”›âá‹ÄÒ\µ°€Õï¬A~–ƒøüDÓàáq¬µ_Ì~ýÌ×${ßl™× ßÝé Ò븪ïv€…!4 7,;ÉCôìLs„KøïŽJ·éÄ Ó«¼#y-àö´å{7[Qw:47Ýól;VTc1ðd Íjxõáù|Í0èwÃÁ“~©\ÌËQ.òs̼8‰gMäT –ŸˆkFÏöðÉ2ƒÓ,G—(TÀ %à:¢ï‘äÖfGÖ$ª*ÛVÂyR†•à†to/vCÖtÅËÑa@ÈÓdŽK@2¢XwΚ*®ñµSlP3Œyì BÝÁK¯W}FŽÞ‹½ò“ìÓ ³ç×À³š(BD_VÚu˜™Ñ·‚äyxyÙ¾&Áå­÷[ÞïÊ CÙ‡‘·Îgפé? ÇôŸ¦'æ'šÂä^$螸WYQå†'Ý+š¨¢Òž}…båú$Á¥0VHžg±ÅiYÑn"ݾhÝè˜ Y³Ÿ§›ùÅÀòUe+±ž­„ÈÊä»jé¾ ·~ƒø Åèo—3ïÊ`4B‘Š˜ލX&`ÿgüïq}G„Ÿl-ë™StÕíp‘ñBR_¶3ÆZ¾”ÍúAs~dTùÙ;Q”×µŸý“ïç $¯W•[TËЭ‰Ã'%’‰pÔ*p¹ó&k]¼×H<¦ÕÉ@i{ Šcﺎã´ÛQÞLk®µØ¦·èÀ_¶†hٸǻÉǤÔl_MÃËÁ\Žqox<¦ºñ=ŽÙU?uIœ›ÀFËu›¾{Ÿä¹ï1 ¼æÏï«™ð†P %ñÖóPB3T5‘"að­z Bï·Z÷邞B=Q©F‡á=qç‚å9­$ïk÷v£ýFÃC»Z)Ä*'cúàäô·°ïòå·‚ß4+^ ï%¥Ûç³êu[ÔšKÅÞ)…ISK¨·)*:|€9“iZÚ‹PÊ~R½°Oã!Ã×ô¯åï¬ð·Oû‚»â/®BELí(ÉŸ‡ŸÏÊ‹®Á„aèiç—6áð;‚m /þ}£ÂnÇ7Õ꿜¥CiÎß‚8 Ã6ä]2H…>c£¢\œ÷±rŒ“äY á÷S<°‘­» ñ4#C†§ª,¬(jÆ_Žªn8åÛߊ¯$šUÂ|oý¹Þ]_wŒÆ_•Ìhasþh%5Þ#”Cg˜aGÇï]ûÿŸ›¦QÞòžF ÈžnO_|Öü-K‡²RŸÚ©DéZ˜6˜%Û|ÜÍCsQ‚Þ{CÙ$²(W?‘dAfò“?ðÏO"yr’ÙK€Ü¯)Z»%âqê,Ê%ÎÓÝó@›· Ê@8fi댯OÊF– 0ï) ¸ØÕ¼~]û„îùÛúÇïe°µ-våÄ<¥o’)aƒód1ºÝ2N•l/bï‘hx\îr™–Ç?ñ ÝÖÞH­ºÄÂâwqãšiÍ;ó-rK7­(>d·¨wu±›a¼'TT!†Páì$yÂvž‘÷}†¦jM•Å´Š©WÁM,/IY{Ó—iÿ*ì'í»oü¨G¿Ø]‰n*¢òyjÜÜ×ÓË ñ—N,÷%˜ä•taÚ—j ·»—¹7¦š‘TW$¹ç<ò?¥ë…]ÁkY¨Tð‹£­³©c•Pu_³¾:ë›ïá£rG'vïóÄaµ}œ+‰á•uÊatàk´låøs#¸øµY æ*ôpÓœ²¡“ŸÈwrÏëï\nóêi¼.£¸?¢ÎQ~ãmS“î¹›ïªMß2ù%¦5äˆbETóÒ#¦Ú«„ ÁLм¨*æÙªOÁFžÉŽZ¢žêÉÐôêÜ`à¨p'ã8±t=½©ßeÈ+òýn Î¯¤¨Ò)X½EÌ>Y‡Û49ª7íáVºå$ïߤÁöçžcG€ðèn™M>‡àÀ†+oÆB“ó?3zÁ0€„Ίê¨ ¡gj÷«¨‹=@²Â¦¡c]€y~ÔÐ÷d}Q½0~ ëeSÉ•Hó£ïìÊɆaƒD¬ÐÒ«·Gò£´²ØÍ³TýØléºU`ÕjO+|£îr!¤ûéÌx³f(ìYHb9Þ}'’ÁalûBdÎÖ"E¹«ª‹Úé|ÞLä†PL¡úwº´ <À+ áúQ¶{ëk¼—ß ¦¤#*Ñùh¿bb¡ …ØWÐöë|=Oµ !õ_(©²üŸšèjâõùýç/Ë’-@0ÁŸGV²•Êè^㢾AÖɱ[ …éO=¥p³Z›]@ ÙÕˆÆËáj 8G‰=òãü¶ýœÜò(­<»,lÕ.¥çC.öfO[¢~˜–HEhn,¿Éø)—ùñÉ=‚Dz±8q2üâšSgγÚP€ŽcÛóù‰V[Í< Äôsƒ<63AÜÎw½žýëKËõú}€Ê¦¬e?:Ñø‡:'_cŸ@ »¥åË=ÎÕó®|˜ºmþFc/ìïpզ«+ްþÜq9úRD ÌU²’z1Fâð5W¾øfÌŠˆP`Y§ð²$è­CVÞÙ.[¹w¦dÚ0ç ÊújÓìB°¯“!?AÓd¨ÿsXgT8ãD(zbsɃàãõ“÷ìÿÕ¶ú,ø®ÿnfÖ|>¹~ œ"zbO ®mO¿‹’yJWÖë†Û¡=k'ò=UÐÛ -mvò-Ü uÂøâ®léÖžéR-7\JRp~ãïó¿¹(t¿Ès.J±>ë]«q­ÉÃÞ±³O`±Ú»d¥]âåK!ËÏzuÛqTì=ŽÆ;aYöwmæ¹ÜË­ºœ¯ç•ãóóT”4²_“7™‘Øw~É_ËÙ€Ípa9·0µŠyƒ¡ºVJWÆÃTî¥õžˆä@Ôâ’0÷ƒUf=€˜¬ŠÃSlcñåUаãݶÀ%ÃÅuOúŠºæQýÖLÐ"©X®ˆnz¼÷˜9I÷sjw?vŠšQˆåi°÷E¢ñ9'‘zLºMH8Kÿsc÷`I˜!ð®³Jú rð; f˜yðóŠzÝØÓ¼2@ç“òŒ'¨?kLï‡l›Œ¹ƒ~pÈØÍ3çN¹žW!{¦Pz9قÛâƒ%ÒWS Ø!ë½ë=TÕ?ÅÍãå°8ùþÆk Ãú0§ÝøŸ9AaÙ߆AÙ|¬—ËGMuÙü“Q›‰¿ó=@Ãw‡¬€QãÞ‘»¿—žõ4?n†ïþšÙzØIí5t'3F‡@…ÈR‹×ܤ:ù‚Ž#m†¥vqÑœV· ž¸Õr¾ÒY ™ÇU}2¾h6|ìEgÜÆ"!Ì‹ae{>4ìfqk¾ožw ŽÿÌ;zÆùh/AÃ%c)xNµÔ­»ˆÍró¾oÕ^Ö5]s™?j§m˜RŸÊ‹åÚ•¬Ôèˆ6]y`œçý®J¼ZX´Œb c¼m.$ž’~Š+Á¹´Iû³ö±U2÷4å ‹Bq*¸+:–qzsËgcxš„ÃQy®D«Ñ”lÖׯYc%“ îÛrëêqf¶ÍBHDt3[âv]ò²¨3T³ìøYq«ÔéùPÄ¥öî׿̌U{W4iu°¨<檷®£Ú¬»:Ëù©¸l«õ=?Ýëø¿„Y’’qšÏz3OÏä|œ?ßÄ(Ëý0¾Ì†Øsž,ÃнɄT7$ ²ñ€ÎPN¾&_¿r†Ü*!an®býÒy¡êÍlñÚäºÁp°*ê€HÏv&qÿ¡E’,°Sýx_¯Æ¡N¿+ØEñ îÖoU(W[¼Rr4¶ ó²o¬úšg[ Ì¾wiVÚ6[7ð‘ÚÆƒ®&HqàòöØ­#3X+TËe–‚?“ÞŠZKù&òϳÐòÐuf÷ÄÏ|[&Ž'X†‡åÒ7ÆãúiJpK¢¼ ³ì\}º‘oSTWÞñgxå8…«‚„,ezŸÆàÁ>`Ì@Òh9 (ý…‰yO¢îf2º¿Õ-†Ê²Ê¦l¢ö=»¶¸C@{­Ë`ÉÿSa˜­ýÑ'v¦Ta=þo2B†¢Wi¥Y)#lÌW`év×”‰?´Åž·N&Lô_;jÔZºš =ê7}ÚÄmjÉHE³ËzÛfoõÆ@‘¨’#qÌé4œéÒ· æœójàň¤µ×׎‹y¼I¿ögF¡E`fÈ®yŽÕêà¸6Vé [ „Áν¥QŸá—`ZajÿÀ¢“üLæ|ýÄ16ësºM¼Ì/ÏvÃ%tú%ƒ·( šQp;LWNfQ¦3F-Öjú{rüþ ¡é} (šþ¾(ݺƒ0÷Æ—fØ”}MÌS&½)¹ªËC3Ã] £éu“2b_H¿Ñº'VÍxO‘2肌%—SÍ®þ+PÎ|íÖmwÄy'iGç™J£Æ Vå|3}*Š1ãg¾çqííì¦ûö¯cÒúxæúbL½œEÛuÑ {ƒ»dÙbŽÅÏ3íßê=]¸ÛÇ4 ù7[´•&}ÅEz¿5 ¦£ÎJÏØæÍ=«—†ý~EÌþWk2 îé»6G‘xOoüñ ê8f?¸ñ¾ù}ÒS ïRï» ØÁ eÐ|nnaÆ}ùúF ~ ëÑ"NC Vjè«"iÜjrøfˆåq…m|ó‹c#ªu7Üï(·Ôr÷*âB<°Î.™R¸ voUJåפòäÒî‘Lß–bŽÎAšžWÉžø^w•|´_/‡Äã`sxN{—n(xá !a`ð¿â@™Ì{ìëU†äPÒÆ…_û8Ë"ùz\ŽÃæez¦Éž æL?ié‡Ù`5£UÛí+þi¼Ûp•ÒC_!Ñù§ÿ” £̆¡‘RA_=¬Zg’H%*b ÞÖ­£=ÓÝóq|€»j»“MúÍcž•S#í×lrXѹ¹Œ4›C«Ýâ‹}ú§™<Š=CGjËXÆKÙÄ•ñoÀßky/§¹‡×û0ÄâÇ 6üVCÿëg–ÕŽF°l|±4ð`4ÐPùe/êñ[ßÒ0¹¼)ª{®p)˜XýçYÍŽt;ŒRS—Þ;mίâ?Y>À²ùÆ,tÈ—C½hÚË]°K÷¥¨RÁh ½ãØtºþHȶ_tW´ÚÇçu8d¡ÏuÐŽÏËFø¥gÁŠç'ò)ßîåM¢åÛwƒgëvêàz WÞSlŽG•t²¯0£9·CÆnE6©·¹¾¥÷±§ìeré³@Mñü[Ýv¹õìö"ãQ°úRæWÒWf±`-¦^Zp?j-µ×®¦"(Åü¦9ô‡×©Tw"_Ú‰ÛUƒ;á2ü;òº\¿”æ¼]Q­ç†£wfÑG\1f'py\Þªò¬×oé¦k"fÙÇG ¦‡AîæÆH‰Ä2s*‘mÉÙñcÀœM0†èÕ ‹º•«Ä8N^¼E×ù ‘?þøÀ ­–T ìЄºÕ'J­¿*\Ú]A;ª/€ôãW¬Ž°¼c×° ÄeÙ­IiÐW_Ä`кOlkÇ-TÊ•f<°Ô;]éôjÓ{¥ò~ëÎu¬Ô Åàït£O:Ng°3À&x¢Ÿ¢©5 oì1‚Óýƒ3ÔÄv©šHÛ6_AõlŸ»!¼8%–,Ó³óï-œëòÊqéeì/ã÷ÏÛÙf³{Öë”s,1—NIóúPòqi+¥5ŽÑ>óKjXÂY[åŸÌbˆõF‰ÊÌtØ*×ä™íEïß<“jÛ™¯bÉšcÎO»¯s¼ÎL°Ó‚0kžœø©*>Þ¼¨òÙ•ý ùc†Ujðœ£OÇ|h-T¡-¥ [cÁÞ ]öJð´Ðì.[ˆv\ûb¶ÎíŽh#<&ðHʞǣ‡XÓ|‡—4x¾dBS{ U78ú·÷?,õz ›¡8/÷6gÓ8©ÄìNã!a›¡ÔŠ2nîž :ÊLÚòe£ìlo¤0=;ÊMÄR0áSïzIù’O£KGµ;L4¢œЦñÜ•M¾)§oêI{×ý*å0V!âF]ºÿ£ŽäFë䦻œÄ©P¢Ut|¾Adµ'Ú-÷-»³&à¢~Ï%ž­6;r¨ã!±KdÉRxßYˆ.‹-²¦ÓyÆÕ&×BˆÇXªÏ×Dú̯ªùmVû„͓کjwÞ/~íË䘕S6:…¬ûóffâ?í:­éûZÿYÑ–|›?wò.HÚw§!Ô+<'8³5Ó)èc«wÅiå ÒÃ~ÖŽ«|g n·2ÐÏ” û€ÆP˜«ŒÉÒe£¤èмþÒ¢‹„Ñô›švƒLÛŒ½•-n\N`EpÏìê՛ިÅQj«@]Ÿº§è8Òéî§+Ud¢aÕ5üPô²lT‡¶Jj®}¢BmiBíÙ v]óû—ÐøP~˜÷Eñô€74¶êAb'ì­Â£×"‹B‘Zd‡M‡å Rî¬!K·ÍîúäØÚß÷ðöRBŒçË*ÀêýççV&â–…K² u"E?Hô¦ZÊf‚;sXt:²ÑõÝÌèC² Óp›r—Æž‡‚(®÷ÂÅŠ¹»Œ ­]z÷Q_9Þ·I[Ó4ÛeëFTÚn  OKO$_Lú_°=¸§ÀhWw¸¸Øp%¹…¼Â<\µ?hx­®ÈMŠºÎ›Õ•E´ÛëPs+C\NºLNq-)Û˜F\”k <æ¾vç%u/¸^ÇŠc^o;f§×; ÁhÂÜÌ/Ö‹›Öö†y+=>¢ƒìø-DEXTtík&mæaÍ^VÚŠrêÚxÓ«Ð)&Žá4rï¹r‡]øDòeW[ÙðÇàGÂ÷ÿä×ã'`GROL·“dMäô5pj/±;c›é¸Ï=½8ÑH[“XSGÕm” º‚ÎS{~Ô÷Ûž|o:Ô|ù¿” óÚQÖb.e¡—îj #¼§èšû\Å_T™fÌû=¥î´Z76P±-¦ÌUXiÚ^ñ{é¦!ºör#kYú©†æ–‘/\c:á×Q!oë-FHÍ‹¾6²¿×if²ÞJ#cgqAØÞb^UQK·ZK£¡R{ÃRݨF©&¼ÎD3Ö¨~ 6^ ^¦…ZùHòB ïË–Ñ™;k«9îð¨¾Ï>UNAá`ºÓ‘øþ—{lº¶KZ¨èœ»¤¿nÈèK=AŠó[]B²üGñ,GÓgíè½8VÃ&ÞOêÉ+?Ë‚:×%§×"°±RN ¼ÚQIÞÝà 5y£û0mˆÝ^£OˆÏ m)T¢W›J$NüBiŒ’MÍk;ÊìtÇ?’vóÝ6NS©l‚Š“‹8èn(úl¯ÂMÆêr¼­$;ý­Î®_#{þµO.2¿“¼)ÿ‹ÞÇ×ó0wÃnÄõùû)hî¢@’! ñ7¿n¥ŸÏ dHÃê*ª{HwögKj‹Çºê#¬ÌÔ´l”¸ÓÛ»ÏQ³ñ†éí)¾Ì³c…mLL©YÄ›åÑËraÇÀù÷g" gr”i®Ë··»-T÷v[w)‡W¯C<Ýh¶û¾Ùo¾¼íŽúêÞï»Ü¾=ï=[Ûϼ÷}öÞöãÍi¹µ®÷×½Ìéì]ðÝëu³,&ÕŽÝm\ûÎ77·¸w9½êé·¶/{ç¾ú_fئÙTYÙÐîívÆ÷»½e)³mžºvÙDØÊ%½Üªé¢UZÔû¹Û»{|È»îô§ßw¾ø5$ÈÄИF ‚dÐa 4ɦ¡‘ˆÐ4ÒŸ¦ '“ LL¦Ð™€& £É£M14e=0FM4d`L˜™¤‚@Ði‚ž ¦Â`4Ñ€FSÓdÔòi¤i¦™0&ôÄÀCi£#ñ¤Í14ÓSÉ 5=™=šiª $€ÄM4hi3 LLi4ÀL!ªŸ˜ ê©êlôÔmOSb¦§ Êm&ÓŒ¦ÓJm1SöTýŠžjz&ÔÔõ65<ƒSòžÄÈGªyPJ! ¦‘¦ i¤Ÿ¦ ' FÒi£J~4Äz¤ö§“Ñ'è#TöLSÂŒÓGªy'‘„Ñ4Ú§äLÓTü™=C#!•<§äÓIêž§”ñ‘ªoÑôõO˜OJy¦TýQê’„@Ó@ŒšLÄÑ¡‘¦Mê=æ£HÔòdÆ*?I£Sd¡¢x)¶¦LDÚO!?Rg¤Òx)¦ÓPñ4Ó&‘èÈdÒf É=Ñ=Ÿ© “A$šhÈ„ÈÓ&Fše14Àj§äÉšM4õ4ÀiL$ôÄ ƒM151©²h˜dÐjzhh M“DÃ&“ÊžLi©ê›4jdŸ¢zMê'´6šPÇN[S±ã0ÇLx¶üŸí¦Í×GBmHG(¦M†ß@ý"¥)ê&ßåÈ$e ®[/˜&„üðœV±4añsEz b’Ü<ŠÁ„†_uú½km‡ Áñ÷¿Ãÿ» ÜÎêÆ×ïò3ÖëH¨Þu¿aL÷íAÆÛ"Pey­;×g®»Ü‘È©<š·¿ð¹Ãáà3kêê×ÔãöW²÷ù¬ª:=º'M u kÆyçK6y·¨K=v[ŠG]‘©¥Ú¯Ï³Añûyèãl7oó/ œ)çÛ½œÖcG:.[Û:¹«œœ´d 7俶̆rEªF0j ò…ô à× «6¥ܬ¨Ý–ñÂg ª ŠÀеUY†……Öª2-Ñ  ¾¢*Ùeæèú¬[»¾ŸÁµAÝþYUc׈«˃z€ H‰Õ@,€¢è&õ½PYUS† ‚¨(î`‚Ÿ¾v¦"0ÓßHX()£¨@ãOÜ|ÌqßD¾Aƒ¦λê\«à(Ä8r8øô"Ì M%"\X@ÞJ²âŒÊIÉÿ=àõÅöñPíŠBPâ+ !$º …«ÀÄ íEmXàåój‘bßB#«a„ˆ\I¥‡Á-ÿsæ¯y0Ì’ƒç—'‹–(ô¤6LGµHç Yëà†~&4ÍÏÏ,Uå`ª½ôÐE@D×Ò˜KD´¸¢ßîôys¼榢 '“3§žÒnËAÓ›ùüáªRñÀÅeaÁ òAéV Â_7áŒ2óþTBy²?êHž”bOXxL$3IªöÞóq ¾›¨"¯òCÀ™¯  /˜9£L µAÈÖVÀ+)‹ S0CDšo[õì.0™æl".tˆò±!J¶ïµöõa¿1Ê€ “rL@#k8—˜¾KÆ`Ô48~º¿]O/GQmI˜¢2îÒF¹(‘‰3À|cã} ÄŠBÐŽ~~ˆOk yv=E’!©àè5VðTr{*ß°Í'Qj€18è*®ODm0mpª³%Ø T°h3Dzªƒ¬ÖžêÔÅø‰@ü£ éDöÖ–Â1CsãsrL{’êVCž/uaŸ|tdŽé‹º^.;bdœûؘÙâò(iu=&Âð_оˆßñ|KTlêèÞß ÿÞäõà¾8 u¯"(;ôHIå)5!-åãâݤO¦.dý 6¢"÷Fö»óÞX¶ÒÎ1ßIýÉ^€gÇ‚+$»ð[ØÐf mþ¨ê‰E*€?š, ß ümyd ç(£Gú ÔåHjN¨ÈÈ38m‘twåaÏi²ë`¼ ˆM Uñƒw.ÂÈ|£(\úò¼u4¯êò<á§`2¾ŸÎò¸ûYôýÉžKN܆J™2ŽJR¤†WÇ‘ ¹gÓøŸq§ÃúÑ^²ÚÅTUUŒYUf,,²Ö­sºÚƒ ÔG¸ƒ÷´ÿ8ƒËps¦àï™,c6 ÐóQŸJ³wò• ^‹±E½O$$“ŽÜÄœ^iï(1ùj"wëväP©aîØ)• c8îå-K½%=ÃüŒ)ÖªÀ¿Œ¦<8Ö“³Ñ ÊÏÚÅ+Y=1¼ßª–»-°úè¢z~ÊèÁãºÅf±UZ‹?fŽB,_åx$мF'RzÃǪÀÒBOÚ™xz0ÄOøÝÍ$ïÿ5æ€Ç˜Ÿ=]Åà#e´ŠuÙí†Ø¡2ñ‘Í–=ÂÜú H˜—‘ÛÛÓ³ Œ(žŽ<´FŠ"ˆ,kFBkFŽ…ws†:ÃHt˜ƒ嚨Ì&d3 ÂfUQæ}¡îÊÌÅN×yóÚªÇéþ:¯³Þø~ÛÕÏuÅÐ~×îš¿/+3õGâü¸)ÆÛ‹;zPhŠ~qðâ2,DÆŸ »Ï©#bðcÀs%ž¤— ½Øœ^vÊÉ(o ã%ÖŸŽië„$_e ;8SÝZ|Xò•Ë ÀºØ–ž ©›y[àrz]!ÑJ.ÀR±!âû„ø/˜–¯Mœ<>l³ä¶I¿”´…ÍŸHÈꃠþÜR]xã9ºq,Àß~OZ_UäûÍ›•æú;{®µ'Ò_™6k¯x× ‡Gg„à»~ß»‹Yôþ¨sªo` o(àhLÏ x:ËÀîBogÂg€Â+ýðˆN0#Äöïüd%í|nH÷Æ jQâ0Ăءü_tbwràT,ûc°–íÿú0O­šHÔ>“¿ã,Ôj0`£/¹\(²:·U"¹’üÿµrõbh^£ƒ óîÛ¶¥’Ý|cSŽ%Ò‡I D&BŠšámô-‡å¨~d‹Á#Z}—ÂL §€IÊy_î$>ýÿcßCõäݶ|HyUí›ô‘·-ã_·1Ÿ‰ôI“Ží¥Ú²˜á^OrJ„þq–…!ûÇŠâøÉÃ¥1ikصÁƒ«ëPž¿Šâº°2òº™ÏþeùcúŽ¢KL×n«âŽŽc0Q÷fóò£”’ ‹F yÇæ"³dõΰ(ÅDM[ÙÂA3szÃémòåÝðûº-êgG– ¿!ðEõ¹ã š mŸþç,Ô:ªŒ2âQlùú›Ÿ~ö«Ðd:ü76[8¾ÛçÎÏ$Ñf$'ižŠû~ìMx¢r¢I¡î8ÿªƒa1ì„ O±ùñ? VÙk2Y\µæ¡`?›Šãì©ÌFÐP![…qÁC=‡|H“CdMÖ)D¹¬±^æ(ø+én’ eÃÀ<,¼ï#F@û…Ï@5+D IÚÞ1£æU›5U¶x#7ÁUñÅr žK’\Eœ9Ò>÷ Ä´û"~Jã©~Ö¿@ðebÿ§y½ˆl¢—´o8/ÍžjÆÇJ†íü(<¤Ñ‰µÞôªì¶÷h3•J4ÁŠ[òOéošÓÊø[¯c]ð"F.i™9ÝV®G#Óeñ»V¥êÕ&‡EÔÙ;òÆr¢ ñ¥ˆ%ôJm˜Òrl× Ù+.ò„ŸhŒJWñÿçÈ9¿è_i}ÌLJ‹ª1SAUé{®tg›uÛþÏQÀHoø+WöZ>QÝyr‹ßyœ×Žçí?=l¥êC‚û£DË(’Ä$“ÑKQÁÏÖö}-A-è»né±ý?¸+¹3¾»†Ú„Ÿr˜ØÆ©•ÇïlÒžx¦H{ÑΞµÏßgrÁN+¯³1'’IzšžôFqó/Þ[«å1}=ƒnU;‹Á›Ê“c>Ò_¿:;æê4c—´zÈšA G Ì}ùÃjÿ_Á[wÊ–(&Ø'È6?AA±'þèäåñ‚Ï:Â4-h…èHÕÊžƒîb£.BÓ5:=~Üç@>ðTK“6xÿ/MåŽû*cž…"!Ul¢±ÖÙØä§ˆÇ‡ì ÏÏ2g±y#ÔÎ>œ9¸¡àÁ,ˆ’ Y ‚’$€%‘/‡=ņse«ê¯>’>=Ò¥2QßÜ+ߊJö>ÎèhûÞ-ZyÔòvkNo*âCڽȦÇó{Ò!ýõ*H©¹J_šš2?Žk¾¼ï1 WÉ*›3‘^™{• t’¸ÖX ¢ˆ1¹4SLÁqí‹$.Y¬ c™ud'5¹,Œ!¥Æ‡âàiЧÆôw±PúÅy™Pø!Àpé‰d! ýv<#˜ÔéUì“É1 m·ÀoŽ¡Î;‡º °RûCpa˜q§ W2s 2„QÜ;+k½ûù“B'?àž'Űx°Óô+’æïBz» Wd5†XV?>Tß ¹&²d.·ÓRâ :`a™"kÎQA˜¨ïØô"8\M]‡<"b„q1€¨—¦'i\üwÁ‡T3o-{Oxx JƒÔšû“Œ*½óà.J/Ã3Ùgߔ빷çæx' eœ!uTIªŒÐ°'˜÷ðŒGD <ø²Ï”ˆ+ÑøGOGH”Ì·o×®g #0&>ä,,€TP*Ú$0óÙ÷Ð ; eJ„Dy*‘!̆ÍU¨+\lÊt^L`A«/½ýf)Í{IÔ.à¸le°pHþ¦ Ö”e‚x‚H[Š%Œ>¾F%MÚÄYí«¤;†4†—1Tl häÊ=i,YN`Ø_q5£¼ó/9&¦7wËö£Ù“wåxXzn›Q÷øíÞ\Ê#—x-ÑTPrذ4>ÈbÏ àaäŠí¹ÜV@gSôXF9Ãð’gL^Q~5ß8.b­Ê™b\’I¨ÿe?Q¾›1~^{ƒ¾‰…7Ñln4fZ@`e}ƒ#çjå‰&!êËÎu//_&Þ¿j‚ŠŒÀa‹sÑ6½9Ó£~ß½9Žk”;P0Úº(ó±;@‰²Ïœ)•¥~¶dó^ÔÛ’‰€£›trü!kå/0/¬—áUGxTLÉg“‚9q\Õäô @–…™”à#Ø4GÝI(úŒËNphÎÈÌרšƒo²:¥ùj<‰ýë;5Jžê¾jå`2ØQRäkqÚ$ v{‹K¦ÏÉ˹Ӵ¦í"]yò¤"Ÿ°s÷Rᤪˆ·ÀÌ "ts€l¨Ï0<ŽC ý$X sóêàÇO+gÒŠ¹1”hj[°ÉÑÔ[M¢Îù•汃X1QJÞÎ[ª¼u³*$bT(šÚM¼T—HâFA½¡m«°7Ï•Lbg±:#AX|·˜ 5‹ã>ŒqL¹‘n Ô_P­ùž3(O€ mBè,*‹š<oœêK9W{{­©í‹Š»`äÔð+4½@Ìb˜¸äeؽ…$ŒïEèK ª`˜`õ ÿ¡&bœH^ãKçÖ—á—2Í1/`-¥c‚ÿ¾¼ýú <ùmô “")Ž­¿øB/&Î-$¿Jtølºd,…f•µƒË¨»MÑ@Çœ„„î¶Ë³(ð…ãÀõ×ÄÙD@ÞÈ;ÉÏmÊO‹ XìjÆ·¥ä¡>+ñæ8žŽg/‹f‹í0nYqˆÂ4x cn¯Ð_f#´e(õÑ«,€¦».â}ü€C™‘i|îìZËj{*S%!{þ®œd”ä§–ñ?u¸i@gôê\&÷³îýr¡:/N!ñê€>lØ£ÆÝ!æbÄb¸ó!@Z–E)z;[[÷ÉŒ¹t¶=û‡\0ֶ̽ÖY^(‘Z•†ÂÞ—€´3…"<ïç‘:¦ëÜ×uæ0;ò}ƺ¼xc¸x‡Ü³ßöTkÌ;Ïre"BÉDp_[ŸÆ6EÕêL‘ÛSàÛÛ@ÔÌý¬x Ñ™NØÍF¦f,·’tŒPc;S&œD¿ÂØ>û5ý–—«CÄ¡[>Íh¡œ 4X¶vLLcµ àsˆŸ¤5£ ÍÌ06ä¢K•<ˆ¨öåÌ,n’åì%û¾îWg}Ì×sÏX¡J™òó^jY˜c‡äÑTÜ*ùíäŒO_p&ÚO#ÆÈsFO{霞Óc>/£¨¼†œp5>~‹a™W^Z4e!‹c‘a"ÐD¡¶*Î=±Y»ÅßèÐd¯{h{ƒfw-ù?-7íÉhï/¦Ä ö?qæú0(ãaœœby™³1ù ˆ3‹[L - ©$e4£R&ÃY­.Nö-çIƆ¤7€!eɰÒ" [w\@7^õÿÈ@pI»IãÁrbVï{àØÇ`íâëŽ""ú“`ð ï·Ä‰³s¹D{À§ð–Å¢ôwÙ"ÄŒð(„.céJ…Z£|´äUü 7ý«\ƵÌsZç1ŽsXç:@ ®©ˆv%9 ’¡^‚vÉ ¥Ê€ñ¬nÍàj(êÚºt¨¦DË…Âw0ÚnE'‚îÛ–§.̘ÀgV·"<nÛóYc4§jy7‡' ‚*å/CØÄ™ó°à­@“ØòW9ž'ÔÐ¢Š½¯ó|¯ø×zú=œ ?n¥*Oÿ¼Th«yU’`“´ of€hî—û•ø[Úñ°ö!4;DR _ @ `E „NÚ{Ç)ä=öòIr–¤,•Ž04àrÆÄ>@÷Ü ¼±9ÄTlã%;Ð#x0oÿTV´{vO;г#,ý ¦äjñ0ûr™#¬JÓáU}TZú]™•Â2³S´» |ŠÏ=íáÁk·çû»sÑ+Â÷;é<îÿW[n•õýö`äÐÓ8á¡çÅàò°ôåçš• ¯ :·Þõ–XyËŸ0pÚéÏØä/E¡i…ù4ˆ^dy9ª‰d¡›BýŒœ =,¼‰ñ&«}çí¸K¿ð/uD4‚a*‹y‹ÁCA]M´Ém°UâtÄÔèâg‘…ä´}FCâê JðÑÖ¢ýwh¬Ù¾Èõ¶ù÷ÎÇm^»Úv©N˜šêæÂK£0ÌÇ1ºG¶§Tr¹mMiªm§Y—‘÷OˆÉø³Ÿ~A§åAkq%ñ+üØO·½·Ò_Ä“¼‹+ÅN üÜ[Î5÷ŽÒ I²…^Ùy 1fw/VŒ€ª&¶m$ñìKø(ºñ⛸©elº3¹œGFÊÙ£•¿«í–e´}8©ZþÞg “GL(=F,o3 B–ﭗµ€4œ¸â»¡^lxŽS§„¥ ) dÓ!Àã£KMœ|+ö«¢E8ÙHŸ¯0¥_\‡—´Ñžží%‘úI‚ÀSþn©O®®‘o¢¿"ÞÛË1q#ÀuÐvç~gl.+=Áª„ôûÍëá‡oŒž~ýp›)P¤]w]mOG6åe<V”§Á_ݸ¸¶ÙÅÂ0•‘­‡ÉÿßkiƒÞ`‚J#m/—ÿS"Š0Ç8<æÎAcØ4’ßÃóm…Ĉ+uGÑ~ïŠ:ÛrЬá¨Âä9¶9Ñ0 êúb2DRìÒ1$BÔÜ7¿ ›P×9éw»žÏë«Ì#oøÿ‡a À˜{âE]¬©hôØŸ†møyG3wBßïgÍtp‰…a×ì†[F3BKG0Z×@ñtf™o â‰/÷Y vXgä×¥‘y Z›%Á„GÆp@#ÂGŽ™37µ™œö@jE Ю¡LgÅ÷a³?Á¢S4ªˆdKéÖpy`P"ñohF¸›š´äQ_qû·‡"ª” — ·ÆÖXxýßËÊŽNi- -È21‘p9˜aôaæÏQe¨Nö’´yqÆýLë_à^®¤\wÉqJ‡“Xm•ZÈŒ¨`s!Kžõuü~3¢Ù]ÈB^œÂ¦QÙ“lÒ„Ke!6ÅFŒ'8V¶KÍ̵7WÜwëÝããSQ èàÑ!J,Ƴ'÷1sl„„—Òøüû.= óOƒÈƒwÄOKƒáÚE±t⢧§ŸTÜ—òl#ô¹#ÀaþñÁÛ2X†H^mH¡Ú|â‹÷W˜Gm7Æo( ÇèÞ¾ƒQÌ¢‘2eû¼X|!óùO¯³œ¤È ÓGIZ5=þÖ5ŸB‘!Ræ–Ü’ÒÙ"füxÊ`ÈkˆäQ-Ž ˆ¦tW ˆ87‘󆩔£f(õôªõ;’+gÒ•rrÙ‘¢Ã7BÇ3àd·#Ù¦–lM³‰¹jF›XuhããH§Ú¾ÿ.]̵HÇœë³Ü-ÙÁþ‹s€à*íPALc£&Á=¦-Óä9X$:ûFˆ’§KŽb^Ò"ÊÈ>܃‚Cóì&Ò'Þh„ŒDkèf› Q“U=—1¼+,5:ò‹#ôcÖÇuâ\•ìÊS¢µü0óólj‹÷pOµÈ7ð 6bVD¶äo.ì뫞wÏÓ[Ž.Ÿµâ"…½%x½uCÀ¢ðqQ^æ/%ü"ÐýÝ:ˆtÃÝÌ)÷Ô>¤í’r'愆ÆÊˆmkõZg–±² $¯/Žg€Ä1Œd®ì@ÁuÅNð9£’J>aöxÒ˜Ì![|3â¨KÃøµcÇc¢òe¡öko–ŸÙœ—27¢ð;™®ë²oPðüT¿$høƒÿ<€ÅMÝÒP‰‡CˆÆQÐiÞ²°Ô|€ Ù+Æ„úë•dQ€8œ -€»¨ Ö_¢ä£bÌO€n‡1ÐA½Úâç¨[ǶµJ>ËgîùCÕíõ›‰ËØú¢0¸"—•’–7©Øµ<ˆoÆ5õò'5c˜«?Ôö6——¿$ÐÕ§—:ÿK‡9Cá©o}…%*±ˆšQ[‡ž6ü\†RYãù‘kËÖÌè¶q5¸Ü ÷~V*ÂXš^CÝ3ÀÎ0ïâ+xëäÏ;mu»Ö#m×þœæ&3ú¤›TCÑDHÓÔ¥øyç…¦b®9"ãŸçžY’fáલqcŠ(¾Û´: g&K¡áÆNm½(¨Úc‡mâùÝ×y:Ë–[bÖ¨1?çÇ£ÔzóFÐ|0»ÜšÁ.2BÀ\ÄK¦{dÉÔ0®K„2ç AÒ«Gß±a1àªY ¹Ï% ÞÊ$‘¦éÅL–ˆê8²Ãd -I" Ó1™ð)ø±.óýÁ(Ï0§ÀeNA@ÏU3Ý €ykÏÊ1•1\¸lÉö‡ÇÍo÷¶~9>6Áyžç¿ªc<뿨 Õq 7&oãþ‡ßEd>•B-I)# ¡á]s˜ÛqÒB¨²yŽMÖz\ ò?‡ËOŸ¹£Ó D¬¥új: î'Ë·øã«“AVZ#ˆòG\Ëa0ŽŠù•™­*¦ä_ÄF¡c¶h'ÕÚsËÿκ8FJøadò;¯£±ÈµKåÄÕm›gœ°MÆ6¹,-—NÇô–pó$¶þ¹W^—cý‘±`¬™zæN¡í[˜FÎ1Æü ½B¢Þow6XF{Z;O¥EEôbu0xž³#‰ØòKÔßÀx4ƒÞìWšK1OM_½Gnrh·u@Z/Ò˜åtÿ^ ÉÍOï•j×.¤·ÃY57`{Ÿ7Œ_Õ5ëþ絯5úë :á—¢ïÆ®y+úM5)ôôKmï< RÞPÛ¡ä ™GÅ”1G ÞÃÆe~C\üŽ»D¸éÞµ w:äq,ø úbÒ‚hV¦¯‚LQ *Ã~X\ƒ@=yš±<9—½Ô®äkMp"|×,˜Pâ x.—„û™*$2y67½fúh<„@C*1ÿqÌç7îú Xã­ÉSÈ6n.|á¨]4½e'o©ÇHí®j×ìëÄóÙø1`´s³‡ÜÔ=›Ê_~{,ØÝÖw`|„iË«ÄC]ŸSÂûêh46Á˜¯/‚£=snÏiRü>%«ÂcÔ'½Mï¶ÊÕ-¨{Û¶"P5ÌðB ”ÙØ¶GøÜŠyðI:»CÎîx#He¯·WNã…ÃÌÏG—bïۨǴªÎÃs‹vù`ãåAª ¤WeCÄÀ4;âØõ´õŸ2÷OÇhs7üH¿Ó=w×þ|k†ÑWrBYE÷¦þ)bÞeYq\ûL…Ë’;«®)otuõ•¢»ŸB½Ð™ÒcdÒ(ˆe ù\ hèöùœ­Ê‰åôÑ­”~€ž–S(×[<¡Á ?k¢“DäJéRÏ^ 0< ŒÌw–|8¡íÜ™AlÁo b—¬/`ühòÃÀ®V›—2ÕñÄ‹†Z@ h³?*³qìÜ ×±µô½Mb{f.ë÷êgïEè[á&„½ª‘Òˆž[6XÎôöpÑ¥7òÄ9QÏQòuÔ¦=QçßÑã}ÒP>´®hTI´Ã´©ƬѰCœ%ï'UbdJkWQœ´š“Š Ë,Ñ ~ÍE¥Þ‚hóh[ÆÝ üé²Q ÷]ëUÉ85# üôÁl §?bmà¡YÇÕ]‰è\ŽÏÄ×B´Ù¥!h=õ} -oA;B’À¢XÌE4§OHÛ7~‡ÒvQ‚RˆŽ"…¥@»É3~éÈòÖâÓ*°¨ª²¼±ëÖë7ú~Ãö±ÊÃ8/Óu‡ÚµåžònKGÒt¶ó­xðçÖ²·¯­µ›'Wô8V–ÍŽ”ûã–‘þõåd@Þ} üý 6 +î’º(‡üFÂ{Å}MÏø^¨à.Pï{·Ð„pÛ¥¦u/´U ú"YÅâÂdOß\¿¼{Í„UÒá}U`œÍG90„Á3[YK$ùë€ãú‘¯Ù{y’Cyõå›H>&Z˜Ú‘Ä ˆðí.:«áÂBBé”O åÈ‹D/§þ‡CáæÛO©±¯Cm`­¿¶u˜Qˆyo¼Ö+$¼"vò‘ˆŽ8¦ÂÔ†Žï力B™G~çÙhAõúø"µ¸ö¼Tô}ëôâ¦PØZ,¬K9€\åé+Fw–|V@üU2jàþbÆæ’-|ØJÊÅ>…¯ÌÑ>ÚÙ${°/^µób òL4À]¯/Ðmdžïi—ál5˜'=:»;=kø»ŠR­Uì.^C¥Tú«¦ÎD{<:¸HLnÞ\§D›4ÙÝ6Ÿ5ÿ½Öóe§9,C6*K–î&<¨!L÷gÇMØf¨§ºâqÝÇn²å7ö”C,sÄ"–ß%¦þ‘<’·A¿•gçÁÎî¾øŸÖ•ëÇ„†>&A² ¹-Åó«ü!üH®Öž"9ZÁKºýu»b‡H(v|3©Î{×þÜ›˜¾º3qıYÍQâ¥÷ãÆ­'$N$Åÿq½iŒ¬"‹÷Æè¿(äåÔq]ñB ÜÈl#• î;[eB’–Î ÝÎiÊ…NÅ’}%hpþSì¨á¯ÖG1pZPÞò é.º¯XXBB£ÛN!B¸TÚuùeXíü¥DØØE»p|¢N°m®„%TÄ.=ñfx}Û_À¼ËLÔÔ ë‡I´Lˆÿñ+³d»³ÑË·³êc)o2¼¨Âý‹ÚY(Nz6ØéùöA"•Càá~›öÃý,ª·U–óK˜ÛÔü¾ÿ"„Ö0Z¹É›ìaÚw#r¨ÕD/Šˆ†r8˜î´ &4æå†up¢T[¿y_àñô|ØtkÌ®gÛ½ƒu×O<0}¦çþ÷¥ýmê—ó“¨ÈU ÀÜu¥Í†ÐLÊÜ­XV7F(…xœsT¦Kʈ·GWßo?•¹$øïz]®ÐÌŠY'q€©}F¬é¦¡ŠÚ»QÜRÌõÏÞ‡êÖ/!Ïé(çõ\d_.MÀ]”H"cÉoä3PERˆ´pÅÎsÜûÎôó"8»5Â"‘Ò:ÚmEm×;o¤;¬Ti§ÏJÿú?y(RüÚPb÷}6¸VpŸ¢ŒO ¤—ëòÅ¢á;NOÉòÈÏÜir§l¾·6Å„ó.=¤9¦Ið-Š¡t¨ÍLGâ¿7W? C›÷¹‘Zw¬ÍwæOõ¸’½2¡ÃÔ§‰kkúWŒ€Œ?ޤ¸K[¸ôœtfƒ÷rà›JHP¿[Ù¡“óØiT)‘4#j®þCë‚þ†[›=î½v\ƒêhæb`<ÃàRþ%B!CŒ|ÝÅÐúfDbT²<³dYYã¨bûåÖx|ì†ì´,Ž’–HVÕ£isÜ Ò.TBF®„/ëg‚°>ã ;ñQx4 yPeF"‚Qh2rdœþ¬QË "ÕÃmE|ù¨—v¿î‰pÈr4CîDqr_³Ý‰ÖÓ,£øx)Oë¸6¨f‡…1 )<–„ÿp¾¸F²?¾²E>’¨ê¯_Ô¢rÆ.?q/ì"œ#pTÒëoúRÉ•}:ØðJd4tüÝb2Jv™l¢3=•{æîJ ¸­€ zÛU>qÎI°ˆ3=ÀÍÏÓ~mœCBnpXp™H´“°ÓŒ—ÒÚÓc(ù\ †S51NvcÆEÎ[.¢Jµ1SzÛX(uÿ‡¶Çƒ_ȆØP1×g¤­l4¡À)¿54tT5lÒX»B¿D±ª’tm;œkÝ$K½;L ¹ Ç)›Q@è}ÅÞ²·E’ÅÎ$?>úDð*•ã/üYш¯ñÕQÖþ]ãAù>ú„ųçL…i²â¦µ¤›Ñ~ Bg¾‹yB_-B—¹-?ÆÖ.ôŒàAc–ʼny¦ Ùòhó‚ØE¨È–Ðf³âćLg+çÁo™¸FÑ ÕEjêíxÿcr§²z.|*æIÓµC‰¿gÀÈ6`d¢H¢4¢J^!²ÁÂڥŬ*«;@×ôç‡ýsØ;Œ„LAº´Ä_<7mmy:ºËæ÷¥Y]yp¼ñá8÷ß2J†ÍèG(,²ÀaŠúåiˬ'kuäraWÇÊÎ쿾Òõf¸‚¦®Î¡Ý7®3zÀ–œµá}­ãò/â2‹ ‚ / :4p1¢½èR~œ ùÃÝ/~åHnuÎÆ~:Q‰i|û=îõvL+ú·áàqÌfI/_ ,I$ÓVE¾·Lòt:ð;?³Òñ¦Ëʱ*3c}ÙzRCÜã÷4=$4ëßßy^‡‰oÇyÊi4ezI ÀfüþKH_¾~x RßQî¤ÞzyØÌ"C{“\G@¸*ÜtpÚn¿ÅµÉ}ÔœED7Íbƒét·ÕK%莧mncxGó$QU:‘¸|bukvwÏ=PBÑͯëÐlüz¼¤éÂà¤÷< ’j‹Û‹è'ÐL#åJ“3¼ßhe€‰ V álÖf‡Õ>qæy¢¥£…Óƒ<ŸDúBª¾ ªNŠÝ“ûÖs™¬[æñ‚$‘@¡Ž+Œªæ¢·;µÓr'ÀRRòj'¼\¼U)ÍEýÚ:3X~WÅ\‡ þ{ècú=µ t]LGæÎV ˜ØrºØ!Ñ@yŒç7îqîC~ŸÅ£¤Öº¦•u;‡$Ür.bëÿ¬l[ƪFv÷„YWíøï+¸OÑ÷tâò|Õ1¹¨«…úú¾íOËÉÕĺh¨É]±§õÍ”yèO•.ãmL×–uþôè‚Ü?± þRë’ÿd·|¿2“tü{)ïW‰KŽ|tÞ´5F“é,4ѰmÀCfZ¸U'vÕ……ãËj¬†Ëíì ­ß¯¹´G¡Q­ƒáÔvp3µépÁedwhèU¿v‡6ûíôEogqó¼€1¤ÛÛ{¤×—uƳ]N`½ªÚ]ùÅoQñë>|Ò){ˆ³|‡—­/Àõ.Þû6»Ï«Q³Në °ìKVµ&›Èg%¼ÔÖÿúT*"Òl·½9ú®Âþ¼Ü¦ðd nPo7¦_3¦ú%–ytˆ–¦ÅCdZ×`súC}Ê wFi‡%ù«(™'™ù©þ©§–9fJ×ÜX^¡Næ®~ à» ׂnµ½?3ßS,ÕͺÎCÖ({3ËJ=eôgãš±™Kzl¦Ç2õòæx™¯NÛýÊ8löŽ|íE]öÇ]ÎN?šuÈF&Z³/ —!(>ïKŸ•ÚmiXVÛ|·ZkÜ6x{Í`Ûã\ºÍÉÔ£™"¿¢_nÑ»=MG²Çi^’´Ïf2æÌä;mDxó>k­ä‹ÞÀpÚ9²4(µ ž w” ùUjÛs·u(­MS V9(*¾Ii1)E+´Ž¦Ø‡Œ«<‡»C4„mîËm“à¤>©¯µå sQ®Êeú“ß¹ˆ¥ø+eœÑ¶°}æûÀ>ÂÀÜE£l Ì™1j'½íw}Ó¶ÀŒdgE±gõâBx‰ç‘>C{§Ìëz+„^L#§zÕÈ­Å÷­K¦¿¾ÀXÞž ðßò§¥®ïVØÓÖ!DÐOÆøŒE¤4õWû–U¤ w ËeÞyfÐtöÒ,§Û£úÈ@D-xª›JMî¶9¹åRè‰~êUtÑ|wûg†çîŸQˆ <}7J‹°cçi’A!1âé û®9 d‡ïÖ?ƒ)«¢zu·u­e—J÷Z%V’ÒíTàxz‰Û³ÔÑm`Šl\3æpõ`{Š â¨øîdßí}v&u½9틵x¾™PsS)£”Ïx“,@ùüµ6á}4Énw&6ÅŠ#¶Ãã‚j¸ "Î;tÖÛ3÷ñúæÃE€ZA;ÓÑdãÿy5}oh‹òðü/¦ŽQ쇞:yìð"zÆÌÇZºI‹©RçhÁKWÏÓì¡sÙÕp”åƒ×æ{ôø^·Ôjaл—y3o¬ó Þ5­ÃËó¾“ÊwˉÖoVäÍWòQѲ²Ù9¹¥ÂgÌØ±¾ºê$™vG,ÑïóÅ%𔨪l½;GGÇ»ýÞ·õͶÍâ<0«¡g‘!¥®ˆÙ?µÉzâŒs;[À÷0-ój¤"’ ;Ñ× O¡É…ãõT†·[3”šŒ5]Æf–¼]ôâÖ”]–9ïÖÜ&®~+-‡Úß5ô¸èö1´:›Œš&Y%Åp¢ÅBˆ0œWƒ¥ó EvþÂc9/òsË7=^Î5¢-Ù‘SM³å'ýÚÍßgBXínwùšϘýÕÑ@p˜‡}Aˆ^>’óar ÞŠÚõÅã/—-mý˜žQAO ‡Ìáæ0ÁJNþ]ÏWÖ«O‚ëÌpµÅÇh]ÃUR  ©vzCü«‰ ÷;%¸“ÚŒU±0nN îCÿ³Ût™¶O®ý ÑøÃooxÞ¥bûn}-îauò»Sƒvþž Ðéq9e!ˆÆä65ÄR›žE8Ã0\š”‚|œ5§þÌ9±÷±¶Ãì@´ÏrLŒ3æ2àat^€´:ê^;û&¹ú®â¯1ìQ[Š—¸¿ª«‰{À¥Â½¬':pö^޲ØQk) Q¼^º+nÜä­˜µ›í ®ß“%€ï¢;ºEarw“ª§¯±aÎu$ï,•yë“á;ˆ{¿Ê£>Çx#nk"ç6oÛ¼B{¢8uz•íð &ù~üÅ·á>`°q˦³Å8ßC/óï;fGJŽ‚ÞL)âéø¡Ó,})šÈFì§À+”€MïÍQBeÍ{1J]G„¦È5†®ú÷ÿA_fÔs»IÒ¶¿°¬ÀJÛs(‘€fLhë}ý¡tàŽô!..)I9%½êÑ/Õ”Žå4‰Þ?F =Þüf>®ú½Ë”B ×ÕîÉ‹†\ë8ŠRðµÀÚCÍ—«×u ÝÁD¥¢ðë”[½>='ÍȰ83Ÿ!™Hºàdµ …\óczš,,ûMT³’ýÉÉU-WÀís®Ò\SvLÐ ºhò‚Rž»Ä̼‚ú÷G7ÒåFö¬ð)A] øDê£S<7aÿÉëâ(H#õaШI»·»·_mƒpP¶…ÆÊ¼K‚;”E(“p7G Çëv;øMâk…I 8ê*=Œ }Üa-é?‘Ñü?„õÁäêu1ËS€ÃáŸmpG©¤´øñ°a¯Ãžð5ŠÛÀp5÷ÕòT:ßO_¡ “×ñ{Ä`㜶ÓP;µ(Æoí¤ã¤‰OÝôJÿ´Ûe0«9±ÝKi0c›åvä"ÔwÌÜè¸#0É+˜ä‹ÐÔ¨­Ïb¾¸s&7/0ì¿Òê®EóÝg}½E¥§ß1ÃÚd—‡8* S^Ö$h°aüôum ¡â1PWïn»(µßiƒœ=¶GršÍ$4ïcÍÄc<Îr:±@axXM /ÿ!!Çïö¥f"´>†ÿ•™°e†š§&¦TlU‘, Ò¡†÷öŶÉÈŸ‘œ  €&Á¢ÑwÛì=S ¢0-é,{±S'çÏ2ÎìÓ—,ñ®P²àéyXÿ¦6w9ìKôÞZÉÉ,2fC7R¶{²9Ð~:ˆ8:ßN¼åû¼x\e ž,Ïß!Õœ„üŸªT}ð ±Î+™êgH=âårLØ6¿©| Ú1ܶ-xvQ6È”±ÄdùæœßiCÃõú ¡©5»”!‰ÔGâÕÖ“ï! ºkŒ]0bF ¨‹r&Qu»¿}žhQÚ¢žùôš°êïÓKL[ó¶ÕH [Ÿ= M0Úõå&Q‘õœŸ.ñízÇÆ‚Ô©- 6yÁ/‡i`¬d>~Xˆ–üœ@Å­°¡<ª.9ÆÀ¯VUhC™€xËù¾r½ ¤[ìMàJ"H: £ü˜-*«õ¡‘õ‰[óà·QƱDíC*Q¬°Gù^{#j4ä @ŸËà2µ„bpKi…‡\ž8_Âùó•öONJ4ÝÌÝéo"ŸGø­?]ŒÀì7D 8î¢ÿÖ¸4ƒâ7}ñºM‹Z¿½Ó·GVÅæîrâó´Û.ŒúS ã—”§A ÿÖ»¢ ŒHC©ÀÙkÝÚ ôtˆˆ~z$ð¨«.i{’[,þÑÙ1M]ƒè®gˆ•jÈ3³qÀÎÆ[oó‘¯-‚‹GÞ»Ô9žÙ'aÆÊ˜b¬õðæŸòô|6³3ªJï1½Ïj§ @Ö§” Ʊ8p3ñ~@î.¦ÆÊÆçì8¾ÏwÐU­WLdÀž‘?Õ]õ12‹‚äE&FÊ×· î»ÄÀÛù_OcC@)Þ•`ÀîÕ ÷ØMí{ÊR…ÿ‹K…ánmÕ5¿ß[ÌìžÚ£*Ř’ñÙž'€7lx¾±ê5î\^ÚvÀýMëP$lê@(‡SeBQ]€ß%BŽb¡„õ¡f#°.>"„›\†&æ2Ø$ *YK0ÛÈ ;*㚊±Õ‡ÌKëRqt˜>Š1ŠNM_ð2`„åÈi8R®ÂFf¨2t›Î€Ë}ê­õíTç#™Yì!~Òs\%‹humSØ¢oƒ ÷NÎz™=»`FÄö~óðÅ/­À8÷Ñ—æ{a€-¹s< Úuâ$Z Nl `áç*Ãg/ŽxÃU:úý,•ÖˆÇon¤>gÕûB ý$ƒa³÷÷’šSÝÒ̶ßò@¦Bc§ ÷ºÌ"u8ÛˆÒteŠÜ á”D’£í´@q{¨àYürÈ[O|.ŽYŒàp¥z9ó6áÐS·ÄÝSy®êx'¬ÿ)X‚[I…èíè£}'zb¶ž£µª tÁØk ôîG¦}aÖÜfi0ÃŽ ±«aév`u©ÚL¡Öÿ~0rCÅPecÒEÕŠÔÓÀnXYe¾Ðç~ÏkLì HÂË#@XòhNfëO_£ÀyXLBá·½žÙÝK¡ù`§B?SÚ‚Š“hŠ ƒ¶_ð"‡?§Ì]ø¢¦£ P&û4nƒwâ”ó×±@¯kG&Öö-<…ÿ.×¥ çͶ'¿-«!1g*çë3? ×ëA­Âš¾¬òeÂ%u}é?%, ;»#΄°¥#È!º4á—‘Êa / Âå^öPðÑ?¬óŠ`äôç_©íQ õ¢­¶d<àây%XÛH¦€€* ¹Éã?Ý2ë~àˆêÃE—j£ò®—+ëÊ]­9NÍÔŽåQC-K”©RXÿ[©¦at #ªÉæ¥Zßw½N'¹9í’œñŸ©Øw·±ÕOTMò7áyîZ3~Ûê\ùÀF=ÜÞí¨Xr eum°õ‡Õê¢Çó¾ÆxÖÍà ‹ë9•k™Ÿ¼Àò³áúåˆTjÍ&#dÌ‹¡•òn(˜˜ SÖ/u # ̱á^%Ï耤н…Æ<å<žÃx)ü+µ! –ðúEèÜô€fÀE Ô~CŽ7Å\ÂÄé‚_“€U*1â8Ú™âHã¾ì5s®ž®™ž/ç‘mÁ0×H;M˜x“-¸+öpw -&n¶§*´S& w]$Ôõ×kj]%“T´¾d cÔÃðMÔâa“î¯Øº¸t³›0®Ý¢,Â/À¥„…Î9Xp’éd ªûÄŸiá1£ï­t`qE%ÎÛ{°YUÖ`驿Ą_ÉÒײñ¿æqõ£Ê¯Vt=å6C^|Áù¼BVÖ~ø‰ìÌß-áÀ±žs2zJO‘ïIÏè÷¶öÞýòÿ4 -1q‰SÜó¹›J¤^Õ£+ 1Ä$Wseã´PˆûÞ7ª¦œÕÕ˜UMìò†±„9ÿxé„!½~SÚ ÌŠé×…Ï öE̽ÃãÁ o’=3mßmEí§îÿ&QÕi2åçØp…òŠ*%ù˜Ò¡bBÙGL¶û ¿<*¸Ä5ĸÖ1Á?CcФuxÓÓ=f޶û}Á±Ì ߘ‘’aUP®nA‘ô¢\eFãÕÈcÑ; œ:ö±‡¤–Z‰—ëÿoõ›{c”Ë£²·ÏUýXzg£K3?÷Úï²ÔvˆFµ-o÷áGŽÓ‘±!¢9@^Âjàÿ‰lôkf•ª®ƫډ§¶\lc†>hÿùYîVÂ.sôf¥¸äÖ~ÖÆ^y/gÁ•£ÛÞ §e,Z3"œz&~ÄÏrƒ½A×ÔNþ¯&ËÊò—&BJ¡i§ÐîµÐÓ_ÿÛ;Ù jaK‹§Á—&`û‘èù >ÿÀ‹eQ›Ï ,n÷(öXp3*9õPH ® ÐÐf"Ñ£Á«¸Ÿ³£Ç³¿¾¸@û¬~=ɯ5{ì C0ÀعÂ}$Á4ÆV9÷9‘ÙË,þÊ¡O÷áteWßOÑúnX³³è] äÿ©ÛPé´æ¹/&õëÂa/Æ•^k_¯R º¥Þ18e«¾1 †Ä[õþ s`¼élJd£H£¨X'MÒr×Ö99o¬è­û¾û_ÔŽß/Â…tÆ ⚃wHÿ(å!þ( ~›\WŽEÁyÔÚ¯¢Új>+©TUšt˜ *¶œš]ÙBp¢7xë[kC¤£ Ÿd>°d«êMGÝÜI~ÕŸJO%Å<Ðéq¢«,G¿¸Í¦Šõ_]WmQ½(öáQP÷¶_.d7oZ†þ&D廯wMÌEª]ÆÌLóÎåùz«kßÚ\ÕÉñBÝ ç‚ú£žíWÎt¨J»ö‚±&;–k7a\Æ'»®€¼”úzÙTvâ…y@rϵs~Ka]ø2~"·/—ÊM'È…lõ”;1b¦sõ£S)e3nŠwß²_í£Î5†ßÙýökF+|¤@L1Ø =Ž›é2ÔÂ>ôQÂЦ¾Ôâ›M¾®<¬,6þÕ$‚‚‘m®¯¤Lªq»ÎÁÒdDoB‡¥=zTCX¯–çmå” OÑ»ØÌÝ¢zl. ÀJ™ßËÿ-YD »½iZÀ-ï7µâo_˜6LP©<–Êè‰UóÉ”ÅuP¬ü³¿ #ø:ÏAù9*]ý´®,‚ãŸkBKÊñÓ:ü¦=K296ZqnsÛ$¯†ÂåÍ\ÐÀ…¬P8PÁànÁ”öÞ-[VCg›xÎ9ø”Â!yM:Þ—.ïiÈt¿Á=¢¢E«Æ$bìYi­~ÒÄ2¼ptá”ö®4×èøÔ¨&™¿Ð-Ï)*EÖŸïoSݪbûÁ]›ä)'ÞÒ´é»Ò>}+Ñʅư,„þÑycRöúØQ—âí«ÓºY¼–¦ŒzÂ>KJNk´~—òføeÉ©ÚÝõ[­u±/:o«½¾ÂÜÜ §Ì@(Z÷/š5~Þ<Ý Ñ@ÇÛxÉ(¼~Žv<`—;ƒÖü|1á5©uYkžwêÁÃÖ$~ÏÑ-Osol´¸/°WJßènÕò0¸¹RÃ×ïWQ~×}ƒä8öÎä¼Ü’%\Ú—x²Š»ÆQ‹t =:|eÄæÎÄJ9é‡tµþûÒ­k™eä150yÀ ¡¥ÖÎÞß]K©ñ&aÍÂMê|SÉ­ÝÞÜÔ­fIŽfÄ€Z*¿oeì’D)Öª?wse1K2˜90ç “•‘îÝO(ȾyæµY³ù_åŽO—µ/†»®ºÄŒ=ê2ÔüN꿈g˜EÂ!ä3Û†yáš.É7›B+c|'ÈÈöË ÁI ð„—ÎJžZµûÛi”Í =}M;“A°‰Š_k ßóÏÌZª€“À\‚“Õ9 L³jæ(³Ï_LëÔ¬›'ßS9%­e$ĉÁ¬´Á;Ü8umî¨)™xýpÙ«'>@`ŠÝÍ¥æÛÄŸ~X±Ñ¼¤E¾öhoÜñ¾^Dï£EE·]sox»¯kÐRTï £4¼6ÇgR+Ö~qò±H—ÅÞ{BD°cOûñd¥`Õ#†m>—gh¶À-@I4ŒZ~éêãðâ£,ÙûŠæ¶pø}ÖŸM!êþ®÷x  ¬òž¯Ý½“Ù¡¬¯ccî¼¼O"ýbaÄûb⎗ÅñÑôP±Bzh™ØÈ°ã}p»xæùLr^7;Óö+Áãµ ðnòm9Z²5ÑË»/uÂ;õŸ«¨Ý¬‘öÉÂÜI#!®¶þï)ÈFÕ#‡¿fõ¦UØÏ¶¦æå£ìÔDaÈWd:59ÅSÏùó[m§ÕÂ/=Ûn’U…†h|óxæGìФä³½ QÛ¾’4ñó,ý«ÑùPgΓ&aÀ¹ïõ9¾¸H`¿·ÍÏw“/ñÖyj?ú÷ÈBíM»-Šà†Opvr;[jÞü7»ÙÐ1YªÍ]ŒN•°}¬ª ’½)ùµè½õcæëßôÃ²Ðæä°‚Úê/ “dkÆøJ¶GÚË"NÔþ>¬bkl¼AåV°þÚ:ö^Ÿ6Ìü/Ïs¦,b! ‹Ïm“È´(N´g¢ô;üÿ`»˜&fêP'·§‹¸"‹ÝÀ\\”«Lï-pü,°¾Šš”«0ªò,ln±ÄìPU2¢A¬>-ø6) ñ?Þ³Jq¨r“x}l®ƒ Ì›ûÑÀ`'=dDXnž8' x“b™ËÐÄp 'rµñ€&JBµý= BÉpɺœ‡?ÊQÖÄŽõX66ˆ+*Û£åèCÞ6¥UR™Åþý±;®Ór,n°°îÖ¦êÿ3˜ ¿­KŸ2ƒÍÁïøk¯Ü{¼Ç/46ºg°ÑaëaMIjóÜaMh\äöÿ«Å÷Ù–7…?g§9j„](k— fPãûp¡‡è:-1ò§|ˆTëÞ~‚i`PHí;ͦ}„H„1X>æ¾%‹¶| ’ö`i „µfæ0ãóÿv‹•üâ׎Úg^¯ß9ñÖ ŠüyÈW•+•¬3R™ç%Kvy\üÆÜIj@”¶ù÷ö(à ¡L)_Mô[‘ïfFYt{…ü+%1ÓƒÀáø=²y=#½Å‚ðõ \Åí£® ÿíš,¾ƒÛúcñï)è6ÀÚE*oõtœgA7¤©Dìesäje‘*a8;½¤MGÁÊêŠÃQK:§iÌ­—=žZ‘wÒýAô89—]æÍÅýÿ:×m·a€iŽ& t ¨×º­æ¿;mà ·x¾’fMòF <W$\I$Œ’6CDÉñ¤ýgÏ# 8ߌè;UKûåöðz}'GKµ{±…ætÏw™¼;ÄL_ó ÞÃD‚¿¬‰x¾m%±iL·xe°J°q–—Àu‡üÙj±¨!2ùÖèa»I¥ÞKͯ¶.0xKk*ë]’çÙ——DqWˆœ×ÔI«xáßïfÀÿ_Gí§æç½¬ÌtŠæ1|#È“ ?änÖ;ÜSõ"é„Ûmàlm5s¾ÙD¡3}Vì äêªÖGô à©-Ø3DÓ¤%Ske,\ʆHÓøï1ÇDrWå5ˆo[êä.Ô£B¾hpÁî^Q§ýèV÷õÃø°›Àȼ½ár¹¾Óü«Òö»ƒc¦=ó/U;)ÇÞ(ßu&^ÚÏŠzÈT½¡yöôvøìwÕªaa˜CíÎ0p k"[(«—ÕÖÙ—Ãʉ>â'®O'£¨…¿¼<‹|šáЗø2++M'¿÷6GÌßšé>Yù›´ñY_çâB’­ £4i»³ÒÏèâ«+–F$PJ[ÝË!ÑN´Ž Ãc:€!€% dýõ¦,ý©Œ½½nýO&Õ&%ÔÒ²“ëš§65I(»òHv-ˆx<¢ÅÌŽR¼Å¶Ců“^³2Û¥˜ˆ¯‹(,-®“‹…6O]?Y½’rÊ¢ÁÕ³-õý»+ôo¸‰ÃÆšÓJ¢ñ(‚U8Šsýž5™5½ô%TÝàs&½Rf’ÛôˆÅNõ'Ét:TÖ™?F´Ö9>“ ¯ä­hÓrmUWÆôÏIÄ·iGúózäîI;mÓº6kÞ«JCóX_;«§f¸2s‘WÖïæ"ÚH*3ÖQÒhßáÈ~9+ÖéœZ@ (éÁ7JŒ (hG_ÓOêv«ä,x~¤öxDõ=[×iM—¹ æ½þUg3lÃ!­Aëã³Ó†ðñ°$yAÒ@ ˃ٴȺ£¹bI Ä2€Ý&¨cµýaôêÏûø { ½ –™‡au÷öÞ§éè1öÙÕež¾iqënOÝû{—&:U§Çã´ªFÝ/OLY¸©Ð©+æ,ÀæôL‡“’r;Wï妺…¬/‡âi÷ °×ǼllýÀ_)@Œ_ž‡üTY-5öP݃E9˜• Ô¨/ÉP=JIØévF,ׂÆ~ß´“¡öR€3ë¾g@dšSYšº$¼l>Ý?ïÐÅFœ–xÀñ ŽrŽhÝ=ý¼,“Q}{õ& .‰‘Ì$@SŸ7#¯‚Ó¯¶X¤|ã!Ôsˆ#äÏ»~Óô]{!?Rº"æRÿ3äV> ~’ÅÝŒÞ YÐéÐ*¿×£…©^Çÿ¼ëékI[χ¤ÒºS޽Êì×õ!&ÞW ®dfiSl[þ^H0óùÎ@ ;î`Ñ8é3Q)Læüõ§dŸÊGIµ¦c5èÔ¡EŒ‘åqЪ=â³0<Òºr¯fPBBšÞçOk»ó; ³NU¾×é&jtCÈ*8Ï£*¬5¼Æ"ÑFާZÞ™4£N)ä’Éßzk €˜ NßrNHÒË'Óqä\P@ –Å P¾}‘îÌ2{{8U˜ t/6Ag$CqV_7d¦ )ãZÍwC}¿uZ{]šênÞ3×à7€ćmSÁ>ÛL´ •q_çêãsÖ¿à[sÍUž”äM·í«´Q¶)ݯæ{,<ɯÒ{·xjUr¨.Ë1g Çg ²) 7ID\-¨OäÏÀ}CQƒë@é›AËwÏq´±LåO¥ùv0ß’êÔ5OúqMÙ:lÑúd›¸“–)$ëFÆÓÎ3áÿ¤ ó”8Õ½K¢ÿFûï›Ww× Z¬uÛ;vOô£ÕTr76$ˆ°dWË—Ýã»ƬÛU‹Ä†E’4£ÁŒ9S§æõ$Ñb½—Eà+ñfÍQ¸d ñL°P£yÓù¼îçPüÅ?æiò…qÓ6¡“X’©;­‰â’j…/rÓﮆÒ· 6ÿlãûrY"F;dMw«—ÞN(¥CÜÓ…c™­TLf’_µ¿gÓLaïÔìÔ¯=üÌ‚&oÀåñqì1¡x•9 tVÑ*x€{<ˆù :æº PO°h,ø­™ÎTÆèƒ¡Dv°D¨ä[¨¹@Õ5»Þ¢~–½)õË8‡°‚–ºm×þüÝüÚ·í¼­¯‡nnÍV÷g‘&ãëº@„‚B.I©É®ÂÛÜ; OŽ]à N…OP¹ÒË*p<¤ûígÃCwMn ]ó|h0«»²Èy²‘Fk¼]øé']ªIk»±tñ»f^Ÿ·¤®¿¬§Ëá {¦ êÞ˜–ìZ|)*_;Ñ¿ÿ´u°¹ Ÿuëâµâ\‚¨3–¨'mp±í¼±ìë| _Œ-½¨^K@VIŠX»gvD´A5üŒÓG'a]zÑ<ŸõÞÌø–¶ÒqñÅź¤Õ[jDøå |s m‹fA¤ù\ÿLu_¸lœ‡Æµq!>4ó=ó:».gm¤r²ð¢Þs½.9ÕHÁ€‡Îø“µì(®ïýdz٤²Ñ×LW;d>Ïc„òj¬í'1Dl”ñ #ùnc&¶ëÊ¡!x—Fsìaž±«X¸yl陌crM3°¾( /ë‰â{ìý»ËS¶«gá×›y¼ Ôû0ž ¥ÖÄ`±aÑN«’—>Ðp:êu‡F0ö}+YeàÚé· ÔŹ‰sg }¤2¡5)w áÁ¤ÿ6Ý}‚rn¥õ™>Sê­ýËûõ©f1P%nÞ‚:m|’x7pÅßd’Áz—ò-è²00‚ˆ ˆ@¨¦c¸x]©ÐÉݮ΄‰ ¸é¡, J#Å#ÿyË'Ñ,1|j(t”D¼‚N~Â÷ÏT§Çéã·ï©ûÓªr¼5âR"cþ8í0CHú’¯P@âïGNj®3GûÔ<»Ü*\Çó?CªÙ#]© ‹Ö: ýô;ow2ž³ê2;¥ZV&Vü×I‰'ù%‰ç§iªØC%g×%0ï6xqêѪÍŸ\,»®åi#WÄíÓ´«x#43g“Æ+òÄÖ÷•¤À޶>çØÕnù·<ØÑú½ ?„r ?µ/(æ‰êfõl A`e¿:Ô¯öÜø¹Þg¬6”žå»µåòcõ&rÏÕÌ£¡èÓÑퟦ)›‹úiEζ ƒ{Zòßî™oò$°œìÛê~÷L~ºÂæÓÊß”÷9”óh!µ¥Ì周z‚X´QÀ"ÄÙÉ–ç¢ì%ƒ£&™þÝnCé|° U—­¥ÏJ oytAÞ6¿ãÚeiæn*hÝΊºÐª>O|Ý’»ú¸µ©í!-)Hx´MÊ®Á^Vð½Ó`ér~ô•9°GêMdùêºætaÑ­,רë·.׿ ;²_Òˆp±Æ‰ñÞs‡Ô;v0ºšù¾^uáúyžG"¦i™4ìÒk Èý·gáë~*qµ¬œsÿçͲv:+ Óˆþœû ¹ßýþ‹ü9%«fnwùÆRkû0xnËLí¸íaÍÊ~ný[~¶IX1ô}ÊFý1¨Sƒ÷ÊçŸ(J’Ë|®fo`õ¾/àŸ¨Cw°?¸>úQ‘”B“áeëŽï,'yþåY@µ°1Ô‰Sgqé÷{Ñûj﬊v6³§=ÚͨÁ¿gnÃB¥þj”™…±¼C l ­ »“_“hŠƒ¦ A+!¥Hö­E©^ß‚“ïïu-ç²2Bœ½&sŒa u9€&Ùt~¥5^/uÒQÛ‡‹htì°{¡%2–E(­î±¦qrð*D1~{¤¢Æéç,²%BZôÒÅ8wi\[å& PZ £Å` Ò±¤oaYêªy8 `íLqbćUZèòáÏTûŸÕ´c©Â[6Â7%,{g+÷‰ÏuŸ çËâÊ(°—c(ƒã~9&µtËäꛑð߉&V–«êàl› ¿‘Y\ÒZ§AâeálàõšU´í[ަÚÌ“›ÓtþÜ{ì0âÏ8êâ*¸?Ù—¢jIKDª»â»÷Ÿ¾AQñÙ¼áOiÇ8gFÂ…¯·öF6’?j6¢ªïú„²™;EVv\N¹ e(þ`aöæõ7¬‹´›tÑZ-ÉÑ„iߤ…eËÚˆž=Hf}Gd 6à†]Â1¨žËÀûpÓ°#ýÌ .åÒGŒüYŠâ“ÁK½.~Â.šç~ »Ðf€ Ì©õ< ~‹Hhhü‹ÍfÿȪ&)ÓŸÄjôe1w”x..Ó´K]D¸|\·8ßÏ~"‹8Ä6«ÓÆtS ÊHo_Kr€85{M‘‰«#.RÊ=B°{PföÒs—¯ d"$ö%?ÍçJ}[4kK;·¬Õ*æ/ *¼ì=«~2òùñßåÇ';ÏÜn.!ª³tŒöyM’³r¯'`'7ü$Ž8… YgfïÇ# =ù¹G eD‡S–—ôJ]EŒÛÍ|Þ­Ú )]?šÕÒò€  ¤¾Sñ«9‹þ,8´ôIè)4 «%цQbŒT¶¾/ J=æ)ñí³Mʺ͡Y!/°m¸ Š ¤&ü·×Ó¸Òþ";§QÙ÷¼/3 Xsv¨’õæT'K¹³1ܹ\§ÿyÏÅ]nñ™ÈF:VööC ­ß(àÌ+ÿ°B 㵧LÊ¿s{-I)³×ôLô…êuDý‚wÏ^ð÷ÇÚ”Ô“ÀÔ|²c–¼ùÙ+  ·V4ðO¶ôí´xxUÐ_ÛáN™ =¨¯âmóžMúÔIËíò¸gä/óé«'_þÎïÖŸÎB»Õ–é_ÙØëOX} ©nÆ~!]âs¢çy|Ö9m-°?9‰©dÅ•@ÛˆÍïýTö6¡X#TÚÑÞ•à=þ¹‹æUÙPo{Æe$Ð¥®› K°Ë÷Zkín:YY‘ø³üMÜëÐÿ ;Ϧå¿áâqZæÃ2sÂXÉÏßfå‡×U0{; 8ÌB¸Ä ÷nÏ G›bÄcØ‚")“Ϧ¿Dp¥•oG>9½íˆslrnWœ²«~Q1>ó…§»C¥ÔùjS¬c3´Š·î°IâÖ.9Ž HQP7Ô ™ô«'Y‘:Kåϙج«+€Óv"mÄòÓFÃ6_JP]×éþü§u èÙúæ_5úôØÀv̦ZÏ=á﫨Håϛڪ@ Ôu.ýÝÁ<‰˜=ï4â1š›|[Œ×GÆ“MUý?–s—òù¿DFOÎì[È*ï~ևܦ†•‡£”ÄWyjéΜÉ8:klä§@ÇTXö,æMKS@ß–…/G"rOà²3…9«†4U×ÓîsWˆ(K×h[á\Á·FƒA°8„t]Â)±ï@¯V`¢«vH_¿«þ?ȯN™vCsGÕáÈúîô,„$’4ÖŸ’7ì?ÚÁÄÏf.gWÞÕFŠ>×*Ý[l7UcPXC! æö#y7ËHùˆ ¹ÕRˆ©Ç„ EX@žjò¥ç›åÂ÷9èy°Õ˜J›E.ˆ!âÃØãÂ.>Ú~Û{Û¢qÆÌ à_ån=<6± C,Rp;YØí˹wÎùkäf^0=6å„Q¥(±ø#†EéI/õÆõÃnþ¦Ã_Úú¼ÎÒGíÐÔ¼‡^»ÜI»íK{!˜I™!‚@HA‘jþ‚Rï€{À¡FA ¼ &ÒÍ?"””R‡Õ‰@nh8h‰Ã¬ý’A~D7˜8“åÀ HŒ1ζXˆlâ©qæÁ1R¾’ëÁ_©[¨z&žð…¡~x lC=hœ4Mo¬Ã }ë£}iŠÅH€&=ÁC¼±²Ú±<øB莹?eöúxqN¹#¨ "Á€I!#(•$ʉ#" ZG]##$ˆXFb£+A E{ÀJDÆ# ª‰éàŠ^€Š2**YE1Eh [Dl‚Id@@EBÂ"Ùd@A¡Á(@È-°PSk.º‘nˆ‚Ý ª—\JTA¸‚ŠÝ .—‹x~û¶<¿Òêkä¼ëÀmfÇKÛHÈ¥¾”êÕAf äý—øP±>e¾×$ú/ƒœÎ&VFñX½1ÐWåX4žKYÝÀå°¼-$ˆPÿ)…üŸŠ;ÔvGÊà}YZÍÿéþÜ'CHÛÉtÿ¼ï"*tAm"*.â"!´ÄÓ÷tÿùŠ É2šÎ ?¾p%_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÊùϽ÷€îß$†ôî÷¯¾ºù^wvóÖî-;ÊÌD÷ÝW}½ë®é¾ë»^ú»p­eó½î÷n«{wÞÞ÷s·k¬—Þó­¾îúúåòÖÕ·¾ûpªŒ„ÙLODÓ L=LIäm M0FShÂ`šMöL „4Íш1SÍ5=¤§´ÈÚž‚žž‚ži©´ja h4a 4h éM§¢¡•4ƓѩåOhÒa`MMš c SÄÄÃSЧš „z†M©§‰ˆÊy4›#!µ ¤Ì“TüÈLC#LšO#&S'©£ ›ÊŸ”ýQâzš§æ©?SÀ§“ ˆ›JžÃfš)àÒ§ž…Oô$zzˆô16L¦›Bz©í=Ié=1OÔò©úfI˜™ â44É‘ª{LDÊy2ž"iú¦5O5OÐM‰‘¦<…6AMš&¦)äÃHÊ…TSÁ£@©ûA¡â l5Iø ä¦LFCMÊf¦'‰“JxL§šLSz¨ü™M¦hR~™ S1M„žL˜¦ÓÒž`™&ÓSÊzM…<šjxLQíeOÕ ¤›FIâbdÈSòdÓM1OM252dÑ©´žSÚØLSF˜Õ<ša2i†¦je<)êc&i©¦Sb›F5ô“ÓÔѦÒ0šh2i”ýõO&Sd ™OjjySH$”)ŠžG©‰OcHÒby¦Sfš¦Ÿ¤ÓÔžL µOiOLja=S1’ž56I„ÍSÔñ#Ú¦˜5=0Òž'©™Iài¢Ÿ¢SmF“Ôöšzd£õOhOI5<Ñ=SÔf)é©áF'Ì©œ4bxpücb·=Ý];^ P‚c‰±ð<& XÀI‘„@èðÃã0 ŸÕÞ—é|TÚkܬYüì¦Îžö¼Ýý‰ú’’ÏuÞÕ¹?>†<7Û«m¦@OîíÝ:ÅM7<œAÅ\ÕñŽ›e\|8”»¯ðg6™î«ò”ˆE€ý%CÚÂ`º(¤Æüü}…ûq6Bá^?Jû|žÿd¡Ü~pQ¡f«Z_ì²>DšÓ¿Uñ^³ ŠÄ›âƒ_¦zÓ¬Ô²j}òéŽüõ‹!Dæ’ûŒ9ªþoÉ/}Ë:bd«'rËh-/q½›˜ùžä]­ÇlMˆßÅ7SÆì‚ýÇ?‹èÙˆ <󤛹Ó7§Ùó•ÀÚEßyâ/ª>¥ËÏp©Šà™(õHÚ&,¦w@šÄÑ2ºÝÃ8æÄBI< ¿L.àhDª†&PãùȱÁ<0à ñ7xÅv&¯™ziÝ?F,Z/EÊÄ;|wÒ?¡‚¾GCOO«VämÚò6 Å’aè“ ì(‘ªî@jð)h×QX*ËN_´ád\ëd3Lñaà謅gÖÓZkIÈV'Þ«Œì?d#SdÀu2€q,"Q®,€ÎkR>°u › 0=GP81Ÿû=j€ú_kàOkîØ»÷§ìg¿´£C‚a‡ÝßJÄü:Z—»ÿ×uŽÜ Ì+5D¤?Z=ü5IÇ/Ý¡õ°QþæT <)p#vÀgTË÷i(ïR ¢,…ÖRÀ òP³·=_@¹hëL¶ê½\îÙߤÓ!Ó•lHX"˜¸¥!ÿוyïÿ/²ò_$’I÷—~›âíçýV{²Ü·½sm™ÇÔøÞgSg‚œ¨ÄÖÚïßã†Io÷_ø1·¿ã­œ½a£ˆ[îÄP U®ÒÛ´“t[· ¨FÉíoyÀ<§Âœ57ÎÃÚ‚™"BùŒëY- )ùY†®ÛEtæıÌÖ5ñÿdI¼o}—Ó–£ÞÍS—uǺúÄ'ßxS6¯8«fÈï"úôdÊŽjMǨQS%Ów2›M½þù+„ý{ú®ž–+©ÇÌÒ;vÒû7À{?;”–¯Ë‚=Ÿ>gȋȀ|¬¦šbâ“ 8L¼² ëC²9 Ì[™d†Hø˜¬¬M& H*™;dàH°•»I™ô´;LOdáâ/;¸¿ƒ€Îàád¤ùòœÆµ¯¿[×83Ú0H$òœÊÄè½a1tô1?s' …D5ø»wî¯þ-[š'g‰ ý± ¶Zí6­¦o3çåzó©U]Æ" -ÜX;]¶‰\ù,*PÓÏ7_ñ½qR‘àd…§œ©¢¿·ÅëýF2Ê–Ý0òÂ"Q ±·ÏÕ7¹Z|kÁ’_ꪮ—Õ·Ã$rdXž æz½ÝçRȾÙhxìh˜ÎU]é1ÆRÎÓUC—”ö»[ })¬ÄmðÔ˜ƒMC´¶<‘Xæ@GÂfý*Ì”éÕ`['¯œçJ½Mª3 J׸€|æE[Súï‘ÓŠ#1¬ðûC€²ó’÷·ÐûÈg‰Ž4I|‘nêÀӳæÍ¿ø¾o¨åoû%I_…Q³ód†x˜[j˜ÖÜ*[&eT.  Ä @^x¬ˆüI¿q /<ÿ¢n—I{‘eó5ãËûÚÆáÜH.>±‡Ž%‘&ØG&m-÷’’¸moËÒ6 bTp£ÔçõRòÇ´ļ}ðλV) Û¨’ùjÁE(~wù6¾^Ä¥]bñ 8–%-4GP³Ëíï ‹K3®Â'¿_”‚N@àÐ`N IÃÃç£4o/¥n!&4çücJד9 íI„Qc‰u…}gÞ9,Ãß"¸k"Àè;›Š‘ñóc:vêU© Â)hz4ɾ¿LCÑøH: —öøô¦sùÞ„N8_/Nb¾¨S=á8×´Tq´V‰[z“W{äXoþ$ à (nK±Yz­¹Ô—%¶ÓxR(y½¾È×Ñ»¢‹S: ;r>êN+ž¯¢€s¥3Í+ß D!(2ÀŒ™lXª ÂCö­QˆÎÍM¾gƒF¨v§^R Ë2¹êGDÚ+Ñ2O$ÀÃ[J¦™ðœ¾—Iyã(*úŠ!®v¢ƒd Z¸#ŒÅÔÛã6ªñ*·ûL}ÄvÒÎt‘k6t›_D—#UöÙÙŽã0+ŽjÖ^«ßmƒ~B䨸šsÕ‘ñÉtƒ½S\¹‹[6øx€xÚöTƒáÐÌH[½>õvNÄ Ïäøü> „†ͨ pgyª³ cÁªµnë ŒçèB5ˆõ‹â_KíÀ¯y»]ÃÝ[¹ÁJí¥vÁeÌ^ÛpÉ8ÖcÿÞÐqR#%)Ëîý÷í÷Ñ OqŽó’Írõ™åjjÍ÷ ú]ûõÇÜB£Oq&^=XÓLjXæçœ¤>Ãx–é9ŽÄËW°æ ucÙ=Y߯ZÇ ó:ÙP¡=Í\6årW=@3ƒº¡‡õmŠÐml—+1ºG{ÏTC›Jý Â‘› ¬Ä ò&…ƒÊÄ)2uö_EâQ6uÐì .q‹î¿—sÃï5’Sl÷‘5méâ».©Z´YÃlö¡Y8cðYæÉÁP“ënÞ¼øCþü*ѳ¼»ŸZÝkåx­ÝλçˆaÁ”ÅÙ½@ÃÍqH…3|Î¥&äXy"Þ>ÚÑ;…q’©¦‹Þ'lÛP2l`:@™”…špä š¾ï=âïKæéøß-ö—‹ñ·¼ÑI<ü~VøØ±WØbÏW¨¥Ü:ÃÍ)g=µÚµJ¸Ü.ZÄQ)eZ&¡½×x£:°XlÜÉ;ôJ禙 ÑuiV{l»ÑĆìérà'Háw>¬ ·ÚäN* ^œA»ïRâFKë^$¸w»í~|Œ¥ÒÿyÑ,pÈ”,°1º¯ý`'s'å5Ê1f~;@̸۽٠%¡/²Yÿ[(Ú²c© @±:ÅЉ^_yx=å¯ÂãäTéÐ&žTÁî š‡¤Ž eI.{¤&;ðùÖ|Ó7òVNÇ?ZLtÞ7HŠ}÷JkûÇ*ê}í·íÁªZ51~*a©ƒ’ÝÄB.LéOn¼NLqÄââtw1?îàcÐó³ˆ2øi¾!_ód)~å{¸n/ÊqûÌöI+ÿRË'Ÿ¶æúbh•²Š±F—¸)K‡ñˆB`tKñ"­˜ñ]ÆÏ<3Û×RÊ Go±«²Æ¶v}ß&ר|/Åóñ-aH(³‚½Hh0—­‰„PèëwgÂÉ’ëÖ?°m­ÖC{uæX¡qž°1ZŸk"ék/!èš^Þ<ù…ïÆÒp&¯D#ÞáõklÈ&ð‘R¯ˆþ€ áléÛG–§<'+50Éè ÎÍWý/ôÑ¢¢-¹l½ì"äC­©<þ¾w:2 /bÈ[Σcj”¦'Ôtøv w$t÷=ļ3ÉpFÆ~ô|Ó߀–5îÛGFæwñPÈûV5sѸ Äå_Æ[;fˆ-ˆn½So—²Zp½› Çïùt¯A¹íØ_<2ô7ýpË£s[Ô{²ÛÏöšè,Jqo'¸Ä.܇ƒ1ñÑd<`$Á°—‰–ú³BŠìäÎ6ÑÌ–ñ,º(Ívš£¿ˆú6À¸«sBužB•ÜË\•›Ý*O„ò!ÎH±ú lü£¶Ö¬40Ò_µÉo¼~„»Ó"•ß%é n€™Zb/Sà–za‘×°rß»øäWôU0Þh¨!ñ›ÏÄ¥M‚Pº´¼MT¤Š¯Ò*j$MQ:ÿøöֳ晋Úñåñ½¬|ûc.MŸ¦§ÆÔüÁ8Ë‘_¨Bˆh"Í&e³-Lä¡9©6pd!;ëKr,wCØ_g{{/WÜ©­Ê(´A>ÝVÐ<ëÏ[·êG#B£®,ϼQºû¼¶(> ³°Ms¹vÓØ5 @¦õùx’|¢?4½ßÍá9)O«ä×TLó" ª·$ø7׺TuÔæíàù«'ÿÞãDâ}%ž ŸP3rž|ÓÞÑ.0„2àp›0@LPÀÉi½“¯K‹_"ûAT3/•w9]—ön?Ö³Ìùê÷w£Gq7Ìp_´´7WM_†âSÑYÌVÿè%°1UœÿëËøl":²·ÀÛC*{†àCÀœûìÅÆå¡…œÔVÇá}¾;úDnðmŒ9i^°¯TœV4;f;îœn»mZߊŒÆ½' ‚)õœ@6“@ý¥ ë¯mð²Bh=ÀÞ¦ K@’üÓywͶM R@5:|sÁ Î$\x^ §^ZU ™=P€q^IúÞ ïëcûë’¹›Òzv‡ ZÜè2~ãZTͨX˜§Q™_–!=m­¸eî(µ§›&,n.Á ÿn±EÐ Ðzþ¥ÈWû-%g“†­Ê@‹–.§såÒç¯}ÝÕì²£Œì+èÕ–p´–ÜPömJ;ÉóŠqúZ;÷ÉBèR®»6ÿc䮄SÜ·*%Þ¨ ka5Ò"pꀂÇa‘Ùš—>±öé‘ú·å ¾G¶ÉÕßCaË^ÚO\î¶£'ZÖc5›Î‚ûËÇcU8É)ë#]È5É¢ôXFyrvˆ ¢6¾s¨ïÀì³$cØ‚bhpû$ ´=@üøWÎ*îËC(ÉUù„ãë^ê•Q´ôú´öƒ}È.îú‘×2ž1ÏÕÿ‡ÿií®N%&ý'®ÔÍŸ„òï?–¢îOÇ!.(Fþ¢Še¾À~šöeaæs½íÉ\D2L]+ÝwùÒßä‹ûúHëŠDá˜Ìl;‹|˜âçᮢhüAÔ7Çfž=R½^ʘöf3•,kµ òáÍwVò…åKôUm ü–@¾êÌD– k+v·ÛÈãŽÛrú ði­`n Â_ô2P{Ò]¶[¥L‰NøTéª÷aÊÕö¼Tò8ãŒ0Q–ûwù >~ýÛá]jÌ5ËÑÜ4âùåÜh¾„ÔÏ.I¬õ>‹Æ{Ó&ýðñ_ÂK…gª»”m’*¹æDL‡¼ÿPÇaÔfxZÐÁåƒbƒ ¼a«©Ë2´eÒäÁU!øM2ÑÆnx˜ªpØ Ð:HcüaŒ oŽb}Ó°ÙÒ7sÐÀéo—3˜<ëk绸‹ë’R%ÊfÊa_ùÖ¢ÄqÚî­Ëö®}ÀIJsŸ‚R)µËÚ˜S‘U¥àÐ4vMœÏiÜHuò¥1'½ò{}êÈwº{ß~¨ñmî3C™ƒÂÍ)° i˜º•sƯÅð«d`ì5· Þ¸ÏèÁD?[S8¾Œ¯®{G½¼—íˆ$&™à*Õ˜_NŒØ€µ’L†Ì`/ˆ Ú;ƆãýãÆÎ#°|qɸLÏê¥le f’tüÙJ•CCýäß Ø±iÝÚE,ßͽպ¥È­Þø0k"9S´jéæxw?<„4µªJˆTã°lžûʸî¼%Qm¶©0éõO3Ø/…»ñëÙ h)ø ÆfôãH:“yì zÓ@Ös½òÌáø4½É?O»aÑÒÿ"™.—7uð-sPÌI±wŽ~êÈ“ßr •º­Od0ÄÓW~”ƒVFóq÷ɘ'Òð‰oG2áNýÂV9²Ì/-7‚å:<‘ 7߆Š:ŽeHؽoÙf›æ¯ N‹Dñ=Pên´·5»(¯àÁbéM̬:¹mç±4šV1(Œ½Hò’‡H<+Ü^k!ÅÀíÎŽŠ2‰èå=9Fè¸áý*ÒiŒ‹D/ÚR§åFeT ‹|¶,ÅÅO"½ëoÑÝÂghEsºš Ýo—á²”¦XZq•/¯“Ùƒy%i´-O£^ª‘Õ­¼•—ñmZ¹hš¨»¢Ç±]KeS·#Êíy¨më¡}¦´¯ºöD…=‡ª?ÓÁjý¦–=ŠGô©š;o•îs`Ô×fÓxÜAÄ:x3âÃ,Çÿ\ Úb²O9ôWö5Ñ|‹IKätøšê½©m’› ÛÞâ\T;¦[Æu›>Zmª£ \±9¢aš0÷}³y­—yñk¶9q‚«wRÆÐyRdZÌç\îò$íΊò…5~&‘õš˜×T½I¥™ÞÊ}üy?õÃ,­¤ËŒØ,rÊ‘èæÑî~–ÊácSY˜·€hU" çõÑ(3ýoŸ†ÈóÛßuNdf }eL«xÞ# ­,ê§sÍý90AÓL˜@•þ­ƒÅ^îÐ9©Ø^ cKï6"‡ âØqþð‘ ’l#áGû£HVÅ®¶ãoy~pýR|#¥¶˜–£‘þá€ä¹]œeÈŠ\µ=“!×e3®Ä?!w›ÝÅœæ³þŠuje W3˜õ6ÀZþ§\TÔå=´ÈÇ©;v]f ¬qÜñóŠhïlµ0ꢴRõaŒmëA‚¹ÅezÂEcžæÅű®¸®ÊÁ /=½èRÅ*¬¥U .øIó‚®¾§ùš¤<@aɬIÎ~gšO~¯Ô¬wnÿ9©K^â–Õ"LÒ‹«¹ûY(­@v”daq ˜bAL*®©(<^oð*|¿&+ËåY‰!熕ñ_8cW¯"«><û­î¥’ª•!±ºlþöv%P°õßëÛ¶Ë7·GNlkŸ€íAìžüëÊþ¶TØyfvëä7ª¹´Ø V/ Öò5O©œâàtçs‹±r”]ùZ³ÏZQÁð"“…O 9ï%ÒÕLlîè¢=ùs‹¶ë PÞ+šMÐ# B¿;¯Óãvh}{^ï°<éÖ=Ã’·ÄÄW+ÚPê_]ì?cµ’›»òLûÓð鬣'$šJöœô+åånþ²#+uUJÔè`ÊÞYÌî ñ2[ÛXï-îߊK~Z°ãK‘. Œ×ÜÛ^Òž˜­ÜE¹Žg¿PX阣ì7ý,“µ4_ö%о¼²žæfÆrPWi^= Õ4V¤ÓÿÕ}†îl¡ÂTõ‡æ‹kã³3r4½Õ¦ŠÑÇ>8k-—뎺4æjhØ}îm㹕µf¼2ï¾’0«£ß4Y~˲§…Ø–__à×êÀrì直æ'Å`‰`›ì2^röÒøÃ”0ÉOgÚ¥¤³7ÄÖ…5ñjq&4GÈk¨a¢+lD„§…T’$ÕÁ Xî†ëæ ãQ¼~1?’ùZk?¤wôKÖÚ i¶-8ϯjBËØ}¬?¿&j‰w/¥g‚X *‰¯ga]W HK ¡ÊXÖeKU5r1iQÁ„)YxÞ}\{"ÉÝÏŒQBÜûx*»*àã­œkßfOÀžÌA}WcB©‹©ˆ¸ÚLözwŒ<¢MZíhÓe_$ÜÌîOˆ~àxêæØÌ„¡ôŽÞž¥¶BÅ1¯mü/âö½2¶P[DÜØš-” åÈóžQÍ¿cî^¬NaO™Xyð&3Š<è6>vïíWß°V£ s{Á„9p·>hÈœrðËŽp1/Áœ„xÛjì¡Øy5åñ#"TuÂÔ .¿ù6!¨œEoÒ£,k“×5ÕdãŠëTnÉÆnÿ^;aÈ73‰ GmNNbcR! ¬4˜øÿ°bu ¦~Jø%§ ã¾²ŽÚÁÉê<®kL}8¬€ Ù•¡Åô&óÚÉW{S¦þ?êÈ·˜ ÿž*G{7ÏÕ`Ûe·øÛ˜%Ý'ã±3?~oœIhÉ”svÍÀ‚n×à­ë0’”ÆB÷'ó`äN!Ç—ÿ-(ÚtqKìÊØ£^!з`´VamÞÖ²Û@‚º—ðÉ1œ²©Þ—}æ-¨wãy¬Ë¹Ådú¢0x Q.µT”^ØÌM‹ˆ_¾{™ò¯ì*j]cŸš÷Kg9Í5½ß:ó:?·Gnçn½AD±s’KA±Æ6Ö%MbåJa7RÚTÜÈip>ŸÜ#p†‰D‰núIåßäu#|ר˜•ËLte"Jf¶ÖˆÃƒjžMÖ5yíý…¦>¿÷‘£ð&E©³˜¿ÕøïÊäv2ÚÙ’'¸˜ó]}$b»Ü^ýÅGd‹=¦¨Í#X¥”ªëþ/÷Ê*©ç~©ç4M/š~n˜„v`)éÃ{"“ÓÞ¥BPáÈyÓÝyÍüüë›[sœÁ9rPôY€Ü²F·˜fqý>¾Éê?“©ÀØàLù<­œ÷ßAgu*šLÌÎûÛ^ß^ŒÝ0+×­ pgkýç(jwÄe·sò*ÁL a×èž à—]±sݾM;ú˜Þ, ¨­…çšUð+L4Ä»eó¬z@ë·ÏåÃF8zdî´wÓ~R1v<ÙoõÂJ¿h´Vžóxâàœ¯æiïã°¥3ƒ1}P.e3ã0îh%¿¿18L.%`iÖÛÂo–L¿˜Óëí¢ÆøWa ‘þk/‘¢ýÊiU:vx›cm‘Ð]¥¿å5Ü'ß³=ªUºÄŬDÃ+«ð´ÉõŽúNàR§ƒq¼R=“$Pý…|­%5úº8=™ˆŒÖîXÌ\»l¬àŸêj•˜œt%{·òZQÖâ{qÿ!º¦¶á¿|íÜ·ÍŸö4vúEFË= Q‚1Lý?ðx'ÔYt\ïÌä`#àHfƒçKægxõ`БˆMQ2«ªu/iüªax”NúgŒQ‘’ãÿxŠP¹0ó¶ 1#h$U«¿}.DS|é´ÙzY;ÕþErö”Ó.n „@íå½íPioÿsÅ•ùp‚ñ3”ÄdågW7h!vúÛ¼z¡c Y—u—£×x³ ÓEAëþÚ‘U*O°#ÎñÌÓ¥F§Æ2á\›ÁI–W5Iä<ÀµùõÊk¬ )í7[[4# ª»öéû©ªl«__ù™—Ïq|³§Ð÷5G­ïb\©ú…ôÓ³Sž^"c¬—W©ORÿóôÈÙðnùy'ò÷ço÷oO2ÉÊäÕÚck—g°ýžLÊâYmÚ©í„Њ+bÍýàT:»DÿIÆ&¤F$øÙAo ñí¥+ÞÓi°2žvÿ¹œœ¿ BHHI¼Æ“sKoâx•;=ëÞóˆP­ÖÉý¾Ç©ÛD°hßi}rìë>ÊÂ5àå¸ü{g›âÔ«¹MÍtË—„‹êÓvR×›öè‹Èiƒ”Š}CFØ®ag+…ŸÙ‡7ä XÖËKÕQ‡3z›‹Çõñ²,:-À­S1­0¾†|ý¼nLàfq3OÒ³ˆ—÷8¬XûaØ"-KÿÌ÷Iš8ä@]T…WÿrE8P«_õzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.693785989 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1.dat.bz20000644016037001603700000007535013607166133034124 0ustar00hutter2hutter200000000000000BZh91AY&SY0HfÆ ÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàEŸ.¨¥ÚÛƒ†Ò»‘SpgÀ{ðç@ @!Hû6·½Ü€*¨Twy®fδzw²·ºYÝÞtçÛí¶(PúzÜßlͪøìñ{m–©T¶LÍ]͵®ë»»£WtŽÑ\廫]jæÍJ™25¶ÝÍ.[d›U›l¶Íj­«X™+·]³F#@mwZܸdž©&Bj4LG©“4&ÔÐdÉ‚i£M4b§éÐi“L šÅ=©µ=A€˜#&Ó0Á¡2`L* Õ&…=4@™¡ 4i£@bñ LM À&&ÄшdÓMi†ŒŒ™¢mh'“F€SÚ¤&Ñ¢4À“LLFÐSÂ`i6¦™¡hÉ“#MSÆF˜$ÚOLTüš&M=dh§´5=OMM“Iå1¡3#&ª~b4jm é£LD¡§þ”ªi¿ÿU)=40§¨ÓG“#h)íSòjž Äm#C Ä!£M4ž hhÐd€É“@4dÑ Ó@4h  ’M'©‘Õ=¦„ÚSOA4ÔÌiO=4ÓM'¨zžšƒ'êMêš=O=4ÓHôÔc!=&ÔôõChÉ1©ê1©§©¡¦Ô6šF›SÉ©êm!èPƦÔzdIêzQ $’@LC&š4ÀƒTôô4Æ“L4ÓIå6‰£ x$Ì&Â5–)пbÃ#ÉÌ —xAþbªL5Ñšõ¬ܾÐ6Áûx!çG—Ä5 C:tUþ!%¨^ötÁSÍõ㿸µ£ƒç ¾QââÆq9D#õ€ã@ÐÒ„ q{”%RÃofömèÖß‹6€« §ŠÁLt5r…ÃØ²Ø†> ˜Ïô¸ík…¾üoùB ØWü‚R`Æ¡m±BrÕ¨ãö¨\h#Q\­Çã7èD¢qÇØˆ3Mó2c¡f3“ ê`Ó€+ùƒõòkè‡Z¢Š¿Ê ¡ç\µ¢ºXC- êÁ[d3WFWŒ.%‚v—¤ká_ù n#XÒ7ÃØhI(Žq¿°7”DÛ‹Å mä¶ ÷bÀؤj–ãÇDÇ¿V hѱoÓz}Ñ †FÖÀe:ˆ‚ Ží5t(b‚Žˆ-/…ØÍ~lSoEEÎ:¾b^Èl·ŒÁt:tcUðGÀ†t^çŽåP¬DWAl°Y6PŽ£€>Tu…ìxŒïƒô‚¥Ø8 ˜G^ø\?Œ>8Íõ“ƒ#€WŲØË: \˵`¶ƒ‹prh"È!5åô6æ5ÄÀs ®ý Ðí—§'ÒL‡ÚR„S³Ýëb=öw\’Ü͸%_tOÄФÂ5,’I 7Ûz˳ñŒ9*6–L klÃÉáE4¯ 9FÜÞRGØÀÁF,â‚(ËüÆ Ãß#‘(FJ x2‰âHI$r¯'w¼—Ðó¶®.–&RŽ¥{KóÄJn Q›>¢V™™†fcP\“Sš&%NÈU`Ýg]ЪÌF¢%ð °wI$A ¨Î£¨#6ј2ÈuY°f1™Ë-Ðõ …0b •œ É !y6# †1dk”)T}Š|‹;êöÍÍçMa¢Z×`Ãõ¬[þð™Ö(ß8–ìëø ×ÞýÒÓ4_q¿ñç“ûHźu(y>lè/kýŸ‘þÊ“èý‡!ìøbzgìæ]3*.g-¢ïc¿·Ùµ¶1¾š»œë.å/¶_?÷QñÐøÿÙVØGIž–·žÅ¯¿²*J^Ë"¶Êg#ñ5aïÁúÿ%ä0ñ&>·U¸8´t’Sóq±ññ±«;ù)Š))úùH¿O’sÁÝì9s9<=æåZeE3T†b²{û›õ1?•‹Ik“GjždÉ“(hhhhhiæL™3‘]oˆ§ùº±ÏÊüÞ^Ø[mðÎåâeÝààbâ/cääcçáßdgXÿš¹ÿ§o¯Üëv/~¿k³Ûív{=¾åŸ +á,s$’ »¨°‘]HòQC2J(è–œ#à@ÄAI$~3Î|}aŸ$‚‡0'€e#ˆðÑ $ë¥JG â’DT>‡Ùæ/èr\ƒíÁ?óÓJnk¶,òãÑcžùëÖÑܨš-óÏãñÖòà !°<îú]«¬Â|'±Ù;o-išg¢ÛÛÓ“µ‰Å>;Ó'Ѥù×+úÞ”T6NEYºuìWYú¦:§î5ºCõ SAý¯´ûƒ÷Ùͽ‘âv)$ŽñrÏßæªzd±òÕ<oT°(§oÚËþ6<.ĶZÞ¨(ñ7®iónI–4‘µ³>z-žÅ`ÿ¦é¡hýÝ>)ŽÖi8H ’ìòk¯„ßG‡¼3ÄŽñ=¡{‘Y\‘:…UÂ4䥲'*\÷¤®Oz°MEšOéL.º~LÛß½¢å©añ'lÁÊìP´?<}Ä@‘‚Ä%ŽXÁadzaŽu Ú$œ‰Î8~¤éƒ¾î͹`Ù|R?Zº–"(¨|½Ô#‘8¤h"\ã#dd!ÌG¢ÃÒÆ@üHO<<6Ð8GÒp€Û+#¢$|y䜒$‘Ñ‚¨B:¤.öJ€pÖ%ƒyÙ7ô€HEyðUS`*¡ÅXéÊ‚ÀbWtT Mr@+oÉ |I$½%^¯+¾–‰W—;Ýr9Ì0œÌ8rÎ/†šfL&E„ŒÁ1ƒy߯Yõ-×úí!ú“F"°WŒ +ÂÿÌGÌ)¤|}hÜÏ>VAòn¢G4F¨•8€!#‰šñº´’ÃäB]DÚ*ˆˆ‰l9l7[<83•.Ö“ð˜tµxxnNÖxj´ Ñõ{¼=ã6ïl×$Ï£ÃÔáéðüU K°•qΞjx È Šl§(ª"Šw*—±Ú†Šq(¢›¥Ê(¨/÷ÃÒðx'J—üF¼×úЇúQRÅJÉ\KÖ=ØT7¸©šêIéIR¦(æjJ´§±§*¾Öô©B®}EU§Ú˜¢Š¶¯¬µ(ªÒŠ©¥¹(íéV–ZdϦ¯³*¯éW–ØùwØ÷…Z+2ø¬|£¸?Ì/Õ½¥µµµ¿çéܬL,;üL?ïð¬¿î)Y™ùÙ¹ÙyyÙÚg”Q$’I$’I$’I$’I$’I$’I$’ ‚A H$ ;glí³¶vË©v/eºës.WK§yv#!#¸‹È"9!¤´T¦5†dŠHaPêÊ¿\Þw#DI$v¾|4øˆOO54ô…C2dÉ“&L™2huº¶¶D‰$H‘"D€Âz8ãŽ8ãŽ0 -Ž8ãŽ8ã×ÏÏàpž%~† BШhBƒ4è4 üùs¹ís"› PVHZâ-APä` ”VàI ôÖ-¿LÇÉXÆṳ¾«À$«äƒ>àSݧ$P„³“&ò½DŸËÆ£âèQmFiL‚=m#¶ÈH×E>7ñÞà±TYb‚Bºû†wµ÷^¿åÖ €¼0€ßÓˆŸðœç@;ZGMê°ô¿?õ÷ìð¤¤;¥}¼LMËW.NƃûçcJ¾-Š¡ö·W¢7ׂô9ÁiþñÆäÿ»Y~ïeÆçÚÈÛì¯xD’£Ò"£äÔq¢w(%ÿºó«©Ç¼Ñy[¤ço¯+3R ïï÷mþç<ó«¾›Øåˆ~Âþ|n*zÖÿÜýmÎK—ÿRÿå·*§¨Ö 6¨?Öéù‡íkøKY]é½Gܽë>Dž¤ܾ!­ãÜj…‡b{þ>-§ ìõ®üš2¦¬+q'¿£E4X[¼mjÒã4ÇæW’òɳÊòN¯ÛèMÖ~_%’®}M¬ÒlF¸Ù?ä~Šc„@¯(jP€NÒîøùì8ÒëòGù9¼P{)½€Põܑ؞~;iE×J¨&” ‹½¡Èå0!7³A=lÙq­xެf/x›àpÆJ°ÈDý¨PE7rQî ¢Q{9@{(A÷þ@'½ ˜þpÂŽaué®s‚ˆæ H'Šp:fl¦Òl”Õ€ºnK$T_0Hȉ4 EÒyÌsy @LùñË‹3gàÌ.œ)@¡¥.€´’ À9 @@A©Lƒ€= 'tfQ3‰ä† Ž$!ßàD RT jr&ÀCÇkð¦¾KxŠŽí *nÛ°‡›`@݃QàPÁ H`˜¸<!ä$ˆI†ø "]´…Õh0*¡»†¸0"s'¼0(ôçš§¦N‹KÄM‚`ùi*ìISz”D8bPE@6D*¡ ¨J"&HšgÀ!p¾Ñ$ß àÂJ¬à@0 ”¢¾ÖPäȼ¾ /Æ$D9ÎwÇȱ îÛKð¼–A˜€^ª;#Ö˜;ùTº$Døð|Ø@Ù¤#Ϥ1Á§œÈ@x´ô©…U5 ’§Óï“L ½,"£ÇÈ¢<ê@žb<ˆCé|Nó#¹‘T?EÕþaš!S礀*übAÛ°'lJŸÊæO·Ì†ý"+ÀÜÄî ^ðÿ3¨‡~@'Ú€H'—VPÙ+ óР§‹#݇›ÃÀ@sr{¹GÄŽê9¸N^ š© ‡~ñÎ&ã1ëS”L *.úï'°È8÷˜QêAùè&ÏÅ> ¾pX:ÿw I_Q [Ø<ÊBïÈòÄlçÈ=I9’à@"ýHQUÙÇ%ÓŸ®HŠN×.b å!þÈÿBJ /¨¶ÓÂxü<€Rô\#‚ ¨}SëàDͧ¥Ï±†¶¥Q<(W|ŽâiÊÈ'koY`ã§À„Q õ -É! *XzsÏ~ÓÒ®°¾4±ëk‡ölºJ $‚‚©o}N1—t{[E÷÷ÎØ¯”ø~¯8M$ÙÀªô†_± xþã+®Ç¿9APò©¿±ÀcÄ:¼ ›“öEPˆ³ã£ÙäŽJÚF4ð˜$Ìf Œ¼ ƒ)ˆ Ýûï“÷œvuШiЍa^<Ûny£fŸ@ª Æ?E7¯÷ÕÕH$}8XÝåOtª ~̼¼kxœöKœËa1!H‡EÍL‡œUCµ°ƒ”Ðslc!# ]'.~g¶ÍÒgÓK è# L±ôrÝ3Sç­ü³˜PƶÏ=:H–ß6³* „Ÿ§9ÆÍ„ÆÀLšT$b|÷¯“&‚5ÑéW]¬ý°´|eé‘’ä¸ ˆ$4ãÛY›1Óï¤ãVOæ "$žn½3s—ôݾ!ÞŽ`zQ´vsöy)1–Á¬Qð€VI‘4TêÊpÌ0Ál²¿M›[£Y‘¬HÏÈ&jqœ·9@U £G,í=ÞòšJë‰9CÌ‚yèå„…7ÆQ6¡âcìÀú0•iù"€(JiŽC¹…ËÄCš!áHà®û’0+Я԰/–zZœ¨ # ·r•d î0ªñ(L{ï ’uÄËùjžúÄ6 z…Ç!LÕNWÏæ{T$0\42Ê—1êýî„5cß·^ºÌ—óþá&ÒAJ2€ YÕ~¬ PØN³Y™ÎfNW9ŧÙÔ×gÙE@4$Š‚BD¬&Ø7Œ(m˜MÂ@‡¸ù!C·É-Üaûž8Çï³0sï‡å„n!7øÀâ oñü|Û3±ñ›"0)ºnEK î öGŽæ% þr®#÷6’¡è Ã"Øé¬ßàu4kT5eØâ¶fdⳆžqU»YÐøæ™ºQ=0Q?BÚ—Á>0jVÁ|Ü¡–…´%i1•,ÿöæHÜÈÙ0EücÍa=T]-{ÙR¬f8òœIï"&Ë.ZÎ%DƒiFÀç•sYÒ:ž­QTÌ›‚‰M3 99(Pœ¡±H½QãS¿}­c²È¾®ù’*²„G‘¾RQÝáA@‰V¬ðë~–º¶q¶bùnŠ)1Èsd¬µàRƒìL`áÀC»ë:ã^*¡¤Ðíq½ €làG7˜’PÑ£%#I6¹9ÈÉ62kƒhŠ¡P“ò¸ûiµÊÎ>ù?øýÜŸÎÛUEÀàxÕ˜bâ»Í‡6˜aV•õ I}lv_ÔàÖÔu-º*H\,wªLÍ!ܳó&óä‡`Öþ6ù‚À6¦€x"†Tt×wn€ú'!Z‘#"F*Ã<¼zR_,¯XÚkƒ¤Ä ÑÆŸÐ_[Øk·T*È6»9?ì×|k¥ÿó)šã"¨Qp ŸðøÔ(×!ıñA`…((#•ÌJ,X'vá÷\±zìi[ÇÛ`Gœ¦¢()¡iRÀ¼kãbÞsà əZ¥¾! °†C[Ë j-õšUsíù,Ë¡30bÁi+ƒh{0¤ö<+Õô?—°ñ}öµz¹Õµ`Áˤ:IÆà9Ù6·{wR{ ;{‡Ÿ>ÁAÖǸ² vL·¼Ü!«ÿÓÌHiyrpCD10*…ë°aälDw6 ½œ>NÁÊÈq“™-׊­Ã¯^Ç—²’ÎgÈ4ŒúyózD´ Ć– """>Q& ‰‰‰ˆˆ‰‹Àž;# \8 ˆ"b=d`ˆ€ˆÕƒÚd`†#m8"&&:Üãt{œ°j0‘FC$AâõÏ ƒÆpÀ¸D1ˆg9ÅKãdÂäQZQ€æl\|Ãã ÂÇ !½Î¼NdñÞë¦çÜ=’’ rzL󟄜`GÆ,2ÅŒ¼Áè9øPB„ ÂzP¡B„u¢ÿ©Çܪœ¤Ã¬ØHaù¡…$`ÝeÇ@0¾6 »¸n o%ÆÖ äŽÞ p°Ì?08 㾞Æ÷­¥µÀá—B=Å;w8àõ8N,LØcèÐ8Z†&ïØÌjÜE`ÖÙÇÖ ã°tXÍ[ nØüm§JÜcX­ Œ¨IÈ\ýàßǸöÆnÐ>ñaafŽñÅ+¶EÆ|b#!xàâ§©ÉÁDÄ«ù0²Põ|Ή#q ö ÜAÒAÈNˆ>´p¢rç/åz¬ÜAN 'je£ýOŠ<€`Ä¸áÆ¨páŒÚ,Á‘ `‹ßí ƒ4v°{ØøP¤PO#ÇÂó\˜‘ˆãÑyÂ0µ@@ÓÆùˆ¿·W\ù÷Æ8øØX¶1Ì! Êà>L8XvgqƒLƒ©ƒ®oÞìxMÌìëï¾ÑŸö‚kÒÊiátÎ[8®(D1.Æa…y`[f]`·N¸<–0l£ÍpyLi.Î ;ìÂϱýÆ;•7 PrÛáW˜9Ì"ÂwnèI$ DQ0E]ú)ä9á‹XzJ¨…•;#hÁ8&˜*FyÁn`¨Z\I✠wgÁ¢“qS`†ðã©—qxcŃ]ØÀ{èñ`×m ¡|è⇀#Å ä˜Çbe‘‘ê¸Ñ1‘yc¼cwsq‹`ÍŒlÈÒ’^Myá±àôz2`Nú2âÄÝ2PùÂGE¹•ߣñaúðèèp/Ї‰êð|«ðàú]¾Õv;è}ÔG÷Ož$6Ѻž7(`ö±ê㼇‘ƒ¸b¼™– Ç£«Åд“ª*Z èp"øKø’H+Bª@Š…!â#Y_ò05¶6¿{¦fÓ9Ó`Øý..¯¸÷˜ûÞ×ÆÍŒ$Àâr˜)ØYq…Ñþî>ÑŽ#µƒ¿®¸´1Aø8æg°ƒÅ\ÁËb¼Á¹`³0/]‚Xó_–6|yæ°:h'ŸäÓ¥Ìd:,P|ü’;» Uö†AÌj™³I´ƒ0væ$p¶»ñòC –I€ÛFA$|ÞÿL9½ääLÖFÿ{²  Ž`n›Á›y8 ?VžIÆø3cS6:ÈÏ2YÒ^ò ´t3Þ“äÇ;䯋àãs!Ùû?Nq¦´ã,OØlßø²y.ÄüÞ1®ü‰o0Þï7wos±’ùn•Mþ3ü`oǯÉ<¯V[þp±’ÏívF3ÓÞÞαëb‹ Ô4!B)J ¸úïH2M–†@?ž»«Îa‹ÃM9fé|¿‘fX×EÜ'z‹²;ñÂt“ì%5\ièQú»‘¦îee5¬ebû=05”x@ÏV)«ô .¾x’közç)\±ÿ0"‚?GH¼Œ…Å!N}7QHv•Ö¹¡•±¯!À¤rpÇ-6 î³êÑËCkåÁ“hf Å'‚»`4›CÁƒx¯ðõyµ· YëÝUoÿgùkΰqTGkð‚IËéqX™È¹ré/Z#0=ÄšPú;ÃiBÒ‚1Ð㪠¼ä¢\´F¤CÛ þV•Ó\4½í˰Ñ? ~;àS/\ô$¥yAˆÁÃe %8Η ÄAgš[ÇÏjµ§ÅÊï¬wþ\? ØæÔbx­ ¢l÷^ßgÉÚfŽùÎF•JÆ4~ôI$°äß½™óN¡’Aø!„qX†1¸—qišÈð*ÕÌVªÎÙ¾‹¯¡Vzfø:ݨKÑݼê÷Ÿ0Íkl`÷À‰Šj¯¹–sj§Ÿ‘‘Ó=–`R`ÄñI¬ÖGºø§æŒ›§TjaÃÕ™‡­uØBÕ1(Átʼn;{`Ò-Hmf«ƒà|ç“d Þ_7 ·3³ªöÃy1GgÏ=ÀžS°AÖ @À@€™ýwb)) È`HÛuWX^páVðz¼WsgE°óÌÕìò2»þÄžOÜ—‚›%N¿WúþsD÷©wä› …ÐêdŠ­²GÀäœ QÖ’åoy¿ÙøMÄ­ÂÄÉþ°5½äÌã‰áŒM6òuSç8ß20¬N¶:;ä22, cÕÓ JXÜŽBJÃê8BH?Ûà¬1xþ3e&Gë‹ÿdêÆ[ë¯üŒc8Ƈ$æ~i6äQGš‹7×iÄ d8’ 2ÎO€%²íÈsíLˆŒ/ö(µôžï ßðå=ӫͦ09›o©Yœ¿× +ÄäãÐ ¼t¨À…ÐaH›ªô¸7Z7DF÷Gk‚j£¸wâ_üÁ£ö¢7Õró´/yYc5\>(Ã$ü/Ø šÉ~_ˆ•r&P7ÓéçžO³×k£!Àæ°9OPlöügK¶ª¨m«†yɆˆà€" ¼ÊrBpÂI ½ûtZ÷¢Ïöÿ¸0’H-¢I ÏžÅT;;h%üíg·-0OT^ÀO\ÏfQÅì­I˜æ]qR™^&=ÍAj}úã¤ŘýÍŠE¥˜üUVŽ_´¹½v˜3›œ¢ÜÛèlW´~ÖN×î…ûŒO,>Ò ת´¹ë¹”ýßλD+ò;A¸$ºT;;GÎl÷—{{y ¹³íMKVænpÿÇßôኪ$t7—’YƒƒÀä|\«zôjke;›Ý\¼W±†?°—ú î²ñÙs䤮W&çeÄŽ[x£v[òº tì'@V±¼Xè*À:[„ fãýûz/~—Û'F8WŸ '¤ŠÔ…I‰€7†u¡@ù1;sÊ\_¢µ¹#½áøæÂ³Z¸Ù-÷_÷¯oxþµ×«]¥žë´ÍœVK‹…ví«¡I\Á”×@œIpA@ÿµ—×9Á¬ä‚±Ù‡ï3^üëogPî¹c‚ج†AÔyÚÏguÍ a(²e°lå$`­© ÌAž>Jóõ㕨ôcÛ‰·¼Î†Xpq]„4Á×£ÁÊJ©üLl¶PŠ¿E”@йYq0[ÿ¦S.£¬ê»Xtc‹ØCFýqíÉkÐ!}rWÍýép¾,¹ø$pî%¹Þ Ÿéo¤iR“J•iåÓTSU»]KEÀvÜnj@àwŠo÷A Qr¢^ò½=ÔE‹°¼/)îgÍ©"ýåíyÕQ‹°Â]QM µký‹ ðÚÌ×fpc…~¬PHßËy~\w.E½vØ;Ndd¬?îFŒñ¸MÔKƒfÊ•6n³’`êð“ᬨ"ïX€rÄ»þºxv‹b¾M×ËGìA[6ÍâÙ› æê¨®p?ßæqŠsjRÌë©Ì÷Gƒ¥Ñg'ï4æR{J;;ÏRRLvGàä â±ãaÈx/üiÉ…x `éÚ1«eVaSŸ÷k B‘«Zå"ãoŸ|b­ƒâÙµK±9+¾N›+6$÷4X.paS pQºXx‹ úCø"ør~ôõW¯€Ö݉<ì§C>ŠuMŒ=%áA鮊8Õ‘øð¹w\®8~Yêž¡­~e4ZguøãÈØ.CVñÙñƒšÈšõœŽvtÁÝR¨Ò¨Ò”¥)JR1Œ)JAÖxXvvׇ~Dl ï#§„<ˆú×n¦‡XÛs}*U;ž¨Å’–è“"¸é1jé6#W…®ÛÇÍF»ùŽ$cø2²H©^>ë¿«û‚Ñ€oo¬š¡Íìµçú¦6‡'þ ¸®êgclŒ®~Iåe1½C°{ŸíXj4pkÌûyä¼ùD§²²Øè³^FwÌfñs@(¢Š Ñ£tþk»ÇAëzCêxÝAéývãÐì6UUUå1Šï‚4Ìo¿ï¹.=k 0¡[Ïg.‡þ¥Kˆ@ÇOLÔ”?~OBËÿ ýÓ-)lììöÖÒï×érÀÝÜ‘.ï¶ÕÂ÷ÅxšªLc3ORÈ„cl&YaMÎYd¦1…1Œ)ÉLc cH¥J@EPôR~»Z¦—X¸ôÑuëæ‚ŸX+¿ƒN]8*f¤‡ <Å;]e›5yÀÿÒ{¶Á讚µ«¢Š’æâââ¢âæT«›ww(1™{ÅD€m%tæýúv‰³mc°©©¤Â ’„%2Jd” É(A’Pƒ$¡IB ’„Rlt¦ðµ3j ¢bXƦaí_zzï˜ÎŠ,W…üwEÆwÌæv6 •BBéR¥t‹¬ MS'YJ8ÝÀ ëC&ÿ ¼ó-ïÙÃÏ㙼¦¥¥ I$’I/Ý$’æÝ%>Ù,ÍóaÅ]tpyIšóyÁÖk±Û†²ðl?‹XÙ-]dõ­¬©R«¥Z×WZÚ€»¸#!aÿ5Œ»Œ}ÅQQF’I$’I)Nî’úÝ%ãzÕ?ž#ÁÖÖA·Ù¼5±¬ðöÚì.ßs·sòW—Ñõ͈"%àÍ‚ ()U|§_:p…•˜N8päÛ;:™ îî^ª¾šØj4ÕzL£h-öl£wÍOO&y$–ìîé$’I$’Ik›ô»ÀÁ³¸K=WiõÞÛ¾3oާ_Q«¯Ît­Ÿþªl¡m^ü×ö­¼Emmii¡lmvÔ€îîH§ô,²Mw¥»j®.ŠŽ}$’2mQ$’I$’I%“hB€ßS—=+(a¯'¶{"”ôÁÝl¥ûá¹Åz›n_W¤9þŒŸÐ^WƸ±}¼ÙråÞåÍ¿à&Íwp‚Š¡ôx,;•v„!3Ôjš(4!3g˜©¤¥¡I$’I$–¹Ý$’È»¾E´˜ýàR}°–çxÂ;•pš¸;ýÿ£{Ëécn²TS)³>áRåœ}UÑ +éÓ§N]&ÊU¼°ww(hZ[6ɰmT–ìzFÎÐÑO¤µLîé+wwI$»wwI$±6›–Ÿ+µ6/°ôq¸ý.[öʶQ¬ëZ—Mc[__}¯¯±Ž¶ÆÄÝÀ ×Uäëð ´ÕÖ=ŸÙË5%,„’I$’IX³»¤ºˆâŠ$–¡´ÿ/ÏœÂÛð>áRñ>Þ›Å4qSg±dXK<í@J¡Z=Ét!NÉwiPk<ÿkÔ¨ÇR,‰‚H×wF£Ò Ô¯¬8Y?mé*Fù¹F¬sS[³ùãzXÌ þ`&È©k‰› ($üÈ3o<Êä „£'1®S_w‡·|=÷ñ’1—b\h~©ìå’1Yœ@¥Wûkx|TW!´DɸŸw²Dz€†$2ý (Ù}_Xø«¢^Us3ò)ûsbÝ¿Y럨ÝMýÏʫΑÑdaÉycJ-L‘1²F›‚Y_zÇc•x'&HΖ b> þOÖÓÞÇZ¢©ÇÀ”:êr;oÉ»²dBÿœ$è6’&ܓ֬ëæI¡d-g£Ù¢y^±TÉUÈÿS³÷ZÑûúÑ8<žºïÄz颎¶ÁHRçY>^ê‚Du“+Ôwœ#òK—dd”‚IòÁ5‹Ñ•a®ôL¤ÈéÅ„ÀÊA¬Þ k7]jDaß¹“ÍzzòÞÝž–¦]¥SÊ8ÆìŸŸnÀ$U|;Üî8˜(g¿õŒH,èÅgzXVCl$’ IÌ~)]ÔÔMçÃCèV¤%®p<Ô²¾ôüÙ%õÿb@¯çpÖ †í(ßÛ‚„Ï.°¤Å.ˆLÝHó²ÍSÈ!Šâv½XȬ^¿âã¨<Õ.Q==`örß]7Ùõ8¨#±ÏükN²%çõ…4èy;DÂÔdáÂIÑèÄcõÌÑZ:]‹ŠŠ¦HSºRiv‚J_©ÊûiÁŸ76ïE ©á²MˆtÿÖ½‹ìÚÎ $hÃŒ3lágAÎPx\ï×ß}_-ÆtG׳—ô]1¹ÿ]@›$ó¢o4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4n¸ÃM4ÓM4ÓM4ÓM4ÓLCÄ1 CÄ1 CÄ1 0˜a0Âa…d•¿¡¤=/kYìfÈQd8´Ü[-nñ£îŠo“­ŽÚ!q*T©—÷ÊÀé¨ÜÉÑtwŽfÝf‚|aXÜ.Á ä«^/Òs^›®u¾þÞ_”û`|ÈÀ<%Ìë¸c_“Ã2‹<5”N¯;õfFm—Uô7¾yx6=˜J¿Þ7玭ÔF—7¶xqkï Ÿ¹ ù ›dÐϰ, €"ˆ.ô¼‰^âáqJôŠ;£y×еe-Ië:Æóö!2‚…ÊüèkÙ<½5™Ûq®þu>ú-ô*í ¼{ !!©YXõG‰äUʬSSÀ¬ Ÿõ~džƒèùžÇX? â²aƒ»lCœ%ÉÝA³à—elÂ) 7ƒ°3¬ÌdÖ é~Œ'|9©ÿ§2]ÃŽ%7~MÛiQvjQT÷ù²Ó-Êð“²UX%1¡ZðOƒ&Í*—ùM¨g›6ˆ~ÿÈ€ P>ÍØ—ýÕÇ¿ý‚hÊ}Iú–ÝÖ 7¦LLöáiyÖÁD»­i9K½Ñþ-x¨Ôð9‘r#·Q¦v”>ë•”§¶[çæ#W -Д&…·ŽFËÓƒá°Ä$RðuÚ§4gt¾hÑŽ×ýWúÝUQØzÌ|z ‹âN?ðL¶ï‡¡ oêÁÃÅTPk¼#´ vé[Côš“ß›òArk³üÇÀ´UA­èHQÞ=†‡$ò”ÇŠ 9A%<_V(†ùó=7vvNY ì9üÅùD4)ÝïŪhÔS:4îŒ).è,z @øˆ’\|v¡³0){ƒìÉ…–0¤ÒÒÇÀñ£FƒxùÊ-ö<œ Xq½™co¨ŠàÓæ|Ÿ46/gd½ˆÍ6^1É }LE—€XB×èåØZPÃ&ß~±:ëz*g¥D¤‰ ¶€‚¿\V¶Y¿|Sñÿ«) Οϩûé,Ž$&M"!Ø A«É2Ól©Ü«™õ#øpô¿Í' É ÙC&*¶ ŽÔ,Kfõxi¹Ùßa ØG%½sZ¬ °±wõãèuÝ÷í„8‡ÂȽZ˜;UqËŽ0]ì€ÉÕþÙ“þòtê‚/”ÍFÝ3{Zý›Gãä°°ÿ‹-¸3(ŽT)&û•›à´Ž3eF q-2×Á«Um>-º.O£1>(%ƒÒ>L”P¼¼ŠIïa»;.%ÙÕJ9|ÚMÈ{Ñ`4=Í~×|9Ð48±aö`k¨ê.+;¹¦¹À, ;Qx*sçÿ:·ßƒÿ=Þy¨7ë÷"ŠáM¨CE%–%IþB?èq\­#R·š Æ÷Ù•“û±‡j½R`i*U†žÂ@þJËÈ@t“éΛ–Ó86{eDà…E™®ø'‡±‘çže|°oQüXnp;!}wàmÈÜ•êÈ8-2ó§&!3D/ö'sÛuqk™yX–º7jdÂü˜æp1EJ¯]ãÐ{[ºÐ° Ÿ~‡ñ7R¥Ópc(øC„tä;ž&\ú)Ü—ÐÄ⊛ ÿDÆï!˜Ÿ‘V$ëÒ(‘·NÞäj+¬¦ bŸ€‰K®Ó)ؤ~;‹+c+~”L¬ Cg£ö±tÚZDüÜdÞŽ¼ð§ ·"þ‘:éÌN»¸”NÿÒz»úkD³ès xI¦~åÇt«qô°{â¶þò°â4T©—’e‚˜IºùÉk¸ëæŽo@÷›JlL´nm»ÉÜ0Îþ6úžZuˆ°„d_Û¨¸ÝA”a%ðµ36»mÓïqΕá0~ün‚pù à¥;Õv¦€;ÀÀúð:Éc¨¦ÆhU/Äœ¿"ÖS`Yø]vŸš '½µÔóØB k˜¼:~\ŠBƒ[tr¿ñJyÎ|zú:âÿ¥pœ¥æ}IdÆ(¸êqdÈœï2Í ás·Ë?—)#1nÀD=#¨M6°p¨`¹†èõÃðÍëSÁÜ3³ÝYù“O{·ß{Ó¿ù¡È3hÿÝææp^À‡/ÒÍžæ:‚q€^ tïrC:5„ò@n{Mëßð&@…ó„Â]î·û«zª„}ž2(JÁßOK,*U$Ϙï;F„*€PâAaámy¤þ2ƒaàC6­q†…ûWÂâQ äQKZöòØÐ8K“b¿Àw¢& ~kIFŸ7Ï«ÕtY †¿ô ‰õ£òêAzóÊM¯žÙ3$ü9tºU‡¬p†°BJèµÀÿëô ˜µà@¯”±d0²q3à  Ïd³%t&!‚B gõ5?Ï Ï3Ø0þ›[ñ>ŠíHv¼ ïá–¼\£jgŽ ~ôòçF瀭ù•‡ÕÖ ÅŽ%@¡!ÏûP@Uܦ”§Lä›OÁl–È2)E}éAx’ ò ›Ê;e°'M^`A!:/á‡þý:l‡UçBÊQ‘/ØâÒ´&ð~Ýù4g¼dûûyg_]Ÿ2*` $5½è…£­ô'Öw»­Ú¶Ã2¼t£b_Ã1bÅ™c€ã†Úî6ÆÉ¶—¬æ#D¢ðmß‚àJb‰^³ܪ]4±€¸g$÷§ aÓ„G>?á,µAÚ/«­g£šu‰Îôá!š·±d N ‰0“ü ET$ì¸Àµ Åÿ–c.ÙÂÓËæQñ1äæOÓ”Ê È(Íô –T| CJ鞪Î{M_ØD‡“>élêRæ´ï…6H“]ÜMà€ smg¡G“ ÅŸ*f±Z£Jç2àç»ÛZåB@>.Š4ðKÿ™(ö¦²VIJRítCÌkÂ(a‰Þ„ÓÅDì{ äèønV‡ü wkAðß-´_øgq%øY®á©+˜KŒ,¦ÙººC„ß™®ð: Ìxó× VBi1B7¿öˆ†º}QÌÃê !ýs]²yé|’Ó`#vØÐ)wC@ûf…G6™Rº2d£bŸ¸#L G9·Ç®Sþ*FÇ—ºÿ ÖG°Éx]r’ü‚n@Ž‚‹À!ü¢óç#Ë(<ìØ½ ·…â·Ãu6$ÿ§Œôì\ € _InŽŸ€mùX €ûmQ:÷ãÁ ?T «,p‰ì] FU·òû[Öžú0¬6\ñG*öØ&äÔ j¨.Ãw×k€²´'v¿­4?ä‡ÌºÑy‰@ÑÆÒþÞ:`¦û5o‘1"-tâ%ÕÓ2ÀÍ@ÔQ¦ ÷³0>”Ð5( 6†ä¼5‹ðë`„ù§uE–Iž|eãu>ÜŽLh½Umn_£ºcPíhåD-´ÝÒ 'Qªm§Ý›—ÍçI¦\'1e1KöBÚܯÉM?k ãÛNíA(ATý1 BßtZýÓ¼5v,ïß½I±P×…€Áµê5U^£7…€ÀÀOb·;XgW©•ð%}>•  Ì Í£`¼~M·àw32ˆ_Øø›“[â{Å\çíÉê÷´ô§O’õèÜ]JáNAÈ¡yw°N;уCŒP.›Ö¼Ê|ÓØw6Ìþÿ‡y$$ÂIgÆ0þD¤”–±õL^8·q¸Ú{ç\ìˉ€œA-=ŒÏòœÝª~¡ÂM ÎÖÛ¡§@Ht“—ÖY+c¿äŠÏ€œi‡ÂZ6ÞlÍ9ÿ<½Ž3ÝðÍù׊"-_zé»Î~A .?—­è7õ+éCˆŸö;–kíâI áÍïQùœî)”Ж¯‡I©G©5üµ5j—áX4ºKo ºQC%‘txÃHˆG“$ÖÓüð4WÿA’”q„ê}!¦Î°‘žCpÕ(”²!5zÊÐt.²Öýí”FŽO™˜tu<€@4@º¾„ÓÓ0É6bBó’ t?Zc´àé£Q^]\¶µZ=®Gƒgé ƒzŒO¥N¸ü›¼(2F?î1×;ø¼&åuM­ªÕþüæbõ‘ƒ )}‹ äB|_—´n.Ò ÐÔ, †}ƒ¡ÐZmÛ¾>ŽB19òà»Ò{}5™>h$(K,X±ý”³z:Étùp4uê½Ñ6ÚW­jÒTÎ` %°4Ú‹ êdÎ|x‹l tÑ]ÑݨÙU赑ã÷&[ø’BR?! b­¥CpÓCA [¡ó6̵ÐJ$«ˆèÜüX;ŽùÒZ*ô;ï+é¬d$2:Î.wÕ´ôNÅWxw.ø›¸ðhñYÔz~˜½±Ç)nŠ˜ ¾ÿ /mK)³0‹—*‚*3¿ Àvc4¾á/Ö®œÄ@#AõYÄðms¾^lnê-²d9=‡î£5 ñw–pv™¹ÞŒzû®k¢èìÈt*Q4¹”¿Ä:nAj %êïv‹G M˜ü­¸Õ€K‹ì[ÞÈÔð‹ö+t˜AJb¼PÒ}»OÔn¼Úò̼Ý|uÆàw¸YÉßÓmªz6ÖÔ^¿»wa„‹ܡ֚¯_T(¢s’oyÈL8?Nêòá·Îr?¦2ó_\ Þ¶áÐ[œÍÖq"½Xì–ΧQ¹tAï³Mòº²=\p¾Ÿ·é üF9ò„s¸£þåĬÃùªšqÆb„£‘7cÚ¡ /còGoV(BØP›Y‘U³/9\Σy{½õé¬ss±}>Ló«„@H'༠î†+õûjõÂþI*ðøé*K ·òßËøë” :'‘ò6¾9{à÷=ûüð;›oÚcï¯óØÓ¼²®çGX=¾§#à @E0I´Þÿ*Êf …‘ªI,Cܸt þ7O:ªæ6YN}}Ìö¯9z,×YQ…ÃI/ ÓÁ@ÞBû“{ÑFÐB–Paßb †‚tpwóÉ7›–øÆÝfÎEo•6,ÛïÆîÜn†~¸†ÏˆËšà.?ã!h¨U/[ÃÄù•|æ5 i>¸„äDJìÁûðgê¯@Ôò$d)2£±'. ØòÝÂ~Á,€—9}õ?@÷THüX,ã‚ë :™ÌjÄlaÁ„àªê|=ìhF:ÝhºÂI«ºÞÙZãßmW¸ eêä°¦ú•‹V$€LY³káÇ_䶯Y‰I|à6ÏqÐáéõ»ê Dq}35þM Iºà Mv5¡™sÍ[(@þ'ÔŒBÿ};ܸ› •”Ç´#‡Ò¸8mɬgæg ñF*ùznÞ±{SzQªYð‚ú––¶&På»Úu8Úöhß)cEWÞ<rÆø5$,×/÷Ó£u‚ “A;iùñ@ïÊqñ8mÖ†-à¨Ò8ãªð`yä–+«Ï>tmGäü^µ™Çñ"%†ÎÀ3ž·ÞÛÆ6|ÂjPé^£‰MçA£‚T.ò+©7+–°£ð: åûï¨Íú;'·-±ãƒüû¾š4&%xs¤U…ßi“{ã>Hý÷¼€ïfº*—ÍðÀ¿÷{…¨°TÁÌtB™¾×Ù(Õµ”×wIznKé «ˆ×f²}ù¨p\û*£|–.x΄¥2çŠqfÀö?I#¶ÅÈqKAN xØlþnT¨mìJÑ\ùU..?æß›\Gr×–5u/rºƒiÃÒðxQN‘KW­ÚXüà‡((K¥¯‡(Q&¡ï[Œõ޳œAß(‹ý $®òtÜ®´ÎtL“;ÚHP×mRz45I= Žn͘‘ &}ÞtlHÐ{, *¸ô@pxñIìvØŸ˜Ð–< Q"ì£]lV­o>®Zß‚m–¤lðŸY»…£’ÖŽy_·­tXøw³†ÈñAŸìº¡%DÚ/<œûÚºFmë8¥iá…ÀîDˆ: ';³W_WíþÒ}‡EéŽ÷#»ªñ ÉéÙš ìÐ2³czHXîþRô/ªßyì'ɳË 4È}Jí¡öªöò)Ç.Ø|›ÏÍö®ÂàQQãzÃ.–UTP ®ÞµªótW Àˆzª­çâp¾vXéAŽÐä¯~9Cô[ÈQ“§óÒӃѯÒI˜°UêVK½ãíÀ(ÒOªd‘Ön‡ÎMÞ©—³ìHòz0ã~@qbú¦s _qO,4h¤Qˆðì¼\¹r­»¡ö[º±úŠÔgèbhqýÎÂ!H׊h^~Îý"‹^©óøjIòc‘`tFç>£h˃úu9h¥q mQ;d WL8Fè‘·ÊH/ +vΖ&jêæX_6˜Ffx¶†\/ˆô:©è|ÉpÚ!PjŠ÷UÕúgJü e]>Œ(І·®È竈d¡Ûv¯%†ližä†Ú œG0ࢠ´>-“ [!T)¯u{Á6#óÐqÔïYݼΨÑènèÂt S5“‡õ$)äÄËÆ«%ä Iûˆ‹kèÚ,Û©’ŒŒª¨$ [ŸCgƒÕm££ÔÍ=Üq}ßeÑû{![•?­ø-ÚñExVj2=õT ˜€a,Xª~rel‚,L½:ƒwG¥ÛŠj·7hî§Ø›Ïì¢6~£1½ño¸dð $¬ß‡àîú§ X7æÆUmˆj^K¨sô\w™ Ò–”^WÝ£/n ³âìÎPb¬jÞ5ìÁ¤QðCi3×uÃë3x¢€h*³§¾#ÙFÁñ¹8?›ÍEt7Á·=þ^Õ®¢ß§éS²Ì c£oÞ¢ #….½î%$B}×Ä¢êLb³ÒŠÿ4@buqý8õut«_V´E’D¦Àòà`CD;Œ…Ò»¤Jü1µœY>=öÊaê¿ì´"žrçYTô»èµtæÃ;ÜDD­™–”Qþ@ë©£F…_p]f-eèýMÒò…}Þ:[t‘0ˆ§¢ÁšIa6ì ‚”Jæ‹‘08³Ó~Õ«F”ý;NK2(mñóiÜÂÍ?ï3û&9&ÁÃÍ“‡””\gõÑÚ’ÕËÖª¤ V€Ì1pœGïywmÓ «"{õ!Sµ¿ÕAÎÔbHàâÅ‹-¤Šô±¹z?c´Ì·è 9 ÓÁ  ;µ{z˜/©AÊ,!ÒQÓcºôH“Bmì”ó°OÔ¢‚Ëg+gáeÚ ]U3–VY ÇHÉ Nê9`@¡Ûá{ƒñ›^”{Ÿ3hH É™³˜‰ýf60ê<{˜©ìÝ¿û›§bþîFä3ƒ‡éOnÕpUb«ÎsDã·-&¿¬Åt#º4oÖt~8„Á±©Gˆ–@3š&É(æu])Õsò ë3b¥XÎ9Ny•¬äùF£m0ò†ñÜ> äxí‚ÉC¯—Á–ì:9Ù\R’/Õ™¢©*.ër·ÛwgüK—.]ŸË7÷99 ÅŸÅÖS€ð ŸÖÈ(¦+‰ëŸ‰œ;ß¹ä[Ë+ñPsÔ¼*ÔÏ*O“á RÅ X7 ùß}“ xØí-–ögé¹|ïŠðñ±´ºk¶aòmó¨'ñ¢§¼Õ£— l3ÿ"æ0ëP1PdW Ùì£+xµešm¬à$z»!ÔL’Ïåµ–ðíã#4iðêFŽŠp›™¬Ì)ÑÂw¾r§ß#<‡æÝ6ÑYÒNbÐÿÙ{r˜™ø¯È—„@삽Cv/Çr²™œYCà¥;ð“C½óùoü$Ʀ!Nø`.\—Y[;òâr•^ç NbJN«èo‹!Ty0©ÿ¦åìw´aÛÉfM ¢b>ú€¸ÙÛk˜™ÄEÛ®,@ÿ²Èò(W%ø‹ —¸:ÕÉ% Ý+^óBý>Ì5V¦ÇarÞTm}‘ëô6ɘ4}ekì)ÉÚô&CÄgf©™ÈýÍLöýC¯µ‚W9?·´Ä ô!)$X†>k^ŽmÍäzô‰ŒÙcçOt|ð@ó§­'ÜçùÃ~8#v´ùD¨¿ëMšíV$’ö«ö>Ú'Þž>Þ¦ë~ic=Áý}›ã­wGG£T&—¼ß?‡ïïÜ×CM»6B±ð<«½RoÄn^¿ŸJ—é0B€T©Œ9%èð>‹L›Nbªº3ˆôN¼#H ÊSÉl¶©’eE,GäY7øPÈ®±·Ï£ws^ŽÓŸŽ^ýÏ­+ijÉm$½LœŠäz«u/]“70Ó¨ DÚ{Í ÐX£Q2ObÔF$®T¼çñíølcÿ˜Ÿ-\ò½£Œt2,7D¸{Kùtè/d'z{­ I>áZæ@ AâGßê¸C)c9h•’ŽQu«r0`?Ñ(ûÊ4Yƒð¨•ÐÏñüÞ„‰áT¶øÖ !ÝõãÀ…iv–Qxo,]‹0£B ÜÙñÎ dêXæ¡ûYزqV‡³öžÜ«È̺¨„I>Þ½‘¼7?饽ë¨+¯Æ)næ.[ÕÒýuAЉ—ª°Yº,¹u+B¤å“ImˆVî=PÇÆBr÷å2³ ˜´™Ãf †–”‹Ž”ƒÕ„Š9©óŸ'êB_QƒoÔW£z€Ejÿ: ðàê¼8“ãx=Øßœ,“Jh|8téæ2I3ï\éCÐ8u3NQ즌?¡‡§å‰åsºÀ7ϰ½3$!´EŒääIgó®ã+V£9CΈç‰S®Å›éX·(µfÎ;ó%RPü½ïç{l9~Um¡û:(gYuu¨ À°Ùᢰ6Žð ØUwìÞ±‹pÄ)l»|“ Ë·ÆU×ûøµ‚‹5@­÷b@#!X>'Xóc¢»SŽNÙoJ 'Pí`ò–L஌zëƒ^˜…5àÑ=]ò4ä̉¡ð†2MÐ(@«4PÜK£r•"£ b£(ø¤Ž·ÙÖq­“ïuI—Ž@wk3"xgL1"D#l ñEkcÉÚ¤Ûx!ø £dÿîÊW´¯Q$즉S0õøz$¸3©ZÇ^­Bۅزˆ ØâÒ`ü1§?¼ðæ£6*Uª7^ªÇ2Òœ™îQ~‚ mÂ3Ò€®¾KÜÇDZÁ¨™„5Kˆþ³fÄ&f“W_Sé¬ì” ¢ÞùfØ“<-!QJ¾oÚ=mfx B`RÙ~e©ÿfOÖä·8Ìã:‹³›ÌààÀÀP'ž jGY»žèþÁèž›AÉúÏYñ"n?M÷ò4mtê2;«„Ó2…¬xià }¯È!‹â;é…Š™ £Yœw2mDÊÔ‰íþ»ív y®ÂJFå-þ‰ÁN Ñ^5#žxuƒ*•i‡j*gŸúŠk*š³¾äq‰¶à?ÉC‹°¡7¥¡±ó_àÕê“Îì0©ÃîE”­ˆåŠù¨@Q5a͈3ݹ\âï¤4á!Ä?›oŧa]"`1·‚劗ê@z¸ôÃ-÷ª£sæZ=ÆÐÉrz¸4$v„6©Õô*)’&¶·Ž(Èe§ÕüU…5øèÑíSÐÑÃmƒêÕý-ck‘‰‘¼âïQ çH–bîKó^8@-­o•2 Ã:øv;ô˜}àRÓû[¼}_Ù:-ø¸Ä5–—[ (FDcÌZ‹æ•aGÁ|¹rå–rBŽß|-T„hšØú¦ƒŒ­·Ù’s±'JjgQH¸ÀÖ,Ã2võ2zs‘3¢ÿ~X6pƒq Ûð¥SŠuã=ê‹Øˆïïyïj[Üøôµ¿¦Í_Ù³&²4SO³|KÈOã%Ú$ÿ…å‚ÛWŸv"B¡uIY<ç?°“çZŒ¸µé¢µ÷ºª4›Ž¤/¾ôÖif0µ¹ u ¨{f€R÷!ïWš +¯¯r¯¾8§2†s‡0]ÏcÒæó#B~ãièÉ×Ígv $ôVÚª˜-a ¢ÑbªÕþ8nâÏÌ€Ö„*îÓšõ\̯æu˜®@S[ l‰$€›€?·g˜|Ù9¶A‹´a¤|üÚ+¹26®(R4I+—vaZ4ø8•—ç' ]·lwçE1A¥¼Ò3m:C’÷®9õÄ) ½Å ©.y–6½@QLnÌÅ#d<ëÛC¦ ¶%Œ£œï€a–Kîp¼±òo©à'82añI2í?.P—;â×µq˜F WÖ„9ZǧʟŸ&açEõFÞö‹¹(P9\¥ñ£J$]¢8æiWnOìÄÌ1xÝpœ`‹S!x"D`¹`[J:=ø.Ö\Ôu(‡nXô¯¶MÌjÁÒºmqc õ<]›xy”ÞÝs§ÁvŸdnBþï ßnÝ«ÑWóBX@îÝb1376ìÐb°Aèͨüù³Lÿ}SíV[ùXر8ç G8®y&_€MC\<•Íž¬Ÿ¸HmËüqÇŸ‚þ¿ äE‹úÝè”wâz£N‰“ +Wê ÞxPµúøx‘N¢œèf•t{å32(¹@5Be ŒYäc­ß« ±LÈoDØ ¹Vt 0Ífu쬃(}®µƒü^ÌÿÆÞ G¾#ò Î6=0e½7tèÙ±…–E"=·xw'4SÓÃdt±bÅNñØÈìyá陣…²ïù:¡±Œb¤—G‡»%êù`×›ž— ³ÞÞüúÇÞFŠe4ê‹T`ûtYI$ÞÒ¢Æv§vÈN†["]§6åŽúè ½hôRžõ|Þ…Êyr.¶º.‚BSi`½ ƒ 'Ûö¶ÌèAÁÌ|žø* E¨Õ÷øq”ãìW),\^‡´y'—™ôL¾Oë¿fK~´Ï°€œ`öY GˆÀ { I$ B ýª~ý¼Ûꪾ×OO†'6Z¿®Tz¨ß5ö ²‰¶¡HÞl_pT¨® U¸† œ+:ÞÒÚÔ§B,*žžžžž„(7|¹„ã«>““É(Oaûü¢ÓɽµÔê:xâ*iQZðK÷~Œ¼¦á÷¥«ÐÀ°¨ÑµÂ¬WÉðñc½lÓ|²·øf‘ôÝ‹ÓÑB@8qþ‚7]­c*ië; iHÇœ^ã¿È©Ž‘&=ˆs¬­‹­'TÅiõÔ}_åæù[é[³aìúËvçµÑÎj> —C¶Öniüú{£e%×èÄòêä$„‚Àd„’IŒ¨`ScN!áÂp‘&0v…YŽ:‘ð$Ÿ `G 0žaáÃT)ó±áŰ`‚@B “` 8`Œ ƒÇÄA" (uÅa"F&Èy$’@§G‡õŒ i˜­B¼q°c’\é`8H@$ ah†´CÀ|ŒqØ&_C§dBõ˜KoMÂ&Øé ‚~uðXâØá³8ùÁÕÀíŸbØÈn¶/’_½ÑÄãH$K±ˆL&`aŽ—à[váQ6U~›ÄîãÌx6s=÷¾^¦¿ÇÔCÀÝït¼ŸúNñúTC‡ ôÌ8>`^ƒ±l3$™„"%œÀÌ$ À&`€fC2y’y„“â“`àËeaÄó¼¸Î-ÇM5¶ŽÚfq°ƒÚˆ%^6µ¿ XÚ  Fm„_X/,Ur|ß´ÃÄ5"ÊPÁ!iR-Öˆ÷3ß³5ÀŠ^M<°IŠlŠå+ìz(k#^–fí T ‰€Jš7 4?òùËHCC~‚€gÍuÏA 0ÇnZ&ßË©ª¸K1qŸæ)oøOå«J¨.*0 .-š.žp“¬ý4\æ+ÜjU¶Nç+Œîq`¹1têÉ÷"¬;ÀLÀûÏ‚ë€Ó2(ý©#‹Ë¯…§,¶@‰˜:‰ç”_שd~ÜŽÓä «ó¡Ê—¢k!HÃðaÃ…-æÅPj)ãë)SüC‰$ŸØá1Z¼&¯-žËÛª/7¾ºN#íÇñ¬óqzÑŠáI=VêäþS}íÞ% MDV£@dÚØ´ËA•ÂrQõгqö‹¢Œ_Sº¾sÈ7KÌû¨ß±/a2boĺ†$ôŽúQu÷Óq@@"B å&2¹ù÷ £µµ5—› rŽðŒS.ô 5µ3ýçðzÖ²6û1ÙÆBø¤tcz«}†GY¯ÊÙñû]}¤È’¶-:žMº‘ÑyN½)¨g>¶˜íb<“–[²Iàî¬L7méÏ7 $h’£êx`#¡êð“éö ¤:+ë¶•KSÓóJ ]Y G«öÁŸÒ 2¶kÀõœÞ ÎéG…FoiÞþ’ºðj2¡é‘‘`7›.G Ð (¯!sœšà:š©°bü5Òse®÷Ð@Jzýj8¨d›wô²Hå°#„ÈëÙSëÞ0º̉†.,f¿6X†\à §ah$²Œ$´lý…Áb‘„S_Ü¥™›IuôvvZ®Ùè+^8“犆Çh»S åD`'q-Ñk×´`Îô¾›"0Ÿc)}\Œ{϶Ãs½µ™·@¨0Ñ6áErP¡ÖZ&ËcoG*Êng²}¿œÚ,ÓÆ«mÄC®­—Y^_ü²Hÿ–ýû~ âÞÙ¶.²/tZí²týºËW©ø®…3íV5zLE&Oß Í‰Ñhvªmê§–‡ƒü*¿%ð_ŲA&­Í“OGÓòyá#DyêŸ(´‘%–.^0úí  €&‰ ÇíEêÌä0Ÿ>c¿ ÞãÓSÌäð¬ÓÕÔüÔ´lÞo™òßÏóT¯;œ¶=3 e“èÀëˆnu߉2†‰Ê±|1è-6›ÁuË*vcf}žH(’ÀØÖé(ã±Øn/ò5H)ÈYDi·¶«j¡‰ñ0£ÌÔö¿ÄTš|y:Õ§µPyzu”FÄ+„œi0YY‰­u8Š_ûHŸ·vtÞÞu«dÆŽÃ(ú£ô¹1¤U17•+!^ï4R؃+‰DíóÄÕ*ÎUÚuMŠ©ÉÔÞ:$Úæ,e¿ÊH½Üaݤë¶ë-™ƒáŒ¯ Ò*bgpí:“C^Ê !ž(–¶G b×MW#À1NŒi  kuhKìÉoBí‰Ò¹ w©bÌ>T&a0ó³ùÜ[ר4xÄ«”IæçRVÞ˘J<§yaÝÓõºWûÌ$ÏMjS¬[U5=‡ä”ˆâ_ˆk¾ãè›a1õ‹·“`_ÞNC=Õ¬MÝü@ÀËhO¯oöµ?B†ÿúqÙî.†ÙÔóÙB¶?Ž)Œ"àp†kÕÒÆGóEýú&ÕS5¤ÚžfÛÚƒÆF-ãÍm4©-A…-¨£¦ñ§ó¶m ?×Ӭо±c¶—öÖ£jØ>|éðÞbïÎ9øÚ¡«jf èL¥¦náAéPB}BÛ:©»_ÿzõâö‰³a­(‰;e@‘û’´Ø®o-Çoy–mø%‡9Rÿ"sCÙ9nàwM×_ìö’BÓ  ­~òÂdøÒð_ÙZ5/¦b›ù Üz+¼†)ÝÈ.~¡Ç"c>²½¯#â˜Éæñ’vžw¶7tÀˆðõ×8 «¸ðž>šJ\U:¿ áTu“Bä’g6¼Üûù¼`hð¼ ¶G›~ ­Ë„œe;3ˆ’ƒKdI¢¿#þ÷Ï:üƒàSË”låÎ0°Y¸Í4ŠL w ç6×{ÏçårœÎΘ¦iŠ«•S²sqÈç^V¸Tº¯ÀÇY.‚—‚x Ø2+›Bú‘Z›ßû|Æ“pœí2¸µjß©%p(¤0¥é¨ Ç”™ôi÷ÈÈRrŒ ဠ³úbymšT‹|µ\=EŸ79—£êpQmŸEñ wË éfβBÛ4`ÿ¾`XÈDµµW|[fèb2#åßCØ”l–ÛýÐLaa©Ù¿¥{×{Ö›Þ@/;rñ#}‘ì?Ëûje·ñY@™9,Ä×G‡ƒ,ôç”܆±“UlÔAø¶jªŽ×Òw­Àfƒ­©BŽ\1Wûî³ì#©À " ž_÷tû}q5èwù|è5­8 þ‰ÕßUÏø¸`0j{];ŸÍ®Õ_ØN§ÀûâÀÿ} ¢o3û›\›[n{ZOÁ®îŽ#1 î/u¿;þ‡çã`Á;°LwÁ×^™y8?õUèstRèqe±ì´Õ±Ul§²P-Ñõ!=öïdéwl±’š öƒ~?×suÌàh¼Ã!È•àož®Î/l~Ò¡“0Ɖ[´…WËi4ÊÚçM7”®4ÈMGmŸÚÜ.Ô²uïy¶]1«ô€iÔä´áÐcô>QkÅ,á‰î—ÐÍ@ªA³§%4s`뜵+¸Å-3®jk WT>y8”5üÎsЫcä»B­:¸ëiÆ¥jæÞÉR'ÐHU‚iÊ‘ÙZŠÜI}”N¤ÙÄVdú]ɲ=©]:~ú Æš“?ÖË®úöCÌ£l¸1õMr º8ü¾õõ/ EzEÚ ¦±kOlâ*Þì*» à_‰A_×¾oµ&ºïz¯Ê¡Ü6™ìcÔâýå›úúgˆ«ÛZ —§º°Ò9.¾C‡mAë½fÜ\A Ð?^V¦}cΓÌAM¤ÃDü F+_dMb22=|Kæ×‹lg%™­V¥ú*ŒtšÀ\šI—¼=r°lä´–já õv:lh®ö%u S]Y$¶Ī#8†E ”SÑŸ{]¬î³ü¶‡S?É Nv<ö SŸÑ8ý„aæa[¦™çtì’¤Ó,¹s÷ÿó½Á ·ËíQ‘ÏO ­5ʳTþV¼Z¦yA)Š¡ Ô4v˜ìG?žæh‘ÍTì‚Ý]~Èä:ÞöNù|íú‰lxŒÏ`xùušÑr“ãnx:ÂTU¨å_oÛVzáäv¬ž3çô`kÕ¥ÉÐ i+GÓ%GüݬØ/—iÅ-Ò}DJ½vè P;1ߟŽlI$CªöÝ…l'. ïÜd/g˜+›îçà„¨²:b÷­˜û¦N ŸŒD°5FÚIakÊw@@_)Ê„ÎúÉRTþˆ ‹²˜e†Zw/̦ Ô«Aù§\KY•é†Fê²÷ƒiÓ¯°héKèI,Ñ3JØmü¸¡:Y’†D¡¢8ö'.Õ¡]R¹ê¯hl¹ÖËlz«¸ÿÃ>ùµ¸áoØyó½Y/èO­žÅ†WrÚ>.† !†¢¼~tñ—ãÕù Cò¨QÀÆìk­>êo_þa^)j!¢äî×—WáÊ"!&]‚K"â†wÌ =YÓø~S] ݸ݀gYq/- ‘ßZ–Tü`Í¿µln?`0) ]ô·TŒæˆà‡!2þ膔ÓfX½Ò×Eµ Þ£L•ãwµÆ„C÷{E2»EÀì+[Ì\p½â»½sâɵ_ˆäÜyýV È»òIêéSöM˜%ƒŽ¥LZÿžÞ;š±UŽºèEÕX«ysrø£ìÅÒC £&}†Œø«ÍµÏ²ñÙjÿÁÐѲ¨ýœyiÞ7±zÖÊ©Wr¡P æç7u!Þ÷—pâãñIlâ$½¦èì›o9Ü:]ß#½Ò€0<”Ì–í“ t²ÃñâµwÎÄÒÁÆ\&Í`{Ë×M}- /í‚íê–j¤ù+^A¿LnA¡Ë6I|mý{ÃO :Uüiš½Ñ È]¸Ðn9V“ŠØhÏ¡VÚéÝzI´ãÄ5àÎ’Ä#JuŠ…ŽøøK>åìÑUó»;Æà zkÜEÐaX…퀦 •ª¨¢3fdМ…ÉÁ§> ßêÁ–ÿ}®Òø22oJ㽜eãþ¦•{I±¹V=vžàGÞE­.¸ÀpÍ \D}°ÓuïdχJlž?.¦Áí{&RC§ð]Í+îZç½€v r­ÄD:”¡kê×òD¥g†¾ÞþLŽ·ƒk#ÊäìmçTÔ’GüĹ´.Ë>¢–ð€'ƒ·/ö`/Ýû9í ¡ÉYVß Ó,PØÏ¤ùœšõå-)rÕå«Ë¡ëhOzºHµ„2'foRÚKþý†\'begÊ{å1ÜЉU@ϼöý~{ÙóV¸R„zd8·=@€Öw” ´½À‘/v¸(so«y[@Äm©úbƒ{TÂX¥(=]e5… ÌZÜVˆÖäb^¡¹ß ³³È)÷ ÀBm DËBv5…Ú¡ l{P›•›yœÍKiÖ.c6ÐîÙ¿ AEUÏvŽ3 fC‰!ŒÅ=Æó~™¨?oe¼àTø7;(¸£çІ’¼æ4VýãgüP‚ÊòfšÍé󿹯 ¦ÎÚ~Mh)±ú¼*J…ø(!Òú°º—O5ëÐAOö³tôÅYötŠJ¨‡}…* ØUn¨ËM(Ö5»„2ÌVò ï ¿|{#kíš^`sb‚€¥½r}@0jÌáõ³Öó'§c\J†\Ümìªd/Æ'\·*B´LƒœŠqu—‰oGbÕhAÀ)¢‡‡ŽÀð +‰µœÑ°i! ¨:Ú]v‡¾‹ÉÔg9êzmç©ÃœÂr*ì´¯huÝÞÛãï8OKDÔǕ鿵UÈǃêq8l(¿Ã³”ÿ ywÓ™e/ëúzQÓ@ ¯5Œ%¢ÆøºÍ8´ØŠ^Êâêó`FÞ,B@°‘Ô©ãý‡<ÎëØtþŠa–Õu8ž<ä T8Rð¸¼É/ KC‡þ6qàÚ¹ÙëÉ«ÈðbBÔ|·^bù'w ¢8|p`(›Ì{ËЪïZôå*$uö§1$O·gÆ-šL4SlŒE''ãwÙð8àƒËêÅ<¿+Å6DpaBeü™¸qMøÎìQ 6‰BðÇYÚ?ôµØÜ·ÍÇóTÌú^f(¡Äû%|ØsH…@ ”\ã5æ#vDx,á]Ѝ¼Æ$X šŽƒµZúô{ÃÙDâmÛ…ŠG@årYÔ7p¿W“òWMcMpQ‡G¿G_<$]XH¸Úí.¸ ¾'¥Ëõ8oFtÊ6<¬­ëÛ©§Ôþà€ î3mGGo×”ëòáÉÂV¤“Y¥§Ý×ßµ¿iÕ7•侪•~Çï Áã)¢æÍ "î³™–ÊÁÏ*°Äª³ ·,Å·o Ò4Î\xׯø§¨6&n'ÞG÷ûË–ä}úCY¹®‰x9—ÄM¿*kÁÎí=g`9wºÈ†W9Ðì»m `ÉúfjåV@ÛZó“*t—8aV>ƒlôdNÄBÊi‹åYín—¢¯=ë®Q×µÞ5<.i$³.¯4)òû ki¼S¬èyü¤ÿŠ-~dUÒöS¦Ûù= "Ò`2¯.ΘrXìãb(•®ÞÏðûÚ~ "3uÕðKzVdÜÖÀÓG/“å1“*©6W^âÒ¾^÷tç¶"K{cË~„Å­ÚzŠ ë9#”u­2'¾(μgeg‚C4Q뼯Hy ÃÞ‰¾UNNéxÏDª¼XÆÙìÁÕ­Z#O ˜T†‘å^= …Wå68zU[¾þ¯Á¸Ê?¤#S>œ1‚z³’k…\?wqš×i¯¡|ÍÎ\n XyÄrv2S¿Å‡Óta aŸ•‰1 áGÝ>f噮ʼVÞ:S'j‘ùt¿wC¦ÑË+Áë “-@x·;ÍÞ´ @jÕR„N{ò˜|ûâÑËè*@ÇŽs‰þE˜ÞEµÙ!L;ó1òa9d8Ï; ]Û®·“ßùyߘ1æ5/¸«5 ^v:%®$Fï7ß.á’Føô­/Ò&G®ëè©ð†®Yæ2 ~ŸûL¢ÛdOu"pã»JÌub¯žX•ÌDÏþ•_6õ)—ÄüJF4riÄe›ÙmåNtѬ©VL6CÑeá†0EM&_¼ÙŽ«‰gûºï%ž:O˼©»Ü"—0><»·™ð(A̭˾ ©5Ðc£Ÿ†öK»ºA{ß)ÖʩȅlÆ/ÈL|œ ùMÀF`øãs§oF)-x+Ë•°nŠÌzùæVŒ.¹Ø'`ðGAþm“~í—kOßLd»’_|Ž {,¾£ØÞ׌ ¢$GêükBL6˵pôú©ajTÙ,ñ~·¾è$=¤ueUïKÖÀUN_ÃecÚ NFû…wÖ€&1½¹úì.ÊNœÖÍæGt©–ƒð‘Uó茛Œ×`tïû9b[ÛíG„ü lçëéU³lðµÙ¹qè«…—ÔÏ‘ð¿)±°Ï>¢Æ¶ÝÒ\pÛr ÿ“æ@ÔäçÆG^2¾V6½ogdOõ¢)¸ðµ%SUªr¼<_Z«³d¥»  `¼«;HÛ‡“"Å¿™¹‚¾œWseúoù'͉{‡nÅd½½‚öÊÊË6îvú@ØÓ¤^ñ §q!üDsvŸD0ü ¥ÆûD€Œ”lÜv 5õ®|b ùwz­¿Ôã´â.Eëå`V:æ*Hè"þµ.Ö~qÇŒ E!Ãn 2AýBé½yÔ¬'\Qý€ê€" o†–ÎìJCÇZ0’–̺ ªW‘;ßí–%ZxÓûSøÕá½jX~S°éá]¢hæ…Z< Ô†‚(uÔñ¤C!œß«‚מ¼ƒ‡ŒéHt´×åO…œªa’iæ ÓÊû»Jœ\½ïÏÛQ´þâk­ýXÔVòu73¾Bb}¯œ{"Û=I¤4Ü«]vz‰òÉáÚ„Xù|ñšÌË7TC°=FÝ6½÷¢úÆ}"µ–{ Û[ѧ4ÇþX‰¿¼ÀóEÓ!6¢¬³#äƒÿÏu"»4àrf m^MdØîê¡T6üÒ­‡†åÍvÖ÷Äd‘ÍyøR†²E—}mуš[p_T»ÃÄ`œ±¢GâÐÜ“òjg…Bñè`%j‘ön¨½Öc[”_á<7 ^UÅf¾¬Q¤…·ƒ0»dõ¶c. ñ‡–ñm½ýêT¶5RptFº PP X•ýJvh”šv©¤žoÉI޵[¸I£” ßM]”äÚíÆkd©ì’.wÀÝyež—¶2J­ÓbšmVs*~Çæ:fXuÁ8âÉgSuR$TŠÅ£nD3Uf;½.‚sÖq®ì„õ$wßÓ_þÅù¦P¥µÛ½â±öÚ«XÊqÖÀ—½‰éù®VÊž‰‡R’Á$`L´¿ªqÈ¿ëk'´ÁÍþF:é/»‘Uqëi—Ô»ÒFƤOéåœ|§³ß„5ípbм¹VÛnì­}­ É06ŒßŠQjÇ çíæ+äPü¢âÒ ¢n¾åìıJ¦µ±ËµÎ2Ž ¾d"…K8’"¼‘—` nz<ƒL^fÝaà«i«–‰­âľfPcÏýà´m8Æî&—z>žZú–öȉãTíØVš—~ô`ö4SgÔWÆ6¾7Ó‰¿—[$% 3‰mäÄž®Q¡³wúè æ;AìľreÇx›¸~¯³AF;Þ÷'´Ðß-k½»*î¡¡V{z•øpƵõWñµÿšœiÿ&bžƒ÷äeœ±ÅÿÜ?yjyV¦x6Üg=Äçf>>öÑ¥Ö«\ÙÀQ›`÷Îö Nã jGgiU–[làg0yÚ+ÎP΄ÏûúiM4‡ìÍé.úµšy(£ï…©qÛoVÒ¨¯HDsÉ1ô&¾'Bå´)Ýñuι_RÜØŠ$$®N½)'FÙ™9eSÌßuð|•qat ·h5ÒàSÛq RÑR¸Ã œ¥N†þê† \Á¤h·Ì kÎd€Ô—i¢n¥ÚœI?rƒ5ªÀ¡³¼äÉÆ¯µ ñT…Ü yê~c²û–\E¨ªñ¬ýÓ·xîc+ü@ºü)´*Ñ«¸;þ{R> [n@µמUØ¿QÓyøó•Ris{õ¤ÃáœæÃ¢æªE3k$”žjŸ=+‡Â=9Šñ!b·ºËtt½,ü¶.Æ0äzFÌsáGXï ¾¤ta ãY}M1œ‹pcÉ1Šÿ»Úòa2—b§¥¡xÎ»ä¯ ·$dòIÕ¿€NbÔœ©K8…£Ü-ÉOù«2€4ŒîD m÷ñÞÞ}{ÜÎ÷µ áÞkN/á“H NÛÙ…‚ê5E,2ÜCb>‚¢Ëœ8Æ:Ÿµ õÅ¿Wƒ¯D»ýÄýyFWÒ‰}ÔfÙÂN‚Rx¦•sÄóþÞo§“™¡ÆÓb€…çl_…йþ,4[b„5s’ÅWz¢s&5Óøc—號ô¢d°t(0èV³ég0Dæ·Ñ¢s²Êœ U` Ð\ÒË‹e®öl^±«œgâÏâJÓÉ÷Œ}{,›ë¨ØŸ\%Þiÿ†¶?uÿ>ç \ÉBÕ}í7jò%w”9Wý+srnc娽˜²‰Å±;– ñ¢ÅÉ(X£"”²èGP¼Œqo“g\XgZ6:vK£›øD¢4­_pðªþänCøÊ ìÝ–pºm³±HÔƒ´CèÀl{wîäÅà´y/ž9…¿%Á>{¥÷ÃÏkQ S·U@ÚÕ9 I’>–Á”CýÐÈ>9·ññ°ï£¦BÝí vþWææÈu±òÞáÊ;®´žömÂúÜM#NÂJN¹ßzSPÄ÷O³ÍRBáÊU•:'»¿ 7s×H[y‚2 +£™¶¨šJÔe¯A¸ 'ª?EoÔ< +D ãê'Rr¨ äTX9@Ed;ˆÕ`2V'û0f*û¸3Áqn¯yÔ$ή™ÖЩ-5Ø©ùÊöYËéîÙgŠˆm6~ù]âãõ½hC;3¯×ƒ†×™ìû~І£ä‘¼sIƒÝc&Ч¡â¶rÝÞ·lõO.ÍKœui€©¹á“£v‘´È¿ñâÒ‹æç:W‰hë ×!åó ¤=ð¯9âîW$–½–ª“C ¶©c¢%Î'^ŠþÖ¯ù8Íp<ì“— ÎNhì3÷?¢gò¬µý’«umðHIl±ÎþðWJãZjsÑµÒØžš¦Âqæo™Â™ëqJ1[ž ž‰P²¥_¥šO.Loæ:\½uÔ´*¸’¾¾zún‡­~ÆGò¼Šs¡´û1†T¼Jê–| ®¸¯¹ó>®ØXWü‘Zšìýoè€t†ñ Yêu óCxàÊ]ÔîF«õ~7’B=ýÔÃÏp¶OÝn5]›‚}§wa]VîÇ%ý{”6’ø¨CR¡jZ(Œ43NfH1sÔX+ ó*϶œ]}vÍÿÓå"%È(rNÂmÀÞ—é3=Ul7QÄ#V$cªWA;ÍÅy˜Nô WÌÛÕ×¥smÌøI=o’F ±µ#tZ]ŽIß-ª…£Æs~¤Û°•1?fíÕ²m}wòh ¶%ÃVaSO†œ:´J2’1y×þ¥íoçœS§ÓÜ›hp/(ÿ3ö¹ÍΖù¸Šwò7OÑyE,eÝ`/¹ûÝ“¤/¶<ìÞì< 6M¤s‡ž1Ö泘”Cím}£Ÿ<ıÎo‚÷—ÀeÖH”¬î߃y'‹Rëˆz\ëYû |0†š²õˆ¶KÓ@a|œ!“—° ß4+-¾#Ù+€†n‚ª´·EýíÞrÓÿP½îQu`•ºÅï«BJ†¬Þp—ÒpÒö<îé·$2¹eòP±ica÷þdÒÚÈä_€SóÀm¢:؜Ȍ֖)¯ ®Z‰:ènþÆ8ÞN'`Ç—›¤Þš@;Nbt’œ7¹~53­‘íÉdÕ£@@yè2?I9´rT¾¼ø÷„‘rnÈe»5Óe¡I㪴r–`tuÛ`‘rº»%lÉ/k”OÆ úÿ’èDVòþ<ÜóÕúyrb» o6ªÿß©MôÛƒ*ô;ÅÙð8°É3bÆú­‡µûPÆáó[“à»ßó¢÷ÎÅ3™÷,º~ÆÏ¤æ­ßß9OÂ5Ê[¾‹D3VA-î¸.Bï4F¦š+(Ã!ÙÌŠWr0ˆG–ÝÿÂL¦«áRÁ¹c“+\½úÓ½ü &~N)CI µé:}¦ÿ0öŠRÑGpÏ}èWŠXl»=®>GÜçDn8 ž6i>(Z»êIGÕîמÅ[n)žî"hا-°sGY¨è‚ŒØ›eiŠ,_ 4UpY‘«®4òþúŒ÷C•…ôÀÉL»Xò¢–øÍÙ·ý7C:á+Xrú|õlÛvÄu¶]Xâ‡nTiVDqÌËé~åî¸È2Œ¢™±Ð„7ÈÄîÉ+žä]^û2x~‚ñÚÒ+z T<´ís[¸|‘1ÄQ’ÿ=_XyðŠ›=ÅÄéåJf@_§îÍ{\çÜ5ÂéhíÃÔP,Mâæg˜hâC»8ñÞ2gÝãuXXIQ”,±Re’u|•ÅfgÌ8¬I$ùÙ—žò†çt[)SÒ‰eo´[íÇßÓ¿¢Þž»¤r쯙·€….‘—ŠÞ‡NOçùu€*ü:žÇ¶o9þ¹íP‘­E÷üÒ‹Õô¯7)Šñ!+>L'û[K8ˆr5=×›_‹ÊNI`˜¢Y`AºTSóšP4²%‡½Ç›tÐKÝ8 àó†* œ=d ZxLiV†§%b"Ñ•EË›*&EB§ØÓP¦‘\Ú7èOWQÆÜkK[îKem¢ª4²löq~<êk _¡¡®aƒßh:?«]$B‡^h ÎXUòk‹R[{Óå&Gÿ‹¹"œ(H-¡¥Vzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-b0000644000000000000000000000025513607166133031577 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-broken-mirror1.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.688785829 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-broken-mirror1.dat.0000644016037001603700000002124713607166133035056 0ustar00hutter2hutter200000000000000BZh91AY&SYzÙðüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà$ßúP BB„¡JT¤¥ ¡BPI” PR¡UP©•HPQD¤"@ €A$˜&`L0& €˜“ÀLU$@@`†™ÐÑ4À§„`&F™5Oi1ªŸ4ÔÚ¦Ù4Õ³!™ˆÆ/ãr”L2Å‹ÕäQg`ŒH9vÕ`§ˆp™EQ2bJ®ë¨ ö8‚©*pðK„’˜ç Ê;6*áW -ÅÌÁ3¬,,Qab°i2HsÊÂDÁ…´°t¬JÈf˜ü±™™XY̆ qfLÆô‘ˆ×¾úÊã¼9Áº‡©¼Š=Xñ¶spkn\픣8Á:¬[£ßY]¢Å8¶*Æ1a-ÙN¼›#—h;¥&Tà®Î¹KY¸=æÍ 5ÎÔÊ9cÅ7ÏõY\ ÖvNèéMÄ®nöÏØzæþк7 eZO¼Ê^®°ûÌ)áY™ Q)~IXS1T\-²²‹ˆrÌ‘LìWP–LE{bIöX®•b«¸Vq, þì;+AüìÕéIJ« ûäNµY’öv*ò,tü—Ž‚VËB–¥·eyÇú½Ó7JÃßJÅRô @ܸÛ%û/ ¬Sƒaô[1N™^6V!ÒXzj°¼2Àý›½º›ð;nÉ}a\÷Ñ”œF D‘:æ!pØu¦%o^Eþê½EÎZ ~Ÿ½b'F:ÖR®#ذ{» ¬±NÁ¢ì®ÒÌwF íâjdŽÅ‚ñLJ®ˆëŒ ÌÉnêÂøL¯ÒFªg)=½ŠzÖÔ£*³Ø¦c|'vŽÝˆå˜¤i9óÊ3¯ì˜¤ññŒ¼Ã„Þ;Fع(㿯.ÔmÙÞY°YíµÒ²YXaäl¦t;&Ìñ¬êÿK¬¹¶wqhÍò#åVê2q*ýÆC¹0ŒÑ…ášcöõdX«vÁj 5ZSÔ˜½•ƒ~ÑVs¨e³iK×°[j¾­WçÑm×*Ê;z·¦¬rug^2Ù°Œ§4±IühÛ²&äïb¶—n®9“]4ûA´aY/ibtvÑÜÞ¢Èg}»¨¹7¯¹kKIöÈ}'íÞÖ¯poÖ[{ ]…Y7žå²°—+b=ëïLÍEãž^5#ÚÚíë»8÷i^¡°S¥b¹ÂÂ-V,Ï[oTÍÊêšÌÕÞ<‘ænj¬óñ[âõvtÖ7Ì–Àø¬L‡;o-Fvvåâmc©¶ïB;Ñ Î%¨ëܽ…ìmƒü[­k×ÙÙ°Äù2±Ô×7sv,F¨ëU¾±M2|¡¢ÎŒ_Ÿt­pb)ü#w7㚟5ë¯ëj²ëžé«UzI„xë¹²›ç,žúð*YÖ êfj§…¼û±™˜W¿šü“ ~ÜãÙWËa^ņÕÖ²“4ïyí™ûv*åÞ4dÐaú£ 0ÅÆŽle<+²etGÊì,87ƒWuft1ìíª³ Ëf®¥šfg¼;5w,_y‡ŒÃÒ8÷·iÎ*Ò+·b¿>ÄÙ5óë³]üÇ›²W¯·C:ðö¾á†ºå\+Ežì›ÅšßØk­%Èd­5bàä.ŽÜÑĶëŸ^<Âö×IvöÜïÌ—Ót t¹Ú¿Ò6nœÛ,˜«Žº›‚³•âæo&Èa/1?^Ô 8aÔ¼›òÕülãÒi*úî}­¶Œísd®¡|VfÜÀßÁ&k®··seeq­Ìl£°Zñ­j ¨<­˜síV«^Ö.ÙxôJøíká²¶ 4Ç236ÓAýí[=^§hÖµÛk^9+‚­˜ì, *Ón«ÜÊÊä­ æFÐv]¤ãa±W`ɽa­i ½MïgWf{Iö.Zm+&²µ\:°Îà®2u*g¦´vJrMõÒ[€ÒE¥o.1¿¯¤èÞí´)Ñ:·Pô-¼º 6#jÍ6®l난3›i ÅÂ4š,ªx¦Æ3&‰Kh:oV« èò#ã»'8÷3w5£Q¾bñÍÄÓh+ªi6ãMë† iŽVkf7ï˜I¬Ÿ˜ØO_w³„®]ZØu3ƒ+%iN!_×:· ÞöcE³ôÚÞ­¨Í?F§z¯øx‘üó¥s `ÖŽ`k•íœí2VÎëWH1gxöƒUƒz«å<“›y׆q‡­"U¾ÛÆ9ÊÊsjÐ™Ì UÈŠïF¥«=Eb9Õ™}ÔlUœÍl[³`Ø©ÀFŠ{ÏuCäUaÕ3îìÕ[Aùlú£½hO×½óɹ7š~Ffþ·w·ªýçK;u~c_™‰ß9ü®`àœÙg¸z['¶F"ó ¶.–>óþwVº»æÕðZNJjÏ”ß\5ºgz‹ày2uF¯é¹æJ5öزV†Á€¼£Â †¥‰¤Ó‘êèG<±®lq££Ÿ›8«¯›˜ç•պɰäwÖWYqvKnåmýMe¹µƒ‰e18&É];e~Åši9§÷L2¾í“¹i[ Œlí+_a¯{NÆv¶qѱÅX›—xÛ ióÞ \ý¤Ï5Ãü²f~«M’½ó=µ¶¯dÐFº´K'fŨ²~mšÛ,.Cèé3UÄïj³Æk•°QˆÃ!~ÖO|g£G™µZŽèbü3{TsLëHÁ ˆóL‡®«f&ý…¦ï/–a[9¶wÃQ˜u°ò–CöFþ˼U+Ÿ¸‹b8·ˆn‡›h Z›ïÄþ™²ìß)“E]ˆÊ|Æ è œ}FEÉŒPú-FUâËãl]¡ÍÃý®Â<íȶö”Œ7¦XWëÜ“=Î0Ž]œáÜÁ”d]’ðÎúã,[Q”­;Vs."ýÍWýg=záàkáôö°{ IìÛ©|7‹U÷em]g 5Râ©X­½’¹ëÈcú›Ð#޵,a8NIÍN–vµsM¥`tßÙk¬öÚö~‰×4-Z5e6 ‡ ú¬ÓÓ4Ň·zg'x Ð¶Ì ËA”­e¸·LîXq–úô–Í2¾{ŸÁro&ÃÞ¸ýðÚcÄÝC%_ìò–ÞýGDá¯ûJÎ/¡9FLÏ쟉éû@hÒ¸Õaï¬>ÚäY+ŒñàŒîñòø­KÞ´GÓ`¹%åUñ.´²|ÂóÃŒºõ¬´=¢æjø›ãà^àùæ‹×¿vÿ%È«9ª¼ý¼m#½¸I¢èVÔ¯U­­ÖY„íÝ‹©:÷¯Ku/ƒ¨Ý5nxmƼV/ѱuÓÊâ‡Öy+¯MžAǯX߯úžÝÏ?Rÿ¥àx¯V©·¸ñ±z[4ݼÛþnªÑ¸1ê&ÖÚŒ÷ïaÉþ&¬ïžþû£“]]\ˆãCbú—Õ²]Ò5a™bî­ÓƒVîä§A+I™ÔnÆ”ç˜ý½f„Ú%iÍVÝÁ^Šî‘çºO jÄ6¡÷£•X¾5Ç_`Òr:Î9x{ùÞõ²ïšëˆ·];ëóÝ3EVwÚVs0ÈðÓ¼¼Ÿvñ/Ðz©Á+NÃ:"ÎÎÂZÛâ žúŠº¡ºµZ.‘þvI{«&ÀÖ̞®é×έ^±ï¬÷/V9*/‚Ôd0èf+ïáÒYÙWrôÒ½­Ë3ÏòßdÝÌﱸ²}dzž§b´êô¬¯—pƒ!ÝvÒtwõ·ÅÜ`ð2¹ùÏMäUóU×̯ŠüÑÐL6 ó&œ;+ù__|uR:æ•ÁŽžgZ±/Ÿ0èU˜h«4®Âa…h04†€ûƒTnÇ–Võãš#‚tÎúmÚæf…ñûe3ZÉþªÙ$½ðà ¥gbªð·2$¸&ZÖCA˜qÌ3°‘Ê4ÆÍòZC’]=ë‘ódrŽ`ô¦Ðý»ÝÕÕ9×…VU{Jµ[!‡â¶÷3< ã¥k€Ðws–“8çoqyª>½ÏGLðØiu‹¡nÛ÷¡½§?w±Ó>›îv‡á宆íyÔlœ㣀áZ­W€C7•w7:æ.‘ͽ¨Ñ¬]Ó¸VíÛ;¬VΟ¦3³Ã’hÍ¥´³[?Ø\­³àƺîàådñÓ[klËíµ\ ZOþ?£yiû¯èÖ;ý r­WÚ­põÕ4ªWj? ³·2üÈZcV¸ͼ“û6lžJåøóŽWÏéݘÈ¥úS¼Ï(«k_!×ÝÅôums˜w²¸»‘ºÊàëÖ¸ÌVÖw*ýÅ\Uö^©ä+eù[‡éž?ýí»zë£áßûxÅÆwˆûdè^¢òvÚ®aÌ=ͳ37¯œ«^Þ°ßÌ;”½U…\âªd—ß|)× ­Ê<ûLv6…çoþ4«ßùÉÂÝ®¿Mίx&ÞæéîÑþnýÔo®e̺ûAèŽ-Û_ úK§3Yí}êÇÒ~Àðûy¢Ø[ ͺ÷¹}‡ÖjÐîÛU+Nel6kù¶W¨Zl­DskÿLÌö³YåîTÝŸvšWœ},ÎS[+š˜4˜«à2 La,îýVCŸq­ˆÍ4æ,Oš02V!ŠuOºÌf°°v-{+ômÛvú+v|†O%Þ=UöWãòΙË/Ñf=âÜ7ÖÝ¥º;™ô*ów«ŒË‚8Wç#ê6Ÿóm»MÉ'À]ªðZ8²$aksZýãC›½5ì›û§µ.ÎÞUîcðzÏ'£VÅÛ4¾CR¯óßïšÖ”Wù½;ˆžñXVìuXטNqp†{ËúÔw‡ðe_Ìj«g|·ÇlU²èmVe¹bâ—¾VåhN)ªŒ9GA}ÛÚ³{ñ/utG¬1'‡tÅ¡k 07éØ]kׯ'o¾ Í®ŸPx¿<ñÄr*Êïî¡^iNù×'Å``m—0Œ/¥jd¯`íÞÜ»A¾}w†p÷ke³ˆqÖ®½Ô·kÏ®tïê½åê­`Ì÷^Z­ïTü•ë²;•²_iðgÙ•Ú«özû^=ýõÞR¯þ·/FÑ~Gç:W}+¸wr»Æýð]ÀÙ=Ó¿‡z§8 wïÞªW2ã/ØsÏï»çEw7Ÿ?Po=銺­>ó€üÆÂòÅ©{u„tGÚ²çMf #HÒfqÍEõ EÖµålFb÷ˆõ‹ê¯}z£ç^žûCó5êôíÛ‰WìŽyÒ¹‡má\"Â;¾!îo'}§°zf›Á†ñö7|G•|Æ“ofÇïœÎÉ/åjòõv:Û=×m,÷,Þ+¶ŸVwb0ÀøwšËøçEÒr ó¶¿SªµÃjý)\+“³°Ãù,Rû±ÎÛWF7Hû¨õމjZè÷(ÛUÑFôÝÕË/rw Ï­sõ±·cf´[6Ùˆºa™¹b{ÕgfyùXzÇà¥n°ë“ä»G¦¶kÜ?_Þ;)òUÄ«}gSYL†WΙŸø­Ë·qÏ0û󼳿h¶¬ÿ6Nýìß—¶{6œì-•‹†tn£Xðœ•ß¶3󜯗•¤÷J÷ßRü­Kñ:g|ù=waÎÞjÜ_i»®‰_¬ænÿ…ó·šm£¿Ö:+[æâåÕ{ YßÑ<‹|Ü:Gð>›ók¤~ MÈq.·z>ÛðÙ> w¦Ö:Ùèí³IÅ9Fö®Rz ÜÎô så<³D}˜¹ªlï(ð¿ªáf- ø5Îö™K¢Ã™y—Ò³3ù_•û“yu Ûܰåì¬Î/}ºpjì'ˆs_ªÿ{çâ¶7ë¾{5ÜO}wJêÞ¦3¸‘ü{‘¬Þ5ÞWe>­Ä¹¯Œã¥~¹wo̾sÁMGªl‡Íp²ý·Ky~Ú5g Êkççi8[Ç4›‹°´ßy‹hÏok~:FWéŽaȪ½c*²ba…Á ÈÅÄ4Z©à¿ôÛ6/ÃÑ7êþ)^þè5ËÝ·NßßñŸùøïèw=C™ñusWGmߤøÓzã·®æûn«K™•¬¸êpÜyñããŒx§üJÞßÔíçOâ[“rê»§s·Â|§#wWœjÎhz »Kð»ò^´tn1ªäùð\§|ÍÅOo¬®ÆóÜ»ˆ¿+ÿ?EÐ7³·n_À×{§ê\ÝüÈñr ›Ç¦ü/*üWäòWz¼k¶sN-Ò[2òWëùV²>mÇ2ó?¬¹Ï>Ó壩¾Á·qªúʺ§P°·«¢ðtîûAý3¶rMãx¯J®Ü`¯„®½¶Ø«»u­GÛaà\Mðì?iãÞ„k\³'.æýäºF«ìÙ½Ýùþ½¡+xü•ßÏ,éU®#úž¹Õ»–°x§¸¶sß3·ÓtÝ_žä¼àÎá+Z¶,?ÂuwMÓÚ JóR¸G|ïŸÈón^û3øÞ{°mo9vÍOn6­ }FÅÿG”s'éoÓ2?·£+ÍÖwï»G{?ºnœ{=8à¿êÚNË V½{Q‰_…ôõî;®{‡ÖpÍïÛŸèû®X}I_òW¯•ëUû[Ⱦ¯1+è>kœtîÝì¦ÚWzð Rüs»­GyV)¶®ÆóOæGÈ\G¶l5ÿèJÍá¥wû&û8þ‡ó7W©³¾ã¨÷ Ø:§åuCÄøü4gÿ“’ɯuwfùwþ¡ìßmõíöžu¬¸öíóoïsÃAÈUèü3¹¥w2µÒ´g <#Eçžnö:svñÖm¯ q.ñ—°¼£‡®×̵gÛ\ÛbÛÊÿwýŸëñû©]Mç^÷_qî}]•x7R>†é(þ½…"$N¢Ê®ºöyÈùt¿±†º)ñGª}[3§ô8ѱd<õ=ïM´V'žvoDɉÉ91½±àÜSý›CÕÍ2ßX¥c%pã õŒA|v$~¤0?¸aú,S0įZ0Ui1ab¯ô_ød–f1bͽa¯k5ŒQÞ C‡U 4fé™V ÃÀ°MŠÅLì+ä4•ĪÈl†Qj«;ûF…ëí£ W`®%âk*Â1SJÀµá‡ô1TФV‹“bU¢¬)“XEah1$VØÅ)òÂHü–( ›¤Å„PãØeaI>}ú«ÿÃg»oÚŽ|Ö¶•ïl–-/¯Ð7[ç°ìî³´wvºi0×[!¸›‡Ø•á™;ö'kèÜ<Ì×ܽսsn=mä[V½œyÙôùKUźüW[–)üÅd™MeeèØgÿÿÿý¼÷}ÿý¿ÿ¶m_ÿ¿ýÿ^§KÛóõöÿþ½õÿôëý@øRª@ ÐÓ#@h4  ÐÐd"4Ð2444M d4“@È&™hÈÐhÐѦ˜M @šCF†€€i Ä †€@2hdÓ#M b4Ó ¡‚Ó@ÈhÐÐÐ 4ÐhM šdi£#A @ CFša40@*Q$Ѧ¤õ==SOF£OSj𡦀 4 42hš ÐPdi¦¦šÅ] Hלã§i”Té×ùb‹TQÉ…Š4fXÑ,ZQE µ”T±’«¦ÉaH° 3*•jµ8­ bâ„åé"H’ Å7uc1É„’Ä¢‰¼*“4”BQ¼ª¼X3®<ª-ZTª†âŽ…Ã±ÇJU€Á_Ë ÙbT¦ ´\-1Ôkʽ5¶ ‹1Ø Ë$mŒvLÕ3 lÓ(’"EŠÕ(#çQÒ‰!$ˆ‘yB`¨F]DDdÜ2¤†"„;IDHÌ /gl"Âꇰ( ÄU?Œý)*EŠ6TvŸáb'¸©7E‹Ò‹FzŒC*©DPª‰œ ¨Öš…UMI|³bUS½Êïþ…Ô¶_-¨km-2jÛ¬jyV}|Õ¿_Q£Ö_M¹«ïg´Ö ÆQ|¢Š&ƒ||ï{о1TS=å}‘•lš¼Œÿ6¶xæf“Ñu"ÙÁåLöÃYŠóz…[/·Åîî£]sr:û½o²îõý‡©ï§æ‚$Ž@Llm{×v‹/}¯äÑL}¢P C0˜Æì×BëJbvÏYظ5^ë ðßK×um RteN{'*ž6Ÿ¿k½Ô-y¦Q±ÛM3 á2i¶^2hÊM¨ÁL#ªe–Š(mFˆø}á;¢xÉ[a >Ψ©„˜Î¼Ü™„ÚËöÜÕ¨—žA·%òë.ÀZ‰†[`Äð[=wÁlÙÐÁ]f”°b0Åç]Èûmå¸%ûs\U3+EK†2©âóÃ1SÖh=2`¶õæ‹*û°•N¯V™eY3ÊO ú3Wœµÿħ°v—À´Kˆ>€7_(3©ò×t¹úYÖÆ¹"®Ùà¸8.¢#ålsŸ®eý Ú‹±4i¯üù£iÍÕˆWHä› £ÅËéSW¨<&wÏ“ZDðÝá-ô@‹Ñ`×ú`?0ôÙ£€ò1¾õ„ÀF£¶Q­_s > DE¦Dªó½ÜÀ"u0ó¹àðhÒ`hvï“€ã.ä‹$I#g´Îr›Mn7þ.äŠp¡ ëÕ6zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror1.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.733787273 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror1.dat.0000644016037001603700000012623113607166133035016 0ustar00hutter2hutter200000000000000BZh91AY&SY2[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà…¿+Á°>D”ªB¢@>»DöÒm¤D$ˆRP*€ RDi’‚ï`ê•JiÄäŽ6£ªó»¥»ªK¬©Z­vm´õghzàivzïnV½ÆôÕB"ˆ”¥ïsÓÉeuÀ»§P¨öï]Þ»ÊèÜ÷™\ô óžï@ÞÐõ]Su·©»³ÓÝÕÞ×»ìïy-[¶Ûºø+wxdz¶=ÔÃÝ`õª^Þªž½öz¾_X÷¼á¹n:lír vÞÝ·{ݶï}î.ûïç»·<÷º^ÚðS¶š÷·¯ON;(¾ÝÙ§¶ögµ–Ûjª÷gT—ÝÞøÏ—ªq{YÓÐÏž»ëÅÏ•£_v»+f¶ª®•›í®Ï7ÞÞÁ«ÝÆìHëM¼ù×N÷9¼yÝ톇¢P¥žp‚orï8ITÄÉ£Fš# €š`˜'©6˜`2`ÈÐh˜LhÑ=1444'¤Ú4&˜ Lˆ$©LBaM2jm M“ˆÐÑ©ä£CM'¦˜§£SÂdÈÓ 5‚ÏTäß99#×=‚–=sãéûLÞ>õ÷þF}$֩Ѭ3jhYÆ™¢d1¢” †Ä½±¯`P±È9¤ùÚ)å@¨‘ÔÛÆÜîa ‹# ñ_#Çc4}7ï7vÓu4裳tŒ\R‘²³íÁ c`ÂcA=ׇt½›f<7]çýN]o¸›ÄÎÂåìhÛD¹Ô=¯OôOJïõ°s-ÈšŽ‰šœbý²uÀ§Òò¦[¿YuûÝt“B{¹Éý‡±žU «SÙþÔųA£­g³Š´åꟜÀ·ü *Ú³Žš¯†€„ÕµçEyë$­XþÛê•9ô›˜Ͼ®ôܬÍh«]»Ÿö=¦éîËåÑUJ6˜ÐUô™ZKxž=ôÍ,; ‹¸ÙL’汤­˜}Ïx¸÷vrÝí¶a…¼vÊ–S’döoŒ©ã‡Ê|=d‡CF‡¢’6EB¶ø3/®ÏÞPô5šŸWŽáî˯x¾o#öÕ¼þW—³¶;Ô·3t Ðê`Þ"$¥#º0JUÛ¥(çÔ²‰JK,¹ËÊsLúÜéļ§b\¹y¤R;väïÝÒü¹OŒŠI²¤ ;bYICÊYiT•RI!E)R”Î+¤\´JŠ•TªJRùJ’ µ*¢¬Z$}—Ò½"IrR…UJqÊüïä¹w°Q„‘ 0Èsޝ²®·ç*솪”«’$”PŠ‹ûNšDš@/H½¾ˆ’˜rE@À¢*‚Û@T ‘ "6J@El'žPt(èÃbBâR)Iv‚ƒœP 2¥Ÿ™)ÛÌÄÀ¬Ð%‡ý¥TÀËI..mSq.>ø‘‰}ÞwÑ>Ðý‡–k›v±pLYŠ+‰€à  ÞG rŒÃ>%‚* %Ð<Œê^Èm #dyeœC!“>c%›Xú 2YN5rF¸£Bž‘æÝÃ-‚d¤š¥"ieMªS–‰õ|`U_´0%Fí݆JBBè¤&ÚÜ›:%Áe'ކ¡Ä»ˆÀöÒƒ¸œ$³ˆŸ1HÙÔ«—,Uà{¦A†5ÄŒy {äÂLؾa øJz‰Fؤa)âJŸªvrÄgçÞ–?#»–ÿÆñ€|7ë?½“0ª¹æÈ@©nñ#£aèÎ9 ÚcJ†$´)5X¡fæÏ¼êô½6y]",)HL–qéS{)c™"È àI+÷˜ ˆPò^ÍÔ»&»üõÜá¾Cì¿­ùž0Á>»ÝH¸*ˆD¸ww2͵PC¸`y—œV?õ‘ܰ^ü2OýißÙÆÑÕ¸ÂØBs2@ßš’J×B$b‘…‡ KGc+Íà âRèÂ8™døòâÓœZZi âJ¤ˆFàoLï A@¢¹¢Û¶€…µR“(²^‚¢ PàÖBpÎÄK$}Ãv!âÏI=ÄøS»˜Œ¥$SÁs†SÑÍìá =; gÜâ>º¥Âd¨L^Ö3;‡yÒ<6’±0˜B¹tßµZB—®mƒç9ft˜B ãú°®}¦ÅŒ2@,¢ž|÷D²hÙ´ô,%/0˜‰>= 3‰C4”zåëI>:°¥ó9 ‰dƒ>¤>¢RlŽåÆ™ãýž€ÂOÏ)%ì×—'Jž®IãLÅ̦¢Y—6²ÌFŠ\9åç½\Y¼ªF59t/{&ZÉN½G"l¥é&–Dï^PÂ¥98˜AI!€Í›£R\n'@l¬¢ðΦ¾f—¦rTÑ›m hîåf¹ò—>R’\…&hmɰK׌0+spšÕ¨¿¬$ÈsËP¦eI„BüºåS€2Î µÃ4´ÍOŽÚfmf4~¦™ˆÈJ~Óð¡±Ê'a%¦b“”œ¤©&Ã(i‹§"º{2“…JžöQîS X4¦A‹¦W¼¿ˆP‰qV¸±ÂÀÖ°nä8À‘Ú †ÜÈ Ë!•m`a†a…oe°D” \—Í"w¼–LÓB•­œm²æ¸4Œ…1oÚðÜp¤'z!ê0A¦j<#`qç<U ×2v!¡#!ÞÞÒ¶‚è*Š+“0ï=SÐ&*fý¸{BÈÔ ÑpìÃ8FÚ¥=KpH¥?å# ïü¤¢o2“RþmKÓ†—Ù©Þ¿íÜKòš†}I(¤A€ð ->™àwÔÊ:"wO‚o" 3.tO‰®=ÅpªaÇÆ`¢-Ñꡎ`Wï%áòˆN|xí±»¥ÎfoÆC´/ç ^²QÅ=ij6öŠqSIÄy¡¹>û½ƒY—Oæ1gpHÁK‰“ @À7F¼âdÔÕÌ<“äÈ,†"±¥/›À¡X0ãƒE—ù œRl¦7(¼5"Œ¶zérd6Åér8±f}–³£KÓ]2ùýœÂäY×Ë‹4½ëp`ä=BÌ›“À'D¶ëõ]ÅØUÕÏXá9 ¶ygrÚÄížåᛓy {Ðû®<Û9@sXkh0 KN–FZ`È”‚§ù*Y‚l‡}>œìRq°õÍó@8'dЬÎLj°0µ®n dÀ¨I4A|û¯~8c6Ô$V[âô&(0¬2í’ÏÊ™o y{‹53ÙO®ŸÚgŒL,D–P,”Èyu‰t¡ÿjEì b{g4¨yêË?+}L“®5Œƒ`¢RY½M‘.–†LÊ›ØòIƆªRØ·:wµm€]©¢;â 8G6÷Ènã3á&ÌÖ´=ZœÈÿ¦1Ï&ó/Le[ ´Ž•àœãá¿¡½£¤xáãÚŽÑøSzc ãŠsŸd;w;÷z£ñLØU2%˜“ù)­G–òå(ºS))BÅþ©fuHàJ)(#!I$ÝÔ‰$ÞŸx݌Ҟ);B\Ÿ`X¥.&äË.‹×ÏBá¥XlK{cÔ!üÕ4ólˆ,‡@HçÉÊ¿ˆ;gÝk&¯üJäÌ‹ÝÖ–?+ÏèpâV±X¤ygêƒ:Upz6s_/$gKš~\Í%ì bæiN*Yö&Ô—§Ü/rs/c¥ì-’Rmº˜›[÷ÍÏ6½´BȪL-‚‚qªo #è³±¤Í°U4 {öUœ¨V‚¹Ÿj“ió1 R s/²ã35ŠBƒ¤f1í:¥a ˆ!n³uõÚFgDš”“BË)Î3ø˜×LS ç]0¹9sE>”þÓ•˜W”õ ,²4²æ2^¹J>Z^³ü;÷——<4ëÝYØlçÆDŒÓ¶‡>Ì!Aéú­Pù“˜X™ œªa=jö5ÊJaYe›‹žCð¸$1°©iª˜_>ö7TÄÑËÝ>%å.ŠQM¢YfbÂ÷ÔKOï7©i{‡”ÜeÉšU(tó–e0©¶ô²Å…&&½LR˜Ûš{9s³˜­šÄÈrŒL/‹,Ê)š,µ>õ0 ±g¸˜™(ÇfeTï&À<ª{‰ðæŽ`ŒlHaK)53e—”ø³ªMŽb`j'/.rä3ÎɆró úÌ/E2Vhœ‘.b4êH’Q{&RYì蓷zì ‚˜d,²å”ýJo2çcc ÊÀ²©aeÉìe˘²›<¥Ë–`l÷–‹”âå‹5Ó Ñ!„ÏÃ>˜ Losõé^ðçóÉFªe°;ÍÉ—z¤È`RåÆ$¹iz¯YÑÍ)r`QÔK4³ËË1e–æ¦JöLÕ´óôÀ¹Þä`\Á(˜žäI‡ Ì,D§®œ²Y÷fQñSöBÒʇ̗-S50.zId†ir{&(\Ö'Æ–bcRË<¬aqFÉ1¥˜T`I'/~Yd“§JDYD«˜Ø—"!z»”½¦—Ȉ* …$ÆØÐ¸r¡­ :7MQM#Xåa…Ì ¶5¤N¹­H²ôí±"÷~•Ð0´¬§2ÞØ]ëÙ·U5“§™÷$ÐLó& n÷¦ötžEˇŸëõߟSÍ) ’’”¹)ü6;$ë¾õƒ ÊmLññ’¡áF4N¢PÊšSÿ'º6™yk œŒÝ%ƒ‰|df:Íštr‘õurd>’/JlÒ‡\xé¡PBfô˜à0ˆR…žˆÉ7,œ¤Ê6èjgød!Î6dŸ¨|å} d›¤Î¹”3añÒ6P¤hQGNg…),‚t²OÆvCv%/dÌaÈ´+ ÀûÙí^ÀíêˆxEPpep¶xö¸\ÕŠRˆþï›\βÌŠ0¨iùÌ;ÞMy¦œ£x{æ© ‰P=²m³Fcû3Ìáœ^³<¦i(™å6÷í÷S÷ëdšHГ–ÞÙ Û†Joà¶ÆØf¦ øA¬LvùÞQèñØÀ)/‚ƒ:g¤a˺ftšîä¦fk>Áj†,¿xv#Xa¬çGñãA\v-P“âTxh‡û&€b $Åp'Ù›¡€Ð½„âdm•®þÈÅ Û¨ú‚ª20†‡„¬ïdùá—#±÷¼s†Ê5ã ÚòØ”ý´Š”}S*10ƒ¥fY›‡‘‰ëŒÄ[øuÂ÷UØëoÀÌß |’K¤”MŒ™ÄRÓ–…N)I• Ó!‘>ô¼CÑ$RL™G$¾u-®e‰£LPÌ\{×§0Ï1$öðËOx1Kœæ2RÐË åÒé{4…Éð®z¬rÉ·„²aB• Œ–2R›ô:ùÒÎJ^ÅùnÑ P6ŠÌ¬;0„Ìéhm˜æðš·»b’gYkMìælrÉÊ´E./ JŠ¡rÆ(7í<–q¤o߸ á r Í â¬OÝRø½•bÐÍ7ŸežÖü¡yý*FÑ RiK6yÍlö7³GKrÍ»u0¦TZ3IÿΪd“–mF°<Ÿj%‘lqÆTÇ!Ÿ-™6 ƒ$ó²V%ÌÆL‰MgéÀ‡Óz·æÆšÖLÉoÆ%šæ\ûÀîª9¤Lò¤IJå%¡ô$Üà@¼I¥/P”±(’aQ$¢gMpÊ7öjpGÇfÐÀšt’¥Òã8ç×<ÔM„/Q]+†ÄÂëdà‘Š ù Ób›¨i%ÒòLBòä²äÓ¿RÉ“å*¶”,z÷vñ^YšŒ‡\Æ}Ó\±ûf)&Å §Ôz·HâKÏtßW³èØI’sÆÄ}™·I<dÌMI:çë£Àzç´a&J*|×_4ŠNÅèŒÀ› wOêr+;¿~DÓ18âöøîûÀgŽݧ€ŸMc¤R÷ÊgŽÙöÝ3B¼ÞæE¹$ܰaà kûCY¬â$gfwÃ&ólæ=°y»Nõ*DÿéPðáÂ6ã4NiŠywB¿ ÊábÔ/½Q¯Ü°dP÷zbP‘¢| îIë¥Nfe™›ŒÉš©Ð¥„懆ðÚØÌGŒ†òœñ÷ÂkÊPÆlO±$ÈIͼÁÆ&N¡‡5/ âid“!ÉQÄñÿN)boÜ“ÇRæC䶤ÇõÙO¥)V7†`¶bDÄçàAŸ`ÚiIÔ38å¡tu>3h?(2W0a~4 ôõ’“Á*q´Lƒ|L™Ï¨Ý—­ Íe4’ÄÄNgÆüN•Ý9Cî2®>Ó!úצŽ~Ï·3d9*àÁ«H:°“!Òá–‡„T=ãÓ<³-WV× ŸgúØ=¼âßDu”›Éâ¶y¢_4dôϬ];$ø ­x~7|Þ\žÉ¤8–SË»ÄóÍÑž2k®z—µvLÆ÷)1œ³3Í3îw¦u,F1¥ÊtËß JšwÏkÞöœ›%°3oÆÏ³®±Ñ<7Ûr.¤~æú³uޱs´Sš{×È}FðÀýoèà_îÜ‚aÞл·Ì`xªx/!çÜ+>˜}p ¹Ü¿;Š.&”¿§æ,ØÞÖ1=D)ì$ Ýäähf<ýízÎÙÒ¬Ú^íçØYÄÿ&øÄæTÑ5k>ƒ£N­È/>ûP³‹Sì)½)μÂÇN§äkß}ã<'$瘟ÍÄ8Éô]k÷:%—›cñ,|WôYÓ=4ЯiÛ«·iÌaLyŽAM™eñúŠ\ï›C~:äiXwG3¤< Œ¨½"¨!âþG!Э>yLm>áƒ2,!Uàa@B\m& éç5¢üí‡pOf|Ò‰¸¢6&ÝQ  ¥ìZ@‡7‡ý‰0áÇ!ÌáÕ7CŽ?ŒG´îX€ {Ùòí;\ n)ð^½L‰%˜GÈù>^jr[€¸qÈØ Ö‚èä7 ïšœÝH°ò†…LŒò§§Ñiunl¢GÒ!v2øSœƒrö9Cçb3#a›§„" á> äö2ÆF¼×ÎoôÏþÙûÁ&mê„£LΒɰ¨Mù)õ!R„‹Ô’;å^¢ ,RÉsB’d’…LSÕè«(†­8dIÊŠÉ¿BOˆw"Y îà5ˆCÉ„<‡, ô…;XlØB†a„=öp €~RLt&Üwæ˜l‡çºCjÜ<Û a¥ZŠÝ6 3ˆC 3º@ (V³¢V@ÒÀÒ¬íéjÖ™¨ÒT&wg& -ícB“3…øCvÒjJ¨¦fba Öƒq\h$ä,ž®qá/¤¨íÆä™· ü¶{J£üC$3EPE“tÃh<àλ¸„?ÎðxžâÃf€ô/\;¬7òô` uaG‡®ḣ½8z7Ì §ÃXyS!ØCäæ±täÊ[Í˧ÐNà%¨ÒÔHY“…9G*Õ3V’㔡D³oEؼ`­ À)­zFàÁ¨ÀÕaîª ’”¤ÏKÒK3Äé%Òò@ÃßV‚ÃhtÊ×'y`ëŠÆÀ1Å'¬Î!"“P>ü ã#¤´ØwFøà„¿wÇ÷?5[%z'™šDɲ™ÃdG9,ÜaF¥é ɾ™,¤Ä˜Éæ—²f$wscdÏ´žIß¶ÆÀÉN2‰³6—\ƒt6Î5¶ÐLß¶G°Ý½CÊ·¡¢1šlý<òL!‘Ç2F\M…ä,ÅH‘-¥ìÄ… KIPQ(]Pà™R©Š Á£w— oafq®{Fäg ½%"ve.&Õ3K!’ðÍѽ³¨l: Åø¬®;y±'Ów¬ã…lìómgÚ–ès&šÇQ{Bð;§x¸#K&ô3%ØoæB‘O<¨¶d;λ â@ù·ú‰ã'ú–?Áq6öQ=ý3sÑLü©hXd„޶p=b´(d¯Rp"à.x¹̘!®U 0ä˜DÔ=ÀV;Öwö³!ãäóƸ_’lérö~Œ©!îuz\è¦ \ª~­©:E¨ýó2vÅ!oi!éÿ™Ôp:z®¼ò‰œë©Ë Pì°EÄýoS<#S’SƒrPIÐjQ²#[ áû ›/¬]Üíù¹†Õ¹.WEï¡ÁºsÅ¡õŽ"CToË@{)‡oŸp€L. ¤y“«0ëšBej»ýͱã…œïÎè¬j‚¹Q„!^paXÖL3gÚRrúÃO\SܤBN87w˜–®ÓßϽ/þ™Ñ½“ÁÊOöú™çd¤Í©Nï®kÝNq«v/vL3Ê©—ìïRÇ¢š,¬yoãüàÓù+¤‘«ŒÐÄC4¢gž„c2Ç¢†{é’×”Ûeë—œ|ö(´°Óa4™fÏ!2aáÙÁ¬Öj6f[Ú“»1ɵç*ȘIŸ7ùh‰°0,ûé°èQ¿/sFÃr{d¤¢á³*ü›Æ@‡ã”îèÇõHOó ¾<å3áj<é`èq®9Å0Ã33|7N¯´Ã‰õÌ;âOϼ~’øwÿ©Î[…©ÿ‡œÈ;GõÈQ\±Æ’Žÿ²N-{VyNgÛÿ!àCGçZ¨lQASûïK/­‚gº÷§ SÃâ G±Î²9 Nÿ>WòåQ‹Ã©Ö µÇ¯RžÎ¿kŽ¿Î¤- G÷@:£Bc„hÖ©#ïÊD=#mqM3nmk•AsÀ¼Y*¢—6ǰúc8¬š=#T ÷€õChü Ì ›ðnœà22 ¯y²‡Â"×qpÓZúÔŸ–•zÒç¬ §Z5žW•vV‰U§šWu¥YW•y‘ì_¢ì vøìã„waË;GžxëNÉ]ÝÀ z ê‰q[U2òŠ©T `ODªà"ðjX“㘭“±šÒ¶Žù¾¼ÛíMá’#’>¡íOœwg£,y'À>¡î “iš!9ùœ–˜ƒzuBÿ7`ö-ZœH꘣æfJyBh™Ÿ+dÐüpG2hù›DÔCë1åØž,%Ä”@³.Ef26xìžrÀ}À[3–qËÉöž#j*ãÊqÍ1°#Åç%MñÛ™6ƨÌÒÔPº7ÄÉ—°Ûƒ4rJÍ™ÒD9†Œ& qŒ,aç7‡¼öbÈ^Çê 1ÿs(`KP6?"tÓŒŽqä˜CdCN3!Mñ@JCÒaFÇì'Áñ¤œ£ÎpM˜Ìěì{Žøt†¦øè'ÚlÊäãÙÉ9ÅÉdsL uÊ0ÿƒaNpâ Î(ÀSÆñÄÙÔ>f¼ã—Cö-ç$ -‡ü|Žiýž#ïáà¾cœlnáëŸúÿ#·OK*|ùÜÎåÐ&4¤Ä¸ëV:׈ƒ§>ºÏÆ=‰DÄOƒ’ìÖ”NUóÉdæ'¦NÙ;™é3¶!úJgÖSæ2×½Gö`|gz°ž$ÎO¤KB¥¦iiIß¡MMÿÛ0§œM¥ñžch6&í$ðai±ìžÜh|êÎÔíNˆÝ[ƒ`6W±™ „ï±Á¨:Ë\ç¾àýL¹’1§¾YÂDJ«$âØò2`ž5ç«é4ǧ=™Ü”o‚Œ’ÆYAÓkfï>|ñ5nw³ôeä;±…bõAõŒŠä6àp„ņJ?Å ’ë*ïqGSÕD¨yËJÞdB1Ô´ c¿î;m)ÙË18“:…̧ÍÓ¿ŸzÐØ1¹öÖa‡Éw’OÏn˜`C2!­é ‡ W½sCh2aÃzâÄ/—êP!³˜}"ÀúAg8Ó—}—û&ÆJ˜ÙòspË”—··ˆöí”Á<&àuM`yÅr³ýXì†ö~ö, 5{Ý,íãètZ€ômö9]ü+£~êï ½  *jJTÙ²‰ŽLUÎ5fSð«à"qXŒyÁþp°祮"ùò)$Ú2aÖÈó ·<=`¨F}ãð`³lWu+yÝïò1‘–Q‚ráÄ0!È` <ŸƒÏ··ÑÓ¸Iý%í13f®lócñK}Qq8çL¦c­pîñÛ86:Æ@¹ñQ”¾Sذ­Ñgg ’cFº“‰ÝvÍSf3",d6Íÿ6—–†ˆ²ûo\¸‘èú–ÏóÖ|TUyXYŽäƒÔ)½(h‚ê`ÜY6òc÷¥ŽØÕ¿‚k”ú°ÎÓ0]y$ô.˜>§bo~ev ã˜ Ì“‰… pðÀõ]q‡äY‹‡dëŸùl˜|âIÁËÉ—CþØpmÛA27>î,‘2‰Ã!DË*S!ë¥î ”jPIž8s¬Nß+IœÌ®IЈRc`™ò·6Æþ0ÔSø<†’iÌë‚&yÌBÉfìÐL”\À†Œwðtæ ¼2b°Û žeA·,ŠÂ³¶ä9&(3Àã†Ùª5ÀCã{wð?þzÇ—uïÈàßLp@m,áM€óã¿Üdë^õ¥»n™Ä  XR¥$¥(¢j”,¤”¢¤Rôª”„YB”’R‘JD” ¥$‹,,¤BÊlã@á[оqõ†Ã‡{΀þÆÕö†w8ÒÈqU)dÃYÈ—FÎ<£¾²lÐËa†fªÌÎÁTz¶»QZQ†fã † XÝ¿`t/m˜?#Ž.—Bòn,ç“Ïîæ‚ƒ°3)ŒK&ÈgÎ22%›jgEz6e¶Q¬0:°)é á×?݇¬2d+Ê7íÄwfá“rà\K—×Fœ¤p @…™!™YŠ®òÞ!Cß·ÃhdHVu†M™ß]¿L:ÆHNl Ò±‘‡80æ ßK‘='œv,Vûbw 8ÖäY£Rtê$òìâÃ<²Ãð(6…}$yu–Q"‘æT‘4Ê8bII&©HšÅ ³©=j’jPš¥ ÜÔÊdR#\”D²S->_…“ñ;)£še0wŒšL¡CÄá\!T¹ rP!› ˜e³fÿg‚zfqüöâzŽ%Áƒê”·þrÆÊ“šfJÝšòÍ Ô=´+¡ŸUNXBQ´M:tsR´Î5lã|h]Wœ^Ñœ£jh[òv\ö.­×"‰ß©: 1§­MbT°Û};BOBó ¡amŸÖÏN¦\¤ä› Ί|íV¹6f–™Õ›Ò3±í¸ûõݘ<\Á1WÈÎ9ã.‡zVLB¥I*TEJM˜½û½†qq½,£h¹ÕÒã4™2æÈÍC )7#\@cÁ6ƒJ´­õe™Nêe“Ñžty²ÄêÊÏ<”˜ÔRä`žY˜ÛXjˆ3án.HSlg ¢ÏÕ ×™ÀœpÏã} ßŸ 6@Ä0ëœ)&€‘å„ 0{¬îþNtñ)J ̱ákpìæv¡!ëá×AùÕãÒ`’uo Ô”¤¿”qå£@i­øk¾Q›¤õµ#ïÔ5°f, ‘Hª‡'¶ÍžïÑ_:tÒÎr ÌOšZ¸yøCÇ ô˜[p#0öl”˜|Ô$ø•ÎÍœu¨£Ã>3L£¨^pÔŽÕN|§sIÂJÌϧ.3t÷ÄÜå¾+úÔèmŒ¦ù„Îè˜ ðXñäíö¤„ÍÆ0Ä7ɬ%¦þ0ðÕ7'±Ð7å·öbÆèNii Ú¹s uNÎrmrˆ¢‹M#4OS$¥½Þ'¤]'¹dLò 3˜x_7ãàƒƒGªñ(Çk5êÛ¿ ¸=p[T†­pLOÏ  ˮʌ¨¯Áª«ç§Õã8ÐM;w‘Š÷¡¯íöNË¹Êø"Öo/¡œ)ô“Jœõj_ ø2Ýzó&‡à$fŒµ?1fcy.)Õî}ôãÒ3fZ™.—rwÊ%)$âçm7×¼Oá¯çÚWÏ';?D“fO'I¨ Të5åe–Pym¥5ò07=žjŽÿì°#ÈP;žç®iõË~½Ï¨nIFß°Y–™¤uK?¨¦Ö¢÷3¶by‡ú¶Bq¦¼ÀždæAž—/:ù·°M­ @.(…yvcÔ3äë{öCdÂm„jŒ X쉆gQú¤L—¶y0ÝeRùªÿ2âk ƒ2uÆÎ2RŽ1¦ÂiÎ¥°/%ö•Ì!çMääŒOBž;{D©øzQÎ!–X÷÷À|med!HÐówú ùr†ï°¡Cù•ßèì]Šôó×T„º|‚ Ði†  ”|_äÆI «Ó¨Ñ6Q}íTI »~éœ'!Bµà@ÕÂ`RüÀFé†@}îYªÒzŸÊjƒ.nçT†Á Lpc;ôC´Ð¦0<’6…`ÀÀÀAƒ’ :«0‹8=é±0"n,·G<<°=+15)xK×’V#2 Æ­¦ _(v–ovœ?¨áaSUæo)¾‚,Ô*÷ÔàB¯‰˜ÈÀggæúÞøË+"fÓd÷o|èXLmÉgbšö%Ì•ç¢ãƒ~”¸ù .1sм5=’‰Æ)%ê#ܱ,âÑzË)G²,¥(¥!L+ ¼f%ˆ½(’ä±d¦BÉ9Õõ”¡IIF4¢\¢2TK(KÚp°½zå!¤\¼±’£Q ä:{/M”:jö¯áx¶y ~ˆq-ÁA: Ù ~('¶U«ÐýéÇ(`,BàîI Ô?:˜!?îT8/éÖ̇Áñ²UÕõ±ìÔ•Ô©¡f¾LˆT}LÖâ® I9†ƒèznH>ĈS,Hv­ ÚîÀÛ?¥èg*œG"Ö@So÷ž/• »Á‹UÙH/> 0ˆ·yÄ|E‡,£‹‡_~ðOŦÚïâûæ÷GF©ØíÛ×±±OæÓIËz9вœ‹Ø’%êàZ &’Ä«ç!ÿÓÆ&=Eqíí›\h$e¬<ܦ¹æfbÇ*ê‘©|&=c‰K†øà/K“ÉrÌ„²Ì…/d©´©¹L…—².\¦IFJ—³‰šJ3.nwµÊSËÙ(æÜ#ý'2L/ñõލ¹=Ršfc7r ¸ìù¦g)ªçÿˆNUv¶U|iÄ('o‚G» Ð3«oHa\zMí´/'´ã°;"Ê\Ó'èúÛ ö—£‘3Ô™ëGkAA—v˜';Ø~^Ç,~¹ÊÄ8…oäHý\iªähDr¨Œç•¬üV­ åÏ_xk¨<%,î6Áö§4ô$>þ48‹à¡ãý ‚¡ˆÜ2så±Ád9«æ×2›…Ȩt…{£ïÈü ã‚÷E;{§£t+åf5cXm rL^ŽYøÔóÿ2Rœk ùXW©L N ½zæË–K2ßs^™¥Ë”Ƽ²åŒk1¾ÃT¹…E0.{fi{!‰‰{Þ~ï'H…7ù½ËL§—)e^âåŒÚž¡Aá(œª™å'Z¤šEœúŽ]I…L H¢\¡…C1¹¯f/`\à#%DôÀ¹»=JÉ>Â’õ%%$ô+ŒÄ¤šõë)òÖ3ͯK—$êK“´XÀ¹f‰LãB±Ò‘e=Ê‹)…M|›êGÙ“¡½3í?|à¾/ót8ÍãÞ}œKŒäâ ·vœÆÚW5š,…¨Åó=Öó °`Ar%®8¬‹2òäú'«[ÈhZ¯áãÑÇ,óée—|j%P<‰·b€^løÌKWº«Ñü}Îjxzq’Š:°9œ)¤ÑPg•Âi$ÍB¿XÃ&`H_G;Hhc/ÒiP¿.-ÕYŸÊ;¢Î¨h Õœ9˜‘“ŽTáBL¨L‘ç4å“uvO Ͷ¹»Ì-ÁG¿Ü^iiÕê6dÓ”(¡ÒýJÈbóè2Ð#Rôy7ýO j cýúþˆ‰ÆÈ‚0YÃù”ìƒê6$އ„áˆ/ö}Vrpr¿RFÚi®|ûé<´´“š”÷oœ%ÏA‘)µ©×ú†LÞÙÄMY×Ä’p¹Æ@<ðu¤ƒG͸°&>hcgýiLÁOÓµðÖ\Ø0»ÓzÀùwv&޲ôï&½ŠZë…ìFeÀƒv??Õ÷™V‡c›B‘ûSºQûàjžðq†ÌÍ•MÁ:@AqN؆$t ÷cžЦÔêŒÓh}ÆðFð¸£\sx)hu'8A¶<ƒÄÍ5Œèä˜|yŸ†„ÜÓè6Ó~QÓ"e- Q/hÖÐíÄ>z]<5°Q bCY´Z¯W<ö›T/"ÍÀ\ƒ*áq oÂÂqµ¶˜_ 4Ä‹’o]+Ç+Ýá¶]©‹2SEMJèfô^É3s¯yâ`5“¥¯êàfÓÊy(ï˜iÎä8ÖAë\d¤{`îÐؽA™Ma$¼+iª?"T¸¨<#yâhla„ ÒQ0^Ì@ÓÁ±)è~œs‘qï„É[Þx*$žDÑ~·/KÀïbî‡'» KöP\'ø ë5P1K½)¢q z¥Y¸§ŒÑë ¹—:B »Õû¿­ÃÙÅÓÅ«„^‚Âÿ$C& ‰%ñ“CÚÓ < °€ÀU]‹[!' ñ{7ð5¬–‰²•V1†££³rÃk-;«~~t7ÙR§§ÔdXÙ\ólFâž,ûažqû[¯Û¬ŸQµïSÄe÷‘sääŽ]õIÇ=ùàËšÍKÏÊGl§é…˜ÿ;³®9ó ˜'ÅCÊæ…s‡ÓKdèØ²"í„ùèt¥#À¹t>Q”}ØQ€Ù¦™5èÆžh@ûGŠx#ÛŸHëNï yì œÕ)ÖW6ngR{ór=Aò¾tgdfa¬?yìÎðßzh qÒ˜ßÀü'Dc=)Àœô‡ö5§r&3ÿÇÅ,|Óº9ó„4§LyG\|c õ§Ò9ÏÄôÇ~qç¥8#s2>p§ì>לùÇ_'dáî@jBúŸ»ãjMLÕ€÷|†$oíŽðò(âàîf/à%€ý'^Ñ"åÉöš¶ƒü§ê4Þ'ñfNKÎ ÎIZþëÉÇîÛk¶Í “ËÓÊÚŠmnpÛn&ñUíòC_øÞ7çɺl²,­w^SU™Ð-hY‡”=êLL…$dÖ9WJf³j´}[Ô3¥tr2®€¦‰«,´îÎÖ¤Þ"y‚ÿ×eÙ»ë‹ì~® uPJµ¤ñc—Õ Ù]\EY ^äÌZø`9[RN€`Z“yO–³ñB÷›Ã¿É•”€\3ÉksO|s–à‡«Û² s­nŽš^ôÅêMJ,;#x«;V f@Þš‚‡ÄÀØtm‡”m²VÁ9‡Õ'dù#‚¡”×<²M¸á%†ÜQë0&Õóódo'„z£çêϦnç’~Þñ÷Re„ú¥ðõÇVuª?¹þçò1œ™úϰz“úèï^|ƒœ:£Õ™gýœñöÏì~ãá1ö f°ü%¾r‡.rGrwÇbxÇ|3É=þ”û§´?îO(ì`ÑÜÿŒøçö>QîNˆìÎÔÄy'ù¨éŽÐÿà ó(±ýÊ;#ߟˆùÇò;ƒ úNÔ÷Çõ;sÞŸ¤ÿö|ÃÇ?Y–vçþžIúŠuÆþÏê}#ùžIÿÇk¸ô/dtÏ~¨È¬dw9[¯h¢užqpV‘£q³XµÕ­ivTuÌI‰(žÓ ]e¤žC$ ŽÒL‹Œ3ŒJ‘cY JeNzØQÚ©ÑoÛ®ÐÏ© Äί ÷ =nÚ´¡^ÓK»Éü“¼Z‘Ó ljIˆjÞ™yÏ6qîço,ãÒ«Óvu²‹¶Ý±â¼•fyÿE±A­ ÷ Õ}7ú«Úˆ¨ à¬ã» ^ÅJ¹lÀRÍõÛå-ƒ³zÓGŸ+ÈLIò±ŸÑ~'Å0~Ya]ù›_ÇÀ~ ‡6ÞPxF¶Ž„Ðò!Q’„œ0gÀú[¢rlÈ{´ oµ—‘Ť³8?ééÀ…uFy~cüOþ ²f©æ¤þ-=Ú[Q»pÈ¿©êü¹âØ]z Rd­Â„95%mOܤAÈit“¡ð(‡Å묊Ú+ò‘*ŒU ªªrõ 0¹jË&½Êè¼"Ó.‚µ-z‘ZÕ£Š`]ˆ’Âý†¦ƒìodËr¼Ûû‘N‘ ÜÖÀOÍš²cJ=“"1ÖÖw]:8h¥Øat¨ó^R€-£`ã~fvÿC÷&Ëû@ÁeÑT ¥e u” dÉSϱ™I;±àrrˆ6·mIŒ:ž¯ 0´’Ù7 T÷5À´ä6Üo_·ðå)Úª„õäp†ÅyÊÑv3Âz9¦ Ò=Í àØ[#î±€zí€65¬ÕŠh1ºJ¼MøÈ–ÒTÁ•ø€ LW”îËJqüsk+í·„"ðÁö6C0Ó§ÿU±©4L$š–Pÿ=§(‹‘öå#͸ö®kSçñ³ Pûú™Öb3쌨û*íúå‡-7ñTɱÐËõDKÚ€¹h-†©×nhuˆ85“© 5ë×*ÆÞ‘Ùr#Û‘ÇSîTŽ&ñUÖí0AMMM“‰ R¤¤‘JI"P@¢6Ï~ñ"N×ï8é…hóñ¥Ð“U>Š|8s ÷]òþ …jH<êÃjáÃÃÜeóÌëy{îì,‚Ð-ƒ‹êþl+–¨í^wм æÂ£±3ñ“A0¢xí¡ëX†K°œÒ3çžrä¹õ¾¯84 ‘$Bul<8e¯ÜØn WpqÎH—¥üv%ÍJRŠRRn*>‹\°±K)ø `æN‡ì#T.¨z,@c ÿ§‹Œ{¿ EiÅLÂl\wà ýöí Œ)•¦Á«õõ°"¾òº$xw£AÜ+¼†!°íÙ@ÿÒ˜¡V€ðã‚KNÖItH»átõBw«¯¬‡œZ1ñiu·î möàÈ~‘*™®f3Uõ[¡íÚ¸„ˆ˜ÀKª`]‘Ô7W•”æ®âp \,Þug\‹¢ou·½¶²¦?½ÈwoHñ°fîO›€oXÓ˜ólgu øøÌiüìZ‰ÀQçf þ;¦¡*¼Ëx ŒÄªá,j²„Ù®]ÏFçÎ+êå÷PéÂÔ‹±íPdý»R+©+§'—D`:Aè›ñ.ꬑ€Q æq‚˜Ð/2hzß’Û¹Wé4†à~€lÿ–dñõAóߠܽ»¿•ÍJ½ëf!Û?ņì;ªÕ<Ñ|óLP8Áà9ˆÈŸx·f„~-bkû…Ÿ;¦­Øm$°Îì—øIQÖ2©%Ÿ®,pGUT¬j»ßÑ~<Ÿ« XÀê©¥jÙH§KË Š3 ²ÃÈ7·5ï „nÁÛ¹±Wwì×mûtÌ—sŸ”Þlb0íïg²°ov\˜Þ3Ðçœ*‰ºÑ ùµŽ À½J¼’ûÕ$(ª DÔÈ` Y)¿¥ð^]ðìuäl›$µgƒçäšípºÒ¹‘`ÈÑeâ÷!ö¹'ÇÓyúC»(Úð`HiÕt.¢h[M×+Ð&kÚ ÜÒsWÒ40!lj!h*’퓲 7¨âÓqÙpZ®>–t_Vbsmò¿f®˜JHd´Îál>Ÿ»”µ¤œSðÁ[d6dûS˜RQì×™€ƒ©v.‰èØ hŸX $@dVp@Ì[øñU ŒÕ_hF+Ñ™ ¯wæì3è…@Á†ó Ý&å¬òHuKÔ?¥´{=)ÈB,°úìc5[¥BR1¨0›+•ê§žÑ>€™òL©{ÄùÃ}Ρ½6Nm'mž«öòw{ZÈÄtWü•àa2•8ìȧd^Ú¶-½‰P×Õþ¿1/¢9G— ‚@ 2ú ¨7¸4…v¾²­aí^I’ÒL×?¨&bF·x?Σ•ùjVüÚ‰:­Ñ! ð&ü8Ç©‘nÐ6ê”ak»fžx$Þ—M&àG7‹®¾‰RFÃë=…KØÒ«åÕËo2V$+†ìí¬b· È!¸ÕD„´ Õ4ßÉZ•~òyY®ŠüÛ¯O…œ;"ä2ÒJ„çi}‚2s gw„Ÿp¼³wŽËC/ÐU%õÅ6Ù&*6!%üçšÖ‘½ƒÂçó¿×n1%ɯ)`õ oÃþwÙîJB÷&×!÷K?êpRMÔòfJE›BrRÍèÊ{¢gÉ›L¹Œ½÷Ûy¾?Ù¢ngn/Xøn8üó­&y±¸i¨í?vã„Òˆ°±aEË>O^¥æ°¡AbÃAp¸¸î.wê“_1¶d7IÆåtnÓ+h9ÝÁ¥À0G*Ù²æu¿òÜÏ ‚©X˜vÌDÃtd†ö‚Š$ˆvY É ”P3n~zË>¦Í*Z€ÞH¾ƒ`0Y —ÀƬŠtA¦h©rf,åH¦ƒvaV„Œ"柟g'„m:V]Çâª3±uu xÙRØ~Œã%Ï¿‚wM’ÆbhÓ¤1;…1ÈûÞŽÎYùMQøH:j„}É=ÉB¡Á¾sð}7f3ˆPI¡àÎÜ’¿JØpÅZ­d®!Ž*ocfÕ k+ƒ`BåEÚ«!¸À´Xy'¶{†éÑlF¨`*QÀ ;!†‘©T6ä0»;úO5åFº¬*n?íÓ¡zÈg¿Òx|wÓåº3è:ÌCˆô­‹€M„(üp­'³6n'"þ:ˆ‡MR +ø, 4fb•@Ø^¢¯aûü¹‰ÇSMX\Ñ< ¡4f™¼ ·ŒLf/Ìäþ­ÙKfŽð'U0Î`} ŠH?jûÏL’ôë‹Z†ai0 –@œ-¤èŒ¨8Ž "h¨Jó`tOIËØ3»I’~ù_‡L+€b×ȾäÓøG®þæ1F>*Ç–<ÆÚŒƒ£Š¡ŽwŒ~=sùÄsÐ7Üäìj®“Ó¹"Õ“XлW\‡ý&"mŒ-1,¢w2SÄGéÆc ×ógíÐퟡ xá<eMùÿ$z×4×TŠ4½lì£"Iþ¨&Dh~t³*ù7+Wû„ÕRêEÀÜHî “™ë5™ê 7s!ô|¯Za@CœöüL"F wùVºÏ'ÇÝYí[F[/X²8¾Ÿ{¹êè²ÖxãEòOzÓ³9ù2!ëR•³;¨5ìÎmX­]ê¼}Ó‘35ѺÂ, n£ü8Wµ‘ä ®eëùõ«iœù°ádxêw8£MŨu1Ç ±_²£ì2ÒaE†3ÅXÏ^‚FÒf1aî·7(dòióE¨s’&örŽ&ŸðÉú¶mM¸À•ë{‹ ÷j—Ù´­mI­/¶ù‚ ÓŠaUˆ)ˆÁà&‚¢HÓB ÷ÁÄ” k-APƒ&Õ›f­¸ì:SEñ_†_Æx—d¢dZ¾É(2ôuX —e„…¤º†üzË„½¼_«| pÿãºÝjipÿÓ›÷·¢è¤|hèó9rÈ٠ݘ;Ã6•C·(-L£òÜ%Œ˜rVÃ@Ö! !l30ÿËòäv‰­j5_?…1»Qæ²0©§•át~V^‰m˪;GB ÜÕ4¶>,x*TÁiÃ’Ã.__†{è“2­¦æ5WSq\LlæSó‹WãÁs1xêÜÿo9d&žï“”þœ…Òp†¤;­æú¯½&å›à›ð´ó`'/Ü3d§ŒB¤R©–:Ê\'|«¾ê]xü’ûl/„ùp?ºÑý÷=ÝÐ}ÿOv‡ÙÔÒÚ?Ëʼnø w9›ª½.YàðÌ î0X«ÒM©’à•Q`Ô’ B¹í%iûýàŒÙü åç\Vb}ÔèEuƒí†XZƩٺ©À¸*ö®~4ç(“ Æk,†-àÒ?À„üôŸäù iîS¯FþgSûîfv—)ppVRý37)ß³öq¨ÿßk¹[yXÅ|ö ˜uÖd‚˜\$º‚S’uPçí¯3ǯ‹YûÞKÈ2ˆˆ¡ç¶{OÉꕳ$<}%ëïmÃÏÊ%[çùIŒ™ç•qÍ Þ(Rq¡aˆ%¬»RÐ}'„ë‘gú(bªuÇÈòå“v+ʆÓyžËèøÞé6—w‘sD{´ìFnWWJ&k)U$©7ÞA™¹=œ“\}fø¤ò7A¶Í唃¢=–ùÜå:Çìœ:eÈêÑÊxïBí‹ë°ƒ:üYê1ÍÒpÁ’©ž¹èˆr5ëJ †ÈGâ±·£ŸËkÔh?!<ÏØu4¾ÿñgó-Šò7ß^ƒ¶E2JÊ;ûEH§Àºt¾öóq’ ÅŸ4Õq‚ì’$ÎÎk-×Û8q¤;†‡êÁðY¼é7 Pñ¯"ˆ$sÁv² òú,û_|ÚªyŠçþÛjR÷n~ —Ñ[’×Ái…ωb¥¹R£ô͘žƒ¿3´[à^Ënt»,&Ü‘@î<×ÜV¡Éü «»âö ©‹CX?ÕaÑš'íN·eéßýtÝs—`=O>à¨q"Úz†Áò{˜Õ”ÜÌAöMrº Ã<-a u]/¹˜?ê»d.F›ô58pCuxû'+ê¬Л¨×˜äÁÁ%"’…®aCé´„„ßyå¡B‚n'±„è\"©qÜÌ–5dßîœÎ~kÓ69­¯µ£„ ¯ÏÒ•!©ŽŸ¾ª%CùD(’1i»±Ãç|©‰®Zƒgø/BnW G¤Ì@!©z ^.}à§äGÅÇ,ºò+n…jù¿AN˜RwÀ˜Só·mÕþ|fÈ =ƒ!½«-¨r`“‚òšï´Üýΰ«?R‰Ä?ò ÿ€Ë™Ó¼@̓"‹èˆWÇ·šû(Hòø}[ܵ. .6ÖA 4Õòya9S°¯W¹6*¡a_+Õ™ÉÊ ‚Í>Av¾{_;l6L²•?óvúÙ½ Ëù;RfõΘ¾“þRœd Ž æ°hÞ¸*ãØtzW}oUɶ4ÈÜIsU§²f§vjz7¶$¦‘Ø»szka[Œ1ôO²P4L èsA¤i>al™¯^ýàtùÄ# ·Î ¨ %V=`‡¦j•òTdFå…ç~=ÈtÕyiHòwÓ©WÌ2{4ZS¹|&ˆ<#©€ Ä ø¦% h¶öƒ÷ËÕÃo^1•íQ®ümW©êWþ±Ò|÷ˆ!¼.Ïkøa0¦Ãž¶ežï?îŠ*ÑÊåRúÍFƒE_7¨…¶±ÝŒÈ¾ ¤Xö!@Ce*ɦ[ß×ež¯c}­å>rè €ÃEÕSÓç·€ÛÚÞýìâW}ÿÍt¾Ë;F¶K£-¤Áa†ô€6Å»q!æÀâB¥†…iV`ëY)]Åd£Éܪz“ œ y>|㺷$öÈiЧú¡£¡ fHq?:óÎä`C†˜}Ça"fæFá˜÷9{r««tàÜÐuaÌè„=è€q#{.™ÆŠ‹J*QPà;ß;wãZjæ1*RÒŒ2yvÉt>¶Þ¡åL÷oÈö´,+™pÙ¢ì{á²È¡Ì_#¦™¼ö»K™­»{;x×Cù¼.¤^jÓ2ò¬×× îãïEü6_ÜO.¶«÷WnÝþcƒÖßÃùÚM¦H)ð/"Á÷ȹDŠR”‚”(¢”’QJR”ŠR”‰J)JQ,¤YJP¢…?¸¿šm‰Ÿû¬L‡¬ âvCÍtž[w:³îø5“«IšØæC>õL,vV&ÞÛ“xínR×U'†l»ÞW'ZÂÖÐ~¼ŒŠÎf£Žá§ ¥Çd¹C Û³Ü!h›E!‡QA´ùª©sM1àà*÷#Nbè;EYÈÆ¶›ÑS'5–('Oõõ¼“þRúܰ~ ¬pÛÈk9+í×­š×áÛ«Ñü·¹žÃ.dµ¤ãÒç¶ôkŽéN€¤“”RHôª:¤‹’”¤‘J"Ê)I,¡b’)) R”E(í%”IJ))*,¢)E)R”…(`@úÇìÂrÁâA¦ š)Àœ­°±€5¥fH9®Åìn¡ÑksMɼS¨1Ášëãúx®uÔSß¶þ×Z~Qf¼©/ &½¬XàÞÕÝC¯°ª™2´¤j«#z!°O„µ&‡¯•ËopÀ„àÐ~û\<—wØ#zXº'$`aš}–O¯­e·–ypØ’ŠSÀ½¿/);í©>¿ŠTxõ ya~´Q#cö´œð#½|Aõ 6BŠ:(ÕäÖñ5“SÂh:ûB…yh}­b›¿Í_è³ë J+éòD]‡Bl^»$I.fGm<ö £k;ÎØéÆô# è^Ša~ÙI¯Ÿ¨v\Â2È>­òb,hµxqŽ)ó×á¹Üµ=ŸÔ&·—ÐåÍt=¦%Ôí5)ÙdšèSAÎ&´tKñ:TnœdvâŠn^Ãß[V³æíÃºÛ þ‘ËA¥ø\ P™3ƒj ¸˜:öÊ‘‚Qï¼ùÖNŸöO ŽÐ´’O€¤O–£™¡A…‰65îã:ÄQH9™s UG±±rsâîŸÁ´ÂÔ&µÓ<̉Ç,2fƒ:3óäÞGeªävp§þYÇR+ØŸ.AÔ×ÁƒQªü³Ià¬èø3u7–sh½ ÃÓ^‡ˆÚdÜu-:Q{ÞO:oÓ?©wï|qDÏ8x[ÄÇ‚I¹~~¥oÀ¹q/›Ô@P:=ø]Ë!dŽñÒ0•£B¾TWÛ8¾FùnÌ8ÂÔ8HÀQk¤joÖô éh¹6Pµ/µè®‚Ý31Q/¦ÎXü§ð6ÜtÙj1fÕÈö³Ã°]ºƒ0|-«¨eUUFU9%nm?Ä_ønŸ°CK7ÕWT¦æµ«z?‹ùƒØ<¦Ù/ÂÑ’@ f f>s6Y1D73¿,R ¥×Þv‘í7Ù.[yÛ« iAO>¾Šç©Ó*…½CE3 Æò4VE834&, õA‡:‘W•ÄôªKU´bvÉ ÅªNP²ždïžp,`0 Bãæv- ;;¾Ì¿úÂÆÚ…«a|‹×¹J»|ÞüCMìÍ$¶oÍïÆ †U¡z@šÐXd~ÂæÌ ÐPÒŸ6¦8ûK±})ÖaFòPpœb®[¸ž/g€ñc<%à£3C©`!b6É–6'Pf¨›>¢lÄÆ´Œ KQ…(K öC#>jNx€;ƀ̟–n0îq¦øØœ|Ïv=„™ž! ñäÀ3ÿ~¦€ó±fK¡i; [aW ’hÝ眮ò>BÉ‘g4ër¬Uб`>EȵЗ4ìèÐô{¥ð…L„=âÞƒŠ^ shJsûÎÙ¸-pÝ¥Ô®šòªjˆÓÃÖ•Zƒl@c¬ÂGZ…û ë³ZFå9Ž* KŒ#ݺPö·µs^¦ŽÆ5øÔ5 |…<%Éds<3˾ML’ü>uÝàOÌŸ@ø\Îïš=« ÃvÅBV!-Täõ]>»@»{»ïfnR9<¯å!Xä‹ÓˆWéï\he¯J<²j\ÒÂ7z¨VöÛ€(å1XqA’í,¶ÌFµQ«,¢^ç܃ÅGÃõü¡ÊÀæZF N@‚ôƒ”™ŽÁëy¹ØÕ¬è÷îšZÌ]~ÙZ†9g•åÅKÈÊ¥ë=G[!1&£¾îwÏQ- ÌÒÞÝËD™¯Í?®|òæ«^þÎ(øk–4iIe)=ú†L‹îÙ0äp&4ÌTúI ôC€ô "tå©ÝŸùf®…¹ ?1;~²âWi½/ixq!¶Ìâz¯jÛqø•9Kð$méˆôœâˆ4X~bbä=[Ý÷ýjS…‡Ž83‹:ùÛcxtÁ™ |Á¢AƒVÀªÄ5¡‹ï»Öíz4ÙI¿ù[‘@Í6ó/wóÑ.ú»3þzɧo²Ð{\”¢tN딟ÄÔQã·ì–Ø\Œ(6?F-ã^ÀVVU½„öÙÀ½ó|5NFxUñ•mð›Øýzm¡‹-5Ö=N¯©ÅgLñfDû?“?¡DõªF6lØ\Ή¿˜Ÿݼ¨ò•Àhq¦ÈZÙI\w{ω³:ïBµ‰‘ª’P>2ö—kÄ€œõ€*Ý0„•®:b â©°ó0:›¿Òùv§l~ò“&Ã}¼lgMÕ’Ã…]‰Â2‡o3F ºHMÈ26­ V4.y êx-뎜NÐ[›Ã£Ù5õ_pqDwÕ©%m{äÔµ\áÒ,éa‘WÕMÄnDØ™eæ Ã;QE9–€Ši9…°’«ï’ ¢`]Ù]ÓÚÒuþã½Ç­Ë75ßÇ]»A)¤]÷HTܸTþHÝo­|Âd!„Dñ#Y£=.p*¾ìh@AÌç®ÀãâÖ-~•Aü 0ð`ê©wUÎP·ÐA2Þ¤CNøù²êÇâj}þ²y¥±µ ¸»C¸,`hwîc ó†LªX6Šu6o8Jlí*s—&±€o7«ßÄ¿»Õ³¢ø@&%”7¤qÞ#Í”¯cšK†) h ¬ ŒYôÓS5ûS" =”ïNéø/ÎÉ™Á1Wô |—-3/„QHO-< ŸO0ä®@ÀMìÇѽÑåŒ(Fâ)k¸+èŽóuÚÏ´}$Çñ¨ª!·Õ€ Œ;‰¸¸˜<½V“+ -çS@ᬞ§”Ÿ?™(vÞxë¯.iÅ4­a™Óyc\ü ?táM¼É=ä0_#‚÷€÷¼î ?O|c´wѵa ¥{¿\ßúbèÿEàƒ&¬)؈oHÑr!Dø äiîHe™³þÕ­Š1´ëýtá°¯úhOv(U~Î}vÄ÷Y»*˜‚Å‘’A¢Š«„0`ò6ŽUSÐHx `†@ø® a˜=J׿iÕìõºNyzîX(¯¡ãŸ-æ‡òŠïVn!˜ÕÃ!Á!Ý =ê¼áý‡ÃžÏfè‚Üœ(%–J¶ñº_ÙèVd°ZfÂã”À· ½÷(ѰۡJi©ÝêFÆyñ´<Û Û÷Æ·®~b–7&8–ÊøEö¹…ï.É™Œ*OsZ”è xÁe•‡Êl5WÀƒÒê·ÅEÇk„0¤¶k½ÜÃ8FÄ÷Ö«pLÉ—Wâ¤ãGÆ‘<ª•xw‰\ ýÕz^H¾ dŽiRœ‹%ˆU©ëÇ"Ò·ç‹B°,EDzdòzÊ¥ÈwÞsåcu?žÿ//Ê@pÅܺÛ€½²%ä¹Ox hètdHel‚?N’®tÿ£VoåIaùR惽$sáfO8²W”Èl Ž J¢ú-ñ÷û¥iJ›ÎáeI·þ¿Jø7¨™iý@è"¿_ÁFöûÛ™_Ã$RÃÞÈNILö[Ô(D˜>éºùÞ0jÔ.©•(ƒ)™=–þô$‘ò]†xëÜníqŸçåÖ³oZÉO­—çæÈpËv×<:NàÙ>fyüC˜žGGçæ#›>Í·úznõj)ëfë3ˆßGfÚ³†ha¸;“õõõÏ`` [W%ZP©˜Ç`QLÁÞ.Šqéy0Òßû…{A¤õ¦g~&Ùè©çaß_ð[¿M¶Ò¸…ïûá½…j‡= lIq@‰‘"043‡Z¥Ëâ ý[ ë18¢Ö-š|œX±0Y_·ý{j¦EEê³xB³óÃt;¶ÉÜnÀU«óz ´ øÒ×KÌ¡$ ¼²þÔåm~‡X±‘¬Áu ÷ûªŒé6Œ¸©m ÌÕù¿_‰sà>ò3ºÍföÖ\ÛÞÜÝž‰¶ÏÚ¥Šx4ÄOMÛAGÙÒLÇó|WYÎUã‰M\<8ÎCލ[tö¯©ü c²~+ (GRPCFÿgoÃb Rªê’sŒä ^Ùc‡5e~^ð“B:ä}Y n !ÈÜ0só‚j£O]ˆÈWh9'ðãÎ_Ù©‰w©óš×ÁYfd)Å<¤ÄËÐ\ŽáȹæycÚ>[%ª5Ʋ|T©³'a2§¦!öß)Ê0É?.´N)¶×aL˜sr¤˜ßȳDœ¬ø °Ðµ§þ‰cJéÜS³LfÚ=¦qC0›·XÒÊ3ö+#b9ã`\}j ô£Fð¥..69E…Qµh..?<°±³,X¢³3òâáEa”Xne‹QE–,QEóóK‹Ž_ât×›rP1(3!Dµ¶Œe (ù]‡Ü¡°Pæ”F…ÝXÙ=wq\eA¸ÃV¸å¨—%4’éºXÛTNÖ‹LÚ“]p¸£RÕ= 6d¡Æl«r”p¡5Ô/J=Ý’Š…ßÊ?m‘¢4g•bÅQADµ@ó…Z áè~z%Ôa(Ýè‰óhÿEG—K ­Aꨚ u…î"Ãò~Vð˜ï’÷¼„ÐùL-Ñ'“CJZ@‰ªÝ“z`‚‚ÍWwhMÁb…37žÜ”ª!¼·&¸`KÀ€EÂüâ"Þ;GWÁäF«&á:U~“ZÙ g—Ñà‘ÚŠ3m‰:…¤úÕQE-ÒË‹ûs/O&;ÂÈ“)€wõ6 ¶ Ç+·Æž'OŽ´vQ7Õ™·á+ÅxŽ« •ÛWÿplõ2Úù0C‹ ’€6£#“ûKÖ¯ÖdÔ\MÉPq[÷{l}'xøM3#Aº-¹ð¹ÏV&F©û`WCñ3äyò´‘°£Ð±tø˜Ñf,ùÅ÷ñ8XÓ’pàVy!ø—9‘S'Â}UÓ&ذŽB¿Þ@‰ÉnnLD§çµWzvñ%eQ¦Ï“63ÏdÉ=ÉÀ{ž†Çט~ƒˆd^‚2 €`S ëÞ‘Ò°4¾fIÓžjmõ“&4Š\x¾Ëɼä&¼Âå}®·?‡ÜIƒzlso ,:†üÆßF¶ãÈ_X›EÏ4YÐg…Ïší ýKæøû·)1ÿË1‡Îʶ‚RŠô ¤Ði>zbÛN’¼’Ê«´Èn»Ø†E$¯¢q´m[¶Q Ñ¨ÎgƒõG:IwœÌŒàvD9ƒd*Lܯs­E-0ä8‰n¨•¡ƒf+ÕðUZ%HÅY£Õ hZÔ·f„ãEŒíšÙŠ%ú »ƒ¥낲±^d^òM‹ý*¿¬Ã×{ú*]Œiñ?Îw²5HÈæã‹Wøº…Høe8pâwÓÑy²9M3–á÷@iO¹\n:ÓkOŸø¨3§<^A¤<¡ >‰ìȳ†ÈvA¨g“ð;k Ï?ƒÁSÔõíMCXÚö×ÜY¢øâ®cVš¹ ¤»› J/‘àÞÙŸËìzÆwN¤þh^¼Bq5ß™PAöõ>#K*¥aÆOð]y¸jh²Âàâ‹aé®ÎYV`MŸ_&›³"Åç÷–bxibôñÎß×L–Yq4µ,*CŠÃÒígå;%$ÀÝñoZQÍVU:²j+3;H'X¨¢œºyJJ3\პ i½N«åñü«—7QXS±?|\½0ø’…L aMÿš“p:Ÿ 0l5;‹j0knA뉺"Ù­¸š¿;tº ·` t ûºŸ¯ô¡ëHvs· |ºž·ù.ãÁ9¥qmUh[Sš‚>€Óñ°‹)lLõ\šÅ´;Nê?¢[±­®/< Èy~$Ôjsat˜|ñ÷$ÉFvNå•úãÃff0jÖžÏxz4ž>wùŽI?bœÏúybdéq”¹¨w£]qÅ1éïö72H²Á¤„S~øï¸Û[*^˜<SU…ÀÁ©­M¿Ÿ>æzi 4¿Ê5pŠ2væ¾Iب‡^KL‚¾Òæv` *Þk z©Ÿ¯—;Vm’Ú¹g1úl|®@Ö®_õeì)ÕLM¼¶cý¾Â’hÛ÷dhÔ«>7Ð`çó¤¸x-Ìmà[Š›öN^HÃÂaEv]O¿@Ô«~ŸšÂ/ M„j³|#+ȯ…ˆ¦ÅCuòûe‘+çø ÃËäw¢Ûfñ²Š#§®ÿaË2Šà¿›Ä¶úe±Mèdêqï]¯×Üò¹‚üçœÀÒ2v¦Xã¥êÕÛпjzxö‚ƒ‚¶*Hr­¾+İômV–»xüƒHù°Ø.ïðôk`ò×ï«KÒšàž”_8wõZƒ¶ùæASa%B4›3¥PB)óJ~ݺ½|¾yŽEKy©ÄÛºåÅYöØ`KzÄø.Ayv½©ÛvÍ´RXy½Êv;/ÐȽûv¥ˆfro:DÔ.‚Á_…² ”™=Ë’/šÑ.r¨†;C:@¾ ¤ÀñSÕVê¾Èƒ“²®è{)\¨"?ñýoÒOœV†Kñ½{ôòjkµGºY±Ã]Þ?›Úvt߈'Õ’¨¤³ÄÀ#Ð;AF+„¦7)íqYb,ÃÕØ”ÖWjO&Dç­ï)˜®˜joÛ±R+,/Dªâl|â6îEg”V§Âá;'êÆ þ¤¥§ûšh(5´íƒì\YƬ'½Qku­Ãè®q¦¬~&å ”ïRâ¿¿Ùƒ¥ª+ÇûÂÔEÝ%pì—[-’b9ýûíòê¥AeXåÔõfؼ§ã±„vÕ™›~ýéÀ²¸úŒ(~\ôŽH•M¥ñ3$u B¬Þûjõ¶ÎFüÀóP ìQ骆Ê2—âþòGh^g$NÇð“_׆ÈþÊ TSŠ+uÓ>E³vƒÖ¨M[—téÿ¶à‚Ög©»­rlUÙg& ez‹û¿ŸG>¸ôZ_BfÈúƒ°ôù_JõîœkúNIé ä•î9òÓõɪ’Hê›JÉz‰Í)2ŠDŠÄ-ÔIhc0Úžg響ÎíPJXïÝj[zÕûêsÓ¯æàvE5ýÜÝ¦Ž–´æ(Ì;™cËTRƒårÌ·µ¼~ÞOµú]N»OtèseÓx}œ&â£0ý=…ưe»és—†{…qüsS„¸qwJ9j7¬îëqÔÑÒ‰ŽKbœŽõ;ŽwEÇc/lǽn­=P}÷Ï~ǯß*ælèo0¯å;£Í;“ u"bÈ6 u ²º&ðæCÝse_)©«iÙrèqn‰iÞÑ03­—!±žÑëóøÏoí³6ÿW†Õ¢@eè{.ǬÙYƒpzN‡ñU ÂlŒ„Þaoýæ¡ í ¾8yZ}¦#lúIع1Q,ú¤ A²4Za~w§z{±U ssLH‚w/ŠNÄVyÄ7]+óÇ Bk1–,µ¡­åKŽ–h ÁȦŠåU0™ âõ{ÇÛX„Ø”¹cå¼Oá=Ò®z(ÈSeöÝ‹ƒ…´ûò ŽØ0â7A½áƒcÓ›n£„f?|vRr©½ÆÐ>íUÃsĉV°¾ ıîOb®!HÞ¹y ’zç8ëT¯S¹êö)õ™‚eÅö2ÊOEÏ.p'°ý)ÌòòÍ,´ÑÝHD”GúGƒ3"k‹ð}ø': Š7»È´%ÇZŒ”Bßdˆ[†@„äz=-pݤ¤0[n%²Ü[ ¬u+n÷&¡ötòs¨,=£×S3’¤´•T³Á!Èܳ5Ø#Ñ13/êcÛ‰vsù-DZ?“XÌ”aؾ8ÂÜÁ²/kÎ2—Øn$,‹'TYb¼G'¸»Š•%xaR­Rܨeð$ŸÄö­)´-åo½Upó*…µq¼SA®—Û­.÷¡ _ì3G¡'ÔË4×ü¥•Cþ qb6R‚â‰Õ–,#ð”,Pzrˆ±C6Qb„îJ%Š (L’‰bˆì X q%É/,&òeR…Š#,¢,PË(±Be”KP™EK‹ Œ£ÙlŸ7‘Þ°zÏiÆg¿®ñ®Ó)SåÛ‘Jù÷+­ø»¨=ë³®ÙPqë`ÇñïýŽæ¦% GV£çƒÒØèD’ ã¬ÝãÈÜ:‡@X¤Ð{Råzuò Ó†¬—ŽÑš[GRî(ÆmÙr…ê½;W‰ãÆÎ-ì?ëºÂ¿ò“KŒ>„äQ)•N²FtÚ…©4_ù±Åï}_‚iv:kå 8lò®^Ôe.›QÉ„ +uð#¤œpo+Éðí­â·…{XáÝÑP¨H+¢®Zý6¹‹q«%Hl[DOË"Ûõôþ]÷4’%ëŽ÷ò…¡}ò#P\Ö›F©… ˜X¤À/4UC2 J#ÌÃÉ'çÜAÌpÝGK:LëŽOj2Ê4%‰DèŠ (N\¢X¡,Q,Q!DX¢t…‹ õ Œ²‰Ò”`(“3A‡ÞpÚlÚóø´I„†"—ÊȯÜ&Br’”)ˆRHÔrÀ}&„>ÿa2O¿3òËò¼´k¹l¹c>|yœ„ÄwM8/c ç.kkŸT4©¸ÁŸð™.Lé;‰H¿÷óª&kÝ{`@f}GU˜ÈÒ:ᙚÚn^²X‚~`ßxÔ‹óšA;·Ãû|ûO lš)¹£Ÿ¸hŽÞû8˜c AÚðí5‘)Á‚$´âbï6þiÚh¥ˆXóvTqœŠ|ïþ¤ƒ¦õôØÃÞ~ŒÂÃ2:Í7?:ΩÙ- ³.yÝóÑ>¼6ÛfŸÕ\”*îR[mÓydÔ±&á™ÞZ V_˜9“Î{Q/š¾àöJjÓDyc@XBú•Ô6ÆßÔ5/ÃRÔº9‘˘te‡•Ÿl@›ÒÎú?°1‡ƒ@s‡X9¤8]Œ âq‹ñV_ì3Bÿþ1+c©B>SÄd(er÷ æyÓràäVO8è>™íÉ,k“ð’IAßqÒ•úîÇÆ]O1s,››ÚZðBã‚Ì(M–ÔXE¼ŽÃ&´é î8µæ¢ìi “³ss‘ìqöevêµ: `pÅ&.$Aø®þðh²Øa 9˜>tƒo =« cÖ$ƒ(wÆý Âýh[—&ä|’åê{žK~0e‘üzßkxg·æ=)Ô•ØW`¥²¥¬N.¬0¸*nL®ŸAøw5˜ù‰ïˆ›Õr9‘JžÓ;..÷Œ|!c‚îí¸búà_Ì/òbùÜù·p€(˶§Í{Ëc½‡ß—ïÞ9e¹ld畃¹N‹‰#2­vÚb‚¼ÞgFÒÒ!¨oÚ«ïšEsÏ" Q›?vr™JËÏ!3Æ{u=Å n‰HZækß=ó¶ð·Üæ/[ïý£Ìcü½x†­Þ7â  rÖ 8@›5ÇN,nðU’ã7ãÑÂ?6I;[¤iup»› uÀ"-«¢;jôs§“Hç?9áÎç þ¶ÔCn_úÐÐcðŠPw šK6sGâ(ŽÝòÙ«C;?di·€¶{ðUnŠŸÔÇP!~<5%\©·ÇJ ιåŽë½ õgKc_xÿBÙçëƒÝ.31üŽ2¦3€¾ÒMSÂj-ATc·t-ð’ðatü–à[¼âë[ÃÖø[0!¨ Â7RØTÞW®¤_»NoÇéúÛŒ·\ÁsáÍ{ÙhÚú`„ܼÌÊaª×.ys lÃÛhÐïßþ­ë¨œÈWU-3éÄIb“xu”Ì$>öΠÇã:H+¢ šjý‚ooëåW9'P`Å’)5`0¥·i‡»ƒ1BxKúÄw[•J榭}Þ=ó]Üĉãx&]%,‡MæÔ]Ø(ýtó€¯&¦¦¯z†µ·î 8 舱ð¶bd£dAxô&þU1ruð-üÞ²¾T@î ±´—v-P‹²êÍ’ù&+úsú^Ö#ûîáV9…ùY.žˆ¼;QTÃ7¿.QÓ æ|3FÓ”ò|üÿ·îà éÀdú¬Ç£¹Jò^:ÌÚÛMr<_RÚ˜»Åš<¢¨o:³Qj ^š§Û£-TÓœâ]$ӃܭÇ6'8˜™°Ù€ÙcUS£?5Ï',qKmÚÙáû;þË\Çg¬{7ð³ü^ò‰·!°0¬ñô#ˆAd ¼ÜÕ€íeöÑPü¶óÖðzÙ,bšªI™ñ!ߨÑÓVyÙi“qÁ¯íbÓ_O+ÍñWÐéOõƒâ 'Ð͇EãeWäõßq®?IZEÄ%þG¢äÿ:þD`ëÁ-P©3f+ .œ¼ô[«/èrT¾¹¯±ÐñT” ‚#„È€VNôªS)Ï¿PÚŒªå BêŠDk Â+°öjα‰Z)6…„dN‡ñû<Œ $¹Å±Ba?þA,ÈnœvÌÈ®£¦ð&©‚oWQ”]kÌ%æxÔ­}ìíúîÞ¸£cX0cNÁÆS†øšÒÄ«€Ôþ’¤FsÁ½NÁ¿ÅdEäí™Gû{Ì_OVÊèкñ¦pt3úzKo/àüýW¯ ™MÊt¡ý>ºÍÓ5Ö\C´ºµÔòÑp! @‚>ПGWÀß8§ 0P0Ä‹ÌÒišË‚?£•nÄoÚË>g¬4–WƒBOa—ʨö{é“IX? ±:A§Eíê÷@ðî–zCá´ØÏ˜m&ŒåñÎôßärçz4¡à PÅ…œ*ò…`È-Ē餚,Ü2Ÿn[ŠýææÓfº}Æ7<¸± Gá[›½Ž6@lBÍ,ºkñvNa„V"j)ŽlÚ‚;û—»Ê~\ʼndá#Û¾àp[y]’ÿ5rI,L´6â„¶ïo»ïaX1çå0±wU£€Qð¡\uÊÓz²6³s—>M'WÍH¹±äXºJ<0•w°§7¡ÏÇ’Q»‹ð±5†„ŽÍp±Å¯ùXbMq¬ùÞ‘; ô÷PI‰¿ê(!ûh>À˜W„D\úòõ¹™DÕ=šˆ“×êÅ< çÏf§´Ã7fèQ#)Z;T°O —:Óá}ç;¿¸;ùÈ)ð(ú‹×÷²Ù`\—Î »æ­ð8’Fô3È5J|æH¹ì! iÒ³Œµ›bæDÖvýcøÉ|,É(~¾²šÝOg 4|×pi:™.(Xƒ+±œ‚UÆÕç˜D: Ä‡u¯~¶ÓIP ½ åšã¶vcgK®uX„A.æÄ¤XYî…‚MèlÑEãf:‰& HhZÂä”þ[æQb¦ND(e, ›UªÚD)jãlt>ÿ6›§0ð3$¶Pfq·g~SgܨÛ}¿sbEuà?2…% 0®~M¡{<‹ÄéhË’´&BDl×BÞ+ÇDWسÃá‹xU–_óšµp(ad¼‚b ‡ípàÄkïêÌÝuíZÊbæ¨õzP$9§‘¥€9ðI6¡Ϭáv|[S1æÌËùu¨häO/"/½‹šqY(z.ø33Dùx¢¶t×ý:ÊÚ/hŽ‘b5&hæKqæ=´ž3CCÊwGS `ŽJ┨℟Çs^UÏØÀœswFñØÞpt<Æ®)clXÃÚãÜ)ˆÆpG³å5‘"CÆYGêÝZWçWýnÇQE)ûfÚ ˆå·ÞÓá4q—ó¶woÚen¼f¼Ã,õkp*Ï>ÝúAÜꪹŸN¯1éiØ*“i¿÷þæï󺀰øðò21±zÅ™ý`2Õ‚¯ŒGáGI*˜´h¸þhÀ7#"Q˜\©:ôCeÐDË É ËƒD˜8êjÖ6÷÷2»É»“báâÓ4É &¡2#ÓQ”檾2¤µ0´&´î0êAš’ºÅyk$™oåJ–¼¡›Á?¯Ó3lª*j¿¡œêZ»&í]Ò‹’k.RJ¢r8»QY‹e·°¿ÄÀP[€ip‚Ð\ñ¡¯äF­•e¡Þê÷ ±UáÓ¢7/z€ü%Y™Ç SÎâ½÷­Ë£¯lû~y,ç!ùö"… äQAG ’üõÕGê™ŠÚ ðž;.ÿqôX¨ZÎnWâ±´ÑD"NãÊœÇ@ís§/Ö‹Œ!:¸©Qyá wM¢ô”SkXfmd“i©0· „úFWçøE†Æî®\~õø@ªoI'¤•#‘ëëtzöãÊû<‡¢1¢1"ñµ›Åí~‘ùÆz7÷+ÜïðîAt¬ÄIä ß›(}°-@ÞS”4¬ÙiÞ ÕØøn¡Û Hx‹£˜´xŠiyFCd5;µáºÿ1ŒƒMf{…»9jÌ6Ÿ‰˜Kh’PC$ Ý?ìñÕx6Ôjxyówø?‹îNå7vÄKl²Î ¤9o"ÌNS:¸žÎQôS?7»ÏC2sÖF9B”䳫#÷Jj“zÖä6Ù?_,È£` ­aÌ‘4«H˜\EF¸ÂpÔw Â(- ?ÒÈõþÁ'ŠëÛu^—§þ¬a^–N)qÆå<·‹ñSäöú@Èg!z¶œÆ³œ§~žÇÞáK›Ýΰ¿8R¹Œ)õZÅl€T–ÁðŠ(‹ZjY箥Y–˜5‘ZeÅËÜèE†ùåÐÞc¿ß;3kÕ¶T3†¬Èmè&±;üüxÔGJK8ßlý÷)4 &I1ˆAÃeKQãZdÇëÚœky2Üa9—v8†}5‘zé„_o®#É9¿ÝAØ•ÌY­Ý”nÖUä„› ˜r*M+Á™.äP2•m£>ã¥q»`«a\Ä8“MVº%a-JªfÉÛCá ª¢‡×ÈØ+æBËy­àº½ÖÇcÃ|1ŒByï'JÊzSÙÿ0¼LZñl`ÍkšmÃ)óèš.«'IRüRC-A‘Ë•Àj«’=âs¸0À}/r¨*8ü^ æk}na¤Ï\$Ì ¨p7 ¥s"ïÒ3qÞK7¦ÑOí¶#ž«h´~‹¹j4åò&9\Õ"d ƒt‡ôe^—'Á,Ú'ѸPãå¶”-ƒð𙕍%¨:p=ŒÀ9*ñénz »ülØ%&°]Œ¦Ÿá g0« hM PµYeö[k‰¢K!%,î¯qO˜A{¸KQ¨Þ&‚ÿ+›b{‰ÅÒŸðn¹;»³_Ù¿“‹œð ÑqÎh0Ûª —Ø ¹-˜fLqI'´›fä¹Ñ·Gƒp2!CÕ%/~53¦Û9§Òb}ZzŸ²Éz4À²›õ±ð©ý"zéãü¬øñe™E<§Û®jñáPâ±=¼’å”õs¥ÿ[—º™g ¦D¦®ž-2™–1‹K±M9WòО)É¡ä?áÑ~–|„o6:H5Ê×Õš.Õì×eaG‚ágäW7åb>T ÚßnAûêzÆíÄ»h”Àµ#¦DIà<93EMs/ɱ†íMÙ¶Ù˜å¦{ÂSÕœü–ŽõnY}\ºO“®´¾õÌué{Šð÷×deö¥žW{Р‚¢lÈ9ì¬Ú‘í46ü¥·×ÐmÆ÷&Sm±žRƒŒ,çÝHâ‹ñzÿ#ESÒÒ‹ÇßY5Ã3cÏbK0!!‚ÀZ{d—\’8CpVþ˜AÖ¯ÃË0†±…¶ÀÎý‘†ÈaVpjþ2ú¬"•^yÊ<°eÂwò|!&†ÌB»ÝÇæ'('ó]!œmKsN´ÀESÇ8ò¡­Ð;ðä@-˜Cª~ë6¾ƒëš‘ã;–ñ¹ˆ0Ð,ûÕÕgÓÑ)ñìë-™+Ö$+¸ÿ™Û?wÐÏ·ŽR@Èw€…4„(°À0B1t) !Q$À.T|ÖHx *'„ e˜!ň@2…sl+0À4 j÷ÀÉM„MP½ƒ†Ç*E)JP¡R3ÈZ"”ª…õd0 ä™28¬ Ø0­¢©TB„<¶aa˜dÀ0hóÀÉGäaR–»j2aëÙ G`Î5›!“'…aÞj„\„¥@\”?Õ) I*T©šR åäÐËæ´¤a—¥B¥‰h^¢„¨%vå 3¼"E†RL)ôå¥)PRRBDË„´Xª•"ŠA69ŠBD‘$†i@C¤/Q)I;)|¡—Ê‘$…êI¨P²„fÒ¢õ$ * Ì…E’Œ  “ˆ¨o$¢bR$_ ‰ XÂH*T„„½RD_*r¢EUR1Ê* Ì„  <ždùw;Ûê†tö{÷±t þP7ž“Ü-EqÁ3¥š£X%Ç`^¼Q‘Y×"®@¹}aòéÈ ÍØšÒxªíçá¯.Aå!T|rv ÖÞ¦å,œÈ°r!D?ä‹?ý¡8>,¢ä¯IÚü‘”—€·wüTÊ; ú1ø–çÈ_†I3܃ŽÓ5ò k®m[?oùέC…Ê€ F0/Ð\{u)‹Ô¦­K9âsËÖ;Rœ‚—¨‘çT,ã–H{µ ¼”)DÀ¥êH/Q¸”…êD”¢E(¥$ÉSRD¹CiS‡(¹Nã'¶%òøÎ¨¤¡p(\õîAr)I3ë“Æ`n*s¯zLûÈÛÖ9äËjÜ»lgŸ-˜½À¡ÿŒ·HÈ —$jMݘŒ‰E’sŠI(¡$¢‘±),¥)%))IIJD”JI(Q‰K)E)A¦uÂ.g› dFJ8e”“1E3ë%ÎdÏ“ …L†JôÎ'£r&™LÂÂõË,±çTšR8UTK”…Ê¢d(X¡J"”¹K0¬bSÉ^°¥ ÔIʨ,”Î)©rRBÉDabXÈJC1L + L (ÆÆ³ ’fÌÆu‰&m dÕ¨Ö(S 2a3¬È˜ÉBÅɦ^õ)âK&Ã1–abD Bg”Î""Ë#ªÁ³÷Ù]Ùs éÍ¿%È@ø0yÆ\AÕ¨—6ò“D¡yi»–MbD²–R” JR'¥”RR Q(¢JRR‘(¢”¢‚/aK¢P¥ I%KluæâаžÑB唡J RŠIJ%"‰å™Édz…>–JƲ j(÷LоЦ|:'n•1>ãiXš2`oAˆ;6áogœ>ötß96ü|#¢U|¢ËÆE ü‹fÜ'v„¨¯†iÉøÒŒènH“é€Aƒ%[ áP²Ãg†*9‡>ä$qVPÕj×êMS*r5.´ðW±X9© §Lº‚Ý eÊ2I Š/FC¼œKàp̧&û #ddO‹7«€ßžQ¹mpÕMPÞrQSî)£XìÚ&xïÿ“¿Uz<¶¿¤»G8TÀ˜ˆW“ý=#ùn5¤È²¢±‹ZwÏÔ­$lÁ e¨¾‡y{\n9±’f’‡á¿!Æh)ð?wÁ&pB8àÈH.ܺ_9ƒÚx,ÇòÀµOÐÈWn ùÕG†E& FKÿñF™DN “Òf)b‰I§Qÿó’e5’ÿ¢iP «Ïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ§ñ»ïx“Ÿmö«ï;ï¯yW×>Û³sØî¼öm¼ïníëï.Ùvå×®õn|óîŸ=zÝg½í¶÷®Üî«ÇÝžÍl÷gíísÞ÷k.µ½öóR2OSMOTüÐCj04LbzŒ@Õ?&4M¢j~Sy)¶“ 6i©€“ô™2dd4ÈÉ£ÒOI°§š§)é¢lŠxÅO„mM¤Ú ¦‚f• ©¥‘6š4¦ÁªxOMSÂ4dòžš)èôÒò2bžMM©²ž™OF¦žMG‰©½Ià)ê{DoHÈ&&š§èi©´y¡ §“jbžQå‰éªzOBzz“bb„T@zi05ÀF2M0¦›L04©í6”l¦bdÍhLhhÑ0š&<¦L©ø#Fšj)ú`™Oõ<Ôð&™O&ÌT*ÔÁ=FOS&Œ2ÚCÔÓ`˜§”ÄÚdÐÈÀ‰é’6„ÍÔý&C#)äzLSžM2›)‰µ<†§£ “&†›SF´22=M4Ó&Œ‰â›M6¢T4h&#h4i¦S©ù4ÓÑSð§¢y6ˆdõLÒŸ¦¦ÔÙ©„ɦ“`“mSjžLM´ Ÿ¦SÊyG¦M¨Ñ6&õOÒy3TØIµ1¦5 ¢ž‘?B*’‰èžOÔÐIéO£ôM3&M!µ4ôÐÐ&¤ôhmÔoI†=S™äShxh§©í)悟ªx˜š›Fš<¦§êm&§š§é3CDžiªmM¦4ž¦SÁ0SÑêŸ á>cÍЇDðeÌà×3=¯ZjýAG™ìC ?!‡`ˆÒ¨àyq)Ži"z²ˆ¨:gh©!Âä1!‚ä å̺—Rx<-c‚`æl{øn„O±]«¯í÷uÜ6?ÉÛ’h')Ë!Ÿ®Žœs…âAû,W ³Éç2ñQ¶`ö±v ŒØÄÃÍU4Ðeu©Hå×ÏìÛ¥è8ÑÅPMP­hö:êd8v$Wå¼™(ÍDZJUõÏ{æø½Zx2W$[»›§œ˜fR†÷±ýtÎ"¾¬°:%·±gõð‰: ±âM7^”j±µŽûŽÈ„KÕå‰ÕÌ®M/ƒægwl.ðò§iðɶTr qä®Ï€6NW2]Àœ¬óŽûñ˜}W'ª¡«Öe%ûó;n•ú–ù¾§÷¸¯f0ùXO2T¢"’)D0l¯1/]9±vÎÞ'„“„o Ä„‚d !Q]Æ›j†:Âa%ñÂ(†àÄHœä„à'cÇÃ>Ѓ=áA‡£„’aôvaЇBhA þ!èšR,pDA8~1h-#DZ¤høD@´µ!G€­c$ !!;>ÑÁðÇ`–4c$%É$$ºÇú$I!Bæ ’ ±­(ÊÃ2^ ’[‘€+FŸª7# ëŒ$LëÇ#˜B©¤æyÎÍ¿³£t’QÌÎä+¢S=èIB…à±*$˜I†ø—“ ñƒö”W€8w˜· ƒ3Çñæø<Ë39/—‰íÏ|4–rü¡ÁÍ?¢ÿ‰ùúgN¾âðŸWÒŽaIÐ<¡•€T0™„0$Ì&¨q!Æ–Hd2鄇2!rÿ­ 8Ñ#‡ü¡úž %Cb 0Þev²Ã9Ú«„ ®±œÛ|»¤ÏaÏR®Ò\r:#ZÄÌ%ŸÁ>ðÀzŽ–§ÞÍÍ élp.˜R/Yøß`ÉÉ;_)Ù;¸}·¯ú&Ú:»–cnØŽ®&íyýp,?)zhqŽv#KŠáx\ù‹æ nbwâíy«€É\Ô !,ïª.g¦ÌÚ<§e® Èƒjئ¤×Ad ƒ8Zj\h¹Z5¸6C³¦6Ëäf¢Æ ¾d°° ™ )ƒç#}`ÅñÒ‹§” ®ã`*õ9ÌeY;¿=7~õìÆ¯»330u?" {‘×ÇÎKZ‰?ÜáëÍ;5…0<a€`NÕR;.þŽ¡ß¿ùRŸ£æ¦—vbû7oKw¿Ö³k˜È~dÈòº„«ôÈÅÔZ²`aLI ÷î@·Òm ž‰ô LӹƗ·«|8«›vzÙÏ’0k~´>aÚÓS7º–ŠïÞŽÛT!"HG¿s ‘«ü ]Í5RI¬ @»ÂZa¤Ëú ¢¶ÏánV°Âîç^Ž$ë·;øõ€ ùù^®ß!õæªp€²†C£E ›ô$©>>mY=a%åÆ[©ú– @¢’m9$%]É£Yå½±˜Ü©ôr‚\&öNB™šÊÚãhÉüpTPÍ\‚pž’,½Ý[=L¨õ6¦“¸ëÚâ†lqs¦X) øùÙ¸åpû‚{O úh×%ä qÁ²5ô£ëO"ŸfþÙ`o1s|Øzo–Æá•­‚§èé"~Þ$ w*/k+ŠušÇ^ëqà€ ™„»ÃbDU®`ʰŒ«æHVö@} ]Ù;B28ì¤Ø ¦HÂ0±idì–íãÁ€è²ŒendŽS xÀï¬â,Ø\æŽd”µ¿Ü¬ ÆÑm§;%œÚ«?0ÍxÍüñw(©3"w£U“º oŸ€Y´#;ÛÞîLÈ~SßÑÏ.šŠƒq¤œôIÂæÛ¤€ÛóyíæÚÀýݰò~"¹%’Q}@åáùí0ú_cÖ/¼<³’é^¢qÕú^® Ì-Q›0d¢‹µÈdpóÁ¡wd&|ëÈòk¸`öNéŒjc9 ºyò7ªûDÌç\£œn]+â``>oZë¶} Y͹ì)k-íùŒ-—¶ÖÖ“<™oå°ÁÌt+M´­ë‹©ÒjýQÆò¬ø8Ö˜mëê¾>3¬ED¹Ücºï̧˶]v×í ím ýQ™}e·k'íc¦ÌCD×6«fщÒ8ÿˆ°#+ÒÐ+ÇY¬½¯à@#!GQp·ž€†•ŸæÞìŠÌ´E"_ƒ¯X×C߇+êV´ÇJ\ð¬"Àá²ýÅ¡6]G†i´E¡³TÒxw ˜j­¤_-µîÔs–/<äYí?°áµò>Jë¹ÂŒFîpÿ¢y…ô¹F&äÍppO¿qYö`ƒë%îJ=_À±<ÿ@ yé¾] GbšLL߸h`të| f$Ò©m[k2fK~™xt ^ÉŸ6nÃiú¡FrZ`Œ·õ”¸:¢FaoZü”¿Šîÿ‡p‰Ç(«mû~*Oà?08¼Çûò”#xà…¿JŠÃäå,è𻫼JùîL´Òõü?/ÅP¡5Y¥{ºuÐѪàÝàÑÖ¸/3çézl0¡ï³Ö¶u¡¸èõKš%ŸsÃ!Y9£!ÌUëÖî˜TD•–,¬y¸)禋†ÁMg³ÃÀ_Ñ9‹ÔÙ=™bÈ—0†<LM|õï¨W<SCRo¹ÀBV]z1‡­;k1mx ÚÓ+bÀ¢y)øI”ªÑa"÷ºh§×Ñh÷þÅi0"Ч¨úŠÃuåcûÿ#ê‡LiÍáÇ?‡Rî§?>xsÆ´Âg‘?¸ói/*{7é‹ÁµÊ!ãúwà´ á8Kånÿ¢v7Z~Ë6ŽÑ€ZEË$…‹ô<¾ø?V‡Hˆ÷I-3Ùü¥$­’·¿J©.£Lt½G¬×7œÿÐÚ§‚Ì/PÈ(Úv1þºáSÖŠt£ÛfÄJGaál–á`Uë"Æ!)~³3JÕ9ˆ=;æÝ5ÓÙîí¤hÚï›ò¢7^í+2¾+Ex{eão<ŒÜ©)Ç«ùå#7løÇxŒ ÿ?Ñø¦N:Ïúºˆ)5ƒ¢·|±¶ÐÓCxwéVø èÅæs} vÁ›` kóÍ å^W4ç,1؆³<)œâ(ÈÇÞ·þ™Ÿè}½rþ³ÄzΊC cæé|ç®ý´”HÞ77WVúJ‚ÙˆN<ÏV"ÑV*°ª‡óþ§1øEKl&Á¸µÉxvgôØÒ¡;†©‘-«·°fŸ`÷tI€ZZCFÆÌ,Luq,ܧg˽|§ïùùwú’WSóBcÃ!— x€–¶ÿŠ•¯sÏuª4?¨s·H-9ì©ùU2, “9Øù·c'jí‘Ïõ­!žÈ(,1 m¨Y]Ô39;S¥®(-ÌØ·//¿@×rìC÷Öž\I©wŒžj“W›¨>«^]Š{ çe«¶ä†¯Vçx\ö*ׄ§Âc[6Nó’/9³EÉå}¢(‹89èb€Œ™!ÆÂGVÆ)sPúX“RiíhVJ±ƒ—#ª<ïÝ·_Ù‘ó¦9*­ºGüÁGÆme!ïÞIäã|ö5íüëp; û<üjæt(y­¸.'gçLY_¬¡'R1•†çÔ=1)-±fWçi9ÎIéžÉ(«=•©Yó|Dr(ª,.[ÅAãÿ ±æ­ôcŠb*\?œ|Mÿýè׿+?.¹É~ĆßAР4ú7áêÈRàT7!ßÛ{¶µ¯îÑÈ^rI΂º4BгÌ"òz4Ôv)¥­+‚®±š}žÞœ}ˆ—:>ÛBß3” àû:Óz¤Ü’yèqAõÝ–ýœRÊoXp]ñ÷¯ÜÁ»Œ7yIÝ83RGYSŒQák“¼òÿÝŸ"wçßXŠ6¡>cA‘Ý5/îÈÓÖÙ¥·!œFE\±÷ŠmÀ=Áï,ì:2FÔ+5è'®½ êºEõãð(‚gÔѼåqÚwüè T{ï§^<î[¥s}eÞÓ3Ð]“«Ãymô?æÃFð2ÔmíK+½âëäÈr+)Ù×ÔGНi„f¯ñvû[)µ¸žŒø¼{#€cl1i0v5`-%™‡­4ñóR–Çúë8Uwº÷?Ù½¥6¤~(yñÿñôСº‡ õ¡ºïÅ;±‘–e;¨øÁi‡˜õ•ôS÷Œi#Ïê=KþmЮüjßOýÜЖÅKÑc|Tw­N3ìÄ…‡·±ƒoãq[N;[äƒ5Šçøídƒ½ã¥Å‹|Íuo H¦›Õ…\Çx¹'Oƒ&¦¦³Œà•°ßŸÅÇW÷âŽb09^àÑ!Λ¬ßç¦?6¥7À’hYœu)ïˆDhÍÙ]| dW¨ûrð©Dâ0®g\®+T–œÆs[fVEßµ¦@÷¢Ž½5ï‘#æ’d HãyÍWþÞ_w¥X˜Ÿ¾ÍNwC+.t]x-õ ²LT|…¨ Œõ¶v´‚/gJ„8O­ Ô–›vÓBêѤ-ÚÖ£+Åûo{{PÑÛš‰Æú_j½Ñ+»¤'·ë÷k™ËŠ ìRóo³n/½¸ÐåùE”#ü¦Ù—»›ôfÔPªq/Jòí°~«øîV\)`WªnÜå¾ÿEýŠTžT/ZÚyÙª«âa±r¤Dõª(íé…vLh°Á‰XP6/Ôs3ùWç œY«S]¬‡Þ­#‘ŠÍ™¾ð—àãKX•«¥ó©†Ä³/¦Ñl.GÝg©>ÌÍ%è-÷ã’rN0"bTZ³ëÎòãhh¶3¶þ×߀]#b;ìU1´ BÝŽS‹ h©g¹®¡Ì©8’;±Ó3P 96'·Ÿ¥Ãï ÅÆ3z°‡ÒæÜ&y‚Ø‚]¿×¦|P#Õ?\o¿ÂdºeÒê­ —@!~,óMûK²Ðºú½.ÊK‹ÆÃaMMŽ\‰ºDlåø†0üLhAè¿g^./‘¢»~ûGÀ'Vp¹à$É„4Ì :_>x¶O<‘èŠú†­fhª+ÞîþÙE@ú Ü¥4úCjb)–eÍ_Ûkû¦í ·çï¥.F±õ#öa¹ÃJ¦2J³Q‰ÍMC4ö‡£%-¦”Ä Õ ëe½Úx¯7]€êkl¶~3úÛ0±)+Ÿ¿ŒêëqÓ¾,·?s3g%|ÐPuÿSËßz.ȲÛî€Ñ Eýaø£B:`  Eœçï XŠ%DiRrwßò35õS{‰{i»TÏâÄãuÄ–mS‚¦+§ßlh¿—>Úë+,L•´nÇ%/,áûhÂd<pÕ«sTFýÙ¸Kb_ÞF„àÂü=Y~x^FoÃxaCo˜]oïÌe¯V_’*·‘êä2Lë½1²“I>Ù†$¹Àn©±–ýj‚Œ €b†XK‚Ö †,uÚ¨ÖúL¿¡µF$šæŠ«†p=ec3v¬È·ïoÛßßÄÞÌ?I,ì:»&ç(€@7˜pmÂá`w[ëõãwOuëåy ¿a ¬ŸÔ =5)Âñ»wË*`=¯¯@D¸J¹¶ºnò[ ©{J+ e†«qâq'ïJ¢¡6Ñ ȉÓÛåŽ$MíþÚH¶¾0—þ‰ÜÕ^b,û³DÁ\gdí¯P,ñr{ت,Êñ‚›«4”¹†Õ!ƒð>YUTÝQ+ÐhÝjóc4»€-ä°-$Qs™œÕ>å^·ÿ?§ƒ,Ư³?äraeþëÝô6e¤ €´FÞ`Ìé¿ÍpŽRw÷æ5Ëž>……>ˆ·qü„ã@@Š¥hªÃBµ¢ÿöSç?7¯’õªÝP±6Ìp+VÏþ‘áÞ™s¾ˆM„ý0Æ©p~&Sø­ìrŒ7[žîªýŠü¿Û'æ'TL'X¡ºpðq­G­z\ÐȤ}™fÓlÛKË ½×Û¤wiîdVðmWnÜ5w3œ‡9EKLèÙB·Ÿ+úÂù$î¢WVRlô²ÔZ­î!ÿ[8…>몓<ËÕç¼Ø®žÚ{½ìÿ‰œÚïwº©hë|¯Ï§ß~ùûÿ­péãñý[¤D¡t§Îñç»w€0ŒG1ëŒS\å¹,îl ¥ÒèÒxZm™ÆÔ³ãougx\”ĵº[=̽¶e÷ÕDp$ÔÂÕ6kzStÈ÷Á )íÿbƒ¸Ò@¾–Žš_$ßÕ>Å7€¶ó[žh¬Ýþ·#8©½ªrö,³½Y;iÖ—ˆþ“| ¯‹> 7åPòÚÈMþ>ÃûzP.nÎw×Ó‹Uÿ<Å@DÄK©pÜõ•î9¥‹õµ£µ}š½6¸`ßY‹eÚ{NBóG¢M¥'ºØ{fKÀµX «-èò·.Ì&šcÑÂ@HÈçž·¶ŽkƒÚTþgøÇß^†ÕØ­7bF‚νºµö¹FrCiIþn•ÉnŒw¸0þVî²,b¡æ"^iã•‹ÖF=º ‹¦®êŸÃ¤×6`_F||B‚i¼ëô}¬•w¯§éÃn …dG-jНßÙ,0”â.×ÙÜDõ=ëxy¸Ýõv݆˄RM²#3Fþ_(‘f4úïËêp˜gÓ-½†¼ =)~ÕâO_ÓòVšÐšÆŠé]w²²·F¼MϽñ&œ’EpáJ3Mó¸O6 >çì„Nƒ§%N¹³,ydP‘(d~stK¼öh_GRhCfƒ2ZC\ñE-ÉJÎç‹WY <€IÂ>Æ”¨E[n®åŠ—íQ¨í†öŸûtŽU«ÃÓ:äàNNk êªÁ±QèÞppõ°!·Éç~ln-ÛÅ?dž‡ßO1Öiä©l/kmq n*Ãõ×09äirRµ¾Í³O•Ú-ðBêé[NŽgy±Ù ù‰CGZ¬¯éæâæo£q°¡çúpÎwQÛÍ­éD³eתœŠ.:&¸yg>èY‹œ¹öÓð'ø='.¾äJG+÷nÙ‰¸O^މå*¸×麷øcŽ"&Fú;¬júa|ÛOŽ?±Ç¢{œy¿m|Êà­áŽédJï2¸7¬€XçR¶xq9¶ ¶kÜMÕ= @p‡^Å¡gž\õî:›çq&—’.>û¹ïjÔWÀÊÂR혨à,È7~\Ïj¥(õ€EÛ¹¤ŒŠ$ÉÅZOF zíÍsÓ‡ÁLudºr¬,ëW=¥ÍüÚH­FCÞÉ?@íÿ©xa©å!c¦¼d ÞGl_{‹¥ fñ­yÐ$G^tÿ× —ÙAµ¥v$„ÿ2˜‘³¯­³IY¦ôhÅ.BˆÆöî2“|€æh‘‹Î·z^Cw£ _ö5oÅ<7\dq„Dþ:×+l™¿˜{€8½gàX¹‡ËÜ UKÞr}à ”³]z‰¿GLgTËUN3™¬š(à^:—Z&S |™ú@ú_UϾ&±"‹QÞgs ´>È2§$¸ú}FŠ?õ=Ûþ!¾ßî…ÿº¢£’9%¬;!H×`/Ú±ª¾iw2ù[í“V†ÔV2ñÌÜv)+²uÌœÅF¥yWÅìëä·œ–xâ=¼3~?R/Ræ$w·w tˆ|<¥Ôó£K+Ñ^Çi”hVÆÿ0ÍXk_ÀrÓ*çÑØ¢¶™Ë‰æ>h<—æ ‘¥C‹ü±Æð{hÙæá[ž#¿è|]ž…§“ª“:þWo™ ui(PÅPHm'sˆzÀãYŽÜVÚe0ý[´| ¼bHÜO,Ÿ<]¸j:í%æß‹ÊÕ£Eáƒîàaø_Ü=Ì;ÎÉVgMðÕs’—yò%>)e `ÀïS Œ>Õ)˜¢ÄŸ$¤üR4a‡u9˜Îl˜™'[k`kjù¶ò­/d%Òмh*² ¼9“8ˆX”cp–yÎó¿ˆBÒÌÓ„ÅÛ½#ÜÄNOKÓ¸}ð‡•|Ž9,ÐòÆã†oó·¯Mü/KYss‚û4›Í´Øƒp2¹ñö¿ãÓ*®‚HîîéJ5e+2|òš‰„­S«¿ÜÀb½ð‘þ;CÝéÌÏÖyñ}¹3ç]à‚ãåÀß~=Þ{ÙÅc&…°qÂHw¶‘³Q g¿•|$¾·N|eôØWÿmÌÈ”øz=ó*À´ êÄRõ+ÿ´¥*uË.ÉF>ã0 RžÊÔ‘QÎÌ"1j^ùJQ Œêzr†¡ ‰0Àím!=è¶gCßïõd}s<âóŽ}9þ¬Í~÷åà'Þc•ûí¤®ËqÙ©;ï£P³“n²F7D·3sÝqšEpi%ÂÂ^%^qÊa™u¾#yd11Ä’+ÃÑÆãU½ô4"®Qò ì©êª¨â=­“ã< -Qð‡¥cTk†Ð¦×%…}ÈžðtÞeà´rÓھΓ!)Äæ„y$ÕI:Ã;Ä @²ê««ú‹ŸÁ¸ÈÙKuhyß(sœ­'¨M±ÚòxuqŒ¬èÛ¢47HÇwÉ4ç9fvh±Hó”ÙŽÈÉîË÷ä/ ¯å>ÐâËy¯äžëhàyÓ7äŠû1cí©ß d+{ùn,e„Ñ^]X§Ç¸zl¦I“š­ÿÒñÿNw‚ØHÍîí,½‹ÃøyLm¯4û«¿½BK ýÕíмnfãùÅT{cn§kÐ…òÅQBÕáÿy軾‡d:^Šèöêç¦2¶o+ȼ è@@˜C?Ìlr(Å'(­#)s±ÉŸ…—okóÌyßÉ¿Ê7¢àœõGÙŸt?Ä]jæmCDرOqÓóG J´|Xu¡ðøÂ)“tEïF3¿¤-Ë¥Áÿ5Yù„Ó)¢œ·{¥áÒ"É,“êí– ßÛ9¥B©–Uüq)?SG±;p°!tcî&Cm% ÎýzÃAÎ1£ncîvyÜyË´ÞGz£dE»Ó)nñ—Äúæ2Ç*š{Êúµ* ÇWÇ/‡ÙÒ¾˜‰kÅš!ªæàS¡Äo=Âñ ˜ÔXgîZ€€¬,öö™XÎ7ŸÏIm™ò˜iQl˜CÌ`›.¼³>þªÊöˆžy|Í/åm0J<¶VÑGŠ¿çL•æ«>¹{C qÒ/2“«¿i`ú„=^«ëC×Fñ®Ï#¹À$¢ËÍL ^kEÿ]Ë5ÁϾµªw‡g1|Á krÔ£½¼Èð˜‘^Žü¯9Hâ]^›Xmf‰¯ìJš¸Ç0ž´«¼8…ºTýï&pœr¾’µ9 ÂfôËQÑ¿"7é$UZ†ä¾Yû^`¸øo±¸VµôäZšßÖ®Q>ÏÿŒ\]j ÜvLV´Ìôõsž\‹ú[¤ê 1GA†y¿Óoâ;W?çÇa{”:Â;[ks©…%®Åt2àÐx]±Jd踄%k›r! ðÀ"ñG–Þ¯ÞˆHÛoô¨1%Þ—>¦k Ä^Ojº¸Wå¼ÓÅ+6íÁ§5k¯ÊTøt¶‘…¯0KÙâ±-8k¤ey ½Nù¡ƒ<ñ@æÑ¶Ÿ’ƒfðPÞ¤Td Î5Ñ!¯íOhðUÏÆÂ^D+e5v‘åéÜå^Žn/¡¹Áîk¦»­^rëE3&…ˆ‚ª/y //+5~ÄûS9.é[Q×Ò‹Î0AbèX ÑÛ×ßè8Oi-4¸cq‘B:‚úÚàñ#±Lå{ç*”U%æ3Xò¹þ¼ÞÈÄ)fwÄðÑúãÈÏ ¨fËQ[¹Iì*­ Ê ‚´5Ç6BC–HFJ.”Z×ȈJÇ µ½¸éû$'J\ÒñDK.9šO©Éô»1Øw2§ÀMו­=è©`¡êæT©¼ö¼Þ¾Ž³Hĵ…žt4¿»Oõu&¯—³øì²ŒÞâcjCÕµâi–¡á׎»=o¾2Qú&HÀ¤€0b#iŒy¦ÎG/Öy-Æ íÛ¹K˜–¢<þ˜®UB÷‹¢Mg º|äÿqA{ˆhj¥H÷´¼ào?vðí…¥i9|}œem#wr”‘ã:Äzáw–ä€dð×pLO@ýáCHÌz‹ŸJW§©ÿjèá?BW”§Î<Þ“_-\>6åZÜwŒ´ /Ú’ˆ•¥áЂ˜ˆ\áàpÓô¸Ý•ø¦-ÙÃÕÃK$‰cFÖ’“Ú~[o0[´ý£Õ#.S¿8ñ°íÚfž1ü•©¬r92 ž¯ˆ§Ó÷ïUT)›ÓÇ;ö½*,Wtµ4 v–f^Ðõ»±ÄêcRpû BWwdbªF*`-ÿb_NáXŽ1Q¶ePF1uŸÒRùawˆòmG”z£½ úªQÚÔPúçš~ævTä½U*#^غڊ•vPÜvSúñ­Žøs¿·ÇHû tOÐÆšÁKM¿GR©ä„š¡95•£+,0>Í€ªa’O6>a1OÔÜHÿ¥»¬»Þ³Rc0ÀÍuR‰ üM¢©4öl-·š€Iáɰch†ÏÂÉÒGBlÖABsû7 øübG"™ëàã2ìº|»È–2ðë*ÈubšsŒ÷!Tö½SU’mK€µXˤ·nSË“å9ƒ Îûçô_ ™L‘¤¤åL*™h– µ+ŽÍ# ÆíXÙÂ3ˆÄ‘¾E—V£R> 7xox˜WÏŒ-Ïr`Åvmm­<åáÿbåÊÂRnâ{júm邯Ÿ]Õ^ðIõl“a¹—ÿ—û%=s¬Xã[êC› AR,¨öœ?Y´¢Ýhê¥S s}Ͼôkýç„RªÇ·É&m(¯“SŽÞ`ç¹ñ__¡}l£ k̽Û4z2ñ!;O4¿ìÈ÷m`Ýö@2ç¾ÞùŒEdJÒ~†ýëÞ2OË ûß ìU©æ‡F›ûQ©úÜ®[¸·ÍHii¸óZÕf sа„ž C7¿°š~Ê»ÕË{Å™ýð[/\a©Mo Zjž|­OÂpq¿}²Vzû-šR·­wu¾|]M,´þÅÄýCªÊ¹ù³x÷ÔWÜŠ½Ë…ŽÇzˆò¬”¦ t3Û™E4|×’Ž^UìHyƒ,)oá‚ OõǺ’äG+ •ZßÜÿ“ø Ü'A17¬¦Weý¢"ðÌ|a@.“u:aíÃàÛï¾F¡ }ûZÜbç¸n²©¿SªÖÖÛ¸,ä}Gù*M0f °$¯¦ÁLêŠd”ñ¦×B7  w>éö¾äE¾ž-Efß× Z,¥~PlQºu§µ­¨òßkØ`åh/ÇK}4:#×Ï£.Fj[p¹ôÓ’Ëõ¤ÑâbyõR¤T!(¤©Jù¥bÚÒëéï{ìõõ÷l´>ö}½ëÎö¼¯§½¯¯¹½»rÛª‡¶êøÝtƲ’)j{9óuÞ÷nۅ뮯Z•®ì…5©ÖKªiTke “m™Vm´Ö2 ËmQµ¬Ö«6 M˜ßnvàÔ’ddÓ00Œ ‰„2hÉ£ÓMLÓL§¦Œ†LšOÒz'“L$ÍÚdi4§èÀ˜LÀ˜2he1áäôZØ ß Kg À}.(”…¬på, ŽHoÁ˜ØjÉ^Ö,”˜/òÁtð†ˆ>â?ÌÍ;'¾•Š>:cß tÆëÌ |sÜ•º«î­$zÎC³ºý¹SsbW3*q¨IãÎb­’”aLMdQŽŠ¾{øÀ1žTHI÷žoHΦOäLFzLr’öBûŒd’,e0’CÎûü™¬u ‰g²SìBù8)‡!÷cé0Å홉–f;¥Ñ€¤QQª^ÈϾ…™Âæ{= h.dEØAä9MöâihÔ÷{èŒþüŽbk›…aYSœ»ƒß^Û÷÷hø:úì×xÎÕ¾o¹a`a˯S=”6’B-¾bšª|;¨>QÛxöûºx÷Í5-#,jÓ›Œ§1ED—ü•˜”¬ç¸*ê®a®nh®Vb¹ªñüÝÓÊÚiäÊõM´í\mnñÎBÍJÊÊËuN}áv¾§æC¬úÞÅþ?jNbTgØ•tú{EV'—^(½7 ­ÇαS­³³¡º²{Ùwðî’eA'rv@ßÕïÈb=…øpCÁÄ1 dERÞ‹BÒYL UWó—R©am­/)0£"F9|^¥÷'y‰?\’;Y†ÉªŒÿ¼ë‰! ¾$†¤4¥¥T× Ê:Ǻ$…ú×u[nîi±0å5,gmjTµRÌÔÈÊÈð1‘!’`œ801‚C ‚Â`s†‡r»Î:ïäÿԄ锪ÃVk©”DdÉù÷ß,j¯é† ´iK›ã*ýL»ùB#‹c)ç=´ªü•Ðë+wµ~Nss±øªþõ^¾·Ïê}07Hú4²[È9_f²~ßïp¯¸ú²Ÿì§¶ÿ¯ÿI{³Ø|Ø2”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)`,¼[è|mõ=¦³bxñãÇ‹hÑ\ÎQ‹ËÄÌ<<9Þy™æyç Ï7³ m«Fd§ ö­ìOÁ P= T~;žsÏÁ’d] QɑʎTPC1@ÒI=ÁLÐÄüÉ PÇ$ÇŽs¢’HbI"ŠIø‚928€ ½˨Cê‘ C°C#ÁÑ〆l;TQY¤i•øâ.ŒHI0L˜°Dì|õzœ§gU÷)§yŠ‹êÚ{¦ÐÀÝMA™d&½Î7ÈÞ"ª/Qv·+d¢9 äzíë3ð ëîÖAWúöøå“£ÍT%Õ‘MS7Åg8ç´¹Ø$PEC VúåíßË…åùž^Öã‰ÉRVd̸&[[ ù[µÑ‚O—°hËèdé³)­áu;KC¿Éê‡\`‰H'µ¢I ÐâjPÈ H`Í$tàÉ*H¾…“ìÚ —ÔH/P˜u*ŽCv…ö†‚¢H}V- ¹Eò‰1ið6 9° §>dp˽÷ØD:²TMuÕ(’ ¼ƒK ´ê‰!×ú> ïgF†IJHã±lÚ’@ÐTH›í&šàά»°âñ°Ç©±ùÔ˜­U­$Dcw¾ûþÍHE2ÔI·sÖBI1þ‹\æéâ»÷"üy±Á'S>Ó¼¼Æ£sIö$‡9Ïd¾ÞÞõΊøcQâw+tT'¨k.v_ѯ¤$™ÎJÒ7þêÈñ«­©"vR®™«ÏòèGq"` lÌÌ&PÌO¹ý ÞjzœŠ†,äc‰k7ŒèB%ѬL„㨉Ý`^¢y’Ì y ¹”ùÝ{‡`ЇuSì=ñ¡fñùŸËËäFjK ¡]Ôà‘Pô'y›˜N’ØÓ8ŸÇbKP¡HÌXü+‘£¨ûî—¾üÄI ecûo |SŽ­§wcî|«^oÑã/Ù`–L¢Hl‚ÆÏϰÁx²Mš´ž‡bøW´lk:Šn¨cª I}êB†::=z78ùÀ||dxP÷†Â$'Ë‘ ]¦u›§äB¨zwÑ@¾«lšyýs\è¸EEs¿‰!@×¥Å1hrÛ¼“ŒBLJR„~\¦à ÊF“fcO—Kx½©ìOsð Ê@ 2šJ¤)i ¡hZŸcbj’*û&‰jcP› M÷ —Èß™á+I½ôôZ^ó°Áþó÷¹Î‡WÇßäiμ…0•¤p²à ã‹tåÞ1è³àS{Áp‹žU?B‡aN Oͦæ†"Qÿtì¶žÆéiùx9çmùÛ½¯˜ø=!Рsym•P×%ë^}Ù¦±|r|ç‚Lc ¢ÖEˆ²”²Ñ(µ¥0Ãu¢œ­˜ì1w,01Çöñê÷=Κo!N:÷ž5 zu'NbOÎÒ\ÔTh(2¦¶È´£1)e–>'{göàY6¿'*åôÁG#G!ðV$† Żڞ͖÷óeÌ"TWáý—6Zí­-¦ÖVíkŸ•.ÄÚ†2loÇ¢€¥ÀÏÐtÔcÖ%ØI+׎>ÐeAªzÒ¨^3Ÿ!äsNI±4•Y¦5 c,{$üÁ[ ;hâÛ±ü¤³P3uG =ÀµS†FVc ÂÇ•c8Ÿ·+9ÍÊùïuüy³•3wöÌê ˜6ùÎçwAÀ„ÁbbÑ¢ÃÕåÜú2ç3!ºmCŸÍhÃÆwþ [ާiÿ;q=U”ïz ²w ~§žñz__¿¬Ïn3ú}|œZð%ßÃóÃU¸Æ.ÒqNÞÆðCŒÔOâà ¼ø`’Ci51ðøó·æ¾7E®×² !áW´í5y=½Ø{ˆæVŽ‹D*ü1J¼b9”„sâr:ÜtºÝì¼Eêð*¦YOEh¿å0XÀ>,Aª3’x2ÖUÖ&ÜŽ#l({âw‰:ã?íIÓXöb%Nô¶;¿Þíù‡ ºïÅTs<ËOS›Ô+iýã7±$7{ Þ®9)•ñÑŢѭ3Q™GKŽ63IÒp~דÉÍÿÉT”2û„{UW³b©ÞKFwg¸ fÙÇa±,ñ&ƒ¦¸âÞÇ©Ž× õÖ}³ð:mãYÆÅn…¦DI¥¯FF=áãÏÔTtú='N•x„›†öÆéeÌÔ:Ï᮳ÚÊݱs?wëWŠ˜.©²QõᄃÄä4¸xÌyäï"Hx$/ê²OŒéãYœyõÉǬœNH'WÉŸe'uyï¦ÁÛ$x¶÷¾Á×Zÿz8п»é0¾Úö·[Ì9880ãl˜[¶]Û/)¥Sgªøž&êŠò9@á²Ìµ#î¿buýí™ô’bØN"9/Y‘ §ÈÜÙÌ1\ëˆo[¯:S?ã^p‡J|x6U>0µAVÿ*m Á©VêÅPRÍßÀcâ5©áîòʈ¯ûÆ#Þ9Ÿ™™EÕ4zËÅî0½¡%E7þaÁ¯Á‚®âç¡à@û(ÙÏa:È£åcáÙ+a¦’Š|ï.öÌ";h1RmÍɪ¨fž¼À2vsÙM ª‘Vž-+ ”Bb†aCðæ»=˜c…ÿ—íH%ÊüßFµÎ@My~ëù2c@5ù|„IÀ'kA3kÂpñï69^F›'éÂý_둤çU†_ÝÇ^à2˜‚Jœ~:p—ñÙèòÇ~†úÛAíõƒðMˆ@Í6 ºG,AÕÝN¶æ÷HËû° blcä ?È=”Ç¥–áÒI›XiWúçOµ‘.bt-.9ɸ`$óKð#øað'È=iì«Úû÷Îÿ@ã%€lNiJÓç9]¹„³Nþùb‰‘^Q8eœtÄ}‘$“ñØ[~—¹CG|¹&„ˆBO¸^ t|½'+ÿ2Ià„‡WžD·ñ½€Q³@R¼ïürÁ˜èëùññç¨Ï^±Ø”$‚J_Õ®Ìnþh$EE·Ü‹žßîèz ”¥ëàÇjwõ~Í<ï&cP…ºÀš €r·8EÞÌ]æ¼lQýõÛ^’Ià¨5µ%Éô.l9E$Ìí<1?oÙŽRl´á› +)½¸ô–)HiT B £ÎZ}Ù°Ên,ZG+ìy›Ì­«4qO…4”5µmG_Û2ÎXdš1Äðà*Ûò‘¥Q‰ó9·NšÌ‹†‹ýe~ ÿe9qËr×Dg´þ jJ†mÑà€i”AoœœXD J(!´$CíF¥¥«ð#ÝŸ®«Š,’¼Ì|ðuâ´Åò¦ûçyª×à*Èg´2TãX6¬Ž_7µàOÁ6u»ÿ¹½]œO'ðej|Ž¿[AÎÞ‡iõÀžãêId´¸¬_•TU½9† FÝ:“D!±0#9wlæ¨b DOA,×ö,ËÐ6…¡ä wÑûimµGˆ‹¹ÅÆ*hÄ9 ï‚›wµs<Æ-}æÿªs_ÄøÙa¿ùº3ÌÑàçý†óéëôºÝ,ƒ3RB zÕ¤ÝPþ¾…ÿ½84 8‰º³6Nji²îí)PSˆŒý“ÆåŸ©ˆW4òlõœŽ¢þ‡H$på6•"ŠRRL‘¾¾·‡É’AÀÌ~:Y}D£^òAd„iûü »Ó»LüzÆõW3´°Nãux¨ &Í}mÊa»X#4ÛQàÛ>ïAÎá»a…O£ñS¸Ô§€Þ]4ðhkŸ· nñµÖýHrxowH•ÿyÎу{1¯k›q„T˜eâºjýxÁÄÎ'Vkö —™&ƒMÖü·Q3|e&šïj ö£ªVÄFiLSm?ÎS¹sŠÍÖœmÎV¾N">7€x?+€=eƒÕ`>€Áj Ï®ÿáâ.ú>ŠZìM¨a Áª¥¾|›Wãê¨6Ÿ‰v 0n.ÇA8Žîý=ºåŒR4fÌ—‹wÿb _Dbøû†vXÞΦ-‘.…S‚ŒË wMÏLØ’råûg¦GŒ§ÂÀx8Ý#²$®·C ŒË×$×<ë7‡ÎÒÓø?Ü-!~áËnp`€„ zLG³Š ‘°TÈg%qÃHªp´öðLËççpväû¢s°<}zíEn˜J“p¤§~ ×._èûì‡zïr!ŠÙ½+Oü6WxσQu&ËÁ¹$l·u5?%P@I\‡ÝȦ×ð)¼VÍ>„¡½>aÏñjäÁ…}¶ÌÖI}™û _vµ'P…ÿY±`(qÏa^”ß_g a4Ôëy“>Mñù†ªr†ŠŸOîÛäi"¬ï'‰ÇˆUR +íȈþž»Ÿ^íg,sé{½®X3âq5ãE2cJM”ªÊrˆ¯¡_»g²3à-fPPшôæwã§;Ëÿ µµÖhÔwÖ¾·Ÿ¯öù/Ôúž··òÏ·ø¼oÌûí—¡ÔØíAûïî îáq™@nQÀ©€!B Bt6|:œžÕ?ç¶Í°Ô:Ï™Û6.ΡëýWñœH&'µš^*•Cî÷åH©ZtTò{Du+çÒï"Ó“’×Ç€.êwçÃ8I[÷:ËWÀ í Šg€-¯6vW¿Òöš)8rÜÙl\âpº¹õ7@XI˜Õ´”™uijrõ,Ý_zöùT€nÀø ¦£ÂëHwMn¯Û)ÃÄè×îï<ö&bC7•È` ( ($5ñ²_û²;Ú¿ýL{•/M5à1 ‚€(…7·<á¨;àœß8ß_¥½'ŒžQ`:”=eçEŽËê`—;êNZR˜øë|ý_ÁÍóÞíjª)D7‹M§{Ðä팞ž8VÔ!3oqHÁDÎ'z,¸ ¶BÍ@Ƚý ä»OŠ·Öo/[ÿ«®j»jX´*|O  EDGFÐã rm@‰ &ô3úžoÎp~ëœ ÊÌ já2i¡c'x~ûl¦uÈåP7ŠñËÂÀóóU<…iâ„nÌÚZÉ×TuH[DäМÅXöXölz K©ÔÇÚþs%p •}j Ç.zîPƒB£hˆAܧOÍ àYÄÍÛÖó¾_iü=çÝh6×nAñpGB]¦OBà,«,¯«¹FÏ’—ˆ×ÝËž3™ —¯åœï·×A{=ÇmŒìo<~ÝÙo²µ[ÕscS ÎiÂ@¡«y`©e?Xe8õÂ,í8÷ØrÔz,ÞW\|j¦pNÍÿž½Sï5LÚcÖÍ{Z×¾­ø¾¿[ú/ÃCU^ëÑÂÓÿnŽÞÛk±ÇdVZc°¸5qEF“K_ñÕqå+ÎÐÎÃâ'I‡'¹\¥þÀÖÌ8\Ç¥¾Úe{`/ݤ/’>p57H%)¦«%¦''GµY.1S# ¥>E€„ XâØ?}Z”ò¨%ù‘|$ú?™{7?k Ò«íÝâ;’ª™°WWÇØXXÙköxP®ìWhÉvü[D$‚€ÀËaåH9N[´ºø4¹ò/¨úÏm¿”írrŠ}ÌæœVmí&ªËCNø3VVB Ñ¹;±™Jîð­SÕn20šP(³'ÝŒ£yÉQ Ðsx9‚?Q߃:.Ûè` x2™ãdSš”Œ*˜ÖRÖwzé:ƒ{É`jþ€åÅnóß›DÚ“œåòwKºò#IKkÛÛ•´ú{GÌ(s^)n&u)[„Õm¢÷ Fbæÿ\ï´ÐÒæ÷Ÿx‘>Âò`^ñeP¬ÔyÔåîqp©¤M³ ~Æ¢ïÁOÎ@)I:\2MØ´*Ԛ͔=ý¦_ذû¤™8]K¯nƒžv$.¸ÑK;„N„i¦ÖÙ .Õêö4©úa¦ /‚n9åh ¡@°|”Èš*–Þ•Îäz¦ ŸJø•Á‹Í”A‡rþjzÿ“t•…5¾ÌûFªž€¡D){uP«)•OS(,üIt ù–)æ*ÙÅ ÔKÚé# »ϱHZ½UÛÓ±Y7[i“ú%î§×’¦™{ÉåÖ£å÷“SŸÚ{ˆ÷qãÏ©¯ˆÉê—Níit†E¡ôL å«É‡ñ!;ÖVöe´hɹ©ÁÊOg²óÜéô g¬$¾€œv´Åì?Ç—Øøxþ“Ûí«Í$‡Dß8÷úõäêãßz›kõN€¸ B tžîư‚·¥–¾âí*~70"C“„Z"ž¿«‰¾IÁ‰UF-ûŒ\ÞOíy±Ã+!ãÕTóÑø ˜#S,,»Ý‚sÇʆÛ1ý¾*-&Á¬,Ô0h²NàÀä ‚¾ÛÀU þä%ÂÑÄŠÅÄ~:[?­Ö<_ùˆs¶‚Jë ÚÛùÖúHÁ©äiY‚×n“¼¬8Âåì1µÓiú r+]cÉ~D³#ò(À‘«E‰-Ùœ—6ts9ê|U¯»ˆ:¶/tØë§I@`v„Câi¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦ši¦šh×c 4ÓM4ÓM4ÒÓM4ÓM4ÓM4ÓM4ÓM4н'Ìíú޳—ñû}v·±Üíº­×“é†d/rôàï3ø,¾Ôª#F¯¦)-Ôà%–qS ©Ln\²÷Zâ@z ÜýÍϖ寕Ô#|·Q?]æ.u¬GéØYë>A¬|üýr¹4p¯ä¯èÜdgÔ3Œ[&®e±S²©9v;]£ÂpãÌõý¼ýZÈ彬òÿ}¾Äôñ—Æ¥‚¹D*\‚~c±˜­œOìCïádo¡áiIªG(egΤg÷íéÕ¯÷¹&R¤âžŸð.ûyYC“×]øò¶P:2 Û“i¤ÖîtZ_¦ý. »,–¾UæÌ]É^D<^°ÕM;XÿŸu«[íHšó´W™>‚æÐ^|LÁ2óþx%À×ÉÚá;ÑÖ›¹š=â$î“BkCý&q‘ ïa{Wå©;cÉ/é¢Ú¾1}ök7›·ÚBÓJzQœïóÍÜ2šgøó£t^p¤²bîþÓS1Æâ«öšÜÕ|þËݸzZ´«„Øpr³¸éÈî•*Ì€ýB]1Ð(h#ö¹œà´@Ï6“¤ø“v8ÖOL¢Ïóê¢{])?uôßÒí»ú«ÁÚèÛ"aA¶Ï÷¶©Ïb Üël+=ÆšGS}º~›Ï5X1‚B~2~Ù×ÐNf{%¸zó£bpèrvI„u‚6}FÄ;86ˆï~«Ê¿›yqØ¢?$òmr”sÚ½.ñú²á”¨5QNdoñ&X ”¤$)*}ïŽwl{gdùjcÏFf8L/´ƒóYÉฟ‘Áî©|ä àaM*á)ü)<ƒJº\î’à["r&ÌßÎ*ðÈ>pxÿ”Ì8I°íÄ?bnþDG¦kM ·7#‡%~P˜±ãf½·»×i}^u÷pýð“:Ò ù–Å¥*œ_JÄ4´®yÅÃãw„ýøÑðm1Dýi/à¥aF'ÌÚ8 óý±›/ mNŽÇó§›×S…êɉ‚€±h¯Z¤~šgÔíΫ wP¦7t-]Æð—Lþ°à>¯^ÿ+Ì$‘Âè7d  oˆÍ¼Þ([œ$m‡ÀeüQc=¡ñâ+{”hÅþ¶û®°'úà*±¿#Yö?~ºœæ'²FOû]y(ééì¹b,ưé9È?ÅÙØ“ƒ­ ÐÌèDBœ¸Öò/¯7ÏtP]ô3ì3 ¹À¨ £¤ÿ¼Þ Ýr3ö·Ëâ„Í8òœÁ<âPOоàQ+J‚Û©®øÜ§9PÎzÙðöœj%#µ~ß9GÃvÝHW›K¾'¸w_;œ$†¹ æûu³&duÞOÊôÿßeü\†ÓßfÝ¿¯fÐV w ÒëÉš5\åýâüáÔ™Ûœ¬€V!@PAŽnMˆîÆF/tVMøcI Ua#§¬#&7 ,‡€¹àˆ¶¿Ìð>Ë@M4ñ=ð®8ˆr@’SÛ.­CQX0æ ¶'u´â«¥ ЖôëZ°¢t¬€€D‚ µƒiÜ' }Ün]ƒ ٗẊþ³•à[y]õ7Y’Ï|d±D¯+Uô‰’“€(Q¥´Àm¤­ÐŠ]9agî+ãºXzzãí¢8“ô,AòtjÈ(ßèÈ6{F ¬éÆ[ö.TJgŽòLTyxöð«‚ÜÙ\êl°D:JÒ_MWy/¯ Â=Š2Tky£rΪÿÄUËY`í0…ùîöYºˆëÁÞUnñÍ®zK—…¯ß+³÷Ssº6¶{Ú6H+Íz=¼ê#(”q~c3Q“l°n¦@lQH|Oë$÷5…)Á’¤2€҅‘–l ;øa‰p)&8G¾G„ó0û`@ûÝír8ÅÕ×–gò>½ö”LÙæÿ‚ô'@ ð ü›“Rh› Þì'áÞ^ôð{;ý†ìù‚øÈdEa£¤Hm­¯ùù=<äHE(¹ªÄ€HÌ`‚1g2~xÌí ãúN&5»|.·éh°´&CÎu^»4œ;ÂmJ•­râÙ¾Â_üâóZï@'Cªòâ|(Œ<`@7@lÀ&üEŽÀ°íÛæü+«ÎÛ77]T¿Ȳ5O!;M¢{IÔþ¼|¼lM€>Óÿu(m3]½~¹‰]c´1ùr¹•U²’·²”¿–æoø¨! •*@ÜŒß;ߺ:rÁ_±Ýôü0úñ´,»ß3¹°; o Jˆ€âwà`‚$Á¼ €(HÙhsÒ´ÚrÁ'!Öœu¼Ìî”ÕižñÈ´/ݬËö>ìfÑÂl¦ð¡Ì‘^Ÿ.8ÈZtýh° ‚P¸i| %RüÂއ^¸•”'ÑÿÀqx¬æ ±ÀSà$ikDBDìmÊ»^ëa8ö˜à=‡éžÉ£zϽOëy_kÑâ÷ý³iŽ÷:9œ¿úÐ*Wä¿) ÚM-*“"„Å;¿áªà~B(Ú?1/,Šx,:Tô7ÚK뿟îˆcšJï}÷Õý0¶Çf3²û`,í’OHÚ{xä 0ØXça¾¹[£«MgìðÃYGâ6ö‹Tb^‡¿$½Ô‹ôá4P ›./€Ù°Õò‡åÅÿròT—P±jÃqá~rl;´íìDŸX=¶Dü¼´ð–K:§ºª¬W£ÙLäÎ ôÛà9æ¨TOƒ{.jQàl]2gtƒšù[Ñ‹ÐÓÚç(5Î_ݺ<¸™d€p8ÀGï!k§^sä]­)ÿåŽ7]åƒlAÊV¢ócSÿcÃËÎú=õ´öqåàÝìeg©Ç^ € AÇ=Â`$`ì8sÊnÀT€M,Ƙ‚òœ$_CPø¤j`Þ‰g7ˆäöVô±£¢8ÂJ$P¶s;U(ü*ÝJáy[;#ᯪë‹p½\á>Í\ü:ÃûY o±Ñ«ZB®xo#˜ùÌ„EÂ" ¸Û` d–ùzªpò’|capù½wþÞW›Î€Î7~A®þ©åKzÓÆ2e¨ó…,MýÐL᫇™K „“ÍûüCìM[©<Ç;ÕL8Ô”¤«…ŸYÅ1*œU #4_±•‰Òµa²Âqy:é ù|s­ó—ö“+üBð¢ŽPÃewг‹ì> Ú yüÙT]°wóåòl½ØHíõÓ”™õ>tùz—Í æ@½ìBS¨€ˆ"IRQ”•ÁaØøKy\–Ëe´ÚÍîñŸtÃYéS.}sQjÆÄ0ƒV¬NîdDAp¦ª¡µà VèAܼÏ76nz9)}ÞuXÔünàK[¢³¡(@j ºÃ¯H/¤%Æ…ÌòƒoI5Â¥âö›dŠO€5€]Ì耄 Ë*Nb°ÙŒœ~G7U«n…"%ª|ËLÌû±¹ùvh:¼ —lÝ^2;´¬>¢†„ZØ\TQ̵ëw$›J66,lWCãÆèŠè£®°„ ‡ÏÛz}f;Ï<Ö‹ï0&õWÛêx£õǵÕ+¥âºê™òŒ ­e+ š<ç*/ÿ|ѶhÞÇvï©~Ü7Eé—]åÃ(ñY§ 1õ†Š¶%“ßCÃH:µÚ¸ˆ•+î-ûå3ŸÿÛ¦V“CÌ$eâÌ|*U…ooâ¿)“Dµï}½òí .dÕ;¯~nþc‰-uBI_Ä8¯Ÿe0&¬®/]ƒ”!tÎV‹oiؘæ@,V#ë[Ø ¤´‡žW|½!s°ˆÂÊÁìoá4mO'x›-­×Z˜9Š.`,Pï÷," @ d(„@n"b4ÙåeÜéZ ´¨5„ÿR×¼|]­QÄhÛÍgËÈ"ݶ3}.…_/‘É| !ȤØôR ±QäìXbíñ<ÏtP¿Ù¢úrm±òõº¶ ]<@À2ÄÏl‚íÝ‹ÕCÐÙ¯ûþ‹DI<5ãE+ÑQ ×5ÌJ¾òÖdHÆÔiWx±ãTÆÙ¬éõÉË’Š‰Žï¢5ÂÆ¦Ž´(ýmñ‘;;ESôï$€zséäk0=sù89ö͵t,Ú&˜UÍG@Ü)ÆUe7ëFüj._ßã5øe?ßíYÁ¾ñ¯¢0ëßD줫YMïb-/èÞ´ÀÃÌŒcãjöprûZþþÄý‹Žóˆ(ÞÝ—)ûœ¦oz )/ïÃK~ßM|ß¾/WÛ‹7å¾wõƒ„´3 ÆÐE¼|v´ýZìO¼'4"¿ ¸Ï±ÓðJ|\Æ‹`íAžâîùŽ#$fó$ôq®¿(­šï¦ªF{µeÎ`$š!L°Šìåõ¢=äP ²q„±³Ž0Eã…ïÞ—¾½Eœ{ÛoÝÈ#f:XZ'àV7låg·?V[*˜Ío¨ðy4H–°Šù ýpê—äàC<¸o˜ÄÑO%Xâþ‹aG˜îë­¯õÞ;Ö°LÁø2:súÓæwÝ ¾áqÐL©QDý¢±×ÀT‰†Š®g!ŠwÔü_·4*Øóï•pÄ>-dëÜîŸòcÉt ÏÃðÈЮZv[Ýv×»Ñ ðè7­Ó¦:¿vJÚ+eØ\²!±fàŒŸz\c;Ep=ZŽö«zSŸÙ¶-`,òÅC¦µ㙃é;ó_*Ɔ$'e‚*xå×MoAÅԂUPŽir¦h0ðŸ6*r¿Öì1½<=.<é  ÏÔ—™¨T Ü NWef ?Ë*©§:.é$¨Ó†ûäF‡~ô9aótnáÉ‹4ItõëÞh©ö·é72ø¹•£ºÏcàhœ–RÚÝZ0I‚`@@. _o½KïïâpZd"inέ674V>ÜD´qfiéÑEmy4®\uBCFdËU÷?\`ãk8ËÞ† gúÏ8ñ@õ–˜ài2Ð÷Ä߲߻žŠR_Ì?t@p¡áR˜)‹O¨ølë"UstÎ÷-á@K.!™ÿÛ‹ôÑ ±’¦Æ p©Ý+L©é*>¿ÂšŒ[ [Ï"«v¾¾W†’¢™]8™SZ(iÓħÅÄÏOžÓÃØ?ññ80P#=\ë6zZ$ÝA3n_Yn?Ó?iàMÍZ%¼ŽvÉÿX0lh „ûöݰ<îAã ’ÿŸÚÖ6 Mqñê;b°ðq„µ5!ý‹ÕÖƒZÊÛܯœ=S ¥)áñ#4 &›‹šñ)g£v˜rý²c Ÿ»®/Ø›õ¤ó–×F ©¢ÐTŽ †Z²ñzÙ;]EÀ ð¾›L–½îDL¯5} ¢;ÛÏm/e…ר@ÖõS ¿ 0Bž¤­Ýø(nö¤¤R&¼qY¿J‡T,µSÎFZ>Ò!vÑ hi~®—ãOý](uùÓŸn^Qü2j²ÅyÂPX(·¡05,$éMþoHì÷ê¾d]_޲yäõêTоqà[S-¯ß¢ÑÛíVGá“+0yÚ”›Á°¦z¤t·ÉªOçq~?Ë\ð ¤% ø¬Ý‘‡/pðk­î›$r¥<¡øþc˜)(Ь&<=ë–j%±< ñäÜ·ÒÖ/bCôû'~Qï…é#ómHBq¹–9äŽñŠïÖB£N‡“Œ$¤“#R?(¨ˆY4cÕ©ý»ëRÂ×ÁùoÊŽ²!Õ,>™õù\n6ž¬\ò¹çŠÆ?_9Z:Køãä·yî9:KY¾(ŒÞ€ÊfƒTûSÿ(cMÅ8ÖpÃð›‡{Vòñ:ž×ÙG‚À!6ú½²¸ÿ\˜&±lõÌôm^£×Ú ñŠi² ¦Ìì¬Ío[1oîîÌH¼ªfC÷wA‘L¿q¦qÝD@ Ü(ÑÒÈ™(FV“^Ž‘¹&»ïÜD0Ôp95Ÿ—æÔèÆ¡fAC‚[ìÈê*-Úˆ#P:ɰÙ¾oðû¢>t6ýV°ùÍÝ*öÜæj5Áö"dàðZ¿0A¼í- ì½1bhi=á$ß]utìKsö˜8¿œs¿ö„×3ùÝŽÂIð«b¦ãÔ`ÜBN“ª¨Æjî©ëfs7ˆÆž7•¶Æmׇ ?Ï«³ ¤ç-u¼™ãw2 8ÐðÆ…‰NþÏç1à=}OÏ3Õ^¼ðW°3–ÓòöÛ…‹H?›nÓ’Ç@ͦƒÒÛ1nm žô¬{ûŒê‰”Xüvnª&VoÑtƒ@¼þX²œ(7½“r´G˜ÓÌò1M§vªËPbµG¥Uw4Ÿ¬zß—~ë dõ$èq¹¹]wr¾s«0::xDñ÷ïÁø6hÄ &Ž}¼„«fñÑàc2`JÐØ]ž¬ˆo$î法‡Yý_á~tYÌòò…cÏQb¥ÜŒiFYoF6è’°_þã/}êãMã{ÿJ;êlàl]¢O’?¼ `riÌ7Œ•‹ªzñËUU˜i2‡à‘ý"ÉÏÓÄsWV üÔEYÖYéüW]Ã`v@ á‹Q^ת¡ÐüjöVC%•ù¨ó­uÜ| ¡fÅWÚNä¹ÚRãM!ë¬tL¦¥™8Ê<·Öh±bÎEêïÏé*0TN«sZ|<ÄÏÄWu@¹ !Úp¡BÇÌÙ‡½©d ; OK&!¶fxéûí£SË4‹–¢‰fxPÔ"Îûâcâ>ºñ‡®ä>æ<¸%ç¹,e–Õ®è€îǦçË Ò|Ôõ-FÚ.OV0|@7lóCÄòïS_Î Ã*+WîoVíJs„æÖú¸Sq™Èc=§­˜€_Ýg´ÈàÒ¯qcˆb^iIuƒÀˆJ4žŸ#þ):œ¤å).ª^œg£G…=ú ðyí¾ê&nøOÈÜUÖæ8îº>Ú^sð±_¯ÑÈÄjþSC‘ül«ø0xTþ—‡ŠoF§ö)ºtdkØ^F¾JÞ÷´ QtÚh{…íD^r°‰(‹gÉu»p~ÍíQªYàÐMàV¯¿w.æÍ J yÀ„l˜žÆçM\çRÉ­²Òùž …Ï÷5Âî­8ú/fêi,”ûÆR™jÓÜoÖÚàý1ÞiQhç/}œìê¿z¾{—(^¯Øñ#X‡eÃeÙ¶$'($$XÌ)3óÔ«–‹ßAºxçét°þ&H<¬\¾ýw­ÒdJ- ½lô,8tÉfEBÓ ‰j‘­T_ ¸28Zظ Çò:Š+[ï‘qðHhU#8âN<Û_4gŒÕT’ì¾agžÙ£Gx¦rxq‡)„úõ—1‹”¼p›¿Kµöhc)]LiÎ4ìTu³gî§ÍpõßÙÏÙz­vMC0 ú«)Ç–ÎÈÜ i9¿ÜÓ(qÔD‹Î«%¡I2’Ëì|4\Àºý׳ú1áHÖM)¨Àƒªek•s½ÈG /ªeKoåfÆ{¼ÂÚ¬ÕéóÀåÈtÅV‚@¦¯ kÚº¤qzîŒ4臗êžJúGTwŠ&Íõ0:„ËñwÃvP)M^‹–Š•~~% ånŽfÜqq,¡7C¸ü÷…^6êØÆòK0«Y›³œô.ö!Á‘ƒÙ[zƒ¢¨£:³ùòu¾–°Ç 3ÒõÂýCUX…³Ç£Ò½ÓoåˆÖ¦³ßÔG…쟲+O±X36BÑǘPl Ývm-áR¥z› Ù©è©ÏÔa—ˆVf?æ:®*›ä÷ë)zÉÈæAìXSöK?RÒm6ÍAƒ„ 9?…®„qbßÛQ}¯cŸÆFÉ“Y žµî°¹Ls?,á ?J6ò'µMv­Œu©aýƒâöH}À0,`t°÷M(¼^´&Ôª‡¢Yœ<¼òZýhsËZy°{˜Øz³‹û ‡“.,ô±ü5¬¿rر½ˆ8"«0Í ­ VÜhø"]l”|Òôrƒ­Ç”p€›©ÕŒõ,ø€Ã" ¿-¸À¿kuy“|àý£k¡Ð·eÉ:³a;‰ºB²Ö".HŒA c¹è¯Q<ÇjAÑ òнÐÌ䉔cbãl‘]J<ám Š6…+ýà7é>4ò¬?–ª‹Æ óȈ†±açuoYšÈ|h·t·54ù}iŽðÇ´…^UCjñ^ܤÁÓF®2€@fñG½B\ù°ñ¸´­?jO{-v~½uün»×s5Ýÿy¢Ù4äüM¿=nj× \èßjœ¬fa­­Ù‰Ç´¬^¥7UiD ^Z…=d2Ï®35Þ»Múa%æÜ殢œ¨‰÷CüÀr?sËŒ¿;¦SZY:ÈÚÂ0Î ¼ßÎ]ò.‚·[©‡ÝA¤ûÄ\°«ãÛo€û`û`«‡¿|¾}…OÜâ£ëïRå%¯Ùx±íÙƒbžP/Çëê-¨šýÈ ELh€Ñ‚!-ÑkÐ;ë”çËAp$8Žb³áHã™JNað™ v&ú“"mçöë$´í®–§þ¹cÝ“‰¶óïr 3Êë\¦z8ÍgCNQ33A+úò µˆirï±7áõA¯HR€¢é ×Án©üKÈ-#{R8!ì€eÆ—´JÚŒ]‰ÞXDì34ïñz½ž›Êùpëí•wtÕ¾ èŠ~mã4Œ‰‡'ÓÕt€Î·áR qö]´<ë Ô®(fJ.rßZOÎnÁ•˜&¿IŠêNÂð#ð飦]ä·¨ó4,¾ G¦” \8J2Ü·KÚ¿[@¼rÞ‡Æx®å=0¡@­­äÆ õnÐØ?Â’òú•Ý`Ï×ôø½Z™ªœÔd«kúj`ØIª\þÚN·ðÝ=’8jø—« èôÝ7ÀàôrCÎïoÁyéôö»ÆÏGÃ|›v†ÿdõýò°ðp*γÿö×|Ÿ·àÒ%¹o’ÈvµþÈ Ç<Ì{U yºQ3°d=ÒXzd›IfÒÞàÛ&öY†`­×ªü@œ_¯;“û*$/«.„«sçpüµ§²G½ØŠO\Ô† Tû[äÙHQ¸^ÜŸ{[êNç£2eù¾'vÝ¿ª®Î”áÙy™líóôímìþÏÀèÐZŠÐ6ПZ(?3ÃQØnF÷‡˜óž¢ cì67;WPw70‰ ,c²wFîdµòõÞƒ˜JOI4[-v6¥Œ;R…uGzU‡ˆ¹\ª²GR¡>ÙD8vƒ ÞWÓ Zö~™Î´€ÿ»®¤gx)G]Ú’ ‡óY ²O.MVÜóÀ„l‡”i¯æ!L ?K!ncÔ nžP¨e?kìoøKs±—a˜IÝôYÙ,¶ß’V!ËZ.ú‹Õn,d]å3ØVGŶtǪ#´±0úl4T´¥³Ñ.x'ªâ9Â+Sòì©ê4ËÅÄÁ(êN¿ïëZwˆÇÜ;sÛQ_Ùú0ùe÷ÝžÂæÃUsößpêÒŽõa)Ê9òd›¨4œAwvé”n†)fm”#pñåºÑR7ÁË) dŠŠ=±…¶'²Gû¦pÄr尨 ñß9(ÄUþ÷¯ÍTÓW†= pö%ÅögêœÙʹ…°øQËI0™ıgß±â‹{œþ²ÖjR¢Óù¡–tÕŸ£GåÛf‘ÔMŠûï“]\Úë¤B\®•ÐÁ˜Þ2f!΋à ¯wƒ£€Uõ:Ú'äñ}ÞªÕCž3? ÿï)³ÍÏjxa–HX gžócµñ¦H®JÍЫåV¥r– >¼ ¥=ý›±#Çð°° 1'ETry‚OâÞW‹Êp܇6)ô±«8„ËtíàEîÁ4ásŒ@éÄû4u”qG¼ÇÆÜB~šg;ãÚX§»$yîÓɱö+¶yH0ü¿«£n’‹"/âÔ^õÒ¾ù^æëžú€íó±ÆLmÙšèÇü³S³¶ WЦÏÙÚe¨âI<Ÿ#X}yK+rÇ3™ „ë±Fä…Š8ÕßÓŽQ~~Ý 5p/Ö+P‹úÊ žªiê3ˆŸ†±3QFàÜKXT«Mï\ÚCžIÔûqVÁj­º8ø|ŸËïøÔ©")C•ÇehÖçL§ Óâzÿg±æþãÙïx:áã}ÏÅÔô»¯Èé…CíäDUA­V•ß³ÓóPªY§®¥È°Í§óþŸdsìú;Iä~¼êªš½ýâ‡Â…ÿW¢·íêãÕ¯š¯8Tž§8;3 §é¢ýT[‡ÿe©þLwæþ¤õ#ƒí îWùMåžé˯6„´Ü›°wЙç˜ãª”7O>_ßÙ(T@m¤eô/ƒ‚¥%D ¿ .9£2`áÆtxócÎôÉ2,Ê0„0à¢Å€+ˆÁÒˆ|?#ËS²€í@¦±Rª¸F^û÷¯>øÛN³oµ}ÍÚtu4Îät¢ãÊÒÆ3,yņ1:­QÞ#›*;fï$^šû›A„S Ôœžò¡ß{‹”ïEz<«?Ex³4=‚¯7 ÂUL(`Hçú'§ZðgÏ÷sùŽiÃç·5–ÏÛégÊòrC ÒÑœc&rªöefÏ‚Ÿva0ì¿Î‹ãul{:Ô ÇNgÍ7&¼Ì‚»˜Š+ÁÏ=fî#úrðŽ–mH‚ûÊ¼Ï ¼=’m(ÔV}¨Þ:® ´¼'#Xïùû.eàîî£5¾>¯3Áñ7>®×רTl>®…o q´FgB ÀÂ@€@’2W‘dÝz€Œ'L!cŒ!˜F>7fH~CÑààÇ~'DP‘8!ч£ 0W‚œˆFNÄÐÆ‰Ô !Rˆ€'†Èb˜`;R”¼Ž‘A 1B,†<²(§G§€RR„$’G`á„*QƒŽ0‘ºGD`5à ÂkƉ@M E#‚—d I"8€$@ÐŒŠ7ã€$}lø0!v2Œ%dÂ+™FÐa%·`&¿:%9¾;ƒ:ðýã‡_z\˜¾v‚ã] …cð1?¹C£ziy.R³nÌ’„’/,gÆÀÂa 1Ž‘t€`ÏŒ: ¨a÷ÞpÜÁpž¶pØ0LþRŽééÊ`ßü”ý€´œë¤ÄÐc+/‹·Ú=;7óÆtG"«Ý”&H™ ã %œd†uÁ8ÈfÌ&BfaÆf@3Ìø&¢Gî]¼vé‰ú¾~C4øÇYÕ料'ÇaAñ!*Æ9ƒÀ£??%îül›âû,à/‚×5•xJ0I¹QÕ”zWk#$üìF§æ.øbDá`éb'_©9í^[ ý.{¼ðmýÐ .†ân*÷Ù{'»z¦ Ì`àØª' ý¦ÿÉUô º„Eƒ®ä[›ø|Nç˜8ËÔ’ó³.-]ùU°ëÕþ[»]ì½—ê>‰Öf\1„Ànï:^5U à J݉–_‚ÐvOºŠTÔU~(¢–B@ÆðrHÖ#ÛÛÃÿ—¬ê‰zƒL £<ÜJ×MÛ`x?)ñ÷𽌠ÃzÁ˜ÚÔÉ6Uò¸`kÞó§3ÑÅñè-–)\\ùÍ!¥±ˆÈý÷«D.€@Rë Ä¿`mѬ@œ ÞZ`ÑýÂv0• ÎÕ³|Ÿº/º8èÍ r©9æAÉÐ6€É¢}[l%½él,øÒľù!¥Æ¡¯ÖXÔ‹õޣ緇.(ëÁc÷U×}ž7•:ñ÷˼~bÃww¦ý¶Ý×/܃‘‹aÊø%‡ñ € M¼:cŸ¤Ýï;ο…¼ºðþ܉Þ.oßj}•„¾’|cr5­v.2y£ ÔÍúíw@b"ƒ¼uQÛ‘Åf3‚¨D+ ­À}çõ(¢ôA„õØpg›ÁXxÆų³’Zœ›Ô‘J xœÿj÷u›*³ü×tÕãîÂàˆÙy굫!¶1Or•oN…c ¦Â Õ»æÒ¿ ÝûÄÛTz1TQä¿áxË÷(@YÏdaÈ=H1ÞQ6UÓ|dHÆG@²d#°É/a®XS¬ƒlÖ …þØX–@ã#ºbU‘Å`J݈ÖvK»amY!*ö˜ÈʱrÇØÉYÓ‚=g€–ÔÓº”gÚuªøºÇârIcV ÷¡Çò!MÏðv^ú4/[1ËßÉŸ ÈsŽò½Ôfà˜ü½®õ·tã’ªK2$x­ÄÇàeïy@Ší­ÌÀ,ÈRH/yeœ'XÌà²êyJܲ@+*•üìl¬§pˆŽ´ÜTcÙ½ï%f.àCM0jÈlèVSaµ‹dŠIé#z¤ç‘‘ •håb:E@5¼<œè„Îzî¾-3‘c(BÀ\!•@xAò1rT‰£§TáQÉßMÀ=ÃÁ½{¨Ï–æti‰™9h™¾ÐÎ)qD÷*jœü¯ M8^Z^‰Â[Çg:)ÞŠ–N3掂Ë•åØ[ë(í 0D_Y#/Èô=~ÃiN,Æèˆ*èF›öÀÙ¸ÀÑdrrJ¿5Ô2{O7kŸÊÀ§Ôn솺Èy„ÌNf:`ÉíåžÚåVW…g†,çë¤fIñ?íÔ¾Àó*öÓúèÕ¢“w¢¡¾ãµÃ¥$(ëð[8†ÀÙ}Z³±¾ÇÞ7Eú“þýõ—Ç&ER ëÄ[«ÜÁBB“M 9VfƒFJsKTÍ:É«¡Ö>í7µ—´a‚tŒs.ªæªHÓÇö#¦X˜2ÞÝd[ËJÕõø¤aò~1´ÓÖ·˜ð‰t¦a£9(\YÝÄá7÷}ð °fà 0¢1ó|lΫÚï~'}ÈR¶N|ó~ŒY¯ƒSùϽmîŸ[Íæ7¹Ijºm-µb¯N h˜&Àóœˆjq0-ºIÒ>w<hoM¤•Ýsl!< ŸŽÛeŽ=”¯­Jàƒ¿©+…3ïpò¶±Ð²WEbL™ÞͲKV2—ú¯ØJïŒù¹\׺*ß›gäæçNÜeÀ³§>Ú@Fe}ÓÒÊdqýWÚÛÞÆ®\„1¿ÞÎGÈu_ñÁÂìs›çç®üÕ,§˜DÜ,Um~šm,kŸæ©ö”6ÖÒJö(9r¼Îçêé»MJ¨¥ p³ßv{ÔÊ=PÕŒQ_ÄonÑ1ۮщ€±U¯WÏ ‡{73ÔmvªÍ,ª]þIò l;ì9 µëûçn´úÛ¸» >—+Úþ@"Ûr7£1Miß”ý_Ëäóa8g_%o|Hƒê^,ÖÐÌ#ó$±û€SÆŒÛÖj¹’ÓŽì’ómKïŠå-¡Ä-ÓñlN°a z„þd‰àWòZé™bY1bJi0W2\Çì‹p`£i;F×)Ê1lnX?Ö/ÊGîVßÈÓÀŸ8#[ ~¸Æ±óþÆŸŒìpr·áãÙ¹ D›”"áa‘Ëã?w²õ”¬¸µÜ©Û¯»i¥Fu w™lÇ„Ó7€ŠPI¸aìnZ´Â‘¦¶þª>œÝ«ƒª}i×WìÅÏXAƒˆVÞ‚Åg˜‹&¦p“æÈ+ÇÕ6@/€Uç˼R)ëÉ.Zåg†Ò6ˆYÿA0WúÌ ÁÏ™#Çjsˆ´fïVý8¨\’ ª¸Aˆª£¯¼™ÕÂæÐºÖ+/ƒ·˜#‚%$)àÁ—1áoèpÅË£ÜþK‹U£]{Hÿ9­†òb±ÿ⥙RÖ"owc)x5¸Ù¨xNoŠ.ücôu7Ð>õ£B;F`úÍÈ_Áö&ÛTVG=yÒw2‘´ eQÔÀú‚튚%gp˜Tڥͮ® @Nê·ÄÈ|Q›n‚ÁöhΣÒ䨛¬™X»IŒ:DΟMRôè˜1àðv&ëΜ-¿’öÇ¡ ?›ÀÙ´ýî/•Bf†²ïÚÝXO?æ'i?sï›OÃKG™ÑcjjùXïÓB»mìÇ™€2ã «­©é<¡ÐO×Öÿ­ìÏ?ÙÌý²ûÉ·]Ý™´¦+[ÜvééG‡…S¶Æ ­:ä͸¸¸Ýøã’[°z‰j´,®w¢×ÚJIPšM-LhnmªÊ2@µÎ>I¢‡ÝsÒ{,(¥Çœ% îµQ–ÈSº*ûÙ*³«W6/KðIJ"cw©4Ø6þq°*¸Ã/ÂYïÃØK¼…H0Œ³b+Ë›6²ŽØ@W‹z%1Æ}éÖ!œ¤Â¨©;¨yŒ¦Èú(ÈYÐs…ÃØÙqõöÙd:)ì{=*WªŽ…°(¦µ×Ž@N ÒH͘‡]¢Ïqð Kn§ÙǺ‡êjH ÈÐæ¸Zilüø9áU h!º´!T$þüL6Ã_ V>™µÞÖT¤å­Q™o`‡Ò×T/þ—YÛœñÈùG*O9ºämk“ضV-"•v ÊâúZæ§®(1*Wù'žöψS¹vn*{+üûjé$ìÐhÞ„?ŒÖo§OŽ^ßp©y†‚5À³ÚݦÇä:‡4_ŸkË8ž×¡Œhá^ƒá8ð$ñ>ô²ˆ¹,óå­"·Ï^ƒ÷cÔ×°l0*a%þ?G v°Ùq&µÖ aÞ!5uú-ç/ºIvŸã¾°o.׉˼ÿŒYO&ºAÕAg„ÕLÏmÕ¶HÏtím©,¤£’]ýȵ õÖûhëÚMÍZšÃVëû(.Š8KòÔ}²ÑŸÀ,S'ä†h Qz_5ˆ>a F[vóôvjvé=kY‹ÂÎý¢ª†É—îT%ka—ç¨tUlTT¿lN„&.ç.³ ×îCˆ`º~_æZwÚ½CeЉâm2žÊõ§fûÞ·9=ý9£CÖLo>Â7nÐé*BÉúpŸÍŸûËÆ®¡’Át2·|¨C¤ u·”Ù‚ÉJ“€=Ý|Ÿ¬o$ m•¬óÉÚLWŽ¢¹ŸKü¥Ú` ýüAí̱¡l*Ê0çà$`†]­;JM“ò}NÎ,ƒ ¾DÄf ¡>f£*ŽÌöÎ|àð²¼õ× Š9xó ;T8Ó’£7¦IRåÝj4è7 sm-]·JâT¶ ò²»/„zf¹ý\ó±¦sãSSžx’°W*‹úi‹S¼M+Ã/|>ÅM4*»Ï÷ϨéÞc'Ý"Ç<üþ=4µ%Œ¬AÊ廂èhÊú±`ôìŒûÑáÉô¬´ wÇ…Y_i¿/h…΃•nþ#q¿SO2ñ¦0Å´¶“< ‚ñ×±·WKµø~ºÛ3ÖëÒ&&°®ŠéLE;í4aüúûúÑEñêÞ¯s´|5Ô&BdÔÓ>dXãÎÏ| Ú¨‰¢tUIH9)õÆ\bŠI”¦”à6Àþ¿H{XçKù&èÚÛ˜–/GìÖ 6Ày9òëãVzÝE}ÊIÍúp÷tu™0¯äƒCû+*¤µ›‡LŸW¬šyðuIC‚òÊZçó¯ÕÀeÿ QôÛ©*…ý> Âõt—T8¼¼L]“‡ÓVW)®%¢öH›n9ÃSp5ÄwSx‡¥”vyúzÓÕ è¸…ÁëÒòù§—m”ÕâØ…  Õ8ÕE›ï’8×nÒÍE©Ì8Ü»ŽHUDOôÓÉ΀»ß j³þ¦Ü¸ü\‰$zF¿CöÄ]:ìÐ9û«Q¿¾ùï*z*&ÒË]ùÛeÈÖЬ—+’bÃð¥`…ºÎHÄ ’Í7Üjó•žÕ÷B¡ÊÇðVY¤šAGr^ÿÙw®À±ÙØX‚¤ƒ¦}•Ù„/L5¹ð •ªÂ ÷3¤FŸÙbæN5b]SׄË#Wø‹¶úZ¸Ñ³›Ø¦çÓrWR1€b€ð¯C‰”•"÷åÖÃÖY¤3h7@” €†X» ¡1&*(ܧ'ÐÒx z~O¥Üñú[S7|¤³í¬h«øºk¬@~ëH6]³Þúû'¥Àêlf!î"mnüÝœîƒÆšÖy'·Ô•³´ê×ÈÒRˆŸ@íG-§¬¨m†Ê˜ÛÀw±}çËì¼]õn‹/-¤ë|$áLfø9€5`(W”;l:„LyØð»ÀÙÈ7€jádFô8hgRcOìÿ¿›åÁ+¬úÖü1X®ùKQ!ä=äñËãYCsxÒÔÊŸœL‹Ùë²/¹H?OǨ7£î'öz}•¦£´…qç˜cÓÛtóºàÜø}Hî¯OÕ£ù»óß{A¦k×µB-<Ã@Çþ«¡Ã\uË,!G,ÑwFÛ€ Ï‘ä Gê’\ °¨o<¹ãþÌZpõÔÎO k-ö.§ãQØÄ»º€of¾:™‡ÜOMâ4’±FAºÐRÊž½ %£}±ÓÍBüSD©öýï„öH}é|Uó "¼`F`xådëØ)]oKI«R; /–VœÜØþTÙJâˆÍ—àŽ?QÝMº]ó³2´Ì’Ò‹pàð1ƒ¨–ƒD§”èC€<Œ-¹Á :,¯aÖª6DëG¶ýp°}i]79Öúm”ƒúZ‰ÕƒtÖªP€Ý‚S¡ƒ1¸ o7þèµ÷1!á‰S-Ô¼Ly’X_î…iïææ‚.Üe¨¥ ­=%‰À»—–­,™ºÅÿg‚˜Ë~´Z5©ë€@Ðí±Ã—¥ý#Úڤͥݕƒõê+n@ @´5h.-ÙÍ÷|­êÙfà£d%Œ3+ Êï€ðHg¾kŠ•²¡˜Õ°«¼D‚Ôµ%—å¡/ÄIöoù­å«2\%Û‹qçŒxòKä6TEEð1Ú<ïÓ@ë^=e`”Ôªß7Ôd C¸ghÛØ|'-Kò?¯'Uà–9wB%ØBÖáÚh-Ÿ‹=3çÍg83Å0°W;3MÊlM–h€Û¨ŠÃ†ðM–<4ñbËhì7³†,IJÿiäÅÆ[¯²ùÖùƒ'ñ A&é¯4 ^·-hYätêQ˜Å±Íí+³«Í¸ú;Éu3°,}bÌqâ$ÝÏdâ}°½¾ì%Ÿ˜hnñéÉLÁúšª J(×ÿ ï'ßÀз*±oÊßNýΰÑö1“º¸Éä…ˆfëxÏoíÖÞ!E)fÙ©³vòKRÅý73Qe þ 6>rO×”¬}b{@Ÿuâ[è2Õ‚;aQ`2MÏIZÖ…¹ñoJ3zm‡q Š…ßG|d0¡±é‰qwÇeþËÌž$9–yÆ“¶i¦:›M Åc+©éïCJÙiê°­N3XmüÒ˜?Á Q·ò½T2YÔ7‚fÌ#rsŠöQá‡M=WvÎÐÚ,K[™ï³ß'M§gX^Ëb¯v‡;A’=Zv‰ŽÊ’BȨ(o“ÃÕÛez0}çÉÃÿÄi#›:Ì=´°Ûw/çï[ÉlQ°½òIS€,]’‰7†ºêy·y‰![iN„)ìN.bPê‚àeM£· ñ×¢F4YÝYûI}I˜‚Åí¼œàb; ë£p>3à©Æáãæ4øÒ€œUЇ^Cét‰z+ߨˆWýûØZ‹¡%]ë)Eü£ÝYM­Áq·]7LìlAH;ñK¨9y¸°ïl²Ü 4ð;¿‹±–Ý{Ahž#ð{Zjs‚1 üÖÚqy6 ؘþô½Q³ œjùÕs&öäšrÅaó‚)@OHdĤ›´£ íö(†°ò×Áò\îÅìÂÖÀùN}GB¾9¼Œ²ùw|+I’3WA}1Îp’÷½­“„\VŒÇN Šræ¤4²AI³[ä‹xš¶ŽêDƒQžÉ7’8p†s"þ–q±>±Á¿yòašroœHfÌsu¨ó°´Šõ40óXmüºÒÄ'CuÙÉ#—ö׉ÆÀá$ˆv° ¿1†~¹×÷±ºÀ¶©iÉ%–ÚÊ”É6&Æhg_oÔGoÙ†ñ¦åc?¶£¶›'7³­óg•J¹§ÂÅ(¢‡ÖâPù~bÚ¹½g(u„eÕïøŒ ¦$¯û^Šéa>¶…°!ƒDË.^y¨tFæ†óc3ÛÛvœ,V¶cÜl={¡ç:„•èØ¢8†¡Ýif¶C†ATyœGPòNϹ÷Ó©~]ª»/AõM8Ì‚ÔÓÅËÊb&Ó›äcó͇:ìµÆ­£¢E[psw猭é§Ôžz¥ÌR¡¡ªðùG ÔÉo¶íæ6øá™ÈÖ|áÊÈk.Â1þr+åù§a¶|ÿke^~-»‰Ip¹d°[§ú”öŒöäHG&²"ñÂ7]L•oSÒÞl¯šç‹6ʤÔyúD¢!i„éªÀE‘ãþÛŸq\ [ÇrúÉ“&z?,ì% ÷æ.à›|ëe³G£o[…Ï\ž™Kà°…‰«ˆ¾FB(¾zr{Û'¯ñïþGöKö5¯ì€”\L…m ¿ÖAr³ÿ‘˯2²/HòzŸhµ™ @¶UHóîOø,ðîâªý(8Ì)WT¿Wî,O}…ç­µ©¿h~$và(¨"ôŸÖnãÛ^Ç!áM,ÆÒD¢•3zó®ðüQß¶êWÆã–‘ÉýÐ[ÓQEŽ)öEt'ÓCïßþ™q˜‰šcˆ“ô÷¦Iˆà1ñQ åþÜÚ}b`šr¥#¨¼y—ugik6ò…|}iü’ˆŒÌ“ H>â7œRÜW•%–ø­ÁmDx¸8Ë9–}(«êKµ%çžÃޤýØõ‰ÞúÚ¦ÃN¨³«Ž»0%f#ºl»Ÿ.^wV˜Bix+þ$a†GÄ þ„N™ÒÔFBaÐ÷dÞ3¦CµÜ|bs4¢E[t@x­Óû,kv–!¼ˆI¢vÅŸ/–!s8ë3©9…3WlÅeÑtߤö!+mm @9¤Gq¯Œúìé•èHŒ¥t– ‹÷*T^•™ÔÓÈŒn1•\ QÌ ãÙÎã¶”é|Œd-NFO'Asïßw«“ê#ÂÜT­lŸ£…¯D±1UÓ±^¢Á7Õóý’úH J+ÞæRùÄ¢}ß!ñu‹ì?ÔIØ6I ¢½,;Ú”LÁˇõïg–¹„„[¬TˆáøK¶N ±Õîu„˜FX­3ZOÖìå8õzÍ•N8èDÈ4¹)~ÇW¹_÷æ)¦#GJë¹!ú–îIΖÏ©ò7nj̵Òôêà C Œ Ÿz…CsÍëÒq§ì;û– ã¹ò}Ã¥©p ./-ëÛá¹Û"cÈI¢ÿŒÍ‘p¸ò¡t[‘ì–NÚÔr0`Ó®ùé Hl*µýç !=ÀMx‹Ñ ¡8—à­7ÅØÕRãN,ÀûGf^¯/á­ï)§}åÿ·™5èi-Ó²´ çf©<ŽeÌ¿‰¶¦öy9{DÚà5oÓ< ðŽpÔ\õ\}÷/¯ºàVWÑÝž¶üQÇð^TAI=±Rê¦Ëyœi³·MpLר'ÈÕzt³¹ä6—#™ã xÙÛâªG˺=‹Åð©Ð7ŒÙKÄÒêWHbEÐ!·¸í±f‡‚ÂöÞ ô? ˜ÑÞsê^Åß²VÄkÈrìƒôWY"Ù%ìši€Á§ëqÝ­ZÚ$zß95ÔNª9F¨ÕÚ|löëøÛíÄ)Ó”Ùò±“õ6±ŠÀQø|Qö—­¿‚Ñ|ªlvpÓP9Rõ‡?sÐíÅ3@t8°Üí }ÎŒ•mÙÞ×Õçÿ^ER£¸j±²=?_yõO=–,´þrx ¾ë\Ó`<…æ”¶n¼i†„¯©¶(ï;–:8Q˸½SWXÞZ¢¾X§ú·ýwd½¹aUSh÷ZÑ0îAÐÜóîe.>Ùˆ””/ùù%Nó‹­0¾ö(X2"üÊù46Cƒÿ©3DȈ™3L)L潞Ã^7ÜϪk¨¬éPìBo]MÕ»< ç×K[fùªÑÆ$ hÙ]êTu­(Y:K£ïЏÕúÍŸˆùò/¢û^îˆxåt&åðæ:‡ú+9Œ9û¤Å«}÷£2©Ó4Yž÷äëèàRÏ(:À'™o5üß°IãrJe?‘ ‘šþ„šhYFGÝo–ÀÜÑ…½Î÷¦ÓPE±ÆÐÊígO,U(iö÷¸U¯0¶K°8z§gg+u@üŽ{é'éê×÷ ƒ0€[;à„ç*—5Tc·Tx‘š_vR<÷Éžó>Ñ I^Ë%Ó1ímž4 ³Ôg5å˜:Î~Ò®ò³h”çŽSFN0øŽt—Ð?ˆ„·?œÜþø®™ÊÈ ÆÁ‰“^Ÿ…Œm?^îRÕÈîÓÒþí$Ç¥CqX4ævºqd¸µteðòߺ<¥¡¿µT wR š8·¥7 ¦|•‚šõüD2d35•èÊ(wi„“†!mäÐY|_®«-k—iE(ºàf¼œã,”A1Ü–5C ¹ksˆïÒëkþ©ëáÍ—p¬ÖK¿T@Ô#[ga{“ ÷ó_²QiÊçØ”-½:LúÍ“s¹X)N“£ÉÌ”J¨Á©Ûát"V„©€º()•„ÉU{î]|MÈ/¯øsYÖ£çî1¥曜¿WˆuMðA-ÔÓ)Ͳ}–ZЀ¶2áZV`So;pÔƒ.y?U ‚4ž—øúv~Þq–C!•džkÌ7Š]šÏ†9Жu*¾6÷_ݾP:Ê @‚ñ(ºÐ Q¥Þ3Á2Iìf¨‹ü¥ô¸ñÄ£NJ£ß:€æTS¤jùÅ!êýÁñO¬¨ýSÖ­Ô Ð5Y¦®ËéT¿øÇ#,óýîtá 㦭§²ë­¼¶ª©$|”ÂI8öÝ’¤¡½‹É²ýÜSh5Ñ_jM¥FEF7ìw°ÿ­_Owø‹©õ^ß®ÿ¨=ÍÙÁmõTÇ›ËD!óªí¨5ø†•ˆ'¤_‘„ü`P;¡„™T¿n«Šˆ‚?ˆ™öÍ9í2óvpwewÐþíÌöƒÀ´’ Ô¼×%(ØÂu4ÿÜwx†Þ lâ=¤>v¤®sémº‘„e†¿Œ+á~ÔŠÑgz#ysÎóÿ8%(gr¥¹ÅLæOhØQéµÎ‹®4Ì HÄÌot¥ }ë!q`Ç©êW'^V²g˜1QPg€»ÞŒ‘FÕªÚ®i Vò7cd;?ÆçšXd gIùÒs;BØ: Æ ò9Ïì±-uŽGªä9 þ#]k"“Ø’šY¿pÄyd11ðÄo}éø[Éè¬õô€ã¾æSÌÓø ˜ab.G_Rxë•úGÜÐs‡­#þÞßø ÿSnÏ×_eã};9)c-Ìë‰Hã'µd»HEÃ޽ääâ(Dù†#–µ¨f@Aƒ ©š/.µ;¯^€©Æzö®·Ao->å?² 6é áÞË©Š¶õ–&Cwµ‹øl ôŽ!m9±¿¹é§À¢óžü÷§ã¢ò¿õJ^×V¯£~&òÃæu€ÆïIΨvÕá­…±Å¦aáIxÃjCG…Í×H%GEØ\É}gè.üæq+ð‰h®Ïÿy’'íô+S ¶wd-™‡¡»qtî÷iênªjÉÕój–ì¨ôT¿+³êy… ’þ>XY,¡,Þôÿöç^®N‘ˆ¤ÇmåšÆ\´Vk‰E]RÂq[¿Á™—¤?«ž3Ï4çíÆ#gê ÿÕg²ð‰|ýï2¿ÓWê«èO‰fYŸÝð¦ÿvù_d]Æ ¯„•œ"ñ­‚)†ÌÉÀ1Nq†_înÆŽ7Ü`ÙóÓ’U^Î8ÕŽs~-ËéŒÇy=¾^fMÙYçŸ"¦ÝÂê¦ [«)}ƒt~YJ0v^Î&«L½WñnÚG6 ç±ëÛrõÚ¤+³3•ëR‹û¹tó%Yú2X—z¹Â  ‡úfÁ{V„ŠÐ3n˜M^Ä(~@4•£5q‡ìJ¾¸%ëö–”ŠVž \ôq6©yx72šø°'C,›«og¨ÕRËõ‰n=R/j×ðÑDìÏÐ_ŸWr}Ë”ÍÎaúÁ¶v4x¿ë-ûÓY/‘Ÿè0:X°%KñkSº*ì ±l¶hB²—]µ3n~Ò^§†ØPõ $É·]«!ÜN¾xUgìäÊ6Õ?Ýb ×ÖòÛŽ­âüg±ýÚ²O|q¼ðNEþzu¤=à$fø¨Sá _ÇZÇ(5rA½u¸ÀåàXé¯ëzLFxKÚW5ÞD¨¨ƒêšÇ±³ô?¦óô³%¸šä2W‰4îZæùïçlî““Ü70=¿ÓÜuåú½j)YO…öqŽÿlî.~#5ËHIBI_¼¢®ú 47 ®QË÷r ø^Z_¹b¼p0åF@Ýü¤Ùø•M y-¥/[K'¢ûš¬§Dˆ±—h¤j€Äã5í1·|Æ2=ìÐrµ=#MwÍ"•í}î,¨ìÒÅvùŠ/šË’A¤•N%S¸Ô+Ö–%r\6xâ ·§_81.p§‘ßÖVú ‰Ž»Ë]tê¥x6³þ9IBâîH§ ÆÇå€zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.698786149 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v11.dat.bz20000644016037001603700000007177713607166133034216 0ustar00hutter2hutter200000000000000BZh91AY&SY–ÍÚ%/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàC}÷<{À=JUU(KL€U *ª­%PªZmhTS¬•DŸ\‡TöÓM{}Õ×·}õW_=Ý®îçÛÝï¾a·S×ß}{Þû®;ão¾Ç{ʺ¾»ÌèÕêßXíß|ùÕ½w:ï½ÞÖÓ{·Þ«ÝóíÒ™Þù]Ñï°¬•›f¦µ¶Ø§Þ7_}ì÷½+g¹ïzpÕlÚ¡{b ­Øí$V=ôÙÎ ª@LL ‚a4i‚4dÑ“&&ƒ&‰ƒL4Ðj~M ›)èš2m2'‘“& ´dbhÓS` ê12i¦0ŒŒ&L†Tÿ£UU z˜¥=©¦&&™OMÓTý4 SÓQäÐMOa„É“L™jx›A2O2mÑŠzi¤Í#M¤ñÑSLÓ!1‚išž2Sô ª˜2žDhÓFdh†Aè™=G¤mýLžI´hBŸ•?)êi”üSSÓF“hÈò›B›ÒdÓÓQ3i©µ4m56”ôòSõÑ6‰6hÓ@Õ<¦žÊše=4CÅ=RM'¥=£&U?L”õ?)éO4õQú£mOJ~S åGåOÉLôÅ'”ü¨ñ©‰é©©ùSÓM¥<(öªy&jšgªyOÑOÒ2žÕSÔÞòÔÆTü¦'©ê`ȧ“ýCÔÔñGµGµMµ25~¨¤ˆ ‰„4˜i4ÉéÄщ£JŸé=ša`&hhÔôЧµO™¦©úQ´=Tü˜Lü‘èOÊl ™ …OÈÚQâ§ía54ziª~©íPEH„Ó yODÉ‚y4dLÄC2Týªm¢iª~©ú)úžCLž£L%=©µ6%6dÕ?#*y6ž¥<“ô§äiª~S)úb2TýL›Ú¦zF'©?%?MQú45OÐSÊ{(òIêZl„ á£l rx c¼ ÿÌën1qéžö{Ÿ”téýäî÷â)ÂU WÇŒ…ý³ê¯Òü›‡Î®zƾ"C©Òirr‰µo…Y©°_yy¥«özQ¯°½xeÜhª/!)uú´ßoZ—ŸMÛüs=å.g sÓ“¹‚sjèé7ÑÒÝ>ì÷s³¥òr±j÷¶œ„ôuœþ_Ë.‡ã6Â×cum Vü|uLDggã €ÖκkÍNv[¸d;‡&ÿ©@íMhÄvNÝÎ3Ø žÄÐ ŠÆÐ’ !&HV!8‹%g`yWDÈbVVlLã°¬ÀªÃ\ÖP™²¸:Ép‰é ¤XWÈ#™…E*ˆ*‚Ž^U(¨¨$ab´„@È`0‚É)0€pÄ&ˆ‘ ñKBDãAN3” íÊ*36E‚Ùœ Ì ¢ZƒP yD"R—„aÑG#Á1DIr\ƒ`8ã°‰ ‘ã–DÍfYÕ Z$ ràY" *­`ØÀÃÑ „7¦@³"ƒÝ>K"t>F@C,ÀÀ&´Ä`Ʀ ~â0cRüé‹'œR±˜D k8bCFAQœ0e«`•,Ø%q 9†ÉœnˆDî0à˜_0#µ¢MÔÙ²IÛæñÿ`pÅþŽŒd ­6õçI‰04H! úDŠ,ç~ãÀP  &`£mûÐ@¹`¯B0ŠPÐHÓsz É3‹~&EA²aËŽ ¶b€ ÊÎÎ/ì± ¼` 9 Ìk"† kœ5tth†€@ÁZ±Ã´`*êÆ! qm=ã7Mã­BÜsCî²k˜lF’МʌÃp2.^ éÇ‹gj<;¶j !€~v±PQõÇÑ âÄ]¥š1¡ÏoOP7ÂZ·'‹$ ™Á’86c9&Àx rƒ#x!¦™¦fæÌÎ! 5„!Æ9wJ„ìêߤfXÖ/Hb@€6çJÎ|}Rq¡7 ÞÆ‰%ðÁps†Ì}¡½?Ÿ}$+ÓÀ¡ã¸´$ÄÙ”ÅCºl Ð9ÂìæžÀs^™€¯`Æ…sxÖg«)™Ô!Ð!38àaÙ»Ø<›‘ÁX1x}àj‚6 x/dÚˆ±¢¦,ò¡·9…`p Fˆ6êÁn !30gÞ{÷TàÓBª% Éö‡-Šç^± Ç%ß…p(Vƒ)ó]›–oyÛ4æ8Ǻp,Ö4.­äîØˆ àáäö€ýï8¥h&4· fL»Å2C‹`W×mÍ ¹87ÃúÇ6VÃ9'{dáÁ¿=½W÷…G4Ð;”&‹¹Übˆyíƒ8Ý0‡“d¿µ]aù\&qÞMVMøf{D&d˜›o½šBPfŸà)Å€7&ØçX”Óà4mÛp{ñ€4àÓ±$ C–vlM[lØ ¨6U5dÀ:' ×¶€†p âQCIƒ@™>;PëzÒ+Dг Õ£uv¥×Òt,(&þßI€<ãÒ;ƒ¥1Íÿ$õøæ¼w–°˜m^%S”|ÓíÌ7 Éå\Y`6-ƒdì[WÃÓ<ÃLà 7®qø³FÒrÒÕ”-¨ÁÉ [‚"¨BÈcÃ%PðIÔ½AݶOdÞž]@Ï¡u`®•SÂd}Nñ Ù“Á<ù|[NßЬs1XòÆGQæÉä<$?ý(‡ØÉ„!J(a™#é°˜ˆ8çhÚ37ÈCò¡ ¨ ‡íz-»nÈU 22@òĉ$$A¢‘0vîè:gô’Bá†b;P >2‘þOdƒ— ®dhš&û§¼úè^†Pñ¯$Ì «YþïR p;€ví¨úïòÏžÕC’u^÷ÕX²!J1$´:d>AcèÌ,ÄȆk 4 =ë"‚ºü„1Û!ùNÍÐ= 6ãi¡ +©k7×÷>ô­Ñ!QÙ7Ã\Lþg $-_h‹cÞ‘“ÙèJÎdl›7t &Ž[á£BÉÀƒBUû?¨Ÿø9þºxÞ™ Ũ7üpAëÙ¥?×n®Ø±oã€gÁŸè„¥Å rÄep˜«ÅÆ" È0“}|üÀÕ‡JÁذððžÌ\A²`^ÒÇj†‘ø[AûÅ« úsR€Õ$;Øÿîå™?,)A#˜^„ֱ“c1¸ÄÓBcSÔÈùÒÉÜ@×°{0>ÌsÄ´!Ž#7ÕÈR8¬ðЋÏãbobZ‚Î|ÇÙºO¥‡ãuo€w6ÒÚÈ~΀ÄH8su,Þ1€Bpu€ðl…x0d2p|Únö¬†I Ëÿ†CŒ+™5AäÁ¢ó@ш6l2a^—L2B)!E È0qî`O¬ó¯ÈI¢ùã·C~g$‰dÈ 2CüS†¢öE‹×Sf3¤ „†t KÛy_Öw9³ÞÔz$>·Âí½œ+h &© r8-´r#W4ТnÐ=ßýŒà[mкoPºhíŽýYâ7­’ˆVQ/6 ÛL‰7røÍ H‡JÐcžd’ÆØB†À2Gè0ÝCÿ#0ƒšcqÁ·˜Ù!A‰ ñ·ê> 4ˆk™LƉ¸²Æ´¦¸Â@ÉË'r„;¨0¯ÆªÀÛ †’¡¾mX6ˆtã3µ WÙgqÊòfWI¢;°eƒ'‰ &Éñ0|M"°rãï=ZÀÚ!†gÕºkÀd‰Ù’R7#f Ó‰Ž'>ã$dSß…®þ<ÌÛ-¯PÛX7T2­s$7Q 3032rã°£;ŠS4â Hp ` ÁÑ7aÎæÁ²ôá!¡Ø_–Prãjìº=ÜnÇïÅ!YÞ‡‹?Žð‡Éü#÷!u“©bëX1݈jXÍèûµ‡%¬2ßÒ„¶Ÿ÷cx£Vmš÷<šÕ˜vT//EŽB´›Ë@ ÄuÓм›©ÙSq§:©ô,¿%;™j g ó)«dlBp!)¾‚¬aòžùt8Ãh6(V¡â0 žYÐ2hƒWÈÝAÏ:T&wö éé…_ìâ$á3’c€óÐgosl=ƒ®tL†g…¨iT`Õí"‘o™çâÀ.`©1Ð÷Ôe:~ÚôÔf"[žœ PzdÎí»tHéÅ é ¦~•B™úPø&DÙƒ-Ÿ<hœÐˆ˜xmÐc‹j6å@o 2rtdp5Áê“…D¾ X9”`C­h`ÚÄë†@ó`ü¨Pxÿ“Ò:!¹·¥ºBgŠñ²Ø™ÌS¶á˜3o˜äzë™ñpÀê·Þÿí8»­±~ egÓ÷pýç'¾w¢p(g°2W‡êt'@ Öƒz2 &d&Cw&d‡FÉ ÕîBrhs• ªÐBâõ/$ÖlA¯a¢Y sEuÙ™çoø¬#:XÓÅ f!§m«vÓçõ@ µciAŸ:Aû¶tGÍΟwxg:Ò°7u{1ƒ¯åwßç¶èÛ¥˜üI`!}`£ù`rŽÚb)"õ¨‡ÈûÏ4Ñ¡„0Pa˜‡|`w ìïÃú~zá Æ£`Ú! kA’93 1ŒcŒ†7X†±¬˜üò-‹cÐ;1˜n¨4ÞØ9a¢9æÐl h†„hØÞ%̸(݃J4Í¢" zÄ7äx£I¦?kX´+™0õÎ=ðÀ`œ‹lïœ×–ÍÔxxJ¯uâþd-ÆkâdàT?£ßÍDÏ æar£fpA:j¶Ó_®«›â«-ˆ6%ì„ð”ß ¶BªÙWÒƒgÊ!¿ƒûçÆR‡‚1¡7&{L`ÊBŠB@9T-X€~¨Ù#SqŶÌñ`†Q³Åþ‹”ÿ©ÞËaJPB&ŒÊéïŒËžâf¡Öþ ¦…ÏùàrX|oÀÓƒÙ!TÓ’2“¸æØ„$ï@ó`6ãt$µxÄ2¶Cö³Fj²æE£hŠWêžDñɸƒ£¹â?Ô9 ¯Cÿ(í¬·Pæç¢¤¶®Ûš@ÂÿÖÞh¢Ã¥á©©õ>‚`)1ßGÌÔjeóšÌíY«¯ÂmiÞ67Эód w/keîIuä*Á® q:¼¦Îúþu‰]@|Hú¹¯õ¾Ãü\]r¾pörx*ñØ ÊM,PÁƒ÷ÈvŽ/¨ýœ¾Aú­¾p¨zy¦Ä|mt–°·¢Zð†R6žÓHèLã¶0èl˺èÓ>2Ç& ø`–TxíáÁɲÒÀH0)šB$ˆ:êXm¿ nàÄ„@Ñ!Ø>#›s(K-Þº·žÄ×>sØ´fì&¹®h6NœmÐûÐŽ1¥8=­Ó€fV‹r…x8ÀBvÈøŠ6œd‡è}BcjÖu3$;8Ü#bÎîQw.êô¬ÎÞ9åO´õClþH7`x­JV$5è\PçPŒID„ûTü»)È\š1ǼL0:Ç–½ç Á¡üÁ™¼Àï´¼…«îÎC X=#yÖ°BÑè2˜:`JvÀã8ÎóLÏÄö á’…`Ö3ï'$1\̇‚çŒVWtÆn|þ䦠èC7]ûJO^9ƒÐ¥l!=ìáë&-@.·ÛÜú+q€¸Q+»,A¡| x·‹´êkÕv ¡[o F­±é>Nq¶7zÌB×g:«Ç÷j¾SÃÛä[gãl‰ÞA;ÁÉæÞ‘BÕf¹ §nçGµwwb…5 Þ5Ì»f=ËÁ¿®‰ÿ(v;U`€``“!å‹OçhxÌ2|Çý=.ËóæI¦õéŽ) 6ãFûÿ€ã]8øLÁØu%"vNBÕ¡¼z4*Áš  `Ðyðwf‹YÛƒ&ML„8ŽÙÔ=kxòÍ{@ I0„N×¶ÇcGÝØƒwn‡óßàÜëR!onq²ñm™ÙfЙ1[÷'ËÏÔ¿ƒ9Syx÷>òîyížD ¼hµS1ðûƒ0;À7Μîû„1eˆT5{ ºoË„îkŒ^hF€Ì+PŸ¯›“BÈ66l;'_¸­lJˆÎà³½óëiAÙ¼kÐñà”8Çí‚s‘þ¨a#k­h¤8 æŸP5Jáâ[Žs Î>ŠvsZ4©Ñžûžz-Ÿ9•B³%§œ ";Z$%üuFçèêßO]ëf<º$6—™Gîô­x’ržfçÀ¦'7c’Äá~c,aN[ŸÿÛa±|l¸6 ÏÝA©àeG¯ð•âÏÏ­…|Ø>”쀤SŽ&¯ò‹S,;ãÑê×âzo€ïö<˜RežÒPt>û!¼ )óò†ë‡3š& IÏT1âÈÇ;t&S‘} 6Bað‚º¤3¯jÀ`>‹þrôÍ@sÀô !ýAØ0øÈSCÅlßX1ÌìÄ1DhF‡4þz‡¼º+µŽž0nk3@åN]"âƒ.dÛÎÊ}v¾t><ŽuãvÞÞÌÉ»ûÕ;ðÝ¡œz›a6»†O­Û~ÉŸGôIäÞýw¹´íSLvÚ@+¨¦tü=³® }à&“^bE +r€÷ÕŽÀhßµ¶àƒŒÙãþRk£ºëP÷po-•ïåkЙөÛÓù‹Á¤Ñc ®â™JI<¬½âcåY_Œ€É=¹W…}ŒÊvÈSƒìåðOŸ½¸?N»úmêžóÈ“áô¼ÂSp‚…Zý®mF§–ÞPj1–n'øzªvLI†ËdÑ4«ðÊÐe rŠÇÈB67¿uðþ$ƒ ±æz¹6ÿ÷Y{ÍZ–O·‘»XzJcÀ£ÀPü^è{’/ï­xµLfÀ€€¿˜3«(¬ ðç£vÙá´(¾[ÄèyL{³ôê´xãµÏ Pá “'3“áÉCÞ°Š4Ωàü(ѳºPæ´@›+ÙRLèÑÁsÐ_Ì •Ï #µíò{j§×R:%o}z¼Õ>©Uç\øï•G˜Ü“úòíîcrQC}!!Ù¹(¹v\…>¯.NÃ÷ús/cú¸]>w ž2ŸØ©øç"Am}¿‹‘»,ç— ­z UôS, THŽ€íØ`W‘Ñ{pÀ5ß½¤3f œâ`¹BËä*¥XáRïß«V¸ÅRì²[ô~àå·Áäg:ÛžÐùãM«4gŸnöÆýIÃÆfsÙÇžéíL„ &m‡ãÐ8ð@ À5bω͋ c/¦"†«Ë^®Ñ-õôŸn—4çEõ³ûLGÍ­»÷ìz~«Ú»mXN}îüpjNæwq“àÈiïØò¯û‹=aÍ¥¦¬œ†éA"ˆÇPÆÉÁó~Ÿ ëçKB„‰œø3i± Æ”ùøÞ`%ÝÎ’ÎC£íxƒÇBñÆ¥Ö¡’’™Öý€7­qÅ<ÿ\ÚŸdêxè’• ·xê)é¡¡i`’Ø»Q&ãˆsb€|QÓŒÌÌ!š„È~Ôp=¾Qª !þ ë°Oƒ‰}&°ûúgXäp46þ†JÌçõ¤ ` Q™Ôql{V=tà>Ä«5üu\Í”¤TN©à¬x„Cކ$ƃ5¯e1 HÀ{-ÅéÙÞòÙ™ .À¾j½\©íJ}:Ð^*ž–YÌ]­½‰YÖü=yÇ‹ÔkÕ]ŠÒñ€ >ÈPr ¿YÕh- ¹t޶.C™ wE.‘" väÕÑeœ‹½±•¥û[ÉêÏ«J]@=Rž¸YÜ>ˆ¿dmi›ù<^t×[ xú2ö’-bºÖÊ‹hWJÀØoO2:Œ`³0‚3s}¹è›GßÖFÍl‘J˜¬š@ Ý*œÌ·9éì§€]2,%”€¶£öÝó¥w€Œjö3~ ‹ËÈûûÈKÃÁ…Ü2.–zÏÌnF½²Ìõ¢ÕÒì¬Ðrà'|øsšôdŒ¼Z¸/ϱMŽ8}ViLÕ–þ:ÇQ–7* ¿c-I«< þT:‘tŽx}ÅQà¢;1°>Wò0ÂúOÓpóSÒ 04€¢a÷JUPÞc˜]œxüÌàZ¡Qœ(òvE‡Ì«u/œ—éy÷áŽQ ²›*­íë…žþ”xs×*8ZGiLdR¿1r‘9œ” YëÑžçz’%Ê}»¾¢”W8”áк…û•§Lû®îú™éhqå=–E(@Y&Ï_qM«ÿQÝqyz{¬u´Ìá¨Bi¾Ìà÷,'œéÃxFQZ‚MH¯Ðî t^XüÈ=Éø§Œù°XÓ[x×',0.·Ï‘½­´»W´y{N‡É¸©1¡ ÈÞOÊ÷£!ØA’Ôåœ[ÃZ5ãL8‘˜Ï«woàE-Âcÿ8?fd^X» Ìo¼7”Ø=¦wö“ï= S&†¿d ¦¡”5c…‚²X:ι­}9ÿÓÏßôxøœ.—eLòá>•¾À™:‡ÕÂŽ}•K Ìrç fðL%ö7RžF È*×% LÀV4qÝ@=¼,—Ï4@í—¯”oÛì[‡+[þWož[um à~´ ‹š ’÷Wøõ˜Ÿ†ãu¹Îv´JÛmÎîgt»·Ê EÔJ¬bî\ac¼üê —öã³V³JÜZ3Ânœ ÇŒCå†ÿŒK˜D Á ö4›èÁ¤:Ä!ŒÉ:vt$>¾`pàßГÊýnƒnxOŽÑ7™ÊvµŽ×tîä’Œ|Ö»vÙÔH +ïøh§2€c4y¥D ÏäÜ[Ía‹«jnÇ‘óÞíêœMŠqžßªkA}½‘ãtô<+t‡R˜¶"3rÄ (Ë_(¼«¨(HëHK³‹\ãßs¼°@ôU2.²¥Ä)ÔÁ^êU7}gQÀ3c›ø¾g‡wüNÖÛìÞð¹-°:ë9ñß(àAÐ!îŒðÿ3§<ºˆªút(„“†‡Åà atò?^¡¿¿¤æè”*±ˆ`×€^€+è@7e\³%oÁïñ<Üà!8é•»¼M[ÁiÕòSÊʶ,ƽLòN¬‚ÂSü¨ ®žbNKpݦùªáÅ×'æO•ó»ú˜¼ô"±_q¾›Gk¤t bôbxÝ Âx€² È¢CÀŒ…â6ר0ñÇG\?-@aš’¯ivÒÀ¾/9³©Æä2F^íeÓ¨sÈÍc×#o¢½OYñEáàFZ j;x8€£TßýÉ´¬Í;d»þ Œ)óßÑQßÛYp1 ¹¨!z”äbô…îžbëËZµ©êH¸Rì(¦Wœ¢É8­ ÊOÆÇwgêl追6¢²^ à8×ký--v»ÐÁÓGk'HÚêòáDß…òNô«w !Z S±qÅRJzð›0º+ '„ÑüL{”œo»éVcàÑHí!’Ÿ1׺—j‰[AÔžh8¡€Æ½ŒÝPÊd¨êÐæJB@3¾²M’“óƒéƒÉ^ƒL‡IÀ3"B <(7ä2(kšhºÐ}–É„!¤s9RÀ´Ôªîíys Ãfý°…»–j ß™d 0mñ(©êm{ ÔïQnI¯ T¤†M9 – 7ŒdàD÷p •CvnÙÞB'ÐBExÑ´ÞèQH¬ú¿7Ù•~mŒg#¤Ë¸|òŒ…Öd.*þrù]Dôvˆ¤:xˆ™À2 ¶"j‰$ÿ%â´—Ò/‘ÝïHWë€1ÿ!Çi\Õ@d–UíÒôµ%!ÅoùóK A! ƒ\nQ€UÂ4¯È<ÄÏyO\9‚¸uõ.tòg4o¶Ÿ];kÖz7Ðãêc¹ÿ'¯PïRZ€æM¾WfŠ"fcH¥ ?ï—­óRC â+®6¿§dx¢Þ)ù)¸ÆG—ö^âü*úšÌ6ýÂkܨµî /¨×jtþ?·Œû}{¦ Ï4ŽŒ$ `†`2˜œkݳö0d;‹%ñÚn¾ß3ªÍSq7„Ë<–R ÷-«#)Ð?†ï©¿,Å ¹¥Û^Í€ç?l$Ã÷¡?~jÑ£Ú13tAGnªcQöØ"B]ݧf—BÆæËDûÒ»¸ÛŽÐõ,%hÿ_UiÈÎgôÃè¨ dâk£Ú9Eºaø@µøJI‰äŸ=r·Ô^&ÌÓŽþ̽aàP2KÞ%™œgNFÃFäûBz…ß̺"0–k+4ÿ9 jçvÈR2ݽ+‚•<ÇXˆR¿=νG,bloèYï„Ä=$ u†ÕÞ5¶‰—>Ùß|X={‡ÔÖFh¹&ϯ' ~: IÙÆ£Iíuën»’8ð•mç,  ®Röói‰®D»,ó"ØØqj¾Vþ¿™ ý,AޱƒC-—Öfsfô•ÜkØØ\—ï:P_8€%‹BÐ%ñ¹ú¼n½”E†àhË8X1 ³Ý$™óͦª÷=­¥Ë.ªD—Ù!m”^¤rÙ¾ô¯B_ õèièÞQP‡ö6{]%Æñp¶ñ;0R‚Õ ó·kàtJ–±êšÇùðXJ¡î;áê¥5 áïG¾·Ž‚¿t£e;·W y¿ÇtTä†I¨T&-‡_vZ­ö´ÙP‘g&û*_XF‚¾MÓ,ŒŽ#¦ÆÏ/Ç‚MÿÖ–·Ä˜bÐi~ƒ}½L\ãw½±¦â혫¿ç¬€ÿþØ%±Õ&µãnþØ“Tõð󛮌h×Ä6Òü_Òú]tLbÄ 1©É*"Å%´X`›*tÅ”U$ TØœ±g‡}GÑãLÍè>j¡ ÎÓ”ÙÝ‹ˆ{–3ÊÐz{À­Hö¤ûyÉÀR>ÆõÍáÆ.À(Héh=kÛ(§±w-÷¶œŠ'×£÷-æ0<Í;H[„À×/Ž‘@ÞÁYmkŒ9mß=%[6ç>´¥ ®»èe¤ˆ-D¬eÄÏ¿:ÒĪÕR@_7"ÇQdëŒ9ÈUýp2¿·ŸÇ-ëpíæËk\®ÕQHtHœØ×†-ß-o´f éÑŠ~ˆB¹ú€2gMØB@ÍyÀ¤Ì¦Hìÿv‚K½ó±¯òx¥Lîþº:~|㟾…÷ ópÈ©l©„ìXfÖ«Ò¬_"54;vÜé7Êa¾â‰"š"rÜÔ«iѯQW«jf‘ÁøPS(PX†ÓæÓf½‰,ä­[æÌ¸4êv0¼µ¶ ^‡ê€]NêÌÍÒþ ·ÇG ›ÇéÕkrÞ91X©N޶l$b É/?ðÏýN–E?Êv€½€u}F¦}«Ð͹˜mý¿ßïï³xÚã̀Ƿ‰Z§þ¹ŒðÕÐ*tIëøk%ìÐ 1µÌp6ÓW„@ ˜,PþßÏ`ÅS¢…VýP£ mýÈ6–Ù@ö5 ¿ÇŠq&IXÒ©¡(2%¾53ÞöáÈ*çN‡½Höiœô5nÇj–3ô "§!Ü£(Ó€_¥›ª³ï;-_“ÏɼLM?ÆEÿcWîÅoZRTüwYR…'#4âÊZ»¾}Úÿ"‘É(w„þ7`;½7cÓ: é@}®O²¥Ì  Æn3ÚŒþU½3Î:ѵ|26GÎ`‚AXoâO †á\8ý ëó‘ýÎõ…Ì~ûƒ„”Ñ#ÍjL=@;±|šÀr&Ÿ—"mâQJ©Uݾk,eVOá¡él€›USË®• +Ÿ,³Yõ¹O Èï´›/ r {Ó¡ùÇ‘Ÿ¡/ó!yÕò•Z¯<âç·Ýätø&?j=~8Oë³ø 1=¦ütÏÈd4©ZJCÄÁâ½”nÌ_|cÚYÉÊyl;–ÜÖñº%û'Eõæí«T~OÛÒÃÙ÷¹™•‹yñ6I7AaÃn.T⬯ËHvâpDu‚ƇG ÞƒLG@€‘ʟν«ƒ¹Ÿãúî‚AWÝCškfHD^„ûŒîà;˜ƒ$Qˆ©ú{pzíŸÔ¬o ë(*ñÆyX“¼¡þ@ɾêóc3Ä>Ø?ÝuW­WŸútìŸ9ãhq³½iÿ9²¾ð¡ç—#ÉËž@ô|KKÍ%ξêmv~n›;»álüéžxÕ…¹žd4‡ÈÏ¡«ÀP_øª;l‹x7ì/íÿ­onãCQ°´z%.¢Ãz_D‰6C䢓/ÓÊRO?ôœ´:œÖýß­WD£:(µÞ›® é?aü¤Ô*¸þ™i°¡=¶ØÑ¡y²bºm0‰Ývà‡^Aa‹ïµE®š±àt{Eò ̾Ù»Õ…Ñ#;dþtL{­¦«\Ç塊†öVpy=§3ijΩ÷‹‚Àúþ°iTÉßîC擃eÛWƃ–‚ÏDc.+p˜Ïô]ß¾/´º˜m!À{áß´#\äµ ìp>5Q¬4rì†] ú¼Â =x0éü b±+€ùR¤<Ó€{¶‘‚¼O M(‘‘²®5omãìI%{tJGüûÃx¿²ÉØŸ™Ê”“Ê>nÿ±!È"Ïǽû>1º»ÝbPÕ‚Ôp9YrÁg^Šñ÷ÝP1t\H¸!Þ:\AÜ¡ðm‹p0ÞçܱÛíB““~ …ï¼Õ¦`=prn–ÍûýŽº(ê‹ÝSøymßÌ!bBÚ¶µÈ³„@ (>ƒÜØæ:zþyþÁrÞ;wŒÓygÞ÷ÏÜÛ>ÇÕ¯²ú [‹Ãß"pã¡ýjëMP½ƒŸÁ©)Œ›Ñí@Eـ̰صH`zÒ[©¥z%¤ã˜IdIÐ{‰GÄ&ŒPÜ Å0r(ñ0§Ñ|Ëà¶‘Ö¸wøJÿdñæ­÷á³”Y é˜ëkÛ5IŸ¢z)]dc.’ ™i(ˆJíD(±~„ÊC«4¼®VNºµ’Ò¬Ý\Èm†ƒéøAö„é¤f˜,Ò„  ïŠÄe8) ’Ð\…ëncO²í»‹x 󘸣üzNäÎØBÔ€Ú4&ç&`"¹ƒŸv?0ŸúfsÆË£¡Lö·+7g>ªuÅB[ÛªPÃ¥D IU>¨ç Ùrïù¦3|yL ~Õ¦Boo/§¥8ÕÈ„ypÔg¨)K¦ž°ü\8hϬÔ#«A3ëÉNDê[é¸À`'Iz}¯]ÂØ•b¼ÎÒpÐÉIE¾4ŸÑzù¼X“ûï±8Äs xöŸSMcà¡þ%Dún´åù¢¬Î5Ü6º%Ÿ÷†låLï’Â;û7ÔËÁW™‹ÖÖ)ÐUkeyC¹U,¬Â¯ÙTè!ånT_ɽ_íÔdžU:¸ªs#ð‹ÆýËÜbÙúì+H G‰ï oÒ` « Zï]9Ú³á®BQ‚øÚ\ªcÎ-ŠçÑi‘;vu}2.ôãû:†³¬Ã3Ç÷fñ+ÿóFþMβoĺžõ)­ýò?ZÉËSe‰ ‡ëH¬™'•ŒŽ±qÏû—Ó z‘oŠ’VОkg·:Ýw=E9ûU|\~¿‰n+¿*RbÊ^tú]÷„.ùSAB†D݉Ñ.ß\[Ø­a‰ÛþsØTct¥·â a“&{µ» $ì†8ô-^Åu㽡fÏæ© â`ØßÚ3z‘x*¨w®èÐp†¼mÚˆP-üójåß ê ððà˜±Á4¶SL Ó†íàdöcD} ²K) Óåvû³<…V–©Œý^´M]É•š¥h¢øðrø7¢ ýœ—½Ï}ºŸš³s‰U³ ’*ö„JoA,cYÙªzºà¤‚ɺ@¿Ôß[¸w–‹š\lAaãn}hO1(¸„‹¡ßN±›óó·­–æ-äëM”y¥ÔP6êmâ O¹Û”l$ÔGÅSê¯!úËPù5ðw± ›Ï¡Óv‘8XáÝ”âÜÊœqH5~ßk‹ë.cBÿÈîyÖ2 lß½P€¼8¬ƒ¿Â¡g‹ü€xXŸŽ!1‚ÄAS¾µŽ²‚_KÇ( YSg½TºªŒ¿ö¾i´ydO™•YX²™’"ùëCx V‡º-pdƒÃ`½¼ý>4ªÛ¯bGóBäêUW‚n¤]l£í/àƒJ*A6S,®µôðr9/gÞ«ØÄw'y<Š4ae–jÝÏØÝ;€‚y‹jÁo»Ú|&˜žYÊÏ[VÒj>hûR«yeKKðÃKðn&ÿï»èJTÚô,œ[5–5(»D ó³Ìþ~Y°„˜{ƒ-Ö2Òç[;²ùgŠ¢]r®¢vž™¼â³ø½i`ú¹Ê:+@)9%‡G9Uøß!ׯ±æy9 (‘ÚÔüx}u…–¸«'zØ%´lüi“³INêÄǾ¨G78ÆàlGÜêÓŸ?8½E ›Õ“Ƭ•ñšD¸Ì çOa²v¶H«ˆÈ³½;ñ¯ÁC•ÁøÄúýAºiêB,¿¡SØó'À:²€€õ°¢3Ź2ÛÙl䡸¼jîŽ>õGæpí(Ž@¦áI»Ç¡šÍi£á©Þ(|ßÒÜôß`•êà+áQäëÆ„àtRîý0ÊwÀb¡æz¬z›ü˜ +T¼^BVEKrø‘8êþ½w½Ãc Ž·EâNLe}Ù ç ù;¹}z®vüNyÚVl$úªöÅ5|€Ë ÇS¨ü ”¶àí’ÉSÜíùgå-#ÝUÍr6Ê7ZÁ¬ 2+£Þ:0.×.Ä £öocæS+©R‚´û†ÉÄV(ù5^hŠ#UD0ÜS<+ùÜÈ8L‹[fœ^îâ¿qøð¶JKsk5}Û,+óÊNÎèÛÄ”Á½š°› eŒÕ­ãÏcÔåí]à±_•÷³ºK+;h÷Rœfú’á =Fëîz*Ô«Ë)çebA™&nýqšwýG/µ©ÜFäß~…t[ •‰Çúú]åõä¾kÌóœÙ³Eȵ{4ö[K©"o«µìš?‘òéDT×:ú×2µðe{ÙÝOç»ä“örÚzŠ’©.?€hŽ Wñ/eÆš÷*ªsä´gÿ[ÀãùÚžÆxªe©w”I2þmß^wùç»U*©+G»Ÿ|´‘L]ÈÌ Å§có¯?é÷2î@Ì·u›ûÔb‹ÒÊrfvñzDò•re:q„/ëzü¤²“Â~™¿¬—ž4Ȧ½\Åk;' Åð§z‡RyÇ&*ÍqRd7£(€6ç´@BQ>¨.Rã)Ø‹0@Í$„…Ã/†ãîm¸ÌÛó¶í÷¼  Ùªš›Øñ=ã]^@þþGØû2®<Ô9v˜°è×(¡ÒõêÑgÇ‚ÛúæíÿÊ´¾÷ÙΙ+ol~¼a@YÁ„?³)ªå€^+°+@>¦<œj“#¹÷WCA·ñþàaUæÉö#BGrŽß®Š­(¾XÛÒf‡mñðÊ·Þ~±/…Ï_ó¼Gþêð b«ñçµ8_éÀ?™/~sÄîo¦`o"Õ9³X0õ»fµ¿åï/F|ñƒl"¦ˆ!99€ õÛ`l÷’Îî÷–ê†ñ釽Ð*VP&¸ãŒ]ÖZÓƒóþ¦Ò…2*ÝûCÃ@ë›H=묞?!¦‚ó¿¼0Ó±ö ƒ—[Ðã9¨6š ½¢¥øÛgœ7·³ë?÷Èù 8âÍR•X8š8Ù- ,í2¨ÿýÜç7íôTø|ö4÷üc޽qžœëŠ$> Î<µ¹„ãXç˜`À™Ò©”hñ§ÏþGè¨Ú@}¯úŠ’ûûnùçÝskR éåÂ3=öÚq\ö¢bÝYúš«FäÀ@îþ]õÉgÓ°ß^Ú_Å—Œ½¹¸Œ ÓÿÊÕQÕ%=>ÃëöÃî1&Ìo2Ô1ù+NæÁÄÕHÞÞ{})ŽÎŸ[ÙdÖñÞ, ´€uîb~œÛ¨H7%îÚæî/ ×’ »¯H·Q4:ÎzÞ¨Ré€\;}O½¢>ð÷‘3¿–whª³û˧–û¥l¥B“FcgÁ×4!áÜ(l•ªî*ŸÙÏŽ:ï»ú@;µÁ\VS‡ïj €ür\¥1tZ½ðkçh€özT_’“ˆœpF3—ry µX O³ƒŒNئé,¢”Jrz¡Êå€jlQqsù›Eøou‡[›¶îÂÌ4Yàî´HSˆÕ4_>ˆ5©úß<ëw(ŽÏ™Žïú×IU°±î3ê´îýX¾× ïæ—â;µŸ¯«GÃZìâs©jð¼È\ G7”§|ÛÝXï»+ ts‹6uמ›ÌûÉÍìÌÙï@åF©%*º™ãþÿ)Ž–=é úÎto`@ÈÊï5(® Ê\~úEU%soR{MÐÄz7kØM;”¬SßÑ·|qDKäêGêˆÈhŒQò‰uÝ>£Ýõü½³y ô Ï¸€< ìee\jN5v•}jüoYÕûÔŽ;«¾[I(?¥Zôø¹ý Å&&&& _`4² Ý5S3?$×ožuB®’µÍÈ'O|Ie^¿iÎ"±f_MähÜ-~àÞêÅ óiàûÕk+ñûk×M9¿Ä¹õÑH«Ó¬–Á „¼Q; Á¶âµÎA”þU´ÞáEÖjò½lÛN^æT)¹·™Ðw9¾};0=ãòrE5Vr¯ £ (ý&—¿ä3j‡ƒ…œà"³©в÷nx_%;¾_}åÁ, GgøýqµË8:ŸgÍñ‡P/–q߃ •y žÎg©a´ÞÑT‚F'ÍŸÛÁº7˜Üƒ»Þ‰~÷ИàÄ¡7î3¿’Àtv¾ôÕ4“ÿ•Á*8‘gi}žòlÉ­N¿·6 ó U0Ý'˜r‡rÉʤXJ£÷ s¡hº7}Cð3!¡d„!œáëxÉ ¦üMf‡yWLÃÒrÖáÎý@ÚŒ $1“¸X{—„Ü~ÿŸp@ŒZ5Gf¤ÏÐÇÅ€m7Öp¯gÝ(” ¹d¹ßŽãÙ”ïöuè{ßóó¢Áòøî±`Øm¢_,zx‰øú_¦D¼¼å Ðä9µSïÂ×å¡éë%î´QoŸd篌]Ï©âu'Ø⤿›NáUãd(h«0“ŒEPÿ ¼‡.çÚ¨Âêê%æx´rß$Òbܳê7žî ¦ÜdX Aß”…äÚšB+/Kìm×p³ØQj䮣þ¬c ]‹î*îODø©kû×ò²6¬)ˆ ˆ†•˜½rŸÓáqî&<@ ‘rN¢ém,ÉHÍtŒjî@ÖE½$´Ü å#¹PÁ¢0 ðg¬ ´ñGðæŒYнQÓ|¼ÕìÆ*õ1…¸âƾr_٪΄' £‹h}–¹^–qDošÎ% A\7q´~]·œ_7àÿî ,ßAreùüoÁž÷Õƒ àØtZuxÆ–âÇæÚEÏl.4T‚q×®Kµ†»Í¿Ê:¥ã#¾=-¤ÐçR +Aub8¿Ê;?ønÉÙ¶«ú\cŽ÷é8ÑÔètœ^£C[³ü:<®J¡ rï£cþ}ëŠMã·Ð@…8úÚ›ŸÉŠÇÂÎ\‡© e}q6Ú\èü·7~íÚð%ƒ™—¿1êó*™Dþ€ýv*rîÂsˆŒî¥@:\A˜N@Q¢²Ž‡VÌyöü¬ÚnD†‹œÔ’8Uo ·²zê61êñ_ri¶|öðz¹[8Ýî]¿æ°S›YÃaòÛUJWÄa¶u$/³Ž/J6JÄ9¡=#>cˆ…£ã×YÎD8[Ðe³ÛXÎb•hÿ¶zéNZÛËù©Ábö}ºWkbc:ɱmhÌeðj#óùxS@%œÝ=3·øˆVŸÙð£ŠÁñÖ™#ó8”è„ =*å,|Ì,$3¿£< âûL`G*ÿ–oòL“‡Ó}PÛa9|Y£h9YÌÈÛPÿ Òšæ…b󕹎àãb¼YØKçæÂ1êy|¯£”Ü,ùG(Æh 7ä X»´›¬îÕ¼Žm‰ ƒè Æo7i±5™ÜÊ«­^k†-™O¶2à¹x”ÛŠýW‘@Lbd;#wA`Ç’¸L©JÊü]ûcDÌÈ@Œá6”SãíýÄw~áÒ°À ©T£9˜0$à «<=/¬¢I_S¤é¹—M¦$7Ç0;w×µí8)¾iTO%q¨ÓñíÞ@8)¥.lõ6{‡¦oú¾ÊäÛÛæ„‡"Oæ+Ü~Ôôd²‰gëáŸß–c(˜®PV'M†€[v>,ä“F‹‚Å€ñP¼z" i‚Qc|Áîlôz^Ñ» 8€§ãتP°“­p"’c[FélÑÀYrŸ sÇE jHHók¿ ÉkØ9ºÌÎË*«NÃkö2ËÜI¾ÐÊFæ-{¨ÆÌÄÎpÅ&HzÌ÷Š˜X3}—áøÕâ@tÐA²òÇÝ×Ô~—ûôXï9ùm†9/t¦ÝÏfÀ*«…Ô¸(H»•ÇgEÐ÷t4sŸãdq§wåLà}öZûùXy¾3(~ŸSò×\3f¥)Rô<-,+³†_)ø˜Zs‡¹|0 å¶ N¤¿Ïì*`Î\Á¨÷ô:ÌíES\…¼fr_JòXêvÄ òë iñZnŸuA›„®\N{J§×ò¾ÊÝ€_Ôê§Øo0·;ëÊ)ôf×ÛJK¬ý=½§¼€·›q°Ý8€wôïÊlçs-!HǸ)n Ó°H–ÊÈ_·Fÿ|Tÿ6r‡ýáVX¹å]îdÛº)öêâœPekúRªàŒ&vÚ­LùyÊ¡ :-€vWð’Ysvž¯¼×ãvT½)Òg…«˜üã¥ïøæ¨´æ¿kyà– ÕàËW­¬XνCÖ¾bÓŒ©%»V–É9Øm¯›bY^½Y®t‹Ý6ö?®q"¾}Ðíy xªS[³V߬ÆþŽÒ µ#¹vë$e>ÁŠmÖº“çökçnH¡Œ·¸ 9°Þ=ü“/,‹çwS{X2$9`¦Øë#e4c]ßTEš=÷ÉS'nÆW–ˆ)«Ÿ±ûs,bò_ôSOÓâãJÁ%:F©¶ôY÷i ºGµ»ÖÉqH­b¿ø„~¿Ù°óÿ¹ZŽÓ»î39ÿû8@Ê›òÒ‹õ ÷f®@ŸÀcÔ<Ç].äí ŒM&…E‘g˜ÇÑë™o&=#/j“Ëç ªÈ‘“209û`º½÷#PÔ63ZZlò÷“k*mO$»³+óa˜Ðmê W…n2ƒH@€ü[ë sS¢½Lä2°ÔLp¥òŠŸ¦C0Àtßù3^«Â-Dk ÿ6ôw=Š#'ïÃâ&Buu¦ûÓÂïŹrˆ“‘æ’†¹ ^I<;ééÕC7,Òqñbo:±MUf¡±œQ{ÀobéÂ{‹¦ Œ¶ì}#VØ@/KLºÍÝ~Ö.VÆèÇA½d[#œúN)îI5Øû/ÏSc.+_¤«°ºiÇ“èy™ÄÆã¡iðÝ8@áƒA†-kþ¸ â( 0èFé+xlÛ.žNªƒvÀÉh@|×O`ë!©µò¤ bd20çr¢{óò]>c•“Œ<_b^Ïe…£OƒîÃ}æ¬wö—kîûæ‚K&dQòdw†ððqÿ*onQAE¥ÐýÔvKì•Çw õû5%:^«Ç‚¯AQÎÕc:[P^Á1|ƒ¿$º™ê†+cq›UtÏÓ±ñôv®€h- Ì>ý%1ØÖç"R+Æ{êª`¾îF¯¢\ŒŸ‚%òO‚Y–ø`öè²/(Z\ SV;Cû3FáW±hqõ`¢Š1¢mGDÀas¦ïÍmØb¤ª“í}´gø’Ñд€UD½ûºâ¤M.a‹I3¬åv@9½²aœÛù¡gžƒE´|ö7æ¶@ÀÈt­|Ù³wvf©qèÓ×ç:X0Ù5IfßUã6½|Vs:È<x.k.Ö½¹+;{Qò´iöUH@$JÑïLf<=âŸS?ÄÁúÙek¼?z‹é·žx¶ÚÒºŠ‡œþ?0ò‰zû޻ƶÛë8ðñJ@’ÕpJ2À²Ñèø´¸÷© ÈíJº öùÙÒÓ=Ù­I-~Ï*¥½ýB}×wÈ´S³‰²¾îlÚ&½—ÐÚ¨+zÅw ZnW3ä²äÐR²ül'CBìsíú{è–aª-ÀÓÇ%ÄÈ7Ø-†ÏG»ØÕ‡!“ð\§È‡97çïwÑL¦ø*ž/@¸þ@šÞm‘‹(G)ƒ €ä Ÿ}—©¹Ó›f†±YW{u<ÅË wØ|ãAã¿843Öþ(ŸBÃâìó„†ùà;ÀqoX €BU&Báø‰C„ÐÉ %B É :æ“¶BCPfßP„h¨z íÚ,aH`a†„+ˆ+!­»ràP˜Bˆ4"W´“þä40‹bÀ!3 ¶“; "j¿œa3Œ*°„!Œ![! dà 谄Ì!$ ”À Ð``‚† ˜© “$!†bCB ïˆ]¡A Èœ-Å…4(@¢cD@D„UPÉ0 ª00ˆ×Œ"" A…AQ™U“ ˆ¡ ª,ˆTH`AVd!Q ˜AL(0Â1  £þ¯wм¯¯ÒçŸèÉÒh<û쀹ÎÊ–½§îçÙônþöHÁâk™Œ»3ZÓi ]`J:ƒø™RžTû}È8¹Æiº qµ]®kEËtx‡Ö¶bm˜!…oêÄ!“k%2ÐÓ?ìë7’WˆQµ¬Ô;àm ¬ÓR–Û̾q¼ŽwŸ¥–½÷Ü¥ïwÞîÜóιÝí»½ç[ë·Þ7Ië/½ºÜ[ï»Ýçy^tíÞò÷®÷ÛÜßvϹçs}žv¼ëã×¼œæÝßgßU7¦˜)èš20šzÓÐÐŒÔôbf©êc2 Ÿ¦¦4i•?# ˆÓ&&“ÓJ{ L†Jy¦L&”~M4Ú˜4FOf€!šdÐÐ {)èhT*©€†ž‚fA jiššišŒšbi†„ô„jcL†OI‰‚ž ¦†LÔÓÑOi0Òf™4ÔôÓDÓÐ4 MM¦©äbSÔü™2=M4Êžž ˆÅ=¨UR~L4™Sòž4ѧàÕÐÔÚjdmLhO5Oa2e6LÑé2jf‰êz@h4Ñ“Tý&‘úòžÔÔý&&ž„É3&§¦š$ò›Lš' ÓI´b›ÐC$*“JoLLjdô*~)øÄÑ´Ä2a4ÓA0Õ<ƒÕ<˜&ÒOIèÍDòm2hž©ìŒ& !OÚOH`L§† dh=)âjŸ§¤hj…U<€4Á4§êy6¦&š§é=&ÔÓM¦£!‚dÄɧªyOHzžÕ€Ú4˜SžSõO=55OÚ‡”Ôð§¨y&§êzži¤ôÚÍQ´É´™ªzhÔIB›IéjŸ¦“i7 oÄŒàá1ä&ÅÂØ&a D‘¨z(‘€¸ŒàL`@œÀf”áž1 (mÌ»´ Ómd} \ùç¥c†¬Ž_ÕªÆAË·õÛ¹_ièë4­WŠÏô5˜bw¯zø_txÕ%JŽáÈd 8þi-Æ—Æ?O ¶r¿–X Ð’ìéñÕ¶DžÈ‰ Òüù¡ióY¬GgtHÑü‘… ï´õº\ ¼Âæg¸lL+ÓWEÓ¯Â¢ÄøãòeS_@m;'Ä9‹K ™Ë=i»w7c&Ø:'T!pÓ\<¾I(kíÑÚO¤¹¦Àæ0Øyé ¢ÊšÍìL_ßjŸúné‘‘ñ“‹’:¶xøÖƒÛ ·•Šqª  Šp¶áp‡ªÚ­=T@$“„a G$$$Q’I!!)ÊQLŒ" ° Â`L0…˜' pà«7‡ 0†`‰àô|\û…œz8 €pÏÄC‚”ㇳžPô‡,¤@4Àô©&Mô‚ÌzŨ…°ÄÀ’@*1"È0 !iRã#Îø0»ƒI+øÀ$ IŸŒBSl 8lÆxc'Žu % d‘T1¨Ì×<"²{|~+7¯«´QYGÒnŒcEÚ;ø)/ž§@ü$ ¸aFŽ8p8pÃ@á<€x†ãÕ­|![þõÏI&$f¢lÓãíJpŸVZï×Ïü_g>7acd@¡®·›èϦåà8$ "ݸNIˆú‰p˜™”_¾äV²×²B»2Q¬ „KÉ,£ ºåÇO21,‹4Éf¥—®À‰f¹2U‹§ÐÉ ÞÀ÷r Q—q¯a,#0 ½ûƒ²Á7àp*ùç>ÎÊ)éɼP<`Æs·À™.¥oÀT›Â¶’0ÛY/·55ðj ÏQƒ+Dámj/t•¾†²ÙœßMWç·¼ÈQ¼b ¶½.lÓ=¬g©d*?;ÖjO嫸}¼e‹7OÂü/65’á!qˆ= y«Lœ»ZξY¦ˆ¦¿Á¾Øž»òa€Ú%D€q=Ò:·ûᜧÑ&ŠSמßR9*HIZ:o.Fù‡åûùó“½ 1i„â‡#E¸¿ÕN-®ß`Ñí1\ÈaCW÷&7XiyNŒéw4°À8¬1§½×ù.Ô¾õ-öÕ .êÈã»qäû~^²ÕÏcµçÔÑ.ûÆ6vÛ/9ýxÍÅäWÁ¸ÇɯúùvŒS¾L~È?Óª™àpz[ÜkPïVXzÙ¤ßWMÆÿ%oñQS=|¡?ŽŒÖsù•è-õŸô‰w{]˜¡þCN4›Ñät`c"mG›6†õLµzJž»˜(øpÊ9KÆ2 Ö#ÒU»ç4ónþë¶:›ÒžŒQß3JfV7YØÞ$èÀŒ|í””3›*®FÈ“þKÎ& 0-á`0$ŠOÅ©,‘=:ÌÖª;¶>ôÉbzæÜ¦þ‹â‹ÉÉ–HC22É™ fÌ$G²Ì s˜I^õ6kŒŽ/¢!xX[ÛÈO:wùv>›•¢£ÇÐ徫õÃãËèv¿wŸ±ºø¦uK![)€í_‚ãÐåL‘•~ßP6I³¨Ù²/!ÑÝú¹ªÐCOG MF¬K)Pì›ÎâÕWýþsÓ/)òfÔv1[¯ÞÁîsAtMZ÷ôBO§ˆš;Õ[V·­ÉqÝpGmBt’*±<8m#3(Œª¨j~e@ôé˜gÀÓ1NÇ“o¸:éöÜÅœ-’^={NYRâžÓ¸gñ¬›?ЃYžÜ’¸ªÕ„Œ=š‘2çD6£É‚ˆz7çp=d×̱|)eò…YùJª‹€0TÌ™ð‰óû\Ç…ÑÀ^¥æ5š9";ø¦ˆ"@“:þÉjõèuï»·AO²®;¢co®‹j 1-ʼÓz½Ì‰;i¼)øHÈŽ]§lÑäZ×)wºÜëJ¢ë­ò;P®&|Væä>pŠó6Øl¾ä×AUÉ¿ê¾}Éôi.ZtTRM[º :ôW-‰§ÔžìMup¸ýt Ìõ6C··Óÿz8nÄ|.GIò} …1ÜÌÀµcÄœNÓ÷Wš÷#®:*,1ªtâºÅáž W8t@T¬'žpé÷ª Ruõ”À¥¤~®äé×4¤u{…Vž†p8ÙzBr…ÕŠÃ}Ò¶®úñZæ?îŠ: ¨ºå1èí©èez¯$É`c/ÄJoµ†'ßau{]Ùè•kÌ"Š€ Ý?Öȯòâ7h96¨»Âk|a„°òÏïö¦Þ³mhÿ<n¨Ú*BÃù´Η̎_[Þ‚LÍÇQ•¶zsz`ºàŠ*“‡ÒWlèrLÑña¯ßÝ1⊲ÿí^n¬¹®]OQ\K•Çmí^­Oî0i£¹}‘}9ÉP‡Â­¤½Æ2{ûÐŒ>jöÜ2ŠðäÚœ£f‹Î†š§ÅŒI(W‹ŽÜyÂkf9X^”µÏçÃŧgt·Yÿ».fÓ ¦PÕªâö4)¹s=ÿ<£Õ½NÞr™\K@ŸA]uÏ1ê0í±Ùº&îZÃMOñVTEAÍ@s„‘þ¾™ (î0 €äÊò±‰ …fq¯äÚðàv¸cåÉiP£±~ZnsµÝÑPw%²ÝÉœO¢ºèÜü¹al—Éä@_ƒ•BT)eÐÐ=Œ£Æý1>즢Ÿ»ö—ÁPËgâî…^Ã/™¾¢äŠßƒ§.ê³ÕÖV˜ ÔòeŸM§øÔ šbû>k¿n¹F3׺›äÀ±ùz˜˜åP¸kYè¡§A#๭_FŸ&œ§¾_]°£0RüÆp€ðAÄJÁ½{f E‘‹¸vߢ]ZMµd•µF9“ñí’9d»ˆ }z€/Ðp—®úq¿¦)°×µò% ¾.T©÷žJk¡xëXèå?R­ŽÍúH?:z›Õ&»µï2Üt}Œ@0ƒfµšsïÛÿ%øOYvÕ˜•T¡­®ÔÙä\k¡þ Wk'm97 ˆ ÔµyµJi sœµ‰qúu¿'j§Kk‚%«á$üõåÈ.Aýû¬ì-þ,æqÖĶºÔî®òŠÅ&~< 1o`…¥cDmå…ó]I†vm½ûÂå¿ä­¬m&Î8—µÁXgpÙ‘¶Éà•S‘¿á¼-å'ߨ^Ц‡Ùù}Jonco°òÜ)ràƒ,Véjå Ççi†ÛÔæüýH;}ò]Ø]—w—yÊXB}œM!juuñ ¶Ÿ… +.ç›]Ÿr\Z»' ÙžœQ8þù?eѧOô˜yòaÑS†/có¾N(©¤˜œ¥$Z±º˜¶«lߢ»4xu†õÞ=%¦P‘­¾ìÿÏÄäüŸjyÓnb\íñúž‡ÈÈø”ì5ÕB>„VßÌ+'@M~˜®õºÐ*qìçw›©Å¾^Þ}³:VLªmÐô‹ŒœsŒg 6è¢Ï\[,È.g'^M…w\Ñ(mÕ&Á ˜=Qöh³ K|Šúú˜–åÕ/Äl&´ÿN|×Ã}Má` Ø€„ûtq³ØôæF¡›b ääúk ©—Åð4ÓW}Û¬­ê,«#`rÉSF} Ÿ•aX¤û÷Ù|ºæÝ•Ž7p²;k[2\hàÈ >Ül5ýĺºÂôÄoÇâ ÕS½Ð_Fùxn X!:t¨x—‘õr£¡ñODŒ)¤º—ŠÕS±wíå»ýa|ÖÙ¡ÙoQÖÑôŠ×E7ÃûYK·´7:­¸/ùk0à)¸Ik„ÌoªA*Á+µÅ^UõnkC~Zø='ðeÍœÅçxèx_£ÝXŒm¸NŲ#V’k½·CµIùÔ‚Jp“)o°¯ÖTçO4Ò+PÈ`Éb©r´My²‘Jq”9t„£Pc>‹¡¯žt‹KYFèb]»jÕl\È#ë¶yµ¬Oc&y•Uµõz ¾û´)„züô$ÌJÀœg.ôÑ«‰’Ý×0ÙYï„ p3ŽR¡Å2êÑ NÓû”VB-§Ž8è¶¢Ÿ‚6îµÙL’'jÁö.`¬`«=û—s|Ü?îN‰×‚>ĘtNfáè¦SY¡/X| *(à x±}RK\O´P¦øéYT as£õ±ñ8ˆdÖ9‚êDGJÕÐ>èšc¼<0Á*1"q<ÓÎçüu?\žK‘àY60=,ÂÅ"°ÇÃ'Èý’³ê´à`ó Û†c@ žJ×:p‹³Ãua6e“©Tãã‚×y Ý…|{ô•(ýœ5¢mñ‘eêè°g}?+¹x¢ò?ã½çuPÇNGíÅï¥1[a ˜.EE7'=¶‡ò»ô^ô_tòH²x§ éYö—\;ŠÛGaµP ªsþÀ ¨ðfÅ7A×,¦hßµWòغ–0>ðVZ'‹ý¥Ì±°Ê@øŒu÷ª—m³Ú3ÚVEd¡¼ot“;UÞà 4R—zeïÌ%¹´Û˜'€ ðsÉ#À°|PÆ'.õ­~‘¨Fôþ-â¢áÝÁvÝò8~ôxÕ2¥¹ËÀ(è0gµ€¹³­Àft­”ðG\9pUýÕ{_n%˜¬±îÊù˜ÖÇÉòŸ„‡uD5ËY-,Ë.%ÊHkuv"n ?:ÑaMÆBúf°ð'&‚DTÌÑŸƒ\‚Ü{xèCìÖ¿ q»éj¾ “ýÍà£!ùÚÚ]:x(‰!ÂÙü;r,)=¹k¬ÿ'÷y\íÛçÖY>¯Sm‚#ØýéŸwƒl¸›þDÈ@:p à²O68ß™SѬ÷{ÉUÇ5!`¯ohcÉälò çîÊ—<9¿³»ª“ ìl‹+_>îáò™]yä%Ìûx&Á Ùzú© æ õÃà¢ö{§¹òY$Åîhé%+–‰|bÀIÓ¢RaßsaÎÞmDU˜ šÑìvò»!™EB¬ìÙÖá4Oç çýˆ¦Ñ’ƒßc¬è”Ø úÉÿÛC+ RÊKµý?ªàæµëÌØ’PíÎ0€¢6عéËô7ôjÿaXŽ_ùÅ¿‚,9±1œî–Ž6Òz'é×yš¿£#vêÅÂä÷7?Þö¢ñ£éØë6õZߠʸ Uï‰ú—u©Qº˜óŠªPÙNùœˆc3Uó­£W¥úxöÃr &×ì±0øï²ŵšÌSÕâËb˜C®ß‚Æù=øõŽ’O! _'þ?å2¸b‘û…RuÜ¥G¹‡z˜FšÞ=Jô"2ž¼Åtá(èÜVrè°ßdt¿ èÙ ÎGסèñ#Á“ÇÇSá»-¥{ŽÁËÚ»çXEFzöÚ1NJ™UüyyôåOr¼L0Q\”å† oë:ž¾’s’ÕñWf‘Ï'â× ÁµÕå~§“8äÚÅwzñœÛ$TöãV@ÌçR—OL¬#mΣn‡ô¾Áò£ó˜åM©*v«uâé°•Ê`öÖúŽ9idý²™6¥hæÿì2ÏvÿeÀYw1&޸ȸ07ÖqŽÓZòGé•uç±ÈCíÖN œ+Ø ‚ðÝ £ä¦#¹Ömó±Ñ ¬"ŒRФ÷)Œ­”³“µÓ¼ã6Å‚¥õK#‚¢êÌ'ï ðT¤QÓ©9TvÎáÜESÁI®“ÛE²>úŠI¥OG|bŠyÃKÕ­m'‘Jý¬±¾Ò²¤‹®ë!Œï×õQ{aVŽ™vYïg%}ðô¢Øç¾Y$G¹LQ5$J2 6 ¿–͵./>x;¡üÛ¸¤n–5اù§HM¾IØŠ_*Vßi…™L»¡g]çF ݬ#/w '(å Bl6ØÉôI0òúaFÿ*µ$h¯h+çSq…Ÿ‘àF é:U«öØh;¨*]Ú)ýáâî SÝšÁÁE"Í rbèTJÌ&Ùsõ£…5H°ƒ±¼³Mç…q‚•Ä–ÂÙÌî-žAmÏOì ¼[ÂÖ[è&˜ôzËä|¡|k\<5ï\_÷IuÁ«Ñdnï;¬^÷ …gobŠÑ»8š± "[96çrb 3:ÅEè•ÓŽ‚ôþU±iíUÉ‚éit‹ ªÉL:hðζ¨\ò“#_‹Š‹:ÝÔˆÔ´líƒu—ºíÒóg»?š×öŸö—[Š‹–FÍshWÇUWK¤¯ÓŽ‚ILþà_–âÎÉòˆÉ³VûÖêhm´¦ú­W²­µn³&XüñÙ+Q ’™nß œðßA™-6Ü9t5?eHä…e§2WÒÇjG‰èu3WîãÆË)Û]^è±”ˆÏè"=sÊ"¡üü]°Ë^MòË“GVojÓøêtLÖôË´þe»Ü[R¸Ò=õ½IB‹ùñÆbþxz¨‚ÌíàAÊ®_+B…Ïlê™y7Ff|B½:d„T¼gÐB_Õÿõ“­yU:éœö 4ß÷fŰ$SÑ®A”ÀÉ&ú…òP Ÿµf5õß<4£é‹JCUçÁnNÕ(Åœš³máÖw}è±R+$І(·3_T’ÕšÄB/7p*>’¦¾Øjk5GÏÞ“%AQ½œºÞçíU,J<†õusÊQçì³Q£¬9ƒd -Šj¹(ˆ7ó…:Ðĸ}±™!ué6ÎætÜq÷PLæjæ”õò噌jU{g"ÚCGQާ¢Â‚1·Ã°9=QÒ8" /¿eƒ›+CÒJQ׸úÍŠbª|< Ô—VG`¥jœrðízÍ•®ÐqBmȶ>¤tÂÕ!ÔU>¡i Çãò?é)Q`l¥d5A òÎ:¬T*†£ûßùS5£¤æº¸ ÜÏ/›É£ë“8„Z/EN€ ^ò«O^‰87mº¾=”C£ùÿtÎËsˆh7M’à9ÂuÞ2GùŒ]òGî°M…–÷AúW>_!í SaÒÚJÔÍVÙ”žfϳºÒpîv _—£cö±‘±‹¿b,CM’1¢~iÞ^I¾~JÚáCÉà6+òþç÷NÿU2“`B΀ŒË8)2ÌúòV!UÞÆÉ»P(Z/g’RISÓòÆ{D/ÄüZÂuº• ›#’H*”ã­&ûÇj¬àN²ã~íg®ÿëƒO‹õΰN!c¿áxÆŸ3'Ó®GãVă­èê°Ñ¸’Šºf‡ ™ºt˜ÃÞmq¯Dh7.š•&¹¢ƒÝ=ŠXkÐYŸT'bêV^»"ÆpSLN#ì¶ŸeÜÖÿç|Îç„eZ²«$$nÚâ¶Í˜O³0G„éǶUÜ# »)úwø¹jVïf´7 qn?V—¯u£sÞ)júóã¯Bñ“hÛ4+¦JàSEe¶§â•½C"» M ‰|E{ÆlíæìàaÜí€S5tLÆž Ñ;Ðw¹ŒëYøš‹¼„†ö›}ig·½ü_¥qƒß?þ¶ë-|‰\g*Ù‰O÷ÞÅËg•2joEjÈÑ-ŸàšW¾ßLCì¢íù)GXÓ"Oä^–f{ç'‘.øC4mšÀ°eþJ@>¶®»¾„¹ïØ%| # ¦âãØÎxŠHrä–óQvבT¢óÞ°ogD(Ø™¥hmN¿ù‰óËÐ@7qzùWü'Ú ™`2ºH<]Ç€Ò¬MÛMüº/D‹.K`ªÌ”zr·ØaãEYýfIÃÜC{!ùÔ½è.°ßŽS&j¼ €™@®¾?‚z‚KÔb+)g‚mVÁ8Þ´ûðÖáèaöý›$—vàÞE ½„Üp1ìýlQèú4Í92­€¼ÖæF×I|Xˆž™VK–‚¥úG_Øî·ËÎHil‚o5¹\è̉íÍ馸³ÒÃ)=_¯!sÈöçŒÌšêB:‘ ó{KNÖì©?¢u÷×»¥ÛßTN¯ßvZÞI‡ûàyu~²å;¶¢D°Wü£ƒ…ø7Bx¡ØDäýMlUpÜÚ…k¡qM` çy­d‚‡›Ç­Tësûåug¬Û<\eú¢ø ¯L¹oöl¹RÙ$b‹÷(+w:‡ÂÉņ#ÖÁqœxêX5ï”Q®dׯÓ?ÞÑà m†*ÕÞ1óÍç%&ÿ&—!øV$8£e‡÷0g”œ @üÕf”‰)¡ S1}º8fyg—ý2¢°†ÓÛŽÅiÚ ¬ÓËË)FPq1gñ´e¼’ÔµM2Ã`æô³¶$·íªÕšã½lfæä»ûL@®YÞÍ$…Hîkõ$|ü(ùZ bÄB6æLXé,ë?«Ék¡æm!YIàIðàt¾=5Éí¶í R+Ù„ÈXX5“®ÖTd°ÑÀÕƒnöÌJâ‘M†^Ï®7,0оn’ž”Ê×P'‚Õ_©¯G°+·q€þ,Mb+–éÌÕ |Ö XÈØ§èad,§àñxç“ÿŽMh*LÒýÀ‚²‹™;*jŽ~KM's‘4=k^<ÖÖã§{S>f¶GÓS¯ C0'™+\‚òyeÝB'×Úº zÛøts[QíSè$+x,'¯`Ô¥õ™kºX J3¼¤ñsŒLw&[üû…6£» zÎþ=5ÎáƒÊ¿0 XAqè,v»OÃiÛ¡GI+>uådlì ±™­CRk< ¸A]×—q‹NÑ&oo¯¶õ~”¥~o~>h±á¤,8v²—‰}—»6*L&_f¯=>™„ˆÍød%RuGrQªNÛ§° Õk*®úŽŒå¡µòÂ,ƒî§]7;»[§ß| ×ÜØ^ǨâS8Eí•&|9å²yºoÙÎi·!¥W‰®Ó°”íÞ]‰n Ó¸ CÓeÑY§ ûÁ¢Ê*Kiôà CÎJ6”Š70´¼ËÅ l¹9ÿkÝØ^w~”Gã·p&ƒõ¿ä ¾›<´±jëѶ’\¥©£»j}T¿°Pøù­îñbÀ o"M‹÷«%›ú`D™m‘ìŸhÍÇ-h:œguõ»ØàT9~ÍÆN;%ÃÛB†ÅÓ=â+[™YqSj_ÀÝBá[ª öƒÍ8 îÀ0šÛÀ БϓDÍfU…tÌÄo.yñ»„À³dÒ<ü)-4|.MÆ£j`\»œªnüówuçßÀ:l<‚%HèÄ,E*‹3‘rXúx°Í髯xu{;‘±.Õž<úh"H}ÞÓŽpÇÖ&–‘áXÒxž4EC¼´a¼Í9v˜ .~+ˆ9ß[/6<‡#°³Ý^¸hÊ6ú¨¬<mUN×yÞçxQ–@Ö(aØÅGÝ[H–‹ tq~°ÂP˜ÂfIÝeoõC¿æ‰²Éç­Î§Ð7E¶ÿå¬0Íä„"ú†ö›\hmŒœ¦*™;àj ´nS¢¦r»Ð.ùfT¤9Ôù“£ˆžN,ž3UùùÊWÕÉæ,²/Õöß2ã§uû׌É[V8øô»Õ%"ˆL]ZM¿Ÿbï¡u.cró¶¡}Œ¹mºT«¡#~ÿ.CÃiwê¶c–›«à&ùù‹‡gq”£ûÁ¢ñ÷Þ ˆþ±Õ•”Þ­äÅ[ï”Õ8‘¨­ŽÈ\zs(û" òÎm‹²‡eÿc=ðm.ø jÒ";竃îó{¢Ð/()Õ~óàk‚ãZo8V›·`ÊE ˆF9Û¶cØ+퉱ɴâ?=n/üì”ÓŸ2ù-vw™š¿¨á÷†n1cÝÔsƒ&Ø;mç=ÂÓÞ‹º%KÍGD9Qª"p¤o«K¯óÈUÿxõ›i‰<´Ô”Ù.tQŽ6’:ìšBŠlkÐóÿ\40çó ‰J¶Hö¿°ñ \%7o«#âëÐô/–æ±Ç)š’§ïåY2¯/Ê~iÂæõkͦ¡SyÂÿ°>ÄÞ_°¯p$5~sUûOx®´Â]gÇÖãìÌžr nå$•å’óGë(ø}”FC‡/QKÕk0Õm¯&ejZŽ»½¥»¯Ãû‘; …5ø*jdNkÀ°vœ ßîP·“’'X:†í,Î ÿ —å¡r„ó¡¿£ŽàËML,{^ÏamJjW:t’‰ÚdøE6Û«Ç(ésën;©ç‘È@h,šu„Œ‹ ÉäÎì¾ún«Ò8áfƒ+èžçëW‹ÚÇKh âþ5oîÈÎ21UîGF£ôú›¨îæï C~3.Ôª¸káxeº¦¬X͘l?Áj¢,´öÊOã}”½ò&¬Ö„eØL)‰Yìl$TŠ*Î(Æ7³›‡PNþ9´óù¹ÙeßÁóȹâ­Kºt ÊŽ ¸%ô”àùóéGÇšÖ—Ö¿†7äÀç±§’—raùmÌ0Q}}äLIù»0¸|›Ñs\¾¢r•%+ã³'1š:å=Q`ô[»+EcSjO6"ÙÅ]ŽX‡i=üA<#IkvŸ.XÇÙ‹P•šwé‰:ฟ+»V¬Œ¿›[E¡Y‡þŽ=Ï—¥›ÄË`ïׯK{ûs@$ I£©¹—o×9ÁâNùüÝ$†Îw?  z¿ÊâûXÀö¨‚“çöh=MãA{%õØÇCdsé•ÈO~J‘‡šxÊ¡ðÙåßâ`ƒZžþ†ô7*³Ñ:­g T¼ »5eNý ñî=þI]Ã2Q_ Çþ4µÚ•<³a¿¹K=cû‚m®YÎz~Kþ,°)|@ Ü7~¢Ó6Ø›/„¾fÓe\‡µÜ:e:sÉ™|˜s‡:+þ.äŠp¡ ^]jzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025713607166133031617 xustar0000000000000000115 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare1.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.757788043 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare1.da0000644016037001603700000012216113607166133035066 0ustar00hutter2hutter200000000000000BZh91AY&SYŠÿÊ- £ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà{W¾ÆÒ¾õ{¼‚UT¢*JTB©RB‰ ÈJIQ4ˆU ú0D)Cf©D‘UBR%H£m»qJ¢”‚ RRº»ŽÙ‚T£m Vi¦Ø%ZBª$vm:åR* ÷zò}»lŠ÷6ûzí¥Rª¤ód½{­™{iv÷kb­“—»Jö¨3nìëÞê÷ºæŠƒ•]>ðÎß7ßo>÷Ûïzê÷|ûÞ½=ß}Ÿ}½+ï¾÷¾½µíuÏxûÞ¥ÛÛmu»™ôôNÍ eÝ×»¼ð«ÃŠR×+íƒÞ×­òg¦Zõ»}«îê}›×g½Î§¶úï¾ß{{e}Ø}ðûÞbOckwï.÷sîoSf”z÷›]rÛvõÕow_oWrw¶JêøUU %R½Ç¹ï»Ã*ˆ ƒDÆ“&L'¤14ÉbdÑ '£DÓȆM'hG“j M5?IèL4be1‰é4e= ‰²›LÉ¡¡ˆ4`A¦@Ñ6†PIT@Á0#LŒ…OôM¡Ð˜Ð2$ý LÊfšhbhÈ0††Lši©´4Ði&dÄÂ<  lSÓ&S3S& ŒƒDhÑ“* *“A¦”~O&™ &=hLM4Í!'šS5=#Hy¤Úž¦£6Tý mSÔÞ“L'¡¤ôÕ?SOTý)é š›Ébž›TñOSõ2)ééG²SÁ4Ñ©²i´FУÔýFž§¤ÔÙMT©©í)é£L&Ôb4š?BfTÚž¦5=OMLmL&†)Ù:Ôý¯7S¾™Q®:³&ï(†þ»¶Ê·)±€h·¼ªÜÓv ç&Ûá²ÓͰ¨£œÒ¾uòÿ¤DÏ*õ‹O/g}Ûø¶ß¨JÅÝÁ~nt{Rä±ã|s´wî5Äð/äÚ ¡…~À K-Á ùŒ! `Ì!Z°! ÒH‡n¢C Ʉ٠CddOf$ ß»wñ¾1«P¢ØFà‘Ó¨ufñ^y€]ƒÐùþš ›Ô1Š`oÁ&GLI@‘Ha b]Ÿ18 álÈyÐJB{ (ƒÎdN(!.Z!r(öf˜œcËÃ*X±Ë¸VD?™3,2d劃fìŠÐR…Qƒq íŒ£QõC(ócn7XÕ3)—hŽ\åŠÂŒ8Á¬o!$&%d4@n­˜S/8g"ôí«P×;ʃ`ÃE÷¯ãwCLÕ~ƒ†·pD Új6"fŒ0òJŒï¼zÏ^Éœpñåì«?Ûƒ;$]†°/G3è>Ó@8s¡bá‘9²‚è¾R »+¹F0Pà<”æÈœ2„È¿—Bpʵd[Ï$Ô3 ŠÎ@ ä-m„É (á=Hr­ùœªTœD0(wl„WP¬àH RÉŒ€x`Ñ ¯ÞA¯+FôæLðéMxeË¡S׆þ,™5ˆìÍòŒ†iͪLð å†î¯é”5Ãn‰ïƒA¯4‚z'6Âd}ó³ÀêŠ ÷˜±'å³2 ˜âdÁPÀ&AªN¼8å .bƒ 1ÃjÙéœb¾x$+[ƃÔ;1,fn¯~7 c„Í«”xAÓ¹}&uÂþ2cºë3ß¼ÓÓ¶×=BÕÀ=³û0Îì›qS@!˜˜bwž}ƒT; îñì[¹`CÀ‰\Ž<7A‘«s/þ3êÉÅ·}£—Ü0Á @ïÃÁ{%qcªzÉÈ„Äôs€ƒd àIØpÜ«1†8eq”‰Ø`£rÄÁ{ ‘˜LÙÍsÄÛ&£ç í€åÈÛ6ÛÓbH.X¯2 \,æy< á^-P€ ƒ@炊¥& ¸HjV„êc\KÀ0¬œP:°1 ©4¡b~“Š À†€&Xn^L$ kÓn>±dyËJö0rC~s© pfúÉ‘‡ ë9°&Ð(`K*cMJHÒŸú&È ‰BØ{â¸Î™þŒÃƒ·· “Ñ+ÂuÌàV#]Y‡:º¢2ÚåøÂ4D&0-Vìo +@¢wÍ’Ñp­›@¢lûè}žðÐD)&0â ¸21V׃~OomFs\Y‘߸«¤%;~Wª0£×lJõj jù˜'' òâÅÕÊ–„Ô¨b[Û6¬‡®b¼a\Ói1xÑQà`(-ˆÅ`4Áê›ÁU$­V°–m³PíÔ6E* ü›~ “&È)Ž]é[eÁ EÂÑ)ÌúlT…0€¸ LÀROçÄ“‰h†H×ípU¤à•öıdÈm˜,@ 3ï°Ô›®sOrÂQ¶ˆßV“XÍšÅÓt­ªA˜¬ß]€É7¶£™ ¹9wp¿Mýœ{¸dż°o†Ñõ‰”lÝ F‰nH 7FKÕ =ƒIÛÀ¹ g6W¶î™sd0¾†Ð7¶øöLZ&Àû1B=¥g6¯Íˆ÷„~jpªqìM°¶?Œ˜½ Pà€O€œ¯R͹2[‹bÂaˆgûƒ133&"­˜–<æ‹è—ø6§¸Ð-̘’5 €Ã»¿‘B°¬õà<²a¤ÒÀÖ††Û²¸ 0I3§º¬-ìúX1m°Èœ…ÙŒ<³£4†@:" NIÀƒœ Õ<èI”Æ Âºã‡5¯†Q™`Õ@uÌÄ-.]Õ“»²NeÚ 0éÛBà12jO/¬ƒÚ=Ëù‹{æ‰úm£ù\á•:7öî@JM°Û"F§P®üíK¢É()¹S¤'Å Ó$´˜9V\ÒnÝhN÷çi3%€_X[7¦bg¬y°¤JsÏÚ¿¤J‚ëÊ*á±òm3vÍX©‘Ẻ'ëkJ“°n &JÎëD“.c%B‡†©Z,šá©Œ ÏÜQI9‡4Ìf”ða‡ò›‹¤uƒ‹dÉ:¹2.EÅÁ½+w- Õp,óôX&ç\0Ã’z Ô„7Gƒ`Dï6MƒÈ »µœÛEÞL lœË©*Ÿ]í:bЉHÜ02 ÍC'“/“>@¨´[ÓÒI˜W³/„Å!Ü2‚[ÈÙzžSvÎsPó玭šÍzc°·Â:0 åF¡Ë³@‡0Ð ù‡`ÌhÙªLeU‚ú QdâX ÎÍ“ê¶d€i¿…$e&´†CØ,Š®¡›Z'Ê$™Ä´Yžg¸æh¶g3•@q¾¤ž-øßŰ÷&èQLJ! »pìQ‘Õ°Q7G|R'À^b0©ÅB/¬^èzàb€¬È(gƒ&ÈïAÑ»Št ‹€4!ÐŒ ˜`v9ŸÍíãsþ˜@ϰ7Á²?YP€!Ù?Éë8“™îQkpP.#2ØÌbQz ï’Ø?òÌS £#ÊsO;щzi”SY*Óï°Ù019ߨY7®ÅÔ±`Ì™%)0šæ}ŽF 8bÐ#¨ay8¶~EÀÁ„ ´f–I&ùmË<犌â!rÐáÍ+q†©› >|zbc†E¸ó'ŘúfRñ†vmÆh+D”PÊ•‡ÏÇѬ »“%¼ŽŽ(0þøKf;˜[Gû}ãäg>ãAðfûlZ¨C,ÃßÂY´AwÑdÇÚ3l#km`p¾ ­«Š™k͑ÜéŸ$jÈ5F„÷ 0‡×ÁÑQfU»°>@gÉŽ¬±„ÝUðóT/ U5f (óä“F‚“Éàc(¨É€‚b 2!@'9R 2H(P ©"|cà ™YÔB* úB@Ô7•M„{ÆDò™¼“béEˆ‡Lñƒ@‚É‘=¢aCÔf)3ÐbxkÄÀ3Ž2€àHUœ`B¸ :²4†¨˜¢À°Ód Á9rr„ä øÆN”ºfÈòdŒ °½ˆe"^T9ó«6†ÒLùÒAÊBôŒ"Ì…öÌ7„ ’¬)n@%˜ å @áŸ.{0š¸@(°|Î`Ĥò0 sÅzA ¬Â@/Ã%hK¨À¥d<Æ$´(-½ëx‚éJM £~GØB-r‡õdQB*È8 ægî!F¡Ú„ôl7Æa2¤%0Ö²Œ sP-c¥| s6!Á£0]ƨ ° x=>¥¼–Èмœ‹«D˜YˆH¼ \„¥€zJÀh +ê.Ä€!V!DBèœoipÁ 3ÀS]k¢;âr¼Ñ=·T5¯& ƒ0cT é+h]ˆ@^˘[bRà1#Ôa†7æ‚„…Eë BgH$7g°ÎNäÂB°A|0ì°B;2²sÁÖv¡Ø¸ó^R@èÎ<ñ,@nÞ l­T° “±7ÌȬu'´à¹5©tÃ\ƒ •‹fØKüO¼VZòà´2GjOâg²¶B¹ÆQ1ÜpͰ•ç^‰!2Ä ô=³`ŸEG½Q*ßT‘Eñ„’x¨;2 hœ2eHêBd,¶XW©"¼€gÞ`š¡’-Ð0LÊB pþ_úÙ 3÷„Ìž¹‰=su>"{r>9߉š$$âezW.rǶsMÄ»ÝÔäJãƒàˆoŠº…t'õú D¶KeÿM\›{L\ŒŠ4“†p¢L7Óú›¢dj…õoƒ¤Gí…¸7£‹jFØÛ­†‡ Δ†l™«z²ÈEŒ‚HïÒyªTçÓT=ÚlÇ_‘@˜}6¤‰ƒ¼WêèßFþ¡ðMÖ‰Êa0ïˆR¥lM¹!:C’p/šåLZ—¹ÂÀó©2‡‘Ç! =—ÎÕ €ŸØ¤DI!Z ñc… V å¬À`|M êç$7®ï"}ÇQ«7Üf8 N£¹ ¥' $;fiÐdŠä€ð0ÎÃX%PLAÕ¸wi¡¶²ŸAsaL³,Žs×)û i„¯Ò íÒ‰“ #¯¯-Y#Ęç¬.\¢¶¦ѾȗaÑ+ê Q¼~¦y¯výM2ð)~üäoNðDÂåÍ;2u6D åBp©*T?Þˆ&WÐÐ ˜:²F-³7a¶N`¤‰H`ÌX“Í }F8ј‚@AÄ(“0 Ç©&C¦ Áˆ€¯*Uß;»á-G6âD™Òë­Aƒ(Þ½Ÿ±¯µ³PrÉ"pœ÷$g¹Ý;\A¿$wAÌ8&‰Ië/n gZ¢©@**›Va³olßc}w(4ÍÆßÍ,]Ð?V¸±oã™*›ùÿ’;À˜JK%Ì”ÈO N< å=à€FCôÅé¸NVè“#šw¡€ýèB¸0é„Õ óÊ̆`À+Ç R¢°œ‘ Pï‰ b +ù@Ë6ŒšLÀ(gŽ-Þ ôC€èhµ€Øÿé¦E1Τž3€È7i?=º'óhâ‚»Éêñ‚]È@Ù‰sa‚Ë¡so”» •LèÜ 1„P(–ÞâÆ‰Ç(AÃDþº®nÿaf –%!*8aƒu$æòΦ>%²”H˜žXfOS|nÐzÓ|_Ãq”¯®þ¯p'›bí&6ùD€s@J‡¼sP¨*ƒÆ’WëâAÉ+¦<'¶AЉ~W—IÀW¬Å;5Ì‚ä/ Bb!’t¢IäÔDm¸Ñh½ƒ ÌqaÄ—×–i‰DaY2k"@!0§™&wu—.Àl{!8žß4|~Q9nzË€=¹ìâÜy¢ä™É  \ÄÎ Õ«b•ažŒûÿ4Îh+ýjo»¼{@ž‰rLÆXK}c1|<×ÿûϨ]Žvø*+Î6‚·âëwP €‚¸ƒ»¿;W„dÜHR((HÇ5RD(º„)„¤ a2Z•$ìâ\d:.ˆHÎ9Ç¢+8Öh¾‚T¾BB¦€[7UHJòšÐ`lÈC×’^ž)F­·¤˜mÙ ŠÎ3¨ìÈ)öÕôHC<¦ª–ïîÁyæú‡t.¨S œÙ6¨ÃY¸QžÀƒs1_¢bíø Ú—³QÑ Á¹±3ÛÝö8îêš¾%@=¯vÊ3›`.‡Â]<û<±P™“EáÒ”ErÎ;;M]'îA… ÉRïþ̯>yøGHÝœ˜ìþrX]yù14ú¿#&åTo§ìl›1å²…èqc‚a a‘…Ò°ÈžD²+ˆ*’ ‚‘Ï?…ñŸÜS:G”œC'ÕwŒ•öš€BL$PȘq·>Á=Áµ“´$Baëdé$£(«!R¢U&$'X²gaƒ¦{†(½zñ¿‚@ÂL<˜SÒ=‰3Sxưê7sŸÚ·òÞ'Àx8À?Êu!œ®|Ք iº³ˆPªºóU!(À³Èî[¸ÿ‡®àÂN™Yþ5¤?E9 ×/âWïc •ƒFsBóaׇ¾4€â÷A`3 ÐÁPùþËf˜u!VôC`oƒH ÀUÄH,¯ÌáÍþ(ººâš Âäãx¦”æ‘æÖ z³BÑ%é° €€ê4Œ©-dY÷C ¥o`Y{ÐŽÜx-Z.aªaƒaØ PƒÄØÉ} $"OPp:d‚€_b• ‘ÔíÍ–2”²ˆ7ä!6P¬0ªÄXEA"U݇’9ņʜ[":MZ'@(üÀÞŒY˜». Œ(Y Ý‹ ÁT¤3*H dLšg5ÄâG–T  Ɔ„:Ĥù"S …b± €•5Bð‡*:£ý ›Á Äà eˆ²ëЬ„ºb¹c±n‰B4¸}u)Áðb¶¦1ß!n OoÇT7!M…]ôuäO/eÃQ¨êÖ`1¥`øÊ-ËÞ²~#•mJF`&)Ë6t8®=.d Dë·›6Åσޕ£~¥µ.ƒù°¬ ©@4æIÏÑ&°„IÔJ“È;¸Z03ÁŽ A3g`îIÔuæ@“…üÉ 9x‡ñ`Ý C–õzšãbsõ¡V7$aø” ?§-I0a휥J æ™5(†ˆI5¡oÒ„Æa  ]ã„o(K¶(µQ¬Eé þßu˜{~þÍ“Ò[ îo³?€OëM®ÿ ¨6væÊ¡ätŸÎ°÷žNо8–Íå–ȼÂ×ú1 ð˜â‹« Ϧג`Bà!¯@Í(@ÁÈ? nQ(?GE¤¦mŽí™jïº «P’Î$þ€“ÐŽpNñœMPCÙVBqmn½˜mâÞŽã‚P,Q±BÉ¢öUÆn¼øŽÀô|9žiôû«rßAësv#Låû|dÎ77û‹“á-d›YÜLR5l€+Rï?Õ3Æ^€~­þ:Û(ëÿ'©ºÿÚð¦pmÚ3›%õŸoÀœQ©lT §þìŒ@Q yP<åm±n'* TÖqšõ&( w›¾ÿ $Oœéüü{OÜŠÄYg§à¦ùe—ÿ¬‰f¾ïĬ_\]õw"ì÷uR ÊÀ„Á%ÔÐB†¦ù3XCø%eçoú¾¼zZ§±áuÅ7}AüŽ ]TØ´Ãø]‚„öd*$›‘9†C“þŠ_>©Ã3š¯3ó7Éö%séèõý=7ͯ„ feò®<¹LýîjiàdÐDþoì‹m_.»É³r7&¬Ð@Ò@¾ê`èXosÁÍ 1«ä6m"Úxøs5׊ž·ìÞµfÆ|ŸÞ°õUi ùä~wýX®@×klÌ]¡wlt-{þŒ ü78ÌœbJ&‹btC8½ƒA;%‡å&B¶ON(Ñ`õ§Eº¿™1`L7S$‡æxÓz|øïð9&ÑsOxß›W¹kÛ‰û_úèØþ—?;ºsoýmFØò¨Þ–¸d(oÈ>ãPH÷’ Ÿp¢V'RÀ.@³ .¾AàÆœ/@X6-%aQ Ra˜« Ò´pŽžA&A` ôË`BÀ,Cöœ Uò âZ•›è–(ÕKù`¾ó ôhD/„™2I²`& bNÌA=JDÁw 7#‰©Ó¬ä2íc¶(„‡tÀÀ\5Jä‘ 1à|Js0ز ?=6M&ó~š!VÒz#›/¤ÈAóyº«öô\J´ÛRä0튾À@wž˜Ö¶uºòŽ’™ÿµÛ£ÙÛô:éùx3â^>è%¿‡ëâ7ÝBë stÃc‘¦ƒ1 ð_Ø9ÿÄJ¶D œR¢†´{v!Tw õ§é¬PѵJ?á¦÷ƒ™@ÅýÝ]1((~øQÛ^Ä™>«fó×iÝ;NƒqùTÙUƒ'ô—3’æý:×óøŒkª-ª½gëDÙðOyÿmÂ{5Hâ P±xäß·ÓÓ;-åzk8‚ ÒN‹èä•ǘr¸î£ÇCz&åÞM½ˆ3(Ó Ê!‘pˆ>x•½!WbƒÄDÅ bI$áƈ jÌW‚HOèc„1f±BÅ1Jð€ Ð+B´N|z64t 7Ía8ù6äõC¹¨wCïQ z¨_ ‹Ñ.¤z1ÑášãÄüƒÝ bì-N¿mg5Ë;/óA¡äÎgÿxdíH`!h š×KìËÙ A›æìsÞÿŸ§ÞðîÆœÉêPgþ¼ùæÊGjê^çÞ¥CS£ðÙµ†5åÆèˆfCéHCk>;í Ûœ"yÒ´Ô­=k£2&Fr Uùê\N1ak`¦µB²²Ð§±˜'7Ž^’’6$tÔýìg†`8JÔ÷ƒó½Ÿ7Gp‚“·ÖÌÚu¶íz¢  Ž%¨BfÔPµ”‘¨ ûêœðÅ„tŽ fkÄ@šV ã£Vì`1lÁDóxhƒs¼‚ÄR‚ü‡¼5‡"Tˆ?•†cjúOdÈwƒ^ÿ†ÑîÞáóÛû§m\»3¹k˜Ñ< Á= :—ù¸7Êy—b:â\ËÉ>bvçï#lèaø.Üa™`àg>ˆHýáøƒAÜ8„±x"v;\Ö´™!ä=ãí9)ˆUj%-SxpÖè1aP‰ìÀd'aôà6Œ€‚'dH‚ŠL_‹ê' %R¡˜aíÓnzƒ@¨CPl™$05%0ûšÕ½³(Ô¼™˜àVïG$ßÚ‚C 0èÙ &ñ➸+ݳ sç4!3T—RN$·(†ðÒz©tÎÅ¿›g`[3î<°C;wÚýÇ$Ð+†xSIo¤šdÀ¸&ìûïZ~ú$C@/"gB¬¦…k~‚˜ʧÀ8üÏžëYÞßÊgNe¸BļbNÅšÕw*¸×Áf5êï'ˆ_Ž”w€|…Ù[s”fE¯ð<È+ÕêZ.Þ¼)+VC8àÔgT3?h2nq'ƒqãÁ³²g&jÊ-K“¼9Iž´ÝŸíÞืzÀÓ4lð&ô?i¦ø¬3ö‹@`…!­a’R1ãìÒh?é±~’QÍ”hÞh„=Æä“Í<0I/ÅÛÁµ›@Ì¡ZÌ·ÃÇä ±°uGJ®m²h¸„&a- Z‡,Âÿv™¿C¿¨Q1A˜g8ÐMKñÁ~:Ö©úΜžíTÄU´q¿‰0ï›+ϾçŠ|$9HÜÄü)Æ^£Ûz±ff€æåqb•6dš"b™æð,ÿósrçhlÌ“f\ RâßNvÈ6GQzŠô[àüwó”7p_Íiæ…@)¨EGb jÕ’„ÆÀ»ÌÙ‚€[òȲcU#Ñ‚‚!èïžo庞CD2­© w/fÜ€Ó5õ$‰ðU9ÅspŽª B±D)D1‘ (VP±k¡ @Ä,B¡!û?>Tð[—hø­[Ëw=æ#äâ°'bcß À\Õb³dˆ']¬*ï ,9ò&E7µ¤þ[ú©ÔÄh¥ r€!‡ÀXH©gP Œ™Æ–÷ØH‚`¼ò}çqeR«‘jÇ¡«;Œt´º°û¸â¨ q£ýDÙÎCÏÓÓpzS;åðo¯¥\¸¤ÿ> ¾YÛU^Ö¼î1Ç¢ë{Ó ¥T“D¨‡L8Þ³ÓãáI¤‘20à"È{ÄOP5`1L)–¯j¯Ý渱)ªßš „:Fyã'À¿>›‘µ¾¬ƒºæxÞâÀwcÙ¿Õ®2£V3ú±Å2RÍ–X§ï»ð[oc”à˜Â)'Ðfƒ³a `OÉ:¢ƒŽ!ƒ¢pL‘?¾ABJ – +$UÍ+¿ JöÅ Á:¥Øuføs®y^lM“Ó”Û.åÌ[‚(½Ëç;Êq'¨f” z“n œÚ·ñ $d ‚j^1ó)A·B Ã´!¦C@{ç ffvä2|†3¿#!¬i”ìšF³tÐkÚ à°ÓlÚn¿Ã ! Mì>;ÄyŽ+†`ÚúrAúMÓU Î"SŲ]€™¡µ\îÏ ÿÐwŽm½»TâaJ€><:F“ºŸV„ý.dC+L~LåùâîzaË«»n'ö¯¶œÆÖ"qðßÜÙ;¦}×a3lÒ9<牛V8ÂrŒ÷ÎV“‰-M›\öe‘‡såç?Õé¬O®3Ã.[Ghðo2º•Að©dâ¢ñR/ªÊ‚W¸t,ÉÜE¶4U²lÇl³#¬Ôv5‹BÂ̺#bÎTÁ•à* Õ¶PVÿÔLQ²F@r@"{C·Ú½;²xÖãØ£á ä!¹šƒ±mU{u’zn¡*v½ k¹ßªXM•EÁJΕ7?üFä`ŒÚ7!ľþ¹Á Ý‘ï2tÜCPcœ%ÍÐÙÙµ Þ‰©!ãGŒ;Ñ*¶!AB¥7]HcûR¬âƒDBy")€ çÉÏŽÀÓ&@O„ 9Õ¨C¹Wh͸>À>tªøÉÀgOÎþùh5#œa®׎s“ƒö˜[FâݸBG”%xÁ‡AΕíj¶e“¦(‰9IœÖø“¨z—„áY›Á06faWà|PÅ·örqâ>KO @3äëÎgo´ ‘`=}ÿª©_8ÛªÇé 6€¼ poFgÒˆq\W€0±®Ú?Z?í]?zŽFV9+Ilå™qèŽThCjmAb9×Ô>,CEí˜Õ©x¡§H·µ³|ªÑ>€¢¡¡Ód¶»2£Æ¢Vi†^óO”È–…<‡á½6ZUã9¢W¶&iìp¢p¾”©m«ïçàl/´E[ª®wI`#'š… 4HF2J §@yö:’ì‡ß!G°é߯ø| Ôa¿>›®ÊÈMÈŒÄ2ît}ÜÂl˜1§UÌ+¥'!³ •W¼Êxú,·ê÷Äis®Xƒú6.9°}Üž瘫´Åþ+b•x^R˜œ~K½{iÐ[ÙñÃ8[•Õ˜#×k”;7¥*8Ÿµõ•™«oÇLÌ_gCˆaOÇÖ Öz¸û.lO[lc 'ŒÂ›žS‡ïº»b”ÀÂæ¸j(WûÿëŽ@)_4¦D™Ké 'jHA)8œë90—Dñl™-S¤DèÐ ¹À4WUMÿ·íù;‘ô»óŽøÃŸ Þ,R^‹TäsE¯T99ˆ†T|œú÷¬PD fP+ιâñ<ç-HmSà™Wjæ °ˆG× à/« `Àr˜tvú ƒÂúö6±tÙã Ô‡ô$À|¦³pÝ`& üšµs˜·‹ø×ëä»Oû…Zl0VŒ:¬à8éÁoGœb°zîì A‡Øõ7 ¦Z‰e›X+´2¨p&}Lš«å-w÷øî×¾ •dÆ{TåJévcòÞ_©É·‰G‘—Æ .„8 #¨c,Ü"aØd0IY30óƒnuïèt$4@¤ÒBL(bZm@@'´‹ÀœWÁ$)/ÔÌyQI’(Ní†eñ7žÁ„7Jô"hÌÃÈçúÜ«t"O¦Í+M­‰²§f¯žÎ'‘«Å]¹}Y ZŸ£wò«nÓ(™pÇÍÇaÑ {T£_ŽOûêù2áÁ|¾´Î= X—g\‹Îúd ‘¬ HÈD„’B’BH‚úT$Aán“"Ä‹AÕ”˜H)™çZ?¨=R¡¨ €Â"À1ÊW¹EêÂ,ÊF‰ìI+½òŒ!dR © ‡TÖ,^”+Ê• Ï’úoØbJÅvš3ðúì3õœW\'<"‘\&ä…ÀÆï‹“¦û¾Ý‹þ5¨bÁ]¹Î7—"e e9å1{ƒJe7röX㱜t:JBpŸ RÂÀ¹1;N¹DŸY3áB6ºI ß褠q¿’Aí¯öá}7G´ñq³m8±.·:¡ÊÀ«û¤ÀŠ€a€‡\ÛI|HÜ8sÞß¶>k‘Ê»jb|ñŒïd£áàþÏIµ{Þ}¹1òÏÔŸî#Y‚¾1 ˜†ÄâŸGQEé’ÙÏö==}ß¿¾ØÿB5…¹$À [‡xÈl"´‡µd­ÑÐÚ€t-5|WÝc’3ŽJüÀOÈcÉKË(hU˜®pm@ä,ôGD©ˆ© ›‘râ_†AFöi‰EÔž;£zSHýñîwç´{+ QO+,±lIM'4R|q!õFP B÷˜Å7—UM:¼`Í”2ü‡§ÔhÎÛ¾ã2F={ºá?ÏU÷½§Œ¤áõ}_“áÜmôvk ƒ©PÒX£µs‚Z¨é dÝfrš{£œª ½1ÎÈÕÎŽÃ)`gø¯¶rØß/-É`°¢àõ•<ÙᘠÍT}ðtG ¢fæjØú9(ÈÜ8’…"¢äŒy¬ådQ‘,}a>—„©ï•ÁpýcÆFƒQ\#|ÈÒ­|—ÛÐÉ´b­“®´¥÷!Ý7–ÜŠh´§$¼Í§ÝûßgÅø=ßO§¼õí£ƒ0n±SÌfÑ:;ëîúqù|®½÷à cz<ɵSè÷[‹I0£¬KDìF$òEÿÛóò­øñ™÷˜}$hóœEééûI‚TÁ>¢æ)Ù™À(%ÒC mÚæAE B`ɉáHòšE;¿Uöe¥Ê‰M©÷E÷ sšd…€.NžQs=€Î–ˆÕ2ËŽ‘°L ¢ý0ÍûÒüZ ^ìÚ?V; Ù«@æÃn0+p /wËvfz6å“ßÙ!Ûò|Ï‹^Qj¹£¸³³¦ÙéÞ®˜¨<~Å]KQ‹ý™'Ì›R ‘îwfêU’ËL›@j­QrEÊ |@¶©Ù§‹a¸àˆ{$>Ó{A Êi2þlHØfëR®„Ý çG—|Lƒ× `Åppq9ñ0oþðï¡Ýb±0@>~²Yvô óÝh_Å/²Ù®Ù“À*zfÔÏ —ZÝôÝŒr‹mM¦3ÞI€tZj':A§z`ʨ`¡òJ ÷tRüÎS<”a ’:†Ùà˜NE¡íe»9¤Mü)<©\K´Àð^5¤f{ã @¼Ž_ÕTŒÊÏcHf"k>á§Žd(å)êõ^+†2*8è˯áS˜üPjX^/ .¿Ð&Nœ$ÿÃp#Á JóÉ,áÎIنݑÙSÁJíeâ,Ø7œbñ]DXÓpeP&ÅŸ ÐxY‚›—vÿäú4˜«SÆÙ˜À{]C£Só’<÷FyúÚh/IÓßÂoÚÞ[x¾ °¨ú¤£ˆ;2×ÜÃup{#1a"¸Äü{Òtøw¼&Y}÷¯ºWÄ0?¯21üÌ‹k6¡Ô`M ù> à9£fSŒ âÝH"C"б!Ä7ÁâZ›Ÿ)ˆN‘g¶Àþ=ð¶|5I_ÉߨöÔÒÔ_ö[Mì¡¿ÌÝí"÷ÊP$–é퀧ÕwGð)ÕéWmq N„ðçh‚Ø áAšL §¹¬²©sçº-¸v^QAª™>„võw íExƒ–tZheüäœI¨ bëv9×ð£í ¹Ö/*v†=¼C ,ûÃÅ–Åq@[3A¯à‘ðælZmÃ@ a;Ó0/ÊsŽ›}ÖFQsÜgµ& êÀ˜¬'Ù»÷œ>!nT|UdR»ÝLŸš;ßZ_a¾[ë;ZÂX‡M}ê¾Á²í·ñ¸4{­‹€kÙ"}×Àf èã\!jgÀ¶…{Ù±(ïrl¦}áàáë;î§lV©º|0¼’]X©a,^ìö"ó7ıˆ†íuYîü¬e–™5vŸlí8‘Ú‘9G:7 Udþ÷«dd‚ób%P %ƒoRdyVqùP|AüíÆLå7z·*ÙýÍÑšÜNÕ¶˜e`ñ:ØLu¤¹NíSz6ÝØ1{¾ë˜§˜¥ÐÔ‚ÂÑŸÈØ7@†Né‘ÚZ’w8ÇÃ1×°”^£³n7|+¹\± ºÎQªöœÖ¶`}­Œæ;kšíI̵c=t’r‘ÍÎþòƒMòø©QÅ$DìI,ì.nbdLÈADJ€’ô0ö®ÜjpÕ™šd¢‰Ûù(HÈBERz×·åÙÉÅϼt™9%|Þ}6EÉÇü‰Pã^éÿ¹:á7·_áøÝ·\ù¹[‰»ðë]Ï@p’ tKÿ|0s{¯ÉÍ)R]\ûå76©¡ëä¶viÓ+»ýŽó(:T/ðh\ÿow³i4Ú+Mêh¹œ{"¸„ù»ÿŸQYAï·’|#á¹SÝÔ=ÖD“η¹3^{æ'jºþãN&gL'x£Žt#šhÉÈàÇŸcìÇIÀê°/Îyô)«þ8gUµð-nåX4!ÞÕÅC詚Ó×1o¬sýÿ þo~I µð@@# ÜvDv9çÁò®Û{ËQ;Û³Š›¨F-5}U"OqƦuWå–»W[CÕ€v®‚Þ¥«]óÛ´q@¦Ö®9ÈpºÇ·¶,G ˆªð§YF ˆ£"îC A¯UÁH»bˆذÖ¥ƒTèÌT<+¡Ì ¦9Ï uš'%¶=³R>AžBE‚÷¦eA›T1€÷ÏžUd·Ö}Û“ÓÍBl[žæa‚ŠÞG0oZmgKxV,®,& ‚¿ÒOÖ%“½ýO’µ¸šŸ{ûñiUÐXz žó× ]7?¿§uëëh§Ý'ouc"ëQPÉ_DÍù’¾Yày‚Y•Ýd ðîq àÃ:Ôa÷Çõ+‚¸¨ä NI¨Øt˜üO£¼3Çþt âTy¢Ø¶¬'©$ôpÙOx¶Ÿ)‚Úÿ­«8{E«þ¿YÌâ9K öõU ›W®œL@òÅï}C¢ }b_ÆÝµÐEÌÿ«@•žy²Ö„•Âãt­è>œ|.ɯå >ltŒî¾¡d& ®Rt¼9 +KϦãûyÉÒ¸B¦´‹œú¥¢N 2a(-½áå.Døœö?ö®Œ<4JO„›fP?©Ã?´@+89p€ˆyð!FAö¹m©8R -@Ò›“ ʉ9-ωÖ—Lá l†š°}€êÿµ2­øvJ87¢aÂ8;` Ã¯ù›™î`GÝruèa ­wO¡ÔÑL£2g}Õ?= DÜmí|핎3œ7°“¾H^Ø3wÔ@Oäê/mˆ£5{·Àøl͹kǘ>€#¥l—1¡f¡Ÿ5YÁfó´JµèPh"ò“ç÷º¢ý²Ñ%°B¨"Ø“x>òÂÄýß^¥=kÆl_CšÞƒ„ÅUi¾ì¸uù'ú¼ûuAûÊœü¯Œ32d­J7'jƒÿ‹Ò‰†ÂV%#Ñ¢¿¿Ég¨ú…Á^ÀC¨ÀÕdÌÃÜ3ÈDö‹P¡E]@’©&R<2 bQ°Ã §Q™™[Gê ƒ38ùƒD¤)§gP:¡†ˆÍ{&jŹ íѰ"Ôg3TC›¨-ÌÍІ‘Eªz…{b4‰ì„ ã†DÀCúHoAÖÉÌ´ ,(´È_–¾+3X%ÄM§ÔT·â°+Cƒù€PM+~hFÿ9ìÈ´ØA$BÑ„Wí²é…ñ Ðþ˜ÉCäÁ‰­™>x ï%¥ãQV`j ¡`@ëë#!C“¯Kd4ˆœ‚¶ IDÛÀ†«-D¯sUÃ7!XÀ“Ú¡ýÈ ª»–„•Ë£ppg&¤+ðŠ즊š•´[¾F‹¥Úí8áÐ{í:ŽOÓ8þƵêÿ¹¸bÅ(DXšJ“ßòd#1ÊWDâ JqZ,‘øhÓi6£U@üàBŒö £ çîOXx£EÿÈkUGRˆØõúí9$WUPòÖ€9wcȺ…ù@Aßxf¼2Œ·…Îap„6·|/]E{n¶¥©hpÂatg6¥ 8¦¹|ˆ %[ÑwÏäð?Ÿ6UÕ(=·XA‡dþǓש‡ØmÉ»bÍÇI¼°vC•î¿zòÖCáÇ_ÈÈQs·WºÖ‘]^6^)¡VÉqµ)ý7q2Ëí°i õùÝ»‚ù††ý9í-˜ÄÃhÄšØæðŠñðø]µžÅY=K%eúî>N&íâéTüZ&ôí¾L>Õ2ت¾ñÜöήÞi/ŒÌzR¼gEòc¿õ¨¡Øù¹ˆ*{P0bó6{·¾s”4­kyÜ¿¨HAF Â9L¨â‘½—ÞáXœImC+R0@SãÉZ @”žeqw”O³šÑã¸öD9 £Å‰8¿Ý…ƒzm AÍf-“¤Ù¹Ùqyÿ6›Æ¼Úæí}›ºµÆó-Vô7–¬ÈB·ˆK¸Ã|$ÝŸ&q>g½‘w;üï&™ 9«–Ù2‹’…W`My½œ±|)è Tøq7jQX9;«™ú÷7‹ØŸÓQ¡O idô%Õɪ,¡ï…ŒZÇDÜn8£eÔãzŠÀŒ›+¿Üùv•€W, ›Ï=­@½B´ûþÞ@ùp½‡Ð>Ì›†mÎ…€ß‰Ó«Â{€ø:6:û¦•ZѽžÚݹç«êµT‹ÑûÇtÂjf§’ +HI²›]uß „% Øñx×ggÁHº˜£Z²\8’·Á?·ν@šD¶"(Ë0>¦QÂÜ3!ƒ>ù*Å3»íòêù3Öþ,‹0¾T®’sa!`š14¹—ùQÐð=ˆ˜s»'¤WöYiÚâ]I±xôÑr‚Â% «Ïðû‹t/É8… #_^"”³¹(uªáÖŠc§6[6C'Ø(—A `°ê-otyê·òøÎñÔCQT!º°½BðÊvV€û~^mõ`aáqà}°Ù‡Å ï.×nÚøã' ëVÙ±ÿLifž¼‰Í‰ñ6Ý m=ߌô?©" qlÌ0eÃP$ßv÷d1Úæ›Êèß Êy@0UîŠ Å¤²#¬G6>€O ¡€ Pì™5˜·ÎV½îÄÕú—&·#D‘#½Rz Üµ & ÏWŸÅ#œïÖÂ33˜“'ÀrrÔ#âQKæhÚB6Z.^ü´\®FåÑcbéÄÛ%,À³PÚl—ó ß–¬™ .g¢¯fòì Û æ@ºÚgD{f*ø«wx0?̼GZ|n8ï6žÓjPèK»ŠdöáiÛ³¾fCñx#|x-ßÌ7† ôçÄçëÙ{4ž$µ:›ƒg·À!Ç|W§Ððº¨]µÐõge¡yoCóx+Y[ðÔšŒ”†ß§“¨! q@oVáQÇC|Úm†³ã2’Ž@gbãqbý$þþ“:üŽšçñÚÔç-‰x¦±g_ÍkDüí™Ëÿ/ë|;¶¢Ûì1>Áçi ¹~ ïH#ûŒû•3à4HŒÁ¦•ãß?Fw]£ 1Ä@d§Ð*à7úóÈ1wˆ{,Ô&J¢¾4ùh’VGEl¸|(Ù~œ~tëš~ œRˆz¡bažZ´õ©pùÿ[Юšˆjª½™˜øYmÆbЀt|‰¢SpXÚ»dn‘f¸êppü¼«¥“<7‹IŒœî®lÂ>ƒâ Sú4è$Á’A–Œ‹áÏom¶K/[ò¹=x» Ñ“rî8ÂÞ4`aú†z—fÉ`ÜÛE 8ç`™™†Õ“$‚!©y·ÞÝiq,åøóÄ&ºÔ·ÒÇ€’’†->ÂÝ›pZ‡HÎÂp)_T~&·„ÑÌ'§Å}T+˜:}\Œ8ª—bpÚáUèß· ànþµeˆACIÙ%0GPºYæc´côî|Î š9åíb¿1Ë%ÛÍðeë½Îvö¿h °n¥I»9füÐ’…é‚KÚTð¼æ´jxÈ; Ù^<<h0ODL˜0<`=4ÀcÇ>¨èÀ¯¸ ˜ÁÂ&Lˆ‘0óˆÈ UfX´lE†s27v‚%A†T •êŽF€L£ìŒ?¡ƒ®Šã(§e!7NzÌ«³»,wªC“+`Ìûœjû¦<PŒ©‡Š›K%\³Ý¢"ÞÙˆ Ž.Ï š ‘¹À€X `X†àu£ÝÈ{gÔrå˜àãÏ•ã[ë¶w œ›„M«/„÷°nF‘!Å8.'rl޾I¤aO¡ÛÙx óÕ­¬]aÆw,)À†Wì£*Xë+­''ÌÎzrÓ Æý¼¤A”+ÅôõÃù7§×v?›L{ha1S•v·Æfƒ¢‡üo±¼ ÎF°•«ßß“¢J ¸)š[O𠥿èߎ<§ªBLÀ·Ç¶?zC$ýˆ¹ëñ¬hµDB ;¼ˆOèÃÏ[âØ£ÎOùð–ÛË^-%Ž7ç¼wo•8`€ÊPø‘Ì7¦9 ÍZ^ˆ´Àn(Í©"ú˜‚;ºJ˜@Üç;'BïÐ?¶ºˆ¨ªèS—µÞ]„e3`"×>ó®dÞ’¸‘H=°ß’xÜ0ÏST&t¤­²V¨€èXf 4x/ÚJüŸì•fËq0ä„èð<$cO¸+=5"Ûw{'Ô Óüº¶èRs&’„þ™•úw«•ü%”¬}doÒXA°,@9LW‡l EÎ`±K*´ì^¹ô„Ƥ~ì‡yZ_Cá¹iÜRXúÕE1X0¤¯_˜PaÛñ Ö(Xˆ™” €x +ÉjTLX©P$ê À˜>2¬Dø§>W/~fgßÉ·2GA& /‡.ë2)Ü•Ðsøÿ€· `v†¹ât\Mcû•|Ùî-ð¤†Iô©š=@Zu¿f)GYñõlxÝ«[êlüxu,}y½¼P‰*¦I‚ø×98˜Ä ³h½[Öº;È©»,d9JHÏâG©Å2[‹ƒVs˜:Ç{Z7Þ¯·ø5ãŠßÃàÑUêO&³¸Õ]{N0õˆ‡t•õ -âd„©1 ‡lΜKcó€yÞË9…¦ÌÑÛêüsæîÏ5òg_Rƒ&°Ò bq€b‡­J$ ÌΦy)^c0DpV’aç™*\_£ù)ĶlkسY§| ¹,Kœ[йT+g9;a|ZNW )‚IX(@B;”ï@ïÎ=·;CFpR¥S}5½0;2;ØëëäZòþ¨]רÐ4yý!Ã"ÐrŒ>Î7äª.V¢®¼Ê€Èö¥‘$6!¬0½|Õ$Ô,±æ‡u ÓðØê^Žaýíz³U±šW”i9‘ÞJý*°-«dþÁðZóÿYeéw¾R_†*Ø<_l xBœž÷ÌÏÓÞ²×K¦Þ<žk5&=CJÝŽúÜ&'9³pï±2¨»½uX‰¹Ü¿›Â¶Ç*s¼àÏ>¹’§£gg´UUÝ‚,Ebl¶Ä‰ÊÊFr~޲¼r‘ì«#' !ÌÇØîïî×¾¹šÎ˶ýYZ¸·´p-mxÛ"ëŠ,w`i8‚ØÊ‹:ž¢¡T^"©©P€&R¸öWÔÛ¥Î#|0”hÁJ[ѱ•Ú?Ä.mYך*Fð!>Óµ/$†Xv)ƒúÝÍ¡¶;ŸîêÛ3¾,øè¤z6 VÄÛ}ƒzû„ n€^ÍÝ¿@Ñ.Š ñÙî®_®éÝŠÅ0¸! °>ã~w—‡ðýŸRÙ(l (¯v!*…`Ø`[¶áúÕˆô*ð#Ó•A¬_ûâ9O®4l­¶Hµ õàÚa\Tñ—”°#B ÉE=ÕØÇöÑË„X.V±ÿÍi€ã äçFo Ö®¬ hÞ—y="¡ ëŒD€å*‡åÃMÕ©¸UÚ¯OãÜa.}Ï7þZáìGÄ6ãÌŽÙ‚Ap‡¼Ñ$O'! Q=CÝ4 SSÀ¢†¹GP\3¶m |¡{·öõ²c5™.Ôo}}xV„€¼ 5|?kµ’a™âË- €=Ǫ8—f暥™Û~ÌA9_}°;E „ÉÍ¿±Èuåæü~–#)ê½9äºÀ9?:øhL@˜ü£L‘1<Ë¢pdà P F*aʺ(Cü‘ ßÃüÀœâ˜S )"nÅ!¡á^ß×ËóîF©a÷p^ؓĴ- áíjÜKîb!7Рè—ÑfÀšLLíËŸšˆÖs,‚‰ ”cœ èKrÈùËüQ:æã­ÊáßSÙW.†Ô ¥,Q$$Ð?ˆ!w3 D„Ô:à J9˜&ß4×Á¨ƒ;‚Dž¶°gº…d¨êËpî¨jI]Û®ZÄ[Sƒ²Køž’8ºHš1§Ö'j¼‘q[2,¯Za3ÀÕRaŒaßæ: ÐÀ×KðÊÏø÷þ>©T°÷ö-$5%\áNäKkƒðTׯœ$ÐÛú°¼Æ›5RAÀÝ/™žï¡áQ/Ih$„Å¢}üšç|Á¤wkqDû<§A¿a¹Íû~sÛ ?ƒ©øvžSçpF1> s{õw.uWˆ$ Ù*D|­èª˜¹6£¸2:’Búùuª¨Œ¨[N|âtPÝÈ5ì ¤´t·lïÈÔmrþ`ÊÜ1PDO3Éý.¥fµ æ\»…PQ°²¤˜à}§Ÿ­%¶‡úð‚,œ.±·Šó×–´EÞ'ÕšfÄvA…:Á.Séh3ÅNãpŽ €g\u6–[ÿÁ œÖçP°"„`-ä’´¼*ÎÛQ|ö¤ƒ;Ƽj7ä ó-ãkk‹;K'øy¢Ú˜‡ÙIû[Ú³CäÖràቂFGËg@¹MW¯n(Ú³pZB¿YÇ´®±¦CÇo}…¹dgÙ™´û•;N`¸¿‰×WyNtÚ¬úûÊd®tÅTÏ@>!*ÎR«gK1”ü@ÍœŒøYøõz{Gœ–F¦Ez¬²B­æô”Ù˯ W(x|ÎïoKÙƒZßz5Ìì¯[W Q&¡¨5\…oZŸ09êG,ʇHVt³)(cžbWÓìý\T•*©X,ÁÎø¾7oÓ×>zæoË;VUÏÃ$~kÕgˆ¥ŠYŸ¿Çœ ,òÅ©å¶ìyÔ=a:.,… ¤m#BUçÊCšÕ›à¨ºŒP†. Öý¨ýÄÁ®Þú"£³³€°ü=33÷Pöäð¤F#“D*žy«ó)-|'*1MÉçhžo—íôNæÅéx‡ÁÞµc“!¢u W±„êMir±v/D2å¬NŽ# QP0,#Er¸˜÷ôÜqiÒ[Î’]úf…uûM( 챦Ýó@¤3tÁJêØ* 3{¨á#\Ó¦ÏríÉ”®ýŸ¥c >—^âCÔ™V7$ë«Æ Ìè-9¦¢wýä~nÇúë³Bø4Éz!.-­§‰Ó¥I4=©FQ½¹¨šVï{uˬÚ#ݤ?ÉÐãî¸ È¨9Ò¸Éó¾- Œºj…+ ÚVR$Îð“]oýÁýàbSÅÌ%é§Û׎º=¢G«&$?Î;æ,*̉“…35ã¬b/ôÌs»ÄÁWæ{ÐåŽê¤ñ›A§UcËX©LF¡é ÔŽ¶j,éH¬c&x³ŸTb!ÕâcÍÙ*'4¸€,(†‡Ïvø£2ÓÃÅÄ „Ÿ}á£ýUsöSšRk=ºòUuvêʎ՚Ǽ\ZæðJŸ la4xÄøº0¢¾É©.-2éc{¿_„›¦6Ùµ@•Tð˜Ù¹¤¢M.T„Oª;ù1ß/®BÜôéÅ·œa<äcé¥Pf±O _l )þ=Fµ½ÊÏ¥bÌá£6¥ÜÖ Ð>Eüü"r.Ó긵\Ó.öví8ŽMõ{ð?k—…Ó÷ç*®ÏŸg(¶yRüÊI #zhKÀƒçþ‘úÏ_F·Ò>ú§F»xnÅCœ2cÎŽÎ!ã-ª"¡ >ŽáLe‹ƒèÀ²ðN¼Ÿ$N|_ÏÒy`/¢ïžC·~ŸÌ1Ú£*éës$˜ÙŽ“÷:¿ÉRŸ -Ï‚ö∓jo?{Ït-ë)°6…"÷Ï­•¿ø|Ã%Ó]Œ>CJlæž *ñøÇBv,_,¹º­ÿvÅSRq; °©ÅzÜžg±ëU“ùR$†KF¼‚Ð0AúïLçKî°] °‚¬qWEy–ÌËÿœß Äò™]œ‚ß?C«tj6̼¹Î…ºM4Î<´zš·_'ÐQœ¿í¶Ö«Ùòkﮆcß°.’tµU#½L??ò¬vvÌø¼|­À¶WN¨€µÿ’кŽçòuŒ ^t¦|Ý™¡º]-ebÊŽ}WBz€ÜU&g"¥DÇN¤à$¹&cø¥Y{•¯\X»×µ!mC–?g†åd“hLä\×Ë)&Ëÿç ç-…q¦w•dY"g:}Hwõhøøái´âð&q=ß¿–Cöò§ŠéuoY=}ÓkïÌㄪ@€*‡`~Bq'u@Iéœq„¨í½^°ãŽýGµ³xZkØø*/õy|mRà’†¶+Éu›ñÑ7¡S-ìè¡$ùq>sΈóm-(ñƒ–¡TÃb‘ý«Õ 7«äØ}X¼Â*ªöÃé¼£]€Â”@UÊ@­îzÞa#OóŠ$šÉš=7õÚ ç”`þ„åS™2ïËáܧÿÙ…BÎf±¦0| VïîãthÉÝúD’$hÚ¢ÎÝkÔ²hBÝ£.öçiŽUß¿:)ÊÂGâc~óD=0ÚÓñ]ŠY+„]ãÞÀd¹}¯ºéoW A½7öìú·æ5u«_ÄÕ÷ì!%§ù׋¿¹`k3~’õ%#6­¢=KC¥:J£ßÒæwð*w™f-ò’!Ã(“m×4‡˶hj9@×T¦} š¤þ§*u§H@dÆOÍŠÔ 1‚V¸ ŒåËßÈŸ çU(6brªÂ°ž«UéV—•y]Ü„ñ>7˜Ôº­Zµ‚Bé¤sŽs{Ô×ÄÙÖZð7Ô/î›çðò¡¾Ÿç GxC°¦´-w^ßÃÊâü'ÆÂ·“X¼icJõYDY°'¿=§½È ¯Ë´ÌåˆÑ;—AT–îÜ#â@>·ºx· ¼:XFåÁ°«WåÔès`B¡%7AÝdƒû{½ÌÑÀ`¢b°ØÕb  ËyXwÝ®¹Ž-Ûóo¦féx…þ²ÑEúßt.82 ÷­§$û” 'þîmØJÀw>cœºšm'CÓ àýg©•>kçA¸æ©X– B´íü_Wvø. ló™Á‚à׿N¥ÐˆœÎRwe²Àm. Ïs\þØ“°‚/g`ªžêÛ›C›šª/©uzûÀ©ìÎZ÷oŸø—iOuÔqUÏͺfø_õž©¼ocdÉ4ŠÃ\þ1€’oáʹF©º CøÉ<æfŸ?]Zìi50þhg<~Ñé¼ìÁÑÿõ»—!b…Eh J%ì•—ÜܸdoÜ.›è3C)gòíçÎôÈña”㉶; ¬26ëƒ7]YEˆŸ¡åǪøp6tµ½bì%lN‹hpƒÚißkX„ʈõ¯! - G-ô0žô¿eÙŸRÜGˆT&"Ü&©|¯nJHý—«ùöv²•¤“¹o/=Æ,³÷4]ËXÄœaÈòMD†Ò2œ£2k ó|1À¨ñkûÎx@JÐtuƃ×3܃ÍEÔ¬lOüÇ£h)Ñ ‰íØö~Ô9å~3ç“qž{m ¢DFhZœÐ†Å—ÌE¡"¹*’öKÍ$Üè©Kš–¼–ÂsáWp”8«7Ï}pó„:©_4½_½Í¶§ ×iJP§;‰]îQŸßTO&ˆI»˜ÉPC™'Î_A´ó¸÷ŒûËtšÒŽã䣧dæzE³¾{6”•HWý‘Ç–1Å9kRB9©ç+vgÞør3ƒóTjÜÓËÎïéò©ä)nº´yÄ {F5.ç¼åÎzÀ* ‰.†Ä\ž™¿üÊ&й ø½ÌO{Ö²¹½ôó1»LEß8Ÿ1Í‹ƒkj}ÕÌùûú]*u»þV·nÜùY4@²;§f„˜x¡èÂKuã¹\6úÏBù¨Ñ+ãŽ*¹S˜æÄ>Æ„×6ß=Ö· ¼ë=ÈnæŸ]ÆôïßÐK& Fz¨~/‰ëÜMXš=¾~¶¾JÙ3Y0Ì`{ Éû“4A¬N±oÆððÎâôVP>û€@$›UäøM„ªaœÁM¾y¥5Ûu—»Q‹8³s™51€€"@‹ÛH›€ß1ôj©ÚLøºÍ½é|eEï`ÿZhªÅ>ý ,nujjÊ…9DÞTˆ˜*øV6À¼Æ%’†}½¸Î;„Õ+øún¾Ñ|Hº°‰! Y D­E$\WЯd2C'˜ÔÄf$2Õ¢ðWÀB³ änÔ†`…:†ä§W¿@ÄpÎê–ÙyqÛ·¬ç»›tÞöîï€gz|U‚\D{–+ì_0dz3-ö W`&,,{ó?ò>Õ¥oýÍ6¼wà… 1úTò=šò³œ¶¥1-¶…À¢áòdÁ{9á¾—ÙAè/ùÂ'þ®ÍuºÜ;;É׈º(¥•V@æÈH¤  šþ×~X@{¶WŒÉ€æ!f)10ó åVnÙbN«öà”÷Žœ1Bgímôn:=£ñe±8ì£ÀýÝ…Wàä±yæ´õ8LYƒMQ›y'Þ –zª[޹/Ö;otÇ{±)ÔæNa<0¢µµÆQ:¬~²nö°I¿_CYzúÿÞ…Fˆ±õÒÎLÑ:'þ#¤3ÀP8l¸@ux´‡Òˆ+Àä\ ç†xî òhDªµ$ì¢Õ |TªxÆgüX4”Ñs/Ä9WŒqmæz~·Hïš·²A¾7§¼k\Ctw`r@öïMVéÚÁ,Y»î]4õJ‹ÑN%TÁÕ H !01ó*áë/º{·_©Y®U7õ»’Ÿ8ð;\)U‹ŽQŸlާ§ŸSÇz–éü‚é>ݱŠ`ew+<£ë½‹B§æ°­¿å6µIMk">w‰6=0;'Q¹’¹è´yy/ôâf‡ŒëýUh‚d ¹ONßÁ¦7a!Ö0AÞ.£uí,:¦^¤‘Á#ŽÙ6·¢Ÿg¬ed³ð~§öXŠ7ÍŠPêQ\8•5åùÕDzw~;, Ôwg¥¶'þk·Sõ1÷mô|m)þ ±U¯^Ø¿k ôÕžu×ÿ›¸Á›¨A€½ŽhÑÅ­ÉTÚ1°G’ÔÜEµ7,Þº×.çJ ~4ì2œ{n ðÔvØÐÚT\~׿“îvGîÐ~iŽÈÂ\FëÓ—],F¨!#dº~Tö!¶ ¡ôFôï¿É£)Oa~/§˜òV/ÝörR²YNÃ-½ç)oöráŽg ?Þ|Ê-lMú2Š¢Jl0Ä¡5aãÆ¯"ÿѨó/<‰`Fµ{-…#”yY4œ³™µéX5âLܨ&¯ zÏ's~ýšœ67ä´i¡¿®ÖÎAŽ_$ææ.J`Þ/5«FùŠQ‘`îÿ¬ûˆqËJ]„,OìP’TÉnŒõß?c,©©•8h·ÁðÂdÕe¹¶™ß‰n$æÁJ`Áᩤi—V¸)€±//ªöÀãzrêïÃ÷Ufƒ:±LwgTP @` >†EÂL‘êÖæ§üγö>”ˆ+ á>K72î¤LêÌàÈ€UÚ†¹±VazýGä_•³vùkÀ²+y²íif=X·rš¹ºÕq(o#å ÒíPµRi±|51Bìló”\CbIùºÍ“I®=}ä<33ù?˜³\ÖI½%’ÿs£Ÿ%Šƒ|uÿ0þòk ]w•t {¼*#oG'XÛ+HØ@3|‘;W¥1s”v4h¼°Ï„# y`k,ehí­‚RéawŲݪZEß±¿Jf2õ_¨!TßZ‹ÔÍåp£3GÖ„†t†“tù>>ÍÆ°à¨™ö)=¯ñùOÃëö‹«Îó®f¯;Ydg4®õÓå³1d ÈF°x•$—3¾þª}oKCp¶j|+ÅBà’ár†åx„\ÜVÒRº)%ƒ(òΉ&IÏëvÖãtM¨Ð?˜·w VÞÿéUŸ™ÿÐ=ŒÛØö’^d¶*À¦Oxß®"o@Ö9î¨?•úgc[¿i†33ÕY6À.Ýÿ¦’,Â?uiåZÆɤЛ5Ùp}&!õî2GMÂLa š`×vq2£RÞ^g» †2K݉jŒ"’šßáù¹J#ª}Þ(eºJ³Îns™lìäjÞ£°&æ²îš“,Ëènà“çúƒ}OVÉI~­ä=ÍV2=å!knÒI‰éα£?[€d½8U¬5óbà¡jgA[k`GU”€p«®*Ä•Ÿ,Úl­Œ\¦Öl“ÉÞˆÇ?ÍOÔšîÛ~1KVy³¨ÞceÊNዱü‹<ÆðÚ©‹€s—LLQ˜ƒ¯ßQ…4°…¨š[GXÚ¯”2®‘þÕ™:œhn1TºnÐ?¤ã•s{ÏöFÔÛÇ»CÇ3½sy™ÔJ>LáU[œFƒ¿s^”z ÞNi¡P|S=¡L7‰B\MÕF7ºÐÇÁW²Î ±ºÌ‡ÜèN Ϫ‰o•'Ö\ìy-'á«Îª²9/”P}…#Š´ÅbI¶éCz¤žåwŽýg;;÷"M“®²–û;íÃÊUáußä×ñmšòþùã¶àìn/hèÜëéßG+æ™ÔûÙF© ·vÖƒ– :—­ '.',i¹ÖJOÇû.œ{®ž§÷ðlÞ·ü6¸Hˆ½vè€i˜E¸Œ›>±kÛÊg4A3.A/™áLXšÕ—Çä7˜…B}ñVj’UêÌž0ë‰ÓÖ«ÎúЧQ_둉Qó³]RH±“éPÜEëc÷õ=2V‚«W:¤z(ÒºdDõTôÞ˜W}ºÜñKà¶S9€,0²üÞ‡ÈúF(?!€yŸ—rû†ò?Ði~}¸ê¡S §Sl…V}­bnÄRë}zø¼Wôêz{¹¸¼è¥nì”Íþ¯hÌ.Ws5^#+”àxTJå?ÉÛøF¼nJ—à·5ØrŽƒ f"VB;Ù´R…PNi(EGUÒ,`ÕDŽ©ºv£,ö}$•¸L„h„qx¶<µà~멨Ù'Ûá0®úë:Ê>!¤·¸ƘåO%ð!§S¦R6£~ $‘?lúþ—£7¿¢o2çü )5´{ÌÃaÈÖå𺿎#¬IèÝõ¾Ç§ÑÃE|¯0Ïû'›jO¯%ñkÇŠ:þγ`õòýOž`‘Ù ƒÆŒKîY>›ß°ÛÏkïˆïgïµÚšÊŠ‚ƒõ¸ö9®ÔÎ^˜Xù>G•±³T 4'˜Ñ'½³«Ú¦‡Cïb=a?—?çf¡(*^q Gª¿ìöb+º”aÓg_mƒ$†eÅc‚®‚Š©s}õ0LFHÕ^Ó©¶s-ØÉ|UÁêPùŽóò¥lV4‡PÂù]0µk ìXtfõ1ŽYH½ñ¹È¸}v­¦ŒÆ¬ƒfž…B¡e| nµ'ëíNâ"®³ýÛ¥£ Ý t&zb,t¬w,#kø{jwy^ŒWÄŠœÖõÞÕX\¿±'™†p¾†Ò´p5šÃ3è9š­9‡á ß{FòοI t“X‡®6ÏgdáDHYÔnöûÊÏ #õJd¸@á9‡hä²Ù/'ðRÛDMVÁ6úFï Üo¤„$aÙV³ä³…ø¨é9ŒÒ-Å5|Ä’Ÿ·‡zXË¡öa Ü;RÅnôÒg¥ðZq+¶ñ…™°ÕNÆ0¬><’éSâ76ÑÁB­ÜÒ–µ “F†Lß=¶ ÁÊ-m—sŒ÷]}6ž¤àû¾šöˆ-C€;Þ1ÓZ(áwYÃôünûé° Qì9>w¼ñD׫ô:ƒ¿ˆÂ®ˆÄ h‰õå3"Ôª¡¬½—s¢?“bÿI©> µ*3[åE¹©]«O¨OºÊé\Öl/[«‰}K fׯ&,~S—é6å<‰HHt·_…´¾_VI ‰ 9uÐ|~Ûùbbƒ:å+È õ ¨)¬æhç§=É¥¤þn÷¼«†Š1ó0,ñȸLE@-L„” ¾!2!€qkà™à33ÂîÏñóÊ>´ã±3{f/êÛCk0Ko/Âeš1H¢$#Jø"©˜dÏ}VèmhRð¦ðd‚>HÝ¡"À†à ­ ‰,Í*¡©ÃÏÁ™ˆv©ç?€‘ì¹½ï„vù¬jË¿à¤ë¦~ÙÓÌu´Æþ°aB’¸ÒŽgÁYŽ®ì¥WjI¬CQ=ÿwI5¥õV®œ»ÆcÈá ®eªG£2ÄQBQ7§ÔæsVPØLÀL8ÇÆ€¿‚*ƒŠ§›,ýýœÓ®vmœûQŸلÂ{$'Ôð[Ù+ÎS'ì½ ,$jAøÍw´Ï½oA€‹ ~«8©ì:×jè^ù¶ÂùÅá'Ãã·ñr•7— ˜)ú8·³£b,E-›· •1‰ô?bâ³ÏiB %›Ü—ÿzë“—)Bv@QŸòKm„ 7‘'ññZl8çÐiäx]¹ßrj%¢@AËhŸÂƒüï>¯gtð$Ÿ2bvO0æúôÍ1rjä7BÚãDloe>+ÙpƒêÃc/üÒE€ÓBðyËÌæ.dz+—CÝŠš?$øPd’©‘Ó‚õ¤Ì„–‡qÂlà:Œk×ó˜Å,~ Ú&‹ô͈}•_†‰Pü×D8PyÖsmG™šƒ‘N ÷KWMí%: ëÿ`l—¥¸"œ‘L“=¦‹VœUXlôŒ”h­%T¢®í‹Åv^ªU ¥zâ9{+¦ow/ûù8r\…Fà’¨cZõöˆumMNLs~Ö†Sôƒªsü# áé{Á¯Øm². ¸ð¢¤ ¡¸C%s}@æâpDá7¬O¬_可XOI==dá(ÒYåˤŒçe²Ÿ_:깞n ™}<Âp098ÒÇ«þ;YhE§”BbÒ`]WêŠ@…³©*¡¡`Äø‘•ñùŸh©_,Ÿ+Khª1]ãâS†åGqþ:ñ½ñ’6æEÉÐa…"óõW*€‰¡øëTÍë%\övW5ÅÃá­V ¶h¾Æa2Û×b2L¼â²Ù6˜ðŸƒÒûf´‹p¶óËæ KöB•€?Y…‹ŽcM°:¼Ã¹‚7ÓÛh”šéLlÜÌÉ\ljÊ?Èf3Vîøa²×é¶:lÇõÉõ•LКÛ`Á{²)lj­hf$ú×l•A_Ua¾™¢ònÔ¬-KsÖ[ˆtëígŽêKNßB¶Tš»rÛ«j?o–#:?"× Ï™W„^5*»ÜŒÕ<”b«…¢ÉìŒEs¼âr‘Mè÷ Ó©÷júK+²ìŽgúÇ¡ÌO ˜ü¹µ_ñágVf¨Ž¬þ÷=ù ùQïf0«- f¦“;ZhÕiUj÷3ÙÄ6äŠ`’€"¼5­Æ€½é?l«yp«Úà:Š%Îóõ|îÝœÀ¥©´˜çBÛÖ²óxù‰÷x~Žˆñ–£³v¸<4Ί¿ÜÎqZójhÞOý å²gï;Ñ:{ãl´ÛMg¹û ‹ø†2ÄÀ| „ÉŠúz~gPìÈ €´6"&„«úô\ÚlL²,jïù†`mfÅÍÈ>ÀÍ oÍ.ßFf;:>»Mmô© `‡Fx’„ݥϲNø"îGm!•j0ÖËz‚ù¿®z`™³•¤QèMþ>šîÿqÿ(Y[œQlÍ:&cPÅh“¶ŸÖbÎ@(v:Glì¥j\¬ÑfÞ<\½(M{H¨9 C ·Á5óJïÏên¿è3ÌÞ€rQíÞÿgXcWƒ_ðâUϳ6ëÇ´è•Ùù+É|<Å¥(Äøç¡‚À %~V“è2&´Èæ t#Ÿà?³c¹ ¾Â ìûüÕåTô6Eª•&å ãotë)c¢8¢$ïg%rSNæ­úо‰¼#ƒ 5›@äÏäðƒÛ5Xj,"LÒ@ºŸ¼Í©$G󬔿S uDÐÑŸ¦ó÷]fKxËzŸ¡rb/6›ú6ÿ±jSQ÷d®Å#Àˆ¼ŸbWkÍBkû_®/‹£–ц8GÕkêë©8üˆKò‰§gM©.s5k µ%.ÆÓ÷TúGO%£ÞNn ïqqú%ùµg |ƒñ960:,ƒÜàPC`ô/¦è1gû”5êÝËöÏ€Úaª?kù’G iVÖÈ3nôá-P°Û2Eë[äy±Ë_¦^Eaã íd·tqc…©|Ξ’°vBuˆ3Á2ªÉ_9€™½žàðÇ@øÏ„ð, Ã0²[€ÑQÞŠ33·*¨i2h(dÐ☡Ä4D†Ü05NÀ9F&k”f@¹Ù Ö !(Z×4ˆo‰•©+š b3¿’,[°+¬å“\¿¨`†í²‰’È€ž)&*ã¡·$ÓY”F“\Q]Z¿tK°÷n½>É:測,ÄïU½ $áàw`)ŸmCìù7gÀäÀ“»A×4Ù?¹ó]o˳æ}!~ªC)L¯JÌzl! a><É©Š÷<ž¦èC~ ! ‚!! X ðF]PÖð&g[è’Y*‡ $ $†Tðd€™(ˆR€ U'`S“P…wì‘2,(]‚ È P¬ä°¸†a$=“2V !$‚ 0A ›RI5™<* Gþ7öJ8‘¢É³` ‚, ô„d:„%@¢I‚ƒåY$Ì0Ña†q¬ J¤  3°B§f‰†$B5ÊHXLg … "" ôÆ¢€‚æ' ‰Õ`†i”(²`h(àž5™&AVYà IÀAU ef‚3À„ € Bas„"Ži­$E\ˆ’ÈT†¤e„‘&‘D B"˜Á™BÍBAC„*¤È„ÕS‰Rô°È" ‚€€&&DH i !fBD bÀåˆA(‚*Ð!!Hæ’B‹*,ä4Ø|ò ¡œ fTIêÀ²aD¦@ €R!fJ @@¢ ¡4a„Ah@ XRŠÐaP B¢«< @²‘! € 0A 8‰ǰ €IA·‡-9ËAé‰>-€DbûÌ%añS L&!a,2Ø!¶ DXOdR@jÀZKö¸ ‰ð[¥üÎ&â)Õ1"u½H6¶o%~Ù‘EÄ^DÑgÉbÓhL+¬ìÓ9®?Û¸ßÙÆØ´›‰åCií8Ð6Âyhtï¼úmö<Ãö>ûð<ƒÐ÷é¥uîqܶÏÝ5Pû®é@Æ |ëÈ c—ö¢^ȳ«DÒŽ˜½ Su(¾‘¹ ì=WüªëŽþ×ûœÎ4ý8îWãÆN5}THøÍi9\à—£ÿœ#˜6’4›p4(eö1øÖÐDä#‘¬>wšk?µˆÅR­ mIQ”£.cÀ¸‘Çì !„ñÅæÉšƒ‘>wLP…“uôsŽa7åµñÕ.ÍÙ)¸}¯¼3Ñóòšd¡¸Ò-ÆH¥Ôµ:¼9bhþgŽ>F j²*m,x• ‰ ŒÄAÂBBD*0ªŠI€@ 0)œÿùŠ É2šÈ›†,X+ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿßø\öàûëN«¼uõ×¾ô/·¾¯M–»­v÷¼]›­mç>ßnl¾û}öϽéžÎÖ¯}§j½©1»aÞûïzòÅÜ8­õ»ÚÌç½ëW›Ýï>øT€L™1 ŒñÐFÑ 2iˆÄõši¦™4É“Oi“Òz˜ŒM4Àš121©¦&Œ!ˆÙ“i0Ó@i£@MPŠ¡¤§àšbhÉ´ ‰¦˜šbmÑ4ÄÊxj`Ò›M2bdÄÔôôSOC&“TüŒ ‚m4Ñ ž†I¦š˜›F&“"m0TÿJzh™ê'¤ðL¨EI„¦SCh5žž”x6ŠzCOI‘š5=Lž¦4h4hi¤y2ž É“SÉ£DôɦLM 0Iâ=ŒÆšžSѪ&Êmdh2MO&i¦™ SÚLj§äÆŠxЀJ©€§¦&ŒAŠza4ÆE'äѦ¦OMSÙScSÁSð"Ÿ¦hÙ4SÁ4ÒzLÈÂz&j(E@™=$ð˜ y2i”Ú¦Ù52i¦# ‘šQæ¦&§©êz˜m)èÊl£)äÒoDÚ=M?PÉ”ò53M=D{F¦Hà Sd1&ÅÔÔf˜OS‘ú¡é£Õ2<†‰úH¤“SÓSÑÓ)꟤ة¶©íS6ŠfSÈODÙ¡2ž£ÓÑ&ò§¨ÚmCÓÔýSÉ7¥4yMŠ~a©¨Úƒ4f©Tzz¡½'©§¨ôL§Š=OSõ'¦¦‡¨òDÚ=ORl“be#Ôô™1Éö `­+ ðƒp ­4†”dDK )BLcÉ,0ŽÇf{¥éPgLùí’pS£11Ž:²1§ÉòˆéLQFG$Œ%É$$)1‹ 1"ŒJ& ‚þL$Ä’å $¿Œ; rÕ,"ÐãÅE›ÄÓjôfÊ[W£Ñ&eJ±ƒñ d}Fj›*N 8%ý?R Ó® >ÄjŒ]˜…|åÕSU®UQÉÓ{‹W\ºˆ ΊÔ<¡Än«ÞïÉÔkT‡ esÊ+o=Ÿ34n½g©—Þçc/€àb…%!»VÞaI‰µ¸ý'ÆáDyÝ>ù*ÊGÇÓYù3¸ §u¯!ð\·ŠcšÙúV¦áaŒ`ö %ýxJ7BØñmñõxC›ÝüôæÑ| 2q~ þ•=ˆ$A{µ.ûß9}Ág1ߤáà|-SE†•ôÁa‹H~“„Åfð1NÀÒâ™Ñ:!ˆ màYB.®e㸥£_–ÀI 0ŽÔ©‚HBA›I¡j‘„ÈÄ0/0c*Ș š1 Æ’¸% Œ0€™n@(F°¿`; dq„ƒf\’‚H  . lbÀÌ ²_µ$”Hovw'Ó6æ4Ž@ј2*c`‰d $…d0BJHÄ$"di1ÀTã óÆ ¢"‘Z3»å’H 8Ä”‘Œå@$–Hfõ‡¦À\É ?ó‰–³afżaÑ4ŽK;vTsÓUQŽ ¨Ö>ÄBHJ½œL]ÓD„€HI!LŒT @d1Œd@€È €Ãªñ±¤@F0RÂçÆ’ö–Xö«.øæ“öyô42æ>¿Îš37Ìæ‡$73Üô÷e¥º¨zè6~–ÛòÀ¯.JàˆbxF”M°òÝQŒbÔϧ¿‚[F„iÊbæ4¸š¼#VÐ\´y­$Áˆ*šAÒåà-³Kâb¨Qy¹A$‘Ži$dW›ƒ\N\†f ˆîòðy‚ æoX¯0°5[x Ü@GfËF |Í~ÓÝ«çý=}øü;XÎÞ[I¨Lô˜pïpÛxÁ걉¸UÞ˜sYxpQ£„„®níõ ŠÙ2^w·;ðb=û&‘+7C€0zŵ{ 2+™½1¶œÛyÍ.TdXýi¿ù©@«Þ' :Ûp=4<בs·pô“ÐÝ-nsÁDAÒgIaúû17Ý¡‚y7Ç1›öׂ?ê8à¦/3©¾)öWb„1“@YØhâÍç¯föÞèñICÈ~èø®6ñ)vd=×¥_Vz8tùkTòë2Ò@bŒA2:D_{c 0§ßAbáÊcî/yö'à€ø«³ö“ÝUlÎÙn_s‚ƒíÇ[øC´×]ùçý¶]Ú¼ü%¢èOžÓ«’öOrûÚùfÛœKu:6ò­ßTAÈs› aªõˆ¶¤ìJÎÍKžG“35Ïi§3ZØç‰?Ží³Ÿ£¹¨Å¬uW.Ðõ~P oW«ÚÒ[lóò®ýIþ«¹›¼ç{}`ê~·ø¿axÜ=L‹¯÷-G»õóžG;Ø=ÆÆ’M I €ÚHlbZ€&ˆšÚƒØ ‰»ì¶Ç/öýîUöjÿK9¿'aÇÈGŸ $ í=`¹U¶z %ˆ{˜©çñÌTá@Ç”˜g:’ä\áK^2ëe`–@N{<”)´=Œ3bËŒ-J2f’ï ñzß~jØ’õ–»œq` ¿Î'èÁ¼ÿ,„0tr—X¯U?ìTyNõï±YFdjžbÒÊîÓã°@­T×çÉw‘/¶¥D#7o”«ÁL+­ÎÝÊoyVôœTÖ1ý‹èHGFƒ³ÇPò—ý8¯øâ8ª¾À§–QÅK|Ú-æKŽ›°VM\± Ðûº ‹ðÝ“Ýp#©i"ªÍVw}ç™(8Ú52'‹fõÉ©µ ÔÃ÷°"NÆêèÔi€BÒ¬÷OUóGõäYÌÛãÉ–äÑw3.\± «s*à ðʲx9¢ÐÚø.ša·ð-vg¤ã!²® nÝü‰û 3¿¨ù9-âQˆº˜Þ²nµƒü$9m¥UýV_ î^µ2æ_µ 6ö¢ Ó,¼1Yýd“¥ °fY5‡¬y:|³;ÄÙ5z¥^C=•€eÞŒ4xlkvÒÞ’Óó´wºÕfr´Þ}x|‘ hœ=l³¨ÉäO-ÄC<£¼Ø¾NÊìoäá›oÛÛAÀ¶S±é|ïdÜPÁl ¿¨zdX$]l3´ž>2z‡Q Êúý Êôzþ‡UsK7¨ ‘ŒaR1Œ>*xA)Ì®Héý¨¶®Æ©Àk ãÃq%¦ãRgˆg!øBê+ž kìsÂhwÊÄwpÄÕ—çn,]üª{Ù™¼­€x<Øs SÏ̳í_Ÿ ”,ÔèFJ,G@ýW¦U¶V# (£…tì—ÿªG|ÜzOø2‰ò0½žšsXc×ÔzóUš×1G ^_È ™oÕ~‰g)æQÈX@Üà"pmÒýF=îÇ ‡œºÿ–¿þšÞ(>ÞÂv‡î¸øÓײ¢B;ÄͬŸÏ{8Ð^Á¢ Ò+¢r'ãî ìºÉÛ}f¹y€ÝøEEàÕ0(Oâg]kµº“\cxNªŒZÊαɞ%zøb ×rk2—<Æô´(žI˜½Ú˜¿Ëxóâx(wa\ÝC7F–†&Å>_£„ @ª‹«½›–"ŒRóûËZÂÜ×÷*‘’ëT½_¹ ÆKëñ8bG»÷*\¥õÒÆdÍ0ÈÞ½La¿:„  Ä_5õr›˜¨2Vê»2éÓÔ1ù–›œ3Ì¥ Yxž&|%2…TLh¾r'•Ïb.ÒöÍã#¹þl`~’™ h³Ú¬Ò°NDP#‡njÛƒw£Ú豬Í5›öaŽÉm’U¾ƒ‘ðG@X0äÍ“cN¨à­œÑÚšñ€Œ(xáOÐ0³ÖØ”û ä¦Ù”^4­++µ»™ß øtÏi=ûð§»~¦¤ H6“`QïÖØÝõíäÈrÍòö|$À·Y²î»àOj;G!Û+ 9Úv‰nc×Y ˆùjUf@Ó¤M긱›DC±É`Ízáø›@›d9J[CÌ-—íI¤ž³÷t8 -ÒOWˆ¶e%Bœ·mb’ý`ãì‰>\²fó~¦¯øÛÛéšV8ú² b<Ïp´) §|õ:T¥•5@ò_¥=×V÷çKû*"ÎF÷©!±XY­öÞ @B²7ÓÁ Xì¸Ã\àôE.µŒ@4€Ÿí­ï]=?§jô*˜”™§ÝEF7“… R2t÷½a†?HÜò Fvç†p—6M†ÔÛÂCRÓ`ÁLÍ!¸¥(€ºg9Æú²jZ¦LUX£æèVŸN'@tóQ_ïH#¸Á?!œGÏZݱä¤;Š‘¶i8sZãlr–*ºì#~¨)èé6ŸbiÑÍ` \g+8)¿UÚ³Säd'’Áâ$ïmÐë³Cr«È±L¢5öý(ÒŸŸ6Hr•!k)Uš‰<œ<£/𾍾F±›N‡jx˜:M_•—OòÉ(–¾Q\ QJ¬^¨yçñsûlcý>hv<ß?™b ̾a»6¬)ÈOQZ^k=ÇŒíÌ,°žù©1ó%n\T’:›®}·W-3p3k?嬭ö5r‡ «Y[3€Î}ëJBJ{©ô…ê6vWYÂÎ&&õ~éëv KŽÚmã´€*¬Ü=æIŒÿõ´5—ïÈ~^£ÞÝZº†î½Åòž7úL‡o'¤[d›ô_È9gˆnxÊßxúà‘qPi­å=ûDfÝ4ÏŽ€}T½ødÂvå½—ºT¦wSô.woì ò fI£ö„IÒ“©Ðºïfû"v3ú?׳måÛ([’•=4{ÇCš5gjcÏiÍ÷µÿÏ‘c€¬SÔs5¢¡,™kÇX‘7ô‡Šƒœø«6:…k[H´1³¨,‡™>‚ÿÏííï žœÐP—œqÙu–__R’#¨4G{4m¯®veÛFGsè¯úžC&nS ùÞ¦_0¢9åý $¦POÜ=i™›ÞÜ£Eº_'6çd+QQ4'@ô¹Ä]Ž—û)m.ÒGÊ‹ ¥Ò¶ªêå•h—£oñòÈÖ‡fÄn¥·r…W ÕB>–Bºˆ@¿a¢€üšŠt~’¾Èš±~µóª‚;­Ø]‹c~\®†±,¾ä7È¿kâoUÿÁ}eÁwŤå…åû»¬åsŠÉuÙ¾xÐCØŒÕÔ´¶–0„éYOÓ’‹«Û¦mOY‹ÒÐ$§Ì„ò¤Ú³aä9yüO,6ŒYùÚË‘”B¨*£dÞûÏ@Éß¼:3ë&ØßÕ\à¸ALÄlB\n|‰XåxùÖµÍð™N <”éSì"=C“køU´æ”+¯9o<4Wݼõ^ѥǽñÚYÛló±IîJ}•GÜì´èÓ¼.¦Fo¬§‡ªûµ Žöì…'h߇½TŽMÜòüxˆƒ%baù}zb%8Î6qž¢rXºV°8p˻̔ÓãI¯H;Œü©‘qÅ`üøÙXˆÄùR×̧•Å…ž÷ù­˜E-¨—ñû`÷ÍrGÉ’ó–Ê®¸üÕuíJÀÓ$ìõo–¶U8 ÏT†½Ñ^+ÞÇ?.Æß‚ Rçòå•ñBÉn| 劰2±ÚU¾p.µd®ü%t ª>Lõr«Ân¡¼ ¤i1JßÁÌû†Ù8?G×Ë yzñ^KMåž+«2–N¤íÙ5ÃШ𰺽î6€OkXÖUÿ%K¾ñHS'4?ŠçŠÓÕSHh¾0ˆ1Ñ9dYJËa˜Óvc' ì¡R¶f¾+bËÉüZ€Ë¯ ´Ç:µž~ÌLZ2–¬—ô0²ðNO¶ò NþjõÙ$äï »ä\š?pòâ‡C×’Þº™Mb AòWi´ë?Õ?¤œvƒI¾•N7S±¤(ýdøÊÓ@¦f&ï*™9 ¸Ör¬ˆ E í¯‰ ±l¿M:à™˜nÀ|aÕU²ب7òÌ”X’DeÎe«Û·eRÕÝœ˜wŠ&w«QÈ.F¿8ëîÌ€èð{XàŠ¼€â‰÷^Ÿ#äZ|oÔ¨ð.?‰¾›ÙÁ}0á>ú[ÇàðÖ8úþ·3¯w©zØö£±[0rcâ«›þµ º§®øþ¯3=ºÐUÎ?sÀÇã>îKaÛ줒#n²œ¶Ÿ&Sœƒwá¹(yÃ:•Ø|‚Ƥšoa[÷ÞßÑxÕå?¾$qP(ºCÆcAH7ýæþÔQå1Úõ³ŽÍ_eØÍ,ÄØO¢¾Lî½a0Dú霮f‘I%bCJ5ثРF‹äôúÙXüæ|59”>=?½þÙjZ*ü­6o2~¢¤Õa{æ[•æDЊӲՌ2 ¦…î©«Ä @€ÈçósÖpÌ_KVx¯eñ}¨ù¯K”ƒž•G?uA´6¦–i4'•z–ö¡èóã Ê©šK¸¹LV†æ @ŒŽáy]Ü^e€ÂLDi™ñÇ_€3Úe¼',US¾Tÿ¸·Ãô|^zx;ã!à–bàé;MåÆÅm¾ùó´zj,Öž79•u˜x/]&7a5ðúÒE6 hó:@¡4&€¾ˆÝx]v+c1«ë+¾½Þ coÍÕýIy[ždÍoÑÈAr´H3}ÉpŸNZ›í)ªF"o=T®d9G¿Œ<]‚§Vý÷"n9_­àm@TÊÏ”4„˜ð$:h ºlêGi^p©TåÑç\RLó%<Ê^`ß©JÌÒòwá—‡Ûã†[3",ÖÆQœ^Ez¹ ¬Úbô¡¼Û$QJôç7ë{¸"Æÿ¯´ÕØöÕ·h±‘`©‹ÈS +—<Í4ÊJœõF°ëÏz)Ö¼u=Z<‹å>7¿þyy„Ú0/o3ʘ?AæÎäD§ô4%ƒa°J?qwn›§­‡Cî°/5P—³lÄAŸÞ¥´:€•%>[¨µ5"†â£F«ëäUZ"*&ÞŠ£*Œ¾§’¥Ÿ{VŒþò/s|…QØ«Q–•-Èô g)9£Y^ñ0©tq‰ôÝNÝT drBìá÷°h×k\Hù…a¶e_î9íWZò<ž ¾7u®¾œQõùÓ4oò­^k+a$sDÞË7·v«2ùoL¡xÚoQxõ­ê¹8ê:æ¢Íϰ.»Û¿D‹V¾ÁhùÕQW†Î÷Uì<§¡® ¤bž.ÄCS6¶n,v— f/lpÉÊn'@?E7f®É¯Æ2Drf-yœ€(±•‘z+¨Ϧ¤HûÀLý*0–“2Ï4ƒ.8ù½<‰Rþ ×Ld íèTpV^ÏÃ`ž\-Ý;åóP!]äµåÇñtûsŠpôgG\Ñ4Qá£@Ðâ£rØÔß·Óœ"jêL‘œ®Wp Y¡ פK$þX¯QRÈ/å1p«?&(L¾nçLýÏq7ƒÏœ&«¾‡I Qךìj‘¶oÑÿ6ÝGÔ/NW}uËù+‰¤ÍN†Ü,u Ž$æC»z€àŠ; AHƒ>¦Si³æ®ÜÊdxÍ4‚"–n|»L®Þœ8®–<ë}i4ÇŒ… k΢çÚ Hæw‘D{2ŒNNËr»÷xïÈÔ7ÂÿSjÍ_c2½êUÆ‚èûƹ4hߣŒÛníäµ@¡ÕŒ³U‚’üãÃð•áÒX.¿ŸIwà\©¡Jià Ý(m£Ž§‘WØ5ñ ´µùÔ˜Yz¾Ù‚WC5Ò{îãPÀ!–Ú ëd6ꛪ¶ð™/Á­? ¸wõéEOœFâÜZyžJ>ý¶ ‚)^ØÛЀ- ÍO5ð²M$Ž¿Ã’÷ؘ§Ö'«åjS)bYfè²XÆ)±‹ZBU5NKpåN›ÓøÝâìÈJïâ²õ$N`zXÈšùÞ0gË,ÿ? ÛN] mûJât‘éÞÓ#;+œÁ)ÓlZ—0ùÎb‰½¹ f ¶ÞÊ ƒþÎ º ¯¦×¹ˆýëéõ)l´ŠHyLãÜÞ@¿¿£õ'ùjç¯î™ÖuÊØff$SË.µ(äû+H Y¸ËÃ9}4‡ Dó¿d*Lç!{ ݱ1l;QÔWÑY5¸Eé2y§ç¨Ý·Ye¹ÔŸ3êä>.³à8¯mtNà:ðI ÄŒšç–°¹Ui·#9ë"®s‡è¯Ê:»Ÿòî©=Á,P†Ò ”Ê®[M{Ô_æ…k€±¿çy˜jkR™èWÙz62Vù$h®Í0Ž`ê€%ýøAÿ Ç®`v+E1ÂÍÕö=¸{Ž÷+Û^mxžTN¦—3Å DL‹>íèú²¥œàäJN.oi‘a.‡{‰tÿÐmIo=û«>*Âc—X[·54¸wtƒ]ÍáÚ«MÍûÞïÿz'¬^÷ö E æg9ì¦ 0o2°L[KÞÌØÑÝpô×ÜXuüºÄ¸…!R¨ˆ/²Ï†K#I%ëv“²#‚Ïh%AAcJ…WIx$Ä=y»w2«õS8_×aøÃ HMµ6"4Ðð¢úTt½OôýÿëêÑvûÊãg8Cóó—o:ë×3†8ÄÍý›­âÅ2õÿ±Ê95çÀ„œÅ(údÎk‘| úžÍ7³[¹ñZëw™.ôÖÖ/%PÄêÒÎê‘ñZÍ OÞÅ¡ýuöÊÇä,ôNˆ îg/ø'Ü]*¡«Í9H¥Ð¸ŠÚDþLýiíó‚©Çz;kLa)–ªC ¤£–G Vçë¹Ó‹ '׆¿÷1tio’X•‹ÁT?äUŒ5 ´Áà]©‘Ê=Z§Í]Ÿ½£¼ G™´X´a²ûÐo0+øNæ…ë¹ —à~KL Å7ù÷ávø•nÄÃÌáÒ°ÐÚÈúÊéS ýóOÿbƒ%ÝŒlÀÌGÛ9…‚¸_CáÍíÝp’cP„‰0í`ÜR–̾‡_¶QÕi|Y@€ ×/º­Âqëô}ý1¢ê1rÙžãÀ´´ë4/Ï Æ±Âl£ì‡‹3ãrhûêškyð”ÊïIå («s^C ä²86ÓÜ­ÎÜEí=öY›yªmS>]5ê§ÌˆLõ‡Op:›t˜ºÄM¼uÕŒª‹lÎBõ‹.óâ2}´®Äkn-Óv¦äKßs—8  {bÕ™x#N^ñ¸ï¡N¹¶Èiè’çØ‹Â—rOOooÇì«MËH¤ók ¼:ÈV4¶éét!RŒT¤çmXcp@6£p›/éíJK"ÀyyÍh¸5- K»§`N˜!óÀ+Ò™„Ökz ²:5oœ¯ÝßɮәO mn1ÓO rnÕº ðW©³s-_çÞd“ÈÿÍ–dG-‚®:wBBa:]Èà‘,£è¢{a\]P$åìç÷ì–>çcWü6™ÈæâƒPؽc @ ÝÁ½'s4eX£”Ü.ä`•é|ôBB ¹•dc6 ëC‰¤n5Óøßoùò‘]ÖJ«®CæWϾqD ’žPæšoQ¹|è ¯Aþ;T†IðÙ¦}•Û¬8 e CÇüc{Ÿ!/Ð÷²¤é«s!>¨›ÄÜaÂ7†LZ"„HUÙ¢MÙÕk?"Eƒ•#Ù†XOOýPªƒ ÓŽX}²vL—ë5œÌ™4º Â\ûøùMcª£¢Q¤ì—\ô<¹È ‡pz2_t7H|Y‘?-ˆùr×13†élÏ[ÝaÆW ¿Ï„§â$À¨~µ8ßF{ |âgô0hrxt”¿UU—ÊoqÞéN­j„u^›{J1HLþ¨õe| .² ìE‡^Ãu#3ª9 –=²€£Jü¥ÚÑÔ(£× è¥ö/ñ­Î½JVæ,ãô´…¢¼B·Ü*ÎçX•φSÛéM:q³*ì ’0½ú×¢œ!Ì¡¾›ø9.nŒKU¹Ù€„㪸7CIvB}OzÝB½Sùyåv÷¯÷¥=×l »o£ä5mÎß<[%ì¯!Å+ͺ•Ø’Ïç½" .œ½à![›ƒ£Ï­œ»õ4™¨“9Ú"„nå_ìçŸÿ[ÞÍ£Ô‹^ß,¡3cWüx›ïì…âœ÷·4œ‹Ó‰u¡ZÏïªï•Ã`ëWøñ°,Œé²@#ÒŒ Û/CoYÑÂöjÊ…kïZÛ˜.²nT¥±N¾ÇÒ«·ð©À·»âàd 'Øê¼bCh²üÎ'¹~±¨j{Dq•$x2ŸNó1.ÃVsWcþ‰þØ@ E„{CåëËÜOÔª“Ž, ÑL,­Öu™y|;üI_Å96”H¨,¶ëaçÊ=ìÙ!߀õÅgÞäÁù¿ÏÉÔá˜3Ç~%n¾-Õ—hÀi-1Ù¼¥Û¦¡æóÚDJÏS衚½¼LËÌUûè‰"DŒ*ÍëÏÔµ3U\b¯À¶ZBæåu‘5¡1ŒGÕÊ_ó*GºÍÏ·»,è9A<¯sˆ7Ò½ƳéÁÔyöžÏdêªQ#paÞn£°’´ÊÌYÎÖ½µ¥u)òÄw·Áª­¦A×€» žrªaY®”8‘6úÚ_±ëìÂS’xX¾!:ú ½!c¥Ý…yï ïq°(J§pbÜQ…žá^gôÅ’}Ϛğң ‚d|ú¢WÕiì{¹=ý:Æf ”F*¡£À³Ëò4׿1fÖÂjÁÆ=Vcy•‡½mMDv[)`‰:ÌÝ«~&Bç×íÕhà‡À>„C»k²~Ùn5­°ú¸† ÚLæÃ½J¾Ê•„¸Dµnðr->ß šÉß$|k¿¯¥²Äû~œ_Á… á:0É?£s«uâ#!Ýd¥¢ÖrX8MF8º‹,Òh¼yÏZŒ‡XÒ_‹èD´ÉÀ#·8Îõ™O•¦úÝY£º‰A½Ap¸¯ü‹;µQë¯Ð ¯Y-¾ön櫌ÒÜþuó›ÏpdÃ6^ÔHS0.­ÞëJ öþÊÇSóÚ,~Æ–ÿÎî+֙ޭèYH…O£fdfm‡+!½ýàÚb\=ÑÜɺ{œçJ)ˆ:ÂãЏÒHò„ÉyÖ@Äœ¹ÐÃÝeäLjmH>ÇáYîšj/iéØb˜¡$t{% {t´UÆgÕÍPs„^®›j’{2<òÈíÿ­6hàë==ŽŒûÀ¤_=?†÷ZhL{ÈlÎl­‰R%¨ K£ú»küš·£vô·ï‡~cÕ%Ø´ë4)éþ”Éw´ÏÄÊvŠïýLÎünP3fÂÈÊŠ“޾aXVRe¿*Â`kpɵÁýŽÇ±‚LöKšØtU”Çbò…I®ú³3œs÷XlnùT˜’Ùk\Þ;œÛõ’ÂíD/û´`×Î3V;YAè¥Rm•­ ZÕdÿrùÏF¿Ìª×}'Å\ïÏOsD;¸¸`¨lâÓÆ»òvtÁ¤ª§·0ë•ÛŒããÇòTw^"¦–çUW%¸ÉÍ4L̪Š8çm»@ðŒE<5¦ô= ’&~ °»{7ãÜÙ”£ø™™‰F_»ek(ÑHÁZ×YÀ'­û°uòR(ý¶#ZžCSÍu |Éê–¤¸j³£Åظ69We«jðYÀO2šµ»Íþ¬ e—9þ(·Ð#.Œr2l·™…]có=. ô™9Ån@º™ŒÝnþÙ[{‚'r÷¾¯ Æ ·|꣤w`Á*j¹!˜þíSH3×o8öxXûM¹íLöµZc#ƒM : F¨%b1÷Åæ°îiÅKARÄŸ×Ó¹"f Úö6vüÓÏÉ`¸MÕNWž$ät¬7мÑRíéì¯Úꑪî¼=4q²|ã;µùÃ&Ra¼O½ÖîL#†2Uû)¢üá9Ô¢QK®bÊ­]dݼ D’~Ã-³£Ä`=ž¶àôxÙ¾]ß‘MEì¡$„’·oq+yº™“Èù5Á${Gz¢ö <ïåeqCÐPîܽ|½˜‚ÅÓwY)ˆÞ»)l¨¸Ä3‰Zzó½}0=ñ[~#ïžhð~·]kð4õŠº8o°#©Ov“ßPlÊüj¯1W®– ÙÉËf,À—èÉ‘Ød‰o¤Í=&÷NÜ£‚¿çÚÉ[]¬+G™mbè¾û¡ ΋1É%£ùþ½ö¦ŸGnåN‹·#~ÙbNõ_Ì,¾¥-uÅ—°1¾x*ýµ?ü]ÉáB@=G@zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1mirror2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.712786599 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1mirror2.dat.0000644016037001603700000010030513607166133035010 0ustar00hutter2hutter200000000000000BZh91AY&SY_. ÷#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàIßîÚÐç¾øÒ±ãÜòiÞ ï¾ržú0ꨠ…!I!) ¡èhÒ¾&û‚öûÝï³O­,^Üài ”BUk-}Ì…à]}£Óv¥*”¨îÛO“vøøÝë6i¶­͵¶‘Ÿs¹ÕwoYU=n÷{ÙèÊO1[¶EÖí•ÅÛC¶ÌÕ¬ÖmK5ªQ²36ÂÒÆd±j·ØÎÒ“m@Y¦Ïns¾†©LBd`SjxŠ~§‰¦ 56†M5=LÐ4›Mˆž†$Ù&ÄhÁL˜F#&™ MSÃS&˜4À`4Û* Ô©“@&b=OF¦É€£&F™0MO0ÐÑ10ÁÑOdÓSÔò1=ši¤ò›$ØI´' ›AA*S$ÔÚšb`&¡£MÐÐi3L“h2MOCA¤Ìª~ÓM FРÑ16†M6‰„`ž’y©‚dÁ©“˜5(FÒ”ƒÿT©´ORQ¤ÓÊiêmM6Ó'ª™?M)ú‚hƒA M¤ÐdhÓCAêb=Me0€i Ðhb  Q¡ Ð)€M4i &§¦#Ðjm§”m$ö“hšl˜¦ÒžÈš¦“F¦ÄÑ=OÒl¡é'é12a”ÙFšž£ÀSaM“S6©„ü‘6“Ò~F“ÓDòM&ž&“y m6¨$¦š&›E=&Ôò0“O&ji£f2 Ò&M™&Õ=OÅOQ§ªx l§£1¢›)šO›§Š{TôÈÐOÕ6š<¦‰´Ó$ñ¤ '©´SÑ©èÒ6™53SÓ5M²Í¸™(B2IŽg YF,Ø}YÞFõ“ÊͺoLIhÉNë™çŒŒEü£|õ©”u3‰Ö:ƒ;6¬÷¬ùé>Qøž¡Ù¸SŸt§RÝù—=WXxÎÄôWÜòN â—5çZèùðϾžsÃ9ÖÐóÜa×8Ìà†4a Ñ´2D(QÁã© ì}¿pÉ:b¿’R°&à >™º¡B TÝùè £BzvaºtEH‹psvJ¦ø#<Œ„ÐÜp9Q'w~bYìX) /hM»˜†3<Òj»‡c|R¾SM½4èoüM~8ÙàÇ3Ùá'Æü “™=WAÐzܰe`-© Ö@ûr3›C,DЏÁÚàdqG/(J¡ÜX±‡î –©'# oàBbM/Õo ^´íýÄÖœˆ772É”ÜEœº"~p¸jÏÚt¦ò”Òçu4{q»>\Óo Y×Å ©.]þf)"kTÚÓ®Ô7ý‡SÊx»çN{q¤–xϾ‹¿!öòx›ï9iT+Ó¿µ OqlëÅ4dƒ±¿%¼d7ÄØéEÐÉs Ö8bÞû!~À…Ü5„æØïbÉY#šÒ6ZwSY¾#m‹ƒ½Þ>ܨÁ&pUÙŽ5¢ðä8¾“}3bæJGPá`ÐÂf8éÀ¥G§V`ðFŠˆ——É4kõ?/ä®ûIîÙtçÞC¡Fdò£7ÌdT8w ņ(/é‰ÐŒ6G³@ÞI™¾9÷ÒšÇcq*BÊ‘r¤½Øûú'‚3÷"<ÈNï$1¡ùã+XIÅoVÃu‚è-%üçzŠþ¯èj:ü3£‘ò^RH¢xõEJL_ jôµçŽNÊI6º—–ÃÙ‘Ÿ×o:ÿ µ—|Ïb}]¡ÙÕù,ßU|6áËÐÃ`ùp¿ø¸|ÎÃþ°š©÷&rÞ$<øÑZðµ.z7¿/oG Þ²’6÷«K¥áìsªhaMØxïà¬Þ$#ÿ4Õ_{[™8ªš98ê|¬˜[Ïn,¡ê<™Ëiêª<‹Ÿ^= µÖeñ4ùÚ>Ì ²²¾ULš›Ÿ¥Ö)¼ÜÇËÝ))î÷n¦ï¦'¾“§¾ßLE<ßiâÐÊÆ¿´6°¢˜Šc>‹çicçs‰qô¬Ð¥ªÀVFFFFEEEEEEVFFFF±úààãg>ÇîwD¬›Ü«½¶mÖ!ç/¿'±Nâ=¡ƒ›§ŸÁÉÓÏ;‘¥Ÿ›œ{ŽI?“Úg$­ËZ[PÝÈ9ÞØöð„eomþ“’ùù ®DÇ©6å°ôÙùƒ“ÇŸA­±`¥ª[TUšaQ`cni¶Hn5zèÆÈ„cfÍþëæÑÞ©s …# B7Ÿã\˜s6w„—Òý]Ne2)/$¾”˜Âé¢\0 ôÄ.4ÙòP¹÷4Ø‚ÿˆhTT]ŒµêøºWDlÖ>[0ÃÄh×›=ûŸ¡Ê9çj׺gÀS o‡„d PØ*Em±ÈÊ@wbDô5äÚHUÄòÜ9+]9~Èçe†ƒ;ÄûGÅ$=ó·‹³kj™èh–Ð~«{§÷7J+s(óN£¨»‚†a;¡ëµ†~ßóp˜¹²(ŽmH“h­ÅÖsyýò'–P>U-øUJ&©·íÅs;!ºmŒé¾œ.K)£÷ŠN„4ÔN*§¡e mîÇÄþ÷O‰?ôtû½›þ¶¼·óЦ½ƒ¯›”«˜ñ(ëGò—9GýGÅK.kñO~zŒœ#T¼$†òÛy·XvÒœsbqðuiªwjRËfuÚÅ8௴û°’ó™‰õ:LÎYáÎ6cåëÏÒ~L¡îcq$ûð×§ìäö¸t¦?„«fÖlË-Üó^z©qUƒØ×™é×GUì+wªéqÔž¦E‰‰·Äk#‘ªÅTëÉf ¼wBí]’%瑪èW¡ÀÇ–’T’j“f!"îš>²VMñþ²rˆû‚¹BâÄeBŒŒ…Áx*].XmÊA;®sëîqV±w {qÂÐ(R$(TX-k\­é TE.—•.RéeевÂÑeY*ʲ®U”¹rjD4¹5šº?"°0Kø ››½s¹ýRÇ[Õ_•ÀÛ$Äu‘½-êN ìÑ]VÛ{½Ž[*ÅZ­V®+¯á.¶§qÉ0ØåRæÞȱŒF X2 žu©Ù°2ÒúÍÅfúg.—ÒùŽl]S¸sφڶ®ÉÍ5Ιݶ¯ìmF(¿ ƒkÆàb‰8.‚ÈÞˆwˆ\[LV ÌXí”$«-†[)†Í“Âþß;YYWà)¦OªQ\ʺš¼±ÕNF¶¾æåKÏ• Q^VÈo^Z²¨úÅâ*£ÜQ_/²jßÉ\êQEC•ê {¾*2vâīЫhJ(ªr¾Wô5UÒ±E|ªJ¦ª¿¯²£*®Š‡«l;\[ÒŠ­£½*ëÖ²w “«ª¢¿b•vQYØöWy˜øegçeÛfäf_]}¬ímm~Ö¶·WYš8˜—¸x…fèV&–Ž~wçK+$£ºzYÚhiþ%(¢I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I'ú¦ØDÖ)¨qwÜNžúqZ•‰Œ$Q)$!þµK•EK„N0:v#Å™ÿrïuÖã­)5÷‰q@ b‡ÿ#y$"ò]Ò¼¡Á6Ù))))))))+º¹$’I$’I$’I$’I$“ŠáûÕ|ë÷ïß¿~ýû÷ä’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’lK®ºë®ºë¤’I$’I$’I$’I$’I$’I$’I$’I$’I$’I2ªª®ºë®ºë¿¶›“óñ_¯ÄÚ&$3S+E·B*oýÿ<^*ü[aV+c‹v +-cßG†UT/|"xÔö¼~Ó’Àùú>ñÅê·ü9Æjüã¸Êu3æåI˜Ã´öfŠYJ÷)ö“Ežæ'üøÉN…<'õ®“! ”I¼ƒ›Š[û]¿úY@¢½}®óõk—e{Ï[Š<´Tï1¼¡ÜIøÿœØØ³]ší ˜kFÄr&Ï×V¿ñO‚ûäGõºÍ¸¼­ÛòÛ'w(ûGXµgƒ¶°´6ýßvå“8›&i]ãðÃÚÑ^×Ùÿ«“¿ ¨´ öøÄ=;}Å1éljã̦v®Fwa£YÚëÓü¶HeJ¶îÎåIZTx•^\Ô;,ÊÚNwiŠ7§q¦9¿¥6'雯zlç÷ŠÛ6•Ëé!€ýôU%—x›ìŒŽù»\æ“ ÓçdFªi¸ÞÈCõ^n/.d‘ç¤Ø¨ BR‘—¹Ñ•ןj97ŒVˆl¶ñí‰ßuž¾ û¤ÜÔ*ŸE¼¦„æJò»;²Ê§¾–¯°@÷@š ¡ú`¨Ÿž=L<Èùr²¯•X¥±xûžÒ¤>Ty¸‚ù$ÐO^"ŠÜDLt‘ 17¸‹Ùô›Œ&˱þ>wçÜ~ÍUÒûCC)î c  oPEU0¤TEP¤@ µH“/Q$'gDIö*ˆ&±$hìQب›Q»,‚¨ÊH44!&v†P)–´—¦Ýy„¥kPKD <}D[0Y;uI„®ñW×ì‘yeꢢõxíå·ÅÁ$LY ¨%±m1j   4èûŠ‘J‹¨­”މ2JÖÖ©ZH±(”P¢} ±QŠ97†Kb LÀ.ñ’Åч»„HÇEäX‰$p"„Hå`€7ÐRA0±l«EL<D/Uá ݉¾±,¿‘"iH!i@Ph›Úb’‰Úk±Q?*\—ÉA1&ÿ½RÊ%²]'ÆJ•E\:¼;ÅÍ'–Q_ÐñÉ|=8Ø1äQUp‘J}D™% †‰RH’BD3J„"¡ Â*"DÍ…$}4¨j =Z$B1dB,‰Ï©$™u |•IÚ)Œ¢“žP‘²œV°¹è(*¸gQ@(Áä}Êø°wq‹çfîLÍc]h:½¾s×I'x‘¡徊Ѧ¤uÏ"ĉK:–i“vOΜêiý>D´ˆà”A"ª'À*:!Љ÷ ˆý(‡UT\œ´€*§1Dçú€€»˜Š‰‚Š‚™h€B.Ⴆʧࢠ·(ˆWÏ÷1Í] ‚I¸«´TO±XˆBH‡²‘Dç «¾ DR"¨êH†Ð‚„9B€ œ4TNr!TP¿ˆŽÃ½£Ó@àü¿gt‘ÇT…C'"IŒšR! äìßré ‘æ',œâló訒™™ešˆ)õꊠdà±9ƒC¦ ñÛÅ­ºQ-•Û*›á„Ù|¬EÓfuÕ(¢uã_(ådâ[FÑì_Q…§çþk¢=ž"ĉE-rP7Ê|Œ[Mml¥iBCÚã^¾à7R…¥Å¢EDT&ÂßT„„¢3êbÐШH'/$MVzH• €ð!PÊDLßÐÛÔ¢ ÈŠ(ªkÈ ždTWÖ€¼¤ç`€)àrfÓÍ÷wýãùDŸYœZe*tŠH€Æb95Û³b´ê©áË…€ø]æ{ôV¾9«Ê€zÈsÈ ™£Á¨µùŠ9üþ‡µ°Ü2W|JrøüMÕc—ÌÐ^‚f 7: $„ˆnR I'”-ûT¹u¶qèR!…ëNorº"䨢V’”K$³Dª$¶H±‰×y_¸Éém+r*[ ‚PS+ÌŸU;$H‚X,ƒÙ§Bæ´[u™#šHJ·°³EDð('.r–eBYDj£EB!H¬€H³P44„J¡eéjµJ9b° {^/¶:.ŽÖ¶Ö²ÜiZQD”Œ'E(aŠDI°–&ì–z³¿’T*)4¶\¨Êá—¢4 ˆˆH¤*dR‰ÿ^ .A!n*L$¨U'úìm#ˆÃ-6!ŒçÛ{íîó’!¢ƒ»µCüâà®^C9pX°Ï»S¼ùË‹ï®þÝ`íhàò çží„¯L\@oÚ7&p HIÀbÞö·—Ò—zidèØÎ£‰ !a{,:¬Íº^ ‘K¢!dˆ)é „PT¾b#|ž…71ƒ51I${Ø¥‰,ˆH’¦'S*€U+ƒ`o ëfõ!ÖR¸8Û;\¦¿˜]7ÇEYâY÷5⺗¼•U*ù….G^Õcf×Õ•ª¤&5¸0þu;ô C„‡‚b)£ÑÓ›Íóõ?ŠêáóþÏUìí?]“‘œw É¢ë÷êÌk½ œHEŸ¨x­Ý†‚ i!F²ƒ˜Ìün. v !l1R $b¼KB0ú ÑÅC+6QUGÎëíCI÷þ†J‰¬¤˜\M£q1™2…« {´:ÿ“ëøÅgLTÇïéÆAÉÊ_K%Q²‡M(}<õ9‚` !ýú¬SÇ cR"@ƒ!!ÁìtÎUct ½À(ÜÜÚ jâÕË–Wbª¥T«}Ób¨±kP¸Ò˜«a•ØXVÂEסL•ãMwùM=ßljO£uø›€º0§NP¬€’:¨©¯ý–°ïǼªàx^ðÿ¬/éå¨|o ¸ýÞví»µÿŠìz^:Ý«”k:³KÔéÕ“J뤘õK?Otô|cïÝÉUZ85ÒdÃsž wûlïCL®[!¥­1XbLžŸYëâ²í±'J|´ºK`}qOwífÇûºŒhÎ " Øæ!ù@‹‚wDè ıôï’ OoK©®RL(f:-?ÙèÒœ©×5h:¸Õè˜F‚`°ñ¤%ʸ¬Êèá¦þ˜â#ÕæŒÏ·>ñÏ¢}¥@¡™AºÄpGÑÙØ8TO#AD¨tÄbS—¨ø6­ZQ-Z–MPÑDâÇàŽØh0onÆhÉ‘ óŸì‚v÷ÞbTJ ¤S~²º¬‰»ò0$¿„öX7ÜJü½wQî÷º. ”P3ãǼ¯²d”äzVÄZ}y*’ж;É|Xñ餣·=œþ·}ÎyçÚû?kýÝåÖ²ž>°ìÏt©SQžã¥R×Wa âHÉæPì1Ùª«¼­Dôaš>\xÃ9øÌ¢sþÅ@[¥ÂD‘X(Œ(ÆÛ5%¢:ˆEäÔë÷”ª•)*û)÷û. ÷%Ͱá=X6+@6æ‹*l²4îbpqð%ÌÄG¡@DöâRsDÿJ¨}ˆÐ€ã„dÛŸv/™¾€u¥øêáÝÇÕŠðDÕÐH'WሣP;p÷áÃד+³¡eƒM­iÕ‘¬ ®nCŧZaùtwÊ+@À—Íû(:ô‚V‘pšZšy ¹:éB=Ú®ìPbA•ñ¥¬ƒÉú”Ó|ÂÈSÆÑtþÖê;&RÅ‹ 2h1 ñ_.Æ@@X„¥7–4k?dŸv†àwç°^dFá RrÔ@(ö`sµ>ŽaøcöJýVïÀŠPëê5±{xs(_¿ Ü wwžGV™ÄÏàèú]•Òi0„4çûp¦²|7ä7Z¥UUZ¼÷ÌþÎ_öÏÕåò¼ßåjþí¼RS4ß{ïE€«š*!Ì?‰j×å}o­§Û˜A˜‰ÑA" FæS‘:¸¹÷»æ¤Lk -§eR2 Òk*ýÚ^í…™;Ö2¶Ñ•¯oëg½]ƒþÉóSÄ#`Ì´MÚ1é¨N >ÂY,—µòcÄ-cÐ M8†Ý›/`¼3êÚ~ùÎ]3l[Sj¬ùx²ÙŸºâ¨A¹¶LÖõ‹Þ›nÿ˜¢·Ä+ˆ±½÷«õfQéƒ"vªF#Vã [Zµ—L¿ð²Û ‚uÝ–ö´OÂz@ä~Nõ`]îû¤Ãp—S³Ë£i¼J†L.ý$Xž]¥ Ÿûÿ¿ „‹´ýgªÙ0æ8ˆ~7ëSo|Rü2irÍÞ¦. ×Ò§Íd!ÙBy‡0a9BCýg/£V¬.Á°™_ÞZ0¬Àw<Ì'o}v™Úã¶"7JvQq[é¦aÐŽa“Ô2þ ‡=DÈÐh V"mS»:$ †ú6½Ù*XÁórß1«~ùû”ˆFŒvÌ…í÷~žá¿ÜcÒF›ª;žrÐÆÀØõ ÚXs°a±‹‰Òϸ\”åötW?‹šÃ:QO‘¶ iàþHŸöL0GI5Sôk¨½„_j`ªÔÅjo×Aìâ:Øñ°ÄÁööTþÉëª×ûö—…C¢æôz ®ÑÍ£Ž_\ÉåcÄòøŽîGv†29üè݈A]·ÎÈçܹI,RJ¨¯…XX.\€¹ +@™¼8¨·PE>r&wYŽë´ù(oøï[¹ÛõXq›çì©6eÊxõÍCî$v¦öXÉËa»+ÝUþ×s³þËH2ä°ƒƒN­x ðZjDuDŠ’øöŒ>ë‹<ŸYšÉ3øª”á}ÜU»X#ÌÍ,<huô}\ׯ\mh.£©}™aÝð} ¥ }HÛÜ‹7ào´íó¿ÂI†jèÔ=Õ¥W…ÍÜ`£WGÝÄXˆñèÛv‹ ø.‰£œ£™£FS¸„¦Õ\?=?ñIèWþøÖpŸ–™Œ…}M;Jp\ýŒ–vÇóQØqVrîÆªž‰ýÎÃ9¡Ñv³¶çX×ìVxô}âÌ]­µ©ÒÜÈãl™bD *Ä7t(v°ë óÉþ`ýeG‰2 ¥ûî“ÞÒrî/,¹¤¦{ÖBÍ*“¨÷MÉΨùXÔ±ÇÑÃÑÊSåÑÆÓëÖo3 ºtþZYàg,˜!¦¬X}È8D.¡Ém<š…¿ƒèõô,Ââ ßò¨¾Ì”/àt1[x;¦ò'»B‡bC9b͇UßÐ5>õ/šº#ÁÔOa‹ñ<,:“øiN#×[QÔ¬mžM—éÒÔr”ÌÓs£?ÆúŸŸÈª¾vZ_½ru&YØS1N†ž:OCú/Cã)7j<î“'rmwµŽ›ÑLzžûyû·¤}J? 'aêeZ³Ëß·;Ë·ßS„ÆÃ™ÆY¾õ†%=*k¨gi'iRy ¡àÚ}^†µL”Nˆt.‹‹À¦'g`ü;JƒÑ@4eÝßB‡CCÏ!ÊСÝ@ÅŒC•ƒ¯ÙP<ø9]… ÁLcͧ¸§¡M-:*ÉÃóVgt¶Oɦ³ŸR{¾šÇ¦ÆŽä…ÜÎ|àN“Ã÷õUVKøl9+q…ÍÝIêCݨ9¯CÒˆó°?„:6‡yLaÝôe˜@ûpë)ZûZÝLf›½¹Ý)ˆöÖnTÁLÍ­Í—&‰OaIú©Ø”ÁNÚøJre6Òj,ç+¡ºÛÇ58?·aêIâêìx}ešê2>>^çAzÌZw”û}åûœÚUL<¥ŸíM•=ÍκɸӦ§ª§â׸åÉÔS»§uIš¡ÍÑ„¦SðÙz˜töôÈÐÛþ哵£Aý¯Å»î÷1zÎi{ ö•"Úl©Ž2œÝ'sI§£uÌ>C˰`ç AE¤.l  ¼ ˜khħŸG<¤ntÝݽüPyM£ëô»¦bë³~G´pŒ3ãÔ¥RiùW¸åé¾jVM%9š2”Ì)úrË#ùhði1ÑOê§Næ™MÆÍ÷2±ûi¬¦†™z=?#UÒYÜÒv*N!Nª•’—bñn>o/ɬi~EGÓ€ûöb£'Kq¨TcÍõ>ÏüùVLñÍ íéñêl„_{5‚ó„ìvu}Ošj‹wEÅdNŸaÌõº-ççµ?—¸r²œ>(à?}ù~-½Ý.w&‹EiŽ¥¢msÃsì³)Ó|9$’0‰-þ^DAhœùF1**JŠC 8k%å%ÌÕh1÷Ñá¹&3§§€U†ì·‡V€@ ½ )Ž.a»Yµâ?M/ÇRhTœ¦ÏBNÃR d$ÀÑ&zÉuLgÐå£ý`í* £5ÅÅT_w*>C­ê͸ìš1 0#ž²ˆÐ?¡È©àz}‰<‰Ô‡ÊËOÉ=¡ ŸÞ|Æli(…rd©B,ŸC÷‚5[?êÀwÈ®¥:UZ²9š”ê“Rí3ZΕÊsmXÈ¡ìÚüŽx×}1ª+ô\–íÒî×ŠÎØÏâÝ‹ñ³9é"Hÿéd7²tsgz–ø8˜j.Ù@zuk¾æ˜öŸ¹ø‰íÈ,?®ü87gã,3߇ÛÁk{IêØ@±€ ý cñ6ÐX¤XR†¹õl[$KΟ״È9'°…fÖB,ROæï³ËÄì¨á¾ùÑUó˜þ²beut±c“йzu!\ÚƒÍÝÙPÕv²œ ›Éd‹beŽ7†ßeܶù¾E/íâÍuVª/¢xÆÀ9{úÓAGsx&û¤@ˆœ}$UKú*Š„# dŒm7Žá¸]ÁèbŽ6QÕ46««HËõn…kíZö6 g¾åÿ_ÿÅé‡úQšŸödÏëÚƒ¡aa:©Š‘PD eéÃïܱ®ƒÒð0¹¶mjTCK±Þ’š?õX²Ç“ ×ÇL¼®´ä>÷sÚEüH¯¯—‹Œ`û2ŒseåœÆØï-qFÜ…Ë‹¸Bþ1k7Z_ ¯²Íè.7IcåA§]àŒH^h2îÅÏ|Ì÷~´{u:¸ˆ…*TÂ/‘‚MVo’©;Ê»9­_­š€±ec$:)4ÕîÿŸÜõý|v;æñÓNAÝ'…3u5úð­ÁíÌÕµÝP$Ô‰ö=L)Ïà %í;‘7oœÛš_rƒkÖE`ÕÓˆÐòCÃþs—ß‘“ü|H9U7t•’>là¢+—[*LÔ‰ÞØÿ·æ2 Öãã5%¨Kîâßúæeb®'ªîÄ\/xH›ö·VYÒ-í낇ŠÍ°ž«³._’f‰4]«€ar¼22±O(€²Q=5ôνxÔ.í«Cù{–\‰Â«éƒóßë×ÇfÒv)'NõŒë3²…’9:ή»0@Sú;)¡x„¡!0Â$„|v Ks— šäp¯›c±×mÕ÷úã–»0k k•üôÀ$K$S†R)ôâxÐ1ÑtÓ7EùyXoêHœ,zi²¥ŸbDN>Ô»‡ê†ž. ‚x“ÇÀ¡“ÝrK8Z)ÂCE>%¬?Z\e+1ñ4„ÓÎ6!›‰èÀÇúÔ_^EQ‘TpÔ¢’)"’)"’)"/cãÄÒÏjd!¹çÃ_1púÓÆLÒs)SÇý`¥¬Yê[Ÿ %õ;,SýÄÁúæ3ãZ¼Çtÿ8üE‚Î{‰ L=¼\ljIƒ ²4[МA{Ïz¨'¤¦T¤Õx#*e¨;² §’#~\:ˆÃZQûq3LÏXC §ý‡R"oøHïA,ÿy€I$Ö‹|?eO*!€ÝþjÕ«V­Zµr^½zõé$ÊûüΡ*õZ¬Þ׋ô;÷ ®¬¼°ãäWþ§PaC«¯ÞÐìI™V»Æ×‘V*eB>ä j$d<‹Ú4$¡ÅŠò=}m«·­r¬þãUT,m•l´44446Y¹»-”’I$–µ­$“+™â´wJ® }ªóšÌÚéõÛN…V^^RTÛJ›iWºµ¬•6Ò¦ÚTÛJ›iSm*æík%\× Ïì»—Mâ7ËUeˆ$s/¤¡0´ýèV­f{‰0î®hyEAßÌþ˜rA‡€ªSj6¬llz::Zý~–”’I$–µ­$’ÿ¨Äèûn¶§É«L–  Sm*m¥M´©¶•6Ò¦ÚUµµ¬•6Ò¦ÙÈõÇöÝ ×šy¥B@Ž;÷ráO°t-Ž*x¯d´VœÔƒ @ÛÈÖ¬2gË éå°ÿ2%Û,1¬ cÈ÷È«¬-Ö>>=ZµjÕ«V­Z´íkI$ÉÁÏÿ*à×,«”9>:¹êéýž5pÕŒ«//NÛm¶ÚI$’I$’I%Jši¤’ZQÏ-¨ã¡QgžáñÖ%bŽÿÆ*QÇ-œ'æ7—Iðk˜­ú·œ5‡;;[‡Y¬Ã†I$’KZÖ’I‘ÉôUZä¶Ý}vƒͶÛm¶Û×ÚÖmövµ›z®³U_Ò½7êÕî7¨ÝSÑu`ñ1߃!-AÁø±ÿëÉœ¦Ó𔆽é“kˆén/vÚÎp‡¸Â2&'GGGKa°ÒÒ’I$’Öµ¤’d{Móþ­ÆukU{šÕu9•Ëmø ìÌÍ8ÛoÀrUzõæÛm¶Ûm¶ø^{º*öÕ_æÞÁ}_‹ÍVbÝÉœ2zÙ³Éù,ØÌš89ž>–(sM8Bzõë×Â=¾B5«V­ZµjÕ«–µ­$“'SùøíÏ%^ÏoÙo•ƒQ¦m¶å­fÛm¶Ûm¤’JP­ÏˆðÿwWÏ7ƒ9šÐ·rjñÍ\Ø|È“Â4|N1u½‘ÝèÜšÅÕâ^ÃXs³³µ9Ø{®§$’I-kZI&O¥|ç!Õë•RªUÛd_¶®ŠTª•s^¶µ¦Sm¶ÛëªÖ³m¶Ûm$’KKé¦dÏ›wù[›ï ~¾"™‘î†ëŠu¤ÝË-ú솘öˆá1Ôü6uÛw ümtÚÛÕ{Q[ fÇ_¿ðI$’ZÖ´’Lœªàª®“iÎßÉÆm¶÷´­kl-k6Û} ­fÛo¤®÷K ßªl)p”¤$ŠÂƒé«ë㦛·ü©mn›éÛåòn)¦œüüüüýÎó­ZµrI%­kI$Êç8oÙù­¾g®Õïý^×uݲ[m¶Ûm¶Ûi$ûpR¥JI%Иό¾_®Y¯ ÆpÁÀp|ÝÚXl$¶ƒ ð€u9äs²zM;/ÝWÿ³C»ù©Ò"F›¶5Íóßú^¼Î«¾«~4ü°ÙŽp6|ÛGX­­‘ó°ÙG‚þÅ9Œ­õ¥9™/‹ê€CÉß5îß5hžCþ+¢›N+gÃ=6×N†s¥¿£Ï¯ 0¦ì„ýuæ§@?ƒÁÄ!‚ÆŠyêî &…ÔS´²Óð©Ø]= ¦A,_IÏ¥W;¤iXøõc7n×¾;ïñ@Ç¢-j65/(k?€„eZîÒf|óHÒk\¨ŠŸ¢÷÷½|ÿ8B9ÇäH„yŸƒ^ÀÎöÿSa=§Ûœž'ÐÇ‰Óæ=m)öõš¾Šè ‚™{b6ÙËNÀêR:G“‡[À8µòrÕò¡¢ãßêNdŸÄ…iA :ŠÀ"¥xöò]ÿONVßëý³pVwñ®~6ðÅ_Žûßðßí •*Йƒ \Zæù‘%ú£{¬ªcï{týD9«áâ°´'“Òq Ö艎!¥ú“ -F3dÝ0*ÇüÅÍ¢’]:³ÕoaÉ˯SMW(b¬¤Wuy™sÂ+¯Ã¥{ÀÎí'Šd½ 7»:á Î'ǧi¸ ëÁ{lIm091¦è¿·E]úH³A™aøK;wý¾­½êâG«:T0ƒ0ƒ0ƒ0ƒ0ƒ0ƒ0ƒ0ƒ0ƒ0ƒ0ƒ0ƒ0ƒ"Š@ @ @ @ @ @ @WÚ @ @ AM´ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ FFFFFFF@?c‘ûÜ'ï7]uÞØîO‹Ãsš£Aä{áüÜ+ýb–—¨4Ø4yÆû!E­¿:—‹ïïËS! 7ê€å2u¸hç\|OœسJ%)Ë·"5>V…ø;,Š%¸ŠÈ¶BSò«r)¹²¨î%:7cqš}/8•ÄÕdló0M/‡D²T϶ÈýKÊ z3D æk/dúÿ¨ÊgÛ‰#ËåÊÌ®•g€D {d…«ÎEäùPnfWõalýX¹~ôŽ0†\¯í²_ª|Žé݆ÕxóÃ]  =B(°þõê¯Ì"êÅ딥“ÙM†ÿv/-¼MH·ö7 ~â]Ÿ,¡q o³dÞªàá'¡OV1í'ÄÒC´õ\•îK±Ïšý?ÇéÐÚØ¶¹3ñýÏà' ,оϫ ÔJ=~=…Ÿ¾ DrRÙKWL?wg‡i:RÙV EÊ•__¾ O2¥?~³ø¥ŽñÏ« ²w¯•”ç’}‘„5àžÇ¿.zÃŒˆp4úÙEÜiŒsí¶’"L‹¾5ÆÔWŸŒÂËçEŽLé&ƒ6txZãÁvµO'y$ñÏ0Ç*°Âà”Ä7?å ë³üw¿áÃÒŸA”7æùJKsrÕ¸bB&ŽíØ`Ý·äNn‘3ÂߨGû—~| —­†µìºko‡@;èÄBK憚êÈ®]š40¡ýî 6-*Pžþ ^Ì¥¸ ÑG¼|/ýx«W!nFAN{ƒÆM>‰íï·.tÂýʌ}Ãî¯GØýxçê[EÀ  ô 8ë â±ɆÑ{í?içwÖqãJb_ržünnäâBß©…ÔFX݃b£cûÊ‘ÎXŒášÌL47Ÿ#?&WŒ›3MÑÁëDLzú¡F»!;Èê‹=~¢úºœ"$i`mÈÿõHGµˆgø/Êeãý‹Àƒ¨T©R©Ä8BÆeÒ]~¥"¸•—‡Ê̘¥õ˱©ˆ×}r³Úäsõ!Û´ŽÙ›ö¹âÏúzPGØüNÛv•× ÿ„±c•óGÜÌÃDÂ*ŸšÔyƒ.swïÙÐÓ¹åªÇ{Å+ nÖ%5Ç%^ ôu£‰ðº{8<}[”d ö‚Áè0™3þw03{@Zkò»QúPKé*Á™¾Àž;žo*×â’sÑEf8e]¿Ö4°Áëm÷lß„(cù£3ÛHÈ l%?ð!»áª¬ö­“ƒ Uqm,Û4S¹uE@gÅ~€²æÄÈbø­²µþHä;‹”õ¤gàIýþ9ý¡KCt}½Òúꡜˆ[¢ôÍ0üû¿¢ßŽM. ªˆžÙŒ…ýÛ Î¥E½Ÿ· ©JõÁ¥Ò¥ùGmÑ’™w‹2|ëƒøw u÷Ê¥ßôð3™Ø ¨.%µyµ×,Mk“eF$Þ\‚V@®˜ 0 2fžÀ§¶Q©Ðy‡ŠËŒN¼-Ÿ  !¹„Gp{ÊÂ|vÞ ¡¦­àRbD'iJò1­!g G½1r”Ö­ìþ”65º¿Ê1·ÆiûD9îÂà%­§]qÐLºÃ=òõj±<‘.·.¯ÐÖ2Ôc«fþî|™« ¶-6gÉww›a";õ滩¸>ÉÉCßÛ? __WhŠY(ƒÅl÷Ò[¡î ATúz ü¤LgÞã"L£›ˆaB¤Ë3±ƒHHp¸¸…‹ˆ(¶”ÿL]‡™¨õ~0Þoqfåq#m &‡„•á+‚JíJ$£í“WüäºË ¿ûá–*Ò?‰tß³I "C©ŠÛ*¼ÃÀ ßN8À¹Àp 0º¾+t++^ «é'°3v¸T^ÿ$¶›ˆwR·ÐaÀ’XtßôBÌ[Rˆõ5p©ð2ûBR¤%þ8úFbÈB‹üj — Åž§!T:Y/WSÒ¤šr ÀrA«U"A;5†ÁXukMÿ¶YªU+ñß®—’6þl; Á̵¡(€´]])=šãrÕ-¨'Ë‚ ’#YpµmÓ¸dKžC2j`¯vØÖ&²¨|#¶n¨â9SŽ¢¨<Þ/a}­‘#¶èºØÐÆOu»Fî‡ $Ù'5ó_³%™Õ5^?Åô2Y Ï ¸fö3¹Tµ‚=­›· zV„5kGÛ9ÚNš4¤CƼ?ónNU4>±]y<^ã¥;`W˜ß c#«Æ²­V^«*¨ãZ·“ãE‹c'Kåo9Ã{u[Œ°>â7#".PVö átÙY4 ëßÿ:Qø¨©j<“^’ÍüxpBtÆ©B7žÊ&­CæCåêU—ŸœP„_uõÆLNoÓÞÈ+Š‘­µ:cîß €‡kú™q@±Â'Ýã4„ j@Þ„!ÿ‘,H‡Xû¥õÞó^ÍðºŒG_C:šmn"6™¸Ôó A/•­ï‡RkͲ»aÈÚýÖU¤ÈzË;Òô’_ãXÒÁeî2F?ß÷ù§MäwÞŽ“ÃúyÎCWÔ;y')"#µ #ŒÚ`þñ@  '¯ÉkïèB„ ü=†ÿ–÷fÈguø‚Þ¹è‹û‡ oý¢mé¨×Σ3@Ï—_ÌÓZæ@2øÑ ¡ïl4n+±Ä£lªxqÙÚ2ÿ;\ßåèÑW„ ÞŽhÅ”Çt{ÂHcØ `Gíu1L3T`éŸÎûÍ®þiA)¿ÁOœ)j[5ÆåÑÙ÷“¾älm,ßSt(¿?ÊéÄ#&ô[Ê`ý%r Š' åÿøÉ[ÎÈÍü,WÐkCúûœª•ŽU@WëWÓË¥[ðTå}ÛQ.…z3®S|+£»*à<5–€êÉ=7ðâ‡ÅâqëàØÐ•.Àõ¢DP~gnv™iö@¦À—«Ðt o×wçépÈ_ésž¡€ió“<Šõ¨~1ÉÝ£"ƒý½øB½[bü ðPXÙÂýÇ,MF/ÙÞºkÇj´‚jÆö!HtqŒìW¹ÑÌ‹°/—üVQ‚7›RÈ]ø00AOëºå„¿G‚•ãŸÙ&yl ¶H„-\È$Ú2þœþ.Îß½¥¹Ñ˜@@ëÛyϳÆ;ª_åçc"oÉ(4Áe¼“ÇõU‰]Jˆã™ôgéûYQ•§éÙ™‘ZK‚}|ó×›Q~éÃÄ/¢6ØZl^qè9Ž eì H~C ®`˜ž°¸œLáþÍ:·zÛctL v¢J+î¸éŒ=X@ ù·&5566O笡á#¼v\Ò…Ký‡©3¨ÜŒÅ¹˜vwÉ9¸]@žÌ4G²2O€ 8©v¼Ð"þsúoâ“s¡ê5†±Œ †úât’(Øaüý¢I“ŒhÈÈÈÚ_ùè8±ŒÐQ›@çö K爊,ªd+ö,Z•~‹Ÿ%Ýs›LÉ'È¢e3¤ì€àrБ·kP(ÐäŒp|Рà»é5Îôn°t9s¶6-s¼ôå)F‡‰÷×Õ_Š^\1úMîñ*Éa¢.{r+f¶áPq¡ÊfE"^ã_Áîùš—6#YœÎsr0@#èjæ›%ˆÍé E,ò¼ÙÆPŒØóø1}Жp¼Û<òÛq¬•ˬ&.ÈŽõšÖ¬2Ÿ—aWÉrÃì›mµ(ÀÝÈ$Ä×~ÞôÄï“–ò+é@_y3F»˜?:‹|ƒjÄ »oü§ŸZoš ¢d‚·;AÑ®XVÄ*Ù´XêºWÏQA˜ZÑQËðZÝÂqð!ÄÈRÞ…?§”ãí5<–Â_÷ó.Z ‡°Qes.“³êÌ ý{x½]¨bpJÖÈ#ïezSü¿œ«8íñ„”Y%zS™=ù8hb]kŸ•—¶éO½^KSÄL¶|øuo®»ÊY«ÌnƒÄ´LaPX<é7LÓ ´È~°Ô†Á5Ë=mþº˜pFæ/ú = 2?9íNþáJïånh£-בž/mŽ–hnÛ5ÎÐJ…ØtgsI'ØÉéß¹éõkÙÖG[‰Ó:^È `÷c×ê·»}g1O­§„%1µñÔLš#˜W(@Œ]ÜY–ï7áêÿ_JƒŒˆŠ ð”t³¤õ6~÷\z³yV›âõ®åyþç!ÒêËìizåÑ— ðÆÈgM5xMJý…Íúu?ÑqÅà (aí\5©öµû­t—¡§ú Z¸[ª>,Ý9С¾žŸ¾²b¸t¼õJ@ª®E⋸e¶qÖÅuŸÏ{÷ùÐ/sQT/dzâL|*Òš¤0+àž¿?è>álEsaÖ Î ¡¡Ni”Ø Vð?{Q¨QúCza 3¶>dÑÂDzù+™=ý{Í8äv=NRm_.~E+³0…޶¹OsþeiÃy‚¥£•tâfŒó†à¦Ãp>gaE‰®ç;Ãø·,o¡)#çQDÀt·Mç{ÜŒ>^…(}²ÛCô“êt 7LÝÇ?q¤è62J—®îx|¡ÐpÓMzMߨ’†Ê;,ó„XRRnz¹)×xLcÇ)@¶‚º"µ57ÎLÞCݾñ’ñº,&8ÜíÆDàÍѾ›Æ ßÅõ^.­-GÆŠ-N$}ùøÆÃV!íW“‘+^t6N¾ˆ,§ñ¶¼UÕI‡kæƒô…çû3«¹9ŽxwúQùÜîÏî÷[Χ®2®åZ¼HD*o% U\_Ž?UÔ×´_¹ù„ê/‘¹tP¾äôÚa‡øÙÀ‰ý=D×jÇÅYñ7 ÊAd;A^è6¸´Í)¶7˜ÀÐÏñWìQa˜Ÿ?!Ðá{Þ7ÊÎö·.QnÏw ,dq‡7U˜Páw÷Û#üöAH=+z€h6Šàd϶»Hd½•^z†>ü+¦ Þ››ÍöÛðXí@óˆ›KÞxÕ‰ôØ»f4éš>±{õ$ˆok'Ë*tXµüsžpB<Á´€1­Ü+—'ÑÂ>Åžk’™ïÝŽ·ÙÏ\Mø´´¦zå™\pµÄvL :´ØçÆZ_)ótÏz2ׄÛWPq¥oúÃçÕÝ·ÚJ^Qw³¨Ã@Õ$Ž“Ú`v/êíCÝ<Þ€â[ÿÐõYP{áñ%,g&ª‡w”?Ç þ´wƒ’³ú¢»´$c‚Ø¿À Y;,YbÄ+3áœ/U¯\r¢Âƒ/ (°»‘¯ã#‡A¦®ÌÒ ã…=wü€Îµxxþ¢"s dyZ&¶J«ÔQÙ [Ž3 ´Å+ê9¤DôË1šnÚNþoû„iǪ¨è.ÞÊÙ^gÈáô„„‹K"^J,çg“¦ÚMG§ÿ†úã¾Ix[t€¢W±¦º±Ðzy–y÷sŸ3kÇ_ÎyH¥Kã¯*מ= €4±Pù¨¯îP• Ådº|K!eÍñ°àzú Ü-ëh ¨ S¤XZ:,X²·É„óòlTM†Ô ´è5­õJwåoþKèøMx?‰Nà{8¶æŽtk&/§g7ojÄÔLJi?S0†]›úöùüÜØáþ=¤·¥;M¡_!w7ïj/Rû¹FѨzY ¥xþÌäŽTD~!¼<É̳`Êm% /øJÖÆâ×y0‹Ç#;‚‚Š–Ó—Ë… ÈÓ{´Ìÿs¤lúþh©Sͦ–&wnê6v˜–5³ §Ô‰ãÞ(QͼþÒºè>¢õD¡SÁk·²EÊ©!qÁdO|½µhíAmE]=yqºdC^±dQØÉ3Æ„ð8ÓŸ[X^»±Õ­Ç†,#Ú–å|±öY¯Â¤àˆPgN¨ZÁ‚ ^e+iø¶%E½;è“•¢TSd§©¾Ð외ö£öãv—®áfåw¬×ަ,ؾ°y¿C,À¹sHrC$gœ/ýº´—Ç97‰ùœ<$“V¬ü(¯–*¢ ¶Iÿtr¼¥\MÀw®eð||`)½6ƒbäG®-ŠÈfDÍÔóàåÚKooHZöF¹Ÿ1ʾ;NUÏùK“üpyÇ’1árßr)ReO¹«"D"1Šü#(ª‹¾âßÄŒˆ.^9Óü¾¾¦â:d–ÿågUㆳXÐú1õüzpÿ½à¾­¼úè® –Zó ù•ÎøaTQ*CpõÔ5(P²&5Êy G %Z…iÜzÃ`þžõçúoB²SónUM;Oc/c¨.ôÁ¹¾‘¯è ÿ©h™ì®¯±]ëR,¯ƒÔ$ÿQºBñønî:Øø (>¯Z,´ðE;*¸"ô!Ž—_Œ›“bçYsOÖŒÅ3 k¨Žx_ܽrˆÖtÄ}£¨,\Zˆò/u(hÔ?uÏÎÁuµ¬S᫨¼ž…ùš‡ãF͘%oqÊ}wë}S—jàixéµx8üi¸ùÁ^±á®†ýõa”Çb€H‚ªÕx`_&»m麙¹gm¤4 yüŽ­t\žûºœ8æ¤iÆù }í-‘Kô\‘\á]ÍÞȆÁlÙO¦@qïÞ—>Œ­<‰[HQŸ·§Žñõp·P“ô {;Ý0]0‹jž'ˆlåS_/Ö¢X,Yn-HZVˆvS´DÑPÒ¥{¶ýD`º¡çú$ÇK…Y$sžÎe€IÊùþ—ÑBÜ8ÅÜ%'|Çv&ÎËkè)ñ“PÚîLãwYZ¾C¡´ápØHEGŒÀ?Áðö/Müõ]µ‡ˆ¾É”JÄ&Á¦7ï0×0Ñx­QH‚?<ÉžÔò˜Ñx®jšRŽO¥l°ª =€žpGã¿"Xu.zƒ\“þ w,!ÈÊÞm(QííäFEª1™ò*ƒ¡y±u¹^p¹ˆþÓ“GîÇ4m±Ó¤|WãþȇµÖ:Z½'WgЃµ(rS”)Múó¦’ÿßg ¾¦ö.ñHY‚”½Ç_kó%€·,7@±”î%•PÿèOë7ÌvávÚ“‚Œ ,ÚM@…'fêE>Ó5á7@_8V Xí1Ú±=eÉP?r1èÁ7 µi¶C]T0šGx<>VñФ;KÄdqxáØ· ݦ¤3e7r-µµKï ¸2¸ßë â³RÁ—ü¶‚ƒøW.6N™Z…=˜¤ ×B€b?3 E³c-‡¯8²>õîšå[ÎDPXݵI€ߨÞâúÐ2à¿2wº† pȊ̘ÍÀWìZÒý§\õ'ÎMö’§6åiQjv³w/%Ž5·ò¨Ìd 0¦ƒÀÂt­+wƒ™ú­Pþï†Ás ƒV éøç³JdßTǬUùóIÃîò‰âe3Çšù—ƒ›ÄV²Ê‹"q¼¨búÒ¢$ÒNé?51œ¯EÄ?ƒõ—»ôœ§ô1z”=8µÑ2ck<£´Ëè‹K~æüÚmã8_踮¡g qBÉf ³.À–$¾Dñ€ F‚™† 5Ö§„ "$[Á› YQw=çSýY“wï»êkùnãÔÓÑ̶kMa{ ˜¬Ë,Äö»nôÃIŸÈPÖc—N,æô¹,¹³Èx AqîoT6M™#+¯.ŸÀH팇YÍcíÄÜÌ0"Ds¤ÔwhNÏê6Ù<¸uóC <¤×}Fhæ4&€“üÝ>ݧ%y‰º``w>Ÿ9ÆÖ’›I”÷Rľû·_ÉɃؘ²W¹þú™cþ´u SN–w˜°âÎiûèå ƒµß;ÊG}„¯ û âë] \‘‡›sŸÊÂø ôbL"9€žÙê¤÷l×Õìÿ¡¼¹±Î#†'_]5O%Ÿ+„  !ÐwR…î3- ´ Ùëa$5”½;KÉÈ1U(áÿØoc´(Si#¸‡h¦Ö5[‹¿!:Z‡¾ñ0ŠÊ ¢œ}1»¥úÿm"¸”Ç€cºÔ­'Y+Ï;&zÁ3Û†pä¨ áþ4†M©rÛ<3 È\ÁmQ´É·»Z9?$Wy4aîB¼ D¼‹Cw{ËTœ[Ü1mKŸã G´Öw3¹Ÿ»FW5¥€uó#…«´‘úôÝý’˜ÏDqËçÐM0ÃÅþ7—íþ5 Ôî=¤õ܈;Ä-Qª–jJ%Ûß·ÈéãŸ0Ò6„Aëk9xëŒ$ã@ßo‹þöQÉœ29bBO— ²›W^_ß* 醹 Ï[œ%EhÿO;iviñ6}Ôãt5ñƒžÜC!ëú'„+Ê”/ûÓ‡¡¨$K%L©iÞ<½æwuºC²9¾LäåPæX¦]aS`7 ²Øú¯9yý›©AKS4§+áƒgÙñ²«‚µ+_YÙx4énò_«µÞÙ"JJŠrçÍ÷Þ9Rg^D”§9“´ôse·ó'6ºý¾­•+«“­÷ÝÝ—a6Àî^ˆÅ[ÐGãÚÛË9PÏÞ•¼ñðû?¬#¦-ßZNɃÖ3òoÜ‚!6ž ¼Ãü jü>p÷pðòÒØëe¹™>ÿ½î2ëüÚ¯Çw¢qÃAo©#ºÊ¯3†§ÁîçÓŽN}õe8šEÓÛÈC@2ò Z˜ƒ¼ëÝÒÈ«¶ kûA”Æva4w1úM‚.Ž~}﫹³2úÊ7bK­j²`œ‘vÀf±Þ™Ý딈ô1e×{l–YC8èÖÅ™¼œrlRÂ( .£×Ëz;$‹?Ì#¤¦ôºÈÎÛìô›¤©ÇUÇTk”í~šòKiÊÝâ-€H¢‚ó)Rîb¤ß™xÔ`E¥Ôk­q+yUqH¯$6Nª)LÎ1Ù´tkÑËh|æD9\ñÂ9“· ¼GOGn^ -½TîþÆE ÷ËÊóN–•e8‰Û®à«“äH~-ßÃh ŠÇʹ° Ö²éߌ/XÍöÅ)Ô…'€u£ô-h[Wî*máæZñ<ÛÙ¤ýô“ï:èéÿ¨tí„©ëA´L1‡Þ>ÀAˆÓÕ[R½ ¥=*ÐwØ”¢@Z‰sÇò¦‚ŽÉÕq!‚@ý‹U!cë9^ôßýNz0^Ÿ‡ÆØ¥ðÎîÍ÷u\èvˆ%ܦ¢¡ù¬F“½H"ž$4ÎÚk^Œsƒ’JÔoûñC â©€D‹Ql!ÂÙU?}u׃羘ÅjyÍ^b¦C2‡•Ÿ{wã››îOmò:,ˆý¿yåÒŽ5^®ÞbXD:è^lÝüG§U˜ü¡ñUZ 4 eÇŽÂÿYÄ:ó9¬7 Çf˜e—«)ûûZÀñó}°èõÓKåGQ>àÆ¨\¹u7M²é €°ž#@Y¾ÅáŒðùTÕcùм7ÿ¢b-ÅÛ{k0äkÂóuUÂlöµÂõµ«µŽíÓpyïsÄôŽÜt´^¸µ ¥¼òým¨_0n;=/IwÙZÇõc/­‚­¡ƒÍ ®³ä‘áeT†_ÈUÂ`_ru‹ÎæÕ|nAͬ y½jÅ8á«–ã½:¿ ¹×zê­¹H5é­€•B¦?ÔãZÔ¨ %k«Ó_@‚úX#Üv}~:Ô‡JÑÕ·žãXZpÞ<¯Ö]=41¯–›ƒ®!mi,™ZUe(æ$ÐuÅ‹`ÖÁo9HÏ6aà bÆÔ]‚ˆð‰œ÷ø³ÊÓÄ|}´n¨×ÝMðyýòóAÞ4 ûÔ\-†@„ |ü/·±„xò~I/§tk°ïòá.9ò‚X#ŒgÔÀ  ãÔtÞ;ÿ“£!`ö?© ޵2ž)y‡¬¯|T/Ùq& ),èëÇïR|œõw¯3…⤮QÓ0…¶îZ‹–xüáWNwÜðH“6ØYGFÀ‘Ôð&¤±ÇzI2iÇ’ã³[ä#ÞM0ü©‚†ö?ÝÖˆÓþªk SÄÛÏ7DÛÒ<«†,fBôŒ—ƒ9ÌzE ª?*hTª>p• &ŲÜÎþªÑ^ ÑÕ™DXÝ:ë±Zn+ó–üÉ`ï'{¾2ŒA›Ÿ8þ5õcþÅÒ0•œGx³ Í;þëLõZt×»¾0ex຋µ'Ÿr1¢O…F¡ÃšÏjGñ6 „„b¹Ø¿D+G–j=+äÊp\d\ßZàRÊ 1´ýåÌ…†Ãm§Ð3®už±Änó¸[Çb<ÿÚÈÖÊ‹O|…0N`”ÑàŽYÞ¿h%==ùæs4ïõÁ^wæä%‹?ç¯'…Kó$æM$f¿%ñçÇ«;‚"/Óš ŒA܃GÎòÓga(smS›´{¿á¦nß”ºÞþ4£r‡U™ö©çiî ñLþƱf´D¼ŽXÊËAUÅÏhÔ¼-®¢%ßK­L ¦ÂåÕ‹þ‚v.22Ô|¶0aš‹ø¿© ñyàÂ/ €¾i.¦‡½e0¶.Ô—3Œ§ºÞ%¼½oŸÆMœˆˆkÜ=w_žä+©¤¬&`FÇQï‘0·®pTàØçÓ(( Gi'u<~0Ãp¾5?Ó=EÂé3øÒ‘=À2È.éž×‡H$)(Ä‚7&JzfDÁŒãqa³ u|ÞÀÉñ§<Ρ.BMx„xWÍá(ó]¸ü8ú!ü¹†ýoã-6Ìü Æ+?Ík  «èÇŽÄáÿÜ]íM6¾;o z/íz²œ:âÉÙÐY‹À©b ZéHGð÷´ˆm®Yü n  ¿>â´t\š//1 Nìï]’k?/²þ•ýôö®N!~ø-~¥ÔßD|^|ÍýXWÑ¿á'°‰Â¹&A¨ @Væto*u\áí·e—êeò"¿wx¡Êo©Bû!p¢Û¨&5”'If†¥bâ,~üWLø×‚ž—üœO„çígЙ<‚4q¡Ç¶´Ì̹ȡúW8[ÒˆìšÀÝ$d !ÉÀ~* €¢úvCÆc;àç°Å῞!Ñiü×ï{g[Áù%¾PÖá‚eÁjÍöLÆOkêg¦ÕÉÎß3çånýœ#ÞéAUWóq6Ê·È¡†¼xößá‹ý=¾ Œµa~Nd ï!E5f €Xwfu[…–dp‘Ö醧­Ê&‹” OO†` A…#¶Î¤ìæ­Œ_¸¥ã“Wî„…}§áí·DN‚\!k#ŠÆ­ €šŒ~¸jF@\ø”)±éØÃŠôUâœä$ªZr*üh@‡<Þóœ}Å0RúŠe“;(ÂÕš‚…8Ϫ¬ðÂô ²qˆT€ ³ÉPÇ@DðÄW’4½n§|×xz\ÏóGc¼ÆøÅ^ÞèsZ×}º§½úŸ_åmÛ>¯r I&èÅ„"¤B!A"$Aˆ Ÿþb‚²L¦²–Z= ¦$ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ6>Þ÷€¾úÙ±¹ÆÙïfúfûï±ï}k_J·§¯+Åé¾úkë}cG¾îF}§oºë§O{Þ÷®yõ÷ÞùW§½æB{ï}z÷×röÜݾø*ª~š„À˜ †¦MOÔfšŒLš›FJ{&&Òž&›I€ž“LГÂ6¦MOhšž§¶£SÓ&™3Dô&Œ˜*o&<§æ¦Ñ£Rxž£LÔžh0 ÈÉ(ETÓdÚ`ŒjdÄô&CL˜L#&Ò`&Aµi¦&©í4f£)äÈÂjxšdÅ=4ô™i©°“ѤôÔÍ&=&4LL42a&ÂeBªh”üÈOS&ôSÓÑSôÉ´"y¦“ ÍŸƒTôõG‚jŸ¦Ð4žM&i“S53ByF€§êz©¼š ¦aOcTòž§£)´É©áLÓ †“MSôh"„UTühÒ`ÈÔiOÓ LTØÍ&™¦F¦a˜É¥?&ššm1‚žÔÚOIí$xš2§°MSôÕ?"fSÅ=dyô§µSô¦õ<¤ýÒ“Ù'¦˜Êz*yµ`#Si‘B*“0DÍzh12 44ž¦& ©˜F&#SÓ&Œšjlƒ#&šl©¶¤Þ¦G¥6Ñ2OÔɦ£ÃPô˜&˜iOFýSÍLšž#Lšž˜#OB6 ™56Ò‚IH@i¤Úbž&S ~Jl 4'£@ƒSÀž5=QèÆ”ñ6”ÄýSÍ›F¤ÙOSÚCÐÉO§¦ oTýDôÀLÒièM¤žše7¥= §ä˜DàÒd›tz¢ 8 sW5Ä~ή\Õ0á4£‚-…¤ŽZÂ$`ÝF *ÐÃ¡àŸÆ iJJæ |!GÁ:.&|üäEø„ ö»–6ÿ(îmÈvgº{rN»ß¥ŒÚ0f¹-»ÄL“/zC":êå³¶*r“Ÿjk"£âåLéC®ê\3cÔü۸}‰ŒVAØŽ™/_´çBxc‹7Ñ<Ê0¿!½Ûç6™>„E>T7+‹«Ñ;‘³²¢'ö}áúʇ¯æ£ä³õ²vrKQC†&O7.g€9…JA4 –?E›ªGD&~W÷èôDñ×ß Y?x°Á}O†ØØ‚&3˜ãB­q7ýJ6ÈÇ—gHyØ¥t–st~Ù$Äd÷Š'ª‹,Õÿ½òñºvÉÝÙZ'r•Ô8ÜL>sEs­ÞQÏQÛ8–íþHhA’B q$ ! R°b”¨ß8!ÐÀà„o@tH n!"=A(0ž !ìc 'cÈA8 ØÃ±Àp`Û‚ÅF(D8œ |Üt$èL>ˆQ¢ìÚŒVŒ18YQð€Px>D±GhÜžXðA0„[á„•˜Á0"€`UCCe¼p'ñ„øõFI~#p†@ ÔÀ@…HèX“…| PÌF¼`øY—am˜?Fà–.,£%Ì£Àc6ZMhìû÷soG“zàõ’²›é¼UøW¢â XF3c`a0†¾èÝ$Î{€õƒÈàAx`‰¨p×@c£ í]sÙqaqeó–uïèæ8gQŒ€“ÀKÈݺT‘`!‰€ ² Òžp>9¦I3f  &d3%À8À ɘI“Ì ™Ó 2C¦ÆBŠi‹(iç"íÿ‡C‹ü"É‚§TáΊÆÞ]†‘ä¯Ïýøoë‰ {Ì)6 Ë„Ïõ=g§€Øwyr.9‚#•‚Ä»-¤‡z1ÙHM…ÓÞ)qÌÊù”¸PÓ?c°ûjÎn›YŒ‘ßv¥î¶(BVÛƒ%‡€h˜ Nç­ÍJ‘²x§¨EÚÇ‹¢à˜Ê“ÿ¹^@?v…„ƒµH1v̾iã_6“¬ñÆu™Á^x`?Õ]àr-¶6å½t6&_–¹’~íÈ@ ë@N5Ú¹uïýõ¨2«¢(À>xæ|d ¬O¥—(¥ÉlÃïØJ œfàu%3]<–ˆVrŠqvwXýÄü\)0:<@;-ƒÃƒ€·°[}ŒVfå îæúRu. ×KÎãZœœ±Ø lnÜ–SñÇH}´(¡Bób@S:K áL(<’Ê!“Ò³^‹óq¿f*ÜûÞúàŽ™6ç_“@4‹“«fbÒ$˜±ÉÒþлºž0—„TgÎüL§X‘á|.“]j}!*¹|¼,iÍ ¶ƒ;]F:¸«lЂþÒœ~‚®·ð— ßs—èîñ¥ù‰hWº¿§÷hb·1=I?g{ÀÁw}È­•ëGFÕ·¦¿  tÉã†_ŽjÕ×¶¢,&¼yʤ¢xE«©¬±£bÑ dØ{n0#¥W·Iµñ©á¼ÛB·€«$ èäl_Œ^ôÿŒ©›¸Ì7ÿw!‘‡¢Ù|ó6²Æú_>úLáÙÚEîC(Ò†`±F¿QÇa¿sq¾³ÛâŽâN†ïa‹®ˆv>åôîJ0•~:âµ0.›€r$}Œ ä°°ì"ÔßÑu˜WÆD« „º,¦?2É€ &SŒ¶Œe…÷0–ºUÂöÀTDÙ^Ý>9ÇŸ¨½3„÷Øô©Žä”Ê!3(q{À;þªbÅåõV9Ã>h@-úÊz•Tݨ(…Ë×qþ@ !ÊB—9„ª˜ÞÈ·å 5ÔcßßürhøEæ±4¤ÁlÂtb턜¼‡Ú«ug_—*il•+RR”G€UËbèL–+Û %U¿×²å.—*¹²¾lño£Ä •—5£—d™wÇ¿å~ÇßTcŒgH`”o_ž2YÖÝÝVÖ4ȵp;»QjˆÞ–]Š<,’{§ñÑI5+̃jŽò\Á¡ôî*   Ì7ï\†$D?íu%#Ú–ç«%ž\Ob‰àÓâÝ`VuÄ^Ú­ØÀ àbŠáY%ÐØ¢Æº¤ö«ºX™]ó£ã¨/'éX¸9ª\yèÁ– ƒ#±cÿ‰îo£öÑVz.ºÑ “®À]ÅmÛ†ØÊ 8µb’V’—¯ö䯥`é¿Î©0Úøíüœ» Iµ‰’åÃò‰ ´ˆvuôGU‘r*F>j‚(‰˜;݈÷JHaª DCÂ^š &þ1‰5Õ8lîµÃu |èÈz&ài啸¿ŒîØ‚¶M{³Ð}µÌ^` ­²Ï[­®XƒòL~aéÊjû“â`âöó}˜¤$ˆ“€2QŠ2A-Șò)Ç5ùaIr÷ÍÁ¾q€| q†­ö[·ŸáyÝl°ïûe¦ã»œgO˜N ê‡OÕÕøègzºGx:=o‘MÀŒ®½U±qƒÍ“,­œ>¾Ù]YýÑ*ÌMC”Ää=¼ñ¯V±~$°^šsx™nÝ9«'nu;dS”ϵXzîLÁÙÒÿu‚7 ûf2™WÂr›äê5žgļ¼yiÐcz £±˜CrÑš¶pÀî;ëuûmH7•zðsm[ûðÞžlˆÒ˜x¸·3k&{~†^ƒmö@âB®xŠ„ˆí‡d\º5P‹lOw…‡ƒ†‘ñÀ+€?8ã7‡/¼×3›¨rßÿ:¤t?[RÚ›i•nóGª2v¡&hÁ]¸È¼%Ün§¤·…Áb78Œj´à2ØwÞFÄU3.ë­üÜ¡öîrK¦ì;I€ ¨–NßWÐ}Ö$c‡¬ñ—·…›aªóÚ ({p>ržù±[ŸÖ®Á×ÙR5·¢†âlù`~k•–HâZZ;êùìHh™íMÐG K’ï|ˆf·ÑÊËüÒ°‘YäM¨¬CË)šé;Ðñ·î´.BÂI©~UЯŒ¬ß}ÌXÚ£gÝHëÔæ*,.c³—Ù ü«¦Ý¨Goªûµ‚_F»œk„†¼öQÅwJé-Ð<öúÈ4`¯^…ŽÓQǹHÁTׄõb‰•.¶š;®Ú(ÖŸ]Ïfjâ{îEñGX"éaÌ´*ªo:G‡·eKä\ÁE\77~ǯ˜é[çª{=† tãmåTJùôÏ›í-§‡_k€À»q—G2ŸòÆ…I³YH>KŸ vQ¸¾É2,Åþ¯9åòJÓB~›O_—x˜Ë^à¨?mÞA8}r¸â¨þ°'£ØÃ–.…y¾«wñÄ­ñÝÒºº^+# ¶‘ü­">æðÐËÁ,<‚5›‚ RwÅî qs]Ð.hª“R÷ +ò¤Òñ€®×’YlÁ»]à#¥(ÈÓ©¢[&5®aÆ?~C·Vös’~K2âÓ£`ý…0ÌÝ98&pˆ uÕG6×¾%­>UV*G`dòÆvãál÷‘‹¤]õ¡¹”èÛþ9«Ö›ò^-òŽXgK¼9M*of¯¸ÙwTµ,ß5޼üØÎTøï‚R)å±H¿J :†ŸJ"È*áe°v@  olîÇ\ëÿ…®ÔÚeû}®Ùà+‹‹$-"QkŸl+y=ZM(L)$áÝ«hnšHùg(­µgØøhGeòºQ³<>x²}r︇d ”NbžN©8LlÊ5D»䔸<jU…üóÎl!¬ÂëU]áçó©òâtºý0ON#ôøp°KÐ$«aÏ"Nàd†ËL3nRX1? e.û?:6MÏîS2ÏèW¬x\#jZŸ„üÓ²HlG¹!æiÒ‚°±tØLXØesUÁ‹Pè Ž‚á·—r{¥ii¨!Ó‚rB$×–}4ïÀÛa{«2¯­£§á¶|·e­Îû—±ýK$˜tÔ7è‘„xÆaìÑ v¤TÞá2h³M.ÎMk¿üVf¥6FYŸžÿ’ï¦f)Ëj'U¬) v)EVæ™B.O8ÐÑØV*+ð†HvûEˆ ¤¾G J’5Øïy9dÔÄà4çbnêúJ‹‹&"ôh×ׯÛÙ¬zë º__akŸ>[ë»[á#F>G†ÓÄìÓÆfˆ7€Ñoé cר”i %œ}qrÝôwsgT¦BrÛòž‰dUÉÒÜ3ÐÀÏæQ­¹^Ãj§­þ¡&xIÒ› ƒ’–ê#R‡4=qÕ ½.u#o:÷ ­1ÚÎwZդޫeEüƒVƒŒý{&³Ãßåß)×\Êï~ü©iú°®ö E”j̇j¸Nñçs ¢ƒ8"{„1Ë?È<`._áCçLÏxíïÒpk>û¿IÞù CŸþÏ¿‘Ïx)lÇö‘¡„„®cq‰‚hF(d°AÛ·"í5% œÒ°21/Üíy4À-–¨”ò=õÚ¿Y&¹÷Úš*#ÂW-Ê.þG¾ŽëÃ%AÄåèvr¯ínú£¥Ó`]éê$8„‰¾îz[:ƒµªÝæ\W±5oÌjZŒ{@…F£o`ú”Q ¡~Ö—Â9µoiåpͺ`R¬T“«/Æäu€?r×wWÍéÊ:¥ ™‚¢×‡â>öàñr¡Û˜Ï¸U ï!°öxI˜\x@òѦxß݉üŒ€Á5Kõš+Q_{2Ý0äôL­ñÚǪîøù¼É33ŒBG°…zj¿í…¡ì7(˜›Lû\A˜¢¢ûèXÏÑÖ½4òsä캪¯–lõfŽJ€ÊyOèÉïmŸïc@Wºþr¶ýÖŒV£ÞúÙ7m¾—´ K*(Vó úî¹Vd¾K“pØXµ‚à‰ê̹LEšÀÌè…NEdÎEäU מ¹f‚+„Ôó¸ó’4ã'Ñ3Ñ6J‹|+xÁH7:… ZásMGvÆâHhè§ÛQ¥FÓ¯Ezæ3ûÕîÓÅ8'©Ó[•‘¤CÄ-™íÒѨˆ´XÈŸõOwÙxðv#Œ]L õ´K™za×´þçöÿ5”I=Æ;ÛÍÝ2‹4ï2‘yвµÞ+$£jó#Vÿ1”Ÿà€Ã{¹Ô¤ie<ʃó«ì=˜œ˜wÕï!滋†bt‰Ü½¢&á3* Ú¨¢z/ÜÐ*>GYN½°æ^ðÌìWòŽˆøùˆhSã¶ü/ð³ÊŒNÇÿµ²$˜ 5Øâzq„*~…¥á\Øêå`ê26® °ä¼ÀÕÆC×Õõ2‹‰ñ;pçÃM•ŸîÄ5±„ål2[²£l’Ôš~­Žë‹T'ËŒß ‚ê{ǶÑùÀzM¼Ýßʽmt«¬»¿K?ÁåÓüȹe¤Á–+;‰¢ÀÒ½ØÒTßÄ:¸ì´€<   R5kFì5ê 86 ]—œJ?Æi?ÝóX«‚¦F± ^r¿÷2¨…XmN…ƒxÚj|@ ~ZÌ!ätLE 9ã<‘uÿm†”ÏGWÐt(é.½>÷߉›ålêýZ®Ž›M° Ë=–ŒKÙ‡] ¡oUö j ã}᛾+´×(eŠ ì¯õ¼ÐPCPsñWé Í}°¥&pÃ’”u¾¨Î'óRfø[ѳ’‘®Òø92„8f>lˆH¶Éj©)éÇÜ´¶Xþ¼g ‰o«“×íuÞ¾G£í;äà8Z>e÷ÀÄ8q[}X{Ûµ?eè„P °·Þ(mšœÀ(¢<Šž[ È;}„í|µ=~Ôùz=”í'ϨütpP¿îˆ†) +ᢘÉöì7:Ʀn–äyh8~0(M›Üè‹tÇ$ßï;_üÒ¾Z@þÈ9´fß]à>ÙÙ mn|ßvºqÒ6@Ehú)¤2.¯Õ[Fš‡ Œm÷4Qnøù?·¹²¼XÇÙAÁÀ¢á9òº?˜è»wÖ*í7ht ”óÀsÁ/©)£”×UBöä¬G)sM°˜fç8¥­ceÖšþYf>v­=ÿeDGß}>îLJ ¿ÿÌ‘¤q yáV½c›"n´ÀU3‹ñB€ +([f¼éÕ*[B)·Ý:ËçIó«íVïîï;;‰ÊK{ ¢Ì.ÆX ˜š™%¯ëÄ}qšÚ?Yósc$sjïÅ<Î.¾õ gS”=+é;æZ{¹†”áþ­¡¿àûxïB¢çžÎû%fK!ÑÏqœëÜÄzcЋѱ/EÓ±ÿ°:JoáKîõ謱ØÿŠÎ£Å²Éæk)EKc/bó§ó¿v³ä$EVXÞ²«Ì+þ©(ýôå*‚#·[­32îÚ'$«ð0×ê6£‡}po§qfà'%qëÓ•¯bÚL$9‰9Ås¡L7°zb3¤¤ù‹ û¦Âå•àÚ-Ö\Û^Âgi/øNE‡^ÆÿçÝë;ž8!_ cÍp\©Ñ˼Ý.=mOsسñr.oðú¼šäèÝ›ð§ËaCÚ%@»ö»ýßkÄ™Õà*R˜o»A§àSy9”`  qükƺâ§be¤¥)úíKÏLŒ˜i›Wó9@€ÿ߀ub2ÛƉÜv­y˜ÐïðÚN2„ÏÛ"ZªG¯ o‰fº2ÆzC“_U} m1ndc³@Q¤‚a«2p¶O@³Ø'.4åVH×3ïvœQî¤Aß²²ð]ðnüØH=4ݧ½_Ãhëv8yêlÿÅm®ßtµ<™¡I$~FBu9üß?éÚLÉÏæ³Uä௶—n¥6檌°­™ÜVeë) ”èÍ¡»$ÞV+}±…CCxþº"Àìrx[¯¾0—½§ÙÂoÞj ãeXmÁã“‹kv [p³ªÿ:%iV)µ°éï³àO·Uûô¾:ð ˜<ÓiŠ+uJÔ–HÆ5<é¨k>vÆô™­—¼m»ç§=¯.ˆW7§Ÿ“r¬‘cëÃàW:ÞSN+‹øGÚŸ} VêÄÛ=@jÀ;UB­ãÆ1,kD|´N‚Ʀ쎙R³ßY" ofHÑÛàgâ„ä†*#ÒZL‰†ÿ³HhUåjNÆ47Ý”}öeûÎÔÚ¾“ëöž˜u£[þ)²õZ%ægŒe^´ía.:¥ûží_â1‰ô0(ÞójÀ l`žm{QýÜ5$\ ¡Yѧ[}°m•m1æî®oE—Ã\e¬qã†x'ž4×~j œ N cMd‘€ñHéŽaY¨—óŸD±,A+æ‘넘ZÛР¿h—§÷@½5ÕO;nWXÙ‚Uxï:=›UÿïŽÈËhÿ0ž´ýÙX(Å~–ÙÜÆš_Äwúr­M¯·ÀÏzJŸØ¨7¢›ÔXúIô>³vN ‘¹Ÿ Õ¦>¬X;ÃhYÀ6É4ñp¸@AúuQo×¢öï…ÌA7ä–3ì`ƆŠ+®Öàâ—^|nYP·»–Ó¾ÃÌ“SàU9_ÉÆU©ÒšÀ:æf¸Ðõ_/• ˆ¬‰ÔBãÊ`Ìy73ų; ZJ fÉÞËÛSÑn®-õ’HvžV7›nx’õà(ÜüžAîŸï¯eÆAûR` 9ÈÃOp|Å3Ô«¸A…ÍŽz/W¸OÒßn¿ç±R·Žm ö LæôÕé>6%„fälºÀf}c}qÝK`™N…)~Ú”/À²Ó¾¼<Ôâo†šÌçðÚ†:é¨q¸,=H Y(f±IÔßÜj©2c4+•? Í伤ҳéoê®LóÐþ2ôÅœ_5k|•§ÆÃ3³tÙ Qòè²…›¾˜þ:Õ\4Y .}3‹žÍê*ù÷úÚÂÖ¾føÈPK¢mãæ%:©Œ¤æw“ÞœdK2£m: È­íæ¢áÛa2ýêî%~‚¬§\?<¾v2™Z«±–‚¼™JU9Õ¶Dãµû(OµmYÁt˜ã$+Ç®{âcÚË.ˆÝ~‹(Î…„Š·+Ê9c Ñi‚;êáµ!Ççéø½¼«¾]x‘y›ùîÚÑæ]… ݸ¥:ø×1;õ¶K±ñ6HïÑÉ)U¨!§æAYŽëR)-„©àúü¨‘³è›|J>Œ*Ž÷“2Ù^Ýo(¶|yå¯õJ‹vi²û:2¹­ÀËýœ¸Ùå•?.÷x—DzȤ/<(*|üîPÊòó†&ÛÌרJƒÑcnAKóÅbwoMü8“¸‹"‹ïÙŒž2?-­h²ÒW¢kU¶%k¯¬SyÆz}“úï™1ˆCêÍ_ãò‘Ìâ£bÛ¤2q©,‚ÔßÔ:ÔEÕÌOyþ&ó—}Ë͵ÚfE“Èb•oç¥Ø£ò·’¹í÷0ù™ÓMB:n¹²‘¥u·SIyG1õ¹¡t›@æ­>lýó¯.·§§-ä$Ô¯R”Ür­¿?;*÷bÓòóÊN¬£-VBIŠª~I4%χ5Ç´·ÜêGªL‚ÎKùRYÞ¯.ÁùˆŽ¯ÒzƒEï܈g[ ºßÞ  Œ5.³|ÃŽtêiÓä¼cÓváêÐ3˜?$«`Z‡¦íIkÁfù}VÇ,ýoŸŽöNO—±"ÖCRG‡vŒLc\tßDê誘¥´.‡ýg@oøõRë…éCPF·\ µN¸Ú¨œ‘ãþ³~(‘¾ƒzÛ^ Š»UE427 ƒ:ݨר7F85Q_mŸ¿[Ýœl”¿Oó:Nü|²@„îË Ÿl]Â&ÉY$üD_²©OÑû›N¤oª©³x×Ò¬ÅjvƒæËK‘pÃï+Fr“bYv=ü#gp[‡ÅäÅ;ÛÛo ×v8G[öý3Zù;5E‰ÐÙÀp<×þ¾Ñ)ËQýj±;溶L£›ƒ{Tó¼lìO ã œ]F*4M-gâ,Iªó~ '¦iÓs¥„b‹á­d™Ë ߸ѕ:"iÚ9(4§¬HqÐÐ$ ø¹®×ÜÓwyG{Z—Š«â„cf+NâË>eú£'ìF‹°’OýðêÖK¨ÿdì‡ñ¬ê¥æBž†gnèöv,ÍY"3¥þ‹_“kºXOê¤vÑ–‘¨¶o«6WÊí%y¬¾®ä­°Vw¤gÇêßzb«é~ð<4|›§{­qv–üǪð)”¢Lç?ùy_e™±p°ËZyâw† 4ƒª?#šµ$DŸýš”ê7å,ƒ€o™ º¹Á5é­ÝØOQ†´µ Ú*×yÞ§±¸‡º‚*º‡¤,ñV‹¶izïOÛÛäFg+nr¾W¿jT ˜‚°miU˜¢ûŽÓ9¾WíÓBBjÖçø2qT}ÜsÅuùµžõÏ¿k}¢XÙ)q Õ5ç¼q[tdhÔ±Æé¬ZOÆçÍcõÆãA훸¥T8?XaÙшhÝzR(ÿU]ÚlCô…¹ÈýNÛ¯Ûª:4CGEz[« Òþí™uÜSd¯…`(jN”7&Æ"\K%× \÷‚Úg_ÉfˆÉYV‘yúÓÏ~+‹[ÅжMs"ïE²À# €„œ=í"ª,9Ž7‹ƒåQ›’>¼úý e»K[IÅÒH8Ã÷vœô™%!m|Ï[>@î½ýäs¦=Sx$ø°²‹š¶m½ÍAûñƒŽ2f›²µk2ÿdFL¾ •­>™X™S¾IôBâÈ~¶•îü}D(Û Û¥ Ò2æ„#„·´¢ýPÓÜMj<&˜R_ñQeO©EIسÔ © 1ÚYU_¡û®õÀ•ø‡P’ÝäžFR~S!Ý¡ç}™5 f⽡‰J1ù–d~,Ð>L—&ÌÃ᥶\MLHŒ¬WDÓãñbvçSK"QŠeÑ”Ñ0wOx¯òƒ8x¦Ç©Ó-(|ËN~Óœk¯¹3!|1éöPqìýj9éÝõ9"úée-Hw7 ¡”Öûê¨xXª$”´ra›¤|©þ3Ëq´ÚÄÕƒcÄÓô‰ÜÛì—®yOòmwàê®Âþ¸÷gÿÕÎV.**v¥…Œ7j¨›·TÍ.´pâæ­‡I§úðDž[xeý-Òºyì8=hfÈ÷Èõƒµ‘üyƵ•¥ÐCv”y\ÕkÑê¾§Ïq®™§û¾?)Ÿ$Š‚­Í/Ђ²ª÷*¯—TëZ$&)Wû@ʸ. ¥b 5Š(#-2ß!«øÃá~] [Õ‘oü¡ÞÙ#ãY-¹°õ\>ò“ÝA6jôjå¢réVô+ú+¸ÑóÑQ!X€OÀ×aÜdy©‘* Ÿfƒ~ŒòÐÓ¯L õ†ýüF˜÷&™`çiÐ2§NOÏ×î¥Á^Û7ï·bäÑ/©É,¹ÖË8—,ˆëÞˤì?ûŽë|ÝKž¿Ã08oßËuû"%ÏjÃ’v(5©0¦­ÍÜâùR^ª~]0õzŒØ§÷ÙuÌò[Ú¿•½„ƒÑÅÈË£ñ ,¯Mg ‰È),¥èÅë0 ¼\‡à†`Ù$dN†ëËìe¿T0t—ÚÇٸŻcóõ±è«4öJ¶˜ãÀU=x£€A<]çUëM™COæ^tYŠÎðð3üª¤©|f}OyKq<ÏEÛ”*¢ÜœéÂ%Ø{¼<­W…j;,ÖAd•±’èÞIÜ •ätøRØ9–éV¢H¯™éþ.äŠp¡!êâ¾Özfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.703786309 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v13.dat.bz20000644016037001603700000007353213607166133034207 0ustar00hutter2hutter200000000000000BZh91AY&SY_œ'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàGŸ3ï}„T*©Q(€”(ôÓf¨¨UE Hˆ½0•ÓO®ºz×N÷¾ï]€ïeÍ÷mÚõ¯_}¾ûNÛ¶Z¹®>æ«ê’Õóî=žD½öút<_w}}öÆöÒÞÝ_o»>–.ײÝíz§8÷ƒPëëëMÙÔµUJëmZïu=×Ý=¾ß}ÓµízíºìÕ{¹“¯y»¶Þ惪®™{|Ä{o}Á•HO@L&M ô 4dÄÓLM4O EõGËL»—‰QIt’wtí¡þvø+ØL*|tZ•¿ wumæV·RâïúÒ&†vŒvý~yâZeŸÒµ•l|î†/9@Ó½ìý~œÅªÅÝÈǶœü¿-Ž#Mu%í»˜Ë,ε¹ÏÕ·±ñ¬®Ž˜éE¹òvÞmœoô†9’·´¡Ã]Óšê¼út¼¨Iê{®›Ê¬TLÓò¸ ¯,έyó%nÜZyYd[mŸÓØ1­.ç ¬øóûüèÈÔõî†%Á)±›Õ¨¢çl×-3Yˆ]=ögåü/É@›àUîbØÕï¶œ>L­þ}'Ì)ô°F”p^ŒJõÒ¤CBX£D6çNb é§vîqÆÒ4cq ‡„Q À¯ 4aÁ6TÄ:§‘hˆQ1£1H¬`0ƒm‚ÆplB¢0E[¶ìcMB 3ÝóD¥U°?°X ¯ø“ΊŠ(]U(ˆ*ªY ¨Ì ð¤ô`( A  ´-ŒÔäÈP¨ˆ€($À(VHB÷ Eeƒ{,²£YFÁƒ©(®5” ‚wÝ—Ä,Lo ¤¢¨–“BŒìÃfH‡ñ8„A% QO°0|¢9á˜ã[y0 ˆû9ḕCX5-‹JÑÞÕÆºQƒi`c”W Ír­¾('ÙhæG:5²øu€ß<°ý$4#mœ0„YB€|c&éî›Ô(Ʋ†¥ ØÑSFÚVÉÈ»À:Vˆ^6²!žb'¤æìnߺÔçÞyøB<øà;d# .’ýø¦±ÃjÊ!~¤3iÆü¬¡¬¿04C1£>B<'(q¥CH>±sD–ñoºùm1Nöì |vjÊë>±!Ç!¿;ÁôFÄǽŠÉÃBpdéˆÒ¶¥e(Aߎ僅;pnä·–ÒË-è“›ŵ;¦xnèeA [È1!=ó_à¿¥Á (Y ªÃd†­[ŒŽ•ç^aà¬Øù%ã§xçÖcÍ«ó‘ƒ=¢UgkƒÚ6rã†hPÛp3˜ Ó€;A¢ ‡ÄÔ!|ß!ýG©rOœá¹ãZõŠìôž¨ãÆíˆâ¡SPæ„! ôqçHòêâ4{ÂtH\wñŽú¼Ý𶦂¾÷ºW67nøçïvêöv»¹(÷¯Ëhî.%ZÅi†1±y¦GèÚSrlÌB¶vøÄÛõPAmðÑs­‡¾b#t8®`¬6UXe£bD‘‰‰Â4£¢#7è]7uqÈ}l¥8V´ )€ýÄ#ó[Ò± ñŒB‚§ˆTóÍ¥uÃrë{6qûh†Ò ÅÆ‘¡ €Vª#Ú=`áߦÓED(àŽ1¢ŒÙ£CPû´: 0yƤ4nDmŽ È6¡O¥|Õ3†Û›ùÕMÛv¯Á Ñ´?#LÝÐÁ0òãœóDjUË6Ü#¬`Êl¥ucÒ2xá] 5¶²Ú†#fb)ÑZ4cr8„…ì}¼¹¹ÃŠ`Ñ6Cµc(ˆû)¥ˆ¥ʸ¡¶²›YghÊæC•,ìL¨ƒ†€8&Y½B4¼0mmÝóˆÏ3ÄõÐ…sJHâ«bV!iØÜ;Lô.™˜†r Ñ€8b‚±Œ©;7*Ɖ‚`;cä/jÆhšt:†LåewßäÜ¡"ƒµwt9¶99\ƒÎp\“‡èg¡ ]=ôc}Ïg¡Ó7p`…ÆZ3R® ³•”x¸+…ŒªÊpˆa<šþOré¸Öâ cİqCÔàÎ…¾~»¦Dµ¹>ójÆÔ–C´wM ˆøˆr#–C®k‰ Kts ø§ ÷NíÆŒ±³+¥mê3ÆxÞàÊm Ôežá­[-€ôUîœðëÄ+}&€…²ÙF´ Ô6ê8Í}Am å¡ :¤9AöGŒxbÉ–#¹¼9'•c<ÁN&ÝÍ1 #Ìñcóà;ü|íêöt-ƒÑ ü>D‚à”\ÀÀ9±ŠìªCeÛl|ú¿|j¢e`4!Ò>ËOõn¿±âØ„OwPQm&ÚãRHHê!ÛÃk ÇÀá¨/‰ÑEXi!Â0;á?öÝÓµ<D;íáê² ×÷ÿc‹9 næðìŽÙ°=óR®u­¢³$ ËW…hÆÀyÌ–6!ؓ؎h7ßA´ÙWô6•Þ«ý#ˆAIŠûëœÈ:<L)"bœ°›pf’)R9´ V¡‘`‡3r–kªÆ"b°qóYưƒ(ÜÀ³÷x;s!h8½U@2d¾g¢ ” Ÿõµ¿µôà5cAú¸SÙº1ƒéƒîZhÊ1®ÚcPýúËïðšW0 ÚÇç¿ ¶¡Yeí³¡tuPrôhzô.¹ T)³£JÄ``\ˆ‹t¬Ud÷àÐoæO6y¥Ø8o8%OôM+‰,BÒžêB!°"°e+,röz¦Pì›@ÎhN²°C­vϦ…Z Ѱl†µ‘ òãŠ0Ä…Ý_ÚãXšE`ŠQ´ÌB¿áõßœB¬bH¥rµâé0BÙ é˜  6a¹‚ù€ÊŠÁûÉFtHJd ¬jÆ…ÔG’ôU–2•Ç £Cr1f½˜[•¯kÐÉ?Ù‚±¤3ç°ÊQ«©=Ú÷éÃ9ô¶9­´¡ à¯BÄýÎøv2²s\0|š¤OØÑ±œøŒNeŽ˜Þ®b±9ÆD>¨ÒŒÁãÇ:Óž°ßõp;—þD7ñ\4Måƒø9Vâ;F¤”à£Ü«më-Î ÚÑ!ÙØž {=ÅѺe¾¡Ö2˜†ƒ°µ«Õ_ß¼ËHÕ»ˆt1ˆµ°"iÍåµc(Ç»¿ÄÁÔ^ÄB ZḠáô~L³èèô—o{ð‰•-^ü[àÔUX„4ƇªÁí^‘ô^þ²Áî^‘ÒÃÝ*•–†ÈmM+L„¢%W±üo 9Êg Mœcbs0hÖx8Ô&=D120l½Dç‰YOxªõï Jþpv8ËcVOX ›þð8ÅßG‚B µ\AÜ8?ëH@x$c§ÎÎHú=ñ´Øi 6Þý¼”o†1¬iÆ™”‰"“Æ!\ÊBXÀ*Àš±ˆ_˜Â– ȇHÄÜô”6Œwlš*ömb·èvŽé¼oPޏÁÔ9ÖÌ ;PMe!As¤–!ýÿwûô|ÉÈLq”HTÛYGiñ_ÕÒ û9ã-mR³Ëhѱ¡Âü¸¶2ûkÒï³e}áüÉ•âJbþ|’©€ü:ÄèÁع ’Ò&X‚ß­­qÇŠ?WFæLác‡Ê1ç¦öO…—bƒÉÇ*Æž5˜±š!òÕHFºðoŒ!Pâ‡nÈéÙÒcnßZ|7„oø€Á (íF45F5Ãhv=œÆ1׃xmJª¥ á¯-*<;bº‰`Ó ;É!= œ¬¤8´2cŠ€Íh‡|óûü‹~ö¥ìßÇŠ¬;Ê´_ `þ±Ž·NâÝ¡¼´صÌÚ!·?SP<£kjRz¸FÚól¥m£,úç·ä8M๡ú^Õµ#tÛ 1FàÏC¸Æ•šÓµÏiµ°ÃÆëÿé¨CTûô­É€:wýö¦Pê«îµoòsö¿-Úór®n£ü˜÷Ð¥eصjÎ0G5u"ºk‰ääИ\_¥@׿ՠ åÊ2Û$ѳØ3ý·ŠÕJCš8žM[ö§´æõu/ÍŠó?&‡ÂúM· L#ÿ½v¯Æ°Ùˆס‰èv/_÷¸Ü¢¿‡aŽz[Àv—¨Pq_<5ê4Bõ¨&âcÌDöyÛ²¡°?é\‚«ˆwÓ5 »x9SÔ”¬¤£^ê®G5DÝýO'ˆéaã˺ ™C18ÃÛ9ý>ÊŠ{ LvwñÅ›§dÁ©ÛùO>9#å&±¥‰×T®´`1 ;±ˆT®ü¬ ãÜ‹Âm…ìÉ—ryv:¦{Ë CrBކͣV™ Å ñêÀm›W&¨V¯¸X0Ô«†¡ÚFà1\Qð°ÄZâ´0ÞnØáŽ óÌh¬ükoÄ:P´‡lÖ¯¨„BÀÙ#£t‡à{6rå‘/­ÁX• /!\…Àãé×qý™Ý»†½˜áã8q³€1Œfo©äoñÀCÍâ0îVﯜÖùþPýCo´òûή÷¼ãý,ÍŒñé¼úgÙ‡r­lYo…\ÕÆ‡­–¬{æDt0/ ¤DGœ2ãeåǯ\¸ØCšf2Ý1dË[Tb.KaÓU(Ð` òûµ?¿´çÄ#Czgb6ß÷á;pÖÁ…ÖåÇ¿©ÉІl~~oÓ¢gO‡Du]𠣈ÈéfOZ†9¼¢ž;gC 9ž÷oÉ)—Ô¡ÎN­VÇ+¼–ä‹ò°Bß#C69T8±ŒC2ü¾‘[Z£õ5ÎM\ tŠ Ðb Ô<*Ý]ôT(JÄ…íYãnrˆW8‘¢`Ö? Ì:7×~÷õ7CÖƒq Ö±0jX6†Î5 ì™ü9fÜ5/¤ÌE)P‘¸!A^ÖµFc‹¹ˆbBˆž|wŒl4t%@ñMÇ“›-JÙrêŽYÔ6p›N=çË[ð[ cóIïžl¼Ûeé]庲CXö®Y 6£D+{7¤.Ø1Ë´/ÁÅxwx4/,ÔíUmG2®ý¿0|oJÙ+±hƱô†™ †‰ƒ9 ˆÕW+׃a1‰ü긖D0(Xè˜ÆˆƒÙÑ¡,¾Ëwníƒí´Mk=Ÿ²s ñÍC5”ÍC‡;yBkŒ-•h`?£‡iÑhć¶3ß¹Û†èøŒmõÚ›Oà…™ä£T­PóÍk,kz”üÐ1í@ÚÇÆ$‘Òó´lŠÁÅZ[íÿ Ô¾ƒJØßÐÿ…{úº‘äÏ]¯×HY•©oÐ7œtº·¦”nðl?9y.©¤l¼BÖÚÏ·5#ÒI¶ ÔƒñV9^$~ðPÖAÇD|ÊQY$F¨*U*‚2 ˆ„€u¼cœµë­ÙÞ>ͤûv/0îú;wmÇ‚~ƒœi”oKÜã„qŒl§ˆé™®$|†ê¯ 3Ô°Á—±[Œ”×Ñ7’w/;M‹¿µÍ‘î«qd€øq€’xEßùóËñ¦ º÷7Æðd¿JßKíht/g{ÉÄkÊ׫§¦£C¾Í+ÝTÕT¬¦Q3yÊ~ŽÙ‹é.ñ³¾xm\¨Öî£ãô_9¨4èyôÐÍ;ݬlŽxq Jî^µ_zÑÄ¡Å4Vë·~øÇ\Ö…ƒò+–=wT£ ­ëeÐ ƒÁŽÁ ÑøˆQŒÃPÑ­ôš†·ìdþß+‚eŒñ‘¿ÏßÜÀÚ!qâ›Jº4+˜:0bÌÕe+³Wlð™ìÀiÓ*•æ\JðÌl¡ãºsƒR¡;‡âÈÖ¯q~¯ÊlÓxð)Õ®<€|ê£îïG®VÝuéêPô°Uã¤B_³Ï6ûúbõÂBÒ1…îí€åHàù¡’ž«+ ÄÒI?j(@a âžþ¹¨uMùѹÖF&Ph8ã0…xסlv¹Kz¹›ˆ1ƒ]hɼß¾½ LÅg<‡õÞø;ðjéSØ#\¯+à}¶Þ:Ú!t]‘ðÊ7¸‚à@@RETY]É»Wÿ—ÖƒâðNR¯¤ó±œÌF‰=’¨jP€’ïÁoåûî é\³õO‘^†ï ¿Ñ‰û½Ë”ö)_ù«¶ïÝLŸ—|¯Ñÿ4öÜõÚýúêc£E>.€Ø0¬6,ÀQÁý-Ãà¤`,É ýÄGË_GI[x íL²5§9Ò½Ñ()ÈT¡ P)åN_1wí ÁÔø#Ôî”:Ï“1GªB)Êwß_ð5¾î3I•]0‹v',c´;Â6&›H–SÝ`da"31ÀDQo•»Ý"ձȂœ@ƒ»üÜ~92ÂÂlˆWrIÖÿ·u‰JÉÛ>¹™ä(âöb7O¸Á´¡}ŸiUË22$휷R‡Šó[½¸ÝˆÜ÷ÿ—¹‘ƒ¯¿$Íå'¦ê?öÇÌéÛˆbÄš«’l·¼| áä±|׌EðŒc5¢íéŸø;7N8E·r5+ÒÞ´±ý¢Ôí CHÎ97`†Á¢{éŽüBèR9QœÍ4þXê3Tçw{šq'…Ïj­>7åt÷jþú˜Ë°üƒ´âLÝälÃ×5èt›¾éÉoù,"’¶9™–ûysÈ¡ã!~ô/ªé]—«öÂ׌Èÿßï¸êö{£˜!‚uåÕÝ<±j ç¹Î÷µCãy„"zf‚·ÜT¿6gã·•üv< mg-«ô}¦ÌáyÜ:žÎ„¥ltWÖjy¯KùÂG¨`u- NÀdq´£láýÙ¾‹ å1”9ôéµôˆn¼¾ûµÓð9>ŸLcÁÐZTï¶Ä׌èZ¹°xHø>šl7*îµRÕÅw·Û‡_fW¶VÕs“aÚðožº´»+hÙÇydWËQZ±‰X½0C4:Â!臒p•ߣÈÇ€OV†iÉy§ÁÖH…‹m·×l›0ï^xâ‰0§XERApðs¦™Öؾ’Ë¿R x9<-çdíè;^ÙˆìF¢(ÖÎ?xŒ¸Žý×iЛ¹€‰áÚýôÓ6g@+ëZ¢““깺’•ëbAŸúË—”ðý¹ùžnÍñ%3,Óã¯ÙŽr7QÐûôºkÙÅïCqQæ½BT,“~oµ¥R™‚ßãhtð~¹ÉÞïΓ¤·WýÑ´•Ì? Ô6Øøc[ã-ªEÄ–ŽF0'诟ôÉÞöó£Dú_³“‘©ýDœŒ¦GvEæÍŒIíÖ egÃC$?C´2ZÀ»…[xö-ᑉöÖtîdÚ=]+o„àg0V%k˜ Oß9 ¸­÷ Ê6³“w¿åß;_-Ù¿¾nVóT;Ï@4Ú¿«<Ï”÷`J÷ t¾Y–J#ËŽ¡(@7!ÊÀùq¤˜! QUŸ~ö‚¬@ÄÎèã¾°ˆQ.F¿¶)ï˜Éþ¾ïV rz˜P^%ÔIzøgF¶N^×#Ï&s:"L@IüÚ–bÛ’e¾ÅÎë(ÔÁ±ïi>9׶麅r^ZÇaÕëÓÍ´þþ"À96BN± ª’\Žó£M}ízpÏÀ³@·raµâ<ÉÊx¤4Óõ¼\òEÐÊYD ¸)Ũ $ëLþÿrÈ:ñàÖ9 4c‰!ä°µCú~…nÔ~õâBiÏzÁð€t_T^%RM¼ö9³é ÃÈÐÓ€akVÿ§G—p£gàÜÇÚùH›Rcíñ“ÚH.OÈüy{¯¨ëÕµ44Üvàú™V$þ;Ý ~…–qãi=r?.ñhß R«úµ…C(sC¸ÃàÓ+Èã8õ>Ö)ã-¶¿'ƒ°¹˜QÎm±­m´ž^—9ǽҩx(çtF XNéà?„c1’q ©è ñÓ€p§~:]3Ž9™£=š¯#¯CI³¤W~;Ï£ µ¦lªÝB^Ü£àjî–ÃPå õ¬Ü‰«¯›ÆéÊ@Ø…IÁ8ÄúŒn¼ê…Ï7&¡×¹‹b~f',…ôg¾X3݃­rM¦° ý×rÛ|Å{ο–¶êŽ%û‚ƶ° 7BÙ£k±6¨s•+x(ætF¶.À÷U™A‘+å8nDÀB¹ƒâ°zL›ãI§e¡¾¶C›¬ý‡«}+^)ê0æÀØ^·~ÒO{rŒÈ>Ý)1@Ý€ ^•îdš]xû®ùêHâD»%꾎z¦–Ÿeꎧݵ3øV <ȇHKEr°}ó–RI…“u›sïâöOpÛÛÓx¶‘Î<ÅÜ?öñnÆHn“­Øfôo)'¨ ’‘³ùÙc¤wuõ6y:¸î×h¸h8þö4¡¸å¿'̳¡Â$퀗Ûþ–õç9S)ÎÌü'[˜ýéØl]UäÊѶzUÉî*†Y÷0¨5Çă0 PPéÌ=íÜ­«>Cr¡`¢Ï'‹¶óáWR†R¨¨5cteÌn»»Ÿ©yÞþl©ISã}q!“ªÿö[Æ|®bk†ý—xq–eL€(mJè;Ema#bV(­µªV' ¦ç„ð¹òTÊN‰Åt¸¯Üî ×DžƒCP# I¾ýu›WÕ÷µÇ•þ]ÜHé:Ä'ê>¯b[gCaE³ûãÉá|^èåñŽ»Ù ¶¦Ÿ!·ÐÀ)bAnŸ*¦Ø²r€²”»£÷°¨[¡8­{Z÷~вòò¤FWm=£•BIšö¿Ab0€× ³LÕFå]‰;<ßÅð&ˆÀhCcÄrîM´<`å` ÞH"—‚O "^Ë"ø±»tÄ Û&;u˜ö|"ßd EÄÌ’ßÏÁ<ÚeÿR˜ï ¨/Ì¥€9û{°W…¦”­û¹ÿ¯šË¦i_Ÿ}‚Ôójï{í¿þcÜiçIJ`ÂÓÛe8±²^F(é¥/¬¹ÔwØp^õÖƒ7ò+à—3tˆ¤°àÒ)ŸË+‡Ô§ÐE^c£³BœM Ù”=Å Êr‚áÇÎÊ"œã nð+¸kôýUEŽ=Ì"£ &NGÞT_‚Œ<€Ú+C‘€X3¿^î×móS†‹éWþ!bWêÈ¡Q½PÝ›½`>q–˜YWã}håp’’nW…+ùxyßVG’QNЫ?aÁžûÎÄÏùFPóûÿC9³Ã—q’»ä®Ðoî¶Î>ö6=‘±1· hâqŸñ™=D0k¼Ð÷…aŠFÚ_9´$Ÿ)µI4 ôS&[Zèñ$”k•BDL³Ê’z[zÎ᳎X((þ-ʇ¼èà3bÀ'8Ü“aá8°x` ã¼À²røíÒ)!Àê ‰J·±½_ùËe?„ý©ä5•3dÖÊɵVÐà•Áx‡¨17¤w ñÓhlA[†øZŸCá³…ccž÷eò<›,˜®þQE¥µ=ƒ3øŸ¡÷€Qk|˜¬-Z¹³ðOì¢yþ{¸n°³ ,”û$Íy«¦bQÑUé«\F•–d å›;Ô·ÿÉ ¡ ònªzš/}Ï+ðd陨àþäÛ¶ŸÓ'^ŽLJÕµÏFÐð³Ló•ô$¼œ³å›¸¼n£þ®Ù§G€|Åw óæÕÿCx¯„÷®jÈ{ÓN­õùÁ­HtCï¢+p55ü¦¦Ó …[ V6'2•£B$*dBFïA”À"<ËtÐ…±ˆçÆÛzÑ 4b kaÑ+ù‡Ú Z lŒ2äÚq kgg¨4ÀÊWö1´¨S!ðýÎP: K_”Úí÷•ŽEo°YWÆB¤SòÀĸëv}í`7ðQî¢R"—P^"œ·ç 'ÞŠC:Ðɹ+XÁø˜6  YÀ¡ ?]ÍÚÆY0y¨*¨Š† ¥(À ‡»ð¥œVjÍE^2 .öA[ã+i>ut—=j;úuºŒ55WyWmh[ÞÊþ踗÷“iÐœÜ sMrr©hqïA¿•?6ú9ñL¬2æ'øKÕdvX¡%î$Ó?œácóÛ ÝÊ.ÇWì²ÿÏêÇ'œ^*\s–AéZÂÃhÜxþÛç¬Jq²B×'Ž3FKêEÑsRué¦„Äæï‚±|x²§6o3e¶}¬£ 1áÔ§ÁªõMOìÈÐN4lŒ'_o’é»+™JZä}n@Ä‚ògʳÍpØÅeæä¬ûÌÂôâU¶Ÿ}ô”€ܶ(üìq(£+ðÓQN[ÁãO#¢:ŠÇðg};BŒ€€DdñëÜ|:scqSÞs¶K• @õ䎈¦¥Î»Mõúgy“”âˆé Ù§ve8f¿ aÚÒ9“.I~™w­c2ÿlz›å:§ºüx §S+U1}î¿î‡ø¹;Œ=C?2CéÀ”g½ Ð5ªNêä›ÅÏY'MuHdŒ5 Â`ÎgÁA‘‹Ú²Àü·¨qPã8èµK‘…5À’äPa\QÌ€˜ƒ]΢πyåì—äGf{vjwh“0ˆ å×|ž~Vÿ©û¿mÁ 5® ÖÆY‘DÃ’XŠ˜ùŒtm ×Ý6¾¶ò"3ïÎBD6ïcÃ6¶ýK Ië@|3žBNòÚR¸•äŽ(B<q7ಀ€ê:J(ìØ `+ÌptIÖ|t.;íq=ë¡²ó‚€øò äû4Ñ6› b™‡í÷Ø0¨Ûmƒ´«üwY¶3óZü)1eYtîšµm FµúuúsøçAu¸ñò}­ë×ÓwöÖ÷[-h8§W`1ˆ%¦°Œq{Xð|;T±ì|++jo‰à…˜èŒak4áTµVœsЖÓ Lb |IÀXr³Ž»ãê{£4¦”ã¢yÓL„SÐ]7L×Îþó’ÒŲ–Ò ôóy÷»è7\I¢Êq=qÏ^ÍF”­î 0å=›ÌZ[õÞ$õ½z›< vÆØëÀ:ƒ*@²¥v,w—£–Ö<™tk €É0`‚SŒ¸‡8»™[ý>–ý^ÕæöñR±îO6†ã®ÚÄèƒa2€B”jJöÛÉ™{Õ®¢À6©zDR|Ôq ›¼ÛÝ:+ø©ŠûrQé0 s~½äi®^)A<i⊦OV¢ßNi9„—‚u&È¡>È%Ýû †?V¬N ¾÷Ý®âPá`Ú¨çÏŒƒv|·50ôJ¨ Xõ-š(m­t³Wïñh3Ìc’ nusþÒ&Ýc±¼¢ÔÑM¨ L!ƒѶùkŠÚÚ;Ž/Ô×{¿g¡í^œ)@Ç‹L'ãB + 7<`ZÚBÁÍŠ d/ºÍé×gª6z:÷ªÌû‚ÉJ%9þŠÀ⨵¼u«5Ò˜wªQÿB¯ÓÀÔPý_¬_Tz+ïµ,t0i±ïoEgY4»Ï÷zMjèa}•çÏ}w4ÝVO¢Û®†Ñ‹]4õí\ÝîÕ¿ …p0åG‡ë_l8ˆ^™Láœ7^…¿r’Çó)EÎI¬Ö8?j¨5 yº[â€iÊ ð#Ì`.!üÕZ ppïErV‚ç?ع,Àª`ŸVq_¹˜u^3`Ô /=c)2}šPK÷Ô¥¿QýÒN‰öPþ 9àªuTcîJ5rñäH±´uò¹(}AÓE‹®Ô6kæå?&È¢4ë¼ûbOq¦’ëLÊ ¸)‚s  ¾+L9®˜C}A[_»ä€(R?¡–r­&f›­ô ùþý„•^4´ýÎ , ç–£©Â1G»+–sŠÕ:#üæÊ/%t¯ `å ˆ#­ÅÜ–± $ ´Ñ“FS#œ´h \½‚e£ãÆX·\ÿ{qw;5€5|M‡ ;ã£ÓÎ0t›¬|®;Ëcy [f ÑÒ<¥«ÿ¯R‡;.{<å›9Œý/Ëoö0:“ÌhÿÆÝéíª`I^)êñv?‚rîÛë»lwi-gî?ÒÞZ¢ëæ”XGÆ¥bcyÝ qŒ|o¿Q«)g¶ŒTý|Ý »±'1%Ï8<˜dÞóv_ú㌰óßúæ8d9°*ù!x£üÀy¦üÕȵûçE˜ "r~Ë"¨kb¶º¥†lÍ}`å£~M4eçå©a;`”·ÊX‰eÏ.Àus\)Šž[䣈.ȬMd6ÐíÜãЩ¼²òe¹ ãeÀHÛzlåÉÜz­|F1© lcVäAvŠöL¡ý™Š *yõ|Yünû®ö7Šîg3f@”êÈ´41 €ãÈæÀópÒÁˆOíq¦¹Íìæª1b7\ž` Õ\ÍÛQ§­yåúã»GHææÕ5—wÄŸwð¨ R¤É }‡·ö§yþ÷Èlx»*+ýsw—AMì<©bòìZÝ2æ.±YPï 0ß ègÉþóíò£]#Z@ )y¿ÓY•ʃìê|y5¶Ó}ÓÕôó¾˜Þx$îœÂÓn”€±@XØ”A½â8¿&‘2 ÊML^“C©ü©Çi‡i\Ê xn^9Úõܺ‰Í—óƒ½æ{ÕA7ç:IEfq{2Ô¹¬Àœ//êò«'ÿ,‰góð²»™ûAH~ƒRë]ê† ¤ú¹ ôÇ)ƒ‰osËýGÛ_HVÀò‘ï_ŒªLësŒ’NÒá'§s Ò@âhFõšdo €7ßfSÆ;ï»ã_ë”ø/Øݘ6ƒÕŠˆ|qV딓/ þéé}mkß_ ŠÆž¾Ëð¥Eé›Úr o? Nà5[~«kã„Êë¥ÒìÿÆù±Ù5@“Nþ«euÔ0gTdÖŒ€9„~fìü"à,..ÔäßW)1¦eÕ©–/ <¹YJƾ„»–±’G’öõ[ü ¸06Ì¡ÍuqNo[gq·r^oÄ•Œ,ædxù²Èwd—^ÚŠ-•îÚ`jl$‘Nø´§EBQaˆ:ÙÜ”ÑZrð¹ªõ1J}t&¯I+…²ˆÇ¥ÔQkÐüX´Çáú?ã~="¹Ήðûr•\^™SHzýh:µ]"NÇálƒÀ;ŒòSÝrMâl™'뛄gc§pØ(°=x?©…À‘i†„£Ž§@‡^ÿ›±8ä4#¶Wà>s¹}Phï ÷*Ћ%¡#=‰^—‘iÆzcDõóâVæñh}µÍ(Ìlöúúøf! Ë`2ŽÁ¨‘ßD23q1] ÆÊ  ˆF<ýÅë‹_¹mOõu›*Ú3è¥r¬göúqÅÏdiÇÖ-/¯#!óã|yÊSN6\Xú·‚•‰_öd¾7ͺŒ÷Œå°xŸ×üúýìå9üÅš´§K쯫”‚/|²£µö$¾Þ¢ÂMá@SØíKAK=SéhBpèAíï|ÖeºÐ?¦‡¡¾úrƒ¹9.ÓEýÝÜÖ¬ß=çÆQ²Í)†ûªŒ¼2@ëråx¨Ò࿾Rà¶x’åû×G"޲Ç*ûýÄY@©\Oîë¤y»†Â³©Í‚¼nåA¾á'µN<÷¨€tE¥%r ß~Ô)¡¸užàh;ó,@Ếê»jIêÐs„–3¯¤œ Ÿ·Q‹ŠÁ/ïI oH!n4ý?é([˜ãšóQ¥&S¦˜µûÐŽPžÏ ›È¥#G7b@L0A.¨È æv²€r²â£BèíY  Ñ{§?AZÖRÞíû“þÛ±Ý<´Ï½I±ÚÊ«cô wGûTå¸ÀM+<çsBå”îg%;œyJ©ã£µ"Ä®ë¼)•ªuñFÔά«+N§ kúFxì{Ë™ºáè˜f¶5íʘØç9Éöž^¬c¥-³ýPÔõdjƒøºÁôu/MŒŽzžƒ+ͽGkîuŠÞ¾î׿sµsÔ»ž©›‡øQœi<™­"¼¤£C%$L‹ŽõÕ›šG[È ý#ØZä·H*.¢ÂßtÂ>6 c£”8Ȫuy¾Ÿ&ì¼£â[ÿ{%¬!ùŒBk¹Òï4¶-™‹C$Ù”ÚW™3æùïrø“êû®Ž;7–ÐÆö,º§þâ1?Ì)ÝAeìþq ~‘ãËü§›—<ÿbÈëÃß²²n®öªÒЧ„‡ ¤`{˜ Í •ÈŒ mìJ›=+ ñR—ç@¢½;ܦŸµ^Øk`ó^q¡Ñbe¯yà C4#|Û®“wüÖ3”'EJ…âʳfçoö=zñ_íªQ¥ k3nÎØðI5ð­âSQuOy÷b\“–®;ØÜll·Øû ±"-Þ 5ªÃpm:nú“›Û6.3ü7ÆÃ@O|+íÒÀŠi· ¼”š¥CìKšÈ¾Iÿ5¶Ÿ„÷ºÿ>“^H íãÝc8Êqé&ARvlÆ«ã”Å6DïP]Ûê”pÇA†¾]ÄÕ™lÉäVû¯Ý/^§wéâí^ÁP@¥+më§1Ÿ²ŽÈ“ôy}ËdYºN]/lq's Ë…Ùkõ7n*ŽTŒÂqõþFSmÈR¥uÃlÁNØöÞ;sca®(ë%zjí1W|'û^£\uR_!¬R¶HoÎãŠm§v¶.~k(¸Ì•êVÕ‡©ÉÙÝÏçQ,~ñ'ü3$’áë0}™>ô;ÿ®ù<©TÚ Tg“Y´®Œ Üy‹eMkq%W4Ìõ)ƒó–*;£°‹#RöÖÀâ¸p£z‡ûIºŠ,þK¥Ûð¿¡-Ò0´¦(yVÝtk9¶>qtxyé=û‘Ê :åñvE/‹ý¶{¾]»¹ø%œ1ñsC%ûSpè>ÏWÊóð="­—4Y¥y²;¡2Æ$N¦‡ØˆBÒ5DL½¦F€wügìu޳Ly /;ª½îù~«X™#1¼éYÕ²qe¿Â°@¨žtÃ7{j«ª|…B˜St»0YOÄiÑ2öÿ­)Ô”[¼Wã\ä^ åÐ$Ü084 Ä1´$Óaý‘l©—¸œ´Iéæp+Á8OFÆ¿ãŠK»òfH åŠ(1¸ùW¦¸÷\e•Ê™%¾wÀÿ$ÑQíí$~¼žÈ[þ­†ÃO&|:×á­äæ»Ø:þ ·¦D|¹…k`  Ysãi¨¸”U­«¾GW¾d ˜ÜðòØN ~ôùÍ=r9á‡z¢„“í\î¾Sá# ÅGÒc°ügwðo­ýÙˆ$ÃJHÍ“–JO…>³?Ði¾”Ýv>%³êýݸñ6ñwl¼+ˆìáX¢„$âRp:rñâÖ±H♈š °5ýJL¹–vb>.²Mjó·Ï5%óÁÿˆxhº³«&3Õ]{©‡CÒÿç'ò¶‡¥ÿ!¶ ø´8®FÁ¾CjÑaVIϘëG0:f}o²»C”þ|/vCƒ¶ø-)'°S`¶ºl•í•—’iÛøgòþà a& ùŠã"Ø…¬Væ7œ{q«ûqt`.&{‘µ¢ÕpQD×íqþ]{ôWµ}kK~§Ï¬Ð£6lg ,Н@¬Žh§âÁËtö)‰fõë‰Nh£Òm ô¾òôf´@c›\äo5Ú=ÏÛ%}\ÿvQ¨Øúkß½so²èO°î1ƒ¬gß3¸T39ìµNWÝ£WôyL Q;Ù/CO|ô¬ÞmÙA{¶Fº1Ѷ8ª¿Zó³MFÛE,ûý/\Iƒ«}WÚç·b2’±@ż˜ÄñÃÜ­¸Ç‘}':åú¥¹ÙâœùXûN8Ç.[êñCPlú*!³ôíuµyK¦ziqI¤Gm™p[Ñ®Ì,?É«’athð,치 Àðñ—aßySí¾K ýe—»Ãq#Há¾=`Á¸°rjÜá›Úéá¬*®0’$ÌÁ«8šÞZßûÜ|ø—5z4Lo¶äcþÏß~Vj¼ $Âk½Y*DŸ."X² eóåflxêåT⊱ñ– pCfdÿl™41x»’±n,°+•Ê3ë0ªy]¶j¹$pÕTS€…)š±½è$üDé%34S*2ß®tÔÏœÜГB¤ßZó•ÂNÆÜaèê³yˆU2œ*Š•†’á(öæ['ؽŸ‰ÜIsf@Óœ³ 90OÓì^ u|/ŒÀtìB+kç4Òà2Í]±Ìù²ÞA¥u Ú¹{àÜe³}ÇÙ{×ÒÊzžuÓvIù²š:'sjRPÔBn¡®-Q¶•4?MÇ{Ê·¬¥S¾,~lÖør¸G6²z™pQQ¹ÿ @ìªâ©È±ÁÀà¼ÏWwM¥WV¯äÒ±+Ž<Ú|ºÎ4ÍUfÏ+T%ÅÝÈʹq®¨Öàç>¹èÛ K<ïŠjk–:ÙÅî&²‡çÆ._:«o#ô± {n²?æÆ²C§ÊþX<˜Ez²çt¿þ…Nm§r8ŠÎì¶2´;iÉiïB‚ôærNoš –4;»*ò›ÓŠ‘B¡ð®RZw£º¹²h6>§½ùá©E.büÞ.¯¿¿- _Þdà§åÓËpήÃQÊïï÷ýZ8ëÝV~=ÿJ…±ƒê»\Òn¬ñ|1.4²4òXÈ»Ûuš#*WJ½YÜ_tû;F!=tÓ55GÝÔíŽþbS6Iäe-ÇnöÖÇ}®òfžÌ&^f¥ç‡HÔýx΢»/×Ôõ 57:o!AñuÛ’s¥ôÖ®)LéêAÒ(˜z½‹ýÛ»Oótõ;%sò,HHïa#ošnRé³# =Š+8$Ñ*,1ÈôžCÑ™3Å⯖›~ûïªPåHë‹yY+_Ö³Z) i¾ ‡4b¨%–“&\]ð)dmê_›ùmÎ0è£hËîƒ;QÃÐ[šRË78εбrŠú5\®ót Y8”ÉY°8ßóîKùu‡?$aÜ d¹?1]Ét0†L“οݙ·V&‚µ…}? o:~žR1ìd­ýkë‹qõ”ü£šöµBYK¯™îJ\ºul$ý#âü¾ ÏØw¡sñŠû­ö¥å` å°zCÄhµå âº9N1ºH6¾%“àˆ€áFPYÍëè¹3âŠÚ¡äc,¨3þ|$~jØòs)òÊ6*C꜡È|²Z”IJõD¿|k4XÚ?èÛÚõlm…à{³àbsË…juß&A‹»ÎVö¬ˆbÝK[q„…=d'kÌo°mS³ex_2/‘ð^P-íð¯ÂUð6š‡±ô¬aõòèòõMjzý«‹Ã“–ûOwô™áµãÃNH€å×°üZÜÅèëF6‘@I5I³ù{nW¸ÀFÙ{ð²®ôÉl%û®@Š©|³Ðð;-ïö{Õ7uÓØáâ'õ޶zÕ@òzêó¬ýÝO¹w̉¹ÝÞiú¿Ã¬¢|¬KëûÛ&½ G¥þ—¢sÜÃüf=ÿäÏz+¶zN­—û(  ïñrøŽ¾··Ÿ‘Hü`ÓòòÔóÎ¥è>ŽT»)µMñ{ƨú‰ÞNWñ {hôÈ¥2é½€ÐIÞ§×KžÛÅu‡œ$õ²çF@ÞÃYUitÄs@aò40ìà¾À®¸ø(=G5ó„þxíèà£)8ÎSAi[Õ)Åy,ÑçÓJe~ò+`FvdQI^Ârà­z•¯Rãßõ›•ézªn†Zº«+õþ´8ömO%ב'zÿ=y½à×n®ú3w"±m;xY.”8g´#²¤GJ²4 !Æ\i¢ÕjWk¨ú|› !¨<‹e¨%zx<´¯­œãÝ—¸¸Ÿz>7w/Ãè¯+6uÉ>žìÌôwïÏI. šnˆKๅéaâÓ’ˆ©òÝý«ÙÜE¦Õ|¤žq £_p$¿›”>ûšÞšA žhʬܓœ¾c§Š«êÛâ¤YØïUuxœeÓè`ôbMýÜÖDc„¬ÀÄ„H_ú®ç«uü9ÆÇ‡â:Êêöí#Wû˜zyþ„«j˜5oÀù•ÇÙ¼'0Á ÷^å<<. ß”Óàß²±û乺Å`ܰ×ôßîÖŠw…ç„Óôrì]‹?ŸYS0\›àûn<7Ë]ÛLéú~‰^ãŸ:î¶ô“;TÇj!µ²\Ù†9[–YŽ‚¸û@( 9&~Ìí:nŠº Yœà~õ-<’–ˆŽ{24—±Õl‘ܺˆqãXúUC;íòïktøcιïAføjÎçq®Wý¼ /Qá“Ñ®j? ¼ýLå]äsŸÛ KQW‚åXÌT™VÁ–gø`ÉwU¼¼Dø’7ïðßÞigl¸¼VWùË%¢A7O@þ¿ƒ3´v\rž9ÊÙUÙù>F+Ó±þ%¥Š.e{M{º7Ö‰Æ{*£k_üÕJíܸ©¹GZ{éZ“σ Û ðÀ.'\I•,ªªk\Y&¼ÂuG–%Þ¤z6¡ÊM2ö›™MŠf$¶ýó­ò￯6k{­Sdfx©ÝA'h›‚­ëç*¡x³»(°ñq‰áê²Ú ´kŒé¶Fò›ïÎ/Þýf2riâi ý:Ðë_¹æd¬‡Cƒa“§Æz×Ô’è)ÿO`ÜBð‰ AžÛ²ýoú1}Ôo{žpÒ÷bÃÒkç7•ú)¥½¿»ÌbBa´øÐD,sTRÒ˜vÅÈ  e"þÊçôÄ(B—ÝzÜM\Gán—â1û"ÄÎvGt’¥¦ê¥PJÍŒ: 4\]l„½Û!ÀU8€~þ+…Õꨊ ®¶ åÉ>c8\Ïv¢Þ¢z6©¤ tfOèm4û²í0@؃ϛqSªÌʶÙlºa«uýÄŽÁ?Æ\°±îEܨ–åTlOí[©)Äã¨æsë&nMo©l>Ž¢—ì§|ÄFv:pºƒ/|(Nµ=?ذ>s²iÐCƒc"XýÝ”&.}€ÁCOˆ6K9²LþrTòÔv€ ¤FàdO$aO„óN(Ñʲ_Ù„šGoèN¡þµ|od¬ž-z÷Öý8vGrˆâú= .†M€ë_:™Sì9‘xƒƒÉôÚ&!Þ¤ÀÒE‡2dCMo‚¯3ÂµŽªjpÖ@<ƒ™¦Î-k—™Í¤N šB Vèç1Ù¸µk¥ùʶOm4êÂIkGǧê¬S¶Íö)d´ü}X]׿ÍI§°%Ò/ƒµÑLréZS­}(¢4ƒjâådv“²=rdc5ÍÀP-Ô£Íä±jâê/­ZHf–Øð:î ¡{)ºÓ(–ߎT/yg¼¢²}é¡X¶û'»ûŸü|,lò}v9[ÿûWýÕ¯Ï&§9H®A+©–nßù¿[¦€òcö䃌O’6zRBPc€M=Ï4ÔõEG=8íjãáï°nowÃJÚ´¾2ÉæwGÿT’9̾i¬ŸŒ@Žƒ~1¥&èå“nI6ç€âŒÓ$dyß÷n˜´¼B@ÿ Õ9ÚòDMÛ)€v2µØv„mÞc¡AÊêuìU}5RÛ u€:8V.EÂ’}û­N鎕#ÛÜyøœ~Zé‰Ânz‹oq[|À|Ô4–8ƸAQP—fkÞ« †Y_Ã5—í€ÇP÷rœaÿŒ'•³þTù98• PîCBµÌÉ«qÙî«¢ËI<ãùìÒì§8 { v­O˜ïŒ}4(êŸ %üe¦Ãe AÈCVÀ¦¦ÂÓ-¤#V´d±Ï!1–¬.ÏCF,–7£ôm9@e‰«r퉤W `„sú›;Ù=+£Cß5FÚ=ó³BÜ=¸ÿèÜ_¥¯’åÍ͈wÉÂù¿p½¡Õ]óÏ󫯸ï΄cÄRD:æˆP^ù‚‡DÀ +x­ .D+C÷FŠÔÅw D°‡ÎB ºBˆiœÓAF§HÀJ1ŒB! 0A´ÁX¬5ìÊÑ^uˆYkoÚš˜…‚уˆ,q¨Q Ùjm mHpìhÆ´"±X…òj`!ù¢! ãÚš„YÔÄ-!hØ¢–"\"PbtÅ+B*‘€;Ê£F+F1ðvm@ÖÖ…ªÁˆVPBôkT°„H@#@²„Cã±°GôŒB Œp_xò…¤6 >*ŒPMøH‚­èÀ8qˆ ¥’( CøL@0 ˜‚+XÆ1EO¬ÄŒ@PJ˜€QŠ Æ(* lŒc  €œ†rÓœû/<&чo å£qoV?´~õC¶/ÃÍ#Ú€óëX,µaêŠXKš·^À¼âšB¹òŒðò#:*¢û‡Og_iª×comwö¸.ƒ.¯~êž-ʨÝZ„1ŽQ ñXø¯ÀßHû¡Ð<{†rm3»¤1 ùo†ÈZ!í¼i®²ÙÊ.³'3S¬Q^òé^±¥÷Ã+é\=û罚ÌRÞ¦ð9@U;rÎkA]tDq¦lò°ÊŒ"á̾Kèw” h­½$Ã7=ŒG„nywn$, âyú5<øü1T*鈊 PH €žoÿ˜ ¬“)¬¾ ".e[¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ï—½÷ßß{¾ú¾ÏyϸûèëÞÛÛÛ{Ó+ÎÏ=ëת÷[»Ýî®{Þ÷­óæ÷o}öÚÝÛo­»]««¶ó»»ÜêÙk·»¬žÛW›íw¯»Þ*©ƒL¦?BdôLšbbi†ˆdž)ú™f¡’y2zTöi2 0&i4bh`F˜M)ú4Ú&Lhe?Q´˜M¨Ó24!š 4Ð4j3A£J„Uši4a4Ú§†‰‰¦ É='¦š'¡0š4`ž‰šjSØ™4Äi£M)ùF&‡‘£CA61¡£CTöš˜&#&h`)âjOÃIB*š§é3MdÊzmM¡¡“TÚ¦Í0ž‚)þ”ôž§£)íIìš2›SÍäžPýM2*¦ƒSe6¦É‘Ч²jŸ„jlÉ)ø%=£ÔOTýOF©ìOIG²SôÉ£ÕOÊx*~ÔÚHÊU0§¦4É´™M¦Òi< šò4Ò= “SЛHÌɪ~LL4ÓOIª~B6F›Qê4=M0Dòb1¥OÈÐÂdžSÉ Ú €Œ“Õ©4 FF§¦É”Í€Ñ0<ˆôÓ'¢“&§¦M0$ÚdÔò™„ÄÚLM6¦&)°ši2' Új`¦Óò›Si¦Òb`“Ѧ ¢zOôÑ´G§ Im$a¯±–£_˜ÒUÒ•?jÄ…«-þ«÷ÊäÁPíœÓO´óÍìí±q^•Çš"À•™Ì_èd(pXŸ¬ž~ÝÆóµZâj‰5ÆGž®ß™Ÿ_˜Ã Ça‘I‰©+½²ó)¬ù Yài0±ZëQ“žRÀ$“„fÍk’‘€BUØŠ„a@0PàC„ÀÃZã8 '†8=>8|C 0Z áòÈŠxxŒ€pÑ;àP‡È±ˆ³<~Ãæ‰"‚-Ã@JaJ>B(lq’Qã$$$ @¸Ñ"Âx_¡àá°pÃI-PÉ !.ràÛ°£Ì+@°TKÁ…`ºé%çëùè"¤a %khà›Ï8ÔŒ’@à (c‡0Ä,PðŸ€|&ŒuéTÁ¸±5oºa`æ\g؇¯œ´‡õÁ,#¨6›ÿî ýLHa(ç`¦>öŸEó±ÙL&KÂó\<2@K±•¸r¿2U¬-„ÌBê܇˜0ìfŠHÔ0v“d‡ÆfY аŽZÀ»öEÃ!VÉo‚cȰA1­â±„F¾áFíhy—Äs¬¶îCü»¶ÚcÞ¢ÔÏ ~J{EŸàPa«¬ê¢Ž¾æsk3; đѕºÂ[’ºªÊn$nëã$·T@¯ÓJ ~aÑ`á7C÷N©¡f0£Æ·‘>Ðc€ÉO@õ,ž¤`øî—Ï¡Dê{‹ý3øvǶ@°GžUˆÐä¤WaH=,€: 5¦e?1,.=fùFdkg=¹^!wNl(#q45?÷Ït¦2ŽueÙWI{`LÓ÷p ¼…?ºP†/­ø à(„ãF¥¤¬¼V2ûÝÞkë·šm÷K–»”œÈG—v ®³M‘¯ÂŸžºùbJÛ»\¶ú˜Fà”œ{`MçÓÇ0ÆwÞ€X-Q!)°Í.÷{ƒ  ¦±ž gŽzó›óÏΚá]»t`* r{13£‰¬l>ÿÙ›¨\œò-)ê 3P\£Dt©\˜}“êü\È_Â'` )¾ÓÁãGf±} E<æ(À«êo™›ú„¡ KÂN ¢Z ”  ¤#º/ªÍ¯ž¦Sf±³Oª™¸À+ñI@ˆÐiZ°£×vÇÑ9(¡^l©E`Avàðµ(ºX‡tK©ô=âõdæÑD«û9ÄjQÏzEžßÉá³Ò8¬öë*»ËP¸&¸j©œÏ_ŽM­µÂËû:l`zR€<æ9q„+oò–àÉj‡zW¸„öªk°ãéN}²léåéT6À…ÔÑ m^FKûK\±á'q-¥ôoz Nó“o´£nëãç»ÙŒÎs®¨t¥X˜Šf@ ɘH“`Hs!22,Ây’C™!æ„y×b³ÙI ìÿ ¹3³yl …äìÓ]ÓTûõWq;;Ì”¦®žñÿ&ñnm)•¤Ãæ%¢¹Jh `„AšèW{gWñOËA´…÷—|LÔÌ> ôî¡Ã]n®Sx’02•Ãy×°:_:Ôj´¬1?s¡.,ƾ­·WRÝå[1Ê%k"ÔP R²ggGï~¹ÙïŒý¤že1É5EþqëÕ d¹ýÐp" ý(zóY “ü¹J6©ÏŸúÐ\– ]ø~OV{›(Úì=*ˆ.7ØW4­Ç4äŸÑEmy–#’‹¢¢b5\2_6åô{ë¿OÛDCý,G¦8£¸ìÊ%Ÿ¨úý‚íŸ}ÔG§Súp½ezc¥í‡ã*DR˜ô†è©fXâdô8 Ü?'¯g­‘rÊF¢ü­S)ÖË[õ¢· ¢5C3ÁO•Ž.ì9×þŽZgPËÛ¬k#4®Ó:黟ˆMÌCÒØNoÿu¥Ûõ·6lvEõÏôÀ.–‰W •t ŸœºíRöžtP3â©¶ôïd©RÐÞûαhÛ²öZ ó«r¤“¼X¸£kÍ™D™;Xâ¼´®@€ ‚Éä Ÿû…¿èŸ~ k,Î6ßœøÊ®œk¼åJKç„W=²Ýø`öp)Œ£pì£S¸LO¾—¼‹~#I‹Ïd^)†ãá³À.?ÅËp5×슪åPm&È õ[‡†;Èó!©mÜu&Ì’(’â÷ ÇðÇdýXÕ|’¶6‚cë Ñ{ý@Á…’soLÁ³ÚpA -hÉAX bƒ¢ÌYºUÍŠHæåü‹§8µt»œZ›§U!¦1¸»(ª×·¾œtæÜtÉ¿^£g8oÁr¸Ãù\õÑfnÔ‡ {ŠV9P6Æ_)*! ñ‰º)=HáWÆ×¼yv-Zk»×îïµ/̃™ù½°|o›žé… ͙ٸPõŒ0ËT4€Á¢>e°X&ÅÈ\· Ÿ,Ž ¿ G¼(.³ÿ¶…èmôzøY±,½øÜ8ÌìÕÑ(º2ŸYÊ)»äƒJè¸éVž9ÚMÝ¥És¥ýMfàl\Õ!#p‚,±\›ùCÓý»/‘“šŠQk©.PNìvµäÿë"§}©½:â¤5ϱ„8@ w(m˜z½µü’ZIœøÒhf­­¼Fj£õ}ñò籋ÛGƒ“†½ÖÉ<Œ<M`Þ€'µr Ô0±ù8CÑq'¾+¢\ý;jçZ¤!i+èíu÷ÓöË'üD‰ü^ûϯ ¢8Ž_?)»@Ú:y»çt6Ù!éîldJ‹ñœÙ Üí0XOå\×±,—eCÚ—+éåXq)þr¾CÐÀûä ØÕ µè]Ë[ÂZ´ia% ¹}»¸d6w+ÐUûj™N]‹-â%ù³àÃæ( ÷{@5¦‘Ö¤ÔÖñQg€e+b©,ÄSìå—ÅìÐÌË÷æJËÀF¤ï®ß¸€cÁf'mÛ>ÞÓjÞŸ­Þ'ô½ýÖ½8b[¸¶H‚Å\ÉSJ§©Á:¿bâÿ‡w*>ˆŠ½‹ é=D tAšåaØæÛ2^þ Öݳ„vŸÏ?-s–aö]jLÄùxž ª. zÙÈ¢Uñž(}::Ûºç$9|RŽËÖm7‚úkó†|×M램‘p1JÒжw°Þ+¨ a¨ŒòPŠd0`²ƒtß/J§J;.²K£Ðkv`{è{¶b)l©!hXbefå´rìY÷ÞfØ”½ópp¢G µ§–^†ã[QzÖývé­öñaŠ&œOq¶”maŠËqÐ#‘Êü£eÕbT·øˆÇɰZ{>°2†soú½å¾7ë€Y϶•§µ9i:È—¢†OkÕ¬m‡\†¯Jº ÎRVF y¿x®Gn·™‰FoQ }t”¨)ý ¹¸»°ÕçoC‚š[?Èž9ʪ›é¹^ Ž„wþ…3¯ÂòBgꊶ¹Èƒ7œ@#; N5£ÓTÅ‚8þ?b#X­v²[éùqŽt™ÙA¦²Þ®)®Å6KPO»Ý ,HnçP˜^I¿kEۜϻ朾UÖ]ßµÙZ§ÍÂèpjâ÷;ÿ]¨å5òTƈX»ÁoÐ*Ú:ÃõµYLÃPë»fNþësä´PGFËIº"ÕeíJ*<í‹®¿Ž,îSÔ”J ȪÑL½-ÏZ:µ{À–+„".->.zþ`ꉵfÑ,,Îò‹e¤(}ªÝÕl4ü s[ðãǺ’çF¯Àö² p~½ÒºsYLv·mM½”:§„ý¾pm„¿ïýV¤xÕ¼6´*™‚ÊyœŠwo´hEÒi»IߎM m¹ÿzüè÷Œi÷ öÝÎð_²\¿k7þNqï„÷ß+Z|ì”jæVQ¬ùVWþ‰O;Ìé¿æX~„.5pd=Ÿ™Ed«`ÁsöGOm_]®ödV¬êÖc±ý‡”;O¥VÞÉœìþÁòEÝÇØøÉÞ=ï‘ðMÊMgZ¶hi2ýeé2vD8®-zvuC;5ÑóG9“šôÅaÁ)®À7¬?y­JæO¡ßNˆ³@s¢'Še_wãLGõÚVíÈŒN»3²üxÞá‰J¼6ó ¢"VTëcÒèô7ùDmk¹ïTˆ¨½LŠªh/‰»“°I÷®—øWÀ«ÎæmŒb(ø6¬# Z)IÅ6Sfv áäÎÀQIó9°[òjÞCVùtÜ7oC¯ø}…Ã@Æ‹Æp’£,2ý3ÜžwÐÉóVŠŽ÷W¼x>rÆ–/ò•Þ ØÅ10=V—(i|k$Î:íKÜ/Ë/Ñ–‘p~öïxLx·s ÃÂw­½RÍköÂlÖäÏ.ܳ7VDêÐó0¡I~Âç+gIԵȼÏ18‡ÙM6Κ¹ÂꘈÝMÖìѩˎç˜ûý:ö$Ĭì£H‡ëˆÍ:#Rf#‚·éš p’{oÍ*gÈqr .¾¸~ƉkÏ0“>Æw\Þ¹$÷–µi“}ãhûRŸõÄ¡>vƒg^SægY"{ëF ¼»‰õè² ñ÷7q(I‹±ÆwÆuødN I RYçæqa÷ýTN“Cf4wfËÂgçÂê²cËrR#ƒìLX¾ydÛìH®ÙÕ¹jÇa…£ 8û½9O‹Øõ9çÇìÛú’&̺¬Ãã Pº* '(sÃÓ}·Æ«ÑW&ÌÒ Ãù­N-CÏŸq.]XšÚL¥2YGG/Ãm.nëîëjˆ°¹½_îƲÒ÷Uð:ÊÑ&™éX^¯ ûU$ï{?\òooóïêeÑχ¯T:‚¨-EãwˆŽ¹oá´ˆh_jàóÜdhÑÝ3žòà(ÑrKáÜmóù±<ð]][.€{¼ ¡pxäUÍÈlÅ£zI¼WÙ¶=ÑLã–E¦Óä‚ß<àÀ84R`]²}“6^.© T ·ù 4­ºi´¤Eb°Ÿq™ì(Øö•r ‚…·!­}?ÚŽÖ4™4g6v@! š…  Po(*Šªà‰j“ÝzœÖ6“ñŸ'þÎÊéM;Óg‰Õ®!Î×v*LbòKHUp~«ÙŒ¹VêiÇ¥Z=Êäb€dµr…ÊäôäÅXdªÓJfxðÛ/aŽÏÄ /7U;3¤Í¸‰Q—OÏoF”xcÄKï k0ššê;+Š™g_²Æ ÕP$ƒ¶õ B?,ço=¨ö•ŽøÅ °¢ëÇ ™g¤ù™¥¡œú^­ñ)ßÏ%kÓÅ [-™X;÷êZ!ªé4¸nE!²œ&CÆ?M´ëóÆPÍÑ›êëzÎŒ×4öpn17«ñ3 ­Ól‘µ÷íÏ÷·Õr)L»„_ÉŽàDÄA”'À1P†€~îz)9;m¾D‹•‚ÂfQ=FuEû¹Ül©Ê¢vŽò{ —ñhl0fæ¿ séý‘…5,Êüæmì4îèÕ6¯H:L$¦íÉð¢Ì•ÊÃgd±‘ ÜŽ:@{`럹Žõ `È cA£Å«çÈ>aÔÐ,ŸãÎUصµK§ yHŒõ†+c¿žn8ôtOÇþWÁÖš€CÛ/>u½]%¶^6(‘…Í*0ßB hß×§—„–'RÅ’¦d¨sr‹=–'óÈõœPÅý"ëL²EL¯ÕÆ|A‰¨ƒHà@¾CãGÀ$§ 牀uÔEv¨9îôíôÉŽæHðƒ ðNË"$ž¶Š‹ý–áïcÀ¹Ç¶“f.X0/«âŒ8u£òÖ95 £îýãî»ù•9xŒÈI¨ ç‚®:!J f®³AîPÏùåÎä+éõs ÝÞqöSÑ{ü—Ú”Ž¿šr»žj¢æeÔ±s)Œ2)Œok²ÞI:úBÔÜ‹×`Q:4ú¡ÀFØBÊì±'4ÙïüïôޱÞßöë9p?å’þ{Ôåê~^B‰õ]­>Û`‰ó©:½]Ì V©ÕóV¸58ÓÃK@8ì›Å8<û­½³Q—¿¯Ú~j}…Ú¤™Ñ”3³=NÚ¯g:3jè×Z{#WXNu$ŽÔbÿŸ÷ÁOØg‹ò Èf«Ü.LGïJ¯ïsÞÆqÍï] 9$£ZÍò±xÕ$?/†Ðqº8éÂäò%s*/Hv!#÷eÕù`H;hvómŒ©}¨í:ñâ5ÈÑòq¢iëßÞýW$oé/ŽPù"œÕ~:ÔKG_Ø#’%Ú‰QÍŽŽ¢ƒÆJ˨žå¬JBpjŽŸ*› œ¥šü¥KaùׇçˆÂÆÃ)•Ç+F&îgî–íÖÍ´ÛLdMû…êÂIXJU†,{y6Ý}“&VèàšÑ9Ôo|ÓC«²ÇcîÓß´K;^²_”’R buúVìÍðsWЋ7ñ‰Uä ½³K»þ«O›a×LMÇÅYqoC@à6$ÿzÕ­f…zhe¥Ö\ìQZèP.¹g Ž0í›ØíñdÒ-}_hDáìH‚•ÉISÄúe¡™w}#×búA¹i×\U¨QÝ[HUÆ×ÃÄü÷œi&Žò¯c¬»Ìf­^¹?¡†##§_/Cç_ 8jIêrÃû·óîLöçØí+m¾º¯Q8Ûhðä»Û¾æLxqܾµ£–ë6,åŽWSÔßN,x6Bç4 šnRPÀJ¥?þ¼«šoCbå4kì=G¨B×âOÏT^pí»ë£wշΊ(rYÜÉ©€¼qŠü)ÚÞüNá·V9hG»U2¶¤•°tU.wI¦~ªD( y“-A’/çP®‚sF¥ŒW=(ˆIS\¸ô4é¶ÞÕZFCá´ÒY.ŽœÚë¤F#;.ÖiÌVåæ*-‡×Ã@2ƒê–ýZƃøM·È ÝõÚÍNaPç,ÍM$Rjå2¯ÄPÁéRøjþ®¶-«Z¼õZ[ˆ!jÌw7…¤ K2+®¤4@ZÞDΈ•|÷y‘1¡ H9¢‰‘•“ÈúGÎý&Êg- Ó«˜q-Êäý§UÇxÍÒÆg š;9hSxkù0E-0jˆ)ÒK¥¤qÓò|Ý‘ŠÛޗ¬´è´ÚX麑Ÿæ|ÿ¨) ø7žúF¢âO(ò%#Ðé ýùˆ µB3ðsÝ.è}«P#ômÇñl0Í—:.²¥n/ /Ê"õV6'H4‡ `pž–øH\½’=ÚŽ/¨t‚.æíã—& ¦hÑÊ b°1ÃJ5,ÜZWa´<mT ßÒÕÝÜ‹kAã™QSŒŒxô“S¯tå/P`õºã "eþú‡9Ý­é'ï‚&ÎÚù‹({²>ºN§OÈ©ª¤±†;âøÚEkr¹]¸ªšÞ™›·Ñ"ž{Ní½¼+“×jpÙuzƒî†bÒbc‘ˆ¨ìvY.m}¤¿xxøéìŸdÑ’ä.ë¼€Þ$_éàêáRȇÖeT¥Âì‹>`Dšþå_O;ò·?1BX#ml·/‰ÔFăÇ5Óåyÿ3FÈîæ‰¿¹>c9ÑÛNRs¢þåºEbÇhÙD© UÚÓ±m“²N]±˜Ý'÷5̹»o¶šûáÀ¾×£(;P¾LiÉUUR‘Ó·c_ ™Át¾^a•7¼R=x…]ÊG=@o¯ÝO¾«[j¢Ôù'×?ÜiC~Ä:kJÍ[JÖT¿û99w³&;Ñ ÉãeC£sˆ°®`Ä¡n¡¢}Ñ2S,Èﲂ)tFö‚Û³ƒïkEuQ’¹LªÏš ¿–¬“›t÷Í:No–ÿý˜‚›—àù |FEèsiqö=“x1™XÆ)mܺîâ¯Ï2Ã奜êëöM´7ó³©H­òñ›Ý-•Ú/»Ù쥙Ã'\">©*ÁI3e:1|.âú‚"æÿáíÏ}ÅÙv¡ ؾ¨ý L F}8žŸ€‰–ß•JÏÞä1ÇMK' ô ¬kŽ%×]y!`%EIX+þ‰PsŠ%ã'ZãUZ«Tý ½ÜŒuD-*?)t‰¯¡-.z%N¢«„®56«†öÏd8Zš_D)¬(m ƒví4%­ÛÃ\1 çäâŽKÛoƒUÈèú'ÊÜì¼¶ÁènaW¹2󥯋äËÐ"äyºJ/0”ƒwõ@£ã¶´Ì½Ñzm‘Ÿ^7±ÅÊÎð£ÁçÉKñ|›9ß–évF0¸t£ÍUZ¿ t Œ3sK·x¥|¨êÏ%Úw^/¥µ* &âå0œZxÊ‘Ìˉ‰©Yš!Ö¶Öðûav_QÑ'ìÜ Ò a¾jDQgµ´D ÖÿŒ©æ¬}û8nB-kWO5ôòÝê7†r®vg{à:¯%›&d^m×Ý‚òÈÒ¥-lÝ é¬mHW‘ðzÿܦè(Y#Ûa#Þ—|énæMÇrvA”ÓQæiÊ$À¼yf/”¤àñˆ¥R?i˜}:`æÿòˆ $f#Hzü@ÿšY~R¤”Ñ7Žó¨]±j4Xõ¦ÜŒeZç°˜+ Í¥Ô¯^ÙÅ_ûüu[ÕÙŠqŠ'% ã6¶@¯]ºgÄÆ ­²ÍÄtqÍ£É=’ÁÒ6ŽÓ÷`H×+4T§r+~1ƒ¾Ôàù»8,ƒ4¥¶|{$-ªºmß9}§ãb&"}ÎcwzM àyheÏqáRÞ- áSº›Ÿ”’°±™3êÃ"£ÃNÛ€5‡å9!Šl\¼ÓÿÛá£}¥Ì2ÀÆšJkDà›ë$#7(v½sÔæ‘†Ïû”©37­kê߈f'=N7‰•Þ´žŒE\#2lù¿  z^¦ÓM8YªµAV±V]ïZ'ÆÀ÷Ùŧ(™M<𱕘ÃzD˜ç‡œè¦ÏžöŸéꥺEBþ½"&/¡äÅ KêÒHTô/¤)o¤eWP ¬ùnVwŠ…¸DT»ÀN¢âŒ!ÓC`!èÔçž*³?JÞ¯6!OrûvúßX“àò5À,µ±–å‡I°Ø´ií5[‰ ³,ĹÿŸÅZþç?}c†žØž›¼‘À @†•JÂëI’NNžƒùýüpå9”ë8ñò…;6ìÚl¥f-ä6@(³R±®í紱̤©Í,Яt³߯ 0‚)µÔ'Õ4O•“¾~d9m_Î'–ñ6uˆÌ„š‘îDÈnÐŽã% 1— ²ó‚)Oôi× ‚ý•‘ü:C¦máFB¶Ò„Õ¬Ì%bb2Ó„*mL˜YŸ›üMèM émXN%=ˬÏþÞø»ËˆWÝêiÌžÄN„ŽýùÀ)$‘xðˆD½'ŽÌ•Ì?»¡¼A}ŒÑî²¶÷R^½ëW_?Œ;§ÚÆr ±WuÂÚÓÒ—rÚºÂõ÷Ù¼ž]Š6|¥ÏÓƒ+'àUãn¹uÊqï¶’\7„ocYPí½j’A–*û9ëIÌóõÒ™tdy¢‹ºNÐËÔw[ë OA]ëíÚeœ¸ μ³ÕqV_¦é>û¹³¨Ðü´^ “·‰WûǧK{Ìntð€m€.4fóÍWOhÒ×Õ¸µÕüD$vSB޾õR)d­qb¢Ÿß>‘n 2„­0•Ÿ.\.6ÁÞÛp«_»•,˜³Pݲ‹e­áy½׌¹ž¡ªl`5Iƒ)’ÓtV·íš&oH´ÿ(»6ÞÄ}LÝy‘Køô#4$Žx¦AÿÈyJêD­dΘßïù±ÎÓ“aÐòö=@­|%–;Q±_?>äúª2¶Ø<•³fß›ƒç¡±UH!$ÇuÍF|H|*2Ü4açËä\kæJBs"Ù´Êþ-ñg„ ·+æþ½‡““üµThZ!ž|°o¶Õ©ò÷NüÕçûÖõÿâŪ`\èýDÐmþ> ªÔÚÏz´é®â-|Pƒû²9#°ÙÝJÞÏtó›;/¿ ¡IÂÁ¾a«ï„¢€¾ÇÙ`V¾`ÌãÌ t[¶ù4bfnõúò}ƒµHø]؆&¼š|ÉjÁl‰O¥Ò“ Ɔ:= Ȉ å¤+‡-êT*$û1vÝ)ÍiA=Ô=LúLDç{õ~n7ͤÒÁi5=¼udÆò¬Ðšõ̳9=k–bª&(=2¿9¡„,³a.ì xxOÖÄœ›0¶ZÕ?€ú©#8ÐYuœ ݲdý¾=ø ÊX¢k2@ VÇNÓ&ÍÞ^yþ?5ÝFê×MÄ‹”jjb'â*\Ž"NWÚ&Ù0ÆÊÀ{ÑKëX› ¼-ÈnGµñ/aô])çØ¤ju¸í'0ö‡aÚp?Ò¥I[¦&Ó0=µ_ŠÝFj‘ÿõcß9 #™SôI‡ ú žlRv?‰åàLC½R5‚ÃÀ¯2Á樗3ÌÂËËY®þ¼Íô‹¤-UumN~ét¿¸§CÁöÙÖ!Ó¥CU•© ?°îƒ ‰¼DV¡Äo(‚[gÊðº ׎àGýLgÌcP\ŸçëâÆø÷ùÖÿ%5FùF•*rC¤Þ÷§š’ÃüºÞ4¹Cݳ/çM¬ÇŽ Áºp5É5äê"ÄÛž¥Ÿ“×™²'„J·Ã¾D†¨Œ/–&Hs_´5yçõÓh!8)1}€ï:ïš©k U½öñö²3.ƒAúÚ8¯Y—#žýÃ|zÎA÷µšo Ÿ·Èg¾wFóyzP•Wp‹¶¤l8žNdj'\ºû›ò€„A‰RçFy†,áºÑßE!Q³…·êhñffß‚Û÷yžNö¼NYXc»{½=ÂYHþÆÖþé4Ky ÿùjG¿¢žèƹ-)¦~æ&—qæî“s£5«u@þDôÊš«â¦ÔšÓ‹ Î(©T8’‰ß4:rmU¡;럲õñJÏëf7Ö{ÓL~Ù¡ê6×9lCw«Òu™!›(…4ÏÎMœ9QªÓšùÑï弫 Ú*m'©ˆ¶Òà.1tÔeå•>—g-ã7:…BZÐQ0Ìg}}}Ìd¦°ó›  ÛIJW¤xn[TÀtŠM`$MwßOë˜}é×ëK»±ÁVìæþ5„]5˜×Ä$î°1?"T¤R6„¦5Èèß9­PѲ±%:9­&•Àˆ7—ÝPééøê®»Íâú«÷6%&ÙsÅî1Fñw$S… a϶@zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025713607166133031617 xustar0000000000000000115 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.762788205 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare3.da0000644016037001603700000004605513607166133035077 0ustar00hutter2hutter200000000000000BZh91AY&SYoèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàßûÙô÷¹æy}O/²û¹kk»¦šæÝÎ}os½}ö·Þ»ÞË]yíÍõç5i·[ÚÜ“{Vw\Ö9¯/»ÞèÞ_mægkî{Úøªª{ƒFƒ@m&Lhh˜M¡ „À¦a0§š2jŸ¦LžOSÓM2LÑ“)é’Ÿ¦F™2 Ôõ0i 4&Ñ”Àe=ÓÒ¡U=šêyÂaSö‚e6ÕOÍ&šhôši§MŸ¨d©âO oHÉé O1dcQ¦ Ú êl¦6Œ“Ðh {FššbzC&ÔzɦÔ&ÈÀšPªª~ôôÈSÐÃFŠyM´êdhÂhÉGí? ª~Ú”ôÚf¦M&Ôö&š4Ð2 ÓFMSƧ“HÍSzL&4MSôÂi“F!¦˜ zŸ¡2ž§è)½&§& ê¡•Ohh›MLhLhFÒy'©‰†iÔñSÄôO2)új˜Ñ¦ÒdÔÓb6š˜ÔÊ{ LFôÀSÂa44ÂjzO&šÐSÔÛH=&&Ié 4›D"¢§‰„Ú0§£0¦Ñ¦Ñ2OSÒiöoŽ\Í“ƒò™"6cBâxJÜÂ9C)íWÔ=tsYo¶N _íøEú¹ž‡'‘Cõ°~öÓsÖìô[ŠÏËfw9}‡°ì,3ôÿÇS=ìÔá+SkÁÞ€Q㩲¾ ¹Ô<öóWE¿µ¼s/R®Åfð¿‹ÙóÀ+ø6;OÀÕ|/›ÄÕÓÕ•ü—hG4 GÏßöZ™—©Ç=bf—a­%.×:`æ¦Õhe›!Ιk®QÒšÎX¨ò—I¼¬Õ—ýðç,"ª—´îþM^OcaÎô¼ `×ð´X~]f K«Ïö{/C7ðó÷n‡ç¾gk´Ù®“7ý/׎Ò~¯zÿGåbv:ê´ÜÌÜ%ö¼q´ÍI±lI”=± ü÷þù/2z¢œS&S$$œ§²ÍÔé)?¼›¾Y6ï»Ïn&?â”rÓCT˜‘Ö qUÖh]Ío}­´¡?LÉ\ ‘âOª_—“Žƒ¨æ¼%KäN.mW$IÓ#]Þl™¶¥HÜ?}7€ŒYêÃÌ}61¾Wòrz1Ãæà:a´ª)ñOŸèƒd}åï5w½ÆXe\Yw‡ëBƵ=,GË*놰ÓPîêk狺§éúæm&j »*G@Ü«ÆÙ*ÎΊÿsÂôâ7Óvoñ¸ÂûK*Ý*:‘á;~<–ÜnÊóv&7û†Ê¸µq1)]â¦>×vÑ Ì/€•g€#¦¦땯­w9¥  œXGÝ=ì=ú/Æ>Dâ1{cá¬lMÙažë·;¿È¼™‰hÌžGÓJ¦º×¹sO„$”.`ûÈœð†‹@( ÜŒ¯£d&úç³ÞµxèL[@möðˉÎn]¯ßYà&Vm¯Ó(~Îæí¦òëh.VhˆÙJ"¤G:A¥t¤ØÞ2úz›Kîv˼ðlx[½'S ÊWSþn¯™ê¨ÿ°HHhO2d¨{£»"oÍFt%`î­u¶<©#xäF?}>Îì‚òTc-.ÇÜð'©Ã¡æ“òÎ/Z€WÙ©¨th»Í§ÆNb0×g*òÇñ:B¬x­àkç§’ì™âC¹|øuº” R“Qéæ¼CÉïÑaí©aMŒAÉ¿¹NÎÉ(’÷%¡Ê1a]~¢Õfgb6íŽþ#¹ÝœgòÓjéÄGÉGÓ¯ðºMNä2íŸÁ'm;Á– T›ùM ïõ]º»Oוnìî¿å8óx5+4ßwi1}‰ðgÀ LÉn¶¬ÊK•WšKýÀ.Ãï¾µ©ù¹-_±ÃÆÛú•aº6 ´ÏÕ¤ÐölîUw¾ž^NÈ}„|­|<Í™*l"µ<Î@ì( ¼\°¨vžnc~‚m“õ¾8õµæR¢ê¢u¥;û¹Ïé°*PV3áüs¿«©m} Ô,bŒæÒT~ ºð~/ ,ÝZRNÓÇœ3”©(¼'u.äiFUïÝF(Nx¤@ÌæËE{ÿw‰lÕ\XbL Þ¿˜äÈøØ¯ï¬ˆÓ)ïŒã-tV±zm (}±c$ï[kÖ^¬™1@@­9ã¡V©À\ÃWËEXÖàæ:‰ëÎôgâlz¶b½I1™yn[Þ¤¨ZŸ²B*:}õÏ(ÙÊ÷4í×YûpÐ’& çúû{&%+ ÿcBPµiGžµßê©éÑÉs`VeÜê ´ª5ŠŸêßË<¬ù²Wãæ2ÚŠÜeÞÅ‹µ÷ŽÓÏgõ‹ó=C~—Â*fk¾C΢äU=Ø`ËšŸ³ž;eÅäÓRztÚ íÉÅ]Ï5;wà?´5à³Fé&ÅÑ~ú€sÁÆ|I”\JM¶=4Úr4iäp÷‡¢¢›­Ê¾”Üb,bsñû!JBÒU®ÌÔ8nq„ÓÈuDdTëÿÛc*èR×ÚQ^Ð{RåcŽ?ïÇʹµì®ßßãKÓóÑ€Oá“—÷6ì’‘yÎþ´lW³,)3.daøz_£©¦Ù>…<õE…xD'Ýššâª=83œ<¶¾©aÑ‚­&7eÉ-äÍËnJªkðé4ûg‰¯U3íǪ‡ÉEÀ?²ZwÕÆ·‹ôÕC/³4dDoJY¥Ÿ›3‹mL­ÐïwÌ)„Ÿ>öd›ýGÉÕã.á/•iËÚ=¸ígÇAPâ‡øÌâFõY¼Ynf9VCºnL\"w/ûåÚ(+!?7‰ÐWËÐyÑ™ ½×±èXU®5¶].îIý¾Ö;a»ûÂBbß…:BuäÁ¹é„›ËJÜøª¢’è` ²¦ðv}góº+™Õ, ©®$Ì$¥ “w7IË·{mÞ‘4Áú÷(íy£` LhQìëíÈ™±ëàÇøyÇ3Y¾½ D¨FèFº•Àëi)>:z‹ ÊA9ì,#ám½;_9dî$y[|çµ)XÔèÈC(ìæ;oOÛU•Ú(ìï¶XnÛ½Ño FìáÁ}(LyS•R„`ù\þ­“,ÞØ“/uKW•GîYK?ÏÛ½ÁzÂñÆ!ÿX¹mˆ (GûÛš&6*ª=¦Å—„™·}¯€Õê=¨e:aD­m‘à`:ø³|y$#´´©ùß9¾¯(º‰>sM@HBºv¾ÆúÜeÛ .|á-ÚŠKÖ,Æ|üÝûÎÙ<8„ oÎq‘":!Ù_ä°RG鯣²Ç—Vnžø­Ùœ?A:z¨Æx·+ßÛîÙì|9ëâ‚n޼?°/uµ /á?¿gõ5ÖàkŽÏ`ÿ^åRÖ 1Jð±w.OÍÍ ˆ\e…YŽZMÉ#Ô¾ɳüN€î0œ"•¥:ºQ×Öo·D~ÑûæÞ]ƒ18 ’M<ñKÈ_×ûf(úÀÊíˆÈˆ²6É­%Ç ÷jÜ[ßÎÖÈÚl™f\†XÂ\ºìë¡ü/e¹Æ'eÂk;ƒ=káºú²çòQÒíjwÝXÏÈ3KÊ.M Ã1coö°NBq«ÞLÐÝß"±¶~aà†Ð]VR;×eÿ¿­!KàðÂkü»[kÉßñ†€äÌÌ,vƲ€“ÙŒ5ª¯TÁù_g˜ðˆ+ñ‹JU˜ozî•fÎùõÅ|°Ä¹»}n4«"8§#{ .ÛwcðV—Žìþ+µ3\çZ¡6ÎP¹5FxaÞîz¥¢#EŸyZFSå))¤n9ž3ÍùèÂxªEκkIxŸ •ùóŒÀ–ä«®¸³Å‰T ”ƈ×|$Ž/åJ;Úù©a¥³”Ýê›ï>µITtoÇí>^ë#l.T·Ç+”8zv4³$Ý£‚¼ðtC¹á°é‡€S‹(ªøBþDÎsnmî!S½ÏtI+o–GŸµTŒnM+qü”ƒ*5UÖƒ“–r^üŽ>øÎG‡QX¥ªÞSʼnfbºÉébZ´¤·%yß5â3K:[ŒÁÃaŽŒ‹*C«ôôÒÏñË3>†{š”èkVÌTn­ŠºHŸ£rV/™çXWC ý†yLŸ5wçr'@.1ºÜEÛYØü»‰ÌÇ·³¾_þÕN6€_†µûõþuÆB‹Ëï§FÛaøè¦NîÒüF&ì¹ÑŠŠéÄ‘þüú}µ]†¶ê­0õÔ‹åå$ ¨:‡³?a›ž|¾‰X_KÆY‘UÍ Û2W¦­lžðö#fƒ+9Èl½\§ÀáhqJ)¾ù*;ï'¢8¯¦ˆ®=‹yšÏƒUÆû¬ˆ*ÿ+zn ¥ð3ri /Oúüc>®[zÙs{œ÷¯G¬î'éðÌ\¦S{YÚ*ÊŽ¶ãKÒê0üo±Ó߬7tô¶ôÙ ÿòRÕù– ÜËOcm¦ÆÓdûTÎãi<`7o[èð固泸ÍRæ~¼kÛò§„2´gž{wL³·+ι­ð^‹¡vìø$*ú‚HI¯är65- .±Šm§ ÔT •? ]¹iIꜸ†6HJ‰ðwcätY3"íÙ{½û3žNðé=á’ù¡vïd¶h!æñÆùIÅ;žžøbÎñáŽ?'7¾µ@®ò£î¾b™``…@¨¬´›6ì‡ä¾ÒŸ£-±ŒF»i6‡€qÍŽ‰´D³"›õe¹Íh•RÊcQ[â•Ó¿4U ç©…qŒ×^PzÃŽ;–ÂIS²<¬ÊidÈRþBâ¤;´õ²Ó„ÃÛö[›¶‰Y£K?Ë£C¯uí2Ýäwnà} ÿVn*'y‘¸‡±‡q—jo[îRd‹âf˜˜ý ÒígB“VhUpkO,½Ã~×1~ ãŸeŠü1®¶¶õ2==ÙÎ.ò›á,y+ŽMÆL®¢®X{˜Y&°:ÃûHøß¶õ_p´ã‰ wèèM&ã)üÊ<‹cÑý9®³üóã ¯JãÕÅtÒã‡:'ƒYïLn‡Äܬµñ |‚&%nˆ ‚®þÇj)ôn)\)ø{ †/åܳƒLË{á,{z@æJFÍ$ž”Ð_ÅÌÞ¹¨ÇjS¸¢÷zäÅyïí}†¼‘Ei•e÷\Ò×™©\•*§%Êê%íåo«"‚V§'ÐPÿ~µâJºàÓŽÚÌ»‚ÈôY°”TãݹhÑÊyi¸>BÆ °qû^Hñ6H<õÙy34¶?¬=L~ð0©„$#×çsZÿ$k Ç5ÞD›šìI åµðôaLqL)¾&À³ S¬4 >(7hÅÊ8·›©·Ø ™O‰ø¨lÎrOD".«+H€ˆXz)–fÒ~˜h¾³ºÖöÒÀ|9Ô¯Íò€.aË*êÜ^Û ²…#Ö…bXìå1,“TE¤È jøi5Ë™¥·££–H[ðfɆ—('Àº½×Ù´‡ÏÑ÷¶ |tÙnQ5xqJOEç)x<1pR e¼ ®ÕB:碎 ñ ]f"g*?z6£þQª[s—4’àZÓL .Þe W6‹sçÙZ¾h¤f>ÈX‹@Ûg!?`Œ0v ô´;ßû/òNSÑ78.Ê3¾Ëe–N¦\´ì8œ¯6@[Ì`©Sò]ë¿¢*N´‹¨ÕxºÛÜDkf³}Pô äé¯g.Ò·‘ôòoLË–È,é¬ö·ôju8å Þc¦ð¾¸Û'‰5™úÝ ùà”—”¼‹ÜæÃls•—ËRkxù°"£‡ê÷øÊŸx@aЛ Ö¬ôtSwÌö¼°B¨3:tS"¡Â»ô˜dÐ&âVy%cå¯8]Ÿ¨ÛÓ‚»ÁË¥ëoGqz˯YD0é©ñµµUDZøz¾±[¬\‰Ô Û“1,©H)ÿ•æN$,Ãò™|BŽV"·]/ª²!¦v¯EIt÷_C«©Ï%¥>CíeÅ’†UÖ¸¹pʶLºÇ&;Ó:=Bí:áø×»tÔŽ²”p®ÒäÏUä]W5XpÍØŸEÑñ¬!ÜÄëô÷P±Þ(¾šßïíÁPBÉPãúQœTÇצ%t!8;—½V‡œ"ä¡sõÕL‡E”îiÖùM0êãªôâøÔ H—XáÛ'vÅJùj¿Ââ*Ðûå5ïxÔnC•y×n”[/ (,ç•zÅ·¾‹hS4PÚDg¥ò¡Ÿêø~ûšîG“ÐJ{ž“(ƒ:zþ$;«™¯fúBP”–;]«3$.’ŸGïØÚ,»Þ:íØmýÑ9%Ïû¥àAM1w,¾pȼ?+¥ÆÍ×g%Ë’ŒÅ?Ô4‹4 S¥0…ÙWáš#aZŸÃþÕRÕçŽHDømË¥)…ÕÊâÉûA¶újnc±0Ž)WKÓ3ûί# Ç^6!ËÑŸùÕØsCD@ É²ÎP4¢—n¶8@w ’o%Xºç¤£Ô‚E‹ó @™]ŸÐI–›qº›ß)cuBœùÑ:Y¬ä#¨\å^I$ÿ>`ÅãøÈv±ƒSŠ‘¾‰ÀPϦ>uc‚¤Ì‰°«æ&'™ºï¥ ÎOþÃHÌ•ÔÁÝá!Á†çk" Ð¢<åCÖ©EîM wnªe=D!~r9àŠ¤ù‰ .¯ Öê_mie VG¤¡b¥!¥ÿ6 á.y*™x«­-¨^”qv©wpvÇšzbÀ'¥{Ñíð3HÊóì¯*E©»Ý‘û=Šà÷ªÑ¹]럄¶Te¨ºyð•ÿÎ2‹ Ø|óˆ8uWòÝ¢‚Ò5&iö·²ÑÝ\oVëî¶ý-ŠI±Îh¡ÑIT¡];£œ‚[ÙÂd;Œ9 j-r²U’¹ÑÞWøeT>©· ¬<¬zA¸.°µ¯3—##Xõ8ºWF¹˜åµ¼ØÔ>÷ßáÓ]âp,üHs>(oYÏó§3q ã<^O®wÏ?:<Ɇ¹ú<80F8Ç·W½é‡¹ŽF£P¼jmi^U|‚!ä‹t?¨BÝeæ––ó™¯m©ý¥‹“2¡çoË[{þïÚÂ<>Ò´î–›skûÎh§äqPç =”Þ¶q>·ŽÅ,™ì.Üz®Ušó6ƒC‰ÙQòBŠHDZ'Rö_g¢ÃÎ1oÃÝÌ-“æGÆQð‹´¯ãŽ¡’¹¶…1`¤’DgÛϵœg@Ç+ØcÕ­÷1‹kÁðDæUyúW{ §ùMª7œ?©Ã¦ÌåÙO^¶üÞþ‚Æ6=A QEÿ&MH¬p?¢ÿ’AšÎ×IPH:nŠíûe¤ùÑÝ”¦t¬˜¬ª¼îd­Ïùûè£h¦ßb<{D!lšÚq¹úÝéÖye€Ò¾É ì 0Ó`%på¹ ÛíÇ®öÏvgS‚pKp48Ço¼p÷êŒòbGWOMž<›…õÔ/¡Œ2§§cÊx,<Í[ùF¶àõ:JMÂ-D[&ºÞ@w~R5f“²ñÊkð¸!%÷¶Þ?àñ3k «ù“fMö¾ÛysI›¾¯—ŽkÍæ¢­â:µ¥lEÊ¢P]Þ ½}÷ÜÛ,Ç—bvà²k&¿ƒ÷-¸`»ÿ\]”›='Sà Y¦%â(åzŒôlâ[–Lz ­fŒg\š“?÷,©ŽW®™¢|ÞB#XÐèd>X^I «š) Õ&UÈfç ©;LîTH\8ë€p;ݽr\cÊií7?›åìú‘¨‹OÌlz?ªzÎ¥Ú·‚l<¼,*~¦1ås¢§JÏÕ­Taî}€^ÈÀݯŠò0eÎ ‡½‘±?°)ÐxÏ šq¬;&»˜9TIDH]X38YÚleœºi?’é•”½RÎQeRCMÒR(CtŠDMü>ÅujGF°h8–pœÉ×âpŒ@…ÑP&ÌÃjÏ!n˜QîX‹á”×ç{ªîƒr¬’Y0Z˜-¹½Î‡ã6Z#4Çfìšj1ödWEÖ®ŠoDüh²¹W×;»ºÜºòæü¾?öu¨1 |²ÅÒˆ\ø:ôA—‡õ >‹A¬FÕáu{ÃùÑ$·ûº0ëþØp!9`+¨2ç“Áÿë}ŒÏØXÊÆï¬÷ µU{7ºž²>Ó|éL:œ}ìm”8å¦ü4³È1ž…ZµJˆƒÝx¤±m}5éZÝøƒ­Õ½ ì "­¬êÏ8¢çà}e°š±t´—PîrÖCFv›±m?™F¦ŸQØN瓽|ŸõX²@ÛcR]àtÍOƒ”*_-b^k”›5É‹(NYÊÔÖ¾lÒ·¥4|z\WµµñjŽ «gMÆJåø\ž„äÜA'» £Õy )Å~"Í‘WˆhÇÇN¢†Kýó÷•7·ž1_‡Tѧ¿Wó”k¸FMõËTŽÛæ×R¨)é5]æw¢ÉSPá-ß@*²IÜ‚"«Ÿ4n‡Òjt•;}×–›c}Ül<®¤fƒáÁw¤Ê?z­áêË´QN{•ðD¥AP½ QzêWCý›¨zúIêÉ‹–DñÐzÚÄ¡b3ÞÅDºIÐÒ¦Öãm£ý~å¬á‹®Q"f…ºÆaC®ÆŽÍÂ)'/cýfµ—Ô[߬q@ îË‹Ïý·:Î/Y…ó?æW¾ËwWrõyšá[廎V×[×g¸vX<‰oýóš&…ç'…nIð$CcWõcôÅ·Ùeœ«èë5»E <ím—þÓFYIÅ'´+¹5¬§~M÷²’ËÈß/¼8xÙ;ÝÂ: Üš»ÎÔkJÊ;h¾ÅýÍ(FùЇO“¬È"~ȧEO,òy\4•xß!6ÓÛÈ´ß1¾QÑôý}ˆò×Ð>Žû|nQ¥7¾ó÷¬ö§‰íZôýÏC?’ñvû©ºÜ×/ÅüLŒ@5ÔîL²Ö:ïþ°èê¼íU÷hÆÕ{,B€f( ͼoùŽAV¹q´.";/yÝ-NÊ“í[Z—ôF©FgFN#¾·©eNgʬjžÑéˆèë-룵1í˜k9Éèà£]ô:×Luz¥uÅ'ÇjIƒ0=Ü`ŸoyM _z~s“~Æ…~«Ê©Ï5©¦#ùP\y»ÜƒòCˆü°à¬¤-Ónýè³5îq¶½ñ+¥)ÄMC²’q`g–Å#/õ?XKødB¡t}›-Uv'/-‘,Á9ìì÷§fß/ŸƒGE `•>›%;¯X_3aGct™•Þ£‹?oÞ—î@îNƒ:”óÍ8 íy×È çÑBÕƒ`Á©yºˆ÷†-ÆJœuÌf1 üûÀÍÉôºký›s_¾÷%£åÒy+}KA±ÓÐ]À>žú·ÝZ-â¥.òO¿eð\GÊÒÙçþdç6@Mô”¿œo×püò$•ÛBÎbe+1h`6ÍÏNÇ(µüöš¾oªGa¦vó3tUðTŽ"“f¥w[tUž²ÇaíÑòÀöšªôh†Ë] Þ:{ˆ?œAñOÓÝðšc½*S!ðÓZ~áÙâ,¸>áë½ûš|l+‚Ï ÁRÛ€—Óp¸²¡öIUŸ(¦uÈ<œ¬¡ aüƒ`í™nçmßV7¸WØ”5ô‘/®‡#-޼‚ æ>Hi^ôYvÝÆº¼\ÝŸwÖóÔ» 8‹{J‰æ âjöHZ7f—[GÈ]|NcjJ®ÕÊ+u¥×ð5%•)]¿Ó~ÃJõf:÷áG¼MnAÙv¯1¾]¹¶Ú€¡¨I}Õ܃µ{ͤ3”ŸE‡ÓŸÕÇænC»›g¿!íMØs^ýʳø›…(¨¤_…oÕΛå¥D˜Ö)}y#ÅUÜž5æBÁ6Õ.7«ï!^+™Õ²¿\.ñ x¤¡LßÝæT†+`m&ñþLŸê¨£u7ö-÷× ::´z:ášÈŠ`Ö?øb ]æô}S-u£æXjBgÁ6Xwù¥…È(+æa×í\· |{áøÑ$ ð”Ý·ÉUG:¶o·ÂÈã~U_Ï·ï2][”Çv¸]6ó_K]ðs˜O[)E·žõ4ÕSW¸€ˆ" €Ç¯P«ºGèúyIäÊ<ç.AöÊoBƒÕå`¢²7t°+îYÕüµ—ÚyF톀â1Ê‹Qâ´¥Ð%¬z$Æý¿Ò¦»Åú‚1Þr ÖÐþõ©¦¶¼‹Â@E À]ÏòùŽkì‘em:H¸ q›oßó&Ûn6¿ß%µš|•¢ë2àÏ^%Td¥ÛY9«KäõëKN%æ<Žœ› E7îÃWÉéybo¥)ÿÌPVI”Öe€ÒNÀ.hßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø/À=:æíêñjéo|·^ï]­ë—ww|óß|ù¾ãíïUïmÃ}êÏ“Ç×ÛÛæí諭õ½ê{Ìû×Ûï[î½í쇷}æw»ï»îûÏ›í¾ë»ÝEUSð4šž§èj`#4LHÄô&Ѧ“Õ=È‘m&„¡IÕ¸0B .ÂüË·’kZ/;Á¼g-Úe媼œ”Õ¾ßÑC \ëì«à_¦ˆö;oëÙóPÂü ÷V9v|¬NC¾£³÷pp:êOûÿ¼Î~‡Šø,Õ¿Å)ŒÓkÀ;_zû†Šp)è9Nþþ°&ÎFCü²lˆŠššFP¶­6²EwÐ߃ꜥö?£p@Àµ³bwŸäGlIÕVi7´0 Üôßlµo•bmúž}u³[ `oðÔ=zåÇŸ–C?óB\¹…Ó|aÁê».Ëà+éÔÙ;‡=þí£=ç&6±æ¡¾6sÿa ýÚwýõ<&ž¦ÖIj"†fžHe¥¹eNÙå³”“¿“"L>MÇšú‘ÓmT‰Ͼ²èä›6ߢ‹Ùë¹R-3 ÐHF§ïJ¤>–Äpš´z˜·SH^øÄÜ \ßU)®ºù»‚àŽF¢}Ñ ›ëXQTiüT!1‰8&=ØÝÎã¼²^b%³k©¨]¤|´úò?¦e«Jü™%—YËÜ´þÏPoø°•CI©úοY~mâHÞMÙ\ÂX¤V;èÿ‹—ÏSJÊ3ùѤƒzq=³¥ÝWËÁbÝô*ë[à{:ZNCÀ  ”õm*7x_rWÀóR½|OÕI5dµÆýŸR»ãw•ªÅoe´2]«JI³?Ë]ÍÅþlo–߯Äçûˆ/P”€ˆ™ €¥Ó|~¬©IÓˆÛ~¼ß_)7RŠù^~áå»­ØiC¥2ë“Y@©[ZÝ€ÌÁ×?HäFBRD±Í”´`ùÍ1îÉ ­9u&®årûÛláKá8F_¨ÒX\Ý;µ©ÇLã\»2øM “cK¸,·{]jpoIãCÒSÔ‘mx„›„´î'ÓíBâ×QœuæE,w7f™«Ì¹ÓTad›*Ù®P?üý†nÛ¶g¼ä8ÎÚL[t¹uDŽm¢ÝX ~®÷žÍ·*¬o(z “:3v!¸þ<©Ùbl‡>^É–šú!”²9í„Íç œÒ¿ˆzþÈl4Í;ïŘ²'r¯q‰ôú– _ ‹©$®’ÒïÓ[d¾oÖS½žy×.+ÇØW V!ðn!CÎë vÒ›Ò¦I£×¨D?°–(?KºgÖþÔ•ŠÜ_º’ægR¿óý šM…‰ÈYz™îªj™É÷Ìý˜ùì$µ~ÔN(’¶ÁbD©N9컪J{-2Ö–<¾Nn?"i|-¸”Ö–Fù;†îÕµ³;—Žâ@¶cb|ó…Ø«÷¥ó½,ÍP·E„’¯öÃT4o^Äv‹Jt¯û=§c±À-ð9AÙWU͹ÐW&"ã™k¿?6ìµ¥á$¥­âÊøûjýš'r“²ñ¢x|Þ}¬Ðæ·I‰+o_N>ůÕE îäÑpúaouŽÖÛ}Z¶4Ù-Û¡ü\&ÅzÌjbÅ=læŒ@ü¢]zþ(Ô6n;Ðh^o’¸¼¬ôe<¸Â<_cˆ«ß †ß¯1ÉŽ)¼Žùb ô&©É-ãîIæº>½%#¾¼Šis‡ÄäJ‡[»÷ßÒ¿Ï ø?N1ýœÏÓꊪéEENø ÆÝ¶E?†£ü`Qà—)¦‚•ý(Þ Ô-2ÏC+ôgê~ݚڽΘûËMk$cÛU¡/Í»±Vôh«Š?²‹¢ëšZU»*ÍúÕ…5[5À–rÔ«ÓØŒ¶ugµ(P³v«3}-æ¥R¸9¸æúû‹F©-Rkl ŒSÿÝÛ+G¼2¡‰ÞŧòtÓÚ×j·„œ ±û!¡vå Ò’ƒ’Ç"ýv’oa¹?œÓnJŠ$Ÿ‡sVÝ ”‹Õk… ¾¯—A’>¹Â¾aæ8gÒ}ˆ€q±ç˜–*-a$NÍSa±¹Ý\°Y°bØMYq;/ ÓË×ìn™áÐ*ôû.Ëç73]cgv¢ë²}ÞA¹…K!äݧà;emYåãé)o¶&¿gâíb|EèÔØñ0ˆÜ¥œoüõû‚ó±ÊÌçFÞ:(¤~™¯”¬¹ëuÈ·Û‘Ïk! +ztM?ˆ~¤ ôÇ=4Õ˜Ðô¼Í¢ÄÊÆiÉ”Î{g} ÿPf³­t‹Íüz<Ή'‘*ÖUFÔˆŠÃR*ÕÞK IûŒ8·‘‹Ø‡E€[WqøÆ×èÌ¡aÖQ8n…îÜäq›ªM<ê¥[a7½™ÒùÎż#"°ôæüYŠ<¢G &œ5ufoc%¾¢µó,`UQoþÊò‹ m¯Ä7õàm[O>oÞÙ¶5J/ •Ì›ÓÙÕ"d}éù§y¿w#Q{¾x,Â\4h„©Ø,°†RžÏÌЗ©÷Àâp+(켞ô­0›³Û ãÖi]vÞ?Eä-çk«9ê|“°ËÝµ›Zï¡ç[ω……ùúÕSõTKÆ=@½xß2ÐKˆ›å/>æ>Ÿòk#qöj1$@õiïݲjˆ¼xÐiU;k°%a”|oÐeŽ$)>$rmû¯ÐƒênïBo¬õ.U¹ ñBr UžMi•¹ÖOO!Oà|‡nV_=…’I톒KC¸jÄØ{JÎÜžØgpDäü‰w¶È‘VÌ‘òôò&¬ä0ô(P]­Ñ l’ ‘IÌ"óûYéÿ¯*òhç/íûTiõ4›Ò¦áÆq`OùG³¢yñÞ´¯öõ×.<Ü@úGݽäéØ2Ù‘¡ü~Æl5̼ø¯Ëú³‹ ÊÔ»ïíc³ÌžÐáñ'3-!­ Y9 <­¢4³o=Éu»?³¨ª§9cŽ1—kNršâœÁ§·´/C œø»>Kný†Cæ/¥ÿ9¹XÄ¿SN_/±à‰°4è*Ù%hîY åc1 3óNî³ç8Jòü%­ )0á4ÐõÂëpãøïÇ<,Z)±~G¬ãc² ²ÖZº·ä¥®h¢=«]Û€ˆÜLCŸ/ome‡û´¼Î¹o—mÐgû6^æ¯;x¹zjËÝÁ5³m›ížçìw‰h,È­ñPXå{!ÖFj!ïêɉø4[Í«kè†/+Æs± —o±mŠ¿Ìub ±O[YÔî7ÙxO*nú™‰V_ –gÕp«½ˆeзË=W¿êý&je°º>†GÌ\!‡»]îí”%¦šßs,«ñ…rT]Ñœ¼-’+ªšB(A¨ýê­rÙõùâš›púpÿ3ǘ‘^+¤ô´ØWØt,W¡7­ö0GÓOJBØ›zŸ b…gÝ8á£lK™,`¯o¾Ì¹=¸#ùúR–,)ݧÝv]•}ß”fþe!kK5ļín±15h”™¶U  3üºïÆO µlWŠ®ã#ßÉe:Lîþí8§õ–öò6ÆR°œØK¼u°€%Wg€ÙP%µ!aý ‹ð¢æX¤àsðÊë ;l•­§8?+hç>d&ºe+ä¯Y~# eº}‘îÖNîá?íÊz X¼ýôÎs”‰ÒHrʳÈP‡Žª™>®[ÀÔ³Òé†ËÞþˆXEÞ4èï2€¤Žð\éÎÃþ‰y{{¹]WEºéÌŠ-ưÀ”8ñ_I}D÷çkÌ&püÔy¤…‹Rÿéjc}ps­ÿªN`ÿA³°¨0·m(>¨ž[¿CÕ)ÛßÏ­RpÎ#È3$M‚Öš jå Ž•ÿÚR‡‚ƒ 3ÌIwBŽY'EŠ v%ÊÙ½ö<Ù‡ùô磫Vƒ8©Ò¼Ý†NõÈ3ZEñX7.°¿»æNÒz #ifwÂ:« û÷='b–ÿ9ªàVéׂ&BAúgé@ëºrm–±õ™Ñ®—ŒsTÓX¹µKÆFÀò¬õãž9P¸žCÝ#¬´yý¾RObc³©GÂE3—á‘)¹Î$Ž?ymƒWG«KïøVj ¤XVsÅ2H·Wºõߥ¨Ñ–A æVÇóAA¡ýå&ó‘.‹øFºåð)Í!{Åí̶ž*"èi¢Ÿ*`kþ¤@ª÷ÝÑKVЅ೩‚ÝN—LîªoǸô«úµªL­{Ê&o¥Ñ¦´ìåK™ƒ?Ðf«½Æ²;xÓr«Ë"‡§ð÷c¶\Ø7Ø\PL­C‘Þƒ†:ĺÞaøŠç3ìU,ÒÅò³»Þ‘0Ë~â¦4;îõÁÁZÌ }zP¬A6?m#V–_$âæÏ»¹–ÓÕ Ž`è„"ÿ×°@˜ØžïåÛš›ÒÅ–]R;¬íqÁ/2¾ @CïÌô·‡&í1-ÏëΊ¶ì=~É9ˆÛàco|÷ô7KÏun¢†ü®*2Cc¦,h{©«ž„É¥‰iª§¨*Û  $÷9,[n1¾¿îŸ5ü’Î#«c¶8öiœL‘QÍ×…œ+õ'Q]Æp ¥S)ºjä' ³­˜¸ý.K« >.gLVV—÷ÄÀ}JAèt¶Þ/‹ÁÃpfxûHüæ%ÇoÈÚ3 ®žû øPZ6n”-*þ° w`±¬Ï=Ò*ÞÐŽùX[FÝæ(èj.Û¸ŒõiYf 'ÞéqÐå]6Fx·Â<üâÔz%h]ð ðgû³\ø ehöÒ¹Žý² ô5v¼4^ø…;ÓkèX*ij_$õ ÍÂÎÛPý Í9¬QË W/¢¦E»¾u×q‘KbÏ©ÿ‚<ö˜„s0òZ¿Æ<ò= ³"}4Ù ¹K %ò½ÿ!hš{P†<—¸0ñ†ð7é¦Íg·Ô|)ôuóÌ4ã#]‹B`£{Ø ö´¦ÀgRÅv4ó1:­¶cÉ-?ÕW§^Ê®;èú¥µ8§ä¨p&!å(Ö,æmB¥1'YjZh~½‘˜5$ïz"!w!ûc¡íöÜçøUb_ƒ’Îi·±.Æ’Ù&ÕÓJNÀ÷PL/˜yý%¤þM|%'ôd-‚N34Ìù×ößöFBÛs¥×âÐô\sÏ!Ê1»Äíø1Š–IíK…z3¤òÚ[ÄÅÂ_9Oæ'Âäà¤àXÿ½4D—¨k¤Eï+'#p¤É¦ _µQ—j›ü}ì NndÙ!2o§–YЗóšÄä,AVø!¢}8ëÏI¡üð*çm[a^ï—m¢}£–»ZÅýRù[ö˜å‘`‚Óÿ¼%Fÿˆâ:IÚQeœ7by»©¾³þHB€o:1Œ(»û<¼ŒÔËL·¿Âù˜Æ] À&Õ«}¼í‡³Î{Öêsv]Í4öw/¿# –Ê}Ü%x‰¾R™¦M#35*וûvˆ’¡¯¬!ù­P%Ë[5\ÜðÞãr÷›;LÏìädg"1f~n£ÂÅ%µ‘›DˆÖ˜ø|">e™ _^@îHäÛO™’_3ÆÊ£ë•ãÿϪkƒ!ÐÔEºÉÊá››ÏÉúw¿ê|xOJ9¶aúy:Gïsµ°»í²…cI‚Ñ~{é,qv{¥ús·¹V»æžæ<¯òÄ!º-5ˆÄ£×ÞØ"p°a¥ÒMm ŵú°‹Š­~çNòs¦©=×<ùæú„…Ð7íûÙ*lyå±B`+±Ä¿‡á<-#ÑÑ%B4µôcÍBÊÕ!mýÎ çÚ[Œ°äN,v/æŽÍ¦G¹.s™Zîit˯íÈUº8y'V½íÖôêâäN–'YAI8'ÚiO•ÉÂlçÍ”^µÊÞ?”>È´2AðñÕöåã#תè‡A^Çö¢v;Ó{Ò5`~à…ÉE½‡1ìúéQÝ(7ä;.pÈ?d¥yÃúÂ/7švN]âë-7Žñß÷»³ÔØ:EÊæ}E<“M´ÐL?âxòè*£—똊­|"ÁF0E³&ö’,{_BT}¡™áî]~ñœG"{‡g¦»E¢ûD˜º ÜDÄZrÖHvŒM:”Ñé<+/r7جuì½A:Ž1ÅÅ.W®Ê×… žÈì‡|ù/Y¨Ëqùá#DÁQ PóÔY¢Ï- @cåľ_£Gë½0GŸÅG%µtÕàTÇ•›“[ȰæZ»•¢2µVü¬ÿ©ÚºƒÒÞ”¾öØ] gã t¤_&!½Ø±ÍøýbGb|Ï+f¤0öËùæé(®ÕŠî±ÑÎúƒ}?â­htcÃ÷¨=¼†Œ ¿³¸·dæzJ”A8sv©Zª•ˆ™Éƴ京ñ}Î|¶J®³TÐERAÌ_xn^ZÙ’X8Ùj„`§¥gjí$É©ªHèGŽïê» ˆŽ'ž<å /Èk~jž¹ÏÒ ÚÿçD9¶S§a>ϯÁE¾ñ&Ñõ12ÄéǤT«÷’ʃ“›xN"ºÄŒ!WQ °aV”åDÞ¶I‘×ïBž ³éO7ظ=ò{Å5$©O¹é}æªw®hnï”üñeMîtɤ†,ƒáÍÔãu¥ó¤¢,&Õšëþ~£ŸÂ³Œ&²ö!‘LvºÈ–ü¿Eãʨ秊ÃÄ 'Záàn3ÿxþ$1i.ÑÞÝ#ö[Ù£Ño<uÌc SŽPUºß/ˆZ†ýR2r|›ší45\EÅ#<荒¬^M—!7>íÅSÓTùšÊÒ±ùíf½aÎ;2”&z%_!C2×F²|È÷ëµˤÚŒ"ýÓ¤ø’CqyÑÛ·– #ù¹ÈÏ[g‡™=kžëU~­ƒ¶Ï@uõ~c,KU¤Þ{1¤~ tŒìÔ·rH ”ü= iÞ³®,áuò̳2ùž¾ag†e¼Í2rf íaÒáÍz£‘6žH…Èðí9®QWQ¢§Æõ^!ç·»F…»êZævœm”_U I)íKgîÑl&U%©]6‚!å®ûЍ/q÷›K‚%DÒ`ÂN“â¢öÞ|KÕáyíÙÚÔrŠY£ß¢ËLµ2Ø ¿Ë ç1ëAß©ç=Ö³| š hª, ´–ƒxT;ëˆËìf$¯6Ÿ·²Åíú«ðs&7^xÚÓßd=F7ËѾĔdêg£|êŠòÛ{­"~¹€ Þ„~ºS ñ=°úª1­vPo~œ®Göh;Ô”ÜÞÞæòv“³h)L•BHΑµ /Ûg’ŒÂ,$Ì/C©©ðAü—`ðb˜ü’ú·Õà»qˆ3áŸSWì´*Èm˜/®A8JŽRµMj¥%ù’øeº a#ª¬¦k’Çͽ@I-s 0-ªKu&ú”ÃV°¾Z]‹¼¹³÷ÐR’³K±³C&5ž§,¨`¡%ó8QBTúZgHh8ŒÁ®=|Y9iK^¾Ì†aTäxV unP%³ô^¿f¢ÓøÙ€ §ëò wü•ª8O°×Uù"z¼ð‘ÝŒé·Z’Äj`“iÅšì–r¢TûÞãÂóÃjê³VMœ”„ø»×s7d„5ˆ ï:S÷¾!nŸÌB{ùþåÌÅÉó£ó–(ºžAÜ4G¢uÙQ;üP©õ "éÂrBÂQ\ˆõüß `A£|ó7`ãgÙ/2ww~™Ì“«¯x#á'«åÇÿmƒp´f±FWBø±þüZ™8©Û•z~[û ”åï«Îif7qnËÆ)/æ8ë(Ú¼I—b€æ±âÏQ¯g½G´RÜz6 HÑ\sÇdˆZ—â(ô1]ök†^Á¼ðF‹ƒn¥ðÛîPªîü–Ê(”3°¥ÃïL4l¹É'¸Â ¼â¥T ”bVñoމ÷ù¥œËŽù+JêÒ”qøˆ©+Ùœ¬ó®—ÓŠáj+Y9ÃÁ`ÖSØÜë< [ŠÇÄ; ™‚MͱÃ;YQšÎã¶N‘ÿmÉ>ú¡‹DºÖ*eŒ'žÈ¢{íˇKº#úR]uM2T¦qV;;Þ7‘~€úÚ»}ã¨Eeè%Eàh$óúE7\ÑÌTK«,î(× Å‚1H¼A øŸÙT\M;ï:B‰.bQ:Ú÷à‡o•ÉxÝ#eÁÕ˜‡­(>·1UŸlFå šV Ò;ϼq†ãàlm^°GûÙPýø¶µD¯Þ/D.=’éÒ©àA¯$@?# e[Þ½Øúœ “]ˈëMX.ñ_ÏÙ6èÓźaf!D}ì ÅÌÐåú\~ɶe| 0”)Z+,tWj-:¨j¡ÎAØU“ºNO£ÚŒ»RïÝž2¯dê“£ªÂÿ1®r—° Ð…’ÆåŽ{¨8?[/)É'E½t¸n¼ð8PvCó«ðDëãA¾¸€½TÓ‡qVy ý¦ž{sˆÆ}W°³r*”º%ŠIü`4äU¥?¨;:òúLa¿Y¯s3F8U¢k|T¼•‹¹›Yë'ëÅçåHßㄞ×´˜e][èiLYQP«ëÝ´íij‚è)sÔ‰c~¼xd¹ãL7nòÚ ÍÀ¶ @9÷ÂÌ ’3‰6å\•Ìœ»€…!ÕÜ_…¡´'ŸGãÎ|ä{â¡=“Y_ Fä€Hç¶AP¦þ–º^‡àï²È1¹×Íg¤ÎgºÅ¾Þwí#À0o´qL^÷Qq!ºc]ß]Ú™|3«}é¨2Š\ŽŸ?(hó” {4j_–§:†/Øûú¼7预«¯èv·×Fs¾ÎÚ~Æ·ùÛ·2—zÃÄæhêvê„ ÷ Zòåè²Ùdô5uRt”誻£±úyµaµÖo¡Þ¬£Þ‹pŽo*dãóK«R†ˆ¿"ÚÒ?’Ñœúý»cŠÚÇØ Ux,ì¼vlÁìÜ-dµw#A!û7¶ßž¿x?]ÅÒ˜p=MŸŒTb9N;@÷²ñÎõúQµÐ|»9·c9œÖ“ýªþ—EÛÎÒû.Öß%S «‘~cIÈm¸ùy›ïC¥O›º~Çk- :ß6.É”ï±u†[OÃo€‘ïÞæ£tw÷FûÊà—6Imt¬ê÷@²çÂQˆ’–º3›äÏ#k Dÿ#ÁmU Ãâr¬ÙJ¸]PB!Æ·rþz["¦²kªªjÍî,i¬þ~×&¹ðÀ„¿:Û⮳Gµ9"˜ÚÏ`Ê\øëÇØªcà´&À¼lRäö×—=z{›ÁÂË»]‹œ˜I]VDJ¤XQµØo%pÌU¼–®´øÁ/Iì²C†[I›Fã‹3ðÓµEáИïëÀæË[Ù¥oš.².§—‘°ÎLA§¡¾¾$”¢úÎëg“]ð¦iM…ŒúVö8 œ;ðö¾ª2z ²ÛÎ+ŠŸ§!A2ÏþΤÁ»FqÍ]½Û¢6ð]}©`ïÁšÕ7Íx°O†njÍ9S5›Ÿ²;„‡!â]öÙŒ›„ÎÎù£Â–ph¹õk OŠz~ÇYFèhÑ冓]wÆ÷­ÔY‹Ž±ÿ|ytîzewÖ»µ:¦6æÀú>ý̲û¨kÜiÙÙ*Ùì­“jE¹Ž:)ñÕf’¿È.OÅf%µ~?$Vw\ˆ\(9ñ^ó™þÈ¢Ô‘…õ¸Ø6ßµ^‰ áE*mì¯b˜a~s—¢¡”–¾(yZ¿£“òš[ÇVªa÷77œá‚*†¼fpMg3r.%ÁVýZH]§ó:Fž–ÛuÕHŽ´±”%ìš`ý/w(r±\âã#»0¶ZÙeŸ·Þ@Cœ¿TºO:âAõ¦î69§Ã%“‰ÎY?õ~Kno'䦚E(>a`»IvÓ5Û ÇmÍEŸ´Ûªj¢íGÂbÕ”ocέ=}üYñ9Œ£8zã´›ÿ2m}:3ÞѰlª^/Ûík!*‹fUPÓZ5¬¶{›³lj77vÒ½·mÓ@Eîû{ÞÂÝÎßyöÛíØªyõ¾îuµìá¯yØúï=i#ëf,Í)Ý÷6¢ï»ëìÚûÖ÷»î÷vÏxZÛãš!;Û¸À½»›-[Z˜¸MkhØ5íï¼úôdÛ"³iš»´®Ø÷ÔÞõpʤL ¦jz4É‚bhdÐ56š1OL4ž™4&Èš24ÐÐÓ@ÐhjžhÒzhÁ 0 „ÔØÂe< l&™4ÄÓTTš 4©€ŒƒM)´ÓM&›SÈÓ Íd`&hѦ&dÉ“&š ´#S êbž™ éÈÓFDôSOÉ©§ªŸ´h* ª™&©êdÀš14Á ™0 ƒS¡š†˜ÔÑ„ÓM Sò™‰=& 4i£"y)ìM ¦ÐšjŸé“SÔÍ 4ÐSÓL˜ÈMPIH„bžši¢žMÏH CÔÁ¨Ù´6£dFž£!¦'©µ3Diêf¦›$Èõ¤ÙM¢zj4da4õ2i‰É‘š‡¨hÆ¡´ié1=@¨šbF™1 §¨Æ¦G£DÔØSõ=QäÓ@jŸ©“õO ˆ`¦i3FŠzžžšj™êy5M7¦ORŸ¦‰¥=OjŸ£LOSÔõ?žò~¦©à(~Tòm(ôò§”ö©úL@E$BjaOš4 ˜§é2ž§…OÓ5SÛSMPeOÈ)äýA¡©êzjyOÈÓFIèÐ2)í45Mêa›SÕ Èž©àIêzL§èÒžÔô§êzž…Å»3²Š`zÑBòw‘Ì ],ŒïSÞÝ>¸¾§‘ã§ÈäÓ!د»ö~å·¦_w™ÚT5j¾ßYÞ"W×”}Y Þ/n+óKãp*¤$ȈÇÔœæíãèñ¥ËUàÐrlä`ˆh•!4S5¤æ`¤jC"QÚˆôLÆÈ Hêד:€« ÐÌAS!B ƒ½ ]äi!H ñøÉ†r ØŠ° H!Q©T<2ô((W è…P+AGº…EJø"@vñ C}$VÈóñ§2!V2' @BC!1åpÈ Â È>’ ‚šR0c€³È™0HDB,Ã1°œÃr@Q+È‘ÀÙ$9Àv[‚(p„EKØÚ$Z0« SÁ¯a}†Ã6%‘'Äp(ÉóÙÅjÊ$UòȯB€(" " ±LÕœ1 T)*kW*b‚B'„{ …nÈ `@©8çYPñYsŽô¯f¤8ñÈ ÏŠý!¢0 öÄ]gP4dX”™„0®È’V<»~&\:6G„>Ñõa#ü˜hÁЬaÆ =É;&É60cßU¾3fØûN x# ÄŒ˜Ô1@˜Ó11ìAALz¿3ÈdØ€° .‰Ÿ-ˆ† €ßÆFc Dx-é kÂe2À±"D]\¹2¯®„@ Lb!ƒwMb´ì¡–ïÂÔ$à D(rAi˜?|s¬€ã(…IA˜Ï¸ñ¤ ª-Š"*ÓŸS‚t$%… L$ ÁHe‚#(3 iZR¿´`ßݰäB˜[¡z³ Z³T7GöeP¸œ‚Æ °"ÒDÀ·ÄEF ñò‡ ¸°0!’ +Tâs&Ïœgd9ã…L4L"AMj zÀMdœÍ"Ѐ–@=„ izBåÃ3fAÎ<š{-“ÁZ?tkÙË‚¤€¿3´D8GRê™=C_ª/†9¯·B{"$‡l䉎t!Í„ÍÊ2`JÖy l  }@˜µ@4$S |n¨,ÐÎ5­Ðâ9@«vŒ!¤ l×ø<©;Š.Pú¹lÙn˜.\ j9Â`í†úä\JPÄŽ óL:gHû {ì»Ò˜yñî˜7#¹@S1ä“êb”Dz9Œ£2cê^Z Àƒì«@õà ƒNÒFPqä2¤A‡!ÄÜ ï‚ÉS ÀÎ2îÐ×)¼pÆœ^Œêó&-PɆ@“áÚf˜/ “¬b4I#Óô¡«%8¦!žD:F Qôü¦¹Ò+Õ;‹n掀À1#$Ú2%Ós­»<âQ©`ÖðØ–fù̳ì5E“=éPã^ìƒú£~aÈùré” Ô¿œpHáY…Ï:ãZÈ6O”s…‘P„Â{ÙÆó˜"šêQ¶*GN Åtøo¬2Ñ/Žm¬'ÂG¢/‡œÎ†QàÊ.ã—%Ý’Þq‘K¦ ‹bþùËsCo,`Õ4CöñKú†pr]~‘2!ÜÝt·tËKtÄUZö£ÕEL­޲f0r¯¼EO9ª$dIì koä7l$ì" ‚ “©Žtg(Lûލ¢dÂðª)Š’@ÃÀ‰·ãBîJQè'¢a“ç $†ØÑ€eÂþäÜ2•¦ hQç˜}XÊ <$(ÛgžCÙdë~·ÚxµrÇ,R ôbùIJZ1dþHæMwdÅ|_D.†euHšöø…!{vÓ#T•€7n럀²BűrÉ £~ÖS|5/w×?Ä*úm‡oAùF¬Õ ‰Ž,ÌÔ·c5¾¼ô…µ ÈÈ!H!ƒ=3 g¬YТE{™àßu†©ÓærÝ-‘R‡ù¾‚~¾Í]ö†%¢r FªkZx‘m†—) ¯lÕ÷JÍ~ÛÃ0lè!„¡ ߺãÐæYƒ-äôýp¡áŸ#Æu•Å8@]SBFa(4ˆ[Œù‚4¦èg’ÐýôgᣠƂYॵy‡gÅ7uûš`uŒ v’5Œ ŒB`ÂcU-a›'$Æ7‘ö¦^ãcLæ,G¨ù› ‰ÊÿÜ !TáD ð  n÷ì£Üxg÷2ådd 0(‘ °PàÏà{dñ¥Îev)áÙ¡ßm[‹Êºè-ÌyÕ¾æ&ïͯ¬x˜I§-o¬ÔvSGéÄ~åmѱg¢óP€òÞ™ñ‹‚zgĆÏ=¾·–²4&+mû¿aP9¸iXf4P¯ÓJ/ecƒkAÙ“§„‘&^‹€y‚ â={Àqïõ]Sé4ÏtÒ¾ÁÐŒö€÷,Fኲ0`÷XâÏ)ï׫à©ÙÓÀH$:vÁ¿œòq*™NyÈiVVXû úzS“çÌé6üŒ©¾ú¬”¿Åß%äe¼:ø¼ÒØiÿóöò1;þkâ¯m½ÿo€~ 6ÿ£âè6ˆtÙ©¸"Xs¨dÊA8?áסu¯¹zç@½ºwo“{¥‘á}‡9?Å !¤rV?Ï­ £’C±òléYè .¢'Œœ@•³Xxó%Ä”ÁÓ¢Hc6öyò°œIážxûdŽHÂ7á¶À¹C>ëµ3èSrã1 šg3Р5-ø[—¢B{@xO8÷î‹Qº‡ï»;NûûO{N, °é/sõ„‚] 0+©u+Æ E hž·t.<èÓ»„¨8ºÌ·;KQ¥ÏárY §Wa#¾ÛlqÒ5§W4C˘GÃDd†ƒ‡¶Dúi›ØïêIÍó/¼£{Wð»ZŽªIŒÁç¢Þ\Zºl7Ô‹,¨ M·ßÔìð§Wª T1á½€m§· $ÑF3A¬î|§o…"†ÌøÖbíš³dk©žëÕÇ<†o € m˜ãÛ(*‹ó“}W ?‰ï;“f„´)Ë£daà\ÄÏžìY;'—öf q/b3`êžxòìk]kŒo̦FÈôCnšGfÅ8Vþ¬kÞˆ¸/lç§Ç7„&• jDž;J=“ Ê>sµÎþ,ä:ƹ۵NØÄgƶHÔŠVƒÈ%¼v ´F¡¿6 Ç€ù)²šÒ»]Z¤„¡à±~NûŠÞ™§júúÌ.Ú&¤`ëí‹«rsù èf?Þù2ª À{q‰À:ݸÄO}H#¢_4q•ȼN¦Âü7ThX!éô81Îò® 1{W›1¦Àû§ž[†„€…¹bë û×<¶r±ýãû k«<—¤†£Uîòn1‡Öt¯hÔV<ÎûØçÕ~qÐŒ  @ |ò%JI@)…o2›ÆìÏþýßát—Ë«ßèíøðî‡Z`½s6øæ}ªã—e1ØŸ<²v•€ß _4ç·¬[‹—yJýžié6Íä}ªÀ¶Z2iö9 ó+NÁ¼ †Ëýc3Ûu"HcÅ„ I¤„Mr®v‰àèÔ\üNÊL}W'Ìaí|ª>ù¬öŸ¤¨Ââ¾ñþr’{ü{-‹ÃÓ;vå¢09À˜G„ƒt5Hm çóÌúÝŽáÚŒô+„ëÚq€=Smžè–NTú‹1 :†!ÊR÷ºiG¿Y˜h»àiZaÖ3ЧE­nÝ“«|—¥vmì¯ _¸ÔàÝjdžMó¿y˜öÃh=;•pxIO‰^¾ó%>mÕ“û=èß§’õïä(:éÆ ‹×7Ç«Èw9k|å–Æs•ØpÏP·2¿ªùÍ莦¤v×íìÎ,1y #DEÿ×0#È9–þ_tÍ6Ü).!øv;‰¦Ý¦{}LãdÁô ¿¿3¸Å>Ä.OÝWP‡Á‹ú¥\oÇ» V5ò®%ñÞê¬è‡:Õ¨Ž9‰´.§ÅŒ(Ê¡}xì_ÀD”çÎé^eË©åLZGxHÎÁ÷\ Õ±ø¥Rú€Ûôg^±@¨Ð2 f§CÉÔUCý)ËH9GÛÎ x4s äA-oÂÍrkó±@ÓªÄAIS1”»…3¯*$I<—pxZÙí5Yâ õÉ©„cç¯7°Ãºl¾{Øóê¦]«|Ô8n•å£8kGK…1¹7Åá°~g!‚&CôÈ£n ‚›ÔEô™Ü«~'v[±ðÛ2‡”Íz6R‡×àD.»ghòŸzÑÈâ  y@¾h~ë/[¯ 2¤rE­3]¿e¸ÙqÜ{w¿Ù·f›¦ãÈ,x¹Q>õÀZ¦´ô+¶eÅÛ&j¤4Ò µn)ŸLͺ0q”|$Püú&+?¤í÷Ìt çjû÷@®º,L="FÈáÒUk;±Ù_œÓb™¶Î焵ý#‘i@høé×½ø¢»XÌ7oËfy/­Î.Z‘øòÜßê <.ó "¶&áý­ù, ‰Ón!Œ};·n:&•è³ì\c–Îí_¯›ÓãÞï.1šÃƒü"εËÉâ05jIz±L±ßz¼|®þƒppbuòLŽËw7U³è·ÅyÿXLpq†ÆH²–Dûä@¬a‘fû³«+¯HÌ¿ð‡Wðãʾ§k³»_½­Pa꨾Rņ¿á]ß³Y’I‡©Ô[ÁôšÇQSi¤·Óä- ’¾â–öˆ¾ ^_H‡Kc¶PÌâ]ëbP,ÕåœsýX°bEý-›“\–M ÏhôÓèr*å\çÌ|]•ÿþÉi'Ï‹¡t¼Þ”‡Y¼1™K*ï ‹ø-pqýC}|‚þ>ÞCv\9|ÝÝÐÇÈ‚Cñ 00QK„ á2Ù1ÔåÁr|摽½—~7¦|¶åܹò©Æ>Ö»¦É°+Ã{Ñù¦+ìÙÕ‡!é¡ÉÃ5æÝó´ÊTAÀ²äe Xwü$$KD)0Ycöü4K æÍÀ»÷‰à\/ßDÿó&·²¨%±/¦…' TŠäJTϼ"“„äµêÌ"µÐZŽ: #¢‘»Ö¸²ϦΛ/αúå,{Çò˜yU‹(wMZ[ý¯Å.“,7ò}5é< H\i&ç!up ­ÚîôBQœûéJQü^9ÏÁ~©_Üß9“™·å±ºycÇÑŒüÞÚS€Ërᵿ”ÎXnÐ~”-ýY×fýT†éؽÈüªyUV,ª`µÒx³GXìÀ ¥oÅ}#B^Ü<™ËŽP¿ñÖ Œò„XX9æ+ºì¦qì¹× ôRWªQwØÕÁ>Ì•9Ÿì—´áϰ[êä$šá©WüÈ»•ç%yjIlÐøÌ9ˆ~½œ PØpuNå^‘Ï#Wœ]ÔÚ1ÔÁ-AšJu“«YàïAß"J^À™²§áVí¨ý‡©òˆ2颱ˆ? •ÁŠt9_{?½nc‰Åt’Çrã‚þ¶ÆoϘV§ƒ€`¾Í!½üºÝÊjü¥^“³b9ÓK80ÃGò¨É„±Ú»*%_È„³¼ðwæt€Sï”X·«µHxKÕ{¹0lW+o±žê"Ùxòû¹Yó.ˆä¯ÏÉ1ÇGe¹úW­±¶Ï¯.ëá=v8<þM‚È;ïÇŽp?žÆI–³zp ¹d,`z'A@]#TùßÒ™k5¯µËG‘¯•ÞÈFV qFn®ìŒÛ›öØæ2¬I‚J@¼ç|ø›…P4âÔü»ð¼É­M8¶?õµžåžÚ‚2½'‘–ý4ƒñ¡h¥q¯(z¯û½z•0oO¿ÒõŸ.C†Ç6G¡é÷494{`1Õ&gÙz¡úÔÄe £³§Üϵ É8ÔÈ3‚ˆ Ž?ëtc8øj`;+K ã0ÿ´–²w¡Í ^g¦fy'OÐÙ¥ð1»—B€ A ªêr’+‡ E3½¾Æ¸MŠð„+)sËj¸Ž¾çöÐ=l fÿMQqØ~«$¬<µg0}?pµBG}·µ£|S?·ûÔ øæ ‚EÔ‡yÉë)q ãî)îócˆLî@Ü9{ÑÃ`8·ybüSý¬  ºÇ•²Ø݃Ü?r¨­Sî_p•=€Á‡³^rø²AsF¥ƒõq0z ê¬¼;î†3ãj#jRïñ‘îâÌŽ'/8ã­hKËí>_¢ZØÝ¸ûa—09T¶[ ½0óÓ‡ó¨QgH¾?%> ,:ZCQ=i ?ÇØáí Ò# &¯¿Å¡£­á³uÒÌå YѾ!¨®d][ÃË DÏ NçÞò (Öï<ý¶ô|V@6yvŸµÄSC¨ßâõÝå"í=†P€Ñ@g,dÅ’­þlàÖÙÑhð²@©GÃÚȣュoDžñ䢿Æãù^Pcn~®+û¹Çšd¢By@vØQÞ] XJ>»ÝD#ƒÏÉ' äcj>Lø|d’h+ã|²0"жˆ¬ AÆx°[„N["UÐiMN6ŠÑ²ç‹Lò¨¦*§í½KHBíö€²ï`Pº ÀÂ_ nlÑ×#B|ë†RZwdÿRÅ,ç£AÓÂa5\hA›¿±ô¸§y7! 8 ¨Â4aÿ.ÐRAÎ R ¡Ÿ´jtŸ:úg ‰—ù¬)UO>«où;wä´mÓîqr-%=aókâô›o§§jSŽýóŠ)ï½…¿Ãb·;ÇFXd&cî¾#­×軵Ơe¬r B`7 ºÔÖ[ÛpzkP­¹’¥Ë&.¤ZH=ràŸ7P|¿Ï®ƒl½Åh¥a¤êâ¾ù*5+…ÒΜÉåd80^ ÏÉL¤id‚Øyq+å „V ^þX€Óguæ{§èòºëVœyÚ,ÍD«×9qex«ê÷Z÷Oûoºü³‰Þ9áƒÐ{s›ê«-ýA•÷C ³MÙçæ*U@sÏÏÈY •˜ƒÏߴÛ½5ˆ=ÈÆíe.†×ì"I£Å—9Tg*ÓcDÚÄÔfÛQ—Æ–ñˆ1–8-TcÑÍ&‰W =´l¸ž×~GY~^¹]gDößZfewzS¿¨‚±Ú~ˆ¶JþøçX­´bœŽš§•¬Á9óióWüžÞ¥j^ Ž ù(2V«vl·»`Ä2ØÚ¼À(ë²UL%y`æîPâ˜/hŠ*u>•S÷éߺœ÷¹5tIzM%_ñj§”~Ê_kÐL®xd¢YMWð*»Kêá¹T¨…ï/oŒ-§õ%þä4‹ÖŸÖÊü2‘7”9ÈVO €³ˆ7lÔ%!.½—Ê÷ÇS£i†j|6c‘!˜|Ô9Q9˜„ô>†höûº²pø%Ó}g#l‡9ÉþÊE:ëM†$%!¹¬$ˆ^ ûŒùé¢83Ñ‘ê! CíIßÿÜ•£ÝÈCÆ„]%b¹ V4p•ùâñ˜!æfâüØV#`(«‘qïM’âhŠPåÿ7”ó6Ÿ¢µƒ¤] ‰öÙìqtTMɨÙzägÊn·áì¡j€šOM]P¸ cŸ“–ëÑã²ç s4¸ÅfFÜò,|lqQ¢äú#úb§’œðáÓú6d^l('À]a–V*9þ Zð?vîÏ»ç³÷£qž­ñ›NºîYñ£vúšê«1 õ¶ëŠùÖqí>Ùªúç7l‹Ìи›×]”_“{TÝŠ<ú¥ÜeŠ59ñ&5tR‹+ßG®¬ s"XÒò0¼Æb ûÞ($ÎÂizþ©½ôK+ÂÔHUþOz0n6å*<¨6…Ø:€¤+aЖ%íÚùÏgкѺ"òMŒ5JvN·‰?ØlLtOm«äº)Ì!þAS [$ ñBqÕ÷¯ƒp#þM챌J]Iº~šW¢™B‡š„jsÅìöÑ·”æq±{‰{o}¬àòÝoT–3—5'ñ aþ ä\ÅÅ>åÒ ¸¥`ÖðÛ­Îæ]Žž©Ö$ËðÀ´Š\c½¥ky0µÏ,bZ²æXêCÛïš³’æN-ÀÂðöö|¿T’¯þ ØÀæ]çïenšY Âñ#ØSâþE®gÁ{q]¬ûΉMýà^ðÜ@‘ô7i6Pˆ•eª*máŠ'ÓÒ7]wµñŽiÓÑg¥ÌóqFæ@ç úJPø – ž\o^¦f‡tXù°“#¹U¡f°v bT ñFœ=&ŸåUo2îÙqK<Ž®Í(ÚuÖG±Ë“QÏkÌî9t¦¼­JIÌ:=7AÞÍ90ÊB¡ªLy¦î‹yL9ñÊÚ&dSJ—åÚÓ‚e>Oò°ïöýäz|&~ÐfCÇF[ŸçV;,F¿$¶V@/À-ƒÇ$‹ùÄ%"þ.×KÛá Á†r¾Ú ÀâNª€×ÁÚuR÷ýÈ}ŠïX£ JÄrG'h|÷êXù¾$tPâvÝŽH6'ðéôSæÑ]ª®;å§”IŸóbu”ˆÇuµ«É†àÃ+úÌ@7%lúSG«½‹­f@7 ìdcHÖŠhÖþo'î—c©\v«R¤A‘{ c¥û·¾®§©ó,yèïT–XàE3®öyùsŒi§ï)Öú2pZ.Ûbï`âRÛ`ÎÃ}-ãýñù`7{ò'1Âx¬ ×ÔŽ,Ì ‡ˆØ¯Ýdb¬¨‹ü#츅Tj@é˜4ÁXiÖóöx|»/=ç6ju4Ʀ×MÈãn€Ö›’ã©ÚÅ•³bÅœk&h‚ð>f˵UÙõá|‹g_'L2»[Ø6§IY—@i`V$÷ ÜO…7ž¨¯}2$ \Š'9<íw"WŒÅ«´¶Õgl³›Ýó1 Ê¬‘<ïõ:Ãf¼-UvÒt°;Ÿd¤Ê¢CBú4ZÏÛéJð_*;y –÷mËFÿ:¤²¾r. 0:„ëãÃàf$òÜíåfí»|TÈ/®ñ÷ºx/?cÜa;2'Fïo/5êþ¯8®6­ˆ¢ŽaóèÂжæl"¼üø»&1Õ˜q¦^ìŒ}‚di¥^4$·ÿ/ÁRÓj—Q¬tQlÏ\i^gƒÉ*ü­2ÈëQãÀ—N+ë»;óÌ ®ÙºL×ÿb¢à?RšI¥#М‘ÕC”[®GEÚ5xKs> éÀ!F„&—æ…aóQœ^¶Ô«ÎCȸ« ÐBëô.2çewbH¬$B`³ A „1 ¡‰ô›Ò.>bj’CÛö:\kô¦ÞjÓ¶Õ‚¨|âq…Ñnî :º!µsu8Ý—oÃ~c3Ùš(iêeî‹´ÌXÙŽÅ6Ôè BrPejM·/Ö‘Æ¿„2¨†x Êj@‹®ýoÁ\íyÞÒØjžyJ“AÏëEË»¾ºCFÐ(Âl6òî<‹ ×ٯ⃢¤=jVwìé/X-Fîo$ûç,a´P… xúX ,kv6-¹ÜoG‘âÌ› Yâ—}›C+ÄŒaFE.KaÙk0uN¤Åå'>`rÿ«¡³¢ÿÆ´Ó¡ ÆXW:ã¼ÿ‡¬ò´Îd®µ=WɰÌäwV&Óq#E®µ¥>,­oÃÛ›“ì°}+ÍkÈð»s«¼jÍÇ…ëuÇf_X©1¶+W-¾ÅÞvb˜ø›ô²ˆ9·GèdA€=ø~ ¯ !9• !Eš1zL@sáË—Ág† ¼ÎÔ1wºœ¥  1Ä.ÉÊâXÞïödxŸ›­Ðdé›8‡ÃÄ–=Ðr:o|¢$$ £šç¢/ÙÑ˳~SÚA3»áì? ¿lÿ¾D)<èê‡K™œù$ÿõQݯ¿.61Çy¸vS– dÀ~- 7¢˳váZ]Õ qrlUùNìj’‰-W©ñèÆè¤ŸtþMï+>÷Eüoxn5Z"éÎÆÀ*¤@æ^ObÈÝÖÌR"—¤%ì‹¢´ʃ}™×+ƒêë ׫€°Q2sµàûÍÑ– Xž™ÅQC:ï7œ¾Ô”/¨$´ ÞÃÆÞ·Ö¯ÎmˆånÝ3H?¿PÄ| àý,ÄmgHfâ\L™ Á³Ø~—¢˜§$‡¹^b¾j%~$ @sh=¡öñ™±ÓšŽcb\§"8\ÊTL?ëº@Q`Z|¾BO"sS• À!*ç[sñAä¨{8 ¹€Ý÷bh9ËŸ Å~{ ϧñ2-ôwûMwt4%i«òΰ6h82›u–­3;Á宆d…y²\0'l¬O3AA£=«¸¼¶ƒ_Ûm»ÐüoRŃÀ} ø5–r‡•™:Ò÷ÒrÕ}ïÓmŸ×çè`UÀymAH¥$¼£ÌŒ@Š ÌUŽ£ªŒúMNu’¥ñµêM$`ÐÅì2áӘ׶¨Ccõœ‹ë½ç®,ÐêDÓvÛûsd"Aª²s¨K¢±ðv€2…~a™z Lô6ØÒl3Î/F{, §oÎ@á,Ë­Å)häUæß`"…2Èž†]ímá ¤ƒ×]csñ§Ú†_{gù17 RÔÆ7¦_ݶ”N)ðvÝŒ€ýYØoËou …àV`›7föL0öcŠ Ptç¨ä*…£é|ø{MÆîÊž†ÊÛöJv~îÔ­ü§¥ö Cþ²€ÛÛßMQšÆÇy:´³ú‚ÔN€.ñ¨nodvžŽ#¿«9?6EÉ÷’-òã8XÀÁýcZRýÞ„S|ÏÏm¥ðZ‡ÅiJÿÅf²ù|!úB2à(†‘nr¦°ƒ  +xN(¡AæÐÞI^}ü`F  m‚¸€c0ã‰%¾ÞÿpíŠ$Aȃ¦Õ¡óßpªÙì{ÍF†–­ðõÍ-ã¢[Ö#Hû@|:í?Ϋ€HY¯°»M:^­oeûÖé@…HHnqT x·îMóè(‚ÈVу ˆßé߇,þÍ’~Üë«íÉ—˜ÏjºÛüõñƸžÌyàßÙ!¿q £àAd1òò6(ä’¢°à &åšK¸Ö÷ô™ajzè‚€ÍhµóÐtMKbÓ?³x’Ñ6`nN2 Š jŠb lõ‹phýö+}ìX¥ àªÕþݧÏÛU±˜JÜHš·Ê´aþ§ËŸÜ¸Á\uLà…B L{ìnRQsv°€„Š«¡][ßÄ÷O€@6ïó¿£èÚCB õäèÝó«2œXUU·l±ºpäwWG•¦+QALꣵñé×ñ­wñ½«Fÿ;× ’"YÜ€zƒá| Ð×”‘H™Ç¬–™® lgà³ÀÛíaÊ¥…D¡ŽË´j¹ðr̪ÖÑ_1NTN—8¦ Ö˜á ÍùÏàýx†}W%ÞÞÙ’òÐà ”TÔž Éí ö/|bŠÇbªøAm%Å_lûÖõu C^’Ï䕯 hέÿÒÞT­ð]ã×®f~ÿ.Äil3'Y#{ÿšû/·ó|ê—²êéÇožŒñzŠJΗ>ù+„×uwTÐȀˢ Uèx-G~A[0ì¬Z•<ñ÷ÎÈÕ±7f(¬)ǵ büthw®ð¢pDiÞ 1_–”×P6˜ê¤<¬¤On%ÖD±ïîÛ<¿Àö}ë&5F³Ú+FÃ<³¼u-Æ gÈts€¾WE(¡‰JˆÉ¡ÃæG¼ÐæÿÎ$R9ùzÒäˆ â"ª'›Ÿ6_4–æîT·Š–ªËûèÊ~’A²Ê]äøf‹•°D2çäúÒqC¬T9Nº,‰ Ma¬Zc.°÷¯ðýߒ˽]‡D’sÈìÁ—}å¦3K0ÛŠYÛA]7Û&l<~`]\½‚$ß¿ ¯½8¨ÇÔtH×xJîÁ¼ÎN¿‡µbª?[îý¯MªÝ64cKÖ}=E-¦Òƒ¾ª¹ŠèLØ*B¸½\ÑÇ>¬”éÏ-¦¥ß‹}/› ËPQ~ë"ðÅÒÃÚR­é7½1ˆ—kÝÉ1ÌB,øÖÊFeb·Ô_\áñ†7Ÿ« {éé)ÇÖl~›Õ, *¦!òP‡LõÏÔãûH/)Üd8ÎÔý¹† /ÒÎûÉ_kF]¼ÛFWì}’¦¨ñ=¿NÖçXÐ%Ô¨šÔR©?XÀÏ‚RŒBØvL¸ß>ÃÝ„(ôi7½7;mæùB¤ò˜e¾~QÑþ¥¤Ó9Ë¡:+¬#³.ÿU;]Å$ÕÊæU6Ý ÖÍxYƒ\Îã¦0À¬aûšœNêV]º8FÑ”P®'Y{<Ó°¨Úï_¯+_>¯Eˆ°_§Ñ;¬ðuZŸ™[‡"]W›ŽÂìÏàrah?[°mP™kÙí¤s”rÆþøéÙP‡¤mgÇû{-꫃ï]@jÝ6ßé|ÎÁ|‡¡Œõ—ŒúÊQJŸ¨³H4—ìWvÝ—“ÓiÅIíQ¢ž+Ü×ÏÚû)0€ã¶šô±-éFàç­HžÍ}\EÍʲf£%­~µ‚çüþisÅ/v9ßðÖ<7@fÐifzSNšL)|ZF,ì/NÞÕ mß<¾Þmݶvž ŽKÔ»÷¨ƒ›3 ÓêÆB—äþžߘ?°œmto¶~ïEkªG§Õ rÏiX·%t,·´~,wGjñ-hohˆÈ [{—BzIóäªÈîÞuÇ:«†ø ·çÃÆÁÓuR3g+º‹3ì5?Áåºâ’¹ûuVn¶g”h6¹ z¬¯ß--ó=­Ê¼ð¥YEËx: «Ç Þ¶øHi%~&?w°Ñƒç¦ð¸:}Ïp¸Æç,µÿr.µ½þçnhp³::qšdgŒ^û¬ð|]ÜèzÝ ûé¢kúœnJ0GêæÓhçêŽI)341æ{GiÁ>^ËBV=%&08Žâê=Û]¬¼hϪ~‘H*ôOSÔk•Ÿ=>·VÂý¡¡ž¾³ýr½ë‘UE x !. ïu=¿Ó sÊY™‘¹íÊíxÆ5òºiP¼ø¨æ 4Gdê}…oè ,[Ï |D,®]—+lª Åž_"aØô›ôó›=%œƒÁ†ðÑ미 í—.( ¹.Fôµª.ÏUý TÆaõŸiÖn—#gÖë ^ÿÆ~jÎOwÄjˆTïè¼üóªÛÀèä, ãïrÇK™ÌuÙN¶ùÁÊ¥<³Vá$óHç³Ð؞ͳ¹+¿íãqèÑYp/ñ°È’Ç[Ñ]p4¡Š]1P+‡¿‰7-C€êX]ÑZ„”$czÖþ½ õG¯Çª°³ö럑ÛŸƒûú24b_bˆ›ØNP*/@ø¨Ò¸ypít­3ãAÞ¯ô%úɹ™“ý'Sæ EÆ'éBp§w"„î2ï"O±œêËLQ÷œz}vŸEë?9.òâð~Ùã£n]”H'-CÃÆ §ñÞ™YˆRˆ[ÍPÄ,bsUª¬,n%ldÁ¡”8” 3Ó·Ý?Ù¼ÐkÑ@$~‰E¾›ìçBÿÛõD焉güÖýð—­’5~Œ9^öýöíú„#ì;r†@‘û·CÍWì,àʧ±/U˜¯€ e¤•–Þ¿›ø-BW ü¾;ßuJ+F§“(éÍ‹ëV'nΨù¥,§¬ùHÏVð7li]¸œ%×ÏŠ©h³[ÂÍD5ïúÚn¼r,Úô|}>wИ‡†úwžê|¯ÿyŒ;E&Ò†5Ó§ëÀ¶ç9®ü@ÿLö_ŽÌÊí'h2šmþÚ~<€§Ÿ\€©¿€Ï¡™à°sÉ©w7©ukÕüßúþ*ŽÿÂg¥UÕŒ˜»MÇŽ©`0pÇŸö#ŒÜН¶ž·O׃‹zï÷¦†¢3ô]¶ïÛöf@±&té&ó<*y•ûzÆÛÈŠ*¢´j[=@Öu´3ôØŽú{ûÞ©jýy²Ìi‹P“q¯\-XË{êúëe¨Â~,¦dlSÓ_àýyYoÍ®•ú’WH4 l€dÅ_³ÏÌ]f*ßrƒ¼äE[sFžà­Q=ª]jRiªûͯå.?ÜH²töñÜ™ûšæ;$¸/ݦ<.Áºþ g¿¡`D£†äv’ò«Ozø¯ª­Ön%ë]á(¸÷54iXW3ömû7˽ Ú†ó1ýAó#¶ñ}}l ƒ¢Öº‹Ýɇ§w.Œüý±óoK0ÓÄ…iÞ0â°\Ü»©q¨t[m >ä @Äwnçç«êxõÿùš·„ñšöYîSø¾-öé4‰¼PxÑl¾Íê˜$bo`cÞPlÈÀAžc«7' ›N°´ts{6Òð  S9ÿ–¡ás¨¸·j ~µPÛÇ…ñäGå&w§ûdÒz2óÊ·L?Õ›ÀoRÖ¥anV“•ª3{l€ó£Çb+å[Ûqªtñ…§’†­¯ãÕ -‚î—aÕÆ¸Æ#¡0]}ïa¢˜´a†½2R¯è‚ÿcâ:ì?WC'qQ³8Ãm[ûNˆSÄÚ™Ù7Qùë½Y¬\Z{Ìÿ#PçÉhž$O„¯€~ÎP æ)òí “a•ˆÉ¿ÜpÌÝûìv§³üðž ùúëÈd_$¸SÉaq—¡èæ°ÜQ¦n„ͧk¢ØðêìӵߴÿÎN¿WØ4;ŸdôÌÕFiƒwfø?½æ]OMxåýÖ;-ˆyÅxãÍàbèÓq¡ß' Wj‚=ÂqÕm$ºÜf>Í&ø“yéFÓ>.´ZÈ+ºëJœ"BSeOÖ¼Ó¤!3<¢ÎúMÌFTäïªÅ.¢ÙSX”wU šŸKÃlÞêA;%;Œ¾›ŠØá*wmL$r厵Œ¥5¢'ñ[LX5’Æó¦ÑÐð!=~iÙNR#Êa塘Ýf>[¾cêÿ}(‹·ìµ)DàLØä+$>2ÛNFwQ®ºÔry-×h."s‚vã0òù#©æ¡·OÒ2ï €å\ùé÷KaÝÆRª‡òH Ýnè¬Áú2J_ÌÎÞúí>£¾ùóíïpdKŸÁ4}#S ñP§–«|"«úQН¯/6ùkv©Àghã¢.«…Їdm â­GÉHé~SzÎM#5'ÑŸû¼4Ï #/ µòÇ7qÎsu²*XG[Èiå Ë꼊À4xT¤ÎóÒ¿GýÀC6¦ë9Ý>‚¦FbêóTÏ ;Uô‰¯Ñ˜Né³ü>· Q‡¶Þ‘Mæ’?ÉÑò½{ _u1 ‹dcß'Ý2Ô¶Ž×ý8³Â Pjkk|N‰‹Â­IPÑíq¥`ä—犆-uBÏ}ï¥×‹ƒË†¼"èð}wª¢vÑ„â¡ÜËÙ™_‘ŽÍ®ÐâL“.£?øÑ§PU‡‹T`Љ"Çpá9sA¢Ù–õ–Z.nü¿ ûà¿¶©y›Åúwµ6è8ÛiÃÙAl€Š><˜->Rî8“ %K_GÊY¿>†çh“Œ#Þ”C~ÊÒ¢H£dúà^fî0®y}Pd²3*Æë£;×…°J³ À¦""ð£ zÇd¶“·òûIÏs–¥ÂãþÕv!×5|–†¬¨Ú-ôy²+ p¨‚ÉD‘råsÃ×D?ÂÅe¦¾uV|?Æ!Ê)æ_E®¢,t/öï†ÚŠá,ë¼@Û|è|a­¡".èï¾, ÖA óô-W4mèýk‹0uoYÍAûÊYoü¦;~çŽÝ3Ç9ØñÙ‘Û{û²¾YdŒÒ⬳چIÐI-ÅõÓ£}ikÁàŸÉ8¶fêWúx´ª©Ó»̲º6S-q<;•£^ºaÕ|ßRÛ¸®gsžÊØNìkcÙþÌ…~e{2¶d¢=x/™9ªûÏñ –¥8ƒÅÈãû·ýß BõnŸo~j|{[qæKá±é™pÖ›¨÷yË_Ä•V4$o«Te=WÿÊ7þÜÆMÈä%ðN˜óyx¶2“ʇ¡Ä0î[J\@æÇñt²¶òûlÒ2æư‡+Ñ·¾p&êßå½*ÿw•ÛÿN0ι¿9Ñ.РÆkè>þÔ Û#d•K%Ž»ÿ¸°;Uã~3;Maßµz¾Kƒþ—?d÷Œ®«ÏSÆð«9×'Ý ‚*úö>ÖëÉÁþ ÕüP¬(´Ú¯ÏËÊWÁ9ŽÚP^y:ÞP£ PSüNeÜt¤lKîó ›Wˆ:p‹Ÿ¶)¿cXkörê}ÜIJ®"¬n²÷ ¬|3~m‰®6 =2î ÂaG lP´Ž±¨Ïø¥þ”]öÑ ž²­;ZW–¢@ ë^Hµø¯Ã'LÎ5ÿÄfMñ@@ÚøÚ­ã¹^­ ¤°=ÿ æÁÇoªƒ€ØêŸ¾’mñéÞª®¥N–£ÙüÈúkë>®_aÿ­ž´¶|×g÷ǰž;ùç­wÜ™s~ý ÐßÕjßðss°îRk ÙM%ç7…{‹)㎀¬%«„Û;˜v…@ßÁ ¥dæoV?”¾èveÓM äU½fs­0yõì'åÇüáó7,]FË75C•ÓéeÚyët÷?’ÙûÆ_Û~ï¹¼A³ë¦çÆß*ÝÆ3™™Ws™úlÛþ}ìÞ¾NšRª'õÔyÆQÀ6y?€ìy/ÅÇ2¬Þ{Åo‹ù´+Ú¯ßxÝKµË}wÜê¸pøn®4cmisÍoZ/ë±ÆBÊ3×J¿w¬ð<µ°ü–0üºŸkEÃ/µ†SúÎ̀˹¶!øglQ/ >äØå‡ÙØ”½ŽÁ¤‹p®eü‹ ÷{I­3ŸÐ³ïZ“ÚžƒÔt¼¼Ë}k‡yÔËFÏ ¢0ÅË[»¿ê”ÒÕ®ðF¹hÉÄæ3O¹M¾Þ%NÛ–ÔZ›Žr‰µºÞ', ’ðæ™Ú ÒKpçž,5<ÒP¿8ÄMx¹J„•5–땟ååßýZv`Ö•¹·°W؆“Å|ýÿ±xx?Ÿkg¢vGéß¾<öÓ±ößàã+áFS™yú*Ÿ®B"Stçé?Ë]x6@ 9Iôwoù¨*•¯÷œi²ÀY³Ú§ãÄýŽõFÑ1X!øWÝ]ôàšÓh½ÙÅÈê4ê³v$WÉ‚‘Ó¹tС¶ö¾ Çf°n7ln®¡ö€ïFÀˆÏƒ’p/K©Z¢¤ÙdßÎJ2‘‡É0øuÍ vMˀąP/›dÂÙ{T+ ¸|r,g¸f®¨¡ÕšuÆõ|b¦dBÙ†h’Ì|ºTu¶JÖ"›£È]àH­.+‰ž,²Ün|Xf«™žn;YعOöð«Y4ǽf²Ù™œÐï]vÍRƒCÐUP5ÑçNÍI-ÚnºÛ†WwObŸ?TöÊæË¸N¿ØSêX”YÚëÂêÈ iü‹Þ˧Wõ£“’9síì²b,ƒ¦û¥Kdw˜Õ؉‰dÚÉ8Ó‘4ðg¬\åSô+ÌÔóØ¤ ­¯GÔp NFÁÛpÄ~›yg¬ö]Ñ^lÅ„ˆÞ6oÌ„`íMóçøYNw¥*R3Ú»…êçzãQÆo©uU‹ñòYžãëg†S½ `ž¹·Aüè¹ùݨŒU Q(î'2úþ÷1Ý^ñÝGâeóúɧ9ãÁ¡¼åj{û{àç¨çnÚár÷2ÁÌ óEý3cêÍã>·· Ãú¢éTÚm;™9˼¦¯ˆÁæf]ÛDSlâ…Ò>íªlßêçŲÊtðˆcK¾ç0ËqùG}HX|'Ëu±2I…·Å'ûYÉ{¸o|¼&¿»õÕú­?¦iiaëªèsÆiåÁ6‡8Ú%*½xŽ Om£kõo¼ÑLÌu.$~_dœÁ¥óuVºT2ƒ¬Þïñ[Í|(ì ®÷Yšw~"ÅNítt¡óFkð¤i?$A‹e‚e;Î0ÕL¿ K¶Ù>Q¨‡Ö_Î`ã§#F‰–Q}¾xÓ$òN ÷cyåT¡›dÎ<šÈZa”çSôó_H¿ùaXö}Ý0«•¶M%;iïµQëÌUè2»­ž.'3"«wYGÚ›Ïëæu)ó0Ï ÑØþ‹Pº>æ+DìºùÿÆÛéç-F* öAz¹|€ž–UkUÁǤÑY«KÒbçx$ Ìewèæj)àÿ_€]þöŽYá”[Ô™ò²5•çºe½d'`&W†okªðHqm òK%>Í4äšñÕi§„ôâxÊÜx©jYòêÎåü'%¿2U£¹†dh°`Îp­ê|iV|5˜‰‡J‹ß,G``ë¿pf²x^~…) ?ÆJ18 ÿŒÅFaëªgk>Önº_¶PÓÅþ"^püž(ùˆî7G}{e Sókwyñ“ŽÆC­xWåp¨©pÀä ²ù\,YÞÌÍ ðg0€ÐöÍ}Ïkg½-‚FÂB!ù]ØÈ|š\™ÌÙÀžQ»JaX (6Ö/ºp¾l'À¼uü%.[Ì;Ú…¨Z]£ÅvÄïÙšÍøœžü!@éúR-bFù•­Öûñß®Ã4j£±C\xøk)¨}Æ»Hþ…ywO{ï<è”p÷Aaaºø¹m=î[jˆá ˜ 2BnvðÕÚE æ)Ú?~;C:ʼnܦùª:Kö7U~þRÉ£œ‰4p¶´>;Î (È>ÿ²V.;6@e¤Æå! 8†“簄ךñÛD5ÃôfCZ:cP9—ºiÀ÷Ë"|Ø8¼µh‡hê\kúíé\í¹Yý;«T6¢OcÕøÝ¢•LÂ¥£>ã® a„!ZÖµ€dfÆ\¸À€ 0x  üL@ ŒBB7£àšÂ8 ‚Ý‚±Bhx àl7ƒblLy Á< Á6{£B+CðØÙ|£Àø4ð„Ïò6'ñsLÁw ¢„ „„‡¡‰ ±‰$æ!!d >šQ¡n† $“€’8Ì«æjBA XÐ…ì0A«a«âÙ‹sFJ jGœøìýX|_{BKÜòæÛ ¶†´!$BE0pH±°Gï†À 0Lƒ0[³–§BÝÊiëV)8ÉJW¡YŠææj=Édèïâ !=¹!è"1t=áR½„i #`™}` *&Xœ L”í}«… >†!¬B)˜—™€ 1 :ÄlF!ˆX6$(¶$$^Ó@m˜Õ€“Ùë­xYh¨¯B+“Ht`‡`xX{bY{ãBî0$ij¬yZ7D'9£[ój›8L3Ñ?> Áø0 ¹Î§ÆàÙ°ë°’aóôú4’[—GZްЖ!É~!d]¤$”¿ß±˜á[LÃÀ¸©ƒðÅw~î«æª¾ÇÜÉ×øÎXaœØK ^õWTöe£cÚŸ¢–µvp7ç^Ì¡70yù ßJ6¢§zÍ1 ɵÏ\e³…Å¥@^¼c‚ E+¼&±@¸6Ž«8 5fóǃ¡„‡¹¯ía•ËTȾ˜ä{ÆÀdaâ6?ÌGmÁäóm§5s"éÄ‹—ôD5^gi"ãаP™}æŠÇ¯<|’p’µ7Ò™yMŶÁwöõÞãýL“jÑéµ¶+ÑWç ìÔg^)¤}Qö¿¯îÄQz{Ô1$Æ IŒDû˜bI“bL~x 7üÇv¯Ï‰âß==D~öëpÖËŒïèš/äµU±A“³½#LÆ 1N}ò6ÿúW… ïgA~9ØãçïàªeÊG¿œå«®ä9_Êše2æ ÅÏÈÄÈ€ŸÄù¯·O2l]bW‡}úš^¢åçBåÔõŒIC¤ö“Ó—0ú+ï b—–®"‚õ·ûÜï©°LúPµqõ¤ø,¨çá ´ãÚ<@„.Æ@oe¦ß!53=” ÔV­˜VÚ;Ø0€k‡[ÂyÌüZÀÚÕ³>FpÓÚ¯ŸtrIØõ=æ8èyìÄc£Ú+î–ìì`ïµ;žGG–iû§üFæ)`Å%»J¸‡"ãÔεaRø¬_¶»_- ä$÷bÉ/Ù6c޾"è fÊ|2ìÚ# LºöJ²6Òh¸KÆZ8ûH\áI¿©ß««w§³^ºyÓG™êð_ ›T]?5ë‘Áddì¡ðK~†l£g=°ñÆõPÍàŽw®¦¹§¥)o 0¢—Éô#¹ ÅÝVw\œ½³¿ûÝ9Ê'8á¾GË©¶±OƑբ"ö¤‚Ì­âžíf–¤ýW&@žéw¸0ƒ¥Ž4UÇ ^«SðDöã+ú»DÉgŒÃdoÝ&Ï £­Ê‚CØÀÄ  lüÊ€*Ð6ð¹q“‹ÌÑbsÏ ¥ø\ïlšëÔ §¡–œpÌUÖgoŽ~À:ÙÀ3&ˆíC¾ÒÕqå=ùÈ}ù k¹ƒø²Qªqw“ŽËAd‚æ,Âq=%·¼ÏŒnF†Ž¿eð‚X5ØCh,V+tÛýÙ¡¬É[¼‹»ûcWûÆ™ÔaQÒJ™ëÖ’~Eüd@^â]Z5i§l¤d­€^ŒººŽˆ†hT©þF“õ´Y„¤Y?l1Î(ž|öô’ñsÑS·ˆºã”÷~\ü¶Ç3‡ m5"ûv64 ˆÒüRŒ dÃéøÌâØ»;›’“®<— íìàKöõ)â‘—òh2)PáH ×å „ï½¶Y÷Œü5ÇÙþ®ö?Tå.¦¹r~0a¼7¸²òåŠQÙW£uЇA¿ºoK¶s)«úµÛ±’ªÕÀmTgq$æ¬5dq ’ó}ÞFS*g/Koòzþ;*æ~‚íÖ«=›¬“‹ÆV¸€Ó ”~ºÜ·ú2,ù¦ŸgÏ ÿ»§öo?Ì8ºô%«]®bQš±å0EîËÍQµMF‚§“ý"BüÇ:‘y© q™Œö ïu¼ŸÂ À5›c–ŠÙBÍèØÕh<É2á„´†x“qj’$RŸf2Ylí¬Y„š‹¥Ó`ò5ÑÑÎ}™ûƒ^«ACuLf,‰X¨ÖŽ8,J7Õwïq,S-ÎK/R<((4=ŽÀ¶Øùt/|'œÈ,ggò¬­6L£¾ã½Ï¤ ö¨Zî«Í)~ýȹÛf¡úqñÊ|um|st^³óÐ —Ny_äŒ3ªÅA~P§Ê- ÓŸ]b"LJˆj¯…­—©— § Ãëë›e´S¸oç[‚u -c3㮄ÓúµÓ©Þ¡ÛIü㋞Î6ؤ–¤FÁ£´{èÔù¹‰®ïö’ xpxΫîÑ‘8uÇ¥Îð3Þôÿo•å€Ý® ú|Bíú˜Tg¸ˆ@¿ü+Ún3xÍÙCéAí{|¢à)=F¢Е)(ã´•Ó;ÑõÂê¦O[›ÔeÓ]GK‹rè-a' Ÿîz”×ì0×XDå;„¤ú±ˆ4k¥ì¦½ ÏM–EÿmOAï×3ŽÅŰó[U®q½•ùô¶.Ý+qêüMç¬Ä3£JæÚ¹{ŒaªMíâìÀ×Y ‘¦º–úªÞ?y S¾¸÷ »>g•mJ(‡³4£Ñ1ä¼õK+fOA1!g"EWÝ6ÃL‘Ô`ÃCy‚©Ï•ÈH–¤Ç =SÂóÃKÝûG`g•±ºL£E?Ã)üÒùÇ éÞD'“7íŒM‘õJTerí;¬îìƒ×f¿¤šñb¶YF°ß;—Kb'Éï®þqaÃ6• —•ŠHÐ5%yqê~Q¿!m)v!Æ«µ“+ƒÞØGêùQMn$ªî-^›ºöˆÄr•pã“ÅfZVL“ƼŒÚ˜t•^÷ÆåÀšV·JÕ…Q¡á ¼Ó ˆ;êð'±O—2ØñtúO=~=œÓHo-€°_ÀNÚP (AÌv‘ù†t=5Ѭò{9M/Ë,ôh7]0µ’ÉÆ(€Ò¥ë[Ë<Õ„<{ƒ h‰i ÌA–suÔF&I*V·¾G˜Mê< œœóðu¸ðÑàÊ  ²¤ À(0‡ý×$Þº™‡ øRðp×5t.„IÓíEH!`šœPi /D°f×¥ÅïDÎLŠ¿·‘Ž@Û˜B"é§-\”mèHêPƯÍ7Pð=i¯!`((﵎¹|Ÿµ;õæÓÆ :aÏ-hE¯ S“ôtïikî jH™á°Ü8ò¥Í[ñ‚•®ôu,nË)–¥öÍþªc‚X%òªeã:yŠû±URå¢=øË0Z Ð+–Ç44ó/¾1Rwr^ú„æu=—¼"÷åœ÷N^£¯‚ëŒG%òîÃÍ 2L’¬‚#3Ÿfo-Oáä5aó =ΛÕ:MtžRÖPàÜj¶Ý'cS@ißGôg×QâØëYeÊÙq¸©=Ädì©IQÝ’®Çùix:]þõÎáÓ²j/F÷Þ…¥nž­Š+‚¥ô¨câ÷Š 7•x70g ´­P¯p-“öúlÑÐ|ç&¤ù­ŒWZè%š:OƒÕ™«ìÚcý1ˆX¶UÈEûlAý=õXJÏ65þ¹w²¢4ã~5«Ñ‹Ž¦…Ìôÿêš×!‹+È Ø[á3t8|·+x¨Ø×\~YÂÏ|VÑÃôA%Šì!¯5>ã°XIY„€æF®ÄÅHz Àô‡,]Óço!¨t1ßšePÍ)n°£'/Ïåu#|ØéÈ7ÒË” }RHµÃlÉò 5Ÿ…E…”Þª2áÞn2»]¿vÓÔ§ºéLæjÚäÊö©~áÙîÃàỆ–¼…x"b ªÓöÒã3v0x¿ ¢Äžë¯ÊC†ŸíRb@ÛFŲï7º'Åà¢æ¤ç+VŠ‹E§s(³UOà \+öÍ{ý·ÍÒHJZkÿ¦j%èÉ]¥hP°×åðEo$ÎÒd‘hy€»Y{âÄ!6L²ZÚëþ2Ñ­‚a—ðä&U:ŠPl Ýö 9 Ífp ûžÒšÉ*:="çI*ø£˜gÙ3Æbó±ªø ˆQ©§†:U;î2H¹—à Ñx!ì¹Ïð˜Üã8¥c¢ÊH4;,J%¨Ø(ó굑– †ÀÚ–Z¦§JZtË<çA`Þ˜¯Ë_Å3ûNìøŸð؉hèVÐþx Μæ©3¨þ/7€wóŠL6ŠÖ¡OÔ(¯éeÃí˜\ º9òi¥Èæò—ÆtN9±ÃÙ}‰òß .†Cñ/šmÕÃð¡РI‘M!ÚË#OÃÚÇHáG„xGlJSzŽêP÷±;¾ÏjãŽÒ?h—ÙÉŽÁÀ“Í5øo†Ñöˆ³Ü4ž`Wùø;*EÐÙdª5;Ø/ì=~™UT4çVyn ÷ d’Fví¡Î=6þM÷B×iáÇëèt:¢Šžê J ˆ£ÛQSÊ  ùø>\ÆFïÖ–ÔäcÒ’h³]ëã+y2TlþÜ?ÍgG]ü§ƒ,$0ì(Þ\Žg/wÓXHjYÑ* ú_·:\:&ÀÄ’¥Øc5éž-¥h/I=Ý“Cª‰ Ôãmž±¨$£´ën°¼7Yö"ä;¢±~k!6YLâ=¬R®e!µÕ0õÅ*‡žì× Ò½©r’%ÎÎÀÄ&¶sîÙc±¿U°7fÌ®f ÚU,Fñ¶“ø“mÎÉë›üTú¹¡'ããçz •x¾·wŠ WsÙ„só¶ÛjÄݹÜQ­Œ%Ìr—&,ýfîœ]W‡å'›a;]W_™ú«‚_Ïì8êþ‡~Ý$4MHÒ¦dÓZ+ÔÄ,­ýÅÑüTÑó¨ð»cóoÝ 9‡¯Ýý?ö;ƞܔ½c)yjhxª¬Qvë©©<øÇlË¥¡¾ŒàÂf9nŽðÃwúhHôrxDY9®ÍúÔÖú2Eh¾¤ôŒêSsĵ ë\ðmÜf¦$ʧvm‡Ñ9êÊD:câ¶é>‰·y-š÷%:ÈD Å>ÊÌ’{oqÎêeôÏOTsšJ¤/Ôa®gmïØëÿ !"/r½‚Mˆ"ñÿ„«5¤½ôˆ¤kžÝ"_ù’tâÏnöT17ðLR¬w«ÂY‚ÒBKõ”Sm? ^Im¹ÖÏ#+ä,sK[mÏ%¡Õeß|·Ô%TTr¶Ô)ud^àÚª3r…¿ÝöœEÂ4|Æç´ÈÀè× ×6“´,Äá>Â>ã¬4ª!áEî¤Û‰­î€ŒHhAi´À¼€šeq[jª}9ŽÔØO±EkŸÑÉ|™¬2Q¼¿·y#“7Ùj‘Ï;¿E»y³“'©û‹w§ªN¥á^@®ÇBù£úUåÓiÝÔˆ\ZÊO¯˜òW¥#pÙÍÎêËkÿ™còe¯ ¿àfBëì9µ`¤}Š'>¢ F© yéÔ×¶ÙÙsâÍ®’Üh¢!èáÅ0ޝ”™ÐLºªÛ½$Áü3»™ÆÛ)Ž[½zÓõNE'{ë]°>6È•T³9ΤVèôy‰àØP2¹ŒýÂãpߺ›ëô!7XuÅé©ßØÛu¾Ò5ú SųÎ<ÚqߎÕô#Ï„¦'À¥²þŸ°¨á¼ZÜgÄ]2­k7Ï´ËT“ý£èñ«š>’ŠÌ~NïE–ÚýŸ„²¥È Û¦ïWB/ÍÓ… C9&oÓ™oE¦n &))6G¼M•JÍè³N‘·Eæ•wIè2Ÿ,Ÿ÷%Yu`çs…%åÐj#8'÷Zg2{g«…»îWZOê°ï Êž`~’Å꾇öðÉF³ÿÝWºÎ›o2ã×ëý*ê%/\לã²/BÕ¤£åÂÞí{¹uy“9OEžµG`BÉå­óIÿ._ åÓæh¡¨°Ý|o¹¸¹ çlÏ ¦’ÂÑtRÙŠ,ÿ~_¦’éók"ÿFZ÷½7TŸ_«H”‡h`Ï9P* Ülx&Å£óÁ õºé'ˆ†4ö ”¯¼èøûñ¶Y¡¢Gµ;ùÎOŒƒobx“à¦@ðÀÖ?EØê[t¹Õ²D²WÛ˜>¾¾ áL«B‰à‚J¶¦ηyLÔü\ÈF±¢» H!Ò‘ºÛ™Éˆ8Œ—Yl}»+î¨þüÏ|±Ø4C¶õ¿2'!¯¡¤rz"­‹Ög‰°Óqì$ºÏ£u?>üà×|U^5 ysnÝŸÞŸ£F)¯i³Jú2˜®eÜ:òòIlA}1ZtÞÞÈo¥VÚïR¯Ü¡›EX‡sÑŸzÑ&?´+àžQA\Š4bè­˜¦RŒžWCoºÝÜ¢x‚°Môö:°¨K ¬MBê…ægòתuS]å ícÑzUº–}â€þDB½WÐ' º}zµZìXÕmÌÖšÓ›]p¹8<—Êw¦Í“üôç÷Wá/­mbpM`BRs˜ÁÛç¨s»k Zù_}í´|n>MåBiµª ¶Ht¸ü›úÊÖ{3éê›õP¶VWqÆÙ‹>ÇÌ£§fƒØTýéâÒ¬‹5L“™ñëÍõ=`¬Ûõ¶-œU¨u¾riæCçýÉjfÛ ÍÄ$Q«ÿY(e©ˆuþ±í‡L™Ê^Ääÿß) L-ÈÎ_îþ±ßÒ¿$âª]NÖ³K-ØVFßHc¼1<Ì®Ž ù.‡u»•˜rÜÓi¤;•¢®6±0Cð¾Qó–8R p|îý|͘=ê[®ŽZˆÖÕ-a8rs¯ùú‘Ý ³7oz½a°Ų<²Ý¼Á­bùðX—Ç\©¯™ˆì¹Ò @Œð*˜¤.}.Z^®H‹Þ”ˆ|`¾è•zL´ù­þ5žd-º¡ó» Œ­†§_ÍxUß𮣚šÞý«-Q!3•ír™=tDo²ü¶¥ŒÆòrm‡’n™Ìª õš}õ¿…÷…OÖ]E/ Ý”Õð h¹ßMvͼœšÓÓ48Où W]BøóSä0¡mïųöY\r°ù[ïH£Œ¼o<)Cú™ßBn²·(=¨×÷ªx}Å-Çgæ­Ðèð5~é¼Hea~GCšŒ}ÁCàŠxÅš½}~qµ€†ÑÙöüPV»-&c ÷:©gBÛ6²j[­hcÓ¶NÀª‰¢=’%ï™gÃÒËiŸj×P3WïKçº@T­léA+U_yæÍyÔ>Ó„Ìe2IÞAy7Iv+¶C¾ë{½!xÀ‡O^ª*›•.´ðb‚"6¶ûËý´z/»>~‘½Ùè.ó»‡\Y•\ï^ §!ÿTl5胄ïðd€@ôr…þ½Ã¢#õ&äõñÕ[†ë(-q\G JLª=­XšŽë úŒ nʘ8Noílü)þÉ¡RG¶,µ6zùwÜ@Sæ±2v6½2F¡*(ÀÌÝ+.ù#ëãåñUÙ< T^úF…’S<îP쨒rC@#èæ»µ<3Ïø× NPµÆVuiöKŸÖûÔ^ì;Æèáôˆ&ìÉ“¹ãÿ@B½il)E+»V9þçJ9…F÷_¬ø›sxEæÑP(r(ý‹ÁO𭫆œ ½«Ns,ÛŽØl¹ŽP‰Àì‹(à˜‘nñ°Í&Y Ò'Éë·ñ}D¢,«¸øXh9-\ >LXË£"Ñn;VVÃ3Ô ÐcŽ‘Æíd¶\3öh€Ÿwõ–•àJÒ&‡ÃRT›Œ%>ì÷Ž{P£<êd 3™.¤u0™´‰ù’y5¦LuÕ´!XŠFÛ“¼ ©µ¶À“~ª³Ø¾éQnr6ñ*¡;Ù(S®ÚêÐíu0k®~~WíѬ 86Ý)[MÍ9#J¢ëåfrµóËRò,ÏÀs9©³mMÍ’^pg= g˜|ÿmt³g<µf®ªØ®Cdt¶uii¡VY•{j[8±ÿÃ>NÍ4ü¶·ƒZÆu÷ÄX¨ˆ+=ó^oyçëGaôäáèRþÓ‰¶½¸¼ùËO—ޱHmRtŠd|¼©²R2ihxÛVŽW”‚;ó¦lrèûM»ç¡²ÀŒÐ¯Õˆ]/µ*éŠ]+ ³¯Ö`27Øò'IDÂj©^’Þ#»3çáK„òû? d$ÏúÐ1èÁUÑî{—âÔŠÔ)ÇÒTWÜÝŒl1O7óï|SbŽŽXæ}~5ýÂMäà`õ },;ýaÿº2\ô^>{JÔLµ"-Ì5‡:À¢êgóñ£…ÏøþÕ¿Íù˜¾i¿,}&ú°¤H¢ŒzZ[ï‡×£²¯M3Ôá›Bm}š•¸Úe|oÒÕÂ0–¼Ãÿa‚î×Ç7 ÝY!Ÿ4¨@Ê¢ê”B¢{TŽÀ4Áo(]ÞžšÐ¬Šìá HeÛCq%•.úÅMïí³° ýlÏ"ëÌ`+øOoì1m .ËOš–p;}pÏõc†JtsBÄÄçFí{©«}š(Èÿ—4ÙöJ,À“çU9pÖ»\nnÑ6‚5/Ô¼Î~¾0Ö×ܤ–…}9õ¹©j.°WÛÜßT×à;`#Öw~ ߃ò]oQ:ûÛçB”2óD\…$›©î'Žm°áwªÝ¥é°]„¤ ¤Ü˾DÚºóŸÑeäôïïPü¼,´f^™Å¦ýVß×ïñ£¬ñ^ÅþÓà’²aüµ[8û7} IˆˆD@ÔRņ܇ˆÊnmótÞF’@ª°¯øE¿¯¼+«Lñ·dkK^55SÒ´Óàaßî ­ÍùÃæÑz(t…ËGq?}©TƒpVÒÎ3ÑíÄ$ž9•—ø“>8»ª°©gq*êosEÛÞBê^׿&>ý7pwƒÙŒpä¼BÂÞ~Ú[M'ú´Óä¢é|ú_—)ùžT3ˆd>l;ý=f/ïúÉûÍÜÀVaà¡–ôQ âŽ. øt3×,eUe5WÿrE8P·¨zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.800789425 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v7.dat.bz20000644016037001603700000011232413607166133034123 0ustar00hutter2hutter200000000000000BZh91AY&SYXi%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà]õ÷ž\õâ¬ÍjØÒ¦hMlͶ´R© VY ªmVÚ¦3cF%;œpO»¨·t Ukbx›¦;»ï¾é¼÷´ófZníÖl»ï:•ô÷½÷ÓÝõo_NèÜí|Û{í½ëëy{Ù}ß{Ëí}{»ß}ÍŸ=G»ž}Ç=ö­síÝïŸnôßg¶ò¶Ù½iÕÝʯ³èíìï™möîÕµT­Û®ÝmÝ{sÛÝ÷µö·¾îÎÖ54Ëï§Õïm±ºvÆãO]Ù«V MjÚÖ5îvL*ïÞ³Jo@îj²Dk,Ù)UTžŒ\«[fÓYwÞû©¶“M+çÛîûÛÁ•I6€&h“Fš†FI {CL˜šÓ Èš˜2i©Œ “@¦€F& £#LjddÀL`šFL¨2¨š L&††™i£M ðÐÔÆLMÄjm1 ¦L˜M0ši  €h1LÓDÚM¤Ú'Ñ OF€44PeT20&& #Ð4i¦„ÓL&&U?Â?Lše4òOSdžSÔÆ†‰äÒa‰¡¢zžšb˜4ÔÆ€hÅ6¦# FŒš4h¨"’!& ’bz¦bžjié“&&žF§©èbÕƒÑ&Ôy5Ñ©ê{Tõ=GêG“¨Ú51iµDÓeI²zQ4y5„Ù6£S “!‘å4ÌPôÊ4J  Fšbd10†¦ž’za4a4O!…OÂhÓ#@M'…6›̦™©Š~¦ÑÔÍ4E?ÔŸ¢cM=¥OÊzŸªÓÔõS=©êž§¦©ìjmTÞÔÔýSSü©½E?IФ„C"i‘¡=LÓ)šM2ddbŸ¨˜b'¦Š{)ädyCM0a4›ML‡•<e'èÒb=hiOµžFMOÓS Š{(Ì“M¢a¢ž4ž%FSÓÕ=Lx²3‡DHéŽ|Í´…؋љòà‚E9û ЫÄ=NA ™­? dYÚ—Ûõµ3¦3î±tGPÙ¿mÑ@èÇH=aÖº‡ï=q /2/°G‰ Z–&çŒÉ˜‚yH ùC[”Ê2L¦S'”U  2¤7\¦Ö¹Ê»¹GðÃ]-vSõUKÚÞ¦:ÒãVѶs‡eEÿNn!1v¯Vy%¼uîi¥ñ½/NÛËÔÙW/W§ÊãYµK•n]|ÿrw‰Ó/½Ôhé?Y»¿3Áàá׺´vÐwñ!ì°½dþq—Ôf”³ì'eŽ3‹Ö¬d¢ójl|¬tí¼ÿ¡­õ*«Ê?·¿W”í7.;yÏÔüPÍ5×6ü3»”H¸óöWSÙ=˾)ÉqJ…ùÿ ¸€›ÕÄc=í Ø{y_Ž/i™x[ðî)î³ r5( k–!Ùa5±·ÚÔîsf£·C³Òÿªü¸_ÇÁ¥Òúd®ÿ÷aÙšø HLjž,ø„mZÌôM"˜‡( ÉŸÞkžå™0‡,9ÑíAìÆ Ÿ ú™ hÊ  À†CÉ€ 0ܺæH&1çZ ŠÁ°ã%`a€X`b°´%@ŠƒMƒ'Pšª¨¯ÐÉ'„zXé½¼²É< ‚°­"A*B*D '²@7¨D–EmF£zbU@Áˆ*‚ŽÒT- @@ ƒ¹{ `Ê‚2,ÐdHà…A®j’ Ì@ s10ì+ÚA9"D‰œmä}pIˆB© ˜+ "Е€^È ƒ® š欭%+ØN%™Hƒ6”š€á΄¨N&Ô!qD"uea(†€+ˆg·*H#&œí‰8W$É)ˆîˆR“ñyU¶XRFQ £‡C~á›@†d×¢eK Œ P@ÔÕ0ñ&0«Í0ß Êk´Á‰ ´0ø‰›”ul”.ƒ%Y Hc@‰z†¨f×»&O¬í‹É0(^kH±@˜HzL!häCdÊrVtA è¸rÕ…ˆp‡t÷/cP•]™µîbN¨Ðong6`¬„œä‡<2œù ‚|²áIFôUdÐß[áê XÐÎÀÐÃÁþLùc„@´a•ýL+0€· ¼¸R£)~f AˆmÈ@¯lXC)†\8N-Æx‚¨ !Ð>­Y(©¥`)â™pÄ:¦wzÃÁX“®z¦Jdý#2ÈçÊ@È õ`¤z„µ—ð‘H4-tC¾3@í›ÿÄÊm`)° ÈÊš‡À$ BΈøº8˜|–€ L á˜,Çòš ÐgÔŒô*03À”F@R’Œ‚)õy°”ðu ãÁ´¨êFW¼tP%IT<8úƒ• Ð@V¼q÷õ„,Ä&q œÀÒýGÁx`Û#M¼9Õ`IF½‘®ϼ4Úî°="$(Œ¡¬+AlF)°@ÕpæÇ$XƒC‘iŽÜX'ε˜pk aoÃToÐ0%èg(cÙƒ¡l›5žiÇDÞ¼3B©ÿ–þܡՉˆgŽP|ÒPeyp_ÜÒjxÒ7—ë½™yoço<•Å’_Å<0œ$ä[&¹‡›_A¢¦¹†–¬!~¤Ò Õœonñ`5F¨Ð=¡A»3‰{þ·üfÀ€7œñs¾ݼ²½è}€Ã8uàOIJÿѶ,T*  æšöÚq ¾žáD—ÆèÆpÐf2<‡­´Öì8kŸŸáË3ì9ö¢»Ð6.‰¨ÐÀ×8Bܾ³ñ¥þâ­Á°mY…[ 7ˆàF©øZáüƒIqí6“Xü­FVQ‡¹,XÅŶHÒ»hw.F“@6„Ëw’žbì×[Ëš`d`½ qàH|£è›sÎg³HuÙ÷›Wõ•í²0Û ›°/#9×³š§ž­y¶‘‚g=|5Åil×>[7‰Z‚÷NÞØœG4Ìó®M¤TaßÐÙ H×aH†Q²A!Д1Ç,yÀ«Lá,ÊÇ0)ø˜ÙàÉ„/ïGkCå¡)æP'% ë ©´{×fê÷fÏ{l-܆PKf¯xúòVØúÁ¼|ö¼š¬¬Ž¨”É=ù!áK!š+‹fìâŠï­„Š[–@åe‘{ÉÒY‹²ã4ص ôì%šÉéçæ,Ú” Þ/µ Úž}·&¯„yÃ@Hf Ñp̈ªˆ^Ð-^ýö^Ñ“dŪx9|7Ö*P8ïαAÜÌÎrÄàÑ ‘)ÏM)K¾‰ÉÈ $II'a†G8I¡J 0Ãí0ÎA8Î2Ædœ‘; 0à Ìĉ%10k˜&œ.ætçŸ^ù™w» ÔK¥€ãˆÔ`aɸ!„tg9ñœkZØ Óªyèkµ{†°lŽR:ê¬S” ´ÜpÒnï%±Žç†Îm»§þ±ÔµÈµã&¹|eIÐ$BÃ;‡Á³‚¦¢ú`õî`g *­;ºý²g@èÁľ«2‹ÉõÒDýŒ+†2ÒBÀÈ $H»’Õ UBa¡â»°‰ØPîÎŽÍÁ Bãµur¾I­ÂîP&ÖÝÅ‘üÜ`6E’þõ‘ªÈ@ÜÁ‚t•IŸQ€dNÿið ¹GjluÅþpßR$ßûÈãq¾Ûï‡oL´pM^q¶]&t÷ÔPhiÞ~ß¿„°xºì÷‡LŸáC²À¨wÍ=_Þ ÷g:¥{zÖ<Çâ;±Í5•‹©`zøÓÈ:°jõ-”< W½³Ô³è(| C’YÖ|ìgÐ&¢qz!½ËÛ¬÷ÃJ{*’!ƒ* iÓ@¤´BiWô3Hc.Ðd}¸ ;è?[Â:jsì% ˆl™bü§b>߯óf•„†Äy.M•³®drP®DL»1î@…@w “0vÑx€=¹5±Žy—Q@4°U¶hH „â£,FÎt³yä\ãJ€#2W³˜[í`ÑBøZ„ƒ™Žt2AøÅÅB€õ` àòI38úÍ7m8Ý€qˆ=ö\$ãÎhœ£ÎPø°~=õW«œPÊo±o&cwÁ2 |p!{`@¶DÜÀ‡&J€Ø¹Ñ´M«¶sì×9E0°®¾CàÀ:ÏSîéì…û;4 •푔ዘ| œcd- Ž¥½'™Î"FËo¸Ë PCå37tÕNzuCIˆaá|ü(Ì!ˆ…Iö%©Îÿ6ÖpÌ<êÓƒãžñÞƒoí1çƒ ì­ ¼4܈‡À]|N•¤ŽL;p2“Ç,9ÊÑôTjžÄ9¤zVˆÑ¨Àï‚ÏkØ`ðC¬¸ƒ9¤èM =jQ”a¹|Êe2‹þS›g¶XP$u„‹Þôõ¨ Ý ˜0eOqäFL$Ûƒ`!¸fj 8FÔrCb>Û ®üjÇþÓ†Aë{fß–ò6(úÑ xRÞBÒ5êÓjÕM{'ŒÖ‹^Í ŠÂ<Ñë lŒû±g#9Æù’èÏ«¬g¾±‹·KŠnLŸÕ»» èÀ•ƒkocX9¤j¼ážÜ5íGÎ9 µ)ŒF«Lsãn:f½ZƒãÍtR{j@CjöwNðH©Lt<;rïáz>!½mÃbZcâ»íM‹¸Çìr 4פ@œë™Zl9ûÆd~¨Ìªj–@ÂÈ«`:jCªvƒ+Tà;‡­oƒÌ¤‡Ã¤ïÃõ–³ŸdmýqÔ²Be- Ƀ.'71š¯èºÍýŸ xÍcZ\™zר„oÙa­w}N¼g¸Žà^´mšMˆºÝžÔN+ ºYÑ@èõjÇNÀ-ðù°à6Ià¥Ûœ×æb4À]×bÂ^ÎðžN¤b¹õN¬iÚwª“ÄmÅïäNê ÑDÖ´­Ñѳƒh ¼èÍAúŽÜÙ‘ΚSÎ/çÏ4…‘Â+Ka~¸Ù€éäÐ(ã8Õ÷a§í'܉Ä!Œ¸ltàŸõÓvšÏ£‡ÞÎ÷¿+™0ÈŽZÊûnñ›i†½ì;ÿ°3®JF0`Èl;¯év``ƒ,;cyÁº¼"ô=‡+«’ù«s¡d&»/šlÅ÷ÃY;£¯Öæ|R sÏ©“æ‡\…öÇÌßd}Ú±vº0GÇœvÒ¡š:s-ž• ÌÅ¢AèšnTó1dVÕº ºž‡„úm»h.: Tæî¬•ŒS Ï02(ùx8FGäž?“ÉJ Ài2ˆOõ±•mp¾c6:à}³#“ šAâÉ BËîéø`æ€nè/Å]ÇZ¹Öðð^Ú!¿¶HHy¼öNÖÀ½´ÇvãÝ;Ø×œ1°.ç6yåäqBBÀPgDbæTÀp*ÛjN’mâãªø¦ X´ð~aß$ºFÓ÷Ž+ȲuÛ: …aS`mW‚c›PÄ W¼ ì§:ÏÚÓdj™¢§!•s/8. \»ì09õ3g=aݸ,-ZÇù7ÂÿÌ8¤ó\z¸-Šê!$-/ Ùáö%uÌ2\­ÉÁñÎïðêP2:N£¬Ý廲ýkdèmbóéH02 >3ÌLƒ"AL êqÁò¼žØç¾@š@M'VÍ ýyåR¼õêÔÒBTNŠÞ9fO‘Ö9 DÐa(j,…Åü}R "-Ô„’Ï".'Y?G¬äæ\<]úyÒ8îÕi`ž¤Ì Ûø,«’À_3£ýâ¹g©ð*ãô4è¤RYkµ°^ø§„4GHI“j°&ʃÀC†ã¥sì6ïZñüF9èÍÁ¸7Šy& à éÏs—5Ìä›S«/'ÓŸ¨Ø—ÓáqWØxNõÈ¿ ˜ù×¹3Ô(Ù™Ÿ5“ ¡oFJ¥À*éÝ2CÉ®6*ç!“F@}¦ÕC­=Upcp‡'£I¾SbìÛ ®j!8ŸOi³†@~Ì Í%‚›ùêÚ¦ÕðO®5ÃTuç–|À؇‹ìᆣ@ï°s.ù­e9&aâ>Ï»ÜPÒ[ÈÂ33!ýß>·¶ B‡ Àl+Y•Áé}ýß©·¨5‘@„ÊÁšõ=YЬTÊð(Žpf€ <>v,—:zÝg†7õ™µÿYON …žHGÅ­“wø)ý¹Å—ÊÓ!2`Ï9ò†™CÑ@ëÁÀ¹§â¬7ƒ›h QT>ùÚã_ò²äì.¬ß S„ ‰QrcЃE–)/Q4¥,âhß— % ‹Iµ]¶ÿžÕÿK$À@µ²¤®Üæ¢VðòP33_í¾,œ!ê`\_4ÍÝW •c’Õh‚T[pvŒÎˆÝt¡¸)®ñÃÛyÉ BåÔ6¢õhLJN·ìó;­lØ(Ów=—Ïkôæsheü§Þüsãsš²š⌱ohƒê©» jªÃooŠê¨nÜ©íÖŠññÏk°kª³úÞ¿‹:`ütt±ëû­«Ó’$ cÏ/š@>hòG€ÿ-sq¬lIõö~£yð‘¡tÌàó]/ ]vʳҮÆ ‰Û.CÕ·ùfÆùÂeHÈ…š.Xƒûà-özǵÝp»L³>Ýk  m.ºå¹ªõ#8‡é@äÂa@ÌaUslC8?ek#È:b‚)¦HMÕQI(´Zƒ\eðqŽ}¹vý=‚x´Â£Ô¢1 [°x@ÏúÅùj!x`j¾ŸC®&ªÒx1¿ƒdÐàA)›ñÐÁ VLE€¿ŽGBáƒGXþÆ£yBáÌŒƒ2«avääãÎ0ýó´ÅÑëˆËd`¼;WˆÔB‚¨ëÊã5WûFцŒ®q½=€ ¾¿Ø² öµAÏ:rö4¨T ‚Dʜ˓R› ] †V×@‡y¬CùÂϸ´c¦tîíèµHáþ-eG6ƒ¸k„ê9lÓ½ôïnojÈù,3À«p¸µ¬‹þ!¦'p- Èq ™ ­ñZÈüÀ$Ù¶Nñ‡­h¿’;¦˜v¬3K ^iÿgÖúýç²@á>í˜ÊØ<„Bü:vW Çû³õO¡•doÏC€N›5•È_åŸi8j ÃF'Ý(¿´òNÙ÷›IÖyæuæÙÞ£¬µß†ÕëÍ7s\oÅsÙµ\ýšòLu w0KâU,¤0`…ÊOp±’–xmÍÝÞýí¬@ 𜧱‚gŠ0/ÆÁUÅ€özG¿g?“Ç hn×FõœTC—¹¶ê=/ËëøbæÖø ^+ƒ-nÌcøP±q«b£[·Äb§üf‰¾RëÍë@õW¿þzŸ+–â°·qå4§e¶·„}è @Œ@ AJI@»’€H‚"!ˆ”"!hþJáþšií?ì×›~¶ÏâZs8¾E·GÞØxØ>ª«`á±)+ ùnó~j.E[Ø3^h_ôµstî_¸ñÞ‰çßÚÔ êHD¨:–-¡&q¤ç<“a£ ¥@n ׫]oÃà݃+@Å›¯›R9ûœ§·›øë]†âñ.Bùµ^±ŸäŽâýMãÆê½‚ÏȧÉîé¼<«ùöÙ™£IÞR2D¨ÀÌxʯ𕵄 îRÁÞwÄ”jŠ õF/•ãù0/<Ö‚R£òÿ½XU²¬‹ –ï F“‡6ãêb¥bzôm¦ÝÊZ˜ö9©‚ó|i\Öí¦ÓósVàžgýôZŠ‹%÷àN물ôn 3á¿æ€æ° €¾Â™Äì†UH|åñÚ· ¸RjÚíëŽl d„3¦ßQøXvfÈh–¡@@⾺h]#£¹#CpEñ™Ä²G­aJ‚`H5Ì2¦{ æcÍ-ì(¶x´ oÁîMUîº_¢WKZ8wJÌyóð0z>s|¢9Œpúc(½  £Žh¹ÕÕ˜]âø« «Dgk!»l± ù²VJ”P=ª›…Ŭex»×Ím[Àñ†¼7Øqš`“ä¨@{ºDUM‘L²þ3±ï_Áé»BEøaÕv{¢Ve× #ɻ忳¶ø(4gú楘8àü¶ˆlþg,Ôºó|qLô9ì8g”ìC÷ðv:wTì(ã”tÝxú3—|Ó N‰­@aKŸI0ºùü@M¡Å»*²[„p ¦Z‰Xm4ø¶@5É»òþW€)…8µ \lj&×óVqK€*§YÉr÷0f„°Ì1f ÛRiÂrn´ßgÓ{ãT`A¾–×V8Ó˜îG@bé{|¦û%ÅJìè°[Ä Š®»(ùµ4ŸÌ6L1á`P+À¨OM",½ øŽ˜J <ˆœ]Ð˽ÁG1…u /½ŠÿRßN¿™9¾§¾ãG²<–÷ôHa´aг2x–Dœ! LjoÁ@j´ññNOëÓm ¼òŸuWúÚüø `²ÀjÞKZ¦’Óa@È6Jàèå^O@µæ?Îz7ÙcžtqÊ{¤Y¸× žèaog=°²Áx>ýÛ™±·ÆM›üh±¤ÀÃÜ Hp®ì`¨J:áÈ9}€Í:W¾›¼šP¦òZ#PevL­Ã¦lQêB¤7o¤ðÀìÐ):5…©¼T×<Ûo@ÈŽ™ÎãFÌláþªÒô03.«¹•LàÚ=fãÒ¨¡e‚@ 'Ì-úØsTs®.ôAYz25Þ‰k*¨WIë9cÒOý» I)ÈÔ¼›ê°f•L õDºˆ}:LJõí¬ÿ{â¼´ ‰Øv ù¹ë;¨0$Ôéd:Ñ}Þ­7ÓÔ t7æ³dvµ‰@DŸŽºƒÙ5y)Yèôø5½? ø€Óqè­Súq|f†X°Wm˜°'׆ÅÒíZ sƒ&@ÀH”õ¢TŒSJtì÷7úMh#ɨãhu Ç\?{ôý y(ù*ûÙ:žß{U8©P9u5°`÷á^+³ô÷Ig…H0‹[ßʃ€3zÖ~­€˜V7iózvÁW-õM©ˆ¾Ê9"àÖ‡”=sôå~¦-[fÊ7/KÔ²©<ê1e]NŽ$æ“3öªÚ1׿`Ëáså ÒËBÖñ³±u‹üü¾‡—äêN믺­ò´]†ÇV$ÙE. ™ É+¸ah$£0aÈž«à>–„šdÈ3¨O|Ž“8YËLyv;"`´Zdƒ¨²!p%ÕÞ r3Æ™{§¯;i˛Ƿªå`ý¢ßÚnbl¿"ßu¼ü¸“úy¼³a3Ñ›|·ÏÒ´X>=nšiо# Œç=ê¦ àæ\ë„™vКÑùÀòQrÈœ¢@>m ¯?îyIO¤$åú‡?p%=‹W(õ¡¿ºÐJËíŸJÞ0^¹±Q¡kïºîË%µ £I— Åx„@FœÌâ€Cä@4büfzàpH ¤SæÔ4 zóË(šVnÅ„¦½ÓßTè{Þi޵<½èñ6÷+©†óФg&RäË|üÀ¢ŠœIk|ÆÔS—€t)ÀLØÖ@À8$ CC8Î:d³²™÷C˜ G\…'˜Ãü ±w“¹Æ¯Ç¡,^šû~D¥$˜ž/¶•j¥ѧѳµog¼^ q Ñ€;c¥[Qð]¹p_n5¹m)´UîjGj6Hbîà 5”ïŸs¸1d‘ï2e€®KØN é× À²q…êœøÉg_`f@Úv-ƒ¸üƒ–g ÄO"íꃦώ9Ü8.ç±6•ßM#ú°7_dt:«¤ ÷@³aÌâZ¾³Œ¨~þ†Ü Ô|¸=Ó½¿ßœÃÞd;`úI^ ¼ñ¼™Å‘ÏNqx¾çG… ==Øf¸l—7—@ñ/!ïÌ¢¶kZ¾YÓ}WDߎìsý+³T°’Ö˜/ä–dnþÞÝΣÙ7WÚl†šQ §W>µMˉ}õÓÜN1ŒÙ”üy“ï$>µÈ’=]l5ä8ÂŒ†H ,ý$^…¶‘OCæÇåµ@‰‰sP+ÀöÁûÚ$ J·a8±ä”“Þàf¿i%¡ßÁC ˜2P½ÔÐRÅŠ!]DÆö«mJÖÃùÞ¬ë»)~X3ŸJYŠ0®j;ö?|YŸ%$äÌ‚SEžM,ùKŒõ˜Ÿ˜|uÓ=øE—VŸºßêªÅ÷p'/q{½@ô¦Åûú}ÈÖä¥J¾dMm… à T¦'Aºh `ˆ€œ…„:raׄ:±¾°‡„CØ8v ³$ЇzÕ@뺬c`Ö¦¸pèñç'vÛ&€ ƒÖ|n>ìS×¢×L”£ñW¥Ìÿ’Y]Ðdj(J±h35°-ììSû›)þJz]Üœ³ºõ§ÁSOÈp¯×–ÄpM¤ƒ†PÜÀùw°ö>Œ¦žj¦þœ?»GgQ‰B@ê¿Ö‡E¸?OËcüÿUp½Êö&0Vè*¶ÞK6±èOW²¤û ))‡*šU DÖ$^Hà¦j¯¥`c·à,^õ輯PvÔ[ø°ñ£ZöÔ? «Hå(w¶Ûk_{q˜Î©q¼ù«GæÀ‚PÆJxÀpÀ²(ŠieñZ;x©Ö7 ÷iõÊ„ø=]ÝJ°ˆ`¢GCQø“Ø3üäl§T¦ o¹-?åà7Ôy΃á/ÂÕ4«u/dÐq… F½°áv•yœoãûÄúäãA¼ ȆÄb˜ŒXR ¥ƒüáþž;žü¨QÓ”PP)¸òÑž”¿jèÎÉòœ ãu3xˆKdî“×Í~'U«-ã ZVw‚ï2ظL½O~ªAÀŇPt@·!ËÔ)³âÚ¤DÊØxŒfiËIEKšõb} R¾%_ã í;qþóWÅÁwÀŠiÿ[æ0§‰ ô\DcÆÖ㦠S$À-"-—û·?fy'xÒü©;ϘR: XZÛŒÍic‡*Ä`$XOš)oýœÊú¦‡ÈÅP"1;¿ŸÏ?E¶ŠšáØûYuÇë:ô\~-ôç©@ófàAÐävhúŽ a$×1¡-ÏŸçü­h$îšùE81¥9÷S~Û™ðTò{îí$9ìä@v|m ÝÄİj’Ò þ ]Ê™‚@Ðmå/2†7¡'þ9Þq‚N¼ë¹! Y¦ê• £N,îŠ ÒãÏÜ¿ŠMidÍ™t+òÇ|{§Ä@Bopùr¾H¼W†u'äa—çÜ} U2ŒêàŠ•“1ìzè¾ûûœØ¸­7¼2©Ö B©ÞË y(a\ðxtÈhWŽØ,ï(IÀM†ð +€5ú®ìútŠqÊTóÜ©VA<«„«Œ·+Lê€*Æq•»õ<­%ÅŒÇiî¿>-ÃbÌQªd2 ‡RâFeɹ—¶Çˆ”;qÏÀhÉŸºæœñv_><>¥ÖPª@ìµ|mÑÀ!ñr;®UãVZŒ½'6™#ë°¶iPyÞsñïZ,J³k39­ÞsÂÅ#0¢\M‚ze„Ñ3 SŽú¯qÿ „æÄO³÷sÓà {ÇùäÅ*Qç†>êS¢¯4j’±ó.vÖ¬I)USªz[]Ã!P؆yx;¦•_±˜}n’V‡øP„2ÞuMð°ê­žêqnmüOãw¼Ù6o!Ó9çõ´šç‚íÌñ ©*Ð1²×®ÿˆÆ¢­Õ`¶Óo¿Üzg+ÍßäéVº°Æ]É¿¯‚Òõ©Hñ×*»1=W7ÌSöÿUÈ·¬w æ(:‡Ä Q È ;p"Òr@Á—’g 6"È@Ê^†óʺу¶X?Û¶î„ìÃæ¼¦·°÷¬x–_ÊmB÷–õ÷¶í_H†‚ömë|È0Ý;¡qŽ{•`hÙ6â’€öšÜ(<èú~ë^Jƒ¹º°èLfÏkXqüpããÑcyS²L-å:UF¦  U÷÷P„Wåjioj÷¢·¯Wêë[̶´¼TvÓàò½õT M=Ïñõht×aL$";Ú<»:¦O½ 7ŽÏ8Ì,Ûû§ãC-'Öïkü‰Þ»‘³ À›àá&@çŠãìîh\zßLïH:™ÊB÷ýŽßaqêxöz   ßމTVC[!Ãá/³VÑin8S tdH %¬fBñJ óúˆHb—$Õ¢ Ãr«ÉÄ–òuR  T= ÝÓ'”ŠÅ=èïDCu-À‰^M«Ho«T+ý+ø)Üé?ýgíÚ¦P³á€b:¬ÊÅŽvóªž.@4@Æâ©¶1¥Ü™ß'ý@O*l¿"ý†üá“Lß½­úÒ¡®A{L¹&®VvŠøCšì¨žó5óÜùTõº[Gm\Ûï°ÌÞăL:w:zù5¦À$£’st ^ÛQä´Ðù÷(†z‡àcÄÖÈÚŸí<(¾ÿ“`4„;žVHàÆÏŽy,Iq‡yþÞ»âh×í®ªÇ¹u·ð[ ÜÐsS«µB@ñëC努à@Ãwpo{vŽÍ]¨¡ yÐWÕñ åŸØú*÷Õ‡ ÓjW#߯ûG ’¦9Hç?„'abùÇp?µzH¡  ] UV{µ#ožIaãÙžVÕëG»¸b7?ŒäÒypÝÓX(Ñö¹ :aãæs gýŒWcJ/MnSÑ {ìhÅÿ:ä`”-Ȩ¶yôžšBªgôg‘÷é¡Ëîù 籓Èè®ÁÝþór9L%©!‰{ i„pu `‘®öz÷;Ëõ}õ¦A¯wW°Ø;xŽ>„bc+ºxj‘tʨŽ<òÇÕœÇè§7/Ð>|ûÜ)ǘüõeÐ'rÀ刨ÚvíÒuµ¶=9âóŸºèP)ÞO™'”Òv!˪¸§ëS+ mYUˆFÐ…€ä5(Dsƒ¶¦Ô«¨åB¬®¸vçÌû(Öþëöh°Ùf$ã0ÕÓ"l‹ïÙñ1Û{¯`+‹pu¡DJÌt><$›®Œ3t}+àa îüt'²˜vÚnc>^(,F·ŠÃÙáükAù¸‹lùÉ¡[&'ZIš…W:é\m‚¡,ï Ëôk+ó<ñt~â+±:Ä?(ýýýk‚ߊ©)EÃë }­ÿÃà%1‰B*†”VYÓæböîiÄÖoÏ;¿ϰ‹Xk¨üKÝ}^FÁæõpVáR’ÌïÍÃ[)q¿í£n°c &â¹™Q®f.EÜ‚D‰Bo6( ÁÌÞÇ"ª»3$XÈÎ VlvžhÎCH‡tþÓ;]8)„°ju­ŸItW£‹øÇÁšGÓ€ú¤“=!•D‡ZŒ;þ´×ýÊQëv.ÇÑå[B­û#ÐÀȇ9| ƒßÚTOtKéH@€vx¦P€—zñ lœ¤žãï`ÐU;. Ô)‰»nT'›½ˆëXZR©Ê%ýåä@ÝaPÂVyï7›û~)¯ªÔÀOèÝm€$Φ:ä áÞBt 41,öXT%Ð’@íTéXn(:ÂÃ{r–àô ª•h`ÿí‘öYG¬qFQ†k¸ïšÁ³,Æ|ê5ŸÅHÐ]› –°©A8ŸÅœùì0ì?ù‹žëÔmþJ µšŠ}ÈZþ{³›bÖNãùÚP/ðjá ][çÌ©‰‡áñ}UÅûÔ ÏO\Ì‚ž‹6L!wîf¦D9xp# ám¹7„jáFÏà–E œç5*)•†¦6õLæAu<|  …°ö2GÏÌáÜû‡øßcÍló‹éø2@ÉR÷¯Ä´¸âØìáÇŠäÀQhªa‹ÌoÂÌÄœ¢õÁm”QM°­ÉÆ^G#ôI“hXˆª‡3àR¤(M"!œ—»˜ÏZÝ3^£0åÂ8ÑCW$¢ºÑŠ]È€5Ì%€jp1Åø]ŒÐëÊöû£•޼íÖJ8 ÇæÙÎîfãr¸“I)£æoÝýÎMØ;6j˜œ §Gkm…¢·¡çòÆÐ§­•¤ÂÔ>dHŵF’ÞϹ9·O—£õÞ*­ßª¿øÊ¹»¬vûÞè=î4^[µý£ÂG]LÙ®=)Xûpª|Œ¨qþ;HoH„òA‚£ª÷*ö¡Û½öëÐjg¸õ‚4.—Ô–ï»è1§—÷5ï¨à¥jñ ¦÷¶úæ¿I}¦š¬4€ð ð Ì7×åqˆ:cË£¿5lÆzÁÿqØàïèÁ:˜©ÚäÚ¥"††cÇ[CЋÒ+¸¢`ȸ@7<$åöê ø2Ûgeð›¤o Åo„µåAk…¡®2ŠK4`Y7Õ?&ÇÏW›½«©[CšÑ¼Qú%fQ•àGÚ»¶[Ú 2*¢=å½7 XÿKy¼XÁŽËBöÈ 0™¬©eàÔu§´íŸÐÑroÆgÕ‹™0s1«´©0AëI…Isn†þÚZRÃTX~¯f'˜£0ÍHÛc³‘Ë0¶þü òn_wgÍ  µµs²âŒ-Z!<ßr˜Î¤@dù¨¼}he bÆ(iR9¬Ï’«Ë@R9?m—ãçõ´ü»ÙÇaš©à=úW!µÂÙ‹ªÚœ0qh/p@0@7X‘¦–róÜYÜgó³+×™]^6êY\¢mB68+/ˆõ¬¼ós¨+ÀŠt\^—$ÛÑpw?z»Áað,¼y6ŠÒñš‚üîOÖ]4»bÖ€RwÝ®DHúh m}W>óߣã«Á¯äFÓŽÒFsª›hLTV†'Z•¸~³ßgum“F}C¡û)óõ:‚ªsûpC yŒò.Ò±½W1>ÝGcdŒRØŒ^·à«e—Áë…EÀ.•¯Â­×9“åÒªÜRÜ Ò¾åxÜíU<Žzzd'ðP }maê9Nç:´Y”Ö‚œÜ7&síü.RìµÝªc3­ÏæµØrÙ,‘ÉÉ…LÐNk4Ð4Ð3\†r÷ûê wiý p0[6,¼2S‘<ÜÛ!µ0F œ6jBb²Ø×>0Ž÷"~×/8€L”sœvÇ[Ï¥ªæ´ MXUñöûo}®Þùï]ª ´8ê¿Ë4Ö@m&w+»›·{ý³…¥þ0>*Q;&™_±§ ä<†@¿ =¢‡`nlJáÖ夬DÿÄöÉwÆ•Vª‡1˜ ùiøæpY³KC„hIV2йáUÿ#oøô‰/kexžáU Seìí5KF@]…ÑF E«£âÜÑ-%V!óÙµõ¬M^—iwºUfvæüÎë(ß5ÿ£Pw·sôÜÄ3l'_”(KH€ü^®,aËÞ:•|@ Iìß \²(¤áú3År{±înôœØÖ@ù~Sï·w^†³ænm3YˆÎÿªQæÉœdÒŒKèDq^­ºävׇ~×´çÏÓ/‹õÀÆ‚‡з.^'Ì~GhÍž@› 7ƒ÷ËóÔïn9ÔÜÅßÄìËiÈ(¼¡[/¤6 d¿¼¤°`U{ar]׿ú9l¢sέ—Çñó™ç6- ÀOâ€2:>²š%™ËÁìA¼ÿ¤Åûe»«0M{v™Æ.ÔººõëúJºY_†ß˜°00VP…Ó"½Ñ?häš µH‡–Oñoa±ñ&èþÃPóLÇ>¥˜óy:>œø!(†5ë$yX%œk×o@“‡2 ÜžáÖ±W‡2SJŸ˜¹t~òœY[$>{PH0è@dy훫“žÕös'ýÆ|¢á®ë‡oÍA}å¢Â½)ÆÿálæìxHŒ ·9Û_ÃæÞ)wؚΣÅÄcM˜xŠÜoƒ §9S0fÆàåÎØ®0eAë‚äOÙ=±wÊ?À~«Ô]} ØÚ³ ha’‹ó§q´ïZ˜ ¡­9àÀ¤5@4߆ød ­›žàÙ;`ö– á@K½÷ÉbqÛ¯¡®F{Ú[D… ùËç&öˆ½IÒkW§#À·©j;)ê ¤¸I®RùZó‚^MùÑ¥mÜJËÒÑËÑóf5ÂÚíÿ_¬²Q¸³\y–—Oõ¦äá¹ð:Xn5Œmvûy²ü`¥Ûçj|Èw°ßìŸÃröû¤ƒ0 ªÿöJ¡÷ä WË#à4mœ;wÎZäÙÜfàt0 î”ÉùõLÌÜï)4¨}2|z8%!„ÿ¹PŸ‡J¯Eò3h ü/sܨóÐò#cÑÆw™+ß ˆuþÔ€æœíþš¾úKÛÂQ¿¶OðÂ@x™ølT_¤v \·çŒìfû>1î]‹õlË t®·5-›],X ¥„ ö@o@6À,ɤ˜€¹×=±ÔyõlN·žŽ«65ßRûUÊ€‘xQÀÄgÚ%HQ{"}ÉÅØ§~©Z¸ÖfUx_Ÿuºœ›Q‰1+DA”eh߇ÌBœ (—Á¡[?€p:)E@ßT¤KŠÇP!ãP«K;å‚´'”8ð/cì˜ð$ b`Ã!IÝ Ä¥fN}bbuw5íò·¹ìŶÿ´ö½”>Œ7úþJ%‚D´ŒçÄI|óú¥QÊÔ,ùÔL|xîï—2­Ûx•ªqÕŠ-"Ø#Ú Ý2«Ñz‰õe:5³S›W#eÙ=G4] o ävKÇÿíºI2qœd€|[±`ëA ‘nô(Ê*<¶ï•N€÷êü‘  ÐÇ1N;“4`ÔEJÆ>zS`­×EfN’m í¿×¼·œ§ÒÉRìщâñX (1ÖÊä`¦Ë@ÌÝ$›ÑÎO+Û—dWÞ5§D…Š\…Ð'Zxå˜É„â€÷W ¤ÏV «Ö æ}Œûß{¢0ÝöÊyåãb¾24üXè¥-Š$!Ÿ÷ßûê!èšKŽÊ÷Æ)ÄN4â P”¶¤«‚3+GPÄz)€M­P!JL*‚vFOi* éžÐ‘VZk7Ì ž‘[qÕ §“:aŠñÊ1:@¹e‘q%ã¿'w1"âx›i>Öî~§wçͱ_™ÿ½ñ¤aAd<Õ4&¦MêšK±ö~C—à/¤?k·UðN hQŽÑ²óº˜ó$CyŽ$L–@I´*%xºIÔ<Á=·Ù©øÛJ¾ÙKé„UÚÎÓ2KX ÆixGÚ€ðz0DÓZà~ßˆÞÆdÝ]½ðÛ€TÕ@q@ê›sŸ-l3„d&f5!ÞÝØmÒ%=íGlZ0ÈPP1Å,éN•êXÚ%[ª¹û,Äòí“ÕŸ/Žæl3½h«`gXJé?.ÚÌ #f `-gü—Œ„Ä$r €Õ ÀsD-Nâÿ¥Iw¯z*qêÞ°XüMSD«ø&Ü'fwRð"_áåR$)Ì€ÖìaTƒ7E/xãÜ_ʇI«îã®ÅX»Ä`‚tÎA±”$`˜ðLfÃvqí£0(!èe…É™6)ž…úhÊÉæI»q|²ê怒Hï$,ú¸qøÙ–kOd•ª{À à§•¬° ©Ê/ž”¢‹±héÕ­÷MZE§’¥…ØÐ?är¹k™2º‹‘N J×Ì}Nž~)98èIEÅm§v)âQ'WÕéñH~G’rQûmE—ÛÛqê~+õ›ÌÉ,±ÌÙöÏ7|AY¹#„«&ÅÕŸs¯°º€,$›2Qí¿G¹¨m&ýgÅ63˜R@Ü€q¿œ±}ÙÁ=~."A@í­j \ªò2¥\%s¹e.]¬Ëw€@Äʹiß‹¨ÏwcP»¹5ؾ-h›ÇªˆÛ¸|SÐ'žŽ(6Á‹-€‚Äåy@ÐJKÚQóÑÆ*3äÿO®éê€?ز ©}×-O‡C´£B¤ˆa ¯_K²)ÀmßÇàót‚ÓEãsŒpá’``s–¾? }¯_3ÐYŸ¢z|~ʼÊý»ÍÕñB<ÏüT4µËyAÀS@SÁØ$O05Lìîüz˜Ö~¡Õ`åá€P¹ÆƒJo–ÏG§½­õ(?‹?pªƒÈ´ÿ|¬4–M….v^ÆßßKÊ=¾gï£Âô$r5@ùA¼ M:ƒÐ¨·9xçø¿Cx“̈́ٳüä—!Èš±ú¬‡,!’CŽ.Ævfèy0F@Ñãm3®&"B?:˜-žýëS™ûkÂ2ÄûÄlïAžÙ¨0:‡ÄÄǹAé‡Þøւn.ã†q|[íúÛÍÎ_±á-D>ùy@ätE¿mÀó|¬®Ô©Þ>[´¾œ¶T¿<Þj¨83$¯ÎiD&FOíEwDÓô¦•ûdž–ñ°\´}Ã6 ¿´Ù‚ûqGrÒËp­çýªÏŒ¶‰Å&õjK䑟ÁràëY ¹ëBr«‘̸¬[n}"ö3MÖzQŽözߺÄÿ¡íªÏûVé±ÁÄ<Ôµ¡4w<é3¦3 ¢N:AÓbºˆRî|Ï´ø>¾³/v{Ð?ôÒÀ+¸é‡RùÀj M°³åº‡À¼ûuŽ®´Ú!\âþì´|§6/âáh±umUQ}|O lX{'ŸÞ¢—ÍãV·MÈÊgõëï?wØn`àÞú&WL‰ì€Nœ  p ²îÁ†`¬ý^Õ1ãâñ$Wú¸báÛ˜Ãmû[Î3ÐÖr*ïó5ùu…öÒMÖBûkñªÐí{ŽïZû߉$PÚ°€Ì`5ÌâŒ@Èh@ÖÎ-ÔdÎØ#^<›X8Bw:L›£Ì›¿/AAø¶gÍÁÌæýß±¥?'qfÞß*ú6Ìè ­†G¸ý‚ÑØÐ\C¸è¹P.ÀgÓuÿ¯Q˜ÿKRç³Ïé«Þëñ,&Ï!¼‰q¼ƒ´Â ôÓËßz CÜx ƒÄEA¤€ñ%ëp¦;˜lÀ#¬{™ZñØw˜dvºsx«¨$ZµN´íAŸ”ë¹âJQ=¬5k¸-éB,¹ªÛ%ÙQ~Õ{]“î:L£z;fƒ&äÛrɽ j¼\©ò¿²``Ò Õm2›/sÒÊó`/¥‹%@(‚€éÈsg6Ž¿Œ[úqÖKÍ>Çßð> `œØ!õUÎé<€>YwU²ˆš}ú2™yæ4€, ÒDdNíØoà©\:êÁUô¿÷çS–=o±KIÑ6/›—}2pȧ`ËÕJàÙ ×-ö¦ß]9Î; à4é1¿‘[=& ¤S^±§R$ýSŒÆ©"šVûc ‘ùW‚3»âw gvÑ}δÁ50L~$Ì€'›Ž³ ùÖ^Üëz3‡zÞ²¦ L6Ñ{&;ÈÝ~½ôôýR¼·Åêè£J ß•w5'²ŒÌ>U¶<ç…*!ØþÅÔþJ#£i¢u·²k ®ŒPÁoáišÏöšt?ò’‚šÿ8çWÊÄÈ¢¬ç=:¬„Ïz"Þ£åìøõh6üÙ ïËývçĆ æõ?H(µæÙË´¦x]Ô8=Ès„€Ê³è(O¸flœJå ü<·Bn±?Zš á²(ƒyêXуé:p^¤ó,­ÕWÇÃ)‹–”Éw–¹ÈÑ;=uñ8Î8‡:Úkhšô[÷"’@@ëŒ1GÝ“J5Ù^1 ç¡ÔÐR]0Ëì\”ÚpæïáQ™ÁĹm×ŒÆ ³µø™¢ñˆ«—¼£æ{µ÷íxs\ À[$ËLZK0,ÆðÕ-ñcŽ5ÓQѲ…Žy8®fÆk¡’F<Öâ±Å~Ÿu¾ç º\Ð÷–ŸÞpüûu\ÓE÷›ødƒ&ixlÉÂ1þÓ@Šœ»©*VãÒïîúTòæmЗC/à.{™òçãÝþ+f,UAlÛx6ºÎrk×øøp­5…"2å'DªÜ¼¾ªøpBÛú ªà1ŽDÜË€Õ(xi ¨Áo6~N£½PLÓ8ýâŒåFÚÖ¯K­G¬À·Yü*ž‹–-~bÛt—*rì¬ç¡0û€òö`Þë®f.äß9=ÔŒX61=ÂUÁÌþÄÜÚá¶FÜ=·x»Ù£s¦fs)öº¤´¡s ´ 6GS“ejÚµ˜†MUÑ[¡Ö%ŸK wÿwüÞfCyaܱgÝûçBæäBB‚ªd-ÎÐqƒò8¦{@a°&²›˜x5'VÓ@…^ÁïX.}¦Í Ðܲ«WÑ¿!{ ºðe0Ø 7LÏRØ Ð í^ø‹©i vþ±ßð¼‹;“Ë „ìîLü³xm)Iý•ò\hÌHÁñîÍ'|Ï\k×y—“Eù¦'}¤n$MþOtPöË˱úçôçëÞö:ÖEe—<¹ÜÓ£1f`ê¹,[›ôéw•^x!]ÎyHy}K @ @XG*ž¤£*ia[E© ù‚ƒSkõWßÙa¤®op©Ù8{éÖ|ë?Ѐ">VØíq9îFÿûÒÌØ6©H•k'é´ûäü¦äAaׂ5 òÊ„×-›d‹Bóu¨¦Ýö¸É°Xù-pÝSÛ¼:‰¤(p—žÛ‰z;Hï|3a÷xàuc yn:z—í*9OUd·²4K™£’ÏYóDh5™vÜ£és3ËDçšõ0¿÷Ÿ>ææŸ²_Ô èBŒçH2yZæÀq™"Ð_9½4rsQÅŒ*R|Nq±ÃæjʦPžíˈX‚û%ë¬9…^z—§Ô“³o+D“¿ç-.ßž”4Ó³N»ûˆ¾QÌž¤Ó4±:`Ǥ T4…ð¹ƒå×2ÃfAV©A¨Þ›LYƒË#©|µ=U‚°ÛÅ0½[Ì4uª¼&„áÖB„£›1uY¼·÷Üå¹¹Fú”ŒD¿M€Ì÷uدEÊàÝ8¯9Ž8´ƒÂ)„¾}?Tô9´|U]T**¦<·=Å©Õä ÕpÂ*ûNdÑC”—©ð¸gQ Ú—º9)=¥dÙžÇqÂt’±-9®ˆ‹ù ÖQt8!G”,›ƒè»LN Jâ߉Yº„9œvÚK;ÑŸDuÍ£Ç|’S;^‰$]5¸®~>‹f@~±Ïé¶â¿ôÑih4¸¿a;pÀy ƒýòÍ3Í&šFo›¾)Ç0˜Nà :0ó®,BYÞÍή+hV·Z?s²Oñ݈ͧ§ÂÁì–¤èÒŽ3‹,V!!šökçÙÝDü2LD·³ÛÕö24Ýeïrx½qd‚U@“[£tªõÈ[¾˜MJæoëÑÃ. ê„îOô‚•bgFpÚêXž Ä_&s÷V6ч*íÐGæ‘Ø^4hËp( Hц檣ì:ªÛÖ%D9HùôP{¥ÉμQÜj¼@™–ijÛ6â7DÓP°ºê€Â ­Îuн¤´¢h  ¹Ð›t‚“×VBϲI1ƒóßhªüKûgÙ ô†ÖÞí8ŸEJ8N®Þ;CußÙ_ã´ Ì‹WÌvuô¡úœ;Âþ«}ˆ@§Å FvÃ|ÜÝqñ¢çŸ±íAý?q³Ù;*ç%šñ³¶FÇïûÙîÕJÛ²íÔ¬ ¼óÅ{”ÙŽÖ&xõ÷žj•Mû“ÿìÃí¸•ºÇö>½R„€7+6ñÁ° j>õb;ç'ß c·fÃB’‡\ñ˜òæý3úÍ6úa¨l·tmªZÌÆÑû§*{/ßÀ®¤Ë'ù0wLÝ>·ø\(Ï‹ˆ²­šL­ÂØê\[Ÿ+}>iN³-ÓÍ~Aˆ«Š'¸¦MÊX׬ߓIë|@‰wx<~ Wð6÷/š¯´ÿÍKŽ=±>#ó­‹¾9žÖØ­di¦Z3ü.ÛÉNòôq~Tê føÜ…bžI‹W¥ª,öé9|1¼„Ë”‚DúODÞ…œ/KHK l}ú¯b’¦ís3MΜ©Ê‹Î6ÊG:È;¶œ‹…ð ír 6uDF*!DËÆt±7½™8AÛÓŸë§ËÿÛH> X— d·äA÷Îrh«œHÍŸ·äqùšN§¾Êâý%uKt»å~ÎÚ¡œZdÂÖËj" ’¸¼g$«k¨ eɈnµ¤æ¿©É¯…j›'¨ý­ïõô‡5}1Î ½8* Tu¦ª_*+ˆÇÃÚbl.é•3¢žûé/Fb]»mÉãG,õÌ‚ƒ*zÂ,½©šùE–©»ÌççŸ^dø!‹#ýÁuŸßún95ߘËð œYrüã½Îp«‹Óµ†tæ|W4¼þº5£J {²¤¿ƒ3FîÖËõ^HÂ?V×ÈæÙG*«÷ò”»}G¿‡‹ÖaOŸÍÃe犟jQ¹‹‘um€2å\cý73ɇÀîà-‘;Wøo¤q×ÉßéÛªé±×tiš{yý¢x‘¸vq;2fÎÁ°·}KÉÄæÏ4™½3Ó=ÕÅÏ/·¹õáz¨¼œ0@3šnL À€×x„lñè—Ç‹@<µ±¥µfý£l@ŸºŒ Šzá¿þ|,ÊÈ…!›Õ|ÀÉÌ-ZûdDÑcºgõ®åX€HijÙ¬*(ݨ9ÿÏ6\€ »ÔhEiÓ9éðçã¦:x¿rÏ'Ó$·$Ü©Òñn~¨oû’Þøtÿ©øµ?¸|ý÷øŽöù¦-xGÓy<âçqðbh‡ÄîPÅâµ3÷Ž ) £$‹l+ì#YQœQ›Ún™eçlî½,÷UkX¾²h{Ôøxet»-ÎsÑÀ‹v¼nx:¡h ¤ãÇxM 9#¤Ç4%£Ý‡Äøöu=>n!,«µÈçÎÎYt¾ü÷3€<Íat`G¹—MÚ‚¡þš.¯È·<Õ@Ö„—(â°k" B.”XP¤j(7ù³qÅŽ̧|”‰ø2îU= вÙGQ ‘‚n†—»b—h«P]QÞÚËßôkÈ]¸ ¸}šdDLØ Ä ¡ü};§^z^蘷©; À-Þø7ÝÕRb\mùæ¶ò¾Ï¦÷} ïìóo¬’§ñ°ÀÀü¹\p æÒf™s›ÌI—²º)G&oR¯Kà @ÿvÔÖ°öÎ~yY(Äý¥)ŸfÞ±´£ÝU믆AB[Œ¹/Õ=¶ôë›M¦öÿ™‚²ÕÌE~ (Qšy rG¾¯#ÃMQñiËí¿œc`]Y¡”ûðQ鵊ÿÀ´ U;ZOñ|FÖ3OÔ¡8Ãñ=tƒÌmí¾Wãeð&ð8€ÀoùÏÇO`“wž¨V,ûLÚÙXÙŠLwáH9m©aß·S¿³ªeÊ\V€THª E” EŠl­¬f;ЈzUå¯4¸›yæF+ÆŒÁ"3§O?"=‰Ãg»žïxd…"Ç;ím¦’h—L^ú÷QùÏðæ[põ²Y2RP2>a» 6$c5™Œ–XõëªÜ߃lsºCÌ@™¹êrÔÜ 8¹jm¾OßöŒæý-UqøéxXVS ‡y„ 6 á,w?ŸEÑü X^{2Qè"X)ât‘ðöîOö<Ç) íçg‡æjãgeR¬Ýt]þ~Møå·]»K¢yFb‘¾óq}ãÉªÖøXÕ ,[=¼i/.Z!ü\\X#ÊJÆþVÉcv–¬G’{ d„ºUaUû¹Ú¢d8m],Â÷úZ<âf.ÚØ;pœfÂqt™ù¬¨†Øy[O/°1‹Åg¢(ûl¿ûJ¡e+>Ô±›Æ-Ô3›Cƒ#WåÌj”ô×ç$•î9½æ%˜ÀÀ߸ <þ£µÜ ¢ã»÷Òâ‚Sžt´×£J‡³rWÕžö›*¾Ïåß5Éß*.0úõÂÐR¢Ù¯šŸ‰¦ ÆHe9=Ó|;6ÂvBh€ŒÂžN(ºÀ0S|úApC1ƒÂsfûæ.4´óa'g†Ñc×üŸpßÔüj¡8j¥-´Z}1ötàÚÜ0¨úû¨*aú”¦—šxÖ½[4ÇýËÄ}i4Põgó‰À™Ò´äÓ´³ZËŒvIá©<í^¨HØ ÝjV™zêZMТg(@]cɸÄpxÄY—Y–ûóæjùl'P»i6¼¦,m¯cÝoÍåìý›Y¨¨ª¯ŠyùZ®M…†³‚2G† †îEƒÛÜ¡N±XÙr²N[ó 9ƒ[ìZYœô[Û0j»UW…ˆåÕáR¢,uÛ~è†ÍêÃ%"ÊâÎô¤Þ—Ú“a°öp-yÆ,§”‚E Z¢eæØ‡Os%ðôsi¨“U¡¶*Ù³dç¥ÚÒÙúSë"n4œ„b¡R”´ïžŸ};ÇšÞi£æì¥ï¾Ø`SjóÖЯëÉÕÑsÆøqƒš &BýAqQ¯((¸(+Ö(n‘q‘ÎU­û+ûœ-7©­]ùno?géÁN­¢NByEò:,Ât_Ÿ[꘩`k÷gSDdšŸÁÆ(bÕ¾Ø:8iŽWÒ ÌVʦûþÜdÕEZèW¢”T-¿µ¸Ùùt<“¤åÛ`Õ(ñém¥>ì°KOV¯˜}5îww¸,°ª1?‹Kv ì ,ùÔ=ÿ/sS•Ìj)ðÐnµêšî¹3ž›Œ’´hhÚϤò¨2ší¨r" ô4†Aæ †È]ŒxwáòÙ_ø{×år¯JôŠÀàãÖ¸.½½­fM‚ïn4—…ø6í´n6ÔW&¬Þ¾WÀxušzµ¡Õ³̵«÷¾Ç‘÷0šžÐîï?ðذ:ËÅÇÇU^ÛŒ?£ûäns4<]¥& O£W ã¾æEô +¸uŠeþÀ™~àæËIV3­hIÆäž2å¿1†¨Ál½‚ Œ§‰ê1Ï;•Ð%'†qV‘NÕ¤ä+wœ°ƒÏ ƒì`¬:[н՛J‡¦6¦V£˜¨ iíÇ5‡ 4Ãc!Á"^§´¼·=–úÆR:¶·•ŸóÂÌlnSãzæ;h}ÄßUç§uA:a] ±óGÒOé/Œ­f™J(€ì á3@àÉèJ=¶mÊ‘-*´ ÉÈQC´ŠKî´ÛÖ=˜OÒ´èÎ|´ŒlŽUÃ’9+þÒþyÏÃRr+gˆ @V!ú6›4£ÜñÊ߸s÷+^'½€ÜxY¨°¹ =óç%ô\+¹o“(ÅÓ6ç”þÐu× Þ/‹j7ï-]Í78¬t$½8õ‡þ¹á]玌Ë?êÆ¡rWY1æ+óëÆ)pŽé áÜ­žø]—À³~å“‚a¦(è‡1£6¾=qeSŠãŸ{!ÙìƒØ\æBn*"ÈØ‘þ+ ¸YåWíz~=×µ?á)Döâ„>2î^ûî.È¿~-š«ôuV¶+ìwëÅLAŒ88ïy–¸§€SÌ–—¾FôâuÚÞãPß2‘¯Òüíò‡ÓÖ]3 l<ò¿´X >WÙl ᵃ0T¿›_ [›C~ÓÞ6ê;“Åçæ]¼üþE}ÖØÜã±Ô’›\Ž4±×EÝßçBÐnAÀÔ™.±×•Ã<{ü̬Móyk‹Â { â©þç±`ã t”Ã"뚉²Æþ„äãéC}ôÔÀ†äÅ\ݳdgn‹Áì€*PqK9enôšG±Ýön´Ül“‡MVƒ;ͯ=W#8»ÿ A_[æÇœ€à‰N|¤ÛóßÛv¬e,7ðµ“ç,i‰Ç}!~S¾ÿÒÿµ°AwÛôçÂ]´Oû»÷‰@¼beërK†¤*%óå-õ9借a›7Á@Pñš÷±È(8¯Ã¸:eè ,RéfüC¤¡øT¾ÅZDx’wðf¡ý™û™e‘Q¸ßT{g´ÕNÙ`3vqÙëü¶(ÍÖrZ”è£ø…e} 9àBûÏöRÜ-•o/áYœ?nJ–1ªùÖÇíØ‡@”š°ð,Û$26z+z쾤guŸ½W9™ç½œ¡½:Ô-»Ÿ[žƒ¿àk«jxÆ4Y_©‰y:j&úº‚‘¡I­ |ÞÒ“¡'hÑY勜 =,<½¬Nôé´—wœ¤'?'ep°’ Q€ÓmÌæ–ß›"ö3çÑeÓ”Qê^ø^ê/uØõcÄ|Ý[ß×¼°º.²ðPÔÈù´·Y<íQã÷©«i3•ª?ÆTJ&Ätùì(‹ »,6o>Þ@ýóþY±zrØL žÇ^DÁ\ÅêÝ‚Žƒ¯ˆUÒbVU{f^F¶Þj8‚Ú:P³(éÿªS<›§á|¿¸ŒOök•À¼ü½~‚"©a  " ä -í[7†òïµ#"´«dö°Ç2ÔL£(ÊáôšÜmÔªŸ×uŠZ¯×›ØØ`¤J왘­–©]º9·Çþ0QHÿh~ܯc§ñÊs%AðÝò—À‘éÍ—ñÚ¿¤'­³ÚÿÐãæûÑ5<ÏùΆYPóZ-¬lîyÛÄþRk~½íVÏÄÓ+–?¤ÃUšøÔå²™–®hõ½î%A´ð)8 %€Åb™Í{êFÛsdò àôç— r6ã”q¶œŠâº}ŸçAM“ºõख़ÿ¤å<F‡µ¹/‡æOØá–ªQ¨”â *|Ëö¹|qýÜW~sS2Cuà¶ý|ðãˆÝ“eõ÷l!"”öêÖÔÞÝe®#+W'P»'8X~„¶ ZÔ(5oËúM{fRvÍD`§ScÕáiÙz°9WR ?>_J^ø9ÕŽES]YÌLï–i BOwúç®`Ñp:صS¬8±úåÐ#5y_Uþ²è¸~¿ò„¶ßŒ³¾§ímð1 UÊ•nêBpEw¿xå©|R|—Ãûítý>„['5¢‚~õÊ0b/ꎮÿîd D>_ê¾N)U–.›GÓ§™û_wýOæÃœ£)… XÒžScV„ÙâPžnÈmû<ëµÆ'(Û\HµrrÅqÌ€ x ‰ ŽÂb'Sœ³5U.•™î»·9ÆöâÛËÂ{"®˜Øÿ7úOu„/Bmá~;í @ÅC|ÿ¹úÛu£+ÕÚn\\©ååß8ƒFû¼mTäÜ®õ6 gyöÙò©D;ªÄbš‡!aˆê²>~œô‰÷Wí=[–æÏ…êÊuU=¦5 âÉØwšÏë(¹ºO_%éš±­×ðÿkñÏPí~6À€×FÏ9h–@É,Ü‹¨¸»Ðyõ‹uFk->ŸÐܸM*[x“+#Ù9i±…-Þ‘|Î žÃq¬¹—žEÓcßIxeŸM˜wRñ$9ñŽéÞ¯½B Œ)šm )ƒ3ƒ'u¸ÏLÈÚ-ÿ×j}{Ûà)åbÔ^Ægà´É¿Å¢çq–å½R&Z¥*½_çëéIV0œŠCu-"ç'¡]XÕ#éô O-…éoyNÉ“ÇïÙżèC›Òfƒ²kŠc2êxå"îCa_Éô-C@œúð?tC÷’e|«…oË–Âþ3x™ ®Æé-ÖïÄÊ;‚Qvþ)b¿;¥P×ÿéíŸA¥ÂsÝãâ°+˜Òpm"§Úˆ ñ£Ãëf9ºÎ6sçÞ©™e+½L~6æYü ;F'´i'Éñµc7ÕFfâˆh천Öd$Òƒkñ«@ðææñ<~Ñå‚\LÅĬM¯êÑ·c‰°v1ð¤ëï(é±Ûé“þžì;Ç^bFîFxÀëÞõé?ŸšLªí.—Î7‡÷×Å›Jɾ÷$”îÅg®†ÝÃ^Ó¨r–ÒØ3äoë–¤æ}Ï™Öä€8±­j…í^ÒW|‘,«©4ú/ÆBfjqmNH3–2œ‰G® ‹ØÚãÎ<€>*¿ý¨Û>ù37ߨ}ºƒ‡Dܱ§Muüˆ<ü%¤^4Ùõb!‡ÝV ãÙ/ÞìÛƒBã¡@sÛŒŸè¨( >íÓMW»Y`ÔÝé]ØÙ›»ùÕš!”ÉsÄàQóÊÍ^ï9Ÿ~ï+Ày%çÌ»fËámdóUraž{ ¸~˺Ö/ûPÙj’óSó~wSèÇ.GåŸ"Mšå¾1ÿbJ‰î¶ñDYi XrEèÆ‹šÇòHÜá¹ö"Om>·^Ù×TÓl:ŒªÔ#6<¾´®Œk}Ä4ò(nªÃ‹‹ø{9^µÇÖl=OG–c±ÓøâŸ›ÍÃÏÈ¥ª®òÎÄÿÇO„¤Úâ™h©ù ­^v:h§3 ¢ñ+Ŧ²NÕûðÉ7“Þv¨÷êS-.ì’lYfÖå;*s‘v߉`¹ýS§G‡ÀÛ%õÄ}ÂsxμO5åïÖküD+ÕÎç(PîÒȶÕúý`(1¦ºªjÓJY¥EÌ5o¬k|¶;Rhˆ²@VÚÁ¼€»ßî¶Ûžê>ÆqFÜÑè=¸ r2HÝØq©-ù[:L*YÞPü·ÿoÕ¶÷A˜ß’³îX¶¼@+ÎÍÐJ+r>çŒõfã<²ÖØq`a‹ž¦&KѳcÖ kYã«ö;Ýø¼[E¾‡\ÿEA×:ëµU-Ê÷ϧ!Ÿ¸Œï*«)èªoMiÅ” N&L8Ç·ÙSTЀ›¢ý*>Úb¦@vhœõzûõª×q· H¬Õý²µóõÑ5°Ú6§Ä†.ûôÅn2Œ…‰»¿áÝÀýñyõu,¨ÿ•9´êm õŠ‚f÷“?¬zñù‰*ÖÞùØ×Gžâ ¶T„dTÀú0Büm„;nhS”­jç¸êðêêW°šíþC‰òáP*³×iël=šÍòÿfO9¥¢Ï»jçd¬vïL ›¸4¿jqùÀ—(Þü¨ }Ppû¾Õ² äć^Àíƒ ?~]íã©Ñêu¡Ú m„Þäúp±¿tX^UUØ2¥3³¨B àï}Aìµz\cÛUտǼý¸nño®Ÿ¼að¾Ûìtæ§dÙ¤i9W q3rhìêŸrË#ϰt¸ Ó ÿëðgØ'=ájaŸcœ-nþ¿¬Ló+õæŸç@Ûô¾ú>.ûcôþ`¶>‚bÄNçöó6œ³¬:^•ëy*„¦ð,D¿*XÕí¥@ûÖ½ÕA‰ê¤0ð#¿j<¦+kš¿ñk·XƒBÇ!%ì©uö?>ÙK Fyµ½Á‚Gf}w”PJmAµ,®èJð»<"þ[äP`_›Cïö·Vï£VV V^bŸ7XÞ’ÁW*8Ä•Èã>¶}W}åæ07^•}e¬ÞÔþÜ7üð8‡YKED7ìu(æ9ëÆÎñvCÇt›ïK ríòèãO¡˜O0 nÃfŒ·›+Ʊ¶ž] ¦¶ô'#€Èt°Qx]Ná‚8ê³mJ€Î¥Q˲¾ä¸7~GgÝtZ·€~>1dý\ži sëÓº€f2‡ó^uš«(Ôf„Õ³x,ÀZ5 -è`N3„ëË ;Rs²$NL?¥¸èò®àwí‡Î ¡Ù»a•çoã#‹f³øXaý Ålî¥â¼V§‰ç@:T8SMÙ«m™úÈË"ì|†÷†xÖž7ѧ§Úà óóœ@9ö3nqÕ—Ûx '«µÝc„^1 aV SÐ0ÀLñl–û8&K|èæP…YÀdÂÉr¨ŠH!{üVyϲ¢´FHCpÈ%S JBÂC„!°‚ò…Ñ0L*_è –`†^µÁD2Bu&&Y – HX`@åY d3 04Ø`Ì`!`Fv††À2Y*ÂHk™P‚0µá&@° I†dB™Š NÃ! Â,–Wج’°0„ ,0ˆ†!€a!†!„€!„P¤©¦„‚VŠFH‚¥@À*VYÅ)U[¡††r“¡"@“ 0ŠÂ  Â "ÐÀ 0Á €ªI“ HdÉIØA@I0*N@‰…¾ó\™ÊÃÞù«gëz]c 攀æÎgô^YÉWÞYÆãBÉI ÿþé܃® †G1MzCüÅóEz]Ãy±ìöj~÷­zy¸>DOïZƒçÆhÎèãëÑ®¢ÌyµX{̲\¿è·×¹‹šÉ¸kLöÞ'f˜@Ä å×ÖàfRÀåžU¸kíÊ´^ŸŽ;úR9[,(mCµ˜Õý¬†GfT |€7Büzfqš¥Üžy*P £ÖŠÊ æüÊÆâ=Ø ¸©çêgBº™ß¿}pÄ»g.Ã;¦œktÈøn˜FìuZÛ¼4ô¾í¨PµulôXtDu9Ø>ãã¼1óýgšÒ ;šÁ‰Àæt6Va3@ÂYL²Ò©€§mô›*€ÂûŽãÔÝ6FÙ®%äôÆ^Yê7Æ'øí¿´Xl[ ¡L?yÛ¢ìh0‡0ÂŠŽ²KR€9Ò@ &þb‚²L¦²™9W¨©ºÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ5~7}÷€{Ö»Ü}o¾Ûçjï½é­í{Îå»o ÝëW´ï{±÷ŸkíÛ­Î}—Ž|úöw­zm«»t¼ÜÝÛm×·¯w«½÷Þ«zÛíVîíê¶}ÏŠ¨hš`5110ŒÔƦh#!©ú™6Q“SÓLO £ÀÄɉÑ<# ¦†›Bh›M= À4 ¦z˜4d 4§“I驃HU ÑŠjxО‰¦ÔÀ©þ„Éé0ÃA§ähÅ6šjj~Ñ=2“6¦˜LM=)êl¦ÓÒ ÔÃCCMÐÐi¦…<&“4Òfše6F# ê2f‚2U¨Sц£MOOJŸ“$ýOSh©úž)é©é¢zOIàž§©OjŸª ‘½LCiˆO Ñ£$ÀÓTÿPM¥Oz6™‰OÂjy'šiä`TÞ“3DÔÚz§„Á4Ó#F™HETžTý4ÃI0™ªŸè&4#& A 4ɤlŒMM54õOÈ™OG¨M¦L˜L”ý©¦Sħ੼™©àSda4Ó´TüLTý4§©ûI¦)ú™=)¦Ú&S15B*FC&SÓôÓQ€2I™0i™6“&& €3Ô5=2OL™1ªxML™‰é™äOSi”Ú4dÈžM ¥6õ=¢b4Ñ3Cô‚I(LšLDõ§€R<ÔÆS É=SÌ’<ÛF”õŸ¢žOC)š§µ4Ú“ÓÔl™2§Š{S5OLÓ*<ȧ£j2™$ö¦§¡Šzbeªzj$ñ¤õ=šFHÄޤƉ8Ñ”CÄ>á QIåŒ8~pLð“ QƒÑŠB4cÉ<² ­+‹ÐF‰bÈÂ8ÀÓHÈÃEô‚? È$ü…0ÂŽPß5$~ƒAÿ¾j§¹]ÎØhî-þ›û†©µ¤ÂP×IWñeóB¦o9(sðÒ’©ƒPDÝÖ¸1àÙÕ‚uWò|xžž‰2GD·[žå$nŒ‰Í®¡µýPÄ(ÿ×›|.1ý!§r ý­¨û^^_ð≟`%Ó„¥$¤Q1nŸÚÈrkeGðãqêåÓ lÚú—aÛOóXÓ\EÀûN7zçê J7c‘AÞXóÒ³uŒ¼GÄÂüéêõÇ¢$»þk’™J•íÍ7>™ê3VIÐúßÐwëÒÄÏs2õ´t¿rÓõi+yž-¹ÕÐggvöNß­ÑÂJ›m«Å¤ªg @(16˜DÈ<Ë>xèM˜%B½,Âq$hµBÑŒ# 0np„á0à øÂñ&Ã*‡€Àða8páÁ¶PH œqBƒÀh$ Þ 0(Ò¬bôCÈ‚à|A!F7a²3F”¼ˆa(’@¯- ÈÃŒÙ!$!`D(À€K"0ÈÁJ0YÇ#ãP8HI?B@BÕ0„{¬’ç0”hȤp _,á ã±^Ãów«âbßÿ\ð?3/·(ô'ûŽ ¬Òè~†$ž±ƒ¥ìõ:ÿÓô$$Q£–¾ a‡8páà 8pá†|áðž‰0‚ToÍnSªüJítX ¶ÖË¡oÅÊÚÕUh¿ÌôAôPKÇÝ>)c÷œn™ÑÒZî9wd0%¬ñºÈ4tÒìwLôazì/aû•{ ä²\Ö,Ù%Àe¹dt›Ó·r$â!wÌ\±³dƒ†ÉU²E»^¶.E+0ÂÝ2_턹ú7 ‰dT²U¸g!÷ôpŠÀ²G Á£e¹™ÇÒÜ‘l ‡ŽÁ™Ñx/i¼^N ½“Qïlò5~¤9—b‹Рó3 ןijÙo1Ö'Cº}ÈvõDÉën7aLÃ;í’ û Í%aº‡jZŸµ½ÃÈžGåÙÆì“/{æÚ'ô;‹LbÅ^O8„Ía8þ=PdÐd¬ºÉóã%Œ¹0.‘à @௯+9ƒ­É®â>Kn‚ø÷ˆ šlQŸC•_”ج:´ßÚ·efΣÒû½‹8OãÃvú3y›ïfŽù¾ååúœzÉ––35O0z¢\ª)-[Cƃ#àv|Có¾÷G¦=ÅýTçRôÃÉ Uÿ.2° #x¼êáƒSÊ&ZRƒy¼W¥¾ÑõÃø1o× 5Þ—¿Ö!Ê8¬7Ž)lÈ»Í?7»•>ù™©½AîT½*£ í…‘‘êå=™%q9’bP$KF½ë?aù@£‡;ÜŒ˜ ÔIÅ%kšs…•ÝÞ%§g¢+ã:~õ_ucʱÐöý¬–˳†j¼å;ÑÄæ8x’»†@Ì&a$9„˜LÀ2„ÌdÙ Ì™$æ9„UYUAæsûÍNRræšÒ“ÇÓ‰Zr9hzÉèì/GQ:W.òq%­´n)ò.ëRy™5x„Ð+‚u‹LF‚…Rˆíªf=}ÄLP0<öø›k©ª¸ø½¥ü×°S<Ι—¡Äc;:â¶è¶ÍËuñŸ>C”úJÇ͆{Ò˜þ{]¯y‚“G—×s)»·i€ÁÝ]¥×­ÓQøDDhÇbô–ÚN|wÑÉ,( Ò–3¸w*kCCC¸î º*,X:…²ï*`¾FÉ,"E@áä0Y므.^w½eöY”÷Û`Ýp~ﵺÒ1»‰ÿ3•ÚBÊþoG€}4[îç΃8sW¼¢ö{ÑúM~ i>d7–ÖmëR5ñ‚R‡EÕÄ<ëÿiYF/Îü¸ÚVh`9(øäy>ÂŒ‘#c¼g¡‰Z²bí9Ô¡r 8¨¥›/2³'ïíߨÕJÈ&ž0ï轚acŠýw,˜Á@6ƒ“­&ßêÕq&$nÕ2Ý3¾Í»À½—S[æB¸-½²)e4ï*ZÔð{ Ë 7Å„š¢¬K5ò™¿\)B‡×eëkºòφãÏ°ßØf_08Ð= <‹9dÚž†E­PSUÙÀR_ïî¶¥2¼š€r¸zQ{U].2óš¾1‚Úþ½ö]=;­Ñè”6ÿ£˜uî¥ d㓼hAu݃:(RÈ wã¼¾œi#iç»ûq1;í ´ôÆ4ï!د`DÖ½Ð?Ý<ÃoÐ ùšU¡€%.¿¢ô‰×-I¼DVWË‘'cHãf±Ü70h+¼@‰ö/q7Q=²VÚ›X¸ E£íNø\V†ES‡cE oÏŽÞúx„;õ3²=>E<ò 6ÝëHëÁQ¼EÀrÐ  o˜h¯†]ᶆó0^Ð[˜Š>3(B.;gXßñµ–!Æoz¦‡›AAd‡-?Ä›£':áÏ6“ÛQdµej ½ˆ·âø`ž7X¤=®$‘70)±#êéÿRåÊìNt´dE³žŽœ±/]âVüðÌoî%Á8v*zYWÔÌĨ4í _ ÷°ýVARJ€Î¹IÅSÛýŸüÐ ËÝ,uSzQ4/³ÌkPþ»#q߯ê©òq] ±éŠì¶þ8 ¬ž‘J®¥°’Õüg÷WÒÊúµ˜èŸ:¶osß³mÑß}{³sƒæmaimÇ÷Ì\;¼W (¢Ê~˜<ÿ/öäêü-"ž&‹•Ä¿SkeÉfœÎDÕà ±Hbd…=ò~Tn›úN]e®7ˆ ƒ]Řjx@f¶a†A*!|v´ñnü5l¥ÕÚó•oáxsЉx-ÌÑ&d£mî )ÿÔSÆÖZ.Ж*À9‘Ý4¸©_Uk{fŸÇƒž‘X ZNßF.‹ï#SžÆá;M‡X·pš¯:-ôEz ¾ÒôYÔ¶ò!¨öªKäJÅ« ìCòHƒ[´Ü)¸E§ιxñ´DŸP´Šw€éBA«ØùAcže¼FßΊ«$–»ZôÊ̽ý½²ÆùB²•0‘ ÝÙËúBü_QÖBféÎÃGu†Ÿ¤L÷¯ÄýÁÌÄÚ`qÙ¸ õ¹á®±"œrÓK@Ür™ª‡ľaTlº\¶¶S;ösëoÇzM/Qv®¸V.IÂ"b2#&È£D\êƒ9¥h´‚®Ëo­ÚÝ}¶¹¾X¢;Fš‰ŒwB+p¢Ñ»NRÎ;ûú¶->ŠÓŒQ4^ˆšxs®ÝИøír‡Âþ¨anÒ˧VÔÁúÛÜ#–Xàue7I 4È‘ߟ–ô­––lŒ™ ³•³»Às†õV»ªÊ×®Õá=FGB3˜°õŒ:¯Ôþ7&²»ž'ú ½ýè~\à:̯ñM /kà±0x4ÓJsºå{É;ú‚øFZ mÏãÓBQa$ÛæCš¬Í~™¿KúŠàh®šs «]†£0^‚Ž·öœ”í;•µ;å_YÚpA»z¾KÕ{ˆxIyÐø*ÈD‰W}ß~ö/0•·}þt{ú6ß!ü*Zp`aãÒÙÔ=÷¨¢vç!µªùRg²<“²,ŒlwRÄ…¦`W0>ÿŸ«F> mÜ÷ãÛ“/Æ©sª¤|ð£!ãµæOoNnz’ÜÄ;±­TŸ6ù“„“lÑÜ¿˜ã_‘6º‹îm滵}9*YAÍ®µ…øéWÜÚ/ü¯êi°†™‹`Þý ôLM8‹lU>Ø2ý=ìù³ÚlG¥VÜÅK´PXÕŒeöû÷5ް*ê‚­5«ÑµÇá%`;¹ ækYoïNOØ[ŒˆÅ›oöÎÏvuñf* LbóŸîîùº (TK /¸Šwa3EGé÷æÃ?òªt¥p’eÞ¼HÂÜžk`|_Ô ·n÷KXô«½ì7ƒû^ô˜¯kH^àtiØ3U˜"ôUHâe'Àww°Wƒ¸Øß¢G^×$=D^¤#ÿŽÙ•l›7?4c<²0äÚÏi„ʪ¼{fÞKÚï\0ì1ÿFvøá\ê Bççν´H^»F&ª§ó +?ÊÑ9M]Ëq[V>%‰EϦnG5øt¯>XaŒ:R¯a_$}tmë¯bæØ|e= *+¬±Ñtðh;4bs\ [Uk÷%q™¶Åv‘Ú68TÖôUÎéêRöp,Üiå ‹Ü¿³ßž¹Â{büêz©à’”Þƒúä¿úÄ\?eÕÿ ]Uµ:<+™g7 '2ëÀê‹ÏÞé…!’87?’ƒÕï( eÒU­ç„Å¿âhAzºí]ñrŸŽëGN*]Ýg4ß8aèÛŒT«+Qìíðu3¦-X£là^q³v=fûúOÄt4€¶Áì ΄>Wêß^ƒ˜Z Žä^îgc™‚ß'ê_’{Ë,%û®Ãî‘#îÎ ©-pç#V2®ô²Œ„OQ¤îùU Á ÏXý~îf–­®Il~2nS³d»fQ RðÈÍÁž \ûù’ù½kw÷R‘Õ_† ß]Ø>µõÁ.‚uºÊ¨Ü”í?¤f ¤•ß]mÛ{ûh¢iºBÿ×yþ±‰=,L­Ñ—Zª,–3>Ép‹©U …ÊyóË;îýëÐ<%Ö Ç÷ è@ Á¬( d§ °Ù ùÞ†"꼯‡dÙüšRÈŠRíìXÍ™Ví¹9:h©³Ù¹ÚRK¶†;ó(qW"%•x’ÑÝr-. 51Y:8‰EyÑZ¸ºgF–—¿„6Õ´ÏÕ]¡\:¼y‡|ô`±TòI®{w+I7¶¨@m]ŸÂ°×Pöd<í–Ÿ_+êßyçá, fì¡ÊíA>«œù)O&CŒPáÚ¸¨×@ëqžË”7»‰ñÕWÀc²‡ÜAQØÓN'à'g­Ù?OG™:ÖAŠiŸ‘,@šm ‹öC£±‹3€:Äên.íßžm,øqfÙßüí1pÞ…åå~`Tðb[gD ]•07êž ŒŠ6â¤7*€“ÀÍVœtg‚žÎ™çØã •«»åªüqÅß\é5¹,çØBf©/òØXrý†!ð>ÈBâúz݇„e-û[ Çͬ³fQãþ²~ËÅõÌ…ÃÁÍϱA7ê^DúZ^Ð4»rLûÔ:ã ðî¬èKy²‹ê"+ˆM¨:ñ÷9ˆýl~µÅ¦`uæª÷=“ßX͸e0ÐÛëyñ:ÿnÀËùZ²×Àêô.<Ó™épù9û¦4ôúˆog׳3ôX9Ê  dÖî„ÂÈL ‘ts—0Òl;š;Žž&E«ŽVw9ª8°^‹^ëµEÎM“ÓÞœ¬‚çXáè÷ú„KrFfcÌŒÀ!è ƒ@ܘ“Á´Å'—š¬ÎóÓ¦ùÁLSNãcãa…aY(™€ à(ƒ‚— W²óíaðÆ å wu?kcŒçMbÔ¬¶ÿ?gÅ?PXµodP8˜)rðc3…E_!P‚ tËlÐÑ© ðqo~<á(ä28r|øÁ ”J[f• žN†m…Í<ÅËüÐU«e›á4OÒôb”(ÂDp¥³òYC0&jå÷_Á’«ëãù;ßÁ7SæÛØmã«Û¿ÁÖnôÑP|0½ óξˆò`´«ÚEæïÞOÊÉä~wGí--Ê‚˜Óƒ‡d´>²¾@ùåpztYJó®[LDÀ]±D=`}µ¿tD w«·Àz÷!*nÄš(m­e “‘¤óœ{¶Ò²ÝC§5©JÈ~b ßpsbÎ C¶~]@ÿa¿âûÂÃÐyE©Ý#ƒš¸'²5¸£þÝ£w¡´¸Ç@ïÑŒrcý©w&]~m­‘ ›&‘Â]¿ØÌ)ýóüfò¡Aèõþy¼ä^à’-¹ý ·W€¦Ÿfç‘l‡Ósãè ú™lz˼¥^œZëÎ^miŽÞžjJVµ«7bG¢59ôrÓzî CˆÑiÞ®_y³íoö‚2Aæý»O†“K~¦Ý“FËã]=à‹lè›ÁjÀO…£àãw$†fÆa©†È2_ÏMHଯÆÜ¦ü r¡ºô¾(ï4ÐÇ­$^SÊ¡*ù3*ÑïÅfsÖ‡CÈo./M6¿}Ÿø œA—èHµœ ?ʳ˜ÝBâ^¡HQ>’À4–¸ òèT<+ˆõì`«—7‰›Ä©£p 'G–Ä¢–¥#`NA3¶óæòÂ’çÛ}¤#Æ‘ë®iÉtmÁæãìàQ]Ò$£:ÀÉ7å²4¥89Uë\~˜à³³ßìÍÅJ²Ç}§Aì,;ÿÁïÃuµ,mÝøÞÒ)öxŠb³g2T¡Îl‚ÏpFa{…éb€Äu E[Ϲ¶jáT [ɶ¥s—Öê*Ãj-ªš?Õñ¥2HzOxÀ b†X¥—o‹Ž+ÛK¹%´<ó°ã¢ÊãY±Nçi¢U °êñ±7}ªžeu¯7‰á°´Ú"Z†‘Í¿¸Wà‚¬‘,°€~xÞøp^Ég…Vpå+~$ûTDUkéÍÅŒA³rZ­·Ý{xeº/æYO©ìνr7ÈÇÜß3 ML3ÚKñ/R|izA‰‹fB¸íÿgý +ˆý¤šÞM1¡Y¿’/þƒå6*7KOÇ4XßXÒ£\&‰ï¯%J)8ßë[ù#Ç’]zŒw¹|·M]E@ n䟩Éí±BµÇç$N@ÂÝéAéE¤+jYžV=Õ±Ú²Væ%8"Ñ[§êfI^TÙïf§nhÔ†óíÖó ͯ>Bç`w²ß&¡¥)î=õ°—~ CbÍN}ûÒmg$h¬Èç{üÚÔ<Ä?:‘P·6P¨ZâØ'N(ÆNó3§Rñ®1;7 ³:…E“ß~ºÛb;dS´‚u5ŽêåÉÌú?Á’öÂ^9"ÿía<ò{ê¥[÷jÁWí3!kÚ`c ›¤è\HÒçñü½ AòßãûuÖ­fóècGÉVHšIjGŽ’Ø×“Ô¯S‡Æ56;@=  ¤ÅÍÂ'ÌÀr/ß{°UÔê˜ýöïAÃÇ@ºCMnA†Ÿ¹ËϳoFÎZ ÃȺ¶ /»àlbŒ=+Ô¸‘·½_f#àM¦¾ËX±˜Ë'“‡!a%Àç/·s¸"¢9 ŠA¤&Ųi=÷ü6»8.!^;î;t%/ëß•P½†1"oÛædÜutÿÐ|L5nJ¼Á>•_#gqI.mlýEˆ{Ô”£Rãˆ#8´b èvI%Áò }–•§§óäÎ…a£ÞK£zW›9¥ãJ(Ñï˜jöm¬O«sn¨½ ÇETehåO7ßä%'ÜUb¢£X$ø»Üó7Gy€B?¯ GÍËêÄ8ÚÄFg0D7^I|gs©1 }_‰+gÝÁŸd-ióy=3£j‚>Ãë§;ä]!Ýþd{ Tÿ¸Únç ëýÍÉ‘D SÅÒAÑl íõÌ{Ø@íKrùtãäM33+A\ѾRcÿh®y̘ŽB7ù>‰ÏU,‰“"û%)UóÖàcqùך'úÓn=Á¢ª /ü±Œ `<!ë `8€À&ãrã„èV"Vvucô³d? "gÚ£Æ/`×rùQìUyÑÅšMŒgÌX–O›Ô<|;,&Ã×'n°ClãA+B<À柛_" ­]F¹-ÝŽ£ˆ z§yß-±[¿º›ÂÕò:&û7f÷vOcvÂoŸ‡,qÁ°M¯Sm eÞÔT±{ËS™Uö0œV¼½èåøß±BXÚ¦PE*ïÃКlx´µôNoébì.㎫ÊÚó¶o *EcîM:Ò&MpÐÙêÙvWòk•¡­&±üîš<8¦ݯ‘ùIÇòº-Aù‘èaô9cVSæÄo†cKÇOõkó'}~Ã’Oú^›9˜I?‚×Å›Õ nÅy•MßW]5=ÓòÊGÛ4õ‡%è‘ô#ªq<Èl,Í º{¡‡ioþ´[í:…¢çFÌqê_©‚“_eæ´ýe%ûQ¡¶±ÃS;T ³z¶‹¬>®u¡²4yDAï*ã&äë=a Êç¾jщ%'öóZJ´œÿÀr#îNÇXÙ¡¯ÄvŒKª2œ¦ êKLzížt‹å yW—>}—MçÉàÀî®ch*f˜›É¡5Åco¼B œÛ¶à²½5ÈYd¥äv!NvOع±ÅýМt@Á”6 Ô§]áŽNßÒì_ÌŒ›I6¨Õšõ’έs[c×àé­JF9‚wärz&Ï-eQž¨”YiÇ\1!@FQY …½"…ONkt'?ÃGæÕÙ«`o¬}`¥;QÄ¢ú|Æâ€!èŸnM®Î' a[¨2æ’šÒÌ‚¤9¨u½ë µæþ¿ _~Ñð Þf"®Þ ¼ä_M2¬TøÕO_†9Я8É­®R‡QÊz*ØÊc#ÛÈaLý"­ÔHEðuNIöAœn‚@›Y'Ò–‘_ç-ÏB<ùúã+îöÛ/cœ+é­ñASÀêÆt +Ëi‘éÜÊÃÌÛk¬8ïã¾Õv‡¹n|zqhmV¾¢B?wɇ+F¶ÔfÈ!PœK9ø‡ Ïü«ï›RWr¯ð´¿-By2PÂ'§7‡¼œZÈ9K¶]Ï16Öp¶}j³-ÆC^s=ªCÐöy.%lã5LŠñúb$s½m÷¯ä˜AC„˜±¼€™ÝÏFcNÂT¦©wR§ˆÐÔ¯@o×í¨À© ýÑ@wdÓŒ†/$EyD—¡¨Øå8çrá†jvj¹§‡@IviäËw;å`†Á®©BüŽ[mÎõá€OU  ´òAòElo<¬!áwß[±¡ö½Ú÷ ° áð.ñKz×6|ŠSáFMÐsÓ‡ªé2HÃqg635_D®}ùò«ÙÙ`R^çÌ:´>wª[c~N:¨~bo­`+Ip ÃÃ4:tQðEP±S©yáñÜ‹Õ Ê'=É^úE|‡´´0Ëç÷PÏBp/ͱY1'oÑÓ{^½Ó¸èo ìq€?´„¸°G{Þ+0¬^rãì¤,ÏŸ “æ¸ñÀP^+a§ÝÁŸà«×ëq …”J(¾ú«a/¶W—éY¢å&ųÒSÏSh9ò/^æa¥„œŽýÖ“ÙÊl%‰Ëo«HÑZebíÒà›ó­iQð>ÿ6GlÛuJkÍýèÏè°šêÑȦ-3Õ”?FE™–r$†F2Û¥izÄ•»qø—9=#ê=…k “µ çm˜½.´jÑlc”:7dOã‹ú'¯1=·ðK#Ý*™¬÷šò{—ßs«EûæMõ¢UFÄ)?ÁÑ7Þ*øÀ«3܆~µ×C­~ 8Ô\ZrW?‡—·^Îà9Œcù:¶ÊHã²Q{¨ÝD{\©‡<¡ â."èb´43­ Ñ~P-ýÚë±Ä/¹ï lB׿ûŒ]ëtÌáĽ²€Uà5] Ê•fœç¤T¥Ïx7‹Ge ޝ.U6÷½]@èW‰ÂŠNVUÒ7oÕ­áßø¹³÷;>Ú8£:«^Ç8Î9…ZæxuãYmR‚¦õ^Ηºx‚M‹UÂBÑ y¹’—*^~ÙcUnÓf­¯/ ó¥ôÛCóë„–æÏÓ%ÓkXûQçÕ£³G\Gõ’Uâtïÿ›mËT ä†ÿÞ=ÂGðþ„×ô/ÖS²¼¿›ÃˆþäÒõüÁàé5ThX·ýÄÇe1ºH ä‘bWŸË-`öThòM$ðð÷½™PKYÌúu§“{dz{=jEsùÂSüJPÇÙNd7×°g´føÚF8¥8Ü.«¯r-~Å_¹ôt‰¸7pþ³òen2¹bRi_f0Ág7ªÍc¥ø™\_ƒ]ºPAoYÀ„KèŸñù¹šZf 2}¦ zžúÿ‘7¼ýN.C-rFÿ'4ô/œwúc5• ˆåcÇã+ÍÛþëÙ|ŠÿéôIÊp±ãø´óSœ$n›íÕîgú_|‰|{çHOd‹sŠÿ•óu—Ðò@]ܶø¨\ærî©…0 ¨5v©7²T1þGY­¹5߆Oêf!Pò§_ª¡aåp+š ±dªw¡Ü/eÙ>…¡ëÅÞ†²±{87µ?ÎŤÕhJl‹ÛÛ¸ÑgžKV:i´&ÇÈï…ª“'×€UU7Y鲎JÁÐ9$à\ZE– 6´S?„–÷û†žZãøÄÃ+yB+}–º—TPR±“^7©r¯d1½ÔÙåSÛIÆð­$ßi³x2ã=¥>©¨ù=PÃ@5&ùgWÀ>“Ë&‘–3¸¹x1o‘¡߾׳q|Ê·Ð{; ‘úhÖ¹ jÅ?“ÌÉäíß¶íQ_œ~pj$•dgŠèÍ–È÷Û]É’Â÷Wú%çN9+[³{6D0¸ kU)"MŒÚ›ÊѨk5sä(¯NCÛf’B)¯—yçmò3b4A[ätýkŽuGÞƒ%ȉ1ó~|Ö×^Æi¦-Øš‡DÙDo$õ_Åêg^\¢Ÿh¬¬»m¨è½æ>Da–|/'“XKDÄH†ïØ‹R¢˜Õ&¬¿Ú:ÓÍ:1úßÖ¿zoçßÑÚ-ÂÍÚC¹qº^¥x.§¥n[“ÈsÄîuÍ+l¿ä¥+löuâ~/pß |qgŽ]Ûv8PHÖs~YÆÞ”U2›œ·ú™ÐÛ=Äc¹™œDÅe¦Æñ£Ó_YÜÞàö|K‡,d¬«[VZ;iݹù1ÿ½î¦K3´Älcõ±o$(÷ÿ¯aFºæi×À½‘[¬hļ;ed¬³Š´JÕ3ý4Žo®µ¾êÛæ´2ùÉ«ö‡3ÈêÚu¥YRaš6¦X¼ž±¦" ¢'‡Àp44Ä߇æP 0ƒE`N˜h,f1VÄLÄ?s Ò¦ÌzѤ48Ô µëD´ qvHDyŒ#FÎÐü„?{@üÛ$p½¶ FŠöGsdPnõ˜ß½9r@…Ò‹Q˜CÆ€UUQC: ¬0$ í.÷Xù•÷¶ÿÅ ¡¼˜2S\À/4! á‹nID@z¼FóO¾\ÆqQ@Ê0`tŒ1‰éLŠrÌs™1o‚ ¸@h®€UªÂ”Í!ì¿ÒþögÕÈIa²8Îè}[&D1A’i¡•`g[ Ø@y ‡¾ó¸î^!²bœ`'djèjá*ƒb Ô¬´4·díTïÓ¢°)â !éäñz!ˆ¸ Ü +Ì`S—ä„ aÊ0c`Ài²áDÏ3ÌZÄ Œl “0°¦>4„.N…%î™Pó_‡ÊhN쇹HÞ=ÒH¼zL/RÀ™«y+Pú§ä(ìOâh–s}6zb–EE(»±Ä¶ æMáª1 Âô€ó!ä·ªHÂBŸ.‚€ôb¤A¦þŸÒ#=é@#ëedSP@à 㿦ñ¿žXrà^@ ÷&æm¢\§hoÇÂR1S–Þ<C¤:Àì¥Ú @:¸å{#¡ßNYÉ€ê —™JNÑJ#ÒáÂ‡Ú ¼èA=YÒ§2Æ­°4©Ðh r#cX\ó À¶>ɨBñ ðKœíG{Žsž7Wæš~§D9¸:ÂÌÍg j1aF³v$Sf$l›e5ÁL6†!ó‘ï”+\˜“#ŘüðM“¤íˆ,Ú.Ûc1ÁöØê›ý‡sñ øS,3(cÔ8@öf}ï.ì5&|ÊŸ+sê§Ã@Ѹ) ‘ü…£Š›yc x ô6a¼mP±Ï»þ’Ï× Eh´1GŽvG¶nŠoºü!‹.§ \Old03ã¨7&lÍM ePçë%¿>q ñƒ×§¶7HÒhp›ñ˜yóÒç}h2'l¬G–ªù*ÂlÇLEØõò þ‹CêÜDÌ·>±‰c8y œaNL‡0F›Ü ›¹bͤ”¼*ò¶8¹tNÕú¢ x©mFM³KJdÓµjçtü§š%WÌzwÑŸ½F}Çž|-´gÔ¿<Åz¦2Ãq¶ÇÓ¦†±„´´©–¾¾ iW ~YÉr~u]1¸ñèYnØDraEù°ÿp*hˆ}Xª ƒùßÌr.3jCÌÃ'Ö4á¼âPŸlÃog„Nõ›z Ôå/ù¬Ê1‰ïÂ]´/ÄßmÁb·†Ó~Û`úMÍÐìšû#óˆBœW¹!Šg¬kÞXjLß m ?ƒcÀ=cqœ=“ \ÞmÐ2b—Š_A‰ |–bQ{“q¹ØD‘nêðÇeŸ›…ì½®\EÅΑ¦LÚ²óôæLÃO³Ä¾âœH·ë~BàæØùL°J·Ü{|ñš ú¥ Õ ½6z=y›QéF\M;úûŇ¹>y˜?7`tä=DøâŸéòŠ0 ‚yÃÎѱ€ "1†ŒîÊ6¥œzνöš­luZ…œPçÊÄÓÌñÄÕIòãÖ>ñPÿR E¤a噡AP»”êt¶–“O(:ódODNù³Yfï \-†ã€=]å®­µ¼¬—^p wE÷ŸYÿ2ôÆqoâÅÚlŽÑ͹Šk\§avK÷aÖ¥ÆîŸ]¶0¹ÄPrÄ ¬ÓõmäþéEƒLqŸÓx ®µž»¬?¤v›²9 ®è5q”Åí¡ðû¢œlpñ§îŸ­¦øçRþ»ây #ôÂ6ˆB‚`†K!{@‚ûvÈ€Ä\…å!­ö!àPD¼Ô¿¡‰·Û)ÂYr¡qD8 (Eg«;ö|tÙ ¨:Ü©i.:6ÔŽ w4Ÿ „‹xÐ/^Øß}ºañÐ@oÃä[$±J˜\zö0û‘¸y³n )lbÁ°š¹ˆ=™¹O*@!ÉĈ\,ZcDtЄqê·S(naµ!cwÌ6lQ•†dúű<§‚fÚœWG§5[”XRÌ™ó½4B/USŸR(ÐAzj/í¿´‚^@=¨- n¼¼AëÔ®Š]й"êÏ[ÅM—%#ÕL±e»ÜÛs4¡’³B^”e}¿hg „bTÁÉi?Ò"eé?ë4aX är¼%©Ç¥±š§”Ïãlzª[š§q0´"NŒ¯É@D©€zoºW‘¼ˆŸ('G¯F¬‰tž®„«è x«Àhþ‚xyóP~w_„Å`t*:nvÿ¬ æ•>³ã#»E¿Âª üÀš¨BQÒícˆ™€T¡-0³ÑqC,_|Aуó¶ºB¯Â Κú¸Û«¼¼a²0‰ 0DðH"çu‘«Ä+@g.s†åíPéÇrPëma$lØÁB˜ø,Š̀:¢&5¬¸Àiœ“Ÿ”ÔÅIõH_ª€N°Ü¹·”—oD_«o5Ó÷u ív€ÿñÆ€H2 ¾b ¡" "2I@’„&ËPvÑè§CµÏq3ŸZá»V°‹ Lƒ”óÅÿõ}¢ãÓ@öcÿŠ¢ ðt†nþÒì°4äÙ|)Zþ!à.—d/ÎŽêa»LP½ÐÜßÖø¯L&`èÇG]ÐcÍpÅòßkW£ð,‰UÕŽÐ;:pÃÅ.ßOÕÌ­÷ƹ=«ðm#Ss͈m, ð2E{DÂR™¬‚%[ï4¿L‘'¼©KIîg_VmO‰Y å¶Hz `ÐQŒ4²Q@šjÁÝ 0Þ$Ì! Ê Æ\+ –ŽHß¼kˆHŠ–W†B®AZ…‹)ÒÈPz~&œè?dÁ¼ ”Xt“Îužq pzo3€Ò„ 8”wÅó—-yꉈëØíÕ2a â|înYÍ/UÙŽp½k\ ”L dþn²àL „¸ —"QTË4l;­ –'C°H¸0 SF«•IJKT-dHЪpÄȳ·‚©J.’fa\nEN§ #ÚW"2:ðtXž£Fqó§éÐu; ÑšˆˆQ%†³T·¿õnØÝÙM•RHðrL…­i¤Œ˜;V«9s rÔ뤘,#P¯˜˜9¢(PæS"f\»ûX+/„YÈãŽÕ°a¸·Gp‚„Y•´A y€8ÄéÅ[RýÅ‹ ‚ÝéÊönKr«¶@ðók1iݵ‡½y!$”¸SR$èRŒ‰¬ óªA¤XÆŽ­À‹-¡q8GètCyîÁà·ëÛì¶G^&éÍ‘û~>õHºÒi+2o´Xõ&M†lGÜfË9åKd ºôeÅa.H»—²2D„¿ëð YSÞPÞ!¼9$ ¼fÓвt¡½‚¹åNÐ1a¼”ààÃ’Z÷Å=Â]€t ý‹{taÃÞç ª¦ª|Ѧ§¼2Çd¹Ãl,HBçíî0j&Ôv]k÷5N‰°§k¬´²$x*xôiGB^V+ÓÇ5ƱuCV›ïf¹]ù ˆ‡g!h¿»›P‚º©Rñ¤À-e5«:ú‹¯¢$ë4…j¶KµJ_~îÉ‚iò_N“¡í¿Yè•{ÔiõÑÈ6šO4g•ž9W?øºƒ®ÈÙÒ⫾¸n2-kôdBnÒKxÞKsã]õ‹ßkçrŸ˜LÁé€f]Lkϧn—Y¸ ú†…dH¼ÿ(ît"blp¤Ü#âè|ìiÈk^«G!•îô*8·xi?©w ÷E"çgí«÷w¸÷ñœ¸ºômS‚“‘íq •ýîÎBöK+æ?Lj½ °3ª´”O>Œ.Gù÷Rk7Y¨ú‘ÆÄ ”¬ 7áçä |àÁªùÂ'Z¦½Eç·Va¯Êö@Àªôt ,ôp”‘ep¼Ç²àÂÛh~Ÿ`‡(.߬yÇ™…x¹9¹ù1Ãkk#2%)G9¨ýÇø”V{°YèÙ’ót™‚%ÄNjˆ±wÐ†ÌØ@Ö“êé7 ˆœR\4Aþâƒkâ§`ïÐpá°ÀT9èh*«Ö°iZ…žÍ ”Ð ge3­2HsjHGöCdP'¦ÎuºÃÛ{®A€Ñ£_íœÃÝ¥Š°‹/ž8³ˆPÍ-ªjšR’‰ ç 2s‰¯@éêDûñ¸ *á¸ýöøÎGŽ_åZ^e,€I “º´ŒIˆòKé:=—xÅé=U=áªÎ5¦´Ëj&–U\.YÞ­-®yDFF˜]GŒ(ò$0£­uSZO?}©î—9xÕ& ?ÿ©`þØŒ  ¼ $ ‘Aþ˜laà·kÜùÎÁaôÀhH1½vL²€C4—a`ú áÎ1Ãʧ£RƒÞ2n1ÒB0ÛL³ Bßx€Ù´#Þ”4æIÇ!~« ÛˆAË„ CTT¸æDÌ@ÏçZ(5»ó®Ò uM× °Æ6¦¢äS"j ðVo"Ù“0 H!4}0ÏÀ¦C(布K{‰ÝˆUAvªHùøS‚ßö%E'³&j›pÿ/zg·¹Ò¼Q•ý¡Œó‰§8Ñï½!‘=1]6¾‘lá祘‚úgƒ½ÑR§»=Œû©Ðá¦Ú~-’ðXF&àùLûù¿öAA˜ƒJ!˜î ±è ¨2ôa‚Cœ×½»0P¤—,àcè˜' ³ "Ð)3‡¾9@sÅ¿ÏjƒMØs úÍ«ÊB^% €$Õ ¢@ÁY‰Œñƒº’`D–,ÙF{«GJH›V™95B'Ä…_œß(¾yÎa;6\ ÷5ìô:øSý­Êl ˆ<àsmñ@Þ9‘!þOÍèÛ¸TÁNX%]TJõD¬åLõtÀ81Ûu>‹qVàÌš®½ôìh4 ˆ@È{?fzý5¡cW¦’žè1ð¼~1Z‚{YºeâÉ©YE­¥3ƒ6…ø¶ˆ"À†™íý·Ë¼[ƒCKúm5öùa¸]gPáí1ío1âÎΜH4åÑ”œ‹g!žûy9#H^tµ™²ÌŒÉΓ„mxÓ9ã_¥ €hˆ$Úœ_ß™?L+ ZçG¼õ;?#VÒC^'Ê`Kæ$—;÷-{ùôµMÁþï×þ}”àß4褻6åœ0UtQjÂAÄqÚøÀž5c™b°5$…@qmAœgºO+®wÏ~À³á¸ÉÂü2,á £ii“¯MtO7¡ÄÓà£@—Qè•Ë2pÜÀ bÄ!j[€«òCЕ(Ì—Ê yÓ‹@·Ùü¨“£Ñìæp14_6[ë°\65QF‰q¤ˆók>¡ ‚-þx@2É¿×\[Õ]Æä•JÈŠPA«;ÝÉýoOè:Ý-žÒ+4À¨e±€ V‚ÆQ–1¢5k "kÝLÛ_dØÁV¹’¡$ =ŠBZ­½qäNå n©®`JM—oXIˆd ú,‹è:ªT8–æªØ¼ýæº÷Ö*6gº×°Ä=óÑÕhþÉ=áââI@qMb@@ã¹ÔŠd „i íxÝi»^ÊóªTë!UHfb–m•ˆ–JäóÉp ۜꩂ+üy<ÿ «ì@\°àyÀˆD€0ˆüh§lj±8§8"߃uNÕõ‚ò8ýSiÒ)£Ë‹/»|öК*LšÈzÌl·ÀU•¼õ‰6ÐFÊVÉeÍqº&¦HL¿UË…»N½-¥Åñ  ƒ~qF+86¶½ýˆ JJÍ2¬k·©‡ÇÜÅ”ÌÅ>¿qùȆŒr~jòß:øw¿¯>¨—Âñ¦*°‘ë«r,/ç•Ù»t(-´.Y¹Öh¾ —ï³¶÷¡¥$’@I$’I#¢-JŠ„¼Jå(B¤‚È’%E^{Òéõ§Î|>Æžãåî6FH *€@oBÏð;=ÍŒ+Lœ«¦z"`²Ý:š‡|Bp¹šgŸ¨e^qÏ-]zÊÍtÙáëGoàçÞN—§Ð«”ÕƒÞXoظ}oÈêßH4'Üpr@ÞFÖÜÀUåõĦì¥ñSOŠ3Ÿ¶Ê½èŬ ÅTY4 /¥ô  2à#Ëp'i‚­âF'©G÷aÊréÆ; z,¦¡âž$tT°œû˜»A—9ið|ƒý¯.ÕmNIJ@`èkô¢å]ãu¼bÆÔ§.‹ê‰Aoö@ôàB´R‚U Þ ø¯ç¥Dµe°0­ýž÷$4²ÁÆ(jÀ>QçŸ`›ŒÂÿßhzò€\kª¶]ÞqKã§áÄ,qãFÐkÅšh™’ºiWwn‰.@mÓåN±=ÅŠ8°Ê@—ñÀzXDÅ•Qèç¤ÊˆVÔUj+/mV™H!&£Ö³ìGÚŒÒøâ×ùB¨1aôL°)-W¸Ñ!"ÒÖ—{.©&–fpOWv›ÿ|¹p…dçÉ£x&Ö!»L­1WÌ7Ú?!¯”L¬$GpæMRø†¬ŒV°*ÂidÝíl «K¡›Þ§€Ù‡FËÓ@;­‹È0£5h)èÒ7RБˆ1<2ÜÞç)³‚ø?D S Ϻ¡ó9‡2bgŸBó«Î€öüVÌ»rxixôœ †dÔ%¸9æ|SlæFåmM &M' ß9ÈfQä@¹édˆB`Ða˜ªWvÀA5:7„n™‰Ú\Åkâ¿™·¹wïµ’«tÀ5 i®†é°Íê•v½[à8e.ka”j±¦¿B)2æ¥À¸“J¤Ç|By;àÜ è©’é¸ÄúEÍ÷¼`9éC%Ž$=2Ûn`t›K–‡Ow°¡‘ØHQ° PBøÍçdt°ä7ÝZÈÀ„²!±WtvAJ´µK(êš^ê=L‚ÜÉ„+Htt9α—ehAú™lÔ/IR‹c8ô×bÐ@D}lç»-„³Ah ,‰õDHšT^ÊF±Ó$6¹M³ù“…´# ZS@S5á§8áÙs~®IOÇ6ÓOº"÷Ƙ¬œ¸³a\S .!}þ¦ÜÈw á:+>-×#ï+f×PG}5åþ4ˆ®Tsº„D²•åO:SÌE|ì²–bôíâuÖlí°n“É]Jjz;ÔLÐRsqÓYNïªÜS|*<Ž$Löw»Öz³ìÌ6™4!ö<ƒ4ÎöòÖ YqU¸Ó6ûm´-‡Ùn>§ïÚ_ɘ¡–2$5=‘[Ú8 ü"@r¼“‚ÔƒrÓ<ù ¾Ð ›¼‰`?+ë¨,|[¨ÀM=y†=Éur´;¯f·înÙôgŸubù‡3”ááQéJ Ö¿÷­sÄúSÐ7CÅùÔZЦ&î| ü uæ  Ò=x‘/u4”é RC|ãB‹$?õ¨k–˜PSÌ„Þ@`ô%‹Û^-ˆóûZñ`x3ÜFþZÏ*%ˆ‰øðuäFÌ ×o6Éû>ãíaÈDО 5 tbÄ÷sNÃÉn§åsËê÷!äÌ÷Ñêß•Ñ=gU`XœM«99ïJ”^?ào&+°s V^3ÑT|îtŸ®câªÉÔé ¶Gñ„€Ó§ݹ9u€$MªJX"íº¤àcô4Mê›#勒¬lÕ#´˜^‘nÀq”Ùç‘ì_ˆÀY*0,xï!6óÔΩ¸½‡°Ê•ôÅjáõ½K©÷Þà'â?ö5M¶’+ƒÛª `ñ¬å¨¦ü†"¦ŽSÁBo¹€Ô¾4^õ’”?’˜vÓæ?qk_75p¡íÇ|–÷¤2.Öêr¦ý»4±ˆ 4ªœ¢ŠA—E»‡®Jã|l“’÷ÌQ§É†pqC·Xå}ûvþ&ƒæ6åzH‡4LL‘ŠKhX ´K0c*ÎÉãZf+M 8XOY{Áˆö¼¼„‘•VÑëܘØù3|ä9™ÖüzôàÇœƒ«¹höƒÜJ£XßOŽï{’™3½ì™‡Ó`oÌ€ùYòC.bI”ÆÛ¥²fÂE;³†U‚çwýá[/UÚ­ê1@P'ýÈ¿™,¶RØn-~šÄúpB\ åÇ/Ì^Ie«"bqõÁ™ õF–¹c›Ó+l¡ >Ë:ð5§1ƒñÚaMjþKîM'Ÿ? ½™Ó›nò‡6¡Å¥Xï@ìHAƒÈÈŒ0TïÖÆì›<¡°þlþE¹Ù5`ÿm.FèÁ‹VWæVÕQØÒh‘i4ªγª@¼‡ òy7“\œYÐ*'âñÍ™7¥ëô«˜Ž‹õ®ßËdÊ1ƒòÎ0ù‡=3xceˆ‚;¾ ªÏ©ä”Må܆ó<Tr°VO‡E`"µTÀu˜8©j§ïcóÃܽí‡POv#N‰%b‡„ávHvé’3×SC â,G®£® A„ =48 BI!óëõKIÞm¶ë—Däàmc©ß¾Æ]ËUÅB@¨{˜‡¶ƒ’Á2SÄŽj ôš«ZI'{8=5fÏú±·§Jw]Ö²ÕöÀ`›™šbuW s¬3Vºº‹zÊLÃÂ2Ω ¢½Í®?÷H„1M¢R]ãàM÷¯¹"L–%“Âû‘MS4ÓÍðîJsûL»Uê³5æVLùª/Í<««ö* •Ñ"VÞo©…;…0LZ¿P Dè™C2u:4õÎØé´+hí¨l?”{À© ødUñ¬ÃÈ9‰ ó’Éå§ù¾€ld T˜žW<.8e`Š™-ö]»ö°˜Œ¼a-PF îZ`Zð)®àC' [ЕҳW§™y·+³¯ trn¤z†cÌxÞÑÒšR6±¿Xl!" HtZºÁîª7¥*ˆz hÐòo–ÒÁ¡ùvy:ÐC™ Nèzö:ù­‰ñã‡#ªéŸGÛËõR¯ßoÔ_}ç¼±kUäµðþ[ªà=90µU­’{N°¿TjT mÏà˜׋N¾êS¥¢a ¢Ü0 Êî9²XCÏ„à‹ß©±î7Œ AîÓ—-û‹²ýøâ vÌtô¼ÂT¤´­*Rš–©ûnjϕ¯.+IüψÁ+¦çʨØ6zÓ¥iž4pjõ4\ÏvæÝ6mî^çƒÂâàYù3}ì%ôÍ2L`$Ñ9ö—ÿaG¾UG îã×Âb˃á,‹ñ&ŽtÎ Ä"á÷Ęèk‘m‡ÊÖˆÁìh ”ÿàäÒ+Êâªå ¿¤Î4çlF#‘ÿr´–æ3(¿Îâ,DmnÓ凯Òÿö«”{/d&ñY'qîsá‰l8Œy>‡ÌJ‡…²ß}§Q\æÒ|l,º ¸Yºû\d©Ýö«½äNysÉžÌèÍ{¶ùӜӇ=šû}Èâ˪¿üL+Ÿ¹´!uSR eD¾ºÛv6 º7áO› Ÿ)B]7>Ï[ue¤¨aTõœe5ž¯’5/†xjeо8E(ÕÁ6Peîž¼LæÃ0:ø‚ÉåÜWÔ¼«P§/Å9¶UÝ5:f&¤–Üþ¹ ÑjˆêâÖç`=Z a´e€n×–Ðs”EBñON; þ žvV”ïb|… ò‡ ·<à·›âP¯VÊõœ.yŒ`ý§9Gýº]útv¢A8¤A¥ º×ÝpðFKvÐÝÐQ½2€žRj¢@„;Óm±4¶Ÿ¨LÕèÒ£‚ÔZÃàÌmwVâÒ ÏøÎ|' ð¿Œ]ÍTº{1Ä¿ov&É4^kŒQ†%¯ƒ s0-áq%©="šÔzM.Úv#ùUÁ¾Ëûå[dÚb»`Gqy&ºX¡`9QF¦”j:á™âr3uJmQJ-ø%  (-_éãå–¶üÃì÷U†tùv+Í-sâÕdRë‹dâ$~% ÂöI›I(®-£ˆÑ¥j‚Š÷ûÄ¢0úŽrìèµÿÌY¹ôØP.&ÏñE8´>½©@û7‡ÚÝt®  ~r¥S‚hNÊß%‚iQö™’ÚØø¸ÏË…ê±ÏÉñày‡„ÝÃ,ÿ™ß†a[˜~ D9X<|Õ0ºS»÷k‘°‚ l˜™çƒ tǺäêØ„6/ÑhWg×,ÆàâÉ(öLÔY?ío0jŒãš,­@lŒºÓF#ý7ç@Óâ¤{‡dÛžyôÓ— @ûc$C©ç­+J»Î¬‘Õæ´Þ‚VL\weæê×È}å{Ь+k¸ª¯í$°ty ªl§K³þT­±ínˆœQ ´ S¿‹ NŒÁ.ÃkÐ!’ð6zìPzçSUÃ9x¨Ï½Ò—-~ÿÒð¬TÈ÷ñ°‰šè›f1勎ñË“_Ï PT!C®Y¡Ýô‹Õø[`´Šª—ó¯S{Dø6ŒòEËîï+yÕß-¯™rÙ]o/»ò¼Lï°žÁ†Ux,ù¿ðväÁÀŠV–ݤdÚ{øõ"@†ÛµÜOJâ€;^@Ô(¨ é—Ì—C2ß}]7¹b’dÞÿÂÔíb¹}È­,ƒˆ>øoDiKó4¨›†´z%NÕ“¦¹M]À¦Šl­:át3T©ú‰ŸqiOÅ|ƒõÅ0‰±µÜQ+²®†#é/P 6ú<̘§ƒ¥"#Ä«w­‹ó⛓Æ}°Ù³Ð˜ŽöýòEÝ9uŠò…ìðGLÓž¡¾!°?’èDÅhÞÒ˜nÊùB}Eø’+¦ õ ¦,Ó×2#ELࢬgM‰öáéh/fŒÙŸÿQV6'x~t‹HÑl7H­˜£Ñ=“ý+Ç v }-´ÿŒ©j5DYâ=ï.¦ï™RèkKÁ½.Xü ØìÞ›ú"ƒÜ<ó‚zæ|ûÏôêM±Ù7G<Ëœó>O9Ðsvq͉Ü1JjÙÝ¡õ¢ì¤“¤{É´à7À>¨2œž&|×Z*ow©ç÷Ûn¶íŽ{A€bIˆóaeì1ªF3> ïâ¹í¢GÛ„Ø‘Ö|¯6t´ä`v´+Ê;EÕÈqÕÝ„½qM”B‡srA= P+,)=—*×K®‰n0nì·õœ%­ˆt’<g ô:~:“ȰuÏ·n&`NHT…0¬ ù^±Å)̯È'§‰«†Ðæ`Ò ¯×F9Œ PƒIé‚R2¬ò²Ž"OqjEh«À²F”&ˆnñ…4üžZ.•pñÚ ©gÿšU¨L:QÐWµ§ÄÅ(:vÀëø)˜ßä\޾øœaÚÝ­‘Ž#ÿco˜If€H1¡+6Bï×Rr>76:é‚>’„zYMŠz,*ż0e:X[Š2ÞŽ–FÀØ•~_rzì‚©i´+¹šTORÆÍWÆr“ËR™¤ÃÈ=ň’ö7ߊ•ö¾¤Bγ8&QƒÝÜK3wòòÕ'`×£ä.€„ù4Ç Á±Ùe$Ñÿ胳R¬fÜ_HŽ®f,ï’K²º}¯álo¸P‚+„ñû”Ç-raûbh ä§#µ.a€[ü½8â›,m'“/Æ­ú-6_–v;ʘ'›ÝuØ™Ämæ÷ê=üir_^B¤(D×rOm°¸€ìÓEiֵгȘ‡kÞÊÐÜ¿3…j( ÄâÚþ ý€œí`yþQDÇ„‡C¶ÜZÏðÅGQ_ä•ËÅU<Üy·®UjK5S^à:ÂÐ~I‡ÑRAùd@Â0÷b¥†Ï[º¶YËŸ¨£Þáùîe ¬øÁ‚½÷DG-‰·Ø;ŒeL i®­±ô¨ K·¡p÷Z'ÿe¼ÚYp†|÷ ëct÷$þjN$®ŽtÁK{¡H„0˜B P{!QF 4D **ç±Ë‡MÍæOE òv>Ì+àúuÄ;³Ä˜<ƒå+®bŒ”`„ÅE°X@S©-_j¨æƒ7C°~L÷ØNS%­ïë<81i6ì [”º<‘¯D\ñçâê¨fTê¥*#“5Ÿ7zÞ¨tN-@ÒU¶@#a ¢>w_›£pUwXÞý.;ö›ßÁ‰1|DÑæ×åtψ|'28ùš…ÖùŸß%¨ÅÏ–[FvÉ_Mi=9Þ¡„‹ëE-s˜þÒÃ{ Óõïqœkµb#ðœj¸ïºcKpîàÚ5O ÐȤ’Ù½…R¶'<=5,À OÑTà(.3õ~§Uûë>iì#ÉšÛ¾»^Åš1=­ äá«ÿÐu*,#”é×VA¹ÖöÛðñøTë«g <7ƒßjDeP| áC$,aw7Œd@…}›üfWŸÖs›×£Äï« rð÷ì_-€ç9ž_*¢ÇÕÍ}ayØ«ºúE×m~ Èòô©q©@Bo?­n•O‡"±%žƒ¬½¢”oM%àHKaKM„ú³ŽÕaAŸ,̓ -AA^íPÔÙ›'«‚h3¤†ÑÌx×·žÚþ¬: ;¡ª¿+Ãù=Gëòy¤†ÿ ªilÚcljµ¯Éª–‘{ëæ;ßÜì¯2Z¨ü‰?¾ y¶¼vzËy`XZlä€5< w;O6¨xI#ãP·5ÄTålŒõ~Y>³É´ž—-½O½ž"ü²ðeª6Á¤l‚Ê1ïà¢÷k2*  zÆn*DÏvP%% ¥{À²5ÅQm5¡Äf!” E™G„t¢;­Ÿ ßÏEß×é—#1È»2sõ®›ÂÂãá1t¥Æ7<(xq±`P-«´0{HU‰{) 63:Ä€$sׄûÇS22þüuÙ#½"#ìØž7ŸàU,猶µÈæä—«¯[·Íç©óSÉÿåYž™¼aʪ®õ«úšŠÆÂú=Á]´ÚÛ*¥ÂëcJn§>…>Wˆ,±)MÐ}ô_Î4¤hxÔ½µëm,í«ÚË|KŽ€Ì„aC‰þìqýE²™eÝ"0VE~sÅÉ*áFGìj‡IúÆˆŽ®qT»d$­ u‡m¸fÒQµ¢èVa—6§%ºÅ8–ª­†’â€5ãD@@ZÃ@Ô"ÿPŽìsFƒï_÷* € 2í_¾$ð6-ߟ=g“åÆ:VªàŸÊð×n-³äiàûR‘Xø9ôAëQ•Ö¥ È@ÑŒMí:DÎ_o¬,4ãcòDØ~Sλ uÎqÙ*L®Èxü¤Y ,+Û¿íð<ïXíÔ`7h!þ‘ñÑ wpá]E W1ÂÌg³Aa­kÄdñØSP×Ìå/£(½¨&©i×£k¸­w+1ä Pßø²c¸s-Vë:—ŒÔÈ%ìC­¤ŒBq[c×à]ªg>Ov}ÍÓk²ßÈɆ­À6ñ= ÍÆEØLŠ?Ù¼yþ‘BV³ÆÓ¯P汫1Y¸ª²›/ë…L-qª¸ò›•)ý ™qNw¥׫"íÄY> Ž»š¹çÃÁ%äx"Û…»2¿Š™ç5@44ÜÔNꣿªÄ¸4_±²=qÕA4ˆ¼aûÚgþ,ÚL_™`lõ,wçC£¾wõÞvÂ/ðz{5H>lÚ©@Ö:ÿg Å,¾”ëÞªØ}"îAêÒ“20mI¾ÖýTOÑltçJœ6£\X»xxQ°ÜDæc•÷Z§|Ð#ÿ“ëËÀ6€ý´4†LÞùB–,þ‰¥%¦/i¥’2çÒK '§œsܹ*RÝT~¼t^ˆÐiUŒ–;f»Ë³£Zz˜Â1øcý9yÍ)Ãëµo‘<}@lòôzs‡Þ̪s„PS»"ˆn¤ð Ñ,  O‚©õä¨}¡—OÀä‹¡a² é”Ùz‡Òì‰Ušm;1(%[-‡œ0óÆ)Ã%Û2J‚7¨!enÍúæ="¢NФ8¹¡—;16#ÆlØ-ìSè ¥šíMD8% £'‘æj¡)µÖ‰ê‰5…S"”Ö2ÝrŒa583s¨¦„EðeTF x6´œ…™æ÷ž%ìZÊÔð41‚­+žNMú™² m<å"ý8Ùà~3b\ÃúŸ¹õH0TâÀÒµ\ï“AÌ1‡4Ñ… ä0ŽÀÙCPÆ”>{šêóÛnÊcw£f‡Ò?çþÝݳÏß¿>˜þ~AœJßùUÚÐKûÔl>.¾#à *©u¢±‘Rdp:@è[P",a¡ Tèl#0p`6ákËæ•6Óõ4í}Ù¹‹³2Ÿo*z͆Ò¡¾é.[uæúÄ÷82d÷–½¥Ý‹sÑ:ÓÈû¬ÉÜöxQ_­ùT†Y0_ •±†„®gŠóâ_h<*ÄÅéºJÍãcr¦q®­£žzûŠŠœp@%öSZ@hX:8ªù—ƭج3qLÆÔOäqfxá­ê¶¾Ž3\.ýó¼‘Å_èe· ¿œÉž@BNÇLBý×ÊtL&yÿ†èÛˆ€¤îyiNF™Ñß·í,UqÄÃô°¢N³Ïi‰ @è4íÉpvš£x%fuò­:žÍf¼–ÒŽ4ݪ *"&ñâL¹›Lˆ]F/-i ô«<©çë@¾Œ^/õÿa´s1 p6û²_šX£×!ÇËHŸÕ2&(ë¼Ä}aȆØ&ÜMŠ”ê¿î«œØ¾‹’ŸØd 0¥Ô€øáUÿÌ_éÊÖ“²fÙd¦j‡A8˜ªa:üv"N<¤!8À°mˆî#øLî1ÊÄ옚C™û,¾„ÕñÑ.‡I¡¸4#¥ö¿‡Wq©î~\Sé9¼Ö=T´qji±ù‰îƒ÷¬d£¨y^eßÒ›Te4¤Ù &PèöLÐe¡Í·ž‰ºD/2#{Å-ûGMpf©«Zîñf€ß‹cž[&ŠâÙØ¸Áãÿ Ë‚þY_·9=mß2åTtȒ΄Aðç7¤FËÓQG%h%Ðk{‡^Æ=¿ró‡ƒÓßÂÔ»ó91ÙN¯i$ F…²7!5£þ»9lY|Øeá8°#æ“‹0ð‹ÐXqH{÷ßhRÃä䘤 ½ öõbì8<%ïtº¨m–lîÅœä ˽“F(±oñk5ç–w¶!†wfn»f±dH!À6}õ1C¦>±^ßZÙ9#(”2f° ð‡äª÷þþûŠìX³­¤9Ænû¾‡µ½?MĽƒ_öÒ‘‡.}éà 鮨(x„RÃÏ«<5Ÿà ¹e¬]Õ¤$-'<ê)âþCî3£‡§©L¾ÕNqó0¦n^¯V-kÈbè„kN+J(èŽo•?×þ7M¶Ûmõ¿ÜèyŠÏ(ORŸs„»;Ôu34þÄÛ%¢k+Á7³b‡?åFI5 [ D½Ây ààn¬·S•¼ç÷%'@qfO „ßþT?”vóâ¨;u¡®*éh©W„ԛߊf•|©ÄìïaeÙfºwÏGwú-(n€Þ&Ãïö”~ñGÐ «%i94ä!¡“)mJA¯LƼ'`  „´ÇýŸèèL‰r¿ã(ËP”H ¡Þpô¬×þu·x“» mGg€'ÀG§P:ó€øGIÀ p·M: &ˆ!‘…B7—‰XæP¥-ÚøO—Ž‘ØoûÍr¥Ù0Z'©8–Ê ‚ÛÆ¥‚y¿´Éû ÑGøðš%t2(ޏíw¹qQ$;7©ÏHev~…Æ@㘬—~@gë¹{ÓM~вóOÍZ/#gþ¯ÚÃÆ“ë™8²zä h¶-ˆ¯">„0C¡@!Áò,§Âàœý¼ËÌ‚K¨Vöp§équÀ¼-j’JÇðrRU>œQµã|5ÆøÝéeÓÆ+ ÔsWº8¤ØaKÖ» ÂSFP÷$lÌܪç– Mû£ÀWÛaÄ¥ÚXÖA^†ç—» ¿‹Yìh–ä­t›5ßÉë§U"‡»c›ë½0@—BŒÐ46³âÖòûÄU2pä”",y³ÍÑÍp¡ ø¼{m¼X+ÐE°'Žä§Ë<™T·:€Œ®á ýñìµôZ‰Œî¿¡Ú/.ãjð+FáMF=¥eù±|×Þpnc_K¸Râï¨]O¿,ë&¶) Ðéc?Þ:Å«ðùíô»yu7’ h‡à3ƒòÚ!þf“½Á›­!r;Õ€YګΆãÞtQ( ‰ò¹2!æ[cuªÿ(FdX(ê£À²±±Õÿ¢Ñ• º{4³>D#¼H©. B Šmû»û‹ÉHéZ.!Î §±M¹þ‘¬"¿qØØû/úKÝ<û®žT2FL¿]¢FP$ë^Ћü3u±ðÜÉè<5érE1X‡KåcáâP”1Ztt acEÖhK?ógu è,Þì+ Àÿœav¸òô '¼Dü6s/DÃéµ-ßßæÕGîiàR­Ø ”¬Lâ­1hÇÕ¢#pwjyŠBQ²/8H†°†§"Qú=Âu8rU:#Ɔ6Ž Iˆêd,=˜ÅêÌ­ýí/5(âÆ7˜XVýufÌ@çH”¤ºJªkðÀžW|ÿJ]Óx!§ãêVµ   @ýןqø‘“’—s¸1€WæÍ'ûëÉ`{n›h=PØ«@#uˆo³òõËGŽ5²“ôoÊ(/©©#áok‘¯zîƒxv/XóкÃoêb{ súFÍ`e*¸0léûù¯1…µƒg^>Ȩnìv«qdQ—få…îÀ强gÖ8 Àý®}Ëžl‡”s@ÎU21Ëö~òÁ–C¢á øÐ‘BI@d6*H¬’ðáHm²£4aLŒžŠ4B$#R™ !'À ©h$’BA¾%‘dîÈÿ?í/ýý§|/é^ÜKhEŸ@ž9ô*’ šÒ¹%'Ó¬<÷¡\"w­ºMvڥ̋]Àɪ¿N}±Û‘I*¼ÆÿÔ™@à¿ëgÕ{HÚûá†í¬V&4 F ¯À‡ð×.4G†ò0A}ñxýIDü‚mJ?"ë7.Äh×Ü>|q7ÝF?ÀÛ{ØW’MŒp6ÇÝù¼«ÈdÏ4ÜuSJ•Æ‘˜98¯‚ŽÕ%>ë0òDØ–xƒ?ŸôdÔ«×|Ce§}z‘BÎ8à Âþm²¾ÆQ ya¾Íu;ÕÄøÛŽ¸&J²` e•ð‡°{@öCðiήH$YhÁŠðˆ-ŒÍöÀ2ºuŽ© Yýë…¡ÅCµÜ uãWháÿvêþè—k˲ìÙþy#‹ŒYpäü‚`ÄËö’Ú½úއ!_º^qÄ=2ÙgïýÞà5᪒–¢ŸË¤\:ZâFÿq¹z¦U#@äuî.ã×.ž ]„&×ÖÓh¶#éžùþ¾g ЍNJÓc ¾1°¦æûC\ÜçlÏ£†XÖ.T¡ÂÝ—á£ópîâ‰ÿ©X0`m 1: 6t¬]låû3ÿ«)aLb€'o±ð'¾ê "n0ñV&kuèûFŠ•)²hà ;X? #¡‰àž02ƒà³&’¦h‰v^¤HÜ ïö›Älj °­Þ.îÿfkѺmQÇ>s'ž4e™¦¬ítòºDA]‹pñ#‰YïS°­%“xô[Á‡ 1QÒ=œIˆ Š[V躔„2 vTºÿïÈ6¥…¨CÒ u(# ý"i˜À4å Kì_Û7`!‚Ëg·æj÷ZÞŠaþH3ÚsÒÿ*˜WD¨Â}`<æÌÉ-¡%ŽETÛ…*ž¾­<÷"úr»]=n¦ò:j¿Ãþ´šÀ &¬Sõ(‚ÀAom÷ß0´uúòÚ4FÛIA/í_ä¯P”ÉšÔâ…°j>ôØ`B浪å)£~·H>!2{Á}LS%) ZÃX±‹ÌGÍXH†TvÂÅ7/9"à0WËÌd\ëöÙA=Ïp¡‰ï¾¿_œÕ‘YÄÅüáQ²Î2Vjá£ù”4JÕ›mO½kÅÂõáRK½Qï?ï‹'ò—¾¥˜·{tÐty®“8c¥ô,.xýHÆÔgúÙì<,šÇŽ{™ìLÕûzð#Â?UVÚ¹&Æ–\;U‹vvGšóú;0¸)&k9ç<}5ªlŸu’"¦§YI­ùÂeà°:=¬~–u™½¿? ᳟€¸þµ›ZÉ®7{i¼ÕdúÔ¯ÊÜú2ôߎXêþý©ÚŽ;¿JÃã§ì*ø+š¦?D¿[ŠüU²7A·§ÜdªÊö‘ ª¦eŠØtì8á³ÓH_u c@9ºÈ™\-µ¥a–†K<Ë* ¡bGÖBÐÈÇßÃdËøê´>ž ?»4½¨QuááW±m, qü¿-×:´{ýc)wÖ‚0Ü“òO@%PÁ0ùÀ`M'cŒóÎO–;!i¹û)ÕzØýýŽdÞ6™Cº¶yFŠê ÷2®´»µ´t´V„EžØá® Foº’a{QnœèrQà >6‚ l÷5-›VæÝrQ®…‰úSUóÿ´&»ùû‘|S^.Õ‡t¨X€8D„Jq›êOÏ›â;ü­Ž ¤vcÈ>2Žn$ß"«/Yƒ_òõÍû bÁˆþ=®2Cxâùö{þ¦®øFMÓÔÄÓ‘ÔêëóíÛÓé± “ ¦ cÀ“è\ ­ôSJ¹ñ±m»#E&} oÕe2ý)ªªÏL'E hç7}ÔÊ(ôXÆ‚¬h—hñöï@÷å‰y›p-0ëäg¨ =8 Ÿû"ùC«Gæ3UIr™{™"¦ ç7é0ƹÑÀÉšilßB5¯°qÙÂÈ|{Zî ¾  çvtDZ¥ v§8ÿÕl~^a¡ 2žÛï9M|°@PËu±— ”24áe¬(ÝVÕ#M’O¿6fÙ`ñŽ7 oØÇ]\þ)£AÀàiàŘÂÝ¥øœsµòL3$¥\I´MEËôðòoö(c¥öÁÅýÕT+w_¦œwÛ@)EöZ`Vb8¦ 2 láG²Å`uìÞy¬¤ß¿{;Öé©mS¾î³@zî[² P9ø‚’”Dz -àɇÔÚ½ógPdœ7±M#}É…zWv9¢˜‚¼?Ì1`Ó]ÍÏsz0¶ï(´¤†L€ƒÀ$£¡@?£:\%ã±ÿx¾@Eåe›ªñ’Ph¥:—™å§Ÿ-Ò@PŸÅô J£­î/µô“ža*Ql©)ú@ôêß_ùoÆåÛS-ãÝ‹Œü"‰1Ü.²¥_3Ãa¨ƒBV%sæ?§Ì  „&tji9£}ñ$øÛÁœÑ‚D`_BÊf¯_âä×ùø§êͯqbÊW?¯;®ï?dîÑk(–ùàìÚªû®q½¼‡#ñ}Ê(Å.1¡@O9t䀻õaÞ¥ýsä^b°…º——7 1y,?os+Î#Ø*žpð 3¤s Ùâ-‡[É/&4Ò +a8•Ëlþñ á>™>Š)¸`Èpúƒ¹?+¾¯¤÷‹ÈVx¤zùš]•-µAu*e(Œa‘lCœ?/ÙíèÏcoöL–gÎ ĘjXI$.Ñ.§Ä•~_ï6ï¡Í‹®qÛ}ƒPωÛ}~mñ¥¡èÀdÌéx#òôb=HÌ ðúT ­û]hG‘ä <Œ’DÁE"nž¥#‹“>Gž È‚üfláLL$‹¢±X/‚ÁÇÔ>¡þƒ§p><^šg†yà9$ãËxêûo_‡Ê µ×ü84Á`þž5½À÷\¶S¯jÛhxç¦Y†(nÔ 9·ž¨ Æ¿>¶}\¯çv[˜äaæ¾éóŸd«vâÅ‘*Çc­ó>ýõ4Q œO"pÁøç¯IÖ7Î]ºÛ«øiÁÎÞažRc”v¯í"(ñP»YðUi»w“€|”"àŠÞG°,Nªyþr¢ýÖ-HÌüsŠú·´Ãâg žW¥`ÔÉÅŸÀ-g§ócV+ü¥¦Î%wúi °küQ›ðÃS'ªY€è‹PªòÇPmFúo$ük¦®ó_lù+toÙxóº˜ÔoéŒ#cjd‹½éd>•ØöÓ1°„"!ƒôŒh(ƒÒù¬ø=äå­³ÉZ·HmUO|ûû»Y­IL4çñ–ÅóÄ2õQ´Þ txhü¿£÷‚èe.Yó’°ÙJ؈Ó/‹”ˆ Ó:•¨Qöùts_Qr-\23ÎËc¤À×@☞+nÉ¡¡€‚@ðG9ÿ“Ä3<ƒkÄŠÞì/FH#‹Ô-É!Œÿ8GÕb" ‹_å\¨3 ¶?óÎM¨“X"ú¶—"ý‘ønCá«ß·~ÂIþݨ^pÙºÅkOo«óc>Ò›a··fŠ“Ì"“2Ú/ASÿ7vµ At« 'Å«„§®Lù›³ìþ8âÖ’Œ—‡†GF¶ƒhÖ;û€aŹwu·J鹘̗ôíæËãÕgÍêG xŒˆŽ…P îtS>9Ý-0ëü}ή,úÓŽËù¥Œ6Œåy…` ½ç…óÏÐ~r1 Ú¡~7ÄÅ·:H¢DŠ7 ²fNèû‰ŠDŒYÝÁ±xÆõülà}2Ù‘ØýYöi¨·cCú=³Fë¦ÏcÒàaøÍ™BîD# Á û]9lKhzÇŠžM õ@¦šÓ­,9ÝÔæ%a‰ñ¡æEgà5Ôö¦c.Ù'“ßNŸ$'ÉÓL˜ö“i¨âõÔ«²lTwV‡ÃÐÜфР¦jü­ùüaG— ‡/wÒ+V@{Ý¿- …5/!m#ä çàÌ@fFy„2*£'Vãá]ªÃÜm&5¯ÌÅtò^“V2êOÓƒæÑ8ãÀ¡ëÆ ÐBAhµß-к>;ÿ¿Ù5æŽnÚ¬µ <6¹ÐmBA„9˜Øà¦BÐN8ïÛqS‡”ÅO B¬8ÆkMs¤µšØøÌ¯e[##Ìê*Eˆ:Wl¾é”y*èª1ûÜf´¨~wÜ É„h,¼Žã.É;º?4Öü‰ŒzSn¦—ÜöÃØ¯ôÜYõÛíû´lÁÄBéÛªV|ÌW–ýYíå? ÌÆêÇÖ[ःAÍäÔð„WéQ[-?löÛšÕ» k²åˆŠ8æJv¿=¶Âë+‰*HÒnuj¥‹±‘Ê·Íötš¾‚*aïà²mÏÏÙ%8Å©Š8ŸÕü³^:œÖÝ#²]ñ_`9WX~þ’LÄ »„Xy4§¥¦pÚÎU¨)Áž´g”Û7@³úˆÐÜñíeý‘£]³·Ÿû©Pé‘Îè;mÆJðcöFÍä~ÜÕ䫱Á㌠¹]5û þ¼P8 †Ÿ9!DÌK\ÊC2†©Sæé¯èF†ç>Êæv¦4¤” ƒÞ¯+Èð6ÿüŸ.sÊßà ‰  +“Sì60Ö™#êC‹ ìEg¢rÍýÄÆG‚4" ×÷XÚ±Ð?%Ëåì>ñZŸ4¦§˜ËÖ!°B€\7èA2DzØ€èìO¸¯šýB¹Xm¶4Âc:ظ°Íßõ/“G{ÌË•‹x­@¸- ¨¹†65ÿ,oÃüØ¿£yö­* »É‰<À¿4P¢+eq^×æÈæ6   xF;°fšˆ±ðl)¾A^è£çàKgø”,ã÷÷Ên®­©t)ËËLëᙟ}*Õ¸¸Q¶»“Àè6 g2Â!@Ð(Oœ€ž}”úZËA±Æ ? ©Móñ[ÈNz:»£úàEÓâÜB¤fRöFš¼3/`˜&vü8Ÿ$™N¨¢õvÙÛn’ ð<…4ó™bŸ/ê°ù]p| ˜^·q”ÅŸO |ИYÝ…Cnœ¿C€WBÍúÃvcmJï¸y7âl¹Œtìܱ(ŸÔüFÅð:w}O3Aÿþy|á™v:\«Þ%tШ!¤kTÚ)TcðÍéì ücŸÇ©–¤¿C™Å¹hFt• èí²k\ ²V‰Ç,¶Éœj–4í_ïz·àò›‡1À“X_¶œæž¦i?öC:ÿfÏ×|×<ËãzW Ìr¡ò‡m‰µ˜10üÆ,CŸnj†ƒú·ÅЉšòæl·zÜeMN.k7PÚÜH)EФCíD70ºû8h`àÜ÷—¦¯,Ýciòh%`VÉ€žm÷ë²6zÚ¾ÑEVk,òëì0WáÒŠät¹ÒzÚù[îðp×âBwèç|ÚÔb,%g¢3Š.šUãšrNP‰I,†€û°R¾‘xX“‚{ëý+0¹Š]££-·–žB௳Á·‘톿b(Ê{áæ´]‹¨Æö¿# É)mšlX ·í&VË(ûu–KÙò²ðÖF(Áê7¡§ÝÆFP‹VíåÜø¢{eäÝᯋmTz·CNïÚW9<ïƒ>a#+`LX|)Èb–×›íÉöåãYQ}¸« RL¼*ðªh‹ü($ÒŠ¤Ю¥¥ìJÓ—†D²Ðéзâ}dæüv³X^’o%ž¹ÛÏæÇæ¥7ôåô9f”ý ©Í‡©W–& •†ŽõúÄy ,¸y  @ /¸K]Ÿ]%×} ‚Íõ‰‚Â,á1‘Cì¡ÇJ\ä”IAðúY º'×÷¿¼oá±\?#!ØÓì|—aŒ8ð¬¥ïÛäq…ÑR®Á’ÊËÕפÄ.ä³BДI¶îZpfV^rh÷u§4®»úQîW[ &)ˆ…½ýͶØñ¬ÿœµÆŽ¹~´~ÇÙÝ W“ΓªX¶A]iÞžò{ |Ì¢¹Šô8R2H ›Öº¡ÅD¤´YRÀßzܪk©ô—Løs­ º¼«ìº³š®=FÈ_+Ùv§1ì-ªô4¬ÃZÿ3¥ôNœüê nC_Ç,òÊûX,b¦qÛç;Ÿ©Ëã£A_F[{ÿ¦õP£¦à.GëІ xÙ åmDëËÇüšçÂ~c‚!ƒŽ+áLP7%)Ä„óšóå\‚C±Ÿÿ íõȶCiDxVç2ÐG…õ(´¾ìÎkË•7Æ· FËߪSöNklóv³¶Ò¾ßTo»ê/jížÜÖÚˆ†¨Xö·ÃG?רlúþA$zǽ’{‘O½®eÈ`X‰µ¾ø¸r׉І S-‹kQDRf¾éŽA‰mˆ}}ÆZ‰¾bŒ`½ú´0d÷°“é‡]’sÕñ/kèÏ DH ÊKyoì×1VÎ}3¾§±q·ë*êð69ðö0¼ÀY‘Æ3qMwô­ôŸUH‡ÕäÐá̾ÍtawéöGe¦ÿx7ˬœ€Ò[)Ž"Aêø@b Éü&ˆùüþ¡Ö’Sç:,, '[è§<÷ð nGã,·1¯¿wÆ]ˆQùv æ{ÿF€.Š2áÕŒs’…÷ëªïh3üT¡³Ây!LLÞ.J^1núÁÏeÅC‰MgªÀÔm[§Û™¼ý ÞoÁ8©ShËÜøNÉO4¤ý±”¡9®_W¥ÕIYÇ~Û’á/8 »}§2œ_=‚T̺1¦‹/MY uüs";%/áÇÆŽ‰£Èr–áf•6ßh6½¬E=uÕuðÊÚÿGÛO>q2²2»Z‚FšŒ'L"Ÿî¨a‚#R[Š—¤KèJ–[êúV:棱S±ÛÐêr„v!î3#Êë1w“Ô!iˆVìÈ»Ö~ÔÑÓl·¯.&'@ýÚ©È'!å( Šî¹ùïƒ]ëË$ƒÛGstÖw3'BPØk§ØA€ô­Þ‘ç ¥Á ¿Ó½þEµ©Î¤ew€& (÷j^u+´=ÙIüÿRoS9º³ÝHM-ë’B/ ª°.Ÿl¯öƃDÙ¬Í45èP˜!CÃmd妳v5Ñxo¥}º¥ub‡ðææ3 ½Þîþ6·+<:ó³¶ØŠ9‘Þ” ÀÏ”Ee 8¯±]ÊRÁìÅÀÏ/CuÜê™ X„À¬l—û*±ÈmýÂŒË,ƒMy©S|;gn6©0ƒ8•S?Ë ÏhR;s²ß„A‰Ãñ€[÷5zæÑ‰T”ƒÂ­¶`»ÁÿL+ æãL=”šwžQÙ¤¹‡“¬€ò­ê¤êÈõ­Û«oÌï’,w4(ƒ¢¡o<['Ïriecµ ¯¸¸çèƒÊÐzn›¦¥f{•l?^ñþ?_ÔÇÏžƒ m Áð 8;øßÊä •/‘éàóû/Fw‡0ë­%”& ÉAê µjíè¿Úߥ|¡1 CÎ[—!_\²u{?úwë ¥H¾…±ÄâþYÝÔ1uŒÈý3#©)šuˇñÖ‚LäýôÊ=ÔØÆb!_”f]¬po\&“£áö½Þ`€Í›a\Y[Á{JšJ€iÐý´ýIFGݰRøÌL‚`U8Ï'UNæz“¸pØ^–—ñ¢vá¢)<1ƒ?j|^ Ƽ _¥=Ž´×LŒ‡yÖ k«àNë?ÊN–9d÷&¦+‡ö#Ö¯è±cí8ê3ÙRŒÝŒÎ: ÷$ƒNdƒ@ð¢œ=?,Auu•þr¼þŽë¾'ôóMK¯bKãÌ9ˆäËfß;žÆî4._=¿åÈNüs– ¬¤5ž:T\è»Z!²P%Û¶Ó§Lö•m·\6§Ý!L`Li@dªß™?;…zpê‚´nWÝ(“½±…ô§­¨Zeyn›1< ß–€Ùm(ó¢V~Ì7]Ý@ÛRW*ÒK êׇ!‡áËÓ±AÝÅí×õ†:oJ¥×=ªòæDèX4ÜoBÁ²/O{°Ò*u•õ8dbñû!œ)ƒR«V D%FØ,hfÈÚ¦¬úÇó-[¨Æ†òR‹ k\Ë/WG«ð%c§ÝOŸéäV•­Ø¹¥]E-ž!_ÞQÑÄy¤{h„+£–Zaw+-{5#$Òãüû^OÃC^Ã}µQ²ðCØÀ§¥¤yb05x3ßšt»¬ð÷d}?CYLAšKÊîMõiV|_hý™;8F  @ G—²ÆŽVTãýê¬ÍÌ2é½Íþ3`Ú´¤¥¦Ù둸°îóAà b6Ú} ‡[k¸Z_À»—«5PÒVÎ|W^_k2˜ƒÊcvôAYšÀ猅q\Š0ëIàŒÔâJ{ o:?8$¢ eøæ˜µd‹¾عx“Åoúµ½õCSOûn;“”ô… )‘覵‚áäxâ‹R%Ðì  åÀsçÞ‚Dƒ€üÈÁb€Ê¿»>ìÊoÕ“Ïão-ø]J'ƒüà¶o{’؈KÖþ}Z¾nw>ëp½¥ÔªÚwmØ—¾ )@& †KºÅíOò[˜‹KÆòPPoð™#Ñ<2ÈoäöEjÖEµ;Œ”ˆö…æ*‹›µ¤>'¨Z]Øë¬™8ø«I=p“-y÷Ɖ3ŠKJÂöÑÅ`Ä3æÄ“k¬ÛÝhêÂ!I¾§˜˜|*æ«¿an¬€+0<^)&Ã:gêL¶¹ÐzëiˆÔ¤Ñ}ïn3°r\,§yä%Ѱ+QPGÃ: ƒTÄ¿.È$u†PÊŸ0 X^Óœ…±Ïâ{ xgš ×8 ½po<ÝëTv‡¾›¤­Ï¨iºñ±˜Òí?öZÝ~÷k@|l*‹}½Úèv%ò<‹š‘ÿ­„ac ÇtØ,Ï;HçùK£ŽíßÌÕº`iêÆ°|´× B5?2¦ÌÌ[d©0ü@úÛªU[~_ºoå­f6ãdà«”0ª[˜‰ž¿—¢B¯gó¦Š,ϲ&ŒÔ÷$u¾ ö×n£ì ¸œÏëxP¾¾ŠYoSÃs¶ šuy+µad„»`€¤chšê¥|Ï¿™Q4#…høõ!*™\…µG‰zý 1îÑŠÏô*îOžÅ¾sau–S„CÓª ¬¼v;þpÊ¢Ûè ¢fîš8ãsˆ;\O°…,­ûˆ»´ü¿¬{Ž®F®Ù·ÄŸÿr,¿úÁôtvˆê ð¶Ù|þOÁ\Ô`{Qy¦qêÓüí_€pwßV¿²ÀgýmÏR0}É(Ø'˜a*y†HDAr†QžùxÜ,„¹\wþLó´íú‹dr¯5Z8@…'×Ço!ÖR ²Íå‹QX¤Ém^€±îwŽîQfRvP~·tQµéT6Œlóx.׳n3‘¿{H) Tî¶cÕãª:ýÂÑЇÀìÔ)ˆ~ù¤èw»ãl_¥LÓgܰY?óM¸âðMü­‡a ºx„ ¬_N¯«kÑû?¹÷ö­qáR]Öúy1mwôf˜^¦ôPÂ¥ù¥2Ð0!Ÿ>mZÄ"b²ëü/X±Ê’Ž2ʶÙdÜ<Ó%©¨M•m´­nï‘USö`ÓâÛ7#^ò›ŸƒVÛíæ¨¿ÜƒØP–ã„ðÄZ· 5 òq ”=5±ˆØ :bGòÿû•ê¸Ùý÷i˜Õ*Ü›B$A]_ê=üj[~:ªpvº+¾GŽ;k„f‚,²ü‹Xr6QýcbKqð”ãxwɬRÀ¥¶ÂâÎ2Üö3:O–èºÀ×"Ã)¿þGÅÿkÏærËÐJøþ}±ÝâÄ NsháÑö{©Ð1ƒÍ5cÖÅj—Ïù+еE×P¬w‘¯“¾ݪùceb¬f÷ÈøQ ò”MdÁ™ Ì÷NÇsQE]Ô4Fˆ^kÊ¥.Èmÿ|Îù áTÙsù]9©¬3ú‡ÑËy´(¢šy/–•ïÂt¾Z­×§§GæcÜñfªvO6Cºš@æéf‚2bÏ¢SÜ"Ãâ˜ù ¥ãé®õÔgõY¤"¡KÉ0´ì¿Ž¿ÝQþrÉ<‚–@ö·ñcUE²L¯ï$ Úˆù~ì÷ŒHI¹ºà U RH¯®f`pö‰ {7÷gÖœÿ>:kŒÀsè­K÷,àºïaûÙnIáÂî„®s@•¦U‘ ×pä$¨nÈâ…*%Šep7`c. JØ5+ Ar?¸aÍ-Æu#v0ýB÷0yEõy“ò¦xŒóƒøåG«Ïb<ĵæ)Pè’M ´tøI<Ч ® /¬¸ê+-µ&ʦý.RJýƒ8QB¥•‡LÄ—šá„+|úF0 ˆã:ðEÏ»´›Ûrñ"žÎlöEPâ…cGA?ð½}Èc“9Í!V¦<ß^mî5üR÷ƒúÚSCºJ““!òÿka Çâ…›5!¹¡gøH÷1Û™¶7¶Ò­ëª/â“ÀxÚ´`7'èÐÂgpÓ›]ݑޤm3 ûÚ.Æûµˆ_ú¼µ <¹ŸS÷¬€Œ%;J¼íe6|j]5§Õ°ÕbÇDFË¿Œ/ø±[è\úýíˆàGLÁýkz3ÚA°éê|úÃu+ÍÊÃk¬Þ;Ûf¦ª H-Œ£™kžÂ%`C""â—5ÂL@ww±-#é0ú›òò×½ßH`é6UÓ+NYYË׈V™0‡›ã÷¼Š;ÚÜ›‡$’ÊãÉÄÏd9Þ,N7ð’x¼œñIìŸÜN¼\.AlI“f ï~ž+«^°M#üÒD|¶™ãwAo]ð‹êß~û/‹g£ ö†Í¸u\œuÏ™ÒãÕxûm§62.‡6Ë´›â…‘ì´Æ r'Gº>Ç’Ä+¬Ýõ€ùx¦Ç§|ÈÙãúXܧúŠ»,7ï_3Œ¥ÆZªþvã{V2`ø¾ç|ó®7æi (N @xH ø2pûæÛÃ`ݵCõ¹{„LªAs íòÈ ¦P¯Š¸ ýtÞ† %â…ÃüòÊMØ%‰éFák¢7ÓöJâøügžÛ AbB2Zú9F@G`™~JœV ½â‘ÿ9qb2oçeO/ŨPÅØ|™:n7§z¹pÄ)+œ”Ž—·™MvqyÔ•*ÕyÕ?o²c#2˜E\ßõÔÝ>/”0þE_ñ9›iò:óFÝæä¯ X(ø_˜û]…W|eˆXy™OlJ´¢`Oóe£5ƒþbsáÝ+þ‡µ°n_2ðà³rvÁk±½jÝa•ÉaòJÑ“˜hÜ-ªæ1wç*zÚEM¸8Њ`óz}ƾ™øÉæ™üNiúUa]˜9œš`|T{J£ËßÔ)5à F—žÖŽÕ˜DP:8£»o\¤7šÊXPG±ªÇî¤&uèC~ký§ƒze s»h²æûLðÈeüšÞjÈýûçσ”"‘˜'Ìã¶›w4‡U편ÏàS*”½F“µ#ó™¡Œ„öý¨ZïoßçõA÷ÓS¹"B­{+ÖBàLãvà5eIf ñ‡ßYTRŒ—ÓbÈ^¯2e?C føÀ'#½¯;§à„ —뚺@Za$3Èh2K˜{„ß/²£?¢¥èÊ,&ÐÍýJš•3 Æ¦#ѹ‹,Zu½'<“"‡90dòÅåá"œžŽÎOÿv+~Ä×”ûbqî5E²èŒ/+2ˆw”QÀEÁw‘¨½ošÔZWuO¾•úÈË÷1VãIb\ºõ¥Ìá9L(tGTØ1¿wBÐGè0Æû>—™Bûžƒ¹´¸†œ6R·ü¢>*çrŽù¨" îým<Ñ’b…&¨’ÕÙÕÜwUcw}ñ𲪥N´ã:xØ^0Ï-;ÉX3º ù¶q ã¾TËóìœF@êÅÐDZ8ʘì8×ö)ÓG²—$_¯cä÷)&Yã6R¬BÕÚu˜ýñK¦.;VÑ`Yä]ö`;xYúó°ÏàÙmØÈZ@ ƒA΄E®š¬¤™íÁ²ÖÈ|¯œß¢«/*Ä hÕ‰©–Åt½À ¤Ž_æKÔ¶þx×Yitö?sn HˆãÅ.`⽑3›ÁL :FŒÊ•¿uö9éò§‘io£§Ÿ^{uo1‹áÔÎL6‡¶58"_¾BEBnÇL‰Ý€‘ÂmáâÞ»×›No:Æ"á‡iÁþÇ¡ÎÜñ%U­/’o+¦EcЈ²ã N3¬YXˆ#ÔÀ¥U5ÊìÌ‹ ŠS(cÀ9eæ,ƒ«V@¥!ê¢Î ¡ÓVºÔê2 µL¤L¤?ö}Ê©‚0Ê3xmÈl¸Öé-© `•çétœvÂK‚é‘2'+l1©N«QU’â)´Uô×Åï¼Sçk´lÿcÞçYÅfüX꽑ö'±0‘¸þž#mã·šaÝbÉü|2ö*y¾møHñŸ‚YÅ/Î rN>­=Z}ýÒèï¬UM¨C;'·èý·Ý•Ò+tîkÆõÒ¶õ$‡7I’·Dbäž›.閭sæØBçÿûyOzß­$7 Èmö^XꈡÏz1:ÁIì:ÁÍÿfm•ëoÑöo ÑÄÂú±UMb—bÛƒs:Zb¦AH —º‰é²ä&n~®OG²Së»Êþ“ ØÂŸ¨,ô±Ž\­Íä. ^XÃHÎQ‚8ç¯$ÀÃA·@žÿ £­4*à×[ ÓÛìþ øh粟_#°ÙÚL7»u¸Mа‰-4êâ¢ìlU»äpA¸}/e&#„üMË#˜†a|éŠ0ŽÔ/„Qñ¨ýµ8SÁÉîîMµ ¸~jïÄSÈY•7^ú^º¤h1,¾ºyl 7eì²(†CÞ2ËDÉ|daõ3zSóýNÐf,МC{šö©–)À°aÕ™~¯t¹ŽöÚã1I‰©+X ‰·×r+aAt-¼™‹©¹úpj[Z/'Šæ»0é”Ü-„Bž°avÑÇ?°ÜP9DÃ:š'ž×û!ŸåWïäA½hÄHLìÎL~Tº¡–;Y6*¨}{Åu<¼*dÂCÎ\Þ6ÐOYVg£Þjý¬L NUü¯8ªýnvl£ÞË(¨¢†:—Êü†Ôä ÏõËSòtQ§Lìæ ±Ðqî¶7ŒŠOã°JŠ€^–#2À†˜·½1‚-L¢R–sjÃo¯S'e r²Ý3¯ˆÿ8ÝÛ[JÔm8]l¯"Tò´-¬¥{Ò`C!ŒR0×éÿ°»›Jî”óÉH¸â­² ÑÜ#æ!{ì2vL‡nÀ;¸X!‹€†²âÀõäC¦/9°>÷ÍSv¹ÈÄü§dûÂ$„0ihT€âŽ=è %ï Å&!6®Rá&yO¥ ¨‚É%ès\Â*Ÿå?©*q,gI_4E4·ºÝs¸;õWÃ×[¨0€€#Lpv—…>¼ø Y÷1Ä1Œ’ùv ì"ûò ØbŽx´ÀùS­SuvЇv'±9|[ÁÀ³`+„B§bB‡NPê }¬™å“6dwƹ€,ŰÁ¨Tj)æHXˆ›c)ßè‰Ù”Ë;©µ 㽈\Ï80T¼ ?@b˜Æ7‚XŒ`°ŠYŒd#·µM Ñó¢dÌQæâØ‚¦Ú@€ˆ¾v ½t[Dâ„p ñBAâ †È9¥¼‡í"€-XP j©UUù°P *ª%ÄYsEEC·"¨Ø Ø€]DSTÚ‘@~1Ä"€(Ýf˜ Uâ-ÌQDh€BAh‚”CQ!9r@™sH 9à €d€&ìC½84Ó¿Î +éâØe ¶)Aö¬.Ììbh‰>·ÿ½‹÷˜ + >ÚŒ" ­*K›âã,ZϨ¢]ÎòJ4cç²"‡†…°µÓxØÆ»Z¦Vè¦víÕÔž¾¢­ MŒ-gNó¦9“ïnÈÒ;~¢ä^:%ûªü#”J¦‚d ‚F tÂØN2Áh¹{ÎÔ"šÁOÿš‹¤ùî‚Æ@ŠØì^KÄ« È)ª-£OÈË31’yèÃÛÁZñà¶E‰|<Úw zkO@›ö)¦? òÿ’F(»Ìk!¸:CYŠw¡œlqÿÄKÚ¹½a 2´ 솎*iIAàòÌæ’7ë‘¶v±Ä(uç)­;Y²—™Šp©ˆ%EÑíjÖ†ï>(ñÀ-ñ'pU¶Ò6#ÔÀ¦0x>ÆÓ_V‡¡ID’E$kù VÐRE5„AÙ‚FÐPÌB¢H%R!ËÍ)Ú8dÄÿ{!ýoxÛÞ¸© ûÔS_³H²Ô3‰íç…µ§ÔLå³Øâæ¶Û #˜´Öø‡Ýà`2T?tU50Rጃ ! ç"•#$UÍŸ/æ`9 \DÞ %´…ºÅbÛo€]×Ñy‡Ÿ,ÎÞŠ‡ªª[òQ†5 !*“$S[¸…Ñ U Qh„‰.•UA}Ôh’Jƒ"È’&§Mv”†¾"n™Ô$ww+˜'MM87»íë¥e’²'(xþ‡çëæZûýq™t½>²ÆˆBMw²³hx“”°üΕê ]˜© HF20!$„ˆ°BI @’F,Š6ŽºÃ= X­Óƒ.Þ±¡¦ Z*S !„"AVœ(ÞÔÓ©×R2§©~å‡×êóVgì¿øçÛë[\ƒêaL<->ñŒ4!®QÉÊe8ÅÜkóM\ áì² ^¦††8Emî™MÂf†‡{®]ö¾鉉eõ4/µ‡õ”îKÍ8nÊ[_êÀ˜fÌ&ó™N¦Ûkôø4RwmûµÿËc?S3‰ÈtŠ}? *& z?[Z¯Ct&§²«…½‡£ÁØgЇ°;y‰M ýÀ[fƒªìíK\î‹à{‡8Šþ}E ;`ðµ2öõš&=†üŒ.6°|Us«úаý.:ËX‘Ô !!±Þ~Z/À{4C›AîªCu{аÄw~?ôL@hnãÙ,N0”¤Ä<§JqwÞÉH߃Lí‹+„sç"Îÿmrùª˜Ëó¡!æX1…—Â×Ê ¶Ø ÅàÞ"ǹVÔ&á<\àˆ»Xõ_HGÈ&²»=nVPúªø>šÐÃå!¿ô‡T/0îRΚ%8mŠŸp$“k³S„€šIP¼bŠô{MŽ0&òVms)‡ü´üÅd™Mgþ„¸”)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€jü^ï·€3o-î÷‡=w»·½»ã;¾®îeçÓ—n絜Ý÷¦º÷Û•¾ëß]7ÞøìÞÖ÷yí×]¹×»Üïr{Ó:öoc»žž×;×SÛ»u³}ßxEI©š50КžÔÚ™©“M”Ù4ô&¦žM¤Â4É€™ €M20‰é6¤ÃL™G„ÈdÐiêzF &˜&›FI€É£S Iê5ªFi4Á”=‚zbzy0L'¨`Tý=F™1OIú4¦ÈÔÌš§ä4i¦1di´ŒÑ¦$À™ˆÔð“M£CQ‚`Tü#i‰ªgêSð™j…TÓF†€e2'“i0hЩþ‰èL™¦“&i10§é•=˜†€ž‰&&OL“Èh&“OÓÈžL§©áO!ªzM“ÙOLšhÓôõPŠOA£IˆÍM46•=´iÉ¡6)é[ºØë¹ß¶¿˜ÔÖ†I_Sm4ßjn¢Zÿ¥ÁŸ5]OÉ¿ÒÇ_n?c®ì¤ÉV­g)k±Ý¨s?Ç¡cÅ3¾^,ìƒÃÊnW7£DÓMC Ü@€|dÕ¶Nn#ñÞ¡IdUp[®Bšcj©°È¢ëK Äñ.(áw#ÚµNÖûñyBªÅ~m¥ä¬ çÖ„¿è¢¯oóõscç_Ê=Õ¬3UˆPU>ÚæöØNÂó´ w˜£…cIý.íÌ4°ƒð_…`Å+0`6¢ŽDJæ<eæ«_Iî±°Y%ÏQ£¬©¢]ëªîµCDrÒ“`ošP:Œ_@žþ6¨­ŠŒAæHÜ"ŠÿV«ÖTåñþ ‡#<Àx¶y¸[ဠ”ÄStkW Æë«òŒ÷RFCCqŒ­Þh:TšIÒ• „ÃpcÔ6»‰¸Vú¿[Ð{qæ\‰}´ÍÃyÉŠÞG¶ÃÆ@XSÈTE Â> Î|a§ù*&$ :A›Mà,€H³Ó šzSºŒ+_ut° »wˆ>ÏÏ›ÞK/õ‘†+Â_ʳ £"MûPög cû·”AY«ð8[xÆn»O›–þ”<;޽÷üÂl)ðIJe?Ëbg–-êèÝÅMOÞ*†T_ ðýo Š‹DÇÙâ~\jóÜ%·…ºñ‹sÄ(¬Óü¹ÃÞwŒ^]àÝ%ääôÀÞìX½Ýk®<7Å擄k˜Ã¦ YDµdýŽ}ù+¨ ¹—›âSÜ[=NG Á³5ÿjÀ†I>¿O%Íÿ¦0LVC¦ý’m—šMV އ´†ýGÄlyHL­Œ%À#Á!$:Û„&ãF‹¬Äš^Å·ŽS|V”˜AÁ ¦ðè§-ó€€ O]Öà6¤*T纳+¥bU‘ 0‘zd•“ XA\ÐY(ŒCºhá„gOXdÓ lÀõ…TÉ[2Û²„4«$vCÎC‰—d”¤Qª”Ð:eü–O—»Èÿým¬†?eŒ£Ñõ’ËÃÂÙ`ñüÉ* «ÂDôòv9®QRmçE££«å$ØÃ³´ýÊÁÙO>Wqls´_@Ü(,‚øSc4Y£}“FÇ]/Zêa½ù5è™CËžrç¤Oâ«Hê900¤wO}£TÎðbÌ»üßùçòÁ8j2'Ö¿ê;yìoñÓ°ÁÇX;”6f³È22ßü`{aâE„Öñ¢ŸÌû‘!‘ÀÄS¼Tt?] I3K{šUþò8ÿBN•ãü³‡ ´¡zÀãøÈ#tnp2Dˆ“ÛyEZ¨üTÑÔ “n¾ZÌ6ÖSŽû8º©‹¬k•{¶{·6ŠBþ(‘Ò¤bô¤€Z4^\>çýyÖ4!Ž·Î‡œ‡sÛ¬ò‹mia{@7{jñ“c…¨ë^hЦ¤%amHJÿp/e$íE"rPá)HÎÉ>u+ïvrOÃrÛåÊ_žƒúŸ:[àùÎ.›/j‰€k|±yÇu†Ê—q)Ðjgˤ!Ë×û´´Ã9wâoȺ"A‘ļ"M¢õBÄŸ÷/7ì6'š`s€êŒ)¦ãa4ͶŠár•î?ÀçËCî2˜Š? Ÿ’§ó¯:¾š¢>“ÁþÞö‡-äËIt "¸`7ã 0œ60 ¥–ƒ^Œ@\Ãñ¯å%˜ƒBX`0ÑIè"±ãVW Ö0i²òDìvåY×KÀÓpOlÖUGÕ˜R;Œ’Sø¾À žøX±.Gʯ=EH& £ê¨©t2뻨Xæ³;7@îXÑK/±%ØNp‚0½ìGP Ò¡6Ù°ö$·êÿÓÒœ^ßæ—,µú޾Q£„Ï»8©q3“Ê·Ñ9½ë„*טivò©"‘L ¿«¿n]ÍÔ¹þ,nÚ+º80¶Êenô\'ùoè¸ë: ÍÒ$ãÅãøpÞÑA‘òíIŸN­R5WÝhØÕEÚk†°i©ùÆÄ{!Oé‚`ø^ªª—/L³_ ž„þ´;«ô*(ç!4#ù E,v vð¢`Ý%§æÌóG‘dëÊ-cY¸\£`‘\?ÓÕ6)…G³ÖÍö@ÄCdÔj:ç%Ò™XmsÞØs6T"3;^EÓ.´º¹xÞxJª™ •tß5êÊmªÓ§Žçä(”pø´ÅÔx0ž‚'=Ô:Ó#g²}£ësŸÄo`Àô)ììSô£gÅe+]û5¤fÎ'‡¬¡R•Žz pôÏ¢ÂîksT r¨ ]YéK\Æç BTÛTùý»_%¾î§¥e—  #îM&Á*?(‘^Êw9åÉéLvË%&N¹ŸÏT#½3Ã2êCpNuË‚3³Ìy¡j©È#|8kãYHÇAL¤Dt›þГ"º“ ØzuxÎO.ýšáe·'ÓÈB}—zÑf^Ò­^ò'uÑ"Y¿¬É6,öά«V>œuäMÇËN¯u¾ŸRNiÆØTãÆ|Œ³Xjì#o„¾žr³;ãÖçµZ$NCRçZÅл;Ð1eÀpÛFä_r±AëˆÊ·Wªk™o²ÑGÔëTIaLa²7m›Ðžõ´üræ{Ù©3¹+ý!†W¬ðHK®ïµeŒìÜ#¦bQuWÄ|÷GÙpÐ>À~ v’^¥+fË1aÍ-ØjsÓÿ.âoØïö˜mOäý(ï*,Ï™¯Y0lZ™…]öÅ|ù¨„û(ßY( ¤ØÙ[#tÌh«¸»ýHBÛ<¶!«\ñÁìÌòz/ÚT³;µÈFKÇÂ̧Ax»]hÙÓŠt|= ¹g¼Ð¶ÚTÒ)­ßÞ–D8Á%BÑÂmѼU5Ã:Âô ;âdãoKuߨmׂ³æ[§<ï[ó²ü±iúxûÏ“_|*mY*ÝÃú©wü¢ÁNÒÔûê…5¤UÜØË§J÷ …Õ_“ºƒ`‹#C€ÙÞp<£G²ß±Ú½VŒûAJ?A-3øðAçÖ@'"–ã‹6ê&͵5íÓ¸v©AÓ‡ÂÅX™'®ã1!üµ™Ùÿ¦²[×éB¸¡$Û —áY+ÿ^kµë=,1˦Ç9DÖëÎíËä-Ú|2ììK̬.^×™“ô&ç°ÁùUå •<'œ–ý2F&Es óO¼š…‰îï¯Lӱ޵ÌwvUZƒNËÅl²‡XĒþ0”-Í&ôÚáé¾çk|)Û=4N˜A!±KqNqy¬þô=°—Ã|»°Å~*fÆL7ÈŸ”RFÛ߯ÊPûmÃ1ïz¯YvqÏLÊ&A¿z/v‡dG1¹OW:ör’/îç8éúyÆbdš4Ó0Ê裌ԯÎâUR±ÌÖqÈÃ5C WÕ1Û· ³¾Îb,£ˆ·  2YEñ1+Ê,…¡°ð>#Azaͦ–Õ]Aöu£7J=µøÛ'Ì]éAå"½"§e5°PO'ø$ÛË^»ŸXß®Jr@ü‡æ5þœ¦ÌàÃ’C¦Âì.“†žf.ááðÙ†åífæÖÀ^(L©BÌTø"ëógif¯eÑÀ¸à3¯Éå…müL¡eCÛh*¼Ï^;”3SFÛ3îV ÄÇ·jPšé²~Ò¯ŽGñÅ­àéxôD­\ç9Ì7úµÇ]Ærõ¯G3lsÓIÖ̾ñ%ò”îlj©Rb‘Q[ËBHáScá׾Ź?¿^ûéËj×[Xatƒ‘W¿'¿ý¹ÞœHµâ]h,²4gIÜ«ö*+“5²ƒLµ¦Ïé¬ZÎk´™ËìkYé½KEºF}æk•-fÓ2¬Rr|NÏ܃v<â0íš.Ž©ˆ}–/Ïor» tÆé|\SƈšΖ:v(.@G—öèÕË­¢[Ut#Lf¯S2ä®Â€–˜¹Áãkßµq70ÿ¿ßu 5ö‰(»¢l»‹~ýbºÚ‹Vq*”¦dÄ¢u0å1ö†H3´7p‚Q d=EUÒzw•9oÔ·K“s<ЭKúu0 Í>£!Âîslßð‚Oå{{2[7ÙoÔ£ßþ{Z"tå‘ Ù@âbpOÎw¦¡“Ô÷õ^¿6ïÎÀRpr|y§aizt¿!*àCYgI–¶† 3ªîŽxje`}~„Ðp®.TŠê‰„FðqYŒ—…GâZͼò¤¤ó{ÌßÒð©"q‹ §UÎ÷õ²õ•<º—Ó7Ÿ¤Z³<‰èb5›'m²ò§ÉÀÇ묣%.V“ö†`·3 wDrhùPøž·‡3iÇåMÒ/¯h–7ºé‡¨˜¨MLJQË@A©LCO¬â ðšagêàËÓµ›è[jÿî¡óñE:,P¸{̬LwIµ½xØŽ7µq%Ds5–›ºé¿ýƒÕZtRº %Ü`»ø71÷±håzëŠN7Ä!Ýœ'_†Mñª×+ÇRØ—É2SwGõ· <ŸÒét“üª³SSÜzìoâSÒ5˜hy´x_Ã#²¬¯V%”Ñ-‰ *ÌA`à.¹!õùÅ|ãâIÒilò«iy-Œäw±Ð€úˆ¶´9uejÇ Ÿc“F˗°D}·¢˜“„B½þ´—¥ôqPÄo-© )Ö%—|<, ÂcƒÖDy»ï‚2*Ï[‰ûäRñ,>7¦<1…‹ ý~þó=„äVÆBÏKéâÃ^¹zª·}$öiÞKEEà6ÐÅè2&+ˆM׿è;Ñ)€+å³ÓMטëô¿6 „óøpÚŠÏ#½â÷ïÝœ1ßµ66kœ µé•Ü"óg½?"dFD§6onþÅï˜}Ø-7³·Ž}®#/û=÷Ÿäç/Û‘i¦3\߇Ï(È À"œ `! L9´—ÂnŸÊ.kýZ^ øß·Ù*æÏÄ£ÌÛË7{ª–PGÕ‡8Á‰1Žeo>ü}ÇÌÃA¤Àf˜:…ÐqZŠ¥°EÀï¯qx"ÉþK?â|wl^¥õ(u§Í§>þ¡¤€@Š!ñõðW%åE:WáÀ,™q/Ñ…^K* )Ã_vr¼JoI_cL âVZçM7È'SÑ_½›yÐã<Ü1yxœ‘6r€ä„úT[»d‰ÎÍ8aü Öø.Ö¾w»£gÿnÌb+Ñð÷Þ:±è„fc¾*s"hÛáüA‹lèß·ËÖô¼ßhdz²}ymÜ;‰Tæ“ùˆà>!ePPwX3¼SkÂ)¶66:éëÔ¥ì'wZÊÀ@o>Ÿ=?T—žNiïŠbá0)ÍÌÇÿ¯ ¼ ?…9_ Îø¾Bëþ‚ï&n„Û' £NÆ?4¼×vÌÊ¢.í†>÷:á?]õ\w©Ò†WÂCMü}@ Rlú_3ê=Ð¥þ§½Þi(¸ói²Wè<ú½ööcÄeÜ}ÜúVæÕ|Bx;þÎ,a†àÉž³nÛ°ö²G³¸@.2ägžTw*[¿KÏÒoÙ/ ÿ c${‰j›Îûõ†kŒÄŸUÞ³pyÝx@—e–ëWs&›Æ‘[&CŽÂˆ+ÕkeP l=Wm´ÄiHªÖêÀ½E)H"´Ê«NkZwPæO{ä½Jge¼>ع.‹[N…ŽR«â›ÃäÞohOŸJªªÖ/‚ó¨±Ë|yýо3}’÷,…©³YäœtîOÍ`û«¢¨ì‹÷„.ý¶+JUzj;–7k†‘Ë–·‹u¥VN(¿Œ{fádê;Û˜Eêçèø“Åô)ŸNU/V_IžÎwBƒôû‹%®öy—S¬kë„Yt'2–ÌDæªX¼ÿ/¦Þ’dŽmeìÆ+5§…³—0FÒøæÓÖŽnrCä~qɧñà¸ÁG}2šƒ,Oņ½Ýûw:Ý E‡Ò›nü»qHÛ¢úü»ˆ  oÂÔ§ÖžD_ì!L<9 `´–haV5éÝ¥sn¬’„矼¥D•ÅE¼öãŠÙ™!ßøäÁ.Xþ$J·^¿Õž½"ÓŠ%ºËK¼Mm¤ûÍ¥„5ó½ÿUÄy·¯mHþ÷9ž£Ã³Ó!4–QM¾yQ9’|XAÙ…öÒÎóœõ<ÂÖ y§ñè1Åæ¶€ù%œç3ßÚèìaW±»_~:+e§wðg\Þ>'/ÖQßH¨ EÎN„ü%^Úæ²4s}1NÓ6t½^>\Hš³Fˆ%â„Dÿ¾Ì~–B ‚žD„6Å;3¼&Ì}ø[9EÔt(Ô%¹/R 0‘ƒdɼ6“]“¦Ú5{|„9ÝÂù<Ær‚îÕ¿Êëe'¥^ÕdúNéÒ ×V£Pßû¡Ÿ0Ù@çâÍÆZN·s?À‚ôL¬<ïòáGÛÍÑü åFQb0„¡ù‘ÇÓɲ>£ØªÕ}L‰û"š«¨òjy<¨ve[¨Ïù"ƒ~ʼnþµ>¹®©† ø '/ó«7⌽^ŠáX>Æ@©x\gS«äZ_ª®'`bZñ·.‹Ø:îqŽ|Ã, òÒ¥?]¨¶ã{u¢?ÁÔ¸¸Wôç{Jòó&º ã±=ñ×zÙé×ë,‹Oô&×!·8å ‹¶¦§C¿"ÿ­b¿ßúaíRF8KIƒZkŠ7*¤s~¤* Ü~³ 6ÃôÜ#J ¬CóA<ÙÌ kã„3tSÛô£Ûž¢[ǹ%œWtwlŽ-11*×HË,˜eiÚ=ÏxžÿçÚflÞ‰]CX¯(ëþïÓª¨?Ùöϧ ³4—²i0h'Ö÷f©m™ÆäÉÕŒ£)Ðѹz#Ü$ªî\uiúøuÊk£ÞgÜ‹Že *L'ÎÆuSÓP”wÀ¦ÿÌö>´‹—ˆUyIé8|ãuǹf ¥^,¦‡«8 ‰~v¤Èãü‹t”¾í*©º:WÐ?†¢åõ=šˆöÓÿ„éQq8Ø}Ù©I–ž;nªŸŒÉùéðUþb7Y='³¾{ÿeÄ̂ͳ b!¤U@!Êvýº÷*‘¶|x³auòƒÐ ¦Œ@ÎÞø÷oKÜù‰C¸8âÅEÄ“Poþ×ÑeUN­„d†¥ñhi3øUj²­mþ3Ó»>Z®œâ†1?ŒFm8^ üP7e |„Å€Ts(Ù„ˆ›kã_),õ‰|ó?¤Cø*Õõ†HŸÒkñ áÇ.¥ ãE&¤ý4V;Xž×¢õ2<ÿ¬¾)‰‘Ã;—E¨[ޱV’gÈoo/£#Ö?Óh›¨{›Ñ\O=lë¿ùc‘ç˜ïKLEm+Ù:”zn­_rˆ>@Ôºx9EÔ?^æM5yÛR]®Lõ¾IŸäNLcd ¯ÓóFË8vÜŠè|a¿ÚËÍ×ñ3òv‘)Ü~³{ø/匀5@ƒ•ÑMvêQ™ÝJÒ  Þ‚¸!ÑRŒª¯Ë§ƒéÓûþ9ª«Ùù©T2¥QøÃ˜hýÙ1nX;Ã@—eÕÌ̃íž¡×_Ï”FÊ—g’¶§Œ˜/ËÙ•°³Èów-zÉ:–ˆR'}Š Ìù«¹¶zqÄÌ|@÷Ä€Æ+YFCÍ>Œ×èµ ¿k$XèÓJÑèÁ'VåÎE6¾Eò₌?`$¹«Ý¿3'aÏdœäI¿@ˬjkÕv1D¿ï¦¥*¯Úuey¾ïpš­s{— }(«'®:>©æK»ÿYe,äß¹’Å :4^äÝÌAþªµ¯ •Ú0Ætd@±=ŒÁŽ õ²×úߺVÛeÔ¦“È>¢˜µNvyð‰P¦ÈÅ€MüÑ M±D£ÈïÁ»GÖ!(¿ôB2dZºoo(»˜L,|fÓÄæÚP@á«u:Ÿ—Õ:TÙ{û[óÙJ넉ó( öþçŸäYzóGèH¬¼(Iñð/æŽöõ¸biH!sè–@3“ßõ…’%‡vÏ_ëz%mË:h‰Îîê9ãäL¢‡wɼ”3æšÇŠjúêµÃj*³Vä[Ö6Jõ?8 Ø¥f|S>ü/›/~Ú“ž˜\xÒmíz¨±RL[6g2 ш¶Â‘U†Kâ’ûïêš JkÉL—ZÇÄœWlAÑÒ8@xìÆ: &’VŒ\v›[Pê ­Õô ¼Z%q6Ô­Ô›ùiX–†©¡uj¯p¯6b¡Á«Š‘ÕæGôîšð}cÐÓeÑå¸[hûÔñ5CæQ0Ù­ªQAùϼ­*8ËAcíÇ•k²ûB:#øµ‡°œµã\Ž+Mm€ölwU+º”ћވȃƒ¯+;„cCÿå‹ÆÌŽÈ_eŒ\øík ^ëår€ø»“ ¸Ê÷â“¡ÍT}À )êáX¹•í ¥ašÒF½<™'°ÒX¡U>Uì_QÚRÓúluxpÁË/ð™››£eâ,ŸØcñ5}läa2"»“ߨTÊBø;7|÷6€ÇPNfBÍ]`¯k DpØ:ìÒfíéX°ŸöÜ:z¢'ÞÉÒ`_£9âLñO¦à¯9Ĺñs43 TÔ%ž((ìºp“Ú›ºá‚ºÉº1QüyèâöŸ yVF~Æi³¯`TEöÀ£~RÑÈœOþÂWn©±¨˜ŽÃíóô–€áø˜ÓaûýsEBÇ7Æq®Âãµ üT™ÙŠ c)Y‰(aœ^Ðg¦Ü¡FN(òÚ¨Ö1nµØ«L¢Ô¦E(ìC¤IûDòª4•þ¾ù“Öh®-¶Š\ÈZs÷k¡y箟ÌQÎÓå$aœ ÞŠÕÞó-¶¼ÞOB¢–ÅÔUpî`¦'TÚÐÄéƒ,Âp]IÌÿ´W¨;Ï•F’1k½}’´¤5O±¢Æé&ûU§ç…{ë÷5¼YÍÒGnYj2maJ×rS>%’ªUj1‡ðOßUg9Ó8N 1·ºè?ت“Z“]kJlM’[±åm£‡©·$¬3OnáAf‹¤’ˆ”2:–4±W6/Vtp8¬€ôñ¤}cÚ£‰ ØŠÄu؈eÝ­ql„Uì[bJ-k j Ë ÄÒû—÷gaÿ/m|ƒ†Øú 7®o¨Û,Ü-®-±êîwWj{«-…Û©?b1ú>Àÿ×j°G0Šñv§z¼þi&l.}ŠŸ/…ãÈ$öcsºö^&Ò†xÉ#0{ß?$—5öè<ó°.OQ ‰ýl³îÀ˜·¨¿‚W-+?¸&^³¶ð>°@€³µò†¾ ­©šP× )ÒØ3öJ¹±ã(ÂÈïìDÀ~V §Å–w*'×§2íxåìâ)=AFOt“Ù@”P öjd&t;×Ç”a¡o±"¬1ƒ>㼃ˡ/9i&ø ­å÷}óŸ î_JURõ˱5g¥·`R½¿±Dè"ÆW‰”.B±gú“Ÿ|†Eœ«¹NZV ™N-C7_qK ú.²1§Yò²«e–ä¡ð ^Û(U\¶ÍcŸÍÆGk]ݺ?ß Ù(rÇ{9:»¤ž!8Šõž÷wÞÖƒÒΞŸyx(×RÂ(á9¶Îb=ý´’fåb¤ãó –£žÍCÄÅðf¡|ôf_5{ÒöïË‘Ø`dÛª¼É»›Cª8G§Ú­z.½üJ’¹ãBü+Æž†Ò¾ˆ ™Ì^jñ8?§•Ä™^âì±Xz³Ú½BUׂVП—Ì” r‰‡ªc…Éø@©nµE@ŒØd$'9SŸ¿è‡KšÀò±«çòÝÀD(©ÌÆÒâOiY•¢,g¹…Q(“DõòE=ªTÍhWê¼bRaùæÀâYKeâ[„ÓÏ Õ2}ˆoODgÖ=¡rþ{«#¤2 [ÄBl;Î:NTعI209¿|£mó>V n•!JÜ\Ù÷¨fæ¬4œêeŽ”j98š^œåp0K ÿZOXK•ÆóŠ¡ÈöC²R^^ærΉÞ$ýMø„A]zÿœ˜d&¦W#tû¥99í¶o3ÊÉòŸàcZ‡õi'‚絘®S&Åò§«¡vW\ÇKë6Üqy?Òæ¦y‹Na(È!‘êV|é㩲U’é›lqðϽ¾DÕ»Ç÷ä¤Cì§lÑïQ§£-æE&2Ra@6ÉBÀ4"–åprߕ۽ ¦Od€9gƯ¿Ž;fëºï›•ÞÉq Î`–û¡&XÆÇf=&CØ58-?Vê¾´•»Ft­¦×ÂûP~ðIa›T¨$Tl¿ŽÌææÏÙwS €£µXgú CÕÁ3þH¿z¨L”›Ô2ó=…Eí†ÍØÒâjïíã7ǤÕà ›}ûÊýÒý/¾Ÿëú$ã8~sø3q£.½åx1¨T.;‹š¾àWGZ ·Ñb-~­ÊN§î¬rÄ‹,Œ§‘@¯`÷­3¥¦(¾óvH¤©eh¥JopVè"¼n€“l-­ùÔhás™ìÁ´Û`a 7h¾ºÊ:Vóä‡Ì¼×ᑵ££f¡ÅAmÿn狺m™kÐ?%”ªóTD¢Lú~w¢ÞÆÖuiŠ­%´+Î>¶_À¦¼Ò!Ø a{µâþj¾ŠÙ\æN¼}ã{)öXù²Xæ¡Ì.ß·œ-œ¡ŒB›jãâ3iS:?=6]°èˆÍõaJãbúd6‘Ú/N‰ N2 à,ZTöÍ7½ÝkÓRbÄås±·b¯Ñ­÷HòVÎ w«iW)v»IÝah}Œ?›[a¡T›²-wŽËÑy¢pž'=„¸ÌïMa UR/À%j`f2úÛF81Ð`×#Rß%“žj=üóŸMVÝ\¶Ñ»¤·h¼n’M¦kêKnØpÛÓî2ÙÝ;õß‹Ýtîê"yTðòpÿ´`•ÛúC÷Å;j3¨ÕŸ,ä~Î9B´çÝX¼ÎnV±‘Bþ$.òK¶ÉPñw$S… "É zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.802789489 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v8.dat.bz20000644016037001603700000011261713607166133034131 0ustar00hutter2hutter200000000000000BZh91AY&SYÂPãº-ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà^z¾ç×Ýà>‚FÙT¦S65jÖ¦Rk6I¤j+l!m¢°m´Ù¨ lǦwc”%ÓVÖ§_s:zµ›é–•ÕíJÚ{víïk²”×Oª{Þóï¾ÛÛ»Þ¦ûîûϯmoq]«âîÞÝæëÝÏ^{•}öû﮳ÜóÚ¶O3·ßYµ¾}ó·wZ»6±×N׸÷½ÊûcßwWÏIV­NnÚ;'k=Îò÷}¾y¼ÊÒøa{ïŠð>Ÿn\í}µ9­J¥DŒÛkBcDl&U½íÓ½ªçsU¶ÊkZ²ºjëUÝÜÒ¶fI¶«U‹Ëì¾ØPo½÷O®ø2©LM0LFši£F™©†ŒŠy¦˜ši£&š $ôÓMd1A¤Í4hhh ™4ÓLšdÂh4i¦#&L0L™PeQLLÓ Êze=0Œ44ÓM4i’Ÿ À˜#LLF ¦FÚ &™0žM0@i 4hѦ§£M ™& 20Éêz Ê¤Ñ 50§‰“ÀhBdÁ0dd*{ 5=Li¡¡Šf“§µ=5'´Ñ Ñ“ML£Êa‘ª~ŒFš5Bf¤ôÔØ!1¦§‚2PD¢˜M0F¦dI˜€dÔžM=Sz£Ê~BžÓAOIâj=ªyL¡âzšŸ¤›ÊŸ©=ªz'êƒiÑM”£jI¡úSÓÚi=OPmOSÔ£OHÚ)éŠSô§¤zž§”Úš© “ ‘6š&LL&˜¦CM4Ä™„jy ¦˜“Ó)äi£MOM2õ6Tý&É‘¡¡£Tö©àÓL£ja¡©´˜ž¦2O)ùzA’ÓDÂSze=z§€SÀ&¦dÄbOÔ`M1Ií5M¦žšŒ#SÒe?@$üMÍSñ=TóDôÔÓÔÚM ¥3ÉSL™”ÚOFQ¤y¢mI¶QêÔ=)é’iš²?«¦4d™)Ô—V ]èº3°;" áôX,€à„(zÓzd:S;?Ox܃ðœgtvmƒÚ:ÓµØ{qØã±{×¾-CPA³s§q‡8g—Œ÷%=¨P…J‚ Š@·ÉÄÂi8Ÿ'ɦ3¿ìw¸ŽÍðõþfsã­_Y¿åéuн Æm» øzföÕ1,MÈ5lzuYœŒÏa;zÁŸBÕå ¯†’½¦‚aÍÖ£äœ5«ˆøÍ$oµoWCÁGµúýêRTmlönî”më2®aÖ²[Á!¤ÄBkC!ÐmÚ]>»:ÐG|2¾ H&MCó«UÜýçí)zêÓ‰9Fõ‹oã¥^`/}—ŸýwugJ‹P_Î5êý3]JráP€!š6B0 e%Ø1¾2jA¨'XlB7”6NI8ó@5c©‘ÚÑÁ?0Ц+h§FF0„P#¡nuíPNí⚊+) ¤J+0dd¤øE Š+"™¨æ™®)Ó\ªó¶y;ºwÝm¶Î@¶ðàAX® A1bŠH(,"q„Y+EtΦs¬YU@Æ" ª =D@@DÏ€€°Ðz@Ó`0Àä!^B Ü4… (Ô€ˆ4(?<…@R (èøA«P°¤¢ ñA¼‚Bx°ëˆZ!ˆB†)è–•Á!½ c€Z<3MaÈ…KÄAñƒîHãÖMY ˜åÚ‘VÂ#c ˆ lP@AD €mÂøÈFµBDÃr$%ñà4É€KÓ #j@Õ1HÀo†M!^}'¹cظ@åŽeŒLäb†kòW Ò¶*ØÀ ð˜o|cÚ"A´c`Õ|à¹EˆÜNÁ îxšG ÌyÑ   –C>HíœÜ0lÁx ë4qàJ§d#€w hÙ\÷CÀ@žA³2™cn z2¡w£q lGh59½=Ñò´ÂNáÕŒóL32äœ óCLzáÃ'¢ ÖŽ¤jž-Ñþ;œuˆƒô¡Ï¶ ÅÔ›d ?=ûe«°ÁFwìJöy¢” Ô ›yhRl ¬brG‘€ôcÞ ûm_ŽÕê‡÷…ÝšáĽXó¯°7üóé†Ð9ðw—¿uÃ|r4£hÑC8q¾ Âlçè6íØ5‚L©A„*ÂLP*Ú¨ÑêF jG4n©¡”Q°{öÌA r£j|„ ÈP›+CSF;÷bõ*€+ˆgQÁÀfŽ?œtž¦my¡õÞ)8Ke·}×ÏuÎ÷ŒëÝKÃp.)˜áš 7ö*p ÔƒÅëœÅ9ááS²A¹ÔJ<‹BÜ:1· øÀ^„ï›Û33XP„P¦Ã3‚!ÿFÅ©L{€laÈ4€Å:‚îÄ?3o"U?Î@hZ$F8GÌwÁê´£|±‰ÑŽmž+Œ|Õº“YLG2`Ó?} †Ð¶7k§‚hù ‡ä0èH,ÌläÁâ½x@’$Ná}À(82Ø6Sº&—´ ökv1 >N‘ª$Sj5#Õ²tÎ)ŒÑ0gŸmÁ´P?ð÷ŽYb¬ê~Ú zŽE ñ»mJÁÓ2pæð¿9 cÊbùlÇw XâA̵oÏ&øvOº§ÌäB®Ùž©ŠÁ>!Ù­.,*Z\\XP´°´´Çn¯†Õbݹ ÇòaÛb#4^ÉÆ5Úo«¶êYÂôÝ[;ˆ¡¤Ž' 'ØÖÆsñ±’àœ|@8†'ÃYÜ›1(˜ ú 3åÔÔ”Q2zz‡©ãÛ/;GÌp[4Žù Õ´÷D« ‘« †sH{ÃÓ° [åâ>‹¨i4F˜5Ž!œèW¸`IäÌ`kZÇA8÷[ã&©êGnÒk r¬Àp é¦húúd(ônœÌršy£Àn\àÇm¡îˆý¨ÅÇb?¥øáT:˜;Ç  u€ÐÎm yØ.4'«H°É•,Ïñ?¨ Ýl_$žF¹œÒ$ÃM¼ZŽ…žü–¹«k†úéÜëE¾Õ™FUÚÒæØ’÷O,Îk mYîöÚôl ¦µ7jVܼ ;)”·27rPÆoAâ>£EÑ0 ÈÁK²pÁA­`þ§½'dB ›RÛ³ŽyâóϘa§¹´+bDÚßÚ§šV6 v,dű<#¦:¿2[1—p8_ÒÁ·‹ËÛ ¨®-€r2U=cÇ5,þúÉÅt:Lu-9ÙJiNûÙ 3wy2°´ŽÉÀ¼€qké9r}ˆýÆÁ‰M›à´讣”qÊ6<äQ 8¦™Ù´@ßqSN`©øÙB (…[Ù:VÈ©¸%;¢0œ:‡†2†ìáêH⟒X|R„ñëJSÒ–€B…¡BÆ1/ÖmRÒ…ÖŒcé±°…ƒ`Ð`Á°`Õ,(XÆ1ŒjÔ¡DÄ*#ã6H,оuc·~«’ܼ™ 8ꛀâÆS“:ð² É¡™õ™Ã”-(+s]\_‚“‚‘ 'Šö¯BØ>_Ï£fúoDü-7¸ÖÈ€JñÒQÌ yð5… `§t‹•Æ`f j«p3—å0Î@Ò ÈG:À/‰ŠßLÔíè|e•Å,%ÍŸÈÈúˆd@Jiç‡d‡Ó_D}ö™ô ªôdS X&B¨Ç¿P^#“gÁr…Eñ_Y¥Ð½s¡sodaaçõ5%Zð€V 7˜×µãã3CÝ@¾rÝÎÖPüV-’ÜÑd4ÖÇQHh7Ï  Úz}¿E@Ënýì_îÚn4ù5^ì†ÙÉ€PÕyóÐrèƒñ d±ÍBÙdäLX{—&÷s/9|Ãǯ{®lFè &ºˆz˜BÙ<Ç’ä០ÌL|¨   ²pN@…õ¡Û =ó¿@öóŒð²YÛpiòl •@ú1zpý}Cë1 d±òàÿósýrÎ2ŽÉÙ¶¶ÎScO>cFÔ Z-&æ €}Àúƒ¸j.¬`8eÇxzÏÚ¨îæ®h9P]Uöž\Ï`!àP ™þðÇ}—`ä¸Í®ú'c¼†‡2‹úóŽ#÷ä'u“‡~°?º”€çò,“Î>ÄdŸàÃËl¦Ll ØÙý¹”P§òUŸIlPï†pDuàP8ODT¥ƒ±Š‘ øÍÂËc<:ö6üË{ÎGtÛ»öC÷ž-QÕ/×ùkh T0©–˘0…ÿX;g€é*å»Õƒ¢Þ²4#bÖ øj¼B¤h\[…”1†€àZå³ ŠÈˆ@Ò Ÿ 4KZ¡âº[«9ì[`ÅÙP8"Û‹0/e …YÌ„Oàÿ±˜%Ñ@ÎèG–r­œŸF¸'4'þù,§bvÚç:§ú­é7Fì´xÂXŒµƒ†0vC€8âc:ÑÏ@÷a„èn~‚I€Ò‡À‡= ßú`¥1ø@ffAà{å²Ù9-“f® ÌÚ£ÇÕ8|°ñMZó^‚S¹Ò6ú;q¹Æ'ýûå-˜ÜXŽ9Ñ oï*Ã×1ޤjJÀI„Ð hÈñ'Â|t ‡$f!ééòC R0oì]ö%e¿À»¹±mîåš¡©‘5¡G탾œ?(Nkª31²ŸJý¹¡ÄgÚ{zi£áZ»çâù¿Ùœz‡a™~¥òn-³g0ò-'70ü!¢üת=±j†Ft }"PÙ`a‘´ƒÅ@ê±Üqÿa·2ÇnlθœTú6aŒ)!Ä)tuke{pr¬Åc»gçäg›H–¡»½RÁ”ùìÜþÓ´ø²rÜ›õôj‹ØRZõ^ÀKiP<;%ÿ÷û–fçžØfÿ*‘-MgêS³&WM!(e GlûcÞÏí,!´o2¶?h÷ß«•&y·@ô²{zS"ù÷³!’ÜÑßÇÜšÇ7öp±³WN†ê0G›‚R¬üá• s@ ÅŒ6;–Àj,Õ>cpý—£zƒÑ7Ý@ÔÓ$%1Ѓ od(5NéŠ2{¼`ÑzpgƒI˜.›t@ö[wFxª/FËJáå‹ /(?ŸÔ1ê@œ«ÌNdWÇÍ\_eà!™@­CF=Ìch×[¼Í´!Õ WTmn¦bùÔô\âÕ™S»/°Íž¹Tsç\p̉@·¢åÝÚ[tyvYLÀïy—Å]W$ð¿Æ'åÅ™x¦r”m'ønI§ô! Uc—o¼}sÏ„-£ÎòûÚÞ t5û'•\ò«‘\ÊknÀŒZ‘ã ö¡0BAÄ=èÈõc-¡dƬ‰{ð~ÈXèBšTëG E¤3 WƒPÕ¡¬À ”Ç:0 …´@‡p³2P|çNî—)‚tÁ–Ü:ÖˆZêF ‚ ‰Œm5)ëÞ}¹pî›WúÚ”²œ ¢ðqø<ÿT¢03ÔW”)är|Ÿ’×4=hÏ ÷?0} ®5üzO«xÖÕp<¨i“9\ÃéÙ¼¯¦\¸^¯qµ«w§žð:ËÍsDƒ %’ývÌœ ¹#M¯È7ñlÊC‰ àû0Û8ÑËÀkŸµÙ1³š6¡€ÝÇœ0o ŠˆÀÄËbBw B³F¬i‚F"kZ‡}bDsc= ÓfìÀïXŸ}èG¥Q­å³žõè]èé eƒ8g•YÛ ÇúÌ€ã iơǿ¹ìÛè?S‹rãý,á†ìG6‡NL?N Ò ˆ6peƒ<1°›Ò3A¯xÝÆÎ×$f†êÙ‡¨&Îãc-¬g†°qãqkÇZ>¸=8ÒÇxàÞ¿V Ððx-@pÛ6sxÖ†,j(“' &©Ô»§$;Qà5Á2C©<Q‚%#ÛÞ^‘ð &EÖ=3ðŒLƒle cz{ñûݳ̼j0Ä F€ó,Yç´uc`ðƒÈ6{òüqˆBÎÕÓ á®@ÈŠîFŽàÙ‚Až ô´Ãonm;|eþ™²‰Û²ŽÔa;8y­Pç~m°öØ×€ÞÐ' sĦÀ¡ãé)˜ÎŪ “ÃFg_º1ÐeýòÔ–û> Ó ¨@ºšÑ;-Žã&Ý„*­³sqh›l«‡0Æ ~1Pho PßD< ó‹qŠíFhàòÇpC@7‘ãÁ¿×,BŒÚ@¡<îÛ£Ù¶˜‘›8~ÅMoG•n‡OÞ~¶ ÔÿE–é÷gö×k@uâhÙÆ·—v½>–ÕØü74úB’nèA,J„ŒGÀ 9w>‘vïØo iŽ|g2“ eXÌO”ŠHuõI 6·o£öZ”pEMÝÕ¿! üä!¾ÂGûïu󌤨~ð¾\Ô2Îðí䇳îxÙã]EiM i¡á„W‘ÏÝù߃{|°õÊJ„;ÙvËëͳo*†ÉÂ9ÈåL™c( T>æL€Œ¦_£ÉþøÿÂpEyFjÝ<ý ¤%Cðäßöo¨ƒD0çšNQÌò¤8a¯¿@_‹æ¼ßA?Ö:·l_ø‡bQ6…†…L†Ï¡ ž¸H© ¡Í1+ciðNÒ¢ÿ­âý9+íŸç}þ„7|Mß?دt²m?‹tü¤øƒ"ddHÄ!B0)G³þSEµó¯<³Üç²…%| ÏÇÃMo4b¥ÊÐ1›óù‡±P)TP¬‚q$>à]®žT TÑMÎ{›››ØK_ø-7$ÿ~ŸQä’\O}v),6%Îì6n ‹Z¯ °¾Úr÷ÁââžCÊ:¦0ûA4\A’’!á +hÀâGNâ„û­Å¹ja)ƒ7'dwå¹ú Ù¢9)çóæ–'‚b€¾—׎6ṺדÉÅ?ócb‡óþKq#';ô °º±ÿ$dÏ(ô}µ…fi= Û42wФ†doc…C‡ë¾ýcà†1€-‡ ÃC×´h àûÞGFìµÔÞ{ÁŽ«d¹p;q¤<޾CxaIoÃÏ@~fîxf™ÍH0?‚qF£ÍÕ¨ÀʼnùÌ*!±£«qC„}‘˜0+ rÞ„Dï÷5ŒÛF_x [ÿ½/k—Åvùß³ÛÖGózÆ0xcšäîì=ï¡G1ÙdæpÖœ°\ö\n‡Õ¹;vâýº>)t¨˜ßaä°Ü:ƒ*÷ïzÆÀ.&Ðqn9ЙR‹P»òÙÑÈj'Œ”#Õ n2Â|òþŸfAÓ' bë,Jœ¾ƒ Ù£^Þ³;{·¹rÚ³©ŠÙJR)ê8L@FKñúÂYuÙµÂ+‚0ÀX¸H±–¶ñsѨQ^ý8rË\hóÜKÃ~Û”ø?«Ö h˜|ý”¶7``ÞÁóCdM Õ¢Ì kv`LZú¡X.QØ>3B×£=¤‰BCR²|j Iøê€˜ý\̶KdöO)Û€iˆ» £ÚÖ9´ n>í¥öÅʶj­Ú©òö^wåšQe }¨z†v/KúH5‰g™®õÔqmøyú0¬÷úñRU²ê-ÛýQ4›Kw‹Å84ZÅ•² @ÙBÂëá )¨Rœ{ZƒWÛûù1þU 4dÎÓø´þº&ë´’ª~Á$ÈÞ‚‰Ç$áÇ~ÈZ $n#ê J(‰óØ „:ôi1D^Ö ücD©kV }1>1¢’lnïbÙMãaà}œîÉgÍ=áÎ7ÞíAçœ.ì¾_³wf>ã­» çã¥4Á)‰Ï¯ÝŽc{lÀÞA^öŒLÐk]^fx߬ݥÔy´ Oó¥èT¹‹1ª3ŸûÓVõ¯ô}á87ƒHÕÞ-CÑhP*™Xï‚Ù§;‰EX÷£TÕ„VĶΣ,â°uîà×x!Ò9˜mÝ f8žu6ÚÐÚ ë {nŽÜJB'óÈw™g&Ý÷·Þj˜Ûjîƒô|dy˜^N‚xq)DBA¬°±D„‘  E$]‡ú¦Ó+÷r‡•évYß-âyîÓ/Kð;CMNlóv]m|}Nùš57Íð)ëÛ Á%–( PO[éüG”²Ïƒ•|«}ö­ZbÞ˜è@½“#_s}0“'½g†üÄ A aÇŽ@ô†ÿ®Ù[fgáBÈç½›GL…Q/Q’ì64ô¬<}‰*¤cY…w§ïË!÷yHEK‹8+÷Ъќ$7:ÞÛaj¾ž´ØF ƒïÆ¡ÂÕê±ÆÒÛåàˆCŒË@ð\"½5"þò“Bnæ4zô¯]MzZÈKH·9É„+lâM?Ÿý‰™Þ”Ñ)2‰o†,$NjŽ7äèT’Ÿ‰ì NžÔ`áB1€uNéP&Gï:wÛqhëB0oÐŒ#í)è·™dÖê*ÇfDv­Õf@“2öl™>Ŝð„`ãÐlh771ƒcFñ!R6 ñûp¦)€%0@()à:È?[ò7CÍÔùý¥1g9ÆàÖíßÚQ',j1u°$£?àÁ #Â@ñWhQ£‡¡É@¼&ˆCÜxrØ)Kk!œô=˘x©xÂu/Ë€ªë`Ý†ß Ó…Ð—• h²¤ ±²ÇÚØ­îP=„ Žt¬âèø–4Ô½›¨v˜ž7ÃúŸ©ãè;:aØëŒgú¿_xqci´ç:±÷MqŸ nÍ»šñ<¶s±påpÊÓ™:ò¶g¶±Êá±ÃäwØJpw•]bòMÃNËF[0jõQ5âxHÐ8Ï÷a—sºÐÿF¼ 5˜#ÒŒßcd:¡Ï‹×cÐð'[•ÖMÅv¸2½„ µÃð±ߤs¯Cî‹—»9ŠÆ°žs¼1Xà@é¤ËœQ}0Ðh¾ uƒ° }ú6& ëmMà;S”{¥Ì‰(3œnôÛ×À+Ÿc&ä…éw´÷9D בu-ÓñÚ,/6/ñz»ÅÄmÖ\„\Th„þ;÷ S8‚€ÊSG>ÅcZÒcj™t`ôƆ +ã/û‚JX$lÅqsTzçk(9áí§V¸V%/>Ÿá¯ñ7¯£849B|mr̬7 €ý¿T99Ü÷ö  K­³6äÊSêcS¿Ä]J7È^ÅãEzµöó•yD&?NÖ—sѾò½‘‚sì e£ë‹x?m‘ˆW1g4¤ÁÅê´,ÒHÈdžaÙ¬§l§ûnxvÄ?Õ´nqC¾ƒˆŽÔ2Ѿä4Ë@¾Ã Uu”œËËgñîüÍëŠËZÊÕ»èÊc :ÿ¯D0• HÃÒ?Ðõ¬N\Èó#qÎfSE Å ÉÚjù¦ú3Æ€À?»m.<#1Áš†Ú\ E¢‰ Ã?•aߺÏt¶@ †Ðÿä'QrV àϹEœ^*x5É„NëéúñáßxOѾXP¢8þF­ôã2™¿]Ûý’þZQ4¯¢®§¶å³¬ì{tyðW02¸µÛÕ¼#>Äåº0d2G“Ö÷òÄ ålñŸ£Ê‰Î°dvÍýê$×§œàäñn…ïÍ}Ó c4£¿·EºÖv›ÍÇ·|Ê~º¶×ì'å°Î>¥]'L@YW¡Ô[´Q9àãÝT7)”NÃÛœGö¨Aéв븂D_p©øüÿ’®«unbѹ©Ícrât´Ç°$—\,œ —%@U< eÜ7÷—âÐ/&L¬ÎØc%û ñ‹_UÉ…Íb>«×s9 [™…ñEEšwOU\ÕÞ ±$ëHí8_>ïÐ7ƒ(¢b@ù°lB0}§^ë»=Šļhûá(ÿ ãõ8VWáw#gˆð²/(»ªFÀÆð<ŒWð«¿Î~ wqænžÊ:jú Ågã”Vz¨¶ÁÜe^Ö=¸CŒØ6_çÍû¢Ž¨l½†×n@¼HB~Êç¸j.ñ`£5=òÍç2`Žû—ÿŽqæ…Á( ù¿aõǺerÔ=ËÍwù]‰6³¥1àÙ)K/m€Ôø{¯uÍ8„°Ôæ@(Æ0¼ŒQ ¼–%“]ÇC7[v vÄ^¦jxÊÅ Õµzï9£¶¹~hÆFÎ`·ˆ Ê8±2žˆ<(’õŒnY0Ïg¹p…ä…xB]+9ÀB¨ã  kUÐ_G^îš[±ö» Œþ[¾pL Í,íÈãÎlš~T¤…yuâÄYÜîØ éNî.fŽýÒîpH%»ÿ¹e?hJ–¡4û´D ˆFžýˆéǬ,}ª*”†ÑÕ¾£,bD½yAÄ 2‘š76cT`Ïœ¡r¹‹ß`rµYž¯á±aT8àü^êÛy§š£wèxèuÔãKŠ*Pÿ´¨)h)À¼hz`W9^)™Û&@ XÇQ®ÕbDg.o îl8Ù²?<£]Íå4'ë|K¸ioÏ ª–û5,Cãš-ÞPaUç‡*ñx€à>œÒCš1FÁ £Ï.+¶@ÿ „ˉ[¼ž{›ÒÛÕû–NÞÇ_ ·Ù–3F¡:¬=m¯‘At‹uQzN˜êú§=)NYÆÄÛLVIƒ‘¬@e…4Hƶ45YÎC¿ðè›S‹þ~Ôkiä5#%LGðƒÚ]%H,g<ñDÕ)1öÛªqÅvD´¦ïb|ŠgßäBzu©sO .¸ç€„’ˆï÷Mf“vˆårÅ8¦næþŽõz;ôç* !&¹g[Ž€÷#½´Íü7)Ò‰H¬PêÏ,æð{”Ûú¾-“–$ÃØˆ÷S|-Z¶µþW@'“(Mœ‘ÙŽdsã;ÆeŽ4=äˆqã};aæŒsþxt­(¹®™˜‡Éà8`ž4›-ú‘§D’~`âP,%4{,Èí¿q}ý(ÏlZíCèæüv{ÛäèN'çÒ¤\¾Õ˜à™’G»'Ò™Ž!%>,…$¸ýA+Ìm¾9¤Ü·ûǾbövd ïií{¿ RËIßehÎAe‹{8ƒÛuWza ÕzBG÷ÆWŽhµŒý¿if‡ž-«Š¿íMš³Uˆ=êÚ¿qÓ© Ñ@]ã`Ñ´)¤«ÓaQAD&…9öe+vs‡*–õb~ 8[Àßp(O>ÓÕí:=ÞZæÖ(I¿´\4>— šu¹§RRh³ xÜ=#„òMÉÒ E0ZIdRê/"I›©aÔŸíPûØ÷²ýõïCÅWnYàmïé×õG|³™ý˜1~Õfµ•ü'us»B¸\øÂsc ´TÙ#”T“6ƒ`êâûd6Çóí)ÛA¦¡•Zô Á—'öºké~ëÞû&ŽÅ˜Þêì=NaÜ×kGÊûÊŠf%d&sª¼´“nw,`æ©û¥`s!µ‹K³ÖM¤èfh‰5þ%üx«¨;QŒ§æ&Q"ÇÏŸï?J|ßd‰÷ûý¯i5r|S'DŽ|œV¾ãX»eusÏF­åˆ¡¡ ABXèú($X+R¥hŽ_NžÝ=$ÀW¡ê©,ƒh;-•NíõžL ®[K‡/(ëEKÛlª_l @—Ö!⃌S¹‰­Vâ fŠ2ö­XÒæŸ¼¶ƒúÛ8SL4uÒZdá!è7c’]8ŒÕ]Aϰúx»;åÓƒ'ÎMH;HÐ@Ï Pè„ò›«Ù]#¢e²èyó†?=Zƒá1°îáó¯:àÙö šƺp¶œæËôŽ?®Âú&W¸»!Y’@|Mƒj"BKи¸òï y)£ ÙÆÈÞpàwÇ]@ëúÂÝOÍõº×ÙsÝêïÞ*˜GíÆyVœÔ0¢§(Hƒ‘ÉYÔ@oot|6,÷‹%]³øöÊæR†æ5­šO÷† ƒÄaF¨\Ù¥4R!‡tÝÒ¹Ó‚Û;âWÛ5昴 ·¦½€ Z‹}í˜õ…š&¯Öß?êW®4F~~F‡‘ÊtWØÊä0¸½Nuô‘a¹ü4kî`^t;é‰Ó!Ž·DoüÊÕ<ç¼'4WÄ„ X­¡R„D$Y-L~£ðê©ÇøåŠ@N¦:‡’Ä?¶|»š\m}ì·†ú{ýt^V´Ò- eÕïµülQXˆ)I2EÙO @tåÏ4ƒ˱š™6¢"Ü4 Š_ôá™òI0/Ê’Ákt´¢ Ÿ¹V „²@_؇bTŠJntÎÜ[8º`sV8u ë,œFía÷Ьº!‹YÍg\ÎK8 PÆ×ëjgÙü•³ÀÆ‹ÂÈU¾ï³–?ŸCÎqÚé’eS+å6ùúÕÎkŸ·×ÏÄÑÃ:l×[UåóÈ¡µÒåŠÅkqï^:’_î‘?îò´¡o0räè*-Dp¹H`2¸t®›žÄõ¡|nMÌÃk¼vmíÓ¸7Ô¹×ð|§ÔyæÊð^eÚvÁfKKÔ«:—²A”Ú|ÍÍŸš¹æè„¢ò6w»ÓÚ(ÞÅ—'».¡˜çLÛ¶fJh-ÿÆïʦ îg¥h…bœë1­ý!¨Š»W¿ ¸R!ðé7ƽ;7P‹ó¬ƒD÷’ {ü¯h¦ø þât椿Eë%…;7‰øMÛwª‚F€ç5MøzÝã« M8ÝìŸB{©þ³£Ø›Äöpͨv‡†íШyÞ"ë¿UØ@ÌÏP:ãl蜹Ë5•ã¾àt¾?<5Œí×tü`J ’Ã*/¹+δ¥äÆpU¾©˜Q¦%Ú¥¢™¤ßþèce@òáSÈ»XÇ+ï’²H< Ù}‘‡ß»ªÑ-vtX·”$=Ás]Ñ›'ÔµŽÕõVÞ-È1&sÉhA~—»Õj¨Ò¡WítÊ,K eQØøJÆÒ‘¿ HvæxíÂyûªx?H+Ão½K—÷hÇÛtáŠj.ŽYd}Ꙁ¶Šö§®„ðcî”qù×äÉ=‰FdÓÚÃÈ¿÷õîÈ/ÍJ¢—k­ý2yØŒëí÷çQÈù$–¬Þ;úŽÂ˜å,œÃøW g†A0Æc~ið• ®£â{]Ëçë+ ÖØGg³këé°$k`Ý`[( áywd*„lVêP4—Wí—ún-R°œáw%à^e‚¬xÑ =–bå% L“‰‚°ë#]mŒoŦ«ÖÞ {€(‚˜ìåç˜uØO=§Æ|?+ßï¶uˆ d‡çÚ,4ß’YœÎÇ_ýKBusëe‘ÎÀzrsxTÚ&‚y…Þzy¾Ä¶` ð¯ý1g+\žÛI¯ðïo›¾ø PN<ˆ!Á–š|[ié cìÃ…³¿ßç©iW6)7¹X[ôì>ÍÁb1°Ma£'ÎŒÎjiÏè ÜN˜Æ•d”I»vpÁg¹Ó|È,t.ÌMûG‹“¬é@[±Ï1ƒKoW¤}éíÔ–~£Ò¼æ04’Ð`*ùÐöíÊf5x% @›ÁäbÇ8r‚9B¯%,?Å.÷'ýz‰vˆ=ù<$RŸZû±áîãÅ–î™Mhbá]ѱ´¶ƒ×–j+”Ða¸„QT4ŠúR·Ù`¬\ts =7—;l¯F-“?äè\¹qf:¾Ñ…1žÄ+5ˆéòK™ópø|WjÚÙÞ fSœ™8•`LΰÊ4¬¦^›öø©qrx€˜× (P“;v79ÔÂëßx8:Âöa~Ìmkö›ç¶kﵑQÔG¸— nþÊgá~¡Òdó’XD÷ðÿžŽðÛJHæH«¦r§ÖÿŠ3ïÁš:ÁñzÓ^1ŒvúÏ.Ìx0@äFõ¾"˜0>¤-êõïc¹éògÝ•Fåþœ4F ¶‰¿Á`šUv’Êyæ6}ïÄc?캿9B½RJ;.Ô#›gÄï¢s4|ãlm P!c.È÷j`´è/—âÇøÏ®U⯼õ7rG$XêPµzý+ýðÎqÖRȤlnW½]oí鼨ö5ø×™pÞ‡¡[aªßú°õâ¨Úq²€‚X½<¡ ò!â¾B´{‘uw…>2Á‹¿h!bº ÆÙâÂÐZHHðk€0(9¢‚XØ!üÍ]Ðúν¸lzë= æm»Ôàâ·— ò}›yAkX‘be¿@Á¶ÔšX%WÑ[ׄMS4 £qƒ?éJ$@¤Ùf샓¥¸™›9Þó³m ÕJYˆø¥ËÂõŸ"{%xw+›ž~v²€¯âºbß[Ñ ¼ºR ’€ïâ§k£h‹Õ f…ðÐ…g"Ù‡âë&ë¡ ˆ‡º$%í¹‡¸çs<^Ò"¯ÚˆPPPnìPQø]A‹ÑpWxØgY€Ð3\v1¤É?<ئ-½ÞgO»ëãp$ƒñ·bÖ¡8ǘÖ«i|8Ž+¬§{ßu=ܸ Ý7šC~™ƒ6Õ b¡Áç2Î@…$©’þ$|‘9cÐ^²¥Öá#0³¥cö9êöHÕ…C¦Þ^ÁÞFyÝ´V‰ùë>†·­×@ﯸå*OcÜøQÐT۟„Zduã»Ta•@ßeAT/„ü¼ÜƼýÚäu8'›é÷ÿ‡ú°ˆëÒæùú‡ p±›¼OEùd­VMw^üÿvͳd0™Ý×v-…éˆiEºœc@ô䡃˜>n|4€7X|+M£Àí¶°C½¾Y-¹Úo’¡AD\";>‡³Î¨îpßzØINäUòc½~ËÆHòÆ ¹wÿhtž·€{¸"ª æn¾! åTèT+‡f¿Ь½ªmýU6\àð:Žÿ…¬3í‚‘—vtÍÊõ½¿Ud¶™NÕÐÈaGÝ ‰Ï‰-€JC'#ØÜ”i‡Rk@rk @Â"RKÝpF+(ªebCÂ!Ø1Ê$”ã7W#‚ŠvûÎVÑ!d)ur2 ηK”7ü 5o0ÍÇKž[jú¾bÊÅê¹ •>×”ãiXáY…Í}ÎÐÜy£há®p~]EWô¡‡¾[ÁùÒN­ÿš,óe];F–ŸÛyGÎë€ý'á@¿ý³÷^XTµ½ ÆnãÏrO2îG{Š5]î<º±-ã›Þ—¡ø„BPú|Wõo÷Úõ+Ó79o¢Ø>Üüç¼U‘ÿe=gèm)‘§Ûö8´¢¼Â8Âõ.ˆ÷i‘p…‹‡¯¸‰ø‚þ½J"ýЃúf™·Ny”«ÉhVö×㬦2ŸÚ'T›–š'Õ”‰]G¸¡ãêaâË‚ç0fЩ¤1Õ¹ÿjÁ+ùYcçÛýÝ¥ÇÝX÷Ø>PJKzÁÉÑÓÆ4ƒ4ˬžn½ Å®MãÇ vÿï^ìç"üwœ${¿º¡‹uò—¢+.LK’¡óËwl(nÜ«WÙxmu_nòg|€ýmºì*É3s­>ÉŽÞp›tÕ¬RbTƒªÍ˜È›ÀËgO/þ/+ÇõŽ8«»v¢á,øu™Ž(ÅO_JNï[¾|Užpkd$ø*EtÆlÁ÷~ç¥óÀ¢-‡ÚXFöþçÁ4x£ÓþŒ7\Xœ€í¯Ýà(qñLçÍ•½¦ý‘²÷to¹3ØPýÖã¾^Ì}ž’m,5V Ñ—Sz}ä’½ž­®è†x¾ª1°þa×3ï…~^#óÀ}ú—cÜ Ü’•‡Oï¯éœEþZî¬ÐBè4Öö¹\9Ó » cZ§³¨G §’¦yž^£Ž?N7ÃG§ òÚ^'ä!*üà,Ÿ·Aö"žÜlraàŠ€¨ÌK²S®¾÷"Ë°ŽµÔzòÉ(´Œ¯¦¯|”-2¾Î’æQY1XåzÊÐ þ+NS!VüÞ¸Ó¡]Ós!Án»ÍÞ|tæ‚ Ø^VuóÏ|Á2K¼ô 5àq¼ è™=Ê‹‡µõ„â:DzíIýB#Ø©R°NAœ%®a9`ÿ:”˜8Ø_îœD% ç×ß¾ zòØóÑÈü ´®¬azI:OÙ¡§%7WŒ²û¥Äæ³Ï/ã¥é¼E)ý‘s¹i µpøF`_‚6á(ÍŠÑ| 0ȃ¦ûrÁs|^(Õ…õÅíœÇ9'tÀïiˆ îÝ4•£ç¡è_Lh”—°%3È̃­ev“(jÉ@z@¸ûƽ/kZÁ°£ß@Û§É@šwCâÇJl <°xò˜…¹êFfA·šö¥äà{ÿ#(¹ã›«ÃiÕ@ˆ’çz•õj{Ú;Þ«¾ä±ØA·/|Þt ]ÀiCšM¤ w÷ Å9£LhLô̬8,Ž¿y÷b<+Xî>S˜Îÿx~l¬ç‚ (=ésMéJèÀKà%¶¸tlOoœå…ÔCw \–³í?cý,bÐ3ßÝM9ê5b •ÐAÏ×Lò,A0Q&'+Àõ¥Ï«òaÿ -#+{wg¹>>ôîÒ6›½­öíפ _šºsÊ¡,‘Y ¼áòö`¬Q€Æ˜P˜)öâg»'L Ý«Kú·c“‚—ƒ/ܨ6•ø_J.oÓMIÊ»^sœœÂ ð8ˆÌó¨¢.,ýCª,BbSŠÊ:¡ªúÒ«íxô¸Õõ.“íÜPV»UáLƹuUú‹¹KÞŒ×þ¦Un§ÝädÚ¹µ=Ÿ¬Oþ©»©ØïÝù˜/å pü ÿ ®+óÇxöîÄ«F®´(ûEhÆ1¹|ÞTf£v+1ä·1µ©¦8MuíÝgÃ_tðú˜ÕÙc·”fŽí×­ƒ0–ž6ÿ›Æ­'Õ{Ùé>ß0%·¹¯Ë/Kx9ªú;ð’.*i… ª1c\ËüEfír±ŠH­‹Iöwö~!PöRŠÿóuIà;t|ÀÝͲžŒI9Ž/°ûri2Pˆ-¬>ò–|çì:† ðÍ Î÷mçâä[“j79gÔ©©±«»=zË%(/äís§g‰6=ßaHx  ×#ùå~_伿sã±@¹Ñ¬ÍdµÛõ´YÐO±pŸîçQÎî¯pß›‚³£ÂœYIÿ þëC0úáD¬ð†‚™›$þ0 ñB–>Iž¸ã[ŠgèöŒ™ZÎfÚzº-#£%s ‚÷²kÕñe½ ëÜ>d‰Ð=ßÚëà%×éPÌx9WWÑM­+™ˆf~Ö‘"ŸOZ¾™&éï½^ßfaÞæP{~¹S«§:.ÁÕù9Öx×òm.KÙ»õ›tëÄØ‹œî‰Ý åÊLà #-ã/òL·Ý‡)y†·˜J1´ÈC#Ÿ7xT·µ®uHôü蟠”¦-§ªÔr@&@îÏäñH>ERh˜@ŠUªå p Ù,ïÕêö›±jåžixدñÝë>í®ËpðžÓäj^Õ¹¶°r’È;‹iÒcémk5w h§º¾LW‰&‹šñÖ[cœÜq$Á¥^ôÿ¿7Sì¡>Q O8ÖþLC‹»ç£=)Ï™¿Ë….FôÍèÊ ãv%±<ñ=àë*"@ËW¨=:‚Î×÷ó[+¸á‘éê^gyµÑ‰õmþ-F\kÄÛ%VN>Y‰"¹bvojÄ8Ö …‘éFCÀæÖµ4?î¼µoêJèoœo;û_ˆ‰Ÿ±ö^Ìšo4¢¦æÙíÑLâsÃê(‹™÷–×4aà°ÓÖþ…kZ@8Ð’è‘õÀ‰pUKj×ôKÝRb¬ú s¶Óؤ;;tTòé\y´)´a‘fÕ¥fè§›‰'~ÇdTßMöçpvŽ28½1Âí}?¦ ‡Nd°¯iAõ@"+Ö¤ž06ÊbÈîÝœðûñ6‡v™Â~k(þÿÑ´jŒƒ„ú$i½K{ÐoE&ÿeíønàÒ@ Pz*ü·„N—–gÁŠkéDBØ«þŒ„rÉÄ#£˜Ü+‰!ìäñ¦,Ëg„¶1~zæjcã¦ãÕ'xtðæYKXø[ /ñ½ßäû¼ÜmʱàÌ·bOú(9"pM*YLcæAĹ–Ë­>Âue§Ø5dKRAQjefÁ˧ºžQ²bme dôü½¤¾kÚkX´ x“œèß×Z]6ö½M²ÌíòÀ©*86‡Wï…j“7YœmŸÆÀ<Ñ5å˜ÉyÐTOþ]„{', PÎBuO‘ª.Ðz}ÔJpñœîßæÍ9çéyrÏãÀÈÁ,á÷ø—+²o´Á”–#Ëݬ:qžÌCYRF[|P Ϫšª!±YCÝÁâØ\5„cÒÒb€O-¨–ª©wòöœäm_1‚Sny‡øšO)©üG¥ƒî$3j n`¢Ô‰ÍgÃ;T:L¡Ã)Î7³jή²çÀË«–0|… P)¢dcƒ¡cy¤oí¸e&Ûª„èhZewY§HÿR-¥Ë*ï=UÆ»HÍã RË5#^ÿÁ>1ë Ceãââãu³ ns+yzñ÷jp—Г_ßÕTõÐú¶ÄÜb6®õpùY{oл™C _sÊQÐQÈ °¤­÷Ç&ÝÐØx&òÊ1Ò¿¾¢V¦½« ~õxl”ž†,C6Eqñ“­={ßcýZ™C„f A@…æx_ì–Ø¸tÚ1¡, &SèúlþM!Š93"7¥õpûA"qpLUÖm-®ŠÑMœ¹,§24Œ V®é/Ëtÿ1 $YD2ò=ŽZ ´‡„Ó(«maÊ•6aÅwé˜ÚÞyû½ü~m†Š³rñü–®ô6gToä/D׸ßüB¢¦ªš¯ºzÌ÷ Âж\âRø`S;[w,m8'Õ/àô¨e“€cèËäò1PÜ̺“ ¹õbm|¤Ö•îx¸ûXäz{c~|&ŸÐ3ÊŒðÓ¹a”6Þèœ}s¯”úýØpé'"xv—Ž×U{†ÿ(7D…Õ‘å7'ø’lñŽBIžã’ÀðXöï_®AaßÙ}Z5Ï>3}ÃæÊ®ƒ:â)ÀæÔóÃv‰5ŽËü¼ïFZÅ©ÎLmÜ6»®&+×ÇßÀ罘Ý_TÃÖãzTûŸåjÙƒz)J€ºT£¯õ[lqïì_–fôEööªg¨ó½4häÞ²•`ZÈg-*±NÀ°¡€Lù{ :šÎ›|"Ñvm×¾=oðÃòÙbô¾M,sÛ) ‘ëIãÔÉØ‹ ÐáàöîŒ|=õï'6a弦ÃÚ¥rͪò«¥‡iÌ1·°Å{Œ9þR Fƒ±Þ:|·æò>N³wî tÀuû­„ ¯»)y·GGâ°¾ƒ„ênÒÜïÕó—ùö0ŒyÖX¶‚žSÆx³Áüßdý^:9¡Ç¼¦¤pøgELÂŽ4¯äéiµÖIøupõªÚ ѱ`, AüžœdHCÉÈR ‰ÕßÈúWþÑTIÅ„áM&Ì¢™z©•ãÅQõ7{·éç#ÒÏ 0SAZ@@õ¿JØ[vÑ5“1Ö­’Pß¼¾vý‹Ë•ÀO vË™á¶zÕ-%uÚºf [àöet7,P½¾þ–ŽÚ¤”¬5Ï»wxw±Ï»©zØÛ<çgÂXgj©¶H]þÖ´ràyÂÐ7|ÍùOdÀý}q5ƒ]#>P åÇ|­ëîËωCÙÜk=ý=÷¿ã‡nïA&=¸SÁ(Ñf@=äÑAˆ]ŠHòàóÏX Ü©¯9ƒ”¾‰ÏÌÂ/óuÿuZåqºì"§ËTÚÌ<@¬:ž¤%ïnOŸØÿS¶ŸãYUEZc£åqR¿NŒï^ÈúÚŸzªÏJÈïÑ‘[·ñú˜ÜW‡\puÿ>£Sä=޲_y߆â0 zw ZÁP2 Ô«8ÈÈ--’j>Úÿi<Nì.¿%â2ŠëÑXÂDÒ|6@[ÃA¨á‘O3p!hü6Úr_D¦2ƒqóel€v†–“:<™TÛµåß<”öŒ¢_ê.‰ž«6Š‚ëÀÝÁ)û³yH¨°U‹¡ž+¡ävÛìKÇ…8òOÒ!0é—ôªLýt.'ÓH‡†?³£›M &n•h‘RÔ <tSÍŠ¥„Ì–,Äö:®7Š7+ÍæWivú ´Y6;í/s¢b©wDÔ@YbpÉw߃+j|Éõºjý79¨§‰11º:Q2Ï‹ý{ìæÚvd%cIJeÞ­ké­ ÍÖNûcð«ÎºÛÁ)šZ“SyÏ8-ÀÏð|©]²DUÁÌs¨¨|·7ÿW+–»¶ÝÕˆ7ÓS´j7»¸“Œì'H÷"Ó&’ÀpÏâ½sg¼j–½SÁem"cö^w㕳¨™Åc°F4ª¾¤—G“gPj[– ½ °ÚÐ*xŒÍÕ žÏ¡©ÉFãl–÷+§Jòà(«vã_Ì<8(íš'øÃ¯ËâJ7[ezë>*¸*‰¹…ÌhÞÿÝì1‡rœBö¹‹ÑHv—Œå¼k ¡ÙcÅÁ‹ hÇ×Ýõ“¿®äämΨÎI¥—9Döûýƒé\²½·ÌmŒ Ê #…4h^ÛðY IM‰ §jšŒÆA¦¯À ª)ÓÀ y-ü³¢ðøIÕ¢F:Rd|’¦Žã'æ½»^’ê¹O^Í J»/í·i—:ávr !!AËhoz>Ûú#§¾;ž³(g°±½Ûd*½©H~š_´°/7A³Ë5ÒÐiª¶\¸¡›«sþ"´§ýJåT…UÕÝK®a3ýK?ºáLTœÆÔX´á͉Û4¿æ Ô£î<P&ü]`ÓgLMQçäßL/QPËaÞq Ÿ©Ë)‚ŠnäØïÓÌ2¬–¾*y§èð8zµ6¼ŠÿZÚ[ò=à../ý–Øa_)ñ<¶:Ê+­ X*ôü˜—J‰Üx,Ƹ±;›èÝÙ üK˜fl»üóÚj•£8šêÇ·NâË%ÝÜfA„ûª€/Û;èåÞW1£[Ú1–j@èMíŠþK»Aìé{Ö\°ã˜•ËnYCâë¿P¢ T·—4‡o ‰µ}ã0ç]¥´6*,êh:G÷AF$ã{©±÷qÞàøq2ÀÀœØͬæÚÀ ¡@Ì•ûd!‘ÅpÏÄêÛë0Úê7ø)ÀoH,™Í™Š\ášÐNFË(Ô‡Mñ•îbSÉÓ1Sô{&PXˆ^R ç )Òº©ÚMdñ¨£6ˆ…€€h8¿=ù6i>¤»Ôo.#)Q«¡åéBéó_m÷´jVŽ1~<ðw+Ýä/“DŠYœ]æ“æ¿õ;WEÐÓ™¬”r–ÒmÜeR7]»|ãòŽ:¼?D¤Ý¯@/ |¸ÎóŽ´çëbô²¿u (ɪƒ)›¿O ¼¤3¡x‰9Ül´ÒÀò¯q¢#€­ÏW†ov&|?ÇEÌÕ·wƒ£zÜ‚áÏ¡ŒGjäJôaÛÄ-€8Xí€Ð<”°hùЀ0Ýd>£îŸ»Ö­+Þ»µ](¡5ÙË(™[î+òvA^Ý‘_¿f̬”i'”Ã~Á>¦UK<ï‡ú·s¾ù6Œ‘X8 úÏQKýÁ¢W.»3»¢×~í_åÓ\EqíbbùËÆP»{*å÷÷&eÓ²²›Ì+/ï¿!¬äDï-b–|ŸXЍ$œübš?RÛÁ¢r%Ã/u<˜…(ŽKÆs¡O3t låÜ©á•Ω£Îï¼ ºðJ(ãzý0ñIåíñ-³È—™ØâÖñ‰å­N»í’þëTé6žªˆ(ø Õo:œ'üæöèÅ}ây‰GܰQOæcÛ¸ofdˤ-{…‹Ê¥s@˜l•öQÅ´äÍÓätÿlÀŠÓÍî={þyHl@e òÇ÷ 3¿£¿Œ@eAŸ9¤}A£Eö”\²Ývð'½2yD &…þ;¤T¥ŽRä€8‰!ÞfÕC00o¢pîï§¢J©( ð?_û©f:}• ímŸwmÝõ"·×},»d;9;ž¸%!Ý€‹BÕ£Û¿Àw¯àwž`ßãRäûÆÈJè†lÊÎ=ǼOú}\Ú,®2 ¥ù Ѥ¬ñÔªŸr«ÁÕf3Ü® rÑñx¤qÝ#ÒUÚëK~›øïÒ¸ï–úÎ÷³ûj–FG÷UÏõ¥j e¯|ï3ñëÐÅg iËrÚ—I–Ç–_5+†ò€«'·%¶Òsÿd~ü¬ª].%È>ý,ÿéˇùÐÒVŸt´*¼Jè'‘åÉ»úŽŒQ|cæ—=rÀè¼.‹JS£8ñiƒÜf€£Ø¤=ǦE{{Š‹¡ö@Gäú%ÞÕ<Ýk&èî4úžß”ÅÍ1ã‘ßí`‡ ÖŸâ«cx®;Œg,Œ)÷7s~Oy`ØÇê* ?,¢;¨kuІ] úÜut.…q}¨y5ºy&—ž*=ÇñëÞÁ;ÄwýW®NCdç“=j…ßc³2¿ò±€¨»çGTB¢7PÞìW_0º¼šgãºÎÙ(œçQ8åra´¯ã€³5X”Ïëï¾Mfÿ°Å°`ô ô¦6)+8qÑêÉŒEPÛ+ù¾²S%Gºõ®ÕöËTÝï,8,·°x_MÐ0‡]2»· a³’%Œþ9µµ’…Ɇõ÷…1œç^°¸‰EhôÅïØ¢b"„Ä#˜?Éó©õ& {ÜØÚ»Ñ[Nµï;¨£1NŒœ·ýÁÏ.çx¨{QÈO>ëPÄOÀŠüåg;Ûøù†³ÓëT€Ð%®—Ïcïú¢‘³ÊdEÚî®:^_¦fœ ž–Õë¦ë »*cåþi7«A:c©à‡‡ô‹tõßz¸rxP°í¦Hh~¥.HíŽñ¨¶®ì1þ®[DSüêÔu~Œ33Âß8Ëòa®—EP»E¾ð}‘s([ŽU6ÖKÂÕŽŠí_šð:<]˜=]VNŠf'r­’?˜|ßU;p/ݶ0²T?>» ú…$ŹG‹4•ãݑý<¡:W®k#Ê|•׿ÍÙãßÕm5À¨ {z@,VZT…„:È«ÂÌÍÞßÙh¬ý½Î7dD;iÀ–Ú9ÞRnñíáßOTh”^ëÿ“#·C=Ù‹Ž “ÖŸ*S¯­J•«¹¤£çòÉ¥¼ýk†tÄ’PEÒ;²®É_J ÖñÝçê!êAh¤ZŽÉm9C± T† €7Ê‹Ž¥ÂUâóCŒw”r2@«·å[݋ܓ ²ù˱¸ü§Œddô¼pÜÕ¾WÓµó{äÙ#T»EG7C$¸V8Ê7ˆd¹tè« í÷ŒI_ ÙßËQÐØïñˆÐTjtz¨¼„^Dfº%šÇ›z·mÎhÚ!mxrØ3dzW¼®©âgãyYQųûߢ:ßTM˜e.³Róu i¢I‡N~¦çמŽÀëñÁ’3yéß ¿«è(úÌ­½¹õ©Ç—V@O ѧñCwpshýÕÞwˆK³­tüíbùõ]muÚ±ì6ù+QVÉPmZï°êÞ3Û†‘“„4­ÿ7 Í­Žº}„ÅG޲Î&öt&m}Óï‡TU„qÎËÆXÑ" |–Ç7н;ÕÙÁµõéâÐøü<ÏÛ¹¤}ðÈC—"²ç¼ ”Í·-”Ô\o³P—ž|êv\Ër ¯/7Ö±ÍxÀ§|Í¥¶Ptý@k¾ü~P­¶ÝË줜"ù2ž­âÅâƒkm—ðä€õެŸäc» Ÿ#͓ȒèÎäVÒ €"µkÛ^ÍÛ>ŽÞyk.>á<ìÌ…Q’D)r ɶÏþ÷}íÞê¨OÅ•“-•mW(ø­Ο„Œ.¬ÍrXD/`Z½¥µ¼ëö’ýi'«…i‹ÿf ˜Oùoû ê¶''3ëóæspêè XQàÙ9¹SP…éqêxgï›ß*fŠUߦï:`2Ì @#¶?£iÇ9¬ð¹CW«‚¬v)ñ0¯ÏÄàYW.úU€ç{ªæT¢kâÖ$×j+Ìçä–UÍé{úœg½ƒï†˜›ü9TJ¿óýl¶×ų+c®™cÉl” 55Å•v•¢ØÚŽŽ‘Òÿ«G'/o‡ ­`*˜øÊÝ•ÝÖ2€#Â]Uã²ÙµÄ»ÜëH;÷j‰–£ÁBhÀ¡ Ûa†œÙmÜu¦¥sFÁ_H-þ¬¢ën‘œ&¨¥8•x¨‚ò@Bˆ»¸¢ÿ‡X ïJ¿Õ¼K\ÔZp0ÿ¡8Î×!ÁzšÇyŠaî.RÙË5¼ÖÊïÖŸòkÍ…® ³P×ïÂ÷ó[OÛË“4–ã¬Ø/˜AÆT€1ÍÊ›Ù×Ó•C0 DÓàËû’ ÚÁ¼9Ñj¨³ôº~¼›¥õ÷Ú5“¡¹üo[߆î‰lY`4©b²œ'ÖáE_ È×ñŽÝˆ‚ˆVs¦ÉûÙ0丹}= !9ð:]ÌØD5×ÉJ xŸ(€-×4GP8âs R÷ %ý<_ŠÔ"ŒçŽ]?›Iu^Ϭ陌pB ¹’3ÁLIëyíÕڔȾvNsáÄMnw{¡‡ù*ÊYFEõ“¼?o vÊið>ht¶=XPœlƒ¦M“8;¸+ekU–g ¾³È¯L aóУ›BÖôIK÷ï!°MBn‡Û§Ì9Êvàp\¦~Ô—œTPôÙð«ï'e;åÀcÊPºUcx·£x›|úÌä‰ú€€³JËN‚jNsÌÎySÙ™v‹–Fvýw 9ÖŽŽÖzÅ×2‡j¤è|Sþp¤è8±PHKÀ×”(É2Ç@JÇLŽÄøÖqùµ‹»t< yQpœÙÝ;ýü‹yo›îû†Ü‡;-¨¶˜y™NBd—Œ8,_H–Ã~ÔøŒ¼¤’shX§unƒ dz¿b®ï«3È·¿Ã;·Ze‚ñ6®…½S˪¿DÃæ7ùÝ÷So•¬ñ}ùTp8oGü+G¥¡FÎóL{*·q°z‡õi—1qÏ´zߘ‡bW•ðòá0XW‚Sªvi—¶é¥$—d—þ")PßC,ã‚þÊpG_…v6âìr…7gBg ô—÷>ÀZa·R÷­»ã*†UwörHøÜÃ1 Met®EÁ}­{€@*°2}–*a&ï½OÍ;¿xN0°D¸ýu‘ïàШ{0hŸ‘†±D¡ƒ¶äD2L^ÐþaÃŒ«ÂÚä CqÌ©Íô<O¼šF?,sEÄÀYgF×èò( ÛÍLg‰_ù´á_r½ØÙ¦q÷ßñ[0§³õ‰m‘²Q,¼DìW÷±iüû]Oøó>?/ì¥úp,!&79‡èÇ“Rž‘À}øP?6÷ôýðø­ÝñZgdú›éö6‘ùðïéoˆFjkü¼ÙÙ°Še¼Ó «äÛÍê±_Aó¸^’&RÛw:`ðZàÃi©ÿÍËÌF+Gúæ(ŽKd¿Ô=BFòg^Q„Ó‚ÄÞVŸoˆn}‹E7ÉÛ‡¢M.g²6ªž5ô†äÛéÕZçÆ~|3Yt¡L@ F!¬|ãAX¯RgdÑ:Œü0Ìʪ-c8¶5ùa;;aÞ¨ÛˆËåîì{?¿ÄΈh_cE»¿O»’ª;D¨¾&‘ì³šìK\¿:ëX5¨õ‹´R6{ätœ*Ù­f̽™ò¸fbtuÝ áVþQð «10+™QZ ×!ÿÜ_ÆîÕ <ÕÓÄù Ÿ,8ö%ÝÀÍdr§T!× 1×›xgeE A Y8fLdP6sT—’iüÎéúã™@×”#ÝÊjÞfkrݼRç·ߘÓ5ù{Öú¥»¨¤K¹Bñ¹dˆJ>éZðtH¼õÏÒQ }ã–øÌ© :ôo½•Æ€ùFU»•mg»—ÁÓã,­9>=…ÔœŸ¿áF íਃ7äWûbÐ]Y³YW¦ŒMf/‡~Ͱ/ í7õÜ ìZ ¯2 —ýzþãq´î;ÀÑGc©ˆÎKæâü0ÄJþN:­”t|£,6[U—ó[w7 3a^ŸM¬ZÎ1þ.ðÜœ44 LŠuÙæ)oBZÛ«[d]â´„Ü-ù௅Ӽ+e8Í;ŽZ•ú;`âÇÑœ\¼YLSTÿ¶¥qQ9ºOuy‡m}ÁÆÈç#u¯O69€¹ïéutnòò^x‡¶Äúë®·c+‘xŽÐ¢§Q ¶¾¿ÛÎfþ6e]æûŽÖ* \Ë>ÿ‡‹°kòãpaÞ #)Ïøo¥”yÙpÝø`­ïÇw=+ø†9aÄ]ᘳ¤oèøØÑß@YZé‚ô¨bCÐé&øƒ¨ŒÒÎóãymÑPÖ )b«_–Òxú¶¼QeO ûáeD¿39ÕIþÁ´ïÚ§¾‚ÙÃO¨dÈèQœœvku„Âå6ïkºšÔjÇÀÌeÁöd¼Ã:R•hb)áýLÎ>í]P/‘çXA5Œå=E•E+ŠI£ÎÍ^ÉþêF–v4¿Ô!¥+J#C˜Ã^­>²ón™=þ?W¡Pnà @ žÆµô¢ú*B@t€dŠIgÞœõþÚ$€+ÞN3Ãäi ƒÿw¦;¼Ÿ‰AJ·5Néÿcúpm8O§mwCÐaûKQ§¬íæ\M@$³–ÿĆDÒi£Iâ@$Í#ÓÌy-¶}ZŽBûk®Ð‡3úÔÎï*5º¾ ê^}˜t¡T²ßb¾JhVJÕ8$SŸe[¼;ÖÓl±¯Â‚ªÀÙÛ“C"ø;ñbûÑŽÆ<ÊÙs>AŸ,…@ ³„U·‘ãµÉˆ[ƒŽƒ‰ò€EJ}LÖÇé4ºrÑOž¶èµîš;–ƒJàǸÍom]¸µS3h’œYø^®rqÞáÌ¿ÜV2!ÈVqó÷¾~^àVÁ¬b]/³$¨ùôIn(ýwùÁÊ©÷É©åƒs¥ãÕ8‰(6ó$1Ÿo0ÒUZùy;eCäÖÒ¾ÏR¼%¾G82y´ŸTÒ_©En<®m®¸‘il¼×f£.®,v‚7bÑÙÎkwôòðPTÜC7 {:,E)¦’ÆßYæO3ƒÄÇÓ½ïfZ¬Ð»*tþ >aFpîýöâ>ý}ßn¡IM&7‚ü´…Øb±÷díl:˜òYè»îû¢ÅÖä{È’‡ü56`ý_e…pmœ–,¹û'8w˾WÉLPÑ"ö—\“ª9ZoåÀPèh¸ ²<„I$Û0ÞÛéäG¸Ð]UÒîFæ7 ©ŒÓó¡·¸ r”¡üJÛ›çŒss¬Óúg½: "àþ—\ï=êÌ}:bÚ&‰LŠÌ5üF Am³Ú×Eþ;´Ði‡ 2Q’cEù¶ðuJ«<À5ÊGÖvuÁ´J–I<È/Ië™2èW§ƒžÍÛ'V»Úáµ²Nª”ÛF ç[w ëýÅ¥ 2"¿Æã÷ð·ñ>q®3¿¹Õð~£²3ˆòxvZXäl‡b‡å³ùL7°‰qÙpÛ.kýÓðJ”ì˜aöµÚ»=ü¶@}ðyØ=*8¨„ uNßçqìùe£ý]ìA,ÏR×™ƒ½¯Œ¿noô˜ìw1†ûiÇCþnŸ%ýádkÿЍòv ×ú›¤F„ÿŸ}êÉ®`YO1‚ßo§0d'ú= Õý"&#*wo™èf Ÿå ¦o–Nf>šÕÙ¦”“@Õò®€ê¿$Šßjî·Bïvœesô»:ÍëŽfŸ|W*¼Þ+½”µ=Ö”õazZ{)ˆëؤïFäÃí˜ûÚ¬Ÿþé³åè4YÔݲQEG#jå3„©–kijaC?ÎyÒò¥ù=G³–×ç(ùMïë̺®òâú”Æï^±²~¬hÉc[æ2±Y쥎è§÷IʘPRn€èp:S¬æâ?@ßc8Ýr¬¸\¦5ø æÒR¿'4ÎP™h¡^^zŠ›¹¾ê¸[¿-Þ¶”ÁªÁþ;™NÕV-‚“ ˆBê„]…eBð'·ÞG­À²]ËñÛf¹ìÆuI =£Ÿ`¶žèv™¤çd}Ì U®ûp©%ô»jR±Ä_ˆè_òoLÕ†Åî.GŸãà2ßPüÆ[MWq𑵣7Aæf,r¸_G /¨ùšÇx°G£ß`ÿŠûI·|·¤ÿmZ`÷YcR¡«r]Ï]þþËjÔ\÷(jAQ]„ƒ@ïÄ3—?xî¦Üæöä|Îî¼úZ…=Û°ÿ ý3˜Vr*&m áÉOVõžñc(™bç@Ÿ£Ùcê«NrU¹H|´kë›û:˜‘Ïqå]™S*»áN3xƒyù“7¯?ä\¡é@÷׸ÇIM=°UF*$ÉË´tûJT›iw)\}ÕˆfРõE¢)ð5€ŸI2¹‹H;>¼Ä¤e«·¹k5¾™›²¶ò@™à¬© ï#¦f1²Ì²ˆ†ÿEz¤Xl `eÑ»v×* ;Ë6?‡ºÌŒ·O²á›Âˆq%”J´ž‡éToqVé7?ù h|¿v™õÉ(Í /Ä£tÁîÄѬe0á³ü¾Kóm€&[¾¶ý£¶3×]k¤\S=ÊE»—Æ‹Ë "ò²´¶Vš~;_ò .ÁÈ‚d•M¤¥ ‹ê©‘aiï±»Ô L­¡öþò¦š)*Êâ?÷UAoö~ÃÔîîÛûÍÞ´Ï)àâó„¥òK˜Œ|J±h}ÛXÅkz\ò+¼ì™hU½yZo(ëð߆}Ï æ$¶…Ýw_þÂ37ùxEm@¤ÌYºr Oà£Pm9Hæ–ªL#¹õ0¾,=WMáâÂD9)@žQÁ9XF(½RJÊ¡JÔ4Ä©{÷Íq¼µc‚ç½ôÝîõ9j>#˯3"аzuÈîà-a:ÅöùíTðžCÿ ¦C3r€rÂÏù†fEû¼Ë×¥Üà¸%úW}`ìúÁz7CåP8Ÿ¥•Im¡-ÎW!ËÐM —÷±yŒ‹„R+¾ÆƒT@ åȘJf/+圉²ºÊŠúèX›e4_²ÙëØÓ8To¬“¤ÚŸŠ$œDꬣ“;l¯÷‹ {"ãù§A™×~7ߨx)+!MJô›”öZN¾Û(´sVµ\¬Þ[—ކ–ή…j›X}ó‘±ü`­)Ó^uš¡Š=>Ó„œK Þ F…Æ;MˆIÚË7@i$ƒþ.ÁúïUœ,R¥ÊSm'øÚëër'²~(ß‹¤ÀLÏYˆ÷mõöT«ÛšÆÚ)›Hù…ÛèÍÕ›DЕ?ŒsÓ5´x=æWcÃ(:éª.RáÅ—µNšh%Kg“»ç«‡cMóõ–'¤¯£AÒ°óÀ.çÑÊV\VÒéª ƒ\%ò»øÒ÷Š(RBÀiµÔ%i»Õü‹ÅªQЯï|$µ³°×A^õ8¯A»È®±ëðG:ȆŸ!cÄœQ.À 6ã§–’x˜6´2Ù·“ê;7|i4ÛÿÒ>e?¨sáhõä½¼¨} „*ñäÞ¨Z{ì@¤aR Fas~]iaÕeW±?µ²?1œ²¡Z¦<éhZvUãä|ó¤,®;ŸeÒL™ñ]#ëQ¾Vª²ÕèþÆBð³b«"? l@µï"juPƒ®¸Åü¥pÝK‰vmÍ‹ñ‰ôUÕ4ÿ¦ŸË0´AÌ2e„·äsIiüOZÓ|ïpy'+áá9Y;G §5( („9Ê3aŽä~áÛs>×VÞ>ĶuÂ\T6¨È@Àë5Ñ{k¿AoÓ}Ý6j·ñÒ[gïïσ›xîi…ÕŽ²?§&ÖµÐmŽ/(¢ZK¸šÂT͈¼áð=Š@Þ½°íP”UÚ´jïßaR™h!ñ´VMxê^¬ZBû¨F‚®ª6g~ðIñ»!«Ì;!óúªäéaµëí5Cë±)€ê?Ô~ß‘Ü=›Éµ˜ÀÐ5®¶A´ Zצ`ôm½©®@¼p¸B͹üÁ\þ™ÑÖ^ûMÎ6 C·P…ì `DL†*zVˆ2FòÈ~»±lb%°¿ Ý0G¹yF‚­¡FÖŒ`)„A‹  œq(Á °S@±(Ä0^ù±;¿anMCA]S 3È’ 8Z”*Ú“¾49¶(ÞƒV4`G¤Û:F‚^XÚF `2¤B‚B€… hØ!ŽU´V*0ˆ4X¡ë…* ¢¥Ã€î¡x."F$‰1‚€ÄEë–(섈Q‰„ @„"ˆæÜBŒ#„ÄPÃT‚„ F!E,3ÄTQ¢)„Á0#ŠZQUjÀ`ÄcA¤ŒPƒQqF (4`Š Š‚´b¨ R ЉF(€F (5cVTpà¢ï ¢¡iS¶€ ¢FA:ìYÈïW-µüjôO¹¼ÿ]¥ñÑÖq®ø®å1ùîþÏ6@{£ã®j“{|x^P^*m™Óö °îXXžLoäN>^éë‰ØÏ)æVï—‹;Çþø£X6œ;]*¶ËFjÖ¶â~…çß:tê¨fÑOÍÃô7Ð_½Ç¸"åC( õÃöÑ$ Nþ¿Ç7RÑZù›Ót@a9UÓZA, £“6À±Þ·¦}® æ}­kP(šƒG…<ÝTÀ׿œÇmH†'ôá¡\,&^w"7p™ # w¸ŒœàSÓÒRXž¹íkt¼~E˜jLíÚÔ2QK<Ä"ñÿ›æË«àð±Ù#Jœ 3³¥O·ªë-¾®úÎøêvÚß:,¦w‡åÓæ;sÙ5GøŸ€aÚ»-—· ØëZÃíÌ„*´’禤¹3牼ԕQ 0!:­ª*&F6/Ö9ó0ž7~ &É7íØŠSÞkòzeQŒ-¾Zn3œ{4Zº”‡ËÇW×Ùh—†ì$FÐȃæ=x #hÄ;¡„b€/Å`Š£À( 'ÿ˜ ¬“)¬²A†þ€jrÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð _gnø›\\v¾öß]N{ÛÝãk¼gvÏ6™]Ù׺Í_|;—wnú\÷gÛu·wžÝé×{¥]WÖõÝí«ÛݽîímÜ×»»¯7w¹j}³âª#A14Â`™6‘ŠxL4§€jjŸ£žOÓM#Êz0 ÓÑéSð4Si†OSz™5<˜SÍ ¦iOM!3jcFIš& 53S „TCA©“M= ¡ª{iOLL&™§†j2z<†”ü”ÿPÉé©èÔÁ=FBi¦#ÓÔ0šž¦Ñ1£I‚jxЛF“ѦªlE?L¨ü˜ „`“5Bª˜13JŸ§ªŸ´˜ •?)æ¦ ´?Èši‰<' SÓ&F˜SÌ  ©ûCSÓ&™MO”òŸ£I¤zžM¢›M &‰±¢=M0OѤÚcHÉ”ñ3TÛT͘¡ &¦Êa¦i6‘‰‚iéOOSM 24hÔÙ0Sz4š44¦Ù1 ªy©“MSi“#ÔÈÓjjŸ¦Œi12b§é¦OU? “КžeSôi¦$ÍÅ=2žšÙPŠˆÊxF“ai¢f#MaOS ©´ô©þ©™2i¦ÊeMé£Ò§½Iéª{MSòzšLÙF¦Õ?*¥SÓj6Šz§å3Ô0™”ÔôÔzGµ6„z§ª0ôÓ=•?ІŒJ~¦ÓÚ§é´ž¥?&¨$R…<A=4Ò=„a¡‚4õ4Úe4ÈÍAè 6£LFÑ4f¦j = ¦ 44ÓMˆzhÆIé3P2h É¡ê4hÐ`††š'Ä cLQŒ%X%Š2%0ÈÏL똖0"ŒÇ2%1”;Ó6X‚Ð& ’.%ô´–’xš#’Ü@€1 ŒC&L‰xŽH$É2@|ßÞKూøùßåÎ —éV¹ÀÝ»ü“9ê¨hÅW×JB.¨PátÁ®¼º•#köõ%Z·§ä8²ß]9âð"ÒÉfË—¦å£yÛß݇åë$¤ O©’År^?—þxb¶ˆ£½ËÍš³¸•?Xv¬,¯Å*ÜÀSí5„£½ë ¢Š~=HØÛdºWŸbz¤öÆÝa6z« Í(×1'TÎÒ9öà“Ð-Co¡©¬hFÀKcN!Ç;×f£jþM$Ë&/˜í8³.ê3d},7­ÜÖPÍÞ¦- ]Ë&K©³š¹XU?-¦ðoòêjoÎí"™À¿¡ÐŠÙ>çÀDà1v»y¬'bÔF‰|"t”F¼v&!! –@ $ ýŒ-`¾10L5@@€ H,G`’€ÒI¦ " P @€iÅ:a{¤ ù€8ãIG1‚ŽE9a’¤¨Èä±JF$É!›äJs:e‰b1(%4WÊ£@@°#’H²£!TC ª@â ÅÄ$©ÆoɈ’BÛ´€•bEµˆI‰ dÚoüT`›d•³y Põ˼ÏË ÆÖ vÁ ,CQ’lIB@…Ü0R£&FÆ@È 1+%¢ˆ$ÀŠE¬›(³Øxây½dCÒÈëïœM“ˆÙ~µš9^ªÀ\uu1 ¯wr´«ÞƒœÎYÊ•& :VælbŠ M@i k0Ц·¿´¤fÞ‰’ï Òé ÑÌ0'ݽ­hB¹´¤4€Å4IµTÍËéÚ¶Ø ^Ú ¦…Œ©º+‰q …PÍCl˜òöñ/þ8ØÈ W0œb?%ºã(§ô1ƒ8À"ÆŸˆa2g‡‹Ž·¹ƒ[uN"ŽÇ1Ð4ºú XH},£ÒšõØhM•Ýíò»¹†@€0=£8+_˜ˆ…¶<˜¾ÕJûf»î½T\>Z¸åžÂ•ñËt6 EÐaÅ>èHQ®àÐ:žj ÛñZj4¹¦¶ÉrxK4^tÕyaDV’ÄW†YH Œ @SF”ÏFÏ}éZd«²û­ïÛ°GfœeÖõ×`vµ>‡Ùc¡£Q-²M`‡‘6  Ð (]VµW{´z#bÅV“²èé®'6`Ûò˜TâZ½±AœQûÞc9ùñ@9×a²æ+§áµá ÀkZ€‡qìzXþTQð‡/ãànv²«×õ_‹lˆ$¶E‡prŸ<â#"÷èâ5_wZBÆ2xý[µ’‹7/¾@LYé­»è¯g_8@HFy®ü=-jŠShnB9K™}•ïòŽÌ-AÇŠ q¿i¾Q­÷ÁL6‘­C+³éß÷Û»2íÊá§þ!ÚqU–B.ɳLýã)ר{WŽ[RÀÊLp‚c+‘: M85ÒÛUÆfÆö¦¼ÌªéBÌ^çˆþX å?[Ä^¨Z&¬7>™/w#$î¯Y¡¶œq›yK^)ÛÙµÛMÅ«¼µéw“•ݾßijdkcðìºb l•¡A‰BƒÆÁ±&ÒC`  Ù° iA ]g°ÔUÛ?«Õ^ÄÐ\·Ù:ÊœîŽÝsÇàïöIn¬Ks¦Ñé%~`#FD©#\:x]NC÷%T(þÁÎæ­,xƒ@4æï!'ÁŸ¢§ÃeµÛäkt“Aœ¡PœQ°¿7'¼®>cÚ¸Tî=bŠËº.eè±Ý޶5+uÝÝóÁ€!@!œ3§sÆ{<µ×wÑ>;Àgg=MÞ?˜cuîltTmÄÐØ½yù‹rcüÆáG`ÙT©‰ÆîoÅ31¯¡1G'·!#ŠÈ©l Uå<$òç,3“¾µÑQoR~Ú5èpC#’Ë;¢³ª@¢êâo¥qö í„H·6&j-n¶°’á#Ž}Vµ¢*€¨å…(WÂ2ôónñáã3¾BìEfí™=Ú›×Q½—T ‡ê 3Ìž!…o*´QÞÍ•¸—ö žeWBUÍTËhßTL-¤¡Ã?ŒècTFU!kýªu—=M ”–-¶´/S’PÔÓ$X#äê06h⹨o¹ªß#ž… n}ŽÑ²‹ÕVÏ;4±Kú3²2ÄòRYÝìäצ³( z®dAiS5ª¤Ää'ØRSðõô/´ËÒlìîÕ¸ƒ¿Ëà"ä€8ëC¬Ë'Fw= *Ç0«*vd/±ªÞ'>9Ïÿ¿ùŽ)ûª1+ÌÍf»/@ß;]hïâ&îÁBê/¨›IŸ›®j«áFkœ,ŽèÚÀ§v¤…*°"+öˆ­¦ñzÑ®aоŒö ‰ìµ’ÞʉŸ ØÍ¬îä;wMÐKÁ*²‡ „ùI@&¨Ùã¡T<Ø8sÙó›ZÉͤi5 ]²Rcz‘G¦þø˜ž µbo^(¥ ÛÈ_º0õ1§ Ð0!¾ )-7Y3¾8vm‡IGý^%òH–EY™Ý‹¯¡ßóÆÈU]Ø‘;è $Ö"Zj®n3,ç×ñO7 ÕÌ:—·ôèã®^CXcíOóÛæzÈù’\QÌÁWÐ=2¾Ÿ¾§90ÎJ€"ÚòGùZüœ2k5ús­;žxV¿1šÈI‰up þž¯’¾­édæ~0~µ®UÉZ¬å-Sáü’$DV…“¿ßg—2£_…ÔUO‘(Ú䯏Þlú€-š^´¼:°÷—XÌeØZjãõòÊSåÉ ÉTˬ@¬xÍÞí.†z{MƒG ë­—BW;#šðyvt€ÕM§NiXŠÌº«òV[hýЯ²Më†ÊÒž¤N¬ƒlø‰ò§ÃóõF°ÑR_«eB±J˜®oÐu̼>ûõøù7[]ö¨ž,C9p·TL$ËéT(wš°(2%¥:Ê&æ }×ò7¯ÑòÖûF:±†á¤YøÏí×ÄûZ÷bêRŒ—‘ùw{™+ €½ ’Q%º\Ëe®lë×É«»¯z7Ëu:zÖÙÒý\üŽ„ý/R¤²ÑY£-‘”âÄ º¡X#-X¸ÀÉÀ‘»êtÏ’ü4ía’q:M*xp•,·&Þ|,Wt(Þè}÷?ÜO'lZk„½ŠÌƨ æí_^Ž ×œWëŠcŠÍUÑ!Ë/èêÿÝP‘ðRêCÒ={“ ^ôŸ› O%Û)nczÍzÁÀàA‘&['Õð^»%Çk TFÎ-9k—/'`h¢yREƒêê,2k0]~Bk•ðõ³?´úû‡‹{íäþŠŒDgpÂúÃjE°u®yÊzÝݯ¢)»‚ßûåå½ïíë9ö7o©å+®¶óÜ‹Ñ#”ß[]g¨äþ}ãø•UŠp½2‹RUĉm©Ôë€5yΕ Möcçæ«™íe{¦Uþ8Áõ}oÏH$.‚ɬŠÑò9¿Ô¨|#TüÌÝ< è`ÃM€t1¹UмàÙ§ïO’Ð@í©ŸiÓMg±QìtIé|ín©×GxL#hjÈDÃÉ)ÃÏ ãéÎÓ¿<–&.U˜rËݳ«)({2Þý¾²âBäÂéaC¡s®“ u»žµJÔú–x…GÜIŠÊ@°š ø6?%¤„ý~ÞLî&߸y†YÙGlÊqž,V }ïí;ÔN¼n L|ÕG0jŸßÍ=]ž&¼×Vr¬`džàÕ/Åþ•Ô]Ï{e(@ (þ€3ý.öêU{‘]'gþçüÀ¾sò©X‘àÄ.µ£™‘Úƒ@­àúüŒìü n­Ïùi Þ”$tâ~î”lDMm+®ZÀ¶¦ÿÐ¬Ñæ°¥ÞÓ9³Y¨[Pr=C¥†/v š}¸!J•‰•»£+ÑÁï¶™Ùîu*ó¶sáW¶Zlåà#fnûúÿ¦òãEù¾ÛLÃý]áf¸ A›_ÞZ—GŽ6:V‚?ÚqûÑÒ,(ÕÅK¶‹=MJ«Âcv.;ƒ•:§¬"â"°Ž#ÿ´Ð5–óVÒÕã~4æÇ/Y‰»e çqÞ™8ŽõDÖ"Õ§—ÌŽwT©°å8^·em)-É—¾N› $Qj1»Ò”*íÄ«Rµ/àdUäüH–%ä…§øjÆ÷ÕÞ=æ¼wNpônÐqIèv»*˜O[ ¬m–¾»ÙåäV$“.3XjÃ!OÊ qíg™KÚ]ˆN"=„á¨2Ù!koyCéõØu =ûñ§ÝŠÍ>¾,j}ÍOƼÉI%4eEQ‹ÏBâ üIäÕ½q´t’ʉqû='Zx_¿¾MÚ –êKÆ1feïcéÇŸ\ͪ—›nH§;u´^dj¢'KÑ[q¿!–v+^udómžUq™C—Ø·ù+M$w{N8DÈÒ|’FÓüè8Ux—Û¢zM—‰LèË–~óipýR¶G ¾dÂg±uºzn±A’¶ß°çÛ‹!ƒ.pc+ßî×HÒ«nCV#mMáמh>ÜMÒÊŒMÐ\ûLL!j]Nìú—ŸA‹x×J:{$4Š-…1ŠDuOíðð›b.9³ÉŒÙöœLÖ>·‚–É1€¥6MšåW³i|z“e›WÀÄg5™]X™r\7ìsæè´wh”-[X¹ß˜˜p¯Í‚õ¡`xzuÇÍ¿fâwï*{¸uDpk3RUÒ»ŠrÙ5~Üòr›î7¡òqrìÇüûᛸ¿oÎýá°ÜDoæó(k“õ^ˆÎMà0½#,¯ç:)Cy»™£cñÿãšÍ1³ÍÚÖCØŒÞxdÉÐá™Ô•kwÆ£Pî×ÜÞFkmÀk¾~Æõ\¬Ï«·ŒF"«ÐEîÑ^™¼vrð<™$‘YŸÿÐ=ÿ)+õ±t§ÇË·ð x‰?‹P©ƒ´.4pVà=X²<Ä»ç*.ýmkö RXC&0 ˆ®é=€¨…2‹­·Ì¬æãwuú¹3©µÍáè[Q±þ= w ’úç¸B~¾ºA"ïÁüÚå­»­¹‘”$ØÐZpÜ*„ `p*ð+V£¬¸‹ñÈE"¦3iy còâC:Ç{`ÏüMê%U)$=ý…ï¸b5+Þõû]<0 ®¡<Ô÷.’üVv™Hƒßµ…׌ßÓ b¨^»fmX‘¨7] QêÔH0K þ€‰fˆÌ­®p4¸ ­’¹à{¿uÃÝðL£ƒ$ð,so Íi?3í uÊ~e°ý ¸½g1¤õºûûÎé"c¬M ˆÃòWôèn+MŽ)Æeùaãâ3ÈÏIÉ_æÐqJòÇ—ž3ß©ÏûB¶ø+…°;fâ¹-j|C±¹lУÎnsä5-%?«¨RoQã >$F’ÈNã-[ˆÚ©sza¡ Fg»p ~àL‚–wÖèûŸ›¥~Jcº¤ž‹ksûjŽ@Ô×L‰²ë®¿uûQ}„ICv"’àqÁ¸.¸Ì¸Ñbg°KÃK6„ ˲,‘†S?hÝŽ] ¨†Ø¬t¿›Yú|ãHÝ-Óþá«'ß¾š3Ö $ÉÝòê |åoeW WgSp±TñÕì…‡$£FÛña‚jý£• Ì»aàˆšÍÈzûNãU¶ëáÍL~åóšlåö½»gcdõ¿Ônò›ÜH`Ð?²ƒ`zÑx•ý%°)'DNÃg´_…á/0h€WÈ‘~ÑíÖÀï=6³Càþ”¾TÍ<¸©i‰Gôÿl?‡ÉõþAŽêtŽ×v5s¢rp57 "Ö?Pͨ Lñ™¿IÓfzV—=9]DaGC¤‚AЇŽÙëiÖÿ4Ü—Ûǵ¸æþ,>ýÈ¢×Á2ÀCó0³n>mÎÊ(² ^FªjÍ õËA…’PÃ:RÃUð8Š¥6ã-aü-$áO7æ(šcî*îez¯0[Á ‚0Ýof$Œëé3׈IY4’ÞEwŸIGïi{Œ]´®,³ž1h `˜kÌrå-Ÿ²Ëáµæ~³|ðë¡Dl>&á f§ö4–\©“øÿQÍ…T·rñfä `t¼Ø³Û@àr@-Ãôp:º8•xÔƒtÉKó£°n9ê`£¦ÈaŒ‘B(Ymð훡žWÉʺÞN划(&p¾>†žÍø¼ 9ŒÔ“õ,ê‰Üºr¼Jõ@­nTþþ5ŸU¢ŸÀ;”[¿ùàôE¨„';ñX‹*OÙZ+;Àqb^ªÏ÷a7\8_äŠøÿÈ›‘Õ }Ná'T†]$Äcyúzšý@9e=&Þv‰MNâíß=z5¿Î=ÔíœÏð@^Ç9’é\í¸%Oí£† “ZËáˆïÝ_æÖÝÏb—½:ÆpÃ!­‘ãiÉeWU&n¾Gr`äRÈJž†¿‹\õ=Íåeo$¯é¨ sh¤º>=âœé ™º^ `î,ܵˠ3ï²]ƒj´?XÔ©â.ñÒê/ͦ¨pGÚ0¬e¾qAÖ¹Dàc1âR+…øè–C¿šê¢¥›RŸ"ZH-œˆ°óÁœ`‘ÒZ³þñ ¦ñnú/Þ6‡XŒIèÎ ×ÃÈüZ?nÍT »¦t¤<ϳ쇕é÷Ι7-ÛY.K øÝ LéãùAúãRcgm ÅÝŸ–ão`»·N§Ð»ó÷Ä•€ÉMôR ùŸ›mÊzokz»ô÷b÷Bâú‰Ô­ZºD~·ØqË©m»ÚKO‘æ—Ð1d¹"ùQ Œg,;Zí'Çvx0dRÌx6ºö¨ŒW`÷î¨zŵÒl'hn{탨£/`íö…˜´nûb•=RìÜÆásë¶JL'ƒA¯9lIW'T½N×f| ÿl²žÊl+tNûþrèÄÏÄCv–I< Ç\:¯C¸.â €h_gÙEX|lòq¶Œ ®™æŽL€ØÉHAtÁQo_%¿yótEbj¾IÙ$=„•Dq¤*+8¯Aoýß©:3ëau̶ú@>çÑT­U“âvkGb@fÿ· D¦1-f&`ÁO?¦M„l!~áÿ¢9ä)JÌ dºCK^_#¨ÇéQÀ¾R9ø‘òeþz-~¥?Yù¬HK4Ï=Išg±ñ@?×h0N¶Y¼å…¦œyó^ùÍ›ÄSò+Æoá@UL¨Óy¤öyŠq caÑ}'Pñâ’˜jñ0…ª X¼Ê~ÐpžeM§8Q"W*^CkL€Ïž»þîE9¼þ”"òLôh ‚è‹Ò&,Ýf ìë" t‹@kA ŒVû<{:)Azµ †Ä¯i]Éu œÔŠ »wgÖÒ”¤Ê÷¦ë±Û+ô÷¼äIi¡¯ªòe:F~Åþ »üÍ­H„ çy½èg\qÔ«‹¿ôÜR€¤¡—§²3HúIA„ZL­n›…Ï׆Л6ï׃–­7« ÎÓÆ'úØAaÜBš/ÔšÖ³Q‰q&ŒlPFn`ÁÈsÐÛD30>g?Üo€‡ÆœË¢-Æø”ZDg ¯ñ$hÂE°jëצñýÇWviXêÜÐì†ÊÈ•þ7Ó)Á©_eôI»´‹jƒÐÚ¾YoßñX¯["¤Ñ)¡O’ìÒ|òGß#aã\{rw‡=üíá®Þ ÿ­Ä^ëzc=çèyA „˜©º%¼üô(UöÖ¼m]~C©³•„"JþdÌèÀóܲµ[ùé…«ªÊºÍQÔEãã3^çÉG,3´ì¹<Îé7cÔ ¢;¶[f$PX$©+ÊÀ#Œ\ÍÍíºìÖC Nî™@笊9L–‘‡•pÆŠA +I'‹’²Ù@ÖPˆÛóInLÞ ƒMàQÀ…EoóJKu7¤ò ÎzæÄsÜ]øQXÅ©hÇçôÌÈû±”÷ü•ò‰)²qÔzMßÊlø§;¼q@aÊΈ7#æúC4“^™—í¿Ó) yËÚT?\Nø¨I?- 7’Û“â  òMWÁø#Ó¾.UÐ75:5®§`L«$×ï‰% ×:m9|Yµ–µ‰áßeqTlëJë<­öPv´YCML?Œ”~à/SÆz%GA¡¶Œðçë¸n ÷ˆj’ãr+¹ãÌU DƒÞ¥ß\Ñáµ³x½Û>§c­+ŸË´›Gú%fÊÌrÁnŒ&º7Éæ^h*¡'ÚKL4s5"æ)?aE±ß#þê=[[Ÿ5¥±ŽôGÎHØE|”ñi% ˆú­ ªÒàãš!œZ68æ»ýg9ر»­èD³Íè• ïGh©í“åR"¤ùñAÀºjÉAgH÷èé…%U˜£qÈŠãŒü¢·¥2ä…K‰‡Ú"ê÷=Û ºнbá­@Ä_-ýŸu»ÛëÕ#4\áüæÕ!_™ïÉ̓ sŒMÁ´²QÃÐUóÿ >v¬É[ßOA±½aç— .jq*}…!XÚ†f¶:·,ó/öÜ€-#»-ð¥<¹qP㙟õØOÜÉ®þªÞao¬{Á7F¼q6¯ŸáGß/(¯;ºÒcf³H“Þ?jÈ»žeît7©ó ìË;³ûil$üK&Ž"QæzÖÁ)gGGI5é1‚[iY¾Þ(žâÝ%àÇÌãßf¿’o‚Z¢Ñ+YÉ6d¸Óå]µ…«ã,OçÊÔDÑùÆ1…®x %ämS,Ï”½FƒÌü@eò©ÚÈÊKUÉîßÜa†"ÿ×= ´Rè#»­ÔëÎÁµ[àg{üŸÙ’Û\¼ÿ¿/òÊWTÿ¬Î AP[þÇ5Fˆ¸u·¹ª'ügïþm‡“® ÕÕÓûœ»h3{íLÕõàçw¾Õ¤=ó%QÍPlΖ‡‡(% oB9À$À]å0Ù½t¥MnŒ‚+¥ÈµZâ9+)«¸MDSë´o9¥ÃI ””—h¶èu…WZ}5ãí§¶*pˆÃˆe±æ7qžÅÇÑp×›à¸{;f¿Ÿ—H2ÜÑHšqI›V3 Ž]‹aÜ“¼zó7-Íþ¥_¼ø>žž>œzJœÁHK¿}HÍ¿Yl2[+àj,«ngf2k a¨Üªè…ûàp¢ì(šÏñëÞº²ØÁÖ5äú€Ì1‹û* ùâ\R´LìŒk™;ëüíǯ±Û5áæïùÕµAMÐ6úUŸ½*¹ôAë¿çà‘âš/²kÉùNîùf½IjÿŽÙs¿[UЄƒ¸á«ÀM nóìºFWaFÝku e(^› zd}?+êè.ý—"³™£ÁÇ©^&ËÕÖóƒÏ¢‹ÀÀùvx .c,ÌICøÝwi&›Ï8‰åº¿fWy«nz Ù4Lˆ‘ÍßJo,….˜ÄG‡qø<žÀ‹î?ûq‹…ÎC«ùšxµ)â6‡»*®]M‹yîˆLôóܨ~P+&2î¥*e“쯈øèþ©ƒ°­à*URoí…vø÷è¹l›‹ù©ù»Wí€Nn)TÛ4å{ÞÛžkˆbù¹´j ›æ&Ø”!ŠŸ–׿ú­´S\áÛRÏNj¶`9çΚÜòò"HÍ_Uuôû¥”ï`ã;b+S©Ðæ]ÄdU;q¶qk_”“Ë…!c»kÍ.íJ(æÇZçç~èÑty›/jwI…žýþ8Üú´˜ 9¬äc¼Õ.»µ4Á³ tãÎK¬ynŽ;ËQi¬„´ŽÓ߸Ø7Šåx.ô0;×SV–=4¼Ÿ&ºÿÅÔ‹–|…æÄ^ ׈OXº$>×zúG2È}汸±†úêÙE¥ÏÞ‘åñ“ iC¥ ‹'Ú«ï¿·:M—ÓyS˜{^,C-xeïÕá7G±°Ë¿©Îr¥5Aç¥ô¾™FÈOwª™¨fBµY«·£LV»Ìêe•¾dƒÍê”ÛèÚ%Ø·æö­ã~$½¾¸ýÎg*ñ*»Ñ¥ûµŸqáitªÇĨmñ2«B1¨Úy¸:”” Ñ×ßçÂóŸxYÝŸ°\£3˜â—·^xÕst#£;Vw'r#¦ZBü$4wzS:O(r7tûûz ËsÞ=›êI+ÖQøNBO ÛŒI÷–w£dŒòëë b·føM íyßvo¬TŽ0O±^![]Ñ“ÕtBVöN¨|p4©²O”p#Þ!í•agŽm9%éÄÍfþQz‹ÇFÉ"Œûð²ï¬ £ýBìÎsw!ˆ— +â³å°‚ª$œTzZI.ë>1õn ö9ú”Õ/)B?EØý¾sd×(õkÊ“XßiÐÉjÕ‹oMçk4þó2ÂîÊŠøº xˆT«c:ûø7¯hœ¤g¸Ø¥ TÇÞg‚§â”øø9hÝϲSlÚª‹ýgU.2ø'^˜z™ûŒÆ[-º‰Êm•-@Šª(` ¢ò ì¼æ¨ÿxÉŠ¿ÒÝð“lµ£a iJù¯ÍÄ™ €mn‰‘µ ÜFVùG¢ÌÛxÉKB-ÓÎØl˜BøE‚àY‹¿jœVÙý§¿G²õ‡‘ažíçâ@ ¾›%Gkeìueg߸䩬åEÐæ¾æ÷œ õaµ}y6s$u¿©‚§¹s‡ß=&u*ÈÉÓªwˆÉ}Ðs­Š‡ZçdaûÀVe=vý˜¾ÇÓïêÿN2º¤H™ê@JÿU3F‰‡›¡ûï ¶]KßÎÚêˆÌqnèÔù^wÆ´›ÊÎlªk-”ø~$¸ƒÂë@„q [ od‡ÜÅhW®±Ž¶› Fys 0ôi‹¶]P*6[ú4[ỳÇõ‡þ¤`»'Ò/û×Y=èó L%Ù4ôG鉽"vŸsÉΰK¦XQháóFø×·Pg=¡Z)ÁÙR“>Ãìéw²>-ü—O&Ÿ7ض™©pŒÿ½ÔÜû¬w‹ìtQè5 8ªûº=ƒº¹å¾Î€ Ç ɤàtîÑÐÔïì›UgÝ8¾9øÉ°p“ñxZàV:ºÚ2¦Ú±|ŸBÌádÿŸÒ“u««Îê¨uÖ‹þ[;z¢àè®ÿÇcp¿û\ZÌ.À„ˆF«½Ï9¢ÌøLÂNüOe¯ "h¼Š…\É(ü´-ÆêV¹vïî Ò–£²&L«‹žYgŒh!¹OÓ¥"b|iÏ\æOv›–‰½m.7‚º0žÕÜѳ¡§RОåÍöj›EôéÄ‚…þëN?µl]ödžRµrNLRæ=¢Ð㥢íîBIÜÖ^Ë.&ÈG0 R_¿ürE8Pà"ʈzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025613607166133031616 xustar0000000000000000115 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare2.dat.bz2 30 atime=1579730360.849765597 29 ctime=1579730480.76078814 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3hotspare2.da0000644016037001603700000010540013607166133035064 0ustar00hutter2hutter200000000000000BZh91AY&SY­$µ3ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà[_*U ¡BAJE¨¥$*D©¥ )@B €ª€«Y*Hª‘J•B¨;¾N÷£kT@RšÚ „çuÚ¶Õëw–ÊKÛW³w¯N{Iîç»{Ùwz«Üí×·®s“Ýl2VÎ{ÝRª÷·¼ûÚöž¾ö½:šy·3Þ=[rk©uÎöê%ov¥ºm»É+Û½³®L¾Ú•{o'\tçd•Íß{v¥»Ýoµ9ÞßDUy4µºî0€Ð0îõÞÚ˜H“fËl§<€*‡Üåõƒ*„ÐL‰ˆÑ¦ši‘¦*{&šdÂM£Ba6€Ð'¦€Òz2›Fšfƒ&L𙑄ÓhÄÓD̘ŒFM212&ÄÄÕU˜6&L˜F†MLzš56‚dÊx›S##`˜ › LhÔsÇlöU@´HqaS#ë;ƒ¡&w0•MZõl©dSHLa‡ïtlsˆˆ(†d €\¤€>k|ì5‘˜$aD ¡¢ªH€X @P†òhÙÌW°+Y¤ÌSÁáÔ!7° ­bɈtÀ‹pÁ}E0€‘Y 0¨÷ ŠV³ \âFÎCPÔKØRA"@*”™HvÃ"ð$uHA0€¬a+p$ñ¢6-ù˜V9RCËjŽ1™$1Ζ à& ˆeTݲC¯zöM8É> Š°Z€vE6 F›Ý»aœÁ¤7±…¤ðÍ+û8³°ßlÆH. ›!ɺ6 ‚bÁ®-ЛµD¯.Ù¯Œ7Ll¢ÄóŸ!˜¹{"-…UC…“øÊ!€€TÕgàÿfì%žɰƒùÒüˆ•X ‹£I ÀºH ¨¾ `I@½·øaxƆZph0Iΰ'ÏaCpñÂ<8…¨¸ù>£É“ã±q¡î>*V’"0g)†ô¬à´Ú„gR³Ie Q)° @îXYˆ¸„(’!00–ð€ I¯ ÀL½¨šP@‚äâBp  >ØóáÄ…‚܇^NX A“G¡$¼ÚÒгP”%G,¡ÈŒ<Û^„… ÍYêl¨ÒŸ¡Ø…{œ¦iMW`À¹å Má­2EF€†ä ÝÉf¿…Ü­Û#ŽÜdR“ˆ\W oèÎCœ`h(t!+À;&¥çŽR{¯lYX]k3Jþý C5.°„ ƒ}9¶ ¬Æ :FŒ J;ñÒ##Õ”æÙC‚ž RôT/¡ô™ÂRD6,Ö0a¨GØ`AçЬfÔW«<ãÍ4YZCTy^i‚ƒДá§Zö*b3ËÐ+L!„‚*îX09Öp…Ô¬aná\çG& ìšU> ÊvÖ§0È£JÎaå†gM;3`‚~ô¥¡Ö¶Š;´dòçÌÆõ&óë3#3T8±“ð'(Æ\摼¸[òCr ï¿Ò™Ž`Ìf çÜ7ÄDl@”dQoˆÕ!ö‰9èrrB›&ñŠ@œ\¡±˜4ze]C2¸É <:-˜Áb6ú#•ÇHò[CÅj+dBo0€'KËlÁ ô̘‡„ì›ðïóNX›Q8nÕ dò >öêgt< Ä«7•ÀˆÃTâŠñ ¤hiCnÎrƒÆ=ã™}Q„!¸‡_—9Ô!‹DL{À aùδñ^¡¡íÌ({¦ÁÞ33€qŽZ«yó ¬¢Q,Ñ ãb|LŸìöUÈ1hX9 Ä’1†]“ýXz˜ýŒ§Lê΀·Ã¸qäÅ;&pƒEnç:Êñm›hÚnI‚ÑiœgiÍ47(vÃXð„Ý2ž f¾´)2Ì"®,/6^؈sÅ&© Ô—%²f ߌ Däz6—•SÔ8fdÁÞ»á™^¼(•rP<[v–Œƒä·7NÓ,ˆ¿–O[R蘂cZÈåNᆂÕAª"€¯Ò̘§¢dÌìÁ°vGaX¶)H®n¼„ǀи·Î¢¡•gÊ©H¹rÝŠA¿ ÌW²Gp§LY¦?0dŒÆ(uH~vb¸+Í8ð2ÎX?Tf‡¬dN=²8ç,VLK"`ÛbºOëkÐØ#:v¢„‚ú·Z…WNZ¡nfõЦ €¦$ï%.È¿º7I8çæBIÁ…h…æSû­3üSû]S?‹ÑÓ:!=gÔ8[&ë=¾¥%N†Ä;ïCL$ÅË×¡ß ÷3úìŸÙVÌ/xæ8G¦6Uª0Lãi+dÁgdK°gN8· DÇ Ïxü à‰OF¤®8NrcXœÄó/)¤Ç‹rì›w !!üuË1ï?jCu bØ8fÄ!ú 9VØŽàOÒ3œ»É»»P'}¢D…QÜåùŒ 0èÓµO Ðɲ˜0”Å|žo`;úÁ8ê ¸Ø`uš­®eBåÆðTÀÍŒ @Z"¬¤¢H&€```  Â*À„†D ˆb Ik‹`5Æ YàA 7‚¨ ®=§ö¹ü³A|BÁ^„Ä<™´xúÃ\™¯Tát,¯œ8–t¢_ ï”3ºoìŒ?;è½^÷–<yf‘ÇW\ëÛ¸“S=óhKŠ·¡,QO(ö·Æ½´}iÔ@'¨¦(‘nªÂðUR‚3ÐØ"['ŠzÃÖ‘Ö‘6ê>À>Ù­°Ã0g2Ô¨U Ä~×½0d>曋«}÷·V?—Oòân•€rƒ ¨[!ÊÝloÈX 2³.'Œuîk‘~Ü×\‹”ïÔQVµ­ é”¶„ªit:ᾎËü\vf›I¤œªçÏÓÎåJÈt>Ãò_ÛsªýÃ`7Àç¶1 ›PRÍ€áÁ;Ïó°{¦næ¥6ç(ËØÒ Ÿ•Å•œåéd„+ü#) ͱ³€âc"¹H?„µƒ± èÄ!NFáë£Àb« ܳ>lÎD‘ŽÙHàžq·?•‰ ç© 숫j¡^§¶Œ…nH5ăDMTB Ç$A &D 'JØÌ3HU6$Ìx„šL%|¥B¨_DÔ%vè¦ÑM¦I_0^i7–L†HU`ZƒÆ²™!ªRgX S¥=Qd§‡öÙë”$d€iŒj!Á h†ÕœEBÀ¾‚AUµP+†¹ bi $¥ï2Wð}÷kîN U‚þÂ6F@È5xL@L†JNVF<ž# Ψʰ‡WfÌŽ(~3cMK$i! p§"}0;âÀmieþ:GR†! ˆ!^Òz˜\Ìp.¡ù–VägìH%(@>+s2R²BdåVÞÊÓak5@õÍ€÷ØE—" bЄ&?3Æ#3npŽ*=I3¨/6!@tÃÚ øî܉H ¤7Gø™o„°@Y0ÉKbÑ  ád´ÀÂ.×fŒèêŒz0x¢X ÇñF½smd¨ýò¸7®ÛXóí¸V¨FD ²¥I‹}%iöÙ}q-¥YqíZ §!¡>1Ö«Úò¦œ¶BL*oDÙ„ƒm˜¦F¯ 0xÉ £—:7K†0+Ÿ!N€P€« Q3#*ó3QÇÊŒ‡üjGtäý¡È¸ƒ`$¯èB›–-MÑÒhMÍ%pö‚`‚ÏlÂ*j–(xâqŠX`Cd•Álåæ˜_aØ]„¢4]ôó\&M,Æp~ä'y˜,_! ´õi†GÄxg<"¨'9öN0Ÿ}Ńõ>Þ‹„}‘­—œâ°±býÈ£ßOºÄòvAu‡;ãAŽòް¤qµèÛŽ—‰o«-Çžé#N†j€~››¶;dP…ƒ‚yÂu’e´du&L¡ãJê ƒ5$‘Tƒ¼}gîžCÕ@‡÷Ï Pº:3Ÿ,SdxμXê’1?™¦;f‘fÒ/a@mÜs±¶ À‚Üè¤ /HÐP©œ&S:3’ Y…áÖ)G&NPl0Œ°—€À‘œ¦gÇIxÊH!× ¥¸ž¥‰òYbäó;ë–µ”ovúÿ«}Ôò“Z†µÅ²y#1w2_×’BÌÜsLæ@†u˜¦Œ+Q=÷&G±|ãëåó>zÏ_+Âßš’±f6BCتP0îæ) ǬÃvÁ²€µPy°gmΈ`g¨T+f’p}Š¢JÏ`mD6”‰¨2³P{ü x\Ó7á˜øÆÛøÎØ«¾qï¢0„áÇvFÜ<+ ‹kÑ}»›5äƒV¡@Ä|š»:âüÒœb0yƒÓ®C#Æ5Kq¶€µœSoR™õQ°9¢¢þk¬¤s™˜oãÆÍÕÇžÃô—Þ]0™ ±ø1CcöyO ªõ"däxM(nCÀ.¥Áº7"W{´B´|óTÐÉèFäõ­ÉÔÜÆœ ¦¸é¤b-F‚Ä»6“½°‡fìš§MMÌ·JÒN’Q” (V²:3P$Ã-ãsíŽù²C^&¯I¾Ýض! Q†£ö«†c1¥~™|ÆÅK5âkÂÊ ÍŠ‘† {ŽKoM4Òö¦-(–n5¢*-Ã2Šîjf¢¥î;3Iéû´DyÆa.T!)–EÒ¬âI@‹iƒdJL]I Ù¿&GD!"‹‡µ‘Ä Õ˜0]èM4̈Íié,”h0Ú\QœÐDË0¨AœBJ"(ÀÓ- n ×ê–™Lúµ’Íáhñœ-=*aëÒds f«èN¾]šçsåOpuö´åxÕ£’ ÏñY¬éºM%k_ßù#Š©{”3FôáPíOIóËoÎ'‚9½Nx²=LŸ ðàøšûÛl7 p`Ã! ÆT/µ]Áµ-ÅQ`HAHs.5ö_èÔ«àÝÓ [JÈóÆ\%Fæ7ñ7Ãm¡‚VLÌ91ªsä‚@LB´™†ö;n’k@Éœ¡³w•>pøÕ{¾ ·„ >x—€ÎN§%C@ƒÂM:<â’êu¥}F>w´½•Œúˆo¶ÞƒöS‹íÁãÒ'“£†$uõIõŒƒÂÃbŽ-^iÿ·xÌå-ÜÚ³£eHQbþ8”{’bòF »P¤æ1L>ÍNÇÅÊ <¶z"7ÅãË"SÍi\_ï§Td™£Ô´NÄçX~;À¿S82]ƒ³ÚêD¨ž|[É?Úeéë^•Ùò¼ËT=Ä×+^~`˜÷,2« lUÞ7ê€j‡–i5AÁŸÜܳ%À¦@,šay1ƒ\8¦AÑ9ÆAHOmI ¹Ó¼,Ãfb„,lGNMû¯dõ{ùO¨ÈþUØ'ì²J±‚Ĉeá˜[ôüÞ^ó;Ð`h”¦+ø4^è3§ÚŸo8­pÚaúï˜PŒCJeJƒ|ÝÐw Ò¡yÀëmO÷oÁQس‰ù ¼úÏÊؕA4ÃÉÊ¡×2Ra «à\ÃŽŽV7Rh3÷s;»ðµ4W7Þç÷ç®jV ·´FpoýˆqϱQÓÌ히ààxžfÌçlšü¼ÝCÆÌÌ™Ž6^B™/2GP'ãqìǃ¥Ü l‡$Ð"Ùú./]zæ©î÷Lwxç>mñòkæT·„5hÛm•@Í–Ar÷êÝ·ÿº±Mòò<7ˆÐ{ÀaväÐ9 9qÉ»™BÙÂ’BbÃÁŸ[p6¯eß•îÜCmx—ŠxgXîû€vŽ%Ý=±l ä"qæ‘ಿ`‘ ‘1Œ_Ë‚«É+$2`8•`d0ù, # aµkè2‡'iQ¤'‡j®†ÄRõ$ñ¼Ÿ» ØKàÖjþzgËy ½µâI¦{Æ[šÑýjÅ õóÆuð4 ˜LÌ+ rÀ?æ‰Nf¸Éå¯&p°Ä„Û á‡ÑÃð€@%ÝKgãò¸¯ìnüÊ[1C莵Žlýìmávo{}[››í[ʾ¤çqaÿ7׸ÛykW‰.Kw[’è£ÐhxöÍrã·|˜–<þeuí·mbì›Ë¾æÃ¢4p™I'TŠŠTZ[ ÝÀI¶6¥9Nè÷æ5ÃÑÂ&S ¼¬ ³—»Ì,×ÌyXwš½¦b;a°ÛŽêé…hÅ¢{bd©ÜºWÞYþ)Ε¾`Ú¹!™Š $…>íO3CyÁEMA÷°Uý°ýåL­uV*^æã›-¿…†ä9P©VÔ>¹û{ÒÜ'F-½Š|­kZ·)ƒÅœÕÂÀßã¶Ÿ‹»—?ÇÒ Éæ,É©’D}{oOć´ Ãàž@½•CúÇùíK$|p}´wc sT0Á– ’„pøÏŒúÎiœ©ß+’rèb¼ 1ô¢#µí¾´l ÆZ›öN ƒ#Vžˆ¸í—Œ)Éù7V®’‘d`-ÆÌŒztÉõ<úféÄÍæ¥Ãf<¯Jÿ}p¸–ô™u*9*Âr‡ø"E²à;>HÊ9³ìC~(9÷l+*4ÄeC4 ¼v„õ >ÚÇ 6a—F¢äÀÈ'é:qvͬc—½¥ˆê)òÇlß—[3Èž¯1yEëpᚥÄ?¨$‡Â@Ò…So¨ŸÀT‚=­ Ëü‡›*…#hÓQ™5^kÛg¼­½4<&5noõŽïþ­‡Sí!PÙ;þƒ´t.¹øŸQÈ£™~v˜ÂmŸ¦`äÓÝâ€}6먲PÆ–ì3©¢–7­dÍ_ç,«œ½X:á €iJ©ãð@älÁæàBNÏgþyÏï+wû{¾«¨ô‹/·”h7¦Øø’y¼Ê6-ÍB¿¼×XãŸHá™û €”g@(&JGÝ×0Í4hPàèÌÌÓíãY¶rïÕmŸ€*{/@Ü]8úŸÑî<éϼÑdÔ2ðÍ㱯RúΰoÈçœC{$n RHÞmÍqÇ…8^DüKáá0S;™vseɳärÎ2•¯y–¤xYŽ˜Ø”&6šP+Ñ ¤v Æ¿í¤À°¤â•š¡ó¿{fõcð°'öÌ7& „dB ±í‹ƒ 8Ó¨hw~Öâp¶.ÝÇ86V‹Í5•(¤£WX!z½4Ͼ«MÛ7nùñÏ… k» c :&A¶{fþf‡îçíŠ^ÂF £DÔœ{ˆëpÍùœÏtÜ„ ;€?ÃXÊò õ¾3çÑŸx`h|—”8µg¾ÃÜ%öІk[4$ a•Æ!9•Õ½“EÎÍlA³"¸¢Ö¸çñfÀv®ÿÀ£Ô·çâ3n ÎPJ°Í®aôØÈº"4 þÆC¶Þ=ý@â&¤ 2;êƒéî')½.Æ•õoQñ½ÿzøÔ´Ïö‘8&Åß ‡G[N…ñÞ÷Y,-¸<'`ÃRŸ!’g^~ÝyiMZŽ˜rgo)mè "^Ô 6jÿ³b$|¯W&ôJÃËC ‡áŽP¼8”!ÀÍP: À^½Í¸5ÐC˜o˜ä ”(gàE’’PµÃð?S¼r›ÝöàlL‹á>«ÉM“=ËËkÜñûk´É8,8d"­` ¦xí<œŒ£òûC‚f†xˆˆèÇ~„ J5ÏJ=HÎ$a€}/êãó>È“‘žÞqxzö`Ù»ÎFb FM“ÐNØ·ñæ`R_³4Lô] Í§Ôè‹Vï»äw¤)©8$fömÎ7Òæ! ‡r†Ù^NÔ´•Ò«ÂëÞ ƒYC=% f-ŸM8ðy—)ÿ–Õ×KÒW‰x0t³¯Üé„'G‹˜°¼ÆIÙ½D7vê!‚2+GkðCp÷¢ºÇ£;õXt¶<؆¡ùÌM+ 2ì£ëÛ]¨Ã[0p>ñ³e Gâ]Ž3Ïö8ÿ‘ûà?«›ëÆ‹Ðå ÚCŽCég³ÿEÁ‚‘÷ÑÛô{ÚV{'#M+ÝM½ˆ T¡DP†Àʼ©2„n?v®`÷‰ìcDâ=ºgïäÀy‡ö…CŒé0Sž{¨çgàÍ㟢߬@:ï£ÙÍީư¡û «vÖB*ú-rLçÞñcÓçú wùC´{BÏ45 ŸË½¬Þ”›Gùt©iã:Úø6OÙ£KÀ•ÿVL¶å7R×.!° É<–GE‘‡,m%FTCy¸ã*¸öCgžå?B«äÛÔ£‰0ÎØäƒãßG¢ Ôæ¿B@õù ñ÷BqÒ–éUX0þlS·+l‚±ÃÊk÷åq<Ö¦çÙHT h3„­»…ª¿Q¬ ÜIŽ4ADEæ½t‹k-ØBo`‚ˆ–ÈóM|òáF?½­SÜm“£."{üPÙ·Öòà¿k /EªÇwU}Ý\¦ß+àivZ›Eç=Ó¾³VòuBÒÞâ€b.ÏÎ8¨ýn»@UÇ ùc¨K$0|92´?Õú9nÞå3GÚâøLFkÿ·f…D6’÷ àÀô^!q“áC|€ ~ ÿ£ >&®hMkÕ÷ÿ0ßñ4Žõ`@dÈÕlTÈ›Øï–…pÊ©òÚÝ0†3"·•–þ~Ü]Äu-bò…û‰ÈlDUÆÖ·ž_¤ÐLnƒðÙX¯ ¶€@0-$ $2" ®$A ¸@h˜aŠÁ¶“y óÀ`f ÇB06µƒGÅ㊯, 醉4qd× ,««;Àë`u¦Üë¶$LoJ¦lü̇¶-›Å‹‚`€5ÇüYÅ›iÇ1z~a¾å™?ƒ¿4þ‹FÌɪž\w$ךÛZßDºßÉÏ;›{P2Óô"¡¤•Fý5”¯U÷R x“ùÞSt¢}ZLdˆ]0F“…C[\vš×Å|v• Ã}5:ÌÙÈ¡ G#“ #¢ëh«ùʹ W f*ºõߟµß:O}ÍÆEÈ!‹í)¯~k*xñ#üAÂ{0t˜DµØïÝ~ÉÝìÞóMŒçýú‚Õ› á× æl¥iV.hг9 È’þ—Ï¡ ŽÌò*8¼J]ÌGB‡3Áœ›«­÷ßf(xÝïG+EÝÈ®¶åüºŠú«{W©ÿw[6‹ÉaOäìÿSÌm{gçìpt\ uÝÝ”Ï i¤?yÒœ ”{`4pÅ›äiɱ¨ý·UŒA¤VÎIÄÝ t€´:Ó³-ÁÈþO»Êõl\vùš‘4$?BX|œxAR‘ü–¢ú­€5ïqAr>§¦RFÞÐ}Ù4eͪ”?pCŠCPÄ­ ·Á×ñú˜š”ç‡ÕÎ2à!”¶hNëË@¢õ¶ ×8W,—±vRv0ªƒ¯ó|°>\ý‘£|gËåB„â!o¯±ÓM± ~ÖæÚ<É`üÕIðÔ9ðJQŽwäê^Ñ™€‹?X,m}©½` I¸æ(ÎE[· °Ï'5Àj$-ù$x(Ö#s=ýSLLòïšÿf\s–FgêhÛ1…`C”§Ú¿%yæúöÏ^Ö¬B˜3ÆRêº tIíö³”üOüý¥ÿxÚ¯#¾†õ¼+` ç'”ðÇ#² t4€é 6 "ql5Zh’`S‡*e Î’1 c C*{gÄPú È›Oó‘yfÔĵ£âÎéo_®­|ÝŸ/Ø2ôIüC’ÓÿX†»Ðïv¼¤ A$ÊÈkœ¬EmniüXP<­mDiZ€)ËfX ýs ¼Ô»'ŸäÇÇc ¦?Ì!£yÚ@{ücêq|VOÈå+ÝC AùCõæ}|[1ÁÔΪz Ý0å+8” VåÀ™‚(šŽÉë èö c„‹éM^qJpÉs5 ›jÙþϲ{mÜ;ç¯aºÇ„Êã{2³ÔP:umû9ľS묒Óü«¾Ò„bI¶€r–ÒÁ­þ‡`tsHÍdÒ ” ò<…\GÜ¥‡û'M£þ¡²ü²¡Ø²ÊÂ.=õ¨§¹6Ùý7$ÞÍ ¡ÿ`OØÉÉÊY­$ÑGT!¹ô²¨•ž)­Æã‰ÍcYc¶erÿé’Ê›¿·%øóÕ× nwìœÝìáØè™:VÀ)KŸ•¸âÙÌs·íÖrîí¶¢*ÿ}X–$!N>»Dq x9™£­$¿Ž¤E×T!b=B=d/ñ yZL3Ž*–,«åˆÑ$‡D"+jgmA™½~ø–n¨ôíU¥›þI¥*H@îÞeþÁ§ Ÿví¥Óí=.a‰:LŸaIMó D>S½ùÄO쌆=0ýX­¯(Ðs³6\5® _O áSê @,c C·¬çá;Y˜C%Ìü]ç댧ƒïÚ[0¥*gX HþÄa?}=Õ÷èZéùÍ$ÍŸp;¿^ÛŽ“”ûÐø›‹ú[¨åÈÑæž=ò~ ;1î‡<ØFÔçAΧg1¾›Qñ†2j³Y àu'ño6Yîšñ ¾Û¸"z¨r:>™«§–¤#N_ŒáLh'] Ð RŠ[Oµ…†1í[£¨ºån8–ÚKÒO¾H€Ø‚»9p0Ïg»Ç’vE<4 ‹#@rdeW£=&QIÄ;ÍKÙòŒ*ée,ÐF½ØÄ¸.Þ%¾Ë¤µsÃò•b¹J©ä^]_ K5ç¬Ç]£é½¿úÈfÛññåÖ­6­7åËÌqßü lz÷ˆÑ^R™N-Òñœ!5,ÔJ*)Qé/@{rÆ5(e*F†M–HÚ4ypà h5°3õ) q:6³Å÷´Bˆ=\Ÿ1ÌYôéÿ¸£g‰cî9! w¥fÜ( ™L$€ ÆyÔ.r¤ ã6ᵿÉíCçïiBôû¯Xsv¤9áçÂ_ _"‹¾ñ<Ûw™dÿs_s$0O¹ò'œj¡ýË¡„î¿Ð×-¹À€y®9qpÙ9ek€&¨±/!ø`/ÿÒ¹HœS° ¦€Á•½#©k1t²Õ¥lY‡rûÒ?M2qº5ÅÙûuºOÙØ9‹Ã_òÕ¸t{{ ÿ™æýCÓÅx‚+2j7u „Àeº† À¡”Ùœ„â÷ã¡HÌ®°à¡¤d$ed™ã‘Žiš- Íä:´eIVPdä’›Õ3¨T¦{+À6 ÊrÙÒbôC‰`‡eýk;f|è;1™å´„Ž1÷6›ÿ­@¡uB)D-u™ìÜQ–€º¾]ÔÊ Ú¯Ùü2(Ò¿“vyƒbÐD î!¼B2?D3`¥III}BH€‹N®šé¹¶Pk˜W Dj±˜6P8Q„ASŽ…ALS¢Pc¿Ö`Š.|µñŒÔºq=I0O/ØÝM²¾—á>½Ýö?ÓÀž¦êß/¥Á€jŒs„ !jÐ'0md!úFê0hø#2>ÇííŠÏ ›TBYŽg-½Ü“âE+?‹1Ñ6Á‘ uèç˜D2f¼1:T´|·Š’±k¶æ¯ä5Âø¼çIñ Hkt´Ù7árŠ#Ä.˜÷.L‡å™ÿkq¢ï¯¼ýø,+ÃôïÅg[zµ†?½n@ã–’œÚºˆsëR% ÿœ„°ªË©çNÂSö _¼ë­n®‘v}[Í —Ð ø»F°nÕ¼r€Ž* ß’€Ø&¦ž®fó³àx¾r_¬vÇMï}ëÏu¢øÌÝ¢ØÄo40­z' 2“Ö'‘“l/½zÝA±Ø”Œ/?…šPœ0…ù¢õÈ@ÓÜÄ6ää>Cô»YGR߯DI\ûä2¼Exc­âÃýA.¤+”¿î)ø.rN¥Ä=OÚº£1Õh=$+âÕI«i;ô  l¾»¦ñXÊ …Bfœ¸"EÕùŽác‚^ †T$«L²-yØû08é¥0–ùZŒJñˆ:Hhí‹*Ð9òìP0p¾~›½5šÖGVAWŽ?;ÛÍ7¶•I|½·¯PŽVê%—Þ«I´ÎüÕ)·ü³¬s=üyêù´£»b†'=fo«¦cñäâé™Ç0ß T^Wƒ¹lcÊCýãiú5¿[2ÀŸ÷MYQ‡xRnóè¢{ §^¼är)àiP(IÝV`œ?CB eE~8v2­äƒÙ§…Æœ$ ßKó÷q«ìº{±i"rä·%ól‰DÇýg}œ·M”&k³ó=ÌùR  /è¬o€„W:OÃÖ@ê ¾oý à鋽àdß!}k~“Ìcè7óxVl ¸]|¢þ…ÁÀu1û(nû qy* ü´ÀŠÆ㺳;·="e¤¥×QšzÅu7‘ ÛæÅÁ ¨¹Í¥xPcd4`}àÐþÍ1îðe×’»YI͹îɾŠÑQ€4èÓ½¹ÊGÔ!€.¦Ø4бÉpF Є"†?:ëiÙ7|-}º°3ë[ŒÛæÛ˜ƺu&D§ˆÀœ:7öq™¥‹ð3^À“àÿŸ4.­S§g´ UCöåjü¼ M4SæÛðÖ³äi†ç…É¢sÆöß —p–È Ù\§Ú%ù·ŠºPØJo7è°IÈGp)Ej€0JwÞ ]Zª$J?œÃ¥?åÇéë¹Ö÷Ó‚þa‹é@ŽZÚ²§¢HÄp­¸ïWúâþÍ1OFî>¤q "Œü÷aÆË7_f23C‡œ &Š”s±«ØÁú*œ™aB|v콋mpûÍ`Ưïúg²û#L.]?I754×›ûÝ€V7FLD߲ŪO‹ãi u{\€_€ƒ À~÷ËHòp¶ˆscË6&X/§)0BÒ×t/œëf·oYð9ÎŒUj# Nÿ)½n¼Óþ'c¶À¦TÌ‹uˆ3„šåüŒW}ÅÐ.ö¾Ì¨g,Ïþ;=V‡± éæ[׳½Ũ_†ÖDj@Ò™;& ¥åÁس-E +ÿ’ ‰Çx磜vMÃX=$ßB—/uu,ô(97xîgéQËîSËoN©Ð³œÎ8íМ" YÔ# T)d#“H #[Ai*Ì ·B ³“ZÝèyz®Â“¨™vŽÇ(Ç—oGžŒ!{1'«ÕD¥×Škùè,5:ýI×nÿ en$c’¢ìç'I6L¶¬6 ÑäÂNŒ¡…Ø‹Úã–ßl¿z®>wË4Õ!Kˆ³ rF›]A¼ƒX„Õ'X¯œŒÂ¼¬3}…ºÁŸòr[ë‘qÆàsÿç²û˜°} akíÒøqðÃypIÄ æ*ú*lnùþ/Uy ¶b›$šóÈ­ƒZ!1pãÀB2¨‹ÿ*_ ­ß!5!ÃÐ!;¬= ŠH«'»¸&gå}u¤ïgwYÜÞzçëY“#ûwÿ<žßC=Ïá>4m@MBºp+@I¬0P˜m@¦NŒ€‚`†p„3êÊ4žm»ÞÅ»Ãõu=å—Åž¹VŸ²”óï.ÖT}ÏKh¯m²K?0*ÎBh ¡5®%ƒç*)QË׿MÎ¥‰,@ÐpÊ}ð ÁË},aÒS—ê_Snk¿„„ë¿dÈr¾E2d¬h#á)hÊ$©ÔÝõ°ÓëbákœÛ¥DÈ¢. ­»*Ël°|½œ°ô£½C›ù)îö•¦äÙä4Ÿ(†éÃH­Ä¾°ÝÓ~2s{]ž±×WPí¹BÏ8†¦ÕÀ9{°Qª!f)ÛvΨn„½}H¤ aZÝw4ügþüBžåK…)FWƒp(Z\ÇÒ›Ã]¦™€FFD¤@†m4œ¦-®C'îºÝ‘÷¾¶K ÔÕ½æ~ì¦íµ3à ëá+”´u#q|8_•˜Lø(˜0¸ƒª•çž—»HÜ_…ô™ÇßõŠ–ûÄ(€Àµ‡Â QXSû Û©ÀkgÖPLZ8Sˆ(JCéà³ Üý¬ü÷ÂáôºR‘· ü¡ Š Á‰Ø@@>©€}ªïݼ_-\T&ÕÜÄ2ÆÉpÃÀL5+}ƒ›ï@ëBð@ÄËd‹$ÇÕȦBD÷•ä´Žð[â&zÎ;S¤'±`…2À‚G ²öXλ¶ý_›9ˆ4ÞßqÇÜ¡èr÷oÔÑôoqóÃö·°%³Gºßš. ÷Ê] ïw÷ÿ•éïFäK=»PÍÅ{£(qýR:`w^Åz>ßD'­×œ²”Hy¿¼ÆËñ¹ÕçSË?Ö¯{ió톫æûrq½]ÉíÞ$X…ÊCÕ¾2<íYþ'!]èt¿õ¶¿ïó»z P€[HþƒµR¨…†•±W§b®˜ ê`߆0°j½¾mÝdü^O/ÈWm´ïY¢+›ê\ΟŽG(00†üq'îBWn†ûƒü{¥Ái‚âü­nnà×Y†¦\Ü-­ir —pA$ªuN´4þx­¡,Ãs|7çÖŸ¬eC‘úý|Æÿ­ù­nËIïùw%IlƒrGç싱V Ç0)ök{§ð{Lèzžo|rbm‚%#&öºœ :ú8Ëè—DzH FÜ¡4Á N9Ꮃº³†?«õÑo¾§sØãÃ!P5ªf Ä´ƒ›[¶¢/Tâ»Í÷æô§éüÔý×uØ¥rK‰oBÒ¢†žòú[.·žõÄUñ0ŸV×¼S_Í1":÷ŒroÓÄ>àTÊŽ æIZâ;@YþY&Z/{Y®ñÀðíÐ¥]Ï™œ2éÃ…Ÿ¿•'ÍÃîeJ°1^<ýM7­o·ŒˆômŒáØ]¸iL¾ï:têG@ÑŸ&õ€[Õ+ ð7£”6(6¨™j4§‹b ¤ ñ#Ï* ÷3|² ݺéât˜w›Î®I$ýyãùlóܰ×#mî—‡ éHM/£ÁÿX÷iI«'œäÆðÏÛ„/V‰' À$A°Czó¸vðó@e–áQ öJ­•Ôd=OòÐü…»ð^vó!îù÷û¿ÄÀ%{…ÿ¶S0NÝZú¾mt¹[Í¥÷†9ÄÓbóÉžÙ*!¬vž<^®µõh4$d€@Ò(5JCY¡àÙƒêþïpÍ¥:b´ø$@HäB†Då»@“ .Ÿ> ð @ÐǪgƒGrxÊ8b™÷³Äÿ?qÙàv?­þN@míÕ¸ö|Ù½Õœ¨ë#TÁCù˜j€ç´¸¿¹PJ¤ u¡Ûv÷E_Ñ?Ø:•<0±ùŒÁ«(òNVý"g¦í A°‚âŒ0HHT.§ºÑ˜(+81ÒuÃ<~‡;ªèãúÊ„þçÛ•ª­:_LËüëžëg¨9¾ŸÚµÄØ›“&ÀÁ¢D?}œ'Úàœê2…q^.ÈÄ£±nÎ'Mmð»Ü€y‚[dáKʹIDä z€„-‡,4‡:N S*\z%¸í@bWØ‚Ç{"¤£=6Ôo‚V±9 Ã»RH\°ª%ÅcT^Üm¹E÷ húíÎñLÙäénžð@d„ æœÙÁÎVwê‡ÄÔ È¹@öR{®.ù1ßíN ûW0ßñŽ«­(9¶Þ‚ˆ‚Z`õi“\šä2wß©'z ©è 0>rJ`ÿu¹Ha^¿¢ã=ì\ÐcnlåÏÇ`婺Õ€úˆB*ú2諵ý›ŸÀ ?dÖVÎå·Âõ¾Ÿð§z×»Ùç¢YEežäpq·•ž?øÈù„ ¹¨m¾yoZ8ÊäÖ³² -ódU#•3tO)d£ b)_í{ ¢Så #Є/ßpÝzøò̯'c·WM Öù; A3ÿQÝüv—¾;Ú‘q¼ à©„²JX+t¼˜od¬ýb­ÆwscSÓz*³ñà€MpA2tùl;{9ÅóÛó!t¦þ}g<5N …d¬|p,Œp`³?óQöÿ¡³úFüèçÁ"ÇóéáóùW#Îmä8×yO=û»z£\ ET8Ûb¢Šõ‚>—Fø~`ŒìÁY=à5b—€ ZøÖ:µòc³nÞ¨<ÛœY[ÊXÔVçåí+jæÙ9GXTÕœüï6þ3É¢›~ ]Mþ%ؼ¹Iˆtp´Ä¿ŒËl}¿¢üY30å0‡®<89Û–¤úPSðhyì!ºÜ N§ŒžûíHz {˜ÆÒ÷ùA$̉f°S…* ­D}<ÀÊÿ h@—몚“Ï=ª•ÊzÄà±y–WóPúÕÃ4˜æ‹øÃ:Ç \‘ØF1‚3Âg·nIˆê™;]¾ûñbñÿ, &då@ÝÒ§ˆ qƒf2œbÖ‘à¸tYPF@ú`7ŽÉš ä 0áÍÓÎå³Ïd¨–…ýÖ‡H#6@à¥Ñúâ|E ú*añÇ€¤f ÷`À   @À„@DÀÀßDU€d0H‰+$$„™¦`ͼxÈ‘–|÷….µl*TJŠN ”‘ª.Š$ÂAžÙx›’@*D§CÒ`'•…™ø_… 2‰*u/Vž©„„ cT4M{U–"±E&Ìä½qå =V˜ÈêYÕíë=Ñ 'Á¹ ô êµåï¨ï†-דø ʆðh{ÑŸÁŸü¢cd÷Ÿ;LNª¾i‡X>©ŒÛ€ut7½sHÖuÁÞK‹§ùCl¥ÖÇ!ˆëûeÍ[,G+Ô©ˆ‰ó<²g–9>g¶ » ½Ï nAä@T-l«è»ßi»ÎIzŒÍ@ŠaxñÓZgtGíô01ž_:´b–L>©Â’I×ÌÅR$ž7D8Ãï»/æ‹JM&cCDœk7Ûöê;†Vâ.ý,QÇym*{´”ÇÁ{¢¾Ãt&dÖ+*›ÎlË2]H] ­5O:Ømçy{»7´ ùÿsè›dE)V 5˜BÃuÎÐ,¬S´gyÙÀ¼õ“ߊŒÁÈô"èçlÐbUF¶B•Á*ç½/$pñê fZ.ŸÆ)9~Æ#¤Nk¨¾q‘‡VÕb¬ ÁO*Bw[ëA{¦RÊâßÄå8Ûd AÐ1krS á‡4£b—ʪ .Úðôù;ÚÚ¶ãΡñƒ b& ÞÍ­„äóuJ!{›# ²Ÿv=ׯF¥žzìv3ÏnÛú@žÝ Ôæ~ððÏOnÞÝj-tú¿á¢ož-¼ ÀÎ뫸Œ÷%îCv™îÐì©×¡{‡·÷ˉä\ïX;þï•^½„Þü‚\›Ù`ÌÕÒÿ}eKËÆüâŽFW¿©žéî–1`Ø$‡àtI˜ ~cœ]¼p6üÿ\¾“â¥Î ÓÝŸ‚Úmì ‹êc,¢œ€ÞhžÒ«Õ½`‚I÷ò IyŽ8“pWCwÕ!¶ÔGg;‡a"ݵè[ol=úœã-f[»Õë¥ä=Ùª4ÊÔ'ÑE¼½yíhyVƒ$³Æ\âYð»aAÑDaÓÙ¹Fnp꨹.ÌžŸ•aÆÍ>Ê~y»Ï ð©óœò|#Î7dÓv7XºzI ¹—â@_Ábþ©Ú:ÅôÀ œî¡¹Gïe)USΫ) ôA“ÜœU7È?Þ2y5M'ŽÁ_r°MŸ9¬–_C£Ï>öß&?úw»à=M­F/‚rÒý»˜ð2Ü—|`p:òòLbÜ3[Œ.û$­³‘ºúÛEžEÄð:*œÀÿ)Ú¾¼ Îþ• óÜR™ª¡í$†_‚P/ç¬I÷áò´ˆð4ò?Æe{hô¬ypê¨öÛ7®j¾ÛÌXª˜yä&%Ô> ‡íÒü ÿ¢™_3lÊØé_@JÈ¿’|’ág@Üd<5ƒ{1].³´pÔ]k&™ \ãt?¶Èî^À!Ëòš@\ÒxYô„¯Û;‘8«iI‚ Ž)À¡¯]û‚Û RªÈÄ*@Œ3eÿ/e5õ2<=,ªR°nÞŒ“6éY¾]~TDoòd 9Û=‹z×úÏGõŒ´\{±[ù_Ö/,å­;`Ð5û&[Ñ}áÉäbóªbã]ÛægªïšX`ªs…Âsò¸Uþ »C¥ô»I6# =”A6)“@°’b L!Ëb@-¦tœ jzÂR¨œÛä‰dyièµ\ù{ê@ÇŽƒ …ü}8ȯÀ¡ þ2=¤|Xùƒ–†ì…1YÜ8\Gþ7Á_Hs¬™-‚'aÎpæ›ûÎþÍOòCĮα OsŠî5vÊ ÖjÇ0@tb1žqÍÜ ¨ eöNOß&¹I7Þ˼ޛ̰@ª*½œ²Ð?n"­ ^qJË»Ãú5¿Š¼§·“Îߌ]ß$}í€Zó0ûPÊʳGBì°üç;Îd¼¼7?ºÓq@TB=ûd:¥s¬ ô`CYÇçÌåù_›sïþM³¹Ð Ðk“çˆ7ÃGU"Ž!¾¨#y˳©)KîˆM7è‘ù»«§×îP€ÚúsÖ4ÓLª™<àä¸á-ÛR4ìØçteà?b3öã”§‡ið¼õ_|Ì|µ)ÛÊË\š€Û¤µ”aLF]Ž˜|Ç-&¸ìGÑìr€H›!à³6¢ü$ñŸiUÔ ö9Øõ)–3÷¨NvK°­‹…y>׈”uYðå…zf“ä/…jê ‰8ïÚ ë”• ³ƒ'2µñN.¡¶@w_eyö43>žïÙÆÊ~Õ å_ šÏ´Qã¨^†ÈHì.½“ýØ­[”¦&vùÇÞôÏ£CáÁv«Ü¢c-6ýs‰¢ˆ#')48!^Ê5ä‘Ó* À$b²\Î=«™„Ûÿå`¹AÛäøï2ü žäË9J£:X³µ-@« Äà"ESþ 6¤ ÒËIª Ð;`Y­1edrq•PAsI–¡gX>Ï¡2jË bi– VüÓàdW8´‚IŸÂ\X‹`y£ÿÑþAè†T0AÆÖÒñ cSƒl fö—÷§{¶mÁñ¼>ÏÖp¯$àÞô\K²zçJéߤr(ð;J÷íÝ«{G:úªšØ:d³ h ORQœm†*I{A4ǘ\^!×—@q,ÁÏ1³%€Õ–É?å,¶ꌴ‰ Ì»=m€ÐJ³ÔÀ‘* ©ÿï!‹ÚGø)@zšîÊ@h1ºÛa´žÐ{«àÞ€1Å@½œãèàøº‰õaû;ÄÊáÀ*ß·¯åòúEaº»™jnœ|d;¥Ò[쬘FÞçø|_ß-è@$ñ)TÎù4 \›‚ßÙ¶MöèUGÅ^¾Më‰6Ä©ä·TtSßàŠg@@@Ö·éÚAÌk ŃVÜA>A#ûŸíÜ—ÆyE÷çï°Á­…—ìãÒìJ¹JÁÝ—¶ò¬ê@ôö“ŠBèJF@r¨¾n`¦NåIàãðotèÎiTý‡ŸÊtšµH¡nª„©Á'¥Fªû¡ažü?+L~/bVà¨,¼ Ç]Òí"{7A' 9d'‘yrP>ŠªKž|»J·©ŸTÌ|G=9)ï—̪Dä̃?fcA_H›íÕqs­ ½4%OáGÃ2æ§ñO¦Á)›Å¾…ÞæfZ©Á.›„çÅ3…ÐÔYíòfív®™]V‡ƒ)]^áÅS¾º,‘MÆH#p!8‡´ µ¿šÓ$$8ÁÌ# (y>Ñ¢1}Z 5<áR`¾¼ÙbÄ«g¤Þñ3EQùϳ÷¢ {÷†%Ýᑽ[_¸)™Öqr2Œû$Qøa¢*Áâjă€"»€@] 7XU•h=Ÿðq„{$z‡k(¢“GËõó<ë0?ãGv_Jq7­}L‚yyêg‹E³”ÝBåՙнîoAîdè,;Ö–Æ]+€‹ £ãlÿâ¦vî”—øÅ@tÍÛ©ÿœm q¥jxQË|<~ã‡/бLJ›ãæ3×5O_5bÿ&s\[+W‡,Ã2éY?W5¤ï)¹t[:® Ñl©úÕcû•0 p£”¯¸²ÙÆ›??,Åæk²±?m¼ÐS”6îP†O;õ¼˜—Ê@gœ'<8ÝÑ)ȵ3»¬ñº E!¥J>”‡Ýxxn¥¦æˆºÏoçke4ì— &¦Ÿí³%¨V¬1ŽVªXn9GOš©ü¹¦`ÚÚ^èpо0fAÙ×]Åaõ)ج”d¿= ›ÁFQ7uDÅ[úíGá]þqpƒ‰_BÁÁ3Ÿ:PFE§£äñBá0Ĥ Ã~ÃQ¹©–€5¾~ á:Ã=WÕµjÅ6ã`SSè|Ë×[öËdÛÀî‚ %¬Þ4¯Tês`Á³*Ñ»ÐNý{ÇÇkÇid¤Êòá~)O­æS{°ëg|íÁdžÏÔÛþæÚÒi‹{õÁÀ’+ïz[o4'NŒy¶z[Ë“òãEËlž£º1\Èz¬ª\­zÌ =°Dò]&ä°’Ô¦š…—övôç”%Á¨öpGa zn„öNeq¢MàKÚ¬%E­r°<î¤R_?0Íá tôàÐò$‹^ž·ãg›$ð   fmoû©_—–€7‡)ÈfÄ;ÿ¿ŒgÏGú6”û=J»"‹=Às3Ê,%ØÅKdŠîoîã+g ¸É²Ù5½&âàÝaCŠQÕ.Üœ];½¶¯6Õ– ‡³©³qך}ú£ñ––XÛ»—züx][„ˆ“íûÊ=·/*v9YŠ($ÕZ¸"@èôüi£TrëïB;·gzÇ èh“<¾ÓoÃi3¬ŸÃRkdìŒþµË— fë×Eº°^Žx)}ɬ-ݬÑé;0¦|æHqÛƒPó­§oAÄ>gi“*†—Ur§#à DtVsùXÙßxËpæ"k¼‰ºØ·°ýr¾_'}ä (z·¡7ó:sÏß# $^åÆîDóß.•=÷,†÷zy2A9Ë(J¹ÃÖ½xï(#ÌX¯õ±½zËÕçÚW^¥Æ›µ~|7pn@¬p6½rä×H©dnëS›ý"a‹åbk…œÇ5}ÒÐJXYîLÍÑxýÎ?h]R8ÂR%"„Ûˆ&x  ãjÏüÿ!¤2E6MêiÝ&p-dâô=ráü-I1$k–JGùŒ‰\é_8çÖ/wsx™k«ˆ; ~¥¨ÉدÓm¼Ö*J§uv¹-Â^`ÜÿÌ9hLZXå“ÇíqHÁ¶ºÖaP#Â@EÚßÝ2’n‚¬œ8Cw³Iž§7–Ïp¹î™¦ Œ0§Ø¢À#ûì8íNgò›ùt?Ãaîp}:°º ã ùÛÌ­§QΖú{¤»èÁ»9ˆ{4†wÍÿY¾=FÏTg>¬‹„=¾»jaS¾|V»)tÖ±àœ8ÃäÉ4Ps3%vØ—ËñDåó7ìˆz"¤_v¬ófª7ßW”hýªÆ×§€@s÷i…6Å»µ¨Øð™ØêÔoóE²Ks¾–6¦õÓQì·a,¡³l²Ñu):™ú,¼;íù“o7¯£\ç6€h¼ùA$Åp²½ãB±sN'VùçäX`ÏîëVÏB´ßÿÛ9§°Ú~ºW«Ü´ÿìJ„`޳6Æî®©~beñdwªà² Û]ÕÖvÎ@)”`óhP]Õú›ð'/P:ma“¬3)®ÿèëÁSέgFpOtÂEw‰J2•mYq×Cs}EÇmô0¯>˜SæÑéM^/Ïo}ô5áO‘é92{÷h¨æU´€5R“ Ùl]ìY„Jˆ¤ ;#χ¡ñ’±–+K_8CÈSØQ¤¶2Ä sDr¥’p*»×@y'Em.dë¬îŒ†°ÿ9—>úF¿ö«×½3^¤š[%ÉJóØ@M:­ükï°´‡È±.~fÚ^–z<\•ÿ$À#¹¥m¿ðvÝ kYìGvÞqåÈì†ñïœ@y/"Z!øyO‰òj®ÒØ–±wÄjâן\nÙçôü> ¼,Þ ÎT¶ªÖ€øøS¿"¸<¾¾óp›ÉF 2/nàƒ‘þ²Gt­ôT°’REÈ1ÙúT³b€²‚¾ªG+oÝ ¦«<§²¸¶²Ç¤Iº×Ð[³î„ 5£{&–£[={ ÓQeVWô&eä˜Y¶5E3qÛuãx¸½'S£˜÷Œ(Š­ïÝ`]êTÓ<ÃŒßï¶F=Œ%ò;L“ü/EAˆ„ÿ`ß/¡3ˆ€Z¨02»<6Ç2ð¤°6øTh…–yC¤CÍBJlìÈ,Käc™¡ æˆl¸7UôV0½ë{œç‹f[YA?ú$…-ëý6x›TÔûºOØÚVbë•æ%Y-F‘Ÿ{‡ìêç' ¼™Ža­´^ÛéÏ É­C’Õ#}£;@bú8rv OåõPeà? Gêê1ý i”ì}¶~¾†eWÃ`¬Nx8-Q4Fìzf>-]Yµ›-j³N)SWbŒW†³îd[ÁĞ»g_0$gi0cÍèú2SZÓÜ«,](4 ¬1ˆ08}ǪÆ>ik‰‡BʹԯšÜZÏܤ¯‹ëûL,s¢®F«NÛZmr’Èr†¶¦c3/ËHûÝíVËâvðlZ݈ ñ×R.©`‚IK>D-iß³S¶:E0{É@Br‚ËJG°_?U“ï2àÙGädõzÔó&“ÈÆ$ž_©i·oKÌ“V¦ÍaÆçÿ!D3ºÿ§$\ø`IøaÞº]ê¥I·‚@RKñ2b¼§³N#ÍzWâg6øbCYçK1ü¯ `6Ë* þÙq¦† {³OvÌöÚÀÀn(KYס æSúz?¨(ͯ¿ò³Ì¯²Îr÷O…èZB°fÂóÂô⥎׋“]Nf²·¶?=]<äúk‹:¯ÇžÓ쬮YÕpG5å=+ÃÉÅiü½’zyãÜã`ÕPwºsuù€ ˜0ÈBp<Ðgk½+Å)®Òùæ<Ûßl~}uíøú-$!È܃3—˜Söqw5%òïFèoÚÏ< pE ² *MÂP'ëbð!Æ›‡¬(ò`ߥ^`0ÀeÍÚ‘í…TÊ“ QAô,ÓQ^T”øË:6C¨°é}äa<ãpT¡‡™05= ç€ÑÄGDµßÙDQ¶ôk*šÙ¬æµž´o§CZLî¿•¨8¹–_èŠè­±þ¸ÂŸ¢x¡æï0vu_÷àØ_áO$œ±Y4xGÁ‘<†¨,³ Rûìk0ç@óÀ*Oû·ß¸ž½i¤—¼9¦·ø'œÌ5|ƒ¦ÙWªÀ›[âî¸äÌT9ÖŸDU€jWf ²ÑK¹M¤é~¡”O\Ë7™¼¯îÖ€~}'¶Ò@ýì;²½•-Τ üØ÷+äK´t.-(ÆÓà‰o\¸¦Šƒgåðþw:>߬¬û©†î Ð@¾-ê˜÷´Þ=®a·I= 4@Æ€ }*´i΀€”Z#Xxø/ Üs+^y˜íÜ78*ɉ@ee´¼vUî›ì éwë§ÅÓÝcAìzgÁ¦œÊB>4¾‰"YuYZ^Ä6$v†2{滋Y¾!hø34é+„ø5OÖ‘/ÀhL  …PqãA ×èöÁ¼æ’öbÞº‹¢p^ÿ “¥ñ[WȽ‚æ˜æ7¥ÌÉo2“g¸6Qtu§Ç ý'|uM%pP†wøâÓ 5÷µ‹|%dÃëÞÒø3)rñÎ0 .kÿ®ÏÞ#›½Ùïׇ‘"#Ûd dœy_ã°—÷8÷÷`}ŒÅ Òè:€ÁŸ”­Ûô‹½êz¸íHð-û¹Ûè÷ùB¹(½…>Ž[P ’@c2çCÔæD” ‚ijÖa-èáv{>Äý®èù›ò\E`WÎà Ù]ð:q×ëÌSÚÛ½BÀ´jÇÐë±ô¬?ÔgGØ¡8ÑÙ4Ù˜raæ˜g1Œ!¸œX–h£…~þÑ®š$àËÉR­î5cã&¨ƒ¤ £¼qµ¥ŠJÔÓ³-ç.J‰„S¡M†i\Ko7.®É™PÐNu®ÖæDa߇ëáü<â˜/Ž\s(HÚ>FõjÝSJçúÀÁŠœÀJÛ9Ýuž6½ ¢‚`€"!!ˆT"{Ð`¹’@&b`u¬±a€™€$åL¤$ Œ òó†Øa…dCË!>6 "¹†£Âo–Ì„ä(A°Â¡(?mÖé ÊŒÌ#{H[£)! ` +ø!$ÂŽ¨iHC@ö¯è L0„å`aJ@@Ã$™MS è@ ,†0H È aX†Ì ¸‚™ $H‘(ˆT”"ýC$!FD2B„IÈS5ÈT(µd ) A”ͳ²£Þ!! ÜÔf‘Â$Ž%™’awÄ #B#*$Q&„@ÀÁ©XU`U°!É…‚U HÜ0€ˆÃŒ¤3ØDP'!``!™\Ü€@ä ª8R€ €Qs,“"M )¨LB¨“Š¢NA€$Љ‹D ¢h™fMl“c­áé‘Î(!‡n¥u Ûx‡¹"ìç£ýl›,ò{/’ “Zw[0ü½¨>ù ÁøûŽ Ñ÷”#“–žŽ±«¼íáNB…Ž]ÛÇO^ãÀwtŽíkÕv¿—J"¯Uüü»ñ)ʹñÀ€³A/¤*·ÿó’e5—)=2@ °·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ½ðï³µÛß:Ý÷Ç{z;Û»ÝÐßyÝš{¶··»¹Þ÷]vö^ìo·»®ë«;wž__nëµ ºm×;Þ÷°ÚúõëÙóµ®´ºîîíô×ß=÷}÷Sí¾ï½(&„Ä4Âb`L„2= $ð&¦ ©4i3M0F‚bhô)í#M53Fš@L ÀhÐ hA¦#СB© ¡3I´“ÀŒž§”ô Bzjl˜0ɵ4ÁOJyššz˜ž'4Úš§±6ˆñ¦„ôÔy2a4#§²4Òž&š4Õ?`“=Rz†TÔóDÚ4M0ÔÉ…=¥6jzh#&òaM3dÅ=6™2OA3Ô h1&™=52c@CDò›ÐÊMš™4žšm)²=F$x‰äÑèP‰H&h&ÐÑši©äby˜dÐ ÓFM ‰“*~bžSÀJ~Ò›&‘é´ž¦h™Âd1 2ý4*~˜‘äÄ`‰”ü‘²a¨24ʃT“SÔÛEOb™è€Ó#&”ñ&žMOÔÔÉ™#OAèIé´SѨÙ5<Œ§é4Ѧ$ÃÑ=$ñM=©èM¨2zŸ©èÑ=M5=&Èõ4Ô1¦‚mOPñ25=”y4Ñ螤IM €Ò‰èÕ?M5O DØÕ?IµLÄÔÐôè§Šz†šzOMCjzGêFÅ=¡M&Gµ=<$ÓÑ¡µOMOSÔõªhÚžL¦Ê=OLSzSÔò™¨Ó›)êyG©êz‡©²j¦OHb?8ʘÀ°>aB¶°3Fl‚A–'™0UnªÁA<€ aÒ9B*ô AêҸ‚þ"¬‰‹°NVrU«*Τ‘V"¬Â €˜ VÈþL@‚X«pƒ$¡QÀÀÄ ¤èD™DLI‘’¢(\@UAø·0.$[À jÁ¨„‚ BB ¼`TP «  ‡.!˜ ˜€Áx N&T¡€ÌŠ" U`(‹é9AF‡ˆ'Ø€.Es'BbxH/V”`1fh·§{ÝãgŠ*佉3§iæO]#ÕÔI@PFˆEX/$ˆV «" $ pûòAûð¾µgO!w™oñÃÙð/!DËÈè謮Ô$n±óƒKÁ©âÌao255ÉÇû:E‡a0$`aÿݧJpÌ@0a¤f yý¸?o •Z; „ ¼a>ìo@&…j uè)aþÉLÎ,àì6°fà;H$>4`a-aè,/¦$EZ`P ˜)ëä(´V Ww‡µÕíóÜ©â*ù>ÞGÞƒ_çûLÄÇ }#¾¦‘i›ì}ìÀªÛ U_°±=Þ÷ÇáWô¨·@4ØŠ9µúµêÒS/m»bó¢:ƒ€Œ”£áTóIE€™êÑexúP»õ¤æÞé{Û_æŒtÖ½p·ÞÒ)ýaËæ<s`U3ßRššyæŒäŽøO+¶èþ–íÐa•1ÜËè¹ø¼žƒ:z8ÁÑÙþþ)çOWô_°CæhÉŠr ¹ €€‚Dñn·Ë‡òŸ¹½ð,í8}Îß‘èhùÝ—Tsàx¡ÐWí›j°ùpëNcb¨oÀïn}AŒÒ›„¹¦~¦î¨H‡í=ØgËŸIv[y¨™ "b: €¨ÞT*öß¼LøÛ0ŠœlJXdËI¢ü-Ì0 ! ’¯ˆ‚[}€<½C»ŸAs©]‚È6[£{"È‹Ž§Edm«w9r›–k#k#/ëžNÛ·¾X%¡’FeÊʸàBxiî8Í©–—ò+…r’®¨õ/*‹Jt«Æ8@£ýFk”äyÙ ›Aëô—oŸä‰KyáèšÙY«»uý«e]ÿ;ˆ÷f„1ö•Ê™°>*úÎ×úDR(”›¼Ñ!uÊYÓ#˜é]|¾£e—¡—k‚ˆºR3Â%¡Þ¬>¯ª$ìäÕÂA_x¥_ ·cðJÚÙnÀäOäfùR åje?ðp™'>PQuþ°¹˜Ï}œ3oWûò$E¼ hÎ,‰øÕ¯é²ÿEO:Kl5x²Ldyè³.Ö?'{8Î*Ÿ¬ó¥†>Ü~m4ý—†§Cu˜”ÅD1OÊmée6Ȫ´Q4Ù¦²b9lØ*Mø«ñ£Áè˜@Ht¦LMê4’ù“½OyŽ/BO¶½x­°J3L*WÈY0s³0´`äª70C:tÁoïZ¯üLò9Âù‡E¬ùe¶û!Þ)‡$r  2¦é´HÔþª5XŠ%L H–jä½è×Õ5³@iàZIãVGéñK{‘*ß<«j­'›¿•ÿ{?8ªRç ±2ºÚW]?†Ï[˜¶¶Á@Î[; !BÞèpkçwƒ|StÅŽq”ië3‡Ž¼Áí£|õMú©“êXSõÅõ˜ŽÊsRrT€@`UdU8L_msSv¸F}N<ßU~MaMÔG5À椫æ'µD_äF½XiÔ€€B²F¸ç)åm|åÝ*h‹©k:Lû¨Úw¸>µMÉ•Jº48ßžIzÐn¥mò%q,íM«Øá2#´(uVSF¼8â<ÉÜéc›„'˜ûC_ˆó—bç]Ñ\)YÖH({§Uø&8ËÅ ncß3nÌ*ÑÖ¶š¢òSÎØÈd÷Êrpön‘¿Wwì”.Z1 )?øªQ‰âý,^zÞkkqÜÌžd%;MµhÊMþ1¨.äp£†Á>é&÷‹™‰ñy’2周¬÷BÅîÎ+êÈ~ÜêÅ·”gâÒwe@@!Uîœû1„íã7 ÆÆ×ö‘GQèwÜ{õ’EºÅÄt{ü‡›4B¬cçlmÞ™ ”·0¾»ŽuÅ.«(|>5Ît …ò9†%øÞŽá´Wô*´'èzÍlÜež)xÙ¿aªFK«ªkOÝ—Œª‚¨V¦„ó~SÆ·_ãÞ.ÀŠý rðÂ߆bPÿWgÞµb=ò¬÷;‚…I•§}¯½w4*S&%%×B1Ú+x? žð¦Ïs~ l»Û™…&{’Q" ûZ®Ÿm[ÌûB*ç'ÎÖñj©q)H Ë„_ü|N×j|ßaï· E,fð}‚¬QŒR{dӞ鳋B¸ûÌ“£S´€àºàrü×7€4&"£ÅÔlÛü= „.φ­S5¥ŸÊ«nŠm !w·D(k^— Ö„Ô­ä4¤mb€ç¨~×UÄG@~¡pa™/U g` @6DÐñdN-œZCjŽýÞ\ô-®¼tµ¹v(“§1ò@[Ý#<&Ž¥±V,Uõ“4 ਠh>!èny"Þ¯›msPôšxø.t]žÚŽI5—¤\¦Zì·oGt–Â+’Òþ£Í´û­×=lÑHê©ÖÓe/Ù|ÞóâÆs[çëJµ-?óX!kyÕ$_ùÔË£°Á•y È”›–„C±ëŸMÓ NÓGIR¥UõL8à03‹ãz[– sÙ]û÷¹ß2v+$°‹²Þ?õv—’CU‡õìù/Íö=‹äõCc4ãæ4>Ê]ªù ¨ûI®T88 _‰¡³ °ä‡›í?2·€¡lîf=”/Z@@!Kš_¾}•M6Ú¦g8%µÞ^Ú…CÌî4@þRÊSK~¿PV?«¼‡ÞOYï{l‘•€á¨²é‚íáÎêRS™¤%Æcä6Ë1ƒâ3t:”.ÑR €7|$Ðu©Þf§×¦…3¨.†õ@®åkĽöÌÊÌÎ5b &h²[ßWÓ Íèâó¢(² ºU0ýz¸*°»®YåÁò/“úß¼áúk-4 [ ¶„|åúÎ;æF°2k¥šÚ3§†½/>r(:…¶Y‚Ñv!ëöf™^]´ß¶Ýöß9À:R0VSˆò¿3È Zëí^ŠSñ8YSù‘‹Q_µžíÎB]‘C 5tÉ.ªµ ìÉØ5JÀ­{¯5ÔW nvæ·[Hûi>xí­òxoÙ ¹ÍõÕ¹Š«í±¥ç½˜0HÑ?—(:’<µë ˆâ”ˆ¿þI6S ûRŸÛh] l‡&P @„{,φš©-¿À݈®3½îû:ç’U}ºÔW*o§5+\ß&aÀZ¶^~ÀN}TäYY‰uú›Œéê ý&GPíÐฉìêß|œ7õ¤f² éôø¿§{øv&±Ü©Q÷o” W¶“òJZ\¤&Ÿq:„ª¶U8Fc© € „8ÄËuëùã¶œ#/TÜ-·ÑY!þ݃¾¯,åc|Šk$í +D‹qWVh_Q}YVG6’u²Ü¿ ©ŸP¤×F›ËšŒý§ šÂÁ‹YÏîÃÎ^ƒžLÈ\–Bµ†‰¦;œUðj¾¡÷<¡Ñ&Ü}9È9€Ö« V1t£Á·J†gB5ά’Øij€İî›ïUÛFï«5¤éJ*¢þK`Ò>Ÿ›nåõöÒg auScE9^‹î)êç‡6©”†¸AXƒk—AÈqÜ[\â³ÏÎ-À\(uHQu*ùßKÀƒ¼i§?9ÄòÞˆ ¿à£ëÍuX’[x5“sù$îå¿@ßD€0Ý­(›ÎŸ_žå掖Uç†TFÜå³v|º\~Ï5"í­¾­©ÉšÝíÎ=éaöp· ®ÃÖ‚†´éÖw+¼±“È:ÄŽbI³6+ø$µJQ{\iÅ#9PŒ¿—z4ý[Òg|ðÑÕ…^å¼üCïfs:ªÚöÖþ$Ó ÜäÖÙå祧5»PΩ²„ëbÖ§þæ´8¢ÝO^êí¿í³Ž .Üe#ƒ*ö±ímuÁ ÖŠ¥"ñ[¦¤mÜŽ¨’ î}Ùæ9Õ»"$öm©hü5¨éõš4¦ßZàŒ0è§Íd•ë¾a¸“T  •Ê /£Ã; Ÿ÷”Ô¶1B7›SËmìAÙ¨„©ÿ¿ˆkk­_¯ë¡¿Håš)Wìk²â“¼ð8F³ªtªš]4LËÖ‡˜t¢¤yº­G„Ìû”™Î£ CSr rÜÔùr  *ä !­U.Œ !wþ†Üò¹2$€îµ&²‚M™˜Ãþ¯t¦öঠáÝûÉ!(":ÆY»ç'}ŠÕŸŽòØNH‹£<ê*,¬Nñõ¸´Ð¢®Ã28%š Ò‚QÕ÷Éùëîô»m‡Sö—shrèуŸ'ŒÍDfÅô,/UÄÆ´Ñ\ìID-–uOlkLĵ«T™° ìŒÜŒ’U‹‡i¢`JhQØ‚zÃ.÷äc$õ3%´lÃ| ûß$‡D¤«Wïµ¥W ô?s-énÍ4$„KèÙ^,8Œ+EO²˜èõ ô,îlú·JósXõýÕ˜µñDS õ¨ÈW‘2çJrà¸W>Þ·›Çüc ;¤Òzl ‘ø…N¼xOª.ç™ÓmFæ÷2âôz“GÆè­žOýËä;ô•Ò¶EB¼pM»˜^ÔAþ|OP÷ æCf× ?–†\u^ÜC›äkKµýJaâp©«Ç€€B®¢•rþ3Žôü—$Š?r¿CwÁ¦1pCõé@½ÈtÉ¿¤è]G®B¬ÄðƒÆjJ¬#Üö¡PÓª,ùÇ6fC9CÁ?ßIÎïx©f£"´8ý+ Be„¸NÐÕõá«Éw±wñ™ÝœÝÓá(Û¯$†¤!{5þdôŽÓ‹ßÛ¾LÀûßNQxµe¦1À»$ί qʘº’îž.o†Ë–f–&™[Ž…•œò³8—¯¹=݆}ÿ‹mê×Ь3 ¸`°ñᡬŒÚ¯ÏÔ³»3·H isv²öYo Ó«ß]hæ¼ßKQaF¡•_ÃR¶æ’zâ½^Þ/ë¶ûì•%9¤ž¿"‘XeVÄŸW™¬Ûh8ý/ðÀ.Á˜@h€, Ã>?ªÐR_ëQ[ø.~7¿k¾} ÅÉŽaX‘¶¥ðne5Øªê €yÔW¹¾=ôŠ ’²Aüõ\zÖÖUã,EæoÌ^Û&±Í”—A˜­ähÑèM‚ß(œšÁðÏ:c²"½ht€@ Q±òTho`êÁAéô祤ġæàÌ0ðLª¡ØàvŸä?É@׌Ð.ׂ.ƒ¸tjz(›ýw¾qÛ|kðÄØ~xn™+Äc&ÉP_d\ij´©†3L‡WN߈­û ˹]%eW­MS=¯7R¨² ™¥˜}Æm%po•…gÂRÁaD× ¥¡ùKÒÿ*¸úû›«È ­¿Nýå·ýf?À}X‚ EÀJ†+{yôþú–ƒ?»Éa6[¦ÀÜÚo½m6¯—õý8ÂýNŽOàŽüˆh`Õ†ºøiA± Ÿ>®õB|lçÿ; (ÃüvâLÍ$@ˆ™ˆïpæ?ûïAÏXd¾y 2Æõ0~B­Ãȼ¸Ü’X®Ø‹çwåÚ)¡ßoF&xÞʯ‘±Ú^ ÀW¹¢i+TØP6›€R5—iç;=C·ŽjŸ LØX 7hzôè'¬mc5ìÿš­Î ôLÇoÝn1Ç$+CK.ä˜EZggvßmtU{ÿëuæÌù·þç3ÍÜk5­çZ¥Ãu ısZGbXr¡»é¬«rߨ·Ä­FeÆya1R1óãà­àÀjx@ ‚(l3–¬©—¸d§Ï%Ö95œêñؾYDE°gÏ‘Êîíèé‰ÐnÆu–uÁ´Â¿ì¢[Öþïïäß4ûñ—+Ø–pÜ‹6Íàêšz޶¢¿³w¼Ÿ«ƒ>,§éàhúñGg´ýZåz0fS—[a}î¨+hXV8Œ]Ð@‹0áÙøSÊâ“ÆÏPWݵ–[œGqY¹ÖínÂÈ9ÜœNT.÷s‚T’& /#æn¸ñ  ß/™ëGÇäPœÏam0`WåùÈ@s¶Üâ:?#ä<ðUÁÞ—óµáѶ<šRÄs×ã09ÙçÐsÍí†?u©ý¹oNÓÜÖaüÜn8‡"¥ øJ‘lȪF霯ÖÎþ¤[ttŒÏÝÂÆø§@^9bm x,@ÓVÄ ‡ví.„ŽÑ~,ZÅPÆ}(bk"sµ­ß°ë×}‹ŠÇçeÜá<“zxnQPÊFâ6jòäo‰5k„ß5Z0^™)3«í“T ï¿å€4ÔuG˜.óõ´ NŒå™:`wuÕxÖ×–>ó¡ÝúûïG§ãzZž²Çо——Íiòº¾Ÿae̵W~À‘+!úAhã®v«º£,.û^Ú·&5ÈÓ9êÀ I,µ$çÔfÁ€^’`¼CàÇey¾Ö¶VÌK¾µxöñŸu e4æjq˜ÂmÖƒRu3{ÝçªÓ’{PúG­7"Wó}'…í»Ñã©üúRúÝÄX.?ÅÀÛ#‹4v.·œ"ÿª œ„©š§Æ"‡¬,vy^…hå:¼¦Ü¤C«Ùq ÈŠ™kàfY™å‹` „* ýU. Œ`cØî—}…I}!ØbÎfR³ÃjbuŠ5G½Ò;Ì­ÏÀÍèÜ*BÓ,™Ð£vøVûƒMLÒZj?åYÿ§“ëx@ƸۅOlö43B[[Deë’Éç%_°Ü{ƒx¡>|‘Ã¥óÍW´9Šdò]XßuHA–Ðù› iVëHmZd×µ üýPœçH?Ž·¦Œþ2Xý“‹ (‚²•S”.IMÓÐ;ÜŽØïñ9{]=²ñÙ©åo>±EõÑó¨žTêWÁõh!+t¬# ¾†ò£Êž•H‚çeÏWù#RÜ:Ba Äu¦‡'iÇX¸V¨¾YÂxªÏ÷ðna0Gz‘lG>P-õ¼”ùÖg˜j¶Ò©Sþtõìó®¸îeã2^¢'Ü{J’ݺ–*)æ äÅ“ôø,ª³øCö>³²fpYæâ1º»‹ò%ø¹(æû–g25|ßòŒÙ#ˆ–ù_&ûnª5à s¨Èų¾h¥â@æFÑ ‡ñæ³zÀ@!JÔÄHpðf!Uæ xe¢5—zÌl±ÝÝ$÷C2¸®å3à¹ëæ¥d¸ŽO¥°~gþÚÄÊïé7hS ˆh˜¢¦ü¡w¾#ï-ž7ŒÄ‚æZ+4ÖPŸL™Õ–Ÿ”1G¢ÇÔ6òô±^“èõ7”…3±…¿”©ïP,Þ"Ì‹ÊÖƒ´ˆaÁñK%Tì?†0ë>š`·)nW7éô]¿\µŠèõGãÌM[ê™suPÄç$°_Æž‹0ƒî6Åk„Ó>ó;HY‚h~࢖KÙ÷= àðöБ;T\¢òfêmõÏ'ìc ÷.U³«¿ÒC葽œå=ïâ(¬ÐéÅdNs\1Ù¢Ï{´™¬¦ë%Éáó:²7 ®ëhúþÊrÒÆÝë]àŒšNæØY[™öG}èÊÉ+®[œ‰B˜š‚m‚ü’£¶¹ä>HfáµÈ>(I¡ª‘}L<Ûð«pŠþ™@@!OYŸ_Zì7G°BqOí K]ŒÎV&g>-NäÞÇ8ÄÁ>­¼ÃPð° –¬Ž!’ñïRþ¬Ñìì)$üÿ¼•tÜêÚÈý|VK¡jgši¡Ç%Ï¡1øùšS\lÒÈ}Z“™ó ìš-$ö„$,‡ Ü~£F5Öø®ŠÊ˜q¢Ê4ÈÎ_À¢;õî)w%<4´œ’zqMCÏ·wn,©Úfy?$‹¯–˜F;J’´ùRÓuêì}»F±óâƒh½éì­Z©ÚI­0þmcå`²nð0r¼Üîc:å½o΋R¥ú¸yÆÒÞìƒ@“âëef‘Éî™è\qTö}kº¹šhóômŒÄUÑK7§lNêH¬ÆT€ ÷XòVd-=-æ¡*wöôX°ºJý‹žá’°µ»‰ÕÕ^_2QPŠQÿ½›ƒFKÇ2”³ŒVn¹ºíw÷o3Xuýz{Kx[ÁèðóÃdjÆ,­ÕBxÛ¿MªÏ“Ù„!qÍwÊV¨¥`Š4$H‰¡\B(ʱJÖœ ô7HF’¼ ´ /waTtky^côÝέ‰l¤1üÿ N䵄_Vˆ¼ (ê6lG)_Ôâ%ÖŒz’óiˆ¥2{Ýè¬̱?XKZ·çž5_Ñ”Y…"*bª Vç_4M0!Á‹ðéûùÛÌ ÕYc—ÍÏššcU$pwjóÓísCE˜eš¥s±‘7\ÉTµÆ^ÔšýW³›{;oH†ÒUݾÒú± `NÌnÍA©“­þweŽ&}É·¦lä ɼ©X[UjÀ×®=Swñ}GÀþä,KQI®5{[= 6wŽÕ]àŽE‰‹úoãý^v"@ „,•¢E+»šÕ”ÛV¿‰'ˆÊs¿…Éeó–îÀ5)pÐtyO¦ýš›W"‰³G¤Íã§ly)dÈœC|£¨f]Uº‘0#ß1õ®MÌú@!Zå]Hf¶‚âx;xaýê-£,”¸VŽŸQtÄ*e†×–ãfµ\ìØFý¹{ i niwƒó¹Ï`‡›£å›Éò”ÞrŠVÎj|ƶ„!GVXfz²™fø¥ì)ER&ɧrŒª|,ÈXSãm{| ù<©ßbgVHÖ7Œsä!öš@~x| Òµ¯ø{ÎÔ õç†"Ä·ÖéøX–<¬˜ÞÛÄ7 pU¥é0Zè×r0|ép›ÖÙ«[ÈxìEöÝàQ{|n²•3½pm-ícÉo¹;Dl·`Æ® Ç)¨Îl€WF¶x·RÀMÒr(š`ÖñWÉmpÉûè¶ó_îVøŸØ± *»âjý6GFéžGDÒþÏ»2.Þ[ô g×hm2Äû9Ì—OÐõýÇ¥ßVPϽ–&Ú«Äüúݬit ejH”œþFÿd‰,¼ý1øE©7¶@´ìtÌù½ðÌ?ÑB°p/*yœ8õuêš½Y(܇“º>ôí¼Þëñ“Ÿª³ hzuy&×Ôá{98¤ÓÃuÌI×R°`ØA\ÊúP$“ ì¸ŠÓÕá¹ÍøeÇ…|ü¥øªè_òÃç©çÓ’EÒõÿ¸mÈ z ð¾ð›R%Ôõ#Hgfr1~üFùŒ„k±Q›_´µoùË7ô†ùN¤þä¿—Sù"¥/U,ô ZúK‡ÝPÖìÈJ8¶¹çãØ²J+G,µhkß ™ºd@_°|¥€Û’Ï ×_Ïþâ_€B¤R^¿+]}­fܽF vú~Sc#bA95å=†‹‰nW+†J†;«že\ 8 „Y2/Ulà÷Ï‚|}XÖõð’¼QaYqõ;Í“&ÚôóhX|QÄyÞÇ$ºO¢§¶ý“s¸§Šª¬k´?(ße+Â?q1Tâ5pƒÜó>5d–áÔÏŠ Æ¥Ô]3U‚VLrwv‡VKÂlJJˆç»íÞóQýȪ¿°†ðh×N(l]È÷}™!E««·yûôUÖ᪠›Y.¹Û9u7;ø #sËŒI\Üû…1‰â´%ƒ0×FY·ôú}~²ÉÉÂn1ÔjÍ]a¢ñqûü¬ƒO[Ï•L•uîGY@‡÷TaˆO£ŽŸ"­ŠÖƒn—„É4”¾ì}: ƒu»~AF¡—MœiÝvÃKÖŽ¤:È¿µkBýõ Ѿ܂›';ɧè8—ܽ©8¯©WQÏ·iæ&è×ï2,>¤*ñH2Ó—”„Qåé°"¼»rû..û˜ÓwÈâ j'õµ¿+Ácèw9T»»¼í]½ KˆÖ3óJ6Lt,—Z¦ 3%sàØ{g£êP^]œ!Ë6GÏe—Ë«dÅÀpAKÓ¡ÁR—བä;Pm|Ž…~ûoÓcñ„Î0>#%ÅWnîÉG9¡·”‹hù€ˆ¯Bãwhƒe[’_Šª±u²ÏÊIñóùv}VÜ;å˜/c:@8¿( ³ÆGRé ´òÖTòsuå½¶÷cW²]Ï‹ÁyQdžÐM.ÀÿŒ>m¹=¯ˆÖ~cÕ÷VyL‚^E©ú·'ã¶^¤½&€œÐü.¼‹•‘Ù»Úy&¬Y Äþ×ãÐV£2¹šÕ>Ìšzﯧ/ð²é€€B—Ú¸ÌO8{n|-ð« bä t?¶ö<¶U+ºsûQ–!}êå¹|â¯uí-Ò­odû×PæŽ@Àn5š§Î3Ýzô4ìflß‘ó`À-/3;uq—d’4Œ¹7úoÌRÑ”»,&ä)µuÉöä£Vp$1!K°³{ÒKBS”2;³Öº?³q¸„!^2>&ë@«²ú]GqIª¯¬ºåìï=/Í’WÄ4§us¹_3¾_ƒÍê½®siGÞy‹ˆÙ›d¸?r«þù4i©t&Yë,\‘>„àßì«fvÚ žê”H48eà.ÃyûGQ‹#0¥ $þ]®Í‚Ô©l)­Câ°Šù}íáÿŒ§Wûë½q°ç[ Ò4ªëe«z‚N°ïhÞÒ”E̳Øâƒ¬CšíE$— cu o»mߥ…J<ühæ±éõòkðÑí©¼8#ŽÇ2áxî’ñjÊ/T§í×ªØ i~ SÚ±WÕí]~Z]>{¢[d`Ú¹#¤¡y×V§ÍJ$Ff}›žŽŒwZ4è?[LWã&ºB¯7Çúà¶Ž ¦èP¯¥ïs§R<>Ý8áÝÂ>\×]%¢V镚RŠ‘ S]I\oç«þOq(˜_È}¯5##çbP€€B•dGù¾NñV+3öJ¨Ùæ+µòhYÙX½³)¾H]M’–ª«”!²1ÛººO,ÄûÏDE_±€ù5÷®6ÿÁî¹?ªºåßñí¸4ÿ W´ÕSr³¾¦f÷áé­„•>Ožï´væÎUúCtùZ[™¯ÓÁïÔw´ÅÆÊß«ŠÚÞ. Z¶dC€R̳cÏÍyKiÝ_E®—Önw/ÙâNÜu3;oIÙj~O-ž'×íõäG{¯cfç=4Y £’)˨í_R4aŸaIæk»ÝÄÔšìe“i‘›”w µàp¿Ð‡‹.ºçŒ·Ô~eØù©}€ëލao#Ç-ü#~µS–Å·£vUM¨ôJ÷ -oIöÁå!PÑè» GŒ˜G+¹„–ל‚fYré+ýU¦Xï¼â‚£ÞKÛxŸoâu¢ö¦ÍÙŠÂÊ Ô›ŽUÝD.? joÖ:º‚Y)³óþCsÐä¤èÎÅPŽú}'¸Ì=Å'×W;õ–^ cPüŸ ÿ[ôÄö–5|B‹¼í•ú:Ñ6 ®‚âËéºâéXo ò ›ŽO°5+ëÅȱ­­£Sø¡1IQø¬¼Xþ5Ð4þÂâ<Û!k#!ù¦b!û4.ºl‘ã6ЭÐp©?æ<ó—&/a7㇅&Œ˜¼ë%“Ÿ(ÌcUþ}c©½sC™òi9zÉì/2¶ÃÚ3‚¡¬çã¡ÏpðÏÈ­Ü£ú¹*ÈáÂzñ¿Qã )éê$ê}^ß¿;¹LC·¿†t®VÄ&Ük=&€ØªŸsEDߥ2µ$SÝ2¬õ’Õp\Oxr˜ðºϳoD€%Ø.x²út+äæÁhñ^±âì´Ý^-DEPG¶áÐõ–í¾Mªè^6ݾêÃåSë¼Í&C›Ä+-s<¼n«f_CçL²ÃÚIƒÛ{Ð8ëÞåûc޶ 0`Ý$¶ŽS9¦]´7¬&|/'ŠC£“«S®\VÙF^§ 3O“2AúgøzuÚd’$ñ¼UÓyMéåþÓ| !•Þ ‹”¹ŒÑvŠŸâl5#û?½Úkjl;#é\Æ=r¿¥ÿ/¨…¬¡byÓÿrE8P(Ú¹)zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025413607166133031614 xustar0000000000000000112 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2raidz1.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.740787497 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2raidz1.dat.b0000644016037001603700000013150613607166133034760 0ustar00hutter2hutter200000000000000BZh91AY&SYï*—1Ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿào?:û ûÒ”&f6±T¢€ ÙFÀlÝqº*Õaï·ÍÓݾ>t÷¾÷|{´’ëußlûÛ;kµß{o›î{÷-nûzúðÊ™¶û[¶Á{ß}»{éÞú·x÷®o½>¹íößE×}I»“Úû}=îå¬íß{w®wÓP>û»M}îqÞ[ÞîõïŸí½+ï™uwo½«ÖËÜÒ_mÞâ[s)óÛ«šîÍ›í·]Ö²• S»H&á®§ÞÚ¯W¶ï[îûí4½›}w;a¶^Üèë‰Îì—¶Fæÿ0Qs[ð,Œ+&„®Ì“˜s0™¢p[<‹/nŠÇIüai×[o•T ’S »•¶±JAA9QJ?Sû P¼CƒÆW-ÕúG§¿àW—r)y8ç%|Êî²FÏQÝ‘‰RHaŒIÜüÂxlF'‚ˆ,†¼¿D"”†A pÃUP8 a~ ÁV~&ÆgAán4xßž¯Üè`¦e9 ‘ΜŠûêYë÷•xsúºë©Tmo ÎRÙ©ÒÂ9Êy$ÓlÖ›ãmDÝ=æÀÆm`õÒ´MÌÌ·Þ±|PãüaìÒ=HÙ¾6ðŸ|¾§om¸sËQ˲©°ëmp[x1÷ºúù}‹B¬ÿ±û¬qFømþuØHœ÷;×”:¼íÜ&W÷ìþó6N÷w#[ôi°ñÃFYY/‰íÏêþ[œ,>Îm¼ÝÊÓA¨‰©ÓKpÌÙ¿ëæ°w~[8Þriw>³ì<„tÇÌIÑÝô¤¢£îoÔªx¾¸XÝÔ>ö6ž™Ùz´ ¢A@ mÍ=j}8ª%ííí÷ß”áöŠaF¨°fÉ:|Þh?hº¼c¶†N°–÷×ÝlO¬€R`™Ðf-$àÅD¢tA¹*Œ LîžÖ ²FBèQTŠÄ K}’¬¢­õûOÁ¾ò_«ùÀ ÁA i¶äuýo—Wßk°qA6ÀŠÆ’z(©DPÈŠ#PSQ©“S©¹þÒ¾uˆd@qàŠ BŠ £µ‚"€ –ˆ®*ŠW§*‚¢RYSxµ?|¨‹”Z (HÞ ßˆ9DrEE¸‰À óÌøÐ,.!D2@i(óAŸ8ÄiBÐ×‰Õ 0^d˜+q$‚¿=—„?÷¡dÅnÄ0PÔ¬IQ ´(( a‰á… ‰ãðòE[)Éð°³` CÑÑ–(Tä"2Í"kâ~A p˜³ c4ŸhaYL8ì=íοUxÆ—ãBúhpœU€Å´ï“‹º†œ@f“ÈÊ>¸aê=ñ@¢ "Àbè2™ƒòÌf—ƒ‡ºàìŽî• À4÷ lœ Týç} ‚Fg=~O:g—~æ pù£8åÏ‹À&_ ˆÏ5nbuD äÒÁLFïÿÍ˺}Hük1ï(ÄIG%ÙÚŸ1²!Z£¯t®O„‘nBùFäÊÕbl®˜‚ßÌ\áõò§£1ŠðF2ã,JÜ~‚ã00OR˩ъA¥Â m)O=u=ùë>P¢®H»`’ƪŠ_äÖñ¶¦.´˜rß©’þÓO•ïC#Ë”ã¶5Fíò\º“;ÕÆUf¦.Qu'IéÖ¥»¸d¦ ´.iŠ(Hk Mص““ÖBRïêƒì ß®F1XÒ¦Qoò Á'O Côx;‚H®f>¨¦çT(}K˜Ï0¹×ßë¡Hþ ¿w¾%;NÃÜŸc“œÉý FúDé ›9ðŸÖiq« lþ¢/åìuþ\Õ}Óc¦Ðñ³óñ¦‹M<¨‹{ü—bd—w|Õk§<Ç1‹Å=ºoÍUQäú‚Å’â²g†&è0ç ÓâÞÈ-¥ÓDZ¬–§²x¬¢v…Å(ò$Œ Z¹6äìDYbnˆñUˆç2fÝc®äwY¾1 €äªÆ•†áà>YÃz.T’šŸ orûµ&€ U™DrP¿%WéžGBŠŠµ´KRšó”{Ñ;2ÊCÑ Ð7ØÝ}m`pÝ»úÓÅìe8'n’ö2u°X<ÐÜÊâR8ÆÎ0ÏÁÏ¨Ž¡$¦B£OV‘„T—+Ü#øûè¾0ø„?ÉBØxL=pÃlòz¹Rä‰F¦°½P’‡Îw`ï‡KF«î±€LZáƒb‚|ñ¦L ;Û«J ½0ãᩇ¦ºûvo‘IcÕ´è`g&j«>=¹@0€¦Eem¬¡¾¥Î¢zh/êļaŒ Õö¹uFÎ0„¬‘ßÒS•EÅ!ðaô naÀA/„„ÆFÄÂPH¯ÅÀ˜E ´$L›æŒ…„;H!pÏ´®Ssôßœe‰åN(\7`ˆM;^¨ÀÑÏSÝÝ@¤Œ-™lžíSw¯öO¼ ! _6o`ø5öÿ"'G<»;;é‰ARuù>œˆ}’Ühµ²uQ‰#8ìöD}ö€ÒŒº]°ò+å/X±œI#ç t1¾sïJBP± YìO ÑÈ(ÎJ=ãüi*|<ÇÌ å³qv ËX§ØºÒµxÕ/1¬™dqϬ„°~Bbld;˜Ž„•][ÜI‹b[ýŠ,¥<Ñœ–Tû>ÒžFC{)úâ¯HºÀq³&Ä®&†¤ý>Ÿ<Ù¼^—Es0¡à ;"uÄOžGä³þãyvcœ07ݸèR+¸­Øêßeâ*oÉ?ö?wñLû°¢ˆj‚J‰Š°}Êæc›ðÒ?ûGpYÌ9l¸àžû ºN“ïÔ»fæƒóN)"±K6xtàx™‰H·læ0|g;ï–*þt œ}æ"©Äá]„ñù¤Áç5 „“®±°¯ºRCä͘·éáó'©Æœsígîž"a'³}¾?m2º"`ÈÊ?TiDYÃ&޽û/s[ZЀ£y÷¥Ñ Ù‰Oéí“æTŽù0vÜ×Ãahô;Ú1QëUåÙÄQ¶\ào‰nd§”u¢¾ wœ6§›¼ÇѺV›ºS#¯…Ê[Õ.{L6Ä] „v÷‡@ØŸ@¹nÚhœ$•Sͯ6 ?žŠDYOÙE"8¯¬pB3NhSa{á;æÙJè`'ÆR…ø`œ#ûu\ßìÍl‹¿c2`$‚g·³kÊÅ1Ô1"~ˆØw}';dT.bÓ_BÃì‰Ð£Âƒ}£Þö0„L"q ³D¶Á áÓá†ÚΜÈúÆÄF2Í¡âüƒÀ*Ùɧ9$:WÕáu‡!ýWEåÁhl FëÑÐÞÜvñQøÄEÝRÇW²F‚;6óŒbdç4Às_Ø2 ¶Jù^1 ˜»œE ”£©H2ÃÅ×!Õæ B%Á¦Ç>G‘¥ú äÜdñ6BD7—„Kx¤\R¾ . `{²ŒÐ„…†Ž“Rd…ì&4nÑcGW…é`#ÂIÈÙ”íSticŸî}gøéU™(.ƽ­IÄòX14œ°í-ƒçk m¿ß4Ý仡wC’ šZ[°´•0DFDxפÅ3GdQN{k} éa À]Sš…>NªšŠW»Ï§Í3ÔàYÙjüHùM™E;ß«}_1œïÎY)øëc– v18­7]ŒUx¬š (ý[–4ÖzØÏnù¬§÷æ«5GÓ—“þÄÒã×”ƒÅ4 [FÉOhy˜þ…I'ô_žGͱa(²iV {ËrUºGn«3ï}SÇÏ„ ;ü^rÙóÁÚÍ/y°]‚¼â?MTú.y‹P©aHÈ6±®dˆl+txr?‹PES^‘ @¶á÷ëI0øúcXá'‰×4ÚZŒ`!%=hwœ×œüçDÑà½%:Eü™ö2“d«VŸ› ¨jÄnWP‹ÈΔ|ð¹p]¤W…æ&$­zú>`´Wþ¼„ÚÒÁ±‰‚¨KŒNè„gဘҀޠŒ‰´Š5_. PP‘ Ðj#" "ƒpxZó°ï{ÿ±±þ†i¢`ˆBSŠi Ù\~¯Ù¯I68ެÕå)¢îi^FHŒ´÷÷VùÚ™Ÿ+á·ïá 'Æ;oå”zÝÊNéÎ?s✗K/ÿ$zG–ë„yœÆ>jȧðEÔ?â‚Pþ/F€"ù*JGÉýEòS©±6\µÞ&Ç "¤*!¹¦2¹— ¦ôù´ø£g"ty± „¿7Bð:sˆmFcIF2èߨ© ‚NÅÖÿgGð˜°àShUâ>L:>•HÑé(6þ§8?Fv"†%'¦¼ôÈÄÑpEánO°x¼è§Â ÄȤÇ*ÁžlnÆ9÷ïCžÁÌSœäHԉȱ$an"y4yr†Ý=<#ÉœñȘ»zc5ª×«i'œÂ\nÀÒ¶æÅõ“öž°ïZ&%A‚‡­­&½«òN~^mjØß%ÙïZJÄù/p0ë°/¢ëã*OjâŸW‡4_GŸÆŠšËïL,¼*X žM‡ ÈC빦ÇÁ„´U Š¿ë¼h'Í*Ï*7€Þu7ÛÕPÚqÃ…”áõ%«È–æXwî>Kzj÷ÐM­.N¡ôþ\rÇ×åXz—¹ÿuN8„GL¨b=©Íç§úƒ{ý6™wÕ£UUF:ÅÙŸÎ=jõ¨„áˆÿÞA,Ï)õ‹ÜRGÛ¹ýgLµÎBÁ˜,Æ@á$/v\ê h¿úêž8smŒs%*ü– 2B¸ÚÃjKAHϸ ¾’¦Ô§ ‚2ÓLÅÂÁkᤀ&Ø!U“ç̨JðŽ:Âð öPv¦'{‚IUZ¨}ráËzfF™ñC·¹Fæ¯E°!Aêã‡E•ƒMÅ‹ (S4^ƒ(‘ø ›%-Qbä 0Ôôº,?hÓã#ˆx¡@;cË-À(,mBFp»TlNŠ6xAŸ'H•‘Ú;Ë’(°LB|JÞ¬ÛY‰ Qfx×W¥Ž7™‹)T°¯9á`F¬Ñ~ ÁCÎMhÑ¢F]08Ð]h‰†¥ à: \P°0˜ŽT‡¢«¦o·#¼× ¡ùåÒ—+ÏYo/‘¹wŠÕwñô´No²N |‡öQºS-{€xN‹3~Âu鏨5Vœµ»o;üáF°Q­M8–¥=ƒˆé±d±ä/IØ f_mÁw}­’cW›E_ô8“—Õ b°Mѥ͡Mz ¼4«ëssŒ]Bƒ¥ozê.  ¤ÀB÷­¼'Å wE'“°8VZødÀŒ>³2û³§Þ«‹ þ'µ""ZÎŽCëyÑ:’>‘êø]êï™ïGefàÅåyxß[Mž\L¼ÂVœ¾÷!3ÂwÚ-­³9ð~½«Tõ ‡÷pCœ~¢ RkÏ"ð_¦En7|¥zÅÂg›@õ$ÑÄêãÉûýRæ4È HŸŽRlÏúûFGùd])z6;šÆ.„}ü»Ã ×Éà ;ñêëY³wÝM-ëÒÅ¿„ük¯½Í\;8¤Œˆã˜Üò?PÈ¥*5«Í‘Q•öÁ%š§Ìì’x¹ÿ\â›û2qKÂÕ[üÇë®z‘yìE¡L_Áo:cjæ‰CD…gDœ8µÔ“5‰cœ`#£ðì&|ëøÍUþ1ï|ãöÖ^=¬‡¹­Êª©JN³u½ñ î©9Š{ÈgR/IµÁÊ3%ðDFž |ÑÈ‹Æb8?š]Ëþž3fwÑÄm£úÝ»¾(qñÐÈ^4Aí ;k~gjð¤Kxl\èR8¿ æß. {y°öÎ7§/Üi“8?{n¦f^u„ÐnëšæÂŸMoî亡4`ûL;«qâ”õó¤®Ïwt½jk F¢wâ°¤©™ÖÎ~y[Ù{íðWH è@*ÇvõϘLÏ“ýr0[å™hüÒ¨Ï¶Ô½¼Å9·‹ì†ŠwõÿnŽ8m^YL³. ¨»Þ¨¬»jqžoBÁѨ³‡œLÉK4fÆó@–•¡’)ÿõ¢ÀâWÉ ãÛ Z£´i` ¹©bLá$Ûò%¢KÃP¢jE WÄ*i.r½b#¹aŒxxÊÌWújXË%Á½®vqôÐ ëß d„¥ƒ}8)«X¯`˜¶ 4ð×w S¢b%1I¡4IÖCQ¦dúž-Z•0IbNŽ‚é㞢j"ÒýÌ­}R?ÌĹ Ð ˜Z´î®€>[˜‡Lä(@]zL<)›‰f"'‘)χƒ7ÊÏeýÅ}•ÀzJt AíFyº‘8aKP„à?c£cº§÷µcþÔ;šŽ?ðèŽf²Á×Ò*Øþ¼ ηF¨ES ú’ ;$ƒ~‚7F@ÝÇ[Ó`uš¬hà•œc¤bOéégqcùÀ‘C°€ýð,²™r@æ:2v„ßõ,i# %îŠD2LÀøp N$݆À!boW,ì’0zÂ?iHq%Ð¥xŒ• •>ÀC÷”ªMÐö®}ÎLœ-ªN7v1ªAð¶‹ï¢ qÎfKC¼óI¨E¸^âÎO©ÃfçÐ*\C¥5Û«ã=+›:ÿÇHKˆñHp„ùÇœ—ÝM8-ß2ÝIXÓ³Žfæ ^)ÑI ‹pF®!Á#ßÃy`ÒÊ!pXµ¾ Xö%¿îœ)x?¹ù!G]c Ýgç[ý:›w¤è‘TŽx¨{ð`HdQ[ê"ŽjËñ~À‚„Ãá‚D£¬ÔøJY’9 ,.™<¼çXØ’B’=è)!î¿:–ø&1JŒ!8'+Š‘jß…Œôö¹™S—B¡KßJ!Årü·«é,"–%Ý£¤²*¥ˆyØ„<{J{Ó~wµò…ó˃-¯T· Òp®dÂÑ(bÿb­€3£ SV)r\œG •ªÜ.Ñ\‘ìÑ]m`sEbÐÒXßÅ%!–UŠô‘•3Æ­Wâ·­©ôäÔõE™ša%;úÍ\,ÞÄdŽò³68½ým‡Ž™,jø°´“PþçÈîîÔ…Wcœä~yê¿7Š£ÃÙgí¼jy‡Ñvï\Ì5Y§@tâaÕæ–W†ñïʰ¸„75삸øZ¶·‚± Oœ„ÐO^¶±®„É1t" › Å&MWëw‰È‹B!07nŸð¢no ð–übÎðXVÈúß‘ÃD2?^­ãþ7´W‚Ó‡‰ÊIÊå´2Ñ{oÓÁkžœÄqçªû¦Ž¦trr6o¸<Ù|£ßj“2ˆY%<Áï²z—Iíýß裈r]XÒǃ֢‚ú`[)ïïOÌÊN?ù3šx/B>FËìrÏâqMyöˆ‰ó/l¿Âa<`oY=ž;§øx1²X˜âZP¿, âÉŸàìã2"Í D j¥ꆩ†„r§Añ’;eÐ# D£ÃªZ1õ°.$û¡B43ÒœæIrÏYy4·†ÙeE‡‡ûÏòýhQ ¿yfMð_ºþ»ÿk™7[ñ}³ý4çªï~CîΊ»*ÔliNÁ·}‰z½SÈ©Œ4Sjææ·ˆÑdrˆ@žúÚ îô•ÇÀîAõzí$ÝØ¾ŽSœžw%øXCTó¦aÏ>Hù:¶g ÈCûù§ã ÜÁ#Fh’2”Á%mAŸ×¼oå"Л¤Ï{âÈçiæCh•òQ4,çIed'ù9³ÖVåqU°·Öú¨›j­ÅNâƒ"e ‘B«C8—ä@ÈL мn!°<äraX!’ÌaÜ”=«Z•Í@Y×u)=1ü‰i*£?Ž7(ŸÛ¦±M#gµùæ;â»TŒá¢x†c1a:毢ĒA¸ùúšV=“ÔÐ>Ö‰êú²ùMW{";­âžñÿ2öÀH‰<ù¢!ôv¸üj$ð!mMÙ¢žý èò´‡ÒÆáf~vÙóñ©³L$*– R¡(bêÁaÓW“m7ÅÝÄ»:É…!¿|;`ßbCÚd†³­Ø¸"¤ ®™Š“ pr l\;.8&  5YãæC·’Q ¢Bð%B3m[]E ËËh$èT’Kƻ®S쌣ÎJ‚5d$¤@¨5Ñãö¯Åö&ׯŸ|׺ï¼~Ó úôæÎJËDèÅ2SóÔ-ïL†ý"cæð—:‚ÊZТÄÍ“•¿•TÓMÿr¬Í8jüÉxqnÕï>ÿb`¬ `Y‚pdMóH³*m—Câ•ÇÉQÈ,ñ3ôœÞVDJ7]åØÿíi€¬G—%ntå7ø°»Ã]·Íu!³i1<¹'öí ± “Tµß+û™¤ÞË6j^Ô°›Ã%>aSWw‹ÅÊ< ¡ÁK‡b!ã 7ãH_»«J«…0œ–<9g,\'¦óËHöŸ¯€õ½íoÔd[膕e íL'jP  ?mq¶xïå {Ô“p­"{1µÉFž ;!ð6djF Äüc6{ Ö´ãé}éI¶0÷¹ît0wzèI¹M7Tñ1ŠJÓ±9Þwüµá…Ã:á8oÈÊׂíÆ:ƒIêG ¨ò‡LDçNß›Axqçþçul¿#܇15°p<Å×âÐü±*ÖVZDå¢]8A`Ô;>þºè—Gæ-µ×xp3ÚZÿ.0ÄYü0ãmI³‰P:(SÔeÀtùWvÑõq2']cwÙÒ>ü™Œ7M‹„`F“ºÀþþè«Ù´ï-OAàÿᫎKïQ¼>¨Ÿ“ rªæÃN]±\ÉjO™4PÞ§C><]¼Ëaãvœ0M¯Õ¼fñz)bôˆD‡œ0°9þI&o3a eÝ5¥ õ³€¹´Þ©×Æ„@a!7"–VÛä ˆÈÏy¯=a±£ìš)OÕ,¿ÕˆˆAÝ’géºPD ê±ì¤w.`ÚïдjVj쥓ÏLmj‹ìG·¦°WìÏ ñ„)½ ‹#w)ñ0ó]·%$o?¯³ü]¤/Sô²ä„ ›³[ïúß>õZ<¢w ]ÓM9Oµ.>ºñ¯k=Œ>«>'†®BoWÐ뼫î-b4<¼;x#¡q£çl§OóbªÃ-Òú$>Í™"Š$Í,/3tæúyÞò=¥2PÂcµÉß¾}ÿtk䄇zîz½I¿ ÚzØlq˜:iÑêl¯¯n¯×Üa´žñÖ?ƒñÎûМ>[¯7– 9qâ´ð.µEð«^·!.ÈÕüÙ£¾y…ëŽkêZ¤?ƒ§@Ÿ&Vð¾üvGWŒ&ø0>,lI¦(Ö‚œ²+Ú¹‹L1‹¹Ë< ²ó|ÂÈ&èÐóתWÄõ\Ô’˜ª/löDàM†Ѧ4"²ÁCÐaGõ]B·Ó óñ`‘ƒ†‘¸ƒHÒ˜…é®s0$È&Ømª~Êýé“x$£ÔÊì^Ò]åZÑC^$Ùk¸k“DÊAˇ; ÅîÐUìsçÙEF´… ÕQïFÛ5."IYþ;Ù<´AFF«Æ}Y:¸‡L2÷áU.×OêÙd|~u1BaʲžÔIõ±,32ffcãð‡ÞO¥Ü# À<Ñ1U0‡Î²Z2ÞüÄ—g J¤€r±.ÞÁÅj\!ü‘Â(aé 8Ç ¬Ê©$—”ãÏ­ÜòÖæáš>hÔ‡„ØkcQ©¾ìƒ³ÅŸbÚØptr{1ƒáÏÌ7výaù¶´5m)Òëæ?S•¼}5o>, TmW$¥ÏºF7ÌTe°>0“K¹é Kƒ-µó ù@úµž‹mùŽ&WÙ•„z¥I¯ëT3D"| gs”V_ݠү巉öËšSI@Aª—‘ÉÄ÷žëê†$ ´lFÜløk¯¤)$´¡!°ªç^o²š²ç ï"CÚgd?*#­ÿOPè²N-»Lg3V°Ñ¶ÑMï“‚¡JI—Äïƒ úET×õ?ͰÎolÎ2…Þ‘O0–J˜B¶Õù¶ØfþD:3³¤X¹<ñi"š˜)/¡cêžkÿ`ùƒØŒÉL™ÌU«›–ÿÕéȆ^ZP|í#‡ÇÇMÈäù«8™ƒ¨{v8{«½†ƒˆÓúŸ—Ez ®îRt!·NÙ évX'Q†Ã;o BÈ^{ÁYKèÐX3Ѹ˜ð–ƒ¬hÓòmíTÆå¼E~VP$š]f $µ½‰Œì¡‡‹„v¶ûrÔ#þ-*7¢[Ëu.fó!,çŠë0‚¡Ì2¤Îq× )«„äa®Æµ_55ÀÙYñèhŽîæÚÅ1íJóL€ X'ÊÀ+lÛ “Üu»Ân‰ ;Zˆ»A²"©–…íïò |_¬vªBu%6É«¬„¢Âa­oìÄBZ4Ÿ0”-<ãWv%öRÿ§º{œӛ݀Wû]§|s²AÐ V;wÞÕáÞ3¬9V´C;Wºîk‡Õ»íy›K‡‡0fq±h'4}æ8‰¨Ú?šø¹ß%í±ØNÀÇcÿ0e…?0LGžú™èɯª[g˜é浪¯ã T<ÿqk&42ñ\YÉ¢‹áÃÆÄ˪Õüö´È*¸ÞNšÉ»$º§uP©t0‚fÀE `#»ðüªXÞ‘J¼½‘µñ1ªz3]ǯâHß¡8¨ÿ±1³|—‰Üë1’Ò:|Imõä hùuúU{ÿ”{é©ã£ÞÛjs¥MŠødï4à.Ô~·ú9uêp§?´9üqTn.‡Òôñ³{vͨØö³™z¤µJMeÀÅî%íJºê~­ÜŒBg6Ü„ôwýäÚKÀK†ô€QâÑm‡[¾|<£­®¯ˆ€¾±Ä)ÉL¼Í¡ãñû¦‹(ÈÊéܳ±Ý’¶eÎV#y#{éS¡KɃÄ! ÆvÈ·¯þÖ˜ºOd`šå§03ún !S-ŸúÑŸVbÐlxTW JÈ—húìÿ^²Pð5~©…þ 9hPÀW!ã@ú$™i<a"w“JãÍ·à:(„/#B÷ õ=$]ã¤$À°+[*7Ë_qô)`Ò2B› —ÓÚ¯ŠTˆƒ2,ƒ` ‹n•¿7yÉÔ!iFˆ.båÄ æÁ¯T¿Ó§Ú_{ÂTìoLdÙj$„ Ð˜üí”;i"‚ ¸P†¥blit£ò?šþá´ù Ñ A¤cÿX¾õÚÆ3 ªÊW]ƒCÊ`d5gãý*oCJœöªø Àº O‰‰z³ž& z —òk/[ô~_åezÅœ¹HZÓé®Vè·2—4Ê„’2VÁª1Ë$OyÌW¶*k[Ìå»w5[,¯¶ëöQŸ¯¢EßããI0ˆ™Î˜…³2£èW\{RD¶VÇàèè·¨2œÙõ.É€àF ,¯ã!ì Ô p¸†Æ=šVqÙræë,˘ý]œóËò_‘…ÑÀî’õSïðà˜‹‚n]$Õî}îÝðÔ%Û=~>ÝB‡t µlÝ&ÇÎú rŒjzƒíæð³°oˆ9DÜLRñžÅ<ïC|oá¤4¦¾jš13ÆK6QTîÑ]Näq]9cÉÑDxË4Úô´ÌJƒÿôý?›ZâÑKKÎ¥}ç_¥x(µ;4‚'2ЗòÊô@#00Q 0 ùµoì8(rK„·‹CòtO$õˆÐôš~"ñát´%f €9‡…!Ò/R ,‡HHb']·b}ÀüáŸÚA$´UüïGôûÔO(ÆvœãûŸÅ¸¤î¥˜Ó v0î¯bÝzcILìùí[þ÷8âc(M÷ðz¥ÒÏxrñÚª €Ñíáo{Ú$WŽÈw'€Ž3ˆeä#Éç†8"ÇßÙe§bÃÃ6b^ÓGþþVmŒÖÕ*Š/zcÈ5¦Ë†O–qGøò?s*0pBdÿiÌŒÀ_õúÖ…D`(pu>Ÿhó©ÍõÚ›Ñļ™ªBx7 *XHqß½b›J d.}gòÉÖÁýÂnØV• «$Vß?©S ¹™œÖæžý%»Œ}©ØŽ´JŠèåÍ>F2zëÑ ¾½wI-Ϙ ÛçzGÔ9}Ÿ~Ýk®°w™¥5Zn#åiÅvv¦¡©ÆÁ0zxåŒo5V·,¶^׿£e² ·Q¢ ½B®uª_—ο´Õå:MÞ+l—#Í•/Ö‹ø*ѧ9cÙ' üÎLž$ D4¢¸ÆÒ¡2fôŽA•¬ðêáèÖÏW(vBðG!v»b›¹Ø@ØÛQA:¤ æ ñái.q¡ÍºÌß’MSýÜ<ó^Ú^#UX“ÔW¬¦­C~~{Ù!ºÞÄÆú›)N£ öG¢OåJ¬{sÊ!Š&§wý]ÂV}ï'¯ö8ø?sžãX¿²¾µ À‰îÊrJ8¨4*üØÓÆv€xùîd벑‚`°Éý^ćîxMèÒ©u˜2ù‘¨%Öb ÈødëñÿĪ崃ÚZáÔ¡v>3«ÿ po‚· :ƒíì§¢¼gÇA40„p¬b$iDˆí 0¶T C¼ ±ýÅ"Ð>ˆ@†ødF4jÙîWÀebàÀPd2ú¶—&AnD/³t/r<ŸÀÄ5ØØ~N"Íøçͺyœó` „YÜ®sÆkÄü¶{yATŸ\7w.<²[•òj­Q‘ª›}»HëŠk= hGO&£Ú> =U„Y¹|ŸõO$Mï§‹ ]X=h7´tÅÔÕ–µK©òK§®;‚z#þr…“¯­ìóz½Ó`ËÍ%„âX þg4²[×]ÌXbRæ(-Ⱦfâ[¼J1á“Z࿱_íú¬<)±¹ØLÓÕzÞU‚Ó}CeøF„Ù_z³ðð  _3 êGŒnŽÃÅýúº|i9 >ЭqßȽùÞ^E*ÇÕ-Ñ–êÊé¶«¬ÁÜ›Öí@K!x?,¹ï ä¹&CÍò² oÔ\­8Ú~÷e?gf;WælPÄ=ý½@U\—Z*/°€šB?)÷èÁUj°ò1ø• Ý‘W®FZF“›H–“Bt9ƒs×y¯@ù3ÕvjBŽ‹”¦ßüø˜îG¾wxá¤ÚA{¼½Ášð< KÑ¶Ú†Ä ð&…è¼a íˆ>U ¨¦$]ñœß¿ÏSNy<·î„PlDG¯_“¿hjŸH»LrNÕl{/¤q¼uŸª Ó }H&óÕ.d¬b[ŽØÄ©”œ@3·Œ 2Hs `¢%AZ‚TT÷Úbêeµœû×sàñ[3 Æ#ƒ›ÑìãÞýÿûÞL‘ާŸ¤ì ¶©Â6)¨&Ð ÷¿Á££Â²êN-F®Š6ýøUòЦz;ç-'žÿ?ÏàHùؘŸ< Y€°Šx²40ØÛufÇ4ÐÕ!׫°ýšûs<ðtvà _ÁÎn+7 êw«.!ÈçHý;z ä5ÝÑîey E /îÅósHø‘~®û±¢|î—‚ÝäàA8ûÙž£–ÀÛ2\›R†\Ü8³þ••¾(ük…ä‰ôxÄ$DRÛGÞýbH'h›uH/E>‚—“ˆÃiÅ„Z¼þ­£òrGպךp®ÆsbWkpÊ8ÂzÓ ÖÃÇ5˜ä~ñ» ÿæïx}k¸Ì/OQ§½R8[äÅ…½—ÄÃæ"¨Óyâm¿Æ¤g1wÊâ’Ó#Ȧ—†ÉKi¬éÉ'æ³Ü¿g+Ó"9£EÏÐ7›»N¦Í¨¬ôkqT…ÈTýªîØ "PÄñ«>ºg[Ÿê’ë¾ï¦ú)zeÆf0âõÃBh5Ïm0˜Óº/8r7k¶¥×®Ú K!¹\œ^8FeG;ºS8@,¹ˆ€^9*o—“»!(×öwd~òéð?ôƒÒåîé>i‹§êSµªzfÄï&`Ù³y€Ñ…º0ÕãõŽÌ61d¹) _QÜžØê¿ŒÞ †‘Ph¿fëªÃŒzðåÌGöÄq.ôM— ³<¾6Âê7£9.‘‚_BªD\¬ã`<$»±'Þºhû!#§Ž‘É#ËËéîazWµ––i?|ñ:uþ¾™§´]={ à¯À²ï^lë`þk¥Î²eR þè7ÆHZéšjáN̳¾˜+¦ RÁ{¤Ð©¡“óœîÌ«&NÇ!ÓÝݾX~}&Ý]â÷z²7ݵ·ªô­®b5k b²ª^†X@QCd|BbËʘnɉ ËZŒ{ôì —¹¡|·Õg,HÿQRSè­(îÂæ¿ð…&f9°VÑbòñÎç³È±‚Á$2‰$0O5‡ °©Êó©¡u›N¨T˜ê'Ëè´þ^ÎÓp—"ö]þ%º›ºuóÆêÖì3µ°Gn¯»†õçìûW-Ñ{"‰" ðE]ž† G}‹çÄ—@7ÀSF|SÉ‹A™Öñ4bÁwgÌvêå#ñyøªsžßAµ– ®KÓd³ì}K—V.0«b¹ø*¸§M¶ü<}?wÉô72hçNü­ü8_~<†a϶âéíZèä<öÄûp] ÷—'dyñ/íwØgtÞ«ºÒ|WûFp"'“ / –ž§O½Ñ1LþŸSÃÏ/t–ýœƒÛ;¸SÔI8¼s‘X×\Ý ÍÀS(¡ýó¥óóË0:»¡Su·Ùq¬(Nl¢"nÇÜæ%ÓqŽ©³A6úýT­kûí `<{ÉãÁaüÔÉÇ2º¼‚iµ[/8 oŽš¡ü—ag§°G-iÏöLÊ|òNì÷o"5y‹yJøøª¾tF!§…4]*ÂÏÇÛ¸J$’MÌbßdéø[šËÉ<ìkü·5ë#ÂN-i³EŠï×ÑP{½gÖR.®®ôGƒÖ3RT|š˜mÚ‹„ú{l`F]c¾ˆÆºÕ, ¢šv„?~.cv@ëÂá\˜ œ#h{ÏÑ”Éá·›‹ùëú@<é¼U‚ê+w*pÚßµÊ}U½›sã¨+X±<|JÏÖm‘L&ØhLëëÜÕµ†‹ðþãGc€ü“‚è;o"Da:õs:¥kzU½Å9Kz.TsÑ»ÞlBoâ( óÞµMy‹©¡=¬ŸwÓØ¶˜^‘ÍCc$‚‡}ÀÍ1‹ìËF½ÓýoY?D—&iúm»=w’ e eÌGò|SÍ䈞H#!ÄÑd4õ¶SN²S渢üʰ éôn»ÉÚ£HÍNÕúx[D.e¬ocMjLÉ8Û±ÞaÑ·>Ùš„/jK¤Þª±SÖ!|ç¸[‘P¼Daàâ–¥ ÑD™dÀ¬f²0Ð'‡KȽß{£ãŽ£_èýÓe©*y}¡lhت5ܧ/Û"@‹.È<\&Ý™(Â+Ó&éögí2µ6L^_5â‰!³ ËÚ“»–A‚¨f¼§†s¤^ª ³Ÿ]CìÙ e®zų†ë×Ëx/#n§™D¼#~Çqi„;u”iþÂÑ´?ëÊå¯ývvÿŠ,AtÄt£å`  ½Òî[÷€»Dˆ ?Äpãõ/2¨âkr?ßpÞ$Á^àu§‘[•÷$(AŽäƒÌ´öæ\W¼›n'87/Qàáq’]ˆáÓÇCî|„Ÿúy¥‹…ù·šÙ”åÖ‡"âò $0/#¦[Ñ™9@œžL¿CeF¬ÿ{Í­WÅÞÐVNÏòg =º0+_²®B…\hy$‘$¸c ÜêAÁðÓ:™ 8Öàˆ¢ò`u0£˜1ùó¼ënGÃõaÆ}kÏí‚ôqNçŸ(‘°hðâm6©ôË‘7Þ¯¾ßigîxLÇ?/»ÏIÓ]Å~.l‡+€8Á<¨…–AÕ7EMŸå'%ì2]|š[ÖÜ™˜Ð¿CsuŽ¿j_§ ïJáBÞßzZþ'y‰Û ŠMÖCIñyÔ<o€Ô›êY ã6ûñÚäé9Ž¢ñÙx‘ÇÜâè^9syŽ1MzîÑéÜø$Â-1ÁWÆÕ‹Ž€S-6›^Øp ÷Ì&rߪtl'(O/”ßÏðò\ŽÏ³˜G¡8û —X}cý^2®—bdc ‡ÒáÀàµüÐÌ”òB¦²‰èY|…½ýÆŒÍöqdEÓª`ê™MßCÆs.ZCƒìäÁL÷ö1ú}kB)(Fɸîê„ÝÎ^¥#o­»óÌl¨äÄúÛ62¥8ÝùcâýµƒrKR#æƒ5þip<C8F xÂ=Ï=v†D¡··g=Ÿ–x6–©ØÌ”dg»\Ã?â/Ï ÚpÿM5ºêw¦Ýbm“¦ï´ÁY&ÏW‚‚[m¼Ä~´¿°Õ¤Øfùú– þ´Š:Àȃ‘¼ò=­ŠõÇží|O›ê¹¸çx.ŸWÞçyŒ£(éÚJ.bÆÂP0£˜éÎ}]g;iÖn(ôvó £n ŠVn]mjâXÀ£Í’®êºT©t]Ó¶ &€6Ax%ØÚ¿ÔC›ßÚíå¾\˜âMV0¬«ÿÍI©&¬öî·¶'w+½åþkóâ™\' 9’Õë\„˜ÇÞ€F²jÕÙœ¯ŽFý7'èOKbe¤pr—­|´–ù>„B$Ñ  ˜%³ ²„mêÏy9´GõØ4QG»žïl+¹=‚ç‘ñ÷ÔZÀ.Þ+|*‚FÓþùQ¦‡UQ¡°8%'ít“€ððt$³f®˜Oåÿpæã•¹3SóxA©yeŽJÅ¢~¶SaN‘RŠhšˆ‚RØmçv¡Z þÈú=Ûiðr¼Ñ%ñücOHlø'•••€H÷¶ ÂÆFá•0B®ÿzl𤈄0Jz3=eÛäSQ>14c©vî7±”Qûˆç1.|f÷ܼW ÷Ï7΢ZZ°ûÔ¾›¨¥“Ìæ•CÊŽv9Ä·q;×ÿË^wðlÇ3¼‰FŒpÌj:‰ÍwÜ@·GÞ/?tÐX$ Å_›+õ±n f¾îÍ~)¿Üz†§§–+ŒI-”ÉY2.›y ïо’é)ØAˆÉ˜©fÐi^=;ÝÊ·äÆÓâ=¼%5»1¶$ÉЀ0ƒD` ,#…V8 ¯ÇÁ%[˜¨A‚#RAL.¨ ÆK&> §Þ^™ ;ðêÃÇNä°T9“.Ð:ªñoÜÆgxùü4éMfHš?6"³HúÊÌ3ƒ\å¼U÷Œìrš;~O‰åûG/yºÖRÛO+yýì’ 3#–h²—4w'‰ã·@0èCE§:ËѲC‹À(‚ ú –iÏ%¯Ø©>ªÏX[<&û'þCҦї‡Òß)˜ƒÝ´I˃­þhù½-7ƒ¸‚åGc~G3„£êçÈìÏúÎìSh ö‘ñD¯ŒQ5tà®x§±3¯;à¦àž¯9u= [³¨ñ$'5W¯!²›B³€†¸–áïfdR~ü³z¿bò“A‹èb«—­‰|_PÕ‰¿m!à‘°„ø¿ý; Ê :ÃO<-lû0×»ÝK÷âš*3¬Œ–E–~]"¦wËæÌ ³³´'"™~)¯ØnNV+–!1¿ËÃF©’ÕY ösÛ=¯™#yC€fÕȦ<±8bdú!øµ!·—;JÇCçO¿–ÍþV=~—‚ÑêÚ¤ÌÊZÊY <šŒ>·ò(tì)>,®Æú/äÚN%j«Ž¥©²tÆ5i9/ £z2Kªç¼‘ÐLò—‚x-„ÖTÆâõ¸T¾èZIئøMrPÓ¨Eë"ê9\T•_§õ÷2Næ%Ø8hÏV1 ¼ú¶¶æÙ)Š%5?hú43 †€$oR˜>¥7¶ü†Ž^¢x»aòý_áÄ€p1.WÙrçs§tØIN¾1¥¯BÆ'q³vɈ¤såPSoõÒˆtW2{IºDÚ+j6`#ýïÐ%9…LŸÞb‚'$³½Û V²_šëŬ Ì-m…×q?ùÂkÁP祆ïß+Ê» N Jš<˜Á{º= Š›œQªï¯§¸tdl c¸Ú#ò§.‰ÍÄgÓ.´.±¤6"—\tÜÏŸG)ÖªA«#HÁó®ýûävÉØTÿ^æÀÙõ}E-˜V‹¦ø®º9½+=ïËÖNÊ G0’Hf/1°pŒ"ì2šˆeâ- ¯õþ«AfýV°pêŒo©è"[ƒ.ø<‹Ötþ@òͽ±‡7¾ø‡';­hyåòöpŠ˜†Lh<]5¯Ê‚M9ÓYéæ C¹SÁ*cõþÃ?&/àüßÒ•ëÝúrÓ_U©‰xLLa¬Ìßf½êÖ1ËnûÁ5Õ.ç ç|º‰1f®I'û•÷ïoaþ,³Àú÷'åÖˆK͇›4*ˆ6º Ü–ç6QŸ`I ‡ãk îLÕ$ÐÜŽ9Û y3óÊ4 ïsÈ@6®êPÁVæ#jƒ¢“j:¯¡º·i¤É[ï`à(ÉZ>ê0&:KêCøØÞºAÔl%"¾¨ýʰ}©îÊ‘ðE–ü23 }ªq°K€4šs½,\†&þbÃ`Yý|v#}êpwö¢øí•U¥V›ÖØÜ²U4-,”sM²;Åøy˜uÅ#†ôZíÞƒX°ùñ°¿lCä]ÐÒL“Q*gׯ—¨-«ï(scíFk4ŸÙ\]že}|®fCa¶4,†NA©w„¹k,à ] Ub“<2zHêµvµ~«öߘ$…êŒS`Tü™/=<ç}À uñFE$Lj$<)H~J ŸRþ¸QBRT !ò(mFB0@ÈsÌÚ×xVÑè?WÆ6œq»÷Zÿî{º¶ûú¾§1‰½[HJ¤4uj3ýFf|±Ñl¼©£”©xGjÔ&¸1Κ¾½ûÔŠT€È§8Óÿ#'–A3:níõ¬ào…a›K*“.çv—ìÔ+çB¹lŽðÁ(Šý@PïÍ~¾Õúç*õïËrnrÓ÷7Ìá^î¨CJAÃT¦Éøú³5ÅþY^ pÆ5É#ܶ$Š¢¿ÙaË«SrÑ©GѱÒn§³ŽðHEë •‘¹N_õN[›WihÃþ2 Õ~KÚö18’zŠ)YxA© ¥CâÏuØ’_Oc$¨•$d$$ ÀªVAŒ„´¨T*22HyÌk[þŒðjô}~qìQóãgÉ€ò·mÒôê­TwKçÉøË|X«ï'!†ê37ñs/00˜ŽúM–uT1×£á\p/¢Øbîq[Ô¢ÿWK%{Tq°»Éâ8gêF¥¦Œë†ü õ UIFG³ßKCüg ½¢1ž+Öi†ŠKÉOõ ¬^BwUŒW´Ÿä â¯pÊxfß”l÷œy”k”ï]±öϱ¾pyŠOaÉ,Ç|mWéÜäûßà>¸`QØ9~\ª%€Ñjz7¸˜¿ù#–ÚžÞ/KÍ ® ë0ÎU@3ç~!Šx~ö5.ýòi&C&-›FÆîð”¹È ²0þŽ7}FU[ìn‹&˜ß¶°áV§ Ÿz é$³Q.›'á|ä^¡ ÀŽ>)*W—qrÅè𬭠ø9t•Np:u>€]m±ÿ„Ao²ôCU¢^Ór‚K 5¡Ôwó4ÛÏ)Û]£œÒ*Áõ¦ÉÏRz8øz59ÓÁØÉ’ÚÖ„Ò'2[Ý}/¤_‡÷¸"õËÏ^Né’6l†uýO $1ä;bÜS!A|À{±;Ì7­=»¬º<>#,õþüutRÐymq>ýî„&>½€“Ys´§tÓá(¢-&磺£ÙÄ[ Z_s<ÏÀ¸3‚xÖ‹~xçöØ…ZX¡ÖmËŸ:†ŸÁ¾d—i•Å‚·×[Ðõi1~'BÈèŠ@Þ:à𧡯¼!Ãf) (`ﺌït™sŸ»äºgç LÑíÀ$@P%Õ$CŠæL›=%YŠîΦK’éϪþÐÐSy&U`/¦ËŠþ@±Ÿq¦ô‡SËŒ`†ç{„ð‹eB&6Ê3ÎÌt`»DÌÞ:õÃ|7!ÖÌÁ˜#å΃<3“̰è-E H,ëø.ä{Ž™ ArHË” #GÒu¶ìD·ª^ ‘;–ÄéõV>XÎ^‰®wj`]¡DñBòHá9[0“÷vÝ%â'4ÖÖßú·ü ô?gQFn­ZcžD ;á˜õ@;°<²øˆµ`ëÀ°xèc?}cƒö&\þ—ù{E¿²Œˆ‘ôt’ê¹!01Wƒµ@b]sþÔ>ŒËæùw"Óèeù±‡MfIs}@ë85Õ³@¯nMID“A?Î]Øf ]»Û’ü6öÂJ]â'ƒÄa)«¯y+éøæ…†¸àÇu…á½<ýb¾…އKzÙ5e Ñ»›œ¯¨GˆQ‡ÇrwÄ;ñê³_ì Ö¿D°÷ÔÝÌÔú°ÝýÌ (vÛ+ýo­@"„² OÎ:oî—§Ìl›ÿ}¹_éé¸&pŒ. á~ÖÖÖÖÆºÐ‡YÊÇ÷¤×0Ú¯Æ3C+ßû×lj»Ð= ÂæMS%A-coÞŸ«‚ÜMÄlCT-ªÆ÷<.ìã–ïΘö4´†{å… 4[ç¿në§æÀª»M\íêÉ©xlÂˆŠ¼Æ(F¦ÇÊéãþ55á¸íiMè®Y|ݪϳ£ÌñË"ÃUÅoŒº°æ ˆýŒ±8 qåaþhF7!PQ aëëŸ`Õ»1p«Èq/¦³'ï&kX#à¼÷|.…7þÃÅ]¨ÚçG¤8¹€ÿ"±2FÄ<Ü$”=hÈùìY¹ í2‚}4ù¶f‚Ú D¾*ˆ‹Ï„Dqüà-˜F@2EkäÝ <î¥mëÇÅrÑ•±uuÉ[ÿÞC>sÒÎ.WÜ£©Øvˆ8»2„MÛJÇq8Câ®Íår˜KWÏòúèy|…ÀÙûˆSÃŽ éz9³á³ùò•Àݽ¹•oŒ‹­õÂZ‹utƒâÀÙ2IlfZdeŸ©kÇÈÒ|ç Ön0¤æ (áay—üÈÀy^Á–yxÅCìèEÿíUcŽÌãièFµ^q2u´—½£Ðx— ¼{ËË1ó°ÊôÃ$¥[gwÖžëÕuÁ¯ Á`q ˱«JÞçÞÛy¡Jó/!°³rÌ¢ÙÏŽãoQÐʼnP’ç¦;z3'æ‹Ï¨ ¯yK6Lfì]Aµ¡Å¬Ñá~¢‰ÞÒD;“§™rí˜_ÂFr²ßvãž 5úãŒté À4¦µãœ\àŠ25EÀ'4“Âu½L¢‡K„Lp¦1—üNEƒcjm†BBŸüÔt2ƒàhò aL‰üÊ9 øeTdàð NP§?ò @[¦!ƒMŸTÁ^‰{³cAì`8±,a©…²‘&p2ö8É9…Ñ“vdª¥^Kÿz;hl¼0gp  þùÈ@°VÎSÈ8mÌ«¶9*ˆÆç×¢1Ù2gMü»€¶hÉO³•,Ô!¤Iñ÷sCÊùI·úij 6*ð|—d¶é59øÒ?°uô/GË{ŸÕ÷“XËö+ǯA /kÉû¿?÷Öaá&ÏÅ®uf}õ\ûRÆÂ—ÿ0‡;óûy+øÀW‰8b%åÌaìò[®’TI¡,7Àj‘H‘çuAN˜Tsé_¿í(Fƒ6 ¢Á£ç‡ ÚKÈvû}×-àl÷ Úo ,ð²:$úä¤ú$–ᔥæÇRdˆ0‘¡}æî œ$"vr=(y.qC}Í®˜;M%ñkÂØÊ§÷_³™– ‰³Ïè±µZ|oõJ7²ë´»käâð;.åÍßÑN.¹ºÚͪ4Â^åY”Ø hIa"¥×õÑ6Š1o’Gô|^øTŒ[¶oIãñþvŽ2òk}ŸEM œÊújŽœ™¡vyîе /“@+þõÁÐDªXPïrÈ2ÔVø?/†œZ3*,.á~•¡Úýÿí®c2Ò—ÈÁ|  Þͨ ùm=¯'Z"ÏÁ–¤æ4k4‡ÏÜÍE+P—¾ÁC‚2N'î4ÏŸ ý“æqòCRÕ¶@Tª§‡'Çp(–ÕÀ+XšÁÉù§ãã÷-?á‹épà=?³‘ˆö$”®òýŒ*ØZCÝWÕ—eÏC9 Ùj©3€ *íÙ#zÛJf$™„\YÄcÑÉ䲘â€ïX;ú•”²¿I¦bò°=xo«ƒá@EH»!êø%†/`‰ðî—{È 7afÒ`ÃþX4äwm5ßýKé¡+Ôµâå3®T–,©ÚsûßÑÈÒEÕU5 øXÉÆß×å*¡÷šÎ¡æÅžZÊÏç"\MsÑK»ZtJH¤Í<Ñöóµ‰o™)–¼Þj‚îYëKÀ²ýµx§/ÏË÷ñßsiE †7yˆ8á1F,béDZ=”†vYš“Öžä‚¡ì=/o·~yÊ(„”#?UXWZßCìûÂÛŸàÔ75‡$.œ÷k*·lòò¯9Ê}µ:µ%}ëíâ>Y @u÷ã*ïxŠ˜ÆŒÄ~ç9ëMI†¹'§Ö3üTGÙ·hRÒè†/"Ôè$ÁJž_«Áèî)L' V̘M"‚¯¦Û*È>ÁÙñ¥7Ýd?ýûBTE¸(h¥,Ñ¢ Œ;î q¶7L& .°-F³ˆ>ÛþPr&°Jͯ{“¡röæ]‰ÏŠ TµŸ<.øÁ3%ê²Óå=¹ù|´ Sºq#aÆ#®;ƒßW^ô‘£ñz@Ø6³Í—߯É5$¿b+˜Ñ2HŒ°ö}uÉÁú¹õaPh¼}âÿLæâ?ZY÷!ÖÖa5¼WgWm¤¿¸®PÂØ{Àþ…•б³úí,u^ï€ßÜ;uêœ{¹KÓXtÔràCãÇ®+ªé;ˆDøÅ›Î%ö$²Ì”N5œ€ÕáUøÝñw^®T¿>™= ·z ô‡e6g×ürWM÷z¾’ó5e†ï}_ËOÖ¯ZPr­Øøº.:Ù†7¥Ê•;yÃÓÉA¥5¤œàvl\BßDxžÄBbµ¿•˜¢kƒâOƒJÖ­CÝ*tô÷ÃAÌH»+;£ž…ìѳF¦”ªà†ï{VõyÝFæòc_ªï{²›Úƒr²ŒËúAÝ|Q óïVp]¿Ç옎dºþèÅY•¡Xè1Ó¦/DÐ;›Äöy¤lj,ªß¾Ÿ‰.8gmšüpk¸šáEEÈJ@èÒˆªÜpŽúÞZ—Ù‡ý,þZ4ñoYkÍÚ+™íF5R¡ž›•¡~-ð¼ bÍ<ˆÕŠ G‡Ð³0B‚A¼ÈmàÞõ¹}z—OžB tZ8“Œ°ç† XG!$GKÔÆÐVF «@ÆArp¹²ËI/ªeõˆµÑLu©Îk!a5¦Æ" à|gÁÆ¥¸°FæìÅã¾}Še¾ü­'!º@ yú;l„^`@+ÉßT?9Ò‹ÿ8ú³ªpÅ€Œ¦]Røÿ] #ÅASwFŒiW‘p¸·É•uü=ýò\’B²Ä‚aq„ .ã:BUŸ¤e‘¾]bO«^œ®‰âj;’nW™–©¶Èv"ŠOÔ‘ˆëb‡0%bX¼&s´Ä 6½È æ5swm tT l)YÆg²'¿ûõKÖÁËDz4œG66\ü@±œ®!h=ÒÍZヴ`ìSw-¤–×âöãM*y¾G9ù¸tS–£È"á~,A¹Áb÷ìùÀ z AË „iâ/¸(è!›ö÷;#à*…l.~÷Ø‘;Å"ãf'ýõ½}.í¢,®Ÿ¸'*m´ÎxÛ€8J|êÅU‚k¶úûмòáµ *ˆNÀô;çcóÒ¸§H¢ !žÝŸ{ÍÔåeæ8éî& ²ƒÄŸ» ›Ø94àê³Ò’ìԽɬÈDä&º¬;ìc@¥æ¦š8»Ãó'œG]Ù´Hû/úÏ—ù…ïYý-Š1â´¶ON‘õZJ§6àjÄ¿6ðZÖúÄÀTm¾ ?òOQ]Éñ‚B ÏVö(;ëCcûc ˜K(§<Ñlcl%š+aö¿RçÌŠ¸FÈ (žå(•lCJî ´%æ×i”à&Ê}äz‚­ YÞÙ6SŠ^tLûüU×Ïæ”PÙbFHjh/ª àPo*ÙûÔÃ…hÄìD½ÖËC{] >Úíé<ü+D?Ö—™ívÞA;¯ ©m¸ðbûy ÐsMñÃØxß¡lià€j»kù–F8ÝŽ’xïú¶Åv9ô»l%ñâžBÃZõ:rvœ9³u}»‡ºª:H;}í9`0™ &G% 6¶³EI<©còüÍ6ÿc¹ÿ¹qØÉM"Q²uQùQ®´©Ô s%™Å@_mÃ80Yü¢QX D´e—°ý„Çñpî”7æhZZGK úÕq\`‚Ib~0ÂØ# ù3 ïg³ð¶8‰¿"LõíˆÓ8p/¬á‡#õV"v‹àúÓ´9 öÌf\;æÀîí'ãÖEⱿ†ñE\Öѽü‹YðŸ/¦Ú¶~œºvD¬=ßÅ»F¦6È.t£2²­×S³‡•ˆæW{ˆo£ÂG~r 0zé³îî‚YéÈëjØÝó%À?Á÷ˆÙj‘¦V$ÐZKÌÀ°©ûØXºw7i]I¢áš' µwÔ+¡}n‡PJW°>§Ï²|@öÍ%™Ï}ÖH¡Ž”&eÀgq‡HOv6ç™C¶_ËÅò^vÍóPšæ¼&7½\H¾0Cþplø©¸ôf^2(ß÷Çc}¸z\eÒŽ!ai(`ü±ÓËÇDû¾™gbJñ÷éžsI4û¿`•vjŒv‡IidL%ÎvRÀ{I3£aCý‡²Ò§®#Œ6Ì•&A×éÏßve A5ÿ"ñ¸C«eáô??"ÆBZ£ûfp3¹uÓˆT™ÀSöñœàæCXiQV/98~¨¦þXÿSËŠy>âd«êÁnPÊŸ*3¡¯òh7- TÑŽÀ8ð‰IØlS¸%í|8Ky)C"CÆOÜsL\M»"þ·yƽ}—ܶ—‘ûã…a¬YÄÛ/iñEŽ'ó‰A0h³9ÊñQ;i\xë[/E9Þçニ šµêKiãu«Èl˜0O‡“/Þ6¡ÐLX'Z\ÿ1Úш¸[91L4!EM%Ö÷ѧª=ÌwzÿWåøþçî §'‘qÌzãjìlQ†ÏÀ¾l˜Z°Wó/˜^‰Ó7ɾ»î d2øás“ÍOåâì Ø5½¬tYÞ["!÷}AQ~Ñ’OVŸî¸¯\—ÓaŸ¸hþ­8OB¬:(Ã}™Îõ"¦ÂÔîZ ©×ÄwM1Ž Φ_9VÜ»W‰åÛø¨ åV=V­ükšFï¼à1ë¦óºÇ¾Y´¼† 0Éb¤ÕB쨀Y-sˆÂÛ³µ¯½ñBŠÉ ósO^Ü¿dÖM…}{ìò i+¼¥¾¥‡&_ü¯8ý0Ôh¨¸ËTüûèƒvÒ…Ûß;%ÂC³èó(O/Ðøá©oADÇÈ`ü˜?Û'D¸qŽdxÿ´ÇXýî÷ñõz[^Ç•ÿ;›XmâÃâö3·ßå7¬ûÔ4ˆTõëv9ë2$DZ+ͲÛ=³I,ýþ8FÁaªçE‘¼+‘J. ÆB4 *•,øÓïš*½ïÊŸLŽª•pmó"žrœˆX(ú”EZ!®ãôÅp»'¹áQLš!µ ±W™µ^ýøä½(ânWxûk"éÂK£›f™tÀ‚[×~u'!5Mt»Zìd\ Ìåßp@©HŒ®yu(³Ëc¬[7OÆ;‚˜ …ª!àáb²ˉ•_£[d2/¬ð5}­–n@é ¥¾h- âö·a÷®˜VúÉ,y ä¦v¯ÅNã/ýÎHSŸÏ( &Ïx3ç˜â>ª#ÅBªqcÈ«ùÓ±#Xz¦•䥥rþ0àoÝHʶoÕ½þû[u%ÙÐâ8óèÖ4ñ#-cxaU&;¥H¤F6<ÊC~Ø"~u<8s£tÈ2ÃŒÆ+“[wµ5Ö\(0oGßF ^Ó4Î'oˆKAÂ}óôù `ƒqWsÂÐ'Ûê4•²-[Í ©¤ôM!ÃóõÕ)Ätðz)!µ¦èd[xý–'ÁHA¾H''ɸh®Fýƒ,2u„)˜’¦´FÜ7v;ºJ§ö`x\ŽHÞ°…€ˆP…]¨à€0Ü—¾AùjvÃñß¼­«=Àͬ‘g—å/1UzG <ÒL(š„ÔH&5 óYÑ‹ð;ÿ¯`»‘°;‚òñˆtXÈ9¨`Tâ0XÚ 0÷ÁaLV¬Ä×í@ë‰]f4;dö./@Øý9:°WÊ*jãK®-Ô‹¥¨.)b&š†ñî÷›îN®:Á{/áÓ·åQ.& uÿߎ™ïyÏyS£ÿ9 m]牱uÆÛæ³›=W'k © ‰a;=éAóZ$ÓW'fSܹ¬Ë êö¹=¸ñ´P²‚{ȃòª×25]Aº ¬Ñ±UÎbyîÈìμ<ÁÇZ«6¬è¡ãLJ}dV…rqKxÏO.žÃ±–@ÔÓ'ÑÕ¹´u4€ÁæN÷‹ÝAW¡†påÇ;¯^xl3SCÈ` ÷hàžJOÏO=¨¶ŽÔd‚Ænpoª÷éqˆ³6„¿›xܪ‰³NÃJØ÷çYYk'Šq¿§ÕéeHäLe÷Ò\´w÷þþ\Sû˹gµVÓÊú_Êgoª+—“ªâe|\ôx†-¿G±ËÎG u"ÏzÆ7L0ª %,±•Z%áÆ9ˆ–φ‚S?ÂÙ7Šú!óóŸ`M¨ËO¡ra×ûšF&l½ m-\g,›4@´¥ÖvSÎÛsäÄ XãÚA}ñ1»(ˆI*£®xÙJ?áò›Ù{áTñ’UÂ9ÙD*Iœ³ô­Bp¤¿™eõ(9+¯VK8D Þ ‚Ž \óÑÖÁŽ1Í37I¸68žþ™ÕHÝ ÏC°ÁÖ‡_ R]$|÷ø¡Þ Š1‹Ø6û€$¨Ä*9 y”ðÐth¦EÈb‚`Vìi§¹áÏŲþùxð×m!¨hj)¸}eé›È>Fê~‘¯ûðÿ\h%'8r =ÆÍ¿g+O|©äb3hˆ;I¶ní#G×Íóy»¿è0½Ýè*ø¯²Ã ‹ô@8Ê÷ô®›]`üÐtúŠ”ûctÊ)¥ÅÎ–Õ l©®*ËÈ–xb?•à1ëvù溈c•K“鞬dkDÚëèN¦ÏhëÐ)Î|¶V0Ôç|sëØÎÛÌ®1›²;±Ä4 °F 5ûmcÕ½…|†;=£”¨È`b|ó'ˆò9&jß[ÓœdàÌ+ŽàN!2‰¨_±V ÛU‘'·]EPyäòU·bÓ‘–¦Ë·$yÕÍ ³ÅɱùÁF^qÍpWvÿNÛí"Ðb`ÖCn”ª½»øìq¹-îh˜÷ËÓ÷)ú Hì_*n.¾êþ 4lP€ô½Ÿô”\5Nü¿å‡œ*4µ[šüs}ßYëñRŠÐŠ<˜›à7‘БoIBHUšyZÞ¯!ÏÕê /¸bñ>ªèMApIJÇ»jvuL‚hi´œ¯L:.y¦ÂnÁ#0oVÉ¡lÀ‹\[f†‰×vÇtÂ Ú ©§/®W™Rvõ³U§þ"e™»<‡ O ‡†'Ý’vÍ §ölôø´ÿ’¸Qhùb{ýʉ´³Jf› !  °7Tô8ëgdº8jÕy^a‚ÃÔÐ=TÕ1ôlÕH4!S¯Y¸P‡ò ®ñ!#aßì, š6öG°BQón׆çÔ½Tø5‰ûµ„˽ðL~ŸÆæ“¦ÂV ¶Mà&xQ-§MÏìÛ9Ÿ4,J±ƒ®•˜êNÖ?LLi<Š‹ð¡ÉÁÈT4:à ׌&:gÓÇž¥õöï-“!%¯;V*^+FRˆ° GÃì>hÀðuÍÀ·íºÉgI-—ÉÍ&{9 lôg§c`/(¾üFÙ«G£gf¶A˜Íhe¬vzë§ŒÚwÁÝTK­²b÷¾¥W]ìc€,u·Íààc~Tò!÷æ¾o+ÜB¿‡³2ÿ‘yóìí£+Œq×/µ¼nžE™uŠR0­#ÜÄtìÞñõ{ªOGÅH5(òx[ÖÂq#Æ–Ç:2æQª>nzå$EÁBCB04WûÿÎ.¸T;íwüùœ£—‰õ¤±ê¿‰©ø%§wÛÍf€À¾Á„á„yCá…çÚ1ÊÇoÊ-f à1!À´Ì>´€µ Zñ ÑÎtŽ T?–yÀø¶Ãç6ô‘®‘'ø@-ÇŸ,18(c Õ×ß-k´§sóùϰfÓ u@†5Z.hF+Þ@ !yÒ!@´V3¼0¸š¨sD€cÄN_ŸÏÃ# cXÚÓ-R¶•'À_ V`lS”yLcuù¥r´‘ýÃO€‡š v(<ÂÎZšÀö_=±‡1¡TÁÂ`0Í BÕýÓŒ”!}N7xóªÑ}WŒˆÐ¡ZÙ‘&#Ñ|¯Ðy]Fƒ¦¹º…´Üþc_µŠ2YMØíð‹‘—ù`Å˽|us{õ ŠŽÿ,(,=@Œ ¹™˜Øh<‹Z/‰§•Š¢m¢íêó\5%åŽÿózúLËs¤üFƒ§ÅGߺ¤fp¦ ‘’ÛQ]ï<(…þÞDL×d>»IT UŽKÝ’ÐÙ׈Ë7‹”Ö{žr̲‚ @ÚÜFì¢0¾ËrFoŠô.))‘œõgw6pª\\€¨ã3q£ZGs—ø[©òôä$ƃ%ì cV56Qx Cuç.üÁ\ê9 ø¬”÷Ý]²Ng¢Ã"¤­¨àxq¦ŸG8?¿“`·Ä+?kõsVOKÙÖ¢F2•k:¡3m;ÊHCZ=øš'ßýßûã’Ë)­³²‘°:nˆJ|õ4htïRm½{­±t|i¿=‘æ¶Æí¸ËÇbù~Ar’g!-¢ž…YWS0±þÜtÿíüç“S}µëå² ½Ýt Ï‹ D>AÑ”ñ¡¤\ÖÐŒ÷nS¸(%ÿ϶ø˜ù«ª˜h/¤’`ˆr—ó¼ô÷y3M;è–ˆ$W3—Cq?ç†ÿy½ñ÷:9ézÚcñ ”©gR£WSÔvDêM,ÓÁ›OŒR½\M‡áEæÚõº¿Gškg{"Ê¥ämýÏäY@0Àü^n» .ZôHg‡IÅSÕT_‰ŠVÆÉ™èÙÈ9¡ßÜžï@ìwßÀçð`Æñ øÝeÿ‡w®×òºÆÿ¿ú-Û»ÞxY…Žw›N,O¾DßH®Á‚½†³Á¹2f}Øòñ±ƒWþýÕCäÓz+ýFY9Ia«{x?Y=%;Óäž¿çjT–öM»+O;$•íD3÷”1r!SAlµ”B8¬ž!/ˆgã, ,•»e5‡C¡ø}JZá—°fJicüc‘!Òð­"²‹þ[ïb©Ù*IŸXSduT5à IgXyNª¨;㌆†t>–GÎmÕ‘¹íFD”(ÄyòÍ;Ù˜ È÷ Ÿ,F{ÌÖÎ êo¨c…®Ý½”7˜Ó’÷.nðV„z­âw›¨G8BRMAZ†Š¹PTá¾ö~`诶òP¨d’•5^ÞÞ¢+‰ŽÃoýæ÷øËJ‡•ËK4²N¤AóY\¾ïá\÷£(JfOz³u(³iCš¦Þq?'‚p¡ŽW¸ÏáÝ´H!ŽÔ©{k—\£·‰¬–œö9“CTN*”jŽÕó­Ûð›<¤ö3×YhÝ®ß]\ë­™²é¹^^dWïf¯îeZ2k˜Ñ×v @î¬ò9„PÔÄú)×éõ­ÄÈ—Á"騔€ûòÖªt±¡¤ÖÝ;ÛÆO,È!pŒ”Æ/ ê«À%ûAâHW¦:fýÚêÍt¿®,Íc{5yÍtH¶ÌäÚäc7^ o ºPé&‰HîÝã3¼—aÉ¿…Q]Nü¼yFß ¶Î×{Éõ›\öý_¨Ã§¥©öäo7ÌêK´Éþ¬^•p=ŸCÄVZ;Ø€öÀ½Gþ½wwj«šï{Ú9Ÿ¤rËl&?¶îïZ47¢™K7 »(µý-. ¥ðxÏÐõö¯R¶)uæÖ ù.þ L¥g"ÕìΜ¨HÐs{ÌV›ýÄ(¨è0;ôÒ&7¦Ž]þ35Æ@éÃ`³ž‰°‹ÝWà ]1NY±^qõjŒÉI´@ä AÔo4€¾_n¹Ó¢¸}Kܰè2‰ËRk J¨l¶¼Žõ}÷ÇAäïÿ­û²9k'Î©ÆæGu̙а»:÷ÌZ-®ý™ºq ©ƒ‚ËÔHQZ«|ŒÂ©Ž…qÜäþZ-üú±Ù~HâÖ#›¬CâyÖíâæÖRbWed»›XÓSõ­ªCÈ÷°ÉC`d#cœý·ù7NËØJíõ¤Ó}œyy›×®QR®Þ»»1rޏUÍQrƒHñÂ^¼Ru·tý‚q°‘CVç:_÷õØëxÝ÷‹‡%»æLÇð¨C™¹£ùòsh¾k׬ ÀŸä×SÙÝ]¯>U…od¼6ìš#øÙu]&YÏ·ÑÛP:œ¹—°žÐ­jC/ ™Ž2¬ÔA›˜ ­ÅíöB "㦋¨Fr¤y)ÐÞku“úsE¨eê#ÒaO5Ö[­ g†*3£þé1£$†6—åÑmy5Q9àþ§ ¶0Ö†3]¡è×útÔG¥¤Û=Ü,ûÆWD„ŸðÜù³¿síH†NÞ‚ÿôKl;lV«ÇTy=ºø“ºÎc»šLÕïR¶òÆ öé@†Óo§*ÇjÿMÚÙ`JŒ?£è×jʦŢ¼}»z|^uÚÂý0ˆ‡Á‰ÔLê¹_΂—cÌJN¥ k5ÜÕ(M|\aPHî*~ƒ4Ù‚±eØ|¤…NLÖqòÿõA‡¬V‡r5ªs”PÊҾǷ%ö_áfóŠŸ•”ÕhRXù0GeaÈq)y»çÌU¾“É÷ÂIlºð±‘l03¼üŒãÚ²z?t|-ü»uár5mnšÿ{·™') DË,E'†]ëØa¾¶ÓOiVõ±ø/([`©Rµ‡‡øA$`WU6¡§v­CX:ð¶ V>•¦ÞÂtL†’÷Ù=îÔ= ÷WõNí —pò{ö\g^õl¡Wqš¾§ýáË~4ßÎfßGæèq/xû_„[å4©Èº§Ûk™/°Ñj¢î—Úå‹LË€+ìçµ27h'Ú^sû?[ËM«ÜËé^^†«$½|Â…ÄWý«qÛè6UÑ-p¯ Ÿgš93m=b†LP+l\Ô0tx?ZC·fH¸¦Qt× Ÿ³‹£»Ë—ë-Ì”v» q¸r$ZÕ%Rž Õ§Žyljf%÷†µNT÷^òOÍû¦…÷y#‡k÷¯ÿñØóâ‚Ò~Ã+TÏ ’'ngåK¿R¤˜K±ÉõèìÛ•Z Óôª^ Bƒ)¥¥¡j?k·€[)9ZßQgÁÕ°§ þÜX÷“(?Á_™«Këpö>ý‚YÝZzκÁ›µâìËfòÚpaª^ï½>H¬!´R:C5ªÙ•*dêë:@nOB¨Ïoñ»7ÈF,÷ž_"jl5«ÜÚh\ʼâ-N‡xÕñ´‹vóê¼'lÈ…±‘ý‡5¤N=ºX»Ç­ùúm§w_¹£Ì.tû–Xí€_“\¸ëL4E— z|•ø zÜ~VX>ã8n31õÉõcGR£Ë8™wô šp…}LàxìDé\ëþÅS!Ó@ãÔ,+¯JûyTl]®ûí²„bÑ66žÁà²:¤_1ÇŠðhп’¹Zj]VkæŸÈªÚ_µ";OŠAá[uþhXä‰?jµŒ@w³½%¥.¥¨KcA¼ÝÄÅt?ÙáÍó:‘nßnÖ,}ÔìÈ’Œ™ªBàð¥ÔMÇÑÑÊTÞs )Èb¹rÛìsï®k·ƒ±ÃJß-¥³§]Èáb*˱ÏsFzM-ñ ˪qÚ4¸À Oþéx©(§dý÷›ÓÀ)0 íÕtþ:Ü31€3¦\|YÑ$·ª‹G,f‚XBân;IôéH Ìi²« Š{9ŸnÖ;¾Ã…ÎÐ@ž~7ãþ>ï÷ž™VqÍ4n ©>SÝ<`Á•gi2yœqÄ|vï]ëɦ+5Ú¡ªBÓƒ­-–uÛzˆIÈ(w+?,£»”÷ýå>ˆ»†­5«Ãcðƒ_q’5Ó—nÅ\ü¯€âé‡6®býÔ®—zwò­X:[Ö¬¯“¼‘“[êxo-RI§¼]‘Ò¡e¹ †À üÁŸ‚§ÉQB[<Y¦—U•0aãþ 3ÊšÚC21ƒ Ý©syî^ʲˉçbŠè&¿¼¡ÇüvJóçõqôÚ<#Ÿ3 eWeáT·,VE¤“[E¼߃ô‘ zìÄ7ÀB-(ÑP\à“‘úü¬õçÕÖ;ÜäDì ¦Gbô›{]Øì®:¦ÉRà­ì|™‘ÉÿŠM,^g½G¡9ùc–ï+U}²ö«³%¹Ê m··[çO *@”5È¥®Êš[ 3Ђrv«<3©ƒ†Ó\:y‘ñ¡0 f]^ó¨h¢®M{,}<Á—{]"1%áøIΚò`©Yëèßbz/œ»š°O0»Xz^w—ŒÔ´÷BÄï5!Û#ÑG/4³Êz¬•D•å/¹-[˜3ŸLÏï?çjÆ¥ÊÉÙÒÉ6\ç5òP™|mõF¬çÞÿ!g˜ý01<¬Åü,Ú;»Ê¡?µ”eƒwO^£]›ß…ßñûîÖæ˜,ù¼‚­d¤ÝW;›×Û‹½Å:ûXÔîƒÉU¨‘/2ôÝØ-É^˜UÀ}=ªáäkäOÐŽž1«ëD„´0B©6<ŒeQРeeÜ“"¿-Ãçùäñ¨MäžË¾ŽCÇ{ÉÛ]@2Þš¡ =¦‰Á¸ÚRžï¨bdˆ†ÞQƒ}\@-Ä)_/|wùe”×E A^óû'ÿ^Øûšÿ¿îÇ¿6ü®cŠã xî*¾×¥°z]°‚Ú©?i¨ßÝ—Þ•â¤ó9/|_y²³1B/ëIW ›‚’( ßõºV¬x1&¢| Ð_i USf ¥Y¯¦X}““ÝëÏ…TêûNÎgb#õ.Ö:ØüZû>oöcƒo,aŸ–ßµ‚JI¤ÄN­V:ÜŸÑ|X8üúR—3î!W®ã‡'ß `ü„{{­xÚ9У”èØDæýÛZZ²™Çà‘*[!ŽƒóÜn.º_ŒW@ƽ™OøÊǸýΛ¨{<’Î>Ê…mÔÎ)öÈ …h«6P^75Ew¾=09ê&•!FÂð²ôh䢈ÄìZg§¨ª¡³û\ê °™ÉÌj1å ¦áÈŠÌ¥î. ·™ñB>ŽBÅŸ¦o«$"į'ÿ¿-QœVzµ¸èÁËU˜F²£;³a9¬ñx=wz í4¤¼7.˜wT•˜,ÊÆ póþ­ÉìaÛhx»ä†.•<&‹³0ÚâCOüNÎ>%yÐLèþuÜ\v@«;€l'2‹’)ã£m‘ž:æIkßËÿù¸ÕÙíúÒ*'CnUÚôƒÃô-"yN覂°»fÓ„agÔZÉZ¥Þ-žõ½nÖó˜¸ö¥øu:øu2ù·1JŒ/¿ùkÿútÁë2IÌ,Óƒ}Ïø3UÁÃI„{¦Ò’à–6´+긑Õ¸8sfhWµ²²íÿKˆ¾ýáìûä× Í)Wßù5×…òMÆ©Ùê±&¸Á¶Š`Ý{iì÷ÜxlqÅ&m „-ôé—¹‡v·r`ÏN‹KÜø?ta ‰|笜5M3ƒ\/ÑîjÖ%˜ÛqhÃKÚwö¬ûù•ß]®$Îß³Îf16ñ úH%ú³z¡Ç.÷W¿“T”ºï-¢V°ÜÅÇ™QÁ`ô•,·¸ÿÄObCœÚ¼Ÿ¢R‘üwsÈYa;VM¼~ÝXÝlVFÜb ÞckO0µ¬ 6D'ûY½a’¨cþ°’ ¹`M,®›%_éÿ«®‡ ‡’/Š9Å+ªÇcai] ÄØx{ “…fEGg… Päïœ(B…l抋iS>ÿ‰î5ånµ•wv`…ð)€' «Äë{ÞÞæ±­Æ´zö §¢äàÝDÕó¾„á0Üs;¦0‡[ŒòžÐ¤<øÿ,{ÆsÛÅ!nm&x ÏjqåçÜsá¤^‡…% Ñ\Zj|kÂrjb¤‘Dízx¤0CÑGAƒF2F ¸´ÈSê„[Ò$ê[B¥Å0H‹G& 4tÑ÷^ô˜»™;oô11¸‹âú2å8ĘL½ý|Ñ ?=iD`¤`„"Œ Bˆö„E|Û<'WlÀ ’Pèä¥~ùªq “¤5D;îëÆù§¢Ç1ÀÇËÅ2Ðx;ÛM¿Ù5°–.Ï&“Úï´6"B!º­„i) È$ŠÆB¢³[@ñéÅ)ß–râþh›(·³bÀ0¶~=Ê@q"^ã­  ä 1 H„ ©sB$Þ( bhúDA,4Ò¥¤ ÑE#tA4Q–!d‚œ¸#byCï‚H‘Š   e‹¨ªï¥ˆë䃢¼W©JY@¼U.’€ãÏ„VÀE±@¸ˆ*‰DXDö+Œa@‚ª ÁAKK1UÐEâLQE. ƒ|$Rà ªUDO‰¢"y‘(ˆ  `H† M×€íGÙËíÒùìô˜,žÃ3|©Í’0ái,Ž>OA¨h h^èò-*Fþ•­” DœóS~Wí$Á\ÔÇŠ©9 ü„`ÉùÖÇlJÔ†q„9[Ñi—ì°Æ%~]® †'`sö¢!)ñ“N± Ïh¦€õi ­ð™övÇXcC#r'v=éTbƒò7ÕVàÜ¢¿å9d/iý"åúth.—E—´áNÑ{þN1&érý¡‡Œ²ZÅbˆä‡‡|mM" 2Y£\ÕÚE7é5`\ Û.î¤ÐZ‹Ö)Èæ€R÷¿C€·RKÙEFKÅ:€{ÉÏ63F$2u(8®^…Àæ§Á“«^$FéÿV¡ASA›Ð1´{¸©)²åÓÙÑ«×1æ?¼†‚!D!m˜ïð°¢ô4Ÿ&¬æ…`²p¤/s³}{Lù+g·Ýª!x¦æör¯¦o~ÉU«]k FHü˜”ó^Tëÿj­˜5P‘DÉ‚ ˆ1at1ÈTd ¥‘ 2ï¼Å+æ@ºzd‰Ú×åaör¯2¦;Ùm~u};eo{/eAOœqi>ÝûŒc0êkÃ,ØÅ\ô.a"BHHè`T„'èOõÊÒþF€;ó¤t!¨È°htô§­íãÑS©‰½ÃIb© !¼D)ŠZŠ„¨”HE„˜õPqF‹¨‰P*! s±Ë»@b›:½¥3(àQàž@|Ÿ¼f`ÌÑí䃳þÓ»µz¸‚`„ QÈP}Ï(iE cBBè]„-ñ ØÅÏÝ>)S´² %k·î×Í÷¡ß’ rs~´äÑ¡^ׯcù(×0Kȇµq–aUk«Ónw]áàã6!p‹#LðóPâ‚dÀ÷Vß^†—¬†‹g¸Œa¢[}שuÅ›¼4ƒÃüÐëØ”Ð à¼¡ôð}•ÚkÍó¨uÌ5ÆÓ¥*é~{ôt• áIB*ÚÑéÇb“±:×^ÿChé&1¦8öpŽ­ÂÈÈÐôiäÆPñ‚%J›v6RwùØÎ6ÎT­Ì¹îÛ(úðo<›<Ì'¹Ô ØaÀö¸}.£²ª7œSW+}õ+TøÌÅÙ¸0Ÿ [c!ä,˜89¿¼øÉÝ1HŽÌð éršàBÝ$@f™‰ÔÒiäo¬^¦äùGHÕ¬¦Ö$H¾´Êc¯¿¸Š%ÔË¥Ÿßì'ÍÈ[C=#Eàe‚^u(C‘†k1EC[X½ì\o¾Ù؃ýÞл›Z³@D2,­Â!ÏП{MäÝSWRï/¹aŠý2E­ÉbîùX<[Ú†ƒ‰Š ]~3 êԲܗ!ë 86f„“šO'×§ùsO’HŽ—= 6žë´röCw¬æ£–ìAûùícÆCÉc…ß— 'mµbµ '‰á›Bƒ~Š ïà &` r-ëÿ8("odAJCý±…¬oG|Ö\—HªùŠ É2šÌ@[€6ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÕø½ßog·—®ì;Ußwo{Ü}·]öÛÞ2ÝÙ×µ«N÷9¾Ý»®ínîí¾Ó'ÓÞûÚ®ÝÏoUk{»s½}iß}·½½Ü»ÝîóÝíöß=òží§[Þû{¢*A3A©„z›I§¤Ñ„Ú?Ce&É ÔòdÊžÐdjzz¦b`™I‘¡6š4ž&ƒL ž#Òf¦“4ƦmFÓÓI‰´ÓFšbhˆÑ¨ETÀ›DÆ„`5?Q”ö‰£©þ§©èŒ(ÄÈi¦LC##› §¢=TóF$ôõ22a¡ ˜dŒÄôÄѨ0&L“FM6¦Sõ4Ôõ='“PªBy&ÔÆš4hÕ=¦‚m*oLž”ñ0&h˜L)”öMO&ÓDɴРL 4Ñ¡¦‚2§é§¢›M§ Æ f€SGêdŠliG‚4aLL$ò¡Uši4djyªŸ¦©ì Ð424!”ÌC&MM´Ÿ¤ýSєؓÈa4›i‰2y4É…7¤ÔòjŸª{M ôj§éƒMM§„'OMSõB*@ÓLÔѦSdÉ¡£M)ú4 ŠzhÉèšjx†SÑé4žA©á1¦€Ó&ŒO)é¦ÂÆOBi‰èG´š›žŠyLhi©˜L„ð@ôH$”€€ ÑOÕ=”ôhÈOM Tô“O&©åQíSÅ4ü”zž4›DGåGé§êŸª~“4ÒÒž$õ6i4G”ðÈSÊl§”ü£FhMOIúM1‰§´£É?JFše<(Ù1LJfÇgÐ… z%@ÞäÇQk1ÔÙ[ï!0C F•D‰/##|KóiƒÁàÃ’¨þ'!AgÊ¢ ƒ`  aIQðøa† ¼7ÄÔuÄ-u3z’ço,ûÍ?‹§u+ÜõHOrÿ§ Ó•ž—ÛìÓ­NÚ5é—·Æ+.·Í5=[¡Â4¼¬rKjÃÝá|0bƒÕ¦ߥˆíBѶóº÷’âÀ—s˜?\u\²t2£m?¹øý“´ZÜòX›%6:é»Íÿ¿òº·:åE ôaÚa÷¢Úµ ×ßcrÄÖ Ö¹“íØÑÞ6/ËÔmJì4ü” Î,£R5¶¥¬±—Ökàð|wêç¿cO¨ ןŠõ¡ïû‰Ã©Ý=or“œ+T>G áÆïÊ_ëÔÇûCV:­ÇÓåAR¤ôò>C‰NÐàpP‚a uºÕ.n`3Žüáé°$˜"Ìm»$„$£ ^ÈXQ€2@¯ !„À˜L±Ò ÁˆpDù ':v0ÀÃïj=+¸€è‚$ 'C(!Øn‡Bt…!Oˆ‚²4b(`"MÉ:4ä)1^F¬ƒ$pQBö²þn‚Q$$v1—ä—³õœ!Ø2!Ï=s¾Y@!¶c$&>4$Ñ4VBa’)˜òXAû³8eÈ÷<Àa,sK0…¿c[Ì¡tm´87ã° ŸÇW­`$$!¯£!ð®ƒÅ £:ì¨a¹…2=ËËÁ19‘„ç9wTÏgàìæºÑ0/f?TèÁFyƒË´÷¢$€ãZöI8Ī8èoHfeIÆÌ ÈF‰ÆLÈLÌÀÃ!Ó!:q%k~f0 ¹µ;ø9ÛÍ3ð>¥½GwË¥íVqúY ~®û?Ûs³ãzµÃ±$° 僄òÏÚá=Òp ¸¡‰ËJ4{âSëwwé˜ay†Ã] ÿò¼¢6Rœ½ïä¾,_™G/‡€f5¼Íwö½€V™gE£„T ?=Øð&Ç‹¯v)]º6C*1×Áï’Ë·D X3° ZE'Ru×ltmœ7ŒÍ¬è Ô35øWø‡Rn µ;Ð íèB»È/[Û.Ø•_ÆÍ‡ã‡q M£p4`] {ò7!!ìl±´of³jê:‚œ·Þv¾W'ŠÄVè(0ǘ ‘„ÃàÁ»,x31]ßN½ß‚y<7&ÙÒÁ‚p2=;:4@Uv0–RÀ¡ ¬W¸(œ§ÞÍFÐ3Æï¾1‰€à|@,LB"RËÙúG7Y»u ÿ[Ä¢œÂ´§gª†/:ä®)Ãåùå¾N£WÓö¥ö%—k€twÐÌßgGI'çÑt¼'½\=}dÂ@’–`O¨g¦Â!4öÓýŠx‡g±ygˆvŒÖ{‹°€UhǺ&ÄÉŽHùé,sMÔöÝÎjcz÷>8²0o¬õµÊÌ­læªâÂÊgQÏÛ¤xlV|¾ÙÊÄ^Ocëü߀féÅr/¼2‘ôÇ©~æ®ÔV=²J·Õ}Õ÷¼ÿ~66˜eOcº‚|‰”ب¨ Ä—ŠbcT1)Õ–-߯Û%F8)l¯™X¢SÓåþ¨¾®_uxÛÀ2ùgu:œäßz”¦Èc¼]锥 Ö Ð1$ÈŽH¿2KŠÈ{M ¹`Ä06ˆE+ ãìƒ|ÂöX0¶l—ÂÈFe”PÒLU²ün$V¿°‹óôÈú.Œ¾“o‘ëÚPZØÜFËçx³ùÊ’|¯½¯EÆðS÷Õd}Rúg¸és-ú ÓJôe5šãöéb›ØxSNÔ»§+äxºÔèrÀÇDpíyÄ,~~ÿ˜;êAûüÚ¾ÕÇ]¦ÇÀ#On²¬GÄeK 8Õg>Õw„Ÿ€êžø8Ë„  ½,¸î.aÑ{þÍ¥³(>ð°<Ô@6§¾-ëâ/þ‡ qŸ` Ô‚Mi’•®_$v*•褞Ežw¸]yVŠA ]Z7æñXBX­9†iôDF†ÇD1qj¶êV{-2ºRq¿­E÷Œ‚}¶ˆÕ¥b%¦NžFñÖ<·†š%û'åy!\ôÚÐó ëcÎcØ16§û“^ðç"ÿî !ïé.Ï*¯i¿“ì«&í€[Mÿ7á cìå¢ç¤¶‰€r`LÄ#ãLïA¾6ÊÛó£z-­r¨XWº°6<º£ñtöÛ³xjªA£zõ£þ–<9fê §˜˜7Ï24ª‘â¾tL¸¬7ÆÁ¥ŸâØë cûÝÛm(Ž×°5T®$<·À ¤NHš é.N= åØ$m$›~—Ê€!þpó ({²š©™á@D0ÁêQñír6G+æ9Ŝـ8…‚‰Ÿ¨¨PÜõéˆ*‘ËCŒar†`+ò’9 ËÂg"ámIWu£­½êØ";é`öœˆvâ> ÔW¥¿…ÈÕÓîo£™z$S2¼ýƒ;‚ºæŒj®„ŠöDTfÅKeåóvÍQºw*tæVQ–܈öóEÒǦ% ñÒäMó./ò,5ûz“N¥u콡ÆT÷ÒIüY~QâL| ~WXç©bÿ¹¥Óé<3T±ÿÊó¥e<uR|üJ*h 0ìðm±l"¼µix;ë`_,«­õzž}ߊhæÈJ‰ä8®{*ºÏç 5s ÑÝM5æÂ'¼ ;aO5Å㈯ŸÛs:¥@:e3æßèøËl!ûO.=DndÿhãjoÈ].çzèPDdVÚ ˆæÓ)~$s#êuØc—4Â9– œP¯­ö"‘ì³[Eéð ÕÌ/°û†õ­÷Fý‹ªâ$rügNTÞ;Òf¬ ”ùp?Ú¯Z$‘ø4€0²‹à¶[®3#¨Ô­ºŠ‡°¬­ŠÎ O[ÙÉxµÓ¬ØüzYäܸÊ4 é–kgecº”5§È ꨩ¯Y ëôθ}Í1ST¢ëß]ð§úuóúUJp@z~RÍm~¦ŒÙö©µeïÖßN5¡êôL}gŠÇó:ÿ÷ín¨¢YX)=E×ö¥•íÁ ú»uxð¶eµ?´¸{ç;ú#E`NøeáS(6Ò¹„§¸Ú‘yڦϫ Î9ªêŽ ®Ÿâl>Ú½¾ÓΕË ö†0‰? ¯¯Ó4´äeþHd®Ì -£E|:öBdŒ÷ÓŒrÃ)öª´Ãþ:÷¤Ò»(Xb5_Ü–€"›’°¦\ñ¬ÌµR‘JÒœ+ÉDSW5Qð=nº%Œ'ÏM;oÞŠêÈãµ;# Éj5¡nDQ‹ Ò57ÒýÝ®ÖøJ+DñìôC©‘_ÑgS\à£oòíÊÊRܧÉY8ºû(@›b,’@ò©…8Š&7 B¦2_‰;F² |Ž5F5ƒ¡Ëvo½®ë•°^$ëÈ&2úòˆó|“ðI‹w‹^@b§X%‹3²+F”íÿß×V›¤}‰h¥Û&—]™áÝç‹?V²{E[V9V&ájfúè·?’}6ÿ­¾S»·þ¿õŒNšŠð®«+žŠÉ¢õÄNGut=  Eó ÉÔ°Ì- kW˜æx£¤xsÎQúG.l4%.#¿³­ ±.SÑj£Cóa)\up·± u`ÆbûÒÁ¡ßJªœÂØœiZ‡[Úô©¦) ¹´qJ«¼±9¨³B>› …È«æ·-‡¸¯ÆuÌÜâ¸ù»Ó]'2ïcyŸÝÁ}Å1 TÉþ¶(»Ýi6‚tŽ®˜ÇsTžìå¥r,Ö9Þ»•ºxÛÞ^»‘œŸß ?<»,8Kl’»',º€›]úK·½Z@©­~Y½ê9È1Î5§PÃaŠ]¸…ÉX¥|bjiŽ÷­`Ú/Û+“.¡ùL%e}‡Ï;èduƒvk5ânÎ7?ÐK›ÝÐÕuF—#Þó!¼:L¾ÁâV{€Ü‰Wö?ýB120h‰8^Eó¥çÿñû9"³g™nÿ¨ån$äbѧæ¼Äy…AÆÕ7ïƒÞigxV=Z‰"ÊQ2ö1ù(¢ä€C*%‘î4œ¾•×aêæ~Ä£¯ðïø¨”^`|c½ãÑ2نޫο2mH´·Anùç>é!ÊUm!2;Než^=#ä,ÿ„GA[j7 €‡mÈÖ°Ö›Åtþ˜ütމ!làm—?€fFi/¦@Äõ2HÛ²î[ÄŠæ%›wvïÕs¾º\ ½=u™tÞu¯áùΚRÊ_‚Ëh4Ä¿ª" a qã½úµßódúÅLBë«9 À‰Œ ×x=[MÍ‘>XÿЈ”Þsôê²Ûö×m®±S6càû8hšb~Å$ü²5•¯âÆ]§_Õàs Qm!ùºu²þÖãx‘E’L©.Þ <Î_â‡E>áì ˜W9RýåKƈÎâüäZÝWÕè(lAgÃS ]¾CÊSÇ9JÚIÌÍþ‹·(‡àÏï‘;Å8…)—x»g‘döI-•Á¿Á†¦Bcõ%xž¹=³nÒƒs‘)vàèbc 'ám@Ã=1A=D*« ka™1áÈœÁ41CÆ-=‘—• öê&ëð½ZºÃÝñ,¿a‘á™I½(åÈ&ä‘ܨ±‘c›ì3*Æ{nâx§>ÞË®zw?‹T/I1³¿”GýIÖšÊñR€’«C*ª6²¼!lè4ü¬±6q-7¦ZûZ—0.);L›~73©²¿©n ìÁ²®Qz±=™1SnÅÛ)Z+=Ùg.Ÿõ¨©…Q?³æb¶××ßê;H;ûÎÝ{Fã:JGŽŽLðùùkAè>ª~µ¶Ä²öÂ~Ï`tA¢þ©J#èä‘’»»Ç“#&ÎÙ Óà†Jö$rßbE™ÏDúˆ´¶ï w4:ð\VRÙŠ‘ÏFë¥z&HäíÉœ¬R87n™mGZœ¢ŠÔRjU°›ðúéÊâü°b…•€³¤ã#P4eÆ>Ûf2z3¬ššú±Ç)â=LD]ýÎqWþm­µ?»â÷zoCg.¼¯PGŒv ‚Ð ø˜›ã£OéQHwãht×þ¬Ðx鬕\¼¬ 𠈮ӈÝ?Ùá–söÀb÷’3UqÏæ*ă¬Y›!ÂïƒemîÃYüyånÈ)Í ØBZq1ÆàÙ8e&õºÊa›Ù=™<¨:ûÐt¢5¸˜5[W\̬‘mo®»†‘„åb¹Gß;¦X b]@H}äqžœkQ‘ïrŽ OJ%`¥i@ámBAÚ}-gµc±8ºehË<r 09× :Îu @Âð—:š]`÷|Ce¿ ‘ Åk®fšé^6ÿ‘ŸÒÔ}åo.lu µŒI÷ਠ€–ÞV‘E/^z£ã„sÓ”8 Õ 5%=Ý^†šsIæ2êÞ.u8`N™Ò,no–náPíöý1P„®ˆG@–ç!ÔbÞE9`ôIJb#®Äp¤ˆO°Qº)ö‘µùì Gs³ø»: l½uÔ^.ÆNëùa¤·\Ôôø á²­…ZU½±Yc¬›sËûòzÆ2åŽ=Ô”]+q¼úG]¶sv?ƹaE¸jز0àÉ£v`9øÛïíäûÐÏí0p{ÙÛ°:™ï†ÏðÇ„ùÂP²8ýcÐû….ÊÄ% p c‘t)HÚ0NCœ>é- »”DM¦Þj )@$CeÝ®j(_8vm¬";sFP¹>ň°~@@Æ-¿ÇÕ>Á¡<ÌÜ3•£ýéÑ…0Òä09ñ”fÀP~2ƒVÅìÚ3ƒ(ï"ÒÝqi®ÔÎWx*FúÔ¸+1h¥s\ÿ9Üñ䈱X¤˜)…ZVy߃ êó§~¿CÜâÂv8Ó6Jx³Q&õ æçSG(¥_Ë``ë?«oµ×î'ÞóØ…$• þÁÈ.ðؼL ä}Ò÷Pf¹N†>džLiǯyb­ Ç›¶®cˆúEî<è$ò„¥¨HA‚.”ï_1YÊ»(ùÊÔåB@¬RöIr¶õés'ÉïŠáÂú=|_7eÂÓò4²ñu;^ [Š¿HÊÁõ7`€~æ–žv_†ûÖÍ<·ÎJÅM’¢›àJ÷½·²à€ 6ŽŽ3æ½[ìå;ùì&û=öôÖP7Q²šÈÝ?¿á¬gäù››E±yš¥mý¶‹Üöœ'êz™æ¿Èfþ° ©wœ¾“æÅŸ¿"§*“/É0\Õ¬ÅÒkMf»Ó|ù%\Ûý¦÷¶yëEƒý ·ï9&+Ø\€?@_µ³ýå‹'2&å\Æ'&²tL[¯›[²7qê0ÌYM®/5´‚>âöx \z½Â%dgœSï¸Áý¬©†¿Êy?LŠÉWÀÖ—÷¶ uhœæ+Œ“¶$]Ï 56lTÜgë[µú£ØôÓý´:ö²è–´gzÞC3Qó7nsõñÖ!G«<-ãWd×Eû–’{ u üaìÛ+öÏòOá4¤¬{k›äÿaÒÆÑ$Ë5í–|Öè¯Ô… ÿÌ ¸êü7sœÇ u\OëS´Kób¼±7a„‘ÜCê¢È¥Ú!Ûœò1}QA™`g0ë£MêÔµÝc z[²¢{É,’NN$÷—á®R|š–°°sFn©eóL_Åf=áðQüõn7fÕW‹ß:ú{F‡$¯…£ÊzSã PX¾I× ¾h3«‡äRTŽºÄ­Z‡…XKðÈ›ÎYØác\°‘GÜñdæéŬÕb`‰….90Õ-úW.ÜZèU»¯ÚB] & ± ÉµÈ Ã83œS/|ñömÖRåšæÜÑ›µfFªØ#Ÿ£O¥p®±öÿÍÿHæJÍ<ˆÏêH"¿sObïaö[žã—?aýîg9 jÕ‚xMjË¿K}–uuŸŒ4ˆÕ¼n}Pnó“nlk¶Ò˜2û)-5¿#uý’^àul¾kÕ²é8òÊQ½òˆ‰oƒJr8^r± ½ÇbîÜë&ÚÈ_·¦‹6Z( LIº8±8.+ÑZãÄ >„])A`oÿjò·7ä|š«»dúÄÛ×o&ÖŸÐw”§ÚYcžs*š)(Oçù:ÎE”Ô`øpÅ#—¼?‚©I<Δ½ñî(6ŸdWràÆ@k(5U||s IØŒ+A8Ú²—cØ·dø,7ªL0Ë:£©QÖá{5ã©eë^g^À"}»íƒéªµ‰ÐDÛK]{қ鹯rÙMÿJP)ÅŸ?Ù’¶ÿ;ûBݼ•ŒÌ·Bƒ'›Ï¿Åd[‘t—ð {2Â[Fº$uÊZGÌ[h/'‚‡•ÜÉ®rÏÉêRaÈCô"‡tç™;ÔãðÙX;³€Î1ç³w£çI9z%x ñ0ÚÞ#¡ï)1Fü_*_LB} ¾V™1œÿu†x›Iý5Þ¼Qç‹ùM¡Î¼›YiëNÊûÇL‹6ÍV2ï¼E$Â_Ÿ£UlIæI¦;&·túЙ–ÉÎñ 3ßü Þû˜¨Ó³<<9®Iâíœ)$ ¶Ã^¾““b»[Ô¨éÃaçq`›—{HXÉxZÊzÕ•ÏxÞn ®ßå £cÕ2éÓT¿’.eæË¡ˆAÈWÍ?Î1\æïß!)pͦŠÙ>ëgöU@,ê¶1‘0%%3f;.|çCçq0gÄߺaÁ]Ne˜g"8ÓMnÑ$‹#®@ŒÎëH.æüß AY¸¬ˆÇl'Ïsóȵ‘x‚ŒR»+oÇÛÇnô ”xŒ­5è!ç&ñ>æF劃´¶_Yk{€ô±c§¡R¶ŸöÜSÝÙãôH‘Cê” öÔb‹˜9"XF´Û"'\5Û UýÈH›¦G£9’þõñ Œ®‘6ÐïG± zeeÞÌùÖ¹ƒdú¹3 Z­tZù´ÐˆŒÝ3Î,ôûŒ˜H˜ë2înòJÌìMVCù2&<nñ™´ßÛ^z 7,Jž Ú;ªæR3)¦K5ððT^_t°)»©(6n(§ûäv1÷€ën«4þ®ºïaΞ]ÎäT–t>•í¤¦þ›÷iÑâª/*šy‹dpàÚš>RG¹ý>!Š&Dîq)07#–Øy¶MÜ®{ȃ-š`]{ÉJÃ’‚f5O?0Øla#xÕåÞgO Åk›»d‹]¬¶G¸F{‹`s@‹Î\P»§â†Œp¦äN ;¬«i_R£”ù2мÆÕÎßWغþšÉ& À×åiâs9=":²OCaó’¢’B›cU‚Þn»ïõ9zZ^øqµgîHáuç&Äħ²n‡:à…ú&’=Ç€× üû?cÇý±Váâ1žëé8­*æ©qØßQc|ø Ë\8Nñ‚žÚnˆ´‚K±­›Õ|š’>6 D1ÇZÆÆ8¹¸&<àï¬RCï¥?yJî;E“tx“~ø÷h9xðW† VM„¹&®LEµÐA…ˆ›`×wué뱄ͬ³.6Š €äÏ›’ééÐGû 5!w‚[ºŸ¨ƒük¼Ã¯½XÄÜ}{ðIéñ\ÿ¥5VÎ-`÷p[…]wX¬&ØLoÉmÀ0«´Ð|6ÔN”b£:QQŒ}'ðjÎzð“‚õÀ3tDÔãöYÇȾ/ž÷èÓ?î×´€8HL寇ֻ€H„“Ìš¦'W¢³4°l»-¶’˜Aõ‚ùØi°Òã0²FQ<оôŽZÑëQù[|\òÏËŽ*ä0o8f¢ö[“éF!üPÚ­:É› Aõ·•ߦ…¡¨% *dWcx6u5zÉŠ¸ót¼NïsžãÍÎ_Kòen¬Dæ3G«…Ñ ;Ÿ•ʦ›Í󃳉=eO[2>d'üJAÛjú˜^ç<ð/I½$"ñ…^¦wgMÊÅÓBgc¦t¦fAñ®Û‚Z7öŸa W*.$õ¤‘!jÉÙ°%'àÇŽ-:x9™êæÊÍÌ<8¶Fö²wo C¸lL„I«­råøÿXõ(zpm2ê—ðE¸Ä¡©:™©Š¦6¿ãµ4Â/)¯¹ì™âžýô÷/¿f¢&¶QžúcøíÕrwbÐÞ ­$ІM@cÎ.cr±²÷Ya·uëŒê~ZœOg9Á†³Nª¸&ÁfJ‡…ŠÎlNÐÎJ ­à  ÷fù᱑MÊ©ñJç LÑ–'Id[—•îL¼ÀÍÆwÒ^o‰•¯r×¾É,óÈEvÛ@–cNÕ{N²Ÿß&ÙÆ"¨‡xªŸs .ÿ©l˜«òoŒº»€ÀŒogˆ²J0§ž©b9Ý+±Ú1Ë¥Fwðp9¥üY¯•ºâÃPHŸk±¦~BmÛÕFVf‡É /YáÀÁ;™%Iæ=ãsâʰ΋•R9¦Û¹5}]O){âû5P‘ š!]L”3¯„4`ü©øÎj¾ŒÀãÄ£í’ÙêòÁ±Ë„åQXòG ´d1èP!þú0õÿ• Rs¹—ù4uÞÏ„*dÑ*ÓtÓG”𔂆{U¹¦Æâàæ`|¡hM“Wk/K¥~¿“Z;ÔdyS óÈôþ|tºÕ5éºuÁgˆH.d¬=ðÜ`E\N#°¡šõ¡‡×ÍOTÐ:Ñ^ú ¥ ƒÐm†š·%%2½§ôŸ=ƒ É.^o¿SëúvŽ!D<6?‹=ú.b¡»„Ñ{>æL  ~¬ûø~¤¦Z ZõÜB gÃKõh¼±.èLûKXIË„õ‰©ŸRŠ£äs9®Ñ°.E ½žöÑßÀIØðñÍRbwœHP ¨Ýh½šÎ†³æø‘KC‡áQÏôŸîª˜Ò„ú­\ÎQ½ã2˜dDôm¸ Q »²z{ÿ#öœkab´®îQjó·\14G¿îžvÿ2%]u-l’&KllÍžУ¼*¸{žc¦Â›3åí&·%Ù¤NÜ"!PMýÂgÁí€Häá¹I]ü|>n»Éé5¯N‚üuhs€ ­ O3nUl&ö³6—®ÆÔŸSðű¥Qˆ˜i¸ö\„«WމVÂþÍ¿£|ÃÜ%GIO©Ðÿ¤“)¢l¬~çxµw VÅÀˆ‚µ¹†¤»Mzô³éý'ð: û¥i ãš2ætŠôjúÕÿïòhZ½þŠA%8·¼œ5CsÑýÜlR ˆ.£ aøE6Ú©-‡æŽ#¼e•kx“PU>—cW¢ •=ö1PïÑžÞÛ™FæÙza½çÜÁ+,¹’;Ý«q"ªóžQsš ѧåüNçÝŽuØB:N6í÷Ű%å~‹<Ža6ªtYj#Êø2Ô ä€-ÍÍ„K½q¶þr_3²ã—ODÐÒÄ©àì¡*ô­ïüÆyÞâõ ±>¯¸ß0ÉöšÏ1ûÛ ¦ÀÄ>ÅuœRÍdk®õ=È_Ëî/.'ÏfxÎÄï_—sC²õT°¡;¨¬ü0•Z á±¥jŸÄc¡H]K“‚0j!¡µ­Þ½i-e J©÷sÊ¡ðƒ—1š‰FÃ\›R¡øÄtÅó×qˆM²Ä~©Å¡^.‚®²¢]!¶¾áWœê½c%X´³PD¹zØpicd©¡6òʯ=×zÊK@U ïõƒW€Íg72_{€'º\ÏóÍTéQ|89¶@éc jho¶T½‡öì»’"VÙ¾xÁI´²z»¦DçÅ{»~JFu:£Ð}Û…&@áa¦ÁƒÒn/¡JHmÚÔ¬$*¼=.ª_ èÂÌ)ýo%ä{GëGÎ^G'µvåL‰7«Õ¦*¬n={§ƒ€÷6ÛùSÑl|×.ñÔ§'h’^ŽXT·×r¡bÿ0‡2‡­³<¥$ÌŸ”:À„kθ†2_ÞÇÂSÖkî…1ŸVËt‡¥àw[O˪¸Š{- Ášó9mÏ}øŠ½\úž…Z có »ªÔs¿Óøüȯ7~L5 Ì“žÉÑNŒ©-á7š³øLóHç2‹½.Ñ«¥1 ‚V˲3º© B°h}Rjìщ”ôÀ¬h{LnëÆ-ñÛŸÎ'ó~«‹Èw“šÔßH?öëõxÌ6?‡Û¨óç„„$!¾nßÕ6û-çºD’6¶;›Ú—Uµµå…H“ “µöðx…U>»‘íI«,]Ôƨ–L3å›j÷9ÀùW >"…Û̼º ª… .3˜ç;ІÜw•[Á_ÈO'Ñeõ ÒðJºÎãQ­=éé:‘•uóGÇù°ësÝuWØwÙy¤G]$‚˜V Q>1^Ov5îssp>’ÄXûcx% o!P(ª ˜Ðb¤¨püûŸü]ÉáBAYWLzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3mirror3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.769788429 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3mirror3.dat.0000644016037001603700000006700613607166133035025 0ustar00hutter2hutter200000000000000BZh91AY&SYÚ¡Áwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà:½÷Ü÷×ßò(«f¥QATJGY¢#“i»gml4XÙör}îíER¶ë”kë]÷–}Ý×ßvw·Ùßfw]Üöêšú¶è“ßovçß;K²»ÀõË›ëwº÷yÜÝ[xö÷½yëÍouwžoOk/{Ïy%dios©ßFrì16ÀWV6ÒÚÕk!¦"!Ôy@Ýë{Ã*¡ 0Á ƒ#Óz2)ùi‘ 4z2d2dh4›Dõ0žF zÐÈhÓÄbdÓÄÈi¦&Ð0PeTSÓ˜ñ6“ÐM4b&Ñ'¤Ø 4hÑ£4 “L§ª~™4f¦ÐÓFi“MOÂL§±2SÚ˜SÀÓFŠlSÍ4iSò4h#'¤ò Ê¤Ñ¡d0jzšc@Õ=0Ó! L˜O@ÐÑSÙ0M4˜Éê™B›Ö$ÔŒ·w„µøj¹Èµ™H?—_Á Ç“ÃíÎÔ~îôªšÛ(W"»…O5Õl›W=eÁÒç:Éÿž¶;Ä­[J6ûi´ðRwhÛ»_Çc<‡ãénˆi\ïi[ Ï¸µ¸" ¢öIDE½7l€ðؼG@öOm†D%…xqä"Ý5¡ €j¡çŒ‚ݽŒÊ$ì€>3•/ˆ@d6ƒ¬È•dXŒ®<%1+ˆI€'`y´È™\8R "*Ò‡ž„K L  Z!<(ÌXPiТü €4C¦ ÅÈOU°¬ U¸“êz€ §@Ü¿ ÓÑ"e ßP~@ªeœ|Ö=Ç<BĈl¹,Á‚üLº$ ˆBÝ ñP Èb…2},H5À4¦QëLbaÛ¦f°Ì„4AƒzÀWj[Vb I ÙÙ;Ö°CXÁã¼&ƒˆjX°Ô–€ý¶˜;ÆÈ3!ÈVWàÀ €N‰t(ËrR%ð· ‰Ñh=af\4Ë4±|6ìyðu'tR ¼hä ªêý°ùCµg”+^½½ŽP6—yÍk·|àqF¹ Í W(åóδ_ÖÒ8ô-gÌ7z…EpA»¿\-<4hH_Ê@edìCd/Îq ‡Štf%™M [9ÀªNÚ3¸ƒr¬Iº+Õ’Tóáð,µðsÄŒi¬éÓg"á1oÛ$˜`a\ GPiÝÁEOXcQ5‹lP"„€<‹2. €º ³ÔCÕ|2'÷¹´,¦\×´ã 9JFµ ®-²EƒÞ¡à3Aúä2=³MPľ·f.¨tíƒ(Z¹¦+ñ:·‚Ȇ-þvÔül!bó$à >d‚€‚sµpâÎÐoãvȈ±ÒzãJäÝRÈV¸V¡‘ ¿1šæI§'5{:Óó„Žø˜öžM¤½²°~£º<ƒ|W–He˜Ù¶"Ô-¨cüæú áÜ1èßë+W”¼0®ã•Ý>NÊö†€6@ØXŸK¶ó›Ä9†ú0Ûa Õ/ yªÇÁR4Ar[ b1âM8DN@ü`Àj >,«c -] my÷…oÂŽ·A!õÔÙKÉloz†äy¦™Ï6h|yžÿºàn¬‚¿]øª{T?u®´¶ ôçÐÒ“•ƒ¢0ïÝ‹âƒ9}¤(`H2¹Í‡dÚ74.ƒŸW®WD>[<1=(ÈÄ%ZÀ”W¦/øKÓ*dÒ”PSøøð8 O;©Á8ÑÞÖé%1×ðËU·§ChávTv³ªë_çÛæ ˆY NDºí¹¤$CJÊá+Æf˜ÝY9Psá@¾“gqæ˜ÉHÝŸ\A³ÆœÚóqc¢ènÀ¦)CØ¥ ;Ñ xô¥‹?EƒLŒNPñV±;2áÌ HôÌ\uðe¿çþ*´šÉ´w›çÌn͇§÷n+@åNlÌëuäÐ?é®Ù¹ ¨@ˆOfIB«(&€ˆb…S{÷²Ôíã·Ùgl=¯O`fkGÎî/ާ“RÈAžÑ’ñD×™ÚñL:˶ZÏA¶åq°ø“<&UìŒ?*N¶iú÷xÚ Uú¹ó#AŽòâh©rÂE¡\<ê^Ñ·FÆsŒg €\AM–„Ÿ7‘Yf2^{!ƒqÙ^Ò-üÛX*QØ‹EÅׯÉÎ!6‡õzqàã[CŽ=÷tn ›’ˆ~¼@aa_‘}ç™òš"/¡ÆBCש×3\ƒ¦`ãÁÉ;p¥/hR°C®B ˆAƒÄ Úº)ƒÿl.|£Å½ñL ®vzˆCPûN1Ö5ˆ5|íjTßcŠ…HJ‡%«ùoŽÞµ`‰RÏ`Ô:¹ñ« 啵ѱB  Y?‹˜ È8í5ÛÞü“ÁÚ<$"é›Ë°yD(¾5Cá0èß!Ù·çlNg¶ük»3ôþ\®Ä:éëÁ²zÛT5^¾¯”º³Ãå´-@>î^œ|H›ç §ï—@ÕÉcµ;&ÐNP­Þ—ÜónaNZ¯G˜BUL˜5oyˆ:pwö¾.þÃÝ!òŽJ¡¶ø!‚¶³»Ñî<ƒ~ó±ø­%Í}^€=ù\Å¿|.鯒±{‚NXƒ6‡àÀè½]®XsÒÝéœØ<?Á¥ì2É4Ͷ³–䢒Êu\®¥*q¢å­ÚÌŒòPÒïvÁªKéã«onçè²pvóYJ"¤H+@ø³ç³6Å,£€[Á±U]2úSþÓOÄ+SÁ_«DçÛùê¸ÔQ)ÜÑÈ$ƒÁm H²A¤»^’ .µ%ñÀ×ÝPÙøÝ8­4¬ä÷µI‡swØ?ï3yÑn $R˜2tÜK,%ò ÄJ»5\´“Wï¡’çðýÜf-äDAð|¥¼BX(øßòë%—¤…\é‡QÑ‹/àò¹帨u4²Ù%Ã…£Wð*¹džïÕ½³DK´¼É>JµÈ†;"¶Q€Ö™ò€²Œ˜Q6’r60 ï‚Úç÷ç Ú¥4üë„õKÑÍëö^ÎEħ‰æ+ §šä+u‹OvÊ"h®’ÝÊO?0Ù\´óàä¬*FÞ|dÇR¼¹ @€1j\¢c•ñÃ:挋(`Ú.é¥é†¤3Ç@YîœåدsïÅr‡5ú8³‡×¦†þŤÈ9]t&œ0Í~[Jèco¾ªû_ä2-¡üPTk'+, jõì¥|‘½e²˜Ó~Q¯šÏ*âO†þ®>Í È\ÏŒ;LÿØýeÒö7}ˆ´hsm¿s‡îW«¢;Øžê§ÂôuxŸ\ÈSêÝ÷Úr\ù¢ÞzNýû_úÅêAi¡«Ít‚u“ˆdN; •G¯•‰Ù-Ùþ¨öÄÐÓx˜$šŒ~‡Á‚|ï[´} ¸(] ÝtÖÃ;ð0±ÐEà¥%ØSFm˜”h>&àñöH~Ùàé© µW Ììv¥I±[<- `ÀâþúçÍíÏ…‚ªšÔ—ý4¹°§Z CXHÒVgcòÒ’®#å]j $ßÙá`–-»ÀY:í‡3Jukçû^e¤žïflë6Œä -J}†“4¯ÄíÊTÙ®6G°iÏÒÉjè¢àÆ>o=•4ì'›š2 sÓÀd à™øÔ¢ŠÏ©Ç×­ØVü ïM¨ÿŽ·i°Ž\›úNd«'P*ðšõ<‹7Žú0!µ0dÆe…r¨¾ƒ;¨œVÜqÃÞ)ÀŸ‰¾?C–:#Ü pˆw^}©­X šó ·ŒOa>N© ”Į󀥽¢]^ÃHø139co.É”Áα™9³êlá½cVÝ–ð}-ËK2§õE”<ß b/µ¿AG¢ÀmV ?” )±hfÀÜžèëWüvZåF´ƒþtê zÙ|ô°‚ù`뇨fQ+h@çƒ`î:™(ö؆MI½ G x·ÍóÉl™ ’†æ³Î¿@@”î!’1µ¹€T‹$ƒéƒ5äh:GD<-–ô}W~çýì„YFÍÝú_í§ “ý¯Å@„G‰"¢!R¤9®šP_· 5 ƒZø€ezË4œ™€+î¯ã†ôɱ^UOÃôŽu%Aò¹hi½sÓ»âqßi¼».ý$0W0 ”@B%Õ™yE¬>mÛåη¯‘£Ô+ËñM–·|gÊ}ž‰¹—c¿ÅvvYnÇì2e¹!óÜ2z@dç°vž57—œ!Òºb¡ù¶ÜA(÷¯ü…¾¾Ë7éÑõm¼ Å$:ÓAÌo+àt-Å—È…{­BM·¨X…‰±Þ!óé 4¸¥8ˆü`BÐn„)zÞÂÙ.«*Td…%ÛæÿO³W¹ý»ó+û¹bQÑ0±._¥¡­ák8¿ãkyÄ Ø!ä îË{ï3ÞL“ >ño-ŸöŸ³û„Çÿ¶ß¡”0ÆÌézR¸$?(Eè2·+žÒæ»…®o)HZ5e±vÇßwâ6¨r F qÝÒ•U“̤­ ³TA¥ð?M~¢‰^²t- ö}… ‘NX`G(²,EGÎ*ž?ÃØþ| aÄ‚ afKéQßwÊ’·r% »¼( qéî;Û9jÇ}´tø÷uz.¶v”‚%: 4 ÀPÒ™ñ]Ð3ì%¤ž_ Äñ}M >G?IÇï¾õwÛmò¹Q_Ѷ¹è>°õªÇ&ÒzÒ™²Je ·oÿÂA·ˆÃÍ£Ä&Ù]Íw®—.îr%‡e=0¸IÀnãjõ¿Ïô¥dGg§®½æ£ýzt*ûc@¨5e/‚Øœ”x²Gä[;QÕ(ŠüX.DM…ºAþô‚¯»Žû¦\ëÔg”gºfÙærO1 £’Àe g­HœýK@bEöz 9‡™­ý¤ÃoÍü]®fƧI²ÁöÇð´‹ï=˜LUj»­5.P ò¶?‚í@n0 yÑžRXô(¶ßútዚó!›ñ[‰YJë_-f‘ÎAà^‹ýµÀ²3]D“ÇËbQí&:ûÒçUp­5iû›tpn(òüõ-~=z|D¢ùøÓ!žñ ÅÉ׃ï~=ðØšèÖe(g™¬dÎ0+›-¹¢¾BgèŒqïé½X)`±ÐË”BƒˆG¨¾èrPx p:zž®‹Ë%‡™BJ€ 2…4tð÷à3ŽbFdèA‘%(N‹Âù øÞ­Úñ¸‹—ðhVŒHHo‚ðΆa„Ò;ùrâ@©Äk0 :¯¼ïyâ7‡ßÉ· £ÜõõfTâõ·¬·öt)%ËDUÉ‹Bß7'žjvª (ÇÚÅÕ.ÕËÿLCœ¢éƒÃúu{cŽåù+×Y‘úá,sEh"M9]i>cg°¹†ps ¼èg’  g§ÞÙQBÍ÷Û%ï†ý¶·¿Óûj´} …˜g£DEßÍ_¹§âKÐ~Ç«Ëà¶­D? 6¢ƒ¬óÊ ¶Ú'³©â„ÖŸæ*ÕM™ßAxuª`Bjvûê׌qä[‹^«ªC]^o¶´cá8CöÏÕá·Þ´ó—¥ÐìI¿ë™ÝÕyÙ­\H?¼sƼÀÍ·àA3´÷Ž\½†B@tËoÑÇÙÏ×^oš›Å ¨ú£7oyy î7²š~.ÙSŸóЪ'ù¼£òú 6ÿl5ÕŸŽL»Ñ»z”å7¢£0͇@•CØ1KÒØt-_‹±¨üW%ºí œ®íd¦‚˜Â&ˆ´!ÑSm¢Á‹®¢¿ñA¹ó_–Ñò1Ze6zäO c r ÑÊÀrÑÈcÈ%Û„˜I.Ž@ƒÙ?L×FµxÀ€¦9½z݃2Ud×ÊYtYºúG©/írZÓФÜìr;‡å`VÁ„¦7h¯' ÉF-™Ò†<è3å;{ró)G÷áS1‰t=4»¿à˜C  KeWoߢpWA¾^Hp¥øaY¤õ3PŽ<@kŒCšWåˆpdæy .;,«”†S?Ê@v•C7NÀð¯^!þ^=)°ß¥Xóm àûþNQsÐRãØÝTªòm<vd·´F…Ækb=çè6…AÇ1B&€5 ð:GºL›!Ò˜[¦”Z`*d’y¸:Ù–QˆhÙùð&®*$´¸9“yõÄ¢Á(³ÔãÖBÙtÁ¶@ý¾é'ô&€2ͤ Î÷e^Ú¦áþ…éÖÔ Û €}~‚“è¹Ð·eïqXe׬ñvõúo·85jG£~˱ÞZZáxÄ=ê5á .—Øóä`/8Et4^êÅöŽßw X0Ø*EBõö~?cf‹Bé÷Óê ÑKÁ•ééÎYÅŽÏ÷9Ò¼ÂüPlãvþ‚„%¨H9ú?‚L'Š®8=Y ÆkÀ´ë…Ê·ûˬçfŠgäÀcÃøàs„ žNà%üä¾ì]'{I³*ã>*Ï“B6ÝÆ©n”må±­æ…núaœ^Z0ħY霺‰žóe&ón+@{³†gÝ‘a ¡sé)¡Z~Œ &L/SËŽ]ö~®ÝªÚ0 ˆ!(" _E?©™„qxÑ:¹rǧ‚àX¢`nÁ|rKÓµÔa-2ÎÓ“²ÞF÷ÐúÒQ"Í: 6©¯D}nç´·¢êö¿øfWmÁ©b/$¿)Éér\̬ܟÙ`ª!ÔfûÄd¹Yv¡ä/nœÍ¹p+4\I ×òí#Ú|¼^ðÙT€ˆmapùˤ8GM}ìZ5+ÃÍG®ôB#N±¸}w6H(0Ñ/@4wæß”ÉÄDOÁÕ¡osÍÖ[}F0Ã×{îŽJ‡7Zëà4„­ï:ñX„çG:Lö“1÷Ëͧ§‰KÛö‹€,U°Û£„Ü€:°„‚€û fc8åÂé·&ù÷ðýP…ø¨Eûº\Qox|_oÝó Ž<ÌÇ|û/¥ªŒ÷Œ†2󕯾Vôf=!ОÙ@û©Apö¥7-´µSˆÙÉÃTÚDNò8£N@ÍIÛ9SJ3)äkœðªwÒ:Þ~X@’2°¯þß«¹¸Ôjs´ýßÉ 5 õäsp¯îb)Û"`sVýÛ»'õ n$”ª\ƒ€$¾e‰,_±ƒÏë(C¶s£Yþ¶ã$º¹³?ì5š)˜äp ¨+äˆ4S†Ã(\ek;x ¬Dmm0;bØ~#ÇŠ|âÞúࡱ|r†Ä Ú¢žËáêÈK¾Š—ú–ŠHg®býVœnb±,Õ~·+€ì÷¦öºŽ÷"š}w‡ê‚Vkp„‰Ì‹M?ŽJ>Ǧ†ëi„¸­N¿N– ™·ª ‚¼2ÁÍ“«³úƒÓ+‹xÎ? ®«÷+ÿ†SoÿššÜ&·š>š«jyåy4–q®?«÷R–ªN‡¾8¯²d’Iׄڂ tÐáZu¸}™PøËRG\UÆ ÃeAœXŸw¸Ìñ\/8õ|]gS؃ü¹J“ÞP[K‡ýH!È0Ê0²M ”Ô§âÆÒåÓüìÏb±øø€4 °D ¨frÂg?¹…@-ž$†ÚßËЪú—LR­ÃÕôõHvshFÙÕýþR;Pøp´äËt×&“弨…yÂè'QûnCF‹,Á8 KÅýð|€P:¾>{ñUg„ü"ªÅ|ƒ±ß÷y»QuRÊïnÖ¹²Ým88êÒ¨@Q÷I€@à]ÖW ¿åà|¹*üR[æûˆ¸þY·-’=Mˉ…ÁOùÃýË+sƒQX >™£ f E/O…—¹«¡p@pVßO&æûk÷˜4¡¢:•ØÛB°@Wùù×9Yî À@Úû0ÂdÕµ·j‚Ñ?©+½”ÍO\èºÀd×§À "PÍ4–… =pþ)ÿ F.r¯€tH±Ržvßå(6/~ ?ùФR;à@w‰?ÉøBx[¯_N&þÃO¡j¬;wÝ=i¿ådÕŸ}ÚIð~e¬Sßs²F·)‡Qׯ˜æHM'}³ü>ƒØûO‰¨åO—7ø¯yST®ÂŠÝ`Ã@[clVÆÿ­æ‚ fšžêìyÔ¥fïNÑǯXÓ/·ÒNœ_å|¡ ›ÇOÔ8ÙéñäÿZ.p]Lñ?*Ô_u{˜9Kz)% IãS¨£Éuʇ~ÞJ}ösõÿâR‹ePYïëà^Qo—OÂ*‰Qcþs»óâY}·Zú ý#ïS¯EÐqŸ: :*ÃZ H ¯&0Ç7“> Œ‚^Ú ¢ýÅ.œJÓW‘dÁ·h¦—ªÑŠ´ä:¬eœ¨l#ø—S³ZN^Êâ(~ÌH…¸äÎHÕ"ÒŽ”eIJÒé^~Þ•oS‘½Í°5+ú“~H¨®•îò !°×¡0¥¥‚^'«³SÝt)òå.)QøOìÚŸ¼ÖÞ=;¶¿Ã÷ÿ›»oxüA£³ÃçT@bwñÿ90‹,ôÌz?_Sà/E?d¬RtƒL+f¡‡àd.}¦j1Tà¦ö^t³Ö,œÿ«·ùrÖ¨šäÍËÙuñ e™3óg]E~ÎZ]Û+õ+~Ox37È9V¿¤ÈÒ{g¤Ûc]ü¬Et#¢þ„ûnP±ÎÛÅòP‘±ó7«~,>ƒ ÅŽãÜCúl~ e÷úÅ>îÖ1]Fj©¯ŠîÒkC`Z·Ä~_hÇæ=×R[8ýÓæ9 ¼L¢×î7{:Ø÷ßdÌM Ê»µ ¨•Ç*ŒÙ9RÒeèã]ÕgùÚwP1”šî¶ŽãÝ$㱥–sw¸èèð£.޼½ãï”Pàx`øóŠl)HÕ?},ƒ‰J/5v“¦V*Å”oS0þLtvWI#ÏŠÅØ° ‚ì˵ ͧ~÷Ï;Æ Ýá–ÎßYøjacT|}£§ë»¡dGò¸ÇåÕ|yâ¯ÖúÕM/͘àì¾tÚº_ ³¶ÍkôÿCè— Âr÷ãßÏHº]§J¾¢¹™>߇ÓÀAðîqÅO0A;iœ÷©¬ú,A{¶Î6Wí‰eu|C2<‰ì[ѲÈO; Ì6Úû_NõÑ•0õ)¡ÒEþÙý¶sºA-Åa—2¯Ë¢Åè`¨Šu‹ÍÚr¸PO¦—…|º v“¯æF8â2Nnùܯ S,1#h=ónx¼–yp2…+«l¯\>ZføÍúaHÚõÎ,êûH¶'o;åãÂc^œR½èN¯Y¶ù·Ã£Gj½ª¦OÈ6S.Îq¢€=”—ó¨¡'$UçÚÆ“(è m Ù3n¹özì½Q}Xcß@ÿÈMoçé¿X$×Aá}¬|rÊT\µÖÛCùiµ®ÿž´(’œC³Gïno5ü —ê%Óé¯n¤,yIóœu* n if²„³$áþDyˆJ¿²Kç•H™ºp V;ªA¹®êö¾Ç.ÛÁîÕ¼„ ³ý½÷©×?u.Í^j’ïW'ûü½³ùsKÄø&z{ÆÍ®=§‹8}UÀz"ΛUûçÏ“UP¯*üVš­—CÂv\47õîÉRüõÓ"Y7é×–mç>܉‹C¼h‘ߤñ¡hKXbíUqÈNg¾e ‘B@RÙ->œÃ;Ž&õÿ0 ’ö²Fj m/ÌÜ,†‚j8ï(O½¯fŽQS!žh>…›(k;­C‚Ål¸´»Î0y—}¶~DA0ÍëTQ2j‰>\×Ò˜æÒDµÖéï¡; ¥Q½^áØ7ºñãK Ý$…F½zz¿سví ¦@tª‹¯ââ+rµûù:ícžf·x­m¢ý‘ímaKàΞâžNî…j_8%µÍ›™šÖH$þ«ê_Z'v’š{½7•ÌàÜ™wjb¿*²ß\ô_Ǹy@9p”JÏu.¸A[Rªîeöì.ò'¦Ž6“&6cQ 줭G@uB)e¶†êèÚSy"¢|‚ ~þ×Þ§Üiµ8lvüOÊß9²øÇØ6ç ÷ÎLù#û.ë7?€ËYÐêT?Ɖ¡±O5€G ,ç‘ýØtBÛõñƻٱâÀ8ø'Ž}J…FêÔézT +{æ§íK+LÖBD¶Áv?,Š˜.”zoZ/ÁöÜ<3üÂçÔHúødž‡¿Øëä#»qƒnŽÀ¾}»]F‡.a Hç÷ïÎôP5³ÝA[Z£êÖq»Î ¦óY˜/›ÅÈ}ç5ˆX´¿t¡¢eR~ÐSÔRm¤°žðï³=4"ï³%Çí_÷’ê]'y<Š;î•R¯Cßkƒ¶Ê~aN@€ Äû‰HBHý ¨ñ C˜Í22uUzÉþ»V †:вzr]áKâáøÂÃÆþdï»'å¿]q“PÉǧEœÏù÷S¬©¶¤6 þ­ÕxÖù%óæZEÔU…2Œå§eJ„r¶–uER\6tÖŠ Þ< ýl‚©¸@ªœ™iÒô‘CtÞ^ œšsvͰ‰]}ÿ·ñ©J »µ‡PmNv¿K¬?ÂSŒŒüÍûÿ¨ U€Í‰„db¸Ì3b’5~1¢°Ø}Vÿ„þ&R½Ž™4|×q‚ ¬vò œUŽf}i9SK¿- PýVž¢Jëy¦‰ žÌÚŸ}™Xé¶>ò£}3è}±RxÞk,˜9y\¥¨˜LÊûAnÂð<~Ê8>Ítügèw^O#{½xy_Ì|kŠ3 &:u}ïCà ëÈõº wa¤MNPhêí©H:-lªïçÞ«ÉY]V/H£âÙµ<*><Ÿäëœ"E­ß'*wÿÞ†W]Ž£¢ÅäçöUÃâ÷ÛîH4#ùÂ}ûºH¿eÜî¹ÚIÎÖI# #ãèªÏ|غ2ó™[ß7¬À@qè4êX¹ý©¿ê¢æ¯íø3Wé*=s<ÊhOeVUHëbáÍXw®dÍßFÊFV:°—ý`•Ûš„Ý_å=*ì¡Ó̸Äëg‘Þð6ybªWÎ *à¨udã\…Çî„Ðñº 8³Ñ7­‘Àñë£á6ì×§ÙÜy_/ã¡ð Ý÷þ‘k©5•Ÿz¾LpÁe£ß¤QG÷ûÊ$ VíºŸç‘G4«ÜõJÈCW&þÛíÙz?RÊ +B…:ùäMyçŽçj»¦ÞÃg´eË+Oêð·àhN£¶YÜmår²4¿“7ªkì¦ä´ì› V¢# éä×,Òõ§÷ô CVˆ „ ÁÆBóbþ¼ŒWˆ¼Î'MbÛ|ÖØCߟ]Á`€°}‘‘6¼M¯&UbŽ€í ß_j¸YPÛXÌçÑ£½¼ <¢;â&i?ØðáIèÿºù+ç&AßîjŽ*dÙ¦Õ`ƒŒ(ù;Cou®-_‘ß³n‰ðÃba)N4ÿ“¢‚,ÓêN$>2"ÏÐÞ­¬ç{IÚ]d!ÃPñF'õyç!¬Þ¼M׺ïvœYÔË<ÃlØ%h~}jµ‹”Ȱ ´µ×éú·œ‚Ì€kˆÆ|®`€‘ñršûí#(i ‚u4ÆóQöœ>¡¿Ÿ3ÓNÿ=+¶Þ. *;d.të<¨fEizúk @ÉÍv°z[’Võ¼Ó¾ì´ªîÿÈÍê_¿÷¼Î`õþÏeR£ŽB KͬÞ{û.dr>ß`Ö_ÔTˆ ZR¼Wx1 _椺pJYÜ'«<Æ4'à0AG„{þ1ÿlEI…WOã‘ΩÊì‡)UîÏ‚FkvæÀ/,Ò2ÖÓA¾Ô€P%ãùˆÒ8?Måì5ÒûÒ°-<§þÃZNEg¾wm2âö»,@^H@Ú@íí¯KV)L²2Ñ0øí¶±¥†k°êt§Œzd AŒmì?RÜWx WÒžòÊô'>Ò2Ê;§uŸÑ w;ΰ\ ¸or¥Ü7U+×;ó µ‰¿ÅÖ¥øxN˜‚ÿÇ ±RB+½@k¹ ú-®;þæK¯eªQ®µ—.^7/)éN±zç¾vÜ>ô×@äÇ)ɶy°`òϪRù˜ÝñÁëþ}¶ãîn7ú} ˜UK–]¬ÊC3â‘3îóή¬÷̰ã`ÔÇÑïÀ\ÏmÉe÷^cPÕæ=r;Ô?g3t…z8ÜÇ«ð}ˆõ6•W馮ޤä]§#R 8·m¿®cmW›Ô[`üh4õÓõíbz¾Ä:Ø5ê¥ñÊ´3Ótlø«ÍÈ@j{gñ5,ó%†÷Žô~Õš-ðT:XzN?¸„¥üÿo³IfïJïŒé FŸ—ìa·kç™óÛ}¹d‹;èþ®±qm{BÅ´lÌ[>ðæ 4+¬l‚Ô·n¡\“æ¸÷J½}Zm  åŽ'ë¼CU‘…ÿÀrS,¼%±3ò«Yo¤î²£Z¢z<ªz PnžŒ äž™œ«}{rºÅÁr›Ïáš<0Ÿ™ìuýø©JÐ?!Z0’ÚP ’{kÝÛ:æD…òŽ•ˆ>!ØE]V¼?õÆ6*kp!M¢ ƒ«Ã¹Ùd3 YL޹U—O™eYMÓ¿yý:*>µ 4°²}õ`ÕoV>¤±… 7q¸—ür­ XŸŸ*^”}8½‰YùýïÆUOC-ÒiºÒ£Ûí˜qÓk€,’4“Ds¬†!ÓáÂau@UënâÀ;.ÜŸöëNàOþ¿Bírè±4²S­­~ÍBêý½R¾áá"À°i Vo×ÃÀ€”8—?]¦¯Ä³ÀdÉGÞuÈàút·´Û$Kâw¸¼kdö5xÛˆhÞj;ØÈU³˜SØ:ž ~>^]îëïìݳà7 ºœÌCXÈV¡a-<Òÿ@Äqä|œI7>ÝÛP[»>÷´8\˪ܞN"±”€nµ­sî%ÿ5øëqðÐÔ0fhõ8¶ÇÕÍ:Žˆr³÷_ZFUª½»Yˆ:e§!·eÆúY§.Äz;=‹žž{nùsi¨˜¡æRÆÛœšTê;—×±þÉÿåØÚÚ¿¦7FÖñ)©€(9-¬¸Q&XFÓ9Ø©›—ôüãQ‘úØËC ° jsÍÚ—uŽ:âÏi?Ad¦ÐºÀnñù±@·éÝÚ/É7ý­ò®ûœô Èø|ÊÜ®¯3œl÷‰&Cm –ûàœúð€<øÜ]¨ÃÛû\y›Ð²û¬_™»4_ɓÝó21ÝÃ.“3i¹ÏÝé§>ˆCc Ä7F¾f.m¡ý‡/ò‘bV¶Xê›ÚDd/pg+¸55¨ ŸuÔ¬žó©Vb½vÛ)´ hzÅ ol6LJ¾YNð–'næ~eÉ-ô¯&{•äuÐêÝKZ1?êñB.¶ óéY6ìˆbÍ“»Ôé®>þ+Ñ~Í=2Oë·¡Hýð·ZK åŒQ­-Å‚%¢~»X^-Rù^®§´m·P .î¡~p‹+gÞ“_gë·æ‰e:/¡å©øÜ™Í>ë³§ü\é9Öß.u}®?gÓÏ8tþhò±¿ ‡­ª,l'FC.\ò ¥·ÿ“ÜóÏU@t)”>Dãì©R Àj¿—hÎÃ%ï'ò“i¤÷R Ì8h¸üÓEß 2ˆWÝM¼Œç˜É²qî ì¦ßÀsGÉHå¾·–-ÏyÑ×ÓãÓîé9—ÙùÇo=HŠèêvrhú¹ÚÊäq„ }<(Ì)>WaŒ’–d ]1UêD~…«Æ`Ï+K£rú( -˜ý\gû?ýò¦¡¥ \øò™ò5ê!=¼éÚé„A²>§Åp×”Ò{4ÛXÏUæŠû³a;•x8ZË\ô$$·Ïáâ {ÑãÅ 6“ÇOžw<œKAÚÿMî˜*ð`¼e°’-n|Át¹uËxDJ¨xrŸ™ÕF×q úL*Œží,Á&H¥«¦]ƒšU½¦Ã]ýÝœ³,EùŠrx±œBÙy{›' ïDŽ”ø¢#À:3½dn— XÆ]˜ œív˜ûx*jå}´Gvþ¥RñèrZhöé¢u( \öÑù·À¡2ÙèòVïêÆ§É º†5m¤nW–O«÷äQ§y*':Š2xÅ °k€2‹Þ6çf௿Væ›Gé9dùص‘ÀHV<;‡!W+·«Ì÷j ™p°˜jÚ1Ögdß'iS³à3^êacOS¢Ènq’tu‰¹ø€öB3{²1¿œðág#Þ½'ÉïçÌÞM­‚Ê” 5èëÄ|Ûð úÙ¾"5çÿ=ÏÚ÷^òµƒCâ°Fï¨TØoz:xýû¼;S‹jY4uªx3(y¸_¸ù¿ e„¸ ˆ,·Ü¨m¯Ë²ìRÄA85¸ yË{ÖiêäSÝ$'C‘ý1Ù»ý#8ë<œHN{k‚qP¡¾wÄÍã¶l2F6½Š§ÑË¢§WüõñòìYôï"Í™tŸb…Ù²§2Ä]0I{’8Ú÷<Ê^að<¡ÐnÖÐF@ÀÏìl¨6ËèUæR|K7:ô®N„ûÝ ßZ«;=>ènÑ`0¡c×’ž´Îyíºîò*³ÂÊy™sÍÅöqwHœÝƗαGÄCýp~þsKrø£ÝÓ ñì’5u{oV¥Ñ)™¹{äµì)QPLÔÓá¾Vì†,öGÛ•¨ùícø=³½B²Û¤—3y!~2×.N)²Y$ªm½¿òÆJPðÐN8,P€!aYÏœÙ;d10WšÕ²dg¡jÁ§BcF‰ã<¥?;ÃJt(dË“ÏlÏ3 ÅÁŽÄ®j]s{ Å÷£è #\ホÉõyøñÜÿ/Æù ÜÊâ<]ßÜ@—<ÿÔ¦ÍRbö“MäÝó’ÚnæT q q@n ù˜/ØI˜1å ¸rê¤÷1‚´Së§Ë©~LÍÿ¼™§Ö~?»íŠ ð¡½Ù´"©‹J:.lÖ ¿S•Î?ì¹o‹{ñ35{,9ƒdш“j|ëÿ  ¿»ºéŽZ²Û kj™ô79/Côüt»¼ó”ö¨>~Ìr6nÁ5¯’*‰¨% «Ú°ª® U‚ ›ÿæ(+$Êk âhòà Ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü?ç=w>û7·v;Þß:Þ罩‡ß}ãÜúå|©lWmïy÷Û{l»·U[íÇzõ_Ys[;‹»#{}Ûß}îÛionÙ›ÛfÖ³^½íïo{í÷±UM0Òbm2 xÐM0a1¡6¡©èSØÁ2zŒša2O&&!‘„Â`L˜&š§à#M¡OÉ42iOhÐ ƒSÈÐÉ5B)SÅM´§´Ô`&)‰äÐÚž„Ÿ£I”Øž”y4É€ji¤ö©´ÃI=0ÐFÔòžLÑ1¢=LÓIšÉ ›M&2 51OSõFÐdÊzz“õ5Iš4™¦™USdÐÓ@¡ª?@)å?Jze'éƒJyOOTò)ž™SôѦÔÚ“Å<Âj`È4b)äÀÑ„i)øJ~Fšf©é§ª~‚i©âžÔÍTüƪ~©øši”Í¨Ú l&˜¦ÂB© ð'©‚zšmFFÆ£i‘©¦Ôô›A¦§‘“M4žšdÒ™&ÈbOj=& ‰“4Fh†=©=mÑ£ÔÉ“OTÚa2hÑ ÓÒ1¢d0†¦ÒTý4M¦©æÔf )´#M¦’oPÉ‘´Òm&MM54ý&#4ž“ÓCM=©½LšhÒlDý4M'‘”óSÑ©µ4Ó&M¨b‚44ÐÓ'¤õA$”ÒO@L™Šž45Óež›R~¨ý)íF§Šxj›i=53%6žŒ¦i©Š=¢zI駨ơ¢lSÊzbO 4i iOe~„2žQ¶©ú ž¡¤ö¨ÓÚ)íMCÍM$ȸc⢊ÀT!Ÿ)†óÇ ³@ðÄùN”@E &`a2,Œ è0¯CLjP*ýnç¬þû}D[„)&wÜžª*i=¤lbüSÒF‹Ttc^,lqo‡mf$~ß ‘ëu®v@‘ ´vm¨ëf+ñêo©±*Û¬Ö^h² íÛdj¥­É­F r'Œ—ÖvÌù“Ô)ݾu÷ünzð%åª$ð§yáè"iAŸÎ}&—ÍÇ»ßʇ”[¹û᳆¡û2%£ÅEç­câ4yâÒ¸8o*ãV¬eC–¥¨×˜y7;o í³ëþØ©©¼îøæB­+ïxõQxbn0ÑTn.»ò¿Kã¼qö<Þû×gÇ!ZîÇS=UŒN”®=Þã†sÚÌS ¬>íøO É{šb±Ìø•’LF6E’B$YV‹Øa‚ÀÂC„˜¬ 8‰†B'±!„àC áÀრäA!18€A"ø+ÇÂ|&ƒ£D@Á§0À¸‘#‰¡ñéaÁµ#ˆ3„D $\“Î0gß‘Çx8BIOŒ$’HHŒøÀ %BCŽð qÂI%è „€H‘È`ç°§$ à°  {þ5ññÝ÷®30T^KñeÚÑ}Ä$–Q‹m Šº‡BI €p8pÃLá<&x)‚øRÿ×àŒ­£ŒÝ¿yŸ• °‰ƒ˜ÞèñÑðGÅ­Ö’o(éÜóÇ»ÈÀež ÏÃ_qŠÒópÂMŠdœ E²­kÓ!á’Õ^PäVB&XlÂì²`™(@JD²'Ù È æBŸdƒ$Éy‹p¶Gi(c+Ýmo„!²I&ø€%jÀˆFE‰pºŒ)ïcê‘¥œ‚#lÜ=~Áð¸Œi°;.Ÿ¥¨çT@7=ÓálùÎÉÉð:Î T¾t¿žgH£€$¾Å7º…ÝÜ ô$e®ӣφýñу±Â‚÷¹ºå+zîB¾eI¼Ý ¼v—]YI~ùq›-1áºWÆŠÓ6Äï&6°ýtø-g.˜¼…)2½Âñ ’XJšˆ|hâQF–òµðrZ××8ƒˆlgEþÀŒX`ùãè´ÈÕÅcÆq§uó3rãUv6Öüøü™¹ž¿6»·)t#ÃH0a  ¡|ƒ´ôûEdK‰\œwøÖñòïú0ý¼ÖV‚çͤˆÇ£Áׯ]ŠSþ"{ÚÜùt»XsVà }h`¦\ý)kîù@éLèÆúŽòƳ½ÜZñ¤µ2>¥Ò–¯Ðá7x[sn=a‘¼‡L­7<ɇM'Oib¶„fŽÞƒ‰˜2_OqA/y»¢ð*ºÒ‹ÿ¬ž æmË@^à@¸JSs`¢´ÚÞ¶—•–³¤±¬ì*™¼,€ õgäíDí¦û»ÑKãz¹€ÔÌÙNr4+6еwýÇÑ»¬° ¾­WšˆXÕ÷oÈÅ z&¢c1 „6úćá[òƒ°Ìhâgo3î„Ðèµ½IâÙÁºytòá}à@wdì3ïg>ï·)oËÆÍ¦ž(÷ÌM¡`SOr…/‚>$Áâ÷­Ef™9 ÝÛVЊ̴nÑ… ü!g¾Žñ×’tÂÔ{>TÍ—¬Šß˜žÈî㥻Gš6ž³d!i£ŽàÂ~WÂÎ8b¿'w*ù´ð%SÇM¨öløPmod7[-¼2¯ƒ¿‰6Z¨IŒP'éB›9Z–¸<¶òRn’ûð;|_Ýö„%†YÆd•Ë–u´Øùvc°óµ©­'äÎÊÒ"ˆxwµuÿÞøkk¯šî’™Ã~¢ ÖÁW¨þ@d…!o©Cˆ¦G[¦#â‡bjBž‚å˜Ãˆ ìÐÉG~Œ5Û!ÞÓø>¦gS£þ{îå´„ì’7#O5¿ïèêªßæÐÒ®1o¨`‹ÂT ýÖ4|Þ¶±Çy^s¿=F6¾ž2Cµo!f^ñ&ó üÕ1Þ— §Èd¶©[Tþ°á’d,<…§TÅ5Ê3gYIéMóÆà;[C§À~ø¡b3´·¥ù[íêÝ@æA•\dw“­L¶dóOâHf#áo>Ì!bZCu4Üb‘K(¥¥7¨ÒGºiúó&ÞˆÐC;Çïô]| -óê Lö)lÚE€G&W%áØñ/ñõÉÑF1Û›ónªL¹.â!òÐgi4OMk>WÈ/Þo%™ÉG±­Cô|¼Ý@ùãiç“üÛêh=¾ ƒ¤{×®±Éíh†·–Ä"t£rÓ™¹Jq¯LRø'¬DGŸ,qHë{£.Fþˆá€C4•XóÐØu¢,wyö¹þöxܽÿ6ûÇY&cŒ!/!·Á¨]YdFP¯Ä€“ê@ÀbP\BÕü¿<ÅVw‰Î Dc´¥ýBe Š Ñ¢$ÂŒ&ý´Ë|W*i™^«Bw-5¸¹_l†œÎd%ÂÚkª(gK½ïÞvý¥€IŽ€}dbŒ~5ss|ôAz~–%Ø%;²¼¸æ€–nQ8Æèm?¦•'/¿7…ß“ƒ?•çФ)‡)®ãÀÎ:^wD}à`a@Ü^æ£F@ovÄËJñæ:ÝöSgC`Aé‡\ªü‰P åôÝMÔ+‹Œ0:1zf³0äÛ~‡¢ãÓ£’dš.ǯ‚úerü—of@½U®dâb:пš‹aOª§‘ùãË^॰=®nÓ‰©ÿÉfæ]$¦Îºk‚jš¹› Çœ¯kdÕ©tRšÆ™Xà•kcx'(œ¸ýAoWÁÒÙé g;[QÞ¿8#ºØ=)>Nç \†>ù³ºä÷É("ºKcE¿ô›ç‰™ýYçÏáÕúìÊÁC,í"y¨Už1HH½~6¾ü8=`ãq‚ã6)\Ð¥÷¯›ãÛs¢ n'QiöQŽ­V~¼Ö}*¿e^ÛSÃKúéb03¯3È$!©Öb•}¥Îƒ:³‰6¸=Ì Yµ*«1î2qLq‹QXûXN;üQØLÝd^Û‹lA¸§r°ûÓî6½ÛfÂãt,ºGµÐ’oìd®% Ç ©¬>±Šûk}`ÊT÷Eç£{ IÜï]Ĩþ3³Pª+”+èý ŒÙÞa^ïÚ'–E¥0nç.òbqG†×TËÅÂB…™wØÿΖ‡¿IûqNäÔñYÎÒ'>‘Y;—®¹iË/Þçú:d%ù°m!ö¼ ò°L„l÷¸¤D,ÿ·'B¨¸zz·LX9Ÿ¹iî<‹]æç‹¸(‡Æg>D—yŸƒJH—«G-žòžÑ¥grb®î©û¹Œ–c7¤¾‚‰TìôØñJá:Fu°W§Š¨Qº9÷{ëý?£0¡º¯TéÞ(—‚åL›¼æW0§äÌž+¬"hóð”,«D‰*gQ†|Ýˈ_ñ›„’ãšÎ}è¤Éù×x]Vxµ¶¢0{¬‘·~MÐå™”Š1ÏÊR„ØÉ·@|…¼Äkz"°‡_&ߌ<¢‹B+‘c|‰¬£ˆæÒÁo–éq)§›‹óÈùCé•×1<>_èv(ë_‰¨"ˆm°áî”·ÑÃlÍO°d›ÊÝó7¢@gÎËçJ#ž?ÖŠÀÉ’_¸í_âÇj/ݲBt* Ó Ùµb÷­¸‰’0.h©†—©°¦º;dqþß^õɧ¡›/uÞÂ5 ÇpUªëÀ+œ[ ›ü¥è &^VûÓðbZ=új<ÀlÔüïƒØÂ7R:_› †–#Xn7Q¥e=¦f!" ð.Ó<éqÅÁnÓàQiÓ¾èÊK&C¢êjn6Ÿ.ٽ禃„´i ÷ çF;¬‹<Ú!³q®i•¸§„ þ„Z(^;ù9cO¿0ˆ®:—"Ÿ íÖ3UÜ$ÅßÈNgŽ’=í›=ž"ÓŒô.þ%ÆÄ(¬z6v®•R½5¨FŸŸë–ä¨ì Ö´‡ ‚PÂÖYAk$•°y“ØÚºpŠ#FD÷KZVÀ-T óØ5-fXØ-¦®Pñ§åûÂÕH8>êb´u ÌHуn2?hO^î‚ÃBé4ÂA¹€ ×”ð9¿¤ly/ð™Uåââ?Yau‹öØa¿¥÷ê‡w4.³÷=Ñyr­ÂåP+™¢¿Ð™ËßlF’I§¸É+;:hÀþâ—Êt,¾"”Uol©šÝzpW)?ˆýˆŽ®d2wQg[‡6ƒ: Œ%LŠQ.EYã®t¢ÅsƒæKdþw¼z:@ȵ¹ ÷#‹~¬;_t€ö®¦tºø¯+’6wU‹+¨â¤C±ª¯–LjÑέ qÑ,”žh†ò*½o|‚†=­ú¹¦MŠ‹°2›W ™¹HÔNr”-k®–õÍ^aà ¯Îg ³ryA ]w}øÇeV6‹A3óB ýƒ°„·€ôbŠq_":|<æ>Òúÿºb«q¹GÖ¨X•ÁÙèn¤ìîšü4G í%h+@ºÄÀ- 0µõ›5ÉrÃÛEɬG¶x®Èá¸P«Â;O†Æ.(¼Ø>ÍWº\D ñ‘ëå€åÐ  (>  ¢ú… 3âÔC6œe=ùAût'´³Ì¾XíõËÜ™'n©óÁµòà¹ÞTíb·µîôLx .›V’ˆˆbxÈ‘Ÿwsä ŽéM¦ÝÞþòMsJpÂpLD‹ŽZä.¿®>§ipØËÌY_&Exÿ~ÿ­'¶¯£1OЄŽVöue¿ <ÓñˆFŸQãAŸ\Éùþ?6fÖíS ðzÇ ¨,ÅD2Œm[$Õ20º ×Vö.SõÚ @ìLàåT­å½H¾þaí1duÁë8y£à>²([m”ûÝlß©CˆÑe ¦;€ñ"iâ„Ü~|Ÿ•ôk'¤¸ÞÜ_àO‹.å‚‚A6CŸ€F ‚G¦Ý>8ŽIšø®öRrM¢¾vwRç¶¶Üe@#ªB¼âõq†ô]o4e™02£k)Sc×0§‰±'oÐh‘y 8§â¢äe§›îue—t’ò™dÿFÃöô¼§²Q›=D(q,èT1ÝŠîà jŠ Þ›E"Á˜• æÛQzó0ªì`ƒæjД‹ƒwà[ “Àxá”4É«ñrî`ö™¡!AjmX‹úN^2{¤‰zV6—!î8à^©øð½ŒÄLF†·õ9Ú‹…þŸ‘ò߬ºVÃ-èWcvv;ƒ9™éï-êJ `ÏP üGæHÊ1IÅ’˜¬h¼õ9{œ@î ˜Ð¹ Dfƒ ¿Îgñ:ýÞCŒèA;yë½°vXÚpÓÑHØ€&`  âAÞ=kºã+BȹœEÂ>7’IçŠN*Κô{rÂþ8ÍT›#ÇTª·¯c™±ÛýœÿÇ5Ë”¿õ´×‘¬ŽÐ˾¹¥!P|¨½ëVz»¦Bô Þ¤cÅ/Ùž0’Fà fF0¾€°çÍè÷ŒSÂ4DE!Ù¼Þ7ž·“qï§­ßÂeuÒžT¯&O×ÀÿjÚneh­Ö«úÐ¥CûºÌ ø À() п <¡ ¤êLÑJV¹â›2ãÔÖõ¤m[?ìÃ_Âî(ØÎ^àÄ|—˜}ÿo_˜ ¢(eP¥ÏPÝ\Ï, ïhkŒÊû4¯/Óü ¶ŒNÔýwF6€¥DÄ=ž6|'¯¶Ãå¯ô‹a74-åÚD\·»VçÆön}-dÞÌøõ™ óðk®ø:E&SW©‹U 1ÛÜbIØ1ù9u¾¿4à¥$z/ð\Ìê$9ž^å›ù<µSº!¹Z3*Ø&oÕUŒê!Ø-JÅÚ›0ïæ_Û4B²¤GÍÒÏI|Cy*Q„))%ÐŽò™Âø(¶Kûô)V¦sW)™¢A~b9²øF\ëÝ—ú$}—±À>Çh%¹R{Ž?÷»mì<\è F³Ø™|ö÷çrMÁñ>‡/ÂÙuUK+¿U¸õŽÝ”ã6ø6QÝ™ìË}JW}ûv5¯‹”€ÏÞ?2þCQ¹­Fùibø™Ç#mzÝAÛ®~àeõi·ìÆŒH(¨Z__˜!L·vrÙ"¯]~>RU¾hGµŠÔ.74—o¹eÏài‘¼ƒá"(Ö=£¢Lá» A»ù”ÇuÆ·.;Ú_C[\¹í…AfêÝlÎÌÓ´\.UñªêØ‹õLÝ&ÍK©µ[›­\È®Yõ"Òv¿©‰l-ãG«©þÝÕÍqS¯g©êÞ…#Â8ûd¿÷¹Ó“ÜâñGç7÷q¨ Ç'xɨÊ^wÀ¼eÞÛ€5vØ)§=ÿ»Ñ”í’_apR_‡ucYKÛõÞ¬uax‘?OîïíÏåÄÕa  W]¾8ÉžÛÉc„ü.n·ôJ…i íe*uÏ3‚'Ze&p–†³ƒRX)J¦™l9±oêšæ½‰œ}LÅÅàG_¿ô;ͰñCxvç/k®±4kEcN7÷KaƒhO?8D¿;âÑ7føî ŸL…ÿ÷ŸÓpNçÌOκåã-F¶p€Ý<=!µÉñ¿\’c*!CÌâÎ$­ËIx•½ Üæ_F9}Š%I§Ú2Óò¤ {Î6 £³i"‰EÚ´lˆÊ#_39ßG$ÍVLÖüNdn^\Ζ ‰¸èBÅVV‰Ï§~^aD¬'çìžp/éšì^;svÿ¦v´ÏdQ¦Áð“K¢ciÙG¨ã·¡LQ}…\Ÿp =–‘× Ûgœ-4…~ŸªÍw‡Í<ÈpM¢±§²ßiê¸?ýz»Æ‡Èéƒ.†ª.ÛWC·0£BÈäØØáƒ®™K°m¡ë°ì–»gµ®¿ÚÃË_ÀÒfÅÏÞ6ÁQš©ÆéúS¥÷[Y »ÕÝ|}Då`Þ;I5§¯!÷;÷umcÔ…MèLÞøPoaHN¢7 ò~ ñeKêof¾Ã²¢ ×ÛXÃE®êö½u*.jxï1¨1z9Êû¼VNœÔè¤f‹ùQ?Texëƒ5bX¤ôz[<¶^ÕRNžr‚ãñë[¯ÝÄþµ¸zg:¤¤$éE0d³¢E 1¯‰™©®™ zXŽg‹’—ê­€¬°sJ§'ËdM÷Ôï¸4B žVø…¾ùÂw˜)$–³®-MâÀš¶Õ®ë¤EÝŒ˜Ÿû ÃØ=õŸ|ç’Õž÷TÊÊ{0U7ÃÁâã|ŽúÚ¹ÉswÏþ„½Æé—µª¦ƒ’¡´«‡gÉË2wE€¯¢¡Ä+Çt¯ËÙÞ­áqšÖ;ûž˜WF˜‡”„ò×qö¸‘ªºÏö¸K^úXìðQTÃX ËeëÙ>CUøƒ 1®_^cqzyëZmUЩ—;nbù˜rJ0‡ßR噸yeÑnû¡¢¥æn•€¯ìgÁ&-ªê&Üvâ&L+Ücr¾¯´UMLÏuo,|t¹?4¨á>×í趺m³úȨ~9ööwưV`TÐŒ8xm†]CâÆ§6—á8¥êÁ6uad½DñâÌš ÝÙб €NÄ„^ºÏYxâŸ\ÊD–*oWûº„ZÕ§3ÀÁ&@âôºißW§BU½î÷L¿až÷jFí 1j,¾Ð¶‰ƒ$`~T㊓”lŸ¾ºaP)CSólÜß®Ìæ‰§½îý Ü?[kJ˜º"ä ïÛGýû|n?U¥³›ý:e´×9æ[¢…í&Ÿ¼á36=å6ÿ‰X¸.¦¸@ài‘á‚κ®ß1ñ#нLU¥,¯µ+"uLóÓ'£2eqÙÁýJOóÞ'Ñâöd%b«s„ퟗK ž¦·,,çŸé¬¸¾‘,ò¸õúY½ƒâÎq)|Ñ=û¾ Ë5³¸-üj¨ÀNþY,9燹6‰éítCZà<Æ´jö›7éÄ#¸ÆC6g>œñxSêÛÞëU޲ ðã’¤]'ùͼNÈ©UeS™¶`{S©Ró°=Z_)H®wDN·W7-ÆÙ–­÷´C¥œL*›6¹[I€¨#”Àñä ´©ƒT1n5lKý ³…hsù¼³7u•/ÄóOí0ÎÊIô¥´ŠõÐR¾YçœíWÁ%å4?®ZRô^+­ïq £½£VJ„sÝÉào—7›}¹Å2$,ôóÞêÍ“QÿòWVHŒr”Ú³OtíSñ‘81…^:ý×z*gã´V Mñ‘½øêZB-Ø¿”†U„†uý—S¢"QÕd}d·'v2¶wó½F^Izå¸Aˆ|×ñ»¤“w9ï¶KÓZÖ)œq6oW뇺3¹jhcÞ8o´ÿ8-™œ4•‘YØô.XÞܪ+²Ì“íŒQXF¨êÇ ™L&”V:EŒÍ%xÏ!¢ôQ?Ê ŸÇî³l«mx©#õ>å㡼 šsO¦žâ&QÚÊÇ­_KWbØn<¤Ø±‰A2Ïp¹»èl¢¯PúGWÔA\26Hú£ì„¨‰¤Kâ÷žíóá¾V]®DÞ²ÔÜL;Jƒ_Ÿ¥w8´r„“½µw ö:vD XAñ_–óaVœôt S«™lܕдA-UÌãýô5‹Ý ˆüùi ¹un‰ v¬Ô©:r½\Æ"8\†6ôêœbeKþ3š@«|§F÷ZÏ«/ÓBÉZ‚ЂJ ‡_´?áCÇ$£hÀ±½‘e5 HOÆ ‚v"Hæ”ñìB^Õ²¸öça8Feº,ð š<@¥l7»"ƾ†ÉLÊÊy0ìEétG3½MkKƒ;‘Ÿ‹T9Úaiô´˜.'´t®2&yë~˜©zÿK1CJ$A8ÁÐÇvb²pÉðIûñœ½±÷U^RD–)x¤Úkñf‰¡g²$µînZVÛèø¥SšÁý¾Ô¤áC÷y£eZ Ã<ÍÕ[|¶t1µ•{R`‘±n9.é;ɬ Sˆ¸%P`8Tu:y^j^–ˆ[˜¨7‘ˆÃW¯~`•{€b1æ:æЇï=Ê[D6Géó—­ÑŽòù°uù$ÚŒµi„È’¾ïý*‰M®Îxø$õ\"&®÷ ¼ü8ñqkC±gF6~¢© Íá9"9ÑF®b§šF}ß)A­àH­Œ&'"ÍS¼‡†ºêʬÉÿ23‚,µŸ‚ãÍ"®k€5Èî#ÿYdA/žÀÚ×þ˜ë{‡Îæ!ÖìFlSÂe݇ÛB?>8}.PäQGUÛtµ]Íë=ÉBM?ÃBäm•3Ùn®BûTúÞ³AéEE%Õ^pcC<úº²ÂÙÁ¯—ÜG‘ˆÂ±vÀUG_K‡~Àœ¥]Ô£¢ð}žLGmŸ:*èmúc”g<)”ÜC°>rcrÄP07ï¹Ç [›—aþT[Ì×Þì5 󒢩ØÏ½ÜÍ?—ŽãÖ ÒÐêºB1IÛs¢1|ÞÙê*ÓÒS?Tq?&åæñÏ WÕ a¾Â¤Á…4¼+ÀJÙíyÞ&à¸mk.}þ?âxȈñ fê!q; û~µ«)†¡3»]7²t›‹$'k6ÖG;¡7‚ïìîdã–8£1³‡!…»pOÙ"ÔÉ@m3ɵ4°Ÿ~Ãæ»Ç¿Ö`g­¨ëµÑ ðXñß›þ]>P-Bp5ÀôžqZÚbÄs÷õ_ áoî{D"Ðg‡”0OèšVª–NŸmS\"Õ±’‰Jõ¬¥ ¡hñwïÕÜÉá[9Ô–ÿøñ§{c_ªÝ…f ±ªÛØ;/-ñM´­<~>í,é µËöh–l¡ Ì뷱˺簾#µíéH«ìQV Âñ†BÑ'¾b’¨/éÑcv²s«,<ýg?˜*s¾õùÈø"]_»çÜÊÏW¦Û ëàdzéÿaãúÍèè¸+Œæ{É/ §c95^7ú2ë2qö0¨°–Ú‰ºèõ0vvvMî”KñÛ^‘ÇTT±.o´ï$éæ7p3TñDš;„l¬÷K¨8´µ|ôÇ "¢ËöoÓo(%¢)„®rX‚HԽÃêÐ~Ös‹á_$þN†*K«’ùæí¾š¬]ïë„„’7=XÏë˜ûh³_ WDO‹––cÛíu4ÀWmb£L¬–jh‹j±ŽNH+\c¨íèí­gçæŽÍ´¹=£¹œ”lù˜VHNîo˜‚Xwå>>Ê-<õa^eDZcØØ&Ír½¨ã”ÝÆ·×¥zÿÎñ2_ž××}}oÖåb°Ñmþª„ûñ5$R~&*¯zâÖ$Ñ‘ 9 )‹ºaHâœ\žhÌo‡¿¡k±ZßÔ’ã9rо“À¸ëÛâîH§ ”À‚ zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.804789553 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v9.dat.bz20000644016037001603700000010130213607166133034117 0ustar00hutter2hutter200000000000000BZh91AY&SYté¾ëLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàS߬>•%P¡**RˆŠ%*€¤¨ $ª*ªH©•JªˆªŠ"ª•JžÏv*é•P¨‚Š!Œ§Õn‹o­öÝwwzvú{½}Ï{ÕÍÝÞÙz”ûÛ{ïmÛÏ]zõy÷Ý篻}!-ïoyaײíïgËç=öuº¾÷}½mÇ}Ü'·½ÝïMÎÎÏ·¼÷g}vŽöóîß{½>ûõÏn«°úo¶ôÛkwtëY¤ÊÚkíè×Jç×¼}ñŸY={½=ïu}•ÒWMJÆ»†æ«Vuó D©onÞ¾ðʤLh51M0ši‰‚4ÐÐ4ÄѤÍ&d0šhdª~ š“É£FƒB`i¦¦ÓL©údd2`šOF¦Âi¡‚i“#FÐÐÓ&dePeQ4ÐƄɵMhi=4Äщ Ð2O#Ð)àje6˜˜§‚i£ODÔô4Ä 24dÓL¦d§èM¦ˆÚ†˜Ñ<šžCM#dj4õ3DòC ª=¦˜š2 ÌŠ~“& LbiOÑ&jySÁ j<€Å=d˜Õ?A0FÓTôôÈ'•7¤O4jžLž xM56¢g‘<‰´hÔØÚSòM£MSÔRe6“)ä¦'”õ4öSõ'´SõM<“ÔÚŸ¥4ò4†Sõ&Ȇž¦žIêzCÉOTÙªzLž =M=©‚CÔzja=5QêzžSÓ LB==)èÔzz¡µ ŒG¨ñ#z¦Ñ4zjl¦Ô¤ˆ jcC@hš`56™LÑ£LLSÓdÕ?CCA‰’f2§í ¤ôSÚjzjjxSÓÑ1=M¥OÀÊžÕ?SÓSOF©ú˜Ð©úžG¢¦ôÕ=„ô™PE$@€L˜@4š§äžFC&¥?F$ÚhÈ 0¦È5)þ’~‚f&ª~d4?ÉäJŸ§¤ØS?j§”ýª~AO%?OTüHjŸ‰<ÈSÂz "OôÒjz3R“2:c©&@u„‹àFM":‚£ ‘PûÁ×”Þ»›ô=O³']Àí€zÀ¯ º6ÅhRôÃÅ3¼S0aŒ‘˜:bbbbcÁ ¸R ¶þ2 ¨†þWâÜœ8`€ q@ û§/=þ ×GTorw8Kü­¦'Ëeÿš©[l|»ZË×ë!]}ïë_[EÜw>]³0»(‘+™Òô>‘&î¼[¥öÏ© ÊÆ~äòzÖÚ¥\Î^AE¯îðuÛ;®BïVy[µ–YùÝåü(GÔéÖ¿eß>–ÚWE>Ýëǫ̈cgœf¼UÊ›Ii~Æ—¡%l¿«±|ô¿ý•Ï\Ýü¤µÒgý“zòDPî©g!™÷™­<=ŠU°¾·™ûùvÖ7SQéJÞ×\Eãql'›/uµ¢òÓÆë9NMÝ/MX:î7¬4tk0ú.ÄG7o¥ò·f–×ÐÜP¯ÿ›È/æ\{¼ €‘¬;Öf&0å£g›@¸|S¦hP! ) + ™ÆeÆaI˜éü¬(!Ââ@Iˆ`M…d"¯†ûn!ÉgRB’(ç#(]Éß XWÒ ú QE É ‚¨(ìàAQªQ` éG@90 ¨œ]îXYÆ€$D ™ )@dI*‰:@Ì@Á1"Aߢx&­Ø:ÇJXý‰jV” À`œ%lÁs!íÍsM™]€°¡@<‚«*ŒQj[‘f}%¹jÅ©+˨\ …kŽÄ’$çvHÞwÄľ ñÓ¹8…Â3Æi™Ìòýx²òNA€QACœ aË! †áBH:§·h³LÑ9öaZ‚$¤–úÌ€' _Y…0ƒ2NH!Ž&?8{ŒL h™veÿÙ }Œ }Bpàœë¶U¢*® )ƒ0yÍ3EŸX˜Õ$õd`¾Ä˜âfÍiɃ“aäãdÌñæPÑšC³l 20âðmdAl0(L3 ’bådÀ°;FH³ƒ aMã Ѽ'x3 ÊV?Ý‘l` ïBúW œcç²rŸ!0ÂÂL€ fÔœQ¹‹AG•!òE“0û/®ÌŠ\˜oó$®¼Ô²\0¹×³‘Ü ( ¢/ÀHPÞ2?+Qõо‹Ûˆ3=ã XW–DÊ€ÁàŒÅß>q¤qLl¤âåˆOlõOIÇ4­` -X6 €a5 7ÖqèF´ ÐÌašÁ’û@Â/V0Õ$&ˆûîÜh3´¢Ú9µ0éZ.ŽØ $ÂL9VÄuìÆ\vÃI …ôØëCÌ3%Ð’ïÎ7c(Ðdv ~ ×¹{eÓ¶%YQœªsCµÄ`ã¢Ød‚U¥ýâÚÁè3¼qD #פæ:g÷¡†C: 9¤- òüS!27}–M0&$!\ÚÔ.¥!j‡8òC Ä…$0­{ö—Á Pl’ƒ&™Mä’3dPugËóœ@&¸zfôL‡Â5‡¢7·5¤íȶ?)j>»XtƒC€5è•€rµƒ€ ìE²@÷Hn™þéÕ0ÂyÇÌÕ)μàØ½B€c¨÷ecæ´ZI`i‰QÝP™´x#°qFe༃‹‚™}$ë™°kÆvê•¢^š&,€Õ¡~p£&ft>“ϰ!*פ¿9Ì f(²CµJl“4(¶ƒ¢è„4‚üR0 AñÈ“«9c4 w¤qj [æ¨ø(rÎ ǺhœZ¶ÍZpAâ‡BôLàAvs§Ôß]+v<'PĹ$!i·aÉNHd^Áƒd íˆ|`@܆N˜Ò¡pK!dI0@ÌNÕ>KTΜø××6ˆmAÏ&æaG~ k²B¸tBÕœºBqZÚ´Å/ÏÒAì·¶tñƒušvÔÓóŒ4FêLÃ0Ì&©ì¿!X3 1méÝ*fØÑ†¬µRgœs®æD¯kÆMüÄ̃v:6A™/Lšl.]¶š 'pí¢÷õâCá–ôÀfÓ±~æâ«VÎT%4& ;0ã_põ˜v“$*‰²CL†øÊ/nö„ì4_œÓÎÚÙ–~¢OÌ@$Ç¡#’C yp È<£Ýqĵ¼_N¥íœ‹­|âPùNÙ²5:× DXgG.Ù;@h:À1’âš`ÝR Ÿ`fmGfÞÞ#ËlD¿|À6Í2±2¨v.e·Ô -Ñ K¿! Lθ@¸D9AÁ3 yÒ yÛ¹Ö¼ Ü ûF˜ Ê¥åžü¼ qE´`Rø5d‹éɾ2iÉúÍD\”ÎЀ=6ò˜8@tåÝFáå©0äÇÌ`][2TPq#;øžñáß)AÝ¥²:6;ó`PÖ Íà²J-rõÂŽ5Ç Àn\pûÃÚ“Ó6 É>ZÞÙßÒÀ+Ð!æ¶…‰ÒÛH€É¿±¯sT©Ò!IÀ8A• q€>z@¾32c›ò…rgèkE¼7—­¤ía&îÛ¸ä.„æ!xÓÉäOèŸÝ,žM’PvæAªN8cˆxMà™äÁÒö'á&n±¾)jÕ)`ý†æÀØ?ö›|à7“vð‘Ãc™<†Ù¬noÐÉðÛ›ãjЦsÈCå©IOiµi|ÿÛ›³~3¹èÞÍú%íÐÇ<õOLv¥km†OûËîjÜ Ç?Œ[7ì¢ÝcÖ°;§¾}ñÇÝ4R‡5ˆsÜKºsZ\_Ÿ²l‰ ‰PãÚ§†zú¦åÄ¥P=ûsŒ=[ˆs­: .Mƒÿ¼±gwϸH s `<—à4ŒÉàºNñæÎÉϸA³OÊÑF¨x/^Òf Œú@÷. óeÁñE™á°¿;éŸ#1Š`|Ótö ÃumÞaã¦Úož• †…ä~"¥Å=#‰(½Jò½Ä¡0Š´Úo¢õ†ðç虋¸RgLþNm˜æƒ˜w©éðøB_Þ)<ó$þ–a«|¶5Ì ‘߯nm›ÜR0Õ1­½Û³4³ ¢(†±ƒ¥añËOâW;v£:R ˆVäÕdyoj˜a` žJa ‚äHÛ¼SVÜY<‰@¶š% ±–0¶¡XCdîœ ·RcœÐ2C¤ ư~ÆØ”†ƒ êÐÎ’Õ “vÀ5,1ÐSKk ft)â²!1^™GiÄ1|‚¿$•˜Ã/d¥ÁÖÚ<ËŠjò*Œ;Õ3)'w$™…,ž}þúz²CÓ·|›K²U;£Ðg|~,Û8ó8ì=Ì‚a€H5ÌñÌÐN4 ëÐ4‹P*YL"@Â\È}Å ;&î;t!(¶çz꟫4á‡B©¦JNÌyMFa˜ Ö k‡¢Éw*”)XP*ÛnÛ';w…`®µL{ȰdZ@d¢¦­Â2/¶#$¹4†ì’Ëû=îmзöLžÕ¯/G¨Næ ö Ò „ 0$#yBaú7i—(md7…0 E¯j^ä‡Í¹Å¿°X;iÛøÚëÍ'&ÃV¤Îøà X6’x<ý^¶8´>òŠaÇt“¡ˆi¼(©Bt9t覾^Ø ®¼Ý]„)ˆâž0pÅà ‚H6À„Ø3€ß‰™OiåYÙ’L›€a!„5$%¢Dœ„v 5 £Ö æìñÞûÐæ_ó>“-±Ì5ê­{•BJÚ!˃DË2Q¶š³Ãw,ÃÎ5ãDh Ù |+GèoOî=CFÀD²i"B—ƒß&VÌlØt‚̆}BYß;7RÉœ<5*#’@LᜠUжÚ™À&h'*7•n …`É|™Ô™¸‚½ ÐéP„†,J‰3ICV7”Á h8¡mˆL…J!j…¬)8Áð³'È»fÁ'CBèŒ5 Ö¡\I“òÓRò†A.bÕÅVÈ;{ÛJÄþŒ5€dÛ@9'p„ÎU„=Þý°P˜Ê%¸«Ô!Mq½«ÕX»âôI€;õ Iá4ØvnÅ è°0O ó÷Ý.×'à»°oP´d3زY–ƒ"Ô!þÜg'Ôú»ußæ_Àzíÿ¯Í!1y2nó¢þMÙ܃öþùY¡@ê;ýúª îzûsYJ.©¾:ÆÉ ¥$0=GqÈ&ÎÔk˜xYêä9(mœËP–Nì4· &eãL^ChîJB%ªé¹vC.(uˆ¬a2٠߆ Ëufm‘ñ¹t*’Ol`®Í»4Î%Cõœã07w>.;wÉä¼5§äM±ÒßZújC÷áïµÖ%vd@ÚŽÛW}P×Ñ(ƒaò“'àþØ,ç_¸îŸÚ޶¤Úo_ð·ü”_cMÖù,æ®Ñ¡hqdçLÑ@ÎÝ{3kŽýâR0Ìpí ³0òŒ (Å à (7VÉ Xh2˜¤ïSû<ÙE«2:t>„œ C¬#ø…¹¦çF%nÏ\?¸t,éÌwmFCIøÙà @òsmn„&~ˆõ¡¤ktY”=­îŠƒõ¶—æa}Œ¯EqJѤ0…˜™¦Eõ/w:VpÉ¡À¬gC»zŽHCzøÿõê?±5ÔŸ.Âê_§Ú?ŽÉÌQm©€Æ2Tèùö¤ШHU$‚LHdÂéÔ.ñãÚ¦%¼Œ$Ä!±IÐÚ3¤;_ê@ Y½ø°ÚêD(=ƒ;~öa˜h™4™>*P(0¯>q|.cj8‹jxMkç¹°m]#Z?‰½ €¾YÁW —ADµfyvîñ)Ä´N™Ò>X¤â~Q€MÛµ.ƒ„o*Ò~9?˜Áµ`á]3Ä ÃÜû-$(dÈ1uéÄ âhZcºj ›R ™Q¼’Mé¤uÕÿzçHaÒ„º¡º2–´ Ѽ£Õ5ÅpÕÓ5NÌÕ²0QtÄ™Áÿi3 i30ÂôŒx<ú¬rîZ( Cèõ V4 Ñ åo€éàÜ09~ŒY0>fpªfq£cy6u£^=+I†{'£`ÑC`n8NÄÐ!îÿÌîïé°iÙ¥Ã2¥ˆžubYÒ« $Î` Pùí6¢^©JõhÐL'eÜPÎ…3 ôHAÉNö9¸~ZoÓEJÌÀZÐlÁæ\µ"vÑIàIÐñ£É¹6fEªU¹‚öÏo×àOÃðë“Ïù^ŒÑ{¢ ƒÀróÏÊÿ7Ûw2´ð¯N=:Òµ¤fAãçözCŸä©ïǹ½ƒ8œ“Qt;²ó™»PãõÁqÐOŸì@켘ÔùÀ•"¹†"âþ0x$€°M'…÷vÌIº=Ëq®2c,™)…fúü ñJmõÁ¸Ôÿ% ÑùÚ¢°õ„ä ‰]0¶ú0ç³?â#úó¾T(H¹Èù#`%`,4i³Ì Ñ.ŸUIÀy^ “ºéj Ó[°!*gR¼k ú—á¡ö~%~æö<Èâ ÁãkIÆË 0†8íœwL5OÎAÏ™ÇdvIªo¦Ö=“»l›ˆìÜ™ˆi?‰˜¢ÛÚ.Éìž§L‰…¼bÓCÀC$-Ãx¨r¦ð{d$’v÷¥01ÏfõR0‡ÑXÝš@Ђ£ËÈÙ6æÐà°<¾×…þ¦æX¾£Î€Ö¥[ë`ëßrqöPpÏ÷P0擦o¹~bì añóÉcmÃü œ S²Ã‚;{M[¥“`‘ ´ÇtÖ(Hp &}ƒ)‰!p‡Þ 8Öw³Ÿ+ÉÍÿ?'ãñn_?¿d”T‘ ǃsPƒ™fC»C,eØaâÚ¦‚…ÍBªa@ßWºq©èÌ77òO0×;¶Ыt̘` ÈdÈaëœÁÕæÞø¬Ï0wOþ º|Áе.¥È&<]I^ÝŽêNàß(º«“7ùkøå‹EN ¥x±rIÆ6Çü‰È!VÔ ý­ý®žû_ÂĵM›a‰g6Ì2j\3VX%HÆI–.Í»•~֑˼kºz6±Æ8nãfo©3^'ü…²B¤`u ‚óø!·ØÓl˜ûT«Có00ØBÅÅ5íy†ùzV&ˆ¹XÜEœmú¹‚f¥*A½1ÕÀ%Å…aVq¢fûbrf3«ìKp@Ü o©¿Êú[ZàÚ [Zm½VJ䆽Ä'< 0ax$ Ð19ÈÁÓrSšN=“‹2Lª!,†ä ohI>8ÛB”ŽŽKÙE8SOÎ4bC—‡‹L”½Šß›;v0!:¥àä&]Cˆ÷bœ…Øi™ ©… ( ’@´…Œ¼\Àu¦Å”òàBz»·á& BÔ.h® /‚}Žèr.ÈY4«Cæd"GÆg´ÄZ4@qÇøºaÙI_óPæÐØ>ÛžÒ– _šÇ´ì.µJð^4xžL÷}ÜÖó‹p{ž²j/ǺUƒdö¯ã-žÿÐýUø¯ç‚áf‡A\&þAyîh±`Ó ªcÇ™B˜³ ¥-E-ÿfÿ‹ãr>eB\ÚÚãyt™NN6…Å"ZH ç »ªpLüc0ÎÛûA±h'ct¾™?ëÆ‹xçôškØÉ^Ó7¯(-ÈZÄ52€èŽ…Ú6©°¦.ÄÅœàõüḚ́)HˆÈÎd…ѹ¶Äd8 ’'ãÔºÛ:Iïàrá>%@Іq.‚Ø'rCZã’¹§j?”ga¢…í¶©·¹5êpï€~TÒ0î~›Ýò…$4½úñjî‡:6eõ´tßíþž§ýiÎJ°¦Ÿ QŸÌ=2?õ£»?‡˜Bð7‡žr’C+|º¿8”1ŵ!ê{¡d†¬à}óû?‡6LÔÞßgO…ãÝ75“½$ïÌ_<×!¥þÕçú¤ÍĪZ X qU”ŠQ‹+­?Íù1ÝS¢zŽCÑ(.;C 7öܘC2ü€Iþs·ó'C_sm®¨±!¢çCE\é0‰Ê™r½"/dó’ßSué àÓï‘ „¸ì>ÆVr­óa[½/"y¬ כѠàgæ<ûy ê2FØ2MD9¼³&ph²‡oîi3tÚ.mÎdú‰ÞưÇ÷ZóöÌ-¯Mö0_Þ’¡'~Lý*e¬ÖŒxRƒ¨9AƒÏ!~ `™â€UÙóY¦ÝæѾ½ƒZ†˜¨€´¹0ìÅc¥nß’pJ-5$õ„€“†ø(³¹`pƒbÌ”GjFq¤Ðt…3í³¨}ƒui ›¹‰÷Ü8RÓ±<0 ñ›(Á¢Ò)S¯ƒ®1åL = ¸‹<êvdF;[ÿ2 aÐÞCâSùnÃêBš‚„‡,3 L²so@̲Ƣð<žõ˜ôŽÇ§À¹·ixÜó åÿ«£¬â¿Þ,yµjÓ¯›ûeƒÚ¥5 ™&ÏTŸ±Þœ‚ø™K°ïœ*eÀ¸nP8d8f¸ÎºÝ¥R·{Tö˜­_Hx¼ç£Tã³z¯äÐpÒ{|9Ù0sMÜ¿6M¹ mÒHH}ïñ =€®Œ«>ð.ZìiÏŠ•º›ýGå|±ºIo‰x-ÄN-p«„¹!HwÊ`nîö]®ƒZlwË!‡ð3;þnȸÝTÈ0‡*BÅGj „95êÈÇ'T9Æ EĪuï”…ç@( 4Tv@ IÎ}ص@³`.š•0b*V¤’¸ºµ Qz+9V=ÕG §Og×ÝÚÕêÔÁ›ð ‹r ¹Ù4ЙRjIXÕñÛAzÆD~§ý-DgM½ñê­d8›E$d ´Å(ÐÞq7¾=¾ ŸÄB´{'(ô“^ày# >¿½òiŠ9ÓÆ¥Z„è =À0-G­ªåÐæ õµÑƒs\…p³iûy7 眮)ÇÁœ |ÌŽRóÁ>¸æÈsíÓ3ÚίLéáÿ¿ü‰H6ª à‹Î0ñg>0ÑÌváȼšòž÷E ’þ¿~ùÖb©Kǽçô¯ÕÏœþP—«È†€4&dyiÇuè…™/O¡¢†ömh;²’=šé&·ccÑdJagp Î4¹/öéñ¹´¼_©d>+Ë)~ê€õ2ày¨Rz³K¡i„(4¢ÛÓ0ùߢ‹‘.žø5Å™µéíd`æõ÷°l¡^;¼)¾¾6ÿ¶ô¼¼X9ÖâÕ´?ZæyƒEòz¶Mî­ñùž«ŒH^Ó} ¯!ùø#p“yŸ§%«æ«x5¨kÝ:N˜ 2'ÓR=Hd®!à 9Vhñ]ÐÂ%%¡…h$ü M/ç¤mP¾Îpø)À׊¹öGŠg,²©Í.w¦,œ½ó "ú2|^>æ#Ï8쳞ßËüÆèwÂâP?© <À3? ;ÍSEålB©µ 1@ ±Ù+©‰‹UÜUMLª¸Ë-›ƒ'hÌF8c-Uõø›uá@*Ð’ ÈdT­uõ%¦ð®U¤Ýî;WÐJØÉtÑ]á8ê”Aú¾¦Àüo°½¾¼L>´kô¿6+€ÔºFYÞ¬êÚ™£ÁróÆó'䣌Bòã¶AÊÌ[‘r@=ÐPŸ9 {Ÿ±÷®½w [èjÏ{0/XîÐyýÈÓö”¼¨°t2ºE LýÄ–¡JI\î‹Sv Q‹jcL"& çHª ]Œºd}b&´€¯m^Ô éRúK¸d—Ýä_ø—ÃéÄѨÌA¡#¬Îñ8F¿˜°O¨Ñü`ÃÈ“2`_á]Ò–îvjÇ{œÉ]ù‹Á¯Pô«~£l),˜¶CkT„Äõ³,|Æà„-† "Ÿxôhm',OëogÓål~ï+”ö;7½·š¨y'bl†æ[›è:1f7‡ž}¬B›V=F‰èHVgÒrEÔ]’¼tÅøg8Oæ!óËk¿sþËÓž‹Pfh©›v ʰ”‘ÂmØ“‘…aVdïÙ"ul5$0ÞÓxÝúë¿OüÒí^m€_©˜cvŸZSQ„6Ôõüµ`ÄhÙK‰]ËŽaΟê™)ÕŠòœWr”L+èŸAÌM¶Ï–Ç@ ¹1 ªç¨ÿG£‡ˆ·ññÛû?Í䄜{ÙŒd¬K<ÜÚ J@¥Q' …?ãa¥?…H·£*É x¬M‚ûï͆ÿg3ñÀÛ=µùkÞîÚù`ñ`låéß!'‰ Žh `÷çëŒÒÝÀ¨Ûhü~¦×PgöK´ —Z®o䵦¶Ïmé8^)Fe­ßÙpÔˆ|â8ÜaËÀ=RÎüx€¥ðJbÜGà‡€Ø&¤!øÏxÅóÚ ƒ2 —i­‡ §fÆ?_vÌ8!C;‘Ö¸õmºì)ÿÙ[±hG ˜=·ÀÜl aÎl (H"ò#úúËtU +ôÚ”r±Ë,8&¢Í̱«úêk©“ÍÞ'¯bÃc™7c$A e+îÑŠ(f*ÚžmÖUTqîØåM¾>ƒ0ùL®Q%3Lrz]æ£o²pµÌ‰5paŽv%H¬= &E2 Õ”1Úy Ž|D|Y]¤ÛîÑ,ú“-û9¢,H Û—9¾´€âw-À/J¼†MÉœã|- «©©“¤÷EYL°ïûÖqå4ªÙ³mߨRú“^5j³î†Ï…m>À ûR@÷×ê©1JÈ$@ó 2œ2Ä`k.˜Œ7ZÚuŠ>õ L-ýÿ97Çb¼ëIëº×æø €çÀtŒÖ7zŸé¾Íˤ3Ù ÞhžðçíËòd«̸¯¦HÖá1=}²“Ü•4 Ìj ˆS!ɵ(pf¹zÜûdìûÞ¦± ¿Yß3 j$ñÄ6!€:»k‘Ÿó[ÓxFr‘žÝ~”B%7ªºÛMx=//>ìåļ8Z<¦a&C(ò™™É©Lyáû½N§”BAž«'Ç­¨³ò>¡Ï¸dâå ¨ [ ðI(ŒË¬mºì7*ž˜|Pu +¦)’tØð\΂„WXÌ9 Ð|·`ÈoÏ<†úl08§6$‹Êµ "ÄZEì"@Hw“ÅLKCò¬ÄPJQŽõ%{‘.rëþQ¥)PÍ{Á¾}w,¼³”.H‚¬Âëá¹®³z_Ë<”Žâ –8¡3xr7<–Â÷cLÍ>½Ù”>od½q[9ˆörÈ2yE9@mBØ RtÈ)¾VCµ5"„Ð&0ò†@‡³ Ñ1{Ú&àX¦Jw¥·ÏuLœÒcMd°ôü]+(Ì c¨oëR(˜Sá¢z«7&ù3Bm€/!œ»˜¨ŒßÕ y#ýçûQÊÌ‚êYò=I…R9KJDÏœêÕÎÒå7vÜÌ"úÐÑCÍq§Dæ¡m‡áQ©OöCøËÙ©‡4ùV¨jÚ ±­.¦·•†0õ:ï÷ðPá*\Bbh,žjwpÚ!Ni¢¾ç}õ²ÂȰòs¬·¦×Ódï{n%?^’ÍíAÐ}Ù­=!ãL@=û]qw*ŽWÕ5Ãæ(‰@F‘j>UoSÕgjŠÈR( ×¤ÞÆOj¡–¶ë$lçì$óJD„ 2ü÷ú§Ðmÿ¬ ã1=6L[˜ÄàVˆv'¾ÏPñìÊÑÊ=ø…$JðsîÊÑ’n¤6Ù+@R(¿ër5CthApL= R“(_æ$£ê¾ñfo]À²I†¥±IƱ¨Gô 0ûiÜ´:4ä%±Rvçüd\Zmäµl‘EË»¼¿Õ¨¥‰•!†ðç}¾J@8F¬ÓrnºÌ˜š„iC9­ÍN+Ošã[ÊP þÈ{’©j„[ö@·¨x'%&çö‚…"`vþÌ"{Ô¤¡Ä€ò½ß¹0 þþÉWå~w[ %p,JGÆ`T_[®ugëâÝwÏ/BñÆçAçòù9Ñ~‘ÐòÑTa\s¨þø'Åú~ Å7¡ï¾èÛ]sÄšUnØsc@l ˆõÁËë=0“*ÅlåCýž {ŒÖü«''Ü/Ÿ¥”ûçÖ@w(´b¦%üò[PtyéŽüÿ‹ÍJ}šñà!Á;Ï`4Jˆ'X¾ëQ±LÂG['ˆ¯+Î ,§ÊÙ{ôa/ÒØMƒ7°íèˆ6ëP8‡šòÖ›­U¢ÌkU|ygù™O¬•egóN¬ÎTùz*ù $õ½6-ÛËí<|zמ¾MLÂ>X:ÇÆÃùilîÕÝÎ?×x²“¢K¨Ð’X3²?™(nÜ)ït• Œ!y΄V¬Z,í@:?L{‹g~Ae'œÆÔû;=â›>²“¿O Ǥ˜Äïñ*w·' )oBŠ„†‚\}ÏÂ!Z9ɦ/·{²F b›ÔËQš×fTƒ9ò`4ï#δøU ÉNü-—úC\ÎX™ÚÉCЉpKH¹OÌÎçõ6wìß=®§†G²¡Æä­'0Ä‚*J´C‘1X GC"É%‡Yà"¡P!0è¶Qø?£õ]Ë“ÍÖE2™,ϤòhcN$ËÜ&Jí·n.³²wÙͧ+ļB¹ üÇÔ¥{_höwö¿O÷ gÁZ˜Ü6=ÃŒ7‡(H  œÃ !œÄ! ™}rf +žQŒt¥7—®õ§Pÿøï¯ÿ5ïq1(þŸùêûó!|€œáÁ°AŽašKM0ø™Ã6f½7Ø(£¤¬Ac¸FD¦¾oØ(ä,§ñ9\¹:\ÃW“ÈapX»•ã´aÆ`äÈ•óTùööŸjt)ù”4^¿È¼ HÎp¾è#qv»¢c- _#~£…FIô.a}|ƈþ~iІát±äiüORc¨Nlvã³Ý®\uIr¥µØ^T®ÉýN?ºÀJ¸žÏïxÒNe0f<ŒÛ˜`¢yüÓ9Qaת7–ü‡ýp_yÐ&妨 '-m°iƒü½([»`®öüÀëeqGþ_}šÁ, ïݦ‡î³ºÿ’y´öƒáü¡$3ßí»À¶-pÁ¤´Ï ³« ~œjá9©øjô“ÆM}—'¦|eÛhðJékÁ»ó™›è‚²\Šáâcþ»žîþ‰P4ïæ¢Ï7Ágs‘æõíSõHcQ  !"7Á1´¿¶o”HR}óa),vpÙ=85WGš"ËØ5²õq¢Œ*r´FŒTÊ¡)^®iQGa½Çó®FQh& ÃÑè¡9*D¶ÚLÃŽ‘y¹ìÂbô7b@ÜOc?oB€ßÞEÔ49>j$Dĉç£A/AÇ Õ0íÃr™?zçk@·N»»*æ sضÓv(d›#õÀ鯗ÆÞ,SuË‹`œ¶’2 -Ͱ?”ôXýÊ9s)g6ŸJyW†¥Oúz u4¡ò² —ë®p„„ l)¦”»A ðe›C&{ìšEßÑ7û^üÄÃ?û‡ë½Ë5:YØ'¾§:ÉáË¡IÒ¾¾Žm*RpÇN£ëŸK:')·`ÕlÝÌá‚FFþêóN’ÙCzºðË#ó\Té19íÖÔ“|óæo¶æûF?¡7½›¸C«‹m¬ÐôâÕ¼è}úzj|-N_é¬~+Q¾©Np¢Éâö×2ñÐ¥&uY\ wo°žESå頖Ɖº(H¦=å·˜;9Þ€OÑѵoHilRIó–ÿ}Í´Ôøšø]$óßKÕ£þ¨JñÓ=¢Ìs ¼Ô´s Iœ>ç`Ò—aÊ@ó›*´3lC‰‡PëTÎï|Ñ¡Ÿ‘©yEXí”2ö©q¼É7ã°?E$åÏÌÛÄɈ$ƪŒÍ="«ŸƒÙ”×ßl!à—Î)øtŽÌ]©˜q 4Ꙥa³p§ÒLѸ$%3Ý>ÔØû4EfHCÃJÄ$Œ˜&`Yˆ$:Ä“"O²á‰ÙØAÊ3Œ˜a™†f˜j؆ƒ%guL'aXy™Í§[ößxå±M#VÜïÇ! Ñæ S9—$òøng›À2DzÕ%fxÍCþ$9;ß`€ølA-eÈr&“ƒnéÀúÅV%¡¹¢ÏìjÊ‹ï‹^ô;;–¿]û¨ŽÊ׿û<{š[¡§ŽÁ|ùzëÓÛ3mûwJgAÜž1a6±WúDšŒ[»ˆ®C ÜÐÏ"ˆvÔŒƒ¥ãŽ„î0æ¥;I]©öüüúÒ!Ž( ˹•=eJ21 E<%óIG×±ÞÍÀ¿#ê½-za¶5#’vÄ¡üEÁš¨v=,é– S¿{%N#’ÄôHºöVï¦Í‚y2‡_ƒ,Ié<”F˜ªvRŽÿ™Ä¤KΡ\“?Æ ÇʈD-ò‡ö)$ï–î@²ND|%1V¸ýÿŸ©q¨t›/rÙ zyÈIßl}Oe…l¯ÙÌÙJ–€È̆oêÓþNP° L?qtËàiA‚Ö0 ¨áEκÒ`$sØ=+2H¯k@Ï‹8Ö6ô¹d: R‹öhøÿºbùÄ¿®¾ýz5c6›°ñvvìè“ÒÓ†“0•\Y€ .}“bk¬7w×—°Ó“³6á{ Uƒn=Þþ“Ínç±,^ßÊ?4Zâ®ßðë¯l›!7Y-ë“Jx$†¨S‚qŒ QDRTÃßÂÛhOèž¾žM}ãÉÈg¾Û®çËÊ(ÂÐ/NuÇ ›VjÔ¦9ÄßXŽ„„Ú0¡Ö 0Ôo/É÷\µÚµæG¼}bxû‘äfÝû7 áïKqóEþ¦]æ¡ôÂíÀù8÷åæq¼=n¶Éè7ˆm}‹§xÿ}¥¦CIž0FTÒξgž3P» IЕÔµ¸i’BïkVÕôh…3|k»×Ü…¯éèæªn‚˜0K ,?lD\çÑ“kPÃ×€¾ÈoÛ5Ñhwl§Hw‘ïóxG«d _$9FnänðB€-6ù±08öˆ›°lp0H`Óßš=p/£ZvÞÞ„›ˆPQ¢9!Fn XZ¨*+à(AÈ"=Ó2Á»×‘3Þ5ˆk®3/þ,97­l›6üAY~mSµ-ܸŽ{Ïeõi›ìP% ÀÂpº¾‹–Âݳ§ ôÔ~®„SÎ=¼½±jZ£lÜ“eÕ„ Í&—ðH=§•­$8J ž«0?'ÎsÙ©ÍœÊ=@úWâ?*¥ºª‡Ô结ùÝ7ßÁþçVh^Ewr²B'K*çAÎÛxÞ.\é„÷—¸ëbá¡@ô3¥ÈHd—ÒÆ@•tH“ðžô§°P¾×4%õSCæÏ×1•Ú% ?!³±µõ±”O¡0ðHq ýïTkAÚãüošõÀÔh—Ë „þ6ÅæÛ;*E‘|Bê} ç$íi˜g[z'Cìßï©CV® ™Lhaø¶ù‡,†Ë©½ý=ŸÑ•õl€ÜQj2÷ú×UÉ€! sõó1ä‘@rUýE#¢Dï´ªêg—U3 ŸÅ|W2Oºé P£Z `×6 ÜÏ9ÐÝêMõN/Hè·´^5Å´­ã¹úr6û¶CU;}ÅHø@ÌΔ,‹°Lxº:Àöí”ÙézÔ2[êð~})²÷}«—+ÐÎåJ³TN@:sàŠbÀ#:|Гݑ´¿9;l–7¥nÍ&zèm~,ƒ,%¨FÀûz€Ú¯ß!­×Ö5#li¡ñwX®®|t¥V+J޹/H@½YbðNôjÎÉd¡ÅaLs'&R2hÆ‹žŒæ4?ßFÌ Œ„Úw¤ƒÿ+š° 8~Õ,µ1 ½ã`!VÀÈåÙÀ;æNÜû$û9>õ>ZìSZ¯çÿºæþBMÅ›-öj°e¸^~Ä_hR‡A®n(_[%wPcƒ~HÎ h¦k=ÞÿŠOÇ‹¯?œ9F ƒêxo± °…&Höⳑ81‡r… ’6HL¬˜3_|Õ%¨%‹ö¦‚íðó (o´Åelª6(ØlA8Ò0qr¬Øµo{’îþð88ƒ(@ÖŒém PB¡5€¹¶º¾tS8†€¿«ê,’~`MCÁˆ±±‚HBõ¨óÀìɇ÷”rÂðzNuý~‡¼ÿ08«MÚ‘‡Y¼ $‘c¯nÅ jI3Ë–Í-5íäB˯ÀeaŒ¦sµ3Ö^rÝöÅ‘µ¥¿ìHÎþKWý:*¶@¸fŽh­$"ô ( ×Õ6* ÓAŒN_Þኛ¼3‚Ó·Æ«1áKc4¬€šL9¡­U—·ç¹?pz ÷©ù!ðý”’u®[‹MÇ‚ru}¢yo¥›n3/úWdÿó>ÿ+ W±¯Åü¾'³ùÔ¹ 5$Š—^ÈdNw“ÿ×egú}'Dk)´~_1œWS9´gsç=àWÙDt’<ªlë¨4ŸK¾ÓhwV)ÌÙ¯9˜­¾çª$ÀS6»Ýé‚xÊ=|+fÓ„˜Sð^[ÂŒmÉ,qSÕzÜ|wu»B˜.‘ŒéP κ‚í&èÎÕÇU'›—V)BÇì‰äbušR®\ÿß— Âd;ûÜ|^í&"÷YçÛºÇI95þ§œI›sbCirÔöݾT’ÙË%¡5à Ó™Ngk)—•­FÆu¾ME«cSeo]ÂXâ'ªßIeŒ] %«(Æü!ÉOJáÖ»Ê@¸ Ëš çvw/hvÿ†u£ÝŒ®Þî+þJ>ÕT zNé\4…(Ou$òj´-mÎã±5¨(·Vãü©È[”¤£³úE *–E2ša©#Vƒ‰«,6K¶(]¦iÕÞ´}¿Å‡£bŸwc¡ÕâpŠ\ž§Ra|7çÆ¬ëQï%Ub2u%€¹]Ü@¤Ü‚GåºÊ™_•ößRgûÓ0`ÖáZﮃ}û•Ú«gÖ6Z_ñæè NÆëõº5 ‡NòˆBV‚¿Éàz& âÄóõ}qÖ1ÿ‰°eŽ9°÷ÍʶƒƒÖYOaøÆÀ™S#ÿ1…n>WºLV2ºå&Å—ýϳøÄæédŸ¼TëMjÔ÷qÃî‘wo§!Sár¸XtÅ \¶2æ×.qÔÓ;úQ¥´Ê%~»Ë³×xÛ•­eG6ŸâK‰š3ƒ¸Þ§÷|·8†Õ=ð=Ÿäi§]nCrÐÃý-/¡8„@¦ Ìó’s›rÆÞ¹ÁvóKEë0¿\ä¿Á„¾S.€ÊŽI›37 ÑJUÜþúÞâàLÓ3|'S9E»œßbòú®×Y¤Ý^Ô ™œ/óØK°_Y!ŸŠ†¶Ï—aB&¾¿Qð®7`ݨtò3Ënà}·€¸æ+°~£Œ ŠãQÌÛtâPYi ²¾‘…œÚ™"Ý2fÊØ^{ÇrúAÝ9!$‘¥ÞDpuGx@µ­ã¾ƒ›Ã7@ vÁkê0´ƒ×̸;U JÖ(dÐcÆA´d÷ãÁ-wG‡ˆ§¤f0 V w0là¦F¢-D4õ]5ÖyÚ´Uå ê‡÷°}·L/§rî ’ü¬æJ£aœÈa]‹‘‡4!KŸZ„>Gò’”k!ó¹…miLÄu¥ƒYÇ‚o+ŸêûŠÝ K³z² ô)7î€è\ç!õÍÒž6ðü¥^±¶ŽÒÒê¤eÞšfîtW9D³æ@Ï‹˜2g³AˆÝè(Šò%F\…††³Zˆ<@h`s Á<Î_ße"ÚÑ5Î'%Ê.[–X k×d¿è½^þÞÒÃ¾Îæ§½ ü°ªï¯D“vY¤ éU <ÁöHú!_ÛªÍ×ðl.Þz†ZRÏ]ÉÇ¡·’ã‚@1‘U7žùw­J]s8²R¾«Å ä"ðáß•%#<­ÙÐ2ª~ëÆæåƒáïðæiÛK ë–ÕZ²œÌøx£÷+«c|Ã1‡]æÄèuEˆF PÖþ†0øýüèºðM!]ûO{ù¦3Ȱ¤b±¿Ð w4§¦z.èüÿðú-+iRѶûº~µž j%Û9ÜÔB»—QB ˹•6‹œBiHR¦ÕÌÐÀ³N…Vª³»¯-2}´üâ$ÔËãI+ GS[¡7ôŠx×ÀöKM„Ķ©’¸Ü´ ¤ uXËùó#—1¢äÁ‰f¬H<ΈëÊ-ç¯çܽ#1£ŸtÉ;<2ç~õ£÷GÉS©lPgÝhô¸Ló„P€(ôY!ª4=êYÿ#º “ú|¬¦Ó}½{¤í<ëm7\ð:ªÞMêû+*XæL+{ˆ mƒð¶–PSzd Êd¢¦¿k åCìòÜ~ü‹ŒƒU÷ÄùMÿx«xìºÀf†ð#À8Çž/Tˆmw6ë¥Wc²L.e‡[åØb½Äò®UnsH';° vÒø NË›'z•Ú’ªIœL•»0Š‚¿÷F >¨ŠÆqÌŠA£¼Δ[PMðÝ``®f^tMBcëžà[Ü^eŽö-!ß¡ä½Ý \aû”Ù%Ò ‰ú|bP©z¨SÌ5®2ûw?&êëOæM¾½á¶ö}Ä;Áªj £ØÍ…MB´2ó5Ÿ5*Ñ &`Îhéä³}ŒñŸ[ʽj©í&CWõO-Œø¾®Žkð„#”väýÒ»ôñŠ=™„O“~OøÜ4:Xy šO“ñ¢³ÜŽü—ßrŒG™•¢ñsTX)Lý Mfþ·S+ù¶A»\›éŠ–¯úŠãÒñÝëx“ÝHטRIÅC7=À®Sz?Ž<º{^ņÿçÇœLÚ_ž@f$@L Üšpsg(:É@Þa™0¤ U°¤ÈB—f ˜&aþ°ðÝʘ'D.d+` 5œØ=*E±‘$ì:¾Bd*Èk¡âàžÉס&NŸÈ~ßÎ8:Ò”†ê~^}¹Œ)À½ó±¦âé2wŸdYR‰x0o4Œ½¯àÒÅQÐf=—ÁÇÖ×LüeëÕ pTm!Q§Âh{¢½>­’Úšòº[-ûz¶Q˜`3qÖ”ÅÉ ÄR—âÞb‰(Š:¥R+TQƒúŒ»1QÍs¨ÖÏb¯rßw€ Ä.ý„åá–Ó¡*ÚžqCd¦û¬°ræPeDnÀá¿ ¼]ñ™òNk£YÓ¡ ,¸¾ó¿™Ìù†0ÍŸ ç¯Cµp£\¤5êð¨ÄIu ðÌ¡}1}Œ»ÕõË©P>o ßÓ±¨SÏЫ>´òÓ§ÔS®+7J8¯—´®n>Òw뤈sÄï|4{Ü€¸ÍÒn¦çù8ŽRÙUÃÙ]Waÿ–|­ð4’G\”J9únksƒüb˜Þ}œE½Q pv‘4 /`‘ÔÔ+| c³¯À³‰Óq˜âÅ;•6–·§‹ ¥›NÇh÷ CUóŽ\QzÜ€lKV©Ö¦±kc©Òi YæR2Ïþ‚,Í&ŽF3ŒÅþ{ze΂¶ÎÙЦt¢   /*M´Q¸Í¤^´²0Úâ¤àyzÙpO_øzɬÑý^%<›.i$[ƒ^¯é—éàû ÝÑoL\3J„“òËüYÜ΢ÂÔö¡>-¡oË@‘vN  *¶i1±¿‚-@@˜"•r(ˆÐ /Ç ¿mQ¢X„3t ý•ƒ?º]H‰v6™çX/(ò5.&mÜ/bÎ ú€daœ!úVdO€U §®à©Û{Ó5͆Ÿ[Gɪ>VÿC*•êP;¬ƒm=:‰2 a.¦ïU´Í<¶Ï1³ñl«1Lë¬Êí¶ª Ù îôóÎqˆ…ެʸ yv&Çu3ºh'M‘V!ËuàÜâù2—êáŠÙam>VB+¯x 5¤¹¡¹2„z Ùn2–Ƨ—’Eê¦ð²cD3Ï9´äÅ"%ÙçXöWöP³\H…‡8]O¢=¸¡HŽ t®fvïƒ$SÈâ«¶|ÖË\ýH~ HC šß7hŸ Êc7pµã¦CœË¹ýÎÆâ¼å€%Ö™/X͘n„÷e¬GÎà ß$V‹«`ûˆ®ÎhÒtÜ‘³âÎû®gΔù5ÿôd…b‡©‹²úU{k9-ya–Ô:ò—d#·zù¹-i!6•½NÞËCÖ€Òné%Ò&Å% €Àãw”<Å6‡Ngj”ûàŠVú)é·:@Ð…ÓuóK¢dõ.•ÌL{ìï1…—ã5s GÀMl¡ÛØ«0–a'Šh[.fDÚv¢¹;i`¼›'ÐL\@#ïݹOɤD”¡€€z}txÓþ.“Î5¬°¦çÛ=Õ-’»[/}ËaKÈÕºî(;º¤én¿ îsÒMËh.‹aeÔ¡<Šœ™N¢«hÓ¦¤½Â…TŸßÑÝF ¥#ŽŸurt´SºÅÊwsrIŽþ·Øs,ç-=Ÿx >kÌIxvŽ©óØªžÈ\;ûCŒ*Äd5@Xhõƒk™‚ÕbŸTê[çñûgü6€~’Ô Èæ·¿oQ6›n y!Ìíè —Zš§“ùlլòéÈŽî5÷ÙÖÏÆmŸpn}©Cƒ˜FÿŠãáGõ6vßãíql/$ ¹`NÅlf¯š=óµsUÍ óS-³Ö'ßa_‡¥É®ÿÈ¢(‡XöOJéRñïn8 øø|­_¹ùêtß<‚¬¤%’<{evßÃÄH9÷‘ì"äìæ f0ë‚™—è˜ÊÕæê]íR~ǦSó”:t7¨W úŒ"D–›Ì³¡38¥³ M!‡*H 0´ Ãךâ@]̓AÎ0zd”0êU°=ßbÛFC˜dž› {EȹaäY’‚Ì3bÎs ãY'4|†‘÷ÙÐdÀ cos¬%KÖ´gÒ°ÞþÏy£§/%ɬqoíaж—÷Rú·¶ÚviÚàß0¬jÓï`ȇyž #BC„ )³y†Ü`ݦŒ… ˜aU6°¡‹uL‡bûÎ<¦Â„å2J·f̤Ÿ8€d› 0®…xBŽÎDÂè0„%)“(Ó`¬B†7ó“ 0ÃŽÙ¨Ô&ÄhE¶a “…½ClÈ@¤ÀŽI‘@[6ƒ@BR©„&`Fâ„ ö L+sa¦ÂRAý@À̬ÀÌÃ3C ÀÀ(ÌÀXÀŒ @Æ0ŸÈ ¡ƒ|ƉŸqí@ÓvšaY%R‰0°$ì†Ñ&H ì(˜9 äØffdC ¤µ¦¨¬3+%Ãà 0 0"ÓDÔP†‚‚,"A´`@¿5Ì‘F¨„UJ ¨L¨ˆL$Õ„vv@0Š)&Ua€&A“  Ì* &D$ÌÉU†JIQ'!Pa…C ˆ! “Œ ‰àãöž¶Ý·—Só»äõf~6èuɽ)û”p´ V0g6dÍÐûP\?e2ˆž è'¶þ·ê*eÐùõ}Fæ ;—q¿kÁä»§ŽéÆ 9ÂcðÆÕµÄ[XÔq¹]Óanéè0ûƒ+ËN{jGø®ÝÙœsjYµÏÞ_]P,ó$Ä 0ª‹‘kš+SÃxm2£ýÁÛ;ȱh÷LmKÆ’F¿4kLË‘>«`ÍG yÂeøŠÀK°¼PeÙ'9©>­M¡e4Û-GØÀV߸óî#Àcf®ÜÑÚ˜X,¢ÃXßäa©1GX9¡îŠûŽ\hNÁql&5¢Ðä%±k)¼ÿ9!µÃ¤¤vh—Á6é9Û<.&4=í×®V¼™L"ålQ“$pøW÷¶3º‘“eðùâ@ƒÞŒ†9„— aûÿþb‚²L¦²÷8ŸF©MÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀ4~=½÷€{b½îûÃî¾¼ï¼÷º;³Zîó]ÎZ§—»=ç[}»½:½î>îwx÷»ë­”¹ÙÎÓ[¸öÞ·5µ»í»WßuÜÜ·{ÛÝë{×½^û‚*€ ´`Ò0#M¤ôFM4ÓF5F0#Tý5<ž©êžÄшѣe<#&Œ¦Á1Sñ6©²4Ê~AŒ&LM4ÃCL†A šd˜i¦¢¡M4hh§éO š#hÂmL ˆ0M1OFšf¦”ü 0IêŸêzšh41'Š›dõSð†OF‰á&41LSe“(Ê~5 &M4i3HPŠªŸ´hИšbdÀÔði˜ÊlžjŸ´&Dòa6€4ž™M£ bÔÆ&‘¦š1OÉ£&j4Ú2zša4ÊOOS0ÒOÒhÉ6d(UBm45š5Sõ<#M4Q±¢žÒgªy56hdÐÈ4ÓIâ#êi‰”~©é¤ñ#Ó&É Sð&J~£Ô=i©½ i²=&¦Æ©â4dÒzi2i”ýPª©ùLdf£*~ˆÄx˜‰¦¦ÂžMM2 Ñµ4h`˜šzHôÓOQ£!é6“@Äh4Í$òMŠ~©é”ò™6™¦B&ô†Sôž£LDò1O †DÓ52‚I"šiO&Q=„Ó& Â‰éM©µ<¦ž£Äjm?J~©úšdØ©§¤ô›L™OÐjm¦õ2bƒMFj6”ò='•6§²¦ÚM4mSõ2OM6Šh)¦z‡¥CÕ?TÚšzi”cô1™3„¨âƒ!K3:q&<©KŸ×qhà‡‰’%‰ƒó#ÃÃÃÅ`nB/¢aˆ 8WÒL“%ÄøÁ|#xÖW¼ $lŒþŽ—÷è¯;Ë3C#±Ò~É~]ŸÕŽúp<¬´Q±’éô\+aškÌÐT»r‰gÃÎ`7mÛE–{õ¯e¯_Tú«cê/{êù—û©LŸ˜ï_hE*Al¤*¤ççLž]ÊŸñûD Ľ—f™èSÒaöªÝ æîT­†ŠÙ³‹P£J­»í0Ý%ÙjVÍ EŠn{¥Ö2s;µ£Çà"Ó´'‰8ÖqÇö7úw±TšhǶh©k ÛpzMëÍïõWØàK Ñâl!–ÔñN'—ô§£\¶Æ°öìÑ3…è(àø«ÈgãüÞnÊs• ª–˜Õ÷œŽ«€oPÂñ®§5nsž|Ú’L»é„$$Ã$€$_ªE:0* ‚à@àÙ C A(ñ„ðÂaáÃP.ØÝð(±ÀA:Òð<$ $!0Â@½áŽxÀº„á!è Ig†-Æ„ °`HFáƒÀƒð°nÏ ÷Šaô’Ij˜ ‰†Í`¸ÂiÜ#dÀ } ïk„ðWí¸X^mÄò{ïùhÙ‡Ä$•›ÛûŽ—UÂH§˜Ë°w"`0¾‹Ä»>#ŒœC€WUŸ“¼ÞÝÜÁ-«tJn”õ4_êøýX3Óv›Øpú –‰ƒ>Â@Ì“2 › Na$ÌÌ ˜2C˜yNk ””àó(©:ÁF1Dį;•ÌíûY‹H'rÂõºìÓUŒð%4t×t~¨"J½îÏ<îsìc~wTmê¤+ Öš¿µÆul\¶<¹ÞÕÁ¯Àì}ÙœìÞ›Öö/ ¹¾—»´èBZaó}o¨§¡¢ÃÚ~÷à–ÉbƒÉ5ûûFÐÈúà´·`TVKè` °‹â¶€½¢å-žzßBÛ~P{hõÚAN‰ÌH¨óê-C(¸×{¿}2L $ø<5Ø¿-X“ìsƒ@`¥^Ô mž2~ÓÝÆlµÚØ|ÙfàÖÛËp´Ø:½ÑíxsÙµÇÅ à_k‰$Í÷$pÅè!„â\åÑà3˜*($nšãμþ\X£ñEÿIm† z^(ÿs°"Ž å„ðhâjû H½®ãØšòx1FQˆÞ“&ELד†i´¬ñù1ÊVn¼Y,ÇrÓØöAbïaÓ8Ãþ¼¹€‹çêS@^úð@·d’Æ|»8ÚB:r[]šù³¬ŸéšÅó:w43¶kˤ‡ßØè: ˆ„ï ^mJBâiÀÞaúí ZàîÀlL=Áþ_­³ ÌU(’ÌóƒÅΉ³I;£žsÏ Ì°KݤÉxõo¤?ÆkÀ¦úp v9‡<ÍS ‹ÚÊŸˆq0 ¥EçoQ¼«¬(ˆSâuæ©J´]dt´ô*8/̰ۡþ =ïÈóÆh”=ز7{p@¥'¦{€Ýo–tü¶TRÒv¶t’*Ò­yóà >Q·×!YCà`¬e˜^Ȥa)–BÒ2ê4ã$,cÌÈÜ´S/ €ÇiÜbÝ»!vK6ÚÆ1G$^#œN²—X9«˜‚ÈdmÇ`Áÿ΃¤e€aP²ÇæäŸ ”åë,÷ ]C‚Ø\]ÕDa?wóu<¬×]g®âüyMÉNMÉ­A¾a *ñ]&›^¨3á ²Qkr|€m~È×Kd$ÂÜâÁ¨tO…  pH0†Ñ`•Uî!ŽšÉ/Q%Euã}JÈÿÊü9‚÷f{ž 5}¶Èëz˜?DA½d°W+eÄŸ ©ïƒð`¤È=mýî¼Y½—>y¿CÖ±Ál]·j_¸`oÔ’Éã¿ eŠ#÷ù`ÍåNØu?üááYTÉÌîHe[*.ðJ•û"ÞyÉ<ÃÙó¬ë5ÞéA瘖?6oæÿT æu’Æï½ô‹Ûn™;q7Ö¼gÃùáÁ=»ì³åúŸÑR]Ð×¢XN»Ùu)3ÊÏ€%èngN¼rd‰oð³¡7)HR‹þ®’˜8˹’mÜîÛùE„]¤Ì-âQø»j¦L šZ?3ëk/`ã@ W^³´‰ÚÚ—8Û÷ûán¼:í6S™b@Ù‚Ì“ƒàsï.1$uØA`ΰdC¢¶´wº±ÜL1Ò2€Y'q`!·'‹•,mæuõÃ÷¡ãøÕÓ¬x2/ú2™WÀî×4¸U†êbÉÂP¢»¬•Ð,µJ†nÊ?~" ”Mš^DD‘PŸ}WÝRôqxïf-r5j;‚»14áÛº¼¡Ç°„Á,˜ì»X—„qtæÜ2ìÿéðr¦SòèDŽå¿¿l\2”>ßýÚ´˜Î@ZÊ» ™Wee4NX³Æd/‹Ùë‚ôùØ­ÏÁ=ñ÷Pã`ú¤N{"”`¼»Å­1¶øçõÝþ–šf®ÚþåäÌE˜Á@>À Zë<7‹.Ý(œ‡ù˜ªèú4ð£ð7èmÀs (ùÅ,¸V2\H‚¬Åïv*üjsÿ³y`ñ)“W-ÍtáM~ëÚää>ªk÷Ew¨7üL»ÍgÞnòHͺøÌf•LĹò΋[àš'Â0èÄê„„áè€PpÔãÍulߌ­@  ÌßZŠ£ 8oËÀã²÷'á¾à~ŽšùØ\þ_ÇcãK"Áã+Éc"åÀé0_²;•B°&AR¦¼LŸ?EÖFWhyKqª JµJ}6q‚Mþ_—~%¸$?+b«í[{>˜Mcú”)ÏQÛøFõ{6ÅUÏÀ¨3µ^(Èß'´HÒ¦º'Lzá_'W´®ÁÅCÏÅ—^‚1¸÷kg¡c5k8<òX,¸Înðü‚üðn„ÞÉkôŽFŽi¼am'¡¹Q¨1çùÃÁÆ?; XC@"‰Aì/øtägvDÄ!w0¹TP0á„zþ¢Œ¹>õxiú$Ààg#%™Ä;nã}6=ðÙc¯LbXxúKˆö-lÖÅ*A¨íà¿_Þ(iáQ´±Æ^µH¡Sv§lÅoô¨œˆ>Nlº„ûü º+ÕFÕéÇz¿el=Ô]Ç1zíÿÛTO´Q½pÈç—7k1صdºc®êà÷åˀ視¨ªkåº<µÈuJ…øk_®¡¢ðîNóòtÒ]·âžÉÕQD:f­ùŽ^º%—ãqî•··ÉÖcä?û…eEs¿î®"¨¡³ ïp³mz2t]½F»gô§ ¦k@“}̃‘‡WΨB˜È¾hPiºüX$Zá·<=I(âFæÚÍÅ‹a" a*_hAe ë€£cF–x{¥Ôio­±¶!_xüËFÚ2 ÍUâY*CCSá©â §Ø<ô²ÁEð[—iO1墺·áSmÌ‚Ja˜çÞ·„ÍZT¢ ÿ?ض-6ݪÖù™€åÍà]‹ÄaðA“j+=˜—U%õ /¸®¾$jW:›²¡8fÓ”eî[F‘ÓX;l}s½O5?Ë=+™Ô6!×ÂSÁ™uA„Çw•Õò/í‹oÛDÒlbíβ^ý»l[$ñ=zi÷&h§«CÀ·(Á¯µ•Ú*±Zž­îyäL´„—ÚÑ*Â=D«žç4IIÈ.aItuÍ£)©Ná¯.ôÚ·öŒ›Oâ­Uú3£ À_w¾RŽÇôð#îÖCÎt¨ú‰fö­´(Æ(ƒ¨–Pž"åÙ3í —•^M~Ö)ôv±ÉÞ_|C3žï•§ƒ`ãäòJ2ñ+eÍf)¼Ûµr´p˜Ë‘ÞGcJ´* ÷øHncÁ§N»¶ð¤2ÁsLû=Œ’¸Uêóù¾“*Ì#ÅD²’¼mßíí;áÜZ[Óa¬b!÷“ÀEgú•íOäÿR†à†i;õ»vôú,[iE…ô”+¿ È;žÎ•8ËRP0î׳Fî­¬9®¨®=šž\yʃþ$fhzBˆòëbñ?9‚ Ã-›Õbþ“°Å¡wà³ÅpT²XϦ+]ÅE´±ý¹ìZ¼×‹ )r¸ë%0ý®QÄöˆöh6¹‚í• ÊÄvì//ñꟑyÏU™nRÎ}­csÝÞ+NÙ>-þ¦;Rø"Ñ9•¹ç9Eç€'ig^>æ\fú¥.?³’'Œ/ýo9üèS¢“µwEÚµ–ôlѽA½Dfñš†¿¼·©vJ!­ŽLÊr,Óªµbu8’Ï@X ª•dK=ò÷…MØhf^3ÁIƬ ü×г Y ˆg¾r’;t˜%¿Uªm£Ûbcj¨vËžùÞðoܧZµn¿°÷¤â©RƦfwä|.É~H8¶Û¥µ7]>¿iUS’÷áõ´³1¾ì˜1¦ÍbM.¸†Éª×}—R„þ8¦iEÖ±òÙ ¶°±@Û1sôÏ/Øm†«Ž–ÿ½|!Í…ua´ý{ [ëHQè²jº@aw×´¢g^WáTå½mL:¨)l€£žãóý*{îž2“ ÿ7¢ô“V{yMtEÄ¿êÿëmšÖ•ëuˆ,E`1‘øŠ£˜;î_ØÔÞÏ · UzáS+?=ÑÌŠõòÅjÐûú`1=1Ø Ù¿Eòî[Y³—‘â"âÙlå5>œšõþz^T>÷WôZ§ãÀj$'y}Œ÷U‘ûÑkÍ’úNº_¤öPkjOíBÏGoò§rñ‡ÁÛ‘…?6[¹23S òqåa¢—xËâLîú[ô¢cÑ8¡™-sáeÑGÔzD9÷c.~d*ç7·r~h?ˆ- )ÆP)‚¨…ƒ­ãàyG¦³ê¹fš@iý]Ò±±Úúáë9Q>J•©µ>¨ÃŒAÓUôøï]Ê/Dô̪”nðÛyCþÆðÅN¿O¦‡r»õà›ÙÉãa†ˆå°ÞcÅQ6H¤ÈZõ$íŽRކtâ Ié$cÙ<‰i ‰uÙ¦ø!¢kŸÚ˜ò(AØ„.`!ñ@zõNƒ3µ†·Srquñéö&Í¢ü@ÇeàÄ®ßR£ß:¬'ƒçÄFÁÖê:uÚ_ƒ²ñëÿ}¥µ%†—‹¿ñþ¼0XŒhÆU‚OÅ9†Ü↬c½%aÁ ´BÜ‚#Â"{‹6ª7<…~ñÑål“p¢”dª(½KÜà­Ê1å ×ÍÂPQûv÷ÍÀÎðÊCX™ã8x€<µp·ÒY·¦ùÇ™VB“Ã’È0d#þkKц´ î¸y¨§\³Þ €»ŽoædkÉ`tVýca¼4%Lü„´®›½tz¬ÃÎïö:æw^ -T8Ë€¦ À0väÝ 2°¡†òŸÊ;°€¨tØÀé4Jê‡0¦Âu·•ØàWð<.2ï¹½mé¨$pTµ¼ÿ(J‚™ gœAÞŠ-kÔ7¡JÌ ù”Õ1ìlÖ^;=HÍl¶ãÁ Ï2I]_iÙ®ØLÿ*ªçÀ0HWÀ)g1Âü÷(l«ZŒ«‚¨‚nW|I_H8¥ØF†Â  €½Uœf@È !¾Fûa#ª´ÿ-6&5Ѧå™´†Ç—H³÷¼¶N°`ÉÃdÇjŒ]Âbè@“7òŽ`_À‰ã.Xå´Ôõ¯™·íÕ%`ºþ¿ã_—ì.Ï5òìVÌ•Öÿ+ÅåLàpÙh4"mI²¶“owön­µüz}­Ž.ˇS!”­ÄSâEf,`éñ¯ªÂâÕ´¬ã6ùAŠ^îp^Õ¢sÊ;îH†ßE§`°k BЪ€æîÙÍ–Õßìç x™‡‘Ý„ŒK]E`ÒÐ Mî¥ó©ù2†ÆP€58À>èE€ ž·¢rÍçiUNm$S&Ô=w ¦1À¤Omà]ŽÈà Ô#t9@`<A! ó@ò‰FJT+ü)?óúV6ø«õò}å÷ÎL˜ÙŽT½t-C‰Ö½ßßûH1+™ • D.”&Š˜K?¬u¨°µ[ß 7Q(ÚHÒ|Ô˜2`µÖRÒ…Èr%¸Ö¸òHŒ‰;[¿ó=aâø>!ôG’ðp±ÇLÉ„YK5ÿr±[ Òo•µãïxžžÃk Æ ãÌu> "þl¿·-bÿ&”ëϳŠåß‚À"ÌÅHñ`o%^1¿´ò°ƒæ“phŒÕYÚç0o%ž­S~HÞ `ÆLNjÚU2Ïå:ÄšæáÀq΀°>7*gT<ÓÁæî<Üü%óYâo¦ qÔQŒ/3Öᘙ;ÉwÑáF’)JhšéåÖäZÔ|ƒws3êÉæÈYmá]˜©j4Sÿhâ‚håÈ:ºµ[.Q‰—ª†AK@Aãçíç™ÁTêŸ „ä=ÃìÒ098Ñ`«‘ã–÷i~ïËC[A½xïBÊhÍ»~XË~åÔ¬h ÙùØ\MaNOœ÷+¹l¨ ?²çêrY~ê»h“Ù¥cvír´Ö†¬SFý‚X©.7â¦~»I•S–d~ò9ç»7›âÐò[ð¾°œùæ'9$QÉÊOõx’|;ïO½8ôkI0¤ª¸ ©ÓŤád¨ñ­ùïLEÁS¸ëÙ/æêÖoi<¼pŽ>¤~'ñLw8òw0œ];¡0­•–=¾Ñ#tž#"7Íòb?úŸÎ[!ûðMÅãxÏ6.­P¦êmE?®ÛëDj†¶ˆpÔ2ÛFÛè lë*`âÖÕ8b)µz;c)´.öžRqâT ?Fö‘Ž­iÃð¶3›õú®eX‘¦Y¶ò˜ú?›i3íçë@(§ëTF$L¦ŠY¯ûû9ÜÞØ¼ùP3JeÚI\¡- 1œP¥Ÿ½k1¸Kß•¶?êøu£ágxTd*saª0‰{tÅùþ}»¨Ü(®!"=-ê‚ÏÄOÈ_Œ¬Bš–£ ñÈìé⟓NüÝ,‹ÉWI"îä@zߟ щ#­æž¡§ß2áfaf*hgì¯lç"ÌÞ_(,£õÑ„#•½2[ÖË¡q;¢•þ7£©½‡ Ñïy™­¤X3{s—Ïe¾vëû—nžkRT:ßJGtË©u#Ï•ù«ó PÒFEPø·E›µa#IgØ»ú†…æÕ#Høðúïl~©ÿ<ú{u5màõÆw÷Øt¸©¿CÝ5²·;‘T-žìüì íô9ÖâçmkÖmW¦Ç1“ÙI±i[0]y=657묰õÏŒwO´€Ô?¤¥*‚ì‘™æKµ¹c|| âÈŠÎÐûÉ©XÝF ò<@…r´ªØ”í¯‹€½-í$¾V2]&ÞšhCÝw‘ó‡×‘ìýéY¹ Ø)Ó½ Nc˜_ÞÌY?ZFG^–†ºËªnEa H3-NãY¬ÂÆ;¢œÉ1˜Þ×AgÆeÙZæ¢ã®1Â<€ëðÿZÑ*Þ4û-îE‡8¿~eÛ\»mƒt,Ï¥7bµ ”ö Þô 5¨´þ2Ò£ëû<+ÚƒMƒõe OߟGs¿\ Ãœ>VǾÑV`q FU™Ú76£<ƲœñŸ Îf™#.Læ”gð†c;×À¹u°}uE2)Lò¦ r’W˜¿× Ò<’Ý'…Ì¡ÿvXyÜä¶]Në f'¸ÆÔ«­¼ƒÙ§¯^ ˆØ¡ Ö\¯MíÎk¿ÇØý0S ËO•Sâ`Jz§a*“øœ|ñ9T\s[†|óˆ\nÖ«ûW‘b}IähƒBê>N§ F×ÜK“Ï©>7ã,«UÎL¢©_êAà®õwßi×=·85È2§*}?ïáoiw« ]<À“¬ð8LqS['½Ø-UüiÌB’kUøå *a¢]SJHnÙ{"±›ØŸîì#r…&÷7ÇÍòˆóßFüA©¦Frùùñfi¬EœŸå%sx¸ ˜7jXsŸo5TÇùYÌbc"6ªkÌ“´Í}DޱÔÍ™ôROÒ÷G«Lê[wkgÞçYUGDí4kàÕ"r[³¤VsÁ¡½q¿ðWôyÔU‘§Ú ´ª|+57zêD ¬…‚rV úàXä;cLb!%jÜšŸƒf´™º3OÕÍ\sG-u×ságßuª×çÈ4NíôwU+bZp0uÊã–˜¡M²Ó7Z'Ü#ç7×®X:Uöw™ãôoϤ©ö×—Ðujß#D¯Z…Ó¼òÙÎö1bàá @ Áó}f9o;³úAÜ Âmtšª“†ZñoÉá<|%ë É÷ð:”Õçêþx²ŽL•çÕ}#~ÛTús猪÷î€~°e+l™d^ß(þL”~¦´äLȃÆÓ(,¼E÷‹™G"Çľ#¥ó!AXÓ2óTËtØØ;,Æ!,õ·kë‹'½7üq"‘åSÔêlÇ]Q"¥=TÓs}Ê?$EG‡ûvB•¸‚éåbyð=¾?G €H€Ù¥”÷ØuÂç6ÞD©ªî[¼jö¥hTbo'ÉOŸ‹ ØFfï­•'/Ê{S=B†CÚö¶XÒƒ ë7Ã’îRÕ´J=€=?Θ}i¥£%ê×ßâæxÿÑé'ª!î$'}ù+@ܲ½ÑÔúå™ÖFs5_hüÿÏMäÐ10›3“Õòñî/àÐmSÂõ¡òy`KÕ¡RÍ"šé Ç_Xá O¡8Mñ¤Oš"RŸYð‹]M?|yt›wÓ»œ;ÓSÐ Š –óŠ‚¢.'Nü“=êw²ûU{DüPÁÈJÈ™án`GÜ Ã‚’Ø8$ƒXFÅ. ЬøQ²ëF/ßûFØ»WH¨„Mô±±ÛZ–}Ÿ«ØÝ ƒåJµd=ûÖàc£/ö|jé÷`Ú;²QFµŽoöIËb¡ÝнîòJpù8‰¼ ,fÛXÒ~n§i3nc÷îÒk#È,'FÖs[.´xómNG}*8%÷½Œc„ýòGúA˜âoEæ ˆÇ¨_ÌÆ™ö+g|d[äF½<äz ÌnåŒl¤¼Õ'1ç1^>%Ù•gãWK©Aò'C´A·jÑY}f»µþV!3sŒýødrI~¼|a „Jɇ7™µÁ,y ’Ad,¥yºÄ¨-0q×Oö"à5.o³¬¥38ôÔF£k‰÷*›?— äkÙÁË•?wÕtj8¼i{õ¢®»$ŽŒcö–¥jÓ,€´ç¾%¨aŽÌ ÎmW®èѨÿæ6ÕÞ…aQS (»+9A)±?ÑIn>I·Ž)/a,:n‚—èšèìÏ0{SFƒ Žý|‰:K¨Ú;ÀÍ›.½y9?PͶ@Mâk}G_Þ¦¶”Ms³&Q<²×vI Ö£žÒúLWà»Zt©K;îQŽ®dy~ 3Ý*õMO¿_Wÿ‡A†Sõ<ÅÓñºÚT5€OñÂUp>Ô¯Æ"£2äËGJ·úô°yíÎg¥¡ÈÛCÈûò˜¬ËÚÿ>úIxYª?^Gñ?¶ì¼ú]ÞÞz­õ¢ 4óÉ=ÃöÌ Þ´?õ`=1®–`•+ '<÷ìN¢Ù³wý2¨9ғؘ!m“+ºU¥M4¿É³»[2„•ûÒbØ[“•i9ÈEÄ[‰¬½Œ,‡›ƒÜÎ`—… ³¶+Ó/ÚŒ…i*¥0" ç”™¢£‘[ABÛ !Ö"t˜–†`²ý(>Û‰>j™ ×Å_|÷è÷Ü«>Qeâ—´êÒŸxò`|½\(,WáûæBG¨²è‹ñ¶¾"žÙl‚wç¬5lcœ_~M¬“Ÿ´öÓ™ô{¯ŠQ:ð”¾=Ó±\Õ» W>vAÄqƒ«-ÏyÂ;w¬ø6¸’›özõ—É0e¦½;aŸŽ*Öçi9M0FFGtwCnŠ+¸ûu+ävŠL/À«û¬ûÁoÄØA óÊð0çéåóä§ Âë‘Bçë ˆÐ9d1J^ɸš×…ø”~èÒfHólɼW sïª —=ÈdãÔÂüeð4ºß™zøŠFˆ¸sI™ÌX쇓1Øë’Fk¸ŸÔb%GG¸ët¢ÉÒáøûtœm­­[“µê›¯f\׿¹Åbª/¥Ã³¶P¢£Áå¾HãûÝÙ.^âåÓ€–ÎþísWBy:kZ­77hêG»RýhªîùIIßârfVr5M…"ábPº/6„Ïyç ìýñÕfóDû™¹V¨ÿÖO:eâÑÇ7@Ü{N¯c8f=©Î.’`®M§€ÿ§ Ë:ÈÉ"gÅÆ,¼âá83²dĽµlÒÊš‘ðÉÁ·÷”o¡ˆI~ê¿έ™ßð®ŠÛ 0¡¹ŠH@a6íž È®BÃ{QlU‡Ë¼r↫à³°ƒ¾âûáW†5JÕ>ó@ÁzÂkªv®’g?~›vÀ/¨±â:’…„¡CX–£|E*  —î¼&°…“Ûß¼ fÏ]<tTy ˆlÂ5Ú;”rIvQ¹ÜN€0œc¨O6yÓÑOî@-·Ù5wÕ‘!4;ߌ ó&‡åæä©\W¾W»ò;p¬¤^RÉ%ŨñÆÍ‰DDçèÏÈó—ì[…ÆMBÀ#…ð”]s/©«à$͘-£¬Pº×ˆ›¯r±õSÈyÛÈ÷ˆþ M< ЗÎX_Öâç½QÆÖÝ“=0^Òîè~!É5)‚¶n>n¶œ~iÄÆ!Uûô12ô±„%˜±ý $Þ ìÏ-~iTE›Ré)Ê´™¾bôF@ʨšáZϾÈdµ<åbPͦßX”>%¼k©‰°aô¬-«Í"¢ÒmŸÎÖÀνgø,¼âÀè^ ÁXw,S-ûœmÿ—(ÑAìï8:Ž±Ý…ä)pøúp ââÝÉîk ÿÏ•é 3Í0þâ·'í0/oþŠîÍ_8]ÛI…ÒÿÜU×ÒX©2 °0TºUhÇÊÃrƒ¾†m“›q±¤­A8ÀéªwÙ‹$¶SUB÷LÌÛd;ïxü˜h€ìžÞj¿¼«/ç: II>P´&H…§ì#ŒÌâql Óøç¤ahÊŸÆœz¦ú/#šQ§‰¥jD‹ºê­“G>„A×¶Ÿ5ô¨ÿâîH§ IæN zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1mirror3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.715786695 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1mirror3.dat.0000644016037001603700000010027413607166133035016 0ustar00hutter2hutter200000000000000BZh91AY&SY6É!#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàIß54¦õTûÀüûÅãÉôûàÞûàw*ðaª¤”‰!I!(€¨G}ßmïv: î›Ú¶Üe0”(UPšgs·ÝåœÊx ß=yìôôèR†Ó¶Öû7[ãàžòT’ÌÆeµjô=ÛzåuMomzôí3µf¬¯{ÝÕEETÒÛm© ¤™M†6ËCZb ¶ªØ¶)X—Z鲪­–ÅTÕ{†÷©M&˜É22 ª‘¦0˜§ˆ45OÑhÉ  ‰šdÂi¦§‰¦F)Œiˆ¦š$òa @›@&˜˜b6€òª‚T ¦™™44d0ÄÐÐÚdÄb„iˆ`L0˜Fšh4ÔÍÁ I°&™¡¦€ž@ €&´MA©L„i 4&i¦I††”a˜= i’m44242&`L‚fM Êièh'  4ѦŒM&d›JŸâ4Ùi¨Í*´¥%<ÿÕ*mԌԞ£ÓÔž¦ÓCÑ•7©éOÊ›MM i ÍCCFFš2z‡¨ aé ¨ô @ÄÐ42i CCC@ÐÄõ †€D¤“(Ó jh`™ ³@š15O'£HñMOh0)µM´›SOJ{ ™OÒi„ÀSÍSÍSÚ›Si8¨ÊD_Ì6Áy3’o\—=Áô›ù4úU±÷ ã"DÈOŒÀì_ƒþ)ƒ´VÈN³ö“Æ.tPåÏÀæÏ%¶ž‹Ä9F°ô›ñÔ·²pH),³q|1È%Ç0ó‰†)²[´VpEma¡ò5ôòIMé¸× ­HsæÏ§”¦&5¥*©GÛZ1où<ñ‹ö( Õ؃ò ñH  gÒ@õ*3FMø$°ÙS†¿€”êfâÆ30™üI’ônzàŒDƈÃT—ÁÖÆ™…‚…d´(Xìžý¦ÐÈkTaòÈ·£Ï€?BôøZ°…~¤†ë¡"ül°$o°`Ç ¤šÑIn[oI³YrOØ”(¾ÿâ«JWgFåä¢ËîhÔh~ÑKŸ7Ñ­ mcÜãsŒ;6DdQ™sÆ?îhR”‡ãbv/e÷fZ\žo úPŸ=!Ž“%ÆÞ€Ï‘~ÀÃKé~®§™'˜À—’_JKñhÑ,Øm =p”.˜;émo¿_Z£,{gRTæŒgà€$ ::£ˆœ­¡rC&Ü›&ˆ¡!rY•å“(idA#÷!‚·Ì÷ïP’Ç+í4¾îÕN¥öþQ«L©ÀyIƒ/ºËô~Þ^-2Ôæ*—ùsmÆTVóPÔÞú7ÑQu´ÏuûKF…;ê X§Ú«ú¥ýxÿÓ?à…×jB™=AÛÏ­Ío¡:\™ÅCÝ7ê•xtò‰©Ý·þYûÝ|¨íÓ­µþüìž,"*i÷ØñV&XLÍz›}Ç?Wœr6{¤&-«G^^ÒiÚéÓ‰îv|¯•ÉZ.ÑʱÈäÏT@¶=òSËkÛk»'¹‘‰K‘ƒÝg]eûÐÃø¸)o6Œ7RfZòÒŽî÷º“y(ÛÛmúm‚ûXá'µQqxÂw%õzûg1ŸÄads×½Û'¡Gß^ªÊ&éA½WÎåû3¤Ôv–Œ¯Jáõs´:F¾ws›ÄÄ—ïö×í2y‚,ÃÁtY‚ï%Ì:çV‰yåj¹…èd£Çd I*I5IÝFX»Ÿº•—tßu8´x›„#ƈ̅ 2ê*Z.@neH ÷5ÜC×<Žèˆì¬øŠ R¤… ‹!‚ÖZÒ³Ò¨Š]/*\¥ÒËke…¢Ê²U•e\«)rä1éÛ²–|/6¹¯*°0Kø  ›¼rš,•ˆµ~VÂØÆ¬]BÔQ§Á©;Úêú}MìLBØö*ÕjµqÛµ_Ã]mN¿–b±•K™6Q„ʰJÁ’eö6§º`cËë5öIœKé LÒ_Kæ3¯|—`å\ÛÅx®­È8—>î+§x¥¡ÃËBúd‹BL—7£A–5è;M­£œ½¤6Z² AÛeÈÆ¹×á¶Ž½]”Ý_¦¯í SOǪQ\ïµ MO^ˆÊr¦½íïÅErþsÅGW¡»Ã W£ìQ·2ŠñO"QRÞú^ÛÍ[Ú(¢¼…{gßoJõÍÛוo>Ue ELUõ Ml¤ITRÔß~, •ö¢¡À*Ó Ï𢫠ÞsgW7ú£Á*椯ÙXecÝVf-…ÖN.Y¹™™g2on66vv›;;›œœü<;Ì,2²óŠ+C?73GC¬­- Ìâ³´´tJÓ(¢I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I%”rÚÑ€Sá7ÛíëQ}7½Jĉ¿(”’‚ý%K¢¢¥š&L>» É\çôµÞé°V †á.¾b0ñàx€ qÂ:Â@Œ¡P$b-yB… (P¡FPä’I$’I$’I$’I$’IÇq[*ù·ïß¿~ýû÷ïÉ$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$Ð.ºë®ºë®’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$Ǫªºë®ºë®þú,l¿¥£~ÿɬL¬3Ó3EµØB*müÇòxÛÝø&·!V+cƒ‹j + °ÄEx1âF•D ¿á&Ö›í·uƒÄÛõõxÓ ¿>ÛþÏ»Žû3èfIœÅ´lí²•M§CÇO÷üéïÓ¼Na<7J´N˜’#uƒ—Š”¹ï´Zÿ’¸Ø±ü¿N·ó}S©Êp¸‰~© ;æ¡ô꿯^ ü°^Â_ ›«Yœ7bl}ßeøŸNêT-©È×76üN^ò_‡ÜÇ:Ï×í,pWk¬@Á½s š×|U”Ÿ \¤ÀÚ¾ëÏ¢òU_r$ºÈ0'4#8žö8¸sòõ¾C?U}‚.èÚòo’’Š18Éx'˜vÝÞV?ÂÊŸÀžöê—×gPÐuºÖìo2¿Ÿ.r-..^϶Ûϛ¶ó®·Ël?<‚\ÏN“^fßœXß·ì‘":|óžÔí'KÈÏ‹å¹íÝÇÁj=†t´1Údl¥Æ|–Ìé÷•vÃa©âÛ{Û’~œÕFILļ.Qý4U´ŽtÆ6åKšô¨ñ7Pî{:û@¦ ¡æAQ6ñêáûcû%b¯•YRŒ€ÙDABé©©†?R ¿”™Ùü¢(­œAÁI¾Q‘‚ˆ½ÏIº½y]Ç¿çí÷_ô´C†ÏPÇ@60P/ðEU/dTEP¤@ z‘!&j¢HO£DIÞ~•MZHï3 "žJ‰è ©\FRA¥¡ 6:@¢RZÑzdo0Ô¬µé"¨_£`‹^ "†µRa«¹Uõû$D^`Yz¨¨½^Cgdâà’¦+ÐTäD[ ZˆšFƒ·$:-…H¥E¤Vº G@˜•k5•+!‹¢ÒŽrÈð$J‘6‰µÆáÝI5²KF,gî#/"ÄI#q"GŠ‚Þ`¤‚*^â(×V(Š›ôD.êÅ Ú‰Á±+¾:så, "c¨J¨KF~1âÑæ)/_¨’#¿Œeå(&þa¯ô®‰rKDå¥QW~WäŒêe’á+¢¿±ã“ü~¸Ù2(ª¶ã¤¢Q&YH!´ªIHH†yP„T!7EDH™ð¤ŽÝ*P¨f† ˆE‘9e$“4 (º’.À‚–Ä €(žô2&x ¹¸(*·Ç( `ò?Ò‚?ŠÁ4¾Ž~éÎÐ㸛D ò²s•ºI5iŠÚ-½#©~«$v»Y»¦Èžjr‰¨õøF»(‚ETN6¨ó½‚#Ù@D:Ø ¢ððNꪙQŠ D=ˆ »ˆ¨—h¨)ˆÈEÝ0@ÛÁüÃDûÏP¢!ZœØÇ-R3Š &¾®µQ>Ç^±„‘ ÎD"'5\ ¤@mÅ"*bD<ò èÌ”Tâb¢sQ ¢…´T|m•šëñ÷D|Jƒ]¨eäB)"—JD! ŸIø®’ z|däÓ¬KÎÍD ìÇYÏQNÌm(ªÖ}3=£ ô[ª‰¦´Q.JîH•L!zÛãÆ°‹£ÊkªQDÓŒA|³2|&`ü®ñíÝË _ÒónˆÝr«$rü̵É@Û)òôvŸ„;iDCÜÐ÷Xmp BÒâÑ"¢*¬ wõ!#ä(„„š:U ãd‰ªÐÉäP8ET1Ñ/Ôú•(‚ÿi`¢Š¦¼Š û¢¢¾ìÌÁn›>Tò=®VË8gJ»c…(ÛG¯ ¢X¼®Ø”{XxrÎJ'Ûv;ç‹|h\Ná::|XB=ó³¹…â-7Ý÷€Íî,›2> ð&N‚ì'iXr9Z«ÏÀ0U¿±UÏÛž4**§ˆ›È" |­GI~©¡‰•Ê 4I^‰TIrH±‰Ûí¼¿»ŒÑXVè*\A(HÛ¾#¤Ž¦Š„_`'Í:˜×¢LI@eDˆòI©Vïu(¨›: ”—L}yP•ѨÑPˆR+ ,솄‰T+ ‚}¢‚ QßRö¥1ûŸ?Tt=e]ÌiY(¢ JF¡”/…"$ýÊ|²!îOIP¨¤ÑWmÚ£+CæÑD D$R2)Dƒ¼qµh‚ Cuä1=ÐØÑLŘQà€A ¦_©ñàm£»ë~?s\ä`f#ø!”9? XÀ7ñS"gÏj—ÁeÆ ‚XJZ^Y7]Õ¥L\Uù{ C *H¨ˆÅr,\ðÀÌ¢Š‡?\UDÙw6=j†ÏIãò¶z'䘚‹FdË-5Â…«0öléøŸGº^wjÍQ5ö­ï)4ªðê]Ðén~:ržÙgE¾[V¼žYÜ4»£ÇšuK´±t(¨¢’”)J¦Ìà/_âŸ"I*’¦@B3ô-1±°Œ#>Ù¶s,ë ‚p×JíÍ®^$„#ÎB‘1–òíÜY+d‘c¨¡LM ä{*ÖØþ¶×Vv^o­iù0´/gNP¬@I,Tï7v7ç–ºÕfwÝ™ÎùÛ\Gw©´\œb¥E³û•Í¿ Da&šØQDçG‹Lh0nö£4ÃyÁOÖÝ_ÛA* ¥N†R )¾nºÌY¼òø0$»9ë°oøUØ~§Ÿ×àýÙu1\$ÉmWXh=‘’ÚÅÜÎÑ/ ë0´eBö• ‚/ O¸´¨ð›ìÞ²ß Ôæ=#¼îûÌ?³ÏÝ­uTÛ^ôýÉò•*v©ëyªBBC?’«O Ñ$dŽÆPÓðYj«]k(‚]ÆcëG&eNGæDNwߨ šY¤IBˆÂŒ` ɨmÑB/&§ ÚªT¤«ìÇô7+Ü/&Å eîÁ²…õNc*T8é·ÂÓ½‰‹ŽÌ"]%ö:(ÔOŽ%&|›J¨d#B~¹¹òxQtRóéõ4m£ÚÃïÇÝŠâ Û¸$®€ñ$Q¨g«˜1Am­Ã•«òãrQ1ièÖN¸`‚¹xý—]äC5vhnàõðæàV‹À@Ôzgµ9´ÉÇT`eçî\ì¾r÷¦¾Y½Sû{G³êmÞ>#ù}ަåÿêÿçæS˜ï»æ¨ÏélÜ„#8Ù´¬³|¾Hƒ&2¡2HT•#‘”YkDR6 ƒ&M6l÷ÿXDéXNyZž^Ù\Hä°MBrÈçC7Ïu”ÅÚa|~cϽ/ûØ·*èÞ+JÔ˜åõ%ñ¤R™Ø0Oò +ÎW-{íi´¬ÍŒïFUyÀxU&D¯b”€€Ñ @:‘©U‰¼ñ”ßR8¡«¸j8` Èë˜r1‹3Kñ²Xò\0ò'êŠz@eÕ!~þ“]8žßBŽ™4 ¢ÁÌó½­ÒmxbiT„‰îÌ¥MŒIƒS°K [+¹¿Ï‘M僚%Eª’×ĺ ßÕŸ£x*á 0ÿäjjhS´˜ZùÄ Å‚5ÍÀŒ96¾®g‰Mch½opg\iÂàIWq«zT¢º º}—Ò{~|ÜßË~^kàï»ejk‹õFˆnL¡é ا‰GXÏ6¦†2 ½¦æŸy,–KÝ ™ÒÑ@ð² #R˹º+Õ®‚qî ú¯OÕímxÜ6¤raˆ³ý²,ž‰]¬MÍÇ “ÿ Tðâš§€|Ëu¢µˆö8›„â¡O~s”Tq1¸ú&$!®ÚLÑyå“dâ3wÒg²¼ŽchÈr–͸tžEZÉ"9gŸoŸñ¯æ(¼O %öÖ.ŒíC§Þþ! ²jLÀÊ \³e©£ÁzúTû œ!n‹ÌY€r ݬqâYw¸'`ŠS{Ø·±ÄÍxJcÏ^ò<Ë ¯¼0JÓ5/O5òjá˜>©Ál„x…ŠM²K—*„*ƒåÂŽy£ãàîÊ €ȶӇZ.´ßk7"†a:öJöÛ¦žõ·ÜdFŸÜ'hbTxD?ú …‡7~Ü^&’lB ‰žtW7šÃ2QMæÖEòb{¶ýYÚO3_Eî û»‚íP§c>7¸设'uî㔇CâÛÓ¥›üö}9Iƒf‘+âÖ™3ŠÜ@mBA{\?kO6k¥ÙéNDioÚ5ááÍ5“Ì»wgƒašgŸ1\;;#"De@f—…E´‚)Ó ‚fµx.߬ÂÞà ‚÷6>§Ø2~´W qG¾ _ÛçÇ’o"~ü5Â…Ý—BSãßpÙ‡Î&ð ñúEÄâ;!*JeÿaÄv0„ÁyóTíÉÂÍóô?òà#Ñ‚‡„àm™GÜÏ{eÇAu#½–ÆáaÁPÖQáPÈTŒ›„gü›)v“C¶`—÷HÅ7ú>ߨÖQ½øŸãý*±;úhÖõ«¤ä¬íc£“££j)ØBSE•|›‡OAIé×…ùìÜ)?]3™+=;ªu´Ü¹kmŽÇãçïvpƪž¡ô_?A¥Úzéþ|£¸ûuŸŠž¦ø³GâØïµ;u̦%“‘§ã¦YOVË?ÊŸ*“ƒ¦ÑážRçoO‘Å|Å“#IÃRq­÷sk¦‡\…›r“¢þêäåuX‰c‚£OGOGNî³ùÝ%Ó¡ó’ÏÅ ²`„"˜zâÄõèó x°´‡'çþz…¶ƒêéèW…œ3»ÝåEç(P¶¢ŠâRx*N~™ÚfË:…“ãÓ›û69ê5ts,|íÑ¢l:.sÃÀø”ž¾Ô²|͵"Ƶû,¿Nz£‹¦r‹ô /Óþ›¿JK îø¯ÛPöz–†®upøá×ï:ج†˜‰²Qèó¹{“Åþ…Ú›AL‚ž¯êpš{ï«HîhüÔ~OÏaüó-üó´ÛåÛoóÝ1!ÇáYï—öÜ2ÔÿÚqT6JI×TŸ­Cˆ£òQÆ¡éPã¨pÊeé7š{š>]–“¹ÍëöÇò/¾ÿè³ÀRq´8fFƆ–q–yHf‡ª¡÷ p#ÎÁï6ôJCÆ¡»!—{pËG§M5:/6ɼr6lzk'•§³—Ro=ÍO©Gb¦FŽªšÆÊä»}-×]³z=÷ÀÄDíé>ßìnú§°T›I7<ʉÂѼS‰ýv4ó’Ÿ_ŽZr :êtt®‚ÇÊQëS wï.vJe^îÌÝ0S;F«i~ÙrbÐç)±Aöá¬W‡{ÔhBØq9ªpÑ⪦'ëµR›OÓ³lÎ,z”ÕSf¦=¥<ŠFýÖÐûÐuDT†–ƒâ!V8s."¢ÉQ¸¬4¶"£ëÀƒ}×õF.–ëP¨'êÏõ?›·®fˆ!A)zé,i  †T“ü¥‡ ^Òi½i8)¡ýᜌÿË4® Ê›Ó=o`h˜rq„}dÙ%1µ5ô\f2ÒSq˜lÛ§¼|;IÆÉ$‘„Isè°¢ DÐc$H”†(nÖKÊJ'ŸªÒd/¢»pŒ.£Ò`ß¿Fdû«{™¼îµßBÙö^7¹kë0CF:"'n/7¨Þ÷Àñ·B±Î.MôZ ülÊ'A RHŽSnšGìÝ­&ƒ^û ¥ îÔvû×ûe9Q¯Åä“ósO;Ì„4&J†…MG@E·ÔäÀ1Á6Î-)ŠXœ:¤&yj›¥.·ÜÚ+$d6ßéÒ“*±)8ší34Êë)h2Ð0×\i°8UEO‡()‘:ÇmRAÓÝëÝôÅl>s/0v¦ðYëžw0bö}=Ÿ^¡ó–º|¦ÔM ¸€À½gDÛñpGˆz{ãÿ@(MåEqPå'´(öÁ4ý´íð×jœ‘Š’7ö6”kû±jÕ&5\¯}c‰FÆËÅá:˜×áP‹ªÇŠæû|˜âõY.1ådVõ[3fC›þwèÁÍ·ôõ»&›iò¸'ÍùŸ/oðŸòׇ|oíÑÍëãë®Ñsñ"pt‘TA/íUFÉ”Òö víÓgWÅ箃Q¢PgWÖØ mþ•”2 ¥âêü¹o—ª×™5-R\Ø]ðš×c§ˆ¿ˆ¦¦“RÃFœ<¢Óbv’1{ö½°šçýƒõϱkL¢ðòåÇãÇXõ¨|ÝÌßò%ްvñß^ïS‡¿¤ÕØYYOË—s ]3jäï ·¦q;&*Ã!·C[©¬WïøhO^&óîá`ˆEÇÕF¡îàx%W?dóoÌèÌ`f쟘(N<<2g&‘;â2Íì:¦ÈÙûÓøä÷˜Šò㮬t@wŠY„VÖ ¾ÿ÷…ü0†j èÏ­aix´c)»ÎîHØá©pHƒÚkoz’h¡ñ›=Þ·†ß?ØØP{p÷ÛZƒãéÔ„éÚ…¼'NÀ᡽/¯v` ´ò Ok­H„ I¥ ÈŸBY= Å1á5Ï%æUS'»5¸?–ÔÈvrs:ŠÉÝõbšøÔé-D½[®ÞÖZ½F<¼µ““.ø)ƒtõÞíJkï¦ù”ZªÇG\4Æ=HP×¾ã9J“oXÖs¸Vd]8eçCOÉ[{þšgaaÔ±´O–™¹:×¼aȦ´¨‡1˜{GŸRý,u1‘¨ ØÊ/ÇÝS3úqiõv¾ÐØ)ñ}.»¿Öœµ©nCUZ¯—AÉD®E<(c¢”OÇŸœ¬^!ÑBAÎD{¸TDâ#¤Ÿª=>ÜFÀœñ¿33 W™›¾o™¹²I$’ZÖ´’L]¯MU¬K§ýû9^ ›m¶Ûm·—kY·ü­k6ò~æMvÕé;ŸýÈ}-áoµ°Âì´[:¯+ÆKØcòum›íj­d+Ç ‰¾î{iR¥J•í7·³‡I$’Öµ¤’bû ÷þ¯Ç™Zµ^Ö²z¬Šô_]™‘‘£møb¯^¼Ûm¶Ûm¶ß|Üê•t5]ż·ø>®²ó[NGês?×MÅâý}ÿs´¯Kªõ•[Õv]o[Õ­YÙ¹¹¹¹¹Ú½û;K$’I%­kI$ÆÓöŸkÌVߨì÷ÚÁ¤Ñ6ÛrÖ³m¶Ûm¶Ûw•RªCÚÀ€—ÿÈ0¯æf&Ø:´ò+vnò‹‚ 6²2™ù<ŽØôZЏ6ÎhÊ@‘,Í>fný§ÍÍ’I$’Öµ¤’czÐrýv±U*¥]¾-ûotR¥T«œá9êÒnøí¶ÛoïÕ­fÛm¶Ûmóý§›õ8µ›®WeöþjNÄú©ýªšmGë[„2Üš@!ÕÆ('4îïí­ÌbòäXŸ3W´•¡ŸŸŸŸ¾heægk¤’I$µ­i$˜Øõ®JªºÇC ¶ÛÔªµ­ÀÚÖm¶ýÝ­fÛo©®—E•\¥W;â¹ÚÎá÷úÚñ»½Èr}Óáüþ3›Èæñ¸ßyËyník[.²ò²²²²²ñõYyrI$’ZÖ´’L~ƒŠö]·)ÔdsûÞw]Ñï\fÛm¶Ûm¶Û|ë×›}cä ¯sæ¦z\Ïñ˜3­| «‰Ç7·©W×ótLV 4Õ ·°âýa&ƒ`aR‰BWý* oµ¡ÏY‘Ο×EŒ”‹&”}׃CÍ_ltøcœÔ3'%t5¿"¥uGÛ ʤa TÅöI×kkØ(1’e•ƒ5d:ç̘Ÿ‡;I‹ q½›kokôú0g‰“ã3²hކŸñ]D¬)ÉçPœ©¤ìºùksÉ2g!Ê–ôFa™}²Q¡ãÚt;µc`èQìM{£Ï—…¼í'£ê  ™¾ëÛW®ê-űßI¾ždûE¦‚%’Ô„¿tF®Ku‚û™B ÖÔ ~ùwfY:¸æ¥Ç.~ [K"¤dÒJ@û,Øšõ˜Ê !2‘{ݲõ¼)ˆ‡ØÇpK(|¹/ŽbnpG Ý¨ Œ´Üþ¯Ð”˜q3ÞèOÁÄK…ø?µ~Unpxjæq½8ó_/Dž ų&jl½ÜCF)Ä7^†ê(¾ý³Œæ#Ëcªz‘iДŒV/¥‹©úÈŠïìdåз©CÓ:ls‹SuIá÷¶À\nDk÷b}å›Ê„ð€/‰GÏþg=#km¹º!èÓ¦æx‹ÞÖ}øB97êH‚E¬Ø 2î«òoÎÅb g|ª&𠩇5ÿãã©ÒŠëÛýïàh΂L)…¤[³I,¡” ЍÛì…TyŠÛûî¬0³]8G‹ÈÓîZ ÒðŽÎF7¥…Ô’úUÿ¿ü›:ãÿµQYp–›D·¬µð6:–YoÀC‘ wO¨vƒÌÛ÷ X{°[jÝaZjø˜ŒÔ’àc6:Ô›d$w@Oo *E³œUøÕS¥0¦äއÉ.Ž­²¶íå$õ6XgûP¼=@ˆSˆùAÞƒ†•õþ¼Ýû¨¡„7 º¿—'k‘ÆüPÀŠ™qA7âÍàß—JÅx‰<7ÀÓÙdVþyÏ?­Me¾ˆ×™*A„A„A„A„A„A„A„A„A„A„A„A„A„A‘‘‚ @ @ @ @ @ @WÚ @ @ AM´ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ˆÈÈÈÈyX]¦3#Þé­w'zr\OÔìÌî‘Ù{sóqå0çÐÆ—:՞μØ:ÄÓ¤˜ÎºäBAóœ0È5²¤R"`lßCl› œ(y‡.E#˜qÆÌ¾Oç±þ{~àå_í0ÕB«–ù‡Ä}ÕHÿ'˜îN¾sZÆd‹98*Ëâa{ðØaºj°îÑH—¤D(ŸªùÄöà Á[_`”±eªÂ£]uÊ™LPIÇ×¹ãkܘ,:Šªûh:ª«žéú±|ÔhE·fàâkEÈ´5 Z 4H"¢ðò¢5Ö5&m„äÁ†÷t7ß–ôÇÉxUñë«Î¥#`äèo#M&éI‹+´.”âCå”F™nx$þ;OÐ5ž›gníMÏ髇†‡©‚È.½B94jàAdÑ+qãýçÆò,IùZ—,þÃc°­í•ò¸],²Ý,ùçj¢µïOZÝL2ˆD·íÚíf»*Ž8¾#ÔûÛñ³e⌰CªmV¢ž‹£¬©‰ó,®Å=Zm†üè¼4Ù£.n}F éÁÜô°0³gà®û¹%8{Äu•6 ËÃŒ Ö?8¾}±ù³†hÄj 2Ð+376ÁøÆ:L˜®ýžqŠÄtŽ_ê<éqÈ{~Ít¦B½óåÚïäX1ýO ÷åÔiämÇŠŠxmÖÎõMð¶ÚñÓ †óy§ËþŒES¾$;ê”é¬UëkÚ÷ºê‘:SÅ 3–;¦%I=œ4(„ww±Ö} pøS¾É´Õüd²Æ5#í»p^Ž|d|\F R/ô•õÕ‘þ^ŽËmÿ†íuBEÍm’ûPÕhû„øs’5E€.¨üÉŠ¿ÀH i™ \ÜýpQzs@Þ:¶Îä5cõrÆ›\Mûµ~º‡ û…' ªŒY[ Ös"ÔqB¤5Fÿ¯Ùÿ wˆÍ‚¥    oVF7dÒ¥#…Ü®PžVæ¥êËk|Ë%Ý"PÖm¶][:Ê”Yñ%‘Ñ|bmÿ_ÔÏ››ÓÔÖÆ‚)°d¹Á ¤..x²°Ï©®'vñªMгAžÿ1ÅuäZøæÎO§i^H‘VX CŽÁ¬Ì{"/ѼbŽ`æ…Õµ¼:i«Žpm®Ò‘rNç^3_)èc£³–ýx³J1SF¼2Õ.ë¾U¢«®;6q.çÙÜÿ,·ý¡ ÇO¥éÜ9áq5Æ5Í:W7;_©ñeü!Zï³gO§IW±ÊM ûvô°-ô.ÍÑ  xÅBôŸ"$á!ǟތ׹Dº"ŠB…ù Ñ•¦ü†ŒËI‡N…Jå;òÒ©þ/­Ü°A:û˜±¿K®« ¨àþTµ›˜E§XKí ç"ÊnXã©eev•” úþ]Ù—¿î$Pµܯ±%>Þú] y$Õ$«}ò•u’3ç2·Hö¨¿ñŒj+›R%‘³%ÈßâˆÓ§KíÆï¥ ¹©ÒýôÙ[˜<O¶°•q Ë}:¯—FF|ù:ª/¿ç#é›{üB•C5ä‘B˜Ë*ª¬:z±Ì2ÝYT]<5­-p÷_o G¢ã¤­õ£‡Éq÷\&…¹)‚öx\¾XnŒ„?ˆ(°,YE‹ÊÀ)Z\ñèͷ볉þ}^ß+ðÀa„WOŒÞƒ%×)Äc<ú#¹ôÒÖð¡Ïˆ¤.\ÿöªO2ŸÕ·wɵ—t@ÿüèÄŽXd˜Þà˜,ú¡™ÛÆšïÕ˜ðF8ß;ýƒóí¸8 yØh]ºs·)ºCŠdÌ.|Áˆ"y=wÊùÞN+†`áù¶ä^2,ƒN‚Ágêá MµI¦P· a‡»+À†ò÷¿Ð¾¥Ÿ¤tu£­cÌš"êûžª³þàNoi:kRxÞÿs@†’¿Q鄲w"‰0Ô»ÿ”á¶qvã]ï1êôÂ}ä¥À~™¹Üƒ«©Ä^i\ú±£œ'ZÈzíXO­¼Jo*>#{œGÒ‹ßõ?ÆJá°›Â軿#¶.˜äÛ>n+&$ZäèÐT Ð|i£k¥y ŒîíH1£ëÏ ½;AáŸÁÒð 1iQ¹ºV/¿¦8CʼÛdè'>U&êöõFEŠ(БjÜZ¦ùBÁ/iõfÁ­’ç¢T]°@Áõc ”! t”Ê=Sf+“‚,ÖôÌm°ƒ¼E‘²…G»I;dä;ðËguMW“ÒúyoU¤êîj>®ýÈø<"v;þ§™Ø?0‚âßè±_¾ÙµC¦yÈÇïw7¬-陇¤;LZAi}„¹\uÊ¿‡Â7óÞÁ?—~aÈ¢À„sçê0h W7л©-”<²ä+8µƒ‡Yå. é*hôߟ\¦ŸD/µ U#É5„k-½v„f)š@ÉÂ1vK{¤_|3z‡l¨YZ! „:XÑ!zŒ•d[ò_Î<ÀW{…¸oâÆÂ»˜-§ê/åå8dÂ%û ¯Éé/I¿«qÍD;ò ‹ëÔÐÅ‘Î^Ò ¨H(Œž™hAÉbAžˆÉ)»Y˶w[QŸÍOGîˆßr#}{Èð1Ž !E$wcá­íã ’Ò÷ÛÏÛÅuðtè³§"‡|®‰DNòÛÿw‹_` ‰Aéy*jy5 À …óÉ}S¬kÍÎÉ•L£²J®ºë/-µ)½ÎS<ò ‘-ŽÄpHD·µ¼/gÊn8ø½/ÙÖ{/³ò_Ë¥3_s»×{/÷ F‰]!:ªOZâ¾ÏoBJXôôýìíê&ŒnbD`ƒ~•¢k[O‰×‹‹?äi‘[Û=ñÂß\RóNùôÿ¥À>thBGï‹÷A! Ìœ#“Æj„ |€y„ QPÖW¸å"|Ù¥²±Úiîuӫ» øÝ¦NýZc¦ ¾¯}}¹éH±«¥h‰ÒàdEÑÐdsnáëqî«s¹˜øž8Uÿ‰´_šJ/(v£¾ªhvKo™‰Ïð÷@P¯ùúðƒõxüù‘‘vÜðM¼vhućntÜkóFkx÷°_æoù¥Á—}uÍÝ–µù0yárÿÖmDʰ&2ã¸í¸˜opÉ‚+Ï -KÊuýañö«€‚ç8êuŒø£”ýÖU@à Ba%®´ª´è÷ áÿv>ïÍ”“öð§ñ;_œ( æÔŠ’dÉ4Rí"ÚÕ“ôþª·¸F³g„ÓóGcõ·ÊìÐ=SÀÔm3Z[ØlþÿÎMQXU§þTþ`^)º§ß¡åœiš^éoϲ§Õõºë@ºo˜Lrè¨yËÑ›b^>Ö•¶&6qSWaÀ ç0ö®fôž­ÊΈ¡#L…¬·rƒ8!bøÍo;ÏžvønÈÖ܉…Ÿ“RÆ"H|–k„ÊÙ%!P p7ÊŸJóãÔqý=Ø&mqóOɧ=‚'rUÁé¾`F# 64e[ל÷´Iœxqî ƒžëØ! ëcá ¾\nœÄQH‚€Æ+*Š” …¡ãüMv|*¹Y½ö*ò3%Ô<*«ÛŸY$_ áe8Þá‘Dv¾­óiw|1t]ŧ_õuôu–d^+ì”´ð›•àÈZñ8áL1­Ž9å}Kü5ßÌV”$ĨjŽ"ŒTèv*‡…ÇŸØïíÄyPb\Ä&A{H Ä¥¥A6Ñ¢¿mDrw'qVN“‡[rT¹ªI”§´®lÔ¶`@êöÃÓh4AL—0Ë¥ð伿«‚®ê.÷¡/I¨S™8¥mÌ[ñyÚz9UN“¢?F?C™:^¤ÑÕÒ¹H.êî?ã"}¼FÏ¡³ƒíÙx2Ym+«Ç`úŽë¦›,®¤Ât1¨«¥#&ocg2ÓýËZ‹TÑA?sz$Ûš=}æjÈ×…Ç­QÙE9M4øy-JÜIÓWÚ(º¸å@Ñ1`¥Þf°®(7H4xÆC‚èI–uûöXþN4ì.±Hm&ÿœÍ hp‰¡»=ºfˆXzQœòµ~³-©²¶lr>N'¸>•{¸ôŠÕqPôÊ+|þÐzÛ“°%˜Ìô#1³^®ÈˆÙC ÏÄ-“÷4ÚP¡j&ÌõDoo¾Š*àà¢Ð*·_/ ŸÏq¶Áœ¾Îçêê‘9&´ ²¥r[ù¾úÐ*„,D…vý1 ÑûJmê7¹âÔÉÿêæ ™( ` ؜֫·O~G×å•4U¹ßçnô==0%=âÌ9Ù4Ž.ªÔ—2Ñ€ÕÀP¢ùäË®s}r †¶àù·¦Zˆ÷Êhí¿ï òô™•Ïïsì+8ZF";æÂ?ó1¥‘ŽpL%m÷§)ú³Œ•GÛ©QF])oä24ý£¹-,"|•¤õ’«nÖùð•á *œ>x"ýóñ妅ç#–ÿ„{üê¤Øâ:g?B{;[sÓ™ú<8Ôä–õ²K«á.,ÀÙ›ƒÈ½ýP¶€³pÇÎXÆ /²)qp” X²}Ê÷6HwæÎ6)Kf™ÞÊ;>¬0ti{ÁRwÇé8N Z1ú«Ùh±¹C®¡R\úÆ"ìêûõÅK̘ÚOÞ²ÉàÿçÊ °Îí5Ç“¿ÿM6’Zï…žDQHýǵƒÁØXÊ&æì„íùì_ÓˆJãŒñì‘áÍî"?ç Uþ”óRn3½ÊØJÁ:ý÷ŸÕ®8ÞR’d—$JxñãØ\˜ášJ/I½FyÄ à€¥¹‡ LU°Ès¹ µ|÷ƒî|½ƒˆ¹ÃÝÝrù,äwF;½–uùŠS`™¹Â™dןÇ:M{7·Š¹«?[Zl¿Œ¥#ÐÚl\¶#®¶0>ÇñûüõÒÔàG|Ú3âáære\®DcRjÿZ¥ž_‹¦4'í.…Þ‡Á©»ÄÞI|pˆ[î ¦âLÂO-ÞÖË·¹qƒßÒ‚òÚʦ¦%+ó­Ûµ¥ÜXm_[âCÊ·‡ÜbƒëÒ²¼ú6aªþ8Û-Ÿ-†l½ýì œÈŽ „Íü?}õYSª)òÈgôi¸¿éø\±?ö½­*w‹/-UôH¤È³ÚFOåÎE[;/U6=ÈPìàý<ü@îm§¨%48ç£1^aãh¸CùÝIö—‰;µšÒS‡p×\M)4Êj¶ÐÕÀ‡²ý6È(®•V æCð{‰xEdF{ ‚Íés={-®Šˆ32Ãìêê3n,žÕ^ŸÞ]³*;OScç.ÏüOi2©¦ýn!}ÿ^áø˜±îÇøá¹Ò" ù(¨ë³•àëéƒ&œhß~ÿÀ“ ìÕ4ÇÑN p®·û=öó_ªî‚]of5”ö”0ñ²RÒðà@u†bŠpM­P1ëm…:Ea]úo³÷†ÒxðÙÁóóËÕÜ·YSm® «ÜE¶ÂS^ŒØÊ”B ÖìÚ^?3÷h_’ @„2‹HÅuÛd­=‰? ¡žh¦‡·ïäâè ÖÈÿéaGŒ<\{dÉ”ó´mÕ+È(«mN+ê‚7 ê¿S¦ïTWÔFyùzÒ~ŸO#ýÛ‡ ÿ@8†g×ùX¥æyLG² Š$mK+MA—Wo¸•UûÇý<×õ‰«ÿ;­ýȳáL¶fÖ#!֒ߢ¯„*1ªgΡ2D PjåHÔÕ½þ½@ˆ…°§¼‘²liËÚ1=j Êè2õõûîðIy ,hºR’î0(Ê'Ã>ɸä–{nÔ8á,–GtÙà6Û_9Ø~â1‚>å§2Z=£4ø-DGââ&,ÃnZk£ñŠÙ! P:{¶Æ[ÿ+ ?:ˆ?ë¢è‡T‡±ï›~†ßAà,F‘$›«)CTF™uöÊãñ ºX7ãå>Zý ±ŽEvzÿá¹É»îCj‹¡U¨â&¿r¦1ßmwÜ;¤3³Ãq¶ó#2ø{[oÏŽN¿¨újQ’üaL²ŸqOåY Ê_¬m­'W‘g°|!N‰3Ûz·‰C*é—úxݯå¨ÑAN¬?‡Á5ÑÇå3(r}Ÿ+ˆÚ5ÝI6¶v–„@øåq… ÿj_7†sJÖÕ!°„-¶¿ÎÓê{yŽ·ß™;¹ñŒëÊ(Õ/Õ¯Àm÷}眗h+ ›k¾€Õ‰íwy¼e ù‰Snq'–Nް@Úm¨±)ú8·ñ`„?¡£é`y~Ä vñSFY!F•,¯Ys?䎘,4XeþCûúõh¡=á¶ü=y©"áã¶¿¹g¤‰:êC}XÆBø™é8ŽGÊûüW-Ñ«e©Kº(Ãa¤ ¢ÒåÂ8gõìêk‰çIðÝNà˜ÉþÂrè£xÎ\è=ÄÿŸ³!Õ[ ;TÅ– ì‘JBüØî5® F7ÔS ?dœ^>¤7²¼=hW‚=g•/OJ¶!LŠFxýÜÚ$áÈ »)“ÞnÒïL½Gšo‰h˜Ú§îMÆœÚ,y¸ï˪±Ï!z°X,|A)pÁ¯<=J¼“5#¸Ý ´µ·,ÚƒÛ(þcï{ÛÅjr¦|œ4 Ã€½·Ä5Uc²âžŠ=b7ñög¿kÙ™LŸgçi—6bý(#õŸK{g âŽt‘æ=4g+WXVXö\øž31¥ö›z’iÃW(-ú†• ÅâðËótB<5»¤®øaAò¤6*2øR BéŽnbÊ)¦ Â^i‡0ëÝ €%öÕŸ¥y”8³Øçâ|Ëq†‘F9X) )Í”toá5ñç-ë”…®äišó»CŸ§úÉ^;ö™Hè×8ìêÍnÐìéZõ±8X4Y~¶¤éšga+OE]ìr2ë?¨.™ŒUåuãszlMPöyëóìxÜà—¼ÖÃ_#þ y“*ù‡Ïö0CÄÂ΂Ÿïq説%dé´xµ&Ý2Û½Ó|Äc9ÛM€n÷} Hm9C6`ßÆÓˆ˜,bûÿß’ËP‹j>NCv!/aßâ~t]îSP=`É‘GPnâƒS5ј˜Eé\Æ›?ÀБ£_Ég×_ŸPBZíŠßÆ)š·1§àtîKb¶&U‡ý˜HÑǙ׳¬ü난ن%™=¢ö£Búú»Œ¯>®=šÒiš5Ù ø4hÑíüñ§/›ˆ˜º´Ù¿ðnS­†l- BG›+PÈè>Cƒ§l‘()¢â*5Dej|Ã.Ëùmé¥vÞ•+0áµâ´lÝhÌ_eDÃ:Â7sÙg/í–^°~ÓjÛ¼'mÓ¼ßòü&í’ÒúÛg8@СÖ•pR1N€ÿžÍˆ?ùÀT¦÷r@•9‘,Ź—ðÄGÜ}ñ^g'ØÄ‡/¸à…UZPAGRD~½ÅΫ‘Õ¨—K¨DvÓ}›Çý#,öÈüÔ]ö—¨TTCÛs hè±õõgêóx› é°‡½½ÿ-ŸpϯúÓ‹·u­µ n^j<Ö´pÎüZx"<Ý ížå=Ž «Ê@}Òû­ìØm»¿¤Þ¸1à5IáÆ2šù‡è°,}¢—´ÐÒð*t¼ÄéÓ§l½ÍŸiƒ(üÊrýñáT}’Ó¸½<þÕÞ=ݾ¤Ëéî_—^oR«Ž~}ù…öG) ƒn>´ ‰pt¾»…¸Y©ÿ¡z–ÝÙñÅ‚z0rqÿÜ͆'Dۃɰb›{ãívü˜aÂ×N@„N £©Çaºì,уÓÒóKXP»©2fvïAIÞÇ º¯æàuD–$Dèé_mÍ-Ö\C¾'Ó`ïÛ-kÌcÓý9©‰¹ù ƒ= ¬—y-õÕ3^¨4RøqÞÃ4FÂ)zNPÎñ:vÔš¹/‹K­̽í¯¯¦Þ¦ !JáuN:“Ž7*p-•nºØDÆâsQGHN±±:óú>/ð‰±³ªÉ©By"fz),yp1Ó&\¯Ðu½™o}·çÄ\çã8s®6:ˆ—|EöÜÛH‰In‘j€|Ä‘ñ­IzçOÝýú]™Š` @éäô²ëÿ]rÄIšÊ:i(&-þ¿¥/v»1<à¡pf~Tt÷5Cæ;_Ãг»7~ó„h™–£ˆJ£ÞJŒ¢¦—’Ì#çÓp+{Ò»ëßOÌP¯ Ò¸û‹ŠõçT¬×šÈ"!âøAÖ"©XG?†;è$MÁUyk§ÃÎþp]üºMzÞmk¤¼ÁÚ¨:âÐïÚõÂ@U…‰½]ïf4 4‡PÎ*xJô¤²­àq,?³ÊX>ò ‰–ZY’ÕlÃ\ºÙžÝâ×#Yæ»KuD`erÖ æ‡NíŸ'¸cáÞòBâÕm>ÙMƒ0M-ô[—#¯Rwk:Ÿb‡uõçƒÅl» ˜UšôT,c=ÑŸ|…°…‡´ÅùªÕÍÏÑ­®7ŽØ1ö^){Uc5ž’ç¼kƒ6@$7Ëe›å‰OîP4žÓ–ˆàu<4 ä¸u6‚~‹díÏ2ö°=v•ÈéWï3*ÍéÙ1W#,ž»?òqv^z›oââ<¬ î¼œ”ÃBDéš2SøöžÞ˃¥±žù6ù±£»á8e1Yn.¬ä ¶Cµ@Ñï{‰ú™x†l¸¬«uëJ>¬©e-Þ Ni½¬·Ívp½ëUŠ8Í ó_§aÊK-{ÈöráŽ&ÁËAÝTt§_DÑ#-1Ð6ìdsº=¹¼nôËÚž'S8'Þ~!^ûML,L ˜ñWÂsÕm‡ã¨«‹øcáÁ83¦ª9I§‰Žþ0ϰ ³§¡w:mT'{ ÿ¥Ú/½^qs¿­Õæ|¦28ïËyÌ@âÎî›ñÁ÷7$n„BÓºøÅ:/‰¾×¯ áqö:Ƀ؊[{–6uFRJ7JlråA£rŽWêc¿æ®ýÃ(¹BaÅ«9ÚËqBß×­i˜3Þeù¸Ýµ˜Õ L\ Ì™u”‡p…€Ý«æFgM')ÌÊ­$t&¢F”­µS•콄µà\m|½ ¥s³·Ïñ S‰k9 ‚¹ïØå·½5­ºæËcªéþaë*pS,Ôþ{­hxÌ"À‰åuþ@‰_ÚŽa!¾ž„[îHeR|BùÑûþ\»ín£Y_Æ´Lç×v%9‡>Bð¦C3?ƒÍ–ç ¥7)¦­Ò6ˆLìsº|•xãÎxÇòô5/¶ÌvòR\õf‹*ðž°I\2·7žxÓCî†]¾ëÑ0<·Ax8iu\ì˜u ….æ .;K%+fjŠ®ªAŸg‡EÇ÷‹àS²˜Ûw†ìn+žzê$àÉÒñ¾úqùó3‡"ËB­«ì  Z âuD -Mùg´{ðŸ]…hâ¹GöK;}UŽ%ÑÏ@ï:F‹EÔ‘ÆÜÏzÛ—Öp†‘³†É´îj̱ŘŒRéI¥×Z¸Q„ªááöæyr­¿~Æø«Ýx;–ú[Lk)aÁb|ƒÿxïy£½rJ•Ê/% ‹¡»×ÔD-? ³ö©ûˆ“Œš8”KMte'ÿÂÿëšÌGu´Ž–>Ú„rïžÖ1IÊK›Æ„ËÜ_ÎèÅ™WÉ[ý ߉…ÖˆÎ+qïœ9n×í_– -IbGv£Ü7ŠsGäFþ½úf¥´Ø<›‘ð›“⃠ùmÞyW3•6+×J…hö—ÍÄ-Åí¦ñkûfS|…—vcJ¦ð÷Øé{0¸^šPÚÂùÒ@v߈þml§–œn.’ùº=EàJ0×E”‘çT™8°=nÙwˆe>ð°Þ)”O¢„/Ez+<3(İŠ5#ŒÝâô žâüÙ.©Ì¤/jÄ·Ê g'¨¼ßx§kHT³&JÉÌ£¹S1¢Ù ´a÷w$¦62| ²({1Ä“þ½,mb$=Ó«* ]ï.Ðç¸ë«,Wrƒ IŒ©hÿ—ÆÅ+ âºZ4öó4´£&H[:™«b‚úpèââ"úˆÇ½ÝDàiל5M|àLІ´~—Ñ®èÌ”çt/%9b÷í?™¦Øç«s RÔtkÉzª·t?ÆœÍì;_YŸŒ›¢Ä ­h!“n(£i1žÇ¡Q¼àù(l¢a°ΰõk4#žÇƒB!A¨®üìâ— ˆLÌ/Öÿ¡év‹ÞÞ{÷ÁD²¿µ!¦ 9zÇÎûÄcl,ÆÁvú{´¡¾º¿ý]¢¹œ,÷-ùtågZb*³¦Ž„ÓÍ_ô£3/¹fx"ãF‘8…»=iÆÖÈ/IÄ]WGãŽ$dACzÔgròzh‘ƒ3N£Ö~Àdr[(’ªÉ•0™3/õöü-¿D÷Wítt,,=š_ƒÇÂ@)~ö“c§€Á½röó΄xè#Ùp׉k¹™ÕzÎóïD°Ú– ÞW@³Ë»àÓ±ÉÍö„\,³Ëwöœ¸üþ½~6gŠÈ[«“óê ïägcÓå¥%6;”%8×)ù1?¤&Úþ¹oY‰1,*ÿF¤ü:A2)09=ÃáS(ÉLÎÍ „`¯frç(„<À ÄÑnêñœ„ö ÔèûŽ2£]ÄGPv]Àzì}öõÄ=<¾ fJÌ¯êØ v‘}ˆ†¥A&¬?:”â=І}%ÃëwöÇäY0+§à“¶,LÿR©žÙ‰=zÍÙûÏí£x$TÌ*é~£³ë@ëé”6(]i©ZÇõRkб ï„’6Pæwàì¥)¨®ç´õ"Õ¿U™MÀ§ÜÐ3GW¦ã¾fëíù9Ïf´4äVr½N(}[I‚Í›‘¶+;äèJBuà—²·©%.Ò9cEݰ¸™¼IbIŸ¹üï_“rTÿ¶<; 0ëwDد¦³bþ­²ÜSÍsc;ìÈÞ\` šÞzžŸÓ[’â°þV3z/ÉŽ[™".r{ƒ’ò{©Äžuˆz`!ÛXÜõã²W_'f$R:v¡U™ëí6·!#Îä?®À¶™=ò™°Ò• uOºàçCG(B_»GëÇÊYØýØ p°¯DŠ< zÀD>P°{dÆn¤1º8ô ߤeGL¬Ã0AðyW÷ˆÁÔ2 ì²!]e+sxµÛÎ]âÂäA…ˆ6jzÚHø_ PG²b]L7vâ)±á’—áàˆzæØãÑ…Ë÷ÒÄz™]™*^:öu|Ÿ‹¹£Ô7»ÎòŸJÕñ^E¾¦©ˆ©ÿŸYó—È7¸ß¤õ$Öªõ“dL˜í9á{bOÂX*/  m01D8öý÷j²Ò‰¾žÂHóùnEë—ÇŽGÀÇt»ý檦kÆâ©ïæõÃ>YAÈRâT2Øø8pÅ•κÄ3®¿]†­ŒÛè^Ñ^OÒêšPý’ AISòð#¢hw£ÊÝ5/’zýÔ1˜ʯWlž»LèóEö¨föCb¹«ntæ³ã_ŽÉržæ¢CNמÁ#ŠfÛÈ}“£ÞÆ cZ‘ÐaðjãiqlâPz¼x1»¢€žñÅûÜyqP–ns¢‰Çètã\.G°+¤D¾óÑ Ÿ›N)ë-h»„²“ TPQË~Q, ¡ß@» ˆŽð ‹HH½4¼g³_è<‘!Z›ÿœ†Ì.&¿_ÊZh>-–Y»|˜Šn @6¼-æYr¶xU¶°ÉZÊ ÃkGÝW€«,(@@:é;—:‹`ŒæUîêdgSŠý » 2·òƒx¦ìý  ê»Md¶’~²‡Ïv?è}7øí-¾?ŽH ®ìrÑDµD9 ”‹›1àuHYœ®ó0ˆÿœv]=LÒó$ÔHJ‚Ä›]wíìÍj€84k_YÆAPP|7•ã@×¥l´œ^ë)þÚRS°ë<°8i¼ñÝo ÖÔ¹5øE» a"|äTÀí$ñdÁÊ$·ýч‹Ýÿqð¸uò¡; fiZß(ÄEŽ]!™ å6ÕA¥¼ò³Ks‚±õ¸ýG[¶Êyl¤r¤ÑµYN®YñìZ,Ôö¤¹‹ô4bÿ*¾áùjÆZ— ZnB‡Ifgøû}ÂÒ£.¸Cá.nİeñúwã›%ÿ Ô*e‚Ëmì† O–b¸Rzls—Õ^g?b7XBGÖçõ&&›}ôûW\ä ÿ· t¥HšOVjhüS܈pP¡lÜefpÃ-g”¬r×k°"Úò7éÂØxw½ˆ›âã»÷f—ÉÎd}pÔ%LSó ‹PJ%kÌÒ}H½b±…Û_“yú}jøv#7Œ8»vÜ„w›¯´+,B‡P˺Ô!Àö'Þ†ôJº@› ‡j_ËÝëxÅD;%ÇãϺéHZ¤7{UH½™OŒ¹ƒýà|€øûÌ:Td²Èjií"/Ù…?&%vÙCõ_vùö¾®ó¡È×ÕMÜÍÖ@D°ï†?‡ÖŒ A-M;Æî¤=ÊgçŽT‰ÎÒ&¤ñánØ…kޤxqŽ™”iÉí‚ Vôq“fÂs©}Ùû™Ý•˜ò )kaúWq'ã‰ÑÀàe,"¶]Z·OÅpÌì}F—A¿è ¿‘ûêÕ}ަe©(SŒo ¤¸LÚ°LÕ÷¿â GGÐS¾M7çI;ɺ_3Sz5š bhÿ:Q4»èаo6ãl[îi^}kíûBÕ¡O´4&g†V‘x~üF8Wjèf#íèàcÊäÂäeí„ /aóA¼Žuÿ&¥÷à T8‘~ë?¡Dh°X-ÉËâ>CA ÷òWÜg­<üÊ!2ùÈÈÆv?Ý99²·WjOžwéþ´¦Ëè̘sÖàÌÖ`$)´ž;§æOÙÑÈQ=å"ý—ö`;»®ñ›= í¯üª÷4²³àò3–5éÛXâ yÇ4%õ±EA¯Ê#;a'…ögK˜ƒoO…¦éý¢.±¤æöªX¿ØfEõœëàÑ…¦£ GÎ_™È•o_*"‘“ægOF?‡ø^Ÿsñ²gÙ“vÊ©ˆ¡šãFÃb÷±…Ò¼ÎÌàówüwX+D\íÊ5jÙ{›½Ÿ›”Tq¢Œ¹u—âe%DÓL]ö’tŒíÑàV|M7óEä-d£ŽÉà;q–ÒÛ°Ö¦Ø÷ä©\¾ü.ðžéÓ;CgXH˜ædÛêd®rx“?ÇÔ¼‡ˆ4fµ¾»°_¼BÊp~@Gú+t´î>[joÄL]üL–ÉÑöü˜pH @€Þjæ°iézù„¹u¶Y§hm ÝÊ ¸nm *q¾®œò”‰F1ÈK¿3ß9òK}÷}¬ŽãDÅî¹øÐ—­\é±×më»ýòCÀ´hd<â€íTø×¢¤zD! ádêSÝf¾ÉÁæ…Ü8Îk³“­ÏwÞ·ÐÒ÷¯g‰u;ñœ!"7CÍ—é«ÃXŸÞ'¬_ßãØÀG*nlÖ°¤}ëˆùÏcÁûõpÿp7oáCUL·[Ä np2>sÓ±m <÷ás5ÍUzqˆY ZÐêáQ=«cËQ†`N¨‰xj2 tµúX®A Z÷Ã#¿É£ÝNÚB¼>˜X+ü“U?h "4Ã’xëZ¥pAË H¢›:ÜAL´®Rºõ (ä ÷\Ï&Ö#O¯dÉQ©DÐã…ˆC&·û•ÓA–Ýh&à„²6L€@ í6%0PüÑUäÎMƒ×x|·Ò3|ɨþ·ýŸ½WÅÁGÎ>þ×ìw}VGºé³D $Ï´P„TˆE*D"¡¨B*$#ÿÌPVI”Ötõ•À4ÄŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÇÃÛÞð}k7ÞûŽùñµ¾+ïk»Ûí÷¯ªï¹½4ó×{X½·×·lySèdÞï}í——½ž÷£Þη½Û®÷Öãï¯nw¶ô=nû½.ó-wsm÷¶ûÞñUL&4ŒÔØI„É£§•?hFÒjžQì™”Ÿ©á&Ó ŠzžjTý0FPLô‰úL§”òjOÚ›TÚÒzšŸ©¦£Od)í4hi“SÓ@2e6EBª©ø˜i£L5MO&ÔÓÓHF¢4ò˜ÔÆ¢a´š§ú)š&ÄÈõ2ddÂz&“&#Ð2žšhÄ 12J~CI©äÄÉ¡‘€@Ñ“#h Q‡¢môÚMf™&=2mOy4ò“d§à©ú2jmª~¦dL™13CF¤ü„ÃBziÓ#L‰êl™U6Ú“Â`(ôzž‚i„šyjf˜)ªžŠa0E7‰ˆÊž6A¤Úi3M4& 4›##Fšd&MO˜˜›TÓÄÄôA¥?S4bOMž#i©’Må6*~™$öõM˜'©„Äž4ÔÄÓTÐEP`§£LLšbb ˜Ôz)áOÔÚšdiµOÒ'„žSdÔöŠ==F2hÑêyGèÔdÈÉ2zOSÊoDmLjªl‘é@`Ž"‰3Û-„©P-¤|‡& Ø8áì ûHbŒ„Oš6îú÷è–g=xþÒ]?ŸK­PÏòôaÙÊûùM9¨„X3â!n™“³ñ“h=S`ÒbKULbÉzP¨Ú0HÙ»wž,ÆOœ±L*§[¦ðÛ—°S‚Ö4Å5ئù ž'’8q¼§œ@Áœ’O·sðÜk|'JîL¬’¯š†üŠÖé°‘,WöèÜ—z%Ÿ)Îàå<|~WW¿hj*j–VûÓž˜¹Äáñ‘ý΃3 «p+³›Í("¤5}’B hÀ’)XaIŒ·Õ!àÀáÝð¯ŒP˜Ò@~‚La>CøÅÀNz*"p'£G† ˜+¨ü]D‰ÄüÀ²ž ’ ²"OMyÑ" …SâƒAñbH@a]¶+áHÀB!nÆTãÀŒØÀ¶ãщ#×ÈB†1ˆ%ù¿/X€*àSd<–$‡ ÎÀ€5lQ æ¹`Ö2-ðÂØ0àp•Ö0Ï’åõðAƒ*døôóQMæ ßˇ׺loUð’ûeœ¡nÎ@$ ÚÆa &ö—€‹9JàÁ8 A‡€‚ÊÁ°q¡ƒ˜Œ:yÇã×`9ü5?Úø¥æ¸Ã0#_îAÙ¥-öSGX™Á|D0#©–pp¾I3fBd™’@Ì”#æfLÀ±l90 À™’s9’0d!è¾;üƒ'òFW}__"£"™ƒ_›qЫû¶g¡ŒbŠ×ÎþûçÇ–É hVv 3¨ûýl;óàiw¬H8: \¹[“Ò8¯øã^š0 7»“³P\ˆòù\ – ”ľ·‰ÏÉg/½{øÕÀ+ò±ÖÒX|)€Êlû7h|½ÙzU}|>ñF`rÆ¿# -¾ øÀ>k¾Wè²…¦mްÒã—Î07zt°#ëê5Z¡]YÒ¸)0~-NÅi0ˇ¹÷¥ðÛG¯adÒ—MâhV Z2¾2e!*ð–V°ñÜý°õš‹ ¶Ã䃠S¾3Mt¦p 8Öµky3)L¼eÈ•a€aÃPÂìh*øCØøIׯ{ÙŠ²%4}n‰¥¬h€–ä`Óç“X Á>…}LB#ûá¥TÔŠˆ=óÅ”¤ÿÇ{àÂ2–¹h;ãD%ÙļÖdP¹¿< ¬z9w×ñ½ÔJnâÍÓÌ‹CÔ–¬¨¢ÐžÿH–NÂN8µM2ßµEÓ¥>÷·š;Ð} ‹®¿’‘âÓ£¾·çÕq ÷2S§ôL¦%¡ßèú_SýHtÚÅõ¤¢¾=ÎòÙøÿëÞÉXX"€™¥ú•¥ÀñGYÊ æy±ÅkÇyn¯ï£p?Ã>Òsi"P?°âÿ>ª¡°Ü8˜ª$%F˜ÛÙä8Y§<ktBÖ e E8,n }§ÒFÙ@_ò5¢T’0þᇶÝd‹ªI u7ŠÅ¢]¸xÐ÷%ÃZJðð_Ÿ0 @ä³/>Qù|«:OHÝ9]ßMF‚&e`ŽÐ½fÑÕpS frØW§ª7vXUæ̉V"Ù uM²¨23&µ¬u…Þa)ùW©€ØE’×ï²òçÚ¨kîÉbC=ÔoYMÙd%S/Æû‹Äû©óFm(p¾î'E¢á¸ßlf¯tF$ì2_c"ã«húŽ•r¦øz½_RÛä3Þḭ̈7€{øÆš¹JN\Ô“]öå1ú¬7puYêWæÁÃñûí¿ˆPvu‘~3õr™nÅ¿Ökà!Ë/) ù¾¶q[ékâ»û€c×(ƒ6hóø Ð]0ÆsĆ.ÍÌø²d ®‘I¶§¹8ׂɔ‹4©±- å7×9÷¾^º9VL:¾iƒÃû÷¸–®þ¶¦=­5õé")çe¼oByu›ý¡.t¹B/é”x|J>E€©>³ANX¦§BÍib@ÖGtY%ÈY˹º 9÷&<¹]pTxPɯñßA‰¶Ïv¯\rXËtÇQ逫ÉÀ³PËlÎqa$1wߨ¾ Íö| 6_^,ömµÍÕ ˜Àîð0Î…k¤ªjCQ´MXOI5';ñã³€NÙBkM.Þ3³“Ntøõê79‘LýO°YãWœkZSù»½ÍZyšu¼Á £Èñ…> KGZá‘8–[çm‰m–zY§tÂ*Ï›¯ƒ4±ÁHÀ±†UJ.˜ðf ynžqù5§‚­iT“FÙß(Zµ€€€@GÞÚé¦ù.‰Ã5ü#0CRñ4_!TÁ¼©Í™ƒ™Q‚œÏ ÚNiYëoX·ü,O\˜Íg ö{-sµšd±½*<ºfÓ<ûTy[Œ'bú7’«íµ#;µu@Íõ2!9±Jñ}}•5ZÇ!îÈBºÁ†„ãªÐƒz“°X²‚(†@Rþi€#@HúØ/UõäãÉT6·]ŒöÒy§÷YV7-ž†;•?H”Mî)U3&Þd¬ŒöƒfU.²‡â®ŒiñS9µ´[ªRœS·Ð)y†‡ã2@* àWÁj7ÿìÑÛ´{B?^¾½»ÅKæL”ÿµt8TÜMij¼ÚÕ?¶{`ÇývP%¸S³MKwXã|8—ýëÒ¨$¶L‘Z…ýþ˜Þi»ŸMÛòäG}9F€±¹Süžp"Ù옌årívž]”|ß[Ú]Pl‰ºÖü³6®ù[IyÑ ‹ˆ!áˆÑ»š¿. Óç—MØCœ t^¶’b§­1÷ì¡×¹™#3JÔݹ¢k (Êwá‹ùÝ*+q=F«|xÄÛî & c¶šì(½“òéë?ù4¼xŒ`6´‡§¨XÔ(7•ô"êF*AæÐ \ݧmήQdh‘ WâÙ›æW1Õ›×wÍÉãŒ;kE›z0\*Ñ»hë` Ák \‘Þ…]ûýÝžn}rbøçCé°á\ëÎ+¸Ä©ˆÊäd„°#îÀAûÅ?)íGcÜ„î1? ´×Öj€ ]»QºÇT÷ýj¬°bðÆÈºùÝñDæù7ú¼Ëøp›®CW9Ò³|“Oõ˜ŸOÖmèVëMPl쟃ﶫ×ù€AÁ`€!Øc¡‰Úû s÷¡ÖF&ó› Z,eZ«ÿž/‘îÏ,‹Âr§§_Dˆ*H 4¡xâÎÐS5£Àbå‚+¬Þ1cMoÁ)~ûϖܪl v¸³ç!­ÍzÔûXù ®ân)׈GpôÒ¸æòßIåÏ·G'äå”Ç:½Æ÷ Aº@°ÞLBžÚÎI’gÝ;Šu4tÛ€b |‚by§ÓÔ-Î^9¢v™U®5|η^sZå²Ï•ÿ²#i©†¾ÛV]K,àï´ ÝU¹Z;Ÿ8”;´„"Ì™ACœVÀZ¯IЗ??¤ÇÈV˜CÍjm&Åûר³÷ª©4´±ð¨Þ>C~kç+iÛžŠüh AïWúŒ¾ûÉ¢ÕÜôÊ®3€‚îë>ÚéS[Κ>^-‚ªQf÷jä+wé Ÿ“ŒoL…¼ÈySg[¹×š®ÚŸÞ½=´5!µv,’´XE!3£Ø€Ý6Ìõ8Êšú¸ù]Pwgè(N"ž2RÞBd\m–ÚmhÇŒ©-–ßï¡yÆmTh ¼¸ù£ëuOçÞ딦¿zc!h³ÝÏL8c‰f~C°”dùßÝÄoMߎdÎ[[m¤‹Ô.´ñµõÃSÈ?L#h1Ö¾‰¤3³ãlú¨ä…¸7%ëSCÕ"÷[µì²†Sëw†Ѳˆ>ªÝŒ§•çP /øJßFáb²ÉâÌží‡À›.€«TÝ{Dø—‘^µÐRçø½ÙÛ¯ïÑøúQ+ºjÕ)¼çS£¬VL¢N$I±K|4§òS¯½\^yßÑ®\‘@M“›rD—éö|ïšÞÞxbÛj¸ñ$î‘…qs`íINÚ^ñÜüA2GCaÝü[^ôsª·êð'Ggsq.¤r÷vXC“6#w²ž:‡o6¬½ÖC°ÖUš½ªH²ÆåÖ…H¤xiÄÈhOû™¼ÊÝ–ÉŠ²†=˜þ{_Ìâ0_Ý—–š«û('ÁÔB“ÿ]>EïçJÅ¢&î¹Ê!<±@Žu 'ƒÞ¬êÏÓqþ´DD #LXìÃ_leÀCܘ<,ùœ$£nœµ3‚\®?¸²± ôÕSšŸ›ÿ4ÌF òuê2„'žž©ÔXN•W„á,F‡:ÍzÅjÈ"=¿Ô²ˆc{/I!f¤ <äNtÝ>ʵNT;?aÞ‘ ²ôQjÔ²Ü ²JÍ2!ÀkÌ;“oãGôsZé·C̯3? h[Ÿ°ÍÚÄþ]ªî²ÕK¿——cèOıœv È”À0wZp^€ûÁÉi•šMJ Nr¼‰Û7Íû²'#Ì3»µ¨w]E( i †qŽÀK@msŽ6êlómCMZ íÂ`(yŸÇýFF ÊÖ=yìl`7u%?·)Eà´“c0ÔéúàÙiÓ³ùÊskã"¯`ñbÿŽ$k “Žî½®çŒÇ†së ¨«ãRP=ÂÆàr“ôó–`œŒîQ©VrL¶36š4IFúù’çõ‹2Ǭ»cfVŠ«/9|àpeÒµ\y‡Ò´ªT´é"û¬ž>ÿÄaÓŽŠLl¿ÂW;9~Ø{-%›»¸Ûï^¯˜(:^ó¢ótuÊÁshdY[ß9Ú@‚°‹±‰@$Ÿß W½<Ø>Âò¨J­¿’—³tcÖì­­Vðn†‡Ø†› ‡uþí©WÅn[¤há¨zï^Åsž[mäÉsíD1&Ÿ¿ñ(^^ks7’ÝUWsîãÄõšep>_Å{qÊ@ÚÅCdÓp~]€9íÅå§¢š'²ë +GŒ ñù½óµáT+ÅwF”¶7»ÁC”Õ:Ù}ª`fÛãâ[ÃÍg±î_j´ g k2Ð@©—õrø‡¦D1éJ­Èü›  ?Rî˳)6s•ØÝFÑä–3Œ±Pùt1ÏvœXÝ;Ë0™òFȇ_zE•RÜzC@%€ò]P´æ¢Ò Ófi½ÿ7Õ—°¦0<þ q‰‚‡©<¯ºMÕ«BÇ ºíS4¨h¨²š‡ˆÛ²î3@´^] __3¾9xNäÇtG@G(Òaˉ'ŸèùêðÛŸéÒ`÷´#Sbéãü´’d)’/ü‹Ø¢,Z;Dµ ŠN4'HoHê   ¼ÜG¹âóä=Ķ™¡h!î›ôx{/:Pìfïï5è#«Qá…èF€èîÜ56¯lPŸŠ÷2©û‡³„)ì§»]zl9oôÂŽûØxÀcSMfvnùÿÆ#¡âÙc´Ùž3霣CDïþ›ø²Ù?=ÂÇi2Q=Ÿ1CÉŸ¹n‚œ¥ÀÚcú´xš£Û”W“ɼÞç²q·o¿Ívög(ƒKõê,.D%ò„k‚Ž1b6®(#¤ð&rŠ’k·øiìþ*å44)„"Ì1“8ç“™†~ÑêèþŽINSÞhBbŽïè-æ¯÷{‘¢¬T–ö5á0rˆ/˜Ø¯¹]¢A(Ÿ\w%qßzB‹+1u×X1|Ľ޺˜ŽK»Vàü"HѸOu|>IÝ6†µAžíÏS\`¯;z}w£K5€£ ixö…\U)‘ùx„€¸'x}©ÏýÖ­æ_-Mš“ã„zÄ•>yÙÝlv~âzþ˦-ÀUùŒB¨Ž„:sŠè= †\Ðnà é}&ú$¹ìx#}pÈÀ­ñõáÈ;ù‰‚ý»©Ssªš,.®_Õ‘¬kÅ)½Õí³´¿•ÞRµ²p¯X($åÙä}÷•ñ|tÐP*>¡VÎ{v0Õ° Dw-BÌc5Þ%@²÷¼‡[ÀÂÏ=š‚ÖÈÙޜٟj=wîòñZa/’ç 2Ü=Œ„ì|uš±'êŸã_¨z¸¬xù ½Oç’ ‰Ã‘ù˜( ecÐO ”±¦a(= .l;àþ¶iY?ÌÙé,¿xù`5%£ðß_+ùºcâQfïp² |ãV((4pú—q‰ÚÖºßê(`G*_ÿ‰t#¯ˆ»Äp0~w©ºªZè;íór½×Ë3º2Ý}µ˜&›®îßø}k£ös÷ƒæŽ1éW±`(6tPÇæ)Mo`Ìg¹°È~Ÿ¢½ú?Á^Ü—”Îe2¡‹UX¾4íJÇeAR&ÔåœúNrËF§0püwf–Òü{=÷+|ì.sÞ µæI$Æ ª÷‰HÕÛãê•”ØrJZü.-äVÞæo¼ŒÃT÷« ;üt‰ûS–t·ªzâGøážù´áèJZļpœFÛù̽ b'v ë¦Ë•_Ä6bÄ¡½†(ÛÔlÍŸ‡ºâÀ—·¹8p_⤎hwåK~fÏ<‡§¶±þx*zpQÿLX Ö7âútXÔç˜%[›Q7ùóxã*š#þHßd ecð¨Är#ñ›s¤ï7ÝQ•šé‚Ï‘vö ‘Gã¦`ÕdæÞ~à Tñ÷zñᔺº¢ŒˆäÃdzÙG_Ë`­Œà5^º¦ÙÝ®é™-êÙNàј6þ¤Í['»Ð§ðÄýZ5v×§Íx¼×¥ü¾úCúð6 òaÉ-dGÂóµóvדâóÈx/\cT+n²CÏ‘S¶ójãÕQtʽ×a©å„Ôö.‰mM4Hâ…/ZEa¼>or1…H u¸àC ­Ô"¢â|3|5ÍžZè°ºÞï=¿‹ÙalÚ´ž<ÞLÊ’BvûÃû2ŒÖÉK¿GIf—Ná9©ú`æ”÷w›U¿ …ÄÑ>œ±`C>‰Ú9xý•>ÏrKo»\÷<Ät,9­M„3Ž$%F¯ëÖ'c5Žä%•“Ó‰ÆÃà‘‹û¤îÜ™I‹r7ë­Ìh;CYÜúo|,wDToå‘r¿. ÎÇ3)©à}K½NAÓhÌ—ÆúãÂpþ5_m˜Ä9 û`¨‚ï Ò¾T¾‡Ñçû•cÛ¦+À& ÄoW UÊ…Âw°¬{Ôžþùjþ—aröB0N­}Õj]ê$LᦔvX‰4¯.½{a~;'Þ5廨V11|Lî€ÿ?Èà©«ð2Õ¯]?GªÓÏÛ¢GÕÙ–ÎæÜ û#ß<ÌL&®Ñsv[«W!/É;ÿûb3ÖekŸS¾Ñ/†¢wê(¬GnæÛÃãuèôÈzËû êB?J›RUhŬ\lAbpì‚&N4å­¬ì·%µüÅ2~‡è‡Â:`oM\²&Vâö¾¡ð`yºûÖHW±+ÚÆa–%fákÀÏ<=Éã¹.Jûã¶™i±©ÈÖ”(˜R®vþ”p1ÇÛeYM×xó¨¬ enRŒK5ë€:.äËô¢ñ6ç ˜ñ`Dž!ù‘uµí*ºfvëàº|‰«}ç3ºK„د™Ïükþy$ÌoŠå¨ïê{¿µëk1Ç®*¿]dbÇxÅ*´¸P8lB•$ÚBÆW+˜\µ½´p„ŠO‹†´ ŽôÙ bâà-–Á¼•按ÙIøªuq Ùåáý䉪ð;… zm×ìàËèNnÓ Ú™ÄòÊõJë ¶]½!•Pá…Ä!ûKûÉ7sÙJ©³rp±¸Á(BÂú2¢l­…ð ^,•"‹Ôé›IžÅ'S9S¨Û:÷|ß²þ©,š[AdÜ‚)¡ . •zìyf±œš/û~Ÿ?ŒJ&CíbÎηLéõL®¿–9Bð­¼Ð”ÎAœïÚWžRÑHé ‘‰\Šç¬Gô·HUžJ‡6‹SbF›h¢ïÚNîL¬=°fÕøpaöSË`©ÞÑÌ8¼|˜å2œE|æýlÿ;NŠÒ~ŒFç¨ûZî{:Ü žäÝ—h;™ï}»öúÃuBâˆö}¶Œ»Îß¼ZeCd󾦨•§Û;¡rÕwohjÙ—<…å‚g .€\ïvóκÓÉþÛ½{gC:Ÿñɬúák-çˆ×¢éÛzÞÝe ßøÔä++•Ê%_”層’s¿ÓÏíNt¤g2”¯E§“žŸ“ºšOÊPœ‹H_õæPî* ÷@Ѹ¾+{Y¨v÷¹#ÔW®}é|ðNJ€”ãÒ‚ÞSž¨èÝØf)mÖ‰—¢Ì¡®Üúb†”Ý»áC_ÄHÏŸ&¡ñhŠq¬ŽÐ4›)°Z_Ы*Ýâæx<‡7ræŸe­s²ŒÝ†¹vÑ™îQ!òGð& ÁxÇ ƒäý…âÔsìVF̈¡laM‹æG×DÈå\ü­h¢RµyáfÀIFóÔa×kn®œÃ^™˜œ½>®ß¸â]¯ çÍr3Aû•Bò¿Dƒé|‚°åêÍœ!i:ƒ*ú¡÷3…aÔòñâ¼*‰jNA¾Ó‚Ý@ZHãY㽞¹›pñ÷<ÂѼå6©é+%•Ü }ËèÍHŸÇôí{v¯y§¨8¯1âò <=/¦÷ÐNq«¯½ òé fÕÚq[ tr¢í{J7%Òwu׃v˶Ž8Nî$j}ŠŽy/GVךëП²L¶Ò¤ì #5v"šhö”óžRòQGc ³ôU|NÉ<}1œ…ý<Ç}_¡l3Ô®Òª':­šœMг椛ùcÃÛ ÜùþÈ̱߽ÇSó»&btæ\€ÁÂýØ-ÎM%¾¸ØÕŒrŽœwLÐÀb-Ÿ`ïû=>“Wú1ÐÀ°S^"UœØ'IYñmzûÙS÷µRáÊ{z¹žýË NÂͰ•ñ$‰ „£•1¸âåNa8¢ÇËìüu5týâ©kdöT ½~‹92%}?#j¬Òþ~}®7ãØNš?­”ñÕžå l•°SÎqÓ3 ‰dš‡)¼¾"Nýqd´šžF™" ‘'½uœŽÅïômmÒTÀ?ïS;(½£Ò„¬i§àÙ‰!kùÞŒL›é°ŒNFÛq­UkÓÐ3ú{£ß¦]Õýú2­¡lLRdæG€vYàüì8̆úyU½û°Büt¶´GGz¾Ï5Á áeèü”:[Œ "{Ѓ˜Ó[pjÃÓn 6*‰VæEúlò¸†õ¯"PÔÛB×{?¾íbH@^o§$Ðzñ6àKÐ~ΰ}¬ŠÏp}œO3À!Ÿ£g/‰zAd±G˜è¨eŒœÕåbûw{®b¼nšÒÑààg"GD xvÛ å"îzÊÛñÍYÑš¿ë&"ÅÚ‘ô 1¤jA[ˉC²U­Çl&1A®RÌIOŸ,ì÷?ô†d‡ŠAÊq#þ«8,º ÷<Î÷ØCö Çq‰bðgä~ÄI¡yÁ*\íÇeï²’Ä2ðKóf¥Þ»úÔøòR1zO›/0ùçƒi^Ø|\+MgÂÊÀ&âi‘Úv|SÞ$ÜJ‡‚x#\âÒªåYY‰ÞX•%p%7úÐó¼¥3F'¶u)²P§¸5"RgjG°è5L/¨žÜêU²bYjü8̺çVQ¨G&?¡²ó)µ*Y{y†Kž´{µçóYvå"?j Û?,ˆe³grS^ŽÇ×€ÃØé( G²Üœ@=NÓÑ|Iœ‹÷ \j̆þœs~'f@år8©qè`ÌZl¦þáµ(¯W„È™1ºIÌ{ÖÅO¹pá{:æ{¨˜ÂûçM«¨úŸ>ö‚ë—!Âö ˆì=ÈíTo]¤9…Ê5Ѥ4.š/G¨ìóÌã ¶ÁÉrËÖ ç¢L«ïYȹ^hFm/›ÓBØ+¸,û7$(åCôîýhòE²±TõíÇóLôqò?#üÃW\BíMÛê Ý£d"M]uòç°d¢ðÈãyórøM'ÖW.2½„ØÂɇP4q«;Mÿœi»‚Ë£zíÉ+{>“~-BÜ?ë…ÐŽUÒ±hä'2(ÖB<õ×#¬©ã/(óá†1€@ntYy¿ªìå3D$gØ Äw(iÚÿµ¸¹õÿPµ€µ—"½i@Ñ’RoïA|ÈzáäOá“KŽ™Ü4å&Á¹†=l{''‚÷ Xí¬|&5Õ8ŸVnÅDjk-Èk©·Ý >ìYgƃ¶kÅë;!ø¥ÿ„ [ @Ó3vë;Àn;ô;!“ÈùÖÉ‘×bÌ$4šÏC“›,ot9J„`uFüûhÍ h*‚e“»ÿ4l ×!p?÷oNFÞ´»–•{öëïUSÓ/×DÉS0Ãø`SMvìgä”̤̕ڃ³‹ç'£Ê®ÛÉ` Š·[6¸Ê’h%/¤£)q‹bfô<‡(x©n¡ë`¸Ù/È9П;¿bLTýÿùabc¥Z¤ÔèÜ' 8Òhž:êw=`½ýÄptsHqF´ü†Gsßí?vÝzŽÎBM­Wøû µ¹çÁ©_.kÌ«oÄ `æ|cÌ8›d³^¥vË>óË?S4:k.e‰¶ Á­áÌæ[Ñ/"ʆjM=€ÍFƒíˆ’ûÎ\î…¬2›š»´ší¯FÇQ䤸ª>Êß:kVÚbUqáu“Z郥yT¾ñŽßµ8gÍ}ž]Wc™é<ïS#s#þê³m0,Þ˜<û'9x&W²XÆ0êBn°Ì€hh@…6˜ÙiªÒÁ?Ã×~i¬¿[ä§ÇËjL %Ç5»éZ:9£)Ë•šÉ?Ã<„ì;^¥’]ØpAlääý)ö &ކ·6æ0žßPgØ;¢xíoË‚óI<&;̧vó)ꀊÜEÄÙAeø@þc #p“Òˆ2 ) æ^ÐûœtLõ5b/½”ÊÀ¿`i²1 $¥l^øYŽžK¸sAÁÒJÿñw$S… äDGzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2stripe2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.750787819 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2stripe2.dat.0000644016037001603700000006754113607166133035023 0ustar00hutter2hutter200000000000000BZh91AY&SY¨.[Ýpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà5¿}ïAJ^Ï\»Ûã[ÈR_f¨QO²›ÛU°Ém“IYµ—}¸^'­ºï½öãsëŠ÷Þuº§ß}ï;ÝÞm«¾ß{í»|¦n;¾O“ʹwjŠÚÛµß^'–:¶•:®ó½­¯rê-,Z†¨­®Ü·Z]º;¶GníV¦m¨Ùm¼ú€ I2402i‘ˆÂdÐdiÓL&§ŠŸ“žŒš`&ŒDy š1Sô4Êdž ˜ŒFdÀL&„ÄÄÉ‚deB% 4M i4ÀdÐÓ ¦Óž£&FF˜ Ÿ“4ž€™=Ó## 4À#ÔÔÆ ¦&˜#$ÃCI†'¢d4ɪ JdL˜ji¦@šm `È™¤ÀLš`šj6†©í5OÊŸ€0MSÍFhdÁ2i6"j{F˜©ø©âmi©Ú CžI´ô„ÈõA¤‰Qè4i“ ÔÓM&MÌë¼¾ó‘R‚¦ˆŸ ‡v´­ÍhñÓë7/”ŽG˜2aËuÆ=Bå¡kÔâÖÉŠêV™æª‚±T^-Ÿí+séôc¼üöâåðØÙggV“ßZ{ј¬Dö°lÜ?‘»ˆ»ì6ýö˜¦·”ÿ£ÖOñ%åºá}Vð1¸¡vƒ¹Æ‹7”§ÝŸÂ“ÛH×á«TXzì#±¢«›)¨|oÃÃk„φ¸ˆÁ" ‡*Å`©‘9œ4ZK+k«V°?~ˆªƒ’ ‚¨(ôðA@Àì‹„  " P„ ¨>hŽ0×°æ‡iü&˜ü–yÆ´Åmâ¨ÀðÈ œ$T?¬Ì–Ñ@ÉëêàÜ<|þâáa€f‹èQV.—· ´©eqi^µ’QDB12#¿Tx  $Ê£¹ÊÆ@îËÇßÜ AñZ)•1L2¼TW+ƒ@q xTˆ*÷qUÓ?ó5xÝl¦‚Žr &çõˆpå¾±ãžÞü%Ã>]Ž0Ð_ųëÌ{Ö‹ÓÈýTñü úäO¹iz£‹qu0^†n8—Íz6Ŧ÷¶†öÕd 3él¨þp"WÕ8—&ÌœWføí¤ÝŸaq›^Ü-g7)'1î×s³žëáìXbª±-æä¯÷Ïg[Ù˜Õö''ž8à,¨s”8M1ö®r¢¨ÁUâ'*C°?»DUåЀDF˜ÑWÄ Û8‚™—Fm`ø%ª ×fø–°xGÈÝÌB¹)i¹ÙE[ýŸRÞäPª+§!æ…ÚT2€@k®…´~r^="˜Y Š¥Ú¨¯†D¾>mµ¢…O•Fç§CýyÒ† RÒÚ”4pò‹ô_(}¢lg™¤‹¿ Áµ‡vù²ƒ¤… €ÁJA{ þЮNïåy‹.d2)ºŸ½íˆÿ·GƒI %)%)_Ô­e\,Õ Ã'c1ªÆAÏaÕ!þQŒ%C9ÿÁ.ÓцnÑQZùÔŸ´µœ=Yi¢-.q¾VCÁë0ò}ʯ6Ï>ök=ÒÇÁžP"ÛÊ~Â56u‰¢³S(ñ]³˜‹éöýòâ,Žýt’ 4³dIl©,hkÒàuÎâ“%õ¶ÐŽèÒuúZ ©1-þ¢ÍWIkˆµ³ølðÓqf‹>ç âUvUÝcz6®à/1”ö?¾ãÝÛtêWÂ=$7¨P P<˜k'7}yôô‹Äÿ˦;uûÏëÏÏ´ÿ‚ˆƒ§}ßG~î@TÜÙLÁgPl´„…ts³]2þIÕàèEŒÂ³äwŒžÀ2{ç,)J.Bx€B*T­k™rÓ JçLß/4ý^[Û/G d¤Ç<‚:ý7vHÉÄàå?å[×÷x½Å»þ‘+Óó€øãcÝgpá °‘ú~ÃÕs¼1YBv²ÂÛ÷Ôæ8ÒQvücþ)8óÊpÜ€áý3Ç'Ç$~`01 DR«Ê{]Ú ?qÔtÇ j V»¤H9“(iŒƒÑ›(ð^JucÃtNÖÌJGó<ÀsZ ðj‡HñWߎÜÀâ¾MS–•öͬ¾`~,Ú šõúïO—`¥o«Íw€~]Üäàˆ„6V€¤9 ·?"]ÿ©›‰ˆÐÏéÅäj©jtT‚ÎÄœÐù""žã‘§ýØÕ[ îÌøZx*i}æ Þƒ'æ °oìU¡ŒÃâ§Sv<âû뉇çÿ† Õ|B Fë—¹»8Ñ@Éý¿N÷+7¸»N bÜ0 °ð~íDj;Ùô<ݵfÛ_· æ*V ÊM”=Ùú2PCË[ê(k‚+Ñ@¶Â’Ë3LèžV] %I…F¼ ?ÅNHê/^îïl à¨q W>«ç)KtŠ%ŽÁÑÛÒ‘.Ã3º,„ PüÑlÖÉ„¢Ãñ†oòcH÷+œ§®ÀÂK¾—^áó¼·£GòDZÝÔ[£Ñ03Ún·úõûY;½ÒkSÅJ*™·DusôBÀWþPS1‡ sIVöê>ž{°Û|û›Uól+ƒÂÞ¬wÁ8Qì­öìì#@š9s4$$¤„>CDÀêêQñk—!B†ÐËöÈ<ã)¡Vw ñޱfÃ[¡…uz•$B)ÆÃ÷ÿU ú1õðå2³¾Œíå}>ôF@$Y8˜ wÐJdAk¤ $Q+ÃMï†K÷9ÒÙå6©æ`•…DoGcÖzw•òÍ—Ì´U²³ùûí ¥ ûk” lÑ3.›­Õ*ØçxÝy=E½œ’6[ŒújžúDØBq› ÌER ¨ž!†|*B\ *Â!Ǭ‡5ûÅ™$Þ`‡3ý­É(]3mí¿]J])Rám´4.<öe¦ ¢¡—-½|s/f`P‰†ÁÞöý>ܰAwDÈJÅ%…žt¢£ÈRL¿¢Ø47 %Ý7º.Xm°!"U¡‘Ñæwhuð{¸ ·VJ¤ðKŽÀ÷9r0f™†JT|¹]_ìK;kWÎÖÞ\ôß¼K@Ñd¸æÆyf/ðL,ÊJ$ŒŒ7‡±ov•Ò‚g_ë6ºââ—aÖ±/ý Ëú·ÏŽÛ{tÔ‰Rôô)W_ÈÙ6´®#•/8w5ƒ£v.û¸]ä˜_ÛiQ4 þ¸Ä¿°ô){:ÞsáÓö y‚´Þ-ˆ4 „§ ï¤ þƒ>†½yõñÈôÓ‰5¼Ý![‡ºaš»Y™–ÈýûÙè^Sè¼l;A7ƒÀ|{ö,™]¾%C]²î°œŠ#¤XøzhÂåä¡jm#¸¥Ãœè§M]Ydžd D ÙD W*¬‰Ø ™#µ ȹq‡¡<ƒ’œbÅ”±ÅÁ€à='ÏdUÆ ŒK‘¾F&"ÓGnK(’FQ¢ $ &çTÖE<¼z `™‡gOÌ×ÇÉ d±—x¡7Y~TT¥å¬Ò"MÂhHô¯%p-‰šdVÈ…´a ý¸yͪ³ äò[Ìȯãñò7z™Lâ|]ã-®@ ‹ˆŽlbÙû¶©¡6¼àP© è§2™õü¡âÂq,%§{.Ä×í6Xv…÷`TLšXatÕòÏVå98ïFÆÝe@£šÛ¦ ÂXæ”ÈÎQV˜–ÌÉ5Uns8 e›jÉà¼DÝF@¨Rž¿™­h¦‚IÂé½Ô²,ˆs~‡Ó¶Éj|ÐÈŒº7™ós /)Ô¸p¢Ú ¤À:n›—Ä˧ ó1à_ÖÐs/CE4$Q-@´10=”è3|!2R–‹“|ÎÐô¶êŒâaœÁ)ÜôÇø”üVχ/¿>=ïO'‘¾’Öá¿¿øÀñ'ÁÍóptÐ@)ðmÒy[d¨,àVV½E¨(ûßüCÒ¸ ëÀiœî @7xï:&‚F‡ˆôöõÏ—Žáª÷´þ[ÂK¥•ößsê¿ÆqΔÎÛzž>GÏÂp `+ŽžñNq ðÒîzû;ÎYòl¥ke,­l²”²ÊÒË,ÀZ5ÑÌ:¹!:¦˜<ªâkq|ˈýò1À#·‹‚ÆLM›WSÖsÊãÛÛ5W¡J†9;H(®îNn$€ÞÚ\bz¾ÂäùT9ëxñµ{Kd¬-éG™ b<ÝË.†ÅÕã4àSBmOñçà|'ß³- /€ðl!ÅDaã¶È(Ï|mÜéxyæ¦Z^ç¼®’Þ8 I±Á=ÙÌ`w=^ûw]¥ìÙáÈI­f˜1¸®:ÝœÞkªËßñýcØCuÔmoYØ/†Gê —f9«–†xÁž_’Gz}xc{§«€ÄÛœk}µä°˜+Ÿã‚TÑ—‡Pæâ¶‚VÏkÐÝò‚ŸÅÀ,€Mêñq¦›=„¸Èo´}ÜJßš5²Jã¢íÌЇc6Qsv®ã”Þäñ‘¤b¬prÿ¬D\±¾OvÂÓ·±*ˆ²î7"aiáŠÆg é/5·’DÛ~¶úxS”B{jÅ%,` KùS÷o{½ˆEiB¶pÿ.dêF JXÍ€½P¤Ô) 0Ñ‘ÒTÀ”Auä]Àìôü¤Ä#"‚’xôr/‰C»™ Ñ«¡ÁrÞO‡N³Ãг|WÕ~Mîé-žex¡Õ÷ØCx§ú|Ú wxÐGûÔ«Pæï¾–‘^_.¶ñË?SæUm»´”ü&NØK›ñi8îQÌ÷¦]\À`ÌWÝS±xÀ–èý°˜³Eª"ˆT®ç{Óß¾ñu¤9T¼NK»MÙú·½O©Њ¦ƒË ¾/ðÅ¢ùœÅưÁ=¸lˆcÃaÐgy:ºið{ôèCË‹¶DÚˆï;þtÙõÕ)9.Š]h¿åÄãÿ¿›ß \\l×Ç]øïdˆÂ”Kþ“ÄÊb '/G$)q½ ‰ë=$À¼Ö|-ÛYðìØßÄ–ùßýË(pWá—ò"Ðo[‹§¸p˜¤Ag‰ý–؇\Ýœ,¿:Á°m9:º¹×>ïï˜_kÃ×?N>Kr3©'þ×Ù V · Hi£*ÐŽ–Eƒ©ÊÝÖ‡§¬« ”³–¤O¾8˜Uão'iR³éÀêåÏÆÀ“ Èd#îGúZžÑÒ—›B ³Ê›õ¯[ hÁóMl¯Ó<µUíM@7ãƒü~NGmD²aþ±Fß®ÛzYÌT¾Ü‘ ¢3lJÂÑ–5SámÄdm¿Ó³0L#í+wÝ‹µ= Ë·˜®R2NÄv’d}ß\ñr˜à”Æ[Á³¾Ce´ÊâØËûbAlAbÁÕ?W³U`ƒa’e 'DÄç\88dÑÔd¤`Yp¬øˆ;­V çEvm£ÃO&`ëÒ0sb'/ÛWèì´&c’ß*ñ†aPƆþdw^KœñìÑô7_É·¯Q1‘k#/³^~Ž×ƒMÈè”b[tÒ˜<(”î&ÔÒƒ& `@ž² 1ôH 2Åü$B×È–vAû6tP¤ÒcKµìì¹ÀíIÄû_Ör‰ó>ëödçvhh…ºÙ'÷7s`¨¨„0€µ–þÒë¡Ê”KU!âµÕŸ‡ÊãÈ˧""S†mÛ«êàCN"N"CP- ˆ^¬‘ö°^äßÛ[¦]ð¹ú …ú`¤ÛeV\3)´œÛy·9NpôN~²ÍŒGujÞWÜå§F½=û©¿sŸ/GP°·8œn5ÅA Üño+©'²æÒùüÉX?A¹çÀw°)¤S¡Þ!(Œêκc` ”J]÷¢’P u:\€‚%}¬Ë Ï¢N/¡óôŸu<®ÔÓê³6ë¤ê-S…—ŽBeì [$Ðä8‹pŽ#Fƒ8•"RõEÜ º% ÆÐÌr#rY+p¿¢ñÇõaóžTÖ„füѵ:c9BõÞ FÓ¸Tø™ÿÄ 4P^ÞTó™Hÿë0q _Ò(IZŽ^W’¥¡”("êøN¥ç~öùøðˆŒ—ÍqÆËõ1ªþ¾ý£ó©Œg{ŵ?aÂw"êÌ[ž@žuMMõÚäÕ²ñ8:eJÖù`ŸcVV*ö«Òý=ÚÎsv¯³w"y‰H$ =n^©ßùãÕQÔý›}/‡ä\"«ý*~åàJ½K‘u(ì«—ÝØ½6œHÂv§Èì4Ê2Ñeà³–Öã“I¿¿–®«“®‹Í›Pïïni¢S·|Ö„&ÙûëH÷®ú¡·#”>< #áõ³½ô›¢ð˜3ïÀ>Èú=ãöû$ÕªšIp(+xÑî_Iˆ¹wšÄžæ4Â0åéh €x@8Œ+‹¾ég„jmo­|ø?){†+оÏyq× J•Îå;_ó‹½®âÞï-¦Wy¡'‘á¡Péðµ¡x—e,d¢ú&Œg5$ß"&µ³r~x™ý*4€Ð–H{jå@„÷&ŠQá Õ’'dw%4o€ÀE×1éÁ^#ZÕ;ošm^ÕÌxºn“$Ïýÿ:º™GòÐ5ð:eL;þ·ÝîÖûä-WR¼nX¿}s–²®Uy÷ïÜ¥ú[*þ—);Ùi!NžÀ·Í(ŠÐ ÉzX­I@…Ê%sñ¥÷¥ûGðWß_)ÞBíOèÉñ[ ™0ÊÂÍwÊ+c~†Ìv‚í-äÔmïq§N‡„B+‰ šÀ/7A…¡»cüÌœò(}“\ž 9ÝhÌ»*dØ}øð‡móüvàRmç1©~(Éw.Ù—c¼ò¶RŸ'†m°I¹®‡t •ªýVÿïZ›q¼®Ý‰Ì gí·£ÑÏVg#žnë'@¶rà6EÌšD…ÑïRX—vM_€¤X$•Ç€]Wøh°ú]Zb´Ä½NNí×›ÐYc\BÕ} Ž êÝ”·^Ž· Û]õîtàmx@y<Í›Võ{Úç,}•‹;Û™ñÔÅCfÊX)q¡Š¿qhó"y¨¡½ßº}¤“ öt¶â#²šn!vâžñPÈ&ÒâØu¾ þûŒ©n_Ù!½õΧ9þñ›uÄÑc><™†êÛ Ã)ó9]Sû(ÿåË©¨\Ç94³-&¯“»UBqS¦’<¾2BSª¼GÍC*‰^+½5jW?Ø}#0q9÷²ÝêQxwÞKÛ Xtù /ýu=ÅîIO]£kûõž—ËÄdØrõ˜eôðaŸŒŒÊSÀ’ݦ³Ï ¿¹ˆ®@B#ݼìþ¾ãš½MógÑ¢É Xfoh…ëó2Åœ§——1ÊÍ7‰Õ1׎¥]±nbc•Ow kZ05Ûû+”â•È*á4Q×·mñœâIsA±€£¤×s;ºj. â oÝïîä@ÛckÌñ5uø4]Ldk–üÙ?y¡@S’N{FuÇèM·•;¦mD¦çIE¬³©ªþÚ¹cHåP!pbÐàמSaVаMÖ'‰ÛýÕF X¹ì  ë¹øÇ’Grîz~ÏøcÌ‘›Ê\„IÕß*òód«ý.÷Ø]á‰jn銖Š·JèÕÅA¾‚Þ8íQU,õ«FҚч;0 X¾ær¤ÓÑúG‚£–¥CÁ°»¬Oàµjê}'’ÛEx#(Y×ýà y%F†¾³[«\oYÀƒ/nÔ¬qƒï®ì[š’ò©é+ÞÓþV¿¸™£’)îN†™fÀ„ú¶<ùùè{+8‰$f@OX6É'I{¿L‹‰-\NílÓ‹E©ã_ÌÜr”„’ÈXÔ›w>g'P(€·{5n†"ÉÛ±i÷Z%â¬ÔbQÀnûë#üø³‡gn9Õ)ÛËJ‚ ]KH uxC½P17”gÁ†}ÄhÜ,"-ä¥ÄCÅK󸔓->y„H^`A¹Ê­t91ã Cl»[Ùîm;‘’ÉÛ¹$çä…̆-÷aÕNö„@%ºó`|Ü–gÜH¨¾ôò›lÿ*f!;òQº^ÙA’ëÚ,—6w´†sQ@9xúÿJˆ¼WuˆûÓäÅ\ §Q?LÎé:KÎMMñÝÚ(ª‚ú_vŠ"¯~êÐ*G\œh.!·ì„,R G|ÁÁD­+ùþ-£ i¸Â­Ïážoõ±Åi³«E[2ÃÕ¶M.§ß¡ôs¦v–Ý¡Áºí¨w>e/¡XW€h vç uÀŸÃ VŠÛ®Â;Ëѳ\î–Ð3VEóãx±~«îëC:qÀÿ°“0ÕÓÝ;A¹ë('£Ž½Ú™fɇêѳ‰ººÿgù÷|ß¶ÛÍÙå()&³âÅK3?¶¬p%*Ó0~'BO/m×õºK†z¾ß,Ÿ"rò@ä¾ïÎsµÕ;ëõ´ ´¢«®ð´²eqk; ,Î¥7¨òuiÚ} ÅPñQ¹ñAý~…R÷7eÍû? ŸR^^8þ%-ªD­&¿Èvosžä{ͧ¨Çô¼¾ƒYÉp^ÿ$eo‹ºµëh 5™;UúwàlÄÙâ¨+áÀC®)uᑲÖõeã`8 ;Ô¢’AÆ·ñ©t*šþ *†örÍmj ºs‰†ýúz=%¸Ç_Ã+,™w+u+é¨YŒ‡¡! ¶ŒÀðIDþU¿DZc#³OšŸ¶‹"Lå%½Nº>ÉÀÃíýhEKá;'±¶´Ûáj˜^âJ=rxu”V°Ð?=¬Ÿ“ß[lì®×ù`9¼Ëhöqe*·6gÖz©ø6|¸‡Âø­ýÍz¯ô} }ÚX¿ÚlŸiæX@¬ÔU]õÕŸùÑè¼7žòo´ÿÊ5’§ðÐøRÐÍK“%$A@c }* HÝdÓ4ó—è[·ëŸµzæãkgu^ÀÜҗ½ì?~kÉu6Õ_®ã)##ýºl°=âr×Ïe]Ãv‡þ²‡PLg•[ô¡F[òÁ_É„IàrÁ\ Õí¸³P€‘Ér0Ô“„m8yÏŽ@Íx€ýéë,¶ÚF ·û1¼Æ²R0µNîŠ sÀiÃêu5'ä Ýk}ž¢^º±¾ðËÞOjÕªêé›ÿo“äB¸uhX´¥ÿòýu–¬šFè ×ZénͤËA;ቅÙ׉£aàhÈi¥* ³ãœ>t\NU³XaòˆøP¯D°®z—ŽYW]ÕØÈÀv-|‡›žz½…%Ñ©~O•MbpQÉ!E±û:Šöiê×Ê*“Œ~Î[5m#EœeÕïÅÚßõã>ÈL™ü·üko ³›n¾m^ú‚ äë”%ˆ„“AÐ@Lcè`“’A­´ª{÷.‘ Õñ¢»U–zÑ–þ+WCߨÿœ›n¤Ž]|WUKš`Ç€")”´•Ÿ¯ÿCŽ’Ó×:ŒàèoUT¨KĹ¼á ©¸¨ú+ì¶AŸ¯dö gÙf½¬îºáÜ1ïjÝ,¨Œ§ÕæÔ¥ÌE¥dÎU{[àã÷}ÉÞ¿y*§†°³ ¿*ˆ-¥Þô·¼Cž¯Š\í.!PÙzö®ó;÷¦‘n¥N™ñÓ¸VÊø¯ 'ÿáÄ9ô—“M¼õíO—_”ÙZof”$.U¨ãUkÐê#€Ç»4Ãö h× Ðô ´”fyœNïÑ'd胫P5Œ¹ý‰d.gqô2û;=‹òC‰õçȺŒ A‚gùŽªä쥛GœrÊãZcÐTJ5,=Ò™ª\Šê³w™÷ݪª;ÙF”S² áÛþ½MìÛ¥oŠ‹¸Çžª›ëVE?p>²Kñ”øGǬvûŒÖÊ÷ö«©Ý`’ŠãnI¾ª€VÛ½FI=ˆ}â889EóSSN\eªœžŸEwTówRîZná>òiïžÏ(nPAÂcÔ« oÇÚ`ÒæfëP)´tú2Æsž:º›mçry¶»¥±»-ù‘ðÌâÛý¡ã<*„x¦bÜK¸¯»`ñTÄ»Á:,Å©Ðè¼Ö21µ)ã"».:¡oÁ €ô_BLjÐòV7®Yô`Få¢ð½Þ¨ÈçfÊ^*'‚rpv¯6R§í¨ø0î#¢¾]Úˇçl xŠ€ÍHµNj¬î nF:–Zk7ÚQ2œ A@ôÀA@”“üËÖ ÿÆaLcD°FÃ}.ÙC®?iõí*0—í%섯㴧VÛ„x°ü@þŠ„{ D"î·Dº¶HÊï«='Ü|^&Æ„BòA†Ï@rõãAŸfîÃÖ‘¬Å÷WÄJÎóR¯¡GMàIF…4äÔ±v–ÀnbkûáŽq ’d`ƒ†-CW*è§ D•·#MÍ>f­ä¿‘p=ÇÉô ²3H²Xj zÛ>sÍyª7¸.8O³t÷X'‰X` Æäâ<— –:^¤Þ¬Ã_Í-Ř àku"…²6üìS”â”×zoURõ°zrøD†ñàÿ§–,S0õ-ÿW1—áJÞìœ2ó?¼Ôeú˜~§ )­{ ¥`âyñâ˜ó ù-µVQ½ïzPÐg/˜±5È$áh(3¶ö›àØò×LàÀ%‚ˆ_!Düÿ=ÙÓ0ïå´ ‹Û/¶/Øói\ëÕÃv8y=åð–4ž› WO4X’F©o&7÷g!óç—%RHD¢ ¤†¸?š¯·K3ï´ÞéñøÙFwGɸìÍ­-¿ `úèøqš|Ãmoökm]’…’ö^6<1‰àŠ:6Ê®{'Ô–fvöžðEÞOZå0.bh<‹å6sðÇ®/£µŒˆNBÒíÜOWjd:¤ •$e }_´Ô¸°[#ɾÅ&Õ‹ Ÿ¬ÂW‰xۛܥoù ¾‚ 82¢ÒÄVN[¥¥´x‚ilÓŸV‰5K3@°L)‡ëIØz0Šx8Qé]:;OÕÄêk^ʰנäMºÕÆW4¸‹ÇM™?.%^2˜ÓÏ8.y"‰sÅ€¤{Q†v’¶­®# ¾ÏUÝq ]¦N#lÙ:³Ì؃„gŠÇžå´¼Õ ýØ´ÕŠP•¦qãÖ?ç#Ù¡ÃŒYãÜYºÖWé½Ù`‹(0ùÔ±^¦Â²a`D•©«5*hƒÚ}@k¿<áSø`ä´Bwv~Êj8ÇÞ²çØËVËå«®áê»VÙg¼;)Œ6L£ö´œÉðU/2NL%¬>‰~xÏ›¼†•ë b” û0bû£åzçV7y K 7õø8ÿ¼Îá€-•ðÞá®Úê!&Eg¾ô;KÖþç ô`îPâø•ÛÒZ±×ÒùQ”÷mø±ù”'ôþW2Â9B¯Ðúʼ%Çpx™L†ÆF|µÜ8Ä©ÞÂá¤.-9mfÃWÓàÈî*Ã{2)ºÖ—õ*ÝQ~šl™ûÁ®ŒauoÍ …ÈK&XHÌÞkõâ+(ªÈ ˜h¡ôKÖë´ôÜ|èõ®ö2¥ƒã:ÇL¢-‹9rë5+iÕ® 1¦¸v`GpÐ9Lw­ÿÅž„JyxR¶¨ÓgŸn¢ðT&ryûYÊcaî÷ b¹þ$äü{_œtIý·¼~åu@jº:/èù8Bé²¹¨?¿Ò0ƒùz¹;½¢ýÎøIY3½Øò×5=ÛנU´øoÌ®È%™¤ïÑø4p¹8‚VªÅîÊ!lćôÅôOÑ:êx«ÆyÇXLKR„–W·<çÉ©SïWóŒn…£ƒçx[猛H”3T#‰é¬¼õ­¿5…œëÕ¼ùú"‹ŽÇ`™&{o\uÖ+Öô¢‰k,ÖÀ÷ü~•6Ï][˜âeðBåûò»ŽÛw9ö‰Î+)æé^WäÎrA×ÐT›=—W‘èÐ~ÓÿÓ´#úé~ÝMÜA~¨æÑÝïä–œ’¶`¶A³õ®Ï[VEA×fwát\ùtjwÏv¾¾wyé>NósF“k ñxµß—ñ±?J9É7ç¼û¼ßmõØç¾ŸíȯÏg•8‹?ÀÙ;·­hŽ$X:9ì{ü™¦ ê,œ#MQêz4J¤ :Gá7’F¡˜#žˆïvö iѵ¦6›jÿá‡BÐy£§äßdUµò~Eøî[²¡1ÇB̈ȧ'6o€ ·IuBü#Cù³Ù^…›…HýȯV±ÛÍDÝ-)~ 4 .¼ðžzÿÖ<&T#@…<Ô M7ü|‘Rï!%v…EèE6kñ§g 8\„è¯wo»d1¥âýòÞºi"ôl‘µ]ï–ðA-×—„nÕ«¾àÀ†Üg¼ƒ!U÷å]ÇoqÌÃh¡Êáú!Ë-wiÉ‘@¶æDƒ—:! ûðÜ9ÁúŽûrÏ7O«Y1Ýž¤«r,å|44oP¦ËÐ= ¥ŽHžÃ4<$ÖHõ¿Çì+lK¯ëTv%~œE½·ûËEל+—¿Úp”¯vÑ}âɰ åír}°ˆÚ›˜.²?‘l•…ôS:åñ”‡UÍ1Äîs‘VìVx•KUÚÔ'âü®>5V.oÉ?“L²½'úÈ®Š“Î`dµY85xT–ª»„O«¬Öë†%{v•á—Nûš%(…HмùnÇ¢ø.Ãa.¸Ÿ<à¬ZmV\>ž+ù[¬ ~ƒF–dÂÊþ} Î ,Ú‘ó§ãžÐÓ»ã»A‚ËG¯Ãg×Úè\Öê(|YˆÒ×Ò£ác…£)Kï«Ôz"GÚ®q÷ƒ*zRÞÙã v}K¹¼ç`¾¾Ekq¨žXÕøÉȨ¬Ôßml·f;xμ6šÂ¨—ÿåzHØVÍô…—zGeÔñç?*K\E­4Ð/ž2œ…k)gLÚš¯þ~sôçèZ˜q·%ˆæsÑK=:˜çT$@»y[inµO7´ãŸøéÄgêƒÈtöž3>ÒI‰ó.Ö}·›#Ây«šeÏš†~»öŒ<€ÕJììù”±$}Š&¡x?F'zŸ´BFOL¸v¶ž¨Wý!ó‹,ìÏ4ößÃù¼¤Æ\®9G]îµbZõKFÞé¤#êL®Yl-‡_4÷m7|Âu ™n!˜HØ<­€WåHÁÊ!œ{ÔÈ Êëþ‹ºFTg/ˆš@1PX¼ÙI`øÚ x:ib ³É¶¬äŸœêû®¡Ýc÷vWÌçV#!‰õfqäq;ÍNÑ71%0Ñc!>2²°å¸™KiÔΣ|Æîp\Ì1ñ‰Pð&! ߀ÃÙ‚Õ3¬Ààã—_ÖKºTdï^ayáý€Wk¹×‚³o–<î&Šç]¬§ ÔÛ,ý§Îåñ­p ŒC ©€1ýï~Jk4²Ôš"Jªz2[‹"_öïsÃóusôr¾ê¸—9ЪoæÓÛ¸ÝÑ)¶EãJ5óBóeÙÇFHwÜ, ŽÍgŸl ‚~1Rxv›Kôø¥Ù†[5VyAÛJ¯—cJÎ9†ôíÎb¼aÎ >…G¯q>¹‘ä:zN’®#'Wqë®slŠqïEÖV@º`.:Ìülo$úÏ–fu¥.¯=|,Ë)?TvHáö~¹øWÖ•üh÷› ®V.Ö­Í(}êªø 8øMñÆÛjk&»VÝÔ‡êÇà¢ÇÊUÞÒÜXWªGdÔàlÕæ4å»l_×)ƒpµŸL«µ+=ºQº°X\!Â/¤b ;‰oa4UÞ¹cýùíDZ:i Ä«E©êà˪ öãõjx¬‹1Ž¥íÌêŠîÜêüÏ¤Ì e$™ÜóþÇãñœÊ‹ÞJÕ"'\:ƒc˜‡ÀIů:‹ºOÉêUdÏåÑ!)´Ú~†ßð?)3lê×:\¦¸ ¿ØÝØ@F˜u;R¯)¢¸öÊ®Úê|(è þæuϧçGÁòÝÛ²8ø×C²{›X'ñÛàŸæÛšˆ8íQ'U­»ééX"dçq¾l#³)-œ Á"0PßÂÞ û÷NÓA=Ój5µ‰M ú?³Õën:Y!òB¡£1¿æ2éö]²¹áÇ ŸäôÌÑe–¥PÑj¡s¸zTŒ¸óª¯.‚ªÃœü¢Ü8d¿÷Z9NMQ¹ CNÓÊl• “èrŠ"-s%GàR¾ètO“ô…d V³Â)Щ ‚Š+þ«B.jÿ´@/° ¹[¨=BŇåM‰m#Á«ñEõ,Õ~XzWq:ËØ•íiUkÇÑÑÛŒÈû9¶¬‡î,†šMéÉÎqƆù6d¹¿‚¤3ú¯†]w?ºÌÞm? Ú¨E»êý%]ˆ¢lC~qí–ÿi{©8Ývmü>”Ïe¥ƒ7_€ˆðïôàMÐãuù|—¦8_y3Œ{´_ñê¼®èÔÓÜkSºÖÖœî4Y]Þ°ƒuyF26Ô«MtÉÆ?¶Z?¿?à¥ðP7ñM™° ›!iŒûûhâÛt–è#샺éâÖò1ÿ%-Ï:.µ•Ï ºæ±¿Û¯êf8Œa•À†à@8ª‚ £üÃ… Gò”øÞ{¼ ×\a¦w‚“ö“+Ð÷¼vƒrøò9ûC-¼½dÉ@"Y·}Œù ±êúsý!UXùRšcùÎ÷Üüüœ ªÃOGHê2ÅD‚ê‚Õ/õ~<0¦Åªs¶ñE÷Ó©0@ì±³øLfHì·MÅ{j‡¡vÜê§àæÁ,ÛÊ!C…X$5̼ßÒg1‰f¥]L1zëÝV}ÛúW5Ñ_KP¨ù㎣úþ Ôgµü»i“ŽXÊð»Üàe‡ ÔÇ­1—ß[¨¬UFC]¨¶iØíí¸7Z‡,]Z_¾®ÅL¦ëÕ‰ŒP–^†”ägëùqÕSm°#I@ ‰HÀ l! $Ì‹‰]|N·ûG…ƒ–:¶â6‘ð BpiaÒæ™ÓT¬Ž%Ô{Y¶­×›±õЧ”Ãñ¥õ”Ö,‡XɬÒOIì0L©¦ÛYï¢:úØNñ ‰iïP˜®ØˆòvFÛ(7\}Ì-è=y~Ùµ)`¯hÞJkîýíØ.zKpØ}ÿ¥”‡?€Ò'›k±{ø˜Ø÷v~ƒÆÈÜØU#MsÇP7?—{[ŒæzÛmž¥H7V(Þ¿K¬wÖ¯ÆÌ÷àðTr( è,»fL_«3L¨ý©Æoiá8Ž/˜„Ún¬Ûdy|.ͰçZ 'Ó×¼õñß’d‹Ád;ƺaü}»8øH7í[$Ïfjd:¨¶ŒëCέÁÜ {Ï2mg¯cêÑâ—?~QÖ§ºíœ´M½‹ÕêYUè1&M);sØ£žÔlœ?ÎprJâÿmÓ\õV³H¨hgç°>Ų…Ãÿ‹yÍ"!$2¦cfÑf›Yéµ×Sêm¸P€ô™‡DaÑõt3½¤»5TºÃãAõÎËÓÕµI…cÍ–jÚf!gƧ„€‰˜×ñ'(ò1±0Èã_Evº ´Hþ õÞé„Û#U‘ÿG­ï +‡1 §Ï€¿¥xÑ×dHÞOçòéà3k)ZKõ`ÌöBcèäáËù·í| –§ÊåÁù÷9=¿j“՚Š’.þÿ_|õ3¥™ñ¦û' ÷Ên ÛKZøÓc hN…mSMè·Z&SºO€+Œ !éÜï®bwsL®–QeP{xÐ\²s™Ü.?£©Uå‹Uò¨‡wáIô)¯°xt¹_—èÆL/v:™Ÿj€$î¾Þ[Š`ì1žZÕ{ûØýx×7f ÉéëîgøÇ(vÒ}4Pz |žW æL5h“×83²þé#H»FOÿ)šˆøÏGÇ#õ°Óuz“|‰ /% m¦ÉÂPW1Ø:4‘é‰è(UtæKºÛÿ˜IéÕ«‰<L_NûvD@†1IýECšù¯PRz/»‰±p?¢Xl”%?GØ-[˜”}ÿ³…‡ÿAkàv‹#p™Ðž¦s#1)LG‘9.÷RÐ[½ûe%¢êw?¨µNÿSÀºsÂÀi¯)òXÿâHk7yFEã@¬ZÒë BßzKܹ+`²Á —@H“Eã´ om›:Ö Þ^~«"UÜå†J%¸Hí³°=oîk¸üæPV =ž“Ä17w|¬û’OÈÌ¢ãê5•îEg¯þ4<)õ¤”]¦„kgAPwúË!#F»u¡­“ß=|Üð¬.âÙðÞÛa¿LÇEdU»z˜¦µwÒê7Bò뾓>0í5r}ŽÈu2}kòq Œ:|¾»Zï–À¼L€sHÀf© SkFâÓjýêÅ|Bá…1Q„û§£IC²1ºGhÄÀcaM-ͪº; ’墚 Ôµy¾¨ÌYGr=oߌ›‰ÒO¹ªÄ¡6zõ»…΀l€¹RÕŲ¤SO°{ÐN„âÉ î ‘Cö^ÇÁÞûŒö7v¡yxªü鿱¥Ì…÷Ì–®L" a*)U£ÌˆÚáÌÌhØ6¸¶ÓGf\à …ÜÔßPêtöðÁßb”N΋w­m)qfX×[ã‚pæŸ/‘›'™5Oj)üÝŽÌ{ó6«?§Ì &y@‘@@ÛR.ÒIveznðZ8¸`Þ¯“ÂU¡¨ÍßÁðãZ)¤ oý}Ö©X¯sÃý¬ÊBŽÚv$s<¡ÁÏÈ®ow"½:æ©0¼ Qßi5¸¡«Û„y™löÚR^A”î1!±!ä'ŽNE¼âÿsÃëͦMý«G…na¢Ùùïc¾?Œ¶³„žÑx?IhšÀrH™N\sã úÂÿy–‡^ô8H@_ª ÓÿPýr|Då±uÌyt #ÌWf¼?´í'щ=B4i^™Ô½UÍl3:#!­G$%ô»Wl3°ñÑ·Ü#Ó)£>W†Ï3þXò=7“WXmÃÏm6©žs“ÚRPõ?hÕH¨qv­xk–ôøÑ±v>N“û]%²âRÒÛД8QIÇý!`}L×T˜HDëýÜÌ­ËâëK¿«…³¥l÷n­¥ó5â«2aáM2Ñ×GÔQhªy)wì7)-g~»Nÿ þ›Õ¹)'¼Ž†‰CÍGìà—ãœöõ¶kþÌ:šë2UM´ÒyuK“œZ\h6lïçÄì2âýK§‹t:wï¢ßÄ·ívüÇz ½–WRíøg¾,,¿þ”c¹×QçñÙ÷lZ¾ïHLs¬Øi/T¼>£½¾~îyIaÅz2â$å̹–§Ubäò"]߇ó¼ÓÝ”Ò$È'‚ÑiÒH0TH5j›|ŠÙ8nhSF°É1ðÜêÑF„Õ#2ÒªXbFÀcç\°ÙBçl×ç С[ó\O¼¿ã©|{MÏëa'ëŽÞ†Höµèô„¿É„ª0·I/E½ ý=ö(ýÁYÀ¤qîâ,3ЮÊñ§’·<µcÅÄbCz>Ÿ6B!þ-Y$º«($}%pùPëMV™ø•/p"˜3Œ ¼µs¿¾3ÜgŸÊ^¾?댕/ï>|NYûsIaú"4¿ýÓóàne»™ü¯¨7è˜ :§v^J1ÀÂ5˜%d¨ô˜Ü9›.7’þ*×CúKKVj×'r½¼•H¬)è˜#Ç¿HCì¼%ƒ’ë•/ïÖ:ÚÕ°QÀør“LRšmãí4ýà…Õ „ôÈËÝîÆ³umI4¨Ùƒ"…Ðt¶@WŽÕ1[þ½!(&Å'Û Á(òÈI^½@ñ3µ,{‚˜\q Ä!}í¹f¦"3`:0“0(Ä(üQ[ŠD5]ÁºíØÍJÍb(ØþÙ¡S¡öÞBJ7òó_QßÉÜ_C¨=&t™v¯{fd-ÐÖuŒ˜cPÀ_Cç±ÝŸ#‡ýÈs—»¾¿â_ÌAïÛÄIš¥ÊtÀ¾Aã•R Íõî¬ôL9ÄUù˜žŸÔÊÞ_w{¬ê½š}O‹†ûàsEsðó_èº9ß9{Ÿ$ó˜eœðì÷.ZÈÖ¶O5ä.ßó=ÜWÀ/Çüy‘³Üd6óóy;·ÐdBŒ€>j?ˆËIÈl—øg›\ êoU'¸˜9‡^]aò‰i*óP“;@I¡V×*›~j¼NªÎ¤É'<”~Zƒ¦ñ_·n^*ç¹*Tf·Ë› ¡X3L¹eØUmË{§›+9EÊŒ·ÎKÀÊÆŠj­ÁNãy÷ú©<#õl4.è+.tÆ«Çæ%rè¹v¿&æô ¯o‹ Åy5ó‡óYªÆ¬Ö ×oWvßx¬/UÐo¤«zNncñÁP|QõNË5®zs»Þ‰c+p |–ƒ8éö˜gªPõì§£#ÁÖÂöðzΆÂÛ¯tø—˜×Az옓ù®¿tǰu”ŽROÔTGû0:3/Û´êã?0–Å„7eÍÓß;–»G·÷YxðåûØŠµµT d…XªmÉÇ´C`xÓ¤>íùšô?ˆ5¶çåØrvGVK;” N¯§Úí¥Ò²sá«<¸ªF‘¸¯28‘#D5޼#ß.-mX%ÞL;ÂéŽÏ†` Jp5àìÔ5ÑŸ´wœ®¦¿ñle+ëC'¯ noeóˆGt›ûC9ו[>$÷ÚSï¼æB%¯#9쾸ÄËé¬êÖQÌæìX«ÐOtœW˜4‚.ÆÉ+ß›ƒä¨pûÒ°pHIF ÌVöù÷nHüãÄ\-2æäXTP;?cÓ†_êF8[gCAabW\Q8^ ‡b5 % âÃjÚ´¯'™× B-+M´ðb1 n ºþ-Út)÷QßsëÆ÷ó¯ñ‘ïö‚½_U¼.…:} ‹BR`‹ãBùk¸àœ6hã§”¤ó7É\c’êâÁvnÒuëê>eÎâ&¢9Çd·h©Þ\Äè{a½ r$ÆDâ­‹´g ^YÛ–r©ãÉ®–íØO®T^»·Ð l?÷îì,zÏK?6ï¹)‚Áöò£td1 ëÌBûRÏl•µX(ƒ"ѯa¤yVæã:S<“£ÿΰƒ6eÊœÜë|®kn³åÙi3ÄÄÎw„ËŽú¡Ÿß(¼;÷¤ØÌ:‚@”¾VÙ– a`¼¿3ôøkšª;O"K¾Ëæ@¿`¢4ùO»owphLÆ® ­rˆžâÀ=¹ ºøbÁ½;è- C ÔÊŠñÈIŸÑ5 ½Ñ-UK«äÓ­Š[‰¸[ˆX CóÁ,ˆe¬=Có0KnÔn4#". ¡˜4­”«»„-@/èT¤ÙÜn&Ê!¢ ¤ ߤ‘©;X #"­ôjI€¡˜ˆ†5ÄAV€‚-‘FETø  È€ Pˆ…è)A¸QFÈ‚ V´¬@*‰Rˆ “¬`JŽì¶{î×Ù‹h¿zž,׳Õh²3©¿oèé_òùËæ Uùóz+TítÓÄ}{µS(³PBÿsùžèdyøÁË%s¯x÷w5Lî{JL´x߆ L²€$Ûî 9aÐôÓˆQ÷9" |:\ŒÆâ+¢ÄÅjlº…Mñ"–Ôí2]`j.ãõÎÕ=ÐMH#Yû£J8Ó|¹m"n(Dp$bOr ÖŒ3€€þ´C| B¤{*,<Êi9ê:}rê;Ç~èæ ÀwåÞÞqVwŒO Èi½ª}—*¼—+êä>îl—ka¡C0®÷!㈀ ùŠ É2šË›4^€­KÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÎùwÞûà;î.Ǿ¾}ïºíñ¶×vìWÏukžÝ»¯Xºï·µ×·{oFs}õuõß lk·6ÞÞÖÎîÝ®îæGv^óœ»Ö÷wžÞï»…RhÐF&)éè?ÈM¥=¢`SÂa A´IâOMíTü†)´1¢žšž”Í SÑLôÄÍ&zš<Кjy)ù3U?L§©å0ƆIå<@ɦ 4)²y• ©¨aŠzÔa¤ÚDmTö†Li©æ‚f„ÓFJo&2di¦™)íO éM0Li”ÆL“&diˆe0jžši¦F™š24z¡T¡OÐОM ¦&M=ô ©àM ÔbSðšjx˜“Ð6å<™M ²jzOTñ‘Šiš xši©²MOÑOÀzžiªz0LSÔ̧‰š˜&LÉB©M”Í L Ÿ‰ê§æA=& !š›LLM¦Œ‰©ìšF™S~Jxi'‘OaOÍOCj›SÔÓSØ#)°˜ÑO ÈŒ$* €qÚw²å™=Ì‘ºT)[=ÙÉ£¡³îŠoåÕèÞ•‡÷niÂ=%À߃ùU¯Y¶Ü99DþøJo…+{ ¼"w¥‰Ð4Ö¡ qž~pƒì¸æ²ð쟔ååIáb†ZÞ1ΫµÇ¹²Š”örÖÈÙˆi;­•óÞ.“3(œ¸Y-öÇÚÒ?ÑÄHË,Ñ´â;§•“Ú9#&b­eàÝ?]‹0Qñ.>‹;õ¢ÜM,Æ5fnõQ2×øó7•oÜþ6éVðƒ×¨MüP©”‡%&˨yövú;{©wª‘¦ûÆ“—âFâÆ—Ð¹wDJžEµpˆÅ\0†À ÄÄ0:ßøq×w‚BI€B8„›ˆI À„‘ÜY† qˆ±‡ƒƒ  0jF”Fô’> /ˆ" ï›S˜~óž=ì $†p4„xà8"tà†dp|G ð!$ÀÃñÐpCƒ?àüt1#ã…©À!ˆÀà˜ÂDbÜaf4Š!!†€€wd©î±è’I 28’BH$bOŒHY²Ä!£ÒY’E+ SHy§Â: å¨àƒ"È ºÈ»ùþCòæ’ÚK;-ä½8Ì$ ‘Ÿ†a†%`<ž lS<<æùî|KјUùM7»œ=çÆ×A°ŒšºIíçô¤H‘Ì…\Ôt,¿[ÜäÕh…Ž”¯V „Ì€!àÀTñ©ÄÄd!˜@Ì€ä²UlI3 ™!˜`„ñÖP…¦î¡ 8zí´¸.š@å¢û yµÃEþËQ Ó)²ˆO ޽ØÎ¯oïy—¸w®Çõ·‰”sIåQwŠ9þUÛ¦šëG¼Ï>I'ÌBùz­®%¦²³'jíÛæ¿v‚ªsK©àJh9›¿‡C¬´žŒïp}©tÙÃu ‹?/èÜrüh:8ü}Ï^0»­ª‘òè5±–³wßJgÍìÔ×úú’«®áø¨Œeu­·™Í„ûûÅœA˜ÔeæV+oñ £{"õuøjùr‘ šroµô©\(z:…¿ù™‰Î»ìðX/õ<;¾ê;ÍrbC›wØ &éÌ•„ÊÜGm¼ƒÿA8ªŠÊùU‚õ£uNûc]gñõo>Å&w ”ºžÒw±w@e˜)ØE;L²L ã° 2È8mÂç0gi§Y']p‰dì.æÊÉv5lH<†]†JM–+$»Æ4èêÔ=mðÖ~2ØÔWŽq) ÿ¸v¼îmç3m{¾PXH%©ô߀áÅ.¯8ïõg‰¡OâmL: P”pV6›ºš¿µ_À]¹—©KÉÊó&8™ñš¬§<¶ oºA´!Æ×Å]›ÔƒÄ¥_Ö wÂë¦ÿœ LH[•2ŽšÜÄà9\À iNZª±änùÒ½.¤‘±# qŇ·_ „Ñ•¾_­Ôitþ&ÏxÇj«Q—ƒPñv\ë ÑWÎ{Vx%ݵÂÕ>>'YA­×â÷3!éÀ†…>e²òÃÜÊ«ÚdëhþÉyOFŸIA†7ypüœ8î4òäªà¯ëôhu®^yÝ#Åx¤¼?ÞYRH -Ñ:x¯?_Þõ&z¬N1PÅ5¶b³Nôœƒ…m²¤ñ ìö~«Ýze_…c;àiJ­¥…ÄÇŒ’3ê´ÿžKMe?‚Öi¬¶°÷šce:^œÞc7\;8.`pŽújD‡ÿ´œŽu¤Ð;ácP{v9öì˜eYžÚþãp…Ý£•¯3]u©Dï5ý,ò-¦Ã×k=èaEû9Ÿi;L×âBiOÚ*ޤÚ@ çŸf…&äz9Í;C ”‘Wõü\`Ô@NýÕF¸ç™4.Z˜ÀÓÑÛæ°VÜûƒ¢ìöÍ­~ù™9Nôâ–]굜ý¢ Ó/íÆÍ´Ý1ë’í"Ðu}â^w oÇò/÷ÇGÜ(TUÐ[YgÅ öÙâ£ÂÉ׋/iÔ¨g£ò÷¢®ê3Ë‹ø€Ì” 8åCÔ¥ÓÀ@ŠO-°ˆžž€ë&ÂxÍzˆœ9ûפŠáGXX´ö ¾}âš"7ʬ@su\öø_52f­%”€3ÂÛÌ™1TvÁœg8ÏkO±Â’JÑmG®WVƒ¸¬MóDÿPwð+-“p†}&„.×I"ào›¥Ý1Að²ýOÜ%cM»ðØû ']œKFñ{·Jº]BåûªÎª£§Õ;|c¿ÎöüxœŠsç÷àöM¬ ÷¼  õ0~mq‰–FÊ$nn­YÌîµ£nÚª’äLYˆ‹÷^xÙíx¯ùž9”ƒšlønðQõuHÉ<8ˆ.h̵ð}+á×jò@éÓŒ˜E·æ¶7jÆ™ºž_…ÿ.œÐ¢­)¯t€Ð-ȼ;£:7>o+9 "˜·ª¿¨Ì¯±Ú"›F;,‘¥5ƒ´wº7Ÿ¸Ï²}ƒJü@'€újyAo2m^ëu¾×HV×<Ú ÚÅ‹)ˆÇ»6 D q¸öŽä#êØ¹ñMCU:xRC€ ©ÛƽQ³:£:ÔYu@8N0©¬¦©5ç•èÚ.n¬ÙÍzá‡Kw—{îEsÐÐõ¾c°ÛÒG­´O'Š4¯YœüɹbÅ)ôõIx!!—•,11ƒƒ *§GZ¤£‰4oÚ ý¨ð˜ïj—¡™V”þêñ+ëVàCМw¬Í¿t5"Zφ*?e ßùE6Ô„ÓøvõŒ°Þ.o…íÞ=u&±%Çßm$ø<ƒevàÖ ¿5U2°Ä¦p$îât&rß}.ˆK@›ôÖ꜊`íæ®–̈à¹mÄÜfÿ.-Úx›ÞŜŞCÎfØwøÙÅrü¤X5_‚ų•ªp¯5ëÞdžÞD{y;)­SSý@HKxÊ|³AžÍsl>é‘ þ;{oËp#‰-¶YàÈäÓ³V6X,! ^ÐÊ=m7Ç®Í/ŸŽ£R3çnªèÖAý‰²‡~H!ìg [MÝ›:Rþ³qšDï›­qîä´ÝT»dóߘ8Z(3ë—cúæ©[} Y%Ü+ù{xÔD;òûk¿Ç÷3¢&`'Ë`ÑyÌZ7$^^ú@ã ÖÝ<Ë©’Òv}ëÎDì +*3>ò½-¦®|‡Ê Z©Úÿ¯åR)¯mªá“ïÏ—-çúMú˜âä³>Š$9Ó¹Mç†kõ0ñÆï z9hþ).EGÃ7³"èjºžŽÔ´Ëß-ƒºº™q­– ú]b/½&N7 ÂÒKòyƒK÷/‡8ÓøOø³¦‹)å¹|<|Sãܬ#·fèè»r>2)×YDþ=Cy%œI²Á¼ËÐp Ö‰¼Ï‹Ž¦-ŠÛ%U˜PEFcyÔÔØ›Òkê…7ð8« :D¯c¦!∆ÔSVUË{ÇëŠçÚTÒÿÕ æ';"·§0p]íëqÜCê¿Äz K\Ãôp›é@mn`SË?ó(ûL4¢½0û6¿Ïïݰ5µ2¨XTȨÅ=Á],¬mëvop\íÎÝ#“.¤&ËQÆ&„¯ÿw® ù ášÙŸÉå¹ j3ñž“ܶMt©L"0[ïœU;„ŒÝuçJ×v«’‡&yÙh<Wøqû¹ ¬ð‰@—# ç4Æi„³±1šš½Ü´j ˆ ' ¡ ®Ø¶N²…«w—…4øb Óì×ëãW¾•Æ|1!n²Pþòô§63`®\¤Õ{#býÞAqQqŸÇö·rMÓDpSÕª¯{’"„<œ;Oӆ̕+QŒúë²G.ÁAR\’iá •ðV0¨{L¯žÄFZ äÞk*Îo yÔ¾Õ»FcS·ï„¥æ§¢kú¸„íj2Z;Ç(z ú*ýŠ•E!»W“ „ŽKcJB³Þ`ß¾´cˆ^þyÝ0¡ôMq¸ÛË™X¥3Cé„,3zb%ë v¥m¸~ùÓbËJ-%ÝzÐíLV|ÿºKôyh i·¥?ž$å u˜ôpIö{°•EÂà^t~:ú“Zòà·_ÑÃ}¸yõàÆ â8ÄÔ]âO5xXÜ?W™Se«P¦,¾5¢á½§v¢§½†´Å›´Mú²áGNon4çÍÀ1°š¶aRJkQOgB³`ºi§Í®²bîÔ j#ÅE9óm‹xC…ÚvåõM¥$ø99•>ê©›ØH[¶èAv*†!täŠÓÕ-õ)Lü§ñƒÌ:Ìš¶†Øp»læXvfÊ_WÊõÁ©{{”ošm¥Ì›Y4¸!¥xËH=ø@ £ÖÕ¡žSi<Ñ>èá~.²›ÔÂiÅž›î·¶/.XVþˆµ@ƒL"Ò®  Ä6ëIrí±ÝNPæ92A PO,¤<™jBùÍJÆŒ¦ÑhÑYåñ5˜r+Y§ç %ÎUV#/6û<‚.£cʪ×ñüÓåÜúå¬{àœ†Ð̓øf\8ƒ%iâSy4ÅD.ëµ--ƒ[Ô•´æô·÷ÝpÑqîŒèÆ~š®Ié×±ÁD*òÂîqWqQÜ,Wéô7y’ú›™ñ=Sî;bte2Ï€ ÔQñ8Œ_ ÍyºðÍ‚Ž¸•¯µLÆìº1 ‡¬+j;p&ª R¨ìFÆó¼Ì¯. ìËéõ…5œ 1‚~èîà;åVàLu^ï÷+â¾2ã0do‹ÆXY¸KÎ:@r 2ú] cCÁ²]´Ó=^])-êNýÇ]Û9Ó‰ß'Ì¥oíl?lÏG{H~X÷pŠÒ,r/ÚÜÓá˜ÍÇ#Ÿµb?gÏKe>úŸ[–ÀÀ'r¿®AÅù Ðþ&gW‚RŸ ÎÚ,KºÅ/HøŸÀ @ËÈ:‰  ÛBG®C¢Ýö#kZz¿êÅXØÁQ-tvæ =/$$R8-j|Vè¸/ýŸeNQ|i£­ï2é ±v£þ{÷f ñD ç#·”ÝZLÛç‚ñùpÐ×]‚}ßô¥OqÈzx!s8`í°µÚh=-ìV,n·­kGG’Îv³]ý~Òöù3Aª }Oc£ƒD%ï‘BDöÀ$K/Ì—ÇÏi"ÂÃÈ6€Ø4¬×}º~eÈ1›~¡‘n«¶pØ;àžÍøü{ë=Cöd_ríh)[@Qà4™‚êRÛ#ss·ÊõârösØOë(ýÉ^)S–Òçnæ=üõvHî ‘^1¶¿ž)M¹ö üŒÔÕâµÅi¼ÛžŽ?ÐVï[ª Ó7íªs½R»·Skì²²NõVŸ„fÀ"Œàþ9k‰‰eL³ŽúÆŒ•¥öqµ6Ïô=;ßõо£žºÊKYqø<­fÉÅô¿µ_vo̘à¸F0!yÿޝ›¢¼³òðçyX˜Ò8'®ð}?óeãâóâuýö>`,ÈHDn‰¹1ðhO˜`Ìø1R•:öGG¹åûcÿZÆÚ6†6Òš¤ é/“Ùï»d2%bª½;¦ÜX\Dg't›ÃgÛC˜´d_éÀLÔóÀ`õå'W$G!×­ð\²\–áðoØS°ø€]Ðù7YNól ÊÄ%l‹(ƒK÷ï*V´FW,oÙÛAÆ™+gnÿtr_)7á5;’¿Â~š æ¶í9»ÄvÙ4Ê4Ã{i‚féYÞùšÚI³k2TßµF÷ùë 'Ô»•ÏPPŠ©»»¡iZÊoÉ8pH&æH6kfþ®NƉÛÚ<ÄÁ—&8»{ŸƒôK‚,¼ú,v‡Ý°ËvöY·ÐK”þã„¿Z¸ÍB¹þFL6;Y­d£ó ò—ëÉá˜P·bœ&Ã¥¯™â”xÕn{Ó}a à§ÅÓ'á•c$H¯ZBÝ-ª‡YåÄÆ¾^Ë‹Ë9æ¼Lͧ"ÈÒs·n‘…‘"Î/7|Ö²½ÊÒ;uÚiÆwéÙ캄8_2±&ùî~¶±Õ0À+"ÛÜ¿’ý?6cì*çXË…ø" a¸Ã¥³+†%=‰¥ ]îç5dƒÚ¡Ñ ;¶w ˜Š³³ˆ'h÷-ÝX=I°ybe÷¢KÍn^:ÃaSù&Jӷ߇í^hçïß”Õrê 9î),Œ¡h;}Ž( ?Ë´ó`xœË’–T ø\^&¸,6yȆk8Ñ~B€ê8íø˜˜e‹ugkÖˆÐ0ÿR¯~bø>`L‰;ëä4O@qîðã»!ðˆOÈyª\€w‚Ý+[…‰Õ½ækÞÀolôs´¾ü9´§»TË´ fÊ¢_ ´A‘Û¢ÿÈÏÅfÌ;óf¿¢… û—¹š®È{…ê^y#_¶Ï+Ì{S@¿0 Š¨Û£‡³zÚ4Ä0ê×ay1µ/Ì@Þ>€fsD£ærÙ=4ÕyëÃ1@¤,=X•jŒÇ#zæn›QÞЛb¡QNS¦;h·j§RÙ<ï¾SòŒmtŸ`˜I<ð¦'´]Kt‹·RñûñærlIœ5™q§c‹'«JôHÆ:Š€Â„‡5½Eä%IL”éxNK±z8RêóÚâJÚZ77æ–ú©ûÇ© œ$ÜU•#eÛ%¸sâ_Fb¯­4ãuŠòß8g* WÕÀ\ûñ‡?! !¤hÜso’Œ†gÃ…—²äs!( 1iÍ\Öù›¡° # ˜õ¥Œá¿T‹’޶ųe¸5K«£•õ`©ăÿ4€-.hï\›Åì¿™×pp»Ãt‹è³»¯å°Ë‘›éì2wÏe+u?ï ÕÝöV!»` î/ÒÇ[2Edôo Œôé/ÀßY}z ž%ô¨X÷SÌù}¿ŽŒõ*üÔn+™ $?Þãîù?û¹¨'ð® cümCTrG"0¨Èu›» ›X3f󿀫ÙàêcÙF“œ—Có¤ ¡‡¸;=¾›Ü1P±£KIÃZÅœtõqý´Ú4ʱ"¿èŽS"oI*M.5¦« ̰Í.™ø¶ÏW±†¶IÍÌw+‹Äùk…Ÿ«»–ûù{4•làmcFƒéª?›Þƒ»H’Þ®I>ûÃ4¾¨ô´•gk‰#6*† ëªJp¾íô7AhËиk·›]¶Z¦-Bïš_8N«\í>[ì¿ò¹Ïë Øe¨~á9•ùCüîÖ—2£.åÈ8^MïY”¡WnÜonsÊD7{§h«†ÛQFó´»MŒÎØ—´ž— ñq<^Yk0„¢áýãE¦‹5zvVb-Îø]I_@i$ÉøÒ& Ì’f­]Fmð7Ö“3Ý`Çô–ýS²Î…ÎÂQ *ñÉ{:ÖàV8ÃÖ}îÑ_K©†hOrÆ9zy¢÷ÔÊÒ³÷fßÚ ârÁjåÑFÄ_3˜JÎWHøA»µ.w‰ø¾66¸¾«×5¯ˆk1'9ÙFyî6¬–Á»ù3.ÙÓê`´ñ¿E>®HiLW¾·Í8>6_†ü^{3¸î ¿¢N •Ar‚êGTøÊ×ÖÈŒqþUйª ncÏyÖŠoÖ´êŸ$á2û8Ê‚W%±øÖ‚•P#´Mˆ–ϱÄâ„kb›»ÅkOèýqÜöØÛ©“¯äwš5ë²2IÛpl5莖Ï_"Ó;à\ά•Õhñ4¢ ˜…+äBÞ!.ì¶½±SⲂ^êJšóµ ÐP•}YÝxÏ`Ycà ™ß'äYØ`+ôDE(8œrjròkh´×{Ïà{ ‘U·Û%æíQ1E6wRçúþÙ=©¢^Õ×Ç÷YÁ\NJ¡`lD| Ï/Èë „ð¾Ó;Áª¨—mÛÆ€¸V¸ò¢Ž-ÏTù6™ˆ’¹=MÛ«¿ƒzì\R K—j?EoŃÔ3”e‚FrU¢yBú%e î‚P6L-’è©!¨ñÚdˆ¨êÞÊUBÆëw¦yãǪ[`Ü8nÖwâàŸ5ÒžÒéçtåÝÀûy wHÄ”@“Y\Œü°¼ß=£œ\D”<ÉÛRÅ…›ì:mÏùþ?ÑåÐA 7À€ H‚Aâd%D—(ÄÕYäcÑÞ´í³÷â烔ñ"××/.®¸—,Ï¿ÇEÓžWÈ‘Zoòž•²FÇæ”‰†BÛß^³,ï^¬ŒCž1™ŠÏ…®×¡a”°ß{+þ¤µÔøŽ±V”ŸI©Žy’Ða“Œ;Rn­é1üÿÞ!cè²°´ÖþBv¥ê2Î' S¬}ë=)—'kÔJ ºû›”z–ƒ¸xÌÚÂ¥fߺªØe[rŸ™.ó<ꓹ·Þ¥âP÷°8±a¿(5"ÚµÿE{‹0€[º€{ñLSK’I[ÞÅÜaæåzU÷C!¶VÙÝV8“X8Éö7ðœ|™ŒK:×lþmPßáÒäØÊI:Ù˜€óŸ6c¨õ˜²ŠÌö÷I¾Ô!+Ó¯^$¸ð€E%8¬“B H¢N&LNúW6%‘lœýçÅrÓþ¤wzÃí ²‰GجË*šq5Ú<ºN`Y6Ì–|û~Þ$SBHX¶®­*”ï†ÆòÁaÝ©rÓïN5‘q”ÙÉ®Ÿ£º$•õ—îhQÊ)),ª¹ŒÕ‚Û.Ñ» R(”lѨÁ#Ïg§4žÙWà™¬ ÚE®¯Š‘ΰ_¨+ã½Z¨‘Þ ¯ÜΩO»8$ø·oAFA,feOg–uËëí`ÌFñ~_cw\q¿NK£]û|èižª™šâ/,¾!Õ°âëñi¼Åùv­#ëéûß&h«ê¾‡÷3Ï|®ù~Ô¦Ã>–燨àK"ÝÛR›m›M˜Onç¡6xˆ/­%AEõµMÌ!Ž Çî·‰›ò”`lËõCòdïÓPŒÀÛ•Vïò*ÎvÍÊ"ê—Z`mŒ•%ÄRœ9„ÐGK©a—ËÆÿª‘O ‚ ½>Èäô÷çAf¼c±µÉM2†Ùty›‰÷ /ÿ·_›”¬wÔ_FÃ!VT–å‘¿9ÁxEóÔ ¼]r+õbÔá‡IÝ{{‰ ¾¨éJEˆõ®ýÎü³†sž¢Ú=ŽAWf§ ç¦1û4JŽÃÝï9 ' þ»9‰ÂðRƒï1ç0âŸ]F‚9‚— )Ü–ê%乸o˜Ôô²¾~C>7Å,ˆ•.Ögp¦Ô½Óœc“HºKÎi«i[A¼\ tt¦|šv W”´Ã²¯÷Ã<}1\­³ÈI»øè]¯»¸yIö¿˜æl‡‹¸q}õˆ3TÃnûä‘ó¨ý›¾gD¯¼:ÅÔªÃMËX+û&ÞñÕ듈\Yu•¯e£Ãxéßs…$ªRËcúRÉa@ߘáâÿ`´·«F)‚¿8/+Aº"ùå!êÄ‘Zh\ÔB›õ.A»˜øñ‘Btã}†¸:<±kô²Db¸¿m´ ŒN:³ÄC»þÒÙ>Ö6_¥«Oñdw¡ÄnòÌg&¸k®ÏÉÒÞiåúŠÁpݺ¿üßJÆõzH†ýÑøÓÏ1¢ë‚À1y;ƒŒ•Y8¸Ï‘·sÎIÊ–›z*ª)lŒÿ·+ëZã|l¢ lÝŽPÑ’Gqå àήd¯!»¥|d ’ëçy­·ö‡…P<.̼X.×ö[¹›´Ž¶ñÕÏŽLw4 )V´ YÁÈê?&{Ü=5ןì Ö>t]þV?}ƒÍ¤Þ¶cn”a"¤š·Öû”¹ýX¬¯ ðUéžukÔÕËž‘]4Èó- QÌ6ÓB‹IUÛFÜaÍ›ä/îÏMÄ4¦V!‰Ùfâæü¿ã˜©ÝÀv*~Jªøt]è—:Š–Âhœy†nö㪺l•FïgÑÒÃ×L ;]”:,¶âÏu$Õy;Âê½i/%q÷3ùçO*ˆ¶Yž€Ü8v™ü˜»xf4]|{$ m‘¹ØwÞjz3ŽFDýib`Øq§žî¤,, nwùW•481k\7#Ès’¬M¶ÆÌA⽩Sxu¼j"C $þáÛæžÓý·!–…KÀ÷{«X±ƒ•÷`](¾Øú3:ÖÂÌð‘Y21]¯€+&•€Ø%øéDrnÛ °ô[oö à{}Ç¿ìÃÜÄÔ³M|–„®Ócgbà„"ÈtYëF÷žœt%_yß“ŸÞ+4Èéý0k¶ú ‹]o€ÀÅ6i ³™ ˆF)ö¸IØ SÞ˜n0 u÷nmש˜‡¸®ãI¯ý¶…üù†¦Ei·Éñ°ÿºiQ÷g,jqðN€!´ak›–Ö¦¯hc¿æ—òziQ& ô° ¸|ÎÁûÑß™RN÷_ë5;­žxKꞢ…îèp3—)!Áôh®…âÝѳ)œ;‘‹Õ«:öÝ;JîgÉd‹€ CøžuÚÿ÷fÞ'@~“”Ék÷ÓÜ!GÇs* ažg½¢ÁÑg«´¬øF|h"±ê$ŸL5о:yoô£&Úµ6G©[ËÞ°ÝÍ‘õœÅ¿¥EÇÁpÛ_l“ë»e0b§oÓûæÙD娈÷r}ò'j…K ŒzÆ”åÁh„%ÜÐü;-{_ø?@£·#Äôý)À±ûIK€€ÃœèQµµºýØ™£&0[ÈÇçK+"Õ[˜æÓ©cžÝ ]Ëz«ó¢§Ç£©Û ’`ˆºâÈŽ¨G:züUwÔþ©FXø#ĸúœÊPŠÏ¬ ž?Ð#j«ñšØïbl¬ÇwTÅxI^Ö?öÛ8Äé×F@"ã¬L»À3¨ü5µÀ©ý? ëλ$ó|`pš.µš–F‡}†¬ï¦?º¿ý\úáÐyZÒÿV4¼Òæ35™¬Íã+v9èÅþ±åU£2€ü _}å|â|ò[&ç4ÓÚƒ(Eîlþ³\Áÿ3hÉjhì`hÂ9eÞýB5½ Rª1>EQËågçà8ÍÒÞó؃3eÿ>z«Ò­Å Aöp)‹&5Ÿå@ìÞjçnJ-T @BGkEaéZgídï"=k.e}¾)!!%é–c]há ¬ßû?óŒêe òº¾{<¤í €9ÇaˆáäÝÑrø jïUö(XhM”ÆTGNTá¼Îrr™ yÑ/š´mjú‹ªóÊŒÛò5à,ûÏÞ’ÌÐHÐtãó`67 çòÕÓÜ„³ª†è mŸÖÔ‘¡¯Xc vî¤Éôô+‰òí}Ug3…‡º›Ê·ý‘ª™(,§ë¿ø»’)„ÑãXzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025413607166133031614 xustar0000000000000000112 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.774788589 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz2.dat.b0000644016037001603700000007123413607166133034763 0ustar00hutter2hutter200000000000000BZh91AY&SY’°¶.ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà8¾úÜúàÐ’’B•=´ Põ¡³ljké{=ìkî·*ƒnì}ÝÜû{ç{½f×Ö§kçoëÞÛ¯;×6:®ö÷º¾UZò÷Ý—»¯c× »¹ÞîÓ½·W»½µZµ›vϽ÷¾‰ómmÙ®jÄ[·l[ozŽPæÞçs+7Zâ­™Wa’ím^ìžõÇ]Éçרï©õ¾ÃR’`À™ &0&Cɦ#Ù1©£ „È0bi¦ Éb14ÓCCDôb§´Ó &&L&ô&0CMPjP#LЛÈÀSÂd™¡“Õ<&Œšjy4À „Äô ÄÄÀ##Fª“@Ð`“M#Êm5Oi’jƒRDÑ„hÀÓEOHÓO@šf¦M¢i§©¦˜OShÈ#F§”cM˜&)è §¦…=„Èõ56Œ†Šz ´i2j~†©úSô›L§©´4Ê=L§èPiHL)äÀ&&ƒSd4žF§¦#C%%XE‹r^˜‚œäP‚ â q9°‘ 0À9ƒÃôp¤Þeµ8ìüqÿêorN_øZÑÏË@iZ0ñ9ø²Î_àPŸ±Ú )Ôó]Ö½ø^[Ï1ÕâÚÎÕÂSÙzU΢ì7鵞em’Õ¯ÿßêè¼ÍVj0îk‡&gMÕ{ÍÍlHZ³êA3ñ“Kµ]°XÏ“]º²¿?¨€ßõ–‰’ötv›ë瞃ާ‹œéƒÄ¶—ž»k±Å«_¦zѵǽÉu×Éätµ”YÅ«úŸ{Þ—½ç7·R°óÝ\›Þ5È´êCŸî~†È¡öø°qB¼tçæ&½£pĹà1­Ó7ÙµÛÕÍÙGÈAÅðÑ®wÉ›ý6Þ|.ëÌÊhN ÓÀöƒuõö3÷Ñ·Ÿ™”:ठ.Œ®.@È"(ƒ=3(V ïÊ‹)¡X€PªêH”Ãr"¬<Ô(Ò„§  V [B“‡€ðaDE 2EPQî!QRÞ"AEZ„ôWš–à/v@†<dD@ZHØF—vsLÀ¨Bàd(Ò C!/ˬP8’‘z&@hYˆ*}È*„~Éâp­&Àà5ÆsA´ i\žpPNl E™XƒÇ ¢ä¡B™É’^õ„" >}‡0|Rœ¡èõ%Ö¦/•nˆñ€=¬!š®¶‚PK²v0£‚†Ð„Ø|2dÁ(e([Ë@%ášX)0&Z2D • (’(s¤(}è@ Øž<Æ_$ñSiÁ—šòÄ€½a‘ ÄÚ–‡q |ÐIJ„xU˵(:ZIûàBqmÜ4µÉTË’\ €* ž1† 98~?ù%Ä쉜„ $©,2@ä&Píáyƒ‹§ Jl¢žxI¨B¡„/àBêrƒ°œh`×rR*@q*•ÒB&.ÀçfAVÅËKwóå’ 9®B7ömsßÁÌ\51¯’Ûé/z`¤‡Ú€CpÄÍ*"×"« ,4Và¢aI2%gÉ<¨V¤.$M! 9Ÿ,MÖ<6dÕ‰ ä €of`4î‰azÀAýéÑ0R’Jâ’G¾Ú|•~>Ye.£VP³Š=ºRÈA&“ wã\)Êâ¦ÂÖžÚyw‚rߌ&SpÔsÁ³ã@Ø?VéÚðJõCQ2AäÊ¢—a…¬\Ög•ÿyç,ÃÖõ“²V8ü„Á¥c ÀÖñÉFk 7>A~¹"l§ùî*ÖŒ°Å@ZêØ³ƒKÒ´Ôç.ø^!zH-­D%â–=7»fÌt&3×m€ªz¯‰å×Åõ äHð:îèäÀ1Ý©“¡C ËbArÀ6lPðŸt› Œ\„µ §`£]ky©T H íE‚>’‚¾]ÞúA’ò8Õ`aIuyXØ5Nß,^Ým±è™@±šzé…Ý5IŒVäûszu®Ÿâc¶%Œ#bÝï'´ö“_·Û8C³>L;Û¹Êm¹óáËçŸÏÙtÝ T0D^Á•§‡‡§¡ÔÞH/z¬~ûö3ý@² zíXVú?L&nV<Ò LrärgÉËï^¿&át½'rú]‘`ÓBéî' h‚@˜Ð ZqªÈj³¿Ž‚da$3 1oËñ5¿ï9F¯ ÊÚ5˜Ó`G—÷W5ë´¤gôÉÄ@PNsšJÌàWèÛN<ªÀ&2‚Cms@%÷o¯ƒÝ¨52AŒ iÃÅmŽÛ°u BrZ(Û7ÃÖßÿ¬í–tÿtùMHÁtfyŒ¨Ø›Ì"¿ fÁ–¬{ ØÅ)QY`\ç‰"FõÏ-²'¸[Ë{ÁXOÎpÓt ÕX¼ÑÏõTU'èøòÒ'c«sãÅ*Á.ís‹jç­9!ðµÌQ‚3’ßø700`Áo†ŠQ±ï×»—ÑôÜ{‘å‹àˆ#RGHHát».MK(pD‰ÍeìK¡1ßWR Qaš>¡rÕ­&—œñY¾¯Žýà„°³¡SüƒUšH àPè=ÆÐé1À·ÕV©Ïwñ·úcõA[{3Z›òüœUƒE»áí¶åæCü&ŸgÂà+…©ÈgaFáqÔ5¯ºqØ8HèÁð£ÜÀ=Lêr6/ÌšçD$]ÖŠom¹Š×ë⥰ê ÌR· Ü‚FšY†Ñ?p‡©þ/áÔÓå`æ|D_ZKÃ,(Yläƒu `v“Õ”Û©`VÌÈbk{×ÿYÒµò$u’ê~¹×¨²òizø$³yá¨qòñŽ0”1s!c³MRư]Ýò…Ḡêms°h–•³–¤pnZ?¿»›”<]=~±dAH;?|¿˜Ï6L P˰Zé!Îaç‘U ÇKiI³>ï×µOìïþâ Rb€šv»×½3 î1ñÆù¡»*¦”ö2S½•郴AÚéºî^Ò‚¸ÿDØ·§î å"%€B ÐgË’ql‹ÙäºýSá¸nÀ1çÏl̆™ÏöZØ:´ÚMQ;¼ïÔf&HÄW”‹ÞíèPe£á„7.ˆ C¦)¸¿ l¬Œï“Sî:æ½[S¥vûÇëê/7m©¢=®-ÏPmÊ‹—‡¡„Z“ÉX6r<×ÓŠ¡:îŠîE1…;®Ï¼û-¦¢Xžr×J@ôB‰xá$;Iz¤ÌcÁÿïqZ]}hŒç(0FàkžŒ,z;3à³0èÃê©×`XƒM1L–"Àˆ S„‹.[^ä5öÁ äý¨¤Â£™›ÕÄG ùª566Ixf6Ôk ¤9%zS’»Çe8‚þ–µÚQýâ#°{H48upŠ<1*VtcìïwÇóù¤=wFÃøyNqì tµZ"UtKW™ê.¡À”ˆzñùñ—'kÇËÖEî€F˜Bä8š™ãîœ-öˆ“¦ÀR†0JCÀMÙAÂÇ>e¾ï<²JŽ›VxÌi¸'i˜®ækedêÎbÝj>˜ý>~% nofzÜš`)…‚`½äY,-±T%»7YbÉ¿$M\Rî7·hŸ‚lKR³,tŒà1aüLº3¢O¯6ÄÖæ2Ô˜{¼0=ôÏDgsEÛ;埴T.œÁÏYžÒ%™Â ¤¤ƒx6}§Y¯r0²wÑ?l$afM9Y ]h«j²ú~¼Ç¿¿Ùg«ÜæmYæ3<ž–޵^²[t¨Ï¹F0†² K*“ÈNÃ쨓6Vö!1KýÈ =JÈ›V‹Òøþ½aXJý1\ÎQHˆìªU~µRü]œµ"2zù4 Ï"9âÂó6qñSûaÎw'c¬þî£g‚µ_C‰‹pïA—dM@çWÉqA¹È„Á§ûrM+ŠL^¨ùvÂÞ´:aÅrRþži`ËÖÞDz-­TÖz×F€ÿŽéNpIé*ª}áYU>Røˆb!¤AÿÔ Ñ §¦¥`-vÄ ᯟµ^¸éÌåMp‰qdJªG£Ä>˜"È%Ýôϳ”~Óò€Î[$=ß³m m \ý{RGxRú:¸÷ðÙÝô…øS8Î9íÀâ;¨ðë…£^³ªÂ1]E烸£2dIý8cCƒí5F òÿÂÙCа“Iªö!r¥Á¬ÁÍvd¹!üSä]Û®7䮿M£Ó;Ê ¾5—¡ºZx*Õÿ«˜xLiC‘r3'›Dš4gøA`bă34ÊÌOŒuƒ"‘ æv@S.ºÚ¿JÅ6 á0àq•©º°:ëHKR‹næÚ-ým@}I­~”éµxD Wœëy“ÒüX£ÓÔªûP b B„b|hA"B B/•íóרMÖ‹s©ÁðxýŒ1„ g¾”yöc Èl9 æ¯øù°!g¹©$&ñ«h&ƒ³·¶ÖqjÆÈÍ©ÛdO£Õ馵¶[·¿'çR×FU\†zè8.Èâ ÑÓP"7žÛ9u*G”1uxƒÎUñ2¥ìe’VWË&áskÁç¤1<›Þ$¤|}Æ:¦¬_1šl¯‡á"±[Éì$~h¿å2“+< zžÛ#ñ½¡pƒ{›¥:µZ÷ž6Ü»r5êêûÑ"!‚²Š¿P¤DØ1YKƒ†!̃QMº§ÆÚWs${ÄË·Ä~‹…òtà©f«ì.À1M¬>-°¾ 7y³wÉ•­¶äŽ~$TDèpª¥bÂs”ˆ¶˜.Kè‹kñÍWÄ­2œ0ÕT²‘èp‹“ü³õé„MXZ¢¨ðE…¸Í•ëHÂXõ| þìÞœ]‚pE]s>¼Šç÷Ô`U[×ozèAÑ!í„>brÎÙßE,¼æÿkñóvó?>÷«Ø–3¿›kòýn%sÈÀåæô ËçÑnMñÁC½ÇÐfÊäj—zYPxáj³ÞEÆqkúU l'9z@Wv™ªGix Œ¢ƒF•à)ë_“ Í/µp æÝ¸0äW[õÝÎrw•ðUÐÖ~†Kúí`@%Q[¬$¢2PøhÈîìPÇb!>†xÇœÿ©’Ì2ñÎJ@yq§Ÿ³"sDggÙƒ!„ÖªB–ÏŠ¡ZzN2m8÷‰Ær`µŽ1Xÿà4-ª$ðç)…¦AÕÇÂÆ¨Ó¸ù'‹©§y`J½íó»”]¾¬_eÌwÑ#Ôée=P Èù7Mv\X½Ô|ÏúŒè>½¢¾éÖºlX¸¦Òg®ø—­¦ïØgô”òh¸ÒF&àLîæVå‡íó1—õHwäçÄpÁJ‰ý.—ý .¦äߤ¥KLŒ=RàAµr6;æ0gÖøT ÁäÀá¾N'‚š¿ã¨%W|(”<H{c¾¶ÎKu=¦ÒzK°’ É#lh€•¯‡Q´ÛG˜½ ULšJYí¶èy&)ÿo'Á‰x|L‰7ÚßOJ´¡ÏµF–Hø6q-&@„*m§æg °{\°µºIËþŸ ýmGµÅé¦iÉ´¾¨y°´Æ% hˆ(Œ“1K çã¸Ñ„½ÌÍ›îÑÝþÝßã Ðnyó¥´iDÆeÞ”#ÌæÄ—s‘ìö¦§RL.~uêyÒo0“ìW¬;ÆŸ»c öÅpËsZ þ aŠa2ºÍ½Y>²ŸQ²†Ó¬Ä&ì¸üLýûœl,× s±Í?è~8M¢ ‰Í{K¢F%à!ÌZ‘é+éÆð†°sir3iä2[¯g"Ü\NoúÀl°ÏçüÃRè}÷…VúH›I¶ÍŒèàà±U‡ œè:Te!èƒWA°xO¦`uÓw|Z67˜?oŽÊR³Ó”PM²Œuxãý÷Oã!öPW8|‹¬"¸Pä1zÐ$CM 0Dyø£º¤Î°ÍO­Ážqç–-Š3'½¥÷M{‘6„ö¯œ‡aÓ\>ÕÓÐZV©2«y»"Ië»Û¢ã [ýÕâLŠF}`ä`ÏÌ'oþ𠂯_9† œHÄÿ¶È»ŒÈ뛊Լ°ÄÜ lÂÚìàDp ¡e MÊš‘…ëxv÷óÏÌtN†ByeˤA÷°.„âxƒ±ÂÞÌ®„ÄU¢)t|¾O襎€¬„…©7×/B¿GüÕ-@¨o6Ožj¡‚Æã³ïhnÆ5a}øœ ÷‘-j3ùW!cA€:Ý¥CSß¡DDmþG1ØŠ$Å"òpOš$¢œka'½0¨7ò÷fñeRN”$ê¥v2g”c‹ò­nµë"€P„m(‘!ñpûS“Âç"Àž£Sýix'•VÒNÄ®›åÁm7RšCàˆPO}uªÆ&ãþŠí$0¬7ˆo€ùH{íÅ‘­3@ƒÛ/…qfÒ¼oÂʽ‡GJ±¿|Ч¶öq¶ ꦮ%áo-Þç?öbSJ½c=5Óµ1m&63 þ 27dxê;'$SN: I®æþÞãä7¹®Ô:w1±Öjºøú6—L“ Gd ˜  y¼­ñ²æõë½ìç¯"qžÑT"_=\ÆÆî·è°‰lWš°ðöe^ÂÁâÚ9&ócov¥Á©'£%eœæëˆrf{?r YžZÁB­r)•Ñ´VÉ}÷O¥5´¿vbíç¾8¬’’/.ïò°îÿ°`6Qûfðq²¹žX-_øé˜kqÙµò ø*û'7êê;Ý×"_½œèl°Ù«îÆHy)ª®Êº¬N“KSÈ"¿T9¡üÛŒ X,cØë³jiÑêü±¢SÎ34Ÿ…j !Ê9Û «Þµœ»P£>Çß^ïïQ«‰ ód)fMdf©Ã×¼_¨‹íëFø9CUZ‘L‘ð&g 7"hÙ¼(‡Þqaà^Þ‘¼­"$]]Æß é67Oè@ðqÞª¼á7¶²âAœ“ O¯ ñJ¸â||û æÝ «’Ye •sO51KbpHA › Âû†Ñ× Ûü>Ñp aú2?—„ö´éä¥+¶æÞõ§3ç[5Ûù%å¹÷Pô ïeØR ½ø“ÄÍiÄz‡rÑãUüb+u†7ÓÎu6€M™!ˆ[ åш:3Umy€qz:ÀÂ%ˆÀ(´`¸2֓ȸ/„c[&»ÈçD#‚<07²¾X$ªÍoˆõ|XÅ0DÁ³S@í:ðzªi0{0/¯Õª´T%zIaqR.Àpv{Sù;ŠñêR)¥vËà¯íÏ%P. èŸdZ.ã-8>:–Sæ„S&›XŽf>*§‘}A»Hê…Á[s©¶Û2 G½wrék¥¶³á|ÂYt«|‡óE &,5“Ââ2æsX1HØYL5X½¯uIïùIFfx›p¨ªvÂ%ÄëW3ú%y:1_›9JôÆ,1& MJó™ i¾º%4ÖÔ)éìÆ=Ü“D¯ÎáSË7ª£U•íåhÝk ¾BíÜ]úK¿ðå'Ýü·P¤r9>n$™.¿#™ p€#k³(YŠ„AóïP@‹äxöáÌÿ_×±C5\';Zšþµ¥óÚà6€[îR:·Jy毹P|°=/£÷Wc”ËÀ ,wÉ­;ôŸ&½¥ç2ßøšØ)“¯”ÂÐËI H., 5gj„Nq!”óË$'} €¿eæX¤8‹§CùйEpâµ|›[üzFãŽLW“¬|MôÁëÁìÉÀw ¶Ì‰¿7ñÀüéRE.Œ|ú1¬ š‡#,¶ùãFÎïƒÙ›…Î!¨´”¥@¨FbÅB99äu¨‰ã€Ž VÈx~6©"ÞgÛ®hÁzüSóñSrye!tÆój ‹½R£Ôâ  S‚¬!B8*2çÖ¥~(GüÅeÚÝnMåRœ Ä×°]|çê9óŒ†Õ}½¿Ð­­Šlo‡µ„‚WCŒÚUj(ˆôË¡›p{Ö€Ép  ‡ÿµÔ£3Q´g…§½ùK ` þš!ÿA\-þ›£,5_Í Ènå8â°1sNx¾õƒÔÒ“ÎÞm›CV¸"ngEqHé¬Ý5ÖƒðÜQÂë€[P Il‚¦¦Ê>}^nnSxõ«Ó¸ŽéÖSJʦSÌ4íÇ'¶ÄãQeÞPDšï¬¬#½ôŒ³áhk8‹VÉÍø\éAÔ±áK£—ƒÿW £Lp*Ã`èqw™ÅÆÕ´>¶ïç#7j Â@†G$Ò÷oš+´§×”…ÖáÂ_-ØÊ˜ÿÆ,´=_ÆúšIÐ^pûÙ*+‡˜ OO¤µçÔÌq Ò;4Žn AÓÛHøÃAÃ;f`Ï!ÄâbÛ=M‡@¡5_ºÑ¯8É’› d‹„} ' ±»=ÊÅoPŠ[žêÇäÝG2h1îŒ'c|I> v®d§³ÀÑŸ«]½¦ÎZHó£Þ„1]® eÀÿ@sãì¿]n[ÚæP¾ÞÀPâù-ñæÓ·ºf Ëúàù(~wÆ'`‡×€¶ÏHN‘¼Eìöß«Ð+¸€6î w]1þ”u<`UùžÜnÒ ³Q~—) LEƒ[6?æ ™‰u®±†a´"Á$„uJJÑû­©é´ÕlÏŸ¯ã8- f~Ç–ŽÑqR:Á)f±¿}¼i À ' £USq{½m{0uK4V“*îF6,Vºñ«bl(S”ör“¿N¶ð ^Ôÿäô¦ÿ)R¹lÍú>ãë šØ?Î{VlÊÙëÓ˜ü¹ØýèþËvcÉ9GzÞI{ô³Z+†Ì`E­çs>cŒ¡Õq[íå‚þ½Û·äa5s ]ðkñž­› a1¨®ðÞ¸-®`å_Û„`þð‡ S­‡l¼©ò«jS›•~‘Iò˜¶OË_Ÿ$´wJÒÖOl¢»~ÝÜýîñù( Í)꫽Ad" ùlP³¥²œäSí\€ÜœàôŒÎw¦]ìâœ)á‹]((RˆYX_ÍÄ€¨p_D®¬/ÂÞc!߯ʤ0ø}%MggþX{Z¥J»GpŒ'b¬Jö`xmö݆üü¦¿ù§d´ÕGÀ †,6í^˜ƒt?Œ Úý¹_˜ç¶ëî'êæ¾8£H˜ã7¸ôzàÔ¾i<æbKÙ\tT HO'ù‚ơ㣾 X×ÈÉ£nÅÊr( ’-Žz®Þñꎀ€§§ínª7‹Í´|G2ïRhUj%lÎÜCiú'÷j³F”I›º²à‡Õô­f»Ú2ßmÒ‹*‹2fƒ³/k;{M ÿœ ÉΣÓÝóóô¼~òùx[¾¾N®A™özP„ óŠÕ ^ú¢Åâ5.Ö`rºV¯»ô›I›¸HGüÚ»-óB9%ÉÛø„2„B68Nædú±hyn­6¸Nú¾M]ù-Ÿ™éƒúaÕMš×îj¸taƒ03•ʉ£:4‰è0ÓW›¡Ùõ,U¹œîW±}ÁÞN•ƒ áàš’bûH\ ¹°;REn¹á³•÷ŽõÏÑ/ M.c¸³oÏs8\Ø"0öBq˜Í’37)FÈ' qÞô ‚*Fïç9`'b†Hׯ—XFÎ'È»ƒ"šºg®jŽb(@JrÙÖÐçž¿Qt³nrhuN·Åþð˜4ïI9Õﬣe¼§Ðg©ýû;¥÷œÌAq‹ÉxÚ°ývöV M^ãLs¹¤ðY®™ö*Öö•õÜŒó$,Ôé¬YÜMÐh^è_p®Ø;™ª×U¨DÀb&vÁ¼ û,‘À_àSp¢þoºi„¾†JµrtüÀ–ýŸÃÞ!P5½nroÔ&7¶®»ËÌíH¸kŸ³Uëa>¢æhدÚXÎŽØÃ)šj˜î¯žµôÛ9­­.ê;ݬÂl9¤‡X‰F#¤¾ú+Jö ñø·NÖwˆD$|`­Í d~#0—~`ñø=vÛ¢ VY÷²zO¢ …Œù¶§«u P5 ¼ámÐ[ü ú­s'Žù’|@7;m,¾ß7ûÐY3عGa;+£Bª]•‘”-dˆã/æÕÆõ`*¨fÈAüZ„o a–¬¿¤~׿ÖÂM'‹ÎN"z×âPCǽÛ@ÕUNÿ'šw?±¡åHKõ' Ž–òˆÌ;sÇþóéÐTNÇþ\…K©ÄÕC%/?ÕÊ#1B„íÏF!ªºKdÝ'/‚T|ÿ<¯—î?Íö”e´/3ðü#²v«¶ë8S‡as©äy>äåzö®b\ìþƒÒbÇ·Í…öI+ " R„xL¡hk‘RÍ…–/M³a#ë%úd©Ó†°v~æ@œ‚UnW4Q7mKSmn]Á•KD›F@ŒŠ ãPÚÔ¸œPïÇ+ñ£¤±ÉPÐdéõq-ÍAá|íaý|/„¹ØÙNXqUÒ*‰¾Ô£Ë˜PAÏÈßß3÷z0½5ØÄ•;…úîY¬%¬ÅšfRh²PƸöSªw¼Bfçô¤§ÏÿÞU‡Ð÷ìg…Û§Ê#5¹­¸óP·LÝ|£rÆ+?²N²E&2¬?ªS¥ÀÐkM:R`Ãà†5èí†ç„|zyŸqy~ËÙ5àG¶âVìÈ„9$ €0ˆ'PD•À<Ï´«#Ù“šõ¨Ä®2Ü~Oà„élf´ä…jé…mN©åRÁ1æ¾z®IpÏBsö9Ì#ÐÕ”ÔÚóìÑ|R$—ùËßÎ\Çü’ž-hˆ$pBp"°#("Ð(°[.pf,Z¿Agg½VÇ%iXùW•éÕ@Ís [¢qµ%­ë”4L7r³Ž«øÚ‘ø¯Ö<%Koíoª‘×f=u&øÖ^3$.gÚHGð!îÒEØÛH‹q`7W³¨fÄND¢V×YõLk2lB @WTõ0Üv¯¨¹5iÍqÁæn{±]NÆUo ¤_6 t¦)P 6 F…òÕnÕ?Ï‘Ù*~Á…Oõñ1M-vE~Q j€M¨›#@£]ƒé=ÓƒÀ´“ð²s8ÝÇÛ˜ºeJ.ÎËcõ0ØKIŠ4m;É%Åt.N²¡Qu¸ –¸ζGŸ)”°H¨”‹h²†’¥VÛõ`´üHHùw;ä ý\9ÒçÌ],ªÒÝ_kù³ ˆß\2Àv](³ûÅ—t’ç4Ìxÿ/‚Ë,¹Oæ`#ЧwòdKÁIÔEø•Õ~Ø™w>•KÓiYÅÉ€tM k*Ûµ?v),ä  ,$.Ì—(ˆ–XE‰¯nl˜Iî C`k¨oyÞ-›"? ×çSúLÊ›—zcq¾ÿÍ¢›+{šw‚+]¦Þ ïóÈêœ9ÕéäœíyB¤À +Æu³ªë~³réµ"pì ’Âó÷JÀi5U¹<üqþ÷>‡á2þâI2üwoV¬§ŽÈ^RXðŽá8À†˜˜&[å½d6nƒÞØá¿šö#iûÃs»¹õ~Ê=Þ¯ê­éEÃ!c×®muæg@ “¡ŠãlË}Kä/ãúxTdÔW2 ò}yÕKý6¡á|¿†Ï’>\Z69ÒÛ£‰C.ŠÐo˜->®”jm–¢)Ç)x¬Û>\®¶`Ü€ä<(`w'Æã˜° gýCݢΣ¥WHžVó#±Å™Ò±x®µ<>è…Ïr|ð£EúIU¯VÆÅÐqˆêõ—C-ÿvzð'Tó4*,¾á*m{wÛã«Ã26nÿ#PÉ>F¸D,V²‹ìû®Á  D€òK$R$ŠÅ‰öïµùEJØ\Ö]Õ d“‘“?ráèˆýnù¹á€Ù@:Ç8¼ظÙ#»zˆÉ\¤µ-o¿S´i Þf ôóyß¿çD÷°°–èZ× À(R‡5Q‘g{«XÇ‘Zñ5®€ ©“®¤™`óºâL6º®%ülv µ†¶ÀËvexÜ»¿ƒõµýœÊ8¸QÙ½³ø¹ð)O£D-)NOrÁ ôhurMJr(YcíÛeëú9Y–ˆsc¿Å‘¦ç9¢cöî÷z—C\tZûcÛ\ÚFúA—úšâ³ì¯Õà"ºâÃ`Û=wƒ¶Št1äÎÉá"½¯I‰-,‡S^œn%ôƒ){?Óe¯™øâ¢{®ÓÛ ¨«çãšÄ/4ú%ޱ Ùpl-§&&jª£¸¾òq¥}.î†úæôÄQ/¢\"‹ÀÈØY=ü q‰ø½êÇ Ù[´©¶ÝË&,œ˜cÓ‚ÕIAƒHuŸ5K‡L˜ŒôcYTK«Àí7•ÉŠæx+¨E›vŽþÎÁ_@ "ÆÆŠˆÿ8Ü¿dÂã ÷‰'åÝ¥#î“e†Eä _ÓÑÖÊhJN¯zóÃ1j,z®îy]\šÝêÐA¢¹ ZD² ¨!ø‘v|ÁæèzñÁÝ7$%^áÄ»Rø×f]AÊÜ=?[ƒYP¹¾w¢ÉI”„böŠ~£E¼z¤fž\¯*­âv¡Âûš:ËA-©D©=hê+JA›àï͆I¦g_2}Éý‚‘c¾M=\×u±¬òý!Ð…H’cyŒ˜\¹´+{êê^ݘ˜ùÑeõ%U¾ªv§Š×£P(Äw1OY’G‘ŒÞÌy>žö0R»¯`°}TXs²ôPÌŽëziÏg]¤C¨çl¹aRPm­ ø}¬é~ ÔzÉÓ¤M˜ïÿ€¾µWž%¦ÿókë+~¹o’¼CÈ=óxÇ=n®¾Á„u‚ çNÒ+oƒ«3}› aã¶Òn°ð†zí ß±ê"+îdizoØê„*Õ©?­ÿÚE³#L ®vüþ/Åô_⃛Ÿ—ïë-8Ó±vì É•Ï`¬š\Ûr):Í6úNí“㮵þ&9QÜÿ:BËÏÚ5Íü “ŽBˆ+ÌXP˜wX ’á·o÷°‰4 9¼Áh—tFhmDS|W?/kv$W·[m!šTÒi³Øl4çüÅëSÔÛòZ†„näÇì/7°kŽg)hßh2›¸h8 5Ð"±¶v¯KwÒ.AÑ ªQ ¥£ü#Áˆ=«¤ç„Qì¾j¼…1k[ÎHJfÊ糜¥‰ìŸ¾Ð½2è¶H§»[ÞtN3Ì+ßáè|ý!ëào®Îפ®eëÔ‚0°Ü|$´ ÞeÉë6áÒç̼B6e1¥³¦ÚG‡Ì¾·–lGnºÊ²¡1˜£öËW¢-†¢sOhBl…F}>ZÌÛ¸·¾þ¯lI«+È‹²sÈùDp}DWÜ…vÛdG9Ñ?ãÓ…}á5ð06Ý,C6Òe—ö˜Xˆh×ú:÷r—î¯ÌŒßbý Û@ †È8är˜®u4 à„Ê(9gè,Cn;nSƒ"´&a½rjM«ÈÏtÿ ýòÝö¿sÕòÕó¥c±¶ZãŸ1Æ;=“rÍšÛv¿çä+¿ªgéŠÏ+&Èá; ;Lð¡‚Ýo}¯p nŲŸ•þ_¦6°Ü†E¿DìÃánIÔ:êA{™µE¦¯Ü^ÎÕqº˜Ì5—“Ps#®‘âøåïUuû¾!«ÏYå`ÿRoߪì] B<—”J'sw™íÔ5%år’îû–ÑÝSSÄÉ£–Äß™¯K‰²@ñNgñX„=D.Ä0_3Té´ÛÕßluO’å±ÏÊL(™Ú?ÕÙdDó]<³´, .çBx¬E/¾²Ã!ÚÆ¨¨+T8¦J:V­—wú§X¹8ýÛWú¡Zš[®b e$Ž>ÙT¾pP°g ~Ò2%vM”0`«b£²¹¿³*(õ]Ùz»ìûj˜ƒi¿””Co‹óíü)ƒ–÷g·Ç~Œ´fòßÓÏFxÍ#‹hÏóGHýö9ò¨×µ¬Ï*aþS«­Q|K‰ŠŽjÁOs9* y¬ dó_Ê}þª(ò/¾½`0oýU]½¦rª¢±­Ì7aœÁg†®æN²'àÚ4ÅaÞ£#]<,Üçâ¤vC0 nŸÖyý§¨@I ùÑÛÉñ]3yßG¼x¦j‚^&N„²¥‚ Á,euŸÓÈ/ '“I¾ýÛ79=žMm©ù3× ×É'Gw™WkÉ8á¦ÇÞNôz¿€«ê²Qn´ú÷¹èÅýÕéžCòV¶©èËá¯î/2,¼þZ»=†6‰ª‰ÕZÔ†³æ"8”u$2 S]“.–¸Whg¡Ò…YÙ›VX(uhBþh…¨•AößÍÉJCå!ôQ£³xä×¢Ý/ÄƤ­Šûâieá¼ËUrò×>ú9t¼Uöô„š*…gç®—^…£LÚKÀïæFª‡™²eT¨yŒ’øM¹èq`Ù‡šbˆ‹§K°íÿ¨ ·!ÃOÒµób\¢ˆ©Ëv".TZE°w«ÃjXQ¶¤K{˜.ðìºàŽž±€Pyp¿Y-‹7&ߎ¯wî aRŒÂ¼lGCŒ¸ûîœIfû4ñµŽ²_y„¥¤Ú2´ºË:ÎÞR¬UÕ¹ºý¿—™³9*¾”/Is=0 ZNh?$g[ÅÏ0îX7(o¼+òü³r¤2Ì@»©ÛÕüc¡·-8øió×3~ _#z§L¥æ «ßËDXlÝÆ[»@²ûTˆè~MÓ½§¹óò; Íf§·Ï’ÝNY j¼¸¹[B\`ÚYÖ?'ß3¼fuJàB…1Š}›’¿¤Úí²­žåÖcº£oi} ›×-FeµMõ(kò;üKÛÓÖôK’mj„îíÚ„ª,¿Eñß\ÈxàÒ–"$¬¼;n.(?aÇ6ŒoÊ|¨²Ç-“ïõþâûD†¨4ÆÑ êðô 3^¿´›c–ÚáZ«´GlUÞ§œž'¹çÜf“¾Îy EÏ¢¶_GùP¦)A»Ë‚iör"¡“|Í¡ß÷hE7Ô¨ ,´¦½]Q“ÇçÚht»|4a ŸØÑìžÉ¾v÷õZ!ì^§ ÜÃDù&iœÖ#Íç»öÌì騺ºÃ>|Œg‡“Í1žìù›9n:D¢£])ÖÜ&žñLAˆˆäjÀ´H,QÀƒÎ9Þ艒Ež'ŽÑtlžd-,…q°Žëíæ!ŽÁVÙ è1©ë9ñM¬x?g:ÛJùÎ?yš+’¯åÒÌ-\‰ëÿfª‡%Ÿu!€ö*Øß&OžE’ðkÍœ@]Š+!ΨÜ|GÓÃDPDeUxÏíüWê›Ô3…1 €²ôšnZÒ9O2œo@Â(tóaŸŽ}šýÕ5xâ™ß)zõÊ%¹±”·m]â7Ó€5úì´R[2šd©W)‰i} ãERž¡š +‡R¨×Ÿ?®ûôsxêë.¸è×UºgàFÂÃ*Û¿æ™ì&×H)ˆX´dŸÿ9$°‹IÇØ=õrÍÚQP†4ÈuŽÒh!u™‘Ãs÷Ñq²]ð»ox*Yµ!éNþóð©øª’3ÿö!uZ³–ì~n÷atuèkÀC;3ÉýG•7ã{ñœOh°)–ã¤ÙLXMãwV-é(ОtàµNÑ—½_εuüoNx[üN[Ol‡E\¦á¹´ó0Y+Ÿ‘÷÷pЬò†™xjÏ3aééŒß+hy[„&”!nN—™Lz¼M!T­›è÷MŽáS_0Îïà‘#$n¹˜a3Ú2LIؤgò™Ñç0ÿ†úŠZFo“uµ¬.^ÝöçK&à½L䤶Syp¡ÃÓþ;›áéü­LÜ‹ù~}–ã;À¤¦?¯‚ÈY$Õhƒòc.yõ‰oaêFC¬î4iñlx0¦f¯îÈA@Ny¯ÇåFT”Î;ákùG‰mÒÖšºsíuÐÕTkh×doÒù\9¸N7ä`‚rë|lÓ¹Š|ü™8«oùÐ|¹ÿ'ÕGmº( ÒŒIym“šF®ZJõæßîEå…/úúÞuQ¼õ+*¾a{;¹>½ïjÃAo…Fá™o©fqöŽÀ.]fV™wK™x€€Å õêJmœ•ÙC·VúØœPÙ–‹Rê–ƒUŽZÁšŽK:ÂÊõ‡g–¡ªé¨ùuíq&dû†µ™“ ehˆ£{Îð"ða¹>ÕLaÖt§ýÎû¡c÷'Æÿ¶h>"²¨Ógpì~¤É÷Îü€¢/Èá€8à`¡‚†hco¢™€M £ß@\ñ•=‘ôi,^o³ÔîRŽˆl@½*‹€‰Kþ¯-ðjsélÎô§}zˆ~wìÉ4åL®Ç´‡{bÀÎÏ©‹Ø'ü.ÃPÚQ©­ÍcÃsYÍöÉÌrAZÓ\†QahÑxsË vòö0îÙÉ Œä8¸‰±tØJ»Áòã9~í%»ÓRÏå(f#jï.î,¹;(àÕÖr½h(¦ Ö­ ÷/…‚Ø ²Ee×–õú˜Æ<ìe::ªù×ÑÁ–“áÅ3’£d±åcU­9´fvÕè*Ùšö=T2?+1ò^È÷°ùþ®^üwÕ¿ÖÀîñÍæ®­lí—±>ãOu¯/’ÊÄæ÷Rf,öXГ ¡¦ Ì¢ê”xÓtJ²ü^—ôíýá‹;ež†<†kÄ ·2Š G~Ž8OQ®œ¾ŠÚ˜wÜœxøv©-TôÒŠ@ˆ;€aTh ¸ jÅçßñ¢m£|D‚þQÜZ¤ÇEW‰C.ÇMóûhóÞ×–ŽžfMƒ9ª±—ñ+ðf5ÞDï­ÜíAÓ•D.Úwóòtñ$x÷¤Ú+º$B¬^?›?¹dEײµ®e(™ß¡où%AnûMWdàYhØÞ!3ÀF“L˜AV^ûûéúéMÚåNÀ=bOµ´.??vMÓkʆó<}ÓÕëtÙ>³õÑ3†œÐ@×ÜlY¢%9sµ'gH²Ê ߡ-ìM?ö‰V 'à>a(œóøDÿæcµÒÅOƒÔGèVÀb3ë·Um¶9OŽÅá°ffüøOª|rK§–#6ñµ7ájÌQ QQ³ü2.›Œ¤Ö l°>ùª3k Â0§¥+âÜ•U®í?%Ãrác eP-¢®1i´¹lœjFu¾óüáþ=Šá -2v§÷sã©­¢ÂNÉǦ8ë©¢éø¬ÖXow½?EFÂoǸ}p`»q8æ2°®»=,&ûvuû쨬¯õ­ÐíËE‘·€Z—&²SQˆ_…•9ÿlM³&¤ ¼Øè?Z;ˆ•Õšþ;VÒŠÆM&˜ÜmCüÕãƒ_mÌ2æ«‚A oLK0Ž3 À¤ÖOÅý0 ½ ³ýL@£Üe"Íqѳa˜ª’‰ýÛá,M °1Zæ³ÖñPr"Ôÿ4 4—@ì‘)*ìôëØ”'X£UÖºÜ\Êz8Dì2¥.qUõJ· fè2Dz9¦`Õ<Æž ”@Æ>e­›ˆ}…öȵ‡Ç¸W¸N2¦^gÊÓVïäfàý‘JÊHî¶¥ :ãMŸ¹¨ ìóc"'Cb ü³í?1D—´ýÎ=Æû¾ç×ÕéD}ëß[Áøª#xŽ@î½—iÒÕ´‘°Ì¢L *E‡M‰ü?±§oV¿U ÌÀwóÄtŒc¯Nƒ­ÍÚ äÝl7Uã?„Éâ¥DØãÖ£e MäÂUnå—º··áÓ§¡š¬ñ¯ø0K‚À€„!= ±à K»T¿À;·yçÔA 8ÌéD¯ÜßÎvóô|‹R÷ŸH+£ØN‘öˆ©gÏÒ`ص C¤‰C”II²0”ºÛÓŽbߊc£«ÃX}'B· A[0¢Ø ŸK? Óo•Á[‚ 0†Píáš2¨²‡ùúž£œÆyçOW¼ ¿ƒ%ÚÄAg Š÷ím7®v Ž÷,öËnÊ™. 5ÑÍáÂ2|ÿX-Œ&̺w L:q ¦’#»…ïmSåž0摨ŒM[ê\Ìx5gL U9ñMó]—Ø—%WoÁí´FÈH6rã3û{†M+¶¸Š '6.oÛ¢ÎqÉŽD óÜÛØ€9il­Hä0qÅ()ô8zI ¨À9Å ZK?­7:V’q:¯5#öÓ¡–à—…Ï-¡xkÙͰÒS?8qnÍ74%£ùøø°îr×·ú”ÊžÉ.¾‡p.HøÑ}²&ŸÎVÒY§ÿíÃt¹á¤Ê.ÕÿÈÃß™:aËAŸ|öNˆóW¿í ¡Œ žÿÇ?~}w‰º sêݾ”£¨fŸôeÚVÏñVÙy®—oƒàš{Úé!¶;ßÈxÝ—š8þ„¸Š(ÊBðwUÛX h‹!Ã}è» (ì”X ½$ZŒp!‡Ê XÃ~†Û‘Ð5Q'/ Tx/äØó9²¼7 FÇæ³ß®øè¤BT™³ñ È ^(ÄkÇ}šÑrS¬Œ âÓ¶ÛÜdš8Øë…7+¼ÐËù<5'\œÈI7&JÇoe}š—«ë[ñõ 1H¯6ÿçköJÑL½×.(Cʱc@æÿPí:xËE¦ŠJ¸,’¹©¹"Wt-ßµ¾)í{È›@”Ú·£&wtÑ’Šk\NÖ¼-õ]Ïc¼B°š4,¸IÄAþåú¬P+}î3Íy²ð£ûùdEàBÉé/ð@”šL lùk¥Á|.¼3róT.‹šÌ¡ö/öá{;8¬žŒÓwø’iȂ٦bÊÂ"&Ë­Ò }{I7—5áX±ÃYÁ%#f渚'2ˆs±—PÇddiz;&á%f˜Ó“L vÑ÷ä»ëÃç «=û¥¼Ìh‘½‚ CPÛ¡-9<]Бí!åv{Wu×Ù ÖßrjžÓ­Rœh“³QAW„>‹1p#OVx¬ÌŒN:-YkšL ÈŸÄD)OWŠëÉ«o-º‘¹Ž¼B ýñкŠÊ~G”Mø‚Ó-ë…:½1sB³dR3|(nÊ¿†tu匡L©ˆq(–~}9îyM7Žºï…Úö俱• ­Ë¯@¼U¥ÁS|¸tô¶Dí¾Ï©ÃòX›1ÎÕÙžÔ ƒ/J¼®ì3Pi2ñ˜Ó®¹ÆÊPö'åâI÷™¡8ݳ¯D7Ìûø>Nï郶Ψ5iašxÛÆ3êásÀ|ÌMÚô_Åš6â Õ½+T¦¢”àäkhfžvèum:Yû]Rwƒ‰i¾\3¯—4&GÑáê~O?%ž6⡵ÛôæÞ„ýbö«ÁVŽ_MëÂòWQ/¨Õ/='ó0ŠÛmßDŸO,ˆeräÒ\gº{åÊèh°YYæ—åAwôFÆSÐ[þ€­ÇÄÿÐýG}ò;&ý·‚: 'WÏa‚ÈˤÈ.úÿ@ø;Ö!,T%Í `OñFBXt³P¼øCƇ =­„€'攃QiVõ¸«¥úÄ_šÐ#MЙlõëô&dòt Æ[Ïþh.T£'GS“óÁåî'UÓ!¸våú"ñLDfPg6–ÕˆLóov Ðw0› ö·¦ ǹkÔŸ?ð²7:ˆžÏKËýA³Õ—Ó-ÚÝòö#¾Ý³–¾êÎ ½9K¦âU6rcè™â‚xòͶ6©¥ÜvŸ;h2z ëj)¸[©©$z'*8çObÉzÕ@¼"Û=Gv¢+½¶24Sðè3¤/^• ϲ,»˜ïS65_µ&§fÜ@+KââÅ%†îewéËÍ?fÍ«™¦þÏÖ–®Ã‘Ôˆüø+æ¨h\.º„’(8 Pð»!ZOÁ÷ ²(_ÔŠ…ÐÛê\¦çb¤qg ^' Jœ^ë>úÌÚéD½F}ç+À¼ÙÇPZŒ³Äu»v4`©Džv䄌àOJî ŸtÝy€ªqé+Ü:õàB18™a.Û½ƒ’S,0Ѝü™Mõrsô¤Þ‹–m€ç £:R}}W•T°KûÅŽ¡¤CW‚8.³ûscz•W7ò‚ÆòwÍ*Ûê,:ÏÃioúµò õÃ3v =ŽÝvš&áíýLõ_½k#°äºŸîªt}éýª]"×f0+w¡3ß٭˨C1®*ÔnÏáý4ïI4ãö켎ÓHvq¹ñ2…¹ºKF7’lÑæÏƒ—–êa+—Éi©ûϰ«™wàëßP':_Ž\63Î"²™¥&Ä4_û)h”ß!Þ…¾pM‹HÏ0éŠušU˜Bþ‘ØŒ)›CZÆ(¼A {gCl"0çH„ÀjÌ™>ÿŽZ!Y“åÝf6üPéM÷[hDÒ«A¾+¡ C¹ü{hð0úÀm å>ãøNßxYr﯄Öoîmg‚"=B©#ŽŒÓ (OÕ÷gµ=ñ]’d JɆ† P•hJÅ 2 ì(üð?Ö’qÔ𠳎–JB@<"}Â4Û@ݰÆÂÑLÖ7ìò/)ÌÍÉ­'2t¬Ig‰B”0Bº/](gdBI€©a¢ ÚÀß°¶‚" Ã@4Ò™ 4!Åà 12ª¬…T¶Eûp<ˆ,ظ’ …"£!Qb@&„AK2¢d’ÁŠR U¢S"sy…Q†U§ ‡sµßö~Y¤f©@ÕÄs3ꌇ ÆMʋ똋æ7ÄÉn`LCþ‡8x@öU¸ƒÕ0ÈB2dÌ#7l;ýþ9û{wX !N†`ÒXelÂ}¿ëÇ5‚C»`Ræ§Ÿ=tŠ@Z‰ÑÛãžW㚇F¥­ÁßùÇ0dÎËt~7‰·X&)w×px9E–‹©yº6À u¶ À{ü3)†ŒuõÿXÁx¼Uª­§:΀ü§¹uH^…Ì«ÒÌÝÏÂJu÷³Ïì^©P&‘Bt78ßµ (D Àø•á+0Ø÷¼d÷{^ì–¼ì÷ww6Û·>öÞ÷·h{¾ûÓï¾×U—Zû•îëÛc«ïgׯ·y:½éæõëyîî¬ÍË=÷|H™¢zšSý#ÔÚ2bc@ êb4ħ´jcÑOSÉ‘¦jb§êlG Œ†L y02mb`“ÐÂ16‰‰”ð™4ôŒi Ð4ÈÐÈd˜0BOT*¢mSħéš&52žši©à™¥OÆšLɪ{M4=#' CŒÓ&šOFF§•?)à'£§³M 2M¡6šbib©þF1Sð§©é´h#SM“L£É(UCÔSz2SÚ§”ôÓÚQ¦L L£Ôô̔ɴjz1©£FÔ0ÒmO#&”ðÈšM ÔôÓO)§ˆžSÓ&L¦e<šz§êf©áOi4ô§¡¤Úmx$òG”*”Ù'£DÙ ‘‰¦ž‘êe=1“M O$̠ɦ“i¡„§‘¨õ<ÂzOFSji„ÓM2jzdÉ¢zOFM4ÉIèÓ)é4ÍOj ÔÊ<@À)‚U=£M '’xLOLSÅ6AŒ)鉤òžÔžÑ1Ôôi“"~‰?MSLb ™¢Ÿ¦£$ýS2š'#MFõ'¨5?DÉéGµOÔ MG¨ØFIí2PI%   £M5OdÅG´SÙ 2z`ž…3ÔÄžLIæši3Tõ?"m )½SOF¦ zO)å0ÚMOÒŸ©©˜44ÔÌ”ö¢y3@šCjžÒžòdÓ)úiMµG¦)€™û ±<@ĪèPÆbɃ†fÇá 0I2¼xDÄ(ÁYË@ðz+HÄx0‡À  ~è C[ x¨Rìçïü{Œ­SÓÒç+VøopÇ*éþÚkK/@ÁBìÐzu?þ÷â¶ì9}×ÎÁo…j÷–7ØR~ækB¡ý{PT,t$ÎÚ_h“‘Gi(`:ÌEHj¸Á|Þ¸:§p\3tOÏHÊ?LUç×=yÎïö'Ç0ÊìLtY!äši;íÓ…rÓwt¨¥‰í¬c%÷Ñ Áâë­åèÞmª–V<¿+N‰DnzοI'NöÄ7ë²Y{ÙË·Àœ,ôW`;æÃü9Á‘– #ˆ[Ûo ß|!Gváä¡s,½úD6­´3gK³²ô(7ó§ÒÂÛPáxÄ„Õ?4£¥„$“ÐŒ¨Ø¦IH F$#•¸P è0á&A‡ D „'ƒ$  Â6„(œÔ0ô`p00·€¢Hx#'$0< ‘É<AQ@ DôÒŒV ARDG§8… †5A{ÄVD/ît‰J‘Hâ$$Eœa ÂIzc hï#„$„ f{óR8&¥îNëSS<+dœJK8Ë0­6‰ŸŠÓLF0„’šîg^àð„Ž ˜ø¤Ç „Àà“ Žîmðc®Æ]’6jZs ^óSÁͬ¸DÅâh,9½·n+üÑ[G„(àaà pqHô‡¢oÊÉ8Še»iOFHö-Ž‘Ó8}„Œ£;Œ/úÈ  @È*Y,…ua ’ÀŒS$I‡PÈﲄ#EmÝîåÄ ^C$‘ _ˆ,!A°z¸ °Â÷E3ñ}r/ŒÍK…ôl5ßlj¢”÷`޾Ÿ÷t4§Nž™éÏb¾©ÄËÆ:Sñ/ò³™Cf0'ž@’_VÇÔâJCmŸ€¾­«’XÜóý„5,s=ãüþÌMãö<)¾èµ¬õ\l­]ZJŒ¼ŸOÏš0oð6®O2 éæÜÍD%>ß…É¿ŠYMTjb§`eQ¹fju¯8—S‘¡£n23´YqÜbÜÜ+'+ óaâóÇEéC´0½ÿÒXj &f1Êà¬þ!q%ÏxßkyÌÉ`N$»`PPOîÈNjµ´å)¶0<œÄˆObÒ¤{³(¨ßØm9&CÜìÓ\dnÁp2HšT9Awª&¦‚4Æ=•&b¾, õ¦¢êB'’—Yl§äÒú;LCØ ׸ÐÞ•Éö!¸(þúê,þ;‹DNBçCaèx,”‡••‚ÒTa®ÖWý·s ñù_p|9Í9·•޼â)q±=NDŽžiÓ¿{ÃŽü/{û;ÚÏõóç_Õò:^t—ŸŒ§ðôP–­¸l90!™d,„<`ɧ;!Çd ºö5¿’܇bnœ¯6¦ß­›EHßò}æ{Ÿèˆrh–ñÖ‡º¾ÁÜýFÌ]*fä©M$5|i[:ƒÌ‘¿Ž¡«uiœÅ7O,$"6›ão“çÉþ–50u1:ÎÿG˜ý;ÔìFórî<‘Ë_y„ ÛåøAØZdÔù NB ;Œò7 #ñÉhbõ^m,ö;yËö©}¬÷2oîOQIp,'ͼ<ô¡Ý¥~ûg%˜ñ}.à C M}Ȇ®P"eŽó¹‰\[Û­‚v^bÎë1ó“¸éA·¾‰“Pì·…\-ºÿô°“3¿PŽ÷ú.‘&ö‡m-J‚Qè†]÷ƒDL/w AcÚOйá˜wRö!ÖfÎ>è?xg*ªûMßt¶ŒKð«Î›h kÓ"þo@„ÅŽuè÷»mBóKê_#9i¥ØfŸ±¬9"œúk÷/e×@ÖcšcìÖ°¥h rÒ¡ExJöòÚì–á4UŸ'ï;:x8¡q!‡œhX_juR}a^žw Þ Íö767V[+®#682çŸ,cáy§C3Ôƒg®Ï<ø=Ý^ï¸ôÅí[x§¨q„¨Pºúˆ*2ÌËs!î¡;¤t¿÷Kú[´PÃuŸîáÒ¾a÷Û쾩¦JÛGͤbB–þXÞ÷“CŒúL…â“Ãnã£[º"¾UHSÙ†ûwð$¸ð $  ô·J,ÞD™¬öÃÆ2ÐÀÙ)€ÌfaôY 0yM­O’0ßŬ‹Ü•½q\ÜÁ`ˆÂU´“â€iÄ‚ûÇÈÔNžo€|دWO (¶©nȱ™rãÑÍÆz+]uxyg^ú¶ÔU2Y|QsûÉß{|!·ešÓ„X³¶™—|÷›çÕ0¤êÎ@O‰µßUj‹ó$õ½ë£CÕæåì¬B§s÷kd-{ ØñæØ=m(IÀm@š=7€_‰gñÍ ¾§¿uâ^ƒP Î4×aeø£Í¿Ùãñ@ò11S¦Ãí§[Íá‚íÂ?ônÍî?[e­ì¸S«UŽ8*wßVáÌm¨‡-FÆøìÍk ¨ lÈCë)Ž-ÂŒV8¤%¨çóP²Ôjc¥,œ·ØÕn¾Û¸ôÊ5!mlpàùɃ™éŽâêåkø¿Ö¾ïI°:L:08*?ZÄg†K_I;«Ø¦Q'±¶›ŠößÃ9šKC¨Ú'~%úÍ®LÅ㛼L0œßÓ™9ú°ÊÚTÏ9|÷O˜©®¾/+¾–?M˜µ-è–Bùoô¢„™xV}þ ÚÈÅPE±¨Lý5”mqqœâaDì¤â¹d]ñæú!LŽ‚^Á´áW;oÎao¦L¼ÏòóçUj¯TUÁ')Eƒœ&S©T•³àŽõâZšB:òßÛQèÁL—Ý=0ð0WGçKyñPn¬³×•´¦€ûº¹ÌÇ‹¤‡ù é ¢é7†Åº> 9ɘ¤kÂFÐ`ª™¹Ñ×±IëÉqËW¦êB§©'NAÙ²VO©R'ªRs½ªz„ã ‰PpäƒR›€$iG[Â÷ÜN¬Š£hYZf妆Ð#Î~ü€z{HFŽö6öåÀh£‚äç3º°cB‚$:è¯+Ö¼%˜â[Á¤Ç•ö·ÜŒ&ïøáAh5+™WœXã¶]Heâüº8ÒÞàôHpÞõJMÈ¢jCst/ˆž¯ø)PÔš¢Ð ewÄf b›Æ«À¡þÏ7+8«”ôkÛ;8Ìö@?s”©ºqäá”TDvpÁ{×®7&O[ð ·ìÇaÕ–ã¼V91\÷÷T“ò°MelP¡ dþt˜‹ö½‡•;ûj•Q"©âÃé7y×èúäÛnEà­ÚéA\ûM’›$vûâ‹¢A"¥ìÎó)#¾ÇôO !àî?|¶#P3sšìÃzΦÆÍÉ é©mäô)µ*Ììwã^‚ÝUó4ØAw†›ä«„´[uˆ—½9 é„b+Ëày’ËøSw(·íbóë%Ú%s—K3ôìÏ”ù«±ÝŸH'*hþS)úîÏ"õÙp,;°^QgËúô›ÛŠJêPýgQ"o¦È°jžÛêøTô+•'¹F¡*‹Œ2BT5ÃlÙz”ÎoÔ‘n‹`:TVŸ(«o·Ç„‰Ë„·ùuu÷ÎZÝìÎB~pq·}ÿZHògŽuÓõkosðá>E@dïG+Tz–°ùŸ%lü‡ ‘˜)Ø0Ç{wFQ UçŠOó_Ÿ!nÀ¥\å#køÒ†nÈï)tQ-~²§rà°1VJÐZ‚OÃCàÔ–s›…&v˦Ne-Ý¡±¥?SŽS²þsÝcu–­nßt¬Û’hÚ¼4ºZ£ž°ï3ÔVD£^T@q-ôÈÝèÝÈ#¡VÔ^OA…RBžÔÁŠO¸_U4/zα2Ÿa~€•N»('õÓôJ}@I.nÉæ,WÞN¯Xž·£7z惤HìÃÂX¹°)$õÒõÿrˆYš-ê@‡1áë-‘jØÔй×Ò•þ? `T׎y+%„íš³e»Ãø³C ¸ áàJ =ùzù¹—¸¢Ç.Öî»ô‚7áyé/¨yžÅ@–4â|dݾ’ko‹À7p€g ÀèQ˜ú8L*Ä1|£jp_H™¸¶Õø˜aÀ»!ïÏ$eúßmþùíSá¸_7F°5_R,Óÿ´àU©ƒÇ‚ðÔ`‚c¢DlœÔ,ÿòòÜü‚$SXø5âaðŸŸFמ‘îìÒßeùvèÞÝnºåïÕf#^óáá/?»1yr;0ž–d> IcFª8ÏòJ9GÑRYj—ë=Ý G ˆÓC»kÝ ½°¯¸QÅ/ÑàL(œtYàD@fŠ@p ú©Æ·+ “Tÿ™†Ú˜³D<´E eüñïw9n/bzc;6V}x}ëÒHÓC„ñµÄâô}KHqivp½d»-xRå°ç‰[æSˆD T!×vE@¶Û9Y£)3`5±~Ö›»½ßÁEÎ_o„p0Â¥Ùèáî¸ÞvEöK1¶Ñù5xQLõ¯]–ûqèö}KoŸÄÕÛ¨°Wi,°+KîWåÉM·ÕÍ$]¿<Êk!Kíï›>úf#Ú®ÕB€ˈ¡ C¢¶#¼â³[+I ¤Êuá£ï#t÷㜃¤‡ÑSn|¼°³oœ>ò”·‘ñô•.ŸÔŠ–Îê^‰þ‚Ë¢¨0Æúã‘€›çjJò·â®¿fO‹‚‘°À"‡$B @@àÃÒ='ÿ3wéCäèd[=º8ûZ~F° Öî>q0ÂÔŠ…áâÏw0”`$VUm˱ê1 $Õ–°\‰ââyA×þÁ1×Ü–dýÜIÜ•dÃD\vUu4ÂÕšëF"2!¬úâÀÀb@ †Y¯áÝr-ÉCɪ+Ç¥ŽŸ½}?ú= ®1Ììiù¨È.@šrñ‰³˜o³…:úF{Ø|»[–qŒÆ¬­¤ÇíL'T*+$‘£®VLÀÝc£Ýåu PÏKnbUç…Aîoë1ÝÑ0åÊœc4a ?ôtnã\ó3f’¼ãüá2䎕w“×ÊšŒåu@¨¶þ÷¯‚wW—]ß¶˜bLqìcT©]9›“­éè~j–ûÁÕ[ëho{í6·©GUƇ†áA|_íråy¼èø}Öóvº_ƒbDŽØŠöb.ƶÒj ð}J¸/:ŽÕoðþªç›ŒŸé†Õòë¯ÚìlÄå=U'JnË‹^%ÜÕ å…<Ú»ÿ׿es^K%`€ïIcEÚ!”Ž giГñ^ŠÚ‘tyõí@†VÜ«Í2ÝÖíŠ7ØV‰I´Ñj8dæ 0”~ïÚE¢µÖeç”±¡1‚ÂBýfØôè¦?I3R8ÂöfdŸñ:ƒ¢½‰ýp`&E»|‰pÝïD| y\w’ÜÄm`&R‡JF¼áÝÕÁæ½÷Õ=†í@› ^o›¢¨:,ó2sìŸ2úwÔ¹ð¸Vd @ÙÊ@—Á‡î?˜õõf0½ a)ˆô赿K5-Váàhös8=êIÎ&iµÄ]Ï Y*£"Ê®ó—W%¶ÛªÐÎè½ôRwŸýì'¤Åx=ê¿ ®=”õ_.7™ðÇíè¶š jÄØâ*÷ã‹·+ð&McmõcÄ ˆ[@©·Þ7úåý½/-,÷"ÓÿÖ¼Wãʼ”: eÐú—bGÐûÍM˜:M]ª¤ÜíÒkNÚH]ijþèúÌýt%“œ/°Ë¦É¥Õžî 9un®V@ꬫŒâÖ{ÈX¼ˆÎÝU§7ã"¦@„ÓïÝ"Ä´Š1‰NE]OôOJuxÓÉ&Æ>ûïöηï:ÃØƒß.™o°µoK“çÅÃHÖÕû ìÔù†1PÃyP»æÃUÿJØõÞMô4ó?Êo6í¶zÉÒAñˆ]…‰×#®NæfJJk0²n‘w+×L ½w<<㫼WnœéZê$V0Ü¡K_†ÿFsËò9¹Üq–°–sYw³beë£ÖÒEÃz‚#Cþ Ä—^#èªv# ÁldóˆÜqJ.haÞ†ÛCYÏék¡ [&˜CUa¬á.¢÷±xù‚¯#9´ê­?. þÄëÜ KúUBÜcæ>J¥Ïøôݰ¡sïé|¬ü\u‘7¼â"n ï.QἫŠX,]54Ž—–ÇÚÏP#fÎ'Üû/?Hù¸*vj4sóÓ³0XêÀò—%´ÉO´´Ê_xñÅñCŸlÆi.wMö¦« ª—e3_‹„K¦‰7÷¢è_4}8¼'ÕͰ‰Þ;YP}ÙÿÂwa•¼ë/eû&)9 xáô8ÒjôÈ}}WæWxôÅ0%ŸÖr²WÑ1©–½k„ …ûpGj‹Ý˜ÙX${£¶éñÀ Èj·„§w³Í.HI£ó‡(=œ^t.Hg×Ä\Ö<–©oðýÕS 9F»ÿ¢³Ï+Yy® êo×g?{Ey®·× /ì ¦9%6¢æ§-[—k—n ¦d˜%H+ÇD¡£¦OÝ„âô½OáwÂWy«³Ñýab³v¤Ú.#„¡0¸¦sì…Q˜c&çâJWöï2´¹­8¥zõ èǧœœªyß0O%2ÔýÝ© )dŠ:‹çÊB{`CÍ;—#)Vzš}Þzs´f³0Ä=›à?ŠÜ{ôߢAªà»²"ó,ʪ!Û`¢m+c¥GíÅ[)vñà» þà‰ùVÖççæÂ«%œäQãÖV8ñhu6ù½'`Gu» zHÍþ†œõK·~/Ô’ õ²†÷Œx΃`ò‘nßÝÿ0Ù /Ü{¦*g:ÆË£Et¾,®(ÿe‚ zÙäx÷Ùw-sMåÞ 4ûF=õ”§v_¤›m·ðÇoíù>•C#¹,qÕ'Î˜ÆÆïvàÀ]ôýNu®¯ =y„w³Ú¾ ¾CÅÚ?OnŸ9qž°ÐÃ?=~‹2Âz›‚Üg§`±‰-œñ`mf8û—˜›CÎ÷mk 7Ú0òù ƒV[_ BôJ~+*ªûÈúÎì@[-¥¦1¹‰ßé |2ßËÃõb~K°,Ðq%Ý ‹×<ÉdÓ°.Ü¿tïû‡œ£¼£þá¸ÞŒOgÂwòJÂutCCx{pŒØ&-Ð×â\[fJ+lŸ,˜ñ 6âÚÐàÒ­ŸÚþn=WF—ÒSO‹;DíZ8dƒ•?ÿLç ¯¼Ëôd„Öß—Êb{¡‹ÝQ¬U ©uו¯¶ßìÈ"Bˆ'@óv€e—ƒä,‡È™ÙÈÇ“±çßCîÿš0}_\9ÙÑ¡ ÜQ¯/bx@mu«¼ Þáé¿ð:ÒlxŸÌ÷Î?†GgkúsÝkæFx¹@@‹4Oõ¹þüíüff£ ¼k¦DÛ¯jó¹d´ä±™k¬þ8ŒÍØÅß‘p¼L¡ÉkÜÄÚî"Z»>M'ÕnâN8÷ŠÑAÕ<äà`[¤³Ô–5æHLÏä;—ÑjR¯ú»Ú–}CVDugª§K|]MÉHÞ^rsïÒ‘!}A4íÖc’ÝKskëŒÛbǚǛ‰}6;!7*!¼îñ¾FqJ%‘lÖVù´ënã!ÿº Í²¥Æv^¢ŸÛö“ÒW¸ÏÙŠâ_™¨'9xÉÿ“ÒsT%]‘ ô¸ÄŠK^Éu}Ö/b_#Ó ç_œ#rx­'›§tRgµÙÏýLÏêàÅë%ZãlS€_÷¡žS‡=´†ÆùÄnà)à]TTþLX’uh:“›Ü~I§è:qÎ*'k«!¤®Âò»±|²nfïto<0LÙn¯sÄ}¦hžè¦‚9÷…_'#4n I•ª¶t±ÑXœwºÃ˜Û:õÉ:ýiû ûÉLc:;Q»ÐMõ¨¢ ÊvC„ZPÁxÈáxUyÂŽ7[²…m?6¥A;Ȭ⇷:Š•þŸÝÍé1w -s Ø®Ÿ>rìô´^ÝršŸ7¡ þF£ÄÈÈf ypÖRŸˆã ÁkÌÑÐý‘³þË n+‘P[¼XŠþeã&¼Q$ù‡™!)·«MâûÒÛø.Q3œåĸdô ¨È‘A¸¤nk¹´ÿ D;k†UÞ»’¢¸Îužƒ4Ïx²ø @ z›¢¾a‹éŒÔ#ÅtÄ€2¿Ê¡j+ï+Éj$ñüêŠké¨]Ë/d'_§»´¬“O¸pí£ÍêœV£# h§D–5ò«wC`ÙJÄAH‡MªJî2=I×IB”ŽMó1éÍÝÞJ»>ÞØqéjØ`¸b x¶uº€øîU¢\ç»ÓhØÜà›“œ:ËFÊB&¸XæWn‚åÕÇ*h5OÎÀ?¦…’í¥‚¾qÁíÆ˜›™¢ûvš T!Ml]›ãVhú êpan4°¨åy«˜\·âZ€ רÌMy"ÔÉá|ã ¨wøí’‰"®ð‡>ȨìM-?HÀßêÌ©Îm÷¦*b»ÒÊn6Z™uWY¢%‹žöýZ+G%¦aª0)¥ì2~™óSV’ â+³d˜w ߳vWðvŽÏ8ÛÊuJ­‚¾*…—8@•îüô,¶œLÙ=wï„ú µÈëÌŒ¯ßâ…›ìGdëFzn¤SÙ)Vì5M30ùi÷9oøjy_Ec—Ž?<+í™ö+$ø­Jù¸í™¶æMx7ôjœ¨é#~½íý™†MNdÅdèƒÎ‚‡420ÊÓœèD ÷Õ³U ÊB›\¿ú†L::þs 4£ Í+¦Fczàš :§|uËf\€ÛÉÒ1?¤íß!½3g³¹÷lëW}™Ÿi¿ß`ý·ø÷ ù ÑCTíWÄÉ"·Ðò’Dg¤±í˜®¦(b,‹¿0&ùIÓL€üÞð’ Ík,Ú,r9竤X¶d=Šmo k*É‘n˜©ÄsúMU-qSïkóÇ€àD JúvÒ¸xÎØ©G’qâIûÖÒ=’v· Z û5&b•z®é2Ý?Râ·Ã¨)èåZØluö1¥iàa²¯õR<£°[‹æwÔr/CKêâºç¿ömrLY/ŸOçâ‹VŽíXÆû|ü]hª¾Ýd(i4•›g÷™·oè^ŒêDªv 62ºµR+º¢/J=ú.¥é ¾ÿÔÔKã DLæL¥¼|vN¦l¬ß»Iü=½j{2¼ì„`—âi§€¡ƒðk!ʪÇÂYP»W‰ø÷vø7¬Á\1ôÑ9™¨ åÕ$ ùùòˆ·=3›Ô¾{GÁY'ÿâ_Y›¬W’ŽÙ£q -²ÿÚ*ùn•ú›JË>8ÉÖÿ_ÊiÆëÉÚó?þNò‚­{Ñ £Â2­%“éÙ`,2èµ€%ÎLB =ÎïÜLÖßUjc\Pn’Z!>èC]É()IHž®ä^átìE½>™æÖo» ½×û&†Ç³¿/)ÑU}'àË^zgÅõìb%òo†ßJn½4вûª›“óú#ìïJÔƒ0æ~OÂÿ'F×zr¥ÈéÕU4Gk^••*H!Pêø™‡­%yߊîeòø>Lvƒ qXvƲ̛§® µÚÖ °ál&½õ×¹FäRt|XËòàÅûnãýY1¡ÐCdçr»z©vò-Ÿ^צ‡Cí”h%,VïÐ÷{6Ö×Y3R’_'•î2"G¯]Ñðy[sêðpl;¾Ñ‡þ„2ОwKÔ{åŒ|—Dd¥¸p†#i» p#³€£ ÂÚn«l­ÁS/‚¤Â2El²Å§ãÎòŽR T±Yó˜ü¤\¥|ªbÞôÂùo ³púŸZ=¦Ôc,ºÛL-·²$!#kaÍÊ}Ú¹üÇ?€§Ÿ5/(åã¤cû­òï«IkmþIfb¡+£¡J§2˜y;üˆ+Cz¾ ó*=À£ÞÇ·ï12 n1çJ’9¹÷kqL%Gm)Ÿ¾²Å®­ûæò‰Ò0ŽG‹k·éx›¾0Õ%âlps28qg%l~U/ÍK5™oþ%Ò «˜Õédþryη¶k7Ib£áNšœŠz°ÌÊÒz–ªí´{|.ÍCº®"îì* ñw$S… G°€zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.725787017 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe2.dat.0000644016037001603700000004743313607166133035020 0ustar00hutter2hutter200000000000000BZh91AY&SYqãó!ªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà¿{½à÷uíÜÆéwO‹«çÛ×{;´ÓÞó›·›Õ¹½½÷)Ûïw½òYÝÛêÞÜùyç¹nIêÌ_}ç¾¾öz÷{n×§šû¹ñG¾÷®ûï¾*¤ôš xDmLSÓM3JxM0LL§¦¦FM©“G¤a0OÀ§µ4)æ&FG L“фɈÍF L™4Ú“A”ò&›Fšš¨EDS`z ”ñ5=4õM“ІÒmFšhÉ©é”ö€˜˜&Ñ¥?S#L£ÈÈhɈ2a=SÚ˜Ó zhdjmžd ?A=&LCM¨Ñ©å=M’lÄhžª¦2 š˜Œ#M¤Éê`iˆÊz0šzOHÄi†0e=0˜)Lšdž"›Èi¤Ó'¤Þ‘‰•=”ò4Ú “LC4Ð@õ12§å<*TÚM ™0hF†‰µ45<“ò4É’m‚m2˜Ð‚zLšjgŠž˜hd5<&˜j1¥<i‰<¦õ=FI²z“z£ÄLÄÊz3!2`§µ2žMOLªši'†§ÊžÑ‚hÒz0G¨ÔÄÅ<ŒÍ2hdÄžL oM1OSeSdÔÙ=Sɦ§OG©éOhÔÚƒFÂhÔòO&£Ê4òdž˜ÔÉ„Êy3Si22‚I$™õ 2iª{FF©ú›L‰é4OT7’yL4ƒSômô§“SÓÉ hši¦Òf“Ô6¦jcSFF&IúFšzšc)š˜ÑOÈÕ6ž”ôM¨`ô&›TýLSÍ$ôhi¦ŒžQŠ"„ÎAŠã>1q{×Îô`YôtÚÈ“Àã„ེx`»‘ƒŽÈ—&G€½˜pÀÂG¤8ã¬ÆÂ£üúù»‡Ìç¡ œ¯1ï+‘Þ_ê¼Êî—Ý÷fðsU]t佇)˜ÖŸ.&u¢hÃNŽ˜¶GswpšO‘"ƒ–·ž=EÙ| ¹ÙArˆ*ËÔšsªÜwV›yâ+¬1Z’T!‚a ¥‚êÚýq™Ä´:hîgпxHp“Y³1¯͉œI±>TÕjÖù¼xÙÒ**øv×s[ ŸTÏŠ»•, ¶i6!•ÏСsnÙntêü\·‡<yϰ­’˜NdÆæÖ"Ap΄oÇ0VW¼íNî¡Ê©;Y=—Ï4³ã(•AZ\¯ƒ‘e2"®I¯žÜü¼Ý&~³ƒ°†«Øt©jkmp²¿Ê“~ÙÒVçŸøúÑ Fìå¸I! ç €IB54âÜŒ#n-‡£„8[’¨E©¾-Ëâ‚€óMàáàBxcn8'ˆ±Â|00V ñ~ áùp?á@ðyÃeÜq¡,8àÜñŒÈ —2ä<BB&‡.£=q„ƒ40^¾Ãs€I*a’@€Ž  †x†[F,“ìc"À¶l$ ¥KàB†ö\ÄŒQ„mJì8ð³±áb+…½Ë>„'!\`؇ØÏ`«aI)ö-iœ„„„U  †ªhÜ™¨7ævCÊñ-²¹’Dx„)fʉrKHŒ_lchDË*wìñò’æÙ8!os2ˆ±„Æßšöô^ŽgÚ½vq¾®²ñy‰Ê]OQ óËck` òZ±aåy؉¦bT€Ý1øÚx Õz:ä””i<±ðoˬCã$x†eS  À«¸°ã—©måzô5Ö¿É;gVÿtÔ™cØ«®=lP¥ŸFºÐ:î´]Ï›‡ÞÖMÁÀ“Œ3ïNtsºœ¨õ)òe¾îþÚ L@Vû½å|Ö\([÷b621Þ–ž‚NŠ˜>k¬b˜ÕÇÐo4D\Ùrâùmÿ‚HÛ!é3ø…‹hÕl†vQ‡K‹¶1·ß9ñanªBiŽíæ¡AB”„ƒpãUØÝP¿P‚J²ïÐÇë¢#î×—·í¾WΤj¡m&ú|mYlÀ~º”ÃñLÍØʱù`oR)|ÑžasÂŒÝÏ'éhÄ ,¤6Zl)ƒÿáO›psX9’ç²u€¼² ÕŒ’š`–d/V¹Âü%”n¥#· ƒ‘à¸H9ìˆ,ŠF¾23¬…¡n³-[Å@ÁpÄ[ 2=m£ÁŸdCíšoxm¥Å¤†Y:WžÀ³==¶Ž¥ÔÜ5‹˜AÜ$N,8¥Ïv=~7Òô3e–§˜egßÒï®=E/FÖ‹Ò*®¶L˜tÐ/ø$ACÚõ·ëLM’Övá¤"ah.Ë8pé2_Äîo¶Xà<°ÎaâaXðh,´SËŠ%w:9;æ?Ù;´×SŒ$aÈ´Ï+´©ÏA7?ÍËýã<€×quϳ$Ö€ ºO‚únåÛß>ÈaæÓd$tq};ç¶zsüN¡HC~tŒ WŠô þsRkUã;Ð=:‚x¢T|0>[C-ûN,s´d«OÌêi-Uì¿è k4£Õ^·óêú<,mƒ4¼ûò›øËèÚ@Ä‚²º|ªÛ áóºø+M”ÌÀu|ßûï ðÄå¤ïãOòRó‰üvCÐÕFn68xá~Ë‘#„z6½¿Ã”-¼ }8›ÁUhûÍh1¬âwݲćmê%cš€@.OÏÌï󫻨N>!‘z©¬³×µ•m ¨ v_]í7@ç“¿÷šëÖ_>Nµ»!Æj+Þ•qa7A³Ñ[ÆÕ°­I¼‡_´¸)[@ç…r#xìÎ))^¬æ‡Ð„üΤ9eLQg7çu¸÷ë$©ñ‡ONP æX©žÇ\vi€ÌÛÂkpo¡á7¶wžYFÁ®q¾rUgŽªí5ñC®Õ µðG”|Zd <ó8Ÿ’.ë¹_œ—‹í¬V9^j`šUÕÌ<°4zlÁ˜˜&®¹¦Ê~`L€ƒ0[Øíêï|£e¦ÅÅWçw] .Ý(˜ç»?„>Ó…ÿuî´IüHï _„£9í-\~Ѻ•Œ)iaLì?£ƒaó–ªh…Qh¦"äOqÿ¤-x­"É»|vµÏõ£Š J³ðrD½ö ©• ÈXÅéxQcZ–Xœaüä]÷ ·ˆO–ëN‚iÝ'¡ÿ‰²Ãm4@¿ZÜ„m¶•siâÐáM ôšXã)ãbý$í·Fqê)ëÒV_Í'. BÀH&·p2{ÇpŠ­à UGLÃ> ÐÂNÄê,¡¡p›&ù$«%v ò—V¾SI‚NkŒùNá¨åÖHiÕ:ö·Q*È€¹ nÉu!匹î…^ÑÀKÄX V4è;÷ʈ/õ#©° kãŒE=¢„Cúi1å¬ñg- 9¨ÉP2,†c™(À>Æ#‚ªT\¤MٻƧÐê–ÿ)S*‰;ÚÈRãÂ{ƒBô¨¾øx¾`•¾»÷'ÚÅÊ¡ZåÅ‘“ðI‚ƒ¹_àS“ ü;^Ý¿‘»Vw°÷wÁ:`Œ§­÷‚$"óâ¬×©­m-ÈÆðF·)§dÏæéÿ-©“à¾S¬Ôÿ;­ amó©Q¨‰ÞÍXAŒ·ì`F·™ÕU²ñô4²ç h\B;¸qnxõ.#…:Qv$ì+Ù§È õÒ¶¤¡Þ%»«´¨/»1u›ÛÅ”]Bù;-åÎ Õ $…OÂf¦^ČݘŒo¤U%cøÕµ6Îe¥œL;`‡¸_ú|ú#ÅADì¨nÞB~ù[uõ±õ«•9ü+èܶLV¬Ìšï§V݀ŖfeoÏì ŸxtA´ÎK­¼?ßÃ!2ûxÎÄÓÆ0/M@MH[žp¿×®ëE:ÛPTÓìðé®@$ðaÅ4È[Tå¾løjG¨kóLL’¹ƒ675ZNM3 3wyzŸo¨¾Œ™UÏ”(xÐý¯Ê‹nõ‚¼ãªò±[­XaiÑ:ê±”ÇX d¸ç>kŽœ0ÛNX]ä@R†ý;ý_™½XDc7Eª Õ½Z´e†‹ ê¯<0Žwv„^7Q!âûÅR´ÂGB÷a¾ö£¡w½$´pâ5?ß<×îâ­§™^M™®`!{··*%{(²^ÑÖ_rRÅ×,´S óŸ'Ì„1O<ܳșÜÌO[½¿øõ–ª‰ÞsêwøÎ%Õû*ÚÇk–í@ }j:3(j­ƒ‡Tê•á V·/Y‹kn•‘”^‡,VÖ)q© kE…;ôèø;§7¬c‘B‡w@ô[#›’n~ûŸ/¢EúÊ'cI«(l?Úêà¬2h~?fZé?í/åhYè6¨3Wl®ÅôòÎw„Sýp¹a«jU.…J5 ªyEu´ ·øKy¡»ôŸ:3”•è|8\,‡ Åû«P#Ó:FµÚ¡0]ºÜá å>?ÝÞŸgâd6Q?¸ s@k+ý&p?ãg=KºöÅ»À‘œ"ôù(¶röŸ Qs57@’ˆ}‹5 ÖäŽøñìç§4ßáb­:~UÊÆøk,ì›òE¦¼¾?f®óltúòW01fí܈ ÇÆÆÁk{›R,JØ.ê¡QÁåÌÙá·­A´æ]zð”<—ò†Hm‡á‡jÔׯ³ŸÖe²ôU7i…ޏÎãyù}Ùî½Ik³ñ˽ñXOâ»ßË+ÈŸ5ŒŸ©k€è¤ý%|r† Z‹×rñ¤Û Qš |/N»®¾šü¹¦ûü $2à(²™éMx‰1J`Æ"àN3ØÀºF˜îMÃþ+ ߎÔ!Þ‰ÞÑ-âò´cÍ0@»€„û<~9±pð`7ÙÔTùXìPøò®5¶„ù´1½~3ÀbË¡¸Ö âùéY)Ì2±$øÜ» s½¸Pßqg[‘·÷WÁ{óˆ=Jûîv}ÃS…8€:7ÑF²é‰¨%X†rÓè€Hƒ[bßï]Oóy&hk×ω,ERjÔ4c“^rð”Zã€8ÙÌ{ÇÈæå¤ÊC賂ÿ¾ëûAÊ>é;eÂRu–ØÆƒ…’á{/e>°ØáÙ’Â?‹Zè²±˜ÎOO9lȱ”_$yÁ¸÷ÝGQ›°Ä´̲+è‰VœOsä$î€È½4 ÖtO¯¿xLíb˜³¸OM²ÖÉ+ ÖóôݵWÂîçnmSƒÖ?k=ˆ&SÞŸÇÓtr¯ô!ô§YotHبR]èÄHÎäãX^ÐÍR)¨Úœ*·!å•NB»ugØîà@GÌ-cšÙÙ¯ŒB?yÑ œÂÊÓÁà’M k¥’–#ïR½‡ßøhÊ¿çWénmSr"­b¡§ÄÜ·u4KÆt²E~T1vµH,Îî¥MògÛ;Û€öa¯*n…iúBfÒ´Þë™ÛjæÁåäÞx<æüÓjLë2…þUÄé ïô¢V¢C̰@ÑÝøšo•¥Š?æ¬;oÃËïÛͶ38}7[Ì•Fêѯõ.Yo?¾W—2þP¾%É ˜#²€8þÍúYü¸ÎJݵ>µ"õŽ„¤+uñ¦Œï·äÑåeå­5¾5§&K¶ÀõÞÖÖw ­%ƒEfH—“Ö?€_F;Ì8–±3Oñ˜ìR_IcDk(³ œ¦ÆÎØïÿ R.Ù¨XœU€;´íËóÂlõt«]4—×ùÕ_sAÞ®•ÏäH8r&”tŽ„—%£_÷ØÿuJêl—1¬%€Ðgù•cÿœÍ¥ÕûíþJÚ@‘×xFêÛT`ŸÊqë1÷hý$æïÝRœÈ”ìA/¦÷¸| zŽQüÒD ÀË€çÀ½YpÏþáp÷ˆÅ¼y®¾ØužmFJ§ÀªË{?}ôy`fCG¸yÙ; ¸ .6?…¸€ApÜiÃâƒf,E´“­ZžC|a¬²îS`Oïwâ—òÚúÖ™Öƒ fÆŸÒêMDQwßmÝ7˜`o@§M,R¥£–>i=¿˜Úãkº¶q1¶=†œÃöø#rDäy2j^'©²šêXοAŒÔÅm߯y(ß™;6M:nŽ­Ù¤vOt¡bŒ?gA+´,øò«‰ï”ÒÙµCˆäÑöé# >-Ü”–ª²S)ÍÅ#+Ú+É%”\Ȭ=N ÑOؼ€/ç$YØmMxß —f"ÎòiÓípõ ñÅào‚Q}oŠì–íò…ÊXà`øÛÞz¨*RQÙó;¡¥AX”jŸáyÜ»KNú_ãéJ ôY»)OÚÁð^Ç~364}ÕmFª]ý.èßÄWÆ’Äi£’Bðãß#(·¿6>ÿsò>œÕ]ؽ„WOMª³¾ËþžX´¨3!$UäˆÁø]091€c¬6ßZM•ȶÂÚ«ýz1¾)™Ìô ¢T狊¿›³A)¶TP¾(Ûå)d‰óˆÜ%†Qïö$íÆ÷7#!׉.²…(Ùm6ÃNc.ÝB”¥!ÄSóríÓÜ”-¯¦Çã1vy@²î¯"·‰©ûÀÂYg#^/ÕRQã„ÃRwº¸Ñ|N^‹“Zõ-PµæÅp*´eȽîaSý„vg-zŰ4Róy'Œ‚.—æýŒxqÌòµâÞi™ ì.WëÜRMÇbìõöÐö:mž»GIg-ø¾ä~,¹? Êï÷ýl½ÖË– KÏØŠo‡bægÆ„äµeTLKÑýlÕéØÄ¡³£[Þl¦³î¾ÌÈš«œOõý1ôªPèf”F\)i±ÏЧô¶žÅ~Ë!s;>‡$õß^#»èÄ'ù¦Ð:MòoࣙãÑxH¯¨OŸG-og2¾ã“øb¬ùÀÞ‹È›Üo]¢d¦Þ­HöÐpÂᚊ2ÝT¯…À1£Õ-ÁνFËÐU‹ú^=n7–¶Rsúá:0†`*Qr9ûϽæ‘5\{ rl65HWÒœp}$ v·¥Ê>Ny_ÈdªV:$»`qõ÷õÛÉé1`Ž“½ Qt‡K½ÿ>È5h=ÌëSµÜg‰ªŒöÁ £« š Î8˜<2ÐöÙºÁOd£b’¸ª–{'á“,Þ˳xk®'Ú£]þ&¿7^*ç"é¿/EM¬Ž¬*.n¯u@Z¬E­]•TɳF= íF}1¶¨Q_ƒù/Ú&†K1ë繌®Ü­‚p¢f¸š”²M¶‹­€ì"ݛ޶LâșȩòŒNþÑ+@ï÷ÿx¹Ã;Á©ïx)C$ãôà€)ÀÛAuQHß"ïW'cæ¸ByÍL7Á¶`(9IÔmD¾qè]ýúÏuATí¤9áÆãŒÄ8E™èÊøt—Á¼å2RàÑ'$*Ÿ¤“’!™eŸW ½@¸D1šwS¦‘q*Ð^|Y`!|”Eÿ â5L^ñ-dª}$:ØFnêDVÙ«¨†éSD®í&vv)3@ÊK³ò¿Öjº¸°kÌçd£7+ŽñèIuíY5+“æ{hqúGÏÝJÉYuÐØvÍñì„4…y$ÜÊAì³>Ed(HͨxG/,%Ã"G :ð¦ëÇÙn3Û‘æ‡IWÞÀ3R#{»U ²ûœÏõ‰®ýMvšÿÄ]O*!<%!óHøÆ}JÄ×Þ­ã4­HO)bú¨óûКàk?Iߤt{ÄÚÖC±6ÑÆÑp“^ àuQ͹‘À½ãNF´Æ¾ýeX$ÃRo£‡ª @]/†Au]\¯?ªt³=1è?®&DïœÊr'u³ç íP' dN° @°nï˜bZNÝB©Ÿv¢ ¯…”l´ ÔUO¹£ßA°ÛÕϒ㚢PVzÐd{è YºË×ç`Ñi Îàô†ÖKüY­,íâìfˆE­²N`_.LÁد𼞩ÛbƒÖáÞ”äD"ïxZçð£ùíLçYVK\‘biì,_²‰JéäÅØ× =œßO,B~®œž6¹P‘z{ã˜úÔpr¥£ƒxú€Wû¤ˆÎ|¶ïo ~ËÓTêÛ½Ýà°º™S€¬=wáeŠ¿g ™8–ë|EŒI— T¿|ûÂ3g-¨¨¯W‹k2Ëý}IÁm9€Ž‚qΠ ѬVŠêþEÒ™VMº*ÈgiåóáO¹m Ù!eÊFz-•ã”Û$ÉE°^«q,eÿBÓÉ4§îæ!ÒÝoL°cØùÏ*Ð*[jI½>÷Þº+Ë6£“ü"ܹPD=_2v×="Ú™¾ÅÉ”›çO7hs•¬B¦ŠíRØÏ«,‰I ¤ÙÀ¿9·ìXÐY ­ Ñ;¤·G¸»iã1íTUùDXh**G"7s”­ø³|nOUÇ\X%ôv!*¢‹ïÁÑÒ¢+ƒ¸yy…å]*VLNË&=OÚâ2ºwŠÅPpž|#¾×ÌòF¼ŽÐÚ¨/Ç…§T”@~Ì&64åì˜2s`+60j{žSoäô¤¯_éš‚-Ê@²pÿ‚±Äîd“à©Ãw׸¯ÆÈ§ìSø±W±çɳle/Òì¦ÜÚ¯¸‘×·~‡u’Üí$kü*Ú-®û53iÅ­JKÍÓ™*Ì!òÑ‘„Žh]ãÆÓÃöep$Öá·†éC_Í4íã±_§€½¯´[SZ;ÓÁY%‹TFÏRv<²•fh÷E…8ÔS²ô&Âhx±5}Ú¢s‹ìŒ-Z1S6R3Òëã¹TÊꦚΓjí±È‘õË‘P¡¬ç@etúÀ«ÃbPð÷¾|¥Ë߸– d p`‰E6j)qBß“IUvŸ> €áHá–? !ACˆÓ¸~ÚWö yÁIÿîs›‡ô‘´Ã}ÇøBŒþEAshä­‹8ZF³ÓÙöí-¦ŒÉª†OÏ­ÌL›¿ytßKÏŒ/sˆ• .ÿÓaRûô쨽߉°w$.bE{ÈAÉ퉳 –«üª)/ ü5«T»ô¿fêñŽ ½kÛ†¬¢¯`켫s‚¨œzÆ’U’Ǭ]64 é8tÉ#4¾¾dÞ>Ý0Ñzïþ¬;Y`že±ñ’lÒx›·ÅYOs"¨b´µûì¾CÝáwûª¾WWú à@c¹˜Ÿèæ ñ»IYÙaÙé« uh]Jqjf¬·%ïTS#O›Âiµ™ ݬƒT.®¿ñçD>ÀöÞª³´í?ôŸ#Xêfw¹ °8Tú+¬`†<Í/¢Ü1xŒ„©ŽDÙAQx,u¡‹V¥yÄeY„‹?»×E[™õZyUþ/{ÂÕÃÊÜ Æ.Íc15’¡_Ïê£!SáZîܸÌ®m€, '½øû†¶`Û“¥¹B® däg3ÕáûÓQ£š]ƒí0ã†\|ø lêWBzìd-í ós&÷b;{W¿ §Äfˆk¯¼O¢Ô&VùŽpqG y“3÷´LZúçë{òÛЂsS6e+ŸO0ÿfÑï-ç ì,´©­OÇþž2l™ â+~åíÁuY›Å<~Ä”ë#¹è=ßÛD¿Yä‡NÏÓx†³ï®A Ÿ§Ñë7¸=Ïuž‰ÓEÓŽùj+T`fr'šÕž¡Ñð¶žc]Ä—†–æŽ$ °#®¼ólÈÿA¯¨ŸûT ½ÎoXéuêŽò *e}ö¬3›¡ô©ŠgTl¼ÌÁ+-ƒÉë&sEÌ<®û]tÄ™}†o›v=([èIP•]³W"ôɹݹüî5œÓ-Bqd“É6ÀYAICÏ–õîà'u^2Í@ò—ÂvÆA kºº÷ÞéHxì""ò=&ƒjñ÷453Õåæ³,oúr É›êêò ªëÌ{8Æï¨² ’zöAR=fY„€ßЍ¢ùKÆèúbæëu޸즃)pæôW¨ZÃ9R—}Ž{íphЏ^j|æÚˆ/¢/ñ”™ŒU¶q,·¶™7ä# nž¼°\亀l«Né§lâ¹Aõø YöRÀ)P2®|¨6º%úÄÒ9hi!*”ߊŠÐ9ÕpäBHTÇëÞ¿yû*Zm»LÛx'ùɤÿÀ»ÁÆ“lƒ‹çú>À 9÷ž"Q‚Êš÷a–Ä©ð8¡wUéù•WrwûVÑJ»ÈäØC+tþc¥P‘¢Ôq†ˆ•AüáéymœÅe´èÍ¿Ý}¬¡¢  Kãº+òòÝZ²pÜ#.PZ4sš†°±}_ø=‚aæÎOŒEò.¸%ã‰7R€øn q;2@Ò>Žö^RÇC“Ò…Ðq_üKS™lct=ycªù÷£~€Ò “yQ±ŽÝ&¼‹ýõÜ!Ìxdtò*g¯£0#Z»W0ÒÙàÀÉÏ °ožÑ1ŠéÁ|Ãk`&£G|b^õêtñ£ æw@5Pì>ÙQwWkiW΃.åpª{Öà™[¬ÓÊñ5ì¥Y#ŸsD:LNè ^ÐVóU«"„ñÚÏÇEŸönü+Ä“¿Ô÷îýÅ?°eol!Õg–$çhÖàùkî0 hÜŒdYø,üè÷ÞúËÏÎHz¯#ÊF$ÉêYU}¨#ä˜u’(Ñm¦T2׊3â V½‰SšÑÞTÕxÞì%‘¶;–6óW %EŘ³0DzÕ™äˆdTÅëò»õ®ñÜ}aÖÁKÇ…¸ïÄ¢Ÿžáäf©MB©½óz° ×!Êy«½ð[F‹wt°fý5ÞÞ¹ZϦ.-[Š]l—‚DN$‘®@n™••Ñ“ ÿ8·ùUÐ…=½ˆ ÛúŠ8']„™C*hšCt%e4©û¶ýlüN& ¿ßTØ@à¹RÇ«Lb}P'–²%‡.7ñ0’„l¯¬¹Ÿ»¯AqºðmPeÇ‚|ß5âõˆ(X &˜“Ú’¡“ œaË,‹æ"–;; 71Ù[w^Æ^àbmM›37“Z—\s¤0¥¨«Zoû2nÓûGë¼Í!Ôh 滑Çð›Fx…õu›˜&tt¾ FjÀ‹­2€ýÍEPcÄ0šæÝÀC\*þa0r #–ÿñùõÅŽJõ©[G²”¡tX¯mj¦ÀÙÚ5pÄÖ_ô«KËêîÑ}®´K#ßS@nÛ'“¢‚%Ušjë)%ˆŠ$§ÉW˜çh§¶©y£)1Xvç\nLáÌåIÊpeLsž'µ<?N!±÷a:"R[ƈ’7â2¥ÉP¼‹ù±ám§==¸0Õo¿-ª{©¤‘“³-´iÀÂláU¡qްœ~2±2Úy¥Æ±iëx–gƒ÷äÖfë,\Å?ÕkîÝï9ìóï(É¡ò:®ç$»´² ØNÑØí˜}ëÃm_kÌi€¸~ehZ¸%ÆM¹¶iÝFtê•f… ”Ôñ=5ÌO”ài"¹êOÞiàH ±¾³·Û^2à­ÁÉT!N´ÈÌHX˜* (ì'ÿ¬ñÜç »:»CÓdcð=¯&“h °Æží»?Æ ­² ¼ãÖç|LèÌDþkö~ô¨¦ r%ÕV<•BA.aZ…ÿ#üRÅP’ÑR)ÛŽPíºÞv{%_"ÚÔ~¸Ì-ÉõRD,ˆ6$c“øjôûæÖRG,š¡†à±â‰@7M¶+‰Ù¹¼UçÌCô¿»~U”äö €U ’@„v2XYèèbjyôz ®Y§†{3ÛWS9©,}[ú±8‹{ü9µ®ˆi{âjˆ®´î,Qj%mÿðÆåê†L¸†`~`MF"õðN%ú„ƒtüGŽ—Çe­,£}p!W/ê IBa·Â$°¸0£2º¯B_³V¸öyÊ%k–wË~¿&ÍžÇu:™+1IÜ ”õK;9¡„ó’e5’š O z÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþ›ñ¾ùÀsë{·ß{÷/Zîï½Üìîóµê+ÏV®öæï-jû¾÷žû»ïµóß>ëyï£ÝïOk»¹rçw½“ß^ûß[OiÙÍßuö=¦}¾k×gÖPÅ4Ÿ ÕOÉ„ñF!é SõTóLŒ&TÿU=…SÓ%=š˜£TüL¦òL§¦jz5šiéªy˜˜Mý6†€i©†š'©‘ÈÕB*™Á5O`™¦‚dÓSÊzjm=L˜ž„ÍÂ1OÊcCÔÉéüz™OTü˜©é馀hÓi‰¦I± 2i<€4Jm2›Si…&ö‘‘“&ÍC*HiOhL&SÓFÑ1 Ÿ¦…GšžOU?jbhÑé©„SÚ'¡¦I…?)Êl†¦SýÒfM¡14SÀ Äi“54šzSi´ñ'‰Bª¤ü‚=LL§1SòÐF§01c щ‚™”Ù ô0Ò§´“Úe=©´F˜Lž‰ ÍT÷ªŸ‚ž ›ôTÞ ==™ªŸ©å6SÃJ{Tý x6Â(EHFhdb§“0“bbO!©¦ÐÑ5=O2žŒŒFŒjhÓM5<‰§©²Ÿ¢hÂiè˜LÆI‰‚š yO†§¦§Šl§ˆÂzL&'èi’H(žFšž¦z™G¡4Àš4ÚB=LCFÐŒŒšbbdÓOMM¤ÄôLƒSOA3)§¦„õ4z™ ™0h#ÓF›Q“M¦š&F&4ƒjf¦CÆÅŸà‡ÆxÇŒFÕÚj‹«xwõK8á8!‰ðÁW#rD¶í ñ”!‡Ô„0†(î+Væt»æ~L×étsšÏz3IM³àjq<™Ù,Ȫ¡¿ƒžy‰3E;ñ0ÜÇxzæÕ²õæîÇØ¸šg’3qÛy¬“–ô•ÿ?ü¢Y‹äVÔ`õ´ðàÿK̃¦Ëz#\´2!áÛPiÅ6(¡¿`I|hMCqÔ&Øað“ Ê+ˆ'†3÷G0œ5õS½Mr¹<µø|©Ûщ”5ð|öÓ¥=é >8‡v²Ÿ¡u¼Á^4Гc†Ô)¡£Vº8niáZ#’ª‘Jÿ>ì-´š h‡ÿQƒö}·¸;6»û`©ê·+ýj÷º”œÚc솮5Ÿ¬g&;Œ_Ï£Ebd$„ƒ’2 B(¡\&-(‡(á ŸÉ‚äFsÃ1Z|1á2§ 8·?E«ö„n„ !Ø`ØÄ ’¾!I ˜GÈÉŸ¯Õ±‹.aR_1 ŒRô2ü»°©mÜ‚âCŸXîvÒb×Önû€?õCbò#ƒœâ—@ejQ6Z § xEZ¨®B´>vÏÅzAŒÅÈ·åUv0ÕøßÄÆƒÚ€Ð9q:+ñ¡—-–i$ÉܵËsüWì.­w×xY‘ehG‹å~•õ¯sÛ¹Ž5Ùb¯ð6D8À@˜p“ñ*˜îŠ?rëއXòïø¬Nç-¢ØÆi»Éµ†§¿ÆÌSô³ñX8Ð`$Qæ’Ú™¸ß2SN¨†Ñ<1ÑÒ(B+åÙï–ÐÞ/»ºïØ1zÄ™I+sBª8½{Ì^ ¦Î6Cp=É î*ˆ(‘Oã8ð7ŒhhæfÓF.ÇT XeuÔämøw‡ŸçhAn(úù¬®nŠ×÷êã1³¿ªÔ¶ô»è`@ç!ñÖy m“Š/Ö{0:éª:w,Ev)¼@L>ôl G7÷áÝK±×óU#µ1™%óìЃ¹v$¾c¯#“˜œwÈUbS’â ó2  ;/~Xà+•±À¯äî\Ãc=Òö‚mñ§šÍ4SNú]"@¾»½/+¬K>¥y £Óo˜•Ÿ)Ĭþ‘£HUžÍŒ;òâÎÏq)á>Fðϱ\årâ#éÆRj¦”ÁÄÓ˜®(k¥f7—Õ`Ù¶¾ÎŸÍ9[ _“Y¤±ÂQéÞ7#¬erÁA\% \Mâ}È‚ÌÜ9Ñ´3¢O}ÖXwNby‹`|ZQ$‚uPìÔ]—WSŒÜÝ©‰uUœX…Cµl«ÓKbòÙM0|ÄUvž¯çúš’iý‡Œ#0ôi·ÝëIÇu®; ¾}S!>æ‰\dååŽj¢ŒãÜ<}m²\å*ŽYȰZtë±Õ]Ã$¨%}@¥­² câÛJk¸ìG€:žù Ç$.„C…’½©b'ä½ãþ»1Ë¿\wJÝ?5äò³:“8œT‰ç(hª–[Z•”“Ø)Åw°€€¦…Ñ@BÑ…}êQ9ß:†¢¥¼½kõ8ÈHÍ|íï¶B&¥¯¤.Ú ´ð¤”7ÍÏ´DÖ²®ÓÌžÓè¿,‹CÁ®@òÖç,~¦¬ŽñÅõßxf >°Wˆ«h3QÌsft¨{ýŒEœÜ³ó“V­Ý®•-›@ÄÅÇ#¯}ú±·A-PÅFaÝÎçkðH„79»àœÌ7¸ƒú;¬ Ö.lY‘gÚµñdçóÓ¿{k¸ž4B¤úšë¾mß yf^~ËGzøvWŽcž–.ÞQ­Æ Eh*Aµªû~Ä0¼¸YyY懽Â0@Û»”äÞ­Œfñã< ªJìÛNÀÀ]YÕeÒ’¿–À 6Ÿý"ªÖ+¾Ÿþ²”Üdâ×öúò}/~1ïÈÿ2 íÓ*?Fš¡çXSÚÖm=jîR¦Î"Pµ›iibÚ··ø[©o<·¥çiqj©äÍèJ¥(ÙjØ÷Ì¢SÖL§aDÎçƒÜ};e12Åm ^ëê£92„Ú%› ¼VDeûß$SÄ Ød"(IÍÊÿzÏóWƒº¯a…§d>Ø€EL"åâKÇgiˈuoj¬¯E”›Lƒ™´Àº-Bᆨ[ކ}Ũ.c”Û%)t-•ù†²ÛÑVk2»¥=÷$ Ŭv8H¬¨¡ß>T¢Äóö<)ÊÐ˯{’˦¬Ø½¶­½‚ºCEµâË1µynPJe¶>!k<È?‘l‹µ•s_ÀëE3m.އ¹Z½MÀzøFæFeñ\)]*¨ÏTXMrÀ²KW6%‡›$-ÉUABYü…΂çñq ÇÒg ΗÝ«QErPx Mt¢µº Uþ²JÀˆë P6¦“ÚÞ^žÂúŽVã¼M«C@'€ŒYíÑ?‚~ŸÀAƒû˜b7œòŠÈµCÍwQ] #‹üÊhä÷¨ !L:µ}ÀÆËÃIw<à v-Dï’ñ8Ú¬£ãÔ `XYa4ý¿ü5YŸ²yý7ûDÓÚXM£¢‹;5†£y’εWŽlè ”‰k—È·è¼ \ø®«ÈÞ[’Úiż=”…÷£®Y-3†ŒÜÜÝ)W¥VƒŽ&èøïZ ^ÀpCŒ½‘üI‰õBû:ö&ÇrÌ…èíQ6°ÔTwíÖçd 5öÔ‘å-6XðÓµ,ßtØu“j©/É‚îÈØlÍâ#¤š?žþÇÖØü¿41>EÐ.$ªBÚéðuÚëi#N…Š íîO±Ä#CBþo…;ÒÖ–¹Gœ»»7E¸‹f ³  ¿{Ω|IÜ ßµ.P¡W`×Ùâ~Ñmýie'¤œ9¹6‹yÊEçø½ù:õaî\6Ϋ¼Ø ‘áâ[]§QºôqšŸ~»XØ$ÝñÓÐ VFKáVtçíÿ:º££ö» £©¯ñÄ#'&¥‡Y:­“ H[·,ôÏ` ~ ª©D䃒í‹? b ØN{òç* à$sD><ÆYþ«ºÈéç¥**+K fm›]û³ô×\RÓÍOˆÎÅs¢P¤B·$bXBŒXDS9¶op{›8ÓÝK5ruµ£ÏzlC#Ågcª€[gÌw“¿9h6“RýØ;Så²ÛV§Še§Ž¬…ÝçADÛzn©Î»ºíÙjƒöruìy1²¹>îå×ÉM‚+ÙÅä·YúNtå:ŒÜ¤`èߨM¨4z©óô«þd1 = ÈÓGèùUð5 íRµAA£¼lRˆñæ%«†£"@}~ åFîE0,Îܳ'çºRÙZʪÂÞáɰº´L ¬ÅóÆÎãîè>\e¼`D¶o–Kñ¹y°’‹»ýŠ' Á$îKYM5ÓC­æ¿#É@sºµ åç¹á’ÈǾå_V‰xÕ~¥´éð†é'`?‡ØÙu$ wÆÊ„{íÙÞdúØx»îîCŠ„é¾Ëâ–d(`, Áà.hà• ó±uY戴¯pÆ êÔÓ3q³´°[£¥pî;¯¬ä úðe&Æ §Uf‡,þ°_n ½‰­ZùÈÌŸ”¶MûÕžTþ<®Ddÿ›‹ŸSù£ *wžpٹΌu!âþg±k‰‹ËbýÙw•þ2/Å5E!ò7¡â]š¢KÙ•ò*ûë(Éc’xŒãá.Ó¾ ùÉbŠ˜õAä ô2™ÛÝîÏÐoŽ‹¸uÐG¡{’µÍÁ«U¬'VÅU®_¼Cœ¾†åe››L¤lÉÕBaI¾„‹Ýä‘I¢®jó@£T½É=—µ*Ìn…,¤,ŸÙqGyÆ^œV.“%A%r+©páù n1U˶'"KÑ ò'ë±vè&¾3Ü8a ÓIøêH'¨ ‚ ›e… …U:˜èÍv=È;ºÃüu~©¯ÓøR" ^4»TAškJŸïãÌ |óÞsÛuÔÁƽ^'q>€6˜u¥žè²ùg¼¢ôÚ­«Yê¿ù£†g|ææ lŽƒéѱ0‰˜ROùà4´‚ìXÜÏ­I~LäE…ÇWƒª¿”­óXœ­J@³_Ãz ¨;ö(1üЧ:uÕ`™ýè½;‚:¡ýK‚5À˜Š©¢{£VF4˜swfä¬ÔVÊ*ÝrÝv®:%áùêâA¨‰ðe[o·ðö¸ù'[p{¦zXÆ”Ÿ”~ñ–V;Yj¤ŒæIþUx‹†85+9WØEÉã‘´{§s/G‚z<~”†Ð[ ›$Zr}zÓð7Ùê¨1”å#G×ÚÃÒ®—ÏuÝ:ÎIÑI¶°ãË¢¶÷•M!½À´Q™•ße½=‘ÙþKÙµ‚ù"êWžDp‘dVÑ^åy6˜í[É#Æ@õscLƒîíD¦%4Å,Ä·°¶OÞ” #ß»È0»ì 4.ÀrÒÅšs~ŸÙ›»Ê£3 Ʋ5õq݉äL|B ^ÿ5‰Lm­†Ë†{ÊÛáSDœW¢ØåyŸê¦% æÍA…¶s`bB÷1q{·Â‰ÜTÞ½Ö[æðAö¸ˆ/UtÉ1^LeÜI·‘‰WCÜ'ô=÷Ææ®”jUÆMtüf-¥œvd|—ì¶}æöH¯›.à@ Z/÷„ÐÄqˆ¨:ý¯›Ž12ùšlÜßyÅéôëåö?};´•Ôq,TðÁÀµç–ìm] 鉷Ԝc˜­UÒŸx‹¸qm–´.[È{ñ÷t¤´#@}ÀŸ*킜ÖÌP逈¥¯l¯Ñ¶“«kIMÍi‘ÖÃsð x ã“@d `:çÿ+D´†Ü¢t$-odX\xLÇú[!ù6A¾¸ý«NÕÿë´Ö¤Šó޽Y‹„–’Tö ¹à·œm‘ fŽÀ˜áÅQâç^ÖEù›Ibƒ]U¿l¾5möÜÎéo×LÐQ|ÇË®·èЋ75›‚Ÿ@!ræë˜AE<3§*uÑ{ù²¾d£:Žž Ê6ë.ëÙ¾”…Ó©l½of¾:>³MuÅÍÄá}ÎßÇqd)åÊÑ0kÉ £`Wé¾DqKÜGGn—e|/4)´L»†j?·Úœ¡/“ 3·© éSPä%v:17W…qš.~t:öDP©iV>.±³©®ÅÅÿ½ý¶f®«‹ÃìÉCÎ(÷÷UàÒš»LÅi’ð¿'i뇪¬f?$)öîÙfͳ ÒŠþ;qkÞBÀnè>`_C܃úÉ·•Vƒh¨ ®È{ií^4áÚ”oëñÁßò‘4²zÂjªjºÒR›R&0þÈŒ¾MÌ+ð_iNp€ÈL{Pi$ßI6Ævvº£^áýnÁµQù ‰ ¨eC¨3ðχ¼ˆØ“Ìv²¤ëüQ3·f"Áþ£VVU¹þ2;¶À/¬ ";šu\ƒ0¢ 1ª‹"Tj˜©+¼~E°sÈÞÐ ‚ý2oQ[¿ÔW¬½/º/CæÏÜ{­-5«_?šèq¦«bJØâ¯6ðQpî¯_•w—¦Èô!ˆÝØaìð¾^tב—˜'È€¬NIâ<€¾YæžV¶¦O£å =ÔOPÐÝÔžˆqÛïÌm0 7…>§:ÀUlÌKñÛÅ9?XqQàöáa÷d±ùž#ܱ… ,jÄÏ)©·¼=°œ;í»¹ØÒÕŶøXL×ýò!÷êi/ÇA n’ÂÌYOµÑÊ[A~gæôމèH$ú¬4˜¨ØÚ‰‡­ql8–Qäݪ·CÇÊ Xø¯9fþǶҪ\³²jòÙ7’¾ˆÚp!:?ÆéI•µ{W:vöe‹VѶÒ|š®P s‡-3òo|ÍíÎ>Ý7êq,õ0Ý*D³YË&É»9†fI®p~6´ëEâÞkSpÚT;œ§í“ÒW&¯Áɰ78=/º¹ôë”_TŠø} ODwÞN§tµHvfêϦº-÷ p丹ÑǦ¸¾·GþG-?šJuø¥i•^)CŒ:ÈúV _/ö0s¥;xÄÎàÁ"ðps™=íEÄ÷­‹¥„¸„c×÷nzaYGÿÔn 6ív‡~z…è9.Ž!)s6.$Ÿ×¿¼ÍVþ°vÀðœ§ä Ñ3ÝUžÉ@v»©p¼ðqŠÖÍ_ ÇÀ®_øáKºê%Þ­û®õ·¯êt/ŸzsáµG‰#M.³Ïßœ‹~8PlSM=£!ƒr'I0=°j›­Vñòrð NiáÇ|ÌoÐ7Éœ™"‚N£a‰IÞ}×äš~ýõmH~½XW§#rèHÊ•vEÜÌÒ«•¾rwàõ­b³ŠÝÌ`§tˆ™"?r1æ€ø‹¢3 ~u)ª¯rz¡úÜ+Ìï ñýlÔ~H—mäpÛ3±ŸÒ™&ì¹uÐ,m±–„¸N}j¾›øŒJ7·˜ã«c/›nûO‹±FS–CÕñ9æ ›ö ‹VoÃ&–X¬sUè‹Q§-ó>—I:5cyôáÍ´³98Ö¼}t†2¯ïÉÑ{â†ÈÕ¼TÚx~ªåqïì¬ÒZ•Y¾õyþ)¨Å³ŽèPŽÍ/äÝÑ% d—Ò“ä[´Ìo‘«fŒ–æÒLç+õ”…~ô/lMÝG‚lh¿±Üêb$ý ÆŸæd±›jÏçc™Q²‰v@šáeߥ_e׊RÀ ‹Î x’gk ^¹8v/:1æ=iqp(2GÅÁ‡ÜîÔúb1¹ Œv•U¸Y±‰ç²e§ç7U_jÊílM¯‡-”2º8õ¥ŸHô`Þû:v³`°óHiØÄÃW¦à·"%B wH/\‹bH–ÊÁú¥_OÚÅêp¨ÇÎÃàS‘p¤­‡V €@ ¨B…ê­§·@‚ZO0Êéß¼=òB·åUAop’_~à‡á}†}ûSá.áõ¿-°¯büÑ‹|ÜdÕy";Hq©÷pQ¦_S«Çn!–d›ºêÒÍt„»–˯±óLr*güðm]@ˆ}½ynOÕÏ!1­Ã£´ë,O‹Rm…Û£MÛ·±+[ÍSo§[”ar“E`µ4Ïí³ø31éz;J#ºù<²Y„äO®œÝ_yeþå¿ß9i o ´ ƒëíì¿M룣’,qÆí(¶9uEó ˜>PX¡Ãýg§Š©Ô’ëgÞEl±‘›žŽŸùv±I$åuÿ/Øo…5¤z˜†¾üƒ}‘4R='ú¹'e•©‚¿g“çZç{ùßÀd`ßâÆô}ø§¢/°•¾ªKqRrƒOÄ‚ô`ƒÔè mÕ'Ñ¡o¼=z¸ã;¼Þ_ëл¢W–Œ•žLCÈ•þÑ/¿^÷&R‚XˆŒÌâ×Ü~H|Tö"!½&¼ÏºíôÃúé*&ZMŒãâÔØ}]_êÝÆÙz«â%ÛTxv…R²| —$r€Ue1.Õ¸ÉUS±0Ú¾erÏpOÁ­þ©a0é[MÚ•äÔÒ³¶i¼—§M¯dºœ‹s5dÏŸ-r•ÂÖÁ"°væ ïºmŸ{ª´´ò d±n‡¥ó{£éí=ŸÜGõ»âÑÆwÂnò†>!›*\\h˜¦ r|©¹ðlQÆF´`÷z][Ñb0ªb¥:cÄÖa:IJÄÓ};OKî.vòEGËíïJð$>"zb.?Ÿ¾zë²W- î ‹Â«ÛÖ²ê¾÷ Ëx9Åb½B£-Žô¯NµoñŠgŽ—KWŒÎ¾_?qüük‹ZçqŽ0ûö¤ ñýäÞT®ÂZKW(„ôb¸ààæb‡o}ÚýÕ¶dÿáYѽePX¯Hžð D„NAfîm+BxG ô¨øôsÚÊ·«yÏÚ`ý¶‹ô‘–²SÄT®Üíϧ}äu𜾻›dÀÏL{Ãö%$$IÿS;´ð¬Û~ø7j†¼­µAù£Ç–Ã.Û¤¼+íìů™í,HÊ8vÖ¢·ñ¹˜Í‰Ö •‰<¿˜·dê÷xÓ©—Þ—2ê6·ʾÜï3ÞÎÓ,1"l«„só½]¹:óð[ûäTߟáÇЃ®N·šKAIÞÚB¶„Í;k±,)`¯K°½…%7=TìtNŽ2/P&Ù±®>3òaê¸\Âi¤q1R¿ @<íBÉ| ÛQöiœ6åþôx? Õ’þF™w’èD@1ýÓEïB£ kfçÀ[n*†Ñ—5HšôLGØ•_pŽé~²ôˆä«£Â`õ!lºðP†}@ò±…:GXÅ}„þ‡6u« JÞnCÂ>ù “ñIá¸TE†tÑq"Î1uRdè’`?×ÃÀìÉp­IIþe»ÙB¼¤üX_sîËh«Ù¾y»2w ó< " D­,Ê,!QohÛÂz —ƒÊk¶TC4oa Mš»RóW!Þ¿YFrHÝ}Q=M,1ÕÊ5T‘sìqƒþ%~”YFœކuÜMÕÓÖç*4߀­œ&UÉJóû ?q*÷=BLɲХ’6J,ñÿ‡hEš•Á= =žwì·õ°åÿCF1°iü'ÉïŠØ¯QžÃ<»Gõ ª±QÈ^0/ŧF³LZùÇX‹? ±<™¶±­„He«Ê]°+ƒ\Þp½ßû÷efz)ƒ" €Î—Þ£äuv#Û€¿ß/WL&ÀÑ›‰µ’‡'Ì8¹Ï¨hX¤¬¼22Ù €£z—²µñ–ÀB'ø4]a]‰¹ Æò&ÇBwçë¦Îz2`ÏÁ&ކ×åG‘ÜšÖ‚ïMD⑞ýš˜pù ¿N©ç8]•3@i„øÚâ @=¼Mz"BèÇ\l§ÕöïuÉ\¾a«v£ô· ÈȱòedèLrº¯æ²_þmá ù]'5@œ‹m¸|ÍêŸma[ñ‘óG 7·¬ ?.]³†]«;1úé-ùbœŒ ™xGÀèÕælP¶¨)žÎûod,—_¿XµííCzˆf%Wðœðôq“{ÿ§Õ þÙaÐeUX”¯£ öo9»û°Á«O5êàÁ\²Œ¾O‘àL®½á êZšÈ4¹TÕ90À…3k`.ü¾ˆê“§R‡dÓþ«Î^%”ä4_‹žW´Kw}ïþ“ †[‘¾|Rìl×=hßP'ñqr·ÆÍ“ˆƒ¯¹¼±M™Æ4¯J¢¢gµ°ß4{¤ZÑAïÃ+™/ˆíŠõ­ÅÌìl?ÓÓÑx—€uÛJ9n¢Ùž<×–—ÅšÌþ¯áAbå¶¾|×®i£[»l:|q7m›÷¯ª^ŸºD”#|„í½n„ãFÆ÷Tìc§§fºþrïé+1µY‰Œ ÍWÏt€×ÐðŸÚ`løW‚£[+*ýpð`z,=´ÕòöfvŽ4H›×a¡q6SšmE§·¸·ðãí‰#ë5ÚQZŽ´N¥̵Ö/½,ùâ¦l³v‹)ŽµÛ¬ yÖâWlss»ë^h™í0Î(­÷# É–£B+zrI «A¸Žôé»9κAüR †sþ ÿNfmèÛDw+„ç0?¤Ãê„i%nw‰žðª-Ÿ3YyŠLؤܫyJj¦Eíní—°ÍkŠ—JL[l(näØð·ºÀÖÅ[É aѹ[–s´‘bçaÑÇÁÊ >f2ìçÈß”‡òíl“»ÑÖOÎdçSÛ™W¿(ÄØl‘—3ÖÛ1+ûœñ°aYG£•ñV{iúÇ#v5ÝŒ¡_G™Oû&Pyì²p<µ‰Hßp°ÊƒKÕ¾íH%T ÙÜk-MNDÍN`Á£`çzŒ@\:.ìf¬DrA{çÀ[&Ái®=]ï.×c-Í&=·§®r†LäP‡îþT³"ÜÚ1Ì­U?VIü} M§rÉÒNP|=ãc¸ØøËh]šJ*)gÃBë» šŒI÷x ?×·˜”ÇæPšOîYæ‹dqå¾±Öɼƒ.m`½£.®¬~h-64B-8<›NöìmivÅ"T$"õºö½Iš—5YozÊÒ0-!F—_íË“±y‹=1‡îö™‚YÎ܉ Ÿ‡Ý\Îû/a§;ô£BUV„ ÑÁœ1*r“ „dW¶–àVôFèÁ ÑûÙÕ¶ñ°|Š Ò63¿rú¼ê†Ò¸ÐÚˆeÏp½0ø5ØÍ_m{%òò¶ã{ž¸n–;¨ìg…QYFÏ ýæ6KN@@îŽ"Fƒ76;!bvQ:ù4Dk‚÷jóƒã8²@”-j|Mg.¸²û¡Eèäš'þr7Št4K.fƒ¥e‚Ey(º‰ì=’ß¾S¶&•wù¼êUñ&hÆü×:k$ܨ}ÁË¡ëŠsôë»4UtžL%¬l"bÌeSôŒDc6nØÁù-îÏXÒÃÝ3Â$x°¾5¬d~òmSò!¡—ìÍñUÃ*î| 5à ¶y ýFÄOñ>7C£vès?7·0gÿ‹¹"œ(He2ñ]€zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025413607166133031614 xustar0000000000000000112 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz1.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.772788525 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz1.dat.b0000644016037001603700000007062513607166133034765 0ustar00hutter2hutter200000000000000BZh91AY&SY“¦ 6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà8žúήàIUR¢„©(û$ÉÜãëÑê•Ð:NóºÉÛîß=îû)ËowÞãÛ{uÜÙR/užöºx}W®ßVßLž–gM.Ïv[®7ZÚ}¾öÞº»–1¦Ý×ÛËÏI–Ù´+³]îîËZ·k;­›­Íºêèöòï[6nÍvw2qíž×Åë׸ú€]öça©DcHÁ10ddÀ†ƒhɦF!¦™4d2 “L˜&5OɨޒfLŒš4Ѧ4Ó&`†É0LL¨4¥2hh&z@ÓA0ÔôÄi¦zi‰6L ¦F›@&?`hA£ š™0L“ÐÓ&&ˆÚ˜M4ÓÑ¡¡1¡£F¦eSñ T”LL<ÓA6„zLž¦OHÀSi4À<Ò` &hši‘“&FƒSiª~OM44É‘“j›Fš š™ d§² 0Tôò‘“C'©¦Fš™<¨4¤)°j2i“#L…OÓÓCIéªz2SðLÚ©úO)ú©ú'ªzzjy2Hý5§µ)¶<š§©ú)ïJŸ¥7¥?ö”õOÕ?TñOÕÓ&L”ýSòi'¤mª{AAí&ÒžÕ? ¢=Iå?MA€¦&™$ö¦M¢bjŸê2ª~FŒ‘´ÔôjjzyM ¨õOÑÓHýö‰¨ý)äÓ(ðSjmOÒžL‡©é=(ýOJcjjSÊyO ==)²)àPzž ÈP ˆf¨$¤&ˆh 4Ó%IlÖkðÔ>Îx:Ré ˜Ï…D3'þ‘`ŸÀÐÀ0f§8‡ôóBU„0F ¤ s6c–ë%ÛC:C €òE &4Bét¼X4£¬Zè¸ ¼U©õý/½â’ÒL¬ÞâÀdß+Ý9LâXe,µOŸ/}‹¦ÈÇq”ïë+uÔ6%¨Tö+ °–”Euè;'V=ßiIþ—Y›zt©™Èo‡“Î[^”ý¯ëB­„k•¥Ä’„—¢Yr٪Ŕ;z\l§ ö7çÉàÃF]Û7£ßÙï·—ñQð+Z‰%ä·Ç6‹<›jÿ–Ûf@Ô <ÏäÜÙ3Ñ£z[„× Å:æjë²y rR’èÁ6±Uæêˆ}bz )AI,'&k+* *»«©J¢²€w½NØ”¨3*ÁÔý¸¡n" e`3zQlj‡×Á2¤AG¹‚ *Š˜±»DY¿´•eqÇxA H  4DËÜü(¨|t2ãD Ph&IŠ4±…d ?ñhΉ¤¨…Âù¤  ³gÊ"fÁ£”̓|k;…(¢svb–ŠÍ¡hÁ/Þ†`à ¶iŠ!¹€eÇçž‘é—K8cÐ.5a›™Š~àVP€Û!Ä^ÑP=@EPLb"9ÓŽ êý 8šÄ".eŠŸ ‚%ŒÑÁ[Eð…¡^l€¢ [`©hšc ¡Æ&¸( TÙ:c–jzÏG9ñ V‚hýVŽ‚ ç1º"@´ŠÓ}*L¾PEÉ_iÔ¨MÅ’0¡€Ý:µ€Ò%a$ø·S†\pTM„këÕ«ð•¢è²\æÈÈ×è&™Æì÷Í~a¿¤ EÁÑ|‡LÚ;î1‹{÷ËÉ"ÁÈ“¦†JtÁQ§„FY?ªq¼PR¼¹Ë˜øµ»fiÏ Ô—Æ}¡§Ìj¶~]:WTXTÀI\€¡‚¶ áyÒ½o‡ÃbX"¿lÁ³hgxÍ ,©sçÐx{̱2\j,CY¾õªË†"kp‚°ëcŽ…‚õ¡,»ö]ŸCPèvÐ}áœ/''øs¹ž¾k‹Klžxs§jB¢àÍ$LvѬ©Á $À}×PëFŽ»‹ÐFE@QFº˜V¼©Ñòö­+F¤ƒÐ¨t¶ "Ôœ°^ˆl}ýè@L‘sJA’[WË0Ê]<:ÃY\;R2ˆáNbéRvP_ö3´-xòÍd58¡AҞƟyÕCâÏåÓ×7܃†§)‡ÚÔ—`^a‘ò€ªOŒ/˜juÆôá=&Y'‰h®ÀHwFº {{| Má˜Õò}KÊV1æìÈV ¨*‚}\äBî!`Ò]€|E€šŠ-‚g;M˜Hú¥Á¸¥ @Ðl*³«Nu~õå» ½ Ù¦ÍÚÂ.ìá`[xù„ƒ8ôUK<€oBÅÏÁ©]<5ÍqÚ-ß ~m,ð,a* ˆ  hŽjš8ÿŒ1žÿ @3mÐ|Ò% @ˆ]ø<:,‚;oó€àGëò)v÷:)àl˜NÏþÐèÿ72$?.ÝòÀž ¿“Gaºý’äÎ…FËCL“‚º !:3û*æÀ¼­òá­(¡BÞm¨¶”%WÅæ,7åYãã€>ºÙFûKÂFZ-Ѱ„Y6Öëù×" ºx†š2Ö=ÄÐ:’Â鯘=4À÷^Šh÷욣ô Åx1¹÷X‡Ö#« !4%zù‚Kd†Ø¿ÒÖ––‹ñ)Ûý”5½Q²õ¡¹h¨¡ÀCvCÓ‰¥"í"õÐ1 œd˜ø}iÜDò¶ú“ZoìS/ â^sñ¬·³O"|Í¸ŽÆ?ž{¸Ü{>4¡ƒ¢4‰ÊDÉèÌPœDsÓÛˆ×Ôä`uÕN—wAï'[ääþí{\µ} ã­Z¸kÇÌÔZWJV:ƒ‡*>™ô|Þ\Pî€^C4úƒqDÀ©ÙïÊÞx8M_å=e³Uq(ž{%ÝA9O¢L¼^ËrøÖ~?qŨ|Of íQ°™„”/¢™m`œ¯t½f «ø{œ˜o|"fHP‹6^1Îà0ëC‚ׄ8ME¼L†sX郈 :6Y.cGm†ªÒ4vbƒÿÈþ #áík&¿)QîÈåÇLÂDÉÀtõe‹‡Ì(¿€èù×]°×½NW*.ÃÆ?œ¸Ö¢¯Ÿ@ûL aÖä•.Ô‹¶¦‡é7>¹8mM¢Üvå´Û¸îÅ±ØÆÇü5F¿8a8=—µ“mêú¿‚“ÒÙvxnà÷:ƒ`|qÁë¼ D–™¤Ò‘]Q ‘¯Oy £VBõZLbº™uÝ…FÇÀ„SJpîìÇù°5dˆhæÅÑ ÅÚ£ŽYãVY½t¾ù.ø¯¾lw+Á{Ì’¾m¸FŸ0§ž}Ûꔞ¡hêÙB+[¦§\¼BÓÐÎF¬Jëôè•@žrÕÌ=R½Ì].߀õîhÏ5qÆq¡>Cá 7oS ?Áv§ ˜„RáʾæGû•àÄÔ{÷÷ïW–<ƒ'¹OËž8ü 9-'ÜÅÄ·XÁ}“î5âØ]?µo‰Ê{A¾¾(¨—£K—M¶,±`6 rX , Ôâ•{ Mžxb|À÷GÈ M²|†yrQ£Qî¹» ä8ƒz5=&»dñF«ËÕaˆm_•¶ØÙüwnjrÄ1Š `ùs àH§ª®¦GbYæ©Xˆø’þ£`˺¡s½ÒË{OËjöW÷ÿÈKT,´úŸý±–¦ìZ ß‹r ÆV¹X„”Øôš4†!xÁX›¹¼'l>¿ øTî˽éìyä›=NëƒEJ_vfNLI‚°-•‹¿U0ÌiS;5“RÇ<ãh€'Ù9«cF`Ldb#åÈ(c]!o¶g"TÞ8°>ÀeGš«FX5…œÁ Ha/ÁŸ¡Òmv-Ãð„ugH®t¡»Ê)ÖDf]G1E„ÀóVsÍ×ÑD|†t³äÉgØ„£„„.Æãj3f±Ö+€%¶‡CÉZ?=SŸ\¼ÝŒ»¢ðƒÛ¤›~^¥éкº!¢?ãiMßÀ/‡eH@‚P >¿Þ4µ:»ô(`Ürd0ƒ ”×í.)©{ã!ë-˜Û=pà^}Õ¸UDà «ºõNà`â›[„K§ŠB/Ü»HÙài X€ï|Bú7vPøpfªÐ_‚MÐ' àˆ¹§¡´«†øUÜÙXŸàdÒ”$ÅÑ8tC™‰­ì9CÒz`¥°ìòVù–qH´@1–Ð7ÆûT)掋c×gt‡HFuØâì0Ö vZ†(Ét§ÐÙXAˆÁép¥Nä_xJ€Ùq|,¾E¥Ú4!J€J t5r/ׯ¥¨ŠËݪ+úGj律‚ÚUÝxxÏi‰¼SsØÿaÎtT(swA¡7T1ïÁ3ÛÈÿ`µœá¸ß|(JÛPϪgH fít†Êƒµ$ õP©@[FŒ-‹kŠªôˆGõ0ÿZ­Ÿ Á?!$›9Ôwã•™bº~—o×êûaÔ=0×hÖûžñÁUUzÞf N¼þh½SºaQ6L3=œÌë²Úþ£*f„Ø4 œw¢ùâó”èjB ©¥ítýÓV²8ï›3ñ¡úÅ­{Ak·`Ãq6pˆœbŽY+à=@mã¤ÄͰý`%ž_@“°\QNv’€‰à\+æPdD½¦Ìo´"íY$Á…Ŧ˜·aoC.€hð`ÂUœ’øø?P¢ZÇBê¯H/ç]°ÅxQÃä½¾÷9±ìQS w(fE®RA¼’£ªAÑ‘aŒLC'ªü‰‘‹©JmaäÚ ¨KvŒm`—Ñ^\8Á8 ž˜hò·#œœ¸ëz™ 0“z=“ß翌Î$}m»Ed ì„€%™Ù**A¸¿›”ÙÖöòäV«§³Ë¼v~„%äÿèMY–ž†Ûצé2˜*BÑ—áë"¬«ûöž>úûåàP^ ¤Ø=–wÊMG B” Àÿ…«ÚƯM}«ÈºŸÜ2µƒÈ`êr8MˆLZ¢#$Ã(Z§Ó€h… £ý´Ú x1h-E{¹ÅS6AÂñâ Èõ?‘ðE .ˆ*Õ*R-°ùÀÂ0`E6wû»“®.½Êm„1hÄøž<»xôx@ [J|ººØÈ€¯’Ña‰2õŒÚÌ:¡mKÚS?Ä9àéÞÞ¥;ÎK€¹ ¤Ì±û0õêʵy7‚†cƒiƒPSWZxÏx§P®Û„üÝ}½(°Œø©ª ³zš–h–½Š‹uDªÈ=HzŒàû¨·ôÄôŒµêÆênô–~*çžÿ L3<áÄôý}ŸóvJ¿ßå ,Š"ˆÈ)ö",ˆ”ˆ2"ÿ‘¹Ïw“Ül²ßÉ£è¶8ÇU˜æuG/è{îƒ#æñO…~€‘'ÑÓ­‘i$ë7C@6{?%“Gfħš5GÿzŠvJ¼öºmžÙÍp_ÔÞØJò:äp³°ÀiY†VðÓ^ïäª×Ÿ­gi‹|Ö·gW뫚xEãê·Íå3‡ÔÆFWǺ¹ƒઠð^ÌHèýâh‰D:$aX²ÝmIJ<8>Ñ‘¡ò0㦈َÈ)¨r€ãjU+w’1BŒ~fTtÏ€R‹ò*Ÿ:ö)h2c§;Pó®»ÓŽ×¶yÛþQî>,¢Ï…èFnV@9¡ˆŒ—ò©ÏL땲âe–ýü”Rô·¥ÛÃk®  ^îJ}Ä8 P÷.Ÿ—ë'¬ŸZt‡–Çdñ‹wËyäŠQg]ÖÛ!UµÎ|fëƒ$«† áB[* Ì‘cìÉøpćÞÃtïÁx¹Áδ(CN­H?öýr³Í¨ºýÞwg/…ùé*Îûð¸P`ýàEY `¿=æŠ)íg˨Oø(âbG@ž b»É>°fñÒY‚ËC‚öP×, a€†,Ï‹Eœ´îä”ç­@ uÉômï°Q|œ[¥¶Û—ßQÛ¥JIÁ’ÒSöþÔuhÖÚ† OD6˜žÖÑ4!rHÙu=tHg«'ɶŒ|,CTpŠß^Æ_o¶%>°éă¨!ã²Q&|ǧ[©ÊšÊä2ŠÑiRºrÂodIeTRÈŸ½HÈD=ŸðÄý²:2±n±ÖÙuFŒ±ˆFíÈýø“ñÂÉ/>Noã{¢ò/¼çïŠwË›¶¿<˜gÜùŽÔkŸmÒ£ºÒÀ'…QŸäÇ~³psz§Ó7‚àn›3®Ëq%Ùy"M±¥©ùpÒ^åó5…OFð„§¨+¿kÁˆçÿ×õ“‚x`Ipá×Ì:4€0ƒŠÄ?ÙÙŒõ'ã_—¬Q°—B:Ïscj¹)±V×K¥Vº‡'è`çþ×ù­–ÛZI˜à»‘_8¼XÜ“ðâç À¶[E,µu=CŒç¯DÚw(|Xyiø9ë`_ežQî„ÒXg3@q-4:ð.4„>ëÄLÚ—¦ú™¿{Éž'ùoÛ<îVðÍ(_õxáùNÜGðZ[mä0ñ È눊-†`¹Ð @"ç!1ë‚|Ö/ xë —©ñ•²lé]%†¢0Hàrs’cà!MMÃ+ç |ÔáòÍÙ’Œ%ý)…%êd y@VÍñaÛÍ$ Þ†uû:>3‡z-b!4êÌDŸ½ØÖu¸ÞT™¹îf[¥ËÅ›xK†#[ä–!<IJxÍ!¶ÄØÚÛ–‡S¨­×záÐñ‡‹ Z!Ÿò¢¿ƒÃì„‘î¼×Méµõ¶Ã;­sUÌ÷a딓V Û,/™³ßöß ™TŽ,Y‹“`F&pñÅ`€üa:00ó¢èÌjÇÇè},Nà£ÂC#Ý®ÈäM‚FøËFåìÔa–¡wÁ´ -Ïøä”ŸñÚ½ôxÑ‹ð4XÙ¯B]äÇ %@ݲ¨XqÁÇaM ?¬Ê}Ãú½âÒ/žòŸÒî”ÄÝÊà;Œœ×’Ô¿+ì`äñkìN»ò‰!oZÜ•è)OãßG$ÔD]ëFç…ÐVg@ìo>[ N· C ÉΖ ©Í€‹d’[rf\?â1oÉÂ^ª{ÁÒ6Ø~Üä«›,Å#*¦”2P÷Ö‡;Óé`J1ŸXcÙuòŠ)Ñ(&lÔ¬|>‘¯^!Ó(EîOttØU¿N$»ÍzÇa¯FÊHÁ Dthâ#à×à 6Jz¦å€›èƒ("Ü‘€«=‘,Nùrx}0ŸÁ®=14[½€¬’ŸëÚê™üQ)ôeÙ÷7§ø=v2&#­s.î,­œÈ":GrÔ^ ïƒÌyš®¤ó鼦ɯ‰Z×JoÒ—ýD q“!=ÁHƒ öŠ­ªÏb5Oh¿Ž ûâx£ØÚÑ{à4k)hKÔ›ÅP1âMJ"ng«Õ~N¸½E3Áãù9|å=Ìþ&»åâ‘@VП}+äë*|C¶HÏìXÆn%Zýæ9þõ„ÔT”UakŒ>/ð:à¸u;Ff¬žáj=„yöå«y­[H¬a%ñ/v@gœ„¡="” Aûté6»Æ÷²&Zœ™=9Ú…4—ÌE`ý-ÈÆÒ[½ëï.—àŠ›ë4¾ÑáHc£9­ uÄ¢Ú44³ý°Ö}ö: Â[ÀÆÆpXÅã­8>p¸YÊ›¸‡ÕЯ¥™Ð%õË%1<E+^NøeQ,}Æ¿aSÞ’ë-* ~5X˜{Kþ£.ÕĶF˜22¬³4(ÓÒ‚™œø„˜â׃PÁƒ–¨È¥¨ bW3­ïpxcÓVŽ´`ŸŽõ¥:Cóô®@uôº865S“°^å ö¢°à¤AT4#÷4uþ§]CÜ|Óis)¿²•Z`ô:!|à}  á?ÛsáaUz¼ zœO\!AéD¯/È‚]â!i4y–‘Õžzb¤G‰,õiØÞ˜rµëÀ`vÓê†ÖH6¸dÐp#ûÎ>,žôùW>Y C¥9m,oý¸þ¹üàJ+ùÝñk“ÔïJ óžÍQ]ûÄšKóHoi·Ñ~\ë÷㳊Ï=!9ÌÌ6½‚?ÏxhL©e×>ú~“jI<¯›Þ"{gô•m­í-G^ö!ó uäPUUnÚ>!^²/%Å¡i H| H]B¯Ê¶Îãt!½êû{Þµ­Ô¨¹;´oîBþ‡ƒ30L‰«Ð/HÑÄå½™¾Í`D¨ìˆTeµ|= O†¯ œ ¡…pÏ›Fœ VoY³3vŽKÐ$û6øƒý{èrÇ*»ô<ÇTÝsœ×·Kݪ ˆ¤ý•Í‚©ÛE%>¢ÆVˆôN'›Ê¹œ\ýëdÛ­_ˆôq³¼ü¯å r^së¶¡·˜Æ.\>µ<f¬†/‘+×?Љ¹Û™)̺D¦°‘‹hJ«ÎX÷Q•T~þµN» V„q‰  ³2$ÿ¥£Hºï#Ý–=Zq¨ Gsëö2gÝ%«’ÿ÷K—`¢B¬&CXY’—¸›¤f¬œ0!’Aq¨u‚€tæ˜å .ªùŒÅrœñúz7y/n“Óµqk«+öÒ·ó«êÞù7ŠV1Lwó£X|QD—„(ɘ’™žŽk‚5–ZÐÜ é㱉hC°ÊV —ªv/í GPÿ/Mv0“Æ6ÇïYEÄà@Œ–îÙ± Ì<¡°çãÖeïb¼zÓHµä;bXH%ïZvÙv6OßÁ/dóã7’ù^àLÉPs¿ª«Ü ÏyYÑŽgËÏðÄÏÈiˆc?ÌyxÜ ™M=‘†¬˜mvE@ˆOµ«PâÀǃuôÙïÿ`ãFké¬ÉzAÍ‘Ñ<.‰ ôÄ蟑ʯ(’½&À‡ª.®¼³Vc@ÕFÓgwH ®ùóYÛ"UN•£“ÃÐuj"ÆÀö̸ûí«ð|‘˜„Û`¯ bìä´ÆÜ*jÙTcNÌr ¿Îìü~%î|û!5÷]„Úy¶áB+iœzÂ(@´ÇÓû·wÔ‹’•onD;{Å:š d¯vOÜî•KNyÀ#&Ør[?°sã:¨ÓLådå°ŒçŸAµSž×€%ñèÚîmò›_ÒÎ0ë^o^j,††ú]ÆÞ Á.qóÑ’én~í/{VyS¬ê‡—ÕNQÏ–9îä… CâàPw“‹ãq¶”ã§bê³[ç2ä"!çY7*õCòO޹©àü±ºOT±2}¿ž;Ž }ŒäbýÃ0sg_¢l½H:ÿU4 éð/¤Nð`Õ_^i¹ß#ሻŸ©lã+?Ú&§t9œ—ÖÚüå´Jš©oÈV“þ±nyÎ&×_W=ì4#»T(še;”ÓözÜŽFÙËAv¿ðR^´ç…ÆÍ$€Á‚tQ€·‡ýéº:°âê<¸¶³\ɨM1=¸• (´¬Š—…þ¡Œµ‘åß©ÎuùH"`_·y,Ö¡ùiçZ4Kr/]^8ýBo@àarfJ†pu7ojr55µa”Y6tP6%éãÑê2ž<úû-0[³äL:‰¹—Ü·«)µ›ý•å+†ú(I¡ Jæ-ÀŸ‚ïʉ<å”Ð=E6U,â2—¨Z׫Lñ¹×cÂøbþvžV¯«ŽÓVÿ/AõS7úÆI/|1@ø„1Š`¿óºÃñù\íÆâF FìlVYˆU“²:Íé\5nÙãÅPè;÷9ЦaN¹Ë½âQ"W0PaG½ì'… õÑéC!ÓÄ\)7ôÏkÎ#³þ?íðýqºðEwÒ`‰3S8IÚü\RÃÖ´Íà©#NÑÆðÄ‘ðMBûZ;cù{I;‹sóCìí°ø!îJþã­ÃØ…$Ïi &!¾º…ìü‰éXÝ &'Î9ýêˆÛe23jUõÝgð×€_Pœù¸odS.aoëâBdóòfY±ÍšìçsbN±$†Ê×îÊ–ë‹ìõT¨L“#ãª2Øø8§¹&׫}¡ÕzWþF‘à10;wîNwå5V^<0™µä„3&Kó_ý©¨Åòn^io>Ø|3v`þº «t¦EÐö¦ŒàØ‚)ºR£Àïm6H%ŠÇF‹_Øv½ æ´˜ð«®ç»¥ìà‚Ìé?—ý!B½¨ öwP§#ç3CÓ67""áÜØ©ó' Xç/¥{{ ågŠÙºø8MÎãæˆ æY¢RâGÔ}—c„(”õÝíf?t«W°ã@‘xpÚTÞj¦åfî[ÿaGœ¾˜[‹ìk¨oÔò¤‚"èþÌwZlÑiøŒ¼ÈO áãóÍeqÁžûþÒŽOg-¤çF†h³Bž¬ÇŽŽh*Šyÿ•Ìwé¸D¤Š”þ t£1â¤U5?šiÔÌK«Ýu X«òfx5èTKxH&çѺ™ÀL'tÏ‹Š˜§™K+"d6öM¦ÍÐÊyTúÞ¹~‚îj×íèúQJq÷Oãê,=¸e”Î~ã®g Ê@°ói×*k£ ”@–ÁôÅ-%)~‡;ä"P pt£TðåÇ3_IâhˆXÖ¦ÛâÎ>£¸½!@YQ¤ȱarÚð,Ü“ÿM! ]ˆX|i¶þÆR•i!)óë| ³ñd€õÑÓǃ€ðŒÊ.…¦ –Udºõ €ÃÊ™XlÂSÀe3x·5 ’Ž;—õoTy#â=ŒkºàËG½2þu«/ﺾâÚ™ÎU;™¢ 8‚¡±Eµ³&Z²ŸoˆËù°Ý.~†víù‰ív@×S°xUCè ²ß{… PnÂ$ *¤¿ýõðÓhÔãs˜7Ql.’#_“\þÚ† èÓ€Ø ¤_ ¡^ª•ÂÞ^"dÅn»Vu^OßÝÈU¿e…58ýЖ<¦ˆÉ|¼ëïlùè]Ç©l¿õôw@<ßo­"P%¦ü“èÍ'-Q!ÍíÓæ×rñ\+ì‰Î'´N¿YvJHM†ȯ_d¿"o1Š>&”î«žà‚‰¢šwmý·1Þu°a[V‡ÔÆ ¼¦O&‚ÛÿÈÔM{Ñf Èÿg)†W±8®x‹Ÿ‘¶±g¬ Á €".f4/íAá7>îï8?Å((¨á’èñ‹ñ—FeÐ ?uÈ!Ù´N|v›<(ÈðbÝÇP¥×+ú;`4½v—–Ñð(ùÞk½Ç¡5<´‹ƒ O¥™S¦”Ö§² %ˆ˜Iì¼< ²@ƒ5g5}*ô?¯Ø§Ú-§yÞþw¹£û~Ö%Ÿ‡Áê}>bùJñ|‘ÀúPàî†r-ñ[€â?c/¶Òûåå¤z²iKñ%«d<¢B,ÑLï}ÿCI%ƼæhÅð©n«ÁMÓæ¼ÖL¬#xA›×Ì–!k†ÞŤӿ³¼kK¶üt?ÌÁFµÅŒÏ¡MÆŒñóóK(}87b6ÛܳIW¹8úU35öD#Ÿd ‚íVdÙ•e;¯„÷¦¸`²šÖ4®w÷LRýÑ|šH‡À€üé/ÑÇè r ¼µè籠ðNòÁý“ÄlŽ‘} ’’/£mηÁÒâ+N4M=äÆ ÒþêfÕÈÜf¯ àC˜A·TgÉØ‡Y¬MmýtTQs´xþGŽêî°íÀ*lcŽJEºõßaå§Ô YÍr)kÅ“Nn'GI‹jÇ2ì<_Œ'’Â^ÖÖv͘½Ëì»ïNÄMv²¦6"íJñXVøžQÍé€ Üù‘ä˜gˆú Öšf®(–`:ØmA•hß”Èiå@Ç—=–ÉR°ÎŠÎZt›ƒKïC~Ñ?›ÈÜî¿h “¸Ã) ,3P×E Ñlå·•ó]?ð×—¶µpäñ´ÀÙC¹ÔŸKH˜SŸí­Ù«y«jr¯‘‘”ø‘Xˆ¬úÑûf¾ÇÖq±KBJ@À”`#B|_`$@ÃCv%°y#Æì‚”ºEþOì/ÇÃMè uÆ]ÎÎYi^/,Û#î%Àç<9€/&Ô4—n(û½ø÷ÁŠ|.>€ 1üö©o=6ª<È¿YE˜FVò‡Í¬S[þî’ ©ÞÃüæ%£ŽO^PÚ 1&_Jï×ñ환Ù:ÜÏ’ð%'io?Ucð÷º2!àïîcg&öG̾àf¦OøyD婞j`ÃÇ¿ÑÚìÇ囓ÃÇ4h)Ty®'ŒM™‘ª-•$AÚo±³€Î ÑY(v, 0Rp‘Û\¦HS4HR€kÚ»çÅ-:°ôÎ »ÎÚKÊp"]à¼)ì«‹ @aoñŸvêûrŠí2ðã„zH“nûZVÈ»ØV±" ›Êí÷àu úZ‚wÄ6î‡×, î^þ‘Œœ´9wÀáÆÅHï)'±¿U¢?õþ„3$9½ï·á9±§ŠÄFL:›Ô_4ê4€ɼ¦ö~óô5½Š(lqv¼UC:0ÁIô²šeù®oÈä,cN( pa#– |% žÚFð-Å©W¡„:´«¦Ôò',@žÚÀ{ùÃvûdÜ÷S”•c}ZŒÇ>›ð–DKX´ ÙÊ7[°{|oÒ4 -žl¨÷Z3ÖD#9XÄ ! ÉÛÖœãÿ3r2YI"o>‹©œ­–w.cÙ·Ú׊ LÏK£ /þT ×êËqXë#rí¦.¿xù­¤P©i¦pâVÖ\µÿ¥æ wñ»:‘ ê‡ÉYKŽW'úÿzPs ýùñÐt64¥oc˜du7æ.rå÷ãû»"¦À7gÓmÓ€ÔøžÑ©íŽAåmP¶ýJÎmv O$º¦ 6çOv— ¿é1¢<‹- }ëšêáûSÿ¤Ã¶Iì_š,/5ïAíò1®¬Eã= CY]Çg’}’¯;!Ç73R¾õñˆ¡T?ˆaÙ'-…}Rîö _AÒFKW^ @Z^ä?r7mâö‚kæå<ƒÁqöm<+4G³èHqJ44Ÿ´I#ôJs^«_ØF!«˜Ñ)Ÿ¿X~ö5ywØÁ4¤‚ì˜B<À^Z<²Oâ)(j´»¡ôzDÂY-Û£ P $¦¼)oÏpàyÖ„ÐÕjó€õé#O8`ŸÂŒ]„µ½€A‰“÷–_ÙöŸ½7UÇÓ…;2FâfYé¯,6gÜGÚ±âãy¨4Œ(Ù¨„û#½Þ„‰¤míRGå­Œ?’S›-¶¶{x]:éÕuìže8˜ø_ŸJÇ9ZÞÊæëÑœš`ª‚?6²X1q à9Co<¼W òlv½¦ô¾x#Q'{_t]ç’E“wPÖNH¸– Ÿ*Š”›À{6ugØÛ^êÜãôm¢·†ªθ½ʘ#ôÃ5Ïúû^~Üì4Ô*Sé9œÞî"Þ—ªyã­äYÑhXób\=°¿R«‹W1ôw0æI¬·Í1 6˜u)¦q³•i«KUü Іß,m¿ˆþsœ6ŠáJfãѬŠÖ8­`ý*ÛA]}X¦8ïðß_º¾†ÜX7À•FÏâõãøŒê${þ*ÓÒU[÷ÝWm3u$½O<ðÕmÙ× …áz:U "ƒùèДuÙûø&‡wÎÔ/[®çŸ©d¶…}O?azÁ“«o­¼yKGŸ4MÏgÚùÔ|:ïKÛïñª=þmÙfµÓÄã€`- ‹/jU  œʯ®Ø¥Î´QヱŠoH“Sö3 úÐ:»27d’ÖH¸Ù«C©Þ›«ÐÖ|EYÈK½äø²ã{’Çe­ó9[¶õ´ÛÁ®tü;ÎY¦O? éH®ünÙ=¢…Up‚é|·Ûcògq€BäK%NáïÃŽ*7È÷²¯‰DJZ„çÇI2 ¬s¸nº×‹†7t7«IE(=£b ßó•ûXLËöþ'>­IBÐ|]j"h.~¬òðž6SØä¤°Óèù&ìý±†¬ÿb~J 3G3·Z©£äÍìk3|“M5r9,/VÉ™¾–`«œñ«ÚvXÀ?"J'©@ô<îýòÊÀ úoô<ÉB‹×}OüP9Œi”)òOƬ¹Äâ¤v.9ƲÇÓ¢:³/; ›Ó!éì‚!Žä–é°ëòq’^Ûþ‚të?²Ù°³ÁÇö%hìÃa[Â•Ìø°Žñ#·Ý½ 2O oÚÊý›àÓ&ËFmi £jRBpEþ=»z·Ì5š»áIÉákuÏ/®óö6+!ÝÛ G› ÞŠEëˆyÊê—(9¡‡úÀȱ·ò*¤¦ÁBÉ´­õ·»/e¢bÙõ÷²b}tæö)wÛ÷áßïo.žùiô«¨y€gñŠ–ÊôÌ­ (U`…÷މ¡’*+`Ýyí¨‘é9qžV^ìX§©ç^+Ñå …&v/¾|ÄÜùÈ< 5*“ޝ‚ýÛ|”RQžÍŒ}Gd3ÝÑŽ#h_‚&fëá9›{tÍÝC^ÂÖ˜¿÷µ|ðÞ2Ÿ'è hÌ!ئE*ZÓ.¶­x6äÐÅÎ*r¨&õžê«Xп­Æ§ƒ¤–Ä à~@pQšï8¼8¢\ï`B2Kï r‚¯]cñxŸîQXb,_,BíÇyѸ‰zTøÝCË("dMÛª@?*}«›ölà(ùàºzJy…‘׳ƒ7c®½¤ìE=¸°™jzàö1ÈŸ LxeÈ-æfÆ:ü·7Ù>ÅÉ,C†g›áÇü’=¢mML†LȰ=%ý¸w 7^ÅŽÏ%ò„6¨š¸{šÊp¥ÀuI£–Ô6¨Ê¹`Ÿ8ÀòÊon¼‹‚¾4ýêÆãE„d?Âwg‡´Úý¬ )˜Ñî[…Mö½ ÕßÁ8ÉÐ „@¹»<}æ¸ðÎ~[ì”ôçL¼_C-oö¡°úu£÷Ñ6Ò6·ˆœ¿SðÐí3}— ;:“¾?òº¾ ¿~N4çûÆo— äÛ°/“óÇj¶ºž1“W_wÄÛ¬»d&»j¬ot-EµÔ`s©´Š%#4BîTšµ#ÒȨco£æŸ3 <¿‚º”à<ô)©g°ðá´<9W@„*3cëà¸ÚVxý‘cc0u ¬<¤ž“ÙB+H!ŸJg©þÿ©Vˆçn5 ñ…ñoh×Ký£.‹^u™¹˜äJé I:äøRÔrU;h›pF0a`Czmw«3שùT F³–•/¾.`Õ3•žÓ?%©œk…µïò¯®…ù$e â˜(†û¬ø~þ'ï=ÈÕæÝÚÔ¹7Q†Ê©áï?WÐúë¤`¬Æb…÷ÑdceÁ¤ú#ÒÀÒI¤K´kS/˜‹,s}OHÑ™%»m6Gó¹Ã\°5vØ\Wi:&ËïSŒz8'ù1@ä{t´Y|» tWÑýòZ›Ä‚¬Ä-ªØ›wyªøéÄë~x»ÕៗÏô±- ÒEœÊߛڸíÙˆ×İM•‹lÌ~‡ >LX¹n.\EäÔ©˜µƒÑ4P;iímˆ^w+ªû]kü©ý¸eZ†ÖPF3F>ï®:9Iµb±=7ÚøÏ×Rò{ê 6þ£Ý©¡óò†}HÚG<ÓÈ V Ù}[°Ç‡-Àè,ó6zWî3â¨Ñ¯ˆ®P¨x`xO{´¨]À¥•TE‚«cûëÖ2{4€ñT0øÇĶ¥Ú ¨â±ý—:‘Wãƒí¡L´úM96ŒS1Î\•Ÿ!GZ_æ(îUüÓ9À§QL^kÃ]t°ZŠˆ= *¹;ÛœNE|à‘w1ˆþ㛜œ3Át[øŸ&÷ÎKïÿµI8£‘°Û³Ä¦·š°Sæ®^âAJè§ôýœmDC¸B3ÝÛ öSbwe²*¯õî'u©i.4 bÙ¤.4€Ô<\7‰ðË( ýµ*Šf¨Š½¦I’nFƒ¸oÜï‹÷-ߦs™è&T;ÃlKKè§°«OÜ–«j.¨Â—I§%¹E­ób€Ð8–†õ&E×c?öæoqÎÅ?âj?>rÖˆ;6ô)-ú‡›~ùØP`ªŒÀ¢­ûêXnS&w1*f;Nz9÷¢ú¯ŠTuÈ[e*¾"sˆ^RÐ?–‚uÞ ~ ÝY¢Å$‹̽“ú=–æ—/SºªiÈjÌòž1°z(NÜȵõ16 *Ÿ¸M-‘´k¬åE :¶œÈrÿ'çM¼àí«&µ,5 Ç‹ñ1W›±8ü?ߙؘÁl)Š€œ b`,ô~Ld—Zw¥2Å#w_Õ  °í> CÅÂPÛQNµª€eØÓµàûB¹Ww˱üq‘ÀœGµ eÈ-Vv6p!Vd‡Å¹®ïy—Í Úò8d¬¨VtùÊó í¥­îÒ*ý2Zì-T.¨»ÛËYÉžEÍ+‚v>¡òaRØscÛ§ã8¶˜ µÎìD—á ïŒjï—WÓ?ªQˆFFY¿ìIt™c¬o È†ÇäÊÙ"Jk$ò`õ¨ÂÐÄn}¿[×Ìñ=3@ZÍíÈ-{Ü4`ÕL·ÑUâ¢w¹7²h2â{l¸ozûÞO£wªéæyuº'÷oÞýÚ *mfCö9é¶Øõ¯|±ï$92 Ãí£Iྐྵé¥Â´ÓK“öþ^#¥ަ勳ûéßá>Dæ÷W÷™öìð*(ÃHDkç`Û"è8™©ŸÔœ¾#f=¯aø ¦²E~ÏŠO{Ø*“Ý„™wþQV—¬»·ó¹øeˆ@µUùuÔt‘߇@L—ýÜÒŽ-†] _«ÊÒÕïÂȉÓö19~V·Ÿ‹»uÿ<;¢}ÓÇ æ¯†D¥¤«‡Ä×Gw]ÅW«èé» `ãwž}û»;!3™—Ýà·|¿w•—óÙÞ\ïÎ#Z¹>*m 1ô5 _\Ͻlç/øØúÍ÷nÂu,÷ÿ#ˆ{‰Ø “uï÷H—T}cT%ý„ýX4Í¡ü_Sà  ‹íðòÕ¶ƒÎ—Å{”@n2¶‹ðîí/AžZeÃýPÑ™+™%Má‘_‹QAé"æá¯Z9j»º™+„¢}ë&„5žãÕ6¨aL>O»Í…>ÉÚ¡8‰ÂÁ1²w¢†•ؘà[T æªýÎ/׃XIÕ.y3ãæ0zeS¼Åðw oéY9ЬÞö6ãÝáÇÍ«s•ä¶Ý{–IÄž9¾ün6Ÿ3NB.÷s {“CºuqlíLèÑLð@t@.LDóGøÿdÇAñ»må}ÜYLÙr“Õ_…u«£sT…>É­9¡ô£‡*5™#ðÞøðd¹X UDf¬VQM.»H߃óöy ×·AM.ó/½`¥²P·=Õdª"#(×ù¾A3Ïâ¯ý¦R4èê*¡¬°:Oùˆy/N`²èXÛÉͨÄÇÁѼ»Èå°·ý&¥g3Ú¶R+)})3õU¥êXu<07QÊÝn7,´½_g+±Œ’F"Ì‹ZŠb”Z%‘-õ ¤*ðÚÃ,åó=ãïh±Ûµ®ç- iC‘ÏLÉ•Ý7èn5|ã‰?/é¸ú²ãÂn&%N­¨«ùZ”ÏÙÜ3Z?g’öwŸI›%Ü­ #SŠåzÿzÕæÝ5Œ ‹öd3´?Uéš½Þ«âݶãÍÍóeU+ö©•yl ©ã © ¶”Nb]ü¡9¼m1Ô ÚàT{‚ãhNÊL²}U>™Q­4Ãv5اüÔpo‘Õü,¢ þý¯–RåÛ’˜ ðnic4†‰( Pש»œ—èWc)^< µJí]J³õ„¶Å›‹ãlZׇºüeʪU€HKp™Kè—ÍÉTƒ×û0éGÅžq£«¶)¹ÿW¼½·Pê:{<´'Я—½ïÖø Ä”ëRa¸id¶åæqí_ó½G¡ríÛz4Ûp `&}ž§7ŠrÜÚ÷]ßõÇïкÿ«.ûžñm¡!j¬ñÀ梎ôë“!§KßÈèžæÃHÀÜÔbmf`f¤Yžänfä%Ü÷Ì(ò£¼Õé<ø´äµà+4Ö`m¨ß|s©Mœ'Æ ¸+É IsÈî!ŒxÓ¶{W¥æß»îÜlßCŠ@ÚŽV|ÆwË5ƒ^Á> 39Øí²‘šoÙcþ} ”äâMœh$ç·áŒú‘!ëA˜ûS_6}×ÝèýÒ?wÈh ¬`u$@ä`ÍÕqb¸õqÚ,œ¯}+×*xæÜp޹ÃM`.Rƒ‰ø™¤é€è¹<ýZ9¿!Ála{´^oþ;}*µ!ªI[x‹”Ù“  qþqô£˜¿ÌJ^çmgÇJ4Ô*ó<—ïîp|ëï/'èç±x– óoág[Ø>Ï»7ÂÅ ‹àÉë& Å>O‡×ÉÅÔp(«]ª…5“§c ­ :GêŸ4*‚ÇßÅsÞ5Ê­Þ“rd¯Iµžùæ<8K¡ÄfkY}‚Ø7žRA°"[;Áàní…1RwóÌú¼.do€‘Ñ[Z:ª³îÝWXúª‡Ês6u4> W~«±£eñãîv¯û‹‹xN ¬>aiQÞ#詞*aº™î< éÏö6mïAC€|Gü8ì†æÌY¨ãåwkq!™`ƒE•ÐÞ@=?ó"!Ž€[î§Èÿ¸HÅè9¶É[ÜsãŒhÌx‡î(f'Sšõ`î/€ÜX¶Bp¥¬ Ì\½‰}̹N£~ÞR1Îu9 Þq€ ¿(Km›•gžCRA­Nö|`S<‘tÕÆ]€C³Q wk|)Sü±”ÿQF!¯¿Í¤¤šâzÿ‹‡+5H¥VÐ põM2·:}·ìx`u¹«¯õ'¥=.D¯soPhwT픳Bax…á@'Mù5-|¦„BÂëÿƒ<=Ý‘5+~Qõ„zú‰Õ‚Úe/Ç}ï`…š«ál“þ Í‘d äa¿Ì$ãŸI ùX¾ióøúÀà‡æI.éDVuƒð-©­ö†HG²•»C˜n‹?-ÍžB·ák¶ tŠÂªÚÓÄ Áy º$jZà7¶ÓïÂñ¹ÑeîâBÿ9‹ˆ‘¼ËÑóÿ4–ï3„úŸxþÏK?÷_®Y|¶nÍc’£¿¸’B@’@›0Ñ=€¥À”Ø;_Ì‘”£nHò¹ †4Á©æUr¦mf^7tÞî8³o2Ü=½iêç…Yã¸aHƒ5ö@Æ„8:°¬RosrãÅs aÍFèXÝ€i Gf°éŠÎöœ.Ï]Ò4‰Z!ARá²2¾@iSo ÛáÿßöÝ0>øùóAŠÛÞN£.×€sâü÷:§Iü)ÑùÜ.ß½åºMépÆÂ¨GÛ"<€ÿGrPv°=Ü&&ô,ñÚ³¹À è Ý Ì, ­y²QÔDúš®Œ©Ô@îyú"^ˆÀ‹çWË€@nÅ=ˆ·œbq13M¢Àª+Fñ@Ôœü(•” 6B0@+P@ƒP†4zèHn<„V1\b@lˆT@ÎÀŠ” #‰8ÁƒYQ«ƒ(¨ Sn‚ˆ-q„DTãÌ Q‘DKq@,Š sPN;Æ®¤c­¶`ÑßoU1ѽsÈÆÜÇ¥oZ MÓšoˆú-@¯1-a d`¬Uxµª%RdjAêAøäQ3wļÇ·þ€Ê®0V}¨dJ­˜ûdûh»\s¹&…©7[î  þ²«`W¿0[3攤µNÚ‚Pßöÿ/nøî4,t†Ê®´MyÊ* F€¦oü$‘ØòýÁ Òæqq,W›Ä°š2#ª† ÓBàA¨ÚkndO{îÒ™ /R˜¬ˆ±a¶ŸÍíXGÓ#ß%DŸÃ-?ky²#dôò»j·’¤s¾g¹Âv‘¸CŸSS>`m†´ÚU³ïÉj€ §—ž«wÒCjpÿ3b⫾«u'“æÃ¨×‚€',çþ¸$^sÚ´ðŒE=zRZÂHÏ/DOc@ŒnãÿÌPVI”ÖGDlµÀ,±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÏkÛ€Kwtsï”ùïzëɹ÷½Ûo[V¯n6l•·ŸzkÖûÛº§»ß{ãîöï½yyíÇ®ní°wÞîú×vm¾Öêg—žóÙ×»½ï/¾ùPM=&#ÊžÔÉ€#44LžO&š¦§éé0šjx  zTý2`˜&SÍM0™¤4dÍ#)é“LL&Œe0¦iêSÞ“)é´2 4ÐhjmO ÐÈ#T*¤ÓSÍÕ=52ž&¦ýdz “OJž§ž¦'¥³æŠ:ZÍìCQîøU˜'']TZV™×eÙ/•dÉ·m×i‘Ø'ä‹ñ{îéXx^G[V½ì Á¹iPö€…œªÙ{ž5]¦²ù `{7ž¬óþUG]ô™€›Áv«iûò‘¤Ó‘£ !ÃmÏÀ³p½o_ÄüâF8ºÀ–´uè*òϺQ?njc_?7ÇÎ~;‘ æ`" !·©pŽÆk\Ú+&pÑ-BŠiçt¾.1Q5OîK@œG¥Pú•ÝÁ“Îöœ"¨´Ë Ÿ÷&ç­ˆÂøæÁ ÁÎÓŽ|×›ð/F5°•¿m!ÔJ-¢c r­\T'’gõ–©Ø[¶ëøÎf^³möÿcn@fÏÈ SÉ´Øæ$ŽDç—m„½H‚-t}ìþ«ÓÈÿëÔžëG}äw3ää{r|Û¾?{E§Ó¸‚ÅÞÝœÊØ|àZZ—Á :iÝ%ù™&' ì†7ºqï]½1@‰$§³Ê÷XEYc2·/F¿ß°÷$o¹ÈMNïwíàhìq‚¶ÊÛp }–œÏ4—Hœu›Ò«’ý’îš´x&åí­NèòS+Ò½]|>”ß*'µl»"l„? ¡ Ç£;{£é*—äxÿRÎ,Á¥NT9¶Y'ÝÛÛªf WãÞ[ˆ!)ê=•áiSÕXß[ÆÃ’à”Áq[HØÂe,¥ ËHêk¤=tq™†Ú’3¹µuoÄD`1G/vô؆Œ Áü–­–u\¤Æ«µ]Ñ:v È=kî úŸ; ÓW¡G2[dæceò_ªNÈ0Ú!©­Æ3¥ç%A œ}¥{¦TXdHØY¸=­¨Úz¡'dµJwqè¢:À ˆÜõp< ­nß`8“» Ý~ ðŠ ˆ å3Õcðð–$¬v•V 2í̾Ý4¼2¨±¡¨ËïÖ?~]¦°]NæÉz®Ò 0/–ŽèTk@ƒ«¾ccMkFñ˜W½2–L‹Ž©Î@ZG:8ô}:[1s‰£!©ÄÎw“†Í÷ÄÉ…m£ºÄܺHøäwÝäÖôf™§ïÈr^ò1TG%»Ÿ]±ègÏ™|Í‹ÿÀ Åa¯åÚeÒvýn ù¬mð²Oþ8&9Ûu© I‚D8İÀÙ8Å9Â,t››Œ ½’BZõ¬ÄÐPÏØïò^.×­E;ÁNÏ6÷uáÈ·“éªaýö kfý†ŸSÜ3ê¢ð ÇgÖ€âßï‚)î4®Rg%%OÊJù\4 m`*éWfc{£þ|÷¥~O¸ˆªá9h¦Þð/|oYkÑ(¡t}Ó¤´jfRÓ ´û›«êÒwœ¸/  ˆBDþËP u„½ïÚõºÒu̸8&º’O ÓÁkf;öë­7˜®åÜ_?¥òqó«Ç/^ïÁø”Q©‰(éûu°1œï ºhxš!D}§vӄŨdké÷ÕÅYËúElùçPàaƒ;1I© jžÿä'ù#Àì->þ t4‚;‹XÝœLsò;CÚ7®•6‰Ü¯€ E­z½_?Á­|.12!„)OóÅlË:‡“òMH`ì\ÔüœV ܲÌjôw ü\Os+gÇ ê\¹ðœWz8I޶ç‚ÀYà<Æp >Ë!Zõ(·ÖRÈ';4{¢tû×È}=@ÖÏ êca{ýèž–Ú8{@ƒ¾0@Ìí¹É9Ρ4:PŒjöÙF@ ,­¦.Ö;tÏ6ü¹H‹´íÊ;¸,Û g*ñ?ü€š*`7Kô'U™Â´ÝC{‚½Ð^!ÔÀÆÞcuIh@(AãÛýß·•Õ‹QÐ&Ü@eX¡|ÊríkÊ"Êüi[çªø¾£•³K0+)þàL’›?ã{-ë§å·ÌAÂ#~j…Lõ˜&zŨ?GN³¢Ï~GÕ57YïeËø»÷mf ™–ÕÂm/ÄdåFƒ¼ dWXšýû˜û…gÃD#“xóm§½ CÉ3·h·¨ÔdÊ5ìÁ.|H=Úù–v{7˜,¦ªŠ¸·=…:)þ{yÕ ¨cØNq}j3—ìꤒïˆb;T·ì]ÃmC rÉ¿±•K{,ª[Úâ°Ÿü]¸öD=ºÈ‰lˆù_Ç6¨ò90O106Oáǹ1÷#Q÷æä}wÛ~K!-‹«°¦C'´tû¯O‹=k3M¦↡ÁÓ¾]ë'jÖï‹5ÎûòÈ"Ü);ºè8; sÖl–›èLÒhuLZ·/âÔá6iÔçÞÃ^íW'Ÿ·8ÙC† ¼z®§%¥ú=,}pí#¼àé±û€y^~@’—ØÐ›ýq?B­â´ÙDoœi ¢N|µ%!¶î&®ž{‘ªFÿ/ì°j\4å³µ08ƹ#6:¡nHE`¹ÿx´qÜÜÿÞôSoL6E©€* bÿ¿O?]%¶-c˜OÆüӴɬ%œŸ;Icv.šò Èúæ~ü=pÓPûŠFÎX…nT”l»]f>w«P=6ÍSÞ$TõÞ‚@§`<þRý¾îEïôˆô'ód†¯þdÐåmPÄrÙßz]Å˃m.ug®«dða hÆwH¯Y‡Tß:·öVŸâGÕœîT!DŒEü—î›U¨«™€Â¶á¨ì.„¶#ÀU}²''9UëØo¨Ééng—Qó8üD ‚å XòI…:Š2¼bá&Øß~Ãd {IŸ®‹^mf ¿±!…ß.zø-/ ùš`ªÙ¬…Âï_“ŸqáK¡˜¹Ì ¹Ë×v¡Äš¾«¿hM¬§›Üí‡ÌŠæ–”^äækxÔÏ-kJõ¤hQhÎõœ»þÝÍæk"ô>í32gææù½¥ŽÂ¸ÓäD$ÞQSÏ-‡°uýÍñ’Ã`b™UǸqê:wt@E£EÙž[YêÂoÙÉßÄ~¦ž „nŠ\´—á]+ƒ^àš¨Ú¥–'¹—^1`RZÏâF(”ãšÎÂx¤Ôløò²ÿ³ vûÔ¤€ 4çe¼ ýµU.¸4a¨¹Î‚V†v¤cõâw›ÐÙø«:íÓ… 9Äs:ïÈšÎ!ôÊ)éT².ýŽZqW}$!±?Š‹ÄB”Â9Aé7dähâEµ¾u…ÞøŸ´¶ãDX¾RåÓå¸G`™ç­ ÏHƒŠrŽ þ¨u܆ðù2Ø&`ðÁÏhµ»ZË;Vês¦¦vóýš!YXS»¼†ÚÛ_3øÓJ(ò¬ŸµêÝŒ…ìÐÿ ô!1ó‹Ñ–ŠÍ´®"×T%á½Uµ™Ìþ™ÉþëúÁÏSÞu54™¤v„6Ùˆ–J<Žƒß>Ó¯!M-ë—Üua2·sC]DÀ([î)ò1͘–ô5÷´ëxu”•‹XÕêw£çZG*(ì»srôÇžP³mZÙr¾äÉÊVžÿž}_Pzƶöq}óòoÊ„ráÈD'„úeì©®r×ÃNßìM“¯fñ/ñ*z?œf)]É‹eòj„Ü3_{ ÎKþ<äòGZkI7K…x3¡³ÇÇÍ!åæó3/äù¡¹Õ.ÐZV 'Ü (\ý7»LØ–J’¨Ï¤;Ôïò ÏU‡Îºß%XFŽÞ( \­Ç!ÏCRªxŽE™dØÖÎ ß5®ÃÏ"U6:€Q¡ £~PS(!M f¾hìqµ®µ|Þ­þçˆþJ‚i׌Ø=„žbýzðÅé¸,ÉjÑÁ—¼ë+jÕås20ãé;«¶ µ7|-S_æ½²‘óãI: •¿Oº:«+‚Sð¼ï‹qòëvˆ«$£l«tˆ‡ô“ÙhL4í@rÐ`q pRÓ˜ÐØÎ¸³A1pÏÜV\C¿´ñæd˜ÕzX51þD³Ò|î{øO^|œh{ã&Z²Ñ(à¨ddZÉaÜ 3ûäÇZ¥-N24¼1$9+Êóá ˜˜|'ç_óÚtr_ÿlþŠÿƒäþ+Wg‹B$-M´L›ð5àñ»?&‡ÏDG"{Z*‰©gø?32±fg¦ªg_fšÔø,ÿG~Ê-µäd¯TvgkÖÚ E'•ãêüX@åÅàüüÄÈ´ÆDíEˆ¹cº;"î|ølÞiÝP<°YE¸ÛåÒçx½i¬6Ž`©ú±”ïKa«‰ ¢¼Ä]…Ýj…ªVIñ¼¹F÷aOmIÎÊ\À@*r†òÒ²ºÝ¢ëJŸ=eÄØÙµú®í?Í–¿þR˜`Ùÿ-DMÖVª»Î}—ô)5ºŒP¥º—‰ýÏÃfCÚY›š¢“„iù¹ž;~_æS F/m´ÓË:¼Ñ˜d(H¨ÿûL”Æ–"ERäÒC*%ž:»‚3yÇc)A?™Îub,ä Ý3ß§/ A‹ š{P’òb…`8â$——6p©¨ª8ýÊvSC-¸ ³ü”tòY¬‰œ„ÌyÈ@&Ч(A(0²RYï äš&¿TŒÙz9VÏ.SÇF™AÓ«…ŽçP—€w F¤$ÏÿÜ5^ÌÂòÙ3\T Àl}ââùg{ÏÁ?špé"´å„øžà?¨Q>¹ó}•üÔ-=ÖÁj¨Hþ_-s@€ðW¬w01Ù‹ßMä¼õã+17|éüoôÚ‘[⹚+Q‹ž? ¸^^¹˜gÇœ+t}haÓ¨©*¾yü׬ˆ†Ÿ}! ŽÃDÈ„ý¶sÇ“`"oÏ%©"—C¼oS̲sµ è{xáNPÿN6íÐ÷Ì0st8ç¦bXÏd Vódòr.Nó”ᅥÊÐÉb1…2hDnG,Ø+ÌÎ MÒÈËÝaÐ4ŸÓ@ 6€eÂG‰ÁДžð‚~´ÚKîß»µÄvu¯ôµx˜€€(M÷—þn?'•͉÷÷¸ý”¦7`_ŒuÜ Ž5¦Œ §üàBb4ÑöߘóyšâJc5Ü®f‡ÍÃÌÑÔl:9NßÏ\ Yï p/"l8÷ÿ0 ‡3d0÷ÏÔCùÒC8Ô0¸R) „={+áA¶bø ¶ŠàØ<ý`©á͸Ð*?†üI kœ? >1CËYø)¯Mzׂš‹Ñ pÍïÃ| Ü i_~n-IÂç8âuP°Q¦¸!±æ‰ÝÖ+d¼è?Ü•ŸýŠœgÊy«@, ÁО…ºîŸä„Mb­ûÐ Xû§p»™½¶¼Â¬ ÂÔ*u£%Á{Üe‹ña^¾©ÉÁm.xÜ΋YUñeçnÕ€¬÷»¥äv(¥ÂçÏÿ¾]1·*#hËWܦ{öÂýýÆÝnC8µí~'Bk4Ô×…â+÷¥r¹[4Z+›¥í…Ñl²S±cÞñ§} '¤TÿÚ¯Á}‰M‚`d ä €SÜí˜Îÿ|ΜÆãíj›âý–ï::¢4'it˜ÇNm•eš¥ôèQg¥Àa]ÑÍýÕÈ/ׄɓ¯PW„ÃØeŠç²oƒOõ´¤VŠ;qn¤µØÃlîçÙ¾ð†ÄåÉTÕÙÂý:êå¹ðY7 Uf¨%L6°òÔGÝ¡@ðëÔ…ñ”þ~1¤kâKHzÛ«µ•Mš¹,U5»–N®Ÿzéýðzñ;&¸WÖ¹‹ÆW³“küÀèse\Tù7i¾G¿‚˜œ¹ÞÈ긢|¢‰Z,Xß«›ŒŽÓá_q^ŽéßK†òË!Ê{Vƒ—t„ݯG´+zOˆ¿&˜É÷Jî…Ÿ)8ÜÎv ^:¸Å¤qf“°©zÖ¯îÎÓsŠh1[ýQI@î†EJßÒíDiÍ!Ë*Lc  œ8s>5\)Þ}‚פ>•ŠUÑ-3Þ5 ñGÎbŸ®wŠ@¹$&îI&H‹´oí˜Ýgy5êî§óöêx&…wþ¤îšJ6D®2¢%OÆÓöÖ¯‘†¬1ìë(ÿ'ȪNQFXm½äqm£ø °qœ[÷˜¸]Ãü½&àîåpÝåµÌr\Æ×WâÇWý—‚bñ°ˆ¹£Muôò-¾n°^Ö°$9J¥½ÛR]ëÛbu÷c—<‹¨`@§e÷¬cÏY™âT¢¨èh}•°ÍmG{iA|Ór‹8ZƒÆö«ÔÙ‚W)ÊY´Êí1=½>’§tyç·“G«J,lì+¦A¡ƌ¿øéT0Þ7gÞWæ†æ¬[,:C>°®ÃõVÚ$hüþÓ×´W_2«*g¬«)€~#QsáņÊ1ùå^]–qKû°™8¸ÓèReÆ6â8ò…Ôs¿óæ˜ö™šˆäSG\øÝ–sI–ذ¦Ì»ôÄg»•ƒ5jizÁÁz_6¿uÝI\^ˆkÙ]SnÑù´®¾?´yü®ísóß}6Ê£?Ë–$EÀé…ˆ,tæe:Çø’ÿµ:¬(,qÇ"=Må¤ ~¾ ¶ç«>z¤Îbôéˆ)z¶Y6ÞþÕ6DIžIÆÐêù/¹?¡Ç~›U‰°@ ‚TËÒmJ#Èå^h¼Äʱ×$÷¬\œŽŠ†$å˜x°0¬ l\•†É¬á‘‹_,oƒ¹@[à#¦žŒ¶4Ëâ,(HzÎ;¹ÚŸÑ²¸×ëÈ)1ÙÇ¢qí<ג•’ø¡¥}¶ãu𨢥¿O–D„Uóœ‡t¼OÞ¹„Y¹úÊÕVô¿ÇϦi¹ádפzQy!~k›ÇÌËér}Õ4FØVÝ"Zjç³î^Ì}&ùݨ¬Ü¦-B Q~ljâ,:xt€À?¼ã{/YçH-Õ›‡Q–”ë¨õó¾¤ÉùÍ.+yï(j êQ̾ö^QøTFŽ“éyÍÖ¦Á…ƒZŸd[uz@¬àòNvåBVx·ÎMúŒ}™W©•ýæ»^÷pUâ ³ÓTÅ÷o¶ê­èA¶ßÎ{«Ô³=–™ñoø™ ?j V¦-㻤—5½÷@ß+6xá ªÕð;쇅^ÃÜõúv»dG²ÁçH„pþ°ô÷e¡—§<¢isd•&Éi¢ ¾‰ ´ÿžÞî 2<š*PÒŽ!’hB°Cû/ùª—_.æ¥QFÀç¸wŒlnØ¿,w©µÞ@÷|ÝGЫ?ö± ½’(›ßB&2í~øˆ4§FœWc² *0‰¾k7 ùýsYr<µ¯}¹*D _°`Kâã<¿Ãš=¹y¿¹ëGUÃ(Íêxöò Â=bÐêø]Ãüú§?Ó÷ Q\i ßYø¿±üº¦ÑÔNëÛm¾ÇŸ²šn=½¸ÔòŠ]¯ý÷j•±«k{xõ¾žm¦£ÌÍ^a¯°¿”½Y‰³Yf»Tš8K~k±§ˆd«q\\óá+¨§È'3´y <ïŒ~ÖVd«Aãõ:ãш-~T#3ƒû ä}¬ãWt¶#, ‡àTÖ4b°†\m°êÅTBöØ!Ó²½£÷Ë×eŸ‚U=ª!ç/Yà“9‡(ÒÄüi£9“甜@–)ÝjШ»·Ž^ \‹ŒÓF+eƦ†æSÉ̘¦Ï ŸJàî|yž HøûD‰{æý:mÓÓïÿrÒú® roÒz‡‘ÞÉ¥‹Y¿qN“êo:½FTæd h‘X}™\î;Ôì>ðJ`ó”®_ÜYݘÔ7ÈSœÏ·|ioëPdÚ@šò$ÖÇÆ™´åݸûÃômì#çÍÜgw&“¡XÝvD‰/Š=Æ.eÞíÏ”±]V‹ÐøuÎ]¥+Üö7ÛÂßuJÚa•¸3gž!'݇?ÎZF^Ý_¸Z7Þ`_FúYHЦu» ¾¹Ì³ sûÛo›^6ASç•[`Àž”Çi¯‰ Ó˸ãæGüF¶å²±Š»áàŒº7ϱg_/²à†Lp@(ø§vÙÀÿ $5íŸS@¤•kìP#ØñÜÉÌ"­fŠié G+ «u Ó:¯:n¾Š¸o½TWbß5zin»Ðù«?~³>›„’Í%eˆr”hSÝTÉC5ßWÀþïÌå'YÚ¼éª&ƒf%óÒ8?ÎÛûñ_JðÓNÜü &l>I,T?Û´˜´k¤âa,äKD?ÖZ‰]¾$é¼ûWýáÇwO‡×èøRê¾e‚¬i°übÕ}‘ …¿XïÂ/œµJvL•¥–î±^çK{;¼sÂOdÝ}óhSÈ› VÈ…ïç&ÆG„ªD¿Âù¯ñlŽ-µÍÚÕåPK/0`3333/«€œ=à‡ƒëj”UŽüq€LóUR*¥öªW¨¤Ã™êîØ\AtÝÒí€ >ù—ÌxNFGY oR†õ4¦Ðõk ¹½Ì'eCî¨ÓU —€`'?'o,û-¥L|.PˆfªE X» 5‚:Ü8úNa·{HsÖÏ ¾«Âš`a&–¸ª¼Åæ êhY?UÍ5!>¡…Qªb,ÂëihüÏ9¦ô0^ÑŠÖ{[ÓiÅJÑO=e¤8fˆJ˜j*ž†°§¨}2G’°m[±öx‡Ynë7r»"›82ä­ó°©’M·ùî»-üÿ½è—êáv×RP sR©ßÄk´è-ÇûÛ Æ–y'”4ufRÔ¼,ŠJ'aUùÅËÖ·¢atqñ3„–ˆ¼«ÁÐòºùm<Ã׸$NL³(+ áoÚàEÚ¹ó»|æ¹ëå˜MC•,Œ^p!Á7c¸y6XØ´Ðý¤LØQÃ{÷Ý)÷n̳­àd]Måþd æÕmʾš‚Ø]°å=Ä(s=Ô•‹*Ø<ùs@@uÅ1ŸseÀ¢úVèæ~(Ç6ê“#¯Àq™¡^触ßЗë±j5½K×N‰£pdÌÄ,ÇÞr&EƳƒV3ÏJ§à[è[&3"ñ•w<[L¡>L~„^R>ZØ©æ*]3 ã"ü®¼q=üÝGLzu«ö|6ö•‡Ów€Ħj0‘èXáá2•(½“É,`²"k@’N¿€;½;uUá„Ìu=…ÖŒš<0rä­¬Ò :Ξí4AÝþ%ø|ŸçÚ0@ź·Á­Q²‹dƒàÎcˆnš!vº¥y¦çåçù©¶#©zÂ#ÏíÖ„·ÊÖ¿›„^ý |(Žø„ Xò—žæšÁäÊ3>èlC2°×‚‡Ðk·  ¦›· ¼.r¨(Oj¸ŠIÓ`³oö°Ü)Býú‘: P•ÚÉlù;ÑYv³7%¢^MUíR.Â*îMWe÷@=Þ ísiY>¸„r]ìÿbiëì$õéãªí¾•zUpµ9½+Wpõ¢GýöÆMû£z‡ÍuJz=ÿÉs|~ê!ÏÜmÁÌëÅIo8 eú!–wöoÑËÆXP¼VüDîo¥°W\IÂÞ©‡æ¥jÕ>øî~”†¯1¤ç­àÅàfi—Ì=˜»hÀÎòÏÍî~x¿= Ë$r".È |¿Úr¡ë»Ôå­©$iPdM»˜{Ò¯ú˜ìRˆps6ó=\›ª¶~_dŽ3¦¿ÝÀ ñä6-w".ç¶ú+þ"¹×~ Þâ4d¡fÎÒö Ù#²[€ª—ÙˆJåó¬u£ì™š¾Ó‘^‹„|Ç\+úÁŽÂ·vÿ¬§:û½é}§–zJHÐÏÃS ٓ─æi! o·«“œ¯:FéD@€°Ã öÖ•¬]""Ì€µ²mJêx­Õò\r¦~~›¸sU糆¡ƒÔ,›%ºI¯SQkMƒ;mgÕ;ÄE …VÆÖ ÆÝ?4ÿ®¢ß¹)Àñ¿J_”§¡•|xÎêzäÞóK€_­£J÷+<ûÄašbFiÓr4öuÂo‰F8D)6Ü9lÃÖ©ñr] uø²Ìw5UÚÀ£«ë\w"¡¨ƒc^aüÿ$‹¦›O¸‘SجwåV@Ë’‘ö§¯pœ«tÖQìcÛ>½-ößcµúŒäŒ“ñf=Þ›2ºjR¨²è˜BV¿£r¡kŒâ5UZtö:N£hÄl àQRº¥{ç9 8÷rFš¡åå*0Á¸½*§ÇyīدŠK˜Ü ÓH‰D@ðšòªUÙîS3 ‹EÑ™iÓ–ëî{OÀ[f%®.¸>â‚þѸq¾¦ëlë‚BH@${Õñµ¹Ïµœça<š9³ØyêààIHw[üoø»-À>ø0 %Ë$.¦™Æ§Ù•‰½Æek­Ûб:_¿óô’là–ò'ÚD^u'â ˆüïe‹á­ƒÞ5,B§Ú—²±¼ËwNÉ ²_á·Dûå½Éo—pînòæ+O¡ Ö«s“JŸM]Ë»ð‘áœChtª§òñëˆLÝŠ=™A#K(ÏÞ}teTcß kËZCVü]ÉáB@év’èzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.701786245 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v12.dat.bz20000644016037001603700000007213213607166133034201 0ustar00hutter2hutter200000000000000BZh91AY&SY‡õ¬Ý'ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàC=º®ù$¨‘RŠ (¤R¥B¨¤UUJ H@ìÐì >ìŠRÛîݽÚ£=÷_}öÞ+ì}_o[·\÷žê÷}¼ö÷—ØõóoŽmº7Ù°«Úò×{!×§½Ý«Û½÷>òûï¾÷¯'rí¾»×Ýßw½öÞk}ßnwÚí}êûíï—en𓲛lÛÙ-»ž¹÷ß{nîuîÚÌ'ÝšÝl›aM𨵆‡u³“ï}¢Pˆ¾i÷ ªA©‚bi€ŒF6CL“ÓL¦ÄC*~SôЛL„ô4ÓM dõ y©èi6šbɦše6LMŒFÒayM0C#FL†”U4fƒ@112›SÄ4ÒzhšõO&i“&†Å==O@0&ÐCL2d ˆa1 4i=Êf)¦M21©´##Ñ)‰èÒƒ*¢c@4цšOE?@5= ‚§âe=¡6ƒAL&i•¹\¬[MÞã¤ÙÂfº–kÊqÄín¬[°½[Öh/c|ý\vÚNáÛmâ´×^À=§Dí9’^f¸tl ù†ßTB¯W[ÕÌ;Ï3¬|¼]~|óGZ•ƒâÒ¶SÓÛàÈjé7Í×­²nÓlQn s8I,yBZÌ Ja})G‚æ€Åáäáª4Í“µh4“L@Э-”PòLãC%faÔ9ÆH #ä(Ä 0‰ F &ß0„Ä «{4XHIP;ó¤#¿ˆ–pÀt`*À*º0𨢅9‚¨(á¡@URqª"EÈt„ T  dä,’£=ñŒ€€VD«"Aà–„‰Æ¤H‘¡Ê F{Ò’Œä ™A Á0ÍLœÚP¯,ú(-ŠIXÆ 6è[™ÂKþ…ÊÙ•PÌ0L#hB¥Ã•:òU·`i0ˆâÂ…6fHŠ „˜œ€pO€„ÁŒXI€ Ø‚Mû@ȦÀ¢†Ü`&aÈ$Àd„&F-±d`ZödB@Û5B0 pˆ=æ¬qàÙ‹’rH\°PÎC&bÉË3 6ðHäc 0…» ³“É­3ÍœÀ<Ùªv Ð6l"aX!ÌÀ¬`E\#q[†I¸`âyäˆzÇ„â•XPT0E“%.…ý€z'N‡.ÀÛNÝŒ€³Ðp$”Ö0‡Ø~0„ÀÚ0_X( ÝЬe&Zø¬2ƒ1˜  ø„(Õ (V¹vqÉŒÃ'2øèX æ>{Ð9¦¨ØŽ€a:ª(®d<›f²ð@fm†I¨ ÈäÙ䚣–(Ú kD'c\çZF¡ã.3{x>‰ò‰¡œ'–6$ÀdC¹ªBæ`†ð5èX '!fùO6\Û)Žm*Ø…Ì”M‹Ñ¸¶àkJƒ£J2=ä0N‘ìÝ0×>ûbb‘ Ù·3Ìz< 8‚t$ 7ä'dH˜’¤éËb„ Ï†êf ÝÑsÌ®u Ó¯£TéÉ“/Çñãá7àoG †ýý ²Á䯍QÞ<óŸd|r¥Å¨lM´,K$Iæ{/hþ§;€jËš$=†è<¨ãT}VÄ~fàåÐãšA„om¢HúlÑ·°;×tÃÒŽ‰ ñsxNdoƒ…ƒë?°üuÑ!óPÊ2a “­x›8ò.`nC"0%üB“$I;—›dòƒvõ ÚRc¸Ö¹àgƒÓbÌRÜñ Ï3Œæhëúu†èq QI´gº1ÃîAº0…ëÓ²¾q ï^ˆè@4k 7fÁ¶¼³ê¶lÔ.®ù1cq¾°u}‰QûÎxÇ!ʵ‰«fd+êеCf_}¼CiÕœ×;2WN0ûÿ E ,Œ ñ¶2Ž€wŽm™Ç·l„;&äøÀé†vµùMQ™Ë!<ìÁI“é6ÍÒpÁ¤·p r ùãFcÉ>ß™3âÂý½¬‚â4;6 @Ìk˜D¯wfj7Ù´ÄrMn‘\ɨ Å0kÔÑ84(CÇ}Ô'fkØ6¦ ꆇ”oƱj5ÃhÎÛÙŠ:óôólaßô&5­Ö†BâÛ!²d晃ulÝs¶µãAÚf†{@nOdógºômàyÔ=÷_´Ú?`}±Ñ6#Ρ`»wÎåËÆ‡0/v?€ƸðF‰0À%…3,86Õ½3X^9>† V‘#äkÕ¾I;œvDŠä4Ï¢L¶õYã6‡üPôØMÜ:SÀ=ËöŒS íÃIÑšÆÉ™ë 0† s¬Ãê4[ Ý¡ ñˆ}aó}†Hªå¡ªÂWè²½ÍIØ1hcŸi¥Ø¹2¼i"hÛÚ ˜Û!±d¡ñp3øŸ¤†´ô±hQPT+[d1Âáœ9ŒB’N„9—¸É¡Äoi?D‘"B@‚ fgPM {pLÃáµc)4†ˆD*˜0ߟ%¤¯Ð 8æ “f5Nåæ›óå_PªûŽYú ùø¡ Û̸½eÍ=GP‡’ÂÑ‘@?˜³˜a]Rý®3¢kǬ,PœÁœP=Ó™f– @¹¨Èåíqã³()*à ëÖ¼ËÞ!Á Þ¡§çJוïZ…£& 8 f=YÙ!© N%¹†½ ‡ÂpûóÇÀjð›à9ŸúdCÆ{oCèiP k£¤[ß_áåAâß4g˜ìWè[àá¡<¾bÆTmlÃÝ姇ÁÑ^š”-'==b—¹’À1 šª“9£~Yض2›gœ~¡†zW݃3|ÒmŽÍ ¾C Ù!Ë¿€n÷†b·~'\„Ḽ›èi¹6Ä&ƒ9…h2°…€G Ú²ƒ(`uÈCƒCŸE'  ŸÑ0ÎAC ‡ø¹ô?*(_Êtä!„ÑB'h :xVµ„ôجuò#q‡‡»€×0ö ±ñøÈ~dí"ÔÅ ‘Ãûl–›@! >´aaLî`SuÛA›Œá rB{ëÉ Lmá&°L€o,aàNªæÈ²x`æõ¾&=* Ã<øeñ™b\ìK—ê0¨R|d:78ýéÁÀ´+Z87üLåËJV²6C!¬p€ÒyƘ4Á¿0óÌ öB³ ¿sÃB°ÆÏ “%ȉçƒhR(Ò²þÜj3,­4Kfé¡K™ …} $+dpà뎺CPƒÛ€¿¡âÖ!2ÞAÿÌÃÅÆñޏzwh†¡PmèÞ×ܤvPuÆñ»}g‡|>¥«Þ!üž 3^b†½ KlñŸ_…ZzðzCQ…몎ŸÔÙJª4H`@[þqí·Bq{RìÞ—(_ÞLo_)P½éCpHIÓÁ †“å9­¼tÎÕ‡¬~XÖ;1Ü*k³`adûàÎ…€35óÁnZ³ç7ˆeÜx3¡$.‡ 1í_ófC„ òŒÓ üC¤¼jÚ >A ÖŒä ¿!0Â÷<Ì7 ÈäFì˜hk“ãÅœk™ÈNa‘ Ã"†É ˆÿÃÚ!P X9`i°dd6C¯BÀ|& ¢}R¹á4žT´3 ãQ!Ök°ÈÒ‚Äi!Ù3²Ä!÷lP‡½xÉ ¸åÆHX îtfBȶ5Hf`…ÔÜŸ]Çõ,Ѻ½böÔàø Ã@9µpcP{$Õ8 ùEr–`{æä“Ãï‡30ä7\Þgðd5ïê·håþÁÞ¡|ÕaòÐÂ0Ó¶çŽè{ÁÆË= –=>”púZê‘á÷x¤9¦Ý>ÂJo9rw&ÃøJ#c±Ë<fↇÒû]q±¤8]ƒ+\öèèŒA«g9iÀ¯èOÂÅÜóä:Ó6~f´}RÀïÇ­®ÅXa ÝKù™v@Ú9´%hƒ»ßJ;h¿8œkà¹y¬ñÎo6Øm/®_ǤâãÇ«y=vGæ ™ð3d&cZ2-üüuQé0CHz!î~×C²ÌƒÈïMP‡ëpûŽî¤ïrþWÂQ©x<µ88ÀB℃Ë0¬m«38Ú°ø<ÃûþFdsXùîA¨PhĆ”©d;Ò~¬LŽP äXC4Òdfºp9ѾBÁÐR|T*š3´íŒÌèzÔõÅ•fM^ÙU!þóKQÁŒ‡ÀÁwx¤6š>W÷öt® ;mY»÷[#ëï4ýÿ»¥yn§4‡ÃåõŸu²C²KaÂŽ‰¶ èN0‰µa ð3§dÙ8àgB‡f„þRe• »ƒ\…)0 ;“ý%±³…ª݆‚±áÒl`{amJHfjÐÚ9py™fiÇcA¸ÒRjÐ3LòÀflðîÚè…ç……Íõµ‚nÊnýåýËGs7âwöÂäP t!_ü`~áÁé›¢ì‚ @ÈèŽ}ì“ë:%}ö¢±€nGäkÁœ™ ºQÄ 2A0Ȱd48Ðn›çÙaÖ·£µ7|=Ðô ͈Ø £$2îÉâ6åÒ%[“šƒhæ±Dºv‡²>ã²üj?|ÆÄ±}+s~†º„YÌŽ|˜*¡šo™6Wƒ˜m\óDs`ÿƒ7= ì?ó8oCov¬wV˜grw¨e¤ú¯WDq³Ìï˜B«›ÊðM”ê‡ ÈT¹ë4(aðFüóUPû4™Ri¹onÿ/ïB“¤k“«…uÿ´wz1ü”Þæ0{o³Ì~Æ%£‘ÍÖ:…y1 q•;Šð$[™ò½í‡>91¾Y¯{¶Í¯Öº>ÑñCI¦5$ ìl‹ä>Px(*3ƒÃBHI¡ùBÄ1 Ö±·¹- È7YýèüL­;v‚‹•î{Ì Ü~¹¼ ô0àíÑ7ò³ÆÏyìú<„àp@ }TÐ6…L¦Ôÿä$ ‡~å'Xâ°šºbê2`æ„J˜÷é½×_CôÞü“^„Hרqα ˆØ²ÁtZ€È5l7 U%`>æÑ \4•\ È„@o®]Ó¶¬ÆœÖ>#†C²oÊâÜ!µ®CNñãj=£;…m†£3Ê<‹ƒhl¦¨\!` bAí i"û±ã!ÎZ~Çzô Ìݲn‘¾t´;'ýg@8Á’ $rìx÷ØfƒtCÅBàdh¿­ øÉ®`²B£„k¶5ÍÛ|øfCìÉ `áÁÙ¾صîíÒ3!óÛ`v-‹påPи*ƒÍ̇(È;[êÖ°ÏoàØFèâ‹L4ì2¿ó¾Ó›un1 lvñ™óˆrè[8¶›Ósž­ ¨ú(B{Ѹô?õ Ó¢0†Ð}ƒÅ‘nãmª´1m' |ê#U­df¼–= ”ǤœÈ6?¤0ï3l8°ÎFš4²¾!O/rü@DZu2˜t[P Óàj‰Ç™ ÆâaáNîû쇺0ÏX†ûô×ü½Ïú(3Ý–ž¢æ*_q ¾á¾Î‹s›0Ë¢ òP‚ˆ}4 Q’ "H‚!ˆIì}5±ßà³—¼w÷øú,îãžðœr ›Ðºg¤l]S͸RØWŽBõó8ÑÃvÈæu ²´Z5R0òŽÚ Ââñµçy%²§g iÆ¥Žÿ©ó°ÒÕ¾ÖÒoz•¡\…`!„°4©â ÁÁ¾h;ÞºßΡyCnÈZ÷ÿ©¡@~Í5WŠg UÖçh@’Ì­’âs•ÌCÒqXý”—DÞí©9ìÞí¨ÙJ‡´Éº`IÙÐéPýLÊ4 p0ñ^…¸Ð3 ‹Z䑯:Öqßs5€ÑØ€`B„9’Áͳ=« 0à Ò?U˜dòNµ™™‡^èâ›'õ³ƒø Ð8ä!ûèÍ6#Ü7ç)Z7“’wmÈ9d:àjb…6“IæÐ¦ñÓ¡B'í^±ßƒ\…sŒB¨5 çíß”þG@Þ=퓯4Ù!‘¸=®ã¡Bqþ@€½Zcyla|YOŽ÷"ž9 Ű¢àâA<ªÆ=ŒN9rêc,ß}ü¾X5PýþGý?‚Ù¼óï7Ì;÷æ4>$ØN|>EÑs‘£Züóéò·ªð9iÝgUˆzfpc¯ä9,Ø?­´§ð¦Üf³†OpvŽÔ/¯weÃh†ñÃ!tz¨NÛ6,!ì!³ç®!íæƒÊï"F^'½C­Ì2æÇ[Ü`Yï2ÔÛÆ³´¼š÷ìšš:ô1îf9°fžúÆï˜±Ï g,¤f|¹³/wk ì§?´7¸7¬ ÍcèÄ º7È •”ŒŠ8y9 ¨3  2¡Ì+Ó4XÜP ˆý¢ã`£¯›]FïgòWñö,ÐàÙ¿÷µ°¨àAþ0Ë®ríû½':…x”0xÛs‘qÙœc¾™Á»gBHu$Õ}fv:VpÉÔ¶íü¹ºDÙÔ¹¤)ƒ2! zv ± !Qüå³€Dó­Ýß‘X5XCb‡tä|ªÊ&q  Œùº6òç5vŸ±ÖWK´5üæëýí-½Ý30+^™zYw*Ý2ê|:¯†@HeX»]ŒèglaÜcY>†gQ«œÊ²5j¦šF£1è’çÂ: Qæ±ÀǼQ²ÎY¾8ò¬Z ÂeRØ9Oy”w Ñõ7Ü×X†þ¨QmvÖàßaÌuq#9¢mh1°yÖÛ¨Ûè•Ðg ö Q¥‹`Îmr§]`Åûë¯Ï¢^ÐЀ´êähè@‡X¤ÌDàþŸ²¨ñâ¶ÃyŽ2å@ÚÙÀmµž‡ÎúÐý·‡UÜhïõU`'ãõoß’Ù4yÑÓ@Õ!(²ÚoÁç˜~c½aöÖYº;ïe}´²b'`ô|vëÀ¨ö‡—œòÀfÒ!˜Âç'«Iº€a˜À²*îàü¯”BTÍOj1¬º‚ Tw‚ŸÌ€¼4™4Ò˂ś,”ïdÏjûJÄ>a‹y³Ã‘ÿGŽBÞaǼÄïçhNoÏ*CüþŒ¨~ y7T=;µ(…h¿¡„Œïä”ù¿3öíò›.™#dcŒ‘”ø*äJdÛfLI!î­e¸@j•5 c^V „iã÷°ÇaMŒ©ø2«ÝNé¾ÇÄÑ5¨›ßþ®}àס•Ûòí7>ï§¡ìó9ôln¤D3BïäÇý†è]‹àžmþÀÛ íŽÙ~@lá(ßÁòØC™>ßÛªãÛWÛ€‡Ît¯ošµÌ‡Ë€·¹~²ì…Ù„?°üÛ*“ r„éFïQYLß÷>°öCªÆ? Î4™ W/\R‚9+³j%4|35…zŽ7*j»FáÕâŸ(ð°f;.1šã[&jæ}wKÒ³£Øz;PsÏÚ5Yâ0çð÷ù×^| }´ ¢ÝŸzÁŠä)€FÁÓòx”éW™V º[AÌ–ð„ôkÊq@Óo [86””ü®äη‘©Ÿ¥ ê£L¾³;טàZ9Q=È4ju¹xTgÑ wÖbl ÁìõYãm§8/ˆn½‰éu=/ÖÕ¡ÎVWíùjÁ§íØÏÔâúŽÓ࿳Ÿ?íä‰C$†8qƒô5MHÿC¼B£oxóÃCMò¸{éÒuvïðçoh­žR|jJé¬êwžÉo¸ý¸/ ˆKGÞqðA“nr„ ÿ™(é_  ?ZuºsnCÉÞ¹Œø°‡ØÏê?¯IN§/DlÅ«#ÆÁ³ïQóL‡ûÿ\ÆÄ¸2!A}ÖôˆÎïñ”•‰z’bïl¢ë~K`zíUc9m …(2µW)a½Ðk¿.Ç×s]ÏQ´P£Zààõšém1…›·‘"¨â@r59 ¸gï ‘Ù›[Œ¢·ÙÛ­²Ž¿ÌóÙ æwâŒ`¬ñ1ì¶ÃC…¾üxhëïö…·ªjZ!Æ ðÞ“3=˜¸§ØfòòhS|‚ïÞ­ãŸÝH ¤åMx0ªøí &Üù€aÕ …êóº{³ß×Wѹfp`9€) M Œþ#/lÝønÆ0ÐQî8ÉTsѦŠ;Ç|œüˆþöPnZ$'”CáÐáî½ÇÍÊ6¸w’ÎÏßbuØÕ~ £ÃØ`Ûsÿ—ªâS  ‚1ªUiþ®3 ý(šÈ€¹Ök 9“/K£Vi6m ýL™†=ù7ËâÐ OîûÂÕ–[Ef€µ×mº“wÕãÍóöÍ–× 2tzF=Js›[‡°%wå!k«Jé¡cš¢™:,k[Ûÿá&E9pôˆޝ› æ]ßi8ôiº®7HFh 'QÄîhGqî 2ÛP{”ÖÐ̲Á2€lqê Ù¡Õ/ˆs×™w 4—ð LK3¿ôý8@=åA¢CÅI)æ1@rL•Š  '€¯÷l¶Õ¨„lÎÆ6vAµ eo”¾÷Be!Zþ,ÓÎQš€?tôíðèU«Ì¡£îò+Ì÷N2aPôðçHj–Z€ B´U*½ï¼ÕsDä¹ßýıE‘çøÎ–a—òèàz¼¹¼ׯÐuñ cÉY¨ü¨ÿš£¿*ùv ÷nÀÂAüi»p‘TãPCçØ¾§ÕK—r0…¶kP%”»É3‹«MÆ®É?ùv4¼fCµ¿@‚š@X0E¡>T?8£Äù½ùiîLŸáíñ8‚ g%=/­$íþQV[-’\Öñ pîû®þb%àq37 á› ×qZ®¨‰´ùÖKí—i÷scÖŒ–2ÈORòҨ¡æÓ†P Úÿ%êæòϾU™Ðg‚iBbä¨F ¹î‹…ÜVψ×ʘ>:áÔ§…\±oÂÏ™uNÜg\ ;ÊÏK#¼ÄͽÎXÊ¿YjËÙ£ô(aøvÿ#É΄äÁ@_ & â Knª ñqÌG9_#O2¹ ðäÄÛ9[e þs¶»šÈž}”5—t–q×.i/·5E`VA‡M eé-ûº[3u|¶òÛ”ðÀaªÕl^Ùõ¦C,„7ÞÈ?òâ;I O÷;ÖX‹|!TZW)zÕÏ>άx 2™\g3ÞÍ–¥â½QÔJ2ÈS ©–ä à¸hs0Ùp QhÆY(ƒ<â#]<'®_$‰¶ãq%Üñ¸¾Cƒæï¼=þ«½´O¨²P ½»V”]:¨?–hBÛˆœ(3;EŸÔÔD„$‰ rHtjú€éîïÁ¦©Ð\غ È6üâ´0ÙÀ7êæv›յΑ³–š3¡\„…þ»}éš¼ÊFS¡î^É91ñû^ôZ@;Ó#|ÏÈ ÷à«ï패Òî„€ ÓaóÌêÚú3*RÅuŒÂVßoyraW¦M?Í"'Ë 4_Ñ%Býú ÆPÇáÇå­s pŒjAÈý£^TN”Áv|+‘ÂBÿ7õuõ"\°ªòDúa1êpvÛsÉ|Ö=Wßñ³[Îo¡Äö[®*ѦÚ?rcÁÄ>º¬†g4÷$è!깊«£:Ühªv£lþ(mæl&œ.mÔ•8xÍy¦¥KÂxšé{¡ö:ÄC¹R‘ó«à Ø£Ï0B:pìƒaê¹É?ùaç·’Ç¡ÂûûŸ#ú«¡ÏË'ŽÓOå¤X±š,ÉE_H64ô‘„‹\œ+ÇåHÜÌlÜòÿ*Â›é‘ &¢Ò=’È›»£à ~ë1gp9Öºµûë$!<Ï7Ç0e2*ÑÙŠ¥7¦.O›W½Íî~äËKZ”2UѨwÅïòoö6Œ¢»JÒ·³£[ Q®Û·™Ý´-ñC¨ÖÉŒ­í(iÑ'÷¶­jÃeî[/»ÉžÖÏE˜PÙ©Þ˜zÏ-‚È.%0iL)K‰ß±=·ý#Xš ¹°~E¸!5/`‹bV©¡}+( ”j +BêЪؒoÂ÷£ûY:ük¶¶uþ‹çX¼¬Àªè_íÏ~Šï: Ú0lgA` #‡DXÁIàô]ä€-˜@ÀÞÖúù¢ê/ÕGØÚ—xIJ³ø^Pú41™¦›„]bÏ&Ò;ñ"sX,ØÑZÛz.`/Â\…$' }…]D¸•ßù¼èžl´þ[Ã÷dÓ.¾+&—„µD²tÄ ¢’ÆÞGÒÙŽ–Ž.›ª´(½]ìh g©w˜T2~—IªVªu–™¤AϾÊÔ6š²À| ÿ¤ß˜µ„ó~‡ ¯¾ì O]íZÅn¨ÅQ›aÕL×2^{õ±wy\Û·UµÇ)‹-| F™ŠAÊ4_2F{3.pú>._ŸO²ì¼ àM—d¯?=zíd–ýCþ.? ý'úÊŸDE9z+Ä 2)Z±ÿTÃÅ{"ðˆ÷'j–$ Ã_CR[V1¡“¨[=2®ÒòÛ¸Jòð¥ù¸ÃÛ=÷~7^<#å „. ®weNhòÍth`wìÎ µ oì†NCøR<Èsñ¦»ÚèÃû<€wj÷…š{[„¨i8š¯u<€Ô)•˜(B?¯ø{#ÓŸMµôß?ßr´UÁÜǹ5o:—æ¦Ø |Œ¯¦Wq{JW<µÐþfɇ`;wÌ9’NÙ¿îÀø¹ŽéÞu1¯ý;H®¯žü¬cZ_è$7L ¼(üõœ(1w5‚ ˆØRÍ€ZÍÐ’ë²X×ÈÒ:˜÷¯·m“ÍQXÃpfk‡n N˺»ãf€(à-­+ø`yò¼XûÞ¡ë©ÓŸûÐÔÃ7"¾Ó4ÁèâPÞ}Ö6íS"Á™B½ X0ëàd`åcòÙ_?A}UÍ*û\Á|…€‡¡Cࡽ‡jñµEí=nKËóü=+59n?)¯õéù *Ȧqà¾.4ef°Þge±Ÿ‘9@o0Ð$ì™uý¤6¹së0Xr÷†áp÷c)sËOY êîqÿÖ¸š@aá@\è°3Ô[› ?‰yësò4c ¶ Æ´ûzø·)]²<h¼Õm3â¸ø Ñ·#Ð êÚðW%Ní°«àù‚5ã!Ó ÄÎ[sŒD¼¶Lͪ‰†‡5d¶ ÐXÐâéôÍxö»KÉÒ¥š!2Ð9ñ½,šÎ“‘ÕFI¡;HDéo,µ&æ^>k¼Kóÿ:½Ù —ñ .=ƒù” FYÊ ¡{ÿmzÍ´ký~··ãÄñþ¿ >1T s‡+ª5M‰¡A-©·rL£+SÈ4䯠§­ì®U>èØË‹[{M»ÖQvï:|#¥Ñµ7f ùPùw+ˆòêƒìBÑf¹wË BRƒJìäã9(¾Úq~t€ìP›ØèBÀ ²2_œwß/\¦·±ïm,Ý|9kÁöÄÃyò µó#D£3ìý Kó'ÜæîAÌÍ™ ö·¨4oEÄÛ3ET'0d·Jbà sS©€z62ÿÁ£9°âxþ¢°X8䈋zHÚœb„—%2A1\­‰ÑìDuÄ ñëôH 'u uszm¢ãîÁl+Ù"aPÙ, m›‡Çöxsh5§Õ×{9>O·ç]Ï5W½á 7O§|vÎZ™´ÍâCäû#Ê߃UÄ”_ëðM¬¿öz+F. ý¾ú c‡òž­Ä¢Ç<@@ €( Ƙ8 û9€ö´ãû;vö}!¯çœ·ôžêÕu>Ô¢y9ñ:&½;߸°¡Ò“4(ög[ª?ÒHè–SÖ8KOÃ,ç#7 ŠµÆ¡yC…WO›è±,ÿ—Íø³³0ïï!Ë ´k‚ôø5=xåFÒÂâÉ•öÆ.–¸AgÞp§E v¥F  ;Λf]Rߥ±ƒ†¸2maÑKƒùH ¢¦G¼)æƒcRøëÏ~|(ÅD¯,$¡ :8 +\°.‡&v|"påÁΘµÝ[ö@s9»·Îù˜ÞÌ\¼ã`*ç¿~°ôCùÃcØŒ†£Þ€…ȹCæs…A¡¼Øá‹$H å;ü›x¶b¯V#¤ZlâDO‡&jÞ#k( þ*€äòckÒ9^Û§Æôîn} ¬ ÌÉHÀä /Ã(þJÿ„KßO÷R«ˆKí–ß1Ö6›Žµ;ŽRP—0J…ížö¿·È¹zÑîÞ"R¼÷º¢; …åܽ¤þ8þ•Ú\ßÀ靿¡{±Š™êHOç) €8÷Ø`o€]¸æØ!‘Óꀠ-;„;Î|ç{˦‡Íþû ;º Ï ¯­–\ìM#ÝÔl9ökÌ'Är'#®bˆP¦¥]©\©þé€wY'•Z|ñÊ‹¥'»¬BáÆIÇ:ÿWÁïï1X_×xÞWëÉÞÿŒ¾îÏÛ»dë^íºlYÆÞ¡®BañÐ&7¾!œø8û €¤†î´‹xšÕ5¢U"›€rD€˜åF$ò'~C¼®4ì?I)˜Fà°9~£sù/`n=†ƒ™ ?B°½:\-÷õeÊ•ˆÔ;~‡'´ò·ÒH©>,ä6Ó}Üæ¶—¨{$ Ê…!^r˜ÅÚŒô«Åä%žŒ½)ÓvTFãUTÞt¯ø¦´âŽŸ'!÷òü Ñ;ƒÇô3Ûß’²‰“:à”`rPÈ|Ê¡½{>ÖaÊe©d²¨l£L˸íòÃ\lH Ryöt…+¾3%}6_®o6àÖÏø‚nµ‡yù¨)•nÑiêö®Ke§­ë“£‹1I+~Ü(kãÇQgõG¢¢l8XÔ›ÎBoÂsþˆ<²ÉÓç·ÅFC¼ÑA©Äs`P¢ ÿÓáÓÕK%µü`£7…p§”Á.šÎ¡êšoCìu¨–ý_ìuwíDAóÁ5`ëÌÏ‹ûmP°ð~JTM¼“¥ó†Ô|Êÿ3côçÕ0È7¯€@coœÝ´VH„S¬¯ƒñˆÓí2ÏWÀäPù‹ÜÐlŠæÒ£{o¦9— g>"Øhƒ!÷ä—Áê¸Gwg¥ peé_KiûÑçíFmî.õšd󫯎nªZ2ü¸. •æ'Ò`âR¤îüƱä+G ‡·ÎÂxÙÐðÈ ©üH¤Õ©.5Ùa·€úÀÊr|>˜ì£4’–'¦çíu?Ê‘¨‰‚áÝT>Ý"Sã÷<~Ö§l|ª­0j°ú‹¬²„K?ŸfÙÈ 'jíÝÍèºÕ\Öo_»÷IØN;ÛÌ}ìºá ºÿ0@ÅݺePˇÍCÎp-³Hu, ôÀã&o[ø6ÔPÄ00†TÍiœÃ0q ÓRØPBìj¹ö†ÐlšwÍl± iQ³{¸fp9#Ê¢<Ä ç£tõjû©› 3мJ|Ô½³ìÖvbýù\Ê¡…²ß¢RTÄ•'¨Ö0 ¨%ÜqŠžÐ =Ƴ. ;[à^DHY &7D˜*ËJˆ/&wYÍñJbihýÅMk$úˆÍ]Wéàà^Ô¿ì¬sØþ(ë{C\w> Â׳C¤dBü¹ÚôÓǾõª£S»ô•.ó¥— Yô·Ì>Sùv©Ý*Æ9dE8õcê0"oÒf Áôt\ fÚÂo7IYå<ùÊTÍšH²Ô?'ë$®´—ÉÜà;ÙÊù/p¾¼­æ\»"áUÒ̱G¦ ·ØXJQZ=°WOÜ=ÑõÒXb ˜ìíûk¨îTNÜ+ +ev·ÅÚ§oÅ<\Ó[axX~Âz£õåRÆEˆ×‰Ç­SÚWz…ƒ`µ–}y ~Ô¾èŒ÷9wc­ÅbòÞüñø»û\OÊ×Ϩۣià( 2ÑßJ²ÑµqkñîõŸ=WJÞr¾sXÇQ·^ø×0`€w&Õ ’®/áêüÎw:æhßu"*e@=þ„𼄶>zYs¢ *`ŠïÀýïHûª;š9o­ùÇPÞ{ʹNøÓ´&vÚ½³«·Tß྿nðƒ+¢@@…5²/ÉÝx•hþøÑ ¦€„FxïN KšáÁEk39]{>µg•†Ï‰¤šr¦Š~ây¤m¹¯ÈÔiüYØ»‘c/¿rô@v+&®rÛÃ¥o4 M·4Eó€­$ùåtHž´5(S*98rN.^ô† ‡IBPäÁ£ð•“qe ^‰XbI¡Ã¶ž¼˜ÇweœÕ¼áëâÿ þ¯=Â0ê>ý}yã6ôŒ[ <÷‚¢‡ô·-ãøçú©ŽÆ#±ÇEòe¡”PŸ}ùлÿ = a:1î v¦ú¹§˜šüñlƒ¦ÌšÎý~S>G1•ï)4wž£7è.#Ûm§QS8¸>wmø*(€1P ‘^+<|µiyçnÔ°.z'"gRWà€•ÿ³Já³pJ§)Döå_ÇÄ»ëÖÏå€8.•>Ô6…ÁÁ¹~\ºÏÎ|ÌlE"OZÑaç1Y6‘d³Ø÷«\Yhs°x¶…¬>Á†ÇC @áÛéSªÙ')Èl§0gxzÕxIåoz5Mí³eÇdç:©™ñŠÇŒëÎa5¼dv‰zQB¬5‰©¬²÷úÓ!°<›fÛt¹irÞcê LéŽý>ö–s=†vêŸ,OF“Y]Ökºë˜ß¦µºúr¼ƒbἤÌRÿˆõ©Å/è÷"Ю2>`ð¦‘ßËW±€$ýbäë¥ášQÜkΠï……ÉÝA4is(þøŠj 2;ÞW×@û|¶¾óî z  ‹¦u£Áë»m?6ͤUäJár•L›$ÜrI¦\¯M[Ÿ—KêT¼^2ñ’ûXÎÆFr™õÌCÃd­òt\Þð)û²ºl€>«ž#×Îcâ"jtþ’U s†½ÓǨOÔ³ö&,6}tHr¸Eðº²Í¨ól§f)eùº{ʽÕånÏ“®õßéð”YÝ‘RtÅ@}g¶9†í„OW·þ1ãYœZaY¿›°KÿÂx‰ÔjðÜòs–^%KŠ1TqŽ¿ Í(4©ïsû¼„V¬;·UX¾®çF¶ÐüŠ¥ ÍÖ=‚ÛAت­IÁþy^ÿ‡AÜÚ·‘e6XD!¸Ï:z]©õnßv§É‰«7rç³hËy4†ã÷”£ëèÞK º@ÂÓë9¹v¥3QY“Ô¾(å<^lçÃ^ÈŸ5 u£~FÂ@~øh i¦1-¿ª"¯Y€Èí>€úV`;\û¶Î´Le…³ŽØš_©uõ{‘{î2°‹\–lá{Øz0ìtOqÐI–ª½ë¡H¯j×áÙ&Wz:¨ðã™þ¯¤xxzÐü&ì$Iñøøì¦¿·CG sR;JþT.³L ¾ñ@@ÇyVa¬VKÒx6éêP H¯­RåŒ&j2Ÿ_à‰ôþ ¡<;4ÅÓ¦x’ Ñ ã7‹,Ú9™ ztÝí–ˆý%ÓØøRáƒU;f°Ý™Z‡»}K-µ²Œwoggýé&O>q”¡P *ƒ–ÏÖ Ǥàn©A@š±ÁeÔ±TÉÀÚ|u+ªÄ àsE>ßHeæ¡",Oßb+†âWëÁ–փРœŸ,=Ryuhœ£zÚj~öa‡Ž¥ Ʈݨºgz+%tâ¶}‚áÊî4Ÿn6$°ò1½MÄÝ÷:Y“…ñs¢Lw8€þ³ôÇQhʾë¢;6GhÐÐæ_‹§ð7:¼7ðh…ƒÌó­ïx݉¬š›rr0ív\¯jÖy[Ó‡}7vÊ&ڌђ h{Ä0cA+Å®¬¿¬9gq„GäB³a³C£‘Ù\§aÛò/îC°R:{ŸÝWÍöPäOKÙ§R¤sƒ,í+ߌ‘` hÀ17µÅ,æ6^*k%†Y~S ŽJÃKÓbêËàÛCÕÒ üÍ&Ì|¦"ö÷OÁGvG9€B˜Ê›Cb~Ïg(Ú¶ÜâÚNWÜžÕ»$/hRC:éðy–d<×Äß08l:{ex›ëÜ!ûaG\ q+D¢ÙBYdÎcólÏtÐj‹Tã®@ï–ND±Y÷ªÖzM¿ö»LE¤ä«3@Øå-p±<4kX+Ä[5%…ÝËïU$Ó[½YŽ‹çÛyÓÞ¢;P¤a8G?Ý s]ÛeU¢­û°«]X õÃþfu3²h&&¿$Qo­„妆ÿÉ×dø€7¤-LH8ƶ3Y¥ãówŸþÜö>õÛñV:Sù¬¶î(tlGç‰ <}†³¦¥@RÝMþ¬¤Åøìý—›¨73ÊWJ—áÜâÿkO‹œžÃÜÃÖ¼·ÊVŠÿ†AízùÛ;býœ|]ÿ|ywDÑ‹ÖÙDÂÛülè¥ôhoŸò˜³^j8ª<Üæãhúé芨 zk´Œj’ưþ€ÃçÏKÃÎø ³º¡2 S!Ê5"H'8dâéPg Ôœû¥=:Ê•“ÑÑòĂ܂ÆEºãQUòÏ'öJ ¡ólfßÛ$¢çÛà7Æûý¶7d <“±ÌÉš¶9ŽKÀÄPж HëŽ ZÙ±_ØÇ4k7ÝÛ5TòŸ[â~ýºf¥t 9½MñÎÎè?á¢8F ¸%ƒ¯×)Î5µ:‰¢ðó—ÖUš eeekD#ùj©ùãœÓ¯d4oZµ>¾îÐ/û“.¨oÕÒµ/­T£½áeyV]†•{¤¡~dâ4KF2°sâãY¾åB®Lo¿L=ž}úÉìÕ‚¾niÜL%måÍK$½˜Ó<”ô¿×¤Úë9”.NÌÕpÿ~çaÖÇv_¼Í¥)D}š|±Þòž[AÇĺÑÍæñXr¼ 5îkl£ÆÊ[:ñy¢åèËlþ†ûÇ1%ëû~L4B)WøI®çË›¨Úî^).GizL€þg\.üN[]ÿ|id®’ å?gJböº ¾ƒû”…Œz¶$ì¤ñô¯r¼‘U ð>»Çœ9­œÏ¦7,ÊIE§Vâ|a%–ðk™3çJÇ}s So9¹…Ÿ÷7ð[LJ[@æ ª0 @ MúºL*+ö\õá踋o)õûÝ*9Jþ޵w.‡_n¡ÿ`þ·dc]ˆXž‡Ü'\t°ÿÒEÝ»Þÿ3\w ‡Ö:—íXk{µDÀ·$6ZthMß'3èб=½¹Ó–ƒ‹¯Ð¬söµY|´ÑÁÖ— >Ô6QˆŸR¸»þ'£áY ¢t»¾8ùçdë8lŠÍ÷ÁK [+¾Ph}¹ÂçR¡’^¯^e¨äð¼ö»Eä:’¢ÂCðáR(,Úö`œÂæJ®ÏÜahX-ò²ÓçTk )g3ÎB(¼ 8”\b¯ÎYµ¡ž•€:Ö¬h\uçõ{ŠÉÙæçíú órŒàIÓC§h;?†ÞZÁ§ë”vfÀ§åz{Ÿt_/H篃ÐPÚõÊûüîøö÷éÜ$âAðÇá1:LhÉîâ-ìÖ[(ûJfõ‰Ž*¸=ä!î u1ˆ£¦PlJt¶Ùlø7ª õ?ã\¹ÖÏ©Çãd½:¿¹ï£GF;¤CjP“Ùuˆb{òû1±0¤çXTyžŽŠÑ“±Çé¶/H¯X ~-æü÷óo¥DÎS´¦ WÅ%ª!»×ÎÌǃwÄëS4Ì:"-3œœÜ˜M i…!o‹ºà=]øÖØ’µ<¾¿'üÝÁq£Pá[GÃq«°×_ToçÖ—œ±Í4nlf€·¹U Yv$ãÀ9oį¢ËF¦ìužJùSOW¿k%íÿGlT‹Q‡ñ0ëß-–>sR°^àîÀ:Ûv§ç ²œöG»<Ñu­ü 3~ÌÉ÷´·îp;NËÆS€VÖ9‘êø~e—ž\÷J‚äÕßq¤¬\–’—öjüyZÖ< eùeF4Ç«­* ôëa90Nå~4‹ä 7.ÒÀãä -ÕuÓ¼Ë?"d˜¡ˆò!ÿ£T+¡e÷-à2àû--6¸ÏºýP%™ø0¤G$s¢\äù{¿½F€`ý¬ HÀÔŸƒ·š^Ëú/B«ß5éo0Ï&½ Õü¢÷á"o½ä ºýtkAðÜl ÿOÌô¤´LÍ+}']ÚZ¶áS™9S¾| a¨p´_†ïU¯‹þ¿¾0‡R¸@‚)RW}© M/ôrsÚ[«žl–ò ßZ#Òƒ°l 2O'g\½³Ed(§¥6¡#‘×Y¾)˜ã«ƒ ZP°&ü®þ•¾&ç3þY¦œ°”_*'žÆ•=‹ÌªÒ<ÿÙMÞ EA옩ZÉ"l36•ùKÛ¼ÚÎB\ŽKë>–&KYÃ;\~åªùØy¬ÖÓmPJÄaeâM°bÐîh—þÞêsÊÌ ²Üú?ëcÄ?V~J¢þ…Ôß{W˽„ÿdjSUQù-þ[bnOï[iãT7¶nÊ|Yèñ+£UÑú+Ãò9y:rd§(`YÆ%¤—‹·['»^GóÂï=}“4ª3Õ\·u¦¤œ“è´:ŧ{U)¢þ|º_ƒJåο0ìÉþ È>öo¢j¸ãå1@6z¬=ÒÏç@þóZÕVS»w`Õ-/ãH«?ÛS; Lêšî-ãáô ë=q†è—騲ãBnTŒ`Ï›Êi€úýâ CJm£¾)H=Ëß®6|ìWƆå¼äŸ³Qõ¯æ8_5¾¥_Î/klª}…\P36ØÎ¹ LXÞž¨Íl½c L¡š <Õ]“Wn§ãnƒþ0úÛŠ©A¦*aŸý@ðEýÖ šÔf½¯ZEò9ŸÕÉ´¥nÓ¥óIcÉ~3Q¤i5'êu—:•s«þ“± ³æ‹…ú±r³îþ÷,JÎì?ÊÒ’ ö,rxc‹ï]î|Ô߇i4§Ù,ùi¦nÔ\góû•”̪zÓolÐb¦óN$±kÀ:es,RõœòñaÒíêÏ%ÕZœ]I®˜^6‹Wü‘ZôtùÆ’>‚è˜q7žÛR˜@ÆÔž„rO{8×5ÿ©ê,¥ê²@q"?-ÅŒ]…gI™„åö_wÏW«¢ÛŠ‚ˆj8±] Î]/íE8C)ؘ¶‰>ƒÌú²[Šã“ ^ðÝÅ<‹åá붃-®æ¦[²ÛüÉZÁ dÿéT¤Þ‰ïn¬Úý÷Óž¯ ê  `ìN¿wÚŽŒRÛÇ:ôˆ U}éÐ ÝN檸ó 0¨¥ãÉŒŽNeA^"`¸L3˜hÛgè&K´ÉÏØsÝPYi¶\ gRˆpä‚@¶b‘ûW\_;Šq§\ºÄô:Ævzm0Û€å‡Ì[]§pWý†f3<]™p˜í&¹vžù›Þ]ù @2k'ßÔKSV¸±–S»¡El¢±¹ -…`Ü/:  û /1ðT±ÕÂΡíW°”¡»‡™àòºÙ ¨‚ØÆìÞ|‰»NÍŠš¢¼ a‚…‚rê&\¨a³÷FuØ*@‹_:µ‹,Œ™å<ÃS²û,‡Òê´¾Þ…ù;jtÿuƒ%Ï“U?RÜmÍYa.d ÑÏ™<)ë½Åç{Ç8e•TþØõS1Í{f0›‘'ïÞkƒ–ÞæÀ¬3Ñ.(™çÌë.׿zV’óû&\ËÕ9M—QÍ7w@(s_ÄÚ¿’ õ¸ûaÈ ÄÆ˜¨ÊâÄÖróòm({?©ÌŸ|ÛSʲ®Ú´(ÚA•ß/¾Ù$: íkÛAÍV‚0½€SQù˜òàV¶…hÒÊ,íìXëª@*ð1÷ßË@ •¨WkÞ×ÂÚ<²Zï:%¤ Í¡b?ëvþökQJÿðð`YÌ›±âö¹yvºnô:ŽL¿Öýž•¢"€‚¡I ½G“ö=žÏ`þk ×Fò;u¾üãý®éç9E ué5VÞ›JpØ—þgûp 4¼94hÍÉÄ/Š ãUu AÙ'!ó¡=ñ ÑBcÔ0„̘©™¯j+I[?ÄkÊ…Ð@6M3«ž¢ÛvoÒÃ×2¸43.¨wès¯ØíîZgh‡3ùÕÒ0„Ä0zžíÛ$Ä$CæÁÇÏÍ!f©†!v.Öôsžª4Y¿ûE/ÕÖMfÂ_Úq  Èç @* yñ“ž*`I€B*OñÉ  ÂHBW®ìQ£…ƒF€N„*€€À’pÀ’Iû%DÂ0D èø‚%…oAèà~†ƒžüzI XÉ’Èe¤Ib!Ç , xô~µŽ‡É !$œ2 Ìa|2f—Œ1…èŒ $®ã!’’A $–)„p7nÔÄg€},S±Ëm“éêg¤„ÆÖ†£ù©¶Á—JìCÿ°òŸŸ»„ð(XI$»6/¼ÁÇ’’GŒ+háLJ 1Kt è Ð#%~ Ø D(ص°žxm¹¥zJÃ_±ÏKTwïõël–š‹á ÇJܺEˆâg™Âd 2A¿h†Ê°¿Vg&®kÛhØ©ƒ Èà0•½‘Ö0CŒ%PÈEÉ’éÌ9p­r2ìI²Æ[îXI~ô†»–PT,_ ÂF~øá¦ycî‘p‡Œ_÷Î8}ñä¸Ñ±&Åí ÄÞé#3 òj¨f´´U8ž-³aççÃ6qBBJ§·‹ÿ©nÜއƅ#Ø:Æ «u}UÖµõ9?Kb!?„ÿt4œè®DàÙÌ Áo%ÆŽÔ–(Ì ˆàkÂô8´ÜäkrŸPÏùO_Q¾»™ASz̔ӯ[ÏÝ ,rA&¶N\Ö×Ú[ e¿î,;^ÑŠlwJ’\jo1:³÷ÃÎ;p3±„þjw¹¦“ªïKÝœ‹b(ˆ¢ÿ¾Æäiýñþ_•§Ã¼Ûsi¯ÖS‚ÄËŒ¯C5âïtý+t¯«¤ùµ|›TIâ—ƒ©ˆÓ0QÀÓâƒ&ZŠ^yC–’01ÝÇwíMV½¿#]ðeŬå¨Áú¥†·óÖŸ6þɶ=QaÅz3ËŸ¬ÚÝK©ZÅ\u<×?¡ îö'ž…³¿×ÉWÂ\ì øŸ}’j7 I„À€’Ô@Ççû¯ WGI¸ÆQIfðÇÑ7ûj Ñ¿Èê‚Y'Ö½ý>eq?Òד1#³LIý¦ØnJb×S`?/ÅQg­IÖ]ÌÚ7½mv¢}àCÜÞàÝ= öÇ*ê è–D{L/¬0 ê»a?Ä´Ò΄oÍÉ„ú ZÔ¢Î9ò-yþ˜—/]0f† os ÜY µÌ Ym¬g3$Î|'+x–;ÏãºÇÔQr±6m žþí¼ÀÝ&3J7H‘hÌ$”ëæ@˜ZfB2C˜Iã0“Aù˜¯_õ¸zw~·¯ÞKÙS 5ÍöÞK_ÎÓWn•,¤…°Ò2‹Vò¢X8M%owð¦F¥By­ `¿³y988+ ò}Éôégû‚BÖ%p=ÂÕ>ú-o°q9:nÀ0}uÂcqml:Îl\'^®ëù½öÞL*‹y˜LF%QÏÉ®~N‡¹qITM™d) ÃYvœäÉñV{ÎŒsùOE”¾ŒƒdâX²‘O·‡‰äӈѸøMȃ ®ù¬eÙ¹ôˆ$,‡ÃªÛ1Oú(ƺsÀñPØaÍ0°šsè »ÙG}"§¶Û¬±ä¸mPð˰¯´Àwž¢0§é—á¹ÆŸÑºˆé…í¬&Râ‰í,ÕñÚ¾¨.—d© HËD¤ª{’Š=NÎ_n2Ærf,T§¯ƒ K›gM.2Ë©Bv›ÿxûÿd'Ö ë„€û}PÃÏo‡ô¡¸À牄K¥ýé¶#“ÑÝðíã*ŸË¸Ü³6&ïWò¤q/¨ãüÞš‚áNgÕÍ4„û+«›Ý‚þ"‡Sü¦[i¢_6¡Rî1Øæs}¶¥¤TCC‹?Óèêýj’IqÊè½¾º^š-ðÈãÜ \Ub¢^r½ÙQ$7'ÿ<„œ’cðâûœ¿„¦(4w JðÀˆ)äÈ%ÑøEžñ¸U°>½Äž3T4wÃåg`4@BÊ@/Æ‘…ÿ¡WîTa.XIâ–Є2BÒUfÀp,—¯§Ýo˜nü²`²ñ¸Ö’‚.#µÐ˜³¦ ËQô]$1Çbfqž¢Í|ð};†Ês¦º·sƒ8§ñúÞA¸'X:e W¨|>òþÛÑ@µ€¨€ýˆšÂz—y D“¤”ù+΋ ùV«S+3 ßÊ {˜a`Æ·öÙ$Yú_Ùåã¡E¢›¯o›š‡¸ aW&M>-T ½rg^å2j7~ëlštv³“™§ttìbÑ.fŠ7}¿ŠeD˜ý/Éwx,<ôhˆ˜ÿåéWç¼Û`•ÕPâ: JGYV®GáÐô³ëøÊdsôÿ[×ókÅjå¦|2]S0FßÂÇÙå4»”uÐq rIŸFß7žßöÐ-Ñ»j›ÔuÊðº÷Ê=$ˆ¦pƒ+³VwÓÆóÄ<Kâ½BÁûR‰lçú^†}ÒÙu>—H}]Eb¬ö3Aþ7`ÈÊzÓJOw;8PFž€·èñ?ŒëÊ«P2™ñÎ<¬®·àì×/± ùKÄã%ÂL{ËHLÅò)Íçšæ. E¸)ÃdÀÇŒ¤Ù?–ÉÊ@ ¹fɃñªê ˜=½"¢Žþ›Ž¸G­¢àR¥éÊQÄê9Ç%e¦}mQ’\¶×ÒÒÜðq¬â“^âa|˜òô•¢è6²[P@H5Õ/ìå‡n´!ÇdÁ+È-ÐïÅ$ÔBÂ7¼¼®äè¬óµŒþq®d\.¦ï#lIqU8QT_:p |Dã¸k…•³fÌ>õú\yuƒþ™»pÞÒÏO˜[ekY÷ͳŸ¡‘DÕcã¿.ÎÓ¸°õïÔ´øª®•Ùç9·Â¬ {É0ŸkoÂHpkd8RQ¶!ÇŽ•ÂÑÒ”5mÚ™ƒîÃu³e§ÆG.˜ h‡IŒ!õÉ9©$´Ö_P¦ÍUõ U—ÉVÆNT(óŠ®°ÝvÑv±]f±îfD™îk;Ö—­+E„dflk¬-ºŠ¹CÁÉÂpÛ‰è Ú.c[xcây‚ÓÐŒø`Ìk?…H!ÖŽ,^Zu§ÚÏ_‰AJ Í•±Þú7IXäµ6>t:ˆj­G4¼Ä„ßCš™æczü) ;ã³7†ŠÈ–uâŽÆš}5¬¬]÷£Ü8š@uRù(òº5ˆ£Œ{w…¯êÕ:›SÍeOÐ ‘ýá:v5Ev‰:ÞoEÒN3´ÞÀ$ª—£lõ>a‘ý5?S‚£éϤ2øÍüÔl{^Q›0 Ôt÷Åÿ(T& vö¯ª®=Ü“]¥¯Š…LX~Ò(;Z Z©w^>ü=ÖHV]Ö¯ùcFnàm§Ü[û1(¹ûÜ=J„Ö7âð49ñxÍÄ0jÊÛÂË]ÓUÇkDþzàY SzÇ4¤Z é…âlKÎE%ÇŠ-Gi”µf¹Ý:©hcí¢9^(³»¡îrNÁ§Ñ5>0üC¡(.ÐH”¦m üå(ò¦àP\¢Û‡a+‡쩯UؤWJËï’›¾ÛÜš/;f7tا¶l|2ýs_Ü«§Œ|^GktAÜ}ç³ÛÐ{‚ÀGœŒSµK.Ÿ ¢ÀºˆGæ!Ë9ÊÐrsþä•#ªYà™UH'ÑàgB/ÏNAÙ&¥s\Å6ìõ-“¡ó¾@[rÿ'F¨A7¶žŠF®xÚQ}¹I6ù=wãâ>· A¢$˜– aD=/“ðUŸÐº91ÊxºÈ:½E†yÓ0ð*í¨þûJ1——^“ )×=`³ºL‘"-ñ§u¿–ÚÈ-t5\7IªYÓÔ!K4ý+‡:-Úµ,Ù[Ž>ÚF¬õ_ÆÚ|B=žðÆi©¦’XùË„sm§BDÝj¸.£+…ùë Ö?š¨DGªÒÙÉó ëÞ§¦ìBdbFQ$åü?AHý,4¥™£2:ë=ŒÊE›Î^v©DpÕ‘¶¶ïjív±0õ<›ý/ÆÑùÅåˆÆœŠ B}+Kno~]rµ¡®K:×xé¨tïwŧë"Ý̧g't|nýÐdW¶˜FÛ쨔Ò]“§%Ï‹1;x7›7‘ä—H¶õˆ«nÀ•iô‰Àì5Òœž:Ž&gJÅÄTÁz¨æZ©5a¼kN„óËŠ«Ç”¤V§ãßĪò })®—w.Yq¤$ûû âØü-l'Æ|HEê‰Oÿ»1ÛŒt°4ìã{¸ ±&žL œŒÙòR1CJ‹î+ù2…GšM‹áïúÑ¥´ifR"ø¹.@Pªÿ CàcDZñùØD»ÿdØØ;wå"t'OðL5$‘ù Ók¶!žl¿!~.æÁd~ ?º)2ú¡ûd®ÓÉjÕe‘STª íþãNPªAmïâ‡7e %å')7Óºu£àÏ•¹â»ÁBóÕV4‹ò††KXò’×PþgŽ Õ9­®dYÜ¿#þ¥ ,›ÃêTÝF¢YšÅyÝmìµz4‘jIÙnㄘC£íÛCL¡ 0„ネ)Kú(ËïÜdk@K®ªÝæ½kã‹D¡˜a‹6INû—±Ð'°UE¶÷= ž¾S\¥À~´*ZYê˼j{ÅfzÑûã©~[ §Z µÊ–4ì57~8hMK‰Û/ˆÕ¹œÉ¸QÖ0CF¼ß­ÚŸ8nH 5BÌ?R Ì"‡^ð-D@ F‚àºuz–k>DÓâ²’nÙâÜÈ?²éMÍÊð» 8âY¡r™OvõÊ$"&|…²àSnì­)~.öËqÀÏPö†%ÊbO£óû9lž+{{ÛÙ©ü‰ê˜]dÏ£ M£Åô®E‚ºZ³¬Bâ)/dÝý–%N÷¾æÈQÇ]lˆlB0Þ~ñ“…^^¾ý@'0¹Ý®gsǃÏÝìùòq„Ž¢‡yÎËïjñš¯óê ÏHÂÃs;ÂÜ’‘ŒX:•Ïyÿ¯FRÉ5¤gd/B¸xp$ÎÏ\LÌh±ü¹`ðôD¹Û•[ô ½2ÜÐ$§|v€1ڙϜÜáŒûÜ.l_7®È(ôvã`0ƒaeïBÙµl·wǾèaúVŸºé%Ê3”Yª+Löö¨?©~[M×?× GC´Ø Ð¹Ž¸+\[ºÃY¢P›ÊÝW¢Öi¸b;êz£7 @€K‡ €¨à'äS/ð ¾ËÀRÐ ½¾?å-ïsa«j³9¼‹=Ž÷«(k Nƒº¿Ô2¾N]Ý⿾ŠéûÎŽ}‡ØèZBD0J[J ß1«™¸`&ÚsÜw¶(°qÎv}6È?},ÏjZÐŒzÓM©v<8\cZ}èÚ„5”MÜ”s‘›"½„Äðp¬é©;` ‹ÛƒÓ¨ÊvǨ‘yŒ\  ™³îÓK `cûº+¹™LÕX´š-–µôÛ§®õn›M[°Q÷Ã-_",9“Á¶·þ¸?5¥êÀÆéeü²OΖ±½öõy˜ý½üb©0û”Del6y•­2k‡fûˆùª)ñÓŽ¬5¼q]å¼7_$LçÜy*ûï 2'¼°‘áϧöB8³`7*jÂjìð ¤å¼Ã³Ñ0äÞÇÑþ:¸éü^^vªgƒ%hú ôÕvÔŒNûAJZÇËp@:v6õ(¬ªh!#Y0Ô^ÉØtš°ho˜|Áü“܀ޑk“•øg±3 qýêæê#”ì®1 ðÔ± VH“[âPÆðh­;Í´. r5M-…Æ×Or>?ë½'ÒHnzh\—g_J‰¤âÄïÉ)wNRoç^i1ðz;ƒ&°<}Nc)–ÇfÿØ} ‚bž¿œòˆèƒè#™:ò Jfy·?6, ÏÆ¸ú•9C!&Ód#š6õ˜æ<üä ký©X²Î(EJ¸`7 O³ P¬G"æÑÉŽ¤ýC™~xN¥:gþ쬰<ötlÖŠ›GË.€¨´–îuS'ÅM©±¥ôü¤¾dû“Ý@—]9»Íèµñš“0=ÎÖÖÖLCEÃFÒJ×à@—î–Ê~õÝkeâ6¢uôySLº(áçÒ”~sUe^âfZý†ÚUþ˵4{R7‡ªå>Ac§Æã'…QgÏ_b+rô ÅÔ·ˆ?;¾}¯:uWóä¦Þx™ó2ò95µ4+ê;‘¿¥•s,õßèÿf:…1îën±¦! »Ó²ið5PêgºއTÚðBÆÑT‹-.ŽÛBüF« –ö$hœŸ¨íc[n S='A¶ñHÇü ÿ(õNi+Nz ƒï*GñSS*#ûF¦á3°F Õ{3fPŽÇ‹ Ñb¯/åaÂÚ˜•O¯`Þ{ޏ¿%nd­ª‡U¨"þ>ï/½5¾f tcMŽ”©§âéë%›ô­…>ÊÍŸ u*Ô>o|"ùh¶£·zñ™„ißeѯ»+žäÈÙÁÃ-«›à“Ÿš[óוõÏŠ¦¾Ťd[Üø$@Ï] þO&0 ’½ÀÆçD ªœAí³‘w([ÿD+ܵ´}”ý]˜ûïÍݳ¼ü…szÖrU;¨¯1ùTØk¹J¹ýGØ®è tìÛzˆE PÙYÚ›cñ…ò®‚ïÉ1hIô‡Õ³Eû«Mb§¥Å= C…*¸–ÀEÏ.±aÚ Øä–Ö{rÑC&e1]è±yƒ g¹8Ë?Gº'ŠË©—= êír‡u«ãU…€kOvºÒKqúÞ[ÌÒÕ2•Ž£† 2äSz·ëÅ1ŒMB²dÄÈç%¾bÔÃ÷®ðFŒŽ±+Wz!)³ùï9pý1ˆniv/i>«/¥i~UhN¥Ù¾qXžNÊ+Ï¡Á¼©¬PÑÿÄL ñÎF–,î§dÛÍ9ý¬L7ÎÙ3 .ˆ·Cp!V77—ZÁˆõ¶±ŒåIjèï$þúšÔ»nѯFf¶H¢ÒµWu&‡}5ûjí–W†/ºåRÏœŠu¨†ÿ< ðê• Ü ]ÌK¡xL…Üõü|4d¼Hÿ‡áJElûÙwÄMñwí“€z>¯+…Y7<öIJ ð¾6üZêáOG6Zsž$*QJÿ Êa_’¬ sùëxˆÕÝ=/Þ“ÕÍTŒ,Ò™òn¹ÚfîÞÐpÃr$ká³?wá½è‰  6i62jš¤L¬Æäö9M<¦tК©"%v,œ-M<1‰|!˜v[àí†2&£#R¢aDÄ {â”­›Íôs´»*²Å6$§”-mQÏpii/{Єðl÷ÒèçDZÌÈÍÕáY](f8gkî³6! … “´¡X­@:EpÄÖPéƒPé?£ Ãÿ=µënpIõÊÙá/Ó°¿Œ„0=éó½õU¼8k<¹8Þ}Cª|57Qª¨·ìjÅ¥Ï3ÖÖg®þ¯lõ£Ä•f ‹Œž>õŽ:`­½[ûµ¿‹†ÇQ__%©îÙ7&+ÝCö„¿´ïs9m ´­—Ú? æ(Ñ×#‡ÙÕpçQ µ [× Öÿxrûó¹¢aDöÏþf¥½ ûÒT×y£F7.ŸKÃEõêË"( 8}›÷ah¯¢3fÝ)³>Þ/„ÜÛ5íZõE0©ô)‘¡–k[ŸúfOÐÐÓF?Ušê5kà*éÈý¹WLpÀÃÓW‘êäE:c†‰G“26f8ˆÐpj5Gä×ël=›É‚YGßWKê v‡Á°vb&ðZ*¨S¢^Ñm‰§ß¦Þnû˜ †¾çGX;_U‹m«:ìv, J3÷šfLÁ¯ì~×þUÔÃÊsÁ‘íî[W‰îÃËs;Ç{·O†ìÍÏ\ÿ—[9ÿ€_QC0­¼]ãšûÁ†—pËYÊPg)¸}¿‹x&Ë®+Z’]Bî¹=+O® .÷ï .a Ôjÿ&´§WTÀFmA(ÛÅ7&úºë‹?9Ñ(À@ ¼{¬§ôìtGµõÆZIÃcødý=äÑeàiF÷ú&I¤–žV[ù ¾ÐCJû$ÜWÐ/ðÄFÚâ_XŒ¾'IÛ¿B":Ÿ™ÿ5:ýrÔ½½?(›)×>¯ ÉF»  Ra¶aª8>tQnI®ÔOàþñËu—܇͂CÅh:ï9.ÐJJBý„‚Lg&;êS¯7 $ ”ÚWA•ßûtÙ1—g]¸ÃN>êµVØ™ íÖÃ]€û%,`böšEÙl¼Y´;Î@ÇÛ.üðÌW“$µ„àÑ€¨èóèâ¯þ9-7q¯÷ë’ê¥-ÿçh èÐë^5k†›Ï³út…¼Öåc$º@̰¢C@åû†Ú½CîO÷©RLµá -ÈÒ¸Ætw¨­m‰ÿõ0ÅVØMóä’ÔSRn!,1w00äé£&…Ct¿ŽLY×íÐOéaÜ ö€TÞ¯múNI}vùÜóSS^ÄT3Óôc]¬ò{ÕÊСپ´iõ±H7·½‚²}žO¨BIÆ`ŸÙ†ád ¡t%„Åq}9ÿŒX©.SÉ+ÉeCCχ=e¤ƒ}ңƺÿ²g’˦ZŸÅv—àöDݱwR4[d;'è›4—Ô÷«Û:Þwñ:UM'ajâ³¢­‰é\R“?%jìÖþ~«f—ñn*`e¬¾ãÿPýòF1±=©dÛîâ§Å±ÅñØKaBäúͰ~*)™ÿѵ'BÓpÖ«ÚywV°šŒ¥’{ &0¥"žUÊdct1ÃÊ´±ÿ{лQêé+œ6¤‹bgŽág—€ž½+á½ Å5|vŸdnî¡¿¦ª”èŒLîŽÈšŸ±Y¤‚ú¼µ¨I€wðÖBF±˜ T›fú˜rü(`Šýã?‡Òo-Ð ï I‘/ZB­Td¡V‘©4qWÁ—1=¹[‡Å”ƒ¯ ÛÌâdÊŠ{6ü*s½è’bëE ñŸ+¼mjãÀHåÓß÷õÒþ ®«]Ql*ÑðÇ$ÿ´kF>ÿ¡,Ú‰Oõ'»šÛj}Šx0‡¦zg„‹ur‚õŸ¢ÏlŒ¥ðܧp¡ m²ÝÄÃí£YÚÔ¯Ò;xo_ø˜Ü”Ø5a‰«§\É‚Þ1„[5Ðî/³öIWú¥îáÕ¿[f*—‰A*µÒ0ì‘^xöÃ`+S³“ñ¦Ì6\ŽcD;ûiÍæ3<<~ÁøocÌú»iŸ8ý]”<ø‰!æÛ«ì1É[4¶„ùi‹Ý©óò®K+@õÚâ±åt"ïèwÝ/ò¬Q–Mh%¤}Ý—ïcX’Vߥpµ«! …»Õ¶xñ¢–ñÒ'ɼj+á³ö³ yÓIΕˆÝú‡wDîLj`åÝ8Ž=Ÿ },¿äæzz€ûne¸ž%ë_;Ï$Ü_*Êò&hÅ‹Züê`nìéûÓ¡˜Øí&dräÆBBBBËr OŒ‹r¼Œ{ûë‹25;»d”™¸2ï§t+”éBg(gµ©GEÿÕäïÃ5½HËÝ{”×vyçe~+ÊÏUÕiÔ½¢aþ–Î*bÈ!ÊçÀ¡d‹ò‚L»sõÉ\¥l—Œ¯³Æ·çŒ&•¼Â§—U=%¨¶¢öx£W°‹‚6Z u)ºU©¿Ÿ°f©Áqwu¢Îö°ä¦”År æNáSL8"M`#"­WÔ9×ZÛôéV£¨)$J „'k)˜NÍ º<‰®¯ÄѾŒ¹1w»èœß’{0+%ÔpCCS ðl ÷®‡–<µÏÝ[µ ½L‘Öîº#Þ“6EQôžž²-äôý®—ÞžRo¼J~/àyý.´Z™N\Fdå.ºOEA£UÁ=ò¹†1õ6åä– \Fzk2”4ÿÐðÁG̲¨z¨jÆ‹×îm¯4œ´‹®s”ÆŒ/°÷³MñÖš¶ò·øqœVå¤ÇóÚÛË*Ž@Sd䃬Ñ“û‰ò€m"0O*^J+"“…P‘Kì§ ü’±“ºq£™Cç[8’nŒú«›+ÆË<î ë|ã ^“@À±kCxÿŠ5H¡W„†í‡qs sYë®÷°/¡¨•‰s«Ûên: ÆuÂͦGâ{]´»ˆ®P2N‚Ë÷WÙ—Biý »|ÝÖHk<‘]û8æ|.3A¼å±BÔÜjà¦]©$&I¦¶ ;ñÞ®<5$ÝHäÀÝ!¯U¿ïýU7[ëwðý7éþË$o>ІˆƒÏöÜÒdDñtUl6ñA_gÁ¿…þ’ž}©À»?›ñP–Eh–ÄþÅAˆš¹áÂAj‰—%àÜN‰á×Îê§EÓˆ.á[pÐ5;0¸vó›f}vz”æ¡£í[q<‘ù²VSÇ·QV )¿ì‹æej¦ çòbˆ gq>Ԝߟ ÿ(×>Q)àúT¦/w?gÙëñ ªû [ÔV)&]åa Ýz½ ³ünŠÂ2’Ó@ÛËS&ŸpÌzú™/•Îla]kè¶ð/Yæ žóÎCãP¹oÀ\«ÙVQZ œmÙZ—¬â"Áu”ÍïÉ}€¼EªTñ²„‰ì;eZ]ðT bvìwz‘r*cqiaཋ™Û[„¬6DÏ*Zµ¸«$œÚh8FcŽ.‹’xi‘î õÖ">†j«Vö7iêoBÁdz¬RàŠ,´‹jLÕÉv’©AšQ&ão&=i$Žõé*é©K0ö¥9'ˆoE°]™•=¸oðày%È&wxÒ6šJŽ­Õë-S”)£ÐvцTŽì8g“€…a9•n³­õýïPŠE&Û×,J³÷_e =ôv‘S¹¼¡¿–ã1<—.ƒ«ZœÇùSŒÅ@GßËX†%´_‰QþÆx{œ Ù¥KgߊŠó;2¥Ñ‡Ò]ÙÜhDÉ´øº—fûxóøC]BÏ Ïf­‰ÊJKòsä57ï—#ëÍJ„}Ê‘gÕfd‹ë%ÚáPP9¿M;7¶nŠŽ-žª}¶¼’Î$ßBÒlÄÝP‘m˜]uRµCýb~nRs‡Hb¼OCu¤ÁnVټΙ…½ã 6ίS‘åÆò¨ïZɨü?áIÊÒçyuPÛÉÿN.G’–¹ë²2Õ°&o•Ô½õ"@€@òÜš³ß®C±ƒ§'¼S1ïö´¶îÚ)ŒÀ2·)œB›MÀðï‹›j)¬Z0¯ƒöÅ8¤úahÍ[CL~¥“j3ÏKSHHâ/dªV<ö_ò¾a¼ø=¿¯Ô›{B y÷_¢IÑ?jᇡ֠*n1Å'Û‡ N”ãTµÛ¦‹O>Ç(Û'b‚OîëÉJžÊCÏÅ…»Á¥œ÷ò[¨ó=„*$x—Ö¦š†©’NCàK§7ø.þP(;;VœŸþ.äŠp¡!=ƒEBzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025413607166133031614 xustar0000000000000000112 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.783788879 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz3.dat.b0000644016037001603700000007070013607166133034761 0ustar00hutter2hutter200000000000000BZh91AY&SYV½;1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà9úÎúóÀP()P”$¤*¥EÖKm²XSKì5]%Kz÷†[¯ºvÞÛÍÑNö{ºÛ;w;Ùå×]Ù½]wo}ðQ½y¾b×¥n뺫{]®î÷³z=®úù÷¾¬zˮѻ/{ËÝ+Ë-›°ê”u[ÝÔ]³j=”¤;6Û¬HBµ»I›[wjã\»Ý} ï—ÍÃRÔÄÀL&&SÀdÄÓCÄd1dÀd2i4Ѧ“O&CM %<ÄFSQã#À&&™4ÀLL¥&ÒdÀÄi¦˜M621&Ó&ƒF˜˜ F&ž¦ €0L4Õ<È4Ði6&š˜4É‘ˆÄiš Ò’hO!4ÀLÉ£LF™ FO&‚0˜Ò`f™ ÔÓ6©šSÚb§´2ž¦Åz124§ähшhi‘¦§¡4É´Ôzò2§„˜OCTR)íLi4ÔÚÐjz˜b§è§šFeOÔõ=M“<Ä42i¦SÔŸªy õ4ÓÕO4Õ?CSÉ6š¦Ú§éOÒŸˆÉ3ShÊ”öÑ1Ol¦OÓSje=£*z<¨"R™LFšFh§4›A‰‘)â§é“S55?ÚM‘¡MµO4§”ýSÒmªyCÓ5OSz£õCÔòjž§µOÕ6§å2ŒÓjŸ¥L¡ú§êF™=OMOÔš4?S(õ= õ ByOÒš”„ &#&Œ&¦ÊcShd˜=4SÆh&&˜ y0™O0 F £LôÈbj=0M=ɉ<#ÔÀSÂO É0Ó*k‡@aw†ðÝ–Íy¯.CÈv¡½/ˆP,/Ƕ † ô0'ð@ÐÀ–/è¾3‰SÆè‰ƒð™4dH¦\Å-•°­zŸLq¶´Ø/¥Vço«Úrâà!üóÉ:Ïó·Ãߪ9æÜßX+~çúúŠ_Åý¬)Ì5™iÃz¹–š;æ1³ÿߢqaw½iúô}Lô;u‹´äL´‰?º]×û¡dTÌÅaä¸=ëe°]ñp`³«fŸí±u$j¡aµïF¸Ú^¶Ê FÛ¸]ªü~ Ÿ ÅH4ÂÍ¡Ã^0Ó¸ZÇ„öpˆkŠ b™2E ¯‡®1àÓá4#ÀÓdР3bÀ— –‰$B×QÓÖÖ@U~EÑ¥Qß|BR 1U‚6DCÌŠ¥ й >YLÌA®  ¡€@QT~4ETTÃ\Eg¿PpÜQãCŸ¨@¡8A¢†)³J ›¤2CE Ph&”ÂZ¬@th´fDèFÀj \!ç2øXD‹öhA:J…" øœ& èÐÁ„Y´"‹ Îà´Òhb2Àmšb€y$>éž¡|Y 9eÊ2C¯=ÚѨˆ\#χÎ * œÑ{˜ ›ÉÐ1ä=SÊ!¢ A1X( ¸ ©h‚j"E¸_„hàAs5— B ò ²iþ] cH9¥ó£ #ÒæT} ¤…›9œGR1VÁŒGˆhÁ›R T¹˜a~=!¥½‚˜*å7$u„ÔDA;Ò*štû8T©y¾ò€È! ôPks€P†xbèÙPçñhº$†u— pÒyAD¾"®Ê ¨bÌWTŸ ¬l†ðÓPM[•o0Ïà!ïªQVñgè÷"{­…ýG4ß°ùØçÙ2-5æë_ÆøQEä’U Š4—Á¤—x#”$v|LÉu,ÕbÑÐ9Ö†*Z¨k… `º7­Ó…ÒÐe¥(-Ô!Ù=Ñ¿¬ü3ê=²Ä¬¤ 9‡êÔÏqh æ€Ã’ŠKdp*Á´g"@ÀÒzéh.…ùndÑ["J³üƫٺ`,qV+Õí­5‡Áy`ôÅA’.kO¦h¬»)²ˆ™‡"Gh+,~3VÁ°^¡hŠ”èÜ'ª˜l@í輓 ¬‹®<Ъ±6>1…Ž 9¼ÑÔŒ1ÛI¤Xƒ¡×+sÅ[¥°£¦TX¿,Ùö]ÿÍÀµ .€²ZŸ‰‰ˆÅ€ÐÔÏÖf^¢~ò–D´½m‰ Z‹3£Vrû[ç"¡Ë8þƒx+°ãrÚŸ“¿=3[X&ֺљ iܵ(E0 ¢Tv&Q0×e‚ÒЬÏX™À±?n]Ñb XJâ§Š(ýBèpÊÉ,ð.,$™«„¹—’1¶Ðð=DÌøÌn…³¤t‰ž.UÕÛd {Æøáã(ûªþ¹{³b8ã"ñ+Á#æ›>àñ< iѾ#—ö‰Â5öÍTÃy™´Ûv…ý­Á,Ðém0òºÒ´ëÈleÎûŸËy®×Wó^¦øíâÝû«µˆE}œÝñ9ê!°›Ñ«°…‘ØåZ$ñûf>>§Vœ”{‹HþÓäµ jšOX®ãSlW@`’I=Àæ_˜"߯àñß)üˆ¯2ì9w'†yø¾¾Ü °ï/nÞ`€‚¨'oø:^5–ŒÂ˧±áÔ  '9aAÈŸ$°LÙÃ7„’½Á¸¤p s£Ñg–«¯†JKp3j:îó¡L9Ξ ¸»¸"b5è´)žý²|p.}ƒRI¥ Ø:ðǪ¡ÜÔÚ/!Å#±¦}甀ka "TÕ•*/ÚÙÐŘSä÷ºdvy¢CJVz=P¨rØÂtbD— z ù‘ C<k¾p‰vÉ $â˜Z¢rÇݯöü5øpîqºÑSh§ágj ‰ú‹Ÿä*ÒŠ”+7¡ùâˆío‹*ÎO¢ü!úø¥¸h`Ãui'CƒC:¼"ô:I`¤ÕO\½ù·R_w„O#¶9‡Uþšç ­iDžøU4?Â99y„2ÌœkÌÃJ,¥|)T(3sªÌ·Äìâ » F½4^éÏ”n2Â–É ýîöªÀè |Qx‰N"}¨PØþ Q»´‘oÈ_ì«¡³‡™¥ _’Â^è‹à°/7©H¦’£p?Ý8„NWÆÕó¬S% óË ù]žÈ´»ÿnŸ¿7düÅh<{÷Ï4Pv'±¤¡ŠDL2'©2‰:ýX-Qlœ¯T ë'ÜÑ|Éù1Ûé÷ó‡ð0ŽëU“µV@×ñãÄUѵ¦˜è ˆy5pŸ|]eGÈ6­Ðqu…´^x hÔtÄ{8r,wa¬:‡×-Ø8ƒ„P^_Ù(§Ê ÃbS‹ƒ¸~nR³r}£¬0ÊÇçîèì½ÝÀa–™Z-»0¥Y×[´à·“H_$iã~z"²H!¡öN‹âë0ƒGÇp†£4W¸4%|;NÞ¬¨Ï|zÜ8]9${ À4<šTmt;žÝØ6ºüuF²94ÀW*E-žî†ðÈ4|ÅÒ˜|nÄá¸D"Ãêv›HI.`Ò8cšoÎŽ >ùƒ8ð‡—8-M£¬-¼c˜kË;„í|lN×L²ÜJ¼*„3åxv½\û9¿êGöó´9YuÈãbAe8c´|–ØÓ@Â|$ãã ÕmÁ;“Ud®ÕiOù6D¥Œæ‹SÞ‡Jw÷ä¶)ùß<ÔesmÁùÍ€{§ó/ßó“섹1‚]޹Ü„ý]”«á³½©µ°ûš0qur™ÑG9ÃGxòçÉã§>>ÓøÂÛ¿¹ëຯK Ö¢HAI…ºS½hwFHJêÌP9£pXVeØñ¡Qâ§ho“Ï+zÐÃ%n¶ñaªÃë̘ÿ÷ì.£ kãÖCepá˜a ->;ImYEŠºH:%‰E¬´C¬ IŽØDåHÐ’"©œ_bþîâaР¤‰ŽSm–žD€B•¨ÔZ'ˤqhÓÑ82ærò ›/ŸH§Ò&!¯ÑåŒz¹ 4ëO ¬¬ó¡e¢%NÄ-©ÔÁÈFwgØ·?,£Ý–‡µçŒpÅûç¹-%ð…Ù,\îaD’ c0Z¨´y¢ÜjI";ˆ:ÀÊÈBªÔÿ€×À)(h#eˆÀäeg †Á©»¥Cæ8ñû’kKXA°hb…LÖ¦î÷»;o´“`ï^«1€Rð=¾ Ž! á|óE•*¯&Þ0› €âcÌŠCPŽÒÊÿsxž¹×[•’¼’òt៤cP!™K^;­¨Âžcð’ê•õõK²¬+ê{V‚u#?qBóãL~¯[€Ä% àëèÔûÒü¥ a©pv„v ÈŽðE˜ÞWyçjù³p«¼,‘o1ƒ!›`DƒnÌñLNæåƒ¢UòÝýå}²Ù¬°©:GaÏÖìˆUÆú&À¾êæåKÊvPÁ憌¡£iv‚8™³;gÂÂPŽBŠEXJqxH°WÁñi¯'ImÖ€lz½³Q5R³JZS$+ ˜>ÓPo°0n…7s’G+"jÿD?г›g¸è5ÚÅþ«ä¡Âç©Wk”¾ájiË~bÜW4P¶D0ñE¦ÓšØ|O‹_ª¸i~­ì"¿Z¹m–ÏÐê»øà b9ú­Rôu‘`òÕi06&‘µxürpÁ %Ç÷GZïhÄ ‰ PœÀAÇþŒ((-óXd¢Ë©4£¹ˆÅUm“ Æ0;ZË0J1ƒ åýGÿR™š¸s¹þT§£SzÑî#¢r)_™¯n¡¤(î§ö¢³›Y<#ï(™«œ;µ/žðYð!³v‡æàŃcÃд¥(úÞâ¬~dtíÚ›/º~L6€käœH!Á08!’ÅåAœéÁ1´óÌ(]Âùk&øßë`îK)ðÁ€;$zì½5Ï{—…-èä¨X^{°¶°¾Ô|“Gùý™™°ðrý]+Ñi!Ú0ûLþÚohIáÜö¸1ºÚxË`ß0'÷‘ 1ö h‰Á¥]Lð‹›8;]Ü:òfõ\Èeð)òÀ]Zb,y”i7MƒZgZ«lXO½7$ ü6­±ãG6üF¢/ÃæÕ!ÒØraR‚DJŽMÀpNë¹y°ÂÛÞ¡ýþΤsMø;¹ªøþSÌf5Ýϯ¿ÄÜo"Ç?fϱZܾÆVë#2œÍÉqÛuu¢ pf}vv£°Ç”EË4|U_.±z~7ÜŸ¬¨iæÉíÒ7gEÑ\‚<ë.õùr,¿² wº‚@YÇÏÂE–ÖŀГw|´¢CYøóVÆUD;süÄá“ãEB åÖÉ2÷>4Ú& b8h” TØ6£tÒ÷ï(¬Œ*©£À’ v‹ptMH\ôm¢é½#Ǩùl› ¥¨¥DKÁ8zãW󨬗dµì1¦Õ7eCÛÚýÑ¢|d~ωÑ-NÖræy+ìóÃ…% íÂõœùÕš–ç°º3h´àrRÀoØkª0Àq!óÆ@‡ÎSizôÁ¨!Ól¶o¤+BæáH¦HÁ¸,|5*ã">h«ŸÕƒ‹± îoT¸ÿThå9š+!dì{[ú'\‘ƒX 'Ía®1gØâîúçÕ1zCé§SñjKf]T D]K’{s9‡S¤ThÄb\UóÝ0ÚŽü¹Z=Cl¶ÄMç_”zv¢ÇÊ ZÊWžtù"hR‘Z‘¤¦Æpa°eO°p¾qíÓ6}ãr‡ÅmŸúÆäÆ\rN<Ã@ñ†Ÿ(ÇÖ§nFñV¯“«j5Ç×»Qn·…°¨Ïæ¦ÙfD5²¦÷yÿ³6NC- £={’T‡£±¬¼*¢kd?Uÿ ×äµm¤²fÂ^Å}R§yÙ¯T_$Â9¶…ýA´ä×Ðzw;3¤Ü–&ˆ6t*>1¹K ó^í-E'$áH+FêjÀ‰ò¡rÇňf]ûGJæë†+Sè¸CPÞ Amšä)»¼ÿNf\¯ãÌNß•}I.«ÉÀY D)‘@?R%" ˆ€Ý쫺áè…®šUõ娷"aÄm)×£±Rx1äà5æ_E@Žrdàø*ÃDi4âTš&ƒc{½Ä«8)ê#¤Bïö•±å¾‰é­5¹·©ÉP\²X}×ú©B À´G‹þàv†¨[¡øâ/¿h ÍÜsb„ õaö]-Ló ‘A³U]íª‘?|6ÆgÕ‡x3ƒà`=5x}% ÁtFô,&¶2y±0VÓCEI§"os¹ÏÏu‡ÔëfŸÓüûBtÖ÷»œFG&"tVO`‰hÞ4N¶A‰qzP#…»0¡‰åKs'-¼&GÒ2£‰Ñàv p±W˜\ÀabLj:C_¯Ä½åVÍ‘AhÒ*šé Bã•UN0¬BpÄeÁ0Óv¬7‰PhéÚË,¥*cÝØãžÐf ¼øÅ¸ü³ºÂ4Tï]t¨Äz À¥ã!XG±(Qñ‰6#>G° ‹KàÞë‰@ 9?má½û9À]Pb5êñƒ¿–詎ˆþz‘mž,.^EÖÓþùKÄú× ³9&`@(”^•-m ž7e˜f†uÀ¨ šXb/Þ=D…=Ž%êåüÀ1Mrrdö•aÇñ,0`?;–„Ü:6e=·ƒ\ UÊÓ×AÚz¼¾w%e—„’œTbT; òbȃaIî"¥ úŸ ØÛ>ÂéLxÄ™®Nmd¡º Ä]ïÑwØ’ã1ØSAKÇdŽÌUˆ7ˆât¼ž0ÜZ†üŒÆ ø>дyâ©¥B_éÇ£üBŒ x†w=‡•Ð&=Š‚Ûð·xDÉ+4{% ñ«Éˆ¢Åj«é@À¥½Z#„e^ÁáA:«í5J……Qz%ú ô.¼JF%>ýF ‘é?”Aãj¥‡|0Àɸ\!஬ü.·‰ðk]¸l3 }P©ú†Ë+µ´¾þ%‡I(ž˜¢ãkËÅLß2~þlàå› )ƒ^Žð—Ó¥+LšÜo=þfwKlØÛ¡­QâÁ—6£'Í(¢p0I1O»ØáU¤¦j §hˆÄ k{^c*6ÇÓjÙóáŽæ à—¥Gþ;`E--á•aõ:dQ‰•Š 9rý»*>7©›Ü‹‚#9­>Í|‰:fx‰£0@Å÷ŒFÁ)AxÿÇ“Ìú<'Ñá6ï€À¶YsœÎÛÚBÖÝ—fÏÑ£¤k$pîöoð\@WoE}ä´Ñrjªðáü€0?†1[§®mƒBEUçõ(Gd¨ÂOf½zLÿ¨PºkDò¸Ï{ã:˜¸KTó³+Ú€áôîŽuÂ"±R¿¸ÔÓ™ P8„FüŒ[ip¬äÐŒ…ÜTVGÁ¦È7UÑ¿÷°Äþ¡·½€°#mTCI6ÚoÝSÓ´±Á]b—J Ômä&0£’$Â2X†»1¼;;l?n¿ÇÒÔÛaÇñTµÏÊrñÊëùŸÖO¡?Ú­ÔÉòî±2”T«zˆ¡…ˆ`0`Çl=*mzJÜ:Ã(ò¤â ·€ÿåõ‚Á¢!Š‘ç'«¦˜¾¡V ýd«(ÓÃü\¹\§«¬È“µþ Tjä\3‘ãPž:*ò ÇC¿ìÖ¿—ZÒ›%xR pîÔî´²{J Éiuî˜~8±ë‘>ˆ£aïlÉôp~üK û þ‚‚ß>‹‹ÜغDÀé/Ó}í"G¤;GÔŸ£§|ÿy¾_a<«Ð!ØGê4]NÔÉ…!Ä8®¢Œ§È]æ.²-öLÂan{1øÿŸ;\#lÃB"Šß.N®·Ï€qãsdPÈCåCôG‹¦ d_2¹jAñ#O ‚XMœ^.CwzeæìÇ*Û–ÙÎ(9fÍ`«¸8IBä&°iˆØ"U…൧ÃçxzjqQì­Rï”FŸæÜHWŠS†ŽC`7¤[hŒR³ßi%EÙ¼YƒQf·š!Ã8"ýG)¬g¦õ©m„ßçý¹+„1Ø×*` ,6 Ý;«l‡:îYb«úmùC¾Òü¢I©¨‚¼—/#øÝÓÇlþ¹ÿsz}×ÿòe*¡²@R[ß¡9ßÀñ„* (ª0Î ôÙa6~޽sa–æX÷ÖJ†„I㋼ãÐ/V$¢ë!1…}ÝuwÍÏâM(J²ñ =¿…×7¡p¶ÀÜ`å‚v8ʼêWÌjÔ ’ÎDQ˜¾Œl(^s«®#¢]äã¿m¥6Éì›_¤æ6“Âîõ4sR0Š|ôÛÏ+¶!?˜‘Íât,›ÒFjÍ]¾¡~¥QHDB†ö‡ãì‚Ë@x¶äiZ˜<¾u?.%«7A繌½kaMc£Õ).÷km-;àæ'Ú¸£ÐÁ¥³C Ú‘võm>€èg ¤>áM‚x-[,Ðy:p„F0Eì"|IH f¾÷ùnÁ¼ø¨ñ#ŸPÿMÆ’çW6Û×8…”hn• ÅÙsôwÉ€d×IÕ‡ó3@Ž^ªÕÊõÖãÌ»´ÉC.ô£¥Ã<ã”Õ¦ëìäÆa î”û¤îihÛѶ¶“KÝ\³ŒÊ ­ Cò1î¸5¯ Åè[ãÁèm-€ÍÀš ðGLðVñë` Ot@éê€à|Öçd#¿7fLlJ@çïqèJà>­×âùRÆ«©·Àü¬°ýs(·[i Ã?áZ°Å¦–f¿§Å„B×ø‡’Y8Fqâ ¦M)@ÃKˆAãúž‡:~ñ¬GCtRö º=¿c”B ÏêçÕî!=F9ì™ÃgjôH‹9à\¨˜B-¡N3ïT -äwVÀµï%ê«xŽÇq×{¾çͱs¶óJ³…!¨j»âdÔ fœ ƒg]2X.‰ºë¡Æ,-¦dr„þïß:žÌ“¿hëŒÿtC±@–5³þUÅS¨‡è$Hw‹‹šcw½Á0í×XOÒýµbó‹´¸!v)VPFÖDW#S2b±\ø„JªöÛẖƒçëw‹ßÞý7ŒžI– Ù‰j$¦œ“ƯWepêKv‰rA¯þºÕ¸7Y5…=§B÷»¹Ö?‰ðÔgaO{óÔNˆ!‰y6χÏ&î—>ÓKŽ7dÓ>¬ãrÕ Hµ_©@é,ïýžõêU—±Ÿ¤î¤¢È) ‰½œ`uÓã D^æ‰A–tÁwÔ6Xõç`>¤á©íñ DÑYy©SqÚ¹½ô‚®ê"ä‚\l¤ìˆ€©,„ÅÇŽ 0úéj98A„;ï(¨éÄJ¤l*VÞYùžò»ßiÞÖÿ³$ùŒ49*´*J‰P ´F™å}?·#Rúi¬°PeƒäÏõaŒŸ3)öÁD”ù€åz7ïŸË†DS Qg'ÏõÖ‹'¼õí,{ªWBß›Hb/¤C®hzµxæ–¥{Ë–“ûa!j‘áðc¤mý\ä!eýÌðc ’yæAž\ ®ýô…Qß6íɛš²B©“­"AuÿÔÀ¹“SIœëÜç°5Œ§°Oˆè] Ä8Ýëñö¶ëfæ;†oÛ²~MÏ9‡¼ÀêýË„?9 !¶?œ{Ë5Kš‚VO‰¨6n-©Ï;iZ,¡)&ââî¨cš<7 ¨´gß³Ð7ã] L@ã6í91Ù7e8šNîÙšžÊâîÏó—U–v¼þX‚Qú‡E²œœN`UdÄeï_¸©|ÓF¢Ù÷0G¹›hÙ_*.r\ì± Þ|™ŸÓÔîiŸÀ,cä>U°†ÖÛ®9öã(‰Bº®&öX(TãZzžÀÿ,Àpð(eÝì§œ-ë|ÉTXá$œ·Sõ˜­Ý»Ü^Å£bñïFqçl(NéYcZSÀ™®»>ÌÉHo":èQcQ‡ ö‰H\åbLäÃô-xÕüÃÚ>¯õ~PžÂIl>‘Qéšš:à·uî촤Ø^á?xmmP¬+¬ÂÃæœw¢T§+AH pBئÊ^‡dOÒ¬žÄªÕoa%ÙÅóäôŒ|߇Nˆ…?ŒÜùñ¨æÃ°Ò(u/\Áô‡ÁÓ¯1õ>O€†Ð>#Dôû7ÀVVO.çq¸^ÒhÐ*é´ñ A Ì""Š‘¥Â U>ÇJÐÓ½'¯™í£¼AOÛ!!œ&‘œb;²Ü>=ÒJÊd¬±¦êñLQ½'ãGÎÎÇq¤ˆÖï©¡o£+Ü™SΕÑÚÖ¥PÐ(˜SŠÙ}^ŸÁBz°ålÈ‚+pÐrغÒD ò$€l™~5ùÁÐK4LHýX®‘ùÊ.§·õa  ÒÖç`òžÜw¿¥5{' ÞæŒñ í–mó¥ãÁ>ŒTAÊ›¢‡ðòh=WH@‹P˜x ¦ÅUd'ÞûÚ×ácäËž»ýÁòo¹Œ§ZŸõëÏçÊÇÛ#5º¡ºQâ‰×^ô  õœu4ñª£ó¡(¾8eQ™Z,›ø!u-Zºðàs#Õ§Õe&ÿåþLz—ƒ? Sï˜éƒ·„0æÏOg3Ï6yö¸½[c½&Ьãë+~à"0[Љ¾¾èsûñ^Ùw§0à?†‹{†pÒŸŽ¬q%Òš(*8¿ºwo¥…Ì+ñÓû9ÝzãP›î‰6KBk7DZ}™³•Ðt@#²t‹ªml-8¶²0Q)í›Ìßœ’iλ¤ ´Ù ˆ»Í²ú棵Ʋìɦõ;$=µ]{uà¿–BTF`çø}$–G½\#åx¢TA©~2°tꨴƒa§Ü,úÅI¿ŽKJÒXí®Oë=ej ÿG‘q‚ôifXÂÀÞÕ3.psN4á<6– <™RŒä_(;ì¨z1'Á  ò£¬šÍ¿4Æ:c¦ ý eï!)xïï'. c³&4 Ò…øu6æÃ³XBS= À ]³] §3¼ò¶ôDdáݧƇ;ÿÌ~EâdqûžµÀ;Uö+Þ˜`Zø°?Ÿ€€÷+ᚆ/œA·†áb (Ôú;(ÃhNçƒæ¦Œ1 ôsäèg­y‘^¿Ðfb9]Ê`5aÖ#ÍÈ,Ž‹ÏÒWUõ%&\òjs1/â/;Að³5Î-{À¨ÿÖ€o4xñ›¡š¿n½ý®ªõ0¡E ¸Ø­¸ƒ1f¬À.²Èµ‰!L®¿Šj[ü~ …æaÓüœ²¨Ö~ÃmõȰ¸¿‚„NÚ‘uÝâÌx¡¦Ø1`ÞMÔ £Ž »Á$ƒŸ´\ðözÜZcœÊ÷°ô©nlwšÆ¼N6*„Õ¸ã÷©¶×Cß6›ƒÁ°¬èP€?íõ3Òº¦SµäÂbâöˆ(NI-Im?ä¡L ¸]SAÕ²Þǧޖ/³ºéh¬ZuÞ]‹•~­Å!ý·¶“ñ4®ÊyÁÈ^DÌÆÍí^+Ü-·BÔ,YL—ŸhÛ7)Œ‚;®¡ÎØÁ¼hÍlP>¶0ÛŒvÿص•3ͼe·ìë¼Ü4S8¤‹ 5¦(B ;‡Ùu|ÑèÄ­ŸÊ˜l—òlç?j̾s#ÿ‹½4(|FО=cc‡ßçÜ|¦{`¸¢äF„„¸ŒêÜEEýãX*rØÃJp£A>§‚À¬"em£&¯pm{ï!˜#lYúb“ÿE¢IWCD=7ÒXBH<œáΊMCܱRøÓžÌeËÜð9ƒÕÄŒðhDü`Ÿ›¬nÂO™¤…йÚ>Y²¼~M›6[ä>¿Eùãšúgm†`a#çÎ…ø|LŒ;0 éØ÷ë¬ýö+}£«yÏ(kòd¾ÆÁeRV£Wx¾"hÈ“‡‚M Õ‹ž¹ÂÕA4 À'è' ±ÇŒ§|˜©-²nÝ‘Ôv`ø?׫•pè¥[ûÖµ~ z‹âl+bz‚‘3+ùÈNÁØIƒòOÁˬ›_hù"Ö¢‰RP‚9Gå³S‰e§÷?õÏú“«ûëãî)ˆü$ ÙÏQb Ó´.ì7°-;­yƒgØèDF¾ aûbxñŒ’=éÒ*À¼r·{­—Îû¥M'w¿…h6Ä U¤Ï-x-¤(xLEq¨ÝøµìhÒ膶ð ê»iaŽÍO¯]}°®è~hPK» aÙ•ˆK­ûjòéu^|͘ëJ7£tUmŽcë÷ŒœµG†‚²û_`ÆFkMŽ@h{ö #~Ð¥‹Ä›’¬í*X”˜Ÿfx`©b$µ J!7<¯9èöªîñgAÁ˜ñs­Ý8›¹¡^µËK]£™’Ð`á?õ"(”¸¨ Ù§<æC`ÎS{òd„[Z“ßç5•9ãüž'{[t–,‡Ä^ˆ0ª%,qÉš=è/¾\@F»rWºèDAý);ÓäKõŸ’i ‚„‚Áq(‹YDCÒ‡–†’ÔÁ¢ lP#ŸªŠk#ÛÜ'ø ÙјõÖJ%3[(G¿h`}¿-°@Ùþ¸;§þ–“‚BÛ¢ Í×µW ¬:¯¼)—Í]$ö¨8¿Ëà݆†?„ ž#F%zQùiDÒ3 _:ò©¦°{»> ¤žUÕ›•¥÷,äœ4*oýÕ´®ÎÍÕmžDc`ѺìÄ@÷{¿+@´ «Ê‡hÑ,´}c)ðíŠl®mÿNZÙÚz‡XjrÑt…Μk”XR%ð‘„YåUU‹~£‚ªfY~g‹`Ǧ›xõÑš-Œ•þ Æc q¡Ød˜­©Úµ¹a ½’L$õºŸÃÑ’ÇžFiø±äŠò4ÆtˆC±X¸ÝÍ5FºÍo†áÿî·¿»… ÊÞÏ-¶Â<ÂÙ‘†XÕÑŒ ás(Ô»¬m=?CÅìÓCÛ™.gÝ»çÔpnRJ0ϰO-#‡vóÀ ¨#àh™HwN²ë½Í»é¹vP …ô„Ù'0E6\þì/uZïöädtøb â'/#„8rùhÅónRoºhܬQõoq=—ÔÀè#€N~¿>Ó•µ½Ãn[·Âu¯ ”¬%þ® Ìl@Ðà2)§j¸J×]QPPnè–§j-® L$!(ˆ$öéƒðƒ>¨'ÎE±Á²í}}í7Hê²ç|öO··÷›í„ÂÛ!à _)î:Œm• Íž­É‰ “ò :ç±ûH[|ÎüÃú7Ýuæõ!j¦Aà¡?2&ëNŸtÿ¿ ×QYn÷[ ¿‰š–3ÊDؾ2‹§àjÍ9Ó#cæAy¡žÿ´žÁãpÝØÏ.GºZ——Ý£ˆ·þâ·Q•ÓU/š«2-iˆüýO®KÑ×þz>öcÃ)U3÷?UJ`ñ‚l«ðNE;Ì1 ÃÍT„)1›& ùtŒN¥Á;ñóTHâP¢Ã`mž°t{êÂð|–@I¥at³þó÷4_•/¯ÇÝUX³ ãg£¨+Ìly‡ y9›tÒ‚*:áLvc¡àÝ9ÑĘP¢Ô;çܯÕìdp¿­63÷ÁÐH•»]·iùoÜŽ C‚Y‰€¼œ¡W”tcŒS䬇€ì:6‚Ykh^jEâX,†ÌÀ!°q‚—Ah¬„ñüõ™r™‡ÕaEerß.‰M&ßiïE¹ éÇöù"A\ÀR’HÈ…„¡ ÔÐPjÁr[hÍî”È8ºùˆÉýåÉìÞ } Ý–ãÆü×.m)¿j ˆ³? ›An[ÍÞ7”¤²‡_ŸýŸ?¶€9 öý\ÏÖuEŽ]R í Ön{©ÖÄ J{ÖE*6£Òr²’ù/5D„¢ˆóñTëÀ^#êsò6ltºm/m ’vÞ6©òàÿLŹƒe$ÏrûÒw‹ª–ŠÅìêS5ZNa¢Êë†{´ÞZ¶ÜÉg‰Æûá;Ô&æ¹™s®+­<8ª£¦Àäø3„½ï±ˆŽ? :cíøºå,Žèi-ãÛÊÖY¥JÄEŒOýr°g³—» béHt5d lÅÈ_àÌ‹¤Oe´;Ç¢ÀA²8»2á JŸì"uÓmÁ HüØ‹97–#w‰U¹@œv G¤2›H5mj‘¸äͱ?fb цº¾Å`f̤Æ <$LêéfÌÆÝK¹uá¡•é6†û$ËTÍý¡ªuþ'‘! —ÝØý®2ƒ@@ï:q¬»›ã[ót˜¯üZ+rÐ>Þ·I¯‹.¯k·©‚Yš c~I Éí+YÅO9yØyMºß_àmD!Km†mÍ(K ŽDäð†îÚG"¡w·oÞ‰5è"!ôû_îÑ£¹Ý;–Îúñ‚{X;5jÂŒ«þÏS £i¾hk§l” ÁºC™OíŸ3¿RJGó~Ü……òÓõtqÌìUØ×©¨÷x„I J„Õ:"Ý%~èç‰3K;eÿ:›uXµ†{V(qKx‰Os½aZCø†$“ neÇÞEˆd* Be”>âœð ÊÉåeµ.¨)E òoýó±Jò®ž ®º”àM×à·íKVÁÉF\Ÿ(œ¶Eל?w7þ§´£þü‡”AƒIö™øY”ßÛ£MZUÓ€«'g1®Žÿª N;œøŠ«ÞXÞrmäiT6qÑÑ·S¨$Åw¥»Wa²YÏ? E³µèbK¾„<Ï?Ëë(­èÕ±“HÅßû €øˆýšdmÙ½óc`u•Ãð…ÜdÍe<¥]F/)+Pô `/]O>þ~ƒØ2šÔˆzôí¢^RÞÓ¯ÝQ+Âx½;É!+U¼®¥\s)Ó㿾“%AC¹ñ´ôDp–b —1æ®¶Mü‚¢ràhò²_(wh¸Öüe…ûƉÔC˜5gH+A~C>~«_ôv™î¸´^y~Mz]/ ó€ïm$íÿ(Ÿa ¸³GÆôs¨\Ö© ä LÐËfW©øùwÐÒ‘…=<ËÖàݹ¸X/YñSWî†Îvà‘Ÿô[éç=Ó¿Å|¾ÙH›.½¢Äøe©Få?…¼€þäµã·»\ÿI‹NÉï.Z&W…€i~SŸòU”#_ý_†€{÷@Ù;…´È0;kÞ˜[õ‰À,¾d{P~…„³ÂÔn¾`N›kPu0Ãøv5ŸVÓ+––B„àÄÉÏŸçi§™l¬¼8zT :/¹K ´U­•^ÆÄ$×¢¢¡µÂjÇÆÉ æ«#©V#ÔpvÎ¥Qzà©*‹þÎÇö­µk]{¶ O*ýÐ '?È2ósƒ:lžÉ¬¿Èë­ êÀ?;H½ÊØaSØèm%Û&Æ÷Êüd^7§‡-KYããÈ.4Áy‡†€ƒ)‘–y{Ò lK/­[Ê> ãž~ÕâÁq¶~nûM‘Á>ÇÁ┺cäùm&ðhxº6|ž’Ì< sù=Z`ߌVMñˆùú^³b6»+ñ0þd¸o–dU“…c.ÙRì›hˆ?lOéR~«jŒô5æ‹8UˆûiŸô±$Äk4‚%2!Ëæ"ó}aŠ %Ì~öQt;Ú~zË­ÃÆêÕæaå)-³Áü?°oø=zNù¹ºÁ.e<Š?E¶ôD ÃèŠë=äéºõ/ý¡L1ÊY‹ýÄ6RÆù:Hâµ1ÅöÍÈ𔊪e‚6[Ó¤å2–ÏÆ4vøâÖ‰/íá@¼9gšµ€÷Ì`MG{]ïìNfãÚÎ…x“Q,¸öúÞlO;ÞˆPÖ¤aÙ?Ù1{Eg™™¿µ,VRøk‚}~JÂÿÝ89Ô2ðo%A3Áù·$…ÌŸeF@Ô‡½ê?‹)EãÏéÈ+®uš$Qt¤—û‘UNøJTZ3©8Aµ‰MÎÝcv~_æ5eQ†ÜÖÛŠ]ÒÕò¯jLÄ h‡Ù,Òi¥ù6í&%{“4±{)»á‘eNÒš”ÿv»Tíƒ Ãä‚Ç…P¯ÒA}K§qX§ã3_Z ¾=Hú`ü%‡Z¥C|OHP éjx±áˆ-‘—éþ%ˆ+µ±G ï¢ÓÜ6*>ÂtÂÒþù>çr˜ãízMiõénî‚voži?րɦxÅíî•ôÏp‡µÉLã–㆜X› E8KVv‡xÜ~¾$,ÛïhVÊ®!nVC¥ãT{ù–Á¹ÈAö¸êû°5M›§Ùœ9€0ž6¥¢¦-SL¹ B‘ݾBb9bå-Ÿ"Ov×™Næy¿Í¨¦.ûÂ2»‹R³^ý5ƒvšø“÷!$Üíß¶]¯e¹2¶Þñ/D4aÞf‡" D¬¬"ÒaH½&lÔ°ÁS}ç’e)iŸÀÆ |ðânVO®ÿ_5¡—óØŠ_lÏ&ÇKz×Ó hÎ{0×´7±TXj~z]öœ°½O0¾š×ZlN^q…Àq¤ägŸÔ·în4j²š¬þ‘Ú6\óæzKæÊ§Zâ£â÷ˆõùvF³7‘Ó6(‘¹hîðÔ9Áª`$Ù#Þ0½Pºuyha­uX) ˆ Ÿü`jïëHÌ Ž(”ýú#.³Î /|Ñ»]‡¯œ‹ÒÏ.µ¿}gŽýá‘Åw“ûr©H!+¿é]ÛXE&š*S„«C?ßÖmÃ`î]åšE+5¥B$òüX+.ÌlNð_ÞQ¤BÑ⫪ê<²N€(ênßR¡pýû„+_E{ëY]Rløm„»RT{kÏS¼ë.ˆÐÙ±N½uKÒE »õ·×Vá¾b+" S àoÅÉM•!@’ª|zò¡2p9‘@¨2ÉU#aJ‘v^IëæVQ¢¬_–ÇŽżuëýѽ©ŸT€{.VäpG3ZC^ª;Öç?Æe¼ÕZ¾ººú¯Ñ³Øù½Y£ÓòD•_{cœâ®Êa £KC…/§ŒÏ 6êœ>4a—7dй«ׯpFLbôWSüzšD2v[ÐM\A£ Ížä÷oÙ }Geiuñ6@Ã(æ¦As–•”§Ø²ë¦r’ €:‚£ú|³©1“ó§ ðuÿšq¤@`™ÆÏ,ÇÙ»´¦=‘bPw>¢N†¸ªn”GÿT2»'ûzœn>£_’Џª~¨S(Xü¶’ n뱪½Ä dp àܲôë {ã®Aé-­”%Ï´Rš¯Æ0†ÑÙñÚæÄcˆ}¼æ“òøY |O9‡_wO¡PvÛ¿u ( lODÒÏ/CuÂÄàxìKRØÒŽÚ¨ >c8…~ñÝ%Ï–ê~¾ŽcW¯D˜ù–MÀ‚ûÇÁû×¶û¶†—[SL&Ô¥|€Rq8öq pøcBÛUz¼‰ÚÍd»–§»õ\Á „’½–>]d'îÁß…!-/l#õqé ùVŸ¿Ræ^•Ÿ „:t†ÏÖIÒ_\¥‰]r2¡¸¯ZÈÎ2ž¾1zMM|•}@—”¹VÊ&M¾ü¿=¿ÃÛ²‰Ÿ½^Vd÷îb*;ún]mõån‚k½vCç1}=~¼ª+mãB P@<“ ŽºÄò°#o¿—wäÌáARD¢þ´êú'1;ÐUãbOÛèŒ#ÈyëÂrU;/ž·+«›€ÐSOµ|ºÓ©\%¡a $T]ç‘ãxDŽÿ_ Nc¼®ùɇ§‰ï’µKÂØó ü‚XO3".)̰=rñ«Ü7Ú×ÈY|JóŒÚs‰2kíÿ–\Ÿ‡>!ÏJ¢…ìßj.–¼õ^±Ÿˆœ¿(ºNÌÅÄx(>ô-˜…YKµÅ»µ½hN]á¢P„AÅé§@³–ú›€”·«ÆæÅ<È×P_˜P_`Uº¬Ï• ù-4ífÐ-Éj£­Ï±'BÃÑJ†Û‡ržO,¶[š7¹«j¨t ÇLslNÕ dð0€H` DË/¡¥%Ú¿n=lå‡ÕÂO[C@ª“rž—ô›WÏLz>¹x èž)´Qº0B°[Y>K–¸K¬TÞDaœ…T„%ê|±TšXã/5ÊwÜaO*2cÞí†t]ëæeø”`Õ<‹MªjUaNå%V‚©öL.| ŠVW=÷²¿¥ù¸ö\e@óoEðꯥu/ï÷™ƒØÜÈꔸ%ÿûêwHŸ })Sû½Â_N­m1Mùîrl„»Pfd6cÕ}u&}°‡4(X8Í·IZ|·t& †Ž54ÎMoC[ ]±ªËSÏmesw…?€§ÛPÌòh=·˜¯Ó/Æ~ËK‘¯G?ƒy`Úg¨*Þ³è²c™‡y„osÉ ÿmQ½l°}ïÜJâïòï“…ü#‡®×¿t&hÐT¾x|Åžð†`%›…(®ß™"ƒ¶ ;]{„Ãq*Š}W\kÝ^R˜œLdòÏS­ÎKçÙÕ|œ³*͌ĩC–R „{ˆƒ‡­,º—½¤N mº·Ñ×vö?•JÌ»É@:åÁEÖìõ)ü*ððÊ!kdä7uß®*ÜÓv/"ѦÅqȹÿ¦ðYºt'qá çQ'OC_$ƒY£¸Emµ1zß c¾Ò²î‡ßðÖ8ŒßšÔ)¯4t9Þ­«ÌŸNÝ ÙdÛêdרÕ0·øuö†Ï džÞ8}?ÏßöGÈ=Õé®uœ/&C7¨„Ñ/ßë&r¯W¦Ì ððjX÷u 2‘xH“Ö)ÝAPTQ♽ڋ¤—譚מT‹+9ëßÕR¬îH~ì"S  /ÒXõuÊk}7Éï?)ÁƒÚtËɦ‰ˆÞ ‡–Ù¢³æÛ^ `¸çsº¹-:Ä™˜ßAÍôOïÖçšá'âDž»)¸Ç©å ärЪ1ý§8ÚC^(ßÁëoÚÄx2éÿsÁíîÎ5 òÑÑLjԯpqç“–NxÇà e^°–pB}†•ÇYj¦#!A9ìo{<Æ6\lr$»:­Y°~+º~¶†w!²‰éÀ^f¥‘/vç_Ó:†°cË7zBqi“t2r£*¾96|J ШòÂØ“!W‡âØìhóâúÿO¥lN^vÄaB…4MòÐSÇ’8Z£?J¢£ÿ— Ùt<Êeòþ©MûR1cM—Àr¹4Wék2¦46Ð2èÄRœt<ÿ# ™bÑÜ<.ÜÅéýÔ÷% äA¬ý4Ä8ÿ«hÇöÂ'ªA7—0wÈ{Êß‘*³é&%oâ¿<•!U´S ·ke‘?¾H·m­µ™ü{–\êÎ5¬á<°\„ Š:V›!µ~o%¢’×¶MT-ï|Ï#Ø |™–ÝÖ]ù¬QX•¼4;E’ë^Z˜E}uÎsÊÀ¹m.²zp3Z9õÛÍØsÆÜ]6µN²EÃëA´f=çÛ;‹ªQ@¼¤¢‰]ãøó˜P Î?¸lü¥ Èp!NÔµ†@؃9«Žƒ´Ê~±Ã>sÕÍ{¿C­×')ø®s©â:íJÏ´B%b·ZªíUÄæ¢¢ˆÔî52ÚÝö̉¢êt;tÎþź–Põ³ÅE í3B"—¦€Ò/áBÐëÜ3¥(áW{%ô³iòôçðKµuIW}—íC¸ï4³a¶¡'՚Υe¨~"¼ðóÐ"/VÉK4ÿ+€\-»+Á ’„&äèmað®Ùf€ùZÆëž‚þp­Äƒôvƒ–Á»EYH‡DW$³uå÷nSWé´Þûû)!!KÈÛ ]νìQá‚j¬þÅÁHòÜПD¿!{¦´,•˜‹ø[`—‡ÔGg_,Óz1ÒÙí@ž‡b*÷ EqÏ 7jòÜûª[Å2ÓêIjÕ3gž+=¦sÅ]äb4®Dš¡'*=¤ãjO¬º Yò%dHELƒƒœJJ«U¿ôž=fà~sñŸ.0zc¹›.Æ[¥eÈãqy*×SòŸ¸8’]¡?4Yâ¼òÀð*ˆ=$$ ³²ÀdÌ ¾þ Àužnžuû².’16FN¹›6Þ|¥à£ÐÍ\Ћ€PÉâ7h÷œ³ƒHpøK5É MݸEÑ66Y½¬ãP¡–0Ëÿ ¾4AºŒê- ‰P×S·Æô‘ ¶¤üq“?õ´ó%sûΓËùå“á–úD{¶ò»ÛµõO™bMùÓF•öÄs} ôAFˆLLK™ðb?›ÐVB‘8éÙ±˜o%€÷JX6ŠÛv kˆ(uds¶wQ©`ö°ZÈ,‡ðPºþDmú"¢ßÜEÒ•ÐÄ-µ%Q J&7k$ U],HŒ =G-¬"VPÈØŽ „„Š~ņ‘ðÈ$’bBFÚBÙ¢2¸QP"E@rQ^9éH6@@ Í”DªáEZA ¢€… ˆ4BÂTFE+"*õÐ@& H@ BšnmðÓ¸k#›m*Ͻ€BŽáæÐ=q]ðËšÉVÂ4 @ÝЫÀÐo¹½YS^)oZŸ†¾±f”r£%ÙÄ·¢Xt>$Æ€¶cLø~.ãöüh…o‘n©PZØ&ú’9G²uåîoÇŸ. ({½ ´c\BŽ‚¨Œ¢Ü–…WÐÖTÅE´%”‰ º¢§ÞE{ÑYX„\ïnÅ%°ñX0¹\³m$òBs”_ˆ !AŽ f%à<—Z¤1€—áÄP€æˆ™Ü˜?¯e¥‘©ì[µ¡!Yš;O³[^9ØìBž:Mözb³Þ®¶;V6-{Þ’“htöLóªÎŽhoìqr|zñ:e35‡[g€5¯¿UìýZ`5:.Z€YØ(ç¦$“„dÑÉ! „! ú´â× ÖFaPQÀ”p˜Bxd„á8F‹€|† P) ª8'H‚Àðj‡ á4H…$ Ÿ¥`áƨŽÀ‹"F3¡l=¢ «#€Ô±7dýàŽ$ B@‘"0„øÂId¤8cb‡$$€H6L¦ìϹ$ƒþa ¨º¹¿©©x®•q/0â……kæ1_mª×v!0„’´Ë¯Å–?Ô” A=¾ˆ"bÔ "é@Õ?¨çµ§,ˆ¦q…tÔDì­Aƒ=°(º&c”6˜µp߆¤U˜”ùlBX¹¿ïlÞO5bçÛÒù°Ï®ë!1Ïè0¨mVЊÊliênÿM»i~Š0Vn=ÜÕ$ µÖ¯†þTÀä°\[ gùÏɃ2I 00‡¡9¥Šáyôa ã …‰¶ðý:ükýìo&ƒèÉÒä£D^pYŒ`‚û­grÊ©,Ÿ[XÚ°à7ò3>þ”íÖŠÏx¾‹Á`}€uÚ5Ϧþf}vuŠ¿!ŒŽ†•Ñ4îÙ¡cœ…ÈÏ­ÐÖ;A«ÍÓ‡h 5þ·~Fèe¨D™B ùõÛðâËÁ¶ ׆A- ™jšrrp­ƒŒl«Xñóʽ„?æªÿ-¥€’»QñZ‹iÔÑ+øP`éNÉWp­›ŒŒ58k\ã¤'”jJPÝÿßF`sÎUƒ/çµWÈÝWé”I¤88@L1ÈÒsÈ¿“#˳‘î.ôvX_òΦå~ÈDÒê0—ž7OÓÁp€Xs € V7)DOiåátXj‰É í|¥4ë§í¼¬]ÙátÑ?Ç#?¼Ûxp~ZýÜܬÏãˆÒò¬P—šÈ™3 fAû²fIÌÁ“0ÚT×§¯úqź•%ôè•5¡ìb·aí¾é{¢3f“EˆÇ"°vqôŸ2m&Ûzm¢“Ú6H´\3Ek—ÿ©&q@—[ë)h7Uækoa³Zr†¨Ï¯C# A@@&,ÐGêGã²Ä[üi=ȨæFcÖIŸ0 Dïë[Y©ãQïh]}ÿ’«+×6Û šé3j'(è!ŒŽAq÷ò(â¶‘§=›Árº8– Qé—ûO i¶ÁÃQLZ~ì)ôz®–ÅMª.˜–u’‘jœ;†ô·ÌéÔr!nÞ[Á`”vÝáÕÝ4¼=y¹&¶g Ÿ·î0V¶U±ÆV—†„oƒï#V0™|–°¶‡ ÆVûÄ7ŽšèKìÆ±uØìÛñ k7S_J›fÏÊÎîR/Eb©¤}â:PÕÝ.]—‰äé¾d†s^âê¶9j¹UÌlríbC#ò¹?,™ ÆSRìì·ZÞASi¦¾Eå|æ5£¤ /[‡“µÏ­Ab¶Jê$©º\?ƒ”l=XWÏ\ Y‡Ë¾lÓù—yæ¾yËš«¤O=è„ih²…rVÈá•3öž³nYDC@ ·QË‘Ô=>>k -Y‰òɫڴń†8 ˆ±Œ@ÀÃ>laZZeôwXX)ÉŽ'¥Íõ¹ÿSÇ´×›óA¸Z]‹Ù—6FM%8¦”'vÁ$`W£b¹ÎñTj­¶B,ùWŽcrŠÚ`^áôÔ[n‰¢±wßýåäÏ)+GVe{¥°õXh‹Çº4d^Úéˆæ×ûÈFoϓǗ…¡þHÃ/á\õ«’DΚw †Â½¸ÊõE Rçôâ"|¡†Òõ‡o}<¶av9ß°JNê–TUbˆ*„ îåúï“ZHÙç'îÊ> Õv0ö…× Ù˜Ñ™Iþqò2ú„í°ä´ñfñ8„‡ÙWži‚„Œ_¾gëÞ RÞT¼ákD(7€°ÂÁ™ÉŽuJ—RÅ<÷Z¹Ùð²¸Ú8 iì0Ž˜µPœøjÒ½$/Í*ø‚`kKc õÇmO¤c¥#S3’ƒìºÄ'¢êoVÏÈ7ò£+>Ñ\ñ¯Æ;¬ö´ímGé ŒËûx(x3ÕŽš/+•Çæùy©/Y~p?FÈ£µ hq‡—²:i´)ïæîŸ±(m& & uFF )ÿ³‡wøû…ó*—íųg°Òµ¡øÁoAdz⽡cÞoŸ¦ü~£ÜÌ4C ')è5û:ØYñº½:mD~xÀ@^á©öS|l³ µ]€ZËxp°VQ”×öYžOŠ 6N~ÚÛø®õT|ÒcLCÀAÀpÃöî+ªˆKÀt1‘Ѳß&ÖB¹‡Mì`f;%3 Èç{$%«OÀ©½;ðõÙpï’Ÿ)Î-=à¼);À oò‡®ª^âÝA¬Î°¥'.õhÁF°›€Ð”>ÒC†n¤kôÕr¡X¾ÚH·Â‹Ýù\=`ãѤ»íçȼ:$š¶RQ·±ê”YVÏÓ>Èot–Cú% ³})x?PùQpz^± ‘¨]çÕÄÉD-[š©Ó5$!Ñ€aOnfùÂ[cÁUÈ8Õ ØÃ˜q ·Yy/QG…´ýª¶XFbÕñóµ9E È ¨ÆÏ¥Ø GM×Ã%ãøgœO“XŸõÖ?é´Haºì¢¹mfÈ›ÆÜ- Êez¥º²X`‡X¢.çNú þxõ—fÏ&Õ%O&Šám;˜î‘þ.§í-]Þk96sÅfC¥÷§Êõ)!wQŸè'†æ :jÔŸ]î©g Îp䎖è¢ÁÇÕv¦ƒr '‰×0~¥æ>Ü&ŸÐ¥&=¥dyG7+òå®Òlyjîê\8QŒRFÿš±›§õ$_pÌïéÄ(ì,]i,«~aö ] ìÆy³[¯iaT¸™ûÆZO«6 óa&­XÆ ¤lsµ¡ök4`Á]KZøZ½`ÝØ«’ÔHÞÏ šÕbKíŠOÀN.ƒž™¥†­ÚòeÊÃì»Á—[¯Vé²ê.„ÖÄŸAdÌÀêÉ!·×™Ê7iþÝq¿~=",Wß±™ù4m¨¾ŒøªüNVšÖÔõ†•lµø|â£RöuÝÆÁ˜`ÌÒÅm%ßvZ´aϛʿ• ¹ï”gW¸xŒ†ð>o¸Ž.ËœG^|Oj-#öCâ«öf2vÅÎ+ÏæôÕÙšIÇ>ÕÍÇE;× `õ Üu‹÷zžÝø*TDw파Órÿs2…p|»L÷‘‚ªÑ­P´vöìßOºH:&îiÉÃü¡G¸ªJp~>Béù¦€9¬ÖJ`+Y¯±l¡(@ЉXRyà˜—®øÎ©ÉS}¬•ÅÇ^âƒ1c%nÏ/=™‰ð`lB; q| @Žm¹vSÜByM×EžO—-e<®º"é¿:»H:z<‡w×K7ÍJHã5xuÁóÌqÐUФҴˆ.Ö§öÞ±éÞØó{Êqêhªkð‰ ©eÛ¶ «ÉTS0o΢Hr@—L•gË¿þŠÆbä99|‡æyEû³!È2v/òˆ=Lƒ˜©UžÏÌÑ9ZFIt÷9<¬=1ö ¢}½¾(oûŽ;a˜Fz *û¬¼Ðÿ‹zê¤Öä­» ϱ×ÅýßêCõYé¯#÷;;•ÞЏfj¹™»3¡a³½)¶*7Omƒá¡éô21§ª(fL¾t¨šÝuª eûE˜;2ÈqäG‹ oÖ%ÒVmÏmTJ Ò¥ÝanB¢‰û°ÀˆöC¨+çç'¥Ðä”˦d),ɯ'oÈWÏc4dTè« úÿ† Qì Ò÷û^¿—¨Ã‚ŠǬJë_Ø«v@:óØÉé—+ád€Íí“fuýÁLrNZØ*IOU‹N'ƒ915wVÍ)ÔV¸ªRBÞ{âíGÉHµkiŽþb·Gû÷»Ý— #×x¸Ã_Áìõ¯‰S98ó%ë¡8Ç6ïó¢g=›/ý¥žxS°SH€"ø^€#@G²8ÔòjöŸ?A Ïq´»~®sWY'=€À0ÁìCÍÆÌMlw8×ýÕ½äÛþ.¼X­ýê›Km^û§°õuàY•pýÆB*€`kçà—‚FÞG°AÚQãI£) LjÐr Qb÷âÀ™Ɉ£1‹À®ú|ä<|ÕýLïÊ€ÃB4^Ëáâ~-^j©õB.¡cØög›À=Êϸ“rêr€ @wz_âÐq/Ëò`ç©_häY5Œ!bßIu íJe·»ùN À²áâµ^ýèϾ4ä²ùŠºÊ€¶/Ó1/þØä÷Ê yÇÔ÷‘vÌ­ßùÌ_Â]ðvG˜×Y:ÉEge£ph͵ÀÀ€@öÉ”ýµ™µ÷w½óÓ´—®ã’¾ï¾hšQ]#·ky„¤/‚­ë³GÏZŸ˜Áq (}îžDË’)µñ`kÄzTÎØö¾ri6?JvVF®owªÊº6<5Æç[ÚéÁ,óL:EÝ@‘ö—nVέ`Œ‡00 š~RêÉ@Ÿ',ºîœ»”›Úô2Ú {-¸÷Ũö¼©§~»{MÌÂAÇŸ‡ppeË gtú?JLîV¢ÿrA CøbØ(,§†ëùÎ|Wâ@@AÕsN–6RYéjÞ¡%^€ €­ ç‚ÀL¡‚pD€®™×OŠ¡½mR÷v¨ØC#žEÑ௲c5×ñ}ÂÇ@•ám8x½„‡w,`F¤IÝz€|ÿžrŒš &J568w²”â€wÒÛ4ªÜÀÿ¾`?pFHúy?Fù÷gå‰|Hkö¾T“ÉìûWmGx=±23hè a£…$Ovi±rnœIÞÏÈÒ鮇B±HíÆW©Üˆ I'ŽÔÑ‹6|s_òû¶]úz¸:ÚƒžUlÕRl(!»1mØ<ÿ! êZáš' l>Ûú6m†_½Ž¤R£¼ù£ÐøA<[Œ¢Jê{HÁ¾Yˆ/¢©—ì±ÙjjísG1V­šËÑø0%£O3mùôÛ­›¦IÔZ7OåÒÌä.ç7W˜§ÎKÖ;cøRÈD ~É>Ò´H§&üÁ¥Šñ ²Xö­9apmÞœ‡ˆ­"VÜD/áƒ3ד¬ƒ®DÜ,îãíoýÛ—è³2Û± Ýi=lñ¨¡›Ý7 °ÿ6‹Ä¹#4oÏ›A•r-¢‘uÁ¼“‹J_åo ëLiXÍÿ: µ³˜b 4×ôbÊw“CßO”Mêµ’Ýf-©ØObûtÕðy\ÙHGÿÑŽ\ý‚÷_œ¬105V= n7Öz÷laœ¬ÑeZ’+j$˜ë,FÄÀiž~ µg±¯x1ùµÚà ú?{—Δor~õ×ðYâ.'äˆú—rFŸùÒƒïÍl˜­æý_…¤O€WçSw›VØ¥Tw±ºbçÆl•É)—NÁjª„N²±TŠ¥ðÃü²J¨}µÈÙFG ŽIO8ø¨g0tˆ[;8Ìäzž7ô¡©ã@g¦:„Þ'ÚÓ·ºÌ<Î`²>ì‹|ì62{ÈzfrX]Q»3öÅÆ.iâ(®9 ÖVfŒ-çÙw¹1mô 3­–:KËÞÖOÙ^%x—'i•nÇdó“:dD^÷~‹.“„ÈçÃ4ôq¸úd"ä©¢ÔÆF¯Å.GfO‘1)_KŽöއñ†â=ÚìâÄ¿ã^ÕL·&r»yÑA[¡ž©ug2˜Ø²Ú¸yŒåöl¦Ÿ ÊêïÚè2Ë{>Åéê ÈÞ 1ZžJ&¬¿k¥)ßÄËpÖ÷‚)–S î•ä=ŸÎ¯óEN !Æ,S!*ŽðäöÎ\ØPž:]}*4¤rŸñW®ûJùŸa6„,ˆ’ò)ÛÖÄ’“¤à¡×7“ì£ P•™G^Ö×YA’†hå:ÆàÃYbh*TUÚÊ›ÇRß:1øÊPú##Ç)2ýìg¸m8@¤¡"bËÝEƒ­áó5I,bâä&MH@üOãîš;=ëdUÊ{sµNµ#ÙÞ;‘º=ç¾®Vï}¥˜`³)ÿfûÊÏ Çßl¢xd¯¿TÛ ]l¼¶y†&£ Ê|ÚZq— ÕÉ5ô¿DDzGŠ¥§JŽ˜zz¦Òšá –Nã Uèî2€¡µÊ,ù̈â”ʪÌr7`;Ç ó@ jé2k_;Iöa¥¬‹‡ýé𦢎xä5",~%1´‹úa:®)½7#|¹¼¸Š¤q%²¢b£ª±Lj×›NcNÇܰR\p‘çèlÍKBªÙ_À{܇íô¸tÁDƒ×%[èoúè«TÈ]å<9UÀMm1$Ãû¿z`uöÉÀ‡”4X°Ñzî-Ž#Ø !·Û[šùSŽÏ};£Ñ3°eÓdköm‚ÞÝà8B?Žö¦¢žÈËSõ¤ˆ®}Rúiw‰ØK±¿æø›c ‚測¬}™µ:ie½Û-ÓÓèSüñ2êé7ñ@rlú‰’>åNþš,/«ª)2£”;ã+Іsl†òÏkRM§À'€Îiâ«Nö´@Ì‘ ³#}ãEÇÃeÐ0ŽîÚÊ€ƒ$¢çvT?ëw©ËÇ׬N/ÿ ^2‚Ë×|%‰/ÍJó¹ûÿÉ»d§w¯o»ÎÃÔö3 Fãʘ:žgäiâÙ)ÛlæiVªÇW¥ÍÒÙ4ÓZöˆ^J\ØKs­IÃ}õAØM¡N5â.Ý›¨J¬ µ‹ƒ~},®5“SâÉÙ¬¾¨ÀªÍƇ¨ˆ/Zþ®ù×)óìÅÄñÝï#%bÄ{+g©UÔ •œøõŸÙ°ÒCVÚÎSŠ~ª_ùÉÌ‹GPÂkõ-!”fã^‘8ÄQ?ã®Ô;¿Ð½Q÷Ö,d•|d‡áSÑý£j@l(8hl·L)«ãô`ýÖÜáß]¼fÔ›$ˆW©zS£jíÅ¢Õ6}e–Té_IkgNl\U°¸_×+·¡Ó j…TÃÐîð˜ïA8¿;#Ñnâ\›£eàMˆ}N¦Yšç–Éu§‚A÷Û«™òÌø7ùY#Ð>í0ÝŽâ]»3?¢'<•ôÜtJëtq1ðñvËwõ:"ûÎ ;êç7èÄÓã©zÌhô'· ±ÜRVêZÜsÖÎÌÚf¾V¨ÃboÒÀ×rÌö(w&rs»Ñ-fíÅ‹$AQì¡4!­Û"Ÿ××stÿÃ6·œ€ÕêˆwlŒq ÕD(Š¢:Kz Z¾ÆÕ””õ|ÿWñõ£èïxªÓ—¹¶;E2á'ìö’tzJÒý†´p° È/⸿Mº_µP¢ ±»ezŒ›=÷ýÞCúæò²«óûà+A}™ [ÿ~[¶‘¾“hÚ›Œ%äþqae‰î’ºð±G&Ï™ >d¡}§¶¼”K©+Ôn Æ’‘< ?€O§ <8fzÆ×€õTN£6;¨RÌãX»(‚¬^YHR|ˆø¢UuZOðz«ú¤‹TEl}¨õmHOŠ¥­ñ¢ôJå ?{òü›AÔ{ººÁúT’VªšªvñîÙ^O’¬¥2lá|ø’ZRÈÉu=z‰M†î›ã‰ ¤OßTVLfõ«õ4ÙÈ) Gù¯qðœÅÀC9ö ö´Þ÷?›ÕGÙm¬'cÔUA¦=…sbÏî˜ýËÇïLIYA¬¡Ú߆|e|<)ààïõzvä×÷»IaÛ„S¿Î0n+¯ÚšÊ}äïv¼_Wè¾ø14Oò):è†Çþ¤ÿC·¾–N—zÈßWpûh\ãD¡´JI^Ü<ÚGa3;+¡åñpºƒùÝ‘S rôsôR‹J7vPÓ¨ð5+}†èªö6—rqÈŽ>·_f­¯Ÿ£ßV›®{׿½\s¸˜Üve.hÔZwMØT±Ü)!OÚ3àJ­*«Îr}Ç›cÎ*ŸW¬Ý:Lš%l€Ã¡s*¨G«‹U)䨿m^ii¡+iGŸPqj¥{‰2¢þ¿Tm?È΂N?óã&½c²i`]SHÀÞ¤áç$âÔÓZÅ?øxÃ߇áI=8 Ž‘ÊSiî×샘#X×\z³õûÃjŽÐQ:sª*à¬QRAʉ¼ö½ ¬I‘õ5¸ÙÍF^á¹{@ÕÅoúúŽJQT¦"!•8¤»5S¿C¸U­ƒ‡-7½ò«”i0þÂŒ:>ûûX¹"üú`Îmú»Ï.ÊÓB"v¤Å‘³÷»ø¦Ù™ª&zt ÅŸ0Z>ªâ fàB2ÏÝÝÖiÙ ·»`.dM¡Þƒ»óx@>7E¦Z:ˆªóû{®XØüÃû`$ ž^‰H23§˜Xf ìCQ=¾¤€BW¨Qò1‘£änÃ.:ìòxè1{'äñÆÔ)ŸŠãoô½„¯ $ #Me%aÿsÔ4[¬Ô::÷3 RãÇm¦»c7¯¸X{×HÙÌáƒ(§Ø(°±Œï¥¬°ÕÏ-ëœÁ²‡–)gƒÅq^÷q Í1ÉÝ4æë¥ aYEc†A†dL‘È>‘|GÅcŽD¢ñE $˜l›"¬W(œòõa\T®…p%•ÒËx}3áøšO_ŠÓå;0/MýNÕû´Æ–Ï…n ÎÁM´òÙM]n5‘è5óÊ^«~޵ܥ!6ã ¿’Û3q~’(1y}³DgÞIÉ/'ŒÑU¶rc ú|\'ÙZ_ŽQÏ‚"¥½ÎÍ=‰ÜêÓ-U|v.;Ï$¹VÏNÈ}ÏöŸÇ…’†ã‹‹tõËl¤ûÔK ZkDLoþëk‹ ‡Ê—µ#çgmY\”h„Lî@8æ¬Øf!fùºÉ|“Kzã‹iñÊJm—Ô\y/yd;•÷Žî mõ›á~ñ  “߬ufg1–hµIó ÙNñ[ªwK’Ru‘QÎØÎC–ÕrÏS>Ë]…Åâtäž)A(7†ÉòUÛeœCúÆ!BIS¤”i[5ÆÅÅ6˱ôRÒ¢¥ónÀwk)qI—Š’*vê*HÛ¶ê  õº†ú¤Š‰E"Rˆqªä‰ˆ« ð$M Q&`IgˆVAH„'± ˆø$>ê-‘* ] *‚ŽêU+¨ˆDˆºÀÂ7 %J(Í%I*£ [_ë® ÈVD‡¸ ˜¡¾(ª+ªTjÓ:É™¥rVQ0”¨¦ÖheHKjE±²QAm]÷”XKö-S]ê«—¯ÂW"Î*c$ï¡NáCzQ?®R&)w$Ÿi€-XY°#¶o“EV›Ý0¤˜A&Â¥Ù™G8vcd@²Ü¡-LÑP¡(Ù‘ˆ%ïÊx`ÚÀP¯,iòX6…ÃQ5DaÍ#¬…c7(ðW‰S?]Ì ¡`äaç]0ÐÕ ~«"F‰‘"€mÐ…3(Pß¾zf¼jxuCb5¦ãy+Xq ìB´»”¶¥œíGç”9z 5M(]R¡H”˜=äÖÁ—ì݃$¡ÈÀÜQ n„z0[ }'ܘ–0EAF†ïc¶‚©‡åB:¨Cw ðààAñ C'yÐ\@ic—`L$·ºNul8–ˆ»=²×4¥™Í€sa0ãdŽhEZcrRYU5ÏQ½¥v¼¨N g¡Ý-¢VKq€ÀÈAï[ÆJf£AÌað™ˆV0Žñ…xHBvSÃûx‰‹¤`2LpÁ°MddðžkB¼Þ"c¥E¤Ôʤ½ž_ÇÓÙX{Ë#!?5ZèÀp1®7q@aÜû™Bc‹ŸY|Ma+°œ´£Q ñ)Í~«ÉvßMŽ— 6YYa¾¹÷ú¾YÍ¿¾¶Å»HT9]˜ó6HÙ:7vë›ñ2•PfD’\‘ñ¡DªF|£§>y¬jæZâZ+²¢…ÑGŒ{íÇéqu²ìsŸri ÁŒ)*&NRLq<G_<„Ï6D°iK²`CpLq3nzÐͶ2ö{i‡rr¦2oI¶U å“ o‰H}*òÙ¬.“È7†ÎZ5ñN©Û8wy>qz¾'Ø”MJý&Z“Å”ƒ3Õ=Ò¬aÆì¾ IâC”^8ãc±½µ’_qóW¥¹ 1à“9ÿÍc‚²NߧߺusìfåœÁ³âxºžƒ !M `€5.ÀC+jã\1Ò '°`fí6¾uŽM¨¤Ÿˆ…kPRÌÂb§ »B¨°fž¤CÊ4‡ 5ÃnAekòåóq eTêÑ­›?7hõþ;¥°/ò`!¬[³’0P±«Â˜}»7î{TÌôÜÎfÞW²¾›òi¼ùÈMYDʹö±Í;UÃ$t‰RËQ6³Zï&6]Úq3ˆ2̱]/Ö!aÉ‚–âÔåÒ‚ež•Åçä&9ªO°—ËrƒF7·ó4¥%ƒÆ|UC·}ç(Ù›V‹"Æ-y1¯ìØt`¾£»sÒò˜Éx¬J7ÙžŠ{õ££I¾I,Cþ!Ü—p±< ÛÌÛ=6þ@•ÀÕ ƒµz©7;$)3tŽ5ªïi>pqõ8Z-Ê m’8ìh £ùm]{;²^ÊèܱÞX®T œšÀ×ä}ÇÈ@^8®¥æDvI…n"ßS¦»LÓÁbçà™ÑÍ•ñ`zз* uæÖÑ,=º9©ü½Ž_êôwO'®Ú}úæ‚yu%­i;šãQŒ˜Q÷µ5¨> Ï+Ôi¼/çô-oqÖhöù£À˜ ’¾Ûçά7®jE,ÂfŽÂñâ˜Â·Â~MÀXO1£œ@t `þ€Ö$„›50ÿ÷ra aìm2µy‚˜V›šRÉŽ(@óЈ ·ÊÔLj¦{̯UãP4š©>Æ5ýW³_Ói1ÿ`ÕeÉs©/áa^öµŠÓ”³20´{¼Ñ:‡ø¿þü†,rïAÍZasDK–TŸQ÷+ j¡± M@xòá ‡$7'Ò—Ïù:wŠ÷Ë‘mÜ­úNÝîÌ 0xLcÒp`®á n4:¢ã¹Ly`Î’¢áó%B§nyS½ã+Hœ·‡Ú—£®~âbÞÆ‹/Ñ^ΊÖs~õöÈ Ÿ_èt"òx|b14«w^¬ðt,nž>ÄF ‡>U»d`KP \,ÝM¤»%!´8¤ú]§¯©%ÒO$Ÿ|™ç3ìô6axP±PiVöšäÓŽG€o¢ú±< hJ7¬¨ÿ‡cí¿uNÙÆ3*!S¹ý¨iÕú…ë‹!˃ïêÍ!Ѩ>œ8òo0ËÚJ I§[†*n¡ÍÌ$ñõÓË[˜Ù·ÏE–l‚«ñ¯…9]”€ÂćûèÖ(:4žœFEñÞl4CNÜÖŠ=°ä°C8ÑäÛÏQ .êjÑ€dRŒ`“\ˆbˆ(B?°dÜŸhrÊ÷¬‰é¼ÝE¹wêVŸwðƒ^jÁÇäѽ‡SÉÌ`fâò s2)ʈF¹á}…/–ý¿_Ãåsì£1ZxñJ§w‡‹Y2)“œ‰,C™•(ìÛáÍËPû+ÂŒI½JB§ ª_i:©:ÙëÌ  œœóeÄǤ0ÀÖ3d3kƒPö.fmFèj:¶Ð,À¡¬BÁ“@®Ô{WvÒWàÚólˆn@¹fØ5Î]¼³uDÆ’%#É æ± +T?‰éXr/ŠùmëVæÀ{ÑÅ•ç¡wçþá›V@áUÿ­r¸þ¿Jåªa‡ ô¹÷§W=8_%ú|ß{$ªf]ɯ–!–(AÖR³b°L'’A±Õ¦dC JöÃÀö}ËQÀÒ-:MÓ Rû‡BÝ ®íý9Ïñ+Œþ8èǸ±2Øü 5`è‹¿Îíç j6¡éöÕ×ÑüÞ²K½÷¡Á9^ßw¢#áR&"ü(R ˆE”(J¬ ˆ?âš­EáYU-œ¥ ¤Cƒ\ÑN*Ç4sÊ$DòAÿ (ô  žM¬’áÄ8o r‹Ô^U{EW-Ûõ~Ÿ_¾u «7'¡Ayº†ÿÜ3/×ãy[*H?ÐÚ£ôÈ?tØš3M®VÌ PZp­ ¤mãYk¡Y÷jXlcW >£ð×’jQuÍú¸¬ OÍÿßF›QèbFl¨“݆ŽISç&öûP÷f'ä¦ÿƒŽi¹Ð~kß”,PÆ!^»ó­BHó+ÿÏPn‹G 6sË’gÉø¦ó Réª}¬{Ðò ÊK%j›0ríc ¹Z Ùz黈ºhoPÏM’±<4íç¬xžEG,Þ!&àaÜ7½‘~ßiƧ‰K¼ÍÝÏ>ªþÁ·t|V3E¨w y¹ÙßÇÏ‚È'™>7ƽÄíQ«‰œv3äÆ96¶ð¡\—ÿ’•­™Ì30ßûXx?íþ}ï'êÑÖ>ÇâYYJ,Ç$QÈ*»–p "HV 1F“Ò ?ÊΣÙÈAC*²h§‚„åÂ"¬+;_§œ T4HcÀ0›5Gu@4àpŠ×ÉHªu™ë˜ì¥šyþ§AØIÁh@IÖL E@2@—äàw:Îþ63x­Ê“LèÞ^Á®£’òîû-ž·•7¼]Pßõ×ȲláízÀ«c#‰ ÜR¨õàéÝ£ì;VÙöܨüV¹òœªÄ>(°ÓB’º4í6³ }¨gÈì°Ø9ÁGÞýʾr†UýyòÒÏÀ’ &q:JkÅÅòÚY®MÙ}ÜÑ/ÿ™¼Tš¹ ꀺâmáTP<D(‡-¢@åüfW\t`Û¦s_ÐoNÓ”‘ŽåËíã(æ=J—=¦l];8xjh(€1á1 e8åŒÑÂ)CA÷Óó[µN»wç÷r›¹aOæ¨Ã¶Õxd™+{2Ï™æm0/;áþqé7RÏNªÄ–ŒÍÞP ?”J Ÿ‹ÁZŒG©¤¬}_©Ú¡ÌÃÝz˜ëŽvï§»ÏØç‚‚Ò†>„ rÊ@Ù{½„[òΔ!ô?]j[’ ªöŠç"f{8?Äúï6ôLÀR „Ô²y™ò ¢Qtk dìþôö ‘©“’9S)C»Nޱý6ß²‡”"ûrQ™¬™†~N§A!Íú* Šìï·  [áŸZðüT‡ÂÂwV "¢ZåXºnç¿|3"JŒ73¨ðWñ5- ô‰ñ¾ÿNY¸I+>¹Ϻà]+(&mC_Ml+‰I¦…3G,¸àâé¶-îÎ ¦Ÿ`ö3Öœ[¨p‡H`“ÓÑ{™(!ÓƒB­òj; cH× ÊÞìðStTlˆIŸG¨É«­{iÉú_ˆîcØà”ãèã/D „¼\Q8Ý™`ÁÿA{¬Ù„æ ·ýž“IxUeJ ÀôÿHôB ðö[x©e1}‡ž¥¾Q 8ÎÖ]-"[iy­Í>Ç–q¢?’¹ûœU ‹,]ž^ƒj@ߊ—Üž&–Ný{ ÿ¹» Ì¢hmN½"m£TÔ˹³€e€×Š"~2d÷·*,?o.M†Uôpw?îâîÌÉ1vŽ ß\û6xªaDëAiyŽ×:õîúŒ¾75ã0IÀd€àE)f$†8ð&¹ðRíp‰£SQ¬Õ«Ë0ÆÔB×饾kJ`'ȩƼþ²vÜ×tÒ¬X"à:ToÈŒ€Ã;ú,p»ôtúx}°˜ôïîhök½: ø9nâ–*$À)Ùÿ¿_nñÅAóolÆQ_5l”LŸ”U#)<ÆÙÎÉã… X@œá$^„£8kAèD°í€?Ï@BUHçx]²Ý+PÜTĉ°„‚"· ÕÕÿ{ï•ÊåJÔ V~dAc§Š‹8²åÂïn¯¢S@ÄÕçñ˜±$Xu®»°‚æìû)üLlf©¼P6XÅC¿/&M³,¸!ÑöÊ-ÙÇ[«ÿÝÜ 4;Ÿ’_¦“$Ÿ{¤4ì$ R¾(‚~€DàXRÝôaMkQTu»Ðì×ÀK(u  ÐÎ@E£Ò7E¿æŠ4ü#¬Ôml‚ü*jMÛÁ|°ÎbÕ55€ügüФ|žÝ_]ÀBu€©óÌwÁ­âÐC+J7¸í—jIÈ/n¶üî_.Ñ߯nÜÉ.ºÓ9™…MIü׿‡ÏÝð÷„»ã2:ËÉøÍþ³B^:rOx¹Orðçg')ÈRN'}‰Ì­Ð ø–ÿZ‚ÒPM6Ks´]ÞœW¿Lù‘íÏ'ÉÈÚÆ`~mÛߪpè]¿ós §-$<ö†b°A¦lIó1·‚Aa3ñIÀ"ˆ`yøl’œ†ÂeR%±Ä€Ö 1è@?W*w4v_|ô63CÚ£ÕNõ)*š)A¥ –ø P `ü»gˆX‘ b ‹ÚøÓõ#ŒhÛY¨ýgtßÖVKÓñ]S¨÷ †?QW¹š-{ðSB@^®Û*l]×LW-ת˜º5Óvß=S9 ­í· —Y¹[¯ ÕâïBÇF RÍ ›ëÁš{†ë€oª?*8g>6v¯ÓÑÛåg˜Ä.›™Õp¦.@5LÁedêØ~K UôÞ›¾ø$tz§§Aðûaa6÷Ú±›’ýqéÑ›¼t»'pŒÇêyeAvû  XwRÇ8¸¥=íõ¾ÖdûªwYëÕ 6ýî.Ýòö¬p¨*Ê0%˜@f,¡ÒPÿz`´7'¾ŒNxËñ§£ ø ^KÎ#{”†ÿölþ8[´ÉÕŒ˜ÒÖÌö}d aúšCÛPEç»òuÛ„Ï1V6@ÊŰ› ­Ò^Kærƒ-²šŠ‰>ÔÞ?Sõqýûª(çø"ð@Ç„rò&Íô®•Z%[PµÅ€Ëh…ßJg© íBøÐ¼~ÿÇuÁÓezGîÒç "à<3NóÓ×¾H2CzA–…v° áE—i´WÆŠÍÞ¸Œnž”žÒì ‹U´5ZÁÃ+–+c»èD:Òq ߥ´Ð€ÈUÆäE0m'³YÛÁ¾ra¦©œÇ{íÇ5|ef˜?ñ&÷”_Æì‚ã9y2óþäc§ 7§uû{!‚’­« @›Ë똺–@Ìþ ¹ø]€Žg6úkºO±GZH[  LU}jšM³2‹¡ÎƲƒ³é1.·Ù858yãbŒÿ¬cvT4à(Y×7&É8 ™ßRøÌyk~n4j\y ½­waúŸ·:½kìδš5XŒGçÝ?‚¸&g.,¦äS¶'qâkrâÖ¤}³}‡4öµ¶@Ç9L°X¸ohxË%¬akŽwG>z{øbСQO%ÄÓÏîÜ^Ž}”\–¢†5âzÍ_+Ø|ðy+±ëÎSJ÷+ެ<-3'ó{ŸadzòÅIšýëÜ-~Œ×ö5LX—(·8õ/S%O…§leH@×J–¿•¸‚Npä\"“àoÿ¹çCÐI`ZŸ™Ê/åyåNÍê“rºmp¯d¢ö‹7»4žõ¢·°îõg%dj·0‰1øU9ga\üËøHטr»€œ\zÓá[ã@y4†¬Ãf2_ïÊÄ)ÔÒTæëy2|ÖþÃrÆÿûùyHƒôKòm¡Y=ܦpž,çfP–cõÍœ;jÁ1íz§| å!IY, ã!ö¤…ZæÐ6 `×ýëRÍ¡ó^#X¨vÕ²C±Ñ“·…¯~5ÞxŸÌ5hFž©ãÙÎi…f…0zŠÌ… {HC_ˆ@?—ð«Õ B¦ÞÅ ºWšÔÍ7ü^Q ¿…CׇÀ¼úÙV@Ûƒ (Ò§¢ÐvO –bã'45éÍ›Ìø÷èÀšÕXmÏ…F@~ gOÇöär£G1šÏ a˜Ÿç<|Tª²¬UÉ£æ¿ïY‰É}¯yáâ9ì{%ßsåÑè·®YŸtêꚨ e`¡ ŒÊ‘S(H÷,JK‡JëW`ï.Ý- ~×Ù¤e€2ÕÑëf×À™êï<à¶×¤ÃÉÎú=›”Ž–V¦%J+åŠr"î·”¹á]< Õ*Ž´œ¾Æ€±Íè³X2V9`o¥ø‹«¡ðýyXmçÍKÛœêö7G7xÛg[©›>2öSo¼û3î\<âkT¿Y…ÊëN}ÛÀ)ƒ´0¦z@ʇÀ¤,‡\jØ„Ñﮂ.Q¢ÿƯ˜Õ&ù¸ÖN¶æÖv¿ o PñˆÔÒ ôÈuì N”´Gr^;N)JÝ­XÏ‹™Šwû} wv>Ây›ð¼ˆes;û¥/ð ?4“±à¨ëˆKî`}ñ °+¬`³„Á¨A€‚ £žþ˸íýö7]‹Ð\ƒ´ìwXÞGAÉà6¢«‡QªÅÒo–®Q€óš õÁÕÒÎÔÊâ[»Ì ²•e­øu‘·?XGÓ¡=è “Н ºÙKÝ_ ÙÆp8BÙ鉳ä³Â·pJ÷_îÖ:Õª-_×–ûØç´ëܧ$=Hnîœ €Ù в5³¥¬ÞÄÖ¾¸Ñ¸ 0Á°% àM@€Tèz qZúþ4ºóÓÕ9V\ö^¢>£”—2ä*ZhnI vtZë8éhÉv^®,å½ÏÑûúèœ,*|Æ`aHJbÏȹ=1íÍèÔ-ñÀvbX®c Ì¥B~Í%H 4í・s¦ÑßËWêK¨õ¿æA…œ Qš9‘%…:S.-£ôª¨rV™¶œ©i½B]ù`=yÅt û5š³øSöÍ£l.KG4ýý>^ôº9F·¬ì¿>Ó¬í:¾oQÒ66‰ü÷óÒ²©CêÏŒieq¨ÿ‹ÚCJ®-OIo»¦8Cp9;¾SuÑÏÙ% ¸™: (€B„@d¢Û˜ŽH= %#[H +…K•܈Jn¢M^ 3ÈàN0gwþËå4u¸é'¨]¨RoIJŒÄ§Rêe‡_Ùð{ïk¯æ?_·lÇ }«¾×}Ù¬F@Ñ€f€?A0KMÇEÆvr·å͈íûVW}o‹¹Ãt4…¬‚íÇ–£ZÙ•|DA~Ú…¼Ò:ïÍ#£^Ù—NýŒ)Qò)3 Çyºé³Ù(õ8ÉéZ ‚ý:Àÿ¼¨Nçeéà¡âhÉmqƒä4߀h2U© «lG<žP¯f€µÀ>Û³É>y…œò.»e…öàg/uµqÓc_-ÃBpËäó òÑ¿PÀÝm6—E~ ·èvCQèÙ&ú¦UH ,¸9 ´ÔRvéÜH 4ìž§V rbAH"`¯è7çèg¨Ÿùy™ÏPÚ¢²¹‰œ>P ãmé_áÇDø+è~ f¸¹¨Î˜• ìî"(r¤BÍ”º'ìšZ¡ŒSCÛRÅz¬Œt{§-ùý oööÜÖ,›ö½>W_ÿ™6q6wîí¡m¿õΔdWû.§¾ƒ¿æ!ÙP´'Óðè6æý¿â«Xµ–˜›J‡:½X/V8_ýÑó…ºÊ¾÷QXgÞî­å#¾ÜÛ‹ÌU®Dµ¯©æ€u¸ÈeëS·}¢úý¦<þÅõ‹v8u¶pX€h@ÐÂTe¾HÞ¢ö´s®ä\X–2q¹Ö»/ÐÇHµÕ ¼àò:Ò*(;kð6?­ê)Z¿¬ƒI&‡C‹ þ.F®o‚ø5‡„ P‚Uè•5 L‡§ÞëIÔ–í6&×EîKÿLÌMò!ý¦FV:²V=kö\ö9ü¼¹×k³?«¢Å/˜¢ù;ÅcPI 7h'¨$ûÁ{¬áð1¢€-§qõ,ªö+<‹^‹¬JÓº×mzu à³)œòMv\&´mö·4î'vœt©n *œI“ÏZ•ÈÅ}§‡[,*„`TÒž,øª„öÝÈ*Œë;Esæ‚ê¬HQØ_î5ù´Ã„=¾§;÷¥ñIjÿµé1(é»f?Ýyz„û¡æ`FÊV$¤ÏÙûwl’]ËZ³y…†ªì8•”:Tð f¼Ò–@±âfgPðx”-¸ …,Ь  p£CAìtdâΕb-SãAŒ±ñ6*~ŒÇ ðÖt3•îØáßï½åq8òÊEQu¥°fi†KA’(ÙŠÀ ]À ô!ô+Ñ,: Œ”øåJ#%Í4³Š‘ ØA™…YM@E‰…óùûÖÊù¦€€÷¾¢|»ð V;Ù‡S›ÈíOÚm:ÖK2¼[Í[O‚ö™ócÛ¶×$eËŒã¬ãåZ‚Ò»±ÇJ1ø9æœ}Â>ìü—+Ž(ýPÏO6TuZ û‹ùú¯±ž C¦ñœÉ6+©{VõçglÞÁ‘Dt}÷uÌ9B/=7¼mþyxÙs7ÑÕµ)›”£èb&kŠ2 @å›*¥3aÜ+#m*œ}YÐ -x½Í»ÛO¡ûÙBo¾ pÏÅŸXTx¾Üõ7òLÈw\ëÖ•í¿°³ØÑˆ]R‡ùÕz«>O™ãú =(¯zŠLíŒÂøÝþóÖ2njýý0@RÀw.îfJè¥ Y»6ó¦üjôþ,kQN€‹5³;=J_–;}îC«šlÛÊ;:U£Üc– ?å‘:M'¾àù6I˜:Rö £Å 89gÞ“Vi†ëEÿ‡ËÃŽËêbs1 ÒP¢r#¾YÏ:˜¶Kà ÙfÇŒóí©ìÍgæ[c3´ç·®½1É‚†Q/܃Üß%»ºïÏÃÜò öÌÁqÐ#Yo¤þù +ŒÇ?ˆ^#’”—u*%Dð“??l…gßö’:Æ[šx#] æòš­øX‚ÌÜ«ÆÉEôõ7¢ OKÊk«Ï^wœ÷‰x:Äà ¾eWYYÑú×\·›®—ïD}]ïñr)—ÆŽ}_K7³uNå}?ß¶ÍU­Zܼ$ñV@ó”ýãT¨´€ý2CÍâI>eØÊj©W)»Û¿Ë¯c¦O»uÃ!'} ª·ª…uŽÿ½úP:í%žKˆ«b›†Ò~4Œæá RŽ÷L¸Ñ‡ŒwwÏw`èÝ.l¦7ÕìÕ³‹”ß~ï­Ì¡`*yoŠ%'ýᵉȲáïîr›Ü`s>ôÑÁHÚjЄC‹î¾~%Ç x|Šð¤8£€hõÇÓ”Ôþƒ·ÉOVÂ¥:©úw{V¾9Û ô‰>  Î°Û Ý;qcýX9{èšø§W¶o’€ªå`]*$¯J(ù@bŸ;€åÿ<ˆ± þžC£,¥UŸûII0 ïR0Ë`y¬~Ðh€.)Ì¿£ËIi`®„¯€‹Ô>žqÜk.“䯥g ½Z•?UÙÏ¡,ú`!e[´_¸ü‡Ì}’éñWÃÇ–¶jXÞw¤:7V,T˜Œ½Ñö@ÊÛ{]ϰ 5 ¥Ó¾Ÿ](]õ£îË´Cmž‰—iOVà•´j—÷©Ø Vn*èhX 1;Ä—ÎRÉ^TZŒ_/ç …ÆY”Dë‰^ÆœYbËÕØfl6œ©]zS4€úÅ£\o‹:ØK"Ç,þ3Vp~7­ûUúêâôƒv¬v½>„J±ãªÇU9_3‚f;áǹªÛfÕ>KñQ>¿ >nÁ2=EÎçôŽ kÄ ¦Ák9©ú‰ª Õ<õfãâ·æ‘–\DÙ|‘*_‡Òäz{¥zU½—¹#¸þä¾7q-;ftV3×äôãG Œ|˜1¿,×/®ÈêRê±zôI©}Ãú¨‰Ô\Áªäò3úMòï”È®ßbš)³€°ú(`8ekÿa«±Ön­û™hl–»ÑAØM¤h…;¹¤ ¨û~³Žåû[ÑòJ¿»a®Eå®cOêÆ…òíO#Åèbº jlć£2ñtšñó…kügæoÕùÍÿÔ/Q«m½¬é¬éµmJ2ïZ4jK›7“sLµµ±`[æmºô¸z=½óD/Ç4­—ïXwÔ¬ÿÖðèkúz±´úÏ<Óqbšdqß¾ƒaÞ¸³Ø"Héà W}~óéô± Ðý™ë×.ç6…^­¥Ö?Ó}»d–{ÂÀÈ®¬’‘"Få Á;lбd0v8¶½nþ fÙmà(_šO­8Ž›G°·ßu:º•xi»•œrÿë'q”SÄL­Â ¿ž™ $ýÁï³#¦ÑͶ˜™ƒÛ¬‰øRÌFÈí:ÿfžá¸Âþ"hdŽä] tK­4ƒ~—ÓÈýðgi‘QaµŒRµQ蟔SJ>SjöG# ´6:ëòL O5)5¦1%R²ýÚ¦³"8-W²Ám¹úüyJmÃŒÕô¼Þª·a½Ñ|iÐÖóŸ—åò[v :³™Ê9™°ŸY›ôžîßЍ“†»ÕCé)õÕJòdÐG ‚—#%‹Ç;6]ñkø…íã+ ŽÁÁc`¦} +ïO𴯊êÿ²Žs»[Ü(%‹¡«ú«ŒO}|ç/~m\>Í%¨FÞ÷žÄÍuöN›5ã@ˆÆp½Ðk÷– u®®ÊÀtžZ1FBÊÆ†ßOùåÌáÜ[LgŸZ_’Ýn΀ƪ{xLJ :ç2éÔ_L.ã™ò}Vøò/i¾örUGð¸ÃØM†gϤ֣,vä5ucGÒwÚþ(zR£fgyvîÒ¬'n4çúkq/„fiwŠåׯ(¼·ª›Èp',^÷¿ÛÑq‡í&À|ÝÑÍá¾´81ÖߪÒÓÞ¼çs-YÎ>7[²Ê€bTèŒßsÕi‹WTÛ¤€ÞlûçKóû÷¼½3 ÆTHž%™½™ô"Ü´“°Í8ßuc¢V{¸ŽÆœ«n¾ä±ï$ir_ œŒ¦ŒZ¨ãÄ4öj<Ì`t‚fžÖi¦Q™k§6©RS JM$¼K{ÄçªcSyên\Å |_-¿OIÉòÖÒ"[YeÄgœrþÛ…¹÷<>Õ f'­œÉ'­önÚ†¥ÙwuJÑ¢f…}òIÿ˜Sjœ@TŒÑZ.¨ÕîèÛ#:\`~¨©såá­Éç×Û;’¶ú¾ÏÏ… »£Ð«AãÊËÄàšÚö’ÚqïïÜ|ÂÚ¼Rµ@ ÛË–•,u¨¬œ9Î~È£Hçm[ã?o»_¥~@ïk¼Ê%µ·ÖÅ&‰ˆ7k½ï¬ ¼lûó… M)6àLP´B^î^Çù[ÛñøzOŸ4)´ÊdÆ›W~ò¼@Ñ¿W¬Uæ6) ç7ÖÈe·)„u·ñÃa4©»ÂÌ};‰¦f"_»Àsrñ×…=2,B“fj˜ó‹±iÏîëÝd5dK¦éÛ.¦60™òúÝ|‰g#o3URëmðön#µ–HüxoM¢•vAƒõB´@ÂÿÚµ”lGC`žÔ¥9C'ZÐùò—“¾îLmœf¯üO)o[ß~µ¼_Bnðm<õSàUŽú« aYüNGQ7™>÷Kís¦·c4bôæNà=2™‰`6Hqð3™dÿãË¶Ž¡Ñ<'“Ÿ½÷gwMö¼Á©«Ke5¦Lª9‰­Ã¼$ûßn5,\#– S‰¹Ë}µ¶˜Ü…ÏKQQ#xC:áëýÊ ÈÍ᯾Nž~σ©ºÊ¿”Q]3#«–ìtÄõD—Hïm‚±sÿ}ÿ‰ƒ6±†IÔÈS7æuLñô8¾ª¾¬·m—ÁKg:p2€ÌêdÿnKÍ·ûqÌÜ=NiwGåhªùæt¤~kœ·_‰=}ÿ5™(-ÄãÝrñ–¾S:þkº¶Éé¡ó¼4bí—‘ìõl]JÊ&þ;âü‡`añ† ÂsþãÜuòÏ^wdÂ{Ãü‹ažùYØ&órZUóŠ„è¥ÿì¼h¤wQxË{’,’h]‘ýÒ_2Ã4äžÜòß[‹ÐQøß]øª¬y5¦g DÙü=¦”9ªUÇ(²[Ïüÿ)íxàÑÜnš‘_a%ÜëæÖ©Ìñxy©~n²ŸNµÌúÊ"©úueT‚͉«»nn¡¾×Ùµø¬»Š×w|)Šå;må‡T¨?g+Ì@ ÒVÂùñ…‡ÓFÒ6/7Aô `Ø)gõàeúvžÂ ­ÇGJ–fuJ‡ ŽÆ'£÷1‘¦MS¬ÜyTK3¿%5ÆÚÑ%cãÏ!ô‘âýÒc®bí–¶®ÿ/qxëÅ êVI£aêrZ.~«yQLÎÛôœ5¨£O'y·bÒ~Œ’¶T} 2ÞñH†kâ£\½ä±Õ­‡ÉÞ@4_XrVàà¡Q}·ø3>‰Xó¨¶\ðzbôžÏs*k3`êĆ_4öˆÏ,į+3ñH´×ÙµwÞ`¥22·JÇžßñqÖÿ©õæWáØk±¯š?.øØW|Œæ¢§6•€ÆÐ°@°ã4µ›×˜:EÂâ×?í»÷ÿãé>qS//R[%iM×mÉËã(æ¥áåúÙ 5Þ¥’­4Ôq •M´£,x~ÃF9š?œü·!{¶Ÿ<4(a@çøÜ¾LÇxš$x«bòª©~§¯—|ô?ËÛ6^vûÿ>‹ÖNáÒ^tá¸ô´½MK=ö¼“×–†…¸ÖšpƒõÕ¨_7§›)¸ÅnžÃÒ8>`5¾½°9Öè±gþ«®ê¸‹ž@xêi¢ uØanPÃ_sñ Åm"Nm¢ô ñš»DÿƒäðÎÖjñªˆäúÚ.`á^¥‹pö'}[þ7­-ºj(ÞW‹-jw:ù·,¹Ì}'+êó\éá@žX›;;°{Eóƒ.€9TI§ÛçªSN>è'*­n5;b81ÆÚºæ•òaÃÆb!Ï»¸âxZ--µˆÈç²0ð,ºw“y“Å5еÔU?KÁ­áu–­Ú¿UD> ç¸g÷ó•KP$ š[òvúu=ú+üG< (TóJWµ?åø ûSRÔUë¡Ü˜xÚ]}/êéí§&çšüÒÓ±NÏ×?«æmû{7Y,îá¬t©ä2PQz¸„BŒ=d;H~ö>:™ywÌNgaÖÙ ZOêr÷3°“£˜y6ëÆŠ+O¶ñϾ>áøáuŸGe T{yÍ}’žw™ßC鬨—óçNÇÀqâÿ%’KÁ@ ‰@ 2€Êk·ÊŽæ®ª9̸¿Þk—'i˜ùT;Q·ÌpMŒÓ1¡)ʼnÂåî`›òëcºõsa—™­8xßz sK»t»Ë­¥†… 7œñCUç)'QÀ³izŒò[Fï^ñm9ˆ¬L :8^wĦð+÷31Z!Ù|^øx|*ñ#¸(âô®ô ©cX¿Êë?LIi¥XqÁûý6»%FB8þ sÚý²™@þ8¨Óýü{U™¾³YŒÑ[°:n'0”’ʧl8*ù+3 .WP™…m¼V~ÝÅU£çØ›íŽo=®0g]ÇôÜ~þöp­hЙÖb•6W— ¹T,Üj+!Q"Ï1ßÎ|]x÷1„ LÌ¥ì=Æ_‘ÐýãÔë•¢“¦@0È®Ü)ÇcBÙ÷0öDÂJðM<ò¨ˆ,)à½ÇoQÂÖjUÕZV¾ú†©F\ŸÿqºˆGïê9÷8ׄYŒÞÓ÷üÔ:!KÓæ¬ý’2*|÷P -Rùø¼8ûúŸªÏ¢Ã“‰Ðx³P!Ž{L)01€ 'Úó²ý™{m‹]¾¢ëim~¶9tïq‡QW(c:ìÿàôƈs#,ÛJ¾†Í oEŽ/rz“qñž•ò:‹¡GŸ?#8e˜ÆíôìÈ¢ž@Žæu³(4C:]S?ëü@ýµFwê%³˜.x.Šqè˜úNO¹½.b¼Àz!<6” V Êv¿Ô9ç3×êÉqm¹²D1‡2i4…ä¡¡ôç¬$ù×îØ·üWCj†ö†ƒv5‹¬NjŒ¹èž7<ëN•Î3¥˜ ip•t륤%ÐC tñL+1ᤠfò~[ddÕ0ñCûáWñRb*ÇÅ–?‘å¨RJox {÷TŽ!ŒìlÓšv‹ì…d>#˰»À}#η®ÕEÂ|üx ðVœÌÏKMn+´úŽFËé1—ŽÊ~m>p£M°]Ü2Âý2ÀŠ{jò¤™V ÖP?q*­n"ôþ‚wÓÇäˆmÎ-È|ªct(×7G@@—ÍÃɸäÆÜáhÚa0ÆìÔÚpò/5÷>N+`³²À/Î(‡ÑrëÏô¬ O-êýÚe<ó+®ï‡S Æ:¥G9~‹µÖ·)áú0¼S¨ZJ0R Lß\ýµõ_©š…,WóïE< ƒF*{#TöLÑ1OA¢jŸ¦#ÈFi4ô§²heOzTüÓ fšm ‰„ÒzjŸèLL<)èÚCd “Ði¦€ÊcFAPªF¦†¦˜F è©ùSxdÀši¦ €Lž£OSMMˆÉ‚ &4&&M10Ò'„ÓhM  4b™3S ši¦„dÚ˜˜ÔÕ6ÍHý)M¦JQµ‰£ÒbdÓM4Ó'¤Ñ´M=LÕ=¦ iêMÒf¦M Ñ=M Ñ1“TóM4hÔÙ4jŸ£BšxLž‰ƒPzŒŒ¦ÈÉêhÓS&Á6‘´Õ<L“Âjza5¨©úC#LM6¦ÔÔñMɦš i£I´š1 hÔØ'ˆÈÑ4i´˜ÁOô15?Q§¢4ÄzM0™22Œb'©é´š4e7¤Éè£ÂiMOLšjTÚ4Õi¦“M4ÓC bž©ãLLŒ™U<ÓdÊŸŠ›0Œš`†d§š©ø “M é£ÕOÓ`ž¦£ÒO §¨Ä`ÐSôÈdÔóS …A$’Ba¦¦M4Ñ…Iè&'¨ÈÉ z›Dda =zM=5<Â4É“'©é2˜4Œž¦ž‰´Êiê=i2`hÀé2mM4hzšzFéÈœbI¢t‚¸XÓ16L‹Z)Àxb8¿˜B$QC "ÄF‘ƒÂ’p˜aáðø°—Þ„¬.ÃûÁÑàsRÖy=Móª$G1Æ×µ0óFcÖ£·Év$ÃysN/>‰nÛñ[M*È©h®£ýåom&óãSåø£ú3YÞ_ÙèEÊEN =g^g}2LÒ‘(?Lt^Ã1½gn7‹Œ6¢ú?O@ê·©ze Ñ6ž‡b\ó¨$óMqĉèQ^øXÙc@¹ãrì5¢6êç4}Ò%6}5wµÉ¦©$²3v^þR6rѸz&][ Ͱ#™¬÷ï·_”tíÏå@cÑ];¨£Ãm†¢Ácd{î‚ÞÙC×xŽ2ãô\´F&<ŠÇ p9¥2 ûDåÓÂa `ª8af*†aÅÄBI0Dé€p’BAL0’!F÷T# ``c\' 8CŒ ~&C†HI'Ðaä0˜xpà§Î|ᎠB„„0a€„xÄXü„"GÄá`!ŒÀXJ‚ ‹âÌŒJ%€xHHHö Æ!)±„HÀ’J,bôsG‡„’I!#tÁÆ`7¹ÇGM„.Ñ…Ÿ»8“ØÚ >&ìQqyíüGJÏY $¦ŽÇ8TyjG ’ €ÃÆ·ÊÂa> QÏóŸ `¹nÞËq1rƒÆžNÞð´\¼®[”ƒ(ùŸz®âkp_ž+uÚÑÃíóI¸” %KÊø1»N¶#I YY[næqøÏèd,ƒ ¨÷Ù¸¾ÃúD…4Uö5A縢«ÏRâ·–¿Âƒ¾¾X/Ý> „¯ääÞ0'¡«+¿¥bfM·‹Õ¤e/ËNÕ@š<èÐa/ºk~ä`æ@'ZÞ‹'ë wiZ‡¢Þ‘ÉCI\ôvYà#W5Wg²8^9dšktK­¼•)Ÿ#ÊÛ›c¦~Ðâ4|Õc%–ã«Ðà_þ?\­‚tgû_jx]wC?Éâäa74=;ŧcȘ¤¯ä‚YÖ@ª˜BÂBs$9„Ì3"}„“0`v t_Ï8·8n¦Ø÷Ó‚¯Ø Kzö’Z† •‹D‚LÍ÷È›ñÖ>”ž°Ž½& ÃkAV'|óÇ¢Bóšn„ù×*Eí~4«Ï5Eº‘®-]uÁ¬Ýƒ¹ƒ½>˜‚ 7;:K,6ÀÀ2/ω‚©æÌT>•´u‡z)"µ9)¶°TNù[ÐþñÂ)Ûíx'”]Á¼òÙgpÎQç¬Úõ¨ }m§llÛžç_×ÚLÛ7CQ­ Ó[êACÐ*£Ñ'ÃØ«Y,«ÒyV´KÖ¯·,»4<¼:-÷FOüO!êzg"}ÚAÕí˜FÀw[ 7Ü2¿ELdÍU×4v fíÓÙöé¢XR/‘Ò¼@×2ÆÜc€$…æ—½%¶>jDì[¿Òß$Ò4çKÝø‘¥  \ÄÝ*þR¢"X˜”K} ‘MÞ2³œkªùV5úÞµÄÃÙÛ²(w`k©DëÙmvRRI Ášaû»ÝÅÏ5#K)Y°?ÏéÍÕ‚×·ôÜ©LQ@MÑ¡I¦=š§Æð¹,½ï<—›}—ã'ÑoA¶6j#µæ¯›Ž «6@…‹Uöq›"5Š‚Øñäq iR˜±pn~ÿ–Ç3¾ºÎùåïú=J#V>Cè úƯ‹k|èrÞXäÜ{3‘û¶;‡d祔yC5 о”ÐÍs¿²•„1âÒ8k”?+Ô÷Cÿ ~Ù—Ë ¢6M=ñÙWq,ŽÔBärær÷Þž…ñ4FVŠŸl‚g—Í\ñ³†ùðh¾•ÕZøƒ¿ŽM2 ½Mœéú¥pÖœ±“ƒ¹ª,ΰÀ„ú™V¥LB±çs$ïŽ|ŠýíìT)ÊqËA“¹ãLcÃÉ¥R‹XÔ1èÖyöèB±o‘UôÔ| \¯ŒUQ››×=Þ']–HnÒåôÖòWDH9fÐJÄ$hØw.¦³ç0š,?¾¦‚ÆÂÓ3|®a?1äë·†å,ÃöíÎyýÂ:„ IŸÊ-:`)_bbÔ°&h¨³cÊÃ/ï5 ¨þŸÇþ±LXJåz茣bþ„£­Åžƒ¼ùJf&„«+{!OY!‰Øx߆̠ÙÄ%²›Ó kŸÜo¥1Ö¥¯èuØÿ2VÈé‰:sI'…oNUÖB5Ïc¢µû £/ôw·`n‘å/ € ‰â™&g Ê훇^S)¤CKð·ÕÝ½ÔÆíC¿Þ\_²kжrmÞ"•10&~@÷Å–’&Šù=fÀ~@gyÞ_ŸØ#Ù}+ è\|Õ^ØÔùiýOùvù‚³9©Œ÷ò6¹¹ÖÏß”Mƒp&>¢Á+B1' x Ö³´MÁt¨¦íE¨âH •C:6d &RÄ؄õ„w~“XféñæqÎU=¢à­Ñò¼ÍŸ@qÜÞ–ÃóŸµëÆ£B21ˆ_~ÈІ®Ü;d¥ÀcÎ!Øv†\ ‹Ï˜« ×nn!—%þåÛ½f° Bxq ¥p.®÷ íÑ…ýU‘‘ÕÝÎV¢Ð«‘(ÁVç ¯Þg<õ‡xZiV$ˆˆ{˜ö<_WZžy:¥œîø4ü•msÖx¬?®`ç[¸¾×Ìç–Ï]Œy³t[WƒKÕ©@ôcC˜#w5xœÿ/b;z2ñÔ ?WE›Çó¬Q„™e?´Ú:AU3tCá)J3í;ØÒ]ewg]ñCëí\¿ä?K“‹¯8‚Ña‹âÕåJhô`ÀÆvy¸K…XµÛ_„1hG»/2öÕ¯ô—JÖ¸>-è#}U9ÊWr@òÞ.NyØYÅ3ÄÛ4)í;’y¢ÆA8±è–úuU¶ýUf$Ì_K‡%ùš='jΧ–€Ó1õ[¸³Abl^”6Ó•HpãuÐ,·ø8 yÓúë¦ôÄ9·Åh[˜Í¤eïÛW]þ§—~wm&C{"é²,{u{xDÀ¶a峯…¿‹yp8…“P£ÌKç÷ )˜àí¸5$5£äþÁ.ÒË•õÊr´^L¨þh-?Ú¬ú¯Òoù݆uÝ5éâKz¦'Ñ‹H¤ÚÙÆþ—®½kµPŸž_‹ÍgZðw7‡"wÉ+Ì"ªNV2ßùO˜¼v>Åû/¹IÍ/±N‡8ˆAs»ß±Ì*7Zw>ÇwåÚùgþ…»,¸• æ '¹ÆßX‹Îß¹€t²šºÙÑûN|„óŸ rïS3¸›S¦°:c ‘Ͷ‰p)5m:8NÓ_8Ëè qC(ëRÁäoŠIûç,"ÊŸxFCÚhl„]¶‘¾Ïôc^ŒàÊ‘qFœî¦Ã·í² _Áf~S&“43.© Æ¢›R©ýûƒhU󈃢ë´ôÃXˆöõÕÚÁÛ)å܆õÁ¶*Vɦéz²'û'éŸ~êPÂ'NŠˆY¢#„íCª¨á«ÝV;«]AZêJÊøSp8AÓ“HÔÑ´;Ac¾p3pË ZÑ]›êK‰¥°Wªp»DfÑõîRKQŒ@cáýûïq”;VlìÙewý ùVîbó= ·ò vñd¥x¿ckSNç~1ISQÒè}´kBþŽ?,‰ð§‘j,iâŠ4c*Èm¦(ó>ë±ïd§×ò̧x“U2¶ißD’è~%¬µ}Ö¹’6‚B$ßѾfm#7½÷Õ%h,k•P dú;âQÉÿtWâ”h^Àæ;ž1ùÞb‚Jn·ÞÌ›8 I:°8ó4FyðØF*-Gy%1^ÕÓF‘Ã×UÁaiõ5ö@éGÄOìÖ+`–¾ÀÝ/ü•¦ 74!-¥»¨Ðµ•pt(I¦Ê9ü‰|,zççÎÑ>nE|+]"Û£~7viÄÞ(Ÿƒƒ•ÑÜA`w7áNŸOÏ’ºÛFl³§RÛ7 ?|4^¶cj çQ8Ÿ76þ~²…"¹´@ŒŸr¦œ7äå푊T á£®óU$;‰ä[lz•P(OÈ€?¡>â@ðõzL‹]ë$.&KSR‘š‹™»¾!¨‘M}‡ó3æÑ&o§ñ4xZFΈ˜óåI¤×â“ dŒ[Ãþܘ¾%ΰؠÛ}‚߇¹hDù¿·‡Ö¾§n÷3zkçvåž7¶ªâºTô€|‚ñdPg÷Ú°òqN{m!ß 9v¤í·cÛüÊ’S¸ éRP° ¾ÏÑ-J©¾Jù÷2ŸgÆ|ä’ÐW(ý€@rÿ¾EY¯-koŽ 9sìµd8Gû;³¤™¢ Sž»aw•ocÜħF™ ™ñòaŸíšHü.·‹@"ÒŸNÏùÄÒl6 }!ž»Eiâx_Vë­ñݰû|ê6TÔr@5íÏ=i³AÓ˜¿Uȇwé©ûóäèšHªîÂ¥ùØ rx<=yâLm›“, ¤1°BŽ¿j:a×T¸ƒ C$ÖD§Eš…é«-òè”W‚Gqì`&7'i;j ¸/OɵZê„cø§=ÎÌröüP8èÀîe`!žt~kÿL¢Ú‡U.f“ÁNLP6éB@Aîì,Håµmqoxù¡öñ®8ñÚ0™{ð}áíJi˼ê˜íP“:tYÒS\ˆéˆº)Ûn nbà ÀÌ ÀL ªwØVIFxÚe®Ë×h–\ÄÄ·‹µ%òä'Î=Xň0;ïÞÁA?xÒ|ýÌÞ–bÇrc´¨[yºâÍ}øõ0å?Xg*fªåIÚš€€Ï®Ñ1ÉŒ Â%Ñ›þ² KÛC¥€ÞÂ}ÉëkÞ4ƒè€©Û€Pˆ«Éã¹É™&A;&çªqúR ÀØi¦+­N*Œ,-²rÐ⻌œ/²T{`r¢N¦ÕG8þÛ½ŸÔyµÌpg*il„%¼øž°ëŠF’[hÅ $CôTYð3œf –{q t˜×½íÛh!ç²ù@¹Ó=_=3 A=¢Õöó™Ý͈I _3ÃË‘¢šÛ[€š¢õO´MØO12ƒÍμ¾Øï'¹íh- ´rã•Ö*°!hß(‚X °À4@5gpP,5Kú‡(j»Sß°0ï…îžÔ¡ Zý^Ø¥"Ï~-|d†t%ðÈYZІ;o{{^yUܲ½ßÜý½“ ­”œ|_ßd9ºO:È’T›O¾¦‹˜¯\,mô°ü–›‘­šî À piÂ-;ÂY:?ä(Ä—Í Ê¢{Ô-p8ó/t6}îP††™ ÒŒæâæŸh4Ü껵ò4ž¶ÿžºjKj]ëÕÀ£>‘÷]Õ¼¼ ÿËbaÔIpÇh}€0F©Ò›[™ªŠÌ^2¢úÿŸkðš[d€Œ FŒˆoR(9Þ6¸UžE ÷uJÓÅ­I#WZíDßÄ#_¯òÊ )ÿt0õð4Ew˜ kx)e[p©f¦[+÷½ÎÿJ4y’©K` -y8½’êwŒ©[\Q 3xP+€_Õ{Þ…ð°‘üKUPÛFN^hªèKÙ9ô˜ È_¹*ÿB%9þ¥,y æÇxh!Üh¤n+ƒ)ÊÓ¨Ÿ0'¹®¶‚áx‘O¶‚¸t”ÅiÕKƒ>ëÃZ† Žï³å¸Ï’,6V$æ;t…RLªWc_ò¬zÊõòì4z°ýfYbS/üé7UÑ{Ž{ŸºyE–.ž¿¢£1þêqjõæþAè˜p3SÈ`K©R¯Ãóë©áª™ÏuÎÚ»"Q¹t~e^G)‹Ê–Lª­üécAÀ¡@’¢ù…à ý{™ß™¬!þŵËëÎû ~'Ózx&ÀºD ¨ØŸ¡·ý"»=×ã Õ|»@æVfùé’ƒÐÁ£Ž`Ÿìâ]Saúw…mG%‡nÿ­X‘4˜ÖòkÕTÝwa@æyß;Ìœòw}‰+ù¨v·—FïÆ×‡[ÌÂc~êòy^½»mб1õpI3t¦О兎dE`|ø”lÛÞfOñrîy/¯üôøÃrº\Ó¸® 2‚.?y;…>L>OéµJˆñ],ž6T¯üUÔÄ' Té¥Aþ›_†ÄíOv’Mid×> >­ ãä°èNЮ~ÅÀçLIêp/¼”D¶Gž»8ˆt¯:íeç€Ò n‚p§Dš'²¤vqMÔï’‘‹nû?#cå Ày_iƒ9íÿeíYgg“'Ž£‘éèÍXNÊ÷[°’±K¢½2‰Äv ùþrzƒ Æò÷ÄL…™R®âKªe”ÎüTm±u/ÁÌ]KWQà0Ž€ÔÛhÝfQjÛŒÛ2GFc85ú\•¶(1UìÊÇHÏw¶K7ùÅk;õ¯˜{;#š¨By)»m¹ítß¡’ždrÇRv^&Fzÿ Ç8q‡›Í“ ø¸:£¼¿:pjõ]B-w ¡§:È™ä[&gí·z*o jÿºWä¼r:nümŸEØ(%3V­®`‚eá\ù-“/çæjˆK}*_9í36*;ųÖT¤¨)hÕ,î=ZQ߃îšTÀÂÌÐä~¤Œó#êyá¢dÿR¹üì¿¡ÿƶÝüYX-K%ôÊ4¼†£zLù^uÕtüKiÌ”êDýrØÚæ²Y¡Š€Ë‚w3ÐkcßËçu€“ €ââÒS#Ußu£•tRù}7 ¹M”RÍÕ„hqf>ÎB®îœi}öX}4Pê%e|½$»b'{ÞŽ¦„&¶žóËÍüOó‡tÌQ” Ï2¦ÄªÍ¯ð@ ´„Áí!9LžÖjñåÜ/ß§•æ=Íù¥àдid€ƒrë#zìNâ½­%ŠÀû¬J†ú]i-Û«’œÆ™˜óˆ ø ±:;‹¿fì<žÀ+„…¡x†ìÎ'pÄË_x­º›ì»X<…Þ/äg@Ác°{zŸB¢Äû#GÖMÐǧÈì»MÈ»ÎÜSB”·½Á$– ů@K Ǹ«0wÓ鱞ß06jk¡Âueˆøå3‹Ò  ?úäDýqzô45\[õʦ¿íÉ™¥û=žvþZçÄ6D^?3‰Æêc_,[ÆŽŒ¦¼Ë>`>žµÖæˆ^ Ãæ‹ciO¿é…ÚR¸‡,¥)¯H$R¨YFžÄ£§â®"‰òæ’q(·u±àœŒfghû»0PwfQ‰“Çš­xU£÷ïu~² Op ¿½qݦWü–W_V«y-B[_¦È¿›nê@û=üÌ'Ò(A®)q*zÐÍ”2Њ­•®3Ñc¢Û»«9® 3µÑ¬ý±ÓJͤP –J·AÉ6c|¬(æÀH{ˆu‚à(ü:‡(*9ï6ò‘Ç¢_KG“$L÷'a^B—uÛu#¾–eÅm‹.à,ø«ž¶™{Óö\¬p=m²E,E³´]Ä„ØÙs1©<—…%P† k›ç‚² ‰ÐÝ!Š”[­ŸÅ…Âb­|¶åájdìdzÝë:,N­¿Vø±2ý\9iw ¹I@ßgŪܪlé{MÇŸ%Ý|»E¯‡ÁÅ×FžGÆ"ÚWP}mK#â<¹~’ž÷‡•†vg«ìÍEÃx]"lqx_Û/¦ÇCIá²› (€ ú÷²’ƒ%ÌYÒ&U÷ò->­Çn)a_ǹ¢V¢èÚW'f Õ¯yÌ8‚®ê™Ø;:ƒdSÒRà“ø_ÏéVÂÅ,Ã÷+N‰ÚÀ¢ {Vku’zR/d+þy×Û&&rŽ‘˜—ž¤‘{Ê ¶ÌFýû UÚ—VÙ¾JhBüæ<ׯd†K¶’Ç“+QZ›Ë?®µ§g‘%2×þD}PæÑ¬…T¬ï}¦k ­ É‘Ê¡Ÿ-Ýü†…`²:ðâ–4ÇC¸Ç'Z""èµ7ʧqÒ£iƒ\ôÕ ºžÂ?“q5³ö&”žCgÅØ»‡Ü?AþòKÓ¦˜‡/¿_‡žÃÊàÍ…‹Õ{ü[™Ù3N®*kž>ÓÏ:V<ñ|ÇÛjI•ÛÔ“Ê7îËȼ™…ŽßG½‰µ~'"Ö¯XÛuíñLûúáÌÎ! ÖÛf 5,êÌãNäWÞÄ»ª¹ð¢åÍ~Ê¥ÜiX&ùGoáݱûþ©ûœêV¯w³‡Úß­Ç`f¸—oÅ>§‰ÎôÍF‰)=Æ'qqÚÆdš|r̺FyrïzJ–>Æ™ýGßËà5Z¶ÆE¢ÌÇ{ D»¢å4êüÌ ~UrV‚ÐK`âô!¸ƒé#öÒÏ— &t=ºß9ÜVLL¬™› Ò-rÇ·žû>R M@øUñ…ÑüõU¨(2’ê’@yúyNâðì× œ½ðࢪ²!MòŸÆ’#vIB„àôt±ËE%¶}¦zm8hÌÕ`@fÔ:I3uòÞúÇrè[wô[¾5’s}Jž¬8ÃwåZ|~O†’ÕÌɽZ»3%×tÒíæ ]›ÝÞ@`ÎmÝÎð©F²:ÜÖ;ÎÄW®RõÑG.WCG®¡UØé¹BƇn×H¾\Å¡L}÷á¢ööòÂ{"¥)'ÉÇ]²#‰ÆÌA ¹´–,Ÿ¿¥»‰ÿJb®AHY°ð ¶p­”IwqJo1S pÞ‰Xµ Õ»n£ô 2ðÛ§f‰°¬Ù03D£B}{Ö°¬º8eËÃèpøg ïJ”©ðá®Ì@¥“§•ÿ òL£lŒmC_ðeÎͿîVá£Îj•|DZ"J){Þ¼×rW`áí:›i´ÖØp=’ÄÎ@ÈÔám ä:ŠÂsÍ | ãÜ]ÆÁ`æàÊÃḣôvïŠ$IÞéË}ºŸºQ©lvôZá{ïÏÎçÌ…Ü¥ù\o‹õ&Ëòl8 È«ž Ë…°Z5pa6¹Uê2$ª{N­Ï‚vlò2c$m×çJº?p´Â]±ò#ï“È€ €\‚õÎjâQ d–›’;xmˇ#  Ì-äJ 6Æÿn…Žb>0Žq‰˜ÏæYh“k‘AãcèÎ"ÉœûõÉu‹b$Qµ°«ÖÁâàZ“_ä'‚¹º…ä‘7‹Gà9sM¢u†’Å ¬¹ò’iÁåN[ÔXUnÍ,ŸÇn¼ŸìrŽf¸¶…¥ÉrûæÖ}šŠÆÖ2ÂÃó2³¸ÄPÇ’ã×Ï»‘„òX@ó¿CØ·³®ªT4 Ýìên`ë…¿’y@ð«n&–©Z¦Vþi¾£MnýÛ€Á#¯Ù¬vžWêuJ‰D¿--PɺZööîüÞD$á’pÒOÊjik懛'kû!bNz˱lg4K©³èЉÒJCúÀ«6y&Ç¥†¿NP¦‘íùß`3‹Æi©J…¤»ÏsÁG}?–ͰëHE!Òäôôº„Cý¯~ê4Æø+«G9¹ýöo9ð§ðDXãOL¬— gn;jž"ôÝ}¥ÐßÂUõ,ô¾!¤jÈé䫋ļÿpä 6SUq-øÔ›(D@¦CïAÌð‚p MwŒç€®F D{Å(MNåU÷PÑ_*;yW– {)±O­æ?;-Å=Åt2Çu9§ÖViëOc©fð^6q²Ay1¨~šÎho6ä’ËpV¼ÇŠE{kâ>³§5ÞöáY’•ÓSØ<½âþ ònêM:r­0ÛÔæ'ÄŽ_˵—‹Vlò I¬€¤ÏÜÁE­åäØŒ‚ï/óÐ_â©Ï±ï¼O±hüù®i>ÚÏ9vŸº½¹!4ýƒe@yצÁSWÒB»S=)~é¹TpÍ’“fyµfƒÇã äã†#6!ƒ´ð÷µ ›úðºYÔ2Ä»ZKJµ«´T¢O·„»ŠÃoM°JâƒØÙ’%:µ:ÖÐו±¯ijù+Ý‘–<Â3GfË%}òÚ!Qcã^µ/”ªƒ^Wf :º‹¡ÐÉ|s‘øßZ‰ö›iÏ­^":’$:9ÿ®žÐuèÍF2Å´é%êÜãmcÓc ÏÙïoc/lŠÕŠo ¾ ã»"f”‚)Ñ›cÔƒÿM½w:æé±ýÎÙ<“È2Î.d<_ŒÌÐèTmƤ‡à+d¨äà¥'ÅЇÜB'dè7Ê`H”~™?Ò˜©Ü¢Ë‘õ0›çzKknæc›±Õ¿¾¹—°ïb‚hásÜôñq<ÈÒSòÌoXbÝpnwUtŠrB‚C˔ɀkI}Çž„6P÷èZIM¼<}'x®{eæn%ú©O Yz“œ­Â\|w/O{´êD!’@Xýs“·â{z.-öQ …*mY`OÜÕÞ%JQâS î"õ[[kjÛ+r31÷ø×§âµn ÓZšËú–—Fº…¿ð9“pƒö‹{!›;[‰À©Óí¶³ÅÔe1T¿ãÚ‰,¾ôç®°‡ÊŶº½AA;^¼/zÚ(ôó)š{é0fZè"¶y}dšVoVÆ)ÙøA¼´n>$Ù^ËÅu`f?õ;MxQoÍÝç¡l÷¢*Òÿø»’)„„€š}@zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025413607166133031614 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz22.dat.bz2 30 atime=1579730360.849765597 29 ctime=1579730480.77978875 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3raidz22.dat.0000644016037001603700000006653713607166133034715 0ustar00hutter2hutter200000000000000BZh91AY&SYp–ë—eÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà9ŸzÜõ÷ÀøÕ•«,ØŠØÅZJLI±•»!%Ý÷¹Ww{Ã(K›zhwÛí{ß÷¾ï}×ß}o}Ƚg5»Ý®™µîë™v^ú¯>|¶[[¦êªÖ¥÷Ý×h§¯½Ö½Ý½Þî¯<ïkÝÔû=zS\Ûˆ-Û\ÄÛU™ŠÊ†[m´ì5Û­XÛ[FÚ@m{ìíípÊ¢˜˜LL™b`†F&©úi4ÉäžDô1QèM“M4ÈÊf™50É=Œ˜šF‚lC&† OA‘ˆÄÀ‰áÁFM ™15A•HLÄÔôÄ4O ©“2i”ò hÑ‚› ‰<š`F&˜&èLL  Â›LA¡¦™'‘ &§“#d ê4Á‘Šf¦i2ƒ*…4à LF&˜Ð`&' Sb0bM‘£!“$Ó 1LÈ€i¤ôhjl“Lb§‰„Ójž'¦Bzbi£Ô2e<€§é6¦!=PD¤Dh4šz¨ Ѫm2›&“Å3!0Ojh šzjiêŒÔz&žˆÈÓÔÉå4ÓMµG¨6„Ñ &ž“L˜i2FI Â ©µ0M4Í@"¤@˜† êdbL¦ôL™G¦ÔzOI¦Õ=OSõOzj~©µSÔõSÊcÔ4žÕ=M¢i£É©´ž$ªz#Ò4Úš6™M“Sõ&yHfDÈò™ ÍMꇣH4=G”Ñé"&šL&M443IÄôÔ6‰¦J{Ôz ¥?G¥5?Sõ=SÓL&™'„§“ÁGúš`šbQþ i#ƨòžÕÓ54ȧ&ÔmO ²§4§°Š~©§©1Ã¥3çê%û†Ø4„ñ Œ àD@šiÌQ`º¬h óçF°úÁ¸,F!Œ1fäF^Ê’P„D¢Q(uä’"#¾÷,·xÿ»g]·ï4ýF»ivåmü—pWª:&'YK¯7ÉÝþ¡ô(¯Gs›Ú­¼žU9¿;¤Þg.í‰ ]:…;{ºd}ƃqÛåÖwvüˆè~û®ø89؈ÙÏn›5تv[i³ãJ¨Êú&­s°Õa}ßñŽÏYÆÉi=“qòýºÅŒÞ²î ÷) íêßñÙ27—ÐòÞ†©Få¥í–b!+®ã™ûä— ]"êé~Ö*Ú7)η¹Ã-¬^_Srãɹ=Ģد¦í|×û|¸üèlžÂúê?8÷¥ªù-¦B-Ö¾G—háÀEe¶˜¸”…Zä8íX.à4ÍVxÕ­ò€  VÄèŽ z _ ‚YÚ†`” åëXÍù$ˆØ&äîBœH\ D –ˆ‚¡nCí]i È`P „‘$°G:TP‚*ÈkH[‰UP5\Ó• pÎîb*Ð*` ˆ70EN´üPP» 7$Q耢¨(ôñD@QRò’€"6±£÷H!¾n   `4êÀ‚AM †h VA Ëc@+VCý¨ A÷`ï%±»‰¾j Z Š‚€žøˆµ -óÀÛføƒd!xbIe‘$|˜žDd„JÂq”#@ ?,­7Q%2,5Œ]›ÇoLYG®qÏ"Ñü­b¸rÉ@U{2^!xb€(" B ²b؇8’€¨bˆ*jÈ*¯oA¬6msä XAR±ãšhëÚr¯š^5ÛXrãS×¾ˆÐlŒuDá‚qŒP4Ä z[5`:ò‰tû¦ü©w–:Ó47ä#á}#Ô(~±a’c“ýr¶Œ›D^,a¿»&›£Å´Üó@ꆀcHcwcnÑˈiÂ0Dáþìz¦¡æH, ¿ ¡D¹°Ð€c†¦ËPP{Æù K£klXDD.x€-™:W€„@ƒ„9gvÓ+FÈ/žá9 Pb1h˜=På€éH‚i%ŒÊ…hÙA@U’„U£=g7(FI p”FBœÐ„C .ÚE"¡ãŒÚ@L Ô'Ä)È 8¾’Üq—{ÂQ‚G~2AÓ!Å*ÂR”Xf ªÛ†@šlJv`dfá‚ü¬Ì…£n5´ÃF6L‰D(E>’‰ ð-Ú€.rr„ýš„VaÐ÷®Q”Û1ޤ3dÃÎl˜ƒ!jÚãYz0¹ _µ¶b+óž£Ì·ºVðpî” {¤" `âHËÎt#lÂÁ(Ø?`‰ÂvAQ|]ì€Ø¡h~87  t:vÇÂ… NwŒÒ«FýŽhó‚”4ï:ÉzðÓ¶’ÜÈêICàŽ)èܺA—z-Hõíãã6œà#n=£N>ȤsO(”®•©*}±&³ €ïÆaw9±”}ÕhÁ×>°Ä€ãŠ¡Ë ± ˆdÂ…ã®h©€Á#XÐLl…íO-À1íbòçËB¬/̆pÌ9V¥© æÉíØ†jFÁ5÷Á¬$9†YœD+ê@©xf¹Ð«h4n)÷¥Žp¿1 äǼÛm˜ jäY Õ k½´ía\o\Ë(=àíËË5Ê¡Â#î‚òï†ðÁç°t£hiXe‚#  žÛ¶v¦ÙŒlŸ­í]IdU!(œÞņ»"Mµ@Ûc¯ û)[Ø;׆1 Á+Ý PHÞÖ•çÝd!™`6Ä§ÍæÉlI/<ƧÑ`ذ±ÜNñÔ ¹h²Ç×Â1ˆ]³áÈuø4±èšë Ò¾k$pî݈U[» 3ÕÄ¥Úë€Æ£éô”à4HØÒs `Ž0ƒŸ`ÖÀTDµ2®˜äJ«ô &d9Vk ‰Tt„ð&NˆˆsF¬š Ñ× ³ V5?øÏ€eü Qºd+FðOçúOõ²± Ž5¯CÝc“Ê}÷楒=98=Ì_0’AqˆÐK"#ßšÀÜ‘’_îXtc»DO¤×¡,[æ Òb,ÉÅ@³{gõ•¨V5Ž\ß¡<ÿ žÀÁ·eðŸÓ) ΛèvSÞ@Ðbá´FÄ·1.Ñ« ÌqOWµ$) .! Ýò¬‰Ô!ÌKxϪ0ó2þÏüñ¹oSè–t1-«Æ‰Éjrq?®"hÁî¯Yã[) ènÆxÚ âGYÕeè(PÝœ–Ù ÑŽ²b! d²[ùSa°9hTÞ±È ëEl1Œä§‘¡‘`¬òP´nÄeZ(£ÂÄH¥f{q¸5dÂ…¦[’fÏ[Ë1304Øóš4.У‘µØµX*hí YÔ‘4QwV]°{†¢8è "tÞPætÍNâ±10“‚-Ç Àq5…ÖO2(i?#Gç°vp-ÜÃÁ†Šz.ʈtÓ2ÏU«ˆâàÌæ}H=L÷‘áÈò ëNÌÉ”8òËCs3€]„! Ê* Ò Áø·º†Á Ã•â*à¨J"hIæ€×„Hqx´,YT„ æTÂÑ“x7b²¢°ßðšÂáÓ4B0C¿vj:†/Áí9àí·*ÂÀ÷cRײ·+b.¨^šœêC¡ Ê1„€tQÉvÕœüœ?õµ éûî¿©­ :ò˜!÷¨ÝŒ* 4¸^Êñàôg9e ÖߨÖëûôã{ÝY. ÈR€D¿¡—ò؈A³1F¬nà ð]CúLÈëØÀe Â"!`mJ$<¤ Ž}„V˜f<¦œ6³8¦ØîCˆ„ñéI8²)„še€±"gï8„§^ð‡&F>“~3Ï`l|T>Ð’øÜ‘Œ’±Ð݇7Ä¢¤$“Œz$ËðBàb‹ï4í{·Û“~·¢nZÖPúgˆdÂÇ«¼ÐOçÒ<¶($œmǽÓ|ã@üo'¨q"pFxÆ.H?Ø(‰Âg¡ ß:Ô <Û|cvÜ´£$¶&¹¦[@˜10P9ÐSš2}\aÄ=á޾㙄‡ Ø›j!fÕÝÊ3TïþyÝù£%–!`vÖ•4TF¼ô ÷éž©™–3ÓòjKû?+¾¡ðeÒ˜àçtf <#Ä È¤ÅNìm8”/D<zÆ6L‡Mع’hèÂs`a}áÚn眤„, Ĩ܄äà|*û²—ÅÉ•‡h{%KcÌf)Ç&4¶3k&! ƈb ËØ ákÄ0z3Zb6± °éÕ€Á#[ªÉc-Àª';ÌÒ3€¶f“T{"’8®’æYzšÑŒv¬æx8>ÙÉâPÃÔçå‹R`vF_…ßngR&xŸ U|”ÖD:* k«¨òO˵shwË"» xz Ý?ÇöSèòà0Bßw)0)¨`$D@Íy-›I´µhF7 …Δ:Mé–w,Ø> œ2bÌXvAºx`…œýcqÜ;öMÉdÛ‡·ý¤² š\Œf(b(°e¿r¹’ÕÉHË6ÉΡ4e¡Ë´åyYT®¥ˆ+I#rÓš2X5¨wÀl9’rPÄìâ<;Ã>V–öodØ¿=Æm̤·Ð.Š Š¡ý£ø E§<7K- ŽÓôtîEƒhÔ|W¸@Ëln'Ÿ‘otj¾<]¼‘-ªH! „€Œ€¦=ä3^[Ÿ4~FÛ±ë>NéÃnz”pŸ' ézCwsÜ”»Ó™ø*‹û (ÿrIþÁ€oGu„m®Xœ—èw´/…˜np]o;êÓ?ÇC% ²Öì±{Š[Ým/o\0Ùúö-îÖR¥ˆP*‚0öÄ ¤qBh ¡‚JÕ5Û¸òœÃÍt`„O=<‹p§•¤±Æß!à|¥Ð7›,QHÄcÊ/ž…”YÖb8ä p[ž†^öÃüŸ¼úoŠ7îìg!ZܚƀÀ3œm pÕ±9£’SˆD=z¾zBfxýoŒ<1”ýáhZ!Ú3 ‹I⻇µ{÷Û»—X1~ /n‡¾qètŒg‚ÄûFSÖæg½3tã±òöÁxÌt?ó²2æçƒã ›ô^Sðq=êC¥u°l]cfû±ïŒçe§ÐÜêl·“[«ïÎpÎhÍ`Wë5gÆœ<ãí¸§>9õÍdqÌpX¨]ÍÛZ*…øúÊÓ‘€mÇtJx‡ñFà‘ f ñÖ1+yFRš ww:úŠ 2|“6œkô0­¶ÿIo‹yóQ®…h€’3ÖQ”]]bæêÖ .g€u™Î))З¦uÇ Fq켃¹Œåƒ#ø!G¿úL Âøþ&V…f;tïûKÈÄ8ÉØs°[û¥±¤Éƒ–9š÷Êè¯(x­ôBöF†æ"TÿSL{AÄ>³!²l_%í ëAÒÖ>“nñ¬Ä=Me§Óº×Òz‘÷æ· kÂh zZáù«¸0"Ñ'bÜ€ž.×ÔBýêƒqúÜhöÄ œ ð¦ŸzÈ-”Zz„*Ò×ÇîMÈÓ ¶HÖ¯>nK]úˆ)õH‘Èp( >c ÷kRd'XªÌT6‚%sH¬@ΘÜpF¸ûk,ŠX6½]«M N8€ÕMa¥hšZ§n@dÂpVÀûÛšøÞíÌgk§à–-­˜fßRÉÍL/µÉÆ­‰~ü¼?Ü$œ4—ðçß3Ìð‡ªj­S϶Ú?¾úÙÝOÜÜ}¸L Œ¶Ó!tvo=‘¼€Ë î‹ÒžJ™d¸ô+¸ð{íŽàùã¥ÃZYþxƒè²ZóXÃãžM†M5ŒÝº£2’ÏI ¬êšxÞ´G¯XÒó¡Î&‹ýW?ŠV;ØRžŠ…(=ª­þ iüþM« )•ºiuÓáSùü‡p§*GÖaC°(TØOü,QÓ÷’^e¸Ð.V&®ôæÚ>F4(ꜛÄ`·#r᎖:½–nTf0ñ /ÅÝ_²ušÓ®ºÛlPd|ËÈeº<Û£ )ý «™·dPŒ'Íñ<^SdoÓôöú|’“¿1$ Ô8§÷ƒCnT‡ç#;dÌÙêŸÿ ·}'°|W6ñß|OrƒxÐ}6µº5¡Ô>ð˜‡á§Xò“íÈú] ÿ*ñÚPá[±OÀ³o7ÈQ½ÈhÐL¼ð­p5[q}N7]xÿ7Š>†LÈ@ÃYÎÇŽþì†úWl³Så#!Ô?,a#N÷ýK8«ü-Î?Ùåuú,ñÓzýBtÊz>î¿ñ%žfõã•\uñÎùœ‡"Žj»iä¿Æù8GdìT[³"¿Š‚øÊ¨X¶p}6ÎŽ¶ñx“8Å|&;ﮢm |9ºÁƒèÑîâ¯lÐû¡âî›a–œ H ü´9¤‚ ìØ a0ë&ƒÉB·Ù»°ÿê8OˆíG†õ*n蘓UèR&Ÿo0ÅŽÅà:Tð<+;Þ€Å\R>ÖÁ/hB,듇–o„.ü2œ JÐ'¤××þT*"š7_l·HÂ$ŽMÄBÇ5–iº2¯\º,…$ºæì©?Njû©MhYÇ—|h¸3€·Ži’c²è€ËdÜ«¨í°XÄ«EªõS±zUPfÁž lŠ`ÀEدðïo6–“YÍ Ø±áÌ!òì_ÝI(’þø!E„ô®Ç”|ò•ý]4cj§”7f¼I#‚ð€^»C¢©ã»¹˜œ·±EÉp»7•Ô4¢Z, b¸!wLsèaIˆ|.çôO¹õ_Ý÷eî5%Ð”}—)PfõÕVâ—©@?,Úa§ãÓÖ¬¯ÚàcµyÚ’ÎT9ü†b Å—€ùñU€TØç—õ»W[vŠOÙìÉÑúÑíÿ?T‰‚ÚpŽ)ž,e„ 90P†·iå>mú™mE~Š ,6¶[y˜;¤¬ ehÚÛVš} )Ù ±'#@ïó~ µÊ iEqùxc8Ç‘6¸ä:ú¿n;¸ŽYN,eáþ(sa^UéAí¿ÁΡ¬ †¥û¶º_úÇ|LY³2mÏ´öµ¶ޤè½w,jc²0//(–ºtû™À1 |¤Æ¦I¤€,öÜÛèV±Œ­¤¬ª pcÏ™ÕÒÛñÈŒê$UçOogÚ`}:2€ N ̦Gü˯2¦‡øÀM.Ÿß”y B,k«ºòJ¶Dríy± PnÝsl’´Þ«5ƒçžÉœÿ²˜îŽ£Ì°¬”8Œun9ùû¿q_‡©*)#Ÿ,™sC¨6cŒ_D&3Åœv ¿™/¤@*À¤Šµ²¤rá ã`>“ºJÔ8@€m‰ÐºÌ‹—*VoªÑ¬U;þr_¯ XÌFˆU¦eg0mO0ÚŒg`Žz@ oêÞ ¦²®\Z»'Ûµu½}³ž3kÖÏÑiGàu-=EZ0[àædR2­ be m©€¸—Ükʉæ«Þ¾·/Îäz oé"CšÇÙpw”µC²%!âvÆpä¥K ›Œ«g`^÷¸ D6zM?Ç3Šòvâ’ß\06N¨É",ügÎBƒOkê4I€¬6j;z5جÉÓó´wË ¥’FÅi*´U ÏUJˆ:žÕOÕM_…Ã’ZòœØJHÞ+šÔÂB"!Ü .ød–|à"œÕûn›7žÀËõNiö»àÍñá4¡Få>ù`]Eè>˜¶¢T‘Æw…‚tTG¦;À¨‚$ð×÷”§ñg|.º¿é] ©Rr·¸ßÚÌ=—òÏADC6c|¸ç)òTÑÂÏ¡`Ãkä§œë×¢CaºÃ~Ú¦¡!еB ÜÈuö\€T«åS;¡}O[#Ð}•F±Òj*ãtY¸¯+<;þ±ðE$5$ÂÅf ÿ^Í$Ç- sæ«ù–_ò÷*…};AÿsÔ‡šÜá=:ê<ô8èOÿe¦@1È@ £ªCxËBBCsùmèŽÊñ©ˆAÝ2˜ hA ¶ýJƒ°l¡r‡ Û5±½.Zkå¸G6‡V:JŸó¡‰5–»Œ¸HCÅ­ÝÐ} rjbJcŸØA cµ£èí¨­œ*vMt‡—P!|Ábtùô}Foµ=ß8Ä8Æ€*½›t™Ü.¤¨2×—ÝßWwÐN¸m| :Ïg:u^—vÏ—xGH»Ä‚Û`{•ƒí(â9 7µCô«4Zä”8ÿw·Û5a}£¥†t‚§Óf?MW Ü´³ÛèHñ€‘D^¸qȇ:]Zæq¥3Ê6ÿ–ÅÓÏ3°ÈZÕ×5s`Ù”fÍ©–’é~–Kâ¸ÅԈʗÐw¤n¤•NG¨r|Z¼ý·Ö³KuàîÉÚÞQ)vA¯ F=çjòƒ1>iC ðr‡Õ¹pCK•~ïqHõ˦Âè¾c¡ê¯g~ÿ)VӃЅXîÕ?ŽÖ6¹w"'KùÒ Ð÷ïw—ÚU Yq ¹Ë@ìàü»lÒ¦» 2…"«>àe’\ü^ ½d½l´ˆ†:Èå*´sß2å%Üyà•,¥~OM‹o{éP´@绵{s2]§K c:!øÓ2žz‰b‘ÀÍ!ëMï7‡[+•ÙPûV9jŸÔ#O…{¸ï  ìÃnõ”Òœ±CJ©-e¯»”rÝ_Ø×¾¢c8I­ÕÝL¯¸Ã  é80sÎ5eÎ;ßpè÷~l°œ|ÙCšÞˆ>çÂVÍWHØÄ®i“-ÎØ31ñ­jfã§ùY€t ºÆ5 ϶^ê¿æã“E”£Ñ2)¶ÓiÖ³tèUtÔœÜ#\TŒØÏhaXüu@çFŸ¨óü0°N^lr¸W¿kʵ僤+ƒMµœ×3¿«êlKÝ—,ÒN?¶{&¹|›Ð“#%eÁÉ#Ò6(hÏŠLDýåþˆ€ùH0«¢Ò̬¢Vþ±.¦OÆÌ³…ÍsŽŽ©GrÚXâR¦nÿc“)OŒâÏ9/"Ž-Ók¶øãLìf‘}F>{Q5µ’±l17-Dx;â”7¬fc£”eZ;àgÂd—A°7e&PùI>ÿÀcÞ©é×’-¿)mô'†¯$Ç£"bÛ¹Ã2¯­åYû¨Š}ì!´z»+«k%‡Q?X¾Y6/Ï*V6YKœ?SN[y|¨ç¸ádu¦O81a>r¤vTþ¾š|à_>œm8!Ä„]Q„Láâó¡(b h¨1ƒØ(PM€¦ kÊ6Åçüfä¡ ÒØ|5š3ïòóÏ¥ÆÄ‘”¬Ûß”øB‘¬RÄW÷ú Ò{úŠ¥ï[}üX…ó÷ÚÓ@eöÞT¾ž"Ú@ýû|/]a¬!xM:Q2ñZÌ]©T]g´?ËL¢KðeÅŠîW{*Ñ"×BdX#«L„—bü7í&H4SßñªOŠˆ,ùZYµºÞ$æfNŒoF Ùp€ðÜ¥a$²¤Ýsùî¬uµWahçSÎ X¤RÒ AÐL„”>U–t¬a©{ƒÏ:\ùz°úª[jqäÖY3° `ÇZR!pÞ—Ï­Ý!Qàbl{_ ã!ˆáÒ›Ïv#®ÛÔÏ`Š6ð=ülUÕõ­6nWœ>~(<óa°´gïÀí¶™r©€ªHÍùt¡‘P»àì²Ç²q)›«`dÙÃ1Ÿ”ø²´çšD™ÏÅNŒÆÂÈ?eûé¹â䳨<¾º ¯‡»®ëÉà @Ö>§Ò…‹óVUßoy7ß]œÇ¡–k¢øù¤Ž°8¡joKxŒŒ%D0ýõ@çÂ[š&Z DTö®‰cÝŸ x f,@íR üÕßÓ]í]Oöñ(K‹OßÓÐvè`Õ¯‚Yótö:>ç%‚‡ˆ®ÐúC= 0ù†X¦ÈÆìpç a¶î–»ùf¤m_'•{äûŸÍ˨쯞ñd`6%ôÆÚ›ë*¤rü•ÚÀœÙ,ñ ?\Ö±@“òúÈ ¥3)Ç|àpLñ®nŽBj=+ívܤ-TB ™yÏè?‰øû[µ lëïc{ù³ ¶®g[1ùg¸   ‰ê@6ÂÄ€Nužg=t`à]¡ú*̇©(«ÇH  Üæ]hG³4ß'ªÙèª|nÒ\]Ub6+Æ5o@p}LÖö6"*Z(ý`Á¡Ê59&JÒ¥9Ád»é‚3ÓK aš"x닞N»§%1Ń‡ÜK…¡¹çx¹Í)²WgʯN£;¬sâ5c69Fí`º”A͈”üÿà ÛµÒÒ­Ñqæ®ã·lL(nzÁ‰¬ÈÆ<¾œÕ–¦ýïtêX€ln2$ S1íÛKIŠFÛ±æOúÒ¡1oïµ p²1A@V@ !`{Xˆ”(̨eC xrCb:ëÞÖ_#Ñö>Žë?ôUau^®3ÖÖýt½pv ¾Æpºúí­,ó0¶+ÇŽšFƒŠQö,.7@w2’I÷Çyêà|iÆgЈ° vDEo<2–Ÿ2{÷zEv‡•oŸùHãN\M¥Ænãu‹ çê¤ãÈ?ar Cˆç]‪lƒFÕOWÎ4{—/®¢Q*HhÄÀlĪ26ƒŽ±ýqàöH~àf”“as—º±ßíâh8Û—ŠbUæU†ôÉ‹*Ò@éÇÃöxÙ´­TWÿh@ÔŠT`»x)7€?=C•]ÊpV¸VЕRßiŸÛ‡Ã{8Ù_ó(ðžÐÌI̧žèo>ÉË’»—4ÜÃ9õ¶D‚àq&!Aj3þä„Rº™)‹µQ¶ú î¾X&Ûÿ¾>ÒäóÒB@eÑ8kM»º@{"¶Ÿõ³©oÅ [ü‘§l‘` @ê–"”}ýu‹— 1Y*;¹<—–«ã"è*¯“㟣ÿ Ù1á7‡ˆ3u ;Qaz¨ß¹9Ãúsz~[UO¥¤'ÀËö±”Z‰ï#Çàþ?†Ä¿·çnq÷5èsWÍt²/+“î_9¥•èÖóuáX°šX½Ý42¬¿v+¾ñÿµ5ö±ßóïÖaþ¯v\è$Šóp$ŒÕÕc÷8‰!Éú¡INÃZ@ëDθé…°)wÐÅýÜírèÏ‹s¬£hŽ‚pÇC¦¢ €ñ¿8(büæt&õ)4ÏU&ÿÞ—¿o”š3.2ÈQ>ÿQó$ ãÃ[fIðJ†T÷æ(i:žULàÔ9ù|Júv·Ÿò{´ v6ŒÈzµ°Þ •9ˆ₀©,èX'í¡h#ûÿ÷`wVÚË^xû®‰î,ÜeüC“ýZ¦»²ðuš,@ÌaÃ7 ašp^ÔŠÖ?ÎíO¶bŠv½û·®ØîÇHpLILQfEô³C^ïN`Í“áѾÂm ÞÐD=aî#<ž–#ãƒÈmâ+6þû]”ÿwF»iMÔ·ø °Î0­kܽ¥c“¿!$ásáȽJ(á™Lì°¡ó(“óдSð{‰&Êm:|•®šþß!¨Û\%êõ|o e}·b*ƒî– ³óÕ&åûvˆçÄl·ºrŠ:! îÖ´iÔ¬WAÍe/³y ‘æ’Å‚aºrñ4*x>TQœiDY†äì‚ÐÞ ñ¹¢K‚õ W]ý)uç*z ÜÓ(#IKoÐ>b¯:k %.ünòed}ßø ¾åq÷š¹]®S f9Á1U]GMæ¢ÿÖ ìÉ®N¡þ;Ô[ æÍŒª~v¾gx©w=¸czb¹÷!O}ÐG¡2²GÛXº Ñ¿åŒ`¶;nýeæŠ(ÅÉ,±JÑó” Pû·9«É§O±£s²»ð$:÷a±#QmÞJ.¢ ›ñ $þñyþ7 ÉšMS’ŽÎ@–”OÙ@üö¾èHd1C4Xé!ÛÈã Õ÷¶em‘÷±;ŒõÕ£œ²~A©âd©ƒ¶˜o=‚Ì4pàÍ6õÛ t±g†Å³qêS+@Rg§º½n‡‰Kn²‹ß›`·ºútÑËpîÓªñ"xHí€ÊÍÊš6©êûײ©§ž×‹RÌtÜÞë‹úù¡G¬¸ewžoƒ(®¸•D9j‹þä®Ììù§hÒz;ˆÝn²Éúº>î .Zà-ü½ß^Í*g¿Ð9ÒfÏ¿>…i/{t“Á—‰w™ö›ú’Ê8GÎëÉ¥žA¸SuYÏmµgXZVqwŠÌ¼P_8YŠQ~/qàù»è»c×úûÏF FJ‹aÔï·þêPmÇ yu~uË^-{îUóktc|¸©Y˜/÷^|†DkS²gCGûì•ø g2ùn7ö™WìÜÓáÍF}ß ‰ï±ûÿKñË ögAF2Ë£´ën< æçº:biÆuµþi¦véa0ÙŽ«207”ÒÑí[ž¶‡Í´6›ÇebÀwK- Kçr¾sX¡ªQS«‡‹.ù9F½YóÓPϰ§ÏPÓÍÉŸ£ ‚ÐeЍê’# Ü!¹è|ý«=âÎΘxT·g=ðÕ¿2¨xt*']úÕPëÕJåö”â²`SaÜT÷__8Œk¸yŠìx*4ì}X4ný ™»G-q 4½Þ²Tóõ·P$¼EVC®…GÕzZ)Ë òýgɹ@]ø©ÖÍîă(ícß9~¥I’üWýÿ}†oè°”T®^û¥~Å ÞJÑ·=æº\“§GÇú©»Ý[>êaóXù(gVËÂ…s<(÷ã}Ô«—Š»u(B½‘ôt4¿¬UUØvÒs:¯ß £‘g‹†²º! ˜¥|:”Ò©j¨Þ'ˆ<À›i ø„èÕm>áíAf+’ªÂÈèWØ;9b²ˆzVT™›ÖÇ\±ÜŸ,±½Òv£B/³ý´Ìý­ÿo_Ó‚é+OÝÅ ê¿À_1ÁzBgÔ¢'~ŽqôVzûxs’œNoÍYÁ33Ù5×ïÛë%éLþwÇxòZ:Š’y’¡©Ì.Z¨-ç·þZARÛñR®áo³‰‘Òx‹ûÏRÉm·]Ägì8§üâ~=™Ýµ' 'JÓÝÇ¢bÀÇ–»/^w9ª¸:‰]3Õ‹Ýä;®|@ö la, fŒeÓIÀfôóñÑ“âüS˹É !3ÈCõ(ÊRzuåúT=ƒŸÝ ާYjŠªþ\¯Žù=\rÎÂsÃFwÍ8JF­j=t ÷6Þ„GxºzúVÆÔðÏš¦'å¸ñ|´"xš¡ku™¥Ô"ÉàSç×=ø ž W?ŽsÌ ¥Þ§E»§{ì¥CÂ=+îýšëìÆÄ³‡|ÜÊ™`ÉSúæf(”\÷Ðzãú-eÒ76w8²­ºYއ–ðø6jK@g‡föËøî+3•?1ú’%™RN­+D½E‰)·p±9DÛ±‡ð1Ûp–uþ–OÊCkaOââ0òÓ´8NU¯¬˜“lŒp_¾…c ‚ì{­eíV;ò¹G?Ê Üè9I¢hê­x{¸ìßQÇhýo3§5Å¢–þõÌn$lu°Nnøu2‡SRø™ÐèÏü’Ò¾+å5$ o+FL{cš#à×â_+„IPqÚóÏö.Èzñw òvFÇ1Žõ0ÙM©ôëÇM¦VØÖmÕ…rõzN.‡|€:CJöÕèØ÷Ör,è½us÷Q¿;ýF,æ(~"_èïcàÀl ^ðcí©>5ÒùdS‡ØÅ†ï´Mî.=oN?Ϙt›r]˦ÂÃÙú@nÀó‹‡[Z“åU¢³°‘}?W „§/ï¯ .š__Œt‘ZÙœ•…/a«€Z°CoÝQúÜÄu‚þ‹ê˜ÊÙÔQür{:x{S¨•wMmôJì|š‰J©¼t3,Ý&ˆm’ÀF«æ8N¹‡M›½Dhx«ûK‰‰»vßj(­"ÿW©}eÃâN"¡+‘?éïØe¹³l×í¦DÖ¹E´jåtßztVéúÅO5Äýžž4ú§!ð(h½,ìovïâEó#¤ùºÈؼ®Œxå ¦„uAïUcÝÂAÀP@´áÃ;èÞì½=ͺÎFÕîÉ?9”€¦|Âþ']þxüª>„„‘Š=wfÝU }Ǻ¾&4Å¿Z[hON.%!˜bÝ®(ÿfw,tÎ3÷Óië´‰˜NÛ¦"¿OÛ•1rÙkW¼"„¼]i̹qMÄã$¿¡óíŒê­EŸÚÓãÜ|¶|D9>͘§©‰Ü6bŒJ#?2ÚKüg`«´ š}gñ§¯¯qò ðH¥ Ž€‡zþVÁ\”.Ú}ýŒ—1L@@/0 I§}¬J \ö-ÝW{–St×L¨öÍ­QUn»ºüýG3d²ß¡*xÿyú˜ÄrËG*ô¤º>tâÃéiõÁö•0¼j3ìù€Â\˺Ñ`¦=“B§]œÕq¸È ›Þ‚^ž Û¥½š§Ä ™ ¿ð´]C:쇖iO ꡸clÿ”à(ƒÌøøc(PÒº¨wï½è‘ šnO”Ø!2Ük/k“üPÊs‘] o]y]ò:õ³ˆŸâW÷w<ü¤†®S¯üä½õ°Ï,|HÊÏ Ž–ªæï\v‹ûn…O²}4ôÈ@ nBÆÇ±{˜v2ÉjMnêg*V® ö·‹]Ú¿P»^uÑB@}×kB>ßÛu`” hÊÞUØ:>Ññ˜âñ;5“ÐK7)øn¤ÇÐasÌ•ûdÆ‹½‰à¾©¸Cåú¹ª£Ø¡Ð#ÍÓØ-w…0©™_(ü8ÎÜw°ÙMÅÃåû!×>Š!¨?·psæt'Žð^Òg·t÷•ò“àð—¡ÔÏïqK{of­²Ø¯( ”}Ъ oV}ªl-Ä%'­zÿñu‹ûý~ÍYMø¯U•øH¼h•hÜQtƆ¢º ßmVúNú~?ôžÞV8u|½ûÉúŸ®n_wÏ{–³9ÊýÔ¹ô]§dˆ7>êŽÐÔ6¤¥JÞ—ÿKK:Â"8-¯ÿÏ7ýä ­TÒòÝdÞîqï?©So#¹uøh­à|sn)Uñe¨çîÏI™­•F Q§YRÞêßê@rÊ¿ž ÑÏñì%“îËôí¿)"‹4 é~ÍFwYçøiMÓI‡Xþü‡TõëlØR±YÒ:}¦—>MG/ ëB¸g·XoëþÕVšíVŽ4£N¼Ú^ýßBGÇÂB>­ÿƒƒü [ëâãŸ&_“B—ß°GI]>ÝŒvB§ëq8·ÝQ£Õ`©ÒLr+ú ]LÓv[nä Ù‹=¬ñ©ÌK‹c—`·“ˆX¹Ôy$2~ æX!iØ™«åÎo/šõi>+Mÿ祦˄çP¬BTFPÌq`©ôq{¬ª¹Ê¼5äë%}Ö:8…SfááA‚èc´žJFðqѦќ¢Àl&€KŸì€¦3¥¶@A$Óå+g$˜Wãc—©­èÈÜÄ>ÔäÉ) È%â=õ~ªÐ;+ˆø$¬ŽiU=5Ḣ¤žRò¢.µÖÄÙ»x•zØÓÒ ¶«¸d÷·èhî5™Oa´ÊòÎÜõ´ò”@Ø ;;=ÙnjŸá†o£åü2¸+÷Ì}øÄ•j+@Q¦Œj-ÂGäå°ƒ<ÉÖÉe11Y]›N´›ƒ²ô½ÿWŸ\&×gM+«û›ãÏìç´û¶A£{{4‡ ÒwÚ~jÒÊ~YãžÿS‡ëåÜÅK>ü9„!î´š&B’Coz}Óùìÿ»¿¥–ø¶ìõY¸¥ÇŠeG/ò¸]2Ys(R'âÃí±æ¡@ Œê%Jɸ©ñzŸÙ”gÄžîµò‡Ã¢s<"ÂaÄTgˆ³e6P˜Xœg¦h—\å¢A‰³Âß·M!y„u R¸_R÷Ó|A1²ç'´‡†3FÉ@òeÒY>'*‡‡éÛí\ýoù_'÷ånSj¸.­@x0»ÒŒeóë}Ÿ0²t·,ŸàöãW³9L}ÓŸÌ·oºø›-gÚ¤;[ÝXwšòÝZà „ËE¬â…ö"¯dåü…_ó燖çïËÄ~5¥_,è´¸X¡`šÇ `Rì•óE‚QwŠþ;T4'ÙÛ\™+;O>›Vy6 ŸL/Z\m/ó¢à%Oÿ@òÙŒe&_‘Ö׉a?鉖ÑÀ):öý´x,†îÍ­²M¡ËÓ¯œNÈÝ+Ë'8Ò‚3×óÿª}nw}¬È*ŒŽgc²A³Á¿¥ÜÚoeHÑfUÖWeªª]¥—¹W)Y ¾Ó3†Èüo`¯± ««”ÿÚ_š‚X»Øç$úêUÞáÔO¯¾þcÏ™!ú&{àߟ5_óu™´ÿÝàiÁ@Xy‰ÖÛV~-zâÇ Öæò@ú·î±ò^h×|«,aK|¬¼4†äù[)‘éLèeÜa>˦Wof¢õÏôƒß0A¸£½V÷Aä·dz¢ÛоVdÇŽÌÓ×ê 0Ž˜«Œ!ø›ïª³JU¯þÛ„%ñ­BûB² pRh+™¶tø²°Ì5Ðþõ1ªMo§ t‰P.a`Æffrÿ+ª«[«âæ¹ss0®7Ά˜²Ooù3ÁÙ‡Š'|åC^ñ‹“[ÓŸ=:“Kòú6k]Û´`@Ù1˜â¯Žà@ ÛµkEîƒñ—qçSänñŸúMùkão깊º I@Å-ë}ÿÄ'K©ª ÖóÒë1ŒDÖ]ïÃ4Ÿ÷ªâîÇs<‚rÖjP³½.ó©Z%ܵAÏã%›Ð»Ã8EÏöM¸b?M¾}÷3ðH@âDGRãiŒ”ˆ³bMËÿ¼¥9:m AœÙox*³-3'¯$ÇêЕ®´”\ÏþÒ»Ð×_îÓÍlfs;m´ëŒ@–Y Ud©5»ú¦,x¥|Ï'£ñQpÓglu*™²¤}u ³~6ž«Å<‚ž56«ë]ƒpÂçFùÑÆIœ«ÙR/Å[0¸Ç,p,Ÿw=-ŽìY§RÖ'ù~÷’¬@ðN“”ˆ4[¨vZN)ÝV^¹’½t3¸óªžUÉTCQ‰­º· þ¢³WßW¸Fë}Ê0±¡`OŸ÷5ã¬ÕâÙ÷]¯ßËÈ5Ýíl7'ÂÛs?§éë§Ý7ýw±Øb0FNÓ[2¤sOkãÂÙöÕè?n®B@îõ¥½ˆ.4¾²o*y{P”ÿ¯®Õ#;`ýºöxF±gìYú? .ÚT 'Ko­û+VïÐý>^¬ s¡(’7uÖÛŠýƒ½>Áã×ðek^$‚D ñnOiúäþ¥õeCKWL­ ¥fÆéún²_¿Š5òÊš*0¤œ¡< JÈÚŽ¹ËÐÔ?d|D:¶ŽUá5a,±çG:„Nž}6D€[˜Ô!¶›1Õ°æ]cN“õDQ|Ú&­ T5îÅè2æ¡´÷­p;ß*ù ‡ÌÔê5ý˜f ‘‚˜Æþ¶ »ØÆ!ı ôŒ‡1UÎ <Ö…³P´ !Hu£Zœzq´? °¥°ÇÍÆ& 1²1Z†Ý£aF X!tÆ£)BEÄctÔT…@1Õ0„A„ ÅËP9¦$"©ŠRX§zPhÚQh!r@„‰b¨V0B¢*Ë*bªˆP""!@mš¨bˆ VAV¸ú¼W-”ßOkÅ Ð9¿©Õ”n©fˆ‰¦·”C`x×óTxC·qü¤7û9´¾M½ö–_ˆøGmó^=>Ckëý‹;ÿûå{Pwö;Ýë›åçÍxCdA )”æØÍÀ‚6b­ Þá(Ç™ëžÍ4_êÙ°ýìÛ'çÅG‘ÓÂù%b !9޼¨[µŽvÚÔèä6Þp^¡”¤”BÂw#„Ì ]ÒúA©(æ*\köKÕGÛ¦øØXUã¨J(Ž”ïWLù}ZvblV€ ‰ €Ø"ª8ö ‚s„?ùŠ É2šÏdòX¼cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐù»ÛÞ}ìã=÷Þ÷Æ·­î÷•·­W›ÚÖ÷ktÑõmô;×ï»{Ý^ñ¹:îî[_^ïºßwzW{ÛyÝVݽÞÝ™í×y÷ÞìU@ ‰ €$Êm=4 ydÄÁ¦S2›FTüžL†F™4z!‚ž˜§¦4ÔÚ ìQB”9¯&š ¸çæØÖ$ø=ǯyï¤d¹ßZe¸˜M5]F½o Ãyâœâ8UmµT†žn輩2)É6ü·Ç#ÖúÖÕdj‡›7”Åuw½¬3STÍ–Nvƒü¯d«ì¾¢–ÞíÆ¡Ù•øÍ™a Ïäe±´F]©»]yFU2Œ!òëã”ņ i­´þhNT«©¥Ø‰Ï“(áœsx*.iÆËëoöÙfq ®ü˜ÐDµ”BëCÈþ÷%`*1´Š›¹ù#’ûWÏÅÂÀv¼1ùV¾³fUˆj58Kuá–žÞ{Eï¬áù0kÀÙO„‚ͶôrLBI<Åd„‚d$„’#‘±èaàpI€4€_Ga0èÀ€à¹'x“…¶=6Â0‚p€Št*DèšB¯‚€Ã:120²ttŠ3ä8² ¯FätPÂä“å̇-D9@ ¡„$F@€À’(a(C@8-°ÂI$ð`I ,ö‘£q cRŒ £bƒè:6× dNb_çƒjði'ÜZÁ™ˆë¹&2ø;àîÃ6WA—*7;Ú«z¼r=Ñ¡1Ç $Ífe ~¾E°qÊˆãø¦£pÙÊç3ñÞèyß=¶»MI8>ùÇ f2ÀSÞÿ‚ŽK…Å}Z%;ŽÔ9wþ½]Gmú8¹ÎÊwù”þ[\I€‰ppÆz=Ÿz±èúÂÙ/ÛÒÔþ÷îœ'’o £®ý8ØX œ\žÞ$ÂpÇòòöŸe·ö*¦9}•àoªÃ×ÄÊò§`ó<ØLÁR;þ€îÀËØ¹¿Ú/-›]™ÝA¦9§;Ùrï"™ ˆ£ä = F>ƒ–_)Î?âE°~²ÚRßåà •ÀU¬Î‚~Òó‘ç…Ñ™g'0•–{ à %aa[z˜” w.+ÓåŠ!}ËóK]16ë·®þp_§ß£¸.’YÎùAp\QBCv˜ {ì]…ƒ ›UöÊ@²NT?°Uâ Š7ÍaàÎxQÞ§qµé p8¶T—…3…ºBrf.zAmi®}aE Ò}Ö¥±\1ÐÍåòÛW)²¥<cÝ0‘À€ ÌÔüÖÎJ2ßqÀj°°ÝH{&ðåÉå‘tRƒîÿ‹âú¹”85ÞG}ÑÁlü½!i0“2™€LÈø$Ìy€d'ÿoð׿á-ßñ`¸2¾K'qs;~¨iJ¯•‡v†¢VG‚Î<«ÆÉÇÂᘩT˜%àM·u‹˜ Ý<¶Ù˜ Hmt¶Œu-4ã3ûvÏúÑå8Z‘G/|Þ¿?–l g{ÇÉz‰ 4±Ú`ýk¥áÖñ£±¬9æ:2 ÔëS˜ˆcúGxÖq˜–»÷9Ý¡ ÄP|Þ´®U¨»¬Õ0XIv¬zº˜zÊ›#t[¼wœÆ²˜á[®wÆAFÑ=/ÉtÀ¢Ãs’síç¼bT˜ä²BÉ_ŒpšiœÄ|å¿5‹E‡‹·|¤8ÿ<¦_/úO‰ù™yuÿh!÷,ÀVðÙûqÜ{‰‹X°mäyž³A~àõì`æ9¦œìs#YlÛòE{ ×:^ˆ ežó3d®#¡‰ƒ³ßç—Pô$Cïg6‡q•x¨ë$l‰û%ï9©óŸXëÕ÷}ÕÚ2K+'F\õ›~ïþ9b1®Š½=­pÊ  &ðCÄÅØŸ8 ´íÜDðÚ‹íWXè.öhÇëÁmô/É7ZH hž¨FÅQÖ$=B>ŽsƒûDººsÃO}­d ·¬¡š£ì5]çœl„†C±ð{r]›}†óeË5¾ÿ7wéU߬ٺzäà$A ã@³4À€ îYžHȯm9ló/óôÚuª´¦zÈ6KY˜ãîfŸÛãQÒ5ï5sóóõc¯cZò·r/„§0ì» vÒTæˆwFt[ÑAK„ŸëânªéZ ­y¹ßž ïÔ·ñÎÔè 01rŽÄѰ+Úбz]l=ã¾ìõ·¥¬¯(טhvÒÐtR À@(€³b±£pŸ|^—>t¦X.÷773RQ΋àÒ¸Ü=ï³¢m¥Œ,(ôqQŸiY"féÆÍ¾Ÿt”U•Lø„ÿ»bÞÌG_ vaÖn{ɪvp1u¸²Œ2|ŠØóÌ›zv¡¦ðpÍhFëázÇOC•¯'¡_#ª¿oA¡Ø¸àO_UÊ¿¹9Í@6÷ ÷ŒâÃ1LÕ€(qQmoÆ|8vÎj7ŒIY¼·GñUú@ÅMð‘æá$¯¦ï¨Æ›IÚØ{JcÄÞˆù|þ¯ì ÝË’:—Æh8dOmåÀ© lû°"‚÷à‘ˆSY' nv Œ.¤_¡1I?àþA>dŽì¥)¡‡oÒ†bŒKb}ÞÝêL‹³“¤Oæ&!mñÀÜ:á°ÂŸ·É9’•®CÄï1ýúÓLÉà Fã˜HSš±·Ö‰`¤×£€­7ðkÖ$¹+"½~ZEâ9aGMØÏçy¯Wïyé  'Á1©6» ¯²a£)ÜRC†oï ˆõ+ñë=ƒÕfg¯uf^1èût8+Ò}†C©D (,+™ëÓÚeŒš=7y³u<§êxŠOO¶â ­¢²ŽÿC›$ 9Ô¤8ß–ö8°<Ï6|/VŽüe6F.1JÍl1u7àÈ{òaæ @Æ6ŽÞÌòüäyÈä;ƒ¢èݬp1àŒ ›)m[„¿ÓÑÐüÓg~^‚„ï‡×lA S&0öÛ#kWNÏ™á0iC¯P8 þ” „Š8¯€Ô ^ªkÌmTÊõ$ÛµÐj6²í!­!Iù¸£æ°U÷ç ¹‚ñO€ ù?-)` F\Êîï¡4¤PßG> M&€†ß~«—Í© ,/Õ8µ!B]–Ñ·¾}ƒ’¦{ ‡bšªvrWhè«nBÄ+ò{‡$Úš¡L²r§äê3›j†ÓPk—KR0±bkÊGÏ…üé@øãäµ@–¡.ßcBPÅÀ$e´ÝÝ=©@ ""–#û: m®J(WImæHîAÒ }´ö¨CmÕxÈ5`x⚬s¦~¸¿Ø’H!©uªUá5{1ž= å¥".òÜÂžÊ ¤™Réž}ƒõbÔÃYÈ¥à=îä ¼ rΧcp$c½¶óC ר» 'Õ€Jú‚«ÒyÄ'%×çPú@p‹þÔb®Sð-hcÞü%5È’o ¥ó°¿®\ |ݵ¶Lí+Éûb'³¯âûÀî„TGØÕÖ½FWB\ߛɠiGjMB*úÒ to‚r–Ò„œÅö§á‰+>¥¡‹ ªJ’`þÍÝïe]A‹…w¨h7ükÖø´Ë¯«Äö@%ãßð&šV«âå–4¨4+*º2Ólý”õŒSµDÝ^Y^:ÓÝÄ,}t•#xÙKÛ Þ;Ë7xìWŒñîS³ÉeI¹@ÊŸ¢ð´ç0:'f>î’Fèmëâ§XcâãÞÈL£; ýø4×uEÜ„:®ì+°é7(óúÙãx·Í5£Ã+Яjœ¡~à=R¸ˆZ‚³ÂLÅÎ}›….”HYÖœ³p*G©áU¢ˆ#š¥¶Ú]»¼„×Qòc ³¡+*—à®L÷Bݦ¢Jÿ;ÍÈõôÉÍÅe{뿦ZÄç§:΀Göm/%­ÚëW𬑠¬~%#PàÅs¹üJ‚ïoň¸l õ;ÿÃÁ4AŠì§ˆª©‡e¥£Ýq[O¼Z¦¶ ÍzJ\T3•à/H_Çèb\Wá²îzí5ˆê S¼\w PÌ”[ÔÃÅ)›Öpæ¨å ‚£’ˆFÙ‡xݘcÝW: aUk(ñѵ°¤0n‘$¯¾î¶F¶ÑÆÃô¿#K¥À<ÿ´¤¢Æ—6Ì›ò!‰Ð0J›S—š|eÛGé¡å){œÃ ®ì»a·r©s#ÛqjKȨµ€ËåømöE8ÍèÈÊ¢ÕÉo¹øž vuÍþ~pïdMüëï}ê¯R”†Œ*eFz‘“M@TqÖ×jæ7¶ê‡CÄJráíF`C°ïFÕ®NúðǨúSÍÔ¤!0 霎À¶Å9tKÖSíAZca uªZ-RFÊ⓬ÿ¯Oš·õço¸ŽÑsòí¿X©‹qé›@ùøR'eÚ£zZæÜ/gÈã÷Ì“=ô—fG8ëܽ¸4«Kn{$DŽKªÎíŽG”ÀU–­W¯DUa˜±S—˜êË(¸.…$,Ñ_ü [Iµ%È„äᾓÙâW¬à^I`q¿;X¥Â[/OôÅÂ÷Í›WqG2à/´Ã:´vÝÐè×^ 9@Qè<€Ý ˜~ù÷à,9k'TÿGqºrã£#øšiy «Üãr’à÷;j÷t)yÑ’¼ÀmYi™¡¤mAŸq90o4H=,13E³ÐÔÚi‚ÉŸú΂?O$µþ7Ó¾¦‹÷õZ‘#©MwýYß?Ñ ëYñ8På]lG£éã|œë¥›v–¯Ó32:|ˆ9®}2ýá–žá÷g.Ó\1½î_·ã= …6›šÚW­Oµö“¸ÛX}²KI%ž8ÒĸŠO` ÍF ÷Çi;ÃcÄ'OÓÊC~Ä õyÉ]Û ä TÅÀ‹†)5¶ˆK\­OAä–/ašüû«È°©<çöÛü–ŠŽìõ–ñ‚*tQÙOWiéC`pÖ0á)¾>a¿'6ŸFjÁ!“e„™Õiºù7’ðºZ­°”茀Q1laˆ<¼—O—O'ðÂfq3Ÿl,g©¶wÏCˆøa(fuz‰Yًܯ÷q Œ>ÀÁ@'YW.³/Úb{u9X‰a»•i!u~©=­Ë.ˆvjþ¤Ä€Öý£ÚªÀÒ:öaé[ ˆš>•áúG;þú²ø®nGyzýrùýÕö¨ÖoýÉ·öVD‚+P.îf„Ò2½Œñ~ KÒ ¶Ç8/›ˆ7À¨RÒÛoŸíF ”À:Œš³âõ˜Ç;±Ý…üyMY•t$Õ}`FD›oÀû¬ À. ô^l+{û°ìÅ¿I<ú‹•³nˆR0Üïåp3#ápo™ !æàµ„تËeÜI…¨¯ÓÉxãa·'¡C(ËÀ°Qð »”(T†HH·¶å«¾`~û„‡‹àÓ\§[>l}&÷|ù:uÔ éq’8†L»±ä­˜Ñd©nM ímg6ï÷èóè>œ€F uyÉz<»¯B6£qìê-w0ØàUlEp/Òfžºg̰»¯¥¼PÅYúÙû»iÎ=®[CUϹQþÛ¶gÅÓuf<<ŠÿÜ$›@4ȧeÕø¯¥ƒóÔ â:„†%Ê…™Æ)ð¦À°CO£x;νG½ØéàK5ñ^fmg)·‚aÿd&Ñ·E¼ã#²xÌ_ê§Ý–áe?dð‚¿mÈ-ýUœêÚ@?6å* _(ÙB±¤ƒ+ŽjØ pZ>ñA³Ž3ƒ-Ò+é„}äíz:&Y~s6bCØpM)¤ï çeFÀûÕø%ýë`ã®7! ‡ŠMA^Ù]{ÅXÐr €íÅû–þÕãöþX|*[W³7–÷¸¿4Ôý·záÊÐkº°ýßHl¢‡?@¿ñ\YZƒˆ…—aWŽE¦5ë[¥[^6ÚA·ë !‹`@ñ%²7|½a5Q°äo‚Љˆ`–AZÜoÿWÝó~QûöÅt»ì*¯­CÆèâ ,à½cŸXtÙkе´-ï’à=¹OmÒ`ŸÅüÖ’¹ªÓa¡'Ó³÷òSaJdƒ&©”yÀ*òã£÷H»bÆùyh’¿Uè2å¼Â_ÀÈ K]×\Ö˜õϘ³°J#4qÉæS(E½|rÔ´Þ:沌Är•dš¿Pá‚ñÍ+vXˆ½œ<îìJ‡¬¢âì}Ý8ÒQm·XÚmä¢?ÜNƒ¯âcÆTO«Ð¾‰†¡Ó"'2ÀÜ5y™qfû®…>Poî§s×QïyîÍð´jAl¥‘»Á¿LÕ×äó]/à•$dy¼Üa¯íä\Ž×hïÞ)ïùëµ¾íäû¬Ô0%z§Só$ÄBŠ8bèþŸ<÷ªîýÕ<è¯]3„ª€øÓ¦eö¹L#¿J±]Tþ lÄæ¨ãwþkA@D‡UC~ñçªc5•}Ê£kG¢*rq;|˜ù Z︸ý,ù)õ$úÌHsµäÕýöF"p›¯ð¤H)-*¥{zªuæ{‡ŠBÂ’îñdª‡Àä ƒ¡Cº´/ÕQáUãÁ`ŠŠ4àñLõt uIh- :S4”]Pœê‹iÝ»Ì Ðü­:Ìg3’wÄ#Ôùµª ðñr/´Z<o1ßô¼ž*ÚŸ ,½ÊÖ5«Ò Z Ñ^?hŒx¦O¦8%Wü)0WUu{7%bQ (Œº†ì¸ŒÊ–»FL´Ε¬ùÕ?F6ÂÍ,¿ÇSâ»i–ýîlË&`ïºiO£Yv"«}aîÔŒ¨¤;4B†?±~·§Ü Ï.…¦0$´cõz¶4¬0s^;@£_„ 硨Õv¿*³¶ZJJ-ä›ÉYø–ºGËù±é ä•\4žsì(íëë²äT,Dâ4¿Ô3Œð׿T°>'»Ðö-’”<ÙùCã[ä-ÍcÃ,œ¼=ÙÁcæÍ.ŸÂê3] ½.³4¾“în_ð—ö¡yNUq6¥w(£©íæIdãŠ8‰_){Œýžôðl«à‰{¢mç“>®Ô¯éè]2µt_h4"~Ó’Í#u°4¤7ƒüvh/øºú…Љk´Ù<³gpη…a¨ŽaÀ@ñe&ï\ßBÙkè ¬Ôû£RÊJQ?§×Wödf kæè} ÿìÃ;|Ÿbõr«]v²às¬ˆÈq`%µ;ºŒ#;cöä’£GÛˆ³›G¿‹E»Í³C—‰C*'dWPá¼j°³…Ê*ïÌIäj¤’‘Ã’#›~>Ý:Ç’sðc»-^MÙW’•æbs¯þ—:ìR× ë¢ ŠâBŸÊ».Óc‚¼m KþŽm—E/Ñßj­®)Fß„vb3à‹±"%KK­3qp˜ŒÅþ·]™ÊÑW@HwF£ 13ˆíÑ…¶¿X ×вUâî› ‹2ñuìòèoâê>í¨6­…ˆ¥ÄA­Žƒ1¿®çXýÈBÏg±#úbæQI{f›-{=ÞzH´¬XQNE΋¯­ióJšÌ*¯fùÒšC*â ó$€à¡ÀS†=锎šÿ”Ѐ€ Uç7Œ~ÓI£é^±öë[õï)#˸ë¦ññÏ~[–måºf鯹;*é§g1À#^Æ«Y¶³v2+ 2“m|/cÍ£_¯¥¯åC£7³Å¡„Ñì“.û›jö)¦ÌWy<iõþí“U³{ÈÞõµ#¼þ¢³‚[B…¡Ë³öN²fmœóM¨V{ãV¶ôzÁÉ™$¸÷46÷ ô0§P?~‡3ÒiÑ|ªç¿9^̰ço]”™ÜÍMï)½´Ë>fÅþš%G1x”÷H=ähÈç:zbÍàµÀÎt_uÖ»,?[m#éÿΗ*ì}ÚCÅÓa¥tÎ3t-¢ÒoˆV_ä¶L¿Ã‘!‡tr0MÅ„Œù“Ý©}ôXg£áB”µ³^ú4FOÞÕ‰¶Ü!]ßÒC˶—Q õÓwÐsx&V â¹?BÜKmf¢ÞFĽ†ªlp:‘Ê–ëzžË…(ºÍi08ÏQ®§Æú%ÇË6ݾZÞÐW;lNÀxÀ"þãYÖ­TºMb~¯ÓÊ`¹SgLõ´Ý|KB oœ—œ=–W7úmZ?w‘H‡ò):Ö\/f‚qƒíãÉÆ²6fÞÒÒõ\oé—{g‚U{Ýoå·°>6y¿¾#7¹o³Þ.Ôðçø"猇:²0†dÆUÓJªÿŠ,àä0Í>% lðCI´²IŠµ×Žò1Â=ˆÜ½a)jár†:d9‰íöwS=cwKØÌW´8ÃÙ"ï8lm{’µ¥r³^+=ë„ Ä©Fs¯aµ-âšD (-üðlxÞFºEæµûqa~øbL¶ ú¥h1Ú‹éïäR²Û$’1œ?±3²H î!¡Â@£àÌÃÝÔÐòV¼Ï‰éøU ×WuÓ²Ë&P(€Š0nÖ‡¨Bž5Aq Rù£ÞBwt‘™…¥ øí9IÈèœ(íõ$6/ÉETÝ0¶ü»ç´Î{BþÈAv²¯X…ü96çË~%KtèÆŠ¸íâìÏuкî }|âOµ5#ÐÆ†—ünÉqI¬Ó´é‡þcëó›ÿ…XïÅ]ÓUÈg‹EIIr#°Î­tœ·«¡ëCÉþ˜êi9°mYY©š§ÏÞnU ³kÀöNÆ2«å¯l»èøøÁÀ–K+M§¦‰Ù˜ÓÐ¥îîRÛØÜß2Ú´%ò 1v”º¾‹æ ÅpÕ Qø‰2Êô!roI××5.2¶œm¦6g}áȲ€ ‘Ûº,Þ3ñ=YõA¾Ò‹á‡ÅΦÙç.³Í Aqu»A''¯b†'’þŸ)£¯ÇÀŒl±¡jAl{í‘n-íã)vRQ-EùœýÂ?­ðrÈ—å‹VkÙåÎUÚ)Å*H­€[G•ƒÀ¶‹¦Ôb«Ê@ûglß‘ÇìK{)•(ûòV,–ðÄ,‹FÂtnT²bÜÖ›ÍT>+×þ<*Ìȧn›5`v2vÓÅ™XD÷WÊÇsæW„*„è±ÿ$¼/’ikLú7 £ü§uZ¾FºI¸UÊÍlDZ`ìMjÃ^ž+?5#yƒë[BøÂpË­1ü%ûœmˆ½´2Q‰î㎂Ìâ=;.~Dq âýêœå³QS’*W ¬lèS­ç–a“bÒË ¡CýÂ5?>:‹À§c—ÞeNXvV߸²a Ð¢æ] åðIpä­>¸{!Íõ›Úu¶bMVºU§–PU~5yŽ¡÷Ú6“§‘²½56Za᯴͂›±Yîw€ÛIk"K'º"I)ßëR3QîhÐJëb­¹þÚ” Œ†Ù^hwzmbÇÛ#;+$Éî4†Köš[BuÔ±È(æØ¢zIé‰fÆ¡¿Úk†º·+ŸÂPflp˜¡a›Ì"î8e4­óæøô \†•|w‡°vÚ¥0È_CöY]­»gÓìb^8õ¿§ý7pâô•›ËùaLË‚jÜMӃͷ.§œ¾–?@nȱbËîU"NÿB:µ좤˜o„:Ô<#Ü·kå´ÙA  & ÓU«ö²'OvTˆÈÛ‹•Z®‘äUVÁn«PÌi”«4Ï2iâEÌâ¯Xx8wŠGozM‰Ë ~^Þ™¨%¡Ë &ìaÙž?;¢áì°ð¥sCp¶‹.µ&‚B‰E; W7Ú†Ÿ S!÷2.s†f\ú+TÎÿ÷„ÐißÇêLv®¹ôùÌ ”T}SÒ±¶îª>„%½öôý.j“\ãØ¶Ì†þyòÀ³+½ìÓ»%l3×ùÈEËEÖîŒneÏbÏüƒ}; <“¦sž!%޵gb©O&ßÁ^ûÐÒ.Ï!ï_ñóɑطÛë+Ýp(¿p§5-¾ÜͯærŒC!‹!ÆÍÈ^ç*%®Zù›¦‰ÝêN 3$ÆÛ·ßilx—…Á¯ŸqF*šMGu \§“‡£êµ¸gw²“ßµgB†!]ñï×nÁ¬MÀ¤âY‘‡þ—~÷%s'Äï]lW•®aíláÎvV7”›­šÖ¥ŒØ’†Ø"æ^×Kñ¬kG-Ô/š'*ÄMÃ?=ƒ5„žrÚ¹ÙOyìuÞ†Üt æ·”ëz–ÒQ;©þ?æUt•åGSháZô BpÒ•ÑラºÎÀq°LCB2†k#œ‚§ è”A!á‰-_r´­ˆÂõ8Ú’h±›ãàc¶‰°ÕœñW—þê= úš´jθåL=#ì¡;E õ'µ·ˆx6àþ¦1–:­U„¸Wþ·¡9š±­$€Ù[ N ‰ÝÆâ˜çJó$Öú*8}èžÙ}½Éë#·r.çø£iá®QÝRåLL¹YNš=¢|p©ò±¬O½¸j E§±N7¬r4yìaLNБ‘n X¾xüø³ð’ݲÓa“kyx/½q=¿ZKíp¶Ð÷nËì9YÃØ5`ImhTNãU ,“»‡ƒ¶âö&*(›ë+]KIßJ°â}ŶÍ:’l'7†Ñý)sq·6—·×ûý}4SX>œÏr2¾ ª& ¦ˆ2M¶‹Ðªë:ßø»’)„€mœ¨(zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.728787113 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe3.dat.0000644016037001603700000007736213607166133035025 0ustar00hutter2hutter200000000000000BZh91AY&SYó£s"¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàI|gU@Vå)ÜÕ3—¹ï£xà6ï¾®È%   —Ö!EÚ·D¶|û{Ýݶž±{Nò¬»·³»ï{¦o¡Õ¢}èsßkž6¶Ì›1Dµ’IÞ¢eõËãà½$ñµ±µ£6-¥Û®s¾{׬÷¸{YëÞØ¶íÔª½½Û`‹ZÁ¶Á%M¶ÉhÕZņÈÌÚÙ¦Ó)e´km‚ÓM5Ë»ºïaªA`ÔÈÀC&™0 2ž£FDÂf@&Ñ‘3@0ɉ„ÓÈ4Ôô2SðL™©“À#M6‚OÑ13ʨ5)¡Í&C&53C@M24dÓ@Ó ¦ “ÀLLAˆÄõ 4› “ §´4Ä&LO 2&™£C#&I²PjQ¢ý&Ð56˜ša4GzLSÊx†ƒA¦™2b14ž4ÐOMÔÍF)é¡£I馦Ôõ0i¤Úi=4„4SòjfÔö Gª ÔRTõ?ÿU$õM´TÚ›M5ƒõ=M'¨Þ‘©íSÒ?TòÕ CM4h dÐdÐhÐ  h2@= Ð)&š2SM1i´˜¥?*~JlSôòb2y1“hÒ™š51<'‘”ýM'µ6DlI?HmF)´ièÔÄz@zi©´žPdÄÊy2zF˜4ÂRQ&ôÈÄO)?FL˜SÓh¨ò MOI¼¦›Újj~„Ó“ô§êzjm#ÓHõ11'å'“DöF¤öPÐdi“jz“ÈÉêhjx™M4Äe4ð“j6¦Ôòž€Ô÷ @áÐA0ãpdƒ*ÀÊºÝ …‡Å7.†h¥ëÎ&•.Ñ+¾1‡:4ЧdÁÛÜüóø?àû,qÿŽPÎ;#&Ñã¹6¯¸t¬éϽSÈgæöçÏcÏšÒáÕ‹ã±ÄÖ8þŽ„Å4gÀ]>øõZc‹cÒöGéwG†ñέΞ3“6í;oé2›æÈ4ýGsD!Æ‹vñ\=˜ã[pf†7pûåöâ ‡V Øhhe‡òàÄh4=<ñhÔnóˆÝV §áüœÏC(8¸bƒ7P%:Ž*Ù|Ip‘$ñC8}«.¹ù øøJœ ¨ÖrÆeøæÖpÉÊr8þAâéòø'pÅ„˜鄿¡/ ,â†)Ðo®9ÿ@ŒÜ*ÆàÄû…ÚÕ>ÃINŽn´<1Æÿƒu i¦ÅV(†ªœÚõ‡pÓl×8H{Æ$€¬OÑûž?àŸ9ÄWùããÚ£•(>c†l#ö“Î7ô"Ëð"ìÁå±C’éFžÈhL\hwÓM×:ˆaÆhÞøm˜ ”â»zSÂõ¨¸Á7¢ŸÎwãÞœ-P„ú¨Õ eñœ‚:¬ÒðHjÃÚx¦Aø‚˸ )&üH´…#ä ´b¶<$ŽŽÔ3± z€÷톶Èxñ‚ä¨ÑÍL#ñÝ ãȨ>¦„\ ;ø0ÂÓZ"¶Bí^¬Œ‘ËsÿˆàèCà~ÊAiAžÊ(!ÄÚxm\ÎcÝn0Ö†- ÿE©Ð\ØÛvBABòhz t@Ù…ô±¨æ káÀ‹›«¶úñÜö„Ìä’‡RfIl8µY»ÁÄw5#“3cD#H,Ø,(‚}ðäÖˆp×µ„CáEÄÑà·˜d¢ aQ-AÛQÁjGâf$JÅ ¢øó§…FÁô9ï"ÀQA‰Ép¡â ñaCx™ƒà»?ºÑëÞˆñ´Åm£iæeàûV.ua Œ?˜ðé|¬‚³cϫݴ\kDúøg_àòØíÛÐd_ëIÔx@ê¤B<·š’(”Oˆ ‘ƒçf~9áv}æwlxà)å6ƒtåmi–ôv—Œ°“ÀÇSÔR)A²7dLã FôµÅ€ÿFî] »¼Bø{9¹Æ±(ò !aRJD„YKBþpÕ³ÖtæÅåÌ8¶Å¸\ZÍxWYuÌÙ-öËîãz›Ñÿ~Wú]v¸'V6¥îë$$oèÛɇÁc¡æ»Ö˜jVF'¾•(üDîuÆ—ŽX1Ñ~u$Q¢(£qp hï² ®¡RÀÞ«¸°Q…m€’–éãÛ9*’Ï*Fþ\eË~öÚêáñ¸û{|JEkî×î ü‘—ª’a×1ÞÄ)3àMrNYÈ8i³=¼¸hë~ö¿ÊÉRó+Èú2ôö·ØTÕnü˜,Š>ßOõ7“œó9ø•ɤä9[AÒ=EeÎKRüi#ýæå3û<¨K¸ŒšÉ© é K¿ýw‰?kî­˜÷ßzì=9pôSÿŸ¯ïݕ䰺®¦½ùãbÓËýtrpï)'²ä¥´®è¾ØsKuMu—Q‡úüæQË{=’ÒÛO}”×Ãå5Q›7)è‹øBw\›Û¸¦Uÿ‚º‚R!›_}yŸgÊÆ¦ªºïål¨ŠŠŠŠˆˆˆˆˆˆ¨ŠŠŠ‹õù[eþ-¿—˜¿»ì†+ïÆgï ûC÷·Ì;£“‰™Ÿ›’Õ—¤wGC8ïëK†N†yZ:Z:$•²ç$ó\Dй(н\õ_‚åpý…¶¢a”˜u˜Yî/nØ›·˜A­±YKJZÔUîØTXÛȬko×-‹ù‹ùul‹¢™Ð-KÉýGp –L8بsÓ, C¦60¹h¥»£^Y9uŒCR­MÙœkŒÆclZµvúç!,Ù°{÷®zæ½6Ñ®y9ïÝã¥`·Æ½ h_‹u³®yïªó¿^¢A[~{.Máª'–Ýû'b¾šïI™î÷°n¯>Y‹Å³ÏP³|ÕêØâmáœÙ¦õÞ·ÂŒ6×ôÙýøZ~•œáP”Y44|Ã;EŸ‡«ê€«n¨õhlõízvú­ Ë:[êHk«#áW·‚f²êÇ£Üd/$<žÇG]Y«?OˬµPº¡–dóàJlàZ­?u¨p‰&­õôÐ2]ÓúÜÚÈŽ½Þï ;ï?ó·do\Ҙݎü¤c‡Ò+;3!©M ¢³¸€ÓïUñýt­FU—²c˜?˜9‹ø10‹oñF=Ëô G²çXÞêœ_cbÞ¿;<æ¤6”>Jl=ôÛíØMõò/ð ¿µú nªeÚç©@'å4^F¬6tÉÆR€öihÑ/M%·å“ í ±búí.Ü‘o”çùö>¶Ÿež\†"4Ìê&Êà¶IcnáÜs\é=á:ÁÀpuG`%pKHéÐp*‰ñ â8s„qÍ ý÷Ρc‹9¶_9c\ÇcâòØØúlÙ8xgŠvã•Sà§èN(©[„twôQFà ÷aú©ˆÇøH‹*¬Š öû$}Ñ_2Š™v*2Â/ïLSå|WB¦Ê®£*‚‚t¯A_rŠ«£˜òÍÒü)ì¨.fJ8rº «b­é/nþ–Ç ºùÞ•ipTéTÅZœ¬+úÔ¬?ÍñWÅX”QWxX…dÛe廸´9gggiiiqqŸ¡…‰u…‡…†VnFi_¢´321ÊËÌýfgç~´4´tJ$¢I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I'‹qÍ;Fãn8Í“J¾’$‹ØŽ×JUDá^õ)î&¢ wìÜàáÑzÝeÆòXÅO}wv] ‚`q…-vZâÞÆûÒØ.£­sk[[[[[[[[[²I$’I$’I$’I$’I$“»q›µñrdÉ“&L™2d’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I¨cÇÐ2Ø`µŒQWtðhˆ òI´¦ÇÂì~Ié¿Ûünë˜â¯Ç|ãëáó†ÃÅ#ƒ œS; 'P9Áï<Îò¾ô#¥`õ. „×ÉI4Õ=åB k¸Ü§«Öh“"ü‘ ë½Òå;½Û±Ä÷–ȧ'=Ž·§Õø5ÊU]‚ö˜Ý'eV{-Îíü?+xÎ겞›eæ*y‰‰/4n[go*ûŒ[!•Ë»äIqrîüíµ‹úX³ò®\5êÚxóÍ 4P©¶Xü˜: ™h$Dl^-¤lú —žQX:ö¿+›'Ÿ¯¼¤½êÃ|ÕÒ Íö8Çš~Xö=þ¯«­½®Vþ¢,Ò”mpîåéQúhøŠ-^~_JäåÓH¦î‚¦Or{gÃßx2ó\N£&ÿmb­—ɤŠïáŸyñ9•k6m7…x ªÙsܲ\ÕK!Ÿ:ñö4º'.|"Œ×g{ë—€v÷ŠQ£÷{ËÂeVmzXS‘z«s=”}ò#  ³€"~^š†Ò<\¬«ìR«( ˆ€¯qª© 4A•Š|M=ª£oA5¤N¦"øxÿ/7íþ>ÿ-r‡)Jì[ &6*žEPU @q‘U®(²Ѝå¬Ð„¾QëÔûH”ÅH”"‚ÄWÆrÈ,ˆ¡iÆÐÊC `¼–¬”™uK•"Ù¿n\Êçw‡ÊðÞ"ÛÝŽ¡úŸÉïuë\Qˆˆ_©ÅHĪDˆvbËøVR€(”%fB\Ž) "ÚDÌDD¯ˆ-DÕ#A‚WHr-B HØÉ¦ü¥MBÖ¤¶¢ÑH!SŒQ*ÚŠ9ÖØ '¡~¥¤¸L­H¨—)X¥N€àCuŠ¡÷¢‰eH-ôDELU@oáˆ<©}/#r² Ù$"ú”ÞTË)Z\-ª‰¸K‚õ()¸i°£"E0ïËy©D@ 1F [Ú7ÉeC× ñƒÛ eÉ\pÀ4Œ(EKÂ"¢r" ª"‚ A Šp¤0HÁŠÿÐÄr„»"¹3P^Et$[uN!D‚*†l˜È¨‚h *ªï°"ò½B=•@\•#÷Pžß¹¾¶ g*kòV $vùÎÚ^ðQ€ •AéHš¸)BŠx¡öÇ’°=°úÎ-¥H€)œÓ@ƒD$œÎ¯i $Ï¥"6tG]D!ï)!>¤ÅÒúI4ª’AÙ@ª ¡¥‚‰µ*€CÐ(˜õzåF¡Rܤ4?F§hˆBD?ÙÁX‘à¤B*G!I'!C,°‹Š¨ 70AGæú‘#³‚žd;ˆpK‰¼FÞ!†Q‚¦`ªª€¢'0ôGRøcõGðˆ5‡FDUÇ7…š"äGéPQvQÍñÍs7g£Q:»•Õ^‰Tóÿ5MÄìh/óÐX!jQ#’g3:|†é ^‘$“ïû?c.<íi|T )ò:V• >d>þ¶‚§±ê¼m^±“©rF¤_™°y„CŒû%Qm ºeGvʪ5* ;ÐDU3ñm=-½´(¢ƒ£"¢v°_åsÇš…0ÄUMP9H"›ž>ˆ®ìKèI·ã»Ëy_¤³ƒbþJ'½Ðùv»:<|=ˆ$ & ¤i”ëñ†hQ5D¿9ʬíEú¨"¯½çµ#ý&fÅÄ \@AD1Ì@u8E)±õJ •Ò""dq´* !"³ @ŒFß¿¯¥ ¢¥¢%5<™Ö'R‚ K~ŠE!iJ‘h+œa<ÂDj´Šꢢw?-¸2¡, Th¨D)d_ZXÔ”…”NØ¢ Qô"Sô£¬Ïê ;‰¬å KQ•A)HÉðçH‚ ?$±O("“I[ˆjhÓ/$( ˆŠH¤zf‰B²øi@þîTA,ø‘·ˆwÚB€>rÆ‹²A‘Š™L-4íW&çÉ»Óâ0%Þj‡{‚²iù*,Àö"É 7µ «ÏšÛÏÝR”ÖÐþ1Éòª}‹ð¡¾ÀÇÄWû~Aïl7e”}ÖùWYkiï†Ô³ž'@Àâz‘ÄBF‡ªÉðñÑR!B9Ìǘ„$‹ÀHèn­rX¯–@À|éL¥ÙO“~†æä¹`[-]¢b¢—S8ZÈnÄAJÅ"œJSˆŽþžg>;¯Üˆœ >¬9è H’)Hù 5ERER@î R B)T†™lõåŠÇnN« ³-º¿,ùö¸lç­­3ñ7éo (þÞ:ºE÷ šÙ×7V07–ÎÛeETn³¶'L®>ÏÃñéÑóNÎèæêsôó|½Ÿ¬LñÄ&¯´Géø›Æ=Ǽ9RW-MzóF¥’âÄÐql$ÀÀ^Kèˆ&ÅBD_¥H‘ú‰,DáÒ œŸŠk`¦v(¢m¿ÑÄÜ‘Bö+·è(.$—„ PFø"vð1'à¡ÙóTö#ÅÇE|H½¿k‰¼¯èž-wc`ÚÃO Lu~­4ÄŬ¹ø—§iŒt$hÃ@© A„Ë™ìy.«T•0‰¡dÃa¯KÖª`^¦Fývv –Ù²^ÉN~”L¾Ðú6Â@ã冓MQרÀßþ†¼ò·ÿ6ë&inèTÈÁpޝé¬=¥àsØ‹ã§;ÏSmÓoÅÊ—…߇5ùú7gAG.e¥e 4Kƒ…m]œÿ#Wt‹ÖjO©„{”Ó&R÷A¨È-Õpžlö´»­Ô—Á…ñ[ë­úzG¿– AÖmlÇ!V"õ•k.B4ß´-f¾ŠaÂ…  æ.|üXp‚¶"$ó ¦±ÁØäìz¬$Ù²:¾$Ýó3›Óœq†¡·Ç|ÏÃY›ƒÒ‰LwQÇXQ,ÿJÈ¢sƒ¿z476ã9’r$Eæ@:”]tðt IªE ‚W2¼.O½›ú¹_C‘%˜œé²ó …ËË.B Ý0RÇZ˜[6x)šn|ùÙ»\TßZZ¾‹I B¬ -9ùàƒ'¼-¯â¿û¾™úÝ–ãÝó;=Þã7/v±Rˆ&õ‰ÏÔX©DƒËTö,ûÚc™è7¡jKùP(±bY ŒV¡¢'ï‡ËA,O’ïJR… ß»÷±ÙwÅÇâ¸<tÇ1@=äæm¦Ê&ñz¬ÅÁ£Ô‰HHuÑ¡’LaAÕ‘;I°ˆaèxµ8ŠC¤ü…B*Í_¤~µ<CÝѳ©z”Áýì³0nøW™•ËÝ2_¤™™<Éða{xç¢opÏÎ< :(§YÏM`‰²Ë!‚hŽ¹Ø®™K¶œà| ¾òŒQxP*òÑÇ‘cJþ¾b×uó]3¼9;‘3™Ë«Õæ¼B2,Þqp7„ˆd¼\<Ä™¬ í/VâåËÛ¤º¡ríåÛ·W~…óƦȂæ2îÄ»Z ¼7omÆù „#5v?¶ñ-€ ®væA±fƒ?ÔÁÅ]&äãó}e\Jƽþ8ÛfÊ¥™Æäù \›°àuRãÙ˜U°µ,†°„$õIð'QÕ—â ãG…Ö6q"zœÍ¡aéKe©³h³OÄãyÓl2ß‹O)ÒE™gÂ&_w5|kÆÉ¤B>²L’r÷Ý–ç]Übì-¸$dd}©MÈÛ}:hú‡-~qͼ¡t×oŽþPñ¾±®šgà[›Rþ±Ó‡¢°MCìšBÚÚÙýå¤Ê¶c±Tˆ²À†Ðþ¾(ӟщ`€–‹çB¹‚²†©¿‰a0#Å%øþNUÊÆö¿g¹Ø³Ý'ï‹÷«—Íç9¾²ó*œ ͱ:ôîaø® Á°’ä{aê‡L4 hîˇ@:”J“84à 1À§K´D°F9¦8?i¤uQ×|buÉ5žœdƒwÞ(pî™~wºâ&koði¥Ó¸¼oçæ¦ïνŽòÁw[kEËÛ·n罃À͆ !žojDÜÒcZ…Èt|âÛü?\Üö8¸î£åì:O «|ë;“ü}~ 8nŸ]à织ëÓx>£¯äð¯1÷.b“,Ò¸Ú›ýíâf×OˆÓ¼B;B.²^²_Ži)šðG¸þ3M‡W¤ÿ|÷n9’ó ûã’n¥ÿ®U6Öap5õ“ÁÁg,#h`iРÍ9«ß„ËAŒÌ²][·ö³°ÆH„tÞ›ns„Ž„K“"”À8od;o@n ~ˆ–VqML#2œ oÜ@>r:EÙùž+ÂÏoWMlCøj(¸èзŠûQ/bkb2J%¤GYì4°æŠ~Õ9ºci ~ß´´ÙÔå©0²Ùœ# ;Ñˌ̈EýI§áö"“ëºh«±«æáÜý1Mü_:À7K´½ÈÛ±y&;3]˜WZ…u}z¹ êä ”ÚŽoz@Dð8qQv°E4h œŽGUòp³Ù<\„É=­Z‘¬oÓƒ{'rá@x,ýŽIþÚ¢0½MMü¿Ò<^EãXp6$0XÑpEš˜.æDåàOT"ßw]õ˜¾.u@Ê¿•Ôyµ”­ÂYȶðvt†¶Bï€#ƒR*nƒ«€!`Ïà±^ìŒèî!—þä‡ ™iìõ“XE/(rHñ@®§ÞöViP|Züí±£}êýËþï¶ ïzùÓ ö<¡ØÖî¶Nä+À*DwoH<"`âS£§.Ï’p …:ПˆÀ¦¤'¡¾Êx?ÖSðѵ—’ûAkò>ÚdÁ„çÀÜä[+â„‹„€|´T>+’0"™g S÷·Œ¬„­ˆDÞ0šÿÓó¡.d¸FðLé»]°›4Š€ˆšChJ)Œ€ƒ³¡"m7Çnxž8Ãý›VÝÈóx2ßmÉôüïEKþÚN€©ýù{ú´a¯™ï~÷kòCCü³êï¥[÷ê¹8UôÃi† ’}§•I$bŸ(ôC ´v×HÛÖøk€É´R²«zm.Hpp0aÂÂÛÞ`{p~çs•éó†úYL¹(¦7Óåó>¥Œ1Ûn~/õ:ð¢¿7Z"ýg>Yó7Â[V2-æGÑ‚¾T)âŒàººv© H,'„ñgú —xŒ>6Õð'Ì<œE–ý™ìd ˆ;««R-F‚÷£C‰r:Rq`QXz̯u¼møîiä2XV°µvß$•H_»`„p”t³±tÅ1²éÕ‚þ,¯A”8’'Äl¤óþYh°)eî•@Áu?U9D­+Û8†Œ¨ È žwËv>÷uŽ÷ÂÝ”ñ2ø$“Á¼–ñX…pDƒ‡ ™Q!­ ÒЊŽÊ "äñŸŸdðzÍ ¨&Ûcïñ'“Çí}à2sÛ\‹€!Ì~]ŽôÓ¤<&7}FèçA™º8øâO²D‰)æ,ÌV°mtY…{ŸP¿zÚòZ€1 wšÛmqê‘IP`%Å%Ëßp.|EBéû¾mÍߪl•P ;öT΀ Ùà]=ñŠÑôïå3l`%g–£.ppD]Š–Ž],A3ÏëóO÷Úºè…`Ç F³%Õ°óúg§¯úœyAš9/4Ò”KË$Îø>j`ZB>¿ð½N¯˜ï³üêòG7Áz®B0`Á‚B~TKÙÕZÁ¤Úë°I/·Qgï’¤7(êóBÏqæf†dhõ®€®&úÚ°y¸¼žXx olfF`³5 ‘˜¤©U$…æÿQP„Q×Ö3Uù¼½çíÿz»í[Yü»Þ/Ýh<+Ì¿¦²Äˆž5ÆuÛ¢Õgè¦_†>Õÿ6¼Gˆ-R:ê])‚æb@œ€° aò}ÞÇ5kéãZüÁ ÝÜZùi Béžšë£ùÙ+¤þß$ÓdQÛvF“¥wd^@{Â4¥Ú‚FðCæÚÚòˆ@dG~~{6ž•«•ü>ë#è5?s?OÅ–ÁÛ9MAâÖ‡×u‘ZúÎQ ¹¿Ëáë]YoîÕ®0†öÑƒ× …'á ©Dwƒ†éù4ÁÞ&Ù@Ê¢%(  @’x€Á@Ÿ0üY`/Œ G“>ÿ½˜Ò»­´Òmt)…þ–ÁÕ† Î7F>t™±W1‘ÞàÓÒ<å7ÓÇûö¼–[‹õò kJ!á`ȼ@dË—TjŒ’øÁsä!OОcî$wÔ\›ÅÁ…âÌu®¦é!1Õü¯A'%@}k[¼X±ñ0?ñØ\õw zl`ü߀.z@0êŒ_Ñ¥–,½­"¶Dö?K=¶…Vظ§{4¤š4ƒ½äâò}?¬ÊÇ(¨!C)ÁxeÀŽ(Ä.A ¥Ë\ X„þ1¾t£Ú;ÜgIJ!(;ÂÊœCÕ_Zm½ï*¡êL>Úw´D¤ŒO^òn5UñÙ,æ¡´a‚ä&¤„,¶Q ­”AоÌw‹¹È tº–Ô°Hç`Ià ··Ôñã½dæÁà…óS×\?{¢Õ»ÞèhP7‡™•-i=Ý–˜mx)Ø.aŒk(™#i´=§¬ºà I$.Ùv—I“ã™\Èm›D%?QúïîÿB2ÍD¼¤…Ó~«ñ/l†—œØ´xÐÄÑV Ý™#ÄÖ´=\¤æûþÝ›ÉÓ~~£ºÛê´WAØÀÖ©ÄPt "ýëj"††{G0¨æiTš*'Á•µ¡ð´Ë#;‹?Œ œëá³€{2òñüx(wÓª<]Fö;åòïœÛÈÙóLW£Q‘ƒÓNžD=ˆ›hcÈd¿ †@ñ$UFE$RE;¢”RE$RE yxŠ;(ìúsÎÀ(n`wÐí'DÓZf·.O–üêz¦åsÁỸ5R/ýw¦h ÷/ss°.5šÂÁ:Ó0€Ì]ƒðHý<ÜþÀ€)2â5‰Ú¢G6†)ÅOc=œ„d 4Uð"¦6^¹ZÏ·*ÛÏ®©Ìí`¡æ%É!xÀæþ‘wMW $ÒhÑ£F5&a†I¾|íNO*OÓ$¼·¥Þ×Àá|å{þ®Ã`¢Š,Y;ƒÛMÒ¯'Ï{áä)çpqDPªµÊâ—èŠ~šÁ —0èH[ÒIé¡-?Äp÷x—Àïyú|7££ÄgI$’Iww$“|Ñæo3aòŒ@ÔÊ@úù*ª€pÎ'v¥)E)JVNººêR”¢•…UT¥)E)J)JQOJ±råÉ›Z¿‘,—ñ¼«N«Ëâ­!Ë…κÂs4{ú>Ö%çÚeŠ;K µÓËþ—”R›*f”º¢¼ëšcðlvÔÌ©µ£åßXièý¸‹ðºuÄöÕ´á.·+ÔÔÅ©Ÿ¹Úð[-Ì’I$—wrI2eÅÃg¥ÝBè m þÍ CböáJRŠVUUJR”R”¢®=]Ûkwm¯Wwmªªm`®íµV²‹¦Þº+I©¦ã)­µÒ(5Ôø”å¨ê)¾ÓÄñüëC¥¤uôü½Å ˜]ýÐð ª&¾YÉÉÐ|ðÁó7Yš3Y¶c1ÖôøM-=9$’I.îä’dç½nTñ!ø!¯È%ÚÄð %²BY¨[f³óòUV îꪪ­]ÝUUW-w|Ž%Ë—-9Å54sôUÀZO¡±sÙØjø òe;}³µª2o­=ʆªRrôžäO‡b}T£× ¦`º„'åRê:ÁÖÝmòí¶›]¶ßi´Ûíä’I$»»’I“‘âÖ{Isbk˜íBﺴ²åÇjîꪪª«”Áa]xFù]uÒ”ÜÙ+®ºR•j@:ÙC!ßÉPõᕃÝÀ§ ÑØô©™¤ièæõ–:ÚNVœõ?÷âZ>õ3sÔX§±¡¶Ýv{Úá‡Ùî­g©Ülx5®:Ÿù¬{j3:EÂø…ûIÒõÌW{µ»Ýn·[­Öï;€ØpRI$’]ÝÉ$×ñ[ õq¨ix.… Æ ˜%¦,HZìåWuUÆ]Þ%wuUUV®îªªªÒ¾²rï([ê÷Ô¹±xÿƒJuêvôhªI¥©†ŠÁ‡J9ªzË âšZKªKµ ,ñz>¨©%ê…ÔlÕ%‰löF’ÒÑàtts´º¶ÇKBI$’K»¹$™7<ô—2-ç?Inu$ø|ý wšÄ°Ã ªç®îªª«wuUUUUiq­&“Yê’èÄ×´ð”—ß§ôd,o”ô颦c̱äÑõ)°¡ÎPÜS¸å1¶¸Ê3´÷t™e9*' ž‰Æ)Û9[Z›:0”ïºÖNÌêÜkøÄî6›öãq$’I%ÝÜ’L]~W¢ä¸ëi4šÜÝм‰š ¨%ô ƒÐt£P_à_TUU]‰UUR«wuUUV®îª½š»¿=‰} å'ɉÿ±i ÄOÞúö3tvôöîéT{j7/ i‘SQM}'ô£½ÞìM/k`à¨ÁÖqËN«øØy´ÊœŸ£è휦^ó-U«««««¥×töÚœ’I$—wrI5ùËA´þsèÖÕwLI¥ì¹ÁeÏͪªªª«]¿ 0ªªªÁ]ÝUUU§Ê(ú4r4› q4u7ú6Ôü”Êê¬=Js•'ÎĬ8êv´ÉQ¼RK°¤ŸÛб Xš}¬“y·,ËoÚ;ÖŽŽ–¿C.”’I$—wrI2s_7yž´µE³ð^ôIva<ý w×Ww‚»ºªªªªÙ­ñ,X±UW Íà *«kÆØ|zcTÜÓ€ó>e­{±e<­5ŽÒž=7ÍŽG7ßÚ»O"ŸáG M%&Ž‘¬£pàý/1ϯ´Ó|¬7_÷¹N„D4ƒl¡•¡©=²…|×ví2ö&FçóÜŽW8"sÚTÈY1•µ/÷gÌl†¥c1KJÃÈ}œ&Ï¡o¡)d¡*qƒ:Ѹ©õûjÄu.BSι¥À;-þZb쟦˜­²‘Ï5Þ‡ÚX"Aþ„ _‹ƒÝ­…ºìtÀÔ™‡¬e¸²Ù \.…œà[ºl¤»žÿ~ö« ¦æ@Nê´¬]{J3K eèøðÍpbÐA‡âÇŸq!AÄXEï:•𫦬ßÂ|¡óN¡É‰ƒÉ–xA2ræ W´¥”oÚ>jC" †LF¼0sâü÷¸a1”]È70ÙÕñ_= <á)FMšj’%Š~ÐmX ¦‚Ó‘ÇDÓY&.5mpnèMö’«pì8ôøˆ|@ö£à¨è}A6É5òyº$®ãàîŸ;eQRÁÙ698yÜ ”v›/Ñì²ÿ‰‘v9Úä„#|j½¯žÊ÷Æ}ŸÔ<ÆÄB9”é¼ÌÎ’KÝ$B>[¾Ìm¿w8…Êr)éaRù’‹2õÃ̪Pÿ=!ÈÔ‚•ŒDË™l•g¢ðÆÏõéq xXã‹Â$ºYߨ#ª~°h! æéÙ›ûÂ6Ù™ ôÀàpÒ³?Ó|ûì0sÂáàÏGm½Y4­+fÃ.ƒT~¹·p‘QûÛà·(öw³ã¤md_»gPBèš1?9°ŠËûêÑ CqiàÀ“%ñ·Ìn@N˜&;NoyÐ*Ò7©½¡£„ÑøJ~0HãžÆ Ø<@üíÜÂì>‡>¼=FÅNÇâÿ·ËùÄPƒÔÎq˜02e€02Ž^Œ…à¥àøÅ«†Û5ÝH1Ââf:3Å÷9o?ж½qÃÕC—             Â„Ä& 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`·Ê¦ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ U0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`ª©ƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`Áƒ 0`ÁƒFFFFFFFFF@N»Ûú÷7ƒûµ7:ãŸûœnï†4­Ú¶¸Q[t1! 0h.¿“ë9 ³šÜU\û‚ Qr ôpœ«Ô^¥Ú'»æ>#ÍvõÂa¹éUÛ±ãrí‚€}ú‚#š¼Y8OߘÛÀ?#4ծ鬳ÛqaÓö”ևޖ ë®Ñ&’1äÿ·Ã8tô=Á-Gä(ª…_¤ClÊ&ÈÀ ÊA§È³îÞ;®SRÜ:×=×%:Z níÂùãn/Fø3dÈÇ[Õt=WŠªÑBqa_êœEœ. Ð@QçÔSiFÜŸü8ý/˜[:îµõ4kjÔÓ»Â_%¬]PÈ„â ó}BÏ6S4³Ë'!»Âc(7– ®Lls¢Û /¦‚þƒ^8íÒ =GN7{îä1ÙR­Aø;Ñ÷¡ÀB!PÜgašÝEiKôÝ5¹µÙ$.¾¿“x¡W\ú=ŒWÂå}ÜèTºá¹“œ åhãáÂ窱@>üp±GÚG !¤Â(¢ÝïB08`ººÝTè’g !¹KY—ä¸ÌtÞ Ù‹jÈéàåV¦1©ÔnÁaš£gsó¹W6o¯ÝäóÄ[wÒ¨‹ÔÕÉð>ãÐÐÿ˜ë¨ãAsçG(ååÕë]ËÚh‡F•Òº»z Yò¤ƒëoª–`©‰âhçî’A!C««¬>“^ó% .àË„¥ÎW-Íçõض P™Jʱ¤šÖØЄP¢<ëB„gw³•ŸÊ‘aP”°xa=kG©ÐxüöFwÁøàƒõrn«;™>p.#ÓÍ—µ<Œ0À`z—•ð[Aö“Ñéëå~Üã›~¤eåó_gbõÉ3AR²8Qž·ƒž§Ã{ðÜÑPþ9cç„0ÛFͼzÁW]_eh½€dô@[¶]¡òÜŒMήº_YßIü !;Ô£Ç:ÙW×ìóŒ‹ØªÙ¯ˆÅ—¶ g« ‹]oLŸÌI¬ÆÛÈXfØjýU½ÁÒ ãFÅàŒXºiÞ¾Ï OÁæSq+ªxì ÂÕóMy=S‚¿Í±.]„ÖüK‡éÊ—0-´ÙUÏV=®äH¾R¤ëv‡SaiD´|}»ë‹|Ì÷Ë4Ÿئ´Cm’; mcùCŸ¢¥%”(ßp*¤-1ìø0h¨#ê%ì·ÿ§däAE¢ñ$_9Ô‚E޲çÐßQÏÇ£Ál˜1/ߪ ‚S$B‘€ÆëÕ¬ßE ·.¨C*vÌÑd5°øú°»\ˆ¥ÍåDøRS;¼„ð9@‰š j ²š¥œÎÓMš¼Ú×Ý¿}F³Ô Ó5íèKŠBãщð{ÕÉÀÚ;sIŒv Œ€J›Sá ÝéüÒ¡ÍÍÏaôÙ¶Ò˜·å‘åš…tKŸŽCòpüsËZºŠÅ§ø(éßÓ¹Õ´ÖÖÀªc¶Jàžo•'õÚY¤*âÿÇXÖç ‡X‰u›7¿áË>À?°h“QgÄè³sÚ˜åŠ8C§v^~u¨ŸÇök¤„—|»žrqnîb[{{T~ R #X~œ9UPÁØ%ƆcƒüMw|CŸ¨([sBëƒ*ÀQK«¨‘Á ÔESþ©7…Àu&J–œ¹'Ëêî`J”£Ô ?ŽÃürlÀO\L:Ñ/]%‰²P®‚­~ÿðÜ`íkåϨktUÊ<ê?ÉÞ1Áéil5þûð·v¤jV#Î$o{4øÜý¾ß”®eÚ`a¦+â†ôó<íðb!ô áo!¦iâÿ¡¹½ž®áŸ"Ì,’Q¦ÈÙê=1E&MfÖŒ ¸8.ñ#'m¤À?Z:pó–æü‚ø² ³Jè*G© 3˜ù‹Ê÷©nû­¶5íp/#ÉVG¢l“c'£³÷â—?Ô eÑù«QT:L›; У±'*Û(ÖÀ6M>É`¨ŽÃ÷×,…Ñ­z¯DK«¥™´”mr÷+õ£Þ¡[ì[_ &‹VèÒ¡›j#¶² 9ÝHr3¡™pkB^q›ï;̶€–ÕA>Aä`méðu¸$ ý³ËM žƒ ‡ŒkMgñ©ØØ¯ýå%TÆøáM”:Ò‰Iƒ.„ ®[w£lˆl¨¶^›õ¿…ñQ$áÅ Ä Ä,N¯Ðméâ |†FœeÛ¤'Çov~+ÛÓZJ‹’tTo6ªú€LÅÙ ¸¦³ÒMñN'uST¥0‰¤â”ßó69ûå‡Ïêƒ Xë—äȇ47 $çÁšzKÀâŒ"Á%—ëù^G…Ø~“á ]&îŸ%7L.Ö¡q S M_1X(‡‘SäTÐ|;ƒ]ÂO/Áõz+øœw±ÆßŠx9åô绩ŸÊŸ@ x?“ççk¦ë^ ‹†·!*|Åef¸Yq‡«ßd5»«Éì7ºØðëN¯*/mw]·)ÈV±õ¤s">…êuüŸ{‚!¨D5Ûk7­ ŒBEçOò_Ü·ìƒ3Û7×zÐûc¡çÜë®®àx¬ßc$ëX|+íúnBy§5•-[¾8öˆòT ÔV%lGÎî?›ªé¡ðÈêï}ï!mÜ5¯À%2`ÂVÑ*BA瑹døÓÕΟ¶ÓVé„4lXIZc ¯#Ì´M+'("lâ9 #wÜ~)¯ ðí›-$ÌÁƒG+ÕØ¼,º¿ûL§xßÓñQyEKAOe(ÑQC°³—ã"g£1Oæ¨PmÈA{)˜  A»Ûi¶1b,Mn:N˳(nÞćÀ*P\»š é*!ÑØª}î\EøÇºÈIFTµûáü‹K´ÿ)ƒqGÈŸq›L)p½Øžós:£ýNÕvÊ)ËT< ñ\/r4ã÷¯ -lUv†Â`n˜¦)»¥@ Lðßèü©ÏËLöèök—›Å’ÀÉ“*ï|nÊðÆÚn®w(Ã軃›ùØíaö÷IÅjóŸ››–šO=„tžr`xG¯(ÐA è7uAlàXÖñýÂùß š'ž¼¨d?¢ïµ£ôÀ±–ùÈ…J©ÀöûçêÙÆî¨j‡ŽçOÌÿ.S“ó4Ç÷ë‹‘K9Uå‹p‰!âì"3fììoÍNñ±¹Ðcw]ZzýFCôjù}ëdÇwú&9øYk%›6.; ?Üý•çþd¿Ïp§v>=ÿ{ô7cŒS,œ`°£cÁ&0„Ä ƒ„¯“IÀPÏ´v^ZãK{.Ò,€Ó^’Ä飕·%ý16~ìÌüHaZlô?$l¸˜HÆ ,i»DH_*g~ëÍçÄŠ<: ΜQzS®EpX)  '|:YÍifþ.øwšØ­q§}˜«˜!?£[2AÝ%•Ø(€ èòBž!`"u\Ïù}ÇŠ¸µày½­§–í+Ëe§ ¢4{„:ç¤SjГ,L7­·Ýÿ‹õº.ZY½ùàðŠu€RâQvÎ~þãaÙ`(Ç'¨Ÿêpü}R·™AaOÕ*‡4{BСòë÷h…ãÜq“,G‘À%.–…&p]}˶rÝ JnËÛâð|ÂjÞ¸Û$Ü7¨ ² 2@rÖÁ\]n•ox*-σ©EkÚßþ§<áR+EˆVb Öø b»ªvyä-~% O¤8ב9®ØñSňr ^&‡O®çc>d/¸}¦ÌÍ{WÅ%¨Ô}–û½h±´"•ˆÇhº´`­ŒòözyZðˆH„–ÿ$‚ Èeˆc.hÏx6®›Öi¢pDmëAnQ®x¥K µ–ãÛí¬©¶§Ýô],†ÀqÃApÿˆ˜8Ù U§cSÀ Õ‡Ý|ÀÛKûÅUÙðoÌzb®áÙô|›AÁ¤ëDóvg_díÏþ©êBù ôœ.š5§RÎOìxG|Ɖëu¦ú<¢¿¸w3L ©Hµû—îH½:üàåŠÑÀð™1 ×6óšÇ"p«äcn¤„'“ oA? )»šƒœZëËY  ±ØÿÕÓ½p1΢>íÇÂwŽ f#ƒ£é ¾.¢ê4–r¯Éa“èÊvpª9ºæù:©W`”!Ç@¢º¢ÿc² Þà RO†žýT2 ¿¾QÔÓHïÚ¡)ÃÓ(à#H¹ B²¨ýaVÍíÁõÞ P}X(©[õp‘Ég üîoGÄÆ‚ÿI'ÄE„“e‘Ñ_µÝTúé®!<ò©Tà>zo!ÏÝ”*¢Cy‚‘®äÊ I5È{Qj.ÃbÍ™* v½®¤;¥ÛÈ,(Ôt{®”™CY3fêÄ5Á(0Ã2\²½oÝeÝÌ^éD>Iñä'êsÜË'qC¾ªhdGÇuÊú½-c{V>ìÀe©cR‹Î*UË!ËCvãņE1݋ˮB ŽÃ˜ÑÒ†ÜKßIšdzVpŸÆ?þ,*”’©´Úº~‹ÉÖÉê‚B5º¿¹áô_³í&ãÌ6ö~§ÓÍë=ºø-†°†æ5µUé7ñX»(oZ6áX#„wM/„=„ þª­¨ßGB@;' *´Å§á"µß+úú H‰È¸^Óê`à@AIFüÆz % ½™ %ÖaL©°ðéj¦ÅÊ.TJwã€¶Š¢šü;{v´éà ñf:*7ŽhÐŒ±CŒ6‚\:]Á§8ô¦(¡r,Ÿ/½Dõ÷8·±ˆ‰ÂwcÛ/¨vØ»SATΗ%˜æÊÇ”…³m¤:×§+&ïwb·3÷yw?AóIZ³ EXß_mbƒ& þÅõ¿4§¹\õ§¶‘YϋϒXa¬5ð{f? Ðv-jdß{uËÉÊt€8QD–W5…+2"GðB0È Ä±À±! ±p–bÄ^fÁÖE]º2â1ÅJ¦jk?¾˜ðßeÚw‹ªt‘ÒÄÔÔ½UŒ>“=ì$lL™`¿â¿‚(›xž§±{Û èê{èëI/Wäõ1ðoù“FÓÂÕ— #\Á°d«*H®ÍŒGl=fž`<ð˜·TuM]e¯XkÚˆìk/£ôȯÅ:^÷K?0´Ê í¶~ûoJŸ0¤•Þá‚‘~_õó?H‚˜â»Û•þ1تtÜ=ĹÓýí_íT *ºÖ!øÕéð‚ZËÊwO“?Ô¸%1Ÿü/ŦHýkÜeïÅD#JMÓ'˜Ú&"_ØAhî8žÎUÌÇ8N …òËì Q£d±¡Ð¼ÿ»±œ£¼qL‡Ùþîæìþc}¶ÚßB8sc Ë·QD°N†ç¤ß‘|¸O)ÕIˆµÕêù&tß®»Æ´¨QIzñõB”º‚T¯x® FL­[ /ÇVI#ß´M“'^g†•xAiúëø™—Y\þ…]d«rß/ݲƗÌéžm:t".…—ú#$š(þU**o„;͹u˜ôV&øA K A%#l˜iÆ{ZXHäÂ1íé‡èŸÈÛøœš˜ ŸËʳ¼ŸËËŽð¼íOr®þç3æàq°¬(ª.Óqrê/ÆG„{ƒXÒG¦0Ic¦q˜•¿Â©ŠAâ(õ"ãŽ?¸2&.Z£Á@oŽ•¿X ò°zäXÀÑ”¬2î— —[¾mç y›ËyÇãèÔ rAÆ{E®Õ¼8¥à†&€wâ༹<Ü%ª/«æ’¹uotë £¸ýŠ-M6iÍÈ>xd g=ÿ.3²µI V*<àºr9!)­˜°á÷‚=Á¥n\{6ÙŒ Ù1R„“§à£õòË€„rvWÑõÅðØÏ4ø:l=áÆaò *<Õ¾OÑDЪú>ËÚçmEʤ!Ó—€ôEzœD¨— Õ¹ÏÄMëÅ<·,üpü·7ɱ£Èd²Y1%mûØ• ¯«tÀ%¾!¿–Úóêfó2ñ.9%/l ïÂÑü/ÉÓ¢Ö>sê~Œr#³³"ËQp@±Pû¡q€ø4j¥ÂºÌ­åÚ¥r˜ÊwÊ„¡G¢ø¾Úä$]aZȤÎå)ÌÈó­•ÕP¨óÿ°5š%&ciUTùÜÙ0é)•¦C#ð½u˜jz^$þÇÞq†ÔàÃj׎ ³ã&LzN’Ñ¥lQ‡jäg§çŸð£|_[«ò–§&û g /gƹxsn~Qš(1øýƒ…®ªøRÐÉŸä´*˜Üþ?šª¹OǸ#î¨]'ÏÙ¼«^ÏÀ!œñÁ‹”éâhX›‡‹ìîÕ“¯Tç!l /(ÿÖMËF÷ħní<7;È1;«<™ÕHÍäê›+1s(f™z„ÏúºX!`BÅ‹¥n‚`¹`E!!¹œ¡L³É‡ÌAuTÔŽØ€ÿ"h;šMWx NtSða9þ Šñ=ðQÇÉIz^àËWátÂâMÉ ûÆÐ­€™ò lȦèžÓ´.‚Þ,oIŠ­â«vˆ(篓I1Ø‘:©ÇÎH&óO'¿¡+‰ï¡ÐÌZvÅùr×û»×ÚMºϥݭ­¸F Aäááj™o­˜D‰âž.Zõ:â!ÇÅ÷Á,òIËÚ¾>û …JÝÔUã€FÁT‹yö¢`áóH¼ìÚækOÂ)Kºz°O¥v•$ðýI×Kí?Ø~æÃ¬J ¯„¤+_g#Õ""FÝlòÀ—=}Ú’xw‘ ¬ò^¬—.€î$dÐ=Y–~“ä.Ò¨Ó¦í)™*/¬g|,á˜ÿlî½ë0ÝN;ƒfÀƒè¿#³O ð,8@êÇÂÓ(dòãàäíAôú]p|fkU‡¯â,sMÍc½-`ñÎ ¡ð€ª`*âјÒ7k&´¦Ø€áá=““·nqB@‚_‡:ÆXú+­´yõûªYüOò*«¯^yÕ°ù¬^;8VÞSÓó]Ô[ߢ¹¸Œ •`x 2\»/Ÿ–7“)ßoé`†cÐóƒÑ“7r*m^å¡Þ©©é¡Cý%¯0ÿ±R£jÜ}pëó®t;· öŽKhÀcÂ-âMîè[ì:ŠKK©e@%Pkë®ÑÝ©ôV€¨é«­Ô’œ}UBÕÈ|½4çÇÆL.Gt`^¡ Œ³^Œeî˜Ó+Rˆ®§°T¨ƒ,þôÜÙ]ÿò’ü&q¾¢§÷¾Üư%³k·†wX Æ7oRãÍà>/‰Çs S]…¼Œ0² u”¨’†‚£ÍZà»$kP?ì0øƒ’õgÏcä‚Fä!µ¿Jb‡ÜU?~í»ñ.'0‘WÊ)pðÔ|f ¡•#”ꈆ WèïDÛWêêܺþükFŒ‡Œ}2`âÛ›ym ž‘%ÆwAlIní°‰ì)·ˆQ¶{êä'£Z¡wÜèNž;ÐO:¶\ý/'?“¼Ô#…rÆL™2`b(lЇõ*]MuŸ½'IG…O*‘iË|4U]aì°¿žêY±fýñ¼Î¢Œf‘Ëdÿ¤Æ¨\ Àº¶ÅIûpO½³c« À«éþ¶!ýG ²Á/ôV;³MäSÊŒ­D¸Ãæ.*ãÎn8òµ‰PÔ5@BÀ¬‘½I\΂¹ex„\qlË„ù£Ékan…6î\i÷áŸbþÌÍRÜžé¥ÕñaQúï;í‚·6Áà #^45ÊåË«G$§‚#Ù™\#a•2¬îyI"?Öê´=ãü"ß8Õ6;¾@Çz±ý]¿Î3qŽÏÛ>äèrÕBÌ÷ŽÛÒq4=x„Ø)9ù´‰xÌÅ–ùS­„&k2àvv£¾zïuÝ ˜vÜ:„±ªó Ï€”Ïalº®lŒ.kL߸\ëmDÐÿäx~\á|ÎZŸm„iòi{Œ 8Y ü¡"&uœ՟RÑ“…JN^àÚÈàü;Pò`®üJ&˜á µÑ€ùòùßû‘ï·SCì’ìc—A\ òÉb³q;¨ðP­¨æ…ÇngLôÁ;ê bvŽQ[óMb ?ó,–Öî“&Ã2“7ìÕîö‚Al²Ü¾4û©y2¼Ð€˜Ï°ŠÚaZWÿ/L^ïÝî£X˜µèŽ ´ š úèª/²ŠVOH]š¬Yói÷`ì#7Å©ßâØddlœÑ1ý _—û88:——_ :ŸJ†˜1櫓Q™p ÚÍ^׉f’7YŽŸÆãF!YƒY™sB m§Å±Tv*©ªŽMx(Ä(ßÞ~-}I[‹xsãCœ½Æë«tÏjÿ T¢–‹éZÒ‚—W®3§ò­ã°8Cv‰Ò®¾uµ°l{’`!OTØ6`Áƒw¸Ý§Û«uðå^©õÄ“ ªœŸ·û¿¶¶ûxý̪Ú$Ñé‹ö¾ ¼, r(_Ì/W$=Yh€érë<Œ/àH“RÓÆeïÐ}‡ ­Üßht7³«ª—èNr’ž|§ŽU( gÝN£g§Úª\‚úþޝ–ÒEªì“¼: 4טÅÑãoìAä´ò+09l^æs-r ÙáÂ.“´v£ŸÞ£>sÂ51dœ¾"¥‚3cr¿ß½η7«ÈÚæÝ7é€×Küä4çf·h&åÀl^AÙ+þ¢€!ö7!žÝÇ©UÉìQ2ÜKÕHÅ7=#ó»*+ÆŠl­áplÐ=;-Ý@âôn¶ #5î]–£Äïô|”z®eF"Lw½éâíìwF,_86m€"7Öåݵ éªuP{V‚’yò•¿ÏÊŠŽ­¸÷C˜çJ*)‚êâ1ˆ=¯Ì²GXÞý+Æ+:yWµhQI-óŸ[·ÍøE2µ·FN‰˜äPaè[îm.ÛOVþ*¦G¹$IÓb²›àw¡O Zý­Åð¶ÃÒýs8ÚçÀuùOÇ01é°ƒB©d¤ "ŒC/ {´\Ä á¦3õŸ |N]H˜0O.Ÿ}ÔPv,‘Qiª …÷ôväúS1Þ›õ¿Í€îlOþO|ùpWZž–Z^ý¿Wg¬|€5<)Cè¯ÎÜÃ(?ƒœØ-hõ]öaåÈ€ǽ`²Äýìœvï·d‡Ý^Ügò>¨à¸Æÿª{aK¼´¹©ç¡0n&7t¦Zš_ë, ·¼Ù„¨®gÈÌÒ,cï aútrîGçÿ«@`r ™)ÝáóȹÓÖ( Žû,ŸÑžC×ï°;èSÝG§fê)ü@úÉÐýª‘¢ã6”²ÿxؾgyîÉéÕÒË€œ a $â9QŽÔú£Gh)†ìEˆo­†Ñé1g±åékûY„ó;¡âAö\¼2…hÓïÍœÁ ó½t›ùýìùó®‘ÃpÒ9s rÿNêÄöàrJhâ873èd¹Ka æ—¦8)UÿUp»×Ôi$«@ª²µç?°Õyìð¼5ˆüö¡Íí„çS™›žÑc˜ªŸÄÑî=„„´(V‘Ó^ `ïïB°A‚·–93M‡WÌÞB»÷²XB†ƒÞxá|…a_x~Ï6S·%¥Càå«úÓmó‚^¹¥ÇÖ~÷·‚¨Wv]XÕ¾ÜÇéÑé¼ÅÀØô”RöD`äø`<´U'+jÜÖQ8%Z_éÃsæÆÂ}›­ ÍÅY–±#Ä2×;³g,Ò(ù–Ò{ÅÆqÙÄ[B‚LŠÚS²Uò8#È€sëË›€éßš¦Ñ !l:âltý\ø–WæÓ¿ët÷Ýø’éÃ26ãaw`æFZ€:‚Ñ ›¹œÔú±×r;¯œ Øé?Y}ƒ¨ÐÌ·ô¦;~¸ñ ^šº¡èEU!d½¿±LFgS”@„ytȇ$Ø.5@½y²4ʈ‹¯0‚¬ee Lcü@>ˆ^û4µ¨ü­"àÁîã¢2 oãû9#-ºz4~º^Ñòî÷æeÅ–ï!üy΋“q´[ˆ_èPꥌùƒÎØG¾˜ÉJ‘¨zH€qì³ ””ÍÍ£R>Ì^<Íu` äácÏç¨Ä覹ÊKÎöô¸Vµ­³ãyfû¥‡ÇŽè»7†3{ßžvCŸ ƒ;4åCÝÉï# ™ÄÝÆ ntÚß³œ*8±¢•æS@žè†´á‘i+íAcW6>¾‰µ¹ç `UÔýÜÂÃÕ(§”–ŽètNü=—™iB>D÷àŽ¼`䝿8 þ†å«ýͺb•5ªÜáâîøµÜ`ðîËÕ5 0‡i<9 á.É·¶ÐëÞÒCŽHŠØL„A[·Op yyo¸Þ©=LØÈ•÷Ï£õˆw#S´µG6^Ì©ô},5N"›—nÕ£t?Ì"D›ìtk¤¸vz|¦‘†RûöyÕî'IùøjÄe”¦Ûë½°ÁVætsê`<!ì6…‹ˆPžðQ^²Lš_Ð A {%[å™_ ç·âa? #ýAø§óp&•UÓŠ):w?J›üvÄ>“d>Œª!ßÞqžÅ! Ësº ’—ɲRÛCZਲ਼«lâ–ù‘ÊúÚí´&íva3*©x¹tèÏ.8¾«y÷_MyõÀÃÒ5ÇÜuö`'Q0adØ,Ý®€q¡5Ô´à›|š\(šH$FY–ˆ4ÀZ·(¦·Ô2SÝ<„ÌÒ‚œÎË£ž!¿¢·Ð MœÎ’óV Œ…¥™—¦y×_®;÷¥6ÒluË€€€xlÚÊÜ–Œ xζëÓB7½ oeúBôå¡Ìêû7º‡›¿8”ûÐÐØô7ÈaÄïX²òS!±.?̼q¤5gèï1=[ñö™÷þð~6·Éãõ¿©—Ú4.)ír—¼¤#°¨ˆ„"|Žÿ£Å;7ÞÚo[?ß3ÏÔæ=- žjÙò·oCBãu0ïÙ¾>øøNYŠj÷ïÜ<è.üFƒá ƒ¿™‘*Â3ûhŽ…ö\‹ç‘èB£˜á;¸ðøÒÝ'a5ìÞÿ“QðHðÉd›ªJ«T4Ø[  ¬¶¿?Ç¡,¤¡Ø”¢Å”æÚ¶ ‰Ú;þµîQQºsÆúò—ld2§$ðy\JáF’êqya¶w\5 a0!⾆(%¿!O€øIMü…Ü3CëþvW4B·=KoöÁÂÌ佄#óg/ï®3tD#;P$“ÌóöYÊáù5* Ð cžª®: Ÿµ%6Ë“X1Ñ“ÀéóÂú€]àÌ ‚EHEH‚ H¨ÿ1AY&SYõBÓSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà¿w¼¾¾ìíï°ï&³ß.ÜûoUº«›m5Û¼óÛ}òÜÛÜëìûÝÞÞ÷Þìö.îÝÞõz[»{{ן{ëʾû'nf»înù§o··®·—ØâªšcQ“5OLSÔñ¤a”Ôý)âmSÈÆ‚4Ê`ÍC&£ÔÙžše=OMOÐÐÚb›Ñ4ÓSÓ!4É‘èFdÄÓ)í=‘¤ôCF“jiᆚ¡U4ÔÓL“&Ljz𙦦Ó4õ?Tò§à¨ü˜L§ª~Tö©újŸ‰6’Ÿ¦Ò0˜©øjd`FÉ£&‰â14h5”z54Óx ‰Šz§âcEŸ“T*¡10TÿSL˜4Li2i†¡èL 4¦©øE?*¨Ó Dô2›@ jdi‚žM4É£!“ žÄj{CDÄhÔòa22dÓe4Ò…R4Fª~ŠŸ‰==SÀ?MÑ“LšOFBa¡1£TñMˆžTü§©š§éOcM&"zž§š¦OÁOa¤ÔóMFCF4§“L‰°&Ò›¦f…<ªIè'©§‘¦‰¦&F§¦”ô 0Œ)駤Èm ¦Ô5=0L)éƒTôÚDÚ4Ð ¦ši†‰“Ô §‚dm…=SÅ<&dd‚I$˜¦&L(ɰ„Å?TÞ™SOÒ›)³HôSÍSô¡æŠ<&SñSÓÕ¦”ýL™=SO&Sj{MI³TóS©ù Qêiú“z“Ñ<§äM'”zj~¤z?Tñ5<`£LLÔ©æTÏS(cï“çá?è‡Äøñ¬¾Æÿ—*í>"Ó1@äXðQ";ÁŒAz1$¸øDy~00‡2ôe ñ@C`¹êzŽ’sÎÔ‡›'Ó©ô8[÷ýZ®Ïʶ†ßyâôóÓŽá Ç/Š*@¥}GWµâô|ª’'müÿdavrŒ1ÄïéÝÈwòì8DÇ!æ:7Ïà´¬ZM}¡&Y‰¾£ Vçΰ|³óÛåÝ+âFס½õ8¿Û‡N­|Å%˜ à5h}óm©õsex4ãç-ÝZs Èßm²ƒþÏ}§ÎÂ]§ÆfÝ{j{ÉŸJš>¸ÔŸcW\ñãö¢t^~îG”éJž-­ÌA&ÿ¯?¨Øû;ÒEzŒ|"Á’ÃÄëiÌ©«€"ð$çrÖ“—ìœX\©{j½ØÚr)ö…ËQ4dóœ :7ð÷(G"Æ ¦AÀÖ[­« ßró°ûy¡H;à ³Çæ .ö ¨€õÓä5®ÿŸC¹š¤ÖÇŽU äLÒYÜ·ä¤ËËÀ#×ò×¢¤ÛkÅ0±Þ`@d" ò,ÿ®^ ` “q÷i?}~?µwš°º‰¹™{ø”®ó¾Úˆ îÑϱðy.›Íƒ_‰ÎM/ñþéf÷n‚Z{îô⣠zð”Ý£†W“Ýá¡t)åV˜ û  æ™N²lVE×£#týŠàb)$7¾ Mê©U¿ó†÷>WCã\‡Ô•ŠÐÂã?!iÇŽ­ŸÁYKÅy–[±EySc²ÊZioк:,-~s¤Íý}49v‹óósœ—ö`Eã9ŒŒ« ß7{ì–€s"i”‹$£-3(VB©`^ÈG~Ȭa^ \2>&¨špxŒëÉÎv«³®À.¦$ú4ÕÙk8ÎÜ©ºw6ŠqBŽrF¬8OxbA(À÷€UÃ%dÔ<RņÛMÏ~´9¦nOøJ–5çßð÷ÝÍó†a¢Ù Z'¹¯¹Bi¨³*š4[Ì«Ë6ü\;­=_ãÖtÙÞSã_¼{¶Ë¨„–aÉ4þfûVï£~ŒžþÌÍSb)zýxUÈC“Z#îD›4³åœi¦\í`ƒf˜œ¨¤¯â_†ƒx˜þýòx¸ÜåsÌõ=Ñ©/!ô£Ì{Ï#\ÜO ¾é–ûºhÅ”†p߉õˆRš¾ÚONºêŽV™ÒáœSÁ)OíkÉS9AÒmᚎö2”x`íí®ŸÌ²žësDz®Sœ ȬØxV´§›³‹=ŇM¢¨‰Ðe#èÀ<ôQs/È(•³tgoÎÀ,1Bþ3ù“±”×·44\–ZžGÆ{â|ù,7°o$O?î\Ð_=.&¡nAïÌ~åÀ€–U[¦c¢_ŸÏc*ôKaeÈìàêÚAl¸ì ÁÅq¿½ÀKQ î±`Uè o]X|Ïå b¸ÜÅÞCJH®¬O*f¹$ROÄPJný‘!€ O¼‹dæßV!a"îá< bA¹ óõÒZEjàÝóâ7è5®,ÎÙà-4e.ɼ{ [TUrš!ûC%i ú°$¬Œ ÑÆb8Þò=¿¢õíáô¡ˆÐy˜?,»ë5ûAs¶šÌu¢¾zùŠ‘yþó&Ÿ±˜QÃÛ4‰bæt2“<; :‡Éî&²e~Xíaã=l€&ïÆAm'Û}!©-Ã>Åbøà …Swg€ñ癫rÆ=?ÅägØ9k4j½lÚX¦gF*ó^±4¡èŽ·Àe-Á” e¶ø]ä1$¶±ïIùÁ­á|ÿÞ »Íå#lr¾ÙëíÖÖAÔµÉxz<ÆâðF³ÂNrH)›ñDZ&g)ôˆÿ»iJžy@(¦œÆÒ/Z×bd.ðó ßãÎûÏ€Ðиjoz^âç®*Éø´ “£K²‡o:µ˜pp‰¿i“çpÓ})L€L:÷êÀÌŒøëˆi^ AFgˆO2Í$­ ;„•£Ø¥®GaÀ°$G-bz/¸_òºcç°Æœ–Þ¦õÏD~"œfþVÕ¤4,–?Ëñóþœå!FtÞzKàj±YÜ>œ4Ðê‡.NŠôz/Þ  yx'5«¶.ñjùœL£ÅrPÕ AÑ\÷m3=SÛfgTƒ}þó__µ°·Ñ}@Aæþ\6â¨g¼ÂÓô[ÝK€ôaʯfÇ!cܧޠÈÛËçøóH ³4¬V–‹FbMqGC7 ³G³”ËSª¹5Nè’7¯ß)µ"Óíß×~øÑļ"(‡Éäõ³~ì#TÖï¥sX?^]Éx‡¿ æOy]›W%â$K›Î[,ºáJ7 Áëð<ô*’¥ý{,¾s|-ž¶V6†~Êíõi˜$¨H4•¼u` Y*I8Ì•+ÞTfŸ¬+бZÿZ¯03+~7&ýÁd©ØÌm³?®%2–t8™·ª"åʬZE™¤•Ãçr”¨ò¾9—–vÑ/ößâ4 é[)ËÝ—Ú‹õ’ó8çÿF¦òfú1‹å@„usºôµvm~Q÷¤^Èû¬§v?dh(Qô–}\àÇw¼×ùRaq+“lVlØHkž8ª7ÞÙ~£Ê<´Õ7D)ë¨é•j¯¾É¥š5N°˜…¾Zc#G‚”®ûï4v,98RA².ŒyÌ :ç'L{ÒQ€¡îO6Σ!Ô ³u™rÜ6|ŽCRÂ#˜‹‘8-ºwÖú±!7Ô]EœüÓ+î ÓèU%jN™æƒˆžìO„TÇJ¶"ÀìŽ1­ûð16Íý(Zk kæ±û/Üú›õ‘ïÇGi¹t8xHm~ÀȧìøÖ.ôí\»ÖËe¡S«¼5QâEÄéIµI ']ÆÄ]zq#Ê·p“ÞYÅ¥—ÿĨ‡î8ðûþÜ·Ÿ±’–ɲÇ÷oº:ÇÒ™>ò¿ãn¢»&+F6Ï›òÎ P9WïLÇ#UÝÊ„äO‚mJšIÐaó÷ê h쨙;ºðŽ’¦æÎÔv÷X·8K/a Ț»†X•5eZ¨½'ýÌ—÷Ð 8®Š«I U‹5¦¿Kb­”d±xY,‘wnõN¬.v¬Ïqéoœ]£òÚSP²\|¿×"6Å:÷{^,¼ö;¿,ë~ÄõdäNñÐüݸØê<»… \kbDíO‚yÑp BŠ V5’“­$ûíc…mnm@fÕ]ùyô„wq…” :KW6ô¼¶¯äaþm¾•êÞ^†÷ƒ#ºÀ?0áú_L‰Ü ¨ÄyAÜß-b ³q3õ,e—ác¸¼¨R8tñ}ªì²‡ÒÀ aZë…‘–I$^î™cLÕ ‘fF£¦BùŲuÒéw‹€ áñ%@³É/ÌXì €ËDQÅCp,cëA“—Î>™Ûœ Í6r$äñaÈÿEù¦Å”EðW¨ aU¾'Ûºy¸œÔ·¥½öe ¯.›À€›¸›Ôú:MÔ–eÆØ4>A jƒJãóÈÅâ²?tÙBûY¾§ÉQ¯È‚°Ú=(Hû˜-Yø¹‰ßÔ¿åà>w=Êž[ªûɘÅ¡Ól533ªªÞd-i#µûëw¯R7chS ×°BB[X‘x½ßW€—kóàò’³fjx€ kÒ$Ö§ià[Ñû˜þçë}Õ{'qÓA•ÌAøtú‹¿‘Ð# A·7„/泞ú»GËî4Ú)l¹õÀ„ç§…ï:q±[€„(a`†#ãçþ« ·r¾s|0oÃú’êê84RG­£¤Å÷"ðÉ­—B§±ðDù;š|FÒ¶¯µ_ãnìû|Ÿ{êÏnyFëeñ‡~@£”õ9Ð3ðFæ7—¢¡Ý¥n¤(ñU·'&Í!&zЪk}˜mWºK<5®LzRe榋Œ¯erÀÀYº(ï%Ö£$÷ø(ãmV«5@Û³Òìâýmüm-Çnöb¢å"0 „@òê\Ø…ë3þ°½b’âˆNÿûzþvjX7ä0_mq…9? n¡:f=ïŽãÜàqçòYصŸSÌÎËÀ»êhajÆT€%Ðü´‰j B}…ÒæX°`½™­ƒˆ€¡iÕ‚€–ÀöÁæúÚdFÕ=\÷ذZóˆ[¾¸míÎsÖ^/ÝMì…ÔkÞ^‹²9?r¦“Ðü[Äèp©z§¨F(Œ½ÜdÎí »â.½³xõõã¬Ôœ½Ë « 7S‡SR†9Wì¹OLRûöžÓ¹Úlý\K‰ý6^¾¨BD«B5ÜßnkŸ­ûßWM¤ÒnêÉÐÈœhÍL®¨Èò?uÙu·Ï1x½ªbðb§E˜”+: ÿËE ¿ò[Ž=—Ag±q{ìC—™?¹K%K…¤AI× ºQ WëÚ•»²Ë‡À:9¯ Þ¥­çù¤jšø¬uêv#0fŠÈó¦Þ{ҧך÷…kX´qŽ+Cð¥‚3IXÙÌ€µŒi#=þa$Ê¢LÌIÞ“‡è Îi8ÍúÞÖ‰EÝÔ'¼pÉüµ#9Š×4RÓ2†?lu.Yª†© —èÏ=A]«÷hò“`ub ‡ Ñ J41ÖÔj¥êñŒM·PkRÞølí V5 sIÇË/WŒ)Jk(Ñ{?µ§³x6ŸÕúý˜BÍšµ°¨jz~Ì<î\«žÀ¤?rø}’ÑŠŽ@êT•c”нD³Âl[ÀËÔåE¹…x¬+…»=(þÌ ëƒ{ëòŠˆ(´pÖ礽P-÷&·´é¿=Ã×+ý*½ŸZ“©ÍÙóÓRžnŽÌ‡¬Ö± l>[ÊÒÝzùvÖƾꗈ‰‰¾ªQÝ8U—Ížƒ6?Æž•"x ‹›õƒÌ¹Q»Î‰]Ôë„^sf`szãÜYÄ@ ¯»ÇTYÚª%û±"²{ï]Næ‡UM7¯ ZÁ5fr†xu~Ëÿ‰ŸrÖ¤öJJb¿Á©4/AµÉÞl0åóô(õG'×1»Ÿ%ÕAd¡=+&ò÷lq|ˆN¤NåsuU¬êíŠ{Óºâøê])|„òÛ²•9¦»Û×–ÀñµÁ¦7@CË9~:REV³†ÞÒ@b(¬12ˆÜIãðŒÆog‡XV¹õ#Œ·ÄKìïF¥ò\•1ôTºå(T¿´ù÷”§úK ˜\? S?íÄ ȸJÏTIá™FÏgWïKO>T[óƒÃƒ}j ÿ*N øÜÀC9Kv0Ÿ["e<Ú¨½XýsÀTâ¥Á1{÷„[Û‘Ã^zC¬&\¤y¸æÆëZÅC[¡ã4nPKùë"–åïEòüOšþ®’mÎÍ ÒM2ý¨"p¼E/‰'LÜÝmhY2€M§Ý×¾µd‹͙_<ó±õ‰¼PÃO}fÕ‚{Šy=ÉüYL[$X$ï`²SY ˆOà X¿ØVE«£¨R‡bØ^e·5F›äo›ôE¾ª*ª&L…|z!»Šÿ­ªä—¯ÂÃ` kSA©-­§ÛÏ¢õÖLΣì÷°F³ûܯ0µ:Ô5Òêq€Å Ë^M2’É£NDõž «¿a^©wò¦Êâ‰_¡åkÕº»-ä.°™Ówwôá ©š¶çâ…åk?bHÆn_Èw‡L jÊ<–©éêPž ÈD`#9\>qüE0Ÿ«©€Q×w’¦ÆlÅaÂû5‰¨u àmž- c.O&·+ÿøuâc$¦Ýt9¨»†·u+i|Õi?Ëêù—¬¤¡*m62]>H*âeÓS€HH¿æ:8{kçE{¥jÍ{ûðr²l¿,Õ»œ’œÊfCmÕ²¥xä ª¦=ÇÏÔÏ¿›ÎŠ´ÕNž£rnPùþ=þýcð´Â,†OÁoéOÏ^¨šCèJG(>n5DVÕïy`+ó­FÏ?Žh[B­Çpà*}3¥€âË£Æâ[›ô9ú»xãI0ö· *°¸ØD¨…kfñ;ßÙ Í>Áîêâï%â™ö>ì:Âzóm…ùm¤†¨'¡Mg¿±¡­£þ‹º€ý_æP&›¡ó{Z–Ha~ð}5#Ù*H4b äæ23^'Ýfè–ú˜j`"éá)âÀÀJWÈ›ßJ¶¹-ØBž¸^ÆG ¹l¥#“B0Æ”*]d Pуå¹(¯«ÄÕæ%ø²4AŸHÆQô?EŸ ¿9 Úýza:L[a u`Wí ÀÌ£’ús´Ž`9¼)áH§r¦CcÐú‹ms?.13çìèÆ4ªÃµ»ÿ9æO•Ueã0}Ïà·gìM"W‡=ôu][kÚ‰¥é‡ÿ¡|eHdt…ÅÓ+Ö¨u³ÄK¹û¥ãd°ˆˆÕ…ãÌæ´ïé»¶%vX–ŽÅø(•ä]Xè„¡Mš_?}¤ù—pM&Zð¥lÙaMûs‡ÔùpÆíq˜oºA×4VÂ.mªPõùÈ<£I:°ëò´5RÐXþ½Ë^¬‘ЊCæp¸³XU¨%WdTJ9-Ï XlÕö¦Kttzv„-ð¨w£”.òwt—]-Õ›u2NÚ_y‚ÀîÛ‹æ%-Vþñc ’н lÌižtÑ5s›ÐŒ➣ÆaZ%©4…æ(Ò+k;wƒ­×RñOýd%Z"ô­¼­†h(‡¨õ7"D£Š9µß^}SZJØÌéh+€Dy¤:ÖSX¾pj/™µ¯É}ŸèÜJdûáòo(ÖÖ<ÙÐNJ(œzN€8…x Ú÷-×äët6½ÉÍo{ÃëJÎþw7Aª¡ú6ÖÕî¤Þæä3ø|´¾Û)*«`^h·×ù 1Œ½t€¼èÁý¥hb Ã…‰6µÑ&j2 T³P+óÞî‡åétY4Š$[ǧ×¼$ýŒ”ã6½£²oœ4¹p¹[ü3èzÛ2F®Cê·ú<¹×œ Wñ" ’,‹ÚHÒ-=ÍvêKi-/ä;"ò÷q>Õˆó Ùín«4 ®ô¶uÒ®ÿ?^Nòm¯µãfô±¦q"èzëfïvέ°+÷W©¬~½]Àª[[díëƒTU³ ÿQ–íÕú!·íãé{kõUÐ` íu_µÞÒŽËô§7ˆ¥\ûJëR¾”2 ±Aº¥‡Ú"/°™kû©‘˜ 6öÚ"¨>ò)U_¨øp©lI[¢zpýpÄüüýQПµ“vWuQÜWDhþµX÷¥Vx T´xÄÏañz`õž~ƒp•Ð:ñá ¿hÚc,˜©,sÝŒ­„é`Òk75!؇$E~¯Tµ¨ uS±iÝýŠŽ «oé8†ªÒ½ÐÃÎä¼A”)…vX(êľd1Åh¿½ô–ÒáPƒé ŽPou‚Öo?ä?½š¿OùÐúýé Ý{?ÍÄÐÚÞó :_è=¥&ý¹•¯;Ñ`\‘º#¿X_´¨z}f°?fÕ¯[eÇrÔÝŒ;ŠùšÖv Wú?z–"j)½+>KR‹*e©ž°^t×wd\÷‡Q.äèà¯)¦YšÚÔs@˜f<ãhÁÜT Tƒ¦FcAªB©Uµfê_íVÉÈÁ•±Z]‰}'÷Bglž­Ÿ´»˜•«§˜ß«-”}«ÆÞèJéžZ¦)€3 ŸtyŸtë‹ûlTµì´:.ÛtôUôŸÇ/9Ùâ­x‹T5ò‘\6~§Ê2Ý·órV1fyÑ£zJÞ[<ך*wÍŽøÚßeÆ>«jœŽŒQ~³<Ì+¯5í¡jºÙ,@ùiÏ–¦—Ïò“Iß+´ýQ5†ñ#>À­„Ü›Áeƒ4ÎLgå-y¯ ÷´#ŒØ à9ÎÎ%û1”ü¼œ× íþëê#N&~r¤ioi¶æ…4IÉPiæÎH0ûu¤»yØë³çs~¥¥ÒXc{µ–vrVBcf4±Ÿïz…±z›´M£ zœ¯¦ˆ>6¶oŽ)ýGt 5Â߯Ôbnà u/9}’9ÿeJ¢Ï1è~ñ(’sù¯^f×9…¢/½b¾Û$©&Þ·<š¦gFw&åÓ¥1¼v6’²ê,—Õuz( ZBL‡·²g¾•ÿÓ='ÓšŸç÷'~ûŠS9l€BÂñáÂôÉŒý¦üµÐÉ$(¾vP‰áŒGQpϰ7©È<ß:d¯e¾¹å>8ž¾lF­þ<“€Ç mͶqcÿ’É®hv2ÏaâšÑb GD}äçV7­åì¶~6–&¨š´-²™”óÚâ²³•‹ Ì´iÍy¨¢i±˜è_9ž¤gñÓž’ôôîëd°9Ë_"«mÉÅhå7ìÓítÎÀð*èñ|l›¢i83byñŒ7JÆ= .ÿkøŒuK@Æ__·Ý¸ê©õpÝ¿w6»šC¬È:oÉàÐ*"Õð&ùf§7†°€@ÿr¢— xþô|÷ÑþÒÛBç ¥WÆÒ66ô ±4¿ÂÙ¥o«—û2»'ºø)H0Ç}~å>$Á—bþ§¦xRXJ À‚˜@.øë/*w¬Iqå»Ý:[å}àž ÿ3%ü’M9Ò'ÁÎâð[êN˯Q&0&0;%²fdB°}ìT2ñžÃhJ޵R%¡9V>S96ž›'áßL)S\}·•»d•“<§wÀúü_›´M‘7~¥þ€ÙÈÛ„K´‘ó´#¬ÆhQTÝKøŽ™Û1x>Õ«SƒÍ|A€_ò|‘Ö£~Í›>»‰“mí§8”»f¢ãšùÈÆ¤qõVàÞœâ§_°¨ÁÒûÓ~K3™Z*ÚÍéÙ@ôOóJåô04Ò¶0,B®gVøŸyØQYHÌ3†Ü0 7ç)Ô¤ï£Íµi+ô#ø501ëŠÙ91(}ë³f¨Oqœà5}VѼ'‘#â”ïΫáZDûûs©¥Ù¿ÜÔ.½¿«´ìuÀ¾Yr$ûÛ|RßåµûÇ òmB¦E3«^5¥6}¼MTòÅó»;?˜þ}‡_ÐŒ\Û÷Ö±¥üåGâà® –áÃÛµF­ 3faÃP·.r_Ç%?Ä5ÔWn~>˲?48–¯F³,î9ËKJ›.a"o×|‡b‡EýOÎ6±Vºëý¯X×VF»À ñÔ„AYÝ9¡žAÂbÕ×ÇÄ–ôLà‘˜<¬ô!’Àñ*Dg*ñ"è¨>ä*—šÍ=iΡMþQÿr =¥ûi˜W]Eaíì¬O¹õš9-pr„^âµeñíïË@¯è%‰QÒÇ‘áèÆ ãd8³j´›fÀÄå9³_0D|Å¡žðSjÞ‰J§&¬—Ìœž6‚‰föÊqÕ½L_±j6nåôº4&¼ªáËXä¶â µU tí=¥ùÅc¹;–tVc0@•¼ô‚Xè΂Dzûß76òwpr.ñ×ÇöE2÷¢¯çTâ'ZpFøY|U«Ž¦ÃÞӹтKü„áRR©Wºfª§kë£'*â«lÛ+¿õ1HeC Õõ3*4T*|>[|¡²A¸kBâÀnPãþ™ ¦äÚó'œù“\m⻽˽ÿh¼ûìw‹=ÕÈ"ÊŸÕ0rq•]ƒ^ÒW‚““ãõëëÄžQ@µ¦<ßHV‡Çϯ$ÓGÎ;W2Õ3© ¥ðdEÀ›°&4o#Ðèn Òàï˜&Éñ@ù‘&lù¡ ;þD»¬\ïi¹Œýl-5qr·Ñnq†ÓÍ()öüÊ=û.p|òB×üä?}ô®Þ³Myw«U_Èãe ®{` ýs¥µµ°þsÊ‘u¾sSm ¬–‘˜ê¡  Bºø¡á,°§þåÂÀŒ’¨Ðþ[~Ť¹3x…'®²‡-°‚nO€±t(å˜~mt7Ç”°c;ÌÚtJ  ðFx;C etúÊ«(š¹tç4¢õʦ¬›ü*9VîÌ/æÒ¡a.VöŽÙQAÞ2F¤é%ò4^j ~'Üü›Ì¹Ú½%5i]ý€4Á¹Ÿt*¸ñø0tq­jK£hz£@ù‰Éêÿ°Ÿø»’)„€$ß8zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025413607166133031614 xustar0000000000000000112 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1raidz3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.721786887 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1raidz3.dat.b0000644016037001603700000007015313607166133034761 0ustar00hutter2hutter200000000000000BZh91AY&SYÎu!¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà8^ùT¬ê•ÎÝVæq>øl;/‡Û )’E )O}g¶ªÏŸY÷]Þ‰nÖó5½ï}ß}Ÿm÷ÛÞ3¾÷z_³®íß=ïlfû†XmŸww¸óÛosÙïs†ïq£×§-Ð˱0m†´ mµAyaÄíΧnN¢šZ±­½¹o|5(@ÒdÍÁi´&˜&M40&' ¦2b0£ žÈɦšzF&™13F‚zžšh44` ÄzLÀ2jxF1šdÕ¨¦€#i©Âm'š“LLƒIà€ÈOM2žBa0˜˜˜›M £&h&L™1 á&ÔÓÐ1&Á '©°Oe?F4¨5$¡©€›CQ‚mLO)´dÓ@~¨h›QƒDÀ5M¦M&0†MF àš4LM¦™M©ƒMFi¦š2ja3(Í2§´d†£OTóDô&4<:Do`9"<ëúŸ€°‘ÉÞ †RÂ@L¨ HQ Y¥–T@¢ @PØåCê\þP™½hŒWTkì ®Xþÿ™ÓÑýÈ.-§…6ÈSà ÍÁÏC3@©ßŠ=ÀÈôo ÉÉ=(¼¢®@q. Æ /ˆÀ‡ w‰LN}‚CNy€™ˆlj°MüÑ*îÅÖ(7R.Aï °vEÄFw£ÕÐ/C„ÿæ…”ðág†%°è|-ÙDž€tÈC-¬}·cXü%hÃ:xެžÁÚØÂØ1D9~"¾!n<`êBJ€/ÃŒÄñÖ,<Ž9ÐzsƒNüu m¸ÜýAD°¿¼XÊt8Û}€Î6ECHÎ$CÀÁ¿¬q-p µâÅàV]‹ÜytEíHC -›RÐQ× «‘õ¼ †æXlvb~„|3„.¬t£áo^*-˜Y싽@¥4'ЃóÂØz«âDì>œ‰ø Ê@³fü<ØÑfÉ‚ìZm„ö¬oÁÒ^6r'ÆÉ9õÛáÐ팸A¯d °à-€É ôlCB=.¶•Œêäl‰|q’¯Š5³eü_Þ¦ –8–$™"n“%¦=)bpe¾`ŽÔídÁŽÏ؉ ®‡½p˜! ˆr„Q’Ÿ |à £©&ÔµqF0žŽ"|@dDf`Á¿˜0L¦Ïd`ˆ;¸SC–" kBðÊ1ˆ³¡âö\ÅYÆã¾ŸVª‡C‡ü§D® gdÅÉÍZìîÛõiÅÈŸ‰äžG{iÁºÎÿ‘Òpy°âøå(ל^ŽÆQG¬›ÆÅ®t°L§é÷ñË"8 „“€£$È ^Yñ0)Ø| '% (¥7nl“s5qž,n·ª§—gööÉïl¾ýLŒ›NälS3…µ£‰/KøüÄÈåÒÍõN:só9”Ñ|+™ýÞo¯§Ö¦áÓUÄSE÷¿W<îßïãaƱòè¡äø¿sþ ºŠ9ŸV—æhëóóóýl*f w•UÞýþÞ•=…¥7oü¸îvè¼Þ¿Áõ<¿‡ÿ6séy]Á¦ÔÀ.̹³rÂÌò‹_˜H&Á! NÏz.öuæŽã–x3„ÓäADç¹ΦžÊ5q´³uç~^ÑlL#&`¥!!í"R!ìÁ<”îDóú8áWšznÏC™ÜšN›úFfáÜ“€˜¢0(ðò·ŒkII0@p) µ RP0šdPη&î´,µ¬-¯‡ÚQæÊ(¯zç›ämöv1Óg”ùVãè q`™d•88ý)$úÞ¼Bm’/ë_í¥úK}7ÿKJ+£cÅIÛuòˆ~µ _ǼoW¹€¨û+sgþo´{GòÂÀé»§}›¯Rz“°k3`èá ÕYÚóK{öß>oÂîîF&ížÝôÍÚsÍ4j©¸(twêN¬þáë» mmûW–ÔÓ_±:ÿ†–²×ªëìJîï¶É¾ß[.I1‰ša‡`ÂÉŠ:¸:ÂÉ’É’)Él ÉyxIÒ‡ÜcüΣ¦×‡\C$KpÒ!ô’ªmC•„]†@@ƒÚ°¿˜ $ ô±J{¿üÇfæÿˆ(ž0îDÝÁkFÅS^+«$"W½ïq^ µÁK+!²…"q/ DP È(@€82u6â<(!;nW 'éE$—&¹¶óž@ì D":cây{äž«à9FÒ†£…WJÇ´TÄG6 D‡!á„=áÈàEò;¯ûÜœ"(ø‰ü”ukd«Ÿþùá:Õ¢éåKÙ«ÞŽéޮƮîÚ.Q"D™RæjˆœÖóÎùáü}Þ/×–öR~z¯ªX¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR”¥)JR¹¡B… (P¡B‡\®Ï/§Ùü171I”­ù¥GкEÒ¡!H\AbÎa ÓËú¼¦ ¶3—ì(çgA †É~÷FÈ-`â"‚VU)§•Å»¬¯lfffffffffffffffffffjHšfff¸ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÏ>¼=,¿ªûò„DO‘.g«í2ÎQ‘„ààê‡7lIR+b‚k¸y ŒþÏ©ü±ýo|Ðï°¢¶³À+h˜à?ÕjWûÈãª>…³V‹¢^‡AG6zÍ ñ˜©@’úÿ·N²à æ<ì"{™]ÏsÊmÎÁÖÏé =z€:ùw½… 1+ûÔ+¿Õõro§HúǛ¹là-|vÈ é¸ÒªmÙ:G2)&¤ø<-F2¢\ÝyÞ¦†ÇHþ¸\üGdÉ6Çm2içnŽªR57Ù&«%ŸqÝYô²sw¿L75¤ähÉ\W–Šä Ù|håÃX.~cS²…%|wíÊÈSô½ÅØì¨øNîüÖ+{/¾;/‘³ó@Úðf?Q‚uÖº-kFJÖŽþ/÷G¶ñr©e"šê‘2ÊMÒØhôVILF¶í´(q8}Xû§©W5P¿ ‹ŸÁºÏÈ™G·»Ù*ºV«ðÓ}¸'Ñ]ÀO(Ÿ/íLQK‘ ˜QyÙï 5ðpò–ÃQnšÜåôÝüŸ’»Ñ8AÝšä>G&j>ñ%_ ¸}[éÞ]ÐyèçY6Ì©ÅÊíd@—"€‚œ< $ $ß‚~Ä} ÄB¯Í`=ù ™ j"‰çQDˆ‡ä’¯ÃTäÉSä’?*>ü EáçrJˆO.| DzˆAx_{…x)ùz#ÔüQL")ÔÃÀʪ~¿ ãÍ¿ÄøO0ï·ßŸ¦ °ES뾩 § ù’  aQ:‚ÑJ*zyä=þ””@v0½‹"‰šÄy„¨¯·%ë QT@rŠ'¥7FNÄBEà }Ü!àö‚» =t‡"@ð„ÇJzøêIÆ…;zàájŠ$"‰µdDObz\  ù/8ôO0çëeTûyµ|þTïe98œ…A¡½‡æO¨€ðàm•Þ… Ô Žlˆöþ'Qí·ï½ÙI©!|ZX %˜)ÄÀ&jÒ@"ð¯²Ï«æÎH¿jQõs²ˆB«ÂªàPªN:²ò{éšn Ti õe@F!0BHàOSm#@DDR»Äi®¬<2G¿bJdbëþ` R¼ÿè–¼ñΣ2F”ÿR¡‰¤‚’Öi‚Ò@ ¯ÆL‘Ö³Qn€ÁÕ¸?Sò9Ã}˜úCu­ƒž2PWmè0†úƒÅÀ¨ í~Ç €µƒ‡Æzí¶2i‰öÞ›ô~‹@Jš@¢aCŽ?,§g€ dØ ¼û.BœÁ°Â=h¢žÿÑc@.R&Os!‰)êñùNXüN ¹W£;Ã'+@ã\ÇYý¹è4œ` "‰ƒÑ\æF0 %ÝZ,Ɉۖÿ¼uyT`‰.òÁ@ÑEX8܂׉-¼šæN6Ï¢0»ïƒ„Ò#Åù82Ž3Á‘ìŒ$ˆ Ø(ó0¶úœ!ÐqFŽß0Ôƒ×Gy.© åÍ•ö1ó㣟úðk¼|`)²ƒäKåHq“L>¶«˜›*ÊO@ÉÎ@¥ò w ™fõ¡ Lи }õ »û“œ­ŒŸáúþÏng:Ï÷¾¹!«`vß§)ŠVAÖ)Ѩãêùøa±ÓÀÃ…>«Œ9ÅýDዦhv°aépmˆäcÏG°ƒÈ'D¼màó&ÊvC¦Äº_˜‘Ï\µÚªûbwš¡`­.–±´f H$")¥{â—ÍAH’® †j·ïI.2‹wa}ÊÁS°¾ÏüìšÆ*~wÌÌÆ½˜g¯ç ¾6ådüîxçIS%®ƒâò}ƒç›ëƤ˜/¬7×ÈölK„ àÍæ",¨ ¾RÔØàGëkÄǯ-ÞÓ= ­uŸˆáŽ£ë=NO¡ÌðÛ#É\JbLW³ØA²Áò£aâ@ê±NsEVÎÎåž÷UááôX0 Sã°ò»S{²£¥-l¤¯§LE×tRM>"ÿï´”.©—ÖvìÕ°È2™…×G¼€SÕO1$LÛðylù®‡OÓ>QÕfŒap‚´ò2d[\é‹:d=äz/;ºp¹2äðÃJÍã;V˜Âtf0Àè§22eEÏiq©¤¥Ï‚Ø« 'FŸkãï3z–\¶ ?…)ÓJ›½#͹ ùÇw„â¥yC—Áë2òÃרë\ÓÏ2µ±E•=·£+ΊXâsÿuîézÕ}ßhu½Y/æðúÊn÷çt‹oqËB*– ßV[%é/SÍ‘&¢Š'}ßè õOã—”–q³Î#oÀ©ûLÆÌd%Ô;Û½¿7g-®~o¡ìñÚΘ[I¶uCàË;{§eÉ„ÑΚ¥Â_W6'Á:E‰~‹ ?ç4_ä>Ò.Ž Æýxúl¨Ü=g·áŠ"T ]¯Rp$€A11’=l ‚*#¨q=˜,¦Úà!!£ªPvLJÚ÷²!Gú¬04ei¤ÆûUÎAt7@ÏI¿~Õæc ^„ÞUÏÓ†çßÖÌ¿s–âm[‡6 x1AÝU½×–¢Úò¸ ›¸³ª0µ àëÇCÙÐQW¯Ögÿ¯3Lðã܈]ŸÛ qJ:>Ê.ãõ³Š(± °—PÐä&°E±„w4üñ8±K>¬Ôz4LªcADrJÚ²—,~j»ço,_åµ› xn’⡈lÎ4ã“ì¾›·"Q¨ÁÔU÷ìÖØ­Ó/×XŠÕL‰EAy< ¾MB;°­‘Ø 3IqËÞe…»r¾ÿbx½oúMÛ1mÁ©å°þœùkÇòS<ÆÕÂÝ(X´šxE< ˜L’%ÜX$"9•³ÔMBªœûðKðZ«`.‚QÏð kõðÐ'>‡cëÀÉ߈O|Jä¾À^ãóÍ™~$Weõ£45!þ-m~nóÛŒ.O`3ážsùh²1¬H¢¡»è‰þÊ^Y ÆŽóz#‚»,äG0’ C˾EéIEyÈI,NT“(º2ÄQEyXÄ>\_Ä`vir{© 8ªªí//àÈ1ÐQW?€æ¬¤ª§¿õX õÜߟO€tïqcÿ½î2 ª¢šòq€ ª((¤ú—~ƒÞYÍ'lcMÇãØ`ÄPQEï1ˆ£§±—ðpp0ÔwßÚ Ô°ç‰NȽüýézŠ+¹}èåa/ˆ«BB"U£ ¶² [´©Q‚ÚmTCtͼޗƒѳ†ÀÿÞ$’ò¥žÏ,¼’CðÞjµ¶o›çêu_Þvh'€©HÚóI Ï´’M‚P€RhxԪȮî¾^Ž=û¬1ÿ2»ùǪЇKž¿¡ãêtK5ü+C;?~÷1Ìò¸~—o¤½{R脸»i;”KÖžºòÖ¾Þš/W–93×léÁ$ðÑÐ+ZœÝÓœK9V‹?±P&“ e/ øtêNÀ^Dªa)Æà8{ F°´ršCŸš¡I$/@­Ågbd¤t ‰pPˆ¢Mõ¢ýôui‚²_×o~ÿÄeɲ†‘‘rƆ´I4ïRËÅ÷«æßc<—Ñ®qªwí`„ F“è0§½þ· +£*Xó|–Ê|$z„Ïå»V@ÒuÁÖú]%A7âd  ±¥Ï623ýpÔTšÑ½Ú-ó2ú¬®SÉ® êv$Í1èËãžx¶Åëp, Çû3,‚z®qÑžK?tý¾K’8ß8ý0qý‹k¤è].Yš5†™õb/Jgï G9¬ÂÅa¶Õ‘ø€%ëN¶ï[ äA²0ÎâÙ¶üQiï;*lÍzŽÈž@+ëF‹þ³‚ !?… æÂO,äPDÒ€‚sù<Ðv©Û:s1“”HgñâÛ åDRÖãmfœ„#…çÄÃ0Œk× p²'4Æ™XPé9hÜLÐrû,ÜV%x†¤³“Ϲ™jÎG›±Qíf­¹-vƒ¿É9³Í¼UßðŽ>ÅHEG“Eä½@Æø˜L6«É-³_¤—…oîŸÂ ‹ýõ˜óÞÃ>Åîí{¡9Ð¥€*N{:ÄÏn–ºº¼}ú/îúf¾ ¼ ?)M>†ÚcâyÃî@9""Ï2Dˆ‰˜ê¢DCçB'÷iÍ^è{«A 68·é: Ú“­½Ú³ „žÕ‹¤ïëÏ­s¨8Ø¢·Ä,5N.4U§<Ä4˜ˆÀb´ê ß÷HBB?,ýׯ'Ȉw„_{ëÇ-)×ãäøÙÚú~£9 ù”.(×¢¬4wèo³Ê€«ƒ‚ÂB÷K—Ìtˆ£ÐJŸÛþ±•lÚ} j<º֜I&Ñ^¸"ªîS¾)ÁÕ½ÒR[¬ån=·ý¯=¶$?ˆBëðï`©ñÃ,2–êºL•[›f«äʶ "öE;ÜVáÕ„¤Üoa£>†a„@w‘1›úÉ +-hh½ì*T€,/3xªCÜtÖfnØÛ¦6‹Û/;\ܬ:…]¿6›f¬8 jZÔr)¡í™(³DË8Ò"ÌvËÿ.!*}UQÊÏ©>­9D‚ÜMÕ_•9S¼Üf³ft*§ò\%E9BõîÌ Úð§ÄÂÂkŨÇ.àc5’uþoT¸’E“¦îbsj£ÍãfÒÅ ÚŽB ï]{F!qv¥#§“*ÿÀ]g bsÕÚÞi¡:ÿ„„í4uë™ÀÁ¥œÏã z˜àÜ'‡Šïឣ$å7;Æ5ê¹[‘ÄI—ˆiØ>-Ëß1òs>áíÖ¯ºÌr¨œ-Žõ,±c‡>« Ia¿µ=ÇTt¶ðT7SuÔF×&VwQ^úùÆ]äÝõÖܿߦdµù’W:ÌÛ7´YRyŸ±Óçëà Œ[§žòÍLq‹ÝÏã¬xêÖþ»éQïÄ5ÅœÌ@‡ƒÆoÿ¬[-f}ºçІÏ%Ɉä/A¡ÎÍÒ»\WË]nþnHÆ.WÉ'ù "±YÞ‡ÐDïÁóV+po8«âð<ÝHßvhòÞM–¢z@FWTÏ]°bÙYùù{ÇiCñ×è²v<ÇÆó·žÖÛ;o1·IÐ݆ó¾Œ2¿h¡HD-XD @–,XpäD x´ªÊÛû}ÝZ/æä—éw d~ïÉ Ûf•Tn˜¦ Õß_OÌ×.åÍéÕKtTCŸabÉá¾¶þª‡;u…:@#€};ÔÿÁämº™=Ìöž‡ÞßOY<Üžâe#ÆÎað˜cÞ€²•h—mŸ³šh[6šôd®Z#÷ãi!²9ù[ÕUU%'$xpYïoRVí~? Ñ£úLÈ£#Q0I‰’ª°«>ïÔ*î¥ÂW¤ ¦åÖ(’å.rSŽ]À EC5m¹Ðlà 0€,¤ûj_èî¾òÖ—c7Äñö]z š ™Ð4Ç_‰—Éäò?,­ßç´øî5fZŸ.ÒÓš‚C_l¤,L5¬“„€ÇöÚIòѶÁþ>ß7I%¸Þrxð@…†f?ýìqÃD«õ>«U Áñ~‹ ¥ããa{‰•°àú-3ÞëÍPÁˆÔ†F>uî|7£+ÔÚ4éÓ§8páÉӺ'¼co…_Ô=¤´ñÿw›§sf§ 7«kl± ˆlFöC ϑʲÆkc/Ñx/ Ÿ;Y:er0*9;bŸ¬¿Sá¬I¥™¿D¨”Ðiâéõµµµµ³Ï<óÖáø½mn“Ùë¼o‰ænúß'’vÑ(J„lCbÞÂ؉Êw'™×l²¾*Ñç·K5±©ìð¨¹QV^Î!vM ë .88zþlØ`ˆ*PH E“““M4ÓMœt„š‹GáBÉóX\\ØŽcÓ.=ˆIèõí´4v»1µLcL`ß[ȪC/PÞ’@à@DhÑ·£LtéÓ§R$pH‘ÄúÇ"+l¯Á˜.LBpÎÌ÷²Ž?yƆÒ?ê¤gëkNô:Ý3¯ZÑ‹|ÚþÝ…ç›ÚzƳ T©R¤äqÇmmÖ¶·8hó‡aÅ©Ê\ÅàÍ]®“dã|´ Ûm¶ÛsGÛa‚ò5Ö‡yЕE -ît_7g,®ZYŽßFW}À’bÆ!"²²³y¼Ï<óÏyºá÷›>$Û{®•ßsÿáãëµõ_—ŒUUUp ¢#Üè¶Æ= Šx^|÷Üë¦Oôá$n®X=®sÏbÅÝæCÚHß@\\\Ó{ˆÄj”Ÿ²ð4 U´LC§Ç2§„õvík·–¤Ñ¯ÕêM¾µFù¥ÓµsìøÏ8 ¹¹J^ÁÛÐYŠ£†ìa@y%é¸ì®Éè®ä jhƒþ¹‚ ýI»Œò€’w*fµÎsÞtìÉ{D,øqÛ}ަJëÒÐá’sìú+èyBAF*e'åæyžèM¢±bQK„ ±çÈÀf¨B62áÒ,ÍDÖðkg/¦Ÿñ*w£'ðta"Ó{_4X½¹„<º˜t .uè€-÷aSs‚ˆtZz?ŠgtT‚„¬ƒÿ¯Lºß™Šó¨jºi~a¢ƒ,8dâ_èæç« ‰~¿É¡ Ìð™ö4Úm6ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM4ÓM²1‰¦ši¦ši¦ši¦’ši¦ši¦ši¦ši¦ši¢a 0€>úºüæCÖSñ¤Neœm‚V͈UmÞâß«ÅëdÖ|²YA1C¤·—õ"U¦­ÂøõëCPóÖ\›wlKn·½„›+פW…E–æÃž†’Ûʦpf•™« ÷ôZŠ˜»ËÁ½ ¯š÷¶ ²ô¬ÇzHÿa®vØÑs{Njl> ÚSò¥öwÈ|*§Û­és SR‡·ùÉ£¿ŒÜê µ÷ó W¸‰pâô÷š‡n]G‘ów Ë›6]¿ùi}| ×nR¡ ÀG¶ïXì,˜áÜ„’¯ÌÔ8ÖÅPÿõ‚Ýÿ²;©ßRÜø]¥¶”ÍïBoXõ_|9%éQçF&÷Ï®ˆœ¯.`àøà)Ðz0 |Î+ï]îWuh‚éCæÅzXTí°%‚ZAìø7«ÉŽÐ5©mÞ®­6•¿$(—Èbwï¾ø]ÆZ+ª@µÁ%ç~Ë,<Ø"Aôþ­[Ž;{°ÓHý«ÈL‚ëðäÂWM..i{åÝçl¡¿Ê{£Ö0>3Ó$FëWªÀJ~ðscå9Ç#1Õ}~ž–¤ðœÜ%ª`Q/ Ðw¥Ö£Õ Jî#ï8Q‚ý]ÂðãH*¨b†pœûIYdª•kž2pääP$>€ÅJðèñ Už¤üI‰b>úAõ_‹>¥íÔÏïîmdpD¹Ïªæ´mšîõë÷°µ¢è¸:e.¨g|*ãg\;ëè7ý–‰d’£ÞŸS-L:ÒÇÓ{ÒâXáQD—(âèY®×ú·îvÈj´×Fku>éËI/ ÝS=ã·©ñòbT×ÖÐ$£/Údg›þ'91µ;¥T¥÷˜Íˆ¢gS8†9ATOœòVFÁ;K'Qø<Áx‹¦YâÂÄ4×éïrýðZ×0.ëÅà+ºæé•€¸ñ tØDC_;ö2ÜG=´eåüíÖt–^•i,yTöÂÀ<û;bÓ?{¿ÆÛQE‰è½OÃó …Ñýœ¿jq@X' „æÕÚÿ$.‡‹ÕcÐüý©$ýⓘ'I‘Ø+?Øz~žu-¾G߯¿?+¤XT(ÎMaô¶G£w_†“>÷—Œÿò8ïc̬&64j "aB&âŒP#ˆ°€ "ù†Uk?^_ü ª}­#Snð€ •ºÛtÍX `{yR-2$ËŒÁø.°r·&"ê¹- ¯¾ÌMAP@F"5 û“dë1[#š¥ZÄa9†äó'ð„’ÞÖ‚¡žÙo¢Ã\t]šÍõ·㨹¸®†‚0Á3‘XÂvëöÒž¥»èŽñ·ö2û6¼®¨×&xgȈ€€ªÚIŒFòZœuXG½ì°H'E#Øôïo[…ï~Ï%p‹Ç7 §'¢ª-ú=_)öá(ºg¡ð«²ªêÆ7íYX_HÏg!œ˜#èñè…ŸïÐüR'œYЀ5ôR˜_^‚ Æ®&+@‰nÆ\}W'¥Ïõv//‡ðf]XÛ„O˜ÓhþL‡æç¹nÞÄý¦fîEhÅžhe $p*€${b–8¸’Î^£×$ù©ùË^Dº½ß ÞØ}䮼ö¶ŸõÉAË#F­üWj’î Ô³9Æ‘µk¹Øbñ:8e»£ç)9®,Èå³E‘l?Wqø!Þ[f?¥_áÇ`yƒ¼*T«Ú»š'`¶}´³f'ú¿ÑÕ¤É_Åùco-4óegÑ`˜ö…X}wÛZqƒ¯¯î}ˆ Q —®yê±´å—"°' A.ÿ~eÄZ$\s¡½Íó{H;Û¯>šÌ*Œ·ýœ°þ 'î·Z¬!b„—ÅIéˆÆ~m‘‚æt$ˆ¡ ìL޾ֵ<£ìàs¯(_ÁšèLWs=Ú‘Õ ½}ì¶KërU×þ/.åðeë@g9$‡AQ‡¹rWfwèFÖ‚Oáy¾óûO™,ÈV𑚣$Hàøz£ †àÿÕ|À"+‰ „‘‡Ë¤©Œ1áÉ1tS:¼u:جîDØûº w)n¤+¾5UkÔŸ†`"7ø>TëÝo„@?ç´{hèK„ Ȫˆ ¡B…͇)"Mûò©J uhd&hD¹K]wKe£¤‰Ní´¤}Š™w1î‹—×G"a8f˜rìõZ:gWV¶Ùú]‡Ëþ1¼.}Ø8sŸþg!j¬žáF«JúÙ“°Â}ÈH;Ž^ °žÒU@ä4"è,e¨DN€¢Í6ö«£ï]ù}ü×KÚN¥{ÓžGQG¡½åÒJå¥^ï7Z‰CLjÜ‹ ’³Öàlº1Ø 2=½€l“á”Ð/R”¹{Y¶M·e­ôJü«ê4ªÑjˆ©úi5ß  MAI 9ÆuÎ_~ XÀ,¼<í÷l—ÀÁ‚$AáZ“/6\Ù’¬~ñ³Ÿ67‰ÎFå£õ‘‡w—íüg W—°X±o¥ª|ìÆ¯f¥ßŸàfÿ¶¸?köY'/)Ü0Yáѧá|'ö˜m3è®aÍsÔõ÷Ûó¸#Ú8»½¾ÆX#ó“á•Òâ”u¤ôüЇV1ÅÚ^ßçÀ“Çn9'do­Ctr†]Ô~)âígy¸pà÷—òCÈTfŠóˆ* NªP¡ ч½ÅiQ0ýDzØIÖoÜ›‹ù®D|Myp÷t#"ÕÓ–i•µ‹´P@ÈQ?E?¨^ãA¸éc`ñrÈÀüðCzm[ “ÉýwÏÍYÃÙt¸ËTǺ"1â¦o“ÉqÊo¤Î˜é9ð?B)õËD[ZÞb·Ë˹RÞqÜÞO{SoU§ ÿÁNÿ;Ζ5È‚8è~ºò.òËcn¸Õß ¯8[Š¿Ôéw_]ç1*å°vžÞfÖÕÅï{ ,µ¸E62˜Æ­A4Ð7ñûZT·S¹±"~jÒŸùßòli:BÀk燦“±ã¢žýÚŽK—*àÚûi „;ÁL—«IàÏgÞŽ/!Ô"ÍM}(ß¾»=`eg‡k‹”VqéôÖkm²ŒŸ/ÜuFª”^^îAÞ3Q¦}©ñðéÎáDÜgûrmß·u3ƒh/b¯O¨ ɪÌÃjZSØNk¾‘Àù!¹h÷S¤E‹LAœ­ü„eu½ó«ðBèEâŒ/¬m†NÏ1Qñ­hY=5á ;þŒ²ŽöP×›jHF&Ãcb•“Þæ·7]çºÍ)ÓTY4¾y H<½S(À—8öùsHµéѯj\ßVI©–Élp‹\a@LËÇV)Ò‰Ø%X¾ꡊá/BÒ«*ð·Ñ™…ÌŠnÈ8‘æz>ÓOÏ -vˆ²ÙL®¡gåp]àñª~’„:²ÿ•§«Ö(æmQê²áì§÷.u«ÛZgªØÐ~èéÞC—ìÝi|¶ÃCò©UÇ÷îåJ—i5¹Ý#Æ8È$úm,sµà@A(0,Áf!/†°X_ÿÝ©ýB¹Á&“«½Ÿ˜(Q´õƒ¶G4'tJB¶‚ÎîsFÖÇ»ÉõhkŸZ“¡ˆfóǪfuXº–OnÐÝ8Ëðù¢ªc¨ ‘ŒÍNª/æ,ã&9EåÎt.K¾¿‹Ð$£oÜ–Èk\k5`ŠPî3‘‡{½®Ùæù¸+ÿ¢ðrø=†azTX*§3®«^YUí†Ìª'îÒ·çŒATéµs'VÐ_V}eBcWŸìl}Z~—‚–{½=š«n»/‡·eè§ÑbÎèÛ“‘ uÍwN%÷õçôöv…-òMšñ ¥Ë“§*›J`‚•Âw¿è‘ÃhëÍ-Ƙ=u{™I÷B¬Z4¢çR\̺ÞúëÙ´ÛHÂI)nÞ’³¥»¸! í+}9½Ò÷ØzZží#⇮¿­s ?Ü”'T;ŠiÉ+‚›¤9ÓRŠhѵ6ß$Ÿgr[ ɪ¤ÇíêÀÜŒÀŸ?{Epƒá¥‹Ä“ë–tÀ´©mKØ÷bQíMzOa3-Ylõ©J°‚¤«iZ$毢÷UÿÇwŠº/•ƒò¨¶"‚#³/UŃ‘Y ä9íÂæÉÔrýjØ^O£QÙüæâZHZ Fî9TóùLq\ïAƒz1máóùùËÓœŠ0·ÒZâýB1ù‘´R9Ž¢<Õ´7EL3ÇIŠh§Ns ®Ôü;Œ•ÃWÆóPÍvŒ!PJ¤sÌ® |̳uÛ‡áÁ’³ ¹úAï?@£Úìi2p‘¿¢ñÈ9|ׇ,-~ ±â£‹zØÖݼ²|ÈîÜ<ÓHš×¨6ãÑ[¥Qþ¼.É›¼ý• ½7¤]½wW\v%#Šqìûêy¦ýµ]TÅC! 8ÝÍÆóÄp¾ )>Š9P‹þ3Ô8…øwÝ3„¶;&Þ݃]7®”Ƥ[HlºëÓÀYfC÷ÿQRİz:8|îšëzφÞà¹ö¢®ŒÎù5ùêƒÒ\|Â1óW²ñ‹ÅOJ¬‰+©óÆäXa¿]rí™FyŽ:bË¿úüúûr †ó€-)hfvWvUtÇ›½u;Õ•f3¯Ïâ"™)öˆÆOlh§ÝVKŽÿc²|ï³0æÅÊÃHn“¶‘“Ì,­f],BŠ ñÅ!=fv›û›² &˜ãæsl-4}.™Y ðJŸV‚ѧýDšÝ ½J{RÇz“ùIßwéESû 1Ç<2!݇°i"Xu„0f&¬§Àï(°æI„Š@}c¼$ñ½¤vz ÷¥5…¸Çyb\LÒÃP|èt,:Ü¿Oæ ßò SÆŽªÖJ•CŽM=„&…tœž¦_ÏØ`U¸díf}T’ÜèÝbh[øò*ëÔ½™‡œ¦.˜1q¶âFŒ¨'³›¦ýcvsí96þ$5o„2+Ñ"¶´âÅüQX×U=v1c;ãü-qÆò#Ê÷j|ü>!¶ I/GÁ¾F˜?NŒÛt½øä#8sµÊЀ€Óe0u\ÌC`Èm0_4út=f3sa¨üj ÉíŽrhƒIã[nëñÙ8øXt…1ONÒj7oúåjDÏ –åKÐÉD®s”òÜ_Ö>zìɧ´ÿ!òú„êÐÐ+”¢FTdê £|vÅÅžo‚a^ÈÝ^cÝxã>-Ó¾vø‚ënœÞö-ÔÖu¹º¯„ìê3dÿ|:Ûí%D=ÂêJÚ°Qéa·1×ýOg™aTá÷ðΞá –‰ß+Š0¿8”†’áúÇéXƒI W c(»! U KY ¢Q(s4\nlžÆ\ý‡iËucšì )b!ógzæûüCÌÝôÓ0óI –RËî¯ßµ,ÿ§…+ªûzC70¬¡_¨…êë •¯¼Áýb÷gP_¢ ëº-­÷®óßI´¶d .K_mùÚBø –sïN6ôÞ†ª†a¾)kâ§“òl’Á>3Ђÿ›§W„w~äEë@^& å0Màgâ4;U›wPbos¡(ö‡^Þå“ÁË×*zû2ÓpÒåÓ?Ì-³¾‰àJśȳIVf…‰‡·>-$÷cm!’Š×m-`³³Qæ· Í qÆâ; þ™¤”£ª«;%Ãí û!¨.ñc5_p­” Q*þ½1Î={Ÿ›Ôåû 3–XÒp›…uÍûÖ\µud×MgãYT$|*O›îU¢"2~d›I"1®¿Æ¾—yæq"‚`Öð½î 2OEð‚áPâàÚ·ÚËÛîsö9 ûC 'Â¥w½ÍœÇõõÞ=b¡HrTÒÔç¡VëóA è@Z»uձȶ÷Õ2öƒ@‹‡xÍ㨵¶hvÅÔÅnbuÇ „WÍÎÊŸ Ö¥õ$R‰32A²¾8hÖ„ãe‚W’#Ðkí¢®óÛÙ“"†J”À%  qeg² n¯Ïxýáo­ÁÞ3{6û(4+„C’ÚùûŸ Œ'¼kOí0ûQ_® ‰}g…Ï:/ŠØï×õÙŽú´ÖÎG½“ÁJè‚rƒ©9yc±9Ç>Ê/Åf\nY~½3‘ÕÔ‡±ÎOÚòâñjå™gP掖vò}rÚ§:,¢nr%¼¹^fGz$ó;”ËK¾']…* m¤g®õ4 Îç)x7góöüœ FšûŽÐ’Ó˜¨‰ß¼¡šÉvn(1È”#Õë6ÈÒƒ·Ú±>e©âC%T¯µ)vW¹¬ûÆ_|äg¹*ÄàUxU£V$0XˬJxnoö6 ]3+¼ää0°ÚJZq¼½f«>ÎbâçzÏëL´T¬• ßê—Š8tüe»n —Ü6káC°äUíßÇ|¶m“”±Í0ßµ³W(U*ŠN…™³é†·"è²$Á]×¹@þ%Ôw»ay–×»"t² §õ ®è—w~;î嬆Õ߆âÉìçI´µÈ¿CÖQ¬´C쳚¸1šÀçö‡åŒëe6ªó¸ç°Ø3(7Ã(jùxèM&—Vô6jýwp1Šê%HÀçyéÊF,"MC±WÔöµI-²¹CÀ++Áøµo7?~Í£¯‹^„ž[Êó4/„7©'K#Ì-“ªYÕ¸gt3-JœÂáÑÒ*ô=÷_õž~·_òm†T²û5û]¾i—íŠB·­0›Êz¤‘Æ«š(:nExõG~|®‰¸û±6›‘wD (¾Sí*í¼'=ÿ¤W¾Ð‰£¨%ad|Vð¢Ô:ší)øE¦š›s£Ó‡iì.rPR¹B" Vq™pa2Z_‹ú\­£¯m×1î(w‡Å}-H4ö~׳"¤‘ðT­ëv ž2`÷Ò¾ÆÿW ?¥ެΠ*ÝÒj–_n>mjÃm{ŦúÙèEr¼Ø'¼/i]üsÿ”5²ªÐ,¼&RƒòölÞ ÊúÔSد#öæišRÔ¢ßF£cdy¡Vtxޏ÷,„BÁh5WÁ?ÈãƒlG¾êh5øÈ?BeªŽ³ìèߌÀÜ;S<©«ÙžžYå¡ µÄÉ/´ÜruO{jßùõRyia!ó»5S¡¢Z•HEDýjªPDäWÓ¾õÓÎ#FR`PÕÓ¶8½P®Ä—J«f‹“ù‚ðzŒ·Í/ÿk gX½:«ðÚ(séë©´ŠøàÌ,‚Ñ(…â`ZRõ&lƒj7÷\t0Ì­&õî9Iàgôý'ÙµkŽ@Ë(ÊÎ¥*Q!|ú{ÃÚQ\~XB&}=c%±ßÕa¦áWÛEiÉ‹•ú0¡ÄÍO:çZ(e¼ÈF†ùg¹QJ¹þyl_t5oß½ÆÑ(}×w3}ÇÇžÛX†Þ¦ŽKš‰’ooX³Ö½x–M•Ò{µ{TÍ&ý¶ÃÊ».—7*[{“á¦*Á˜¦Ð5º…{roèj‚ †a®ÌMDñ¢Þ1î£S¡ƒMbü57—>Nw~gØÝ->½ë™Yl¸é‰0ÞE Yq¡ »5VŸUl›O5ä`Œlû´ú?SîFåûO:°;Ã÷°Œ`—U…  ÞÐZ¢4‰èúêü=Ï‘UÒMuñ%1¬˜ø+桦Ǻ[UcŒ¾XKGÝóXM×b§¹¾ÿ¸ó¸°´ÁH¾øVtȨ÷šë=/]¤ ÓÓ½úe íwJÓlÏ1QÿÆ~g½N0)Ö%”^™çÁ¸ª="G™oqÍ%¥™OÔ[ÃCD ——¾×A$ªŒ”Šßî´þXZâÍ}þR:ŠN Á}´F^»?>©aã>‘h»¬Ý+´ñÎŽ3>ÉŠòë€ =<èÕ–hJŸ:M.;ŽÒw%ßÝl0ï0Ï<u6õ²‘_‡Æ7¯=ˆ‰ø:ÁmÃgÜ:ó!Ü û3ù’ú,£©' ƨXš°#űB…åi¯m<0üjŸjÁ7„ŠJ$jRf¤«¢.+Õ«·GNígƒÔrÄÂBÆ[îÁ·Ý«; ¥•Áy<º¯Ç8ÞÀQOØÌD…²þû¶:8çâTZŽ6WžÕe€äE÷[oq :d"¸Õ±("„ªí8Ôä´öF»|ñØ€:Ã1CçdjG&à{D ºw¿·&q‡a0ÄŠMhnô@„ !x»!Ë9ɧëððˆÛ+±U·´Úß¹´ cÎÄ·Æ— :¼þz%ugèÖ‚+Lp9<ü÷ãžúµ4¸hvìÏrªæØrñÁÎÏw™ô,Ó¯W)¶³ºà&Ö7™ZT÷Üaü1i ñ2-m³¦×à[VLn¯¿¶9¥­¥Ü ÷Èðí‹ûp~ÓP+rÛ\¬9%.ûx+{îüþp×_1Ý:~Ú0°,%_ðÛÙ"èëÑÀ ü%ϹiѨӤSö¿8ï}½îk¥OòuÔn¯D†%ôKÑ[¯´ŒRÞͬž,¸úêW_2³K:s '³±ÕBF‰Ú‰ ÌÈ—¦F%J—ÆXêSr0ùÝ¿ŠŸ ?샙áåäÜz6gZ²¢4?Òk%»(„ÀüGqÄxÇkìÙ›´—ÓEþODRTï—ûý èKŒšä€pzCÚ¤gaÇbaÜÍ…Qd£^æùžDg}‚?R«p²{˜x迱¬´ë W<Ñ|‚!‘¼‡HÍÌc½iÜJ̃٣d0ÀHYijËÂf¯¸O¿ÀœWÏîJXmY|µØ‹$õ|N§¿jƒ”~º¤X‘›b Bîµ­¾£¸!ê¨J¨‰Ömêp›[^ˆPm|®µêÐ$Þ²!¤ÎPNÌ7«÷``Oä6¤“NlÀÚšk§ŠWMûYï¡ZLÊš;½¾ËåÎHfê9×nRµ.œM%@¶œà¾Æ’l³ ѧPa5¹˱[–ïój*tcüªK tˆ˜ô^#ìä$þÊ¦Õø#2YÄ~ã\ét¾y™Áé¢KcòJÕèв`Ü~°1 åØä~.—‰ySDgê@‰Á®€÷¿s1 l<(óîD£d„Ê_R=ÅŸIú[ë†MH—iBOì1õŠ3X܃‡š{‰¬eþ½ÓˆÿfL¹GúØj S`SRífë¢(ê– DYк˹¦æÊÏàÍàeû7{ícDƒ"JžúL;âywïÂ×ýu3¨{㿟³f‡­ÌŽöAckÕ6²Z…ÝnÒ Ô…Ä˜mò›¼ypÀdžU›'å¡}8l5ž|IndzY ú™­²lêf?O½Ü£9øLÔ%>>ƒËýA‘·mp …d?qh¸îІ“X[«Š¦yn$ìSç/ .ÒáÂÍq!懇<ëR´r.ÐÅ]9¬'zd}ئ ë‹\­Géñ •éŠÛ–0@@¨Þ—z-·©å:Ñç<'yNñ4û¸¬|w"«=ê cî^ÂogÛ°Ò°ÌB§YäzªûŠ˜Êqí.õÓË<¬„û„©Ðf‡{… W*áfHj¥œºrêoƒ·½Õ­k¼$²oöcÁq7ñ¬[¨ÜÿS³Œ&à‡8i6ÚêÅC¦Ýi‡çQÇKò㬓JŸÈ½I¼¼Dtðs$ýrÌ—=óð¢x9Û±%hâá §ój½Ñ(ŒérI¦o]¤W&?Èï§Ùz¢…IŽ){ÔÛIu»ŸQqŸê"<ž¡ËÙ±pÒ†ßFǶl(»€A¼.°QeðU\=.°7&U[¿HÚï…õepîKké×vUeI§8³ó;ö1.ª´úÁŠd8š•ÿZž×Âàãh£U_)ÍÑ<ÀF÷” ¬N CVíÚš¸°8|–Û´V,ÎǼ¦×rµ½³£‹¥|–U£‘ȉHxZKœãŠ?ðÖDÇ è¹—SÃlÒC„Þëj¹êK<±(@7¢¾wήxŒgAV­üGó㡎*‡°º/\Œ¯mܧ [5{T¢ùWë·2éû«ãØÒTË–Íg¹§·OtÔ}?…cÝ̇±™÷yüÆ]Oå÷œÏ"Á$:V!BX(³Ð•uíϧÊþÕ߯tsm’™÷Û÷ZX¦µœÌ{oÔ¶Á÷¬§ä…Ýõ_^Cë}­ù²âëÎIô&L'i´Ødii›wãËTÝLx}p¬ÓtC ýlÈI£õºÂW¯&¦ÛÑùË0ìJÙÀ–ÆûÜiôÑ£Ñ#Œ 9Fpúèö(ï3}ÒÒvsåñºÅe(ßAʼnrˆ'ÿÚÚK!à€keˆy«b;é&#¥ÍÊUÖæ~ž¸ô9XýýŒœÛ„`ª¢ˆBB5­$½.¦Z´“œÛÐaʶšÖõüL”éõbîH?Bfû%Ug©‡XH9ˆ€äD‘D¤Q Q Q!Q?üÅd™Mg3ù8Àú¡ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€lü<÷¸¾û½ÛîõÇ|÷͵Þï»ËìÄ‹qÛ“6nöÜj½ï½.û·¾ûéß,ß3ßrÚ¤ënݾÝÞîïq§½n=«½Ç½+žíÏovÖݼ混¾û¸ETô §¥<˜Ði©¦51̦FO@ŒM)í1i¡6AOÔЛLŒ š#Lš0#M5=©‰¡¦„054S#L“ÚŒ 4£DzA T"ªa6$iLL#ÐM= š6šÕŒ@’‚²±§€6 í©i¯cÝŸ>"9–Ü À`¬š@ÚbŃp4†Â@ÐØ&ÄÆ!6 BÈhÀn8+¤çYJ0:L¬×n:¼–j9Qâïª=Æ[¡ÁD–É‹³aŒ`¦>67éLrs/I‡©ópµQ 'àûžÝbãY3?àâüLvøBUC'F'K+Wøt_oGù¯ò=lØŽÞ~ =…õNéQþ'÷.ÿ¸s&½éaÌh&_ñíýR+ÉÁq×G§j´·ÏÑ»øšô±¾ÇžeØ 0 8Eš†…7Vêu¾\ÔG+à"¨è;Ä ˜h³ÈLXãeU¦`D(#²o·ŠüVùH·¹a«„" ]D>íܯ4?P_“8 kæ±w깓ډº“:d»í¨Da†0PÆÕ¾O+[<èäËnl#m®[RTî*K†ôïð;4…Ìk(¶|  O è më¨îBV€ÈÐf ºÍ!Rç‹öÇÈ'¬0ÅÜÿ”ÖóÆðBù¸ §ÇæÆ¦·;³ŒF=*¢þ½céZÜ,03Uà‰ƒÎm¾íÕ§¡‡ÀðýkÙBúÃg'´â\ßFßòôuqGþ[Á|º#¯¯Ëæá7ã[«’.¤—g‰tÄ j€BœVSV_*®¸®®ê»Lïì¸*3ŠÓ½á×z:Å¿ƒdL){µ7ÿ ®¥Yoª$’ã/C²ƒßo6àq R[9¡dø„ñ]•ólÁ²X€mH´+£ªe…ÏçZ¡ëm =ý£ÆšEµåIGâÚ9jªˆ1GWö9Ê»ƒýªÊÁjIôvت}Ÿ.êPx8Õì3DwÔ%ÀX/_K&iêç €=uL¡ÙôQ4ÎI±*‹bÔæ‘ S³'*8­ê0 Û¿bîZ —tп£5 ¢¡˜†l½g¾a(Òɱ~–ÙÏhù ¿g¼Ò–ÉV±Jo4kæ(}#âéÕ  âüüN®Cz-†`è¹*‘ÑR"!Dw‘» ëPœË&ÓÝ./{瓎yð÷û±öy4i9äÌÆ¥Y•°Êòâ„ÔÕÙÚCá¡¤Ì˜à‹©Q G~®œT^ùBŸ°6;%1Ý%°ô\:ýBŒ9´Ä)ŒÃ7ZS­ýÞ,¾» šy‡],Ç9†Ù?öJDf—ôBûðœ÷ŒJ§<5Å…*04Ù£ž¼Ü#q\ /swŸ!UéݶÇð}ÍgQ×Ó©†ÄÿÓ@ÅÏ¥:3gÚÎ Z¤Æ;;'åª}â T"ŽliغåÛNfòI›5’ú y¬ã4ý«wÊ'6ÙHÛçZo‡åíÚw?InÁ\…zî"PáòT*8Ö|w×9ÅEÆ¡¤°P+WHP!€Í=­$´+p³ª-Ð È‚æxü§Ïn¾s²»CUðyn.¦UE[<Þ(Üj” P RЙ¯/1ªó»X}¿][+±˜5ôó%Ÿ…wk†³µès÷±ªô+¼úc‹mǼ}åUG${L.ºf71ë;N€¤7’ËzÕÙµÚK¹™– ”šgMð|ÍÚ ÷Iº¹çUÑîTóåœ=¼[VÜ.ÔÌʉžæûSŠ–Ä_·Cmò<°ð©¬½ï”k+'ödÔÈŠèU@ËéW0Ó̼¿Òª"ÔÛB9&HÀ;ùCé+DyÎêïÏ_,£+÷’LÃoéÔø²•Uoœ9aWÝ¢xr ÊÈ]¥?´ÿ!ãÐÚunŠ~ Ѿؔ^VRÌ‘]éñ= á# cË3O–ö ý‘u?…½ÞÓ¤—cx¥fœ7ºøå<¦qÉ+úÞ±b»´L*ÿ%X53Û6𯿋Ñä}CoÃ;k£zéãõ>8?›a,YgrêzIÉó¨Ô~w5CB–ô¼¢y¾,ˆ°3Z YØ©ek&y¾†uî’É›\33žÚÇ騭)A÷cøÏ3¹ Poœ¤X(¾-_u2MK¥eÛQtÉmêÍMVõ¢prËE×’ûó  ^¶d{Çc$F•ÜÁ#ǾcƒÆþ¹ˆÐ]Šÿ6¦Ø)+Ð/<ôµâýÆfqtTEU¦a¢ú+jsµÕjŸo±ÚPB lq)† hu-Ü®B—"űiV—Rt¡œu~Ž(мP™ì_˜‰¯NÌ>c\F/´Ìö²Qñ”ÜÑ'jÇ+Ùb|@D(Ó_iØnïuMÝ1†ügìüß bº d8÷«€ó¦E ú*ãü'ª)¶ž ¯òie2~Øg‚`>"è ȳ%:ÍâÀ­_,é}Þîœq mb"°uèwV>¥ëwQÛµic‚ýŽ"#A­&]úÝ΃ÂÒ4Íá0æ…t?Òí:P*Sì>óž“{š>fÑ`mËh-0Ìœ±•ì½À›eÙ>ü¨($ÝB™o¤ÈÖ<³Çʬ'FD²RLÅãŽï{zèõSŽcv*¶Š~Þ(Ì^åœÆ HŠCtg<„£¬âôÂ>ûrOŠ©w‚¸á1J“òÔWËðlÀÆy: ;.-¹Û¤»ÄD!Z$üX›ž‘ô±sô ¿%Pæ ÊSJ<òCËñgšU%ŸôŬ苊i¹ xþD²:}…‹ÑŒÌ©\“÷Sý-e Ô̧GÖ||~ýu¼pšr§º{4Tè_v¯F £(}¢o¥@G"Ù¿,¸B¥þÈùš¨,wv¡»+ï]3ÖKÉ×K¾Æp!0¬ï „ Æðùy“L:M§õd©HªBú!¸-$v±ö¡ öJ1_hÖ%·Ì¶ÌâMì3…›ä)sä"#z¨ËdµŒÙl‘gˆ‘^îgL­Y9AøKµk½Ñ]òüB)c!>êo܇>!õ†j†¨%ßÔþÝZ÷á0v0Â,òÅŇÞÚ¤UqŽ­'ÙcçÌSª’{åt.<£žû­:/µ@÷ûÄŸ y¯²ÁüˆîÇý7ÄÛ7ôÚÒLdصzWøfw|ÐÓNi²í-˜)t£Ñòj< *•ïèS Ü*îë ¦n^ºfòˆa¼6íØ®:vrUL߯Àέi^ÂQÀ]b¯1³”ÇùŸSjân=¡“Ð,¿wJ½]×"lâùQ/'€Þ3£³ŽÛ |f\ÒA/ú¡’G÷óV›‡–Ru¼À>S|»]Ÿ³)ñÓû6Û4€t†¦Óóß–ºª'°Qïxyq¥WôKó 4{Zïq,*æ”ÃïÅoéÞ»ë‹O‚p¸-;TÕçá>²œ³¨5ö²øE¥Ë KÛðªœoèÅêË’4þ%¥»QòËкÀ…О¾Ä<ùïà%—ð;Ň#mÛV µ#™(’ ;qd1É* Òéï¤!Ü%Sw.œ5'}«·ؼ±«sêñ] ”04VëüjØfµÀÿk…Ý) /ÊW¦B5ÆZNMAf«³2F8ÿåÁ“x†¤¢?CØbȼVÍ•â™Z ÅOŸ`…篢vCú pn ½#à -o?‰Ä‚‹èÂ9œ—(ÃvEJ •ðX·dWkúÜúÔçÀ³Eý:u”rõS$hÒrý!qBǵÎl%±'=Êæ’߸á%…œà^f AP-£[¨Z¨§5qfÀ#Ä;Oíñ«(9³î¾Or\C÷‡G¯£™OwD6Š3ò(üž¿ºFäç;©nv3pAP¦{°Ké2ç…µ‰ãï/G“ÎáQ˜¯Æº+mEia,Dú”V\,ã/ô˜24G;2tRYðgÑ*’3Ë#¸ÍXì“ý<ßOPÖ!³ÙáK¿Uƒ=^j´®ïÃU¼*Æ„yâgpÞŸfR´³lç¹òwWMÔ‚ädÜ8:¼'gUÂ7QZIg˜3Ñ<Ô‡‹å×ùvŸ:¿õ•ÃïöÎõò4…Vö¦`ïÝL翳.Õßz#U»¶ÞÑ)²äz®?x(¦ÃkÞó¤™Úa¡8và áuKð††JYò:}¬jlNxŸÑŸ½ö.âz—&xàÓQ(Íæg..’œ³ÌW«e³ÌÊÖ±œËS¡%Ë=÷¿Ô°:u&Ebc-¿µ×òõ0œ¤pZïð•3B©5[÷Õ³âä0]9¯Ô²vâŽ@®æúµ.gœ¡—¤<(¤þH+dñæoWM/ Z…yâ è…åÅ º¬>–OøyÆO’ëV¹¨ÛnâI0bGþòu%z2ÖéúÓ>ätÉ®4½˜.•DwR³ê†þYcǽ›©¥ü4­l¢Sp ‚á¢ûJÅôyuý„ŠO8¤?±Ú\u_^‡òÜgh˜å¢ùõ½~õuþ‚øØMUpEß3Ë\5pûðÒæ¤Ô£)Ñ»ÿ»ÆÉ´žØÛôJ3eAÕ B§éalïøêž ˜®Ž¹KwC<Œê¡eíL\X´¾ºë òÞØ7¨5Gè'ɳ,`¨™>*ùî¿JXPÞYôu»mçø¸3szN6"ê¿ÊårôÈuoÉ]m…Œ’K¸Ò鵦⧣×þèÞø||`Zé »¿ú¡™"üJêîòÔýo‡o«¡);c²Â×rº“¾­/ßÏoü{.ãàéz|Lq—5oöÖ¬0ÂÙü\žæ—‘]“®88 I,DŸwÎù–ùܶв÷IÃGaÇÇj4&£ñ¯.vý7Ô=^Ug’.°irC5‚¥€5—Ï‹·þî;Þi+ÜZzK OC2+€QœK);ç¹ š+ÂqV„ÿNT(Ég)知ëáÑòÉ)â9—h¨˜2S £zú"¹0HOïœûjÝÐÛaÖFw€5aûö^LÓhq†" †[®²vþ¯E²Â]Ëâ« ^%n#T¬úž8S¸þðÔÇã÷_Û›³ÌYÑNM3YPõ­Ëþ£Ð„ä%iB÷—y9†Ñ?ÍlÛypa„c,O”nK}ÑÒ*Ö÷Kȉiô ¨I!—y9¬ âäÎwë`ýhîqé*Þ÷ZÀ`z ‡3œ¾‘…lìàVn«úW|WiSt–•]pû€2tƒm©ƒÁš©”2WÉ Ú…8ˆ¬áàvÌ PêøEJ8?cÁ˜ | Ô’ZVŠs¹­Þå?ë¼­‹{13Щ’üüZæŠA–`ÈÀ$"ºdèþûFËÓ©Ó} ]$vUÿ×6Gî_E­CÝßÛD€Šà8Låe§ `Dî]Ãó:|æ[ÇÜ#úQ‘Œû¬ˆÆÚj‹…Ø%õôM +0üQ{𾨠Hahú:J÷:£½â,°¶ ˜”¡<Ûº3‘¡Qgn\ëö† ‘p™›RƒS‰ØÌÙô›Ó2b85P#JÐÄ«í¡ QŒîh¯4ÿßëëïða(Ã(—ê£ö°”Þ’·1*ùôº'žg@¦ÕÿkÙ»Údˬÿ{âãóRÛJh¸ùª‰~e^úÃb$õ>L»FMõÓ3ú”ç/eVbðx`Íž²uü€žû¨¸Nð‡¢ŸuŸÍ5Çm>÷] O$dòáPÿïÂÄ$”>>ÍáΡ¶OsIz[˜póSD_ºCö3S×Ïp$…]:#|~µí±Ât‡¢Zý-? Ù<éP¦¤¢³/#üÆè÷˜¾E—ÿ­7”7»îf¦´ó~\!#°hŽŸ'ÓÐ^I ?´í3Ü*ãì‹ùËôd-bE1À lyàÌ¿ÆS—zßO7j–³‚_M3"}Ïj5dÅ.£ÿo-í6ØzÐ@8; :~Ûd¸nGè­“?@Ïç¹½+ž¶ŸÎÇ­¶áÂÃd[ÕözŒDøf –Ëb_ölíÝ$ð¥F±0«NÄ9ÍMÉn¯¼ÏÀÖÇOÓ_ŠççRFž¶-DûL·O;Gݼ¬\à\ãpòÉØ%؆¥yžˆ8ïØiíóYDÇÎaý øÀðì–º—µòzæ’“¼ªpøÀ7ÞnN×zéÑÒú ׈úMhWTôÀ°w)øµ´äeÕ ¨¼ÎgbZ׋¸(êëVn‘63/ãqŠa[ÉÉ—"v×IJ õ2õ0Zg!¡ÇC!Šr¦2x[BGÒÍ_éÌ• ˆÐõhìð2µ¨Ôÿ_\Õþ(žóvöhoÔžAË×àÄîúX{b"`÷)DžÎ—¥\åo<f,R¹yÕqsÄ]@½'CíÞÐØ­§ú8ešPQ°T¢fY]Ì~³"aY¥¶rZ¨÷Ï %í‚kÝx®§w ^jC\~ö[ gÙAœö+®¸‰Þ@eË­ò–,ûT õîےÍ\öM~–µMÈ2ãtU…Ýë??ºWâÝ;oŽ›K„âõ‹¿ìö\üwüAx7Ô)²=‹61½Á_§³mP79¹g4 ‰f5 ÇPÙA; @,•7“&Ä0yvñÕýÎL|úÕ{cŸKò»·)„åÏqß·3ûíã¥Ñád­óôË ë^âªX´÷ì@J‚t6Øð‡±A3y¥o¨Ä’«¯fMÙž‰Ø|QgÞ}þC÷ýuUùR!¯B`°ï2QòG±ÓgŸ D£OÖ‡ç`H7Êýs·ò3„AŠLdÏæßUÌ9Î3_ÔAsJ@•å[%ìÁýÜWOAê€%ëLÙgÆ(•ÖŽÙð~˜´’|î¶ÅÔýòåûæe†ýóúvf”jOïU{ÌûŽY̸f¶ŸCù¤‡aÜ[‹‡VÚyÁ÷j™f< èú ¾ío´Z¸‡ïâ§úóJèåCǦ2¼.˜”´Ö˸´E¶BÑ¿îP2W™œ©hóúæ\÷ 1’ž!7S†êùEhØJq¨üÓ„~ïѽ£wItjovw„ÙÎ…»´mFöóñ ÐÍÐ7d¢€…Ãõ¼“­¼èçðǹÃlÆOë”§àVyšú Þ¿cšpDŽ(ëz?3ïûw—-Ô= ,ÜÆ ûUvsnx†?”«¶÷½$Cu‚í¾-ƒc¼…»}'Õ³]8·.Œé+(&5Í›§&kD÷¹û-*ä–uYž÷§ašQ5<å(#Ç2tQ\²>Ö*KP\¥‹Ö~Yᬬ–æ¯×–X…:õràEf»ÅÂÉž»iGñ·&“»`ŠV‡÷× íâH ]މ^¶l¬ÚB1œœœ‰×8•ßEã½ÜÃsçj{›é…Ê.­·& G™ 4ÎErjìc=| ›ãV–/ v5±Un¬9ì£'Æñ¥—é¸Â±¿ï‚z³a6äSƒø`ÏhŽªwœé™f3e|çªäîcŸB¥ žÑÖÍ3³B‚Й(‰Ó„rßt2·œO„ZøâæÝŒâ¦‘»þšÆ¼7±~“K6,ë)xâw xÐoòhòl¹å¦:*PdQ÷Á.ðà]º‚¾ƒ‚–Õm)<¤¨H~ã·ÜÈ^ºÅ­åÅè«úȨÓ¶iƒâY»‘ÉÆë¨Jȉócû=¸Š Áîý›p ›ð»>+ëEëNÚÐr9VàœÿË›kâÃóž«¡Xgé–1p“BÀíÕã ÷\~)\¶˜gv7²Öu³ƒø®¯RöGv¹ÈSÞó?qs{/†ø†”ëŽxáßVg͸¸Ÿ˜úH?ºEGÈÐØùtzÓkˆ\u Û”ºj«ó·%’ðóùÚf€ÀÛH¤íÀ6ÍáñšÖNòß÷ƒgÕ¢/1U?Ö:Ê<”R‰¢i–™Ë¥OŽõÈÓ‹€›¹9é,ꊖò%/·µ«1mœÖãŽ/oú#V”Idœ™x36¾ÍA¡ýôþ,RÊ}ªÁBŸ†\úîÒ5Þ½‘y°Uã¦ØÃf‡í0Ñ3` F& ØÂE‘’­ÂºNKf„ùd|Ï!,™Ó'wâç¯Æ÷Rt¢«^±‡oß/õ‚æåàRFÁ±¥Œð>â†õ¢9RþÙÑ”ù?®Äi—.ç¦äÊ µ=:ÛÍÿ×So„…øO'k ¹U»i÷²tù÷’è ÆLâµpAëÕMѪy)Ë%Xh_ 1«`Úÿ®zº)œ¢Š<Ï›–5 ºÅµ™VT-(÷>Ô—‚ÓLD%€/4ñ&~žd{¼£¼˜«,æH:I<.ˇ8¸Ò+| Ýaçw –%³ÇðÔÌ"· æ £÷#^ãctjUÎZi´Ç;Ò¡Úr+ržjb¤ÏÉ}4ºE«¤€òl"ÕÇ'’•‚<°ò±¶ÄgYá…ÏÉòÎæ¹{ûùÑôÄÏ,ju]–ëcV'Mº‚‚¾õÅÔü$¡f§9ìÝ¢íX¼„L:ê}3 $r…&BpZ–¹Ægœ:Ê÷sT©!ONÂ)û*䜞Xg½Ð®Ù-ÇQωÑR#6æß5S(ZŠ OùRó=)9bƒ“´c—ÝåÇà—‚—zÉ/¬K§Íí¨YAአÃ`ó’“­;‰|Ƈ÷)jÑ… ’`öå¯?*w°bÒêßz™ØG}  ~‰~dV×ø·:kl8Åtn»"‘<Ùd×QÓžXËú5¸6•ˆúp… ̨|kþºê“ÏUYW¥÷.÷›]šŽK9cO`Šgâ"‘y÷¿î‘%O¯ÓãÂS Z‹ÅæNì >w5îD†æ¸PÃŒíô`q)vI±oçAcJ‘˜Èˆ<ÞÔ¹:õØwíÏ\†tÿîlš…FwH`ź˜.ÍGñ8{©oÎ0ÿ‰Xú‘Ge"ï$Á*kÈ_ÅmÈs„Ûè˜Ðœ œÙüŒho1ÚêÝâËÁÕzòÖµ;/_®ÌÒ¹L®~LÏ´ª¸þU©Ytc_ÛÊÉâyÖ×ß´ÙWÌŒ2CG1Ôñ$)%šè o¯xL8sIöåÝÿS éÈõ²‚F‘ÂsGP}|0 iã>š—š€ãb.å^dt‰]¹°+yŹ|[¹VbËÖëõ}¬ävúö·~ •X»× Ä)Mã©p¬ÊO€ÿ›"sF¯ÚÉ‹u#ߤ·kÉP^àm°­¹“Î(òØUäà±ÃÐ1éw6ØŽ Š £ŽjRŠBFÞ«²â’5ÌîZ\¦”l7rù —À“Ñ %¨†<Ó¿ý¬ËÈúÔMÊ(×J#ݯ`b†%Êñ kví­Ùîí>K32å•Jþy;‡Š)ä‡HyAëTvl~]ò~ÚÅî–?3Qq÷ŒÛ"d~ÁJ *æì¢®»ññAr>‹ýẖ½dÀ7K}M°Va‰‚Gå!Öwš;êí¨oHßö» NDÒrƒÿ¡Ûeój×ÂÑ›²âÇZ²éb··ªñQJU àT´åüuÒm_Ñú/ bòzÏrÃVÔÌÅt:KI÷3–Øo¦iÓ—uÄ„9¤Ÿ8Yȶ^²ùV¿uf¾æX*ôÏS,4˜•R×;ž"м:äžóSúÁC5lˆ‡"Úô‡æûÓÒ°VZ ÕçY”X©ýJªRÜ¥]ØLJŽŠ9ÎÚNÁ#^Ýñ:Ý É÷©}^VÎ*R¦œc²u[JËÉptØÌ8ƹfcÔfÜÁXŽLªô]'žÜ|5Wß„)‰X ¾•¶&ü² pÜ"A§õ#Ì¥i‡E±v%ív¶yÚ1Õb]²œð8üJcJOO˜ÊHþ&=gýjÛZË„•C,p’¹žþcÿ¾ÍPÃ0åC‘2´býBÙhÚš±r-–Ë~jåŸJ/• ¦µ»Ãó“ç¯ÏÕ®EîÜYÏõÝŽ_!iñÅ#^dÜQÁ·ÂìXM’XÖÚÆ¢xVm Ón§!ò0öæJ³Võ~ßMÀù÷_áænI|+®f0m·H¢h©&¶¶¢â8@`ˆkÊÞª‹ïeWQ¾·©O}ÑÞiQmÅ%Ær©öZ¼ rb\Sôdl9Lë^ öÎ4ª°†…uE7SW|¢Æ\òüSèn#Õs¾=¼1Ï=Ù€pc”æ÷6qôeK@3½Yå„ã½KØèþeÎÚÞ1 =[b€úÊ…3ãD6ѵ}»ÎÕ¦õ “µf;áïÌ{œ¤½ ¤efra£î(4@7‰Iã×2¾ÊÅ#dݶ Ò=÷1¾zü%Rø ú›N³¯¾«—~eLLe"Ç>‹ËhÀ£XeüÐ.ä¿€‰B¾KSÃã°,"â`P°h ‘ð¤qEh½TÌ&æ?fíîUÈ¢½ô“këA Äià¡eSbô°32ÔÎì™áhýÅA±ñæÛË‚«,¡ø“÷D‰àu—`(÷œhg Ø ‡}dZ3¬?æâÿïu,LMÚ÷4½³4Cž\¢ÿyÎe ;A¾X9YI"ºÖ÷ƒ9(ÞjY~úéþÎHÏT?‚l¾ŒûÜÇñ"4ÂûÑ­æ'¬Tä•90Húuw/ÈÙ¼ÁWËkµL{…¦sÒ,i8G]š²‰u+ð.læþs*úoudÞ±©ŠÊ&ש$ä¶¹)Y۶Ǿµv-ÑÕdz>¬Sðã«ú0múÐût˜Õ~ݬ¯Àí šFækªâ›ÜmÄÔ%b®‡- ë×iì#mÂÊ‚uô-‰µYèÌlõ¨œyjrH#?Ü;yýô*|O·Ñ(!ÇÉ2ÝÁ¶ï4:Yü]ÉáBA@P0lzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025413607166133031614 xustar0000000000000000112 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1raidz2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.719786823 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1raidz2.dat.b0000644016037001603700000006750013607166133034762 0ustar00hutter2hutter200000000000000BZh91AY&SY«É 7 •ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà6ßßmáj;Û=ß;âP¾(ùÀÐ}”Ñ=Ø£¡ê÷¶øoy>ï:×¾Ó^¾úuO¶úëW—«oó½íÛæî²³éÝQ¬JùºßlvÞÕ×½nêúí;¼î}·Íß{Y·\ïqÙ{4UÁ»kZµ,ÖŠ­¬·s@sV†²eCë›èjˆCS& ÐÁ1 j`&˜0š2M‚`&4›A¦™4 ˜™Sa¦&&ša0 ‚diˆÂa¨Â0* R 222jm0ž€ši©ú&˜GeOÑ=22b10˜šžhÔ0&&@LÑ£ h$ÛTÚjcSОC!‘SÐ4i¢b§ú¤šƒBf3@§¦0‰š451Oõ)øM13$ÒmCO&˜šdiÔòi¦ =Sz24™3 £F¦F ™„Sò™©Œš2L ©©€Li Ô€OÔ€§ê0M~¢4Ô§š§ˆÁˆ54=5Mèh 4£OЧ§”z~F!OSôdž52O4§êmOTôcJy“5$ÿRÔò§ê1&O2zIê3L¤ôÉ<#H)4˜MLÑ0&§¦„ñ=E=3#LƒM&Ó L)ú&i¤Ã%==MLL˜§¦Sõ'écSIúhšžÉ1ªxÔò™¡OL˜SÒhôô<›T65'¦Œ4M2‚J$&Õ?I£ 40&)á¤Õ=¡‘¡OSôÐOTýLSÁ£S&“dÍ4?SÒOõ=M14›ÔO ©íLÔ)馘§¦§êz ŸdzL£2yL)ú“0ôÄÊ›CÑš„dBPPAçvB–D'&Ÿ2è×Ó¬iRŒÂ-À¯‚Œ. <ù¨Àé…x†îŸOoxÍS’ÐŽ'l…*`çŒ'¿g“é15F‹w½rÂ,?¹µ4¢û ໑à¤ÁèEöa!0| æ†Zy«þB½½Ë=¾¦*¿QÁÀÁè$x=´1 BÀ ³¢ A Û ñÌ‘pAø¡OÅDš” È$¥ŽBðìoÍYê—f&¢×P[3ûÏ‚ÁU¦S9›YÝ­+ˆ/f,çda4}{Ù ²åDð¤ 98DOX>Šºb@^yÍœú cÄöOæKk„~DJx¬D›±©„1Ž™qêÆçüMÉ ©p[ëzò¶¸FÞÁ@§ãJÊ2É!2 ²#“(œ“OQSúUk÷ý=]c‘ºÚãʵåØlžb±²³´µz?Äx~i¶·¸¹º•h»„¼l½¾¿ÀÁœ.d¼ O1½Éþû ¢ët¡e¼ÐŠ…ðîĥˤ{†žEŽ,ó² rÈ‘²ˆ¼ŸŠúè{›­­|èw ƒ"5 MèD:I:/™ïz²³éƒ‘µ÷®{'è¸Mƒ&;”¡Çï dãªÀR à8uâ`-; ˜•gˆ?"'‚B7Ĩ³â>Ë;é¿î”t6Á×XPÒ.Üš#rðÇl/ƶØæºïåq™'uMw“®Õ è¿°ˆˆÒÁù„V $¨Ø0`®ýð%8bÂÁ*YhÅÎìn~G‘pÀ;óÒò¦ Öw¥QFѳž/Tú4¸Pàp|H¨â—ØWÖTÚ¶Ùrh²­ì{îai{O"µÞ5›ÂÒìyo0;}ÔDXÉ/ÁK­6¬›§‹é`º„ÅFŽ^WÊ ~ꔪrt6gcóë¥,teõÑ©v¿X¥vxF±~ƒ}†½ñJDWëmÖ”_öÊñ^©cÕµùûtþÔ ²ã”o¨x°Árï —Ik?rÅÇÜV/.lO¹Â°(·ñÍ5š²"#4X¨ôZ䔣 T6eÚ§ ]OßÎw+«-†o‘Û?fܳm“ŠBÎm–uß&·ç8¼:CGXÛ%Ëûb¥¦?J¼ÓóÅ{bfQR €¤#ª»ìwc˜ðͲ¹õ;éPLüÚÄ&&A(¬†Á¼V⌔fçMa7Î'„ª¾(HNGð¦8ÄH–öÿ›Ô㦣j9ŸÓƒ<;Žš R£‚ %UP P…  J2„” P cü«ìŸÉðm7³"ÝtÇaÚb %µÏp«FÍ27CUýf"Ê3)4æ<ºi"š|(vÂ(P°j>á $98ŒéøÂDY‘· H@­,íu-3Ø0Ý—VQ›«™ |müÉ”«t2í¢d S&aQÄãœQÖš`Å…:eÿ”‡™(ªÆ ˜à¶h yŠæOÌI+;:ÛÉÆÖ¤DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDM€UUUUUVy‹•å›Á*`1#‰(^|¶Þþ1’wbò‰Mkö–#€Søp_·µyXyÀ>çNèý‹OŽÖ‡^ñÖ¸*û»iÇ;eSiÖ¥Dk;éGðÒîèqwX±£áäöªÎÚ @žê° äYùd_›Œ†L™àŒˆŒŽA¤éü¡hþ8îw»q+™¥ÙÑ`3I\»Vk¿bT§§yëÙâúxp\†º:¶é½tʧrm‰›TÛnÇ6%‚áóR+G…\Q2@Ü“åRB'ŠE¯µ¡²mkE›‡5áö&m9BûÓXÛQëª÷pU_ÞÕêMs.:3b±õ©“€§QD0¡œõíwe¶Yü,9¹û¿ßìԪgÜbtLŽ>—vr©€PýËskað^ð³Í}ߘoK `ÉMB´>¬ÙdòN 4¦˜µ–F¾”iV_ZÇZ7ÁÔäcájRŸÝá/)q:*’ÿ§áð¹+=?c³Š¦¢"úñTî£ÌI«¢R %'Û‚"ë dd@æ7(Ûây~€ôí0ŽÆ ¦€``¡©Š €ˆ" ù¢¦ÐAPsp@>ĶŠ("ƒþPUP¶òèùèzHŒù (ŠW稞˜YoÐ$U& "­”‚%±¢À"F¢&Õ–@"‚R(†$ˆ•Ã@U*QBšUJ Šˆ˜¢Õ*–ˆÙ¿U±/Š•E@±Ý* 6H…!(võÖ¬ <¢b­©R²$¢Q(,H`H£D½ ˜E †‰ðÒÜ©AÝAv ÑV¤€— T7È(\¤±" î`E=)Z°E0P ¦"7õ@ÜnUÚÛg‘?y-‘m1(—©žL*T›AaZT¼K’'¢%iÜ5-€ºMý(-ù_•Ý‹)è'Æ–@Oü¡É‡ØXr$@W†¢† "®8‚(ÉQPKäHª'²ATØÒŠ0‚eX€¡¡´‰|‰APÄDÛ̉Ml 9uPU ñQœˆŠÙl†ØâÊ"”b-•5ð40WkÎP@]$©ˆ(¼8wô• fâ¼íåÄEC ÁûCË ø,äH€Ý‡™@}˜ŠT"ï9¢ŽÛ¢"D=¸¨؈¿žpõ#½ÄPýÑEÒ±E])AÂ÷ˆ(¯Í:¢ ÷¢Š * ‰DÝ ]ItAW 41TÂ@ì`†ЍdˆòG­ÌT<ï9EK‚õÙºmÑÀ¢A„âòÕ ç oá[â‘GŸˆŸ\2ÔÅŠ‡ºNqSj¤Š;©çLÔò=^*\ìA×ÄS|Š †‡nzÇæn¸Awè˽ÐO­APO²gèªõ±ÅÒ‰`¬$‰AŒôã;-Ë”²¯Ë(ÚD¨‘4EU®BÅšíê Q bDm$B ²EûཱུßbTÅ5‘rq:~Y¡v‰NÅ(,+ð7Ú½‹Eˆ9^èø616E~ç§Âb´ÿXF.ã@(A>¥Ê%ýõ(Ð#šÅ”O“¼ X=&mtƒŒ@†_Ö¢WÁf¨oœlŒ’{0mUI;šQ0E(óT¢u––ü@++(@¡B”(,”lCe¹é¸û!ì@Ï[”! m‡ð·õë£`õ T¡€€x³uþT œ[!Î*ú!Áô<ÕpÁ»…ÈŽöÿxvÂÞ ÈXAß`‚%~8;ÀÅBðŽ9ÕÓä󂚸Hê"äª2$’!"ÈÈ ² #¥‚ŒŠ’ºê ˆ‰”ˆœ\gO; Ütz+·ÌfÝ ÃËÖ¹p`!#n‘ƒÓlÑ%?iÞpöØOÎFm|gd&’£òEKŸûØIa>yŒ˜oDTýäíy†à´£·1'Pd‘-Ó¡. èÊ›x[ÜZm p $ @ ‘äB(Ññøã¬¨CЂ¯™<(^±ß¡ãz”o÷xÅb—ðŠ )J2I#{bÁñX±£ò*©“¿²=*#îX©üµ†Ñ.¼Ú|‹¨ËnVßu¿¶t߀E‹0Ä‘o5ûK¤`NLs"³'áW~6\­) õÏ—e'u7™x± ]"¹Ü~Ã#ˆ!Æ[4@Ć$¢K…F#.ç¬Ðþ°¨3¹W æ|_™µ¬"F}ÑývõNóQõ=c© ÷-!—µ+ñÇP‰ŒSñ€; RÈÆÄ;²6?®†^'«äuòP ÎìÔHýZ#§Ï£‰†Eƒtƒâ§»jƒá‹Øà ®‡¬ŽB¡!Ž]ÒøÑ›‘læl&1ÃS~Ûôy‹hùÁm§AeR`(ƒ¼<@Õÿnbr@™TM5üòii)R›e¾¿7¤»A³š¡ôu_¿Kèêó: ¸<ŒÎpWÐú:”XU $‰štZó'ÀåþTñ¯Ë}Á^`M>Xx”8HB#"!pYzá°Ý¸ú´ii"H¬ F€4#5 B(•yâÅ&Q”`p^-FŽñ5ä¶öѺf ~{YÐ×pp&•æQðLÇÉXÝd^\ë2ÀC“MxRUŠ?>·®SŽ¿Ò¬µ£+S®(Y ‚~HŽ4ÜtÁR‰ŒÇß'ÏZþ:è!çC%ƒ.è? )–ïË› R‚r12a·€¡ ò÷ó¿-âÎßå5 hÀ®ïDó;½xÔÁUc•Š}‰o²áðÊN $Áˆ(ØÉW,ÜCŽ9xv‰1‚OÖr r¹Ê_q²Ðì©(''îºñ0( Ë›ÈÖ¬þ6Ð {ßôÙxtQ+j"½²¢+¿…²!€g˜¤ó§—þÑ“H†Yf'V§x¤,²ËWk`‚Z‘å)±⇤²¬A‡ÀÅßžŒƒ²Î¬9ˆ½ãmj= ¿²b¢Ç)£öÚÍ=¤cpÍÞ0k„ó%ÌÀÓ—#È^=MÌB*Ô€fÊÍ· iNùÜf Eï¤éÍxR¸,¬` G¯¨æÞ¡²AÁ39 í‰ÛKÞjWGý¨‰¢b×ãc=ͤŸÑ4„; Þ!À¨@Œéï¿ó®ÇñŽÜRn4•^?wã±>« ŸŒØ´Žµ¶Ç2<ÃÎ’\÷•>žXSA ëH‡á‰d2(§¹c06ÌGûËVR6/UÛ~ºô"“­# ÑKpG»9ŽU6sïÔ½Ñ>†«ð¶eãÈóeÈKá7YÑ€ÔM ^:áôt&ÕõòVÀq—ü)ÞnÖáõw£YMM)ék*©‘çŽs_j}ƒÃŠù¸>/ üèvË9𗌔—ùc.á›ú^ï§ž½kn„4"ª%|Йð>Ü(}Èœ¶{‘±{«jáêowûëŠJýó{­®þ’±ñ#‰0$Ä/s€÷vKþ)å$»´ø¶‡aþúý;Âæ1Q‚ý0È ìÿK=”Pk~ L0sSØ߉Ö; ¾jæfßh .ÀM!ò;n5‡Þù/ßÿµÁztuz•QÅe];Ø«^ƒEÅNûѬÐacP©¼a.yÿ#*&»›`$¯+éٻܡ—c3m¿D_Aã^‡òrô<›"ÀG-y0^ˆÎ)Ò©°2?®?î~¶ÙEmC!Õñ ¶µ†üp&¢ôlò="%Æ k¯w}Þº~v†þ^ʰ$…Q¶ùB±€,_翎c™R"}0Ôuãô uù[ÅÏ-"k)²a5r·uYýP=‡ÙYå¬Á}G#ÜÝ5SœmSÈ9€„ ù­£äR ´ú̦µ‹[Q¹ÈVqD$>C„$²Ã)Pc ?óÔ¼>kT#fêNh¤ÝdÍsØôm8)=ƒD OÓÂu¶‹ƒ‰¶ß[—Ê©¨5Ivb({PÆqÕaÙgŒdrcÕŒñÞ°‚S°ÿ/)ƒc{PñíIJ wU7ﱉÊüF‰¢ýš$ßh†hþ@@„ïäÂϤ!A8³ §Nàžðcßçëo¼”ÃþI4@ Þ—åÝÛ}ÞcrJÈd—Iˆ  ½8¼–šw÷µYÆyÞùŸX¥GýjìPÇÂHï¼»‡g—©'M%y EÐÕOôß—«ÄÐq×=©­r5έ ¥7ŽË æHOÄ„ö'"€°6;„xJ0!¯ëð7‹Ø,Í-Ÿð¸ÆÚÊ;-ƒ , PÃJ¡õ{mf¦Â~„Ecò¾¶/1á…‚_NõjùÖuk9RÎ&`Ž‹/ùuÖF`}ùîãàFGª~Ë.<'r>$==û47÷šž‹¯2Ê">O…Š:!x$2Å(@aIà牒B–CȬFcÀ Åa‡÷kþOÁÃV×(›‘…_†šWaÆŠ!@¬#$D²§ÿ>ã|5¢L³ÍýЋCÅÝ›Hê¬&‹^ï•ïŽÖÓƒH˜$ª½tñWD‘Ë–:ÄÖf¶¯_ÚzNÓô烑©†xS¬( à­L¹Å*2¶]-½S §( Q¥sïz²¢Õ§¹¢Ò´Og”‹èÁ}J‚$qþ‹óÙKZ†›q4$¿I¢Z’¾™Ä—"e¤Wåš,Þ]öÝ¿^Ä"J¡ ìD`BèeãbkÔï jK=ä äªÿ[uÀ•r„îÕAÝ:OPô0'؉n·ûgzÇO^°Úé]V((×L´rÙ«®„ätî%æ2~kȉù9"¤zÑqãCâèªÎ&®(9 ?@tÞµCýÌßq¸aWÙ^ëÄŽWÊqGX½!¢ †È*FÿÕøg0"LÜØºËÕ‡ã<Õª"óÇy8Sð[ÄÞp¸q&¾]¥ä®cø~䮳!:ŠžPB&â´±³Ükž//ˇŒ•Ý]xä¯1œ÷-ÛÎÒãð¿iŠú(~7 Z‚`2 ZUPÐ|»®j{'þ®h÷Gê6jÚ}¬VbZK#üóÑ<Ÿç˜»«‡£k 4mר@'Ú B¥K±~Þ£ÂÚ|©DräÝ\ìÓÚw}`µbx¯tç_.€_[žÍ«üÄ[_+Ù"dò‘=œa»§áczÕ ’“Ýêëpóc;ñ†—»K¡†kUfTˆÊF7€áœ8ø;sØè`†Tb²;F‚ƒóƒlÅ'é¿âOãü-lð`ÎŒùµŸÁ’ãT2«¼Êïb˼.@o4Àšjßè€`ò0o‚#3Zô~PlÞqàz˜³iÆÁ1¥ð¨Ñʸæ²P¨ ÀÇœŸÎiV©EõO¤ÉNÈ\¬×íHâ])kWí3ÙvÝ{€ºR_ƒ×E21/§¾CøÅæºÍ1–èyzã;'®i'¥îæõïðVu3Öç¸3ˆ{;9ÿÀjŠM“Mó4yÁ·ž$C]_°C´‹äH*ȤŠH¤ŠH¤ŠH¤Š@Òñ´}™ ²žœ=(4 ¨pgÆËFp‘F¥gÆ.̬ĵ}=cc©ßÒm¤¨ÊcžG›À±ŸÈjì÷ÚŸìÏè߬4Úêðpˆ¸9€ t_oeåbÿ޶ïÝíµ½J¸åm¥Ý‘c3 cÞ™s/úzOí)­>mw0.Õ?§Î–¬Æ||ç`n„1a±\[î ¡ nÏ`ý¦?FwÛL„ â[é4¹œÎgMUUUm³í|~Ž÷]u‚^—QÄÄšë¬>×+äu»N~IuØ $ ¯ÔF5×êËð±ç<ÈÕz§«’ú´ƒ’ÿœ/˜[€…FÐ(´w(AD˜P¡8ãŽB… (T=4ÄLnúTq±ó³Oz+~tFø bGT¥üT¢’)!$’~êSO¡èMKíj¸mÿ"\À%Œ«Oôj¹>%È?ƒ”/eÿÊaý3¬ýåÃŒ*ÍeLŒp3¤H²Ë-"D‰.ò]‡{ñc4|¯¹‘L Ì’I$’vt¤’M£Þät¿=ۆϦè¼Ì(•C>®½F*Vʤkø™¹Áeþ­‡Š@P‚+OÔVÖÖÊ•*UQ]o%’ºûø-VûÀAtÞÎãÈ^ÜÉ$’I¥$öéI?»¿Éâ9‹B}®'HuyŽo¨ÖîæoCÚÚ?`uìJn.ÜÙ35ˇ¹Ý˜[~LúD‰ ,²Ò$H‘"âäà¤ÁÍ$¼ÖÍ!ÛýØ 0qŒŽ×#_ÌæV‡—B(>«êA³ÚC{S`Bœ:î—]Š ‚뮺ì˜Ìˆ]öìÄ8ÆôŒ ÀÇÛ’{Û®öô÷K:ªíê?¾£øÇ^bHÉÞ´!jÖtàê D‰‰"Ë,´H‘4¢^¶^^å«ë VA´ Žo=Å©#æú¢Ü!† ZPÅÕlï(£¡–¤®¼îoU~íO˜†—à×àu³/ÛƒStµ]튴o`l>XR¥JêYe–•*T¹ã]÷`ìþLwPÒœ «ð„ÅBÅBz™ ‹–%²Üe¹ûŒ¾ï‘°‘ÐÓn ¸9t×]tA×]uØÙw]/ß¼ž@uʼn7 ³žÇSµìå¥ï'tfå(øýf]žÙÙš.+ÿ¿L—"•o…¿–8õ¨9ÀÀì2;ÿ=?_ù;^5²½p2"AÄvº×è™’ìøgp Ã&·°£ñ ð? RVåP YÖ‹{ð·U ‘ôÙ”¡/ýÆ39FKvó>f|(Üºé ³†£…DËõQº,ÏÆ–¸'°w‚ù KPXg"‰@vG·aÊ2Ïð[„ïàì­wûçM‘%S-³ÅæÏùk’bL' .‡±cm{ÐÜLïû1BÐó¡}ªõÌ`n# p¸Z‚˜A·‰·ÞXaÚÉÓd)QiÛ½ª ¯ífgQ«Ñæàžˆ{’k¼Û—g4c† uN¸«æSü™(•™-Œ‡ö­KKFWâú¶øï‰®•JŽ,ÈÂ7!ý,±Ä\žÏc¢#®0«~ X8l,84#jÊðÐ7ȇô·²‘Ý^UšíIäš‹´$"'¯²ÀÍ$C½ëuÄðlr>?Q¡+؀ɟkÍ–„UçÚ~]4ªß!¨¼ÙiHý‡8ÝþÌÿ¾øÖ à36$tž?CQªGúˆàÚnzã^º)v6{¹[@úÎëúšž=ôžÏÂõ–ÀÈHÑ·ïÄYÊfWÜzß\#Ñþðb¢eÖŒÑEL9ÀBoCEVÁSòí"ÿˆzi-›ña.6ž"v€G¬Þx¥‹kBðÓŸÃ-¢¢¤Š@½£¨yîKu‰ÙÁO×vT¬ÔÉ/MR¬ ÖL˜ÜuÂ9æwwæžfÛòÞj¼ñãËÇ‘!ƒQÍÊJÜéïN«Aóæ¿÷¶Ë\}[Ÿw€ÉûVol!$NöŒŒŒŒŒŒŒŒŒŒŒŒŒŒŒ ”é4¼„øz§¯µVæ4=Ë£[P’ý°”$¦‚¾w¼ËÄÏLýÍz¯.Wk÷M*8†ÀBü¼Vžˆ-Ù2¼f >RÞäo¤(Õ×´†Ùå®0¾As¼Ý€©×[)ûjh1SRò¡ì†ï8õÊë‚×¼,e•´t;ݸBP°ŒA†æØH‹C²T½:vX F{(¾Šîr„{sÜyÿ9±¡»Ð¤ÍKÞžPguS`í9Øcµ¯äXébÀ}H ŒSéh¿8ðÖq´ú ‚«+äF´Ù.câ[flf÷yO’›í?¨Ç±FZ³Qþ»òæùÍ‹»vÿ¢…2;ô5·•/®ïp¶T¿uÐ:cÎç¬Qt3OSpy ¦¨lE»J}œ ëNÓÁmdŠå@צ]˜è+É&”ÂùÇè CŒ4çé“N4lšÔ^œDøËvßí—}‰ÍÇÃÎ\PY[þ^.† 7’BëiMíõìAcšZæCž[7—"†õ-ì²ù‡ðõí?Ãä¹j½ëøäñ5ä9'²zª€þ6¤D5lXQa*Â1š³¼”À‡ªž‡À††,X©µË~8€÷ôyS½CŽ1ùÿ -T}ÖÑþ™ËÁ†£m$TG¶û'O‡Œ{‡!ª#vΖ*ìdã÷š¹Lä¶)í_8Ç& £‡×m¢»‘>7 zIÞ©š`œí»Yû»…’Tâ e)åý›:ñaÊåºõÛ¾}83×ýÚ¶Xqûƒ*tb¨-6×Þ«ÀãÕгxç8lzMLªAóÝöd|eŸ¤hMTú‡Q×ÂQ`· ` ÕçÂoUÏ_0¡Ÿxr"`¬Ý‡Ê=[Ë«~Nªñ„4}좹 Z%ÁxPu§Å[‡!éÅa\²[JêuI¹Má³P¹GºY]½°1w²ä Í$„ÀçÇ¡÷Ÿ§Óü>$D—t™Ž» =Ôàems‘ÇgL^¶7µ‚–Õ©öñãŽ_;vŠMz›0†}2Þm©nu¾ÂéURÉmñ#ˆ J¢Ç&ç`s£¹ Z­¯ûÑJ¹ zÃÛ¥¾~û¡³qœŒs‡?Å3ö6O¶Uènv!áë%­Dв=йgMMñEAÊØÓÇ|êƒíS¾—Dg¾µ[ëìPK·GQ<°ØVÄt«‡?}Tú–<_°9(ü! æzmBUµoç;‘U0ÛŽ™wt“ñO†s>V¹ú1…K]•¿èã‰<7Kíã…Æ_K3(‚vOLB˜4ûéÝ`VbðUüM¯÷eœnÌí!õ®JÊk¿±>®’êA«¤Ü´MŒÞEØf1lŸœŠ“œ7ʳy9«ÀS ‘ ÕòØÊq‡ØÍÏmb3Ï’ëØjPõvŠ}Ï$*Ôl+—>ò{mZ=bè`€t¢ïݾIJ^K𠢚zƒÈ=²dFõ`™éyê‹2p_ï…# T.Šlãi;eî5åœjqÖ<é‘ IrþEÇ>YxôDÎ켇þÒM Q$}7§GóµšNGDÏÇôõPxgm¶Û>Šä‹Ù»H™ÙÁ«B42À¤¯mÊô“ZÄd^­­ ¯öyvöÊXù/†3'²MÎk²õ¾7Cql g¿hBŠ¥k°oúDfoÙ¦dšFÂ_tîµîÍÚ´Œ»Ì iÄŽ)ÕÃzÀl&#Óâ=žÈ*f .à¢Q¸|¯Ð²wjÜhH<Í3=7öΓr–›ÜÚûƈÉ3á 5y+v´ò*ÊQ—<©B7aó†·°ú‚6‚ÒÀ¥ç†F»ø ]dBD+Âø}s8™Gø{}šž’J$ ×ã~gF)0’~¼ã£ztOG’‚#Cèÿ¯z€¥ÑãûûtyS~ÚÓ·˜åóG=Žÿ~m{H%ÿ¹áÇfÙ„ÚcªQ"€`À0zlŽ |iðÐI Ÿ=8·Á¤ð¦ÕpÕ A1ÜŠ¹Oç3ÏMç¬`³Þ¾æÉ;ç®~ €|Ñ}°ì¬ðŽ/·'I!ŸòQÿ'L/Ó(ÑìØ¶¶§É‚‡.Îsv€A T í‡ÑÍ¢@ŒT’0ÆÖíÒ(Ÿlô»ëýÒùŠì¥½5Ã6f×5Óv!D{e©t»šœy[}7T¸ÛnÖ–=4µ§äE éi€yz¯};BöèÙ\MXu<Áÿ‡{.ƒºñôYh»t„T¥IR>/·™È““$Þ¯óƒU›˜ò*Ä͸íWîxE,Œ?+¸ ˆ””Ú@>äཤ¥6 XßÌcÈ}îW©¯»á¶ £Ô@„Cý4¤«M3éq=§¦ØT®¿^Ú)Þ±€îKèiü]˙à £´‡Úp\ÇàóO2Ýœ61~O3ÊÇø¶Òí£çsé윮<ƒY¯Åw^ €ìÿ>#õ«¹ž†9šÚv£.­Î]SÐéÓ®‘.;³c†"tgßY­Þô%ªuMáQd1Œ“²|‚`h9ÖâMmâÏ´ð>LÚî'‡ºÅÚÂeÞ±lw9ös'‹ Ixä%Mü×4€#Î IÚ ‡ˆ¿ã‰s !ÓØL>Úc‡OÓ>ºúOóUJˆœF8‹ .=x!r^ÞÑ’ tpª¹n: Q,2 ‡Ü»"fÅxsчråO³]Y<€ sMkîV¡ò#À Ün>ÃØƒßÖYK ¦‹Ò’½rüéän¤ç#=Uü±d7^=5E}Ša^$xzZ?z¥àaƒ¦ˆ†?U‰…!¼…LO' éͼ¦W'¸g\Õ`a†‚,RTeÙsÚäP¤ŒÏ¾\|^>oã;“v.Š,·wì×tçM ÌÊUc!ìz±nw&Ž}I}>[ÙÇþ²Úœð}ÿNjáÿÕyµàíêc¿Jõð¼Ã«az8sl;0 #©b)8Ñ‹˜C&añÈú…Ó}þEÂ÷Å sºõÇ¥›£’ÿ}ç>cûË@R¤Âq­,ÃÈ›N¢fäzÃ/ ¯¥Õ申?`ãpŬ—¨ƒâ1UÄC¯¦Â£zƒð†œ ˜gžay–ݧMÕ·T  LñÄ|9©Žé@2Z2¿f}ZKY¬+‡¢Ü#S$ Ñ|šÙÌwÕU8d}of·ýMê=_„ dG©;6’/¨*± BÃ03 =¶ðÄ|ØÉAÄExM»¼?eƒ» ÆÇfKÏøë*>…£ËƒÓÍb_^œÎSGa7P@ Ïúr%jõ7Wœ¾Î'd¯Ç†Çü£eŽv5ub5×LàA~±µë l 5)=ŒÕàž‚Ž­¾f¤‡Bâtõ¯ Pôûúî'F@dð;[â¶P´óT6T¤÷îp½Ó÷L7èBP[Cûc .‚›‡v¶q"š„;‡ÎCÏKMO3À™Ó¶öÁН»tÄI¯Ãeýx4FÑy°ЊæDÄ®†ûCRûþ|^ùGjXk©àqw›$üA%zlÙ¨·\wMÛ™ÐÝ÷q¸¡ÇwÉmÔì¦À²1¿bïxOÖ·qi­cˆ‘ …ö‡®ËÎÞòw¶ ­A"¼"p”×@¨¡ÈÃbvÌ‚׆•¬už¿Û~“é­¥=”*Œ4lm°}¨8ÆNaCêçr0ÿÑx™¾Œú ˜;þt”í ¶FÃ׫~üEìŸG²ñKü÷Ýfb3qÒPÔF~¦§à'™²Á%öê«nõfÊ>Â]P–Uàÿ_:¹ÉHFõPÁ¨Á¿Ðéö?úEw»Ç#ºÜÈ;]Äï ª'ß*ÂE7 mߦÆ`'L˜J~égZ\qËæIŽÚÇ0E†½/]¦yßxDγRéŒÑÞ08=¶Pyì8äU]4ÄÖ±çº/àN~Ðo‡k‡®É8CJ6Œ­%$ ë‡á/“>¢Ï‘­3çCŽaNÄ\\É2e k¢bIº:awßÌf ûtĦenuŠqêV=l-–“ Ú¶áU}º¾c`éÏ ýNRTºÜuS Ð¦°Ô„J½¶¤TPRg%R^$°w¼4qPtýÖowÉáœryÓ '×`8k±-¡î¯v-4Îσ곦óh¢õ­'ç¾ "6€âe­ÜøJ2(ï;R*'aËŒPPxÈrÿÆIÈ3^‘Øçªcø$ª¿+¯ÿd§Ú Ÿ0vN>"Vþ҉ͬώbd4u Í[X(nvAæ)Ç ‹þ @}°Ïw—1” qÉaΡjÃ8?3@4‘µu¹Ö‡«›8êGy˜èÖ.%†ñ•Âñ »Û ñ*4]NJµ°Ã/Íœ¼¦Æ‚ οl'Û„Óï‹‘+·Úk›rÛ4Á¤”óÀ„@ªÂŸæ–lÎI|> dˆwìç!$Òÿw¼«|©ˆÙù£üHIúFK[9œˆc ø>Rÿ«Ü¾›ýd;ª½þNÂqD‘ñ+oTÁu²Ïb ¸!w{ï…ÁðÕŒB…é¢ÁÅËI\Ú› ›EÐÙí7ÀIX]òðÏ]ž¸¡¸b*°žkTAÇa£ ¢ŒÌæYLÇP‚G®µÜÄÒøN±›Ìîüèy°©f"ˆEŽ67ªö})ÆüìED”„áU‘ÙúpOXÅ’°æîãhÖÆh(\1TÝH©þ^MëÙæµ{]í•u÷oéîÆRl?c(æ—LÃüšKÜLÿ6™)¥ Lý`Øÿ¬Â£#릹{{@Õ+!®–ðeÛÊsyu¨è¿Ù ã9ÃMÛrÓŒoÄ{–ß:žÁ¢óï¶ïûÈÔbTx|[?ɵ—w€9 ‚ÆiF¤½)D´ ×ïxà̸R”(~/ Ø[šš’  ÁqÍI(d TbúáE ˜Sú{÷ФðâS tÿ.·ÃˆlvàóôÍ.²Wø!6 ŒD0Uý}ú(˜ãªï­î<rR"¸¨º†hªÔÐ~ƒøËÜ–ûi ì…3!‹‰åtØF§½¶Ÿ††Š·ãL/=뚀šïÈ…©ÃÛBhS ~ íðÆçÜéÌ# µ¨$>¾ ŽùÁ¢ôL.¹‡“ðGoêÊ`É›\@Ywú¿ÍÖIõ`6ÖXÅïçÞ”$¦ž©3‡”ò£äÚݱÁ’ê]cðS9äCqcFß–;†¡n}jÁô€@¢<¶, P‡É‰ñHXxŸhhY¦¶¾æöYBÄxWô1Àë#<ÿ<•Z ŠÉ—#à„ƒÝËGȼÛ:ÉèM}$wñ¼´¸¸3ñLËâÚ^ZýûÇ¿êZ0|rîyÒÚt$EÓVì{XXrS»¨ø‹ó P Û_5½ÛÿEýYœà¸Nz2äöuŠÜX¶ö-À:ŸÂ€QŠùi,šþ\‰N .2WW ßYèN÷“Í e•ÏÊJãK²ð(Ü50,:°$zÛq‡3ž~aò¦ë#×XzK_È%¸g¤»ÓÛ²uíX…ì,ø³ fuEæ½Î`]ˆÍJ >¿Îé‰ÿõ2ˆ‘u0¸ûýFêO°W BËüm¢'ô_‹d¶6‹DYó§±}´\`ö/v¦ûXÃ3ÔÝe·fwZú,ø¿Óô=ö³f Èš?á Ž5'Üá§} ^“±×^À³v?®¾iæROª9úȽ½Ìa?2„èOÇ×4Ó Žü¤°ÎU›[é€:ç,ië¡_2Ò‡ò¥ç‘'¢%Yù:¨x=™ñ™rƒTˆ^ ã_›«¿a{„ó\¦lc/Í×fÙl›Àé"ßzXy'I½|÷s]0ë•6{­ªY}Zfa*’néo=k¦ »ˆ2ërè½T|ÛUähŽÜ¼7¹™„nùT­Ï†iÍŠÙüg»j—ÖâGþÊ{sƒ¥ís—€aóˆ¡ eþ.” '"x Ü™×÷UwŠñk2?Ãÿ΢ž sÅI^`6ի˾¯¾õ¯AS{¤±¹80hstæŸvÛ'ÿ$@×ÕØbcm;Œ"À ’¾óïµ4 H}*T3,;ow/¥%&oÕ)šDxßV¹Í#¶ ç±vîs;dìœv ]“ç° ú$’õîJ ð“vi} e×Ì?gÕmSLDœO/¥È|&U‰Ñ¶åQïâ·R-…ÿ„'»}îR¸¾Ï®ö˜¹šY¦Ž'ûö|›ho8'æ ìv­ÝVÝ(Ô>ë÷C9•­UÁ^2’"HïðÓÓ?×¾ÀÔ¾¢íÏ}´ùÉÿK‚Ðs ¼îà+»vãí콃á¡p·×zÆ5"Qa¤@’ø_ZÐôCo‘+XPéE6/Ôù¿Yâ%õæJ©C`î»xë?Ì0è1‡uâ¬ír6-ñë]ì4à7Š™â aºd1R}‘‘oºýôå…Ù@<˜Ù¶Aå…ù#yÆ‚ÅD: ¹é+R}©ŒÍXóK¢ˆn|Ám¤jÌs׃¡nº²¤† ާr´ í’ŦÛf‹ÄìgÐÕ[—f}Ãú¢ù~59I¨¡Rrs/9°ëåelO…zøSB¬>lÁÊK9ûÿÇÍö6<ê¢Ë¸“Û»š®I- ªg Ò`¬kç÷á•ÜsÄ!H] ÈCB±:ß$Pw0Á ÂZGã†]nÒŸ¹2]áÛ*çž½5F¾®¢xAf°ÆïØù^±çðïÚ™ˆ¼¶3X‘ÇÑ€%àsñnÌXšÜž~‘‰ÊYØÃ—]¶MTUís¶ždh§-@øµ2]7lä1’ÜW{áT—iYBŸ*ñ²Z/×D‚oÖœ«ùñëñ´—eU2[¹U90%ºuN›˜ÃƒóljÍ주½…€"ÁA™uðVYb÷££ïLU…胜gHHÛ»`ÿkD9d•·ˆÐ=õø¡ dt,@‚Î5úö´x+Qì줌Áérôd Œ«òŠAö®4ÅwÆÓ VþÀ}à@EO_dR×õl-o&Âú7 Q>Ä|üÀYC2¿¸ #f\ARžP,wÄ$JAwT$Ùô,Ö•f ÷XQ>]pxð¡£Éù’°©)¿7à}ìe™Ÿ˜J›ç ÃIw!š¿µÕª½`ÈpòWtÇ¿ð å# ³Dõüj‘ÌÚ«‡sâwð'Ð|¥O9Öñá6ÆàìÆÿ|¡š\Qú Ÿ±ÒÂ¥LY-ŒÁ{Áœ´ô\?ÅÆ‚"=‹îkeœÅ⬪üÈUv3¯¯y°ÁèGó§3¦žJ]á7Ù“%Ï© *,Ð-ˆ{ñ¤MÍ­,#T¯?îÎ=Ñ@‡_p$„6@Wªí?=­…‡š;DùÈ›ä§ðYDVe·X×o'¾Rsï㽇da@ô=íçYïÝ2î¥å 'À¨‚%§Ú®õwþc(™Mô£ù®{~Xͺeóeº˜h§· -$Bû!uVíò“¯.5D>Š'°÷½pÓ-ÛÀt†j‘ÍéÛ¹ß×SÝÈ$ZÆ4ç_\?ŒGWi'ÀÓëd„MÚªPúl~Ð69ê);ÞALÀr§Ú›­Ã;Ù2‡Å¾K¡4ÿÃntÝ E¦({d†*µjC³dßÄë¼»bm¼ôs«ŒÇà;Ï!Z}ìh¦O`låö§ ,AiõKkõÍx<·çtZ¡eW{Zväê-©ñj‘ú§nŒKàö¸Î[ónþl6Ú• M“Û«—™Þßù­`Mó.YLÅãöÔ9u~T*Ûu/ØW¸÷Ù2…ù7±¿+¦1Ÿç@mµ¬·5Þ†¬®Òï«c¸±åÎ_©³{y@Tl²çõïc«qü˜BÿÚW ]G+sj‡Í0)?Ý·`L›EÆ3‹Z-«`>¢¸V Kdf²X ©Í?T'u«h·ÿô̶Չ7¦!}Ï¿ë…îí+‡|Ù4R(¨ëƒ51‚¤æù{ ã:&E p4äC‰…ë eeÃ_4Â'—‡Òÿ‘g«Ú&f&`€ýáÏ2Kën§@é…!g5~I€màX¢€›ãŸêËž¢SA7ç=[e4‹¶Ç£K\-´~Áâ,¬<·l’¹+F¢áZVn&Îê†À¸\¶çÅ‘¼öŽL%Œ¢HŠO!¼£‡¨ÚBžÝo]y›GMëg¦ ØÎK¶Ã{@-àŸFyÈÝ6qÐý|Ð[ˆdLe¸Z ç(êпõêvâLŸÇW8|¤Ü›µ‚v‚‰§®ûr·ç Îwà‰ªJ¿Ž&-j  {£üÚ0v(­ßÇ%a:ðV¶Æ·Ñ(ûüž¥œ[S¦èKls+Ø4D´e.Š aœeÏÁ›7i(uƒW~az‰l‚+ÉÓ<`¨òSfÛž$µ@{†;ÉYÅ2n‚#™;7<ÆôðuÈ[öŽIp’¯5 Šz—‹Dwþ®ótò@´w-mαâ¼ Ï›VÙŸ[ÅÖ-LÔ{_D‘-¿žú_á´Ií¥ì‹‡… ƒŠ£þ½uª½¤¸&„Þ— Wœ)6¢|ö/YìïX.YÝîÆ|Ë»ZOüç ÑnªÛÍ Ôy´$›»IÉ€þ^³®-ê©®äE:q­[Ú]Îz«Ý"ýºé]ÄK)i9V8Œ™+ÐóQá†iBÇBv3dàØØ”Ó½@Çw¬¯ `´&÷®ýBÓÌèÖŽþé‡÷B·åV2}0µhpÒ¡&õš§L¹(¥ä©Üõ>Ÿt\{z'ÔL¡ya÷U¬&J‹)φÓÄÎ׸FDÆœœ/ß1|¢Ì¢ŽÎ]ÆV‚WÕLÜdÏànn”Éqpßt?nÈÙ¨Ýî’d_,åm*.žGw×\R1y=î°Ý >õMñîþd;ªLn·ÅçóÓyûšZ:±~„±µ¶ÉëþQ}ÿaÔìïÚ‹Ç~7ýåT&ÑÓ5êê´ÑŽH4xÜç]ì*õ¢à’ E´ÿ¦l²x­`ÀNDv–èHü 7Ü.T*‚ eÜ‚I@DRDC”€ªˆ&ÔvÜW]Àø<ôjkÖÇ1ütÐLHÎZüûè«‚u(ÝG£¢ê )öZUšÁ+ã04wÂ(¡,¸`ú 眯ñÝhî$¨æÖ/ ñÎöÖ¸0Ìjqv²×Õx¡Á¶±D¨Í~ˆ´_g)‰n8vËl—ä‡MÒÖê³ÛÓŽ.‘‡ô\ d)ø¬»ÖݲW´Ì€„½]¡\$Œ›9—…tþö}®?ÚÀ†Ñþfc™Ãè9Þ[Ýîr^UÑïû¹üâ&óNÚ*ºoB‡8ì®ÙÀÂzgìÍÆè7½—Yoýþ ͳE%s’Z”!脈‘"ùŠ É2šÉoHSȘ7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙøyïp}÷{컸ïžù–½}÷—Ú´‹«UÝ8»×{¯ÎûÓÞû³ÞûÚ&Ë>ò®´ïµeºµÝ×ï¦}­òï·¼÷1·¼½îÙ^îÞºcª˜L“e=M )áOTü˜&OS&™z*y´˜LM 14dѦ˜O&M Œ*o45<#M0šm=4šmÒzd4hb¨ETÚi0ši´50˜©úmIúMMOOSÓjz§‚›SÁ5i2zš '¢f˜šjzhõjxʧµOÐɪ~h§£Ñ¡6˜MOE=£@ÒžÓ#M›C&˜'¢žŒ‘•?ÔGšPŠ©¦Ñ©„Ó)ú™”À èjdÅOÁ©4Í2)úIú`F‰ª~FM“&„ÆCL4˜SÕ?M4ÄcJŸ©äÒzžÔħ這©<*oMO&5M„ÔÛSSôšjyPEPLi0Ôd5< zŸ SôC#Sd4Ñ6FšL˜ ²†&™•<žB6£Sô†2e=O&Ñ20†À!¦C'£RžÓS`˜šbmL*~M("¥6™#4Ä& ¢`ÌSL§‚`O$&e<4ÔÅ6Ôž&4ö©™4žòO š¦ô™1§ ÔØš4Ÿ”Èõ=Fšb™‘©æ©êx“`QíSÓñ'¡¤ÙLЂID 0§ˆhbi”ò§†Œ¨ØeM´’m5=¡6F©êx)ú“ÔÏIµOѪ== =©¨óMSõ05MèFSõ=)äž)êy¨'êzŒ§¦šž§£Ò›S=OSÓ"iŠxÕSʧšKÙç“ãÃêcðùF ­Îý¢¹Mà/=_ñ˜Ç^÷[YŠˆ#AÂ,pZq‚HAuá…hiLp8YŒ:<ù"y,Ƙ⠚ _H!ÁD DÜ‘#§ >‘E‰Þ\¦07MþËHd³ß½xñóø¦ÃÚî6›ºÇÝ*¿ó§„¡#‘F`æ/  ü—ÛcG^îJGüë68ÇÙÉ1JÅ_ný%ÍpPÑÃgÝ»Ržç‘›Ñ{ó^WÌwoØ}&ZÌ‹ ZtG [|;é ôI}'ݲÔW)à]z&aÇã/2;;æëœWc%0™¿~‰u‰L’õW³*g¸iú’œSÈŽz§Pù!—Õ;]—©«YÎðÇ?9œŽ0=ø*í‰(—¦Ÿ¦(%Ý׺[Ü™Ñ)oSܰZ’Ï´ˆè¿Õt«Å¤`)ã<_Àƒ`-ØœÙXÅbgŸûtÇö|y~÷ìƒx–Ñ….Á`Q:sÞ ØçÄl›€¾V )謃ÂA‚=Ê~ÔƒÓséÄÇêoú¼5!òF#š÷¨„Ê>0ó•÷·Ø™½E€Qí¯€t–kòø¸‰&¢94`«Û¸·f79“q…àúæ$@A‡‹T:I3ì/œã§.] ™‹ÒÌ¡ÌêV.vvSª;Œq‡(#ðHEˆ-·>LÀ1ÖÎû>b5ô?&Òk×רÆaV†ªÔÙÙ¥<$>¼nTÇu¯iF_T1OcÖWÍÖRÅã áäyÛ°x]††áí0Ce}NîÒp 9Àb•¬ñ #Cþù'yÍL)’xÄâwÑΩ>r€"ÀîÂÀ†#ë<Ú³I`wcŠ3Û ¦ˆŠºT}?@ÞXæk'§#–¸9qW‡Û8z½²!évò-ÙӱI K›Æ§Ý÷GHa6ó{uúÈ‚è’|Ö>ª@˜ø0br–ÓoÚEÎ? Òá\•ÿ]Æ~þ Ùëf ã¨ñˆ‰ú20ÚœògàRUJ?Ù©F+”A¼sŒÉ»#õ‘1GZ«º*ùÔŠÕð'1ª@’맸<ѧ{Äz*p3•DÌ¿`¹|oXNc Ékd]±š3kÍqj|„FDŸ; |L„w‚ÝfQnZ½¾¦8ÈÄ1$ÁdÉ Ñ‹‹%2ÂõÙ!/a€è²2 u˜ï°-«,eÕ0ƒºÄ}.ù¤ÔꎜV¡g¼ø“ÅõAe˜¶;³Œ«úgœæpÜëU<#åsá‹X?£âûhþCXl;E-$îZw.z5N/&©¯ò×@`º¦ë+5ƒ`P“À÷7²¿Hw¦~¶ÝËŸ½i­_8tìߪªzÅSGš”¥37Á¾É‘º¤ÔçTÌaü«á»K5º WÄ /c½^£ZÏjÙè´a g }%è$‰p÷¢¾ ç¡ ÛÈ#‘#I¦é¯»UÌÞP¤FzýeÖê»&o‡9Ò$h~/'±–‡°oÀ² e}†âõø\*¿ƒü,!P¬èfa¶+‚5`ýՃק³ÝÝ/”âÆ„f˜ö…6Tíj®Ô[üoðªåV¤µA=£……{’¾‹¸ñ²ÂÏì5Ë­ÂL£èã’;°„”ð úÃ2ÂUÁOÉ4Ò¿¯ꬾ€wœ6qbä`+…ºÑdeåù %îܪ­ òò !ôÃÙÚ„¬¡¬~ ΞÏ„¦15§JD±;ÆÒYÈ8?¢—‘6,6‡.xän/5Ñj&Ab\£ýHø>@P #ÆÒ3¦&k——¦áã9Nñh䬶šªˆ*q&·RûKìì"õ»—÷T1ø÷2·;Þ8¼ ö)ò…‘­ŸaÐ&³¶›AT/gó:L43ú1cn,F´›Œ xþÑý4µü㕟¼§ªišzÂt±?KQX–‘…'¡Î2E*ZIø9` q_ý2º®è~Ã)––¦Õ[Õ›ç«!¾T6 •H ÁT«Ùjï8ŽJ' ÝƋث…ö”¦Œuôz¯«ãS|—~.ë!¿«¢v¹ž¥y2ËìmyUB³XÒñËKHtšš³n\„ëvŠÅ5—ƒ+źA2ÑfÏãóP%wƒ[Q)O~Êg2¨Ì²wIÖr˜ól’^ˆ–!W¨IŠñI˜†ÔŒCnƒ°½ø*RÂȱ¸…l­ëª’3¤¹:`ã IUß³fó‹5YzkêÖÛ—ÞûÞ˜t°n§•©é …Ø6ðt¼"_¥2d@åx<{°TÌ*C†O»rê7–Örß òšO£©)¯"¾Q‘Ñ–†0O·ÙRêÃ>¯7øÏ¥WN(«ÁÕ¢¶,VlCããiÆ´Ä¡ÇÂ×JŠ‘¿žñ?¢­‰‰?ëR¡E¸Ðžç<";)(¾lÇÕŽ¤8ºùÔÛŠÇäù‹š2’…rpÚ†¼k±á^÷N³Þï-žégЉ€Þ|Wû $Zt¶£Õ K ‰+Qã »¸C«<âõ–±9ð ñ#s¤`ñ9ñ¶JyÓF6Clv¨w4X&‡öBow±¡e‘ ‡ÐÜXeCè`k©Èrq,êå¬êÒýb® Ì}Ü`®s8<ùºKS|GêIº‚ro¿ãe6ñL§B X@|2Q_‰-ü è &·ò€"3y\Ëx‡á®>É_a ¼²ð$ñÄeŒïòÉ·ÍÝ¿¥¤oNêq‘yާ@H>õÁõ>éÛýƒÈU«J Oõ9É‹¿¸Ì{O_Ñô\;ì…еÇy}ñKÒ”ÀF›kÀùuúç‹…B÷XfôiMÙúzÐ_žjriÿQ84b²M¾UÅ`ŸƒZï}[˜ò(8À.@ek_VFJè|5œ!À‰Á Õ *ó o :}C]G:Ñ0L¹È.!ñà_›ÿ£dš9¤¿·Æâ¯T»Tê Ä¢ÝùîE=ØÔÙýR›~ [Nˆjœ¿Rb*ë:4™Yå­Õ~rîÆÑCO* ßK¥ÔÛ}òvt£í]Ï{iÆU@+°”Œ¡†˜KŽ¥–vöžSщLö þ9‚†ZÐ.ïøG-à\ݤ†¡æ 2âFöªÔçffí•Ó…wcª¬{R \cݺçVk»¯ìÖèùüZ5ËëOõ³úG, v¿‘š;3Š^m±øÿå„=3Ë’é Š1à<ÀÜ1b&:Ö;™‘’µ"cË|Ö*:‹Ô(– è%u.5ç…³>Š>”‚÷Ñã Iξ…tëOÍRç—ÓŸåçrÉ|“øîhýtbùúR "ˆœEõcÀK<§ò¨‰Fº¶@êÌ̧Ì4éDAm1ð¦Ÿe£êâÇmýoÈSf«ø¢äa8_Â×XˆgNA¬ãêØ¤ðÊâx«vE»L»8Ï9¼x©|í=kåð1¹€ÌM²8RÕ„®… - (ÛÑ÷ocÚ\;Ó¬F,D¢ða’¢Dñ²¸© OÊW©[½ÀŽf~¶î½éÚ;¯g÷™¡PqŽ­&Ž™s[ Ú÷!ªÍòàiñPÿ€«ê¾wO à¹mùäïÖ³¾2Ùû±Êøú[wÜÛ4¶×i)\Á®@Gž§ÕÊuê)±?WƒçWû…Rø¤+gû?';˜BËÝJ7°‚¹î=þD¼î›-|?×Þ€™——bkòÅN)wóãdVó±Šâhâê@›îl ¼»1G^-DI#þ§¬ƒ4³HýqÖ×p<‡é²ÇDɽE»ÐÒ­f‰ ŽÃgÄé­ŸkZqÜ¿öŒ¦ø•ÄMëŸá™wŸ¨HF·»}?p׊y”îÑ¡@×­Ú“ƒK a´-ćt4ëRãÐ¥ÞÔ2@BÜŸ+•I+&²¿akÒ£÷¦"irï%ØåÚ°¡y´¼Ú«‡_<”v7.AÉÔ×&;?1/–2§;-AÕÜô%⨕¿¾Óu>ï£àøâ˜-+T„Þܽ,]Lôb9=œƒNaçt%ã›ñéò[¥kE4ò¢Çæ·™R$Ä—÷{ÜfPÒufS:w‡xU[ri苯&”6ÿŒï1á<×±’¤^\b–µŽV­’tHh¦cOzow…š´—[ÈéHÄí"xžx–Ãaâéqáb…4­ö.ÁÞ´ê–ý¤Ñ©‰9=¾ï[Hè¾ðehО• I¾3D‘¶Å¹•£•0ï ¦2ÊAñܤ3î®ýŽ¿Òˆqc\àŒ®§W§ÓǰnRfó r‚£*,w 5;öa§s«1 Üþ6^§G}Í^ñÇ4{ÿmÊ”¿ )Zeùi¦¢©€=ÿaºkÚL_¶J*2ÙÏ ‹P®²m·íÿ.:k®ißÞ—_:•$þçÜ#ëKÙšc‚šYBjùl‰´­ÇÆ3µF¸ åâ*^£Fò:ûḴŒŽYÛ’z—àùnõÖT^Ký/¨¹³€¿q逥-”©|. ùêO‚e!?øZ´rß}/}œÁXâ2‰—/‘¿3MA²Ìª†é±¥ëÛYF€eŽ-Sþdb/º ¥–‹å;úRÂÑÿÍôÈ“!~|ÈK|jï1­¿Zßðl.Ї€AæSCx£˜ ‡DPÞô4êWv[.\3I£ê*Sø~:åBTý§µcÕäßY°éªÔbÐAËw¥dÿN¡ì^~Ü×j½uĹaë,æ23¼#Ý/a‘g=ö&ÒÙv€Ü/r7ÔÝL®~LI¬óÜæÅÝ~ÜŒïý½5ÕßGo;Qjv =À¹¶Õî¦'š/%y>$…R™¼ñ¡ jà:Ïxç&÷:A ¢¾XkK:¯,1YOW$±åÀ¤FT ù)$é1µMtÏ›YÚ¨•åeíLvHÈ´@æHøÈÕV(¿ºFWJÍA8°M°Ü™nÌXº- Ë;ÀÑM•¥w“HP’3º©L™³Þ_3²˜/ýÉŠ<Ý^?æ¯ëËî"uŽ´ ¥ ã‹ñ$8=¡Ùº²ÿ•‘µÔÿ­/©×…0Ž’8²}Ÿ¦»ß²ßh6ä nP\8¦é™Ð0tçO³ØåÕÌœ?6~§ = W„yÊÌËÃöæþí™ÚJJfxT˜‰ Wð1ˆÁßÌøËÈKC’`««¶Œ !ÆëƒÖ-ɵàxž%–Êû‡ãHF;¶—e^øï[õ(YÂõÖM¡=«CÒ·yu¬"x²¼çè±í2ÌÇͦ5Ó¸M .ûHkÅŒ`ü+ÏM/ÏÅl:S¾Y1±%AÆe”Ò6ÔìWC§]¾úéý¯éþ<í^Tádœ4i ¬îYXÐZ?þžc=Çœ5"½uöå.‹Ãy¾ê<j‡Ï¥ýü|ÿ¯!/³°)>÷ »gp­ÌÜû¨Ù 9XÇ:b6ßm/„ÉÕáà•yö§¾?¦fSJ¹×ðÂÅS™8DÉÞ_~ü¤”žj*ô4L¤£ž8+Å2pi‹ÚܺËbK“aedÝOEA6{˜]ø„Ïá…­×ó½òy³û¤j|6ÓM\꘰Ýñ å_[”K¨FU•…:ùðq8v7º›a¿Ó0‰IÐúMiC­€_&¬UújŸÒ„ÃH? ¦•?͘­F©s3_¬=P‡(Íz‰ú`&¦S0þ¿"$î|6Ùªù†-x8Ë”äH².ª;Ø=Jæ!¦o¼ÌÒYF°4n‹-F·‰6 6 ýÄA`rJ¥”zźm£Ðd?ÊҠ`ðùMìØ¯}Æ Þ6âYóÑ«ÁÏUŒÅÐ=dødË‚÷xçÝÿ¢H0U¹uôs­cÔ:§³ øÓLv¿†Ij^ŽÕÉð½ÉÛi¡ZT/¾9ª£fH­Ê¨J-æ„ u`©ý¿4ïkóŸš"K×ÏþÏUü_²ÿf!VêÛW5XºE˜6ó¾FHŠ3,Y½økhà #ünE] < 3Eÿø1Ïë]þWmúŽÛeÀóó A¼—®!pÒ׀˸@ó­ÃÁû0Ö$+íã¹eE43à¡¿ªˆš:¨óÁ-Özs¯‡B›‚ˆåÑ}¹÷é©eÌ_ÎhØ[MðvºûU‘úÙ ,ß²ßAý;À(ëo”>BߢûæËžêM×îóZ¼$Kzú¤cÑW>VÚSPl ?8É 7´íðÐýTöè"yTmù˜ÏŽexV•¿¤m—eØ·ÈÝ #«Çû1&õœ°ãtlìÕq/¾õlÙShçqÞ-¹èW 1¿ŠÍ‚IœR¯”à 2‘÷ΪþÚàõ@ž!C]Ák|˲k¹g…9ïy4ðÜY³¿ÎéîSd^‡¦f$„Ó¾êÊ`OÎbLùP¦rt;^øëå?në¸ìÑBì½á­oì”z+—×Á®‚~«BbjÕ“¬ Ó—èæî¶‹²?ß…GÇUeQó¶`K>Q6¸5˘ØöZNuh™A¿†ÁÑH°VGâbæßÚ{ äà6½·¿±>ý¨´~‘jIN±ìÜE’¯æ-ø/üÅ|Ø‘xǹ3T;Ûˆ×Êð- ÓHÂ(gšÎR†K¨,T@UÚ¼H[çÝÞq)èKڱݼ\vºugÚUÆ_KèfDÊ(³¼Š1-iøøÝZ. „›BZ®!”)¡Ê˜}'ÖéÈñTFTA¥©gŒàp»>N¤ó…Üã¹åzeÊ8&:Kžô꽨ÿM“Ý¡•d½‚åîä…-tð*Híù§ŸOH²³†UÎŽ=/¿¸c¤w%<ѪzÛ2¢ã2ž™É\òºHŸ†W¦­Üë“_&3·ÉüÅÀ^.#aŽãÛÒ÷È\-O˜ŠAålxòà·ý9T(ëYkˆa¹V9-°9Š6 RÝÝtu“Â3¥ß4¡µj®´¾çt‚¤©he’7¥¾ú†{lòö»£4-ãc†UáS]ŠÏN’Æ«|ÚÅ̘?‚/;·"1ßáúë<Ä~Ò8‹ R,Þkž‹Ôðß–Xq‡ŽÕ¡î/Mº£Õ@ûÕ’åTvôE2³’ ê‡.{¡bd-RÌØËô”¬ÁÈpgbQ½¦Fã'›.Äï ôÚØFºÿò´Q¡Ý Òj»õÈk²Ï®÷§ãD?yÈÕå™ãÇýæðME!{ÒC6¶t>2^#*D~ÿk'Òž2´ke(Ö ™»¸½ë †à2”[Úô³+áhZPÊæ¡ð5{ 3ÅÑ(§·4G È/ßBøuïEê/e»Õîžô¿0~§oò¹?²SìTOæ‘`Ç^òkëºRoþš <:èåö„Iy’¥óhm´ª#šÙõ†„‡<´cØ5îՙܞÔð K*BõŽ S—Ô£XÂÄkË•9."!o?D2ó…ÆKúÂv7*ßÑôœKMp ÞZ9M¡’ì˜ñÎ~ŠßŠÑüÑ>³Ý*æ¶…Ìʷܹv´¤ ªUÃæÙ“„,·ýoó©´KŠ=WäZͪÔm^s.óšö|×½° ޾œ d7—ô%Xs¡8Mæ+Éq°ò™©\n:ùÿEÿÁ~Éꢳ΢€Šn¯&¥Fs3¾JÉáûÛÓ@*áªÊý¢ÉoøÇ"¢©žíúø¡étU¡ýW]·ô§UÁë«`Ç(ÓB¶J…ÆõàŽ“Õ¬9ý!âm“º›„µAì–Ž÷|u3AcˆpÈYA™’ƒ8“iDÄŽ œ;| $·y›˜§·š¼|i×hŠžŽ;BÏHž [[tù+H5³€(ÞœIþ_{ü¹J¯2غ‰ˆ¼G/»=E8í©VŸ–ʦAø$§Ãœùù‘û×}£O=¾-;y˜É˜l¢f~3Ü×àüÛQsŒcþ@æpöÞ) ©BPæPW/RSõZ¥=G—þþžn:¶Ö³… ™m†VT”ÙN°¯”]Ò³ò(Ðμว‰JZ%«¿i›Ç½”³¾2~•SË[®éÐn^¨€Ê\sŹM‡3“ìŸ=]ª³æ|ƒiyŒÎθì]«¤ÏxYn’6>Æ~E wÇï$v»oË~5oEâJp€Îº~â¹ÓÈXÂ.¿ÿ> \-JøªÛ ²ú7Œ½ý¾ wµ»Þm¦ž†å……;a)t1癚#·ÁúÜC¯yÓW®Ã»7@‡kk)i’#>öKíŒôH‚M²,ã8ý‚Z)ÚTta‘§1@¡ìïrâŠÍ##±IØ™®-Žñ–üÀFP-ÈÑ*|Iex<¤/li|ÔÛý&–Žv|Ç=£]磲ɽüÏšŸHæ>W!5¡Ž ;0œhòôÖÕ0sUÕ¬> !æ0ܰŸòÓ$¬Òµhæì#] Ť›`üÉåužŒɪŒ7v½Ö\›ÊõÅf)w«ûnå¡rµÓf«È×ìï±×¸çZýèÓaîùž»Ï`ÁP˜¬çŽ…ãÒÒ¼^àôYÖn9:ƒhD½Îc+½ëÅ;ø`l´_ÞH ¿B! “~½¸nÆž8dŠ©«ÈÍžŒ ?‘ïè|Þ–J\Ù8²ÒR (f’:ïÊ‹p’ÄwO†ß¬)S§t×âe¢½>­3™n=‚ç‘ÀM§Óçr…R~èìtÒ™BÓbž]³ý/rÁ©Vd«Ô]³K{9j^•Ÿ²„agßQ£ ÖëV diù<Ç¡…8lØ)X抭ô± é‘·ØÂ0F—NR¹f(U¤šæz(Þ=…K'‰Ú9ϧ˜"øÎG¡³«öÖ–—¹L½}‡-â@K¹¢^d¹.kWÃk!hR%¼ÚG e–Y]C})ý^ÆÂgê–Õ¾„7bmöer"¸(WÕGÒ—œUúvF€m€²ò˜^ê=9ègÆ/¸Žm:*5’ûtXä áÚsIú›™jr¦xö6³w'Š Ccø½¡0ô–Ak¿Xóà BGžVV/›ôo6ù¿lÖ]>¦Ú{^™¡]Ó¡««£ƒ%ß<óyøy}lËç¡ÁS|†b¯22@rÑt°IwÍÇn}`†­Ö͈‘³ð²Îqk¬§9ë"{Oã¢XZžjÓ}ÐMdf†µ°™Áqåúˆ}ùò¢¥.:Ú Æi9L€Ìmái7\R*ºêøèJRž¿ÞàŸ‰ö #ÉLþC×—‡Í8¢Ø‘AþÅ5ÓŽÅfˆü¡Igîy¥öoæ\š§xRþÓL½’·Æ4g>±±âºw<ˆ{0Ïj£…ŒÕR̬‰œÞ€öwa¶ß˜óL²f~—Á\d¼Ôd×±»~]4›–êï~Óò»Á4ñ†¶Æ7΄ÃYoªÏ4Ílw*U™‰`ÇÖG‡*‚¬]û\9¨.µ§’|žkï•»D©êa¦ôr;ºòÇ,µéÚûfãg,ùé}uážÔÊYÊ|ú€IEJAíÆKë3 `câÖ8^Õö¥×ìUíM*GðÑߥ;}1Šç„1Ö û1FѹgS!œE½šã†7ÑñGº­Øø$ކÈRÅ1Ï~”±B»²RÝéXŒˆwFwUo9^b³#+RWù•‰­ô nÐ:IIÛ9Sé#zòeÇj­–¥j5Pú]´ìãV›2ÍÕ輜øäÝmTf–SH²·ýû®W‚æÉYQãéJb‹¶&5|4áJ]õ+Š®ZDŸsGÝÌ4û±IÛ@³¥8ĬÕ0?8¾]ä\¿LpÍ{ø„o`æßKæÿÁgÌ„;,µµƒØ’û0ˆ™x’Ðdø‰Kìõ¼íAû$©Ûà˜NãQαzïgò©}yÍjŠËÍɵu•9ûÔdUEDÛÄí*ýûÒ,¤ÿï*Ç{öÓ«9 ðkžËés;g›ðëÒÕ¨êk‹a©Ãì’ø¸Ø¦×¤uó6o!p÷r1« .}<œvMØíp"•sýÚJfM×*Ï·]õÐVEŒ~½¤ªèAì÷Îׇ°›)2£CÈH@õ…oáØÅtÑ šæÆ/C¿æ—÷H¼Ãl`ërĹTÑîY>Yƒ1^ÇE5˜s¹“5Á_óß•—¼.!K†Ljêò³HHÄh%{M=¨Þ,Ï£»5RPï ^®¢Â?U ñ Z#û² ºÏ|žY~Vw÷ciE]ÈtÏO|·.Onð&ŒWX;¹)]…Æê–ÁIÊ_„ùQHZ},†¥¯¬«han§´u)ò˜Ú@Ôµ“ÅÒQƒx­0è]íÊt[æÞâbGc{]²òN&ߨÙ/»:̦Û2/ÛïBìOñJÛÊv{z%ƒìó/ñËw ;ãFLt$ H–PÚGÓéˆOU×?‹ÌÖ亽vèTÒbƒvæa¡ÃÉÚ Sx“iøÒŠvê„BR€wÊ‘®€h8QÄ'ŸQ&Ф%oýd—Æ„ tKs6‚‰½Jµí½äß‹¼¯£1Û~3IfňFâG2%÷Ò­y*ý›¬.’´¬ó¤ºKGëÈÉÝl`Ý’îc6©¿K¯¦˜þþ3;å´GDg‰|ÿâîH§ Oc‚Àzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/Makef0000644000000000000000000000013213612143005031560 xustar000000000000000030 mtime=1579730437.848410329 30 atime=1579730456.432006994 30 ctime=1579730480.813789841 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/Makefile.in0000664016037001603700000006066313612143005032676 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_DATA = \ zfs-broken-mirror1.dat.bz2 \ zfs-broken-mirror2.dat.bz2 \ zfs-pool-v1.dat.bz2 \ zfs-pool-v10.dat.bz2 \ zfs-pool-v11.dat.bz2 \ zfs-pool-v12.dat.bz2 \ zfs-pool-v13.dat.bz2 \ zfs-pool-v14.dat.bz2 \ zfs-pool-v15.dat.bz2 \ zfs-pool-v1mirror1.dat.bz2 \ zfs-pool-v1mirror2.dat.bz2 \ zfs-pool-v1mirror3.dat.bz2 \ zfs-pool-v1raidz1.dat.bz2 \ zfs-pool-v1raidz2.dat.bz2 \ zfs-pool-v1raidz3.dat.bz2 \ zfs-pool-v1stripe1.dat.bz2 \ zfs-pool-v1stripe2.dat.bz2 \ zfs-pool-v1stripe3.dat.bz2 \ zfs-pool-v2.dat.bz2 \ zfs-pool-v2mirror1.dat.bz2 \ zfs-pool-v2mirror2.dat.bz2 \ zfs-pool-v2mirror3.dat.bz2 \ zfs-pool-v2raidz1.dat.bz2 \ zfs-pool-v2raidz2.dat.bz2 \ zfs-pool-v2raidz3.dat.bz2 \ zfs-pool-v2stripe1.dat.bz2 \ zfs-pool-v2stripe2.dat.bz2 \ zfs-pool-v2stripe3.dat.bz2 \ zfs-pool-v3.dat.bz2 \ zfs-pool-v3hotspare1.dat.bz2 \ zfs-pool-v3hotspare2.dat.bz2 \ zfs-pool-v3hotspare3.dat.bz2 \ zfs-pool-v3mirror1.dat.bz2 \ zfs-pool-v3mirror2.dat.bz2 \ zfs-pool-v3mirror3.dat.bz2 \ zfs-pool-v3raidz1.dat.bz2 \ zfs-pool-v3raidz2.dat.bz2 \ zfs-pool-v3raidz21.dat.bz2 \ zfs-pool-v3raidz22.dat.bz2 \ zfs-pool-v3raidz23.dat.bz2 \ zfs-pool-v3raidz3.dat.bz2 \ zfs-pool-v3stripe1.dat.bz2 \ zfs-pool-v3stripe2.dat.bz2 \ zfs-pool-v3stripe3.dat.bz2 \ zfs-pool-v4.dat.bz2 \ zfs-pool-v5.dat.bz2 \ zfs-pool-v6.dat.bz2 \ zfs-pool-v7.dat.bz2 \ zfs-pool-v8.dat.bz2 \ zfs-pool-v9.dat.bz2 \ zfs-pool-v999.dat.bz2 \ zfs-pool-vBROKEN.dat.bz2 all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025413607166133031614 xustar0000000000000000112 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2raidz2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.743787595 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2raidz2.dat.b0000644016037001603700000014045413607166133034763 0ustar00hutter2hutter200000000000000BZh91AY&SY[ñé “ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà|ßz¸åðï`4…m”šKffZÐeª m6m}on<d,Uݽ{å}wÞ³ÝÝ«¯¯hÈÄÛOmYmç»ïo½î®vÚ>¾»Íö>ûï¬ÐÍ›I&È,{î}¼}ï{^­y{ë= Å¾ß=ï¾îÞ>÷¾ûÃÝßx{Û<¾ßyôwµ¼Õk½÷o›Ùôï{µçUÞõìNÞõ¼ÛÃxïxï_D«ªëíÆÕRﻺ·sz뵎O=é&µí»Àù5Þ󇼥÷Þî½·—xé»w[º½¹Þê÷ºµã»=Û=Ýç¶½vkÞ¾«>…óWœÊ½4ÖI{wjìwoY+‚¯w:47}{ÊS×fíejWyÝÓ[·=T/±Îo¶;{wUÛ^õ©=©¨„S&¯{ÍÖ×é7Šwwuåw]×lî­ï®`^ùkyÐz'ßoŸ;Õ|T@&˜ LTüFL†Aˆ` 4™„ 2h 4ɦ„Í2' i¡ˆÓCL˜LL4dÀM4ÀÐbdÓFšƒJDÁ12`Ó™ŒFša4i‰‚`˜0A‰‚šdÀ˜M ´OÈ©í Äb`ð#4hTR1&„Ôa‘¦‰€§°4bi É¡i¤ÚhÑ“Fš äÈÕ=©ššOö“i¦ )í&5'“*~SÆ•?i”ÄÚj3DÓ&Š‚J š0@M4Ñ0š&ŒC „Ä0SÉOÓ5ŸªŸa{œö˜"‘Ãñ롨?äRˆ,A^0h_Ë‘{$•$!èCA€À#ØA PÉÀL€0®ÝZ©Î[^ÏÁøÙ:KêRØ1Î[ôÅ{úiïÝÙ^óÝì²Vw÷1·i³ŒpžOÖµ?Öí~{z&¹çþ7›ÖjÊbÓ3Íêæ›8,?4ß8G[t÷­M¾‘«ûwÔðûÊ›½Ã“³"£Âë˜Õ¿‡uàÑ϶Kh›Xª•uüJý%¡´×ï<ãE mZ7þéÇžÞ:Äç»/™™›g(œœ­åßþ3ðÇÊø¶8Ë˳‹º¬úb«ÿ+hž·MqR ÛH÷ná‰V=2%ÞD‹º>U±Ë5¥¦õ?$T¥WL×ì"#/8ju8xºx­Ì.î*¢‡‘Öz· QÊ Q^OBÚW(4j¢©µEr Ð4ÀŒ#J|“¦ÅåN`ÉünÞ¢=÷‹¹ø¿óhaƒ!@ Ew9 .&^µFB0‚H "•€}iàFÀaˆæ¿vk«-¼ @½6üF4·õ)mµ²å6àŠÀSÖ€·ñEG{Æ¢ñŠœS­ƒt$9YîkAiPÊ‘DU‰A7è ÛE—ê2P”JQ1‘îÇ(@¬´…ŠŒÊ„„<1‹ ) ¢Ô‰  ôLˆÐ ¡ h h3Á/DsÌ-†¬N´h}ã ¸[áÀÿÍ—L=)pÜ£´"∲‚"‰ñ<100Ÿ±0dIqÓ >#ÈcˆC<ñò««B'ÅŽ( 1H<ì®;€*‰MÌŒHœ0FˆûWˆsÅKÐTTPáÁ€¸ä"/À2ÅÏõ¦iá¹b•8" ÀkfˆjBãÁP8°Ž`‰¨2¥l‡ûq§:“xhŸ¼i utË?J¢A!Ç@T‰æ186'=™:&±á·ŽFÀÞ97PEqH*{j(x§1¡¨héL7´CéM0äGâš7pp÷¢‹C‚aê9dÍP =›:¨/rdŽþ¡¸ *Š«Ã gû[«ñqê›2nL¿^%9‚$ Ù‡ŽÑ €úÙ E)ôèè® iÈüb{Q¿Æõ¸*¸ 2¬Ï3î<¥LãÄqZeàvE÷^TîôV±°8¯eG.S=£ó ÷Ã@ûÆô èÂÁí˜|a…¦gçmÜñFëHfbN8 'ïÐ,yŒ:‚+Mèô áÿƸ¨o 4¢û°¥13™;,TE2\8ð­ ù,õ¸ÓL­,[‚8(@l½°°ßŸøª’"~P«ü'RT6æ  Û÷‹Ã—N¦ÁÔº ãPÜKB˜ >Q­Páï1#P¼$ n€é_pð6>abÆ¢ïño×Ó Ÿ¨zöj7»Ïäc›é h:Ï&”„´ÄË •X‚&p”ŠÄçgeJ³¦— aƒYRa„ÈÜB BT‚Bó’ HAm„a¨|Šb&mL³zÏ¥ ³ì°%¨%ƒ\rÏ`„sr¦8ÖÞPƦ'K¸W—ZbUS>±rÁ­E@_•ñ#Ç á”+GV\$‹ú‚ºqÙ t ô%B°ÄøYS Ú& Ä 0ÿ2%«,zzŽ'Ã[ÃÏ^aTúÏM:ý£U1\=áÜÍe±š5z€" ‘…»üƒÖÆfKÏdIêÉDº¥ªO¬y¾-Çê°a %*|Aª2ÀKà \çÔ’üˆpW>œtëm3ƒƒ;ª"*ïuÙ Ô/r`9>ˆž%i]“¢}<‡åÏæ×Ü=6¹PEû/ðok{¹Ýi—‚?£Fj½U$¾å°+ ¡¦<ß<Ïë–¸©8¹/Þèß.9S½©“+—ÿX¾”õÓ“tŽ çÕâ&{Â5£ûoʲ&3=ƒ¢aИžá<ò `oG•29E›Ý„“/üWM 0®ÏÅ l àâÃE¼@Q¸N1 } kHAm‚™é4áf!ÞÉcXtÝoå ê܉Cûo´)• ?xXà„ƒlNôä™À%cô×ij)& Â0ñ$¨¨ p{Ç%(Ç­Š>•Qýã2AP›Â‡”rñZªƒÜõ‰Ãò*<²æOΖ¨Ì²­af¹^x›}ÀõŒï†…­K€èýI“ŒÐKÅ}Ý´ò÷EËšýØ«¯!õà®Vâ*’)èë]ó ñ+X>Qác® ?LÂÔ:sÆßÛ…òÑ.°a îe¸äeð‘´é " }ÐV„ȹDÓÚ[A¡]‡´[äÓäõªoF@£´f¿ý¸Œ‰¢_ªiñ,Ò¢|¼F  øRs~¡yˆ„²bJ¡ŽÎMó Ì¡Ø°£ƒ¨ñ) à€!óÏŒ%(jGØbÄòÂå Û(ÈbQB(hÎÛºï:9oD‹1|¢ ^ èàÔŽÌÂ@Ò*ä<ìÁã'pä3°P_Óä¸C*#§U0‰fG²`Ôï9ä0Œˆç94\^ük‡æ4O³KŽ.A«/1øfü›±P<7þs¬CTýS 5Gà*¸úþs¦À3ÌSºìÛâ¸òXü¿ÙA_º9Í“ì ƒB*ý‚bÅ÷Ùã¬å)b\Rÿ.×-Âz‡[~t/b]ú'uèaª¦–‘ãÿßa¿¢1 ;v,‡&€Üu+’E2ø¢aÝ­4¤ïš %°²Õ‹Û !à‹GœàúÇ'bå~p-:Å|+"Œ=ùªü™B¡ñýžôã*pˆ£^îÿ5ÁÚiì/޵þ¬m^õÃntGÊ{Gï7£K+µf¥âuta¼&Ú¾6_Ã%îáp èž&:²Q ãw5‘Õ:%ÔÉiwOgsUotU„ iˆGãŽý*JY¢ 7A„_ï¡+#éºTXå–©ª)U (çúÍÉŒv{—ÈDóK“á#È}:rÏûin‹•À• € ŽUŒNnLOîü†¤€O˜µ Æ.*ÓÄôw}®TŽ 8ç&Q ™O­»1LBäaþŒé^Sf·èÜÀ3G>9‹ ‘‘ZÅ,,ô‹S¶q-¨Œn3Ï$>0ÉÖˆ5×&€†(ŒòäãßÔŠœe öú>œ¦v‡àyéWM$QÅÑ­¹QŒVù@aâ¾ÚŠQ ¹®é´¼e°­C¿HŒ{‡ãH‰-Ã$£U”Cz¯)ª|GB&€ÀìÄ~;r®0Á°z ‹C/‰ ‚D¯x p öðsw¨;/  >Â|×íÞ7pñ Ó^î2¶–„ñœqê¦y¼rÍë×@$ 6pYüÐJABD$DdB°¤B°Qhuš³Ûì,pku†C(Å!„Bèêÿ¹ÇÆ]à-QOh *°v”Éã4. Ð7n\Ö)=וÜw$àpOo/Úñi¶4·l‹¶‹ˆ((2'‘XÛŠ,ØÅOÌp€. œ1Ú6 1€/Ñ–r¸eÙ‹$9QãØÙD(`™p¥O@Yå1–Cð°Bþ¯å4US6YÐÒHaÉye Éðm;¯É0^W›Ð¬é„ml"2åB^k™ÍÎÖ™ì(а[êþ=SãLÀEçi·WׯÆÈ Ø2 ïGÓvjt7 aòãp%¤¡ÝeÜpš‚K†{) •PRÜÑ •/4…•/¤ V¯ðÆI;p!a´yšß%õ” ¡Ê="‹þæ^HCXÜcäPÄ] N£ q /œ¸t“¬Qy4Ö˜ýF©WªE÷ıܓWnjï‹öT&™Y"ðñãS¡ø4 WZÀ2 lT¹`°6ku<¤AµöOýÀN,¥‘æRØd‰…pÂ=ïÙÊV’çÌÁ—€§7©«5Û]Ím9Ú¯Ëßù!Ä£¶iùÏþEÒÔ‘û«Ù/Ìrb¿Ý^‚”wD¥U_¥¯)^ÚNú£Æ)y`@“ª„Ÿ œ 6>Àâ ò -õÔ´>Uö$CO%PôyÞÚ™»ZÁÄ®ˆ«R±êg}‘~ÉÓ/…¥Ö‘• SÉšŸpÀð¸m,ïèäoÇO‚¡q˜Gûø;RĨIê*u¹$þžçO>"Ö›hüåžTeÙ½#•=Œ× ÍD.@/Eæ‰N  , U¨ Tˆå½®{,k‰uدW“,s‡ùâÞ΀ÇúÕ‡ñ)"¦ =ÜDµÆJ íxtiýE7üã—þwƒ×— ­§Å½ Æ -v¦™°\Ù%8“Ý+°‹9 Z ^Ú„š£P'ÑÈ5L‰wj¦L´°…7£4ò @$¸T „Q:%+•’\ð8 5^ðl¸ç S3àÏœaž8²A®»z„—©ºó=}m/¦,†žã]SbÀ-®è  L-y‘*ãÑòNEˆuŠ Â¶2Iú 0§ŠnÞ´×HKŒ¤&+¹ä_4ÆÃŽG’`V½[Œ ìkÎB»”fù™ò\ppqÒ`>Û™Pè€Ü)½PF€,ù–À1S YøIùm«:§Ëîzܳ~AŸ‚B«X³Þüõk·QÂ!¦o~n*œóòVŒx®¢(-•Ä{Hö9+ª·´ ÆU†`öù†Í„ˆ Y‹ây13.•µ¦ÌzÎÙžkÀ§|ê7äév¼öMÄçü²Ë Ì`³‰Øko`ÒÒ;ãõþ‘Jh@a%m}J+ºIÇžCR; RÃ#D· d–“N.Å}úUºZ–œð¶)Ëè’lú`!«h DH9 Zzãôt³«mSˆ7nTrŒÁbÎÛ¨é7ßÎê2‹ýôu9rß2` 6¢ñaÿ8ÁñwŽ[ƒ¾Øg•º;ž‰–øºžñ:ylpˆ'é3ùŸ]k‡–Ä4~ãC'×……ÞÔ±@Îâ†rÄwÂ㘆è èÀ}@õðÚJ«Qähš Kãl&ÎñDå{ÍàQ8$Ãוþ{õC¼ÆœKäY`@€w…‡zCô‡óQp±Gå¦c'TáoR=ÁtŠ0ÆåT+–nÉIÌš¨AcáÚßãB§§O5|Zühë,0{ÒÇÏ›èpžõ×èzw}nAŸR[¡k\.m4žeøÌM*iM†àmT¤!Y%÷jÊéB\ÆŒ¼ã6?¬# où0Í2Ö~ní¶Tñ(ËÔEa:(À/Ù¦‰åµ±Ž’ÔÙ. °éÏmmCòH1UÊûÔH>ζJéT)€x”Ötp4ÐE¡.%ŒO³´å|ÔOädÈiS˜2gwd0P—á4 ³Ê»³zVŒÄäq q{Ÿ ®ëŒ=sé¸eØv…Ì,y+Pë^ñäêˆ0‚¥ÏZ!5>œŠå †>ç7áFj ñ+^»õ¢N…Ré_ƒ6%ñxLwçQÂèºû(!"L û¦P¦-’üµ™èK?Îp#×*PÞb¥¼µçÅ]s åú=FR‚4‡Ò¤€ÄÓk~áûŒ6<Ö2JÁ|Ð:]â’û,R’/ùUÉr¸uÙ%0P‹U¸ž*˜íå?M (Y¢x£Ç/,!w:ľF™¬”@ÁΫÁûìzÈÌ,¯0aM‡½?'Qhð-!Hg9ävÀa¹öø(™®p;ÌVð;YþêV¯T¢çŽâ0í܈ԋ/z˜ÕàÂÔÔ.‰ž»wEˆ ô ë0 )˜Á’i¡üÇÆn¿ÝžÀhœÈ0ç•C2C¯Çð<šœz@!îà}ðl:cFf¡º•cAƒ£u(|üqÔDÓŒC{«E0—[c'Ì>uÉUàŒÑÊnÅ1&àÒq¤?SÉ%*%x]õ4´yìMA”Tãvub,F´ç΄~ë ë³]]ÎãÁüh Á-S+k–õ3´¶ä¬}zÔˆ@î T•6óû=J)ßòá®Ï4Ó$±F›x:ŽÌÜ -çÔD²Çm¾•ܵÔ-®Þ{Ní¦¶R‰P¬+v%¾³&¸F¯=>¸p€eXµŒÎŒ#R,L^¶Ãèºb1oöпKqÌ3sqx•ñh,–—¤Æ“–ªPb`O6ˆB^5y_ÙAñ‚`À‚P…¦%i´Kê rG ptŒØu#mvsy=å}ΈÈcU§~ï-€ñÁ°¢¥L1ŽK^ƒ@à `· ID C¶ºÕž*:j w Àó+c«¤;^Ö¯|ŀЧˆÈ[,ð†ñZ½MÁ0?êptÍÔz:¨¾Së›×˜tÄgš‡lPj^v4Ùå¬öᔫºòtîHSSâ!|P `D: bEnʼnãî¿ä#ÅL¸O0t$è0¼>çù½øXë|D‡®XP4 |n@y¨™Æƒ@†Ä¯‡:ÂsÎn9WЖJ™+Ù* º(äd tQÍÚH@O´`£ ò1Úòõ¦²ª}>„¼JEhW³wÀ-ˆù§ÇÁ‹'úÉÅôi h ‰Ê$xÛbê‘ÈqGÜY©åŠÇ‘…újhð $Ñ„*+(U³ô"3˜t6¤«à÷…Þ„émK|»ÌÍÏJÖZHöÝ#ùo€óNÈùNQLw#æ×siˆ‰Î+ð&äHelˆP‘&í¦¬›3qÓ¯WÉg Íã„ãkû"Îátž:t¤'Ib€¬‹¨ñz6„ zä´üY‰W¤F k.|4©±ln:3ú:·Ù á Õ¡DrbÁ‚hSÿqmðÐaLiޱ 楧Œ£ÀÿOí=1Ôk5ʸtÄ£Àâc™ädÚð"MåTq õ„„F8gÝÆNm`ƒ™ÍmöG‹–zsÝ.,€nPúeçÅü%Õ¿[—ÖcM9ö OÉÇ#IíêsÝîyñâž0E!6V’+§ÒUÏPxE!FIÇj€øä¾-t„S•ü õ¿7?n-ªNeLtÄo‚´Àœ;«Jõ>®ÜºÔ'-þƶïâL|}qÈC%’%ôE?L† †01K쳋$Ia-‘MòÏžh} ¾YHÉHžEÜöW2±'ã«ÒÚx8¤µŸM^!ˆÅÙùõ3ô6¢ØH'МM(¥ð½ Ø ÙìÙÑà…ÁêØXc&‡u¨ûÐ÷߇«A›¾9üp ÷¡wÜÅ7Äk>**Í¡âÜÒ“Ó&DuÇ€N3334š™X’5$ ²(Ð!¾S“콎;)ØsÏ?“ÿ·EeäxE'‡+Ãð ‰9`À·JìЕÌæÃ€è< 2Ãè†Aö0_½â!^ƒ/WâðéLKÙÚOwCÐÆz~£Il˜»¥ºÑRýÊú¸GW!§¥V`œ0+-ŽÄ¾ÕÌ1ÓòäàÓ]¾M£íÙ11ß0Šþ`Ú-¾±4’“5Ã(/¥ûúyüÃóéòä?ò=d½‘³ä+Œ°ï~98F”NTÊÁJèVÍY²àg'âØù#œ}ÕÞËÝ©CRëÒ7ê”ÖiPv @O£ê%_Cva„š®å>ìlfpÚÌZÀ:Ȉ„¥‚Ǿà‚)R4ÈAÜ~…qÁàå7*#ÑF{L£Õš&’GÁx:çÞòÖ6ÌéÕ§þ“¯üb5˜Ãí…á{fÊþbÙðµ|$ šÈ/ˆrÀãP{ ¤@j«µÄˆ ¦Ç›Xt€hÁ’»Fïž½ÆRb{rç õrÕ5yÀyS1{»ZÌK»¿P«yjÝË9jFþtL¾/ Óçñ¡ÀôPö­;…5óìœXÄAFçƒS&ŸÞÅϧL)»O–oÿb yþÑÙ¥­7±cÒ¥…ÂóÆ=—ão © §Ž@™³ìV1y>tì Ý|»Z’qN¨M3ïÖ¼vؤًnj½Ò÷Ywÿh¾H ÚWãd$è©: Q† &{÷ùßü5ãsÄ£0ÚnìŒ^:÷¬¶õQìióCi å¦‚;…@udTãݰ$ ˆûb<ЩÁÄBsb·[E­jp˜»J2ð¹öqYïrè®T%s5§eM“Æ"©: ‰ÑÝ@W€8}çO™c€¡¯ø*oª–0$P3#BˆF*Aàʸ}é@¤`ûœÙ~ˆñÓìrF"_´#‹Ì°É‘ÅÎ"˜ÒxÿøŠä>£ N[x#Ç”˜1TµJ˜íq7àßa}œ¦½‘ªi"®P)RjCUŽ"%˜ ßLfiáï‘T]E˼®§ÐlØN=dý¢ÒuG1aóتdhóx³ñÛŽû瘨‡™»±Ò½ÇßcÙ¸®ÕèÆŽAǼ»k´áùþÍ ¡¸8dE3„(ADÉ&³1J¼ciô ¥B^ræŸ[²ÆšÑgÇP|燠8ê±K!¡"ŸyËtîYÍü]¶eÑj™C &\ya¹Õå)ãè²"¿~ õÿ”8Ó’©sRUŽz¥‡i8a8ÜÇê»Qµ„ݸ.¿6ă‚Í… Ðí[ŸbgΟ¥Èúßdà@æÉë4ü"\è$Ñ`·‰«Èª(÷¬Íޤý9?Ò& ’™ê>‡ø{ª á!ùãð mm©qU8·eQ«6s„T ®äàkI#?N0ñ8 Œa pVÖhƒ‚·)“¢œä=ÙÎfŠ)‡åÎ;œ ©<žòò!"ºÇ”í0Ìþ˜àOy± 0\fhoïÀxW¾8±¿ZFf1%-¶Ók÷F#†f!Ìõ'ˆå.ʆ"“m[ì" y®ßEBŽÉr¨r~Ô*6ôü‡'Œ1&N©2ƒëYÈÌÞ8Hêfê ‘:µ1c•úÕ8ºÊrnš† î†]0â(vögšÁhÝx&Ý^}ìñWAرFP@EúÛ9Ž™‹*£Ó+!5×Îü2¨W_aQ¿É®õ@pËøAUÛ ?Ô.i*¥.4tW4@¶0D }…"‚›cס,Ú%¥P;¼÷\È_ñÏ:|seýD!/žÐ~Â&õ>]P# ú,¶ÍìøP]˜ý ºa¿~Wã'éÔzêÑä7ìjª¨ñ2F5ca`Ï~â;B¿œ‹§JÕªtÒœ3ûߜ慜±‹˜P*ä~¥ÅkØ&ÐncѱŽE©½&3脹]ŠŒˆL92 ›”*h* KxnLK969.Öñ^\õíTêÿq €ÿXµr—µk¥'Ð@¬µQâ“;†AÑáŠÛ ZWSºNc^¦f†u•]Èߎ¤ýCˆË{*K“a.vúÍECObòÜÓMŠ$V¡£“ãÐ*0ÕòM Œ?dJNœ… 54ĬhœŒ ²3Tµ«kSÛîÚy‘-cÚîjkló dñ­¯›Å{ãÔ¡Âô¥â©)D£${œ±:D µ gËèÝŸ:$LËhhɱ‰œã¨¹ˆg¶F<©! @‘¥ =ŸCå‡ì B¸­ ù§…|5M>†#Îë$Ù:ª}°5|–§µ˜ÔT;ÊcÉÃðqS“ qj6È·¢ÉJ0Y†³Rkµn f@( ½¨¸†\Ò¥\|[Ó˜ø(ÅrˆAæòr«Søõ:óù{Cªó¿7q"¬óR×èïØvœ]Él*î—ÏŸ!ÿ§¼*…1H¢Ôm§À˪ õ)¸¹s»³¬ch( ýÌ%2@AõE¦í½À§¹;Ú¥5yL®PÂ&"0´káBÏ_ÎÌmä%LxÑv.-E6d²n`^TǤ° xÂî98=4† £OoÈn>¯H˰ÇßUIê¯\3w©/ ¯ÿ×Ì „ƒÒ ñM$€Ô}·Ä_/°€ÄOç=¯´Ç`Äs؆Ÿ0ðY‡jï—d¿ûßf=¾˜ÅÔ d¥`b:yÁ¡prKϰ áí”§M¸.!Üg8+;9×éμñeµgJEdË3dM ×èÑÙ_(tyÏ]»wr€3,!—>ìÜ^¯Üæ]!{d¤Àað„2ír°Ã6Óþ£„k>§@|aù@¸}%ôÄ3„U[‡^¦b)NpX¥ðq{”œ³>»¾®hÙ©2̯Î^À’ÄPȨ9ç@,ŸBò®Od†«ézC'º äÉC,Pqó̤yCRäJ…bél·¼"ˆžL(äÑÇmÕ£ dÝíñÓs,ú+Þ 08ˆ‹óF gÄÒ¬SVÍ… UË ¢2ñ8ù˧¼»ÊÊFÅï´eÃ)€¸] zèÏšy]µË‰Ÿ¾Iä߉hŒ°b%ÚJæÍO‹¸¨OÈkáÜÀ0^@bY~»Ýjk)Œ¾ÕY¤âKðãâú›¡«öTÂçp±ãú-ºÈÊï<»ƒ%Ðlû'Ú ¨ ¨»²åà'BmõðçS…3…)’ŠÁì°ÝàÜè6…"Yqnz¬g®™¬‚»Åx„"lùðeqãžÐÕÿ»~ Ú§,êX Ô)Þn¦ý£ŒÌ([Ëj=ˆ‚ -Ð;1‰[†Mˆ»äLHžgè-#xÃ)"0È…1¯ËÓ»ÿº'Ý[´ÜÌZZ<ÆÂ‘`yRc,hËKÓ“Yk*íeîDÍŸF‚ücÉ—f§Ú+,¨Iû×3C²íoŸ‘œ\S!ý>=4Æ¿Éø;Œ^ó÷Íeô°s%]y…;ƒˆŽ8É1;ðêÜrÃô@Œ CK |„! èPíÊ1»hÙ ˆÒÂu¿¥ H4‚٠ဠŒCéh„æ¥4”pQF2‡¬H–òÈKáI°íÄùfW£G€ß>!M=ߘ½ˆ¸8s%`ž Œª(2© 5[ÉC*Ã&qXHC÷vûGEAÌdÕ­XlࣴÈásç°®!ƒ™Üüº:`ð|ª5—}O Àâ`¤”,åoÁ?èÖæmò³ˆHŠ’ÐJ' C6`ò¯?_?6 Ë?ÝÓ™ÝPÈrÖƒ1³ÍÅ æl¤], vÕ V6Ç#÷ëΔ]ÔCSë-íJ¼Û&OT÷} ¡¶H]Þq0à< œ}Pv”ÒXØK-éN°¤ê´È£“ª4ªOK‰ç„y€¼ÙÂÞ®GÏ'ÉÒ¾fׯxÖÂßôÏÉÎktƒ‹`2dÈ d‚±¬°jy£¶wP4üTÑÇ}„DL/Ê­¦EðÒU*¡ÊÔi½M1“•º2®’¬yÑÁƒÍã:1ÛÖU×W„û¬l6J<ª5?Ô¹ W IÉ¡ÄÄ o¦ºx|qŸ'–lbËä¼Pk×T›ëB*ÙˆNô4‹XO¾]LÃ[å·Úç4ïÔVùâÄ·›§Vsâ‚„8zÖHfë‹ðôUû D›–PËn¯É×®¥ž_3u„Y0s·>o§ž°ÞJ®ôŒ^{&Æ…Ld6ð̲8¨ÈOõ›r«<¼la¾ímŸZ#Ô¡Ç‘”o¾GÙ‹ä% cÂm{áaæ ‹-ÊœÈùßJþ¾ ±§åe£à±FI1mlæx¶!XtèõöC“ëû0Ä{RËÚ„á%aéX&­I!/ä&Š^Àpf( $ÁP {"…h˜Jo‡XZÖõ/ü_ݬ'òñËE..`TÃ3¹lÉêq+ŒœY´z’†ý»h£:x4Bžp}õ‡­OãÚŒ›­}‚{+Åçw˜0Ä«ö£±ÁgK!õpÙŽ´™s÷²-][¨*Ö…ΨìJþY~ÀÌ’ñR´êŸ3aô @ã­(„!t%h”JP5d16Ådùƒíg†ÚŒŠF-ÏW á 5‡–×þ/Ý]9úªÍ§Ñ¶Pë¡‚èvÁöHѪ†Tßò‹Xù]7Oµ€obâè[.` $T´ÕIêKðRÛN …ŽÆ€Ɣ׋"Ðÿ½àøÆò¢®7§é6ÇíÒºëBW)è{ /B©hUHYô›Þ™(½nêCÆÅäéIŠ8ùÊDpzèË ÇÄ6§ål¥5 ÎZ·>±ˆÜ–ˆÁzã ·áðbEÛYG¦¨€‘ªcÔW"G:ˆ=ª*]áP±ƒH‚C#ƒzt2øò}káyMàÄœ8]°âa&Ý}&w¨jºúÄÚ ªØØe`ðæNjXG`¹Z«á|ƒ`W¢,“’¼a¸öîš¹@§yz“Š}.~ð“û{ʃ¯<6‹Õ£õ7ƃ„Àv BŒz毮6ë•^–Íðñ¼ë÷OÌž¿p s:Óå³fiþçbë ˜£fëÓ$ï™ô,Ø·ohgü“–ÁdM3QEPù+ |ßb$-¶¯¦¥tgíÊgUý%mý¼2´ì_^ÄîÛ$òPnÅùl'yëžµª|°™ºEïõÊùªûVGˆƒ…lácv\L¥îˆÚ ŒFI[…Z"ÿÇ<ßþhõwʹ¤„ `ÛìÍàà§Åý¡^…¤ÅþùœÖt~hØz¼µ‘#pk.ý°¼¢bj>&$°×Ùçe¥Ñä ¹ˆø&±ŠåÜwÆ#†‹í<Ŧȧõá„5™B‡ÙB 0·U%=}  Íœ+ÓLlØ9ð=טtÒ¹Œ`çV㛞Q å;1ÿW!bàm‡÷ÝõãÈhWÄ>ò€aÙzŸ}ĸÑdzaâ´ž¨¬Çè÷Ÿy—Å+ž?9â.zê& V&ÿ]ŸÓâÀPçäa3–›atdʈ}ç÷B&á´–~ãà„Å 25÷<ë™*n‡è¢bmÅ¿ZbËmr=0³,÷*ñ…†F7¸kã‚Õ“ü¾Èc0 åd[ê`¢pÉ_!P²OÇWñ*î…ôËúM3gz3‡ Þ­·Ý:ui<’C·ùT†1¬›Òõ°=Ô3Ü ÙÒE¦u`µÓ{,Þ_Éävøxn›w7¦=¬³í*aXŒnÉS¤;ƒá€›B¼=û¤œªé\Léô“ÆmDÛn›âŽüQ±ZŽ'²¡‹ux\ó |¹’àέZbl!šU`P¹dB)ÐZ–ÇÅí³Ë°FÐÊø×XÅ—îˆ@'~_S³›Aõ0p”ôÇ ƒÞ}…â—‘u·V°ÏzúÏ ÝAÿfðÁj‰Q•¸õ(ŽŽ!9a±Ì”T¾ìL®n!¿ÁÕ9Oövx§—¶Lù/ Ä:ÖÜÁß|>·™Ö£êMRC-ÊÂäÐÊâçý˰üÆØ|ˆ ̽<$Ãõü@) Ëæ=FJk› ÆÉ€<û´™2¡”¬V‘©/HÉÛ†R ¦[~ý9?(=£"¸þCÖ¨«"3 ½5'K³“ê|YšÒo… Ù Øçm ¾Ëæ2¨ä&žÌ£t1©NQpÜÓå±{÷'IøÅ/‰3ßê=Ÿ¸á#%°’ï ˆàªÊ2õ{ š‘L‹ =U6ÛK¢/[ó?¦GÙÃQ^å+@I’hõyTËÚQ8ua#A6–v#7OÖ©:SH¹Ÿb8ÔßDô ì[®i°dôʪո¦Óv Š´É”ˆ#œìÿ|9•ñ$Ÿäà&õŠÿŽ.eQÆp®0Ò—˜(©‡×0ø €b -U±>©”n:¸v“õ¸úÇÆ‘m³ß½àòŽ…¿¨`eœïOƒÆÄ¥}Þî.JͲÙ>4—–1ÚdáÝ×w#ÿEj“†Í„³º ˦•2Fi€Ž`—g¸å¤§x§-åã:­Ãåb§ùÔW5²âéŸÁÓ-çF´t áw3F°á¥ìœ<Ó.W !û'¾jÈ$öÏ8¿“ê/¦T¿˜rÔ@=³–8h@Иó^ZιßOäl„ ¬9B¬6±‡pü4CF(FvcR0Ç–”Dä#DL‚ÚA´“C*!žõ½—ˆÎÉ«o L¨•.£©ÈQB°lOÅ0&C»CçïŽ,b!)LUÚ³ëùk뀡bù:eÏþ †TÝÕ‰1ß$6"ÖDøTî¶Åü.aìPø'ênÅõßlí=VóK‡W†iÁØŸbž’ÙŽê 4 gÓ6¯Px­»xÚ?'èøW—2¸~6ŽÿÒ'n¤ fÛ¹¿Å['qÕ«Ðwtªcm›Œ‘é@‰ÀøžJ#ÖMBy =Rf¤+~­ÏnógÁï‘9@}æx{Pª%ÂïËO1í(T¢Þ„°5TÇ3—2†.ßa¸XAŸ]ÊõfhIñXÁ¢²33f=ù­@6–dP2#5 ¶ÅÈEC˜WpÒ‚¸Xpbއ"æxË֦͟»‚ÇÁž­Ÿ›c¢jü3\Re%3xTÇipxî¦[ ‰Ø.—¤™€ 1`ÁŒz©ŽØté­?9q”BD´¼ŽSL i?¹–¹ê1{ÉÅPN©õ†ñÂdUS_?n"‚i ˜”ÂÍ©ÒùÎ'Q/¡ oµ€Zmþ¡$¾ûúhäóM Ùd4GlbÄë ÁRg¹–*àŸ4Çdß“jNAÝŸa»5Ä åŽóÿ£TxgÀR T|¦”íŒ1úúCœ[Šý“#µ:0-YÁ1Q€XíŒ3ÔÎqü4¢Á0ðÈ=Š\Ñd¥*ê1•o2øp ÑB`FÚEûûG=ù«Æ˜Fd1Ù¸?[kÞf#ÆAŽþùg9ö¿Ä0-%}šý] D"‚*¬dò¡æò™l²ª¿R½ŠìØj{S(¬ý?S&hh̵ Mç#Ý,öD P·(µ’¡”Xob ¼ˆìy•/B¨Å8²Æ[iÞàtR6~q'ß[j$u\KCu‚è› ¥kd&°È:W º k^°£¸Àë!’]Ièeá®zuÄ`Ðw S¹¯6/¯é<ÎÇÁ0y×è¯ß#ïmìD¸ôž¨¯5ÿ¢èr%ƒF "Á4íqXICt`eù熬´¶ÛUÛ û 2vûNÄ=ib& òÑØ™;&–±`—=Ÿ‘qà':0´?Ì\ÿòS„£±:„r°ÝJ}w¿Ö2ñÉðÖQ½Ï uªJñ½åcÐÞÐàCUÌøòâúRt¡°ÆrsïnÀ(tZ^ 0çÐË‹·›ÞS3·ÓA·N¿§ÿEçÑA ÚT…D~83+Hg% ¾åhÆA­ð×@NÅ`”Å{ú?ÓýÀ#ûä„™«™X)“¯ä¨Þl¸eážu¼™T½|´çy À®ï²uÇ寇|έ°ná‰rÌoW „Aîµ#àŠd5†˜QM݀ϓàãÑêÉ1<¬íXcûs—a ‹ !kNÈÇ\d‹Â/χw3A\|¯ãŒjC§O¢fÞíGw†#…³Þ®y:®z«üUÏ P_ñ ³™ëö·ûÍ”eZõ¢Ìíî’,ÃÝ.ñ}-†¬¾jÃ"[„À3à>ªhÇ= ¥@½§á~)CÓš‚‰}udèäðvÕkWáà-žšÅï«ë‡]\½à•ùœ7¢»Ë¯;%’»/€áœK!¹_ºMìú÷%ëJF§KkËá?«Áñ‘EÆèo'ÔJ…LØ’$ötëaƒpEd:vRæRKÔ5åüY üu_^²šð÷F)ÈA·ˆÒݳ"VÕf´°) Sã¼ñËJŒ‡Î¿"åK§ªÁ™:1,+½p£‰α³oh ¤÷ ÑáÉ(ܵ©°äµ3ÆÂàÔÒ°¡…ï@PbyšI,UŪYC!Kórê[&鬫Êô íV F;ï©ÇÐaú¼Æ,€wb¾ï®¸Ÿîã Ö[v}›³™%+÷ |Q 1Žˆ#ö˜°V§ÃØoשÞ"C›ËZðö÷EÓ•ÍÇ%Õ‚ç=N󆸥µÍ“` †s;/ÔÆý€lM¥Þ-|šó¥I¸–fäÒe×. }‹há=ÿPõ\gOÊzÉ:ã]ÛÇHê¨Æ¨¥È‡W‡_žë$)æ¿ÇjQ«Ülÿ«Mæ•¡%2ÅtÌÎUÇÓÔ\9iŠ?ª!Åû¹UâYJ1 9vÔƒÁ› Âu@Û+FpgÌ®^-ÀF6 ݧ#óžX!ɤƒdͱ¨-; $…xdqú~0PÛ ‘šúz{},†&tã"¬—–ƘX˜3\ ƒu”#ž¯àÌ>Œ"å,fÑ–Ž=÷¬<‚MD‹7mm¦ª=Vî:$ð‹þ¸Êa´¸¡dÕºM8Ë^øêM~ÇY0ÍÕt0FÓ‘Ý8Qò^è2*T–’@Ë5+ÍݽDOÁ‡æsÚ«Ä3°/!Žø ƒãOÛxyw¨œúÑæ´xiÀ‰Eþéâ5Éa¤3v‡½‰¶R;X£b†˜óø° š½fµØiœ—¾L­lPç¬æ–›“ûhïü¸fg£š0åiFmFË3æþ¹WçcïÇ/ÕÈQ²sJ+Iú^ÜsSŠ~IªTÅ™­zÛns¨?€oIwåÔûz5Íü\àîØfŠq¥sƒƒ…*=GGáM¨põF6•edø2$¼-®"Sû…œé “û>5›Ù…¾RÜcãá @Ø"ZöåÓËÕ°â ›7ýzŸÌ®`þÍ…cf¿2›{CåX2ͦ‹ú»Ä"©á²â!„’`©¢ævýú DaÅsÚǾå»5°»O•<’L>,yIZ‘ÿÇXûT2\Iyµ· MO€=…¨>‚¹5‰VXʘF7Œ-ë²™Tvžƒož×ië~Â0%ÌŒÚÚÂV#Ê’Ø?â6Ž‹ÂLûPx÷%îYñ~Ïz"äoRò&1ê¾»ü¤øÒñ$;+Ñʶ/)hÒQ¶@ëõè ÔxÙkƒ@Aõ:þ¹ç=ö ¨>ÛŠÆš©þ¤î€ ÍhâPñ䄤w¯\-Ì+•p“ ÑÏÉ8¼GÈ;ÂB^î0єϑ)8]c†w§Š¡(CÑ_¡8rŒ(—ë©|6D5ïÀpã~&µ:´W7`ìxÊþQàßI{µnã.?vdo‡+IɌ՘£"nHJú³|嚪 +ÿUVðv$ËžG~ðÏ^5-£p;ý݃jDœQ)åyÆ õYf]U]ÎÓUY­ ~1d¦ ÃW.îÇŒËñÞZ *hÇÛ' K'*Q Ó=Ì]b¢ä©.²NÂ7£FOÅ&ÙKÊã%—³¡Tnó„1ŠÀ™ôÌʸ»=iÀ]øèr3+âfâ<…Ï`®‘¨v¥×ûÈÝ|n-ǃ‰ÿTRPŒôÞ@48y ÄB6làœÚ¡bT¾”ìõÊDå^Â'hí9ÿK;…ôëúOçë|y¯ 7 'Ÿï£¾Rmk¤D@WU]œ× þš\æ)ÒÕ—ÒÔÇÍŒ|Ó·0'/ýã«OV-úÐõŽ"…1Q0ÄÒ®Ëy壔ËìhÄÍ= píS)ÏsÈ—”`¸ÂTË-ÜùáÉ-¤Àq€^‘“lTÜB1¡æ |e®1MPؘï :ͬ¨„¬˜ŠV ¨GaVoMãƒcp3M¦û^ν<¯Dª[÷ÞV¦ÊmÂf†I³Yhø};©$W4<§Óë¬Ä Êc}øiŽÃÞ]lâ+ "øBÁ†gü#›ªòd6b†&°my;vçS ˜CÄc ‹â¨£ôC\è{‚•ØuQ¨ Èq›{ ²&±àRMZæ&„¨Î,ý$åRO‘ËÅÁz-Žh]Q`íûÌ¡¬©¦$ñ*5àV\¢J{-EüÔ);a)½¨²¬\µÁÖÐéÌŒ(LywFe: Ìvû\E: üÏî»x<âpMX=BL±"BšÝ…`ê#2]½ò±«á¥Ïåù*&5TOjë…AÝ»½_ÒFím •ä0‘p\ü¢“W¡RÏ| …¼qžöRFÉÈ öc ‹‡°`É ûíXóŠüVòƒCÊpLé§BÞV¢Ó&哉‡DÌßöt OÚážùy¹øÛëwE·cɲXѵ¸%RO‹‹6\ –Úž6Ô ‹AÊÌt̰šE%Üë…ä`§€×îĨ!­µi D¶¤à麃ŸÔf!=³5¼søó V¥WÂÚ™Ó9ê ^{˜TügÅN,Þãºå™z„1²ûÈØN£_µùÑŒ@£ÍüǼ!pƱïõ‘/°«ÈµiaÀo`¤¶ï`pQmH½À¹÷÷{UÀòbíŒÆ³Äçïq\ÃP³[߯…ÏT ×ÄÏVª›­Q¶€•þr… =ü:„¬”\]Ñl°§„º»FÏý^ÐÙ¶Šod²øÝk׫‰ïoZÎüÓ+rï–nmAøÐ¹Ò˜b.)#“`u÷½9(Ú–ó£AIC¦B«â¯/µ·ô© »iš}R2Bƒ›Þn}û/,¹µ»?Œ“§í|Pˆß0û¡-§SNMd Ù‰¼ðOÖÎ+H¿dPã•÷w!¶pe]12)\qÑÄêdTSß{ЯϹÒ%t@—CLq«Í’™ø`èÖ¸:{çÞSãƒÄúßë Dôô¸¾2¥YôM]K¹¢4ï©€ñ…¹µ%D…uÖÜ-'f¨õâDY–cÁ‚€“+¿$Üž¼âlð¿÷çøFÉÛ;œÜGOPOÍð©;o÷窌öKŸâ£ †wá<å<²È¬/ÖÒìWÿkD9e\O½!<ˆP…­-ÝÓð æh%¾9—}¬8 D…j?veª7›q¡oè¦u-LNÅ]"ñMöMº‹Ie竺°Â]ÕqMh­ð¿AŒ›ÝÔ¿¿¦‡œã~¼kŒ–‘WÃS[n.°HdMÚ} Z_®zzâûƒR?Äuë?Ô˜ƒ¹.{šÑ"CN;žt?ôp®g#]ÍÎÕæRï]~ .zÑœ.ò ¨$`hI1J€€QÆÕZ%”¼5ôý¢8.¨íŸ3Å@Iã -¿ò³²ü=sÛpÑ÷´?€N÷AMOæí“G»ì.£¿hÞ…HØõ³øóÐ^³ .hÕÉj;òÒ7Í?«aÑ×°dfÅCq:¶7—Ù”“‚ý®£NhXìû‹«?>àŸÞ­«Tgq½éš«ãA¾éX-Oá­ÿì_fá#Ø%7iéaRÍ"ζcTˆÙä¢3‚P¹.$oÚ¥O÷·çS.ò”µu¥&h“Ãýo£3g• n„túHÒ_Úµm!ÿ1ð›´by,›b#ëˆå*x]v3þëój©Ç!̼±Uºmò»Œu)=É#øš=ƃ–¸èµéѨØÜ…4Õ÷9¿Aä‡vr Ãñ·Q­bDzû8Q«`€Ú÷mMU.7,dñ'¸ÜN¦4ƒ î€Ö¥È bùÞ­`Xúžè"¯`4_j¶ïuOÇõN‡×û·ïÙ•QÒÅçcœ„ŸwÕîÉ|KÉgWwØlxx^¤.1Ó€÷ Ûá7•Û¤:/Uã¸h&6p2-8·ÖÛ]݇S3óú¿©‹áp&aÓsçvbša§BH=UÚ\Z™ðMSe"¿Ÿ æ÷‚7ph‡Êü‘›4ù“#ȱ¾ï” êÅ ³š–ŠÐÝOÚ×}eßS"WF0Æw¾¹LSH÷è×9ÙQ^m±—ûü&iR^…Òe~R21´GBÂìE ü$+RŽ ‡–¤¨?ŸQQ"¬ˆ9›ÀuíMp6@˜@÷Û^\O©\Ü£hN×ÓnÞ#쇥Á#ÛŽ·e½S«·XiY äØl¹@pí¡dSØúiû½^~Í=¬< "z8kr|§;}²8+£IãÐ?2Þ,€áó&¡d+µÅI&nç膾ùÑ]`žBýd²ŸI”q”oõ ¨F#¶—íEÈj;y¤5nãˉ&õÙ6úD=µƒeªáeÔ ¯všÖ âã+æÊ“ EâÜLý[ €±ÈÒzvOqïþg¸ç2ßäDÜ@IÀ# H‘‘Œ! Iýe FFE’Dú‡Ç¦ãØÛúWŒ0:òÆT@§~B$¶/z¥qs÷[j´jŠß¦¾–fr'E‘ý‹UÖ½ ïGÔSPQ/[×'žç»µ÷X¯@· _ðkNr陀ћPwêØý>"ƒÅóRˆ™¶ ƒŸòƒýW´s³ ’øþÌxO¹ÒKDp‡=?Ê÷tÖ‚Í9/òK… þî&Aþ,3À‡N*I@›Ëõ;´ÜX:Xö¸]B—+»°Ò 4ùj諜Â1Ð ±Vò:1!b»ˆHýJF¤õ&šŒ³õ?&›Ÿ'#3óÎ â±|hJɤBX‹7 ‡ÃîïxÈþ;*;øGj¸4²Lìoð)®Œ‡A DvÄJANôƒÈÈÝ„]Ù¿R$#('µâÄ#G2vA4˜¡)uôÁèSN§—ti‰H ›˜- øÃf/T¤=9Pûp%¬Ë&°¼ÜGÆïuÃÀ ço`™Ð@XfŸ>.‡'L®§ó=Õ>±ï¬0ꬼš?ÔB¢'èýËÆMß…®jï9Áל“ð~­ïyËJ.û‘‹_Š|cöŒŒM ®u 7]6Sõ´Ìbž^qb>ß Ô&‚&àERC¬}TV(ñÀpˆ2å †c§qAÖGJ¹Õöcu‘5׺oõÝû³0ô!Ï  ™­Õô>LsPί„²g 7ƒâ¸² €ƒ ñõì_Ð8fÁ nRtŒRî”N^Öhæj“o¢ÿûy#?¶U,éq*'Ué‰Ï€za¹ÒAÖäòß)±ŒÔLN(Ò–{¯û¾lºñˆRûÐ$WTŒ¾“Vè–Çåšþ õŽnN01cÁ·öà#Âç‡/¸A[§Ý¸ù\ðéùµ¸óÒáЪO5í J¼F$»“AÕŠqi)³1Oï£VÎ?D5ÈÉk¶/%ø¿\?w¶¡Ý(UFÆó{¶C °]œÕìÕ´),âCjF¬Êòã.*¯Yч ˆ±´ñAƈ¼L'âÀgý=«óúŸïpÿÎh2–SR‚P"ÛPÐõý×Ùœ¥.ý×¥Þ™ T`VËs@a0ÂD,Cº|“ÓÁUMèPA@¬{'Ïø)÷Ï+(§ùV%{Úø¥ë¢v3ª¹{<Òl¯å€ß”"y~÷äô½À·MGÒx—H*ƨ‹ÅÃMøäEEïƒÖ6Ìt¯ûÛêè¥öSúŠ·¼p÷FÊþ³†AâjÞ+Ï.¶.·˜-øµ>aNIãŸ×>³/áöbWü%+ùd‚ûæ©}öÊuµÑ‚õ¨’”0jêW pïdhÑeË–aA #…ŽÐ‘¨Œ o ÇPè Þg®°Ågù/Ä’*öÈ«Ãt“øo»ûÛñ‘{š9Úèº^È;+ïö¿Íò.ÅjÔ`8¦à']νá |F?/\´¡a9Òl‹ •‰²Áãõ0t¸yžæ¼QŠ‘b¬­&\ƒÎ¶œt¼G¤§m©ਈÖÑ)_5xq¹ÍlChý~@àüFêêzóý ÎYX…ÐS_×™åìHц”äœI´o¨ïßËG¿ácÿL†}v˃êÐi$ø7m§xêˉ1 ¼ÙOA(¦YaSi°¾£òÊhžàN…c Ó²pXU»vp.†‘i%|R¦ŽaðÞÉ|sæcPÎHî jJ8Q;C¶±òßï¦Â9“µ5¨· >‚§Ë‰ž±` èu°‰CÆ Pæ¡sN.û/á- A4q‡Q‹‰Ùtލh‘ûCÐÈ軸AÎ"k5˜Ëtõ{˵Jõ!hÉg·\¥ˆ:~`* Ã,«¯ýérÚ©Im²¾e´hï ›×hëB‹Ô–@öü¸ò{ÿ–Ë ¤Î¾Ö×84"‹¬zHj3ÀýÆkÎûËG|ØmB+GfWö²²±¦‚ó­Xoš3gHÜÉSÙ}G¢À†S¦ž©Øù³®py6"‘` '†vÎK¡=è×xŽõ¢ÄD–ÿF{ŸPAcW8›¥aÃê>½GN»L™ÛÛ~9£ôÙí¾OfJ^6år­ nPµíu¼{§Ý °d0a ï’™vŒTƒÆ9>éД1ìòå/ Ä^½I¬Mþås»)½yÜ›ÑürØ}1g¡‹ Ûáæïmâü'ËTG¼3¾8Yñ|!r= \91—€z[GMÞôid”<¨A£Iöò3Xsj+` Ö#¿=·sj<Ç~-á1«ï˜^¿¿ÞÀ`³íĈê—p"z|$Gz 7´jªþ[õ…)9ÊÑs½Ÿ{UøæÀîíä¸weL§TÍå“õgÐuÌ5#HÌÛÒÁÓȦè!î¿þ> ?’Š“ßŸ.ì[³Yy‹Ötÿ–5¹8g³QÇ -âa˜¢'äâK’å\nøó¾Ø}غÓE]æ· ¤—f(2·ÊáÝôRòP† (îÍ `[¹®Gã²;Œ¿:L¡háèD¶@¿­DM/¡l?æf—ö„«;ßH ¥ð”ï0-±n!f?è˜Ýÿ1¨™Â¨A(t³wâV^¾Ë¯¥)â‡d I9\jqIÐ ;ï›6 Tšç-‡)5V ÌâáÕޞث®o‡Ün “ :΂L¢,Ô%K9ƒ£p, Ù*m§$±«`:^î|VÆBÍtrçÀ~¶ê0\ób¯g¹#ot?”ø”¤yÏσBl¹üûĪ|gR =qwøBJã´†å¬è:F't¦Ðød®qÖÃÛïñ„:ˆ ØyCÛkoš€ÞÓ 6ÐrÉ ó[yìÑNÉâ½”‚Èi4€ TÐm«¸2¥‹QU\]¶â.té`¥ç²ÜýŽ7ödÔš4އә½%Ì.zÅJ BbCáRY¡Uëõ†€ùE“4­2zÞÁN™ÒûõÏAåQOD¶dœÂfŽY8+–Jœ9O’-¼~ozh3ˆ.•i¸äÆm2Jg„¿ø~ðüNŸvKÀV™>>3G ¼‚Yn'óêökKöøKÙn$8è9˜K&èÞMÈ,©„X¢Åµ;7Á3ö> ¤GÞ€kú¤”JÜUf %iðH9MuHÈ8q‰sÐ…ÑÚM秨ûÓrØ.“ Iš¤ì²éß¿mèZÙË$‚›;p$’Ú[Âæ àÏÊd-¹|P±<³IÁÓ2zÛšî™O—`n`®Ñ^íýßí'¹1zÄi7ÊÕB…j=)-[PTWĵw±Žˆµ–À`¦ŽpGbî*²›¾"F’ÙDiÏÐó• Q¢0|êß5k£5©çW©“àÆyœA‚Q'è‚(Ïæîf/àÊßÔ}³@wâæÊZsÁ½™câM3ïÿ‚Û+ÆØüK6ôì<ÏàÄ-(Äæ©ki-L+¬·ÕÝÈ0³?la\T©µƒY™qØŒ´“">áUÞù¹dynëuÜr84s«GàÍûIíä%!“š4;/ÃÁªJ,”«l…V>Ù­„Œ0﹃ ¬äué Y(8l6~ÏR‚:);ˆ÷; ˆäCë]’€ä)|ÆE0W„ „ “9€‚q6@`‘é/9ñ Ð)ƒ„C/ãtØVW)ˆ ñ¦Íœ>Š|Sµc~!>_}N…ÏZŸTËçëß{[QŠz¡t Mó˃-pº„ÊìÆ6LaÁÜ#b-hvÚ°?’½Gqû0ÉË·Z1T£° ATãh4NÕià97^˜›N7\ù­îw¤OBÞâ,»+–óÎ?Ø‹žSkàôˆ«f]o§„¤µë«÷ñêVدHþT'Œd*&n¤áì’&Öãós:ܬq¸{èÈ”ìQ8/\3fÏáütq·i»aX—ÃiœðË#ÙRáñ—*‡ñçT,ËÛ@¦¹ÁhþVr¼å¹ŸŸ˜.襒 ¿ Ä?T.Ï:˜çŸ—ªs£’–¢›³²,5øšCdþ5ÃͺýáÆ- ãÿç½–¡m!¯Ñ³)ŒE§ogWJÁø€C%ÓBÅÔ^5ÁÊ÷®A(a„Þ¾—s€VÕÃ> ¼†Þ\*ÍV?ä’ : g‘W5½¿@à6ÃPë¥_y Òv‘`êP¤9ë~ÅÞ–¥¸ùwýÞ’ŽåÒu÷Q ä0«# Í+ÿ)±«ôj4#;S¡¨Ñ éCÁý]ÆhµÆ2Úõ:R¥õ bÃF®€öÔÊ  ¤§ü±« ”ûc!|G ]ÌæÜ¤v#]gàh"0ÖóRžÅX¥¤aT†¿C(9=a­WœL‚…`¹•C.Š($Á\ gŸÍ¡Jƒ d‡Œ+céTðÊ„<6–”ô½Ø,!:$œËöìyÉòúÉ1yŠ/öA‡Ëµ–Ì;‰ñ¿ÌÊ› Á|iƒq‰^:yèvÅÁ§\ò(Ûœk8úçÇƟV´Vs¤€‘Špa–dx–Ÿ¤ä"‰^’hµå¿¥hÌ„qËέbmÇÆ¦›k=RÁÃ)Ñ,Ý:"jŽ˜'…Q}áB«#±ß x7[O3`ãYKýÉ÷²VñUR=¼(\_Çß|ƒÀýLÛ0›kÂŽR¤^ææØ»zÁÞKþEFÏgdî!~èo3zþ`ýòÞA“çW&_+gPPq²m*4[ͨʱWÀûçâ·WE²B]& h<¼ízÇKWî¹ø(¾Z^ a aLÑì4YÝ•N. è良J*ÍZˆkrÛ÷w×úøzƒîˆô\lqP²GX2Fhâp/{šSÀ£%ýå X>yøXëtS•þ‚>„ ÍÙd5WQA›9ÝèáËøõY»Qý¤ç>·c]¸jqH{0“ôú‚j<ÑÛ¼‰áP-Ý’Ê(ìJT¢Kó*FH-;æõVD¤=!bCSN+”áh$4¤…üù¯³W%vešü)#~iHDMа¥‰U–µ/*Y¥Ö4¬k¤ÄD×¹eF¨¶¦žžSŸ‰-¤o\]DqF;Ñé`’„¤µþ»ÿ N”m“„±4µßxc»¬²õÿ¸ s Ad«YØì™ Å8ù™jbå'¢ŸÌlBÈèͬD»–”¿èS;aµóß…²B®š™%GÛÓ¨0R†É(«²0í¤Ÿ_›½™K-3rRn›Ô›Þõ ʲ™„PÍùüLN7hb¹%ÖSÚ[ÇŽcçÞ½“j¢(¶Â[$dד»7µ¾ ˆÐâ¡@—èuy@£K¶‹Áî<æÜÊŠÀ&„O™ŸŸR‘¾‰À"‰’ ÚŠ«?QëúOÅ—”p|…‹®òF% I}[Uœ—¥˜½ŽõÐw^Ò’"ög ½«ä n/‚Êú©r]3HµŠ<#“üos+ŸÜ é|‹áRž}:^^ oG‘5à0Y¢n‡¿–×¹¢¨#f q„¸ÒÐW•…†/Å)±‚ȧVÖSº#q}Èß,oÐLM>Lixè“[f¬TÈ„©ñÍÝÆJg“€üŸR+ß;=žþâ0e—2" U¿„ôÐk–¦ßiȽ“#¸Ýß JâR£-ÉßãaF§˜²_%&èy…¾„Ùtöy¾ Ä,k¬›;‘TñbîòZb«’tx› 6ŸòB©lúlŠ2û\~d®Ì×1왣žuà>_#[*îo»xWn‚¿G~ÈU?Ó÷šâŒ>€ ÿì凟™!{R5Vk…µå!˜Xa^ÏO'^(#üɬ‘ñDµ§wY²kΜUâ'ÒÆǬ*ð(]´à¢ÃËix š”NϱÔâê¤ÁC7U¹Ïü‡ ÂnOUƒÇôyת'À¶åètA‹ (-¡Kæ ]ôX|kR±Ý­fE¯çËf‹F@$ÆžŸ´‘ã_éœ «ÒBæì˜L0`Ƚ„ý*·PqáTx¡•ôq£›ñra1ã³ÖÊnM¥ûÕ~ê}Uö5]œÖ¾ƒºÏQ)þÄFá>ÃÀÙßz¢AƒýF¤>ógä»ÄŽÏtX—÷z‹\n±õ¿´½ä·&¹Ç29KCÂ$tãöÉ÷ÊcˆÂïDñf:Ê‚Ù_tàô`†å<—ÓëËe@èñ‡xQJ‚×TOÏ£ ˜?eKpG(˜bZò(q¡ °g˜þ-A|¨l˜¦yŒ§0JûÞ ,>f“x„UXGq¦µsCüû3̱ë \ˆõRYšc5á¤Vh]%Ç™ÕÉÊ xÎ7`æêp“Ëì"Ð}•Œó0ÔC]‹üˆ$-¸Ìò6Jïw¹¸ÜExºÈMiâÆÏtó“×Öκ¡í´RoÊËZµ)M8 @Å%ô^+Fþr©éÏ,Rž9÷xâ—òqy¥Äòþ£ð.Æbq§Ü¯ðEZxK%GpnÊFZ: ±§˜aÈ,1çY¼ú914cE“¹m³YÓd°IV‡4 6`ùìaÜ~­øÍ¹a†˜ÎZ²< sf@Nþeº¢ Üú¿+é‚xÀdåݪ£Xl®ý`’znVãL¤%Tíÿ¬·ˆBlyy§[ö‡ "ž¼*€H¹ÆWà-XŸA:¹Ú02ѱË=^ý³ëêö Ô‘ÉdŒŪ2ü;|Æh/¦sØUÆÂP»ÝdÊ8ÆC¶F7.ªßGq Ä gïQe®A"  )X?9ù?jØÃ{™ÇøÌ"øò½k&¯qå¿ëÉg§F$›3²{ë-tÌ>ÌûÙTÌén¯¡ùãQ‚MÅ„ 00ÉõáÃ¥›„/1H «˜Täq=1ïhÎkÌ:¢­|K”¢¨+ö\ §Ýv}sr|’XD¼ùîq;ýif 6|~ «Š¸35ã;B?lɇ®ZãXÜ =øWaT¸<ï%òtên'qÌL¤’á‘ñp?ð¾ÃP‘¹›yœ‰äjŸ¤JÙ8¹ê¬V Ö¹-z—*L-~ š¶ün.æ ì÷‰;kj]Âkñ…næboPˆîQ€®¯Ë­·8Zt[|»þr®ZsãõfW—³ŠÒ¾­ÂcŠsPâ«çBLDœÊ씞þëŽÅùmiSie÷u§r µ}?szày96\r¨„Gâ«2#²ÀÂd¡¥ §¨¯9+§Ý`XÂõpŸeÏKÎc;Hב6TÒv0,ò†ò>µñØ‚œªÀR‡®1ùiv`?­ÎnËøofšÉkéÒd˜z¸ö)Î4„Ürw’ಥ’$¦pâ-û-4ñ0¬ž]¹(Ǭ'°<+nedéo{UĦ%ù‰&•Jª÷6jéá_oï(öMã¹§ÆÆÐ> …}‹Áh<Âê")Ñ“yìæ.wJqÏ<ù•=õ ,OÛ¥E¡þG~çR.#Ý¡ äS÷ͯñTzËÌšÂÄ‹ôk¹°é9â`¬\ªôŽÕc|8³z…/BÅèoûÖ¬Cãùæ³È÷ñÉV-lÖ…¦%áÜV:ËÑó¯˜n±­É¸w–Äx®h¾`|;$­ë’>6¼Yá4»¯ƒ.Sÿò\4ªÜuoH¸gÉlryˆ}”¶ÜDÕtí— ò&2Ì÷.ÙÉŸ‰Xïn¹)“—óŽ-í~c˜ÕÑÀà "x»EÉ jèÅÀÁ­Ð•f‡¯Z*'ɰ>ybA4«þíœ$m½¾ x Àîw+ûæÎZ ?·¯ÏØá®êsSÿ ¿2 Uˆ^2RD&A§¼"ÕãíŸ o* ÃÄ+}{g¯r•v÷¢ØóÒaÛ=T )å®ê%€æQöàøÁ-NÊ\Œj»5¨ƒiW×YÏUT¸fBrF4dò»DÔ _oäh½\'UÙ…ËúÛô1D¨¼pÙ7“÷aÛ6$4ù‰AÆcµÞa—ô)T°øêcàÈéAþAXÑùëÞs·û9|J¨8Úç'ßÛ”Ž¦°5¦…,ØöN<…OŠèêfÈ Q)ýRöE(ÑÆc85^ý}Ç?Q«»4Q®X¡‘HÑ%f¢ Ix™^¤ÃA·ŸÂf&õ‰œ¥Îc¶8)öQÒÈG+ !cý°ózÒ‹€€2=“ªÚ¨‘:ìxc“H‘b´,RpñüüÉ|™ e–•Ü÷Í)W-0­yë Ýëö‹˜½…¥QUãtÓ:%6v˜oߤ;× ÓúÄãm²®‚”XÛÒ³ø¿oµÕ¼¬¨¹À@V þåò{îÀqÀp5^{Ï|cúZa¹c®£4 Ú«K³Ã9Ô×íW£#Бj2àF&òÐÚSkÆ6«¿l6 á*âØÿFð¾ª_oÛ—TÚmk‰|W€ÃC¶#—¾™ÒÈ·jBÈáÅÉ™Ù4·íê)b˜+àh±Fä¼v•{ÙÈ&}û¹.:+¨¨’³é©ÀÐc®ïùc#)~7íô{9ýÖ>Í@enb9øÙÿ…ÀR׿ðõVîR^l].µCÄÐ3o­[P—þžûûï#³‹7àmM`\ò¯e&ãÁÖ>7•— 8$”@|ð B F Ýø(ñ/7”èóGª^ë®úÎûFŸNýu UÕ;¾aG×bеzÔ­òI øn=‚—çÌ㕸4?‚3q+dš…9('ޱ렕má´1¶Õ73»ßò=IÅ$!J"òx141}í7V袒Ó3x'MˆÀI§À¼R¾UàùÎÏÌ6€RÃæÔ%m‚ppýô5cÊ4›žOágøðCkgVÂ/”áˆ~¨^Q-sç,q3]¸"ŠõI{vZ¥c¶³Õ±zœ)0®²!q£TYñCÃDÄV¤{Ê  Ú“‰PôS;¸¿ê‰‚DÚîm®Ï®{åû­a¢\uíî²RÔ¬ƒâBBiAÒˆrI–¬)?ø|ÑJÈ’9G,oÙä$\i¾]•`°Fì…¯ÚJK½nUQÍdôÙú)ZaZ[À /A_ºÒK8‘‹öÓ‡F䩇9Ü6ß–[àšbAc›¯9@Ù|›òBy:ÚÞxVWyß­ä@¦P€Ê*—É?@±’<é(ƒçª²&k+nŠíy-O;–€k¬x*HÄ6—lÙõÍ¿dö,<¸^ÄôúŠ‘vjnƒ/†C^ èsnÕ˜auˆu4qü™ëÁ=Ó¶ וYèÝåÛ¢/&änz ïI!Nؤ-¨ðÚÊLʼz´½>ß“-ž^y¿Úª8aKÂû¶à±¼ðOê¯ÄD«S¹%o<¢ÅúªÈ­Ä_PùÝ*êɤ–6ðtåmŽvÚžQxààݺßS»£#ã’`”Pɱ>`ð®Ú:óaKyÀtêñ?êpìc'->žéýø/qX X: rJ5œ5—瑾ô…I¾‰¸Ð/7¿U°Öiªµc<ý-$†ï™ÒÍ SKõOÔ‹Å@7´ìczÞ$¤ e4‰¤0h " 1ŽÐþ¢„!´_ªq®& ¾ lÙßgq*¿C‚ ¦nÌËIõÆlmš ÎÕ¶“&O®õãÚ:±y-QOKÑ&æz©_W®YÝßv~,ñáÜaš–õ jöp;™ÑDo\uå(¬ÚÁv‚öùäfÆt¹ƒ*ïO«ô½ÆIÓç0b’19xÚ¡ àÏUN7ÖØc—lA¬¡–êðø|t¬¶S¼fEÊÞ(4Uê³Ù]~ž©—M¸b Å-ZH‹±,˜q™þ!!féû6^|é–š'ˆ?KBö?Šå¥ƒ‚ÉK€¦µÆµ[ÆIà~—IË~Œ(yá”àÛç;Ÿ$KË ÞލÆsÐJE@°o¾ŒNé¦Ñƒ§V‘*Åî‚‚âÌêü(EW69êG\Øÿ†|,¿Ê0x™%ůÒ{àPxåæ¿¼¡`Ôðÿ¼·9&XrÆ#ˆàp.ádÁ¡ùO÷qE!˜ÛöoÂrèEbý„Þ¾Ðô4Xï>xLù$ Š+ã‹Õ°…èê2‚0 €µ`ÅŸªj¤8¦?F}ÿ¯Á±Búè0û0:Åÿ š¬ÛfØ û6˜ÑšQî64)x_éúòýn—ˇܞ‡o|óðˆ39ù™ðç½–•°7¹oÌŒ®òkJ±YÐí÷¾îóHÞÎä®pc`$­G"ÌH±ñº%òh¡ÙA°`ˆÑRœx— ЈRè¡ [9!&²æh¸V³¬)Å"€µ¹d–»t¡Iø?0«“·.ÿmIË®|'>^;…¼×ç‹PÂý†ØN #¾  ï Ñ!˜!R îô׸>žy±¾½ªô‰ÞEhI7Ÿ ý·š¥Æ4¾ÿBšÞÓ9­øÍW!­õ³­Ç"ªç‹µ’ ðTÔCX]DÑá’Ñ”QfÕúŽÇFn­÷«úÜkê©¢CÚxæ*°n'°´ÆÂX¸mžÓª»K?ÚœJP”@~Ë’|ˆº÷‚O@x{¾V±× ð®Ç:^¶‹ä¿rQ`F‚¹—î^]¾ã3]ÐTJ®z­ J0Á½¤äöþµûÌB—e‹/þê•Gý(¤áØöû Â2T`ØÑp3ðiòDTŽb‰|«df D-Îód,YAÀXM°J¡8¨1D°³Áøƒ;¹Q‹ÍΤd÷ØòJ L©Üê<¶Ö^ãÈäÎÒ»{àÅ2xkò¾ ö pc-¸É0-"ߨ|jªõ(²…ijh µŒ˜ÉÕT´Èù‘ `w3æOª›cÒÝ _-(aÐ,çäYpÀÒS‹_ûGþIu µ¡Æ®·fÕÚ¿¼á+®éàÛ›¡D”=“a¾i(N›8êå2už²kCëd®$gmŽ-JßÊMK ûËE¬ 47œa8”˜ó øžC ‚<æí#!ÎUV99X\ÄÄÆwÓrW.Gó¶s%$mf¶"FóðÙXÍnªsQÈ“t×Ó² ï_T¾àÀ.FOòç¼þ’;tØŽŒc`&‚F(Iom›kjxx‰²sÅ@²(ÇAÀâ5oäX‹%bàòxwCðH‹á£Jd¤Á«¤±o«æ3òüyUƒ&ö‹Í ÞX|oÃY6xÇ¡°(ÇŽñÙ^æˆè=Šô²¡µX`›kµ )ÅÖ%öuajµ­,iö9®Ms'‡‚\4Ž»+Dp¦èùמ:¯™w·°7DkªÊP´Ãºñßöc•p™Hð˜GXüÛx¶½@ËÂñ:¿ŽÄWqža×Ì(ù$è\¨—í€îô àX{»ü©?}£¿ T“jÐÛ’Æ9VPŒ®= ±7Y–ƒ¹Õõ•…~$š9¹ŒxP0¦,rV[œưLÈØv‚¼ˆ'|€bqõÓPæ6ÝAç‰WÕpp¤›EÂ:wp‚™E§«O"µªUG‡˜¬;„ÄG×±À<ÚÒ]vã‚ù2Ê ë×Tjv.µçf œJ…MíD!1Â(ÆÝ “•-`9¬ÌÃÖ¨%,NÝÇàèó÷}–•' ú_n €Ÿ ªÙý¯>W/ôOGz>*ÇõTeÑÐWÅë©T‹‘ $[KÝYì/'t¸¾ò¤× "CÎÈö‘žQá^+¸¦ÇèÀmÁ2Šž×¿šy3òµÚæÆqKì|Ìâg8†…Ý2]îW±4Éi)÷þyÆe‰vVúšÎÕb ÁôH:À’``}½bv¦õd(ü5?¥~ƒdC"Ñ ¡¶bªåäåíÛ? ‚~zÿmýðX Qн"…!Þ 8ò¿ç]e)-ecJçòÎÀËÚ¦yqúåØV‘‹Ðó{Þ>ë1­Žãd1ʽx Vy÷‚'£=\ °vÙ†q¹Êĵ¾Ò>ð`6{.Áö­´º¨bÐ’†Ü30§¾Ëôô2¹plˆäpÙq—£›£ÝêÎqª—gWÐÖ49ï®kÉh;ØËpÙÄÕ[r`:jctŽ>eÛ³ßÛÓªŒ\ø»€é™ô_Â)G’G¯ u‡ö.4Ö]MŠ•æ»ŽZ‚sp—¾tÄTGpF½vâß}áeð ÒûÛ0²‡uÌ;ôŽÊ¹êÝ×Î é~H™öüèDžPóÃó4u`wX €Úä<ªÚ¶•RŸ–z/X²J¯¢÷vYѰH éaž„aoÑ¿{üqJrãÚV™Q¥š1F`õýŽÔ|ÎÿR³¥þoÚ%ò{-$jÙÑ ›#Š0îù ÿäM8¿½¤ë¯m¦èfý0Ö˯ Ú¶A1­vžAp è/?Ãâ³FqsÂã{O0¿+œ¿· (Hš.³e…xü' <àÊçaEdà™øñëaS:Ýõtylï±/kúßÏÊ­\óªª뤬Ÿý<Ë·,ý? ÝØáêË–óMªØã‰-S&ce2‡¾¢€øÎ·°dÂgä7'ꜷ°·“yq¬0ð¸! iF@æ1,¨¢çÉÞÐ/…ŸËrhd5´¨`«"‘àÏÊ^”Ò>`än­øáÛäZßi¶‰´”‹¸Ò2e‘÷àë’saÂ:‘Ó@ç]°ù^©Ž'‹T¶7³w+EÅþ±Êx"ž:“M–¶Ð¯6qÍ,GÀž¬Ø™5%e6~èì¦F¡}0"0vŸ5õŸqÀžâÙì2/ÕèJ{µ¶$ñHËÖ*=’üCÅ¬æ¶ .Š5èwÔ¡ä9ô#‘ÜÇâÀ¢×ÏËßÂEúÏLVÕù9`é˜ô­‹M+&þD¨^{ÈÝ4ëb@o¬„T1Ÿ¥Ë$á,p¦h·Wìïý¡ì¯…Ã.W¡ýOçm`­‘<šdàöhܹ/_€>§ô‘!Ϊ‹Dx\)dDŸÈ@2/wéÑR-Ūt#cÒ’—vËb«ÔÛÍšÒ÷ &x§L ü¬òpþø»¸»ÊE€o‘ÂàôyÙÉãlþ¿æí¼úŸT>öB ˜ã›D"!X'³jàj­ÇÓø³¼²—$o­ !P¡!î¹Kþ;‰p9Ë~‚ÂHµ¬ó€›¤zÍdž2ÀÅ/5M°HCÛÿ…XBc®8¹0÷@]ÚPÌ-bbûc5ƒ\§&¢ Ÿ NÔ#¾ñŠL%D[ÒO¹j¶U[ŠVßøë‰`&yÿ±Ä߸r+i=8’?æ0f~êïËo»ásïu$š/¸ø±÷øº³ žzðÞ†O,Í’U6&ªoßL¹*¿›©aVŒÝ_¬Œª¬+ cÇÅÜ»¯¡º²£J²Ô‡ïá D‰ÍÖÃ*’  ’šp×›fó4ñ.OJ×¢cà®Û}«R¦ÆNñÅÿPT¹êm«ûÇVÙz‚¤m¦B°Q¤°'ꥫÌ"Ñ®wÑ élG•¢s¸ãéŽ?ÑI~&¦à¦Ø á&¤Ü*GãÃV#‡Ò B5ϽÈ\j¬+xBY<‰Hu°)kƼLq!¥hv{S«²°fáåä_çÏ‘׸$† { Ö§81ö¡úé#7KøÅÌò?­CÌŠwë³ÞŠThk|¸GÕäGÔœÄ0ÀÖ(ÜR̺¾ñ=³+ᲆmD1Ë]þ¯V°}ãÅKœÝ>ÃP  ®aí©—µ]JÚü=„Y4ñÜ‚ËËù mLž™€VŠcJä[¡S?œ¡Dæ8xþ,ŽGc'Á²ogD×Í]¦áƒÓ÷ª’¸¾LQ=ô“[…¦ÔuÕµdm>çb#(°4§ÞŽ6Í b¦ÈÒs=7–3®—€·n³ŸÂã¤pnŠJ…Š^ºÝcgxÌß§Ý£{îç¿þª:ALÂÁ¦ë._c¹i `É–zIæÛn2ç0ÈUü˜Uµ€ÁEz>•CWwûL02žNîûÒúF÷¬1ÉD·3v%•-&'þ¶‹æ|wžRŽæ Ä·ÆšºcZ×]ÊÕ=(î>Òqá ·ð,Ü„æ2Ì)BÖEŽÄ6iÞ4J0œrTÃèS}ÿ {j” ^þXb»®ÌL¾]›5(­xVB‘)šÅþ•1PzˆÀdŽ=ýÄSLa+»%„3öò]vŒjòõÁFe›Å˜|Z¤f¥îŸ‰#í9r†ÄáÄÓ‚³ò/2ß2ÙŽ©7eýâǺ'2¸¼ñ¹²Ã_•bc-÷`^þÞLÝšŸÆßV9„›£`ç¢ù:ÇñÒôò2 …{ï-ú×NUQ6=œ®/ùT0q­í›`³ÉCJë¹öf`йê›/ø™v¯/3zꕟSºGØ~Áñ†áàÕ&p¤;7›eЀ?èÅç„ JÙ‹Ï<ªí@0 ÀÂ5 ¶5¯ b’=@qÐÀ8Œî—Ú­è8ó·ÓMâ<üÙ¥ðdoË$~¿œ.†±í-ì)–´Ã­Üš÷Òê0¶ö‹£õ³m|¦p(O-“iÓõ ý.I Îá9(12~ÆTrÿÙe5$ÊFºYÑ•xÎvb¹üw{ßY¸ìK)á,Ö=Òœ5ИCãnNÜqÁÙ›¼ïÕ—*ö½z¶ w¯¾%¶PÁ¶×‡V&òÑC³ AUž¥—ðãË—MIø;£Pà%×”ÚíWcwú_ ?Sï5ÒUò•åÉ!)ê[!¹æ- ¾ñ0@’Ô½™=Ÿú+=%O¡\µQ¾Ïáë”M‘nš~ªŒÈÎ5UŒ¬`âa‰,š ©ºy>@Ðè³}ý¿ö#¡Œ6‹‹Ày¥Îé’ÂqT„öâŠ'•ŒãjOˆ§Â‘Љá_¤EæŒxgchð¨2O*×.y7E»èqñ £Zu½T e>oÚYX s§ýÝéKçUyԫдA÷›"¢7v“N±¦Í†®¡f”´ÁÖ•2Ó—¬<ÞVüÃ,Ä,;çÈvÏ9ÃÍah ÊÓ˜ñ?ËŸþÄŽaì{2…™=8V¹âq© šÆx†ïÊ'TÀ°0TæÝ“T§1”ôïi)XùÈJ?3y£D‰ü ðX=·C[4ÆgþT%g¾$ÊÏ1d‚>õÉ«KG¬Vû§Ë/Û›kö(`€f²}SØ[å— ¦3`Ìîk‡ÑŽ)àþ„^J¬a™_ñÔü_ý ›³<اäÓ×”£/Ðwd O};íHð‹íùDÞ;ÁŽÃëñ9»ûgÞØ´ÊTAžþÓ¯u˜à2=ÁÒ+^÷úÇ›g•a‡œèsW Í5¬óK®êÚS¤Íz‡‡Ôæ¹߯ —%ûì¿%ƒ†TµI·œPv!øÿ°¼€¾Î!íǨÐ7ú "µVç1ï÷×zèšûú|´…— §þA*(°oàxÄ@&$óíylC¾bÕz2Õ<&†&·Þ¢’¿öþ ’ÛɬþkæÙÙîK'•,¦Þ8/„|à‡ ‡då·2êJïÙca(t—õ{_¿òT^¦Fº 4üÛ³òS¾/úò…¡|‚2=Ædùr±NP«‘þm“Ù²¬É§kôóÕûƒ0‘±Plã­š 2¤3t²–)ZÒØq¹•'g‘Ø—9þÊöÖ\¿ÆÐZ,dÅJ„†Í¦Á ¯]ˆéµ¿Uýz^2æ?ÌQÁo»_Võ)=B\û‡Üþ~|2ép˜MRæƒIåš¡“©ÄäL«›x4;æãXÝËp=ÞS;††µAÓtœ<¾ÅCA´JçVÅ^`qi\˃õÑ4[0¯2 o&É¡|mÇÖëhÚÈ|ߢƒn™Œ1@2’<çk Ëná(Z2j¥ïI‚N¾M tíCÝ:2ß0ûy70•Æ ¦pw@ôëÊÕ1¿>̧K2¥NãèNYt8}™»ôÀV¯ñ^í¨k3ðCW„~ØRi8 o€ ={?áAnü¡¢V°±àƒP•Cýõòœþ£oùÃ`(F°ÀЂ¤´&^æi Û®´R #ãþbQÑOi;érwrˆ r’ô+L‰õªò€Ý HÇ—e†;ÔSÍùñ0˜SËK®y"»@©’c-hXTÃßIþ &a˜‰l2|kš4ÁP£ ,©D7]”ÓgTu|óƒ%@.Á½6–ÆùÂé»âäÇ7ƒ·ô¬lÆêØgÿ>måÅ>›Ir†âX+!T‚$Œ €{$Î>„Îr»¨Éx†õ;©³Ë²aìBk®‚ÜÁfÆ´§PþŸ‘ AjtkˆL0ÎûFCÜÉÆzt7µ:¸;¬¤âçñµÞ”§P—G‘ ürSð]F22án¥ƒþî¹]xAö 8ÈΙ¹<_,E\k|Å Œ¤cžP*kBa¡cf©d´Ï÷ù&ÅáçÖq~¥®¨JoŸ–dLå„ðÀ‚söŒaMUN …¤|/`àƒ­ŠlFz i¸E“U¼htE Ì[9ŸÎšŸ\I‚ñ:Ù8{‘·A.í.9»SZ5CLضöß¼¥ ¨Ñ~ëö©Š¦‰7{)¬u NÍl­Ÿõž4¸Ìêï;…¿ý0’H@YMÀÃp¥5VçÌÃ5"P žF€œ9jYa§êƄ½R×qb"ËvÝ|(P¶åa:·ì^Ì”,ÑHnÉ×À¸H·œæJÆF)õZ³­£Nó%c?ꮲÖRž9~ï]8“{³MK®6nOö #’Û x¯üþefˆ, u¨(Os!4M<õ˜€m‰ 3ý·w_ü+޽LÜ2g¿h"MŽh§ý#¨M/¥Õ¿¢;—áÆV±¼îÏ ‘ŒœsÓÚ0»4Ò[I“I1^ä²&G€>\R2VаCPB÷\1)\_";ã;ä{aE›7Œëk2æìb<ƒ{ëK—’PVûáO±ÿ?ÜtR»HVªôòWIQi0„‘šÜ³¨ juÎ ø,ŒÐî1Í÷³?4fÕÍÛ:³Œg'~¼§Iîjþ¸„ÊVZ|`hjöåÇ%Ä)O5TÒ¬º±msÀÐk"åEù{=¾ŠH^Hþ>0"!,bõ¨±ú`ë¹ãЕB)rxðª0j7@ÖŒE…1!I͆Ì!Š—¦Dg X¸06óA 7¡-J3†Tw´ÃàìeƓ۲£\Ö!‚ñlfkqhÊøUÓå4[xØkò¡Xs?wŽ3f÷`¼šá^Ùc5ð üNb ñBxÊêC¶] ”ß.ÖmùŸ˜2Þk¥sŠN+[pM¦½æ@D€Àøõék‹C¼FAM>¶±õBD½N/›ôÝ‘³J¾DQ¡ø)åwìÕ©á¤]  ½Žƒx„˜;Ã#Ãå¡#OÊÁ­ôÆ‘iɧÄì'^žF,~Ž&«ß;ôNô/ùàÞ1‡Â£%ó50zÃüYòÄx¥‘2,8Cý€¦µ aùã¿*5!mXÈß“¨hp5¾ÿW[ÏVìà˜”Dl@ŠJ.¨wÒn•ÎöÁz>÷u‚[½î‘ÔL¥ŽL4’™Ø/I¯Q ò?ÎîM¾l"§³ƒ"¢¦| ¢d/–*ˆ®" å÷÷…Ñ–¦–þ§sOÿ1AY&SY„—±aÊÖÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà¿»íà özöçë½nÞ[ã+^¾ì]œµÅÛ®î[mî}{³ËßL¼öûë·­íÝ{Ó«³Û·{Ë^œ»­½ïzõ½¼îÞûÝצâÚúÚï»Ýˆ©44ja¤ô“Í5?F4õ0Li?Bž$òb`†™Êžž¦M3HÒlÉ‘©™FÕ?§èÀ“ÚŸ¦hjdÚTüŒSf„m Í Jª„U&žšeOdÆ“OSi•?Õ3' &†&M 馌 “5ó^ŸžOîé]RÝR×qeNžQÄœB‚Cq€ @ABt èú3nm¼gÉǼI0Füm‹$„$I „µkE00 ´Â,0 €?0à€N A‚0¤Nx0èà  \²©ÌD˜œƒñò@’x2~0:Qàž!DXÄé10fЋ2üc`Ïpˆ.H(Á~òÔI›1è”PÈB O(9GÚ=£€:[B@‘RY¤ð£Ô$€H-xÉ$HŒéy/%Q vH¦`Gê´àœáïÜ‚X0–€%BÞ±¨çãíÖt9õ¸òÝëAtIB DaÞ)Àày@ÁPe3L!覈j C[&o˜k@W_:Ìåÿ/»G1§€Yí<.|·‡›aÆþq1à ÓZÆI8âY÷¨„gX[f€XÖq32Ì™™™†CŒ„8È0¿¶8ÌJ‚èf÷±èêXp/\ÌÏ{ͤúªxý<.º¯Ü¹NæÞÁ+x¹0ZÑ! ¢úx¶3ÏKÿIÂ{›‹Šü2M„·Ã’~qhŽÔxaŒsž…†1upfôMt•|ÿþñTi˜Ã¦°Óüvà ž~'‡…€Óã['™éÑDPÐA ºZ*¡œ®>±&bæt‹.y¹þÚ €r¬ÀÀäÔ{M½Š•ÚíkM÷Ð`ù˜†Zc1DHE=@¥š?~Ä,  ½äV.ýòýÍa<ÝX7€“ûpŠm¾¥ÈñÀ ” ØPÝ–ô°þ‰|>-„-¢bœC5'æ•úÍ‘zn½èrþ„ÉèƒpÂa„81µ6õ·ˆÎ÷³¯wëˆ$·2—çN?ý‡%1µœ\'æË1ÎŽtö'u?ýW¥ŽÍk¥àhW¾žqè(áŽàÇSDüÊZ{5|ÕT  Çx7/³)X˜]S|‘À6£6.,ÒßîX—2½w^n»zÓäÞZY§³ôW*Iþ—‡ Ö¼~ÝÂ@’º0'ØÙØN”,w¿vI/ŒTcÊ`2N_rŽ×¯‘…FV¹ë„ËlX 5wΊ}ûøÎ×£7gÉxWX´Ïþ40fgHªJt:ɪu¹­><:Zæ8Ôá°‰%*ÉÙèPØÇ²Ý¿`^І|¿˜‘”ˆM1“NwšËxZÐÐÏÛ¡Ò›N• ;Íú¬„PºzLam?î_¯mÖšÎöE4¦`Ш©ûà¯ã:,=fo.X—aÓ™Æó(㜉úÇlíe9Üæ–Žz”¢žÂKnÉðZ¸{a’3 H2-ƒ L’â2wd¶€Â±`òØE "•„õˆ–A¼an˜°¶ —=QƒH2AŸd;ó¸‘àa)6‡4qùg…NÏدÃrë,ce²œL sÎñ²2Ý+×`¿ÑXH„…0×þ ´Ž/ÅìÖgˆÜCÍ'}$÷pí½))+mMcòAd À§È]9{É‘½X5+X»€ZÍ`Ó3në8Îý¨+‰é/¨Ø¶ŠÑ©œxã4ÍÜôÓ ÙÎüïL ‡e´.QÁ¿d[KOQSüÐ9€ØƒÌ¼ É¿Á ןH ÇnZU M«‘õÛ;ßCŸâýSï PMèèŽ0z9éxÝâº*›,þ‹Æ;ú'å¶áv«äD· ñÃìÌí^'o ¡PB%ûtƒÅàkº 'ö•³"§¡ }0Ïû­pS\æœã>JÁFwv.þó5) sÔ±ÿNcï*qàæ·f@ù íÞsêl­–ÅtxÓ4ï(ø7>R#dæ,Ñ­Š”8~8 zjž,k(ïgùSmv$ ¨VþÚ”{d·œiI•ž ˪®²‹‹£–LõÙ­õS°ê/ ÙSšÞ‹WECª¥´d߀Óú'üÆ#Í禯ؠcÖöåHÔÞ«“»bùz(ÏÉCá<ÏÞžÂ\µÈ"{K@“æ Å…Íj°¶P[6HÁo|…=sÀÔ¸Øip QŸâ$ûBû6ô÷ZüÕ}-y‡NcÄÖòNáRt»é€µŒþÕK£l™ø†=IÖÛ%fM}³"ð¾æ´#bÁ=p´xõ>žÅï-Æ»V¿Lœ?.MijÒUZ„šš}¢í¤ùy>[Ý‚Ùj„3wgBŽ¿%g9óZÏ'·¹ºÖ<Û|èjv+á;¹\‘ÕÀª/PÏ›†¾Åy†vÖLÂ}·ÕC ÅŒÑ91׈Aâì–21†QÍqV“aUWJ0¥ÀÅþŽ’16ÈŠÅBkn0Æi½]íá»ÕÕ™#q¹º:‡ù8qxcªL†¶zª½o+©™Ñ*"N¿¿)\mð+þ[Mù—*+À^„€Ýjñ=}Ev³F#Hí½Ï‚À Ýoå¶ïŸ,Voh_ý¬ÏxCMc-vîC€À“Ñh5üçdŸáTlE¶¬7‹»‘Ž,lTY˜”Ì^Ñá’Ô„œ¾.Ðõ«½›O!›T`^ª},7nÀTCN§×αdû‘³)°Ñž3%êß­©Ÿ# ñP;xîb¼—É:¦ ýÞo*1}™·ûét‡¸‡Ês<äSêÆrÀ ¼ Õ$/;‹ ÄfÌåt±žjC\p*»:Qž Læ|,Xö /<EQmô »Ç'ϘžêoWÊ×ßÁe"L+•ç[1Dƒ'ëíƒ1OÜÍZKz»ºó¾ îéÍv®MËÜžE( Muëf£txýÛD[‰ ‡.u˜ã>žÕL]Ú¦tûy«fØpÒô|Š!TOY ‘¶UiteÒûçv NDó\ë&üßý+}ØÏ{XKJ¶¸+Gx‡Ir¦VÓ3Døž£Sƒ!Ùö~4KÛ“{ÊF€Ç»ƒ'PÝw[¢’÷FöØÊ°©Õ àÂM|ÕŸ:äéoŠúE³5ìæF\k&5 怬‚ÃŒ Ŧ$çÉÎíé .§™I´ª'Øy7ÄúwËŸZT+aû=ÿlö~Dw*áN“Þº*¾¬ìàß1¶®¤Šfùw™ jŒ—òå‰xÄQ‘š­ÓÖ¦ô’¶+0<Ø'oÑŽÃ5JVê5&!dгí&9!dêÕ…?ç¡À{ÚƒQY[ÎÇœÈfsDèxçÞô ž¶ÓãêN°T‹,¿yŒ>mwŠØgĹèÃýr4Üoûå2nIŸ ò(x8÷8»!Êw’ÿ2XR„~c~ïbpYðQÏ7ÁWT%>©6t4_²ÿR[Öj6žÝjß*N ‘ô¹Õ™u?Ű}ºUfçdo|Ûdž«šõÓÛóïQ»UsëaàX°Œf5-6+?Á‘“¾ví5k×í¸åUFH‹ûL²yãѲ˜¢§›Éé‹á+ŸpÏe|à4(œ^öd© gë~•àÇ`ßêž>ê·!„L¶´FÖ¦}a©7®?ÎÑwm”Wù9{„Ôú²µô&·³ sW£kƒ€T"<ŸU\&†kF2îô+Gߣe¦qeïŸEK¬e­ù*½}a•ðµ £Þ9]Éòj¯Í3 ¸ï“””Usâ Ô=_¾e·“€­ãØùÒ/”}~±Þ­ÿø³È¨w]»f¶¦QÆÊ"þk=-ß ’éÛ#ñtꌼ~±yx²t›ûÁÒ“Â(J2^ô‹|ñ–œ3ÕHŸC˾Òxw×í´ãÓ=woÖζ²=cΈEZmþ|8Ém]B[^iñ”©"šî&9¹ìi‚.ººýÝ€á5 ûÀË«&/À&‰ëBžNIôc¼Üw±ðþ½n4oK´œ=&\÷Ší¿‘SFÄ7O¦ÅÃa³Ä¨'Š+íM5ò%-…Þ¼æ²{8Ù À¬Ä€9sQÅ´N€ýïns±*àpû¬¬q&2/‹~šÒ#àIå¨ÄJ#<"5ª‚jÜ•?¸’âÀã‰^Ó WLõîŠþbž¬ÖŽ 耷f‹îë‰6Hý¬-ûTY—n¥ãNá¬á±É}î ›¶ä—Yy¥{«x5­_‡^£ßbÅêÏ'ZZ¶ånN“ÞŸ²åšåª-d"± >°HFò¼ÿÅ-e•Zò4}ÙªT³[;ÑÌ1‘šîo;+Ÿ*,ïâܰóSÊHmÐ2Ã×A-Co©ÝÔìÝ]dwÈw×!WüÈ—Ûln‹‡gƒ]£¤÷¥?ä]Å]›fÀàÀo?§ÞháQº~0EÀcÊ›æL¾àÛ"ª5)ZVC„"n‹ÒA–N4/b@ðyG#@w·oõ0 ›¥`¥O—}:½¹§@ØõF’¸M*3‰'Ï9ÍÆ ,ì,)bŸ;oïÇËU˃ëî˜DÙÚ,Jòp7âbŸ<®z~ᢨØw<{;µ'GÕY¨vĨõé‰pcÖß}Ùxv4ôªÁΜ1ùX\ˆÀqµŠöZOöí›Ã{}]ÓÇMÂöKgH›TRáÛAcµþ0_×#iJ×нU?­>(ŠîˆðôòTDttÔ®üXë‰c¤çOj~h«Œ ËwÊ2cñuTvm{/Ùºóz¿f(0‰Ë,ˆ˘BÞÆŸ>?I¦X^øÈkE´‚ãÞ°þÂɈÇBŽ•¢«³ñA²\0²€C`ppà|Ÿ/GÕôr²ëQ* ‰{Ëgv„ Ò—œ¸{ $€÷ŒZí`öådÞÔ’G]Œ…$Ö`ØEu½AŸ&Jýjq][)¦C~jì~¸ØÛ‡k]‘»ù¿ës÷yžú³KÝ «%zë࣢úûmðQ,H‹XvX¶ @´aLƒÃ)û#jé>ß©ÛÌútïFÕ;Y#ÑþS2Æ›“«ä:c_<šP—spP ‹Ç>79>y}Ø—jòÓ ,—µ¤œÖRB+{rŽXÆXÀEÙO¡[iÀ!ÈG¾JÙ`ìHm_+‹i‡¯–ˆÜNõùòÿãàä½>ð`Ž æÐu©á˜sêÒ†CHý1 `/YgU…¶œ«&èN“d)úG&±ð·kÓal(Rf™Ô+J4@NË`5;ârêÇù…ùàEëÄ],¤Zq ìnn(í½Þ ³‚Œä_½ŒfËS*#Ð*„MÓÈÜI}!Õ»ûyêÍä\E×tDݶœ­lFª—Êøž•ÈÙMÿ_2ÏíÜKPªÀ©˜)…¡*¯—YÎDΧáœÁü{î%£µÇ¼î]êj©)¾D'­Kkÿ]ñ;jšjÊÑp"ù _FþëæÂ³vÔ¨h€€7‡Ì#I)ƒ¨1ÂX.–MÎ?Ì3¯³{-* +ú8øF@EC²øEÖ˜€H_<Ù×+j?†£kG2$_.¦ýôÑø>v’jöd=!hÉÏ À |³v© –vÜV› „u‘pP¡÷¬ò¶‰˜ruƒD²,P^Î) {’A¯Ýë+Ío^šY ­\XCŸF¶oÀ‡šx?"ç¾ë0²Õtý)W­Ü=¸Â,HýéU…Õ `¬i„†u–1Äo~sKñö _k?~„ÛöÕøH_Û’Ö•ÌÚ:i|±t°´’@ «ñÏÿ5ï’×ÞèeŠÙÁEÓ¸«¨,#µ~¢|ÍÆÈí°+âÿšÒº‹w]£ïUKÁÍì뫵WÙ) 0›áû{p@MVNþü_—Éìd^ØÑÊÆB%E )ß­†—l½*_fßcW%à§—ßSâ´;¸;hÙ-4n““⪖ÞÍ»±6x·ÓXö˹܆§?\*6] tXÊ Ùzµ6iˆàtrÏ{ü%KY1x“M´Y²b6—³u³mÝŸ£ìò*ÎÔ)¶œõ”Œîö˜IVªÞPÿÁ…¾l¨oáR7c½7È}êÎæÖCí¶ý\¡_!ñÆ)Yt¿Ä5c{¦:^JiÒ¿éÇ:œ—àÞ?ÎÑTž$«òî‹:ŠªøÙÒƒ=éGÂP½t5{—¸DlrœaCs¨ ­JáÚˡϬ·šµ_ЪæóŹkÝi’®ò…-¾°äu &š×Í)-uŸRÓ|FÏ:´’ ^+*jŒiA„³-ñÒ°€J¤OÔ Ù!¶žÿê-ÙZ¢)Ë&|¸ŒÌ=£I‘äîÇ2æ(*ÛnEû_’M¹ß)?o^É!UÿH¦Â{fïOQÈàkÞ#0´ÝèCµ’C’RêCò±|Ç%[sHEïçSƒàÇàð°òüg0Á§çMT´ÄÏm0ìÍ•Lÿ,u³ž_;ŘóÄØ2ûÞ ,u‹cOq¬nhU`-ýnŠAÙÕÉ1ÒÝõ„3H MG‹ ÝÙa ~A¦ãßšßqë^I‚r®‰Š tâË¡“Q%±þÇ1"ÍÔ!ýbŤϞ˜CÕ§'gÄMgcv»µ„É+•Ôo ¾ï¡à !¨n²åóp|ôw9•öy‚|ÒÓjϯL}1h쌛Ò+ ›³ý8Ha¼€©_ l?¿ÑHUŽÜ·>ÃW‚ûy.¬T—ÙÔjèùÒé'4·ð{ɹw¿~7YÖ&}>FÖ´|gpdNž™>áŠJ—ãÙ—$Æë¼†oKF?@½â‡jmÃp¢UE¸Æ Aa4Ÿæ¤…{ v[™Vý¾Ì¼úÚТ6I¬^&Ï g{,^šf[CÞåP¶ûXDÈ%YiÖÇT¹×øþ¸?+gBŒ9ì9t÷…ÏzÝ+iÚWZ™=m_*°È 7¡ +ÓÃ:‹†«LŽ}œjε~ËTXìÞ”#Xó‘ s­\ÌæN¿5mŠhª‡.ž+Úy'BèÞg™e¼°û£Ð¨)…\9!/œã¦Y)V(üÈÓãfBÛ5¨7 ¨ôÊj×Ç] =µÑ8/øÎu$ú§m){}\Ì#Ƨâ z–½ 7Û~Œ9‡àrž¿›îÙ%³Zc"¢=Óæº<‰ÅóóùÓ\_ x[gÎÅwof¥·‰IÍÔVŠä/ûÔÊ“¼lÈ(m§ç y…‡Ã«6,¡X(Îmûz9W]_TŠJ¡ÓC·³;ßöÌvÕ‚oÜ2@«yuö2OùõF¬]èÞ{Î&åÇîY…Ás©Sy$3ŠC%|I§¤,‹dïCyš€îÅ^ÂU¼îöþ8_k-Û L†4l“|å¼€çbrDØÎÃ)cLNá÷ã$þ ”ó¾tƒ„k’tØAàJHç|,FW–·ÒãÎ¥èת!zèY`›’ÕìoØ¿Ô"–›æšlI¨Õú\¥4âœU¿¾µ‡¬ë퉛$‘•ŠM– ˆéª¿‹ŽÀXýV¹>ŒÂî­xôtq¸Î³EUðÓíxG¤È›àêéY\EH´kM¤U “÷?Ž£ÙÓ‘«ßþ.O;, Ï‘ŽX0?¼Þ‰s! 8Ð£Š¢¢ÆºA™ÎÏ8zN£xÖ\½Hé£NL-ÀªËz Kg ’æ)ÙiUe Ð?wò´ûäóÇoe7]- Ü‘8QLÖ¾.øù{ñòj¶øO{ë4?jшšZ*oî|Kûþu,¢š3ë΋°¿£¡Šy Tуžý޶ÞÃ3±­)MRCŽŠ«å6é ‡Œ( r²ˆMc‹ü äŒÊ—£1²ßÓѰ¤xÕuÂ{§é%Ÿn’¢y|Ë‹¼™Ù´…á߉$äM·¼÷®|Í„LÁ‰x–ôuÁÙãõœUÂÔ á≌L“¯>úrõ¢Ã§B;m+˜!®ãÖò@¯€YŽf ØØ¹òRúphî=*rèºWŽRìŠÝ›rt‚ߨ@ OV:lä“lëY³ñ\,޻祹lLObÔsˆ#1Øà¦ë]~}㟖»h®š>[ÀšÝ{Ü‚HÌyó'_³ÌÛ±‚µ¦ÊMGo®:ƒ{Å*¡ Gæ1ªÞb¼óJÿáÞx^×jU‚aKE÷/þ8’yÔª³Ks2¨À[@@>ó/¦íÛeO“Kú¯íùJ¤jåY—2YZ:9£Ùú5“ÁµeRVÎÍ…ŽŽS® óçu¾¶…t“‡ŒS¡¾\¤4-iÖÿ‹“½Ýnm8áM3÷a«Ÿß-AyÔéÌÅï»ÌY¦™DáP%¶Yº•o™šG¤]$‹þ­o‰¢¼<º÷fÙ È’‚~[ˆFÒí÷Ó8z ~íËÖ¡Pš§3%8œ‚‘²€êƒríÉ©n}¦.‹H‹£‰1Fy«ýøËÂô+®¤qÒ^2ÏI AÕ_\Z ÉžÝM~¾bRó¥’ž—SäÁUÉ^óÁž›5æ +«ÔÐÈ¡íd®‰Sr L¦~Ú‘êŠrzK .ˆ—«{äÉ¢žýT&pzÍuh @+dÕ Iúø/~.ðºC¹{”õ.•ܲ¿s¡9á ‰røÃFàJ<ʧâuiÔç·n™,¢´ö!Du”¨R#IâË_f#QÆCÉGõ2îþ°Ô4í2Þ™çµô‰6&üÊîÍìO_â.ÛAc»s•¯V— ü;=¥¡ƒó|°Už±.v•†Te§Y"ñ)dñûMÇ69EµÕ6ͳ¸ú-‚Ô¸cY&çX'æµ\pDZHÓÜboCì@B:zõ•Ó_úÍñ½„S­¢Fº¥É˜Íc.Ï“«Ðæ$møegáêð2)9áºÓ<¢$Ý¡aÂÕîµdíãÉ‚ÒxkKìöŽE”Ÿï5.ïÊ%—R»ä¾+É? .?©Ü‹ºoúkˆhs½yÎC#p9P™þ¦SkêºÍˆf€ß½'mò³f\.}ÉÁꞌ1Ìf/eÕ€¬¡úžJ¡Ø¿¥Ø…'»2Aµ‹ºÂÜ{wc¾õ©!¨¡‰Ði>Ñ¥S߬ð,è7Ø,%Å{Û.*CMMm!¦]»Èê«Xè…©šÉ wv„ûÄ£%7ºBËø°²%»ã<(I™â1y½ 0†ép+A@:²%ª'”™ãôšR{É?æ.€x¨Åõ(y‡«¬¼»Û¡ã[û3O$z¾-dä” «1[‹×cŠ«\æqH-ú²MBø RjÆ<—õ‹ãF'ÓV³ìnž bÕÜd0±U¸FNÂùIÿÚÛg ñýpà—TQ(âúqªêS´jCõ’«F&æ®?µ–el,mt˜tÈÒxJTæaÍÇJåd4Ì9ÔMúk-úRIñ+¡¡ìÿëïÄg#íÐ÷E¸ì³\€7EUÙöGçÛÓp½EE¶T_KM a«š¿X˜ìãáüJÕ*”ÛL—²ÂwfÎEbª‹ÐùãüHÒ×òŸcžÈ™i="aŒÚ×gé%(SUŸ¤;ÊþZsN Súü?{9K 4&¶&‘=¦Q*UT^‡ß aÞ¢œÏŸ€ß;Zî”'ÂüZµ%GփݨûŒ\%_›¤Þ a扨6ùê®ówésÁ—%MÒ҆ƆLLyüÂOR\%·‘ZöÁ£eåôì+,ÈCÏœ—Òo…5™]ö¸¦„QG]‚’úíÎ4áQ®ærzèËÖCÛï ®;ç¼/ŽÀÂ?ÛØ¯v¼®íÚsN”°3I[£Ú¬Þz¢0S€7ÓÐm368‹VÕíï ëüê)J—ª€ƒúwÞÊX‰á¨ÃâÔµ½dΤ—¸ƒ´‹šŽŸ£fÃÞM‰¨ï5»)üYн†G'%õêJù&϶Ò‹Áy8Wqùdžéæio¼ýl̃­„Rê¬þˆ2|uÞÁ€³pÅ;ÁömZ£â›äýˆŒ~Ï ÞÚõ¸3S7ˆTÏE¦ž:³§,òxêU6›“"|)——=6ž|³ P}´§“Ä­“C±b‡+¸##ãU˜Ú¯éü|™¶^D×1ÃMüý†O´=i§ÖàÒq#v¬å³ÿj8off ¤{3¡’›J+r’Øq '3CN›l]øIDuÀøœ1¥+wœá¯ÉÈ;0ßÎhI£ŽGõ4ɘG³cDÇv§–ýMj ÃøM‚™¶Tk§ÆmµšcXÃ\xä—!ÖÍÆFˆª»1RCÎÔF×{ò‰Qþ9×BÂ…°—^’ÇÙ<:µþ™ØÈjNJS·kžÓaTyŸxµrW‰ÏÙ‰PÚ>$â,‘¨ç4;ëš'?YDÿßT‹©3O6ç7¥©ÔÇT‡Ñ_<ýcŠ¥…(bð{@ψÛÊ‘b¹»[útmÒŸ R§a‰{ØSUΞåfÝn­MOBÊ?-™Ä¿Hž¦y^‰k«K‚[Ås“Ú$fËÛQ¥§Jj¼+šà›Â ^rú`¶ÆéMô»¸\8?•fK¨ÏˆïážÎL=ÄWš3»c¬«º˜_4ö¦Á¥†ÏåK£ùöá;VÝ*è}_O•e$z]u ÔÖ…ÜÍÒN‚@ìw0Vãi°ÛðȲ>¾f×—´ÃÛí÷ lfZm U¤ºpf†ÿ±O_aŽƒêõr¼Á×YÅ;æiS¨Þñ¿ …D£<,< ‘öcDO·q< Œ‡Zr›&£ ~¼¢2K~ÑIn²,W"´;²MóX…U‡-=gsØ‘ìä2Z¿Û‡~äÿ5;SY˜Fæõ£ÒÒXݶh}ô—.ì¿)©®{á³îÛÝuýÞ,0àBÿ*Š>wÿ‹¹"œ(Hº1½€zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.797789328 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v6.dat.bz20000644016037001603700000012202613607166133034122 0ustar00hutter2hutter200000000000000BZh91AY&SY–¤Ónÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàj5ìã¸U $R©}*ȆÔZ²³ $Ö,µ¶É…lUTµm,6ÏG_^qœã{w¥¦¶Ù3Fî·cÔ½·¾»µî÷™²Ù‚j²o··žU뜻{í÷1ã{kî÷¶»ÇÏwtåÛÝ3ëݯ¼»¾óíDê×fímÙ²ëî{»{´»nÏ{Ïnú)¯O}Í÷»Ûlµ[ßg}÷=Þ÷»f³{Ï>{îöh]™Ý¶wnL­ËÞÕÝÝØg»»½¾û»YãJN͖Ͻö§žõòìEÛ]"mos¸SI{bê6 E+ÛŽ5U“; ow§ºu9ÓE;LÚÕê“$Y™¤µºjsUm­X›°¶Õ£v½ò(ûßy«ëÝðʤ0š`ƒ¦CC# x€d0CF€444h1Li“C@jm2dhe3!¡ŠxÓÑ„h2jŸ¡“Ó “LŒL”T€À €M2hÄdÄÐÓ#A h‰£0!‰€L˜™0™0˜Lš0&›*xÐѤÀi&L‰é “h4 (2©44&Á 4ÐÒi0Ñ4À4M4ÄÄÂdbh ©ûI§“Iè› ž™ †€h¡1‘‘¦6ši=´Ê=hTÿ@©þMLhÕAHB„i¡¤›Tób22̓ҟ©´ÚFiå=Ú`iO›jf™)ì¤ýéé1èMS$ÓÓL(ÛSÆ©êièa™G©´Ê2z'ê6¡="¨€M4j2M4Â0˜§ê0*Ÿ§¦§§¨Ñ“Tö†LhM“SbFÁ2i£4ÔôO$Ù41„ò4ÂaÊfŒTöšh§²i¢zhiŠzÕA¡К1 &4a=Ôðh˜j=Sý‘Sõ5=Siˆi¦MSòiO2 =M¨ðb6ÓHÁ£Sj›j'å6šjmOTòŸ¡¤ySÓ51FôÒj~Šzzi¡M´œ¨‡Ôš‹N­ÿ¶¶\FìŽÅ¿]+]¯lœÓ×rÝuÐmÞ“沃omN›#¢èoÖy3ð¶SÞ{¬º«Æîë‘™ïyŸc¹’™(G.6v&ŽË35î_I“×Öï?*‹.1 °_%š Ãi˜‚c‰µûx™vГPo<Ü|¢އk“GCBsbqï:1/á,×wårõŸúƒ§/÷Š»Í^b{úYý[/&c6—Ìßñg!|o_»] o9%чk'5R©îÈõ“?ui }—]–*Fy‘»rã}ô øu©§Ì ƒ0‹óàåx‰îßëôîÔ:#æºý‚5 ¡?º„A0HñΨ×w ÷ÊÑh”C$Š:bÈf9#¹{¶ÀíŽÔyáÊj0Ø’ÆàÇ»‚ãP¯0  ÷O$ÑøojÖÐQX V H €€ò @Uòï$ €ðvíùµ`©CŸ4¿WãN²iMyá×IµŒ¬_#S0B(º¢ÕB*!9»·fîãV±* fHTAG…D Ĩ‚0S„•á‚Ì€`6ÀH®Q¡„#D3¤.2 |(#Bd‘ìˆ(¤$’CÀ: ŒÐñĈPÈHZ%3ä °?˜‚¶V|² ÀɘD˜gÖ+(—¥Â|0Œ´èÊ?1Fp*Ø$à5ã<³‰HG8…FÃ2ëN=(fRPÙ2¹TÞG¥Ä*B!\³ÏŽ…£©güîÙ”&xÄ‚t€ãÜ ÒŽ N(èJô‚c‡R9%3Zq•Ð ª„‹AÿçøP†ê1¾ô(_0óÒ"J)~`„г¼"o9QÔ¢B³kȃLRö6‡mäaù˜X®ä0áѹÆ@ÈbNÔµ) 1o,À;T® <ºVa:ÒÜàíÚ>°nÏ+>|Ò’„ †‘™'bB@÷7&Р{“„Ç®2 ÈÖ[ó=j{áÐ(ÿbá ¼7€5M3H¶ßD¯ ©fžÈ/"ÙXµlmŽK’_km½Å5é{ð0¨]šñ0Lðq̇¹I• ‚e„” Cß¡x`„R§GF—¬€]D€=<²pÃà t„¿±ÉBÅa#¶Ê¦±0Ž10dÑ£z®®u̳‡ršëj6ˆDGËgE)’”YÀy)Y,õ!ýž¸`Äë>ü¨šÔ‚è¹Ã¹QÃÖµ½3iè[\ãÒ:çH‰¿%·Tq$ŒQ ïk Г LñAÐ>ƒ‘;G{dØ'&ÖÿPêö®Ä zÑðƒ"b7Ö› ÃÁc¤Îó‹Žô3Ѥ8Û{†ð-†Ý–Sì–ž0Àmªl$ Lrp²ìÏl3“PðÏ&&sÞÞhÆXÅC³}ç|Ò¡à¿«PÂÔ®±Ô·¶áÎ(F1(Â÷ÇÞ¹ףmé=;Î'f§a a :·–oî…Ï>gpTâþöèÚ]ðíB%`^œbEå(6,Vè‰_!Dï…ƒ+%²¯%{ À†+”ÂÄqi ˆaâc=Û8F(] Pb)^{:„¢yo ò é2k+ƒ]m3RbX.î5ƒ¹LeÊ)¦xþˆ¬<î­“êR¶æÀÜtoD’œffÑê ‹`Ô¸ÜRu!1‚åýéBê]_¤l™ŽÀØIæÇÚ:{ (IB²² Š•—$Ò:™õíygš‰ æ<HSè`~ÂØ×D>ƒ"þv´3Wͧâf¾ƒ<ô¬Ñha³@^LpS]¨^‰ŽL8ñ‰uȼδ.|°ê[Ç ÖhæÀ`N]ΕrfÄ+ “ºo‚§ªû«‘]ç#4%݇ë´?«*t(žá#+án¡”[{1Ã(xÎ|ogN—œç МTÒ`Ø7&Õù˜•%òM+1ã˜ã8âƒ Ü @ J›:ö[úÇž E;ý öÑ.µ:´ßŒÞ±u½qOf ´6œù~Ѹ|Ï8íKNÊ·$ZnHKQÁÉ£y–T£|6s,^°XeÆq_Z¦Œ ¦a­õÝ+F§ì:6]ˆÖ‡„æŠc);#Ãp&¨%Œ—`Ó¤¦Â #5èÈ¥+YxmÐÒ³¢Ô4š &±çIú¨²;s ÛÙžNC)Åv H0øOä¤òs k‹h¹KØï»‡æØÝOûi‘,]sÙý¥&ƒXÂpX-ˆ4¬+šëÉÍ…¸[S®×¶"cß’X49óä’…O²C'xàgÏ¡±±Ð"P9GêJ£Ð&y"NŸHyÇ*Ö0ÞÚ,¥Ò=Æôï¹ ×š; .]ƒ–02'AlÉ“ îˆVùã$òÁ†Œ&hô§Þpîðò€ÔéØ6F3'–Z$±Í’äX/Œ«¥(vç½4Žö…Èr lÍåÐÜy‡*ö®Fê[ߢP0ó°,‚ägh¬2Xø£=:'è,ÇšEBcŠ (!x>òÓ%ù›S1 NIXBT¬,ñÍé°y ×™9Â`嘑Âd¿I™â⢢ %I$©†kãIk²Ike†9†¢ š™d–Y™dj$¨```j†¢I*e–Ya†„éTLkÀà§/ƒõ³+Á`ÒÈ0i‡ü‰c3Îgºo á²Zg ´…¤kâDïÚð€Ž1GÇShFS\)ŽWîs-¥Ëbµ—VµFã§ÏåA¬Ht‹P4 Ÿ!è'ª$æÇ9ÁÄ}±Yè:Äú¥°É ºà,Bˆ˜L€h•¨tr3m˜GÁÈô­Ä¤^_ô8 aE`&>8£FТPêäˆÌ "¨³¬acC#LÌpC÷×—¨[¦uÙYCÉ`ùvŽá¢¼í Äuð`»x¾GÑ0zpsðq6n fÎ ¤lÉD„(cÝ9þ{¥¦µ=ýË¢g¾Ê`‰>„/é=wÆÍÖ$ýÃÔ7§q5¢¥¹2Å=K3Å¿EBzÚ1”7lQ0 4Kýä ‚&¿¯z÷»ßöÔãDvõ¡¥›þ2@ñ<íO«s0ŽYDð¹a¾óAkGç7I“gnsUÅš†äÏc ‰Ò¢XÚÞ€¢>¸c±±ò´Þ¢nÝKË¡¶Öm-¾‹íš‚¤¾AMúêýÆØD5•Fj?p_ ½  Ñ(à  8÷Xà¿Ø<°‚ToIwTàrµ7£ØÈ÷äH(ûä8¨7‘0d d36A$§²‰ÔSy€\¿ÔИt=«'D÷<†µï†³tÀ~¸ÜÀåBŽV¯y"yô öðf…eäÿlš?Í)¯ƒ*F\d‘÷,8nœuúY,:S}eçÞ$k…à‚’›¼D tPç`30ˆ_™÷ä6‘Õþ †î¡ïÂ;î†ÊüÀo°þ˜ÚAŠõG&äÞ¹­5mÙÚŒÆÑÉàÀjá:ÈC40¸Ð'Qäeèà£W$uñÙ°ýx9ßJ¦¹N±?¸Á½ù÷”Æ#y+±n{­1Ðk#Ö‚^€5g´ô*0\Ô©fiÍñR‰Õ‰`…7ð—T7ô™SfÕCººŠíëñ݇‡_)ûp y1ƒÄ ç ײ¢kZ'?u¬ è. l§ÓVÏ•>ŒqË„  êAêÁ«e€Â˜o Ðã.“ˆ…ˆa†BƤ1ò¥4%žŸHyÃ!cÙØù%•KNxÿ7(!2Z2GP3>•fšÆa†Él…*0ðP³„sØù'‹˜Ne/ã L SèÈòßB•,!ì %Œv&TCânÜ)¹¹Ùå±¼1ì8à)$àq¶ôMÖ›æ/"º{#+Öù}¬¦¯BÏV€…¨ #Éø'NN îX)…?݋™' çCò–ÇÝ |¤†èW~-²\ã™:èÂܶç€À­¹î_…”ÎJ0¼w"<ÐïÐ#Ϧe4Y$àEpÆÁvã{ÒÛ#Á c„Ð}ÓDO¬‰Šª. ÒC"À9“7'#¬›‰ ×å`Q ÅJ'*ÊZ<ƒ(“ë‘!æa[¢'2ªêJ Áß\T<öèäQ5·8ûtšÉª@…Œ`7ˆ–÷Ì ü”Rg3]RœRã ŒIêé„J M”{ðò÷] %bÝ€¨Ã@‰±ëƒ‰»šy¬Õëµ/ŒþÇìÜ1ˆÒ„D"°+\<\›Ÿ|àÔ&­þ«ŒóŽ™HÈ€¹Ž,kseݧl5aŒ•#1µòÑ"ŽRÀæHÎÄÏ”dÙMy¨an Än³‚r gb9JÒXËÖ|\ƒ…x÷äJ³ÞÍLOŒ%8Þ¢÷žgêÏë‰Í Ô ýë|çÜÀ|L;j Ù”æFMx^…æ¯ÛwÚ>ľŽÂ#/|Ë.]ãÎèu¤øy9ß·•‹æÿÓx5¶Ÿ–8ÛÒ&ùâ3E­¸sõ·q-Dµ:<–æÄËo_b6éÁ§C92ܘ º¤Ä „¢;S»ŸF` ÀXMëäìÏÒbIÇo4å=dÝH^ йð<Áx`Ð<Ùö¾ÅÃ'.R“Ud†QaS¢CõDðŒGDl1¦tÙž±ø™b€È¢œÈ¯,‡8þÇÚ^ĬžJvïh–Ɇ™ µð(FR–‚"'d5”ãd6ãq àësŒ€çÖÝ”˜Óy²ìs|tQo÷š|ùÐÌ`³–þN¬ fÁ©°>$S'Ýô©² ~µ½áhÑ—#è¡€ÀºØñ§p¾=îsĹ½È†È·ü‡Ïfû­Û¸o7;ÍWÎóíƒcÆFÀà-˜Vº¢Ø<ÁXHÔƒÙÀ¢2Ðм°Ô‰# @@äš=Ë Ô† em÷Æi´ØýÆÚ„ÍRp©@J™Õ0#(!½3†àüo†ó™Bz’!ç@÷­ÄC×nEЪqƨC͵†¸ ” ‡ÙDÐ>\öpœïމO†O¤‰ ²81ºÀ<Oü¿"O¥ƒ™BÄHL ÍÌøÛ‘Þ1r5÷—Ü¢iðzi?¦Cw1¥ÜõNܰo0Ed–vdñÃ,'¨Yµ¯‚œ`PÕ7ë!ÜÚáV€2–‚‚0µþZƒ>K£´ÁL®{ðzSJÍ—èÜ5]áÁ+< š}ƒß ´í¤Ê¤ߢˆC æ1Ô ºòÖÒ$°¬ TÑàDOD €oÝèp›ÇP„2üzÀ¿ lîÀ¶!|ß‹É!ÈÞ¶>%‚f›hQE`Ô–# °=ã €r%2x[oT lË¿ŒÔf¥¥ˆG~]™ç,Ú [ 5ÁˆÀÕÑJÁÖI<~aĺNîCÞUŸ?Ì¢,BÝY¢²ôaÌ~|s½ÛÝkš¼µàw;*Ð?'ÛÉ?·Z4á‹ÛîfâÑKP ¦þ÷1.Pg   ÌÊÑÑ”ž]>*5KÜ2 GÍÇìªg§—›B>tè.s°=»ž ‡êü8ùêB™á…^æ¤Ô˜ºwÑc0@I#Óº³àŸ¼Ùì‡ËtM·åtìˆq^ÁÈ2Ža lå`g†µ š¿àa_! °i”`’^YXP¨›¡8à»4Ì2¨^†•5s̆xI†™ Àß[+ ‘´ VÓ1O”¹jƒDËIÒBÇ£k"øàL:bÈ0‰¹7iŸ9šÓ†Už,ÁˆÙ‡ÔBþ˜Rb”¶%} 5#€d„FºJR¬;WXÞ ðÁá´ã\–…AtmÁnnÍÀÕùA¯ð,D”)ÂpK#ù_UžôóP HÖÆ sÂHB ›°öFµçt>)žlCW.Ñ8©Í<'´ÓTrÉæ¥‰íŽ~°ûÓÛ˜²dâ•àÖ B¡—ø‡ÄBìè¥æx.@{ æKrË¡%${à¾@â€Ì5)*¡h3Ò`æÈïïs‹(@ó£æ[7X”ÛP€u° yGÚöúÌmžXïJÅ1%Gá/q€áz¿È»ŸQ­àê§êÞΞ-oàÊP B[¢ÝV¶:Ä6òôpŸ•CŠ:òhÈa1‚àp¯™Åo3©BðÀ’»«ÈxNÛfãˉ¤8F4ë I±+ÅôT…ñp#ÆDKáæfüÿ'[‹Hí„bCȆ²ÌxG*|Ž5×Ð-^ •M‚̉J@`Õ8‚s|C¯D€sél!°ßù‰N@r`À+Ù²´ò‹é°…ùDÀ 0§®Â¦¹ö C¤)Hûi"d]@¡ƒƒ¾OÏhå¡Ån%¤…(ßç™(CžwMúy‘ýLzý[¼eÜmÆì0…¹»¢Q’™Ë´2U ˆ™€¿¯qXÈgüÛm@föÛýÛ€ ÈêIÊ9×5‚6’ušîÑú7ÊV‡³q¨wädzz©Ó-ÏÈÊÕ÷’>^q¾ƒº»ûeyhôqv›–÷óÒ¢´>ÃD@Ò~Uú€dq`Tp¾v¨Á¸¡)"ÿÁðaÁ34ÉGøÁØBeŸ;ÁÐóµžë9´O+»ƒ¨—­;/)üEˆS'óCÂSeœÀé8ãýJI('’‰ßK8©É÷ˆœ“$ÙÀù€^åÍ‘+ªŠR÷Fs©‘Øûº¨o:ŽÓ™Š²ψêPazÖ¹Û½kïRÉö&• 3 U¿‡µ ¿»fŽª4ûð\“èU6,Ïà¥+å¢@3 ˆVØ0=@¦ÄaÁ5Ð6Ã”ì Ž”WL ½û, h‘è?€2ÉÔ¢P$( Òq¨Dà*‰ ˆsÌ jw£”jÀ?ˆm _‡r<ùcPßó&¡:zÎ $¹:¦Â9+ˆíçÖä Ôžt¾1Þ8jsKgÝ‹†Ä¡ï04éòЦ€ †Q”xCÊÖ3™‚œ©Ê…°BæÖ Üò‘ kF‘#{ r {n$7ïrH%7̃¬wIÉþùL£p4H˜J±€Ö¡ÃZÂîiÆCÉ WžÂFàÛP+:´0-ì^ˆJó™Ô+ïi‡bŒŽöεæQJö•u©JÀ"CCxp@Üo‹Ð€‚ ‚BH$€¤ç @Ž‚µbÓÕ°Ä@³õM`…?d‰F¤w¬n`oqsØç®cË75 l¢Í vH†‘ºV2”ŒÈP1&.‡f¨}²IÊ€–@q·/ ;Á‚9—4Ú0.É­€–ø¶ïohÉÃ4v”z„6ÍÒRá§kÐÐö£&™õCê>ýýO®õ?Ëpº.…ÒGø+!—#ÈÁî‰1ig “G¯Q¿ªé(ìU@ÞÊqp ø¯ ]eóàNuÞž‚B'„)•`{¤ÐŒ Ó6Ðù(”Ü7¦ƒ.×nça‡ë=Ïxð —áÛ·ªÍ!Ï"uY"[Ñ>! 0.‰Y;Ã6DOr`ÐÞ°\‚ Ó^¶˜!§(cP¹DÝX*~ߢ&üã8O¸L#›õ­ås‡gIðŠI÷ð‰O¬™˜ Iñ7†ýÍ4e*9 P‡¥e—l÷H@Ú (Ô·¦iàgŠ‹–‰¨Ü7d*P™(2gHÿL¼#§ý™¾uþ&誇§èȦy6R:àìZ3ÈÈB˜:ÚPR+¶ˆMLÒ¡#˜ÚZÙƒô^5éù¿6¢& ÜßÓÎã­ÍÒa¢w¬Z_ýÙ™gþ{°Ð ;3 ZÀÑrЗ8„'ÞDLB'wÁD—âŒ,«CªÔpîÙGŸþ6Ÿf[[³²8\;[D¶5¡¬lÀÙ¼»£4mýÀt=囨5EQævåq fÑÊ‘\vx8r¥p+·¡ÍÌPn><’§åÒ‡Û¨%aŽ·(Ã=þ6B 7ÉÂéC˜\øt.2¸lÛçrZgT‚Õèyzþÿcˆú{KnvÇ®5„ë;Å€ûÒ| _Q! hMwrË/Úvd¿ˆ©%Ò‡”{€ÄwÃ>ÐêÓꙪÁæãs¡¼+Ç0¨)ù*«hÃi¡]WVBºiÕèšÛRÈ= ¬õK÷.>—L€û2ùFú¯¡®2rY)ú.¹ì~ìš»ypz/ãõ @¦P>¼’N?B$%p`Á„ .JÔÞãšöl>ε4i€¤®áÖµí“͵bô.l$©•€4™§¿©¯slS7ùI¤åÙGrBÚ‘¥+`x[¹©0+TÀ®›¬Ät– 󴇯ÆÙÛh<©Ì`ïëi¬oXç@§„óû¹põ Ù €×ÓݬsöÆÓWL0Ó¾ý푈¯Þ˜‰Íu fSpèJuôþîÞ“¾Üà…îP屘;¥B­ ðSK"¡1Ä ÙÌ›õ&*ëûˆÍ˜A,®´I§¹ÛYR´ÐÝe¼˜tùL(ýTl¿W°“Q¾ ÅFNb;iOŸÉUÔXŒàÖóËWvËé vŒ&bõoÅâc{–c¸Éó$ü)䃂é+¨Ý^²¡ÓÄ?Çf2oÈGG˜ÓDw³‡ÁÓ°áZ~ =úò@Â^ôŽ*(© qÄÜõâ!ùøäêßzð¹ŸÏ~ÅÕ„M|J¸`–«„s¥qjµîd¾ŸdgP¿_¯¿5²íÔÂb#ñ'šOPñ¢÷DG ('˜‘×àVù ÆœÏ<ü&ùû5„ç(«Šöê 3›¾Ýðà5Ð&LÁpD•ßD…ž!´ªº™D<n»´K*e‡´Q ¦¿Y)½³ñ¹)±œ,ÏªÛø¹/þŒžWjј`§ó²@ué•CÍñqCh½B hƒÈo U¼b—g´>DLŰêÛ¨wFZ’…{•¹Ð”viB [­èù'”P}Šº9Ãuÿm¦ÔÉ3ƒé¦’,ɯ^Œ$Úa©ã¨ÎØ\ঠ`+¯$ŽÁ $êž‹û‹¤@@~$fÂqnþ´f©bléÚ 쬚‰1ŽÅBè&Í%ª-cƒ‹Úd©‹Â2”¤;+`wîb}¡BSÊ}—AÈëÚ¸ãOŸt©ž²Î– zlüšžKÑ¿õ0óv·®æÁãq´Õ¬\Ù:¢Iòe3ýfŠ&›+”ÓÎì`.%…ý(0ÀÚ‚Óg¡ ^ñÒÊ^ýÆÛcˆ¦`ÙC¼õ27ÈžÌ¿Ú mE.Ðûg ƒ~ɲœ‰i¹ôN·›±üÔ‡÷h¾Ó¼™8÷¦ù]¤Â˜6ü–o±.“§¤ z†/ÞÖG¼ ô–•CÊT½Ê¯ÎÄ÷Ëx[Æ';²ËýñÝIĹ=½7ÕUÇØwÜãðH…CþñÐßH cåÊè4CHs‰ŽhBÐÔ„7E÷ÛHã×Hƒó~ÿLó^ŒÈ¾#0”Œ9)¿óÊïþó°¿ „K©¨'CÁM>ŠS%ùHxшOPè@Ù)ç½6ô›¡M½zT%ÖŸ#ySe n77¹[ðÓNjâÜO0ÖX –Óëžâ o³Ñà­îµžÌ•þ-[3þ:œb&µ=1û~EäÚYÄ=çÒ)­ä²_?;Š˜“Gæ»}¼‹=tñíÂsÿOg’å Ó²õ3ÒlÔ,•åØQö–&À·ÿˆ]ð‚mÏ÷‘9™ïl'uˆí­}þ&4Û`sei­1E¨jsÓæk@¯añæù´ŽÀ “8ÔG GƒÌtè´1›Ü4¡p*…å™Ésƒ)Ä›H´¾‹Jî·^‰«ØØ6?Ç=¾ÎOŽ‘)í_K»Ç8fw+@Å í¶KK$²Æz1º_m7Þá9(“šžFgô€îR(סG©Nó³úï+à„åž>}ì ¯ c ßΙnóJ«­Ö5z‘P§ §êÇR;4 —]¤v@F˜ PÒ ñê* æ½"{yÍ0 Ȇ¢ø>ÙL(YÀ=gú³Ð© û@ktW×WÅœ>Z%‘Òs97ݘMøüóEÚÆ›=ÐÙXçdJ.0~k€9CšžÔ¹cpYLFó!ætñÂäg¼=n{ïò‰ù°‚­1ÎúÜñx_Ñ¿pßÏ%gĸ–•÷"û•ÜÄñ~(4Þ–RâcFp„p+Ájê7'7È–åÒËZnLBÙ",ØU+ZW ÆYÍîð²^øÕd½€1[vÝ–¯[ôLXÒÙöŸ‡›Õ¹½àKÓéUÉ÷ØÑ¦°ÞõXĦ ‰ê–ßÔ+‰Îì 1úô ƓΠðê׸úõþÑæÒÞl>t6¥o½õêw¸r÷®fígZW÷¿’?È»íÀ>`V9”H(s>FÃÔ;_CæþÉë5–Ÿêõx'B:dNý¿D<糡+€V}’Š=Ì|v„ãå~ýSl³Ýs[ÏÕø:}ày1^ÎãGà ã®~< H¦ùW4ؾ¤Ÿ•;T|þNâ|IVbÑ.Q @”|‘C9`€€ÃúàC çQe_‘N„¶áÉXŠ]y¡¦‘È ‹÷Ç#ž¨œ—çòö÷Z—ˆÂ×Ó‘Úð¶|`ì YŸòö_oÄT-4"šÌQ5NJÀâÝ£hùÈuM}Î_)vêù]ô§3>MÛÑ»¼dÂ"nÓÑ6Œè]\ÞOVÀß#ñøôÈàÖ軽†Œ=i—dÑàU…¼UßcÕàæµSAâ¬r,‹<¶(çOHBÖÌÈNæÜ ÆÌ $®žBä8l2(k6ý]Ø€ÒÄæ)c;…GçºêœB1£>pžµ¹’7Óð~ï2ó g$èÁXÓr$Û¶ÉK]>YF“‡‰Ãá;úçÁjÆÊš¨¹Š€,! ìÀþ}¯ K…™5"¶ŸÈ%#OMØ[ãcÙÖàë³Jáv.ÏQý`%Æ/¢ÞÍt:û®4«ÒmÖà_âšÛ=°y–žgïýk~9ã!á6 T”aHV´ø Á5:WWm§Œ?èz3Üÿ Uu…EyÓ d/¨¸ŸuÏrÇf½Ú®¾Û‚*ËR±ø.È%‹ÎiLxÙAñàt½Ha;¹ëÁ¶¤º^5{x4@ÂÕqþd½zZ–v†ˆä-Û\ÇB(ÒÄhÌi…³2«°µGAn$AÏ{°àØbLõ6™Õz K±Ui|¢‹áîãÈì©“.7q|ƒ"ø”8j7P³» [8¾Eâ­Ss‚ÀÝ œÙ`­ŽiiÞqëU·cž_Á,¬¾kô”3ƒTd Ŧ$mæÄ’®*clãÎÔ­ÌY_9î!Þ¯™ì;õ- c6÷ìC?HÏšTKZDïFñ¬wˆ’+(¼”QSBH}•x[$Sñ²UǦùèß{lsÜx®Ã/¾ 4R¦´z)ÿ<¼måµ°XÜ8PèîutÞ8I;ñ‚¶ ‹î+4 `Ò˜vž¬¼ Dÿ ^ñÓÑÈ[×rFÄóÆÝà!¥€’Ñ-€£FË4dɼC}6XWÚºòlC„ DòŒžG¦« ¹ÞïüŽŒáËÙBÚbž÷¸#w˜)Ù“+¤pn—œíÇù:••\í‘òb‚@›¿?òQ˜çpW‘Å0;3Ž6ÌdbÕÎâ$RÏ*?3q÷d{Ÿ&grÜœ³vtÏ Œ…eá°™æ#”Áøcaçâl÷5¬¬‡œ^uB øDÉ¡2Ò“!¯8»ˆ‚‹‰( Iþ= ëã 1§Ÿ $P’¨µg*Á} K´J8ÇFÍ¿æ†Å#k®Úú˜R¸¶r ;GiKÞã’ñü«ÝºöŒÅWaqéRÒÚÞ7Õ2ÃŽÏkB„3 ýŠè™*z,œû°B…)7úŒ•õq–ôHìT6ª|6â†y‡•qYQ¹Û@Û}‰r ~tƒ÷@A*6Þ ^<Œ½zXö`á2EIÁ¢ø2ó–‹´ot§Íþ &Z7ýrû«’nE2Üëè¿A£<¼Þ›Ïöÿd8ƒªRBfË8 ›è;ˆ€K½W¾J¸=Pî*>yGNûÙhÆ¢c ¯ÙÜ©ë†&PŸ1+­’µ‚%Çîùáø±è³®u?§ž‚™ê) Ñ4>)¡lbu†r”eÓ\U€ ú°…oï¸þ_^,Pg˜šÕe³ròñTt½yC~ëØ§ à_`†ÑLÁ»ÖËO'WH½Ã”´ØÜßAáõ“Æ&ŠÁî1:(’ãJE©Ö”bixÎÂøDæ„‚¢òÐ7| ¨†r¼œCäù3§lC¦)*ÚFS=Ú¼ÌicQp݈Èú½ ÷â‚­šGfQqFÆk¼OÜðº®hÒ™oó,'Ea ÔêI!PIbP®Ê¦õ… Þ'Á]Û éÁ-_1ÎC[µkIˆô§úñorÈéú}b˜½Âšÿf3m˜kœº±¿‘¥ŒY—ØáM»hø†YÔµ»xÎÐt€ÑÇôxù )eÚÂÎÛ2ý¶Þ!{í°áw ÊhÆuZ˺]¾NÄé­— ê9ô5Þ}Cۦ봹W-<ø–È- Þqî/Ô¤!Áë0>̶gìm¡oéXÅWnbQºÞÈ,e†ÕMkßðËm½o”¾¸æ V¸ôÞE¿Û‰¡Åè®ãÑ­K•iÕîÒà<^²ƒ#'q|׎ˆwEO\ MÉg4æk7´líà4Âj.jµÇO*’ßÙê 'ý¬Âæ¼õd-Z;rñüŠÆœßMbsÁ?)ï\rö|¥omVü²Aøë@¶#Lö ñ…PÁž»ïšŠØ4!ªÆÞ‹Ÿ÷¶‹ÀCl]¢cÝo=™%£*g؈˜˜€P›®ôÀ|~ul *úê× Õxž•߸„†Š·¼È¿.»—ñY£ýPé±`Âö†kR©Öd7ýÜ:,Þá*I)™zçV$ÍáC ºCÐ,A—çúÞ~{·´‰Úæ:g×Vd°‹ƒÐ¤á`Ѐo"MîÙø!²ÿ(û*$ ¹Z—P€ú ïéÆ{ÎvítL¡ÌÔd3[BÓÛdjš©žÿå‚é-^–ƒìôëhŠrµ0 ›„NÃ$ FÄrG~‰Pü €~2\½‘ €v )}è¨ÈiÌZ¤%­D´¡õ‹ŸSÃD÷/Fà&A§Bá¯hÑ Ãu‘ºÔÈàeš]íë’CÌa8ßäý5¢,|`7u"寚›Á–TDä¬C©õõòvþ§Á´ Èì¾ÕN-±²êz}ôô o朡Y¾Åú1=î›Òo4p°‰wßû¿ò¨ª<ýíAìpáߨ5;¤M–ï`®ÓÈ‘È_;,k(°Wè@:^{¢¡Ã÷âT(vd!Æñ ¨¥’¤aE¹mö裛û ò%¿ { ~~<—û)|ÕÓÈ*(»WynïžÇgÖ²ÎwÅ„÷õX©Ø{ÌdËuƒ¨Ñ9¯b™Þ9sK%¶Þb‰m°{Zós€٨ǿ¸k;í©I3s[Ìœòìäêz¶2ê(5ŠTœø„ÿoø}w:)¥ŒMBµÜú>µ„<ƒÆ$“«Ô k)€cÇÔa§o:<•]À©T Zû:zØ,–þ:ŽJ–ƒ`0{'îëqÃeÝÖgà&î¬n–™‚šÃ%SêÚ·ïõþø||º4*ÌÆÍf5ÐgšvŠ£òói7-OPÄë…6 !Œ‚¨äÕ3™ÌÃ…'ëúŸ„æ`¬·£îþƲAW©¥8(®`«¦äÏsªÖ‘.?—œÇû·6} }U’G»(SÅêw)\ÙŒƒ¶¢ø J‰#sè|6~ͱðOÉpjþ!Söq·ål %ù’²ä/ðsi1írüê9+†“Žc†ÿJJ&"vmh‹gÿjäS2%‰ÔÑ…z½o©”W‚É-ª·%RÂŽ5ö/ŽŽ c¢RÄ•¿…Áƒ9—GTyP›Pãéëê¹Vª‰êˆö0~cؤ;jFzK%ËÊhr¹lG76êaÜx”·xÔL†ÀÔ| ®mFVñ*µðœ‹puø ¶Ñý1DƒS ;E›§æø3àÞé-,ãFû…¬ßlc²ÿ-ÔérŸŠÇ¢U­³¥˜üµµNü2 Ư…ÃeT† ¯o*rYxd²”Ö,H¿Žáâ×ê Æ:Q7œž ûfݪ[ÞSI{ýˆÁ¹ç©N° ãðÒÙ$^ý ÇÇð¯ÆýZb9^ž¶’ݼ…§îÇ'œç%qºTk y»4C0‹£Uë°ÑZ0‡9ÜúS¨ žR¦28‡·YM:½¯J7ùâý×ü ß9«bú®{“¶¡É%¢¤–®ÃâÙAÊG¶{F$`o"¹¸ ;6® x­ÈRÑ“ëêrvý³ò¯¦œ)eP~ø£ð´H€l,nð0¹þDЏi²4— šØ‹2 ©]CNï GÅ;í©`~|váü(¬Ž25~&²UÇF©ùÖPyiõW´Šw#hlÊ@x©cÄlˆIkyÜý`á¿ïýãXé1£?Õö ¨ž;6aÊ;2¸Ip=b­W4òÔJ³ ˜*nšålæ÷…ê™õáè@Eàzä^{ûÌèÆFÀMç~ M?ÙJy$þ,€ ]ǰ·(ÚÓ™B ©ÿAö!è„`Vlå¤ãÖÔ¹T«´j#Û¶ØÖKu§;8¸Þã;¯e¯±ö¸'ê¼ÊŠÿs]yí-Ü.ŸºÙþyðB¬„Gûˆ H ¹6@‡t}{AkBÄÍõ¶&öØÞ À¸o©Iœ ¦Ù,öK>¼¢Çi®ü[kЩ^F}ünökGH€Üþq„€í™»JÙfUuz²¢ +õ·—±Z©wŽ.oÉÿé”2o»÷´&ïv—Äž:3™&)>qºZ}Âw½^¨÷Û üv\в{ñܲÄ3xJ8}U¢šÇìµ í9{UŠ˜v’"&íî¡#n7KŽÑqûÌpËgŽÍ¦å~š˜­MRšN,~»!EÀ È™¥§d ¾OkM®Å%W`w‘ð!¯|–HþFÂyqÒÊ ÌêPM9R²úëœ?~—ôõ^]ÞOF<=VŸKY‘ÿ!ï*¨%òÊö«+Ü%º¡;_´ëk>vÂ#h‹›ÎCã¼ üÔMÜ_/ï䜩ÁúÌ‘®5çö ùîç¥7‘úҸØãó?ç¿"蟅¼õì´,ÇåíLqZm¬9mz¥_vÂX7²¢á*U~"R|½—¼J_Äè1Ñ]§RûvÀé3C9òP–ë“ô:>]Þ‘žä–ªC¤rü¤wHÄ)öçXØöã]÷™cëc¾ííqoóAù–u7óÉ,‡×÷7Êùf®6&¶9t 9^ç%¢0|¼o »)ÿÂ4ÌѲrú¨`Ç/”‡=ê[?ïûö'nP™NÒØÓC^d’¾ì nk‡£'ôe°üоu=‹.•q³5ÿ%N7š_ΰÇÀ# T€ u’q´!,¯5E0Ó9ñ¼Syrª&N | òSDÊK½0ÞϹPó/ÿ¾jìf,ðssTÜúê<àœæv¨oö‘¡¥´Ÿ÷•Æ xŒ°ÜÎÏ­üny¬µ_|³Nær®J#±˜î¼w´d¨–Œ7Ì8 èËùëk¾nçZxg—}²Ó8ã¹¥V.…ž¢]ˉ¦É¾GÏ ÁoüF$•hûÒ|‹Ñç²Èξ-óqv-ž¶mœÅå»Ûi“ÁÓû:]-ØTL9 ˆ#Ïü¥@IÖo´9¢U`7Z@ŠKBj®§Ô¾¼h“·ŽccDšÛá«_S¾`}H9V£{±•ÅÏA)CÓë•ô•k*æDoôßMQr›‹VìFFo7¤~ qÇ›QhZ4ùYâžAûK!Ìá„ؾóv&UÓ§*8?`rhñzô-›àÞZ#xClJ‰üëd` Û—~ñµx¼ÇTý|·ËzG x|³n ICºvÈp>îa™­·úíÏnKrx.-¹UÌ"`§—|$“0ñ·Dk³uÞ¥oÒš.A¿ìâ{¶k½|]¹€±CïçŽÉÎÿãùsáXu§ö~¨æÓÁO,ücÐÌÃÓG×б–~ªÅ­©®1–ªÉ¼gÿU[nKSÏ+á@Þ‡A5Hí1 ÑxcCUÊë2%Éê¢ýκŒnkݼ<ñì•Ð]´•`Xà,ࢠ²,‹.‰¾fë`‰jp}ÑÍ›+òHoÏTzäÓúX-ÕËMþ-~Žéಥ`åW†}™Ã9U=Îsj>P ¸õƒÎa7íÕÇðen3öñºÊê95ðû øH&{¼{±„)c~ .z´ ªINàPá†ñ3àbJ„z@©ôWÕÞî258}ŒfÆdÖ®é4·Û\*Ý9aH1!4 ÉÄ€QA"°£âÎì@s0hç7'kò;D‚§ú-'Ù®…ôk{:y’áôβ¨=£Š)±êÛ™ˆÊ»ŠæÐaú–eù"ÒjE¢Ôs‰#tмVÏL[ ˜$· …cd׿]­&Â)U4RŸÊÚÓ¸sUMÐM»õô/…T^ßÙ°‡r Djõ©NåÎ ¯À°Œ)†`J4‘Nñר’Ù©bi_⣨ùwXÎýÉt nš8ä ¯ïýŽRþ’yálÞz} ˆâ)‹œà¦ü_uDâbÒ²Vh²£ÁæE'þϰÝW×ÖA‚ 4V5 =°w¶½Ã~Ãò –ÃÐËJTK2Áa²‰„0€KËoƒé…äO®YX8{QçjAÀ±(E(µ”2prΖ|² ¦ý<ä¥Þ-eÊ ½WvW'.“ºÿ5jÇ€G[ø["‡'fºËèã?ñY°] û´fÇ Ç†n^Û—õp,æÐ BÈV{)ì~L5Âp8 ;Ê—êü³c‚®é¥ ½!¼u1‘¾@$á½QãWµÉµÃð$mð°ÀYƒ9–Ã&«IÄQøˆ´6Ø¢!“dœ%¼·_#Hí¬³hX>Þ 4‹ƒr}4Ãf)•²½ö×úý¦yÍe L9°à¸ñ© $t¯Ôôo£'¤…äÉZuGòÓO¤¥4e4Ôž°7},–°mø·¯]/ A ¯ÞŽ£3o׊RiBIT/¼Ï.þS7XÉp¦´ƒÁqr4À¸ŒºQVð Y¬XÌý.{Ð@@Å.i~2OLúzòzD—¹ëhÏùáÒB‹ÑퟟäiÖüÒTQ줯ƒope•J!ܨ¶æ÷ô®K+[Á¼c~c•õ¬¨`¤Ë& òêñضØdKn†ãèÚnp;>Û´PG=`ÙÛ9fŽnȶ¼ùyå`övD N’=ýÅZ”Õx°³ƒ!PòÖ;ÐËQ‹ÄLäc¾}c‘*À=²A‘µ{„Lhý-K#¥&tt£×l‰iàá2LCÐáiiß‹GðR¢w” ;ß^tþBum[•\kK¢lÆ„Q÷SuÚÒ¿Æú› †B…Ø[bÇ÷$õ_&¸ní¹{”ëÑ{û Äò[§·EýχFdf¾e¤8v‰é‹øi'yñ|Š]Uë:ÍRÕíCüžòÉþ{3)Ày„îö¹ï(Bv­¤1W?vªÑ‡s¨Z½Ù•Çɉ׆?Öȯ¯{LÃ%»‘¿›÷Jb1˜\´F,dYàwáìûÃò"vŒ©çº§}ç:`0c=.ï BÐO¬ìÏhÑw»ó8Ì+Å–ƒÐŒ5€d_ ÏÛýŒž°êà|ÝïJÇÄ¥'c œÈ‘†?°ójš3Ô*™¢|ŸNÔ >•Í&¢âš¬˜ÞàwÑÑ‹jyž€âô”ÂÚk'vû@)„\ž²ù<èGdÖ•£Ñ ÛXR÷r,C2ª/ááàý°´òö6¿ççѦÒÿyžáú.Ù/dÖ´XBú\¹rF3¼¦/ÓVu ß%áøšZ¥k¸·â}?ßHŸµÎÒÝ*¼ ³bÀ[-úzªš™Ñ æ£è–âòOõ@ý6Øé`Ç ÃŸtè¹)ÆØ'–Ï}¸çȼëŒn¸4MTéÛjÌ?¯úàÏu»)䮈¬ÁqçŸ+i.àà8b´×Ý:È÷<ó1·lG‹„Xåy&:é1T‹w’ÈØæ‹{wšÊѧ¡™+û)ºQ¸† I8lA€xÏï`…Øy̤m¡R©ÛQ9êݺ#¢*½ëÿNý_”÷H/ÄÕ.S˜B.ïýt„\—½{‘ ÷½ž6Ù´ó·`—”Ë\ZèIZ6Â[ŠCVô³7V^³¯+Q¯®Þýíp°Þ=#fÑ';ä4i¢3,ƒíUuCq®8ÖÊ% ©’>©áûi©šŒ»«œ¯аâ辎ZôV¥çk¦égô&c˜„ë˜çP}ÜæÎ„¼ta„½øiN6´¹~4=20SÒ¡¡Ì`gvEøå^  L)ûr6I݃#”FúÁA„í)D~á™ 'ÊA…5êYÞ÷ZW^Üé·çÐÎmøÖº55[d³ƒÙAo%±µw­Ôômž 3ï­”÷Ïšç}s¥ ¶‰ôìSd‰¨{ ! £óŽÊúh1“@÷[JpŽ·ê'š!s3þÃ:vak4‚W]-âõ–,ww~lðOE`à˜.ŒÀ%V n¤_‡.š.%Õd>[çF-$[…©T¼GyuhÜ6k޼ʢÈhl«pŒf5T°™ßW~Öªx+I@/ýú°@Ö`¡èþÛÌŸb+£±}§-=&•Ú«Šâ+Ò 'rüAHA|°>š`ÈÕÌøÙúêZ (‹lÂ?k«Ób½¾öç-£õ¾ó!–Ô¯óÑ+®§:=¡ZŽW3¤è7£íü7ÈSÑ ï@·ÛgsÇxu§Éy¼ø°¸0¡”ð BiŠ ©ÀÕ C—³||ï,W;plâsÏL›ÏåÆhô¾ò7ÿ¯73^9¿œw˜Â§Xû¢ÏX`¦<Ü!H{-c('.òZ|Ér8´©Œ±ØQɤx5kˆÃZ‹êïæT©±A ÃrÚEW>£=,x®±“ónu«sj‚)µQTÑV¡l\²é?h{ø*^JN‚4ÉßÊñØ(‚ÎvŠB¼µ m(Q`Í$Sq»’¤ÿ>©VÔEe Δ˜@yˆÿ`ØnJGÊèÀ®Ña×ß~ÐÝô÷ÓÞÖ\•[%í—î{J¸01ÉSëÿ}÷Õ*ñ-…aßf¡ ¡€lH!´øåmJtܶùü‚Þà³ÑƒÌþ«U]±¡¿ñh:–,Å)ñsÀGrH[ÈÍ|¬ÖäS(¶Qûv¡Ž?:¼g•2³¡=2å0€D)*ˆM626¾gþˆÃfý/éFÀØie<¿aóž³Hç|NP"€¼pÞH!¶'‹éœ€â"2lûÊjIiË3ÆÎèuµ)¦58Ö Öäúé´ùr#Y£ÌøBõ~ûtÌYb6X`/}~ר[L›ö–ðtÄ2?¥É&–Eãó'Í!(GT=ÙPKîÛ/\>,™ÔUŒyqºë•­÷ŒŽ;ec ̉EüÔ®£òÁPŽ‘»|IhÊøáÛДaV(a®·æ.a_¡¯Tð­5/wq'‡â)*öøæ¼jîêy*VÔµý5“+tä“ÝíèJù¤—ä2—á¦Yš= ÙÆffºA þ<Äkmg3Ð?8JåÒRëáÁ^*KÒò»V ”‰Å¥bÉspŠ+Ðe`ååK ¨óÕ:YŒ=w™«už[£éà/€¶{fuO„|™a C/,A &‡LŒ…~[T73 ßit£nÙ¸šüð ‡Ïö¯]5m¿%[c°ÙÈÍIŒb:T±x§iX]“ƒê >Ž2;8}=–îZ®Ç¥õÊÀ™á­2 £Þ@§ME:æè$ñ 'PqÙDPGa“»èàÄÐÖzoâËr¡èèÄgu‰‹84öÛ×>«ê{Gµì…ìÝm?×™$]Úå#©ùÚ³@Üìù[Ÿü©¸k¯Ðî]òyú'úçöÍo.æéÇ~¨)ùýcùÏzÁ•ä¯ ÕŒtܶ.ri ÑøÊ¥ºžçR;kpýv¹}_-$|8è’k² ¼A|(!@t~”‹óÆCáòÖ‘lz.H ßÒÑf^ûêr"ý¡gä’×§G=¬å*Q$ &è ¼]ÉiW½÷ÚðT6_+ö¦]B˜8üØ¿åý×å;”’NÏy]2÷F˜³äK½Éíâ°?mÍÊ›PÍÒxrÄ›0\7¾Ô2Õ¿í:s^tóïžÍ×7N48MÁü7_ê¯òçS)™¤Ó”gCæz“J®fB“Žù¯ÁQÁA^P²¼ÌÀH·yº‡»_-$o'&P³‡AÄ®¶Õ÷ÚÑŠ¢hˆª_©ÎC—ˆ½‚ ŒÅÚ†¬ìérb{ Þù?&™ÔfúkZ23ÝËgVÓ‰²´°Ÿ3ý1׬VVÁg|á%qä±û€„óöŸN+opÐõÏ»Õ3IöU&\W€;]ëïš¼ð^‘«1]̪ØéåêHÅ™íÖTJ8dä£VÍ/ˆ#j²¼áA1Ñ2$!Òè¾@@X#Òiö¹™Ý”)Ý2¾{›š™Õ=ÞOF÷¢ú59ÕäN¨ÜxúHÔ” ùgœôÕ0šYP^bVx6Ó©kPŽç‡c.pÏV™ÅTÄ‘p¶‹áA…ã™/~óvˆ€8ì8FÍlôÈU…l/3ó]à»Ws¾SXÎŒõ4—êZjý=3¶¬}Ap Ýü~c›ý7E@‘è‹èi—?Kí¾k°” üJƒæÒq#Yù½KÏ’ÉlÀy;Í«'ñâŽ'`ß/cj=.wÛŠ47g· Itáù†2”JÇŽ¨\ÔÓ›®×rÇûß@¼^9Òþð·Íßî>8–©­o9 ddþ’+ ¦€8?áKY`@dsÂH±—>˜(g½PÁDôú]U’cíÏ£¹ß<›‹ï&Ïkkñâ"ò[wÔµ:i=ýÿ2­æÛb1Kîs–Òr%–xݧKÃ,² !Ïûî´(€Ç7°Þ ]íQ¥ÿÊÆfÉå 6):¡šÔì.?_s·–¶•—¢{ø$p­3ÞM‹’R?¯R­¸EÀÈžýó™å´ðØ•FÐòðµ—ÖÓŒ‡j£­mb¯úB‹šŒjÖõiÑOœÏ=òþÕ‹ØP0ÓNzëß ‚Ü¥°‡ŽÌÁÇWáUeί-äŒf vp§?\CÇâ;xÎ °Š˜qn™Ö°QˆE¨ÕV÷¦X¯ëb#—­çS¸¸Dڜ낈wáà}7Ù ‘1‚ñ™GUªœlÁòó˜ÐŽøn¼h¥DÄ8¦Xò &䬔ƒ 4t”逿àÆUz:n£Ô—§%öå$Î}úœ·¦Åsö¾·ö¿¯›çD`:_m^î—Á ÏÐÊsKXÁƒ‡ëÏ?DK¨~´³[\êÎÓ­®‘ýÿ1¹4vyJÅÔ·Ýo†›W¶€ú;ÇþÝ*¾G'¸ÕóPÃp¨ç]Ôóɦaî÷_±Â&¶ÃSÑÓß]8;ÒÓ@ClÕ½Ïr3´ufÆdM/éÊå´ÕßWÍÍ•×ÒCÔsl´y¶§¥e³M¡çF—hXGÄ¥˜;@1Øî,s‹/®-1µ=D韇%[ÑÇĪÀèÛϳ[£¿3,…:v‡f%™¯^?q~3Ä^tÿ’dÙY÷,œ‹ÿgáŒÂàcqô°X¾Áûs­=ºýŸ‰ƒÉR¼sq¶ E×áóÅ.®¾‡„¢m¹mõ3<·ßüí„®er‰½&(žàS·Ð²Å6¦*SQzì“qKØÓcÙ>8ûŸœW¡ÙR¢;Ǽ£œÊÊø²Øúœ*[TC5jÃ¥wíßRÓú·²bÀô`¾H­ª)á¼06wòÉÓ 0“wh“XÉTf£…÷æÏéóI=ò(ޝd‹æµJ5Ë‹>Œ˜iMˆlü€a™+ŽÖØtèwòè˜*º›öd+SÖ¾RZÖJâCtâö–öS¤ ¹°~…ڞܥoô³¥„=4´¢ÞÍÞ Þ¯„-ÏÚU$ 3WånÉ/ì]I²X¹mrÊ]Q0ϧžtYW^è½DEÛFú#ÅÊ+K>O?$³ÎGÕ›Mˆž®•´ÙÍ1Ô6å—Ðù=sÔkX^*Uôé)ø/¢[Ø;oî㛢ܪãÕàÙ8R‡ë™×µš\ $fE—£qÏX)&9ÎüåÈæ Š5 F¦ –,ánM*&÷_¼;Ó9ÔÀ’Å/¼­f>4o¤5ž‡•­”×¼*Ñw¼zÈû¿Ô¸h™š7L;/TL{G|´ü`ÉRä]]ZîpÓh¢ÀjÏWZÒ~¤šçül>\üÛÑÜp©f†«q»Þïcf£wý:ømM¥éQ¯Q':·F˾Eu·èáa½/— ÜùZñOüCSb†gÜd«Sð Ĉå$êÓˆ¤s_B¶xêxˆvü {›B{ãAà¤ik}£,•`={¬o“tâý£†ÞlIvœÙLžT‚q|cÕúèhˆ«Uö²Ë„Ù#¼•NÌ'EP»ðÀ°rÑO¶š}ôɱ#ˆù®Bú˜hã?¬®ˆ ´ücðÃþ¢¸A£¤þâPüvvL0˜MT–lO ?îçftIv å܃ßc­,Ð!˜>Ô(ÍCXžf¸þ×ó¿ÁpÖÖÛ‰×6BÑO”É?Q4ïàK³˜T·J °í˜·¿°¬Z[UüAø'[«,–âøQMý„æ—}iq¦Ûìlˆ!S;Z¨VÊޤí;PSî+z6¼z}Jö?þ”2jÇÛf×åFéÊç>õ¾Êæê‘o«vŒZÄ!¬L«L[EÔíãhsZ ®ÚQ÷Œ2( ¬[„€ù#¹7ã}ßÏÆ—Û‹87H\ºiç 'W¢ËR*s%‘ˆŠêk—ôøh;8ï`‘VŸ—°`ÿ)Á( tÀt™õÁᤞ,’îÎWœ5WÓ\ïL¦§7´MáG‘|E¾Ì©[3ñæÌ”¥€æè¸oVÄ{ïCí’ì¹&‡›ü:YÅ7‚ÀXu£D<íóôŽ$?·ä_FÄx [Á+Ͻ„]Â%Šwã$*ôÜJ×åaä_7{/¦ôNŒ_zð Ü dú1p¿+šmmöuU!ßL¨É¥z–Vjàö8Ø¥|ª×IP†¨ø}¨òâ85 eÉfÐËóþ¸øp¬r¦juGÝ®_§Ë¯ËEÞ¹rZvZ*á|vBFŸÞmTM½Ú¸•ì7°&“wûÉ4´»n¥;6:èŸcÚ!;²A戻)Àžˆ ‚ˆxQìüŠˆê°è>x©½7º<ݤ«IvÁyBv…)Mßf^½ºWv±ÌhÒÆËÎÍû5iùñ'i} æC¨æôò“uБ~Æ2¿-ož\Ð%ö&Ç[Å[&~â·‘É,O_z5‡†¢_=ÖIØ ÿÇ$ÞŸûëÕJ=澦Ç@§ð&ÖL5Dêµóì4—åŧ¡jA æ)üãá—Z,Ùû¶ï©Ð¢Ÿé¸ãŠ—° ØžßpØ9zoÄštugÁ*±6Þ)óvÖÚËÙü8Ì?Ã{-àŒ–Í=æFvb!âî¶!_žÎt‚1Ž=À µ€÷ßú{³}Š­¼µÇÏê_¥ ]2±\i=TKA[—Ïk"(ÏâS¡4Í~–£p¹ðÿ4q᎕.v«” ¹‰¾`ojÎÙÜNÿŸö³´ë¹/×^Ò¬wã^˜Ä)ÇÉÔ\ÍçßéÉxZDê‹ÒÜ¯Д´=-ØäÂí$#MFoŠ+2ÕÅ?ÁMÊqŠh‡@ŠCúÛE)EéÕGDübQJ@T¢ïPöÙNÔ>¢@9L;¨wÓ·UTcû®Û6vùû(òéÀ×mW\BÛwŠùx{ZŸ!mÕ¶=!ÄH:YJR( ›àõ"vx•ȃøn’ó-âÔDïÆ“þót§c‡€P»Û;ÀõV¿å›Ó4ùxú©v®€EeÉ ïnÛ yrÝ ®ÏfšpE¿?ÝùNÊØ a8fOò%ÈAÉ [Úhañò’~l¬ª\mÅ.Ó!ûiõ3ÝŸ¿Ös±¶ª—¨ÒöüY* ªSõlÐè0ygù{Nÿë`ß|zá€ß2!ÖÊxÐ8½Íßߎ£q!içßÞN¾LÕä`}Yä~ËS××P&ÖÓõ]»oíOt}¹I!^û1ï¼óž3¶CÈuW(>®¯Q¢÷€—ì³ËöÂÅØL6›»Ü‹Ãx™Ì‡þ¸ÍÿW=A ²ú§*—ñŠ‘¥¯»!fà-k$ºà§ `u‚C ¾££¸$Pë˜S¹ñ)  nO’9C¦®AÒÂl‚•²© •Fñf,ïW«éß§S|sʹ(¬ŒÜÕd¬ž%„ß/uz‡Q/¨Ô™€Ð4'(6 ¤äDÌ>µÎ€ƒ32öIž.Çç~9ÝÕ*üÄ+¤J-ÎÏÞ¥èQxÖƒ»ºJÇzµLT.P¥9'ÿ&ð­]çæBG%ºØ.cé,ûã†Ô…OFèN˜¶ª”ì¿Ù"{#¶òÙì8Yo¨R+Oç;ÍWÅO-~ÁõÌótþ3£4Ãæ¢~ÚF}„կȴ.§Ý˜ßÑLÃàlna0L\¡à¹©4ãsí`ïŠdv1Vkã È:áHðÊ#ñŽ9sŸif(ï=l&a+2ˆ¹¦k¶h…O›(Û¥<9.ÎòSSºˆóþwŽLãŠ×†9ÏC2ÂÄÍQ¾V7¿+¦Ÿ%‘œcæßd}TgÈXܵ{:¸‡OWª•ãE|—ÙÞ—çz›‡²ñû4Ù[lÇÛ%1\å¶ änܳ…]rk¥Ö.p|¼^»ÊtGóS溔lôËülÎÞæ¢†ww캧<©üÇ×ôû2MEbÕ¶b½*'Œ€Ì°Ä1Âí¶]`6#®øýÆbchÍÄBrÜQn’ÕÎgïqÀpŸn¡ÿVî>XÓÇÆM°8)ñ|2TP»°¶”&JðI–®io»O:p:x–'ì$P¥¤ ,½¯?e±‹6»fï/h¼Öÿæ›hè&4ÊçÕG3 ²îñH"f%=*Ú wúéÎ|´îq·+d(‡aO‰ÔVç•áÌÿåËŒ]bŒÍ_å])ŧQ˜w›]1£ÃµÅxœ9Åߺ<êûuŸ‡Ñ;®¼gN-¶gúáC"ªÈÊ6òú«b®¥ù•[@>ȉ×÷ ™õ]Ÿm3Ÿ2:Ø>óM!lYÁíÕ9]MÉ .(?ÆnG¡ÇKŸ¶PÈjX«¯zkõéulrþ •Ev—$”üAøœgÄuNð§\M\¹%º=†öÖ«‚©aØ—îzýO×kûõ̆öž ãWÞ âhàp ¹Œl|†‡9?)~¶×°ÏGÞíã·Ü†vˆðzÝÏÊîÙ’EpébÂtjI1·Úœì›|þÈ“sвÅWXm„•Þdá†ÀLìõûæ5£8¢ß*›ZÄ^U Vü«îkZõDgÖ{¿÷íñ{Ù;Id»k1©GÞjÏCäŸ@ʵí©,iر)”4NK”µTÿ!xšø-Fšr³‘†¶b»á62¹Ñîçíë +7ìÙ¹ÝV{ÑÒÉþaÞ9¯øé’§…8@ %ÄD¶n÷ø"ßbê5—ÞMf8Pöª)ä›*‰MÇðkt÷0XûoW>ÿêyX¿ûÞ»=‹³oFòlø}âµv *ˆ‹lÙ¸UÃà2Á¡" ù¥Jé“w:.6WëD÷ߤ5wšz×™~ý+ÛõޝÃn«ÃC9ÞÇ\ônt©£ç}òøZpVs8r Lü©ubnï—òéAÒÁ]F˜ÿ£ž×ÚA ƒó•å!€%ËU¾¯k—äd¹‡‘À½pô aÀZbT,m­yŸ6êí_—wGI¾[¬Ï6Ü {gÑ‘¡ƒ¡˜{Ö^¿ñ8rÔ2 áü²Ÿ<Î0€º€ò¤qæoÇ9î²k*ºû[N†¤@…ÝÄM«¨õ1ÿ?B)'¥ü"„PlÐ;oó¼ÐéžL߇Æƨ¾üXÃÍÔ½ç)¨†ãôMDæŒv3ÕJ­tü¿…*¿sï4ÞL Ò3æ¾LŸõ’¿åÅtÝGpm<ÜÆôp‚jÓ)ç•ÎÎs¾{üŸ]ܬ¶Ï,n½®@]÷Ž.ýÓ¼&uïXK1¢S©nÕ`iíf4ÌŸy &YgMwSÍ>Îi]Ο¯¹t£*Ê~'ònŒIr(ß’êmÍ™Þ¹Ž€=ƒç»F Hc ©ï…v[éYhn8[TΪÀz1i´9)¯w·’³ýô½ŸMü|Ícô{ý ýU7ª#¼d ŸÚ@°¼×„éöç•9Âúp749fÍ@¡”Œ¾ÑAžÆêƒÀs5–J–ƒ 8ÞéÿuýØÀ¿•ùCbvŽúÛ<í§¼ÐJ+$+”7iâ®t.>OZ*¾¡¥&„ò£Ý£zÀvæ"¦_b9ôBm3ñUhŠ IÃ’1@@ÅÃw:Š·ò† ²™A¾Hhç˜ 9¬t«'-·5ÍÍå^9œ<Åê©ËYôÌ]««®Òx fZuH×÷Ü9ŽøÈ_>"ƒàM\L#J¾ñoGÒIÌ÷auöÉg¶²`®qÊêŸîžß»z÷ìÊYZ[Æó­ùM°4zͤ¾£¡¼xbóñ_ 9iNî:ËwÖ.Àß:\^èó?žNßÖ,6j3Ê5‡úhª_~bq:°€tЕ¼—Þ ŠvvZÝ­84ñÃŽ3ŽS­Ë®m¦ÅÓik÷›}ïbÞo]üµr¥4zÍߣmÏùÕ6Û+aý]…H+d|áOÜsë‚Ôà2EÉìˆ,Úyr¨þ§%0µXüžõÑ(¶;_!(¯õc¥¦´— ^ú”ÚgÄN÷íUêЦ¸3 \œakSªkô¦å›­ô¹Üç6ÓÑ(>€ :ÞÜ[¶¡KCå<ù$F w wK1Žž·›îp„>e¼]C¶'ù‚ DŠ×€ò{ã’,QÉ'».–Ú*òƒ5!´M8×™ÃúgšL•¡?sùþP…ÏFÈ,Ÿ4Á…‚Kíò’Z_˜W\ƒ³@ ­zΚ'&ò‘œ£Æ©f-)ÿ FFßÔÎqö#ýŠp¿CŒè#n©ÖN³c~/Ý€®BR^†Gõ¡l©Ž”_jm¶}/«ªîÙBôÕ‡N™¡¡4ž­ zÈ!“»ÄÊ,ˆüöÞj“÷zÔ<ímÛÁQå–‚ˆë‹¬ñ`‡y¸E’XV|B ú°iÊ –F«!èÁáõPÏík{"ƒ †‰Ÿ…6 µûþÜÞ!gZ霪péh^çál¢~’LP:¹½ß_¬U‡fw<ˆH÷â>ÑK&—¾û0 ç¡ÏÕ®S%}Ñü8˜Är á#IƒÃff”—àñ´™„;·þ¼û8WFDžÚoóÿS†›/ȔϹÇR;&œúöüÆe”:¶:–qø.uƒŽÈ"ßqñIF¤ûÆ$‚è°.æ›`åOéÁ>óÖ_ùPÐ(øì–ˆ‹hp™àuF»žÀÙUëS\õ_¦£Š¡ºØ•Œ¤Ôéu¤”¨ý0ä…”õb9˜9A*–>II4œ˜ u_rÉÆËE6¿‘bá=¡N£æŒ4W™Öê["7ðÔÃ34íçUìmöš§êþΟν1pØ9ÞÝ“ ¶X²—.¿Ós®@>ÐŒ\änf~A,§)rntÐnu.ylzõûÇËßש´ÍOyÕŒ&³%ÚZBa›äñD3/ _7=d£1ß=Q-To{QꜙK=Vmo->ûg·ÅE¬{åRêqÛˆ3Š]p¨À« ‘¥neÜÁwØÆe|2`ÛÊ8#ì* ÆCAöG+j¸jÝ3Æ]áp´±(|N0ÓÔð.nÚ†÷Ÿò‹(>_…‹«„K U j*Û ›äÛ€À^D§ÝXU=féIÑÉÕaùßõ©±·g±rYGŽ"{ß V ýçË!àåq—xìëßÞ_ˆ§=q9 „ŠTZþôi7ZÛfïªk·‘£µy°ö`Qà/“Ÿfô®L•˜ÚQSè÷¸;v3'åÛä|ATÿ‹ÆEg+5øà“¥ .ÉhZfôÔß¹ïÊ"o"N¿/„8»o赎³7twä”üU|ÅÔ¾H>ÒåË›¥NA ”T’È)ÖïCAL8µïIyÜùK™J&uÞl#|˜=•è Êœ´ƒ7ãÁ×Þ™\øw”ðàIÝ<9-^³¶cö£Écˆe9fÎÄ*ø¶) ‡éwò£bä¯è· *že"»ãeºûéóRrÜÝ"\’\Nµ¦ÆV~3pss Ñ환 àYR½oTN›°fÌMwû¬Ýdew»à„àÖšÅZÆ‘žÒ{ñ5îñl6[ýä×ÅÝ•í6|8ð³õó©!ˆKÒ50&/G¨ ƒw2Ì'¿Óû€):}Ëøõ ‡€í$OµÃðI·ËÊoÔwÆæ¼´žíT¥„TŸŽ‚•—å‘¢{Ä"`ËÓì>²»“¶þϪ 42fÖàb~³Òyñ¦D©Éã·Ù`çà×ú˜AË*òW YÀ{ûAcÛ‡K¨tt?ÍçÂѯG7gÓ¬oÐ[3p)\ôòªìÔ*ýyxzÕn¿æj×<:×»çæ{)lo€$Áþ´Ô‹Í”Ê^ ®êÅ"ªöˆ!bõ^N†‹¥å4ÎÇH}¶ò”)ú-\x!(XyÉVÅCêÁØÏÖaêF¶HÛ׃ȹaó…oq#Øò%­úkj$ç³õ 0톖?(¦Çô;t­nmŸšÃ2b ŒYɈ»X†BOµ‘ß¹ åãS’¼øÑœpÛ.kž&0:ò­†zt—o¼„ní»Ìí¯“œðû“©aƒœÛ0/-põUÍ>ÍmGÒ¯¤¹=üýíÁ©îgbE‹8P.S±úÏòðí3ë:‡ÞcÌ mrVíiègñ2¿MëÁ+’þ!·W¬ÛÆÏ^ÍÍIµ¤d ?-À†ÖÖE×ÒÒ é 7Pfÿ­Ûð;xôÆT¸²˜[ÛHdv1ñ º~K¼)KàdN»ÁJ4Ušƒþr®¿àír"¾Iþdo–œú6¥¸Ÿ¬BdÙ¶‰©ËÏÎ{mÜVi¬9Ÿ=lEt'ŽŠ€g&:ÄÝM÷¡µMp[ŒOÕ¾×`6(ⳓq%o«H @Dsýp§¨¸÷ƒaÜnEº]º…ƒOcÌú¿.¢+ŠIjÈò"%ôþÐåÒŸ’hô’¿ðL ë¨Ù÷$s˜2)-ÊWGd1å£ûbVp‡åÛm‡zp6¹¼£þÐì95n-Zæ8ÚäÔ=‹éììY+E¿%§ÄW"Œƒ¾Åá–¹-§åÒÈÕ?eN½ÿ<Ð ³ˆ)މý?Z—3áÚ@Û#ó]ÛWJ r´hÐû‘>€ ÑTØ›C‡NØÈÛ91¥‰gˆRëá°½×¥Jδ³·¢7Ô¬U`¦•Mb=Ç;åÈಭeÿv_J%H»^3µ/ãçOŒÔd3€ûCÏs4¥¢ÂˉùÉH¾¬ØC¬Ši‹·Ï—;/él‹íïý}uð*ºÝªªuž·¢o»ß\„®H§)ÉèîãR™^¿1½´`„~ÚÏ Úô°6Ñ·Ü{[±°è’€)º4#¨va µÙ_K$M‰½Â·-> ËtСŸërToÞ»ëOˆ€Œ »¬Ê4:=ȉ1(ÎH~ì­÷y.äfpïáÊ`“>W:GÍlbV¹,ƒÔ ÄÚµü ­—ôcéM–Pïµõ'š÷W–±G“Îÿü*ík3Þ|¾'‡A=Ke‰Ô èFË8ƒI-ÏH“5:al:ÃWõ³10»®‰ûöí¨âåC2×â-PWü„hawïFçAg×/gç…jÎLHêØÏ«¡ß£ý ¼R枯}!¿þ¾ãéðG çc?Ï.R<ŒÿgÐ`r‹EQs63›°K:·w溺d<ïaå€eûíÊ—BxyóØVMôckê;"ÄqÓñ²-†CÛÅíѵ4w¹ù ‘4¤j>Hȫޔ©ñ2vÛ|Òöàq!įH;Šzè?û÷Ñœs*øÿ½ÝÚqŒù¥õ±M0´¡÷ûÿé#CõãŠÿÛbØœnü(·M—›VNbJóšØÔH$ :¹ŸV­Ëñƒ:=«¥*ý^·]éóÿÄåq›¿ˆÈÔƒ¬sÃRÜN-…ÎLT~háàxäÅ ×CójÏ6»ÝYŸw]×Ôp:„43ÞcuíøÚ:?+ƒÞõ~lg—í â°(q{ÿðó3áõ‹®e"L3X‡ %e~7xÈ20Ù¢RÁrÃ@€uÀVZD´8"ÃÁ†´ºT&·©÷hÉúF’ï^Xú¤º Ñ„Ÿ óÙ 4äEQ‘ìƒ#}q3á»ÁÜyŒ®qþ¬ àÓµ¬7¦Ì¾"`‘|«žáÎ_P7µF ù‘<Þã ㌌'n¯£ðn¹"¨!HaV ‚ ‡@‰²dpl0@£Þ¼1¢2©#¨B$+$ãa †àŒ†™©†ù㥌DC$ C°ÃÛÏ+x…¶åx U–É`[cuäçÞ"x…Ð!bŽa¸Ê p–‚(Ã Æøh ÔDa†ù° geÇŒ!ÄÝk ”„!PÃa…$d(0 "r#H„!œâHLC@e¾laá« ’éX††`A|€ 4c!PI 1#@, 0ª%ÑpaðÀ0A°(˜° ì­’RH„-‚¨²ªÞ°Œ00Á @€‚ˆ£Q+hDU¸Â…aBªŠ0";Xeaa A 6™QD D"„0‚¢—a@+aEJ˜aQA¨…D(BÃFA(BŠ Z¶Ý>hî€wèÚæ&³òVm,_BÓ೉x®…êÉ8G^åö‹sœvšï†ŽJ}öÇø‡È:Gê¼ò‰4€¿:ƒ'Êõ_£6éA}2”ð¾³”õ»Ä©üØMóªÁUXô¢œ{/r<ÌÛ‘èþfBl7³ÇP–®KõÉ·1”DþÿþÔsþ gÃ9ß'K’¬~0C,ƒý¬!ºa ë½q pu-ýΠJ”ãGÆ3yü©Hez£Žý>Šž–·v`O›Åþ›ˆê äÀ.¡YçP‰ŸN ï ua›€’íØé\ÍÍäN#î9B`]B™º‡Kˆñ[÷<–]á‹y²ü6þæUâY·ï%Úãþy¦~¾ïŠÌçP( -'{˜õSª{oÕEx>öJ[åx„«QÍ{:Jˆ±:-¢5~¥­Œ)i¶«uçõ2SYûï8,`qðó‚LÈ9&Ô~äÿÈE¢¯ë!D1Ä)o䢀ŸºP ÿ1AY&SYT\€‰Ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà¯\]ïo¾õó¶æû{}ç7{ž÷lâî½{M»uW±½½Ú}go‹ÞøïwÚ½§—=ëz¼Æ÷Ì»¯w{Î{eÞví9ÙÛ’Ûºõõ‘UMˆ=˜Òa©”ð§ä¦ÄmGªx)¦ÆˆÊz`3IèA£'©„jzi‘¡„É“Œ#i‰¦LŒšièhÒm'£CHÃSÒlŒF“&PЦ€I½Tü&&M¦ASôÄÀ)áO0LLÉ0IáG•?MSM4Àšb§äÓ#¦@ƒML F2Œ˜†”ü&##òb4Ôy(ESQ§ §éµ1ªlhDñSÚ6S&LÔÄ“ñ21SôÄÈi†š4É=h&jzŒšzA¦¦&ŒšSõ6”ö˜C fÒa4ÐÚ˜5SÚ››MLz)êlŒƒÕB*§¦@ÓBzšzžhÔà i dÑ’yš)àš›Sž)à˜ši”ÌšhÉ‘¦& µ)ìÊ›Ôô5OÁ(Þ Ÿ¦š4i…=OL©ø…3ddžMªŸªTÕ=‘„Óôhž4ÑÓ"`˜)äÔÍ4Ú†&)™&<“„ '“M2z˜™4Êzi§”ÊyO&šG†©êxFƒM4djyMõ5?P˜Ôò14M蘚'” ’R "l‘¦‡©¢boTfSÊIé4y#j24zOSLQˆÓdM4Ú›IèÐ ™M4Ñ£ÓÕ='©£OPõG¢zeiˆ‡¨Ñê¦=M 4 Ò SО ,åŠÏt½Ð9Í)eû³qáAÉ—ŠhXjhÜÓžiZv¡¸lE&êáv]ê›òý¼.¬¥ 7¥ÅÅ ¥ õó¿]`1€¦ €ÂARpa*~2sÕY0ŽéÜ;[[¤6Ÿä ;Fÿ( õý±üLNúµ¡¬ðz=žžº‹.ô®’ÛZ3G{Î(½²g…¿¼µá5`Ç?×isXoÇ“_0¥{±K¹u«RUFVQ Ù%·3|¥=“Êt”º[/›€ƒ ¿_R+9'9áÍp8 ;˜ppK×%ä²²Õ9ñ¸%)IM!x€ó•Þ-ŽU­'êv|—Ó¹øIujk…ÃvÄâèŠh @b®H¬[‰^IϧüIéB1·rÛý—DèŸþK7ݹiŽÔî÷XV‡w ­'žî”—=ãÑÔ§M”„[Ão×.\¦»]®ª¾¹ %Ù5©´‰åI"B"'{È'§Q„¤¤”uâÉ%…"3ŠI/‰%•$!e“6¥È¢â’Ë,±Õ§6d“6³z±~°aªèÌ)Dº½w*n û ë—¬kN˜Ì°Y`Ç/XÐòÍéØ73qRö"Ie"!!"kTˆº¢@xêšå"R‘2ÏìéÅe«åäD’Ê2kå’Hˆ‰œQ'{‰i3¿±‹£¢ÇÙ®ñs×Mè¹^ïOŸòúLL2T_±”\7Ë,ïéþòÖ’$ŸrõúvÚËÔ$$O*‰‚§™Qe)K,²Ë,²”²Ë)K,²Ì+«Ä¸/ GžoŒËÃÞ/Ãw¢iyì®Ëþß3xýoòëúNƒEÜc tZw±ÄÂÂá.¦.·¬Ùl¹ÿ)°]&v‹%­%<*’\Sº¤bn˜Ë‰J5!D¹R.©5zûC·©U«Qv‘½ÒuÕ"657zL­H˜™ûM­ ÒS¿c[‚Hðè“GÒX}m…‘úùL>ñ¹tu´\â,&¯o±5ô‡ÐÜõúþBõ=ß'g„â°xÝŸ“|ãyÀÛl½ÕsWÃ]vS$‰3šÞß/›ë°Z¿Äé}†w!Ëàá34| .û‰Ì`5˜¶8~ÈÀð2_ÜûünKyÒ%”Ý‹´ôp“Œ¤‰¶cvîôý?ƒîtؾ'OÒï/îÈXÞ¹œæÿù~¬šk­Þ+ë°j;Š y‡@.ò ®6À¾Þì5çäôF€t?å4zsm¾TT¡ï^¯E_#gÚø;wãà\ÝǘSrY)E–Nó³ÈÔ뇅ׄèlÄÄáK\¢5Á—e\Øà_»dè0”ué‡Dä‰7ñ ŽýØò5Yøxâ<>0p£ gùßέcÎ, ¼8ÅeçÒæã[\ÉB®ÛÐêØÏy²]–i­Ïû 4ÖM;rvÚrͼaI^zõ ÛäÊC½o¯;ð„³?‡¬ÕÈáÆI±£@Æ}O'™²„f¶P/Û9àÕC4ç-úÛ[Ïeßvòð4è§”}Kö«¯@À`2ÛøÈø”:ÔöÈ’Úu¾RUþÎÈÿ¨_›^òÈK¶7êqS'G„¼¼G^]šÒwÈYRâ ú™&ßĘG4ÛÈuwLðàœœXhÑ"QKGø‚Êkø€´íNÅñÏD`¾SW¸þ9PÄ Tj¬Âá°UɼžðRXQ­Ù„RÀ ÀmÇkòAa’êm²‘¼•)±Ìðyp| ´WÜ4±¥Xì„ÝvÓoeôNûcÖuG‚؇“þµ2vtJ© ©"©UU*žÊ¢ITKTJ ª†Z¤µIRZ¥ªPµ±é+÷t´ŸÉ˜!>ô4Ñü¿\8KÅÑênW*ϵèÎ…ñä7Ω>¿!}?ÄŽ=·m”]0o´ü: °Xd±ªŽg¹ ¥xÙätÖ*BS u‰nî“ßdô˜?óvík=ßpü¦èú>Iü陦Ï3…§¼MwkgÙ¦Òû‰æ{^¿÷o{ÞÐ~ø©—iŠs–t»\ÝÒtnÜõM\‡1(þŸï$‚YòJïüeCQ|aŒ¤ é£&¬b!û_ô˜Ú6Ðg«yÄ1îÍ—QÀ—lBÙa’+j:1d¸›ý»ÏÛ¾öŽD®xžÞÉ‹ØNx®›eï\¼Æ»!àbÇôPv†áfûs„D%«r—Ó9µ­U1}›‘¼,¼g¦•S³Ê÷õ, C’wƒ­9ç9×ÿÄÿh„qŒŒu~â2¼fWG]ƒ8…\¡ÖŽ ~׻ЕPÀU›ç°úß/qz4¢Î@€ C]tpÁkÇ$ £j9yÇáØ¢² £¡âïhŒ6&Œ¹FHYKË;lÈk±ZpŠÒÖÑ͈¿°pŒö½YÙF,gê¸#÷Û-"![ÀÐU¿+.NSǧþÝx5¢ù«wkAaè;y¯ÎÁ>h¿ºl` &˜¬¹¥ÿ:j Ñý XVM¯ƒp‰ÚrPnmc 'b‰€¡íed;.Þaªaw=Ìö5™V°ÖÚSìK„LÇ ù&^^Á d|Õ€wØîfö1†{Éõ0F²M÷m²‹T U¶Ö‰;6‚úŸ<×<ƒO|»:î"Õ¢‡yY(Ùy‰ÃP c°PŸU¥¾RO¢ŽqÏosf4X£$ŽØgŒXp1MhÈvƒiD–³T—GÚìMÉ[GŸš`kÎêxÃ÷*Xkÿ: d\[H˰Às€@)h5ŽI-Ï(dE.•±å3îªêóz;2Ê,·ynG¸ÂýuXÂé4£”¨È¶ÂyÕ¹— <ÜzÛÉy÷Á{ Ð"ÇÞø–‘¤±V¡‡óóž>r눥{OõqC% ¼÷ìý7û~Â(vǺº•ò?éß þs»ÿ33«>·'”6Ζ„~Ô»ì ‰³Êu&JPWÞµ]co×t¸8~©W1ba+;kÅP¹YèÄhÔ8ù½Ú¦v<±.<ú20½:Y@EŸ‡ìrR ü&ªøýðÕ¡VBÚ2˜hD†¾Ù­^¸2­Ì‚§§›Á?ZðÓdÛT’9g)x>ÎÝÞšì/ÄíkKB¸Iý’§(y_x²þr.œWõ»òLªBógiÓ[¡dÐrmÁVÝpâÈÄ5E—Þ´`Fì>rÿo’R /ï"4¢¿—q)ÛZ•Èn*eYcüFêÔ-íW¿–û<Ëõím`o0³šš¬ú#ä1©.§ìæ½*úF¨N©í`µªgˆ£«<ÍÙ(K¶¹.P8nÒ®…GàÏBÂåºþEP)4\+PwðºmˆiGÕg»…ÚæÍ(5÷æD‚_¸P …ĺâx"áH*^èMˆ(éz+úX.“üÊ@°±ëêøG—KŠ/÷_*'½x™ÅO¼üÝPfÆxmëÓ"gšýmΊéÇ{( OÉwµ³–­@y!¿b=A.šp}ì…¥ê©_‚ür×1Í]ÎóÞÏ«Òýª“ÆQd<ìv±cˆ^ð¡È•¬ †T‹tQ¤»{‘·µ¼Á·¶ìhùì/°åظç)5]?¹^ÇÅz¸åFI­$¬BP(¬°@/û¡«ÓkIâk»´Õ¼c¬gûz¤ŽãQy«Å'tÉ›æ¢èøÚôë$ã/5yÚé*Bã.£vÚž˜Zî"‘´&V–ìê Â|r¶n¹ÁÛtˆ_ðü˜r™«YÑA¢y„½$²'’µŒ›^F¯›–Ø™™ÙâÊ2;utNªÑòçÒo+ä'`— ™Lðò˜“ÝY<8Ó»øaüÆëu¢ô[êó²ú})ÕË:†‹o0Ãæ~‰>:1£r g:Í@mwë '> †ßJ÷±X"§=Ë5´ò/zZàí1cU Jýz©l]\÷ìõ»:ú<˜mµÕO‹1ı¤H%áQ®0Ÿ·ÍzO3hK³1«€9šÏyäÐk Ñ?F,Ãò=ZêÍiáP¥ yæjbnm~O}#Ì,$÷<|´Uô3Òézî6ì£)dñ¡W€T–ZâäM¸Œ®Ö Åëê©»þH-l‘NãvȨ‰Ç nlêNÍ”ö«M;!îÛHN.¬|Œê^œ½>b½J<·‰;ëÿ†V]¦¥†áhï"…¨wéЂ WîE7ñ]¹€i¸³ñž§ztôôjàèÉþYQ:IX5µsÆßJí‰g5'šŽZ»uo]Í,žãTjrl”áaö—/ˆ÷‹Ežñhï@:“ƽ;#ð¢w¶²•éeœ-EŸ“ã¶}6»º?!ˆÈ~«@ß)âûè;–Ø5àÌVó½ãòA“ùcäF7ùoŠ‹ðÔÓµŽ[Ùk?Ô§^×üí×…ü´ˆLàQÛ=L0aþ™Ì,í²+ËÞ‡ç\§,DÝZõ®ë¼ÊǨ1ú ?>s–Ìuc|¼ ­“©¤`\#9éè‡D¹Õ§= ª'È-.'²_¹ðçTªòvú±mˆ"€’ê;Âݦ€‰œi—ÍT>î´àrúMJ©êIìþý(iäüˆ€~pkÕr…ÿ·,’çôí¶¦1[rÐòç—.¯Ä™3n êØEp’¶Ð Ïh Nmˆè@û©V>šœYºUr*é‚s? Z£.h—ÇGÅH7Жã&z™Tó§Î][áèK'ñÖø3Ñmfwžá*&âW"Š$Þ•u­W1´#y  ±~SÜŸøÌÃà‡sv^Àd’9¿ŒMv-ñc8uSͯ¶é‰Aö–±é–!‡¬äµkš›Ý¹:­î3Ï&*˜cO¯¿éÍhîøÙ2u©#ƒÌ-k:F¢”‡Õ¡Eɽþñ2çÞ¬±¯FWÊe®Õˆt+rqÐÏYÁ÷Ñ'·£^ÎÀz7ÙùýªÓf  ûâ³q‚5ÎàÝôC öÖ9Œ<ôª6C4³¥üÿ¸S̵ ®uZ ÉAŽÁ“FÑbœçéÅï#®ËÒtÜÅöZ“É jñ'åTÖqùøÑ®XÿÏnR|£ðc–¡9 %ò1ÿìÿjëŒN÷27:ÚL¸ïÂüzb\8• ¼’ù¶z­ïJ5èü×¶~ºìè 6]*y0r±ãLëon|¼»»~}\ó /‡ß¶d$œÇ{ΫÕδXÇ’ÊXF,U<ó·¶mæ& $|-làh€#QÊ¿h3i˜» §"/R…¢‰\kk·–åžëÎŒï×3jBhûÐÞÆÝßIwŽ€¾šŒÊÊPâ߉°`À€±5›ú†*K©˜,ø®Õ²ÊÐPªU?‰íœ|@NÓÕ^,h©9ë7r½0.†óÚ‰s7C` ÔPf#èGàóò3*Êê¸9"Õ{°qD‘EÀr M0”, Úš~65Î0âÊÍâF´åðSžYùÁ,òFÆ‹±8 dó9F𑾥·õâþšÞ®Å‘éKe´LAñÂ+ØZ<â !,á}S÷0iÎ9ëð­S.—OM¿óq·3uØ)ðN¨î‚x:€ 9³@ôP¹•[k}'Xü”>»iH2%F§ƒ=ŽËá¾>/Ýj3<¾‡U²è2;ü{vû„XÝ[vIŸ³ÅüZ½Ë©r¾Ò3@W†Vc&aø§FË7À8óX°™Â¨6 *Ó3tK´<Òª›d¶ÔrPØRRk $hæ¬Åþ±¯×ìZã ü¼ÕìáBåܫѥó*©YJãÍ0 r³ ú:m|sîhI®¶\X•­ðáöI¢´Ê+•¦Õ$ôy4"a”kY…-·-Ö*ZíÑ߸2ïgHæ¶²Û dÉbRE_͇Ts®¬Ö ³ï{¿ËÈ:žà×&j‘~ù¢Q¦ž›ðè©›ÓÅ8Âv®¶KK¯áÞÇêŠöõÀ-„Q‘k7€SùJÆfýàžÁü—‹‰Z‹‚µ}CŠW?ÃüW.Nßc•½\ÂÊVìÁßôàµÃø!{”"Bº’ »•òÕF¶rOíM {spr©àª*ñ“ÂHE°B jÂ6S‰˜ÖE¹at)•m~ÀÄ!‡­G•X®yÑ¥ùy˜×OÍañÃ7_۳ٱѾ¿OŽQ”i7Šž°ƒˆ×P™”­·˜V k/éå:0#ŽJéCÚ6Lê”§úñã̰paÀ½­ÂãX‰Ò -aÏcŒ7(¯‘§tÝÛ;ŽÄÐŽk¡¤ âPscËaG€‰€!Žíd;IÛŸU¬ä.®„sw—(î{S>\ýZ×ÉŠÄHÀô'õ‚º®í5æåøp¥Îh™<"ž¦„UʧW¡±à—ÎD<Á:Úû)Ÿš{ ã˜éYK&ewø&`HFksôClµØ1æVB:hmi˃Ô}”iöõ„È!â¾ÜÝ®ìézdž‹?,‹•ìA¾4c˜ŽŠ©É‚tB¢?‡eùµƒëë1Ü)ûoÑ»yIȇJY™8Ž÷Pæ"ÄfŠêÊ-_ $˜ŒÛ‡4KÆM8nOš†’ [ ŽcFË ò„ÏuP ÷|ûûãÜÕ>…¨b¨â¦Ô&ÙPVÅ^¬öCŠPŽžEͰ i°­ÄC&^ë"XKºÒ!_·òth’RÁ!—°€Po ¼êµkŽ•wŒë¦•]4˜V¡L’Ä*EÒ~]ê»3ú`ßœ< ®ævnú';­¿9a~qó”>B²ayO|ûINA=×þãQ÷äcø—mÅÔzL4½-/²|ŠG¿äÊÖ%ýÇ„Vw ‰¾’ÎÌ[?ÛiÖ=L@'~†«Ry¤RoÅN#ñU`²Búôa>ç"^Þ£]PÕ¨d'¤ ð‚Ù~Roi“Ÿo{A]¼Ë*Œ€y@y~ Ër»ìì^þpÁ÷æq$\Ù£Üd$Ý!ÅÞ¶DZòȼ|-ÇèÑ]©ÈäÁ¿CÂG3„æË£_Cm†xƒ°Rss¾\`ËÒÒmb€ž;w‰áã®PpõÖÕ½Cç0í›÷‡w0ó·-qå3sÖÂ79h›ÄG‡¿ì~ž©=º¿ˆïAa´ÚLÂ6'•/ߟE캞ýŽ]ýt3dÄ|–Ÿ•v(d1ðÐ+7Ÿ>ÎFΔ㿬Çä Õô Å[T–i‹-Ê'c¤øwÚž‘R…mh’™üÄž3RöïwG=¡«UÈ)JʵéEDÕäßÃýsÌ·Í.™ÝÆÏA޼¹Lã$X|¨=¶ú›üF”éí,¥‰:¼§»fèx¬TKä9I+ÉÞåçåé/Ûž÷¿ÅÞ‡…¤¹Š‚üÌ\çsäxñþ°¾È›lÓè†ÑüàÿoåŸçÐÂÈ] [)—}ø\Šfñ½Nt*¥†Dî(Õÿª¦Bܯ#|=Õ’‡Á¥žTÓžÝskË{õ2|wJoúÌb„ùŒ›B/êýûO¼+IÜŸxäd1ýÌ*à F¨Eã]ÅõãÅ»Âç.¨tëœJÀ÷’«õL‡¯¤ña ]¤¯ã}°ž;ÅœÞîô¼-§é8ܳv`§[ÂpLÕFèßLxŠ®_aà\Qä ÜuܾÐß–uðK½Â7ö˜x6»>̺ó å…¦n<žÞ‡Q—ÜÝ&ÀL×`ÞþNÝrùS‰…V—EB%ʼnĕs;÷Õ¢XZ²ÊÍA¶6znTR¬bò&i›´"*,GùV»Ø[r&–ïÒéÎ9ƒ»#y°½Á¤ ϰÖw¶êšÁ®üáªR[Cû4}EуöÁúI¡3µÕ41a5s "Úü`>“•«Vªá¿ñÍ<³~–§¶8k>{qÕ(fºsa.þKÎÃv?Ķޅ9ÌÒ¡>‰¤}-Cî+âíü2z¾o¯œƒýͶ b%E]ų?¦ÎV¼:àcÌJ|2GŠÎ˜y¹ÚIøgŽuºF²[¹ñô‘ȱº…¬BÛ¸J.œ6‚Êô,þ3Rž»'®8#®Î£[HY/¬ŽLGˆHŽå*Ó9y­ð ›·tR@§xá2 K[Ú)B»˜’‰¶uôåâAöÚ± 6¬ 3œH«Ýµ)M¾¢ØK»ƒZ2øY¯vË"¿~Ÿ~ÜÞ:´nîŠñ’{ïÙéÆÅQ!Oªã_söðúŒs[ó¶ .RÂOÌo|@+ ù@*yp2oƼÌp«iïr¹­ÇÇrÐZ¹ôW޲|‘žÝ<µmPIwðC-EzºBxB¶ª`¢êÜæàçÉ^6)ÎÙSÅÒ»^†¹£!Ò“íxÅ®Ðâ–W5ïö(¿ùÙ4ébÜîÄü;»”Ÿ‹gÂѳ„lx=-‰éKìÏÐpÔÌj˜ ¹•Õ¢\÷ÄgäÜ:ns©¾D¥ ôÛT9:þˆLNfÔýu:f¬Ù‘'U¢œTþoŽÈ\Nf ]° 6ÑßÀñR²Ï‚>wWg;è´dp~|_ηp‚”Ø…/E„ À !ñ ÜÀ¦uåñ>‡ž9×iäqYPú”ãý˜ª ÀtÄzï©q‰‹Þ€£w¿ÏÆ##‡–¿o±æ»¥Ü׆ãLDm <.*Œˆ…»±Ù‰D…s˜:Š#ïµðA=Ø{p $û:´v ,LÚìU]#Â`8/µâA)gVa2Õ‰bZSfz¬îÆ…>¾Ã !Pã‹Ã&Úh8£7anŽYÇE[ÜΙ£mŸú~¯ZY1‘ÒºÌfg Q7¯h/¬'Á5ß±lâwT2³K›Q7,\]>×A‰è‰Œñ:Û©±ÏÏÚƒ¯øeÎ=)Rú á~ûoBN/õÕ~Û*ê©ýzIéÔɲˆ{jê³ÜïÖf¥÷:éµ(7ÁW¥K#œ_KxÜÖÓñ“¢ÚäàiÕÝ{|AÅâÎ)‰)ýèJ2õݽY¬œ£°Zû%&5÷E¦]C—ÂÍçy-z„~o×®ïò:ý¹dü´|ŠZq|Õ5î³ä)*7t+ɇÛûÑ÷ey½[¡?”¡ËÔ×Þ©æ7"–3`^-zåA—t hm‡¥ç°ÿín䬇JÂ×ðýTH¯½ºv:¼‡D+u˸ëBïbàb¡ú•BsM”zŠ£LèWñI™m‰ÕqÙu0a8ÁÆsªEV8Í냡tªûŒ¥T'âsÆCîÕ®*»¦-‹?«í‰œ¤*<óÅ-N2p¼Aܾ V+Ž1Ô¾¹ÒÐ-íhî»NÑJñË×cø©Ò·Í'Âá<àÆÚLŠ*5“ü÷˜í¤îkuz•¤¾+zO⦨{§,³qZ´{²ÈöWµ+ˆFÀ#˜ æƒê0ª€ÍåÆÏ=ç>f›Àûɸq£7yTá¹5Â|H$6AôËà_±íÿk¤.øéV"WÒÁ³üƒ×¡-PÊá¦Ü§`kD÷Ló?ß^^^Àš´N-©šàEæb¼8”ƒEYuZ™ób²®Ñ/Ò`xÌY­p«7ñ褕}«í×ìÖ÷dZ—K£d¥Ñ1õn6ÆùŒWªÍÞÆÝ3Çlõ;fÕ•¦à=@¿¬¿×&“‡£/pŇ]9©‘ÃThYà³ë?~Þ²˜©È+¶Cùü$I`iÏŒ•†$‹û›Ë{Ky^åU€(Þ*  6ŒÜ0ß¿XNºô¨_%ú#*HR×ß&íwÓº®`'N²g>:¬ ÃÙŽ,²¼ÍÛrü‹%Q0ˤžþÆ¥^yóùªà-¨±sR9­áûvÛœÇä­šlÆVi4CÛX~mœ…P¡ŸEšà²K²NñÙa$d¦wæ :ÙÕZÅL°èÊ—‘°´;Ô᯻š0ÿ] ’ä´B}ËžW5Eý]œœ)›VØã·T F÷‘›vÄî˜Ì"Q‘¹l&*r2j©Êv’à˜áÄY€ èùQµJÖ“X`¹ßµ”8J|0ƒu›SI´®S'U³gPÅ¢SaRtÌ Œì±e!ïG–àæÜÈ‚îw@ØË ƒ)Ð6,@ùÈ4u)z`¡#Ídè‹wÃØnpô˜zÇqKXóY^Þ'Ÿÿ9e#+X¡vðóP#¾!$Ôµ­g€i3¸Å5ÅâÈÿì3p÷Ù5ó=hŠZ+âFÿ U¼ÅZqö…ÓAdèÛ’Üf–̦—$‹ÀRN¤«Fw2i,,jëT¹ Ügmúã\ËC#ë6ÒÞĉBÐóœ¦Äœã±V Ÿ d×*CöÕœQNK¯¥´BÖèÕW!àI21é¶0­¹qÊŸâÃV¹×ÍÈýŸõ‡t¨Ÿ+=ÏžþÛpö[¼ßnþo§Òvòi…öW˜÷ÜS±ÊÁ'ê"Ôåú¼cÜ_òO™Ù~|îWÎæ±<Ð!"uZߟ“ö›¯˜Ïê â'hµ|]QJ†ÌÿfÜS{X6È4¿e@"lNIûMßxL é¬îšƯ.ê·ÀÀ¾ñ莂˘Ãì´îŨô>&f-,߯Øé‘ã>CÐ2_ÁU5W¯ÈŰæ.ÄkÑ"LÆÁº\qè¾M²³ïwšÿ™X[õª¸êŸq86«áÚþš™!+§£©Gd›LôÃüë+I4âîH§  ù%Àzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.795789263 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v5.dat.bz20000644016037001603700000012650613607166133034130 0ustar00hutter2hutter200000000000000BZh91AY&SYm”ïrÍÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà€þûÞï½ð÷zŠ› ” j[kUƒTY±•fb ´¥o·¦¶Ûm¬£6ÒjÆ26Éf¥UT›ôÕ½½ê³×;wzôó5M¶O[Þwv»Ü½Þç¹ìa냒ë»{¹Õ“ÖŽ³e¬‹kÞ·»{ Ù³7qËÛÍïmS§ÞÝÓöêóã·Ýrfîzßyz÷uL÷që%:óÕì=whλ֭ºßm5çwnû¹îíÛ}Ók*ùç×Ö±ww[Ýåï»®Þïyç_ZúzÛw¯yî{Ù£Û{µ­é÷Þû7ÛwÞo}ï¾^KµtYÕ÷.¯{s£u¾÷Åz>ùå»^îzòï[^îê©ÓÞËÚ=·¼.×gzÔyUziëRݽÞí³§vÏcN•íïwyWwtÓÑÊ–ÛAfWYFÏq몔•tòíiæjHº¦ç‡È©E/¾û¾Íî7ØePš ƒMšd &4`˜™3&€ÔzhÒzhÐhÑ<5 4L44Âb4 4M4@4ÀŒš`™ƒCLA¨$©@ ¡“M24ÓCCF‰ä †€hѦšhh”ôѦC&44@§è&J~˜`b` ¦` ˆ0• & zÄÕOÉ€MMé4™¦™ŒÉ {&§¦eOÑ¢dÅ=FLÊ<§ê4’mÕh…h—ÜiÓúÕ-Éø-ÒÝ®QË<]Qž…é^¥ì!·Œ aäA#2p¦|ã‹£NS.Aœ3¥a<8b€åÈX°D!!„ òtM‰D¦V…2¬¬*Ê©äH+ R¾bû!Bï®ÀÃÄx‘ö\þ²Öµíިά=»-“Œåä`s½E.v³à“ïD׺Ô)ðv© }ëÎ,u5»_ÚÛ¯B†w?hýàÅt­/s|·N}¯çàÏG·c÷?ÜT…ò{Ѷøz&^óÙ›·«–ö5r;1msM’¿E†uþ÷“ƒ¼ßh®y:dÌ?ë©#•íøoïMÔùßAQþÓ#OýðúH/ü®;ë%â5§ã-ÎÐv%ÐMû&j ¸Û '$•³ø‰áþ©+Üo·ij œÇ¾ê7U˜×É,­žÕ¤ÂM×xöï?ñ¢ê¾w¢§¾ö6„a³`d†(ƒ´yƒ­!×8¾³Ü¹(˜Æ ¤BoZ “ޤ¿¹VyŸ¨·8C´a⇩à= ÃLÀªnðnQæ^œ€zÔ":„0BíÚCðX¨9ˆ&º{w#pQbBè{j³1)¡22,`õÆÐ° „‘ØÀQ‘VCÐ0[‹’(Q¢ˆY´Di÷:§w´ž;»òÝð™-—äÉrÙ¿X©°"®„V@dU@ô¤²…Rââá±l[ëpß©,@ ¨bPQí`€(€ðP@Hh´@ÞáÄÔ6 ŸâSÁá5¤æÕ‚™¤VðLPs&Ì€+Ø@o$"·“•$üNY½–^ÙàCD‘^@˜fEÉžkÚQß ò£½5DE²ä‘ÑAhØÉök ñH‘¸,‰ ˆO-WÒ/®ö™êሠÛbÍÈ!ŸW ëÊ…À…@ʃ¹€¥ð“gÂ`ù“¦ Sú:Ò!‰⠜>Q¥,EÜ¥€ÂÀ˜?Tza’¤Å²f]¤"J€N¸0¡ÝýªYà+Œm܃dº°b4‚œƒ 1,«ƒÝ„;èû†Š š8ûN{HbŠz@.½CÇ0l ÝÇŽŸ4@BD^ÄtD¡úGŠ,J(°$`p!°ð°…h!M @8™!fV‘|y&Ý9±ü#ÿ!ê± ÀÁ5Z8ñœðÙâ`CbAb9Áá"k  ¾Ø78!n4Å•Ã7v•·` ¡žÓ=‘¯ Þ=` Šô`foêºÀ ÙkÆåy&r°nZ®xlëÚ¡éƒR8’ˆC³aÀ.¼B,SíÐù&±Ú@.F,˜-˜BÌj‡:6a½t û‚j*®·Újܯ ‡LÈi¦õ£´0¡”µO ¬ºpcd8 Ë6‰8FìÒlÌÊ¡äÀöÍÐõÀJ5£šhšÁÍŽ!˜(dIul ظGzBØ `2nÈ™Æp`äÕÌ$š†uõc°|a€hß8oÈs8*ÜS!M­y WÚd»E æ™œNü×…n‰´oCð)`ýãàY1 Û0µ9=,)îݶvGHzì\C# è·nóeæ.›x çúÌC>;ô:=ƒÀŒ= žÓ·r¯.®B<«ƒTü”CYùÔ¸@×ñv“~k´ŒxlÀg)¥w¬u‡dížUܾáÞ Û„õïÊñ®þî”Þ&¸ùÃrâˆ4دha 5!䯱´a¶lcj´O(¿Íó ;"\‡6 éðBv¬9¡¡ kØYïÏ!dzR7$äÊçy·a¦¢Z?T ó(Õ?¬Õ·õ9[É=άtÒ(«="ƒt@Î'¼Ã‘µ{Ñï3E·{k¸k Ã*ß CI¦Ð)zæ=ç„ j“Èœ³dù¥F¨ÌH†j“<8AÃ197%¤†üõÊ€äC,@4C¬ybKÃÔ¾£(¶­ÜØL˜‡feœ°äÌ-±¨Èư×ùìŸ ­åœaåÃÑs›»×tb™á b s‡Üw{ÃVu…Áx}Ö0­Yzà3äM)I榹îܬãôˆMaê3‹ …ˆ{VÔMàÁ#Б\þ:Û|k5þÓ Xâ»tù°¿­!ó8i£hÒuÃ)Öy7Þ@Þ ÝZ,PÐîŒé‚…OÂ4 ^‚ÝJ[CÚ²<Ã((Š‚^l[3{®EضNyÙ—¤Re^]ñÐOh­`AóÇ×JJÌN|ù†äÒ/ q€h㊢sª¯\¹BŠ ( ¢Š½IÕF×*‹Õ5Tø(Êi»Lc~'y€#‰N,c[©ríË1„`Æ 7hl#—¶à\¸Ð0n4¥‹ £¬é{­BáðXcôœðP,ŒXZ)¦Åîòíí¦ aë‹ øÙ+=é‹ÛôœgˆÛ¯lJƒHa…âOi¬voÄÈòïXÛ7¯:ÞÝÍš'$ÿ»tÆíž0¥„¥é”5 Ábÿ¦þíÌÛ4†ˆó£]žÏÃÜ=“µgŽaƽs«>—îÏí¼«ƒù ‰aÐýJØ›ʈ|#$ˆ1^€Øl‹ÛŒ؈Èò ø=£h߆}ò‚rƒ™mø}†M6 0ÊæTkXaîÀ—ƒèsc–Ñ0ªP\çPî!(âSÒ¶iúÔxÀ*ÝÁ¢šp!ÐZ5á ãÉ&X¤7q÷8˜b½YÇK”3Ì2¯ñPÂŒ ©µ‚gé7‘WÝùkžX2ƒAúǼ±Ã9œÂAž:( NÓôb™Áü iý³0¾`@aRxÈežsWºÛAZ[{p,¦  s®9˜¢Á‰;At†Ý×w®ùÄœëÈ“žuÐò æ‡#ñøaRÂLsV¾àa^ÔO ÃdÒ(Û˜$3ô Ê$ÁßUƈŒ™GÐH¬VY¼4Ýã)F›]€­ ¯)2>Ájëõ›øÖbËÃíO‚ôÝ2B˜¯ ÀJ;ÎĬ ‰Âd TŒÀ%:c(ñ@Ì{d' Q®92`+ÆÁÒ¿” ~´9p"È@‚‘$VÅì`8è]@ƒëÊ@$8ÂDàF1»×õíyˆ}ÀÐë<³ c¯Ž2$ÁëGÔfŸešä´Y9Aë¤~Hôc$ýrCFÂü#r£& BA ý¾ªû7íæ,|¸œ˜¢ÍèËî+bŸAÕ3ºâ=Óöô'“b#Ï‘yæ €*Á|\52òÃýfž0!pumˆÌ 7¾v/$Ô¸¶A >t ʼnìµÄ¥ópú,iðàt>Þ——–¶ ÈÇ$0Súïò´Ö¸²´t?1y%¡µ*iMtoMh¶µ³»3Nƒ“@pGˆòz­P€(ÝÌy` rì‚yñSÑ+Âxå™(Ò`=ö¨ÏiŒd 8d;1ø˜9£HnÍÒ¬“,°HÙ„«:™ŠÓut%âŰÝ@Å€ç: !‹BÌÌ0šýˆR$MøêŒBíByá.=•/ú"eØdU:0våØ)·ðWÄ'¨Ê Æ£ãÙŒ¤Áâ–ƒ©fr“­e,Ða_À@[ ƒ »K´=, „ Ü|K¼ny ®&½‡öì|ç‹x«ØŽ”l8‚>ÎÍ„³çÞ5¥bS^Áì| 1 Ä z!ˆº£z¨í" Àaž-Ö;MÃ=“†-¢{lÉÓ|Æþp; 0XâÎõvã&P èÒÝBÈÀâßÇ¡x0~³®4=d¢Ã?ZÇzÿ±HlÃÿ·™ó|¡E6NähæáªçP]D 8* ˜”A½.„É—ÉH`Š'˜üdžyCzg¶#M¸-“vx§ÜlŠ‚T0×òÂo˜¼™À@ò-F7Qð]û€â)ûƒ!åǽ2#‡Ý âиxF¨>Ӝ܆ö4¡^Î>)^L¨.P@é*«J¡ZvÊ!p;"EoÁÁC¼W‰«ýµ·©Ï„`pL"4†@'c`¨Ñ!¢Ó3„, Û…"BÞñ·2À/x‰»=r ãåBèáÎ*p‰9ñ“ÿ1ä ´¢ n-ïÆaóÜŠ°È™‹VÁÝ'=¢3Çå z­™$/î€kÄOjQÿp¨È?Ç0£ð†•Â?Rˆþd |àv`fÏòX§«![‘žp"ÊãC δ5^ûzq¢?’ RÇ5ÿ;uýú‡VÛÉÓp#,î nÅeòŸ9àßÜâNÜ`ùm†}ôVdfœa­B`§žÔ9AݾØu„Ø+ KM±Iã¸HHCl!hï þùŠÕVÍ_¸r eËæQ²%ÐYÁªôz¡ÑsO¬'Œ cXéí [ï)ÿL”á>ƒS¶˜y`¢2›§Ð”eWÉ4Ñá³Û˜<û¦ïÌ4Ýê±#¶ƒOäKùÝ#=¢„`Íâ¹ÆÝþ…¸çÙ͹¢¨…ëÿÎkçkØ׈cí H8¸¨6,·¡÷žsruCè&çƒ4!hïÈ ¢ 7÷TêŸÞ烆aó)T ïl rº×tÌø®Á“̾c'VqÀÙ Ê-B©»5Z®i­l†¹Ä:è麢T®(áh£Á¹ÑæØIÁAáó~ó28ž^žX`ƒs¸BÌÅÆ`æÆ_rL!ºöY0ß^±çÚhU¬/´ÁœûÑïUØÂbÄ¡ôà± ö;q£IÕ?~Ç¢kÚæ™ˆy‡äÒã:Ðf°÷ø±ÒºGäkœˆïçÜÑV¡j(;‡b \¿<÷» ´ŠæCÏd˜¯BÕ·~ÈäZqÔ±±‚«³«‰RhHDÞØBäUR Fät¡C€i(†`á»:¦A¯Mh3™Ï Ɇ1à\ÓZ=ÀÝ“Òò†I„ûïÛ•µf:ÿ­oƒ ©ÈV7‚ŽFdÜù"ÕhpK~tê±¢Ë èÞá P„­Ó»š÷…~ùd4áY?ÔxÇ+<²! ÖxÉÖþžäÃ=œóò4¿!Ü8·óóLóÁ°/L6  ¿ˆ’nD#FÌ\Ð÷R€ùEÙM±ä‘X4î'”!ySÉ­¨æØ MS“(?L†zñ •@ß^•ƒHÎN$Â"pÆfôºnF*³ç®U™µ@ë²ÿíúág¶ (CÖfÒ`@2_;•ı‡liý›†gNÈu  Ò‰åÆ*ø°ýVó"´‘HVƒ«|ø Ð…7ü°)ˆ£Dzñ–jО|Ž8a‹ñB Û{ `¢‡ì™b0¢ûòþ‡äÛ1àí¯„ýt :|ÂÉ} ÈžyDEV¾ßn€÷L0ÃúïÊ—Ø& ˜wýÏã·øÍQ^9Â``_­Läù¤"%÷1Û•4f×Â`¾*å™û¡îÅ\’d$ P0w@ÐÓÕØK€x%pš/––ƒ êv—_ð‚µ²«.~Uðx\s{/]•œ!Š#áxQ½mòPq\2AmPà 5g7€'¸muî`(+ß㸷¾÷úKð賂íØWäÿµGtz;äñî-Ÿ¡júÔày;9{ßš…8 ýÓê-‡-ZÜè3¨:åÌâ8.sü¶¸Ð•^EæÀHmS6:ä,FÁ¢ãМ!8R6v¥Çj7 ¿•G=ˆ¸°|jÀ0eé)dÐ(HC”I’ÌÔ…Y.SšAÑæ˜„nŽá$wŠ©Þ3äòð§Ág–}%rL1°3…H®òpÝGhÏ”GxÔ’…ØŽ<˜¹žNe 2@ЖƒVrN!:ª £Vy]Wâ²¦ŽŽÑîßýïBÿ7“|7bóïÀ!Šsjy'ý°Áä²!Ázcëû±x R÷ùá(vGß– óþ¨PygÐ+ý"iŠâsj'Ó£Åaö_…8C„]8.ÇrT¿eí†`J!ßXo LËbÓ$ä™V¶{94SÞðtOvöŽM¹sLá¿4‹û\pL ÉÔÿ ¬ã¿ÄúM ¶aÞ‘ `„·¸po"Ø”ZÕ!³ hú h‡ïf|÷PÄ{øÝí"•»`{÷ŠhèœÓºÎAÀ`\Cú:CŒp0pùmu¦/0Cž`7~YCê ü&fj1ŒÖa™ïÛ©g¡bìµ›½ó¬ÑN•,…"ë„Í y«‘ªdˆ† ‘ƒÀ=ð@ÍËoŸçÇ|¯ úQ8iz-Ä$£ýþGe¥Ñ=àü=Α£€íÚ)ŠqÔÿË`<+4õ|oÿY_H sáê!ê3IU+ÏO®ìví¦=`P$ã'1è’??ú( Ž,–×W­…P^ŽçÆZ&t@ªP À+gm¡ 7—;Øðßmø_]ó;œVu¹.ö¿¤­9èdlß •^¤aÞãíÞXiù<¯RQ~oVC[ŸÉ}«Ø5j- }tÛò´µž 9Ê'–ö øF¬ù߉Ţ^˜«O7äF R»4 ó¹]rŽ©¨?8¤Á@@“ VgÐgµv9b°Äâp"a£ú€k‡¯ €&-†áÖ½DßÀÑ Â"DV±äs§Õ2×Ûãây²­“Óo¥Å°Û ÿ¼N””a wRÚ‰·v¿ëóÌ(àt-†"dQK?åFŠJΧ«y ÂÖß14âô+¤aXçS§cÕêÏcéýBUdÀ¡VÊfLÒ³‡P97$ÈxãMëÑ*‘f!)®"ó9g½(¸ð ðA7¸t’KΞ…üf5Þ·ÒסMû¢­§ ï&ò¨Ð‰¤sD™Î‹Dþ+—²ú{ü3ë Ek×êí\¾µ}µÌ¯ï©×ý„8­F?¾ÊŸAî­…öªþœ  €Ÿ¸öƈþ⇪?| `Á"%“⛡‚€Ï²ŒãNT;s:G rŠ ñûBb¨pÄ×¢žr°„È: ®Lfc ´‡7%YïBt,ö«£™“•a aë\š:ËvÏ`ýqü-:ÈáØg½&Øwanï†`Ëã¬7/pŸ ­p僸vÈ•°û¼%ã“›ÙòY11‹v ™Æ(…Ü !MÃ)…,ââ:ìˆ=a `fl^ðr4ZIÊ'pàîÜ¡ýF¼O B«^ú˜(g›a€À sdÌV8à» ÷ 2 6-ìÎ+à±|Gó9·èxV¸q»†Ô׋cp áh²†XTäSª¾U‚úbd‘ŠT ƒEÀÒžy¶èÉîS;üÛøàöVOÓtº9îJážàZmK À ñ§¯~G±{÷±pÈþtãžõ¬Nìl@lý, öÌD¦+ÉŸÈ].®®éìÅ5qØ:€bÏÙT lV`ÀØ5ÁË hOì ߨðôMQH!4B$µ© ›gè»õôj°ý°‹÷N>§QkºÓÊÿBv¦!‡TèiB<-?Ë•ûn2k;¸Ëv¼Í$ i]H <$5KI‡-ŽM+Ø£dÉmêªí’®=>3¥_=A}eìLÅqTÕ¾x¶¸rÁ­%DrŠña83$Rµh(ç„0ì!DÈ×ÿ‰G¼Û}VìpþÍ04ßy÷º‰€ð´\¨B¬¶É±Ðä3ˆCœš¼Å“yýRi¤HÄÚéûј¦§6s鯶ï´ãøCCkTø‡É÷­0å$7À @¦s ò¯ '0 ê&ö߬d,κaÎ3™ìŒ{EóÎxûwã0Ï›­¦œFuâù×WP éˆï ¡JÓÄ({ˆ4 néú •Ù„sáAA¬>-Ôn4‡N4†„4&G<.XôŒ…Êh³Ž-¡³g<¹vî,K61nÓ…Üú@aaÑdý,3Œb®âdð„’@¬œ”½QÖ?qê[Y XÑàÃÈÂiÝsñ&øë†‚™ìô€™ån\ë\õÌá²lƒ7dÇêŽdاšÁ¦9”=ùÅŠ–:V"tll x|P­ùZN…ÀâànÕâñóY+P@˜`C6)ÄúÏx¼Àà÷ïš«µ³á<3'fî4ÍÁhÞNy¹ Åe|5t6á<~Ûò#Þ¡’/£ª¡µ?&5•¿7¡?i…}$MÛˆq fŠAVékG$÷TRRD0»Õel÷L~œ)ƒø—Bõ°å”(Ïr½‰®?<™º€Vl ŠÇÒþmd‹Rø·']X5ZaÖ( ]Cš6åšóTj ‘áž)wWT|Ãä'ÏãÇ ®0¯@ô’–°zêÈWÞÁíôNêò!@C:ã˜dêpW;f£ÓÝþÉÀx6æñ Pw•pþœÁÎ0œOk©ù¹‹×ï3!ÓÄ ¿?À?´¡ðŒ ¶20Ã=X³sû¤ Èﯚ¦ 4”ÈáðËÑ;Ù9ªäåŹ/íHè {ã|dͨ\Ÿä‘˶<¡ŒbÛ±NôòÞÕù@ÉJ)‰8 ÿ’¼' ~¦\‹!JLY=`×|½¯pꢓ üÅaš£%‘j‰å‘»¿—€-€©ûì0•¹D莬àéÕÀ¾KÎ 7©òN@ÀŸOo×j·Ztsà ݕ3~ê^® Ò¶íVHe€ÌÀ¹½Ö…¸ü<[Y×ýt{ÊqÓçürei§ éÿ›-½ŽŸo~¹:7ºÐäbüFņWÔ9£Úž8²ÉJ“ÊS4²G°4Aj ‹Qšo¨(PÓ›u¿²*B° +éÌ2H‚ ¿QLá¶Û½8ª|2u2½,Ý~ñ¹wOa¯ÄÍ«#¦]ÜlVpщçÍ –!€Y§‹+ƤÙ@æ¦ý‡:÷gNžU¶;„·zÇì˪?i‘3ÔgÕwlƒ„kØ`nA²0n\é*zVèj<¦Jc1ôšrˆ*ê¡Ç“Áÿ|i ”.ÃÕ™5ņAž M~‘\ÐwA ‘bV:&€Q(`{s˜6Lvá˜ä‡Ãv {·ér¹†(r#â«8a !¾;§bÎzàóƱêëJ¡ÑŽL‘?© W׈¹Ò쬅Åé;…nÜ{—`„„Î à­ÌÜ«^eÂþH0ƒ\«)ÅÀXÌ8ÔíQ7XÙÍs•ªµ<Á´àžc}}º)š$(sŽª¼»§õù}ê\N ªÒD™Z·yá%½l/µÔå—ÁLh‡ÚHäéëK’ë}Š…]à\˜sßé¦kGÒ._k²Ô=ö+Ýÿ* E’C× à6ä4 9ÇPwg‘< (õjœc Joââ@õMN ª?ã2SóÃs(©ÆR!¹?îr´…X=0;!€pÆ$„4á"ýX ½ì|A†WÀ虆@ûþ¨LÌû¼÷ UºÈp¤ÁŸéF¬±¢;ÇWa\ÏÒ›aNòœŸÜÁcÝT»¢HsÙ 7QèƒðF´Þ5rk¬8ˆ¸qn8_GO °SÛ:÷ªò¨ ͣʞ@ãKNÀëAÛ¦‡ÜžKåÀ쮿z:â½kú¼\í{7Ó•×ýdgÙ=¦I…D·ÂaWçè¯LøŸãåd•PÇs3)Ÿ@ÈFiƒÖ®¾k7úzî‚l’H} üRy„Jgp|OZaëˆiPä¹ßœéê”g´EŽÈìŽ8'¶Š¤UÉì±—[eà¤8Ê僀ó‚ð(Yׇ%7"™D|Z5UhÄ*Áõ—"ª=•/òÙ+W}€ýLôÇíÄвE¶)ÌP8’ € !ÐÛÙ|PàŽÄ`En4† •Ê6hr¶ÈXs “üFš ,S‹ˆÐápÛ€ñÿ\N<`šfQþR‰Ã) ˆë†W2Þ†€û¢jñ—æW9²¨`ì+—Ê4D´j=rˆîËÖT5=\óAâ“8g/Á‚¶Oƒ”Š60’¼o} 0^LQ·ì¿äÄvy‚ãÛ³ìâ‘£ÁYër6ÇÈ€XuF”ù·°PààôÃî]€dU±UômBAPà#L[Òi£0BhïvìâzU6 ëÆ‹úXPãç™yœ™· i[ZqíylÈH ç’nºc~ûc™fÀëwµùpª¨±q„õf+ÚîÖ±±|"–í1PÒHÔý8QÖ0? ^Oô¤[ˆW0 u€Î(ðS¾÷¦©ìÒÂ2uÎ4\9#ì;ª|‰6˜.W‹¢¡»8h³µì¬|mÐ>TÌ>{*½S•Ø póY[ä>EôÈà<þqûµ9enfšå9 à©«eK8*ÒÛ•²|Ñ…àž¨9ÿ½øµ…`6~ò’mæèK)€Êx¯S½â b*'Bs—àYóÁËŸ_„ûqN¯>€úÝVi·g`»4þ{¡ÂOøû¸WóÙÀÉèç«ö‰œøz³–Ùo”Ö5M»Àä !Å-!ûº‹¬4åÌ…Â š Ÿ)¹\ÿ•¥×$^8B±•x³ñTHN»› I7™Œh €˜ ð>!%ÂãOs®œÒ1}vd¤w¿Õ ŽÃQÍ=(‚ÍÅe›oÆ+R9K˜”‡ÛnÎÒ¦õÈb›}½h‚§ic]›´òŠ}®n”y6;/B<Á‚XÖ A3*VAL‡†¯‚ò†t@^W„È@jL¦ mƒbÉîÃ÷ÿb¤CõWÈÚ=‘׳e¤õš‰Ž¼>¥ØpÃ(  ÎçÄn»‰ ’ƉÇË¡­I5 °Ä*­Ç€þMJk3Ë„Ruþ#Œ»Ó‹d© ЇÏÖ£ WªºŸf×G€YÖƒ©Y$!±‹LЃP,Å“@¯Sw@,DŒÒf P‡ônoMˆk*¸_GšÛÜ­™æW‘ÅÔøO¿b·(dìêšãåÙÌ>Aöå‡ËZ……˜¨ôÍ'ӱД\‘Ƶ ÀÌ>×åÞèýÝûI¢ŸŸ²v?›õÉÈÈO› ÎÆ›ù…`Oø==nõ4µe"´$\Ê¿' ƒÒ9Ð.:vÎCÐ1€Ê­&¨ì[D©y÷4 [.ɲâŸXˆkûL;Ãïl<úÁ SÖöaäVÂã{QcxM<ÐßtÍ™õ»¯×GmâQùµÛ,õ±­.Ù Ëæ~‚¼[q˜~‚LÐHt)ÅasmÎ: Ó 3˜@6An?èU4Ø=¸P›®ƒïÞHઠí·7åa…mÇ€ %Y‡£Ó^/rÂ÷L®×mP@þÈ==õ¨µ—“³?,“È;úA–ø&7‹Eás‚™¯æyÃ(P0µeóçžÖLO¥«1TÁ\êü»åaoŽw|ñ1î«+Š‹gmͬY0³Ð;u—P°—|UïËòd„OͲh³JØJYbóEà éÛ¶¢-8)Ãa²ê°þVÁÍHs4wc õ˜$b¼!2%™3ˆ"aÉ2±«-Î#ùŽÖùÜÚ*0 É©®Õ$rH ¨ëDD°²Tc¥íçÇžävë¢Ít¿ ¬L‚ÆÌû$é]à Ú=kEAâ~ÆÕ”ç:a؉÷ò÷-X¤Ãî¬* 2^­a\•Úª ª„ÅÐR"ê­V¨—MJô,u¼¤6OÃ~Ñ¥Å/Názö¸¾pê>x4„“ÂõOøJÎwCgt-è{°—KtªÆ¼¥hˆó£‘2¹ÈÏÀÑÅŽìdvlŽ· Ú!´`aârÛõr·gòj ZëçˆÀIȾŽQô;-6Çá6'®’¶¥Ùªv*á’ùÉRÈEY·8’“*Øš¦Á0sUqçÕÙP=škXÖˆJrm~Íшßó²Ò;n¨Ô{ŠînM]-Æ'Ê׿Ù6†ñ ˆÂ=@Ð,¢Ë@ÕŽrc÷;|´ú_¾“,ŸüÀÃ7ËÞ˜Žz÷{Ð=:|i–2†ÌÜVr¶MÃp"Ђ„lƒzaelÙ£{tÆ*Ï8aº2sÈvD×Ážõðýß“‘¢Æ¾{¼™Ù;RA VÙµBBC1! ˜fxÏVÓÊv¥ªú¿F†÷ùwúÿøZTuÓ’¯|ƒ±">O¡hך â l‰,â+.Bš1%pý![+n7†Cƒ>T™‘èÞŸ0?gYår•IUæ¿!Qu•dlÁÁ‡¡cðù¯¹Üë)6Þìs¢¡ÇC(&?öApm–˜6æ}t­åEÙÙ@±Í«'!\ÖÝ3ô›û~nãýNÇ/ª+PňëÆ@x sü÷ì®,†ƒQÞÑ™¾°¬Ÿ”l|™4L·~ð2[àý÷硦·ö™Ç6õa8aËà4àå–ÐÌ 4ÎT:1:#¼Ô³,‘ÕºÆo ¨z‡ ýs[ !J¼ÙIy ÅÄÞ濇ˆÜs8«vAæñ5ãÜ,ç~ǤnËùüÇwoãÅoo¥å›~¿j|RÞÁwÃ*ßÜë2îÖÄïˆZ 6¯ê×MUùlÆRá8M³$Å?õ`L ÌœôV£ÇÍùÕiqY®ïOl /a8Ë`ëܳXOöíLÔ’J£E’æÂ$¡Æ5o6˜‚Xcê¯ûç3vodþ×ÿg¶=·ævîå³}ç´rîÚ9ƃ;³tLÕe0±‹ž¯J`ˆ"ž*CyÎL‰©Ýà_9Um¶)ù©üÖî7Ö©&Aš°}<â_8²³—ÛqRt6R èá_)dÈ›ïÍ©¡:˜M“•ÉZOëXnò]:©Ö®l勵IÑØÇŸ·yÃ>ž®ÆýÑí;ÀžtãÄ’Œj{q‘¹9¥ìÖ¸l€˜t—Á Á1¨š§ R!‹ÞÀpÈÐj2œ°lWäÞ7@j×€]ÙÙ˜@WÎè#¸$¯ ‚’â’ÓG{Ô¹ÃzvfM®„²*Z?;fÔ@O¯÷ÙºÜôxÏÛÓQ=/õÚ †L´cdè¬Ä aÜxèfâñüc"y¯(‰‚(÷ßáo½ ÂúåwfÑÿr@‘ýøÅ”wù E ÜAdFÆxižYK]@žã¯·§ZO î.ÿ3‚|¬2·‰Ÿ¿„i©þöÆ®`U¨ï-Ì‘z£t'i’¡^Ѐ§z Ô+§Y&È&Žªò<}»'œíøßä…ƒ}-w«þë8+òV­úyØL5]e>Gµ,dÖ(PK^¶ï.õ-ENuöØd—/1­‰ÂAÀ¥œÊ˜Â¾š `3ˆèx¨nY¯Ó¾Êm Ãxò*S웂ɺaó}Œ_ùÁº—¦ ¹°+Нi´3"Ž“ªûö§š=«Ö ÅœnÝjáǪ»Æâ[B@!g…2è#“ëˆÁ†#G6\´Gf«üL6|nçëÉ“ŒCÌ·‡Bà "x$÷LéK¹@@õ›õV±Ð3‘ Éñu8znt@“!Ê•ø@m@ØÐüL¯ÜÜ@uð@ø|×ùv!q̉Þ>÷ç«ÿGmçJ_1 [¥ä/†×5D@ÔØ‰]õõ¿<úóä¤úÞ4÷¶VÂþ»²4¾†8ÃG¶W”lÜbàõ²Z²½6¹êê»=#ýÁiÛ…‚µ_/ ýTYïÔfÏqüúrƒ‡/X׎’OšCÆÿ3Ýà±=Ã÷dýØ?ß_Ýk:eÓžÞ­ºÝc´‡õá1cc«™²!û8 íœÃr}ÍNsBd–ŸôÕª'ƒ¤à ×àn ¬ó÷ÁÙ{I*<õ±;“r²y•’òúq–™\l^¼æG•$0… öª,Ýey/¸ŽÚýtÁ|übàD-¤`ºÆ`É H" ‘6¥Ø©&¢Î¥Sø»Æ y 8Æûù ŸmÇwÈu Q}»wŽ•ék­NÞgÄ'óÛ|Õ:ˆ Ü'ÂGõ-.¾FFÛ³kA‘d£î2 š²+éRI3Rò´{“£æ’Jú?`Ô°†à„k _tÕ—‡rIìè‚&áNûµFfChÄ@`J'Ùä¶6*cÔsç2áÛ­ìV³³›¿®R èÁnCÝ/|¢6{û¸ò´ßÇû+‹dc‰Ž\õͱޜAª//&Fh—Ý‘Ë=ŸŽŸãéóVÃòœŸ¥Á§Öd ÜÇÉ$Î&Ä6Ûº›&g q'T—nûm­Ó' éqn«¥Æ/@Í~0çL˜-CSÂCƒ£=ãè<l~·Z誾y™ƒŸÀ òcqdB ðÂy»ÆSäÕˆ[Š_…³V\* ´Ìp˜ Á2üý#ß!ÄÀÈ¥c†—Ze¢ŠID£<á2«[=šKC2+9y ÜTîð~ðóëïÉ—|½Ç=JTúSjæš#VÙGç|‘«ÿgP8š—O{6X=sC~ Ùà ôý aÙ$ç÷™b ëIßU“ûG© ù 8Iô:ƒ’ óÑ8cªSÀ=6Íp`Wù=”ÁÌ«£ `|›"^P¬@`ź…—)›ò,–ÝHµPˆñûÓ ÈèëÿlÇý0@ð %w×ÒwKpaèW1õìs’Âv ÏÇg÷¾ìÜ#ÉÀÿìýà8,ûK‹â!PT•$ _ÜQ·ú£rw ‚`˜ÿ²bDâ/cûjlZ𻌮gÏ¡Â\Ud"ßåf2¾â¶XÉoWÎï Ož¿Ö}M¹‘µ5;ÚW&âpx7îïÎÝ:œm}GF=°×ù{aüͰԅˆ+Ò0‚B &ùã8¦‡©9—O"÷X»-Ša@sYƒˆ?x+Îè6@c7r·¥0 F¡þJ\x:ÿ<áÐp›•MlÛ3ÎU£:‰À±f›Óüx’`Ç©g2@Wk£€éàÆÛy«©Ö˜ÚC“—X4iï1æÄÓ8Úe—†˜@cUæ$Wß0Hd3©>CÕ?Ðé]U‹ÏkwE©»cÿ—O¦áC zhÎ>\´Žl Âsù€²jme³>ýáZÞ¾|w:…:8(êÈ€üž[É(ºýÛS“Y•°ª»þµÖ)€<ááàõçæ}iyªO>­[†ˆÇ`nΟÉèf!@.ùñßí^ˆgˆ@™Wd·k¤ÀOl’Óÿ®œp(b6£og9‚9ñáX~1Õ!óÈ|Dbô%À„9sòOŽz|ŒýŒYC·ÖË¡ƒpH)xÄÿ#«+IäÇ <äÎHÙT}ÁÿJ=« íX_Àiäh†ÔþøÂ€àƒÔ±ÄfeCëþ¼Â®àί[çÿ6]‹"¿$®ír›‡.|’â¿áúõ3£‘T|’x[nÜn#jïØâØžwám_Í ›k®áЦ„±Ñ”æ‚t?÷°Ã44SãQ]ˆÝqË‚—P.ñhúÂ÷~*K6é?G¤kì]½«½— Ù0Xðlc YÈ4æÓ2å±d±¿µejaZ”ÿ·­–ùã;<>t-·ªú{Ñu•WÞz—/ÐV¼„f  Xñ¢ÍÉ-g¤àJ0ª)2ð9p3zƒîͺ¬0l%ðéÃ,= Œ z=,ÙU%j£|³TÎu\ÆÅqîá\Þã÷µžda¤äЋ‘î0þèÿ¾ý’ärT>ó\¬Š•òV ¨XÚq¦,e¬lnJQj0¥””­s‘Jì†ô8 mÿ#ס"£3¹ Q@tžòŽbtêiâŽñžÄ®ÕAÁÜÁ›ìÑăâÎaŒÜœÞ·7;¦½ôÞ”Gã”{« C“ʬ׋ï0þA‚ThhŒ‘q •:Ç,{$‡Ñ2 õì[wÿOÎP}уã¯ålg:åÎXÑj.= ·Ž8ONïôòÃU—aæ£þÐæò3wž ë5AŽt»Ë2 Q0‚ç0§r÷÷÷ú?øìî*δW†…„5ë˜*ñ§/ƒ™ØT4BÌ! +M“Qʻɘ߫†ê6õ©ço[Ž¿|oÇecÊã|¿®bwTc$ÈZ}'¯­†ØµáñGqÖZ£ÄQ‘KV šØ€íN®#RpϸR„d×<ÑjàΪkˆDÃ3ºúÜ(™ÒàW“þºæ:K‘ØÈžìlAý/óc…- ý ’榫 =?y%éÔ\L¿8™XjG¤¹¡Ø‰’æj̽œñÉØÕ‚Ð °7ÆwƬюÏrÔâ®Ìƒ÷™ÇàA\˜LCE^\œ¢oÄ€N+þÆÙÓ½À6Ï\Ü´ÄžêvDziÏü7±S@4•»ºá…vó9–Ú†Iž;øÔs_OŸ^\4!%¾òÒsá, úZ:¸Íw ±þÓ ý¿N4þÄ¢h—óëÄ/lÕüêTPqÄÂîÕKåVEô(Œêµ¶ 9æ¯À..Ai_™´s²—>ÄSà‡óºT,æS ×Z½dü®caH Ç2%ŽŸz("Î5\l=Úk©#3j4±Éw,&çÁ«8ñ{‚ÊqïÅi¤G° ×ÞRK+uâµ6’|F›• qÜßt8øLÀ™&qP¿û.«K¤¦-¸´urqs[Åí·zM^GŽ@Ô~Âìò»´Ð”R¶+Ô«Å,‚šÇȸ`OÎv÷åSg±øÅgïµQ>­µ5aUvâ¨ÄâвÀj¬k=&šƒb,8ÊøÊ<Ö ”Fx†}9T7CÌð…ôáñ/>HçµâãÔ‰Q ’ÓÇ 2dsya'U×J-š¶¬ÊªLïð¼Ë#ô·÷Éó¢o_ÏÞ§ÍÈîµÂõ‹Ýx]•íRbù’ æi"¡&<·ýZà:® Æ—+à‡y݇º­&ô&w“Ž+ÀA§Rl † ’‚±èÆ´îŸ$¹öĨaŒNãïm>LvL®]Ѧf~á´îÖg›mΤž{…)56#¿Ëa¹N‡4¬ñÞRIoÓb3NIZD£3¥2–÷²óЉSþ‡r˜°Kh+y¢@:dvƒ~ô¥IÑ]¹K)ÓÈáêt-Å[ôË ó_»‰ñó!¡·ºA­Õçv\ŽåfDø õíö|÷Õ“‹±xr£”9èA½Œ0>‘˜öðæ×ðUæýðd÷mÑ}>*çžÏjŽ¿ƒZK!Ôê7RZ±$8l/!HÜ*áJŠPi«¡l&aàÆ…Àóz®=ʯó8êX¨÷T•6À*ºµ5Õ_F "ÝAšLëõ«bÖ´®F>õ´n¹QN+m‘ãûIõéw©:|÷øþYJ¹êÐK¸)âæy8‹Õ¢½JaTVyÌ«R]ŠEã´¯ëÜ1)ýàE>D Ƀ°˜ZeÜ ¢"ÿF¨Ð5d€t-Sɲ·Œ$æ%]VKÊ€ýïŽý|Æì¹¯òúºt¾EjR« Á%Œüt~€t4®&øÐ~GúÖ…VYä%„¿ 'E ÑŠßÉo¯®}"…Ÿ‘çÐÿ.ëÇꛕ¸X4Á’ìåÏåì¯%ÕócUÓÉøÙœÖ/3áñ§¥meTls¬)’’ç22L/› ë)·&Ð]I÷†U ‡.ß„ãraxœÍ×j±_±^Ô`LoM ¸g¸x®„ãV€X‡5k}ÌœT… 1€A˜þÿa¤³œÃ$è×Ðþhâ¢ËÁ ·Ò“,÷ÔÀÆ›†Èh¯0Ä£ÚîJ‰—vÓTã³äˆŠoÏ_³šµ§àHž™¢Æ:%}0ôíd§÷Ju0°îBЧDŽTÖÐr¡'­¿Í9pd÷è‡k Ï“!÷‡SÝÓzö¬© ôða¤9J^vêwËöU€þ’´Â²^ äw G™Š°8ž2¨˜X¤Àù€'ßâ®Ì$N\ÍÚáw±o‡œOÐKh½;“šhx†»õ2Žè ¸ªQ‹é»çÈÒ S;FKhð–ãʨ~_rŸðõlÜ–RR1pó×øiËÞ*IUl>»Kò˜pÏ«§5m“lvØTá™"ëh°¾ÄÁâþÛ€L<ÅU¸¦ýÅÌ&à“õŽå¿öo`ÓFLo Â)­ƒ7¾¡SÖ¾Â(N]ÄgV>ƒ%&r`#Ÿ EÝ.tj3K]ä­t™º\uòo®NrYâP2+(ü¸f‘•໳@½gÛâòGÜQ±¾M0}ëø½¸Ù$î‰,yÂsèÜJÙ`Ÿy™ 5ä½èüætÕÃÜx”t á0®ÂÛ3ïð õ펈@ÿulœ\Añ×Èš÷»ïS£k— ªåIš'Ûa{B`àĦë3 ü¥—1Aìøôu¿ŒÑàÉ±Ñø£‚c<»ÏPqíÝÎ[g"À“>À02ƒm¡¨”k×"K>$v}”ÀU‡eOh=#BÖ?ì¹×BØìz+s’@¾àÁ ·ÓíTóbb(»l’÷d)«‰b±Sœ܉²~9 Ÿ‹iýgV(ZLŠ\,%ZPf2$9¯Êó”XØgD\ðNƒTÍrÎïÛ ¬|þŽ(xÂÍÅâ"ÅYÌš•î×|¤<-ÚÔÒ bÃ2`øWι°Hr§ýˆx /Á )Ù`Atô-ìμ]WæPܺ½º,]É<yr{ãmú¸êEʹȵ¡(Vóãñè«ù˜=:.ì ×…œ£Û€b{\ô-á?Õµ8VPô»‹ë-†ûZZU ؃ƴå+ÉËq„OèŽvÒñÒÙ§Q<àß9@ÁÓÔ1Ûô5e›Ð4¦Ù‡Ça¸·'æC¤vïfÑwô˜†œçÑÅýlñÛÉ÷d,Êòõ¯ºz?îæ`äÄ;·â‚ÙÒÁ§6/üZv3†F^µÒc6aˆpÞþƵãžÞøöîç¼Öç'¼Ü??‡#šQ㸳M˾¡äïÿ舦&…kNBL¹äeXíV¬Î 0—”¸ZWsüI—I +ÆÛ„Ñ…3pÜá¡éûjÉïJC|=›wùõ=ˆê2ï蛫¾ñgÿ,š^xø½.a!õ`@œs¡Ÿ•3Ã8dââ©qÙñ¢u½]ã-t'DëÉHi ™°nì¯86á7•tçØ~Û”7•‰P‰ÖPa¤¢ÉȪi–ÈNà‹:ÏÝøxÞq4›¼ŠYû·ÔNdT r—}êëWWá×ú×DªbÙ0žÉE`ìý².S2C܇r±\Ñ’®ØÃÔ )ÃÖÔÑ`rh•I0ä0—Jßµ›IÇV…„XqqI˜‡ØÙ‰rA÷´²ìÊÂjp­l­Mæœ*=W>j> ÏôÀ‡APë×<ÞÊÆôNfäu 6­~L@Ì… pŽ]FFúÉáJÁ´=ê”ÜN{ÙÆîÙÐ[Ìÿmzºìé^wà|~©yjÛvîq*’¿ó™;6q€¡Ð<Ù–Jðì¶ÍÄ%ÝÄü‡¿úÛj]ß«ðñkç diËÝ­ilž[úzDÈj4CòHÿZãLsAǸAêüôÊÐCô‰q~·@û?/,¦¿ Å&T\¯7\ÞÝS™¤L$öªövðÕs+K¨«rqåËÄíÚú3x^¬˜7‚–Và)’²€'ø='2Ü\ÄBd¿«)Îd»—jð£„Á –ÜKm²Óz>Óÿ,ZiVì ™0+Ù¼J(‹I4®ÌLßÄÖ ÞÅS›”£ãfžþ:å‡Çj¼¸¡nDßÊö½•n_YªC—ó)o,%50Þ”‡>•F‘@ÖÂ-n±Ÿð¤|èPÅ}³þi·Ä ú˜ÝK,%!‘33›õ<å|бͯ­cGK‚d]Ês ꤔi>œÃÉå÷4N‘žÈÕµˆê$£89KX&bíöá•SÿÖyg8‰ø•¢>8E” æŒÖžõƒW?éuZšc·œéPæÕ{ê(Æj ·¥hU¤Õë…áxëjõÞ `J˜,ƒ‰]Å 6ÉXõüÝT‡|À A ( ™uI¥úÊ™>K*¤¿È ô;·šBÿ{˜üÇ{CL#„"ˆB!A{ …Éÿ9¡vo‚Ð~ðÙËR7DZfÏØ9Ô&sÿ¦`4Ͻ0ÀÀÒ\<À–  Â‰Xd“ÕOT\I2ì¨ÀïÌ÷ºû¶Kº¹½Ï5vðÜ·°èÛFº{A†å±ejFáM¢JÏaœé)²2ÛeŽx«u-xÓB¹g¹@¨Î0'pÓД´)¼7¡nÍe›lÉçˆB½½$tÙµ1G uP!Š`Öà.…àµ_GE’™’I4*àcÔînUÿñÜhIïB8ååÄÿÒ ñõy-°~<ÙAÀ?EæfbéMËfbÖœ“šÿz‚ÙÑ™^³m`Þž ª×?óNÍÏd΃´žTùŽd±g8‹"½ »Ès'þ§ûÀÕSXÞÉ{e@»»Á…ÃÉ[l¯Ô¥7oŽB*tSjœ@Üß„31l= ‘Œ >œa’D3ûlŸ8z†`ªušiN(\EЙ¬¦ñâ_ÖIAÖ˜ƒ_8þ~Š¥àÙ#°‡óAY¶C…ð¦l•ÀäÚQ—‘ žŒ›”ß¶Õš~0žô…CZÿõÒ4õ¼¢zv]¬¬ãÞm)=€÷›ÐÀ`Z%ÿ Óÿn·±žùÛÀ¼ËnöšS„@ãy²a’±±LÊP@О議?c‰/ªlezøp ʧWš ç“Ð+È•æ-­T½0òjÓý¾{üzôª*¬|Çôzi÷_ö-çK,-èC›<Æ,¾ ý룹xH|ÒOã>ÜÛ»kü*¯Íë­ë‡\¨˜)ÿ %@!Ù~#c4:CîŲº°dtŸñè,Þsà<íNœìØo=1éx®EØ¿3ó˜1 íž«Úr™"87®UÉt,L•…@ÜyeZûÜo4@|¹—è¾  |ÉT•¶\mwƒ@¶Že,T7WCÓ¡>[ÞÓÿÌó%9)Ÿ~$ΨœbfQ³6˜ž³;iL况ÜÅd(@š2Cª1aü R€œ0YYÔxgNw*†áØä ŒMë£ä¹ÚÍ*”pŸÃ† rky½òÈ/‘m‡¨s*À÷wxˆª¥/\Ið”§amפýy¤[š£‰{çNÿ–rˆHÀ0Ä„©ŽÓ¼û­'ÛÃ6\ʦ\žföò¾ÑhÂe8é§ZD5<ÉÈióÇþÊV<õésP±o‹¦ÈºÝb¶ygÁÈê²6ª¼ÛXô^k“@>–!Ê.Hg“9 ÌI”Þ@}óèÊ ÑŒöV¹ÍyZPýîÐzÖà@çÜÒ—òª‰ãÞŒ ùõ0C€¿–¹÷÷ï¤É!–Çf$¥NÓÙÙ3J{¥àz1£•KfCÄwXSÅþàM²©ó0KŠ¢ï˜]NõJÂBÁÚ1õhY§ëèÜ‹ Žn™("óÅqæ`½‡“Š×3@NS 7S»Ök\‡Ä&R ÇA‚¥Wvd‚ê^ Êi1舿ÈYs[QƒÆNªI*øbI+¿XXëì"Æ„µs[乬>y±+>jÌÝޟ䣪ܕíc‹:¤*“ ž}>µ_V#D³íסÊ4¬­a«_“9¥‘þôSài'‚™Yß n¥“zÛ}زeheA}Q¨}A†Æz¥¥Øîêθ|ïÙZÝܹ¥vC{|1EÈ=J9¶ J( §6+WŠ•½ä¹?º(ˆQ€”ÉþÝžß¡_y „)Oñ‘ñ•f#*þ *+»”vàP;®ÚÄ*A·ñ¯ÏFâFÔZc`ZÕÐvG-ÎA!Ýùu½_ûK‡ÇƒY÷úÕÇ}îCW.4uŸ13Cë3XGŽl„»gˆŸ;aNÊżjœ_N,*Ë,oBÿ‘ NIj0»Ì®gS–*ùxðù»ðÂV?ìÞ>vçÂr‡ ˜9¾¶u`ÌåecL‰¶* ŠcÃ(ã‡ö?äÎYn¶²þI?q&~²béݸQ¹U3äØ˜.a²Ñ»ýíñ­Ø,eÉ]…Æôÿxu[’œôè)ìÿs‘J5ÿE\ˆìž (qBhãÂ3VÅü@¤mÍHÕYÕ©h“%•^¥ÉVÀ¢<ók:åàUÕ½¦Ì ûþ%ŸEž™àÄ€œ6ÝÚ>¼ïØ«eÿNSPØqëL € NþÁ˜µx»£\X³œ#„dŽ2'¸@Ô®a€.U ò·XRÅÕÞý/;”pM×?_ ¼S¤ÐÀ¬˜/v=ÐÄÿ·q35f1½@$¯aº¡í÷Ø)kMÛ¶*î°óº-ø@Œ@ÙÈóʆPÿôóVM…ÈoUFƒwãs2'–Uò7§¬l%Ægq”™=Êϳ,,¿•Õë™}â/?×°§vœìñ— žj¨U¡ÕpÛ&¢÷ܨ_·ó7,Ð7E”1 ꯎ§iÍë2MIº,OI9.¹Ã?X‡¦Åiy @_¸€dÈUY\KÀÑG4ýþ.uufOfþ•YP"Œ$HqB „2¿÷€ØPF¡ø2zêZéknlÜî"É·‰Ü`Ï5ÈÑ-ðbVqðŽ­î{´9ûÏ‘¹1Çê,ò…èÂ?¤ã-+°W#t_ìÀ‰T}øŽ½°Õnü.ßÌ |öØÿ¸ÐäÄó,˜±Ûvá·£•Å- \pÄ ðù®à@É 2+9 q©²g„O š¨aJ)¼¼ûŠÀ¨ÀtvÃùºN§-*œjÅÆ¤ë;ãRp—Çq¿ñÀv'˜À7÷€>õVüç73Œ_2t¢VäAAT ± W‚¬xZeî;—Â_ðÛ+bÁøp+·!¢ƒ–ôjª€WµëÙå¶_]PÞYË4:(¥€”×[Ããa)Í@á˜Xó’B ÁJIõ‡ˆÕ°Þ¦÷ò“<h’ž,ý×÷»Œ÷þ€laÚ#ÏècÅ¨ÝÆëzëTúäq¢°<ÆÖ¿¾ƒYÑJ¯‰M¸±çõŽBú*rè+ÈœŒ:³íäÑ7\è†Ãä”ÝëÅ•Ý~8_VýïqPŸø‰µU…ê°6 ʈ0c×þ¡$ªC ‚ø¦„-1‘@Àhºaª¬ÇqQRð›S¥ÎÕ„C1®€wl:¤B!?ÑZŸ»5úM§ãFƒjEk[õw“Þ4Þ‰-Zí_îË5?÷k¼ìûIà3®)ã=ñ»õ°çÙWJWO *þ,“á\ ù#ïËÁªãÝ•¯§Î ÷kE($™à=£4«žùÅÔÈô-|I”@¿.+¨ ú²1&‚òÖÝ}yûX.c³óö>%—oDlµ:«c¤ÕvÿC*qñ` CqD‡ƒxåèµ·ìxÅŸ"þxÊñx Ó²ºÛ|ú/µ—ß»ô,¿š«'¿Qé̹+ÛI?îרñKtuˆ3ä’u!5KséˆCB‘VýÜÄ6ˆØŒ,ñ@WÁ '~+ÿmð1ý…DeŽÊÔ 6~_Ys¶©ßMìü™C‚ñp— n]%÷“Vú‹³ã‚鿤¼,ɤ:³¸Õd#00gÁlXðŠÏþâøEù¸ªºÿž¬þe|ùÔ'á¨àPf@o‡éhˆOôäó" T6x-E°ê×ÿâ‹% !„'Å‹ s Ñyë@ë\yztà¹&Ùø³$›ÍÉM)§þ]Á6ðžý¦Úmý†DÞ$£}á·Áúì"†!:a»Ÿ]DÐM3ýÇW£óÚŸz⥔ ” ö£Ö•e:ô 9›ñf.–âX8µ×²vûj'90æÎu>ÞÙ,ì»Pb6§Ý1Û‘4‚ïœP­ Ý?Û‡ ÖøùºëßBJâ–£ùß Ì)øtí ÖÃqwŠsUJO¤OBŒX7¾rÓºŒT þ°õB Ø NH²jÁ~rÿâà0ìý瓼¨‘Ú² F£™ËÓ"/Í´ê>j¶Ag§o9™=3ý¿¹–vX7›["SÕEn¿¿Oz5ÇT✠(©i…a?ß8M¯k2¹­Vw%õª^0I* @ «;ñ@ÊfB°ûÄ.²ŸeOÁl¡€S˜‡ r–ãCc-°ÕaÞ«ÍzÏá¢@,ܧ¼b‹«Îu3Ì}0ܘFM¯öÉ©¿møýèûþ™XÙ{»Uqû5· €} B}!͘ñE€œJ˹”M…2¿’úFa*Å\)²´Û—zæ\´t¯ïÇ'MyãE+s•ÙY‚ð¾?öÒ÷ )u%Õ“¼pNÙl…ep~m+J¥‹ 㮑Åt…­i„ïˆ_øô}­ ¦É¼æ’Zam$¿X÷s±‚D8«l_ ð|bµ¤¥¾UŠší {ÖXy8âÖCS9šòÈœ<™fÎ#s†±‹t;lš!?E‡1d">ÿl®ºèµq:oã¤(¬’w¥•Í2*P5ª­ƒîj¿&p ‡yéwú$Ö s}°¹ƒ³?ÃtlLë—'ñ<ƒN1ã°>P8\îšdÃ;ÞÆœés,ÇÎhÏ„ÿgp\ÎðÍ€=Qjö*nUŠ> ]B‹€J‘úOî»·'Ôâ¶‚M—Ö.ù2&Oõ5ãä*Ð,ÅØŠƒ‡…D-Dœ _ß¼­6s'˜BÍñœCÃØAá¶-P Ö>å뿱¸+‰.vëZ nÈWNÕrGRSlHín éfCû’A tpÉSžEšµ°§ØZ;ÍFáß#›q_s @òî c1JŠ(:†uÈ¥`Xœáo ¹Ç†“Ýôª‘¸[’°t ¦Fëñ~0Xׂ‰ËE.ùÓH à Ü™uª}¶ÌÆ­7¡Öw<÷Q]Õ±T¼e¦÷³?çWŒ‘ƒâèæŽKúü¯h6 ’ èœékãØ©T@ýÎÛ¯í¨ÀÍEþ$ÿ“/‚,cßÁŒYÝÆCºò¤]P|jÖùˆ8è®”Ñ'Ây¬?—¯–•9­ø%EÁùP—‰6PÄNEh0ƒÄÏ© TîÇ€0 Qç|çí+ÒÇò2­7ó ÷:¼t¸œõª…½e>X ‚浘•¡– ÷ôµjaV ¼8€Ÿ´WpÊ”²€hAõ`zÕn`ŽËøënk‚ÐYÓüúãšb }T=ëO™$ÏHˆ~(ÍK…³qí$\bh¶@û‹¹w8PœX¨<ŒPϹ¼Êàk3AFãÔ<±3V«êУß5ðOÐù½õ}@'Zp‚F½KÆn%Ôü%ž¾´µ$æ\µ½ìßÑ5óAPïµ,«|ÆõmÄȇhx«þµ ùEb­êf´±s=Jh€vÔÅFú3òœ'P;í|϶‡X Š‘ëΖýQ m;\ö­çÇ@eAÿK°óµ;—¡9Þ ñïsqò—O„ñˆîØBÑÖ4ÓÓ+ó=þòUxÃ|pD‚¯4|ù„…º· 4XìgGî8m4øò'1Ó¨?´!4Kªqr˧=tìO”VQr•ácKµ3Çp„FD¢d=spaüpâŽÉˆivºz@È–“bf­qêcÙ=ÞzB‹É*Âô ¿ìfL©yÅwUâòE$\ïhî›ß*ך‡o¶yzK[Ê YíÝ»ú`}yxæäô%8P-Š\ÓH¥<c>az€ÜQX¼ˆ™K¬\Gà]ðÂÀ¡.(¼“Ã4µu ¨2Ür»Ô$]ra²m‹2rNRÛ\&×·CU8_QœNâ{VÚò· õ4V…D¢,ŸÑ×Àûúo°MÎ4é—} Eõ<¦.†[K‘ÂuT+ûkw__˜¬Î,–"òÎuQÙîuÅ7»4V7Gm©?6%c͌åø9¡œ9‚½Â¡©\á{bÝ&H0 èÜÂ)¿ò±yÜö¼nd=êis’OX”¨²áÕ”÷Vc˜¢TxÈÑcJL“²än}\hý>&œ'ޤUæb·ÝïN,nõΚ ¾ sç!94 O+ç§«î¶|¥Bˆ©±°agŽ’ÉÙ˜Ùéo¦¤|/‚à‚Q ¨™ –Ó,Ê÷äæY(g­Åo©ZMà¬S 3X÷C/Sw_AÿÞ´‚ð¶2tÀɉ˜»÷B éªv»PGú[¶ŒmZª çáÊ«O^âjñöIŸ¶Úëê)ïòª™Šqâ[ghDê9‚Ý*¥-C*âĬ.R']•:”EÆõ9㯠›w¶M/âÖ5° ùZçé‡ ÐÉ.[ìÑ[0†¿\`8—ÛíÅc-Ë Yª· Zò›\vyÔðFFÞt™[þ6ùÀ~@Î Oéµëó*~˜Ÿÿú–»ïöl”ƨø*uárP¡úXY .óÈÝp˜A–Só†¨Ûß;úŒepÝC ŽêÑò´ê˜¤_×K5v¿ô¦“¾{>Ui”ÇÜ_ìŸiïÕ—9êA̰*2ÅäÐgŸ¸ çôJ×0'‘”0ðÁÉúbºqºk60º Îà¿VJÚVíï¢ýdv+'8wQT À&¥ cNÜÈÙÞÑS3eLÍYk7%xû` …7|'@I8@Þ9@çõ”é+ž½oÝõ˜jÖRK)@TéêU ÝÝG,jbš¿ €-v„–^¿[¸q&“s½m$X#t#¤Ü ÇêcÚÛè|èÿ‘Óþ–e|÷¥¨rÌ)ÞÞøñ„aÖC]q­€¯ð¥mPÍØRɃY:í¨ë´Ÿ°j‡ô¹Ó½Vá,íÉõçt»[¸ ñ0¡j›Ó9/Á¯GÀFoء˄Ȅ¥T¦Ýïİ©8<†[œêm¹ì•&³3hááxü±Æ5v{¬êª;;k‰¸An†cúÜ? ¿ÍÛS-1üί‰ÚŸâÊ-Õí!ø¨Î9æv´ex3*#7¿š`Š3%!| ¨ƒØØC½…9Z¥©þMî~G?Ÿ§HÑ.w=xÒiôEt€HäKšßá5àZ>è‹Mõ®êËtßj(äeTÓǘUÊ‚©¨¥ã­ŠzúôÈø`X„?Pj°5S.ˆ tùKAî)qûÑ=¡ÝÙ:ksÌz¯HT³ oíVóLÛBC•DMž‹Rvp /êÔ-¥|CåÙ¶Î>“…o‹ÔˆZŒ‘íøoª!’ÿˆÆ8ßϼÄ9«æ£&¬WÁJD¼†ÿÙ¥‹Ù{Ø·VPû$þ\ÛÝÕd!S¯E§D^cÛ·ÎNú¨ëk†¤L'~^sg„rÌ—ÏJCŠ ú<…g1uƒâSEQ[´€¬œk µñ×Ô¾àÙÄ/˜W…¬Ÿ4-áhÞϺ~5êhhõ—¬øD|âè6™Ç( D©ƒn×öðü½”EéÈì~ï*¢¤M"ÀprƒE”ÏöÆÜ3̰—‚ÓÖ]ïƒÂƒ@³¿'ý™Š¸lW“kohž©@2N€~û%¯O"Ø**mÏ^ÜNh`ß €îˆñÍK–\„f¹fÜ> û®þ\©Wú냌ÝÛë`¸Ÿ§— ÜU!^DÂ]œh¡àƒ¯ð2fó±Œ@ƒPJw­‹¯30Í=kSD†wt{—º8®Å• nسcÄy¬CC^sº7\[¤¿4‚*l J€z;, ¹³ æ0÷1”r«š–]2'¾¼~ñ«9GÒ¶ûJo™–á&wún3¢¯Ú~ÓeÃzÎ9ª&¾àÝV¨D2jw¨™B_¤è *ûJ|ÊÓN "è0¡ÌÖsÜ:fyN]Ï ÊíI+´ÜýøS‰A^–áð2ì (êùw]r¢Ë&IaÝDsйã^éÙÿ~êÞ.cgEË-ñÁÿáÓ.ŸÇ&‰©Ž =­~—Õér®¾½B½…®tþƒ°ÌóœÇÚØµnŒ‘M¼g³í(NÌ øº*ÐqjÚ]5꛺–&RQåÈ êÊÿaÀ j`å.ëò;Ao€]£9 ÉÏ»¦×K—#sý=Š·O°¤¹^PìòÇ_LÛ²ˆ0H7ÆÅ]aÎñ•ÂPŠ$ aFC‰Æºñ¾ÿŸ‡Ch]71ÈS·­Õ+ªV*BñÁ:Ù©Ôn<èVMpãå u}\ž?ëIdqR{ììí‚c鸭iÊp™OCÈ?Û*¯˜Â9ršÙpO7~[”7Ê(2ú ¾ëV2 µ¡L÷¥u_»BfÒ„õÀÑp|Ǩ²'^´ûÙðšÏ+žs1—Ÿ3%¨¥å¾§á±-%»Ñ¬<«¼ïxϹFK v[.Çlí¶½§?ëVp¾)¾Ûò¸¦ ÚL.x±ë6ÊHØ=³œ¯Ý¸ÞR¤ã††Èeœ žÆ”'­ òuWq×O 40É­™‹M›b¾ïNyó^{ß/¬„Ƀ>¨±¿f8 ÈÖSt¾X,¢G nDviPk:>'/ÙÔ£¿~‘Ü›¬o;j“Ñ(X}+\q"+éc„Zâ1zú¢5›…NV­Â–(ÌI4b-Àh”ÙXbxš<¯½©8ÕȘ ÝJýd!Ûªîƒù$,>ÆÖ°8­ÿ °“1%0åüEt"Q0 Áã·e•Ù¼rl õªÍ«ƒÕC;æ´Ke,êAEô®R žãYx˜øÆì·îƒüÔ, z@wOhݘœ¹u ï Ì ¡ÞC(vL£«;†Sã¬è…:øª ©H(Á@X£²mÚWŒo¯„2ff|,ŽOV4LÅc¬»•àÏ. ú )€ßø#[òØ=DH!YŒÚ`ÍôÔŒzÊÚ¢èÑá ðô@ÃÔÀã»U'×àà;æô9lœ8qÉˈм^ÑŽòø”XƒßPÙÌñ¡1ƒI-–_øCÛ$ÙR ¤aiÉo‹.ÑeE Ê5Q±s‰¡zUØáÄãc†ÊAç>û>êk§NR~2Zžï†@”Û ¼Îø n"ˆÔ䫇 _ð í Ó†s0PŽjrNçhßoqö¥[ ÿAÐâäšÌ ,| «©ñ~–å2‹*1Y;‹´!nè×G¥ýã*iéMfm‰gœ)IzÇ› Ú„®ã0ƒÈ7ºs\›šÍ^Þ“zÕxo?M/EW ;=FKÊõ—!À|-Tö“(¶íK~>$fäK›Jš¡Îù[M—˜Â+"ž=¶mEÁO&ÚBÍåÉÝ5ç/•ŧë„ýï 1 D$µ‰p[ªê f÷ނӯ`eó ù2¦Õ[gµÐ*À´áµ4Éx•Àl§=úY—@ÚZôˆJld)­Æfu4“-À¼ïŸ ”3±•öôùÝâ[’î{_âTE€¾âíK:œÒCdî_=]K3žØS‘oØœ›È²Á ¢õ—®%”óõ…Üib}§mº ÅáìÈ=^ÛD< Þ[`ÑÇÉuiPï­€Û÷[¶›ßcLqðWÚóQë*ÔAhÕîVë ®Ðr #7ƒ÷–c ¨™òP@Y$AŽFxcLQÌš¹UµÓ}7FP;\áŠN,°¶Z5?JkŽ}”Ç-U}ŸÆÂvï ¢¬fþ;Û¸;‘ý˜yš:$ËûÁrq„î0×õa–MßE›í^O‚[öÚ…š½ö W=`~mO»fÏWµî¡mA˜_Ìd #>Æhg›~ ˽¯kexN·ƒÐzÙmx»Û?ʼn‰Ü¡ û$ļ7x0ÕáWŸr ÄåHf,ŠÇõ3Uì‚xYm~]û÷Øo,ÿ8ʺ¥ÓWÏÈ‹^ï‹@ÌúvÛåÙ“ËòBAÿ&TËüFÄ‹æõ‰pbÔ\Á@¨•¢òª]oê{`}ÿ™7‹A6œàwñZ@ÌlúÓdÙ_¥ŽUo¢Tx@ÐÇð};êý}DƬ¡iј¿*´%“Ù“àŠÎ×Ù©íÏ…[v§)|Ä^¿k·Š“&×Úbw«²eüíîN²KH*å@äE™ƒàñ’ÀíUi0Âsw®>=Ù±Øav×YŽZɸªŒßÊŸ ±KéF@3êÊÑÚ㓪Y›È Õ‹•=‰’*âÇêý'äkî’Êz—²<FÝdÿMì– ”ø’ú‚f¬mEÏ‘.Àß|.Åÿ¼HU¡j{øm•¶]Ííz£µú¬q d0„ 6|±½³F ÷мÊxÛŽ—8=Ö+=mé×µ÷]Ï/^þ'‰•<· o¯†éÛ»ÔÁýÍAâØ|ÀÜžû°òœ<•Ì•ã=÷[ÍΜ$Cvëa¨†Å¨ÕfdÕ;1! ör3 ›ó²zmÕ¦6ãýˆ€ëhˆ£j4ÆÝƒïNp£¾ êÄ+Áá76Ì7CûÃ3ûF”(CWA)Ù0c'bÕ!N̳gjÁöm¤Ä3 ¿Ðý¯ó~A™¤ãÏÂûN]“ȶ^…³C¸h034˜YíîÕl !0¢³ØVßZôáõ…Ñ~BˆÃ†Â™Rç6# œCÞ‡œðÅ >!Ôž€WžÃžîÈ$b"¤`¤‚ªB0ˆ-ÀãI(GÒn™<«=@=Ú2˜`D5ßÂU>C(p>¤.A¤UƒÀƒ·`†ùƒLÑr ‘Y˜5£ &ý#Ö2,Øj‹J´Ù¥)€F1‚¤€Á`‚Æ(â š—) £éâù}çZ wÆÐ˜ƒ™È†. ÐVèt 3œÒË!“=[VÝ 4¹«Ö0¡pÏÈ1lÿ#=SÄ0lÄ)3°0AŒ#ør …0•Ð))‘Æ1 ‚´q袪”Š€š,V@6®›@¨Á"‚¡‰ f"B€˜  ˜°!$AvPEìÈ((` 7 • PcATŒRcX„AUr0ŽV”,ÀV1AEp yLH* â"A‚¨‚Q@Òb¨ªdb^"A¡U@' €›½¿‰ÉG_°WÕß¿òƒ& @f;Ÿ_Ṏ«î®wÄIq*WÛt+#Õçc’‚  2B#TÉ.2 زÈ‘×䪖Q‹ðZ„^è\âvì&ë<2ãjT(Ž½Î¯ëˇj-™ÍÖQíižù+ùï3:EcΚY,ºÒªc‚2‰+’Ä+ؘIi9ñ‡‰(£E\ÃѰ 0Ïdü<ó´dáßa ùÑ:)ÀhÀÁ°wB"tµ¡ òÄIÅ k^É'¸¡ò@Áµ+rQƒ´špÈ4+t®áÇOêÅýËžñ©·.+ûUÙ@€LŠûY7Q“5y%Â'¡C4U¨² heÔã‘P´M$4_6ó0gä8›Ôä?Ô"y9ÅoqÜŸñÍÏRÿåп_e×d³IÀQvõá …Â ß?N¨3?Ï.@ž•áïPPa†S”o†9ûàt¼3Â=äú_,àDçprŽI±ÑÑðÛ¹»úw†·ÑXf¾#¾y„=ŠÖ­†ü@~ ƒ!õ Õœ¦¸°ôñyþL^dzXÓb?·|¦AêÛtÅHAÿ~/¥çoG·ÂïAp¢°ñ‰™w³k .1Ù9QÆœhªz–+&ƒM΄¸Ð* yÑŒª _iaÿó’e5Ÿ¨‡– noÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÃðwÓîÛ}õö÷Åvöß>ë]9[­Û[n÷º÷Zrݶåžölç}÷½»ÞïE½»¾û¹±½»{½×{»ÃÝ®Õí+}¾ùîI×Ýîíï^3¶mí¯{Ž÷/¯q&ŒSdÃBe?Jx j~˜F&£4ž)í"xÓ#i56(Ú4Á0Ðjž˜Œ0§‰ˆÔÆA¤ýM'š˜˜&=žOS4hÓI“hȘOQåPŠ©èL54l€Œ €˜ƒhMÓLL‰à”xšž™&žL!¦Lšf£ÓI„ÚLjiéÔm „zmˆÚ4ÚL ¦LQ“ÍSѦ˜TM=OQOÁ4z&OCBfšM£zj2™10˜F&Õ=¡’aˆ4ÓCA¢fƒ<˜*x SôÑi¤Ø&ŒFIé‘´™™ɧ¤Å?U©O@ FÔÓC µOzš›ÓCTó iÑ©é=ò'£MSÉ&SÊdý&†HÁ‘ªxCšTñ'‚›IêlSɆ’xSщ352zFOЀšbdÔÍ!LOSMSÌShÀ˜”ðÑF2yOE=<”ÛTýS5=0Qˆð“i=O5'ŠÕ?&š4Sô§©èÓDôƒÚjGêžÑ4Å=Od“Ú™¤ÐQé“Q½SfŠzž&§éO&¦jyG”ÓC'©µ"R&DÍIêdõ6SÓSM§‰3)§¦™2ž£ÓCi!³TýIµ?JmOÒ2f(›È"`ÓDÚG©§é¤ 4Òm©=56§“)¶‘’z§¨Ÿ¥0e= ?TÚB˜ÔdhôÚ˜àæ`‚¸–Ù³‘Ö ‚alV€˜ 6†X£,ްì ¤;ó\yÆüà”N cŒ9SbϲqÅI4ã΄Ãr„–0¤! 0Ä1‰ŒH¢(‰„ˆœN(ŠqBN(EÇŒ' Œ`Æ2“_•ùuøú +öv»%…ÜÞ:ûyß[uzû×r­¶»Ï±ØX[f&š¨H]14fOÌsî, ã%å»D²¸õv¿rÒvÈüø¾RmÕ‚À€úDúÒÛÇ›‚Y’óK½¯ºþ†?SÒº ²p¬ÚE:y6B\<!W{%r`Œ3®.Ï̬ëé}†Í{LôXØ›m6 ¶Ú "ÚcI&Ä6ÆÚI´žyÀ ˆm† † žÖÛ)[ÖøX=Þ´ÃèüÝÏ^Åvö¾^n—µÆô–´7xL¦ItܘƒSy‰Ä“›tåýÓ7ØôÙVXO©|`£šwïÁžk|ø‡«Úc…ñÏÚOú”ÛO+ûÊÛú±ÅÝqYëáºYè¼e» ÖŠ c;Þ§mÐÆãÒü̦6°BGþ)7Þ=(â[$‡þIgó±,*å=«p†{þy¬Ç:d©_=Ì ×Y›ºÂxVÌ•°§%vÒÃu]Ïæ,b¯Œ9Þñ`z„ä¯{xÇèëÈ8 ¼èlÆ3†¬¥TèþÎHC©«dbÒ2iÿ<Ê4ÿ"ÃŒ'°ˆð£ Êýír»B?M3È›Ç|п sAƵ™pÓŒn“â¤È4µÕo;.îƒ5ôwªžÝûò$5òXA„ÿÑ–€MÃ`÷-ÎÙWÓ‘’Rüß;:=­hžáÕЄ:ú˜)…ÑMO„Ö`˜×†š‘šÒ¬å¬nëk¥@ÎÔçT^àÚ6Hfék¬SLµäêÓØ[¾qÈ4ÀögkÅÕ†gËV„†PH($ÓC³}ð¨6cŸ¯UÕ ôýK¡~>[sw!xšŽQY‡ûÇcÈÒ èÑ ‹UçÖ0™4ÝX’áèÉà‡¼ct±×qG'|@ÌŽ›«°>êK¼o DT+õ’§b¬á.À×K(vÆæEý·ô‹ pÄE¡5¦ßu‚'Oší_U(øÎ᫽+Ý<ƒ}xËòýX’z‡mAø@ƒÀkbúïœïéPÞseѶœºŽ¼Ó“OœÚÝì¤UËí¥R°Œ˜gþ2²‰’|m§ôÉ€…û3úy¦ZÎB«åÉØ¶r4©¡~˜Ñ>·+öMõ½WˆPõ2Ò$é›äø§“_ œGK»‹å¹t`7Z°UBéX$Q’ÝH¥U`Ø ø€€M•Ù-ÜM ªª„Æ5ù_PÑ6ñq!›¥†IÙÑðr|ÓŠjMJzðhpDÄ{ôÔ>²¡e}¾ÓȬMJsjÝ3´ž(è*c£ö$êz–ýÜXQöš¢§Ò>cÙ²;ñ4’˜^.((7«è]î>³Ñ(‰VÒ>«Fœø÷i!÷~P“¬}ÅÆ™_;kTf&nû0ž—ÑÆrÿ©@$š“C§C‚l€•“·³oló_šN¿cûs±ÑÁ½ÉCFƒàƒVŸ”Q}4ìXaˆÝ¬•\Xû.Sܶœóm¨°_o;õöA ©ùo}÷zO–繄`*Õ^Ì+«G¯êó=Ž“æ1ÅY`šÅmGé ½uƒÑåq¡µ/w# TÐÒÆ<ãÙàbË<âÚîIÊqm2Dc¼g'Î|¥q£¦œå–´ãí³£mÅbýšêxt¯sï@ôt)å žW¬S.¸¢öÀ_­- í ŒI65$i2`è¬>ûF=‘Ï=´gç‰ÔˆŸ $¼Ça¸ÏAˆH£ë§) ))nÁ4ëÆI°V`7Î3ÐF¡ñ^ÐÕìx±3ó³*]À©OÔ6û¹G{pZŸˆTЈQ‰ôSÃYÎüEÊÑÀyV›Cnç¹n™Úáù¬üæ¬ëß31·}ÇàDxåù±ï_Ó©È«?LÑexâ”™/Ùvæî%}¬”J‡Z- #+RX[RÙ¦9_`Ýöu°ßó×ÇÈðÔÈ!g WNu´ÁÜÄøH*;ƒ‘'vzÕý`¾[~HúÞ…ÆS$>ywp¬~ȼ—lHæ’aUÖ„ÁY¡Tûµù.{׺¿Ê~>Ý[#öãòVøÈúÐJ“U#ÅaeúÌð`‹wEKôìÇþæVŒi÷—ê89á×®§M¦ë–µ¿Ê Fàæd,¨ýZÌl œdDÙÍšõâЛ3*æ¼î>•@þ<Ë “JBMö,M§Ú\ìç Dæô!÷ŒlQû„ÔUZ}Õ_P¼Øò (GóÅ•³ÃßEõ!z¢\¬$xòب4[;†S÷^º~lÄP‚±*w扱¹­ÿBÝøšu÷û£‹!¨±±õ…\J6¬Ó£QÆ^üÃÒ‹Ì5°5íµ }ú•Nh£ï¯•DØgµ¨ë½*jöÞ×…$ö4úH‘•#까+ñk—Õw1ÚÍØÉB訬ô+{‡ýzÕ²ôŒ—Ž7C~Õ9¼~bµ_Q£ÅÔdáŒ9÷kZ&;©!KWdbUÓFK3YuB’™î²F*ð×jj›Ápöónwë ùÙ edÆ7é¶ÓQ#çÃzÏîËF1uÆU|µŸ¿QˆùÈî•¿YÖJ£žtè/>Bÿ²oRØš!.r²hZÒÑ[Úïk\C&Çð[±¾Cï½òzgZò©Oz¿½üXD$XèX®U1­DM6*¸)­£Ÿªû’mö^=>NìÈ·kå2ÿ¦vlœ;ߨɆxv'Ÿ«,•g…ôÑÌ\ Oñ:ŽÈ¶¯Ÿ¶W#Å»cÕœ¯,C˜ñôìúªÜRŠwç~‘‹Kno–tVW´x˜ÿ‡’¸ ‰»å¼ûM¿² ø>WY$ÖGÆ®q2±ÐNIÅÛ&†ü¹*zË+AVáé7~6‘W·l\t†ïRw;믯œ‡yzgaÆÔÎk>ƒz•‡¦‡ÜÙì;ÚNšFã_€m:ÐÛû‡ÿ+¯ÔÓšk¯ëè¾ú³’9!œ?Þÿ?ÃÕÚSuU;.—Aƒãr;=ùÁøù»-™÷ÉFF‡Ñ"3=,8G–h¼sˆ½×¼­5ÙOÙÁlù[ •ï±ßa™nwó2§ÝªŽ_ƒ ÓQ2\£_S¿”·0¤ éü˜à(FvçZ €`3Q óÇA—«+ l[~-¸KaVtô£æ0ôEµO…l§,o,AE…`)eÖ]9f·V¬ôZd)Þñ· :pâ÷礉 µóÜRíw˜ã«÷üD Ùÿ¶?ö¹F—†dì û‹ÁþËŽP ¥f_LÌ  ÛÚÆÍëLׯO¢ÃuC³÷µ5ú5¿ö°ñ·ÜÁ¢xùcH4kÆL/ƒ‹Ï›XYÖ£tpä%aØä«ðsw‘¹í5íÁºr&S„ç)¯ÃŒ0cB“ŸLÿniAG ÍÂãx4fãóNn[ˆ± ‹—´ê¡RD^ŽRm88)ns%Œ,ã­Ú,;d¯=Œ"n5Œ6X9 G‡†g,}@$ö@!Á\ÀÌmT‰¢ô ¾šš5çw@—A9F˜ÝK’F@ %ü•iä!€âìÅó£² Ôø™ž!¸­VÙlŸ¨¡p‚zYÙ.ÅÂ}ã]6NX$ðƒ–Û3ÌJàËu¸ÀMÊ ò%‡Øÿ’óà–&SøÚÀŠ'Æ#Œ¬'Öç`Æ»ŸŠõ€êl1U{´H׃\¶àdz‚Œ]þC§dGù>ËÄ»¥àwkìK툈Åd1WwNîsQ`á,Ò€<ˆ.¸ž#.Üá†bà1†™JgÇ XuÄ—•“ ®dî^ K¬z{ÅnfÚ½ëMöÅ D–a´0¢¨¿X £?Qk¸ÓÕiùÊõ·«¿N¨ÖV‘—öx~<¬VƒÑÜù`€(¡²b¢(äžMB@°o×+O8ÇÅÖ(K¿/|{®J“z±Ð SR© |{†£F×åŒå,Ya¸r`(_l{xÈf=w>n[¿'»æÂ’ÖT«‹t1¤mlÔŠá.=²û¹6îÀS!ÀX£ì% ‚‹ª>öË粜œ((ާ>l†üªÔEª?)å¦;³Q‡‹&gº /@emCº: ˜"ñÊV'Ù½`Œ®»†àé^סÜÑo£!KÐ?üºBt­F‡«2é0í~ɘ¬ßË€nÛÚ}Gä²¾ÓØ¨4wû²*¥mjšÚN6ù`Þ4'›w´ö¹-ã:2Bn¾ŽÉÂ~\~Ú®K¬Þ—-çLJ$Ì1´®c„Ú.¹ ¯®R1eñ2°îW’÷˽ØÌ.9–Êí!4½D½«»dƒƒ6ÿÈ8·/[ß—åo#²êoB,3JÁñ _PûÆ“‹ P‚IóSÔ’µÎþ¬¹•'¬pv¨ÒzÌZP} ´Ûþ=--³þôº "ñ õ¬ C°4ít$uÀ»tݶ-ÞØØ¢~YŒŽ´ íß-LD¼F—õ˜ô½æ±¼4¢'ŠìÀaT .rµå“Ì'}‡üJ1+7'Wçž•ÏwFµX4Ú‰Ž8÷ÒQià_!½ œ !F’̶¢ ¨÷ÞrDÁÐOqú±Ñ`4 Ð/ä½;SV¡¥¯H»±Y[a Nép4a¥:±ÐÙJá_Dç®^ï8åž®Bçê;Ê«AÕ-³…ÚmñR¬ Êñ»®l·£:Q$Õ–®'Žéfr¸ö1™%νøTºK$ú(Ç< •ç`ÀF¿HQA6Ó¨ê¶ÍFAAPHÞøàt.5–y8eæŽÎ?¼^Ô¡cOcX¬˜ÐI[×÷%6ªéßûIñØÖúC}ru¼ô=pÃT Cjµ>®Û§HÒ_(¦:'kæg* !”Daž†…Bƒ^móŠHìÞ&/ÁÓE©ãOônq°È8s©ÖAmAoMêóÕ2'ù1Ih uwpO†rg%xxŘJ·sÞv§;ªn³w¥” y ·ø©Šãì4Ýùì#h™LÉX"ªÜG¯Ë:^ ÊÖþÖŠÀrhuвÉAÜ%#̳}ðÈ询ïÇIP».'3záFiÂܨ¢ªFù“RýѬƒX|,ùeÌÖÚ”RÿœÚ[»eH;jh:ië™¶³²@\ߥ˜û@n8[á©ÂlϤ¬ô¶} ƒ¹ë­k¼,„il³1Ã^mIÝDmâv 霾w*a}ßÀÍÌ`„t˜Y³«—‚Á«€ÞpŸ'P—„¶Ï(\Wàdñǹ€êýúk¬ÁyªØŽO1¤ù½%§kCœ³ôè ˆK‚Ç+ߨˀ.58Oâs;„aΘ¾Øz„Gv•˜à³UäÙì*@¾mbÌ4…fx랯¥ð‡1Çš¡$|¼?Õ kPk®= é×§½J¡‚$;¹p;ï±½C†#ZÕâ/’H‹V Ù~SîÚž»³ Ä×–……åVäÇ*ø„ŽSѽv3°˜OGØ~¾'N•c˜R±'°Íçn¨÷òâšÔG°ùo€4@j¿Þv»ˆ×þ+–&Sï ÿÑdSækQ[´ç¿PŠU¼ÏõÒ„Xƒà<W‚ Ô W”#uÄЄ€ÜÐáÓ[1ÖBi¸»¬Ü%­ŽÒŠ çY ÏŠê 1'±xŽ<goÕ˜ž¾ª uÄ(ï±™Ÿé_i·w‚¨ý=ò†Þi ½5 Xo”æo5ªIÁ{ÚL÷#U‡TNse‘¬eÛÐðŽOPƒVOœYA{ûJí¹×óÈsÝ7„ütZ U+"Zç©<=©VBì-!A6lk 2ßâ¿·ŸÓ-ÁM#cÞ‚·×Ý’’ˆÕ‘Tña&”­"äM{¦ìxcÁØ}lö†þÚûvÏ[+/qf³؇¥(;›ˆ·ë¹ ª="[Þ6&LÙ[™—Çxëb¨ MÛgšcU—J™i¹çöÍT‹]„èRØZ<®/‰“Èa/Ü QI‡Z§…ŒÁ™Çú²5“®9e€ Œ¦¬vµP˜«UÅÝã¸T×v…_ï¨ÅYÕCz\@­~ë(„u‡ÉÙ ¸M3Ö”#Hô/ûº¡äC`»Œyò x9¥ö@tÿo´–f¾Î-晈q”¥¤MÍÃpÞåŸÅu–0÷4Z‚f"1·2ivÍpý-Q3w~‚Ïx¹B˜Óç0Pº™£à/&J†RÀªmÿ⪼BÝ ²`€¤/i¹nÍûAlÇVO°²ý³NWtᨫ„ùÄNœus©R‚Ãê]{!Å/èûÌijn˜œ+=Ç 3þ…¾¯$Êö¬ˆ¼„o/Ð ¥ fQçTbàKH‰Y¿í¤èÇ’¾H{ѳ/¼Bž7™½˜2(õyí1òwjìqÓÖvõ°Eq¥¸o<ñ³|uý}{ô1È,ãÊ&GÀù 3ò,‹H¹—Gší£ [{t@ú#RÅr}¼ªˆ^" Úže°¬²Ç«àz22,Í­©Z îs;çɉÈÚx™9cš³z ©ÓèÅ÷X9[ãðÒiøQÜÌDoƒlWªÒyݽ°Ÿ o¾Wy@¹!{ûƒ6W7»1á-¹ùqöï¬G9ÈÊà6ŒMJØT-HòÙNZNË9Ћ­Ò=™Êع4;ÍœÙί‚̱ÓwÇ‚“cŒÇR՞ª8íëC{s€â÷ðŠÿ??ü÷òƒÇeS·HázDãâ@¤® #÷—WÆp‹lmD[}kH®vtY#êñs)Ẽtäû{ >ÁÚêØé£ru.ø”™!?ÏÅÚÿCpV‚]v)ö¾€ÂNÛÂïþ ¦„À‡ÛgÛ¬ÐB¶î^?jjI ÒÑŒ @Å Ù<ŸÇÀó]»K¢ÓZLÂê}µ†:–ÿÂ)« º’EkÍÐøÄÀ4â'ZîÒT—å’ZBMf¼|$óûý7*æðdo5¢ç¼ÑývÆ @Cà æÝ"ñôkYp‚ÝÈÞug¶±§õC-FØA–oÁÎë?²²½6~KÌl=âNVÖǾե-“ܹoA#Â\)k û í£ydØÀqQÔÊRâs8´ËLX˜ZÒjf¹ºËÜFnNsµ5èÜf«·;Û/Ë« üª²MQ,›Š’ÏÄTáWal’™w‹ùžýq'"Òe Ð—Dúkkí¯xÆöÚ õBËŽ¯`Q]ë äÒOÌ9:ÅݤõqN_Ëe„€ÞŒ4ËNަGb·~]ÂsÜ€JxMo/ £.7IšZRð.¤aškß È¸X?4£þdi¾b­ÞÎfþ «RÁÇ÷Á‹ù ?U®µçi–´Ì#q`(Y÷›îM9­°¸í»—µ‰+¿Ù±;|¬a‡\0Øçx­ïäcÓúnõ×Q'³Ý§ò§½$‘­˾Ãmo*\¬1'.ÎaÝð»ìSï·¹›Þ¡‰_&ßî£-mƒk=¹?r'3´ïßÿQþ£93;+Ï _Sð3€†%–ø#~‹k®‚ØP·ç¤ÞN6w¯5ü‹‡3ÅíQ6¥ÍH;J¦õR…¾áz¦3t¥¨~=”Å#èoÎdàÅŒúu •:V ÿZ+Ê^^£Q&2,†më]ÏT<ܱkÉ]÷_žò~2¿l—ónß b«Úun0†ò9Yò[-m]N­Â%˜9‹[{]!F M[»$|¾Éï…mÓúìáóu±7襼 N>ëÆ-.-žïs‘°¬ ŽœNq ƒã,l#£€x6„±÷‘• ªM!dØœ»ŸQ¦Ö@nª€Åð+5Ïp‘Q))P¡–µŽnUµ®éïJ™£@¢c¶k@žlKÉns@LÖ /Ó-~µÓkÉìù«˜'ƒ˜Az9tÝ0Xa- èu âa"y*¬X‚Ò)6—×µW//‡åkʹëtßGV)À.jdUÌp½»›Ã{vKôÖ„#¦jL,+(SæŸ7 ÕyÏ m9 îYèuÊàбÅB¹;È•c›ò¤,ßÚÄDr-À#?ÌÓ…²ÿ¢Â“AG Äo¹(‡t;*K e$ÒEx>€ÊY-“í4M¢_ç⯽±”×ã6?,¾ÞÙÐõ×( Ã{ØŸ™š>¿†)ÆøQ‚ˆÚÌ}§y‘H#r¯Ãfõ¬ D-í 6ìÒ4«ÑkëHžo²žs‡¬1;Ì¢Ñ|—od»Pu ѬLÐC*yc¥¤j©_ {Šç‰^‘‚‡3¢.C Ø|2Ê k\P1Ì DÝ ä’ámUÍœ÷äÜAÑÙKÝK#ìcð‡H¥Ã=ñ°Ü•À[ªû„¾’&3WAáƒ9ÛìEê1hEçlûÍJW4ub¹ri￸3V’|‡øQ©¾`Î PÓfcá’çÑé¬×nr™V‚-?]ã7žŸþ1‚\âÞn¾t»íOˆ.î¸l±Ø‚w™„9õOTCÿ­˜Õ[-7ö/r‹.OQ*Ól—>.(7qÀÔ_m<5:мpFÔ“‰‡Ïeuý§3-LÜùûÍ=ó‡É~©Ù©N¿Ñ"$uo"ý®ª‰0æìÊøOó4Oã7¨ÔsvŒ>_;`›sª'ýé·òÓüuQ+>õ5W,È÷¡ÙÖ7·z>ajàeاlÖD ŠèãÌE¹#ç‰åQ¿.±2$:¹bÏ|­lÖµ’\Ô¦vŒ¦´#ç ¸BµÁËÛ¹ÒDfBWãú¨‘ý‹Ëùz7kq¶‚hÙîü¢¶²¡£ÍúåI£Õš=CGùÛšZ€4E¾/`w•Ÿ{…÷_æUÜ y—8ÃR’WvŽÌßá—xO ¯Ê HžG*ùFú:œ)¸"ÞœMõ`]}Ä5R¾¿ivÀ^ænÿe·iNž8¤§MGZÕm ÎGè‹G/Çúl>uA8‹Ûdè§p¦–HºÀ#Æù“~\¯²^*д @„$³·ù~šãÄá € ™u©¿n;ºKŸšñSÞírƒ×¾añ9WnÚF~Q{OáR¼`Û=g%N{âÝHéí†Ì?>§BÜŒÈíŸw³Á-YŠ&a? %‘8ǯ³8>ºÛ?›%¶t>MV¢ñô­bg‘ºŠ$‹Zöj%˜O^û§20œ*Ìï¯D#H™¸S¡˜¥vÖùW‰¾¥½8sg,²ÚC÷þ.äŠp¡ CCO zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.735787337 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2mirror2.dat.0000644016037001603700000012617313607166133035024 0ustar00hutter2hutter200000000000000BZh91AY&SY·â [ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà…¿*ñÛò%$H 0 “m"%)¤¥" PT§Û(/{tUªuÑÑë¢ó4z¯jÒ÷c€I{GZfΛLõg »]²ŽÌÛUB6ÈJJ]Üôò^íîï½m¬ zó»µnW£{Ñ;Ýî^ê÷zhw¾Ü/}Ë+›²w}sÞõÛ;†»ÞÞôîwƒ¯wwÞõ{·6·•´êµ¯]°Ï^Ï»Ñð+ãß}÷ßs[Û]š¦gC´»¾ÍÓÙÝ>Þ¤.·f×-µjîâÕà&é-9«‘›P¤Úû½ç¥[eÕ™m¢Î³ªÍè÷Ë{ï®Sê½òÁí‹Àç®÷xÞóî×Q÷r®Ù:tË»u·ÜÓ©ØWÌ®÷sÓ–µ¾ïž¶½³®w¼·¼9ëCD¡FóÜÐn3ža%P Ð ša4hÈ1É=4 &Ú0L4ÀLž„zL ¦@4 ´456§¡¡‰dИhÔÀ ’¥12˜= £#L˜ŒDÆ€Ðd F§©è2i„4bž¦ÒlMM¦„Éšh4 „d4Ѧ©ù10ÔÊ~Qši6£Â(óTÓ›LB` A%H ¦I´11 ¢y0ŒÓ&MOQê§éŒ‚ž‰êy£G¡ ÐF3&M¤ÃQèÕMéƒ%<z*må5OÓ&SÆ‚iµ0&i©&ÄÕ=ˆÊƒ*Q”õ4oSBlš5?CTÆAôž)úž”ÉšFQ 2hÍ&†S ‚z˜µM=M‰6ÒmM©©½Q´LÐhÑé† zFi2hhýM&4ÐE$ ™4LL˜M10 ©²`$ôOSô2h “SÌ”Í0ÒdÓM©„ÈÓ&Õ=ªOdi´¦Ôòf”ö†„Êzž§è$x‰âbmS`ž‚›F)²žRH‚  Fš5=CS0 ¦4ÂdÓ&€dÂdÅOÂ`FŒMLÈÔôÓ!“F†˜F§ i3Dð@È'¦„yM=ÐÔÆš44Õ>zÎIÇ?Ù8Ó˜{%,s»^ìpzü{÷éîülûI­SÜ*fÔг;FÈcE( BöÀ½BÇôMç\©•BªA›cnn 3¶Q„BAXO¨¿¦|úoÚñÝ»NkÊkÈ£°{¦À.)HØ™öÞÐ1°!°‚>C11 ¤„ÖVG}˜¤æt?í3®*c;öRÂÕer9ŽEnr5·+dàáÝ^¬¬ºŒƒoïŠó’n &ýŒ`°’_´U7†š³íµùãÖFáaþh|ßûh« ¹½Oò»LûÈåD¸T9Q×¥`½t ú¾‹ÊWm þ“îF*ŠO½/»U‰w•r˜¥–ɳEwÌê(h¶ë¤ îÙ%{õPf0¬WÈÈ_%*ó:ïÿ©[Ó~ÅL̽:©ƒ£ûê}®–µ\lO’¢ž¾ýGSˆâ1AïúÝë=g‚~7ï’oÓ‡¾àã±¼žÄË·àñý}¿¾‚s+»°o¨ùûq¿t¥ûk^¹f9;+‹¨m ™‡0Äé»¶ á•*çÀ‰ Á-‹´JQÌ©e”–Ys’”æõ¼ùèGÀ)ñK—/4ªGhÜ]Óê/Ë”ëQI#T¯5 "I0(yK-*’ªI$(¥*R™Åsë–‰QRª•IJ_)RT¥TU‹D°ú¤I.JPª©OR¯üxË—{I£ ‰¯{ï]7ÍUØ# U)W$I(,¡Ç!6P¢$Ð"zEíôD”Á**Ñ "¨(õp( €¡N!$F¦Z"“Ϩ9Ä{pÔ!q)¤‰>X õêfT³ÂJv“10#·hÃÿ’Œ*`e¤—6y¸@{âÈ¿ôï¤'J=¯kæÕ-É‹1E`€Ï°[4ðì\ƒðÏ…`†Jc ~çKÛ"™*–³†d2gfÉfÖ;VL£\L) ¡Öš#½+” @ãúÁ¯ݳ ;UzQ)° mÝðd ‡x¤&ØØš´K‚Ê?z§øÂÀç¥!óç,Ä¢'f¤jÔ³K’_ {¦A|qäŒQ |$’LÀ¾y þ¡Ö`1¤Ð`óØwojÈáý¬ƒtxL}¶€|7î?îɘU\ÛX T¶uc¡jsçªCu˜Ò¡‰- MQ(Y¹3ï<½/M\¯t…Ë ReœRTÞŠ@Ø"È àI+´`@&!CÌ;©z³å;—Únß ý¯òÙúa}§º‘n%ت!G’ï®Y›®PCä°<Ë͈H*Ÿ##¹`½ ’n_ÔåÜë8Øu®µœË93RIZÈC¤0°i†IµcB…'ˆ’C!ú‚O>êÆMØZ’U$B6ãxÿ¼4åŠåÈS¸!k‘Q±Rk(²^‚¢ PàVBpŒ%’>Ùºðg¥žî|Iõf#)IÆïžÄÊ`CDô“z8# N)„ϽŠ>º¥Âd¨¹¯Žž]>äÚRÇ*”}i…¹vSE6éŽa)?‘µ¨ä™Òa/æÂ·ýhC 0ÈiÊ!À)Ážð–M#6ž‰„¥æ“']BÄLâPÍ%Âõ¤r°¥ó9 ‰dƒ>¤>šRj]³Ôãò=„Ÿ–RKÚ¯.Mü•9I'癋™MT³.m%˜¸s+Ï€¸³xTŒjrh^ölµ’ŸGlEé&šDîPÂ¥(qÑ06B’,8#›76Æ\n:lL¢ðΦÛ3KÓ9*i Ú¶D´vòƒ°\ë×:õ$¹ LÐ×&Š^¸œHh$:®ÉÊ8K¢£“Âþ¡ô³§Ã«@þÁ€àÎA7ã,àXL3KLÔë›,ͬƑÕ)§b2¿Ÿ°ðØ%0’Ó1I¿ÊN>T“ Œ„a”4åÓŒ]=©IÂ%O(èÓ X/FãGÓ6vfD)¹Ñ8¡üaÅ#€)<üË) ¸Cl€bÇdȶ`a†a…g+”"ÁÃ;v=ó¹d6e2èaÆZ›û3XC!L3Óÿ0âÅg ¸ö À˜ Ò´Þ®8£‰¦TC>þFNÀ °HÄüq€ð  ¿AEqåÁ»=“ø«“mÞ̲5~-ßzgÛ§"ÛÒ)OÞ‘wxD¢o“cFû6uéÂËíTî_ÁÛ#Â5Lú’QI:53ÄÜfÐÒas9ŽE3³D™ cªsŽõä:—ŽÛǶjS»MZDI¢~†lÖJI6´´Ï% Ï<Ôx­©»%ÎZy³!ØûW+(âîY›sJqKÃçƒ÷‹ÀUÁç¹0ÇpH¿ƒI‡>ÀÉ… `ñÈIî€ëœ«Ê0,l‚Èa²*šBù¼ †¤àQeÄ>J§›ǯ ŒQ–ÏB].L†Ô½.FþÚgÙk9ô½6¹”îÏìjÌ.0Þ²{‘gÕ*Ý0G“ö-)¹;‚jG©5¼]µÕV:²bq,žÙ׿½°?#Ü=Ó§nK£Ìk^†ÑÅÃ2F¨åÌûckÉde¡¡– ‰H*|ÅK0MIÝNÚmFq®þFù ûд+3Œ -4+Yj—¢N (/ŸïÇz3 2EQ¤ß¡1@‰‚`“o–K<$ËwëËØÔY±Ïi?á?´Ï˜X‰, Y)Û–%Ò‡ðR/`KÛ½r¡ãO­,ð›âdA´2 ˜¥’ÍæjRéhḑ:i8ÐÔCHZ–ÇRö­¨ ×ó¾ R…s|†ú7GlÎ9¡Ù¡Ï9—‘?éŒKõžeé ‹]–Ò<#™|GÂo]Û£t »É4Þ±ùSzaÌ˽¹ž”?KÆû¿ŽAþî’kê™ÌIüÔÖ£auÊQt¦R(R…Š)ä%™Õ"C(¤ ŒD…sd«œ?ä2å0³ óÊÃØƒ0ö ‚”¸›‹,º/_=…–9SP··=b:¦½00 ’¦Jok=„¤üo[:ãåÏã2Y$û,l¥Ò̵ÝãŠý»Î„àĪ R©Huî!Ö…h¨,àôMî.^HΗ;89s4—°%‹™¥8‰gy6t½>á{Ž˜Á{/aje&ÈQ>¬ÄÚXØŸ¶nV„í„,Š„Â×('†1¤>£1ä4ŒÃCƒdrJ¬å2¨ Ž ¦~fÇÐÄ5 a̾ã‰sÀÌÕ) ƒ£f1M:¥a ˆìBØ'fÓí´†g>7$ˆè®s…€öš„Í6‘1´i›1B%>”þÓ˜W”õ‹,²?†'}0\í绘˜À–Ð%'ÐP’…*I#æ¼¥‚65~²ŠH¥¤”””‘!OÆ”%Í)ge3ÇÊaÀÀRòça.KS”`YÌÍÊo«ËØRÅLkú}ZE꼦ËM$/TíEÆí˜Vl“ååš)s\½{Ë:K:¹„ã.0ðrõÍÚR̉öá’Å)8iC<œ j`{›Ÿ¦^ˆ¼\ÀY;C$Ž^±¼D˜¨* H˜ø›ø€Hg1·k#9H s|Î4ÞUѦ˜ÚQµf Æä–$î¡êåÌ F1øåÐïYæ8YŽ©“•)‘1ŠueƒPÓ,Ë·˜ #»g~&c›B¨HâÒ #¶ ß»|ÐNS,`ÃØ³å"w{g&&>gŠ–¹KÕ&ÊÞ÷F£bYg(Ùfmª˜_Z›l÷ɾÌll,¹Œ—®R–—¬ÿ.í·KŸ„ÁÏ‘˿ɮSb2$]K`سPA¼yö€Äÿ)ê&&h' ˜N]{å%0¬²ÍÁ‰ OøœØT´ÖL/{ß14’÷E‰yɆD‹€œðFOÌç3𦠫0Ù•Jõ¬¦6¢ž‹‰$½‹HÈŸ½m7 ?<ü){ê˜Ø”=4²ÌÑdø’šiÂ!¸§,ŸJbc)•ã™Éˆ ‰¸$Ì\3 £íµ †—àf.ÌèÁf>ÛdT©¨¤6aä²f+“ÐN§Óh/˜:w—jàSQ‘Xçše¡C"‘#TÈ ‚cÓp&µs˜®d.],³S/Yr_.Jˆ²Tí'ª\~¹…íwI{?Ö`\ºd3 ÛJ“ë¬XRbmŠb”ÆÜSÚK„Äöæ¶m 㘘]l³(¦h²vtûÔÂs²ÅÄÉF;0 ,égq0&åS¢Ÿi&ÆÄ†²“c˜¼§Å*lU9)s‹Ÿ%žuÌ3’˜XDÂâfJÍŒ%ÌF€½IJ0/dÊK8UžÝ;W/SÌ…–\²Ÿ¡Mâ\ëp,aYXO¾XYr{)ræ,¦®RåË05w–‹”â%‹6¹…Ä¡„ÏŸEŸL&7‚¹út«/~ãä£Y2ØÆâ˽Rd0)rã\´½W¬÷L\˜{¹fšbYyf"¬²ÜÄÉ^É›3^˜˜×¦Îç#æ DÄü3Õ“5˜X%=ܧ/9³¾™GÅLkÙ K*1˜•6mƵ ¡fL;šÁÚ²)•,±cÊÈjf4³ Œ $ùò÷…0,’`tIH‹(•säD/Wl—°4òõDB‘1ÜçS8â CxÔѵNVI„f0$2ØÖ‘:†µ"ËÓ±RĈ?3ÃX= LÊrÍé…ÎςͽôÚ'E3íúI ™æLÜßš›Ñî¼k—àí—SÍ) ’’”¹)¨ýÖIÔ}ë(ÙÙãâì>B¡ßÆ4NŽP²šcøÏxl²òä*q“s–ñјç—<´çå"3ê$èæâÈujH½)©†˜N(¢|ùçf3J'å”òTC 0-9¦I¸ dãæQ®†É?Ë!bòÉ?@ÿeÎ…2MÎg\²°ë’5öP¤hQGFÝ’0²J{Ja|‡Ç0M"0ή\Ø&ú–f2JO™,³I$ç{d; hvìdÒ²Œäã&Q Æ&¥ûŸã6¹døŠ0¨iXùÌ»ž9{O8öîêZÄ2%@ôɶL ìÏ-BÔœ‘nAf0 ¹Hÿ¿Âû˜ånÒè[:U- I0BmÔÎ%éœK“¤¦V2; Óœî³V0µ¤ hÍÈÀ¡”t¬39ô8Ù4!¶C”™™ªÿ"Ñ 1“tø:6¨ÃUÍèøB°ì'r9ÓÀÌ>,ÀŽUëe§kß^ìTÀõy.uÓ~õw9޽9-a·fÚ8cFEÀïR°ðÕüÎè2ƒv”iÄóŽ@`°6„µÍM¨âÍB·LÍ1‡ã dúÞN%Þ‹1€d¢ÂÒ³fhh¶âCâ˾•¦¸Ã™¦e¨%ý.9’ÏZŒ©!ætÞ•€bRl5+,²É¤kIϺs‡'ØÔÝú&QZÈrŒ;!M^ÈqHN „Þ(’´˜†(`t3ƒv0Ì4IEJ$ÀkO…>Bä¼¢âx %).Œc#©gl:Ç6XË´! ¦:â»åØh«iˆ §šHüö B¡£ãˆ^š% …% C¨Í8g0Ú¹"Áz8!IÎ º˜Ò0{ÌQr5Z‚·Lž²O8ïÌ=Ò=ö˜¥ë7}Ø2þ[BüÎmþÿS‡ó… ;Œ¨¢Ës›R}Ü OMdÚ‡þÒ^éµÒN:^xýI§fdQKÁµ‹\¥r^+b•t# ,¨š Ú¤SÞ¼íáÌJÍs¸$áCÿQÓ—Ù¯’‰UDÁHéVÁ2ÚùiLÂ÷¾øÛ@ì7ã–›Ù/’It’‰°8Š$òÈC« k ôâ^¼œg,R²`ãWΑ´Ì±4‰Š‹€âÌ3ÌÉ=Ì2Ó¥‹¥Íùs‹™)he…òét½šBäø—9,rÉ®5IdÂ…*,d¥<Ü> è'/bCþæáÏŒP6™Xz dÌé`9~i˜û(x M™ïX¤™ÖZÓz9kBµ9Œ¥Åá± ¨f` Ò©>3Ò5kíÙ<ƒŒXÕ»·ý¦‰ê‹ÛÛê»·zÏ·Nõ>šÇºR÷^Î1›íº…y½8Öä“rÁƒ Ç¡ÓV¨[[¸Q™àL{Í3N{pó–ÊT4©ýåCðÂ&"kŒÑ= Óÿ@À›ñ ݼ3tºéÝs›0¥Ká²2À˜¡¬%lNbTå¦Y‘ ¸L™¬œòXNQhpÈní¥ŒÄpÈo ÌŸq´m)C¨w’L„žÓñ,A|9dÑdaÍkø:•ct“!áQ•ñé9FôáŸõÃ3¬ûRÜNÉ›)ýÍcY?dÕ½s¡eꚆàÛû©'ˆR\n?Rì7ŒÎYÚ-Ū†Ô‘*ª¯ )üp>‰úII÷Jž¢‰oi“9µªõ¡¹#tM,±1‚™Ãò? }W}ÆB6³í2¥zi'â¼ûs6‡5ÄïZY&zbÒÉçIõÝ^d;v'ŒüÏÚ–‹­k>—ù× Óx7ñÃ> ë©ñâµÈ~©£_4„õ/®]>7’|&Ò¼?#ºnë.OhÒœ;)·;„óíÍž2c¨r.qòŒ/ðRc=k3Í3ïmкF#Óe:ÈofƦ¼ù͵žӎd´LÛò3ìëý^à­öbɲÌwKÐÈ›5f¬fmÆ "”¨+ ‘©`~äÙÙn.±0¿sË´.ÝóX Ÿuã87Ϧßóç®vÏʾsJ`‰¨€où랢öiv;ƒa?AuÆcºŸµ¶¬ìÝÍ•ï\ 8Ÿ1½±9e4m™gÏséÓ=Zóð5K=â›ÊžÙæV:%?í¶¿ó»÷æXž;†oË“è:wˆ÷ /6§ãXë_ÕgBô ÓB½¯<õT ñ–=ç0ÀFÄ´ÃÐuE}=$‰Å q5'œv:ãÐÈöEæIu$ÊSõ£fp…â0%¤çŒâ—R¨.ƒ $²&ÄÉŸ<†È_ÝÜîŠК‘9fÜùUªA¡L]Éï [³y\³Žh»V÷/ÀëØ»J³)åó§D‡6Óh| òí;+ÖÛÓὂ˜ä–a'åw¿Õä¶áp!‡DVô[ˆÜ-ãû…èµqËܼˆ9u¨FnjVÞ¿#G÷~N…ÏNË!bz 19†'ÕPð—#¸? tì,1£m”˜KÓÃ\šB‘.P^.S´—5Îîd=wÓ&s©¡1$ÝËÇÃIƨѺ7½d5 †\‘¼i¿½¨6`÷€É©â${S!5²§O­Cê¦Dï d{$û$Ù›«ö޹KÑ0‡ àbƒyõ(oZälÂþ-m¶F©ë&a:wlœÏý¤n<SDžØòsˆòÈ7C±=£‚“Ýp=¢8¶FÀŠœ•Pkž¡P;g}l5ËÇ$̇$ø/öNµ®ï®Uæ‰ô¾‡§Ê½ÏN‡‡Â„Aä— zH ZÁU¨Q¥”\DÙ7 ²äÀ/¹F/y¤C¡4¡ä0‚ ¡ÓïF½Æ#Éy=*'ÐY{à&8y‡®kQ%á…8ÿ"{²È P~ò¾•Õ>ƒL( 3¡^;>  âM:”›v©‡“Á«¥6@’`¿†ô\œÙ„WDáj£m3ý«Í0ÄM™¬Ï:/Q8ùN*“.b–<÷":™ÀÁ“…Îßdà{AÛÓ#L¡èµ›Põš®ôHü[—s|9ˆ6Nb}¢à&d8‚Øì}˜†.Âr0/¯ï²ô#\k§°üÓûì/éÀ¦mɉF%“_P›êR%êB6… ©$wj½DX¥’æ…$É% ˜§&g¢>¼¢:yöH“”Õ“”BOŠwBY ãj†“x!L‚ íQ³a †vø™Â‚ùÈd8ñÏ ›aΰ„Ãd:·HuͻͰÕJÓVü×$Î! (Î逡Z®YI¤¬íéhÕ™¦Ò)“;ã“@{¸€¤_Æp®?b0 #TTE2ÓU°6õ†‚N.ÉÙÎ<5ð4ŠnÜnI›bÎàKW³¨>»©d†\¨#Ͳnža Ct§}‡øÞ¶®ÙƒÁžëƒxÓ:£© ê:S.Ùˆë§ÌdrÈÎ ´^BÒB’ä` xuƒpr¨$5I= håšæ6¨È7ٴ͹§¥Ÿ­û߉/0å)°)q6yšY —~nméC_ÐOGಽVñbNÙÜ3Ž«g›c>ØÛ™ÊrmŽö…÷>¡þÅ»þM&MèeŒgL…!OH¦¶d;õÀ ÂRyÇxnç,O¼Xÿ%Äòì¢uTÍÏI3ò¥¡d´,êo©PÌ`–’vÔ˜¨M LüFyøK‘ ±Å@“9„MC¶ ¦áòòqnmãFéÃŒÄå P!Pê ¢Øœf6M r£ìo¤èSi MìL±Û‚Úć©õÏÄA¢ÓPäyÍ&sN¦DQgE5_Kþ $°aj ”â´+Øë3.mÅûîÊi¾3T¿äîLᜫhÜ—+Ÿøún˜ñ¨}£ˆÔ™`N®äÿmâiÅÉ6æë`Õº©„ºIˆÎÏÙ< ¡ÓùÝ•AíC*V)°„+ÍŒ+â“ ÀYÁÜJN-Á¿pa ë {ô„$âCÇùá9]¿vè{gTÑ’µÈ¿Ë´èÀÁ6S3#ÊGdI±4à›/K Õž@¢M"$êz|° øŒ6Âà|# ô™D ƒ0&yI fXâa†LÉm…6¹GµrSÕOd‹K =!¤dXBd8F»¥gg«U¦Ù™ñ´'z¡Ç5Ÿ¬UipƒüPHóFöèLù9Ì…íPÁÖ É`‚â³'›Æ@‡£’ìäÉôÊz©‚x_ ¶ðf;ÒÐt©wCˆq.öà ÌÍðßggƒ¢0oŒ=G:ò:+áÎsÜÕ°ÙZÙé2Íñd(®HÖ’\7÷ö’q Û1å8ŸjÆì4žy¬†ˆÊ(*äb¢Ø&ržãUÅáMA=Õ›³¸‡²vGAÉ£H×B„d,r×Wv:ÿH÷‹éõ‰Õ~L&b‰öŸ|ž…æšÄLž©I‚R!é›cˆiÚæÒ±éÔ1 âÉPÞÊN`’aþ#8¬šà~ëP øA€öC«~pfNLó™C&@ÀìC¢Í?d¡°#×uX'ÅXÁC*µåP ¨£–}U)þ¼KôZ%§N«8¢[°yg™Áþס3Îò™Çz·Pë‡LÉ]õ¸v úyZUBñ H´ˆ.«Œt5bŒ>B|y&nu³BšfÉÝ7Çœ}©»²Dq§Ó9ô;sÒ–<“ª>™îÌ“eš19¹œ–˜[ytoDÿwVöm™N¥jÄúâ¦QæÌÑ•ãŽ=!ÈãŸBHÄš“¤E™BöNBîZÌ1DMæåŒqšEh ‰>Ó”~ÄI*\̉f9¾)Oa¦,æjß‘å:W2ãÞtÄçÝã¥\ûÚ³’r¯ft«Û´~‘Ñ=&0m8hþL8MŸ°ØLžs†mf<߸ÿ|l?ƒªL³\ZÖJÄÑ>zŽyý–ð"¨z¢±”ã ä`)à xIØt¡±& ÉÀ.¤É@\Oøù“Gˆð—ñwºù¯bØEÌ?£üºéªzySçNÚvÎt¹1¥&%ÇN±Ó¼ëÿ ? öe>>S°ZQ9Î%“”ž¥;4í§¦~wfCÃ)ŸYOšË^õŸÙñÝÊÂx9>‘- –™¥¥'v…4e7ßnžu6WÇyÔ7Y'Ý…¦ Ÿd÷#@sgLvGd{ƒÌ6öˆØœJÆd5óº4† ú&¨ç„ÛŽdü%Ÿ—ùõHØgBÛ6#uaXšCë›Â]9i¬M9ÅžÔíŠ7±FIc, èu³vŸ:x§¯|WÖ¬{¤(r9Ú­ØéKð6¦;ªæÇMŽ?: 1=ˆ#øë¦äTðo"Ö“c÷>ô7£¤š’ª(w)á…Y„´ ØêëE’fvÎ}góÖQ‰°À&ž:øò$f:Š)â¬RRûÊ'b”¥)J)E)(ŠJI)"””¤’QI Åj^È0Æ¿+Ìa÷ù.ÖrÌÑŠ@sÌ™0ÿõ‰ã»¢1C±LP4 g'6ÙÍ:9PÜ“PÄ÷ùRæ…ðÜßšHhC²á->R ×ûm3}nž{Ñ$mÐQEƒQ˜_¸X¬ML>J%B¢;jǠʯœ·­öT,.…¸Ú]ßÑìô¬§a,jÉÄÔ.e;M}ã÷- 93»“:Ì0ù®4“«oÌ0!ÀqâŸt ˜v*îÀØ0àÁ½pÂ@¤óÂuSªWT3SÔœ›ì¿é4I*cgÉëá—)/oo϶#ïÛxêÚ òzÅWù°Șœ0o¹½“†·-C;vÿƒP¥¯cÐmð–*öú¼+ï4‚Wò”ؼË'S˜z';ýØ ä9³œ4†Ç0WÕãÆÈ¾|ÊD› ˜xé„lj ªÈúO%ëE›u¥®œï^BC‘ '€rA^ÀÀxAüÓº8&òúóŸÖ^Ó“6lÓW6Ãby¥®'.yúe03[…wÉÀ0¼ìçg£s¬F6RøeOd··¶tÊÔƒÄf1¸“ $LnSÇ Q»®! .±ÕV-ÇzžÅ«ëñŸÔj  áÏ;1Ü{+Ò€æH;óëìq%Ç¿,#õúW B¸»§U#€Lv½DÔ\A0u'&ܼ ©‰5’…7Ç.½ñÅ' 'FeB^•6'Ì[¿mãßùl˜}"áHá ÅrdÊ!é°Ý¸‚dn[û¢d²DÊ' …,©L‡//p$£c@BLñ£š`z†ùZFd2±'W¶{Ïvo0òÌÝ¿ÄnXØ“‚9qØŽt'Ž{Æ“€oÌâP)HR’R”Q5ŠRJQ R)Hzu JB,¡JI)H¥"JPR’E– R!e 5c@à›Ð¾}ö†»ƒz÷Ò`øÍ£ýw2Òd8A¨”™0Õd2åг*ý&Mš k°ÌÃÿ Ffv ƒÖµšjÓhl30Öd08"»ä¹6<ö¹S´q%»r矬áŽuè^tw×. ß˜L:Y6C>e‘,ÛC4+Ñ0ó, ¨ÂQÖ€ñ/F_ÿã)XdÈW•rm»wÆÝ“rÝ8V/¯Æ˜¤7 @…™!™YŠŽüÞ!Cß7Ã`Å„ª<ã ›3q€~¸lÙ!9Ë’îD;6F xÐÁ—÷é"z¯6ìµ÷„$ùL8†»£€²H¤è”I·3‹ òËùPlŠ$ùÊHÛ” ˆ¹ÑIN£…$”’k‰´(MZ“—RBlêX¤’™L‚ÃA DmiDK!³²Ó¯ß²~7VÅ4“N¦ñ“HÈÀfÀˆ"¿“'o×.±†!½Í –˜èÃÂÔÜ\JÇ:óko¬ÅÌž¹i Ùù3 Ì'a8æÖ¢(¢ÓJÍ‘’R‰ÜîóÓ.“ƒP²&aèBEÙöÐùx@úaéõ{š1:îA[gÂ-Á[öÙ™¬\3ôÈ‚|§Þ³‹ª¢j« Ø¡ôSÊ69 šv.ð†6†÷~sä7X%ÒQbøÙô:™â””I0Ò\é«B÷ØPÁ–çû–èh~FhËSð3f7‚â6åÝN)#6e©’è1—'t¢R’OG;9¾:TýÛo6Ó>q<ñØzDtTË2ê§8S,Ô<ú™þ£p¾B’6ËáíòTP·*²,… ùÛp‡3s_Ùÿžû{›PÜ’º™I–|³ÈÚ”^嵸›£ïµ$õ¸À›©Ê8c;.^|·0M©’ H.…y†cvg ‡Z÷ì†É„)°>óÔ©ù‰†3¨óäL—¶xàÞdRù²}BâlæA™:ƒV:žùGžLi¯šñÒ0"ö䳺Ó9D7óy8Ó‡GUž:ÈsIS²Ùa x g‚U˜Wr¾œ)€üqA~«Ô¥Ÿb9@­Â{O+‡¥C=÷uÆ@—„ »A‹`Q{Kˆz€ú዇`Ôi¿’e5A” 7÷êסHĆ$Ó<°~ QqaCÅ•†Øß &P4ЬÂ*¶~JÒ'AdzÙ±è|Õ4&*ûZ­òª’“2¢±HÜYÅ·ÆÔ+DŠöœ+æ×Ì [E.@¾‘‘™Œ‰,…æZ¹â>:ÊÈ™´ÔôŽ©Î°˜ÛŠÏŒ›kæJóˆQqÀ¼4¸ù,.%sÑ? ÈÑDâT’õï–z4^²ÊQ¿,‹)J)HS È/‰b/J$¹,Y)²Ol¢^¢ò”))(Æ”K”FJ‰e {@ί\¤2‹—–2Tj¡ß¼g:îeé±üVåsλˆö0²òfYÞñÅA dÒ‚Úæ]•.4te rH\Ñ!¿Ã¦‡¤ONïòL‡õùWY·ÙbY¬l1¤£f¾*óé8­•µ[@•y7íPóÛ ¸ªCú6õ“àLØl„Î)?«æïcq²d'‘Úõ.·^!€»£ÑH/>:. lòƒ…ÿÒ»“QÃÃÉe´”¬Ž_yãÀGŒ/†/Ž~FVª)¥R9“Å@^AÈunš ‘H0ªîÜžA1쫊olÚÃ@fZÃÎÊmmÒf,r/~j[«a`S–b1)pÂóO<¹z\˜ÖK–d%–d){%M•L l…Êd,½¹rå2J2T½œLÒQœhÑsr½µ©MºÉG°po³=$É0¿Ïüü¹954ìÆnä6ôé=|ºm¼7´ûÅìe#cÎI$ï/8óPYüªFXóšS ãɤޛ"òs|VÇq¬¥Í:xñ¯§4ŸvDÏVfì;J £äéBs¿‡]ùrG‹9T‡®NDŒ5\ƒlT=œóµßã]¨Ð®Pöñe…¤ÌœS²:ÜZfÈz-A‚qž Æ&ÃÞËMáœyí›×j#`kÙ MÒ™ªt€£ÿ1>ò9ª÷V]}ŒÓÉ(Kçi5ƒZmMÉÕŸçÖ¿åO:÷ì”§¨d~êS†/^¹rå’Ì·Ã\À—¦irå1¯,¹cÌnñ¬a\¢˜=»4½ÄÄ½ÒøžN•:Êo³z–™M¸¥”MµèåŒÚž±Aö”NALò“§RM*‰‰NmG&¤Â¦ ¥Q.P¡˜Ü—³°.oË‘’¢zÉ`\Ý\ŠÉ;µ%êJJIè–,4J3’m«ÖSå¬f)›^—.IѨ—'b±r͙ƅb1¥"Ê¢‹)…M#{›âGØ|Ç=zgÚ÷tà:ßBó”8ߥl¸O®„@[§Áp©é[üþ)ìÀó0n‹ÀƒhÀ‚ÒaaF—|{2Ììrh.»gQ~ë…›ôå"UáÊĹp4ÞñáKälE²®‰¬Ì€óîGu­Ö†qðƒ ƒppâ\þîB3»ƒX­¿Û¥¥>“ÿç¡ÔöÚùl€îþ^õ:ŸÇŒìCRÝ=ö)6=Ó‡Y2Îu’lë‰êßòØÓVÒ&™QD¨ŽfT³ (ê†A²(®L)´cœ’%%Ì/–ÆÛgÕ=EÄhJ"oï.3CÀÿ­¸ƒQ«Æù\ ­b«'c# R\ün0gk7ðÛ:_äSÁ‘$f\ÌÏEŽA#ßßbVCȘ‹z'ÅæýbZÉHs\0:÷×$ø»IÂsíG^4 õZj¹Ú5«I4V¸+°uŒq)ñòh.Xà‚À¯æò­/EÖ´Jíô" ¼µWf~QJOæ!‚· ’<æ™dÜß!ß¹†Ñ7Y…·(ê¶ç—šWN{ýV¿ŒšñBˆƪØ;ª ŒÓ½Mü‡5©ú¾Ñ×Î6Dplõ^eŠFâÁ„túòGÚÒÈp‚¼?ÁÕfg#±‘Ü@Í6·Î¸þ³a–’sŸèês„¹÷T›JŸdΜDÖì÷2N2Èœ ¡ Ðý— ÇÑü¿󤙂žÏ— 7Áù8–æ 7ã0BD7&ÏÁy¸s~Y…Ãv¤i…snp|ÇÞäZ~a CÓNéòª{Ñß„ÌÄO,ƒ› ‚â\ ¯ (çï64ÕM™Ô†°r탷o4/ t\(Öøo lQÍvç˜nríS48æuÏÃBmíió›aæÔFtÈ™KB”KÚu²¶«Î\D‹ Q d‚—`´zÎCúnvˆ£ !ÑRš 0»?€±„0Öâø}ƽ1,ðs5Ò3iÛÒ=â\Ó8(ggŒÛÄi"VÃP`ÕÀÝ0{ú~ÕÆU6MŒ”…îÁrýK§°TÁÐn@µH—Mƒ¼Jž{DV’ ø°¢Æø‡'”ØÖÜ„ RWXš‹˜Û›1­=ÿ{éžv`;¦é2WWtè2Cò4›ÈÏK+ÝÈ^‰žäÆëT»O=pSÎz¨c×vB¿ÝÌ,ù²Øøu^x]ŽÍ<Lö7æaÊk² s§nn‚^õ%êM Àž ξP4 Áü ý h(w!ùÚî…®ò­®:Ô1gÕh}’w­~Pàþ²›Yð³Ë$×°×r¸gùÙŒ ©o~rGÎ=¹ÿã雱䟬öÇ€p†tö§¬6К#öQµAÚÁ±Iµ©Ðƒ7ãl?)ª73¡1ž\Û \ügZu¦ètÆÞu¦3­:Ó„:cퟜíÏûÇÜ9(ôGÖ,og0{ó£9#ü˜þf3Ž?IÞ‰ýOxwG°>AìO|øË?ÌŸlþLj|C…;ôˆ±ø<äÎ4úGt|cóœQÕžIìòt|sGä?Ðòްå îOòi¸þÇ^¡îÀìLG’vgè:±?‰„í(±þ >AÕŒÿcùŸ@Âxgdu'v§À<3ü›ÑóOý&YÚŸÐòOÐu§Pa?äHñÏ$þçe¸sÏht.©RÎÁ‰å1k²¾i¢¨è±gøJƒˆ‹¡¢ 5Þ”!þ™‚8¡1æ<éf ãGáù;ƒð†HEûK W"G1! 2ʰ‚WGÁ`„î6Y³m´¹|Še©8åøO±³ñ·ƒ²p†#xµCž*àØb@¬c›ÂC9ÍóGS#2må¬yPÏ»Jéíìv[ö|‡’Ÿé鸨_Ðk-X8jj„ªà ‡V ½«â¹lÀRm£¥ïçW ¤“£zÓßßæ&'@­èãòäÂ`ô³b¾Muî¸ùW ‘šºã˜G­«™.<^rÚQÓ{ËKi'ÖE0O `6WúlN5%›Áùà ÀÀc”‡‹ä7ƒ@•ô äb¬üÜ®ëUrÞl7îY‹2äKT–×'ŸòƒWð8 ÂŒW6jú(c‚e}‹bU™$àÉâà%MüߌY›8c‘NaNÄØ™B¨Úƒ"j Ûa´Xåù‹\º E{ª…V­\HX„±r0Ùˆ}ŒùÆAîjÿ[ºÇÖ]dÖÀ]Vi°‘ÃÍtº—m[à>¿ï¥ëî]ª+ÂÁQÑç¼¥!O.#hr4äv †*56¯ 6J€—V¢[ðL)ཹ†FŠ`EÞË©áM_i¦ìm傼^ÎïË'ò¨ %]Ì8‚qR¶ì¦Û‘ëöòW:°Ÿ½y\Q$¼åp½!<F8ýžeƆômèȬÀw»Ô­f°ëQšÖ\î9C8I“×.]ü !‘ÛýÓ÷Ïâ×:ý`Ç»Ìoµ×•Î.SèòñGöS“C ÉÁ‡ƒ²år>ܤy·ªlÓZ¯§˜J‡àØçMˆÏÑϹ隣{Õ¬½„íKZ2©µÜÈ÷_ÀÐZí+ÆìÎjK×”ׯU¹:GU0?ܨä:Hào”:Þ¦‚² ÔJ`SŠLj$)HRR’E)$‘HˆÚ½û«pßü“@ݰ­à;¬Ad@â]Àþd5÷¯P!3» „åɽL^ý°†ì»nƉÿS«èÒöJE3èÖééÐ©È˜ç¹æ1µÉÌ0†ÚÀ^ëN¬d÷ØšÔBóú21,ΧÃx/9õÉ_Š@Ì>ãýpð>­xþ²ˆÃ‰]¿…3$1µ— °)©aùP %LÚ_káFÀ’8†ATBW¤ýÌh|·Xgž5KÜZ|WýêRjóŒ\Äš\É‹ä<Žì½')·pH÷œÑ1"µÝËÓ§OßmÛðUçýALÃû­ž^ç«~Å@¤¼ý†IsŒ“¨‚ !hžÁÌü… O5l¯û|.‡Ý]b°b÷€—~evôh{›Tò ¤]ýwmÊØ ×^ývK’á[AÆ}4f¹[Y*Rà Ãt3Šqè4ÚÑøEd…ö¸€Qb½Ž©ùb›Ulm}à6<#ØWý Æë ƒ½ÜfXòÈ}ØçîY€µ/gô`œ•0­aö§ø8›Êh!È;¹~Q¹i ‹lXX¥”ü§ÛÞüÜePФº€ ¿³…C1vn… âéÌ&A -Ø(%÷-È6úþ°x&ÐD0„@‘àà `ˆ™b]«H§OÈ…¢;ó)Ñ%ÈÐ8˜Þ±!AÚÞÂë=øVl¯¾®UiˆEªüWÂ#ÝÚíBE°zÆE™ò´Ý/žo?@…žž£ì[–Ž‹yà_„Éd Ôj÷yËÀVõ=œYÇcÄäAÙÜegÛý GðªZÊCÆA˜¹>zÀ3ÿ¦WÑ®[ôƒåÖbZ½ š =ÙÁäGdØK̷œz¯›ƒW™9†½v½¿8¬Ë§œ”‚Mmõ/6g"å ä”ÆëAºžÇåݼ`m2É}tü­}T8(ð+X‹ƒÖ‘h¯ˆ,*]Û?z¿ÜÒ,x ê½l±åjƒû)¹K+•w ˜‡lþÖ~P¨Ô=wF” mƒÀrŸ!?À»0‡DbaC¸óÅ¡?2[^Ül2IH>²Yt•&ÅžÌf†°ÞßÑS+Âo^ì¶IØ\l7¹õCxkNw•…PµPÉÕYÃw2«6<qÊrT£ð‚Fk"íÛÙ(×¼>7)ÔnÛ)¹l_M½®f€b0ìïç3PËN`o‚çΜH3{ì µq®òõ/©%ÿ•$ªŠ=°Š€,TU€‚Ààx|ÓÍRZ—øüoÍ”]úæVQá4X:–Ø=KC>Y¯Î—´5j@¥¾Å¨úíë1·oø„ºI¥jp¸¶Ì_­crÚPGäúN 7]f«Y1¦ç …”ˆÞ¼ƒ¥ºLºÁ„¿{zh•}+ô÷lI'Å0k*ÃCxhrØ5yõÉzKçï¤>ÿá¦ÕÃÑÓe=#‘6Ùî½>—ZQ‘QWÛòçöõ¼}¦}QèÒ 3½Â¥à8žM•À€ÐmÛü¼ð«èÕ…Æú8[E6N1À0ž×…gI$Õ9=@EÔ€S"^êý!¾çßÛ'¶“¶„Oeëqø ¥ba>Þg6êÿ{ û²‚ Á°Wè·{¢)BTÿ§êîKîx)mh. ]È10w9µ¡ôNàÇnÎ1åEf}\fûø3Áõ鹞˜…YÞçQ'U¼$!Z¡ra¬‹f®‡ªcÓ 3_µÌÎ?ÿC%©Õc 71~k…3®@ôÔâ—ÅMÚÄêT\+ÇÆÿÇ.Ù)3pu¾‹¼!è(rø4VsxbššRØc¾Ñ~+ÊöN·rslìOƬ öš"Ê{Wr¨¼^lJìT<ÁEO¯0¨Ž|û”ßèLTTIûµ Ö¸ŠêŸw–…þºò TÍ…nÔÔÂÚ[ïß'¡\”…î9µ¡ßôà$ž`òfJE›"q²ÍäÊ{ÂgÉ›L¹Œµø.ã{ÓFþÜ­¸9WVõGå93ÍÂÍWcânM)ñ……‹ (°Þò{/0…  …ÅÇѸ\wßX›lÆòÈnsÔesîÇ+d8ÎÕÀ¥À^Ê’÷ì±ÔíÑ=ƒõÔ&íÄx̧ˆÚù’ù A°‰"#4$ŠmÍÎVÏ÷òÓ×d ¼y‰ 3:¿‚°iž%µ aö¨uà&ÁbcmàÅ~žó3’Ñzˆ{%ÿËæº'Ռϓ‚ +1¦)ûðÈ¢ÊcÚÅÉ]Ï_M…'90 î`„Ìàt©·£Î©%æÚÊö-‰Ø‘™QK*N–“,#Ù@RaVš,ɶ>r¸óœ^«p§&×u3P⸩M&(MÀ¯¶¬“Å9Q(¬÷ò*Fl]RYBnÐe^TfMúF„ƒ?_W¨Ò ½ª„S¤ñOp†µdÚZ'dêÿäÄMk HŒK)3¯i8B~ü†9P”í[;4ÛkÔDíb¹FUÞžÿ#Ö¦|!F¨¾Í¦ò³(Ÿâ„ÈÀÅÇŽ²|ÝÍô¿vNLN<½¿ƒÈb±Ž2Ÿi9jZwŒ…ÖçþlÄ€A–î‹ÒÌB•0OâDûän.‰5yÒÐê,d#ÙÒ]Ù˜ñÈÁÐô@T…)>b×M ˜]3`wlY“P¥r÷Y˜”q%¥ç¯/ë EÑá8ŸbÊÿH+Ù€¼éèk©œùïqª,>¨ëÛÆ›ÙÞÔfÊã”аkWD,Á¦.†šh(d ({¢Û•I)/Mýu‚í̇A½žÁÀÓa2þ­Ž›a&0$hxþâÊ÷ãúõ\íÙÝ!nêâˆc@)E£N‹×#@–z8“RÚÞÊHi‡ S ßÚƒ¿¶jÛ/²4&P2¾;¡Ùt#jeË‘ö{ËÛC"Hg±Óÿp£Íï0_Cß=wÔè°Ã\°?OÓâÀ¶PÕù_q6Œô¤J®L…Ršž¢`ßÓåz ¸Ô´2 ×îp5ñáõ­FªBBÔfaý½ÇÏë WFÏï ©å5±%Y<.û›Ò´O—,ꣶÏA›ºÆ–ÍüÓïà¾)‚B›ã4ÞÅ6m®j➉1ƒO–ãûú™@ðæá7ï…Ž‹/%[ÔønÇ Ho¹9¯ˆº-jT—ã¸Þpaø6M½ù¿S$„àD{†bÏ•1ˆBÅ`ƒ¨·A5Þþï›ÝÒñù7[Œg|ùð¼UÓÅH‚™|Aµwz¶-.G·1(`&f¡UÙ}ÇxQflhj·I6L•yO ä84hVÉVP *‰Ÿöø·b>ò™ì •ÑïJ\d¨‰]Ì?×Ã%Šúê bÛ8uf΢$,\NHÁ£Uô°ñ!?=ŽèÂ^äl ¦É^.ª_wÃïr|qò³™ÁDŒÍÚvëÝ&([/÷Gb¯<À¬Âû½ƒÚ…? …/ã"¥Z[oAjÙq;Ôòƒ[Õt ã¢étS­´Äôžqæhxñt¯»&~I$ß?ÉLvœbUFfùAœæ„mÄ+™*É/K ~gP¾‘BC¨>L˜ßmàŒ]\<ßÙ¢Õ×÷ç6 #^4 ‰Þ§Rû]=(™¬Ô(ï÷ÄÜ lû™f›YõÞiIãmìƒl›Â))>{]ï¶Ê«†CBsN‰x:tr<»"˜«ºH¿Šo[*¶&†¯šb ùXÑ^4„q}cxèsTõ]¢ù”`g«D“;Q×Òü]®%J×/#™8"X``ꌒ´ÞÅ<±*šž…ý¼ü?!üZ3M0]cKm%ó}I3£ w°ºˆhuX)ª{ÿéS”º«Ùí^åõlÐU‚Ï”¿¯oíUogpž&&Øø÷#;Û:Õ{±~Ó t\Ž5—ãwø”áêZÒN?àYÃ])…ÇB^–+ nÊÈ;v¸q{líM^ÔÂýk‡ú¬ºC=UÒê¤>\^[¾säÇÜ,:è) ØT°½8Ííþ³â5jN9¡j §Ðzkçd:€u,‚åÆÒÉ¡ªÁ‚È ÇÜ4B¾Ërz/E9–AÖÒT +\žD/>¨Oq{@Õ±áÀO‚p0Ÿ…¿3 ‡ò¿Kfm/?töü«<9ÇSë( ‚äïË/ב‰!pGå_^¢|Ÿ÷·(²Uj?)‚5^E ¾wŸ±Ç/øœ)ÍWêh! àØÄÞVöÐÈ}±vÈ¥u§l.•uñ8s¼AL)ÍÈJ+Õ×Ðé\!aJ^ÍI¿†ZG0™}LA÷Êl/&òZ#”´ïˆœ´T%gLIé.©‰Ú¹ôŸÕMÐ6ÖŽÌYW1ãšþ0\p›Ið}°· vOlsâ0+½áMK `Wžs¦&cDörÇȵ•AÐÉ®¿£äýšæt ªùûw¸¶o"’Ñ:ÿš‹žK¢÷œ¨™—âZo`4oRÊ3¬æò£å*®M©§FàKšÍzÉšž|ìÔôÏrþiM+ã’'Ï@Èl¢ahÁ"Š"•L)Ž 'Ê4³×ÅÖ¤näQeTP-¼_’½šÙdj¸‘¹e g2ý¸$ؼ¿þMúuKžHÿÐP¹fˆ;ãi€lAåLŽŽ@jª/…fvà#9–•ÖÙ¿[/z•Ò¬«@€€¡ ©‡´*®/ ¥c£ŠÉû*MÄøáפ©å±Œ^Öª u{ÿ;(íwu]ž|ú뼋ñl¼`@_Þ|®p[6ò²Õ …&V¤0¬ÁײR²'ŒÉG•¹Pöf9ó·SŽòØ“Û!•ĆЄ8ìâ´×—lî653¾ì$LÜÈýŒÀ~£ëÛsž6¾•ØU´:˜Cá€h 7¬Í©qLÀCpž/ÓC«ö$âÚBÈ`“ Ÿ®ÖB÷··¦yãÓ=ãó?›õ…urÎ.]|6P¨:+pïû8?;Ѷ[5u{¥Å܆Tv¼µkµ”{\µÄ¼àaÈ ‘ÿ«¼“ø¼?÷¬ßœìË„ãN÷ãîšF{Q$þ¤ õX?9®Q"”€¥ ¥ (¥$”R”¥"”¥"RŠR”K)R”(¡OÜmÏŽ6„ÎÏé³&C•qAèµ&õÎöHÄý@ínˆÀ®]¸ÙNì@Xõ‰( ddÓäç^Ç’å?w‘Éá Í«aUá}ÉeA•¹e\—fÅÁs8ƒ€޲ ïøÀé§¡_¦”µäz*49LÏWãk—µ‹E1_º¦`®¬MPpoEKïŠx6ñ˜ÞÿÜÞ¸ˆ ÌuÿJ³ ýmáò\_@Ñ.¹Ë §ØhúûS-¼3ˆ¾”RŸrônÜœ¤îvdúþ cð*ºRòçˆ:–rí'0ÓêGŸ1SAÁ{L…g:¨ Ô9¨#âNO  ôiš•âÌßö %~œ9ÿ——™ø L+É»Œ¹Eôj­lÐYÒ\Ì~Ãjd›ÅýúÝ0åÔa<#Ê1t²7𦟪uš¯ƒæyZÿ„ÄY!k1£!ä†/2¦ôZ„Ù¦‡ôotiÈ¿°£ôpY²õÚ´Y¡ÎÔ&Äz“*h÷ï(+8Æf,j½XãèR-„Ÿ’%áÐ×u‰Ä9' ñù Ä`0CbHÁ(ø<ÓNƒõNüŽ|д’N©Hz™£P‚ˆUi©¸vÐè‘Gà:šœ¹Æ¥´útâ²:ÇÀ<†N7£L̈:ö–a3A¥‰ùò¶Z‡u²°ÿFT R3(s…>­!Çí©U€?âìLZwrNó#ÑΚÖë‹·›¾Ÿ¾'²`)â!r- 7x?úc®š’›´ ^ÂÝ«}¶]¿É¦ŒiÅš¥Èg|T"2"¯*Œà¼çNô)7ÅÑ™ÌÒ”Ÿ7&L•/fî…ÀÆ ä€Ôl?Ò¹—ÒpÀâ(S…˜ï‘¥Ÿ ñ‡<…”‘ Ù²8b5g0µœÃðq>óQr˜jœ#¡t϶áº'<òï~öuÛ0»GXíSÉ~·ñ›D@ãÁ÷ž3Y AèÐóg‹Én:¦¤[qWÉb\”/Çœ¯”£ð|Ř" ¢„‡!ˆb±Ÿ20¸ãÌܙ¸Q1ô½Ò¼SË9j1ØxI _K93'üTO)([NÙ(@—¢ÀlHSVE#`yÊi b ñè-‚’!Ι;‘$Qe;åÐŒ OX¬1Åøë'4®:æìª"‹AFOŸä`¼çÚvõË5Jql 3ZÕ¼6îܟͽ¸Æ­¬o­[|k›ã)y/àŽtŽ1ÇdæRT0DIŒ8f ZYv-l” ×Ù¯Wζ̷\Ò UÕ«Žd†3Â'‚è¢äúëûV ÎWÅéòõ ~÷О–ؘ'2ù¯êËKÄ™ÅÌÑgS ºX~lĉ,ÇEÕ^ú¡õ@Ý`¨6’ƨœô4nMÃü  Ü†±€Ù©1B2ûÁ^7,ö’fÙq& ¶.HãìŽAè«Jjà¶GÇHj°Äz2Š¡°àçZSï ‰í’”€µÒœõš€4J`ŽØº%—mÞê®”ñe·¤Ÿ4e Ì`ÈÇ´ äßîtýeÇïùá ¨êH 8– ¤Rf9U†ŸwŸL¶½ÆWYv½_lU¸cšx^\|ž nPž³ÔPe%uêÅÎúj6ú?þu-Âf´ééN*èÙ6ÇîqGÄ\±£JK)IÁO¦dÃþáÌ}¼òy{övÃËM)¾l˜ò5%f*y$Ðy*`<€@‡ Á«!·fU×åjfý‚¯ñ¿£VÀhük×<”]E<¿l–\„Á+àÅ"× ,ãC 0^¡²LÇð°³Ìé›¶…ab ³Ú5­²¤ë—4&GônTÒ)îi:doë“Åÿ=Âü~‡Òíþ/:I¸” ÑC_<"Áèý[èy·¤]Ûùgï馼ß%¡°§ÐÕ,ž“êû8œ 2d\·"a’Ã7§Å^©¸òÊ¿m—w£n 4“˜¶æüoNƒ+bãš6KÐ}Zš,¾¸º-/#¹þg?Ÿ2üÓ©,¿Ò´.]í¸„RŒl;„Hâàê@›²½ýJ΃C•’/9i|Ÿïäõ¬OÊNÂd]UKt•Ï‘»¥ô­£è Îטí %k”ƒPåüû­NÂ|ëCµ;'ô›‚G½m#•^ôÉc‚‰Ã2¥’O‰Û^Còr ª WE%s øa‚}XËòà'%p_\'¢Rúojx6¥`ŽÊšIMÙ¨M_8sˆ'ñcÀ‰zr}ÀnÄÚK2òᡪ‹h@‹ŸE-ìE¦©wä6oK-aØ?^Þ}ѧÎT ŽÊ‹†*è¾°§xðiø·ø·|ûÙ(‚òdÁ Ñ‚®X/‹Ó¥nYÚ^{'ØÜ|$òN÷ow)¢í`4=ÿUžË’¼ò¹’¤†ÙPûÜ"lPvm…Î/?ÜO™Zñ›yWˆz} çØdÅjh°iµ¼•úß¹ßå'b&±€owÊ—‚v‡Ž¼#ôbbv-!¾,gp¿Ÿ¯ìEã’KŠ,H4 VÅÈ-ºY\YžßÔ ÌCW-—;£zû֞˚!2X´åk?…ÃM ò0ì…I (¾:S Àœ4-£”oìa‚D‡ëmy+ƒ'â÷¬š;–).#T]…½å€ÈЇ;Éо’qJ|•|ìü,“ÌŽ þk”Þì£ÿóº×ìVd¾`=•€rÑ@9@1&ðæ{7>Æá€öX–ŒUx'¢£Áxˆ72¹ŠÃ‘B˜,]ØÕõ £o?ài =öÖtÆäLêSM¾¼CšéûY¬F\uöþ¢ú^BíLÉ™0Tžòµ¨?|?GR¯“xVîõñasÒ«Š›nÂ’ôÿ¿v=ϳZÝù3*w¢ŒÑÉ«Â÷ßµW‰áXî ‡ÂÛÚÇåSé=UˆÓžd £n ^Àwæf Z`å\S û›³¨\‡á׿ª¿ìæúNçšpr²wSŠ¿åv<¡yèI£ööŸÕøv;”$Ä@™ÞV¯OMÇñ\+£²ŒÂ‡¦ê¾D˜²}=¦ ÀAûŸ"ò<™2 RÇÙ6E2s;¤P{ƒ.J—{çéækÈÎFä'ª‰÷ ð²¥øÇËôJFÏ⌗Õ]+sfZ§ªøY‹W¨owÏv¥V4‹ºcŒx8nĹó@ §h~kpÚnn¨q~ Q>-™ÔÚŸd¬)—+Шڗ‘Žõ‘DÀZ"ß¼ Ç”…ü³C›Eb:k^§vä-=¼ÕV`ЙÁüM€“Û»ÓC ¹þf篬" béI+Zh'áØ+{@~¹u8¯ë½C³Æï§RxCY¿Þ ê‚&¸û[VùÓøwWR.ÿÍ|mUôòŒ¨êdE&F,`¶ Ç­jäñPo†«*1%ů[eNæ,˜,çÝJv•\‰:KÕjðF»ôÇN÷n\ÜDu‡Šš¾>/‡Æ »}¡÷­Êñ®eyk Î\™‚+ATgßÙÐÛúÍ¥iõûïÚA¡ªgEë˜,®Òð\ÌΫUÅs ;úLÙðQàÀ)[{3AÌA_²™G âtoõxâ'B‚®iˆûIßË5Ü5x¤虥˜3é(2!«Û§a2ª,¾Ãݧyˆ7Ñøs`Q¨eB$Г¾¿—•¶F<žxN<üíŠQþÔîÑ@çÎpxø–‹}RÿZq[XG´2ö¡áÙ>81ºÉ6&ý#é8Ç2ϬsO–Él¦Öm3­Jš´êæTõ$>ã¯qæL2O kˆkNsP™0õò¤˜Þ9f9 Õ5¦…µœ;ú¥3¢qÁ1˜hùí;†2ù„ìªÆšQ˜'³Yƒ™4Kø ÏJ1ao Râã`”XQE>‚âãòË YbÅ}©Ÿ— (£ ¢Ãs,X¢Š(´±bŠ/ž¸¸äúΆó\” J ÈQ-G/F2…|¯qaÞÐÑPõÊ#BíìjT9£\eQ¸Cf\zÚ%ÉEM,°é.–6ű¢Ó6¤Úîlgð±ÀB,”8‰bn2ƒ.&×Bô£ÒÐÕ(¨Qä£Ä¢q”Fò¬X¢Š((ƒ—P<éFšˆ8jûDºŒ%µ>meF•·%†Ò ä¨š ®Â÷¢°ð¿ñ»¦uä¾4>S @4e äÐk篫~8L ûï¯ÍN-¢…Яóø@A¹òfaE‘ ü”Ã÷k Bàÿ矅¤þ—lÄ^zžÆ^†͹4)Aaê€ñZCf¤ëTRëË,o‹ãêÿÆG)æ5Æè«¤ÿ$‘‹××íþŽ„ÔWqEé+ö¹XÙêÍY&=ÐÜÍâ¨)¢„ÆæÔó2ùà¡B¥½dÜ60FîK^³dt°]lî†ÿÏ~”“A<<õ(•åó³CÁè3~ 7?ö«OËoÃO†ÐŸ„yäóLÚB}[wR 9ÊM@Ôäù^Ùè²§A›yÐç‹Bì;†‡q+z}y'> ÞKAÅÔmîðÆ0§¡Èz¦!ß®P÷ò¼˜£¯gݧ3³ÒlÐS°ß/¢ûßÄm…·ü™n"ÔJÁ®¦òò]ŸÌ—üd Т”À¾úZ wš_å›;ï_Ìn£4úZ¬õûÜ\ çÇ/p¬%/§}{‰&à*‹h²é(3d38[º™Má6vUÚå~ÿ)y.Ó:0ûš“=÷‰Êܰ؞¶%€2房Kq6Šàdwv ÕbŽF½TÓš»D³ÊĤ;‚‡è125®#’àËbÈ8ˆ(¯ãàœVî1ˆ”ÿ5çW|¨ï’V…læyƒ=`ó{cAïúw$n<©‡ŠpŒ‹ÐFD sÝ{ѺF“šWï†yÄ3’$» ˜?‡=ôN‹ G+÷(1׺„“ |ÆëHô’̨9åãÄÙ/Œ{ £œ†6¤0X3Ì Ý–ƒí|šO§‚ñŽ!ü2“8|ü»`JY]„¾àIçš=±æ^¡U_« i¾ôܙ䗦£w¶í›K±Ú;ˆ#ÍàÎ[‡ƒõØœñTŽF[šq «=ñc'îýÞÔœ]éÜ8…øY(%ì¾² ©èÔýökJ¡Ôȸ²@r"ww ²¿q¶ŒsîSš§ËCçA¾|‚Ód?x]ç æ“ÂBWeO)š!fŽ.]èúãEç\ÒÜysŸêÚ'íGSô£ÎR2í`t‡È¸ –¤!á%Ãr£Eú_ØÝú½6¤¹˜ Æ4sÄÔ(êþÁÀ pf ]Ôw.@¦²9%PlyÌ|ÁjÊNˆžœ…Õ9kkO+GFwBÝ(tð¸ HuuÅŽFusÌOÞ35¹¿¼€2‡`s63ð$£‹)‡#}Çâ~Ÿ"º|'Nä!½“#Iè! yYØj¸%d¤K"Vü˜a_³YY® xWv\ödüÆì²U¼Q€”uñ}OiqÚÖÞ„ÑV•9g«c`·;Ž¥D×6)> X?'åèÎ,ÐZ¦–"\%ìƒÌÂÆ,ŒYÓ„íÈ׌¦Ôö k‚g£é_CEƒd ¨*ÿzÑÐa¹ÜfËäÔLeÁªÝŠÀiE®áòÏ Âr/À¨(‰Á±VS’xÏdn-AB/‰ý~ãv° )Áªä—KØ7&8b\˜ŠJØ‚´tÊ’s©2o-Ú¾kÃ4k!ÏåKžOìß‚åPÞmj)'q Üâ¦A$Ro‹õJο3d: Ô4)‚wu‡þáÖCøMN`½JÌÙÙWÒÓ+Q!Áü`k3Q‚„]¹ÇÌïoí/e˜u=c¹§[} ~ ª Àö7‚‘40Øä9âÿô: éjBØWœj>ÜŸ[iC) Ó[ë¾{FaÛ´ö6Gýô¯PõûÔU#ÆRÿTO™E³ã/}±ÏHq,TŠ-e…œp[åC 䫊£\ 51™¡¤¥f²TWG3IFkÚâ'ôß§Eóø~uûª3ŒcgÞ.N”x’‘L ab6šnXÍ|C@niöõ Áw_Tú (!ã5°‡é‡aðÞ®tµiÿ"o–EجûþI»¾æB½Äé}ƒ²­¥ª]—¢­sîÔX·g1¸.¡®2£Q2I0å3[¹V²ìŸ/ÓÅÏ$Ñk"4@Õ™¥ǚ“oQmA‡Ó)™(ž±ÛäPqàl™¼"vPE Uÿ=äšJ6*wCæè “Ô µ¹_` R&+;ò{õ¬bwØ€ë¸t4!Fq¿€ÁKÃW8Ínê:-Ìijyn©ê\Ã[ ³ø÷¿­ù×8ó«øNÈpè{tˆ%ƒ*N3N·?1So4rÄìÖ…šÙ:̶cõØ&ùÜY®;\§úå+›!ÕÌM¿6cîüo†3$Ð?¯i"9_òÁ©C1gÞÞxaJh,»ìam ú´xž ¼ãûÊîd홣I`ð};Á$T4NóÙ¨•™‘ºó„¢±Æ@=Ï©ŠÏ’nêòu…j—ú‡`rT]"îâi4Õâx/NϬt+ ‡d`=ý]kØÒ-Õó6SÿO(öp‹üìSÊycü™ 50NÉ 'áéjÐr}v.L> Ö5¿7ÈeyÏ=5ážØϱÒ{ÒT^É¡¶M¶Ajw°s$ûžHl£M³Ù^Ç ¡Pà+€Â¥`ÑÈv—JePH(1üíøäE›§°³E'TÁj±´’)¡ÛR- &‹C0iòó;úÜUÓv,˜¨á|RE+Áò|0ñx_i>ô二²Úöî2ÏJØ»—H¬…tÛU“Ñðÿz¦sm¹à*˜¶‰ítteRGçå™ÎF$ö€‚ì¿Ó$xYš³4¶ÝÁùMÏZv+­{(‡þÀ(”[Ïä7×-cwª7ýX• ¡¨µ8)³Â¯ömÖó€øp|¢™ö{‹Æ¹Wce»—¿¦býr…Œ¸¯ä{¾B×-М” úP¬MëˆVÍ8hmRW™}ÇÆP=Ù’rÝ?QjWd7ݰ©ŸH½©Þºu˦ê™í½únŠ>ª£­³L¬?††‚Ÿ–õ„ÕJÏȹŽ‹gÐá}cTJëY!SYY.€²{™ Ê~‹ï·9yÑÞíäÝUŽÓm?7C| Jejµìe@q‡‘ˆeêd)oÂ&ÄnÍÊ:¥‘XÖr»S…\ )Ï¿P†ŽBQ˜Qtä½êý”ÒõÔu¤3;5°ÒÂèÂF˜8 e•'Y1…UÔRkG”” 8Óiš§QC…e…ÇÔ‰M½‘rE¬ÅfH.×oO£È=ݯœðà ¼`îÃ,¾ÑþV¸Å‰5ЇÝÆÀ,LÏæs޹@š;!_“ŠË~õ‚¡¸”¸.7ê÷æù·…*žÄÛÓ{TÃW¼æ‹íŸÄ‡ÜéΩC@ŽE…ãÉà¯nÔÓž  Â/QhüÜ?cüEc|¸Mñg¤¤°©¶ þ`š£T&4³ž,G%sqeÔÎÕhXö Ù“zo£eëo÷äê¿ \\1ƒ„æÀºÊ{d¶r7ËM\½c…¤åËÐßiÿ‡ªé¿Í~RUTn…AxìP:–/&ªíg³Ò¶™¬­07OGSgk?oDï1mˆù(ŸnLÞìß…T˜²C9/È-‡¬ª„AÛðÈU¸lžLÜÏR?“ûÆEqpY_ÒP{ƒNÉ)ƒFŸ±¢ÏÓO_”©Ž°y•…Ÿò3Ì¿8IÜ9ºm°x±±Õëuç«MI ˔ĖŠ"7º’·0{%ý IcIç6dù{‡Nè·!3ȵde0»:Š¿ª8O«íÕ‡;ŠC¶%ûd`Ewt58§ùÝìãˆmއ©ª®0ý_Ï#Ýý r……–4ƒò¶°aï{`à)öÚ“ºF7Dÿ6H‹·êA²!éÓ!Uy¸~ç~Î.–o7œø1ßZÖ©ÁÞ®EíG Ã÷&³xüÃH}ð}€tíªTƒ÷-˜7} >¼¨D„rä‰~[tç»ãþï©3¯àžîiö“9ºG3Y&îa¶«”½ÆÔ-JO¼DóL£øCƒ{²Ë>FøýÕ)#’ߦçéç|=¡I39Þ¦¥8 ª£¯BÁÎQSÈÁñ©‘}‘Mª¡c´4#å4PŒ A<ÂÞUÎ ™ÙWÄsýŸ<Úá>¤¡9M ëvÓ{xå7Û£”ߪê²>J<<¿6OûvÛ½qÄËŒª©-ø0 9‡\(ÅvÈæ=® 4DØv#ë§¶'#ßA–ûYŠ;!œëú»uŠY¡ye×Ó[àÑéôÖ¢fsC º§UØôtÅ·XÁ!ˆ>ª(UÄ<§–,mMw·(™`°Ä¨û—[ T\›º‹N ?˜Š‡¼½ëTÔãÓxht†Æ·ÕîV5¥l:)(r+eØoÔBÞk±Ñ÷ˆ£X=ÙÒ»„WéˆøÖoÅŒª‹¸Ic™.Æ¿F‚§t̽kr ˆäKwGYxz)„ÌSˆ†¬,št^$¬ÆøéÚØ›Ë+Cz¹ýçÒÁ³M™¨5'¤e;·Äÿ3‡îÀõítåNV«²5uKÆöZñŽêÛËŒw Ò‘–bI'ñEØ”߸L-uëŽMî%ØÇÞz?í’¾ ¸'ÙM"q;˜+'Ù2ý³û"/½¯Dí}ä·S‚ZÏC°þ<·«z÷n!€}Wôc½8³dí„6$ ;Çî’µ$‘ï›*Éz‰ë”™E"Ë,”’E(¥,¤Y()R„¡ED=Ò ÙTq?ÂßÜ. tøîP~êNöEó1ˆÔ¹ 2à[–ÐËñÈ`@²Î˜5Õ·.~'7Iª^v!êbwgîPÍ»ÍÙ›•"w×÷OÝè 5¥؈vD‚38;Ühj’ï ¢à§=—Å1&q£ž f ÞkKÙ‚”6”„„ÇvÎçûòq]»1‡Öî¹i&àP;CU„`¿[†ßòšÃ¼Ø½±`ZRgÌó hMé¥ÁÚC6\…Í%dy-»]¯ Áì-Ãöš"Ž¡¿ Â¶7ñg/ÚÜÚn¼j°»ÅŠÞ˜†èíºŠ-c“dìÖůOšª§çÊp𺲥˅¬u¼ÚÞN{uvÅŸ’\ʢƪaWPO„kµH=õžëñ@Úܦ‡=Ñ#½¼Í—1ÆYÒ'……ùî·L]ó©ï(¢Ák8%P}V:±î årj2h>Žá˜@h’žî,ʾ ”ÇÎU¸–ª‚KZÈžü]餲 yW2 †3SÊÕh°\ݪ …—Añº-_·fû=æ”ÛήhæÛõfêl´{ª6Ó£0úRÆÃQJ¹ÄŽ&m˜,,¤¶• 5¤3®€ÉYNs`XæÜåØÀz:½ÆFÌ6÷cÕè‘&œE°`ÔgÃJ¤¯J Ê…K`:TŸ5‡`ŠìÈq'FIÜÀ4ÅþDÂÁöÎnâ‚wï@ûЬÁ ·?§Ö¢@e(/a³èlÁ·=G=ÙÔ Š°õÇfc‰ž[XfÀñÞ’yï¾Ø´×2èÒNÉË[5RÙû bì4Ñx…¨ûè®®Ä(dÛšcÄìçâH]€Jt,›¯ùöäh®³ ŠaCrë`VÉÃyM©e&"ÿ /Gš† 6’™MÇ…ì':EÃ8‹„Ÿmäø5k@­ô¹`Gdð’¿âƒi†i5t¬B3¼|žg›Xßä¨)ÛevÝ¿qªêà¸ÜåQ´¯ù¤ûBåªWÊ?7ÒÆï™ÔdÈYLNE^sÝB°L¶/lÓ¯×ùhPÖš¼ynICúLˆ33¦Ø @žOBwAnµòøÌLš3Q yš-wú2‚t:úRý¸IP `‹r¤+m¥À—É|[{³0W>Ž_„[‚Ç×=p„t‰·ÄÖKA^MÓ3]†=‰wC ©ŽèA;2Ø ÀV#þm‘hƒ«öµ Uºd_/°ÔÖ«}É“Ñ2kʼª1%y@Q‹ó[UPRi'q7ó8|çVDÑëòÕí¤µÖ*•*$˜wæ75Ð8ߨ³]ØžÁïðŠ=:‡ê6²ÄlEÅß–,#ñ,P}‚ˆ±C6Qb„íŠ%Š (L’‰bˆë X påÉ/,&ðeb…Š#,¢,PË(±Be”KP™EK‹ Œ£Új{MâþWšôyß#vº?©câùKéìD]ùêò\”VެüÙÖn'Ã=IZÇÔ xä·#Lá;NÍ©Þû‚IOتˆ¯ ò[ËAcBܲÙ=øP!`«¾»>hì:€ãµfnËëªõ OìäFËŸo*õÝàŸÆ’®`á'ƒ2¥žñFx÷ˆBК-ö/èþ½é•Ú쯈1—¨èU´_ýݶßî䪷&0ºª¤–&(®v#k¶z$ý·‡yT,ayÖ¦t—â,Å”.fþ·ËÙLñŸ¦ ‹¦JÊ:Ô“¾Z¿üù/6Šrƒ‡ðÎÒfþ»z³¹Ó÷Ån¶ÿ>§ëº‘Æ0éXˆhƒ‡›ôÍ“ù¡„3'Eîg?z”æ†YF„£p(œñAE ÉK%Š%Š#Ÿ(‹N|±a;b†€£,¢{’Œfh0ûÞO›i7󘢴>ÁsWÅö ˆœÒU¢ðSÈc:wÉaȉå &J 8¤²þ·6m˜P¼ÏŸ7TÙI‰.Ât^öfîÛ.köpŠOmfOâ3\lQz D‡h“/²Çä&‹'-Åd¡y9Íf•÷"Ð¥³äv‘åÐ*@qý0ÿ)¾¿çê A?sPrtŽf–ˆTâgÑ‘aÂÙ”4ãôÞÝÒsp"l'²柟Ÿ™¥(ÎX¯] ñŸ™u39Ž\Ëž1È÷çÍ®C3äúyøv©þ¢,_q™wiŸÃsb©Ý›D1öV”Àß÷>38x…RæÉÈõsœL®¬·¾“nç`˜œ>ØÝs&ªñÉ€ëâ>ýžIV'§åý¼òγÚV×É#ëw~®ël7w²LK‡¶×‘­6Áò=jBöÓB>¿ `Èp?¼îâ –Þ{Ïc%’_ȵ˜¶gÀ‚{cÜ}Z7U§MÇöþš…nÂá§_`SG×ÕÏê‘)ÕsŽXÀë^³ûöÇ¶Öæàt­ÄèÚ6›ápz>¨‡û}²òÂä¡¹àÆƒéCž×wȯ!Öž'ö%Áôåõs¡þPNµªûà,Ýk”½*ú‰Üm‡ËC–ÓP´µ×¢ÖÉ“!qáû•þ¥7J·úRlÏ޼/ë0«Ob f%YKà9§W°¿åyЦÁòI¬:r‘0ïa¬õÎèŒëP9GÌŇk¤{˜øà€N}æ8S¢a&¾1eÃrùOÞà Åê>§’9õhq×õß{z{³šÓ@HûQ.@Ô¸S;ìxI•‚%‰ÍLj¶áÎ4‚);ÜdÜ+±¾¸¤¼=Ã0ÿ\ÃÏW³¯eÐ…¯ãÐõgôô—.W½éêÂ*ƒîg¡éõÐ)­3g_] CŽ­æ<4R°¤A~¾(ö7ŽSÝà9ìä”ÏöMjh³ €Ìá_hw­¶Žh*ósáì‘Ò+”±u¼á›ß"r!GÔ*AÀ·5·aƒ.áòÏL|CöóM”ÒyÞž)Ü›ÙüÎLîOz;Á$¶<[2«uŠ]“E ©)öåºú¨Ï4Óì¿GžxÇ h+‚†Ý­·ûª»V£å…`“~÷ÄN–•0&ñX9ÿR¦ݳ`_$ .æŠ5gíÙÓä·^"õ—ó=mré*Mä÷ªz¿6S…ÛŽ÷®Å9UÄY¨U¥„~¤1Ë–§cþ˜w3{’6ß§sßø®•Ьš•×W@µhë™7áEz!á6µ‘\w†4W’‡˜­ÅiLôº¢ËŒÍíÞ ‰q…ÐZß|ˆ*Sa@ •^T9ËÙõNÑ¡µ' ëAðrLÌÅÒ[ÚÏñë²ptÞΟë\|xÑ* u'W’Ùâi×=þer¿Æê¨rÖôf/–ceöD“Æ#Mt‹p¹tq,Ï>%oî'–£4«#ê<aÕ½¡9+auî&¦3¯/z‹ØÃø¸´Íp‚ ÔŒ¢LÔbr,ÜöRŽ8éMˆâ§7ÒùÌ!…'¶wíï%8 •3’çÖ{•æ9X†…T“rbR,\ç>ůyBH¶vt4Tx“ËýDwrî ò‚ìBÿ€ÐÏ“äobâyÓgúP«½¢:”Õòhl.g˜ôÒpÏ)Ü i‡9çĪ{Š"|v‰Z8˜0ÇpoMñã&LÐé˜Â ‰?ƒúGÄkA‹/dÁšX’úŸ"Ö,&ÎÄdþ»e©ìHp#nðüÈr“ßÔà4‘8C²w0zesÏ÷øÒ.{…³Ç™ÍÀ`°¡5$°tqâ° ÅôEFŸfÌ$DãX…¤YZêT¨ c&lõá|ã$«Ô÷\õVIÕÁ<»&0È s¡Ñ³õNZÍ?*ùpxÐzâ0Ý„)ÛÇéðIøbîKbæˆåë”pJÏW/¼.á´Hâ&  6Ð#\˜è”Àä ­!ƒbKl²Žµ&7(ßÀv,ûÜ¥=kZ …›îä³*}ž ØÙ¢Ýæõ™×QãüεﬔûîE)q,—8)g'÷çCÜN\[wg!¾c¬À‡ÒÒj‹‹%ß)‹ÿ ZùTñÀ+2Õçæâúª®[ããsfº,­óæXA3“)ƒ*9à~€§Z}Åo«‚KG¶ÉxF&ÿ¨¥³®4;½>ëöBÂ9Ï Ê•Sþù&ds[-eãua¿­Û›§dç}L¼w#ƒöê=ЫÄ-Öžˆ@µ ,L—OWuS1<ˆ=g¶_Óæ‚⽩éc}ýïb¦0Üè¶w'¹Ï YüH•sh)H'<‹Y-©èé?ŽK%žŠ;Á¸ðgáØ-Hàò˜ h†À´PzBQxw~·Ö¦ìŒ>g¬Y ‡×_Ùª¥B_YÙ¹]¯ÓÆk ÈeOõâùÓU’L %Gĉ¨üÄ ´¤ºw“!nC;¥6ƒã˜x4¶g¾[3–ŒÁ#¬ÿa°Ð‚à –Á}*¡b¦Ó蛆 é³7«–¶z¦$¦ìÔÃÀ›³)[ãY‰ÇçWÚÊ>‚gæõqÿ´3'3dc”)N7:²©Ý÷½,z™}vÑÌôųyÂADsÊ Tú x2&T½Ó@ØdÇo(ßdôäIAäϱõàs…oL äJ÷áüœÞ ¡¤Iå¦ç=óŠÛH¼À«õXé~Îæt¾dÅm¢o¥n ’ :%ceóÅ/ri[ͩǾ@ÚΟÛOA1,f.øi,;ònvüöÂüÄI±À£euÔña>¯a¨Fûز¼œÉSŶ™$ÂrhKvLr&9&µã/vm€r¿Ã$'¥½<÷½¹îçÿ\€ÉÂ`I“ärmÛ”¬XŸÄ£›òq!^…Œú)‡êJu¢óDŽ 1!t›V•H™(à<ó™ˆÎïK¶Àr8DzԆÍS2¶'ÅÒè¿îìÍO:+áfÚÓÒ–ò_ù*L ÿ3úJ¢]¬«!dOT´{.5ôÑ%”Ä¿‹ »‹ÜTåP}—]ÅŠãhðR9ö'¸Ä„ÿ{׆zz8þÉí8¹Ï ÿåÃzÞPc¶C!W¡r¬É‰)v®7,\÷ Í÷nD(zÔ¥ïȦtÛ'0â\NÞœ{×d½*`YMÃȱðéýZ”åç‹ò°?Wƒ,Ê)å>ÜìsWÝjéŸyY‰sKæLNuLAV \‘ÈðÏ;Ö-9µ“¤YO¼‰ÐukŽÐƒ„† " ÎDŸê4ŸkÐôæ!+ÕU‹vë5Á@ÍÁàÕÅ?}âý~¿EŠIîÔ˜„vȉ;E†tLÑ_@Q¼hl#C|¬p{ˆ-ùk[åá\ªÒ-TÔš¼Ì¸hüûghüCÀv«@^vƒ­ßƒxH$„5£M‚¤w=ãÌ[ÓB´!ÖC‹zÈÀ¹¥¬Ì|yå.:Þgy´®¨&ü×ñDk|£Rbj,Û Íëëdo ¡4Ä¢‹¦Q Þ!°Zn˜Aäê0ìCŽaGñ°3½0ÈCî *Î BÐB¥Gbä^`2¡;úGp!&†Ì†TÿfqÙ¯`_IàMöY/LÛ:Ñš)ųì–7ÚqÊg!Ÿs£¾°€Z°‡Ví£¬~ ÂÃè·Ž B4É‚\õ ½ÄÀªW®AJ¤¨6ÊP+1ߨýO¸,ÐG+Ç! d8À….„(°À0B1}´¨’`">ƒ$;öX„ d˜!¬€d! æVa€hÑÜ&v}f8q…{ ì+Q…R”¥ #1,…¡R)J¨“óÊd0 ã™22¬ Ø0­„!R …yÌÂÃ0É€`«±J?3 ”˜CÓdÃײn½œj¶C&O ÃŒa¦8h`•rPûÉHZIR¥HÜ’_/&†_0Dm…# ½*,KBõQD* Y¹BLïÈ‚a…“ x )JT”ŸÕ2á-*¥H¢M‚b‘¤I!šPÄ©KÔJRDƒÏJ_(A%ò¤I!z’j”,¡$´¨½IJ†D±Q@$£¨$Ä"*ñ¨ 5"E𨑅,$‚¥HHKÕ$Eò¡*$UU C¤‘ t*ã“Ü^Oâܧè7G‰ôgěܓ­S‘Re?¹‹-iÉ=²ÅR¬å°+~ ¡YÎ2¯[xñk Ž$ynNj|v£Ÿ­”¯+¤Z¦Z„ùMTjv-€êW„AâN\ØåˆpWõËY«õŠ4±–·ªhvly•‚Ž.~Óñ<|Áî;'ôBŒºÙ®‚ŠÍ¸„=îåú-~¿{؃¿9} jã'ñ€L ÌEŒÏt¥"‘z”ÙÔ³š'4½c³)Æ)z‰ú…œRÉ‘Bo% Q0)z’ Ôn%!z‘%(‘J)I2Tã‘.PÙ”À¡ëW)Ï?2{‚_/ŒêŠJ…Ïbã"”“>¹?3qS™uϱ? öYÍ&[fr©žv lÅï>‡ñeº@œô¹#TŠnìÄ`sê,“Ù)$¢„’ŠF¡Ie)H))IJJJR$¢RIBŒJYJ)JÍ3® s<×Ú”d£Ð¨Ä¤™Š)ŸY.p«&|˜T(¢d2W¦q85ˆÉ00$Êf®X¹eýA¥#…Q…D¹H\¡J&B…Š¢)K”³ Æ%<•ë P½DœŠ‚ÉLâ‘z—%$,”F%Œ„¤3À°À¤À¡rŒlk0©&lÌgX’fЖM™FРYL,É„Ì^³"c% &{Ö§,šüÆY…‰ pƒB¦äã94:ü#=;(†];ˆå•ßsžƒ`D=rç—)4j‘¶±dÚzU”²”¥R‘7õ,¢’R‰ER’”‰E¥{ X%…(RI(Ù[S©7…„æÔ.P‰J ¥(¤”¢R)› 9,ŽANÛ%Fżdd÷LÍ%rÌÛ ã½(Ï2cƒ=¤Ô¼Ôr‚líÀ ÿ1®3Œÿ.t¶ÓXŽ!~¿´¶ 莛ÀmÂIÁCvË]i~Çß]ξܨ”/,…q¨™«Y ]³aŽçœ;±ûpÔÑUйe5ªPþM¹š&wJ˜,&=“‚« ¨…X½Þ‰E†2I Š/FC¹œ;áð¬§û +RÈŸo6=Xóo(Üv˜k&°¸Þ2US½SH±Ø´lñÞÔ“ômV“¹ˆÂ’×óè7E>±M’̵±ZW @(áVŸ‘ÿÆÌƃ8–‚,‘9Cü±°Éµd™¤¯¶¦ÄÆØ´øŒ ‘™€Mè°H0U^ ä'.úÏ ˜õîšfïÓÅÖmÌãª4nœ˜ P+œX#ÔiÔDàY1¼¦b–(”šòÿ˜ ¬“)¬ÕD€m^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ?{Þðä÷¾îï¸÷W=¾úÜõ¾î÷]äåÅÒZõ{×½ÚßQ}oo®u×q«ß}ž{n½êìÓÞöçuôù»^ûuÍ÷s§wwzëÞ÷%»—¶·ˆ©M „lSM'µ4f‘ä¦jŸê0$4Ä3D™¤ò4ÐÄÔõ=12m&SÐ4žMÔÈdшžÔm& 4ÄôQí'’6¦¦Œ™4d¨U04i©6™=G ja©ê10‰¦§¦™¡4ÚOmF©ìŒS$ôO)ähÁ ¢mFÒ›h&Å0hh 51¦OIå=&Êe=õŒÔôL§¨ÛBžšj=PЉ¡ O@Òž%=êdô§”ý›Õ?Úz ”𞉔Ù&F¦< š ¦150jj=ªŸèODM=S3DÓ)äÄž§¦)ê6<‰´ÓM dcR…R˜h˜i104ÕOÉè&ž£Âa@˜hÑ’Oi h›@ è“MM'”ñ4õFÄi6ÔmI6Ó £FƒL%?&d§¶0Ô4ii?D§é¦%ªMƒI„Ó!ªxÓ&§‚h#S16ˆ4Æ©å5ÈMŠfš›(Ì&Iå=&Cô¦ÔóJxh&¦j©ž mM‰SbzšžSiµ £HÓSÉ3 ˆÉ‘€M@’RmdeM€4Éš´™4ÚLž¦IïU?M ”ôÔÙ…3h§†€Òi“h¦51Š6ÑOSôÐO#Jx M©íö©ú)æ"c’žÊz˜§¡”ئÍ~…8†TÈñ‰pÍžðÛ&y{nÞù—›ÎWÁ™!ˆ‚ vµg …+ q@t‹±ú‡dÑBvOÈâo…Áo† ‰p#ˆáøx<,Â`­ØXJ}ÐÙþtígæԣäÙh^ÃÝÍ¥íPõOòê†]XÊÖÐ8÷ö*e„tG‘Ÿ`ÇJºm#5hÝøÚ¸lÛ:U rnZß™é6­kØ=<ˆIž$ñNÆH×ÔÈŒVvQZ¸oåý5²"®o¬[ï±Ý“Ä Pÿåê=ùØ–½ä¤Àá*zÝ‹& A¥­Œù;‹Iež ÌWÃÈDéE·rܽYÑi·Q&{·T¸Cu¢¨x–¨ýJPBþÓêàÀ#éÙcpÇåY=t åð¶>›³ÝfæwoÐñ‚‚輦öܶVŒ gcÑ ^º‰®ÛŠFmxp4½â‚â9ýµ>GšÇ‹ZáCô•'ÇFsʇºÄ”=rôf1tA[~½%¨ß§€Ÿ§6á¬ßÛ(à`¡`Y©Xl½¾_›õa @§V^c6Ÿ£Õõ˜ x¼Tón2"–€=Ùj)͆4ÿû·ÂCÇôýÞ&ÁðáÈDi 3¸™ÏéÔ¥%ë¤e,öŽj$úªEõ°5 (6ÙÝ`›7¾½ðGXPV)Vv»½ÿmo Î'Ðn€¨îtê¹)œfsÔ£1¨mmÞŠØîºC¹Lx²Hj hõÄS!ºèZŧ¶V’Œ¥(º%ݺî þ‘‘lWñå<`/ùêRì"-Õ$íêpŽ–ò\ô“ä«FÀ6žþ@$«é¿Hø gÉ/óA•Ä,G’ü¬½ÃÎÆŽ•¼˜À-H±9S8“ç'c§@1Cn‘¤PvNqš«<[Êÿ©vê¿,ë´&°ÄC\Ũ4É\æ`L°ø Ñ‘.3øÛbOqyɰe£ÚÎÐ[R <óìI9Õö/¦·ësñðö´.ælmÌlMœE$g!Ù—C!È#fì£øNö®}ëyÞì(_Ÿ—½«4š#°b´ŽÎ/˸֡mbáqßCÒJFyOœÿ•§í&Å\ú¹×^ˆÏÍä¸yIS¤sxÁ¬ÒÖú1êw|®¢ÒžÀ Ù¼a!èfšLSd& ›ƒ”dÿÛoâÀC»N]̼\CI²µcª^ì^P—™HÏo’¸ ÌZöK—>ÅaNû#çýÊy4ؘÏñ-À(-óÎÜÕ‘R?§ËØ×nm·‘Km…:è¸ÿƒ ìTf™ì朓b‰vøvP$}}Æï\bnt¹¥Êf_ ÙÈÌ¡£²hÏi®)‡ô½þÿA;m„Ïo´4]ªµEEˆEÜcêa„lM¥õ–ë‚§ýzO“U;I†×ÚÉGÍö@ŽÞ$Ƥ÷f ò߉`¾µ³fM´äGð°G×9ÝR"ØáCoµàǰs†*<ù‘ø-«¶®õøú0(ß{i&Õ/WbgÌЯË+Äõ>gÇ=úyô>âjo)¬Fl©©)¸úº…¤¿½¿ #1‘º¶—Ëq0Rf2m jêDåÂx•kÜXõo~Ñ’_H–›fWïûÛÞ¿šŠ)$ÛE? Úƒ¡ç•­¾%Ñž’ˆÊ‚©’Úy&³7Ás"ÅoŸ{”cä½Î±žôìJò{ÂÇQô¥XTÝ@›écÃAqq÷M2Ûþcï#@?fBX±Œ>oR*ñ”*¿Ç”cRh ŠKûRâttü#¼²h5N¬UÁéàjÚ{2«8¯3)Öª=òÈlR!hà:Š„\Õ϶\ÿ¬{þzùw5N’ÔøYúûô(( ÐŽe³¹hìdßzñ£l^ÍxذƯïúÛnŽºøbjü6þÕ~@5glò­¶V×ÿ>¥áúé5òÄP6(–aÙÝ)¯äö°¹@›ä3/Ön(ίêxÖ@AÐzЬ­˜_/‘ÉÚÇžy݉¯Ök»_^xºBMMú¾ ÈðÓã!§ã=‘–Ë6®ûÝ]$”5EG.^T1‚×^ €#sþ™>²ÓûB;×JÊØe¥·^⇖,‘œÁ@|›…Ù0©V©_–vöUøÔ.Ðþ£•NðZ£¼€¾4é[ ’üŸítØV7Î=RjÏw§F}VÅ¿lõâƒlχñ‘‘…íB¥‰ûœœ9‹Úã ­'<.·ÉköžÉ ó¢ue¹ûYg, ì`¯‚¢ÿ5ftMç*œÂBpåôóU÷Bl:ïš<Ã4ó§O`¬%“Ñý>#üK):ÌdÜL+P…øç‘ÄÜþpÝi+ßÞEè]Øeò|r¹ç›ÖÃZÜw{Œ×»†sññ¾ÉaîõJ½X" ©e‹2òºß`uõ*/µ>‹î¹ÐQhŸœ o{ÊÞ¶éÈêE»z‹¨¯a+¯s“è¥Þæk¼ïâè»fÅ»©Xi\¢#',ÛN¹ÅãÚç0§œž`x êÏ‘?Mº“GÊ‚·«|dpob©£1ä…e¯ÇÛœÊõ‚ƒž;—ï¿dïKáÓB_qϼW¥ñÈ&«°ž%ûúÛ÷œ¸XwµÕôâ$Á«ò%¾ujÿ?7ë¾1™s+€BW —I·Ö†ß ¦¾|ç¢ó”$KC!ÇJÂ߯ÕK2XóW¹K:ß)©7ª~W9Û^ônÛ:Pǘ2û wìLl.dέVc/64Àªaª²f•¢·¥Ý ¡¼ ) Ïlð9L>%¾Á² –i˲àQñO âK°ê>ÏM9L™×ƒŠSÁË̸íý«Çš¥7þ ¯ÿ#ëwIRU˜É*Ù'…¿‘©Cú‡Drnã‚Ms( ‡–Bc/©K2õ(ÞvùTØÖ^3N:µUS1øF¦œ@ÍNikÎ}ÈZ­íešÇè ÍJû n;Ÿthx À0а€’kc£¦È[à:«Å®¡C¿”ñ5±™Q-P»f¦ÌÈ3~ÏìÖÝQQ7¥Ø\¿“ù?vvDðÒ¨ª)T(„Ç¢-aÔ™æ\²ôúžnc*rQsˆÿUS\Á£©€&¤$xmìÁš©•¹Ü|gñ©O#Ž‘/ OH¤0\J«ŸãW-—Ýï·ÕºÁWl¯wgS±rôÏ»~¦N­ÙÕþÀ¥öò^(ž6£y¯¯²ëߣmÕ"ŠÍ‚rù7³Òºÿ8®ÄO:Sôi’6k'Í%Œ`z,ÿn&&¯KÌî]eÌÎÕÂÞ0{Däܸ=Çñ#¼]§íÎ’ÙàÌyœš¾¯iîj}¨Ô çžïÀFØpÀ8h³ÍñXÍt¥[ÑS~Xàü¥ŸÎ•¯-¦{h|Œº /€  #Rï}Q†–[0LQÍ>3lZRc)%Gp±É­uöN&2Þ,ö˜@ñZ‹údÎ@>’pELWO\Ù¸”èeóVtF¯%´^°ì€áø±+Pù÷ìØçd÷ƒQ°ÌãæwÝ,¿71Ôt!õÝèΆêFÙ·øé&ù±Cbýb¦Q22Ý­ù“Øœ3s4„îÅ4ÁBVúœ7R^Q䣙Ø3ÙÕïzLsÔ¦í÷é~ÙÊš‹;¾ªÝŠå>Cš Kº.‡ê°àЮTRI£"vÉj;š¢ÒPš’RMDŒPZ´‹¾ŸLž¿†±ýêQ˜rJð€ N–”}¢|ë# [‚° »!þKÈ•í—j à"äbÂv¿g¼nü<äçgOxµ«u`XjÎï… „#D\ÉQ®VÅëh®ŸO;¹0BGîy“ðܬ~¤Z+ŽñÊô{÷›i *>³ L ã>+ÝËÓåݧ)ª·R¤§K‡Iq¦¼:ûuus)ãÇöRekßný÷^ ?jÓiÐc^ߢÈð‹¬³’zg‚Äï8¾l/“Ã/ç8ÐùñoeË ŒuÊQÃÍg 5y'Þ>÷ú©:Ò\xÿCiÈÔ›Ìüåúˆ®á ‰_Wª·A8.ŠÕlj¥i²::oZŸÿD.–YÉÞìÄ•\ Ÿû»ÞƒfXÀÉ J`-`ðà¤ûÀetµ9Œ_øôt\`vQi+Ä<ý%Œ€_¯fÂìf¡h ìÂŒYð¨& ª†S&xtâ›Æ[2È?r´¤:P.úê…˜¿ïëÖêñ—¼D»?$ôióF弋E€>ERU²ZHóÃUÄ ¬GÕ¶éL½Û|:mwÕîxbNîb93þy³>µuý¸ëõþôÏŽq°|À^Xo]qذµU‚Š  a–#!àiŠç]…îúCqåÞ  FéÅÙùÐpUËö/ojœXWÛüï€ób~AÏž?×î§ x#Ex£¹ÿÎ$€ ªÇDt"êh#¦Ìõs<ö\ FÙÄšL&ÅhxÖz\ƨ(_ ·G`Å£n¡ø(ñÞ²x·³@wp[°ɹ‡èRÌTrÜϽÒHNÝ£`Û›d|ö>~@ ÒИ‚ ¼ sÄb(œ²ó:“ü{>bÌI·U÷̉Ù_CZ™M ä}¹·}:e /G–+³üÎv=Dëü#’IRk‚îÍF3y²‚yU«›ÅY™Áï ž]ö0|m©’¹0ˆ‚b›nQÂo/_æ!–‰#lÌLØ«–Â\Lx2%‰ìcº¾ÞDù)Èe±*¼oGΙDÀw™?©7ÿ\ zîË›^Óæ¶ÒýûÑuO¸^# –V|j*®¬ÞÌåðÙÑ‚ø(?*™ÇC…T¡-"¨:ý¡~13ÙPiŒÖEóY7è½þ:E šk)%¯â?ÀƒÓ¨wñ ç‚m-ýa r¡È24®*àQ8½¥²B/êÈRAQÿ^íYrc¶}¢ƒðúWáÉÍ™èNï"è¤&»‘¿ÂW+³Ÿq|kçš.ÛÅHÃl„š°ŽŽóòÆöDÛÌmR9Ð_»1ûadf…¨Öʼn·ØÅ· NícéäBóJ4Ö¤}+G‹gràƒþâ‘´ÚIyéÿɯWr¼½³Oÿ.@8jÁ•¤mËYögïø¢wÚKÏDW(º·-^…­¢–nÔzÂ,ìVR3ŸÄY´QÚí#»÷Ü´å0/&îÂ_O÷þóðÁˆÍèrV¾¢¥ñj9*±wçÕ›þËSå=¯ìÇH‡ ã &j‚¼ŽC$/n‹L4aDÅëëàv\,Ð=ɬ/ Aj/E°æ jä)odú¶¸øÚ‚`²†Îú^ûh ÎMÚ¨Ÿ:솙ÂËt€ ™}/Ì…âðûù>ÁÐN±2´çtäøðp„éÙ=´™¿äÕÜ´cb¬ xRs«üÓN¼i‹]éŸØ¹8½Ê‹á*äáS:òÜÿm[JW¯6ê;dÉ[Ú|ì«Þå+Ü6ÃOåWJ•„k2îÆ 7ͦɾ5\©äEFbŠk€ùüìá^4{Pµùl|Cî õ8Ÿ¯˜ö­e'q¤k×µúHfAMDù ©oÏZqï»3Ïùºh® ¾Ø“"^Ú%½gäµ$€j5e,â\âÄK‰Ë™«t8œÊ¼:Ö gÚü1ÌL·âÆï䇌ËüxÞ¦VucÈèÇR¸wÔÏëJ­Éïî7hÝbþª@»Ž`,°'í½Ö_á»C£œ&õ nø8¯_üu?yßs%syz½Dbb]<îj÷_¿xÔÞo¿§j”Ýbc¢èYvÇÐ$®Ú[\£xó ™µã/ºa¹€QX;zïVžá&KîÀx±6%fw­L’+ù„”î><¶uį@ŽÿyÛGrÛ Ëݶ'0¹ÚÐ]h”±Œ»ãæÀ¾ž:4uqöùþc¿{#ª¹î†Âc§RþæÒGIÁŠ›*CòÖßù»ÇcLОrö3¨¢Æ¡Æv¥Ê÷êòð¹–È k!¬VŽZ}½ÔbYM»ê—é§œÐ×ÍŸÝÂfÁõÏ`î¶™¿“>"¥ µ›óQ¾Ë¨ JtÖbÝ]ÓýcoÞ!4­!tvóÃbÓ½9´Q8(°?ÑæëtUÏÈ2´MC*=Ì„$ÿ¤³°@7©ð"èFøÍJÍðP$£ÎSÏWž+¹à–ã¸pz¨~îe…ôxØIU§,”ùó¸Ìת–¦¦Î 6‚<7Â"­#ÜÓŽü°TQ;}"ã¦4¿ãÓe"kàÀlƒ…ߎ¨¤¹Ž%®ÙCÄ•…÷Wn ¸¬>öÙ ë;'À„ú t ÇlÜçâlì¯hè’«:zr©%ùL¾H®°h¸{¦¬ü5}·Ö¶Å£êÛÉ[höÎónF¯aèO@bÔ—°¥ëyg5£Xܼ*ºhŽ=3&0k~EöiÏu+ 'eÌ(3ý TUÅ{rdšS…‰Ü’X1ÌÅ›èí=£ýê~,†ÁÖ ,Ì"ÅçÕ1”ÓŒöÖ-z$²‘¦ÉOï–Ü©ŒÚ²x#Ô˜׿õ”ó·5–sGÕ'RZJÌ«R!ßR­ªðú:©Õ8ÙÍñX4‰weèëßTÐ¥ñ·+i7^Æ À ]T}¯x› ¥ÞB¿ŒŒ·úOZd ã¾ä½s3† ýŠØã<*âËæôf‹·ìCÀÓ³ZÓêA£ßìa_É;PBAf\¡íÄÕâZŸxíEäóÀòj—±5^¬,Uú懮­²8äHB:0a JSjrý\€k2{7—ÕÉÏ%3mŒäBA::¼u²‘” ÚºùÀi «È ÁaZ²E¢ƒ»}ðÙA¤EqÔ¯%ØY€¦õ,‡”’Xæ…áÕœVÒi´×o9¼ØÝ®?ô9DÅk®–aâ¿ê×ÝE|y©ù5ÔC¼XqË(!‡j6>!¡R8ù.çªÏ:ц¥ŸeøØòÀ®áÛ#bÝ1ÐCüm”5\¥$hºñÖûzDÍ wôþžü|·"ü³nÛDå·Çb”¬­á £1zÒÛ´x pž¸x° –ÿÎp½ÑS\ðtÈ*(žfo å6­ ¾›Í©œ•³è¡®WN´Ãtw_(Åü+Ó.—D¶¬áŽ•=M« ø«šH|žÍšóC)žQ‘j%.ºòH°“ùØŽýr!‡6,Ý—{z…à‘ò7Ô­bÁ— ®›õ‡  s÷ ³“L®%2ªŸ¢‹—ͺ÷¶lpޝ¿®Û±íáè.l&lv—žAý“C:~O²OG…¯þ´)«!iïs¸§¨4®[äZ:”ŽÐU"¼%7Ôy­Ž„laÃ$§.&ž±§Ñ(x­+ãÅl­Ð ìQ»¡&ámÇ™|ÒŸŽÖ7S0ß:[~Ùê7>ö¶ƒ#ua S û\:ÒÆw™w˜yÜÅ(\šÖëª Ûˇ̠%Éb×#¥i]KºV7jÁÄ‹²äÿGàq7Z·¯žÿv( ÛŸpRQѩҹóÆåçRë¾Ý4OH>z¢¤är½5õÒ›³(ÓB½Ö¶V‘,lùSí>—b…hqãgJÎÁøÅÓê;•+ÛùØÜu(ïà²ÍÔ‹ïMÑyQ‹|~,³eÔb닾*ÜË­&FäÛÖ´»,K £”â›ýpm:âc/0òòípÑ)Σ-+—F·ÅüÆ (¤óû_ ʧart“¹ñ$AÏñ:Ykc…8Ŧ瘈ÉL~¶^AÏá:Ë~Ðи·hdP¥¥:¸ ¨ Èç?ð¥ý­$Æ9¤É2[Ú«Ÿ ®)Pï@6oÏÅÌwô~Ô¹­uZÞE?vóöB gXL;h Θёýè—cÔLYÝÔÛÿR`µÚF$ƒÞ(Ÿ;iú—è‡;eVw–ÔÌï*aåÓoͧÕ7Üßé~Óæ€±ÄÊ RŠ”RËqºÂ›½‰;cOuÞLFµ~áªn?u>Â; àÄûž„ÿØ78›êu§Xåiôha¸º“å´!–Ë(\Ð-¯}Veià^ö¾Ä†âGÏ^kEé*_U‹ZÞ‹Nr[áŬåØSÿ9‹nÕþr—´"†XóKŸò“³ï§¤ï—šög‚ «³ d›¶“Âh‹9·"@§vÞˆå®4fÞ«G rà—ÃB°n‚¬€>~PÌkxØFä.â%9ðü”0ö³#´nǘ×UfX¶«æ²|»QÇx@2øõµ6™  Ãú¬Õ’®Ä«:$H¥æ^±§J[+ÈßàGÍ›¯qs³öñ‹/žÜ{Ê—1çzÓÄe%£öÅ ñ3ä€=6a\!™D¨&NêôÝP³'j¦Wôh®#=OäwXáƒÅ{P?ìÓX¼O÷Œ²Ó&]QzáÈí±Ÿ pG‡,¿¸PÙ†¸Ù“}÷ZŠˆ:þë¹ Vÿ”Ÿ'jÅ9åT1^À˜"CI0*›¦*?ø»’)„†*`ˆÀzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.793789199 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v4.dat.bz20000644016037001603700000011562013607166133034122 0ustar00hutter2hutter200000000000000BZh91AY&SYÍ$oNZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàn>o7Ü@5$-™%dÒ¶ÒÅ 5eFf³dcZ5šc¬k6¨Ú¡ÒZÌ*›ïyåDÝÞõŒ™uÀæÊµ•MÛnë¹ÝÓ,^Ù÷šìû•‘ÌÆ1š"ÅŸmßv^Þ¥ÖÍõwž®½!2Ëë{»Þï|øW­s›Z¾ù}÷ß_]}t¯w®¯­óÝ9÷;ï»Ýãß}÷{Ø­÷½Ï¯=Q¾¤öo}®Tö}nÇϽÕ=×=Ï{}|èÞŽ¾ö{w¼»Üõ{Ïtæî=Ì Ö諵íÃÓ|}žƒß=·wë¦çy½ ;mmµVëK¹»¶‡]l7{oyéÛrïo3Î×2uÓ®´°Ûmîõè½»nYu¦·FZÝ·ZknÍWZ¾6yž¾òTMš˜L˜L˜†Iâ 0ŒM2™¡¦I´hM£ÈF†‰”ým4 É“&CF4Ñ d 0©± 0dÓ#F‚J”ŒŒ†@ÓF¦i6ƒM3SÓAˆhiSý Œ¦˜AÁôG¦©¦ 馓hÍ4ž4ɔޑi‰¦™0PIT˜ OdŒjžLÔÉ‚mLô Tö4ÔôÒi§£Mfª¨õOóJŸ©´§ú!¦˜Sz TŸ¦“õý©Mž¢Ÿ“OTñ4dÈÍ&ž‘‚6Q¦Ó@›Džž£ äÕ@‰"$ÓDÓA2=?DÚ›!MêOj0›EMˆOI²h'©£!µO 2m!úšžƒQäÔÄÚLÔz#A¦Ô“S&Ñ6“OÔ50ÔÄÓ#i¡¢m4†Ôa¤R C@ ¦šhЙ12i4ž&ÉFLI±0ŒF ˆÈ&žI²©þšh2h44§§¦TöMhhÕ<jf è& „b ŠD€†€‰´ 2&ñ4a¢m*~§¤ô1 ¦š™êfI¦É’§à&Òži¡£JÒiå2›j§é<ÔÁ¥OÄò&Ò4È'è&iODÏB ú¡ú§¨õ×í×íß‹Ó÷\DKåU¦÷¸¤Ö`ößÖF‡×^òÉÄZâ¬ÛbÞ¾ýŸ_³=²Xþ-딾ážá1QÚ½t ê±üÏ]vý¼êŬ %)† ÊgTÉ•d“IðFäˆPüd¶! æÿ!ä¿aëJç|xƒ¬Hø`øƒ ‚˜=@Õ"A5DšhbElE¢ ȱKïXþÁAîÉÅl*, „‰@atU „„ ¬"kˆ þéjDMË(T__Ð…X)CÍ{nbs2¸_W¾غ(g‘UTóäøñsD RA„F®®®­«kí[,UT 9AT|´APSiU†aáG) BB¾ †T)UMø€‡ EE÷Ê®€¥*r((ÑCåˆX XƒœX±bƒÏŽ“ù¡ÂR`!bþk ,JEM&gÀ€å0:r ¢ÀÙ”Q­>m0bhä7A­;GnpF¨¶‰! ‹¹wÅÄ ëȈF ‹ƒ8bÅ$dbï,Pì˜ëÚEP˜‚» À*‚€X€wïÄr€f.)C׫Á”kJ)X¨t1QÊ€8ÖÕ$ £`\`‚K²wL… hAUi¾*¹W̦n\ ’H*Ò.ìÍ™HxåÐ& Á=€Ô… ÇIŽƒ­šŒL `G²'A*À>Ñé Ug–V“† çYª—„?˜! fèaϘ“Š)“d¼B r¯$þ¶JÐß°TaPÅåHGÇ.@˜¢/8Óê21Ì7æjGæ °Ú¿ 1%T6ÆVW,%±œ ŒÊä×1Ì2E£õ @~cÈâm‡\äp>€a»ð „h›rPÝôiméX0iœñ"}®´ïªH$0i[ m@ÄDÞš!î½æ!Ÿg9€êÅpï”Òí‡ô°fáu#¬Þ²[«6ùð9Ö ;ˆß?m—¢7,ªBe£ëFþ\`»¡q'þ/H»ðïN!˃qæxõ4ï HÍñpa8‡Ö J<É|Iýͳ–êÎ ”4‡g\x‡ñ`ÇŸ{ñçœç" v4Ð…‡A€x$G»ò.íÒ`ÄqDÓ@,+Cex„ÀŠñª0R1_û` j À5îpöˆFÁ !†Wœ¡\ϥћRå íÌÑŠ;ãր렟@ : ÈûFÁ‚`#ØŽ˜…\ ¡ý7¹ÑXË+ÕTFN éÆ˜5•¾–b6t#1n-£¿:‚¶R(À=Ì> Qæâôq^ý‚µZµHì][råÆ¢Â¾‘Âx÷Ù³WRšŽ‘äG¿b%À¼ÛÙZîZÈ>ln‡>\Áÿ“8b¨zÿ1pn|í¶ÉP º(Pa8kè1¥b‘}¹eUSl×<Ó$R9óÿœ50×r¤¥@P"`‡lâ!ãKÄ ÚDXq­w#ÁˆoC¤æœK°1äè†êªÑ ýŸñcpc”p&Ï-™¸¯'ß™ƒ¹ kÄ?ÐøãÙ¸€}`` Ð, Õì‡|„ˆ J­³‚0Œ À¬<1„T˜óá¢8!mù‚ÇÆn`Ó3ìMPÍKf$hŸ`ïЖ}ì2ÜîŒÆ øjhÁûè•Ç …š }y(†¨@œùZ‰Ë¡BÅP#$rÏÊ8&|lÁ„×Ú]Óhk»hölÆ`]Eyôd<«Ðœ¦iÈŸä³R~¸éÝ{F=ûŽo ‘íÇ¢œåq‚²_²4í”ábß®Ù9ñ½}вj².j‚˜ƒ¾BØrCÁxúò¾4ò1^Hd~?ØçÅc‘¶<VòŒëFAØŠûOöL_Õåœ èr­Üœ½XàG@7 " 0-Àè†ÔÓ¸£`Ã*3Ä¡æÆH9¼Ó`Ç™ã\vìûè<»<︌ž!ÕÈÖ0—­¹6#ã´Xô¥ƒÐt¬†ñ†dS{ºÁØÊ<70ÚF SiB´`ÄÁ‚' aº4•ªäO¶uÛ»„-Ô2ã‡tj †e7ÔwœýÀ ã½~èÊ]}Y¨müä,Í@3_¼s:‹P¬§Å°Ž×Àrí§iây¾ù±oõ¸¸GJöx5Ñ_AÀ6—ç;·ª¯Òsä8C°4K€u늉CôBJ4ƒ9§äQ™½˜Œ;†ÌŸ/O°Äœó4|Ç„t\˜³–Ož²,ô›sxjÌ7½† ôYþ½‹” ÇQx‹Ú¶(±8 1ìƒ0HÜÀ>:ŽdWÆ9·€hGh„5 sRÕ¡¨?ÜW¾5èRC±„Dö†ð  É(YHµÿŸ­(°0þ9vxƒb^ŵ|€–JàÛG{úôJÉ`ÑnŠ&äÈd‡Íb01Öv[fûUUüÝ3ôA€~ØéŒ~\tØí€ïlâFÈéïÇkÜ¡—Òrˆ#á]ˆ­+L›eX0€©€ £HÍ›6˜5J<ï q”>Kö›'F×C­ â $@°XþÀí$ Ú˜@†ÙÛeå€R›h´@0Æå4àÀÓ@“ w:uÌ ø4-(ÜWSbÆV”~˜îÇÁ^W+­·4®.£|½ 9 /˜f ‘³?3Ò8ˆ?‚¬â•T΂$9Æ ÅŸIi0”‰S)˜‡L (œ—dÄ—·]Dê½àÁÓn²ÃÂ~&„éß²I)»»7c»ÞuÚX\ˆ’pha¦UybåWmT P“ Æ´‡ÍºF £”‰¯8C²õí9„9q|¡)¼@gв"bK«`­h¯že“s,”BÔ+HœAx(@ èKÒŠåy3Ú6€‡ðaAûï¢ãÑ0Ì!@T{åáŠÇ ÃUaY‡©ÉЏbNÑÇc²§ÔmÞ{ؾªÚŽs|Ü4<¯¬…›ƒhåˆ ÑÃþ«…ÈoÊŒa_÷£ó+Š-í ?ˆÎÕ8ûãFÊàÏ4l‡N3@<Ê£—˜ÔAžG+t#‰Ýí$¸w>eÛ¢ü‚èÁ#èŽôؽ£á±Ô?ðY}‡‚Ãܼ°?Yé„+Ø3æ"´†p)Ñ`â ÁÚ!cb4p6Ìïœ^%Ù¿hQÀ¸âY§Lt›jàâÞÉþ Ø®Õ]ÃþÈ“‘8ÇÓsÃ'—M‡à€_RÄו PÅPU6cÁfL,†XMA¤`ƒ~6@;fÀùF&CÓ97û_4dÉ»°1ЗԹg)ã5ѯmнR5òö0Þˆ<ýNxsŽD ºjÇîg•µÍ°î‰(d<.ݯښ#{Î6ÜвXž3!Ñ5ç`ÞÚèÒ¶§÷ cQp#éŽÕ[á-’ƆÌÚ4#Gª”lïfcEƒ¾ò€Ì5~ÜP[Â$×þ8‡¿r”ÚÙŽõ»3ª1µ-xÓĬZ'ü·ûÓÔŒ¹©u&³å :Å\¨ B•…{¨gÃëw <ƒáoÏ|“Îb)¸bÁócܺ€7<¨p /,ÂȧÎqÅ­Åñ£`H°PÁa÷(IM¸cÁµqC÷)çûã…ÉñƼó~³RÊ9|Ð+Í(ÔìàžÃ Öô‚¸6'ÂgrÔ'KÅôqí³Õ”U4ËrƬHhëÚŠ V¨wo³Ç:v˜Õ9áÃŽ;¤yŒ<^ÞŒ_8+$ËÀiR â¼I.8ƒÖ)€2,•\Ó¯vh<¸ p¨S k w®“™òÛ480ÿ\†Ç‘§¶iÿ—>çÂ`n þñ‘ê`ÛŠÃÛT$3yö£'§ ¼aâÈtÍ&Ogvßéù¤©oÁb²ŒÎð¦–t7F• æàÁ®$*ŒÄ#´/ó@e,¶X³^òfèÞs›>&xiI¿µíÁ›ÚGÞž6îÀ+ÓbpÜx¯¦ô2”:CL“@d »Ölš‚ ˆÑÿæ6Î?y.\ÖËÞ¨0φÙj¥G鬤ËVŒâ0bDŒnêCឤ@؆„vX½Ý½G/ЗòbdãÆÑJü2¨Hwoߥ°```w^®™çe› ­õKO»-ªòsTê„f,ð¤ÁU,YâA Xí²Òð`¦Üc^­š¤rˆwSzædÈCÌÿnÀ§w|£ËfuâŽEÿRE,M…×Þ™S4zÕ´ÊFûî4ˆ~zÌTî€:YddM&Ó×hsÁ”ݾ&3 0¼`¯`GöδÕÔNÀTõ}Ã@ëD7p}jvç@w-ŠÃÌ9¥™,~ÄáFd ©§, ©¸?±ø›eF½ÄXâ,Â'À‘F\•5E‘¸2E¹©$Š3pUžécŒy¡4FÚB±àŸ«¸r.Í­qŽùΙÿÍxÏ:îgi9þøHQ‡r½À4Ä4-"N WR+šÇ˜¡êíЊ®/¤Ê‹f^7x–à͆„3ʯNÿ{$FðWœ(‡n÷fQ0`™ € ¿Ìg³äÞaœàü±ºö™!¦vÎÈlÄÄì_Í»'½t –&“˜h‹Ï¾=¨=0d“T6Rc0ëßÈWNÔ ®¾Å¹»9ÖÞÓ7+ ЈW}SÛ-Ì<6ŒŠ‹…{6lÖºÜÒø€AÇA®}ýúÝÊÎqp¡€íÝ»‘ÒíØàv‘i»¦Æ4Øï0Lñƒê^Õ #ôiÁøÐ8xØC™§™r{Ìô™àÿTrîPhÑŸ*i~ÀXxUͽ0œ‘àöæì9‰Âø¬»Û”Ž’öÃTDEÁŽ‹£«ÚÍ4 ÐUJΙæ+Òóæ(šgW¿U6³¾\;}ëAÓÃ>¥€ÀWä Ðÿ”<¬ÿìÞ=0-‡O²D¼›?^|é²h¨çê(V â*CçA7 ß2ràgµ(VËÓûé‘2=ð)šÃ¹\z**«ê~PÑó7øc %L: áäè:rwÇ8¡6m]0@8Ï{wC—‰Ü?”„8ýp®¿ô¬ÆI|­„HLT6÷³LæÎu°€ÄÄA2Èa¿0Yýì_ª;QZ€ñàr%±È ÀrŽ1¯€õ"¿0ÇZ+Ϻ lǸ?!¡\àŒn…Üô"ÇF<ãh.Àfr®]G6qC‡BRéïTw½³]¬+çâù7‰Ô¸EOZçjjÜ€ò[ÌGî6.C¸dÝ«›®£Ä þ?ù1«ÜÀ*'tÕ=x§D©ûü7:i1n¿.“âÖf†à2¢½ƒÖ1ÓŠÄ3L9{È.W ì]gHD¹€4¿‹)‚´-HÅìÀ/Æ h-2,YZq%&›+}Þb,Á‚JHVÍUÕ'¨ëÌ\÷Ž×Jïw–Jít,G/â5˜?ªcpò'Çd•Ú2Á€ÁS¸¼Í?|3l€“£äÍI:ÌgÆ  €CÔ°¢aÀ«.¶07ö”1Á‡¶~­+lâ4<ÐØ¶ÝôVç¸ÅÎc†a›A6oêh/FÕôÃ⹓ZCP¶HÍÑ Í¨ÛlÂnÁÃŒ„-Bª¡˜ØkŽE…1ÿA¨f!„[˜0”¦õ«Ù?#û9×÷ßHÑF¯xÚ™ðWœøÁðž±Ã5m¡°¶Œc'†ëkÃmhX³Q˜‚’6¦@t$`‡Þ  `ÏCŠŒ|£âµf™­(…E…(5ƒ¬!k Q¯ („(…@¢ˆ`gŽÈˆG¬q4÷ìVõf™²# ¢0@Ö3mÀÛ€3 c Ã ÞØÉ†”xl>CǾ4(ë^e^]Ò¡Óº'LåY¶ôdz»Ä´?5G|¯Ä2%ñIøí†®Ã‰MëÔ¹ `jÂÌÛ[kHÚ›pË|ÿV}úÇ&ášàÛ›Tl‡Z~•)ë3íÈŽ™º!…-`þLû­?À縺Às˜4Ç•c¤ààåw¦ÐD`>qõÏÙ}ëuyçû»çϺg8Ò… 6¥¯¼ËÞ¸ØÁ½[:,Áó¯(XÇ㢠ġsŒäÚ]xt¹ÌTƒ-’Ëgj’É1D@z`:vöiÜ<—>ÿ·Üe…8ôL@xÀ×!¬ccVh”4àɲœ™DwÁ¨ØL›PÄÚïÃÙâZœÑ(¡Xixš83|£I¥”un­¡@àY880]{¦€èj Ýѽ®ÎpW“Ú¿SØ!X2\9‹p ¥¦ßGø.­¾°pÃtè’zÎ=ôzZ"Ä@RdM8~ãó»—Á~æµê^°m¯4ßYàúƸÕ›Cܱó¬DæßÎ:CÕîXâñÁÁ÷Ëžhº€¯FÉ]èÕ|`SfãÁîËV«¦"€€À&ÂB÷¼K«­Ì3¶š%h¤µ˜@’àå…‹W—*y™bº÷_ÏÜivÛÎê)§ óŸ_ ê:“¹€:¹Q üý—T…½¶e1Š®lí¹W¤|ôƒ¥mG±!éŽûް+rÑ]<ÉÐ5Ÿ—3BåЕЦ•U ¦£$&‰åÎ[†ôËxÛÙônèN‡b ¶;ÚB ËÎòÙézWÝÛ”ÖÑ÷MyƵ-]¸g\üÑœÚά ŽW´âM§Õ4œAÑPT¦U*˜]ˆ…„8¶@À®œ÷ ÃHiÉ6¦+BvïœBÏ>>?î¼zˆüWjÓñÌCæ6ilÖæf›\äNwà8­0B“rLWÅ!d-œ4 ØÝ iÌùÖ›á÷m"Y¸Ç„~ñEÆqà 0K6¤ ”ýM¹zÚ4€6: žX¯ÖïIµL¡öèX6Óù3T>¯‘Õ€XYçšiIá§TjXÜ8%ÍÙ¸ô!„$äi=òÅi Û©jUiÀïÞÀWUõ\¯lòn 9¸©J1+¢Ån_£}óžIÀ¾›µ¾9K›à5´cݼïËɸNQÔL8öQ”íŽXþd r$N˪g¼W8+qÃ亩%„ `saÆzQˆp€é¿,Ò,Ì|˜òäíFCûq?Àéù#äWþlºÓ©ô>XfHòŽyøõPÛó¤=’gIrX®(½róÅ è"C½l^°ï¡çy7à>ƒ´uZ5Âþ°sãβ~Iû˜BG½ÓûÛ^°Úæ@6}´LÄ“XŸ"›©z<À®ÄWÂûaâÆ0cîÅyGf8 1¾1“|ÍéèK8Nc³Yœ%M3"ù`#…m´ZÔºÓ%iûYÊPìÿŠ‚4ó™ñ<'%$¡ÆAf“ ´‹6†`”_‹ÉÙÿ@ íkm"Ï·Ïè3r¿î… # %CÌõáÅ·'"Z„“(®Ï,S‹c“’l+îÜËÈ;9—–»ÎÆ}…æ¯ì¬/8ßüá·!_<Æ` ýW4>ô(˜ >])%`4ªaÔ‘Tô¡m–À±BhOîPLrå$bÓÒÐׯ´ÿ$/Íð^´#}ãìÙ¤®£ »~(T;øCÅñ:ç3YŸa«©êV;QY…>~³‡)‚&á·ò/õ 3íBœŒû~†_wmàüêQ¿—àKcö Ò`ÇÌe‰Â`Á€ËãŒC(iuä„B0gÿÌ6Š4a¦Õ7æx÷ÂּͮÐYî 7Ãå¾S1¤…£¦!‡ÇLÆÐï@ü°9¨ÓvlÛ™Š4?®uGJýÆ„ µP“pýjÌ2@ëÁ毘ڶí ý¬¯,çÖYÀ2ÕÆ HÝi1ÆÑ´InP¹ä‡ÞÞÔÓ>êUÙƒŠú0Vó§˜QÖñL+:0fß?™´’Î\ÈB ü$zÛ– å’úTŠ–TG¨öµ÷Þ¬Ò³f°*Bj±¢ñ†„®éŠ«àzObwvø¹ ;·PyPëuþ S;ël4Õ ÑµÜpÁíßÌŠ³KEK²n}{Ï¿Ùøn7à”sª<|€ U™ M­J ÷×v8S"¼ÁÐ( Ð/M3=N4Iù®†ãAËâÀ,M[±Æ±˜ßœêØÑG6… ]xb}à †`Ãì·®»¨5ƒÓ4ƒÜ¼à៌ÓlÇ;^•û±-X’¸åK)D¯MßËš ǵ˜´é©T\Ç֙߮ÙèFÿû%úM–¯¢–-Ü>3ƒ)Ûηr·×“£Æ2çb ¨(퀪Ä<²Èl‡&×WTöƒ-ù ÿ{>˜rÇƒŠ–¦0p.k¾ä6ºò#!wÛí¿Ž3wÁxòÅ<êd°½þ†Œd›ªpÓd™‡ÿ`¸…§É¨¹®úDß!Õ+Â;_t˜éÃÀä{w-Q[N¾ß‚„#õ:yÉ…2Á>·€ŠÕ´ý½ $µ˜ oŽxºŒ§|ü©nÃ÷BÝı­Tw5ÁyYËóÿMs¶¹¿ÜchZš8›P†PTŒ•ß1øŽ(ÇMô”9ÏÓÅ,›¼;`.ŸݻràÓ˜(è phl† XÈ}ïp$1 ÁÁþ(J'FK,cqÿÛÖòÚ9C®–û†º#"nê1ZEµÐŽ)°¿ÍÉ"íË•Òúý>«Gˆëõ Lì÷ƒèÚrãzvH¡mnlèÓýÜx1B˜i¦-ÛB1Œ 5£æ1»ý¯!’÷ÃÂ2´àð†a[¶wìŽÕçGÀrC`|fÆyÚå ¬9F„µ¨ÄMÝ8þ#jy/)¤7 8äœ{ƒfÐáôäöß™Ú?DèªE«ëö 5?GæáLÛ½sÀ~c$è¥?µ ¿ÃêŸ4f‡M‚'†còP΄“fÆÙt¤ìüÀž W¼ö»ÌA;ÓÍŽé…eG͇{ˆø”9aËÌ FÛ·á’0h‰J63úÌ)˃íP„ê ãn9 àUd™AcaÌb [ê) <ëQÁõ{{æ!ÍC'†gÆ£³ûJ²úì'ñ$8 ÊDZ‡Ä§ºG‚ürÅ‘˜`¬ÿ£©få‹ãmðe@8\Ì(€jž­'õíñ¶t??_ì|ì•üj®ÔÓWw01Üô«ÞÈ{™ÎÃú kŒ ä˜6o¥â?á¡’ú 5ÁˆÖŸþßüÖ¹-e¥a˺œ–ÌÃpm–c赎 µÂp›¾ÉâjùÏŸ~–mMÈžìâÆ6¨.y®ïYÆqd ±”;q¼´ŽÜŹۚ ¯b×G <ˆBÚLV†g«¼n°n@r;°ڄ=«aͶ…f +ÚLFðV%x,ÑáFs˜!ór¯bK*î#ß»÷ò±y~„Wsÿ¬<ÿÁÜø/ [—z¿úØä»î-µmúÌ:i$Lœ6ƒ…&`ð ŽÂêÐgžõ¬ÓÈ'Y¶‚ Îa¿ã‰›h»7d…œ×oábkÜv”èÆtG:dû5Ë`“›/æ%!Oš„öq`³&VY,Ñ…@#Â1t+!vT{ˆ…ú‰rw‰ ÚèÓ}z½(È/žëºC{q"ÞT¡º±´9ý1%¢ÖÂkáÍ—É-Žëvñ;‡"!<À»$)bDÅ0;ËÚ\ "©ÁžøæÞ@WÚq¿kìjŽczšíÙÜï %-€ìKñ%9'ãWŸ~½‚*ÉeT–…Ú<ݱœÆ„ß2$力ز qœq¬hL"¾ÛyDO(nC,`¼Ö¤ÔÜÄw>@5Es`ìÙ«à=Á¿ÇBï;ºtxqê×Á»m;÷†ô’âušk#ÑDŸ_ø–`ã“ ‰Tâœ1òRT™ò YZzã› «EÕ©î«gÞ‘N¯À³›k(4È_+ÑŒ’¿ t†µ<~†„úøžŒ‚G—‘‡ÔÖ6‡à™81üþM–2`ù)É´â´v%—¯x¾«ßYúhãJ5Cò~ê:ø-±—2ãQ`Àkƒû÷>cJ;7KN}ø41˜à&–±¿ ±¡1bÁõ¨o1ûŸÎf}Ï”@ØÖë8Ràöuã vN”VXû‰{\sz¬UüË 4Ž]ì`¦\4ÙxÀ Ž×ß b8QÂŒ ñ%$TV¸XI†~‹3&ìÍ<Ù/öÑœ3^RCP{'âu¥pâéF7•Ü ê°g @TSp$cxùMàv:ÃFwùñ¶p>æï©µ^S}¤àÒû­Ï…À×0¸§?D­ tâOè8¥©µ%Ä”P 6ýfM þúνÎ3ƒÖºÇ«|æk¥y÷Ýs/Þôbúl·°u/ÞûÎqë—e{T ž]eR¤hI¢Kì‘=ÄÐòŸñ$vRA¸! Gž kO«Ûn”¼ŠÎ¹£ÖgÄè¹±ÞøbÝ_n›]GÖÝ'²#q˜uOHF+B$›Ù^ŠÉ<&Ôï°"úüÇ0¦;Á5“;]ÅõIÿ¢±E±SÇU9hzf­øëç¾z2-^[ËêÅûLT-ÏEúŠUQ*%/ ÅdŠáFâÊCk`ýq'ô7¿:™cÕ»ŒmÕçÌhø€˜% êø3Ï€2_$¼TS¹4@ÞXÑxYÈÏ­è¬ é‡eW4½tcŒµéÒ¾…mÕä¯jMÖ2ÛÖžÂ1ÆpñlQ*Й¬·Ðuþü;¡_JÙÄM¿3î}¼h>ù™üsÉÅú¹vGéÑo±Þ?Ùr^Zà)4ëøUÅÛ®~æS"r,ûÙ\`SßâÖ:LÌ/ñ.S†@ã»ÈvöÉØmÏYáKÜî$•ݼ»ê EÆNÁ¾²hÆžº†S Sz«°4­Aój_e]Ïöítƒ&ñDo#£ ¼E=aØkLF1ÁåH§êf¶•¸nWâì¿×öœÊ’¸œ•ms$’³5/«rü JH° =r$ì~9¼3ß;‘XÇU­HLôܼuTû¢9[Üþ?Þ€…t{eýèªãV™5úó²Åø–V ýy/Xú-›–v2ªÖ’A€ ‡€ht¦ <üw¬8¾ï¾Ïu€wœKÓg òÌC{nzG#Ù¤³j1î J{Æ®EøÈBuæd?fÎH¯Ïèo}O³Çöó³Îki¤ð-M”¡`9÷ӳ̶ºàM·ƒ$n ·<ûžÐ+ªƒ”uEÖ6qô«éÝQIog2h#s4fxÈåFuÎI­ÖÄgc&Ÿoþç}åûG¬µõ!yÙ—?ØòìÊN);/µY+½ÌÀL¤ îFbVT6%øÍ–ƒeàÏnú¬JñB%¼´êbPZ‡)ÆÖ­@®+‚$ÍN"L<³Ëœx3DAxÃÑæK¼ùíg£`W®íé³qnžtïsóß6—£æWwß’y-'³–ºµ7Úå§#>UѽMlá–ÓCOʇÚ-­‰[‹JÏ2©‚œx%N ¹ÎÉDæJ—^ –fп“nö}}5@lktpÎCºÚµ™ñë^‡;ðØ~¹û&|íÐu_½Ôb«VG¿ T)N•”íÖpK‰Á§±ÄhÊŒ¨Ý ¼­í(G{?ðei^sgÁ#›£§kI`¾7ÆU¢òÇõ ÏîÎk7Ô5å ¦(Þבi„“öökÑØ”ä/“‹Ê9ÅìŠ6§T" $ªÕ<1ôÅÝ?ŒŒø2B«Ý€\líþ¢é¹/ÛÃBþTsÍÜ-CX†atÑLin±Ç³eϯ:5ðV()‚`•1Â1@è »Åü=ñàâä•ôk ³ê蚌îfèÐÙûo6k«ÔmIˆ70dK™¬ºpO›íz겸_kÿ®Èu.vÜ᱈ƒx¥­i_•¿¬h‡dP™©=Oç÷©ÿÓµ–˜‹Œý'žø¬uÀä† ‹4î¯N—ý´º0´ Aõ¦F4ŒÅü7D-Øãà‚¯Zo7k¦h`h¬ù 7ºçào¸_"êÐl“®î»Éwiíhhç:š‘‘cHnò¶©^òu«®@Iq9‘þBÔmÊS'·/<ƒ°ìHŸn ‹í‰ü»vú0sÿÕ¶%¶C²r™mL—Žöñç÷í½ ö S6= ¥Œp¤c /Rí À[±|Eø…8^zë8|Qš5^<9Û§=Èå+*»îf§'öÀ‰'_ÝÍÓ¹¯¸w™eá@)T…S¯ †&iãSPå½{õ4Xê'qg9¬æg \lTM€³^†@Êy7€§W¢®1‘ážÅ¦²q%pçæì6,¶?6år¦‚–æk(|š÷_¢ÿ|÷5ÛMËÓ2¿_1´ËŠHe¾€A¦Û!“W‚QPæÝk›qY4*dTvï)@ç®çß’á÷'…ŒÃO ú™n‘ C¬¯[ýçy~ÊfdØ ©ã $'¯ô!­}ˆžbÀèn^Ž~ž[ðϬ£¤um_°Yz е.¥_/€î8.D ê®3ƒê÷S{ÐÔz¶vãºìꉼ]ÀŒSÌ9² ´….jØÒþÃ@¢õ·™ nêØ®3R“—<³[Ëçè¤Úe13r¸Ýí«°­ÎÓ ÷qææÕƽȇõæÀ·›ÍžˆmoS戶Z´†²ã_0 ’vùXuߪ=N·Å=ª  âŠOÙÜS¶ÑžÓ)o }å-ìȳæ:/MÒS„±ÄUÒ䳈!ñ—®څ*”BöÌï³¶«ñŠdøµ+ÀºáŒýÿµlžø0û“Ü÷ËáÀ*­¤S*ÇÚ¼!"Ì 4œ4†Ô%š~y¡¬ùolFƒ6RàOó·Y¿ÚÂ]­3ä­¯°UPõ§•îVä¤Ú2³,ÆqLP]R°M‡¨"gNûÉ×*Š»Ûuñ†;HÓwÛ- ŽŠõ®#!d®ãž|„„$µ1± ºˆKªlz”ÞÌø2Ú£ÄA«a?g|>/wO­Bë ­£•À™…k3ßË!Ž6ÔÒ)÷ȳŠÎ˜HM@ê$ÊHA;^¹äºê (¥ jñ¯àšÏ’…ˆÛ]Â$AÏMþka—fW±S2+تŸ;h­²‚³ßÚ‚†xé õ®{Ï MóýªÑõEÑÝ‚ÒtîO]ôýÎsÇèkJSuj‘b?h”7ž?¯ŽrCQÛýꙚo3­nÁHJ”¶£$ÁÕ˜%`+8䯹ññüÆ”F ï„ÚÿVÀI_]ää ]ÍÎX×qQeಠo Z$²æ:xÇÝ /ÃDi´=×oÊÛ&™DŠ}¶eÇ™Tžn^„¤më*kMì?Š¡ÅfOŸ­Èù©h÷æW‘ºÔ?KЪës]®8ØôX(iÇzv‡²L&A— dA¼ $©§&w‘P¾ ^@Jx™£öÿLTƒ¶»™À`"hX9vè÷À>ÓÚÅHÛíX²¶pu_Yú\^JîkTV!êõ—N”Ê•™Ñu¾+êxç×9nIBº®êXL©¨àaãð““—È(Ø¢a…„ «zy_ÚìwaE…¾g$o K³õÎvÝæ9ûqx-ye3¼Ðh ¿Î ÄÅ'3v?\5OÝ€Ÿ‰WÐô¢¿).!4Aá&kÌ>•¶Rï©ÈhÝË_´ÑMnò&Ù \†³®ÀéåˆN±æÜDÈ×[ (óëϱ4T–Q8µxÐòòcðž”ÝæÌØó\: Yt »… þ¾á%w_ìlž *ª¹ÇùGa½kuŒã Êq Ø­ˆéWß)„ï!¥Dw#L ùÆ‹àü¸FŠAÑøŒ;^9¸ãc²P¤¾¡‘ 9$SôŸéJlL…tÒü2{.| ‹ë)Ê{ÕwÄ`ÓJÕDµÖ¯ŒQ˜@nœãõÞò„Ž9!Ÿ,À&ì_c0$žÌoòèp˜û؆m2g#÷Áþ]¦ú›%qŸP'ýùÖV˜WS˜`¯mŒ»ÿÙ$²M5ÅrX$ÂK¡dø\›àž÷ò+™íŸÔn‹FÐt!žZ ɺvCî±1²œc(f´¤Cà‘a‹%䝯ãÿ/Æ«]ï³Ëtóô9&A£áì š›}sñ˜ð°‡ÛòdPW®¹ê°ÕR16[Ú%Ì ¡1TäfàØQeO¾C0$˜ =/+˜÷¡ÝÚØ'•7Ýó™Sw2üô8{þ8-ëá £O’lø‰Í-_´0FßÀˆÓÒ>s\?³.tFLN…Ƚ1÷Ö?ˆúæ)÷ÛÓ8¿}Ìnœ Ûí¾[ QÒ|\‘äoÕ±»z¦Ÿ¸1Ü1‰Õ>ÈÍÈ– ‡–Äð¼gÔíY..]“"›Z+–üd8¢ÁO•Š„7ü€z6÷¸É=²'ÅFuÚK6 ²ÜvöÿChMáìqßêg˜Ê*ö¢Ö’—X6öøEžÞí°ÓFÕ9ø·Gü“­l9ñWÖu?íÙŒtVV+;n„r ôA‡®[¢ë‡žK;ÎrÀ[a¦×é=ï³Ó|µuU +ò.C0à²êŽgÉär6Ðu)BŸ®¨eäÌÂP=}Æó&0—i˜Àò£Œë§„<굓߯ :lÇÒ¯†îÉ]þ„݃WH£SKìvØM}'¨ñw¾±£¬ñÓý%a9ðaÐŒ+Ó0¬ ‘K€l0Û¹‰qË®T(Þ£sF7 ¸z¦…Å Vv¹îéÝѵ÷Ø1ššë0n3´ê42CçôGö÷âñ¯,K?GÓ ~P[:áFàtŽ]º³Ã½ÉµF_}:æ\Ç3ÿt·i­ ˜7}bt 4YŒ CúT3§¿%IíïµÕ÷D·ŠCÞ®šqã߃Á!Þ²pHrg†)(#0¹±æáN æ“~,]öJ–àY¼¬JÚ…tP/AXm)i»?F¡ª¦‰‡¬}¾…Πx­Ëa€¦)ͯΠ\²jK–Ù'<÷ጡvZE¯,Oeùx䢜2ap"}ƒà¶½–Û“¬’jññýï/“lh*ôCc5æþ1°°×êû+HÜ Ð!j` é°;N&¼–|z½ÝøV˜ýOxÂ…q¤<ÐI„ !4§\Ä4"0;·=Ѩ‡]ÜÏ¨ì Ød¯í-î‚Ü]ê¶@«ð¸ík?¯»]°l„ÇDS9w½Ã*3þ4Ì èìZOË]˜´Ç1.ø¼é2‰PÀüMê‹>¬<â¬XB8§à´ÅgŽ@’Úg•—äcõCŸv‡wŒÒë«¢x7¡á-–ˆ›‹§ ãý²dó%€^7sA ~=lM•´‘¹ÍnÖC }8!ÁÃw£7O”³5<Õ$3©»MfÂ9[í+{=žWÖ  ¡Àph<#ªD°o¦VD hx'4râ¸f¦fºÁýç á´ž4o¹Ù˜ïb˜ñWi×ûUZ=ø ÑèWÊn-,¸b³ù95eiËO™1­. ¯¿ÞÞ±Ü?Ð`eÿ[fx¯çúñá8C?IJ+ÿ+êAEÀGî€k>±þ$ô'•²£XR—ÐQü_×ð”ê¬S9–VÓàèö¡áˆKhÒ.ìhF»8]' Ï¡ºi¶¹¬À»þO:ø­É³Ò4E¢1„côÅ͸C‚ròÖÉ̳礱™ªÓý0½N?õ^Ƕ ¼˜ "µ‰ÁS´(©Y›ëS¤y7*Ú+OÍá¶»¤$ÜæýÙxýU]‘6lܹ 'OÇ$µ¢ ²a6=&íÖbHZ$†”1CZà$î£|Ϭmš1bUü•m‘¼=ÓÛÛó2s=_ÚP8ø024¼r¬^©ñÐøÄÆlœîÀ+ óã}½<S·š;#·"S¾7?½hYç»Ç;_Ÿd;©aç·çºµ¸¾ £½ù[ØÉdqò{l¨‡ú`¯-(Cë’èroÁ{tš"cR+þ/½”ù‰mòÊ™ae&§ü*ãª|yÖ¨¿˜±M‰ÙˆrBˆÁ\ÿ´MñTÃÝüyìc‡=(Òÿæij"á@:wr‘ŽC Rñ=f§-ÅhwMp6 å¨w–*u.Ü*›nD§ƒB´(ÛY$‡ôÅ©–„v}j_ A—P„\k׆Mk´ŒPWŠ š'UMB h½±ö¥Â hEÀ̱“¯ú÷m Å|V˜ñöZ…ƒÝJêΰa@6äй1ɸV Ô– {nðí_·‰íöž¥:£~m6ê­Ú~v6¸Ê§Ñà=¾7ÃËÕ8GUev׃K‰³¿^!\švCÃ"`Ò\9Io[ ½‘Æ|Œ×Ê9¾L°,©§>Fðy”…ÔrÃFD$m¤ZL¬W‡©~‰ç‘‚èéš)ÏÕÓ°Öù=ß㓸6@›€vÏRRŸü`Ú¶S(j‚¿ð±Nªxè D'‘g諸¡È´QêÀxUóÙyW>µq²€ž§‡p¯Î5pà|vjž¥ ¦í¦¤‡²ÏŸq‡«wVÔ¨¸*ömâHv˜—÷3<áùJŠƒ ö‹U÷]m82‘oZz傹Wjõ¾1"cÐø~bêøœgZ_$ôivv:¶æ§:T`EÛxKnš\ŽªyøìÃcåö‡Ó¯Xð mµí&{¦Ë÷^¢XÓ‚µ@œnóÐ:ÒÚ>à<ý!äî™öÏlÈN\yáp:Œ`sçl-›:Õ¢[ØŸ±>¼öX Ñ>P!æ¤>ƒyzoœ'–å´§…ɵ߸fEgž¦Í²ü,OObj] ¥n­ü “fy×kÝÓ@ 3QHÿ[!Å X@aþH–¶è+”Ž‘jÔbfÂ-ˆìDÃb–ÊR k(Ûê[CPöǨDÍ7"FúðŠûlõ™ .wyrŠ[õÿí÷½ãkNLHb…ॠ®ƒÁƒ©AÖ/šû‹5"Ð4+&¢ 9+k#óòàÛBÙÎï»ÇšpJczÖ`v¾I7¢?=q›âkrO¸Ê|”Íâß=zwÞ¼†JoñÇ{åö”¤Ò|±kï|Ïáo™8ú‘?ä«BOFì²®«5H}r6 €§r\šûšaîzï–à 03Y‡osí@4.^ó”õ…F­ø ú# 6 !:.˜œiÙ¢!Ùˆƒ|ë­`ÉCãɾ]pzÝFdäl} ·*+ŽkNH¡6aË–Ÿ¤¸R š€_ +ã¨u˜»S=³Š„º®Ìy¿ÒOL 4,¬¿Åʤ‰êã™V3JΊuÖÚ û•¶ò YäbaÒ„@¯ •Ð ÌòÀ sØ"º–(N=@aC/¯Î"ì{aâóÁzލ8÷Ê p%ç¼ß¬CÃî[•â»ïŠ1刱³+®/‡"uƒ¤‡œÏ$óO£—2¹e5A…Î#"«Ö%«ëÍšÚ0Y"Gä[ȯæÿÊ>Åàz'1åù6ñº?ê×ÃkMÇ+¤ ºv2V‚ªÀ¥g²­IØ`ÄýÀßòþ®5€ºýÈJ¥¨| ì!ðÇ«>µ=ÿm먂ŒãJc|cÕ<]œ´ýs…ÆK´Sw}¾*7ÕÌh ÷%Ê~öÆÙ:wql¼HÂ}‚µÐÿƒ‘`AD!„„Cдx£š»æ7æö B…ÐçÁÑ–nÓ@ÓLcÐåcL[ C^>é `:"´ ç«f ÓL³`…¦tBÚ°úMqºî1ÔaòÜ›½b C4`Êd3YMCD5PM(¿¬øÓ:ÆìTZÌ?¦=ˆÔµ ã\`Äîé‹ZŒ óh¤g˜ˆI »‹Â\^1È"%¶À–WÅàÚŠ]‘31ÆC ˜…XÆ ‡NÝ%º²ÚÌq†„ÍÆ£î2KɬpjNSáfîÝŠ{(λk_óoHð7«–YKDüÊÜ÷•šüM ¿SΟ~Y “êôéi_ ž“Q‚û4~wbP8Ô˜ÀÜ ¥¬úúbåÁy/åd¯†/Í{ºK}·a­¯h³yÌpÍ Î3C^½¢|Imü+µòõWÙísaŠ,P–ìAª…6q'Ú¯SEsˆ*£ºk&ɺ/Ç ;i€17÷ ÏÏŽ”áœÁj²³ Ô²´ËjÑZZ†Ww‰<:æg6uÖô86ÀV+ì^ml` ±°ëðNš¬|…œ ¹àXEЋ%Ç|»U Ýò ,š‘мwÞæ•~¼ïPñš09–ÛÖ¯Kᨔe ÃO”_°ƒ°¬wSUsÃîšÜ•2£ü¸6™Ë!ꨓ[xO'òfúôŽó§ªÖç/Oøg!±‘ n°æmú÷¡Ê¸A¾Na¿XxXòöU6!P­]KÀÍ^5™æ(¯&‹EÁdëtïoj„c’x$ÿbGù@÷¾ŽZtöس×3…à&4 $<„î!ǺZkulLlÖ'gúŒ 鉒x±8Ó5’¢É:e/@°`@÷áyö5/ÕÕÍN³é½Ü*.O‡‡qQÚí¯Áïõ²'ÉpwܬÆnš^\XâØ=*Ñ€_(˜Mé¢åFðWuÈäwÛþ¿›¤pÇ#]w ƃè®ydƒoà`œtòÎro3cåQWºixÉúÄjál^j+ ^ G­öñÙ[ÈeUý7êEåG*`èíåKÓjn—7Ò÷'³bFøk‹(eJ4oŸ÷!rÍÝ-·;vaí©ò’÷VŒäXÈñ†Nóãa@B—˜SÃ+›ve*&. ôã„E{E6«GYø‘ËIkáõã8À¹ëô CÒòîbò4&qˆùQ?ʇ×&1ô†'á]¨–qòðqj‚>^Q¯Õ f/]ŠxÛ½öÑ}RÇöS×!ùÔÿ]ˆ¦dˆ·VÚ4´#Y]ýðæØyue6šëEB´÷½Æ>z›ŠÏ€cŽ73OBÄCóDýï;šªÄú±¤Æ‹”t |ü |ì}\…ÿ+•ˆ°ÁæÕùÙo‰¦—“<Ì“ÍëÝ€Û bŒS‚Lé•ÝôÄ¢<Öý«Ed?;,õÌUȰ|0 ÚŽ•GdÄ×CöV@¯ÔþÆ-²8 n»¯uÄã”vh G¦™ãEÓPQ·ùNr”®!}5’¹¤­)ùKñn)_VäÀ&aD+h* ¡›ö÷ØjZ5è/Xû¡C¢ör´m„o«ÎÞ8{¸Rü{t$û£ç6ѶÏPåu6‰Ñœ`„²”üP=q¶ïÜ)W&¹ªó²SÅ@“<}Úêç"ÔÚô’;Wài+;Ö|ÎsvÎaÖO®ïÐÔÿWŸq¬y;PŠT["‚5ƒè¨6E!¼ŠM$RÏ–Å.0”USTð"Eç p€$…@$Ùëæí7ÊºßcÇ^h°µÁEŠm>Û‡ó´sX?K*¤f1º³Ý9©î85ŒŸ;ïJLø Þ$G?Rß<Í…Û&§Á;õ€ÿØIœJ.‡çÎ0æ©õ˜aÊœì%ëîÄæZê(ž¥ÇXü4Žt}½é þex|»¹³aSŠ€õ9gºhSDxõ!Jí\t§T¿v¶9¶€­e=»â?ÆvùÂý.fÚÊö¨0]¡›c=ÓˆTÿDx¨q¼hP âsðly|þò‡²Òoɍޝ½úÊuU.³ÚÝÉÑYŒ4aæOîùNØ ˆ3-³¢ï˜ázoœñW°Õézú ËÚ 6seϸøªe`9ËwQ×Ç/Bxï/ u•·ê€fÊ`üÊ2zftº”äèt!8‚ž™¹9in=´U•M·/n5ÝâߟC/¬ÒüÛy:’™ÿZŠCÏD< üNŸåtaRS?Û›fÌÇw©ýÐ_î—‚Îj¾¡*Ekë¡7ŽxU×Dë5ªü+` 'Ýe–ûþ¸¶øÔªÞ!ôfµý®ZÃzÏEl?°¦|åŒåc-nî:9#à<²hBo ”;P“L€]Ÿ†c¤oa+v5o]Vt…_µ–9fŸh?§Ñ M“Ƕb2Uñ-|©ëÀñàù“Ø{õ­Wo§5"nâª÷ÍÅvþ³_¡=‘ª¬´ÑªåñêŽ&¼XÔ©._¿<Œk|‚ÿ}8œd½ÛÁñ9¬¾3› fjÌY‚Ö¾"s™çml¤Mãð öZn…å冼?å¯Þï=–M(¤¤ ê{¢jRÀï .%ØÁó8Å$Á™„CGéŽqSR€Ð+(‚«R«˜¾"{«²pŠÐŸ[ÆŒe÷˘¹çwá©ÀêNÕqhÕ„q’vAŠB¨&¨VÁþ„³8çõ¾nÐW}߸ÅdöÆ;¡¶8ìè’ülDÂ|«ºS'ÿ“i”9"dOö͸Tík?åËžÒ¶JƒœÂ¼äâ´|§TþºÚúM;Ö"ùC1€†$9|Äé‚äô ƒOÖ*¯7 bEÔýá-FËþí`äB`=I€Úâé—1´ } ù¦Jø³Wl*‚_™þ,q7dÓôNZË‘ßáLÌmöC•K¸ï>PÌ{*ôî¦ëNÕ5X¸Žj%7‚T9ÜqÅŒKBMb„ìJ &`–5]ÖPgAP iL cƒÀÌGsÃ×Z{°c%¡ä§o½~Ieij+‚šA¨ÿr¸ÖX@þúG¾\ÏjΦ¯S¼¬Zíoe•? ‘ÂjW™Ú˜ãõ’åêÿi¤¤÷ɹˆ¬%ñFºýh¢2„ÞJª:‚¹¬¶䉳±?³^F„VDùV¤ i §ƒ¥ôpþä"Õ\¬0C)O)€K¨XÌ_FqÂiÔXN[Dyæ t8Öd Ó‰ùàüö.ÙqëE g‘þ3ï€/Í>té° â:nïÚŸšXnö‡À5¡ªœƒ0Ѩüo—¤ykͶhÂsaº?B»n&0ÖU\+ª˜è8F€p¤SðÎ5âôhzDèü†oöÚËÐùkò[ƒYË1¥-å´Øi¾Z åŸôÞ“—´ô¿ðß1×¼ùÃÐÖXÚ Ô¾·ºdº¿åܨd¡•l’ î|ÑC0MWn÷™Þ¶QÂÚO HF&Bn˜íhËUóÈ.U‹À?(»òBÀ‹yegà¹ôâKÖ —–þ$]©5Ñàÿ2#¤¶´’ºüIPËd@¸R~qµ#²1d{ÝÆLû<;+…ôµYóØñ1Ók4ïõ¦Lo€4"¸†bçŠçŽa×5„Ifb»!ù9ëß]¾¥všQ„¯B¨e Ïí¾âOä÷®g«úhHýT¾œið2,R˜4’ ­è22Z?Ó•Ò?«!*]]~l[£ÙÓè⪲Lu`Újc×J ß!Ú¼ £ÖéÂ+À ØðDÐ2[ Wk >0æðÄ”OKh´‚ãpû%PøvÐÂÉW;Šq¢Á*ZT)ˆ,P¸Ó±”–=—5P½nä» ÍEÅÆã3þ.î©ï¹4ýƒÝ`²M:™‚‹ÖQb¶JÇ—3i¢gÇñf®fÉ)-qäÚfmr“EÇØ 3%ðŒßͺÌQªé»‘»Ùl#M}÷@ÌÚN°£Ì0œyùÊ0ó—sŸÂã>ûÕ¶k:ÿ|wß(8)E½}‘•aíÀ.P7û\­n…öx–ÖÏ­«ÔÇ0-óK®k¨‘$@Ü S촲ˆÇêS|ÜöÞïŠçtëUÖ·˜ÿˆ×ËÇíx¬8&NS˱˜ã¶¶ø´5oœc’ž"¥Ô³`[øìŒ†ü >û<ðvÌàeM%!¥-¿[jp)þÚ¨kÄŠjª””ý¨{J¶ €OÌ ÉÙ•,™%]2&÷`zqìØãïxé÷²#Ìsë£å”sYðsÓHX´Å¼Ô.Ù¦ú²@l\§™²XÔ(âÔÅ©† ý eþ bBlx£ö–L¤(-5‰¿ýVk3¾î÷‚€»Ÿ½à =ÌDËV§×Nó4™mÅoVWÆmÚ–œôfá•GÍDb¿]íƒrÖÞ«:ðûœ2`ËŒà7Á áÖ³J¥'é5¨/¨Â}@#ˆU4,¬An[ZEä J0û\MVÿ\)%R*Ôâ%ã¹—u"3†š 8³|pǦwå'†‹Ö͇Lôÿ§åƒg¨ Iík¢*UÕÑ‚Š! Ûh;NG“â¶¢€ä¤Na³h4œÚª(¨‘ #d„MmÑí¯çnQ ­ôããà¢úOÚS´º·.Á[ÞäÒŸ#rE 9¸Ž¥.ƒ«ß)¦€¶õ¨¢Ý®ÿãqí+“‡‡á î×aäš¡¯²™<Þcóu ¹î¶ËK_gà,´ÇÝúÃçØÉôë L7k[~äV˹õÇäœôÜ“§¯ùNŽ€QÚï]3õ:®>B­LÏ­ê&ßvLb«€°òܨ|÷•í»°L'š$æ·~ÅoŠö{j,X÷¿8|ãÑ•qŒ°ñôÆ E–÷ êMÕœ ðƒÚs@0&i}4_nÎ Ì –3ç”|'²yFÌý LIS GT"ÿH³W¼ Ûîc0p0s«oU°q•@ë<&Pí8“O¼ Àh§úŸ.cVèæY%Ã÷0”+~НwøÄP¸<ÒéQôõòPbŸBˆ¤Î°FãêÔ×Ù÷wjO0âcZ¹ÄnåUì{Cvg[Gs”òYÒákmÓèÓ0/¸^£@æàëO3ZZç졲]ÊŽÙíáD¦ÀÊ/£†$¹S>¯Üµ¨uƒ”WfÖRDHúebãݰNF,1‹ì s-¢ÞÓ0 §êIÊ–I)‹Õ‰µ%<ៈ³hØàø¸Ýiz+\–0»Êµü½ò‡Ì®d[l0;Ý%´äÊsmý§»ß™?.v¥QD´Žò"ö³iÖUÌhò”¡‹¨Çj)½µÊ7µS©‚fì3mrψ¿ªH$máæÆÎ[Ô:oôõ ?M¹ü_ZY—Ÿ„‘rl¸žfØÁc†#Ä5Iå÷)ëƒr)†;{=Q®Ìó¿ §Ô !HD´é{KšÆ®8¯wûë¨ÞÔ¹ˆ›{²’„[KŒ˜’Î(·±Kõìed£t˜‰²¥b”¤¦×xVÇÀßfÒhóxö-^/ê• æðæC3£NU³í5Ãv…¹þ᥮.ÿílgšˆÞd¸â´O¾}îÝ>㤓ނF£ôÍ3ç‘ÞµâH‹ÐIMf†h:°þÇ uoñË¥®YG!‘:®-Ay8EU6eØjÇy4AÀý Rà‘f˜w^ròý†d.:y¶†,Îrž:-â?u>Äóá[ñm Z»Ý§Ñmþ‰Ü‚£ÿoüšŠèUWp”ü_&¥^M…ÿ³¹é7Sì_7»µ vŠ@„‡Ž\²‚gPª“ ]§±õ+:ËY ‰®Qø‰çëþ±ÌmMª Ó9¼µýnÙ?­ëG½˜²x .¬weòv­™ÂRqZþfCBU.£€÷á·CõÒ ÞC\àÜvåL¬¿Qmàùô‡ÉÕÂÎbéŽü€ÜÒqÈ@ü¬ §s Îa‡ïª¯>S7±öcy}r£$ÛQ5¢ázx[Þî¶K&Sߢ‰ÉÚ•Ž@pÎ`œD?ŒÆF¥ ¿2 ^-6Ò‘hÎq¢q0_9k枨~’€Éó>¯©Ç±–Þw >ÒÇLõîÈ.ÀÒ’mÁÖ9Y½ÏVô¶‰©²æ…|ϸÌü=~n”õù¢£­¾x­S›`ÁƒbËÒÚøJùIÏMÊâhnëíß< .³éJå#º…ªSÎ Åœ¢ïìÁkØAÀöòÛ)Y[÷ßÆÍ’þEy*håçždÔÛý¹»qéõÙÚ´9‚ʽŒ'dù 8œß„­¹h%¼Ö_³=»©â± Õ̹ÃùO—¦éËûe9L~}ø<À'bå 4m=nEbûÿ[È×êp2Z^EØf„ù`Á !X„x1ÿ©ÅöÛ)í'B×Ú݄WÃâj¾Dƒ=rçÀT½šé¬%9jÊà䶦™‘m]kN´×øìŸZ”^´A«Tîjr8–A ƒ _ÞÖ+uŒ-òÁ¨¤+dCààË@ݬøçoœÇªáæUkÌä£ ßJ8&UÇ3%+Øùaÿ<·r€øDQÈ*Ëì]NqYuV±» 6âOü÷v‰j·8§EïJQ=áéz†Ð]DUÇëGÛÍù\Íì)²W^Žbå°½]çÉ:fºÿ8YRqsðCY È3IE-™½QbfðÌPP:‘nT2Ç+£•ñ¯$EäIl"´;*—ŹavyŠǃV„÷`»¤´(ǧŠc¹ê™dFrÕ,ýM`ú>KˆÑ“ÃÅø½Q¾ÝŽŽs^jcÉuÁñEe¼ p Ä¥9² Á”œ{Qb4Ùºì×ï’ˆ ×*ŒúÑW}Oæõ|ÛZ:ùW3={S"Æ]äål]ÏˉŸËg©"‰c¤¶(5œDáÞY»ÔdS[@ʧHSÛúœ:òåã =Ýã¦_ɇýú4y_.1Ú™é>&E·žp]¼Ä¨$à‹7¤v`݆ÓNööhd‚4Ò« ØQžj…n™º•ÒÙáÐcF¶õôÿ[í—dm5b´²Ôbéý}"ñ‰Â¡JDòàf‰gµb$o¯ÓÓ¹ÄñD+ø}‡ [à\¹Xí´–½o}ýÝ}窷5IoW­Ú4À !iù êG+¼r¶¶DdúšëÄM^JZ¼SÁ¶2þuQþ+¡ÄÂaƒèê|c¦|¬WÔáí0hrG|ßüVK`ì‘` [ ê+nnîŸ0nì¦èì–&Õ£íÆ-ç³k¥ÎÆ6zˆ‹‘Ó¶^µ¿¾{ê“à¶®»¾t-ø nߘ©MØ´¨?•àL‚›NÉ…æÝ€pÅˤŒN¥]¯» ´üùñµ×å…^ÝÆ }q££%Ä•Û ôÆáè[#]6›ßóuïùoâÈX¾N3`pÅzˆëÍPðŸ¸ûA¨6µÑÒ²Yê"±Æé‹ŸZ!^ÄÀ˜A€1KãQ[Í—_•[YC,B«ô Q*Ä…¿èu˜{ÇUóùÛf-ŽýŒt=OÔ>‘]³Êi¿uã pc¹©©ZaÁQK=e*(ÝϦ‰PÜGÿØ„+˜±¼Wc‡ãÀHoÑý¿~ͳ;ÏV±äGÞÉb÷e‘íùf}L®¦ÇFvˆæ‘ä»ÚQ­Çsé'øÜüQÆóöåa×9P˜AÂ-)I ù. ­°ü5n0mÞPq…j|Û>XàÊ ¯&%^@tŸ'_/¿ùZ-NZAEj¥ËÔ ä{¾Ì=ÔT¬5¡ñµ3†kÌ€‡ÊÁ@9A’:¡õÞ¹ªæ…|ÀQº¥;‹`þ!Œcªc Æ0ãóG@|~+‚º =XA\ˆ÷`$;“TæŽü±Ö˜´d:d>›íÏ ñÚs»3¦ÏŽô€4 îxÊ¡4ˆ±‚1¡ "¡(,¸‚'{ÁX0W¬Q\º€Ç®‚Ö(bC¤y–[7 ÐçÍ%"{–Ë»¡ 啊Ȩ`. ÁÁBCTJØb¥ÜÊé|öÁH]@»«B„±‚Á^äökP¸(`Á[„Ê+#7B„|›ží˜1Ñi€âeB!wl5C+uaŒ‘bÄM4JÓR. Pñ‡iBŠÒ°bGÖ† êÀºˆ@‚ÆF(‚ˆ¨EnF)b !1‹   Á‚ 4B'°@†jcŒ„B€„ AD.*AÑ_\±!ƒ±U7(*"”ª L@tX €Å‚%˜,±`ˆ£aˆ ¡"ˆªØ‚(X€¬‚"èA@±³R˜ª”ÅR1»X1U,@A@ {Å@»ƒ#v…¹„A„@M6* ¥Ø¤b€+v*­ÊP@NS›}ø;&+ÀðGMƒÑ‰„÷%™qç.ßÊ ‚8£ê‰¯&عNüI2 ,æ¤Ê 1©—Õgc,($Gô4éŤÁN*«jcP-|®NºßyL34kT‹4évªÃÝ>œ§©œÕ}·ü#`ûÐăCtø+̰ eÉb¥p$¶W÷­x#xf!Àk¬ë­:®Ôðï¼ÉØ|ûédç²Aœ¹wçàž›œŸ¾Ю“yxïõ }eXÃ@s ¥ÞÀ׎QJ8uS+Èýû=ÕÔnCŠÐÄÝ%Ùˆo-–IÊÆ£Ün4͸’¡ÿâÞæü>,·ëÍô=–ÙKÍ];‡6Ü Ð tê¯{xBì˜Å˜Ó˜Õ±!xðEbkÇ#‡Òc¸4xƒü½`ùÏ4ñÚ1î…À1Ž›‰ä+{^4`Ì ðã4놑ƒÿo3_= oÁmvJ LËV„¶ÙÊÉã/ér;®ÙÀ­‹ëðzCI9!C†uøx~‚ š$!E³`E2!ŠœÀÉA7üÅd™MgHV ½›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€o|7½¸7Ößsîß|õöûÍötôö×®îìÛµ»Þ÷{#…ÝWw»ÇM¶Ûßk·ß{u¾ï;³Ý{½èœöë{ÖÞÎö½¹íïbÞó½Ú¼½½ìïmi_{½ñS…OÄÄÀM=O`™1 š20OQ„Âz&Â4ɦ ¡¦ hÊŸ”ýM©©°4˜™4 L‰¦ÓЙ ˜ÔÃSi„ÈCU¨“É¡¦£Sщ‰‰“%?LɦÐIäÓSiš&˜ššx§š˜*~§“Ièi©†SÈɉŠxИÓFši©èÑ4ÀžMÅ)údÈÊm6‰“&˜ÃDR„TŠm h ä£Ôò`IèÚ4<¦˜Lšd1I¼ÔhÓM= 4ÐhÐÆF$ô2š§•?F#L#=SýG OPš`TóÉš OÍJ{L)±Oƨ"©¢f¦ “OF2¦§ù§è LщOÈÉ ÐÉ’i=O&š'Š~SM12 §‰¨1=ÚF“4Ñ•=‚Sö…6“Ÿ “ÔØLšž™56¦™¦“ÀOTz¡ dÐ4jiéˆÄž¥x§´˜¦jzbŸ¢4É™ ¦SÈÉ“ÙbŸ¢i¦M#mM4'µ4Ä'“L‰úSÁ¨ÄÅoXhEnèćˆ C`À:HÃвdC0! J„SKKIB%ºÒ 0š1Œ@ÃTbB–R*Ä„DhI× ŠDb˜"D‰Ô ”4÷bIr†’%61‚”H4ã&Éd¢¬Y‰%L™ Y3†°š*„ÁT'• µŒ ’H–¬bB”1$„1ˆH¡§+&°ˆ™@2tˆH"2`dCñ21$%Á$8$$$%àŒ(˜ ¯4%©hIƒá‰ØÄ]/Ÿ²‰ƒ`n>8 ËÐ_é$7³§ˆ¨Ø,ñX„%”b´0•ÇS£, €È @@0g1DH`D)ˆÍŠã­á@áXgôY©"Ábvz`(óç ¬/ÃùÐÑWj¹¯2ûOþ`$ZÄÌ#îš)¤¶OZùf¤ 6Å<Ðz­ ·5‘h.7t•3/m…¯”aŠiT3LÑYjäÔ± Á²}¡XÚJÝZÜDA~`“.l^–:W’TÆ\âªUÄ)ö‘ˆíˆC" ¨sp‰€³ÕˆsŸ;OèÅ·eiŠÿ€teéœûŽoÊÀž™”^Ü`®ÝH’¤$¤šãrKi¡&!,­ãÊî÷™Ê.«q,Z†G"°¦Û…Óí¡|Ѻ!l²š÷²®ðÔ)¢+>¯Õúˆÿœ9±$þ(4³…zM¡x‹ª™Åayäþ‹7-fÀ2S0 ™2Éó¸ûØCP44 ‹s£ȘLæ$h±<ó³¯Ù¿Ía9\'ZÆ­î³ÿ•9%0G¼·üLØ  ü=KNÃRÒݰå¨Ä › &0b©5'öS”¼®wcZð)tÅT rIõcÑá«î³*û†N“à6ƒ¸2‡ )Ãv>VZ¢ì'±ñúpm©ûïY'Xmã¿Úº[J`'ѺDˆ˜¹nvG`î\ª5§RØÛÜFÞõµË„žxcæOÃŒlÖ¶ˆzÎÊ%|«›'W¶^yü1 p'úS6ˆ+Ä?B¯&"/©vk¡º¢]€Q‚ŦÐùÏ4‚k¨hKgL–?Ó×F®¶Ê8³ŽÌ0#…ûá ﹬+mW_ƒ*’ †0^ÉDO‰ãh“aõË2NYô6áuxdjrF—‘Ȧ°p¡oO$t•÷F¥_lVÈ®’¾Äyˆ?—[ãB™â«Á¤ßINI ŒÇ'U%GFèåC +ŸÄ € ÄuæØƒ>ÖPö Åëmgé®Áª£M 5stwEÁÃë…#¼l¹œì7‘™Ø”]õ…”€Mß,EèvÐ6&ÛÓm¡6›M‰6’lcHlm66’m)Ö`6E‰b"À_kß›{ác³?·mÃßE„p+oãùÓ\Åj€hÏøS·×¸9øÑ·7¨¶` ̕zºWŠù`›"u¸ûåFï3£ÉÒiuÛkõo%A~¬kö[N gÔDGo_NrÞÝk(È›S¶Mýz¢Gx]£G,Æ*¡ à2§©ô\¬žy´™u[ÂØŒlE{PÔvë}©iþÁ.¸?çÂ>{O G“]/ô[¹Ñ6â{3Üx¶ bk|l‰l©(Tz&í¨0i«º(KêiÚ N@¬þBÂgÙó@h='ž0ŒÙ†Å‚1Ë*•´Ã·¦ºwýu‡ÛpzCçb0×í4õž8Ó4@ÅÈ£¦ÆÐ9î'>vë:‡Šº™*9.cÀ»”N-ºj-Bp_ã.S—ŸFQÁw–å4+­‚Œ¥5—æxHH@ÊÞoÿmí ‰MÖ7§F‡\õh®oEÚzн§WÙ¿øÇr2|ÇŽ€ó'?ÂŽ¼b—Mœ”¶{ÊI+l|u!¿ñY/?VöŠ LØ¢š†û¤¼ }µ‘g¬º÷õ°K9ëÄx…),nÃp¬Ñ^ëb‡Ÿýüu1­7Ç"ºI &F]®¬k"åïÙ÷¡%t¨DJRT¥7xjë l|JH<©NBÑ(oØdÃNÚq9špÐÛ€@@!)w‡”±ýf¾i¬Š^d2‘913ÚUå|²¢w%DèŒ%,³afl³<œÝÑaÚu—FÓ¿ví±úœ {okõòÜÝjé|–Fu•è²xK\=†§•v0°âmÍçÞó9Ä»®‰ÕæR=íž‚5ï²<0YÕ‘\Kru­åU½à $C´¼u)ë«9í֦ǀêÍ¡öõªøeQKã`âå•XÝ›2gs¤k¿†­4Ë•/CÅß«=}!E¢¶pyò£F£èïüg"ôÐTúÞ=b«Å(",}pÐÓ¿[«d–ýÐÌkT¡°”–Ìóù(Ö•›YÅ û³®u9$Àò”? %ã€øÖSÚGÁ1)­}HkŒkØRˆgû»ŒÐðA–87ËO-¬» Õëîˆçæ:qn=hŠ!æjþûo™ßlqÙΆZ3ëÖ-fŒooF0uªdýá7†­–2²×ùÖï3ÖE îWt,ÃÞѽo޾À§>?';¸gÑø–²,Ì¿ŒNÉü±w\Ücq£™AšªDá¬øîK¦»¼ÅøÞé‹ã¿àMõm›³D*p(¶e1@WÜ$'6/Ë"`‡d-‡.Oݳ1yÖÞ'î|Ýu‰Ç»ÁÃ`UÕ[é½Ð¥CZ´Ì,ÅVµ<¯å6ôÅRDôÇ”/ïà:òR&’盆½P2鼨t $jrñ_3p áºÝJU4½j–4¶I¯]ª÷µ€Áo­˜™3á`G?\hÈŸãíù0d¢¬ò[N¸{1®…Œ€ù]¨¦Ø9®UýQèÙ²¹¤³PR/2ã凞 »Ïu;Û²{© l1%“,¢xŸÒžz‚±‹<_È83×U`.ç¼kóÚ4jþ`Yo¢£…²6ø²ïØÁˆžŽÂÉ!gWJ㆓ÖÇ˾b–lÔð peR‚Û¾&]v–‘KI’Ÿ FNV}'²lT»Ò×Er/Þ¨68 „9\¿£¹‡áô$ë’â÷t®¯AÎÉwNãö B3‰'xÁ^L—Y«P¦Eú_vçòjO…`³¾Èá$—²YYÈ•±þ)æõ…BR§Yó óK’Kô¡6]l.Ãøi¸ýc<œ· ¦§v ³74÷Ä"UókëÁÜY­õR}{@—Óƒ[÷¨D/Ó†ÞÍÒ”ê…ðñàd½¾Á»J.„Á¾KùœU(v/ñ^ Iɧág”ª¸a©8éñêvV¾:,áä®âØpMÊZ‡[¾K­3E·Ÿ'žë||)³ÅL*øÔ×ÉðŒWG1Ø¿^ÛÃÀµóíanY †%ÙrY³gm©Js+~g;4ÿIHS}댱®¼ú jŠgÔBGø_£uddÏS¼n…xÕy~ø´4L|Ë6‡[‹Õ±Íèsg¨WäŸæððдÇ<”7ãËTÎæ% -ÔÒ#ñ²TUn §÷vHùWC…RA}píP`3§×à!,Ó«ôÍϼw#èf™“Óîa¹S¸cÄRºxzr¾ÎQp¿ÔÖo×HøŸ^œ;x˜¡ƒ-ÈBQ‡Oa,Rï X1¡sî–,íò¦.•¿S¬qÕDó•–`Ü6®®‘mJϱãZùÿ®/>Š>%ÿ3ç'òGÓAHLP‚{[wcãië…qSmñjÊ«¨*«Lª’Ì%!Ž"ùÛO8?›ý‹wÈþ+¹xS]äEt£kk!ï*¡Ã“ OÌw0Pãp&\e¿h©å_i5”êÚŽrüë)}uÀrŠÓ£Kv¶‘ä0¾×'•–å)!$º°v:¨ÓÒf ýò*½?Í'u¨¬Èø´?ŠÞ M¾r†¾Pî®Rå6ÇO&^å?‚ˆ»/Ù®[v_‰I¬{*tÈ)5ÇË öÛPÙ³7†ïÐÒGKy× p î%`S1ð8ÈbYÞëœM¼xèâ‡ËŠƒ,÷˜î[K•z–•¼n¼RüÁYd”iãóM€cø  µ–ä²I÷Y©¯øqYkP:«Œ! ¦Etõ#çù£Ì)L×,é4Õù²á¸înD„ò­Að…;<›$¡Õ•)F#¶¨èn÷T¢‰õ>3zgjz5®2̇8ÈoÂ6Ä,)!b‰)졽|; …šÁhH éî<`Ãe÷ý¡ JQ©ŠQTëô–`èeXžÚÕäêB»€(<€*ÅãqÞ÷q”Ó£ÝΩ¾J`€[€Ðïß•Œ ÿJÿÓu衈áï×üz!ß@[ôV·‰JÚD6Nr¢Ú¾¹LúCHLݽðŽ=zaÂm¢í|5C—–?ª9Ék1d¯Ï2„±SÙâ‘Ƕ¹Éˆ„oBŒSp°Í“RŸ@JتAKv¼À4élhM,Þ Ç†°Ä!:Š#ÕmF%ÁD¸×;Äï ñ 1ü³b‘v_ÇòYS•®3Õ–(Nz°|wþ"5¾[¤JXÒ{;-| zX¹¾’œé''ÅL¹I ÚÈNÛ9€ã¤ç­¨b5QB í‰_v`ØJþjN·&–÷]p-äÂø€þ_i]ëƒãDÍÔéñÏ?y—Ük¦ÈDgWh…àÈ"_O¸ý}ØÚœŠ…ðŽçÁ>XÊ`k:Ù9…âà0Oµ9 Š.ÁÈNBîÊ!ÑîIà¸0Z ÐÏlÐŒÛYY—yFé% ×áâ©Å¢<ÊË‹Ñq ¬"L„å—Œ •`ÈW” †£ ‡!"²S¨h1I”k¡8{bi· ú¨K Œþ—XMÜx¼ÿ2¯ Ê8PøL;}V0f¸ç@­‚|àÄÈ»3uB¬¨p ‹Áx.2Ps¿zî{szâàj-¥ ž§GŸ+¿>gts‡vuö%Á‡ÝÞ ÆfK§éî+1Â⋱jf¤$[±?ýÝR†¯ ½䩲ↀo‹ð ý†Vm;{F«k—@'yЮJ¹4È—vn 5¼ 2v¤œíŠÝvcfMÞôÛß×m’ÇY<ªÜÕö_9^®@[¨2‡|vIø{‰@[2ÈÝ">Óž§È¥8þÒMÃ×zJ×À|(9ÎU&˜Ì7@hNAÂ9Ï™<™û: Õø"…W†|bÖ%&ç¾ËcG7)¹9*fM]HÖÐüxHd?{üXß}|t¯±’#þÉÛ¶ñX=>þƒ{qLk“ýZ@^Áxs»j—C˜¦îiùõY+›ý2¤þ׫ gç(3Üg5˜;Í![¶j·x~—o®: n3î÷±+®þ¢êcK®忽ÒïôSÝ÷;_¯´•_†ç]ª ÍŠ>I–k˜œéÆîU3¥ ¼o1«Ó %¹Õßžî+x­ÖÅi±Ët\µÉßù]t²Ï%FmÛkˆç5Ÿ'#iB{–¥òr.Ú±ÜûÎ%r&¼YÞzñnÁݬ­ºÑd»ÎXù™™Ã:ŪµÔÕØ¤…*èdoéöLörïž#ÎWÑWíÚqVvL3pH¬Ê+éÁž )÷=z”‰úh#¬©uº/þ”ßK¼A½œ5Ýn }šE$zÔhª‘ÂZ6ÒZ¾FèF'‡½'›èñN™³öÕ Ü»9ú¹Ï©w”;Õîê'uÎvz0%©ß¢Yü’HvnÒ`¨-î—á½0×J¯û±=#ò÷·Ìßuý­/OŒ† ü°Yóª\j€ŽþÀàìaùâŸé ªÿ9î9ˆ´—ð·;°ÙÎ~qz‰œ\ðÈÓÛH_}»jI ‹·Z%f.¹;Ͷ5nQ/$~|ƒEÏs¿õßdz±»ÚíT{C7^(Ð;¯–EØw©ò™4‘$îÑÂÏwB€#.kJ÷Ö¾c158C4jà -ôŽÓ(d_-8åƒì°çRv`‰Ñ\óŒ§@C+3ÿ‘Iùë Ü/\oÓ_þâôfbùb%ë½×ÍyZˆ8TÖýëL©-–*ˆÂzÂHí Š¤šr½¨b=n0½þ –~!,7ŒŒ[ !öÚZð;Ü£³³Š-$ù02uk‡ouƒ·¨0?aŠ[á㟛ˆ~*“+l6™HÌ–³äï%¡òu€l’ðKÓö­ÐÁa[´TóO¢IOÞÌÈk³\3â3•§ 6;#û[+tôºL냧ày§"Ó û†2CÑpöE˜û=“\ŒÔÈÌ}˜ò>Y|“è}”5Lš&ô´§-›k¦¿."šÖ…zógM6)¸Nù.PûôÝlñš“ú>ÓG:ÿ•m ¼kv–~"¬*küçtÔ°Ï}Y÷ø±ëc¡­Ÿçxþ|'7‘Fõ÷Db׋÷Bc²Dš\‡6¶Æ2ª/´sáå.è»”¿ÛŒáµdúÜ­gWÓst ïã7¯,[2™õ=â2?T²QÖÌ4.Û7Z³Èp¾t ¢´áÝ$1T±œ†×ÞIøh-4ü‘ 3Ws¿D£gQü‡èyÎdÜŘS ¥¥“[&Ôq=Ó¨xûÖØœ2_ìEÃ8´Ð¬›Çq^›QÚÇSæ(6\h×´!ÍçO>X¤þžÏ‰lZ"pþk¢¾¾™Z˜£<@­$3ÏzÛ©„j‹ÀRÆYõþX‚DëíÍe¶)O#ø¤C_Ù{7k™‹EJ\¢ÅI4íÍGÄìÒgv' .Ô©r‚Ô'Mñ׬âRê͸EøïVh­JÞ»}Ùն„«*ýÖÎ,G;7sÓ«Fiú™Å¥fÎï38È*SŽþJèÛÇ~o£Eª­·Ú²‰ 2ô6MÔóãöOíh–N œSA’¦- œ"ÃegFqࡽ:ˆGÝjXÞG­Wƒ×øÐÆÖòVÜ69cË2D)q½Ïv£@@€­õÎöÙô ^:Ýõy !¤æ³7åÜIGJåïÑ[´ÿ®ö>µîod~/QÑÆ“FzâˆY@$»Q·»Ý £4õPñ»¤ìWáa4T~H("•?Ù/ Æ`å!Xšfú`iùMµÂ˜I—˜öè[æÎí˜_( ¥õ4Õè “ìħ©'Ã$ ÜßP´<]>½X÷”¯ú»ÆÇ„>Çšû¥W®) ØÅÂ-4míÚÉþÖr%šlY{æåpæù¯’Šd/$š¨ªXtigtn}WŒMgdγ3  þ—ú-nª,a ¶Œ¶ªY©ƒW2”Õp1}ž ÄbƒxB†0 ðË ¹ à 7lUØà¡(\Š^{vù<«—“á Ð͵Ò`….„gr/ÛÙfqž«{è«O¡Ì}€yñ¼ï„»š- RZ7p©ÎìÑ«6šÓqcÆò|UÍWFŠhšô.£ö=zŠ\õª[JuEâ N·xX+ÔqGi=À<ºf:käÞñJ;á€7%„Çvú@ï ^AØ_ŒLŒëñf2ËÖ{\°¦Æª©à¢äšL–“+¨,g´ÕÈKýJ¦‡ 7v~0í¹ ,Úý¿@§â¥ÌBip}ùÈ^ÈÒ & ’‹ÔŠÔÈ1ŸÓ@{NZº ŒEœ0Ür˜«_U;Væ¾æf¥±™¾†[ׯ-]i †Öw^£íË›¶®«Xh;ñˆVâ¸$Ü_5—„þZz\Ñi´¶ŸI8ÀN@вß4–Ð÷LÛÈàŽ5FÀŠ»ßܣ̷‰ÉÚy¹òkÎ+Ì…äÏ7 3{cëÕ‘®ÈnÏø5±(zuâq]ÎÚ1â¨ð}–0¹”<—:Øó†ÝÞμK†¤%"’g½­\>´ÈÜõ{ÇZSÖѲ 3¤ó*ù+N1æ@ðÐK}löuá牾AFë³NÌš:Ž×„&µDózÅ·A}©x9ýL¡¹ýÊ ¹'ÏÝ4$êz»Ãù$›ÿYuúÏ‹eE#|“EҲ†¯´Ä­É¶`áê[ù…²Û¼hœ\ýAÎ\‚4b QT8|è’ÛJñ†]VâžÓ]| gêQÇÞ–©9 ›Ý¥½úzӚ꥓2Â1É6í7dÝÎÛtîh¨]s¤É"š·|™ Åó\«mD/íN‡‰T^ Ég\hûñ"lÞZãî!w_…»Kø÷ÎliX\‡—¤•¾|äC'Äí¯´µÎL$¶Ê.ŸKpšaÛÀÁ¦T¬o¢CÓhQ¾/Q¸+˜ývÑB.ýÈSI m)Ü™Ü[$éå\ûöñ?Hö]“¨ÐæÅÙ7éâqw¹ÊoEø…=YÊ֙Æ%p¯ÏàÍ#K¬MƒVô‚=—cÏ ¬i×e]×]’ÿû _o’8[Nox/qó™‰TÌÿ[Ï”rû0V¥ú±q0$‰W,öu‚ün¶üÔ!±täÏzémy­9ÔôÝé|E…V—¢(e/©“N %’u„ªY·pô¬Ðäï®`ûÇ)Œ‚Ø<ÏH ߉FŒcË·n2h%'%ï#æ):œ““Šé²ŠˆVùñØ#RMì³¥Fó|lÝE`Ñ•XNcŸ²B—|»lëÇ:Ç š_ûr×#ø—RîÊf “¢ªû>Ë í[\ü¡é¬è]¹C™õM;:Ãê¤+7ÁÔóºLÿ¹°dðÊ+ p… ‚~å‘7ú_T·‹xRMÝ£9Ú ÈKÃ#›hLͨv7²µEm‰ʾx~RwÙ×{“ÿbÖEÚÖiœ¤½ÆŽR?”ài÷NÖä ÃNnÏòڥΜr FMøÒ9 )N.|×T$»,“K1 —ùð½®{M<½Ï–ñƒ»"‹ÜBv¢ç‘Xo@ÿJýŠxš^wÀþ£ˆ˜h‰çÐ-&c¥XÖ蟙*ž½Tc#UÑfðxÄ’Åìm¯[¡¥ÆênçÂÀôÉ"ÏVÒ&Væ­.‘ÉÈ÷9¡w°”z- ÍÌ+øe‚S×Í—»Ê’´a®t'q¿ Ž9´ÅßíšùϽ…o½JÆ)ÖÖ°ƒI‰òK©H.^Ó‡JK¨oBeÌæ¡ÛŽ<ÛaÀ›ßµû—þØ‹zï¼f,˜¨X—Še©ènw¼jËñÜÆ-4c¸·YZšhØkÖ:À÷JÏ«Ø+‡'Ã7¡*Wé Žíû;’5ŠC›¥8}yåÉè1DZWÊ#ãÇ(Ð"“nPƒÕ½ì¦+:à‡BõïRκ&mÛˆK$D×Mvš‡´$Ï9žŠÖÐòü&#¡—VŒ_dŽc¡ 5T{î}"‰ŒlxïL|/”â¦ìâ·£TŒá[®¼9WÇD›KŠHs­¥›R«#ûMŸ w³™nÍ|'^I5é¢AÇðOéÌQç!ó}Ëzª¨„cýH÷è´ß} ‹6x± ¢ŸõBÎ;&)€Î+FÒü2Âc rË*R`l›öác„á‹É‚Í×_›µ{÷>ŽÈJÑ^‘' q'ÍóìÆép°æž’ñXKB÷pH|6Rš¿Õ æÎý†-|ÜÑ;¾—.yd(°×ãb(×YHÑj êCä RÐSï¦Õp‘|"mÂ9¶Jû“×—W³"/jòaÊ®ÇvÓ9…WÛ:ê¯Fº*ÓDÀ¨A9¶P¿Ô‰šè’‚2cÓD?2âjÍ;‰®ç\¼-·Dõlÿ"DzcYÏŠ0¿¢,¤ú)‹÷:¢Ô**2—eéǽXŒ½|š$ÔS¢5X_n𷉡“*@%ɶl’ÄïUg¾â ×Þ$Á2‡Òÿ²žÏ ÃO³ñÚ„ñ±T΋Åß3.¤jÚ¹½ÞÔN¢“;kæÃñi·$¸ºtä³ 4”•Œ¹Ôó €’åðÓ†N݆x ÙªÚœ+$Ûð;¼÷ õ¤ÿ|„c’|2Žg–ÃUÇ}§R¿Ý\= ×O€pXa”›DoV#u¬Ÿ¸DntÔ À¨ƒó!/N–› ©c1ª¯<Ô§nSŸ-¾US’ښءŒTYû‰QU¼Ýôý6zj’ÏX„„„„¶3ZŠÅ¯µ£Ñ‹'ôõÔö!É!>ÊŒû å´ÓÂôlýEPjÆJâ‚‚€¬c9'–¤AüU“IÚðâ."¥¹-Eþa{ÒYɯòðã\6)u–¼!•`û)?£Fi誡’Œ^F»´Ñ;êÐBL\—YîÓЗmlÜjU–¹[ÞThùúÜü‰SaÜ‹•ƒqŸXuþúê¨Â#ï” äÅ2Lh£ÿ’õÒjÊÇAàNElòÛ‹-çŸüÚÜŽâîH§  ;Yf zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.708786471 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v15.dat.bz20000644016037001603700000010062413607166133034202 0ustar00hutter2hutter200000000000000BZh91AY&SY]89ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàTˆÏ¸‘RPD© Q" EP‘ J‚!@J „…A%Rõ*T"”‘%*BˆöÔ”Wlªú¯§[g]:mßyÎ÷×xÞÕ»u{½}ï®Û}ñïU½½zä…ê;Ü/wÝë¾Ýε»«ï{Þð½÷Ú{×VAC­ìéžïyév/}Íu¥åN9º^¹Û¸yYY*S–‹m;1wnJßi§iÚ÷.ænÜ5²ØÐv½ç½¥í›0òÓ™­_НYö ª@ £ž&É<¦ÓSÉOi©äÐѤØFÍ4€Äõ1¡¦& ™š ‰¦˜˜§“CM24Âi£M4À”TšhžÚ™§‰e=i3F)´Â4jži¤ôÓ&˜˜¦&#M4ÔñLÑ‘„Ä L™5<¦šz™  Lšž™2˜šiêdò›M2CdшM26¨2ªM¤Íd&šŸ“2™4ôL&L2LLM)úje?MO!•?MQù£f‰©ú§š£ÓSôšxF©ãMSÔõ<Ÿ¢z‚ž ©OȦÓÓSSõ¡¢žÑ©êj~¤ý4452dôÕRR=LM=M4 hi‰¡ˆÉ‰h È1 £M4Âji£M6 43(h € 44ѵ ¦ © Ó@4jyh bdÓÍL2iSüL§ˆhÓM#M22¦2124˜ÓTü§¦¦ÓTôñ5=ž‚m&ÈÔÉäe1¢›Ôôž!©‰•RDÒF4ÄÁM¦¦Éˆ 5OÄÉOÕOð™ ÔÙ4ÓTóò5Só žÑ¡Oja¡6¦ž¤zOL)šLši„Æ)碧àTüMSõ=1OŸŠmªˆÕ„PHÀ€ˆ  `„„ØD y Y+[z./Êæ6‘¿?sèåö'JDRѼ·æþÞ Bò‚&#AÂ3]‹$r¦€·IØ©L¦S)”Êe2™LëL‘‘à…hwí‹øÆb!"DAgN\Ë™ŠÆ0-„À@ m@+•jñ”þ{ä} §6ve¢áaâGÍ7Ô|¿ôªgy¬k¨ô*h)¤ú~Ý&Nñw‰øÒ\*d—bs-´;ÌýÔ·3ué¹ú9yä]¸Êx‹K‘ónÅ{ÿºê×~¼ê‹Z¿æ£ºIèðö+‰mÈH]çf‚2/I†ó“–¨³{Oû&9Ë{?§ìugû+‹þ²¶}cQ®«„~¬äÑ´ýÑS­«ìm&gæ—LžÕ^<%@ÌÍ F¹ÛOpsŠ•ŸÖ¶=89mÚfœbß©¿èm,þ>Kþšçô¢éæ~N]Tâ»cíf§ûÇûnÖ§1¼ô½»ï/KóZò]>¤PÔ™a¸Ì10u­üé†@î/ÏDU‹ãŸƒè4Ñ `6á 2``‚Fá“0‡NÀ!ƒ|F@ ÎÃi$I „@Ä%s²0K$$­‘<Êy÷ö?à¥s¤Äbåî5Ö(ù>öÄR%Æ•14"¢ÁG+EP5ÄPQâAAEQÊT `÷„ X ?þDè‰Æ`À È’"ç˜B‘V»’ÈÚ$‰qóÚ‘Ï6cs?Ñû¬’Q‚# +i0@bPÚ"bÑ3¨‘‘)n`jž¡âqå™Ú” ¹TÓ– >.äÔ˜‘ŒoU€ Y(ˆFˆ€[N¸ˆit߸ÃÝiöJQ±‚"* !¯`€6ã`‰¢D’îk‹›1MôÙ[˜jÏÜHýà “ œi"@Á#¾&;SËG@g )q,G˜É4m @Ac!ؽk—– ùÏPãÜCzp®M¤*.]·DØ+ O€ü‰:$"f!ñ‘!Kx„-©x7¦(œó_hðAÔ.ÐÀ!!e`f@!€` dH“¥ôÄ0)”CýYcX\›w¬'Ø­SŽÅáAƒƒ‚`ý€¸‰Ú"tM+ Ö ¬¶ çžý³º÷Øo ¡”«»0ƒŠ !Z)Ç£zv&âÁú3ÌÇ–sX† ¸ @oäGæàú,ÃMS¼ ï·šâG4AüNÒ›tNŒîI –®¬aÅ¢L–pc³c¦ùÛ=»oV8ÍûÜc÷‘…%7S&0D¢"_8‘Á°Ì>3ž]òZ4fqéИ\3 0%°Ðç]p= û–ʸ¸‘˜é‡è»d‚†`'æ‰w¨;¦@È3@ÁÛšòCè¢c$!ú‚'²‰0•*!ذ{È $›vµT2 0ómYr$‰ Ò!”Dë0’C§Bú:@qàáóÓˆa‡\7¯DÕ!H¢ 加÷ƒ2ÀÏù°º”&(Îà€Á… Kß”€ø ÷®9’É}7*îÆpèž¹ °DŸbu­ÐäÙ3—¤JàÚ6% ì ™½7„*•/¨4ÇÑCP„HWd;qªg"9P¹L‘͸æGdɦ8c ‰L€i¢Pnæò½ˆ–0d…y¤`Á‚†‘!Ø¥pšáÜ[܃†p£ß´&é~l†|DþXD¤:7ñY±…Í+3!µql€¹!Ù!¸õ"$“P6ˆIshŸÑØ"L‰brãfÓò¬ó 9(Ô9ÞVy_‰ã@?™L‡p ð5æÖ2'x7ð~ÔL…¹4Fè®Vy$I"LáÐ:¡àõŠ·´Lz$ëv „1¨œ(7HŸ°h“`È ðPý†[ó |È"gYÀn„Ò“AÁ p3kfÌf9õf"a>$K¸Ô>PЀí†ðÉHÝÝ[ϸsÜyjÔ+XTÇ¢X²[6ÑtØ3 àP½hs@ð£Ï¡`ܹ¢T±’%a~h2,|8 ðäØN‡*uCy|v|dŒ·20sÄ6ˆ9³C¤cáýYœ‰™DÀ¡! ƒžDü‘<4LIÈDë‘)ub À]³P‰ÚA¼œÖ‡.?Ü´<‡èa†©‡ ¢¯ï %å`Wƒ ý­"¹˜üýN!Ö8—¬eÀƒ¸®|k°nì ¨þqÖ¢Z?1º¡é‘2 Ò:"öZ5n.ذBd^p†îB&AüÊÌ×¢Y’nlÙ“ž&C´C“DÔ"j†t°rˆ~´I‡.Â2ûÕ:TI)ݰ¥2 ª¤‡¤mî%˜öQ8Ç™f3í0ó˜‰ *%+_d¹f¸÷?ñÊÍÈüH›×”Çz2q˰ImäíÝ[® €d½‘é1Î3Hí â%08¦Sx}îœñšp~ÔI­p&0†„H 4/$M£Ó ”Á¼³q|Æt$æKÊ%l8¨Ê%a½3úlCï1Þ¡3í6šqÌí“0í Í̬j2-ïýIœtoîDŸBÄ ¶K|a1‘.å#·,N š‰Œ”×FàÁX‘>÷zúoâê»1;AÏ"p^¤½9‘ s[u5•Ò¿;£È5²È6'ÁDŒ"M8mÔ°¢V¬Oœ‰ŠDÛ¢[£Ö>' ¹1Ÿâ!©h™`j2{!Õ~6æÜÙ™3¢Y½1óqãÇaеjš·~k_ ÖÕÜ«{lÑò‡Ïz$*C±vÌÎ)͘¯1Õè^YO ƒ„`?°ÎFþõ;æ' k¥‚+ŒC!ãŽéS¿ƒ‡d½¤pOù}—hÚZ7 D¥rLëùLDO¼± ‹ñõ/.úÛÆ¶ëÚCÚé”íÆ%@pá}ò:§ÎD“sD±#3Þ¾˜ á¬Ðdy‚„PŒ>,>“—uôK"1ŽfP6&y÷/Ód#í‡(7g‡n. \ß Ùm ñ! ø™˜.äfx»"oÆI´t'ðDֹרCž”^%"kD« t`â[b $K“µu …ë~ -j¬d¯ƒÑDBDB± ÝC(DˆHƒŽ€%¬$@ @3DÐM‘ Î.…ÏݦyíEj$e3cXˆp¨“ˆ‘>«$jà`]üƒq|ò´QÍüâ€S¶!Ãb2BbãìàpŸD›@`ÁÊDÌ—€ãç-Ë8äIÔsð⮽¥¦ÍòТ0À„0×5hHzøBÜ{Èž_×ßz¨”AãPÚÖ"LérB‡ºc^¦€‡‰þb@ÞÚl…™Ñ5H_Q'˜TÒ2NQuDš°ù¨¢Hh"H|O ¯(“B‰DCDìQ4¨šÚB©(”Ñ$Td!ŽV©‚I "LɘSDbÛh#&( a!h0ˆ”Ñ5ˆŸ ¬pôJ$˜+XT¦‰'åÛšäLñg@>«I©-lDçê‚€sÅc%+)ni“š6ÅâZhHg( ‘œú¤q£MÚU\?‡õý^ ÕrÙjá¨ãð*"xÔ†ˆ‰|×û$séòºÛĆ©è¨‘&"i‘9o§oމkT€“CZvgˆO бÿƒ¼—@µ"F@<¢HqÈ“„†ÑÅ2&H˜!Æ èœÂ& NÌDãʘ"Ú"BÌpDèކ àþÚ }a %·B¬V@Ö ‡4Ó£`mÃ{r­Á˾{’p¥Ó83AȃÚ14E?¢&hDï4Dp$N¡€lœ¸tD(¨>ù3‹d2Vaë&$!ƃ`‡ „ÈPDúÑ5ˆ™Ä4è“¢p^1²›&DåPÛ!m2ˆ(aXC [½³ðq¨”@kÑ!Gz‰‰n/@õÀÔ™‚6™Á°4ÐÏ hëÑ#H ò¤'Á¹:T Æ$Ih^ã"^Æy‰5ˆ–„dHÂ$‘ôŠ´IC'žWŽÙV Z±˜>­@¦ñœVèÎ …*Fä71Ú"r8€ãgt ĉY€å?ÙôÓ9¡ d-j ç&ב=œ°=G¸ÝQ6àîooŠXªÑÍߌ}îq°ç|é×óh˜Yœâ£ùlÆ=“©DåÎ"~h˜N|mQÁL»Hyy‚¾ÈAKÒ%XÄù'Ê´H( !ן9X‰šfDÃŒ"@Þœj$š(”â$ÁÖJ!’!$MV5€È'nh”œ+ †v"V–ô?Ñnˆ’Ÿ¹‚½@‰Ä`!(ƒÑ"Kb}dLÐÍDÔ"QD Ö°ëÇTðŠÂ000¹Bt*j$jÑ4(–¨ž|:aÈ0‡þ©ž:&¦­ŒgÈ*[¨Ém sn:~…މYå¨Ó: *˜¶z mã2A”„[Å@ZÓüáJy-Æü‚!Ùá ?ýÝoj+J'yãm¿“ßP LD®‚¥Ù(†íºœE™hA2 `dc[ÓV‰Ø¡@‚'äDÿG=ê$™šD:¶fHcX@-ðf"A¾"{Ô Î= |àfƒÒF!3É¿í†j`Ê22R&3Š„ghÔ0V3E)F‰ˆgË@3ƒ( `cÍ!’øa¤b!ôFZDƒw¬`3à×Ü •D¡¥m`ÏŽAð„"ØÄ5´N˜bV¬k Ô1†%ÄÔ¶å7&„~ÆÜÛ†3Ô L5…AFÕníò5¬0ɳD #$e"D¨@DËŽÌo­:$tOvò‰1€Õr%›ùw(L‰æŽŒftÈ\Gj5Žä(9ñß6rj†ˆ6ÆÈd ‘ ‚ƒ04DœñïÛ£ÅnƘÒvøqªyTKj$"X¢TOJTD«¼¡;p` ñ‹v4–Ç!E¨‰{iƒøk‹4Ø“'0Ì|¤ Îþ˜yÄ2¾%x3¼èòPЀ°À5ãËýíÔ®ÎÜÂ}ÈDìûT#<\pãçÐèÇ6?)‹œ><‹ß-€X›˜9D9“¯Šˆ–C%gs ÝXaœü8”I4]/fg¼“§µ$Í”+DDÙ´ö§gx½¯›æN‰AXlðß¶îëU¢ýV_ÉÉ"wèžcvDžDøô‡žBtgŸ—»Dô¦>l6¿V›)5‰‰Á¢j—!z6"gQ4Îy×C…BÁýM9DbÉÜž<7Ân­Í»§ŠlЉ¡gXÃ:£ªÑ!Þ˜ppâôäg™ Œ1÷ïhêÙ>õ{™ÞE`»è~}.Bßñ~Þë=Ûb'/ÞãÁ¬ƒKR+>Æì‘!»¢B(¾ '€Ý\ò&µ¿}jÄ6ˆ‡­å!é¢'w{¯bpîEáGTö螥åµ(ñ1vBø…Ü™ •]ÐèÐõî¡&3O¸Õ¿½[P‰ Ã[ˆlƒÙ8$7×ÓxÏ0h¬€çœ£¡FCÏ7ÇFÄúí²½V‰Ó5¿¤D¹"P¼wh¬—Ô¶&K$sàÊe"{ÇkˆXeƒßºq’&Pnc!ðßwcHj?ŠnÔi«g–1Áê=›hǰ6·]à wT ‡±” v…±æªqÍb½|ïáýÿ~‹ý÷;¶Ø[Lj';ÄIÌX…“Yîòƒ@MÜ]Ÿ V¢G?X!ºœ1®6“ ÔN"v…0Úg‡ÄDêþ›a$D’"IbhD5zÿqE*  „rHû¯žë: "'®‰|D¤©¿D¦2WŠ‚ÕÒ"@‰}DÒ!QnÅÊ/îó%¡!1íwR‘)Ñ8>þ¦Ë‘rÒ_7¶êç:OgÈ÷?ÈÔ«•÷vúïsßs+—w·:+²%™B'îrFÙ0…˜²¡¦;ƒdë•ʲ‘Ls|2%ÅJ3¥H1*±ÙBwÜ/Ã! ËÑ"T2‚輦wŽLÁSb ù:Öt¬×¬yÃÜ:4,îÁÔµ¶uöß1Û7wŒæážp…i”ˆ—MPÄïÊmš%èÒ¢AV‰Þ!z|S‰Ú"T$"[[ËfÚ²CbÀ‰ÓÒ·ç^‰8® Â%µ˜Ã(˜v±À“¶C®$2gDÌ ýqÍ"Ph"PD‰‰!Ì}€7gxÄ1˜Ã0a¤Ãú¤„†¬d2iŒ3³:¶gÔfdJ-R$†Y!Æ+OÔGDë®ÏVËlˆXæ d+ Ü‹(ÙK1]ÌèS CD<·”†‘ɺw£˜8Ĩ7e2(ˆIP­aä†hÒe¼¾bP‚ŒEX!ƒ•=—ÔkûKc>×ЀèsFßyŸ¯õÈ”ÈTŒÙèô#¥9>×>‚+†ÈÙFXÇ+r&úª:&¾Ðf–ÿ[“!±fÁÅã)¢P/»‡õeðT‰EÀlßïÿ7bäWðZ{>b׃)"Dˆ!ëôŒ˜1ƒp t”‘$"Ac HÜ€qHt°´”aòã}”â•;h¿}¶JzSÉîQ#Óô'[}pÜ Äžf…†òA÷Åϰ's¼†r½"D"@á`Õˆx „í‘ ‡wIšf!BL?LšÖƒŒ„ÛÇI“‡Ú‚P8:Ý,—jsn%Á2 2jÜ¢$Íøc0ÿ™ãL;Çî9$Kè…k³gWC£j?¥ºÎóÈ忎ZqÖíýΓIbªWRûV õ-㙸DÿÆ‘Q=¤4­Ë1BWôÅEeÇ…êNæ¸Z=+Ìb–FÇç ¶+1àÏ?ÐÈ¢gê Á‹&–X1œB3kãa8;̘ë霂ƱÿcNÐl/õX4=„àõL¾H2‘-€¦í;ÍIQ®–šÞLöV%lÐ'G¬ÛæŒÖ!qËtüwQÁ¶îqÕÁv.Ãf~Ý÷Ç0Î…èDÀ’§8‰ >³xª&ò `Ðh–ýx¹b'à‰-²‰Ù¢yˆ˜O´!*ÔN¢jšo¨u¬Åu–õPû.#É ÒVè]kü·Tn–hs3yª&–å_4¸6bº‰úóµ¦ÀÖ‘/Ïn÷4ÌVM£>bÓ7kÚ ‡Þù¶è–é0`àXËDó¸̃ahß]Ô¶sp‰Ôôh‘è0¤Šu;¶îï·ù-~ðG¯2Û)ut3œ%‘òb*;Þ_ŸÎ­vTN2ØÌèš,ƒ»Ü» òŸb¬‡ÍD¹ÙÛVVy¼`<”MôÄIîóß1‹ËCC?ä}Ù:‡fÌ6eè²—5Ž`X|™jBê\£Î’Ÿûh½ D7ÁE7ø¸ˆ¯t)u+º«D¢‡’䛥wíí]Óú\'i($°e@x·XÖgvèݤ;¨)¦¨ù¯qß' Í``3^Ê3?Æü?F¢ôéhê3ñö¯ÁÝÜ#Œš%R%J&É 9’„ ò\‰™ÔM™$$‰J†¤D«D p¼"]‘›ìê’H«Zs:ß$$47ÆHv®‡áy¸¡-ˆ}‰Æ‘‡‰àVbpä÷Y(yäG`|ˆF éq§wÔ§ÿ|^<Íȧ>@²‹™w ~sç«ê´2£@¢9D.·w‰N!!ÆàiÑ&¢l;D´"p€€÷ã½È)o®*–‡ê¤e¼…h:quln;6û9ÂÕ·×Õ×ݳO5Òä‰câ|øOÝRÛ]ƒÀhÑ0z‚›š-”òLG\Aýö¨dqšº™UŽ8ÜÞ7vWWÀ?µp1iæQPuÙog3õèq˜\þkùÚ]Üyx±Ï"tÍÉ´è"³äÀ/¨™¸‚»ûà‰Ú BMDÿeT~»#ƒ“ôò´<-9˜Èìóÿ'k[Ïa(:Kp³D¶º0kÇÒa|‰0 ¸¦D¯¢KùÆÎˆ•,e:$Љ¡Dù§e/-çÂqwÄm ²¸7ò+À«ژ˽»=»¶ÐùwÞ6ð|¡\”|¶—áå‘0&ÀÜ€¤>KHDüó¡‰;K@‰¿d)ÝŽPÝ9ºrÍH‰äMv[Éû–´Þ6k7çè~¿÷䑲šò|þßàÔÓ [©¦šËt,CᘟZÖ;«e Œ[!J’Ae4kpÞxcþ ¹þNN¸‚ÌÇ “nî—·«~ ˜½þÅò+QY†ŸäóæH³•dPì›8o£µ¼,tKJ%"D ér3‰¤‚ºI½ÏËFçEÅÝÛÛJx[&én®– \/á\v½æ¾ž~mlj~¢Ÿp ­®Úâ󻘔X±†ŠåJoýw/*±\ÊKÐ9Að<â& D9ÅÞÜZ%½ÏjŸÅ)Üsiìž~c]~¡m /±f°GðôútN…” Ñ˜MÙM[CµiG°ò¬¨˜äѹnÚ½ýu;z§{iBÛ̱ÐZ$ýô@Ò¨'÷°qößPsÒY …¾õ%’µÙO¼Xçæg^¸U¨ ‚zæ·úŒIû–˜™&žÀïwèéòc[ÎM„*Hˆ#¡ëý™ t§"PÆÏ4bC똡„¦E Š^¢ýíã³@iÁÉËU¥aòòJÁÝÜ:œådËà¿Kç>Ô¼8‘(çÜz&I‰«ö?né^FçkͬݟZ%Ë:µggž\p®Nö|Iß"ÆŒhÂP(À°„C>.Œ½ç€Ü›hDîAÈl†&Qþu,ûÔF£áú°^® (båú˜óò ÇäÂiûÃa™ìßdŠêŠÇ¯PD¼:oWÍØŽ;‘o9 ¦cùÏÐ6/ìP†ä›B…8IÜÖ‘:$KKmœDôljXÈØþ‰ôM ë®Þ®ï÷ `-d ¯?4N«g@‰ôEv¹vvã:óÌ®ofUý”Zmaƒƒ§úd„D‰—f‘"A]bNÛ×G™³6óýS"`úÉ'Š=ªó¸Ùo»_¦}¯ŒåÝ­ŽÙß?ñáO²Ü÷× v4ÚO¢åKìq“ïé€Õ—WH°xr “½ÄüûÛÎÌ`¹Ì F±oÉ -.EÕ¦ýsÛxE˨€t<þ&&’˜›ñìM¯·ÍË!VÁßµ{n %½'‘7’ØÌ‚'Ö1jWuÀ]fpßp>£ Ϋ}^·ÑŒTý–¸‚.³Ž$äå®DØà»? ÃÎ1Á0 qd"Eü?ëÏT“EË|›‡ñDw¶ïX÷UèNÎàú‰´Þ­ê‰à—Àd‡Xùì j‰°g8׋ìT$èN#QŽ&Ù[øÛ岦A@€®@öK•‚Ã4™Þ¾_x9™=hVa†ßo.®Ûže·O¥Û#ÌðZ(—ôH("bQ2›ÿ·Ñ3žnFÓ] €P7bY²„ö[èýÇ÷õµ&7ÕRŠh£ì:~×ÝDø@‚.¥ˆ‚2ËŠE‘Æ}uZãe Þ{É#Ö@ЬöU‘ôaE†Cj’|3Åÿ‹šíú«ÿhñá§6“ˆŸ^kÏö^Â$—øUe B&ý$ª]Çã?0ï•K …?îjÂÆSЪ¶÷ž¦MÊŠfyjb¹€½["YVˆ#¨‰¶î¿ÍðØŽ¥œfþL3>8954ãA¶`²K!l§ªä3‚Ì]É$ÏtÊÑê„2Î!` æë4Õ)èkdëÅ,ìK$'ߤÌ4ÌÐXq$·Í.Žv‰¢»àèdà/ž§I™l9 fÞ†ðœ;çîO*ïQüÝÒO¸–_>Þúºþ7GÕþC;k^ˆtãÜ÷OªT1J…ôášQMøG<þ®¨7£Õ7Æî…p·saEC¥;ƒ½*L}®åóiG½HkATŒ hH=`:†HÆ@9½s”ɲÜ;8ÞÆöÞ³“ø†$š‰º Á‰µ—EÂ(Ñüó­‡üŸÌfÚûž^vªë¢ÅøÛïZ± xØŒýãîp´Ê­‰܉Ý#Jà,›¤O–,ê³ïó-™íÁbϺH÷(šÈ"S¼ýu‰Ç}§_óiÉ(— Ìþ`Á@%J»¿)ŽÔA îp—HAüO"“î­œÖ:•ÆÙ¶¯£:‰üxïÑ1µa:$!U`gD€Fó1\ Œ+Ú0Íi5ÎxûAÉÛ{,¥+Ø› N*´3f§†Až_E!ZN˜XC(Z5™pR*Ê ÐŠz2PlGó:hÅãC†«:à œï[m¯%º¡xg VÖbmè¶!žó´‹Ó/ >+œQT^H"ty¦Ò@MÞCv€QÙŽðr£¸»÷#j~NR'aw¿_š—ˆéÚ¬íeÑÙªB¡ÿÃ‰â¿Ø7Ïu-#q*¦Ú9¶µøÑp–Š4¦|Ì *å:AóMýj7*²F$ÀsÑ¿&Ñ Á&%bR¿*y“Ö¨ïzü²MNµÅ÷Õ¤x›€ö•ëA[¿‹2’?n¯^ÊfJ‘[Oƒè¨ZÙ3 à…ÖUa7ï©«€÷1¦ÍŠ@_¾‘ºK»‡ñYNshmhRQKóªV—³´ïCäoŽ£=FâÞ‘ý\ËAÐ{#Ò·wÊb°uh‹bÂW?ç’âÙV AêÁ¹`×ÏØà<ý “: ”Á¦(P²!CJ™=¹ÈÅž½ÛQLÈɸ3¹Ùòìºùf†w1Ÿ« ‰Óª0GŽÞR08‡èñË3W °Á)ÃCÏjO’ ‡îÒgóðÛë7ÍKê Ç—ÐU*cö(ÎÄEš™ÿ½`lGF²¦¿î–•”ö±!»¢è“©Ð;ïÏK_]ÛñuUù Ëȉ%‘] ÆÛ••¬¯u­ÒDd(ãgµ Î_–mÃzµÒ­B Ç.\¤‘ú¯œâ¦j¡_jmÔ@öF ×çMbÂ:a †í¶ÀWµžW뛂dª;žBE8ÜÉÉq–8,¤`G Dá‘}ØäZ\—Q²^¸Î†>ýúìn½Ò€“Pªœú>Â¡ÅæÍNxÒ(BJ»©\ôqÓdÈÙNx«Òy·{¢&ÝÎÈÏê0ÛA® %£‘ž“ •þ«ÿnýë+ °'®µÄƒ1€»„† ¤:¢ÎDó_)ضà3ˆWÉc¦õ?td#žOwÎ’ôÞÜZ®cü¸¸bÚ‡}¤ë2¹ÔNh¹½“ø"LØøGüI ¸<ævÚðŠoÚfmÝž¹ð“3ÜQ7 9+èP8~Ž—Vw? ±û¹ê²þò®ÊAƒB: ¿‚Åf¨pjÖË+ÝûâA‚*X(êœéÞ×ÿØ^–ísü_]ü9HÝÔÚrܧ Q¦ m¨ÖuXjÁÚq}^ÓAÑjßû‹Á,½=âÃäuÅ᮫ûZö­fkW;önÛm¥V‘ƒ‚Ú }d Ð=·:ÓübJH´Íg‚eL„‘ QéA‡Ña_†t!†@À2†2¬ÎÀÌÀÉ„$Î2 Ì2Vvf`f>âõÿó–x°U¹(D­aõuo³­¤xôJÆ1/æ³Çsw?…¹"s²ø¹z™Ìw®„mydNZ'äßå8שðþ§bý*Ðõr–œßú¤ÿduòËV}Kº«= ;||dñš¤2o­ ~žÆ…$Ÿ $ èf‡4/åÍ¡ÖFŽVr»Å;·ieÛ €¾ÅñçÊ(–ëÿP úõ©Œöëà¡?+¿4‚1,Ɉ“ŽAåÜÈO6þgˆjrCæÍ¸8›Nßï-í?øQÞ^J­ø¦›"¾áž"ZhA/d½ `­ì9ò^\ê m÷ý+Ä0îb‹ã¦‡9cž6…!ëÞ}“e˜òûŸi®+Ó9Sâ{=º¶B¦¶/*÷Ç`,€8À9¡“"±˜íÐÜ ÈN3Œÿ?¡,¨AMÝ6cÏÀ§ ‹d@Wº)xnB?>pw¿ä’ªÙמó­D¡Íƒ·&þÝ`GôÒïyôi¯6žÆ³p úæ¯Ñ-  _~Çé, ‚}`üºÑ€¢ œ¼u~L*IÛ"¤+ÔKË„‘6YÝ@ï s·ýï•åbnx75ÌCµd¡<Óð=^säFÅg¹»¿û4wU¼¿«ªìú¯SO§Œ rk„B0>û1•QªVÁ²"a‘3ˆ›V!³°EJ)LJ6Å8ܹTѺ½Ù¯Ûù’=&ÝIC¡ÕðމzÜëEìAÈݨänªºÔ•º´2Þ[/Â)Ì«2cd"…w}”¼±Rpút‚€3A†³=È0PÜ•°81ˆGr°dâSTÜü ‹@†Km¶gEޱØ-âò6M|X¹xÙ{rö||¶™ÀåruTôǡ—D³aQ<Ío3ƒdÿÚÕÏ¡çî(™SëÔYsD1/Z !‹»¼ hƒzøžÙÍØè®Ÿ×½Ögètµ“—¥/HŸw@¸Os“}½¢g¾s¡9–|r… ìÌÞóÚgntf£Áos]IÄÔPQ&â¬Y1Xö|ˆÈ€*êïòC—ýŒ?O#è²mͤea㼑ˆk‡p‰|>‚$èÜ]¤ôdOSýኊ‹'î•ëæL°ÒŒ¯nHKr×ô‹â!Ž>þ™ î}ÎîßðìY Ѳ½;õ1Ýcç>³ÈcŽ©Ì½c!ŽÑ?ËЉòÏ#As¦¡°!çU"YA€‰Qub`Áƒ†‡ý®üÕJƒ—ºsø’¡ó‚y@5za‚‚‡¬¾£ÁfÜáðR€âã–ƒç±c6ó¨¿Øý«¯«Òî€izÛô(PÊ!Ÿ\cÍFæÔ ÊùŸ¶eµö=¼Ao^áÒP(âm¶­a¼ÉØ1[÷Îzßìíoƒ|¶IÌñH"½åoªéxæ{,¥WÌa?E˜îÁR±ypàüâµ7ÓwGK»é±¸ïóXËë;slôNeÀäÐj‡:c¤ÃØDᆴ‰muO©%‡É(PÅ@”‰T‰Ç¨ûóŸvÃÐÓt5†@¹…íòÆè>ûV Ù¤:ýÞÞÅßþ¬Á`BÏÂáÝ£GCP‰ÔìËz'¿i58¨‚ísÃØ¢x_–á N†8̇í¹Çãà|þ­MùƒÜhïß%sÁ›O×L{i“÷o&#×âôü{ÇÈ´Õ”ð„Ø2zTD "–æ².ZûÒ÷a(T´ñ=eöH¢ JŽR£8l¯VÄ+÷˾‚Ž—žÃ}³ºÑ =»&;ƒä'?Ap>kó‚:ÀåuD”~¡…–;›­‘»Šé®ÉvýYOt±!D\ò”- ú ]˜†¨GŠ$„7Ä€å0@@ú¹ÎòòD\ä©÷WEuPAàzA ˜ª†âbûžUrÁzUj>†$pÃS“n2v‘i­˜¡g¤èØP1Û}Ö6ä*`£×B±ËÓåó:½uÎûºí«Ã|oPÈÍYÓæg×Úu>õÊÜ`ÆA Gwà÷ÙÏz"W?ŽC\d¯?ĪE€äï«æx7³=ÐØÁ­0_ÉiemÃ’‘7o/¾û®ž>L^(9D2ePÀdªX¾yI޲Eé¸ì¢sHPÃæë;¸u2«§ÉRˆ€ÂÒ~™…‹Þ´QÆóŸB2Nüå}ëîÉNçf¶Œ­Ô®m X¼Eµ 6oÉmþ£¶èÀ6Îüdb ć,1é±sèsf6ðnÁðw nŒ™nÕËïòw†ÿ‡gwôþ‹KÞþ_ukeªÓ¸ºîaùmAa4v;“–cƒ«.ÑБÁ´!ø²‡‘|’0Þíˆ[-jnî›1ÿI@97Å>ìÖC\¶‹%Ä º²S ã‚;Al€îêТÕlø¹¶#ÀÝížµŒEõHÕ€TÜ’ŸJ ¦íÑD7#®öcªJ[¶ƒïEâŒòEñ_ö§½°JèÎö娻ƒm£ôø3€CqAxÄ*𦄀>Ѳk՛ȾP¸ÑzôIáæt~»âß_KÅÂ8'ĺÛ]‹Î¬ß³ºO~×Û}y_ÅÄí4¢¡ >©yˆfõ(`ÙÃ9ü:…>™-TþGOÆ@ê<]Ö°Ù™o ‡ÿ;¼ô|oGÓXN7ûî¼Z?‘lºÔt#„'Áá¢ux$Iæth‡LÌD‰Â=ÛŽzÎwµè÷Ýqb‡Wgû>.ø½@ßGÂCŽ'Ý`Õ¢TW5 jê'+û}ýaÊDÁRcæO}½¬OzfBºR½+fZØÉ2ö4’@Xñ}DA—š=Õ?3dÄz@©¼Ø<‘i“g¹øúkS1„'”o&Ÿ¼™=ïõõã¥wŽeÙň–ÐÑa|ü Ή²cV„ù€ˆÐp “õCšC>!¬~!¢êZ, á$bê$gû†±Ó ë§C·ã:îšðÄñ°Z&Kíg\kTfGâÿò‡«älТÎ3·\ÉM„Š4×F`¿p¶ âV°$ ·`¡~øx맪Ì/K}WŸ°ÁõrÆô³‚­Dµ(jKllss‰z´,òry–}§?¯låÞ—ä?ÍþŠ–N € €¹ú2»TÀí9DéÈ|¡cCÃI>ÝÀ(ÿ'-¾›$.¨¿˜û‹FGV5µ#¸2„ó3ô¢0KH8Ê mÕºÁEˆÌEŽ_åÚgñKÄ› „Å“Î7‡q*.Oà^Qé¼–Bœ ; Ó¨v™É”`ᥖ{`c5í·`K‡ðe9Mi…V»"©Ä^™¦lc^’§’UX®š|äI>X —&$“dƒÄkHÙz7ŽB£s€ûùø9ñþh9ŒÙÃ,fJ‡…)!§z9ÒÜqÝ|å~>çŠ!~šÃTÐé:í ‹¯ÄÛLèŒ “4Á}ã*Cüª¤§D·¸åÁÚN¥‹¾â |³ÃXC±³.s»±M/ÌÑühÃx‘ÚÉõ$ÏÇÝÆ»qjÓüÿ¨ÆÚþΪèC Óåtê‘—b¼ …í&pÅ!÷¥hÖ[)Cl)d8 l#ýsq¯jÚª.!wð9j’ÃÞÕ8Ó"PëK»$*#¦¬^g»²æóÕ¢’k;¿Æqñ‰ÑJ3+Ö—äÓUP¦àA È!xR.çÀÕr‡¼²@§À2·§ÎwEêæÓ)•txåð½túúÞ~ÈÂÔñO–†6MßúE)æÎ±NF¼»_ Ã6!½ÈYeÕn°+cH#j\ˆ!7Çߎe>Üg )­àÝ‚Õat\iYû_¯|–‡+X3w=/½˜l7ADÍ=9&ŒÈzû§~gß•ô®¢14þìjÌ?MåiÞ­Aýk|íL˜*i€“D„}ÉÛs¦yãå=ÈVÁG®o~¡|ú¹û>âFšÒ¿K™õ2bh×)® =¦÷A¤ªïmžÿ†¹C€“è‡+'€& w`­‚ÝùxÞõ~Ч„q«•c¾Ó”¼Ò³ÛgïzN=×=?ÉÁÿo.»Æ”&¯´–XÜ9ÒÎ2F@ÿJ0ç èÌÛà¦Qõ_:ü”ÇüóA±í~j™.²Å‚ð}ýDý‘ÂqÙ>$ é87­“ÌþæV" ,%†`t:úîÍ-‹¢@’ÎKó ÷Æ&ûÚüÑ(=Ã6‰Àv¶Nï¥ó¹h—þ4Šò'bâlýÝ»Î|aò™Cè\Юô•ž9ˆ²^ø¾ÚÕÂýš¢nîé¹ó7àäžK°´B¬U4‰3Ž ýOù¸‡Wô¯Eæt7œ,þ?pî«´ÞÔc¡ áÕÊC·b[Hë]cðkv-^ëuÚŒð4c¸5YD® W_Ùe.Þ£´u›¤I:MŸíÕyX1…ÞÞ3K¯éW4CŽ•ûÕ#›ÝyÑ0¼ŠEíLÔ©y 0i4xµ‘íD´Sÿó΋)üÎâ©ÁP·Lø_ ([Ù– ¹mMr6ìш‡I,÷Ž Œì ?yÞZ‘¯¬ yA€P|ΔRÿZÚk§’´1½7VrÖlÚÖæÂÑøwH ä8´KÈÂ×r#üŽë×f5 §GÖ~4߉‰;èÕÞbaÇCDk(Má¶-Úü× LÀqÑYvž,Ü™H3Ç(¦¬ïMoæ{ü7Y]ê~€ÖXMçì¤OVPú`šäv´DÓ1Ýø-{TÌ÷ ýׄµÐYNÆùiRo‡?ˆ'ìff;"ˆ3f¶–/?´L‡ÈÖÌ|#æ³½I‹EpóÊô2 Ùx¼‚JÌ­l{º¼¾qÂ3Ir×ó=R Ÿ4³O‹ÝÀ“Oxœƒ° ¿£,Ê™”v»ùþÇúQÿ «k'i± ú•ö1G¹•ðd—7ÙC%ÐµÄ ¨ŠÑíÓ)rßœmO·F×¹ö~1〈o3Ò»¡ihûƒfÿ4bàæûŒtÛÛÖ—Ÿb#Çš¹«ÑF ËŸV«e¯9p¤@F3UÓ]ýçªk=üù‹oüé"Sµ†u4»2G 8ßbNØ_Cå×sxð@EÔ2¿‰_bcÔKR`Ç Óv”Òë{¶_^èe//}(Ýñ´ØQXçâ3aÎB‰i¯Ï®‚=²—<–“Ùœ^‰£W¡•ŸÛöjçQJã¨à3Ñ…¸°¤ý¥‡¥;­Ž¦rQîË„tEË„‡{$ŸW-f •ä)DÏ}PÌbï_PpÊ1^…×Ò¨#qè­©9cy,§»#õ¡+К`zdö -Ž”»zý2Aökh1Z…!ZH#£zÊÀdƒf&—ißö¸/©ÒîG©£G/ÞÎoBÃë­šG\ìµS£V¢ò3¼é{2¥×3Z¤ˆðSNfÊ%ÖO̬9–p¾¾²+ì\ýU‰eú:!ÅÉOåcÁøŒ_üÝ*ìb¾«Õ[œ?Ìm¨ž@Ï ±y»wøl´î aôíóÏ~’óHôþ‘¹†ÅJN›]á7dI†.Hœ ßO`Î=g©…˜ûÍzpòµs¨;íÚm_¨‚*3Ú9««“3I”É¿¬Â#âþÞa°¼“rÁËú.ø5Þv»Ýê7ž'øØì±-rD“H`óè]\c `DÎB'g‡D‰V0+T?538Á)Õ dòàÕ!’Jc½[eÿX•A9Ñvò;ˆD†y„HC½õ2g?ÓŒ„7<$›š´L¨L+¼‡¸œ6R-“ Ã#æ}¾]Wäîiƒ­Ög+_Z¿‘ÈÓ`=R€“ïjI6nˆçAnÔúük|m:Š7zíÔ|Á{õSGÞávÛW§;]7Uöd3\iǨy6sªD€á™lÌÓ°£(+’›cº¹èÿaYBШXPÇ'ðîˆq}œÔåP@L¥ïÌÉòèÓ Ç–¸á˜_¨9‚Ècˆ#,‰¡:òÉœC•ä@ŠÄõÿHñ—ŒlÝë½>øÌD ŸKɶ7˜VSð.Âk¦¶Ë?Ýd(W‚[ØžëÀŽîd†ûn;˜:ÜõÛ^íµ8é2Ÿƒkö :$Oªó:Oá¿ E|¹¡’Â…Í+œ¡•0c~{;U¨âX«/Í[¨Çó‹)Ó+ eMŒž ¾²ø«pߟצGûéÁÉÕSyPA PÓÿ3hÐWŸy’Ÿ âéÃÝîÅKývpdÓ:BŒøB*:tFÛXµÝ$—9øÙî@âö&*  ¤‡‘јõI °QͯlËïÏ‚SØ$´²;÷CƒÖéè{g¸¥æò$Õd—²t+S€Urúüª{GÃå +3;¨e‹Ík×+˜–wŽ Dåy-ŒQÿïæÖÁ_w•¾å‹}z3õYßȾùzßœ\‹úh·˜{‡¯£©Hx øÚ @‘ôlè¢`0wIŽÜÌ,HïÃßà tEþ³â… 2ܺÏ){¾ŸË¿”s9s¶:Ò„# …ôP·L;ÙP-VJ >ö‚]ørÛ¹zŒWî iäò¡^hi69€~)û|ïäíö>15§iðsìá0:·(sÊüóÞ—‡±]Á žEþÚÒXXqþý´}{¢¤&å¾Üwr^¿Ò’Kˆ±>óR†zÛKþ¼][0H†£NÒ°âÇ`âÔAÄt‚"«rj:¯Ÿ¿:Š_ AbEuã¥<ÎêÎÏPÄBᎲùhT†¹ÐiUr:š pÚuzÕX~5Xs#àW‚ühègb!׸[4€õUþás²`Qæ îz’›§×TÖŸ~ó±×3õµÉu6÷W0P\T+À’ õpäñvx,>_²ªæí5%W~"Ž‘L &y‡gɤ =í±×=£Òe¡FGIµX‚íYZ’ècÀHŠò@ ˆß›-cŠ œ=mzš(mןŠ3·¾’Ø^+®O«møe-™ÏC)7l:—H`áböQ‡5E\TÔcYÒ—Y_œßòÛZi ùøãoL¡q>J^ °õ” †\yÖ [±R´ÓçV˶@¢e»ûv©³u°±·½AAÉ…ÉÈÙ´ZÐ0Î>GPv ÙjcПo›#ûÀ`è~溹ÉgßÑ<¿y%/vS“Iú­DÞŸã[Ëxܺíû!’S”¶¾a ™ì-«€zqë?!F{uu „þø?r÷3Lñ4/7¹À„Úˆ’¼WÑôxYC¯.ñš”Òâ±4Ǻ§|—ƒˆméð¯"ÆxZ43<áý¹Õ~V/|¯g«<®õØ`ò¢'úÀ ñ| xÊPÓ¼ïD‚pw‘F¯ŠA¸ë’ã¿c_ÀÊOʃôVm0ùïœqrh½ç¶¼©{Tñv0ud e€-ÀÑ" b”A´µéUz«¬Ñzdáì²J+”RÆsMšLJ …²”RÐpx BD³GÌôÊi3ïr1ßÅ®5t5RœK%÷o‰åsPòâ%tô7ª„ãp•?ʾî…™¥cªéÀ µYösÅxEu¾èàx7ð˜/Ò6ú¢ÓŽLë9?øö³KAªfW&ii<ô,^—9pÿx'³€õįžýºÉ×Úä€ÔF¤‚'´ ØõE;œO“¯ÝEÊùnMîî}ûÌØ—õåíb“x ü&÷nÙ©½ÞéÊv…VâýÞ×ZÜ]á¸rÝÆUæ­$¸.?`óàÝÒ}j6ç°AÈԑ׈q‹o's¾«1Úš«ÝìWª¯¦½-ðRgg³,AµõÚ±è^\‰¾šh®õ‹qŽbŸC ‹5D•Nle÷b:õ5Õ¶ea‹½L&f&ßšDqU)ÄÞO{eŽ‘™I#ëMJ$@>¿0ÝÆd¯écñkPA j:YÅàÔ{rĶØ6ÿ³k‡+\­ ÓM¬Ët,2<ç}°.‚m½óä|ƒ@$ltZYÛÔéLÕxªh(*¿‘ßÕ§úA I5² ø;ï®kÚLžÂQÞìxzžpé Vá›]OÐØ«Oýòó¼°h{ß2æö¤¬c4$¾h-ÅæQbÖn˜©´YÙ+z¤™’FåßXѨBÝRôTÚ†ábÉœÜ$[Ä›ÉâJüèëQèµÂj¸ùhŠß;6rÓæYw¢ÆŸÆ¢Ñœ…¦:O7į¬Ê´C!WL8¾É÷Úé\mÜÏË™fJvĸ"Š‚;W¯¯z‚Œ±Œƒe–‹+~î],u·[›,ÎA’¦f† „ýÂ-ÒüâýBÙÚBPxMfÐùœéˆ"þ'ÍAÛŒ¬ipê‹Û W£˜A™> cÏX‚&ŸÑFl‚.³Ov(•ë÷«¥ÿÛÏW:ü¸zdKØÙþá—|h_¡ SX›·ã@A ë´¦í%±˜8mVö“¹p*È# ±¤—˜ùê}ªE«Wo—c7 ÿ[ßç“í,ãÕðÆD J¸ê?AØš+t‹íÓà&Ž-ƒ¤©wÈ!ÍBq7Bô¶ÝHá[lÐWÅl¬uâAm Qп'CG]Žuá«ÆwV^k]`õÄwJÑeWk€ôAzT­6*í2GÂ[:2SO0  ˜ÝÆ(þ¬>5Ûü`ñ)Ô”Å=$ä_#Ú3nj—Ë»çÄ)y¾1|2¶Ú_Ü¡rËÀV:ëSÍÆñ9ù `Ÿgö˜?–²ê »+>ºTÎZÌ„ÒÉ9O]4Z­µL0 Ž1%Î’×Å @¡Ž ¿²ˆRÁ]qk2§–æÍÜlo~%ÇÏ_ëæÚïçG’ÿ&…(*'Ðèëéf£×¦mt­Ñf™Š<ôì·à=¶ r¸G9èP{^›$¼ÜÏøÉBA Á „ÆÙÄâƒa4øY‹Ln!ü%ô„À·• cï ]… âCÿ¹¿g_›.$RêuM¶ÔøjŸ]ã\c¿"AZoel~¾’Õk+Ȳj çlž™Ãz»BÖû`®‡°VŸ¥íe‘¦-ðÕxX?„€ ;õ\§­þÍ•7Ck“àÒ•nî׸Aèê ´ÞÞ<_r6µT£:zï;Ÿ¶RsÓ5ÈÃŒsàjtúB¿ï}.ÍsQˆAü‚×™¿{`©ä·Ðäˆ!&^³ž®ÇÚÿ…¯§+,h`È#Oþ²å™¼:%Š"Vˆ!ñú4¡ ˆ-ú…œÖ©5ÅgÈø¿‚ý,”åÈ! a|Qä|RËÏñ7*ë?©ˆm§d~}ü©Ž³F;OŒÂàäVH#ž #¸üd2òwŒõþ‰6Ómû\(REJ@Ö#ÑÚT@®w-´ U]×¶-É DKmôD”€¢ ‹ØdÕš]ˆ1×iäï&CÀÚ…I„§—ÜÛhœ-{Y;mŸ‰®¡™zÝý—½?ÐÓÙÜÌÂÄ PXùöÃ|†5B ‚?äÞò"±¯z¼¡å£øÏ"aõâê'”+42>%ÎIÔ"fÑ=æúÿvø‡ºÍe"jÙˆ`Ø$`Åä\9Þ¢lM»¡ô4Öšƒ!®4 ' Yë]ÀɘŸ(;j°l%ƒyq?c<ž¡ûˆÿ-õ‚„Gܽ~A)þ¾UвBñ-¼_b–=lô'•@ÿNÙM®GÐÙ ¹†Cd$‹Ë/¶/Ôø±W48;"` mýtœ™mËòq]ÇÃ#NT‚Ÿƒ6A˜g²¾A&Y;åÂ?I¢É%«À[+ÏÚ¢ Yû n’­”ÿœë/[V]JÎ9éû©¾~µ½òÉÂÆ¡ì>Åi? A~A_¿³¤Â¯­;2áH dì¾ùhXÞÆ,áØ™~›åîZ°û•Kï®ç+“Ÿ‰^ñ`ÍÄñÂG³§¶³X¯’±Ê-‘2[ùMäùè·<¾É[]Òü÷móæÛ½õpúf\ÎÔÔÔvôlÉ×éÛø ´A 8ÜLj¾Ý¿Tý_ªÆÖ×B:È€‘ X&ÝšÛsåOáGÐÀaô¯ï©o|çLH!7‹UîµåðèÊA¦ƒÏM*Å3³äõô´+È:G›ë|‡ƒZKYôGèi¥_Ò¤OOñO¡ ˆrÅ/†‚Öº¸·0º:½ÿ€…ÒŽ(‘^䙒ٻ㮲Óñï•2ô>çƒýf3‘-÷àZ ‘žØàÝçH‚]ÓIÔ<(ϔ→R– TõE/4‚î«ñsª¿à=yÙ/Õh!wkÝÚIo󃣫hA´¯†ǵ>¨‚%ÁH¸¬om^µsŠÈÇê}±$Aî€øŒÇ•æD@‚ËiŒÊg,ÇOWÀÅô<æWºúÊÏ÷÷\&îËÃî~íe€ç81‚DÜ÷{ó›¹½ÆÛ™º{‡«ò{÷Kåñ¾¹¡Ág''`GŸ>#º°DÈ¢sŽPÙÕ&U`DãÑ?£¹gÛB$ÄKˆ‰vD±¢fŸ±Ô„BÃßß\xíçFÝ2Ô¾ëX‰Ú?S •8… ˆìGó´„8ÆåX©6ð:¡È° i'ÀB;š1ÝŠ'ââ6ÈŸ°ìþ'Zû®=ÄpnõYóY}'Ñ<´Otc`È*@` Á0¨9$HîØQMÚ$ ¦€*ªÀ‰8dHIdIíãx޾àÖÅh † =„IÜ`®‘ûÆÙrH˜²€ûî•cÕ¤<Ë™ašÝß)É>©Rè‹å¶òu ÝùxVál´Ó&8ºSâØxoÿ¬ö3F|û>$_Óøqv"Ñv8~ùÌ…ÚØ×_íT€1%À cSø”¢u4ÙV²®ŽS3cÁ·/3µ¶Ë©¨ê–Σ¥¹K©ñ}‰Ë»Ð:1¨†±€J¤!$B €×ÿ˜ ¬“)¬‘@fQ€o‹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ𠇾÷Þëéow]Þûw³éÝœ¾})÷V½îw·{¶YÓ×¾÷Þw¾õóÖëo{ëãíç{í»%jŽÇ¼Ýî]÷ÞzõÖø­àºë&÷½içl÷½æö÷¸ŠŠy2©„õ¥=žI£SÈÍ*ª~”òžšdm5‘"Á‹RI o>ŽŒ €"dähÄA™"JÑÓ<ç+Mñ• ˆ;ù\ޤ HN IiáJ1 "\¸!‡åÀÂBI \aF’C…°ÆìÙžÑæ›qø! ¸Æ‘e!Ê"Êp{g¸_$kEÙî˜áð*ÂÔÞ™bÜ~Á„¬à‚“Ô\=L§.@Nó°›üõ´Îl—ÞSÖãáö“ð„BHZö0“:çÇV.§×tD(qL~ Y°Û…çShïºüÇFç¯õ2Ñ÷×ê’ê±ìÕø„TÆ‚OqºÐë§ó»Èa\Þ²aÌ%³`q™3 „3 ÈfJõ’q ˜„ãŽ$ÌŒ$3 ˜! Ë9™9^ã©Pð‚݉.îï ’Ùu(tÞ¼0‚FZß eãBˆ8¢—‚Û€à¬`Kð°µÑŽóã>2¶˜7Ç ºš2ê/Õ_iñÞòÜ6ú{çÅ—µÆÊiz>yZ&i( éö¹ž½î¢v<àzý G‘ÔŽÈ|ÙPøÃ†¶úû>$„¾¾haãAëÅ–ŠN7óña C³¶˜KIûØCñbÍ[£Œ'ï7ï£tþÔ× ÷‰€“f€Ò›½šîÑ5¥j| Dpü‹Íroxwyp oöÀ ¥™{ôϹžgG[¡ˆú3›z苹r?Ñ:ÒSeÕž*sµüÞ_‘=’Ë(òTaˆ¡†L' L¿Íß–šù`v;Æ7^|1®˜„ªûø>'C~8]×™Cù(ä¬Î}Åögv@Hä1`ôy;Z»’©?–@K7í³½+û‹à÷dŠþ'¯8q^?î²ëLK7Ph/rô“>Á®\YÇOV( @?ø`²iÝáé>^ÌþaÕKj2‹ç"yz¨4‚&ÄA¡ï¹\ ÝeMŽ«¸[¹P` äÑÕÒh¶<Ú¸s{³ÕÊEv~Æ ¼—˜µÖªÈF[î,ŸhšþV̸XÒMaŽ•1EÂ|f§o6©Ls¨*An³Ž΃ü» !-¿Gì¬Õ±Ö.y<„‡×™º`µóPý×çÕ‘9×’:Èèý†çÞ®ÍWÖ_ÄïÒ ›$3!$pÉ+*8m!‘o iŠúìJŒÄÖêÿ¹.R¥‚¬Î¬ ‰#kã6S}žgv°åo;3ül~ *qn7o&è¿ïBGÜ ƒí¤`9­ŒaN2J€½d ·žáþÙ%ÒeªdfØ_mˆ†/•pÐ0Ì0/)Ìñ´¬‘âL¸"ñU² ãß;Ÿ¿ yN‚º !R÷ØÖP]˜ò¸éüË…öz'‡Ïh`éÏ M2ÓQ\Ö¯ÏdúûòòP'¼ÒXÚ;â}¬4®o@*/,·™Å •Âûp-¥h_iŽ?]isÃÄö¸ãŸdlªÈ®ÐN—"Á@ð|ìôëìß70?ô\~¬h)…\×T·ÒÄ%yMF‚! Ê?d«zTŠ_ ¾^G%ê[­îÅ5‡^}Ç˳œdÑ–<ÒžÀ=MÊ|LKÏ, ÞÊã—ö’Ðïˆ #Ölëhƒß2&|C»ërc§0;4`þ¦’oº¯^¸û‚Ú·Nû1•P©"ºbÌÕËò *šéÂAØ:k®>ÍàVæi‘âä…îFv¾Fg8byþ†ÇÞöqpzÞw{s…¢˜98,÷¹›¾ ›…ä“V„ETÞÿ¨—…íe¶¾)Ný„k¥›¥‡Aæš|Õ&ZÒÝ«,5Ù"›q3·¾t»¾ÂˆÔYve(rUœÝYئ>5mÆJ¶o•™ Â60Ó•5šVk9U¿Î2áÒOP•Ì501Kcìø:K ÓŒUŽ ý½åÉtÀTy#M—=âïRF4ã©b7_+Át*ÀöÜ¡R¿|d;þß^1Zej³ë²©“EÑ—9Ò÷pجWSN3°H ’2g±Ø-ƒ¤èiðù)óo®Œá÷‰˜Å(»æ‹3ÇmÌûË:heóþ $3UÝç{_•_GºU¦NUQºT¶ Û|®Šz[RYŽ¿e<*¤žñ 5áí¦“êRp7–+>è°ÁÍ¡‹þµpz^œî£¶žØ`èn}g¡c©ãKÄõü¿É0p¾|¯þºí0D?“Ÿ§ ‘YšÉ±ë‹^÷ýè}Kad°žê>ïÌm‰T°jJ™s9kÍÞû™ôŸq„FM«ëÞÐ>¯6´ÙÞaÒmÅóóÉS,¨„S_²¢s°ã…ޱÐ×aÅ·ç*y núÆçb¤çá9¾ëÛcæÊ[bxüqÀöº­ÀÓÁ3hœ¢–Œ\(,+’¾>å·•Äco²=N¥ËäŒ%½BOBÕ‚Áiƒ¦Ú¨vOÀè/]DãvX-"É_¦˜ý“ƒ¦K}À\¶‰k¼ì ÙÇUƒua´A>BNÞ?Bé¹µ¼ß¢÷“Ðó~*ý·JòéÂpµÅr¨a+‰@„•œºÝ"`v¤e›ÙTårΚÏ×?ØÇ.§¿;yY·åÖcÅe7»ýýyáûÇ’)0¬›ž0XÝz`Râ Ä3ã#ïjÎb¸LKÐ\þ¬gÑÚ8ù´»€irÔêÚ ‹3ajð¬Ã~CL\\Þ›°Ùɰ™‡¶0¨tÁù”öø@„ ,`LkÆxêoœúŸ%³FÄ·ƒQ<±p²Â¡yÎR+f 9ÇÛ`2´rßZKžò)qÕOÊõãÇSð"軪€ÃŒ}^òŽüàT¿÷Ę̈î-ªCØ›Lõ•Ï?I޼ǧu¼»Û5qu ÕÕ?kîšmï‡åÔ=|ÏtcÃÄã…†ðfòi¾­ý{R1VÖ.dhTtbÌåUIáøJ¾Ö]ˆ`œ ‘ ´§…Ãì»ûNhÔxÿ«»EÐEC!®ÛâR‘؃ VF¥½ËÒ€úì(Ê:“’˜Ð‹9@М*<´–žë¢†žƒŸ[9LLHMlËmöد¡p‡bøJfÔkêg;P«¯Ýˆ[Ç[ºO„®¾;]5sÙ“ÜÛr¨Ó³Ó%GȿޤsŒÕƒ FË—‘˜«|Õ[¢¿l%ÞÏ({û+/ …çà$Äõ†¸¼FVˆA`–Y“Q˜ƒK*YË€ö±âÝW­;,Ç·ÛüdâÄ;uÿ |þ•ôKí~<éu3;ømïÚVlÒŽ ɦqK›Šå•’•Ŧ¶š—^÷¡1}òŸTOKP¢¦›‰G`¡×ƒÿ:Δ.,ó¸•ùSsÆÍ.ô-¼ljÔl\è‘_©Ò^€DkY1ªÆ-ŸÂ9^ÛÏo”oOŸæÄ¯t¾4žÛ}÷G¿1ÅöjÃpzŠŸ}0>ÚæÖßÝÔÌ Q´*§9P̧²,¬³]gJè¹íTÚî }úe½nLad=ÌÈd ãÏ=Ù©›Q—3úªewGZÃ?À‚Ó÷níþÂe+š):â’þ¢ˆG‰v˜§Ž^ή®9<¾|saúüÞf”‡ç‚üÐ"îÿO8ˆ0Û(˜ŠüSóJžûÜ•*â·Ä“|;‹pE²ÎGiÂoä¦Ä ØLòŒÇ°²ÁMáçlž&«Êó«Úu­‹TLiÜeËäJ¯O*WçO¶™ÈM‹m¾qÑ,–݆Œ1.yI? Ú­üİyÓFáÎ…>í§×ã&3ÄáòSùIÝ€kêzhrÒ¨ç£òA]$öò¼¡O`´vcZ ÌYTnÊ <¡á®?MãÍõ&ÜA2ðµè¾ 7Ű ßgC®õo#-nHk¬£¯šÑò=ëa ~P5™«.ï8#‘ÑDß2†c«:mÝù,uCHIL-Ã:çÛ+ -P´.AE`nâð€[·1£¦‚^Ú>/ÙE¶‡M¥KýéTãîæûäèÎòÕzÒÆdc,¶¤ãµ*Â&¶fbÞ7!šàz*‡ñséÙÌ:H9nûè-n˜òÝïOÛ4â/E£,!` ™ÜðýЉûó³n¸Oˆ1²»Í¬† ÕnÓ<«'“3)˜ ~t†f›Tú”_SŒ«òæ–fh2>B÷`Ëg(C3eƒU<üÞ¯Ó§xþŠh­3…Ö}Psç‚ðZóèðeøõ3k‚OýyNi[J|œ—´ÖÌ'°Ù•„•8h4BÉŠÑ8ÓÿÄõu .}ø}’™8ÚÔsÓzÿ³63)Qy„ˆñØÎîö•,òÕ·(écµ Ÿ-Ó´7–,÷nÖêÄIÕ­4\ž§ê™HatWÒ_ì»Çcs2œøгÿy>öu÷'è›!ó Ë•fìÒ9û–Ëk©ÑM¦ÕvöØå=ØxªødTÞÐÆžÎ}ïÊ÷ q6oRêq~j®eO‚ØHŸk)kÒê¹~ãÅ`@+æ£$D®g¿*[›…açÄ’µµx{ñê+~»ÙW±9ów!æ?¥„%xizÕáe Ÿ÷º“¥{ÿé"…>Noƒ×ô¿¥>k±>7ÍWÒ\Ñç)߈ºÒWézßÀ ãÙõëv"9<½‰RR30gÝÎ[¢l8>O¤“¾Á&íÜheF£(Û F\plµ)´—¡sKæÀNLSûló½UÍÄÛÆv|6|Å –‹®Vs=”O–ÊÒP¦Þ|;Ýx¹G€özÛQ}ðÛo[dõ•i¿†© ê'«Ýcð2äpîš¾½Ó¡há“àcë±ÏÇXˆb‹íc¥µ…”Í5®N§‘Owáàc´ÑÊP5¯¨SÊÝ}vTdìx¶Û©Yôâz {êôO¹š—”~Y‰à{Ñ­@Q¾å­ «4_‹½c_žU¶¬¤J4&ZésïëJÍ݅dzº- EŠs›Š…4‡Lë€Xtm¿WÚ×OL¾U¥×®°ž¾?Ø80Ž“K›>“2WÆ Ì©:Îÿz |»}õ˜¬“w‰<èì÷9$#€F‚ò4xkœ ðMcUs5Î2Óf6€o±¤à@Ê£öœ€ÇŒMY2ƒé$}K¾weÙ@éÉðcùEÄÁWÛ|=¼ôÌ›çÇŸ«,®F›¡Q a°&ì4íŸÙÝÀÙÑsU~®²Îô™´¦Þ»ŽËáI-({‰ƒ]‡rä‘ Uú… yQé°`êzXÌáö×~ =4côïç~|nXCH$Ád0À#>6Ãð픹TÈûsÛl°ô,;ޤP_lŒ9gIV ¤!£åoX(gŸB%p#¦9 ˆvkP*‚ÃÒ-p'w4nÊ[‘¯hëqŽ„Þ–Õ<O¨;µ?švß ˆ×AXÉJM˺ʹy«³Ü‹%1WºÁúžPBWÊ €;¥GÉO%|§òâOc°÷`KVc×!h–í5Nª¡Ôj X7ˆþ/DzŒÆd*u<<¥õïÕ%(oN€¡™1f,bzòcCðáõ¿Ã¾ÍMÚa2ø W_¯…åîYvÀÕÇf´§¥^Œ/+±‡òW¨Rù¯6.ãTÙè¢|è£i^ÖîoKNHŸYjnfðŠG$Zå¨(’8ãÁ䡤›Ý'ŸX çqü²Ì ú„àj ÀN€äK¨O¶sZõ¸Æ¢*˜¼”ŸÓ†P˜þ#g² p–ÖñI¹ø©U°‰ºé[úü;ub&Ú@²øßt¸ÑèAÏ ™Íàxãàé¹%lSI‰(ÌŽ"?–©)€µ½·e¡vÆTŸ‚¦N©½Ü!XÀCÀN 49 ¡AוýZˆ!²¹Ø¾øm.Zöó~H2²´ÊÀðЉ P OÏ“´Œ9g*£H\}”Ïœ Meä§K²FÇÁff5§»Ñ²ªg£eëñQ ’ÏŠUOP˜~º¿’Yä×8_ L´iH`0@~Úü(€˜p¶¢l¹$¨ÈÞ}3ÐýÏ;M5¼4ü¹Ê¹-mˆáÁÃFàQ÷9ó ¬ãó«¨û§¶Öd^c)ë)Fz³XøÐK—åj¨0à.Ù£H1-côb€A"°O0øÕ±zXI–}ÎÔÈÓöynS“óÔÊ×xð"¤êÄŸiú¬/¾öj kÃ±ÇÆÄy¬ˆ2ÜGí—üéØƒƒÕŠIÀ¦Õô‚pH !ÞYÊB/:…“ˆà'_­®rñÕ HwþÁ ô¼ì°¶ûšôS¯M2E/åà>齺yb3ÐjV²ûó¸Õáût'þL‰Œ©;~£%»IØtú+Áe·Ã—øNÉÞ®Üâ|o!ößDR&€×òÜÆ²&p9]¿ã⟒ º¸äý°{¼O.êêóŒ#éD¨×cÖ‹:ÆO½›µäÝ|P|}ñ{ˆ`w•ZY)ÎdïË£úx5—À€â±ÏEN¿ùéëÁõÃ/u­)„JäC²MÎ-É¥£Hÿãåð#š92ŇF—ßd§|”^nzáŤƒ¸Ó/lneœý°ô &o"ïMÝeln F‚,Ÿ”ß}°Ö&c˧d9}éân’)›EâyÛ{³æeŸ±·ÖQ±“yC¬ŽéKñ­‹Ž_\^¡»ŽØ;tðâÍ l,õ°…«º:nub3¹· ×D#0>l[ûOC›)i<úï]å3×éƒaákNø(Ʀõ¸Ö¬±…ɽûsqí}–¾`­½ˆÏ;˜Õ0(Õäæ­š\S«:9cN¿ÞÅ^*¨Xã?cMÍ«8ÆÍ-ðPdR¸þý,¿VoQô,1T†n6a0f õ—dxYÝÈŠ_ìF°tˆ60††Ñö¢H¿Š«œš²j­­*êãuÖéÍ ç”ØØ©VÙsŠÜ¶ÅÁ—Íõx2^œ¶óz))Y;t-ØMÀΑܿWˆ¨ÞçJ@M "ªØîÆúŽoÍ!‚üsÿØ:N%Zº'aÌCrÛ¢`Ø ÈÄÂI,m§õy[W'äÁnÎ Ï·Uûg²_Ω Û?jE|´<5j]Mèsrºp;~ oÏqÅä7“m%$V6£¦b" $·ÝÐ]6„ÿƒë&¨À@†4DÞßÒº*˜Ü¹žW…bíZ䶇¡é?I™¯Ç„RŽ”jZ(×ÄuI ”0jW@u5ÛH&+Añ"\2“âûW°8e¹ˆÿ>”(±ãã}­X~öså¼PyZ½#4½×Ÿ;›†TFé:­6·[ÎÈø7ÿÅ·›Þ,ÜÀxÖ© =mf³ ù¯MwÜô z–éâïM£æŽò[Zì8bRldÆÑ<æo©?ý¢C I1ÇɱÏb£âÝ45‰Ù„€pkY®&tštšyê§~ÓÏy·7² ·Fú0V­œm)cÝ]ŽWn#—ò»Ø3÷OM²X«<ÌŽÖHá&ä,˜f¬ïUô¥¯<z"ßñ§fRñ9Ï<ÍVˆfJ— ˜©‰ËË=ßi¯ÌX¸ž³sTpøÒÊ–æDØŒ†.ñëýnæïã {¸ÿ²E³S]Š­—¼Jü9Pó²IÀ§Péçÿ8ïýü¦¹» ÍU°G·QfµYïx_ûÑâgíù‘¾CÐÐûQkRÁ×Ó’;|kŸîòzøWª™Fò¢ÖÀoV¾x,¢ŠÊÊ3` iÜöúÚ”ÎXÜ?,Ž>þW,UÃVN´ˆ‡ÏæÉ3€ç”Cåßúc>U~wvÌe2RZ8 "^Æù"õ]p.ðfçé>25¡XSoýri‚z'Yð4xޢš?Gå”­P”Y¤”@&‹ž¥ÜCzÔ†v‡%ÈŽoåbÝ0½ãé ÃW?mv†D䓾‰Ùžä ØdÒ¿J/ý³%P柵b[O#%¦°yŸ¾X¥ƒö“©ˆ¾ˆtj@wæJ‰v¥ ÅmÍ;…U=å\ÁâÛRiÏME¾ß^ÑáºNzæG›¬ê•A‘ù' ¹g9ft¸Î蟯ŽZ¶vKoK“¤s芹ßÑrÉfÆo~Æ.±ËŠEÓ´J5£iÆ"3Ì£æ&kQ»- §óÜ»…¸¼62Ÿç Ð ×=4òÊ0en¯¿Gj^#µST³{_îÂj rß+t¡ÔÑ÷sÛáøÑT‹„¦ø>˜óTGNàlÙ#‘Ó5Ð4–·½kñ(á¥Aî“·;Ờ…}Óõ+„0aEjE'µ‡ ¢žŠ\XíÝú~¾Lo=1s…·ßKÃnañET//¢'Çd)a#eç„ÿ:B£Žàuí¼K<×— |ËèžJ%‹¸‹pÃïd³%©°sCpr.\5¹áÙ]ÿL…š€6ƒÈ%ƒ0W†xAd0£[\çÆu ˉ__¾ÁéOW¸kÁôÿ'~‰þFµª­¬]¿D¼ÍC¤ ¬5S%˜Qâ³ÃIJ¶yslžò¸+§Þ褦e”XÔRóûõžÝ1I'Gú‰Êµf•’»Ëêk}<–ÕtuYÎtQxäÆd|âÙ5ëêÝ—2úªW<{VÍŠÔíãEç/él9E¦«x2ÏKÏoèçè²óñ½1Ep©ßð¬BV=ç›NÔ2°’¸³»ZÿµÚˆ¥My÷»Ùxf†ðA¹Vh"¸zÚ‹ïWãŒËàóQžÿo‡§Ê;ûg·3ŠÉîú{þ$ I‰žÕæÌ«¢ü…=‰—¶ {JŠšR–Ëg˜YÓ‘‰0Ôâ.P·óM?’–9¼S67š_Çøuø’’TØÌ:ÕHšÎÎŒÊÖD³Èû$j>Ì2ÜâŸLbEØ'1d Ö=ЇžüÖ\ îkÚÄ=$È­v(ÈPmv¬Ú‚PýXz´S|m„¬pyE:ds„qÍÏ~˜g]©§t(P)qNqäHxž¿…ŸùàÐ{2(ÎUÇÚc^2PgbìGfÖ2Þ꨼ÝR¶^n2‰¦=ΉhÝvóG Rbû°€$$pó熢H)ùO‰ýC2] Ö+="R&"ª*'Ù¾j>Gˆl¿=6ÔJ¼yš& ˜³å *¿Ù£Bó¾ÊûàIbkê{ŠB'v/|AίåFÝtV(!~tAðó¿9ã—¤?ù¹&akägJN/ÔÍÿ¹;ÓcAµöŸU³€­Þs]¡—£úvQÈó¾ÈI‚´ÛCÈô@;Eu[è Þø‡—“þsüœt–Ó I~…(%èªïz°KõK6s#ÂRÕ1ÒÃ(þ€ìKvQ9o}H®× ÎƒsÜE¸|é}F®¸mŸO¿ E`eÀMy*¦“?4J˜¹5KÙR¢š¹t,Da£w¤ Œˆ>¬;ïô—xVÂé”Gž:BÅ|tÓ÷ŃWZÙ‚€e(Û%í+™|~–è:š¯<¾_\& $Y¹Ùp¨Ms)ŽQÿ ‰‚K¸çùû*ñÎÝ߇æWî/¹±í.ôøDýZ<ûÖ4:BjY¥,¤n”}6z6cšY¿› ¸Ïõk+Fùµ&¦D\ÆFLt=ôâ b–CˆQG ã)m½¡GÊsh1/‚m9¦O%hðï‘Å4ªX¼à\×ÇÍ£€‡Ž-ê L§•N\7‘ ––ihZã }—й¿UyC}Íw#Ò—Ù%0¯U•>K#Æ ù’s`ÕºÙIÕ?cׯóñ>—k×÷M ÷ kŸ–ìŸmùB‚$@Ñ8N¶,¤wÍš®OÒu_J\©Ñ:“÷*/=Õzú„}1<µb,S=ŽEçRÿ'!ˆ‚ëoß²¯®¹7#ÊÓš²…¸’%¿¨“È@OcñåP÷Œ-giªœz1ÐÒþíD ¡RÚeHl’7äÆ,iPµp’™V27vŤ~­“'ÖêßX¸AÛjíß¾—=.ÿhc‰ÍKÒŸG0z´öñV”÷ùžv›¤>–—TSf—¶bÊæŠ{¡À[ã?ë1òG!ÓÕ¥} )ï³2š3áÕxÄ)%µdD­…+"ÖæŒM îu*~Kóå²AS1—H‚o†6Õ'*èqZýçãb†§þ%çùÃq¶†5ë½A–Ž ÔeÜð«Ñãú¬‰D7ôí¿}žÀèYL£on±ßj_æÖúÁE¤qþ˜$éëÇìÍãºù=_o¦+—…¶bSN6Q:FM£+ÐÙµJVZë°fe/%Lþ›Ç’x6þÈ^òNR­KÙNçö-u'!’ŽY2+ÑÊ6NÑë5»Uåü˜95ìî~Ù¯¤Tÿ’]@nµÚþòkûð»–Ík5FNÂc±·÷*›ïɉY`áAÄrçÜ%Ÿ¡rK•É ¬ÕD*›ÔG) i EÌkƒ£kvK¸/s*Úˆ"Å#ª  s*Sv ´˜£ˆr*JNÖìê¾Òûˆ1,*3V‰ó̌ӛ¡UѶWoo˜ë“‘©AõÊ.iEÓŸªãVßœ÷cdŸ¨¥ÌŒ§>8¦Lj™sò9†sNÅ0€:índŽ@劧Í¢‰ÚÖ·å!dv¾{C ^ì‚yÏQ†,þ£÷õŸ©ä6yʳ[/A]Ÿ+Ü‚ºó+jÖ¯W8‚_Šãÿ£ ¶m˜ó¬>þ£îI™$Ò÷xÏ2ñÅŠ«¢ü$ÛªhÜèEæöuyyN˜8ŒèqÒ˜5Z÷¢{VÊfúº£¶y¸ïx™q(*gÅøÏ”œªÔ.U4 ïïËí6œ–vtöïH*jÂ0ÇÀEBø2Ñ$ÜÞ¡Öò`{Õ©öf,/˜BRjìÕqî ¼^-Yœév:>+>›º¨ÜÏDkÕ$*ãþP4Ç~ÿëüŒ»±z¾|Vñ‰.W-ÞyÖ¡ìÓ¿‡èVhÝ%Ú*ÿD«„ÑåEhìüÏ6;SéÊ®B'tĹû®RtÐ&á" bÆÇ/Ë:ªQºêwnÃͽÇxÒ{É»j_%,Õ‘Äí~jä¯'uê/éjx%§ml›÷£o>tšDlG[™jThU¢µÈOÇ%¾ÓÎè,©{¦™[©g™…2”ú,ÊÉD½k(ñ¾Íµg~Üà§÷rñø“<³>ËEq#en„—Ó?ždúnµôçÃNä߀ã9-G§Økĺ♑«}¡`s­íÞ\:;.æ8;ÀIJ¨|eº²¯ê„AC´¨ŒÅ|gÎøÃýöÚˆeÇRq§C8våŠ÷O‡Úå÷÷º[.°[Ö`  @€~‰ÂKŠ¾ÃŽ0U]}öÌO¨¢ŒqhG€ç.4qc6ÿ¤GE9·%ùã?d˼Yò?öÑ&/þ.äŠp¡!1áí¢zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3mirror1.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.764788269 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3mirror1.dat.0000644016037001603700000006700013607166133035015 0ustar00hutter2hutter200000000000000BZh91AY&SYˆmawÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà:¾ù½ãï©¡TMju—`ÉZ ”Y;›±FM¯¬îÛ¥÷nÔi¯¹ èéÝ÷»}í®¾Þsï}÷³ë¾û½ï»Çß{]ß|wÓ;»ãŽÞxØåv[ëY.ûºûÞÙï|›o^ow½yïE½®Þ}÷}ömª÷š FÚ©o¸qÆÉ{­Õ†Ui©(Ú¡i j}΃ÁðŸ{{Ã*“@4ô™i©é£L4ÓCDÙ̉ Õ?!¦†F&SdÓ i„Èh jdØ ¦&›Ai‚`&4M1PeT L™0#F)šdÂi”ôÀ†™4hؘ ¦L&™0L ¢Ÿ‘Lš0†Ñ‘©éÅo·TÏ n”²|µüÒåƒEvTi0ëo!‘²›ï ’v wg3ܪUÌé¿XNO]‡Öðì˜~µ}ˆi‹ü¼«bºæÅ¢!]ͧòé.@;Eñj5‹+œÊVœoß ŸO:ª°’Ó5Òá¢F Xmì})ò.,/[l@ÊÌ}ñ¶œGG7Žœ§Ù *ì’êÍÕ„ÌÖ’6V^‘Îc%ÍÖ=ç£c_^þ­Ô p„Zã“|0¹š‚ˆÝƒ Á‚aʘ`<ûIß4Ì⾇š‡¤VVþŸ y ø»¼&%À?¥×¿Ò½»Ítr¯Tå†Q« W¡ó¸„3Û)ˆŒâÜ‹®wF˜Ã´AÎQ ÈðŠÀb H: ü%ø”C@ç§jƒ‡<׿g ^Ø^÷.Ý” ‰ÅÅÉ´0hLßÅÊ”¥Õ´ ç°åPðËf,ŒÜÕ2Û1µ`óANvç|èÞ­¶·œíù£:ಠ‡Úf³\Ù2DÛ˜–Aìßݾ‹nøïfÍr¦Ÿt5l c·"†˱R´¸4Ì[«Ø1j)ÑAD]‰¸}.$`Þhkƒ°jžô$/Åpehìb.Å2 š1lÊt¡lçÂä¡¿48¡ƒ‹rlIº«ÎÂTï^xã—¦Zø9ÂF4Út4w².ƒö„“ +…¬ê½Ü””õ¶5Y¶ÄäP…dEÀ°>„c–ˆy®„‰é7_®^ˆkÚq•#Í! ô†F× ^Òæp6D1ýkMRÄçÛ.}©{¦ðÊG,Å~¼wLˆZ½»jyl!få ,˜|'d‚€‚d‡lâ…¡ÁȈ =€€€æý½6¢p ¦ £¡4iÙOl¡3fÔ>ÀÁƒNˆÓ…¤’À áÑ”¸>—&­Ø˜=wndÁͰ\¿+Uõıå3Ý=£1Þ½:ߨcÉ+LY䨞‘¡Ó<(†µ !í9a¿!M±a'WÝ.Ϧ\¶€çЕÃ07Hx¹ƒâO|±µÍw2µICÆ([±ìVµ&ݪ`…£R®ÕÁ<Ê·ÎЭˆ% +…€@rû_ÜczS-pS‹ÞR@ &”Œ@Ñ·†&δѵ¨vÛbiYƒœY?Ûyf»¶¾-P…š-C=O!´3FdúŒ+Æ!ø 7ðl›‘€¨ð\ÒFpÆ!3–ï^ıC4 Ýë] Í&†OŠÀ28¯dBùÌ2 €B—RE‘j‘¹ D1lT(õI b”7bx`p["Åá¨Ë4D™ vVAüí\ áá0žÌ{$‘´E8G ÀoX¬<™(-Ø?ý/åfÒ±~N¨…¼€2±¢o Cï°o Ô¸t$žíûó‰qU÷ñ³¡áGÃlêC; ‡³`ÇA ‡ùž1“`D)´ƒµ É–¬7øêÑG» Ã䯲€†Ìì9© Uœ¨€êBp\áL@гFþÁšE£'Œ†Ä"Äœ# }EÑ´ !ŸxðÑ‹1lA:¼lËɰ+I…ùØD“?’ÞaêЀ3@Àaجù’‘€¿–ŠJÅSœ?qßȜϿù€{òCì€N€Ø0õƒ;‘ÍÈ?ŠCR Îp¨óìŰLêK£ …@Î'bz ?éÈ'&K ¹i£Q?dЧ¸xxOÓôSœýl0Z˜±…ãKs¤$¸ûf+z‡Ì)9"¬(Xš"™H¤ŒÁÜ2¥Ù±¢nÐ˘– V ;–È@Œqv=øL=a]ù8pyÆ}¨‡‚o‹$w& h‚GëwAñ„å¨A#˜ À‡ýúFض¨Ù!Í¢SdÜÈè¥,ßÐ|Hh›gX…2ÓhÔ!§dCÇâ3\©4Ýi© ô8fHr\9uÈaƒŽwçžqŠR¥ ƒ&ÌZųßKrà 5ãÇ9§±,ëãŒ;þcÏ|‹Ã—ë8œ 7ð²?ÛM·Ü¸ä9Hmø£ë Ì Ž2Gdá˜"CÉ<! ŸM,ɇ¨T Mçƒê»˜  …Løž– ¨r}O1`%ŸäãLÇš ©16ñ ÐòMS–o¨}½ïo¾óíÇ"eù+Cr šïN1l@;C˜CLPT AŽvàƒ:6Àw ¡Ð-Šæà:—Ö!uê½ 2ºֳæþòrhJ+0£çÞ¯@×ü‚¤Ó!ALS:¡ñ’P1á°t‹,ÊÙi!8“4¾i8[p ¼^Ggvö#¹XK•ºß• ˆs“‘+á9t$CHÊônýýlÀý,ÆîÅÈÙ¥yƒ/ ×í#©qÁ5`àO~ý‡IêÓç­ïÀ' ¡rŽ!@\/>´Qmê±g“×äËdW ¯#ãÖ0ò¸‘l<Ól€Äº£+0–q³7Ào—RHn†¸<†ü#dC@¿u¬7ä!²zóVQÐ3AÔH«ô!Í«Bƒ“jš1Ŷ,҉ӵà J&«}E)Æ ­¸)è+™Ðþ ÊëG­äÅ´p*öÏ~„º\#õd… §ÁŸž38½n¦k÷ÖÎq êBºw\}îh° ðTD¹{öOïoà üCPa‡ŽVf48R‹ílnñ}r d8ênd_Ð8q’°_ˆØ(Æ” Ša!v Q«•=#öžxB_м5S¤àÕ ò[’O‡¬Û;r…q Xñ.ˆx²™>"˜ ¼ñ ¡»k2n˜ðPöBø…D-ÀÐeÎAØî(°6 ÷Ž- Φ¤+¡çÛV²Ä²†Ð?›ª_‚lñ ÉRZoɦ:¸ÆôùsyHæ´TÏ2:ü-(xTM&¶¨ÛJýPl«[&G«€Û]Ãýžwý[1Ê(ÖPW*‡ÏÙó6ày§²Ü;Û 4Ø5L§óÏ8Ò>ªàðj÷Pm»¢oߨšØ÷5}\ËëÀxôäZ»vŠÄ@s…šìÐŒ?Ýš¬ÓôÞ‚å^Jëp±½Ç@'À³é‹“ ,ÀË!Ú·²Fy„4Ä_Ìâ¡Ì+F÷Ôf«ñ<Çeeʸo9b2À7h/„̱4ë™–7Vÿ'Bž äãh!D^ùvvò KŸH Ó÷ÖŸÍSo¶ArÇ´ˆÖhÑóÐ, 0^OÈèF¬`?^È*7ðÌøÚ÷J¥€¹¼?Ålý®>î|Aåõz³±*œq·õ~~âªÙÚ]OóýæTɼâ´$` éÀCÁκ§ÎCˆe ¨mÛwÏyöé ÷¥2Àb>K¶{M¢%øi¡l@m Y}'l pÐÁÛ1#BÎä`Çg¦€ G™0÷€Â®s(ß” ×Ù¸>€@@CLè)ë#°§·,y4ï/OëÈôo=¡4€è1f–lH 1d4¼ SHB’ì{¬¯8© ÿ4 XI aŸú´•ÃN·Z $ñM¹™ˆééraÉ>ÉWÑäÕÛ¹·‹fr˜?ïroòkþR¡V»Ôt›«O)¡¸.Ûz‰µ;¸ÁÑÙ›–ÅÔ¹V2HR~D3€ç‹ã¹~!ø°B¨æ[1½2KCŒ‚TQ«]Xñ^AA¡›Õó¼Ñ +ð°vþE: ?õÈ"-Þ¿‰„ÐgQŸ|nªŽÄ ä¤qYø¾¾7ÕÐżKø87 Å·àåkÁ°~{GÔñÛ>“ÎÙƒ‘¬´iFpú‚,ñΑÂt \û*Ng<íRòüî'' –/¨õ¹oVÃMC ,€ÄóT×ìƒ9xï‡ó(Š}fBbX·ÒDv§T‡ZA˜S´NEÍ¿¢wŒ÷ÎkƒY†L ;tä;–èZnœ „îo è˜V.Ñùf É8r@yFP­±Ñ5­íðŠtæÞ™Í¹‘ã:·re^¾¹ ÈX¿òÆÁ ŒÄKûC:EœïÜS|ðßdr¯¾ÿƒ= Š&ùØ7ô6šæì…ƒ»8Ž€djŠB-Ô¶èáΜÕ˜àßá@³ðMøò=ÎK†jÄoCÀ•‹V4ã×Á¿ˆ@fÁƒëUR FsØôQ“£Ï&ÓÒ½‡qÄÁÙN8”P±í»|± rú\¿Ù¶Õ¡¹9­íŠ÷›€)¨C0âHdÔ9 GQö‘(7¶¶‚ä¨e;ž—þe‡Dß´UáÙ︢pŸñ–PM4‚P*Ä1 §“°ç¬Üî×AuåÿfFèÎÛ#»Ïag©hÌCU¬LoªÉ^P—€ä«aˆ¦Õeû•÷8x»þÂî;#¾âbÂyòêý÷€áaq;ƒ+;ßÛéb©)tâEø®<¢Ÿˆç\!¯ áZQI˜„TÌìaí¼¦d ÉÅÅŠHe`À@¸øÌ¸"K•Ô¼ñ3½µBO½îï¡ãôÍмŸëÂG›&H+õ!ñ¸ÀdumÕB(oôŸÈìY®5Ò°q€ä(B‚hX°†=fB|ÒcÔ0ú¬?3þµgFÑð‰á‘Ù!¿B ‡ßp¯vѸ hΰÒQƒ`qMg®…HJ‡«ë]CxL‹J–{¡ÏµÎç1ÜWÜ1B  _ï  pbžÃözôÒ;¤"é›Ë²m˜ùØ…“Ð7bÜ*°yÖœê5þ]µú ÔþfC¾ Ïá.ó÷T¹ú´5>êÒ÷U€¶Î´`rœ(Dvì¿j‡Ä¹¾ŽHuo ruhDÓ€£=?éùm¡DïßÕj„l p6˜–`:pxÕ~_eÈ ë{C”8Ú3͸3?>Âã¸Ûyš£Ô}Ìf#IH3_;üdΕì[÷%óQ+±"Û;9ןBûÚp|{`~JG+~ѽ€<«W.ØçTÀ•œäX,VRuSÜ€p¼Ì¹}s`¹Œá\Uš{¼ëŸOX3г«€óí(7ÑGL,¡™¼¡²É÷¼oøò°Å6Ùy5¿~ý¢ì27aó<[œSŽÛkv_-ÐãfAlÞTë*]î½!5X;—(L ¨åÎúçÞáÅ»7‡l9ÆÉíZèÎp•²NÔ‚ÿ·1Á“˦ TâùƒãxoWœÓØmz‘èûéPUvTÌuןq’V)k|8–xs‹vaÿs˜zÛm:érxº-ˆyÑRgSˆiô-1•\Ó@š0+l#RÎìtûuÂyý‡Z/Ä¿I}ß ¬šÆwÁ«#1ðg†s.ö¯Vp>gïúW}g«Çaœ|;M¾¶Ñ¸‡óЇuéâuÎ QÓÉãE·ÕnFRBÃýŸÎ7óœqüŸ”ÆADH+`øòÃÞòmÊXZLƨlþR ×jöU€îDÀ¯dü‚æâx —â‹-† Ca%x`‹v‘jƒ_ƒ,¿Z ŒJnqy]ÆÔÛø~¤ŽÃ3mêÓâÁS±vX*¹ªI%ñÒ0œ¹WSÌS ä%µÏp£]« ”wN 않mžŠM¬×Õ|ä[·5÷£3È¢uLE‹] ˜é „¥†Ý^š» °p8ZÈš‚ªkÒU6]KÛT*Ó—‚Ý7ÇXü‚òW XÇG<ÎÞõÆeiË=3ëfO›˜9—;] îÅunûéî®ïº+éþ‡Ê’z ›‚„’œ[ùéÿÞ á]¶”¿dÄ 2çÌ\U @µE޹€Êê2ýÓʦ“ç4ý€Ô‡>s%§š 4=«í< ¤2›ÏÛ@jê¡Ñ³jdÚØMrƒ…Á±ª\ü}÷Ë[oP=ëªÿ~ ”bÅäOŸí} )‘Mxâ›îõšƒzò=<%Z Ûä,~eâH%Ž A¬Òâ”¶>\à%@ëÑLke©tÆ&zd´H±5¼Œ´x0€©È2'AT–-çd;‡«”›WÁÆ»ÿѪvnAœd8l²Ùî2ÈÍsáõ¢Ø†oÈŒ$š ¡êïØosûˆ^l#Ôý„î½³ÂGkrkA6O]š(á©qËÂå½zþ˜hŽdðt´‡åªÝYß©6€ë§†¦Èo­ÄÛòð®Tê“m}ÎFÊô§j €‚5æyS ”›ÝÄrÒÂ^jSVË ‘æwb”°×Ú¾:ÙÆÅZnÞRw¿ jí£öP€¾¹é!ÉSæ«ÿ‰ƒ¦Û›fzæ¨ÿ¶j½£QýAíßÎÕd/0dS¶øˆ%}&¦ž(VÚ0˜îµvªº í •²„ ÉvÖ꼋³8ÚÙ´•}Ö,Hb}q­:ްƒ c‰&/XW—EóÚ@a ƒ¯yÙ³Eâ¹Ï}å¼ûÕ¼$<$?Ó‘£{o"¨Ó‡wï!G–ÖÞ1ÅÁÞyøAò®vÅEï“ËwYë÷ßFŒY’àW 'ãà–“i‘‹Ïß÷(‹`_KzÚÔnÏyˆ—´ˆƒ{禘›×kÆù¹`¼(¥`H6F ãöeÙ‹ý´ï²Ü‘•¹à9¸©—‘I“] ÎL%¯9ghàJa‚ÔÍ”€½ÏÍÍ\b¦ÞàseÉÑ};zM‰È9yÎEω*€êÏé!”ÁÈ—ùdÍ5 ã<™ÒÇÛâéwƒê;×C¿ä¢Ðâ •ìz][P¨¿?Õ@ ¦ºAþ)"D,¼ô`¥«„¨+˘¢Š¸‡¸®©³„@£ê¹|4 Q¢ P#÷-“<yœÓU`!¢£ 4z?3Ï}<@Þ§8hZòÔ¬šÞ UÖÚéÛ¯Œ¢pVŠºV±=±ýC‰mP³-‹Ñ¡úûx¿ xôİÑ`©àM]à&ª•œw~ñQРͽiXõvÿ0“µºÄ[ö¶™ßJ—©màf©¡Ò™Cضr£Û9;çÄ…{¯BOÌ/Azídƒ×û3ñ„~lT;LÖ [öÕ4óÀ5e´­B‡Àƒâó,¨_O=íB%ÁiðÏ Ãïä«nÞœlÿC8ºú /ù©Ù-é,ód± É]4±d ²¹&–<äü0ʶ"Ð홪ªØC&88¼bÊÆ»—W;‰ØKÛßXú­z»ræÎØéMò‘3V0?ßÛC¸… M‹Ç)qƒ§Í©ˆMˆÎ\øù™€Û¯˜˜F[õ1% s~BDôçË ¶øÒE kÍßLÞÀ=#·½’^îOþýHotøiYYçªÊϰJ7¡ Λï}ìÎ×D@ëaË4Ì »VÅžÞ»×¹%9)»à{¬ô&ÎM•þG¾ô{ÊòõGøçrÝ`Aÿ®"Þ¥ àôeñ_±Ý¡Hè°ë¾,žìÜ1ôC›¼í.k¦ÿ|"ûÏ í>sĆ_ÜL[Â11õSñÒc1,1%ð̸˜‘ܧ™äô“"rÉ'žìü¡ƒ%j+ëþêÖškvT#®ÈŸ¤-gWƒ8ÂAþ§IòFQX÷hzÏœ £Á¾ 3ãEŠ®öVæƒ5È4¢•ƒ¶_@¸_GóÐö)Lên(€7£ ާ}?¥p\ÌÓWâ`áQÞFôŒ´qhÀà eYHú3“sÅ™ßí’ôIÈŒd~eÎkW ¸îîcl 8KW°,°ñ?Ûœž'wŸkEfc¥tò£a&—õLШwìC`ÀTŽÁœÊaĺ;I…¸ÀÂŒhÔp±dÐôfÿÀ6¨÷ âóˆÈŸÂëP±ùZä‚ÑÏÍ\D·w¿KøÎ†Þ¾ªÄUú"«{¶žGž³µJƒw¸sÒ˜Ÿ!BærnLÖ¿iŽ…OÇ:¡¤êº™à’A´?¯fÂhê÷Á™Úðš)°Íîéx6œÕ“åP\ÒÎId¯Œxn8Eh²Ý”è. —ùÅ·RéCt6¤\ÂuÍùYhG]ò£‘qâ0fxã/’ eZZÉpÏÎ1ìg¾ëéó`â^?…`þC”v£M(ó`t DðÇìBOÑo´å9 ˆÂïzÝ]W“PÒ~Õ€Ð>”‡U#X(nµŒniCHH*+õ•Úw®ÇžáZ ¦³+ØóLŠ«vªimÏ£¨¡Nº+Ԣʻ/:ug44l0QŸË.ãoͯhØÛ×ßãëþÇ‚¢Ê} Å…À‹ŸE ¬05áä‡$­ úR-„gÁ­ëíæ”æ2ªô®MˆÀ ú*Ã@~ÇüÁÎ ã7 œ§ìÕW2Ã<Ú=kIt( #¾gzìž/‡Û‰0 Q„nãÖ¿Ò£¢íœù!Ö^6>Õ^VÚ,JÄÒþ€V„#Òt‚Lãáb[=ÂÒSpýìkÚmVXãÝ­‘Ç:¾ö )?«™ÙO4?š\¦&í©Bl­¶<ØÆ£÷† W‘±t€›S|Õ×½ºišpãp: ^g(i€=ù*"ÞÆpÀt@p¼UuBÓ=‚ŃüÅ<¸eŸáÂWóÚ9Ñ€d‚.¾š¯[èíwó¬C[b” È(〒)„¸ +á&Ìê‹~˜dØ!ùÑþÞŽæÀqA pêlAÉÒo³ô:ëzOÝÛ|þo{­ýU¬À¼ |ƒËctÙ8´sy€:¡ˆ GÞ ÀäË¥–œ.je|¼2\î;Ehÿf’»C€†ìGza-ù ûô*—Út|îIòþJÀa¸¿ÑS¦j°u‹o™tM×:ñDÀ[:Põ”{ËÌ««‰Eåzoðƒá›î+ߦXá†ôƒZÙŸ3-™Ó÷\•—ÖöÝáò•ýÂ=½Íí·ÆDÚ”åÄŽŸ¨jÌîý®0€Ø×”l ѾÐP‰ÐvCÀlØ,mè•WÆNgë%enýºüY0ý72'‹ù í•Ò ý’ôg”’Pc„*Î ˆPÿN2ÏúpØ<øràR@ýdCÒ>#εkü¥¬Yz[LÒ¶È„®¡C;Î$°äÇö6¶ _¸,d”oîpÁ’`A°‰ D•À/˜å[?!ù]i£[k­F)wudK¤øâ•œ‰Ä÷M +d„ÀB«çÿŽ_^³=˜ ãÓ›.‡â·@bc]0GÎí¦#Üà»I'ùònÀ/%RŸƒ˜OéyèGÊ·ÎY\òý é‘ò3)S°q·ªØhÍ2ž“âZ]ŠÁ@þæÅë2€níL£5Õbíö*•š‰0g[E“ˆ4'J±nr$,;Õ{GìÐ^ÿ_QôÐ=üzôª-´ï÷pé€ÐÃ<ie0¹ôˆqýÔ&®oÄËT†¶$*rûs¡Pwr=®¶?>•KÝ)1hüÌBÎZÀ/>ã7 Õ³:øº6V¹Nêšö§ˆ-Dmve~‡¬óDè¨yu~Ÿ®¢3Cµà¦~³=)Eàøw?èåã‡9Nºà©)ö­¶<[]s¼v긅™¬Öƒ=f¿yæ7Ë=½Ô }ÄKn4Ó¥ú»Í¹’"ÄspÄY}cOòÒßHUõ„o ñ€— )ú}¶ºKyË¥›nž¯vÿx¦׊Âôê_M—[›©·f*‚ßyã„ü•ù_5hÕÖyn·r‹XúK§V~mÓë#ç¹Ï·¡ÜÛ˜0@\AbL^¹Ç?„(i!@У¦$'§dî˜+4Tó‘YÝ·à˜ ÙÑij^špR•l'‰©Û?ôS›,8>z«©"Gtcòà»õ±Ú’Déõšk§1\1R¸QÁþ¬æœ¨¬%o.2#ôSýöÓƒ"U@"ДŠó8ÓT•J:< Ú"œŸ¢Ñ?ýé:>«Z6÷5‹ÊaæÔYjÖÄ¡p+Wˆ:’qúP˜‚Ò¹+—éR¿ö]‹ãG‚_»š*V¤žŽ‡Ÿ9–½nwjüsÜ8öUƒ¶#N×}w7“ú¥?m-¯9¡#ŸÔj°:» cŠB„¹ÈhFWLD Éø—œ3±O~¢;ÙYÂÕZ´oì~œ?Ãj_ ¤æÓ ¬‹VÂ.¨Yo{Rö®Á¦2ƒ‡þÕf»¿w n£\@~¯*¶Ô£êMÈÙ™, ?¼`ïkS¸ÁÚý ßs‘`žµP`ß$!£KÝÇî<ÜÅénÇJ†ÿM¶õ­¥ªÖÔf"õŒµ(·ïJ¦ˆ.ÇÏÃÅŒÔ0î:³MzŽ¥³’÷•›òÛ턃{ÿºv&œ2»´Q0&í®1™nw7ê î«=èï°FïÕÐÜSH9ë)p<úhÍÇAÀ1 2ñ°ÝÄüšš8:30û[dƒêfï?OöûnÍë)f.Ñaš0¿+•s˜I¿z¼u¥Òp”ˆÖx󀫀Sðüü¯É†‚;Á ã(y t0g’®§êk T*}EÊåÝŠãïú.›á²>¶¸$1ô÷û° ÄâNªUÕ¡˜ÑhˆQ„€6å'¡xÿd×G”BÁ­ò¯‡s›÷ÿjV¬àžcD„ ¦åÿÓ™ÜsÂÕÓ8vÓ_7#ÍÏWçX5M}ÚÈÑ¥cUBòƒ߯=´\û·f<ˆö¿ü’J?gІÎɸVÓéîV?–‰¨ŽÖâo_žºô4Øš¥ ÕÙþô&†ßx]T|2­ÿ¥ž2¦Õ¶)hÍ×€~T.e¨2¯ôÏ÷U P^Vxí¯uÞ ŽñtößYl“åz æ<´nÔïm³§?šB‘z×ü§p¢œ¸ÇvêøÄ ¨z‰ttdO+{rÛ’sYüÿ ¢Ä»GÌóÕñšˆp™ó­ ;)¨…zL)J1;:¹iÈîöP)o¾K«kÜó ˜}q ‘ÿ!Í3ûÕtFM]:7÷±å{i8Bì®àvµW4¯ŠVšc­½þüÏŽ”PËW†çò0÷]¤“ˆµû +ñDåên¯ÍÚ^9ê~†U›C<Ú= pËæ £úÙT]æÏq;ÛùÖPÓ+N6 ¿É¯q=ÅcƒJëi‘nuô34컿·q¶ksÅXt¢œñbç­¼_HJ-@9À èç\ç~›À±ûwù4êàÞUí—czIƒ[,c9Z¿l\;â%Š(‚½P-Ô7WFÛ×䋿y'Å}ñ÷+Q3G›.&K³™’jÙý¶ö¶£§ün€9ŸÒÆŸ‰ ‘±.~-ŽÚÅ ‰ñ»&žÈ_ûïŸá2›·ûTâ¶6¸æíûΧUöìþ'EÑõ5®iÓj$ßzyÀÄín;ØšäÛËNÞåßðP£ðΤäKVÈÙ–¾ÓQªºyeŽjíLë°âX |fÞ3Ëå䨢úBŠ‹1e¯­ð02ëT”\+¯¸aÇõ8¯ýlS]¢YØ·+WN~ps¨ã@×È`lƒcæ°ôGy¥CÊ:~7§t§ää©ì꼪ÌnÞÜh\ÇùFYH 9y”¤Aɶz™Ç«Šb !6O¨ü½Ëjó1²˟*:ÙÙ¯Cê*Î(€­QóSú3ýsŸû”Xf!aÔÏIo=)³œhRø9oçåïV”}×»[×쬓©³Û; r»©‚—¢ùºLO› mËï)-kÉíÃ+TøaÌs L 4½ ß3•ƒŠR9«vèdþ¯õIs¦O á*¿±ƒíØà¥[û Õ…×ëržåæ?YŸv÷Kˆ +0Á €–@¦2­+éº Gê€À]nP™ÌúZ*W™$ 16Ø)j&fG5ÃÈÛ9ª O|£,ËðýV~ªOµƒ@û»–7|ø8¿Û¶—gTÞËz`xOÇáõØbÂÊfþ¬±p|lrëEÑ^¬zîP¾ìºÛKÊÓ¬÷ü}æíøùoTýÁkŒޱ†›’’ »ÿCá ÛŽLAhø»Gõ0d¤À|áonòªÁõ„ »b¥MÅr:® œµ–ýJ®÷ë›Q«ˆ¤û*± !nRÿ'•£—Šèu,`&±wDΣAÏäíßî¤À5]ÓEíȈ_¬ ïÕu ¹«Ã8Cõá}ô‹x} î-ßu±]¬¦ ¶—7̬°*{Z±íM~{Ò¢Šî=±¡ôA¸/ú~rècë992‰Õp¸ÚV&tÌ29Üg·»(R´®ú$àÀÐ#cŒSÔɱƒôËrW³È5ÔñÙDù½ú”GÖ ´™ÊfÙ.…ë­š´mödP¹²Oqj½•îlKu÷çºKý”“´ÎJèèÝ*“ë;¼†ª¾ùÉ6v×oOjÛ£ßr¸›×5¥WÒ5Ã=&wsñúÕ½aè?M56¯­¸Ï4æqÕQ¢µËÁ¬¶µEðÚ…bœ»!Ë YØ"“"ûÞ²9bˆïоN|_è=­2£‚ÜÇqô€e_ú´•{î×­J–™žºð~D/7­SÓ"¯iº«°H‹”êË%-ÞBØíC¥\à³€@@ˆª¹<¼²è4Î:^#ÙËAm‡²¾Ÿºþíl|°Ñý‡ fŠ|k÷aÙ|¬¾u mf¦wB¤ÐÝšZgÔ½læYÍÝ?þø 6]Á_Ç‹Æäí?æ·9«õ¦T ÅÕ?e‡÷(fd‹ÜX~>·Q*¯ݬR³ìÖ,ÈÁ×ÛeÝÓôoèumçÇ­±‘hu]–;œW‰m^:fëdå%Ã\õ =£+Õc½ÇgA?u7¨×Ç:[F¦ß¦ÔKTÉVcb¼ù ÏuXŒ¢åä]Æ£úko´Â9«Ñûš,)¦üüzYÙêœ~5[e ˆØW3fo|ÝÏ~µ”ºˆ÷£L¢ÿ„ž‰ü÷¹–Ø]6æ ÍKÊT Ñö0«Š‹¶D5!¼RóïäÍJb+=ÏnH¶#ò8êöŽIšòº¬ž«åÞƒîñÆÁý¿È\B‰Q︫Œ÷¬Üvé”NßiT€¼Æ-€V‰ U¯L ©††+ ï„5qû¼Í®Wë$«‹[ w¯¢^1òlß®ö+º¶_ƒËCZÄë >Ýö|ºv V’ÞG#棹>3oYKæÎð¾éÊ¿®ÿ]–¨âçw3膭Hc€‚9‚ω}GÅrZÑú]8ØŽ)>ÄY3sêþVH &êÆ›k ·¤Ôz’BXàXƒÔ”’”ù“ëv‡èÒVwVç Yø~_ÁP›sã³íÍRø2®¢ó¯&qPìŽîOÎ0Þr'ð÷í½ßÂ-K÷·n×ø¡ð½©»–‹R÷®+•;´ÜáËå:;¥eLÝ^Rô~iõ4Ù¹Aý KØ»A–‹ž=Å ÉÃ:ð3ï{•Í÷/ñ9×E@‡Y¬qQ˜Ü|ÿ,½å†3]ÓƒÈBkÀl]É*c1Ôßu¿ÓÖ_öGHZ“ŠF2)3]ýÊ:¤ê¹òÝ5>*¯¥zÞ3y™—ˆþ ²´Ãù˜ýˆ F»R=j+¶»í´Ïì€Ö‹ ˜¹~&Ï7ío+ד©QÄ¡¥öë}=„¶°qñqCAÕ¦&^o×…‚¸•ÁŽàH&¬ŠvãÍþWg¨cë³#šIÐ wÃWöVÖ72¥XµªÿêðýÎa–Øqç—ûföúƒ ßsðïPÈ]€oShr±½øˆ~ŒQªàÊye«œR™³[8—Cp1/›H )C28lBߎm“oÏ?y»d‡ÕfÙ¨úuÐÅðÍš²`t®’ï|h/¬ç˜Óÿ¤ùÓ_8ï:( ’ߨ‹;=¯P/,·T¢í›ªv/ÆèÃë¹—ÌÊ-ãÆ}RÆ ÁD€¯tÁ¯ãgtæ>\7£ÙN—tíøtŒtÿFqšzwßo½îÌt &?r§rãôo‹V Xæ`` I¹þúÿZK#qô7c£…¨WPó¯Vä"—Ðç´cl¡ºçWÖû¥™qP‰ÂÃiâ.§¶æµ·x>ºFUöv?WÀžoN’ûb?G6Ú2ÁHË»o?2Þé“ܮ®£‰Ø]Æ!êqlÒ}}ÿؤšXá!ÁP­6¥ž¬Ã†¬kì[tò¬jô3³TMK÷Ž!“¦í›™™GéåÓ÷XÉ[ߪ€câiø:T%}?ã$²ÉêêÔí ™­ó‹’ò¸gÑäòýyÆ)9=º®–~|¸.¡MÜ­å~;]ä©L†×FF®yû<l@:?ç_%ÇêêR xR°­Z) ñÐÍÀâÃ*´%|íŽ2ŠØïdºŸÖ¥ËWÉ€ê?Lþ?cºmîÿ íµn[‰™ùŒOÈ&´ONÙ`Øé¿ÎØÌŽØ¶H„‚IF³Iæî1oŽ’›z¾˜"¶¯YúðÏ!-Éù^'åµÛí?¾ê5!aYƒ!¬_*‰SÌŠ¨ïÚŠëO3›7A‰ +ˆºaÞg‘Ú Ò´xµÄÎ×f¿¾p›¾æ(§—„[ÔÁªñ,nR¹ëÊ©ÞRå‰?«&)<Ô’®nNàxÙ\zqpFs¬æ&gõÔ¼O-˜½ÊžêGÓžî軀¦‚*:H™ˆ’éèfb'èsÑhÏI.¯²Ì@ìÎÀÇ#1¡ìÐ^¿Giª¢˜°§y¥“ˆyVû%Mfî‹YmÝe£óÈéµþ½ŽZ'Ë3’ÄÊj%Ÿî æì¤8\[·ŒG}dòð‡=IÜn[…™ùЯ Æ®enЧû¸¬†ßHºÝ\¢¦”ìè )O“‘Ôùñkuرú@8Û&ŽVT»d"ý–\çÍtÂ0<žšíH›Iç.2Ñ·ÑÏýuLùH‚yèa²¡í‹Óš»dÌ›«¤ëÛæ×ñlë+C Kò7üÊUJ/ÔfÐr$s+ñ•Ýë—ePÚ(\òb‚ŽȠÊÝ[¯ nW¿ª‚sÇa+"btÄ ó{Høõ¬º´ NðµÔ«EfµöSvÉœB˧wmŠ‘ÎÛäv[;õ4“f|Qêð{½Nc7— Ÿ:4ãª÷¡·ðÍZo;µHÅûa‚ùH帀˿¿½ŠZ죃q„ê¦qä`!±ž^—€ú¥­_ÿÏâïG5^€já÷æèØKxfr[Æ\­\s2ÇÇw¤ÇÍ"œÖ¼ø¯QËÿ­›R®Î9ÕΞ¾¢X=ªÒ”$dጾÍmŽÈ»³ÐW¼Kº#¼“±¡â)‰ýÝáóÏNåXÐû|0Ôè4{ð,#fÞWAd,˜µPzÞšG‡ƒƒGNqÇî@¦¯Ï¤ü¥cý¾š³xZíR•H 'zà覼neËÁÙóe°YH8¶"oücDêi`óc힪çX]‰ÀžÏ):eCý8þ˜Ð¾™RNñ8­ë ß+H<ÎÎ(ü?<ÔÿÊN²Ì¨aTT843€ÖXcè·ÿÇiû/ÁýreÁ8c ó¿V5'dŠ\ý¬ v·hR§ÆÃÄSšp4ÇÊaNÄ{Œ_ÈÑÏ ,‹ÌßY[ªAØÔ½'JåÏ0UúÏuNdå(+?I¾µ“B®¢Wćá9Èbëô”žïv‰.öw”\DG®WÙ˜Yd‚æ#ï%­¢{åëhAŒÁeþz´± vlI‡ÞÎýª/4ëBÀdzí.˜µÂ¢b(t&ÙÚoŠmÓY ÜÇÜÞ5(Ðð–ß¼\ÎRO"Á b„áfò˜¶)…žÞ¥¯öôr|Ô¾úÍ,Üd  T“AàS£LϦW]œòÍl ÍG¹ŸSZ |^J¾Qõ…ƒÅò­¸í&»LÎ f_“+Èjš¿Ÿ™,&ÑWíš{¨÷ ×°ø›ý*ÊçÜžøNÛĉ5jóÇVñè‘dO­û­ÆVÉýô?¸›5ëOÙÊoCV™#á§wœlƒk6CöÊF=ouRÈ·7²è*Ž]"­ILÏS"Ÿý6~dÚ³ª3¸ùtÑL ¤0·ùý,çt¿ÊHòÇ »¾Ó|¿éÿ%ŸXåØIë)_o¹b­Éü/,¹ÌÏý·}|¯‰ÒŠóžô¾ISŽ—?L󙨚ŸrïP2Â@xõï×ÏÖûlšÿÇ Ki g›è€ñN¨Å»dôŒ\Iî~CéQÏmãýêYc¥ˆOàÜËì¾1ÉîÇIœï ÙÀ=IqœÌ=õß`ìzŸöƒë_ëêµE}O¹âŠ‹y701b=xfz¬sÍ/¼ñvë-faÛYŒ¯B Vom+Ýô²÷…âýX]€ã˜Ãz¸ô6à±~ÿívµX7íœê:Ó2Ù“^qÕ%›‰ÏËÑIö*¹%Äé×è(Ë ÿ Åã> %òì+½,&ôûáãÀ/f…‰¶hÈ‹íŸÊé²Áôá}XÖRÚÓÌ9qKÈÁb÷Y¬[2+rº‰D—é‹‘Ò¥TÍi/Ž=rÉÊŒ®¹ƒBæÚiVañ™€,|kÛmå#7-É—4„hçÅOŸN!YeîWRËËÀ}Åøi1œÊw—_U­e¤µÍ,g"dJV‚îVCzº4Lv 7Å//c¯à>Ÿe(²õû\YØdûÔ²Ñ$»„b€Ò@îæü8 [Lý‘¹“‚·âaÄ ƒYˆ€¨zްë Çý¤ÕáµÏÃÆÑgØëwÝÞ„uÖ¿'ÄÐô^*!ñ»”?nQbÐq°g;óð~!óÓ _h!‡,Õ¤%˜ïc1OÉ`@K{ƒÜ±Hj’ñµ±Ã÷upþ–žNÞ`±ÓzLtäßCnýLnŽÉ¶*¤Ì±¼²Æá%ñV,Ôòðˆý˜¯Yƒ–½ß>§|Ú—yöhma™ IBY‹¬\‚gßK—OÊíêEÝ“ß ù{Ud@ìA¶þa•N”§x½×Ï û°¦0Š—®}J¬ììû¹»Bå¿À‡óbSàtŽ¿Æÿ]ÞEÖøZ .TóX:ë{f È<Ý–ŠQf‹|‘öÝý% /ãj‹¹¤ áö‚@ÖVl&ôÎéù Àq~<'QJˆ‚€‚cþÆŸ¥ù›º ï1üZŽ^;ßg×Ù·lM¶íÿ+3ê0¿Gƒ¬æíw3ÚÌ׳ßWYú:2{|CrÀ¹YÏ€ß 3Ä•öÚ v¬Œô0lt&4hŸÖû*|/ª”èPè:òyÁ3ŒçD1p#á6-K±od¾ãR`ÝA¤kŸOèê_7ÝÅŽß»øK`›Wë;ÿC`€xŠÃ xBÅy’¤ì¢fd= ƒ­&£%d@ÀB)ç0¥WßB@‡¬ÒC VÃ:ÌÃ;2PI0L08ÖJÕB£ èIªÀ`œ*IžQ ¡@2! s\! Ì ‘I°q­0i0BdÀ†1„‚CÌaÔ±0Y X0äÀ@B#' ˆŠÄD@ª`€‰!Tß4ìTDJbE Õ€D˜!UE˜H$”u;¦fæ‘UIàǺ泣Y?\ºVޏ =Ó±ô¹ ¶Œ¥NTïG.Æø8”£¶XŸîùŸ= ]ÿT² F¤@n0¸Oð6x4M®Ó] |UõFoæÍf{åøpLIÀ5…¶)L±{ †âL±TP›gAgR¾ä0UCÊW u Å‘»Á(j¤u9ßýš÷§d(ùöfZ @쇙=‚±ÓãÅG ç<ÌaÁ3¾q 0†E,€²bÍ<£Øè¦î;±­Úl³q³Ûä6|¯Š—ÐÎ9-å=_н±â>kÝPª'á% «§aTX@« «ÿæ(+$Êk;Æ›æà Ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü?åÞœú-­‹åíöûîyz=»îxímoo+ÛÛnî÷nÜû¶UÛ»V¾Ý÷ž}÷ß^ÞìÞîóÞííëkë»çǽÝ{Û;lîÞn÷»»Þ»×O¾ûت¡‘é=#hOÁ2™6§ ôÓŸ“`M©¦šbž ¦F˜¦dŸ¤ÍM ÚÚL“i¦&™6“TöoDbc&2€ OFIªPщ¦Ñ6“4LM4ÒyOѵ4ÀÔž§¦ÓýSÆŠziè&OSM¨ÄLƦ™†©éƒF ´ é„Ð4M©¦=OL=)µ6#SÂO&&PªLŠŸŠ~„jŸêj~”Þ¦Ñ2iOÃSj2žŒ)ꟊžFM¡ OOBz ~4ÐÑ£Fš#ÈbdÓm##Ôd6ˆô)äa4i‰<&Œ˜§”ýL§é<£Ð©ùM¤ö…AT§ˆSÑz)ä`OH§½ y¦˜€É¦†“'¡¡¡ŽŽcM¦Áe5ô„n}_ßYª!7¹ÝŒ88,ÙÝÒ…•yxtD£"=Þ Fßy{ZËêtÝâ ºRÆ Ó*úÛxk›&°b:Z[Pvž£Ÿ ¥– >NmÌÔYg~÷“.¢"âðXÄÔêä~Ì›‚úÿKËêek h~ƒµâ•`ß"h“õˆ5Ê6¾÷Žpë²>ÚÚÆóJÊ­Í=¨Þ# Ðá %00I!"$`B€Jh…=ñË1ÂI%ûÆB@$H¬`¯`*öŽHAÁ`„,Pò|G…âúâmøàˆµËâžžü/Ù§ù_I,›ZG̓‰BI ‘€¸Œ88a‹õìpž‰€†˜ŽøcºŠí7º5°ûåoLøtÕfå*Ššî›‘–ê\ððx›c’K‘=j­ú¸»N”Ì”Wƒ}E&I:÷¶Ü$`Z3û;ÆÞñþ-üÙ?JSè†7ÚÍCþµ–ï²úêy9éOý]Ug%F†¤"A„08`=BçÙÙ}ÐD;‹ç›Ú ¬™}ñÂý¹ÉŒÄUv~ýfwÅ«‰¶“†%ô4.ÿ…+MèNQ˜}ã€oû3GÆšÞ~øóF&|"˜Í ¶8›ž9Û|ë‘Äœyzžûü@i“1.­ß8².2”;¨Ìžœbb}DY¾"çoÀ0\Þú¿J"^vìœ ¾¤¸‹Bžªë¦`7ïàd¼þ‹ËÜF·Ñõð¾vZ·;Ǩ²æÑË_ãµ³_^]/Ú¿Ý)ô¸n±  ¥§1ÎìË@ìsøe¸&Ž_` €'´ÝÌÝÚÿ•](ükDßBÅ*=jÀ0 &AQE‹ÙŸxòŸUý ¿ÃØ$`µ®QS>¸_ÚIÐÇн„s¾Q•ú—€ ®øeô9z‹¿à’è®ß'iêó£v9'[,ò7g‚€/ýغ Žÿ'½àò£ÿ¿OOg`$-ó–Õ“2sC˜fa%Û`C™˜ÞÃ[áüÍ_»ß–÷°lvϳ‚}PíÔÅt¯­=¸Îæêî“›lßáñ|Ö–1XéÚb¼°ÔBx‚¬lù‚Î,:’î+sì° Ù7õbÒÕSA¯D›elMê¥ pûÜD^ü2üŽe)ªÝhÐDå.%¾Sï$¿6çLó “S^:)EÓEË¿¬oYžõ}²hx“‚³BËx!Ð ˆj7tn‚úZÎÍv¥Z£íþÖãF¹°&|Ïyê`¶Åâ/ /•NºF[ÍÛ%}øƒQ½½žÂ³Qƒ ‰åPAÿÙ7º­ía0`»Š.;¡ä\RŽÍè‡Í›ÜaZ<\­_çR‡-âv«wÛdÿ[ˆÂÑQʵÍ_%Ã÷½d+Œ.HŰø˜Ž·; €Õk‹¾ðЉÏËE+B»€ &Ü@ȸ†É±`F;ÒtbqïœAØÕ)~5òŒ^u´c¸×.H`+¶¡M)çåª3Š‹`÷o*¼uÇåå‚ •­å{–ÈåãñŸ5o¡V>ÍöNf x‡Qã'`Á_éÜ\¹[–[2Ó-r«/æç;WèÍL*[³­«¦>¼U·ëe¾°çéÑM¼ÿ8Ë ì¨ €M¬šœ&'(ï©ù¾,‘c+«ÌZ³ #0cÁw´‘ñ’xèKlµ÷W…Ù~½œï»¿ðÙkË¥ñtr]n†6¬þ2héWy§‹£Kò±Fkün¹IrDœûÍç ,û ¤ñ,Ú½äNŠÜÇÑ-#‘®•çìí„@«^öa³Ÿ¹›°­Ò³Ê3²┳‡Ø{Œ’|ý_êèSB×"VôÌœžu®„hÆ'ô¥Ó8Ÿ¸U*%ŒU¾lbë+Π_¸Ð¹ïó©ƒLÒô­û8ªDÄy Q†YÄ<×p°â;„ãMÓÏã[|þ­oèpœ¾)¸9šb†Zº›8Gu'ʺÊý.¢µâ¦\ý!èÛ_ô`ƒ0,ÌY‚ºYÅy/-µýíëh®ˆâ°^ÿG¤ÞRxËWﲺ=@—6t(cެ¬‚Ál`"å4LJä¿¶6zQ§Øóг „¸êˆ¡gésøgNE‚›ðd€fO2¸ixZ¼E×*/éµ›"ø~a_Nê1'©H¾ÇXa-HúàˆÁseÜBØÎ»Ÿˆ§¨€1ùá‰)ƒÄò|÷jÈ$…¯d O0üûéwûƒ$aC¨Ëøeî­C•f¶1MýDе¹^Кg`D®låE+ûc@ÒPDJ†¿vXÁÏ;BÏ{Ѿ‡P®ù5vwF(óÉ@„€gn]8Ç’÷,-“öòø½‹ìæ7J¶«JéÚª$Ùo  OÇÛ|HþøÛûXäP–fç‘Æ–·‰$¦äy5Ï“n)ܬ:þ‘®eMµªï·U9ò;ÖÞ#¼/z7ûKJ_HÒÔ{,¦ƒct,yü;AóYµÍáøAà4Œ.A×­—•ûêOÝʤ*Š©§SØÃ*ÒÞv#“ÓíÙœÏðýŸujŒ¡RV}L7òÞþöŽÆ„o'gã…øPUÇÑuÑ9ÂÇÊÆlßq2ò%„_hfŽˆ,ûη±dÞhˆËt5…ã¢èV±³êM$ÓÕ<“‰›»ÎŸáK7Ö¡œ‹’ª%m8`f<VîoG}í»•Ð²+^¢*´îÅ!ê8D"ùàá·}mq«.ãQjtYT°³½Ýigä*ìoÞœå©é 9b[4ù+<†m2cÆÌТ 69Ù¢F?ÜßJ¨ˆ„Œä&·Jpª”òÄé4»p#Èšû­å_§;‹SjâKÅsîˆ_{‹¿«³ùfiwÇôðHœM¢Q7†ˆXs£Ãÿ4¹ ïPø¹m{ñb툧ÓS@@ÅÍÓ‚±vè³µKaÔEõ*`²[f,gêç 5 Í” «Åá·ÝzÈÚ¸¨QÂ-rÔîø8â¼ÒÄpOî0ÍiÈÓ"ÂékhF°v½¬÷˜£õ¿Bô˜-DÅs½g…hÐëØ²|˜Æ9–P{s¶4ècØ$¨¥÷60: hS~K?ð݂~±¿DYn¶09o³A¦çò.ï]”&–ÐaĮӟ£r&½¿Cãûs#ÿävgí“WÞhûX¶hïõä’hMyÈëYÇ%Ð{=çO‘fëØ‹Ì<Ýÿ¹¤ è•@ä¢âq/(Úäd.ï>I(7 ͶÚl iæ&´'´BS±ÑÙ+¤;òe+˜ÈËõE¼kKáv,pów¨‡îQ”Àq Ð×™e«5?Z²–—¤m@VqX<‡ ßù[Š Ö«JB€«V z”ý‡í¥ï8#§b¨øÃhÏ1ñ«íˆõ¢óØÄX͉b—C—†ÝmµùÒMCÄ=‡µ©B”Æ,RØâîmãò0ƒ„yÇj@[žat•SÜ& Á¯ä[v`8·ö2Õ3§|æKœÄV Åe“ä¾…é-V•Ô€Šfƒ©ÈgªÚž.'ÝŽ]ŸÐææ´«,V¢Ø·YqÎ’V1§«º×õáîò¦[…LŸY-IèøOe*añ­‡øÚæD©-%:‰%µ1×ú<…žÓ 2À´ƒÀ%·æ¹\÷©†wñÛ`™ð6—‹SéÝZÞʡ̉HªÆ 凌¶¡= ‰`Îòí³N>m ôPɯ0¯äÑÃ8Ó7­WwÄÏp˼äÔ†Ø×ãiÝiÔüþ+77ê¢?ÁPJÞÉñØ©‰XûÒUÕ8¿ ø?x•Ñ™íšËº³í‹Sw@s¡£/ÜJúw¢ÙÕâè’-©,†l`Ë6Žd˜ô:ƒ+¸L0Ÿ¡KÝ…Ê 1ƒh\a³” ^©¨>RO=-¨iÊÆv””}¾¼"á_*þ¹Œ«^ÝO·|'gèèpƒVݺ9,:L·íߺO©ÒÐÚTl®‚8wtú3­ÔJ¼£Gç#Ü¿w:=a…ÎÁTYz¨ZË`7‘¥‹PuU›Øpk€ññ¼ §ÄK€Y߆ñ`º58ÿ·°ò¯€’ª;_I±éÏÛÄÔEa|‰’ö‘ލ„s2nÓÐ@èa1ø4t“V|iÖ†NÔ|Lÿ~Щ¸ø³º“Ø q1.QÛÆÛuÝú(OÈÁóî˜Q\,y[k¼>ë…Ó Ò€KüiH–åYZæ#SkÆA£fkC?¸Çf+ïØúöX”Óq,E?b\IѥШ5ã½ñ @cÔ¸³JpW§’éõ^à@@A«Î.Žƒwµw°P²¯œ€Öÿ¤@©}L³Þ쎱›òý ¡ív1UOK‘°† ¢—×~™úœ¬+ê¬ù3\K~uæWÌŠ‹ŸÈ% *+Ȱ¡µ±¿gö0—~~¯w5Ò®æHh­®¿¿Á«‚T4@€AM$š,—{æþ ã5PyËc“ò×ùÞ4b9en&ÖãH°—2®rLk™–É·…ÛÞ†®Ù¤e’˜¡Úò4eá¶ý $K@Ì^n1€ à ²žçNç¦â榉é ÷4–® áʸC UbýÎ.MrË[Ü-!vGkýiMô»4¡œ!Ëaã®»R¯îö²º{*á#u“ö!­ ÅÄï,0v{.œü ÛUÌù.½–¶wÙÃøû ¬NçHyÙ.¾úÎŒ™²~Ó’†LQÕå&¾q¹º†+™ïŒRæ`wX›1 p~Y4 D^’G1• ×Ë㌨§¹Ü_}…S÷­Ms àýñ«{|À@ €*€,ËŽõ‚Ü©Ϙö9Ôü0ÿ:®f^§Z)ŽŽš4öðã~‰Ð"&`èŒÀ»…5˜5mö⓽aùezWk}Œ3Ñ3jT­Þ³ØÄ#¼¤²8 …Ÿ®k¼!Ü'Ûrƒ±Û "(9 ³–¥©ì%M½àå˜w¢' pŒñ»¸[÷Þ–~Óãe,ßAÌm£°Þíó›#¸¼×Ôéz5 Dkýº4!´·žÕMP‚§ Måhù¦ßf SÓUÏ8̘w°T½ËÕÙ@Îq!"dÜ(*¬G>GŸåÿ¨8_[ƒŽ¡¼à˜ˆ¶˜^A-$SÅ€ŠÌ+_‹ÉŽîjá¤×޼bx8L,³lûçJ­æhÍ„"4@ŒIªA)ŽnƒN`w‚†ÚdTµPˆ@’«pJÁ\B²} „S‡xUÜ:Ø ÷5$2©‹L™â¯k§tóZ£N`Yúʹê7¸#·. ç(gž/ÏvRÉø»F‡èªøËƒJ™•¡š–YŒ1_ð JGœÀù*¸ÌXçSs&W²—iÚdznQÆÈBa©ýŒûŽäÏAæ&sÌž¥‘¤¬ùí¾¯%û*ŒGÓ(ñïî.<À Šï+3§Ÿ¬ãå´W® —);I©çJ†kÑ®…êlÿçðëã8ÐXÊÏ‹Œ£sÂKûs¾œºæ&Õ­DÙ8Iä“ .ç>éb±8¬Cn~ ßS5‚q•ÆV‘~ÏŒV@1#óç®8a÷®ð ûh\ {XuÎhcDqëö}.- × ªÍq ›¿ÃI¤Í=†ˆÚMzó“vÕ™ªÊ °oÿ|gç†M †r?›ð„äÉÅCÂÛãâî„—Ï€£«o¼¢ñÚ+É$mX«}äM°lWèÞÂ8=Ær~i8X-ØÆÜk^ìk*ÁÄŠlcæÄ—nlË­pAó^RÓ•X¤v`UwW0Ï cG îª{Ø­ðâjíGÝ>½ÊiX…™«\Ä«[šJÚÆÂ?&ÑOÙíºY?ú¦s~›éš±¦ÝpŽSx€M}¦³Ÿô‚{òTli̧nVú¨ûÖ­ MÖ„WêÐVàUññ+¯0VÌìa˜åÏ?IÞî¿Àäxq2f„¤™ócÞJ‰’0£¾š›Öõ¡Ý…kE}͵(0äÅÔWžd’³ïâŒ8ðíd™Óm²¥DY>¸!ê neÁîé0Rq×r‚Ìæ#Òzý#¿Œ:Ù£ŒÙ#]<#“؆¥\F«ýžl ê€+tTóŠ[XÌ%xC™Ý¯5kžW¶niHÜ“Šb„æàÓš pð®ß,‰ä§â5Ú‹ZÌ‚Gžîw¨Ùv·Jêü‰ 5$•she¾¼‚Ÿ7CÁ^*A¼ËÑš¯R9ðp$Æ!v-ýWûvøð‰»ñü™õs°y^Åê@}9‘ôÔæ}×L׸v.ÈÄE0pΚy¸ñ2tó'‰ú|ÑÃùºÆR ‰Úd|’é„®‡rŸû‡½Ò‘§*~£åb>L øù¡^m Ð~³zäÿº‹«,°µ…îoñ¿ËDYÏ÷¬ênðåÖ^ÄzщÄËIä°ŽÂko¶àsÃÍi[äý–¤«IŽL‚{|™ðPebÄe)É¡èZD™íÂå©Þât¨ÑqWqÙÏ©rímQtçÿ"Iâ/Â>Òo?|”ùuK&zâW&Åš*cN’=Ü‚VÅ“”v>0½¬<æˆSŸ9rýY t棿÷§q·ÕØH²þ^ÿµKÒ¨zˆ9nÔ‰ïžUøú4ì‰EµDͨÿõ«S¿EJMix픥3 €ùsùvï,;‰3n£ÓÀ¤¯’ú‡†A=χ¬>Ù´Œ®À(fšY´©²Nî$a õ­/‹/äSÔoã +’[«ÆûÆH÷µä]àMðSXégKû“Î2Ûp£­—nÅ5A’’!X„Çú8œ?Cû ²¤v;۪˸%ìÀîpì \›L´Øjã;¿+<ÅâHM碆ü±A½éºúJ¬¶VÙõx'kÉù˜ HÆòòP°È ,«ñX®;lœ[gG_ô:6²†P‹ôˆO“ò]ô’9g9¯“õC²8TŽºmMPøÉ8C¹EŸ.2`ór÷V7÷A¬£[Í3!ŸÌP¯'Á½úL[BdÒGúVf"Ü•WTüê=~;ÖžC”ü’â°È6h}ù^Ïô` &{œš*ô¸ÏÈ~ÂVQ_ >fÞï·E·!Τ¹Š ÝÃågˆwµÚ#+±’Ú|Ó+vnLb;ó?Ž ¾ËبQ?飩¨ZàÄ.hïºU¦]R·éd “}r*/[ ^>ëéRï1žÒ丿 aÛƒ NŠÂb’&ïUē½òkT X¶JK×%ÞšK›\X•Õ×àê)R™>Ýôú ½ðØÖa|ÀÇa½ Ó…š ’fM4IÁgX×° !›Ïûhè§j²Øž0;²·»L_n'ÖE‚3€Ñ{“m´Æ¿î%Ã+$¯µa;µ}"4%!ù`·0À?¾VgDö\,sB?{W`> Ucw^‚¥Ué_ñâÛŠ|ÐÍäâßø=°,0ϹytoPˆ]F å¡}ô{œì1µÐ¹!\†N¬¿º:þG1ƒmä >~9*fNÜlÚ@'~º8éÝ®kÔ6FÎíÛcãCcªÁŸå–é•õ7ø_è˜evÚq[–óâ—·EëÞû£öf2 %Óº˜]5T.cZ¿mæ2Í  ÏWg±À] úJ(ŒnÕ>êJ÷Ä€žêü1|N#7}´;iÀ›Þ§¼IÚm–¹ží.– ?5ÚÞB‚4@zÄs¹ˆIJÉóèÝ"†1$:ÿì&º˜_Ùy'ÜÙBbä;iE=DÌö4}ª—ÈVS?ÍÅ £ôú‚`­¤r™ú•ÿÌeTD"EA³&¯©75æN¯Ð@êÅí,õs<ÙˆaÅéÆa\Lvüæ´˜îÅ©›*¶»–~ù=õ…/ö_:ÓBYiÚ³•ë$•Ü*óÈ \ºIŸ7LöZ;ö*ö;Ç)QªšmTT{Z ÜÁé¬6.Œë§w.¯ðZôŒÞ‘A¸e/%îs2 ?ýsÂ!=Õp³àD 0+‚ øðÛ]°`<…w`½•ÆçFUZ¥l7èc=™8ÜpŠìú|¼­~·ìeÀšÜ¾þZb?>ÔÝN~´ÑýÜ¡Ä+›ç£Ęq§‰Qš…=©{Ãà„æº$ð{Oéìlÿ{õΈ9\ÏGY OPä‘ÆÈ›Å=ž\Q<(»GÊÝkU3*í?ó•ºG#q8nÆñø»§ö’‘﯂¸ ÞÐöÀäýN‹ô¶ÿÛuB—H?ó—¦$"êrÄ䱞·þ'ÝÍä¯3ŒA+‘rೂÈ1+Ú8³áï×kkŽFuŽa”ëô"G¯ß3@!ÌÖê[ïbÍJÅÛûêE*æéI³qÌj¼ÁŽzÏý«^†—øO˜æ Žª_¸ÏdôîwNnÇ9Ž:d8)×Õ“Ààýìú^rÓe½™Æ½H•Ùþ™ôô÷Uså†v}%¡DáooR¯‰}õð›H¬cü‘:ÁšØ%kiWždƒ¯n¬Z [®@D|©ä„U½B”¨‡ÅÑV>þâ“ß^"j»cx­–H2iøñÞ0bÙÉäzUéªeš?‡[Ñ&h£P‰ÿF'ÓL×Þ¹’b”¶œ'Ú¡\8äòÎ)†d­è³ÚÈY«šýÈ0öå6ÃÉ~IJZSË*¤ÖWi¥0–9•ª,äIBË·þ˜°ýú^‹Á°Þ—|sW~Ût5;;¦¥d(.1³+\îß-aî+_,á 6ÆÈÙ_¶¥{ÝÆXåúËÑZk9y_êi]øá&7Q]:h'>f|ܽÔ(L n¯´a³ÓÊ¡;cïª9ù¡’¿‰Z| Õï¥ Èy§[í¼Ìxâ›$Óò÷©¢O£ ¨Á~CtŽ1_p©š‡§åÈk!4Œ•5ËL sù´Œ³ëuu‡ü‹s¿ J\8mb`ß–ƒR-K“‡@&Üt’ƒ”6ò[‹ë˜i¹E–™×—q’Ê#¯ö[µÔ ÅîQ½‡?\th¯'ú7÷3†:¶º½uHš-æÞ(ùEÚ¹¬–l¬=©ç!¤[Í£ï%Ö€–7ÛÕÌ Þ£}™î³pdj{>òI%ì´°|å>+*©Ä“šÉX¡Qä† Á*oÅéZöå áXÚâã³YAd'ÂP¹MBAJˆÂ줱¡7òÎ!ùж“„ød1ÚE¯æFËÑ•-GLtιÕ1Ö,žgvÈÄ àDÄì4 þ-š m®^™ìsº}”¿KΊO‹¤üz'“ %ܵ0Õo*¬@ þñŸ‰XŸ`$m´»‰ÑA»µl­ÚT×Ièj™Éx8ßdʼn³­Ö3ðMŽƒ(вÑH/—Œ‡£4%Õ•«`©/X ÆÏÓ -$@©£|ßOƇ«-úxG䇘áÑë²E\^oúµˆ¹&¹#ÓøðÑýÉ~¶7éëÒaî@„$$‘K܉­Ìø&¦þ,&šhØ<ÓéíË*û:àHBr¢{_1äzEÜ uK[]Vš+Ü:k²€šùÃfVœÓ\’!Íßðø¸‘×f_OͽŚfC#­]¯º*<=®?»çýÜ﫺™˜É5©Çô{ݧÊ;ò`c¡p]?‚l~£5,–u'[~ªn:e¹tv”|犂øGM« W-'¥—=}Øø–ÆÑ)RYž”{Ûd+˸›c5ÿø»’)„‡i /¨zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe3.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.790789103 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v3stripe3.dat.0000644016037001603700000006314513607166133035021 0ustar00hutter2hutter200000000000000BZh91AY&SYáÈÙ¤ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà-ß,õÀ|€QJ¦€¢‚¯°¸R¾µ^Ïu¶ÃîÇ;í}õîõׯ£µó]÷Û/¯mõ­uçÓï|ÞûÔ÷–.ͬÚû¶žç½ºvï¾÷Þ6º¶›ÞÞûîîr@uÅf:ée³³Fêݶ¶ÚíÜ1IÝ»YjÓWn¯™AÞ÷Þ"ˆ 2mSÊlžSz4Äi‘2i¦ ˆi„Âa4a5= ŒšeOÉ‚h`£Mš4dÂf‰¦&L˜Ò`@¡“F™4Ѐ4h2aO ¡¦Œ ÈÀL“Ú2b`2i150OI§¢a0L™™ M4Sõ<™2i£M‰”l&“ 55¤ÓMTÿ)±#Ð=SÓÉcM™SÀM4ÔÚ§è˜Èj`*{Jx§é¦›Dbi£ˆž˜›@žE?#O"4ÓM M áDôÓ&“dŠƒTF¦‰â™£O&DôÔž˜ŒJ~ ¦24M£F™SÔ0¦Ä§µ6Š<ÑO&hÄÔò¦Ê~A£Si”Í0šS3Tö©ú&4§éêhÐjz4™¨ziµA´J$ÄAšM2§é==&©½SÍ'ŠiOF“ôSõO =3F…7¥äÅO*=©7©¦˜¦õOÕ4ö’m=(ýHô©êl£Êx¦Þªhõ)åSMMCj3SÓÒFM2d='©å6ˆÚb‚IF‰è É2m Ô1'=4jb`2hÓz4žL§¤Ø4›  $ò£ÉáSÙ ¦jz'¤l©š$üˆ›M'¤?BÔ4Í'¥:àq¢3¦{¸"¦áæ c@% ¡(ËILe²ùŒÉ€ *I¢¦” ÀZHG#;L9jt"IVZ5ìî;9o$_Y®2G˲õWÆÊÿ³Ž×8¾‡¿&ÃEÑ’„£E©Ú§Å+ÆÄ«¬>¢±x¼]\Û•ôÞž!H?îâ?eÚfHÏc·è”Á³Ö昪û2pkB"_iË{‹FÚ–¹Ø²BÒ,Ÿ`¼mhôøokøµ—õ¬«4&í‰^‘\zr#Ý/Ÿ]Ôß¶°ò­?5hºK(_Ð%b·^bòv£îKòç¦ùµ:tIm©—eu²¤·Gе®°Ô®ƒ/F‡5ÚÉï`Oèwø( E{‘çÚ™—¢Ÿ#öÐ(m¿èÛËF^¹®Ì¡~¼L—ò—uÀ,£Nöâ»c¯gÕä_u!â…ÜAºo»Æ7%‘­ôn[a%^¦q6zÜ^î!<ÁœèÅ /ÄÌ2@€h £ ÀÌ„ü^!ðD -Z¶g ’I‚HBÂHÊ#=„"[!™ $’/ƒH”È@’»íöþPÁKœš+A† D[»p¡á„‘A9 ¤@!Ê AR^’r S©e4?[D ˆÈ#&¼´¹(ÌŒSœ"[á;P˜$”Ì÷£ø2µw:;ž<c¿³šO%l`úá·%1|TS¬æ ´õm/Š1|5ÎÎQRï-bï˜^ gæäYƤãahõÖVÉi†-ÃW¤|¨ˆ’¥ÿEÅP©‹”Ë/uU3d‘‡Ú‹:ÉÙ7Rh;)Ì’ 2U‘ër#+°Ð+õv߆Aš`)7Qž…(¼“Ï ‚×9i¿é®ÆÔ"[0Ìt¬øÿŽäãÝ‚eª¶Ô¤xƒ:Ãj¡¸O—†ò½ê L_%[3äÉš’ò4÷Öÿj0oÜ£ —Ú<òqy ã#¼®Š°¾µæA þàiÖÕž‰u„­d+{v6‚Y0nŠÂ EÅDŽ\ÊòóeìVZîaJ chwå©‹ÙkU&8®«å‘ûÕ½bJ'ä»Â ×ɽ»³­~,5¤¢M'u‹¯mSõ0Œ‹¯ªCdðIƒR@_Kô×ÖF„kû @eá¶Ð»âZ5Ýá(|P Sf6•1éŒ ¹ü:Žmµà^Ø:Ü+‘ç¶GY“ !â1nìÔ¦Bx2÷îÞߨŒ²6‚׸pèývR3s™Ü#¥&t)ÇåîáÒ¦·=0ÿA”±ôvÝç™á}jZJ¹˜éfnéÅyͨ†õT2fD˜nOD˜\:³èýä|·C9à<€Ä§XúÚC¢@Û:  Ñödчjr€öý˜“§u'mjsLaËåÚL1™Wæ=ôJùö¿¾™å–¹z;O˜Ô»˜È˜Ää@ÁZʳ²}TÖïwØêA ŽŸ•j[ T‹füW$’JÝ”}[,U³¥Q×c6²r?šI H^- ôñÚˆO ñTA+Èà “#­¶4Û]E3a[6Ï"G<_7˜“È„0aË- ÈlÇ —΀¿n(Ø÷rYã79¢“< ía¾0rÛèa†Ž2¹²Q…µb]W¶ó.Ê„VE¹‘ì´ `Ëäa*FD†Væs6nÚö]È9X~zò~©ÖÞÙØ`¨ãß($“àTÓ;€SãûBn|t¦þW_4p‹c¹`‡ ÈqZuJá#G•D€‰](ؘÉ#†D`žùçñ| “à Œ{ëÓ[èU¢dÔôDdßãMá<™UÞõ ÆR®[Ýó‹€ê Ï–ÑÁ¥G…òªï>Ž‹–œN­M1qM>¹¨½˜ {Î tÕ8¾9Ó¹ý|²[ä 9w(Lƒ’ñNýeö›ºµ¡Y”C$F‘#¾a,ÌðI%ý5t6ÝDJ¨©rFŒ’ó6ÎxÛŠ‚‡“v.§Æ@PÆA(wÏzV¨F‹»„îEpø†cEÉÛÁ ðüJךª²‡i[㙩Br“…;Y¬í9’½é”e¿ãÆ »—ªÌÝÍ~J§ †+HS¯`ðs0ôÜ%°¤ )4,DRXöpº´¿²dîyÛBɆ@c`-cßì•á´žúyÎ1Ì–D×Î_†COÎ+òkÛó ß—V¨BLh8XÓæ»Z ˜¥’º+ò¢ki[!¬1$%ÖêQ”*â¸Ñ+võL±.SMàŸ¶ÜYíe‡ÍÞZeJFŠd]«ÐT¸²ßk‡¤Û¨ÜoiaB°Ja“ qy„ójúöŸ²žô¾ûB¢08bÊþ×&\ÉN4ˆãÑVó:ïfwqæÕ@u%žåÅÁ0çpŒ“¶E`¤<¶kÚ}"‡¨¨_à×AFN눙gÜ­±#ÊÁ½`bXÚ¸ÅPÖÕÞ2PÀ,è¿\½Î+õÏoÊb%pi- RØã`ïNwV£5ÄÚ‚ZÕùˆ.áý}0Ä›~ñjo½#RóÆ2”3 }4 UV¤GWÜR¯,-û¨ˆ9 NGRp¿@–€ËëÑõñqHÛËQݦnÁò {Î €Ïj¿¾V¼÷&“@*¦¸üqª™ gÐÏàÒVqe2_ï­><Ù/Öô<æáÀ9—jŠq,ÆzE ÌÜßF,NQ ¡õ€èÈ}‹^÷+ö´R¾½2¼ª¤ÒBÀÑ2U7®@ ý¶ŠÅܵ8Yþzâ¬år¯y“±Aûåa¹=ÿW{Í¿¡íQq9sûJ{™Í1ø¾òßؼcþâ%gí6I>2Mêˆež‰È'9'>§±t¯ KCÛû1t©eˆˆKq¦p×Ë£€{²1;aƒ+íàøû.f[énúz…:{ZÃÔwÚC‰Ã‘ä|ý-æê|u7Q–vvÉsB–gÁc!,Ò…™`{Œx<Fñ"ÚJ³ÞöÁfÆ7 ÛAK멘À2„†=‰#y±t£CX*ZF ¤.eæ Òè°»: :,öV~m.áÖ¾ìÅ’¶…š®}z¤ù} ècä_ØñB'ˆ%<Æê’XÊ<¡œEú\¶Í?®åyD1CüüHQú4ÈéfcQßÕK±Á©–£òä¿kÏaé™H<«JCÍ’Iµ¤„¡)$.ÃkœÀ¯!ëòGø¾4¨DmŠô>û8i'î-Õ_‹_>I®e´UÁ›Ðþ~#j͸½ÑLKñöt[+VÙ ÌgtN'QC‘÷G²H –­¥-É b/H×D 'ý3ÆhŒ,C ™>qF<=<ï.Žö1`¨õš›ÆõÎbe(;ê QŽ„jÄs×”gµƒÁ"PƒcV]ø1åÊ ‚HÎ%ÿ©éÈ»˜TÏ[OŸs›>æœÆ@IÀšB,K¦¹ÝìGãm–ìüT§p}<õß±¹jûs©L@újŸ²Êø—¿VŸ´èd¸Ï±ý¿7Õi\¼qqS}ÿ+ ±žGÍ“z  ©Ú|Â44Y’4¸<“f:…¨¹J‰H‘$2 —'ßÛp¸W'ƒÈêã::w Í}¸æ$ %ͼUrÇk¡¿ö¹ÑE\lM5¨›ª®Že¡LD$é¾JH륫T@P £ajÒ€|Pzxí¤0àìq«Ä„ ÎŽ2;Ë Ç @¯¶n"“qÛPðýr&t%ͰƒÐû¤¶a¬Å"åÑÌ3/}3âhfGÿõ¼•Mdå*óÕpœ˜¬zõ´Â¢˜‘¦oz’³Æ‡–àæîêYt[.B\>w¹år.ªÏÐÑ`¥·á°¨&±·°žkL, z)!$4›˜Ê›÷ùLãŸn¯ufïL6!¯äWžÙY޼ױ§Ø="‰øPÏg*tešàaÈY,X`ãõ ²p$†Mia¢‘ÔãV¤ rÃÎY¬;nN…+HØ uÖ¿a­Äxu`¾YÈ|‚(h‚ä,&K-Ä=öx تj·œqc©1-klw¸ÁžŽ¯´ÃkiêÙÙ<È×õ)¬rX"Œ¸ Šm² \;K±%Ž9úŽ…÷UpýcÁPü ;*þH|v.ñ=¸š§}ÞGI•Rÿ¢hÊid|×ÚÈ:Öˆ:MÄñ™—v:|™Ý­ÐÒ~wÒ‡ _}K„·Ýðž«~ºžÝB01Ï=8šßµæçîôcåà*ÛÐ'õáHcnýÿ¾¡Ö¯ÿÏC1/(ŒQèÖ2ÈÂh×°>o²éá\«+Y‡ºw.´ Ñƒ—Âô­3TyÄPæ9ðž2tìcÎh°=8îÑ(Ÿ×…ðÞ`VƒÖTwp,’YWÆ©Kâë×}æÔÒ¯ ‡ói~Þ)ši^Ÿ_6lpŽi* Ò­- –KÍ‚ªpaæ[9+¥©‰íÎ_U|ÝcG“£ß¢Ì)Ý_í¨m•a _8zÆŸ%  ¦F†,yÍ<‡çFÐ…úÓÌrî i£ËåFܵ&d¢(Å¥eÏ_cIËÖæv@k†  d$ÛÂUrù3Xxæè#ndÑEœž²nG(…È„Ò+]æ » ,Á¶`3ÁŠwvÖï×Å;OºPNkÑ<ÚÑWˆ®^^ÉXɃC£žCí+oó$tãgwÝ…¨¨D»‹0"à ÀË”| 8 Ž|wpÿØ]$Zò¶.ßO×è*È„{ /ší=Sêú¡õ õ–—ÚÃ&÷Í¿=NrTMTçð­Á)øÓþJF…t±¾Qo[N±"»3ÀÿÝeäRG&’íK+ðnާM(%nÕ„õýFÚ_ðaå«7U>­2¨o›JåÓë⦨”8,=]U^ý KÙÌ[¡èç°§´3@Qb¤ö³w¾tp‰[»ËsP8$˜¢ €£$¿‹¿\¯‰óÍÕºv *WzâxZOºÖ++Un?u“r•¨!ì3F½ÜŒWÚ“ñ”# +`0­Þ.rûÝ’ÛÞ©¬Ü’?nä´Æp|fbžæäøVÌc†,“VÈ›'qòën) E~?¾ö_Wê•Ø±¢Æ$}WOW0-~ž4àyiOW›¶>Ù‚Í“c“þ I5ž½ ò I4ŠGK¿zˆÏaì2ª½—˜e¨&©4‡Òc9óÊ Ý¤¬[à–ËRÈ9ì¹­öýM˃õ~·£¤ä)ÆGrÀvV±pü ÜŠ$ TÌ·a*1ól´¿WóÜ×sÆÉŸ’›öJãWfóÚ‡•Õ—¦å0Ë4uÎz Æ!0À$àÁB|Lð'ÍU¨Ðè?ö*ˆ©¶°VE¹~$Êè >wsâ‰4ÒG @˜×öÈhnZý­uµáíF2e»1“õŽÉžEL÷¶­[ñpûýaŸÃÄd:ß9š’¿.àž²ÞyRAÔë:1QƻǘÏçË<ñGȧ­¾¤IgPÛÌržeiìô–扂ÙöL`` ÅôóA£¡9MœÌ½Ã‘í,€07íŸQå†7ã‘ÕÀ4T‡^÷bL~æAʬr–öîÙíbƒ¨ÎÀØ4A~Bz_%YŽéÜÇÅÙ0…D¢¹´hi—y58_ºVûh 4ÝÏ ¦•´(L{üý$•èù6Ï ¦­V”â &\çø¹^Ë6oy̹»‰SÇJ³ƒ^Ø÷çcÆžõ¢oT±¹ç)ûù|UO{ïzµGÛ"«Í²Úv+@PÛŸSIñB…OqCzà ˜Îƒ%¯§o~önJ6â¾û½g¤ÅÕGÚ?Nî¾QèS§‚õsú ûg2°'`ÝêFW@öÓØ-=#ƒ¦½NŸ‹‰iw¨m,òJƒ*Ìζm×'nÈ ßjqU›Ä§ùªŒq·oDâDy3õîŠsÔsŸvŠ¿ûÁ\ÝC‹oG±Q´$¡ Gh® ªâ ½×áai*¯8ÏÛ)GyµÇ4ær§ÞÓÀÀ;"K(DPom6Â…«€àF˜ X;Iw::<ÿ°ô¶tü9æÙu‹²¯3løûx6ŸL\Ç}ÕE(·~îü6Æy˜3âÉhé¥IjZœí”qãDC½¢“PÔVÿMʃ¼!|O%™¥Âföi!3r·"…iH(çjh?´fí‚—ò9ðe÷ˆ¯1챕Þ)[=¢ÌÔJÏUNÉ9µö8ðÈåµÒÑÊÖá”àͺCÖ²Æ ñ¸g—HDίIÀ½ ýš(ˆ±"Ïü½*{°æÇ8F«…ØîgÚ£!µ}GQ}Y‚&3Rú§Íp&¡áâ'4±˜*Ã8íîükž£Nv^?Ï”nÖç“ú™môaV²Ë¥Ð;Í)›Æ.=›–­YÔâåyß'x%gm»y|ŒEŒK-»PŠ¥B(šÞ»`m¥S =Jïιm$ü]GÆh¶ÐÊ? ÷öòº_OK½À”©Ául<³‘£v~}-8¤^äXQp!vÖž‹¦Á+l öÿ|ïm¦¶#ß𴫠Äk…x/έ]p^ "zUË÷×f»ï–˜‘uÕr=yg&g„kͲX+ o“Ãê<8_b„û;ýg½›¿Âp„/èŽW¶„­Br¨m±JÃ!ˆË7\®€ã™Ÿ§îDÅÅ+,«¸Œ=д@Ý9;þáË U~¾ó߀J€Eh”˜^ËȺÙó̺½Ü(;o\^ë’ÿ/w`vóŒÖ.ñ÷õX­Z×DBC"ÚÙăör±ë†ï:Ø×VU×6üÒæÑ2'ÅÑ´]‰2—`ùjŠÖã:i£Åô²We¡ëóµPKt­n"éªjÊ’5ëä¡<tô?=›Ÿ4 ŸxÝÚe=lÒ€§}7ò“L ¦R«æ|{ûÈ…r—LÙú!öNt Þ&¬!tÇBxù™híÀIXM†Ò2_ ‰–1xË’Øoƒ‡•wîå•vD»¡Mbç–zâol÷Š{;¥zkñ…ú+ìØXÑõåfë¨éˆB81“¯¸ù´ ë4¨!nÈ ç6¼‡ßÆ6Lpmps’RªÂYWoá<š´ÈHo& Q{}¬9œÈq“¸3r'÷}ÉAàNÁÄ!$pǼ,m…±RJ)Ñâ¢f$@©¼€Íýðü<Þfßkûõ/ÚØêù>O'3ÑÊaWK AÌëÙ×9¥ê`@¢ rbÏ>»–F[<j”o/«hÔ͇F·¤€<©ü ߎÒþe»>¥ÅeglËâMOtYˆÉž#uô"wΡûÿ[„%¬¬ÖØÇáÌçÄHúp Ä\n Žk…ª £=öw %žh¬'Nlj§¹w²çj¬ùZþŒLHc$l‰ÖÞ^3br›Lñ-ížâ·½K S“ áʪTù¨ß#26¡Ü…Ë`ä Ì0Û™P—ƒIBlá#aû$¼Š4@ xxx\G’.n½t¿ëÿ DSÿ8Éë¬TO‡o ÷F©¤lQB3Mn=ƒʽØO:‘à¨A +/ s,úk±ëÅÞbÔ²JòzKAó® '*„Æ vª Þtƒ@)m"™o¼«ã;&4ÁŒo˜£àiAËÆmÇGõû\! °±cÇ‚eè`HJ´jîRktºÔj#K„€Éû¾ˆ°%¼ C#{U`Ïj ^‘-޳nqèá@ÀË·Ædƒkܾ(!€@|2)àa޲Ó¥®†ßªˆ‰ôv»n”öc®ðÏïö‡±¤óm¸ßƒgÍ–Ü›·-Ÿ÷-ùšðLÿ`ÎhR“ŠDÙOfÇmÅ…Q &òVF•ñfrûcJl®Ü× —7öàÛHäHCGß×çc†±+]…a—‡}©Á•!ævnÙ€×gD½„äFŠYÅì`kIô@ ã Ù2àH €8 P,Ã$x;»èd8¦…ž ™úýmç_é±£³Ž~©^”ôÜù·|A;£øMªý@ÎLÜ-Ðn*ÀO•@]ÕË”2ŒQz›ô«Û@¦ E`˜Bt[ðvÁ‹Î‡e†½Î[:dx ß¾(•*¢àøCI°ùççÑÎ`bwà×u=µïŸNBW ô¯§ D9òî“•Yª÷‰µoo¶ùÏ/5–Áñ$¼¿­Œ7W¯ÚëÍÕóâñzŸ.ju—}¸û´âO)Nuõ0¦`TŸ[„pÐ'vÝÐCÂGJsƒç)çy]'ˆÔwÔ@¼ïØwª©¡,ê´4L'rêõ/vìy²®sV¿ÖH¿«9ÈDØ^üÐðçVy3kûÆQIô+L›€St!Pé°Kü€Dñ3sQâ…x½=ßÁSi¥íãAÞQ¡ì¨ÊÂDly¸ÐÜswW­Í–×*ï:߉ɷnl¸Ò'†4e5pup)Œ/„uv£,@X1€“ïrrz·_àß,0VjÜ­îMñaKŸ,;b·ôüL[Uôž`˜f&þÚ£´¼Qj/_×GC.T€äöÒ ð ÝÌ+È~ÿú[-\@$ÔH;ßPbÛ¬`»5tåyˆ*@©B‚[¶ßÍÈ•‹óþzôârEfÙæeÓ”Dó»X×ßí5 «'*¾’]š6E〨¼…ø÷¸6HlúxËš,|*Gî‡>NKÆ Q€$d]€ #ô<K$ñ<„$Þ%E™ìâÜbj°ÎSX~S§”1D-ÂWð1?6ωÏÆTï­Â=ÔYÿF¢ù¡ÓJïyU,¢-u»èá:³°Ï_HkÔ¨TMyd®Û=IRÒ—OåbíéWãˆUQŸg0V· Gÿ%ìôAy©ü Õ;ÓÛVñJ7nÛ¶Žlhù¿ÇÇöléÀõsUé—é†(™ôùùÜ3è5-w³cæ|æ-é Å8i9n'{–b¨ Ù0U›.†¢ ŒÛh7á|r£×É*Újw¡ƒ]ËàIKouœ^;z&¹Ì-ûsõ¾¯¸8µRN~B:‚±–QÐ:íg$A$µàËUÒî ôªC™¤C®ã°üØvý:€0Ÿ´RMd:Ù…Ç­)I' ú*×)`£¡cËøbW’Ð7­.%ðGîžXriÉêÕþþwQ±ó~õkÀ¿DåO£É¶s}ÀÍÊ÷";õ½ÚˆèÐEAàîDIKˆM€õƒê¦;Èq®;íGbMN‰&Š:qš¾mÆËfyXÇöÔÝ<Þ²Kôç«… çê¿bÿèß²(ò×ù_?KÎ]}zÅê5”©:þò«O®ÅÅŠì9ròd–õpT”RÛ†/(9?i!¨E‡›nèUs0LtKˆ4~kúÊO¿ÒÙ#Ìÿ"H¾NU]Wõó;¿œ½ÿœ¶S÷ò¾Rßz–_ @Ìh Šg"'³/Î^c r˜5…V~eþ8n­ÇBä¾å#.ó)ÅðáÀ G˨2ಞ!8Щ…Ø}ÈBp?ŸPÚ=Íõ^mÛ =(‚5 š‡¦ß“ù¦ëœÔT§þ÷!zŠ˜ä©ÿ*d2iòá ahÖ`ø›N,ey×’Ÿ¿ß¡úûXÕdH8ÅP%ܽêÓ4+ñß\±nöôÕö[;º+æù¥ ÿ N«y3L£h®‚m¿Þ¹¤58¶·£òs©;§ïígœûDö?©õ>xŸßW—:K¢TŠ4ëu¬Í~oaœ­?2ˆJû¨‰×;Ï£¶Ã eJ9ÿ}¯>d¸“Çç¤XcžÅe΃AG+C(«*Þgkù¯®Ú€ G>[ýŲÂ!S¿û¸{y Š«˜räá Ú;txÉw9Äiü¾?Rƒhá1ô;¤/Sp±¶#ª¯\Ÿè¡ÈgoÞx?ÓÒL'ü{\¨v¼:]?c‹Ù¶ÔO/1uQË‘éªÂ¡½X˜¯Ò](µ“ÿð¢¸û2tr§*€(E?­èüêKsŠôf¢:²A,Χ’ÈmÔ/•€FIfnýP†¶Ço#ÓEÜ“$n0À¢8]àð—&£Ï°oùã+”°&¼,jðen Ås—s9ùÚŒ)ŒGt?.úϧÉuÒ«o¥”ÕSC o“°ñÅòOÓG}-G]Øk¸ûïrüóÉìgÛyê¦Ð9<^Ù8-ùzg"A»Úíÿœ1gw·@®Hÿ}®êjœó¾çivn<å Þ9ÞóÁF3››Ä ¤øŒ‰;nJ,¤Ù’©ÝnsóW³^¿ mí®–QÞ.ê—sGwìSõàþ–ëTd]e=yOÚwç­Î.²J¹L6øéÐ J‹’ŽÑŒ8+þœìçøÍû¸}h<ƒ€„‰n┦b×Ñ §Àü±ÙÉ–qý¤ošfæA½´\»0U81îS)^šîÝV{!Ù1ó4r£Å©˜·û„Y5ƒ?î2¾œF°.w›ë£¼)ÄñFûLr 57æ/ö.š°Ì—Ëæ™møÚÍâÛ¬D´£a?–£xyÏÓ -w)¼;Ä´-Hß&û]ƒã;u«$N››m%§¤¶¥“æfì¦z÷I×1ñ¦ñ’îõ_¤EKß=?úgûBßĬ¹‡ÎÙ<¼¡Nh“Ç„•–oñ8ÛPûï,Ôæ[‘$T¢Ý32=<>5QXÇ»(”Ìßv\OÈ÷@z-Dº½œY›ßöÝÏŸ—'áiˆê¬Àv%×Ò×ÐÀ  ;§ʘÌñ¬¬aÙub—/˜®ö6ä<<±x3)‰e¨–¿_9‰v>¾úB®âo×Í£LÊ/&Ì0ðöRù¿Ç¯÷"°rw%Öúá ¢LeÐtïlÞãÏáx¿P\Î<ÏVÕfå:%ÕxdÈZ²rÏgU%ó§ô–ÒàŽTÞL§1åY")YÝT„šÃï‰'ÏçÉ µ–`J7â_p¼c€‚³š­>Uœµpq/לgàÁÖÞ¸éPÌp;ÂÖÚMІ6c¢wûÜ‘ÌAªŸXÕš|'<º‡S*H/nýÊ+žòpÜœ"úCÙäbͤ\´b‡Zà¦Oøò|ð=ÑXÏF99ýÍ8cDôjSåÚè0Æÿ6¸>ùŒ€ÁÓœ ßçµ³eMo´ˆ³Å¡=·Õ´¾Q·êðN|nr=–MÊ›]Œ¯™àž¤ýmqùâ—»aÚVßß LÚ›7w×A~Oãò,?« ™¢=¹ûx-”Sº ZOv¿MØïR6:ªu¯ÜŠ6êÎÅÂ÷z¤|Þ/ÂINzóÖ¯‹?EÍC(·ˆÒÞ¹ŠµlŽ–Ã*ÑýÛ‰—ƨ‹J§=^n’Ù·‘ÓãÈëuT•¹‡ÞÍ¿O±2Ýå)Ó8rºq“G# ¶ˆü”t}Àp±çEèHNv”Qã›þŠ)u0Î0¦”%QŒò3‰zñILñ×Ùõ@­oešýó`Â=öyp¾(±aFjÇšÅõ]FÛtI…Ô'‡íÜb‘¢qÀaÃ^¾8ŒbúGùeía*ºÜ.}3ºúÔŠ–ŠgTu?ä={Kæƒõª>\UåÅzò¼gýw¥¿žçå–ÂÓÏŒtW5Ð4A³bϹÄãq. míÒ ¡6³Ÿ"Ñ…¾ÅìNÓ¹½Î5eçÐzz,‹1XÀBðãØc.*)/Œ>»M]J[Å9©DNÊ„®{x‡¨“Ï©jlÒ†Õ«-ß `}ïÄá÷›)¹7 —àÕCx¸ÃÈ#Ùfi´o!rË.Ä-•,äækÕ²T¶fbdê>vmñ°Ï‡›¯®©Ä…®A,ÓÍ1mãø#z“R]öc:yÛÍWmŠôöÜnæľëà×&CcÙ¨6Jön,ží¡HÂý‘¹“úŠù}G-Üw•ÁëÙÐÛ(Μr˜gNr­5ëÛiZ²äêÒ¬ô§Å-*9Nh=]°Iÿ¼ \Ø<Ï!8¦¤ [Âõ¬ŽA‡s©Q/±acÁPU{Éœên¨¢¯ÞQMŽ Ûªë0é!JåRÝ“nþŠŒÑÅí7IŽw¿òŸæ«ñÌ=\$‡@$”uµ/4Ej¯pïÉAŠr(~|Ñy?Clý8Ìšï,l¹{€9¯qýÆ_Eò7ɑǠñÎOíнÒ[äZ¢®4bûàÙ½î(ULõ-–ô÷™Ípx @¿>†à­ß;jØ€w7Ûw8ïx) £‹,mcwùHp¬2¢ïU]ÎùÐ%U;u@í€xjˆ–¬ŒMÏÆ—_]ÁRsø¢×í5ü…w±Næ9?©"R_œóñ¾Áý;Vá³Vá_ÓÄÞg¤8Iìn†º·3P|.Ûú÷ê×…÷ÉàI¶ÍCøåTUh‰âM|7§”í®3±ÍãSPJ¶HÈä#SF¾m.Õ_=ªÒÈTZ€ä#Áõ“:w3ÁÙX–ýwùFw2«‰©~74—b̘…X™´p yôbŽ3\ßL"Øá‡IÉ}Ã~òúʈ[×FûÈú«Þ¨›á–DgðùY¡šÕFÙ„¢Ž”b÷Ö8©.€Q &öô§+ZŸ¯úòHØôÆZ¯nb7;ÞDÑGZxÝsVex2UÈ!ûÌeå&#î|lþ¾ŠfÜœ­¡qõ­&g6{ ðó1uûèÿ}éÐr«”GLÁ&âÔ`WÏOêÉ.õê·üÜBE“!$yõ.xFú—Ê"+,l(¶l QÞîÿr‹¨²êź›ðBLm'M4Ú¡¢;ØÛ9–%‰+g^P`iÜ÷ GðwKÚÀH›4`„MÖŸ—2y?IŒî‚ù3£ÀšøÊv:§>T×îf{Ap¬îÁ+ã6›ºIâœI³öËrÑUã€u²ºrÏbÈÙ7Ést:õž»æ$’•…% ™ý†‹CgwýœFª¬œ ËIj´.¯ã•bìŽù®Ù4/ÉÜk°ÀíØ¾®iƒtqòD#ô\5Êö7(yï;O¡ûÓõø·ìÉP ëAÓ[{âKÿ>eíTv"_¤X%?Ôy.Û_Ýzîo¨†¥…Â<¼o1cšC>Ê0êߥÿ7RfwÜ‚zÒçgÉ‹­-3´¯‘©Ù¬"Xc<ñ„bhXdžãÐgå1À)M©ÌôÈA0ì2ÕY!4·H`Szìø*½rÏë·ô %PоGSzpPÏ“–½YòÅœí¾¨VOZàI¼cäá}DOìѶ¼ž—d öbMÙ7—ЯÝV0:f¶2èÆU—]Sqa fÐ-yÿ´Õˆ™ýz¯Åb%¯ê‰ú·³åk«gïÓ>~ØoÓÁUÔ­ O„ç‘þÈD\r‘¯PÁ–×k Ùë׃ÞK_1 ˜-àvØõ..PÔ.Þq=|(|ÝÏìTi= ïÇ­=üåééO€P‡!â1—o•nËïç ’ö^å-A­8&Ê“^ïOaáOOR}¦Äá›Àí¹^fÅÙÑ…¦Òþ¡) >I1õ9P䑪”}M(W{”õuÈiF«e- @ô”ɼ'’E…ØX«ÐtðÆŸ&OjýŽp‰áb=挶ýОwd›šƒo¤QÌBj”©7Ý_Ús¿ Ý€Èò›F^+ø`ï]­É‰Lùtó–’xS¹­úä*qyJËß·ß@£öI$Ÿ¦q…%HTyÈø±b}ßûN *Žª—H³› cõ74OvM‹ ˆQ•é³|8ç“JúÇ ÝœÊyLöeݰ´ŽÒ4þö¬â½g3x7“ÝÜ8ÙÒ“€ëPÛáä<õÏL˜Ä ¨ßí_:~E”}æh ¹ÏÙƒü•, ~E0³H. x÷ÄT<ÆHÕŸƒˆüx~¬ÉEæõ¡ÜÊ"é=®U4Úwü:äæCç‰jkAc–ï"6{ýÞa1¯Ü$åqÿ¢=ê4€ÊtÍ}­‘=QŽ”Qt×nØ »•çZãçe[™×?ž‡?gžO%â^}9טÜ9xè6!£\ÿJØz·òŠs; U3­’—±¿c™ õ R3ÑvЧîyô>> ¶ löŠ{×0—nn€p!\0ºµÐ³pl'uö³{h¯ê®Ûmüjl¥®iwÒ™iˆ1kÏ÷Ÿmrg;„úÁ¶""+/ncÙ¿¥oªçh<7N¶½Í-ø)ª^î|磃$±Ï»[·åžÃö"]¥íC³pìˆfùA^ý#X#Ä´›ô¡-¾^áC‹’L³ý{Ê]¨ûí[!ˆŸ5y<a¶ºP†»Msd@y÷O–¼eF%‡£eÌÃû/×|\Èu:IÌ„2’íéQ}g*,ægîKMÒ³”húö·V²pŠÐP¤ÞÃî{ gŽáân±¿»Üm[$Ñ8[{,aTMJ£Qñ2™>‚¢\óØG«ý˜ Ös›g“ÿžç-ès¯}e¼’ÌûŒå‡ÁOp@¯‹¼ò½>^Z‡-XeMWM |½*ÆônýnŽQÞÍýûÿÉ%‚†„,éF‹2LC¯¸½TÛÅêoà Õ(èÖ« R’  ¤bc=t ¶qHušâ‚¸)—qHŸGèÆäW1)úýüî}<½ç¡ý:\éû ð}4)PÌ&.;$Ì«È>öa„8L²4£’]ƒ$fAng›§E``ØVIì„ÈÒG„̵êƒkX‰B õ/ÕÉ äÁU[¿€¤°¹b!„PQ˜’¬dâOz«˜Œ Ì30™„”ÈÕ0Ì5¬ÉÁ É`L„>"B!R[Ì̘%2!`3`Šà@'°’ì€{!žÈI'²@3BC0 „}¯?ðÞ¬ è{žG+oÍ·eƒþ1_Q‘›ŠŠ—jô}D¤à"È«õ”ªáÿŽÍ鮫8‹øÍ/»GüÞÓx³]¼ÐÍÎ+B`EÅçÐ9>ó©ö8Ûï‡xxwÝa¸Àåè¡íÛ 0)ÊÃÃÏ Äá$ýŒà#W ?ê¨8áîËŽ0îVkWŠTîŠÂØþûËG/vœ¯§8}}¸û$îðÔî³’£ÐzÄ”@;¦É$…ÿæ(+$Êk8¸½ÀØ/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüæÝ¸ ²ëz>÷··o¼ïMÞeÝÖîîÖÛÕî÷7º÷­õöÝ»¾ûÙ;ßnö»×n×o—®µåÍíÇ/½¾OvçÕ{ouª÷ºómÃwo{½ï¹èª¢Ÿ¦ äF$ñØ ¦§€ÐM2O!è L ÚLŒ€i3@…CÁ²ãdâ ÒÇ‚ üDhÇÄDÅðÔÈqÁ®"Ñ‘(8"ˆ²$z¼Ž@„’Æ.Ô›ÅäBHE«ñƒPÆ¥Ë!=„)†H*ª¶ÛY9Z8ËÖJÚ›žû¢A$–W‘Pñ]¤èžI„„H aúAáà``a Ç2ð(7{k[ôö ]¦ÑĉӨá¦äw~Î.ùíæ§¥'«w{8ÂbÐŽHpše€pÄ[*ödŸ –žüé „y¬„fXÈar˜d*†AbÈɰ–9„-Ã:æH0½[’®dsYÎ ±!€¯¯êA X¦I"H×€ƒ C0©¦øO )eÁ’¤±ƒ/¶ÞV¯YYçðÞOÀÑo4§ŸÚzÛ˜"ßÔì ¦Æ.añç»Þ”PI %¿«¨³•‡­„gê^ù7h¦ô¨bSTÁÆ6²,j¥VÊâ•<Ð@U®úÏXt·Ù°p‹»Xû gNYñ•µæ¯Å§ £X%Fª±rµ ‹Cg"ÅÉJvôO.Âíݺ¢ÏÈcP%PîpAøN.L‹‚–"7iÇóp¾ýûq15w0¾‚þr6|X)3¨¥êýÇ«u‡Œ#ÃBF Ã…X_áxzŽ~Ú)ùˆ|é,õ»yø?²'óÍvzËݽ-åý­$·4DåÔ7=­Ã½‡{¸P8Š„æÚÌû·uƒK·‘ìçg"ݧºE²ÅUû/ ?)AÚ6I%X2×]»àrÀèéIÊuF Fas,¿`¹/VºÙh¨ô–ÄxÛÐb_IOœWjföIð6Ä ŸL›læ‰#JÈèèÌxÙAX“|$8L5ãÈŠ:ü¹CÿÒH#qžðò¼lVÓÿ2üÏ”§ ÍV ê–ååvuz¨sHóüŒ”v ¿¯“SïßëÁBr;ÌŠðŸýv+Y¼­²°¬¸.úÝ#>j멯Îvþ™pžˆeå̈®vo#‰«—¤±ð½Œ‡ñãÌØÛ} @¯˜ÍâéÍþÃÓH‹'çe¢÷Û‹þ›±u÷§•˜ü/#{o †ÛÒr¿IÌ%Ÿ×ǽIU°c$œÂs„Ì ÂWl„™€\¬„W_Oâ•2õçIBq:¨-{µÔó¶üÛ~éyÄpeNfØóˆÞ«ÇQŠƒ‚WÀd`ŸÐv™‰¸ø½¸È غs…kMÜ8ÿBki¿’§Ýƒ‘?,æOWÛƒÌé©q#ñJõ(»BÚÞó=Õ>7ãâ)¡íˆÕÀª|.®´ˆ¤lÒ¬ñq×ïŒëôïë£Ðr.éé"µf^ ½‚‚é-¤Ô Ô÷­6‡à̸ÂlÂk@kD¶>…xØ"¿²,Ìm-~²Ó-´Ä¥¢ÝNÍÀT¾'ËŸ,2ƒäËÜ Xžw»Ÿ›vHÜ唲ŸÊGçªþì–¢'òNÓ¨»§ËœÎÕ$µ¿÷Õy„Úñ‚±0Ââ‘7ÃÞb·nÌh…×O`“GÇM«ã=P»œ¤D|¢=¶™ä(Ä6,¹5wô†ð¨ôv¼l+ÍOsT‚ïf¼v Ó!*cÊûv¡ÀféÔ䢶û÷bVŠ6LYÖKHf¯P0ÐÃCÄÛ9#þDÎxPRV§ú’Ž1™ó67»,¯„~ŸrÐÊF‰ó•¾§Rdвzá]»äëFÞ_Z®×D¨0Pf|_Ò¯L&Ã\Áù¦Ýlžbø0¾=]á*.°\0m)¢Ã_5Šx£.‰:Š kö\µ)†‰,Ç>#‘–/’ÁP§º?NãȺWú–#À¹þòúòG"û{1² ö*£ÏPÑj–ð`\p½ Ò?¶€P)¶ü!47·ÎEüÅ8~²g¦bÞÜyå-GVlb:ÀãÓšÑHgÙ%;>"¹õw4c´—PKÈÐ( «Ä‘+b“ÖÜöíw(ή¬7'ÙŠiQ­êÜ#zø;‰ ”O°JõĆÒF-¡Exœc=õt:WEÉ¿‡·Á÷îi!c;§FieýCþdýR]T?zU*¶J—ªcRÛ>÷F@¼N^ùRþ5¦[]T»¯Z؇ª?µw¡Ú²EönWT»ãl¹• àfMÄHج.p”Ì_lˆ-ÀÑÑéœÖªŠwÉk&àú b§†·;‡‰¹o+YlÔ$aÙ—’ÚЬþ—ˆ–eÒ?Qú¡\,pš¡9xÒô5‚Ôñ5ã+Ïygäå™ÏæÛ7åiêE­ËÙ­è€1T›™€÷žø­»€äG ÊÒÁ”wºØÅ}ó©¥аÐ7ÔÊ^й)…à„oÆ毩2À²bÊ™¢±¿³ð2åÉ…è#ÖMl±œ#ñˆÍéáyù#Îwz€Ÿ×0"'mej¨ù°ø¬«M‘¹Í±Úÿ¾”{,œ©¬—lca…øWžÝņûx1‰³3ÎÂBùhp Ñ¥™¹2Z‡îBÃÍb)ím¹É¥½—{a*ð_®ÃšµROÔÆàHóYQt9ö,hȯ¶¬>|ÛÑ.žH¾nqÆËé0ÔÄOújûÙ$XÙ÷â•÷ˆÛaRg¦‡e9™áíí=âÏóŇöªÚòUÑÙ¿ÆpÊjfá;ò1hjúƒÌFÉÅj$uoo$Êá_RH‚œX]â®­›Î—7PX•œ ~»)³ÛY¦¹‡µ )MY”|#ìÛ­—¯nB`¦Mͤïº#–ƒçó÷p¿º+¸\9h%À¹šË’ƒpƒ·éü5@Fñ*éD¯c¸¸ŠO ÒÔrNr5]5‡Ê=êyK©±•ÙÕéi+ÿ–v)Úokþ÷ÐóF¢‚°^þß ¦¯FÛÉ\ê³JJ)æžT€Ö Ç%øxý8¬1Lü]Å%^MUýtGYÓyI‹n7ívZ؟חSɾS¢G§J1“ù ›VØßÚ𦴠1êfó×ðI×½ Qç[™^Ãk©¶«MUNñîý%+å<‹3”žçÃs®‹jŸg1‚Îj×¾UþeîëÆ).ÑÖ‹îŸÆFŸ¢\M:EÕÖóXßûÚæCbePæà¸ÛŽß«sದ%^SyÆh§õnÊ$ÞY¯À³z)gB†~¸ HÁzXä+˜O‘ùºiØ:cŸÈ™Öe㺘 ¶…Wyc=$÷ù?0²Œ?¸â¿Þ†™Þa°‚ïâÏÀŽÔ”7ªhîŠì)\Ä­õÏEí«4S6¯ÌÃ12}œA…ÅòzC:©áÿKìÌw‰wGzЈ§ÞoÝkåæz§$Ÿt¯F6…+ŸMi ]¯dÙ5«¬7¥Æx³¾&Ï»r¥ë¼¦N]ô­c¢ÂÑ«ÔÙ"§ ¹L D´ ÀEir‰Æ­åb½*z¨Í²Mó°M…Lf“4u¿”ê¦ÑL#l‰5‹£îˆÎž6F7Û·ú7U‡áº{n »˜ÏkËvãwæ>W Ä÷(ñav7F†ó¥MÉñ̾GAåÐÄf µ¯ÙÂÂË<:›Æ,¯Ì HT‚16Á1fà[ÙJöw<—u ;5÷Sª”;\æ¸Óî•9Óл%©Æ±9Ûþ“‡ß] ~Œœ²ò¹ëÞœdᩞHóüaç~O¶@êƒô·pb¯ó¯öîUmÕ8žjïa ‘"½÷$!"ÜÀ¢z)…²¢U_µ'ƒëØ_ݾ5 5Ζ6±‹/JÜmNö"y¨@ögõ#Iç3h3áW12“¾ôvpÙ֛̑¢˜$‚¶ÇÊ\€±®¹žªÓ*r²~u$r³ºð®\æˆ{¶cÃ6ÊÀÁ‡Ñ$¼}%šÿöÌßd¦öσænfUW‚¹åÑáA(¹)Wqšx4:é¤z^©Œi询§H¢Ð`é±(v½½ûJœ¹°7—[-ÄCÀjãZÐAztÓnøšF°¡ËdÁ_u–ÇÃÔ“Äp]Pƒß¶ìw×ô54„fÝO¡µ/|»ëãç\?>ëI/j¶üÐ{ ã½ñ<{x6>¢`ibc%±wéÚ0ž.›µ˜0ÛÞoT`…Ëõn m]¯B(®«¦¹õׯïä¢ j’úîqÞ2ëF×aˆarclJVâ:îΨ 173Ýòu±Ç¾ã¬ÛùUßùuÁÖз[Új¼BÅ¢±]g|loM›©îõz]¬ØNØG™ì»=Pò†"‹Rîw¡Ïô\ʸO'3Gº“Ú½¢Q Uk âJË̵ ;Ó‚òß²$6yhΧÆWDbSÜ‹·8‘ƒM4¶¶V0âuºÓl&ž:Ï5ìfºýp)5„´ß¢‹i*Ëô¬”ˆ æá ™S±AåÕ- Å`eð~èÖO¾äA߽Ťœ©Ì×%³À%ä) 줂Ã1ƒø=ß„œÁ‡(c¡mÓ"‚ ‰ € Õª)”iJȬ—eE-ŸÌxDak࠺΀3k½ú…h™u¬þñàÁìp¡²ëۘΔh+ß§i›x,%„v~Î×üÚ(ÙNõ” ¿™ãï»×ÓÑ?îãQMLYSP‡5ů³­Ãxë#¿<õ¦g‹€»3ò è7EªíŸºX@Œƒˆ"ú=ç!ö“z£mì'úÁ­>uº’äÞåI¶ò+†–óëW°Î´ì'§Ù|´ïÔýßQÑã‘à€PpÍí§É`h'd|2î:mSÞ§j»èþ¹ý°"z8 ü#Ú@©çÁ)­ –¥5 V«}žÇ÷bYÕWNîïO¿P Yútϱ7ˆvªK]ÐF!ÄY\ä2ØqŒÊÝ„5]@Àù–ú²¶ÓQ´® Ùnú[Ÿ—Ö÷¾m×É ¡Ñ˜H»šÓNcïæ€b.~°ŸÈ ƒhäPbUØM>Æ"³—#U\kSöx»ËÆL„ŠÂÀy!¿«©Ø¿ô’ Ó Ýð É}]Osv÷c§4 •à"9É€x7”¹%©ä ¥²ÁðqR¡)ùnXìk5 º-rß>À“¬Ó];…òÜåð<”j»jv¡õæs²¶»úŸ9åã-5:™zÎuÏöãéá;ý¤Dqуÿû9ºÂnz½ä…ãa?êdüŒDÈV— ¸­1¦JXƒ ‹Ù䮕¸Aèé§!ÌlØ@_ª‰œÈËìR:ˆy}é(ï·¿‡À“²°ÁÒLÔ‘ÓLð³ØVaäÝ•-LNaø~ K·é/tÚÐp;æÍ|9ªÀ [I+W=Gšr¼&‰ì^O†þn¹?Âñ÷Mö'Usö£UǃÄU m@/Qj˧«Î-0„>@ȧGÓ(U!ø3Ö›šØláŠàÈ#)愘Æ÷§¶ ²-¯ÖœXÿtÖ*ÙcÁ„á£('é‘7ã5”×¥‚ÍZažÊgú‹O¯þûŽ4w§ª¡§`=|Ÿ/óïs±1†)uö2b„õôL£؈ÁpïÙx1ãt¢‡÷Ò!ñý_ ¤=Õ¶6÷\‡™[jã ¬î*ª0t·PYgWŒòD„&†UÏŸîü ¨…ë•ËyÔ[Õ9g5}§Z"îa¬*_JŒÎGç/Íæé™Ä y¨ }“#×>´Ý6¶“¢„~EûM5¼ü¾êèj¿µnÄþ­híÔÍwV§/Ò´q7“N‹_eA¸š6U£Y¡ —·+]2im´¨/Ïö *@™'*éØ/ä@ÉõêíávÖ&S‡…Ú’`*©å»q+'» . 5nièæ8——mÓ=ÙL¦‘nQÑ6C˜K¸Ü]¹ž6æ˜Õ½Mà¤êϧü܇egÑfÚ¢Ìt‡1SÚljg€ìW³­¡oU5Çý[é&kü‚ãÿ6·†ö v~ŽÈ‘QREág›ƒß°¹ëÔ¨Xáäb2sÄÈË%⾩ž=éη8•ÊÚì³—ÇY'îr óÔ =×RàÊ_ß ‘¦vÇ»ÊÒíDÙ=€’W²æ«ä•ñ¸ÔV€Ä/iÐʬäý´ÏAÁ"Á¡û…¿HH~ºËލ°6¯7¥øóšÇoîpí³sĨ¦âýÀ4@¨ ½µhöÏzá‡fÆbÆ©Q.¾›œž(Û}H­N­ÁJš9ÈKª{¬ÑdTRGÎLsyÞzÏá˜h=ã |ž;ÇijʆàÄ <ÂüS|æg±“¢Êo4õ«46³D‚óúb¹ØYŽ3î¯q}[Œ™;Yé+”Œ‘â Ÿ5Ô€âËž¹g%í?€ñ®9\S_ï\/‘xGãŠýæÓ7E“uo7„ü!N”¤1Ñõ«H”ìuA lÙ0ŒügOÃygI¯!'?æõ9ñFûúâ‘p³(Hï¿çLßJXôñÞðˆS¥ÿ|+ƒ¿=Ø— «˜éBkÕ\Ù*’³“ø^³ž†@0ü¶¥é;x›]ÓçÚž-3íh+éví³ˆ»Ê­™È>+,î¸ü6eïj à§A“3ÙîŠé]ÿ#ЗøÂ;­ÓÇãÀ‚x»ÏeLXµR¸”6¨rØ#è™ö0ã\D¿ÿbùØ¥zUëý#´Ÿ¢±i»ò"lŽgŒÉÈÛÄÐ^Þ²–n~Ùåõç =\ï¿n¯TôE—I›æŽë0‘´ŒA,Ùä©OèzÒ! ”@ÓñNÿ~Ñüþ¤ºÛ™1´þü›!üv”7]S<©¥èiœÉqF”hâ]ºNvSŸ°—kÞ²ƒ†œN¹­$BNQ ¯ò€áøÍL4Gœy9däùÚŠkÁÜê©“W1j’w9­‚ÅUyÌÍ>b¾õñªüÍN<œ´ò³_Ïÿª¹ú\m)éüï¤áæQáî[áu»ñ³“jÁ;î`C‚nÆç·¬F.[÷U™î±ÎäÅÞ`änâêöœ/ne1!÷ܶUÕ’Y}ˆ¶t{ŒÃkaÊä=ND[Q²Cθ='-î3õÈVëÿ!)¥¥¨ßƒÙÜœˆõU¿ÞhCZH[K¥Ûþ/¸½ ¶ß©ö$Îp§àêq ¼ñ™SJ˜6 ‹¬$¼×l6‡¤Y”ÃaiøÞŸ9ÈZËü›Î=aÓÄJw=¢ù}–SZ³!p_–zó¿hSô77B6V•ŠaR<º‹_3EðÐÁZN›}È¿hlºñÚ.¢é>ƒmœ¤é…ŽÝ@l@)®Xj57V‡Ú’:Ó>ÀÀ¦üÉl2*è«bVdf«XI |5ÚƒMeOVþ¥1¥Ý“ó‡9œç3ÛÔþ‚eon‘O`ímJÞœ–f^ w«\gŠvûŸ'")7ÇúÇ=!àäèÇÉóš\ópi”˜ÿiÝ÷U BfUüDÐ€éˆ qy6+ YžZÀT¸ Ù¨Àœ Är ½)_ ’œL Ûø©†áëKWí ½´6•“èyL‘Ú’)vx{Q­Îœî«~ܯð+/ø¾,Å‹¹‹²`?‘å{FÇ£½döZø\¸`Û‹Êû`_’ÎUS…n’Sxîàgª—Úa ŽGŸÁ_?Á!6{BrDþØåY }/Öcç…|/&l·åG×ÚÛŸ¨é·ÞHxÍC9èçùqŒñÖ¹%y©7›ðš©]<ßÝÿ-X¦r`-ûX·—r-#´B:³e½ —È´ä­.h)ùü80fy+Ÿ‡KS„O)åœCáXú‘™»¨%^ íQ†4¾MæÅ°Öž'ÓÎÄí¼ãͰúL7ˆæ8þ‘úi%ªÁ ý7JÜš9{3b­‡I¬{á`Î ;ÏŸ=Äxó/åjPVѪu®%3mï¾´åK íO`¯úwD¼LoA?w[…ÁÐ𫯀 ÛyÍ¿q^«èˆâžx•»›7•ÒáK¹ˆÀ‚S²=&ŽÑ>×HS‹¾v}®?QÐmž¾Û»ž# ÈECÖ¼ÃÔ@¾­ÚÖÙ¿ô™+»Õ,¬>Âj[v~çvÅIXƒ4V-× ù£³ü•Uº[βê¿Ôý/žg }Ö×(ý=ÌòìÿÛC ‹s®úíQ«Êêú›šl¬w&›¥~œVÙ}‰õçŠ9­KÚ©QYEô̱ȹ!¿waIQE &ã4¯5¹H#¼/ cíOçqß÷˜)†eЦ°·ö€ÌP»™—Ãa*æ)Bmy}¶‡€ë wò»å¹QùY}êTnȲ÷3?VŒŸo¾¬3Æ»Ã7¡$ E¨Ê‚†7„ÛÓj ÒÜ;–ëÇQdYeou¤Rn|¸ý ­q’moÕ¯~JUØ¥3V÷‘Ð*˜P5‹ŒiYgÙ/Ò–VÚfS©Ê2ªêÅë¼sG„³ôËí."ìðtÑ,*3}³T¹«Kl `Y/ª]Ú«$¡D„ÖÃ}¹á“´¹n’ËÉ67Þ M¾WÒ…ó7—npßT4ggbXØd–ÒYª¨´HOïâ»¶õ=%o²dÎÿ2wöåŸàH"ÈÆåÊÿß? ]}NÁÂBÄ7œ¦aÓ–±]Ì’í»¿!í}æU‰Â{·»”²[•HØq”‡mìªûá>;$†Ó±²pè»çÛ6ïöm8¾—¶Ë ¡‰³‰8÷)ºÙd»oŠùbT¡=QðôÛJ¢!o„ûe´”q3®~™ÓÀ/‰U ñ…¿öc¾:E☧Æ uìn<ﯭ€þç _·[ENø´pÖ­‰0®çü’Af¨”Áĵ l½¦¨_IbÌÑìºÃ‘|MÚNv°9‡~Ȫ)HìiH,ØÌ]JêËÊgçúÇfYžÌ;•ú ³òa˃pwæ¶Kˆàô%E'ïTüÕ¬z²x>;$]L•¼>tmûûf[pk÷j×S>r©ól9üûÔÇC"hg<ùH#Éïj»"ÿ×âŒe –O²¿#Ä‚•îÌ”EàkÙW³l> ¹˜@º®— …z¦øhݘƋ[u3†­Mk§@OlõÝ¥îŠ&ÔXÝÖºíÃ0µ>ÇÑ“Øj°zòS‹õAAŸNvODñHX¡®ñìKf»ƒ 6¾–’"QktFôˉšw¢{$ù¬À««½0gpØ‘3þì‡Ifs¿ÕņaLJ5;ñûJM£¢dr«'éåÂZ]Yê©#v|)»2¥ð‰Y`T™§|k£iáë¥ØØ*5ßw`U]cÑ®–!1®¶ŽX%Ÿ^î|dÓækª5"ð¶G͸mdØŒBMZ`ÁÃ·Ë l7¼¬í&½x­¥È*LÚµ[Œ/-Í¢<âÑ[¹>S)íNâ1N¨\C×Ú\鼋*M².áØû^üÒ’I±–v”’Oès?ÖD„Ï+‰B¯ 35*•ÿäÄP´~íê Ú¿þrÓÄI,ÕpLÜÒ²Cã_á–Ñ\ZqÇM{£o¡• ?b·–YºÝ(Ø®s22¯Sp´ø‡höT¼dߥ­þ)…b`ˆãz•ûë/•ìßãÂxRNkVd)ãTý…ü¡'¬#”)h¨©8P„³rÒPº6øóêÍk9E§0£lüS0ÔÕ¸] "œìcË£!ªÊç:ez%%»)™Â ŸÓD)¨S }Þ²0‘•ª¡åÇ›Óý™ì±ª<›_`’j!q/F0<Šx‘̳ä²\…匫÷t\ÞrI¸cÈ îÚ:ÑóDeù£vv[[°só¯³ýåΜà³UöB¡SÅæä…†L ÄÈ."ªCë’ƒbëN¸çÈAГºÎtðÂW”zæ¢÷@x˜ÿç•å’?d>—òùêÉ$5¼B™âDzաJÏjO“ĺ r·k|hN‘D µ¯d®£T”…øqÄÞzm†c%þµ8]’­>`žYÄ•íJ}éîÍóo¯w6%ÃÛ5vAã™A•~PâÈr+ÖÂ¥ÁN~C þo¾‡Ê¡n&/ÖŒ÷­Œ)³¥?`ŽâV¸¦,šs²lo^ÌoªM;íº…2Üç õ¢`©Íõ´8';z,Ô*ÏÌgæ–⇴€Ûo‚Å`ˆO˜L•}‚ϼ¢ä`¦<°°™:‘ê•3Œ¿Ê I2^¹d÷нT‘­R=¨ª;7y4Øø§¶üǽ7î.#•O-~ê;Y&ÕTBèQ.]¿Ÿì™Éó–ÎÉ„w¹gbVDâ¡‘ý\-œ3`nSSŠ’ÆXZNPtŬ®ä耔öcZo;úvµçVÏ¿µ%*]è*5¤l»ð|$Þ‰^Õ­2ÀÙek¶ÕùeÅïáˆý®Q§5ŒŽåé YiÀæ.†øÐüØóP?x~&íséÄÊÓ:¼ñŒY±[ e²· Öêü#©á B“ø,íOöZléÿÒþ-T¿Ï‰™ígÖÃgH…€ã$ö—à›äò¾DWÖøgsÉ4H;–Éã³L²ª½$W•…t ™ “Jõ%vË›þËw_-üñ •‚QUJ ªpÏÏœ1>lëà²Þ.啇ZŸ"£T6fÂý§O·úÆýÖŇL“§ÎœCuÊ•qvBùDl-óz_¶ò&kK5¯Xš5^ÑiHÒ„YÊ ÇáþÏ=YòýÁ% ™Ü?Â·Ä œÆ•Ä¥©+9F]v§y«£ÐUý‚zóO\•å ²Ü‰ÇÑx9ä©í­e:‘ìgi­Tl#Q!Ì.Ü,LËaoé† xëŠæë¾úÂÅtÈÚ wµeRGFWÀ˜H%ÁÑûB¯¿IÜe0| ´†¸½Êx÷¸7T‹¢ Ö¸ižAv>H¾› ·¦‡9´,EF°„´é‡"7=TüøÎL©ºPáCÛ JZGv~ý[pMõJµôŸ€›Nç#ÒQ«B”äð}|Ÿ@$$#*Û¸ÝßmúÑÒo&æ½*#Jöã’‘æ6ƒ´ûƒŽÂY‘’,CY<<¡m/²þ™oM6ª´Öx@J²pÌþüKH›¹·@ ~Œ7±ýä¹ì¹êÈÑܸԣD¬p4YŽÚ‘aÝŒÞʹBBŒö€¹¹VׇÁ°â|…ÊcEýk¶rÒè÷f+„º(Œ ÆM¾«8£ g#¢5‰Ða;Øçvwn*M¢¶G¬×öð*òÖÂÓÿ‹¹"œ(H²;ê€zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.696786085 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v10.dat.bz20000644016037001603700000007547513607166133034214 0ustar00hutter2hutter200000000000000BZh91AY&SY5qú^ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàJÞøÝ,ÅA(¢¤)UUA"¥ IB ¤¨*B‰µ¥JŽšUTY £®>ßWkîïZô½·o»vºæ{£O§vÞî­^ÎÝq¶CäûÏ/zóß}—z÷¦gϜ˗sß[§[ß_[Ë·m÷Üâîëïnn÷½Íí×Wׇu{ÝKÑèS—»›š:i>Î¥Þ÷zôóì÷š½²Ö„¾Þõ޽(ª’]b¶ÉKl¼>P·`ï ª! iM“ “LBzšhhÑ£!¢y24ÐdÓ$ÀhÑ£Mô̆šF™ š GE¼ý\ç×Ö¶¥ƒü8ý›+åñræú³ùçQ‘QZW…ð/B…ê}b-Æ™aíÊ}/%+…ÞÅáÕ¯äÕ¹qÈÿò“Z‹²¾Ü[{e«X¥ö}»ë.*;nÿK÷iíNt¯q­7<¾½S !#/7é–™ÛÆ2£ÜÂɽ/8ÕôéÝU%ä°Rè¥úõyÍ3O7͸ãkz‘øèÅa©êNmfSvŒVý‰O>ϵæÞÀ†È¬T$÷›5{)œm³ yÝuã#9÷wÙþTûÃÓ²ô—üS'掃M[K´^³î-V}z>V‘%%ï–º—ëÉÈå}à`Œø Äx¸É<#¸vlÂñÏ2tÌÈn˜`aµ“f5¬|‡»d"­,‰ HC$VPNÑ„$(¯rÉð‹WÛkè” AP ‰ÏÝ=îæR”Ôµ;¡`]IìÈE Q‚¨(íáPQ˜‚Àþ"»( ×0Œ‡Hœ˜…d šÒJâ@ˆH&&& Ñd‘9K"À=‰IPàGbH˜¬}Ъ¢¬Á ’ ®&`ÄçÂAI¶.°œÃBÁôÃï–Qƒ|IYˆDâKƒÎ-‰ÇÖ;ò@aíˆv$:Â+0©h…«!è€X [Š÷# ñ‚=£2ÌC €¢áso2Š IÆ A;9&¤aE‘£ˆw¤ÂÌB·0×$@áß ÀåvBŠÐÀâÆ`!†aõÉóY É·ãßžÙ–9ózRÔÆô ÌÞ3ƒ&h@Ï0'Î "HÁ× §`‰´©"T~t‰kØÊž;BÆëÌ£}1´¡X­ÄbB0 m£¼7AŒe¢K.hF!2ͦÁÛ<›:…0È®„ 9FO6O¾ß3À—äzÅ.%¼Rª˜¨Ÿ7•&$ Lmˆ8¦vÈY!äF`ª‘˲² Ô! `3ì ý¢vº¼Š³!„ðвH8q·®tt­_3¸Á¿Z@Mx0/÷@Ð@°hÞLd'4¬ ×`&:¤*Ôè0Û7ÎDd2†`iéÈ :Æ!u`ãF± ÔJ`gЈyöÎ [F4æ4e‘¡!ƒÒ¡Ë+mV4)¥ ‘°d› ȆÊGñ.ÁСvÎq ÍÐyUm Ê;BªLn£o#~SfH­B—‰ ‘×:·3ã,ª>$- œgµ aPp§ج±µ`}†&Ô‰D®1èNB†0 ü1—fuéší LûïÄ8ðm ´1@åš§.€´,ºA÷„úíåÄ '†î+#†c•¾0}‘š…Ä}5e¿É]ƒkc@é &1§Vu[©R2Xs01“Î …t*Ìy´=¦ä{dâ»%}æ]‡îWT«läÔ!_ÔnË™À}Vw,<“È 3976ÀóO°}!^F<»^1½‰”ÆÀi Œköºd$éþÆNºyæ—µCJÒn*Ìqm#C>… ïz„ó$!£‘®j›Cï‘°áW¾µáºp‚…¿ð.£3 ì 9¶äê2PÆ=%qö£ * å=\ÊpL „ǰ9EcÞ`1l·'V¬Ã‚ÁîZo ò8õ`Ëö\‹Ô7gd6ÆÞͧlOJãÐâ5l€ŠãÞ;ؼvD k pDJ_•€îÆõ›iÜ#ilY©-¹ìŒJ—ެO ò"Sß`6úd«Ç?J·O–ÀäÐúï¸C‡d†¥`xÅs Ü¡·dKV™Ì0‰<ó(S:† °~¶© XÄ3ŽÀpJ$Á©WÜiT+œ`ha˜ ‘B Dý,+p¯^IóˆWëuã&Ô{`j300gçÆd8e~w„È!…r­D! Ùq1[…mG‹V²²!\+$$®=ZűØ!×2ÀŒ§Â®WªBÞ3À]X½o¬ :&|jX®ô­ãjï˜xBÜ*™] ] K80`؈c&HægW^Ìt$B”ÇJöÞš j˜4h@”€5Ž4¨H­êEb:˜„ŠÀs;æi¥l¸¶ù‡žÏŒOÅÂBÖ…µ¤Bì3ã€bf«­Þ•.·öÏ‚Uv”c‡B !!)†ðÆ>a„n‡º¬Á”ÝžP`„hX:Ä"›ÖrHAh3²q’²gr­ Ì9Ë—}Em¨F¦V¨ÍÍÂ'âí'§ZüOV¡|~= cª€áÁðo{mðÊR‰çmåúÈ|ÕÏ¢Áwv*×3FÀÕo$2ô¨°æÐ¬?ÀpPÁ Þ²1ŠÚ²*°<ÃÄ„êÝÐÖ¡÷îTtÌÁ|ׄ`á‚YùÃw±YjØ5#P…Øn¬cf= r¸Wp2Ä+}ˆvèM0È*ϳíùYc) ô$]+-Õ¼¨ÞšÆ¼iÇ1ƒ©+¹‰¸³êס4`Ǹ¥?Ìý2´Ìû7ª®fƒR!ßéíÛV¨ÔQÒ+Y*ºšŒÏ‘å¹K‡¢Ñä¥xÕkàþ‚Á¥ñ ÏÛÕÕímcéÛZ,= WîQ°€!vCìeO ƒ+#Å~±¯s#K«wLáP€sA°Ùql aøÎ-]u«YÈŒ"b˜•Ð!Vh44ûÕ(­ ñË Éç@=2#BöÃB8¡øÇ ùéFa(mC†åÚ&öõŒc<;u㘀ùI§`2™HL/Ûöä ë„”éû?2Õ®ë> ÔH ÒLäD*ƒÊ:à˜í|þB­Øÿâ¾ÑóH;K]çô¾¦nZ¥küi> W-@{-·ñr•ÏÎί#ê;è\£ñ>¹ˆ[6—âÊÜÜÎT8:ñùç6È„úãÔ“zÆ74%?TÈ’Pð˜?çµ€ â@<[É"Ÿ3·|ÎëÉÅw#ôj¸Ÿ ±è£7ùçᕬ¦Áãw½ò¶g‰Aàñ;K~m^dkÝÅ¥v¯(s ꘕ‘[‹õ*Ø-© ÐÀmHz­̪b»Õg•Þ¶±¤hU˜Ð‰i؉ä˜:æGöB9V…¾ îœyf2E)ŠRyþcä¶çËv£í9óïJÚÞI˜Ï¹v ŒU»+@Ð<{’aúØ ã|âµ®045Þ á¾Vø™ª`a·aÁ`foY#d‚•Áµ!œØm*ܼPªùç’Ò…»jꕘzÑœd‰t?EƼ“UÖ7ŒŸ9д¶ÀÞ»Õa 3p3±«8Ñ <Žõ§`6—ø9qøíGÉÒ4­3N0rE(÷­‚¿­·>C,2Æ­_‘èÙCéµ ÑXËj·dKóË àáU×;Qš‡ˆñÚ³ùF°|Kªñе­ìÑ™d4ï^ùh{l´$V‘öÛºl7îÜŠ5]í™ÅåÚ*å™…Ø»ÇBåÝxnÍs|V}È«mjX8ã éægã¸`cpO‚»8áÙ6ìÎ ¼XVLÈngÆÙ`X0{ä0&âYF%om½Ä¸O|½²<ZqÅ6§ †ÖËäÀÜW݆a¸Æ¾;l×o Ÿ’Ö*¡Ú~{— ù²lãõûó­7Ï€«iC'Ϋ,ÂUŠå€Ìþ|®—¼,Ž`éºÎóÐc ñ) ”™ÁŒ˜Á“ÎÙyZ2‚ÙC^ÌL¬!õЭKR²Bà ¾VOÜ@ñL†/`î ÝE°ÃËGÁºZŒßåCÖ€ˆ&WêÂ?š?d f ªp̯¡na;Sk ÓC{8 § 2=WÒdŒŒ(ú0ä-†0GZÈ8‘q.ÁÞ:–ü~Â$ÄzÆäÖ9¦g.ÚUtã d3Cû¹ƒÚ›KéÕ0*ô™V¸iþ¡oŽÐ~-lJ3Œ©˜ 83DÙWtÆ Ö` ã~õú]àÿF%^r•pôm ¥XÕçF;—ðX_¶\ÏÇî­ÝÊ•ümÛ w»š¡©× Ëø;Wаs;×N p?+x"GÊÂÐ4£sWœV“aéÞ¹Ù¼`û ž ¤6jþöE%á|`+ŒB…d09qa×zw†I¡¡¤†v™„$¿c-½ŒP÷NuÑ^pR›;>o•ÂÈßÕƒà«ãaŒX!mm¨d¬=êkíbÕÈÕÄΡä•׫8†}«W\ù`ÚÙr¼udíÀ»¾óçÏŒOZÙß½¼Z/ÚWczäÕ‰í©¯èV!á¡iVø<º«Û^†Z€~zü®Y Ckg†’ÞÔv%nM˜}éÈúì¨m›nò®·10tMðqcðx_ë"6”*Ú×® ÅY¿ßhL±ã¿ç•ÚŒ¡ 9é2ÛÓÌ«s¥7*Îq‘ﻞ×OïmLå‹ßc’3žÖÒg­ýŽ ;>LjÐÐÿÝ«0f0çlÆÊ™¶¾f£cpDÊ™ïë_Æ4[ù‡(Ù•õ›æ¹Ñ¸àhÅȾP4µ–BN¤Lƒ–G#eððP÷ÝÝŠ’·‹÷ áb­—ÇÚP!«¢énÖî%[?±ËðÔ„)<üÐõ²¼)¾IÑ}:Ì(â:çbèÇšvV<åv0¥v–qy$6ì‚àdk %ôW§‰¦WÓCP:m?[,Ûò(ß«5+w;€áÅÏÄçcQ­* ^›!v×?þ¸Kd?˜˷7PÀ}:Úë3¢·®V¤¼Ÿæküo)Kù EÄBøîH Îê"B‘ìþOœkÙ3¬ó¶xf»I.Ò=c‰ íÆ³8É“$(Â0áØC¦``|ÖO°5_Î8åw*×VÑej¸Öj‰îïÜJ´?ðU.Ʋ¯g¤}|ãÿ¿»³´WšÐ€ìwD ´É”>øÿS™Ír¯§ñ 3à:YBñŸ¡[†¨«kXtXŠÎµš»XdäxnŒkG{#nvçÿ¢Bý¼BG 5S¨Fì)`‡U$¥Vf ᔲ€¦åQî“Z>«ï c·cM0óÌ܃ Ñýñ½ÃKhxi?ª`ÿãÌàF1‘ÃiØÛ[Y´zÞ§ÒñަeP$´žsê˜BÜÐ "`?Úi–.ÈO–…רÝt+ï·¬ëZ…’Ój‡3ŽXÖ^ÎfP‚é¬ÏÈ=¿Qü°yÿ‡;‹¶:nç¥çÿ›Ë!›®$á?Öª…ÝVw·!+sÙ6Î[,ýe¤d%Ó#Ž­„á SC!ð%4(ÖÜ+B”Ù¾tç/!AÆ¿‹Ë+f5~V s2 ÑsºÔå[côž60 ,©«>’lVbÝÛ× ’ñ¾Ì†>&y!PÝ®SßK¬oî›F˶ÄWqøÂûx> ÷«è n uécëPûíÅo ÍB؄щ[j¿ƒ5 cD¡aÀí׿YH…ÖŒ~ïífåÓ÷úÚ$«ìI‹6±ûrÝî‡×Å1å§ÓA*·:âާJ@ü±©¤ÁWEFù8Ë$À (?íš„[™œ«ÌÖ°Ž!‚ÀKâUÊóÞ;u×ÝSWA¼ÌÞö234¶Ú(ŽS˵œ û¤PÉsL —ñKÉ6%ANŠ‚ƒÀP¦—«ÞçÖä2ÿö†­nêÖ0 >Þ œÿË{þJ&Z¾"[÷¡¦ušµC¹q;Py$›,9ÃÓµHhU¥‘‹UV[›ye·uDn,÷×Ôiˆ[ÝÅô¦ òÀÍ#VÒð Jò¿k€0Wí.M0ëÇèaÈúްã#ˆRÿøðR9^aÕ¤ÛnÆ6ôV«ðöU(o¼ýEC¤ú±?òŸ÷:œõãgBìm.÷¥Ã l´?Bæäf‹w?ÆÇB;pCÉ` w£ÖyçkòÚ‘<µt]žy£rªù†$èÕì•‚¾;L׃B@z½OË:µkêѸ’MëX;6Ê}TáÎ\¯ª‚J¹Â2Ì5$ߥ?×Iä >ã›I÷½Fhò_g|êˆîD…ª#8¼S},1‚îÑâ}Ny8§ïŲÜÑ|$Ò÷u üh&]Ñy0g`_,P—˜xpXAàó1Z7ý¯ÅwCÛ/:°I­b§Á–“¨8²R aºâ~Ë®@LyÈùβÙÃîký)QËìˆý=zÍuûaÿÕ¿> …¬Ÿ´×Fë:F›;Üä³î4#ÿ‹7¦„7˜÷(¹nt1‰`HWÇ@}œ×CóÜUÕ`µûêóNA ’ŒVS=“0ûϸÒs±.Áw«X„W›dÜ/HR?À ÿex ÆóÚ¬B=8މю‚!\Qš†Y”ã['ÎWP¬ÆS­Ý *µ2ž­ZV„x®”߇"ß™dÆÖDÁƒŠ‰S-XÁ‚µÐ|È+†!Ñ Aâ‰ÕÔ4…wpö7 îЙ ¬*ß{„ÂNäNJN›g%wÞ´‡õÂL  ðZ1²ˆGOžB&¼øûÕ¹Ývq»ˆ:ž¤ÖF"€¶€¬bTVönß…Ñ«jÝñø~­/ÁÏvEú€ðì¢w¸øÑ¯Et?Ï~éãSgœ¦hG††yx€ÎðÀ”ò³þˆ=ô¸ÏGke«ÅN&¼dj¬](½7¹=ê"OÍ#X©Ô³L(£ IÓ„ÝÁ 'ѽ4Ísâ'F-Fpz; Íôb‡ažÿÒðÛ/ÕùÎ.©¼027 R²ˆýnö9™&`h”Eæ¨çÉ>p’Aë¯ýš/ž–ˆk$Ò?¥û­ºïšÓOYJÆÑü¬Ì… ùbLÆøÐ é_Ö×#ô¸ %ƒfÿæ¢z:^µÇò´¸@çˆÆX>i:A’h¾’³+H7®×²wïä¨=¿ó>(åù7â¥hUœmŽœ×m¶Ôíö“…ôËîi>Ú^ö‘›í*¿é¿tï9D‡25[˼ðtçãð=Ô3㸴Ƕhå¦Cßóý¾Ÿ…¹¿UNRl&ÕÇu$µ¶º—Aáý¹7˾ÔV]¬»I¾jÿ;P;#mõQr¾z…|Ù%•ó½íµÍDùþï=Ãm :‰jœ¼2SÉsE'K Ko¾Õ¤ \¹^™Òº»70;ÎðÇK:@¾Êetz^©¡FåÙóê­MF@Tl4ÎV/ú›ë¦áB!ò+ÆÂFh+oˆáYˤkýæ´³Ý͆]MˆÛjÚ‚†óÕ}âUÇÖiv7P8í¥ ¦ìç+ù®#X9O9cAïéÊån(ûó8)|INñxîB>ƒ7r§*óiÆéŽEÙ¨ƒâGèêB„²¿#" >yp“Û) i§g¬Îºûâ2x¦'A¹P–)'_‡ î VáÞnâr5£wÂþ@qEñ‰0Wvfc¤”´…ƒd>!ûÝï ൠ@PÈ¥û¶èÜÚ5bð<íøsÇ™&>2Ù‹§”ÇO+±  @b{‡È(É*d—sô@mC¥¾#Ë…^ãIîLïü¯*xZ£ã9v†¡ "Ÿ6µ£2Ä¿ª©ÙêõŒ¤ NŠeýM=fŽVr,,É~ûäÝ˱'À˜Áf›î„‰ðüdœ=ŽMº®ÛÑw”8ÍwŸg;IJ†zp j¢m_}-’8ha» N±G®=!R.mñ‹²ØÄ÷—š‡ãö´lZ¯Õ3Ž÷¤É”«é*=5ÂŒwå\àW^Uj‰Öc :ž£jUFÒG¬à°,]«føªÌ2cšt œrŸÁý33¯Æ?Õå…sÏÄÜ ŒøÏ«™áŒb|ϳ7ëBA·ø×GqúÛs½Ê6TqüKâþ´“ÉÆ¨ Ȳ©ÁÚ0 "¾ÜþÁœ˜iÁó@‘)è5•,à Q¨ˆ‹}Å”HÖ§þw¯g‹“¼dŒ¾ÏÆl 7e@ä)N/¦³cs’CDh~õr¡‚ëõ¨™žW:žúùÉk4û‰F·ŠþIc:ÙÀl$"ȴωu ¿Iï_Øþòþêæÿ,4øýxyÊ×j—ÜÛ›½'íâXx7—úÉØq¦3¹o/«Ù+9¿º},‚V¶êF!ƒo°a,ˆƒš3¿#Vþáƒj5‡ìÈ?™Ÿe';•?¥O™´ÍºÂ¯¬ó¶fS>j?KÙU âi‰?‰÷鎿 ¬Ô"¤ÿ麷… cZÀ­Õ¼@ãâ^x»ÞH#;Ú™Ôë“óTþJ©ˆ@j÷åvpâ\éƒ.k…›¥ág{Øùਲ਼oûÀN¿¥¬Öj~ÚÇóÙÎ90Š‘‹Ø›-ȹ •«¡ÜhETñÏt`‡ ‰#Íçæ$qHýÈ}W½$í©*eRÝIߣ{Ư/Å1YÌã×D;öõ§C$&‡6…Ø}š—¡ƒ¯œ“-‘¿ì߇5˜ü®÷‰nÌ`:ÐÉ¿¨ÛIwÜÃ×öß—±´¥ûg^jŸ9\ßã+‰CègºMÅØâÝD±5œ¦«*iÆdp£Åó$}/2"OFè[/d‡ô ~¡tÍ0€Hà²ù“"Ù²è’TÝ* Óc¨¸\–ˆÈÛWü˜Ts©fu²VK.ÚÃN;:CÕÛf=]ÿׂõ9ëxÙO‚‹\ܧ!ã⬥Õi%³0èsçê¼`RP@"@¹Ï·ècv»½jÅѱšqÊ&CµQ{c(í§»Ò·x/ˆyÓÞÓn‰¼>Ó‰y֎錟uþOžBGå´ïc0=ž¢{ßÀëËçÁ È<ÒfäÛžC¬ìên~éŠíè*Z¿3òCa­ú3_?'é¡©û‡‰Xu„qXC† ®DãœüKv?ˆ>,§÷Ž·Àåµtç½|e)/僋`†4«Ÿ¿±ã~ âÃ"öP˜Ú‰HÇJNé{E í#uI¼–Çß^ðs°D±ÊC¯d†-¤d‡Ïk Váü(L;v–ôÝޙ諡äè°ï¿Õhzxl~Bå !pl°§N0 gt [Ðq •PÂ!Ë7À…®þŸšòÖ*üíÍ¿WµÌßk»ÙðàÒt»›‡”à E’ J‘"L˜šŠ9†sfl"sŽà]Œ[Œü1Q:ž?˜ÿ‰–jè[oBþÚ…® P‡ú‹Ì,XDTI/RŠ+÷¹„D"yû¡Rq²\ É'8mU”À\?K^ÙœŸëC\¯{ÎÝÞcÇÀçø–ùä; ý¤'B¡æyß$¢}ÒÞvûX‰a†Øå Á³<äÁäFÃÅ~^ˆØj5‘ÞÜ^ž£ãžsÐ~oz'ùYîÝÔŽÝ ø tìˆDé¢}ÛX½ª˜NÀ)`íQö½ƒ„gPЦ5SÝŠXÛø«"<ucŽ©°SÒ{¢ZÖÃ~†‰{ê½KΙµoðže㈻¬‡SlZŸ%¸±_ÚɒЇr6 !˜*WhÂÈ´Î<£%—˜Á¥ÛÌýæAÏ"ù†VQ<ÈÇìE>–+½÷˜¹îï^ü&LË'¯‡¿dvIÀBÝQÝÑ•M˜9Óô8ƒÐOK×{ß¼ú:û 2[§Š\™¢ÆVõTÕþêÜ?‡@ô sâ 솷§š.ºB@Ö8áÙ¡æŸ0öÀßö ÎŽ@zæ¥Ç Sëëœâ³_~ᎧC¤Îħ/V ×ÑPèP®ÅSdU£®,3BOµË•`üXÏ-¯hêH^‰í÷.µÿh@òØ1rý†ó»SjÁ`¶‚êv݉§lû5 hœÃü@‚`­å9r1ûáÈw¬ ?lt°wû^¼™šßÿ.Oò;¡¸Ü¤7ßáÑ!œBÜ9”0ÒŒì/{Ó l …H‡;CéYRo½=oR<-̽_F­aûù¯7î×!(CC‹æeÉ%Žp‘úKæÓß„ž b—, `Äœ°§m›B4‡°²lÕØyˆ8ÜÓÚv&7*GÕns™úáàí3ve8¼3aéÓÞ9æÆÉfû¨Ùxþe¦’Ú7K”<·‡1û !ý¨hìP€dÝ Õ` ðï„6nd„'ˆFæg@jãC½óóû¿˜ÿçÝPäíTÏ‹°Ìoé÷=]×69uzZÒÐ<à76µ‰ —¨q»\Í”2ôÓ¢å³/”Õh]œ'0tHSµwÅ%«Uaæ©ôÚY”kIÑkZ¢œ_½–SNóuéñ‚æP‚Ã0»rÝ¢g`,IAùwƒÉ–ì¯}ƒ¤¶^¼Í¢è]Ì|›€+Š·ŽÆŠkÏîFÁPò0,¾õ{q L:¨´×ÞOåѬn‹q  <ó¡3Eè@ñ±Þã:.?Öéq¿€ ôZçtÀs<;ª”9ñư²U»BQôªýJÚ‰ ¹q×1[Ÿ µ”ò͵N§®•Åá‡à(·°™ˆfÍM(ˆ¬ÖξRT Å¿þõ¯ ¦\¤²/ðg`dfO‚N]SnÉÛ¬÷n vÉ !H®‹)ýHÚ’_“Ì×*ßÃåÔfVXî°Póì )‡Þ–¡díÜã- уÚ¶JÖ²Ûʼn–>ƒß©Êض¨Áã{ºÿ"‘ ÊÜÏü§'€Ëof³­CZR©YØ!AÎ0:à~XÐdÐÕ¡Q®À©Ö âˆ.L€@Jf“Å¡¥£/ZÌ#C«Û×{êåæ6ü'ê+Ãѱ”” h±‹Þš F“0µhǤ:Ù‘M +¾,áêZÜí%lŸÌ¼wäþßq¥üaŠñɃ8ÿØQ$ÿ±/´ ¦2€ =F:è>{%mg<.ÈÄ0B7½HЂщ¢CyÿuW(û»o{n·ÁŽ)›\ÒÛ¤oe@®¶|f´vÕ1ûÞ2f¶ÏsC¼àR9-˜{ ©ú ]ìÝÖŽ±ºmUn;þî>?«0 %Â<Žq£¥lÂvØvë j|Êg8ƒÌIXY…è%•Íqi$í‡Àº˜±ª§‰D †ßₚ?7ÒqÊúÞ7­Ìý¿k»í´hf2>×½’uÒ‘¸|‚aÒœ9Ÿ×"N4¡°W¥méybB¦@Èå>ÖpM¼.—MºÎ½ì§Ø¡W¨`9Ê\¢î@ˆÒ?˜ ¹¼o_Âí*³–ÏÓûu4Fi % ùá¡rB_R?^ׇ~$”ÝþÖ~«Îø¹Ó•êQ¯$ »ÎY¦vûþ‚Ï$SL{óÿ4¯UŒ²ÅÝüÝ„J¡ >¼-Å'pvz¦…Ky?T¥Oqäm¼ùy¡žW[^ËÕê'î~Œå&º¹Ÿç]Ú{°ùÀ©zh*j§7JLž¡l°å­í«¬9Çó÷/‘™¹n§¾L 9_ô!Q¦×Õ¥iL¤mŒ‰Îõ¢í”ð6 Úu$ÞŸáðB̦>‘åØžJÚRز=}75oe·!™ïCa­Èò¥$- «ÞE¿’û±€<ò°¿û:Dùã„ 9…‹`D´pD/ˆâ°‡G2ºŒÈáÐØ¡%zô74µÙ‡þk¡Í+ݲ ×wµï úʪ=È7Bñ­q[a½†‘¥»¨ñ~‡Ç™\~‡×µÏu´ ÿqª™ïàjŽÙÖlܶq 7­Cv]î¼F¨àï‘-Æ/Žãàvf´"8¼5¶ð}™ £¨Ï›¼·ô | )ÛP†ݧv¾îÿdð&NÿÞpü‡j°-ó\3˜„ºÜÒÁ*zDOÊ6+ß2qª[‡ˆeLŠÙÄèb¶~ßL“R°?°°`Ïô I;"Â`º—à)0ªÊ»²Oøèé]¡ ·öàŽ}Å”lnÚ%Û»; ƒþòF!·1=øÁÞ½J«Sp¿ »¡]϶}çMpZ¦˜ëFÇ¿,Ïμïéþ:õ“åRÞ3Ú»£+KTxñ¯aóú8›ßo4€éTh±œ(Î+5o±hŒÚ"ã'µÕš¶Ÿ3f*–ùäî·XýÈ7ë‡Ñâ ïµbNíÓ›¨| ã¶rî_¹×à{KvåaŒT®œŸß(’å”>mÛ#¯$þ®µ½>$ ò)*ý@aoµ÷6S†X`ÿñ• æ)S Î\õ«ó–¥Þ%¹­|þ.gîí~O~þ" ”~ÁÞí“Jçc|z"è¹×W{RL2kwäÓ‚𕥫à{¸v­õlçOÚ”ÜU+ù%ÇA;"Iõ'q;O ûñ½'Ê€&a ðÁçl½í—F·¤¶Þ m>ûàýéÝî;v›ÅpãµVÞEgÎÿOò6%l,@i¾^jD@ðä{lí—Ü%%\Ÿc%çFÔàba/eûÔíLSgà SµÍòp€ÿÕß Kˆ1¨¢2Àô.sJŠÐÕÙyó–I%LP³kÕ³*~ÛUÖO÷7y{^¬”ônKa»ú>ÿlé‡ú^,¹«  O¥-˹±9Î*7®QÝGŽÖ‡kþ±®$U¾0Ü-ò+Jæ§o-įâY]Þåõ¾EöëÖÔ£$ ¾çT¹ñûr.wq ÞÏ÷ÛºÄh k®%¡ÝØ’ÇôËœí¾‹Oˆù!¤ç¿øÄPøãÎF¨]|I>c¡lhÙLtàl|¸ÕFàõÎéý͵êî rÓª}±×¾B»ª–Ït¤wô,^I?#€ÿ¾Ôº†LZ}ÞÙ4Þ6æ ~R(!}ÜœLS‡r¶ P(K{ñ”DzÛ´®Á"* u½Š×&¨¤˜ÝÎ7+å³øÝùÖòq+„¢-øt³Úÿ‰el2fò”·9â5VÇ´|^Ä ¥&”%­Ö6ÖwO%µŠ°ði!e[Û[û²îNÜÙø Ͷtî|9ÒØ@œÓî+ñ¿[·.æŠÚØ“-Áù#ÚW E·\½áã·²X&ÃsjöÛu”ÛXÎ>§Æ–>ÅíU$­SÿnšøPo.:ùs \+ØãjÊ8¯ÒüÌr¢Ç¥éÁ–M¦|ÍÑH™O§F•P¿1kçý>(ôÍè±ïrW#,œ«<žËíWû ‹Ú=Â3ÏØþ×§œJ\(÷±ñÖ²^'otxÞ^?çŽÖï¾3齸ÐÞusqéÍÖFóìh‡f­0Á$ /¢Ô/i›m§ÿ•k*OÈ’ÕmR¯B~“*w¬reÍÍä¯;»ššá3óáûOpìÙþóõ‡Ùz? -;wÕêjü/4€È Jºvz¶ƒV G>±ua»yzU„®ãÉKܦ´³Ù8Ö®WÌy¾ëè!ÝËê+jþ'BNc”Öæ^ο{'Ú¶qüÔvñ¤˜žçROUkiŹè]òîõRoiÿ ÍQh"8­)Ò7EÉQ¤dÆîû)å\cõ I#.|zæ¿?Ì7¿«ý·• ãt¡£ÅäÿvÞŒUïU(W_Dò¨  ¢ ¾1{ãÞoI¡Au‡ËÅžyé5&?ÙöZüöK¿V¨“‹¡€)ÅP€¯R<…¬€òð­SH@Ö‚ùkÌm_ £;ê’hjý_e®ŒúwG«N±ù7J:Z[ÄØ¾ã6'ЩÓú¯:4&zµË Ûý°¨BkzýÑÎyÁ¾•e$Ñ|þXvž<¤<¿Ý$›þdÑ9*¶CÎö¿«…õY÷Kÿâñÿ&ÿbG"ûæŽæÔðž7òŒ6¾Zõ)u;ÏKÉÁÓ•—Åq<ñì\†Ð[ãjþDŸêuµÌç$›ÓÄ»LW†¿ô×IìŠ~ó¹¯Â9ûšØxLÕ8äǽ—›Öþ$}´£ÂsøfS8|ïè¹tL°ÌÖ´œþ…~~oßüvR´+=zšÙûžX¸L3ô;Û<´BˆŸËÒЫUKÿ®r~‹Zi¯‡‡^×G%­]¿rÞʈ)Ï(+ Ø¶ºIóõÛ(‰2¦ô’̉hy*-­Ë…k0ë2ŽxÃä¸í³"G©xÂÅn¶£YJãûËJ«®×‹M…s!e }¸Žb58KÄ †úÑÈä÷•½>v£ öå:/(弇„‡üAj"m|ŒŒÍvUT=jW€¥—Ä^îäˆ+uÜ“ºBï¤Q˜Çaaã°w¹àu©°J¾‹(Z¿F7üÙ³,…U7RËTH·­(ŒK3²’øÁ“9î¹Ë’z…OÎ}@j¿óõ½ª] N’R®>œO§UØáÖÑ©¾S¾=; °ÀpÉ8Ùr’׉7Q‘F! J u£˜µ®ª'~‘ïg'k½ƒ9´Çke ô¤~Ì’gƒ"jÌÈLcZÍmÿ\‹ó ×FÃ+W}³Î-Õcf@惾tâ†òævôš)¾‚£CE1úÆOäk:ÀEì}3¯ó|ƒ­ú?Tïx}£ÖÃÊ$ÀJ%(“û‘¹~$俇L–FÈåwfäQ®*2k7±í+2òPîÎwF5²9»#fá%Ä3ÿ[wn†ä8€*ív¼|ͪç‹ÙT~8kˆ8JG“ïú­=¶`'X^k„H{Žu2yÕ’ÑH#©3H‚1;v·71Z1ª§mTZ}qè¬Ï,¹³êTívnþ†[}M TÞ±4¥´;Ò„u3M µêo»°Ü%MtLS7a9)A«ßÅ‘õÊ´‡ø^ÿ@çÒ­ FP¡b_v”–y‘ÎŒŒ¶y$ÿ¸ø´@ßâøöê;·‰`µåu{-:-³ç­í·¾LêOZe,$  *æµ¢s»ëà©Á¾‹'$y)ÉY¡æ¾îrÞ”ŒÈ+D÷ÄÞnz3áÔâB|}f„µÿ£©F Â@ “ú4€Û{U÷«glwvyiäžÌ“±ö#ÀÆÛ©~[ÉÞ®gßX%|GÖ»%ÛÏév\yã•…ÞIö ¯¢Ž:¦?„ÿÇJ÷"8{'ƒ(¥>E‡¦×a)2ã:n΀ç ñ¯:w¦ˆT>Ó¯v-åÅÙƒÃ!/Ê÷,ˆþ±»;¤?{¶}çª1mÚUé„6/?ô'mЪsW.Ûˆ@ý³Qþ;þ×ÔÑýêG£×xósÎg„}w#z¦ò$æ ‡ß½q¯™¢WE³Ïäm=òU¿}Ë}>Ñ¢4P4ìñÑ7A"çìåÓ³Â7M/"ô[éòõ’´ €Œ¢ðÍú t؃lÔ b;p3™ú@Š»o¥§ç¯’¦‚ƒ_–ÙÕ€ ¶²D–4ó‹Ìh1æ)››‰0¢c'Þö0s59“žhST·¦Å ]g1¯ºõòm ÆãmA[üʧ¹oyépd:´yg{gMŽ´ækº7þþ‹ì±_вÍñ-’¾9¹Îiläµr/Ü|ùñh>/…Mnëì§›Y[w4~„{÷´›ˆŒ-’›Où] ¹Z<Ô¹¤Ù_mÝHG– ÷ sþu¢½:úž n9çuª[t9#¾.Ñ¢xÆ–åIÎÿB‡­‰‡ˆ­ÿa[ä:nLY¬JÌ‹q&Œy +Úÿy_sRKã Ë)›B}ÚÜWQE’–îÜcmªó÷þÔôa¯h\K®l¡í…re. <=©”åß)ƒÐ¹ó½Rü<óÛã¦÷tݔɜ1ǯ€ qñÑ…dÓmT¹è–cX¼m§³Žs~ª5Ú‡ˆ5¨}lÁéZcQ ‹ŠÉ5Õk^ºOLegZ2½z õ.î]¯#â µY¸dvÔjÖ±¿–5šV,æ{³¡§ü¾9„ °s¿ã$îÕs2õN“™‚º/´yD°UÓ¹îhïA>öGßýG0‡G³ßçAÚ77ªrŽ«•4;RÐÂC¨d'1Q›bëkfÑD»ÀëHšRq²çƒ6IhéXWáՂÅMô´ûfÙn$l‘Kì…Nýš&a¿à ª®ô‹wН‰ñQÃ,YÒ¶޵©í‰`£A–¸±Wm~²Ín«‹ÅYp˜ã}Ÿ¾×aÓÈ,èX xØçœ“¶ú·Hl>íÿõ½ðªîæÒ5¶åéâ#úˆYïÕ6‡6žqHžeãù<Ï1]~úó^5íËu >‹M¡¢vÁ«ÆFËÞ `7ê‰'ö*¥DúÊ߃ÌtþÝlÊ”I'ç$ùcÍT?xº *lǘ-Ûy=2Nê)½áî?,xߺ´ìß=oÏÓª,ÖbJé ur\E¢§EžO Uw1þ-‹ÆñwºL§÷íÆ¼`…˜(ýبv —Õ­°QN¦‰\GÒÑo‰º’†ÈÈ2ô¿¢ÙÌÖêU¶4rè`gÁ„€òã« &¨—²k¸•¼‘Œ‰ª°’·<šUOŸFo]ïKXЏzqtmºí$Ýɘü°âu|2JÈ$ß¼b#ëýU=ân_¦üg U4–ïß}?CœÂdÕÑãr…=ÔÏ7c43Ó÷.›ÊDÙ½ÿ*oÉ ¾RÊ3Û Mß§0Ö¶’~tãèlÙ>•N… ̇¯oÜÙãDÍD_†¶±¹´pi¶›˜éUÜô‹~¼8i‡O/“‰yæÍî·~·‹¢Ðó'ÚfŒrÃ>…óöºÿ§øÀûó ’˜>hÀpúOm Ñ–Å5[‰Áñifî}Ö_~¡‰&Öí°±û:–'dÓâ‡Ê[ñ¨«žÓTÞ.󃲒º Y@bLÀ~ðøÈϬÔ#OÙ×ÁbKç•ïá""{2˜bêx3· ‘Ï)`¸–íWÞz')ìy$ºcHP;ƒ·×銫r_Q¤ÖF{v—]ÃÚËyôpýHj “íåV§2{£¥OŠÍ;Àmˆi¹œ–úeÙ›;‹¾ç«,üO½Þ¾BB])ërrêe9q 'tPøÚ•ß ]éz›÷šðæ=Us”o'ß+Û«sÝW[g¡wù,:ÔG2Òë-àl¥œ€\<‘í÷ÑáMmµ (6ŸK ìƒÛøâ5‚*ïÒIÅf^j0Ãwça€@¶Õ€RÒà¥dˆ3ìžÔ6k<Î?]a‰Ämú›Cbãõ¹›tŒæxýz`oõõ4ÚåkÍC^6£Áµªyê’d8±–4.‹z–üNÄ}@šÙ=ÚEž™Jš\I+šˆ¹ㆺBA–Z_AÀê5´^Ú©vcY‚É ~ö6U”¼'¶U ×9®}™`ÞFf#upNm¼níöEˆ²OÌÈæ@„k8`y!Úf“§×RO7Dž¶O¬•¹_ù÷A · áUO|±ÁÂ+¸iJý€è-*ú¼Í6ÇN@ä_žH=Òä þPM¯‡Ëf:7!é}¥%+o¨·ú=ÜDÖD–g _˜Pž­ã£×°ÑD=¯ebð cù‡º‹”sì8º×7VvR"?4Ì/÷]3#ÝÌÈÜ]gè}7ÓÈv>ùÏ)`Ó— 8Iho¼¢x2ôÀ‰ËÕÂX(R;KÁ«Š^~5ôé#›*AþÇîîS)×>]ÄçÝ p38óq@dÇk›hW³R ÒÒÖÈ^Ñž3s¯ÕhIfêk¥ÍiAEƒØ NÆ$ãìý}Š3ò1ƒyo¼,ç—ºSk'!"­â~‚d’üIÀüÉᯣ áIT„ŸfV[’KˆØ´I~g XÚë <.‘ãƒOP߆ •éè(¸®÷^Ë=Íâø¢°a«g,?‘Ó=ö9®kjÝGÔÊ÷¦#íP³ªóã›ÁO©õÿOÙýX—Ù•5ôëÒKÕ¦=ûHœSÊ𡑯z¨*™'ÿÏI‰¥ÜÈ?p4íŒU¦ë'úü aߺ4’dßY;J ÿ=΀$W6<}Ýl$ü_ ÿ!ª½e£p® ¥•vèM}ÒS‰™Áñ7)úå"–@œª´þAƒ)jêÃÄíÎ0‡A¯ÇéÜ3µ»žþÂýj"Ë7–Z½ï†·YÞÕYâ´íÍ!rzwõ>Xjð2±ÒÕ¿°ÞÆ¿«¾a$åÿÃo©ò(ìYáX¹³ëp2\lö@?Ÿ?rUY…ÖƒrÁÚÙÚÊXãÛÌ)}GtÿkF~•6¸\swŸf÷X£áõ2Àü–]eXêÞ>Ž6ªÃ‰´÷×I㲋+ã5¨GË\FÛ3,TÍ{q&¥Ó-ÀÖÉú46Z_Å¢zw)ÂáÔ|ib¯ƒ’ŽÖM|ÀÈæSìßqðFx¤¯gr±·þ‹Gž=ƒIœxÜWH°TÈ oÓB¯WÊ,øšË¯ë+~  `*6øÓsÔÈ}šÎE³`ºh0ç6#.mˇ®T“ûÒqñE@ã,ö^'7’»°Ç½nh?ó}t“#«]9½KÜY]ÎP”áAeˈØf!¦{Þ0Ra¯Ñ&Ó<‡óë¿dJþ;œ®Ã=16üËbÆiûÔn?G˜pi—¼-¶ü5$ÔcB9ûé·¤Uûñuìc79㘋ÓLuF³£µLm ÄBO µÕÀŒ)ÐùâªX½%œãê³K< i³B€^'&˘š¨–óx,Û·Ã*yÇGúN¬H ™@`=LŠÂáû³~‡ñUßAFÌE0aWÙ‰ÔWÍdq1úàÃ_6V)»žZN/UU§0ht ]èŸøR×Ií9¬•Ä—¡˜*׆H“œ 0á÷/O²iâ¹$Ê’…ŒíîûßÔ|Ö­÷ÉQcü®qØë?O ró,Ër™ƒé&¼ÃL3}K¯ø´nŸúmEÀw0ˆg¬V+_ù4®NŠ^ˆ®K´¾@Çž[û”õ‹>yw-ª^7¼¬Ò¤È âãg3GiýkÛnt73. &qÅÍ €É}ËE,ÿ<•h˜S#þÄú®“ØáNROP›õ)zäep“¶ Y V`ü?È=ꆃØZK‰Zn•Ýt®+’d= 2Š+]‚À9CWàù^8õÕÿ¦yì|ýIÖÁ§pm–<"OT©°ÔJz)šQ=éCÞZë}pC›Š¯L¬p9\4¯jgóðYã$•Ÿ?wE!•wÑ%¦k•ð´œ-J,K§ÏvôÈ¡çÛËCy$Ò.÷néj·?Š#‘«`ws¤žŒ•J‹ôY–—¤›Û/[uºô#åÖ€ SMym©ÞØWµÙyPß. &Œ µ^7­êëñ5ïù7tmS¹ )pât\Í#¸@À”4Ý’j~$À‰ò™ ã"FãX1;”"*Ђ½1Xáá±£²˜‡^òÃ4uÊí† c Áƒå·ñž¹u ݃ŸxŒO0ã^fe½ØÚGdíXNÀdz¿$×!úÈúCUØ+”´;áÁÑ3Õ…{sù²¾MÅZ’ü7¦`^í„¢32pÙ$?ÉùÈR‰‘B¡XB„ñØŒ„‹LÀGF6&EŒf²1"P°c`À 0¨CœA†ChÚ²dÌ2Tfa[aµVJÕƒ>Ь•ìÆj00Áà Ã0Éo• 0(nA HЄ„Tu¨B²B£eöЬêÔAj°¢'Œ„}†``X!!UÜ’PôUIJaaDf@ ¡ pJ‚ªÀ*)\aPP+7," ‰20Š `i`à` ˜’ˆ”3Œ™0ˆƒ&¸aDEd¢¨–̃K" €Î0( Ã«3¢ Ì( Æ0AD`ÁE{ì×ìÔ麛'qý\˜ú¯˸힑Ç* Ë‚€ãÕ—ɾBj/Úvf­‹Ñ³™©é~ ±ðd™…È“@Út^6ÃHPú|0À×{ÄoÎX_äÁ‹P³@5¹"r`µ Qft¹ .À{€Ù\xѰDž{6Ž®…‰Ð³Ãi;»]?NTÄwçi°3ORxõjZA¾}šW"®/›ïãÆ¡ˆu=¾òy»AR ÎpL¢£ÜõW­ËÖ½VŸQ¾q·P­îÁ§`ÁÇ—#Z X‡Läß]‰Ä¹ö|~Ã}Ý+¤ñ¹;mÊfëÜþ«üU7°Ô5\Œƒq¤o¿¦åuÜÀÒ·ñA¡E ƒ ˜@8RPWò1AY&SYÏâBÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿ ó>€÷XwÜû>xñãnî [Ý”ÏyÙ¹½Ýmíîúnú»×[jÏo[Îû»Û½{˜æ=Ú›Ü}Þç]Þ»ïníìóµë»j×[·¹wsí…TÒž6©‘„5ôÇžišpü܈Ü…¢Fs%üFP!†‚C"J“c \ ¡àÇcLÉ- 0Bƒ¡áÒ4~I’d •¼`”€@ ¤ HŒ€àõíõXM6v£>ëÅGØîòïözog+qÜ×êåhîú:í×fªkG)Ïʳæc”ðÉ"Ó”mâ‘ë¹)w"ßçŽeïÕ^ïž©MÀ©V·Îàpú Ýÿ¤¹¤9Z§í¥‘3•ß5Ä¥™“²8´§Ýoè%ü ¦ œ 8I§Ñ¢*@Õâsà]Ìz SËÙy<½RC®2%(_¾Jocóɘ.þO5ã-]ÑšAä®è1þØe•ˆÊÐ!r.W厚¼®ƒûûf~7ó‡Û¦ï|šBz0›—ÓêèÖ<Âø-QíôIBú› 9¸­ø-2”ûÉÙ,מ"0’ÓƒfdlôkCŸ‘b“„T 0Â#BB@µ0ÂØŒ"C Ç´Á Âa†  !†8pVGFà !mÇÃóÕpð€P$ð ŽødCÚ‚…ž‡çŠ4Ò4€IÀº‡@ˆƒŠ9D@ð" (ц B àÀ’FäÁB ¸ÈIÁ„l b”’ŒvG 'à ᅄ€@…Èa 6›v<„^þ ÈA-§9À.»ò‰Ç†ÁÌŸ¿u=ï¹¥€p(:ÃÂ.—ô¼<¾Ãƒ•qLÂBKá`ïôú›×¥âÙÌýP  BÓ°\„0«†† 0ᇠ8páÇCMéàŸˆ`…èñõ·Ià(ÚŸÀ6f‹ŸÊïöY7C+`ø>œ,‡ èRÞ44ϞÅ#vùa6ì Nd3$„æ´Ïöïíp|g›XÐ ŸÙ@÷‰Ð¤† Ëø˜J(gWÌPûP ú9ÊS§òeñ_‹â Á€!ÈpHç°µ€Vv/ó<ŽÁÈb5…óϸVíc„zÞÁgb¯²·ËôÏ6;ü3‰œÄ™ þ«€ÓÃg)/^„@ŠF 1=,‡³iBMj£ú÷‹>BoÞ½ùWE/X ç´þ> ”ùˆx™Ä”ÃÀ ÝÝÈi¶ZÂîÿX~=8Yµ©[ö!ÇàÉœ³trÑ䃹Eóêõ¶GméYßG¿ÎØXNãÉCú†ëç‚$ÿÛIu´ù“¼›)>ݳñiûÚÎöµôQšµÍÑJ×Â峿ØXspÒÙ¸“‘ê)ÁˆÀ`N4¤éÆÇh¬¸EŽKƒÑÌs¬"IÙ—:×/⚪®/ê•«¾öwV½Í4áFð8„™Ö¯à˜¬ü8xí ¡Œ¥’‹: nï:™¨{®1±úí÷jGÉ€±l‚Œ@’|NÔÙµr#YSíÍ?*pܽ µO»õKÕÛ|:LÄt,¾f/áøæ»º˜ÂÚPÜᡃ¼Â–#e!yÂËþM|8Ž•î£±ãhëoÒñþå\÷ðÀ ñ$SÌfóü}”ÆrgêîOmt—mÄX %ÅÒñ«8•‘Ø¥ZžŠŠ=¼¥vŸ(2ý£NåmcîoY¿wØì²až¤÷™aÔIG G²$êÁívF°Ð~àq;óÏ/| ·áãÎåHåN­­Ã8w# -É0˜É6CøÅ?V1ùEå„ Ÿ{(@èUh°Jñi¨CG—æ|”Š$’M¡›3wúm¾Nç“\vÕ„”KÌ%nd†Pã%Á0ÂŒdl˜AºdµÁÚdÌœ—¦ßCÿL%VÉV²F ­Œ‡(åXÀ£˜ÆvÜW2-L¬˜KÛÖTŒ%bË’Äã$bÄk˜3¾¬¼ïÓQçrù\S/C¯þykÅÎ;?Í–íòz´_‚·úÿ—jY[”eúMjBµnJ§N°sÑè#ë›pø®Í›fÚ ¬MçQ»/²­‚,"¸™³ªtŸïÕž±Z›¼ê¾{ ‹¢ØÉ1 7dµ¨0Ó©#—y$Îô©! &Q÷×õ.J؆^j"‹Ü¨Òøy‘½ˆ¤´îÂÝð}6õ“´ØÏ²Ð|\Ú&¶6›+h¨Ø‚U¶õ³CS‹§&õiŠÅk»¨› :-óŠå75~ot<f·í¡3Ålíuâ&GíØnQÕ©Iëh:ÆëRŽ3ÿôdt¾EÜPw¿ó#ìä™zãÀY²ÏûUâiþ.H7õäým‘=.fOewi¥²ö¡éÍ-›#3¾ò§ J÷³caÃvlcuN E·á’ÐÖÐMKîþ[²@¹Á®½ZèisƒÛ’Y¾U—¹–ÆUuaræO/\ $}ÞìA1 3±Em…WŸ«ÔÓÑŠ±œ®ù«ö»Ô"¶.éôJÓûbR/n^Ts¢Íʾ·?=TN‰%™>‚þ¶0—½Ñâ\Xø ÒÍü'ß×ã1Á°Çåk-´Jú·Ûz%:ÀöDÍç¡s&"€Æ$Ä®µ°ßÑPΠW] ì%B0ÛC(†ô(Kî`¬ãp:ZÕk¬ªPA² ƒ„bKÊ à Nvĺ,Duã´ù—†]ˆ 2|c±÷Ö\Ù¹—ªýEv1$¶…Þb’ð›€1  Å'Ê«;zRyw¸¼Kù¾ŸCÞáWµ¹a;‹«º OÊæ**(±(ÂúøäÐ? ÓÚ) ¯· ­³Ò¿qd¼éed”•Úàâa~v÷ó4^›è9ܷͲnòótíhÚ_ó_N;3Í‘«€<ÕXê°úV–Éö4\Í¢£Ü›X_æFKŠÂö¬„ÿ_%¨–²R©«b@àä"ó"9à€~&RëÝB2hX`TŸ»Üxv_×MT“j¹âš–”,r0ÂÚÈ¢î¢ë§¹Xd“ˆ½~šŒOçö×ZÌ%œ‘6.êyyo{6êÖ—P º™VQ°ŒLu}ÕUÌ<éF³Äàh‹6ܰ¨Åvei”¶›Ÿ»ßêÖ?9i•YnwßÈÉ1nÜOФ €:l¨A90({c³Žvt8&ºã.G}ª£Pý5lÄ+Ç»'xç$Rh„î¶§4Ora!ûy²ÜûЫ °–XÌd&»=GµÔCÌ¥µŒƒ‹àwj/î†r?¸ÚÑ׋Àñ’ÆÌŒkÈÕsõÚk‘*§ D3ëF:.î>TVJñ ÝPœ1 RSJ@ëZó£Vyá•Õî•£ª\Ç6á x9¿ÎZ½èÿµYØì^mŠ+þ* Ÿt•æ’ï®Ò…,ŽŒàËrþ§ñÛ‘M=%ï…7+mz—'*œÓ5l@fÌ.È,øØf‡:%–¡ðêso›qÍî:›ƒ”ÍâXÕÉ[GQÏá/Ù/Óºÿp8¼eh.—ÁšÐš½Qþ4ÖðÛg/ÌSŠjkº[ѽ{"Hnb4£¬~Ô}¤%L¯ 2îÑ£¼/ÊY,£úùÝÙ=¾OzÎKÓYqoý²´×ø0RäVUŠu€ßz½åÂ%¬h’kÖÚÝvÙuE¾gââ;_§zì¯jåb*æó žéÂÝñXMžJ¹ªo¸!B£ƒêÃ#›LØè’ó†N™’‰„P¡Ôó=¬ÑÁÁy–ão\°ÛäÎþ’<×›WÙ}>¢J”ûü”6Ê©~f6l\“É F‡íQ†ñv_}Ljޖº­ø‹—r™}½ÁmÑCRþ"mu“`òˆcrÑ^&UÀ¾šð˜éF/†\@ì1ÄŒ‰ÝZm¶l¤õ¯g¾•zþw)÷iª±ß7,Ç¿ uWjÜî B/_cÊN|ôê¢\”`ÿu +u"¦ªegÓm¸¿`j›¹X8Š@^;íã󑃴³¥ý¶wÍTÆuÔòV”rhOÂ÷¡äëäîi½ßÞj,{v%þàSÂ=#‡ªl ÿꞟ>š@á!²°”ÏB*rJ6Þ4µu;ñZ MÖz@>×dB2 DpUܽ1ŽOÄ à°7z^†¥¢rûB ëš¹ËñFp˜I­ÚÌ/;› Øã£ÛÜû§ .L@Þ"M.°Uþ¡,>¹ž§!:ª¤Þõ=V¥ä«cGð©žGÝ(„°¤5á¦F7cËË!©…C©¦?2ÖßY½ˆ¾'b¶y¢;k'l´k-ôì‚]ÇìJSŠ)~‰žˆ Œ¡9W¯2Ž©°sz º+™îÑÁV€®Þr Ö‰_"5PÐ×Ôpe£Û@ew¥ßñÙ§5´ÈsÑ ºÖHü‹Lm©F§•øYóò ’-ºy€Œ ¢˜¬´nˆ‰|ýàâ+õç¶*ˆ4Ìš%¥àˆmìP}¸gªÝTeª-³ölOÐÜ`UpnÒÙÑ!º%ÌhKïÔëOÜk+O§7YJ\t9¨%„Ã7øÅFkF&ÔA±3ÓÎN¼íýQ~Ǫ§G54§Ö«;¸èKÉm†wµñAâjŒ¾sÚ5$¤ÐXÇàTHº=KÃÁ:BèäËøT‡´çåï+N¤ÂY§1ÀúÏoŽÌ|LvÎSbYá$;Ö1,‘m7û‰K¢í"òÒ—¦AÔv²2:Å®î±Æt˜:ݲd¾6Ý” ^’FÎÚ20áõ³ì­cDÑ~gGc3Ôê:ÞO¥|4,CÖg”Ó‡cëœz_]³ø·lÄÑZ²·Ó‘Ýî¹ÒÙÚ9Õ£Ñ µŸšLQ–@„ÜåLv°…Z©EE%ýs'YyTõN”ÖýŠö×Ý ù*—[Ä å ‹óÖÝÈðÜñ ÞI´ÁiþbÄ®Sç…ÓúcV7r>,ލ¿[Íù~>Å“LùÖ¬ukÅL1R.M­Š*ð0&òãs"ugfj^ôq5²UÑÇ7ÍÆ•euó^-•&rHÖ¥Ú—á”Ï¥€Šžy¢œêŒÞái¤äûöýŽ´‘a•˜Í1?°ì;¿/äÿSÕ(òûVã½&¾³6Ôüî“ aŽ^©'B+¤¢K/äp}«Ôµ$]3x~Üû3úÃC›wRVTÐ=ÿR¼êirƒG§Ñ]Âi¯i¤d%#E±cïb]à?NU:ÆÏžß15û`†Øû¯IÇf\þÊ;‰C=cÙ}Ú'©¸šIÁ9’((Q°eà¸õËíʤ åá¨I¿óß°ñ}“QS°îÒe—(ç öÑÆÝfª9ìS3˜øòî@:“ýuzuÂæ¡'ß@rÁU,£ÄÄ}îºü¢J.¼³ì€ÏŽŸaü}%âWݯù*-ÚŠ©¶ªæ!@-ˆh¢ƒãlúGòÁ Üëþ¤Ü†°Ï‘í !Œ@FÕÌ×™¶g£²M²ÐŽÚöèû¿YŸ£{³Š@§  DЇ¾Ã]l5ç=‡Vb·s¢a´f@ËÏQé½Eò¾Š+Ô'“œš¹ÍBó¤¸|ÿ3{}ª1¥ÄÝÜÌH]M,B»¦øÉˆÞâBÆ, ì|öÞ'­RƒŠãÀò\M“œYÃê-è’‘D±î6•[ð…¯ ìs±¨€‚ßV‚G0†¿ÎÀ¡ÑA@eGîúM9.7<ºhÄŽ–8Ðîåõgýø9¦÷+´ï~ýjˆ@}¯ôWµ‡¹ößùRPY½(0€œ{`+1Ù/ql1'EŸ 'm%»‚o†Ž×ýëöŸ àÐ ˆp P4•àfx®•q±x*«0¿)©pˆîC7rNòÝ’¹Ó·7êñõ?ƒH|˜Ô™Š9Öš°¶ h°1´~áu óLAm‡È>tN™*wÁÏ*€<¤`8̪÷–®òyÌT}èeR@xQ†”§( åìiR>˜½'Í#ál88h=àœïÀÃ×dº÷E‚[Ì@ °ˆ7àMÅ›þΕu& ;¬ò¬3½˜Ši%Ê §÷’-K‚à¸,„”ŒMçùÀ@MTßãp ¶Éû#ôÈCœ·ßõõ¦ØñQÃËAùH“Ï»ÄbÞHÅö‚`-¨âés°XAÀ&Ãöóûòh™ÍáÚýò‰âœv¿RTiv^^!·PºvfP”ÿåÔsÄÐ ¦°¨b#9ážÍîêwçêº Œf(æÃ0šÅ'G¨µ=nr£z‹ÛÞeº>µ™Ü6Úçñ–á ‚<Ž”$[ðö/mŒ%«äy®Þó— Ó$­™‡ÿâî7 Û•«+pÅÒçžÕå¥ÒKsmR?樒•Øà~^Žßû1À¶2^ìƒNè¶™¦ô¸}^¯í?в©ë`-pž4¤tNd³_»ôÙ‰F(1äTË žƒÄÚ0¬MÜܵïz°…”xÙ¸mþCV)˘ÓzoÔîáˆZ¿çÂ?\ʘøÞPsD݃ ·C_! –Á™Ôú)Å}06²$¾,I‹u:”•òlìþ»í—iÉYj:ú}¿A¡SEÄ'·š¢àÐÚq› Üùr‰…•r\ì›—'C.6>G{l…m4Iµ©ÿ).ë uÎ:ç(ÉÉ/Îe~6F»ks¶2À¢Þ jâ¤\5SÏ·},¶×Ó-P@¬¢vÐΉŠÛðZïB@Úö6¾ièìD•™oä³zñ¯¾æ¹9Æ©˜bŽüÖ^à¼_lIF…‚‹J¦Ÿ¸Môú­¤Â;_' ´ g%*×uÃl£Eø•m×õ­okv]{˜G’[ÊÖçº8› =×çZxÝm-uÅ®KïüñýÚä§ ‡¹ÿKr - @+q䑱~ýÑí‡õ„ËÙò€z߃C×2šº|Gœ¾“g… L!Ðoa¹Ç8»­»4ŒÏØu\ËæcÁþÈ+üµå6AðMcäüg¹Ú -ü³Þ7P¥‚wÂvæ\ÍÆ`GU¾˜¤öº¸ß«q¸–v”¾åµLRå,¨ÄÖF%P•ª¹b„6Ug›§oœÑži÷¡5ÈÆŽý€Í¸\u’zd· øÕHæ/íÊšÌO+b,u 9¦YÛ5U/“ïÄžƒ©~¦¹ÝHäyàAò¶Ñ–c–pÝ”:•“µµÍT¦•ZhþÚsä 6TcîÛJgãœöz;oS’p{0p!Å7CMÜ€ŸôAKZ%2ôQÃëSz»·ßÑÇösaË­†¼‘òì6‚ÜÍ•Qo+ÈU‹¡ØËþ«<Ör-¾‡­äùoîP)ÉÃ}íE˜Fõš«öø2Õwž™;¼Ï‚˜è‘êœêHá&”Ñýš '¢úvÐèâ¼¶ÔGªß‹‘PÁnSº/ímDM+ÌJVÍ¢¹Á^g4ÝùUé±éùúê2pkk˜…æ0Š«¢j™åí‡L¸Õ.×G›±ÜFóÝ+ NVÆ^^Âï׎Ñé@ù‰²¸†:T‚ë 2î;ØØl§•œ$ÜéÞ#Œ:¿}&ª `u8k´vj7"=Ÿ×šçû ­ù3mÛÊ’¡&óFþ$°»Dk ˆwÛV=£gfgß ô™Ã¾njüê› RŸM3f/Ï5OûÛRø—àú5Ïëè )ZŠÎç9ˆ¦•%“‰dw.Ïð,ê’ífTÈK(%%ùêsfÉ÷qnnTNFõÕzIïʹñüÎÌbå¸ßËzn)½eÀƒw¬¸Aɵâ½Ó ¶\’½·Eõ,y“ç–j’òx%6ò rNÛ{ÒÒýýžï„áw3ì£~§É›ÔZ¬5·e”Ã’yí!üÁ<ؤ<ïZ5|Ýh‹ \Åß*µúN@¤ßn€qâ†Ìée3 Þž¯¬×ÂcG?ŠÎùB²¸@Fàv†åóû·¹mÂéLN²†ÅãÖŽ½Ï_à—¬nµaéêHÁ£ô±|ëo«UéÑûº5:‡™ã+2–x~R• TÐÍOn*}ãQzwš}wIéI5Ï´;p {"avÑìÞØþ·Çº¾¤_'\±”—8b×<Án›6ïTŒ?;¾K'³No]Wä¹ÄBõ#9ªW³¸`óˆc0TÄüï//S ÌÉ÷¿WI¦Ogö‹ë_ó˜¨ Ê>\|ʡ۳м† BQ,Ö#þbJ_.×-k% j±Õ¯Œ­41ož¬ÇŠ‘£qÂì˜üY¨‰éA–Ä¥²vñ }Ö\+ÕS6"!͹œd· Áß)¼o°éÉá?ðt¡œ=æ¯óB¨ÿÏ•ìÿi·9òs÷¦§ ÝüŸ"‚7Þ ä}ZȆÔÅIÃ+™š9û¶Ë½ªI~Èê&EÝ:æQ^¼50w…ßè.X$\¼oå±såKXÉÍfþNÒl‡tõѵ„Ï }Ĺ >‰_¯«\¶úýy@ÉL ª ‘Cž ë4òX EíÒ[¡­à”ßI¹P§£çó]U¯šeÞV6Ój$ðõ¿¬¬¶ãxDá/Ò¿"/¶/ΊéeÝIð7Å.’,W£€èЪ¡ã®“œ‹Î¹h¤€¶}'snO¸åVÔ½‡Ö¬…ýŽk쎨,[$FùÍLPÌ?,]i±ÂWijž¥¢)¡BJŽ?O­ª®¡iQãHZ’v® šÉE…DWÁŽù1ÏÁr£ÌCx!j°,ªª ëÅ7JqKú!ˆG2™-OyvÅ ÷Áº¹ü¼:æÑÈÒË5µ)êÚ®+Õá?óV¦~šu©«»Åÿò’Áf÷¸…/7àBlÂx"ÞÝGRÂÑgI!˜xzv «´OÔ¡¬úò›n¼v³âœ½Àê~ãå"ÃÙ$¨öþNcóægõ÷M¥_t½|»šºÐ_,oþÅ:†sˆqŒ—‘ü)©¸Íy Â>òu5ÝËõIÇ8U>#Ÿñ•æ‰5ûŠâ³°ðyûTæû®ãº)<®Â²ìE(Ñ=YÕv7»õ+h+d^jí^ñåÊ\ôç¥áZãXý¯Øm˜nqÐ’¾vl‰K0û½°*ñ¤ûG×byN¼•or:À#Í0IßÁ›‹Šœö$Òåö3ÑQ¶º^»Ø´ÏÁþ²Ÿû¨/v©öáƒ#æÄõ#-’N8Œ$T^{¿ž)6;/3#v‰„=òX;òBºsvK ›ú?¨^Tbâ#|Î —õðɲÞ¡!7ÒpÁ¾³Rïb ¶øþßé€"k^óí›9*íbùÆ=ö éy` ©Æ*“¤ÁB¤Èh`… ~"&~ÞìëÍèάçð–½íåŠÄÕRÕŪKvžHtêêìµý!niG¶úD¬Ž_ÎÉÙ×½¶ÑºŠ½M¥Ͻ?À!À=Œá‰åìj-²Ç–‡Ý±¹v9Reîs÷ž©3òÈ‹räúƒ“3ðÏéÕª]HIGÌÍnºIþZhèÓœh#ÚIph½Haú|‚Úˆnw 9ͼG@'y¥FPÙd¤:{Ân³ô‚—©fþÇt¯Cêˆ""käÌÄ‘Ÿã¹‰ÏnÈÏØCƒov™fF‰²‰C®Ï*,Ïv„ì!‡rzžãxü…²¸„W:C~¥7ÂÑG£ŒèËd|áwŽS@E8[Õ³%chæ™’±ìEâ–_·˜ÝeÝ3 «“( 7S&„Ïx³U·û_Ê^p%T]]–x¦( Š(‰ÞPd?sMxÞ8+­î§ T$j¦êÿz44xà£ïë䯋 x""õ<®xðœíüƒŠyžTg½W¿æ»%2Îé<òëa&<ázUQ»ú¤×³ßKN?ŠR¨LÍfüW3¹Ð%Ü”]dzÛ5‚6Q=)´‘Xúô7a…}áÓ 0@U~9œžM*Õgú2ÙÕŸw¡[ð•%s8âöíÛ_Ì™Xcnãɯ•ôñ ¼±‡Ä÷'nÖ\—çÀÍW¤îAm­Ü¿DY—t-Á•pìáH'>IYwâEîžXËû×Q”ÞÀ×_$}†…•_C枦SnOl*¯À”$•ZX­Áf ;g×Ù&Óãÿæo²Zõå*X´ BoÝ“–æ^‡'jÉ“a>± â³é…Êñ¬R7®œƒ©+=ÅQo!{RÓ oç7ñÿ™ÒC·êú¾Ýþà»ÐãB…j¯hràðÞÌ?ÉÖÕØž;Åý䢆)>¸¯(½6±)Ž[Ë}¥¹§ÿ 4¹Ã¹÷ƒÛZç/ò®æ’¬ïäØ']ÜgÀœ7‚¤†Óà¡ó>>>çâu,f RýàžB+î˜î|ŒÂ's‘Ç—o£{˜+*)-ÕäýI¼`r QÖrÒ­U×t[³Ø±lýL$eö¨Úå¤ &në)Çup™IRù|ŸÁæì‚”{ðÁ7ûÜÜ ­Gp2÷\’ F¯îü «óî¢!íVÜÑ?M!o«õ¨J‚% Ù¶š2 §#DO;ÑÜqûWRF8tÔ⣘ԵP¼}Þ*ýcâmá*Ø¢(íBª]õÿѼÔò¶ïP)÷¼îý¸û´ñ{Ôµ¶’e4vÈZüQZs%ߤŸßÎ=8—ŒoÓ.xÜÄgíÜÀPm´V»Õ‘´™ ¼Ü‡ÄÑ(}9t}¦ó74¹Æó¸w~4ÈÉ#<õÅsE[»Ûü,ÚžáLjL|Ç÷y\ŸÐf‹É‘i5,íÆ;0+«Jvž£/9ÍRšØ¼kµ†¦úÄÔ?Gqã¹±–q‹ÃÙÙ¿ÓõÖÐÛb@ϬS³-¾ÓxÂmýësˆ1:zLš§ðÈVàYžËþä2áµÈ¥X‘©eìºii˜ÁÚÙV\»»Q2Nó!ýŒØ ÊÁ½ŽÀ¿vEUÝ>=tJW¢L×.É[u¿ˆŒy˜dE…,j…ðÓµ£'^1e{¸ÙT"acf-'¦˜ó§BzMØŸÅ«¯ŠªédçÓ†Áß‹uUöƒér,ž¡ñï.ùò8R Î{ï'5sxE2Y*:ìÈfcxüŽë{½”aOGGι(±%Ì BSØš”_zÖxÇä¢:ÜdU³âx¸ì0Ýsf'›‘Cµ÷¤ÏÝ‘~f+¯‚Êp©n´˜Ý"öç(Q³ä ¿ˆ­L±õîí%Ì¢sœ`z÷­ºï«¹Š–;Ë¡øMˆò ¿²zç謔A¡"ª¦šÎO§J²ø:–mv›šª÷²Îù´&õ.²Š t8—ЃéQ=›™ÑÜZ¤”yÊÜŽ‘S¬ö ^ÓÓÕ ÈéÅHÝeÀ¿d1!¢óe¹Nåô»Õçå•iœÒ‘”\‹Ù¾‚,q40·S”¨iry.ÔœhN%/}†:¥FÞLÖœ¯rrñ«ç縱¬mªåOEnV]1'.ùêŽÑúLŠôw¹—Î\²Jd¦Ãm¸ih»õ. KΞJªO½] ˆ>GzUˆECzð ߣ–2l8Y´ÂžÇ–Öfº¨ptc-?9úN³å9˜<—³ k˜834[èB}áûp„㬠3ã¼§²â¡@…Ô–ÿ÷œ}šŸŸ™•â|Üúùo÷þÌe »c'¤Êã÷ß6}|iu›«ø¡$軃ëÚnÒq`üªãË‘ŒÛ-IU=5xÃ( []Þ௒§[l¼VÒv€}}ÁÃè%±hÏÌJ6“ÝÚ’ÊÎ}¢™ uE;›¥úNÇ*Bü1?GçMãI”¤Š/¯þ.äŠp¡!Jlzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.731787209 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v2.dat.bz20000644016037001603700000007735413607166133034133 0ustar00hutter2hutter200000000000000BZh91AY&SY†g18ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàM¿>‡z{*JE (”€ª*¯f‡Ë £CM5m›ÝÕv0 ®Šöd^û/6ÖŠû`Ÿ/®§GÝ÷3w®½ÎúïcÛ}ß>5ÖÙßw¶>Ï}Þë³ç{¼ûÝ>÷¾n¾äVÞõß;}uï°÷}Ýq÷·wfo¾»Ê÷Ý»»îw/5sïtí[íîï=ؾܺûé÷Oj·}ݵ¢®ÝM ÒØbû2“»Ýíñ²UD®îç]rL¶Ú¡Ñº]Žu•ÛÞûURŠ(óíîçU € “10˜š ˜A¡¦™Sð™ Œ€ 4Ð'ˆhÓDm& žš0FFF™4ш4ɉ’x°±R)IKbÐ7Ö‰±l FC.¥ Û-EÃa… šDQjÂpë  v;!’ºÀ`1݇WßûN·³oÐ]ãË,Äròš^.݇…¸·ã]kçgxPês¿ûÁgtñ[¯„ Øw%•·¯qÊsþ¯ÌÈÏMø¹½ÓÖaffv* _ŸÑíÈA0mŽÝí4Ð<^;g==èáY+óCÃe·íïŽJ²èZ¿ñ_¹:êZ¯«hɰ[às¨ÿTËÎÖË3É—º`RpŒœN´³ÒW¤–×g#ûtüzFf| ×ì/†^–“óÎh+ks,O®|Èî®/zçÖ·wÆ_Žæè"þzzÙ±ÛÝÎPÀ¯rì'íV/Y2¹‰Ië]"uº…,ŸÍ©Ój¥Ux°7p ’°2¿-ýnw%Ž|ì45ˆü"2R’Mk²IiÜ¢RŠv/‘ R|õ‹ÑÍÇÇXçÚ5Ž“—>Bp£—Xe­J/./³Ë«ñHÙ0Ý"ÜuC*@‘ š‚%Aqz&&DV„! ©0\ˆ>ÙÂAD$0ij٭ %IdÀûKñ3+òò…AÚê¹%¨üü´£q³ˆž U€Ú+ }Òf€P÷•$"ÚÑ(êB¤&‘¡[ Ô*A$„‰– ‘$ª„ ˜{ñÈ(Щ(S¤Ld´‹TJJ‘#)DÇT€¤ ýD’KT 'ÓRÕ%ù%‹‹VÒkIF¼÷k«ŒâÈÂ’C PL%$CØ)CãƒRì™öBÆJãÉZý3 ˆíN©tŠb á!n¥‰ t€½0eˆ<ƒ2å:‡}~hW¶nÅ»0†•ä"Þ¸2%£8×0 \Ódä³²DVLž)™¬h ¤(ˆ*–0`-Ü€u¬ 7 ¼Rtjtêx˜Ä×®–A¨”&Ý xÓœd;ÈV‘ˆ æ@º®$S¤TpL u1Ô±ia#U:¿Q< ‚LT™!]ÓÀ$œsf2TÀ*H€[¹²C4C; ² ÅŒ ±(!rì Tb`¼‡’aSó¥6¿ý8§hÇ\ÏÈ£jÂò‘Ý5s¤“‰X€q+Ó@ã“ýØi º6bC–NAß„Á튮YÉ^X²‡ ¡€VÒw’ÄgTˆ"CZñf:Ù½òÈÔO*\FíH£1,"Ç+ (–¡RN>`8/µ4°º"â'¨‹õ•Ò).Í!¹àšˆyª°•WÐ@€Þ`W@æË18BjŸÑ”©k\±œ(c¨EŠ ’FRBzbã;jùN°S˜ÉêärI§_Ž21c¸øhØÅM¼ul–@ðÅ…ƒd䥤cÏO/LøÄf“ÜË©,.JlNœÇr%²ây­™61}½¼óð¹3lœ4c‹JNMC R0ãhLšÒì´±yRÈè@ô]ñ¯vn±Ú:ö†“°s¨w ^•7¡Ê¥gÓ ˆÌ 0£j: ¼M¼Ü¨|)ɧ8hã!‚·¦Ñ)%ÙRY¡¶œ\Ç:“8 6Ô;áXsâaÑÖ¬ƒVþ–ÄÕÂ)Ý[¹ö½WTò:ç—j°?)"È ŸÆçÙÓÏÃ’W¶O¨Àà[û×´‰<¦»GºI:Іô6 á¦H{ØÌµ†•ö#MÌ¿5P¢Hö&)ÌZ8нVX^k¥©ä®LâŽSÉœÑdß §JChü™j±Å jøL` ñþ„ 廬\ÅN¾ äç³XŸì½5”¹™1†Ýl½˜ƒö·RâÓÇ–5j3à YæyK ôÏ­ AxpP9€.µØ;&LÌK;þîņQz+ÌaÄAfdæpMÅD ˜ß]» Êqíá$öGhÃÚ°PS,šÌ憸ö@¤L˜Ó3ÓŒÏÂ×’RøÞ$s,çŠhYùæ:$盘ÌO9É7£Mƒ:#î DâFI¼vÇ‚a\gJeK6òLwï(=+Bÿ³QÁ sJ<*Á°^ˆNq‡Áà´3ìÂzÎqóhg¼´Ù I¿³¦—¾z?œ/çH8pì'Ñv$Á  yQ'í¡”©#½™É`ÓÁCŽ—ç-.°Ì+¡}Œ«Aná‡:¦Ùáýø‹‘Hµ H³gÓKI¦þéÞÎgG.¸90æñ¼7S‘‚ù‰4òÆõ áµ…“ÖÁçÚ2w×ñ»8Â˽£A| I«øÎÕ¡µ~©`[¦§”rlɳ`Í8™ ¥€K³Ï2®H “&³0±$÷l €ˆ*ÓþmåR³‚h;&ÍgrÚ“”›7'19­0„”f¤ Sy%%÷Ã×ïÞ–¼`(`R”¥0–­6×¸X¤QIE%E/(´¤¢’ŠK‹”XÉPµ— È>¤üSZ“ Ù§4âB«”@âû 6Åp\“âÛ8,ò 2O Çö´Šóö9çú½ä«‡8IÛ½›¼Ø]cÏf.…†¸Y3HÄIÂKP<ø‹ùÆ8VìÅ4Í!)ò„ »Ø¨Ì©P{àó¥ÈdAÙsp~[‰zˆ˜“ÔÖž&e§—ˆY zëÛë03 nBM£G]H&Œ6H*{ìäëÍÏ´ûÞ?«‘‹Â7˜csÐwü¿-ó/¦‚i’j-F3›`o•3Öü’©Ä6 0! ±n*Ð@« ›}=q(3ã0˜œGƒvVƒFÚ„)ã9tœ^L[ú.$ð]I8žp%m±HÍž£0ÈöÝ“\ÎÃdÙ6‘œtë§bÍˤqcgÖÉdÜˆË¡Ä yH“¶aÒ µp•\°õØg6? ãÿ0¢uP¢zb!† B I@×V+ž)³“x@¶ +‘5¨u£e'+¾~ÒW’'MVõµ~ Íïò@§ÒPiÓ#õ½+ô½[â;ÜmF¢– @,¶dÄܲp´2¨‚º¥Ï…ÀªO…¹Ç1æ%Çu‹,ñ°¢Õh–ØKÊûí…ïAÕüC·œwÃX—-û¹Ç½èvöv³µ¥Û3ÿâs±=?>‰³sÈ`¤:43ØD’€À´\Aüî5*M³\è ÂÙa…/µË‹ªZ²BM¡òÓE†}xé–ÁÎFDmQ&™qÏJ[;¡ÍAlAÉήRY*RF)‡‘"b ÖœdÕ x²Õ‘vV`d塾’$î,’gi!ŒÌAÝKV­RÂô§ã¸±5Û4{7ø)ÈŒáw„sˆBvìA.¼aÂÁ»]“-6¨ÿ£°~Wµ|ƒ·Œë;LÁ¶ÄLü‰¦Ê‹sã>•,Oï,Üf/'Îù¯êo¾›øÍä#ü· »0†pã`À8„¥›ˆ"+UˆÀ£i ^ /À;Hf„­Êl³æ1 ´¶c>ØÈóî‡ózɇ8ÙÁÍ||¶„¥V2ããO<ÉìÜÁ‹ BrsnŸl¡q—vD¢“~L”úëZù弈3ÅéÞÌÜ83L†Êôùx X[Éœºôæ'×Î0 ­ížÙÏ_ÓAPªkãõŽ>è—c\êã,(RP:Zñ‘Á$…6"ÉåŽfn%©Mî/¬zÝËß³7g~,~J9qÊ’ŠQŠXøoÇ;vz­Aò··;MÔÛLyí@é ‰…d€h}E—9¡VŸ’h¡©8—^MN9ÉäqÛüßf¿ê­óàð3÷F—\,Þ„ùóJ.·©Ø È¥ Q„±ÇÔÀµ$°µI¹xlZnÏþ,Äœ»¬t .õÔlûû6Äþô7„>ÈåÌô/4Üø ¶5-+ºm¸'B^žŽé8á¦IÄMÌ–½¨ŸðŸÕ…Ïe ª RzSß}ë”틎½;D³!õÖ;lEjå&@+Q5Y•⻡¤*B-VãViõ Ü_1}ŸCr,ƒtÓøM'Ú¼w¼Êa/ÎÐDzì´ò¼¾±ÎøÅp`ˆ3jÈnŒ2pþr¹&l4¡òÑÖ3¥”•àb:;;óªT2|ÔÌÐÝ@aYžüæ2@‚³â Ø ù-×aJ设mFRb–’Eü]Ã#ÏÂ@Y ËU!„ cA§x™b[1DºÇNK>È}¼l$ê,ÒïBë'ÃÑþltd|ô2Ðè°ßG|í&¢ÒÊ—¡iò$ÍzÊBä[.]SÝ'ŸÕÕ0Œ9¼¶ŽÇ¼q [ªBua’Òô9²é8p±' $Hqîm·wo’äÁ¤ëšDÄÉQúÓNTü$ɦÎÙĆv‚«'4Ú8R\œä6ó­—çA/§¤ƒº)c ;ýéiâ»”êd\NDçR“D˜²Ç\hØ’K\ióž¤Ø<&DŸlëÆ©J`4>!°uC@^kã馱Þâº5ÆÑòƒ“`eÇïuç]eÙÁ•Žk ë±9ƒ¢7à2™L¥ÅãxÌ-å3 üõÓ°†½€ßÍX{áD㜷œMuç9)*ˆjÍÓ€R›ã:ô\ÛŽƒ& 1K`üðXÕðŒ¹¥mX&…Ö›a”.&|˜alj•.˜m‡ö`Üàke!ûàÃS|Wÿ\ƒ 2'¡™‹gnoÔlÐ?|¥u³—£RÄ»3¥«Ø´_Y?®Ô²!ª˜0•yužD“ G Q¤MX™“v’9}߸† ‹É”’jŽ4íØ¢êì“ÐTÆmÜ/ìe¯¦wíMȪ€Eùp0uó´I09 ˆ ñÙ5) ³ 4†Åd²rŸ×挾$y’£ºÏ°'‹ÇœW?.L¦n ™Ýú®e’ù¤AOëñ›gWeHï·ûFe.3m‚ÙQC(;ãvOô »•õ‡š½è2 ãçÊÁï¯v™v›k¨†.ÛÌPïœ9Ëg!í½ß›qÝËJSèT9e°~$Ewó›ÂÍæ¦ðß|ïâë ÒâOŸ~nê dÜ7”ßß¹}×MJfŸR^fƒŽ|H8ùÿw§j P¹ X7䔟³˜xçŒkœUb´-0s"0¬€É èÔ™¦!ª“~—ܪfeAc²|Ó›‡>‚òM²’"TŽbÂc–º:ÅN(>óø}Û»whë^Íûîqï_1ò\ƒ¡ûlN Ô=9°"ºs®5þ|Pí¾býl[’µZ©nóhA!á‡ÙÊOTP,D{yëu„;ˆ)8e9×ÚZÜÓ†ì7a“.Oæ&Fæy‹üO g_ #QœL²êàÊv2‰c¾?óµõÆboÒúù†¸œ=K }$ñÈà !ºœj篦}PnÀS3g~!ùÕâÏ4Ÿ ‹Ïó87\1Ö4ƒ’ÀX ¹šýoGGÂPx€²š:-ŠùnBzGä” F@±ÛN”€„B#užÞuÀmµMßÌæ.ãg0æI'ÉY:x> \-ƒŒY”¸Ö¶Åiæ^`†ù*R\#½Ò–N¥'Æ’KT<ÞËuí|Ý#x ý©Åk¾ Ò¥÷D MÉÝëóTS1Ýô=A™û牚ÆÕ¬A÷/6ϋխ2\3{ÕÁâ¯':•ÄFY˜UbüTqš¨G xÔCØ+ \)ÏaËS`§£/°F#¸µ›î}BØs×å哇48ÇÚ «”V©Š)¡U›OȇReô±¦÷tàz  øg2“΢ p'P65|<¶ÁXY*Q¦>Ýò°uÛ|Ý¡8¨Ý—&ú>ÏfÄT½‡£s&…guÐQl¿×÷°â&ºE&â ^¨ÕXÌœcÙX%€³ñŸ3¤!‡§qÏ€ÿ£¦nm£^ÀÜ:‡&ôxlc|}gÊk%pÎÃYý&à¡¡ wCnÞÞáÿûytÍF«paû„V0 ì3×=[~w(ۄΰL0ÍAjüÉ—¤DRMQ*c9äÁ#~}ÖÕ¶‹I².áÆå\ÀrcëãÂ8ƒï²²Ã2?(B'áoGNë›ë0Þ¬í¤ÜÄ(ë ©€)¼ÉnH×´ 00à 0Ã’0F!C—i©a^’lÞÇb=ËbNá\ÕnL0ÀÎÕæÂZ.M»î_ îÑýÀïš÷ñY!{2ˆ,4Ãåo€â•™»`ªˆ €}ƒ¢åÔ÷DB’î…zˆIÁú(‘½c Ä®Î÷wÛiD’fÁÉô‡cOç›y;“zùúaåÌô{¼£0ÝR˜Ë„ ™=¹Ì0“–¸3»8Ò§ùRu„UÇ9ŽQ¨Â¡bÃ7æ‡U¥2v F¾hJñXß hdØ0>µù‘H>Ú I€/¢ÛMôÀxŸª_å˜Ä];ûaL^– $ ea;ÆÜÂ<ËtdiáÛ ¤|8lNÖBs ÁcùTŸã*2Òü°¦}[;#ßœzd8·ŽöLã@ø¾ÔXÇnÎj\œ©Í;²òxc?OiÕùݧS>9V¸öÀ6‰É,)xÙ9nUSØ}#à›ÖÍ»U–·í/K¬ä&¸áü™bH”L"ªä[#nþg‚M!ž„l§ò`µ<Â1Éš*I5ðià´r¿Çôo³a iýNµ=Ä*– ÐÀ †i–;<®þ1pu'óOlC]Îv%ôžÈk;­_÷?ŒØÎ—¡8v=ÔSŒœ±¢Aõçý`¿$+ƒy×î:—þŸìã_ÊíÐ/ϯÍ@qÁã¬ýâg@ 9ðpÌïÞ^ì-ÙГ•dÖÆva†a†f†a†«U¡’²jµ› ÓP³«{a¹óH&Í.ÉQ/¬êvàL‡êRÈn ß²âÇwó[ˆ7eÙ1OC[qdµHa¯ $„,_Ápd˧ì¼?•‡¿rŽí³¬ì›C‘| ;öM˜§jkÚ̧:9^'ØöšjÉÕÐÆÓŒÐ:­û÷7š=æ<ø^Ws§‹³„š(xáù$PÛ<°Kò|ÚjܽB¼÷*vó…7jñ©^Ìê]üv@@?ŽˆjvîrÈÄTNÜ«]Ná«>®çÛOO™õlQu5•¡ŸŽôÖß1ráÒ¬S$n­ŒØŒs/РÞ-zç»Å__Z˜ˆsë?A‰w zCÓùÜæxÖ )¿ °¢%ô®†`¼ÁTÿ““@ oÏJ4›0:á®ÉxRt$îH¾êõ]Ë'[&ìĘ&4d™§ÿËO¬ÃOCšƒá˜}¬;tÕAÄñ›÷×èã%×ð|Ãi}Ç3ãùM†_Ýd¦tðftݘäéW Î/Å¿¡U ÍV<€mÑEÆ®²$QÃq#”A­,Η+/ox-Š–ƒ"ª4ʵ1Ð*2\4Îä}~­4ÉZ|ª P«¤ÈfâïíÐLç ˆ)µ¼2É¥åþꬂexΚ|ÒwN0ì(€(ÒÎ(­E”Ç·¤öo¾çД ðˆØ,ì¸&R á~v“-v$Ϧcð>ŽTÆ—Äf Úo/G&Ö9qˆ5Ù¿Zyƒ¥+E¯ÕAùU•Ž‚YÊV¢–R»U¾õ/®®µ´ÃŠDòžØÕü”ÌNÊÝóÜ7¼}<ôzóO@p[ÓvÙüÛ™Á˜™óܧ ¸û•ömîëƒK‡~i€æùè ÷›F0?dG˜+y*kÝ\›£ÐY3' 8щ@})œd­N=#H¶#Z¢=¤§­’Œ~A€$%Ñ¡†‘õÈ –ÛAUêâ…uýÈwÒråŸV›ŒÞ`ÎBØÉ«Ç'«qÒÔ ÌÁ• —U—8Ý÷M=Ò µEí¡°ä´ëŽ3Ïéwžë±ó2:d!¾%QJk–7Œq7ÅîŽÈ|XwÒëÛ%'£½¾ÖܱÖ4‰úèuÝÌ o.¿ÄÍD\v¸å[Aź„Ì¢i%ν§"½?²" •?]jèþ”<÷kÁ=Þ­t f1¬W3 Œ­2giýaä ažŠ—­ïÒ‡®[‘ ÖFRâH€Ù‰}¡kdXçN¿6?Ùëüä{Ýäç^o?Õbžsq•8öw§ÈÀÿC¥EHCrŸÛ€†. ö;[íìL¡ ˆ²çðãuŽšôM’Û•âì`¾uå1©8ë T2`yÛâtöìRPÜ[ c <êÆÒZÀÞÎÚî`µò6ûyë“»ªdÌs9VK)‹z\%Y¡º@Ñ»üÒŒˆNIü²ÀÐ,€ð† 3Xh jþ?öûþcãÑy·Í_UíXœÓ2³k¸³ ù/!^”ºŸé)Q0×KÙž¾ õrÝ y…»ŽíBÀBMlM]eÎ\„× e 4´/òý)‹|ºøÃ1õôEnÑË\‹ê>¯ò=·ß7e<‰‡Å!M®—ÝYLàÇŒRÆ~ãÿxC–ã ì L7 ù{ ?·l”Ë×µqóþ¹ú°ØeÿñȵCtnÁ?»ÏaÚ<€&ÊÉ<ŠL67 gŽ´ýÅä¯Shcn¦ÌK¹K9?)©tÈ—Ü·õF¨Ù‚ÉÍ0›¤¢ÙË/û·¿'oOÛŸC®GE¦’$JÙR áœ5,˜Ì|U@F~/ÝL[°A&~þ_NVõ\ŒÿéF©ïS–÷È)GbT|­ïKHyÖlnذDØóÙ®â2… Çë ?ž¨H:cµòÐŒ5yÌã¼$î?”pÑ8SRçÀ±y#\A6‰sÜÝ‘¨ÔÁðGvyRØ}ªƒÏƒ¼ƒ—ƒZMTÞÉ2ÍzN=Çœ¤êK‡Ù~s8“éN°ÍõˆJá\ 2I„ãpŒoë­TNRÌ ®‚'­A^ö¡ó¨Æss«ÍÎç¹x£Zc å•Ýul$5gS>ŸÓ”H"õyÁ[¤Àu2(ÅT¼€É =‚¡À‚ÝÒÝÒ¹[)bg(MFW¤]=P—vž3¹KÒVo×Èk÷ŒÀ°ýÁÿ^7:v™?OÏÙ—ÿo×ýÈ êgê\]%† ˜ŸÆr.Cˆ®FâZGîIçøÐ[<19HŠb£õËÐw±‹.Ì6<)̵¬ŠàÚ]G½iÃ`TOÉ¿}ÚN5Hñ5rEèLŽ{3Ón(ž“jLórþüÊéá~5°¡Ì {¾10³…N¦ lùØoÒÍî[ Ùé’È4|ë)$n}ßhXbšJ¸ÑÅ´*ˆ½’*ˆ|æá¡ú—#bÔ<^ç!Öt޵6Ö{¸Au#¥9úùåéél-Û !v»›jR@5ŠÎ뽂,*³¥°¯‹D€÷SHòÖæ=´ñ|½Œ‡Ø€èó»˜ïàÄ@ú >á;˜u£ ñš}vJ U]jä{ÜþöKY“ ô»³¾3ØXžñÚm @ÍèƒÜeãÍ…ÆùÌô‚à ™ŒÝ)¥ÂBk¹J󜭶¦kd²¹3âÚ¯ÎÚlý çd{w!©RmÁÒ$-wôàxLIð7𣠯3¼‡o»Ž3Ê®¯]t }”ôA‚M¡ü/½&íë\z~µW,ЏñMÈšÿMbŽ 4m›@»0Šêúf„ÇÜМ)‘d ΋:kÃ÷rüéÀX¸Y† @¦—”C@¤Ò)ä<ï¦@¶nîµÑ÷T: ï³¶œ?œ2‡/#­ô1'êM+¦ú¨=p±Ú²Ä}0•öùÛsÑu‰¹)ë‚›àÒþùitpUÆÁÜø°WÍÄUxŠÓ%XÞ[fâÿæÅ:É/5.Ü;˜âí-‚(àóòa«¯ëÍ®š<JqŽß±fÇf‘ÙÅŸod„ù®äz¹‹hw14 †lì¦]ÕAb-U”0ˆüT*±‡¼„,žˆ€Ë€òÀ¶/ÏX¾¤ œþgÐ6›Öï;6xUK‡UÚ­L³³v±–‘ Wßaƒ„Û¶J‰Ä™:®ÖØIÊ¥1 FÃ&lÂq÷õޝ²ƒXÏ[GéKóJ.WM;É2L¼ý/ú;|Ëå”"I ›AF*03)&Ÿf.xèu˜Ç„Cvr!B–8AvÄNÿ¿…{θÓ~ù”ÿ6ĺUŸ¿µPáEN¸[y*IŠæ»ÌêLÉ´D%ƒHS ³k`0ø›e«B É¥’CÐ¥ËæRÊËòBÕü<³ÜÃ;ý骬ßïå³¹«(1k6°æXΕg@¶+H(Àƒ h-‚P5‡`xgjãÝSöŸHçŒííM¡÷Ýû<ØGÙ¶f“‹Øm½о«ò3+y{Fà̃öðgtƒr~T¥.OJó¼kÇW¤Tôv1ÿÑÍq.¥¯]šåˆ@€4i ñ@HÎ"Û–Y¶Ší3û2ª™¾[Urj3\é®¶GIüѰ_ùÂ8;ÄèÈliøSh4 ǜ쳿i€«5üÛÑÀxÊú£ðØè³S߯µö@|²š…LÊ3›l¹i.·F‹ýÂP 0ƒqû,Àöéˆû"†›ã£ŠYÈ‚çÎû]=õ# ø¹¢Û5xõ' D´Àg\ý›ND4Ú“ü \ÆÞÀÛ…dR;þ!H6¯9Y¦ ¨^W›1NöiU³šp„]èèݘsn§ê°§šq…<6À_†]$t×i?]’©p‹¯¨­sÖžã¥b}&Z§Oøôð~/Šv\Ì7bÍ¢Fv$eH"‡\`ÖÒ®@¥6‚;Á Q„Ê*«™(h^Uƒæ­dó„ôIÝDƒô$Ɇ`‡Cš1.n1E½ÇÝGÍÔÝ­…Ý]΄´’*T§¾æ8%ŸÉÀˆl] =?e²Páÿ䣠 Yõ"ílÕ²“×i5ŸM-ÉøËHƒ½Ês/#;›e›\~3ámR³²ýÂc´³gQ!†”±Db<„A8ñp`‹«—Îꛤ»M…/gÖòG¼½lDä¡+|î¯ó´‡NÎs'F‰î‡£GTùúV¢"0‹(ÆÜŸ± î¯éÐøs$¾8çrFµ…¬} Wü3º € ÑÇòBÙ4×§5¥ÿÛj†·ãm¡Û„;„¡ùiÉRs_`ÉW«&Õå¤èå,ð­[7à »¶CêASŽ“â‰Áyɇ|+}÷>¦€0 Ká« yÄþþ7&0¥ù³ÇJ=ÏV–¹Ã²¯ƒ(¾¢à3dlPW:ÖF§!‰…‰SBm¦)UD¦ÞººÁd™<ðÌ‚g.ÜX6 LQûð¦öàq«{D¥#[8v*†ˆsÄ8Ö<xQ©³åkž×~Yz¥chۇњ¥´—1HVzÀà°±0† ³ZF=Bóö7¦yðÓQß>˜‰½ª±£ç‡ SO¾| É~€óÀ• Åd¦GËúx}\æí<¸E,}9‰L %§ˆ++7Cä $å>š§ÿ×ééeð@f?0‹¸uŽŸikꊫ1I©+rD5Ê>íS“ßÏ]{ ²ÛÝŽ`ž¦#¦$è¾+ñž\ŸZßyµƒÁÅuÔþŸŸ§ƒ¾¸mØ–¢X ÇCÄŒ3L6G*”¿Y¢Òƒ8îÉ!qOŸÞøÍ‘¥[±@), JÒY'[ûdGPNŒ€›†)ìÂ8P¢êwCÜéò%çœQ£ñ6ÇAál "½ÔŽÀÀíZÁgÈ@6-tþHȾßULÞZ¥y;À˜dEà‘lŠ>l65¼ý/ÃçËË‹<;ûpÛtPb¾¬qrCWß=¬v’{k-ÞûÞV" „.0͉ýqÌ—°®BY0ëö0 9º¬Ñ¢‘¬Í1kdjŸìοùÃ8–„ ! M2×dÚLžFÛ¸òÂ6Gî¢P ÕAFc”…ÈNDl þÂÿ wɇغÖIjÅã·ƒoKÅ8»UÔp·cOà’$Oy%¦,…\‘M‰5϶ûÉãÞ}Îþ7ç!è7sª8ˆØA_>|û©‡Ï;B³6wXÂõêÀ-nG²‚ÇÈ3ûh?À¢ƒ çì=,!8}ƱÂv·|xp¸2?Å9õç·z1è w•8Ol,` '[ôÒÐnmìëTXqeM¾óP°c\Å¡O{pH•ròÂ/'­ôzÍ—‘;þK³ÈxÅ=šÎ[&z˜9©þQã¸g?(ÌIàº=ª½òöŽÎß’ä>„ gk¨:פ©\ GD<ˆÂÖ—fÙ¡9.W+²2^§×y:¨v–'ÉdšÈÎÂßCÖ24c J>]hŸf%(|èvjƒkpèØåËžªñ÷š·ðtËEDG°Ë4™€8† ?eB`5ó)$€eŸô@ ‚J³Á!Ø:TP1ûZW ©®Po%‹YgÇ—•d’  óžLlHüóLÆ\¥‚e Hã°€Ž?hEKx ù:|Î'k@ÔŽQ@dÒGJ»|H5–Eîƒe×”/XüT!·ÖDG5E#£9Òà,ã6úÚXšÞífN\“Ø<¡ ~×å‰cŒ|ý’Lt•u¤!p +Å´kÉq,¥¨uZÔ= ”çbò ÇÊ\¦RÅíãÜɼ@Ë•5Møð­àø $iÝ~yÐÉã3mäjŠBø'ŸÕ0æônÞ&>=ÜÑÔ’S…Ì.¶³<Ù% ¿=¿Ã¬Û7c¤¨Fy Iþl)fc¹‹ôÁÕOý/ì×%ñ]¶Y6vÕg–TôÁIWe®ß2=¹T,YµwY´§¥¬)"I!£ía¸äg¤º;H_šFƒœx\=õ"›Iúÿ>\V3Ht<@¶J£Û£ÑŒ·Xà\ŸP<xmÓkiY›9[&1à»yûªWÙfVÛ}Ʀƫr«8ùÙâCp?ÏøäiépíúRïaqðè_ýÔ}r©(˜‰=šB‡4òh÷Q.ë–9 ÿ4h $/èøeHá²Å’££ÀiÈ(+ù¡ƒxÀÖ^u¯¸{¼3«5ƒ§&;œ^1oóðÁÎü@h§ÁlÔ-'ZÁ¥ÌÃðŽ…¸û‰ôoâ›Í¬Öz#f2Bœ !ã,pg2áݬJÔ±D¥%«U£©–ÏÜ) Øãî| øª$åñ‚D©¡ØÜ=öëÙ`Hµ”{ Òã/8u.§D¼Í¿K%0Úÿ Ù¡Ôâ3jF;zLˆoî[ <©©÷#BÈ3‰œ`çw‡9þþù{à§ãßœøùÈF¶ò3—O6G›â@ Ï×:1ë/ŽÉ5©`À@_êݦ lƒ *ýËWÊC?‚gç_1ÓUÒ€á³ùsÀ5)KÁª¢–›E»F"OõQ$Â8Æÿ;Üj¢íÅîÎs›,µfŠCÑwÒ߉â“o:£¯ý­<‡àšb%’þ…Êv|±Ç'¦š™—ζâþ‘+x—çõ¦úªj ”׈àÀÔúüyÏ3A~uhy˶[Õ mQi<«ÜbYïºÒš;Í«'ú©™ŽúBI Š ¾ ŒD ‡€åh˜´0ÜiúPU¤*vØ: \yªb¯äߪ ‰óF¨‚7^Я%V75£+Tø`"ugúûÊ—Üâ%⼊¦—Îû£tI‹OØLBw;¨åM[KCWð«}¨£ñ¹¯שõRvzB&¼ú Ò–ÍB.ÙžÜÜbvPÜ/|¹ã“B…²28¸æ «÷¡Q‹Èï:ɹõ¦Ïz?ï…ªF´±é NŒ ™ÇR8?ã'Õ"””ðç5ÀIXé^zq• €.Y¬©äú*÷ó¤¼û¬¿ XÌz=Ù¸ó±âÈ”µ$n­h‰ X﹫ÃO­Áu¸?uz<öiö—›ÌÑ7Ûâ˜Øá0¸î}M*TöçBo.ðz“FoE™|4pH¥èµj z<„0»ÊYn©èò<}Nâ™@2˜§72R?ÅÈMÔ>ÒÊîT(ÏB–R–  x¬½óZ]ïlµsüˆè{½ùDÑ‘ü`ï€\Àâ®(ìëòÜÓÈZåk ç?a«ÕŒ+*m Ŭø2ú Õ[Ê‘…Ûg3JØ2úT÷þ$øªcîëâûM©5-Ç4úXfF: ‚¤ô@{ óh^ÑÏ/Æ>?\îM“û·‡ˆyœÁgˆö•3‹J¦ø–Ô 7[×ø¢j†ª›‰?îüïH¨Ð“­“Öf™ °€Vk«"\°“³Æ†jâ6¡÷ñå†gýd4·‘oŠ`™y“©°ÍþòK©ƒÆÎG“ÌpBlÝøÅ!Gˆ–i,·Gêþï¹sO¾ÓÅ&dÔpý6ö@€?hg¦ãiÇØm'™EŒuõŽ›¥¬€&§,ဠ¥¯óuÈÉ[rÖ*o赸𭃻R}"ŸŠÖŽ^éÒûü%eí#^-XÍáöÔê‚–ûuôrd…Þ ¯píÜéûpªÄë±Õ6Ÿýæ¹þ„“ƒ6ñw¥ºW>xb?²!t‰¬óD[{ül4k·3²r“òEÕn³êD”ƒµ3ܶJÖPä !éÿm¶@|S¯]Šo§ÇÑ …sdÎp˜JhéÕàCYêâ¤ùWЕšI u$$&_‚ðLB*ÔˤOøŸŒÆ!¤w’—¯“TXî{ur€AÏÙi÷¸Z÷,Íâ¡åÓ{bÓ„oG±þÉ ®ã}¶n˜¾¿t|FugÜSƒÏ'ï3ë$›Ýu•ênnÓ­HìÜCÀ'™ÏyQ&ï£)Óýx¼P—X¬!žºïàhœ§»ù\¥ã^XÙg¨1Ú«å ¹ŸÉí·GÎCådW²b‰ào@êœf_&¾q=„K÷Ò‹âèOFr?²#¦#ò2—³øWC¤DQ9é”B·£E¬¤V%x¦|¾…\‰T«'‚,ÖwxæFÀ7&_¾Lî§y7ðɇ1ŠšŒ“c $¯'ÞÒâ€ß@ [­ÞrÝý¾„Dq¸ÚSÙç‰V©zʧôuG†T!Ã¥–Wy¡fÄù±hDfâÞBf¦§·5%4ö¿³Ç­Ø®ˆ]Ÿ[@šzãhtGñÁq[n5ÿeKÈŸ=rœÜB.RzågЙª ŸÌLÚÈVMt¦Ë+)\e’‰þ¹\çKžOº»BYIË•ð Í—G~›ïög+¹¦ÿlžE2WƒIëõÿÐ>Lõžøøá ‰ù–,étªÙàÆ€ÂU¢ƒÇ9ŠÚ®Ð™þ úœfêDÎM W?ßÙï½Þµï¶›QEZ{µøNüi4¥,€,[Å¢YçP’°S8Ü› ªºôþ²~zÞv_K5þ°YŸ6¿°:0jެ€?íx#žÒç)“º“,a8ï$)‘Æ¿«ëy&áà|4 ÇIÚ©!†ëà~숣åžT N§ÖÚ¥ÂÍÙ‡ßGsÓEÇ.í\påü{ZsŸi—ç/¨0;@$ض´œÙŽQ<È8Úãï1‰Çd`Q8Uzà ÙWÙ Óò•õ(sy=<¹Q(€p. 3KŒü„º<@†C4@ü»&ѵïgÁÏ›÷Èl¿Xê”ÖÃèxý !V€ºÑ2ÆÇ5f ´XÚ¨ÇW·¨Õ¹é•þ­X¦R€¹q©¨|^¢¡¿_X»éCwÝUϳŒ„•á^žkÔŒ-£p <. ¢”-È…àäýqò ˜Ö.ØuK¥‚©ˆøŠ@C6ÔóW‚²ñM‹FT¯ŒÓÅN§—}¬?Xã–H˜«0@ˤÞ+å;€<ß]4ÓîSÉÚ¸{³ƒõ·aþM€Õf$òÆ*t1)öH}âÛÌU½ðœM9ñÇ÷~;»z=)5}çeóµìe&ç!á¤+@£ßžgÞÈîu Sô°Ü­ƒ–9Õklü>Èí w0•ü)`úBñÏ@ºæ‰àü ä D 7¬ãzÓtw, Úä!ÁìC«i™ÔunÑý/áqïþ÷nɧaß.jx¬¦FCnÒÞ¢q$A^n*ëþ~&6¥ý7,EXÚ nž%úÅ+ÐD»€šîfœQù¾ï) ôòÎ)ËãïÎùÈ"$vQølÌ›ž1íÿ9ŽÆK6û‡ÿG™?©cË.¨!MÔö#ôvâ¹ dÞKü|p·Ð,¯ç£yvíÛê¾ú¾¯_,ôQÂø¹È Õ ¥”_<%’&ßgØ ‡£h)´(Z°€6…j»ûãlQ ­ý>Ee©ì€#rê$ú D}¬`ÅÙbçõ¥†Y¬x‘®ŒQ]ãhòÿVž  YsÊùöÃ’ lÚ¶mG‡HªË8v,TZ¬&î²Ë„Ie3õ3j¼o›wg»$ˆ€ö.wYóCïßîÍïYë?–­MhlÚù­&Â>!ãLɸfŽV»hs»Ïµ3ÕhœfJa´xD¬1d½±/†#ËPBÕ‰˜—¢<·÷»Ë;vì9ðŒöªé- ­(5jjȼt 5€ŽÏ'Ô9L;ë0;iÒØiHfH½fÁh€µt¼= ÇÞ!°~LSVþµUÛÚw¶Õ¥ Iâ ú[v- cé “Y´ ªöcñšbÌTã˘:^¥Ž/Ñ/?J` æ#z\—û¯¢‘ûæníèŠÆÌø”fùîmµ-mf1šúé¥ò=aS'Äš¾óSΧk~ŸkœßS¶¶½…ý—(GFÜŠÒ³c 2YêøЉðÏHß!.É´ûËF©ƒ#’Ôþ­UGë2¡Äö¯¾k{‘׬{aN§‘æKê(f±•›!\`ýP$STx<ìïøh°òM¡ÞME+èÿ9@È熲¤‹5FõW Yž-¨”¾¨8‡úª%£ê=¯MJáwìÄ$¦»\½Œù:õy®lŽç§¥´GdGËÜì“ã-¢²zÞý|—¹w+p BE˜»:›>»¼Þ'EX­]ßÐ.Þd€/6Üù¾ ÉN6ªÚ³þk¾˜ösŽ1ôdèÀ$í PÀÀs…Ò~Åá¹ÇqUä2ÎŽ‰ÖEcT3FÅ^tö•ó ¸¼J¸%£ˆ»Ý!jÔQgÛ(+·ºrêÂÛÒÞòŸ̶ٶþh;ÉÞr[êéý—-ñN+ç52‡¬Þäy\XNíÔ±“”Pˆ§_ûÿO3Á»öÛI¿ûBhš?@dÇ]0*Í4 Y »éÃbZ»EbßÑhü uŽàwGÔ9³Æ*açª Ü>7O˜ø9÷Yˆ….¶ØgíÔê‹#Ç·Z¿%°W”¢?Ò”r{6ŽEXc§±­ñï,= :¯aÄ ­Ïp&ɬ:2.¡Aì×&ó1Æêá6lSÈ~yæY¡¼ºÕ¾èš·ùª?»F‚ò3]3íbŵÂáÔrë†0&¥°—SáÈ÷§¡>€ÇÈ:7h8»\=t†FÌJlÙúûo[fæÞ}<óÛ¡áé éâ ·‡ì%·*¥—²ˆØ%ó?ê™tlïl"æqQœL6ú¼©à¸›Èç8³ì€V±7¿3[à˦3U/‘ü€;=y¯†Ñ€Ö)¼×{ÿi„¢À€VæoῨݒ*ºAÆnÞ­R/ÂG¨'mÐŸÄæî) 9Ï4ƒ(ºÍZÛϯӞ[•„ºCû6hïÕŒ*ÑcT’È0¼K<òi³Ä$É¥T¡IOàŸn«5c®Ü­KÆ VýÐ] ÀÄ~þu.q:u¦Ù¬—3y’O½ÿ‘*‘›:-øŠŠÔŽú–$ûoE#X Ö~ì%próÅú6ÖL0?êÔMݱûan-°~ãBµïV9ÉÛÂoqó€_]æ »  &´;Ð}MSW¡SaT –V½–šÔ¨Ö¯J`6H ³­?Á†zL§ƒ&\(Â~; æÿ¿êYÂOñ³ÆÁL•lÒ¿9kcæ˜ßá—’±åôçõdèŸ88\8½rÚŽkEsŸ¥Ý¦.fç8ǵ7íêô·Ç‰Ì£–£=ÙØP°p9“0ñJ&ðݘ0†mÞÀ¨Cò/Óþ¹zaG ÛµP'äv`Iíãùâ‰-¨Êêå¿ùY(£ñ[„òißÛN¡nÚË¡dÒ>õßÁvÜ DìÏPMÿÑïø!f‰ˆ¦Òi7hª$øÝKÿ“½)Q‹~-®Uwúÿà(ªéHês•ôœìºÌ‘O Ùúëy°Ÿ™uU¦j§RöéT¡þŸQtظ4€#RsôÅä~›æÄðü4i§-+lý?ª¾ÚËÖë=ûð=%–ß C_üä_1Œ˜³¸…7ʸë`hp~õjÞÏE€×>&[ÊÆå!]b2ÿ¸ÙÜ%Tb':8€1ŸtCì@e‚ÇvÓøÜž1µ®üËWÊZoz©(9´„(1ˆßf­¦ÆK{—[,¨`ϳMÛ%4> ­ú±‚håÕÓèfOûø˜Æð%c5âÄ#ÇðÈ3òøRþÏæ@ùnŠ™=­”ÕÚÚéΰa/GÐQeö¨”rU¥Úy“j³-m½Õ£us;e#$X‹±Ö3;“Db—3;ä-—ë倣 |A”û¾í0DîßÍÉ·¢õ=¹GÃ¥Á´¾÷€§8¿¤úžúŽ€ó.Ta´IzôÍè1˜OU.F\H÷‚9…I,_$8"rLj…ÏjÕç±òr>ì@k¢‘ý˜>›-æNש`T÷MuŠüyX|—žƒ¾Î¬*nï?Æñ5°Ì,—†gþtϽ~†bÊq¾ó\çW?æð5ÐÔ"³òLO®Ÿ¦Uh7^É}™üÍÖÐðLñ{‰„úd’eJˆXÚ}ü–4³ù @˜ Ì€#¶MCù×SŽ¥Z.NVe¾Ü)†¯–H(§è÷J:M¦Šw:vO,°éض`ì ý”4Ù?ëœëŽîZï…Õ_-¢„9•Ìf@7s"Žž øJÞ\¿ç/uSQ9èïB‚ƒîÞì\BC£²aå$ô.ÿ \¤ $Vx@K…sÓšD0@‰¿V— 93ÁùÙzØn³LU ÎK\~7ï;CU>q†¿ CEÛOá=ŒTã-ž7º¶Ëfrg0?LmÇøQû£ÇF½ÜÒŒ×=ô-jãQ]já­ÖÈŽW-Ôós´ ­êjza ùãMGù˜¾·¬—a®BP€=ïmZˆï—ëì«e/Ö¼NëS~+°ØqC"ú°9æÝ[ŒM [iØz4ï½›Y©ÊG·«6Ý#uSþO:ú¹®@ƃ‡6qláæÎZ Ò8ø-tsâ ãŽÞ^‘tJW$ H‰Ý}’2ïlBv!òl}"¥÷<Ø¥‡ïf†S.±%öÀÊcEŽŽ£%k:ÚünÝüÈÚèj†ØãÞÙ“l<2);îÝ›a§ž2u tê;ÍÚK iu»fí&±D¥*``„"°Â#Ö0.é€j¥ùSòÁd„²$jRăìÁDQ Ä(â¡‘Œ"fˆBf†/è$¢Áóß;32¤0¨|$»6^Èf…°½8”ä¶"òÉ"ò 2¥ô  à @°ÂV™(d­6e¤ÂÀ@Á—Y+T“uakØ’œ’¤ì(’³`dILžÔ¢ü[.Bò‰J$©PJ— £0ÂÂ0 8a¢@‡É2 È Al• š0ª5Å  IP´ U*#JB ŒUI.J•)Qya Å–¬BA‚ƒ!AÍ…’¥&$(¢A‚¡H@ 0¢PA*¨˜f A“ ª¡I„h`@˜^ÙÑú£[ÖUê¹Q©¥¿p¡§h%ia.U*Ð&"7k'§Ö ±µd Qž)‹ÆVL’´ÚR 3uޯ5`ðn•è2ÎÛ%È¢Þ ½²àDÃ3Ì5 ¬"ê4‡ @fïÍñÍ&•ý‰ˆTÛ¥{÷Fa¯@¾Öý㎒ã­ì7¾ö󢸜®hI ‘(‡n…¤~DÐ+\¢²òn.+!›e¤köæ‚V“ZÇÎ8[¹ IKÎ T>ßI3õ‹N½%²É“Œôµ1´ y¢)È`Ò½#{›ÀjÖÝ=r85? –(¾rê`_Ÿfç›ý.?AÜÇWº| Ñw½L@ùoe(¡°g~îIˆäBtƒP°ûT{°¦H˜@€Q8RD" CfTKñ, †*øÅd™Md)¤dØ!Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€k|0€»:úïaÞ«××Îê§®ööìÅ®½-Ý»;3Ö÷Üùï»w-¯]õÝß}óÝî•7{tén×6÷}¾öwoR½÷wÝϽ÷õ믶µs²_{îïT@ 14Ú ƒJzŸ‘0ž€h™22hÕ=Ó ÔÌ)à™i£&L&)á™ÒhÑš!3M1M€M=M©äÍÑ3DÙLd5PŠOIŠ{@hÚ „Ñ£SÁ11§™M‰µOòi¦SÔÚ`ŒI´R~M56I³EOÓÐ ‰áO#@ÅM™LÔdÓɦ¤Æ§“j0˜L˜L …T“2hjcU?ÔÔlFÐ# “Lž‚= xj§´õž&Iú4h&›DÚ&Òz4Ñ=õ'Ci12ddÈÄdÑ150ÓÉ£À!“Ô›$"¥#ÂdÄÍCÒbi?SxšfF™ &L '¦"fÓÈ›@52m)§ˆÓУe=¥1©éè›HÓÔôši6ôѵOSÍSš2m& „54ô5=M¡£Ð¦ÓOBjoB„TIäÂa ɦ©æTý '¤Â2ž ’y¨OÓ)¦Á MOÒi“OD4Ôñ5® ¨è!j“ð(*»ß=ìnpö:AñïSt&N9°dfU‚G•ÏÄKlƒ:&”fT½ÅüV×hæ”Q³šÉÿN"og5è×þ̤Lääæz /(EX®µcL»Z'9Ûþ°6/*œÐÜ$À!2úä$„‚É$’@€ßr`Â`¢xžÀ"ä0·c+°†@ð`@ÃÁ„ÃÁ¼Ã0C4x]GÀ '€2PïÆãÒÄqt‘£Ò€€A7Z`É"$]Ás#01¿QŒ I8`B@(„¹c >UI€É%F&†F< âÅŒ IUŒcŽ áðÉ! $ $•0OD*k!À–¼ÿ#„Œk„ÂK¯†ðm6ÖÊ#NÅÉ€I*úઋX©­WzøBB@(BL, Æpáà 8~0Âx©¢ÅšëÄÃðD…ûÄô™ƒ½àQs>ĵmç÷Gïß‹BÂõ®úÿ 6ÆSgeíño‚’ŠP˜x]*Žë·.„–ù’À°fæ@æB^öÚc®8š~ Nú"óZ&9Q\ø³ÅÈ2ÃK›ß¸¹°¾Æ*)œNõ\AŽl[Tk„æ1,^X¿r=Í÷gqïÀ'ðãƒÁø2Œob÷^ˆÉ•²|žAl~,û§‡„Üìò|ì®ÍÚ”p¼Ü»ŽS,Ve¬dzÙ¹ ÆA÷¯ :ó‹:3VþçwåOǼŠ2:Ùà.‰SÙÛ*Α$v?"v†޳’Àm©SYáP³CXìÁá,¶ï-)ó¤’îH¨Px…£ñ3ƒèu€úzÁe_t vòñ|ضôP ¡½/òí­zßµOãÙ(’ô@½í¯ö4—é¨ãëJÀ 08p¾˜2ñ½Jª÷µ—Úø'Á‰q•µ”ÊoøÞGj¢$ù.úœ^£•ÍÀ!üTz}ÇOøÌôÌªŠ‰#ÚËǃŒx¨•úÿ{ˆVÓÀ=f¢G•3Ò¢Cäí­ò«þ`ç‚%”øú ûm©ßù»ˆRöݾ¨1þVnw)Ö¸ÛQ?ëâ ³ýCûÕDº’‰ÌÛ×R¾Þg¬eñšG¹úìuˆÚ3à |6Æ/sãfi*fÂ7håê¸E špùM"î´Y¥¶W.ar]kܵeIwÛ}…ò¥þnŸÐ’”ß߯žÇ‹Hö¿#xÏí&*v\œðyðŸ¿@ „‚{ Kæ”4`p&Ã’>5ý=H|ÈøÖÊêÄóËï—jØþ„€5Je#ýú„ù´˜>Z»(µ<@¾]>wÜCì³Àé÷òÔr¶¢$|›Jëć5øò@£#!ðþnïM;fÿ‡k±ºõùŸ—+Ó­Äe¯ZŠjL=t° %S‘¡–—ÂÎÐ`Ò°´¬„¡0‚Å„ŽñOà‘ﲚd¸Ì ‘Ö]fdçÌE²e…ÂiæP+YvH0,¯ŒÖ°vY"á€8,’Ÿ$ §E˜ÕÚÑ C½¬m£“0JÞ“‘–*ΜðïaâL•„…ˆhï ß5ašRºý‡êRñÙÆ%\ÊaפlëÝ"ý `Œľ<’1êo9ù/üÀ+$4Š•i§Þ¶°Ñ|j<Ì3„ gjçÙÞEƒú“Rà·Ãž»«`éZ÷ËóiòœŸFÙÚD¤k8²Ú臹ÁÄøF”¿ØüïlØTU™,nEµ’Ìð)“Õ™œëWh7â§­¹Ú{4È)‹cñ#ÖkéÙTÑÑÌ2ýµË-6ù“oFÆ‘þíß%Ù™(Ä?@–®+ù*þ¾¿ªÇ|¨ošÝIéí§ù[Y^µ³÷=¦§±8ù¶±Jƾ.½ÄZîð( z¯ÍJÈâÚžÖ¤ï2ùÀ#èŸÝ·Ôkp uàç›Ý’3>-&ú²¡ÿhÛ_äO—„P§_ ÒʱËß:-Î qy¦O}ÍM§u#kNOF0~ºaM…e«zØg–Ÿð1a~) dÿÒŒ’¬æ_W›ó®^™/}Ûí:@¨%_Ý íÚö™V{#´2HË·Õrt»r) U×ZÛgåyœ6aˆ°À$‹xktTó® ÇžFkíÊØ˜q{ne(ðÛà>ÀÏ'ÜKδ"ë¯É© p¡ÅW¼÷¤‡Ń„ÄÐdc,'Œ/¼ç0g9*÷xé¿g¡ ~u–š*kQòAÓÚIîMžå^¶&É óTŠõU\î"îv7q?"àÀX¾18(ò¹1ÃÀ )©už_®²zBFרa|—¬ÄÞJ Ü,‚éÝáG¨à¶áŒ'SSŠwûÊ‹¼Þ?w{DÂó§5W:þ7ÂârÐÝ4í›zTúAA.mGÇ ¬Ï×ûõ=JŸÕœˆkQýöœ#´t4=„‚=§´ó˜/³zÇæÛÁ&¥EØSß,ÓBð\ÚIìì»C¥ÂJ¤/tÉ«#Kƒÿe3M+Hðê~€ô ެž)R¶Œ ú[ÏÏ+í±Õ`jÓ®¿»'ìqü-¼E˜çï35ÈN!Q­)¹ÈÞk D[[ ZR›Eu´ájíuvLÜX /ƒšñÝ:ùÁ{#R—ßúΞömÖ+©æoA ïëCÉ¡>Las!Q‡EË:C«Êaª"ÕÖ)GTö¹9íeÛ%Üx8ï@#¬v%’‹CùÚö¯õUè5þýP0‘èÀ¡nµÏæÊí 4êÆóÊ¡—@T^—’òQ›‡@ùH¶á̲Ê‹¢Wÿû¥’x 06¿}C›—q:aæÈVœ¹˜¢Ë ’Š÷EBäEâ¦P`ñHoõ÷k¿vÓ7€ê®¹ðDâ F÷h9vÕ¶ß÷†W4Qr²-êðÔ †¤K¼ÄÛÙX•ò[Œ–ÏSZªƒñ´™jÉväÙOÀªdç>›¿“WñmVÎðò2`âó…Xºü§ï3¡½¹^Ø’înrøÔ„S[Ÿ.Epž»:mÈÀO“@ _&èkCjÂRÃø¹äŽYb°N báU¬«ÏÞznÎð„-ºÐðh¬!×óN#¥ˆ.ÿ^Ôõ:$aãˆM%Ijºp…À÷LñÂ:¨&¬ÑV¢ü(¿q ìA>¦‚Ä}«˜­¹v’Wú¹…1 7L£}Ws& a£4Ë}%™ÖÂÁmpr¡F¹I;id,ò\Àc×Mg©lfV󟽭.¾v­ôº|4Ý,q®\È/coº æe¿ððšsXô@AÃ47üÙpƒ³vòZS¿.m«S%® A¥}Yæ’„¿\Ów0—–ÇÎðekØ#µÄœÙŸÔvºW2æúµªÝŽÇ`n;O QÑdÅ”ŽÇ¿úéü4Œ{¡¼’*3âÛÇmDÃrÈ)q”îDŽ»RP{Æ)3@ø?_F£‹³‹Ñæ<ÝBÐ7A.ïPÆG ±à°äϺ.‰¯.È´Ž¯qcÁ¤Éñ»šÖ­öÉåæ,oÓFð—Oæñ‚Žþ†ÍN !TMæ>`cëE[ð] ”hµ['y ‰ŒÓD 0þäz‚Q ¨ˆÑMø¢»ZE{cØ¥çÎÅAÈŠèÚØˆå©sL¿ˆ®J$O¸Í­M%÷j}R]2öçcôTšŠiñà‡]õ%·?ltkÖ±ûõª³kç Ž(ÄÔQ˜Ï‚žì•{‰÷=ì0B=Ê5 ­ íŠ84@.ÅØ§?(3m]åÓE‘+'9Î5rˆäÓ›×&›½ÙÈÜÏ¡…LDå'SíÁ¬à‰†€TRň½¬<ÁÎÔ‘±­D³qFö^혟Kë¨/³#o‡Fá/§ 75I]žó•ycLÄOïÐÛÿ¸úªÅ0zcÔœ X†°§9 Þrz:çùµ…x6ÁÉÑüëg8Z1Gõ=UK«ëÅÀÝ´M-=HP£g'tM~&Õ¿ƒ·,ýu{MˆŠž/]ÙklÍO¯ÒVXÞͯ¦DžrZcPEgµ‘M7ŒYSÁçxFΘZßV­õÐ iG[¢þ¿cNN9é«Ò V“z9 _ ¦‚“rÓ„,¨ö‰¼F”îèj9^?!e*õÀïiÌx)àãó†±ñIîgöÅ}I± 0D53â¡  5M™f™»7›âu¶_â+IÏ…BZKÓïÕ,a1aüžÎî4°ž>ð tØÊJR²ËÕßÄ»•µ Li)fí;?CvXGG5Ïm04$]ÐOì¹uï7A°c2<²@*8Öլ׎§.Л>Åz÷\<¤ˆžæ×#Þ«´Ý¨W¥;ƒdµ*Y麤‘Ûh€>bPkS¶ÿ$êÖ¦zÔŸ†+’YžÞÉWŒ¡[3ókù…ã}NÕçV4 h€âXü×ßÌu,fÕÜãcÕ›ˆG!;)࢑:9ä±7EÌó­5~?â ÔË Vè§OMùàÚ± æ áEíÔ‚‰=/A¿èø #c.ẴìƒÏÜ7µ&Ê âÃÈudf<›R'5þQ‡—j*äe{²¸Ï6]î:—C·™{œö›ÝYJ>´a4§w Âvç.ßj]ÿÝõŽZÈ—9Ã^To5nÌ0=ã”z,•ÆùÈÖ(ÿöV™ëàd rKrõI¶®Ú¹VæÏÏm¶hc½~ßaÛó*û®‰ÏO\e+ÓkÄ/Ô¨¤ÿÞí55ó3ÓÏ ¶A± \] Q`þŸ¤³žy5órHV|üè ñ7å·Ó–Óº,#\ctS6)DVdn÷‚ ˆ¦9äõ)§Ò‰GQÉKõW‘º\þ[˜“5ÁãíæQŠmï]‹ê; ¸ ‘g'L ²že‡öRöd$n÷|ç=2!h™¡TA?EfÆ EujŸp¿mÞÛ ¸5— ýŠ;`ÎýæÖ]oæó<-¯K«,7çµ³³ÙVôøð©ý,>¡›-ŽqîÁ`14mOÔWww2ž ­¶8bÔÆªùAYA~d¯þÕN뺬ê_/1¯eX^èFÉ@Ì{„;¹Ã…ðÈÆ'|õ²UЉ%ˆMi ÐÁ]Ù-o#]¿1¶j‘Aó2 |Œ$Îñ~ÈLCdéœ3‚5B "€xH|Š•ņ̃Ðf‡µW@Hç,æÈŠ"ÝAßiÿ…áòÕ ™'¥¾ùqe„ô^N‘†ªóS×ÀÊ€"Ä6ôæ³b6q³ãi·¾… Nùóeš4í™æ*®.Ñ] \Ì6ÎkzHn,Fe|¦­&Ciµn‹”æ±ý (ê1D±kr°°±Î…ÄI1’;jªÀ5žJ×9 iX,4ƼßO°;€ž¢¢ÕÔ9È!K±ãFˆ€O7ï†ÛêÅÁNa©PÊ/{,™…Ö6û¼G'$‘ ÂŽ“L–X¥áAÔÜ‹ÖhØåE"ý ˜65;ÝÉGßɧ's=¼ %Ì6ûçñ#“[ ÝÇô¼&ÑAêˆóW¦`-á3ÙÀ<7©}ˆõºn,Xì÷´ƒvk^ט· [·ÐÑ‚« °¥ º‘ÎÀ….Nòˆp-”ð}‰4?OIî‚!±çò"Ø\F®5jlû“ÙÞ=€¯á½úûR´g@C BÍÆš"·"2"K²ì{7¼K%‹­oŽ>i" àV`vÚ0µ|L‚˜S1Ô€áÈá¸_²–žö.uAja9€Ë:FÔéGsØ»h âó­+;Ió<¡kSG^¯ß#Y¡•v\W¾<€~ ¡Û#àL8iûàÃ7.ˆwº™­ÊÌFѬ}B+ Â_*o kïç–Àˆ p\Ãé|¦2pAÚ÷=Tá¥AGô‹ÑÁMÈÂMi…Iß}²tœ9øll)-M'&?M°·ìOãµÐ+·]µÛìÑùØÜ¹NDf#H?]ðû]ÏŸÅ’d|Â8“0)W_OŠÔ¥¦´àsšA8NW)%BŽ™´ùéTý­º*6J1Ò±ª”ÊälRŒgpp:ä…M/=ù‹-ÑÊ)|=ƒ™•®çµsg´ï£ïü'‹¦‘KSìo˜%JŒ)poÞóØ2W¾·¾Äb)8âJÎQ¶#r¿Õ÷“ËÛK£×,ÝJl:°‰¦b¥Pe*GvS&é"o8iªêpä’M¡òüiÌ䕦eï?q2I“ºPc/|u]šöR¸}‘'«Bq»§·Çõ.7ºÊ˜×,û\Kþ„—ÅÍOLÒ“ç~p¿«ûÀÖq„ãç ž8ÈFвK‰ïP'ðÔ®‡J~Mì‰ÂQ^Ë]Ú¶¨í†”äŠÕe§)oÓˆYjÏ ÿ¬þxÈžÊK‹xËÄ·*¤($ €.ËG¦~ùsKs[?§kU`cë+@¼%,ŒO!£e­sž¬ú¦âWŠìüVšÄ‚x¹g›‹¢]Ïì¼êe»Á*ÓaJÖy5]|S¼ÌœûXcä ¥¤Sõ îtuȫشÍ÷L—6Ñâ~X{J‘›ìƒ©Ë]¦äºË#ߪž¨0û üßÉðÕm>¯©¢Â,ï•vØ>•ˆôÆ"âñ4É3ö‹4 m°> 8ªÇ€ÖžQ4=¬CÄqâÒü ñP·;ýïtz}w2€¿j¤g æùÜôÇ÷£á´²Þ›š´Ô»x—Ï/ÛøŒÁ´;Z,»X}=Dh€D`>¯ê úì[v¢v2“º£ý©Â‡Çãèfœ%×[¿nhAx÷ù."ŠÊŸgVé«ÖHÛ”‚OênÝÌ\*xÛž7ºËf29§)Wv0Ÿ#‡Ä„g|¾ûv£-žÒ>qÉ_Ûz/‹Y‡R‰õ4YÞ¾¹ê‡=$iqåúAŠ>B•ZDº¦™ ×=¢´ó<×ÚÇj‹Â“øÄ»KŠÅ~r›¨H‚ò%öÿ²…s|*hãøŠûm>,ï4-ŠŸE(í€ô˜hôF’¸Ió‡'Ej„‰#ûp\ç0Çž÷y#}>"»IêšPaÐݪæKvéy”†%­€ 8¥‹¿&L¢œ£e:&D>‚yõ’EýS§JŽ<õ*…n†ÔŠ,ü»õÏŸ`| lëݺ 2'úf2h›®’‡=)'7Ðw²C,ÁmÒ^øee›ohÀƒžm`Ä™gu~| ¿±}öm‰Q r¹­d ý¯ Jå륃³?û©L,†7æH“ACè”ú55^¡.¥±šnÆ-,%+ó…ÒÀ{…u’\Ï88¸ÝUpGÖ»G@KøñxZ…ÜONóõv3 Czâ—T*ÕN±Ãµ0¸ÿÞIëCÐeåÀ´8]P~66a}§RÓ‘ý0¢+qö8óïjçÜ5lj^30Çø_΢nß š)Ú‰2Ì”# ”Lt¼©Œ^~ÁC{ÎôzP宎ۺpÕgÅWÂû|Bo ôq²Ù6jJ <‚ FoCÜNdr,äßÌ~¡€’„µºÄùù‡ä•Ü Qõ©àLˆÈ¨‚Ž&;ŃƒLÝOËåNä·—í̇‹kP#å‰P÷ÖÔø4þ:ûïÒ ê´œrüø¹c„¹\-0®F«ŒèdOjVóþu?U4ŠÇs^ÃóÁÅÊ£^aŽëTLò!¿C9úÚê_§§haûÇ ÝtîMJ‡²âŠ–ïùò'­m*{0ûKfùGF7ì7J#d.ëN§£Ä~]ðêå×ò»]æ:+¾ùQéßÇÐØ—«+Æüc­Ç´-“IòœÇŒ]"yÍ\’OgA”TK4}¶rÜÂ^ë$ŸËÍJÝ“²ä´è‚лӆö8­×¶“=eҌܞòÏAD›h.ÓO@À¢ aX¯pÝÈVë¹[3›•Ï"º’Âýëé‹õ.Å£µÒ£¼]§éI‡åL½ë`Ò¯t‡\ʺ[}ÕüÚå]àé—‘…fAœ†Ì}øl"ã˜H“?å/ÞåæmÚ¯µýuQizË€V&ÂAuî?xÞ™ |¶‰÷ê:e¥F£ýyi¶pÔÃÑz^SX@o˜˜fC]cñ>xï6N{?½Á»§È‰}$ÆnqJj`ÁŠ©¹¼ó¢¶º «úÎŒNìvN ‚ù+Í$3Ps8‡y€EÏ ×ž_äõÙ+ÐXì\Ò4¤¸¾‹ëé°.´ñ‚aÈ£Í=dƒbñei”QhþI:'î3EJý‘D@waL©-Ýar()N³NÒÜ·ˆõLòRn-Ýî&¯½½ûŽy4ù²%ƒºÐ$VØ“ÄÐ2óÐ@ç…Ù>Q×u–tN #È 'ÛÖþ·õ‚²ë°= ƒ¥kŠž71ÎŒÌrwkaE«äâÞ¿{ÅS }I$øMÞ»ëÅ6AÁÿOk1?ü˜€b•×O”‡ÇV6n§\@²2Øc·a4¼ëät÷Ç8ã±Lý†uÁ»­IÁ~±EKÔ ¬g°í`ê÷è(ϯ§Ã±™f|”DÂæõHu|ÜwÕÝPbLWSÀÀll5<®º—3¬úk=n¯»Ù*äL¸®I-Ö_Eâéü½ø–ÕP@Õ§Wm§¢Æìlr@  &¯ÕÆÄŽ~nމXB,ˆj͆˗ÉE;4«‡ 5ƒJXm‚iÄöZ3D¼]ÁÙóÐ)wƒFîcÙBŸÐµ ýdo<’GOÈýef@Ëy2rëŒSÆncnpaç”Q/«7!zÚFØï· Þ\?Êx;ëË%àjú/ È@‘¹¡_€@dÔ^.SMÀ¾ÈìÞÓÛÍ©è•k837rÿTï­ÏL|ßØÌ’Ð{@(D#ÌÚÂï÷ƃæO;96á+ ëOŸ½wÖkwÁzòæç|¼ýÁsÆãËW».jùª5]‰þì·G2+T\z¥ÈùÙ…« Ö½¯t­¯˜_#ÿ9Œöùºæ=Á¸-t) «m@ƒ•:2¹E÷9*Í|mŒµQOöîZ3áB:ˆ^\¶®ÂÙ«XþVœÇÌóÍR%+ÕóXåùªh³äY]„QÓ”¤ê¦Õ;_Æ'ðé=æ¨ýÓõ\WÝr>Ñ"àÖ‹Ž&4·„viÆ9áäè;ŠÍ^yËåèð¡“=߃]óÌAÙÕi­e¤*·×L‡Íðu±¯´¢†]ñÅw–»9|¡/2ïz\þ§Á¥èSxñf¸œSãçð¡üÅ-'q(¾Õ`äì‡>¾Ã‘ÞŬ4Œ‹ö“/éÛkZPYIÉ ×£ãeŠÎ`Øo!–Ïwóúk¢±º… $¦|wدSø/ƒùë …Q›ˆä‚g–С¾Âî}DËÝ“°Ñ< ó4ò®9óÓôV=Õ=kÙÊùSÂŽš®«?xî"-EœŸ0Swúc*< Rý~•NoÂj0Üö#Kä/zP<È_UI‘šJùe`å¨U‹Ú¨íƒ3 fRÊÈßÈËTÙ¡~®Æz[ÅM—9Ôýõޝé+’ÍÜêxÔK=!n*w˜êµi,îwº.·Î·öš/Òl¾N—±ÒõTáÒÛAÌÆÁ¹ó·‰ï[n0¾MŠÇ8ÚÜ{h½Äœš6ã"wO8PœòS_s&®½û±˜Qç3ÞÞà”Ê­+ÕiS]9ÛkG`žÁ’Z+¶ò㹘eÈa×’LÿøÜ1‹?né¨|ô(&f–S Z€$þòÂG8@±·{[çÛ†¯-7^Ì7‡ìØ[ɵ˜rZ.1—ª‰Ú°!½Iıf•MŽ–œ[L/ä÷6‚>^8ˆû9_Ûè8.É)««|Ft©ï^M6¡üD¬7#•Í›_]9ë±õŸØojAR&WÐeF€P~k ò¥Ò“hMõ<Ô=ÌVX’¶˜úÊ/ŽSèÖ̽çFc{ìam-~½$÷zU’& œ­o90ì•‚> Äõ›!yóx®¨)PSEÑC‚˜—ù½ÃK±¿EZ(t‚ÀºO0àw.Öøt»ùR× êËO¶r K ‹Ž÷°ÍÞ`i‚¨-"±‚ë-£ž]xOùéÑQ&©0ìf­ô"³¨2þ »¹S= ’!ñ˜·’UÍÊ"çú2›]MºÓ³.¦üâs„óL :G™ùÚ„•d=ÝÖî~)ÇýÙØ(õ^M&f‹æQlì[9þáÛ³Þ.Ä8r}HZîô RÊÙ)Žxo®Ç îwu'µÀ)þª¼ùVüý?dRùìº ¸ÃÅMæ@]<)BœEY[¿¥†‹ Â=‹†1<Ïp=«®j”‚V«Ëgf7¡špžnØH±Ôs!'ÑØò\e;± VêžÂ»Ûß[ã(¾Äo"h²®4ÊÃàl…õTÖ/y£•ýóŠõ1@¿Sv߷Ⱥ·ìİ ǘÅCì”Éл¡\Hw‚Y…‰?i’CœøOfrÞ­Ž5¡ŒƒU-ò“\¬…‰íUÐWÝ:ån†ÑÓLX½Û¢x,É¡œÆÒ°t×ù û¯¹`Ìðå¥]nð/.ý#¦ 1¨Pó(+!шޠôÇÞuJu{¾Äˆ9¬‰þ’¶’½ãÌ«Ñ0ßR&‘6ööR˜õ¿”ïr¿Ñäæá,Ë}ë«&תŽàÝWŽ ;¿I‡ú¦GNtњñ>š¹l&õ «ØLþOùˆGr{Z"ê˜óüYC }L$­9±=ÛkâèèÎAÁÎÚlÞÙ[ã%‹?{/¥«‰×¯. ú—65]ùšŒ‘ÄÍßm£ÂPÜ?¦k+l9mŇPÓŽr±¬¥ºÔú’“ƒù_5–m}­Uœif£ñi*©"$ ¿æ3y¶õdrÿûÞƒëï|=ß³#w¾è+¾þËÔ°¦²P¹`cW͵·÷Vëd‘ëÅ6A·ùr0„åùò1›¼&ëáoó€Ãú3{Û&d¹ú´MªªÏáù~„ç.¿nô~V–=²Èš«‰|¾G,õ 8h•üz>) ²®KLþ_«âï˜GŽjåXOrNhß’ë|… E'aé’™É9Bpº¶!+Ÿ÷Ê9XåSÿ ¹"œ(H,몀zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025513607166133031615 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe1.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.723786951 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1stripe1.dat.0000644016037001603700000004761113607166133035015 0ustar00hutter2hutter200000000000000BZh91AY&SYÅ„\ÿ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿ»\í½Ì{Ò9õªßö½îé¬õÞw[žÏ6ö»ëm­÷wÞ“¶|{O5–û=ÝìšfÙ÷ß}öùÝ“Ê{ÕÝÞví­åc7­Ÿo¼UFIèÐ*~ÐL5204ÓFé56*~L&§‚›LTý2dÓЦÍ4š00TÿI‰“&£Ò§…?š§â›c#F˜ƒ@'£M4ÐÑPŠˆh˜ {L14z§£I¶‚a4ž§©±¦)éžLÑ'LFšbdшdÑÕ? Ó LÕ6 ž‰ä!‘¦dÓÔj3#¦S'¦¡U2L&Ôd=lŒÐÓSÕSm$ò=¢y=SÉ€SÑ„ô˜M6†š0˜™SÈ`ÓCQè„Äi´§“CMšx™&Á'µ3JxL§¢lb)´ÅRx=Ⱥ Ê ÊûÏèÁ§ª¼Ñ¡¥Æc˜”šãÕâ?KeøÊód.ÿxœ€ò¹œ½˜ñ+Æ#îÒ§ìBg8¸æ¸Ä>šuáã öÿ5w°m°ðxÔx8‡IÄ‚!låù¼ÍÞòjZÏ¢ËÒôyoÊóSœÉF󮢔»EHÆ[@Íh Ÿ>M̯°i¢åp«gU¾x½j^sÖÞ+_*Cä7bв¬àëOè™¶ óÏÞ¨ÄÔÑbA­˜ßkÓ,—ÈF¬íÎĆ—<õ—õ˜»œ'i>‡}°ÏLæòˆ.'`ü†‘–̃VÍi-õó÷Ø,‘oøD4jGâ Yn¥ÜÎxНM©}ÆV@ñúªVþä—M’é6Í’0l‚1„ŠckÄÁVd-<3…Ýd•Ù»˜—O0ŽMýÉ„–DS#É(æCö‡`̱,ÆL` b.í;Á…an–C7]ÓNi¹YïTw“›L§¨KmÉ™­xð¤Šô¹¶9GõÒ]®ŠvÎgŸâ÷;ïîªt/ÆWÀ—,¤ß\Zwïë‹ø­náF5›·äu=ͤÈÔVȧÐå#{V{ûu—›c¼ÂZèÓÃ"‡xó¯ç†ðÀîôé2ÕØ­:DÞº3­„³pÏ,€feo“œ¬¶@^àg0i ·:²½"‚¡ã¥ñ/‚§»d,uæ¸rB=æ£X… U¹»ý¤†ÛÚ‡Ïõ:'Ü{Ê2g‰uw™X*¼ìuÔÏ<(ý·NL“´Ìù¶¦ o%Ù:ô;ç¹/î±Ï{²FÝh“Ïå[¨Oyä¿3½ö{¯Ëêê׬Ë&¹2$Ч?ñhÖ4uÁÒâ¢)ÐÉ À&À˜££3¼zͧ°š÷{œ)¶ãðÐd“SêMêÛ´[@¹F~ í3²*ÃpèœÌ¸…iìÑp¡ˆ®UÈÅ+==Öàiœ³©z³ŽNG´×V•@®—̨Ÿá¤†hÑ§éØ·-×CÙ4·ò%ù:8•2ã,cŸ¦·õ\–¸Öµ”XMƒ/BÕ.@HGkp_‹€0`q@Àa Ñý"f°‘ž\ì- ¸O5NaCö¯ËF£¨Ñ ×ÓKäåŒr"O×¶Áòµp[šð.}oÑô†~…qWjaYH0D[ rƒ1ÓT¶´‹ýÞ„-Ïö†s#8öÅì]7¬mœ€|—¦H*vüè#è/“ZÑxR4 ,{º&‡Rpµøêê²å¤wÈÌ~$”[!˜§šW ¤Ýý%õìªB^™ØþmÛó9D6aè?˜ÿÖò>³mÄQF¿—Oj(#S¼ïI5oVEò“ýÍÁDÊ ¯`ÈJœ Ã=“É=’ßö_ùŒ‹Äï(ˆCÕÌãÝÖ‘6ûÛ~=2 )Ûä×÷IÕ—d¾À³j©GXGÜQû&OçlHrÉl…^ 2aÊ\ÏçšÙÃ/hóüž*æì¢uÜ}'¨+Rû†—ˆ zCO÷1±%=Èž2òP^ þÔÓÇŒucH˜² Š¢D…&¶É[5ºŸ^Ê ÃÏdžîòº‰e·÷, ûCo¶B]ª Œ¤ŸàLÀc"aƒÐîä6È {Nî„7ržÌ‹_'î‰kÑX³y:!ˆ‘õ´>ñÂ.Æ®ü©`ê# ¥Í†Š¿Ývu–…³2<æÛ®8(:>пESî³£—'‡a¼hƒ»¢î ‹ý¼¦j ¡ð`çþl•EÏ7@a|:Ÿ¼b¥È¡5õë>ÃÂëK÷FŒ„$$å¦ÇƪcÏ~÷·>B¿ÃwÎRPiUp?¾ ˆÎ1|ȆS÷0%“²´ äÕÚŽxMM»*ΉœZ±ôæ·å¨´Tù‘UY½>öÚc Aa˜ÊÌýõ¨Ì÷ùW™‰1в¨ ¤@æ!~µ`_厹O]ô1 HãrÄ*Óܽ.žW)~g90 Õ®R>u$+ì KªgHÜÑö‹õ¡žù¿+{Äêá­Y¶”C†>~MõåÒ³>þ/nÏmu•¤Ä†¾]‡¡ìˆ\üÜÔBàg•‹Yü+¡`êH ÉuГ˧Œ;‘ê›xÛeµwñÓÕʯ›Õ`®À¥i¦ÝÀÄß‹÷ðo¸Å¦KÈÔàˆÍdëñ™?i(š>¬èG“ÅIYçIJOQZD…"ÂÏEDv¢õ² E¸ÈܪNx¹œiÇ·ÚºŠ.„ kxûõBxÍ0øã+ Ä";à*rl ?$>W!ÒTÛ|à ÷ä½3• Žu(úħ³™ñÑÆ»ÆšÒ§úôMöWÓr;’—PÊÞ °ìº‘ƒO?€§²½†õ‰leqx*™-çá徉7ßùÀƒ:,óž{¤Ø!ÿ”.®›á„!ðà¥BjÉú¿°°ìDæ'ì´Ìü ƒ[p˜5ßÑ¥øNf¨ElKÁ¶"6®4íŒ^4ålS}$Iüïn1Ÿž{çR¹ÆÔ{ á…kØ¡*Ú}“FÒï4Êj©î³áŸ~‡ÊÜÖמÃc•“â;?SßÃ÷35ª3 6s4`zªÞ¨Îï ˆnƽï¦R€%jênË·ªž¢…Á½ÑgTbWb£§PöÀ¦Ä¬³ª†„–Ãe鉲ý‡G0±Uw´»ß{Y|Уþ£»¸i„»ýÓÅÎÖ­±“@¦y5- %½²w»þKUÁR2ì]:û=¿ß»0‘âé­e÷NBúĽ ›!ªo1_¿¼÷pk8BG…ûqÝBXnŸ £†ê•ð ñYø.[€ÑÉ׬ù þ„‡¨ Û:)œ“§’Ÿ‰C\èÁ»âðãRí¸¹º(JTl`7h@ï ¡ íÐÀëãÖ&š^»3Rª¿3žzÊ?µÎˆ$¾¿W*Ç…ÕôqÁ)>ÑòÈ Kݲ#Iº+SWuÞ ¥ÉôLxëþDô€ße‹Á_“Ó¹<[6ù1ðGB$5(Lò65+|lpžåö§¹/>%ËÑ,1©OaòÆAÉ·2Ÿ©™ðá>µ²qî¬/ŒSˆÃJ[Bš1X2çã¢Xöw¾]7Øï{|ymWg;Ó™¶å´=s;ÍÉõp×Go²k¡jÄV Zá¢û[ËZùÍoïѶ«oëßÄT‰ÁàÓ§~ R}OV¼0$>¸Y„ïŒ:1ËBøÙ‚,H<ÃO˜þÛš­ÃN‚Ïî_ÑÀÈÛaÛß&õ£ùÂvå‘´Idk‡p‹!Ì¡v ±TM¥­ñYÔ{–[E“f4ò(4B€üCmçøI‘H!‹äúqíBB"C X…-a«m¢âÙìøˆƒÞ^hžoy¨€ êÛ—´ù9 ͈Ãü s±œ×g¹^@  Š~ëã²¾iÿ¿Ú¸îÑÅ´¥Gì¤üT­‹ÿ™Ù‡ ކè5He½Zän_ÌG‰/p™£hNâ±–$€{h™‚N4òìÃÇ«¼çýºEVRëkÌBÕËû4m×Ã/R´OVú¶gã<›¡ËýùÈîihÁ[E_güw÷&r–¯îV¢1@ŒêWsw±;™·˜muMBsT¥9ŒD<ÄGlY•W4¥[4SÃŒ´àù}ƒÃNù¹¶Ï%jÃÙÛÔBĦ^!ôÀ~7÷nÒÌJOÙ|Œ—ñ2¾ýD6h H\h$ÔMJÔµWfoìÜA§¤xè‹iâ‹‘ø×pýNÎS­1-X[K‹•rlçqÜïè½\›í[+.jÀÂ6B‚dì‘G­ø_û X·W‰)m¿®¯@ˆ÷6&B#éŒ*äaï Gž™…2Õ¹2l~P!ý‹o©<*†Ã¥Jœì‘¡/9¹Å{½ >=†:ÏäÝĈ¼û>×9? ÷U }Æ«çWæ0ïbõè,Ðà@K1äÇ .€ß8uóÁ:0’ï1{>õ?ÅÏ×aõÞÓÞ~T¬Ò{‹þûóÑçªSQÔ;¡ùÓ©í¬7áSŠŽÇq0Ȳ4!vò¹º uz¹«ÅWÂdƒí̤«]ÊÑéi5¼9{kÙŽ{Z¯@ÃEõÚSeÝ—k7ë%ƒØ¶쮺N)A-`Ëu”µ’ÊGíæ†]ñZc¢‡yÚ^þB®C­°… É[ÆzxýˆÉ,a„ñ]ø´7þ ¥Ó’tyû| auÉÑßOÌ¡ÖýZØs NɹUEx­– ñufŽ-Z{|’Û>ô|í!ìª@ õ§"ñ½† p[öžñÓ›S®¡ÿÆŽ`t’™Ï”䨴ŒX>»Ò /?ï±VqÙ“•Ïtè[|–“;nÃTø{N޵'í¹’çÌm;ת.êDÒéök?Wèqù¼¿iB-ØÕD¥ïÝò4{Þs[ÇBvˆ‡ÙÀ¹Ú4aÒ~˜•-.”‹Ý•ò¢/¥ívíI'ÈÌ0Bw{%ÇIX‰•3”ŸÞù±(r?ïÎâëb‰êl³ŸaëÌzS)¸ ‡ÕˆÕ!ŒCŸžâϱÕÉadÛ}rbÇ3†a€–žFÊË2ðD7-®UŽâ1ÀZ’Bø(ΉÁ4Tåõêê7’ÖŸ[†xSuíÔŸKqŠ*-ÕÚ}äîëÃuŒ2ªÔ·é:©„·ÿ ¶©w{‡oX1vP;fE>K"Ôê€[ÈÄí]j-v€ù¡Ö¥ì‰vž7¶c žOÌþ#R0…Ïó¬º&Ê\|îs+tbgÞ< {p¥@5ø ü½ H¢cþ&¾Uo¨›nš,µ3Ê/õæwYÙ×#ÛÃZ¦×”k·O¶?Ù|ut\vÀ¼x…ÔÔùÀýy·›roª=Urå‡Xø·Ò6ª0CÈ¥î¤2$óêkmý †ÉE˜¬Gx+aæ˜b¦ÚÍÑÆ0ݰ¦.£ˆPWâ;“I¨1\cάöT¢‹NR%g÷_ºÐðJ–aè\= ß”¬É©| „À!'.$±­û~`œj&˜±鹡°Î+.’‚Lý¤‘ôôê}8û«5›{Ú6jBe¤ˆÅŽŽ"tÝδ‹BÔ¢ýëšÉȳ‰±Œæ¹ 1KÍaÆ–ýµ1Õ˜¨ö2‹Ãœ ¢Žõ© ó¥¨.^åÈõCþÚ¾úu§Œ5FßôKÿ½“€¥»ØÖC/üݶà;×2Øó턞*•3±¼élÿ'-´nœ} –Ê߉њ`×OÀÚ à3”Š!¡;ïšØiÐŽtYp·{ŒÄ„+ƒ¢qçŒÜ…¶uL`…n1¼¦,Tù%»¨-x~ˆ?ÄwÃhà‡iº"+¡üå´ˆPÅaê÷­°UsYÔäçRÈ”§Ø§…ÍmíÕTª˜ÐG¦M—ñç,Ù Åé^P:¿bþ¬|ŽªŠÔ£ @ÿ³ àz?Í® "›¥¶¦§C&¿ÌÄbÎú.Á Æ>|Þ52UÁ!´¸u)½iÔ¥&1‹ð­pâ ›l~­‘ôŠzwŸsl¾VpóxúÇûýº=‡€ <šV¶—i˜äù¾I@Lù’°ÕÈ:¹®>Nªc;ë¹·¹Þ´Æw¦‹F0Š>€ÈlÈ:¶ŒlÏvê^Q€^lIòJK´ß3½¯ÛlÖM{|3e™ÆT¯â ¤w/çýmçÿž%’“õŒÙ[-MõY¶--¤ºk®Ð"Ní*Á,¨&ÒžoP.â¢Øýàÿh£ B«í›–/|˜%ú%³ˆ„¢®/æü*=d:©í¥ïn8ü4nÖŽÖõz“ýcëiä%ê;näбðUÀ0çj0e;~[nG¥§ÇÏËMŒ&¯ÓK¶¥Sr\ ò¡« Ž|è¨ÖЮáGŒÌy·ô jØUyÉ6ÇmSÌ ) t†ôc:`€›$ý­®M¸*) d%[¡DÖ”¤äJÌéý+[C]‹Ã(~ë¯þä_¸£}©âöK…ωT—¢ž·¿p-öÇoò•4U{ÀÇ}ÿÿYÅe×¼îÔW±ˆeéêºÆ^½Eîr™-[ºÚþU×ùññò@ל°tã%s0 2)£ —1‘rJ#HJ°-q£-`½”cÑf=‹îÝ×tãwÜÛÃÁæË NÐŒ‹"FwÕXJ˜Àp *m×O²^Ç1{zSß"}•uóèðŸ5M¼Ðîö;Ó«\VâÙ%Óº%“ ¼îs&Æh®ÖÊ—ŠÀS©ÉêĬA ‚’ÔCúbXzML³kï,lú¯NoiªÙ2 "†‡VÁUØ_YÞüëâ Âgs™ÍltÇÄízm\£œ¡ZLÖJla§6ñ²@ÄVâBÒª†ÛW_ø‡†ûª®Ö¥Ü! Îlm>“°m¾}[„íq9ë…ôé‡\šQ3Žè†ðZIZ:‰œäXŽ'A‘â  ™Ü±}IÓ–.Ý3½®ú96Iá°xVNétÔç¼+&3zn¯ÉkGÍü“Oò{dÚÿõ?y¶Ê—Œâ}0jД‡üøÜÏ®áê6ä‰R‘^,Ë]޾éëAêÕden;-¥ÞwñØ¿,­ž‚Dî‹À£¨åd5nò„@ÄB~+e½¡òÿ½‘³.¼2W}Î%¢(8ýr –¨•—˜W²Š·øÖPw¼i.‘n´7ö¢¹õæ`Io­âº<šÃ›ò¯“aTJ­9)öºÔ´–åŒ-%Kåz`;Q2¢4éß ¤Dù|¿Üôx×¹ðKžæg*!5-%A!?Úè÷ï®›]úc¼»ëu]ï#Åë–X€@C;a¼v%79ŒÜv·óe4ÿªÉ›£üiu¡ ã««8ïûä*|jwk8ÞÙZîA»›é|ªî^ÄÑÊ¡—J ¢\7²ý.¸¨øô†Éx ¥•N«c€"•Œ5CTm´ìŠxÔ°N¼„ø¬'׸ý}WܦEÓQw·ôj7*«[ŽsˇÚ÷²'€{õ`j\ýY×`•!>»¥š+èån›Ð¤´-Zß5&ði;3‡xÔjPµ±îwDÈ+ÖöãÛ¤¡÷À’Ë#Õo\Öb£,PX°³òh«×÷ˆÒ“» ë•ýŽ÷>m=QîxD§Æ‘zO¤Ve ÜýÿC§@ÄŠù«éçSPsE[ÎJŸ¨LëešJ9ø†. Ûa-×Å‘ŸSm¡Ó>öŒ>s©`+69³K䪟·{9œºN•³m¦2ݹÊèޤt“S_íÙ’]iÊÔtõpûöˆUjC«7Ûâ+¼š´[A)ty•6dì.XPŒ¾AàžiÅú­†nQðˆ~³swËh%ÚF…8µµ»ÙÀˆ–ZÕ¸_3¸.jdŠžT¥M²pBûk~ïçawl™äíG³ÊÁ²š­ Oírö "?•ŸD> [÷÷½­À¨œ¯²«ß TÅ@ý×?ËQD‰Ì­¥W+«O¦—Ô4UTÇ€K’¸ò OM¾Üß3Âß²Ûêü­“[,»Træ^‘úʇjˆBgoÄ[*žgÉîUßûÒå•x¦w%òš u‚ߎ%-ê¥V•ütxË/ + ˆ ÐK_æŠ*‚­ë𓽧ýÿÍ¡ì4­&aÏï±jGe&RsÙ†-KqÒõ~{œ&L.h§Tî°Ba ·ŠÝ@ø?On^sZH%¶„i½M18}º½ Ê3ðÀ†¢vÜòЮjØLu8ßtI["šøP™ëÚü@úwüº)՘긑Nz™2 À‰\+HÒNˆaWŒå¬æUhÆÊw4Uggºœ\#þ1¸åý°Ëí6tõœ±…œTlµCV?D¡E/áƒÔcd2çnv*4¼YíÊüÚLëŒ;¾$pô,@+™1íªÕÓ =÷u½_ÜßL!¼§~îõ`ǺîƒâÆÄê!2½UÛ«½µù2ûÿà¨ÿGªÛ8Ä‹´â£ÉÔZ°ŽÔ.Ñ¡=¹$>4á!†r/)h§#ZÈ3]³jŽÃn̆W”Øú§þ‹¾½êˆô2^éà×%ÜS~}Öâ‘M•öDÒ@0 l9nÚÑ:ÿw9O{]´ÍTñÅÞÝsô4×¥k:Ö-K„h™u8ÿì°P²ïQø©ŽµàÜ­<ÖÌdÌ×Åüƒ=ÑÆPB¹Â(fI>$uJ4x²c2ÔdzÚ‘Ä<·ö¹ÕT¼ñ·)(>\Ïå§ e<­­uŒP¨+ÍS~}¶vôï‹»6*ÍK–9¨£'6·¸5CeBßeÖóï®ÖW}â®Óõ]…¹…¯ËDžò¡˜Æ°ïf^H;E¦»È•|èÈ@›Ôt‹½W\û'&5Móµs¦ê,k*kz¸§VÍ«‚[hƒƒÉÅ» ~‘ί¾Õ+ ¾ßELÒÎê¯&þ;2{x€©ãN>8 Pa€Ù8ÍÆ>«ÀQ(až —h+4PÄŠœÂªÑïÐŒóù9™¸\û4è$_ $8¶Ô£¿B6œ4%Ý´æÒîÚ3¢`¦YW4Å—‰Ëãô9“Ýx1.Z=w#Ôš¯æ‘üKËRàà£h„g}Ö#—XÉSVø¯°4¡ºqÜX¨½Ý:a¶ $%þëB¾4„b´4¸K)ý ¢”Ý–Ã I0L­^!µ—ÑþöŠp§Ì‡í-K 9ÌÇä |ÆáØW4©^‰—œðqeµäóÈœ.Šp ¨Y™qKæCFÚÙ Q“БÿÔÃ5Gþ®ÙBhU›X¥ÚQ‰uÓé6KÎWN1NßOÃÇé «[YôÔ” ³ó§1~CŽbÜ Ù!dpù¹¸”‡"_ÛŽC‚†×Ê$+(VPºEBV!Åu‡ L‘…,Swæ;n"%?¶X-6ë yEò0à"¼‹mÆ4ä7ÔǨ‘ µ”d­˜™Ù Í~’Ïlê-Üz ô)gM¡TEm÷ä yë|Ç,mû ¨Þ¡|¤<çl²ôº0Êää¦üRž³óP§þþÒp~ <v[mBy÷Žöâ^šÉiÆŒ¸—›.[6T¿5‚Düj­Ý%¤i¶B¸~Ü ãæ ñèç5¡Ã¬÷»Uîü‰œñµ<ÎÓXžá½ 0yƪuÚ¬tK6Îø7[ñ!ŠñM_˜å¬Š:‡ròº—øàaIjͧ>TÒYž—²ñÝì"°¥Ò°‡Éº”¾l*²Ë&bŒk7riõed°NN»ÈË­ _ùò†JëŒË_Y¡± ïNÕ$:âžÙð.bf .•kš+Jú@A>¥^&ý$^+¶É£Ê½ÿÛÌ&,ýP® ¥ƒl¾· ;°”SÜü§%‘K‡“·PÝõš'>sy+QÈ¢Öý¬ bê4X ANÓ_la~,Ìy‚͛Ÿ/8å ï.KŒ_©¤•Š=îú¯¤J)‘›óÅ“+ŸJÐÔAg®skz} ÛM¯„²¶ä.‚Q}ú=3ËÓ*°±¤ø$îû÷þU§÷ÀŽÞT><ŠÒ‰Z.›Ÿ±IÃU ´Oz|q˜^UýàÍu^V#f’÷%¥B¨,pm˜®ëgGŠéP°ùŸ-“Rܘî±-MîuZxúïGz/öçê\³Ä`­ŽÛôa«TAr]dþ Ï+Š“u»s5…C¿9Á!ƒyœÎaª(FÌ¡'Y5NæÄ8vï°£{$ÇÞ¾¢ý_~3óà!$’HYœ*¤ÆBÒõ±R>Õ>Ï€²Èíâôìo2nù›îþ9N•ËD8¼}Ù…Q®àøæEVúAI›/ÕÜLð{Ëô=1¨3XÙ‚ìfã+â­«Zú@Óµq;Pý‡ ð/SøL03. A%ÇyDÒÇ•! =¥,YõŽ®Ý…«$Â=Êlþ›®{—7p;ÑÏ€M&¢ a?Zѱš®ÉÿÌPVI”Ö_ùT(€)ó?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÆÜà>÷{Þ}»Ø}Þ×o½ëí½î÷»©žö÷­Óš½Ùï]âÛ}óî÷¾»wÚ¼ûîîëØ=Žu&¾wso7ªï¯wYöímÜyÛi½ïžëï·¢ª˜4L§£ „cQ¦ÓÓ#&"dØOD54Ì&&M0†OJxž“Iá<¦§µ4bi“ÍSÓÕ= ž’y2xƒA6§¡6¦&ŒŒŠTôš§ú˜ž£Ðh £&IúƒSÚ”ó&M¤aO 6L™ÔÃI7©©à£Úš=2f“ ‘©ä5=&&4m=”Ø©ûLˆiŠŸŠŸäTôõ==T"¨™£Mb`)àÄ'¡©“&§’x)àSôÓ$ØÈ53)äÍ¡ ž™ƒFA„Ñ4ɪ~¦i„ÓSÔÙ2hÊzžýM£& xš&ÓSÓMG©úô„Tš ÄÓÈ4ÓLO&‘èš=0ˆð†M&jf¦5=4˜ÑLÉõ)I“ £A£Ñ&Lš=6MOi ò„Øši‰åMC#S1 ŠÑ¢m4€Ó&™0FSÈÒjfMM‚4Ê=£B4=& ”ðšM?Qb=SdÉè§Šc&šmTÌ@Ñ©íLLSÄ2M¦“ÒzL›Qˆi”òbeÉ ’II¡¦“ÓSÓjM2£OQä›!6‘‘‰é©êfHôGG¨Ó4ÔÓLM¡¦ÒdÉ¡¦ÑÊ2zLL˜ši¦1 4ÀL2A¦&i¡¤z†( 99àŸd#ÇEÀž1'lD‘%¤‚«Ã`L$, ¹u5gÏx¤ŽçÀ¥õ>=$•f¹Ì»I5,Ú0cÞY3JZûÇHÚVz û1.o£*«ðê£ç^Æ—h³cPí¥T–G£iÍôè–öRöž¼Qg²"&.3XÄŸ+àüÛîu~ò³G›xÌ ’¯Ñd ¶<Û:}•$Q¸Ýùô—åç„Ùî­øÃjÖûõP7Ç%è6^0«u;C•È?T‘-kZ…g&“Øôq!2t‰ ñXuIøÃ4&ÎDo~0Hþ¸ºzX½N“êiáÝêög&Ru§¹Ö+Üîò’jÿîë²?Fó3žÎf­tZŠQ EŒkc!$$A„B—ë‚T`W‘{;Ñà4Ãñð*H ¸òÁ‰rjNÀ Â,pŸ 0Ã0Ÿ¸t£ˆÁ Ã!A–ø¡Œ"ÇÁ… ‘ƒÄ!%`"ˆ‘á0aI( ˜øx‹HÅ £F z§¶C?2l~$ !$½ ±‚aZ0 _ã‚•„—E‚ó"'%NÆvƒ$%¿ŽA¯7Y½0øWüa‡âG3G%ªÛÀ 1gôµ/(œoXHIpn÷ׄ $„ÌaF &†1’o nXOƒ¿p‘±÷óÏŽÛwæ¼-îY¿~~Lm¼‡TÂ^ô;•Åñ%Hã—o¹ï}gà»QN‚`[ß5Á{HÅ0…•g0!3 “3 K<ÈÌ™€fBfI!æ@9’¦?–<œµŸ?j®€l¬.*åfïQßwAzÎ^aMv®š!Ÿ¤,Ó¬I0+þýûá3Æ ~ÙáŸÎàø$E Ô®I¥òÎ{0ZHp•Ø@½Ý{‰Îm<ÌÍÇŒ 4„4¬0p£‰¯"¯*Z¾ÁHn{³…‡¾&èc¢ˆ wSEÆÞää‘ÍB¸8M=é[¸¼_µˆ EÕ`l¤Üà\ê=JÏnÓù«D1½~ÕhTÀöH¼W+þ\NBp‹²#®²€´(§\7·ÀÐÇïÍfÇûr]€ä=|ä¿ÝÅ€-Ðóxv—<Æ‘¹ëpÞ¼ƒ¬œ`§î1pû(cT·z‡¨.Íš6#iÛ¦ÃM†‡F\ÀH#²Ð×Ey88B-‰, ]é³ 6kì_КJ=¬›3 4øþ“ãk€•]]®ËUE«ÿÑŠ W¦‚¥ü,Dm^ÚSæ[Ã7"ä°Yõ1ò¡:ò ¡ìö¤ }Á°],!»HA:«˜¿¬Àr×7 |8øìËñ®%|¹tç¾h‚œâ‡ÿu1Š Å4jãþåŽ1Ôý ò‹ž“0v«—SéA £õ=Š|›`Øp¬+R=?¾ù!%,›ˆ(ØQŒ^•CœÖ½p—ŠNóãÓÛÔ(Rª°$Ê1òÂoߟ3>ÐcÐ7mØ‘n÷Ïä%ÒåDàæÏ±í®&š…Al‚wtŸp˜ÍK¸¿xFÂDgAÛÔã'tênzÙ@¬øÈÊ^N܆Úÿ(hµYxº9<}Hò8:ß’ªÍÑÚ-0hõ›KòFý ;[¾3¶ˆ&^ë¾O-Ç!TèP2ý¾2Oó,Ã@8Æ¡%Ô½æ°i_G^x½\‚˜Ô,­†,9ÇŠd¢äßú5PëRàpçÒ™|…! 1èuV.¹]ßHýDø"éÔÜnÒWa;µ2 jާ5SûÑZj7pÄ›´g/±²¾ñÿS,=X²á„y/7øM²z†¯P‹GhR´]ò°*2ì×¾wæ"ãagzB¤~Ÿ7|uÃ’Cƒ€y´r·Wpm~ÀÒbþüió»yu,À„„ŠùÈ7â$Š øu¸@¬Ñ¢­8‘R} cg¡{ÃS­s·ÕKVÀ¹5‰ÛM€!‘#|šÙZ…×{ƒž{;WÏy#K0¤¿ á~;¹NÔ¦°~Ù÷­ÒÇ´»r½b>ýDtŒŽ~2ï!f±Ò+‚H¹Ùä±WÚrÕ¢àÑj“’²¤œ‰znön««öyŠì*-—,^7>*±l*¨¦ÖVvjÜúýËín-ZòÓ÷¦{bÅëx6V»ß𥃧0z·“9VObsŽÙáLÜtÈ,F½-¥èr#8Å7KÒÉØöÑçnÛ·dþ/¶W¬=Ôo ‡Xù6µ ·=A6LÉc0k˜Q”¡ÐbœÚƒ‚Æ3?î¥á¨/AgòD¶V=íJãu8ªp±îÚc6@ÓU»çΡä9M<g<îZüÅ›¶x k]Ë€ŸԤȂ.d’oj]7ž‚‹‚,‹"Ö·ì):ž·ƒ¡€ï¨à3•m¸-Õó&ÝLÜä{X^—€spºS± ßwúEßoœJ–ûþ%àÚ,M%IÊÓ*Þ|—Äüñ‡«‘ÅVZ:PºÜ[f²¯C–Ãxž¬rü ‚×@íÏdÙq¤œrójzK¤¾¢Åmfæ·ÈTϯ”ûêiŸZœÂx4Â81x;ç T8/–øãyÇŒ'̹^л³Ò•²ÉÊÑñÐÅ_.ûŠäéM§ä„Ò;Ñе!ƒ8.G¡<õwl,jÝ’ÝVVùM?V#­Õ/–Wͨk«¸©`¯¡ ÖlQÓ¦—®‰õjèsùÂ.qÛgß—¹~ý·.ãõ™æ¤ÛÕ6ç¦\„ölè¹VU08LUÁŸWïjsšîÁÚš‚€£GVÜM)QžTà Ÿ[3Þæ‰"Ë®Ä쬘íûÝ(jÇ~_*¥–»Õæã3gxLÀ”íb²E ÕùõžƒTpÆÄö†ÛJÓ;ìþ’¼VÛË \Z,™UÿNW˜žŠÙ¿ý;#[•u8>r‹‘ÉîdwÞ¦’ËšÙ51ãÒ™ôi7®Iwõä9û¯o“Ùü8b–i_àlèÑ•ß_±5ÞŒ.š4Î_ucŸÙ>´ ÐÒ}Ï :ÊóÞÌn†µ>â©).ÚË©áYú]Ï¡Ìí1bÙà$ÁÁIñí4õEîw›û˜ÌRÛöu dœw²~äNœ¸ÙŠÖÒÆx”*Œþ–k¬ÈÖÛ%K$ëR (¦‚ïZXrZýnPZô‚¬P¥x¡ÝNŸê”jè´{k},jÚ3‰FcOõû‚m%·Ì`׉„¨ï"©_ûõÖØa](q','9Níh.”‘Ù‹Æ_c–ç 5ü1]£¿  ðÛàQȦÓ/%›j¦-Cït`ßML‘t’ |V²O5|&óá»m»h¶úe°*Eçië¶ò›ZjªÓ[0÷aÖcõ´WJßOõ6ÎÑ©zç!7YÖµòä͘¾•ÀS‚8-/ô7×t5¦$âï(¿“hsºíÖ0„\™È®&JÏ×;¸šånø°Óx*º2m3 [J¿ƒÜš®|)„îæjù€oèù*ú–KZåAƒ€×è{oâN ¤ øÀBW™u˜—tP#¯ ¢<Ý'ù…B%@ø-ljH5bhMv5¢‚ja"ºWÝö€+€ ÀPë—…jÙ\ ¥¥îSp2¥.¥0w8ªÛyíû,riIMÃñ™å‘àxü€ 6Z(w›\„>â™,rëŽÓWÎtýþ´“Ë8’ŠûˆÝUŸ `{ö}5]›fÜþÓº¬¯Jÿ ç5›eôâLi*f(å¢J)‹_—xf&šôŠ>þ1û`{fßUô« —ö5›tT%ÁTƒ?ÅÿKp»NT²¨Q€0çÖQÌbžxõ­’¬ñH}óuP¹zM«·±XL:¦!ô÷×*~Uc==‘úÍë™ûñªüâ¿`È£ë™Î X5=FœïüFºŸ¥fýò4ˆˆïÖ,0‰Þƒ<@B_RÀ¶%wÖZò|€5h€[ Ĺ€¸˜.ƒc=®\%Sõk]¤‘»èyîÙ~‰ìh@´§& `¸*òg&[>˜ê± VŠxüA Éö‡VóÖ÷îÙÅݰüØfÁó³8´È¨ÙùÔºÔ]Þ"÷×c%YHG,—è1 ­Ó #=€FlZef·Ã‚08ÔtDº3½Š};X.¶GέE5ŒMpQ‘'@$AP¹”@l-BÇ«ŽëoBchË} Gƒ»ñìä GâYZ¥8Ø‚XºÝ޳©‚."èÆ(5Çrãgsvªà"kq* >2f‚±®X¦ÅoNý††2ã_“þ}Vì\œõ €ä¿<ܺ48AkW²yǃî2á_î·=Fû/ÈÈò¡Aóìn]t:n=%yÖ†ˆ°„X¨:bfxÇ€LÕs9[¿c]ˆÍÎAˆ©ëåvÓ—x=æ«kǡєÀÅN6œ.:Ûýv¯œ˜zˆ_2´œ0OኜˆgÁ y¢ú˜Ž%nôþ±o¶7 &0 ' 6ÝÊï–úJ+ÔÓl@ÁaÆ=QD›}Í}µã;1û,Þàc\¸’y‹ÓÎùC]ÝA Ë_ÛÒÀ|kmÝ•t®q6sr_, ¯¯3ÎòÆç“i´öW¹AãÔïV)ÆÆm‡RB¢ ÃÔ:Xª–EYPŒîY\ ù:‡g8Ç­TàVfÄÄ¢³¯8ÅÌØ·XÌìºG>¿&}Ô¾ýÊMÏÓo.VÃŽÊÐz·ITŒ×’bfHäÑêY_ÓY'œÇ/­Q,J&XÆ eþ$ö£î®°VS'‰Q7™X¥27T“Šú°á¦7A–€wfúƒc£Ñ5ôüñRÉÁçq”¯‡þGõgèËfÄúR]tª¨z‰dšêQ™ÿ4R‘`AvZsªs,KEØËÝâPÇõ´˜tœÒ¤ådµkp½p‹¿‚9õÎüÆÊ”þóJJ)ŠÉ¸!ëî‘^ŠJ#†ÔÍcûsú!•ÉÕ…]¥ np–õ/N5À+(‹};¿Öóƒzwé2Muð™öÙBÉ@=S;†8§Å…ž¢¼\7ÙUù0ž Ó]V€G¤ºd“%ˆ¡±ùŠÐÑ ³J*´öÂȪнÔFˆ¥¯Oö¥<~3åKÒö¦©ù‡å¾ú~Ú¯§!ù`"æ;{é†z·¾Ìí äƒÿY_õ?ËgÅ勯¼LT;dN÷ØF/#X³C¬Î¾–pœvÉ[ÍFçIôZ§‡ßñI€a¹h)¿ñgZyêÚ‹þü²Yvd jA,J(ùœÕOÀ¯KGU ܲˆ~ïP½ˆX{4×…þSÆ%™ñBúk¸Ëé;÷®_`[6w;Ú~æUJÕZs°Û· µ=/Þa·×‡S´PîT[÷6O´2úm†ÙL‹ÐÞ$·»;)J™ˆµc-¸˜Î¢åìÖèî½ñ¼YI¾/ÂÌz ÿ²Wð¦—ÓáKçš-å°™[¤KR²økÞY­kd­ðn¶¯µ+÷;æZ5ÞÔ1^à ÅÑHßš<Ê‚z]EÅ”9ôÕPfœcIÚÎQò·S˾}†:TÙR^HŸO°“àYŒíuVyÛ©yµ_*^Þ¶°ÚÏ’Êá%„C#ó\d½—gðU½HTÄ]§g­f†æztj‡Çæ´G60Šw北ދ¨š#“çáâÄÖÂI¿E Þ²Bx& ý±©-%4—0ÃU¿OK ™4ÌSl#w)/NK+ƒý½ÛÇ2\:,/9FLX}/{îþš8(@-ã¢ZîÎ_ü3y‘_…ËGøE(ú¾­±Y3’OwÁ+»b˜®?‹ƒ±[îró•›6OÚ£¶¦ÛÖ±þ©L<~²ÝSÙüÑË5Xxᣬ Øßêv}5Ùü<×·åµ”ÆÖ3üº†Çä]Ó¼¢½ùÇit.ª¾tª*ç#…¼XÄþ»g½¨Åˆ¸cfûÉ#]¢ð}:´ü_tàòu ǧn²8(j‚âŸÈÝ I—UÁ±3 e¶/ä·^C¬þ7ðéÖM;Itw>]r–r·Þ4Rœ ¹ê– ðš;Õ’xº¤Ä=ÿK»BKݶ<Ü+Å6jç£SQÓîê f=)Û·Ãê +-Å{RâÅ0Œhõe€J4¿¥Þ Åkxä£Z‘1cËm°Šîì GëÝ3–îÙ«,P2[)— —#¿o‹þÆMRM?þ{¯äôÓ§€·t¬|lúªeêîÁÆÙ´®î!fM gÙVqø²˜ÎD:·qøÓ~ú–°B)rÚ‡ËT9ŒÞðu‚·À{4À;4k²pÿ*¯*Y4<‘ÝFHÅ µ›‚P¡²²ÞÑÝ®ð“Öbf¡Œ|”ZÊzËW¼2ÇúÇë¨ãÅ:ý*æPójr§SŽÂUÄ®+°5Aç†Aà!}-”.½ÕtØŸfYÆ8üΙ"°3Üë¼÷‚üÂÃÚ`Çdd'lþØ¿‰Ã·æB‚H$ùY·”ÁEBµùw«œ¾37ï¥0±RqênÙŠùâ+*:Z_Œn8L¬ò§ùrO×eÑJ4êÍ,@]Æ“KÍ{Œ ÁJ=˜ïq&§ÝÇ-LK"ÃÊ+PZ8^f•¨#Pa¸îF_J™}YódÐù`tNש?ÞìôœÎ/Äú¬,þ°ö'׌©ÝX§cí] k0¿‘Ò“»¹ˆ[8R‚?¹:ÞEì;½s=†4Ý1T™Ë°Wó6c…]ñøën¸Ý¼G§59/ßZ„[Hj©LL¥©æËË# €Þš§ä‚—” iu_¼³vuQcð³;ž‹¢Û?X½4N϶g1y÷iÕ,l¹ÃÚÆqŠn 6í1mŠNx€Ö|;H‹aK#Â*ë;‰Í;°V`TªF!û`_ÒöOß  q“”Þi«rìk¤vÑÈã¢Î\vÿ©ÜeŠáÜŸ¦Rƒ¢×µñLLq÷›<ÁL=³¦FY²rdkͿϑ 8\m‰ö5¢‘èOÌãcgŽvß ‚Ù0°57bŸ˜ŠêG­¼§ÈàGŸqÞ²NPªÄxƒƒ•ˆðçË5š©«'sÔŸ~†¶ßÕÉIÞÕ/ÝæÅÖsd3¾zêw½LÍe†µUO§¡½.E·¤æAkÁÛe~gêÉá¸_ìþO¤Öq®}&_wxÈcc8tš×et]ä|äŽS;Qÿ3?’-YÄ Š¡‰gç‰Zw“•éýQ’Êrs<~ªüÃÉph?«+¶ j”š»Ê÷ÏÈœ´JŒÔí£6Ä¡ò°Žî^å®&éä7o’ÌÛ§£F‹™'þ3©ÑÿHvA¨i䬳œåÊ<äø¸2}%Ÿ{è•ߨW¯@_õLù2¿Ð›b…tÕÿ›T?:„ñò%K\¤k>©Òâ1Òå5lëFôÀ­ú§r¨œ8ý˜ -Ö,K¼HÈÆ©!ª“=³û:¤Ýw®oèÈ Ü9 `‡Hå!m!Æ­[q`7ãð+ü²¯æív„bi^ÕÛŸ€Fï¯h9ˆEsød{­ Áˆ†xšyÁæ Mà#ˆþ;òæ~îWQÙozÂ’Íý<‰‡tV‘Ø—ÊË™¡Q¹Ó•®ŸdÞãã¢ë`óIøxo3e`^Íð~UqÕK1u,§«¯ÛbÍɵR$À–´Œ,SC:¼Ñ…;”¿ê’W¶ÎÓ"qú)áØ‹jÿjå4t”ñ~¯Û¶(÷¦Æ‹ç eEŽû5LËd¸¤Ë§~Yò?Îç'º Ãâ0ÿmŽD@<»ÍyÍ9ÆQ¦¬8¯lÔRÊÛ§ïtUjGü¶¨…¨C<ÚÓ‡/Á¥ú5r†wrK #ž»ïàCð_9)DPE—ÝõÜYSÛÚ´I}~=´ê´q‡É•¯‡^¸I•‘Ø=UwøÄtÆ*™þõ‡Ë•ã _WC‚£FRó&G£GäéÙØ0HL)p®˜ÿ6¯F.@v=a]u\ÎyÆ÷ðìE½¿!?òÈÍ×Z&w‰+™SAŸ½ŠêÓ͉òfkû>UQµ—wËVĵ }ŒddhÔs/¡¡ z,b6C±ŸÔ“<ë@ V…9k¤üÄã'èG¼ÉŽÂZA„Òøß/ …,ó£ÖRKúg |ªí`(j¸UxnÚž7ÄØÜXƒœIûOnR2öPguФêϨƔ4 =Lì¬P×Cb¢ÍUAeh™_d±iª{¯­úÇG »(Ê“Ž)|©;S^k;ûÅh©pm:¨/­BÕ_oМÌ/)+zšB5ý)…I®iAg a“F4o¥©?&ŠÑ+%Šßl·¬|ëL¦&Wi3£³çîVG3¯îŽß4W¼Èr7°o:ðÒÏ àþv?fç@ã­¨¬Sc¿Z·M<ïøþû9¨1Øqe¥®z„މy\:Pþ“BNF™[ÛnUErî:ÚJûj?=›B…â%øgi0üÅĵº“ʾأºñ) xÛ;ÐñºE+gÍDDÜsµÑkIFr#¶˜I“â8uañN ­ð· Â$eÐÛKi ¥¾¼ŠÅ5¿³÷­à‹ãÍ,Ç9z)ÈnÔ`ïfXsl mV‹®±oÉ mñeÜ5˾v£Pàă• ñŒ:͉ЂæÄ"¼ÀýM Ç~µj”ŽŠàe[ •Š|¨k4J/yÖÒºG¢Êw: øÝš(˜¾ç¬‘hTºZÖ-·ñÌqžî4K}‘Ö=þŽ\æC-"ß‘ÐÆÂ_Î+weÇ9?ûÚåªÑI¾21᪯‚xHêd–Õ¯tÈK'ÇM.˜m"÷5âŠÒ(«Ë[P—­6óV"›'°iãêâÊYrÃ9nÊ.FñÐoã¡Ú+D;éG…6L¦ C­Žß¯˜ô­kŒm\Õ‰‘©¸ùp0šKæÛÕÚ‘”6ÉÑö­åú´Áäv þÉwóúÒj´ƒÖëžþÊ;ÍÝ2‡É?ÏPº^ *N½ŠT´O ’¹¡]¦§ßª…Ý–.ÛúPF”ƈ“!²’[ü.º¾‡øÚ(1îë-sØœüqÀæÈãh~×îXj–ËŠÚ¨í*äm;is Ö‰%œ1ÐJ¼pý úñqHÅxZÈiZ›Õbó¬ðï†^CŒäWY®7Ö äØUb&Ì„ž ‡²Ëß°Y‚Ì£Ú¼6b€zÃ-\‹@Û—ÝÆÊh×ÝÃÊ{qüz9Lø©¬86±«Wé¼ú÷“‡£M DÌ^Ù«†í6.QßL£ezæÞËg½x|õ·}»™Yàôû=ÄTßÏi Ü9®DN>FB[R$„’Vr!L ^vúc&‰Sb=? C¢Zâi祒öf÷Öà­:éT@'$DÒãˆ3£0/q¢ŸÄää ÁLnkJe8<½¤!SÏ÷«ÂÁ€d}<ß³ƒoÊ>ªÀÃB…‹Ðýä~u¸`\-lNX é^3¿—Pu¾’ÓëóRûJüÜÒ×™PžœõYM½p5@ºl‰¡`è}lª_“˜$÷Ò´=TYzQîf/ÿrE8Pôíé]zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-b0000644000000000000000000000025513607166133031577 xustar0000000000000000113 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-broken-mirror2.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.691785925 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-broken-mirror2.dat.0000644016037001603700000007114113607166133035055 0ustar00hutter2hutter200000000000000BZh91AY&SYžùÚÏËÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàB~ú¤×®x  R%U*¨¤”UEE} C¶«£7Ö¨ÙSke÷{モs½m¾ù·×½ëÞ·n½¾û¾ÕŸ}î÷{»¹ÙîõÜ÷š#¯e÷½óÖß9LíºíÉŸ=Êû}ÝÒ=wßkí{¶ÝÝw½ë­÷Ï»ç×½ï=möÞÞâËw¼nÓЭîÝ•³Û¥7Þ÷Üê»Y¥^À÷b”õÚîmnºZÍ^>ÞÞß|2©44`¦À£ÓLh44<˜šM¦M&ž  $ñ¡ Œ€©þšhOSC ‰‰€#0@Ó&Œ˜“ÓzhÑTTF“OQ“&Lšž£BoSM4ɈѣFF"z4фәM0&LLJ~& 0˜&†§d4 2šjxi£IÑ’‡&†I„ƒ*G¡“Ò6SM ÐaSð ä™0&š LSòjjo&ÔÚÚi3@d˜ ´ÂšfŒš™£ Ôa0ž &'ˆ&L˜Ðf¤ÍPeH™2e=5TfSÔõ6mLd2zM¥2PÚ5\”¥ BN*ÞŒªs„5€Ê`@è‚ÈÜ’FÓBHLnNð‚ WìkÚBVVBF™€±rQ•¥€‚q@L\Y¤,ß)÷Ñê“#@ÂZ€A!PT˜lÙÅYÉ„­£hÈÊD,Ô 2Vðí6~=†»µç½¯#Îâë+a9l/.,Jí~ec—alóˆÒWÁ)Nyªëme^wg>Üþî©ß›rùïÙ#^Þž´ókYÝž # Æýmo÷uÉiU4Ý—˜ßj¤òÔŸ¹_VýÓÌ7ìûʬÊìZÈ©ÖÈø-/&S¹C¾Ô³°î1ô}÷KtÕW®ívnËuj¼¢Õ%¶ÄXn4ÕMõÏ-;­½G#!•ñxnü¸3»›GÌ…õÍ‚Æ÷ö=2üì«ò¸쓼·Ý6å»~ú#Ùb¹Ü¾Û?[0C¤¸ahѵ¹ÔZüeâŸb~S³öýú«o9^§wË}uË,äŸU5ÂX©T^ ¡v Gt÷x÷v|4ɘ¢Ô»)ž. Þ:¦ðòèS;vò‰VÎtl÷¦9¨g°a :Ђ ¬2!0‚A" ¢@wL‘+¡¸[Aç¾›]èÌyAl¨Ù ‚A0~GøÀnNœž«ñ0ƒn0©‘$2/‹ƒ8†Ø¡UZMãÒ3 RaÛ¾İ̵ä‘×¥2ëÖ¼;á·ÐÖ)@ÀA0ADx$„U“¹³8cª<âø¥tÔ 7Œ !Ej~,&YÈB,ÄU‘îB–„*(HBð Œ ‹4­B)b‹2B* H…T{HEQTÂ!TE2€ó¼‚B·È_ð.€“„ (00Œ *Q`@RÃdà ̋ 'Ͱ ; $Àf`€vtá2W(ô#Ê!2%é™d¬;6Kj?IÎ+›Vvm™\QH’V1nåû¯jÑžaï‘!A<VñÉT;†+™BB‰è0<„oŒ–¦˜`Lû ‡4‰9§ô2:!0§hÁé6ÏP˜Ĉ}ÇfJ€ÆUù!@ äD?Y!A´ Ç„"ñ‡ß>wΚíˆOΡP<‘ð[ €ùXÉǰ¯ÆÀmYÏBçGõ½PH1O©nÃ0¯*B»ˆ\Ègœ˜é[¶Cèy™…k !E?[Öΰsa2ëI’” ý{ã>É…|ÄI È3E0àCHN>p@©Ã"q„¹ÃVï¥ÐiBÌC®H/]²yÀ¨cNiBÀX“'4HdÁɧ †W¤j«3Ì èŸI͆qóJ@R :·,‚˜@o£ˆF½ÎCp¡hN‡é,Ñ$ +r­0!¹aUg‰²}v¼&«(Mu0•º v¨Žè![y²W›:Lü4›D7À’â·I µgóa€dÂBª%¡ 2î)òÂÜȘÀdÚ @»VÙ…d¬?œ "S-Ñé“YŠÃú}¡-ÛqpO˜BÈ÷Ìhz¥ã¬Ú+ÆÏ`ÆÕÎ4–Á€Òq ˜S˜! SÛHt·ìô_îzܳB ê\¨h¢>Ô—Òè0í8u¡F‰VÀ¡‹$\@0Ñ ÃhØ W2©@[1unëÃ4&•·œ¬ç$SµnÅ”J@¾ƒL®ÁC‰0B«;;x2Vw&WyríëUÙˆqêÌäšÎ•]#½*4ß<8§æüí»ò· Uî‰Ùˆ`}Ñ ÀcŒq!Î:H!\“Ñ<0&²ˆC;Ž ›œ)™€AÚˆ^Žþ­g‰î ‹]–¡óš3JÂ']vC€ƒj4år¼ØL|2MX8fÍX„H!ë]hÉ„7jñÁ¬v¤3HZ@2¬ pÇ‘dá`M; Zè^_LÐ#HwNÁÿÓØ4.qçD>6f“¨B7ŠÁ„®tBC¡*<¹3™ æNþè]K1€÷ÊôLdž•²™Fé‚D@µC–fY å™Ãõv¬æÃ»tb…Ðñ_]Ù¼Áþ6Ðk¼ ;F¥1dÅ7ñ³(ÐË`jIÐÛð… Ë9OÞû˜JáŠêwÖOì(y¢ìgpÛ0!;ÈœÃļ± IkêˆL'Û\JA«*B€”jJ¨„ÉdÐà „!xDºWÎÒBƒ½„9üÓL&„#U‘ ÎÈ3 áñàU¡Õ«9æÔVCCËÂÌ!¦}‚̘gãHp¬6Eìî‘¿æä »É7ŒdÏXãàÈtðM¸d>ÄG1ðH&>£™]ŠÄ…¼#Ýòrû̆’A‹ €dÃhô$ÃÀ5É“;ú­?ÂdLz»*jþEz 8…iDÈ ‰+ œÏ äÛ1»€çÕ†äpÁ²gó0Ù-1 ªÙ™¥2Hw­$Bì eNyYUfxâeáÂ¥P†¡£ÈR' 1j!PX ü‚°PR:€²ÈyQµ<–f»@UW¦áø3ÂCTW–Ç^"î¢Û”V ”$z1 WœñU£ ꣄=Å»Ü;Và²Wµµ é2$˜VvNd¶…´ð#Cx¾q’Èž¹å+ûšèsZd©N'“² r¨¢d B #`tP†@0»¶‰¡/¬ò@Ùž™æîJ`‡ÙkÄ,:¶0±.$½+¨!‘x¶¹WGæÛ—NIÌŒ™2eµ :,0öà@£cŽs:L-ÿ´45Рf+UùúÓÛ«£ »BÓB2V; ˜Î¿ñþê¸P±zÚa¾ÕW~ãx~>çãÈ¡ûrÛ¼.£¡ôò`­‡¿:$Õó,ÌÂy!¹‚4f¸˜@ ¤ï 2`2¯Z2o\øçµtÈiÓaÚ‚LÕ,€âð“öÓó²«PÞ_Å=;‹?¯XWœx…Ñ+1…a†Ý†èBd-Ý(‡{1Žmž‚Ê×9pÒ‡‚öAïšsÌÑe1’…§À3ÍãD/íáã‰á‡iÄë7ÿ]kžsþ¤W^¡¨|}7ëÝïs.0GCYYȹÇÞþ¦g²aó™6@aÛœÈùÐLiÆ! ÷#O5Ïš=S9§Ûï™Zp‚è*ð!Ž•Yö!éh²[ÐýÆ÷ÿ†wEÞR‡H8åã/(Y¹·æöì•Åp:×_BÝúIâ®&ì½»ÝüãIƒyÿWÁÌ™A\$/Åpá'2 åN€H\ñá00ŠÂd+ö«šI0‡<â[–tM3å—„*¥›¾¶b!@ Ã:û ®3ƒ„ÌÓaZOõy&pmØW¯VBM˜…ffÌB’Ž€BfLâ“™Va k!3TBsûõJýМJƒZ×ÊyU¢§vØoµ éºì©ÑêÞ¦hz»Â083¡%mT}«g(ß´Ä&WÐ&m„0S§ÀP@FX.2aÖiD|‹ÀϪ?ónáQ&…Yó¨0€¥m‘9A!!^Kâi!|ÎæÀ˜4fü†Á y)Ü@€H Aù.ÁTû„ü¯aÂyEiˆXVwQ˜mÐæšáC”B³%m>ºMñq 5)2W„„âHàÐ3€¶W<ÌW¸£­ ¢A£$3ãÆ%ý,0Ó…kÝ(ì*€£5ŠàD¯’”œÜ+;ëZð·PYí3þ9Á œk@$žµ…±pA¤Y“³†¶¢`« ÷M õð~rµ):zSƒf‰YLB³ 0û +~À…åçÛÆ°Ò-û‡8‡»°ÎÔ«âðµHjç,r/š¦¹Zn1ìpλòS3´CïZ¸>çeªØ_·âõxýa´¶ ¶&sô²áÄ9‰lkŽ#ÆïÃêêüi‡›„>štO·_)0H ê»ý÷íUËPC'ë0Í¥·k`m3y!\vûåÞiýÏ©h:„tœb •@¢e®°Yh[8˜†ÚŽèá/™ÒÐx­€Xý‹¹¸ QÈšD;@YÁºWB<+ ñÏj‚ÙÕ+ 4Ahv>§*ü`†eÍ;w¦3~pã¯C`Ø ÆÔC \4 »p­°b&wçVÓĘƛI’¿+öì+¡}uhc@ª–Má]q\+ ªøJÛ>ëç:—\í‡6ŠÙ·-›;Y¨ÌežíÅÙµÐíZÍuk´•ñ¤æÕ²q­uqà”-Ë»…z‹Öõ_aò‡Zxã~}Ð!j‰M†‡f8öa õfB†d p‡d9§RØr cÓ9Õj6N%]¦|g1aè»ÃBꆅãÇ¿C±ê\ãœmUÄ6¢“ˆZ¡Á7@È“â"½|Šá¤Ù°½¢m¹å³Ä»—ž~ªAU@MUø†È©' LܼPL9q>ªâ6ð)>ÞqLzě̩­¸%ƒn„‚E\?l£$À-…Òz´‚üîxœ‡7®D°žµþtíèY[ÈMý×!0kCvB&]’ÀÙIœ‚v9[6º³°¿ŠúÄ b:¥d‰ 2"n^%H&Ô@&€ˆ—ë(YŸEÐÈïvCi ¿„m‚€$rêÁ’väo]¤‘Ú°ë Æ«ssÐ6²ï;rzžXI4&G£gÍ}gý2²šáñºÉcß·ŒºÀ颫½.¼§¤_Ê©Uj^LjÆ‚,>¥í^:­zÁá¬OZhêÆ”’qxJð f'l¬Ú N˜”¾²I¾÷ì„!¤Â©ök0ö*ñl‘+…Vß=d!|!'2®3¶ÙëÕéùaô²=بC]p!ÕÝéØq§ˆ!×`R+t쬚`¶d$Úþ[5Œ%Õ-/­yëЃšY¹y¤Vz !L|?3«ZƒäZÎÝ hs3X„´T_þĞŞ„¥ –¹(n~$¼¤1(ˆbÎ L€´¨›ZiMø(ù:¥šBüÝ|ý6XåÂqÆå‚ ž\I‡M?H‘tývËõýPi·C `Æeå;ÛºyÚʤL:üïE3Ùg2^.‘¢rUòªz¯°ä•œººä«<ΰë[zíYHÃ9ËöÿÆcAÁãPÁ0†Ù|þýßÖötõWî~ó.±W‡ ‹ßo ëâSCbÎqqë¡€L€IY3|n|1¬8;ÙÏe÷©9,xóÓ!'®ìy°x6Þu{yŸed!ðA–8¦ˆÌÖ(dç¼þÜî1;ŠN£ó{7ƒÒøËz¨C•µÆpöƒÖ½|0†wùH†³˜Éüw‹Ÿ)}~w\!Õ~GÁÏdtþó»_HäÕ¢7í䨋ö%X9±òBKµHX˜iË·s9—*Ð5Ÿ:!ßjA»<ôÈn¸èQwñëR8 jÞŸÀÑ:œ™H_)2jíý‚°HùPA <ÞE!{Nž‹÷Ç÷*~wè0@¦¢ñ=FU€H'€èˆðz÷!à –CÕtÎB£Y Cý5h2'hR‰>sÀ 8GJW"…‰x6»Žà£–Mˆ£¬$!ëègkÆMAÐhêXï»åu?ºº¼æÛùûn-¶WØu¿sô¨)nèòçÝîÀ^¤¯KÛÄ\V?F\«Rö@uZ³VÄ>󂌭ÊN™$ìâÖóB»AO ®:mÉa<D;[§zúÔsç(×ÈOÔBmáQ˜ÕK`ìá|`Bñ‡jä)·î]²³"ôÕ(-¦•ÀP€Ÿ‡Ò‹­a±“;¾»™ùôÞ 7I¹¥žÃo);Æñþµ|6Pv˜3‡M×µ†ø}ä;7°pLက耾ۘ äY¯TB&xšœ-_ë3ÀMVP|±Ä›¼èÆc¬¸VBCôɰ;wÖÁƒÒÿ³jøÈz·! Hw¨€­Å2Oüý\ùSÓW,ÑÏN­:Ù\áó1&+‡l•`vH¼‘Ò&lîã0Iü):·ÐåÙj©½ºT”LÁ©ðt”ÕâwW[j›ñü¹YÙS"AÕºÖÊ êË=ÜUoÙC–â/"œ÷{Tݨð&: ì‚3à‚)€HK lªógÄ%7S KL» ÷&£_I{Ͷ™5 ü¿’±Ö ¼%þ65îYßýµüÖ¬t´ i‚é ˜kí@`æßY\Ñö”ª!n@…B¹_7¨Sçøø+rˆ<ž¾”²‚¶¨Õpø?3+GÄøïï;U^Mªž²¨- fƒ•¶µÕ~ô×· W†¶¥é®zcbùÉëm·Êktòÿ˜(‰4GÆU Bšœ²¥œ[Øfù'ñÇÑ%ÑHêU,ì~Z‚/Q líe­iñ1´6CÎüîó˜;™Ïu’>ÂЋÓ&=§ÅiáðâMšFB°SA”l‚!²7&‘ýL;0¸Üwnø,¦pf™ÞŠ»O9îM!È—þÃV²Ž?í}s õɬӡÙmͯkh†»}éjy»ã°Çhj¹Û9‘Ç'|Y1­+Ú>"b¼Y]„òB¢Xõ;xr¨Y'qª ŽišÉÆBÅý4ª55ÄÐ0¹°iMïdÙwYyL²œu(o×OlâÊ }e®Ÿö-ÒhÇ)’iÖ‡µ l¤D‚hcÙæ¾ºW"M;7eU¦m¹@E´ìì ,R.Vï¢Ó•LF?’]ç·öµ%À³)€3C4¹ !Hé`bäáÖgÄù'õű-¶Û¨¡zEû};j욎åjøf3™|¿E14 @Ýf§QœY o…Nk·î¬wÕ*I(@u7¨¤ÀÉ··õ=Záó)ø{Lê$àÖzѪ8Ïí"gýaä¨ñÊèüŽxçJƒÜDq‹ô 7€Tn’U¦n—Ö³=œB¶Îãý‡I%éC«=òZC²½dC«7Èêmz?¬žQ®Â»,NóÑÏrÏaF‹'inñN—ñ{úý Þ‹kÛö—ÛÍÕrç ¤s¬ Vº\÷a¸èü}¿½½`að“Ëâ›ñ ã‘°;²W!ü®I +sÅoéÁsÕó´ïèÊ4Cz‰¾Ì¸xWô[xÝg¦ [ýZºNt°þ?ŦµÉ6“hX› Œˆð@³ã £—Ã^Œ¥©1€xRÜ·”ó/LÕËÁÿ¿2Mksú¤£½dÚ‡DÀ@ÏX0씕ž½¾Ú¼˜™ä¥–‰ÙCôÚøo·7Â¥DL“Ž÷x‚]ìë4æ«ÔùšÊU,Ø•~¸µøD%b¼ Š­ÀXð=Y0@¥N´)«4ê<ÿ’ûÑœyŽ¿®ÓçúŸŸ'KÓ–÷¹ß‡ü]Ùãl„;™óÐû€£ó©Q+‡ •iYF×çøQÌYõ£#³7¥J˜é¼¿:nïGš˜sw7ý䓨E—D¿z³FGGáëü¸ÐÉ¿lñ s¾Ñ[áïUzÛ÷w'‡¬Æò–ýÈ6$œa@R+v$×ÝM~ S{ð½zpi4F“ˆ¤Â‚W¾yï?'Œ³2D/ ~)ØY¤Ë #}ôºeêaØ8ÜQ¹íeAÁž³}d02¦ÿ¨±e›0**<,xè|ùî´5úõV4I½®£QäF^SŠ1#Þ¦g—šè)±o‡zSs¡ÌŠ{[̃µBP#8BFáÕ;õ›^ßFìt i5¢ä‰Ñ)‡|úémÚŽT¼I²­ s›ÀÍ_y±‘[ŽÏ-ŠìÂc(ž-”æ9Uuv\·v”ï« óÀO*³ô°¹ZÝEùÞ»8+ÂðîJ&Ÿ¼„䌄W¾Õ<;¿Œ®²’¹•3¥]¯BeÁéè½*Ó¾­NÁ‡Ð¿$hËs{÷0œo&²ž‡s5S·{QO5ˆœ6«Îüu`3èÊžRÌ‹M†?ö "éùôwI*å:jp¶~Ð@èýß)0®ß>+Bˆçž|{˜ÿFNÎ_ú» ‡=®ãæ0à=¸r2k ߎòJÛ0Go2½³øÍiWø–êÛ<ÆùÁ—]0 15q†á“+% 3—³ê3 ÛÁ Ñûo}ýøß³Ï ‘ÿîc„ÅÂm-tÒ¶ÅÁÍ3,zaZšPÑþÈúý<óŠÊ9íÊò¨ ¬…¬‚>Çà8}Úë~Qœ­š«zœ!SdÃï"ìô„ì«#“À¾\»¿£ˆÊ.8Rá‹ýõ™)ª¯ˆ?"€ý6Ÿ×Éë†9ÒAr°Èí7‡!0†e_üeÓ]ò•ÎŒ >çWëÞþ‚ØC±Dù>zGê!Œ’Ýî[ƒ®ÞHÇŽ o—Û§VL£ûnc",Üq˜åë4˜à|ù¼Úø¸3 Ù2|«„VéÊõ< ®_ÜÒhÚ7OÂÐ|Û¾vV±ÖòJõ_ã"¿n¶“ýójû5;zŸø¢-Q–ÇŒ O»£|d&Vš*|HCPüRª!–x„+J­À†Í‰ôY‡VæÐÄ4Ïq+8òÚr­ †º•¨aú»!>—Å#¸„ÝbÄ$Dµå÷×SÞÓ´øÞ¼äïÀ‡½`ñŽ˜}ÉÐÆ}ùj CO©©ä$Šõ†MDzöá³8‡a¢¹hÊ:¶÷ œjŒ€€åDìÂ(ÚúÿØö™u¼n]ãü/öù›…a¦2é}NßKêØ; 0@·À²ÞDzúöÜÞŽ_agáÃ_ÅšÄD p7iÊ ÁW&öÀu¦|C(ήVwàWëÜ¢²z“sÈ~ÝÎli£Ô*‰5¾aQ( +`¦ÌÏ >êŽõ¢—oã ½@±&6³€­(*UÞÉwéíÁObŽ\_ÖÌÿ©{ÌfÛµ€´gÈjGÛ+Z€Ù‰ ¥”B R‹.é’©ç\H`® ½JÖD¶EP³!¡:|ë1Kþ^nõâ^êRo#]MÁ­Ÿó†ç¾ž®·¸ÖQÎ;ùWZÝð_½ß™G $Ä,š»›…+5‹°óH"j•³Bý´‹Œd”h¥6^³ÙRiÒ]¸åæ·´cÔÜéü«[ñÍ}xäD­ `¿¡ÍW —3±¦fÝñúI Â× ü¼^7Ïûís?»ï{Ä9-ðDoÓ&¹Øøx?¼û§×Ì.‹^ˆŸ¤f(þ¤b _¬TäæD³”ËÔ¼=e¥mYød¼½ƒQÒ2 Ÿ~7Ñ;“aJ|3Ÿ†³S•ýYBAöªãùINpŒÐÒ…Ç&A]ðRzÀþ@U;‚Js`_HÀ¦eçñý-u=sâì']Ù~o/¦¯%^ɦ}N±wHØn±ß|ðŽTèÎÛaÇ9ó iX׺”Žã!±7·ñzb3Ï“êÆZÓ¶"7™/³œ¯POé=Á”ž„Xê?k‡ ’ì‚= SL„uÅÝ$ÏÕlR°ÈKìÏMdÞ>v°ôüž_¯AqÙ3Àصg4ƒT&) ‰RYžÅG²Hˆ¥É/v~úƤè®ýsý½Q¸>@.ÁC ö_"àÔÛBâY Ò“~e„+üàíÃ=e€q=þOðOÜw£û„BI;¶Y«™ëtü½”¿[oqõnÊJk_X.C¨ &ž'—ì|¯9kÝBãCøÕ½f®ï ínKˆï7ÙÂNF©•ü1-ˆõwËo†©ÌKÒC‰Ã³EcsåÏ6>Y¦Å®|e,FB3aŒ9¶¬?ÇÐÆÜIdÙ‰²Òc@÷íê 8©zûoÃÙÁ½¬§]’ÿ~Ð@miE”ˆ×\Yî’‚†ÒÍbj¯N¼ H!ýÏ[d' ­2Í`÷ìºVéà‡—GCIÁO…\?OèzÐ¥šÛTÎ,Ïqf#S ȵ-{pö`ϲÑL¼°² !c^”ËB˜ÛŸm¶¾:¤kÙ8ô?,w<ëË&ljxõ³Lé­Ñòk™=.ÕPE6÷â¢kİ®RM# ú^öYGµ„‰d yó~ì1RK; ¤$™h´M:°_ºWÚç}^gÀ¨WáÔ×1Î^„c|ÂZƒ8ÞÐ!@q$¡u¦û {ȳËbU¾Çs™oc¥“`ÌÇWNP=Ý.1ý.ÁZtyH\ù®àÊ †€À`!È0!€N5JõÉß‘!Z­3ã“ÊNIõ!“‘VJÈrAåÀ\¨Þ  ü !€NÙ:/',Ï\°&4Ž[#ÆyCŽ¥!c¶ƒFh9ÿN U„G•‰ëÁ–ã}øÎÛ…;¶˜¨¦Þƒä;·1·mÞ`Âv&ªÜ|ß…ûZúïwi=Û¢›¿ R|޲‘E¶j‚2Š!W*2‡0%‘Goêo ÂÝw§5rÅÀÐüîŽ)Mˆ+7>Øïpöÿ›ÊîsŸß‡Ð@h>?á@Ü€-}ïò mI|˜KŠy²˜ÂUl’èz1`(Œ ê0S@|ÄðAŒ{d ÊB÷}#&µ}ø² Ö|ÝïÙMbO½ŠþmÖ©|¤VŠñ Òu"!z#1¶ŸpÕãÖû ãu˜Qñ“±G­©2·Ü¬¨ruZˆ@7@AØ à„c@ML©n¸a¿íjÆZ®&Œ²U!>S¼ó$¨s¢$ú EΩ­ ÎPsWi4wŽÀqȺºêÀò.r]ߎ·O3®ÀeMÏ÷EL>2ÏPF¨Ï+јM“u¯†+© $]A ŵ%G2™÷í×Ü_@Í™é…õÁ€ë© ÀÏè<1È;ÿ*öàBHCØ;¦Þã¬t/·ŸŸ7‡Ð„nÁ€}íõ‡Ãf®×p"5Ûð@ˆ:LŸ»ç7ºÃê 0V³$/+€¯f†ªô°+„,¬pÔêÐÎ"×Ìwµé'Oq.¶¤ tòÊà@»m‹°Î(Á¯Y …û_Ò•KóˆF'8j1Ð~Œ|6@Þés=ñ¢¼Ì L„Ʋý«?{þU¦R›•å&ßÀ]1q Ç øJ°«bÝ"„SÃfz5ž¾\M®Äù)ÎE NIBA¬á_Èî+”üÎG¤Þü¼ƒ CɈ˦š »ÅÛ&¡óÆ;Uà€`T –ê"X’Šw¦—›EEa Ö-è­ô¦dWãxµIå‰zYªÔ-Œ¨)v*¥À 5@SþyhŒ_ŪٽóàNùøçD ÌþSu« Ì aÐuF‚`>o3Üxw X¿[Çη­?­žbéá|4’yœ{HÓÚÐvW–´SÙ(—‚“9[š^Íô:«—ÿÇ£³½ûlÿÄeÄçÊ è am#'ü<6ݤ±^Ü’•œ{z`zÁ o|vòÁÝùèÚœw·ÜÚŶ,’¦t|¬Ð'¢6½‰³ '0‡ïÝý¯êºÚn¼_Ø_À¦.Åp•C)ñÛ rW±«—î%¶Å0~cˆÒÙ›]”•>¥Ç`Äóm¸:ZŒ'·Ú?V%è@ch'sè}z#˜ê:½ßùßg-Á½ó•¹‘Á6bÖå¤tâ×fò€H€ 50)ibàªg[ÀafûðOrÔæ‰(ÿ¦@5ŽÒïŸ>/ù:þ4‡6Xi¬évd Šw'b¤1 íÝœæu|_+ ²x¶˜»{}nãD*L?«ìm³6f¶êËN¯’Án;j¼¡»ââ¦ûl/sµ´žð0Àh ¢þç3åSÞ=F×tîþþ¶ðCª²Ùtˆ_|WødßkÓቄ>í3»±‘sy× ÈIóYzÄ~%Ùäʬmb¯×ygÏødJ#ß\.ê †CÆÀfç ´%Š0_i.½ ³.°k¬¯gìWìçûu°41Ük‹ÛÇ8KyÍÝîjà“ :…½Ý³¢¥¬ÂçQoqhbhýèœâ ¤4HÉ1Ý!`ödfi¸GíùÎô3àʸ° TÿÏR„ú´ëä b­=²à¸~a|Ì{ ”èJ þÛ¡ ŸæLì§é?8Õtè÷”[}†šãÌàÈ%YÙPly8oðÆ<ìÊY¸v@óÙ„+œ¬=ðÎyàx¤ð羽``: й¨9~d ¦0˜Ö0v`bè,§¼ÍFb’÷á©Ñ̓[«{t©‘û+_iõ‹n1*BKUðB `6êÅ]«'L°_ß`:~0@{áŠÿZ@V÷fœl9iÖ äH7‹ò þ¿;E#«2?¾Eä3}TIö9ÓüÏ@E¯Êrþ<|­Å™°@ðI]QºG Û”[ÉÛ²5TÑò®Ë;Çþ¼‹´gž‚BKZŸ—9ª¤ŠÊæö1GúöMcÖÏÚK^U¢K†GUÊà?Þø ik:¤)â|©÷|øøê0@ à@§Ånè¼Î”ˆw`vÿn‰¾ÎÜ›µÃ穟Ÿ˜[>ÔJJÝÈÍç½N²V 5Æ€¤48 !L}o«QF·‚Ïžs¿ˆÅHWÊÓó²9†›ÞÃóDÖTMˆ`5±ûÄÂñë›õV¾ ÎC²¬åakĽ±×fZ¬5¶ <þÅ%M”‰NðΤ -‹ìªÚ¶;ö´„ùË+ ²žY9QD1.*|3(:U“ôM ²QÕå?²£ÈÌïÿRóê‘:×§º–z±˜æ?þSÏ Ëµä@r`è®4iWTu0ˆ#k„dŽÖ œ¹õgiçÍfâ½þKPô$ºJ»^W ä~–ð]œµlΚ_3˜;œboèÍÍi¯2ô¶µú ,šÃÍrjg½óL.#@og’6ôa&ñ}ƒ˜À¹®.c5)•P§°¤Œ l_ÙX;óûæ·2zFŸx‰Þ³*©ÉóX_¬‘åËõõ·O˜ûºV4=Ò½M÷¹×o«Ôko{'cÿN§aòyÍgf2BBè39°2ƨÚDzò&}¹ÔO‘Hq ÷+£¬¸p²”&*& $A¨Iöiñ:cùàPh œ’cVÂvQÅãAÎSA…s ê^Wx»¬ŽÞ" uúů¥·à¸Þq—ž•ï¨÷Û- q§Âßàctw=«³vÁ2ù¶)J‰’ yƒP&i:Y³^þÇGèç±DPYg ¼s8$ü íå3ã ØÝåëfÎÓ¥<§µßròPu…€-Ç¡Ÿ}-ãrߤ‹¼xénOðèéûÛ¢w¤ñh¾(ûµÎ‡sýú!žØØ!kô1Ì\щJ~¦¶A¾¹r¼“ワ4¢ pÊÐÔ„—Cnuáü?„Ù¦.‹çt‡ÝÑœíâX¯Õêê9³4ù@p'Ñ©ÕV}°½p¬”þ=]úßnµ6HY¶ž:b–Ô|ÛÞž~{>'¹XÅi8ÊáŽæï¾¦ç»Þwʪh–h7I[ÉxʸÃ,”=ð~ÂUeã]2[Öî²zk®Ö‰KÞãͱ–ÿ³mŠ€¸?ÉFÞ*€åfßRzH'Ï4¼:î*”Löc¼×-ì–›ÏÒc–÷rÉ7mç–^ü6{°r{ž½k¦6`\?J6˜½HÊ™ä~ )ªmí73“Âùn(K|mr¡Í­Þ’`¬Ø;;Ƭ§˜žÍ©,´Öê›,ïZ-ÝwG:P¼Üãù,ȤޯC¾()ç5ÿN ·ñWÛÞ¢m•:Mÿ;k—á¸&Úš«±wœ¼a‚/ðª‡RÇbõœÎYaW‚²=`BæÿávëåìAA0A¬ÉýDˆ &œH…dà›àQC»¼©B<ÃINÆ•I=$²kBÕ#w¸ÜZ­—<ò = ò‡ˆ°q‚aln!ñ@"gŒ]qàcðÕ3SÆétbúÐ/m÷q¦íµlèvÕ+–Òª çù Ì•Lõzê¢NXïO“طп¹K[èk›ÒdÔÇ©¯™¡ÊT]E³ÍYªaùçs½SçøîÀ­?5Í,‚žùa¥%$ò4ág#¸wÛH냠Ñσ@8#‚G›U©q»‰»UM•™0@Íò(%@¶TÁh…tr4y +ç‰ÆTM­0q«¦ò†R÷å£ÐAô9ðGî[¡y8@ËÝÁñ¼KTaBO •]ÑpýjÏ>εtÇ:«ï\kp1³h[*¯q°è{/»õÔ2¼çô|{UžÅ“‡+ÒïGç9>¯v,rëQSÀÛ¥_¬ìÖ ä‡NS'v]í¤:Pî‰á™Éõ¹Ì¿s–îBèÅëµí‡AŸBéö[Q ÓIÀWôMë›§…òº NßcÕtbjòÒ«Ï!u[U:«ÛŸ<ÄEB¹neÇÎúû¹Û[›¸—óÎfSww¡9Q¦Û¢ xh¡fiÞyÕ&çgàhiêX^U,ͼÐÊ=”úW¯Kü uA›9aŽ{ù¸ß¨3é]ŽfëßïçüJÛUî£Ý«;’¦˜ÑØ;ËJõ³`K19söEfÖŸpò¥ï;È¡P‚ìŒJ?¤6\~™ž‡$ãÏîrg¨”½àAº£}3»Kdº"°¢êªÊj|”­¾8Jétkh«-@üÕ$5Ì«`ÇsÔ4ô%³`û>[tYºȉ?fÃnåòUê:ÚÍmóAÊàY/ ‚½ ¡cÙ0¼ñ¹¥ªŠ˜ëˆ_~7ËQ%Õ˜¿kѹ£I6W-e[x<™2Ôù”ÖÚÙ4Ô¶%ÁÀRz„ü¸W'Ùw›ùµ×rØO`ëƒy]][»g Ë´Ͷé =äÎÌô`ÍÑß½é^dCL!¯týšíµC¾¤q?‹÷Å\Ð¥Â:%Û»PÑ-ó,Üm–g]òC!³_ƒÀŠ–{}³ÂVƒÌ`ü!×hðèJp4æà¤³V²·þOqóQÑÿ(!zü-m_ßÖ4)irÅÿþêÒüe\’™ØÿRØÎ£Ý œ¦N[Ãqbß–õ_7!+›_R®n/ZUvœ$n†YTåsÖo'T´¦$`,pd÷žE@P4&k˸~x$GÚVÌ*QÁå˜X#ÿ†“wÔü}ú> çïù¡f‘ÑÒ©Žœ7áB`&ª÷mÅ|[Š&W»CŒZ¾u5OYËÇn–í½<"Ïœø¢Ùüi¡$ òLYøm°^nåeQÅÖu Z^û[üásÝqzHËZ­ù”v²¾ „˜lutjÜ(‚qfØîY~%##•ö²ÎW7:©¡@ñn”Þš®‡‹n×Po2#ÑÚ XuF¦B#LÁ¢hÓ8dI@_YE<ޝð`JÿD T ì6MÙ½yϾƒ0ÀYtÉçÙv3érKÎ6óUÙuªàm}]#4Ð꺪™‹Ýª‹Ó$mvböŠ|®âíë6. x¼rú=? o*u'Ń ò˜ŠŽ‡MN‘į.£ùÛ¤FsçHZKh4}NT®ÊÚ$#mpåãËœÈ|U÷ئ¥ õœOëÇsä=VŠ~©ˆL¯®{»ê¡Rk¯Q@ßJs¡?™ÚPì¡ólcû½7æíþ­ŸRRBZæMµûK·¸4þô§œf‹/c±Ã©R㬨|¹go)æ25P’ÏFÕU"£Ù pû pk¡+|“ÓRç8Qî»ÆÎ!T~È\ ·~ òÓNi“Š$èÀbpTr˜$š¡òßÖ!_3P‰ù†Ç^(ÄBŽ+B¿ ˜0æ–G»›ºÙÙm'&fŸ/© S:R’P9@!×(k):¶Ó~IÎuïjÍØÿ(±P MÒS˜éïSüÇ]óÎ^^qnpŠÏ§{”ä4°áÁÀj‚-;Z¬ŸŠ£»‹Uî¯k)ø!7¬ÕnÅòœò;q¨5›x¬³-þJÿ&:þ•Y¶ý¯$i°ÿ+eÜ®m´†ü¾Ís¸ÝŠ¿œ¿ÊõŽ¿\Hå§-¹2U„±.Ê.€Â´Jq°ùßëj,̶f¡ŸM,[ù\¸¥ÝÛ?K€ÏÊŠúéxù`@hŠëÉô‘¸*7ÝYb‘̬G½oÐÕÂ@NçS¥ÖVIj⣽R†ÕÒhå¾QZŸjöjd´«Nöo0ßX¬¼_Ré€Qµäˆ#ÁëžKýð619Òwª\@@ª?•S® n­¨Àh›)AoB±Öè\ÿ®ÞÛê=É?×ìþ‚BŒtÚÓÁB âߚÀÎ] ý¬!éPÞc ¬Â’¾™PÕ¨p*ü dNï³'}¼lülÆ«ìgúE;¡8k~zô=/…PB{8,˜1Ä¿Ï-öÚù;¯¯D¯ ä¾*^ûÏÔÛ|/µª9Rmï`d\GÑT×H¶ãÍïKbÀ`ýîUý¯êy­Ê^í9ïiÒÆB±à)0xÐݾ™Ëÿ:Ò­/Iµ­´òbßéº:‰Õ¹– tãgGß—®ä%:ȳÝ9ºBµ*¼\–™¾¦.š/œÁ¤¡“»³…y\‰¾¬Þ*ŒÜ)[Êoòb6‡ÙK=˜x8OÍzEB(¾þI§ÓìKY3wÁR¯è=zÙ~5ôTìM6Ùuª¶‹éŠƒœUµNŸÐèbUWN•9„HÕúôJ³~WÅ7nÇ}ã9ˆ¸l .ã;î¿¿ÖjÊh'T³ôŒjØ4g=³’Ë{(gõÕvÝ3£@¤$ÓÐ¥a¹çVI|–Ô7Ì|†U—†…º­-†KÝoÄÛÓé(Ñ ¹SÓ=#åNÿM½„ìlÖ̹Õ&˜š¼Qîprµ@{J¼¢Ç¿‚y¿IG/wÊ7†ÏC€š –û¿l¥Äãäý¶å…p’Ý‘…§, ù¤l‘¥•Dvh’ûõà sƒ¦'væÞ”Û’]Ò!|‚7ç×¶®Ï®˜Ÿksþÿºs< ò½‹û±øóbŠ« hè.cä×Ë:›n­@,«V)ž „W醦s—PÖÞojýæ—Ï9HÉßg¦ÙN¾Ú¥6:ÄÓ¼¼à"ÿÅèSvæÀØãh»ˆM›n35ª$ê¥é‡«Mß¶o¤¾äïfÛnr°´áí:!{=S¥è ÂûºØä莆b㲎9Ÿƒ-ÞJË´ˆ4‘²¥ÖWJ¨VhÍg´/²·ˆî¿ðü Êøåü%ãù JêÄìx1 ?äGÿKÓáteâÝh–Í&E3/4ì|~£áSþ|Ÿ =Kgê_ln7Àö¿µŽ¢x¸Ð=îÖóv}àtgûR³0PPà^í6ûÚÿÞº´ô£ý5=¿gø¹]CsøòH|™ØjhK`£¯GÆß¡É¤¦p¨yÝÕ9äˆÜþï»öÕ+Ø×8]s¸‹¯¾*:ýÇßfà±ÅÑ'‹æ„v‚=›·u*výøn…íøUO ’€Õ2µÛâ»Q5ˆV|¼7ì"¾×R6{®k”›Xºþ]­îQŠ`ÿm^˜²›©gô8Ø5ü#~]ëéÚJeºj¾V+j`s«Ùõÿ÷]ß‘´SVíªúØS2DDõãïúððº®e|‡HÙR`ßÈ!˜ÐG†äÏÑSö\ç$³Mtýåu´~u$-gRß}È{1ìT~ö›ÿ¹è”"@‰Õ˜uÍ<¿rËÒ­¢×' 2VfÓl™´ xµ.c?5C 7/ØYÿqf(é×¥Ø5³ÇÄfŽ»ñžh†’{ˆçú¶øÞ®£t©'nÊA7Ëe ‘˜(lcŸ?`5=.G[ g×{ ‰W àÙ¨mÊŽ$YSM]§$ê¢h Ø7àNûïN~j<“<Åöäúc)œ~«v[ºÅ/NGÕFñžI¦Ũ’ã1)[®P«²ÑŠü`œ¤ØÊ£ÈˆcÜ×.eØ(0ö—JhwÑqÛ~ŽÕOãé³™Åßàzrç>ÏUX•ßY §‚ÚØÞ ,n@_֊ܦÖí%ù–> o‘W¸¹½ÚH}ä ´Y m»:ß.2¡·!Z¢ž“¬g7e°;fžÇ+oàv\#’èIæz‰5*Š<à¥ÂvV-3)ëFйSññ5B  .×ÄDíÃî”¶{«öŠí^»Bx䜔|brqà7CÝ ¨bùÅ\Aã,Žy*ýg侯!™,ßÁðB´\ÎÇÓ[Ew1­Á¯»½‘b—›_*ŠÔN; «k¡MÑNÃóÑŸy'ÞÈfÿ½Ó/æÃ•Ø¿V»x$wqV=‚Bö“Áu…¼™—Wãtº“ùè8Ñ8˜E›Z¥‚DA7Ž Ë¾$‹²þ§©èÕÆ¸¹dšâ¹¼o›ä“¬‰H}$Ú|ÿr^÷¹W› 9²VçÑm´ïÍ¡¬éÊg‰/Wå)\>­ûÁÃôæð_y ë[ŸFÊ[‘ÿb ïéÖYyÆHð"p{,®§Õ÷rJ4ÆãI¦àRóýÎ?—Ç‹IéŠ>9k’jÿ£}AgJÒWiDóˆÑ·ýßQîó: 8£yå։ͣ£BiéæûÉÆ¿ÛbêìsågHº‰@´f&ÑÞÎx·œ ß¾ëÁ4÷ I,¦¡2<°"0?¡—þyÏbŽQØ‚>¯Øÿ”YõÙEêgÍÂg¿¯â`cV›r3´¯ (#§ðØéôS‡©h.@o ×+™ö.£ÝXî#së _Óÿ<“ôÛµˆØZ>VÜQZòŸ Õ0" ~ÖErö —âÞ¶sÜ¿cû®¬ø›Ê>[ä±ÝëÝ=λõìpywŒ2 ˜ö `•`G©CÐW¦uA1¾¹W8!93¤†ÞQóC™Èã:áü k F¬8±÷Ù0:‘æðªá\r²<' ®lØXêü+Ó(…n½À 8¼Áôp@„Œ @BPBÞ° =Ã!ùD4L+%~!oVañ„¾Â«U„† ` +§ÒÉf š„ ù„¶mLÍ£½îU®QY2T¦!M¨7ìà•U‡í0R &L!Crí gf @†BJ♘ÌdÎõJÁãÒa¡O1„FLèU„Ä2„YÆiCÛ0A-ÓI$"È„¡XQ‘ IPH!TR€€U€Iˆ³A;–E2Ä0@ª†U!…–P‚€ !ÒúÎrð¬ö5žô*†ùZ‘}å²Äí¶ô#IràcñT:¿o÷Í7Þw»1R Ö½«œÇ-+Ö <¸+=ˀɶd0ÙškƒƒÍšÿàõ7GâõŽð°…W¬zÙœ1|æ<øÒM—ñœ‚8—°]¹³‡nv­Åf"Á ìtBGVÕëX&ƒ¶iþü$`Âÿ+1età4HTÍèf²Õ™±î1!È¡.¹âNà/ýEVùÙEÆlöh ¯éÕ¤0\t^Ò4‘,–9šg_Ÿ7w›í¯{Ô÷Ͼ½Ú{­ßnÞkÚ«iîöϺ;íêw·Û}ï¾ï=³ª÷Qå­Ë½žË­w;¥³ìÕwÜûß8}³]^}°UShžšjdõ0&ÈhSdÍ54Âa *~˜LžGªo&‡¢M‚OTðIµ=T~‚Ÿ©äžG¤f¦§’dÚŸ©ˆÊ<“ÒdÚщ²0€ÄQàÑ“U ªz Ä4Â`LšdÈô ¦LF ‘„ÐÓM6‘§¢ ™0™6¦LTü èb'©é¢ž51=zž!6¦ÄÓ*~iiOÀh$ÞªR#m&5=54SýF'¨ôŒÐ žÉ‰ª~'é'‘<¦jŸ¦OS¦jfPôÓMOCM4jcBz&šjž25OOMO*~)´iêSõOõMOÓC&šbž§§¡ L§”ý*~˜ ¨›F™=¤ÓSÚ™6Be<È&'¡3"xLAh44Õ<ÓjhÈ&MI§ú£Âž¦ž¨ö&˜Õ?I”ðBf™©ª~ÐLMêdÔŸ¦š§êf‡©©›D…TÕ7¡£hFŒS4i£ ˜&™2À›*y4#i¦™ižQå?Bi=M“A¦ž”Ì4õ2z¦dÄe3ôõ42ié¨a ÒbjzA$¢iOMªžžšh2"lLFi=SÉ©ãCA6©¼©éå4ÓýM Òm& âIâž)é¦SzMOy=Sô§èhÉO =Lž4Iã$ÁM™SaOÒj=¢i¤`&ššnG ‘+„é8O™‡|„(+7h:y@tb †‘‹)L 1ê“Cà|1:BƆVbÊFŽ‘ÃH‚`®Õ~}—õº_÷ÝèF}_;mv×ekmžÞÃÚÕÌå®®~îš_ øSé©u¦ø2’Å–ì²}ZDus†Î@swûª^fsû‚Ü–r>M­ëCtŒõ®ý6òùÕ?AÝ *èê‹s·sï^,ñ…SЦñªYmp[37Uxi”} o<²Âö‡Tø·/¿F,SmQÜ>µ5źî¡å4ëܯG‡16g"ÿ‹ddÝVzMf6U¾Ü>NŽ7Œ}ˆÍC£m ¥5豕߅'Àë'ƒ=zZ>ײnkv‡ÅëËÓ›,¨ÇÁÖ½Ó]é¾=§ú„À_å=˜XOZ(¤µ¢`Hl>=xÎSI'€!á•©€HH!FB$$DìEæ %0X€LñÀ À˜H(G2D‚ <   À@4€áB„$’t! qÑ8 ”`0¢H¡Ã>!Jp²eœ‡Œ<`™*N`øUƒHI \Ñ#:u‡¡!$’HìŒ!EŒ `Eœd€±–ÓšÙ}~åW¯l€Is/°¿F)ñzú\0uÐôG<û#¥®üBÀ¢ñ>=É' YŒ|>½Ü!K!äž»WaúdË™ˆýõÎézQ€³xg•‚…¥ô÷î…›Ÿ}üÖ\CÊðĬŒ×±x´§|‰VƒŠìÌzb@,hg¶uÚÅŸMpÍijÈW„µœµEšë%ËoÉÖ@„$½Ú+ÅUš)àuûXÍ<‰ò’$ðµs\Hç¥-ÛŽ¼î·yèÁ”×÷JÙÀïe§å ¼ˆ/_QmÂT^¤=ÉémIH FW à5pÕCpž¬0>«2aüŒG…Ñø\Ïç2S–PhõŽ´’ÇÿwÙqj ô‘ŸimpÖcq8àì W|ÌA\Oœ½žc¡}M*_–5tЇƒÒømñÅm«â‡fô3Sv™ÉŽŠY÷bÿ¯‘‰I$“ïJó‡ù*1p_l©Ç“\Ú¯¢Õ+éˆËv¡éê²IÉÚÁˆoP”° $â+S-ïÅ:ÕÝêIñŸ™Þö"oáCfžÏb2Q_û7xÑþë˜Ríç C`éG G†ÚüU?W¾ó4`ÍÈ12š¼¿IÙ?Cg…¤•ÜÑÚ³\@~43y,Dn7S€Ê_hjJäù®9˜÷÷ÅL)À²°ZË{îTe¢ªïÒ‰c˜X¤ØõtZ«}JK¿OA/aúq-½ìWð¸ûHF»YU{.Ïï\‰MÅ Z\ÏTvJbû´ø®?'£´6G•¯±¢ÜFÜ·¢ãÍ:Ü5ø„q½&ÚG†ÆŒi9œY‡aMï `ç×® ;둽›‘xq ß]ÃZÉcÆvæ_3Ýöwßµùpy¿ÛU3§³À´ D Yš˜éX²ÿ4Þ‹ õç4%U<íe>)ÆH&|yس›å_5GoH§¼ËOÜßèÄòòvY¼ÿð1ÚÑš(5ðÃh,‰aG7jë䜱"„#rž##aèK´ûÝÎMa캢ÖuBdŠq’"¨’ádÔÇGÃO;›ÇLLbqFí=Ô¹I ðV³ü-iŰ“•Ï8} ·"v†P¼°†™+O¢žùèG؉0]T©Ø<û¶²f;k†ô¾;óöŸ¹+’ ljG7䙚ôJ[ «Pt´#Ù+g:(Ê0ª§ 5“WëOt¾Q8Å>”bzö“û­÷„Í­Œ®¾ÿ>-åC !âÕ ÌõO ; ®žÿ\K9­h"¬G×à7T¬ZC&ˆÍUÑGÑZû4=+ù\h.*(‚ªÒþ¾H6¬0Ç.«pw%û©‹Íìer·SRDÆRßuõrÜì§¶`Ý´;kÝñCd"j¶Ó%A(ÉÃ(®–¬K! ¶óÿ:r4Öý^)unþ00E4’^êDV)Р\qvœ,V)K÷ú,ÿyJ“wÔýœLW=d\ùmCr2Yì3U¡ Dufºéáß  éæ‚Dë+K‹ç ,ôRéòºÝÕV¦Ö|åõ–¦¥J#Hì/?E#¼:Žéž¸æ÷rŸ‰Q9£"ð£ÎZ²<Óe,W~q=[Ö›vPÅSÈT½†VÖ$qž€äØ` ÐÕxy Ž/&YïÑ×Ño9ÛÈû©’ËÁâ3ÞÖ±ºrwç“û€Ñg®Þõ¦VziNBë|jçå1¸Ì#”"…Ï“vÚâ÷Ê jÞ~ÈÌ:"øÉ?”÷åPã¦ï6·™º•‡P6sÉŠ“þžtJ´ýèàåÔ6k.?uc Ϲ¬Ù¬Ú†½‹/:ýÚ·ŠXÂø GuØfjZäóZ‰["¬û?b»j¨ÙàóÜdS$ó‹_ÖKZt?Ý‚»ò̈y˜ ~þ•)…ÔÎ}I€¸Š¯Uì9O¬@~z­5ýöÛ¢6"Ûœó«JýidtÄL§úéêSZ"!îwvPƒš1¤äãÆ©XK»S…£ÅÕŒÞ`e2~˜€zAÄ*²Ð|Ó°Ë_z÷Bó€ëÜÎðÂO¾'itV×zþ{Îþax*UµG°&pËujhBˆÙLc‚ ygÌWžÌáĘ_gBÏMÞì(zwÊü0Æè37fêÏETß’mÄ óõ3¯q¤Ó?ßÊãÇh)€?Ê´÷¯Óš[{íóêy._/£ à¾Ùo*³“Öµ>?u˜„¶È}[Éó‰òŽYY6§æ253»o©eqŠ‚‹Ñû[òk¤ÇÑÞ©náùÁ `~ EÿÐn =ª³µXâvÞt»-;1?ÀÆJvÔô’XüºuÂÒ.y±!ÄPÙµ¦d7-ìtæãQèRá½³ÕzëJgg®·4=ròo˜i(n¹Ii‡tÄ}í ž3x`7VÞDüQ{Aœ}X5JÞK äô[½bR Øtc9h§ÌíŪoýBdíe&æóáŒY'Á¬7AÓÔŒgܨ¾Uºw’ÃAMMЭw9 .é©4þº]Ÿ“iúî±üÇqO[;‰“%U•¬J×aüVqì…Ð{ÂÓN5ê Åéù~éâ!ƒÐJëÒòCØF€Äks“¢Y–e¯{¯Í›€þ®h ™mn’kô»·²¸CX5³?³lIÀQ%ô¼mj<ˆ,ˆ8V—2êÝNIî)TàâE*щ¶ï~'’Ï+öóØã±Û!`Á.3½[Èéµhö¾R.žÎŽËØß¶‹™øöæM¨3=[¹´aEÉ5†õZ]ï)ÿR¿ä™ˆÞÞ{­­µ;ÙD«)~Èê@ÎåöCÕÜ OVÀèþ™">ÔeSTÍ:³k¨‰/ïw•ôŸ1œOއ;øD`Eø¥’ÛÏn¡~|ŒÐ-ÒåíˆöyNeáÖ¥ì Ç*ÒS‰•n–`•mÎÕüë æm&?ìãá=n0/½}&ûüÔ¹I«EwDî >ש?6s¸µ•xh6AÅÿiT›H¨”0’zx'8Æ®§—¿WJ™É!‚V.¨×ýc0OW[¤-)=o3§åCêò½÷Äã´iXCÈP3é\+/ÃѨùv^×m>Kž“^iêÓ !câ-s²ÒU¢3n+[>/<aY É™¢2kÁa–Þ ´@bÛ/T¯ CÌøm+(ù—kÖ¤[^wá(ÿŠájÊ¡`/m¨J-–!Ðÿ~ºyzu„Øö­ @F_é´õò-gªc<ª-É4ë¹sC"Ìt:6.‹ŒìÃhª$Cú­ÖDd(Z›9ê3×ÔY•³Ã.ÕíFþß#Š5{4r¦¶Kš}eã̦‚>Ëh‡¦ÝGÖ±Ä q«2äö=”<õ¼Ž ]s(”,WH/Þk€ÝíLBÉÄÂr—BV«y‰’Waàá+Œvë=z@f;q¨FYûÜwMÿÍŸî‹%öÈ´¯Ø¯ÜëÜûÂR|Ú¤T÷|ר=_¦GîáÞk¥Ö?i×xá>‰£/½ÕW°ðÎ3°f¥tdåÈ,t—æóàv9=#¶ O1?bßl5[ò})ÿ1,–h †œcW±ªlÞVûžÊäu î.à„Ó@#ØÉçgÂgÖR2˜èÖ lÄg.¥Ø²– !Œ'Í 7©í#‹<ª¢Ézh¹´,Ý×x³ŒÝZLþebEÝõÔé ¿ê†p#iX ÀÆ'eg ¸µL´6àl¨X)†snܾçþD»6¥¯Ü™{=yÍÆ Ü¿w¹oÒPñZÒ úûùÎÉÌ8Eø7`ÄjŽŽ7öblÚ Å/n:]Ë—±_üºÞUG©Ë¨å~À ï;S87Â6WuÚ_Z‹•¨Ô¬666F ›­±ÆOƒÐ#°L×Ág¥åÔi.®ÿ$ç ÑìFý›¤-ƒù*/^zµ'kXö?šæÕÉééÜåMjn••²ó9N¬EªÅO{ã£ÂM‹(Bk³#GùxÝ«¦@ŸÙ8hEk19#§DýãûÝzïõ½Úè¢cûÔì=ëûÖáhõ÷Œu_£”98ðº T%zÿû¹+EÞƒ~VïlŒNùڳꚚÀU\å÷‚Ø0’x Ó`SÀÈ>‹ ðu{—'x€„´ìÅMû 5OëòÊybaù€€­aa쯒ä?Q'î[|Wã=ìvñOdy|·÷Ž—ôøE킱…ƒÔ`p8àiá¬ðRäæòÝîîGð*R&†›Hv…É—¼rº‘&0Zt}Êj]g^\©´üݦ·f(sÊ"Æ…ïÒîlE:âñÕ€œŸ<ëm­“Ö>Rrð^ô‡õç-³·?w[ªî²§ïˆ^{'AK=°ˆj¶èí¸TÖ+…jÔžòyNÔ2°öûj‘Šþ»Á[™mâ—Tÿ’ë…ÈF­uÁ—≠õý{%•Ôn9k­öا8Âkqôß…—Î%ð'¢ä«AqsÅÉ…jfnGµô™Ú_¾õò^æ`ošUü^SEÔëÛ;•ÆŒYž¦®ƒ³?(fºm·2Þ‡¸‘1§ ƒ‰Æó7Ôà— ÉRï ¢ýB2mûd“ž°u‰ªeÈ‘Tf¯0Љâi1I¸»w¡“:~…hO¡íÑ'ý6Äúv¸m,”t<óaø r¨‹òŒ{“Û.ÑÊfª²ß^h]Cãºú¹­Z“;ò‘fZŒ”ãi²¼‚ÈÑ_BVlw!´\%m_lÖˆ”Ìðì–£Èh†¨³(ë/î9üKBøE¿#î”dÂ;ĺ2»Ãâ$ÔÀcòÅoaè£Ö©¦7q´-ö‹;l6Çw#?‡ýÙéBqIQ4…°Èô*o»Ž˜jæFÔô2é¾è¼Ù‹šs×V¥¶í[àš¿Û.±Z1dS¢ö†r¼!Röˆ¤£*¬ µ¹“S:]ù§„Ù¸Kÿk%6ŽÛí3q©SKV5u®HrÅ ™|nR!Qž:·þ&iÂóW”•lôÄrlËì$ã:EãB4IÂÁ ÎO¾çôX ¢9„WÓf»phi‘'wT£œÞÉŸ°zlþv<ec~K™4..&püvªh]WåÉ®Ø^§…ó/ gÈP¾ œ›¬ZTȹc˜ ñÙò÷Jr"Q‹v¥¤¬2¨GNiÑ vE|UWËàäPg›¯!Ùâ¨cRÒ}x¶Øï© _¬¥WÝas½ìp†¾(¨§³CÌœ<]£‡rðŠÌF˜B‘葽4‚ûøô©¡uü9Ú,ǘGÉ)Ó§YCÿ½\dÏ“4öú…0©Àì«¶Xc‚Ñ~Õ?ÈEL¬.*ûNeÉvá`—K‡Å#‹ÎKu°9  ÑRÿFÿÖû5k`rߺÓuÜÍy¯²fgE«¥p9ã†Ê-‰îàѾˆôoë;iÿÅ~¶'ã¹ ¿S€x—gGÙ>;*dýcÇë5íeM¶(lÏùŒiÑÔM{áB²B¶++í’Gõ»Ãýô+„H[}ÅÕ_µ?yGŒßÏ›ÒGI‡k ‚6“[v3ÛiñW¨Õä>ãÖþlZ”O.5Øé ð[Ó{ÄšíÁ€«ÊhKL8ݦÛê79µÌ10´fBè(ôܵL¶Í\Y€óy;C[ÇÔBîÙì2XºÖãôp‘Ë›1AJÍ–3 ô«ùEQÏ@¤µ5Ò‚-\µïuO²VpÃpHQYÉ}0‹ü(æ]0ä‰2–Ç1®Ü–ô,Tn˜²ä¢®øûz(p$¦õi‚î¥êä”zYé¦q©àÖ"œ›´Dÿ¡óÁÎÎ(¼…²¯x‚w…äÍfÝÙc”NI.mSï|óéNÓâËÞâmZs:ØoÓàÜ&O¤X“Q'Yœ0Bõ 60*‚I„»×²;Ùèqº?ŒôA?à "&ÅF¼Nù;2‚£3 ¿WU6éñÿÓ‘Ÿ^ w @ϼ1 §:íodÌô,àÊ-beDe‚;<æ-‚Á]l“$¾3&à¨o'==i‡²ºÏ–Yþ™¬œ¿¿Ñž‰¯ÔÚ‚ºÊ˜ùf°Áa%pÇåç΄‚æç‹DÌ-Óòu—ðN ¼Í¸úèøÇm:{¡ Ð… 4D«dÑ‘g:ŸâÁƒ¯«Á·!ªÈ–¹ ç?œ(²´¥¢#†[´IX{è…=•×$M˜vm¯ð¡søñüØ34hàÿîƒ,]н¥Ó¯™e’$Þo¿–'1¸¶ +•sl=uâ•yQ¿j&¸‰I¾¡Ô(s»ëR‘®=E³¯Tt#˜x)_óGÖ´Uw%Bc)¥$ÿ/€©'Ç©å- ß¹üLDÆÎ2Ã<;Í Þ ŸÀÂkÒÝõ·óð¼÷=7OO7¹žªØk„å>¥žÃlüw"M£°ÄÌ}Ô´ÀZC%?âÔ K̪±öÓwnãXÛݪÐÈŠî¨&yôx]fò¥ÿšṼðp½(çkV*ôÖƒãFÀª(žåvn.Q­[/ÏÅ)çþ¬ ÏBZK@Øu銰 Ï“”Ëë¼]ëáõ{í*Òtë#Ù‘ÇnoB¯”Z©ÌÄÓîëD‹@ ZÈÎÌ€tãø{szVhÈ¢UþÙ :ųß= g“Ï‘Y_SÑ(S´-%ŽñKó—e¨K"4QVkFÄYEíµ¾ê–´ÔÞ=]H²¯ ž$Õo>ß¼s„ê æŸ2­ðíÂŽ±ŠñYîר.óJ[óOk¤?Ã^KeTõøô”‡@À]cýÁí‡C°ÊɨúxуÞ\ïþ¡+ÁlÈG¬í{KýžaËÚëN%ÿ~ÔÁ"KIŠZs:S%o$¾3ïí$éb<ËѦIø=·©wiC1*VìøßæzLÉ»çÏ…­ÛG³ë ª>ý)²aio%æ`—ïçj¶šF¸ïU‘ù ¦[ƒš]ñÆxb‹t¿À/¿™d^Éâ§Ðë³R9ö±'×ob1V­ŸÆ÷v'¥ƒI¼z×Ò ¯göíb6lÌç»4Òɰ¹Œæ£ê=¦“²2Z.÷ÂÊ ¼ªT@S'ŒjúÎáS@Úžý—|’ÁN§:z¿ê`Ÿ­Ý gm+ìË#Ò~+ï>{žîâAXÚ|¨R$ïs±ŽÊ/t.8šƒè¿1â\ÑþŒ‰L«Å‰?g ù¢ ÚÞuî½éÔ÷æ—á,N‡nxºQî:‰Ïp†ßŒ‘h dÌMîS™-PȳÓzl)&« ¿g"d«èF€J¸î÷§‚¥œ{ð‰Ñ“x GªÆð”½K5jÀ¶fÞpÑÒõV:-VfQHû¡~æÆÇì8ë-$}|wq<8Ÿ?CéUÈÚÅW±úü¨¦ÓO¸y_KH7¡Rœj”êÅQœàø dÛ·D +ô¤lÁUA8/Ryë‘ø/ž±èÎóVH¹Ò—¹/¦Uâš#̰’Ð,¶5ou@z–ß^d Š?“ TA °ÇP›´™ÄàŒÂS@Oñ ©CH°médPÿqlJo˜©iÅ,{ú]ëI •@ rP ÉP ôáIKÓ ýÏ¿“ÆmE¿% ì*HhcýWšú]¸]væ äã݃òZ§…©Ç˜ü!VZ7çÛȨ‚£Ÿ ¸¦BîÖ¯gŠn‚Þ·QƽéËø MµNyþßÝT…bQdl6IåÜ‹BàjÿÃø¦‘í®nüqÐBLâ §IŽuúW~|BsBÎ1ïÓ-ò•n»fá¡yu6£Ÿ•˜ëênYD?.=–GåÂõ¿{úØ]µa³éª5t`ýèöïmÇ«ËÎl8[ÊÈŸ©~²à<Ði'ŸÞ£oùißâØÕ¬„ôDœV&ÖSįø³øéÜ ÞØaÅÿžW²í¦OëÅ.3‰ÇSEÔ`9ªåùhÞÖ†Š/#¿äDlƈô<¸(ÍœDæ¢ñ^ߣë˜Ä‚%;’9Œ65íQÝ]îÁRUÙ}üu†ŸWμ¥ÔrùΓ­ãk9ªÆ-Xi> 24:°·°[éª:æöäbÁRs.ß¶ÎB‡*®ÿП’Ý']ÀbìY¹­*D5gúXy¡¾PídŸ2Z«FÇBõuñåâ,ÊoÛMÜSÂæbÏâ88оuäCõd¶«ÊJ(ŽA°µ6w€/÷èòê⬸ޢÈ+¨f˜æàMñ‡f+rB©$/Ë?”?NGQq:!‹±éÖê–‚€æ&]tGàT¥]æýÄ'Æ·Í(&³Eû“ ú§üÜóê{û¢àALm Ö/“z½ˆ…ECtÚõÇ,)›à6«ÅP~‚¸Ì_+ÖÆ¿$¤AêN‰&˜)­>‹aú“ϳCïöW 9™¹ˆ'I[µt·#Cþ“ñ¨}»‹PĉûiëÔ¡Gñ. ‹ÉL 㥚ËEÄf®¥¦ë"‡ÃVbÓ±è³1â÷®R‹^hùÂŒ¨qF°¸,¥¯k-ÁòN•ŠŒZ¬ÎÝÉU±Uœ%²Ä9œ—¯žÞ®£šò“øÀž e¬¹Ý6)‰aí²¼Á²´æk d!Ää»Û‰¦£–Ók¿ðo¾›¥'YòÊɨ†‚d‘]o*@yWs•ëà³ò9ðÑxFÂnµºkýÓ¾îeñþjBH$‘Ú”¦óuš}·U\ÂM¶PU55U%ÈŠ¶º2vк‰¿•Öí;+L³úWŒa¢W›ò.©Z¹Ë Ù/ĤÚHÈÆ#çx¼c-q§ÎÌnîÊÛ¨s$·˜½ˆšõ4ÆdiÏ1'|!.ºYý" _W4ÇNfüãlÚb–K†?WKF‡!ζ(›Tjwã¡:X´Apñž'S0[ÜßXWÅ0 ê†â”¿ü]ÉáB@BëZTzfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/PaxHeaders.151519/zfs-p0000644000000000000000000000025313607166133031613 xustar0000000000000000111 path=zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-vBROKEN.dat.bz2 30 atime=1579730360.849765597 30 ctime=1579730480.809789713 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-vBROKEN.dat.bz0000644016037001603700000006333013607166133034655 0ustar00hutter2hutter200000000000000BZh91AY&SYJj‚Mÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà3Ÿ;&>RŠª„ª¥REPúÔ¢ª¨he}»›w;N糸»\b»™=[}ﵞï½ö»ëwN»îÜÚßnêÍÞÌÇiïwÜïöï·”5×ÍÞËvuÞz÷×_{»ía—½«Èε ZYhª‘µ1}¹Ú¨RƒÛ;XÒ¥µ´kk¹£»¼úùsÞ#U@À§‚ ÓÄÊyTö‰àCLšL&ši‚d4hÓô4Ñ b 4Ѧ@ɦ†0bdÓ#L4À €L&“i€* ªÀ„À&<šhi6MQ¦)šhSÐИa1FSi‰¦?z`L#I´ô&Úb›DòžIèИÈ2G¦˜I£ÊdÚhÈ' ÓM$T¦L&Âb˜À&44Ú&šz † Âf‚4ɤyOC Õ<510Ó*~§¦‰±4ÐzM’¦OSša¢`Œ &*zjmˆ§†ŒSM’mH$© ze=ML˜šzJ~©ãM ~©é¦Iþ©“'”Éé©úQ“iG”ò›ÓTÚž§êz£G…?Pm©šM6©êxCÓIèžšžTyLõ=SSG•6Qí=SQúE=M&M©¨7•6SÙ ´&ÔRDhM©©à)êjy6„žSÐÕ=OSOÅ5?)èžCTóF§”ôe6žªzO=SõC4§íTýQú§š›JzžÕ64™Oõ êž§é2‡“)äz§êŸ¦“4™OSôÒŸ‘&ÔýG”zhSlJ=OУx "’)‘£I‘‘‰’bžM¤ÁªŸ“OaSõOɈÒze=äi=1ñ•?(ÄÓSl%<™=14Ó&„õMêj?ªž’~SSÔÓô$m¨#ÔÏSSœԕ4ý SÔñ.2>‘ª;R }‘¯ ì>xÿHêÂr bÂÌ-úó§4„ÒH‚m "̘ D¢Ô;®Â„2„éý”Y&õAèUÑêä)>ž4Õ²_ý¬õ0B"¼•¯óuò™æÐ VI±½¿šõâå:íK„ꦹ×;™õŸ3=Û)ªñ´¹›^z¢'bOc/Çv¥õc¸ô#ò–—¼EÅjýïê{i:…))HØ b4š§‘DšpX¼w.¦Š–2‡Œyœˆ:þê8ÛIY ¾­q^×WÚ˜Ø`9Ð=²4|¨´ÊýŒÛªž“D¤$ß*¦E™¢Ê×áÓÄtŽÚdÙPºò¤ÝRE*n™_{^×–ö¬;õi€á°ÿ>ÞL ó¥´ž»ßm¼…Ÿ¦åæx”•»*i¯Ô_8y_á¿q´¹ÛŽ7ƒ¿ããöá‘ÞšÒsÈ ˜ýÒþ ‚ÆœC¾*Í™<ƒ¶h›p6á‰L÷F&T™„`‚ ñ Má¼$ЬäÈ‘‡$Œˆ `„:A!b˜T ‚H(ªâ'&Jâ*ÀL@ „ÄCy ‚³!QT Q‚¨(î PURЄTRàx$ ¹(2D6 Èb@‹§°„Ä HtEq"pɲ$@|ñ¨-‚àœˆ &=¨NŠ’ ¦&´ d烴h‡–â …Ù& ò¸ƒî…b±Aðµd!hV,ɂ²n‰Ü´Ù/ÚaYÏ%$0‚  * — k÷Šæq)Ø!`EG<À>@+n ƒ|3©Šf,F™’IŒ1NÞÐpK¦A’a ÙHlÙ2|Ò›dN× %ƒ6,sZ4[¶ui°4X<–ƒ œA’*·ö›Ù²Kٜ׸`QED `©!*rÀHLKAY"B 'H„ÀL«“¸Ñf¢@c†Ü ^2²™›Ù„'.Q„ ±‚ª  «t5áŠ8AV\p­È¢©¤¥1Á¡Hœr„ ¹#À²ò]ºòˆz# ü礅npSCjÙ…`($ï®^Ÿx)ŽÑ0)2$&|3…qdÕBà-”i!îäÃЙ†GÖi ˜sÈ@8Ó Cb0Î…˜É !$LX]¹›‰j6ÍP˜Í!@ü lø1 ¨ZµE˜ÁøÀ½¡h¯LÈgi–Éô¼Ö rCŒ9@öÒ¬ö`~¶X>×èmϼtF)œÔ:&Û”.†Üµm ¼‚NuPlœ¹$9A¹.KÖ¡¤)¹àÖŽÁ ‡ž©Iƒ›ümZ¥É;ò[¶³PBðÄNȪèÜ· Žˆz'È~£EÀk‡FÔn:wD™ô>q@F`¿¡&“0õn[6a3ãr¹Xû„îF@›gÜa’Y?­†m‚ì>ˆIÄ—ÂGá*ÂNÿ@Ý»³®?;õ3žÓq*@§Â‡Åœ\Ëó*²d(7o|ÑqÖœ4e1¡Y¤vNíº~ƒã6Ï^Ò?9ìV±LŠ[ië@h Ù`ذÌjЂ¦ „ ™h0[ ‡F˜À70&V wÊ HÛÕµC3ôºoÁ|BÝ :æuTÄC‚ÀÚv‡õúh^Aÿzä`åη™ JxqÓ7´>øÕ¼‚µÇガêŒZL9T÷+%oÜDŠó0®Zà¢<° Ëh&&„ $sº±‘lN?pCéÛwxÔ½]ƒ—Á !ïíð”Âæ¬oS Aã7&šÅô†íÛàó¨ùCªÚ~“ü}šÏV‘j>Ó÷ŸwRT$’À€3àNYÁ@(A£×Xöâ¡Pà¯VGªv§ZW5ƒA„!Ú¡Ò=KžwG—ím«Tt¥d†VÞþB¤®t¡?šsΖñeX~"‘×gÞ°w.ÃoYˆ©Êtßét‹bª@ú¡ 4Âp“ BÀtÐ4ÇtÃá!¯öoÔëÀ³ƒC›vÈlªÓ¡å{ùÙ?vÝK§CÇO9^ÞŽ÷IÙ!úm‚Ì>i§Dµ渣.×!ŽœY!ÂÑ­~ß´… ײRÁ´ !§­ÈÀú£”bc„‰¸™ “àNÓBWµhÚýȵXª/zápøù$}Ó¶bÔ!ÐöUžî’ɾo YÔ”w3Ûþm6ÊÿÚXßùÊgÐÔþª ¼"Cí¾ëùÙ‚é¢ÑBCv i´˜qcó­ é ójç5HuCç°ãj d@ÝDèÀÆ·¦È5g\vE™T´x5N00á{a†CáÖJrÏy…kOY øSœWêãÀqæÃíT¡1üc–f¶rC¿CÈkFÙÑPVµ‡8@ÙÚ=¸|!g–¦T`B …èùÔ/á² #éÒ `Ó Rò(¶úDÒ©=ž7nÅitk†6I|( ,bMÏ_0ô'†\?w:xt% õºI΃G¶îw³¡†Ü陇íâî¯AåµBà0–û¶`?“=-1%ikŒ•”[+¿­¢ nmÒ·iX°®æãÂ$Èl©(ócä:c(NS}íw§Ñs/šä¿Yï·VcÝô¹ÇËÇýçh·T¬?²ð}ž®¥¾¡_G‰qÏ å‘­ŸÍr×7{lÎÑáEÕ•¾Ê²”æXe×.Û~ýTü¹¹¤èÔ(EÜFGŽ„ÊAMŠ(éãµÈˆ Dzœ+´qä¬?·àˆmQÃèü¸Ìù•rçŽÄ˜[æwœÊÝRÁ³Þ­L¡×À…ë›qïÛ ã»îíì_yÇ8—Vÿûå¼›xÜ'tVÖpZ¡lôŠÃ©WxÜ4Âj!Á,Á¨i„?ÐC‘ã¿c5BýŠhˆqdžèrX"ô·§ÕgÆTŒ•P°€—YôtëVOD¥þk)AÂÁmXu¸ìºj–FÉ vhÛÔrI‰ P @üN½˜~³PäBHvßw”ÑAÍC‚†yÈšçªøû¦¸7˜ëÎjïÖÕ™±KuâIžÍß‹m'Hð[–õ|(ê½øò/'Ÿ¦úœp§ûçxDÔÿ“¤K³|Å$ý%sNTÆ!¾CB‡¨RšLž¢5àkXo‡"éЬÃ֞ݓ”nŸ%}Ûüœ5JcXâúÙà ûÚœ¾¯. N ¬ÅÒ±_8³âe¡pì5R.Ç‘Ÿt9\¾¦*• –D2c1± Á@) Wã¢ãh±¥­¨«ÊU/<í²jð5n|™VLA¨Ý+n|dŽB§‹½§Ñøß.]ì]ìù¥›»‰åjÛPÄ7àô “jçÌ u#à5L)‚_ãਅǷï²»hÉ Ã ‹ 7)5¬:†šØ a„6.¹ Í>4ž¹ 'ê¶O8 8ç(5Y³}g«u ‘1 6®©á¾ó¸~‰@nD;¶†ä¿lˆh¶äÙíÜþ'}ÀïJo><ƒø.ž¹Ä·m‹ù,ˆãÜZ'¾ÃDnÔ,îBÄ`mM¤þ´í@ÉãÇÓû›?J*=hÑh7-ûñ;­ðظ̀äÝ–7+Ô ð¾Ç¿‰Òø7,‡4À}guŽû…¾ò:º¡ÖwôÂÔ些@èþCZ7ðƒ¼%Ä •¢h%6a„“ $•Ôõ?ìo*½ˆv›ŸX$‰löAËã¸ûW„C aL5J¡¨€§êÝÖÞU7yþ–Õ–JósŤh¦rÁZ}9b²”oxÛãº.[B°áƒ‚0æˆUf>iÃÁVB>@[seq ývhªèÊ9ád úo~Q "½G¢™òaèßíÐ6™7@%Ž=¬8¦$ŽPC2y/Ô°ò›órHf_q'fÎVÌBš‡úœ™¿ãçCö7ǽxàã^S°oNÔr##‡ß `>`…Õ†Ôõ„3Îy†÷:æ§~kŸ°ü¦Ì˜2t;—=mºó.ÌqQò£Œ}6võ“€ÁÌl7£˜õèŸ>óÍtÁ®àýÞ>žíë0‹y¨uœ+ÒÑ´Çë~Ëß¹·Ýu-3âtÎIϵZl}Fôû3¶}ÿ Ê`¦4h·8ÝgòzŽÔ ‡+;Ð>§å[ûÌ·ï`â_bתÜðÌâŠâù Qóš‡ËfŸuDa}ƒó÷Ÿ™…àœíë“õ+RÁuÚ"xzÈh'>ã©ÍAºÆì õqUšòx ÄŒYÖáj%\B^幨5G þsK#ms×ßEp®X)ç–A‚¢I)BÚ H¤9sEŸ»õÈP|Tkù9×EÃG#àÍ–àw;Vcå;ÍwØøóãéÛ§Ugfí¨¹ØC,ÃÎÿg”ҨׇËáø†½Ò´Ÿ1Ãh´Øk:ÝBlG Õ™®{BÐdãS¡«ã˜«]÷¸! q¹ž[ç^u'½d^Z7$ ]ìkÝså2÷²¡hiˆhy‹ò<ÿñVA:%º®8<³$Ñ \ "@Üá-¯Èç ™ôH'²ÒYn=AšgÀô‘í{DÐ@¡v㢠° !x>ÙëfÝSžÑñ÷Á›5uÛœå€dwž¸ÆuÝŽ~cis¾½OéºiËÑDˆÈaé´HWöÓWÍ!À`ùj¿Rà¢o½Û‡<–Tï›±™Ðä=@êY)U˜Ô¡Ñd:]·4ù£Èÿ×äê&s·¡´öª^½-l£¬/ïùmêïÿÅÿ%ÇÇFìI‚:aÐ7.>)Tì ·¢ dÖ{^4{rq„} hhÔ®1£ú9†íš§uEÌ“˜à"HÑBi¥ßjAç:¢Ò­ ‚ï(¯†Yó9Ávæïoy[ΡsG]Á: "î¾ öØíŒ|®L$¼ÄQ¶=$1¦õ€ÎÚ„çûzrvwÌÕ<·4~÷;eêU]›ýÖ„bLlæô¸hÞÈýY`ÞóõH²k¹Æ}WoŠ&¾¤A×äKš@ÂÁ¦‡Òf ¹ ! z³ð‚„áÇ xðù*ÆþÉêÁ¦WkêšÉ[ÎŽSÝòÆzšQ}®\”áØ¬¤è~äüOj ¶û{Ž`£`(jÕvÛXZÑÙ:UA¬Ù¤¤oº—UÊqêÓå¦3<ƒNùK\9¥9š-ŽôÜç|í¥gŒìÞ“—œ±ùÕñé¸éö¦Ùº×X¿¢§="+4˜`U3~” 0™á°Üqõùñ,bt'¾{°òd¡:  ¸`ä á…¦7WºYë3ö–Bž>ˆ€ÞýöíXíT¢[pB[ 40ôŠpåâÐØù5þ†pÌïJfí ä2 Œ"€‘ˆz?CÕ&š÷n‡Vóksøæ Ùl¯k¥+I¢!c<–£K<°(ž¿Ô~J=m÷Ìñ4oÜ·„gçð\Úò„6pÌLÚý>D±ZÄ`‘šaŠmXKÙ…²§É'ªÙ,N׫½»ûdŒâ:òÖsà¥9`² Iß¹ºVF꬀Á®œê·áðàí\›ä‘çî}½;JÃT^RH«š“夂 ÂD øŒ˜ë Ð Ò”-,²á ‰ÍÓ'‰[Mœ¬øÅNûo¯ßdÎÊe7wwgSØ0ãÇ«ÆO·–´‰@¶æCÍ&ÆàP^ò»ïz/†Ù(WT{ôydWžîEþïq/T„Óùãr§¬ŸÝ`sVðÊ©l¯íÚ˜ú"Áj£h Îl°¾ Æ“0§ÙxŃaÇ0Àk¨YÁ,h‘\s‡EðÏHž.°pJýÛ¿ïõê¦PsË„Ïc~Ê´ Î÷Ë]ösgýGBŠ·L‚ φ£U­(—…aV|ý³÷Âv±»-„*køðê´Q-qÑqU3‘«ìožáƒDéšÍ"VéÐLäaù¢²ÂÜcÑ ½‰¢nYÇJÉN€‹ìGD8›:ZEy¥ñuÙì3­jÆÿÑX¦ˆD-’>¤QjЍ5qê´ðxFËuíy¤hTx-¾—¦…•ßdNöÇv«£„ÍÑá’{Á׈Uʧ2€¸Ô\æB0x-Œ,ŒoU[ÀƼ<ýßÓ˜ãšk¬,fY€ûkÇŒ[Ä÷{ÂwÀHx£¤Òɨ;¾ñÕ?ñÆCõï]·ë¥–ÚÑÔÅ ®këmpˆ1t—ôÕTB9„ƒHB˜èABÉë¢ÖG•5PP|ÞTŸâEƒkßpôkgmðù=j"ß Ý—®Ö@œAu.6Zþ¤t'sg°šÁñØrê7¸­!²Ðû”%³|݈:1? ÄD,Ø2P¹IÞЏÇÊxÀédö,ɩ⬠èrgãˆsÿ`ð½ùj¼ž[;6¢†岋Žî:àAi`Ô‚$òt;¤Ý-ðóÔÅ/éÈdb~TŽ\A¸"šûU3ÈTäÿG0L¾ž¥§³ÃZVI ž¢pRƒ7bQË*ÓïáW#‡ŽË/¥ .æ7$[ØÎê°eGÅðLý)U.)„)÷€Ü8\IÐá /µž?(ï š‹‡ ê“®äÿ*Šc»˜ ²ý¾ýÔõ¥þü[ßÄ|4 ÊתÕ*-TÀ½íýU¦zIÑ€Q1@n2tü_gÉäçñY¬ÑtcËBËå¡ä„Èd˜1P†Ú¨‚'€ŽE%•õ}÷  "Š”ñéJ´ÓÐS®Ý$sïŸ-4ÖG†M”†Îî\ÝkŸPŸB\xD+èßf¾(ÏQ ¦†Aà2¤øþ@J@÷Çïq- Nꇉ‘û mÝ‹å͸šè+Áçº8É£! 09¢î@ªw|’r>êËGØÇ[u»L­†pÞ/8?ze÷úèSÝÛq½˜¨’¬&ü §ÒÎi%Hä ERJhù{bÌâœdã5ß ¸Ÿ„Ô¯cè¾úÒJÖeÖ¸šOÃÔ–Ï0] XÍï!ã?¼|€Êœí÷aïöjÓ(¾àŠ-ÈòŸ~µMe°O$ÏWx–—Õ| g»!i½âÞD×®+ €Dø¬W¤Û¯æ[zÇŸ¯.‹²ù6¸‚+›o2´…ðꃔc*»—Ëù²Åì¹ÿ¼{r]M™1Í1] é¹èl sLn»Q ²œ½5’Í?‡¼Ïêž¹wîYâ½ü&é[CmLÆ'ÀCòù=• iZMëfΆ¼ðÇÜaþ7§õ½Ç“ÀìƒxÝ`…ˆ8¿Ðà¯N`ô6ž“Ó“(sÓƒ´•³Ð ÚÞ+€?›1gè—P޶{³gïL* '# ²ZÔ=)ˆc¹ïõj{§aW’¦½Ï«˜\©òÆ|ùp@1™Ì2‡áqhqœ{ç¡PšÁÞIN+;³¿!I #A†HT3º$;ŠÚ7„\åÃI†‹¹j<&‚„ú¿•XyÜ–TC8|»×Œi7õìZÒø+±³›«_ôþa 9ùÛFɪ„5<9l(ü6£ÓÈ4øÅ2UU¿sá«o|BïXD+Ç..ýöj›á¦›Znlȵ$=¿mK^ÎhkEˆîÈ#fq +P>Nã˜sSÝò£ßû|ºHbÇ’÷¼ÜØ8^®QnïMŠƒÙ!Êo!* –ôæp¥£­”gÏ8ûïŽ+N€F~öÖTi ²ïÔʸ†“:ŸóÔkÉãvaföÙ³nó5‡p#Ú3rxÿ¸¤ñ½«ò°$˜‹jºá‚äµ.ßÃYë"º¬MË v¶*U¯Wœ½¼yÖŽ5eC[….jÃrÇØw~òfè7ü6ÀìÓòôÁ^ÌfÁð»É‚’»bµ™ ¦€pŒQá½ïÏGÁß…1¿–‚þ~òUì± è’¼ ÿð2€DÖ×êÎ}r:Ï+ÕWXªÁ -âß!N9¸Ò³ÜË:.îÄfwùàYö]#^Ì]ýnfþD¾ðú À˸K˜ßÅôÇêÓÿìI©c‡ˆ'Œ8iø²~Å·¥ÐE›»t¹;ýʬmO,£Îtkç%$Ù•GÅ]ýݱçÕ•êLŸ‚‘"^@DÐT£Û*Ñ`žÌÄm·ôÓº,zf)„+?Áÿ¯Ö£J ÒÏ|N®„ôQ\ý°¦t¢4åXSĨNdŸ&‰Þû{«6öŽ´D]¢æÖåø‚Á¤NãVTaO¹%âR­è··ÉPóöp• ë™Þ>éžtuÛp¦v‰­Bo¬h‡A}C¼N$Ьy¨LÌsûö3$7ì›*"³@&yÞ­MùŒÕ¶)WÓ¯º’óÈ:Û ôÆ006ŠÍ߆ó>Æ\"ÖîTq«tf¼¿½Ý4Ž¡}üŒî5øˆ OêÀ;7‡ÄÜâ^òÖ¡›Cô||Œá¶CŽzð 'ï߈ì?j뉱@v¤6b险n¶ýGH§·c^ «~:ësÛâ±5`ØÖÀ(u¶{ªÿzÓâW¨ ´›½mõnosö1åçí’ÕR«Ê.„ ^dÊ)´7‚'DUõ Ѷ‚ÿQ¬Iõ×Ñ?8À8ðªY‚” ¡Ã‘EÛkG?³)7)›+‘Òl¦ŸjXu¬ŒlÜ—ÏÙQˆaã—Ý}çÀœofE$f;\޾¹ÁT‚ì@B7ìNªù·¤Ykx‘ߺ)ü´jô‚¤.0¼!è HWû 3Þv(iËì’©±>’wÊý¾‘eub|¶ÇíiÕ”… a!<¬}š¦QL™û꓆?¥®…ÁâQ€”@Ì*Ó+ µÌ¡'Ùdêõ²hz8鮚WP9|(ŽU3&"ì "g"芕‘Í÷I$óžÍå¤é¨|-ÄøÛ6¢]+,Û¡ð=fÑ {Ëé¹¾QnÈÁS’¼(é?Y„5…=7¼è¡×0‹Œñ·ÿƒöúÜÊ/¯ÅdÑÌZD5è _×kÄ6Ó›‹>p7 ‹w¿Àÿˆ@ÁZ«ÿª( /ú§¿¶$7‚ྡÚò§W!Õ–}¦¼eÊXº™u8GIºjºaªÿ#BáƒUªÀµŠçyæ¡“óž~ª=ôë¹&¾ñÏiÂc§L~C7סŒwZ뼂«Ê¥íý`Ê4›†•Fœ¶‡ó)Oh⟑±G[Öæ‡+¿yÝB>ûq·>ÇzñAöj"m}ô“¥”T„ÐF¬ù+Ÿü_z.þ —çSŠ4S}Ÿ}®±àË1–Ã=}»ñÝ SNÅFdÖc[Rm1R“õawïk;µŸÚÀûnÉÝZR'AkHvd‘ÒøLˆÁHœ|qüSŸóêe°vc®÷óxT;ý’Ðáðt^±p·DÞ¨y7£³2¥³ XÒ½Únä æ~ÇŠ5’M5eúÄGbvIÔÂtæ1í±æ5…g#ŵ\Ð/àOLÙÁƒ%ŠŽãÏ™Îó£Û¹Iù :zÉ[”^.áQeáǶBîhJ²!ù8TÍ4*Å•>3%èMq:‘‚ô @@hXœb°p†ù¹Ú3Ç‘eIþ¾7jÅ€ÁÇi# ˨‘)ž‘@Ê”ÍY’ !¶rT S­¯:ÛÞ ѹ;ì‰"äZѹ0 E¥@Ì÷m¯0´ñ#&ÿZúë}*<­‚¾èÚònk|6Ý…‘NnbFþ ý°v³ËîììaØDxûBP°1€¤ Oâbî~:&žUS…”{įÉãÏåRr}•¤ùð.½Zv¸½Ö޲Ŷh ûå§«gJÞ(8O|ÑÆ†!0^„î!æ´ðlÚð…aWáU\=(΀ ¤ø¿XªÁdÔÑYu¹È¹€íîpv™k/Ž¡Rý}ð/ m†[C´ðþ]Nëàê9ÿ_®Ëò¶¿‡ÊãÈùd:cXOe‹íµ÷- Ï„¥2m£ÁÒº~ýfà% R¢)¥‚%0âþBp “׎@ÿxI\·X¢AU eó=?¡M¢WWòíZM/žŽ²mĪÚ‡ø†1˜vÁ“ÒÐlkŸ]™Þ1Õã7ý–ô•Ÿ 9ê´CÌŸJ1íH m]îê68uüë Ùë3ƒ©^é0ù —\{e9÷¼»ÏIõ ÑØ6€%¬^¦lŸQFdJz¬ˆÔ.\Û¶I–¿]Ø©3íMeZ·Ûª4׆ÄñÂA?v?ëä„W dø@õÅ/¹d*pi×Âaõÿ@p½zi¢î¦½Ôá_²m¯l¸Á¾¦ž'Ïlû-Y©©y1 {b~>]ÖØçÎGýdûZÙn >'Ûëéož›j¶Ë£…âÑGCúä År"ŇŒ9š Áš Ͷ"§Û6ÀÎ ƒçÉ¥ùŸLj¸Y(è…Øoóê®ì`7utb6M|ÝòÅØä7Í?¾.î áäw8ÿ«7ßômØgÌ€Ì5cC±4Ã(þNGUhaúÿÇÝj9ø¼ŸG“ñl ðAãû½!fiÁ¨gJ´Ô¾3äÒh,á 9;ééægÜ58ÿûI>cT†ÈdÀßÊ‚ ¡‰Ã)ž™fhÈ-·ÿ¬ kôðܸëo!;t¨ àßÿ’ÇLfòOq?Ñ$&æó?ÛS§˜×(‚/ž…YÁÙòõóüÞÛ ö/ Ì€­þU]ãÇ‹=wTCÈ:Ppdap‡·»“Ûàæœ¸Z ÝœG/˜ç‚AÙ *O4 -ÕçxÛ{Õ­¿eQ¥ÆŠc©2„ 1’ôþt‡Ñ†¤É^÷†Û\\Þ¥"ìËv[ Ál;Jn©ò }½…T×FCuµbó㋺O ‘BÐ)ZhÌN°>Göywˆ+)‹ÑÙKÆ’‰qÚéo8˜WVz‹Ìž{Ùhd8€€ ¦ŒOUBU(‚{³˜öô;­ö-AÜÅäe—"V„Ð+¤_ùb5C›èÅÅö}GІ’Õ5£BðAWU†åd”"ñÚ½÷gØY´.e)ì&ãiY-Aïs†¨±4ÏŸC µÅÒÀçÓá·ËrzFîÂÅ‚qàð‹h;º¬†B¢Ë5.›=‘ã*«SàîeüÏV¾œí=ê<‰¡½?6]|&µ|êüp±H5à·6,#dÈ/îoj|XXx õIÇàã½äd!Ý‹…‚I:jQ.wz/žH»L§#„Þ·ë‰Oþ½š¨íVÊ…ÄÐT³˜Ávhód`,ºôu «³ÚÌM’Uö˵‡ŸîËþ=ﯸÎg ÆöxàÁH‘÷[êÄè†Mug°àøÈUœÆ  TbU†;¾f¨¹í|æÀ0§uÞ!Û׌ڸÝÅ­Ì,UÀféDatˆoÐ @È@B&sïÕýÍj^bˆM@P•¤C«Å/w¨Jð × ·™!Ÿ7´ïŽðß(éôþ«~%¯£ÅÁ’¡ùåìØ; Y9Rñý¦„@±cs8šÄ¨Ý‹¯[}™Å7‚ÛK]žÇÃ;@Ë…ÐôÌ:Oy3RéáùÎ+§l(iÅMù6­MG7½ØX~ê±qºº«ÊSÇ[ÂE %³$ ¹3¹¢ŠÑTÙhHðÕ°R^0˜‰Þ•cÁ;•1…"ÕCy_Ï££çÕìðœU©l|O[ŒëS™†4#+°`³ã{b|ë3m†ü¯tøŸš}­m·_ãM—^X ùólÒÅGo`‘³ëo Dð•Q4NúçÉ7›«úäî ðý5c´¦itæŸÐù>Qâ`L„É6¢ô;z‡½)=°Ãl¥7“LÕÒþf¿ÿÑB8t×7ôyl)?cO ´F4Û Æw_oÍ0ⶸê Ê H˜Æ×–ºÂçƒqÒÒû4xž”~+RV¨OûPx”­Óï8þ ‘Çxû‹û‘¢!å ¹ ó<ÜNKã îOÏ)ökR¢Ëå'Z‹-uÅìþ¨{¬œ¦$H®Bœ@R]Âc™ó2ýö4®Ü';&q'¥¼°õSm·JXÚœ6f=·º`õa+¾ n¦@‚àw þNþ%¯²57Ù¬ë¦üÆ'LŸ_àüáØŠ:„"-î®tcW²NUdƃ¼rOJ%9YÏî5ýBž>‰Ú‚î—Ÿ:¸ŸI¤qÈ.Z\²Ú÷›Ÿ#ÇóÁÝ»º%kˆ^ÿ׊³– ”&ÁÖ¾ó×£juX«©âg¸óÝ××Ë}†Â뵫ù©Y}ГœâÛY­A§×ß#}$¤ÀúÃW}­Û?òM¸,Õ¯ÄßjÀÙm&åæm—fÚò5!\$}“Š»]êL´Šªþ3a«¥{–µýË®•#°Þ6™Xu™¦6OÄázcP™p2N<¾–ÒñÜîÁ·yÃrN"œ‰‘ëi4–}¬÷ÇúªˆH^:›Æ6nÌ>äÓºÎàq ëûmâÐq,è£XuÊÌ=¶æ6ú÷Pe¨•f·æ[]M¯cʵ·¾Ææ2'èôË4ærSÝéýöÛ.aFÀë1ƇÂÜ¿BÉBœC‘!…w²¬—ØRt?¶þ¼Šy 1Tœ Ä@ʬæ²§Ï{t¿Ç¼Í²q9–—y ä6Oˆyû»½Õ™²!öåùJ‰ñ\’ÕWÖê뚌‡íZ‚!_\¼Üôê¹é„FÅ©ëÔ×¼×Èòž}ò„ ¾xçzNµ ‚¢çâ~y~‚ñí»EÔ¹7Éñ´´ev)%PnüH­'Xby˜ÌyBK¿~3 õ®$KXÈ:«úÙ¡µ·8ÎNº~l6Ë* ë¾eÆ8õuÐ*`—IÇ´¼\~„ßåzzÑEùç5A]¥¹¹ªßSzñ(êe„šåÜsŸÔC€Y'ÏïbšäŸÑwCÒ~Û7´âbZFÆfP3V2â®è{Õ`âð@‰†·¥Pp½K9âöÑIÀ·µÍ´¾5>Îìù2š—›iÙGµ†»Új)?>¼8ùeKñöù\9™ «G¾þß7–´S?öQh=”½`Ù¼b(ÂU÷ b®æ¢µp›“½J îœ?¯S ¬àP¾Õ‘`7•þ_z-М¶“¾äÕC¥ú{“.å=7Qášm^s¼âó÷5$°µ¸õëž7|VÏb¾p¾u1Š¥â<µþ ÈÝÂÙÌ¿wæôòf /FÈØ–᯻É}>ŒÏ¤äGÜåF‹øt}†wž(hekXÊÔÄããÚõ¿þJk61Õ× – 9.‡Á‚yuV‹š³—”‚‰@@åkÈʱgÝ«ß,NüÑþàà„ouû_hçßùvÙoùJžþS¯Wë¿£Ýyò¨†Sm=•_¨×Çy)»µøRÎ;~#rÅ“>5F—˜!:§ã8ªþ÷0¢Ìƒ2eR¿W¸l ó´Šø’ÿœT> ¸ýÁ¢ï5Ñ‘ÎCñŸ ŸsÄ?eˆ:;ÜÌ¢_Di™ê»»Z5ޤ^¡sÿWñcŸªš îz5î,fØ-×OSÜ3¦=Ì®} k÷+õ”Šez~MN³Æ½^§ª )“naòßÞN§ ϹxÄ‹ò(ÃÁåÞÖªÒ.-åWW —¾£ôO]q)ïG1ó õyÜ’ÀÍM{²G *âóŒ³ãޏüù2ö†}m—š•TPÐ7.§+î€Ëåf¶rðÚ4Àkp}Ýpõ:©–ãÆ;ON'Išwt#Ôô±=Ü•IÁXòÃñ¡ßóY&]Kà ƒ¿Œ]Lü5SIÓï.‹?ëÛq žLÖÍ}Z´ö~>t×êœÙDÜ”í­ÄܲµÔ¯üýàôñK:uÒ»·”Ÿ‘aïdð˜Ø˜0UKæ¶ek7Xîé)ÞnÜZ¦½Oï>ãZ·³(A—ÂÛv[˜B ò÷'T˜~w©J$Ègìš5Їo½¥‘“ħ€ÁÙæ‡¿ôƒ³Äƒ•·.OPzºnåöšxñÛ7b2Ù£›¬ôq¤Ê!g‘²Ig(¼;9M¥¬'Ž.ZùÒ¥ôËØk¨‚oh••¶ˆzvk™Wlp×à¶[:çz¡{o~¥–6ù;Ï'qsR†ç>¥·] A‹!¿5p¸‰þÉ xÞ‘ËUQAM¡Fźß6\¾Ó÷oã÷ÑH¿,äH Á[½ O<@ˆŸ?‘ 6\ƒž¨÷,k.‡©{›dñZ~ü. Ç­ÕÕsa™}\ìÎ)dJ%ÔŠMwU]漸)`72JÉôçâfpÓjy, Y„£€)ªä“Áݪƒ“,­ß$©Ý?àÞ]TÁ}”“_8¼¤­ñö³Ay®¼Jï; ,0að>$މ,¾@ÛÀ5ƒöÕ & 3}—ž§bZ¦›{XÔþŠ¡f#{ŒSë_bõkôˆø¿šw@•T_z®¸š.M”úŽN‚˜x¬ðjGÂV£ÃÊuòLb¥^‘ûS…›—¢„‰ˆ’uûtŽÖy¿1ÃN”ZR‹‰à‰ýÏï·°¾tóýœOQBnªÇî±âsy…6užs™Kkíí©ÇÐ,^åC(‡qf1¥²ÂÁ€0‘k>Ôw¬ßHZ(™/ÊÑeQå-™ßG(ç‹_QÏ’€¤( ðô›…M~*²Ũ‘ÍïuóQü]ç›0µm“ .ŽèO‡ÖäÔÌ?Ôå9®Ù®B‹ bÜ‹Yþ>Ðp9Í?þ@!g§ÈA2E; ‚ìñ¬|·io¦õ¼i„ÅO«>CVµ*)ƒQuÍG™ýcùúïÁy·®·îh >:œ©_ƒFþùE2¹æ-y$Þú™Ð`³Ç6q¯SxŒr?³¯ùE¦¨[ÌWˆ´SQ”_ ÚØÖŽ¶û¥òã1 ù_ âþza‰Ä×ý‘Ÿ>Þ‰Ë.µ~Xn[ÅÐß ZËü™`ÎŽ_Çw¯q²o8ð>ýò&`EB|3†ä˼œ¿;\–=–l…S{mÂßZê½¹öÕj³åšf¾ÿˆâ¦ic;ÓݪØuýU—í·mƒ|§÷5Tä²3?:Mf/ÕMvèÀÓW¾®ƒ‰’s`çƒz@¼»Il y¤FhFòDk‹³fæÚ{ìÇÄ4•_spÀÈ¿¢IäÿXnÍv<—ä[(KíV:c†Û=Ÿˆ1\„£ öàòa¥%7¶ìê6Vs{ì€n;¹8"óõÀ6ÁÑ)º£ ©Õˉ¸ðDvD,*ÔK[D·¡lfJ °][9e@ ûgÔkWSŽ7`rœ¾cØàÚ‡Aˆ¬ÒÕ =Ýc;¨un%¡áµŒêÉÝ Ù¾-A#lÝM>X¿Yô¿hÿ“6:sÌ­YzFv‹ïO™§òKgûJùcõ¼œ…Ç"¦ ßÕìg(×þ`ËÅMŸóŠ\5tÇ‹d&*Ž 7¿Ÿ–!øÊƒ]Eûú]rc’¸Y×µX%yi3˜…ý¿Ï£î}òÝ/EFɨÃ*êM^x»Ç*êù1&ÅÚ46óAÿ{mÞå۵ݿB£c‰â(Ô5V›ã-¿¥ë&½gÕ‹„C”Ԇ͵èªÒYûëØÁwõ1“,Žv;Mí2m­¸r!òÎ÷ì’ò ›¿“²îò´OšÙ¼]‡µyû¿ªI­±—1Už£ÊRZÁAÖ-쪯›â8YÉ8eÃLÌDS„<]äj´•ƒ3Â?ëk|ÿŒoï)/«qʲ‡Õšy¼'¸ †ªï’f‰2Þ¼t@3&ûaU©Jp¢=HíµL¦ë}Pµ²[zk¦rØ ñlâùt÷}ieÎ"é¯é„RiÒÚå/¾ÓGt o`° Kjd@€ã©©õ­k;U—â­êãÃ{ ¦êà¶vßÂÜt–~wàñZ½—þ)ì£ ­sm|3×È3¨3Ù›®DM½]£,ù‚–èS¶[vb }/"õ›De‹#ð/(NÓÍ©X†ûS>êiß–^ýÝ”§í¹–ÚmÖëðAØ‚—¯%Nätˆ‹·3&»Wø,WjªÆ¯M%]ËÌ.&N©ƒŽÞ¾µ»¤voftÐ…ÚÊ›}üV@Š Løh*©&=–¿_:Dêy¶2ûŽÅtðíVHm† ‰Æ­š@ù½›GäžÎêmf#Æ¥C®‹™àG¦½®áç¼±‘Zú¡¨ €/E /DBb©EX¢¤ÓîÒzulÖ½üçPÆÜBeá–¶`RÊ.z3á#4í´4RO–ߊã5X…Ä[kêñ.áJ#ŠoЇÄÃÙ}.~NÜ1Èse¢‘µíT‹4Ò¦ë8/Í?.ù2b‚²‚ÃÏÈySüÝùz_.=ăTC¦².<˜¬d)cá~׺–^<Ç6Ü«ä³.uý‹[Ó®«‚OPj¢š…QèÂ@»Ù¸‘RTb~û2ý/0M.ã+pø²§f£FNY§Ô·¸ ‡ÿ:nº`t‰äú=Ø P)œ GÌ‹ ÓÿrAÄÓ´ô>G³/¦áP'J×-ÀÍãÎWòKç<õ.&®tc9¦Žë._<Ù»Z«$Ò¾¡H~5sG¿Ô‘¯g_nÙ‰éBöùhë‡GÖýwÉ5™5 †vš|íæÖ¶¤j«å|þÆ%ÌTµ¾ jè¿ýÁÅ̸Ú0¡iZIowÜî‰WùË=mlÓ.R«{7ËœJ=‡²FAio\·œ1°†‰ÅO×$f „{ÅÌX,ó5—”D¿‚õCurø‡ðB†…8—Sr¹;¼Ÿ€L¥5·ÚÚ.¬Yßc¼ÜªÞå÷Ø6À°Ç>ßß1íøØUÍÏšü=ýR0a0J–,]äí-Ì‹¾Fšc9Ù `3Cg~+Øídüìƒ:A~œ|œ~³ÿ\UçGŸµª°¬©KL¹/ˆÃDÐXäèëbû,)¦:gf¼{N¢EBzÓ¦FäÖÀâu¢Zï«$dù9¢4‰D i%B›âvŠàªOx% ¥‡û»œ€é@/Ûg¡yªÛIcKß,(HF—ô ˆ|ŽóôÄ~õ+6Øw~-­ûÕËöQ)$‚>¦1Hsï^•ˆsoiIá`7O±cÿe9Ù˜­é“™I(™Ýg‹ Pwš—ÔFóú+{,§_AŠÁ`ó¿Wä7§Ð»äT\Ÿ!ù´×Ï…µ2+mÄ»g±A‹îÂAÒq–S®ƒÀø*2ta’¿|„³€ûà⇂)Ä)hdBÇdÛÀê$ñù×у©¡ Lù»ówÙOí©ã«ËŠ=í<çÏ‹eŸ ð® ²A¦œü°65ß©&W†­î²sе>á‘?³•ÍN{¥ë¿>yþ5–§ÊS.Bîmñ?V'N%«]ñ-Žë‹y-‡|xö;èMÎâh‘PXAfaþG2s™ß!!†+Ž0ñ‡>µNyl ù¨Žû,½IÅ÷ýèg6U#Ð{Ed||èÿKÕLbô–Éí 4gYø0£: {9–…ö’ ãA'éc“qɛ㔦“À¾N7-.ßiÁ?\É:7n'šL¨\Ž åšÕƒsQ’»ÎCu6·m'›šr*Æx£:²ˆ°w=g—u&ÝÛ#Þ”e û¾ª•.O¸]õÅXæ1îNö:Œ½. ìJ½qîbi¤ ¤‹v¥¹Ñoe çQ)9ÖéžR 5^RËžŸÏ t#èT ?Ýa`QöV$þ™:¦KÕRúÖ¯Ô¡|_æöòÁ‘1ºXÿÑ ñ­JpEíXÓOHŒÿAôȶa‡õhÖk ˆZ’ý‡‚AÉ]y±”ýÒÚÅ¡½k0YhÔ¼‘Œ»QiÒÙÜáØ–²ÿLÎeÝ ?ÍTVÓD¶Gd_ÑÓCIK:O†‹rüý¢”äŽÊ}“/IF«¾SâHzh ›åîÏ ã…Øª mlŸ ©,~j›l©[;ñªé~g“;_B“,éw]4²™êåuü/.-{Cª4[NA[™ü#ž­Þ•EL "¦ß¡¶áÜfuÎRHVæ=ïÎŽîvùX~?£5;pÉ4„ÑìÏ¥>ÅíaIJœOoæÕ!ûƒ¸-Çè©òCG“@ÝcªT©XþZyߪUOG—dë<¿õeJ=÷+øQ|YýS¶’ŸŸ”œÅ€BNºï ´hjôð²=+E¼,â¯ÞA‡EÔͼ"¨O “ôÜr¤–ò|BÖYÀ#wEØ•^MõD$÷ŒšNI˜w(L6Í6 ÂºÁõ OßKÀ!‚‰UÂlÛ tƒ¢Ù?ÀÖj!Âáâ\»áW¡Ã·u¿<ÿoåà½øú¨s®ç¬ô|LkÚ*0ÀœŒ“ã9Þ{nË­wÝÜyÜÝ_kry;ÛÑî³ÛÖóíÑT‚eOÓh2mO4&LÔôšdž™)ú`@ÚOCjaO ‰ Ñ‰“SÂdz4z&C"za0˜šdž©ù2b'¦@e=&c&FEBªhiŒ&§¦š0&ž‚bmÂ0šjc450Õ¬áè±eØb‡A\¢äÚe6l`¦ ›ÅT‘…p ë9@®úlùÑ Œ½¬ñl´÷‹éžÚö˜‚]¥E‰}A1q@&Ô@×Î,RxžG®#ÞaД‹Tí¡Ç À?WèaŽq’‰µÖ*µ¢WàÁBQÞC›Áº'µÛ¯<¶›³€æÑå_ïzô7^ûqʾÎö©¿4€Ñ0„Ì3 ûœÂÂ03uY 3—Æ WO`o3ÊQõZv9R¹Èõnq«W[±$Îçç|Déì ©]ü*p&—*é àý›ôX"Å“xý&§P&™âN„×v“saàò}=Y!‡±´2=ñ @Mó’†Ù„ÊV\Ø¡¿.·HãXíÞQ¯ê¸,(aÉ©‡W?)ð]”9+ÐÕ™ñ¡˜ÎÏB¦{SÆÓ¿Ï†âHb¶gÁ½k©'K›áßAä DGƒPp ³3øÙCtluE÷<‚U–…ÄÐ2—4™æÞ‘^ؼ"þ# :6¡Ð÷´mpKå£áDë¡Ónü˜½ö¹"†âÜâ#“É´á·‚«ÐXÙÖ±x¾ksKB¯x×Ë5iël7U`ÉÔ4þss§* +£üGEó)|ÎwxÜᇗÖ~¶–'¼¶_L7àhXP|¿Î}U5®xÿýà«¿¶U~ à»ˆ‰¸”i%!é€y›Ê3Ø×ßP–\ç7âIʤè°þ‰HÅÐáÂ<óDiwËëïÄR¡ÛF&VëscÌ—ü¬Z™ø“ÞÌñ÷^;t­&¢1Çôô·,4ÂG”n(†a¿Dà…¹Däe§†eŸï­’"€¦lÍ´ z櫰Ĺœ€¦¨5³qõØ ©:º7§–J€kNwg´ÞéñHc©ÓßhãGz¤í¶7€¼vgÌ4…T €·K¢%ÁŠleß BIC]H[Ï÷N!ó埴m‡äq¿össV¦9ÏOw¶mnqf<-Ï^ß+·’é ŸQU gGI=2”.ä@Т;[.’M6l´EÕ ß¯_/Çâ‘r÷²ëz ®TcÌ¥k`I¦iÙ~DÏFéz‹w¹±ðoþù?•wŸïô×щm¾‰í¨‹ÎÖx•ü9ó¼Î rˆÎO+¯ä g2Þ#Xµ¾E= .'¦wÙ-‰—äõem T½•ü§Ùn|R°Ï…Ótoû ¸IZt„¥ã´Ý_EIo"€ Cj!ƒzmÖÙA!6]¹©YGí«¦j¾toMŒxTÎ U%F§öÓª@q{ý‹Ûy|äÅOq[éB¤†7mÀRö;nmŸöäÂ{å¦7B14x¯^г¥Ä?õß²IMàéÌ8#όߘ©«}e›Ã ËòÄDZì.î÷J¢Ç\™à$æË¡èaL 7¯‰¶£õ ] –é,—’˜>¼b¤Gx¼®ZGž5‚Þ¦UXûˆ €îˆ2ef•?Î *ÜÌûu˜­dWÜñ©$âq· €WˆìÒcÚ%ÔSÈ·OùV;½L–ø¬¹LwûJüY[÷šØgÆ‹~`N‚À®ÛÈ$'ŒãÞŽ•TÆÉ.7ø¥ž¿»¢I0MÜYß öû§uÖš—¡¯á!öx/ ³£AfÊä^V?RçT6Gˆ¸u æ×Ëwò’’1Ms›J8¦“]쟶.:ûK·tã6>úNç‡ÑÎE••ÁÀr4Ǧ.gö¼a»Ü“>\ Ž×nÏÙ „0üa"WÞ¹Jt„¤ð¬ •ZÐ ‘9ML[›¾{ÙãÖ³¯%)éóÏÕÁ|›ÇáæüI"ò'P)ÖæR\/6¥ÿƒ—¡[½ð£vöäë|:j×S£T¯A(Òûw.p³hLB8~HêT]¦dW¹Þ4[â3Ä«ÎøK'éxM EʦmÓžmö#V’°[çö?Ï/R*„”¿Ü«)¸}üt²æ$¸Õºª –qàš/*X’øÝÈè1}ë”—A°XÂEJ+‘}±cÆúëX©º·xi3÷éâS„ÂûV·¨G‹¤Ëu  ‡,‘Ú…-¨z#ÉÚñù˜á#H°~Ø›G—é®RÞ÷*ÇHÁl&ÜÂh [ÍÀîr0Þpc“®!óÑ@iO†€&S§p'ü)W>ZrOœ«ÀT=ÚtÀuN©¶ 01R7çNV­•­z§úi…v3…A7`†øçñy[øfóº ;ûî~+Âèv×6‡³JÎ{JêsóZ°.^[0ÞߦãÞ‡=ðíGyV}£¹`Ô‰Ãêô X]->¿s‹ oÄ᥃,SWïž÷fnF>båäEk‰RdxtÌl5šœåO1AJ ´ÇÙfû›€O¶€ Ö‡==ÙFíw«{m¥~@0°#1³ @+\IÀ<¨Úá¡¢XpÈ5Üê%ÊIÁP¤>w~ ⇽€ `e‘µŽÔ}EXùDV¦¸}Ã`8LGÎÖÙõPæÉº›_F9In ½¨b ôéBiç-e:Oi½˜Ð4‡“{†ÏPcŒÜt«!g#ëú+&† g‚èBÆZö;y‰h D9&ÏÓƒ]¢q—m“J{ß–¤-Þ6ܵ2rÒy•mtÜIì^¦ï«5èjUm€&ø$T ¥CDwD€èB¬Ê¼çrþøÅzœù¢Ž5†ïAñ§fn¼@“<$ ßTœ¿Ã{x=$ï]AK ‡?ˆ°Ç±7 ¸cW÷´@ªâÐAŠ(¤àµOVTE/8»d)†ªæ²Ïšß©òº@½0(è"wÂ…VüÖ‘ààT2ãѬ#‘}þœwM¸5ü€å¾‚à¼ÀÅ6$3\ ûˆÀÜúÝdM0ßg_Ê€¡éV¦ë"‹UNð0\ÕÓáš÷ØÜÞo­iPÛèóÚ³B°^ECR\™@ÿë Ù˃ êid™ÎÄé°²ï:$vWŽ¥éܽUS8@¦ë8{-Yƒõn € E„/ç3ÁógÎ-ÙzòRšœâW¨É‚Nx,íè–06€ ` qÉ¡(ߋɎ…ØO^¦¬×Õáñr%æÐq¢Œ™€æÏÔ<|¼Uw·¦æ=ØËð,·œÿßAç'RŒÂe×\ù—Ð4%Ѽ–·@+žàS0RAf­i ÚJþe9ök¶=Ó¹Ž-$Ž–’´ÁJ ž¥t "ZÀœ·?jçŸ1jSQ#¦ðSäÀ)¯ñ—´3ši)ÔïÚ+°¬dTa[ÒË'¦b¾0›ˆ(2­¿6bŽT*Oò¬-7¬Tã2v\Ç$²>dÕœfí4þ‹“‹ÿõz¥ª<v¤º×ÏFmijN’˜@]‰åÌv`‚ÕÝ^8óx@oi'Ö¹<{¹•-†¢ÁwÃdý¾ï ¹Ù~€@啜Ëð°ú?ŠFmìçÌa°Ã)ª‰šZ ¼Uq;ÌZëË´}?¨Ž”¾O®^5þ‹¦qH”¸æ.†œûMjÀ¦g¿8o‡‹OÕx!3òs¡&æâ˜  @ ~ÆÐe%ާƒ+qabw+~³þtÖG­ÇUNHèšMÍC¿ÙS׿âüàºF¥Ü:/ ñWáØMÛeU* ¤ £Ë·`9ÌjZܬ­ÂL§xmB÷Ἠ1‹Ö’b5í‚bu iê 2ðJWÿ2hb>*¾ï%Žÿp hy!ú˜k9Ÿ,Qàol»1Âý“é]+"7Ž'^û6O²%ñ½ÔW øÈ›%%/ _fŒ\ðJV1¬ãŒRb­pÅ·ÿ`´œuJÿ•sÛý›¹uÂ׉ÄuƒÝÆÐÓ)tŒT¥(%gq¡piξ%—W˜!øî ‘”@nZÉðí}‹UsÖ Š%¿]ê;#ueÍ1LF ™àxk wœÂ`ù§«ÿàÌYËC^¯k®Ž]·W-JR«Õö—¤Ö¹f~÷¨ùÚQÚÚQæÃ^ AþþÝ5Yaý=Ìú/™í4ÎÃÚƒ,£Ä¾ž¬Ü:]* ¦æ6 =Hĉ2„UâÊä½zb–Ýt¦š0sMœ¹~¦9¥ Eÿ6,càeÅ¡ Ï¼ M–UÌÈØ~¿K˜ÕT&­œUµ©•)USØÂ1ž l¼³‘j 7ƒÐZòç9ÞÒ Ð¾FY—Þ‹aÿy2éÖÑv}¸_ ·V¯®Ôc({#:¿ìçâˆ÷ú¶c½ôl™¤Ó¡"T§·ÐSƒ¿öá·RÇßbÅc¹ºx[=B2HÏ·¨ùöQÆû瘛Ãò̓S8y<áa±[‘‘Ùå¥Bé3=ÅÒ/ô! Îu¼òÇД;9>°6Àé jCá*=¹öš'² ü î ½°`¬ ÐV^òÀ"'ŽJû\…"MǺ, Kí¢!´§Ö&ŒüVÂö× #5\ÅÎoÉœâNCÒ¼>6’š§:1Çß’ÃU˽€ÆâmœD> É×a†¦<¦4:Í$ °Ê`ŽÞe;‹Òƒ9ÍÂËc¡áy=—p¢Eºûï­kÊ]u8h9Ÿ6'?Œl}Ÿ*"6k9¶—KˆšãMG¸^Ý)ëæØ÷¥æ•â¶Ä'MˆgÈ­ÖS‹B_ÙlÐĺʇ=@¯†#|´o £ËÞ¡sš67I]\–ÃÍ_3s¿ÓÍ,¬‚ë† R5ÎEØ‘‰$²0Ï´2^RcM_¶ KYü1;RWS@eôÇÇùÝR,l„DDË¿üKÓÕ¼]ä¿çÿ[9Ö|RÜ7¼ Ö¬–ÃtEq{¼©eßËÍ ®æXøêº*ü§Ã~j&~¦²?RŽ“˜š¦t[l{œ•†GuPñ6nׯ|¥o­~)[6³~'3÷ä xsw¥1Ê®†à)„"¬_žÏà Í= …ß¾-d䌫J]ÖÛ Sƒš—Emº%(¡ã¾ŸwÙ÷|•·âî½z´e˜§™1Õg¨uHÝ×;¨ó´cpÚgDƒY;‰­eÕÚ½”á*¾°_ìyi©àJ Yœ—O~†rêù¡Á¾âûzÙžÁìºÙDµÑ„ØáB45Ôæ÷T¹QÄÇJ{k/v’תÈC·a@iW19…Ü×,ËñãQïmPÓO&¸‹‰c÷q¡Ù'ÙpWˆl_±š ‡«ûȶ¦–¸%´Ø£m»õ¾™kt<®ÛûJ#RsøVV]Õ;å@«³3®ÈÿŒQ“‹U¼‰¢;’PzvË&íð@•Ãgò……Â0ŒiÏvÿWô” Óô³°Ý•¹¡[ìâ8PŠ8NÔ‹ÇT]Õ(-=NI±ÛùTZGʋ"O˜Ùw,jc¡š?Rଃn1ÿOBK"8©ì 8’tø/¸m´oEî*Öà èIE6#•î²¶F0$ ûè3©½^¦nâF®ÔÙ£ìî%i{¤‹øÄQ„½Eæm ÀK½ÜÊV…¼c©èÖ·^gâ—¯îÅœ]éò}×0eÛgˆ˜bÖuUí‘É©›ûü Œ.KÊ(¤/ƒ…Ð/¡ø‘gþ¾”„k—׌"ys¾“íº¯ìÝŸéHîU „©CD=êNzP5Ü-.¶{ÓIñnÛ¼Sñ|ºM"Oj³°¢™4­ë»"\7•ï¤Àï¼}©|B+šôæ xA|p/[Ö£ýiJœ7 ËAMu`¸ßTL*w¸Éœ*SÅæˆ¡½Xý…ç›B­˜™RG¹÷±ogRž9Óþpjro`@Ìä¡n;©O½xÏã¢ý&§<åû4&Ôó”–ØÝ‹…æb¸½¡àH¹+•@Ýâ€÷xzAõ ÿ`–}t[ ­ì§."“øÇ)f–fËy–Çåê| q‘.‹;†_ÂÊø~]KÝkÞ³!èIl±)ÁÀëçïM¡­ ÷“´ºápà®XV{Æ}ðÌ/r7gý[9™t Ç&7ð^ÉDxûó¹éãZgÄ·àò¾MÍßÑ@)Uo6½^ÒúkR߸y”åœËC ZXEVÖßÁíC«ä‘>kàë8”›úŸwbûE—7¸Þã†ä‹Ìï[³†j'ûK$¬j›3دط:ß;eÙŽ|{'˜ƒ•S­áÛ˜íªþö"¢˜:جœ}aÓVFÍõ¢‹8ÌipÃôÐ:PNPSæ¾þ ræÀb×õ(YÒôö~zâéeN5Þ‡`QÓ¥£ï8rð–CGOóØóp¤·þ×z\¢, ú? ¬¶?œ³—?µ-ß #Ê’!èy½4AÅ)÷®µ¿/ÐLNµ1J Ä#+‚ȯÜ;ÂñX8rŒc Ù‹1l¸Göm¦d—¿Pû%H¹v•ƒëP¿ŸÈQRî_=ܨ°4žX²X ŸÕ[!­\•Ù‘vK”¿&ÁOºk›MM 8o¥2ÍPK±| ›¹lómçwžqò8½UÃ;uýÆ$ÓS'ÝŒ'æ×õüì ð†`]ª˜5fz0ãq‚M¶k¸^ë‰|B4‡š/WâJñª:NUmò ŠïÚ—øƒba>™I䟈”%kPÈÆ`ÈšÇKåÔѯŸ¬!üa®{ù!åÐð·’Œwô “v•—ç:È’gGù™ƒ!ا„ø¶_’ÆCŒ•qkî!yG·£8¹!Õ{Þß“V ¿t/uÂoá׺#rÜc¼.†yž2®4÷C½µÓ…00Â.†Âì”yíæ>f] ¥ã¸zÁºðÔeŸy#‡À\ñ’é¯]¸F©ÛûÔ\GQ•£ÝÖ•!ù¦º(lâéq%ñÍs&(ïQy`SeD«@µ«CüíÃHªÐ(9<“À!\Î…¯õÃ=Ož†;1ˆ @™•ÿOc!éâdr—î=÷áûqçÄû¸q„г__çîÓýü}}ÿÞò õÙ‚ìÇP]ˆŒÉ«™¤úð/·•­êS8juê³Ï\Êø¡(5ZMÐÈí?4SK>î@<É.Y¸4#@3Á0¨œ¹„ž\EúÑ .S£ %㽂¸q™‘ŽÛÙVJžZ|X]ým‘k¨ û¶f\êÑãobÀc™Éµ9ôÜjb å¸ke¤h²ÑÓó‡ÚB‰Ø ¸€'|y¦¹?Ì#‚~Áo[vÍéêq† +xz/ÁَψóéáÑò¥¼êƶjmÌÝ Ý­ZÎí)=}:Äóä‚óc݆.fõ |Z2%º4¹Âü>Üî44•*‚!’AàÕß¹ûx¥‰®JØÑíö§AAð¥š[RµÑ–cKáº*¦@°Bb•â7út\ ºSã÷ }—D —²º)g¸Ñ fëa¾žR ¦ß&ªMйøŠ7‹×–mrŽ[»l€œt“VDæºÀo5"DW&_+6tRW&±vÑ s½[0ž ÖÞSÿá°FCæÌç=HÁÏGrÌ|¼ÇÜ­‘Ñ4î¯í ŒE鎨ٱûûm‰jh¶%¸óʲù=Eû8¯cq GØíÜ\ç…tú°êŸ¢ ˆ9ý8I¾¨£ðó·Ä]û-»YÏç¯/ÉÚ~7ŸçdêÎж:ss| ¾^?ÇL¬‚ÆŠ¨à½@ñ+%v~9t¯5tE±%bÖtäoî2©:¡Á¡%šQ¿*Z=;¬¶0,gç‹lº¾ÑVÉ-Š€éIñ¦D°ýØUËMÊÔK¥L0ˆ=£je1hËJÐ"_ß~¼ôÁÝg}Ñ…§KfO3kÜ.¿gÇñ½¹­¿?6<õÌA4ønÌU€›CÙ^Žv„†Æ]_§,F«•Ïóà{¼®èDȹô@_…3îHéë2*KPüˆ‹;TÑÕîZé'ˆËy;ɵí}Ïšåí×ÔòbÛ¹ßc‡Ï ô%µŠÕŠrúðu¤è×=âo±·¼ š ¿îÃÂý©ÔQ«?)Hd™,~|Ñ· &ÆŒA—;×)$µþ)¡çà8›Pl%SõTI¹R‡Ó‰C¼†× Ò³Z§2(JžÂwyýÂÚFóvŠi "ïUw(ÚoàãÙËöÿ?÷Þ}öêö¾¼j« ¾¥îÕýÙõ‘zc+fîEÒ'ÏÌ:øÚ·uªr¥¡G&âb3é"ÈåjK sNï!뻳p‚1Yê1V{uívo`:[¦‘@³ü”ȇØmMTËR;d$À¥ô+R †B´Üa¦yÖL}¼ço¼Ô1ùX~]åG)Ù]­µ=c5¥.ùÌ=”Ÿ¿™‰óÈiõ úÊ#n8ÒŽаÚÅWÖÙÁdŸq“ƒµH°'»YköÓ¯x@€Ri¥‡Óí_Nâz™,äytãö=f»Ç¬£\Ê¢€â½?(“ôDÛ‚ P ´‰Œº¥–t×±´†ã{g»lvæIq¬‰ ¡¾¥[WòðCïŸä7_úi%[~»T)X‰ acÃ}g½¹¯¦âÌÒ”qqÒ¥ü·_ uD¢ÉI™öG)Òª)f3ÁünÖª Rn!]›3MìG=ÕYÙŸSj¶d¬ézß EÊaO› †ìáâ÷Hl¯â»^@’(¿Q°“C½hØÔ—Úõ¹àTîx¡ æ5û$ÕÕÇÅ÷j!«aÛ-x”¶À×§Ywwc¤ fBj„{ö.”Te?:dÝP@šЄzèLïJŸ¨Ÿmè—žíÞr¯Ü*Zj˜i·7òé"×2ç(Ÿúâæ®Æïõ†‘z”ñv‚Ï àã¹,9Ýî_uúƒ5Cyýšã´’$Nt¢ø¸~ä¾+s¸ü’æiæR†6·Y§o³m¿šê^ñÛùiéºI…eKEfáÞ*4SÿßDÕ²6ª´¯…ƒõ#äDJ8è2­ô&ÇÜXLJK<išÈD}娀¶Øö®¸$Ùï)„CžñÜ¡}^ÂËåËwݺ0°˜Ï /dev/null check_poolversion $pool_name $ver_new destroy_upgraded_pool $ver_old done log_pass "zpool upgrade should be able to upgrade pools to a given version" \ "using -V" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030542 xustar000000000000000030 mtime=1579730437.795408627 30 atime=1579730456.403006063 30 ctime=1579730480.631783997 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/Makefile.in0000664016037001603700000010016513612143005030551 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_upgrade DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive DATA = $(dist_pkgdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_upgrade ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = blockfiles dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_upgrade_001_pos.ksh \ zpool_upgrade_002_pos.ksh \ zpool_upgrade_003_pos.ksh \ zpool_upgrade_004_pos.ksh \ zpool_upgrade_005_neg.ksh \ zpool_upgrade_006_neg.ksh \ zpool_upgrade_007_pos.ksh \ zpool_upgrade_008_pos.ksh \ zpool_upgrade_009_neg.ksh dist_pkgdata_DATA = \ zpool_upgrade.cfg \ zpool_upgrade.kshlib all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(SCRIPTS) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade_000000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.615783485 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_004_pos.ksh0000755016037001603700000000427413607166133033351 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib # # DESCRIPTION: # zpool upgrade -a works # # STRATEGY: # 1. Create all upgradable pools for this system, then upgrade -a # 2. Verify a 0 exit status # verify_runnable "global" function cleanup { for config in $CONFIGS; do destroy_upgraded_pool $config done } log_assert "zpool upgrade -a works" log_onexit cleanup TEST_POOLS= # Now build all of our pools for config in $CONFIGS; do typeset -n pool_name=ZPOOL_VERSION_${config}_NAME TEST_POOLS="$TEST_POOLS $pool_name" create_old_pool $config check_pool $pool_name pre > /dev/null done # upgrade them all at once export __ZFS_POOL_RESTRICT="$TEST_POOLS" log_must zpool upgrade -a unset __ZFS_POOL_RESTRICT # verify their contents then destroy them for config in $CONFIGS ; do typeset -n pool_name=ZPOOL_VERSION_${config}_NAME check_pool $pool_name post > /dev/null log_must diff $TEST_BASE_DIR/pool-checksums.$pool_name.pre \ $TEST_BASE_DIR/pool-checksums.$pool_name.post rm $TEST_BASE_DIR/pool-checksums.$pool_name.pre \ $TEST_BASE_DIR/pool-checksums.$pool_name.post destroy_upgraded_pool $config done log_pass "zpool upgrade -a works" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/PaxHeaders.151519/zpool_upgrade_000000644000000000000000000000007413607166133031611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.608783259 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_upgrade/zpool_upgrade_001_pos.ksh0000755016037001603700000000430113607166133033335 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright 2015 Nexenta Systems, Inc. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_upgrade/zpool_upgrade.kshlib # # DESCRIPTION: # Executing 'zpool upgrade -v' command succeeds, prints a description of legacy # versions, and mentions feature flags. # # STRATEGY: # 1. Execute the command # 2. Verify a 0 exit status # 3. Grep for version descriptions and 'feature flags' # verify_runnable "global" function cleanup { rm -f $versions } log_assert "Executing 'zpool upgrade -v' command succeeds" log_onexit cleanup typeset versions=$TEST_BASE_DIR/zpool-versions.$$ log_must zpool upgrade -v # We also check that the usage message contains a description of legacy # versions and a note about feature flags. log_must eval "zpool upgrade -v | head -1 | grep 'feature flags'" zpool upgrade -v > $versions # # Current output for 'zpool upgrade -v' has different indent space # for single and double digit version number. For example, # 9 refquota and refreservation properties # 10 Cache devices # for version in {1..28}; do log_note "Checking for a description of pool version $version" log_must eval "awk '/^ $version / { print $1 }' $versions | grep $version" done log_pass "Executing 'zpool upgrade -v' command succeeds" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_attach0000644000000000000000000000013213612143056026243 xustar000000000000000030 mtime=1579730478.801725238 30 atime=1579730489.091055613 30 ctime=1579730478.801725238 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/0000775016037001603700000000000013612143056026324 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/PaxHeaders.151519/attach-o_ashift.k0000644000000000000000000000007313607166147031550 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.79772511 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/attach-o_ashift.ksh0000755016037001603700000000546013607166147032111 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool attach -o ashift= ...' should work with different ashift # values. # # STRATEGY: # 1. Create various pools with different ashift values. # 2. Verify 'attach -o ashift=' works only with allowed values. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 log_must rm -f $disk1 log_must rm -f $disk2 } log_assert "zpool attach -o ashift=' works with different ashift values" log_onexit cleanup disk1=$TEST_BASE_DIR/$FILEDISK0 disk2=$TEST_BASE_DIR/$FILEDISK1 log_must truncate -s $SIZE $disk1 log_must truncate -s $SIZE $disk2 typeset ashifts=("9" "10" "11" "12" "13" "14" "15" "16") for ashift in ${ashifts[@]} do for cmdval in ${ashifts[@]} do log_must zpool create -o ashift=$ashift $TESTPOOL1 $disk1 verify_ashift $disk1 $ashift if [[ $? -ne 0 ]] then log_fail "Pool was created without setting ashift " \ "value to $ashift" fi # ashift_of(attached_disk) <= ashift_of(existing_vdev) if [[ $cmdval -le $ashift ]] then log_must zpool attach -o ashift=$cmdval $TESTPOOL1 \ $disk1 $disk2 verify_ashift $disk2 $ashift if [[ $? -ne 0 ]] then log_fail "Device was attached without " \ "setting ashift value to $ashift" fi else log_mustnot zpool attach -o ashift=$cmdval $TESTPOOL1 \ $disk1 $disk2 fi # clean things for the next run log_must zpool destroy $TESTPOOL1 log_must zpool labelclear $disk1 log_must zpool labelclear $disk2 done done typeset badvals=("off" "on" "1" "8" "17" "1b" "ff" "-") for badval in ${badvals[@]} do log_must zpool create $TESTPOOL1 $disk1 log_mustnot zpool attach $TESTPOOL1 -o ashift=$badval $disk1 $disk2 log_must zpool destroy $TESTPOOL1 log_must zpool labelclear $disk1 log_mustnot zpool labelclear $disk2 done log_pass "zpool attach -o ashift=' works with different ashift values" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030366 xustar000000000000000030 atime=1579730436.360362551 30 ctime=1579730478.799725174 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/Makefile.am0000644016037001603700000000027113607166133030363 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_attach dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_attach_001_neg.ksh \ attach-o_ashift.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030201 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.790724884 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/setup.ksh0000755016037001603700000000203613607166133030202 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" verify_disk_count "$DISKS" 2 DISK=${DISKS%% *} default_mirror_setup $DISKS zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030470 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.792724948 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/cleanup.ksh0000755016037001603700000000174213607166133030474 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/PaxHeaders.151519/zpool_attach_001_0000644000000000000000000000007413607166133031463 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.795725045 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/zpool_attach_001_neg.ksh0000755016037001603700000000513513607166133032745 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool attach' command with bad options fails. # # STRATEGY: # 1. Create an array of badly formed 'zpool attach' options. # 2. Execute each element of the array. # 3. Verify an error code is returned. # verify_runnable "global" DISKLIST=$(get_disklist $TESTPOOL) set -A args "" "-f" "-?" "-z fakepool" "-f fakepool" "-ev fakepool" "fakepool" \ "$TESTPOOL" "-t $TESTPOOL/$TESTFS" "-t $TESTPOOL/$TESTFS $DISKLIST" \ "$TESTPOOL/$TESTCTR" "-t $TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTPOOL/$TESTCTR $DISKLIST" "-t $TESTPOOL/$TESTVOL" \ "$TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "$TESTPOOL/$TESTVOL $DISKLIST" \ "$DISKLIST" \ "fakepool fakedevice" "fakepool fakedevice fakenewdevice" \ "$TESTPOOL fakedevice" "$TESTPOOL $DISKLIST" \ "$TESTPOOL fakedevice fakenewdevice fakenewdevice" \ "-f $TESTPOOL" "-f $TESTPOOL/$TESTFS" "-f $TESTPOOL/$TESTFS $DISKLIST" \ "-f $TESTPOOL/$TESTCTR" "-f $TESTPOOL/$TESTCTR/$TESTFS1" \ "-f $TESTPOOL/$TESTCTR $DISKLIST" "-f $TESTPOOL/$TESTVOL" \ "-f $TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "-f $TESTPOOL/$TESTVOL $DISKLIST" \ "-f $DISKLIST" \ "-f fakepool fakedevice" "-f fakepool fakedevice fakenewdevice" \ "-f $TESTPOOL fakedevice fakenewdevice fakenewdevice" \ "-f $TESTPOOL fakedevice" "-f $TESTPOOL $DISKLIST" log_assert "Executing 'zpool attach' with bad options fails" if [[ -z $DISKLIST ]]; then log_fail "DISKLIST is empty." fi typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool attach ${args[$i]} (( i = i + 1 )) done log_pass "'zpool attach' command with bad options failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030356 xustar000000000000000030 mtime=1579730436.396363709 30 atime=1579730455.594980119 30 ctime=1579730478.801725238 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_attach/Makefile.in0000664016037001603700000005735713612143004030403 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_attach DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_attach ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_attach_001_neg.ksh \ attach-o_ashift.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_attach/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_attach/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147025704 xustar000000000000000030 atime=1579730434.578305335 30 ctime=1579730476.279644258 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/Makefile.am0000644016037001603700000000173013607166147025702 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root dist_pkgdata_DATA = \ cli_common.kshlib SUBDIRS = \ zdb \ zfs \ zfs_bookmark \ zfs_change-key \ zfs_clone \ zfs_copies \ zfs_create \ zfs_destroy \ zfs_diff \ zfs_get \ zfs_inherit \ zfs_load-key \ zfs_mount \ zfs_program \ zfs_promote \ zfs_property \ zfs_receive \ zfs_remap \ zfs_rename \ zfs_reservation \ zfs_rollback \ zfs_send \ zfs_set \ zfs_share \ zfs_snapshot \ zfs_sysfs \ zfs_unload-key \ zfs_unmount \ zfs_unshare \ zfs_upgrade \ zpool \ zpool_add \ zpool_attach \ zpool_clear \ zpool_create \ zpool_destroy \ zpool_detach \ zpool_events \ zpool_expand \ zpool_export \ zpool_get \ zpool_history \ zpool_import \ zpool_initialize \ zpool_labelclear \ zpool_offline \ zpool_online \ zpool_remove \ zpool_reopen \ zpool_replace \ zpool_resilver \ zpool_scrub \ zpool_set \ zpool_split \ zpool_status \ zpool_sync \ zpool_trim \ zpool_upgrade zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_clear0000644000000000000000000000013013612143056026063 xustar000000000000000029 mtime=1579730478.86472726 30 atime=1579730489.091055613 29 ctime=1579730478.86472726 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/0000775016037001603700000000000013612143056026146 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/zpool_clear.cfg0000644000000000000000000000007413607166133031146 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.846726682 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear.cfg0000644016037001603700000000203313607166133031141 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2015 by Delphix. All rights reserved. # export FILESIZE=$MINVDEVSIZE export BLOCKSZ=$(( 1024 * 1024 )) export NUM_WRITES=40 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/zpool_clear_002_ne0000644000000000000000000000007413607166133031453 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.855726972 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear_002_neg.ksh0000755016037001603700000000413113607166133032405 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_clear/zpool_clear.cfg # # DESCRIPTION: # A badly formed parameter passed to 'zpool clear' should # return an error. # # STRATEGY: # 1. Create an array containing bad 'zpool clear' parameters. # 2. For each element, execute the sub-command. # 3. Verify it returns an error. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && \ log_must zpool destroy -f $TESTPOOL1 [[ -e $file ]] && \ log_must rm -f $file } log_assert "Execute 'zpool clear' using invalid parameters." log_onexit cleanup # Create another pool for negative testing, which clears pool error # with vdev device not in the pool vdev devices. file=$TESTDIR/file.$$ log_must mkfile $FILESIZE $file log_must zpool create $TESTPOOL1 $file set -A args "" "-?" "--%" "-1234567" "0.0001" "0.7644" "-0.7644" \ "blah" "blah $DISK" "$TESTPOOL c0txdx" "$TESTPOOL $file" \ "$TESTPOOL c0txdx blah" "$TESTPOOL $file blah" typeset -i i=0 while (( i < ${#args[*]} )); do log_mustnot zpool clear ${args[i]} ((i = i + 1)) done log_pass "Invalid parameters to 'zpool clear' fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/zpool_clear_readon0000644000000000000000000000007413607166133031740 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.860727132 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear_readonly.ksh0000755016037001603700000000422313607166133033072 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_clear/zpool_clear.cfg # # DESCRIPTION: # Verify 'zpool clear' cannot be used on readonly pools. # # STRATEGY: # 1. Create a pool. # 2. Export the pool and import it readonly. # 3. Verify 'zpool clear' on the pool (and each device) returns an error. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL1 rm -f $TESTDIR/file.* } log_assert "Verify 'zpool clear' cannot be used on readonly pools." log_onexit cleanup # 1. Create a pool. log_must truncate -s $FILESIZE $TESTDIR/file.{1,2,3} log_must zpool create $TESTPOOL1 raidz $TESTDIR/file.* # 2. Export the pool and import it readonly. log_must zpool export $TESTPOOL1 log_must zpool import -d $TESTDIR -o readonly=on $TESTPOOL1 if [[ "$(get_pool_prop readonly $TESTPOOL1)" != 'on' ]]; then log_fail "Pool $TESTPOOL1 was not imported readonly." fi # 3. Verify 'zpool clear' on the pool (and each device) returns an error. log_mustnot zpool clear $TESTPOOL1 for i in {1..3}; do # Device must be online log_must check_state $TESTPOOL1 $TESTDIR/file.$i 'online' # Device cannot be cleared if the pool was imported readonly log_mustnot zpool clear $TESTPOOL1 $TESTDIR/file.$i done log_pass "'zpool clear' fails on readonly pools as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030210 xustar000000000000000030 atime=1579730436.412364221 30 ctime=1579730478.862727196 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/Makefile.am0000644016037001603700000000043213607166133030204 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_clear dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_clear_001_pos.ksh \ zpool_clear_002_neg.ksh \ zpool_clear_003_neg.ksh \ zpool_clear_readonly.ksh dist_pkgdata_DATA = \ zpool_clear.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030023 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.848726746 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/setup.ksh0000755016037001603700000000173713607166133030033 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030312 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.851726844 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/cleanup.ksh0000755016037001603700000000171013607166133030311 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/zpool_clear_001_po0000644000000000000000000000007413607166147031473 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.853726908 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear_001_pos.ksh0000755016037001603700000001263713607166147032453 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_clear/zpool_clear.cfg # # DESCRIPTION: # Verify 'zpool clear' can clear pool errors. # # STRATEGY: # 1. Create various configuration pools # 2. Make errors to pool # 3. Use zpool clear to clear errors # 4. Verify the errors has been cleared. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && \ log_must zpool destroy -f $TESTPOOL1 for file in `ls $TEST_BASE_DIR/file.*`; do log_must rm -f $file done } log_assert "Verify 'zpool clear' can clear errors of a storage pool." log_onexit cleanup #make raw files to create various configuration pools typeset -i i=0 while (( i < 3 )); do log_must truncate -s $FILESIZE $TEST_BASE_DIR/file.$i (( i = i + 1 )) done fbase=$TEST_BASE_DIR/file set -A poolconf "mirror $fbase.0 $fbase.1 $fbase.2" \ "raidz1 $fbase.0 $fbase.1 $fbase.2" \ "raidz2 $fbase.0 $fbase.1 $fbase.2" function check_err # [] { typeset pool=$1 shift if (( $# > 0 )); then typeset checkvdev=$1 else typeset checkvdev="" fi typeset -i errnum=0 typeset c_read=0 typeset c_write=0 typeset c_cksum=0 typeset tmpfile=$TEST_BASE_DIR/file.$$ typeset healthstr="pool '$pool' is healthy" typeset output="`zpool status -x $pool`" [[ "$output" == "$healthstr" ]] && return $errnum zpool status -x $pool | grep -v "^$" | grep -v "pool:" \ | grep -v "state:" | grep -v "config:" \ | grep -v "errors:" > $tmpfile typeset line typeset -i fetchbegin=1 while read line; do if (( $fetchbegin != 0 )); then echo $line | grep "NAME" >/dev/null 2>&1 (( $? == 0 )) && (( fetchbegin = 0 )) continue fi if [[ -n $checkvdev ]]; then echo $line | grep $checkvdev >/dev/null 2>&1 (( $? != 0 )) && continue c_read=`echo $line | awk '{print $3}'` c_write=`echo $line | awk '{print $4}'` c_cksum=`echo $line | awk '{print $5}'` if [ $c_read != 0 ] || [ $c_write != 0 ] || \ [ $c_cksum != 0 ] then (( errnum = errnum + 1 )) fi break fi c_read=`echo $line | awk '{print $3}'` c_write=`echo $line | awk '{print $4}'` c_cksum=`echo $line | awk '{print $5}'` if [ $c_read != 0 ] || [ $c_write != 0 ] || \ [ $c_cksum != 0 ] then (( errnum = errnum + 1 )) fi done <$tmpfile return $errnum } function do_testing # { typeset FS=$TESTPOOL1/fs typeset file=/$FS/f typeset type=$1 shift typeset vdev="$@" log_must zpool create -f $TESTPOOL1 $vdev log_must zfs create $FS # # Partially fill up the zfs filesystem in order to make data block # errors. It's not necessary to fill the entire filesystem. # avail=$(get_prop available $FS) fill_mb=$(((avail / 1024 / 1024) * 25 / 100)) log_must dd if=/dev/urandom of=$file.$i bs=$BLOCKSZ count=$fill_mb # # Make errors to the testing pool by overwrite the vdev device with # dd command. We do not want to have a full overwrite. That # may cause the system panic. So, we should skip the vdev label space. # (( i = $RANDOM % 3 )) typeset -i wcount=0 typeset -i size case $FILESIZE in *g|*G) (( size = ${FILESIZE%%[g|G]} )) (( wcount = size*1024*1024 - 512 )) ;; *m|*M) (( size = ${FILESIZE%%[m|M]} )) (( wcount = size*1024 - 512 )) ;; *k|*K) (( size = ${FILESIZE%%[k|K]} )) (( wcount = size - 512 )) ;; *) (( wcount = FILESIZE/1024 - 512 )) ;; esac dd if=/dev/zero of=$fbase.$i seek=512 bs=1024 count=$wcount conv=notrunc \ > /dev/null 2>&1 log_must sync log_must zpool scrub $TESTPOOL1 # Wait for the completion of scrub operation while is_pool_scrubbing $TESTPOOL1; do sleep 1 done check_err $TESTPOOL1 && \ log_fail "No error generated." if [[ $type == "device" ]]; then log_must zpool clear $TESTPOOL1 $fbase.$i ! check_err $TESTPOOL1 $fbase.$i && \ log_fail "'zpool clear' fails to clear error for $fbase.$i device." fi if [[ $type == "pool" ]]; then log_must zpool clear $TESTPOOL1 ! check_err $TESTPOOL1 && \ log_fail "'zpool clear' fails to clear error for pool $TESTPOOL1." fi log_must zpool destroy $TESTPOOL1 } log_note "'zpool clear' clears leaf-device error." for devconf in "${poolconf[@]}"; do do_testing "device" $devconf done log_note "'zpool clear' clears top-level pool error." for devconf in "${poolconf[@]}"; do do_testing "pool" $devconf done log_pass "'zpool clear' clears pool errors as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143004030177 xustar000000000000000030 mtime=1579730436.449365411 30 atime=1579730455.625981115 29 ctime=1579730478.86472726 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/Makefile.in0000664016037001603700000006153013612143004030211 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_clear DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_clear ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_clear_001_pos.ksh \ zpool_clear_002_neg.ksh \ zpool_clear_003_neg.ksh \ zpool_clear_readonly.ksh dist_pkgdata_DATA = \ zpool_clear.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_clear/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_clear/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/PaxHeaders.151519/zpool_clear_003_ne0000644000000000000000000000007413607166133031454 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.857727036 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_clear/zpool_clear_003_neg.ksh0000755016037001603700000000363513607166133032416 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_clear/zpool_clear.cfg # # DESCRIPTION: # Verify 'zpool clear' cannot used to spare device. # # STRATEGY: # 1. Create a spare pool. # 2. Try to clear the spare device # 3. Verify it returns an error. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && \ log_must zpool destroy -f $TESTPOOL1 for file in `ls $TESTDIR/file.*`; do log_must rm -f $file done } log_assert "Verify 'zpool clear' cannot clear error for spare device." log_onexit cleanup #make raw files to create a spare pool typeset -i i=0 while (( i < 5 )); do log_must mkfile $FILESIZE $TESTDIR/file.$i (( i = i + 1 )) done log_must zpool create $TESTPOOL1 raidz $TESTDIR/file.1 $TESTDIR/file.2 \ $TESTDIR/file.3 spare $TESTDIR/file.4 log_mustnot zpool clear $TESTPOOL1 $TESTDIR/file.4 log_pass "'zpool clear' works on spare device failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_mount0000644000000000000000000000013213612143055025577 xustar000000000000000030 mtime=1579730477.366679161 30 atime=1579730489.091055613 30 ctime=1579730477.366679161 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/0000775016037001603700000000000013612143055025660 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount.cfg0000644000000000000000000000007413607166133030374 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.312677427 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount.cfg0000644016037001603700000000230613607166133030372 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export mountcmd=mount export mountforce="$mountcmd -f" export mountall="$mountcmd -a" export unmountcmd=unmount export unmountforce="$unmountcmd -f" export unmountall="$unmountcmd -a" export NONEXISTFSNAME="nonexistfs50charslong_0123456789012345678901234567" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_006_pos.ks0000644000000000000000000000007413607166133031520 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.332678069 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_006_pos.ksh0000755016037001603700000001033213607166133031667 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # Copyright (c) 2018, Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # Invoke "zfs mount " with a filesystem # mountpoint that is identical to an existing one. # It will fail with a return code of 1. For Linux, # place a file in the directory to ensure the failure. # Also for Linux, test overlay=off (default) in which case # the mount will fail, and overlay=on, where the mount # will succeed. # # STRATEGY: # 1. Prepare an existing mounted filesystem. # 2. Setup a new filesystem and make sure that it is unmounted. # 3. For Linux, place a file in the mount point folder. # 4. Mount the new filesystem using the various combinations # - zfs set mountpoint= # - zfs set mountpoint= # 5. Verify that mount failed with return code of 1. # 6. For Linux, also set overlay=on and verify the mount is # allowed. # verify_runnable "both" function cleanup { log_must force_unmount $TESTPOOL/$TESTFS datasetexists $TESTPOOL/$TESTFS1 && \ cleanup_filesystem $TESTPOOL $TESTFS1 [[ -d $TESTDIR ]] && \ log_must rm -rf $TESTDIR log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_must force_unmount $TESTPOOL/$TESTFS return 0 } typeset -i ret=0 log_assert "Verify that 'zfs $mountcmd '" \ "where the mountpoint is identical or on top of an existing one" \ "will fail with return code 1." log_onexit cleanup unmounted $TESTPOOL/$TESTFS || \ log_must force_unmount $TESTPOOL/$TESTFS [[ -d $TESTDIR ]] && \ log_must rm -rf $TESTDIR typeset -i MAXDEPTH=3 typeset -i depth=0 typeset mtpt=$TESTDIR while (( depth < MAXDEPTH )); do mtpt=$mtpt/$depth (( depth = depth + 1)) done log_must zfs set mountpoint=$mtpt $TESTPOOL/$TESTFS log_must zfs $mountcmd $TESTPOOL/$TESTFS if is_linux; then log_must zfs set overlay=off $TESTPOOL/$TESTFS touch $mtpt/file.1 log_must ls -l $mtpt | grep file fi mounted $TESTPOOL/$TESTFS || \ log_unresolved "Filesystem $TESTPOOL/$TESTFS is unmounted" log_must zfs create $TESTPOOL/$TESTFS1 unmounted $TESTPOOL/$TESTFS1 || \ log_must force_unmount $TESTPOOL/$TESTFS1 while [[ $depth -gt 0 ]] ; do (( depth == MAXDEPTH )) && \ log_note "Verify that 'zfs $mountcmd '" \ "with a mountpoint that is identical to an existing one" \ "will fail with return code 1." log_must zfs set mountpoint=$mtpt $TESTPOOL/$TESTFS1 log_note "zfs $mountcmd $TESTPOOL/$TESTFS1" log_mustnot zfs $mountcmd $TESTPOOL/$TESTFS1 # For Linux, test the overlay=on feature which allows # mounting of non-empty directory. if is_linux; then log_must zfs set overlay=on $TESTPOOL/$TESTFS1 log_must zfs $mountcmd $TESTPOOL/$TESTFS1 log_must force_unmount $TESTPOOL/$TESTFS1 log_must zfs set overlay=off $TESTPOOL/$TESTFS1 fi unmounted $TESTPOOL/$TESTFS1 || \ log_fail "Filesystem $TESTPOOL/$TESTFS1 is mounted." mtpt=${mtpt%/*} (( depth == MAXDEPTH )) && \ log_note "Verify that 'zfs $mountcmd '" \ "with a mountpoint on top of an existing one" \ "will fail with return code 1." (( depth = depth - 1 )) done log_pass "'zfs $mountcmd '" \ "with a mountpoint that is identical or on top of an existing one" \ "will fail with return code 1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_004_pos.ks0000644000000000000000000000007413607166133031516 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.328677941 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_004_pos.ksh0000755016037001603700000000443013607166133031667 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # Invoke "zfs mount " with a filesystem # which has been already mounted, # it will fail with a return code of 1 # # STRATEGY: # 1. Make sure that the ZFS filesystem is unmounted. # 2. Invoke 'zfs mount '. # 3. Verify that the filesystem is mounted. # 4. Invoke 'zfs mount ' the second times. # 5. Verify the last mount operation failed with return code of 1. # verify_runnable "both" function cleanup { log_must force_unmount $TESTPOOL/$TESTFS return 0 } typeset -i ret=0 log_assert "Verify that 'zfs $mountcmd ' " \ "with a mounted filesystem will fail with return code 1." log_onexit cleanup unmounted $TESTPOOL/$TESTFS || \ log_must cleanup log_must zfs $mountcmd $TESTPOOL/$TESTFS mounted $TESTPOOL/$TESTFS || \ log_unresolved "Filesystem $TESTPOOL/$TESTFS is unmounted" zfs $mountcmd $TESTPOOL/$TESTFS ret=$? (( ret == 1 )) || \ log_fail "'zfs $mountcmd $TESTPOOL/$TESTFS' " \ "unexpected return code of $ret." log_note "Make sure the filesystem $TESTPOOL/$TESTFS is mounted" mounted $TESTPOOL/$TESTFS || \ log_fail Filesystem $TESTPOOL/$TESTFS is unmounted log_pass "'zfs $mountcmd ' with a mounted filesystem " \ "will fail with return code 1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_remount.ks0000644000000000000000000000007413612141513032012 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.357678872 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_remount.ksh0000755016037001603700000001135513612141513032167 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # Verify remount functionality, especially on readonly objects. # # STRATEGY: # 1. Prepare a filesystem and a snapshot # 2. Verify we can (re)mount the dataset readonly/read-write # 3. Verify we can mount the snapshot and it's mounted readonly # 4. Verify we can't remount it read-write # 5. Verify we can remount a dataset readonly and unmount it with # encryption=on and sync=disabled (issue #7753) # 6. Re-import the pool readonly # 7. Verify we can't remount its filesystem read-write # verify_runnable "both" function cleanup { log_must_busy zpool export $TESTPOOL log_must zpool import $TESTPOOL snapexists $TESTSNAP && log_must zfs destroy $TESTSNAP [[ -d $MNTPSNAP ]] && log_must rmdir $MNTPSNAP return 0 } # # Verify the $filesystem is mounted readonly # This is preferred over "log_mustnot touch $fs" because we actually want to # verify the error returned is EROFS # function readonlyfs # filesystem { typeset filesystem="$1" file_write -o create -f $filesystem/file.dat ret=$? if [[ $ret != 30 ]]; then log_fail "Writing to $filesystem did not return EROFS ($ret)." fi } # # Verify $dataset is mounted with $option # function checkmount # dataset option { typeset dataset="$1" typeset option="$2" options="$(awk -v ds="$dataset" '$1 == ds { print $4 }' /proc/mounts)" if [[ "$options" == '' ]]; then log_fail "Dataset $dataset is not mounted" elif [[ ! -z "${options##*$option*}" ]]; then log_fail "Dataset $dataset is not mounted with expected "\ "option $option ($options)" else log_note "Dataset $dataset is mounted with option $option" fi } log_assert "Verify remount functionality on both filesystem and snapshots" log_onexit cleanup # 1. Prepare a filesystem and a snapshot TESTFS=$TESTPOOL/$TESTFS TESTSNAP="$TESTFS@snap" datasetexists $TESTFS || log_must zfs create $TESTFS snapexists $TESTSNAP || log_must zfs snapshot $TESTSNAP log_must zfs set readonly=off $TESTFS MNTPFS="$(get_prop mountpoint $TESTFS)" MNTPSNAP="$TESTDIR/zfs_snap_mount" log_must mkdir -p $MNTPSNAP # 2. Verify we can (re)mount the dataset readonly/read-write log_must touch $MNTPFS/file.dat checkmount $TESTFS 'rw' log_must mount -o remount,ro $TESTFS $MNTPFS readonlyfs $MNTPFS checkmount $TESTFS 'ro' log_must mount -o remount,rw $TESTFS $MNTPFS log_must touch $MNTPFS/file.dat checkmount $TESTFS 'rw' # 3. Verify we can (re)mount the snapshot readonly log_must mount -t zfs $TESTSNAP $MNTPSNAP readonlyfs $MNTPSNAP checkmount $TESTSNAP 'ro' log_must mount -o remount,ro $TESTSNAP $MNTPSNAP readonlyfs $MNTPSNAP checkmount $TESTSNAP 'ro' log_must umount $MNTPSNAP # 4. Verify we can't remount a snapshot read-write # The "mount -o rw" command will succeed but the snapshot is mounted readonly. # The "mount -o remount,rw" command must fail with an explicit error. log_must mount -t zfs -o rw $TESTSNAP $MNTPSNAP readonlyfs $MNTPSNAP checkmount $TESTSNAP 'ro' log_mustnot mount -o remount,rw $TESTSNAP $MNTPSNAP readonlyfs $MNTPSNAP checkmount $TESTSNAP 'ro' log_must umount $MNTPSNAP # 5. Verify we can remount a dataset readonly and unmount it with # encryption=on and sync=disabled (issue #7753) log_must eval "echo 'password' | zfs create -o sync=disabled \ -o encryption=on -o keyformat=passphrase $TESTFS/crypt" CRYPT_MNTPFS="$(get_prop mountpoint $TESTFS/crypt)" log_must touch $CRYPT_MNTPFS/file.dat log_must mount -o remount,ro $TESTFS/crypt $CRYPT_MNTPFS log_must umount -f $CRYPT_MNTPFS zpool sync $TESTPOOL # 6. Re-import the pool readonly log_must zpool export $TESTPOOL log_must zpool import -o readonly=on $TESTPOOL # 7. Verify we can't remount its filesystem read-write readonlyfs $MNTPFS checkmount $TESTFS 'ro' log_mustnot mount -o remount,rw $MNTPFS readonlyfs $MNTPFS checkmount $TESTFS 'ro' log_pass "Both filesystem and snapshots can be remounted correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_012_neg.ks0000644000000000000000000000007413607166147031472 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.346678519 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_012_neg.ksh0000755016037001603700000000242013607166147031640 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that zfs mount should fail with a non-empty directory # # STRATEGY: # 1. Unmount the dataset # 2. Create a new empty directory # 3. Set the dataset's mountpoint # 4. Attempt to mount the dataset # 5. Verify the mount succeeds # 6. Unmount the dataset # 7. Create a file in the directory created in step 2 # 8. Attempt to mount the dataset # 9. Verify the mount fails # verify_runnable "both" log_assert "zfs mount fails with non-empty directory" fs=$TESTPOOL/$TESTFS log_must zfs umount $fs log_must mkdir -p $TESTDIR log_must zfs set mountpoint=$TESTDIR $fs log_must zfs mount $fs log_must zfs umount $fs log_must touch $TESTDIR/testfile.$$ log_mustnot zfs mount $fs log_must rm -rf $TESTDIR log_pass "zfs mount fails non-empty directory as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_all_001_po0000644000000000000000000000007413607166133031544 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.348678583 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_all_001_pos.ksh0000755016037001603700000001020413607166133032510 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # DESCRIPTION: # Verify that 'zfs mount -a' succeeds as root. # # STRATEGY: # 1. Create a group of pools with specified vdev. # 2. Create zfs filesystems within the given pools. # 3. Unmount all the filesystems. # 4. Verify that 'zfs mount -a' command succeed, # and all available ZFS filesystems are mounted. # 5. Verify that 'zfs mount' is identical with 'df -F zfs' # verify_runnable "both" set -A fs "$TESTFS" "$TESTFS1" set -A ctr "" "$TESTCTR" "$TESTCTR/$TESTCTR1" "$TESTCTR1" set -A vol "$TESTVOL" "$TESTVOL1" function setup_all { typeset -i i=0 typeset -i j=0 typeset path while (( i < ${#ctr[*]} )); do path=${TEST_BASE_DIR%%/}/testroot$$/$TESTPOOL if [[ -n ${ctr[i]} ]]; then path=$path/${ctr[i]} setup_filesystem "$DISKS" "$TESTPOOL" \ "${ctr[i]}" "$path" \ "ctr" fi if is_global_zone ; then j=0 while (( j < ${#vol[*]} )); do setup_filesystem "$DISKS" "$TESTPOOL" \ "${ctr[i]}/${vol[j]}" \ "$path/${vol[j]}" \ "vol" ((j = j + 1)) done fi j=0 while (( j < ${#fs[*]} )); do setup_filesystem "$DISKS" "$TESTPOOL" \ "${ctr[i]}/${fs[j]}" \ "$path/${fs[j]}" ((j = j + 1)) done ((i = i + 1)) done return 0 } function cleanup_all { typeset -i i=0 typeset -i j=0 typeset path ((i = ${#ctr[*]} - 1)) while (( i >= 0 )); do if is_global_zone ; then j=0 while (( j < ${#vol[*]} )); do cleanup_filesystem "$TESTPOOL" \ "${ctr[i]}/${vol[j]}" ((j = j + 1)) done fi j=0 while (( j < ${#fs[*]} )); do cleanup_filesystem "$TESTPOOL" \ "${ctr[i]}/${fs[j]}" ((j = j + 1)) done [[ -n ${ctr[i]} ]] && \ cleanup_filesystem "$TESTPOOL" "${ctr[i]}" ((i = i - 1)) done [[ -d ${TEST_BASE_DIR%%/}/testroot$$ ]] && \ rm -rf ${TEST_BASE_DIR%%/}/testroot$$ } # # This function takes a single true/false argument. If true it will verify that # all file systems are mounted. If false it will verify that they are not # mounted. # function verify_all { typeset -i i=0 typeset -i j=0 typeset path typeset logfunc if $1; then logfunc=log_must else logfunc=log_mustnot fi while (( i < ${#ctr[*]} )); do path=$TESTPOOL [[ -n ${ctr[i]} ]] && \ path=$path/${ctr[i]} if is_global_zone ; then j=0 while (( j < ${#vol[*]} )); do log_mustnot mounted "$path/${vol[j]}" ((j = j + 1)) done fi j=0 while (( j < ${#fs[*]} )); do $logfunc mounted "$path/${fs[j]}" ((j = j + 1)) done $logfunc mounted "$path" ((i = i + 1)) done return 0 } log_assert "Verify that 'zfs $mountall' succeeds as root, " \ "and all available ZFS filesystems are mounted." log_onexit cleanup_all log_must setup_all export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $unmountall unset __ZFS_POOL_RESTRICT verify_all false export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $mountall unset __ZFS_POOL_RESTRICT verify_all true log_note "Verify that 'zfs $mountcmd' will display " \ "all ZFS filesystems currently mounted." verify_mount_display log_pass "'zfs $mountall' succeeds as root, " \ "and all available ZFS filesystems are mounted." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_001_pos.ks0000644000000000000000000000007413607166133031513 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.321677717 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_001_pos.ksh0000755016037001603700000000347213607166133031671 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # Invoke "zfs mount " with a regular name of filesystem, # will mount that filesystem successfully. # # STRATEGY: # 1. Make sure that the ZFS filesystem is unmounted. # 2. Invoke 'zfs mount '. # 3. Verify that the filesystem is mounted. # verify_runnable "both" function cleanup { log_must force_unmount $TESTPOOL/$TESTFS return 0 } log_assert "Verify that 'zfs $mountcmd ' succeeds as root." log_onexit cleanup unmounted $TESTPOOL/$TESTFS || \ log_must cleanup log_must zfs $mountcmd $TESTPOOL/$TESTFS log_note "Make sure the filesystem $TESTPOOL/$TESTFS is mounted" mounted $TESTPOOL/$TESTFS || \ log_fail Filesystem $TESTPOOL/$TESTFS is unmounted log_pass "'zfs $mountcmd ' succeeds as root." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_encrypted.0000644000000000000000000000007413607166133031771 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.355678807 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_encrypted.ksh0000755016037001603700000000362713607166133032507 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017, Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs mount -l' should accept a valid key as it mounts the filesystem. # # STRATEGY: # 1. Create an encrypted dataset # 2. Unmount and unload the dataset's key # 3. Verify the key is unloaded # 4. Attempt to mount all datasets in the pool # 5. Verify that no error code is produced # 6. Verify that the encrypted dataset is not mounted # 7. Attempt to load the key while mounting the dataset # 8. Verify the key is loaded # 9. Verify the dataset is mounted # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs mount -l' should properly load a valid wrapping key" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must key_unavailable $TESTPOOL/$TESTFS1 log_must zfs mount -a unmounted $TESTPOOL/$TESTFS1 || \ log_fail "Filesystem $TESTPOOL/$TESTFS1 is mounted" log_must eval "echo $PASSPHRASE | zfs mount -l $TESTPOOL/$TESTFS1" log_must key_available $TESTPOOL/$TESTFS1 mounted $TESTPOOL/$TESTFS1 || \ log_fail "Filesystem $TESTPOOL/$TESTFS1 is unmounted" log_pass "'zfs mount -l' properly loads a valid wrapping key" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_test_race.0000644000000000000000000000007413612141517031740 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.359678937 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_test_race.ksh0000755016037001603700000000754013612141517032454 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2019 by Tomohiro Kusumi. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.cfg # # DESCRIPTION: # Verify parallel mount ordering is consistent. # # There was a bug in initial thread dispatching algorithm which put threads # under race condition which resulted in undefined mount order. The purpose # of this test is to verify `zfs unmount -a` succeeds (not `zfs mount -a` # succeeds, it always does) after `zfs mount -a`, which could fail if threads # race. See github.com/zfsonlinux/zfs/issues/{8450,8833,8878} for details. # # STRATEGY: # 1. Create pools and filesystems. # 2. Set same mount point for >1 datasets. # 3. Unmount all datasets. # 4. Mount all datasets. # 5. Unmount all datasets (verify this succeeds). # verify_runnable "both" TMPDIR=${TMPDIR:-$TEST_BASE_DIR} MNTPT=$TMPDIR/zfs_mount_test_race_mntpt DISK1="$TMPDIR/zfs_mount_test_race_disk1" DISK2="$TMPDIR/zfs_mount_test_race_disk2" TESTPOOL1=zfs_mount_test_race_tp1 TESTPOOL2=zfs_mount_test_race_tp2 export __ZFS_POOL_RESTRICT="$TESTPOOL1 $TESTPOOL2" log_must zfs $unmountall unset __ZFS_POOL_RESTRICT function cleanup { zpool destroy $TESTPOOL1 zpool destroy $TESTPOOL2 rm -rf $MNTPT rm -rf /$TESTPOOL1 rm -rf /$TESTPOOL2 rm -f $DISK1 rm -f $DISK2 export __ZFS_POOL_RESTRICT="$TESTPOOL1 $TESTPOOL2" log_must zfs $mountall unset __ZFS_POOL_RESTRICT } log_onexit cleanup log_note "Verify parallel mount ordering is consistent" log_must truncate -s $MINVDEVSIZE $DISK1 log_must truncate -s $MINVDEVSIZE $DISK2 log_must zpool create -f $TESTPOOL1 $DISK1 log_must zpool create -f $TESTPOOL2 $DISK2 log_must zfs create $TESTPOOL1/$TESTFS1 log_must zfs create $TESTPOOL2/$TESTFS2 log_must zfs set mountpoint=none $TESTPOOL1 log_must zfs set mountpoint=$MNTPT $TESTPOOL1/$TESTFS1 # Note that unmount can fail (due to race condition on `zfs mount -a`) with or # without `canmount=off`. The race has nothing to do with canmount property, # but turn it off for convenience of mount layout used in this test case. log_must zfs set canmount=off $TESTPOOL2 log_must zfs set mountpoint=$MNTPT $TESTPOOL2 # At this point, layout of datasets in two pools will look like below. # Previously, on next `zfs mount -a`, pthreads assigned to TESTFS1 and TESTFS2 # could race, and TESTFS2 usually (actually always) won in ZoL. Note that the # problem is how two or more threads could initially be assigned to the same # top level directory, not this specific layout. This layout is just an example # that can reproduce race, and is also the layout reported in #8833. # # NAME MOUNTED MOUNTPOINT # ---------------------------------------------- # /$TESTPOOL1 no none # /$TESTPOOL1/$TESTFS1 yes $MNTPT # /$TESTPOOL2 no $MNTPT # /$TESTPOOL2/$TESTFS2 yes $MNTPT/$TESTFS2 # Apparently two datasets must be mounted. log_must ismounted $TESTPOOL1/$TESTFS1 log_must ismounted $TESTPOOL2/$TESTFS2 # This unmount always succeeds, because potential race hasn't happened yet. log_must zfs unmount -a # This mount always succeeds, whether threads are under race condition or not. log_must zfs mount -a # Verify datasets are mounted (TESTFS2 fails if the race broke mount order). log_must ismounted $TESTPOOL1/$TESTFS1 log_must ismounted $TESTPOOL2/$TESTFS2 # Verify unmount succeeds (fails if the race broke mount order). log_must zfs unmount -a log_pass "Verify parallel mount ordering is consistent passed" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141517027716 xustar000000000000000030 atime=1579730435.292328261 30 ctime=1579730477.364679097 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile.am0000644016037001603700000000125013612141517027711 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_mount dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_mount_001_pos.ksh \ zfs_mount_002_pos.ksh \ zfs_mount_003_pos.ksh \ zfs_mount_004_pos.ksh \ zfs_mount_005_pos.ksh \ zfs_mount_006_pos.ksh \ zfs_mount_007_pos.ksh \ zfs_mount_008_pos.ksh \ zfs_mount_009_neg.ksh \ zfs_mount_010_neg.ksh \ zfs_mount_011_neg.ksh \ zfs_mount_012_neg.ksh \ zfs_mount_all_001_pos.ksh \ zfs_mount_all_fail.ksh \ zfs_mount_all_mountpoints.ksh \ zfs_mount_encrypted.ksh \ zfs_mount_remount.ksh \ zfs_mount_test_race.ksh \ zfs_multi_mount.ksh dist_pkgdata_DATA = \ zfs_mount.cfg \ zfs_mount.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027536 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.317677587 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/setup.ksh0000755016037001603700000000173713607166133027546 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030025 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.319677651 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/cleanup.ksh0000755016037001603700000000171013607166133030024 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_009_neg.ks0000644000000000000000000000007413607166133031473 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.339678294 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_009_neg.ksh0000755016037001603700000000465413607166133031654 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # Try each 'zfs mount' with inapplicable scenarios to make sure # it returns an error. include: # * '-a', but also with a specific filesystem. # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute the sub-command # 3. Verify an error is returned. # verify_runnable "both" multifs="$TESTFS $TESTFS1" datasets="" for fs in $multifs ; do datasets="$datasets $TESTPOOL/$fs" done set -A args "$mountall $TESTPOOL/$TESTFS" function setup_all { typeset fs for fs in $multifs ; do setup_filesystem "$DISKS" "$TESTPOOL" \ "$fs" \ "${TEST_BASE_DIR%%/}/testroot$$/$TESTPOOL/$fs" done return 0 } function cleanup_all { typeset fs cleanup_filesystem "$TESTPOOL" "$TESTFS1" log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS [[ -d ${TEST_BASE_DIR%%/}/testroot$$ ]] && \ rm -rf ${TEST_BASE_DIR%%/}/testroot$$ return 0 } function verify_all { typeset fs for fs in $multifs ; do log_must unmounted $TESTPOOL/$fs done return 0 } log_assert "Badly-formed 'zfs $mountcmd' with inapplicable scenarios " \ "should return an error." log_onexit cleanup_all log_must setup_all log_must zfs $unmountall typeset -i i=0 while (( i < ${#args[*]} )); do log_mustnot zfs ${args[i]} ((i = i + 1)) done log_must verify_all log_pass "Badly formed 'zfs $mountcmd' with inapplicable scenarios " \ "fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_005_pos.ks0000644000000000000000000000007413607166147031524 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.330678005 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_005_pos.ksh0000755016037001603700000000542213607166147031677 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # Invoke "zfs mount " with a filesystem but its mountpoint # is currently in use. Under Linux this should succeed and is the # expected behavior, it will fail with a return code of 1 and issue # an error message on other platforms. # # STRATEGY: # 1. Make sure that the ZFS filesystem is unmounted. # 2. Apply 'zfs set mountpoint=path '. # 3. Change directory to that given mountpoint. # 3. Invoke 'zfs mount '. # 4. Verify that mount succeeds on Linux and fails for other platforms. # verify_runnable "both" function cleanup { log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_must force_unmount $TESTPOOL/$TESTFS return 0 } typeset -i ret=0 log_assert "Verify that 'zfs $mountcmd' with a filesystem " \ "whose mountpoint is currently in use will fail with return code 1." log_onexit cleanup unmounted $TESTPOOL/$TESTFS || \ log_must cleanup [[ -d $TESTDIR ]] || \ log_must mkdir -p $TESTDIR cd $TESTDIR || \ log_unresolved "Unable change directory to $TESTDIR" zfs $mountcmd $TESTPOOL/$TESTFS ret=$? if is_linux; then (( ret == 0 )) || \ log_fail "'zfs $mountcmd $TESTPOOL/$TESTFS' " \ "unexpected return code of $ret." else (( ret == 1 )) || \ log_fail "'zfs $mountcmd $TESTPOOL/$TESTFS' " \ "unexpected return code of $ret." fi log_note "Make sure the filesystem $TESTPOOL/$TESTFS is unmounted" if is_linux; then mounted $TESTPOOL/$TESTFS || \ log_fail Filesystem $TESTPOOL/$TESTFS is unmounted else unmounted $TESTPOOL/$TESTFS || \ log_fail Filesystem $TESTPOOL/$TESTFS is mounted fi log_pass "'zfs $mountcmd' with a filesystem " \ "whose mountpoint is currently in use failed with return code 1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_all_mountp0000644000000000000000000000007413607166133032070 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.353678743 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_all_mountpoints.ksh0000755016037001603700000000747513607166133033746 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # DESCRIPTION: # Verify that 'zfs mount -a' succeeds given a set of filesystems # whose mountpoints have a parent/child relationship which is # counter to the filesystem parent/child relationship. # # STRATEGY: # 1. Create zfs filesystems within the given pool. # 2. Unmount all the filesystems. # 3. Verify that 'zfs mount -a' command succeed, # and all available ZFS filesystems are mounted. # 4. Verify that 'zfs mount' is identical with 'df -F zfs' # verify_runnable "both" typeset -a filesystems function setup_all { typeset path=${TEST_BASE_DIR%%/}/testroot$$/$TESTPOOL typeset fscount=10 # # Generate an array of filesystem names that represent a deep # hierarchy as such: # # 0 # 0/1 # 0/1/2 # 0/1/2/3 # 0/1/2/3/4 # ... # fs=0 for ((i=0; i<$fscount; i++)); do if [[ $i -gt 0 ]]; then fs=$fs/$i fi filesystems+=($fs) done # Create all of the above filesystems for ((i=0; i<$fscount; i++)); do fs=${filesystems[$i]} setup_filesystem "$DISKS" "$TESTPOOL" "$fs" "$path/$i" ctr done zfs list -r $TESTPOOL # # Unmount all of the above so that we can setup our convoluted # mount paths. # export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $unmountall unset __ZFS_POOL_RESTRICT # # Configure the mount paths so that each mountpoint is contained # in a child filesystem. We should end up with something like the # following structure (modulo the number of filesystems): # # NAME MOUNTPOINT # testpool /testpool # testpool/0 /testroot25416/testpool/0/1/2/3/4/5/6 # testpool/0/1 /testroot25416/testpool/0/1/2/3/4/5 # testpool/0/1/2 /testroot25416/testpool/0/1/2/3/4 # testpool/0/1/2/3 /testroot25416/testpool/0/1/2/3 # testpool/0/1/2/3/4 /testroot25416/testpool/0/1/2 # testpool/0/1/2/3/4/5 /testroot25416/testpool/0/1 # testpool/0/1/2/3/4/5/6 /testroot25416/testpool/0 # for ((i=0; i<$fscount; i++)); do fs=$TESTPOOL/${filesystems[$(($fscount - $i - 1))]} mnt=$path/${filesystems[$i]} zfs set mountpoint=$mnt $fs done zfs list -r $TESTPOOL return 0 } function cleanup_all { export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $unmountall unset __ZFS_POOL_RESTRICT for fs in ${filesystems[@]}; do cleanup_filesystem "$TESTPOOL" "$fs" done [[ -d ${TEST_BASE_DIR%%/}/testroot$$ ]] && \ rm -rf ${TEST_BASE_DIR%%/}/testroot$$ } # # This function takes a single true/false argument. If true it will verify that # all file systems are mounted. If false it will verify that they are not # mounted. # function verify_all { if $1; then logfunc=log_must else logfunc=log_mustnot fi for fs in ${filesystems[@]}; do $logfunc mounted "$TESTPOOL/$fs" done return 0 } log_onexit cleanup_all log_must setup_all export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $unmountall unset __ZFS_POOL_RESTRICT verify_all false export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $mountall unset __ZFS_POOL_RESTRICT verify_all true log_note "Verify that 'zfs $mountcmd' will display " \ "all ZFS filesystems currently mounted." verify_mount_display log_pass "'zfs $mountall' succeeds as root, " \ "and all available ZFS filesystems are mounted." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_003_pos.ks0000644000000000000000000000007413607166133031515 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.325677845 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_003_pos.ksh0000755016037001603700000000474213607166133031674 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # Invoke "zfs mount " with a filesystem whose mountpoint property # is 'legacy' or 'none', # it will fail with a return code of 1 and issue an error message. # # STRATEGY: # 1. Make sure that the ZFS filesystem is unmounted. # 2. Mount the filesystem using the various combinations # - zfs set mountpoint=legacy # - zfs set mountpoint=none # 3. Verify that mount failed with return code of 1. # verify_runnable "both" function cleanup { log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_must force_unmount $TESTPOOL/$TESTFS return 0 } log_assert "Verify that 'zfs $mountcmd' with a filesystem " \ "whose mountpoint property is 'legacy' or 'none' " \ "will fail with return code 1." log_onexit cleanup set -A mopt "legacy" "none" typeset -i ret=0 typeset -i i=0 while (( i < ${#mopt[*]} )); do unmounted $TESTPOOL/$TESTFS || \ log_must cleanup log_must zfs set mountpoint=${mopt[i]} $TESTPOOL/$TESTFS zfs $mountcmd $TESTPOOL/$TESTFS ret=$? (( ret == 1)) || \ log_fail "'zfs $mountcmd $TESTPOOL/$TESTFS' " \ "unexpected return code of $ret." log_note "Make sure the filesystem $TESTPOOL/$TESTFS is unmounted" unmounted $TESTPOOL/$TESTFS || \ log_fail Filesystem $TESTPOOL/$TESTFS is mounted ((i = i + 1)) done log_pass "Verify that 'zfs $mountcmd' with a filesystem " \ "whose mountpoint property is 'legacy' or 'none' " \ "will fail with return code 1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_008_pos.ks0000644000000000000000000000007413612141513031511 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.337678229 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_008_pos.ksh0000755016037001603700000000524013612141513031662 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # 'zfs mount -O' allow the file system to be mounted over an existing # mount point, making the underlying file system inaccessible. # # STRATEGY: # 1. Create two filesystem fs & fs1, and create two test files for them. # 2. Unmount fs1 and set mountpoint property is identical to fs. # 3. Verify 'zfs mount -O' will make the underlying filesystem fs # inaccessible. # function cleanup { ! ismounted $fs && log_must zfs mount $fs if datasetexists $fs1; then log_must zfs destroy $fs1 fi if [[ -f $testfile ]]; then log_must rm -f $testfile fi } log_assert "Verify 'zfs mount -O' will override existing mount point." log_onexit cleanup fs=$TESTPOOL/$TESTFS; fs1=$TESTPOOL/$TESTFS1 cleanup # Get the original mountpoint of $fs and $fs1 mntpnt=$(get_prop mountpoint $fs) log_must zfs create $fs1 mntpnt1=$(get_prop mountpoint $fs1) testfile=$mntpnt/$TESTFILE0; testfile1=$mntpnt1/$TESTFILE1 log_must mkfile 1M $testfile $testfile1 log_must zfs unmount $fs1 log_must zfs set mountpoint=$mntpnt $fs1 log_mustnot zfs mount $fs1 log_must zfs mount -O $fs1 # Create new file in override mountpoint log_must mkfile 1M $mntpnt/$TESTFILE2 # Verify the underlying file system inaccessible log_mustnot ls $testfile log_must ls $mntpnt/$TESTFILE1 $mntpnt/$TESTFILE2 # Verify $TESTFILE2 was created in $fs1, rather than $fs log_must zfs unmount $fs1 log_must zfs set mountpoint=$mntpnt1 $fs1 log_must zfs mount $fs1 log_must ls $testfile1 $mntpnt1/$TESTFILE2 # Verify $TESTFILE2 was not created in $fs, and $fs is accessible again. log_mustnot ls $mntpnt/$TESTFILE2 log_must ls $testfile log_pass "Verify 'zfs mount -O' override mount point passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_011_neg.ks0000644000000000000000000000007413607166133031464 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.344678455 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_011_neg.ksh0000755016037001603700000000430613607166133031637 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that zfs mount should fail with bad parameters # # STRATEGY: # 1. Make an array of bad parameters # 2. Use zfs mount to mount the filesystem # 3. Verify that zfs mount returns error # verify_runnable "both" function cleanup { if snapexists $TESTPOOL/$TESTFS@$TESTSNAP; then log_must_busy zfs destroy $TESTPOOL/$TESTFS@$TESTSNAP fi if is_global_zone && datasetexists $TESTPOOL/$TESTVOL; then log_must_busy zfs destroy $TESTPOOL/$TESTVOL fi } log_assert "zfs mount fails with bad parameters" log_onexit cleanup fs=$TESTPOOL/$TESTFS set -A badargs "A" "-A" "-" "-x" "-?" "=" "-o *" "-a" for arg in "${badargs[@]}"; do log_mustnot eval "zfs mount $arg $fs >/dev/null 2>&1" done #verify that zfs mount fails with invalid dataset for opt in "-o abc" "-O"; do log_mustnot eval "zfs mount $opt /$fs >/dev/null 2>&1" done #verify that zfs mount fails with volume and snapshot log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP log_mustnot eval "zfs mount $TESTPOOL/$TESTFS@$TESTSNAP >/dev/null 2>&1" if is_global_zone; then log_must zfs create -V 10m $TESTPOOL/$TESTVOL log_mustnot eval "zfs mount $TESTPOOL/$TESTVOL >/dev/null 2>&1" fi log_pass "zfs mount fails with bad parameters as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_010_neg.ks0000644000000000000000000000007413612141513031452 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.342678391 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_010_neg.ksh0000755016037001603700000000357213612141513031631 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that zfs mount should fail when mounting a mounted zfs filesystem or # the mountpoint is busy. On Linux the mount should succeed. # # STRATEGY: # 1. Make a zfs filesystem mounted or mountpoint busy # 2. Use zfs mount to mount the filesystem # 3. Verify that zfs mount succeeds on Linux and fails for other platforms # verify_runnable "both" function cleanup { if ! ismounted $fs; then log_must zfs mount $fs fi } log_assert "zfs mount fails with mounted filesystem or busy mountpoint" log_onexit cleanup fs=$TESTPOOL/$TESTFS if ! ismounted $fs; then log_must zfs mount $fs fi log_mustnot zfs mount $fs mpt=$(get_prop mountpoint $fs) log_must zfs umount $fs curpath=`dirname $0` cd $mpt if is_linux; then log_must zfs mount $fs else log_mustnot zfs mount $fs fi cd $curpath log_pass "zfs mount fails with mounted filesystem or busy mountpoint as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_002_pos.ks0000644000000000000000000000007413607166133031514 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.323677781 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_002_pos.ksh0000755016037001603700000000436113607166133031670 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # Invoking "zfs mount " with a filesystem whose name is not in # "zfs list", will fail with a return code of 1. # # STRATEGY: # 1. Make sure the NONEXISTFSNAME ZFS filesystem is not in 'zfs list'. # 2. Invoke 'zfs mount '. # 3. Verify that mount failed with return code of 1. # verify_runnable "both" function cleanup { typeset fs for fs in $NONEXISTFSNAME $TESTFS ; do log_must force_unmount $TESTPOOL/$fs done } log_assert "Verify that 'zfs $mountcmd' with a filesystem " \ "whose name is not in 'zfs list' will fail with return code 1." log_onexit cleanup log_note "Make sure the filesystem $TESTPOOL/$NONEXISTFSNAME " \ "is not in 'zfs list'" log_mustnot zfs list $TESTPOOL/$NONEXISTFSNAME typeset -i ret=0 zfs $mountcmd $TESTPOOL/$NONEXISTFSNAME ret=$? (( ret == 1 )) || \ log_fail "'zfs $mountcmd $TESTPOOL/$NONEXISTFSNAME' " \ "unexpected return code of $ret." log_note "Make sure the filesystem $TESTPOOL/$NONEXISTFSNAME is unmounted" unmounted $TESTPOOL/$NONEXISTFSNAME || \ log_fail Filesystem $TESTPOOL/$NONEXISTFSNAME is mounted log_pass "'zfs $mountcmd' with a filesystem " \ "whose name is not in 'zfs list' failed with return code 1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143003027711 xustar000000000000000029 mtime=1579730435.33032948 30 atime=1579730455.019961657 30 ctime=1579730477.366679161 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile.in0000664016037001603700000006234013612143003027723 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_mount DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_mount ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_mount_001_pos.ksh \ zfs_mount_002_pos.ksh \ zfs_mount_003_pos.ksh \ zfs_mount_004_pos.ksh \ zfs_mount_005_pos.ksh \ zfs_mount_006_pos.ksh \ zfs_mount_007_pos.ksh \ zfs_mount_008_pos.ksh \ zfs_mount_009_neg.ksh \ zfs_mount_010_neg.ksh \ zfs_mount_011_neg.ksh \ zfs_mount_012_neg.ksh \ zfs_mount_all_001_pos.ksh \ zfs_mount_all_fail.ksh \ zfs_mount_all_mountpoints.ksh \ zfs_mount_encrypted.ksh \ zfs_mount_remount.ksh \ zfs_mount_test_race.ksh \ zfs_multi_mount.ksh dist_pkgdata_DATA = \ zfs_mount.cfg \ zfs_mount.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_mount/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount.kshlib0000644000000000000000000000007413607166133031111 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.314677491 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib0000644016037001603700000000602513607166133031111 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2017 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.cfg function force_unmount #dev { typeset dev=$1 ismounted $dev if (( $? == 0 )); then log_must zfs $unmountforce $dev fi return 0 } # Create pool and ( fs | container | vol ) with the given parameters, # it'll destroy prior exist one that has the same name. function setup_filesystem #disklist #pool #fs #mntpoint #type #vdev { typeset disklist=$1 typeset pool=$2 typeset fs=${3##/} typeset mntpoint=$4 typeset type=$5 typeset vdev=$6 if [[ -z $pool || -z $fs || -z $mntpoint ]]; then log_note "Missing parameter: (\"$pool\", \"$fs\", \"$mntpoint\")" return 1 fi if is_global_zone && [[ -z $disklist ]] ; then log_note "Missing disklist." return 1 fi if [[ $vdev != "" && \ $vdev != "mirror" && \ $vdev != "raidz" ]] ; then log_note "Wrong vdev: (\"$vdev\")" return 1 fi poolexists $pool || \ create_pool $pool $vdev $disklist datasetexists $pool/$fs && \ log_must cleanup_filesystem $pool $fs rmdir $mntpoint > /dev/null 2>&1 if [[ ! -d $mntpoint ]]; then log_must mkdir -p $mntpoint fi case "$type" in 'ctr') log_must zfs create -o mountpoint=$mntpoint $pool/$fs ;; 'vol') log_must zfs create -V $VOLSIZE $pool/$fs block_device_wait ;; *) log_must zfs create -o mountpoint=$mntpoint $pool/$fs ;; esac return 0 } # Destroy ( fs | container | vol ) with the given parameters. function cleanup_filesystem #pool #fs { typeset pool=$1 typeset fs=${2##/} typeset mtpt="" if [[ -z $pool || -z $fs ]]; then log_note "Missing parameter: (\"$pool\", \"$fs\")" return 1 fi if datasetexists "$pool/$fs" ; then mtpt=$(get_prop mountpoint "$pool/$fs") log_must zfs destroy -r $pool/$fs [[ -d $mtpt ]] && \ log_must rm -rf $mtpt else return 1 fi return 0 } # Make sure 'zfs mount' should display all ZFS filesystems currently mounted. # The results of 'zfs mount' and 'df -F zfs' should be identical. function verify_mount_display { typeset fs for fs in $(zfs $mountcmd | awk '{print $1}') ; do log_must mounted $fs done return 0 } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_multi_mount.ksh0000644000000000000000000000007413607166147031641 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.362679033 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_multi_mount.ksh0000755016037001603700000000521413607166147031643 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy is of the CDDL is also available via the Internet # at http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright(c) 2018 Datto Inc. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify multi mount functionality # # STRATEGY: # 1. Create fs # 2. Create and hold open file in filesystem # 3. Lazy unmount # 4. Verify remounting fs that was lazily unmounted is possible # 5. Verify multiple mounts of the same dataset are possible # 6. Verify bind mount doesn't prevent rename # verify_runnable "both" function cleanup { ismounted $MNTPFS && log_must umount $MNTPFS ismounted $MNTPFS2 && log_must umount $MNTPFS2 ismounted $MNTPFS3 && log_must umount $MNTPFS3 ismounted $MNTPFS4 && log_must umount $MNTPFS4 ismounted $RENAMEMNT && log_must umount $RENAMEMNT datasetexists $TESTDS && log_must destroy_dataset "$TESTDS" "-f" } log_onexit cleanup log_assert "Verify multiple mounts into one namespace are possible" # 1. Create fs TESTDS="$TESTPOOL/multi-mount-test" log_must zfs create $TESTDS # 2. Create and hold open file in filesystem MNTPFS="$(get_prop mountpoint $TESTDS)" FILENAME="$MNTPFS/file" log_must mkfile 128k $FILENAME log_must exec 9<> $FILENAME # open file # 3. Lazy umount log_must umount -l $MNTPFS if [ -f $FILENAME ]; then log_fail "Lazy unmount failed" fi # 4. Verify remounting fs that was lazily unmounted is possible log_must zfs mount $TESTDS if [ ! -f $FILENAME ]; then log_fail "Lazy remount failed" fi log_must exec 9>&- # close fd # 5. Verify multiple mounts of the same dataset are possible MNTPFS2="$MNTPFS-second" FILENAME="$MNTPFS2/file" log_must mkdir $MNTPFS2 log_must mount -t zfs -o zfsutil $TESTDS $MNTPFS2 if [ ! -f $FILENAME ]; then log_fail "First multi mount failed" fi MNTPFS3="$MNTPFS-third" FILENAME="$MNTPFS3/file" log_must mkdir $MNTPFS3 log_must mount -t zfs -o zfsutil $TESTDS $MNTPFS3 if [ ! -f $FILENAME ]; then log_fail "Second multi mount failed" fi # 6. Verify bind mount doesn't prevent rename RENAMEFS="$TESTDS-newname" MNTPFS4="$MNTPFS-fourth" log_must mkdir $MNTPFS4 log_must mount --bind $MNTPFS $MNTPFS4 log_must zfs rename $TESTDS $RENAMEFS RENAMEMNT="$(get_prop mountpoint $RENAMEFS)" FILENAME="$RENAMEMNT/file" if [ ! -f $FILENAME ]; then log_fail "Rename failed" fi log_must zfs rename $RENAMEFS $TESTDS log_pass "Multiple mounts are possible" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_all_fail.k0000644000000000000000000000007413607166147031717 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.351678679 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_all_fail.ksh0000755016037001603700000000454113607166147032256 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # DESCRIPTION: # Verify that if 'zfs mount -a' fails to mount one filesystem, # the command fails with a non-zero error code, but all other # filesystems are mounted. # # STRATEGY: # 1. Create zfs filesystems # 2. Unmount a leaf filesystem # 3. Create a file in the above filesystem's mountpoint # 4. Verify that 'zfs mount -a' fails to mount the above # 5. Verify that all other filesystems were mounted # verify_runnable "both" typeset -a filesystems typeset path=${TEST_BASE_DIR%%/}/testroot$$/$TESTPOOL typeset fscount=10 function setup_all { # Create $fscount filesystems at the top level of $path for ((i=0; i<$fscount; i++)); do setup_filesystem "$DISKS" "$TESTPOOL" $i "$path/$i" ctr done zfs list -r $TESTPOOL return 0 } function cleanup_all { export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $unmountall unset __ZFS_POOL_RESTRICT [[ -d ${TEST_BASE_DIR%%/}/testroot$$ ]] && \ rm -rf ${TEST_BASE_DIR%%/}/testroot$$ } log_onexit cleanup_all log_must setup_all # # Unmount all of the above so that we can create the stray file # in one of the mountpoint directories. # export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $unmountall unset __ZFS_POOL_RESTRICT # All of our filesystems should be unmounted at this point for ((i=0; i<$fscount; i++)); do log_mustnot mounted "$TESTPOOL/$i" done # Create a stray file in one filesystem's mountpoint touch $path/0/strayfile # Verify that zfs mount -a fails export __ZFS_POOL_RESTRICT="$TESTPOOL" log_mustnot zfs $mountall unset __ZFS_POOL_RESTRICT # All filesystems except for "0" should be mounted log_mustnot mounted "$TESTPOOL/0" for ((i=1; i<$fscount; i++)); do log_must mounted "$TESTPOOL/$i" done log_pass "'zfs $mountall' failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/PaxHeaders.151519/zfs_mount_007_pos.ks0000644000000000000000000000007413612141513031510 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.335678165 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_mount_007_pos.ksh0000755016037001603700000001006313612141513031660 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib # # DESCRIPTION: # The following options can be set on a temporary basis using the -o option # without affecting the on-disk property. The original on-disk value will be # restored when the file system is unmounted and mounted. # # PROPERTY MOUNT OPTION # atime atime/noatime # devices devices/nodevices # exec exec/noexec # readonly ro/rw # setuid setuid/nosetuid # # STRATEGY: # 1. Create filesystem and get original property value. # 2. Using 'zfs mount -o' to set filesystem property. # 3. Verify the property was set temporarily. # 4. Verify it will not affect the property that is stored on disk. # function cleanup { if ! ismounted $TESTPOOL/$TESTFS; then log_must zfs mount $TESTPOOL/$TESTFS fi } log_assert "Verify '-o' will set filesystem property temporarily, " \ "without affecting the property that is stored on disk." log_onexit cleanup set -A properties "atime" "devices" "exec" "readonly" "setuid" # # Get the specified filesystem property reverse mount option. # # $1 filesystem # $2 property # function get_reverse_option { typeset fs=$1 typeset prop=$2 # Define property value: "reverse if value=on" "reverse if value=off" if is_linux; then set -A values "noatime" "atime" \ "nodev" "dev" \ "noexec" "exec" \ "rw" "ro" \ "nosuid" "suid" else set -A values "noatime" "atime" \ "nodevices" "devices" \ "noexec" "exec" \ "rw" "ro" \ "nosetuid" "setuid" fi typeset -i i=0 while (( i < ${#properties[@]} )); do if [[ $prop == ${properties[$i]} ]]; then break fi (( i += 1 )) done if (( i >= ${#properties[@]} )); then log_fail "Incorrect option: $prop" fi typeset val typeset -i ind=0 val=$(get_prop $prop $fs) || log_fail "get_prop $prop $fs" if [[ $val == "on" ]]; then (( ind = i * 2 )) else (( ind = i * 2 + 1 )) fi echo ${values[$ind]} } fs=$TESTPOOL/$TESTFS cleanup for property in ${properties[@]}; do orig_val=$(get_prop $property $fs) (($? != 0)) && log_fail "get_prop $property $fs" # Set filesystem property temporarily reverse_opt=$(get_reverse_option $fs $property) log_must zfs mount -o remount,$reverse_opt $fs cur_val=$(get_prop $property $fs) (($? != 0)) && log_fail "get_prop $property $fs" # In LZ, a user with all zone privileges can never with "devices" if ! is_global_zone && [[ $property == devices ]] ; then if [[ $cur_val != off || $orig_val != off ]]; then log_fail "'devices' property shouldn't " \ "be enabled in LZ" fi elif [[ $orig_val == $cur_val ]]; then log_fail "zfs mount -o remount,$reverse_opt " \ "doesn't change property." fi # unmount & mount will revert property to the original value log_must zfs unmount $fs log_must zfs mount $fs cur_val=$(get_prop $property $fs) (($? != 0)) && log_fail "get_prop $property $fs" if [[ $orig_val != $cur_val ]]; then log_fail "zfs mount -o remount,$reverse_opt " \ "change the property that is stored on disks" fi done log_pass "Verify '-o' set filesystem property temporarily passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_replace0000644000000000000000000000013213612143060026405 xustar000000000000000030 mtime=1579730480.069765953 30 atime=1579730489.092055645 30 ctime=1579730480.069765953 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/0000775016037001603700000000000013612143060026466 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/PaxHeaders.151519/replace-o_ashift0000644000000000000000000000007413607166133031631 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.062765727 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/replace-o_ashift.ksh0000755016037001603700000000552513607166133032424 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool replace -o ashift= ...' should work with different ashift # values. # # STRATEGY: # 1. Create various pools with different ashift values. # 2. Verify 'replace -o ashift=' works only with allowed values. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 log_must rm -f $disk1 log_must rm -f $disk2 } log_assert "zpool replace -o ashift=' works with different ashift values" log_onexit cleanup disk1=$TEST_BASE_DIR/$FILEDISK0 disk2=$TEST_BASE_DIR/$FILEDISK1 log_must truncate -s $SIZE $disk1 log_must truncate -s $SIZE $disk2 typeset ashifts=("9" "10" "11" "12" "13" "14" "15" "16") for ashift in ${ashifts[@]} do for cmdval in ${ashifts[@]} do log_must zpool create -o ashift=$ashift $TESTPOOL1 $disk1 verify_ashift $disk1 $ashift if [[ $? -ne 0 ]] then log_fail "Pool was created without setting ashift " \ "value to $ashift" fi # ashift_of(replacing_disk) <= ashift_of(existing_vdev) if [[ $cmdval -le $ashift ]] then log_must zpool replace -o ashift=$cmdval $TESTPOOL1 \ $disk1 $disk2 verify_ashift $disk2 $ashift if [[ $? -ne 0 ]] then log_fail "Device was replaced without " \ "setting ashift value to $ashift" fi wait_replacing $TESTPOOL1 else log_mustnot zpool replace -o ashift=$cmdval $TESTPOOL1 \ $disk1 $disk2 fi # clean things for the next run log_must zpool destroy $TESTPOOL1 log_must zpool labelclear $disk1 log_must zpool labelclear $disk2 done done typeset badvals=("off" "on" "1" "8" "17" "1b" "ff" "-") for badval in ${badvals[@]} do log_must zpool create $TESTPOOL1 $disk1 log_mustnot zpool replace -o ashift=$badval $TESTPOOL1 $disk1 $disk2 log_must zpool destroy $TESTPOOL1 log_must zpool labelclear $disk1 log_mustnot zpool labelclear $disk2 done log_pass "zpool replace -o ashift=' works with different ashift values" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/PaxHeaders.151519/zpool_replace_000000644000000000000000000000007413607166133031561 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.060765663 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/zpool_replace_001_neg.ksh0000755016037001603700000000525013607166133033261 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool replace' command with bad options fails. # # STRATEGY: # 1. Create an array of badly formed 'zpool replace' options. # 2. Execute each element of the array. # 3. Verify an error code is returned. # verify_runnable "global" DISKLIST=$(get_disklist $TESTPOOL) set -A args "" "-f" "-?" "-z fakepool" "-f fakepool" "-ev fakepool" "fakepool" \ "$TESTPOOL" "-t $TESTPOOL/$TESTFS" "-t $TESTPOOL/$TESTFS $DISKLIST" \ "$TESTPOOL/$TESTCTR" "-t $TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTPOOL/$TESTCTR $DISKLIST" "-t $TESTPOOL/$TESTVOL" \ "$TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "$TESTPOOL/$TESTVOL $DISKLIST" \ "$DISKLIST" \ "fakepool fakedevice" "fakepool fakedevice fakenewdevice" \ "$TESTPOOL fakedevice" "$TESTPOOL $DISKLIST" \ "$TESTPOOL fakedevice fakenewdevice fakenewdevice" \ "-f $TESTPOOL" "-f $TESTPOOL/$TESTFS" "-f $TESTPOOL/$TESTFS $DISKLIST" \ "-f $TESTPOOL/$TESTCTR" "-f $TESTPOOL/$TESTCTR/$TESTFS1" \ "-f $TESTPOOL/$TESTCTR $DISKLIST" "-f $TESTPOOL/$TESTVOL" \ "-f $TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" \ "-f $TESTPOOL/$TESTVOL $DISKLIST" \ "-f $DISKLIST" \ "-f fakepool fakedevice" "-f fakepool fakedevice fakenewdevice" \ "-f $TESTPOOL fakedevice fakenewdevice fakenewdevice" \ "-f $TESTPOOL fakedevice" "-f $TESTPOOL $DISKLIST" log_assert "Executing 'zpool replace' with bad options fails" if [[ -z $DISKLIST ]]; then log_fail "DISKLIST is empty." fi typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool replace ${args[$i]} (( i = i + 1 )) done log_pass "'zpool replace' command with bad options failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030535 xustar000000000000000030 atime=1579730437.327393601 30 ctime=1579730480.066765857 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/Makefile.am0000644016037001603700000000032713607166133030534 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_replace dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_replace_001_neg.ksh \ replace-o_ashift.ksh \ replace_prop_ashift.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030350 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.056765535 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/setup.ksh0000755016037001603700000000203613607166133030351 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" verify_disk_count "$DISKS" 2 DISK=${DISKS%% *} default_mirror_setup $DISKS zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030637 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.058765599 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/cleanup.ksh0000755016037001603700000000174213607166133030643 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/PaxHeaders.151519/replace_prop_ash0000644000000000000000000000007413607166133031732 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.064765791 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/replace_prop_ashift.ksh0000755016037001603700000000555113607166133033227 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool replace' should use the ashift pool property value as default. # # STRATEGY: # 1. Create a pool with default values. # 2. Verify 'zpool replace' uses the ashift pool property value when # replacing an existing device. # 3. Verify the default ashift value can still be overridden by manually # specifying '-o ashift=' from the command line. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 log_must rm -f $disk1 $disk2 } log_assert "'zpool replace' uses the ashift pool property value as default." log_onexit cleanup disk1=$TEST_BASE_DIR/$FILEDISK0 disk2=$TEST_BASE_DIR/$FILEDISK1 log_must truncate -s $SIZE $disk1 log_must truncate -s $SIZE $disk2 typeset ashifts=("9" "10" "11" "12" "13" "14" "15" "16") for ashift in ${ashifts[@]} do for pprop in ${ashifts[@]} do log_must zpool create -o ashift=$ashift $TESTPOOL1 $disk1 log_must zpool set ashift=$pprop $TESTPOOL1 # ashift_of(replacing_disk) <= ashift_of(existing_vdev) if [[ $pprop -le $ashift ]] then log_must zpool replace $TESTPOOL1 $disk1 $disk2 wait_replacing $TESTPOOL1 verify_ashift $disk2 $ashift if [[ $? -ne 0 ]] then log_fail "Device was replaced without " \ "setting ashift value to $ashift" fi else # cannot replace if pool prop ashift > vdev ashift log_mustnot zpool replace $TESTPOOL1 $disk1 $disk2 # verify we can override the pool prop value manually log_must zpool replace -o ashift=$ashift $TESTPOOL1 \ $disk1 $disk2 wait_replacing $TESTPOOL1 verify_ashift $disk2 $ashift if [[ $? -ne 0 ]] then log_fail "Device was replaced without " \ "setting ashift value to $ashift" fi fi # clean things for the next run log_must zpool destroy $TESTPOOL1 log_must zpool labelclear $disk1 log_must zpool labelclear $disk2 done done log_pass "'zpool replace' uses the ashift pool property value." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030526 xustar000000000000000030 mtime=1579730437.363394756 30 atime=1579730456.198999513 30 ctime=1579730480.069765953 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_replace/Makefile.in0000664016037001603700000005742013612143005030542 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_replace DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_replace ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_replace_001_neg.ksh \ replace-o_ashift.ksh \ replace_prop_ashift.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_replace/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_replace/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_copies0000644000000000000000000000013213612143054025716 xustar000000000000000030 mtime=1579730476.786660537 30 atime=1579730489.092055645 30 ctime=1579730476.786660537 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/0000775016037001603700000000000013612143054025777 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/zfs_copies_002_pos.0000644000000000000000000000007413612141514031406 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.773660121 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_002_pos.ksh0000755016037001603700000000551313612141514032120 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib # # DESCRIPTION: # Verify that the space used by multiple copies is charged correctly # # STRATEGY: # 1. Create filesystems with copies set as 2,3 respectively; # 2. Copy specified size data into each filesystem; # 3. Verify that the space is charged as expected with zfs list, ls -s, df(1m), # du(1) commands; # verify_runnable "both" function cleanup { typeset val for val in 1 2 3; do if datasetexists $TESTPOOL/fs_$val; then log_must zfs destroy $TESTPOOL/fs_$val fi done } log_assert "Verify that the space used by multiple copies is charged correctly." log_onexit cleanup for val in 1 2 3; do log_must zfs create -o copies=$val $TESTPOOL/fs_$val log_must mkfile $FILESIZE /$TESTPOOL/fs_$val/$FILE done # # Sync up the filesystem # sync # # Verify 'zfs list' can correctly list the space charged # log_note "Verify 'zfs list' can correctly list the space charged." fsize=${FILESIZE%[m|M]} for val in 1 2 3; do used=$(get_used_prop $TESTPOOL/fs_$val) check_used $used $val done log_note "Verify 'ls -s' can correctly list the space charged." if is_linux; then blksize=1024 else blksize=512 fi for val in 1 2 3; do blks=`ls -ls /$TESTPOOL/fs_$val/$FILE | awk '{print $1}'` (( used = blks * $blksize )) # bytes check_used $used $val done log_note "Verify df(1M) can correctly display the space charged." for val in 1 2 3; do used=`df -F zfs -k /$TESTPOOL/fs_$val/$FILE | grep $TESTPOOL/fs_$val \ | awk '{print $3}'` (( used = used * 1024 )) # kb -> bytes check_used $used $val done log_note "Verify du(1) can correctly display the space charged." for val in 1 2 3; do used=`du -k /$TESTPOOL/fs_$val/$FILE | awk '{print $1}'` (( used = used * 1024 )) # kb -> bytes check_used $used $val done log_pass "The space used by multiple copies is charged correctly as expected. " zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/zfs_copies_003_pos.0000644000000000000000000000007413607166133031417 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.775660185 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_003_pos.ksh0000755016037001603700000000343613607166133032133 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib # # DESCRIPTION: # Verify that the volume space used by multiple copies is charged correctly # # STRATEGY: # 1. Create volume; # 2. Create ZFS filesystem based on the volume; # 3. Set the copies property of volume to 1,2 or 3; # 4. Copy specified size data into each filesystem; # 5. Verify that the volume space is charged as expected. # verify_runnable "global" function cleanup { if poolexists $TESTPOOL1; then destroy_pool $TESTPOOL1 fi if datasetexists $vol; then log_must zfs destroy $vol fi } log_assert "Verify that ZFS volume space used by multiple copies is charged correctly." log_onexit cleanup vol=$TESTPOOL/$TESTVOL1 for val in 1 2 3; do do_vol_test zfs $val done log_pass "The volume space used by multiple copies is charged correctly as expected. " zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/zfs_copies.kshlib0000644000000000000000000000007413612141514031341 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.763659799 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib0000644016037001603700000000703213612141514031340 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.cfg # # Compare the value of copies property with specified value # $1, the dataset name # $2, the expected copies value # function cmp_prop { typeset ds=$1 typeset val_expect=$2 typeset val_actual val_actual=$(get_prop copies $ds) if [[ $val_actual != $val_expect ]]; then log_fail "Expected value ($val_expect) != actual value " \ "($val_actual)" fi } # # Check the used space is charged correctly # $1, the number of used space # $2, the expected common factor between the used space and the file space # function check_used { typeset charged_spc=$1 typeset -i used typeset -i expected_cfactor=$2 typeset -i cfactor typeset -i fsize=${FILESIZE%[m|M]} ((used = $charged_spc / 1024 / 1024)) ((cfactor = used / fsize)) if ((cfactor != expected_cfactor)); then log_fail "The space is not charged correctly while setting" \ "copies as $expected_cfactor." fi } # # test ncopies on volume # $1 test type zfs|ufs|ext2 # $2 copies # $3 mntp for ufs|ext2 test function do_vol_test { typeset type=$1 typeset copies=$2 typeset mntp=$3 vol=$TESTPOOL/$TESTVOL1 vol_b_path=$ZVOL_DEVDIR/$TESTPOOL/$TESTVOL1 vol_r_path=$ZVOL_RDEVDIR/$TESTPOOL/$TESTVOL1 log_must zfs create -V $VOLSIZE -o copies=$copies $vol log_must zfs set refreservation=none $vol block_device_wait case "$type" in "ext2") log_must eval "echo y | newfs $vol_r_path >/dev/null 2>&1" log_must mount -o rw $vol_b_path $mntp ;; "ufs") if is_linux; then log_unsupported "ufs test not implemented for linux" fi log_must eval "newfs $vol_r_path >/dev/null 2>&1" log_must mount $vol_b_path $mntp ;; "zfs") log_must zpool create $TESTPOOL1 $vol_b_path log_must zfs create $TESTPOOL1/$TESTFS1 ;; *) log_unsupported "$type test not implemented" ;; esac ((nfilesize = copies * ${FILESIZE%m})) pre_used=$(get_prop used $vol) ((target_size = pre_used + nfilesize)) if [[ $type == "zfs" ]]; then log_must mkfile $FILESIZE /$TESTPOOL1/$TESTFS1/$FILE else log_must mkfile $FILESIZE $mntp/$FILE fi post_used=$(get_prop used $vol) ((retries = 0)) while ((post_used < target_size && retries++ < 42)); do sleep 1 post_used=$(get_prop used $vol) done ((used = post_used - pre_used)) if ((used < nfilesize)); then log_fail "The space is not charged correctly while setting" \ "copies as $copies ($used < $nfilesize)" \ "pre=${pre_used} post=${post_used}" fi if [[ $type == "zfs" ]]; then log_must zpool destroy $TESTPOOL1 else log_must umount $mntp fi log_must zfs destroy $vol } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/zfs_copies_004_neg.0000644000000000000000000000007413607166133031370 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.777660249 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_004_neg.ksh0000755016037001603700000000346413607166133032105 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib # # DESCRIPTION: # Verify that copies cannot be set to other value except for 1, 2 or 3 # # STRATEGY: # 1. Create filesystems with copies set as any value other than 1, 2 or 3 # 2. Verify that the create operations fail # verify_runnable "both" log_assert "Verify that copies property cannot be set to any value other than 1,2 or 3" set -A badval 0 01 02 03 0 -1 -2 -3 10 20 30 4 5 6 blah for val in ${badval[@]}; do log_mustnot zfs create -o copies=$val $TESTPOOL/$TESTFS1 log_mustnot zfs create -V $VOLSIZE -o copies=$val $TESTPOOL/$TESTVOL1 log_mustnot zfs set copies=$val $TESTPOOL/$TESTFS log_mustnot zfs set copies=$val $TESTPOOL/$TESTVOL block_device_wait done log_pass "The copies property cannot be set to any value other than 1,2 or 3 as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/zfs_copies.cfg0000644000000000000000000000007413607166133030634 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.761659735 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies.cfg0000644016037001603700000000220413607166133030627 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export ZPOOL_VERSION_1_FILES="zfs-pool-v1.dat.bz2" export ZPOOL_VERSION_1_NAME="v1-pool" export FILESIZE=10m export FILE=file.copies export SLEEPTIME=30 export FS_MNTPOINT=/testdir_nfs_mntpoint zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030043 xustar000000000000000030 atime=1579730434.898315611 30 ctime=1579730476.784660473 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/Makefile.am0000644016037001603700000000053413607166133030042 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_copies dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_copies_001_pos.ksh \ zfs_copies_002_pos.ksh \ zfs_copies_003_pos.ksh \ zfs_copies_004_neg.ksh \ zfs_copies_005_neg.ksh \ zfs_copies_006_pos.ksh dist_pkgdata_DATA = \ zfs_copies.cfg \ zfs_copies.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027656 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.766659895 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/setup.ksh0000755016037001603700000000174513607166133027665 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030145 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.768659959 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/cleanup.ksh0000755016037001603700000000243613607166133030152 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.cfg # # umount the ufs|ext fs if there is timedout in the ufs|ext test # if ismounted $FS_MNTPOINT $NEWFS_DEFAULT_FS ; then log_must umount -f $FS_MNTPOINT rm -fr $FS_MNTPOINT fi default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/zfs_copies_001_pos.0000644000000000000000000000007413607166133031415 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.770660023 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_001_pos.ksh0000755016037001603700000000531313607166133032125 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib # # DESCRIPTION: # Verify "copies" property can be correctly set as 1,2 and 3 and different # filesystem can have different value of "copies" property within the same pool. # # STRATEGY: # 1. Create different filesystems with copies set as 1,2,3; # 2. Verify that the "copies" property has been set correctly # verify_runnable "both" function cleanup { typeset ds for ds in $fs1 $fs2 $vol1 $vol2; do if datasetexists $ds; then log_must zfs destroy $ds fi done } log_assert "Verify 'copies' property with correct arguments works or not." log_onexit cleanup fs=$TESTPOOL/$TESTFS fs1=$TESTPOOL/$TESTFS1 fs2=$TESTPOOL/$TESTFS2 vol=$TESTPOOL/$TESTVOL vol1=$TESTPOOL/$TESTVOL1 vol2=$TESTPOOL/$TESTVOL2 # # Check the default value for copies property # for ds in $fs $vol; do cmp_prop $ds 1 done for val in 1 2 3; do log_must zfs create -o copies=$val $fs1 if is_global_zone; then log_must zfs create -V $VOLSIZE -o copies=$val $vol1 block_device_wait else log_must zfs create -o copies=$val $vol1 fi for ds in $fs1 $vol1; do cmp_prop $ds $val done for val2 in 3 2 1; do log_must zfs create -o copies=$val2 $fs2 if is_global_zone; then log_must zfs create -V $VOLSIZE -o copies=$val2 $vol2 block_device_wait else log_must zfs create -o copies=$val2 $vol2 fi for ds in $fs2 $vol2; do cmp_prop $ds $val2 log_must zfs destroy $ds block_device_wait done done for ds in $fs1 $vol1; do log_must zfs destroy $ds block_device_wait done done for val in 3 2 1; do for ds in $fs $vol; do log_must zfs set copies=$val $ds cmp_prop $ds $val done done log_pass "'copies' property with correct arguments works as expected. " zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/zfs_copies_005_neg.0000644000000000000000000000007413607166133031371 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.780660345 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_005_neg.ksh0000755016037001603700000000456513607166133032111 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib # # DESCRIPTION: # Verify that copies cannot be set with pool version 1 # # STRATEGY: # 1. Create filesystems with copies set in a pool with version 1 # 2. Verify that the create operations fail # verify_runnable "global" function cleanup { if poolexists $ZPOOL_VERSION_1_NAME; then destroy_pool $ZPOOL_VERSION_1_NAME fi if [[ -f $TEST_BASE_DIR/$ZPOOL_VERSION_1_FILES ]]; then rm -f $TEST_BASE_DIR/$ZPOOL_VERSION_1_FILES fi if [[ -f $TEST_BASE_DIR/${ZPOOL_VERSION_1_FILES%.*} ]]; then rm -f $TEST_BASE_DIR/${ZPOOL_VERSION_1_FILES%.*} fi } log_assert "Verify that copies cannot be set with pool version 1" log_onexit cleanup log_must cp $STF_SUITE/tests/functional/cli_root/zpool_upgrade/blockfiles/$ZPOOL_VERSION_1_FILES $TEST_BASE_DIR log_must bunzip2 $TEST_BASE_DIR/$ZPOOL_VERSION_1_FILES log_must zpool import -d $TEST_BASE_DIR $ZPOOL_VERSION_1_NAME log_must zfs create $ZPOOL_VERSION_1_NAME/$TESTFS log_must zfs create -V 1m $ZPOOL_VERSION_1_NAME/$TESTVOL block_device_wait for val in 3 2 1; do for ds in $ZPOOL_VERSION_1_NAME/$TESTFS $ZPOOL_VERSION_1_NAME/$TESTVOL; do log_mustnot zfs set copies=$val $ds done for ds in $ZPOOL_VERSION_1_NAME/$TESTFS1 $ZPOOL_VERSION_1_NAME/$TESTVOL1; do log_mustnot zfs create -o copies=$val $ds done done log_pass "Verification pass: copies cannot be set with pool version 1. " zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/zfs_copies_006_pos.0000644000000000000000000000007413612141517031415 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.782660409 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/zfs_copies_006_pos.ksh0000755016037001603700000000370013612141517032123 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_copies/zfs_copies.kshlib # # DESCRIPTION: # Verify that the volume space used by multiple copies is charged correctly # # STRATEGY: # 1. Create volume # 2. Create UFS filesystem based on the volume # 3. Set the copies property of volume to 1,2 or 3 # 4. Copy specified size data into each filesystem # 5. Verify that the volume space is charged as expected # verify_runnable "global" function cleanup { if ismounted $mntp $NEWFS_DEFAULT_FS ; then log_must umount $mntp fi if datasetexists $vol; then log_must zfs destroy $vol fi if [[ -d $mntp ]]; then rm -rf $mntp fi } log_assert "Verify that ZFS volume space used by multiple copies is charged correctly." log_onexit cleanup mntp=$FS_MNTPOINT vol=$TESTPOOL/$TESTVOL1 if [[ ! -d $mntp ]]; then mkdir -p $mntp fi for copies in 1 2 3; do do_vol_test $NEWFS_DEFAULT_FS $copies $mntp done log_pass "The volume space used by multiple copies is charged correctly as expected. " zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002030031 xustar000000000000000030 mtime=1579730434.935316799 30 atime=1579730454.773953759 30 ctime=1579730476.786660537 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_copies/Makefile.in0000664016037001603700000006162713612143002030051 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_copies DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_copies ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_copies_001_pos.ksh \ zfs_copies_002_pos.ksh \ zfs_copies_003_pos.ksh \ zfs_copies_004_neg.ksh \ zfs_copies_005_neg.ksh \ zfs_copies_006_pos.ksh dist_pkgdata_DATA = \ zfs_copies.cfg \ zfs_copies.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_copies/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_copies/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs0000644000000000000000000000013213612143054024354 xustar000000000000000030 mtime=1579730476.516651869 30 atime=1579730489.092055645 30 ctime=1579730476.516651869 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/0000775016037001603700000000000013612143054024435 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/PaxHeaders.151519/zfs_002_pos.ksh0000644000000000000000000000007413612141517027213 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.509651643 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/zfs_002_pos.ksh0000755016037001603700000000610113612141517027211 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # With ZFS_ABORT set, all zfs commands should be able to abort and generate a # core file. # # STRATEGY: # 1. Create an array of zfs command # 2. Execute each command in the array # 3. Verify the command aborts and generate a core file # verify_runnable "both" function cleanup { unset ZFS_ABORT if [[ -d $corepath ]]; then rm -rf $corepath fi for ds in $fs1 $fs $ctr; do if datasetexists $ds; then log_must zfs destroy -rRf $ds fi done } log_assert "With ZFS_ABORT set, all zfs commands can abort and generate a " \ "core file." log_onexit cleanup # Preparation work for testing corepath=$TESTDIR/core if [[ -d $corepath ]]; then rm -rf $corepath fi log_must mkdir $corepath ctr=$TESTPOOL/$TESTCTR log_must zfs create $ctr fs=$ctr/$TESTFS fs1=$ctr/$TESTFS1 snap=$fs@$TESTSNAP clone=$ctr/$TESTCLONE streamf=$corepath/s.$$ typeset cmds=("create $fs" "list $fs" "snapshot $snap" "set snapdir=hidden $fs" \ "get snapdir $fs" "rollback $snap" "inherit snapdir $fs" \ "rename $fs $fs-new" "rename $fs-new $fs" "unmount $fs" \ "mount $fs" "share $fs" "unshare $fs" "send $snap \>$streamf" \ "receive $fs1 \<$streamf" "clone $snap $clone" "promote $clone" \ "promote $fs" "destroy -rRf $fs") typeset badparams=("" "create" "destroy" "snapshot" "rollback" "clone" \ "promote" "rename" "list -*" "set" "get -*" "inherit" "mount -A" \ "unmount" "share" "unshare" "send" "receive") if is_linux; then ulimit -c unlimited echo "$corepath/core.zfs" >/proc/sys/kernel/core_pattern echo 0 >/proc/sys/kernel/core_uses_pid export ASAN_OPTIONS="abort_on_error=1:disable_coredump=0" else log_must coreadm -p ${corepath}/core.%f fi log_must export ZFS_ABORT=yes for subcmd in "${cmds[@]}" "${badparams[@]}"; do zfs $subcmd >/dev/null 2>&1 && log_fail "$subcmd passed incorrectly." corefile=${corepath}/core.zfs if [[ ! -e $corefile ]]; then log_fail "zfs $subcmd cannot generate core file with " \ "ZFS_ABORT set." fi log_must rm -f $corefile done log_pass "With ZFS_ABORT set, zfs command can abort and generate core file " \ "as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026501 xustar000000000000000030 atime=1579730434.687308835 30 ctime=1579730476.514651803 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/Makefile.am0000644016037001603700000000026613607166133026502 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_001_neg.ksh \ zfs_002_pos.ksh \ zfs_003_neg.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133026314 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.502651419 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/setup.ksh0000755016037001603700000000173713607166133026324 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026603 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.505651515 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/cleanup.ksh0000755016037001603700000000171013607166133026602 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/PaxHeaders.151519/zfs_003_neg.ksh0000644000000000000000000000007413607166133027171 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.512651739 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/zfs_003_neg.ksh0000755016037001603700000000340013607166133027166 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # zfs command will failed with unexpected scenarios: # (1) ZFS_DEV cannot be opened # (2) MNTTAB cannot be opened # # STRATEGY: # 1. Create an array of zfs command # 2. Execute each command in the array # 3. Verify the command aborts and generate a core file # verify_runnable "global" log_assert "zfs fails with unexpected scenario." #verify zfs failed if ZFS_DEV cannot be opened ZFS_DEV=/dev/zfs if is_linux; then # On Linux, we use /proc/self/mounts, which cannot be moved. MNTTAB= fi for file in $ZFS_DEV $MNTTAB; do if [[ -e $file ]]; then mv $file ${file}.bak fi for cmd in "" "list" "get all" "mount"; do log_mustnot eval "zfs $cmd >/dev/null 2>&1" done mv ${file}.bak $file done log_pass "zfs fails with unexpected scenario as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/PaxHeaders.151519/zfs_001_neg.ksh0000644000000000000000000000007413607166133027167 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.507651579 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/zfs_001_neg.ksh0000755016037001603700000000530613607166133027173 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Try each zfs(1) sub-command without parameters to make sure # it returns an error. # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute the sub-command # 3. Verify an error is returned. # verify_runnable "both" set -A args "" "create" "create -s" "create -V" "create -s -V" \ "destroy" "destroy -f" "destroy -r" "destroy -R" "destroy -rRf" \ "snapshot" "snapshot -r" \ "rollback" "rollback -r" "rollback -R" "rollback -f" "rollback -rRf" \ "clone" "clone -p" "promote" "rename" "rename -p" "rename -r" "list blah" \ "set" "get" "get -rHp" "get -o" "get -s" \ "inherit" "inherit -r" "quota=" \ "set reservation=" "set atime=" "set checksum=" "set compression=" \ "set type=" "set creation=" "set used=" "set available=" "set referenced=" \ "set compressratio=" "set mounted=" "set origin=" "set quota=" \ "set reservation=" "set volsize=" " set volblocksize=" "set recordsize=" \ "set mountpoint=" "set devices=" "set exec=" "set setuid=" "set readonly=" \ "set zoned=" "set snapdir=" "set aclmode=" "set aclinherit=" \ "set quota=blah" "set reservation=blah" "set atime=blah" "set checksum=blah" \ "set compression=blah" \ "upgrade blah" "mount blah" "mount -o" \ "umount blah" "unmount" "unmount blah" "unmount -f" \ "share" "unshare" "send" "send -i" "receive" "receive -d" "receive -vnF" \ "recv" "recv -d" "recv -vnF" "allow" "unallow" \ "blah blah" "-%" "--" "--?" "-*" "-=" log_assert "Badly-formed zfs sub-command should return an error." typeset -i i=0 while (( $i < ${#args[*]} )); do log_mustnot zfs ${args[i]} ((i = i + 1)) done log_pass "Badly formed zfs sub-commands fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002026467 xustar000000000000000030 mtime=1579730434.723309991 30 atime=1579730454.989960693 30 ctime=1579730476.516651869 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs/Makefile.in0000664016037001603700000005732113612143002026503 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_001_neg.ksh \ zfs_002_pos.ksh \ zfs_003_neg.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_get0000644000000000000000000000013213612143057025557 xustar000000000000000030 mtime=1579730479.370743508 30 atime=1579730489.092055645 30 ctime=1579730479.370743508 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/0000775016037001603700000000000013612143057025640 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/zpool_get_parsable.c0000644000000000000000000000007413612141512031652 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.349742833 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_parsable.cfg0000644016037001603700000000211713612141512032165 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2014 by Delphix. All rights reserved. # # Set the expected properties of zpool typeset -a properties=("allocated" "capacity" "expandsize" "free" "freeing" "leaked" "size") zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/zpool_get_002_pos.ks0000644000000000000000000000007413607166133031450 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.359743155 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_002_pos.ksh0000755016037001603700000000473013607166133031624 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_get/zpool_get.cfg # # DESCRIPTION: # # zpool get all works as expected # # STRATEGY: # # 1. Using zpool get, retrieve all default values # 2. Verify that the header is printed # 3. Verify that we can see all the properties we expect to see # 4. Verify that the total output contains just those properties + header. # # Test for those properties are expected to check whether their # default values are sane, or whether they can be changed with zpool set. # function cleanup { rm -f $values } log_onexit cleanup log_assert "Zpool get all works as expected" typeset -i i=0; typeset values=$TEST_BASE_DIR/values.$$ if ! is_global_zone ; then TESTPOOL=${TESTPOOL%%/*} fi log_must zpool get all $TESTPOOL zpool get all $TESTPOOL > $values log_note "Checking zpool get all output for a header." grep ^"NAME " $values > /dev/null 2>&1 if [ $? -ne 0 ] then log_fail "The header was not printed from zpool get all" fi while [ $i -lt "${#properties[@]}" ] do log_note "Checking for ${properties[$i]} property" grep "$TESTPOOL *${properties[$i]}" $values > /dev/null 2>&1 if [ $? -ne 0 ] then log_fail "zpool property ${properties[$i]} was not found\ in pool output." fi i=$(( $i + 1 )) done # increment the counter to include the header line i=$(( $i + 1 )) COUNT=$(wc $values | awk '{print $1}') if [ $i -ne $COUNT ] then log_fail "Found zpool features not in the zpool_get test config $i/$COUNT." fi log_pass "Zpool get all works as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/zpool_get_004_neg.ks0000644000000000000000000000007413607166133031422 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.363743283 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_004_neg.ksh0000755016037001603700000000322713607166133031576 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # Malformed zpool get commands are rejected # # STRATEGY: # # 1. Run several different "zpool get" commands that should fail. # log_assert "Malformed zpool get commands are rejected" if ! is_global_zone ; then TESTPOOL=${TESTPOOL%%/*} fi set -A arguments "$TESTPOOL $TESTPOOL" "$TESTPOOL rubbish" "-v $TESTPOOL" \ "nosuchproperty $TESTPOOL" "--$TESTPOOL" "all all" \ "type $TESTPOOL" "usage: $TESTPOOL" "bootfs $TESTPOOL@" \ "bootfs,bootfs $TESTPOOL" "name $TESTPOOL" "t%d%s" \ "bootfs,delegation $TESTPOOL" "delegation $TESTPOOL@" for arg in $arguments do log_mustnot zpool get $arg done log_pass "Malformed zpool get commands are rejected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/zpool_get_003_pos.ks0000644000000000000000000000007413607166133031451 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.361743219 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_003_pos.ksh0000755016037001603700000000371513607166133031627 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_get/zpool_get.cfg # # DESCRIPTION: # # Zpool get returns values for all known properties # # STRATEGY: # 1. For all properties, verify zpool get retrieves a value # function cleanup { rm -f $values } log_assert "Zpool get returns values for all known properties" log_onexit cleanup if ! is_global_zone ; then TESTPOOL=${TESTPOOL%%/*} fi typeset -i i=0; typeset values=$TEST_BASE_DIR/values.$$ while [ $i -lt "${#properties[@]}" ] do log_note "Checking for ${properties[$i]} property" log_must eval "zpool get ${properties[$i]} $TESTPOOL > $values" grep "${properties[$i]}" $values > /dev/null 2>&1 if [ $? -ne 0 ] then log_fail "${properties[$i]} not seen in output" fi grep "^NAME " $values > /dev/null 2>&1 # only need to check this once. if [ $i -eq 0 ] && [ $? -ne 0 ] then log_fail "Header not seen in zpool get output" fi i=$(( $i + 1 )) done log_pass "Zpool get returns values for all known properties" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141512027667 xustar000000000000000030 atime=1579730436.789376326 30 ctime=1579730479.368743443 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/Makefile.am0000644016037001603700000000047513612141512027672 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_get dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_get_001_pos.ksh \ zpool_get_002_pos.ksh \ zpool_get_003_pos.ksh \ zpool_get_004_neg.ksh \ zpool_get_005_pos.ksh dist_pkgdata_DATA = \ zpool_get.cfg zpool_get_parsable.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/zpool_get.cfg0000644000000000000000000000007413607166147030335 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.347742769 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg0000644016037001603700000000443013607166147030333 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2014 by Delphix. All rights reserved. # Copyright 2016 Nexenta Systems, Inc. All rights reserved. # # Set the expected properties of zpool typeset -a properties=( "size" "capacity" "altroot" "health" "guid" "load_guid" "version" "bootfs" "delegation" "autoreplace" "cachefile" "checkpoint" "failmode" "listsnapshots" "autoexpand" "dedupditto" "dedupratio" "free" "allocated" "readonly" "comment" "expandsize" "freeing" "fragmentation" "leaked" "multihost" "autotrim" "feature@async_destroy" "feature@empty_bpobj" "feature@lz4_compress" "feature@multi_vdev_crash_dump" "feature@spacemap_histogram" "feature@enabled_txg" "feature@hole_birth" "feature@extensible_dataset" "feature@embedded_data" "feature@bookmarks" "feature@filesystem_limits" "feature@large_blocks" "feature@sha512" "feature@skein" "feature@edonr" "feature@device_removal" "feature@obsolete_counts" "feature@zpool_checkpoint" "feature@spacemap_v2" ) # Additional properties added for Linux. if is_linux; then properties+=( "ashift" "feature@large_dnode" "feature@userobj_accounting" "feature@encryption" "feature@project_quota" "feature@allocation_classes" "feature@resilver_defer" "feature@bookmark_v2" ) fi zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/zpool_get_005_pos.ks0000644000000000000000000000007413612141512031441 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.366743379 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_005_pos.ksh0000755016037001603700000000445213612141512031616 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2014 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_get/zpool_get_parsable.cfg # # DESCRIPTION: # # Zpool get returns parsable values for all known parsable properties # # STRATEGY: # 1. For all parsable properties, verify zpool get -p returns a parsable value # if ! is_global_zone ; then TESTPOOL=${TESTPOOL%%/*} fi typeset -i i=0 while [[ $i -lt "${#properties[@]}" ]]; do log_note "Checking for parsable ${properties[$i]} property" log_must eval "zpool get -p ${properties[$i]} $TESTPOOL >/tmp/value.$$" grep "${properties[$i]}" /tmp/value.$$ >/dev/null 2>&1 if [[ $? -ne 0 ]]; then log_fail "${properties[$i]} not seen in output" fi typeset v=$(grep "${properties[$i]}" /tmp/value.$$ | awk '{print $3}') log_note "${properties[$i]} has a value of $v" # Determine if this value is a valid number, result in return code log_must test -n "$v" expr $v + 0 >/dev/null 2>&1 # All properties must be positive integers in order to be # parsable (i.e. a return code of 0 or 1 from expr above). # The only exception is "expandsize", which may be "-". if [[ ! ($? -eq 0 || $? -eq 1 || \ ("${properties[$i]}" = "expandsize" && "$v" = "-")) ]]; then log_fail "${properties[$i]} is not parsable" fi i=$(( $i + 1 )) done rm /tmp/value.$$ log_pass "Zpool get returns parsable values for all known parsable properties" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/setup.ksh0000644000000000000000000000007313607166133027513 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730479.35274293 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/setup.ksh0000755016037001603700000000206113607166133027513 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030003 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.354742995 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/cleanup.ksh0000755016037001603700000000203313607166133030001 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/zpool_get_001_pos.ks0000644000000000000000000000007413607166133031447 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.356743059 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get_001_pos.ksh0000755016037001603700000000317013607166133031620 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # Zpool get usage message is displayed when called with no arguments # # STRATEGY: # 1. Run zpool get # 2. Check that exit status is set to 2 # 3. Check usage message contains text "usage" # log_assert "Zpool get usage message is displayed when called with no arguments." zpool get > /dev/null 2>&1 RET=$? if [ $RET != 2 ] then log_fail "\"zpool get\" exit status $RET should be equal to 2." fi OUTPUT=$(zpool get 2>&1 | grep -i usage) RET=$? if [ $RET != 0 ] then log_fail "Usage message for zpool get did not contain the word 'usage'." fi log_pass "Zpool get usage message is displayed when called with no arguments." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004027671 xustar000000000000000030 mtime=1579730436.827377547 30 atime=1579730455.833987793 30 ctime=1579730479.370743508 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_get/Makefile.in0000664016037001603700000006156513612143004027712 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_get DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_get ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_get_001_pos.ksh \ zpool_get_002_pos.ksh \ zpool_get_003_pos.ksh \ zpool_get_004_neg.ksh \ zpool_get_005_pos.ksh dist_pkgdata_DATA = \ zpool_get.cfg zpool_get_parsable.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_get/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_get/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool0000644000000000000000000000013013612143056024715 xustar000000000000000029 mtime=1579730478.66072071 30 atime=1579730489.092055645 29 ctime=1579730478.66072071 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/0000775016037001603700000000000013612143056025000 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/PaxHeaders.151519/zpool_001_neg.ksh0000644000000000000000000000007413612141513030060 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.652720454 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_001_neg.ksh0000755016037001603700000000416013612141513030061 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A badly formed sub-command passed to zpool(1) should # return an error. # # STRATEGY: # 1. Create an array containing each zpool sub-command name. # 2. For each element, execute the sub-command. # 3. Verify it returns an error. # verify_runnable "both" set -A args "" "create" "add" "destroy" "import fakepool" \ "export fakepool" "create fakepool" "add fakepool" \ "create mirror" "create raidz" "create raidz1" \ "create mirror fakepool" "create raidz fakepool" \ "create raidz1 fakepool" "create raidz2 fakepool" \ "create fakepool mirror" "create fakepool raidz" \ "create fakepool raidz1" "create fakepool raidz2" \ "add fakepool mirror" "add fakepool raidz" \ "add fakepool raidz1" "add fakepool raidz2" \ "add mirror fakepool" "add raidz fakepool" \ "add raidz1 fakepool" "add raidz2 fakepool" \ "setvprop" "blah blah" "-%" "--" "--?" "-*" "-=" log_assert "Execute zpool sub-command without proper parameters." typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool ${args[i]} ((i = i + 1)) done log_pass "Badly formed zpool sub-commands fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/PaxHeaders.151519/zpool_003_pos.ksh0000644000000000000000000000007413607166147030130 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.656720582 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_003_pos.ksh0000755016037001603700000000406013607166147030130 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify debugging features of zpool such as ABORT and freeze/unfreeze # should run successfully. # # STRATEGY: # 1. Create an array containing each zpool options. # 2. For each element, execute the zpool command. # 3. Verify it run successfully. # verify_runnable "both" log_assert "Debugging features of zpool should succeed." log_must zpool -? > /dev/null 2>&1 if is_global_zone ; then log_must zpool freeze $TESTPOOL else log_mustnot zpool freeze $TESTPOOL log_mustnot zpool freeze ${TESTPOOL%%/*} fi log_mustnot zpool freeze fakepool # Remove corefile possibly left by previous failing run of this test. [[ -f core ]] && log_must rm -f core if is_linux; then ulimit -c unlimited echo "core" >/proc/sys/kernel/core_pattern echo 0 >/proc/sys/kernel/core_uses_pid export ASAN_OPTIONS="abort_on_error=1:disable_coredump=0" fi ZFS_ABORT=1; export ZFS_ABORT zpool > /dev/null 2>&1 unset ZFS_ABORT [[ -f core ]] || log_fail "zpool did not dump core by request." [[ -f core ]] && log_must rm -f core log_pass "Debugging features of zpool succeed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166147027046 xustar000000000000000029 atime=1579730436.25435915 30 ctime=1579730478.658720646 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/Makefile.am0000644016037001603700000000027613607166147027051 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_001_neg.ksh \ zpool_002_pos.ksh \ zpool_003_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147026662 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.648720326 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/setup.ksh0000755016037001603700000000173713607166147026672 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007313607166133027143 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.65072039 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/cleanup.ksh0000755016037001603700000000171013607166133027143 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143004027031 xustar000000000000000030 mtime=1579730436.289360273 30 atime=1579730456.019993765 29 ctime=1579730478.66072071 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/Makefile.in0000664016037001603700000005733713612143004027055 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_001_neg.ksh \ zpool_002_pos.ksh \ zpool_003_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/PaxHeaders.151519/zpool_002_pos.ksh0000644000000000000000000000007413607166147030127 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.654720518 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool/zpool_002_pos.ksh0000755016037001603700000000571713607166147030141 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # With ZFS_ABORT set, all zpool commands should be able to abort and generate a core file. # # STRATEGY: # 1. Create an array of zpool command # 2. Execute each command in the array # 3. Verify the command aborts and generate a core file # verify_runnable "global" function cleanup { unset ZFS_ABORT if [[ -d $corepath ]]; then rm -rf $corepath fi if poolexists $pool; then log_must zpool destroy -f $pool fi } log_assert "With ZFS_ABORT set, all zpool commands can abort and generate a core file." log_onexit cleanup #preparation work for testing corepath=$TESTDIR/core if [[ -d $corepath ]]; then rm -rf $corepath fi mkdir $corepath pool=pool.$$ vdev1=$TESTDIR/file1 vdev2=$TESTDIR/file2 vdev3=$TESTDIR/file3 for vdev in $vdev1 $vdev2 $vdev3; do mkfile $MINVDEVSIZE $vdev done set -A cmds "create $pool mirror $vdev1 $vdev2" "list $pool" "iostat $pool" \ "status $pool" "upgrade $pool" "get delegation $pool" "set delegation=off $pool" \ "export $pool" "import -d $TESTDIR $pool" "offline $pool $vdev1" \ "online $pool $vdev1" "clear $pool" "detach $pool $vdev2" \ "attach $pool $vdev1 $vdev2" "replace $pool $vdev2 $vdev3" \ "scrub $pool" "destroy -f $pool" set -A badparams "" "create" "destroy" "add" "remove" "list *" "iostat" "status" \ "online" "offline" "clear" "attach" "detach" "replace" "scrub" \ "import" "export" "upgrade" "history -?" "get" "set" if is_linux; then ulimit -c unlimited echo "$corepath/core.zpool" >/proc/sys/kernel/core_pattern echo 0 >/proc/sys/kernel/core_uses_pid export ASAN_OPTIONS="abort_on_error=1:disable_coredump=0" else coreadm -p ${corepath}/core.%f fi export ZFS_ABORT=yes for subcmd in "${cmds[@]}" "${badparams[@]}"; do corefile=${corepath}/core.zpool zpool $subcmd >/dev/null 2>&1 if [[ ! -e $corefile ]]; then log_fail "zpool $subcmd cannot generate core file with ZFS_ABORT set." fi rm -f $corefile done log_pass "With ZFS_ABORT set, zpool command can abort and generate core file as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_events0000644000000000000000000000013213612143057026304 xustar000000000000000030 mtime=1579730479.176737279 30 atime=1579730489.092055645 30 ctime=1579730479.176737279 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/0000775016037001603700000000000013612143057026365 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/zpool_events_erro0000644000000000000000000000007413607166133032073 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.172737151 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_errors.ksh0000755016037001603700000001012313607166133033221 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Verify the number of IO and checksum events match the error counters # in zpool status. # # STRATEGY: # 1. Create a raidz or mirror pool # 2. Inject read/write IO errors or checksum errors # 3. Verify the number of errors in zpool status match the corresponding # number of error events. # 4. Repeat for all combinations of raidz/mirror and io/checksum errors. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" MOUNTDIR=$TEST_BASE_DIR/mount VDEV1=$TEST_BASE_DIR/file1 VDEV2=$TEST_BASE_DIR/file2 VDEV3=$TEST_BASE_DIR/file3 POOL=error_pool FILESIZE=$((20 * 1024 * 1024)) OLD_CHECKSUMS=$(get_tunable zfs_checksum_events_per_second) OLD_LEN_MAX=$(get_tunable zfs_zevent_len_max) function cleanup { log_must set_tunable64 zfs_checksum_events_per_second $OLD_CHECKSUMS log_must set_tunable64 zfs_zevent_len_max $OLD_LEN_MAX log_must zinject -c all log_must zpool events -c if poolexists $POOL ; then log_must destroy_pool $POOL fi log_must rm -f $VDEV1 $VDEV2 $VDEV3 } log_assert "Check that the number of zpool errors match the number of events" log_onexit cleanup # Set our thresholds high so we never ratelimit or drop events. set_tunable64 zfs_checksum_events_per_second 20000 set_tunable64 zfs_zevent_len_max 20000 log_must truncate -s $MINVDEVSIZE $VDEV1 $VDEV2 $VDEV3 log_must mkdir -p $MOUNTDIR # Run error test on a specific type of pool # # $1: pool - raidz, mirror # $2: test type - corrupt (checksum error), io # $3: read, write function do_test { POOLTYPE=$1 ERR=$2 RW=$3 log_note "Testing $ERR $RW on $POOLTYPE" log_must zpool create -f -m $MOUNTDIR -o failmode=continue $POOL $POOLTYPE $VDEV1 $VDEV2 $VDEV3 log_must zpool events -c log_must zfs set compression=off $POOL if [ "$RW" == "read" ] ; then log_must mkfile $FILESIZE $MOUNTDIR/file fi log_must zinject -d $VDEV1 -e $ERR -T $RW -f 100 $POOL if [ "$RW" == "write" ] ; then log_must mkfile $FILESIZE $MOUNTDIR/file log_must zpool sync $POOL else log_must zpool scrub $POOL wait_scrubbed $POOL fi log_must zinject -c all # Wait for the pool to settle down and finish resilvering (if # necessary). We want the errors to stop incrementing before we # check the error and event counts. while is_pool_resilvering $POOL ; do sleep 1 done out="$(zpool status -p | grep $VDEV1)" if [ "$ERR" == "corrupt" ] ; then events=$(zpool events | grep checksum | wc -l) val=$(echo "$out" | awk '{print $5}') str="checksum" elif [ "$ERR" == "io" ] ; then allevents=$(zpool events | grep io) events=$(echo "$allevents" | wc -l) if [ "$RW" == "read" ] ; then str="read IO" val=$(echo "$out" | awk '{print $3}') else str="write IO" val=$(echo "$out" | awk '{print $4}') fi fi if [ "$val" == "0" ] || [ "$events" == "" ] ; then log_fail "Didn't see any errors or events ($val/$events)" fi if [ "$val" != "$events" ] ; then log_fail "$val $POOLTYPE $str errors != $events events" else log_note "$val $POOLTYPE $str errors == $events events" fi log_must zpool destroy $POOL } # Test all types of errors on mirror and raidz pools for pooltype in mirror raidz ; do do_test $pooltype corrupt read do_test $pooltype io read do_test $pooltype io write done log_pass "The number of errors matched the number of events" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030426 xustar000000000000000030 atime=1579730436.627371125 30 ctime=1579730479.174737215 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/Makefile.am0000644016037001603700000000051713607166133030426 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_events dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_events_clear.ksh \ zpool_events_cliargs.ksh \ zpool_events_follow.ksh \ zpool_events_poolname.ksh \ zpool_events_errors.ksh dist_pkgdata_DATA = \ zpool_events.cfg \ zpool_events.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030241 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.157736669 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/setup.ksh0000755016037001603700000000110313607166133030234 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.159736733 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/cleanup.ksh0000755016037001603700000000104513607166133030530 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/zpool_events_foll0000644000000000000000000000007413607166133032060 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.167736989 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_follow.ksh0000755016037001603700000000337713607166133033224 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_events/zpool_events.kshlib # # DESCRIPTION: # 'zpool events -f' should successfully follow new events. # # STRATEGY: # 1. Clear all ZFS events # 2. Run 'zpool events -f' in background, saving its output to a temporary file # 3. Generate some ZFS events # 4. Verify 'zpool events -f' successfully recorded these new events # verify_runnable "both" function cleanup { [[ -n $pid ]] && kill $pid 2>/dev/null rm -f $EVENTS_FILE } log_assert "'zpool events -f' should follow new events." log_onexit cleanup EVENTS_FILE="$TESTDIR/zpool_events.$$" # 1. Clear all ZFS events log_must zpool events -c # 2. Run 'zpool events -f' in background, saving its output to a temporary file log_must eval "zpool events -H -f > $EVENTS_FILE &" pid=$! # 3. Generate some ZFS events for i in `seq 1 $EVENTS_NUM`; do log_must zpool clear $TESTPOOL done # wait a bit to allow the kernel module to process new events zpool_events_settle # 4. Verify 'zpool events -f' successfully recorded these new events EVENTS_LOG="$(cat $EVENTS_FILE | wc -l)" if [[ "$EVENTS_LOG" != "$EVENTS_NUM" ]]; then log_fail "Unexpected number of events: $EVENTS_LOG != $EVENTS_NUM" fi log_pass "'zpool events -f' successfully follows new events." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/zpool_events.cfg0000644000000000000000000000007413607166133031602 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.153736541 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events.cfg0000644016037001603700000000077013607166133031603 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # export EVENTS_NUM=42 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/zpool_events.kshl0000644000000000000000000000007413607166133032004 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.155736605 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events.kshlib0000644016037001603700000000206113607166133032313 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_events/zpool_events.cfg # # Wait to allow the kernel module to process ZFS events until we reach $eventnum # or a timeout of $timeout seconds expire, whichever comes first # function zpool_events_settle # [timeout] { typeset eventnum="${1:-$EVENTS_NUM}" typeset timeout="${2:-3}" typeset -i count typeset -i i=0 while [[ $i -lt $timeout ]]; do count=$(zpool events -H | wc -l) if [[ $count -ge $eventnum ]]; then break fi i=$((i+1)) sleep 1 done log_note "waited $i seconds" } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/zpool_events_clia0000644000000000000000000000007413607166133032034 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.164736893 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_cliargs.ksh0000755016037001603700000000460013607166133033334 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zpool events' should only work with supported options. # # STRATEGY: # 1. Verify every supported option is accepted # 2. Verify supported options raise an error with unsupported arguments # 3. Verify other unsupported options raise an error # verify_runnable "both" function log_must_follow # { typeset command="$1" log_must eval "$command > /dev/null &" pid=$! sleep 3 kill $pid if [[ $? -ne 0 ]]; then log_fail "'$command' does not work as expected." else log_note "'$command' works successfully." fi } log_assert "'zpool events' should only work with supported options." typeset goodopts=("" "-v" "-H" "-f" "-vH" "-vf" "-Hf" "-vHf") typeset badopts=("-vV" "-Hh" "-fF" "-cC" "-x" "-o" "-") # 1. Verify every supported option is accepted for opt in ${goodopts[@]} do # when in 'follow' mode we can't use log_must() if [[ $opt =~ 'f' ]]; then log_must_follow "zpool events $opt" log_must_follow "zpool events $opt $TESTPOOL" else log_must eval "zpool events $opt > /dev/null" log_must eval "zpool events $opt $TESTPOOL > /dev/null" fi done # 2.1 Verify supported options raise an error with unsupported arguments for opt in ${goodopts[@]} do log_mustnot zpool events $opt "/tmp/" log_mustnot zpool events $opt "$TESTPOOL/fs" log_mustnot zpool events $opt "$TESTPOOL@snap" log_mustnot zpool events $opt "$TESTPOOL#bm" log_mustnot zpool events $opt "$TESTPOOL" "$TESTPOOL" done # 2.2 Additionally, 'zpool events -c' does not support any other option|argument log_must eval "zpool events -c > /dev/null" log_mustnot zpool events -c "$TESTPOOL" for opt in ${goodopts[@]} do log_mustnot zpool events -c $opt done # 3. Verify other unsupported options raise an error for opt in ${badopts[@]} do log_mustnot zpool events $opt log_mustnot zpool events $opt "$TESTPOOL" done log_pass "'zpool events' only works with supported options." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030416 xustar000000000000000030 mtime=1579730436.664372312 30 atime=1579730455.743984903 30 ctime=1579730479.176737279 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/Makefile.in0000664016037001603700000006162013612143004030427 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_events DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_events ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_events_clear.ksh \ zpool_events_cliargs.ksh \ zpool_events_follow.ksh \ zpool_events_poolname.ksh \ zpool_events_errors.ksh dist_pkgdata_DATA = \ zpool_events.cfg \ zpool_events.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_events/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_events/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/zpool_events_clea0000644000000000000000000000007413612141513032017 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.162736829 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_clear.ksh0000755016037001603700000000344713612141513032775 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_events/zpool_events.kshlib # # DESCRIPTION: # 'zpool events -c' should successfully clear events. # # STRATEGY: # 1. Clear all ZFS events # 2. Generate some new ZFS events # 3. Verify 'zpool events -c' successfully clears new events # verify_runnable "both" log_assert "'zpool events -c' should successfully clear events." # 1. Clear all ZFS events # This is needed because we may already over the max number or events queued # (zfs_zevent_len_max) generated by previous tests: generating $EVENTS_NUM new # events and then counting them is racy and leads to failures, so start from 0. log_must zpool events -c # 2. Generate some new ZFS events for i in `seq 1 $EVENTS_NUM`; do log_must zpool clear $TESTPOOL done # wait a bit to allow the kernel module to process new events zpool_events_settle EVENTS_NUM="$(zpool events -H | wc -l)" # 3. Verify 'zpool events -c' successfully clear new events CLEAR_OUTPUT="$(zpool events -c)" if [[ "$CLEAR_OUTPUT" != "cleared $EVENTS_NUM events" ]]; then log_fail "Failed to clear $EVENTS_NUM events: $CLEAR_OUTPUT" fi EVENTS_NUM="$(zpool events -H | wc -l)" if [[ $EVENTS_NUM -ne 0 ]]; then log_fail "Unexpected events number: $EVENTS_NUM != 0" fi log_pass "'zpool events -c' successfully clears events." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/PaxHeaders.151519/zpool_events_pool0000644000000000000000000000007413607166133032075 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.169737054 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_poolname.ksh0000755016037001603700000000400413607166133033520 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_events/zpool_events.kshlib # # DESCRIPTION: # 'zpool events poolname' should only display events from the chosen pool. # # STRATEGY: # 1. Create an additional pool # 2. Clear all ZFS events # 3. Generate some ZFS events on both pools # 4. Verify 'zpool events poolname' successfully display events # verify_runnable "both" function cleanup { destroy_pool $NEWPOOL rm -f $DISK } log_assert "'zpool events poolname' should only display events from poolname." log_onexit cleanup NEWPOOL="newpool" DISK="$TEST_BASE_DIR/$NEWPOOL.dat" # 1. Create an additional pool log_must truncate -s $MINVDEVSIZE $DISK log_must zpool create $NEWPOOL $DISK # 2. Clear all ZFS events log_must zpool events -c # 3. Generate some ZFS events on both pools for i in `seq 1 $EVENTS_NUM`; do log_must zpool clear $TESTPOOL done for i in `seq 1 $EVENTS_NUM`; do log_must zpool clear $NEWPOOL done # wait a bit to allow the kernel module to process new events zpool_events_settle # 4. Verify 'zpool events poolname' successfully display events zpool events -v $TESTPOOL | awk -v POOL=$TESTPOOL '/pool = / {if ($3 != "\""POOL"\"") exit 1}' if [[ $? -ne 0 ]]; then log_fail "Unexpected events for pools other than $TESTPOOL" fi zpool events -v $NEWPOOL | awk -v POOL=$NEWPOOL '/pool = / {if ($3 != "\""POOL"\"") exit 1}' if [[ $? -ne 0 ]]; then log_fail "Unexpected events for pools other than $NEWPOOL" fi log_pass "'zpool events poolname' display events only from the chosen pool." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_remove0000644000000000000000000000013213612143057026275 xustar000000000000000030 mtime=1579730479.941761843 30 atime=1579730489.092055645 30 ctime=1579730479.941761843 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/0000775016037001603700000000000013612143057026356 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/PaxHeaders.151519/zpool_remove_003_0000644000000000000000000000007413607166133031547 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.937761714 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/zpool_remove_003_pos.ksh0000755016037001603700000000443313607166133033061 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_remove/zpool_remove.cfg # # DESCRIPTION: # Verify that 'zpool can remove hotspare devices from pool when it state # switch from active to inactive' # # STRATEGY: # 1. Create a hotspare pool # 2. Try to replace the inactive hotspare device to active device in the pool # 3. Try to detach active (spare) device to make it inactive # 3. Verify that the zpool remove succeed. # function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi } log_onexit cleanup typeset disk=${DISK} typeset spare_devs1="${disk}${SLICE_PREFIX}${SLICE0}" typeset spare_devs2="${disk}${SLICE_PREFIX}${SLICE1}" typeset spare_devs3="${disk}${SLICE_PREFIX}${SLICE3}" typeset spare_devs4="${disk}${SLICE_PREFIX}${SLICE4}" log_assert "zpool remove can remove hotspare device which state go though" \ " active to inactive in pool" log_note "Check spare device which state go through active to inactive" log_must zpool create $TESTPOOL $spare_devs1 $spare_devs2 spare \ $spare_devs3 $spare_devs4 log_must zpool replace $TESTPOOL $spare_devs2 $spare_devs3 log_mustnot zpool remove $TESTPOOL $spare_devs3 log_must zpool detach $TESTPOOL $spare_devs3 log_must zpool remove $TESTPOOL $spare_devs3 log_pass "'zpool remove device passed as expected.'" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/PaxHeaders.151519/zpool_remove.cfg0000644000000000000000000000007413607166133031564 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.925761329 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/zpool_remove.cfg0000644016037001603700000000264713607166133031572 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export DISK=${DISKS%% *} export SIZE="200m" export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') export DISKSARRAY=$DISKS if is_linux; then set_device_dir set_slice_prefix export SLICE0=1 export SLICE1=2 export SLICE2=3 export SLICE3=4 export SLICE4=5 export SLICE5=6 export SLICE6=7 export SLICE7=8 else export SLICE_PREFIX="s" export SLICE0=0 export SLICE1=1 export SLICE2=2 export SLICE3=3 export SLICE4=4 export SLICE5=5 export SLICE6=6 export SLICE7=7 fi zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030417 xustar000000000000000030 atime=1579730437.220390166 30 ctime=1579730479.939761779 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/Makefile.am0000644016037001603700000000040313607166133030411 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_remove dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_remove_001_neg.ksh \ zpool_remove_002_pos.ksh \ zpool_remove_003_pos.ksh dist_pkgdata_DATA = \ zpool_remove.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147030237 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.927761393 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/setup.ksh0000755016037001603700000000234413607166147030242 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_remove/zpool_remove.cfg verify_runnable "global" if ! $(is_physical_device $DISKS) ; then log_unsupported "This directory cannot be run on raw files." fi partition_disk $SIZE $DISK 6 log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030521 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.929761457 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/cleanup.ksh0000755016037001603700000000215513607166133030524 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_remove/zpool_remove.cfg DISK=${DISKS%% *} if is_mpath_device $DISK; then delete_partitions fi cleanup_devices $DISKS log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/PaxHeaders.151519/zpool_remove_001_0000644000000000000000000000007413607166133031545 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.932761553 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/zpool_remove_001_neg.ksh0000755016037001603700000000521313607166133033024 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_remove/zpool_remove.cfg # # DESCRIPTION: # Verify that 'zpool can not remove device except inactive hot spares from pool' # # STRATEGY: # 1. Create all kinds of pool (strip, mirror, raidz, hotspare) # 2. Try to remove device from the pool # 3. Verify that the remove failed. # typeset disk=${DISK} typeset vdev_devs="${disk}${SLICE_PREFIX}${SLICE0}" typeset mirror_devs="${disk}${SLICE_PREFIX}${SLICE0} ${disk}${SLICE_PREFIX}${SLICE1}" typeset raidz_devs=${mirror_devs} typeset raidz1_devs=${mirror_devs} typeset raidz2_devs="${mirror_devs} ${disk}${SLICE_PREFIX}${SLICE3}" typeset spare_devs1="${disk}${SLICE_PREFIX}${SLICE0}" typeset spare_devs2="${disk}${SLICE_PREFIX}${SLICE1}" function check_remove { typeset pool=$1 typeset devs="$2" typeset dev for dev in $devs; do log_mustnot zpool remove $dev done destroy_pool $pool } function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi } set -A create_args "$vdev_devs" "mirror $mirror_devs" \ "raidz $raidz_devs" "raidz $raidz1_devs" \ "raidz2 $raidz2_devs" \ "$spare_devs1 spare $spare_devs2" set -A verify_disks "$vdev_devs" "$mirror_devs" "$raidz_devs" \ "$raidz1_devs" "$raidz2_devs" "$spare_devs1" log_assert "Check zpool remove can not remove " \ "active device from pool" log_onexit cleanup typeset -i i=0 while [[ $i -lt ${#create_args[*]} ]]; do log_must zpool create $TESTPOOL ${create_args[i]} check_remove $TESTPOOL "${verify_disks[i]}" (( i = i + 1)) done log_pass "'zpool remove fail as expected .'" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/PaxHeaders.151519/zpool_remove_002_0000644000000000000000000000007413607166133031546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.934761617 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/zpool_remove_002_pos.ksh0000755016037001603700000000403113607166133033052 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_remove/zpool_remove.cfg # # DESCRIPTION: # Verify that 'zpool can only remove inactive hot spare devices from pool' # # STRATEGY: # 1. Create a hotspare pool # 2. Try to remove the inactive hotspare device from the pool # 3. Verify that the remove succeed. # function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi } log_onexit cleanup typeset disk=${DISK} typeset spare_devs1="${disk}${SLICE_PREFIX}${SLICE0}" typeset spare_devs2="${disk}${SLICE_PREFIX}${SLICE1}" log_assert "zpool remove can only remove inactive hotspare device from pool" log_note "check hotspare device which is created by zpool create" log_must zpool create $TESTPOOL $spare_devs1 spare $spare_devs2 log_must zpool remove $TESTPOOL $spare_devs2 log_note "check hotspare device which is created by zpool add" log_must zpool add $TESTPOOL spare $spare_devs2 log_must zpool remove $TESTPOOL $spare_devs2 log_must zpool destroy $TESTPOOL log_pass "zpool remove can only remove inactive hotspare device from pool" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030410 xustar000000000000000030 mtime=1579730437.257391353 30 atime=1579730456.110996687 30 ctime=1579730479.941761843 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_remove/Makefile.in0000664016037001603700000006150413612143005030422 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_remove DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_remove ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_remove_001_neg.ksh \ zpool_remove_002_pos.ksh \ zpool_remove_003_pos.ksh dist_pkgdata_DATA = \ zpool_remove.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_remove/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_remove/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/cli_common.kshlib0000644000000000000000000000007413607166133027160 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.277644194 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/cli_common.kshlib0000644016037001603700000000425713607166133027165 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Get the checksum and size of the file. # function get_cksum # { return $(cksum $1 | awk '{print $1 $2}') } # # Compare the check sum of target files with the original file # function compare_cksum # ... { typeset orig_data=$1 typeset orig_sum=$(get_cksum $orig_data) typeset target_sum="" typeset bad_data_list="" typeset -i bad_count=0 shift for data in $@; do if [[ ! -e $data ]]; then bad_data_list="$bad_data_list $data" (( bad_count +=1 )) continue fi target_sum=$(get_cksum $data) if [[ $target_sum != $orig_sum ]]; then bad_data_list="$bad_data_list $data" (( bad_count +=1 )) fi done [[ $bad_data_list != "" ]] && \ log_fail "Data corruptions appear during send->receive." \ "There are total $bad_count corruptions. They are:\n"\ "$bad_data_list" } # # Check the received dataset exists or not # function receive_check #... { typeset bad_rst_tgts="" for dataset in $@; do ! datasetexists $dataset && \ bad_rst_tgts="$bad_rst_tgts $dataset" done if [[ $bad_rst_tgts != "" ]]; then log_fail "Restoring fails. The specified datasets"\ "$bad_rst_tgts are not being received." fi } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_unshare0000644000000000000000000000013213612143056026103 xustar000000000000000030 mtime=1579730478.535716696 30 atime=1579730489.092055645 30 ctime=1579730478.535716696 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/0000775016037001603700000000000013612143056026164 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/zfs_unshare_001_po0000644000000000000000000000007413612141513031511 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.517716118 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_001_pos.ksh0000755016037001603700000001103213612141513032455 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that 'zfs unshare ' unshares a given shared # filesystem. # # STRATEGY: # 1. Share filesystems # 2. Invoke 'zfs unshare ' to unshare zfs file system # 3. Verify that the file system is unshared # 4. Verify that unsharing an unshared file system fails # 5. Verify that "zfs unshare -a" succeeds to unshare all zfs file systems. # verify_runnable "global" function cleanup { typeset -i i=0 while (( i < ${#mntp_fs[*]} )); do log_must zfs set sharenfs=off ${mntp_fs[((i+1))]} ((i = i + 2)) done if mounted $TESTPOOL/$TESTCLONE; then log_must zfs unmount $TESTDIR2 fi [[ -d $TESTDIR2 ]] && \ log_must rm -rf $TESTDIR2 if datasetexists "$TESTPOOL/$TESTCLONE"; then log_must zfs destroy -f $TESTPOOL/$TESTCLONE fi if snapexists "$TESTPOOL/$TESTFS2@snapshot"; then log_must zfs destroy -f $TESTPOOL/$TESTFS2@snapshot fi if datasetexists "$TESTPOOL/$TESTFS2"; then log_must zfs destroy -f $TESTPOOL/$TESTFS2 fi } # # Main test routine. # # Given a mountpoint and file system this routine will attempt # unshare the filesystem via argument # and then verify it has been unshared. # function test_unshare # { typeset mntp=$1 typeset filesystem=$2 typeset prop_value prop_value=$(get_prop "sharenfs" $filesystem) if [[ $prop_value == "off" ]]; then not_shared $mntp || log_must eval "unshare_nfs $mntp" log_must zfs set sharenfs=on $filesystem is_shared $mntp || \ log_fail "'zfs set sharenfs=on' fails to make" \ "file system $filesystem shared." fi is_shared $mntp || log_must zfs share $filesystem # # Verify 'zfs unshare ' works as well. # log_must zfs unshare $filesystem not_shared $mntp || log_fail "'zfs unshare ' fails" log_must zfs share $filesystem log_must zfs unshare $mntp not_shared $mntp || log_fail "'zfs unshare ' fails" log_note "Unsharing an unshared file system fails." log_mustnot zfs unshare $filesystem log_mustnot zfs unshare $mntp } set -A mntp_fs \ "$TESTDIR" "$TESTPOOL/$TESTFS" \ "$TESTDIR1" "$TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTDIR2" "$TESTPOOL/$TESTCLONE" log_assert "Verify that 'zfs unshare [-a] ' succeeds as root." log_onexit cleanup log_must zfs create $TESTPOOL/$TESTFS2 log_must zfs snapshot $TESTPOOL/$TESTFS2@snapshot log_must zfs clone $TESTPOOL/$TESTFS2@snapshot $TESTPOOL/$TESTCLONE log_must zfs set mountpoint=$TESTDIR2 $TESTPOOL/$TESTCLONE # # Invoke 'test_unshare' routine to test 'zfs unshare '. # typeset -i i=0 while (( i < ${#mntp_fs[*]} )); do test_unshare ${mntp_fs[i]} ${mntp_fs[((i + 1 ))]} ((i = i + 2)) done log_note "Verify 'zfs unshare -a' succeeds as root." i=0 typeset sharenfs_val while (( i < ${#mntp_fs[*]} )); do sharenfs_val=$(get_prop "sharenfs" ${mntp_fs[((i+1))]}) if [[ $sharenfs_val == "on" ]]; then not_shared ${mntp_fs[i]} && \ log_must zfs share ${mntp_fs[((i+1))]} else log_must zfs set sharenfs=on ${mntp_fs[((i+1))]} is_shared ${mntp_fs[i]} || \ log_fail "'zfs set sharenfs=on' fails to share filesystem." fi ((i = i + 2)) done # # test 'zfs unshare -a ' # log_must zfs unshare -a # # verify all shared filesystems become unshared # i=0 while (( i < ${#mntp_fs[*]} )); do not_shared ${mntp_fs[i]} || \ log_fail "'zfs unshare -a' fails to unshare all shared zfs filesystems." ((i = i + 2)) done log_pass "'zfs unshare [-a] ' succeeds as root." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030226 xustar000000000000000030 atime=1579730436.148355746 30 ctime=1579730478.533716632 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/Makefile.am0000644016037001603700000000050213607166133030220 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_unshare dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_unshare_001_pos.ksh \ zfs_unshare_002_pos.ksh \ zfs_unshare_003_pos.ksh \ zfs_unshare_004_neg.ksh \ zfs_unshare_005_neg.ksh \ zfs_unshare_006_pos.ksh \ zfs_unshare_007_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030041 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.512715958 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/setup.ksh0000755016037001603700000000221513607166133030041 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib share -s if [ $? -ne 0 ]; then log_unsupported "The NFS utilities are not installed" fi # Make sure NFS server is running before testing. setup_nfs_server DISK=${DISKS%% *} default_container_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030330 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.515716054 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/cleanup.ksh0000755016037001603700000000171013607166133030327 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/zfs_unshare_006_po0000644000000000000000000000007413607166133031527 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.528716472 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_006_pos.ksh0000755016037001603700000000615513607166133032505 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2016, loli10K. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that 'zfs unshare [nfs|smb] -a' unshares only filesystems shared by the # specified protocol. # # STRATEGY: # 1. Share filesystems with different protocols. # 2. Invoke 'zfs unshare nfs -a' to unshare filesystems. # 3. Verify that only nfs filesystems are unshared. # 4. Share all filesystems again. # 5. Invoke 'zfs unshare smb -a' and verify only smb filesystems are unshared. # verify_runnable "global" if is_linux; then log_unsupported "some distros come with Samba "user shares" disabled" fi function cleanup { log_must zfs unshare -a log_must zfs destroy -f $TESTPOOL/$TESTFS/shared1 log_must zfs destroy -f $TESTPOOL/$TESTFS/shared2 log_must zfs destroy -f $TESTPOOL/$TESTFS/shared3 } log_assert "Verify 'zfs unshare [nfs|smb] -a' only works on the specified "\ "protocol." log_onexit cleanup # 1. Share filesystems with different protocols. log_must zfs create $TESTPOOL/$TESTFS/shared1 log_must zfs create $TESTPOOL/$TESTFS/shared2 log_must zfs create $TESTPOOL/$TESTFS/shared3 log_must zfs set mountpoint=$TESTDIR/1 $TESTPOOL/$TESTFS/shared1 log_must zfs set mountpoint=$TESTDIR/2 $TESTPOOL/$TESTFS/shared2 log_must zfs set mountpoint=$TESTDIR/3 $TESTPOOL/$TESTFS/shared3 log_must zfs set sharenfs=on $TESTPOOL/$TESTFS/shared1 log_must zfs set sharenfs=on $TESTPOOL/$TESTFS/shared2 log_must zfs set sharesmb=on $TESTPOOL/$TESTFS/shared2 log_must zfs set sharesmb=on $TESTPOOL/$TESTFS/shared3 log_must zfs share -a # 2. Invoke 'zfs unshare nfs -a' to unshare filesystems. log_must zfs unshare nfs -a # 3. Verify that only nfs filesystems are unshared. log_must eval "not_shared $TESTPOOL/$TESTFS/shared1" log_must eval "not_shared $TESTPOOL/$TESTFS/shared2" log_must eval "is_shared_smb $TESTPOOL/$TESTFS/shared2" log_must eval "is_shared_smb $TESTPOOL/$TESTFS/shared3" # 4. Share all filesystems again. log_must zfs share -a # 5. Invoke 'zfs unshare smb -a' and verify only smb filesystems are unshared. log_must zfs unshare smb -a log_must eval "is_shared $TESTPOOL/$TESTFS/shared1" log_must eval "is_shared $TESTPOOL/$TESTFS/shared2" log_must eval "not_shared_smb $TESTPOOL/$TESTFS/shared2" log_must eval "not_shared_smb $TESTPOOL/$TESTFS/shared3" log_pass "'zfs unshare [nfs|smb] -a' only works on the specified protocol." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/zfs_unshare_003_po0000644000000000000000000000007313607166133031523 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.52271628 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_003_pos.ksh0000755016037001603700000000472113607166133032477 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that a file system and its dependent are unshared when turn off sharenfs # property. # # STRATEGY: # 1. Create a file system # 2. Set the sharenfs property on the file system # 3. Create a snapshot # 4. Verify that both are shared # 5. Turn off the sharenfs property # 6. Verify that both are unshared. # verify_runnable "global" function cleanup { if snapexists $TESTPOOL/$TESTFS@snapshot; then log_must zfs destroy $TESTPOOL/$TESTFS@snapshot fi log_must zfs set sharenfs=off $TESTPOOL/$TESTFS } # # Main test routine. # # Given a mountpoint and file system this routine will attempt # unshare the mountpoint and then verify a snapshot of the mounpoint # is also unshared. # function test_snap_unshare # { typeset mntp=$1 typeset filesystem=$2 typeset prop_value prop_value=$(get_prop "sharenfs" $filesystem) if [[ $prop_value == "off" ]]; then is_shared $mntp || unshare_nfs $mntp log_must zfs set sharenfs=on $filesystem fi log_must zfs set sharenfs=off $filesystem not_shared $mntp || \ log_fail "File system $filesystem is shared (set sharenfs)." not_shared $mntp@snapshot || \ log_fail "Snapshot $mntpt@snapshot is shared (set sharenfs)." } log_assert "Verify that a file system and its dependent are unshared." log_onexit cleanup log_must zfs snapshot $TESTPOOL/$TESTFS@snapshot test_snap_unshare $TESTDIR $TESTPOOL/$TESTFS log_pass "A file system and its dependent are both unshared as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/zfs_unshare_004_ne0000644000000000000000000000007413612141513031500 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.524716344 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_004_neg.ksh0000755016037001603700000000513013612141513032432 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that "zfs unshare" issue error message with badly formed parameter. # # STRATEGY: # 1. Define badly formed parameters # 2. Invoke 'zfs unshare' # 3. Verify that unshare fails and issue error message. # verify_runnable "global" export NONEXISTFSNAME="nonexistfs50charslong_0123456789012345678901234567" export NONEXISTMOUNTPOINT="/nonexistmountpoint_0123456789" set -A opts "" "$TESTPOOL/$NONEXISTFSNAME" "$NONEXISTMOUNTPOINT" "-?" "-1" \ "-a blah" "$TESTPOOL/$TESTFS $TESTPOOL/$TESTFS1" \ "-f $TESTPOOL/$TESTFS $TESTPOOL/$TESTFS1" \ "$TESTPOOL/$TESTFS $TESTDIR" "-f $TESTPOOL/$TESTFS $TESTDIR" \ "${TESTDIR#/}" "-f ${TESTDIR#/}" log_assert "Verify that 'zfs unshare' issue error message with badly formed parameter." shareval=$(get_prop sharenfs $TESTPOOL/$TESTFS) if [[ $shareval == off ]]; then log_must zfs set sharenfs=on $TESTPOOL/$TESTFS fi typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zfs unshare ${args[i]} ((i = i + 1)) done #Testing that unsharing unshared filesystem fails. mpt=$(get_prop mountpoint $TESTPOOL/$TESTFS) log_must zfs unshare $TESTPOOL/$TESTFS for opt in "" "-f"; do log_mustnot eval "zfs unshare $opt $TESTPOOL/$TESTFS >/dev/null 2>&1" log_mustnot eval "zfs unshare $opt $mpt >/dev/null 2>&1" done #Testing zfs unshare fails with legacy share set log_must zfs set sharenfs=off $TESTPOOL/$TESTFS for opt in "" "-f"; do log_mustnot eval "zfs unshare $opt $TESTPOOL/$TESTFS >/dev/null 2>&1" log_mustnot eval "zfs unshare $opt $mpt >/dev/null 2>&1" done log_pass "'zfs unshare' fails as expected with badly-formed parameters." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/zfs_unshare_002_po0000644000000000000000000000007413607166133031523 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.519716183 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_002_pos.ksh0000755016037001603700000001110313607166133032466 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that 'zfs unshare [-a] ' is aware of legacy share. # # STRATEGY: # 1. Set 'zfs set sharenfs=off' # 2. Use 'share' to share given filesystem # 3. Verify that 'zfs unshare ' is aware of legacy share # 4. Verify that 'zfs unshare -a' is aware of legacy share. # verify_runnable "global" if is_linux; then log_unsupported "zfs set sharenfs=off won't unshare if already off" fi function cleanup { typeset -i i=0 while (( i < ${#mntp_fs[*]} )); do is_shared ${mntp_fs[i]} && \ log_must eval "unshare_nfs ${mntp_fs[i]}" ((i = i + 2)) done if mounted $TESTPOOL/$TESTCLONE; then log_must zfs unmount $TESTDIR2 fi [[ -d $TESTDIR2 ]] && \ log_must rm -rf $TESTDIR2 if datasetexists "$TESTPOOL/$TESTCLONE"; then log_must zfs destroy -f $TESTPOOL/$TESTCLONE fi if snapexists "$TESTPOOL/$TESTFS2@snapshot"; then log_must zfs destroy -f $TESTPOOL/$TESTFS2@snapshot fi if datasetexists "$TESTPOOL/$TESTFS2"; then log_must zfs destroy -f $TESTPOOL/$TESTFS2 fi } # # Main test routine. # # Given a mountpoint and file system this routine will attempt # to verify 'zfs unshare' is aware of legacy share. # function test_legacy_unshare # { typeset mntp=$1 typeset filesystem=$2 log_must zfs set sharenfs=off $filesystem not_shared $mntp || \ log_fail "'zfs set sharenfs=off' fails to make ZFS " \ "filesystem $filesystem unshared." log_must eval "share_nfs $mntp" is_shared $mntp || \ log_fail "'share' command fails to share ZFS file system." # # Verify 'zfs unshare ' is aware of legacy share. # log_mustnot zfs unshare $filesystem is_shared $mntp || \ log_fail "'zfs unshare ' fails to be aware" \ "of legacy share." # # Verify 'zfs unshare ' is aware of legacy share. # log_mustnot zfs unshare $mntp is_shared $mntp || \ log_fail "'zfs unshare ' fails to be aware" \ "of legacy share." } set -A mntp_fs \ "$TESTDIR" "$TESTPOOL/$TESTFS" \ "$TESTDIR1" "$TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTDIR2" "$TESTPOOL/$TESTCLONE" log_assert "Verify that 'zfs unshare [-a]' is aware of legacy share." log_onexit cleanup log_must zfs create $TESTPOOL/$TESTFS2 log_must zfs snapshot $TESTPOOL/$TESTFS2@snapshot log_must zfs clone $TESTPOOL/$TESTFS2@snapshot $TESTPOOL/$TESTCLONE log_must zfs set mountpoint=$TESTDIR2 $TESTPOOL/$TESTCLONE # # Invoke 'test_legacy_unshare' routine to verify. # typeset -i i=0 while (( i < ${#mntp_fs[*]} )); do test_legacy_unshare ${mntp_fs[i]} ${mntp_fs[((i + 1 ))]} ((i = i + 2)) done log_note "Verify 'zfs unshare -a' is aware of legacy share." # # set the 'sharenfs' property to 'off' for each filesystem # i=0 while (( i < ${#mntp_fs[*]} )); do log_must zfs set sharenfs=off ${mntp_fs[((i + 1))]} not_shared ${mntp_fs[i]} || \ log_fail "'zfs set sharenfs=off' unshares file system failed." ((i = i + 2)) done # # Share each of the file systems via legacy share. # i=0 while (( i < ${#mntp_fs[*]} )); do share_nfs ${mntp_fs[i]} is_shared ${mntp_fs[i]} || \ log_fail "'share' shares ZFS filesystem failed." ((i = i + 2)) done # # Verify that 'zfs unshare -a' is aware of legacy share # log_must zfs unshare -a # # verify ZFS filesystems are still shared # i=0 while (( i < ${#mntp_fs[*]} )); do is_shared ${mntp_fs[i]} || \ log_fail "'zfs unshare -a' fails to be aware of legacy share." ((i = i + 2)) done log_pass "'zfs unshare [-a]' succeeds to be aware of legacy share." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/zfs_unshare_007_po0000644000000000000000000000007413607166133031530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.530716536 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_007_pos.ksh0000755016037001603700000000407313607166133032503 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2016, loli10K. All rights reserved. # Copyright (c) 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that 'zfs destroy' on a shared dataset, will unshare it. # # STRATEGY: # 1. Create and share a dataset with sharenfs. # 2. Verify the dataset is shared. # 3. Invoke 'zfs destroy' on the dataset. # 4. Verify the dataset is not shared. # verify_runnable "global" function cleanup { if datasetexists "$TESTPOOL/$TESTFS/shared1"; then log_must zfs destroy -f $TESTPOOL/$TESTFS/shared1 fi } log_assert "Verify 'zfs destroy' will unshare the dataset" log_onexit cleanup # 1. Create and share a dataset with sharenfs. log_must zfs create \ -o sharenfs=on -o mountpoint=$TESTDIR/1 $TESTPOOL/$TESTFS/shared1 # # 2. Verify the datasets is shared. # # The "non-impl" variant of "is_shared" requires the dataset to exist. # Thus, we can only use the "impl" variant in step 4, below. To be # consistent with step 4, we also use the "impl" variant here. # log_must eval "is_shared_impl $TESTDIR/1" # 3. Invoke 'zfs destroy' on the dataset. log_must zfs destroy -f $TESTPOOL/$TESTFS/shared1 # 4. Verify the dataset is not shared. log_mustnot eval "is_shared_impl $TESTDIR/1" log_pass "'zfs destroy' will unshare the dataset." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030216 xustar000000000000000030 mtime=1579730436.183356869 30 atime=1579730455.504977229 30 ctime=1579730478.535716696 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/Makefile.in0000664016037001603700000005756513612143004030244 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_unshare DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_unshare ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_unshare_001_pos.ksh \ zfs_unshare_002_pos.ksh \ zfs_unshare_003_pos.ksh \ zfs_unshare_004_neg.ksh \ zfs_unshare_005_neg.ksh \ zfs_unshare_006_pos.ksh \ zfs_unshare_007_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_unshare/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_unshare/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/PaxHeaders.151519/zfs_unshare_005_ne0000644000000000000000000000007413607166133031512 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.526716408 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unshare/zfs_unshare_005_neg.ksh0000755016037001603700000000326713607166133032455 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that unsharing a dataset and mountpoint other than filesystem fails. # # STRATEGY: # 1. Create a volume, dataset other than a ZFS file system # 2. Verify that the datasets other than file system are not support by 'zfs unshare'. # verify_runnable "both" set -A datasets \ "$TESTPOOL" "$ZFSROOT/$TESTPOOL" \ "$TESTPOOL/$TESTCTR" "$ZFSROOT/$TESTPOOL/$TESTCTR" \ "$TESTPOOL/$TESTVOL" "${ZVOL_DEVDIR}/$TESTPOOL/$TESTVOL" log_assert "Verify that unsharing a dataset other than filesystem fails." typeset -i i=0 while (( i < ${#datasets[*]} )) do log_mustnot zfs unshare ${datasets[i]} ((i = i + 1)) done log_pass "Unsharing datasets other than filesystem failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_detach0000644000000000000000000000013213612143057026230 xustar000000000000000030 mtime=1579730479.107735064 30 atime=1579730489.092055645 30 ctime=1579730479.107735064 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/0000775016037001603700000000000013612143057026311 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030352 xustar000000000000000030 atime=1579730436.575369455 30 ctime=1579730479.104734966 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/Makefile.am0000644016037001603700000000024213607166133030345 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_detach dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_detach_001_neg.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030165 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.097734742 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/setup.ksh0000755016037001603700000000203613607166133030166 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" verify_disk_count "$DISKS" 2 DISK=${DISKS%% *} default_mirror_setup $DISKS zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030454 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.099734806 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/cleanup.ksh0000755016037001603700000000174213607166133030460 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/PaxHeaders.151519/zpool_detach_001_0000644000000000000000000000007413607166133031433 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.102734902 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/zpool_detach_001_neg.ksh0000755016037001603700000000364213607166133032716 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool detach' command with bad options fails. # # STRATEGY: # 1. Create an array of badly formed 'zpool detach' options. # 2. Execute each element of the array. # 3. Verify an error code is returned. # verify_runnable "global" DISKLIST=$(get_disklist $TESTPOOL) set -A args "" "-?" "-t fakepool" "-f fakepool" "-ev fakepool" "fakepool" \ "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTFS $DISKLIST" \ "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTPOOL/$TESTCTR $DISKLIST" "$TESTPOOL/$TESTVOL" \ "$TESTPOOL/$TESTCTR/$TESTFS1 $DISKLIST" "$TESTPOOL/$TESTVOL $DISKLIST" \ "$DISKLIST" log_assert "Executing 'zpool detach' with bad options fails" if [[ -z $DISKLIST ]]; then log_fail "DISKLIST is empty." fi typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool detach ${args[$i]} (( i = i + 1 )) done log_pass "'zpool detach' command with bad options failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030342 xustar000000000000000030 mtime=1579730436.610370578 30 atime=1579730455.715984005 30 ctime=1579730479.107735064 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_detach/Makefile.in0000664016037001603700000005733013612143004030356 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_detach DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_detach ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_detach_001_neg.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_detach/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_detach/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_expand0000644000000000000000000000013213612143057026257 xustar000000000000000030 mtime=1579730479.243739431 30 atime=1579730489.092055645 30 ctime=1579730479.243739431 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/0000775016037001603700000000000013612143057026340 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/zpool_expand_005_0000644000000000000000000000007413607166133031515 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.238739269 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_005_pos.ksh0000755016037001603700000000563713607166133033036 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2018 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/include/blkdev.shlib . $STF_SUITE/tests/functional/cli_root/zpool_expand/zpool_expand.cfg # # DESCRIPTION: # # STRATEGY: # 1) Create a scsi_debug device and a pool based on it # 2) Expand the device and rescan the scsi bus # 3) Reopen the pool and check that it detects new available space # 4) Online the device and check that the pool has been expanded # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 unload_scsi_debug } log_onexit cleanup log_assert "zpool based on scsi device can be expanded with zpool online -e" # run scsi_debug to create a device MINVDEVSIZE_MB=$((MINVDEVSIZE / 1048576)) load_scsi_debug $MINVDEVSIZE_MB 1 1 1 '512b' block_device_wait SDISK=$(get_debug_device) log_must zpool create $TESTPOOL1 $SDISK typeset autoexp=$(get_pool_prop autoexpand $TESTPOOL1) if [[ $autoexp != "off" ]]; then log_fail "zpool $TESTPOOL1 autoexpand should be off but is $autoexp" fi typeset prev_size=$(get_pool_prop size $TESTPOOL1) log_note "original pool size: $prev_size" # resize the scsi_debug device echo "5" > /sys/bus/pseudo/drivers/scsi_debug/virtual_gb # rescan the device to detect the new size echo "1" > /sys/class/block/$SDISK/device/rescan block_device_wait # reopen the pool so ZFS can see the new space log_must zpool reopen $TESTPOOL1 typeset expandsize=$(get_pool_prop expandsize $TESTPOOL1) log_note "pool expandsize: $expandsize" if [[ "$zpool_expandsize" = "-" ]]; then log_fail "pool $TESTPOOL1 did not detect any " \ "expandsize after reopen" fi # online the device so the zpool will use the new space log_must zpool online -e $TESTPOOL1 $SDISK typeset new_size=$(get_pool_prop size $TESTPOOL1) log_note "new pool size: $new_size" if [[ $new_size -le $prev_size ]]; then log_fail "pool $TESTPOOL1 did not expand " \ "after vdev expansion and zpool online -e" fi log_pass "zpool based on scsi_debug can be expanded with reopen and online -e" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030401 xustar000000000000000030 atime=1579730436.681372858 30 ctime=1579730479.240739333 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/Makefile.am0000644016037001603700000000047313607166133030402 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_expand dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_expand_001_pos.ksh \ zpool_expand_002_pos.ksh \ zpool_expand_003_neg.ksh \ zpool_expand_004_pos.ksh \ zpool_expand_005_pos.ksh dist_pkgdata_DATA = \ zpool_expand.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/setup.ksh0000644000000000000000000000007313607166133030213 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730479.22473882 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/setup.ksh0000755016037001603700000000253113607166133030215 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" # # The pool expansion tests depend on udev change events being generated # when block devices change capacity. Since this functionality wasn't # available until the 2.6.38 kernel skip this test group. # if [[ $(linux_version) -lt $(linux_version "2.6.38") ]]; then log_unsupported "Requires block device udev change events" fi zed_setup zed_start DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030503 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.227738917 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/cleanup.ksh0000755016037001603700000000177013607166133030510 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" zed_stop zed_cleanup default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/zpool_expand_001_0000644000000000000000000000007413607166133031511 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.229738981 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_001_pos.ksh0000755016037001603700000001206113607166133033017 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_expand/zpool_expand.cfg # # DESCRIPTION: # Once zpool set autoexpand=on poolname, zpool can autoexpand by # Dynamic VDEV Expansion # # # STRATEGY: # 1) Create three vdevs (loopback, scsi_debug, and file) # 2) Create pool by using the different devices and set autoexpand=on # 3) Expand each device as appropriate # 4) Check that the pool size was expanded # # NOTE: Three different device types are used in this test to verify # expansion of non-partitioned block devices (loopback), partitioned # block devices (scsi_debug), and non-disk file vdevs. ZFS volumes # are not used in order to avoid a possible lock inversion when # layering pools on zvols. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 if losetup -a | grep -q $DEV1; then losetup -d $DEV1 fi rm -f $FILE_LO $FILE_RAW block_device_wait unload_scsi_debug } log_onexit cleanup log_assert "zpool can be autoexpanded after set autoexpand=on on vdev expansion" for type in " " mirror raidz raidz2; do log_note "Setting up loopback, scsi_debug, and file vdevs" log_must truncate -s $org_size $FILE_LO DEV1=$(losetup -f) log_must losetup $DEV1 $FILE_LO load_scsi_debug $org_size_mb 1 1 1 '512b' block_device_wait DEV2=$(get_debug_device) log_must truncate -s $org_size $FILE_RAW DEV3=$FILE_RAW # The -f is required since we're mixing disk and file vdevs. log_must zpool create -f -o autoexpand=on $TESTPOOL1 $type \ $DEV1 $DEV2 $DEV3 typeset autoexp=$(get_pool_prop autoexpand $TESTPOOL1) if [[ $autoexp != "on" ]]; then log_fail "zpool $TESTPOOL1 autoexpand should be on but is " \ "$autoexp" fi typeset prev_size=$(get_pool_prop size $TESTPOOL1) typeset zfs_prev_size=$(get_prop avail $TESTPOOL1) # Expand each device as appropriate being careful to add an artificial # delay to ensure we get a single history entry for each. This makes # is easier to verify each expansion for the striped pool case, since # they will not be merged in to a single larger expansion. log_note "Expanding loopback, scsi_debug, and file vdevs" log_must truncate -s $exp_size $FILE_LO log_must losetup -c $DEV1 sleep 3 echo "2" > /sys/bus/pseudo/drivers/scsi_debug/virtual_gb echo "1" > /sys/class/block/$DEV2/device/rescan block_device_wait sleep 3 log_must truncate -s $exp_size $FILE_RAW log_must zpool online -e $TESTPOOL1 $FILE_RAW typeset expand_size=$(get_pool_prop size $TESTPOOL1) typeset zfs_expand_size=$(get_prop avail $TESTPOOL1) log_note "$TESTPOOL1 $type has previous size: $prev_size and " \ "expanded size: $expand_size" # compare available pool size from zfs if [[ $zfs_expand_size -gt $zfs_prev_size ]]; then # check for zpool history for the pool size expansion if [[ $type == " " ]]; then typeset expansion_size=$(($exp_size-$org_size)) typeset size_addition=$(zpool history -il $TESTPOOL1 |\ grep "pool '$TESTPOOL1' size:" | \ grep "vdev online" | \ grep "(+${expansion_size}" | wc -l) if [[ $size_addition -ne 3 ]]; then log_fail "pool $TESTPOOL1 has not expanded, " \ "$size_addition/3 vdevs expanded" fi elif [[ $type == "mirror" ]]; then typeset expansion_size=$(($exp_size-$org_size)) zpool history -il $TESTPOOL1 | \ grep "pool '$TESTPOOL1' size:" | \ grep "vdev online" | \ grep "(+${expansion_size})" >/dev/null 2>&1 if [[ $? -ne 0 ]] ; then log_fail "pool $TESTPOOL1 has not expanded" fi else typeset expansion_size=$((3*($exp_size-$org_size))) zpool history -il $TESTPOOL1 | \ grep "pool '$TESTPOOL1' size:" | \ grep "vdev online" | \ grep "(+${expansion_size})" >/dev/null 2>&1 if [[ $? -ne 0 ]]; then log_fail "pool $TESTPOOL has not expanded" fi fi else log_fail "pool $TESTPOOL1 is not autoexpanded after vdev " \ "expansion. Previous size: $zfs_prev_size and expanded " \ "size: $zfs_expand_size" fi cleanup done log_pass "zpool can autoexpand if autoexpand=on after vdev expansion" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/zpool_expand_002_0000644000000000000000000000007413607166133031512 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.231739045 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_002_pos.ksh0000755016037001603700000001207013607166133033020 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2018 by Delphix. All rights reserved. # Copyright (c) 2017 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_expand/zpool_expand.cfg # # DESCRIPTION: # After zpool online -e poolname zvol vdevs, zpool can autoexpand by # Dynamic VDEV Expansion # # # STRATEGY: # 1) Create 3 files # 2) Create a pool backed by the files # 3) Expand the files' size with truncate # 4) Use zpool reopen to check the expandsize # 5) Use zpool online -e to online the vdevs # 6) Check that the pool size was expanded # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 for i in 1 2 3; do [ -e ${TEMPFILE}.$i ] && log_must rm ${TEMPFILE}.$i done } log_onexit cleanup log_assert "zpool can expand after zpool online -e zvol vdevs on vdev expansion" for type in " " mirror raidz raidz2; do # Initialize the file devices and the pool for i in 1 2 3; do log_must truncate -s $org_size ${TEMPFILE}.$i done log_must zpool create $TESTPOOL1 $type $TEMPFILE.1 \ $TEMPFILE.2 $TEMPFILE.3 typeset autoexp=$(get_pool_prop autoexpand $TESTPOOL1) if [[ $autoexp != "off" ]]; then log_fail "zpool $TESTPOOL1 autoexpand should be off but is " \ "$autoexp" fi typeset prev_size=$(get_pool_prop size $TESTPOOL1) typeset zfs_prev_size=$(get_prop avail $TESTPOOL1) # Increase the size of the file devices for i in 1 2 3; do log_must truncate -s $exp_size ${TEMPFILE}.$i done # Reopen the pool and check that the `expandsize` property is set log_must zpool reopen $TESTPOOL1 typeset zpool_expandsize=$(get_pool_prop expandsize $TESTPOOL1) if [[ $type == "mirror" ]]; then typeset expected_zpool_expandsize=$(($exp_size-$org_size)) else typeset expected_zpool_expandsize=$((3*($exp_size-$org_size))) fi if [[ "$zpool_expandsize" = "-" ]]; then log_fail "pool $TESTPOOL1 did not detect any " \ "expandsize after reopen" fi if [[ $zpool_expandsize -ne $expected_zpool_expandsize ]]; then log_fail "pool $TESTPOOL1 did not detect correct " \ "expandsize after reopen: found $zpool_expandsize," \ "expected $expected_zpool_expandsize" fi # Online the devices to add the new space to the pool. Add an # artificial delay between online commands order to prevent them # from being merged in to a single history entry. This makes # is easier to verify each expansion for the striped pool case. for i in 1 2 3; do log_must zpool online -e $TESTPOOL1 ${TEMPFILE}.$i sleep 3 done typeset expand_size=$(get_pool_prop size $TESTPOOL1) typeset zfs_expand_size=$(get_prop avail $TESTPOOL1) log_note "$TESTPOOL1 $type has previous size: $prev_size and " \ "expanded size: $expand_size" # compare available pool size from zfs if [[ $zfs_expand_size -gt $zfs_prev_size ]]; then # check for zpool history for the pool size expansion if [[ $type == " " ]]; then typeset expansion_size=$(($exp_size-$org_size)) typeset size_addition=$(zpool history -il $TESTPOOL1 \ | grep "pool '$TESTPOOL1' size:" | \ grep "vdev online" | \ grep "(+${expansion_size}" | wc -l) if [[ $size_addition -ne $i ]]; then log_fail "pool $TESTPOOL1 has not expanded " \ "after zpool online -e, " \ "$size_addition/3 vdevs expanded" fi elif [[ $type == "mirror" ]]; then typeset expansion_size=$(($exp_size-$org_size)) zpool history -il $TESTPOOL1 | \ grep "pool '$TESTPOOL1' size:" | \ grep "vdev online" | \ grep "(+${expansion_size})" >/dev/null 2>&1 if [[ $? -ne 0 ]]; then log_fail "pool $TESTPOOL1 has not expanded " \ "after zpool online -e" fi else typeset expansion_size=$((3*($exp_size-$org_size))) zpool history -il $TESTPOOL1 | \ grep "pool '$TESTPOOL1' size:" | \ grep "vdev online" | \ grep "(+${expansion_size})" >/dev/null 2>&1 if [[ $? -ne 0 ]] ; then log_fail "pool $TESTPOOL1 has not expanded " \ "after zpool online -e" fi fi else log_fail "pool $TESTPOOL1 did not expand after vdev expansion " \ "and zpool online -e" fi log_must zpool destroy $TESTPOOL1 done log_pass "zpool can expand after zpool online -e" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/zpool_expand_003_0000644000000000000000000000007413607166133031513 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.234739141 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_003_neg.ksh0000755016037001603700000000765613607166133033007 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_expand/zpool_expand.cfg # # Description: # Once set zpool autoexpand=off, zpool can *NOT* autoexpand by # Dynamic VDEV Expansion # # # STRATEGY: # 1) Create three vdevs (loopback, scsi_debug, and file) # 2) Create pool by using the different devices and set autoexpand=off # 3) Expand each device as appropriate # 4) Check that the pool size is not expanded # # NOTE: Three different device types are used in this test to verify # expansion of non-partitioned block devices (loopback), partitioned # block devices (scsi_debug), and non-disk file vdevs. ZFS volumes # are not used in order to avoid a possible lock inversion when # layering pools on zvols. # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 if losetup -a | grep -q $DEV1; then losetup -d $DEV1 fi rm -f $FILE_LO $FILE_RAW block_device_wait unload_scsi_debug } log_onexit cleanup log_assert "zpool can not expand if set autoexpand=off after vdev expansion" for type in " " mirror raidz raidz2; do log_note "Setting up loopback, scsi_debug, and file vdevs" log_must truncate -s $org_size $FILE_LO DEV1=$(losetup -f) log_must losetup $DEV1 $FILE_LO load_scsi_debug $org_size_mb 1 1 1 '512b' block_device_wait DEV2=$(get_debug_device) log_must truncate -s $org_size $FILE_RAW DEV3=$FILE_RAW # The -f is required since we're mixing disk and file vdevs. log_must zpool create -f $TESTPOOL1 $type $DEV1 $DEV2 $DEV3 typeset autoexp=$(get_pool_prop autoexpand $TESTPOOL1) if [[ $autoexp != "off" ]]; then log_fail "zpool $TESTPOOL1 autoexpand should be off but is " \ "$autoexp" fi typeset prev_size=$(get_pool_prop size $TESTPOOL1) # Expand each device as appropriate being careful to add an artificial # delay to ensure we get a single history entry for each. This makes # is easier to verify each expansion for the striped pool case, since # they will not be merged in to a single larger expansion. log_note "Expanding loopback, scsi_debug, and file vdevs" log_must truncate -s $exp_size $FILE_LO log_must losetup -c $DEV1 sleep 3 echo "2" > /sys/bus/pseudo/drivers/scsi_debug/virtual_gb echo "1" > /sys/class/block/$DEV2/device/rescan block_device_wait sleep 3 log_must truncate -s $exp_size $FILE_RAW # This is far longer than we should need to wait, but let's be sure. sleep 5 # check for zpool history for the pool size expansion zpool history -il $TESTPOOL1 | grep "pool '$TESTPOOL1' size:" | \ grep "vdev online" >/dev/null 2>&1 if [[ $? -eq 0 ]]; then log_fail "pool $TESTPOOL1 is not autoexpand after vdev " \ "expansion" fi typeset expand_size=$(get_pool_prop size $TESTPOOL1) if [[ "$prev_size" != "$expand_size" ]]; then log_fail "pool $TESTPOOL1 size changed after vdev expansion" fi cleanup done log_pass "zpool can not autoexpand if autoexpand=off after vdev expansion" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/zpool_expand_004_0000644000000000000000000000007413607166133031514 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.236739205 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand_004_pos.ksh0000755016037001603700000000503013607166133033020 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2015 by Delphix. All rights reserved. # Copyright (c) 2017 Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_expand/zpool_expand.cfg # # DESCRIPTION: # After vdev expansion, all 4 labels have the same set of uberblocks. # # # STRATEGY: # 1) Create 3 files # 2) Create a pool backed by the files # 3) Expand the files' size with truncate # 4) Use zpool online -e to expand the vdevs # 5) Check that for all the devices, all 4 labels have the same uberblocks # verify_runnable "global" function cleanup { poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 for i in 1 2 3; do [ -e ${TEMPFILE}.$i ] && log_must rm ${TEMPFILE}.$i done } log_onexit cleanup log_assert "After vdev expansion, all 4 labels have the same set of uberblocks." for type in " " mirror raidz raidz2; do for i in 1 2 3; do log_must truncate -s $org_size ${TEMPFILE}.$i done log_must zpool create $TESTPOOL1 $type $TEMPFILE.1 \ $TEMPFILE.2 $TEMPFILE.3 sync_pool $TESTPOOL1 for i in 1 2 3; do log_must truncate -s $exp_size ${TEMPFILE}.$i done for i in 1 2 3; do log_must zpool online -e $TESTPOOL1 ${TEMPFILE}.$i done sync_pool $TESTPOOL1 for i in 1 2 3; do non_uniform=$(zdb -lu ${TEMPFILE}.$i | \ grep 'labels = ' | \ grep -c -v 'labels = 0 1 2 3') log_note "non-uniform label count: $non_uniform" if [[ $non_uniform -ne 0 ]]; then log_fail "After vdev expansion, all labels contents are not identical" fi done log_must zpool destroy $TESTPOOL1 done log_pass "After vdev expansion, all 4 labels have the same set of uberblocks." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030371 xustar000000000000000030 mtime=1579730436.718374048 30 atime=1579730455.772985835 30 ctime=1579730479.243739431 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/Makefile.in0000664016037001603700000006157413612143004030412 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_expand DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_expand ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_expand_001_pos.ksh \ zpool_expand_002_pos.ksh \ zpool_expand_003_neg.ksh \ zpool_expand_004_pos.ksh \ zpool_expand_005_pos.ksh dist_pkgdata_DATA = \ zpool_expand.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_expand/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_expand/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/PaxHeaders.151519/zpool_expand.cfg0000644000000000000000000000007413607166133031530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.222738755 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_expand/zpool_expand.cfg0000644016037001603700000000221013607166133031520 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export org_size=$((1024*1024*1024)) export exp_size=$((2*1024*1024*1024)) export org_size_mb=$((org_size/(1024*1024))) export FILE_LO=$TEST_BASE_DIR/vdev_lo export FILE_RAW=$TEST_BASE_DIR/vdev_raw zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_load-key0000644000000000000000000000013213612143055026142 xustar000000000000000030 mtime=1579730477.262675821 30 atime=1579730489.093055677 30 ctime=1579730477.262675821 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/0000775016037001603700000000000013612143055026223 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/zfs_load-key_recu0000644000000000000000000000007413607166133031562 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.257675661 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_recursive.ksh0000755016037001603700000000347613607166133033431 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs load-key -r' should recursively load keys. # # STRATEGY: # 1. Create an encrypted dataset # 2. Create a child dataset as an encryption root # 3. Unmount all datasets and unload their keys # 4. Attempt to load all dataset keys # 5. Verify each dataset has its key loaded # 6. Attempt to mount each dataset # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs load-key -r' should recursively load keys" log_must eval "echo $PASSPHRASE1 > /$TESTPOOL/pkey" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must zfs create -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1/child log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1/child log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must zfs load-key -r $TESTPOOL log_must key_available $TESTPOOL/$TESTFS1 log_must key_available $TESTPOOL/$TESTFS1/child log_must zfs mount $TESTPOOL/$TESTFS1 log_must zfs mount $TESTPOOL/$TESTFS1/child log_pass "'zfs load-key -r' recursively loads keys" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/zfs_load-key_loca0000644000000000000000000000007413607166133031542 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.253675533 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_location.ksh0000755016037001603700000000434613607166133033227 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs load-key -L' should override keylocation with provided value. # # STRATEGY: # 1. Create a key file # 2. Copy the key file to another location # 3. Create an encrypted dataset using the keyfile # 4. Unmount the dataset and unload its key # 5. Attempt to load the dataset specifying a keylocation of file # 6. Verify the key is loaded # 7. Verify the keylocation is the original key file # 8. Unload the dataset's key # 9. Attempt to load the dataset specifying a keylocation of prompt # 10. Verify the key is loaded # 11. Verify the keylocation is the original key file # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs load-key -L' should override keylocation with provided value" typeset key_location="/$TESTPOOL/pkey1" log_must eval "echo $PASSPHRASE > $key_location" log_must cp $key_location /$TESTPOOL/pkey2 log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file://$key_location $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must zfs load-key -L file:///$TESTPOOL/pkey2 $TESTPOOL/$TESTFS1 log_must key_available $TESTPOOL/$TESTFS1 log_must verify_keylocation $TESTPOOL/$TESTFS1 "file://$key_location" log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must eval "echo $PASSPHRASE | zfs load-key -L prompt $TESTPOOL/$TESTFS1" log_must key_available $TESTPOOL/$TESTFS1 log_must verify_keylocation $TESTPOOL/$TESTFS1 "file://$key_location" log_pass "'zfs load-key -L' overrides keylocation with provided value" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030266 xustar000000000000000030 atime=1579730435.238326527 30 ctime=1579730477.260675757 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/Makefile.am0000644016037001603700000000054613607166133030270 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_load-key dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_load-key.ksh \ zfs_load-key_all.ksh \ zfs_load-key_file.ksh \ zfs_load-key_location.ksh \ zfs_load-key_noop.ksh \ zfs_load-key_recursive.ksh dist_pkgdata_DATA = \ zfs_load-key.cfg \ zfs_load-key_common.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/zfs_load-key.ksh0000644000000000000000000000007413607166133031330 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.245675275 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key.ksh0000755016037001603700000000507313607166133031335 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs load-key' should only load a key for an unloaded encrypted dataset. # # STRATEGY: # 1. Attempt to load the default dataset's key # 2. Unmount the dataset # 3. Attempt to load the default dataset's key # 4. Create an encrypted dataset # 5. Unmount the dataset and unload its key # 6. Attempt to load the dataset's key # 7. Verify the dataset's key is loaded # 8. Attempt to load the dataset's key again # 9. Create an encrypted pool # 10. Unmount the pool and unload its key # 11. Attempt to load the pool's key # 12. Verify the pool's key is loaded # 13. Attempt to load the pool's key again # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy $TESTPOOL/$TESTFS1 poolexists $TESTPOOL1 && log_must destroy_pool $TESTPOOL1 } log_onexit cleanup log_assert "'zfs load-key' should only load the key for an" \ "unloaded encrypted dataset" log_mustnot eval "echo $PASSPHRASE | zfs load-key $TESTPOOL/$TESTFS" log_must zfs unmount $TESTPOOL/$TESTFS log_mustnot eval "echo $PASSPHRASE | zfs load-key $TESTPOOL/$TESTFS" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must eval "echo $PASSPHRASE | zfs load-key $TESTPOOL/$TESTFS1" log_must key_available $TESTPOOL/$TESTFS1 log_mustnot eval "echo $PASSPHRASE | zfs load-key $TESTPOOL/$TESTFS1" typeset DISK2="$(echo $DISKS | awk '{ print $2 }')" log_must eval "echo $PASSPHRASE | zpool create -O encryption=on" \ "-O keyformat=passphrase -O keylocation=prompt $TESTPOOL1 $DISK2" log_must zfs unmount $TESTPOOL1 log_must zfs unload-key $TESTPOOL1 log_must eval "echo $PASSPHRASE | zfs load-key $TESTPOOL1" log_must key_available $TESTPOOL1 log_mustnot eval "echo $PASSPHRASE | zfs load-key $TESTPOOL1" log_pass "'zfs load-key' only loads the key for an unloaded encrypted dataset" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030101 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.241675147 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/setup.ksh0000755016037001603700000000173713607166133030111 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030370 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.243675211 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/cleanup.ksh0000755016037001603700000000171013607166133030367 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/zfs_load-key_all.0000644000000000000000000000007413607166133031452 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.248675373 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_all.ksh0000755016037001603700000000430513607166133032162 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs load-key -a' should load keys for all datasets. # # STRATEGY: # 1. Create an encrypted filesystem, encrypted zvol, and an encrypted pool # 2. Unmount all datasets and unload their keys # 3. Attempt to load all dataset keys # 4. Verify each dataset has its key loaded # 5. Attempt to mount the pool and filesystem # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/zvol && log_must zfs destroy $TESTPOOL/zvol poolexists $TESTPOOL1 && log_must destroy_pool $TESTPOOL1 } log_onexit cleanup log_assert "'zfs load-key -a' should load keys for all datasets" log_must eval "echo $PASSPHRASE1 > /$TESTPOOL/pkey" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must zfs create -V 64M -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/zvol typeset DISK2="$(echo $DISKS | awk '{ print $2}')" log_must zpool create -O encryption=on -O keyformat=passphrase \ -O keylocation=file:///$TESTPOOL/pkey $TESTPOOL1 $DISK2 log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/zvol log_must zfs unmount $TESTPOOL1 log_must zfs unload-key $TESTPOOL1 log_must zfs load-key -a log_must key_available $TESTPOOL1 log_must key_available $TESTPOOL/zvol log_must key_available $TESTPOOL/$TESTFS1 log_must zfs mount $TESTPOOL1 log_must zfs mount $TESTPOOL/$TESTFS1 log_pass "'zfs load-key -a' loads keys for all datasets" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/zfs_load-key.cfg0000644000000000000000000000007413607166133031302 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.237675019 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key.cfg0000644016037001603700000000153113607166133031277 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # export PASSPHRASE="password" export PASSPHRASE1="password1" export PASSPHRASE2="password2" export HEXKEY="000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F" export HEXKEY1="201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201" export RAWKEY="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" export RAWKEY1="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/zfs_load-key_comm0000644000000000000000000000007413607166133031557 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.239675083 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib0000644016037001603700000000353113607166133033366 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key.cfg # Return 0 is a dataset key is available, 1 otherwise # # $1 - dataset # function key_available { typeset ds=$1 datasetexists $ds || return 1 typeset val=$(get_prop keystatus $ds) if [[ "$val" == "none" ]]; then log_note "Dataset $ds is not encrypted" elif [[ "$val" == "available" ]]; then return 0 fi return 1 } function key_unavailable { key_available $1 && return 1 return 0 } function verify_keyformat { typeset ds=$1 typeset format=$2 typeset fmt=$(get_prop keyformat $ds) if [[ "$fmt" != "$format" ]]; then log_fail "Expected keyformat $format, got $fmt" fi return 0 } function verify_keylocation { typeset ds=$1 typeset location=$2 typeset keyloc=$(get_prop keylocation $ds) if [[ "$keyloc" != "$location" ]]; then log_fail "Expected keylocation $location, got $keyloc" fi return 0 } function verify_encryption_root { typeset ds=$1 typeset val=$2 typeset eroot=$(get_prop encryptionroot $ds) if [[ "$eroot" != "$val" ]]; then log_note "Expected encryption root '$val', got '$eroot'" return 1 fi return 0 } function verify_origin { typeset ds=$1 typeset val=$2 typeset orig=$(get_prop origin $ds) if [[ "$orig" != "$val" ]]; then log_note "Expected origin '$val', got '$orig'" return 1 fi return 0 } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/zfs_load-key_noop0000644000000000000000000000007413607166133031577 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.255675597 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_noop.ksh0000755016037001603700000000274013607166133032366 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs load-key -n' should load the key for an already loaded dataset. # # STRATEGY: # 1. Create an encrypted dataset # 2. Attempt to load the dataset's key # 3. Verify the key is loaded # 4. Attempt to load the dataset's key with an invalid key # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs load-key -n' should load the key for a loaded dataset" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_must eval "echo $PASSPHRASE | zfs load-key -n $TESTPOOL/$TESTFS1" log_must key_available $TESTPOOL/$TESTFS1 log_mustnot eval "echo $PASSPHRASE1 | zfs load-key -n $TESTPOOL/$TESTFS1" log_pass "'zfs load-key -n' loads the key for a loaded dataset" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/zfs_load-key_file0000644000000000000000000000007413607166133031543 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.250675437 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/zfs_load-key_file.ksh0000755016037001603700000000302313607166133032325 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs load-key' should load a dataset's key from a file. # # STRATEGY: # 1. Create an encrypted dataset with a key file # 2. Unmount the dataset and unload the key # 3. Attempt to load the dataset's key # 4. Verify the key is loaded # 5. Attempt to mount the dataset # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs load-key' should load a key from a file" log_must eval "echo $PASSPHRASE > /$TESTPOOL/pkey" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must zfs load-key $TESTPOOL/$TESTFS1 log_must key_available $TESTPOOL/$TESTFS1 log_must zfs mount $TESTPOOL/$TESTFS1 log_pass "'zfs load-key' loads a key from a file" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003030255 xustar000000000000000030 mtime=1579730435.276327748 30 atime=1579730454.958959699 30 ctime=1579730477.262675821 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_load-key/Makefile.in0000664016037001603700000006164713612143003030277 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_load-key DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_load-key ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_load-key.ksh \ zfs_load-key_all.ksh \ zfs_load-key_file.ksh \ zfs_load-key_location.ksh \ zfs_load-key_noop.ksh \ zfs_load-key_recursive.ksh dist_pkgdata_DATA = \ zfs_load-key.cfg \ zfs_load-key_common.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_load-key/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_load-key/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_sync0000644000000000000000000000013213612143060025746 xustar000000000000000030 mtime=1579730480.455778347 30 atime=1579730489.093055677 30 ctime=1579730480.455778347 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/0000775016037001603700000000000013612143060026027 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/PaxHeaders.151519/zpool_sync_001_pos.0000644000000000000000000000007413607166133031503 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.448778121 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/zpool_sync_001_pos.ksh0000755016037001603700000000463713607166133032223 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # Copyright (c) 2017 Datto Inc. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify 'zpool sync' can sync txgs to the pool(s) main vdevs. # # STRATEGY: # 1. Create a pool # 2. Use zdb to obtain current txg # 3. Create a file in the pool if we're not using force sync # 4. Use zpool sync to sync pool # 5. Verify the new txg is now bigger than the saved one # verify_runnable "global" function get_txg { typeset -i txg=$(zdb -u $1 | sed -n 's/^[ ][ ]*txg = \(.*\)$/\1/p') echo $txg } set -A args "sync $TESTPOOL" "sync -f $TESTPOOL" "sync" "sync -f" log_assert "Verify 'zpool sync' can sync a pool" typeset -i i=0 typeset -i orig_txg=0 typeset -i new_txg=0 while [[ $i -lt ${#args[*]} ]]; do orig_txg=$(get_txg $TESTPOOL) if ! [[ "${args[i]}" =~ "-f" ]]; then log_must touch /$TESTPOOL/$i fi log_must zpool ${args[i]} new_txg=$(get_txg $TESTPOOL) if [[ $orig_txg -ge $new_txg ]]; then log_fail "'zpool ${args[i]}' failed: txg $orig_txg >= $new_txg" fi ((i = i + 1)) done # sync_pool is implemented using 'zpool sync' so let's test it as well # make sure we can use sync_pool with force sync explicitly not used orig_txg=$(get_txg $TESTPOOL) log_must touch /$TESTPOOL/$i log_must sync_pool $TESTPOOL false new_txg=$(get_txg $TESTPOOL) if [[ $orig_txg -ge $new_txg ]]; then log_fail "'sync_pool $TESTPOOL false' failed: txg $orig_txg >= $new_txg" fi # make sure we can use sync_pool with force sync explicitly enabled orig_txg=$(get_txg $TESTPOOL) log_must sync_pool $TESTPOOL true new_txg=$(get_txg $TESTPOOL) if [[ $orig_txg -ge $new_txg ]]; then log_fail "'sync_pool $TESTPOOL true' failed: txg $orig_txg >= $new_txg" fi # make sure we can use sync_pool with force sync implicitly not used orig_txg=$(get_txg $TESTPOOL) log_must touch /$TESTPOOL/$i log_must sync_pool $TESTPOOL new_txg=$(get_txg $TESTPOOL) if [[ $orig_txg -ge $new_txg ]]; then log_fail "'sync_pool $TESTPOOL' failed: txg $orig_txg >= $new_txg" fi log_pass "'zpool sync' syncs pool as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/PaxHeaders.151519/zpool_sync_002_neg.0000644000000000000000000000007413607166133031454 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.451778219 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/zpool_sync_002_neg.ksh0000755016037001603700000000213013607166133032156 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # Copyright (c) 2017 Datto Inc. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A badly formed parameter passed to 'zpool sync' should # return an error. # # STRATEGY: # 1. Create an array containing bad 'zpool sync' parameters. # 2. For each element, execute the sub-command. # 3. Verify it returns an error. # verify_runnable "global" set -A args "1" "-a" "-?" "--%" "-123456" "0.5" "-o" "-b" "-b no" "-z 2" log_assert "Execute 'zpool sync' using invalid parameters." typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool sync ${args[i]} ((i = i + 1)) done log_pass "Invalid parameters to 'zpool sync' fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030076 xustar000000000000000030 atime=1579730437.648403906 30 ctime=1579730480.453778283 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/Makefile.am0000644016037001603700000000027013607166133030072 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_sync dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zpool_sync_001_pos.ksh \ zpool_sync_002_neg.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027711 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.446778057 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/setup.ksh0000755016037001603700000000177113607166133027717 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030200 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.444777993 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/cleanup.ksh0000755016037001603700000000174213607166133030204 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030067 xustar000000000000000030 mtime=1579730437.683405032 30 atime=1579730456.344004169 30 ctime=1579730480.455778347 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_sync/Makefile.in0000664016037001603700000005735013612143005030105 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_sync DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_sync ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zpool_sync_001_pos.ksh \ zpool_sync_002_neg.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_sync/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_sync/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_clone0000644000000000000000000000013213612143054025534 xustar000000000000000030 mtime=1579730476.717658322 30 atime=1579730489.093055677 30 ctime=1579730476.717658322 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/0000775016037001603700000000000013612143054025615 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_003_pos.ks0000644000000000000000000000007413607166133031411 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.694657584 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_003_pos.ksh0000755016037001603700000000440213607166133031561 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs clone -o property=value filesystem' can successfully create a ZFS # clone filesystem with correct property set. # # STRATEGY: # 1. Create a ZFS clone filesystem in the storage pool with -o option # 2. Verify the filesystem created successfully # 3. Verify the property is correctly set # verify_runnable "both" function cleanup { if snapexists $SNAPFS ; then log_must zfs destroy -Rf $SNAPFS fi } log_onexit cleanup log_assert "'zfs clone -o property=value filesystem' can successfully create" \ "a ZFS clone filesystem with correct property set." log_must zfs snapshot $SNAPFS typeset -i i=0 while (( $i < ${#RW_FS_PROP[*]} )); do log_must zfs clone -o ${RW_FS_PROP[$i]} $SNAPFS $TESTPOOL/$TESTCLONE datasetexists $TESTPOOL/$TESTCLONE || \ log_fail "zfs clone $TESTPOOL/$TESTCLONE fail." propertycheck $TESTPOOL/$TESTCLONE ${RW_FS_PROP[i]} || \ log_fail "${RW_FS_PROP[i]} is failed to set." log_must zfs destroy -f $TESTPOOL/$TESTCLONE (( i = i + 1 )) done log_pass "'zfs clone -o property=value filesystem' can successfully create" \ "a ZFS clone filesystem with correct property set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_deeply_nes0000644000000000000000000000007413607166133031741 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.714658226 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_deeply_nested.ksh0000755016037001603700000000355613607166133033233 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Deeply nested clones can be created and destroyed successfully # # STRATEGY: # 1. Create a deeply nested chain of clones # 2. Verify we can promote and destroy datasets in the chain without issues # NOTE: # Ported from scripts used to reproduce issue #3959 and #7279 # verify_runnable "both" function cleanup { destroy_dataset "$clonesfs" "-rRf" } log_onexit cleanup log_assert "Deeply nested clones should be created and destroyed without issues" snapname='snap' snaprename='temporary-snap' clonesfs="$TESTPOOL/$TESTFS1" # NOTE: set mountpoint=none to avoid mount/umount calls and speed up the process log_must zfs create -o mountpoint=none $clonesfs log_must zfs create $clonesfs/0 dsname="$clonesfs/0@$snapname" log_must zfs snapshot $dsname # 1. Create a deeply nested chain of clones for c in {1..250}; do log_must zfs clone $dsname $clonesfs/$c dsname="$clonesfs/$c@$snapname" log_must zfs snapshot $dsname done # 2. Verify we can promote and destroy datasets in the chain without issues for c in {0..249}; do log_must zfs rename $clonesfs/$c@$snapname $clonesfs/$c@$snaprename log_must zfs promote $clonesfs/$((c+1)) log_must zfs destroy -r $clonesfs/$c log_must zfs destroy $clonesfs/$((c+1))@$snaprename done log_pass "Deeply nested clones can be created and destroyed successfully" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_010_pos.ks0000644000000000000000000000007413612141514031377 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.709658066 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_010_pos.ksh0000755016037001603700000001354213612141514031554 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify 'zfs list -t all -o name,origin,clones' prints the correct # clone information # # STRATEGY: # 1. Create datasets # 2. Create recursive snapshots and their clones # 3. Verify zfs clones property displays right information for different # cases # verify_runnable "both" function local_cleanup { typeset -i i=1 for ds in $datasets; do datasetexists $ds/$TESTCLONE.$i && \ log_must zfs destroy -rf $ds/$TESTCLONE.$i datasetexists $ds && log_must zfs destroy -Rf $ds ((i=i+1)) done } # Set up filesystem with clones function setup_ds { typeset -i i=1 # create nested datasets log_must zfs create -p $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3 # verify dataset creation for ds in $datasets; do datasetexists $ds || log_fail "Create $ds dataset fail." done # create recursive nested snapshot log_must zfs snapshot -r $TESTPOOL/$TESTFS1@snap for ds in $datasets; do datasetexists $ds@snap || \ log_fail "Create $ds@snap snapshot fail." done for ds in $datasets; do for fs in $datasets; do log_must zfs clone $ds@snap $fs/$TESTCLONE.$i done ((i=i+1)) done } # Verify clone list function verify_clones { typeset -i no_clones=$1 typeset unexpected=$2 typeset clone_snap=$3 typeset -i i=1 for ds in $datasets; do if [[ -n $clone_snap ]]; then clone_snap=/$TESTCLONE.$i fi snapshot=$(echo "$names" | grep $ds$clone_snap@snap) actual_clone=$(zfs list -t all -o clones $snapshot | tail -1) save=$IFS IFS=',' typeset -a clones=() for token in $actual_clone; do clones=( "${clones[@]}" "$token" ) done IFS=$save [[ ${#clones[*]} -ne $no_clones ]] && \ log_fail "$snapshot has unexpected number of clones" \ " ${#clones[*]}" expected_clone="" unexpected_clone="" if [[ $unexpected -eq 1 ]]; then for fs in $datasets; do if [[ $fs == $ds ]]; then if [[ -z $clone_snap ]]; then unexpected_clone=$fs/$TESTCLONE.$i (for match in ${clones[@]};do [[ $match != $unexpected_clone ]] && \ exit 0; done) || log_fail \ "Unexpected clones of the snapshot" else expected_clone=$fs unexpected_clone=$fs/$TESTCLONE.$i (for match in ${clones[@]};do [[ $match == $expected_clone ]] && \ [[ $match != $unexpected_clone ]] \ && exit 0; done) || log_fail \ "Unexpected clones of the snapshot" fi else expected_clone=$fs/$TESTCLONE.$i (for match in ${clones[@]};do [[ $match == $expected_clone ]] && \ exit 0; done) || log_fail \ "Unexpected clones of the snapshot" fi done else for fs in $datasets; do expected_clone=$fs/$TESTCLONE.$i (for match in ${clones[@]};do [[ $match == $expected_clone ]] && exit 0; \ done) || log_fail "Unexpected clones" \ " of the snapshot" done fi ((i=i+1)) done } log_onexit local_cleanup datasets="$TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1/$TESTFS2 $TESTPOOL/$TESTFS1/$TESTFS2/$TESTFS3" typeset -a d_clones typeset -a deferred_snaps typeset -i i log_must setup_ds log_note "Verify zfs clone property for multiple clones" names=$(zfs list -rt all -o name $TESTPOOL) log_must verify_clones 3 0 log_note "verify clone property for clone deletion" i=1 for ds in $datasets; do log_must zfs destroy $ds/$TESTCLONE.$i ((i=i+1)) done names=$(zfs list -rt all -o name $TESTPOOL) log_must verify_clones 2 1 log_must local_cleanup log_must setup_ds log_note "verify zfs deferred destroy on clones property" names=$(zfs list -rt all -o name $TESTPOOL) for ds in $datasets; do log_must zfs destroy -d $ds@snap deferred_snaps=( "${deferred_snaps[@]}" "$ds@snap" ) done log_must verify_clones 3 0 log_note "verify zfs deferred destroy by destroying clones on clones property" d_clones=() i=1 for ds in $datasets; do for fs in $datasets; do log_must zfs destroy $fs/$TESTCLONE.$i d_clones=( "${d_clones[@]}" "$fs/$TESTCLONE.$i" ) done ((i=i+1)) done names=$(zfs list -rtall -o name $TESTPOOL) for snap in ${deferred_snaps[@]}; do status=$(echo "$names" | grep $snap) [[ -z $status ]] || \ log_fail "$snap exist after deferred destroy" done for dclone in ${d_clones[@]}; do log_note "D CLONE = $dclone" status=$(echo "$names" | grep $dclone) [[ -z $status ]] || \ log_fail "$dclone exist after deferred destroy" done log_must local_cleanup log_must setup_ds log_note "verify clone property for zfs promote" i=1 for ds in $datasets; do log_must zfs promote $ds/$TESTCLONE.$i ((i=i+1)) done names=$(zfs list -rt all -o name,clones $TESTPOOL) log_must verify_clones 3 1 $TESTCLONE for ds in $datasets; do log_must zfs promote $ds done log_must local_cleanup log_note "verify clone list truncated correctly" fs=$TESTPOOL/$TESTFS1 xs=""; for i in {1..200}; do xs+="x"; done if is_linux; then ZFS_MAXPROPLEN=4096 else ZFS_MAXPROPLEN=1024 fi log_must zfs create $fs log_must zfs snapshot $fs@snap for (( i = 1; i <= (ZFS_MAXPROPLEN / 200 + 1); i++ )); do log_must zfs clone ${fs}@snap ${fs}/${TESTCLONE}${xs}.${i} done clone_list=$(zfs list -o clones $fs@snap) char_count=$(echo "$clone_list" | tail -1 | wc | awk '{print $3}') [[ $char_count -eq $ZFS_MAXPROPLEN ]] || \ log_fail "Clone list not truncated correctly. Unexpected character count" \ "$char_count" log_pass "'zfs list -o name,origin,clones prints the correct clone information." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133027660 xustar000000000000000030 atime=1579730434.843313846 29 ctime=1579730476.71665829 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/Makefile.am0000644016037001603700000000066713607166133027667 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_clone dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_clone_001_neg.ksh \ zfs_clone_002_pos.ksh \ zfs_clone_003_pos.ksh \ zfs_clone_004_pos.ksh \ zfs_clone_005_pos.ksh \ zfs_clone_006_pos.ksh \ zfs_clone_007_pos.ksh \ zfs_clone_008_neg.ksh \ zfs_clone_009_neg.ksh \ zfs_clone_010_pos.ksh \ zfs_clone_encrypted.ksh \ zfs_clone_deeply_nested.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_008_neg.ks0000644000000000000000000000007413607166133031366 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.704657904 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_008_neg.ksh0000755016037001603700000000433313607166133031541 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs clone -o ' fails with bad arguments, including: # *Same property set multiple times via '-o property=value' # *Volume's property set on filesystem # # STRATEGY: # 1. Create an array of arguments # 2. Execute 'zfs clone -o ' with each argument # 3. Verify an error is returned. # verify_runnable "both" function cleanup { if snapexists $SNAPFS ; then log_must zfs destroy -Rf $SNAPFS fi } log_onexit cleanup log_assert "Verify 'zfs clone -o ' fails with bad argument." log_must zfs snapshot $SNAPFS typeset -i i=0 while (( $i < ${#RW_FS_PROP[*]} )); do log_mustnot zfs clone -o ${RW_FS_PROP[i]} -o ${RW_FS_PROP[i]} \ $SNAPFS $TESTPOOL/$TESTCLONE log_mustnot zfs clone -p -o ${RW_FS_PROP[i]} -o ${RW_FS_PROP[i]} \ $SNAPFS $TESTPOOL/$TESTCLONE ((i = i + 1)) done i=0 while (( $i < ${#VOL_ONLY_PROP[*]} )); do log_mustnot zfs clone -o ${VOL_ONLY_PROP[i]} \ $SNAPFS $TESTPOOL/$TESTCLONE log_mustnot zfs clone -p -o ${VOL_ONLY_PROP[i]} \ $SNAPFS $TESTPOOL/$TESTCLONE ((i = i + 1)) done log_pass "'zfs clone -o ' fails with bad argument." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027474 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.685657294 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/setup.ksh0000755016037001603700000000205513607166133027476 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_volume_setup ${DISK} zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027763 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.687657358 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/cleanup.ksh0000755016037001603700000000172213607166133027765 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_container_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_002_pos.ks0000644000000000000000000000007413607166133031410 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.691657488 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_002_pos.ksh0000755016037001603700000000402113607166133031555 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs clone -p' should work as expected # # STRATEGY: # 1. prepare snapshots # 2. make sure without -p option, 'zfs clone' will fail # 3. with -p option, the clone can be created # 4. run 'zfs clone -p' again, the exit code should be zero # verify_runnable "both" function setup_all { log_note "Create snapshots and mount them..." for snap in $SNAPFS $SNAPFS1 ; do if ! snapexists $snap ; then log_must zfs snapshot $snap fi done return 0 } function cleanup_all { if datasetexists $TESTPOOL/notexist ; then log_must zfs destroy -rRf $TESTPOOL/notexist fi for snap in $SNAPFS $SNAPFS1 ; do if snapexists $snap ; then log_must zfs destroy -Rf $snap fi done return 0 } log_assert "clone -p should work as expected." log_onexit cleanup_all setup_all log_must verify_opt_p_ops "clone" "fs" $SNAPFS \ $TESTPOOL/notexist/new/clonefs$$ if is_global_zone ; then log_must verify_opt_p_ops "clone" "vol" $SNAPFS1 \ $TESTPOOL/notexist/new/clonevol$$ fi log_pass "clone -p should work as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_001_neg.ks0000644000000000000000000000007413607166133031357 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.689657423 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_001_neg.ksh0000755016037001603700000000676313607166133031543 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs clone' should fail with inapplicable scenarios, including: # * Null arguments # * non-existent snapshots. # * invalid characters in ZFS namesapec # * Leading slash in the target clone name # * The argument contains an empty component. # * The pool specified in the target doesn't exist. # * The parent dataset of the target doesn't exist. # * The argument refer to a pool, not dataset. # * The target clone already exists. # * Null target clone argument. # * Too many arguments. # * Invalid record sizes. # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute the sub-command # 3. Verify an error is returned. # verify_runnable "both" typeset target1=$TESTPOOL/$TESTFS1 typeset target2=$TESTPOOL/$TESTCTR1/$TESTFS1 typeset targets="$target1 $target2 $NONEXISTPOOLNAME/$TESTFS" set -A args "" \ "$TESTPOOL/$TESTFS@blah $target1" "$TESTPOOL/$TESTVOL@blah $target1" \ "$TESTPOOL/$TESTFS@blah* $target1" "$TESTPOOL/$TESTVOL@blah* $target1" \ "$SNAPFS $target1*" "$SNAPFS1 $target1*" \ "$SNAPFS /$target1" "$SNAPFS1 /$target1" \ "$SNAPFS $TESTPOOL//$TESTFS1" "$SNAPFS1 $TESTPOOL//$TESTFS1" \ "$SNAPFS $NONEXISTPOOLNAME/$TESTFS" "$SNAPFS1 $NONEXISTPOOLNAME/$TESTFS" \ "$SNAPFS" "$SNAPFS1" \ "$SNAPFS $target1 $target2" "$SNAPFS1 $target1 $target2" \ "-o recordsize=2M $SNAPFS1 $target1" \ "-o recordsize=128B $SNAPFS1 $target1" typeset -i argsnum=${#args[*]} typeset -i j=0 while (( j < argsnum )); do args[((argsnum+j))]="-p ${args[j]}" ((j = j + 1)) done set -A moreargs "$SNAPFS $target2" "$SNAPFS1 $target2" \ "$SNAPFS $TESTPOOL" "$SNAPFS1 $TESTPOOL" \ "$SNAPFS $TESTPOOL/$TESTCTR" "$SNAPFS $TESTPOOL/$TESTFS" \ "$SNAPFS1 $TESTPOOL/$TESTCTR" "$SNAPFS1 $TESTPOOL/$TESTFS" set -A args ${args[*]} ${moreargs[*]} function setup_all { log_note "Create snapshots and mount them..." for snap in $SNAPFS $SNAPFS1 ; do if ! snapexists $snap ; then log_must zfs snapshot $snap fi done return 0 } function cleanup_all { for fs in $targets; do datasetexists $fs && log_must zfs destroy -f $fs done for snap in $SNAPFS $SNAPFS1 ; do snapexists $snap && log_must zfs destroy -Rf $snap done return 0 } log_assert "Badly-formed 'zfs clone' with inapplicable scenarios" \ "should return an error." log_onexit cleanup_all setup_all typeset -i i=0 while (( i < ${#args[*]} )); do log_mustnot zfs clone ${args[i]} ((i = i + 1)) done log_pass "Badly formed 'zfs clone' with inapplicable scenarios" \ "fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_encrypted.0000644000000000000000000000007413607166133031665 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.712658162 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_encrypted.ksh0000755016037001603700000000527713607166133032406 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs clone' should create encrypted clones of encrypted datasets # # STRATEGY: # 1. Create an encrypted dataset # 2. Create a snapshot of the dataset # 3. Attempt to clone the snapshot as an unencrypted dataset # 4. Attempt to clone the snapshot with a new key # 5. Attempt to clone the snapshot as a child of an unencrypted dataset # 6. Attempt to clone the snapshot as a child of an encrypted dataset # 7. Verify the encryption root of the datasets # 8. Unmount all datasets and unload their keys # 9. Attempt to load the encryption root's key # 10. Verify each dataset's key is loaded # 11. Attempt to mount each dataset # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS2 datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs clone' should create encrypted clones of encrypted datasets" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_must zfs snapshot $TESTPOOL/$TESTFS1@now log_mustnot zfs clone -o encryption=off $TESTPOOL/$TESTFS1@now \ $TESTPOOL/$TESTFS2 log_mustnot eval "echo $PASSPHRASE1 | zfs clone -o keyformat=passphrase" \ "$TESTPOOL/$TESTFS1@now $TESTPOOL/$TESTFS2" log_must zfs clone $TESTPOOL/$TESTFS1@now $TESTPOOL/$TESTFS2 log_must zfs clone $TESTPOOL/$TESTFS1@now $TESTPOOL/$TESTFS1/child log_must verify_encryption_root $TESTPOOL/$TESTFS2 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/child $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL/$TESTFS2 log_must zfs unload-key -a log_must eval "echo $PASSPHRASE | zfs load-key $TESTPOOL/$TESTFS1" log_must key_available $TESTPOOL/$TESTFS1 log_must key_available $TESTPOOL/$TESTFS1/child log_must key_available $TESTPOOL/$TESTFS2 log_must zfs mount $TESTPOOL/$TESTFS1 log_must zfs mount $TESTPOOL/$TESTFS1/child log_must zfs mount $TESTPOOL/$TESTFS2 log_pass "'zfs clone' creates encrypted clones of encrypted datasets" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_004_pos.ks0000644000000000000000000000007413607166133031412 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.696657648 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_004_pos.ksh0000755016037001603700000000471413607166133031570 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs clone -o property=value filesystem' can successfully create a ZFS # clone filesystem with multiple properties set. # # STRATEGY: # 1. Create a ZFS clone filesystem in the storage pool with multiple -o options # 2. Verify the filesystem created successfully # 3. Verify the properties are correctly set # verify_runnable "both" function cleanup { if snapexists $SNAPFS ; then log_must zfs destroy -Rf $SNAPFS fi } log_onexit cleanup log_assert "'zfs clone -o property=value filesystem' can successfully create" \ "a ZFS clone filesystem with multiple properties set." typeset -i i=0 typeset opts="" log_must zfs snapshot $SNAPFS while (( $i < ${#RW_FS_PROP[*]} )); do if [[ ${RW_FS_PROP[$i]} != *"checksum"* ]]; then opts="$opts -o ${RW_FS_PROP[$i]}" fi (( i = i + 1 )) done log_must zfs clone $opts $SNAPFS $TESTPOOL/$TESTCLONE datasetexists $TESTPOOL/$TESTCLONE || \ log_fail "zfs create $TESTPOOL/$TESTCLONE fail." i=0 while (( $i < ${#RW_FS_PROP[*]} )); do if [[ ${RW_FS_PROP[$i]} != *"checksum"* ]]; then propertycheck $TESTPOOL/$TESTCLONE ${RW_FS_PROP[i]} || \ log_fail "${RW_FS_PROP[i]} is failed to set." fi (( i = i + 1 )) done log_pass "'zfs clone -o property=value filesystem' can successfully create" \ "a ZFS clone filesystem with multiple properties set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_009_neg.ks0000644000000000000000000000007413607166133031367 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.707658001 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_009_neg.ksh0000755016037001603700000000433613607166133031545 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs clone -o ' fails with badly formed arguments,including: # *Same property set multiple times via '-o property=value' # *Filesystems's property set on volume # # STRATEGY: # 1. Create an array of badly formed arguments # 2. For each argument, execute 'zfs clone -o ' # 3. Verify an error is returned. # verify_runnable "global" function cleanup { if snapexists $SNAPFS1 ; then log_must zfs destroy -Rf $SNAPFS1 fi } log_onexit cleanup log_assert "Verify 'zfs clone -o ' fails with bad argument." log_must zfs snapshot $SNAPFS1 typeset -i i=0 while (( $i < ${#RW_VOL_PROP[*]} )); do log_mustnot zfs clone -o ${RW_VOL_PROP[i]} -o ${RW_VOL_PROP[i]} \ $SNAPFS1 $TESTPOOL/$TESTCLONE log_mustnot zfs clone -p -o ${RW_VOL_PROP[i]} -o ${RW_VOL_PROP[i]} \ $SNAPFS1 $TESTPOOL/$TESTCLONE ((i = i + 1)) done i=0 while (( $i < ${#FS_ONLY_PROP[*]} )); do log_mustnot zfs clone -o ${FS_ONLY_PROP[i]} \ $SNAPFS1 $TESTPOOL/$TESTCLONE log_mustnot zfs clone -p -o ${FS_ONLY_PROP[i]} \ $SNAPFS1 $TESTPOOL/$TESTCLONE ((i = i + 1)) done log_pass "Verify 'zfs clone -o ' fails with bad argument." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002027647 xustar000000000000000030 mtime=1579730434.880315034 30 atime=1579730454.743952795 30 ctime=1579730476.717658322 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/Makefile.in0000664016037001603700000005774413612143002027674 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_clone DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_clone ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_clone_001_neg.ksh \ zfs_clone_002_pos.ksh \ zfs_clone_003_pos.ksh \ zfs_clone_004_pos.ksh \ zfs_clone_005_pos.ksh \ zfs_clone_006_pos.ksh \ zfs_clone_007_pos.ksh \ zfs_clone_008_neg.ksh \ zfs_clone_009_neg.ksh \ zfs_clone_010_pos.ksh \ zfs_clone_encrypted.ksh \ zfs_clone_deeply_nested.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_clone/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_clone/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_007_pos.ks0000644000000000000000000000007313607166133031414 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.70265784 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_007_pos.ksh0000755016037001603700000000414313607166133031567 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs clone -o version=' could upgrade version, but downgrade is denied. # # STRATEGY: # 1. Create clone with "-o version=" specified # 2. Verify it succeed while upgrade, but fails while the version downgraded. # ZFS_VERSION=$(zfs upgrade | head -1 | awk '{print $NF}' \ | sed -e 's/\.//g') verify_runnable "both" function cleanup { if snapexists $SNAPFS ; then log_must zfs destroy -Rf $SNAPFS fi } log_onexit cleanup log_assert "'zfs clone -o version=' could upgrade version," \ "but downgrade is denied." log_must zfs snapshot $SNAPFS typeset -i ver if (( ZFS_TEST_VERSION == 0 )) ; then (( ZFS_TEST_VERSION = ZFS_VERSION )) fi (( ver = ZFS_TEST_VERSION )) while (( ver <= ZFS_VERSION )); do log_must zfs clone -o version=$ver $SNAPFS $TESTPOOL/$TESTCLONE cleanup (( ver = ver + 1 )) done (( ver = 0 )) while (( ver < ZFS_TEST_VERSION )); do log_mustnot zfs clone -o version=$ver \ $SNAPFS $TESTPOOL/$TESTCLONE log_mustnot datasetexists $TESTPOOL/$TESTCLONE cleanup (( ver = ver + 1 )) done log_pass "'zfs clone -o version=' could upgrade version," \ "but downgrade is denied." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_005_pos.ks0000644000000000000000000000007413607166133031413 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.698657712 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_005_pos.ksh0000755016037001603700000000444613607166133031573 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs clone -o property=value -V size volume' can successfully create a ZFS # clone volume with correct property set. # # STRATEGY: # 1. Create a ZFS clone volume in the storage pool with -o option # 2. Verify the volume created successfully # 3. Verify the property is correctly set # verify_runnable "global" function cleanup { if snapexists $SNAPFS1 ; then log_must zfs destroy -Rf $SNAPFS1 fi } log_onexit cleanup log_assert "'zfs clone -o property=value -V size volume' can successfully" \ "create a ZFS clone volume with correct property set." log_must zfs snapshot $SNAPFS1 typeset -i i=0 while (( $i < ${#RW_VOL_CLONE_PROP[*]} )); do log_must zfs clone -o ${RW_VOL_CLONE_PROP[$i]} $SNAPFS1 \ $TESTPOOL/$TESTCLONE block_device_wait datasetexists $TESTPOOL/$TESTCLONE || \ log_fail "zfs clone $TESTPOOL/$TESTCLONE fail." propertycheck $TESTPOOL/$TESTCLONE ${RW_VOL_CLONE_PROP[i]} || \ log_fail "${RW_VOL_CLONE_PROP[i]} is failed to set." log_must zfs destroy -f $TESTPOOL/$TESTCLONE (( i = i + 1 )) done log_pass "'zfs clone -o property=value volume' can successfully" \ "create a ZFS clone volume with correct property set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/PaxHeaders.151519/zfs_clone_006_pos.ks0000644000000000000000000000007413607166133031414 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.700657776 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_006_pos.ksh0000755016037001603700000000457713607166133031601 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs clone -o property=value volume' can successfully create a ZFS # clone volume with multiple properties set. # # STRATEGY: # 1. Create a ZFS clone volume in the storage pool with -o option # 2. Verify the volume created successfully # 3. Verify the properties are correctly set # verify_runnable "global" function cleanup { if snapexists $SNAPFS1 ; then log_must_busy zfs destroy -Rf $SNAPFS1 fi } log_onexit cleanup log_assert "'zfs clone -o property=value volume' can successfully" \ "create a ZFS clone volume with multiple correct properties set." typeset -i i=0 typeset opts="" log_must zfs snapshot $SNAPFS1 while (( $i < ${#RW_VOL_CLONE_PROP[*]} )); do if [[ ${RW_VOL_CLONE_PROP[$i]} != *"checksum"* ]]; then opts="$opts -o ${RW_VOL_CLONE_PROP[$i]}" fi (( i = i + 1 )) done log_must zfs clone $opts $SNAPFS1 $TESTPOOL/$TESTCLONE i=0 while (( $i < ${#RW_VOL_CLONE_PROP[*]} )); do if [[ ${RW_VOL_CLONE_PROP[$i]} != *"checksum"* ]]; then propertycheck $TESTPOOL/$TESTCLONE ${RW_VOL_CLONE_PROP[i]} || \ log_fail "${RW_VOL_CLONE_PROP[i]} is failed to set." fi (( i = i + 1 )) done log_pass "'zfs clone -o property=value volume' can successfully" \ "create a ZFS clone volume with multiple correct properties set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_labelclear0000644000000000000000000000013213612143057027066 xustar000000000000000030 mtime=1579730479.767756255 30 atime=1579730489.093055677 30 ctime=1579730479.767756255 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/0000775016037001603700000000000013612143057027147 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/PaxHeaders.151519/zpool_labelcl0000644000000000000000000000007413612141513031707 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.756755903 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/zpool_labelclear_active.ksh0000755016037001603700000000402713612141513034521 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2016 Nexenta Systems, Inc. # . $STF_SUITE/tests/functional/cli_root/zpool_labelclear/labelclear.cfg # DESCRIPTION: # Check that zpool labelclear will refuse to clear the label # (with or without -f) on any vdevs of the imported pool. # # STRATEGY: # 1. Create the pool with log device. # 2. Try clearing the label on data and log devices. # 3. Add auxiliary (cache/spare) vdevs. # 4. Try clearing the label on auxiliary vdevs. # 5. Check that zpool labelclear will return non-zero and # labels are intact. verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL } log_onexit cleanup log_assert "zpool labelclear will fail on all vdevs of imported pool" # Create simple pool, skip any mounts log_must zpool create -O mountpoint=none -f $TESTPOOL $disk1 log $disk2 # Check that labelclear [-f] will fail on ACTIVE pool vdevs log_mustnot zpool labelclear $disk1 log_must zdb -lq $disk1 log_mustnot zpool labelclear -f $disk1 log_must zdb -lq $disk1 log_mustnot zpool labelclear $disk2 log_must zdb -lq $disk2 log_mustnot zpool labelclear -f $disk2 log_must zdb -lq $disk2 # Add a cache/spare to the pool, check that labelclear [-f] will fail # on the vdev and will succeed once it's removed from pool config for vdevtype in "cache" "spare"; do log_must zpool add $TESTPOOL $vdevtype $disk3 log_mustnot zpool labelclear $disk3 log_must zdb -lq $disk3 log_mustnot zpool labelclear -f $disk3 log_must zdb -lq $disk3 log_must zpool remove $TESTPOOL $disk3 log_must zpool labelclear $disk3 log_mustnot zdb -lq $disk3 done log_pass "zpool labelclear will fail on all vdevs of imported pool" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/PaxHeaders.151519/labelclear.cf0000644000000000000000000000007413607166147031561 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.754755838 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/labelclear.cfg0000644016037001603700000000111513607166147031723 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2016 Nexenta Systems, Inc. # . $STF_SUITE/include/libtest.shlib typeset disks=(${DISKS[*]}) typeset disk1=${disks[0]} typeset disk2=${disks[1]} typeset disk3=${disks[2]} zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133031210 xustar000000000000000030 atime=1579730437.062385093 30 ctime=1579730479.765756191 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/Makefile.am0000644016037001603700000000042313607166133031204 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_labelclear dist_pkgdata_SCRIPTS = \ zpool_labelclear_active.ksh \ zpool_labelclear_exported.ksh \ zpool_labelclear_removed.ksh \ zpool_labelclear_valid.ksh dist_pkgdata_DATA = \ labelclear.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/PaxHeaders.151519/zpool_labelcl0000644000000000000000000000007413612141513031707 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.758755967 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/zpool_labelclear_exported.ksh0000755016037001603700000000415213612141513035077 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2016 Nexenta Systems, Inc. # . $STF_SUITE/tests/functional/cli_root/zpool_labelclear/labelclear.cfg # DESCRIPTION: # Check that zpool labelclear will refuse to clear the label # on ACTIVE vdevs of exported pool without -f, and will succeeded with -f. # # STRATEGY: # 1. Create a pool with log device. # 2. Export the pool. # 3. Check that zpool labelclear returns non-zero when trying to # clear the label on ACTIVE vdevs, and succeeds with -f. # 4. Add auxiliary vdevs (cache/spare). # 5. Check that zpool labelclear succeeds on auxiliary vdevs of # exported pool. verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL } log_onexit cleanup log_assert "zpool labelclear will fail on ACTIVE vdevs of exported pool and" \ "succeed with -f" for vdevtype in "" "cache" "spare"; do # Create simple pool, skip any mounts log_must zpool create -O mountpoint=none -f $TESTPOOL $disk1 log $disk2 # Add auxiliary vdevs (cache/spare) if [[ -n $vdevtype ]]; then log_must zpool add $TESTPOOL $vdevtype $disk3 fi # Export the pool log_must zpool export $TESTPOOL # Check that labelclear will fail without -f log_mustnot zpool labelclear $disk1 log_must zdb -lq $disk1 log_mustnot zpool labelclear $disk2 log_must zdb -lq $disk2 # Check that labelclear will succeed with -f log_must zpool labelclear -f $disk1 log_mustnot zdb -lq $disk1 log_must zpool labelclear -f $disk2 log_mustnot zdb -lq $disk2 # Check that labelclear on auxiliary vdevs will succeed if [[ -n $vdevtype ]]; then log_must zpool labelclear $disk3 log_mustnot zdb -lq $disk3 fi done log_pass "zpool labelclear will fail on ACTIVE vdevs of exported pool and" \ "succeed with -f" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/PaxHeaders.151519/zpool_labelcl0000644000000000000000000000007413607166133031720 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.763756127 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/zpool_labelclear_valid.ksh0000755016037001603700000000577613607166133034372 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2016 Nexenta Systems, Inc. # Copyright (c) 2019 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/tests/functional/cli_root/zpool_labelclear/labelclear.cfg # DESCRIPTION: # Check that `zpool labelclear` only clears valid labels. Expected # label offsets which do not contain intact labels are left untouched. # # STRATEGY: # 1. Create a pool with primary, log, spare and cache devices. # 2. Export the pool. # 3. Write a known pattern over the first two device labels. # 4. Verify with zdb that only the last two device labels are intact. # 5. Verify the pool could be imported using those labels. # 6. Run `zpool labelclear` to destroy those last two labels. # 7. Verify the pool can no longer be found; let alone imported. # 8. Verify the pattern is intact to confirm `zpool labelclear` did # not write to first two label offsets. # 9. Verify that no valid label remain. # verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL rm -f $PATTERN_FILE $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4 } log_onexit cleanup log_assert "zpool labelclear will only clear valid labels" PATTERN_FILE=$TEST_BASE_DIR/pattern DEVICE1="$TEST_BASE_DIR/device-1" DEVICE2="$TEST_BASE_DIR/device-2" DEVICE3="$TEST_BASE_DIR/device-3" DEVICE4="$TEST_BASE_DIR/device-4" log_must dd if=/dev/urandom of=$PATTERN_FILE bs=1048576 count=4 log_must truncate -s $SPA_MINDEVSIZE $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4 log_must zpool create -O mountpoint=none -f $TESTPOOL $DEVICE1 \ log $DEVICE2 cache $DEVICE3 spare $DEVICE4 log_must zpool export $TESTPOOL # Overwrite the first 4M of each device and verify the expected labels. for dev in $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4; do dd if=$PATTERN_FILE of=$dev bs=1048576 conv=notrunc log_must eval "zdb -l $dev | grep 'labels = 2 3'" done # Verify the pool could be imported using those labels. log_must eval "zpool import -d $TEST_BASE_DIR | grep $TESTPOOL" # Verify the last two labels on each vdev can be cleared. for dev in $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4; do log_must zpool labelclear -f $dev done # Verify there is no longer a pool which can be imported. log_mustnot eval "zpool import -d $TEST_BASE_DIR | grep $TESTPOOL" # Verify the original pattern over the first two labels is intact for dev in $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4; do log_must cmp -n $((4 * 1048576)) $dev $PATTERN_FILE log_mustnot zdb -lq $dev done # Verify an error is reported when there are no labels to clear. for dev in $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4; do log_mustnot zpool labelclear -f $dev done log_pass "zpool labelclear will only clear valid labels" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/PaxHeaders.151519/zpool_labelcl0000644000000000000000000000007413607166133031720 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.761756063 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/zpool_labelclear_removed.ksh0000755016037001603700000000351213607166133034716 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2016 Nexenta Systems, Inc. # Copyright (c) 2019 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/tests/functional/cli_root/zpool_labelclear/labelclear.cfg # DESCRIPTION: # Check that `zpool labelclear` can clear labels on removed devices. # # STRATEGY: # 1. Create a pool with primary, log, spare and cache devices. # 2. Remove a top-level vdev, log, spare, and cache device. # 3. Run `zpool labelclear` on the removed device. # 4. Verify the label has been removed. # verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL rm -f $DEVICE1 $DEVICE2 $DEVICE3 $DEVICE4 $DEVICE5 } log_onexit cleanup log_assert "zpool labelclear works for removed devices" DEVICE1="$TEST_BASE_DIR/device-1" DEVICE2="$TEST_BASE_DIR/device-2" DEVICE3="$TEST_BASE_DIR/device-3" DEVICE4="$TEST_BASE_DIR/device-4" DEVICE5="$TEST_BASE_DIR/device-5" log_must truncate -s $((SPA_MINDEVSIZE * 8)) $DEVICE1 log_must truncate -s $SPA_MINDEVSIZE $DEVICE2 $DEVICE3 $DEVICE4 $DEVICE5 log_must zpool create -f $TESTPOOL $DEVICE1 $DEVICE2 \ log $DEVICE3 cache $DEVICE4 spare $DEVICE5 log_must zpool sync # Remove each type of vdev and verify the label can be cleared. for dev in $DEVICE5 $DEVICE4 $DEVICE3 $DEVICE2; do log_must zpool remove $TESTPOOL $dev log_must zpool sync $TESTPOOL log_must zpool labelclear $dev log_mustnot zdb -lq $dev done log_pass "zpool labelclear works for removed devices" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143005031200 xustar000000000000000029 mtime=1579730437.09938628 30 atime=1579730455.986992705 30 ctime=1579730479.768756287 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/Makefile.in0000664016037001603700000006154013612143005031213 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_labelclear DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_labelclear ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ zpool_labelclear_active.ksh \ zpool_labelclear_exported.ksh \ zpool_labelclear_removed.ksh \ zpool_labelclear_valid.ksh dist_pkgdata_DATA = \ labelclear.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_labelclear/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_upgrade0000644000000000000000000000013213612143056026065 xustar000000000000000030 mtime=1579730478.605718944 30 atime=1579730489.093055677 30 ctime=1579730478.605718944 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/0000775016037001603700000000000013612143056026146 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/zfs_upgrade.kshlib0000644000000000000000000000007413607166133031663 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.581718174 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib0000644016037001603700000001062513607166133031664 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # For zfs create. # set -A zpl_create_versions 3 4 5 set -A spa_create_versions 9 15 24 # # For zfs upgrade # set -A zpl_upgrade_versions 3 4 5 set -A spa_upgrade_versions 9 15 24 function get_pool_version #pool { ver=$(get_pool_prop version $1) if [ "$ver" = "-" ]; then ver="5000" fi echo "$ver" } function default_setup_datasets #rootfs { typeset rootfs=$1 typeset pool=${rootfs%%/*} typeset -i vp=$(get_pool_version $pool) typeset -i version typeset -i m typeset -i spa_version typeset -i zpl_version for version in $ZFS_ALL_VERSIONS ; do typeset verfs eval verfs=\$ZFS_VERSION_$version typeset current_fs=$rootfs/$verfs typeset current_snap=${current_fs}@snap typeset current_clone=$rootfs/clone$verfs (( m=0 )) (( spa_version=0 )) while (( m < ${#zpl_create_versions[@]} )); do (( zpl_version=${zpl_create_versions[m]} )) if (( version == zpl_version )); then (( spa_version=${spa_create_versions[m]} )) break fi (( m+=1 )) done if (( spa_version != 0 )) && (( vp < spa_version )); then log_mustnot zfs create -o version=${version} ${current_fs} continue fi log_must zfs create -o version=${version} ${current_fs} log_must zfs snapshot ${current_snap} log_must zfs clone ${current_snap} ${current_clone} for subversion in $ZFS_ALL_VERSIONS ; do typeset subverfs eval subverfs=\$ZFS_VERSION_$subversion (( m=0 )) (( spa_version=0 )) while (( m < ${#zpl_create_versions[@]} )); do (( zpl_version=${zpl_create_versions[m]} )) if (( subversion == zpl_version )); then (( spa_version=${spa_create_versions[m]} )) break fi (( m+=1 )) done if (( spa_version != 0 )) && (( vp < spa_version )); then log_mustnot zfs create -o \ version=${subversion} ${current_fs}/$subverfs else log_must zfs create -o \ version=${subversion} ${current_fs}/$subverfs fi done done } function default_cleanup_datasets #rootfs { typeset rootfs=$1 if datasetexists $rootfs ; then log_must_busy zfs destroy -Rf $rootfs fi if datasetnonexists $rootfs ; then log_must zfs create $rootfs fi } function default_check_zfs_upgrade #rootfs { typeset rootfs=$1 typeset pool=${rootfs%%/*} typeset -i vp=$(get_pool_version $pool) typeset -i m typeset -i spa_version typeset -i zpl_version typeset newv typeset -i df_ret df -F zfs / > /dev/null 2>&1 df_ret=$? for newv in "" $ZFS_VERSION; do default_setup_datasets $rootfs if [[ -n $newv ]]; then opt="-V $newv" else newv=$ZFS_VERSION fi (( m=0 )) (( spa_version=0 )) while (( m < ${#zpl_upgrade_versions[@]} )); do (( zpl_version=${zpl_upgrade_versions[m]} )) if (( newv == zpl_version )); then (( spa_version=${spa_upgrade_versions[m]} )) break fi (( m+=1 )) done if (( df_ret != 0 )); then if (( spa_version != 0 )) && (( vp < spa_version )); then log_mustnot eval "zfs upgrade $opt -a >/dev/null" log_must eval "zpool upgrade $pool >/dev/null" vp=$(get_pool_version $pool) fi log_must zfs upgrade $opt -a for fs in $(zfs list -rH -t filesystem -o name $rootfs) ; do log_must check_fs_version $fs $newv done fi default_cleanup_datasets $rootfs done } function check_fs_version #filesystem version { typeset fs=$1 typeset -i version=${2:-$ZFS_VERSION} if [[ -z $fs ]]; then log_fail "No filesystem specified." fi typeset -i curv=$(get_prop version $fs) if (( curv != version )); then return 1 fi return 0 } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/zfs_upgrade_004_po0000644000000000000000000000007313607166133031470 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.59371856 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_004_pos.ksh0000755016037001603700000000554313607166133032447 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # Executing 'zfs upgrade -r [-V version] filesystem' command succeeds, # it upgrade filesystem recursively to specific or current version. # # STRATEGY: # 1. Prepare a set of datasets which contain old-version and current version. # 2. Execute 'zfs upgrade -r [-V version] filesystem', verify return 0, # 3. Verify the filesystem be updated recursively as expected. # verify_runnable "both" function cleanup { if datasetexists $rootfs ; then log_must zfs destroy -Rf $rootfs fi log_must zfs create $rootfs } function setup_datasets { datasets="" for version in $ZFS_ALL_VERSIONS ; do typeset verfs eval verfs=\$ZFS_VERSION_$version typeset current_fs=$rootfs/$verfs typeset current_snap=${current_fs}@snap typeset current_clone=$rootfs/clone$verfs log_must zfs create -o version=${version} ${current_fs} log_must zfs snapshot ${current_snap} log_must zfs clone ${current_snap} ${current_clone} for subversion in $ZFS_ALL_VERSIONS ; do typeset subverfs eval subverfs=\$ZFS_VERSION_$subversion log_must zfs create -o version=${subversion} \ ${current_fs}/$subverfs done datasets="$datasets ${current_fs}" done } log_assert "Executing 'zfs upgrade -r [-V version] filesystem' command succeeds." log_onexit cleanup rootfs=$TESTPOOL/$TESTFS typeset datasets typeset newv for newv in "" "current" $ZFS_VERSION; do setup_datasets for topfs in $datasets ; do if [[ -n $newv ]]; then opt="-V $newv" if [[ $newv == current ]]; then newv=$ZFS_VERSION fi else newv=$ZFS_VERSION fi log_must eval 'zfs upgrade -r $opt $topfs > /dev/null 2>&1' for fs in $(zfs list -rH -t filesystem -o name $topfs) ; do log_must check_fs_version $fs $newv done done cleanup done log_pass "Executing 'zfs upgrade -r [-V version] filesystem' command succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/zfs_upgrade_007_ne0000644000000000000000000000007413607166133031460 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.600718784 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_007_neg.ksh0000755016037001603700000000324513607166133032417 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # Verify that version should only by '1' '2' or current version, # non-digit input are invalid. # # STRATEGY: # 1. For each invalid value of version in the list, try 'zfs upgrade -V version'. # 2. Verify that the operation fails as expected. # verify_runnable "both" set -A args \ "0" "0.000" "0.5" "-1.234" "-1" "1234b" "5678x" log_assert "Set invalid value or non-digit version should fail as expected." typeset -i i=0 while (( i < ${#args[*]} )) do log_mustnot zfs upgrade -V ${args[i]} $TESTPOOL/$TESTFS ((i = i + 1)) done log_pass "Set invalid value or non-digit version fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133030207 xustar000000000000000030 atime=1579730436.200357416 29 ctime=1579730478.60371888 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/Makefile.am0000644016037001603700000000055513607166133030212 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_upgrade dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_upgrade_001_pos.ksh \ zfs_upgrade_002_pos.ksh \ zfs_upgrade_003_pos.ksh \ zfs_upgrade_004_pos.ksh \ zfs_upgrade_005_pos.ksh \ zfs_upgrade_006_neg.ksh \ zfs_upgrade_007_neg.ksh dist_pkgdata_DATA = \ zfs_upgrade.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030023 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.583718238 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/setup.ksh0000755016037001603700000000243213607166133030024 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # . $STF_SUITE/include/libtest.shlib verify_runnable "both" # This should have been set by the .cfg script - verify it's set to something # (we check that something later on) if [ -z "$ZFS_VERSION" ] then log_unresolved "Unable to determine ZFS Filesystem version of this machine" else log_note "This machine is running ZFS Filesystem version $ZFS_VERSION" fi default_setup $DISKS zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030312 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.585718302 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/cleanup.ksh0000755016037001603700000000174213607166133030316 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # . $STF_SUITE/include/libtest.shlib verify_runnable "both" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/zfs_upgrade_002_po0000644000000000000000000000007313607166133031466 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.58971843 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_002_pos.ksh0000755016037001603700000000363713607166133032447 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # Executing 'zfs upgrade -v ' command succeeds, it should # show the info of available versions. # # STRATEGY: # 1. Execute 'zfs upgrade -v', verify return value is 0. # 2, Verify all the available versions info are printed out. # verify_runnable "both" function cleanup { if [[ -f $output ]]; then log_must rm -f $output fi } log_assert "Executing 'zfs upgrade -v' command succeeds." log_onexit cleanup typeset output=$TEST_BASE_DIR/zfs-versions.$$ typeset expect_str1="Initial ZFS filesystem version" typeset expect_str2="Enhanced directory entries" log_must eval 'zfs upgrade -v > /dev/null 2>&1' zfs upgrade -v | nawk '$1 ~ "^[0-9]+$" {print $0}'> $output log_must eval 'grep "${expect_str1}" $output > /dev/null 2>&1' log_must eval 'grep "${expect_str2}" $output > /dev/null 2>&1' log_pass "Executing 'zfs upgrade -v' command succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/zfs_upgrade_006_ne0000644000000000000000000000007313607166133031456 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.59871872 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_006_neg.ksh0000755016037001603700000000323013607166133032410 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # Verify that invalid upgrade parameters and options are caught. # # STRATEGY: # 1. Create a ZFS file system. # 2. For each option in the list, try 'zfs upgrade'. # 3. Verify that the operation fails as expected. # verify_runnable "both" set -A args "" "-?" "-A" "-R" "-b" "-c" "-d" "--invalid" \ "-V" "-V $TESTPOOL/$TESTFS" "-V $TESTPOOL $TESTPOOL/$TESTFS" log_assert "Badly-formed 'zfs upgrade' should return an error." typeset -i i=1 while (( i < ${#args[*]} )); do log_mustnot zfs upgrade ${args[i]} ((i = i + 1)) done log_pass "Badly-formed 'zfs upgrade' fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/zfs_upgrade_001_po0000644000000000000000000000007413612141513031455 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.587718366 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_001_pos.ksh0000755016037001603700000001024313612141513032424 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # Executing 'zfs upgrade' command succeeds, it should report # the current system version and list all old-version filesystems. # If no old-version filesystems be founded, it prints out # "All filesystems are formatted with the current version." # # STRATEGY: # 1. Prepare a set of datasets which contain old-version and current version. # 2. Execute 'zfs upgrade', verify return 0, and it prints out # the current system version and list all old-version filesystems. # 3. Remove all old-version filesystems, then execute 'zfs upgrade' again, # verify return 0, and get the expected message. # verify_runnable "both" function cleanup { if datasetexists $rootfs ; then log_must zfs destroy -Rf $rootfs fi log_must zfs create $rootfs for file in $output $oldoutput ; do if [[ -f $file ]]; then log_must rm -f $file fi done } log_assert "Executing 'zfs upgrade' command succeeds." log_onexit cleanup rootfs=$TESTPOOL/$TESTFS typeset output=$TEST_BASE_DIR/zfs-versions.$$ typeset oldoutput=$TEST_BASE_DIR/zfs-versions-old.$$ typeset expect_str1="This system is currently running ZFS filesystem version" typeset expect_str2="All filesystems are formatted with the current version" typeset expect_str3="The following filesystems are out of date, and can be upgraded" typeset -i COUNT OLDCOUNT zfs upgrade | nawk '$1 ~ "^[0-9]+$" {print $2}'> $oldoutput OLDCOUNT=$( wc -l $oldoutput | awk '{print $1}' ) old_datasets="" for version in $ZFS_ALL_VERSIONS ; do typeset verfs eval verfs=\$ZFS_VERSION_$version typeset current_fs=$rootfs/$verfs typeset current_snap=${current_fs}@snap typeset current_clone=$rootfs/clone$verfs log_must zfs create -o version=${version} ${current_fs} log_must zfs snapshot ${current_snap} log_must zfs clone ${current_snap} ${current_clone} if (( version != $ZFS_VERSION )); then old_datasets="$old_datasets ${current_fs} ${current_clone}" fi done if is_global_zone; then log_must zfs create -V 100m $rootfs/$TESTVOL fi log_must eval 'zfs upgrade > $output 2>&1' # we also check that the usage message contains at least a description # of the current ZFS version. log_must eval 'grep "${expect_str1} $ZFS_VERSION" $output > /dev/null 2>&1' zfs upgrade | nawk '$1 ~ "^[0-9]+$" {print $2}'> $output COUNT=$( wc -l $output | awk '{print $1}' ) typeset -i i=0 for fs in ${old_datasets}; do log_must grep "^$fs$" $output (( i = i + 1 )) done if (( i != COUNT - OLDCOUNT )); then cat $output log_fail "More old-version filesystems print out than expect." fi for fs in $old_datasets ; do if datasetexists $fs ; then log_must zfs destroy -Rf $fs fi done log_must eval 'zfs upgrade > $output 2>&1' log_must eval 'grep "${expect_str1} $ZFS_VERSION" $output > /dev/null 2>&1' if (( OLDCOUNT == 0 )); then log_must eval 'grep "${expect_str2}" $output > /dev/null 2>&1' else log_must eval 'grep "${expect_str3}" $output > /dev/null 2>&1' fi zfs upgrade | nawk '$1 ~ "^[0-9]+$" {print $2}'> $output COUNT=$( wc -l $output | awk '{print $1}' ) if (( COUNT != OLDCOUNT )); then cat $output log_fail "Unexpected old-version filesystems print out." fi log_pass "Executing 'zfs upgrade' command succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030200 xustar000000000000000030 mtime=1579730436.237358603 30 atime=1579730455.533978161 30 ctime=1579730478.605718944 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/Makefile.in0000664016037001603700000006165313612143004030217 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_upgrade DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_upgrade ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_upgrade_001_pos.ksh \ zfs_upgrade_002_pos.ksh \ zfs_upgrade_003_pos.ksh \ zfs_upgrade_004_pos.ksh \ zfs_upgrade_005_pos.ksh \ zfs_upgrade_006_neg.ksh \ zfs_upgrade_007_neg.ksh dist_pkgdata_DATA = \ zfs_upgrade.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/zfs_upgrade_003_po0000644000000000000000000000007413607166133031470 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.591718494 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_003_pos.ksh0000755016037001603700000000541613607166133032445 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # Executing 'zfs upgrade [-V version] filesystem' command succeeds, # it could upgrade a filesystem to specific version or current version. # # STRATEGY: # 1. Prepare a set of datasets which contain old-version and current version. # 2. Execute 'zfs upgrade [-V version] filesystem', verify return 0, # 3. Verify the filesystem be updated as expected. # verify_runnable "both" function cleanup { if datasetexists $rootfs ; then log_must zfs destroy -Rf $rootfs fi log_must zfs create $rootfs } function setup_datasets { datasets="" for version in $ZFS_ALL_VERSIONS ; do typeset verfs eval verfs=\$ZFS_VERSION_$version typeset current_fs=$rootfs/$verfs typeset current_snap=${current_fs}@snap typeset current_clone=$rootfs/clone$verfs log_must zfs create -o version=${version} ${current_fs} log_must zfs snapshot ${current_snap} log_must zfs clone ${current_snap} ${current_clone} datasets="$datasets ${current_fs} ${current_clone}" done } log_assert "Executing 'zfs upgrade [-V version] filesystem' command succeeds." log_onexit cleanup rootfs=$TESTPOOL/$TESTFS typeset datasets typeset newv for newv in "" "current" $ZFS_ALL_VERSIONS; do setup_datasets for fs in $datasets ; do typeset -i oldv=$(get_prop version $fs) if [[ -n $newv ]]; then opt="-V $newv" if [[ $newv == current ]]; then newv=$ZFS_VERSION fi else newv=$ZFS_VERSION fi if (( newv >= oldv )); then log_must eval 'zfs upgrade $opt $fs > /dev/null 2>&1' log_must check_fs_version $fs $newv else log_mustnot eval 'zfs upgrade $opt $fs > /dev/null 2>&1' log_must check_fs_version $fs $oldv fi done cleanup done log_pass "Executing 'zfs upgrade [-V version] filesystem' command succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/PaxHeaders.151519/zfs_upgrade_005_po0000644000000000000000000000007413607166133031472 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.596718656 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_upgrade/zfs_upgrade_005_pos.ksh0000755016037001603700000000543713607166133032452 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # Executing 'zfs upgrade [-V version] -a' command succeeds, # it upgrade all filesystems to specific or current version. # # STRATEGY: # 1. Prepare a set of datasets which contain old-version and current version. # 2. Execute 'zfs upgrade [-V version] -a', verify return 0, # 3. Verify all the filesystems be updated as expected. # verify_runnable "both" function cleanup { if datasetexists $rootfs ; then log_must zfs destroy -Rf $rootfs fi log_must zfs create $rootfs } function setup_datasets { datasets="" for version in $ZFS_ALL_VERSIONS ; do typeset verfs eval verfs=\$ZFS_VERSION_$version typeset current_fs=$rootfs/$verfs typeset current_snap=${current_fs}@snap typeset current_clone=$rootfs/clone$verfs log_must zfs create -o version=${version} ${current_fs} log_must zfs snapshot ${current_snap} log_must zfs clone ${current_snap} ${current_clone} for subversion in $ZFS_ALL_VERSIONS ; do typeset subverfs eval subverfs=\$ZFS_VERSION_$subversion log_must zfs create -o version=${subversion} \ ${current_fs}/$subverfs done datasets="$datasets ${current_fs}" done } log_assert "Executing 'zfs upgrade [-V version] -a' command succeeds." log_onexit cleanup rootfs=$TESTPOOL/$TESTFS typeset datasets typeset newv for newv in "" "current" $ZFS_VERSION; do setup_datasets if [[ -n $newv ]]; then opt="-V $newv" if [[ $newv == current ]]; then newv=$ZFS_VERSION fi else newv=$ZFS_VERSION fi export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs upgrade $opt -a unset __ZFS_POOL_RESTRICT for fs in $(zfs list -rH -t filesystem -o name $rootfs) ; do log_must check_fs_version $fs $newv done cleanup done log_pass "Executing 'zfs upgrade [-V version] -a' command succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_set0000644000000000000000000000013213612143056025231 xustar000000000000000030 mtime=1579730478.114703179 30 atime=1579730489.093055677 30 ctime=1579730478.114703179 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/0000775016037001603700000000000013612143056025312 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/onoffs_001_pos.ksh0000644000000000000000000000007413607166147030567 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.076701959 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/onoffs_001_pos.ksh0000755016037001603700000000515213607166147030572 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting a valid value to atime, readonly, setuid or zoned on file # system or volume. It should be successful. # # STRATEGY: # 1. Create pool and filesystem & volume within it. # 2. Setting valid value, it should be successful. # verify_runnable "both" function cleanup { log_must zfs mount -a } log_onexit cleanup set -A props "atime" "readonly" "setuid" "zoned" set -A values "on" "off" if is_global_zone ; then set -A dataset "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTVOL" else set -A dataset "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCTR" fi log_assert "Setting a valid value to atime, readonly, setuid or zoned on file" \ "system or volume. It should be successful." typeset -i i=0 typeset -i j=0 typeset -i k=0 while (( i < ${#dataset[@]} )); do j=0 while (( j < ${#props[@]} )); do k=0 while (( k < ${#values[@]} )); do if [[ ${dataset[i]} == "$TESTPOOL/$TESTVOL" && \ ${props[j]} != "readonly" ]] then set_n_check_prop "${values[k]}" "${props[j]}" \ "${dataset[i]}" "false" elif [[ ${props[j]} == "zoned" ]] ; then if is_global_zone ; then set_n_check_prop \ "${values[k]}" "${props[j]}" \ "${dataset[i]}" else set_n_check_prop \ "${values[k]}" "${props[j]}" \ "${dataset[i]}" "false" fi else set_n_check_prop "${values[k]}" "${props[j]}" \ "${dataset[i]}" fi (( k += 1 )) done (( j += 1 )) done (( i += 1 )) done log_pass "Setting a valid value to atime, readonly, setuid or zoned on file" \ "system or volume pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/ro_props_001_pos.ksh0000644000000000000000000000007413607166133031133 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.085702247 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/ro_props_001_pos.ksh0000755016037001603700000000664113607166133031142 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Verify that read-only properties are immutable. # Note that we can only check properties that have no possibility of # changing while we are running (which excludes e.g. "available"). # # STRATEGY: # 1. Create pool, fs, vol, fs@snap & vol@snap. # 2. Get the original property value and set value to those properties. # 3. Check return value. # 4. Compare the current property value with the original one. # verify_runnable "both" set -A values filesystem volume snapshot -3 0 1 50K 10G 80G \ 2005/06/17 30K 20x yes no \ on off default pool/fs@snap $TESTDIR set -A dataset $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTCTR/$TESTFS1 $TESTPOOL/$TESTFS@$TESTSNAP \ $TESTPOOL/$TESTVOL@$TESTSNAP typeset ro_props="type used creation referenced refer compressratio \ mounted origin" typeset snap_ro_props="volsize recordsize recsize quota reservation reserv mountpoint \ sharenfs checksum compression compress atime devices exec readonly rdonly \ setuid zoned" zfs upgrade -v > /dev/null 2>&1 if [[ $? -eq 0 ]]; then snap_ro_props="$snap_ro_props version" fi function cleanup { datasetexists $TESTPOOL/$TESTVOL@$TESTSNAP && \ destroy_snapshot $TESTPOOL/$TESTVOL@$TESTSNAP datasetexists $TESTPOOL/$TESTFS@$TESTSNAP && \ destroy_snapshot $TESTPOOL/$TESTFS@$TESTSNAP } log_assert "Verify that read-only properties are immutable." log_onexit cleanup # Create filesystem and volume's snapshot create_snapshot $TESTPOOL/$TESTFS $TESTSNAP create_snapshot $TESTPOOL/$TESTVOL $TESTSNAP sync_pool $TESTPOOL sleep 5 typeset -i i=0 typeset -i j=0 typeset cur_value="" typeset props="" while (( i < ${#dataset[@]} )); do props=$ro_props dst_type=$(get_prop type ${dataset[i]}) if [[ $dst_type == 'snapshot' ]]; then props="$ro_props $snap_ro_props" fi for prop in $props; do cur_value=$(get_prop $prop ${dataset[i]}) j=0 while (( j < ${#values[@]} )); do # # If the current property value is equal to values[j], # just expect it failed. Otherwise, set it to dataset, # expecting it failed and the property value is not # equal to values[j]. # if [[ $cur_value == ${values[j]} ]]; then log_mustnot zfs set $prop=${values[j]} \ ${dataset[i]} else set_n_check_prop ${values[j]} $prop \ ${dataset[i]} false fi (( j += 1 )) done done (( i += 1 )) done log_pass "Setting uneditable properties should failed. It passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/user_property_001_pos.0000644000000000000000000000007413607166133031504 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.092702473 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/user_property_001_pos.ksh0000755016037001603700000000457613607166133032226 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # ZFS can set any valid user defined property to the non-readonly dataset. # # STRATEGY: # 1. Loop pool, fs and volume. # 2. Combine all kind of valid characters into a valid user defined # property name. # 3. Random get a string as the value. # 4. Verify all the valid user defined properties can be set to the # dataset in #1. # verify_runnable "both" log_assert "ZFS can set any valid user defined property to the non-readonly " \ "dataset." log_onexit cleanup_user_prop $TESTPOOL typeset -a names=() typeset -a values=() # Longest property name (255 bytes) names+=("$(awk 'BEGIN { printf "x:"; while (c++ < 253) printf "a" }')") values+=("too-long-property-name") # Longest property value (8191 bytes) names+=("too:long:property:value") values+=("$(awk 'BEGIN { while (c++ < 8191) printf "A" }')") # Valid property names for i in {1..10}; do typeset -i len ((len = RANDOM % 32)) names+=("$(valid_user_property $len)") ((len = RANDOM % 512)) values+=("$(user_property_value $len)") done typeset -i i=0 while ((i < ${#names[@]})); do typeset name="${names[$i]}" typeset value="${values[$i]}" for dtst in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL; do log_must eval "zfs set $name='$value' $dtst" log_must eval "check_user_prop $dtst $name '$value'" done ((i += 1)) done log_pass "ZFS can set any valid user defined property passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/version_001_neg.ksh0000644000000000000000000000007413607166133030725 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.100702729 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/version_001_neg.ksh0000755016037001603700000000455013607166133030731 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # Valid version values should be positive integers only. # # STRATEGY: # 1) Form an array of invalid reservation values (negative and # incorrectly formed) # 2) Attempt to set each invalid version value in turn on a # filesystem and volume. # 3) Verify that attempt fails and the version value remains # unchanged # verify_runnable "both" log_assert "Verify invalid version values are rejected" typeset values=('' '-1' '-1.0' '-1.8' '-9999999999999999' \ '0x1' '0b' '1b' '1.1b' '0' '0.000' '1.234') # # Function to loop through a series of bad reservation # values, checking they are when we attempt to set them # on a dataset. # function set_n_check # data-set { typeset obj=$1 typeset -i i=0 typeset -i j=0 orig_val=$(get_prop version $obj) while (($i < ${#values[*]})); do zfs set version=${values[$i]} $obj > /dev/null 2>&1 if [[ $? -eq 0 ]]; then log_note "zfs set version=${values[$i]} $obj" log_fail "The above version set returned 0!" fi new_val=$(get_prop version $obj) if [[ $new_val != $orig_val ]]; then log_fail "$obj : version values changed " \ "($orig_val : $new_val)" fi ((i = i + 1)) done } for dataset in $TESTPOOL/$TESTFS $TESTPOOL/$TESTCTR $TESTPOOL/$TESTVOL do set_n_check $dataset done log_pass "Invalid version values correctly rejected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/reservation_001_neg.ks0000644000000000000000000000007413607166133031431 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.083702183 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/reservation_001_neg.ksh0000755016037001603700000000511613607166133031604 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Valid reservation values should be positive integers only. # # STRATEGY: # 1) Form an array of invalid reservation values (negative and # incorrectly formed) # 2) Attempt to set each invalid reservation value in turn on a # filesystem and volume. # 3) Verify that attempt fails and the reservation value remains # unchanged # verify_runnable "both" log_assert "Verify invalid reservation values are rejected" set -A suffix "b" "k" "m" "t" "p" "e" "K" "M" "G" "T" "P" "E" "kb" "Mb" "Gb" \ "Tb" "Pb" "Eb" "KB" "MB" "GB" "TB" "PB" "EB" set -A values '' '-1' '-1.0' '-1.8' '-9999999999999999' '0x1' '0b' '1b' '1.1b' # # Function to loop through a series of bad reservation # values, checking they are when we attempt to set them # on a dataset. # function set_n_check # data-set { typeset obj=$1 typeset -i i=0 typeset -i j=0 orig_resv_val=$(get_prop reservation $obj) while (( $i < ${#values[*]} )); do j=0 while (( $j < ${#suffix[*]} )); do zfs set \ reservation=${values[$i]}${suffix[$j]} $obj \ > /dev/null 2>&1 if [ $? -eq 0 ] then log_note "zfs set \ reservation=${values[$i]}${suffix[$j]} $obj" log_fail "The above reservation set returned 0!" fi new_resv_val=$(get_prop reservation $obj) if [[ $new_resv_val != $orig_resv_val ]]; then log_fail "$obj : reservation values changed " \ "($orig_resv_val : $new_resv_val)" fi (( j = j + 1 )) done (( i = i + 1 )) done } for dataset in $TESTPOOL/$TESTFS $TESTPOOL/$TESTCTR $TESTPOOL/$TESTVOL do set_n_check $dataset done log_pass "Invalid reservation values correctly rejected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/cache_001_pos.ksh0000644000000000000000000000007413607166133030333 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.052701187 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/cache_001_pos.ksh0000755016037001603700000000352413607166133030337 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting a valid primarycache and secondarycache on file system or volume. # It should be successful. # # STRATEGY: # 1. Create pool, then create filesystem & volume within it. # 2. Setting valid cache value, it should be successful. # verify_runnable "both" set -A dataset "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTVOL" set -A values "none" "all" "metadata" log_assert "Setting a valid {primary|secondary}cache on file system and volume, " \ "It should be successful." typeset -i i=0 typeset -i j=0 for propname in "primarycache" "secondarycache" do while (( i < ${#dataset[@]} )); do j=0 while (( j < ${#values[@]} )); do set_n_check_prop "${values[j]}" "$propname" "${dataset[i]}" (( j += 1 )) done (( i += 1 )) done done log_pass "Setting a valid {primary|secondary}cache on file system or volume pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/compression_001_pos.ks0000644000000000000000000000007413607166147031466 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.067701669 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/compression_001_pos.ksh0000755016037001603700000000343513607166147031643 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting a valid compression on file system or volume. # It should be successful. # # STRATEGY: # 1. Create pool, then create filesystem & volume within it. # 2. Setting valid value, it should be successful. # verify_runnable "both" set -A dataset "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTVOL" set -A values $(get_compress_opts zfs_set) log_assert "Setting a valid compression on file system and volume, " \ "It should be successful." typeset -i i=0 typeset -i j=0 for propname in "compression" "compress" do while (( i < ${#dataset[@]} )); do j=0 while (( j < ${#values[@]} )); do set_n_check_prop "${values[j]}" "$propname" "${dataset[i]}" (( j += 1 )) done (( i += 1 )) done done log_pass "Setting a valid compression on file system or volume pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/canmount_002_pos.ksh0000644000000000000000000000007413612141513031104 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.059701413 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/canmount_002_pos.ksh0000755016037001603700000001000713612141513031102 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting valid canmount to filesystem, it is successful. # Whatever is set to volume or snapshot, it is failed. # 'zfs set canmount=noauto ' # # STRATEGY: # 1. Setup a pool and create fs, volume, snapshot clone within it. # 2. Set canmount=noauto for each dataset and check the return value # and check if it still can be mounted by mount -a. # 3. mount each dataset(except volume) to see if it can be mounted. # verify_runnable "both" set -A dataset_pos \ "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTCLONE" if is_global_zone ; then set -A dataset_neg \ "$TESTPOOL/$TESTVOL" "$TESTPOOL/$TESTFS@$TESTSNAP" \ "$TESTPOOL/$TESTVOL@$TESTSNAP" "$TESTPOOL/$TESTCLONE1" else set -A dataset_neg \ "$TESTPOOL/$TESTFS@$TESTSNAP" "$TESTPOOL/$TESTVOL@$TESTSNAP" fi function cleanup { i=0 while (( i < ${#dataset_pos[*]} )); do ds=${dataset_pos[i]} if datasetexists $ds; then log_must zfs set mountpoint=${old_mnt[i]} $ds log_must zfs set canmount=${old_canmount[i]} $ds fi (( i = i + 1 )) done ds=$TESTPOOL/$TESTCLONE if datasetexists $ds; then mntp=$(get_prop mountpoint $ds) log_must zfs destroy $ds if [[ -d $mntp ]]; then rm -fr $mntp fi fi if snapexists $TESTPOOL/$TESTFS@$TESTSNAP ; then log_must zfs destroy -R $TESTPOOL/$TESTFS@$TESTSNAP fi if snapexists $TESTPOOL/$TESTVOL@$TESTSNAP ; then log_must zfs destroy -R $TESTPOOL/$TESTVOL@$TESTSNAP fi zfs unmount -a > /dev/null 2>&1 log_must zfs mount -a if [[ -d $tmpmnt ]]; then rm -fr $tmpmnt fi } log_assert "Setting canmount=noauto to file system, it must be successful." log_onexit cleanup set -A old_mnt set -A old_canmount typeset tmpmnt=/tmpmount$$ typeset ds log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP log_must zfs snapshot $TESTPOOL/$TESTVOL@$TESTSNAP log_must zfs clone $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTCLONE log_must zfs clone $TESTPOOL/$TESTVOL@$TESTSNAP $TESTPOOL/$TESTCLONE1 typeset -i i=0 while (( i < ${#dataset_pos[*]} )); do ds=${dataset_pos[i]} old_mnt[i]=$(get_prop mountpoint $ds) old_canmount[i]=$(get_prop canmount $ds) (( i = i + 1 )) done i=0 while (( i < ${#dataset_pos[*]} )) ; do dataset=${dataset_pos[i]} set_n_check_prop "noauto" "canmount" "$dataset" log_must zfs set mountpoint=$tmpmnt $dataset if ismounted $dataset; then zfs unmount -a > /dev/null 2>&1 log_must mounted $dataset log_must zfs unmount $dataset log_must unmounted $dataset log_must zfs mount -a log_must unmounted $dataset else log_must zfs mount -a log_must unmounted $dataset zfs unmount -a > /dev/null 2>&1 log_must unmounted $dataset fi log_must zfs mount $dataset log_must mounted $dataset log_must zfs set canmount="${old_canmount[i]}" $dataset log_must zfs set mountpoint="${old_mnt[i]}" $dataset (( i = i + 1 )) done for dataset in "${dataset_neg[@]}" ; do set_n_check_prop "noauto" "canmount" "$dataset" "false" log_mustnot ismounted $dataset done log_pass "Setting canmount=noauto to filesystem pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/user_property_003_neg.0000644000000000000000000000007413607166133031456 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.096702601 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/user_property_003_neg.ksh0000755016037001603700000000442613607166133032172 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # ZFS can handle any invalid user defined property. # # STRATEGY: # 1. Loop pool, fs and volume. # 2. Combine all kind of invalid user property names. # 3. Random get a string as the value. # 4. Verify all the invalid user defined properties can not be set to the # dataset in #1. # verify_runnable "both" log_assert "ZFS can handle invalid user property." log_onexit cleanup_user_prop $TESTPOOL typeset -a names=() typeset -a values=() # Too long property name (256 bytes) names+=("$(awk 'BEGIN { printf "x:"; while (c++ < 254) printf "a" }')") values+=("too-long-property-name") # Too long property value (8K) names+=("too:long:property:value") values+=("$(awk 'BEGIN { while (c++ < 8192) printf "A" }')") # Invalid property names for i in {1..10}; do typeset -i len ((len = RANDOM % 32)) names+=("$(invalid_user_property $len)") ((len = RANDOM % 512)) values+=("$(user_property_value $len)") done typeset -i i=0 while ((i < ${#names[@]})); do typeset name="${names[$i]}" typeset value="${values[$i]}" for dtst in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL ; do log_mustnot zfs set $name=$value $dtst log_mustnot check_user_prop $dtst \"$name\" \"$value\" done ((i += 1)) done log_pass "ZFS can handle invalid user property passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/snapdir_001_pos.ksh0000644000000000000000000000007413607166133030730 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.090702409 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/snapdir_001_pos.ksh0000755016037001603700000000531113607166133030730 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting a valid snapdir on a dataset, it should be successful. # # STRATEGY: # 1. Create pool, then create filesystem and volume within it. # 2. Create a snapshot for each dataset. # 3. Setting different valid snapdir to each dataset. # 4. Check the return value and make sure it is 0. # 5. Verify .zfs directory is hidden|visible according to the snapdir setting. # verify_runnable "both" function cleanup { for dataset in $all_datasets; do snapexists ${dataset}@snap && \ log_must zfs destroy ${dataset}@snap done } function verify_snapdir_visible # $1 dataset, $2 hidden|visible { typeset dataset=$1 typeset value=$2 typeset mtpt=$(get_prop mountpoint $dataset) typeset name for name in `ls -a $mtpt`; do if [[ $name == ".zfs" ]]; then if [[ $value == "visible" ]]; then return 0 else return 1 fi fi done if [[ $value == "visible" ]]; then return 1 else return 0 fi } typeset all_datasets if is_global_zone ; then all_datasets="$TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL" else all_datasets="$TESTPOOL $TESTPOOL/$TESTFS" fi log_onexit cleanup for dataset in $all_datasets; do log_must zfs snapshot ${dataset}@snap done log_assert "Setting a valid snapdir property on a dataset succeeds." for dataset in $all_datasets; do for value in hidden visible; do if [[ $dataset == "$TESTPOOL/$TESTVOL" ]] ; then set_n_check_prop "$value" "snapdir" \ "$dataset" "false" else set_n_check_prop "$value" "snapdir" \ "$dataset" verify_snapdir_visible $dataset $value [[ $? -eq 0 ]] || \ log_fail "$dataset/.zfs is not $value as expect." fi done done log_pass "Setting a valid snapdir property on a dataset succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/canmount_003_pos.ksh0000644000000000000000000000007413607166133031116 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.061701477 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/canmount_003_pos.ksh0000755016037001603700000000553113607166133031122 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # While canmount=noauto and the dataset is mounted, # zfs must not attempt to unmount it. # # STRATEGY: # 1. Setup a pool and create fs, volume, snapshot clone within it. # 2. Set canmount=noauto for each dataset and check the return value # and check if it still can not be unmounted when the dataset is mounted # verify_runnable "both" set -A dataset_pos "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCLONE" function cleanup { i=0 cd $pwd while (( i < ${#dataset_pos[*]} )); do ds=${dataset_pos[i]} if datasetexists $ds; then log_must zfs set mountpoint=${old_mnt[i]} $ds log_must zfs set canmount=${old_canmount[i]} $ds fi (( i = i + 1 )) done ds=$TESTPOOL/$TESTCLONE if datasetexists $ds; then mntp=$(get_prop mountpoint $ds) log_must zfs destroy $ds if [[ -d $mntp ]]; then log_must rm -fr $mntp fi fi if snapexists $TESTPOOL/$TESTFS@$TESTSNAP ; then log_must zfs destroy -R $TESTPOOL/$TESTFS@$TESTSNAP fi zfs unmount -a > /dev/null 2>&1 log_must zfs mount -a } log_assert "While canmount=noauto and the dataset is mounted,"\ " zfs must not attempt to unmount it" log_onexit cleanup set -A old_mnt set -A old_canmount typeset ds typeset pwd=$PWD log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP log_must zfs clone $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTCLONE typeset -i i=0 while (( i < ${#dataset_pos[*]} )); do ds=${dataset_pos[i]} old_mnt[i]=$(get_prop mountpoint $ds) old_canmount[i]=$(get_prop canmount $ds) (( i = i + 1 )) done i=0 while (( i < ${#dataset_pos[*]} )) ; do dataset=${dataset_pos[i]} if ismounted $dataset; then log_must cd ${old_mnt[i]} set_n_check_prop "noauto" "canmount" "$dataset" log_must mounted $dataset fi (( i = i + 1 )) done log_pass "Setting canmount=noauto to filesystem while dataset busy pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/user_property_004_pos.0000644000000000000000000000007413607166133031507 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.098702665 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/user_property_004_pos.ksh0000755016037001603700000000525613607166133032225 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # User property has no effect to snapshot until 'Snapshot properties' supported. # # STRATEGY: # 1. Verify user properties could be transformed by 'zfs snapshot' # 2. Verify user properties could be set upon snapshot. # verify_runnable "both" function cleanup { for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL ; do typeset fssnap=$fs@snap if datasetexists $fssnap ; then log_must zfs destroy -f $fssnap fi done cleanup_user_prop $TESTPOOL } function nonexist_user_prop { typeset user_prop=$1 typeset dtst=$2 typeset source=$(get_source $user_prop $dtst) typeset value=$(get_prop $user_prop $dtst) if [[ $source == '-' && $value == '-' ]]; then return 0 else return 1 fi } log_assert "User property has no effect to snapshot until 'Snapshot properties' supported." log_onexit cleanup typeset snap_property= zpool upgrade -v | grep "Snapshot properties" > /dev/null 2>&1 if (( $? == 0 )) ; then snap_property="true" fi for fs in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL $TESTPOOL ; do typeset fssnap=$fs@snap prop_name=$(valid_user_property 10) value=$(user_property_value 16) log_must eval "zfs set $prop_name='$value' $fs" log_must eval "check_user_prop $fs $prop_name '$value'" log_must zfs snapshot $fssnap if [[ -n $snap_property ]] ; then log_mustnot nonexist_user_prop $prop_name $fssnap log_must eval "zfs set $prop_name='$value' $fssnap" log_mustnot nonexist_user_prop $prop_name $fssnap else log_must nonexist_user_prop $prop_name $fssnap log_mustnot eval "zfs set $prop_name='$value' $fssnap" log_must nonexist_user_prop $prop_name $fssnap fi done log_pass "User properties has effect upon snapshot." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133027354 xustar000000000000000030 atime=1579730435.824345342 30 ctime=1579730478.112703115 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/Makefile.am0000644016037001603700000000152613607166133027355 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_set dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ cache_001_pos.ksh \ cache_002_neg.ksh \ canmount_001_pos.ksh \ canmount_002_pos.ksh \ canmount_003_pos.ksh \ canmount_004_pos.ksh \ checksum_001_pos.ksh \ compression_001_pos.ksh \ mountpoint_001_pos.ksh \ mountpoint_002_pos.ksh \ mountpoint_003_pos.ksh \ onoffs_001_pos.ksh \ property_alias_001_pos.ksh \ readonly_001_pos.ksh \ reservation_001_neg.ksh \ ro_props_001_pos.ksh \ share_mount_001_neg.ksh \ snapdir_001_pos.ksh \ user_property_001_pos.ksh \ user_property_002_pos.ksh \ user_property_003_neg.ksh \ user_property_004_pos.ksh \ version_001_neg.ksh \ zfs_set_001_neg.ksh \ zfs_set_002_neg.ksh \ zfs_set_003_neg.ksh \ zfs_set_keylocation.ksh dist_pkgdata_DATA = \ zfs_set_common.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027167 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.047701027 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/setup.ksh0000755016037001603700000000176013607166133027173 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027456 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.050701123 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/cleanup.ksh0000755016037001603700000000172213607166133027460 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_container_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/mountpoint_002_pos.ksh0000644000000000000000000000007413612141513031474 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.072701831 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_002_pos.ksh0000755016037001603700000000546513612141513031506 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # If ZFS is currently managing the file system but it is currently unmounted, # and the mountpoint property is changed, the file system remains unmounted. # # STRATEGY: # 1. Setup a pool and create fs, ctr within it. # 2. Unmount that dataset # 2. Change the mountpoint to the valid mountpoint value. # 3. Check the file system remains unmounted. # verify_runnable "both" export TESTDIR_NOTEXISTING=${TEST_BASE_DIR%%/}/testdir_notexisting$$ set -A dataset "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCTR" set -A values "$TESTDIR2" "$TESTDIR_NOTEXISTING" function cleanup { log_must zfs set mountpoint=$old_ctr_mpt $TESTPOOL/$TESTCTR log_must zfs set mountpoint=$old_fs_mpt $TESTPOOL/$TESTFS log_must zfs mount -a [[ -d $TESTDIR2 ]] && log_must rm -r $TESTDIR2 [[ -d $TESTDIR_NOTEXISTING ]] && log_must rm -r $TESTDIR_NOTEXISTING } log_assert "Setting a valid mountpoint for an unmounted file system, \ it remains unmounted." log_onexit cleanup old_fs_mpt=$(get_prop mountpoint $TESTPOOL/$TESTFS) [[ $? != 0 ]] && \ log_fail "Unable to get the mountpoint property for $TESTPOOL/$TESTFS" old_ctr_mpt=$(get_prop mountpoint $TESTPOOL/$TESTCTR) [[ $? != 0 ]] && \ log_fail "Unable to get the mountpoint property for $TESTPOOL/$TESTCTR" if [[ ! -d $TESTDIR2 ]]; then log_must mkdir $TESTDIR2 fi typeset -i i=0 typeset -i j=0 while (( i < ${#dataset[@]} )); do j=0 if ismounted ${dataset[i]} ; then log_must zfs unmount ${dataset[i]} fi log_mustnot ismounted ${dataset[i]} while (( j < ${#values[@]} )); do set_n_check_prop "${values[j]}" "mountpoint" \ "${dataset[i]}" log_mustnot ismounted ${dataset[i]} (( j += 1 )) done cleanup (( i += 1 )) done log_pass "Setting a valid mountpoint for an unmounted file system, \ it remains unmounted." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/user_property_002_pos.0000644000000000000000000000007413607166133031505 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.094702537 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/user_property_002_pos.ksh0000755016037001603700000000654013607166133032220 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016, 2019 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # User defined property are always inherited from its parent dataset # directly. # # STRATEGY: # 1. Create pool, fs, volume, fsclone & volclone. # 2. Get random user property name and set to the pool # 3. Verify all dataset user property inherit from pool. # 4. Set intermediate dataset and verify its children will inherit user # property from it directly. # verify_runnable "both" function cleanup { datasetexists $new_vol && log_must zfs rename $new_vol $vol typeset dtst for dtst in $new_fsclone $new_volclone $fsclone $volclone \ $fssnap $volsnap; do destroy_dataset "$dtst" "-f" done cleanup_user_prop $pool } # # Verify options datasets (3-n) inherit from the inherited dataset $2. # # $1 user property # $2 inherited dataset # $3-n datasets # function inherit_check { typeset prop=$1 typeset inherited_dtst=$2 shift 2 [[ -z $@ ]] && return 1 typeset inherited_value=$(get_prop $prop $inherited_dtst) for dtst in $@; do typeset value=$(get_prop $prop $dtst) typeset source=$(get_source $prop $dtst) if [[ "$value" != "$inherited_value" || \ "$source" != "inherited from $inherited_dtst" ]] then return 1 fi shift done return 0 } log_assert "User defined property inherited from its parent." log_onexit cleanup pool=$TESTPOOL; fs=$pool/$TESTFS; vol=$pool/$TESTVOL fssnap=$fs@snap; volsnap=$vol@snap; log_must zfs snapshot $fssnap log_must zfs snapshot $volsnap fsclone=$pool/fsclone; volclone=$pool/volclone log_must zfs clone $fssnap $fsclone log_must zfs clone $volsnap $volclone prop_name=$(valid_user_property 10) value=$(user_property_value 16) log_must eval "zfs set $prop_name='$value' $pool" log_must eval "check_user_prop $pool $prop_name '$value'" log_must inherit_check $prop_name $pool $fs $vol $fsclone $volclone new_fsclone=$fs/fsclone; new_volclone=$fs/volclone log_must zfs rename $fsclone $new_fsclone log_must zfs rename $volclone $new_volclone log_must inherit_check $prop_name $pool $fs $new_fsclone $new_volclone log_note "Set intermediate dataset will change the inherited relationship." new_value=$(user_property_value 16) log_must eval "zfs set $prop_name='$new_value' $fs" log_must eval "check_user_prop $fs $prop_name '$new_value'" log_must inherit_check $prop_name $fs $new_fsclone $new_volclone log_pass "User defined property inherited from its parent passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/canmount_001_pos.ksh0000644000000000000000000000007413607166133031114 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.057701349 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/canmount_001_pos.ksh0000755016037001603700000000674213607166133031125 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting valid canmount to filesystem, it is successful. # Whatever is set to volume or snapshot, it is failed. # 'zfs set canmount=on|off ' # # STRATEGY: # 1. Setup a pool and create fs, volume, snapshot clone within it. # 2. Loop all the valid mountpoint value. # 3. Check the return value. # verify_runnable "both" set -A dataset_pos \ "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTCLONE" if is_global_zone ; then set -A dataset_neg \ "$TESTPOOL/$TESTVOL" "$TESTPOOL/$TESTFS@$TESTSNAP" \ "$TESTPOOL/$TESTVOL@$TESTSNAP" "$TESTPOOL/$TESTCLONE1" else set -A dataset_neg \ "$TESTPOOL/$TESTFS@$TESTSNAP" "$TESTPOOL/$TESTVOL@$TESTSNAP" fi set -A values "on" "off" function cleanup { if snapexists $TESTPOOL/$TESTFS@$TESTSNAP ; then log_must zfs destroy -R $TESTPOOL/$TESTFS@$TESTSNAP fi if snapexists $TESTPOOL/$TESTVOL@$TESTSNAP ; then log_must zfs destroy -R $TESTPOOL/$TESTVOL@$TESTSNAP fi [[ -n $old_ctr_canmount ]] && \ log_must zfs set canmount=$old_ctr_canmount $TESTPOOL/$TESTCTR [[ -n $old_fs_canmount ]] && \ log_must zfs set canmount=$old_fs_canmount $TESTPOOL/$TESTFS zfs unmount -a > /dev/null 2>&1 log_must zfs mount -a } log_assert "Setting a valid property of canmount to file system, it must be successful." log_onexit cleanup typeset old_fs_canmount="" old_ctr_canmount="" old_fs_canmount=$(get_prop canmount $TESTPOOL/$TESTFS) [[ $? != 0 ]] && \ log_fail "Get the $TESTPOOL/$TESTFS canmount error." old_ctr_canmount=$(get_prop canmount $TESTPOOL/$TESTCTR) [[ $? != 0 ]] && \ log_fail "Get the $TESTPOOL/$TESTCTR canmount error." log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP log_must zfs snapshot $TESTPOOL/$TESTVOL@$TESTSNAP log_must zfs clone $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTCLONE log_must zfs clone $TESTPOOL/$TESTVOL@$TESTSNAP $TESTPOOL/$TESTCLONE1 for dataset in "${dataset_pos[@]}" ; do for value in "${values[@]}" ; do set_n_check_prop "$value" "canmount" "$dataset" if [[ $value == "off" ]]; then log_mustnot ismounted $dataset log_mustnot zfs mount $dataset log_mustnot ismounted $dataset else if ! ismounted $dataset ; then log_must zfs mount $dataset fi log_must ismounted $dataset fi done done for dataset in "${dataset_neg[@]}" ; do for value in "${values[@]}" ; do set_n_check_prop "$value" "canmount" \ "$dataset" "false" log_mustnot ismounted $dataset done done log_pass "Setting canmount to filesystem pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/share_mount_001_neg.ks0000644000000000000000000000007413607166133031414 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.088702343 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/share_mount_001_neg.ksh0000755016037001603700000000327313607166133031571 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Verify that we cannot share or mount legacy filesystems. # # STRATEGY: # 1. Set mountpoint as legacy or none # 2. Use zfs share or zfs mount to share or mount the filesystem # 3. Verify that the command returns error # verify_runnable "both" function cleanup { log_must zfs set mountpoint=$oldmpt $fs } log_assert "Verify that we cannot share or mount legacy filesystems." log_onexit cleanup fs=$TESTPOOL/$TESTFS oldmpt=$(get_prop mountpoint $fs) for propval in "legacy" "none"; do log_must zfs set mountpoint=$propval $fs log_mustnot zfs mount $fs log_mustnot zfs share $fs done log_pass "We cannot share or mount legacy filesystems as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/readonly_001_pos.ksh0000644000000000000000000000007413607166147031112 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.081702119 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/readonly_001_pos.ksh0000755016037001603700000000755413607166147031125 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting readonly on a dataset, it should keep the dataset as readonly. # # STRATEGY: # 1. Create pool, then create filesystem and volume within it. # 2. Setting readonly to each dataset. # 3. Check the return value and make sure it is 0. # 4. Verify the stuff under mountpoint is readonly. # verify_runnable "both" function cleanup { for dataset in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL ; do snapexists ${dataset}@$TESTSNAP && \ log_must zfs destroy -R ${dataset}@$TESTSNAP done } function initial_dataset # $1 dataset { typeset dataset=$1 typeset fstype=$(get_prop type $dataset) if [[ $fstype == "filesystem" ]] ; then typeset mtpt=$(get_prop mountpoint $dataset) log_must touch $mtpt/$TESTFILE0 log_must mkdir -p $mtpt/$TESTDIR0 fi } function cleanup_dataset # $1 dataset { typeset dataset=$1 typeset fstype=$(get_prop type $dataset) if [[ $fstype == "filesystem" ]] ; then typeset mtpt=$(get_prop mountpoint $dataset) log_must rm -f $mtpt/$TESTFILE0 log_must rm -rf $mtpt/$TESTDIR0 fi } function verify_readonly # $1 dataset, $2 on|off { typeset dataset=$1 typeset value=$2 if datasetnonexists $dataset ; then log_note "$dataset does not exist!" return 1 fi typeset fstype=$(get_prop type $dataset) expect="log_must" if [[ $2 == "on" ]] ; then expect="log_mustnot" fi case $fstype in filesystem) typeset mtpt=$(get_prop mountpoint $dataset) $expect touch $mtpt/$TESTFILE1 $expect mkdir -p $mtpt/$TESTDIR1 $expect eval "echo 'y' | rm $mtpt/$TESTFILE0" $expect rmdir $mtpt/$TESTDIR0 if [[ $expect == "log_must" ]] ; then log_must eval "echo 'y' | rm $mtpt/$TESTFILE1" log_must rmdir $mtpt/$TESTDIR1 log_must touch $mtpt/$TESTFILE0 log_must mkdir -p $mtpt/$TESTDIR0 fi ;; volume) $expect eval "echo 'y' | newfs \ ${ZVOL_DEVDIR}/$dataset > /dev/null 2>&1" ;; *) ;; esac return 0 } log_onexit cleanup log_assert "Setting a valid readonly property on a dataset succeeds." typeset all_datasets log_must zfs mount -a log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP log_must zfs clone $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTCLONE if is_global_zone ; then log_must zfs snapshot $TESTPOOL/$TESTVOL@$TESTSNAP log_must zfs clone $TESTPOOL/$TESTVOL@$TESTSNAP $TESTPOOL/$TESTCLONE1 all_datasets="$TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL " all_datasets+="$TESTPOOL/$TESTCLONE $TESTPOOL/$TESTCLONE1" else all_datasets="$TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTCLONE" fi for dataset in $all_datasets; do for value in on off; do set_n_check_prop "off" "readonly" "$dataset" initial_dataset $dataset set_n_check_prop "$value" "readonly" "$dataset" verify_readonly $dataset $value set_n_check_prop "off" "readonly" "$dataset" cleanup_dataset $dataset done done log_pass "Setting a valid readonly property on a dataset succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/mountpoint_001_pos.ksh0000644000000000000000000000007413607166133031504 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.070701765 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_001_pos.ksh0000755016037001603700000000541313607166133031507 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting valid mountpoint to filesystem, it is successful. # Whatever is set to volume, it is failed. # 'zfs set mountpoint=|legacy|none ' # # STRATEGY: # 1. Setup a pool and create fs, ctr within it. # 2. Loop all the valid mountpoint value. # 3. Check the return value. # verify_runnable "both" export TESTDIR_NOTEXISTING=${TEST_BASE_DIR%%/}/testdir_notexisting$$ if is_global_zone ; then set -A dataset \ "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTVOL" else set -A dataset "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTCTR" fi set -A values "$TESTDIR2" "legacy" "none" "$TESTDIR_NOTEXISTING" function cleanup { log_must zfs set mountpoint=$old_ctr_mpt $TESTPOOL/$TESTCTR log_must zfs set mountpoint=$old_fs_mpt $TESTPOOL/$TESTFS [[ -d $TESTDIR2 ]] && log_must rm -r $TESTDIR2 [[ -d $TESTDIR_NOTEXISTING ]] && log_must rm -r $TESTDIR_NOTEXISTING } log_assert "Setting a valid mountpoint to file system, it must be successful." log_onexit cleanup old_fs_mpt=$(get_prop mountpoint $TESTPOOL/$TESTFS) [[ $? != 0 ]] && \ log_fail "Get the $TESTPOOL/$TESTFS mountpoint error." old_ctr_mpt=$(get_prop mountpoint $TESTPOOL/$TESTCTR) [[ $? != 0 ]] && \ log_fail "Get the $TESTPOOL/$TESTCTR mountpoint error." if [[ ! -d $TESTDIR2 ]]; then log_must mkdir $TESTDIR2 fi typeset -i i=0 typeset -i j=0 while (( i < ${#dataset[@]} )); do j=0 while (( j < ${#values[@]} )); do if [[ ${dataset[i]} == "$TESTPOOL/$TESTVOL" ]]; then set_n_check_prop "${values[j]}" "mountpoint" \ "${dataset[i]}" "false" else set_n_check_prop "${values[j]}" "mountpoint" \ "${dataset[i]}" fi (( j += 1 )) done cleanup (( i += 1 )) done log_pass "Setting mountpoint to filesystem pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/checksum_001_pos.ksh0000644000000000000000000000007413607166147031077 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.065701605 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/checksum_001_pos.ksh0000755016037001603700000000360513607166147031103 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting a valid checksum on a pool, file system, volume, it should be # successful. # # STRATEGY: # 1. Create pool, then create filesystem and volume within it. # 2. Setting different valid checksum to each dataset. # 3. Check the return value and make sure it is 0. # verify_runnable "both" set -A dataset "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTVOL" set -A values "on" "off" "fletcher2" "fletcher4" "sha256" "sha512" "skein" "edonr" "noparity" log_assert "Setting a valid checksum on a file system, volume," \ "it should be successful." typeset -i i=0 typeset -i j=0 while (( i < ${#dataset[@]} )); do j=0 while (( j < ${#values[@]} )); do set_n_check_prop "${values[j]}" "checksum" "${dataset[i]}" (( j += 1 )) done (( i += 1 )) done log_pass "Setting a valid checksum on a file system, volume pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/zfs_set_003_neg.ksh0000644000000000000000000000007413607166133030717 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.107702954 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_003_neg.ksh0000755016037001603700000000450313607166133030721 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # 'zfs set mountpoint/sharenfs' should fail when the mountpoint is invalid # # STRATEGY: # 1. Create invalid scenarios # 2. Run zfs set mountpoint/sharenfs with invalid value # 3. Verify that zfs set returns expected errors # verify_runnable "both" function cleanup { if [ -e $badpath ]; then rm -f $badpath fi if datasetexists $TESTPOOL/foo; then log_must zfs destroy $TESTPOOL/foo fi } log_assert "'zfs set mountpoint/sharenfs' fails with invalid scenarios" log_onexit cleanup badpath=$TEST_BASE_DIR/foo1.$$ touch $badpath longpath=$(gen_dataset_name 1030 "abcdefg") log_must zfs create -o mountpoint=legacy $TESTPOOL/foo # Do the negative testing about "property may be set but unable to remount filesystem" log_mustnot eval "zfs set mountpoint=$badpath $TESTPOOL/foo >/dev/null 2>&1" # Do the negative testing about "property may be set but unable to reshare filesystem" log_mustnot eval "zfs set sharenfs=on $TESTPOOL/foo >/dev/null 2>&1" # Do the negative testing about "sharenfs property can not be set to null" log_mustnot eval "zfs set sharenfs= $TESTPOOL/foo >/dev/null 2>&1" # Do the too long pathname testing (>1024) log_mustnot eval "zfs set mountpoint=/$longpath $TESTPOOL/foo >/dev/null 2>&1" log_pass "'zfs set mountpoint/sharenfs' fails with invalid scenarios as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/zfs_set_keylocation.ks0000644000000000000000000000007413607166147031742 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.109703019 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_keylocation.ksh0000755016037001603700000000652313607166147032120 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # Unencrypted datasets should only allow keylocation of 'none', encryption # roots should only allow keylocation of 'prompt' and file URI, and encrypted # child datasets should not be able to change their keylocation. # # STRATEGY: # 1. Verify the key location of the default dataset is 'none' # 2. Attempt to change the key location of the default dataset # 3. Create an encrypted dataset using a key file # 4. Attempt to change the key location of the encrypted dataset to 'none', # an invalid location, its current location, and 'prompt' # 5. Attempt to reload the encrypted dataset key using the new key location # 6. Create a encrypted child dataset # 7. Verify the key location of the child dataset is 'none' # 8. Attempt to change the key location of the child dataset # 9. Verify the key location of the child dataset has not changed # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "Key location can only be 'prompt' or a file path for encryption" \ "roots, and 'none' for unencrypted volumes" log_must eval "echo $PASSPHRASE > /$TESTPOOL/pkey" log_must verify_keylocation $TESTPOOL/$TESTFS "none" log_must zfs set keylocation=none $TESTPOOL/$TESTFS log_mustnot zfs set keylocation=/$TESTPOOL/pkey $TESTPOOL/$TESTFS log_mustnot zfs set keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS log_must verify_keylocation $TESTPOOL/$TESTFS "none" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_mustnot zfs set keylocation=none $TESTPOOL/$TESTFS1 log_mustnot zfs set keylocation=/$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must zfs set keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must verify_keylocation $TESTPOOL/$TESTFS1 "file:///$TESTPOOL/pkey" log_must zfs set keylocation=prompt $TESTPOOL/$TESTFS1 log_must verify_keylocation $TESTPOOL/$TESTFS1 "prompt" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must rm /$TESTPOOL/pkey log_must eval "echo $PASSPHRASE | zfs load-key $TESTPOOL/$TESTFS1" log_must zfs mount $TESTPOOL/$TESTFS1 log_must zfs create $TESTPOOL/$TESTFS1/child log_must verify_keylocation $TESTPOOL/$TESTFS1/child "none" log_mustnot zfs set keylocation=none $TESTPOOL/$TESTFS1/child log_mustnot zfs set keylocation=prompt $TESTPOOL/$TESTFS1/child log_mustnot zfs set keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1/child log_mustnot zfs set keylocation=/$TESTPOOL/pkey $TESTPOOL/$TESTFS1/child log_must verify_keylocation $TESTPOOL/$TESTFS1/child "none" log_pass "Key location can only be 'prompt' or a file path for encryption" \ "roots, and 'none' for unencrypted volumes" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/zfs_set_common.kshlib0000644000000000000000000000007413612141513031532 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.045700963 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib0000644016037001603700000002044313612141513031532 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2014, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib set -A VALID_NAME_CHAR a b c d e f g h i j k l m n o p q r s t u v w x y z \ 0 1 2 3 4 5 6 7 8 9 ':' '-' '.' '_' set -A INVALID_NAME_CHAR A B C D E F G H I J K L M N O P Q R S T U V W X Y Z \ '`' '~' '!' '@' '#' '$' '%' '^' '&' '(' ')' '+' '=' '|' "\\" '{' '[' ']' \ '}' ';' '"' '<' ',' '>' '?' '/' ' ' set -A ALL_CHAR ${VALID_NAME_CHAR[*]} ${INVALID_NAME_CHAR[*]} # # Firstly, set the property value to dataset. Then checking if the property # value is equal with the expected value, according to the expected result. # # $1 property value # $2 property name # $3 dataset # $4 expected result # function set_n_check_prop { typeset expect_value=$1 typeset prop=$2 typeset dataset=$3 typeset expect_result=${4:-true} typeset old_value="" typeset cur_value="" [[ -n $prop ]] && old_value=$(get_prop $prop $dataset) if [[ $expect_result == true ]]; then [[ -z $prop || -z $dataset ]] && \ log_fail "property or dataset isn't defined." log_must zfs set $prop=$expect_value $dataset if [[ $expect_value == "gzip-6" ]]; then expect_value="gzip" fi [[ -n $prop ]] && cur_value=$(get_prop $prop $dataset) case $prop in reservation|reserv|quota ) if [[ $expect_value == "none" ]]; then [[ $cur_value != "0" ]] && \ log_fail "The '$dataset' '$prop' value \ '$cur_value' is not expected." elif [[ $cur_value != $expect_value ]]; then log_fail "The '$dataset' '$prop' value '$cur_value' \ does not equal the expected value '$expect_value'." fi ;; * ) if [[ $cur_value != $expect_value ]]; then log_fail "The '$dataset' '$prop' value '$cur_value' \ does not equal the expected value '$expect_value'." fi ;; esac else log_mustnot zfs set $prop=$expect_value $dataset [[ -n $prop ]] && cur_value=$(get_prop $prop $dataset) wait_freeing if [[ "$expect_value" != "" && "$cur_value" != "$old_value" ]]; then log_fail "The '$dataset' '$prop' value '$cur_value' \ should equal with '$old_value'." fi fi } # # Cleanup all the user properties of the pool and the dataset reside it. # # $1 pool name # function cleanup_user_prop { typeset pool=$1 typeset dtst=$(zfs list -H -r -o name -t filesystem,volume $pool) typeset user_prop for dt in $dtst; do user_prop=$(zfs get -H -o property all $dtst | grep ":") typeset prop for prop in $user_prop; do zfs inherit $prop $dt (($? != 0)) && log_must zfs inherit $prop $dt done done } # # Random select character from the specified character set and combine into a # random string # # $1 character set name # $2 String length # function random_string { typeset char_set=${1:-VALID_NAME_CHAR} typeset -i len=${2:-5} eval typeset -i count=\${#$char_set[@]} # No consumers want an empty string. ((len == 0)) && len=3 typeset str typeset -i i=0 while ((i < len)); do typeset -i ind ((ind = RANDOM % count)) eval str=\${str}\${$char_set[\$ind]} ((i += 1)) done echo "$str" } # # Get valid user defined property name # # $1 user defined property name length # function valid_user_property { typeset -i sumlen=${1:-10} ((sumlen < 2 )) && sumlen=2 typeset -i len ((len = RANDOM % sumlen)) typeset part1 part2 while true; do part1="$(random_string VALID_NAME_CHAR $len)" if [[ "$part1" == "-"* ]]; then continue fi break done ((len = sumlen - (len + 1))) while true; do part2="$(random_string VALID_NAME_CHAR $len)" if [[ -z $part1 && -z $part2 ]]; then continue fi break done echo "${part1}:${part2}" } # # Get invalid user defined property name # # $1 user defined property name length # function invalid_user_property { typeset -i sumlen=${1:-10} ((sumlen == 0)) && sumlen=1 typeset -i len ((len = RANDOM % sumlen)) typeset part1 part2 while true; do part1="$(random_string VALID_NAME_CHAR $len)" ((len = sumlen - len)) part2="$(random_string INVALID_NAME_CHAR $len)" # Avoid $part1 is *:* and $part2 is "=*" if [[ "$part1" == *":"* && "$part2" == "="* ]]; then continue fi break done echo "${part1}${part2}" } # # Get user property value # # $1 user defined property name length # function user_property_value { typeset -i len=${1:-100} typeset value=$(random_string ALL_CHAR $len) echo "$value" } # # Check if the user property is identical to the expected value. # # $1 dataset # $2 user property # $3 expected value # function check_user_prop { typeset dtst=$1 typeset user_prop="$2" typeset expect_value="$3" typeset value=$(zfs get -p -H -o value "$user_prop" $dtst 2>&1) if [[ "$expect_value" == "$value" ]]; then return 0 else return 1 fi } # # Get source of the dataset # function get_source { typeset prop=$1 typeset dataset=$2 typeset source source=$(zfs get -H -o source $prop $dataset) if (($? != 0)); then log_fail "Unable to get $prop source for dataset $dataset" fi echo "$source" } # # Verify property $2 is set from source $4 on dataset $1 and has value $3. # # $1 checked dataset # $2 user property # $3 property value # $4 source # # Returns: 0 if both expected source and value match, 1 otherwise # function check_prop_source { typeset dataset="$1" typeset prop="$2" typeset value="$3" typeset source="$4" typeset chk_value=$(get_prop "$prop" "$dataset") typeset chk_source=$(get_source "$prop" "$dataset") if [[ "$chk_value" != "$value" || "$chk_source" != "$4" ]] then return 1 else return 0 fi } # # Verify target dataset $1 inherit property $2 from dataset $3. # # $1 checked dataset # $2 property # $3 inherited dataset # # Returns: 0 if property has expected value and is inherited, 1 otherwise # function check_prop_inherit { typeset checked_dtst="$1" typeset prop="$2" typeset inherited_dtst="$3" typeset inherited_value=$(get_prop "$prop" "$inherited_dtst") typeset value=$(get_prop "$prop" "$checked_dtst") typeset source=$(get_source "$prop" "$checked_dtst") if [[ "$value" != "$inherited_value" || \ "$source" != "inherited from $inherited_dtst" ]] then return 1 else return 0 fi } # # Verify property $2 received value on dataset $1 has value $3 # # $1 checked dataset # $2 property name # $3 checked value # # Returns: 0 if property has expected value and is received, 1 otherwise # function check_prop_received { typeset dataset="$1" typeset prop="$2" typeset value="$3" received=$(zfs get -H -o received "$prop" "$dataset") if (($? != 0)); then log_fail "Unable to get $prop received value for dataset " \ "$dataset" fi if [[ "$received" == "$value" ]] then return 0 else return 1 fi } # # Verify user property $2 is not set on dataset $1 # # $1 checked dataset # $2 property name # # Returns: 0 if property is missing (not set), 1 otherwise # function check_prop_missing { typeset dataset="$1" typeset prop="$2" value=$(zfs get -H -o value "$prop" "$dataset") if (($? != 0)); then log_fail "Unable to get $prop value for dataset $dataset" fi if [[ "-" == "$value" ]] then return 0 else return 1 fi } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/property_alias_001_pos0000644000000000000000000000007413607166147031546 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.078702023 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/property_alias_001_pos.ksh0000755016037001603700000000771313607166147032342 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016, 2017 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Verify the properties with aliases also work with those aliases # # STRATEGY: # 1. Create pool, then create filesystem & volume within it. # 2. Set or retrieve property via alias with datasets. # 3. Verify the result should be successful. # verify_runnable "both" function set_and_check # { typeset ds=$1 typeset setprop=$2 typeset setval=$3 typeset chkprop=$4 typeset getval log_must zfs set $setprop=$setval $ds if [[ $setval == "gzip-6" ]]; then setval="gzip" fi getval=$(get_prop $chkprop $ds) case $setprop in reservation|reserv ) if [[ $setval == "none" ]]; then [[ $getval != "0" ]] && \ log_fail "Setting the property $setprop" \ "with value $setval fails." elif [[ $getval != $setval ]]; then log_fail "Setting the property $setprop with" \ "with $setval fails." fi ;; * ) [[ $getval != $setval ]] && \ log_fail "Setting the property $setprop with value \ $setval fails." ;; esac } log_assert "Properties with aliases also work with those aliases." set -A ro_prop "available" "avail" "referenced" "refer" set -A rw_prop "readonly" "rdonly" "compression" "compress" "reservation" "reserv" set -A chk_prop "rdonly" "readonly" "compress" "compression" "reserv" "reservation" set -A size "512" "1024" "2048" "4096" "8192" "16384" "32768" "65536" "131072" pool=$TESTPOOL fs=$TESTPOOL/$TESTFS vol=$TESTPOOL/$TESTVOL typeset -l avail_space=$(get_prop avail $pool) typeset -l reservsize typeset -i i=0 for ds in $pool $fs $vol; do for propname in ${ro_prop[*]}; do zfs get -pH -o value $propname $ds >/dev/null 2>&1 (( $? != 0 )) && \ log_fail "Get the property $proname of $ds failed." done i=0 while (( i < ${#rw_prop[*]} )); do case ${rw_prop[i]} in readonly|rdonly ) for val in "on" "off"; do set_and_check $ds ${rw_prop[i]} $val ${chk_prop[i]} done ;; compression|compress ) for val in $(get_compress_opts zfs_set); do set_and_check $ds ${rw_prop[i]} $val ${chk_prop[i]} done ;; reservation|reserv ) (( reservsize = $avail_space % (( $RANDOM + 1 )) )) for val in "0" "$reservsize" "none"; do set_and_check $ds ${rw_prop[i]} $val ${chk_prop[i]} done ;; esac (( i = i + 1 )) done if [[ $ds == $vol ]]; then for propname in "volblocksize" "volblock" ; do zfs get -pH -o value $propname $ds >/dev/null 2>&1 (( $? != 0 )) && \ log_fail "Get the property $propname of $ds failed." done fi done for ds in $pool $fs; do for propname in "recordsize" "recsize"; do for val in ${size[*]}; do if [[ $propname == "recordsize" ]]; then set_and_check $ds $propname $val "recsize" else set_and_check $ds $propname $val "recordsize" fi done done done log_pass "The alias of a property works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/canmount_004_pos.ksh0000644000000000000000000000007413607166133031117 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.063701541 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/canmount_004_pos.ksh0000755016037001603700000000470513607166133031125 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify canmount=noauto work fine when setting sharenfs or sharesmb. # # STRATEGY: # 1. Create a fs canmount=noauto. # 2. Set sharenfs or sharesmb. # 3. Verify the fs is umounted. # verify_runnable "global" # properties set -A sharenfs_prop "off" "on" "rw" set -A sharesmb_prop "off" "on" function cleanup { log_must zfs destroy -rR $CS_FS } function assert_unmounted { mnted=$(get_prop mounted $CS_FS) if [[ "$mnted" == "yes" ]]; then canmnt=$(get_prop canmount $CS_FS) shnfs=$(get_prop sharenfs $CS_FS) shsmb=$(get_prop sharesmb $CS_FS) mntpt=$(get_prop mountpoint $CS_FS) log_fail "$CS_FS should be unmounted" \ "[canmount=$canmnt,sharenfs=$shnfs,sharesmb=$shsmb,mountpoint=$mntpt]." fi } log_assert "Verify canmount=noauto work fine when setting sharenfs or sharesmb." log_onexit cleanup CS_FS=$TESTPOOL/$TESTFS/cs_fs.$$ oldmpt=$TESTDIR/old_cs_fs.$$ newmpt=$TESTDIR/new_cs_fs.$$ log_must zfs create -o canmount=noauto -o mountpoint=$oldmpt $CS_FS assert_unmounted for n in ${sharenfs_prop[@]}; do log_must zfs set sharenfs="$n" $CS_FS assert_unmounted for s in ${sharesmb_prop[@]}; do log_must zfs set sharesmb="$s" $CS_FS assert_unmounted mntpt=$(get_prop mountpoint $CS_FS) if [[ "$mntpt" == "$oldmpt" ]]; then log_must zfs set mountpoint="$newmpt" $CS_FS else log_must zfs set mountpoint="$oldmpt" $CS_FS fi assert_unmounted done done log_pass "Verify canmount=noauto work fine when setting sharenfs or sharesmb." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003027343 xustar000000000000000030 mtime=1579730435.864346628 30 atime=1579730455.321971353 30 ctime=1579730478.114703179 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/Makefile.in0000664016037001603700000006261013612143003027354 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_set DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_set ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ cache_001_pos.ksh \ cache_002_neg.ksh \ canmount_001_pos.ksh \ canmount_002_pos.ksh \ canmount_003_pos.ksh \ canmount_004_pos.ksh \ checksum_001_pos.ksh \ compression_001_pos.ksh \ mountpoint_001_pos.ksh \ mountpoint_002_pos.ksh \ mountpoint_003_pos.ksh \ onoffs_001_pos.ksh \ property_alias_001_pos.ksh \ readonly_001_pos.ksh \ reservation_001_neg.ksh \ ro_props_001_pos.ksh \ share_mount_001_neg.ksh \ snapdir_001_pos.ksh \ user_property_001_pos.ksh \ user_property_002_pos.ksh \ user_property_003_neg.ksh \ user_property_004_pos.ksh \ version_001_neg.ksh \ zfs_set_001_neg.ksh \ zfs_set_002_neg.ksh \ zfs_set_003_neg.ksh \ zfs_set_keylocation.ksh dist_pkgdata_DATA = \ zfs_set_common.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_set/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_set/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/cache_002_neg.ksh0000644000000000000000000000007413612141513030273 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.054701253 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/cache_002_neg.ksh0000755016037001603700000000362013612141513030274 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting invalid primarycache and secondarycache on file system or volume. # It should fail. # # STRATEGY: # 1. Create pool, then create filesystem & volume within it. # 2. Setting invalid {primary|secondary}cache value, it should fail. # verify_runnable "both" set -A dataset "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTVOL" set -A values "12345" "null" "not_existed" "abcd1234" log_assert "Setting invalid {primary|secondary}cache on fs and volume, " \ "It should fail." typeset -i i=0 typeset -i j=0 for propname in "primarycache" "secondarycache" do while (( i < ${#dataset[@]} )); do j=0 while (( j < ${#values[@]} )); do log_mustnot zfs set $propname=${values[j]} ${dataset[i]} (( j += 1 )) done (( i += 1 )) done done log_pass "Setting invalid {primary|secondary}cache on fs or volume fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/zfs_set_002_neg.ksh0000644000000000000000000000007413607166133030716 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.105702889 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_002_neg.ksh0000755016037001603700000000357313607166133030726 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2011, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # 'zfs set' should fail with invalid arguments # # STRATEGY: # 1. Create an array of invalid arguments # 1. Run zfs set with each invalid argument # 2. Verify that zfs set returns error # verify_runnable "both" log_assert "'zfs set' fails with invalid arguments" set -A editable_props "quota" "reservation" "reserv" "volsize" "recordsize" "recsize" \ "mountpoint" "checksum" "compression" "compress" "atime" \ "devices" "exec" "setuid" "readonly" "zoned" "snapdir" "aclmode" \ "aclinherit" "canmount" "xattr" "copies" "version" for ds in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTFS@$TESTSNAP; do for badarg in "" "-" "-?"; do for prop in ${editable_props[@]}; do log_mustnot eval "zfs set $badarg $prop= $ds >/dev/null 2>&1" done done done log_pass "'zfs set' fails with invalid arguments as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/mountpoint_003_pos.ksh0000644000000000000000000000007413607166147031513 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.074701895 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/mountpoint_003_pos.ksh0000755016037001603700000000713713607166147031523 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify FSType-specific option works well with legacy mount. # # STRATEGY: # 1. Set up FSType-specific options and expected keywords array. # 2. Create a test ZFS file system and set mountpoint=legacy. # 3. Mount ZFS test filesystem with specific options. # 4. Verify the filesystem was mounted with specific option. # 5. Loop check all the options. # verify_runnable "both" function cleanup { ismounted $tmpmnt && log_must umount $tmpmnt [[ -d $tmpmnt ]] && log_must rm -rf $tmpmnt [[ -n $oldmpt ]] && log_must zfs set mountpoint=$oldmpt $testfs ! ismounted $oldmpt && log_must zfs mount $testfs } log_assert "With legacy mount, FSType-specific option works well." log_onexit cleanup # # /mnt on pool/fs read/write/setuid/devices/noexec/xattr/atime/dev=2d9009e # # FSType- FSType- # specific Keyword specific Keyword # option option # if is_linux; then set -A args \ "nodev" "dev" \ "noexec" "exec" \ "ro" "rw" \ "nosuid" "suid" \ "xattr" "noxattr" \ "atime" "noatime" # Only older kernels support non-blocking mandatory locks if [[ $(linux_version) -lt $(linux_version "4.4") ]]; then args+=("mand" "nomand") fi else set -A args \ "devices" "/devices/" "nodevices" "/nodevices/" \ "exec" "/exec/" "noexec" "/noexec/" \ "nbmand" "/nbmand/" "nonbmand" "/nonbmand/" \ "ro" "read only" "rw" "read/write" \ "setuid" "/setuid/" "nosetuid" "/nosetuid/" \ "xattr" "/xattr/" "noxattr" "/noxattr/" \ "atime" "/atime/" "noatime" "/noatime/" fi tmpmnt=/tmpmnt.$$ [[ -d $tmpmnt ]] && rm -rf $tmpmnt testfs=$TESTPOOL/$TESTFS log_must mkdir $tmpmnt oldmpt=$(get_prop mountpoint $testfs) log_must zfs set mountpoint=legacy $testfs typeset i=0 while ((i < ${#args[@]})); do if is_linux; then log_must mount -t zfs -o ${args[$i]} $testfs $tmpmnt msg=$(mount | grep "$tmpmnt ") echo $msg | grep "${args[((i))]}" > /dev/null 2>&1 if (($? != 0)) ; then echo $msg | grep "${args[((i-1))]}" > /dev/null 2>&1 if (($? == 0)) ; then log_fail "Expected option: ${args[((i))]} \n" \ "Real option: $msg" fi fi log_must umount $tmpmnt ((i += 1)) else log_must mount -F zfs -o ${args[$i]} $testfs $tmpmnt msg=$(mount | grep "^$tmpmnt ") # In LZ, a user with all zone privileges can never "devices" if ! is_global_zone && [[ ${args[$i]} == devices ]] ; then args[((i+1))]="/nodevices/" fi echo $msg | grep "${args[((i+1))]}" > /dev/null 2>&1 if (($? != 0)) ; then log_fail "Expected option: ${args[((i+1))]} \n" \ "Real option: $msg" fi log_must umount $tmpmnt ((i += 2)) fi done log_pass "With legacy mount, FSType-specific option works well passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/PaxHeaders.151519/zfs_set_001_neg.ksh0000644000000000000000000000007413607166133030715 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.103702825 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_set/zfs_set_001_neg.ksh0000755016037001603700000000521713607166133030722 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # Setting invalid value to mountpoint, checksum, atime, readonly, setuid, # zoned, recordsize, or canmount on a file system, volume. It should be failed. # # STRATEGY: # 1. Create pool, then create file system & volume within it. # 2. Setting invalid value, it should be failed. # verify_runnable "both" set -A props "" "mountpoint" "checksum" "compression" "atime" "readonly" \ "setuid" "zoned" "canmount" set -A values "" "mountpoint" "checksum" "compression" "atime" "readonly" \ "setuid" "zoned" "0" "-?" "-on" "--on" "*" "?" "Legacy" "NONE" "oN" \ "On" "ON" "ofF" "OFf" "oFF" "Off" "OfF" "OFF" "LzJb" "lZJb" "LZjB" \ "blad" "default" "TESTPOOL" "$TESTPOOL/$TESTCTR" \ "$TESTPOOL/$TESTCTR/$TESTFS" "$TESTPOOL/$TESTFS" set -A dataset "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL/$TESTVOL" log_assert "Setting invalid value to mountpoint, checksum, compression, atime,"\ "readonly, setuid, zoned or canmount on a file system file system or volume." \ "It should be failed." typeset -i i=0 typeset -i j=0 typeset -i k=0 while (( i < ${#dataset[@]} )); do j=0 while (( j < ${#props[@]} )); do k=0 while (( k < ${#values[@]} )); do set_n_check_prop "${values[k]}" "${props[j]}" \ "${dataset[i]}" false (( k += 1 )) done (( j += 1 )) done # Additional recordsize set_n_check_prop "recordsize" "2048K" "${dataset[i]}" false set_n_check_prop "recordsize" "128B" "${dataset[i]}" false (( i += 1 )) done log_pass "Setting invalid value to mountpoint, checksum, compression, atime, " \ "readonly, setuid, zoned or canmount on file system or volume pass." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_share0000644000000000000000000000013213612143056025540 xustar000000000000000030 mtime=1579730478.193705715 30 atime=1579730489.093055677 30 ctime=1579730478.193705715 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/0000775016037001603700000000000013612143056025621 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_006_pos.ks0000644000000000000000000000007413607166133031420 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.177705201 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_006_pos.ksh0000755016037001603700000000534713607166133031601 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that a dataset could not be shared but filesystems are shared. # # STRATEGY: # 1. Create a dataset and file system # 2. Set the sharenfs property on the dataset # 3. Verify that the dataset is unable be shared. # 4. Add a new file system to the dataset. # 5. Verify that the newly added file system be shared. # verify_runnable "global" function cleanup { log_must zfs set sharenfs=off $TESTPOOL/$TESTCTR if mounted $TESTDIR2; then log_must zfs unmount $TESTDIR2 fi datasetexists $TESTPOOL/$TESTCTR/$TESTFS2 && \ log_must zfs destroy $TESTPOOL/$TESTCTR/$TESTFS2 typeset fs="" for fs in $mntp $TESTDIR1 $TESTDIR2 do log_must unshare_fs $fs done } # # Main test routine. # # Given a mountpoint and a dataset, this routine will set the # sharenfs property on the dataset and verify that dataset # is unable to be shared but the existing contained file systems # could be shared. # function test_ctr_share # mntp ctr { typeset mntp=$1 typeset ctr=$2 not_shared $mntp || \ log_fail "Mountpoint: $mntp is already shared." log_must zfs set sharenfs=on $ctr not_shared $mntp || \ log_fail "File system $mntp is shared (set sharenfs)." # # Add a new file system to the dataset and verify it is shared. # typeset mntp2=$TESTDIR2 log_must zfs create $ctr/$TESTFS2 log_must zfs set mountpoint=$mntp2 $ctr/$TESTFS2 is_shared $mntp2 || \ log_fail "File system $mntp2 was not shared (set sharenfs)." } log_assert "Verify that a dataset could not be shared, " \ "but its sub-filesystems could be shared." log_onexit cleanup typeset mntp=$(get_prop mountpoint $TESTPOOL/$TESTCTR) test_ctr_share $mntp $TESTPOOL/$TESTCTR log_pass "A dataset could not be shared, " \ "but its sub-filesystems could be shared as expect." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_010_neg.ks0000644000000000000000000000007413607166133031363 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.186705491 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_010_neg.ksh0000755016037001603700000000320613607166133031534 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that zfs share should fail with bad parameters # # STRATEGY: # 1. Make an array of bad parameters # 2. Use zfs share to share the filesystem # 3. Verify that zfs share returns error # verify_runnable "both" log_assert "zfs share fails with bad parameters" fs=$TESTPOOL/$TESTFS set -A badargs "A" "-A" "-" "-x" "-?" "=" "-a *" "-a" for arg in "${badargs[@]}"; do log_mustnot eval "zfs share $arg $fs >/dev/null 2>&1" done #zfs share failed when missing arguments or invalid datasetname for obj in "" "/$fs"; do log_mustnot eval "zfs share $obj >/dev/null 2>&1" done log_pass "zfs share fails with bad parameters as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_007_neg.ks0000644000000000000000000000007413607166133031371 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.179705265 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_007_neg.ksh0000755016037001603700000000444413607166133031547 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that invalid share parameters and options are caught. # # STRATEGY: # 1. Create a ZFS file system. # 2. For each option in the list, set the sharenfs property. # 3. Verify that the error code and sharenfs property. # verify_runnable "both" function cleanup { if is_global_zone; then log_must zfs set sharenfs=off $TESTPOOL/$TESTFS fi } set -A badopts \ "r0" "r0=machine1" "r0=machine1:machine2" \ "-g" "-b" "-c" "-d" "--invalid" \ "$TESTPOOL" "$TESTPOOL/$TESTFS" "$TESTPOOL\$TESTCTR\$TESTFS1" log_assert "Verify that invalid share parameters and options are caught." log_onexit cleanup typeset -i i=0 while (( i < ${#badopts[*]} )) do log_note "Setting sharenfs=${badopts[i]} $i " log_mustnot zfs set sharenfs="${badopts[i]}" $TESTPOOL/$TESTFS showshares_nfs | grep $option > /dev/null 2>&1 if (( $? == 0 )); then log_fail "An invalid setting '$option' was propagated." fi # # To global zone, sharenfs must be set 'off' before malformed testing. # Otherwise, the malformed test return '0'. # # To non-global zone, sharenfs can be set even 'off' or 'on'. # if is_global_zone; then log_note "Resetting sharenfs option" log_must zfs set sharenfs=off $TESTPOOL/$TESTFS fi ((i = i + 1)) done log_pass "Invalid share parameters and options we caught as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_003_pos.ks0000644000000000000000000000007413607166133031415 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.170704977 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_003_pos.ksh0000755016037001603700000000545113607166133031572 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Invoking "zfs share " with a file system # whose sharenfs property is 'off' , will fail with a # return code of 1 and issue an error message. # # STRATEGY: # 1. Make sure that the ZFS file system is unshared. # 2. Mount the file system using the various combinations # - zfs set sharenfs=off # - zfs set sharenfs=none # 3. Verify that share failed with return code of 1. # verify_runnable "both" set -A fs \ "$TESTDIR" "$TESTPOOL/$TESTFS" \ "$TESTDIR1" "$TESTPOOL/$TESTCTR/$TESTFS1" function cleanup { typeset -i i=0 while (( i < ${#fs[*]} )); do log_must zfs inherit -r sharenfs ${fs[((i + 1))]} log_must unshare_fs ${fs[i]} ((i = i + 2)) done } # # Main test routine. # # Given a mountpoint and file system this routine will attempt # to share a legacy mountpoint and then verify the share fails as # expected. # function test_legacy_share # mntp filesystem { typeset mntp=$1 typeset filesystem=$2 not_shared $mntp || \ log_fail "File system $filesystem is already shared." if is_global_zone ; then log_must zfs set sharenfs=off $filesystem not_shared $mntp || \ log_fail "File system $filesystem is still shared (set sharenfs)." fi zfs share $filesystem ret=$? (( ret == 1)) || \ log_fail "'zfs share $filesystem' " \ "unexpected return code of $ret." not_shared $mntp || \ log_fail "file system $filesystem is shared (zfs share)." } log_assert "Verify that 'zfs share' with a file system " \ "whose sharenfs property is 'off' " \ "will fail with return code 1." log_onexit cleanup typeset -i i=0 while (( i < ${#fs[*]} )); do test_legacy_share ${fs[i]} ${fs[((i + 1))]} ((i = i + 2)) done log_pass "Verify that 'zfs share' with a file system " \ "whose sharenfs property is 'off' fails." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_005_pos.ks0000644000000000000000000000007413607166133031417 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.174705105 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh0000755016037001603700000000475513607166133031602 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that NFS share options are propagated correctly. # # STRATEGY: # 1. Create a ZFS file system. # 2. For each option in the list, set the sharenfs property. # 3. Verify through the share command that the options are propagated. # verify_runnable "global" function cleanup { log_must zfs set sharenfs=off $TESTPOOL/$TESTFS is_shared $TESTPOOL/$TESTFS && \ log_must unshare_fs $TESTPOOL/$TESTFS } if is_linux; then set -A shareopts \ "ro" "rw" "rw,insecure" "rw,async" "ro,crossmnt" else set -A shareopts \ "ro" "ro=machine1" "ro=machine1:machine2" \ "rw" "rw=machine1" "rw=machine1:machine2" \ "ro=machine1:machine2,rw" "anon=0" "anon=0,sec=sys,rw" \ "nosuid" "root=machine1:machine2" "rw=.mydomain.mycompany.com" \ "rw=-terra:engineering" "log" "public" fi log_assert "Verify that NFS share options are propagated correctly." log_onexit cleanup cleanup typeset -i i=0 while (( i < ${#shareopts[*]} )) do log_must zfs set sharenfs="${shareopts[i]}" $TESTPOOL/$TESTFS option=`get_prop sharenfs $TESTPOOL/$TESTFS` if [[ $option != ${shareopts[i]} ]]; then log_fail "get sharenfs failed. ($option != ${shareopts[i]})" fi # Verify the single option after the leading 'ro' or 'rw'. if is_linux; then option=`echo "$option" | cut -f2 -d','` fi showshares_nfs | grep $option > /dev/null 2>&1 if (( $? != 0 )); then log_fail "The '$option' option was not found in share output." fi ((i = i + 1)) done log_pass "NFS options were propagated correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133027663 xustar000000000000000030 atime=1579730435.881347172 30 ctime=1579730478.190705619 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/Makefile.am0000644016037001603700000000067413607166133027667 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_share dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_share_001_pos.ksh \ zfs_share_002_pos.ksh \ zfs_share_003_pos.ksh \ zfs_share_004_pos.ksh \ zfs_share_005_pos.ksh \ zfs_share_006_pos.ksh \ zfs_share_007_neg.ksh \ zfs_share_008_neg.ksh \ zfs_share_009_neg.ksh \ zfs_share_010_neg.ksh \ zfs_share_011_pos.ksh dist_pkgdata_DATA = \ zfs_share.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_004_pos.ks0000644000000000000000000000007413607166133031416 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.172705041 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_004_pos.ksh0000755016037001603700000000514313607166133031571 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_share/zfs_share.cfg # # DESCRIPTION: # Verify that a file system and its snapshot are shared. # # STRATEGY: # 1. Create a file system # 2. Set the sharenfs property on the file system # 3. Create a snapshot # 4. Verify that both are shared. # verify_runnable "global" function cleanup { if snapexists $TESTPOOL/$TESTFS@snapshot; then log_must zfs destroy $TESTPOOL/$TESTFS@snapshot fi log_must zfs set sharenfs=off $TESTPOOL/$TESTFS log_must unshare_fs $TESTPOOL/$TESTFS } # # Main test routine. # # Given a mountpoint and file system this routine will attempt # share the mountpoint and then verify a snapshot of the mounpoint # is also shared. # function test_snap_share # mntp filesystem { typeset mntp=$1 typeset filesystem=$2 not_shared $mntp || \ log_fail "File system $filesystem is already shared." log_must zfs set sharenfs=on $filesystem is_shared $mntp || \ log_fail "File system $filesystem is not shared (set sharenfs)." log_must ls -l $mntp/$SNAPROOT/snapshot # # Verify 'zfs share' works as well. # log_must zfs unshare $filesystem log_must zfs share $filesystem is_shared $mntp || \ log_fail "file system $filesystem is not shared (zfs share)." log_must ls -l $mntp/$SNAPROOT/snapshot } log_assert "Verify that a file system and its snapshot are shared." log_onexit cleanup log_must zfs snapshot $TESTPOOL/$TESTFS@snapshot test_snap_share $TESTDIR $TESTPOOL/$TESTFS log_pass "A file system and its snapshot are both shared as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_002_pos.ks0000644000000000000000000000007413607166133031414 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.168704913 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_002_pos.ksh0000755016037001603700000000377313607166133031576 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_share/zfs_share.cfg # # DESCRIPTION: # Verify that "zfs share" with a non-existent file system fails. # # STRATEGY: # 1. Make sure the NONEXISTFSNAME ZFS file system is not in 'zfs list'. # 2. Invoke 'zfs share '. # 3. Verify that share fails # verify_runnable "both" function cleanup { typeset fs for fs in $NONEXISTFSNAME $TESTFS ; do log_must unshare_fs $TESTPOOL/$fs done } typeset -i ret=0 log_assert "Verify that "zfs share" with a non-existent file system fails." log_onexit cleanup log_mustnot zfs list $TESTPOOL/$NONEXISTFSNAME zfs share $TESTPOOL/$NONEXISTFSNAME ret=$? (( ret == 1)) || \ log_fail "'zfs share $TESTPOOL/$NONEXISTFSNAME' " \ "failed with an unexpected return code of $ret." log_note "Make sure the file system $TESTPOOL/$NONEXISTFSNAME is unshared" not_shared $TESTPOOL/$NONEXISTFSNAME || \ log_fail "File system $TESTPOOL/$NONEXISTFSNAME is unexpectedly shared." log_pass "'zfs share' with a non-existent file system fails." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027476 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.161704687 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/setup.ksh0000755016037001603700000000221513607166133027476 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib share -s if [ $? -ne 0 ]; then log_unsupported "The NFS utilities are not installed" fi # Make sure NFS server is running before testing. setup_nfs_server DISK=${DISKS%% *} default_container_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027765 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.163704753 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/cleanup.ksh0000755016037001603700000000171013607166133027764 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_011_pos.ks0000644000000000000000000000007413607166133031414 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.188705555 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_011_pos.ksh0000755016037001603700000000457113607166133031573 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that umount and destroy fail, and do not unshare the shared # file system # # STRATEGY: # 1. Share the filesystem via 'zfs set sharenfs'. # 2. Try umount failure, and verify that the file system is still shared. # 3. Try destroy failure, and verify that the file system is still shared. # verify_runnable "global" function cleanup { log_must cd $origdir log_must zfs set sharenfs=off $TESTPOOL/$TESTFS unshare_fs $TESTPOOL/$TESTFS if snapexists "$TESTPOOL/$TESTFS@snapshot"; then log_must zfs destroy -f $TESTPOOL/$TESTFS@snapshot fi if datasetexists $TESTPOOL/$TESTFS/fs2 ; then log_must zfs destroy -f $TESTPOOL/$TESTFS/fs2 fi } log_assert "Verify that umount and destroy fail, and do not unshare the shared" \ "file system" log_onexit cleanup typeset origdir=$PWD # unmount fails will not unshare the shared filesystem log_must zfs set sharenfs=on $TESTPOOL/$TESTFS log_must is_shared $TESTDIR if cd $TESTDIR ; then log_mustnot zfs umount $TESTPOOL/$TESTFS else log_fail "cd $TESTDIR fails" fi log_must is_shared $TESTDIR # destroy fails will not unshare the shared filesystem log_must zfs create $TESTPOOL/$TESTFS/fs2 if cd $TESTDIR/fs2 ; then log_mustnot zfs destroy $TESTPOOL/$TESTFS/fs2 else log_fail "cd $TESTDIR/fs2 fails" fi log_must is_shared $TESTDIR/fs2 log_pass "Verify that umount and destroy fail, and do not unshare the shared" \ "file system" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_001_pos.ks0000644000000000000000000000007413607166133031413 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.165704817 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_001_pos.ksh0000755016037001603700000000701713607166133031570 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that 'zfs set sharenfs' and 'zfs share' shares a given dataset. # # STRATEGY: # 1. Invoke 'zfs set sharenfs'. # 2. Verify that the file system is shared. # 3. Invoke 'zfs share'. # 4. Verify that the file system is shared. # 5. Verify that a shared filesystem cannot be shared again. # 6. Verify that share -a succeeds. # verify_runnable "global" set -A fs \ "$TESTDIR1" "$TESTPOOL/$TESTCTR/$TESTFS1" \ "$TESTDIR2" "$TESTPOOL/$TESTFS-clone" \ "$TESTDIR" "$TESTPOOL/$TESTFS" function cleanup { typeset -i i=0 while (( i < ${#fs[*]} )); do log_must zfs set sharenfs=off ${fs[((i+1))]} unshare_fs ${fs[i]} ((i = i + 2)) done if mounted $TESTPOOL/$TESTFS-clone; then log_must zfs unmount $TESTDIR2 fi datasetexists $TESTPOOL/$TESTFS-clone && \ log_must zfs destroy -f $TESTPOOL/$TESTFS-clone if snapexists "$TESTPOOL/$TESTFS@snapshot"; then log_must zfs destroy -f $TESTPOOL/$TESTFS@snapshot fi } # # Main test routine. # # Given a mountpoint and file system this routine will attempt # share the mountpoint and then verify it has been shared. # function test_share # mntp filesystem { typeset mntp=$1 typeset filesystem=$2 not_shared $mntp || \ log_fail "File system $filesystem is already shared." log_must zfs set sharenfs=on $filesystem is_shared $mntp || \ log_fail "File system $filesystem is not shared (set sharenfs)." # # Verify 'zfs share' works as well. # log_must zfs unshare $filesystem is_shared $mntp && \ log_fail "File system $filesystem is still shared." log_must zfs share $filesystem is_shared $mntp || \ log_fail "file system $filesystem is not shared (zfs share)." log_note "Sharing a shared file system fails." log_mustnot zfs share $filesystem } log_assert "Verify that 'zfs share' succeeds as root." log_onexit cleanup log_must zfs snapshot $TESTPOOL/$TESTFS@snapshot log_must zfs clone $TESTPOOL/$TESTFS@snapshot $TESTPOOL/$TESTFS-clone log_must zfs set mountpoint=$TESTDIR2 $TESTPOOL/$TESTFS-clone typeset -i i=0 while (( i < ${#fs[*]} )); do test_share ${fs[i]} ${fs[((i + 1))]} ((i = i + 2)) done log_note "Verify 'zfs share -a' succeeds." # # Unshare each of the file systems. # i=0 while (( i < ${#fs[*]} )); do unshare_fs ${fs[i]} ((i = i + 2)) done # # Try a zfs share -a and verify all file systems are shared. # log_must zfs share -a i=0 while (( i < ${#fs[*]} )); do is_shared ${fs[i]} || \ log_fail "File system ${fs[i]} is not shared (share -a)" ((i = i + 2)) done log_pass "'zfs share [ -a ] ' succeeds as root." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share.cfg0000644000000000000000000000007413607166133030274 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.158704591 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share.cfg0000644016037001603700000000205413607166133030272 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export SNAPROOT=".zfs/snapshot" export NONEXISTFSNAME="nonexistfs50charslong_0123456789012345678901234567" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003027652 xustar000000000000000030 mtime=1579730435.919348394 30 atime=1579730455.351972317 30 ctime=1579730478.193705715 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/Makefile.in0000664016037001603700000006176413612143003027674 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_share DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_share ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_share_001_pos.ksh \ zfs_share_002_pos.ksh \ zfs_share_003_pos.ksh \ zfs_share_004_pos.ksh \ zfs_share_005_pos.ksh \ zfs_share_006_pos.ksh \ zfs_share_007_neg.ksh \ zfs_share_008_neg.ksh \ zfs_share_009_neg.ksh \ zfs_share_010_neg.ksh \ zfs_share_011_pos.ksh dist_pkgdata_DATA = \ zfs_share.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_share/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_share/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_009_neg.ks0000644000000000000000000000007413607166133031373 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.183705395 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_009_neg.ksh0000755016037001603700000000342713607166133031551 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that zfs share should fail when sharing a shared zfs filesystem # # STRATEGY: # 1. Make a zfs filesystem shared # 2. Use zfs share to share the filesystem # 3. Verify that zfs share returns error # verify_runnable "global" function cleanup { typeset val val=$(get_prop sharenfs $fs) if [[ $val == on ]]; then log_must zfs set sharenfs=off $fs fi } log_assert "zfs share fails with shared filesystem" log_onexit cleanup fs=$TESTPOOL/$TESTFS sharenfs_val=$(get_prop sharenfs $fs) mpt=$(get_prop mountpoint $fs) if [[ $sharenfs_val == off ]]; then log_must zfs set sharenfs=on $fs fi showshares_nfs | grep $mpt >/dev/null 2>&1 if (( $? != 0 )); then log_must zfs share $fs fi log_mustnot zfs share $fs log_pass "zfs share fails with shared filesystem as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/PaxHeaders.151519/zfs_share_008_neg.ks0000644000000000000000000000007313607166133031371 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.18170533 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_008_neg.ksh0000755016037001603700000000373213607166133031547 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that sharing a dataset other than filesystem fails. # # STRATEGY: # 1. Create a ZFS file system. # 2. For each dataset in the list, set the sharenfs property. # 3. Verify that the invalid datasets are not shared. # verify_runnable "global" if is_global_zone ; then set -A datasets \ "$TESTPOOL/$TESTVOL" "$TESTDIR" fi log_assert "Verify that sharing a dataset other than filesystem fails." typeset -i i=0 while (( i < ${#datasets[*]} )) do log_mustnot zfs set sharenfs=on ${datasets[i]} option=`get_prop sharenfs ${datasets[i]}` if [[ $option == ${datasets[i]} ]]; then log_fail "set sharenfs failed. ($option == ${datasets[i]})" fi not_shared ${datasets[i]} || \ log_fail "An invalid setting '$option' was propagated." log_mustnot zfs share ${datasets[i]} not_shared ${datasets[i]} || \ log_fail "An invalid dataset '${datasets[i]}' was shared." ((i = i + 1)) done log_pass "Sharing datasets other than filesystems failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_remap0000644000000000000000000000013213612143055025541 xustar000000000000000030 mtime=1579730477.705690046 30 atime=1579730489.093055677 30 ctime=1579730477.705690046 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/0000775016037001603700000000000013612143055025622 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/PaxHeaders.151519/zfs_remap_obsolete_c0000644000000000000000000000007413607166147031745 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.700689886 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/zfs_remap_obsolete_counts.ksh0000755016037001603700000000437713607166147033635 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/removal/removal.kshlib # # DESCRIPTION: # 'zfs remap' depends on 'feature@obsolete_counts' being active # # STRATEGY: # 1. Prepare a pool where a top-level VDEV has been removed and with # feature@obsolete_counts disabled # 2. Verify any 'zfs remap' command cannot be executed # 3. Verify the same commands complete successfully when # feature@obsolete_counts is enabled # # N.B. The 'zfs remap' command has been disabled and may be removed. export ZFS_REMAP_ENABLED=YES verify_runnable "both" function cleanup { destroy_pool $TESTPOOL rm -f $DISK1 $DISK2 } log_assert "'zfs remap' depends on feature@obsolete_counts being active" log_onexit cleanup f="$TESTPOOL/fs" v="$TESTPOOL/vol" s="$TESTPOOL/fs@snap" c="$TESTPOOL/clone" DISK1="$TEST_BASE_DIR/zfs_remap-1" DISK2="$TEST_BASE_DIR/zfs_remap-2" # 1. Prepare a pool where a top-level VDEV has been removed with # feature@obsolete_counts disabled log_must truncate -s $(($MINVDEVSIZE * 2)) $DISK1 log_must zpool create -o feature@obsolete_counts=disabled $TESTPOOL $DISK1 log_must zfs create $f log_must zfs create -V 1M -s $v log_must zfs snap $s log_must zfs clone $s $c log_must truncate -s $(($MINVDEVSIZE * 2)) $DISK2 log_must zpool add $TESTPOOL $DISK2 log_must zpool remove $TESTPOOL $DISK1 log_must wait_for_removal $TESTPOOL # 2. Verify any 'zfs remap' command cannot be executed log_mustnot zfs remap $f log_mustnot zfs remap $v log_mustnot zfs remap $c # 3. Verify the same commands complete successfully when # feature@obsolete_counts is enabled log_must zpool set feature@obsolete_counts=enabled $TESTPOOL log_must zfs remap $f log_must zfs remap $v log_must zfs remap $c log_pass "'zfs remap' correctly depends on feature@obsolete_counts being active" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/PaxHeaders.151519/zfs_remap_cliargs.ks0000644000000000000000000000007413607166147031667 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.698689822 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/zfs_remap_cliargs.ksh0000755016037001603700000000417113607166147032042 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/removal/removal.kshlib # # DESCRIPTION: # 'zfs remap' should only work with supported parameters. # # STRATEGY: # 1. Prepare a pool where a top-level VDEV has been removed # 2. Verify every supported parameter to 'zfs remap' is accepted # 3. Verify other unsupported parameters raise an error # # The 'zfs remap' command has been disabled and may be removed. export ZFS_REMAP_ENABLED=YES verify_runnable "both" function cleanup { destroy_pool $TESTPOOL rm -f $DISK1 $DISK2 } log_assert "'zfs remap' should only work with supported parameters" log_onexit cleanup f="$TESTPOOL/fs" v="$TESTPOOL/vol" s="$TESTPOOL/fs@snap" b="$TESTPOOL/fs#bmark" c="$TESTPOOL/clone" typeset goodparams=("$f" "$v" "$c") typeset badparams=("-H" "-p" "-?" "$s" "$b" "$f $f" "$f $v" "$f $s") DISK1="$TEST_BASE_DIR/zfs_remap-1" DISK2="$TEST_BASE_DIR/zfs_remap-2" # 1. Prepare a pool where a top-level VDEV has been removed log_must truncate -s $(($MINVDEVSIZE * 2)) $DISK1 log_must zpool create $TESTPOOL $DISK1 log_must zfs create $f log_must zfs create -V 1M -s $v log_must zfs snap $s log_must zfs bookmark $s $b log_must zfs clone $s $c log_must truncate -s $(($MINVDEVSIZE * 2)) $DISK2 log_must zpool add $TESTPOOL $DISK2 log_must zpool remove $TESTPOOL $DISK1 log_must wait_for_removal $TESTPOOL # 2. Verify every supported parameter to 'zfs remap' is accepted for param in "${goodparams[@]}" do log_must zfs remap $param done # 3. Verify other unsupported parameters raise an error for param in "${badparams[@]}" do log_mustnot zfs remap $param done log_pass "'zfs remap' only works with supported parameters" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166147027671 xustar000000000000000030 atime=1579730435.557336771 29 ctime=1579730477.70268995 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/Makefile.am0000644016037001603700000000027613607166147027674 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_remap dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_remap_cliargs.ksh \ zfs_remap_obsolete_counts.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147027505 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.694689692 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/setup.ksh0000755016037001603700000000102413607166147027502 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166147027774 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.696689757 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/cleanup.ksh0000755016037001603700000000104513607166147027774 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003027654 xustar000000000000000030 mtime=1579730435.593337926 30 atime=1579730455.170966505 30 ctime=1579730477.705690046 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_remap/Makefile.in0000664016037001603700000005735213612143003027674 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_remap DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_remap ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_remap_cliargs.ksh \ zfs_remap_obsolete_counts.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_remap/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_remap/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_history0000644000000000000000000000013213612143057026501 xustar000000000000000030 mtime=1579730479.426745307 30 atime=1579730489.093055677 30 ctime=1579730479.426745307 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/0000775016037001603700000000000013612143057026562 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/PaxHeaders.151519/zpool_history_000000644000000000000000000000007413612141513031724 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.420745113 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/zpool_history_001_neg.ksh0000755016037001603700000000354713612141513033433 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify 'zpool history' can deal with non-existent pools and garbage # to the command. # # STRATEGY: # 1. Create pool, volume & snap # 2. Verify 'zpool history' can cope with incorrect arguments. # verify_runnable "global" snap=$TESTPOOL/$TESTFS@snap clone=$TESTPOOL/clone set -A neg_opt "$TESTPOOL/$TESTCTR" "$TESTPOOL/$TESTVOL" "-t $TESTPOOL" \ "-v $TESTPOOL" "$snap" "$clone" "nonexist" "TESTPOOL" function cleanup { datasetexists $clone && log_must zfs destroy $clone datasetexists $snap && log_must zfs destroy $snap } log_assert "Verify 'zpool history' can deal with non-existent pools and " \ "garbage to the command." log_onexit cleanup log_must zfs snapshot $snap log_must zfs clone $snap $clone for opt in "${neg_opt[@]}"; do log_mustnot eval "zpool history $opt > /dev/null" done log_pass "'zpool history' command line negation test passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030623 xustar000000000000000030 atime=1579730436.843378059 30 ctime=1579730479.424745241 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/Makefile.am0000644016037001603700000000030113607166133030612 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_history dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_history_001_neg.ksh \ zpool_history_002_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030436 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.415744953 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/setup.ksh0000755016037001603700000000205213607166133030435 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030725 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.418745049 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/cleanup.ksh0000755016037001603700000000200313607166133030720 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/PaxHeaders.151519/zpool_history_000000644000000000000000000000007413607166133031735 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.422745177 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/zpool_history_002_pos.ksh0000755016037001603700000000300313607166133033460 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify zpool history can handle options [-il] correctly. # # STRATEGY: # 1. Create varied combinations of option -i & -l. # 2. Verify 'zpool history' can cope with these combination correctly. # verify_runnable "global" log_assert "Verify zpool history can handle options [-il] correctly." options="-i -l -il -li -lil -ili -lli -iill -liil" for opt in $options; do log_must eval "zpool history $opt $TESTPOOL > /dev/null 2>&1" done log_pass "Verify zpool history can handle options [-il] passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030613 xustar000000000000000030 mtime=1579730436.880379249 30 atime=1579730455.863988757 30 ctime=1579730479.426745307 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_history/Makefile.in0000664016037001603700000005737213612143004030635 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_history DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_history ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_history_001_neg.ksh \ zpool_history_002_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_history/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_history/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_change-key0000644000000000000000000000013213612143054026447 xustar000000000000000030 mtime=1579730476.639655818 30 atime=1579730489.093055677 30 ctime=1579730476.639655818 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/0000775016037001603700000000000013612143054026530 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/zfs_change-key_0000644000000000000000000000007313607166133031516 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.63565569 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_pbkdf2iters.ksh0000755016037001603700000000366113607166133034451 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs change-key -o' should change the pbkdf2 iterations. # # STRATEGY: # 1. Create an encryption dataset with 200k PBKDF2 iterations # 2. Unmount the dataset # 3. Change the PBKDF2 iterations to 150k # 4. Verify the PBKDF2 iterations # 5. Unload the dataset's key # 6. Attempt to load the dataset's key # verify_runnable "both" function verify_pbkdf2iters { typeset ds=$1 typeset iterations=$2 typeset iters=$(get_prop pbkdf2iters $ds) if [[ "$iters" != "$iterations" ]]; then log_fail "Expected $iterations iterations, got $iters" fi return 0 } function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs change-key -o' should change the pbkdf2 iterations" log_must eval "echo $PASSPHRASE > /$TESTPOOL/pkey" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey -o pbkdf2iters=200000 \ $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL/$TESTFS1 log_must verify_pbkdf2iters $TESTPOOL/$TESTFS1 "200000" log_must zfs change-key -o pbkdf2iters=150000 $TESTPOOL/$TESTFS1 log_must verify_pbkdf2iters $TESTPOOL/$TESTFS1 "150000" log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must zfs load-key $TESTPOOL/$TESTFS1 log_pass "'zfs change-key -o' changes the pbkdf2 iterations" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/zfs_change-key_0000644000000000000000000000007313612141517031511 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.62165524 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_child.ksh0000755016037001603700000000572113612141517033307 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs change-key' should promote an encrypted child to an encryption root. # # STRATEGY: # 1. Create an encrypted dataset # 2. Create an encrypted child dataset # 3. Create an unencrypted child dataset # 4. Attempt to change the key without any flags # 5. Attempt to change the key specifying keylocation # 6. Attempt to change the key specifying keyformat # 7. Verify the new encryption root can unload and load its key # 8. Recreate the child dataset # 9. Attempt to change the key specifying both the keylocation and keyformat # 10. Verify the new encryption root can unload and load its key # 11. Verify the unencrytped child is still accessible normally # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs change-key' should promote an encrypted child to an" \ "encryption root" log_must eval "echo $PASSPHRASE1 | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_must zfs create $TESTPOOL/$TESTFS1/child log_must zfs create -o encryption=off $TESTPOOL/$TESTFS1/child2 log_mustnot eval "echo $PASSPHRASE2 | zfs change-key" \ "$TESTPOOL/$TESTFS1/child" log_mustnot eval "echo $PASSPHRASE2 | zfs change-key -o keylocation=prompt" \ "$TESTPOOL/$TESTFS1/child" log_must eval "echo $PASSPHRASE2 | zfs change-key -o keyformat=passphrase" \ "$TESTPOOL/$TESTFS1/child" log_must zfs unmount $TESTPOOL/$TESTFS1/child log_must zfs unload-key $TESTPOOL/$TESTFS1/child log_must key_unavailable $TESTPOOL/$TESTFS1/child log_must eval "echo $PASSPHRASE2 | zfs load-key $TESTPOOL/$TESTFS1/child" log_must key_available $TESTPOOL/$TESTFS1/child log_must zfs destroy $TESTPOOL/$TESTFS1/child log_must zfs create $TESTPOOL/$TESTFS1/child log_must eval "echo $PASSPHRASE2 | zfs change-key -o keyformat=passphrase" \ "-o keylocation=prompt $TESTPOOL/$TESTFS1/child" log_must zfs unmount $TESTPOOL/$TESTFS1/child log_must zfs unload-key $TESTPOOL/$TESTFS1/child log_must key_unavailable $TESTPOOL/$TESTFS1/child log_must eval "echo $PASSPHRASE2 | zfs load-key $TESTPOOL/$TESTFS1/child" log_must key_available $TESTPOOL/$TESTFS1/child log_must zfs unmount $TESTPOOL/$TESTFS1/child2 log_must zfs mount $TESTPOOL/$TESTFS1/child2 log_pass "'zfs change-key' promotes an encrypted child to an encryption root" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/zfs_change-key.0000644000000000000000000000007413607166133031436 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.619655176 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key.ksh0000755016037001603700000000331013607166133032141 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs change-key' should change the key material. # # STRATEGY: # 1. Create an encrypted dataset # 2. Attempt to change the key # 3. Unmount the dataset and unload its key # 4. Attempt to load the old key # 5. Verify the key is not loaded # 6. Attempt to load the new key # 7. Verify the key is loaded # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs change-key' should change the key material" log_must eval "echo $PASSPHRASE1 | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_must eval "echo $PASSPHRASE2 | zfs change-key $TESTPOOL/$TESTFS1" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_mustnot eval "echo $PASSPHRASE1 | zfs load-key $TESTPOOL/$TESTFS1" log_must key_unavailable $TESTPOOL/$TESTFS1 log_must eval "echo $PASSPHRASE2 | zfs load-key $TESTPOOL/$TESTFS1" log_must key_available $TESTPOOL/$TESTFS1 log_pass "'zfs change-key' changes the key material" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/zfs_change-key_0000644000000000000000000000007413612141514031507 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.623655304 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_clones.ksh0000755016037001603700000000620713612141514033504 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs change-key' should correctly update encryption roots with clones. # # STRATEGY: # 1. Create an encrypted dataset # 2. Create an encryption root child of the first dataset # 3. Clone the child encryption root twice # 4. Add inheriting children to the encryption root and each of the clones # 5. Verify the encryption roots # 6. Have the child encryption root inherit from its parent # 7. Verify the encryption root for all datasets is now the parent dataset # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -Rf $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs change-key' should correctly update encryption " \ "roots with clones" log_must eval "echo $PASSPHRASE1 | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_must eval "echo $PASSPHRASE2 | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1/child" log_must zfs snapshot $TESTPOOL/$TESTFS1/child@1 log_must zfs clone $TESTPOOL/$TESTFS1/child@1 $TESTPOOL/$TESTFS1/clone1 log_must zfs clone $TESTPOOL/$TESTFS1/child@1 $TESTPOOL/$TESTFS1/clone2 log_must zfs create $TESTPOOL/$TESTFS1/child/A log_must zfs create $TESTPOOL/$TESTFS1/clone1/B log_must zfs create $TESTPOOL/$TESTFS1/clone2/C log_must verify_encryption_root $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/child $TESTPOOL/$TESTFS1/child log_must verify_encryption_root $TESTPOOL/$TESTFS1/clone1 $TESTPOOL/$TESTFS1/child log_must verify_encryption_root $TESTPOOL/$TESTFS1/clone2 $TESTPOOL/$TESTFS1/child log_must verify_encryption_root $TESTPOOL/$TESTFS1/child/A $TESTPOOL/$TESTFS1/child log_must verify_encryption_root $TESTPOOL/$TESTFS1/clone1/B $TESTPOOL/$TESTFS1/child log_must verify_encryption_root $TESTPOOL/$TESTFS1/clone2/C $TESTPOOL/$TESTFS1/child log_must zfs change-key -i $TESTPOOL/$TESTFS1/child log_must verify_encryption_root $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/child $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/clone1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/clone2 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/child/A $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/clone1/B $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/clone2/C $TESTPOOL/$TESTFS1 log_pass "'zfs change-key' correctly updates encryption roots with clones" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141514030564 xustar000000000000000030 atime=1579730434.791312175 30 ctime=1579730476.637655754 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/Makefile.am0000644016037001603700000000055613612141514030567 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_change-key dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_change-key.ksh \ zfs_change-key_child.ksh \ zfs_change-key_clones.ksh \ zfs_change-key_inherit.ksh \ zfs_change-key_format.ksh \ zfs_change-key_load.ksh \ zfs_change-key_location.ksh \ zfs_change-key_pbkdf2iters.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/zfs_change-key_0000644000000000000000000000007313607166133031516 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.63165556 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_load.ksh0000755016037001603700000000306113607166133033143 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs change-key -l' should load a dataset's key to change it. # # STRATEGY: # 1. Create an encrypted dataset # 2. Unload dataset and unload its key # 3. Attempt to change the key # 4. Verify the dataset key is loaded # 3. Attempt to change the key # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs change-key -l' should load a dataset's key to change it" log_must eval "echo $PASSPHRASE > /$TESTPOOL/pkey" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must zfs change-key -l $TESTPOOL/$TESTFS1 log_must key_available $TESTPOOL/$TESTFS1 log_must zfs change-key -l $TESTPOOL/$TESTFS1 log_pass "'zfs change-key -l' loads a dataset's key to change it" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030407 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.615655047 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/setup.ksh0000755016037001603700000000173713607166133030417 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030676 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.617655112 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/cleanup.ksh0000755016037001603700000000171013607166133030675 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/zfs_change-key_0000644000000000000000000000007213607166133031515 xustar000000000000000030 atime=1579730360.849765597 28 ctime=1579730476.6266554 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_inherit.ksh0000755016037001603700000000444613607166133033676 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs change-key -i' should cause a dataset to inherit its parent key # # STRATEGY: # 1. Create a parent encrypted dataset # 2. Create a child dataset as an encryption root # 3. Attempt to inherit the parent key # 4. Verify the key is inherited # 5. Unmount the parent and unload its key # 6. Verify the key is unavailable for parent and child # 7. Load the parent key # 8. Verify the key is available for parent and child # 9. Attempt to mount the datasets # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs change-key -i' should cause a dataset to inherit its" \ "parent key" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_must eval "echo $PASSPHRASE1 | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt" \ "$TESTPOOL/$TESTFS1/child" log_must verify_encryption_root $TESTPOOL/$TESTFS1/child \ "$TESTPOOL/$TESTFS1/child" log_must zfs change-key -i $TESTPOOL/$TESTFS1/child log_must verify_encryption_root $TESTPOOL/$TESTFS1/child "$TESTPOOL/$TESTFS1" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must key_unavailable $TESTPOOL/$TESTFS1 log_must key_unavailable $TESTPOOL/$TESTFS1/child log_must eval "echo $PASSPHRASE | zfs load-key $TESTPOOL/$TESTFS1" log_must key_available $TESTPOOL/$TESTFS1 log_must key_available $TESTPOOL/$TESTFS1/child log_must zfs mount $TESTPOOL/$TESTFS1 log_must zfs mount $TESTPOOL/$TESTFS1/child log_pass "'zfs change-key -i' causes a dataset to inherit its parent key" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/Makefile.in0000644000000000000000000000013013612143002030560 xustar000000000000000029 mtime=1579730434.82731333 30 atime=1579730454.714951863 29 ctime=1579730476.64065585 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/Makefile.in0000664016037001603700000005765213612143002030605 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_change-key DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_change-key ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_change-key.ksh \ zfs_change-key_child.ksh \ zfs_change-key_clones.ksh \ zfs_change-key_inherit.ksh \ zfs_change-key_format.ksh \ zfs_change-key_load.ksh \ zfs_change-key_location.ksh \ zfs_change-key_pbkdf2iters.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_change-key/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_change-key/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/zfs_change-key_0000644000000000000000000000007413607166133031517 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.633655624 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_location.ksh0000755016037001603700000000371413607166133034041 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs change-key -o' should change the keylocation. # # STRATEGY: # 1. Create an encryption dataset with a file key location # 2. Change the key location to 'prompt' # 3. Verify the key location # 4. Unmount the dataset and unload its key # 5. Attempt to load the dataset's key # 6. Attempt to change the key location to 'none' # 7. Attempt to change the key location to an invalid value # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs change-key -o' should change the keylocation" log_must eval "echo $PASSPHRASE > /$TESTPOOL/pkey" log_must zfs create -o encryption=on -o keyformat=passphrase \ -o keylocation=file:///$TESTPOOL/pkey $TESTPOOL/$TESTFS1 log_must verify_keylocation $TESTPOOL/$TESTFS1 "file:///$TESTPOOL/pkey" log_must eval "echo $PASSPHRASE1 | zfs change-key -o keylocation=prompt" \ "$TESTPOOL/$TESTFS1" log_must verify_keylocation $TESTPOOL/$TESTFS1 "prompt" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must eval "echo $PASSPHRASE1 | zfs load-key $TESTPOOL/$TESTFS1" log_mustnot zfs change-key -o keylocation=none $TESTPOOL/$TESTFS1 log_mustnot zfs change-key -o keylocation=foobar $TESTPOOL/$TESTFS1 log_pass "'zfs change-key -o' changes the keylocation" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/PaxHeaders.151519/zfs_change-key_0000644000000000000000000000007413607166133031517 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.628655464 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_change-key/zfs_change-key_format.ksh0000755016037001603700000000406213607166133033516 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # Copyright (c) 2019 DilOS # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zfs change-key -o' should change the key format. # # STRATEGY: # 1. Create an encryption dataset with a passphrase key format # 2. Unmount the dataset # 3. Verify the key format is passphrase # 4. Change the key format to hex # 5. Verify the key format is hex # 6. Attempt to reload the dataset's key # 7. Change the key format to raw # 8. Verify the key format is raw # 9. Attempt to reload the dataset's key # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs change-key -o' should change the key format" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1" log_must zfs unmount $TESTPOOL/$TESTFS1 log_must verify_keyformat $TESTPOOL/$TESTFS1 "passphrase" log_must eval "echo $HEXKEY | zfs change-key -o keyformat=hex" \ "$TESTPOOL/$TESTFS1" log_must verify_keyformat $TESTPOOL/$TESTFS1 "hex" log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must eval "echo $HEXKEY | zfs load-key $TESTPOOL/$TESTFS1" log_must eval "printf '%s' $RAWKEY | zfs change-key -o keyformat=raw" \ "$TESTPOOL/$TESTFS1" log_must verify_keyformat $TESTPOOL/$TESTFS1 "raw" log_must zfs unload-key $TESTPOOL/$TESTFS1 log_must eval "printf '%s' $RAWKEY | zfs load-key $TESTPOOL/$TESTFS1" log_pass "'zfs change-key -o' changes the key format" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_unmount0000644000000000000000000000013213612143056026143 xustar000000000000000030 mtime=1579730478.468714545 30 atime=1579730489.094055709 30 ctime=1579730478.468714545 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/0000775016037001603700000000000013612143056026224 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_all_000000644000000000000000000000007413607166133031673 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.461714321 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_all_001_pos.ksh0000755016037001603700000001036513607166133033426 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib # # DESCRIPTION: # Verify that 'zfs unmount -a[f]' succeeds as root. # # STRATEGY: # 1. Create a group of pools with specified vdev. # 2. Create zfs filesystems within the given pools. # 3. Mount all the filesystems. # 4. Verify that 'zfs unmount -a[f]' command succeed, # and all available ZFS filesystems are unmounted. # 5. Verify that 'zfs mount' is identical with 'df -F zfs' # verify_runnable "both" set -A fs "$TESTFS" "$TESTFS1" set -A ctr "" "$TESTCTR" "$TESTCTR1" "$TESTCTR/$TESTCTR1" set -A vol "$TESTVOL" "$TESTVOL1" function setup_all { typeset -i i=0 typeset -i j=0 typeset path while (( i < ${#ctr[*]} )); do path=${TEST_BASE_DIR%%/}/testroot$$/$TESTPOOL if [[ -n ${ctr[i]} ]]; then path=$path/${ctr[i]} setup_filesystem "$DISKS" "$TESTPOOL" \ "${ctr[i]}" "$path" \ "ctr" fi if is_global_zone ; then j=0 while (( j < ${#vol[*]} )); do setup_filesystem "$DISKS" "$TESTPOOL" \ "${ctr[i]}/${vol[j]}" \ "$path/${vol[j]}" \ "vol" ((j = j + 1)) done fi j=0 while (( j < ${#fs[*]} )); do setup_filesystem "$DISKS" "$TESTPOOL" \ "${ctr[i]}/${fs[j]}" \ "$path/${fs[j]}" ((j = j + 1)) done ((i = i + 1)) done return 0 } function cleanup_all { typeset -i i=0 typeset -i j=0 ((i = ${#ctr[*]} - 1)) while (( i >= 0 )); do if is_global_zone ; then j=0 while (( j < ${#vol[*]} )); do cleanup_filesystem "$TESTPOOL" \ "${ctr[i]}/${vol[j]}" ((j = j + 1)) done fi j=0 while (( j < ${#fs[*]} )); do cleanup_filesystem "$TESTPOOL" \ "${ctr[i]}/${fs[j]}" ((j = j + 1)) done [[ -n ${ctr[i]} ]] && \ cleanup_filesystem "$TESTPOOL" "${ctr[i]}" ((i = i - 1)) done [[ -d ${TEST_BASE_DIR%%/}/testroot$$ ]] && \ rm -rf ${TEST_BASE_DIR%%/}/testroot$$ } function verify_all { typeset -i i=0 typeset -i j=0 typeset path while (( i < ${#ctr[*]} )); do path=$TESTPOOL [[ -n ${ctr[i]} ]] && \ path=$path/${ctr[i]} if is_global_zone ; then j=0 while (( j < ${#vol[*]} )); do log_must unmounted "$path/${vol[j]}" ((j = j + 1)) done fi j=0 while (( j < ${#fs[*]} )); do log_must unmounted "$path/${fs[j]}" ((j = j + 1)) done log_must unmounted "$path" ((i = i + 1)) done return 0 } log_assert "Verify that 'zfs $unmountall' succeeds as root, " \ "and all available ZFS filesystems are unmounted." log_onexit cleanup_all log_must setup_all typeset opt for opt in "-a" "-fa"; do export __ZFS_POOL_RESTRICT="$TESTPOOL" log_must zfs $mountall unset __ZFS_POOL_RESTRICT if [[ $opt == "-fa" ]]; then mntpnt=$(get_prop mountpoint ${TESTPOOL}/${TESTCTR}/${TESTFS}) cd $mntpnt log_mustnot zfs unmount -a fi export __ZFS_POOL_RESTRICT="$TESTPOOL" if [[ $opt == "-fa" ]] && is_linux; then log_mustnot zfs unmount $opt cd /tmp fi log_must zfs unmount $opt unset __ZFS_POOL_RESTRICT if [[ $opt == "-fa" ]]; then cd /tmp fi log_must verify_all log_note "Verify that 'zfs $mountcmd' will display " \ "all ZFS filesystems currently mounted." log_must verify_mount_display done log_pass "'zfs mount -[f]a' succeeds as root, " \ "and all available ZFS filesystems are unmounted." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_005_po0000644000000000000000000000007413607166133031626 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.450713967 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_005_pos.ksh0000755016037001603700000000603413607166133032600 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib # # DESCRIPTION: # If invoke "zfs unmount" with a specific filesystem|mountpoint # that have been mounted, but it's currently in use, # it will fail with a return code of 1 # and issue an error message. # But unmount forcefully will bypass this restriction and # unmount that given filesystem successfully. # # STRATEGY: # 1. Make sure that the ZFS filesystem is mounted. # 2. Change directory to that given mountpoint. # 3. Unmount the file system using the various combinations. # - Without force option. (FAILED) # - With force option. (PASS) # 4. Unmount the mountpoint using the various combinations. # - Without force option. (FAILED) # - With force option. (PASS) # 5. Verify the above expected results of the filesystem|mountpoint. # verify_runnable "both" set -A cmd "umount" "unmount" set -A options "" "-f" set -A dev "$TESTPOOL/$TESTFS" "$TESTDIR" function do_unmount_multiple #options #expect { typeset opt=$1 typeset -i expect=${2-0} typeset -i i=0 typeset -i j=0 while (( i < ${#cmd[*]} )); do j=0 while (( j < ${#dev[*]} )); do mounted ${dev[j]} || \ log_must zfs $mountcmd ${dev[0]} cd $TESTDIR || \ log_unresolved "Unable change dir to $TESTDIR" do_unmount "${cmd[i]}" "$opt" \ "${dev[j]}" $expect cleanup ((j = j + 1)) done ((i = i + 1)) done } log_assert "Verify that 'zfs $unmountcmd ' " \ "with a filesystem which mountpoint is currently in use " \ "will fail with return code 1, and forcefully will succeeds as root." log_onexit cleanup cwd=$PWD typeset -i i=0 while (( i < ${#options[*]} )); do if [[ ${options[i]} == "-f" ]]; then if is_linux; then do_unmount_multiple "${options[i]}" 1 else do_unmount_multiple "${options[i]}" fi else do_unmount_multiple "${options[i]}" 1 fi ((i = i + 1)) done log_pass "'zfs $unmountcmd ' " \ "with a filesystem which mountpoint is currently in use " \ "will fail with return code 1, and forcefully will succeeds as root." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_nested0000644000000000000000000000007413607166133032106 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.463714385 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_nested.ksh0000755016037001603700000001226513607166133032700 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy is of the CDDL is also available via the Internet # at http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 Datto Inc. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # zfs unmount should work on nested datasets # # STRATEGY: # 1. Create a set of nested datasets # 2. Unmount a nested dataset and make sure it is unmounted # 3. Ensure the dataset deeper than the one above is also unmounted # 4. Ensure the datasets shallower than the unmounted one is still mounted # 5. Repeat from step 2 with other mountpoint values and shallower nesting # verify_runnable "both" function nesting_cleanup { log_must zfs destroy -fR $TESTPOOL/a log_must zfs destroy -fR $TESTPOOL/b log_must zfs destroy -fR $TESTPOOL/c log_must zfs destroy -fR $TESTPOOL/d } log_onexit nesting_cleanup set -A test_depths 30 16 3 dsA32=$(printf 'a/%.0s' {1..32})"a" log_must zfs create -p $TESTPOOL/$dsA32 dsB32=$(printf 'b/%.0s' {1..32})"b" log_must zfs create -o mountpoint=none -p $TESTPOOL/$dsB32 log_mustnot mount -t zfs $TESTPOOL/$dsB32 /mnt dsC32=$(printf 'c/%.0s' {1..32})"c" log_must zfs create -o mountpoint=legacy -p $TESTPOOL/$dsC32 log_must mount -t zfs $TESTPOOL/$dsC32 /mnt dsD32=$(printf 'd/%.0s' {1..32})"d" log_must zfs create -o mountpoint=/$TESTPOOL/mnt -p $TESTPOOL/$dsD32 for d in ${test_depths[@]}; do # default mountpoint ds_pre=$(printf 'a/%.0s' {1..$(($d-2))})"a" ds=$(printf 'a/%.0s' {1..$(($d-1))})"a" ds_post=$(printf 'a/%.0s' {1..$(($d))})"a" if ! ismounted $TESTPOOL/$ds_pre; then log_fail "$TESTPOOL/$ds_pre (pre) not initially mounted" fi if ! ismounted $TESTPOOL/$ds; then log_fail "$TESTPOOL/$ds not initially mounted" fi if ! ismounted $TESTPOOL/$ds_post; then log_fail "$TESTPOOL/$ds_post (post) not initially mounted" fi log_must zfs snapshot $TESTPOOL/$ds@snap # force snapshot mount in .zfs log_must ls /$TESTPOOL/$ds/.zfs/snapshot/snap log_must zfs unmount $TESTPOOL/$ds if ! ismounted $TESTPOOL/$ds_pre; then log_fail "$ds_pre is not mounted" fi if ismounted $TESTPOOL/$ds; then log_fail "$ds is mounted" fi if ismounted $TESTPOOL/$ds_post; then log_fail "$ds_post (post) is mounted" fi # mountpoint=none ds_pre=$(printf 'b/%.0s' {1..$(($d-2))})"b" ds=$(printf 'b/%.0s' {1..$(($d-1))})"b" ds_post=$(printf 'b/%.0s' {1..$(($d))})"b" if ! ismounted $TESTPOOL/$ds_pre; then log_fail "$TESTPOOL/$ds_pre (pre) not initially mounted" fi if ! ismounted $TESTPOOL/$ds; then log_fail "$TESTPOOL/$ds not initially mounted" fi if ! ismounted $TESTPOOL/$ds_post; then log_fail "$TESTPOOL/$ds_post (post) not initially mounted" fi log_must zfs snapshot $TESTPOOL/$ds@snap # force snapshot mount in .zfs log_must ls /$TESTPOOL/$ds/.zfs/snapshot/snap log_must zfs unmount $TESTPOOL/$ds if ! ismounted $TESTPOOL/$ds_pre; then log_fail "$TESTPOOL/$ds_pre (pre) not mounted" fi if ismounted $TESTPOOL/$ds; then log_fail "$TESTPOOL/$ds is mounted" fi if ismounted $TESTPOOL/$ds_post; then log_fail "$TESTPOOL/$ds_post (post) is mounted" fi # mountpoint=legacy ds_pre=$(printf 'c/%.0s' {1..$(($d-2))})"c" ds=$(printf 'c/%.0s' {1..$(($d-1))})"c" ds_post=$(printf 'c/%.0s' {1..$(($d))})"c" if ! ismounted $TESTPOOL/$ds_pre; then log_fail "$TESTPOOL/$ds_pre (pre) not initially mounted" fi if ! ismounted $TESTPOOL/$ds; then log_fail "$TESTPOOL/$ds not initially mounted" fi if ! ismounted $TESTPOOL/$ds_post; then log_fail "$TESTPOOL/$ds_post (post) not initially mounted" fi log_must zfs snapshot $TESTPOOL/$ds@snap # force snapshot mount in .zfs log_must ls /$TESTPOOL/$ds/.zfs/snapshot/snap log_must zfs unmount $TESTPOOL/$ds if ! ismounted $TESTPOOL/$ds_pre; then log_fail "$TESTPOOL/$ds_pre (pre) not mounted" fi if ismounted $TESTPOOL/$ds; then log_fail "$TESTPOOL/$ds is mounted" fi if ismounted $TESTPOOL/$ds_post; then log_fail "$TESTPOOL/$ds_post (post) is mounted" fi # mountpoint=testpool/mnt ds_pre=$(printf 'd/%.0s' {1..$(($d-2))})"d" ds=$(printf 'd/%.0s' {1..$(($d-1))})"d" ds_post=$(printf 'd/%.0s' {1..$(($d))})"d" if ! ismounted $TESTPOOL/$ds_pre; then log_fail "$TESTPOOL/$ds_pre (pre) not initially mounted" fi if ! ismounted $TESTPOOL/$ds; then log_fail "$TESTPOOL/$ds not initially mounted" fi if ! ismounted $TESTPOOL/$ds_post; then log_fail "$TESTPOOL/$ds_post (post) not initially mounted" fi log_must zfs snapshot $TESTPOOL/$ds@snap # force snapshot mount in .zfs log_must ls /$TESTPOOL/$ds/.zfs/snapshot/snap log_must zfs unmount $TESTPOOL/$ds if ! ismounted $TESTPOOL/$ds_pre; then log_fail "$ds_pre is not mounted" fi if ismounted $TESTPOOL/$ds; then log_fail "$ds is mounted" fi if ismounted $TESTPOOL/$ds_post; then log_fail "$ds_post (post) is mounted" fi done log_must zpool export $TESTPOOL log_must rmdir /testpool/mnt # remove the mountpoint we created log_must zpool import $TESTPOOL log_pass "Verified nested dataset are unmounted." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_009_po0000644000000000000000000000007413612141513031621 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.459714257 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_009_pos.ksh0000755016037001603700000000714613612141513032600 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that zfs unmount and destroy in a snapshot directory will not cause error. # # STRATEGY: # 1. Create a file in a zfs filesystem, snapshot it and change directory to snapshot directory # 2. Verify that 'zfs unmount -a' will fail and 'zfs unmount -fa' will succeed # 3. Verify 'ls' and 'cd /' will succeed # 4. 'zfs mount -a' and change directory to snapshot directory again # 5. Verify that zfs destroy snapshot will succeed # 6. Verify 'ls' and 'cd /' will succeed # 7. Create zfs filesystem, create a file, snapshot it and change to snapshot directory # 8. Verify that zpool destroy the pool will succeed # 9. Verify 'ls' 'cd /' 'zpool list' and etc will succeed # verify_runnable "both" function cleanup { DISK=${DISKS%% *} for fs in $TESTPOOL/$TESTFS $TESTPOOL ; do typeset snap=$fs@$TESTSNAP if snapexists $snap; then log_must zfs destroy $snap fi done if ! poolexists $TESTPOOL && is_global_zone; then log_must zpool create $TESTPOOL $DISK fi if ! datasetexists $TESTPOOL/$TESTFS; then log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS fi } function restore_dataset { if ! datasetexists $TESTPOOL/$TESTFS ; then log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS log_must cd $TESTDIR echo hello > world log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP log_must cd .zfs/snapshot/$TESTSNAP fi } log_assert "zfs force unmount and destroy in snapshot directory will not cause error." log_onexit cleanup for fs in $TESTPOOL/$TESTFS $TESTPOOL ; do typeset snap=$fs@$TESTSNAP typeset mtpt=$(get_prop mountpoint $fs) log_must cd $mtpt echo hello > world log_must zfs snapshot $snap log_must cd .zfs/snapshot/$TESTSNAP log_mustnot zfs unmount -a if is_linux; then log_mustnot zfs unmount -fa log_must ls else log_must zfs unmount -fa log_mustnot ls fi log_must cd / log_must zfs mount -a log_must cd $mtpt log_must cd .zfs/snapshot/$TESTSNAP if is_global_zone || [[ $fs != $TESTPOOL ]] ; then if is_linux; then log_mustnot zfs destroy -rf $fs log_must ls else log_must zfs destroy -rf $fs log_mustnot ls fi log_must cd / fi restore_dataset done if is_global_zone ; then if is_linux; then log_mustnot zpool destroy -f $TESTPOOL log_must ls else log_must zpool destroy -f $TESTPOOL log_mustnot ls fi log_must cd / fi log_must eval zfs list > /dev/null 2>&1 log_must eval zpool list > /dev/null 2>&1 log_must eval zpool status > /dev/null 2>&1 zpool iostat > /dev/null 2>&1 log_pass "zfs force unmount and destroy in snapshot directory will not cause error." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_004_po0000644000000000000000000000007413607166133031625 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.448713903 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_004_pos.ksh0000755016037001603700000000511413607166133032575 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib # # DESCRIPTION: # If invoke "zfs unmount [-f]" with a specific filesystem|mountpoint, # which is not currently mounted, # it will fail with a return code of 1 # and issue an error message. # # STRATEGY: # 1. Make sure that the ZFS filesystem is mounted. # 2. Invoke 'zfs unmount '. # 3. Verify that the filesystem is unmounted. # 4. Unmount the file system using the various combinations. # - Without force option. (FAILED) # - With force option. (FAILED) # 5. Unmount the mountpoint using the various combinations. # - Without force option. (FAILED) # - With force option. (FAILED) # 6. Verify the above expected results of the filesystem|mountpoint. # verify_runnable "both" set -A cmd "umount" "unmount" set -A options "" "-f" set -A dev "$TESTPOOL/$TESTFS" "$TESTDIR" function do_unmount_multiple #options #expect { typeset opt=$1 typeset -i expect=${2-0} typeset -i i=0 typeset -i j=0 while (( i < ${#cmd[*]} )); do j=0 while (( j < ${#dev[*]} )); do unmounted ${dev[j]} || \ log_must zfs $unmountforce ${dev[j]} do_unmount "${cmd[i]}" "$opt" \ "${dev[j]}" $expect ((j = j + 1)) done ((i = i + 1)) done } log_assert "Verify that 'zfs $unmountcmd [-f] ' " \ "with an unmounted filesystem will fail with return code 1." log_onexit cleanup typeset -i i=0 while (( i < ${#options[*]} )); do do_unmount_multiple "${options[i]}" 1 ((i = i + 1)) done log_pass "'zfs $unmountcmd [-f] ' " \ "with an unmounted filesystem failed with return code 1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount.cfg0000644000000000000000000000007413607166133031302 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.432713389 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount.cfg0000644016037001603700000000230613607166133031300 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export mountcmd=mount export mountforce="$mountcmd -f" export mountall="$mountcmd -a" export unmountcmd=unmount export unmountforce="$unmountcmd -f" export unmountall="$unmountcmd -a" export NONEXISTFSNAME="nonexistfs50charslong_0123456789012345678901234567" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_002_po0000644000000000000000000000007413607166133031623 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.443713743 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_002_pos.ksh0000755016037001603700000000511313607166133032572 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib # # DESCRIPTION: # If invoke "zfs unmount [-f]" with a filesystem|mountpoint # whose name is not in "zfs list", # it will fail with a return code of 1 # and issue an error message. # # STRATEGY: # 1. Make sure that the non-existent ZFS filesystem|mountpoint # not in 'zfs list'. # 2. Unmount the file system using the various combinations. # - Without force option. (FAILED) # - With force option. (FAILED) # 3. Unmount the mountpoint using the various combinations. # - Without force option. (FAILED) # - With force option. (FAILED) # 4. Verify the above expected results of the filesystem|mountpoint. # verify_runnable "both" set -A cmd "umount" "unmount" set -A options "" "-f" set -A dev "$TESTPOOL/$NONEXISTFSNAME" "${TEST_BASE_DIR%%/}/$NONEXISTFSNAME" function do_unmount_multiple #options #expect { typeset opt=$1 typeset -i expect=${2-0} typeset -i i=0 typeset -i j=0 while (( i < ${#cmd[*]} )); do j=0 while (( j < ${#dev[*]} )); do log_note "Make sure ${dev[j]} is not in 'zfs list'" log_mustnot zfs list ${dev[j]} do_unmount "${cmd[i]}" "$opt" \ "${dev[j]}" $expect ((j = j + 1)) done ((i = i + 1)) done } log_assert "Verify that 'zfs $unmountcmd [-f] ' " \ "whose name is not in 'zfs list' will fail with return code 1." log_onexit cleanup typeset -i i=0 while (( i < ${#options[*]} )); do do_unmount_multiple "${options[i]}" 1 ((i = i + 1)) done log_pass "'zfs $unmountcmd [-f] ' " \ "whose name is not in 'zfs list' failed with return code 1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_008_ne0000644000000000000000000000007413612141517031610 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.456714161 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_008_neg.ksh0000755016037001603700000000660213612141517032547 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify that zfs unmount should fail with bad parameters or scenarios: # 1. bad option; # 2. too many arguments; # 3. null arguments; # 4. invalid datasets; # 5. invalid mountpoint; # 6. already unmounted zfs filesystem; # 7. legacy mounted zfs filesystem # # STRATEGY: # 1. Make an array of bad parameters # 2. Use zfs unmount to unmount the filesystem # 3. Verify that zfs unmount returns error # verify_runnable "both" function cleanup { for ds in $vol $fs1; do if datasetexists $ds; then log_must zfs destroy -f $ds fi done if snapexists $snap; then log_must zfs destroy $snap fi if [[ -e /tmp/$file ]]; then rm -f /tmp/$file fi if [[ -d /tmp/$dir ]]; then rm -rf /tmp/$dir fi } log_assert "zfs unmount fails with bad parameters or scenarios" log_onexit cleanup fs=$TESTPOOL/$TESTFS vol=$TESTPOOL/vol.$$ snap=$TESTPOOL/$TESTFS@snap.$$ set -A badargs "A" "-A" "F" "-F" "-" "-x" "-?" if ! ismounted $fs; then log_must zfs mount $fs fi log_must zfs snapshot $snap if is_global_zone; then log_must zfs create -V 10m $vol else vol="" fi # Testing bad options for arg in ${badargs[@]}; do log_mustnot eval "zfs unmount $arg $fs >/dev/null 2>&1" done # Testing invalid datasets for ds in $snap $vol "blah"; do for opt in "" "-f"; do log_mustnot eval "zfs unmount $opt $ds >/dev/null 2>&1" done done # Testing invalid mountpoint dir=foodir.$$ file=foo.$$ fs1=$TESTPOOL/fs.$$ mkdir /tmp/$dir touch /tmp/$file log_must zfs create -o mountpoint=/tmp/$dir $fs1 curpath=`dirname $0` cd /tmp for mpt in "./$dir" "./$file" "/tmp"; do for opt in "" "-f"; do log_mustnot eval "zfs unmount $opt $mpt >/dev/null 2>&1" done done cd $curpath # Testing null argument and too many arguments for opt in "" "-f"; do log_mustnot eval "zfs unmount $opt >/dev/null 2>&1" log_mustnot eval "zfs unmount $opt $fs $fs1 >/dev/null 2>&1" done # Testing already unmounted filesystem log_must zfs unmount $fs1 for opt in "" "-f"; do log_mustnot eval "zfs unmount $opt $fs1 >/dev/null 2>&1" log_mustnot eval "zfs unmount /tmp/$dir >/dev/null 2>&1" done # Testing legacy mounted filesystem log_must zfs set mountpoint=legacy $fs1 if is_linux; then log_must mount -t zfs $fs1 /tmp/$dir else log_must mount -F zfs $fs1 /tmp/$dir fi for opt in "" "-f"; do log_mustnot eval "zfs unmount $opt $fs1 >/dev/null 2>&1" done umount /tmp/$dir log_pass "zfs unmount fails with bad parameters or scenarios as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147030273 xustar000000000000000030 atime=1579730436.094354012 30 ctime=1579730478.465714449 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/Makefile.am0000644016037001603700000000075713607166147030301 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_unmount dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_unmount_001_pos.ksh \ zfs_unmount_002_pos.ksh \ zfs_unmount_003_pos.ksh \ zfs_unmount_004_pos.ksh \ zfs_unmount_005_pos.ksh \ zfs_unmount_006_pos.ksh \ zfs_unmount_007_neg.ksh \ zfs_unmount_008_neg.ksh \ zfs_unmount_009_pos.ksh \ zfs_unmount_all_001_pos.ksh \ zfs_unmount_nested.ksh dist_pkgdata_DATA = \ zfs_unmount.cfg \ zfs_unmount.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_006_po0000644000000000000000000000007413607166133031627 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.452714031 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_006_pos.ksh0000755016037001603700000000356213607166133032604 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Re-creating zfs files, 'zfs unmount' still succeed. # # STRATEGY: # 1. Create pool and filesystem. # 2. Recreating the same file in this fs for a while, then breaking out. # 3. Verify the filesystem can be unmount successfully. # verify_runnable "both" function cleanup { if ! ismounted $TESTPOOL/$TESTFS ; then log_must zfs mount $TESTPOOL/$TESTFS fi } log_assert "Re-creating zfs files, 'zfs unmount' still succeed." log_onexit cleanup # Call cleanup to make sure the file system are mounted. cleanup mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) (($? != 0)) && log_fail "get_prop mountpoint $TESTPOOL/$TESTFS" typeset -i i=0 while (( i < 10000 )); do cp $STF_SUITE/include/libtest.shlib $mntpnt (( i += 1 )) done log_note "Recreating zfs files for 10000 times." log_must zfs unmount $TESTPOOL/$TESTFS log_pass "Re-creating zfs files, 'zfs unmount' passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_001_po0000644000000000000000000000007413607166133031622 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.440713647 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_001_pos.ksh0000755016037001603700000000520213607166133032570 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Creates a file system and verifies that it can be unmounted # using each of the various unmount options and sub-command # variants. # # STRATEGY: # 1. Create and mount a file system as necessary. # 2. Umount the file system using the various combinations. # - With force option. # - Without force option. # - Using the unmount sub-command. # - Using the umount sub-command. # verify_runnable "both" function cleanup { mounted $TESTDIR2 && \ log_must zfs umount -f $TESTDIR2 datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy $TESTPOOL/$TESTFS2 [[ -d $TESTDIR2 ]] && \ log_must rm -rf $TESTDIR2 } function do_unmount { typeset cmd=$1 typeset opt=$2 typeset mnt=$3 [[ ! -d $TESTDIR2 ]] && \ log_must mkdir $TESTDIR2 if ! datasetexists $TESTPOOL/$TESTFS2 ; then log_must zfs create $TESTPOOL/$TESTFS2 log_must zfs set mountpoint=$TESTDIR2 \ $TESTPOOL/$TESTFS2 fi unmounted $TESTPOOL/$TESTFS2 && \ log_must zfs mount $TESTPOOL/$TESTFS2 log_must zfs $cmd $options $mnt unmounted "$mnt" || \ log_fail "Unable to unmount $options $mnt" log_note "Successfully unmounted $options $mnt" } log_onexit cleanup set -A cmd "umount" "unmount" set -A options "" "-f" set -A dev "$TESTPOOL/$TESTFS2" "$TESTDIR2" log_assert "Verify the u[n]mount [-f] sub-command." typeset -i i=0 typeset -i j=0 typeset -i k=0 while [[ $i -lt ${#cmd[*]} ]]; do j=0 while [[ $j -lt ${#options[*]} ]]; do k=0 while [[ $k -lt ${#dev[*]} ]]; do do_unmount "${cmd[i]}" "${options[j]}" \ "${dev[k]}" ((k = k + 1)) done ((j = j + 1)) done ((i = i + 1)) done log_pass "zfs u[n]mount [-f] completed successfully." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030101 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.436713517 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/setup.ksh0000755016037001603700000000173713607166133030111 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030370 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.438713583 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/cleanup.ksh0000755016037001603700000000171013607166133030367 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_007_ne0000644000000000000000000000007413607166133031614 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.454714095 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_007_neg.ksh0000755016037001603700000000501013607166133032543 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_mount/zfs_mount.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib # # DESCRIPTION: # Try each 'zfs unmount' with inapplicable scenarios to make sure # it returns an error. include: # * Multiple filesystem|mountpoint specified # * '-a', but also with a specific filesystem|mountpoint. # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute the sub-command # 3. Verify an error is returned. # verify_runnable "both" multifs="$TESTFS $TESTFS1" datasets="" for fs in $multifs ; do datasets="$datasets $TESTPOOL/$fs" done set -A args "$unmountall $TESTPOOL/$TESTFS" \ "$unmountcmd $datasets" function setup_all { typeset fs for fs in $multifs ; do setup_filesystem "$DISKS" "$TESTPOOL" \ "$fs" \ "${TEST_BASE_DIR%%/}/testroot$$/$TESTPOOL/$fs" done return 0 } function cleanup_all { typeset fs cleanup_filesystem "$TESTPOOL" "$TESTFS1" log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS [[ -d ${TEST_BASE_DIR%%/}/testroot$$ ]] && \ rm -rf ${TEST_BASE_DIR%%/}/testroot$$ return 0 } function verify_all { typeset fs for fs in $multifs ; do log_must mounted $TESTPOOL/$fs done return 0 } log_assert "Badly-formed 'zfs $unmountcmd' with inapplicable scenarios " \ "should return an error." log_onexit cleanup_all log_must setup_all typeset -i i=0 while (( i < ${#args[*]} )); do log_mustnot zfs ${args[i]} ((i = i + 1)) done log_must verify_all log_pass "Badly formed 'zfs $unmountcmd' with inapplicable scenarios " \ "fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount.kshlib0000644000000000000000000000007413607166133032017 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.434713453 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib0000644016037001603700000000352013607166133032014 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_unmount/zfs_unmount.cfg function do_unmount #cmd #opt #mnt #expect { typeset cmd=$1 typeset opt=$2 typeset mnt=$3 typeset -i expect=${4-0} typeset -i ret typeset -i wasmounted=1 mounted $mnt || wasmounted=0 if (( expect == 0 )) ; then log_must zfs $cmd $opt $mnt log_must unmounted $mnt log_note "Successfully zfs $cmd $opt $mnt" else log_note "zfs $cmd $opt $mnt" zfs $cmd $opt $mnt ret=$? if (( ret != expect)); then log_fail "'zfs $cmd $opt $mnt' " \ "unexpected return code of $ret." fi if (( wasmounted == 1 )) ; then log_must mounted $mnt else log_must unmounted $mnt fi log_note "Mount status of $mnt not changed." fi } function cleanup { [[ -n $cwd ]] && cd $cwd log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS mounted $TESTPOOL/$TESTFS || \ log_must zfs $mountcmd $TESTPOOL/$TESTFS } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030256 xustar000000000000000030 mtime=1579730436.131355199 30 atime=1579730455.473976235 30 ctime=1579730478.468714545 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/Makefile.in0000664016037001603700000006205513612143004030272 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_unmount DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_unmount ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_unmount_001_pos.ksh \ zfs_unmount_002_pos.ksh \ zfs_unmount_003_pos.ksh \ zfs_unmount_004_pos.ksh \ zfs_unmount_005_pos.ksh \ zfs_unmount_006_pos.ksh \ zfs_unmount_007_neg.ksh \ zfs_unmount_008_neg.ksh \ zfs_unmount_009_pos.ksh \ zfs_unmount_all_001_pos.ksh \ zfs_unmount_nested.ksh dist_pkgdata_DATA = \ zfs_unmount.cfg \ zfs_unmount.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_unmount/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_unmount/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/PaxHeaders.151519/zfs_unmount_003_po0000644000000000000000000000007413607166133031624 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.445713807 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_unmount/zfs_unmount_003_pos.ksh0000755016037001603700000000541713607166133032602 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_unmount/zfs_unmount.kshlib # # DESCRIPTION: # If invoke "zfs unmount [-f]" with a filesystem|mountpoint # whose mountpoint property is 'legacy' or 'none', # it will fail with a return code of 1 # and issue an error message. # # STRATEGY: # 1. Make sure that the ZFS filesystem is mounted. # 2. Apply 'zfs set mountpoint=legacy|none '. # 3. Unmount the file system using the various combinations. # - Without force option. (FAILED) # - With force option. (FAILED) # 4. Unmount the mountpoint using the various combinations. # - Without force option. (FAILED) # - With force option. (FAILED) # 5. Verify the above expected results of the filesystem|mountpoint. # verify_runnable "both" set -A cmd "umount" "unmount" set -A options "" "-f" set -A dev "$TESTPOOL/$TESTFS" "$TESTDIR" set -A mopts "legacy" "none" function do_unmount_multiple #options #expect #mountpoint { typeset opt=$1 typeset -i expect=${2-0} typeset mopt=$3 typeset -i i=0 typeset -i j=0 while (( i < ${#cmd[*]} )); do j=0 while (( j < ${#dev[*]} )); do [[ -n $mopt ]] && \ log_must zfs set mountpoint=$mopt ${dev[0]} do_unmount "${cmd[i]}" "$opt" \ "${dev[j]}" $expect cleanup ((j = j + 1)) done ((i = i + 1)) done } log_assert "Verify that 'zfs $unmountcmd [-f] ' " \ "whose mountpoint property is 'legacy' or 'none' " \ "will fail with return code 1." log_onexit cleanup typeset -i i=0 typeset -i j=0 while (( i < ${#mopts[*]} )); do j=0 while (( j < ${#options[*]} )); do do_unmount_multiple "${options[j]}" 1 "${mopts[i]}" ((j = j + 1)) done ((i = i + 1)) done log_pass "'zfs $unmountcmd [-f] ' " \ "whose mountpoint property is 'legacy' or 'none' " \ "will fail with return code 1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_inherit0000644000000000000000000000013213612143055026077 xustar000000000000000030 mtime=1579730477.191673542 30 atime=1579730489.094055709 30 ctime=1579730477.191673542 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/0000775016037001603700000000000013612143055026160 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/PaxHeaders.151519/zfs_inherit_002_ne0000644000000000000000000000007313612141513031467 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730477.18167322 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_002_neg.ksh0000755016037001603700000000577713612141513032443 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2011, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs inherit' should return an error with bad parameters in one command. # # STRATEGY: # 1. Set an array of bad options and invalid properties to 'zfs inherit' # 2. Execute 'zfs inherit' with bad options and passing invalid properties # 3. Verify an error is returned. # verify_runnable "both" function cleanup { if snapexists $TESTPOOL/$TESTFS@$TESTSNAP; then log_must zfs destroy $TESTPOOL/$TESTFS@$TESTSNAP fi } log_assert "'zfs inherit' should return an error with bad parameters in" \ "one command." log_onexit cleanup set -A badopts "r" "R" "-R" "-rR" "-a" "-" "-?" "-1" "-2" "-v" "-n" set -A props "recordsize" "mountpoint" "sharenfs" "checksum" "compression" \ "atime" "devices" "exec" "setuid" "readonly" "zoned" "snapdir" "aclmode" \ "aclinherit" "xattr" "copies" set -A illprops "recordsiz" "mountpont" "sharen" "compres" "atme" "blah" log_must zfs snapshot $TESTPOOL/$TESTFS@$TESTSNAP typeset -i i=0 for ds in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL \ $TESTPOOL/$TESTFS@$TESTSNAP; do # zfs inherit should fail with bad options for opt in ${badopts[@]}; do for prop in ${props[@]}; do log_mustnot eval "zfs inherit $opt $prop $ds \ >/dev/null 2>&1" done done # zfs inherit should fail with invalid properties for prop in "${illprops[@]}"; do log_mustnot eval "zfs inherit $prop $ds >/dev/null 2>&1" log_mustnot eval "zfs inherit -r $prop $ds >/dev/null 2>&1" done # zfs inherit should fail with too many arguments (( i = 0 )) while (( i < ${#props[*]} -1 )); do log_mustnot eval "zfs inherit ${props[(( i ))]} \ ${props[(( i + 1 ))]} $ds >/dev/null 2>&1" log_mustnot eval "zfs inherit -r ${props[(( i ))]} \ ${props[(( i + 1 ))]} $ds >/dev/null 2>&1" (( i = i + 2 )) done done # zfs inherit should fail with missing datasets for prop in ${props[@]}; do log_mustnot eval "zfs inherit $prop >/dev/null 2>&1" log_mustnot eval "zfs inherit -r $prop >/dev/null 2>&1" done log_pass "'zfs inherit' failed as expected when passing illegal arguments." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/PaxHeaders.151519/zfs_inherit_001_ne0000644000000000000000000000007413607166133031500 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.179673156 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_001_neg.ksh0000755016037001603700000000434213607166133032436 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs inherit' should return an error when attempting to inherit # properties which are not inheritable. # # STRATEGY: # 1. Create an array of properties which cannot be inherited # 2. For each property in the array, execute 'zfs inherit' # 3. Verify an error is returned. # verify_runnable "both" # Define uninherited properties and their short name. typeset props_str="type used available avail creation referenced refer \ compressratio ratio mounted origin quota reservation \ reserv volsize volblocksize volblock" zfs upgrade -v > /dev/null 2>&1 if [[ $? -eq 0 ]]; then props_str="$props_str version" fi set -A prop $props_str canmount log_assert "'zfs inherit' should return an error when attempting to inherit" \ " un-inheritable properties." typeset -i i=0 for obj in $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL; do i=0 while [[ $i -lt ${#prop[*]} ]]; do orig_val=$(get_prop ${prop[i]} $obj) log_mustnot zfs inherit ${prop[i]} $obj new_val=$(get_prop ${prop[i]} $obj) if [[ $new_val != $orig_val ]]; then log_fail "${prop[i]} property changed from $orig_val " " to $new_val" fi ((i = i + 1)) done done log_pass "'zfs inherit' failed as expected when attempting to inherit" \ " un-inheritable properties." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030223 xustar000000000000000030 atime=1579730435.186324857 30 ctime=1579730477.189673478 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/Makefile.am0000644016037001603700000000036413607166133030223 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_inherit dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zfs_inherit_001_neg.ksh \ zfs_inherit_002_neg.ksh \ zfs_inherit_003_pos.ksh \ zfs_inherit_mountpoint.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/PaxHeaders.151519/zfs_inherit_003_po0000644000000000000000000000007413612141513031505 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.184673318 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_003_pos.ksh0000755016037001603700000000477213612141513032466 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_set/zfs_set_common.kshlib # # DESCRIPTION: # 'zfs inherit' should return an error with bad parameters in one command. # # STRATEGY: # 1. Set an array of bad options and invalid properties to 'zfs inherit' # 2. Execute 'zfs inherit' with bad options and passing invalid properties # 3. Verify an error is returned. # verify_runnable "both" function cleanup { for ds in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL ; do if snapexists $ds@$TESTSNAP; then log_must zfs destroy $ds@$TESTSNAP fi done cleanup_user_prop $TESTPOOL } log_assert "'zfs inherit' should inherit user property." log_onexit cleanup for ds in $TESTPOOL $TESTPOOL/$TESTFS $TESTPOOL/$TESTVOL ; do typeset prop_name=$(valid_user_property 10) typeset value=$(user_property_value 16) log_must eval "zfs set $prop_name='$value' $ds" log_must zfs snapshot $ds@$TESTSNAP typeset snapvalue=$(get_prop $prop_name $ds@$TESTSNAP) if [[ "$snapvalue" != "$value" ]] ; then log_fail "The '$ds@$TESTSNAP '$prop_name' value '$snapvalue' " \ "not equal to the expected value '$value'." fi snapvalue=$(user_property_value 16) log_must eval "zfs set $prop_name='$snapvalue' $ds@$TESTSNAP" log_must zfs inherit $prop_name $ds@$TESTSNAP snapvalue=$(get_prop $prop_name $ds@$TESTSNAP) if [[ "$snapvalue" != "$value" ]] ; then log_fail "The '$ds@$TESTSNAP '$prop_name' value '$snapvalue' " \ "not equal to the expected value '$value'." fi done log_pass "'zfs inherit' inherit user property." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030036 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.177673092 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/setup.ksh0000755016037001603700000000176013607166133030042 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_container_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030325 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.174672996 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/cleanup.ksh0000755016037001603700000000171013607166133030324 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003030212 xustar000000000000000030 mtime=1579730435.222326015 30 atime=1579730454.927958703 30 ctime=1579730477.191673542 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/Makefile.in0000664016037001603700000005744713612143003030237 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_inherit DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_inherit ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zfs_inherit_001_neg.ksh \ zfs_inherit_002_neg.ksh \ zfs_inherit_003_pos.ksh \ zfs_inherit_mountpoint.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_inherit/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_inherit/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/PaxHeaders.151519/zfs_inherit_mountp0000644000000000000000000000007413607166133032040 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.186673382 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_inherit/zfs_inherit_mountpoint.ksh0000755016037001603700000000304013607166133033513 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy is of the CDDL is also available via the Internet # at http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2018 Datto Inc. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # zfs inherit should inherit mountpoint on mountpoint=none children # # STRATEGY: # 1. Create a set of nested datasets with mountpoint=none # 2. Verify datasets aren't mounted # 3. Inherit mountpoint and verify all datasets are now mounted # verify_runnable "both" function inherit_cleanup { log_must zfs destroy -fR $TESTPOOL/inherit_test } log_onexit inherit_cleanup log_must zfs create -o mountpoint=none $TESTPOOL/inherit_test log_must zfs create $TESTPOOL/inherit_test/child if ismounted $TESTPOOL/inherit_test; then log_fail "$TESTPOOL/inherit_test is mounted" fi if ismounted $TESTPOOL/inherit_test/child; then log_fail "$TESTPOOL/inherit_test/child is mounted" fi log_must zfs inherit mountpoint $TESTPOOL/inherit_test if ! ismounted $TESTPOOL/inherit_test; then log_fail "$TESTPOOL/inherit_test is not mounted" fi if ! ismounted $TESTPOOL/inherit_test/child; then log_fail "$TESTPOOL/inherit_test/child is not mounted" fi log_pass "Verified mountpoint for mountpoint=none children inherited." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_create0000644000000000000000000000013213612143054025677 xustar000000000000000030 mtime=1579730476.880663556 30 atime=1579730489.094055709 30 ctime=1579730476.880663556 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/0000775016037001603700000000000013612143054025760 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_012_pos.0000644000000000000000000000007313607166133031360 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730476.86766314 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_012_pos.ksh0000755016037001603700000000404613607166133032073 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_upgrade/zfs_upgrade.kshlib # # DESCRIPTION: # 'zfs create -p -o version=1' should only cause the leaf filesystem to be version=1 # # STRATEGY: # 1. Create $newdataset with -p option, verify it is created # 2. Verify only the leaf filesystem to be version=1, others use the current version # ZFS_VERSION=$(zfs upgrade | head -1 | awk '{print $NF}' \ | sed -e 's/\.//g') verify_runnable "both" function cleanup { if datasetexists $TESTPOOL/$TESTFS1 ; then log_must zfs destroy -rf $TESTPOOL/$TESTFS1 fi } log_onexit cleanup typeset newdataset1="$TESTPOOL/$TESTFS1/$TESTFS/$TESTFS1" log_assert "'zfs create -p -o version=1' only cause the leaf filesystem to be version=1." log_must zfs create -p -o version=1 $newdataset1 log_must datasetexists $newdataset1 log_must check_fs_version $TESTPOOL/$TESTFS1/$TESTFS/$TESTFS1 1 for fs in $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1/$TESTFS ; do log_must check_fs_version $fs $ZFS_VERSION done log_pass "'zfs create -p -o version=1' only cause the leaf filesystem to be version=1." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_006_pos.0000644000000000000000000000007413607166133031364 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.854662721 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_006_pos.ksh0000755016037001603700000000517013607166133032075 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs create -o property=value -V size volume' can successfully create a ZFS # volume with correct property set. # # STRATEGY: # 1. Create a ZFS volume in the storage pool with -o option # 2. Verify the volume created successfully # 3. Verify the property is correctly set # verify_runnable "global" function cleanup { datasetexists $TESTPOOL/$TESTVOL1 && \ log_must zfs destroy -f $TESTPOOL/$TESTVOL1 } log_onexit cleanup log_assert "'zfs create -o property=value -V size volume' can successfully \ create a ZFS volume with correct property set." typeset -i i=0 while (( $i < ${#RW_VOL_PROP[*]} )); do log_must zfs create -o ${RW_VOL_PROP[$i]} -V $VOLSIZE \ $TESTPOOL/$TESTVOL1 datasetexists $TESTPOOL/$TESTVOL1 || \ log_fail "zfs create -V size $TESTPOOL/$TESTVOL1 fail." propertycheck $TESTPOOL/$TESTVOL1 ${RW_VOL_PROP[i]} || \ log_fail "${RW_VOL_PROP[i]} is failed to set." log_must_busy zfs destroy -f $TESTPOOL/$TESTVOL1 log_must zfs create -s -o ${RW_VOL_PROP[$i]} -V $VOLSIZE \ $TESTPOOL/$TESTVOL1 datasetexists $TESTPOOL/$TESTVOL1 || \ log_fail "zfs create -s -V $TESTPOOL/$TESTVOL1 fail." propertycheck $TESTPOOL/$TESTVOL1 ${RW_VOL_PROP[i]} || \ log_fail "${RW_VOL_PROP[i]} is failed to set." log_must_busy zfs destroy -f $TESTPOOL/$TESTVOL1 (( i = i + 1 )) done log_pass "'zfs create -o property=value -V size volume' can successfully \ create a ZFS volume with correct property set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create.cfg0000644000000000000000000000007413607166133030576 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.836662143 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create.cfg0000644016037001603700000000365213607166133030601 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # export BYND_MAX_NAME="byondmaxnamelength\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789" export BYND_NEST_LIMIT="a/a/a/\ a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/\ a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/\ a/a/a/a/a/a/a/a/a/a/a/a/a/a/a/\ a/a" # There're 3 different prompt messages while create # a volume that great than 1TB on 32-bit # - volume size exceeds limit for this system. (happy gate) # - max volume size is 1TB on 32-bit systems (s10u2) # - value is too large (old) export VOL_LIMIT_KEYWORD1="1TB on 32-bit" export VOL_LIMIT_KEYWORD2="value is too large" export VOL_LIMIT_KEYWORD3="volume size exceeds limit" set -A size "8k" "8K" "1m" "1M" "1mb" "1mB" "1Mb" "1MB" "1g" "1G" \ "1p" "1P" "1z" "1Z" "1gb" "1gB" "1Gb" "1GB" "1pb" "1pB" "1Pb" \ "1PB" "1zb" "1zB" "1Zb" "1ZB" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_010_neg.0000644000000000000000000000007413607166133031327 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.863663009 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_010_neg.ksh0000755016037001603700000001051413607166133032036 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs create [-b ] -V ' fails with badly formed # or arguments,including: # *Invalid volume size and volume name # *Invalid blocksize # *Incomplete component in the dataset tree # *The volume already exists # *The volume name beyond the maximal name length - 256. # *Same property set multiple times via '-o property=value' # *Filesystems's property set on volume # # STRATEGY: # 1. Create an array of badly formed arguments # 2. For each argument, execute 'zfs create -V ' # 3. Verify an error is returned. # verify_runnable "global" function cleanup { typeset -i i typeset found # # check to see if there is any new fs created during the test # if so destroy it. # for dset in $(zfs list -H | \ awk '{print $1}' | grep / ); do found=false i=0 while (( $i < ${#existed_fs[*]} )); do if [[ $dset == ${existed_fs[i]} ]]; then found=true break fi (( i = i + 1 )) done # # new fs created during the test, cleanup it # if [[ $found == "false" ]]; then log_must zfs destroy -f $dset fi done } log_onexit cleanup log_assert "Verify 'zfs create [-s] [-b ] -V ' fails with" \ "badly-formed or arguments." set -A args "$VOLSIZE" "$TESTVOL1" \ "$VOLSIZE $TESTVOL1" "0 $TESTPOOL/$TESTVOL1" \ "-1gb $TESTPOOL/$TESTVOL1" "1g? $TESTPOOL/$TESTVOL1" \ "1.01BB $TESTPOOL/$TESTVOL1" "1%g $TESTPOOL/$TESTVOL1" \ "1g% $TESTPOOL/$TESTVOL1" "1g$ $TESTPOOL/$TESTVOL1" \ "$m $TESTPOOL/$TESTVOL1" "1m$ $TESTPOOL/$TESTVOL1" \ "1m! $TESTPOOL/$TESTVOL1" \ "1gbb $TESTPOOL/blah" "1blah $TESTPOOL/blah" "blah $TESTPOOL/blah" \ "$VOLSIZE $TESTPOOL" "$VOLSIZE $TESTPOOL/" "$VOLSIZE $TESTPOOL//blah"\ "$VOLSIZE $TESTPOOL/blah@blah" "$VOLSIZE $TESTPOOL/blah^blah" \ "$VOLSIZE $TESTPOOL/blah*blah" "$VOLSIZE $TESTPOOL/blah%blah" \ "$VOLSIZE blah" "$VOLSIZE $TESTPOOL/$BYND_MAX_NAME" \ "1m -b $TESTPOOL/$TESTVOL1" "1m -b 11k $TESTPOOL/$TESTVOL1" \ "1m -b 511 $TESTPOOL/$TESTVOL1" set -A options "" "-s" datasetexists $TESTPOOL/$TESTVOL || \ log_must zfs create -V $VOLSIZE $TESTPOOL/$TESTVOL set -A existed_fs $(zfs list -H | awk '{print $1}' | grep / ) log_mustnot zfs create -V $VOLSIZE $TESTPOOL/$TESTVOL log_mustnot zfs create -s -V $VOLSIZE $TESTPOOL/$TESTVOL typeset -i i=0 typeset -i j=0 while (( i < ${#options[*]} )); do j=0 while (( j < ${#args[*]} )); do log_mustnot zfs create ${options[$i]} -V ${args[$j]} log_mustnot zfs create -p ${options[$i]} -V ${args[$j]} ((j = j + 1)) done j=0 while (( $j < ${#RW_VOL_PROP[*]} )); do log_mustnot zfs create ${options[$i]} -o ${RW_VOL_PROP[j]} \ -o ${RW_VOL_PROP[j]} -V $VOLSIZE $TESTPOOL/$TESTVOL1 log_mustnot zfs create -p ${options[$i]} -o ${RW_VOL_PROP[j]} \ -o ${RW_VOL_PROP[j]} -V $VOLSIZE $TESTPOOL/$TESTVOL1 ((j = j + 1)) done j=0 while (( $j < ${#FS_ONLY_PROP[*]} )); do log_mustnot zfs create ${options[$i]} -o ${FS_ONLY_PROP[j]} \ -V $VOLSIZE $TESTPOOL/$TESTVOL1 log_mustnot zfs create -p ${options[$i]} -o ${FS_ONLY_PROP[j]} \ -V $VOLSIZE $TESTPOOL/$TESTVOL1 ((j = j + 1)) done ((i = i + 1)) done log_pass "'zfs create [-s][-b ] -V ' fails as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_009_neg.0000644000000000000000000000007413607166133031337 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.860662913 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_009_neg.ksh0000755016037001603700000000715113607166133032051 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs create ' fails with bad arguments, including: # *Invalid character against the ZFS namespace # *Incomplete component # *Too many arguments # *Filesystem already exists # *Beyond maximal name length. # *Same property set multiple times via '-o property=value' # *Volume's property set on filesystem # *Exceeding maximum name nesting # # STRATEGY: # 1. Create an array of arguments # 2. Execute 'zfs create ' with each argument # 3. Verify an error is returned. # verify_runnable "both" function cleanup { typeset -i i typeset found # # check to see if there is any new fs created during the test # if so destroy it. # for dset in $(zfs list -H | \ awk '{print $1}' | grep / ); do found=false i=0 while (( $i < ${#existed_fs[*]} )); do if [[ $dset == ${existed_fs[i]} ]]; then found=true break fi (( i = i + 1 )) done # # new fs created during the test, cleanup it # if [[ $found == "false" ]]; then log_must zfs destroy -f $dset fi done } log_onexit cleanup set -A args "$TESTPOOL/" "$TESTPOOL//blah" "$TESTPOOL/@blah" \ "$TESTPOOL/blah@blah" "$TESTPOOL/blah^blah" "$TESTPOOL/blah%blah" \ "$TESTPOOL/blah*blah" "$TESTPOOL/blah blah" \ "-s $TESTPOOL/$TESTFS1" "-b 1092 $TESTPOOL/$TESTFS1" \ "-b 64k $TESTPOOL/$TESTFS1" "-s -b 32k $TESTPOOL/$TESTFS1" \ "$TESTPOOL/$BYND_MAX_NAME" "$TESTPOOL/$BYND_NEST_LIMIT" \ "$TESTPOOL/." "$TESTPOOL/.." "$TESTPOOL/../blah" "$TESTPOOL/./blah" \ "$TESTPOOL/blah/./blah" "$TESTPOOL/blah/../blah" log_assert "Verify 'zfs create ' fails with bad argument." datasetexists $TESTPOOL/$TESTFS || \ log_must zfs create $TESTPOOL/$TESTFS set -A existed_fs $(zfs list -H | awk '{print $1}' | grep / ) log_mustnot zfs create $TESTPOOL log_mustnot zfs create $TESTPOOL/$TESTFS typeset -i i=0 while (( $i < ${#args[*]} )); do log_mustnot zfs create ${args[$i]} log_mustnot zfs create -p ${args[$i]} ((i = i + 1)) done i=0 while (( $i < ${#RW_FS_PROP[*]} )); do log_mustnot zfs create -o ${RW_FS_PROP[i]} -o ${RW_FS_PROP[i]} \ $TESTPOOL/$TESTFS1 log_mustnot zfs create -p -o ${RW_FS_PROP[i]} -o ${RW_FS_PROP[i]} \ $TESTPOOL/$TESTFS1 ((i = i + 1)) done i=0 while (( $i < ${#VOL_ONLY_PROP[*]} )); do log_mustnot zfs create -o ${VOL_ONLY_PROP[i]} $TESTPOOL/$TESTFS1 log_mustnot zfs create -p -o ${VOL_ONLY_PROP[i]} $TESTPOOL/$TESTFS1 ((i = i + 1)) done log_pass "'zfs create ' fails as expected with bad argument." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_encrypte0000644000000000000000000000007413607166133031751 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.874663364 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_encrypted.ksh0000755016037001603700000001173713607166133032712 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017, Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # ZFS should create datasets only if they have a valid combination of # encryption properties set. # # penc = parent encrypted # enc = encryption # loc = keylocation provided # fmt = keyformat provided # # penc enc fmt loc valid notes # ------------------------------------------- # no unspec 0 0 yes inherit no encryption (not tested here) # no unspec 0 1 no no crypt specified # no unspec 1 0 no no crypt specified # no unspec 1 1 no no crypt specified # no off 0 0 yes explicit no encryption # no off 0 1 no keylocation given, but crypt off # no off 1 0 no keyformat given, but crypt off # no off 1 1 no keyformat given, but crypt off # no on 0 0 no no keyformat specified for new key # no on 0 1 no no keyformat specified for new key # no on 1 0 yes new encryption root # no on 1 1 yes new encryption root # yes unspec 0 0 yes inherit encryption # yes unspec 0 1 no no keyformat specified # yes unspec 1 0 yes new encryption root, crypt inherited # yes unspec 1 1 yes new encryption root, crypt inherited # yes off 0 0 yes unencrypted child of encrypted parent # yes off 0 1 no keylocation given, but crypt off # yes off 1 0 no keyformat given, but crypt off # yes off 1 1 no keyformat given, but crypt off # yes on 0 0 yes inherited encryption, local crypt # yes on 0 1 no no keyformat specified for new key # yes on 1 0 yes new encryption root # yes on 1 1 yes new encryption root # # STRATEGY: # 1. Attempt to create a dataset using all combinations of encryption # properties # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy -r $TESTPOOL/$TESTFS2 } log_onexit cleanup log_assert "ZFS should create datasets only if they have a valid" \ "combination of encryption properties set." # Unencrypted parent log_must zfs create $TESTPOOL/$TESTFS1 log_mustnot zfs create -o keyformat=passphrase $TESTPOOL/$TESTFS1/c1 log_mustnot zfs create -o keylocation=prompt $TESTPOOL/$TESTFS1/c1 log_mustnot zfs create -o keyformat=passphrase -o keylocation=prompt \ $TESTPOOL/$TESTFS1/c1 log_must zfs create -o encryption=off $TESTPOOL/$TESTFS1/c1 log_mustnot zfs create -o encryption=off -o keylocation=prompt \ $TESTPOOL/$TESTFS1/c2 log_mustnot zfs create -o encryption=off -o keyformat=passphrase \ $TESTPOOL/$TESTFS1/c2 log_mustnot zfs create -o encryption=off -o keyformat=passphrase \ -o keylocation=prompt $TESTPOOL/$TESTFS1/c2 log_mustnot zfs create -o encryption=on $TESTPOOL/$TESTFS1/c2 log_mustnot zfs create -o encryption=on -o keylocation=prompt \ $TESTPOOL/$TESTFS1/c2 log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1/c3" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS1/c4" # Encrypted parent log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS2" log_must zfs create $TESTPOOL/$TESTFS2/c1 log_mustnot zfs create -o keylocation=prompt $TESTPOOL/$TESTFS2/c2 log_must eval "echo $PASSPHRASE | zfs create -o keyformat=passphrase" \ "$TESTPOOL/$TESTFS2/c3" log_must eval "echo $PASSPHRASE | zfs create -o keyformat=passphrase" \ "-o keylocation=prompt $TESTPOOL/$TESTFS2/c4" log_must zfs create -o encryption=off $TESTPOOL/$TESTFS2/c5 log_must test "$(get_prop 'encryption' $TESTPOOL/$TESTFS2/c5)" == "off" log_mustnot zfs create -o encryption=off -o keylocation=prompt \ $TESTPOOL/$TESTFS2/c5 log_mustnot zfs create -o encryption=off -o keyformat=passphrase \ $TESTPOOL/$TESTFS2/c5 log_mustnot zfs create -o encryption=off -o keyformat=passphrase \ -o keylocation=prompt $TESTPOOL/$TESTFS2/c5 log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "$TESTPOOL/$TESTFS2/c6" log_mustnot zfs create -o encryption=on -o keylocation=prompt \ $TESTPOOL/$TESTFS2/c7 log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS2/c7" log_must eval "echo $PASSPHRASE | zfs create -o encryption=on" \ "-o keyformat=passphrase -o keylocation=prompt $TESTPOOL/$TESTFS2/c8" log_pass "ZFS creates datasets only if they have a valid combination of" \ "encryption properties set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_013_pos.0000644000000000000000000000007413607166133031362 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.869663204 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_013_pos.ksh0000755016037001603700000000407113607166133032072 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg # # DESCRIPTION: # 'zfs create -s -V ' can create various-size sparse volume # with long fs name # # STRATEGY: # 1. Create a volume in the storage pool. # 2. Verify the volume is created correctly. # verify_runnable "global" function cleanup { typeset -i j=0 while [[ $j -lt ${#size[*]} ]]; do destroy_dataset $TESTPOOL/${LONGFSNAME}${size[j]} ((j = j + 1)) done } log_onexit cleanup log_assert "'zfs create -s -V ' succeeds" typeset -i j=0 while (( $j < ${#size[*]} )); do typeset cmdline="zfs create -s -V ${size[j]} \ $TESTPOOL/${LONGFSNAME}${size[j]}" str=$(eval $cmdline 2>&1) if (( $? == 0 )); then log_note "SUCCESS: $cmdline" log_must datasetexists $TESTPOOL/${LONGFSNAME}${size[j]} elif [[ $str == *${VOL_LIMIT_KEYWORD1}* || \ $str == *${VOL_LIMIT_KEYWORD2}* || \ $str == *${VOL_LIMIT_KEYWORD3}* ]] then log_note "UNSUPPORTED: $cmdline" else log_fail "$cmdline" fi ((j = j + 1)) done log_pass "'zfs create -s -V ' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147030031 xustar000000000000000030 atime=1579730434.952317344 30 ctime=1579730476.878663492 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/Makefile.am0000644016037001603700000000120313607166147030022 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_create dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_create_001_pos.ksh \ zfs_create_002_pos.ksh \ zfs_create_003_pos.ksh \ zfs_create_004_pos.ksh \ zfs_create_005_pos.ksh \ zfs_create_006_pos.ksh \ zfs_create_007_pos.ksh \ zfs_create_008_neg.ksh \ zfs_create_009_neg.ksh \ zfs_create_010_neg.ksh \ zfs_create_011_pos.ksh \ zfs_create_012_pos.ksh \ zfs_create_013_pos.ksh \ zfs_create_014_pos.ksh \ zfs_create_encrypted.ksh \ zfs_create_crypt_combos.ksh dist_pkgdata_DATA = \ properties.kshlib \ zfs_create_common.kshlib \ zfs_create.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027637 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.838662207 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/setup.ksh0000755016037001603700000000173713607166133027647 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030126 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.840662271 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/cleanup.ksh0000755016037001603700000000171013607166133030125 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_007_pos.0000644000000000000000000000007413607166133031365 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.856662785 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_007_pos.ksh0000755016037001603700000000526713607166133032105 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs create -o property=value -V size volume' can successfully create a ZFS # volume with multiple properties set. # # STRATEGY: # 1. Create a ZFS volume in the storage pool with -o option # 2. Verify the volume created successfully # 3. Verify the properties are correctly set # verify_runnable "global" function cleanup { destroy_dataset $TESTPOOL/$TESTVOL destroy_dataset $TESTPOOL/$TESTVOL1 } log_onexit cleanup log_assert "'zfs create -o property=value -V size volume' can successfully \ create a ZFS volume with correct property set." typeset -i i=0 typeset opts="" while (( $i < ${#RW_VOL_PROP[*]} )); do if [[ ${RW_VOL_PROP[$i]} != *"checksum"* ]]; then opts="$opts -o ${RW_VOL_PROP[$i]}" fi (( i = i + 1 )) done log_must zfs create $opts -V $VOLSIZE $TESTPOOL/$TESTVOL datasetexists $TESTPOOL/$TESTVOL || \ log_fail "zfs create $TESTPOOL/$TESTVOL fail." log_must zfs create -s $opts -V $VOLSIZE $TESTPOOL/$TESTVOL1 datasetexists $TESTPOOL/$TESTVOL1 || \ log_fail "zfs create $TESTPOOL/$TESTVOL1 fail." i=0 while (( $i < ${#RW_VOL_PROP[*]} )); do if [[ ${RW_VOL_PROP[$i]} != *"checksum"* ]]; then propertycheck $TESTPOOL/$TESTVOL ${RW_VOL_PROP[i]} || \ log_fail "${RW_VOL_PROP[i]} is failed to set." propertycheck $TESTPOOL/$TESTVOL1 ${RW_VOL_PROP[i]} || \ log_fail "${RW_VOL_PROP[i]} is failed to set." fi (( i = i + 1 )) done log_pass "'zfs create -o property=value -V size volume' can successfully \ create a ZFS volume with correct property set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/properties.kshlib0000644000000000000000000000007413607166133031362 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.831661983 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/properties.kshlib0000644016037001603700000000374613607166133031371 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2015 by Delphix. All rights reserved. # set -A RW_FS_PROP "quota=536870912" \ "reservation=536870912" \ "recordsize=262144" \ "mountpoint=/tmp/mnt$$" \ "checksum=fletcher2" \ "compression=lzjb" \ "atime=off" \ "devices=off" \ "exec=off" \ "setuid=off" \ "readonly=on" \ "snapdir=visible" \ "canmount=off" \ "local:department=123" set -A RW_VOL_PROP "volblocksize=16384" \ "checksum=fletcher2" \ "compression=lzjb" \ "readonly=on" \ "local:department=123" set -A RW_VOL_CLONE_PROP "checksum=fletcher2" \ "compression=lzjb" \ "readonly=on" \ "local:department=123" set -A FS_ONLY_PROP "quota=536870912" \ "recordsize=65536" \ "mountpoint=/tmp/mnt$$" \ "atime=off" \ "devices=off" \ "exec=off" \ "setuid=off" \ "zoned=on" \ "snapdir=visible" \ "canmount=off" \ "version=1" set -A VOL_ONLY_PROP "volblocksize=16384" "volsize=536870912" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_004_pos.0000644000000000000000000000007413607166133031362 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.849662561 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_004_pos.ksh0000755016037001603700000000430313607166133032070 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs create -o property=value filesystem' can successfully create a ZFS # filesystem with correct property set. # # STRATEGY: # 1. Create a ZFS filesystem in the storage pool with -o option # 2. Verify the filesystem created successfully # 3. Verify the property is correctly set # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs create -o property=value filesystem' can successfully create \ a ZFS filesystem with correct property set." typeset -i i=0 while (( $i < ${#RW_FS_PROP[*]} )); do log_must zfs create -o ${RW_FS_PROP[$i]} $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/$TESTFS1 || \ log_fail "zfs create $TESTPOOL/$TESTFS1 fail." propertycheck $TESTPOOL/$TESTFS1 ${RW_FS_PROP[i]} || \ log_fail "${RW_FS_PROP[i]} is failed to set." log_must zfs destroy -f $TESTPOOL/$TESTFS1 (( i = i + 1 )) done log_pass "'zfs create -o property=value filesystem' can successfully create \ a ZFS filesystem with correct property set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_002_pos.0000644000000000000000000000007413607166133031360 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.845662433 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_002_pos.ksh0000755016037001603700000000403513607166133032070 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg # # DESCRIPTION: # 'zfs create -s -V ' can create various-size sparse volume. # # STRATEGY: # 1. Create a volume in the storage pool. # 2. Verify the volume is created correctly. # verify_runnable "global" function cleanup { typeset -i j=0 while [[ $j -lt ${#size[*]} ]]; do destroy_dataset $TESTPOOL/${TESTVOL}${size[j]} ((j = j + 1)) done } log_onexit cleanup log_assert "'zfs create -s -V ' succeeds" typeset -i j=0 while (( $j < ${#size[*]} )); do typeset cmdline="zfs create -s -V ${size[j]} \ $TESTPOOL/${TESTVOL}${size[j]}" str=$(eval $cmdline 2>&1) if (( $? == 0 )); then log_note "SUCCESS: $cmdline" log_must datasetexists $TESTPOOL/${TESTVOL}${size[j]} elif [[ $str == *${VOL_LIMIT_KEYWORD1}* || \ $str == *${VOL_LIMIT_KEYWORD2}* || \ $str == *${VOL_LIMIT_KEYWORD3}* ]] then log_note "UNSUPPORTED: $cmdline" else log_fail "$cmdline" fi ((j = j + 1)) done log_pass "'zfs create -s -V ' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_011_pos.0000644000000000000000000000007413612141514031350 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.865663075 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_011_pos.ksh0000755016037001603700000000364113612141514032062 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs create -p' should work as expected # # STRATEGY: # 1. To create $newdataset with -p option, first make sure the upper level # of $newdataset does not exist # 2. Make sure without -p option, 'zfs create' will fail # 3. Create $newdataset with -p option, verify it is created # 4. Run 'zfs create -p $newdataset' again, the exit code should be zero # even $newdataset exists # verify_runnable "both" function cleanup { if datasetexists $TESTPOOL/$TESTFS1 ; then log_must zfs destroy -rf $TESTPOOL/$TESTFS1 fi } log_onexit cleanup typeset newdataset1="$TESTPOOL/$TESTFS1/$TESTFS/$TESTFS1" typeset newdataset2="$TESTPOOL/$TESTFS1/$TESTFS/$TESTVOL1" log_assert "'zfs create -p' works as expected." log_must verify_opt_p_ops "create" "fs" $newdataset1 # verify volume creation if is_global_zone; then log_must verify_opt_p_ops "create" "vol" $newdataset2 fi log_pass "'zfs create -p' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_003_pos.0000644000000000000000000000007413607166133031361 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.847662497 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_003_pos.ksh0000755016037001603700000000363613607166133032077 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg # # DESCRIPTION: # 'zfs create [-b ] -V ' can create a volume # with specified blocksize, which is power of 2 between 512 - 128k. # # STRATEGY: # 1. Create a volume with blocksize in the storage pool # 2. Verify the volume created successfully # verify_runnable "global" function cleanup { datasetexists $vol && \ log_must zfs destroy -f $vol } log_assert "Verify creating volume with specified blocksize works." log_onexit cleanup set -A options "" "-b 1k" "-b 1K" "-b 1024" "-b 1024b" vol=$TESTPOOL/$TESTVOL typeset -i i=0 while (( i < ${#options[*]} )); do log_must zfs create ${options[i]} -V $VOLSIZE $vol datasetexists $vol || \ log_fail "zfs create ${options[i]} -V $VOLSIZE $vol fail." log_must_busy zfs destroy -f $vol ((i = i + 1)) done log_pass "'zfs create [-b ] -V ' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_crypt_co0000644000000000000000000000007413607166133031742 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.876663428 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_crypt_combos.ksh0000755016037001603700000000525713607166133033420 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017, Datto, Inc. All rights reserved. # Copyright (c) 2019, DilOS # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs create' should create an encrypted dataset with a valid encryption # algorithm, key format, key location, and key. # # STRATEGY: # 1. Create a filesystem for each combination of encryption type and key format # 2. Verify that each filesystem has the correct properties set # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup set -A ENCRYPTION_ALGS \ "encryption=on" \ "encryption=aes-128-ccm" \ "encryption=aes-192-ccm" \ "encryption=aes-256-ccm" \ "encryption=aes-128-gcm" \ "encryption=aes-192-gcm" \ "encryption=aes-256-gcm" set -A ENCRYPTION_PROPS \ "encryption=aes-256-ccm" \ "encryption=aes-128-ccm" \ "encryption=aes-192-ccm" \ "encryption=aes-256-ccm" \ "encryption=aes-128-gcm" \ "encryption=aes-192-gcm" \ "encryption=aes-256-gcm" set -A KEYFORMATS "keyformat=raw" \ "keyformat=hex" \ "keyformat=passphrase" set -A USER_KEYS "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" \ "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" \ "abcdefgh" log_assert "'zfs create' should create encrypted datasets using all" \ "combinations of supported properties" typeset -i i=0 while (( i < ${#ENCRYPTION_ALGS[*]} )); do typeset -i j=0 while (( j < ${#KEYFORMATS[*]} )); do log_must eval "printf '%s' ${USER_KEYS[j]} | zfs create" \ "-o ${ENCRYPTION_ALGS[i]} -o ${KEYFORMATS[j]}" \ "$TESTPOOL/$TESTFS1" datasetexists $TESTPOOL/$TESTFS1 || \ log_fail "Failed to create dataset using" \ "${ENCRYPTION_ALGS[i]} and ${KEYFORMATS[j]}" propertycheck $TESTPOOL/$TESTFS1 ${ENCRYPTION_PROPS[i]} || \ log_fail "failed to set ${ENCRYPTION_ALGS[i]}" propertycheck $TESTPOOL/$TESTFS1 ${KEYFORMATS[j]} || \ log_fail "failed to set ${KEYFORMATS[j]}" log_must zfs destroy -f $TESTPOOL/$TESTFS1 (( j = j + 1 )) done (( i = i + 1 )) done log_pass "'zfs create' creates encrypted datasets using all combinations of" \ "supported properties" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_001_pos.0000644000000000000000000000007413607166133031357 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.843662367 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_001_pos.ksh0000755016037001603700000000352213607166133032067 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs create ' can create a ZFS filesystem in the namespace. # # STRATEGY: # 1. Create a ZFS filesystem in the storage pool # 2. Verify the filesystem created successfully # verify_runnable "both" function cleanup { typeset -i i=0 while (( $i < ${#datasets[*]} )); do datasetexists ${datasets[$i]} && \ log_must zfs destroy -f ${datasets[$i]} ((i = i + 1)) done } log_onexit cleanup set -A datasets "$TESTPOOL/$TESTFS1" "$TESTPOOL/$LONGFSNAME" "$TESTPOOL/..." \ "$TESTPOOL/_1234_" log_assert "'zfs create ' can create a ZFS filesystem in the namespace." typeset -i i=0 while (( $i < ${#datasets[*]} )); do log_must zfs create ${datasets[$i]} datasetexists ${datasets[$i]} || \ log_fail "zfs create ${datasets[$i]} fail." ((i = i + 1)) done log_pass "'zfs create ' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_005_pos.0000644000000000000000000000007413607166133031363 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.852662657 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_005_pos.ksh0000755016037001603700000000461713607166133032101 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zfs_create/properties.kshlib # # DESCRIPTION: # 'zfs create -o property=value filesystem' can successfully create a ZFS # filesystem with multiple properties set. # # STRATEGY: # 1. Create a ZFS filesystem in the storage pool with multiple -o options # 2. Verify the filesystem created successfully # 3. Verify the properties are correctly set # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -f $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs create -o property=value filesystem' can successfully create \ a ZFS filesystem with multiple properties set." typeset -i i=0 typeset opts="" while (( $i < ${#RW_FS_PROP[*]} )); do if [[ ${RW_FS_PROP[$i]} != *"checksum"* ]]; then opts="$opts -o ${RW_FS_PROP[$i]}" fi (( i = i + 1 )) done log_must zfs create $opts $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/$TESTFS1 || \ log_fail "zfs create $TESTPOOL/$TESTFS1 fail." i=0 while (( $i < ${#RW_FS_PROP[*]} )); do if [[ ${RW_FS_PROP[$i]} != *"checksum"* ]]; then propertycheck $TESTPOOL/$TESTFS1 ${RW_FS_PROP[i]} || \ log_fail "${RW_FS_PROP[i]} is failed to set." fi (( i = i + 1 )) done log_pass "'zfs create -o property=value filesystem' can successfully create \ a ZFS filesystem with multiple properties set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_common.k0000644000000000000000000000007413607166133031641 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.834662079 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib0000644016037001603700000000260613607166133032664 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Check if the user property is identical to the expected value. # # $1 dataset # $2 property string # function propertycheck { typeset dtst=$1 typeset propstr=$2 typeset prop=$(echo $propstr | awk -F= '{print $1}') typeset expect_value=$(echo $propstr | awk -F= '{print $2}') typeset value=$(zfs get -H -p -o value $prop $dtst) if [[ "$expect_value" == "$value" ]]; then return 0 else return 1 fi } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_014_pos.0000644000000000000000000000007413607166133031363 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.871663268 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_014_pos.ksh0000755016037001603700000000346613607166133032102 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # check 'zfs create ' works at the name length boundary # # STRATEGY: # 1. Verify creating filesystem with name length 255 would succeed # 2. Verify creating filesystem with name length 256 would fail # 3. Verify the pool can be re-imported verify_runnable "both" # namelen 255 and 256 TESTFS1=$(for i in $(seq $((254 - ${#TESTPOOL}))); do echo z ; done | tr -d '\n') TESTFS2=$(for i in $(seq $((255 - ${#TESTPOOL}))); do echo z ; done | tr -d '\n') function cleanup { datasetexists $TESTPOOL/$TESTFS1 && log_must zfs destroy $TESTPOOL/$TESTFS1 } log_onexit cleanup log_assert "'zfs create ' can create a ZFS filesystem with name length 255." log_must zfs create $TESTPOOL/$TESTFS1 log_mustnot zfs create $TESTPOOL/$TESTFS2 log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL log_pass "'zfs create ' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002030012 xustar000000000000000030 mtime=1579730434.989318533 30 atime=1579730454.803954721 30 ctime=1579730476.880663556 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/Makefile.in0000664016037001603700000006227613612143002030033 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_create DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_create ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_create_001_pos.ksh \ zfs_create_002_pos.ksh \ zfs_create_003_pos.ksh \ zfs_create_004_pos.ksh \ zfs_create_005_pos.ksh \ zfs_create_006_pos.ksh \ zfs_create_007_pos.ksh \ zfs_create_008_neg.ksh \ zfs_create_009_neg.ksh \ zfs_create_010_neg.ksh \ zfs_create_011_pos.ksh \ zfs_create_012_pos.ksh \ zfs_create_013_pos.ksh \ zfs_create_014_pos.ksh \ zfs_create_encrypted.ksh \ zfs_create_crypt_combos.ksh dist_pkgdata_DATA = \ properties.kshlib \ zfs_create_common.kshlib \ zfs_create.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_create/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_create/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/PaxHeaders.151519/zfs_create_008_neg.0000644000000000000000000000007413607166133031336 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.858662849 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_create/zfs_create_008_neg.ksh0000755016037001603700000000766513607166133032062 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create.cfg # # DESCRIPTION: # 'zfs create' should return an error with badly formed parameters. # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute 'zfs create' # 3. Verify an error is returned. # verify_runnable "both" function cleanup { if datasetexists $TESTPOOL/$TESTFS1 ; then log_must zfs destroy -f $TESTPOOL/$TESTFS1 fi } log_onexit cleanup set -A args "ab" "-?" "-cV" "-Vc" "-c -V" "c" "V" "--c" "-e" "-s" \ "-blah" "-cV 12k" "-s -cV 1P" "-sc" "-Vs 5g" "-o" "--o" "-O" "--O" \ "-o QuOta=none" "-o quota=non" "-o quota=abcd" "-o quota=0" "-o quota=" \ "-o ResErVaTi0n=none" "-o reserV=none" "-o reservation=abcd" "-o reserv=" \ "-o recorDSize=64k" "-o recordsize=2048K" "-o recordsize=2M" \ "-o recordsize=256" "-o recsize=" "-o recsize=zero" "-o recordsize=0" \ "-o mountPoint=/tmp/tmpfile$$" "-o mountpoint=non0" "-o mountpoint=" \ "-o mountpoint=LEGACY" "-o mounpoint=none" \ "-o sharenfs=ON" "-o ShareNFS=off" "-o sharenfs=sss" \ "-o checkSUM=on" "-o checksum=SHA256" "-o chsum=off" "-o checksum=aaa" \ "-o checkSUM=on -V $VOLSIZE" "-o checksum=SHA256 -V $VOLSIZE" \ "-o chsum=off -V $VOLSIZE" "-o checksum=aaa -V $VOLSIZE" \ "-o compression=of" "-o ComPression=lzjb" "-o compress=ON" "-o compress=a" \ "-o compression=of -V $VOLSIZE" "-o ComPression=lzjb -V $VOLSIZE" \ "-o compress=ON -V $VOLSIZE" "-o compress=a -V $VOLSIZE" \ "-o atime=ON" "-o ATime=off" "-o atime=bbb" \ "-o deviCes=on" "-o devices=OFF" "-o devices=aaa" \ "-o exec=ON" "-o EXec=off" "-o exec=aaa" \ "-o readonly=ON" "-o reADOnly=off" "-o rdonly=OFF" "-o rdonly=aaa" \ "-o readonly=ON -V $VOLSIZE" "-o reADOnly=off -V $VOLSIZE" \ "-o rdonly=OFF -V $VOLSIZE" "-o rdonly=aaa -V $VOLSIZE" \ "-o zoned=ON" "-o ZoNed=off" "-o zoned=aaa" \ "-o snapdIR=hidden" "-o snapdir=VISible" "-o snapdir=aaa" \ "-o aclmode=DIScard" "-o aclmODE=groupmask" "-o aclmode=aaa" \ "-o aclinherit=deny" "-o aclinHerit=secure" "-o aclinherit=aaa" \ "-o type=volume" "-o type=snapshot" "-o type=filesystem" \ "-o type=volume -V $VOLSIZE" "-o type=snapshot -V $VOLSIZE" \ "-o type=filesystem -V $VOLSIZE" \ "-o creation=aaa" "-o creation=aaa -V $VOLSIZE" \ "-o used=10K" "-o used=10K -V $VOLSIZE" \ "-o available=10K" "-o available=10K -V $VOLSIZE" \ "-o referenced=10K" "-o referenced=10K -V $VOLSIZE" \ "-o compressratio=1.00x" "-o compressratio=1.00x -V $VOLSIZE" \ "-o version=0" "-o version=1.234" "-o version=10K" "-o version=-1" \ "-o version=aaa" "-o version=999" log_assert "'zfs create' should return an error with badly-formed parameters." typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zfs create ${args[i]} $TESTPOOL/$TESTFS1 log_mustnot zfs create -p ${args[i]} $TESTPOOL/$TESTFS1 ((i = i + 1)) done log_pass "'zfs create' with badly formed parameters failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_diff0000644000000000000000000000013213612143055025345 xustar000000000000000030 mtime=1579730477.047668919 30 atime=1579730489.094055709 30 ctime=1579730477.047668919 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/0000775016037001603700000000000013612143055025426 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/zfs_diff_changes.ksh0000644000000000000000000000007413607166133031426 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.030668372 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_changes.ksh0000755016037001603700000000557613607166133031443 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs diff' should display changes correctly. # # STRATEGY: # 1. Create a filesystem with both files and directories, then snapshot it # 2. Generate different types of changes and verify 'zfs diff' displays them # verify_runnable "both" function cleanup { log_must zfs destroy -r "$DATASET" rm -f "$FILEDIFF" } # # Verify object $path has $change type # Valid types are: # * - (The path has been removed) # * + (The path has been created) # * M (The path has been modified) # * R (The path has been renamed) # function verify_object_change # { path="$1" change="$2" log_must eval "zfs diff -F $TESTSNAP1 $TESTSNAP2 > $FILEDIFF" diffchg="$(awk -v path="$path" '$NF == path { print $1 }' < $FILEDIFF)" if [[ "$diffchg" != "$change" ]]; then log_fail "Unexpected change for $path ('$diffchg' != '$change')" else log_note "Object $path change is displayed correctly: '$change'" fi } log_assert "'zfs diff' should display changes correctly." log_onexit cleanup DATASET="$TESTPOOL/$TESTFS/fs" TESTSNAP1="$DATASET@snap1" TESTSNAP2="$DATASET@snap2" FILEDIFF="$TESTDIR/zfs-diff.txt" # 1. Create a filesystem with both files and directories, then snapshot it log_must zfs create $DATASET MNTPOINT="$(get_prop mountpoint $DATASET)" log_must touch "$MNTPOINT/fremoved" log_must touch "$MNTPOINT/frenamed" log_must touch "$MNTPOINT/fmodified" log_must mkdir "$MNTPOINT/dremoved" log_must mkdir "$MNTPOINT/drenamed" log_must mkdir "$MNTPOINT/dmodified" log_must zfs snapshot "$TESTSNAP1" # 2. Generate different types of changes and verify 'zfs diff' displays them log_must rm -f "$MNTPOINT/fremoved" log_must mv "$MNTPOINT/frenamed" "$MNTPOINT/frenamed.new" log_must touch "$MNTPOINT/fmodified" log_must rmdir "$MNTPOINT/dremoved" log_must mv "$MNTPOINT/drenamed" "$MNTPOINT/drenamed.new" log_must touch "$MNTPOINT/dmodified/file" log_must touch "$MNTPOINT/fcreated" log_must mkdir "$MNTPOINT/dcreated" log_must zfs snapshot "$TESTSNAP2" verify_object_change "$MNTPOINT/fremoved" "-" verify_object_change "$MNTPOINT/frenamed.new" "R" verify_object_change "$MNTPOINT/fmodified" "M" verify_object_change "$MNTPOINT/fcreated" "+" verify_object_change "$MNTPOINT/dremoved" "-" verify_object_change "$MNTPOINT/drenamed.new" "R" verify_object_change "$MNTPOINT/dmodified" "M" verify_object_change "$MNTPOINT/dcreated" "+" log_pass "'zfs diff' displays changes correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/zfs_diff_types.ksh0000644000000000000000000000007413607166147031167 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.039668662 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_types.ksh0000755016037001603700000000647213607166147031200 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs diff -F' shows different object types correctly. # # STRATEGY: # 1. Prepare a dataset # 2. Create different objects and verify 'zfs diff -F' shows the correct type # verify_runnable "both" function cleanup { log_must zfs destroy -r "$DATASET" rm -f "$FILEDIFF" } # # Verify object at $path is of type $symbol using 'zfs diff -F' # Valid types are: # * B (Block device) # * C (Character device) # * / (Directory) # * > (Door) # * | (Named pipe) # * @ (Symbolic link) # * P (Event port) # * = (Socket) # * F (Regular file) # function verify_object_class # { path="$1" symbol="$2" log_must eval "zfs diff -F $TESTSNAP1 $TESTSNAP2 > $FILEDIFF" diffsym="$(awk -v path="$path" '$NF == path { print $2 }' < $FILEDIFF)" if [[ "$diffsym" != "$symbol" ]]; then log_fail "Unexpected type for $path ('$diffsym' != '$symbol')" else log_note "Object $path type is correctly displayed as '$symbol'" fi log_must zfs destroy "$TESTSNAP1" log_must zfs destroy "$TESTSNAP2" } log_assert "'zfs diff -F' should show different object types correctly." log_onexit cleanup DATASET="$TESTPOOL/$TESTFS/fs" TESTSNAP1="$DATASET@snap1" TESTSNAP2="$DATASET@snap2" FILEDIFF="$TESTDIR/zfs-diff.txt" MAJOR=$(stat -c %t /dev/null) MINOR=$(stat -c %T /dev/null) # 1. Prepare a dataset log_must zfs create $DATASET MNTPOINT="$(get_prop mountpoint $DATASET)" log_must zfs set devices=on $DATASET log_must zfs set xattr=sa $DATASET # 2. Create different objects and verify 'zfs diff -F' shows the correct type # 2. F (Regular file) log_must zfs snapshot "$TESTSNAP1" log_must touch "$MNTPOINT/file" log_must zfs snapshot "$TESTSNAP2" verify_object_class "$MNTPOINT/file" "F" # 2. @ (Symbolic link) log_must zfs snapshot "$TESTSNAP1" log_must ln -s "$MNTPOINT/file" "$MNTPOINT/link" log_must zfs snapshot "$TESTSNAP2" verify_object_class "$MNTPOINT/link" "@" # 2. B (Block device) log_must zfs snapshot "$TESTSNAP1" log_must mknod "$MNTPOINT/bdev" b $MAJOR $MINOR log_must zfs snapshot "$TESTSNAP2" verify_object_class "$MNTPOINT/bdev" "B" # 2. C (Character device) log_must zfs snapshot "$TESTSNAP1" log_must mknod "$MNTPOINT/cdev" c $MAJOR $MINOR log_must zfs snapshot "$TESTSNAP2" verify_object_class "$MNTPOINT/cdev" "C" # 2. | (Named pipe) log_must zfs snapshot "$TESTSNAP1" log_must mknod "$MNTPOINT/fifo" p log_must zfs snapshot "$TESTSNAP2" verify_object_class "$MNTPOINT/fifo" "|" # 2. / (Directory) log_must zfs snapshot "$TESTSNAP1" log_must mkdir "$MNTPOINT/dir" log_must zfs snapshot "$TESTSNAP2" verify_object_class "$MNTPOINT/dir" "/" # 2. = (Socket) log_must zfs snapshot "$TESTSNAP1" log_must $STF_SUITE/tests/functional/cli_root/zfs_diff/socket "$MNTPOINT/sock" log_must zfs snapshot "$TESTSNAP2" verify_object_class "$MNTPOINT/sock" "=" log_pass "'zfs diff -F' shows different object types correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133027471 xustar000000000000000030 atime=1579730435.059320781 30 ctime=1579730477.042668759 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/Makefile.am0000644016037001603700000000065113607166133027470 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_diff dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zfs_diff_changes.ksh \ zfs_diff_cliargs.ksh \ zfs_diff_encrypted.ksh \ zfs_diff_timestamp.ksh \ zfs_diff_types.ksh pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_diff pkgexec_PROGRAMS = socket socket_SOURCES = socket.c zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/socket.c0000644000000000000000000000007413607166147027076 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.047668919 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/socket.c0000644016037001603700000000244213607166147027075 0ustar00hutter2hutter200000000000000/* * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* * Copyright 2017, loli10K . All rights reserved. */ #include #include #include #include #include #include #include #include #include /* ARGSUSED */ int main(int argc, char *argv[]) { struct sockaddr_un sock; int fd; char *path; size_t size; if (argc != 2) { fprintf(stderr, "usage: %s /path/to/socket\n", argv[0]); exit(1); } path = argv[1]; size = sizeof (sock.sun_path); strncpy(sock.sun_path, (char *)path, size - 1); sock.sun_path[size - 1] = '\0'; sock.sun_family = AF_UNIX; if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) { perror("socket"); return (1); } if (bind(fd, (struct sockaddr *)&sock, sizeof (struct sockaddr_un))) { perror("bind"); return (1); } if (close(fd)) { perror("close"); return (1); } return (0); } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133027304 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.028668308 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/setup.ksh0000755016037001603700000000110313607166133027277 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027573 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.026668244 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/cleanup.ksh0000755016037001603700000000104513607166133027573 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/zfs_diff_cliargs.ksh0000644000000000000000000000007413607166133031442 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.033668468 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_cliargs.ksh0000755016037001603700000000415113607166133031443 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs diff' should only work with supported options. # # STRATEGY: # 1. Create two snapshots # 2. Verify every supported option is accepted # 3. Verify supported options raise an error with unsupported arguments # 4. Verify other unsupported options raise an error # verify_runnable "both" function cleanup { for snap in $TESTSNAP1 $TESTSNAP2; do if snapexists "$snap"; then log_must zfs destroy "$snap" fi done } log_assert "'zfs diff' should only work with supported options." log_onexit cleanup typeset goodopts=("" "-F" "-H" "-t" "-FH" "-Ft" "-Ht" "-FHt") typeset badopts=("-f" "-h" "-h" "-T" "-Fx" "-Ho" "-tT" "-") DATASET="$TESTPOOL/$TESTFS" TESTSNAP1="$DATASET@snap1" TESTSNAP2="$DATASET@snap2" # 1. Create two snapshots log_must zfs snapshot "$TESTSNAP1" log_must zfs snapshot "$TESTSNAP2" # 2. Verify every supported option is accepted for opt in ${goodopts[@]} do log_must zfs diff $opt "$TESTSNAP1" log_must zfs diff $opt "$TESTSNAP1" "$DATASET" log_must zfs diff $opt "$TESTSNAP1" "$TESTSNAP2" done # 3. Verify supported options raise an error with unsupported arguments for opt in ${goodopts[@]} do log_mustnot zfs diff $opt log_mustnot zfs diff $opt "$DATASET" log_mustnot zfs diff $opt "$DATASET@noexists" log_mustnot zfs diff $opt "$DATASET" "$TESTSNAP1" log_mustnot zfs diff $opt "$TESTSNAP2" "$TESTSNAP1" done # 4. Verify other unsupported options raise an error for opt in ${badopts[@]} do log_mustnot zfs diff $opt "$TESTSNAP1" "$DATASET" log_mustnot zfs diff $opt "$TESTSNAP1" "$TESTSNAP2" done log_pass "'zfs diff' only works with supported options." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/zfs_diff_encrypted.ks0000644000000000000000000000007413612141515031634 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.035668532 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_encrypted.ksh0000755016037001603700000000362613612141515032013 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, Datto Inc. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs diff' should work with encrypted datasets # # STRATEGY: # 1. Create an encrypted dataset # 2. Create two snapshots of the dataset # 3. Perform 'zfs diff -Ft' and verify no errors occur # 4. Perform the same test on a dataset with large dnodes # verify_runnable "both" function cleanup { destroy_dataset "$TESTPOOL/$TESTFS1" "-r" destroy_dataset "$TESTPOOL/$TESTFS2" "-r" } log_assert "'zfs diff' should work with encrypted datasets" log_onexit cleanup # 1. Create an encrypted dataset log_must eval "echo 'password' | zfs create -o encryption=on \ -o keyformat=passphrase $TESTPOOL/$TESTFS1" MNTPOINT="$(get_prop mountpoint $TESTPOOL/$TESTFS1)" # 2. Create two snapshots of the dataset log_must zfs snapshot $TESTPOOL/$TESTFS1@snap1 log_must touch "$MNTPOINT/file" log_must zfs snapshot $TESTPOOL/$TESTFS1@snap2 # 3. Perform 'zfs diff' and verify no errors occur log_must zfs diff -Ft $TESTPOOL/$TESTFS1@snap1 $TESTPOOL/$TESTFS1@snap2 # 4. Perform the same test on a dataset with large dnodes log_must eval "echo 'password' | zfs create -o dnodesize=4k \ -o encryption=on -o keyformat=passphrase $TESTPOOL/$TESTFS2" MNTPOINT="$(get_prop mountpoint $TESTPOOL/$TESTFS2)" log_must zfs snapshot $TESTPOOL/$TESTFS2@snap1 log_must touch "$MNTPOINT/file" log_must zfs snapshot $TESTPOOL/$TESTFS2@snap2 log_must zfs diff -Ft $TESTPOOL/$TESTFS2@snap1 $TESTPOOL/$TESTFS2@snap2 log_pass "'zfs diff' works with encrypted datasets" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/zfs_diff_timestamp.ks0000644000000000000000000000007413607166147031656 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.037668596 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/zfs_diff_timestamp.ksh0000755016037001603700000000467513607166147032042 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs diff -t' should display inode change time correctly. # # STRATEGY: # 1. Create a snapshot # 2. Create some files with a random delay and snapshot the filesystem again # 3. Verify 'zfs diff -t' correctly display timestamps # verify_runnable "both" function cleanup { for snap in $TESTSNAP1 $TESTSNAP2; do if snapexists "$snap"; then log_must zfs destroy "$snap" fi done find "$MNTPOINT" -type f -delete rm -f "$FILEDIFF" } # # Creates $count files in $fspath. Waits a random delay between each file. # function create_random # { fspath="$1" typeset -i count="$2" typeset -i i=0 while (( i < count )); do log_must touch "$fspath/file$i" sleep $(random 3) (( i = i + 1 )) done } log_assert "'zfs diff -t' should display inode change time correctly." log_onexit cleanup DATASET="$TESTPOOL/$TESTFS" TESTSNAP1="$DATASET@snap1" TESTSNAP2="$DATASET@snap2" MNTPOINT="$(get_prop mountpoint $DATASET)" FILEDIFF="$TESTDIR/zfs-diff.txt" FILENUM=5 # 1. Create a snapshot log_must zfs snapshot "$TESTSNAP1" # 2. Create some files with a random delay and snapshot the filesystem again create_random "$MNTPOINT" $FILENUM log_must zfs snapshot "$TESTSNAP2" # 3. Verify 'zfs diff -t' correctly display timestamps typeset -i count=0 log_must eval "zfs diff -t $TESTSNAP1 $TESTSNAP2 > $FILEDIFF" awk '{print substr($1,1,index($1,".")-1)" "$NF}' < "$FILEDIFF" | while read line do read ctime file <<< "$line" # If path from 'zfs diff' is not a file (could be xattr object) skip it if [[ ! -f "$file" ]]; then continue; fi filetime="$(stat -c '%Z' $file)" if [[ "$filetime" != "$ctime" ]]; then log_fail "Unexpected ctime for file $file ($filetime != $ctime)" else log_note "Correct ctime read on $file: $ctime" fi (( i = i + 1 )) done if [[ $i != $FILENUM ]]; then log_fail "Wrong number of files verified ($i != $FILENUM)" fi log_pass "'zfs diff -t' displays inode change time correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003027460 xustar000000000000000030 mtime=1579730435.115322579 30 atime=1579730454.866956745 30 ctime=1579730477.044668823 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_diff/Makefile.in0000664016037001603700000007707013612143003027477 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = socket$(EXEEXT) subdir = tests/zfs-tests/tests/functional/cli_root/zfs_diff ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)" PROGRAMS = $(pkgexec_PROGRAMS) am_socket_OBJECTS = socket.$(OBJEXT) socket_OBJECTS = $(am_socket_OBJECTS) socket_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' SCRIPTS = $(dist_pkgdata_SCRIPTS) depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(socket_SOURCES) DIST_SOURCES = $(socket_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_diff ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zfs_diff_changes.ksh \ zfs_diff_cliargs.ksh \ zfs_diff_encrypted.ksh \ zfs_diff_timestamp.ksh \ zfs_diff_types.ksh pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_diff socket_SOURCES = socket.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_diff/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_diff/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list socket$(EXEEXT): $(socket_OBJECTS) $(socket_DEPENDENCIES) @rm -f socket$(EXEEXT) $(AM_V_CCLD)$(LINK) $(socket_OBJECTS) $(socket_LDADD) $(LIBS) install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-dist_pkgdataSCRIPTS \ uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zdb0000644000000000000000000000013213612143054024331 xustar000000000000000030 mtime=1579730476.456649941 30 atime=1579730489.094055709 30 ctime=1579730476.456649941 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/0000775016037001603700000000000013612143054024412 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/zdb_004_pos.ksh0000644000000000000000000000007413607166147027161 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.442649493 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_004_pos.ksh0000755016037001603700000000440313607166147027162 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib # # Description: # zdb will not produce redundant dumps of uberblocks # # Strategy: # 1. Create a pool with two vdevs, A and B # 2. Offline vdev A # 3. Do some I/O # 4. Export the pool # 5. Copy label 1 from vdev A to vdev B # 6. Collect zdb -lu output for vdev B # 7. Verify labels 0 and 1 have unique Uberblocks, but 2 and 3 have none # log_assert "Verify zdb produces unique dumps of uberblocks" log_onexit cleanup function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL for DISK in $DISKS; do zpool labelclear -f $DEV_RDSKDIR/$DISK done } verify_runnable "global" verify_disk_count "$DISKS" 2 set -A DISK $DISKS WHOLE_DISK=${DISK[0]} default_mirror_setup_noexit $DISKS DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR}) [[ -n $DEVS ]] && set -A DISK $DEVS log_must zpool offline $TESTPOOL ${WHOLE_DISK} log_must dd if=/dev/urandom of=$TESTDIR/testfile bs=1K count=2 log_must zpool export $TESTPOOL log_must dd if=$DEV_RDSKDIR/${DISK[0]} of=$DEV_RDSKDIR/${DISK[1]} bs=1K count=256 conv=notrunc ubs=$(zdb -lu ${DISK[1]} | grep -e LABEL -e Uberblock -e 'labels = ') log_note "vdev 1: ubs $ubs" ub_dump_counts=$(zdb -lu ${DISK[1]} | \ awk ' /LABEL/ {label=$NF; blocks[label]=0}; /Uberblock/ {blocks[label]++}; END {print blocks[0],blocks[1],blocks[2],blocks[3]}') (( $? != 0)) && log_fail "failed to get ub_dump_counts from DISK[1]" log_note "vdev 1: ub_dump_counts $ub_dump_counts" set -A dump_count $ub_dump_counts for label in 0 1 2 3; do if [[ $label -lt 2 ]]; then [[ ${dump_count[$label]} -eq 0 ]] && \ log_fail "zdb incorrectly dumps duplicate uberblocks" else [[ ${dump_count[$label]} -ne 0 ]] && \ log_fail "zdb incorrectly dumps duplicate uberblocks" fi done cleanup log_pass "zdb produces unique dumps of uberblocks" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/zdb_decompress.ksh0000644000000000000000000000007413612141521030122 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.452649813 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_decompress.ksh0000755016037001603700000000720213612141521030123 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2019 by Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Description: # zdb -R pool :d will display the correct data and length # # Strategy: # 1. Create a pool, set compression to lzjb # 2. Write some identifiable data to a file # 3. Run zdb -ddddddbbbbbb against the file # 4. Record the DVA, lsize, and psize of L0 block 0 # 5. Run zdb -R with :d flag and match the data # 6. Run zdb -R with :dr flags and match the lsize/psize # 7. Run zdb -R with :dr flags and match the lsize # 8. Run zdb -R with :dr flags and match the psize # function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL } log_assert "Verify zdb -R :d flag (decompress) works as expected" log_onexit cleanup init_data=$TESTDIR/file1 write_count=256 blksize=4096 pattern="_match__pattern_" verify_runnable "global" verify_disk_count "$DISKS" 2 default_mirror_setup_noexit $DISKS log_must zfs set recordsize=$blksize $TESTPOOL/$TESTFS log_must zfs set compression=lzjb $TESTPOOL/$TESTFS # 16 chars 256 times = 4k = block size typeset four_k="" for i in {1..$write_count} do four_k=$four_k$pattern done # write the 4k block 256 times for i in {1..$write_count} do echo $four_k >> $init_data done sync_pool $TESTPOOL true # get object number of file listing=$(ls -i $init_data) set -A array $listing obj=${array[0]} log_note "file $init_data has object number $obj" output=$(zdb -ddddddbbbbbb $TESTPOOL/$TESTFS $obj 2> /dev/null \ |grep -m 1 "L0 DVA" |head -n1) dva=$(grep -oP 'DVA\[0\]=<\K.*?(?=>)' <<< "$output") log_note "block 0 of $init_data has a DVA of $dva" # use the length reported by zdb -ddddddbbbbbb size_str=$(grep -oP 'size=\K.*?(?= )' <<< "$output") log_note "block size $size_str" vdev=$(echo "$dva" |awk '{split($0,array,":")} END{print array[1]}') offset=$(echo "$dva" |awk '{split($0,array,":")} END{print array[2]}') output=$(zdb -R $TESTPOOL $vdev:$offset:$size_str:d 2> /dev/null) echo $output |grep $pattern > /dev/null (( $? != 0 )) && log_fail "zdb -R :d failed to decompress the data properly" output=$(zdb -R $TESTPOOL $vdev:$offset:$size_str:dr 2> /dev/null) echo $output |grep $four_k > /dev/null (( $? != 0 )) && log_fail "zdb -R :dr failed to decompress the data properly" output=$(zdb -R $TESTPOOL $vdev:$offset:$size_str:dr 2> /dev/null) result=${#output} (( $result != $blksize)) && log_fail \ "zdb -R failed to decompress the data to the length (${#output} != $size_str)" # decompress using lsize lsize=$(echo $size_str |awk '{split($0,array,"/")} END{print array[1]}') psize=$(echo $size_str |awk '{split($0,array,"/")} END{print array[2]}') output=$(zdb -R $TESTPOOL $vdev:$offset:$lsize:dr 2> /dev/null) result=${#output} (( $result != $blksize)) && log_fail \ "zdb -R failed to decompress the data (length ${#output} != $blksize)" # Specifying psize will decompress successfully , but not always to full # lsize since zdb has to guess lsize incrementally. output=$(zdb -R $TESTPOOL $vdev:$offset:$psize:dr 2> /dev/null) result=${#output} # convert psize to decimal psize_orig=$psize psize=${psize%?} psize=$((16#$psize)) (( $result < $psize)) && log_fail \ "zdb -R failed to decompress the data with psize $psize_orig\ (length ${#output} < $psize)" log_pass "zdb -R :d flag (decompress) works as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/zdb_checksum.ksh0000644000000000000000000000007413612141520027557 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.449649717 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_checksum.ksh0000755016037001603700000000345113612141520027562 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2019 by Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Description: # zdb -c will display the same checksum as -ddddddbbbbbb # # Strategy: # 1. Create a pool # 2. Write some data to a file # 3. Run zdb -ddddddbbbbbb against the file # 4. Record the checksum and DVA of L0 block 0 # 5. Run zdb -R with :c flag and match the checksum function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL } log_assert "Verify zdb -R generates the correct checksum." log_onexit cleanup init_data=$TESTDIR/file1 write_count=8 blksize=131072 verify_runnable "global" verify_disk_count "$DISKS" 2 default_mirror_setup_noexit $DISKS file_write -o create -w -f $init_data -b $blksize -c $write_count # get object number of file listing=$(ls -i $init_data) set -A array $listing obj=${array[0]} log_note "file $init_data has object number $obj" output=$(zdb -ddddddbbbbbb $TESTPOOL/$TESTFS $obj 2> /dev/null \ |grep -m 1 "L0 DVA" |head -n1) dva=$(grep -oP 'DVA\[0\]=<\K.*?(?=>)' <<< "$output") log_note "block 0 of $init_data has a DVA of $dva" cksum_expected=$(grep -oP '(?<=cksum=)[ A-Za-z0-9:]*' <<< "$output") log_note "expecting cksum $cksum_expected" output=$(zdb -R $TESTPOOL $dva:c 2> /dev/null) result=$(grep $cksum_expected <<< "$output") (( $? != 0 )) && log_fail "zdb -R failed to print the correct checksum" log_pass "zdb -R generates the correct checksum" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141521026444 xustar000000000000000030 atime=1579730434.635307167 30 ctime=1579730476.454649877 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/Makefile.am0000644016037001603700000000037513612141521026446 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zdb dist_pkgdata_SCRIPTS = \ zdb_001_neg.ksh \ zdb_002_pos.ksh \ zdb_003_pos.ksh \ zdb_004_pos.ksh \ zdb_005_pos.ksh \ zdb_006_pos.ksh \ zdb_checksum.ksh \ zdb_decompress.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/zdb_003_pos.ksh0000644000000000000000000000007413607166147027160 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.440649427 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_003_pos.ksh0000755016037001603700000000324313607166147027162 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib # # Description: # zdb will not produce redundant dumps of configurations # # Strategy: # 1. Create a pool with two vdevs # 2. Copy label 1 from the first vdev to the second vdev # 3. Collect zdb -l output for both vdevs # 4. Verify that the correct number of configs is dumped for each # log_assert "Verify zdb does not produce redundant dumps of configurations" log_onexit cleanup function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL } verify_runnable "global" verify_disk_count "$DISKS" 2 config_count=(1 2) set -A DISK $DISKS default_mirror_setup_noexit $DISKS DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR}) log_note "$DEVS" [[ -n $DEVS ]] && set -A DISK $DEVS log_must dd if=/dev/${DISK[0]} of=/dev/${DISK[1]} bs=1K count=256 conv=notrunc for x in 0 1 ; do config_count=$(zdb -l $DEV_RDSKDIR/${DISK[$x]} | grep -c features_for_read) (( $? != 0)) && log_fail "failed to get config_count from DISK[$x]" log_note "vdev $x: message_count $config_count" [ $config_count -ne ${config_count[$x]} ] && \ log_fail "zdb produces an incorrect number of configuration dumps." done cleanup log_pass "zdb produces unique dumps of configurations." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/zdb_006_pos.ksh0000644000000000000000000000007413607166133027156 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.447649653 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_006_pos.ksh0000755016037001603700000000301313607166133027153 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Nutanix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Description: # zdb -d will work on imported/exported pool with pool/dataset argument # # Strategy: # 1. Create a pool # 2. Run zdb -d with pool and dataset arguments. # 3. Export the pool # 4. Run zdb -ed with pool and dataset arguments. # function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL for DISK in $DISKS; do zpool labelclear -f $DEV_RDSKDIR/$DISK done } log_assert "Verify zdb -d works on imported/exported pool with pool/dataset argument" log_onexit cleanup verify_runnable "global" verify_disk_count "$DISKS" 2 default_mirror_setup_noexit $DISKS log_must zfs snap $TESTPOOL/$TESTFS@snap log_must zdb -d $TESTPOOL log_must zdb -d $TESTPOOL/ log_must zdb -d $TESTPOOL/$TESTFS log_must zdb -d $TESTPOOL/$TESTFS@snap log_must zpool export $TESTPOOL log_must zdb -ed $TESTPOOL log_must zdb -ed $TESTPOOL/ log_must zdb -ed $TESTPOOL/$TESTFS log_must zdb -ed $TESTPOOL/$TESTFS@snap log_must zpool import $TESTPOOL cleanup log_pass "zdb -d works on imported/exported pool with pool/dataset argument" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/zdb_001_neg.ksh0000644000000000000000000000007413607166133027121 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.435649267 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_001_neg.ksh0000755016037001603700000000436513607166133027131 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2017 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A badly formed parameter passed to zdb(1) should # return an error. # # STRATEGY: # 1. Create an array containing bad zdb parameters. # 2. For each element, execute the sub-command. # 3. Verify it returns an error. # verify_runnable "global" set -A args "create" "add" "destroy" "import fakepool" \ "export fakepool" "create fakepool" "add fakepool" \ "create mirror" "create raidz" \ "create mirror fakepool" "create raidz fakepool" \ "create raidz1 fakepool" "create raidz2 fakepool" \ "create fakepool mirror" "create fakepool raidz" \ "create fakepool raidz1" "create fakepool raidz2" \ "add fakepool mirror" "add fakepool raidz" \ "add fakepool raidz1" "add fakepool raidz2" \ "add mirror fakepool" "add raidz fakepool" \ "add raidz1 fakepool" "add raidz2 fakepool" \ "setvprop" "blah blah" "-%" "--?" "-*" "-=" \ "-a" "-f" "-g" "-h" "-j" "-m" "-n" "-o" "-p" \ "-p /tmp" "-r" "-t" "-w" "-x" "-y" "-z" \ "-D" "-E" "-G" "-H" "-I" "-J" "-K" "-M" \ "-N" "-Q" "-R" "-S" "-T" "-W" "-Z" log_assert "Execute zdb using invalid parameters." typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zdb ${args[i]} ((i = i + 1)) done log_pass "Badly formed zdb parameters fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/zdb_002_pos.ksh0000644000000000000000000000007413607166133027152 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.437649331 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_002_pos.ksh0000755016037001603700000000256313607166133027160 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2015 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # Description: # zdb will accurately count the feature refcount for pools with and without # features enabled. # # Strategy: # 1. Create a pool, and collect zdb output for the pool. # 2. Verify there are no 'feature refcount mismatch' messages. # 3. Repeat for a pool with features disabled. # log_assert "Verify zdb accurately counts feature refcounts." log_onexit cleanup typeset errstr="feature refcount mismatch" typeset tmpfile="$TEST_BASE_DIR/zdb-feature-mismatch" function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL grep "$errstr" $tmpfile rm -f $tmpfile } for opt in '' -d; do log_must zpool create -f $opt $TESTPOOL ${DISKS%% *} log_must eval "zdb $TESTPOOL >$tmpfile" grep -q "$errstr" $tmpfile && \ log_fail "Found feature refcount mismatches in zdb output." destroy_pool $TESTPOOL done log_pass "zdb accurately counts feature refcounts." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/zdb_005_pos.ksh0000644000000000000000000000007413607166147027162 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.444649557 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/zdb_005_pos.ksh0000755016037001603700000000316113607166147027163 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib # # Description: # zdb -l exit codes are correct # # Strategy: # 1. Create a pool # 2. Overwrite label 0 on vdev[1] with dd # 3. Create an empty file # 3. Run zdb -l on vdev[0] and verify exit value 0 # 4. Run zdb -l on vdev[1] and verify exit value 1 # 5. Run zdb -l on the empty file and verify exit value 2 # log_assert "Verify zdb -l exit codes are correct" log_onexit cleanup function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL rm -f $TEMPFILE } verify_runnable "global" verify_disk_count "$DISKS" 2 set -A DISK $DISKS default_mirror_setup_noexit $DISKS DEVS=$(get_pool_devices ${TESTPOOL} ${DEV_RDSKDIR}) log_note "$DEVS" [[ -n $DEVS ]] && set -A DISK $DEVS log_must dd if=/dev/zero of=$DEV_RDSKDIR/${DISK[1]} bs=1K count=256 conv=notrunc log_must truncate -s 0 $TEMPFILE zdb -l $DEV_RDSKDIR/${DISK[0]} [[ $? -ne 0 ]] && log_fail "zdb -l exit codes are incorrect." zdb -l $DEV_RDSKDIR/${DISK[1]} [[ $? -ne 1 ]] && log_fail "zdb -l exit codes are incorrect." zdb -l $TEMPFILE [[ $? -ne 2 ]] && log_fail "zdb -l exit codes are incorrect." cleanup log_pass "zdb -l exit codes are correct." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002026444 xustar000000000000000030 mtime=1579730434.671308321 30 atime=1579730454.655949969 30 ctime=1579730476.456649941 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zdb/Makefile.in0000664016037001603700000005743013612143002026461 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zdb DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zdb ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ zdb_001_neg.ksh \ zdb_002_pos.ksh \ zdb_003_pos.ksh \ zdb_004_pos.ksh \ zdb_005_pos.ksh \ zdb_006_pos.ksh \ zdb_checksum.ksh \ zdb_decompress.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zdb/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zdb/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_create0000644000000000000000000000013213612143056026242 xustar000000000000000030 mtime=1579730478.994731434 30 atime=1579730489.094055709 30 ctime=1579730478.994731434 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/0000775016037001603700000000000013612143056026323 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_005_0000644000000000000000000000007413612141513031454 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.929729348 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_005_pos.ksh0000755016037001603700000000765513612141513032777 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create [-R root][-m mountpoint] ...' can create an # alternate root pool or a new pool mounted at the specified mountpoint. # # STRATEGY: # 1. Create a pool with '-m' option # 2. Verify the pool is mounted at the specified mountpoint # verify_runnable "global" function cleanup { poolexists $TESTPOOL && \ log_must zpool destroy -f $TESTPOOL for dir in $TESTDIR $TESTDIR1; do [[ -d $dir ]] && rm -rf $dir done } log_assert "'zpool create [-R root][-m mountpoint] ...' can create" \ "an alternate pool or a new pool mounted at the specified mountpoint." log_onexit cleanup set -A pooltype "" "mirror" "raidz" "raidz1" "raidz2" # # cleanup the pools created in previous case if zpool_create_004_pos timedout # for pool in $TESTPOOL2 $TESTPOOL1 $TESTPOOL; do if poolexists $pool; then destroy_pool $pool fi done #prepare raw file for file disk [[ -d $TESTDIR ]] && rm -rf $TESTDIR log_must mkdir -p $TESTDIR typeset -i i=1 while (( i < 4 )); do log_must mkfile $FILESIZE $TESTDIR/file.$i (( i = i + 1 )) done #Remove the directory with name as pool name if it exists [[ -d /$TESTPOOL ]] && rm -rf /$TESTPOOL file=$TESTDIR/file for opt in "-R $TESTDIR1" "-m $TESTDIR1" \ "-R $TESTDIR1 -m $TESTDIR1" "-m $TESTDIR1 -R $TESTDIR1" do i=0 while (( i < ${#pooltype[*]} )); do #Remove the testing pool and its mount directory poolexists $TESTPOOL && \ log_must zpool destroy -f $TESTPOOL [[ -d $TESTDIR1 ]] && rm -rf $TESTDIR1 log_must zpool create $opt $TESTPOOL ${pooltype[i]} \ $file.1 $file.2 $file.3 ! poolexists $TESTPOOL && \ log_fail "Creating pool with $opt fails." mpt=`zfs mount | egrep "^$TESTPOOL[^/]" | awk '{print $2}'` (( ${#mpt} == 0 )) && \ log_fail "$TESTPOOL created with $opt is not mounted." mpt_val=$(get_prop "mountpoint" $TESTPOOL) [[ "$mpt" != "$mpt_val" ]] && \ log_fail "The value of mountpoint property is different\ from the output of zfs mount" if [[ "$opt" == "-m $TESTDIR1" ]]; then [[ ! -d $TESTDIR1 ]] && \ log_fail "$TESTDIR1 is not created automatically." [[ "$mpt" != "$TESTDIR1" ]] && \ log_fail "$TESTPOOL is not mounted on $TESTDIR1." elif [[ "$opt" == "-R $TESTDIR1" ]]; then [[ ! -d $TESTDIR1/$TESTPOOL ]] && \ log_fail "$TESTDIR1/$TESTPOOL is not created automatically." [[ "$mpt" != "$TESTDIR1/$TESTPOOL" ]] && \ log_fail "$TESTPOOL is not mounted on $TESTDIR1/$TESTPOOL." else [[ ! -d ${TESTDIR1}$TESTDIR1 ]] && \ log_fail "${TESTDIR1}$TESTDIR1 is not created automatically." [[ "$mpt" != "${TESTDIR1}$TESTDIR1" ]] && \ log_fail "$TESTPOOL is not mounted on ${TESTDIR1}$TESTDIR1." fi [[ -d /$TESTPOOL ]] && \ log_fail "The default mountpoint /$TESTPOOL is created" \ "while with $opt option." (( i = i + 1 )) done done log_pass "'zpool create [-R root][-m mountpoint] ...' works as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_011_0000644000000000000000000000007413607166147031467 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.943729798 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_011_neg.ksh0000755016037001603700000001023613607166147032747 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create' will fail in the following cases: # existent pool; device is part of an active pool; nested virtual devices; # differently sized devices without -f option; device being currently # mounted; devices in /etc/vfstab; specified as the dedicated dump device. # # STRATEGY: # 1. Create case scenarios # 2. For each scenario, try to create a new pool with the virtual devices # 3. Verify the creation is failed. # verify_runnable "global" function cleanup { for pool in $TESTPOOL $TESTPOOL1 do destroy_pool $pool done if [[ -n $saved_dump_dev ]]; then log_must dumpadm -u -d $saved_dump_dev fi partition_disk $SIZE $disk 7 } log_assert "'zpool create' should be failed with inapplicable scenarios." log_onexit cleanup if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi pooldev1=${disk}${SLICE_PREFIX}${SLICE0} pooldev2=${disk}${SLICE_PREFIX}${SLICE1} mirror1="${disk}${SLICE_PREFIX}${SLICE1} ${disk}${SLICE_PREFIX}${SLICE3}" mirror2="${disk}${SLICE_PREFIX}${SLICE4} ${disk}${SLICE_PREFIX}${SLICE5}" raidz1=$mirror1 raidz2=$mirror2 diff_size_dev="${disk}${SLICE_PREFIX}${SLICE6} ${disk}${SLICE_PREFIX}${SLICE7}" vfstab_dev=$(find_vfstab_dev) if is_linux; then partition_disk $SIZE $disk 7 cyl=$(get_endslice $disk $SLICE5) log_must set_partition $SLICE6 "$cyl" $SIZE1 $disk else specified_dump_dev=${disk}${SLICE_PREFIX}${SLICE0} saved_dump_dev=$(save_dump_dev) cyl=$(get_endslice $disk $SLICE6) log_must set_partition $SLICE7 "$cyl" $SIZE1 $disk fi create_pool "$TESTPOOL" "$pooldev1" # # Set up the testing scenarios parameters # set -A arg "$TESTPOOL $pooldev2" \ "$TESTPOOL1 $pooldev1" \ "$TESTPOOL1 $TESTDIR0/$FILEDISK0" \ "$TESTPOOL1 mirror mirror $mirror1 mirror $mirror2" \ "$TESTPOOL1 raidz raidz $raidz1 raidz $raidz2" \ "$TESTPOOL1 raidz1 raidz1 $raidz1 raidz1 $raidz2" \ "$TESTPOOL1 mirror raidz $raidz1 raidz $raidz2" \ "$TESTPOOL1 mirror raidz1 $raidz1 raidz1 $raidz2" \ "$TESTPOOL1 raidz mirror $mirror1 mirror $mirror2" \ "$TESTPOOL1 raidz1 mirror $mirror1 mirror $mirror2" \ "$TESTPOOL1 mirror $diff_size_dev" \ "$TESTPOOL1 raidz $diff_size_dev" \ "$TESTPOOL1 raidz1 $diff_size_dev" \ "$TESTPOOL1 mirror $mirror1 spare $mirror2 spare $diff_size_dev" \ "$TESTPOOL1 $vfstab_dev" \ "$TESTPOOL1 ${disk}s10" \ "$TESTPOOL1 spare $pooldev2" unset NOINUSE_CHECK typeset -i i=0 while (( i < ${#arg[*]} )); do log_mustnot zpool create ${arg[i]} (( i = i+1 )) done # now destroy the pool to be polite log_must zpool destroy -f $TESTPOOL if ! is_linux; then # create/destroy a pool as a simple way to set the partitioning # back to something normal so we can use this $disk as a dump device log_must zpool create -f $TESTPOOL3 $disk log_must zpool destroy -f $TESTPOOL3 log_must dumpadm -d ${DEV_DSKDIR}/$specified_dump_dev log_mustnot zpool create -f $TESTPOOL1 "$specified_dump_dev" # Also check to see that in-use checking prevents us from creating # a zpool from just the first slice on the disk. log_mustnot zpool create \ -f $TESTPOOL1 ${specified_dump_dev}${SLICE_PREFIX}${SLICE0} fi log_pass "'zpool create' is failed as expected with inapplicable scenarios." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_feat0000644000000000000000000000007413607166133031741 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.976730856 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_001_pos.ksh0000755016037001603700000000422713607166133034672 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib ################################################################################ # # Newly created pools should have all features enabled. # Specifying a feature to be enabled with '-o' should be a no-op. # # 1. Create a new pool. # 2. Verify that every feature@ property is in the 'enabled' or 'active' state # 3. Destroy the pool and create a new pool with # '-o feature@async_destroy=enabled' # 4. Verify again. # ################################################################################ verify_runnable "global" function cleanup { datasetexists $TESTPOOL && log_must zpool destroy $TESTPOOL } function check_features { for state in $(zpool get all $TESTPOOL | \ awk '$2 ~ /feature@/ { print $3 }'); do if [[ "$state" != "enabled" && "$state" != "active" ]]; then log_fail "some features are not enabled on new pool" fi done } log_onexit cleanup log_assert "'zpool create' creates pools with all features enabled" log_must zpool create -f $TESTPOOL $DISKS check_features log_must zpool destroy -f $TESTPOOL log_must zpool create -f -o feature@async_destroy=enabled $TESTPOOL $DISKS check_features log_pass "'zpool create' creates pools with all features enabled" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_feat0000644000000000000000000000007413607166133031741 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.983731082 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_004_neg.ksh0000755016037001603700000000350313607166133034641 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib ################################################################################ # # Specifying invalid feature names/states should cause the create to fail. # # 1. Try to create the pool with a variety of invalid feature names/states. # 2. Verify no pool was created. # ################################################################################ verify_runnable "global" properties="\ feature@async_destroy=disable \ feature@async_destroy=active \ feature@xxx_fake_xxx=enabled \ unsupported@some_feature=inactive \ unsupported@some_feature=readonly \ " function cleanup { datasetexists $TESTPOOL && log_must zpool destroy $TESTPOOL } log_assert "'zpool create' with invalid feature names/states fails" log_onexit cleanup for prop in $properties; do log_mustnot zpool create -f -o "$prop" $TESTPOOL $DISKS log_mustnot datasetexists $TESTPOOL done log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_010_0000644000000000000000000000007413607166133031461 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.940729701 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_010_neg.ksh0000755016037001603700000000456513607166133032751 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create' should return an error with VDEVs of size SPA_MINDEVSIZE # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute 'zpool create' # 3. Verify an error is returned. # log_assert "'zpool create' should return an error with VDEVs SPA_MINDEVSIZE" verify_runnable "global" function cleanup { poolexists $TOOSMALL && destroy_pool $TOOSMALL poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 poolexists $TESTPOOL && destroy_pool $TESTPOOL [[ -d $TESTDIR ]] && rm -rf $TESTDIR partition_disk $SIZE $disk 6 } log_onexit cleanup if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi create_pool $TESTPOOL $disk log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS typeset -l devsize=$(($SPA_MINDEVSIZE - 1024 * 1024)) for files in $TESTDIR/file1 $TESTDIR/file2 do log_must mkfile $devsize $files done set -A args \ "$TOOSMALL $TESTDIR/file1" "$TESTPOOL1 $TESTDIR/file1 $TESTDIR/file2" \ "$TOOSMALL mirror $TESTDIR/file1 $TESTDIR/file2" \ "$TOOSMALL raidz $TESTDIR/file1 $TESTDIR/file2" typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool create ${args[i]} ((i = i + 1)) done log_pass "'zpool create' with badly formed parameters failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_015_0000644000000000000000000000007413607166133031466 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.950730022 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_015_neg.ksh0000755016037001603700000000450313607166133032746 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # # DESCRIPTION: # 'zpool create' will fail with zfs vol device in swap # # # STRATEGY: # 1. Create a zpool # 2. Create a zfs vol on zpool # 3. Add this zfs vol device to swap # 4. Try to create a new pool with devices in swap # 5. Verify the creation is failed. # verify_runnable "global" function cleanup { # cleanup zfs pool and dataset if datasetexists $vol_name; then swap_cleanup ${ZVOL_DEVDIR}/${vol_name} fi for pool in $TESTPOOL1 $TESTPOOL; do if poolexists $pool; then destroy_pool $pool fi done } unset NOINUSE_CHECK if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi typeset pool_dev=${disk}${SLICE_PREFIX}${SLICE0} typeset vol_name=$TESTPOOL/$TESTVOL log_assert "'zpool create' should fail with zfs vol device in swap." log_onexit cleanup # # use zfs vol device in swap to create pool which should fail. # create_pool $TESTPOOL $pool_dev log_must zfs create -V 100m $vol_name block_device_wait swap_setup ${ZVOL_DEVDIR}/$vol_name for opt in "-n" "" "-f"; do log_mustnot zpool create $opt $TESTPOOL1 ${ZVOL_DEVDIR}/${vol_name} done # cleanup swap_cleanup ${ZVOL_DEVDIR}/${vol_name} log_must_busy zfs destroy $vol_name log_must zpool destroy $TESTPOOL log_pass "'zpool create' passed as expected with inapplicable scenario." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_temp0000644000000000000000000000007413607166133031767 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.990731306 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_tempname.ksh0000755016037001603700000000413513607166133033417 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright 2018, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zpool create -t ' can create a pool with the specified temporary # name. The pool should be present in the namespace as until exported # # STRATEGY: # 1. Create a pool with '-t' option # 2. Verify the pool is created with the specified temporary name # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL destroy_pool $TEMPPOOL } log_assert "'zpool create -t ' can create a pool with the specified" \ " temporary name." log_onexit cleanup TEMPPOOL="tempname.$$" typeset poolprops=('comment=text' 'ashift=12' 'listsnapshots=on' 'autoexpand=on' 'autoreplace=on' 'delegation=off' 'failmode=continue') typeset fsprops=('canmount=off' 'mountpoint=none' 'utf8only=on' 'casesensitivity=mixed' 'version=1' 'normalization=formKD') for poolprop in "${poolprops[@]}"; do for fsprop in "${fsprops[@]}"; do # 1. Create a pool with '-t' option log_must zpool create $TESTPOOL -t $TEMPPOOL \ -O $fsprop -o $poolprop $DISKS # 2. Verify the pool is created with the specified temporary name log_must poolexists $TEMPPOOL log_mustnot poolexists $TESTPOOL propname="$(awk -F= '{print $1}' <<< $fsprop)" propval="$(awk -F= '{print $2}' <<< $fsprop)" log_must test "$(get_prop $propname $TEMPPOOL)" == "$propval" propname="$(awk -F= '{print $1}' <<< $poolprop)" propval="$(awk -F= '{print $2}' <<< $poolprop)" log_must test "$(get_pool_prop $propname $TEMPPOOL)" == "$propval" # Cleanup destroy_pool $TEMPPOOL done done log_pass "'zpool create -t ' successfully creates pools with" \ " temporary names" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create.cfg0000644000000000000000000000007313607166133031477 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.91172877 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create.cfg0000644016037001603700000000535013607166133031500 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2015 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export DISK_ARRAY_NUM=0 export DISK_ARRAY_LIMIT=4 export DISKSARRAY="" function set_disks { typeset -a disk_array=($(find_disks $DISKS)) if (( ${#disk_array[*]} <= 1 )); then export DISK=${DISKS%% *} export DISK_ARRAY_NUM=1 else export DISK="" typeset -i i=0 while (( i < ${#disk_array[*]} )); do export DISK${i}="${disk_array[$i]}" DISKSARRAY="$DISKSARRAY ${disk_array[$i]}" (( i = i + 1 )) (( i>$DISK_ARRAY_LIMIT )) && break done export DISK_ARRAY_NUM=$i export DISKSARRAY fi } set_disks export FILESIZE="$MINVDEVSIZE" export FILESIZE1="$(($MINVDEVSIZE * 2))" export SIZE="$((MINVDEVSIZE / (1024 * 1024)))"m export SIZE1="$(($MINVDEVSIZE * 2 / (1024 * 1024)))m" if is_linux; then set_device_dir set_slice_prefix export SLICE0=1 export SLICE1=2 export SLICE2=3 export SLICE3=4 export SLICE4=5 export SLICE5=6 export SLICE6=7 export SLICE7=8 disk1=${DISKS%% *} if is_mpath_device $disk1; then delete_partitions fi else export SLICE_PREFIX="s" export SLICE0=0 export SLICE1=1 export SLICE2=2 export SLICE3=3 export SLICE4=4 export SLICE5=5 export SLICE6=6 export SLICE7=7 fi export FILEDISK=filedisk_create export FILEDISK0=filedisk0_create export FILEDISK1=filedisk1_create export FILEDISK2=filedisk2_create export FILEDISK3=filedisk3_create export BYND_MAX_NAME="byondmaxnamelength\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789\ 012345678901234567890123456789" export TOOSMALL="toosmall" export TESTPOOL4=testpool4.create export TESTPOOL5=testpool5.create export TESTPOOL6=testpool6.create export CPATH="$TEST_BASE_DIR/cachefile.create" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_008_0000644000000000000000000000007413607166133031470 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.936729572 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_008_pos.ksh0000755016037001603700000001057413607166133033005 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create' have to use '-f' scenarios # # STRATEGY: # 1. Prepare the scenarios # 2. Create pool without '-f' and verify it fails # 3. Create pool with '-f' and verify it succeeds # verify_runnable "global" if is_linux; then # Versions of libblkid older than 2.27.0 will not always detect member # devices of a pool, therefore skip this test case for old versions. currentver="$(blkid -v | tr ',' ' ' | awk '/libblkid/ { print $6 }')" requiredver="2.27.0" if [ "$(printf "$requiredver\n$currentver" | sort -V | head -n1)" == \ "$currentver" ] && [ "$currentver" != "$requiredver" ]; then log_unsupported "libblkid ($currentver) may not detect pools" fi fi function cleanup { if [[ $exported_pool == true ]]; then if [[ $force_pool == true ]]; then log_must zpool create \ -f $TESTPOOL ${disk}${SLICE_PREFIX}${SLICE0} else log_must zpool import $TESTPOOL fi fi if poolexists $TESTPOOL ; then destroy_pool $TESTPOOL fi if poolexists $TESTPOOL1 ; then destroy_pool $TESTPOOL1 fi # # recover it back to EFI label # create_pool $TESTPOOL $disk destroy_pool $TESTPOOL partition_disk $SIZE $disk 6 } # # create overlap slice 0 and 1 on $disk # function create_overlap_slice { typeset format_file=$TEST_BASE_DIR/format_overlap.$$ typeset disk=$1 echo "partition" >$format_file echo "0" >> $format_file echo "" >> $format_file echo "" >> $format_file echo "0" >> $format_file echo "200m" >> $format_file echo "1" >> $format_file echo "" >> $format_file echo "" >> $format_file echo "0" >> $format_file echo "400m" >> $format_file echo "label" >> $format_file echo "" >> $format_file echo "q" >> $format_file echo "q" >> $format_file format -e -s -d $disk -f $format_file typeset -i ret=$? rm -fr $format_file if (( ret != 0 )); then log_fail "unable to create overlap slice." fi return 0 } log_assert "'zpool create' have to use '-f' scenarios" log_onexit cleanup typeset exported_pool=false typeset force_pool=false if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi # overlapped slices as vdev need -f to create pool # Make the disk is EFI labeled first via pool creation create_pool $TESTPOOL $disk destroy_pool $TESTPOOL if ! is_linux; then # Make the disk is VTOC labeled since only VTOC label supports overlap log_must labelvtoc $disk log_must create_overlap_slice $disk unset NOINUSE_CHECK log_mustnot zpool create $TESTPOOL ${disk}${SLICE_PREFIX}${SLICE0} log_must zpool create -f $TESTPOOL ${disk}${SLICE_PREFIX}${SLICE0} destroy_pool $TESTPOOL fi # exported device to be as spare vdev need -f to create pool log_must zpool create -f $TESTPOOL $disk destroy_pool $TESTPOOL log_must partition_disk $SIZE $disk 6 create_pool $TESTPOOL ${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1} log_must zpool export $TESTPOOL exported_pool=true log_mustnot zpool create $TESTPOOL1 ${disk}${SLICE_PREFIX}${SLICE3} \ spare ${disk}${SLICE_PREFIX}${SLICE1} create_pool $TESTPOOL1 ${disk}${SLICE_PREFIX}${SLICE3} \ spare ${disk}${SLICE_PREFIX}${SLICE1} force_pool=true destroy_pool $TESTPOOL1 log_pass "'zpool create' have to use '-f' scenarios" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133030364 xustar000000000000000030 atime=1579730436.466365955 29 ctime=1579730478.99273137 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/Makefile.am0000644016037001603700000000216513607166133030366 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_create dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_create_001_pos.ksh \ zpool_create_002_pos.ksh \ zpool_create_003_pos.ksh \ zpool_create_004_pos.ksh \ zpool_create_005_pos.ksh \ zpool_create_006_pos.ksh \ zpool_create_007_neg.ksh \ zpool_create_008_pos.ksh \ zpool_create_009_neg.ksh \ zpool_create_010_neg.ksh \ zpool_create_011_neg.ksh \ zpool_create_012_neg.ksh \ zpool_create_014_neg.ksh \ zpool_create_015_neg.ksh \ zpool_create_016_pos.ksh \ zpool_create_017_neg.ksh \ zpool_create_018_pos.ksh \ zpool_create_019_pos.ksh \ zpool_create_020_pos.ksh \ zpool_create_021_pos.ksh \ zpool_create_022_pos.ksh \ zpool_create_023_neg.ksh \ zpool_create_024_pos.ksh \ zpool_create_encrypted.ksh \ zpool_create_crypt_combos.ksh \ zpool_create_features_001_pos.ksh \ zpool_create_features_002_pos.ksh \ zpool_create_features_003_pos.ksh \ zpool_create_features_004_neg.ksh \ zpool_create_features_005_pos.ksh \ create-o_ashift.ksh \ zpool_create_tempname.ksh dist_pkgdata_DATA = \ zpool_create.cfg \ zpool_create.shlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_004_0000644000000000000000000000007413607166133031464 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.927729284 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_004_pos.ksh0000755016037001603700000000435713607166133033003 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # Create a storage pool with many file based vdevs. # # STRATEGY: # 1. Create assigned number of files in ZFS filesystem as vdevs. # 2. Creating a new pool based on the vdevs should work. # 3. Creating a pool with a file based vdev that is too small should fail. # verify_runnable "global" function cleanup { typeset pool="" poolexists $TESTPOOL1 && destroy_pool $TESTPOOL1 poolexists $TESTPOOL && destroy_pool $TESTPOOL [[ -d $TESTDIR ]] && log_must rm -rf $TESTDIR partition_disk $SIZE $disk 6 } log_assert "Storage pools with 16 file based vdevs can be created." log_onexit cleanup disk=${DISKS%% *} create_pool $TESTPOOL $disk log_must zfs create -o mountpoint=$TESTDIR $TESTPOOL/$TESTFS vdevs_list=$(echo $TESTDIR/file.{01..16}) log_must truncate -s $MINVDEVSIZE $vdevs_list create_pool "$TESTPOOL1" $vdevs_list log_must vdevs_in_pool "$TESTPOOL1" "$vdevs_list" if poolexists $TESTPOOL1; then destroy_pool $TESTPOOL1 else log_fail "Creating pool with large numbers of file-vdevs failed." fi log_must mkfile 32m $TESTDIR/broken_file vdevs_list="$vdevs_list $TESTDIR/broken_file" log_mustnot zpool create -f $TESTPOOL1 $vdevs_list log_pass "Storage pools with many file based vdevs can be created." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/setup.ksh0000644000000000000000000000007313607166133030177 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.91672893 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/setup.ksh0000755016037001603700000000312513607166133030201 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib verify_runnable "global" if ! $(is_physical_device $DISKS) ; then log_unsupported "This directory cannot be run on raw files." fi if [[ -n $DISK ]]; then # # Use 'zpool create' to clean up the information in # in the given disk to avoid slice overlapping. # cleanup_devices $DISK partition_disk $((($MINVDEVSIZE / (1024 * 1024)) * 2))m $DISK 7 else for disk in `echo $DISKSARRAY`; do cleanup_devices $disk partition_disk $((($MINVDEVSIZE / (1024 * 1024)) * 2))m $disk 7 done fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030467 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.918728994 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/cleanup.ksh0000755016037001603700000000221313607166133030465 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib clean_blockfile "$TESTDIR $TESTDIR0 $TESTDIR1" cleanup_devices $DISKS log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_003_0000644000000000000000000000007313607166133031462 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.92572922 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_003_pos.ksh0000755016037001603700000000554013607166133032775 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create -n ...' can display the configuration without # actually creating the pool. # # STRATEGY: # 1. Create storage pool with -n option; this should only work when valid # properties are specified on the command line # 2. Verify the pool has not been actually created # verify_runnable "global" function cleanup { [[ -e $tmpfile ]] && log_must rm -f $tmpfile } tmpfile="$TEST_BASE_DIR/zpool_create_003.tmp$$" log_assert "'zpool create -n ...' can display the configuration" \ "without actually creating the pool." log_onexit cleanup if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi DISK=${DISKS%% *} if is_mpath_device $DISK; then partition_disk $SIZE $disk 1 fi typeset vspec="${disk}${SLICE_PREFIX}${SLICE0}" typeset goodprops=('' '-o comment=text' '-O checksum=on' '-O ns:prop=value') typeset badprops=('-o ashift=9999' '-O doesnotexist=on' '-O volsize=10M') # Verify zpool create -n with valid pool-level and fs-level options for prop in "${goodprops[@]}" do # # Make sure disk is clean before we use it # create_pool $TESTPOOL $vspec > $tmpfile destroy_pool $TESTPOOL log_must eval "zpool create -n $prop $TESTPOOL $vspec > $tmpfile" poolexists $TESTPOOL && \ log_fail "'zpool create -n ...' fail." str="would create '$TESTPOOL' with the following layout:" grep "$str" $tmpfile >/dev/null 2>&1 || \ log_fail "'zpool create -n ...' is executed as unexpected." done # Verify zpool create -n with invalid options for prop in "${badprops[@]}" do # # Make sure disk is clean before we use it # create_pool $TESTPOOL $vspec > $tmpfile destroy_pool $TESTPOOL log_mustnot zpool create -n $prop $TESTPOOL $vspec done log_pass "'zpool create -n ...' success." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_feat0000644000000000000000000000007413607166133031741 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.978730922 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_002_pos.ksh0000755016037001603700000000404713607166133034673 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib ################################################################################ # # When using the '-d' option or specifying '-o version=X' new pools should # have all features disabled. # # 1. Create a new pool with '-d'. # 2. Verify that every feature@ property is in the 'disabled' state # 3. Destroy pool and re-create with -o version=28 # 4. Verify again. # ################################################################################ verify_runnable "global" function cleanup { datasetexists $TESTPOOL && log_must zpool destroy $TESTPOOL } function check_features { for prop in $(zpool get all $TESTPOOL | awk '$2 ~ /feature@/ { print $2 }'); do state=$(zpool list -Ho "$prop" $TESTPOOL) if [[ "$state" != "disabled" ]]; then log_fail "$prop is enabled on new pool" fi done } log_onexit cleanup log_assert "'zpool create -d' creates pools with all features disabled" log_must zpool create -f -d $TESTPOOL $DISKS check_features log_must zpool destroy -f $TESTPOOL log_must zpool create -f -o version=28 $TESTPOOL $DISKS check_features log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_encr0000644000000000000000000000007413607166133031751 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.972730728 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_encrypted.ksh0000755016037001603700000000611613607166133033607 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017, Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # 'zpool create' should create an encrypted dataset only if it has a valid # combination of encryption properties set. # # enc = encryption # loc = keylocation provided # fmt = keyformat provided # # U = unspecified # N = off # Y = on # # enc fmt loc valid notes # ------------------------------------------- # U 0 1 no no crypt specified # U 1 0 no no crypt specified # U 1 1 no no crypt specified # N 0 0 yes explicit no encryption # N 0 1 no keylocation given, but crypt off # N 1 0 no keyformat given, but crypt off # N 1 1 no keyformat given, but crypt off # Y 0 0 no no keyformat specified for new key # Y 0 1 no no keyformat specified for new key # Y 1 1 no unsupported combination of non-encryption props # Y 1 0 yes new encryption root # Y 1 1 yes new encryption root # # STRATEGY: # 1. Attempt to create a dataset using all combinations of encryption # properties # verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL } log_onexit cleanup log_assert "'zpool create' should create an encrypted dataset only if it" \ "has a valid combination of encryption properties set." log_mustnot zpool create -O keylocation=prompt $TESTPOOL $DISKS log_mustnot zpool create -O keyformat=passphrase $TESTPOOL $DISKS log_mustnot zpool create -O keyformat=passphrase -O keylocation=prompt \ $TESTPOOL $DISKS log_must zpool create -O encryption=off $TESTPOOL $DISKS log_must zpool destroy $TESTPOOL log_mustnot zpool create -O encryption=off -O keylocation=prompt \ $TESTPOOL $DISKS log_mustnot zpool create -O encryption=off -O keyformat=passphrase \ $TESTPOOL $DISKS log_mustnot zpool create -O encryption=off -O keyformat=passphrase \ -O keylocation=prompt $TESTPOOL $DISKS log_mustnot zpool create -O encryption=on $TESTPOOL $DISKS log_mustnot zpool create -O encryption=on -O keylocation=prompt \ $TESTPOOL $DISKS log_mustnot eval "echo $PASSPHRASE | zpool create -O encryption=on" \ "-O keyformat=passphrase -O keylocation=prompt" \ "-o feature@lz4_compress=disabled -O compression=lz4 $TESTPOOL $DISKS" log_must eval "echo $PASSPHRASE | zpool create -O encryption=on" \ "-O keyformat=passphrase $TESTPOOL $DISKS" log_must zpool destroy $TESTPOOL log_must eval "echo $PASSPHRASE | zpool create -O encryption=on" \ "-O keyformat=passphrase -O keylocation=prompt $TESTPOOL $DISKS" log_must zpool destroy $TESTPOOL log_pass "'zpool create' creates an encrypted dataset only if it has a" \ "valid combination of encryption properties set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_009_0000644000000000000000000000007413607166133031471 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.938729636 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_009_neg.ksh0000755016037001603700000000505213607166133032751 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # Create a pool with same devices twice or create two pools with same # devices, 'zpool create' should failed. # # STRATEGY: # 1. Loop to create the following three kinds of pools. # - Regular pool # - Mirror # - Raidz # 2. Create two pools but using the same disks, expect failed. # 3. Create one pool but using the same disks twice, expect failed. # verify_runnable "global" function cleanup { typeset dtst typeset disk for dtst in $TESTPOOL $TESTPOOL1; do poolexists $dtst && destroy_pool $dtst done for disk in $DISKS; do partition_disk $SIZE $disk 6 done } log_assert "Create a pool with same devices twice or create two pools with " \ "same devices, 'zpool create' should fail." log_onexit cleanup unset NOINUSE_CHECK typeset opt for opt in "" "mirror" "raidz" "raidz1"; do typeset disk="$DISKS" (( ${#opt} == 0 )) && disk=${DISKS%% *} typeset -i count=$(get_word_count $disk) if (( count < 2 && ${#opt} != 0 )) ; then continue fi # Create two pools but using the same disks. create_pool $TESTPOOL $opt $disk log_mustnot zpool create -f $TESTPOOL1 $opt $disk destroy_pool $TESTPOOL # Create two pools and part of the devices were overlapped create_pool $TESTPOOL $opt $disk log_mustnot zpool create -f $TESTPOOL1 $opt ${DISKS% *} destroy_pool $TESTPOOL # Create one pool but using the same disks twice. log_mustnot zpool create -f $TESTPOOL $opt $disk $disk done log_pass "Using overlapping or in-use disks to create a new pool fails as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_024_0000644000000000000000000000007413607166133031466 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.970730664 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_024_pos.ksh0000755016037001603700000000661513607166133033004 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2016, Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.cfg # # DESCRIPTION: # Many 'zpool create' and 'zpool destroy' must succeed concurrently. # # STRATEGY: # 1. Create N process each of which create/destroy a pool M times. # 2. Allow all process to run to completion. # 3. Verify all pools and their vdevs were destroyed. # verify_runnable "global" if is_32bit; then log_unsupported "Test case runs slowly on 32 bit" fi function cleanup { if [[ -n "$child_pids" ]]; then for wait_pid in $child_pids; do kill $wait_pid 2>/dev/null done fi if [[ -n "$child_pools" ]]; then for pool in $child_pools; do typeset vdev0="$TEST_BASE_DIR/$pool-vdev0.img" typeset vdev1="$TEST_BASE_DIR/$pool-vdev1.img" if poolexists $pool; then destroy_pool $pool fi rm -f $vdev0 $vdev1 done fi } log_onexit cleanup log_assert "Many 'zpool create' and 'zpool destroy' must succeed concurrently." child_pids="" child_pools="" function zpool_stress { typeset pool=$1 typeset vdev0="$TEST_BASE_DIR/$pool-vdev0.img" typeset vdev1="$TEST_BASE_DIR/$pool-vdev1.img" typeset -i iters=$2 typeset retry=10 typeset j=0 truncate -s $FILESIZE $vdev0 truncate -s $FILESIZE $vdev1 while [[ $j -lt $iters ]]; do ((j = j + 1)) sleep 1 zpool create $pool $vdev0 $vdev1 if [ $? -ne 0 ]; then return 1; fi # The 'zfs destroy' command is retried because it can # transiently return EBUSY when blkid is concurrently # probing new volumes and therefore has them open. typeset k=0; while [[ $k -lt $retry ]]; do ((k = k + 1)) zpool destroy $pool if [ $? -eq 0 ]; then break; elif [ $k -eq $retry ]; then return 1; fi sleep 3 done done rm -f $vdev0 $vdev1 return 0 } # 1. Create 128 process each of which create/destroy a pool 5 times. typeset i=0 while [[ $i -lt 128 ]]; do typeset uuid=$(uuidgen | cut -c1-13) zpool_stress $TESTPOOL-$uuid 5 & typeset pid=$! child_pids="$child_pids $pid" child_pools="$child_pools $TESTPOOL-$uuid" ((i = i + 1)) done # 2. Allow all process to run to completion. wait # 3. Verify all pools and their vdevs were destroyed. for pool in $child_pools; do typeset vdev0="$TEST_BASE_DIR/$pool-vdev0.img" typeset vdev1="$TEST_BASE_DIR/$pool-vdev1.img" if poolexists $pool; then log_fail "pool $pool exists" fi if [ -e $vdev0 ]; then log_fail "pool vdev $vdev0 exists" fi if [ -e $vdev1 ]; then log_fail "pool vdev $vdev1 exists" fi done log_pass "Many 'zpool create' and 'zpool destroy' must succeed concurrently." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_006_0000644000000000000000000000007413607166133031466 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.931729412 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_006_pos.ksh0000755016037001603700000001122713607166133032777 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # Verify zpool create succeed with multiple keywords combination. # # STRATEGY: # 1. Create base filesystem to hold virtual disk files. # 2. Create several files == $MINVDEVSIZE. # 3. Verify 'zpool create' succeed with valid keywords combination. # verify_runnable "global" function cleanup { datasetexists $TESTPOOL1 && destroy_pool $TESTPOOL1 datasetexists $TESTPOOL && destroy_pool $TESTPOOL } log_assert "Verify 'zpool create' succeed with keywords combination." log_onexit cleanup create_pool $TESTPOOL $DISKS mntpnt=$(get_prop mountpoint $TESTPOOL) typeset -i i=0 while ((i < 10)); do log_must truncate -s $MINVDEVSIZE $mntpnt/vdev$i eval vdev$i=$mntpnt/vdev$i ((i += 1)) done set -A valid_args \ "mirror $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 $vdev5" \ "mirror $vdev0 $vdev1 mirror $vdev2 $vdev3 mirror $vdev4 $vdev5" \ "mirror $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 $vdev5 \ spare $vdev6" \ "mirror $vdev0 $vdev1 mirror $vdev2 $vdev3 mirror $vdev4 $vdev5 \ spare $vdev6 $vdev7" \ "mirror $vdev0 $vdev1 spare $vdev2 mirror $vdev3 $vdev4" \ "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3" \ "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3 $vdev4" \ "mirror $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5" \ "mirror $vdev0 $vdev1 $vdev2 $vdev3 \ raidz3 $vdev4 $vdev5 $vdev6 $vdev7" \ "raidz $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4" \ "raidz $vdev0 $vdev1 $vdev2 raidz1 $vdev3 $vdev4 $vdev5" \ "raidz $vdev0 $vdev1 raidz1 $vdev2 $vdev3 raidz $vdev4 $vdev5" \ "raidz $vdev0 $vdev1 $vdev2 raidz1 $vdev3 $vdev4 $vdev5 \ spare $vdev6" \ "raidz $vdev0 $vdev1 raidz1 $vdev2 $vdev3 raidz $vdev4 $vdev5 \ spare $vdev6 $vdev7" \ "raidz $vdev0 $vdev1 spare $vdev2 raidz $vdev3 $vdev4" \ "raidz2 $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 $vdev5" \ "raidz2 $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5" \ "raidz2 $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5 \ raidz2 $vdev6 $vdev7 $vdev8" \ "raidz2 $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5 \ spare $vdev6" \ "raidz2 $vdev0 $vdev1 $vdev2 raidz2 $vdev3 $vdev4 $vdev5 \ raidz2 $vdev6 $vdev7 $vdev8 spare $vdev9" \ "raidz2 $vdev0 $vdev1 $vdev2 spare $vdev3 raidz2 $vdev4 $vdev5 $vdev6" \ "raidz3 $vdev0 $vdev1 $vdev2 $vdev3 \ mirror $vdev4 $vdev5 $vdev6 $vdev7" \ "spare $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 raidz $vdev5 $vdev6" set -A forced_args \ "$vdev0 raidz $vdev1 $vdev2 raidz1 $vdev3 $vdev4 $vdev5" \ "$vdev0 raidz2 $vdev1 $vdev2 $vdev3 raidz2 $vdev4 $vdev5 $vdev6" \ "$vdev0 mirror $vdev1 $vdev2 mirror $vdev3 $vdev4" \ "$vdev0 mirror $vdev1 $vdev2 raidz $vdev3 $vdev4 \ raidz2 $vdev5 $vdev6 $vdev7 spare $vdev8" \ "$vdev0 mirror $vdev1 $vdev2 spare $vdev3 raidz $vdev4 $vdev5" \ "raidz $vdev0 $vdev1 raidz2 $vdev2 $vdev3 $vdev4" \ "raidz $vdev0 $vdev1 raidz2 $vdev2 $vdev3 $vdev4 spare $vdev5" \ "raidz $vdev0 $vdev1 spare $vdev2 raidz2 $vdev3 $vdev4 $vdev5" \ "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3 raidz2 $vdev4 $vdev5 $vdev6" \ "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3 \ raidz2 $vdev4 $vdev5 $vdev6 spare $vdev7" \ "mirror $vdev0 $vdev1 raidz $vdev2 $vdev3 \ spare $vdev4 raidz2 $vdev5 $vdev6 $vdev7" \ "spare $vdev0 $vdev1 $vdev2 mirror $vdev3 $vdev4 \ raidz2 $vdev5 $vdev6 $vdev7" i=0 while ((i < ${#valid_args[@]})); do log_must zpool create $TESTPOOL1 ${valid_args[$i]} log_must zpool destroy -f $TESTPOOL1 ((i += 1)) done i=0 while ((i < ${#forced_args[@]})); do log_mustnot zpool create $TESTPOOL1 ${forced_args[$i]} log_must zpool create -f $TESTPOOL1 ${forced_args[$i]} log_must zpool destroy -f $TESTPOOL1 ((i += 1)) done log_pass "'zpool create' succeed with keywords combination." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_017_0000644000000000000000000000007313607166133031467 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.95473015 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_017_neg.ksh0000755016037001603700000000410713607166133032750 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # # DESCRIPTION: # 'zpool create' will fail with mountpoint exists and is not empty. # # # STRATEGY: # 1. Prepare the mountpoint put some stuff into it. # 2. Verify 'zpool create' over that mountpoint fails. # verify_runnable "global" function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi if [[ -d $TESTDIR ]]; then log_must rm -rf $TESTDIR fi } if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi typeset pool_dev=${disk}${SLICE_PREFIX}${SLICE0} log_assert "'zpool create' should fail with mountpoint exists and not empty." log_onexit cleanup if [[ ! -d $TESTDIR ]]; then log_must mkdir -p $TESTDIR fi typeset -i i=0 while (( i < 2 )); do log_must rm -rf $TESTDIR/* if (( i == 0 )); then log_must mkdir $TESTDIR/testdir else log_must touch $TESTDIR/testfile fi log_mustnot zpool create -m $TESTDIR -f $TESTPOOL $pool_dev log_mustnot poolexists $TESTPOOL (( i = i + 1 )) done log_pass "'zpool create' fail as expected with mountpoint exists and not empty." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/create-o_ashift.k0000644000000000000000000000007313607166133031541 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.98773121 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/create-o_ashift.ksh0000755016037001603700000000723613607166133032105 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2016, loli10K. All rights reserved. # Copyright (c) 2017 Datto Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create -o ashift= ...' should work with different ashift # values. # # STRATEGY: # 1. Create various pools with different ashift values. # 2. Verify -o ashift= works only with allowed values (9-16). # Also verify that the lowest number of uberblocks in a label is 16 and # smallest uberblock size is 8K even with higher ashift values. # verify_runnable "global" function cleanup { destroy_pool $TESTPOOL log_must rm -f $disk } # # Fill the uberblock ring in every label: we do this by committing # TXGs to the provided until every slot contains a valid uberblock. # NOTE: We use 'zpool sync' here because we can't force it via sync(1) like on # illumos # function write_device_uberblocks # { typeset device=$1 typeset pool=$2 while [ "$(zdb -quuul $device | grep -c 'invalid')" -ne 0 ] do sync_pool $pool true done } # # Verify every label on contains (valid) uberblocks # function verify_device_uberblocks # { typeset device=$1 typeset ubcount=$2 zdb -quuul $device | egrep '^(\s+)?Uberblock' | awk -v ubcount=$ubcount 'BEGIN { count=0 } { uberblocks[$0]++; } END { for (i in uberblocks) { if (i ~ /invalid/) { continue; } if (uberblocks[i] != 4) { exit 1; } count++; } if (count != ubcount) { exit 1; } }' return $? } log_assert "zpool create -o ashift=' works with different ashift values" log_onexit cleanup disk=$TEST_BASE_DIR/$FILEDISK0 log_must mkfile $SIZE $disk typeset ashifts=("9" "10" "11" "12" "13" "14" "15" "16") # since Illumos 4958 the largest uberblock is 8K so we have at least of 16/label typeset ubcount=("128" "128" "64" "32" "16" "16" "16" "16") typeset -i i=0; while [ $i -lt "${#ashifts[@]}" ] do typeset ashift=${ashifts[$i]} log_must zpool create -o ashift=$ashift $TESTPOOL $disk typeset pprop=$(get_pool_prop ashift $TESTPOOL) verify_ashift $disk $ashift if [[ $? -ne 0 || "$pprop" != "$ashift" ]] then log_fail "Pool was created without setting ashift value to "\ "$ashift (current = $pprop)" fi write_device_uberblocks $disk $TESTPOOL verify_device_uberblocks $disk ${ubcount[$i]} if [[ $? -ne 0 ]] then log_fail "Pool was created with unexpected number of uberblocks" fi # clean things for the next run log_must zpool destroy $TESTPOOL log_must zpool labelclear $disk log_must eval "verify_device_uberblocks $disk 0" ((i = i + 1)) done typeset badvals=("off" "on" "1" "8" "17" "1b" "ff" "-") for badval in ${badvals[@]} do log_mustnot zpool create -o ashift="$badval" $TESTPOOL $disk done log_pass "zpool create -o ashift=' works with different ashift values" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_014_0000644000000000000000000000007413607166147031472 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.947729926 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_014_neg.ksh0000755016037001603700000000445613607166147032761 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # # DESCRIPTION: # 'zpool create' will fail with ordinary file in swap # # STRATEGY: # 1. Create a regular file on top of UFS-zvol filesystem # 2. Try to create a new pool with regular file in swap # 3. Verify the creation is failed. # verify_runnable "global" function cleanup { if datasetexists $vol_name; then swap_cleanup $TMP_FILE rm -f $TMP_FILE log_must umount $mntp zfs destroy $vol_name fi if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi } log_assert "'zpool create' should fail with regular file in swap." log_onexit cleanup if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi if is_linux; then set -A options "" "-f" else set -A options "-n" "" "-f" fi typeset pool_dev=${disk}${SLICE_PREFIX}${SLICE0} typeset vol_name=$TESTPOOL/$TESTVOL typeset mntp=/mnt typeset TMP_FILE=$mntp/tmpfile.$$ create_pool $TESTPOOL $pool_dev log_must zfs create -V 100m $vol_name block_device_wait log_must echo "y" | newfs ${ZVOL_DEVDIR}/$vol_name > /dev/null 2>&1 log_must mount ${ZVOL_DEVDIR}/$vol_name $mntp log_must mkfile 50m $TMP_FILE swap_setup $TMP_FILE for opt in options; do log_mustnot zpool create $opt $TESTPOOL $TMP_FILE done log_pass "'zpool create' passed as expected with inapplicable scenario." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_feat0000644000000000000000000000007413607166133031741 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.981731018 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_003_pos.ksh0000755016037001603700000000433113607166133034670 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib ################################################################################ # # When using the '-d' option with '-o feature@XXX=enabled' only the specified # feature is enabled. # # 1. Create a new pool with '-d' and '-o feature@async_destroy=enabled'. # async_destroy does not depend on anything so it should be the only # feature that gets enabled. # 2. Verify that every feature@ property except feature@async_destroy is in # the 'disabled' state # ################################################################################ verify_runnable "global" function cleanup { datasetexists $TESTPOOL && log_must zpool destroy $TESTPOOL } log_onexit cleanup log_assert "'zpool create -d -o feature@async_destroy=enabled' only " \ "enables async_destroy" log_must zpool create -f -d -o feature@async_destroy=enabled $TESTPOOL $DISKS state=$(zpool list -Ho feature@async_destroy $TESTPOOL) if [[ "$state" != "enabled" ]]; then log_fail "async_destroy has state $state" fi for prop in $(zpool get all $TESTPOOL | awk '$2 ~ /feature@/ { print $2 }'); do state=$(zpool list -Ho "$prop" $TESTPOOL) if [[ "$prop" != "feature@async_destroy" \ && "$state" != "disabled" ]]; then log_fail "$prop is enabled on new pool" fi done log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_001_0000644000000000000000000000007413607166133031461 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.920729058 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_001_pos.ksh0000755016037001603700000001032313607166133032766 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2015 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create ...' can successfully create a # new pool with a name in ZFS namespace. # # STRATEGY: # 1. Create storage pools with a name in ZFS namespace with different # vdev specs. # 2. Verify the pool created successfully # verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL clean_blockfile "$TESTDIR0 $TESTDIR1" if [[ -n $DISK ]]; then partition_disk $((($MINVDEVSIZE / (1024 * 1024)) * 2))m $DISK 7 else typeset disk="" for disk in $DISK0 $DISK1; do partition_disk \ $((($MINVDEVSIZE / (1024 * 1024)) * 2))m $disk 7 done fi } log_assert "'zpool create ...' can successfully create" \ "a new pool with a name in ZFS namespace." log_onexit cleanup set -A keywords "" "mirror" "raidz" "raidz1" case $DISK_ARRAY_NUM in 0|1) typeset disk="" if (( $DISK_ARRAY_NUM == 0 )); then disk=$DISK else disk=$DISK0 fi create_blockfile $FILESIZE $TESTDIR0/$FILEDISK0 \ ${disk}${SLICE_PREFIX}${SLICE5} create_blockfile $FILESIZE $TESTDIR1/$FILEDISK1 \ ${disk}${SLICE_PREFIX}${SLICE6} pooldevs="${disk}${SLICE_PREFIX}${SLICE0} \ ${DEV_DSKDIR}/${disk}${SLICE_PREFIX}${SLICE0} \ \"${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1}\" \ $TESTDIR0/$FILEDISK0" raidzdevs="\"${DEV_DSKDIR}/${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1}\" \ \"${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1} \ ${disk}${SLICE_PREFIX}${SLICE3}\" \ \"${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1} \ ${disk}${SLICE_PREFIX}${SLICE3} \ ${disk}${SLICE_PREFIX}${SLICE4}\"\ \"$TESTDIR0/$FILEDISK0 $TESTDIR1/$FILEDISK1\"" mirrordevs=$raidzdevs ;; 2|*) create_blockfile $FILESIZE $TESTDIR0/$FILEDISK0 \ ${DISK0}${SLICE_PREFIX}${SLICE5} create_blockfile $FILESIZE $TESTDIR1/$FILEDISK1 \ ${DISK1}${SLICE_PREFIX}${SLICE5} pooldevs="${DISK0}${SLICE_PREFIX}${SLICE0} \ \"${DEV_DSKDIR}/${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK1}${SLICE_PREFIX}${SLICE0}\" \ \"${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK0}${SLICE_PREFIX}${SLICE1} \ ${DISK1}${SLICE_PREFIX}${SLICE1}\"\ \"${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK1}${SLICE_PREFIX}${SLICE0} \ ${DISK0}${SLICE_PREFIX}${SLICE1}\ ${DISK1}${SLICE_PREFIX}${SLICE1}\" \ \"$TESTDIR0/$FILEDISK0 $TESTDIR1/$FILEDISK1\"" raidzdevs="\"${DEV_DSKDIR}/${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK1}${SLICE_PREFIX}${SLICE0}\" \ \"${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK0}${SLICE_PREFIX}${SLICE1} \ ${DISK1}${SLICE_PREFIX}${SLICE1}\" \ \"${DISK0}${SLICE_PREFIX}${SLICE0} \ ${DISK1}${SLICE_PREFIX}${SLICE0} \ ${DISK0}${SLICE_PREFIX}${SLICE1} \ ${DISK1}${SLICE_PREFIX}${SLICE1}\" \ \"$TESTDIR0/$FILEDISK0 $TESTDIR1/$FILEDISK1\"" mirrordevs=$raidzdevs ;; esac typeset -i i=0 while (( $i < ${#keywords[*]} )); do case ${keywords[i]} in "") create_pool_test "$TESTPOOL" "${keywords[i]}" "$pooldevs";; mirror) create_pool_test "$TESTPOOL" "${keywords[i]}" "$mirrordevs";; raidz|raidz1) create_pool_test "$TESTPOOL" "${keywords[i]}" "$raidzdevs" ;; esac (( i = i+1 )) done log_pass "'zpool create ...' success." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create.shli0000644000000000000000000000007413612141517031673 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.914728866 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create.shlib0000644016037001603700000000677513612141517032051 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.cfg # # Given a pool vdevs list, create the pool,verify the created pool, # and destroy the pool # $1, pool name # $2, pool type, mirror, raidz, or none # $3, vdevs list # function create_pool_test { typeset pool=$1 typeset keywd=$2 typeset vdevs eval "typeset -a diskarray=($3)" for vdevs in "${diskarray[@]}"; do create_pool $pool $keywd $vdevs log_must poolexists $pool destroy_pool $pool done } # # Create a ufs|ext file system and make a file within the file # system for storage pool vdev # $1, file size # $2, file name # $3, disk name to create ufs|ext file system # function create_blockfile { typeset size=$1 typeset file=$2 typeset disk=$3 typeset dir=`dirname $file` if [[ -d $dir ]]; then ismounted $dir $NEWFS_DEFAULT_FS (( $? == 0 )) && \ log_must umount -f $dir else log_must mkdir -p $dir fi echo "y" | newfs ${DEV_RDSKDIR}/$disk >/dev/null 2>&1 (( $? != 0 )) && log_fail "Create file system fail." log_must mount ${DEV_DSKDIR}/$disk $dir log_must truncate -s $size $file } # # Umount the ufs|ext filesystem and remove the mountpoint # $1, the mount point # function clean_blockfile { typeset dirs=$1 for dir in $dirs; do if [[ -d $dir ]]; then if is_linux; then if ismounted $dir ext2; then typeset dev=$(df -lht ext2 | \ grep "$dir" | \ awk '{print $1}') log_must umount -f $dir create_pool ${TESTPOOL}.tmp $dev destroy_pool ${TESTPOOL}.tmp fi else if ismounted $dir ufs; then typeset dev=$(df -lhF ufs | \ grep "$dir" | \ awk '{print $1}') log_must umount -f $dir create_pool ${TESTPOOL}.tmp $dev destroy_pool ${TESTPOOL}.tmp fi fi log_must rm -rf $dir fi done } # # Find the storage device in /etc/vfstab # function find_vfstab_dev { typeset vfstabdev typeset vfstabdevs="" typeset line if is_linux; then vfstab="/etc/fstab" tmpfile="$TEST_BASE_DIR/fstab.tmp" else vfstab="/etc/vfstab" tmpfile="$TEST_BASE_DIR/vfstab.tmp" fi cat $vfstab | grep "^${DEV_DSKDIR}" >$tmpfile while read -r line do vfstabdev=`echo "$line" | awk '{print $1}'` vfstabdev=${vfstabdev%%:} vfstabdevs="$vfstabdev $vfstabdevs" done <$tmpfile rm -f $tmpfile echo $vfstabdevs } # # Save the system current dump device configuration # function save_dump_dev { typeset dumpdev if is_linux; then dumpdev="" else typeset fnd="Dump device" dumpdev=`dumpadm | grep "$fnd" | cut -f2 -d : | \ awk '{print $1}'` fi echo $dumpdev } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_002_0000644000000000000000000000007413607166147031467 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.922729123 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_002_pos.ksh0000755016037001603700000000776113607166147033010 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create -f ...' can successfully create a # new pool in some cases. # # STRATEGY: # 1. Prepare the scenarios for '-f' option # 2. Use -f to override the devices to create new pools # 3. Verify the pool created successfully # verify_runnable "global" function cleanup { for pool in $TESTPOOL $TESTPOOL1 $TESTPOOL2 $TESTPOOL3 $TESTPOOL4 \ $TESTPOOL5 $TESTPOOL6 do destroy_pool $pool done clean_blockfile "$TESTDIR0 $TESTDIR1" for file in $FILEDISK0 $FILEDISK1 $FILEDISK2 do if [[ -e $TEST_BASE_DIR/$file ]]; then rm -f $TEST_BASE_DIR/$file fi done partition_disk $SIZE $disk 6 } log_onexit cleanup log_assert "'zpool create -f ...' can successfully create" \ "a new pool in some cases." if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi create_pool "$TESTPOOL" "${disk}${SLICE_PREFIX}${SLICE0}" log_must echo "y" | newfs \ ${DEV_RDSKDIR}/${disk}${SLICE_PREFIX}${SLICE1} >/dev/null 2>&1 create_blockfile $FILESIZE $TESTDIR0/$FILEDISK0 ${disk}${SLICE_PREFIX}${SLICE4} create_blockfile $FILESIZE1 $TESTDIR1/$FILEDISK1 ${disk}${SLICE_PREFIX}${SLICE5} log_must truncate -s $SIZE $TEST_BASE_DIR/$FILEDISK0 log_must truncate -s $SIZE $TEST_BASE_DIR/$FILEDISK1 log_must truncate -s $SIZE $TEST_BASE_DIR/$FILEDISK2 unset NOINUSE_CHECK log_must zpool export $TESTPOOL log_note "'zpool create' without '-f' will fail " \ "while device is belong to an exported pool." log_mustnot zpool create "$TESTPOOL1" "${disk}${SLICE_PREFIX}${SLICE0}" create_pool "$TESTPOOL1" "${disk}${SLICE_PREFIX}${SLICE0}" log_must poolexists $TESTPOOL1 log_note "'zpool create' without '-f' will fail " \ "while device is using by an ufs filesystem." log_mustnot zpool create "$TESTPOOL2" "${disk}${SLICE_PREFIX}${SLICE1}" create_pool "$TESTPOOL2" "${disk}${SLICE_PREFIX}${SLICE1}" log_must poolexists $TESTPOOL2 log_note "'zpool create' mirror without '-f' will fail " \ "while devices have different size." log_mustnot zpool create "$TESTPOOL3" "mirror" $TESTDIR0/$FILEDISK0 \ $TESTDIR1/$FILEDISK1 create_pool "$TESTPOOL3" "mirror" $TESTDIR0/$FILEDISK0 $TESTDIR1/$FILEDISK1 log_must poolexists $TESTPOOL3 log_note "'zpool create' mirror without '-f' will fail " \ "while devices are of different types." log_mustnot zpool create "$TESTPOOL4" "mirror" $TEST_BASE_DIR/$FILEDISK0 \ ${disk}${SLICE_PREFIX}${SLICE3} create_pool "$TESTPOOL4" "mirror" \ $TEST_BASE_DIR/$FILEDISK0 ${disk}${SLICE_PREFIX}${SLICE3} log_must poolexists $TESTPOOL4 log_note "'zpool create' without '-f' will fail " \ "while device is part of potentially active pool." create_pool "$TESTPOOL5" "mirror" $TEST_BASE_DIR/$FILEDISK1 \ $TEST_BASE_DIR/$FILEDISK2 log_must zpool offline $TESTPOOL5 $TEST_BASE_DIR/$FILEDISK2 log_must zpool export $TESTPOOL5 log_mustnot zpool create "$TESTPOOL6" $TEST_BASE_DIR/$FILEDISK2 create_pool $TESTPOOL6 $TEST_BASE_DIR/$FILEDISK2 log_must poolexists $TESTPOOL6 log_pass "'zpool create -f ...' success." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_007_0000644000000000000000000000007413607166133031467 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.933729476 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_007_neg.ksh0000755016037001603700000000565413607166133032757 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create' should return an error with badly formed parameters. # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute 'zpool create' # 3. Verify an error is returned. # verify_runnable "global" if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi set -A args "" "-?" "-n" "-f" "-nf" "-fn" "-f -n" "--f" "-e" "-s" \ "-m" "-R" "-m -R" "-Rm" "-mR" "-m $TESTDIR $TESTPOOL" \ "-R $TESTDIR $TESTPOOL" "-m nodir $TESTPOOL $disk" \ "-R nodir $TESTPOOL $disk" "-m nodir -R nodir $TESTPOOL $disk" \ "-R nodir -m nodir $TESTPOOL $disk" "-R $TESTDIR -m nodir $TESTPOOL $disk" \ "-R nodir -m $TESTDIR $TESTPOOL $disk" \ "-blah" "$TESTPOOL" "$TESTPOOL blah" "$TESTPOOL c?t0d0" \ "$TESTPOOL c0txd0" "$TESTPOOL c0t0dx" "$TESTPOOL cxtxdx" \ "$TESTPOOL mirror" "$TESTPOOL raidz" "$TESTPOOL mirror raidz" \ "$TESTPOOL raidz1" "$TESTPOOL mirror raidz1" \ "$TESTPOOL mirror c?t?d?" "$TESTPOOL mirror $disk c0t1d?" \ "$TESTPOOL RAIDZ ${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1}" \ "$TESTPOOL ${disk}${SLICE_PREFIX}${SLICE0} \ log ${disk}${SLICE_PREFIX}${SLICE1} \ log ${disk}${SLICE_PREFIX}${SLICE3}" \ "$TESTPOOL ${disk}${SLICE_PREFIX}${SLICE0} \ spare ${disk}${SLICE_PREFIX}${SLICE1} \ spare ${disk}${SLICE_PREFIX}${SLICE3}" \ "$TESTPOOL RAIDZ1 ${disk}${SLICE_PREFIX}${SLICE0} \ ${disk}${SLICE_PREFIX}${SLICE1}" \ "$TESTPOOL MIRROR $disk" "$TESTPOOL raidz $disk" \ "$TESTPOOL raidz1 $disk" \ "1tank $disk" "1234 $disk" "?tank $disk" \ "tan%k $disk" "ta@# $disk" "tan+k $disk" \ "$BYND_MAX_NAME $disk" log_assert "'zpool create' should return an error with badly-formed parameters." log_onexit default_cleanup_noexit typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool create ${args[i]} ((i = i + 1)) done log_pass "'zpool create' with badly formed parameters failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_019_0000644000000000000000000000007313607166133031471 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.95973031 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_019_pos.ksh0000755016037001603700000000375313607166133033010 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # zpool create cannot create pools specifying readonly properties # # STRATEGY: # 1. Attempt to create a pool, specifying each readonly property in turn # 2. Verify the pool was not created # function cleanup { if poolexists $TESTPOOL ; then destroy_pool $TESTPOOL fi } log_onexit cleanup log_assert "zpool create cannot create pools specifying readonly properties" if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi set -A props "available" "capacity" "guid" "health" "size" "used" set -A vals "100" "10" "12345" "HEALTHY" "10" "10" typeset -i i=0; while [ $i -lt "${#props[@]}" ] do # try to set each property in the prop list with it's corresponding val log_mustnot zpool create -o ${props[$i]}=${vals[$i]} $TESTPOOL $disk if poolexists $TESTPOOL then log_fail "$TESTPOOL was created when setting ${props[$i]}!" fi i=$(( $i + 1)) done log_pass "zpool create cannot create pools specifying readonly properties" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_012_0000644000000000000000000000007413607166133031463 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.945729862 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_012_neg.ksh0000755016037001603700000000342213607166133032742 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # # DESCRIPTION: # 'zpool create' will fail with formal disk slice in swap # # # STRATEGY: # 1. Get all the disk devices in swap # 2. For each device, try to create a new pool with this device # 3. Verify the creation is failed. # verify_runnable "global" function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi } if is_linux; then typeset swap_disks=`swapon -s | grep "/dev" | awk '{print $1}'` else typeset swap_disks=`swap -l | grep "c[0-9].*d[0-9].*s[0-9]" | \ awk '{print $1}'` fi log_assert "'zpool create' should fail with disk slice in swap." log_onexit cleanup for sdisk in $swap_disks; do for opt in "-n" "" "-f"; do log_mustnot zpool create $opt $TESTPOOL $sdisk done done log_pass "'zpool create' passed as expected with inapplicable scenario." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_020_0000644000000000000000000000007413607166133031462 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.961730376 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_020_pos.ksh0000755016037001603700000000572413607166133033000 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.cfg # # DESCRIPTION: # # zpool create -R works as expected # # STRATEGY: # 1. Create a -R altroot pool # 2. Verify the pool is mounted at the correct location # 3. Verify that cachefile=none for the pool # 4. Verify that root= for the pool # 5. Verify that no reference to the pool is found in /etc/zfs/zpool.cache function cleanup { if poolexists $TESTPOOL ; then destroy_pool $TESTPOOL fi if [ -d /${TESTPOOL}.root ] then log_must rmdir /${TESTPOOL}.root fi [[ -e $values ]] && log_must rm -f $values } log_onexit cleanup log_assert "zpool create -R works as expected" typeset values=$TEST_BASE_DIR/values.$$ if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi log_must rm -f /etc/zfs/zpool.cache log_must mkdir /${TESTPOOL}.root log_must zpool create -R /${TESTPOOL}.root $TESTPOOL $disk if [ ! -d /${TESTPOOL}.root ] then log_fail "Mountpoint was not create when using zpool with -R flag!" fi FS=$(zfs list $TESTPOOL) if [ -z "$FS" ] then log_fail "Mounted filesystem at /${TESTPOOL}.root isn't ZFS!" fi log_must zpool get all $TESTPOOL zpool get all $TESTPOOL > $values # check for the cachefile property, verifying that it's set to 'none' grep "$TESTPOOL[ ]*cachefile[ ]*none" $values > /dev/null 2>&1 if [ $? -ne 0 ] then log_fail "zpool property \'cachefile\' was not set to \'none\'." fi # check that the root = /mountpoint property is set correctly grep "$TESTPOOL[ ]*altroot[ ]*/${TESTPOOL}.root" $values > /dev/null 2>&1 if [ $? -ne 0 ] then log_fail "zpool property root was not found in pool output." fi rm $values # finally, check that the pool has no reference in /etc/zfs/zpool.cache if [[ -f /etc/zfs/zpool.cache ]] ; then REF=$(strings /etc/zfs/zpool.cache | grep ${TESTPOOL}) if [ ! -z "$REF" ] then strings /etc/zfs/zpool.cache log_fail "/etc/zfs/zpool.cache appears to have a reference to $TESTPOOL" fi fi log_pass "zpool create -R works as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_feat0000644000000000000000000000007413607166133031741 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.985731146 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_features_005_pos.ksh0000755016037001603700000000524513607166133034677 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2012 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib ################################################################################ # # Specifically disabling a feature, all other features should be enabled. # # 1. Loop through all existing features: # a. Create a new pool with '-o feature@XXX=disabled'. # b. Verify that every other feature is 'enabled' or 'active'. # ################################################################################ verify_runnable "global" function cleanup { datasetexists $TESTPOOL && log_must zpool destroy $TESTPOOL } function check_features { typeset feature="${1}" zpool get all ${TESTPOOL} | grep feature@ | while read line; do set -- $(echo "${line}") if [[ "feature@${feature}" == "${2}" ]]; then # Failure passed feature must be disabled. if [[ "${3}" != "disabled" ]]; then return 1; fi else # Failure other features must be enabled or active. if [[ "${3}" != "enabled" && "${3}" != "active" ]]; then return 2; fi fi done # All features enabled or active except the expected one. return 0 } log_onexit cleanup # Several representative features are tested to keep the test time short. # The features 'extensible_dataset' and 'enabled_txg' are intentionally # excluded because other features depend on them. set -A features \ "hole_birth" \ "large_blocks" \ "large_dnode" \ "userobj_accounting" typeset -i i=0 while (( $i < ${#features[*]} )); do log_assert "'zpool create' creates pools with ${features[i]} disabled" log_must zpool create -f -o "feature@${features[i]}=disabled" \ $TESTPOOL $DISKS log_must check_features "${features[i]}" log_must zpool destroy -f $TESTPOOL (( i = i+1 )) done log_pass "'zpool create -o feature@feature=disabled' disables features" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_cryp0000644000000000000000000000007413607166133031777 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.974730792 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_crypt_combos.ksh0000755016037001603700000000472113607166133034315 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017, Datto, Inc. All rights reserved. # Copyright (c) 2019, DilOS # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib # # DESCRIPTION: # 'zpool create' should create encrypted pools when using a valid encryption # algorithm, key format, key location, and key. # # STRATEGY: # 1. Create a pool for each combination of encryption type and key format # 2. Verify that each filesystem has the correct properties set # verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL } log_onexit cleanup set -A ENCRYPTION_ALGS "encryption=on" \ "encryption=aes-128-ccm" \ "encryption=aes-192-ccm" \ "encryption=aes-256-ccm" \ "encryption=aes-128-gcm" \ "encryption=aes-192-gcm" \ "encryption=aes-256-gcm" set -A ENCRYPTION_PROPS "encryption=aes-256-ccm" \ "encryption=aes-128-ccm" \ "encryption=aes-192-ccm" \ "encryption=aes-256-ccm" \ "encryption=aes-128-gcm" \ "encryption=aes-192-gcm" \ "encryption=aes-256-gcm" set -A KEYFORMATS "keyformat=raw" \ "keyformat=hex" \ "keyformat=passphrase" set -A USER_KEYS "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz" \ "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" \ "abcdefgh" log_assert "'zpool create' should create encrypted pools when using a valid" \ "encryption algorithm, key format, key location, and key." typeset -i i=0 while (( i < ${#ENCRYPTION_ALGS[*]} )); do typeset -i j=0 while (( j < ${#KEYFORMATS[*]} )); do log_must eval "printf '%s' ${USER_KEYS[j]} | zpool create" \ "-O ${ENCRYPTION_ALGS[i]} -O ${KEYFORMATS[j]}" \ "$TESTPOOL $DISKS" propertycheck $TESTPOOL ${ENCRYPTION_PROPS[i]} || \ log_fail "failed to set ${ENCRYPTION_ALGS[i]}" propertycheck $TESTPOOL ${KEYFORMATS[j]} || \ log_fail "failed to set ${KEYFORMATS[j]}" log_must zpool destroy $TESTPOOL (( j = j + 1 )) done (( i = i + 1 )) done log_pass "'zpool create' creates encrypted pools when using a valid" \ "encryption algorithm, key format, key location, and key." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_018_0000644000000000000000000000007413607166133031471 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.956730214 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_018_pos.ksh0000755016037001603700000000547013607166133033005 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # # zpool create can create pools with specified properties # # STRATEGY: # 1. Create a pool with all editable properties # 2. Verify those properties are set # 3. Create a pool with two properties set # 4. Verify both properties are set correctly # function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL [[ -f $CPATH ]] && log_must rm $CPATH } log_onexit cleanup log_assert "zpool create can create pools with specified properties" if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi # # we don't include "root" property in this list, as it requires both "cachefile" # and "root" to be set at the same time. A test for this is included in # ../../root. # typeset props=("autoreplace" "delegation" "cachefile" "version" "autoexpand") typeset vals=("off" "off" "$CPATH" "3" "on") typeset -i i=0; while [ $i -lt "${#props[@]}" ] do log_must zpool create -o ${props[$i]}=${vals[$i]} $TESTPOOL $disk RESULT=$(get_pool_prop ${props[$i]} $TESTPOOL) if [[ $RESULT != ${vals[$i]} ]] then zpool get all $TESTPOOL log_fail "Pool was created without setting the ${props[$i]} " \ "property" fi log_must zpool destroy $TESTPOOL ((i = i + 1)) done # Destroy our pool poolexists $TESTPOOL && destroy_pool $TESTPOOL # pick two properties, and verify we can create with those as well log_must zpool create -o delegation=off -o cachefile=$CPATH $TESTPOOL $disk RESULT=$(get_pool_prop delegation $TESTPOOL) if [[ $RESULT != off ]] then zpool get all $TESTPOOL log_fail "Pool created without the delegation prop." fi RESULT=$(get_pool_prop cachefile $TESTPOOL) if [[ $RESULT != $CPATH ]] then zpool get all $TESTPOOL log_fail "Pool created without the cachefile prop." fi log_pass "zpool create can create pools with specified properties" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_016_0000644000000000000000000000007413612141513031456 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.952730086 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_016_pos.ksh0000755016037001603700000000463313612141513032772 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # # DESCRIPTION: # 'zpool create' will success with no device in swap # # # STRATEGY: # 1. delete all devices in the swap # 2. create a zpool # 3. Verify the creation was successful # verify_runnable "global" if is_linux; then log_unsupported "Test case isn't useful under Linux." fi function cleanup { if poolexists $TESTPOOL; then destroy_pool $TESTPOOL fi #recover swap devices FSTAB=$TEST_BASE_DIR/fstab_$$ rm -f $FSTAB for sdisk in $swap_disks; do echo "$sdisk - - swap - no -" >> $FSTAB done if [ -e $FSTAB ] then log_must swapadd $FSTAB fi rm -f $FSTAB if [ $dump_device != "none" ] then log_must dumpadm -u -d $dump_device fi } if [[ -n $DISK ]]; then disk=$DISK else disk=$DISK0 fi typeset pool_dev=${disk}${SLICE_PREFIX}${SLICE0} typeset swap_disks=$(swap -l | grep -v "swapfile" | awk '{print $1}') typeset dump_device=$(dumpadm | grep "Dump device" | awk '{print $3}') log_assert "'zpool create' should success with no device in swap." log_onexit cleanup for sdisk in $swap_disks; do log_note "Executing: swap -d $sdisk" swap -d $sdisk >/dev/null 2>&1; if [[ $? != 0 ]]; then log_untested "Unable to delete swap device $sdisk because of" \ "insufficient RAM" fi done log_must zpool create $TESTPOOL $pool_dev log_must zpool destroy $TESTPOOL log_pass "'zpool create' passed as expected with applicable scenario." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_023_0000644000000000000000000000007213607166133031463 xustar000000000000000030 atime=1579730360.849765597 28 ctime=1579730478.9687306 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_023_neg.ksh0000755016037001603700000000551213607166133032746 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2015, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zpool create -O' should return an error with badly formed parameters. # # STRATEGY: # 1. Create an array of parameters with '-O' # 2. For each parameter in the array, execute 'zpool create -O' # 3. Verify an error is returned. # verify_runnable "global" function cleanup { datasetexists $TESTPOOL && log_must zpool destroy $TESTPOOL } log_onexit cleanup set -A args "QuOta=none" "quota=non" "quota=abcd" "quota=0" "quota=" \ "ResErVaTi0n=none" "reserV=none" "reservation=abcd" "reserv=" \ "recorDSize=64k" "recordsize=2M" "recordsize=2048K" \ "recordsize=256" "recsize=" "recsize=zero" "recordsize=0" \ "mountPoint=/tmp/tmpfile$$" "mountpoint=non0" "mountpoint=" \ "mountpoint=LEGACY" "mounpoint=none" \ "sharenfs=ON" "ShareNFS=off" "sharenfs=sss" \ "checkSUM=on" "checksum=SHA256" "chsum=off" "checksum=aaa" \ "compression=of" "ComPression=lzjb" "compress=ON" "compress=a" \ "atime=ON" "ATime=off" "atime=bbb" \ "deviCes=on" "devices=OFF" "devices=aaa" \ "exec=ON" "EXec=off" "exec=aaa" \ "readonly=ON" "reADOnly=off" "rdonly=OFF" "rdonly=aaa" \ "zoned=ON" "ZoNed=off" "zoned=aaa" \ "snapdIR=hidden" "snapdir=VISible" "snapdir=aaa" \ "acltype=DIScard" "acltYPE=groupmask" "acltype=aaa" \ "aclinherit=deny" "aclinHerit=secure" "aclinherit=aaa" \ "type=volume" "type=snapshot" "type=filesystem" \ "creation=aaa" "used=10K" "available=10K" \ "referenced=10K" "compressratio=1.00x" \ "version=0" "version=1.234" "version=10K" "version=-1" \ "version=aaa" "version=999" log_assert "'zpool create -O' should return an error with badly formed parameters." typeset -i i=0 while (( $i < ${#args[*]} )); do log_mustnot zpool create -O ${args[i]} -f $TESTPOOL $DISKS ((i = i + 1)) done log_pass "'zpool create -O' should return an error with badly formed parameters." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030355 xustar000000000000000030 mtime=1579730436.504367177 30 atime=1579730455.654982045 30 ctime=1579730478.994731434 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/Makefile.in0000664016037001603700000006326613612143004030376 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_create DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_create ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_create_001_pos.ksh \ zpool_create_002_pos.ksh \ zpool_create_003_pos.ksh \ zpool_create_004_pos.ksh \ zpool_create_005_pos.ksh \ zpool_create_006_pos.ksh \ zpool_create_007_neg.ksh \ zpool_create_008_pos.ksh \ zpool_create_009_neg.ksh \ zpool_create_010_neg.ksh \ zpool_create_011_neg.ksh \ zpool_create_012_neg.ksh \ zpool_create_014_neg.ksh \ zpool_create_015_neg.ksh \ zpool_create_016_pos.ksh \ zpool_create_017_neg.ksh \ zpool_create_018_pos.ksh \ zpool_create_019_pos.ksh \ zpool_create_020_pos.ksh \ zpool_create_021_pos.ksh \ zpool_create_022_pos.ksh \ zpool_create_023_neg.ksh \ zpool_create_024_pos.ksh \ zpool_create_encrypted.ksh \ zpool_create_crypt_combos.ksh \ zpool_create_features_001_pos.ksh \ zpool_create_features_002_pos.ksh \ zpool_create_features_003_pos.ksh \ zpool_create_features_004_neg.ksh \ zpool_create_features_005_pos.ksh \ create-o_ashift.ksh \ zpool_create_tempname.ksh dist_pkgdata_DATA = \ zpool_create.cfg \ zpool_create.shlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_create/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_create/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_022_0000644000000000000000000000007413607166133031464 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730478.966730536 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_022_pos.ksh0000755016037001603700000000505613607166133033000 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create -O property=value pool' can successfully create a pool # with multiple filesystem properties set. # # STRATEGY: # 1. Create a storage pool with multiple -O options # 2. Verify the pool created successfully # 3. Verify the properties are correctly set # verify_runnable "global" function cleanup { datasetexists $TESTPOOL && log_must zpool destroy $TESTPOOL } log_onexit cleanup log_assert "'zpool create -O property=value pool' can successfully create a pool \ with multiple filesystem properties set." set -A RW_FS_PROP "quota=536870912" \ "reservation=536870912" \ "recordsize=262144" \ "mountpoint=/tmp/mnt$$" \ "checksum=fletcher2" \ "compression=lzjb" \ "atime=off" \ "devices=off" \ "exec=off" \ "setuid=off" \ "readonly=on" \ "snapdir=visible" \ "acltype=posixacl" \ "aclinherit=discard" \ "canmount=off" typeset -i i=0 typeset opts="" while (( $i < ${#RW_FS_PROP[*]} )); do opts="$opts -O ${RW_FS_PROP[$i]}" (( i = i + 1 )) done log_must zpool create $opts -f $TESTPOOL $DISKS datasetexists $TESTPOOL || log_fail "zpool create $TESTPOOL fail." i=0 while (( $i < ${#RW_FS_PROP[*]} )); do propertycheck $TESTPOOL ${RW_FS_PROP[i]} || \ log_fail "${RW_FS_PROP[i]} is failed to set." (( i = i + 1 )) done log_pass "'zpool create -O property=value pool' can successfully create a pool \ with multiple filesystem properties set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/PaxHeaders.151519/zpool_create_021_0000644000000000000000000000007313607166133031462 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730478.96373044 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_create/zpool_create_021_pos.ksh0000755016037001603700000000475113607166133033000 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_create/zfs_create_common.kshlib . $STF_SUITE/tests/functional/cli_root/zpool_create/zpool_create.shlib # # DESCRIPTION: # 'zpool create -O property=value pool' can successfully create a pool # with correct filesystem property set. # # STRATEGY: # 1. Create a storage pool with -O option # 2. Verify the pool created successfully # 3. Verify the filesystem property is correctly set # verify_runnable "global" function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL } log_onexit cleanup log_assert "'zpool create -O property=value pool' can successfully create a pool \ with correct filesystem property set." set -A RW_FS_PROP "quota=536870912" \ "reservation=536870912" \ "recordsize=262144" \ "mountpoint=/tmp/mnt$$" \ "checksum=fletcher2" \ "compression=lzjb" \ "atime=off" \ "devices=off" \ "exec=off" \ "setuid=off" \ "readonly=on" \ "snapdir=visible" \ "acltype=posixacl" \ "aclinherit=discard" \ "canmount=off" \ "zoned=on" typeset -i i=0 while (( $i < ${#RW_FS_PROP[*]} )); do log_must zpool create -O ${RW_FS_PROP[$i]} -f $TESTPOOL $DISKS datasetexists $TESTPOOL || \ log_fail "zpool create $TESTPOOL fail." propertycheck $TESTPOOL ${RW_FS_PROP[i]} || \ log_fail "${RW_FS_PROP[i]} is failed to set." log_must zpool destroy $TESTPOOL (( i = i + 1 )) done log_pass "'zpool create -O property=value pool' can successfully create a pool \ with correct filesystem property set." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_resilver0000644000000000000000000000013213612143060026625 xustar000000000000000030 mtime=1579730480.127767815 30 atime=1579730489.094055709 30 ctime=1579730480.127767815 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/0000775016037001603700000000000013612143060026706 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/PaxHeaders.151519/zpool_resilver_0000644000000000000000000000007413607166133032061 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.120767589 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/zpool_resilver_bad_args.ksh0000755016037001603700000000417113607166133034333 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Datto. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A badly formed parameter passed to 'zpool resilver' should # return an error. # # STRATEGY: # 1. Create an array containing bad 'zpool reilver' parameters. # 2. For each element, execute the sub-command. # 3. Verify it returns an error. # 4. Confirm the sub-command returns an error if the resilver_defer # feature isn't active. # verify_runnable "global" set -A args "" "-?" "blah blah" "-%" "--?" "-*" "-=" \ "-a" "-b" "-c" "-d" "-e" "-f" "-g" "-h" "-i" "-j" "-k" "-l" \ "-m" "-n" "-o" "-p" "-q" "-r" "-s" "-t" "-u" "-v" "-w" "-x" "-y" "-z" \ "-A" "-B" "-C" "-D" "-E" "-F" "-G" "-H" "-I" "-J" "-K" "-L" \ "-M" "-N" "-O" "-P" "-Q" "-R" "-S" "-T" "-U" "-V" "-W" "-X" "-W" "-Z" function cleanup { log_must destroy_pool $TESTPOOL2 log_must rm -f $TEST_BASE_DIR/zpool_resilver.dat } log_onexit cleanup log_assert "Execute 'zpool resilver' using invalid parameters." typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool resilver ${args[i]} ((i = i + 1)) done log_must mkfile $MINVDEVSIZE $TEST_BASE_DIR/zpool_resilver.dat log_must zpool create -d $TESTPOOL2 $TEST_BASE_DIR/zpool_resilver.dat log_mustnot zpool resilver $TESTPOOL2 log_pass "Badly formed 'zpool resilver' parameters fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030755 xustar000000000000000030 atime=1579730437.379395271 30 ctime=1579730480.124767719 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/Makefile.am0000644016037001603700000000036013607166133030751 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_resilver dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_resilver_bad_args.ksh \ zpool_resilver_restart.ksh dist_pkgdata_DATA = \ zpool_resilver.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030570 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.115767429 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/setup.ksh0000755016037001603700000000232513607166133030572 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Datto. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_resilver/zpool_resilver.cfg verify_runnable "global" verify_disk_count "$DISKS" 3 default_mirror_setup_noexit $DISK1 $DISK2 $DISK3 mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) # Create 256M of data log_must file_write -b 1048576 -c 256 -o create -d 0 -f $mntpnt/bigfile log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133031057 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.117767493 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/cleanup.ksh0000755016037001603700000000204513607166133031060 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg verify_runnable "global" destroy_mirrors zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/PaxHeaders.151519/zpool_resilver_0000644000000000000000000000007413607166133032061 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.122767655 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/zpool_resilver_restart.ksh0000755016037001603700000000534113607166133034255 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 Datto Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib . $STF_SUITE/tests/functional/cli_root/zpool_resilver/zpool_resilver.cfg # # DESCRIPTION: # "Verify 'zpool resilver' restarts in-progress resilvers" # # STRATEGY: # 1. Write some data and detach the first drive so it has resilver # work to do # 2. Repeat the process with a second disk # 3. Reattach the drives, causing the second drive's resilver to be # deferred # 4. Manually restart the resilver with all drives # verify_runnable "global" function cleanup { log_must set_tunable32 zfs_scan_suspend_progress 0 log_must rm -f $mntpnt/biggerfile1 log_must rm -f $mntpnt/biggerfile2 } log_onexit cleanup log_assert "Verify 'zpool resilver' restarts in-progress resilvers" mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) # 1. Write some data and detach the first drive so it has resilver work to do log_must file_write -b 524288 -c 1024 -o create -d 0 -f $mntpnt/biggerfile1 log_must sync log_must zpool detach $TESTPOOL $DISK2 # 2. Repeat the process with a second disk log_must file_write -b 524288 -c 1024 -o create -d 0 -f $mntpnt/biggerfile2 log_must sync log_must zpool detach $TESTPOOL $DISK3 # 3. Reattach the drives, causing the second drive's resilver to be deferred log_must set_tunable32 zfs_scan_suspend_progress 1 log_must zpool attach $TESTPOOL $DISK1 $DISK2 log_must is_pool_resilvering $TESTPOOL true log_must zpool attach $TESTPOOL $DISK1 $DISK3 log_must is_pool_resilvering $TESTPOOL true # 4. Manually restart the resilver with all drives log_must zpool resilver $TESTPOOL log_must is_deferred_scan_started $TESTPOOL log_must set_tunable32 zfs_scan_suspend_progress 0 log_must wait_for_resilver_end $TESTPOOL $MAXTIMEOUT log_must check_state $TESTPOOL "$DISK2" "online" log_must check_state $TESTPOOL "$DISK3" "online" log_pass "Verified 'zpool resilver' restarts in-progress resilvers" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/PaxHeaders.151519/zpool_resilver.0000644000000000000000000000007413607166133032000 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.113767365 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/zpool_resilver.cfg0000644016037001603700000000200013607166133032445 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2018 by Datto. All rights reserved. # export DISK1=$(echo $DISKS | nawk '{print $1}') export DISK2=$(echo $DISKS | nawk '{print $2}') export DISK3=$(echo $DISKS | nawk '{print $3}') export MAXTIMEOUT=300 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143005030745 xustar000000000000000029 mtime=1579730437.41739649 30 atime=1579730456.168998549 30 ctime=1579730480.127767815 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_resilver/Makefile.in0000664016037001603700000006146713612143005030770 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_resilver DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_resilver ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_resilver_bad_args.ksh \ zpool_resilver_restart.ksh dist_pkgdata_DATA = \ zpool_resilver.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_resilver/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_resilver/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_promote0000644000000000000000000000013213612143055026122 xustar000000000000000030 mtime=1579730477.495683304 30 atime=1579730489.095055741 30 ctime=1579730477.495683304 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/0000775016037001603700000000000013612143055026203 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote.cfg0000644000000000000000000000007413607166133031242 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.466682372 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote.cfg0000644016037001603700000000236613607166133031246 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012 by Delphix. All rights reserved. # export FILESIZE=1m export TESTSNAP3=testsnap3.promote export TESTSNAP4=testsnap4.promote export TESTSNAP5=testsnap5.promote export TESTFILE3=testfile3.promote export CLONEFILE=clonefile.promote export CLONEFILE1=clonefile1.promote export CLONEFILE2=clonefile2.promote export CLONEFILE3=clonefile3.promote zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_001_po0000644000000000000000000000007413607166133031562 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.473682596 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_001_pos.ksh0000755016037001603700000000661413607166133032540 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_promote/zfs_promote.cfg . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs promote' can promote a clone filesystem to no longer be dependent # on its "origin" snapshot. # # STRATEGY: # 1. Create a snapshot and a clone of the snapshot # 2. Promote the clone filesystem # 3. Verify the promoted filesystem become independent # verify_runnable "both" function cleanup { if snapexists $csnap; then log_must zfs promote $fs fi snapexists $snap && \ log_must zfs destroy -rR $snap typeset data for data in $file0 $file1; do [[ -e $data ]] && rm -f $data done } function testing_verify { typeset ds=$1 typeset ds_file=$2 typeset snap_file=$3 typeset c_ds=$4 typeset c_file=$5 typeset csnap_file=$6 typeset origin_prop="" snapexists $ds@$TESTSNAP && \ log_fail "zfs promote cannot promote $ds@$TESTSNAP." ! snapexists $c_ds@$TESTSNAP && \ log_fail "The $c_ds@$TESTSNAP after zfs promote doesn't exist." origin_prop=$(get_prop origin $ds) [[ "$origin_prop" != "$c_ds@$TESTSNAP" ]] && \ log_fail "The dependency of $ds is not correct." origin_prop=$(get_prop origin $c_ds) [[ "$origin_prop" != "-" ]] && \ log_fail "The dependency of $c_ds is not correct." if [[ -e $snap_file ]] || [[ ! -e $csnap_file ]]; then log_fail "Data file $snap_file cannot be correctly promoted." fi if [[ ! -e $ds_file ]] || [[ ! -e $c_file ]]; then log_fail "There exists data file losing after zfs promote." fi log_mustnot zfs destroy -r $c_ds } log_assert "'zfs promote' can promote a clone filesystem." log_onexit cleanup fs=$TESTPOOL/$TESTFS file0=$TESTDIR/$TESTFILE0 file1=$TESTDIR/$TESTFILE1 snap=$fs@$TESTSNAP snapfile=$TESTDIR/.zfs/snapshot/$TESTSNAP/$TESTFILE0 clone=$TESTPOOL/$TESTCLONE cfile=/$clone/$CLONEFILE csnap=$clone@$TESTSNAP csnapfile=/$clone/.zfs/snapshot/$TESTSNAP/$TESTFILE0 # setup for promte testing log_must mkfile $FILESIZE $file0 log_must zfs snapshot $snap log_must mkfile $FILESIZE $file1 log_must rm -f $file0 log_must zfs clone $snap $clone log_must mkfile $FILESIZE $cfile log_must zfs promote $clone # verify the 'promote' operation testing_verify $fs $file1 $snapfile $clone $cfile $csnapfile log_note "Verify 'zfs promote' can change back the dependency relationship." log_must zfs promote $fs #verify the result testing_verify $clone $cfile $csnapfile $fs $file1 $snapfile log_pass "'zfs promote' reverses the clone parent-child dependency relationship"\ "as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_008_po0000644000000000000000000000007313607166133031570 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730477.48968311 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_008_pos.ksh0000755016037001603700000000413613607166133032544 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs promote' can successfully promote a volume clone. # # STRATEGY: # 1. Create a volume clone # 2. Promote the volume clone # 3. Verify the dependency changed. # verify_runnable "global" function cleanup { if snapexists $csnap; then log_must zfs promote $vol fi destroy_dataset "$snap" "-rR" } log_assert "'zfs promote' can promote a volume clone." log_onexit cleanup vol=$TESTPOOL/$TESTVOL snap=$vol@$TESTSNAP clone=$TESTPOOL/volclone csnap=$clone@$TESTSNAP if ! snapexists $snap ; then log_must zfs snapshot $snap log_must zfs clone $snap $clone fi log_must zfs promote $clone # verify the 'promote' operation ! snapexists $csnap && \ log_fail "Snapshot $csnap doesn't exist after zfs promote." snapexists $snap && \ log_fail "Snapshot $snap is still there after zfs promote." origin_prop=$(get_prop origin $vol) [[ "$origin_prop" != "$csnap" ]] && \ log_fail "The dependency of $vol is not correct." origin_prop=$(get_prop origin $clone) [[ "$origin_prop" != "-" ]] && \ log_fail "The dependency of $clone is not correct." log_pass "'zfs promote' can promote volume clone as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030246 xustar000000000000000030 atime=1579730435.399331697 30 ctime=1579730477.493683238 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/Makefile.am0000644016037001603700000000064713607166133030252 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_promote dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_promote_001_pos.ksh \ zfs_promote_002_pos.ksh \ zfs_promote_003_pos.ksh \ zfs_promote_004_pos.ksh \ zfs_promote_005_pos.ksh \ zfs_promote_006_neg.ksh \ zfs_promote_007_neg.ksh \ zfs_promote_008_pos.ksh \ zfs_promote_encryptionroot.ksh dist_pkgdata_DATA = \ zfs_promote.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030061 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.468682436 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/setup.ksh0000755016037001603700000000175013607166133030064 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_volume_setup ${DISK} zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007213607166133030346 xustar000000000000000030 atime=1579730360.849765597 28 ctime=1579730477.4706825 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/cleanup.ksh0000755016037001603700000000171013607166133030347 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_003_po0000644000000000000000000000007413607166133031564 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.477682726 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_003_pos.ksh0000755016037001603700000001015413607166133032534 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_promote/zfs_promote.cfg . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs promote' can deal with multi-point snapshots. # # STRATEGY: # 1. Create multiple snapshots and a clone to a middle point snapshot # 2. Promote the clone filesystem # 3. Verify the origin filesystem and promoted filesystem include # correct datasets separated by the clone point. # verify_runnable "both" function cleanup { if snapexists ${csnap[2]}; then log_must zfs promote $fs fi typeset ds typeset data for ds in ${snap[*]}; do snapexists $ds && \ log_must zfs destroy -rR $ds done for data in ${file[*]}; do [[ -e $data ]] && rm -f $data done } log_assert "'zfs promote' can deal with multi-point snapshots." log_onexit cleanup fs=$TESTPOOL/$TESTFS clone=$TESTPOOL/$TESTCLONE # Define some arrays here to use loop to reduce code amount # Array which stores the origin snapshots created in the origin filesystem set -A snap "${fs}@$TESTSNAP" "${fs}@$TESTSNAP1" "${fs}@$TESTSNAP2" "${fs}@$TESTSNAP3" # Array which stores the snapshots existing in the clone after promote operation set -A csnap "${clone}@$TESTSNAP" "${clone}@$TESTSNAP1" "${clone}@$TESTSNAP2" \ "${clone}@$TESTSNAP3" # The data will inject into the origin filesystem set -A file "$TESTDIR/$TESTFILE0" "$TESTDIR/$TESTFILE1" "$TESTDIR/$TESTFILE2" \ "$TESTDIR/$TESTFILE3" snapdir=$TESTDIR/.zfs/snapshot # The data which will exist in the snapshot after creation of snapshot set -A snapfile "$snapdir/$TESTSNAP/$TESTFILE0" "$snapdir/$TESTSNAP1/$TESTFILE1" \ "$snapdir/$TESTSNAP2/$TESTFILE2" "$snapdir/$TESTSNAP3/$TESTFILE3" csnapdir=/$clone/.zfs/snapshot # The data which will exist in the snapshot of clone filesystem after promote set -A csnapfile "${csnapdir}/$TESTSNAP/$TESTFILE0" "${csnapdir}/$TESTSNAP1/$TESTFILE1" \ "${csnapdir}/$TESTSNAP2/$TESTFILE2" # setup for promote testing typeset -i i=0 while (( i < 4 )); do log_must mkfile $FILESIZE ${file[i]} (( i>0 )) && log_must rm -f ${file[((i-1))]} log_must zfs snapshot ${snap[i]} (( i = i + 1 )) done log_must zfs clone ${snap[2]} $clone log_must mkfile $FILESIZE /$clone/$CLONEFILE log_must rm -f /$clone/$TESTFILE2 log_must zfs snapshot ${csnap[3]} log_must zfs promote $clone # verify the 'promote' operation for ds in ${snap[3]} ${csnap[*]}; do ! snapexists $ds && \ log_fail "The snapshot $ds disappear after zfs promote." done for data in ${csnapfile[*]} $TESTDIR/$TESTFILE3 /$clone/$CLONEFILE; do [[ ! -e $data ]] && \ log_fail "The data file $data loses after zfs promote." done for ds in ${snap[0]} ${snap[1]} ${snap[2]}; do snapexists $ds && \ log_fail "zfs promote cannot promote the snapshot $ds." done for data in ${snapfile[0]} ${snapfile[1]} ${snapfile[2]}; do [[ -e $data ]] && \ log_fail "zfs promote cannot promote the data $data." done origin_prop=$(get_prop origin $fs) [[ "$origin_prop" != "${csnap[2]}" ]] && \ log_fail "The dependency is not correct for $fs after zfs promote." origin_prop=$(get_prop origin $clone) [[ "$origin_prop" != "-" ]] && \ log_fail "The dependency is not correct for $clone after zfs promote." log_pass "'zfs promote' deal with multi-point snapshots as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_004_po0000644000000000000000000000007313607166133031564 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730477.47968279 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_004_pos.ksh0000755016037001603700000001036313607166133032537 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_promote/zfs_promote.cfg . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs promote' can deal with multi-level clones. # # STRATEGY: # 1. Create multiple snapshots and multi-level clones # 2. Promote a clone filesystem # 3. Verify the dataset dependency relationships are correct after promotion. # verify_runnable "both" function cleanup { if snapexists ${c1snap[1]}; then log_must zfs promote $clone fi typeset ds typeset data for ds in ${snap[*]}; do snapexists $ds && \ log_must zfs destroy -rR $ds done for data in ${file[*]}; do [[ -e $data ]] && rm -f $data done } log_assert "'zfs promote' can deal with multi-level clone." log_onexit cleanup fs=$TESTPOOL/$TESTFS clone=$TESTPOOL/$TESTCLONE clone1=$TESTPOOL/$TESTCLONE1 # Define some arrays here to use loop to reduce code amount # Array which stores the origin snapshots created in the origin filesystem set -A snap "${fs}@$TESTSNAP" "${fs}@$TESTSNAP1" "${fs}@$TESTSNAP2" "${fs}@$TESTSNAP3" # Array which stores the snapshots existing in the first clone set -A csnap "${clone}@$TESTSNAP3" "${clone}@$TESTSNAP4" "${clone}@$TESTSNAP5" # Array which stores the snapshots existing in the second clone after promote operation set -A c1snap "${clone1}@$TESTSNAP3" "${clone1}@$TESTSNAP4" "${clone1}@$TESTSNAP5" # The data will inject into the origin filesystem set -A file "$TESTDIR/$TESTFILE0" "$TESTDIR/$TESTFILE1" "$TESTDIR/$TESTFILE2" \ "$TESTDIR/$TESTFILE3" cdir=/$TESTPOOL/$TESTCLONE # The data will inject into the first clone set -A cfile "${cdir}/$CLONEFILE" "${cdir}/$CLONEFILE1" "${cdir}/$CLONEFILE2" c1snapdir=/$TESTPOOL/$TESTCLONE1/.zfs/snapshot # The data which will exist in the snapshot of the second clone filesystem after promote set -A c1snapfile "${c1snapdir}/$TESTSNAP3/$CLONEFILE" \ "${c1snapdir}/$TESTSNAP4/$CLONEFILE1" \ "${c1snapdir}/$TESTSNAP5/$CLONEFILE2" # setup for promote testing typeset -i i=0 while (( i < 4 )); do log_must mkfile $FILESIZE ${file[i]} (( i>0 )) && log_must rm -f ${file[((i-1))]} log_must zfs snapshot ${snap[i]} (( i = i + 1 )) done log_must zfs clone ${snap[2]} $clone log_must rm -f /$clone/$TESTFILE2 i=0 while (( i < 3 )); do log_must mkfile $FILESIZE ${cfile[i]} (( i>0 )) && log_must rm -f ${cfile[(( i-1 ))]} log_must zfs snapshot ${csnap[i]} (( i = i + 1 )) done log_must zfs clone ${csnap[1]} $clone1 log_must mkfile $FILESIZE /$clone1/$CLONEFILE2 log_must rm -f /$clone1/$CLONEFILE1 log_must zfs snapshot ${c1snap[2]} log_must zfs promote $clone1 # verify the 'promote' operation for ds in ${snap[*]} ${csnap[2]} ${c1snap[*]}; do ! snapexists $ds && \ log_fail "The snapshot $ds disappear after zfs promote." done for data in ${c1snapfile[*]}; do [[ ! -e $data ]] && \ log_fail "The data file $data loses after zfs promote." done origin_prop=$(get_prop origin $fs) [[ "$origin_prop" != "-" ]] && \ log_fail "The dependency is not correct for $fs after zfs promote." origin_prop=$(get_prop origin $clone) [[ "$origin_prop" != "${c1snap[1]}" ]] && \ log_fail "The dependency is not correct for $clone after zfs promote." origin_prop=$(get_prop origin $clone1) [[ "$origin_prop" != "${snap[2]}" ]] && \ log_fail "The dependency is not correct for $clone1 after zfs promote." log_pass "'zfs promote' deal with multi-level clones as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_002_po0000644000000000000000000000007313607166133031562 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730477.47568266 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_002_pos.ksh0000755016037001603700000000533213607166133032535 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_promote/zfs_promote.cfg . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs promote' can deal with multiple snapshots in the origin filesystem. # # STRATEGY: # 1. Create multiple snapshots and a clone of the last snapshot # 2. Promote the clone filesystem # 3. Verify the promoted filesystem included all snapshots # verify_runnable "both" function cleanup { if snapexists $csnap1; then log_must zfs promote $fs fi typeset ds typeset data for ds in $snap $snap1; do log_must zfs destroy -rR $ds done for file in $TESTDIR/$TESTFILE0 $TESTDIR/$TESTFILE1; do [[ -e $file ]] && rm -f $file done } log_assert "'zfs promote' can deal with multiple snapshots in a filesystem." log_onexit cleanup fs=$TESTPOOL/$TESTFS snap=$fs@$TESTSNAP snap1=$fs@$TESTSNAP1 clone=$TESTPOOL/$TESTCLONE csnap=$clone@$TESTSNAP csnap1=$clone@$TESTSNAP1 # setup for promote testing log_must mkfile $FILESIZE $TESTDIR/$TESTFILE0 log_must zfs snapshot $snap log_must mkfile $FILESIZE $TESTDIR/$TESTFILE1 log_must rm -f $testdir/$TESTFILE0 log_must zfs snapshot $snap1 log_must zfs clone $snap1 $clone log_must mkfile $FILESIZE /$clone/$CLONEFILE log_must zfs promote $clone # verify the 'promote' operation for ds in $csnap $csnap1; do ! snapexists $ds && \ log_fail "Snapshot $ds doesn't exist after zfs promote." done for ds in $snap $snap1; do snapexists $ds && \ log_fail "Snapshot $ds is still there after zfs promote." done origin_prop=$(get_prop origin $fs) [[ "$origin_prop" != "$csnap1" ]] && \ log_fail "The dependency of $fs is not correct." origin_prop=$(get_prop origin $clone) [[ "$origin_prop" != "-" ]] && \ log_fail "The dependency of $clone is not correct." log_pass "'zfs promote' deal with multiple snapshots as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_007_ne0000644000000000000000000000007413607166133031554 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.486683014 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_007_neg.ksh0000755016037001603700000000415613607166133032515 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cli_root/zfs_promote/zfs_promote.cfg . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs promote' can deal with conflicts in the namespaces. # # STRATEGY: # 1. Create a snapshot and a clone of the snapshot # 2. Create the same name snapshot for the clone # 3. Promote the clone filesystem # 4. Verify the promote operation fail due to the name conflicts. # verify_runnable "both" function cleanup { snapexists $snap && \ log_must zfs destroy -rR $snap typeset data for data in $TESTDIR/$TESTFILE0 $TESTDIR/$TESTFILE1; do [[ -e $data ]] && rm -f $data done } log_assert "'zfs promote' can deal with name conflicts." log_onexit cleanup snap=$TESTPOOL/$TESTFS@$TESTSNAP clone=$TESTPOOL/$TESTCLONE clonesnap=$TESTPOOL/$TESTCLONE@$TESTSNAP # setup for promte testing log_must mkfile $FILESIZE $TESTDIR/$TESTFILE0 log_must zfs snapshot $snap log_must mkfile $FILESIZE $TESTDIR/$TESTFILE1 log_must rm -f $TESTDIR/$TESTFILE0 log_must zfs clone $snap $clone log_must mkfile $FILESIZE /$clone/$CLONEFILE log_must zfs snapshot $clonesnap log_mustnot zfs promote $clone log_pass "'zfs promote' deals with name conflicts as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_006_ne0000644000000000000000000000007313607166133031552 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730477.48468295 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_006_neg.ksh0000755016037001603700000000430413607166133032507 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs promote' will fail with invalid arguments: # (1) NULL arguments # (2) non-existent clone # (3) non-clone datasets: # pool, fs, snapshot,volume # (4) too many arguments. # (5) invalid options # (6) temporary %recv datasets # # STRATEGY: # 1. Create an array of invalid arguments # 2. For each invalid argument in the array, 'zfs promote' should fail # 3. Verify the return code from zfs promote # verify_runnable "both" snap=$TESTPOOL/$TESTFS@$TESTSNAP clone=$TESTPOOL/$TESTCLONE recvfs=$TESTPOOL/recvfs set -A args "" \ "$TESTPOOL/blah" \ "$TESTPOOL" "$TESTPOOL/$TESTFS" "$snap" \ "$TESTPOOL/$TESTVOL" "$TESTPOOL $TESTPOOL/$TESTFS" \ "$clone $TESTPOOL/$TESTFS" "- $clone" "-? $clone" \ "$recvfs/%recv" function cleanup { if datasetexists $clone; then log_must zfs destroy $clone fi if datasetexists $recvfs; then log_must zfs destroy -r $recvfs fi if snapexists $snap; then destroy_snapshot $snap fi } log_assert "'zfs promote' will fail with invalid arguments. " log_onexit cleanup create_recv_clone $recvfs typeset -i i=0 while (( i < ${#args[*]} )); do log_mustnot zfs promote ${args[i]} (( i = i + 1 )) done log_pass "'zfs promote' fails with invalid argument as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143003030235 xustar000000000000000030 mtime=1579730435.436332884 30 atime=1579730455.078963551 30 ctime=1579730477.495683304 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/Makefile.in0000664016037001603700000006174513612143003030256 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_promote DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_promote ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_promote_001_pos.ksh \ zfs_promote_002_pos.ksh \ zfs_promote_003_pos.ksh \ zfs_promote_004_pos.ksh \ zfs_promote_005_pos.ksh \ zfs_promote_006_neg.ksh \ zfs_promote_007_neg.ksh \ zfs_promote_008_pos.ksh \ zfs_promote_encryptionroot.ksh dist_pkgdata_DATA = \ zfs_promote.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_promote/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_promote/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_005_po0000644000000000000000000000007413607166133031566 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.482682886 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_005_pos.ksh0000755016037001603700000000360213607166133032536 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # The original fs was unmounted, 'zfs promote' still should succeed. # # STRATEGY: # 1. Create pool, fs and snapshot. # 2. Create clone of fs. # 3. Unmount fs, then verify 'zfs promote' clone still succeed. # verify_runnable "both" function cleanup { if datasetexists $fssnap ; then datasetexists $clone && log_must zfs destroy $clone log_must zfs destroy $fssnap fi if datasetexists $clone ; then log_must zfs promote $fs log_must zfs destroy $clone log_must zfs destroy $fssnap fi } log_assert "The original fs was unmounted, 'zfs promote' still should succeed." log_onexit cleanup fs=$TESTPOOL/$TESTFS clone=$TESTPOOL/$TESTCLONE fssnap=$fs@fssnap log_must zfs snapshot $fssnap log_must zfs clone $fssnap $clone log_must zfs unmount $fs log_must zfs promote $clone log_must zfs unmount $clone log_must zfs promote $fs log_pass "Unmount original fs, 'zfs promote' passed." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/PaxHeaders.151519/zfs_promote_encryp0000644000000000000000000000007413612141514032054 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730477.491683174 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_promote/zfs_promote_encryptionroot.ksh0000755016037001603700000000655413612141514034450 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zfs_load-key/zfs_load-key_common.kshlib # # DESCRIPTION: # ZFS must promote clones of an encryption root. # # STRATEGY: # 1. Create an encrypted dataset # 2. Clone the encryption root # 3. Clone the clone # 4. Add children to each of these three datasets # 4. Verify the encryption root of all datasets is the origin # 5. Promote the clone of the clone # 6. Verify the encryption root of all datasets is still the origin # 7. Promote the dataset again, so it is now the encryption root # 8. Verify the encryption root of all datasets is the promoted dataset # verify_runnable "both" function cleanup { datasetexists $TESTPOOL/$TESTFS1 && \ log_must zfs destroy -Rf $TESTPOOL/$TESTFS1 datasetexists $TESTPOOL/clone1 && \ log_must zfs destroy -Rf $TESTPOOL/clone1 datasetexists $TESTPOOL/clone2 && \ log_must zfs destroy -Rf $TESTPOOL/clone2 } log_onexit cleanup log_assert "ZFS must promote clones of an encryption root" passphrase="password" snaproot="$TESTPOOL/$TESTFS1@snap1" snapclone="$TESTPOOL/clone1@snap2" log_must eval "echo $passphrase | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS1" log_must zfs snap $snaproot log_must zfs clone $snaproot $TESTPOOL/clone1 log_must zfs snap $snapclone log_must zfs clone $snapclone $TESTPOOL/clone2 log_must zfs create $TESTPOOL/$TESTFS1/child0 log_must zfs create $TESTPOOL/clone1/child1 log_must zfs create $TESTPOOL/clone2/child2 log_must verify_encryption_root $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/clone1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/clone2 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/child0 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/clone1/child1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/clone2/child2 $TESTPOOL/$TESTFS1 log_must zfs promote $TESTPOOL/clone2 log_must verify_encryption_root $TESTPOOL/$TESTFS1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/clone1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/clone2 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/$TESTFS1/child0 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/clone1/child1 $TESTPOOL/$TESTFS1 log_must verify_encryption_root $TESTPOOL/clone2/child2 $TESTPOOL/$TESTFS1 log_must zfs promote $TESTPOOL/clone2 log_must verify_encryption_root $TESTPOOL/$TESTFS1 $TESTPOOL/clone2 log_must verify_encryption_root $TESTPOOL/clone1 $TESTPOOL/clone2 log_must verify_encryption_root $TESTPOOL/clone2 $TESTPOOL/clone2 log_must verify_encryption_root $TESTPOOL/$TESTFS1/child0 $TESTPOOL/clone2 log_must verify_encryption_root $TESTPOOL/clone1/child1 $TESTPOOL/clone2 log_must verify_encryption_root $TESTPOOL/clone2/child2 $TESTPOOL/clone2 log_pass "ZFS promotes clones of an encryption root" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_reopen0000644000000000000000000000013213612143060026262 xustar000000000000000030 mtime=1579730480.010764058 30 atime=1579730489.095055741 30 ctime=1579730480.010764058 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/0000775016037001603700000000000013612143060026343 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen_005_0000644000000000000000000000007413607166133031537 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.002763801 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_005_pos.ksh0000755016037001603700000000456013607166133033052 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib # # DESCRIPTION: # Test zpool reopen -n while resilver is running. # Checks if the resilver is restarted. # # STRATEGY: # 1. Create a pool # 2. Remove a disk. # 3. Write test file to pool. # 4. "Plug back" disk. # 5. Reopen a pool and wait until resilvering is started. # 6. Reopen a pool again with -n flag. # 7. Wait until resilvering is finished and check if it was restarted. # # NOTES: # A 25ms delay is added to make sure that the resilver is running while # the reopen is invoked. # verify_runnable "global" function cleanup { log_must zinject -c all insert_disk $REMOVED_DISK $scsi_host poolexists $TESTPOOL && destroy_pool $TESTPOOL } log_assert "Testing zpool reopen with pool name as argument" log_onexit cleanup set_removed_disk scsi_host=$(get_scsi_host $REMOVED_DISK) # 1. Create a pool default_mirror_setup_noexit $REMOVED_DISK_ID $DISK2 # 2. Remove a disk. remove_disk $REMOVED_DISK log_must zpool reopen $TESTPOOL log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "unavail" # 3. Write test file to pool. log_must generate_random_file /$TESTPOOL/data $LARGE_FILE_SIZE # 4. "Plug back" disk. insert_disk $REMOVED_DISK $scsi_host # 5. Reopen a pool and wait until resilvering is started. log_must zpool reopen $TESTPOOL log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "online" # add delay to I/O requests for the reopened disk log_must zinject -d $REMOVED_DISK_ID -D25:1 $TESTPOOL # wait until resilver starts log_must wait_for_resilver_start $TESTPOOL $MAXTIMEOUT # 6. Reopen a pool again with -n flag. log_must zpool reopen -n $TESTPOOL # 7. Wait until resilvering is finished and check if it was restarted. log_must wait_for_resilver_end $TESTPOOL $MAXTIMEOUT # remove delay from disk log_must zinject -c all log_mustnot is_scan_restarted $TESTPOOL # clean up log_must zpool destroy $TESTPOOL log_pass "Zpool reopen test successful" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen_002_0000644000000000000000000000007413607166133031534 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.996763609 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_002_pos.ksh0000755016037001603700000000403713607166133033046 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib # # DESCRIPTION: # Test if zpool reopen with pool name as argument works correctly. # # STRATEGY: # 1. Create a pool. # 2. Remove a disk. # 3. Reopen a pool and verify if removed disk is marked as unavailable. # 4. "Plug back" disk. # 5. Reopen a pool and verify if removed disk is marked online again. # 6. Check if reopen caused resilver start. # verify_runnable "global" function cleanup { # bring back removed disk online for further tests insert_disk $REMOVED_DISK $scsi_host poolexists $TESTPOOL && destroy_pool $TESTPOOL clear_labels $REMOVED_DISK $DISK2 } log_assert "Testing zpool reopen with no arguments" log_onexit cleanup set_removed_disk scsi_host=$(get_scsi_host $REMOVED_DISK) # 1. Create a pool. default_mirror_setup_noexit $REMOVED_DISK_ID $DISK2 # 2. Remove a disk. remove_disk $REMOVED_DISK # 3. Reopen a pool and verify if removed disk is marked as unavailable. log_must zpool reopen $TESTPOOL log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "unavail" # Write some data to the pool log_must generate_random_file /$TESTPOOL/data $SMALL_FILE_SIZE # 4. "Plug back" disk. insert_disk $REMOVED_DISK $scsi_host # 5. Reopen a pool and verify if removed disk is marked online again. log_must zpool reopen $TESTPOOL log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "online" # 6. Check if reopen caused resilver start. log_must wait_for_resilver_end $TESTPOOL $MAXTIMEOUT # clean up log_must zpool destroy $TESTPOOL clear_labels $REMOVED_DISK $DISK2 log_pass "Zpool reopen with no arguments test passed" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen_004_0000644000000000000000000000007413607166133031536 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.000763737 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_004_pos.ksh0000755016037001603700000000472713607166133033056 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib # # DESCRIPTION: # Test zpool reopen -n while scrub is running. # Checks if re-plugged device is NOT resilvered. # # STRATEGY: # 1. Create a pool # 2. Remove a disk. # 3. Write test file to pool. # 4. Execute scrub. # 5. "Plug back" disk. # 6. Reopen a pool with an -n flag. # 7. Check if resilver was deferred. # 8. Check if trying to put device to offline fails because of no valid # replicas. # # NOTES: # A 125ms delay is added to make sure that the scrub is running while # the reopen is invoked. # verify_runnable "global" function cleanup { log_must zinject -c all # bring back removed disk online for further tests insert_disk $REMOVED_DISK $scsi_host poolexists $TESTPOOL && destroy_pool $TESTPOOL } log_assert "Testing zpool reopen with pool name as argument" log_onexit cleanup set_removed_disk scsi_host=$(get_scsi_host $REMOVED_DISK) # 1. Create a pool default_mirror_setup_noexit $REMOVED_DISK_ID $DISK2 # 2. Remove a disk. remove_disk $REMOVED_DISK log_must zpool reopen -n $TESTPOOL log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "unavail" # 3. Write test file to pool. log_must generate_random_file /$TESTPOOL/data $LARGE_FILE_SIZE # 4. Execute scrub. # add delay to I/O requests for remaining disk in pool log_must zinject -d $DISK2 -D125:1 $TESTPOOL log_must zpool scrub $TESTPOOL # 5. "Plug back" disk. insert_disk $REMOVED_DISK $scsi_host # 6. Reopen a pool with an -n flag. log_must zpool reopen -n $TESTPOOL log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "online" # remove delay from disk log_must zinject -c all # 7. Check if scrub scan is NOT replaced by resilver. log_must wait_for_scrub_end $TESTPOOL $MAXTIMEOUT log_must is_deferred_scan_started $TESTPOOL # 8. Check if trying to put device to offline fails because of no valid # replicas. log_must wait_for_resilver_end $TESTPOOL $MAXTIMEOUT log_must zpool offline $TESTPOOL $DISK2 # clean up log_must zpool destroy $TESTPOOL log_pass "Zpool reopen test successful" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen_001_0000644000000000000000000000007413607166133031533 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.994763545 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_001_pos.ksh0000755016037001603700000000400213607166133033035 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib # # DESCRIPTION: # Test if zpool reopen with no arguments works correctly. # # STRATEGY: # 1. Create a pool. # 2. Remove a disk. # 3. Reopen a pool and verify if removed disk is marked as unavailable. # 4. "Plug back" disk. # 5. Reopen a pool and verify if removed disk is marked online again. # 6. Check if reopen caused resilver start. # verify_runnable "global" function cleanup { # bring back removed disk online for further tests insert_disk $REMOVED_DISK $scsi_host poolexists $TESTPOOL && destroy_pool $TESTPOOL clear_labels $REMOVED_DISK $DISK2 } log_assert "Testing zpool reopen with no arguments" log_onexit cleanup set_removed_disk scsi_host=$(get_scsi_host $REMOVED_DISK) # 1. Create a pool. default_mirror_setup_noexit $REMOVED_DISK_ID $DISK2 # 2. Remove a disk. remove_disk $REMOVED_DISK # 3. Reopen a pool and verify if removed disk is marked as unavailable. log_must zpool reopen log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "unavail" # Write some data to the pool log_must generate_random_file /$TESTPOOL/data $SMALL_FILE_SIZE # 4. "Plug back" disk. insert_disk $REMOVED_DISK $scsi_host # 5. Reopen a pool and verify if removed disk is marked online again. log_must zpool reopen log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "online" # 6. Check if reopen caused resilver start. log_must wait_for_resilver_end $TESTPOOL $MAXTIMEOUT # clean up log_must zpool destroy $TESTPOOL clear_labels $REMOVED_DISK $DISK2 log_pass "Zpool reopen with no arguments test passed" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen_007_0000644000000000000000000000007413607166133031541 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.006763929 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_007_pos.ksh0000755016037001603700000000323513607166133033052 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib # # DESCRIPTION: # Test zpool reopen while performing IO to the pool. # Verify that no IO errors of any kind of reported. # # STRATEGY: # 1. Create a non-redundant pool. # 2. Repeat: # a. Write files to the pool. # b. Execute 'zpool reopen'. # 3. Verify that no errors are reported by 'zpool status'. verify_runnable "global" function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL } log_assert "Testing zpool reopen with concurrent user IO" log_onexit cleanup set_removed_disk scsi_host=$(get_scsi_host $REMOVED_DISK) # 1. Create a non-redundant pool. log_must zpool create $TESTPOOL $DISK1 $DISK2 $DISK3 for i in $(seq 10); do # 3a. Write files in the background to the pool. mkfile 64m /$TESTPOOL/data.$i & # 3b. Execute 'zpool reopen'. log_must zpool reopen $TESTPOOL for disk in $DISK1 $DISK2 $DISK3; do zpool status -P -v $TESTPOOL | grep $disk | \ read -r name state rd wr cksum log_must [ $state = "ONLINE" ] log_must [ $rd -eq 0 ] log_must [ $wr -eq 0 ] log_must [ $cksum -eq 0 ] done done wait log_pass "Zpool reopen with concurrent user IO successful" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen.shli0000644000000000000000000000007413607166133031752 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.988763351 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib0000644016037001603700000000543713607166133032122 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.cfg # # Clear labels on the given disks # function clear_labels #disks { for disk in $@; do if ( is_loop_device $disk ) || ( is_mpath_device $disk ); then zpool labelclear -f /dev/$disk else zpool labelclear -f /dev/${disk}1 fi done } # # Set the REMOVED_DISK and REMOVED_DISK_ID constants for device # used for re-plugging. When the disk is loop device use the # scsi_debug emulated drive. Otherwise use the real drive. # function set_removed_disk { if is_loop_device $DISK1; then export REMOVED_DISK=$(get_debug_device) export REMOVED_DISK_ID=$(get_persistent_disk_name $REMOVED_DISK) elif ( is_real_device $DISK1 ) || ( is_mpath_device $DISK1 ); then export REMOVED_DISK="$DISK1" export REMOVED_DISK_ID=${devs_id[0]} else log_fail "No drives that supports removal" fi } # # Generate random file of the given size in MiB # function generate_random_file #path size_mb { typeset path=$1 typeset -i size_mb=$2 file_write -o create -f $path -b 1048576 -s0 -c $size_mb -d R } # # Wait until specific event or timeout occur. # # The passed function is executed with pool name as argument # with an interval of 1 second until it succeeds or until the # timeout occurs. # It returns 1 on timeout or 0 otherwise. # function wait_for_action #pool timeout function { typeset pool=$1 typeset -i timeout=$2 typeset func=$3 while [ $timeout -gt 0 ]; do (( --timeout )) if ( $func $pool ); then return 0 fi sleep 1 done return 1 } # # Helpers for wait_for_action function: # wait_for_resilver_start - wait until resilver is started # wait_for_resilver_end - wait until resilver is finished # wait_for_scrub_end - wait until scrub is finished # function wait_for_resilver_start #pool timeout { wait_for_action $1 $2 is_pool_resilvering return $? } function wait_for_resilver_end #pool timeout { wait_for_action $1 $2 is_pool_resilvered return $? } function wait_for_scrub_end #pool timeout { wait_for_action $1 $2 is_pool_scrubbed return $? } # # Check if scan action has been restarted on the given pool # function is_scan_restarted #pool { typeset pool=$1 zpool history -i $pool | grep -q "scan aborted, restarting" return $? } function is_deferred_scan_started #pool { typeset pool=$1 zpool history -i $pool | grep -q "starting deferred resilver" return $? } zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030412 xustar000000000000000030 atime=1579730437.273391867 30 ctime=1579730480.008763993 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/Makefile.am0000644016037001603700000000061113607166133030405 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_reopen dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_reopen_001_pos.ksh \ zpool_reopen_002_pos.ksh \ zpool_reopen_003_pos.ksh \ zpool_reopen_004_pos.ksh \ zpool_reopen_005_pos.ksh \ zpool_reopen_006_neg.ksh \ zpool_reopen_007_pos.ksh dist_pkgdata_DATA = \ zpool_reopen.cfg \ zpool_reopen.shlib zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030225 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.990763415 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/setup.ksh0000755016037001603700000000150313607166133030224 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved. # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.cfg verify_runnable "global" # Create scsi_debug devices for the reopen tests if is_linux; then load_scsi_debug $SDSIZE $SDHOSTS $SDTGTS $SDLUNS '512b' else log_unsupported "scsi debug module unsupported" fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007313607166147030520 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730479.99276348 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/cleanup.ksh0000755016037001603700000000150613607166147030523 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved. # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib verify_runnable "global" cleanup_devices $DISKS # Unplug the disk and remove scsi_debug module if is_linux; then for SDDEVICE in $(get_debug_device); do remove_disk $SDDEVICE done unload_scsi_debug fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen.cfg0000644000000000000000000000007413607166133031552 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.986763287 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen.cfg0000644016037001603700000000226213607166133031551 0ustar00hutter2hutter200000000000000# # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2016, 2017 by Intel Corporation. All rights reserved. # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') export DISKSARRAY=$DISKS export SMALL_FILE_SIZE=10 export LARGE_FILE_SIZE=80 export MAXTIMEOUT=40 export SDSIZE=256 export SDHOSTS=1 export SDTGTS=1 export SDLUNS=1 export DISK1=$(echo $DISKS | nawk '{print $1}') export DISK2=$(echo $DISKS | nawk '{print $2}') export DISK3=$(echo $DISKS | nawk '{print $3}') if is_linux; then set_slice_prefix set_device_dir devs_id[0]=$(get_persistent_disk_name $DISK1) devs_id[1]=$(get_persistent_disk_name $DISK2) devs_id[2]=$(get_persistent_disk_name $DISK3) export devs_id else DEV_DSKDIR="/dev" fi zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen_006_0000644000000000000000000000007413607166133031540 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.004763865 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_006_neg.ksh0000755016037001603700000000230313607166133033014 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Wrong arguments passed to zpool reopen should cause an error. # # STRATEGY: # 1. Create an array with bad 'zpool reopen' arguments. # 2. For each argument execute the 'zpool reopen' command and verify # if it returns an error. # verify_runnable "global" # 1. Create an array with bad 'zpool reopen' arguments. typeset -a args=("!" "1" "-s" "--n" "-1" "-" "-c" "-f" "-d 2" "-abc" "-na") log_assert "Test 'zpool reopen' with invalid arguments." # 2. For each argument execute the 'zpool reopen' command and verify # if it returns an error. for arg in ${args[@]}; do log_mustnot zpool reopen $arg done log_pass "Passing invalid arguments to 'zpool reopen' failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/zpool_reopen_003_0000644000000000000000000000007413612141514031525 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.998763673 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/zpool_reopen_003_pos.ksh0000755016037001603700000000562513612141514033043 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 Open-E, Inc. All Rights Reserved. # . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib # # DESCRIPTION: # Test zpool reopen while scrub is running. # Checks if re-plugged device is fully resilvered. # # STRATEGY: # 1. Create a pool # 2. Remove a disk. # 3. Write a test file to the pool and calculate its checksum. # 4. Execute scrub. # 5. "Plug back" disk. # 6. Reopen a pool. # 7. Check if scrub scan is replaced by resilver. # 8. Put another device offline and check if the test file checksum is correct. # # NOTES: # A 250ms delay is added to make sure that the scrub is running while # the reopen kicks the resilver. # verify_runnable "global" function cleanup { log_must zinject -c all # bring back removed disk online for further tests insert_disk $REMOVED_DISK $scsi_host poolexists $TESTPOOL && destroy_pool $TESTPOOL } log_assert "Testing zpool reopen with pool name as argument" log_onexit cleanup set_removed_disk scsi_host=$(get_scsi_host $REMOVED_DISK) # 1. Create a pool default_mirror_setup_noexit $REMOVED_DISK_ID $DISK2 # 2. Remove a disk. remove_disk $REMOVED_DISK log_must zpool reopen $TESTPOOL log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "unavail" # 3. Write a test file to the pool and calculate its checksum. TESTFILE=/$TESTPOOL/data log_must generate_random_file /$TESTPOOL/data $LARGE_FILE_SIZE TESTFILE_MD5=$(md5digest $TESTFILE) # 4. Execute scrub. # add delay to I/O requests for remaining disk in pool log_must zinject -d $DISK2 -D250:1 $TESTPOOL log_must zpool scrub $TESTPOOL # 5. "Plug back" disk. insert_disk $REMOVED_DISK $scsi_host # 6. Reopen a pool. log_must zpool reopen $TESTPOOL log_must check_state $TESTPOOL "$REMOVED_DISK_ID" "online" # 7. Check if scrub scan is replaced by resilver. # the scrub operation has to be running while reopen is executed log_must is_pool_scrubbing $TESTPOOL true # remove delay from disk log_must zinject -c all # the scrub will be replaced by resilver, wait until it ends log_must wait_for_resilver_end $TESTPOOL $MAXTIMEOUT # check if the scrub scan has been interrupted by resilver log_must is_scan_restarted $TESTPOOL # 8. Put another device offline and check if the test file checksum is correct. log_must zpool offline $TESTPOOL $DISK2 CHECK_MD5=$(md5digest $TESTFILE) [[ $CHECK_MD5 == $TESTFILE_MD5 ]] || \ log_fail "Checksums differ ($CHECK_MD5 != $TESTFILE_MD5)" log_must zpool online $TESTPOOL $DISK2 sleep 1 # clean up log_must zpool destroy $TESTPOOL log_pass "Zpool reopen test successful" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030403 xustar000000000000000030 mtime=1579730437.311393086 30 atime=1579730456.139997619 30 ctime=1579730480.011764091 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_reopen/Makefile.in0000664016037001603700000006171213612143005030416 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_reopen DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_reopen ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_reopen_001_pos.ksh \ zpool_reopen_002_pos.ksh \ zpool_reopen_003_pos.ksh \ zpool_reopen_004_pos.ksh \ zpool_reopen_005_pos.ksh \ zpool_reopen_006_neg.ksh \ zpool_reopen_007_pos.ksh dist_pkgdata_DATA = \ zpool_reopen.cfg \ zpool_reopen.shlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_reopen/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_reopen/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002025665 xustar000000000000000030 mtime=1579730434.618306621 30 atime=1579730454.625949007 30 ctime=1579730476.282644354 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/Makefile.in0000664016037001603700000007556013612143002025706 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root DIST_COMMON = $(dist_pkgdata_DATA) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" DATA = $(dist_pkgdata_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_DATA = \ cli_common.kshlib SUBDIRS = \ zdb \ zfs \ zfs_bookmark \ zfs_change-key \ zfs_clone \ zfs_copies \ zfs_create \ zfs_destroy \ zfs_diff \ zfs_get \ zfs_inherit \ zfs_load-key \ zfs_mount \ zfs_program \ zfs_promote \ zfs_property \ zfs_receive \ zfs_remap \ zfs_rename \ zfs_reservation \ zfs_rollback \ zfs_send \ zfs_set \ zfs_share \ zfs_snapshot \ zfs_sysfs \ zfs_unload-key \ zfs_unmount \ zfs_unshare \ zfs_upgrade \ zpool \ zpool_add \ zpool_attach \ zpool_clear \ zpool_create \ zpool_destroy \ zpool_detach \ zpool_events \ zpool_expand \ zpool_export \ zpool_get \ zpool_history \ zpool_import \ zpool_initialize \ zpool_labelclear \ zpool_offline \ zpool_online \ zpool_remove \ zpool_reopen \ zpool_replace \ zpool_resilver \ zpool_scrub \ zpool_set \ zpool_split \ zpool_status \ zpool_sync \ zpool_trim \ zpool_upgrade all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dist_pkgdataDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-dist_pkgdataDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dist_pkgdataDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-dist_pkgdataDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zfs_bookmark0000644000000000000000000000013213612143054026241 xustar000000000000000030 mtime=1579730476.570653601 30 atime=1579730489.095055741 30 ctime=1579730476.570653601 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/0000775016037001603700000000000013612143054026322 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030366 xustar000000000000000030 atime=1579730434.739310505 30 ctime=1579730476.568653537 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/Makefile.am0000644016037001603700000000024213607166133030361 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_bookmark dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_bookmark_cliargs.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/PaxHeaders.151519/zfs_bookmark_clia0000644000000000000000000000007413607166133031734 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.566653473 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/zfs_bookmark_cliargs.ksh0000755016037001603700000000665613607166133033251 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs bookmark' should work with both full and short arguments. # # STRATEGY: # 1. Create initial snapshot # 2. Verify we can create a bookmark specifying snapshot and bookmark full paths # 3. Verify we can create a bookmark specifying the snapshot name # 4. Verify we can create a bookmark specifying the bookmark name # 5. Verify at least a full dataset path is required and both snapshot and # bookmark name must be valid # verify_runnable "both" function cleanup { if snapexists "$DATASET@$TESTSNAP"; then log_must zfs destroy "$DATASET@$TESTSNAP" fi if bkmarkexists "$DATASET#$TESTBM"; then log_must zfs destroy "$DATASET#$TESTBM" fi } log_assert "'zfs bookmark' should work only when passed valid arguments." log_onexit cleanup DATASET="$TESTPOOL/$TESTFS" TESTSNAP='snapshot' TESTBM='bookmark' # Create initial snapshot log_must zfs snapshot "$DATASET@$TESTSNAP" # Verify we can create a bookmark specifying snapshot and bookmark full paths log_must zfs bookmark "$DATASET@$TESTSNAP" "$DATASET#$TESTBM" log_must eval "bkmarkexists $DATASET#$TESTBM" log_must zfs destroy "$DATASET#$TESTBM" # Verify we can create a bookmark specifying the snapshot name log_must zfs bookmark "@$TESTSNAP" "$DATASET#$TESTBM" log_must eval "bkmarkexists $DATASET#$TESTBM" log_must zfs destroy "$DATASET#$TESTBM" # Verify we can create a bookmark specifying the bookmark name log_must zfs bookmark "$DATASET@$TESTSNAP" "#$TESTBM" log_must eval "bkmarkexists $DATASET#$TESTBM" log_must zfs destroy "$DATASET#$TESTBM" # Verify at least a full dataset path is required and both snapshot and # bookmark name must be valid log_mustnot zfs bookmark "@$TESTSNAP" "#$TESTBM" log_mustnot zfs bookmark "$TESTSNAP" "#$TESTBM" log_mustnot zfs bookmark "@$TESTSNAP" "$TESTBM" log_mustnot zfs bookmark "$TESTSNAP" "$TESTBM" log_mustnot zfs bookmark "$TESTSNAP" "$DATASET#$TESTBM" log_mustnot zfs bookmark "$DATASET" "$TESTBM" log_mustnot zfs bookmark "$DATASET@" "$TESTBM" log_mustnot zfs bookmark "$DATASET" "#$TESTBM" log_mustnot zfs bookmark "$DATASET@" "#$TESTBM" log_mustnot zfs bookmark "$DATASET@$TESTSNAP" "$TESTBM" log_mustnot zfs bookmark "@" "#$TESTBM" log_mustnot zfs bookmark "@" "#" log_mustnot zfs bookmark "@$TESTSNAP" "#" log_mustnot zfs bookmark "@$TESTSNAP" "$DATASET#" log_mustnot zfs bookmark "@$TESTSNAP" "$DATASET" log_mustnot zfs bookmark "$TESTSNAP" "$DATASET#" log_mustnot zfs bookmark "$TESTSNAP" "$DATASET" log_mustnot eval "bkmarkexists $DATASET#$TESTBM" log_pass "'zfs bookmark' works as expected only when passed valid arguments." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030201 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.561653313 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/setup.ksh0000755016037001603700000000172013607166133030201 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030470 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730476.563653377 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/cleanup.ksh0000755016037001603700000000166213607166133030475 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002030354 xustar000000000000000030 mtime=1579730434.774311629 30 atime=1579730454.684950901 30 ctime=1579730476.570653601 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/Makefile.in0000664016037001603700000005733013612143002030370 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zfs_bookmark DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zfs_bookmark ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zfs_bookmark_cliargs.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zfs_bookmark/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_status0000644000000000000000000000013213612143060026315 xustar000000000000000030 mtime=1579730480.400776581 30 atime=1579730489.095055741 30 ctime=1579730480.400776581 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/0000775016037001603700000000000013612143060026376 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/PaxHeaders.151519/zpool_status_002_0000644000000000000000000000007413607166133031622 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.395776419 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_002_pos.ksh0000755016037001603700000000324413607166133033133 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool status' with correct options succeeds # # STRATEGY: # 1. Create an array of correctly formed 'zpool status' options # 2. Execute each element of the array. # 3. Verify use of each option is successful. # verify_runnable "both" typeset testpool if is_global_zone; then testpool=$TESTPOOL else testpool=${TESTPOOL%%/*} fi set -A args "" "-x" "-v" "-x $testpool" "-v $testpool" "-xv $testpool" \ "-vx $testpool" log_assert "Executing 'zpool status' with correct options succeeds" typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_must zpool status ${args[$i]} (( i = i + 1 )) done log_pass "'zpool status' with correct options succeeded" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030445 xustar000000000000000030 atime=1579730437.595402205 30 ctime=1579730480.398776517 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/Makefile.am0000644016037001603700000000027613607166133030447 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_status dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_status_001_pos.ksh \ zpool_status_002_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030260 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.389776227 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/setup.ksh0000755016037001603700000000173713607166133030270 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030547 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.391776291 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/cleanup.ksh0000755016037001603700000000171013607166133030546 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/PaxHeaders.151519/zpool_status_001_0000644000000000000000000000007413607166133031621 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.393776355 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/zpool_status_001_pos.ksh0000755016037001603700000000323613607166133033133 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Executing 'zpool status' command with bad options fails. # # STRATEGY: # 1. Create an array of badly formed 'zpool status' options # 2. Execute each element of the array. # 3. Verify an error code is returned. # verify_runnable "both" set -A args "" "-?" "-x fakepool" "-v fakepool" "-xv fakepool" "-vx fakepool" \ "-x $TESTPOOL/$TESTFS" "-v $TESTPOOL/$TESTFS" "-xv $TESTPOOL/$TESTFS" \ "-vx $TESTPOOL/$TESTFS" log_assert "Executing 'zpool status' with bad options fails" typeset -i i=1 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool status ${args[$i]} (( i = i + 1 )) done log_pass "'zpool status' command with bad options failed as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143005030435 xustar000000000000000029 mtime=1579730437.63140336 30 atime=1579730456.315003237 30 ctime=1579730480.400776581 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_status/Makefile.in0000664016037001603700000005736413612143005030461 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_status DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_status ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_status_001_pos.ksh \ zpool_status_002_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_status/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_status/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_scrub0000644000000000000000000000013213612143060026110 xustar000000000000000030 mtime=1579730480.203770255 30 atime=1579730489.095055741 30 ctime=1579730480.203770255 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/0000775016037001603700000000000013612143060026171 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub.cfg0000644000000000000000000000007413607166133031226 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.171769227 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg0000644016037001603700000000216313607166133031225 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # export DISK1=${DISKS%% *} export DISK2=$(echo $DISKS | awk '{print $2}') export ZFS_SCAN_VDEV_LIMIT_SLOW=$((128*1024)) export ZFS_SCAN_VDEV_LIMIT_DEFAULT=$((4*1024*1024)) zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_encryp0000644000000000000000000000007413607166147032055 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.190769837 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_encrypted_unloaded.ksh0000755016037001603700000000333713607166147035217 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Scrubs must work on an encrypted dataset with an unloaded key. # # STRATEGY: # 1. Create an encrypted dataset # 2. Generate data on the dataset # 3. Unmount the encrypted dataset and unload its key # 4. Start a scrub # 5. Wait for the scrub to complete # 6. Verify the scrub had no errors # 7. Load the dataset key and mount it # verify_runnable "global" function cleanup { datasetexists $TESTPOOL/$TESTFS2 && \ log_must zfs destroy $TESTPOOL/$TESTFS2 } log_onexit cleanup log_assert "Scrubs must work on an encrypted dataset with an unloaded key" log_must eval "echo 'password' | zfs create -o encryption=on" \ "-o keyformat=passphrase $TESTPOOL/$TESTFS2" typeset mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS2) log_must mkfile 10m $mntpnt/file1 for i in 2..10; do log_must mkfile 512b $mntpnt/file$i done log_must zfs unmount $TESTPOOL/$TESTFS2 log_must zfs unload-key $TESTPOOL/$TESTFS2 log_must zpool scrub $TESTPOOL while ! is_pool_scrubbed $TESTPOOL; do sleep 1 done log_must check_pool_status $TESTPOOL "scan" "with 0 errors" log_must eval "echo 'password' | zfs mount -l $TESTPOOL/$TESTFS2" log_pass "Scrubs work on an encrypted dataset with an unloaded key" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_offlin0000644000000000000000000000007413607166133032025 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.193769934 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_offline_device.ksh0000755016037001603700000000702213607166133034276 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2017, loli10K . All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_reopen/zpool_reopen.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg # # DESCRIPTION: # Scrubbing a pool with offline devices correctly preserves DTL entries # # STRATEGY: # 1. Create the pool # 2. Offline the first device # 3. Write to the pool # 4. Scrub the pool # 5. Online the first device and offline the second device # 6. Scrub the pool again # 7. Verify data integrity # # NOTE: # Ported from script used to reproduce issue #5806 # verify_runnable "global" function cleanup { poolexists $TESTPOOL2 && destroy_pool $TESTPOOL2 log_must rm -f $DISK1 $DISK2 $DISK3 $DISK4 } # # Update to [online|offline] $device status on $pool synchronously # function zpool_do_sync # { status="$1" pool="$2" device="$3" if [[ $status != "online" && $status != "offline" ]]; then log_fail "zpool_do_sync: invalid status $status" fi log_must zpool $status $pool $device for i in {1..10}; do check_state $pool $device $status && return 0 done log_fail "Failed to $status device $device" } # # Start a scrub on $pool and wait for its completion # function zpool_scrub_sync # { pool="$1" log_must zpool scrub $pool while ! is_pool_scrubbed $pool; do sleep 1 done } log_assert "Scrubbing a pool with offline devices correctly preserves DTLs" log_onexit cleanup DEVSIZE='128m' FILESIZE='100m' TESTDIR="$TEST_BASE_DIR/zpool_scrub_offline_device" DISK1="$TEST_BASE_DIR/zpool_disk1.dat" DISK2="$TEST_BASE_DIR/zpool_disk2.dat" DISK3="$TEST_BASE_DIR/zpool_disk3.dat" DISK4="$TEST_BASE_DIR/zpool_disk4.dat" RESILVER_TIMEOUT=40 # 1. Create the pool log_must truncate -s $DEVSIZE $DISK1 log_must truncate -s $DEVSIZE $DISK2 log_must truncate -s $DEVSIZE $DISK3 log_must truncate -s $DEVSIZE $DISK4 poolexists $TESTPOOL2 && destroy_pool $TESTPOOL2 log_must zpool create -O mountpoint=$TESTDIR $TESTPOOL2 \ raidz2 $DISK1 $DISK2 $DISK3 $DISK4 # 2. Offline the first device zpool_do_sync 'offline' $TESTPOOL2 $DISK1 # 3. Write to the pool log_must mkfile $FILESIZE "$TESTDIR/data.bin" # 4. Scrub the pool zpool_scrub_sync $TESTPOOL2 # 5. Online the first device and offline the second device zpool_do_sync 'online' $TESTPOOL2 $DISK1 zpool_do_sync 'offline' $TESTPOOL2 $DISK2 log_must wait_for_resilver_end $TESTPOOL2 $RESILVER_TIMEOUT # 6. Scrub the pool again zpool_scrub_sync $TESTPOOL2 # 7. Verify data integrity cksum=$(zpool status $TESTPOOL2 | awk 'L{print $NF;L=0} /CKSUM$/{L=1}') if [[ $cksum != 0 ]]; then log_fail "Unexpected CKSUM errors found on $TESTPOOL2 ($cksum)" fi log_pass "Scrubbing a pool with offline devices correctly preserves DTLs" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030240 xustar000000000000000030 atime=1579730437.433397004 30 ctime=1579730480.200770159 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile.am0000644016037001603700000000070213607166133030234 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_scrub dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_scrub_001_neg.ksh \ zpool_scrub_002_pos.ksh \ zpool_scrub_003_pos.ksh \ zpool_scrub_004_pos.ksh \ zpool_scrub_005_pos.ksh \ zpool_scrub_encrypted_unloaded.ksh \ zpool_scrub_offline_device.ksh \ zpool_scrub_print_repairing.ksh \ zpool_scrub_multiple_copies.ksh dist_pkgdata_DATA = \ zpool_scrub.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_print_0000644000000000000000000000007413607166133032043 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.195769999 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_print_repairing.ksh0000755016037001603700000000422013607166133034526 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # Copyright (c) 2018 Lawrence Livermore National Security, LLC. . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg # # DESCRIPTION: # zpool status should print "(repairing)" on drives with errors found # while scrubbing. # # STRATEGY: # 1. Create a file (already done in setup.ksh) # 2. Inject read errors on one vdev # 3. Run a scrub # 4. Verify we see "(repairing)" on the bad vdev # verify_runnable "global" log_assert "Verify we see '(repairing)' while scrubbing a bad vdev." function cleanup { log_must zinject -c all log_must set_tunable64 zfs_scan_vdev_limit $ZFS_SCAN_VDEV_LIMIT_DEFAULT zpool scrub -s $TESTPOOL || true } log_onexit cleanup # A file is already created in setup.ksh. Inject read errors on the first disk. log_must zinject -d $DISK1 -e io -T read -f 100 $TESTPOOL # Make the scrub slow log_must zinject -d $DISK1 -D10:1 $TESTPOOL log_must set_tunable64 zfs_scan_vdev_limit $ZFS_SCAN_VDEV_LIMIT_SLOW log_must zpool scrub $TESTPOOL # Wait for the scrub to show '(repairing)'. Timeout after 10 sec if it doesn't # show it. for i in {0..100} ; do if ! is_pool_scrubbing $TESTPOOL ; then break fi if zpool status | grep "$DISK1" | grep -q '(repairing)' ; then log_pass "Correctly saw '(repairing)' while scrubbing" fi sleep 0.1 done log_fail "Never saw '(repairing)' while scrubbing" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_multip0000644000000000000000000000007413607166133032062 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.198770095 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_multiple_copies.ksh0000755016037001603700000000412613607166133034534 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 Datto, Inc. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Scrubs and self-healing should be able to repair data from additional # copies that may be stored. # # # STRATEGY: # 1. Create a dataset with copies=3 # 2. Write a file to the dataset # 3. zinject errors into the first and second DVAs of that file # 4. Scrub and verify the scrub repaired all errors # 7. Read the file normally to check that self healing also works # 8. Remove the zinject handler # 9. Scrub again and confirm 0 bytes were scrubbed # verify_runnable "global" function cleanup { destroy_dataset $TESTPOOL/$TESTFS2 log_must zinject -c all } log_onexit cleanup log_assert "Scrubs and self healing must work with additional copies" log_must zfs create -o copies=3 $TESTPOOL/$TESTFS2 typeset mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS2) log_must mkfile 10m $mntpnt/file log_must zpool sync $TESTPOOL log_must zinject -a -t data -C 0,1 -e io $mntpnt/file log_must zpool scrub $TESTPOOL log_must wait_scrubbed $TESTPOOL log_must check_pool_status $TESTPOOL "scan" "with 0 errors" log_must check_pool_status $TESTPOOL "errors" "No known data errors" log_must dd if=$mntpnt/file of=/dev/null bs=1M iflag=fullblock log_must check_pool_status $TESTPOOL "errors" "No known data errors" log_must zinject -c all log_must zpool scrub $TESTPOOL log_must wait_scrubbed $TESTPOOL zpool status log_must check_pool_status $TESTPOOL "errors" "No known data errors" log_must check_pool_status $TESTPOOL "scan" "with 0 errors" log_must check_pool_status $TESTPOOL "scan" "repaired 0B" log_pass "Scrubs and self healing work with additional copies" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030053 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.174769323 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/setup.ksh0000755016037001603700000000246613607166133030063 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg verify_runnable "global" verify_disk_count "$DISKS" 2 default_mirror_setup_noexit $DISK1 $DISK2 mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) # Create 256M of data log_must file_write -b 1048576 -c 256 -o create -d 0 -f $mntpnt/bigfile log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030342 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.176769389 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/cleanup.ksh0000755016037001603700000000213013607166133030336 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg verify_runnable "global" log_must set_tunable32 zfs_scan_suspend_progress 0 destroy_mirrors zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_003_po0000644000000000000000000000007413607166133031550 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.183769613 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_003_pos.ksh0000755016037001603700000000352613607166133032525 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # Copyright (c) 2017 by Datto Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg # # DESCRIPTION: # scrub command fails when there is an existing scrub in progress # # STRATEGY: # 1. Setup a pool and fill it with data # 2. Kick off a scrub # 2. Kick off a second scrub and verify it fails # verify_runnable "global" function cleanup { log_must set_tunable32 zfs_scan_suspend_progress 0 } log_onexit cleanup log_assert "Scrub command fails when there is already a scrub in progress" log_must set_tunable32 zfs_scan_suspend_progress 1 log_must zpool scrub $TESTPOOL log_must is_pool_scrubbing $TESTPOOL true log_mustnot zpool scrub $TESTPOOL log_must is_pool_scrubbing $TESTPOOL true log_must zpool scrub -s $TESTPOOL log_must is_pool_scrub_stopped $TESTPOOL true log_pass "Issuing a scrub command failed when scrub was already in progress" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_001_ne0000644000000000000000000000007413607166133031532 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.179769485 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_001_neg.ksh0000755016037001603700000000351313607166133032467 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # A badly formed parameter passed to 'zpool scrub' should # return an error. # # STRATEGY: # 1. Create an array containing bad 'zpool scrub' parameters. # 2. For each element, execute the sub-command. # 3. Verify it returns an error. # verify_runnable "global" set -A args "" "-?" "blah blah" "-%" "--?" "-*" "-=" \ "-a" "-b" "-c" "-d" "-e" "-f" "-g" "-h" "-i" "-j" "-k" "-l" \ "-m" "-n" "-o" "-p" "-q" "-r" "-s" "-t" "-u" "-v" "-w" "-x" "-y" "-z" \ "-A" "-B" "-C" "-D" "-E" "-F" "-G" "-H" "-I" "-J" "-K" "-L" \ "-M" "-N" "-O" "-P" "-Q" "-R" "-S" "-T" "-U" "-V" "-W" "-X" "-W" "-Z" log_assert "Execute 'zpool scrub' using invalid parameters." typeset -i i=0 while [[ $i -lt ${#args[*]} ]]; do log_mustnot zpool scrub ${args[i]} ((i = i + 1)) done log_pass "Badly formed 'zpool scrub' parameters fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_002_po0000644000000000000000000000007413607166133031547 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.181769549 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_002_pos.ksh0000755016037001603700000000461613607166133032525 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # Copyright (c) 2017 Datto Inc. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg # # DESCRIPTION: # Verify scrub, scrub -p, and scrub -s show the right status. # # STRATEGY: # 1. Create pool and create a 100MB file in it. # 2. zpool scrub the pool and verify it's doing a scrub. # 3. Pause scrub and verify it's paused. # 4. Try to pause a paused scrub and make sure that fails. # 5. Resume the paused scrub and verify scrub is again being performed. # 6. Verify zpool scrub -s succeed when the system is scrubbing. # verify_runnable "global" function cleanup { log_must set_tunable32 zfs_scan_suspend_progress 0 log_must rm -f $mntpnt/biggerfile } log_onexit cleanup log_assert "Verify scrub, scrub -p, and scrub -s show the right status." # Create 1G of additional data mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) log_must file_write -b 1048576 -c 1024 -o create -d 0 -f $mntpnt/biggerfile log_must sync log_must set_tunable32 zfs_scan_suspend_progress 1 log_must zpool scrub $TESTPOOL log_must is_pool_scrubbing $TESTPOOL true log_must zpool scrub -p $TESTPOOL log_must is_pool_scrub_paused $TESTPOOL true log_mustnot zpool scrub -p $TESTPOOL log_must is_pool_scrub_paused $TESTPOOL true log_must zpool scrub $TESTPOOL log_must is_pool_scrubbing $TESTPOOL true log_must zpool scrub -s $TESTPOOL log_must is_pool_scrub_stopped $TESTPOOL true log_pass "Verified scrub, -s, and -p show expected status." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143005030231 xustar000000000000000030 mtime=1579730437.471398223 30 atime=1579730456.228000443 30 ctime=1579730480.203770255 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile.in0000664016037001603700000006200013612143005030233 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_scrub DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_scrub ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_scrub_001_neg.ksh \ zpool_scrub_002_pos.ksh \ zpool_scrub_003_pos.ksh \ zpool_scrub_004_pos.ksh \ zpool_scrub_005_pos.ksh \ zpool_scrub_encrypted_unloaded.ksh \ zpool_scrub_offline_device.ksh \ zpool_scrub_print_repairing.ksh \ zpool_scrub_multiple_copies.ksh dist_pkgdata_DATA = \ zpool_scrub.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_scrub/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_005_po0000644000000000000000000000007413607166147031557 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.188769773 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_005_pos.ksh0000755016037001603700000000343213607166147032530 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg # # DESCRIPTION: # When scrubbing, detach device should not break system. # # STRATEGY: # 1. Setup filesys with data. # 2. Detaching and attaching the device when scrubbing. # 3. Try it twice, verify both of them work fine. # verify_runnable "global" log_assert "When scrubbing, detach device should not break system." log_must zpool scrub $TESTPOOL log_must zpool detach $TESTPOOL $DISK2 log_must zpool attach $TESTPOOL $DISK1 $DISK2 while ! is_pool_resilvered $TESTPOOL; do sleep 1 done log_must zpool scrub $TESTPOOL log_must zpool detach $TESTPOOL $DISK1 log_must zpool attach $TESTPOOL $DISK2 $DISK1 while ! is_pool_resilvered $TESTPOOL; do sleep 1 done log_pass "When scrubbing, detach device should not break system." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/PaxHeaders.151519/zpool_scrub_004_po0000644000000000000000000000007413607166147031556 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730480.186769709 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_004_pos.ksh0000755016037001603700000000446313607166147032534 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_scrub/zpool_scrub.cfg # # DESCRIPTION: # Resilver prevent scrub from starting until the resilver completes # # STRATEGY: # 1. Setup a mirror pool and filled with data. # 2. Detach one of devices # 3. Create a file for the resilver to work on so it takes some time # 4. Export/import the pool to ensure the cache is dropped # 5. Verify scrub failed until the resilver completed # function cleanup { log_must set_tunable32 zfs_scan_suspend_progress 0 rm -f $mntpnt/extra } verify_runnable "global" log_onexit cleanup log_assert "Resilver prevent scrub from starting until the resilver completes" mntpnt=$(get_prop mountpoint $TESTPOOL/$TESTFS) # Temporarily prevent scan progress so our test doesn't race log_must set_tunable32 zfs_scan_suspend_progress 1 while ! is_pool_resilvering $TESTPOOL; do log_must zpool detach $TESTPOOL $DISK2 log_must file_write -b 1048576 -c 128 -o create -d 0 -f $mntpnt/extra log_must zpool export $TESTPOOL log_must zpool import $TESTPOOL log_must zpool attach $TESTPOOL $DISK1 $DISK2 done log_must is_pool_resilvering $TESTPOOL log_mustnot zpool scrub $TESTPOOL log_must set_tunable32 zfs_scan_suspend_progress 0 while ! is_pool_resilvered $TESTPOOL; do sleep 1 done log_pass "Resilver prevent scrub from starting until the resilver completes" zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/PaxHeaders.151519/zpool_export0000644000000000000000000000013213612143057026321 xustar000000000000000030 mtime=1579730479.308741517 30 atime=1579730489.095055741 30 ctime=1579730479.308741517 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/0000775016037001603700000000000013612143057026402 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/zpool_export_002_0000644000000000000000000000007413607166133031616 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.299741229 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export_002_pos.ksh0000755016037001603700000000377213607166133033135 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # The 'zpool export' command must fail when a pool is # busy i.e. mounted. # # STRATEGY: # 1. Try and export the default pool when mounted and busy. # 2. Verify an error is returned. # verify_runnable "global" function cleanup { typeset dir=$(get_device_dir $DISKS) cd $olddir || \ log_fail "Couldn't cd back to $olddir" datasetexists "$TESTPOOL/$TESTFS" || \ log_must zpool import -d $dir $TESTPOOL ismounted "$TESTPOOL/$TESTFS" (( $? != 0 )) && \ log_must zfs mount $TESTPOOL/$TESTFS [[ -e $TESTDIR/$TESTFILE0 ]] && \ log_must rm -rf $TESTDIR/$TESTFILE0 } olddir=$PWD log_onexit cleanup log_assert "Verify a busy ZPOOL cannot be exported." ismounted "$TESTPOOL/$TESTFS" (( $? != 0 )) && \ log_fail "$TESTDIR not mounted. Unable to continue." cd $TESTDIR || \ log_fail "Couldn't cd to $TESTDIR" log_mustnot zpool export $TESTPOOL poolexists $TESTPOOL || \ log_fail "$TESTPOOL not found in 'zpool list' output." log_pass "Unable to export a busy ZPOOL as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/zpool_export_001_0000644000000000000000000000007413607166133031615 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.296741131 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export_001_pos.ksh0000755016037001603700000000355613607166133033134 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_export/zpool_export.cfg # # DESCRIPTION: # Exported pools should no longer be visible from 'zpool list'. # Therefore, we export an existing pool and verify it cannot # be accessed. # # STRATEGY: # 1. Unmount the test directory. # 2. Export the pool. # 3. Verify the pool is no longer present in the list output. # verify_runnable "global" function cleanup { typeset dir=$(get_device_dir $DISKS) datasetexists "$TESTPOOL/$TESTFS" || \ log_must zpool import -d $dir $TESTPOOL ismounted "$TESTPOOL/$TESTFS" (( $? != 0 )) && \ log_must zfs mount $TESTPOOL/$TESTFS } log_onexit cleanup log_assert "Verify a pool can be exported." log_must zfs umount $TESTDIR log_must zpool export $TESTPOOL poolexists $TESTPOOL && \ log_fail "$TESTPOOL unexpectedly found in 'zpool list' output." log_pass "Successfully exported a ZPOOL." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/zpool_export_004_0000644000000000000000000000007413607166133031620 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.303741357 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export_004_pos.ksh0000755016037001603700000000537713607166133033142 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Verify zpool export succeed or fail with spare. # # STRATEGY: # 1. Create two mirror pools with same spare. # 2. Verify zpool export one pool succeed. # 3. Import the pool. # 4. Replace one device with the spare and detach it in one pool. # 5. Verify zpool export the pool succeed. # 6. Import the pool. # 7. Replace one device with the spare in one pool. # 8. Verify zpool export the pool fail. # 9. Verify zpool export the pool with "-f" succeed. # 10. Import the pool. # verify_runnable "global" function cleanup { mntpnt=$TESTDIR0 datasetexists $TESTPOOL1 || log_must zpool import -d $mntpnt $TESTPOOL1 datasetexists $TESTPOOL1 && destroy_pool $TESTPOOL1 datasetexists $TESTPOOL2 && destroy_pool $TESTPOOL2 typeset -i i=0 while ((i < 5)); do if [[ -e $mntpnt/vdev$i ]]; then log_must rm -f $mntpnt/vdev$i fi ((i += 1)) done log_must rmdir $mntpnt } log_assert "Verify zpool export succeed or fail with spare." log_onexit cleanup mntpnt=$TESTDIR0 log_must mkdir -p $mntpnt # mntpnt=$(get_prop mountpoint $TESTPOOL) typeset -i i=0 while ((i < 5)); do log_must truncate -s $MINVDEVSIZE $mntpnt/vdev$i eval vdev$i=$mntpnt/vdev$i ((i += 1)) done log_must zpool create $TESTPOOL1 mirror $vdev0 $vdev1 spare $vdev4 log_must zpool create $TESTPOOL2 mirror $vdev2 $vdev3 spare $vdev4 log_must zpool export $TESTPOOL1 log_must zpool import -d $mntpnt $TESTPOOL1 log_must zpool replace $TESTPOOL1 $vdev0 $vdev4 log_must zpool detach $TESTPOOL1 $vdev4 log_must zpool export $TESTPOOL1 log_must zpool import -d $mntpnt $TESTPOOL1 log_must zpool replace $TESTPOOL1 $vdev0 $vdev4 log_mustnot zpool export $TESTPOOL1 log_must zpool export -f $TESTPOOL1 log_must zpool import -d $mntpnt $TESTPOOL1 log_pass "Verify zpool export succeed or fail with spare." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133030443 xustar000000000000000030 atime=1579730436.735374592 30 ctime=1579730479.305741421 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/Makefile.am0000644016037001603700000000043713607166133030444 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_export dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_export_001_pos.ksh \ zpool_export_002_pos.ksh \ zpool_export_003_neg.ksh \ zpool_export_004_pos.ksh dist_pkgdata_DATA = \ zpool_export.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133030256 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.290740939 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/setup.ksh0000755016037001603700000000222113607166133030253 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/cli_root/zpool_export/zpool_export.cfg DISK=${DISKS%% *} if ! $(is_physical_device $DISK) ; then log_unsupported "Only partitionable physical disks can be used" fi default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133030545 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.293741035 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/cleanup.ksh0000755016037001603700000000171013607166133030544 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/zpool_export.cfg0000644000000000000000000000007413607166133031634 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.288740875 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export.cfg0000644016037001603700000000301013607166133031623 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2012, 2014 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export DISK_ARRAY_NUM=0 export DISK_ARRAY_LIMIT=4 export DISKSARRAY="" export VDEVS_NUM=32 function set_disks { typeset -a disk_array=($(find_disks $DISKS)) if (( ${#disk_array[*]} <= 1 )); then export DISK=${DISKS%% *} else export DISK="" typeset -i i=0 while (( i < ${#disk_array[*]} )); do export DISK${i}="${disk_array[$i]}" DISKSARRAY="$DISKSARRAY ${disk_array[$i]}" (( i = i + 1 )) (( i>$DISK_ARRAY_LIMIT )) && break done export DISK_ARRAY_NUM=$i export DISKSARRAY fi } set_disks set_device_dir zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/zpool_export_003_0000644000000000000000000000007413607166133031617 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730479.301741293 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/zpool_export_003_neg.ksh0000755016037001603700000000347013607166133033101 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zpool export' should return an error with badly formed parameters, # # STRATEGY: # 1. Create an array of parameters # 2. For each parameter in the array, execute 'zpool export' # 3. Verify an error is returned. # verify_runnable "global" function cleanup { typeset dir=$(get_device_dir $DISKS) datasetexists "$TESTPOOL/$TESTFS" || \ log_must zpool import -d $dir $TESTPOOL ismounted "$TESTPOOL/$TESTFS" (( $? != 0 )) && \ log_must zfs mount $TESTPOOL/$TESTFS } log_onexit cleanup set -A args "" "-f" "-? $TESTPOOL" "-QWERTYUIO $TESTPOOL" log_assert "'zpool export' should return an error with badly-formed parameters." typeset -i i=0 while (( $i < ${#args[*]} )); do log_mustnot zpool export ${args[i]} ((i = i + 1)) done log_pass "'zpool export' badly formed parameters fail as expected." zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143004030433 xustar000000000000000030 mtime=1579730436.772375782 30 atime=1579730455.803986829 30 ctime=1579730479.308741517 zfs-0.8.3/tests/zfs-tests/tests/functional/cli_root/zpool_export/Makefile.in0000664016037001603700000006154013612143004030445 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cli_root/zpool_export DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_export ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ zpool_export_001_pos.ksh \ zpool_export_002_pos.ksh \ zpool_export_003_neg.ksh \ zpool_export_004_pos.ksh dist_pkgdata_DATA = \ zpool_export.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_export/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cli_root/zpool_export/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/threadsappend0000644000000000000000000000013213612143065024564 xustar000000000000000030 mtime=1579730485.472939439 30 atime=1579730489.095055741 30 ctime=1579730485.472939439 zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/0000775016037001603700000000000013612143065024645 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026707 xustar000000000000000030 atime=1579730441.333522224 30 ctime=1579730485.470939375 zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/Makefile.am0000644016037001603700000000030313607166133026700 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/threadsappend dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ threadsappend_001_pos.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133026522 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.466939247 zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/setup.ksh0000755016037001603700000000203413607166133026521 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib DISK=${DISKS%% *} default_setup ${DISK} zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133027011 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.463939151 zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/cleanup.ksh0000755016037001603700000000200313607166133027004 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/PaxHeaders.151519/threadsappend_001_pos.ksh0000644000000000000000000000007413607166133031445 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.468939311 zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/threadsappend_001_pos.ksh0000755016037001603700000000436513607166133031455 0ustar00hutter2hutter200000000000000#! /bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # # Ensure multiple threads performing write appends to the same ZFS # file succeed. # # STRATEGY: # 1) Verify this is a multi-processor system # 2) Create multiple threads with each appending to a file # 3) Verify that the resulting file is the expected size # verify_runnable "both" log_assert "Ensure multiple threads performing write appends to the same" \ "ZFS file succeed" # # $FILE_SIZE is hardcoded into threadsappend.c and is the expected # size of the file after all the threads have appended to it # typeset -i FILE_SIZE=1310720 TESTFILE='testfile-threadsappend' # # This test should be run on a multi-processor system because otherwise the FS # will not be concurrently used by the threads # if ! is_mp; then log_fail "This test should be executed on a multi-processor system." fi # # zfs_threadsappend tries to append to $TESTFILE using threads # so that the resulting file is $FILE_SIZE bytes in size # log_must threadsappend ${TESTDIR}/${TESTFILE} # # Check the size of the resulting file # SIZE=`ls -l ${TESTDIR}/${TESTFILE} | awk '{print $5}'` if [[ $SIZE -ne $FILE_SIZE ]]; then log_fail "'The length of ${TESTDIR}/${TESTFILE}' doesn't equal 1310720." fi log_pass "Multiple thread appends succeeded. File size as expected" zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143011026675 xustar000000000000000030 mtime=1579730441.371523445 30 atime=1579730458.406070377 30 ctime=1579730485.472939439 zfs-0.8.3/tests/zfs-tests/tests/functional/threadsappend/Makefile.in0000664016037001603700000006074513612143011026715 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/config/Rules.am subdir = tests/zfs-tests/tests/functional/threadsappend ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/threadsappend ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ threadsappend_001_pos.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/threadsappend/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/threadsappend/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/mmp0000644000000000000000000000013213612143063022531 xustar000000000000000030 mtime=1579730483.221867161 30 atime=1579730489.095055741 30 ctime=1579730483.221867161 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/0000775016037001603700000000000013612143063022612 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_write_uberblocks.ksh0000644000000000000000000000007413607166133027547 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.204866615 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_write_uberblocks.ksh0000755016037001603700000000311013607166133027542 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Verify MMP behaves correctly when failing to write uberblocks. # # STRATEGY: # 1. Create a mirrored pool and enable multihost # 2. Inject a 50% failure rate when writing uberblocks to a device # 3. Delay briefly for additional MMP writes to complete # 4. Verify the failed uberblock writes did not prevent MMP updates # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { zinject -c all default_cleanup_noexit log_must mmp_clear_hostid } log_assert "mmp behaves correctly when failing to write uberblocks." log_onexit cleanup log_must mmp_set_hostid $HOSTID1 default_mirror_setup_noexit $DISKS log_must zpool set multihost=on $TESTPOOL log_must zinject -d ${DISK[0]} -e io -T write -f 50 $TESTPOOL -L uber clear_mmp_history uber_count=$(count_mmp_writes $TESTPOOL 3) if [ $uber_count -eq 0 ]; then log_fail "mmp writes did not occur when uberblock IO errors injected" fi log_pass "mmp correctly wrote uberblocks when IO errors injected" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_exported_import.ksh0000644000000000000000000000007413607166133027426 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.202866551 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_exported_import.ksh0000755016037001603700000000600613607166133027430 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Verify import behavior for exported pool (no activity check) # # STRATEGY: # 1. Create a zpool # 2. Verify multihost=off and hostids match (no activity check) # 3. Verify multihost=off and hostids differ (no activity check) # 4. Verify multihost=off and hostid zero allowed (no activity check) # 5. Verify multihost=on and hostids match (no activity check) # 6. Verify multihost=on and hostids differ (no activity check) # 7. Verify multihost=on and hostid zero fails (no activity check) # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { default_cleanup_noexit log_must mmp_clear_hostid } log_assert "multihost=on|off activity checks exported pool" log_onexit cleanup # 1. Create a zpool log_must mmp_set_hostid $HOSTID1 default_setup_noexit $DISK # 2. Verify multihost=off and hostids match (no activity check) log_must zpool set multihost=off $TESTPOOL for opt in "" "-f"; do log_must zpool export $TESTPOOL log_must import_no_activity_check $TESTPOOL $opt done # 3. Verify multihost=off and hostids differ (no activity check) for opt in "" "-f"; do log_must mmp_pool_set_hostid $TESTPOOL $HOSTID1 log_must zpool export $TESTPOOL log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID2 log_must import_no_activity_check $TESTPOOL $opt done # 4. Verify multihost=off and hostid zero allowed (no activity check) log_must mmp_clear_hostid for opt in "" "-f"; do log_must zpool export $TESTPOOL log_must import_no_activity_check $TESTPOOL $opt done # 5. Verify multihost=on and hostids match (no activity check) log_must mmp_pool_set_hostid $TESTPOOL $HOSTID1 log_must zpool set multihost=on $TESTPOOL for opt in "" "-f"; do log_must zpool export $TESTPOOL log_must import_no_activity_check $TESTPOOL $opt done # 6. Verify multihost=on and hostids differ (no activity check) for opt in "" "-f"; do log_must mmp_pool_set_hostid $TESTPOOL $HOSTID1 log_must zpool export $TESTPOOL log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID2 log_must import_no_activity_check $TESTPOOL $opt done # 7. Verify multihost=on and hostid zero fails (no activity check) log_must zpool export $TESTPOOL log_must mmp_clear_hostid for opt in "" "-f"; do MMP_IMPORTED_MSG="Set a unique system hostid" log_must check_pool_import $TESTPOOL "" "action" "$MMP_IMPORTED_MSG" log_mustnot import_no_activity_check $TESTPOOL $opt done log_pass "multihost=on|off exported pool activity checks passed" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_on_off.ksh0000644000000000000000000000007313607166133025447 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730483.19286623 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_on_off.ksh0000755016037001603700000000423013607166133025447 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # When multihost=off ensure that leaf vdev uberblocks are not updated. # # STRATEGY: # 1. Set multihost=off (disables mmp) # 2. Set zfs_txg_timeout to large value # 3. Create a zpool # 4. Find the current "best" uberblock # 5. Sleep for enough time for uberblocks to change # 6. Find the current "best" uberblock # 7. If the uberblock changed, fail # 8. Set multihost=on # 9. Sleep for enough time for uberblocks to change # 10. Find the current "best" uberblock # 11. If uberblocks didn't change, fail # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { default_cleanup_noexit log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT log_must rm -f $PREV_UBER $CURR_UBER log_must mmp_clear_hostid } log_assert "mmp thread won't write uberblocks with multihost=off" log_onexit cleanup log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_MIN log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_LONG log_must mmp_set_hostid $HOSTID1 default_setup_noexit $DISK log_must zpool set multihost=off $TESTPOOL log_must zdb -u $TESTPOOL > $PREV_UBER log_must sleep 5 log_must zdb -u $TESTPOOL > $CURR_UBER if ! diff "$CURR_UBER" "$PREV_UBER"; then log_fail "mmp thread has updated an uberblock" fi log_must zpool set multihost=on $TESTPOOL log_must sleep 5 log_must zdb -u $TESTPOOL > $CURR_UBER if diff "$CURR_UBER" "$PREV_UBER"; then log_fail "mmp failed to update uberblocks" fi log_pass "mmp thread won't write uberblocks with multihost=off passed" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_on_thread.ksh0000644000000000000000000000007413607166133026145 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.188866101 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_on_thread.ksh0000755016037001603700000000315313607166133026147 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Ensure that the MMP thread is writing uberblocks. # # STRATEGY: # 1. Set zfs_txg_timeout to large value # 2. Create a zpool # 3. Find the current "best" uberblock # 4. Sleep for enough time for a potential uberblock update # 5. Find the current "best" uberblock # 6. If the uberblock never changed, fail # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { default_cleanup_noexit log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT log_must rm -f $PREV_UBER $CURR_UBER log_must mmp_clear_hostid } log_assert "mmp thread writes uberblocks (MMP)" log_onexit cleanup log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_LONG log_must mmp_set_hostid $HOSTID1 default_setup_noexit $DISK log_must zpool set multihost=on $TESTPOOL log_must zdb -u $TESTPOOL > $PREV_UBER log_must sleep 5 log_must zdb -u $TESTPOOL > $CURR_UBER if diff -u "$CURR_UBER" "$PREV_UBER"; then log_fail "mmp failed to update uberblocks" fi log_pass "mmp thread writes uberblocks (MMP) passed" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_on_uberblocks.ksh0000644000000000000000000000007413612141513027020 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.190866165 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_on_uberblocks.ksh0000755016037001603700000000507013612141513027022 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Ensure that MMP updates uberblocks with MMP info at expected intervals. # # STRATEGY: # 1. Set zfs_txg_timeout to large value # 2. Create a zpool # 3. Clear multihost history # 4. Sleep, then collect count of uberblocks written # 5. If number of changes seen is less than min threshold, then fail # 6. If number of changes seen is more than max threshold, then fail # 7. Sequence number increments when no TXGs are syncing # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" UBER_CHANGES=0 EXPECTED=$(($(echo $DISKS | wc -w) * 10)) FUDGE=$((EXPECTED * 20 / 100)) MIN_UB_WRITES=$((EXPECTED - FUDGE)) MAX_UB_WRITES=$((EXPECTED + FUDGE)) MIN_SEQ_VALUES=7 function cleanup { default_cleanup_noexit log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_DEFAULT log_must mmp_clear_hostid } log_assert "Ensure MMP uberblocks update at the correct interval" log_onexit cleanup log_must set_tunable64 zfs_txg_timeout $TXG_TIMEOUT_LONG log_must mmp_set_hostid $HOSTID1 default_setup_noexit "$DISKS" log_must zpool set multihost=on $TESTPOOL clear_mmp_history UBER_CHANGES=$(count_mmp_writes $TESTPOOL 10) log_note "Uberblock changed $UBER_CHANGES times" if [ $UBER_CHANGES -lt $MIN_UB_WRITES ]; then log_fail "Fewer uberblock writes occurred than expected ($EXPECTED)" fi if [ $UBER_CHANGES -gt $MAX_UB_WRITES ]; then log_fail "More uberblock writes occurred than expected ($EXPECTED)" fi log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_MIN SEQ_BEFORE=$(zdb -luuuu ${DISK[0]} | awk '/mmp_seq/ {if ($NF>max) max=$NF}; END {print max}') sleep 1 SEQ_AFTER=$(zdb -luuuu ${DISK[0]} | awk '/mmp_seq/ {if ($NF>max) max=$NF}; END {print max}') if [ $((SEQ_AFTER - SEQ_BEFORE)) -lt $MIN_SEQ_VALUES ]; then zdb -luuuu ${DISK[0]} log_fail "ERROR: mmp_seq did not increase by $MIN_SEQ_VALUES; before $SEQ_BEFORE after $SEQ_AFTER" fi log_pass "Ensure MMP uberblocks update at the correct interval passed" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_reset_interval.ksh0000644000000000000000000000007413607166133027230 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.206866679 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_reset_interval.ksh0000755016037001603700000000730413607166133027234 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Ensure that the MMP thread is notified when zfs_multihost_interval is # reduced, and that changes to zfs_multihost_interval and # zfs_multihost_fail_intervals do not trigger pool suspensions. # # STRATEGY: # 1. Set zfs_multihost_interval to much longer than the test duration # 2. Create a zpool and enable multihost # 3. Verify no MMP writes occurred # 4. Set zfs_multihost_interval to 1 second # 5. Sleep briefly # 6. Verify MMP writes began # 7. Verify mmp_fail and mmp_write in uberblock reflect tunables # 8. Repeatedly change tunables relating to pool suspension # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { default_cleanup_noexit log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT log_must set_tunable64 zfs_multihost_fail_intervals \ $MMP_FAIL_INTERVALS_DEFAULT log_must mmp_clear_hostid } log_assert "mmp threads notified when zfs_multihost_interval reduced" log_onexit cleanup log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_HOUR log_must mmp_set_hostid $HOSTID1 default_setup_noexit $DISK log_must zpool set multihost=on $TESTPOOL clear_mmp_history log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT uber_count=$(count_mmp_writes $TESTPOOL 1) if [ $uber_count -eq 0 ]; then log_fail "ERROR: mmp writes did not start when zfs_multihost_interval reduced" fi # 7. Verify mmp_write and mmp_fail are written for fails in $(seq $MMP_FAIL_INTERVALS_MIN $((MMP_FAIL_INTERVALS_MIN*2))); do for interval in $(seq $MMP_INTERVAL_MIN 200 $MMP_INTERVAL_DEFAULT); do log_must set_tunable64 zfs_multihost_fail_intervals $fails log_must set_tunable64 zfs_multihost_interval $interval log_must sync_pool $TESTPOOL typeset mmp_fail=$(zdb $TESTPOOL 2>/dev/null | awk '/mmp_fail/ {print $NF}') if [ $fails -ne $mmp_fail ]; then log_fail "ERROR: mmp_fail $mmp_fail != $fails" fi typeset mmp_write=$(zdb $TESTPOOL 2>/dev/null | awk '/mmp_write/ {print $NF}') if [ $interval -ne $mmp_write ]; then log_fail "ERROR: mmp_write $mmp_write != $interval" fi done done # 8. Repeatedly change zfs_multihost_interval and fail_intervals for x in $(seq 10); do typeset new_interval=$(( (RANDOM % 20 + 1) * $MMP_INTERVAL_MIN )) log_must set_tunable64 zfs_multihost_interval $new_interval typeset action=$((RANDOM %10)) if [ $action -eq 0 ]; then log_must zpool export -a log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID1 log_must zpool import $TESTPOOL elif [ $action -eq 1 ]; then log_must zpool export -F $TESTPOOL log_must zpool import $TESTPOOL elif [ $action -eq 2 ]; then log_must zpool export -F $TESTPOOL log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID2 log_must zpool import -f $TESTPOOL elif [ $action -eq 3 ]; then log_must zpool export -F $TESTPOOL log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_MIN log_must zpool import $TESTPOOL elif [ $action -eq 4 ]; then log_must set_tunable64 zfs_multihost_fail_intervals \ $((RANDOM % MMP_FAIL_INTERVALS_DEFAULT)) fi sleep 5 done log_pass "mmp threads notified when zfs_multihost_interval reduced" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_inactive_import.ksh0000644000000000000000000000007413607166133027376 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.199866455 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_inactive_import.ksh0000755016037001603700000000712413607166133027402 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Verify import behavior for inactive, but not exported, pools # # STRATEGY: # 1. Create a zpool # 2. Verify multihost=off and hostids match (no activity check) # 3. Verify multihost=off and hostids differ (no activity check) # 4. Verify multihost=off and hostid allowed (no activity check) # 5. Verify multihost=on and hostids match (no activity check) # 6. Verify multihost=on and hostids differ (activity check) # 7. Verify mmp_write and mmp_fail are set correctly # 8. Verify multihost=on and hostid zero fails (no activity check) # 9. Verify activity check duration based on mmp_write and mmp_fail # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { default_cleanup_noexit log_must mmp_clear_hostid log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT } log_assert "multihost=on|off inactive pool activity checks" log_onexit cleanup # 1. Create a zpool log_must mmp_set_hostid $HOSTID1 default_setup_noexit $DISK # 2. Verify multihost=off and hostids match (no activity check) log_must zpool set multihost=off $TESTPOOL for opt in "" "-f"; do log_must zpool export -F $TESTPOOL log_must import_no_activity_check $TESTPOOL $opt done # 3. Verify multihost=off and hostids differ (no activity check) log_must zpool export -F $TESTPOOL log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID2 log_mustnot import_no_activity_check $TESTPOOL "" log_must import_no_activity_check $TESTPOOL "-f" # 4. Verify multihost=off and hostid zero allowed (no activity check) log_must zpool export -F $TESTPOOL log_must mmp_clear_hostid log_mustnot import_no_activity_check $TESTPOOL "" log_must import_no_activity_check $TESTPOOL "-f" # 5. Verify multihost=on and hostids match (no activity check) log_must mmp_pool_set_hostid $TESTPOOL $HOSTID1 log_must zpool set multihost=on $TESTPOOL for opt in "" "-f"; do log_must zpool export -F $TESTPOOL log_must import_no_activity_check $TESTPOOL $opt done # 6. Verify multihost=on and hostids differ (activity check) log_must zpool export -F $TESTPOOL log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID2 log_mustnot import_activity_check $TESTPOOL "" log_must import_activity_check $TESTPOOL "-f" # 7. Verify mmp_write and mmp_fail are set correctly log_must zpool export -F $TESTPOOL log_must verify_mmp_write_fail_present ${DISK[0]} # 8. Verify multihost=on and hostid zero fails (no activity check) log_must mmp_clear_hostid MMP_IMPORTED_MSG="Set a unique system hostid" log_must check_pool_import $TESTPOOL "-f" "action" "$MMP_IMPORTED_MSG" log_mustnot import_no_activity_check $TESTPOOL "-f" # 9. Verify activity check duration based on mmp_write and mmp_fail # Specify a short test via tunables but import pool imported while # tunables set to default duration. log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_MIN log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID1 log_must import_activity_check $TESTPOOL "-f" $MMP_TEST_DURATION_DEFAULT log_pass "multihost=on|off inactive pool activity checks passed" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_on_zdb.ksh0000644000000000000000000000007413607166133025455 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.208866743 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_on_zdb.ksh0000755016037001603700000000400313607166133025452 0ustar00hutter2hutter200000000000000#!/bin/ksh # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2018 Lawrence Livermore National Security, LLC. # Copyright (c) 2018 by Nutanix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib # # Description: # zdb will work while multihost is enabled. # # Strategy: # 1. Create a pool # 2. Enable multihost # 3. Run zdb -d with pool and dataset arguments. # 4. Create a checkpoint # 5. Run zdb -kd with pool and dataset arguments. # 6. Discard the checkpoint # 7. Export the pool # 8. Run zdb -ed with pool and dataset arguments. # function cleanup { datasetexists $TESTPOOL && destroy_pool $TESTPOOL for DISK in $DISKS; do zpool labelclear -f $DEV_RDSKDIR/$DISK done log_must mmp_clear_hostid } log_assert "Verify zdb -d works while multihost is enabled" log_onexit cleanup verify_runnable "global" verify_disk_count "$DISKS" 2 default_mirror_setup_noexit $DISKS log_must mmp_set_hostid $HOSTID1 log_must zpool set multihost=on $TESTPOOL log_must zfs snap $TESTPOOL/$TESTFS@snap log_must zdb -d $TESTPOOL log_must zdb -d $TESTPOOL/ log_must zdb -d $TESTPOOL/$TESTFS log_must zdb -d $TESTPOOL/$TESTFS@snap log_must zpool checkpoint $TESTPOOL log_must zdb -kd $TESTPOOL log_must zdb -kd $TESTPOOL/ log_must zdb -kd $TESTPOOL/$TESTFS log_must zdb -kd $TESTPOOL/$TESTFS@snap log_must zpool checkpoint -d $TESTPOOL log_must zpool export $TESTPOOL log_must zdb -ed $TESTPOOL log_must zdb -ed $TESTPOOL/ log_must zdb -ed $TESTPOOL/$TESTFS log_must zdb -ed $TESTPOOL/$TESTFS@snap log_must zpool import $TESTPOOL cleanup log_pass "zdb -d works while multihost is enabled" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133024656 xustar000000000000000030 atime=1579730439.599466549 30 ctime=1579730483.219867097 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/Makefile.am0000644016037001603700000000072613607166133024660 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/mmp dist_pkgdata_SCRIPTS = \ multihost_history.ksh \ mmp_on_thread.ksh \ mmp_on_uberblocks.ksh \ mmp_on_off.ksh \ mmp_interval.ksh \ mmp_active_import.ksh \ mmp_inactive_import.ksh \ mmp_exported_import.ksh \ mmp_write_uberblocks.ksh \ mmp_reset_interval.ksh \ mmp_on_zdb.ksh \ mmp_write_distribution.ksh \ mmp_hostid.ksh \ setup.ksh \ cleanup.ksh dist_pkgdata_DATA = \ mmp.kshlib \ mmp.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024471 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.215866969 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/setup.ksh0000755016037001603700000000167613607166133024503 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg verify_runnable "global" if [ -e $HOSTID_FILE ]; then log_unsupported "System has existing $HOSTID_FILE file" fi log_must set_tunable64 zfs_multihost_history $MMP_HISTORY log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT log_must set_tunable64 zfs_multihost_fail_intervals $MMP_FAIL_INTERVALS_DEFAULT log_pass "mmp setup pass" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133024760 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.217867033 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/cleanup.ksh0000755016037001603700000000133013607166133024755 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg verify_runnable "global" log_must set_tunable64 zfs_multihost_history $MMP_HISTORY_OFF log_pass "mmp cleanup passed" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp.kshlib0000644000000000000000000000007413607166133024611 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.181865877 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp.kshlib0000644016037001603700000001773313607166133024621 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg function check_pool_import # pool opts token keyword { typeset pool=${1:-$MMP_POOL} typeset opts=$2 typeset token=$3 typeset keyword=$4 zpool import $opts 2>&1 | \ nawk -v token="$token:" '($1==token) {print $0}' | \ grep -i "$keyword" > /dev/null 2>&1 return $? } function is_pool_imported # pool opts { typeset pool=${1:-$MMP_POOL} typeset opts=$2 check_pool_import "$pool" "$opts" "status" \ "The pool is currently imported" return $? } function wait_pool_imported # pool opts { typeset pool=${1:-$MMP_POOL} typeset opts=$2 while is_pool_imported "$pool" "$opts"; do log_must sleep 5 done return 0 } function try_pool_import # pool opts message { typeset pool=${1:-$MMP_POOL} typeset opts=$2 typeset msg=$3 zpool import $opts $pool 2>&1 | grep -i "$msg" return $? } function mmp_set_hostid { typeset hostid=$1 zgenhostid $1 if [ $(hostid) != "$hostid" ]; then return 1 fi return 0 } function mmp_clear_hostid { rm -f $HOSTID_FILE } function mmp_pool_create_simple # pool dir { typeset pool=${1:-$MMP_POOL} typeset dir=${2:-$MMP_DIR} log_must mkdir -p $dir log_must rm -f $dir/* log_must truncate -s $MINVDEVSIZE $dir/vdev1 $dir/vdev2 log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID1 log_must zpool create -f -o cachefile=$MMP_CACHE $pool \ mirror $dir/vdev1 $dir/vdev2 log_must zpool set multihost=on $pool } function mmp_pool_create # pool dir { typeset pool=${1:-$MMP_POOL} typeset dir=${2:-$MMP_DIR} typeset opts="-VVVVV -T120 -M -k0 -f $dir -E -p $pool" mmp_pool_create_simple $pool $dir log_must mv $MMP_CACHE ${MMP_CACHE}.stale log_must zpool export $pool log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID2 log_note "Starting ztest in the background as hostid $HOSTID1" log_must eval "ZFS_HOSTID=$HOSTID1 ztest $opts >$MMP_ZTEST_LOG 2>&1 &" while ! is_pool_imported "$pool" "-d $dir"; do log_must pgrep ztest log_must sleep 5 done } function mmp_pool_destroy # pool dir { typeset pool=${1:-$MMP_POOL} typeset dir=${2:-$MMP_DIR} ZTESTPID=$(pgrep ztest) if [ -n "$ZTESTPID" ]; then log_must kill $ZTESTPID wait $ZTESTPID fi if poolexists $pool; then destroy_pool $pool fi log_must rm -f $dir/* mmp_clear_hostid } function mmp_pool_set_hostid # pool hostid { typeset pool=$1 typeset hostid=$2 log_must mmp_clear_hostid log_must mmp_set_hostid $hostid log_must zpool export $pool log_must zpool import $pool return 0 } # Return the number of seconds the activity check portion of the import process # will take. Does not include the time to find devices and assemble a config. # Note that the activity check may be skipped, e.g. if the pool and host # hostid's match, but this will return non-zero because mmp_* are populated. function seconds_mmp_waits_for_activity { typeset pool=$1 typeset devpath=$2 typeset seconds=0 typeset devices=${#DISK[@]} typeset import_intervals=$(get_tunable zfs_multihost_import_intervals) typeset import_interval=$(get_tunable zfs_multihost_interval) typeset tmpfile=$(mktemp) typeset mmp_fail typeset mmp_write typeset mmp_delay log_must zdb -e -p $devpath $pool >$tmpfile 2>/dev/null mmp_fail=$(awk '/mmp_fail/ {print $NF}' $tmpfile) mmp_write=$(awk '/mmp_write/ {print $NF}' $tmpfile) mmp_delay=$(awk '/mmp_delay/ {print $NF}' $tmpfile) if [ -f $tmpfile ]; then rm $tmpfile fi # In order of preference: if [ -n $mmp_fail -a -n $mmp_write ]; then seconds=$((2*mmp_fail*mmp_write/1000)) elif [ -n $mmp_delay ]; then # MMP V0: Based on mmp_delay from the best Uberblock seconds=$((import_intervals*devices*mmp_delay/1000000000)) else # Non-MMP aware: Based on zfs_multihost_interval and import_intervals seconds=$((import_intervals*import_interval/1000)) fi echo $seconds } function import_no_activity_check # pool opts { typeset pool=$1 typeset opts=$2 typeset max_duration=$((MMP_TEST_DURATION_DEFAULT-1)) SECONDS=0 zpool import $opts $pool typeset rc=$? if [[ $SECONDS -gt $max_duration ]]; then log_fail "ERROR: import_no_activity_check unexpected activity \ check (${SECONDS}s gt $max_duration)" fi return $rc } function import_activity_check # pool opts act_test_duration { typeset pool=$1 typeset opts=$2 typeset min_duration=${3:-$MMP_TEST_DURATION_DEFAULT} SECONDS=0 zpool import $opts $pool typeset rc=$? if [[ $SECONDS -le $min_duration ]]; then log_fail "ERROR: import_activity_check expected activity check \ (${SECONDS}s le min_duration $min_duration)" fi return $rc } function clear_mmp_history { log_must set_tunable64 zfs_multihost_history $MMP_HISTORY_OFF log_must set_tunable64 zfs_multihost_history $MMP_HISTORY } function count_skipped_mmp_writes # pool duration { typeset pool=$1 typeset -i duration=$2 typeset hist_path="/proc/spl/kstat/zfs/$pool/multihost" sleep $duration awk 'BEGIN {count=0}; $NF == "-" {count++}; END {print count};' "$hist_path" } function count_mmp_writes # pool duration { typeset pool=$1 typeset -i duration=$2 typeset hist_path="/proc/spl/kstat/zfs/$pool/multihost" sleep $duration awk 'BEGIN {count=0}; $NF != "-" {count++}; END {print count};' "$hist_path" } function summarize_uberblock_mmp # device { typeset device=$1 zdb -luuuu $device | awk ' BEGIN {write_fail_present=0; write_fail_missing=0; uber_invalid=0;} /Uberblock\[[0-9][0-9]*\]/ {delay=-99; write=-99; fail=-99; total++; if (/invalid/) {uber_invalid++};}; /mmp_fail/ {fail=$3}; /mmp_seq/ {seq=$3}; /mmp_write/ {write=$3}; /mmp_delay/ {delay=$3; if (delay==0) {delay_zero++};}; /mmp_valid/ && delay>0 && write>0 && fail>0 {write_fail_present++}; /mmp_valid/ && delay>0 && (write<=0 || fail<=0) {write_fail_missing++}; /mmp_valid/ && delay>0 && write<=0 {write_missing++}; /mmp_valid/ && delay>0 && fail<=0 {fail_missing++}; /mmp_valid/ && delay>0 && seq>0 {seq_nonzero++}; END { print "total_uberblocks " total; print "delay_zero " delay_zero; print "write_fail_present " write_fail_present; print "write_fail_missing " write_fail_missing; print "write_missing " write_missing; print "fail_missing " fail_missing; print "seq_nonzero " seq_nonzero; print "uberblock_invalid " uber_invalid; }' } function count_mmp_write_fail_present # device { typeset device=$1 summarize_uberblock_mmp $device | awk '/write_fail_present/ {print $NF}' } function count_mmp_write_fail_missing # device { typeset device=$1 summarize_uberblock_mmp $device | awk '/write_fail_missing/ {print $NF}' } function verify_mmp_write_fail_present # device { typeset device=$1 count=$(count_mmp_write_fail_present $device) log_note "present count: $count" if [ $count -eq 0 ]; then summarize_uberblock_mmp $device log_note "----- snip -----" zdb -luuuu $device log_note "----- snip -----" log_fail "No Uberblocks contain valid mmp_write and fail values" fi count=$(count_mmp_write_fail_missing $device) log_note "missing count: $count" if [ $count -gt 0 ]; then summarize_uberblock_mmp $device log_note "----- snip -----" zdb -luuuu $device log_note "----- snip -----" log_fail "Uberblocks missing mmp_write or mmp_fail" fi } zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_interval.ksh0000644000000000000000000000007413607166133026026 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.195866327 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_interval.ksh0000755016037001603700000000244113607166133026027 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # zfs_multihost_interval should only accept valid values. # # STRATEGY: # 1. Set zfs_multihost_interval to invalid values (negative). # 2. Set zfs_multihost_interval to valid values. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT } log_assert "zfs_multihost_interval cannot be set to an invalid value" log_onexit cleanup log_mustnot set_tunable64 zfs_multihost_interval -1 log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_MIN log_must set_tunable64 zfs_multihost_interval $MMP_INTERVAL_DEFAULT log_pass "zfs_multihost_interval cannot be set to an invalid value" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_hostid.ksh0000644000000000000000000000007413612141516025466 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.213866905 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_hostid.ksh0000755016037001603700000000600613612141516025470 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2019 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Verify the hostid file can reside on a ZFS dataset. # # STRATEGY: # 1. Create a non-redundant pool # 2. Create an 'etc' dataset containing a valid hostid file # 3. Create a file so the pool will have some contents # 4. Verify multihost cannot be enabled until the /etc/hostid is linked # 5. Verify vdevs may be attached and detached # 6. Verify normal, cache, log and special vdevs can be added # 7. Verify normal, cache, and log vdevs can be removed # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { default_cleanup_noexit log_must rm $MMP_DIR/file.{0,1,2,3,4,5} log_must rmdir $MMP_DIR log_must mmp_clear_hostid if [[ -L $HOSTID_FILE ]]; then rm -f $HOSTID_FILE fi } log_assert "Verify hostid file can reside on a ZFS dataset" log_onexit cleanup log_must mkdir -p $MMP_DIR log_must truncate -s $MINVDEVSIZE $MMP_DIR/file.{0,1,2,3,4,5} # 1. Create a non-redundant pool log_must zpool create $MMP_POOL $MMP_DIR/file.0 # 2. Create an 'etc' dataset containing a valid hostid file; caching is # disabled on the dataset to force the hostid to be read from disk. log_must zfs create -o primarycache=none -o secondarycache=none $MMP_POOL/etc mntpnt_etc=$(get_prop mountpoint $MMP_POOL/etc) log_must mmp_set_hostid $HOSTID1 log_must mv $HOSTID_FILE $mntpnt_etc/hostid # 3. Create a file so the pool will have some contents log_must zfs create $MMP_POOL/fs mntpnt_fs=$(get_prop mountpoint $MMP_POOL/fs) log_must mkfile 1M $mntpnt_fs/file # 4. Verify multihost cannot be enabled until the /etc/hostid is linked log_mustnot zpool set multihost=on $MMP_POOL log_mustnot ls -l $HOSTID_FILE log_must ln -s $mntpnt_etc/hostid $HOSTID_FILE log_must zpool set multihost=on $MMP_POOL # 5. Verify vdevs may be attached and detached log_must zpool attach $MMP_POOL $MMP_DIR/file.0 $MMP_DIR/file.1 log_must zpool detach $MMP_POOL $MMP_DIR/file.1 # 6. Verify normal, cache, log and special vdevs can be added log_must zpool add $MMP_POOL $MMP_DIR/file.1 log_must zpool add $MMP_POOL $MMP_DIR/file.2 log_must zpool add $MMP_POOL cache $MMP_DIR/file.3 log_must zpool add $MMP_POOL log $MMP_DIR/file.4 log_must zpool add $MMP_POOL special $MMP_DIR/file.5 # 7. Verify normal, cache, and log vdevs can be removed log_must zpool remove $MMP_POOL $MMP_DIR/file.2 log_must zpool remove $MMP_POOL $MMP_DIR/file.3 log_must zpool remove $MMP_POOL $MMP_DIR/file.4 log_pass "Verify hostid file can reside on a ZFS dataset." zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_active_import.ksh0000644000000000000000000000007413607166133027047 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.197866391 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_active_import.ksh0000755016037001603700000001006613607166133027052 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Under no circumstances when multihost is active, should an active pool # with one hostid be importable by a host with a different hostid. # # STRATEGY: # 1. Simulate an active pool on another host with ztest. # 2. Verify 'zpool import' reports an active pool. # 3. Verify 'zpool import [-f] $MMP_POOL' cannot import the pool. # 4. Kill ztest to make pool eligible for import. # 5. Verify 'zpool import' fails with the expected error message. # 6. Verify 'zpool import $MMP_POOL' fails with the expected message. # 7. Verify 'zpool import -f $MMP_POOL' can now import the pool. # 8. Verify pool may be exported/imported without -f argument. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { mmp_pool_destroy $MMP_POOL $MMP_DIR log_must mmp_clear_hostid ZTESTPID=$(pgrep ztest) if [ -n "$ZTESTPID" ]; then for pid in $ZTESTPID; do log_must kill -9 $pid done else # if ztest not running and log present, ztest crashed if [ -f $MMP_ZTEST_LOG ]; then log_note "ztest appears to have crashed. Tail of log:" tail -n 50 $MMP_ZTEST_LOG fi fi } log_assert "multihost=on|off active pool activity checks" log_onexit cleanup # 1. Simulate an active pool on another host with ztest. mmp_pool_destroy $MMP_POOL $MMP_DIR mmp_pool_create $MMP_POOL $MMP_DIR # 2. Verify 'zpool import' reports an active pool. log_must mmp_set_hostid $HOSTID2 log_must is_pool_imported $MMP_POOL "-d $MMP_DIR" # 3. Verify 'zpool import [-f] $MMP_POOL' cannot import the pool. MMP_IMPORTED_MSG="Cannot import '$MMP_POOL': pool is imported" log_must try_pool_import $MMP_POOL "-d $MMP_DIR" "$MMP_IMPORTED_MSG" for i in {1..10}; do log_must try_pool_import $MMP_POOL "-f -d $MMP_DIR" "$MMP_IMPORTED_MSG" done log_must try_pool_import $MMP_POOL "-c ${MMP_CACHE}.stale" "$MMP_IMPORTED_MSG" for i in {1..10}; do log_must try_pool_import $MMP_POOL "-f -c ${MMP_CACHE}.stale" \ "$MMP_IMPORTED_MSG" done # 4. Kill ztest to make pool eligible for import. Poll with 'zpool status'. ZTESTPID=$(pgrep ztest) if [ -n "$ZTESTPID" ]; then log_must kill -9 $ZTESTPID fi log_must wait_pool_imported $MMP_POOL "-d $MMP_DIR" if [ -f $MMP_ZTEST_LOG ]; then log_must rm $MMP_ZTEST_LOG fi # 5. Verify 'zpool import' fails with the expected error message, when # - hostid=0: - configuration error # - hostid=matches - safe to import the pool # - hostid=different - previously imported on a different system # log_must mmp_clear_hostid MMP_IMPORTED_MSG="Set a unique system hostid" log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "action" "$MMP_IMPORTED_MSG" log_must mmp_set_hostid $HOSTID1 MMP_IMPORTED_MSG="The pool can be imported" log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "action" "$MMP_IMPORTED_MSG" log_must mmp_clear_hostid log_must mmp_set_hostid $HOSTID2 MMP_IMPORTED_MSG="The pool was last accessed by another system." log_must check_pool_import $MMP_POOL "-d $MMP_DIR" "status" "$MMP_IMPORTED_MSG" # 6. Verify 'zpool import $MMP_POOL' fails with the expected message. MMP_IMPORTED_MSG="pool was previously in use from another system." log_must try_pool_import $MMP_POOL "-d $MMP_DIR" "$MMP_IMPORTED_MSG" # 7. Verify 'zpool import -f $MMP_POOL' can now import the pool. log_must import_activity_check $MMP_POOL "-f -d $MMP_DIR" # 8 Verify pool may be exported/imported without -f argument. log_must zpool export $MMP_POOL log_must import_no_activity_check $MMP_POOL "-d $MMP_DIR" log_pass "multihost=on|off active pool activity checks passed" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp_write_distribution.ksh0000644000000000000000000000007413607166133030133 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.210866808 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp_write_distribution.ksh0000755016037001603700000000463613607166133030144 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # Verify MMP writes are distributed evenly among leaves # # STRATEGY: # 1. Create an asymmetric mirrored pool # 2. Enable multihost and multihost_history # 3. Delay for MMP writes to occur # 4. Verify the MMP writes are distributed evenly across leaf vdevs # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { log_must zpool destroy $MMP_POOL log_must rm $MMP_DIR/file.{0,1,2,3,4,5,6,7} log_must rm $MMP_HISTORY_TMP log_must rmdir $MMP_DIR log_must mmp_clear_hostid } log_assert "mmp writes are evenly distributed across leaf vdevs" log_onexit cleanup MMP_HISTORY_TMP=$MMP_DIR/history MMP_HISTORY=/proc/spl/kstat/zfs/$MMP_POOL/multihost # Step 1 log_must mkdir -p $MMP_DIR log_must truncate -s 128M $MMP_DIR/file.{0,1,2,3,4,5,6,7} log_must zpool create -f $MMP_POOL mirror $MMP_DIR/file.{0,1} mirror $MMP_DIR/file.{2,3,4,5,6,7} # Step 2 log_must mmp_set_hostid $HOSTID1 log_must zpool set multihost=on $MMP_POOL set_tunable64 zfs_multihost_history 0 set_tunable64 zfs_multihost_history 40 # Step 3 # default settings, every leaf written once/second sleep 4 # Step 4 typeset -i min_writes=999 typeset -i max_writes=0 typeset -i write_count # copy to get as close to a consistent view as possible cat $MMP_HISTORY > $MMP_HISTORY_TMP for x in $(seq 0 7); do write_count=$(grep -c file.${x} $MMP_HISTORY_TMP) if [ $write_count -lt $min_writes ]; then min_writes=$write_count fi if [ $write_count -gt $max_writes ]; then max_writes=$write_count fi done log_note "mmp min_writes $min_writes max_writes $max_writes" if [ $min_writes -lt 1 ]; then log_fail "mmp writes were not counted correctly" fi if [ $((max_writes - min_writes)) -gt 1 ]; then log_fail "mmp writes were not evenly distributed across leaf vdevs" fi log_pass "mmp writes were evenly distributed across leaf vdevs" zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/mmp.cfg0000644000000000000000000000007413607166133024074 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.183865941 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/mmp.cfg0000644016037001603700000000235613607166133024077 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # export PREV_UBER="$TEST_BASE_DIR/mmp-uber-prev.txt" export CURR_UBER="$TEST_BASE_DIR/mmp-uber-curr.txt" export DISK=${DISKS%% *} export HOSTID_FILE="/etc/hostid" export HOSTID1=01234567 export HOSTID2=89abcdef export TXG_TIMEOUT_LONG=5000 export TXG_TIMEOUT_DEFAULT=5 export MMP_POOL=mmppool export MMP_DIR=$TEST_BASE_DIR/mmp export MMP_CACHE=$MMP_DIR/zpool.cache export MMP_ZTEST_LOG=$MMP_DIR/ztest.log export MMP_HISTORY=100 export MMP_HISTORY_OFF=0 export MMP_INTERVAL_HOUR=$((60*60*1000)) export MMP_INTERVAL_DEFAULT=1000 export MMP_INTERVAL_MIN=100 export MMP_IMPORT_INTERVALS=20 export MMP_FAIL_INTERVALS_DEFAULT=10 export MMP_FAIL_INTERVALS_MIN=2 export MMP_TEST_DURATION_DEFAULT=$((MMP_IMPORT_INTERVALS*MMP_INTERVAL_DEFAULT/1000)) zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143007024651 xustar000000000000000030 mtime=1579730439.637467769 30 atime=1579730457.406038267 30 ctime=1579730483.221867161 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/Makefile.in0000664016037001603700000006174113612143007024666 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/mmp DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/mmp ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ multihost_history.ksh \ mmp_on_thread.ksh \ mmp_on_uberblocks.ksh \ mmp_on_off.ksh \ mmp_interval.ksh \ mmp_active_import.ksh \ mmp_inactive_import.ksh \ mmp_exported_import.ksh \ mmp_write_uberblocks.ksh \ mmp_reset_interval.ksh \ mmp_on_zdb.ksh \ mmp_write_distribution.ksh \ mmp_hostid.ksh \ setup.ksh \ cleanup.ksh dist_pkgdata_DATA = \ mmp.kshlib \ mmp.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/mmp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/mmp/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/PaxHeaders.151519/multihost_history.ksh0000644000000000000000000000007413607166133027142 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730483.185866005 zfs-0.8.3/tests/zfs-tests/tests/functional/mmp/multihost_history.ksh0000755016037001603700000000403713607166133027146 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # # DESCRIPTION: # zfs_multihost_history should report both writes issued and gaps # # STRATEGY: # 1. Create a 2-vdev pool with mmp enabled # 2. Delay writes by 2*MMP_INTERVAL_DEFAULT # 3. Check multihost_history for both issued writes, and for gaps where # no write could be issued because all vdevs are busy # # During the first MMP_INTERVAL period 2 MMP writes will be issued - one to # each vdev. At the third scheduled attempt to write, at time t0+MMP_INTERVAL, # both vdevs will still have outstanding writes, so a skipped write entry will # be recorded in the multihost_history. . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/mmp/mmp.cfg . $STF_SUITE/tests/functional/mmp/mmp.kshlib verify_runnable "both" function cleanup { log_must zinject -c all mmp_pool_destroy $MMP_POOL $MMP_DIR log_must mmp_clear_hostid } log_assert "zfs_multihost_history records writes and skipped writes" log_onexit cleanup mmp_pool_create_simple $MMP_POOL $MMP_DIR log_must zinject -d $MMP_DIR/vdev1 -D$((2*MMP_INTERVAL_DEFAULT)):10 $MMP_POOL log_must zinject -d $MMP_DIR/vdev2 -D$((2*MMP_INTERVAL_DEFAULT)):10 $MMP_POOL mmp_writes=$(count_mmp_writes $MMP_POOL $((MMP_INTERVAL_DEFAULT/1000))) mmp_skips=$(count_skipped_mmp_writes $MMP_POOL $((MMP_INTERVAL_DEFAULT/1000))) if [ $mmp_writes -lt 1 ]; then log_fail "mmp writes entries missing when delays injected" fi if [ $mmp_skips -lt 1 ]; then log_fail "mmp skipped write entries missing when delays injected" fi log_pass "zfs_multihost_history records writes and skipped writes" zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/cache0000644000000000000000000000013213612143053023002 xustar000000000000000030 mtime=1579730475.538620467 30 atime=1579730489.095055741 30 ctime=1579730475.538620467 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/0000775016037001603700000000000013612143053023063 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache.cfg0000644000000000000000000000007413607166133024620 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.505619406 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache.cfg0000644016037001603700000000330413607166133024615 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2015 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib export DISK_ARRAY_NUM=0 function set_disks { set -A disk_array $(find_disks $DISKS) if (( ${#disk_array[*]} <= 1 )); then export DISK=${DISKS%% *} else export DISK="" typeset -i i=0 while (( i < ${#disk_array[*]} )); do export DISK${i}="${disk_array[$i]}" DISKSARRAY="$DISKSARRAY ${disk_array[$i]}" (( i = i + 1 )) done export DISK_ARRAY_NUM=$i export DISKSARRAY fi if (( $DISK_ARRAY_NUM == 0 )); then export disk=$DISK else export disk=$DISK0 fi } set_disks set_device_dir export SIZE=$MINVDEVSIZE export VDIR=$TESTDIR/disk.cache export VDIR2=$TESTDIR/disk2.cache export VDEV="$VDIR/a $VDIR/b $VDIR/c" export LDEV="$DISK0" export VDEV2="$VDIR2/a $VDIR2/b $VDIR2/c" export LDEV2="$DISK1" zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_009_pos.ksh0000644000000000000000000000007413607166133026117 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.529620176 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_009_pos.ksh0000755016037001603700000000366213607166133026126 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Offline and online a cache device succeed. # # STRATEGY: # 1. Create pool with mirror cache devices. # 2. Offine and online a cache device # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" verify_disk_count "$LDEV2" log_assert "Offline and online a cache device succeed." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV \ cache $LDEV $LDEV2 ldev=$(random_get $LDEV $LDEV2) log_must zpool offline $TESTPOOL $ldev log_must display_status $TESTPOOL log_must verify_cache_device $TESTPOOL $ldev 'OFFLINE' '' log_must zpool online $TESTPOOL $ldev log_must display_status $TESTPOOL log_must verify_cache_device $TESTPOOL $ldev 'ONLINE' '' log_must zpool destroy -f $TESTPOOL done log_pass "Offline and online a cache device succeed." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_004_neg.ksh0000644000000000000000000000007413607166133026062 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.519619856 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_004_neg.ksh0000755016037001603700000000341713607166133026067 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Attaching a cache device fails. # # STRATEGY: # 1. Create pool with separated cache devices. # 2. Attaching a cache device for existing cache device # 3. Verify the operation fails # verify_runnable "global" verify_disk_count "$LDEV2" log_assert "Attaching a cache device fails for an existing cache device." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV \ cache $LDEV ldev=$(random_get $LDEV) typeset ldev2=$(random_get $LDEV2) log_mustnot zpool attach $TESTPOOL $ldev $ldev2 log_must check_vdev_state $TESTPOOL $ldev2 "" log_must zpool destroy -f $TESTPOOL done log_pass "Attaching a cache device fails for an existing cache device." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_001_pos.ksh0000644000000000000000000000007413607166133026107 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.513619662 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_001_pos.ksh0000755016037001603700000000342413607166133026112 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Creating a pool with a cache device succeeds. # # STRATEGY: # 1. Create pool with separated cache devices. # 2. Display pool status # 3. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Creating a pool with a cache device succeeds." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV \ cache $LDEV log_must display_status $TESTPOOL ldev=$(random_get $LDEV) log_must verify_cache_device $TESTPOOL $ldev 'ONLINE' log_must zpool remove $TESTPOOL $ldev log_must check_vdev_state $TESTPOOL $ldev "" log_must zpool destroy -f $TESTPOOL done log_pass "Creating a pool with a cache device succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_011_pos.ksh0000644000000000000000000000007413607166133026110 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.533620304 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_011_pos.ksh0000755016037001603700000000351213607166133026111 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Remove cache device from pool with spare device should succeed. # # STRATEGY: # 1. Create pool with cache devices and spare devices # 2. Remove cache device from the pool # 3. The upper action should succeed # verify_runnable "global" verify_disk_count "$LDEV2" function cleanup { if datasetexists $TESTPOOL ; then log_must zpool destroy -f $TESTPOOL fi } log_assert "Remove cache device from pool with spare device should succeed" log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV \ cache $LDEV spare $LDEV2 log_must zpool remove $TESTPOOL $LDEV log_must display_status $TESTPOOL log_must zpool destroy -f $TESTPOOL done log_pass "Remove cache device from pool with spare device should succeed" zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_003_pos.ksh0000644000000000000000000000007413607166133026111 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.517619792 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_003_pos.ksh0000755016037001603700000000354013607166133026113 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Adding an extra cache device works # # STRATEGY: # 1. Create pool with separated cache devices. # 2. Add an extra cache devices # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" verify_disk_count "$LDEV2" log_assert "Adding an extra cache device works." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV \ cache $LDEV log_must zpool add $TESTPOOL \ cache $LDEV2 log_must display_status $TESTPOOL ldev=$(random_get $LDEV2) log_must verify_cache_device $TESTPOOL $ldev 'ONLINE' log_must zpool remove $TESTPOOL $ldev log_must check_vdev_state $TESTPOOL $ldev "" log_must zpool destroy -f $TESTPOOL done log_pass "Adding an extra cache device works." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025130 xustar000000000000000030 atime=1579730434.067288929 30 ctime=1579730475.535620368 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/Makefile.am0000644016037001603700000000061713607166133025131 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cache dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ cache_001_pos.ksh \ cache_002_pos.ksh \ cache_003_pos.ksh \ cache_004_neg.ksh \ cache_005_neg.ksh \ cache_006_pos.ksh \ cache_007_neg.ksh \ cache_008_neg.ksh \ cache_009_pos.ksh \ cache_010_neg.ksh \ cache_011_pos.ksh dist_pkgdata_DATA = \ cache.cfg \ cache.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024743 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.511619598 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/setup.ksh0000755016037001603700000000243413607166133024746 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib verify_runnable "global" if ! is_physical_device $LDEV; then log_unsupported "Only physical disk could be cache device" fi log_must rm -rf $VDIR $VDIR2 log_must mkdir -p $VDIR $VDIR2 log_must mkfile $SIZE $VDEV $VDEV2 log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025232 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.509619534 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cleanup.ksh0000755016037001603700000000241513607166133025234 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib verify_runnable "global" if datasetexists $TESTPOOL ; then log_must zpool destroy -f $TESTPOOL fi if datasetexists $TESTPOOL2 ; then log_must zpool destroy -f $TESTPOOL2 fi log_must rm -rf $VDIR $VDIR2 log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache.kshlib0000644000000000000000000000007313607166133025334 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730475.50761947 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache.kshlib0000644016037001603700000000655013607166133025340 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib function cleanup { if datasetexists $TESTPOOL ; then log_must zpool destroy -f $TESTPOOL fi if datasetexists $TESTPOOL2 ; then log_must zpool destroy -f $TESTPOOL2 fi } # # Try zpool status/iostat for given pool # # $1 pool # function display_status { typeset pool=$1 typeset -i ret=0 zpool status -xv $pool > /dev/null 2>&1 ret=$? zpool iostat > /dev/null 2>&1 ((ret |= $?)) typeset mntpnt=$(get_prop mountpoint $pool) dd if=/dev/urandom of=$mntpnt/testfile.$$ & typeset pid=$! zpool iostat -v 1 3 > /dev/null ((ret |= $?)) kill -9 $pid wait return $ret } # # Verify the given cache device have correct type and status # # $1 pool name # $2 device name # $3 device status # $4 device type # function verify_cache_device { typeset pool=$1 typeset device=$2 typeset status=$3 typeset type=$4 if [[ -z $pool || -z $device || -z $status ]]; then log_fail "Usage: verify_cache_device " \ " [type]" fi # # Get all the cache devices and status table like below # # mirror:/disks/d ONLINE mirror:/disks/e ONLINE stripe:/disks/f ONLINE # set -A dev_stat_tab $(zpool status -v $pool | nawk 'BEGIN {start=0} \ /\tcache/ {start=1} /\tmirror/ || /\tspares/ || /^$/ {start=0} (start==1) && /\t (\/|[a-zA-Z])/ \ {print "stripe:" $1 " " $2} (start==1) && /\t (\/|[a-zA-Z])/ \ {print "mirror:" $1 " " $2} # When hotspare is replacing (start==1) && /\t (\/|[a-zA-Z])/ \ {print "mirror:" $1 " " $2}' ) typeset -i i=0 typeset find=0 while (( i < ${#dev_stat_tab[@]} )); do typeset dev=${dev_stat_tab[$i]} typeset stat=${dev_stat_tab[((i+1))]} case $dev in stripe:$device) if [[ "$type" == 'mirror' ]]; then log_note "Unexpected type: mirror" return 1 else if [[ $stat != $status ]]; then log_note "Status($stat) " \ "!= Expected stat($status)" return 1 fi return 0 fi ;; mirror:$device) if [[ -z "$type" || $type == 'stripe' ]]; then log_note "Unexpected type: stripe" return 1 else if [[ $stat != $status ]]; then log_note "Status($stat) " \ "!= Expected stat($status)" return 1 fi return 0 fi ;; esac ((i += 2)) done log_note "Can not find device: $device" return 1 } function verify_cache_support { zpool upgrade -v | grep "Cache devices" > /dev/null 2>&1 return $? } zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_005_neg.ksh0000644000000000000000000000007313607166133026062 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730475.52161992 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_005_neg.ksh0000755016037001603700000000343413607166133026067 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Replacing a cache device fails. # # STRATEGY: # 1. Create pool with cache devices. # 2. Replacing one cache device # 3. Verify replace fails # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" verify_disk_count "$LDEV2" log_assert "Replacing a cache device fails." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV \ cache $LDEV sdev=$(random_get $LDEV) tdev=$(random_get $LDEV2) log_mustnot zpool replace $TESTPOOL $sdev $tdev log_must verify_cache_device $TESTPOOL $sdev 'ONLINE' log_must check_vdev_state $TESTPOOL $tdev "" log_must zpool destroy -f $TESTPOOL done log_pass "Replacing a cache device fails." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_002_pos.ksh0000644000000000000000000000007413607166133026110 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.515619726 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_002_pos.ksh0000755016037001603700000000350513607166133026113 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Adding a cache device to normal pool works. # # STRATEGY: # 1. Create pool # 2. Add cache devices with different configuration # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Adding a cache device to normal pool works." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV log_must zpool add $TESTPOOL cache $LDEV log_must display_status $TESTPOOL typeset ldev=$(random_get $LDEV) log_must verify_cache_device $TESTPOOL $ldev 'ONLINE' log_must zpool remove $TESTPOOL $ldev log_must check_vdev_state $TESTPOOL $ldev "" log_must zpool destroy -f $TESTPOOL done log_pass "Adding a cache device to normal pool works." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_007_neg.ksh0000644000000000000000000000007413607166133026065 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.525620048 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_007_neg.ksh0000755016037001603700000000335513607166133026073 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # A mirror/raidz/raidz2 cache is not supported. # # STRATEGY: # 1. Try to create pool with unsupported type # 2. Verify failed to create pool. # verify_runnable "global" verify_disk_count "$LDEV2" log_assert "A mirror/raidz/raidz2 cache is not supported." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do for cachetype in "mirror" "raidz" "raidz1" "raidz2" do log_mustnot zpool create $TESTPOOL $type $VDEV \ cache $cachetype $LDEV $LDEV2 ldev=$(random_get $LDEV $LDEV2) log_mustnot verify_cache_device \ $TESTPOOL $ldev 'ONLINE' $cachetype log_must datasetnonexists $TESTPOOL done done log_pass "A mirror/raidz/raidz2 cache is not supported." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143002025116 xustar000000000000000030 mtime=1579730434.104290117 30 atime=1579730454.354940305 30 ctime=1579730475.538620467 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/Makefile.in0000664016037001603700000006164013612143002025131 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/cache DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cache ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ cache_001_pos.ksh \ cache_002_pos.ksh \ cache_003_pos.ksh \ cache_004_neg.ksh \ cache_005_neg.ksh \ cache_006_pos.ksh \ cache_007_neg.ksh \ cache_008_neg.ksh \ cache_009_pos.ksh \ cache_010_neg.ksh \ cache_011_pos.ksh dist_pkgdata_DATA = \ cache.cfg \ cache.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cache/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/cache/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_006_pos.ksh0000644000000000000000000000007413607166133026114 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.523619984 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_006_pos.ksh0000755016037001603700000000445013607166133026117 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Exporting and importing pool with cache devices passes. # # STRATEGY: # 1. Create pool with cache devices. # 2. Export and import the pool # 3. Display pool status # 4. Destroy and import the pool again # 5. Display pool status # 6. Destroy and loop to create pool with different configuration. # verify_runnable "global" verify_disk_count "$LDEV2" log_assert "Exporting and importing pool with cache devices passes." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV \ cache $LDEV $LDEV2 ldev=$(random_get $LDEV $LDEV2) log_must verify_cache_device \ $TESTPOOL $ldev 'ONLINE' # # Nomal export/import operating # log_must zpool export $TESTPOOL log_must zpool import -d $VDIR $TESTPOOL log_must display_status $TESTPOOL ldev=$(random_get $LDEV $LDEV2) log_must verify_cache_device \ $TESTPOOL $ldev 'ONLINE' # # Destroy the pool and import again # log_must zpool destroy $TESTPOOL log_must zpool import -Df -d $VDIR $TESTPOOL log_must display_status $TESTPOOL ldev=$(random_get $LDEV $LDEV2) log_must verify_cache_device \ $TESTPOOL $ldev 'ONLINE' log_must zpool destroy -f $TESTPOOL done log_pass "Exporting and importing pool with cache devices passes." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_008_neg.ksh0000644000000000000000000000007413607166133026066 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730475.527620112 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_008_neg.ksh0000755016037001603700000000353113607166133026070 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # A mirror/raidz/raidz2 cache can not be added to existed pool. # # STRATEGY: # 1. Create pool with or without cache. # 2. Add a mirror/raidz/raidz2 cache to this pool. # 3. Verify failed to add. # verify_runnable "global" verify_disk_count "$LDEV2" log_assert "A raidz/raidz2 cache can not be added to existed pool." log_onexit cleanup for type in "" "mirror" "raidz" "raidz2" do for cachetype in "mirror" "raidz" "raidz1" "raidz2" do log_must zpool create $TESTPOOL $type $VDEV \ cache $LDEV log_mustnot zpool add $TESTPOOL cache $cachetype $LDEV2 ldev=$(random_get $LDEV2) log_mustnot verify_cache_device \ $TESTPOOL $ldev 'ONLINE' $cachetype log_must zpool destroy $TESTPOOL done done log_pass "A mirror/raidz/raidz2 cache can not be added to existed pool." zfs-0.8.3/tests/zfs-tests/tests/functional/cache/PaxHeaders.151519/cache_010_neg.ksh0000644000000000000000000000007313607166133026056 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730475.53162024 zfs-0.8.3/tests/zfs-tests/tests/functional/cache/cache_010_neg.ksh0000755016037001603700000000507613607166133026067 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/cache/cache.cfg . $STF_SUITE/tests/functional/cache/cache.kshlib # # DESCRIPTION: # Verify cache device must be a block device. # # STRATEGY: # 1. Create a pool # 2. Add different object as cache # 3. Verify character devices and files fail # verify_runnable "global" function cleanup_testenv { cleanup if [[ -n $lofidev ]]; then if is_linux; then losetup -d $lofidev else lofiadm -d $lofidev fi fi } log_assert "Cache device can only be block devices." log_onexit cleanup_testenv TESTVOL=testvol1$$ dsk1=${DISKS%% *} log_must zpool create $TESTPOOL ${DISKS#$dsk1} # Add nomal ${DEV_RDSKDIR} device log_must zpool add $TESTPOOL cache \ ${DEV_RDSKDIR}/${dsk1}${SLICE_PREFIX}${SLICE0} log_must verify_cache_device $TESTPOOL $dsk1 'ONLINE' # Add normal file log_mustnot zpool add $TESTPOOL cache $VDEV2 # Add /dev/rlofi device (allowed under Linux) if is_linux; then lofidev=$(losetup -f) lofidev=${lofidev##*/} log_must losetup $lofidev ${VDEV2%% *} log_must zpool add $TESTPOOL cache $lofidev log_must zpool remove $TESTPOOL $lofidev log_must losetup -d $lofidev lofidev="" else lofidev=${VDEV2%% *} log_must lofiadm -a $lofidev lofidev=$(lofiadm $lofidev) log_mustnot zpool add $TESTPOOL cache "/dev/rlofi/${lofidev#/dev/lofi/}" log_must lofiadm -d $lofidev lofidev="" fi # Add /dev/zvol/rdsk device (allowed under Linux) if ! is_linux; then log_must zpool create $TESTPOOL2 $VDEV2 log_must zfs create -V $SIZE $TESTPOOL2/$TESTVOL log_mustnot zpool add $TESTPOOL cache \ ${ZVOL_RDEVDIR}/$TESTPOOL2/$TESTVOL fi log_pass "Cache device can only be block devices." zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001024052 xustar000000000000000030 mtime=1579730433.728278045 30 atime=1579730454.174934525 30 ctime=1579730474.906600173 zfs-0.8.3/tests/zfs-tests/tests/functional/Makefile.in0000664016037001603700000007146313612143001024071 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = \ acl \ alloc_class \ arc \ atime \ bootfs \ cache \ cachefile \ casenorm \ channel_program \ chattr \ checksum \ clean_mirror \ cli_root \ cli_user \ compression \ cp_files \ ctime \ deadman \ delegate \ devices \ events \ exec \ fault \ features \ grow \ history \ hkdf \ inheritance \ inuse \ io \ large_files \ largest_pool \ libzfs \ limits \ pyzfs \ link_count \ migration \ mmap \ mmp \ mount \ mv_files \ nestedfs \ no_space \ nopwrite \ online_offline \ pool_checkpoint \ pool_names \ poolversion \ privilege \ procfs \ projectquota \ quota \ raidz \ redundancy \ refquota \ refreserv \ removal \ rename_dirs \ replacement \ reservation \ resilver \ rootpool \ rsend \ scrub_mirror \ slog \ snapshot \ snapused \ sparse \ suid \ threadsappend \ tmpfile \ trim \ truncate \ upgrade \ user_namespace \ userquota \ vdev_zaps \ write_dirs \ xattr \ zvol all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/delegate0000644000000000000000000000013213612143061023510 xustar000000000000000030 mtime=1579730481.651816749 30 atime=1579730489.095055741 30 ctime=1579730481.651816749 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/0000775016037001603700000000000013612143061023571 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_unallow_006_pos.ksh0000644000000000000000000000007413607166133030123 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.642816461 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_unallow_006_pos.ksh0000755016037001603700000000432613607166133030130 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify option '-u', '-g' and '-e' only removed the specified type # permissions set. # # STRATEGY: # 1. Allow '-u' '-g' & '-e' to $STAFF1 on ROOT_TESTFS or $ROOT_TESTVOL. # 2. Unallow '-u' '-g' & '-e' on $ROOT_TESTFS or $ROOT_TESTVOL separately. # 3. Verify permissions on $ROOT_TESTFS or $ROOT_TESTVOL separately. # verify_runnable "both" log_assert "Verify option '-u', '-g' and '-e' only removed the specified type "\ "permissions set." log_onexit restore_root_datasets for dtst in $DATASETS ; do log_must zfs allow -u $STAFF1 $LOCAL_DESC_SET $dtst log_must zfs allow -g $STAFF_GROUP $LOCAL_DESC_SET $dtst log_must zfs allow -e $LOCAL_DESC_SET $dtst log_must verify_perm $dtst $LOCAL_DESC_SET \ $STAFF1 $STAFF2 $OTHER1 $OTHER2 log_must zfs unallow -e $dtst log_must verify_perm $dtst $LOCAL_DESC_SET $STAFF1 $STAFF2 log_must verify_noperm $dtst $LOCAL_DESC_SET $OTHER1 $OTHER2 log_must zfs unallow -g $STAFF_GROUP $dtst log_must verify_perm $dtst $LOCAL_DESC_SET $STAFF1 log_must verify_noperm $dtst $LOCAL_DESC_SET $STAFF2 log_must zfs unallow -u $STAFF1 $dtst log_must verify_noperm $dtst $LOCAL_DESC_SET $STAFF1 done log_pass "Verify option '-u', '-g' and '-e' passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_005_pos.ksh0000644000000000000000000000007413607166133027557 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.613815529 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_005_pos.ksh0000755016037001603700000000427613607166133027570 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify option '-c' will be granted locally to the creator on any # newly-created descendent file systems. # # STRATEGY: # 1. Allow create permissions to everyone on $ROOT_TESTFS locally. # 2. Allow '-c' create to $ROOT_TESTFS. # 3. chmod 777 the mountpoint of $ROOT_TESTFS # 4. Verify only creator can create descendent dataset on # $ROOT_TESTFS/$user. # verify_runnable "both" log_assert "Verify option '-c' will be granted locally to the creator." log_onexit restore_root_datasets eval set -A dataset $DATASETS typeset perms="snapshot,reservation,compression,checksum,userprop" log_must zfs allow -l everyone create,mount $ROOT_TESTFS log_must zfs allow -c $perms $ROOT_TESTFS mntpnt=$(get_prop mountpoint $ROOT_TESTFS) log_must chmod 777 $mntpnt for user in $EVERYONE; do childfs=$ROOT_TESTFS/$user user_run $user zfs create $childfs for other in $EVERYONE; do # # Verify only the creator has the $perm time permissions. # if [[ $other == $user ]]; then log_must verify_perm $childfs $perms $user else log_must verify_noperm $childfs $perms $other fi done done log_pass "Verify option '-c' will be granted locally to the creator passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/delegate.cfg0000644000000000000000000000007413607166133026036 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.595814951 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/delegate.cfg0000644016037001603700000000351013607166133026032 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # export NISSTAFILE=$TEST_BASE_DIR/nis_state export STAFF_GROUP=zfsgrp export STAFF1=staff1 export STAFF2=staff2 export OTHER_GROUP=othergrp export OTHER1=other1 export OTHER2=other2 export EVERYONE="$STAFF1 $STAFF2 $OTHER1 $OTHER2" # # 'readonly' is disabled for Linux because it requires remounting the # filesystem which is restricted to root for older versions of mount(8). # if is_linux; then LOCAL_SET="snapshot" LOCAL_DESC_SET="checksum" DESC_SET="compression" else LOCAL_SET="snapshot" LOCAL_DESC_SET="readonly,checksum" DESC_SET="compression" fi export LOCAL_SET export LOCAL_DESC_SET export DESC_SET export TESTVOL=testvol.delegate export VOLSIZE=150m export ROOT_TESTVOL=$TESTPOOL/$TESTVOL export ROOT_TESTFS=$TESTPOOL/$TESTFS export SUBFS=$ROOT_TESTFS/SUBFS export SUBFS2=$ROOT_TESTFS/SUBFS2 DATASETS="$ROOT_TESTFS" if is_global_zone ; then DATASETS=$DATASETS fi export DATASETS zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_003_pos.ksh0000644000000000000000000000007413607166133027555 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.609815401 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_003_pos.ksh0000755016037001603700000000521013607166133027553 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify option '-l' only allow permission to the dataset itself. # # STRATEGY: # 1. Create descendent datasets of $ROOT_TESTFS # 2. Select user, group and everyone and set local permission separately. # 3. Set locally permissions to $ROOT_TESTFS or $ROOT_TESTVOL. # 4. Verify the permissions are only allow on $ROOT_TESTFS or # $ROOT_TESTVOL. # verify_runnable "both" log_assert "Verify option '-l' only allow permission to the dataset itself." log_onexit restore_root_datasets childfs=$ROOT_TESTFS/childfs eval set -A dataset $DATASETS typeset perms="snapshot,reservation,compression,checksum,userprop" log_must zfs create $childfs for dtst in $DATASETS ; do log_must zfs allow -l $STAFF1 $perms $dtst log_must verify_perm $dtst $perms $STAFF1 if [[ $dtst == $ROOT_TESTFS ]] ; then log_must verify_noperm $childfs $perms \ $STAFF1 $STAFF2 $OTHER1 $OTHER2 fi done log_must restore_root_datasets log_must zfs create $childfs for dtst in $DATASETS ; do log_must zfs allow -l -g $STAFF_GROUP $perms $dtst log_must verify_perm $dtst $perms $STAFF1 $STAFF2 if [[ $dtst == $ROOT_TESTFS ]] ; then log_must verify_noperm $childfs $perms \ $STAFF1 $STAFF2 $OTHER1 $OTHER2 fi done log_must restore_root_datasets log_must zfs create $childfs for dtst in $DATASETS ; do log_must zfs allow -l -e $perms $dtst log_must verify_perm $dtst $perms $STAFF1 $STAFF2 $OTHER1 $OTHER2 if [[ $dtst == $ROOT_TESTFS ]] ; then log_must verify_noperm $childfs $perms \ $STAFF1 $STAFF2 $OTHER1 $OTHER2 fi done log_must restore_root_datasets log_pass "Verify option '-l' only allow permission to the dataset itself pass." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_008_pos.ksh0000644000000000000000000000007413607166133027562 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.620815754 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_008_pos.ksh0000755016037001603700000000461213607166133027565 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # non-root user can allow any permissions which he is holding to # other else user when it get 'allow' permission. # # STRATEGY: # 1. Set two set permissions to two datasets locally. # 2. Verify the non-root user can allow permission if he has allow # permission. # verify_runnable "both" log_assert "Verify non-root user can allow permissions." log_onexit restore_root_datasets perms1="snapshot,reservation" perms2="send,compression,checksum,userprop" childfs=$ROOT_TESTFS/childfs log_must zfs create $childfs for dtst in $DATASETS ; do # Delegate local permission to $STAFF1 log_must zfs allow -l $STAFF1 $perms1 $dtst log_must zfs allow -l $STAFF1 allow $dtst if [[ $dtst == $ROOT_TESTFS ]]; then log_must zfs allow -l $STAFF1 $perms2 $childfs # $perms1 is local permission in $ROOT_TESTFS log_mustnot user_run $STAFF1 zfs allow $OTHER1 $perms1 $childfs log_must verify_noperm $childfs $perms1 $OTHER1 fi # Verify 'allow' give non-privilege user delegated permission. log_must user_run $STAFF1 zfs allow -l $OTHER1 $perms1 $dtst log_must verify_perm $dtst $perms1 $OTHER1 # $perms2 was not allow to $STAFF1, so he have no permission to # delegate permission to other else. log_mustnot user_run $STAFF1 zfs allow $OTHER1 $perms2 $dtst log_must verify_noperm $dtst $perms2 $OTHER1 done log_pass "Verify non-root user can allow permissions passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_006_pos.ksh0000644000000000000000000000007413607166133027560 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.615815593 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_006_pos.ksh0000755016037001603700000000415413607166133027564 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Changing permissions in a set will change what is allowed wherever the # set is used. # # STRATEGY: # 1. Set create as set @basic. # 2. Allow set @basic to $STAFF1 on $ROOT_TESTFS or $ROOT_TESTVOL # 3. Verify $STAFF1 has create permissions. # 4. Reset snapshot,allow to $basic # 5. Verify now $STAFF1 have create,allow,destroy permissions. # verify_runnable "both" log_assert "Changing permissions in a set will change what is allowed " \ "wherever the set is used." log_onexit restore_root_datasets fs1=$ROOT_TESTFS/fs1; fs2=$ROOT_TESTFS/fs2 log_must zfs create $fs1 log_must zfs create $fs2 eval set -A dataset $DATASETS perms1="snapshot,checksum,reservation" for dtst in $DATASETS $fs1 $fs2; do log_must zfs allow -s @basic $perms1 $dtst log_must zfs allow $STAFF1 @basic $dtst log_must verify_perm $dtst $perms1 $STAFF1 done perms2="send,compression,userprop" for dtst in $DATASETS $fs1 $fs2; do log_must zfs allow -s @basic $perms2 $dtst log_must verify_perm $dtst ${perms1},${perms2} $STAFF1 done log_pass "Changing permissions in a set will change what is allowed passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_unallow_007_neg.ksh0000644000000000000000000000007413607166133030074 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.644816525 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_unallow_007_neg.ksh0000755016037001603700000000372313607166133030101 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # zfs unallow will not remove those permissions which inherited from # its parent filesystem. # # STRATEGY: # 1. Assign perm1 to $ROOT_TESTFS # 2. Create $SUBFS and assign perm2 to it. # 3. Verify unallow can not affect perm1 on $SUBFS # verify_runnable "both" log_assert "zfs unallow won't remove those permissions which inherited from " \ "its parent dataset." log_onexit restore_root_datasets perm1="atime,devices"; perm2="compression,checksum" log_must zfs create $SUBFS log_must zfs allow $STAFF1 $perm1 $ROOT_TESTFS log_must zfs allow $STAFF1 $perm2 $SUBFS log_must verify_perm $SUBFS ${perm1},${perm2} $STAFF1 # # Athrough unallow the permissions which don't exists on the specific dataset # return 0, the inherited permissions can't be removed in fact. # log_must zfs unallow -u $STAFF1 $perm1 $SUBFS log_must verify_perm $SUBFS ${perm1},${perm2} $STAFF1 log_pass "Verify zfs unallow won't remove inherited permissions passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_unallow_003_pos.ksh0000644000000000000000000000007413607166133030120 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.635816235 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_unallow_003_pos.ksh0000755016037001603700000000423713607166133030126 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify options '-r' or '-l' + '-d' will unallow permission to this # dataset and the descendent datasets. # # STRATEGY: # 1. Set up unallow test model. # 2. Implement unallow -l -d to $ROOT_TESTFS or $ROOT_TESTVOL without # options. # 3. Verify '-l' + '-d' will unallow local + descendent permission. # 4. Verify '-r' will unallow local + descendent permission. # verify_runnable "both" log_assert "Verify options '-r' and '-l'+'-d' will unallow permission to " \ "this dataset and the descendent datasets." log_onexit restore_root_datasets log_must setup_unallow_testenv for dtst in $DATASETS ; do log_must zfs unallow $STAFF1 $dtst log_must zfs unallow -l -d $STAFF2 $dtst log_must verify_noperm $dtst $LOCAL_SET $STAFF1 if [[ $dtst == $ROOT_TESTFS ]]; then log_must verify_noperm $SUBFS $DESC_SET $STAFF2 fi log_must zfs unallow -l -d $OTHER1 $dtst log_must zfs unallow -r $OTHER2 $dtst log_must verify_noperm $dtst $LOCAL_DESC_SET $OTHER1 $OTHER2 if [[ $dtst == $ROOT_TESTFS ]]; then log_must verify_noperm $SUBFS $LOCAL_DESC_SET $OTHER1 $OTHER2 fi done log_pass "Verify options '-r' and '-l'+'-d' function passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_012_neg.ksh0000644000000000000000000000007413607166147027532 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.628816011 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_012_neg.ksh0000755016037001603700000000504313607166147027534 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Scan all permissions one by one to verify privileged user # can not use permissions properly when delegation property is set off # # STRATEGY: # 1. Delegate all the permission one by one to user on dataset. # 2. Verify privileged user can not use permissions properly when # delegation property is off # verify_runnable "global" function cleanup { log_must zpool set delegation=on $TESTPOOL log_must restore_root_datasets } log_assert "Verify privileged user can not use permissions properly when " \ "delegation property is set off" log_onexit cleanup if is_linux; then set -A perms create snapshot mount send allow quota reservation \ recordsize mountpoint checksum compression canmount atime \ devices exec volsize setuid readonly snapdir userprop \ rollback clone rename promote dnodesize \ zoned xattr receive destroy else set -A perms create snapshot mount send allow quota reservation \ recordsize mountpoint checksum compression canmount atime \ devices exec volsize setuid readonly snapdir userprop \ aclmode aclinherit rollback clone rename promote dnodesize \ zoned xattr receive destroy sharenfs share fi log_must zpool set delegation=off $TESTPOOL for dtst in $DATASETS; do typeset -i i=0 while (( i < ${#perms[@]} )); do log_must zfs allow $STAFF1 ${perms[$i]} $dtst log_must verify_noperm $dtst ${perms[$i]} $STAFF1 log_must restore_root_datasets ((i += 1)) done done log_pass "Verify privileged user can not use permissions properly when " \ "delegation property is set off" zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_unallow_005_pos.ksh0000644000000000000000000000007413607166133030122 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.640816397 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_unallow_005_pos.ksh0000755016037001603700000000445713607166133030134 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify option '-c' will remove the created permission set. # # STRATEGY: # 1. Set created time set to $ROOT_TESTFS. # 2. Allow permission create to $STAFF1 on $ROOT_TESTFS. # 3. Create $SUBFS and verify $STAFF1 have created time permissions. # 4. Verify $STAFF1 has created time permission. # 5. Unallow created time permission with option '-c'. # 6. Created $SUBFS and verify $STAFF1 have not created time permissions. # verify_runnable "both" log_assert "Verify option '-c' will remove the created permission set." log_onexit restore_root_datasets log_must zfs allow -c $LOCAL_SET $ROOT_TESTFS log_must zfs allow -l $STAFF1 create,mount $ROOT_TESTFS # Create $SUBFS and verify $SUBFS has created time permissions. user_run $STAFF1 zfs create $SUBFS if ! datasetexists $SUBFS ; then log_fail "ERROR: ($STAFF1): zfs create $SUBFS" fi log_must verify_perm $SUBFS $LOCAL_SET $STAFF1 # # After unallow -c, create $SUBFS2 and verify $SUBFS2 has not created time # permissions any more. # log_must zfs unallow -c $LOCAL_SET $ROOT_TESTFS user_run $STAFF1 zfs create $SUBFS2 if ! datasetexists $SUBFS2 ; then log_fail "ERROR: ($STAFF1): zfs create $SUBFS2" fi log_must verify_noperm $SUBFS2 $LOCAL_SET $STAFF1 log_pass "Verify option '-c' will remove the created permission set passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025637 xustar000000000000000030 atime=1579730438.436429208 30 ctime=1579730481.649816685 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/Makefile.am0000644016037001603700000000127413607166133025640 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/delegate dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zfs_allow_001_pos.ksh \ zfs_allow_002_pos.ksh \ zfs_allow_003_pos.ksh \ zfs_allow_004_pos.ksh \ zfs_allow_005_pos.ksh \ zfs_allow_006_pos.ksh \ zfs_allow_007_pos.ksh \ zfs_allow_008_pos.ksh \ zfs_allow_009_neg.ksh \ zfs_allow_010_pos.ksh \ zfs_allow_011_neg.ksh \ zfs_allow_012_neg.ksh \ zfs_unallow_001_pos.ksh \ zfs_unallow_002_pos.ksh \ zfs_unallow_003_pos.ksh \ zfs_unallow_004_pos.ksh \ zfs_unallow_005_pos.ksh \ zfs_unallow_006_pos.ksh \ zfs_unallow_007_neg.ksh \ zfs_unallow_008_neg.ksh dist_pkgdata_DATA = \ delegate.cfg \ delegate_common.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_unallow_002_pos.ksh0000644000000000000000000000007413607166133030117 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.633816171 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_unallow_002_pos.ksh0000755016037001603700000000353013607166133030120 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify '-d' only remove the permissions on descendent filesystem. # # STRATEGY: # 1. Set up unallow test model. # 2. Implement unallow -d to $ROOT_TESTFS # 3. Verify '-d' only remove the permissions on descendent filesystem. # verify_runnable "both" log_assert "Verify '-d' only removed the descendent permissions." log_onexit restore_root_datasets log_must setup_unallow_testenv log_must zfs unallow -d $STAFF2 $ROOT_TESTFS log_must verify_noperm $SUBFS $DESC_SET $STAFF2 log_must zfs unallow -d $OTHER1 $ROOT_TESTFS log_must verify_noperm $SUBFS $LOCAL_DESC_SET $OTHER1 log_must verify_perm $ROOT_TESTFS $LOCAL_DESC_SET $OTHER1 log_must verify_perm $ROOT_TESTFS $LOCAL_DESC_SET $OTHER2 log_must verify_perm $SUBFS $LOCAL_DESC_SET $OTHER2 log_pass "Verify '-d' only removed the descendent permissions passed" zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166147025457 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.602815177 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/setup.ksh0000755016037001603700000000433013607166147025457 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # Copyright (c) 2018 George Melikov. All Rights Reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib if ! is_linux; then # check svc:/network/nis/client:default state # disable it if the state is ON # and the state will be restored during cleanup.ksh log_must rm -f $NISSTAFILE if [[ "ON" == $(svcs -H -o sta svc:/network/nis/client:default) ]]; then log_must svcadm disable -t svc:/network/nis/client:default log_must touch $NISSTAFILE fi fi cleanup_user_group # Create staff group and add two user to it log_must add_group $STAFF_GROUP log_must add_user $STAFF_GROUP $STAFF1 log_must add_user $STAFF_GROUP $STAFF2 # Create other group and add two user to it log_must add_group $OTHER_GROUP log_must add_user $OTHER_GROUP $OTHER1 log_must add_user $OTHER_GROUP $OTHER2 # # Verify the test user can execute the zfs utilities. This may not # be possible due to default permissions on the user home directory. # This can be resolved granting group read access. # # chmod 0750 $HOME # user_run $STAFF1 zfs list if [ $? -ne 0 ]; then log_unsupported "Test user $STAFF1 cannot execute zfs utilities" fi DISK=${DISKS%% *} if is_linux; then log_must set_tunable64 zfs_admin_snapshot 1 fi default_volume_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166147025746 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.600815111 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/cleanup.ksh0000755016037001603700000000264113607166147025751 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # Copyright (c) 2018 George Melikov. All Rights Reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib cleanup_user_group if ! is_linux; then # restore the state of svc:/network/nis/client:default if [[ -e $NISSTAFILE ]]; then log_must svcadm enable svc:/network/nis/client:default log_must rm -f $NISSTAFILE fi fi if is_linux; then log_must set_tunable64 zfs_admin_snapshot 0 fi default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_001_pos.ksh0000644000000000000000000000007413607166147027560 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.604815241 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_001_pos.ksh0000755016037001603700000000507313607166147027565 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # "everyone" is interpreted as the keyword "everyone" whatever the same # name user or group is existing. # # STRATEGY: # 1. Create user 'everyone'. # 2. Verify 'everyone' is interpreted as keywords. # 3. Create group 'everyone'. # 4. Verify 'everyone' is interpreted as keywords. # verify_runnable "both" function cleanup { if [[ $user_added == "TRUE" ]] ; then del_user everyone fi if [[ $group_added == "TRUE" ]] ; then del_group everyone fi restore_root_datasets } log_assert "everyone' is interpreted as a keyword even if a user " \ "or group named 'everyone' exists." log_onexit cleanup eval set -A dataset $DATASETS typeset perms="snapshot,reservation,compression,checksum,send,userprop" log_note "Create a user called 'everyone'." if ! id everyone > /dev/null 2>&1; then user_added="TRUE" log_must add_user $STAFF_GROUP everyone fi for dtst in $DATASETS ; do log_must zfs allow everyone $perms $dtst log_must verify_perm $dtst $perms $EVERYONE "everyone" done log_must restore_root_datasets if [[ $user_added == "TRUE" ]]; then log_must del_user everyone fi log_note "Created a group called 'everyone'." if ! cat /etc/group | awk -F: '{print $1}' | \ grep -w 'everyone' > /dev/null 2>&1 then group_added="TRUE" log_must groupadd everyone fi for dtst in $DATASETS ; do log_must zfs allow everyone $perms $dtst log_must verify_perm $dtst $perms $EVERYONE done log_must restore_root_datasets if [[ $group_added == "TRUE" ]]; then log_must groupdel everyone fi log_pass "everyone is always interpreted as keyword passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_010_pos.ksh0000644000000000000000000000007413607166147027560 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.624815883 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_010_pos.ksh0000755016037001603700000001014113607166147027555 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Scan the following permissions one by one to verify privileged user # has correct permission delegation in datasets. # # STRATEGY: # 1. Delegate all the permission one by one to user on dataset. # 2. Verify privileged user has correct permission without any other # permissions allowed. # verify_runnable "both" log_assert "Verify privileged user has correct permissions once which was "\ "delegated to him in datasets" log_onexit restore_root_datasets if is_linux; then # # Results in Results in # Permission Filesystem Volume # # Removed for Linux: # - mount - mount(8) does not permit non-superuser mounts # - mountpoint - mount(8) does not permit non-superuser mounts # - canmount - mount(8) does not permit non-superuser mounts # - rename - mount(8) does not permit non-superuser mounts # - zoned - zones are not supported # - destroy - umount(8) does not permit non-superuser umounts # - sharenfs - sharing requires superuser privileges # - share - sharing requires superuser privileges # - readonly - mount(8) does not permit non-superuser remounts # set -A perms create true false \ snapshot true true \ send true true \ allow true true \ quota true false \ reservation true true \ dnodesize true false \ recordsize true false \ checksum true true \ compression true true \ atime true false \ devices true false \ exec true false \ volsize false true \ setuid true false \ snapdir true false \ userprop true true \ aclinherit true false \ rollback true true \ clone true true \ promote true true \ xattr true false \ receive true false else set -A perms create true false \ snapshot true true \ mount true false \ send true true \ allow true true \ quota true false \ reservation true true \ dnodesize true false \ recordsize true false \ mountpoint true false \ checksum true true \ compression true true \ canmount true false \ atime true false \ devices true false \ exec true false \ volsize false true \ setuid true false \ readonly true true \ snapdir true false \ userprop true true \ aclmode true false \ aclinherit true false \ rollback true true \ clone true true \ rename true true \ promote true true \ zoned true false \ xattr true false \ receive true false \ destroy true true if is_global_zone; then typeset -i n=${#perms[@]} perms[((n))]="sharenfs"; perms[((n+1))]="true"; perms[((n+2))]="false" perms[((n+3))]="share"; perms[((n+4))]="true"; perms[((n+5))]="false" fi fi for dtst in $DATASETS; do typeset -i k=1 typeset type=$(get_prop type $dtst) [[ $type == "volume" ]] && k=2 typeset -i i=0 while (( i < ${#perms[@]} )); do log_must zfs allow $STAFF1 ${perms[$i]} $dtst if [[ ${perms[((i+k))]} == "true" ]]; then log_must verify_perm $dtst ${perms[$i]} $STAFF1 else log_must verify_noperm $dtst ${perms[$i]} $STAFF1 fi log_must restore_root_datasets ((i += 3)) done done log_pass "Verify privileged user has correct permissions " \ "in datasets passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_unallow_004_pos.ksh0000644000000000000000000000007413607166133030121 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.638816332 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_unallow_004_pos.ksh0000755016037001603700000000343213607166133030123 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify '-s' will remove permissions from the named set. # # STRATEGY: # 1. Set @basic set to $ROOT_TESTFS or $ROOT_TESTVOL and allow @basic # to $STAFF1 # 2. Verify $STAFF1 have @basic permissions. # 3. Verify '-s' will remove permission from the named set. # verify_runnable "both" log_assert "Verify '-s' will remove permissions from the named set." log_onexit restore_root_datasets for dtst in $DATASETS ; do log_must zfs allow -s @basic $LOCAL_DESC_SET $dtst log_must zfs allow -u $STAFF1 @basic $dtst log_must verify_perm $dtst $LOCAL_DESC_SET $STAFF1 log_must zfs unallow -s @basic $LOCAL_DESC_SET $dtst log_must verify_noperm $dtst $LOCAL_DESC_SET $STAFF1 done log_pass "Verify '-s' will remove permissions from the named set passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_unallow_008_neg.ksh0000644000000000000000000000007413607166133030075 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.646816589 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_unallow_008_neg.ksh0000755016037001603700000000444513607166133030104 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # zfs unallow can handle invalid arguments. # # STRATEGY: # 1. Set up basic test environment. # 2. Verify zfs unallow handle invalid arguments correctly. # verify_runnable "both" log_assert "zfs unallow can handle invalid arguments." log_onexit restore_root_datasets function neg_test { log_mustnot eval "$@ >/dev/null 2>&1" } # Options that cause this test to fail: # "-r" set -A badopts "everyone -e" "everyone -u $STAFF1" "everyone everyone" \ "-c -l" "-c -d" "-c -e" "-c -s" "-u -e" "-s -e" "-s -l -d" \ "-s @non-exist-set -l" "-s @non-existen-set -d" \ "-s @non-existen-set -e" "-r -u $STAFF1 $STAFF1" \ "-u $STAFF1 -g $STAFF_GROUP" "-u $STAFF1 -e" log_must setup_unallow_testenv # # The GNU getopt(3) implementation will reorder these arguments such the # the parser can handle them and the test doesn't fail. POSIXLY_CORRECT # is set to disable the reordering so the original test cases will fail. # export POSIXLY_CORRECT=1 for dtst in $DATASETS ; do log_must zfs allow -c create $dtst typeset -i i=0 while ((i < ${#badopts[@]})); do neg_test zfs unallow ${badopts[$i]} $dtst ((i += 1)) done # Causes test failure: neg_test user_run $STAFF1 zfs unallow $dtst done unset POSIXLY_CORRECT log_pass "zfs unallow can handle invalid arguments passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_unallow_001_pos.ksh0000644000000000000000000000007413607166133030116 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.630816075 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_unallow_001_pos.ksh0000755016037001603700000000355713607166133030130 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify '-l' only removed the local permissions. # # STRATEGY: # 1. Set up unallow test model. # 2. Implement unallow -l to $ROOT_TESTFS or $TESTVOL # 3. Verify '-l' only remove the local permissions. # verify_runnable "both" log_assert "Verify '-l' only removed the local permissions." log_onexit restore_root_datasets log_must setup_unallow_testenv for dtst in $DATASETS ; do log_must zfs unallow -l $STAFF1 $dtst log_must verify_noperm $dtst $LOCAL_SET $STAFF1 log_must zfs unallow -l $OTHER1 $dtst log_must verify_noperm $dtst $LOCAL_DESC_SET $OTHER1 log_must verify_perm $dtst $LOCAL_DESC_SET $OTHER2 if [[ $dtst == $ROOT_TESTFS ]]; then log_must verify_perm $SUBFS $LOCAL_DESC_SET $OTHER1 $OTHER2 log_must verify_perm $SUBFS $DESC_SET $STAFF2 fi done log_pass "Verify '-l' only removed the local permissions passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_007_pos.ksh0000644000000000000000000000007413607166133027561 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.618815689 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_007_pos.ksh0000755016037001603700000000615313607166133027566 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify the permissions set will be masked on its descendent # datasets by same name set. # # STRATEGY: # 1. Create $ROOT_TESTFS/childfs # 2. Set permission $perms1 to @set on $ROOT_TESTFS # 3. Reset permission $perms2 to @set on $ROOT_TESTFS/childfs # 4. Allow @set to $STAFF1 on $ROOT_TESTFS/childfs # 5. Verify $perms2 is delegated on $ROOT_TESTFS/childfs and its # descendent. # 6. Allow @set to $STAFF1 on $ROOT_TESTFS # 7. Verify $perms1 is not appended to $STAFF1 on $ROOT_TESTFS/childfs and # its descendent since it is masked # verify_runnable "both" log_assert "Verify permission set can be masked on descendent dataset." log_onexit restore_root_datasets typeset perms1="snapshot,reservation,compression" eval set -A dataset $DATASETS typeset perms2="checksum,send,userprop" # # Define three level filesystems # childfs=$ROOT_TESTFS/childfs grandchild=$childfs/grandchild log_must zfs create $childfs log_must zfs create $grandchild # # Setting different permissions to the same set on two level. # But only assign the user at one level. # log_must zfs allow -s @set $perms1 $ROOT_TESTFS log_must zfs allow -s @set $perms2 $childfs log_must zfs allow $STAFF1 @set $childfs # # Verify only perms2 is valid to user on the level which he was assigned. # log_must verify_noperm $ROOT_TESTFS $perms1 $STAFF1 for fs in $childfs $grandchild ; do log_must verify_noperm $fs $perms1 $STAFF1 log_must verify_perm $fs $perms2 $STAFF1 done # # Delegate @set to STAFF1 on ROOT_TESTFS, verify $perms1 will not be appended # to its descendent datasets since it is masked # log_must zfs allow $STAFF1 @set $ROOT_TESTFS log_must verify_perm $ROOT_TESTFS $perms1 $STAFF1 for fs in $childfs $grandchild ; do log_must verify_noperm $fs $perms1 $STAFF1 log_must verify_perm $fs $perms2 $STAFF1 done # Remove the mask, $perms1 will be allowed to its descendent datasets log_must zfs unallow -s @set $childfs for fs in $childfs $grandchild ; do log_must verify_noperm $fs $perms2 $STAFF1 log_must verify_perm $fs $perms1 $STAFF1 done log_pass "Verify permission set can be masked on descendent dataset pass." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_009_neg.ksh0000644000000000000000000000007413612141513027522 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.622815819 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_009_neg.ksh0000755016037001603700000000410713612141513027524 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # zfs allow can deal with invalid arguments.(Invalid options or combination) # # STRATEGY: # 1. Verify invalid arguments will cause error. # 2. Verify non-optional argument was missing will cause error. # 3. Verify invalid options cause error. # verify_runnable "both" log_assert "Verify invalid arguments are handled correctly." log_onexit restore_root_datasets # Permission sets are limited to 64 characters in length. longset="set123456789012345678901234567890123456789012345678901234567890123" for dtst in $DATASETS ; do log_mustnot eval "zfs allow -s @$longset $dtst" # Create non-existent permission set typeset timestamp=$(date +'%F-%R:%S') log_mustnot zfs allow -s @non-existent $dtst log_mustnot zfs allow $STAFF "atime,created,mounted" $dtst log_mustnot zfs allow $dtst $TESTPOOL log_mustnot zfs allow -c $dtst log_mustnot zfs allow -u $STAFF1 $dtst log_mustnot zfs allow -u $STAFF1 -g $STAFF_GROUP "create,destroy" $dtst log_mustnot zfs allow -u $STAFF1 -e "mountpoint" $dtst done log_pass "Invalid arguments are handled correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143006025631 xustar000000000000000030 mtime=1579730438.474430429 30 atime=1579730456.768017783 30 ctime=1579730481.651816749 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/Makefile.in0000664016037001603700000006232613612143006025646 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/delegate DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/delegate ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ cleanup.ksh \ setup.ksh \ zfs_allow_001_pos.ksh \ zfs_allow_002_pos.ksh \ zfs_allow_003_pos.ksh \ zfs_allow_004_pos.ksh \ zfs_allow_005_pos.ksh \ zfs_allow_006_pos.ksh \ zfs_allow_007_pos.ksh \ zfs_allow_008_pos.ksh \ zfs_allow_009_neg.ksh \ zfs_allow_010_pos.ksh \ zfs_allow_011_neg.ksh \ zfs_allow_012_neg.ksh \ zfs_unallow_001_pos.ksh \ zfs_unallow_002_pos.ksh \ zfs_unallow_003_pos.ksh \ zfs_unallow_004_pos.ksh \ zfs_unallow_005_pos.ksh \ zfs_unallow_006_pos.ksh \ zfs_unallow_007_neg.ksh \ zfs_unallow_008_neg.ksh dist_pkgdata_DATA = \ delegate.cfg \ delegate_common.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/delegate/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/delegate/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_002_pos.ksh0000644000000000000000000000007413607166133027554 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.607815337 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_002_pos.ksh0000755016037001603700000000433013607166133027554 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # argument is interpreted as a user if possible, then as a group as # possible. # # STRATEGY: # 1. Create user $STAFF_GROUP # 2. Delegate permissions to $STAFF_GROUP # 3. Verify user $STAFF_GROUP has the permissions. # 4. Delete user $STAFF_GROUP and allow the permission to $STAFF_GROUP # 5. Verify $STAFF_GROUP is interpreted as group. # verify_runnable "both" function cleanup { if id $STAFF_GROUP > /dev/null 2>&1; then log_must del_user $STAFF_GROUP fi restore_root_datasets } log_assert " is interpreted as user if possible, then as group." log_onexit cleanup eval set -A dataset $DATASETS typeset perms="snapshot,reservation,compression,checksum,send,userprop" log_must add_user $STAFF_GROUP $STAFF_GROUP for dtst in $DATASETS ; do log_must zfs allow $STAFF_GROUP $perms $dtst log_must verify_perm $dtst $perms $STAFF_GROUP log_must verify_noperm $dtst $perms $STAFF1 $STAFF2 done log_must restore_root_datasets log_must del_user $STAFF_GROUP for dtst in $datasets ; do log_must zfs allow $STAFF_GROUP $perms $dtst log_must verify_perm $dtst $perms $STAFF1 $STAFF2 done log_pass " is interpreted as user if possible, then as group passed." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_004_pos.ksh0000644000000000000000000000007413607166133027556 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.611815465 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_004_pos.ksh0000755016037001603700000000550413607166133027562 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify option '-d' allow permission to the descendent datasets, and not # for this dataset itself. # # STRATEGY: # 1. Create descendent datasets of $ROOT_TESTFS # 2. Select user, group and everyone and set descendent permission # separately. # 3. Set descendent permissions to $ROOT_TESTFS or $ROOT_TESTVOL. # 4. Verify those permissions are allowed to $ROOT_TESTFS's # descendent dataset. # 5. Verify the permissions are not allowed to $ROOT_TESTFS or # $ROOT_TESTVOL. # verify_runnable "both" log_assert "Verify option '-d' allow permission to the descendent datasets." log_onexit restore_root_datasets childfs=$ROOT_TESTFS/childfs eval set -A dataset $DATASETS typeset perms="snapshot,reservation,compression,checksum,userprop" # Verify option '-d' only affect sub-datasets log_must zfs create $childfs for dtst in $DATASETS ; do log_must zfs allow -d $STAFF1 $perms $dtst log_must verify_noperm $dtst $perms $STAFF1 if [[ $dtst == $ROOT_TESTFS ]]; then log_must verify_perm $childfs $perms $STAFF1 fi done log_must restore_root_datasets # Verify option '-d + -g' affect group in sub-datasets. log_must zfs create $childfs for dtst in $DATASETS ; do log_must zfs allow -d -g $STAFF_GROUP $perms $dtst log_must verify_noperm $dtst $perms $STAFF2 if [[ $dtst == $ROOT_TESTFS ]]; then log_must verify_perm $childfs $perms $STAFF2 fi done log_must restore_root_datasets # Verify option '-d + -e' affect everyone in sub-datasets. log_must zfs create $childfs for dtst in $DATASETS ; do log_must zfs allow -d -e $perms $dtst log_must verify_noperm $dtst $perms $OTHER1 $OTHER2 if [[ $dtst == $ROOT_TESTFS ]]; then log_must verify_perm $childfs $perms $OTHER1 $OTHER2 fi done log_must restore_root_datasets log_pass "Verify option '-d' allow permission to the descendent datasets pass." zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/delegate_common.kshlib0000644000000000000000000000007413607166147030130 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.598815047 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/delegate_common.kshlib0000644016037001603700000010454713607166147030140 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # Copyright 2016 Nexenta Systems, Inc. # Copyright (c) 2018 George Melikov. All Rights Reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/delegate/delegate.cfg # # Cleanup exist user/group. # function cleanup_user_group { typeset i for i in $STAFF1 $STAFF2 $OTHER1 $OTHER2 ; do del_user $i done for i in $STAFF_GROUP $OTHER_GROUP ; do del_group $i done return 0 } # # Restore test file system to the original status. # function restore_root_datasets { destroy_dataset "$ROOT_TESTFS" "-Rf" log_must zfs create $ROOT_TESTFS if is_global_zone ; then destroy_dataset "$ROOT_TESTVOL" "-Rf" log_must zfs create -V $VOLSIZE $ROOT_TESTVOL block_device_wait fi return 0 } # # Verify the specified user have permission on the dataset # # $1 dataset # $2 permissions which are separated by comma(,) # $3-n users # function verify_perm { typeset dtst=$1 typeset permissions=$2 shift 2 if [[ -z $@ || -z $permissions || -z $dtst ]]; then return 1 fi typeset type=$(get_prop type $dtst) permissions=$(echo $permissions | tr -s "," " ") typeset user for user in $@; do typeset perm for perm in $permissions; do typeset -i ret=1 if [[ $type == "filesystem" ]]; then check_fs_perm $user $perm $dtst ret=$? elif [[ $type == "volume" ]]; then check_vol_perm $user $perm $dtst ret=$? fi log_note "Check $type $user $perm $dtst" if ((ret != 0)) ; then log_note "Fail: $user should have $perm " \ "on $dtst" return 1 fi done done return 0 } # # Verify the specified user have no permission on the dataset # # $1 dataset # $2 permissions which are separated by comma(,) # $3-n users # function verify_noperm { typeset dtst=$1 typeset permissions=$2 shift 2 if [[ -z $@ || -z $permissions || -z $dtst ]]; then return 1 fi typeset type=$(get_prop type $dtst) permissions=$(echo $permissions | tr -s "," " ") typeset user for user in $@; do typeset perm for perm in $permissions; do typeset -i ret=1 if [[ $type == "filesystem" ]]; then check_fs_perm $user $perm $dtst ret=$? elif [[ $type == "volume" ]]; then check_vol_perm $user $perm $dtst ret=$? fi if ((ret == 0)) ; then log_note "Fail: $user should not have $perm " \ "on $dtst" return 1 fi done done return 0 } function common_perm { typeset user=$1 typeset perm=$2 typeset dtst=$3 typeset -i ret=1 case $perm in send) verify_send $user $perm $dtst ret=$? ;; allow) verify_allow $user $perm $dtst ret=$? ;; userprop) verify_userprop $user $perm $dtst ret=$? ;; compression|checksum|readonly) verify_ccr $user $perm $dtst ret=$? ;; copies) verify_copies $user $perm $dtst ret=$? ;; reservation) verify_reservation $user $perm $dtst ret=$? ;; *) ret=1 ;; esac return $ret } function check_fs_perm { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset -i ret=1 case $perm in create) verify_fs_create $user $perm $fs ret=$? ;; destroy) verify_fs_destroy $user $perm $fs ret=$? ;; snapshot) verify_fs_snapshot $user $perm $fs ret=$? ;; rollback) verify_fs_rollback $user $perm $fs ret=$? ;; clone) verify_fs_clone $user $perm $fs ret=$? ;; rename) verify_fs_rename $user $perm $fs ret=$? ;; mount) verify_fs_mount $user $perm $fs ret=$? ;; share) verify_fs_share $user $perm $fs ret=$? ;; mountpoint) verify_fs_mountpoint $user $perm $fs ret=$? ;; promote) verify_fs_promote $user $perm $fs ret=$? ;; canmount) verify_fs_canmount $user $perm $fs ret=$? ;; dnodesize) verify_fs_dnodesize $user $perm $fs ret=$? ;; recordsize) verify_fs_recordsize $user $perm $fs ret=$? ;; quota) verify_fs_quota $user $perm $fs ret=$? ;; aclmode) verify_fs_aclmode $user $perm $fs ret=$? ;; aclinherit) verify_fs_aclinherit $user $perm $fs ret=$? ;; snapdir) verify_fs_snapdir $user $perm $fs ret=$? ;; atime|exec|devices|setuid|xattr) verify_fs_aedsx $user $perm $fs ret=$? ;; zoned) verify_fs_zoned $user $perm $fs ret=$? ;; sharenfs) verify_fs_sharenfs $user $perm $fs ret=$? ;; receive) verify_fs_receive $user $perm $fs ret=$? ;; *) common_perm $user $perm $fs ret=$? ;; esac return $ret } function check_vol_perm { typeset user=$1 typeset perm=$2 typeset vol=$3 typeset -i ret=1 case $perm in destroy) verify_vol_destroy $user $perm $vol ret=$? ;; snapshot) verify_vol_snapshot $user $perm $vol ret=$? ;; rollback) verify_vol_rollback $user $perm $vol ret=$? ;; clone) verify_vol_clone $user $perm $vol ret=$? ;; rename) verify_vol_rename $user $perm $vol ret=$? ;; promote) verify_vol_promote $user $perm $vol ret=$? ;; volsize) verify_vol_volsize $user $perm $vol ret=$? ;; *) common_perm $user $perm $vol ret=$? ;; esac return $ret } function setup_unallow_testenv { log_must restore_root_datasets log_must zfs create $SUBFS for dtst in $DATASETS ; do log_must zfs allow -l $STAFF1 $LOCAL_SET $dtst log_must zfs allow -d $STAFF2 $DESC_SET $dtst log_must zfs allow $OTHER1 $LOCAL_DESC_SET $dtst log_must zfs allow $OTHER2 $LOCAL_DESC_SET $dtst log_must verify_perm $dtst $LOCAL_SET $STAFF1 log_must verify_perm $dtst $LOCAL_DESC_SET $OTHER1 log_must verify_perm $dtst $LOCAL_DESC_SET $OTHER2 if [[ $dtst == $ROOT_TESTFS ]]; then log_must verify_perm $SUBFS $DESC_SET $STAFF2 log_must verify_perm $SUBFS $LOCAL_DESC_SET $OTHER1 log_must verify_perm $SUBFS $LOCAL_DESC_SET $OTHER2 fi done return 0 } # # Verify permission send for specified user on the dataset # $1 user # $2 permission # $3 dataset # function verify_send { typeset user=$1 typeset perm=$2 typeset dtst=$3 typeset oldval typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset snap=$dtst@snap.$stamp typeset -i ret=1 log_must zfs snapshot $snap typeset bak_user=$TEST_BASE_DIR/bak.$user.$stamp typeset bak_root=$TEST_BASE_DIR/bak.root.$stamp user_run $user eval "zfs send $snap > $bak_user" log_must eval "zfs send $snap > $bak_root" if [[ $(checksum $bak_user) == $(checksum $bak_root) ]]; then ret=0 fi rm -rf $bak_user > /dev/null rm -rf $bak_root > /dev/null return $ret } function verify_fs_receive { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset dtst typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset newfs=$fs/newfs.$stamp typeset newvol=$fs/newvol.$stamp typeset bak_user=$TEST_BASE_DIR/bak.$user.$stamp typeset bak_root=$TEST_BASE_DIR/bak.root.$stamp log_must zfs create $newfs typeset datasets="$newfs" if is_global_zone ; then log_must zfs create -V $VOLSIZE $newvol block_device_wait datasets="$newfs $newvol" fi for dtst in $datasets ; do typeset dtstsnap=$dtst@snap.$stamp log_must zfs snapshot $dtstsnap log_must eval "zfs send $dtstsnap > $bak_root" log_must_busy zfs destroy -rf $dtst user_run $user eval "zfs receive $dtst < $bak_root" if datasetexists $dtstsnap ; then return 1 fi log_must zfs allow $user create $fs user_run $user eval "zfs receive $dtst < $bak_root" log_must zfs unallow $user create $fs if datasetexists $dtstsnap ; then return 1 fi log_must zfs allow $user mount $fs user_run $user eval "zfs receive $dtst < $bak_root" log_must zfs unallow $user mount $fs if datasetexists $dtstsnap ; then return 1 fi log_must zfs allow $user mount,create $fs user_run $user eval "zfs receive $dtst < $bak_root" log_must zfs unallow $user mount,create $fs if ! datasetexists $dtstsnap ; then return 1 fi # check the data integrity log_must eval "zfs send $dtstsnap > $bak_user" log_must_busy zfs destroy -rf $dtst log_must eval "zfs receive $dtst < $bak_root" log_must eval "zfs send $dtstsnap > $bak_root" log_must_busy zfs destroy -rf $dtst if [[ $(checksum $bak_user) != $(checksum $bak_root) ]]; then return 1 fi rm -rf $bak_user > /dev/null rm -rf $bak_root > /dev/null done return 0 } function verify_userprop { typeset user=$1 typeset perm=$2 typeset dtst=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') user_run $user zfs set "$user:ts=$stamp" $dtst if [[ $stamp != $(get_prop "$user:ts" $dtst) ]]; then return 1 fi return 0 } function verify_ccr { typeset user=$1 typeset perm=$2 typeset dtst=$3 typeset oldval set -A modes "on" "off" oldval=$(get_prop $perm $dtst) if [[ $oldval == "on" ]]; then n=1 elif [[ $oldval == "off" ]]; then n=0 fi log_note "$user zfs set $perm=${modes[$n]} $dtst" user_run $user zfs set $perm=${modes[$n]} $dtst if [[ ${modes[$n]} != $(get_prop $perm $dtst) ]]; then return 1 fi return 0 } function verify_copies { typeset user=$1 typeset perm=$2 typeset dtst=$3 typeset oldval set -A modes 1 2 3 oldval=$(get_prop $perm $dtst) if [[ $oldval -eq 1 ]]; then n=1 elif [[ $oldval -eq 2 ]]; then n=2 elif [[ $oldval -eq 3 ]]; then n=0 fi log_note "$user zfs set $perm=${modes[$n]} $dtst" user_run $user zfs set $perm=${modes[$n]} $dtst if [[ ${modes[$n]} != $(get_prop $perm $dtst) ]]; then return 1 fi return 0 } function verify_reservation { typeset user=$1 typeset perm=$2 typeset dtst=$3 typeset value32m=$(( 1024 * 1024 * 32 )) typeset oldval=$(get_prop reservation $dtst) user_run $user zfs set reservation=$value32m $dtst if [[ $value32m != $(get_prop reservation $dtst) ]]; then log_must zfs set reservation=$oldval $dtst return 1 fi log_must zfs set reservation=$oldval $dtst return 0 } function verify_fs_create { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset newfs=$fs/nfs.$stamp typeset newvol=$fs/nvol.$stamp user_run $user zfs create $newfs if datasetexists $newfs ; then return 1 fi log_must zfs allow $user mount $fs user_run $user zfs create $newfs log_must zfs unallow $user mount $fs if ! datasetexists $newfs ; then return 1 fi log_must zfs destroy $newfs if is_global_zone ; then # mount permission is required for sparse volume user_run $user zfs create -V 150m -s $newvol block_device_wait if datasetexists $newvol ; then return 1 fi log_must zfs allow $user mount $fs user_run $user zfs create -V 150m -s $newvol log_must zfs unallow $user mount $fs if ! datasetexists $newvol ; then return 1 fi block_device_wait log_must zfs destroy $newvol block_device_wait # mount and reserveration permission are # required for normal volume user_run $user zfs create -V 150m $newvol block_device_wait if datasetexists $newvol ; then return 1 fi log_must zfs allow $user mount $fs user_run $user zfs create -V 150m $newvol block_device_wait log_must zfs unallow $user mount $fs if datasetexists $newvol ; then return 1 fi log_must zfs allow $user reservation $fs user_run $user zfs create -V 150m $newvol block_device_wait log_must zfs unallow $user reservation $fs if datasetexists $newvol ; then return 1 fi log_must zfs allow $user refreservation $fs user_run $user zfs create -V 150m $newvol block_device_wait log_must zfs unallow $user refreservation $fs if datasetexists $newvol ; then return 1 fi log_must zfs allow $user mount $fs log_must zfs allow $user reservation $fs log_must zfs allow $user refreservation $fs user_run $user zfs create -V 150m $newvol log_must zfs unallow $user mount $fs log_must zfs unallow $user reservation $fs log_must zfs unallow $user refreservation $fs if ! datasetexists $newvol ; then return 1 fi block_device_wait log_must zfs destroy $newvol block_device_wait fi return 0 } function verify_fs_destroy { typeset user=$1 typeset perm=$2 typeset fs=$3 if ! ismounted $fs ; then user_run $user zfs destroy $fs if datasetexists $fs ; then return 1 fi fi if ismounted $fs ; then user_run $user zfs destroy $fs if ! datasetexists $fs ; then return 1 fi # mount permission is required log_must zfs allow $user mount $fs user_run $user zfs destroy $fs if datasetexists $fs ; then return 1 fi fi return 0 } # Verify that given the correct delegation, a regular user can: # Take a snapshot of an unmounted dataset # Take a snapshot of an mounted dataset # Create a snapshot by making a directory in the .zfs/snapshot directory function verify_fs_snapshot { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset snap=$fs@snap.$stamp typeset mntpt=$(get_prop mountpoint $fs) if [[ "yes" == $(get_prop mounted $fs) ]]; then log_must zfs umount $fs fi user_run $user zfs snapshot $snap if ! datasetexists $snap ; then return 1 fi log_must zfs destroy $snap if [[ "no" == $(get_prop mounted $fs) ]]; then log_must zfs mount $fs fi user_run $user zfs snapshot $snap if ! datasetexists $snap ; then return 1 fi log_must zfs destroy $snap typeset snapdir=${mntpt}/.zfs/snapshot/snap.$stamp user_run $user mkdir $snapdir if ! datasetexists $snap ; then return 1 fi log_must zfs destroy $snap return 0 } function verify_fs_rollback { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset oldval typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset snap=$fs@snap.$stamp typeset mntpt=$(get_prop mountpoint $fs) oldval=$(datasetcksum $fs) log_must zfs snapshot $snap if ! ismounted $fs; then log_must zfs mount $fs fi log_must touch $mntpt/testfile.$stamp user_run $user zfs rollback -R $snap if is_global_zone ; then if [[ $oldval != $(datasetcksum $fs) ]]; then return 1 fi else # datasetcksum can not be used in local zone if [[ -e $mntpt/testfile.$stamp ]]; then return 1 fi fi return 0 } function verify_fs_clone { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset basefs=${fs%/*} typeset snap=$fs@snap.$stamp typeset clone=$basefs/cfs.$stamp log_must zfs snapshot $snap user_run $user zfs clone $snap $clone if datasetexists $clone ; then return 1 fi log_must zfs allow $user create $basefs user_run $user zfs clone $snap $clone log_must zfs unallow $user create $basefs if datasetexists $clone ; then return 1 fi log_must zfs allow $user mount $basefs user_run $user zfs clone $snap $clone log_must zfs unallow $user mount $basefs if datasetexists $clone ; then return 1 fi log_must zfs allow $user mount $basefs log_must zfs allow $user create $basefs user_run $user zfs clone $snap $clone log_must zfs unallow $user create $basefs log_must zfs unallow $user mount $basefs if ! datasetexists $clone ; then return 1 fi log_must zfs destroy -R $snap return 0 } function verify_fs_rename { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset basefs=${fs%/*} typeset snap=$fs@snap.$stamp typeset renamefs=$basefs/nfs.$stamp if ! ismounted $fs; then log_must zfs mount $fs fi # case 1 user_run $user zfs rename $fs $renamefs if datasetexists $renamefs ; then return 1 fi # case 2 log_must zfs allow $user create $basefs user_run $user zfs rename $fs $renamefs log_must zfs unallow $user create $basefs if datasetexists $renamefs ; then return 1 fi # case 3 log_must zfs allow $user mount $basefs user_run $user zfs rename $fs $renamefs log_must zfs unallow $user mount $basefs if datasetexists $renamefs ; then return 1 fi # case 4 log_must zfs allow $user mount $fs user_run $user zfs rename $fs $renamefs if datasetexists $renamefs ; then log_must zfs unallow $user mount $renamefs return 1 fi log_must zfs unallow $user mount $fs # case 5 log_must zfs allow $user create $basefs log_must zfs allow $user mount $fs user_run $user zfs rename $fs $renamefs log_must zfs unallow $user create $basefs if datasetexists $renamefs ; then log_must zfs unallow $user mount $renamefs return 1 fi log_must zfs unallow $user mount $fs # case 6 log_must zfs allow $user mount $basefs log_must zfs allow $user mount $fs user_run $user zfs rename $fs $renamefs log_must zfs unallow $user mount $basefs if datasetexists $renamefs ; then log_must zfs unallow $user mount $renamefs return 1 fi log_must zfs unallow $user mount $fs # case 7 log_must zfs allow $user create $basefs log_must zfs allow $user mount $basefs user_run $user zfs rename $fs $renamefs log_must zfs unallow $user mount $basefs log_must zfs unallow $user create $basefs if ! datasetexists $renamefs ; then return 1 fi log_must zfs rename $renamefs $fs return 0 } function verify_fs_mount { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset mntpt=$(get_prop mountpoint $fs) typeset newmntpt=$TEST_BASE_DIR/mnt.$stamp if ismounted $fs ; then user_run $user zfs unmount $fs if ismounted $fs ; then return 1 fi fi if ! ismounted $fs ; then log_must zfs set mountpoint=$newmntpt $fs log_must rm -rf $newmntpt log_must mkdir $newmntpt user_run $user zfs mount $fs if ismounted $fs ; then return 1 fi # mountpoint's owner must be the user log_must chown $user $newmntpt user_run $user zfs mount $fs if ! ismounted $fs ; then return 1 fi log_must zfs umount $fs log_must rm -rf $newmntpt log_must zfs set mountpoint=$mntpt $fs fi return 0 } function verify_fs_share { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset -i ret=0 svcadm enable -rs nfs/server typeset stat=$(svcs -H -o STA nfs/server:default) if [[ $stat != "ON" ]]; then log_fail "Could not enable nfs/server" fi log_must zfs set sharenfs=on $fs zfs unshare $fs user_run $user zfs share $fs if ! is_shared $fs; then ret=1 fi zfs unshare $fs log_must zfs set sharenfs=off $fs return $ret } function verify_fs_mountpoint { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset mntpt=$(get_prop mountpoint $fs) typeset newmntpt=$TEST_BASE_DIR/mnt.$stamp if ! ismounted $fs ; then user_run $user zfs set mountpoint=$newmntpt $fs if [[ $newmntpt != \ $(get_prop mountpoint $fs) ]] ; then return 1 fi log_must zfs set mountpoint=$mntpt $fs fi if ismounted $fs ; then user_run $user zfs set mountpoint=$newmntpt $fs if [[ $mntpt != $(get_prop mountpoint $fs) ]]; then return 1 fi # require mount permission when fs is mounted log_must zfs allow $user mount $fs user_run $user zfs set mountpoint=$newmntpt $fs log_must zfs unallow $user mount $fs if [[ $newmntpt != \ $(get_prop mountpoint $fs) ]] ; then return 1 fi log_must zfs set mountpoint=$mntpt $fs fi return 0 } function verify_fs_promote { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset basefs=${fs%/*} typeset snap=$fs@snap.$stamp typeset clone=$basefs/cfs.$stamp log_must zfs snapshot $snap log_must zfs clone $snap $clone log_must zfs promote $clone typeset fs_orig=$(get_prop origin $fs) typeset clone_orig=$(get_prop origin $clone) user_run $user zfs promote $fs # promote should fail if original fs does not have # promote permission if [[ $fs_orig != $(get_prop origin $fs) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi log_must zfs allow $user promote $clone user_run $user zfs promote $fs log_must zfs unallow $user promote $clone if [[ $fs_orig != $(get_prop origin $fs) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi log_must zfs allow $user mount $fs user_run $user zfs promote $fs log_must zfs unallow $user mount $fs if [[ $fs_orig != $(get_prop origin $fs) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi log_must zfs allow $user mount $fs log_must zfs allow $user promote $clone user_run $user zfs promote $fs log_must zfs unallow $user promote $clone log_must zfs unallow $user mount $fs if [[ $snap != $(get_prop origin $clone) || \ $clone_orig != $(get_prop origin $fs) ]]; then return 1 fi return 0 } function verify_fs_canmount { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset oldval typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') if ! ismounted $fs ; then set -A modes "on" "off" oldval=$(get_prop $perm $fs) if [[ $oldval == "on" ]]; then n=1 elif [[ $oldval == "off" ]]; then n=0 fi log_note "$user zfs set $perm=${modes[$n]} $fs" user_run $user zfs set $perm=${modes[$n]} $fs if [[ ${modes[$n]} != $(get_prop $perm $fs) ]]; then return 1 fi fi # fs is mounted if ismounted $fs ; then # property value does not change if # no mount permission set -A modes "on" "off" oldval=$(get_prop $perm $fs) if [[ $oldval == "on" ]]; then n=1 elif [[ $oldval == "off" ]]; then n=0 fi log_note "$user zfs set $perm=${modes[$n]} $fs" log_must zfs allow $user mount $fs user_run $user zfs set $perm=${modes[$n]} $fs log_must zfs unallow $user mount $fs if [[ ${modes[$n]} != $(get_prop $perm $fs) ]]; then return 1 fi fi return 0 } function verify_fs_recordsize { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset value8k=$(( 1024 * 8 )) user_run $user zfs set recordsize=$value8k $fs if [[ $value8k != $(get_prop recordsize $fs) ]]; then return 1 fi return 0 } function verify_fs_dnodesize { typeset user=$1 typeset perm=$2 typeset fs=$3 value="2k" user_run $user zfs set dnodesize=$value $fs if [[ $value != $(get_prop dnodesize $fs) ]]; then return 1 fi return 0 } function verify_fs_quota { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset value32m=$(( 1024 * 1024 * 32 )) user_run $user zfs set quota=$value32m $fs if [[ $value32m != $(get_prop quota $fs) ]]; then return 1 fi return 0 } function verify_fs_aclmode { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset oldval set -A modes "discard" "groupmask" "passthrough" oldval=$(get_prop $perm $fs) if [[ $oldval == "discard" ]]; then n=1 elif [[ $oldval == "groupmask" ]]; then n=2 elif [[ $oldval == "passthrough" ]]; then n=0 fi log_note "$user zfs set aclmode=${modes[$n]} $fs" user_run $user zfs set aclmode=${modes[$n]} $fs if [[ ${modes[$n]} != $(get_prop aclmode $fs) ]]; then return 1 fi return 0 } function verify_fs_aclinherit { typeset user=$1 typeset perm=$2 typeset fs=$3 # # PSARC/2008/231 change the default value of aclinherit to "restricted" # but still keep the old interface of "secure" # typeset oldval set -A modes "discard" "noallow" "secure" "passthrough" oldval=$(get_prop $perm $fs) if [[ $oldval == "discard" ]]; then n=1 elif [[ $oldval == "noallow" ]]; then n=2 elif [[ $oldval == "secure" || $oldval == "restricted" ]]; then n=3 elif [[ $oldval == "passthrough" ]]; then n=0 fi log_note "$user zfs set aclinherit=${modes[$n]} $fs" user_run $user zfs set aclinherit=${modes[$n]} $fs typeset newval=$(get_prop aclinherit $fs) if [[ ${modes[$n]} == "secure" && $newval == "restricted" ]]; then return 0 elif [[ ${modes[$n]} != $(get_prop aclinherit $fs) ]]; then return 1 fi return 0 } function verify_fs_snapdir { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset oldval set -A modes "visible" "hidden" oldval=$(get_prop $perm $fs) if [[ $oldval == "visible" ]]; then n=1 elif [[ $oldval == "hidden" ]]; then n=0 fi log_note "$user zfs set snapdir=${modes[$n]} $fs" user_run $user zfs set snapdir=${modes[$n]} $fs if [[ ${modes[$n]} != $(get_prop snapdir $fs) ]]; then return 1 fi return 0 } function verify_fs_aedsx { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset oldval set -A modes "on" "off" oldval=$(get_prop $perm $fs) if [[ $oldval == "on" ]]; then n=1 elif [[ $oldval == "off" ]]; then n=0 fi log_note "$user zfs set $perm=${modes[$n]} $fs" user_run $user zfs set $perm=${modes[$n]} $fs if [[ ${modes[$n]} != $(get_prop $perm $fs) ]]; then return 1 fi return 0 } function verify_fs_zoned { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset oldval set -A modes "on" "off" oldval=$(get_prop $perm $fs) if [[ $oldval == "on" ]]; then n=1 elif [[ $oldval == "off" ]]; then n=0 fi log_note "$user zfs set $perm=${modes[$n]} $fs" if is_global_zone ; then if ! ismounted $fs ; then user_run $user zfs set \ $perm=${modes[$n]} $fs if [[ ${modes[$n]} != \ $(get_prop $perm $fs) ]]; then return 1 fi if [[ $n -eq 0 ]]; then log_mustnot zfs mount $fs else log_must zfs mount $fs fi fi if ismounted $fs; then # n always is 1 in this case user_run $user zfs set \ $perm=${modes[$n]} $fs if [[ $oldval != \ $(get_prop $perm $fs) ]]; then return 1 fi # mount permission is needed # to make zoned=on log_must zfs allow $user mount $fs user_run $user zfs set \ $perm=${modes[$n]} $fs log_must zfs unallow $user mount $fs if [[ ${modes[$n]} != \ $(get_prop $perm $fs) ]]; then return 1 fi fi fi if ! is_global_zone; then user_run $user zfs set $perm=${modes[$n]} $fs if [[ $oldval != $(get_prop $perm $fs) ]]; then return 1 fi fi return 0 } function verify_fs_sharenfs { typeset user=$1 typeset perm=$2 typeset fs=$3 typeset nmode omode omode=$(get_prop $perm $fs) if [[ $omode == "off" ]]; then nmode="on" else nmode="off" fi log_note "$user zfs set $perm=$nmode $fs" user_run $user zfs set $perm=$nmode $fs if [[ $(get_prop $perm $fs) != $nmode ]]; then return 1 fi log_note "$user zfs set $perm=$omode $fs" user_run $user zfs set $perm=$omode $fs if [[ $(get_prop $perm $fs) != $omode ]]; then return 1 fi return 0 } function verify_vol_destroy { typeset user=$1 typeset perm=$2 typeset vol=$3 user_run $user zfs destroy $vol if ! datasetexists $vol ; then return 1 fi # mount permission is required log_must zfs allow $user mount $vol user_run $user zfs destroy $vol if datasetexists $vol ; then return 1 fi return 0 } function verify_vol_snapshot { typeset user=$1 typeset perm=$2 typeset vol=$3 typeset stamp=${perm}.${user}.$(date +'%F-%T-%N') typeset basevol=${vol%/*} typeset snap=$vol@snap.$stamp user_run $user zfs snapshot $snap if datasetexists $snap ; then return 1 fi log_must zfs allow $user mount $vol user_run $user zfs snapshot $snap log_must zfs unallow $user mount $vol if ! datasetexists $snap ; then return 1 fi return 0 } function verify_vol_rollback { typeset user=$1 typeset perm=$2 typeset vol=$3 typeset stamp=${perm}.${user}.$(date+'%F-%T-%N') typeset basevol=${vol%/*} typeset snap=$vol@snap.$stamp typeset oldval log_must zfs snapshot $snap oldval=$(datasetcksum $vol) log_must dd if=/dev/urandom of=$ZVOL_RDEVDIR/$vol \ bs=512 count=1 user_run $user zfs rollback -R $snap sleep 10 if [[ $oldval == $(datasetcksum $vol) ]]; then return 1 fi # rollback on volume has to be with mount permission log_must zfs allow $user mount $vol user_run $user zfs rollback -R $snap sleep 10 log_must zfs unallow $user mount $vol if [[ $oldval != $(datasetcksum $vol) ]]; then return 1 fi return 0 } function verify_vol_clone { typeset user=$1 typeset perm=$2 typeset vol=$3 typeset stamp=${perm}.${user}.$(date+'%F-%T-%N') typeset basevol=${vol%/*} typeset snap=$vol@snap.$stamp typeset clone=$basevol/cvol.$stamp log_must zfs snapshot $snap user_run $user zfs clone $snap $clone if datasetexists $clone ; then return 1 fi log_must zfs allow $user create $basevol user_run $user zfs clone $snap $clone log_must zfs unallow $user create $basevol if datasetexists $clone ; then return 1 fi log_must zfs allow $user mount $basevol user_run $user zfs clone $snap $clone log_must zfs unallow $user mount $basevol if datasetexists $clone ; then return 1 fi # require create permission on parent and # mount permission on itself as well log_must zfs allow $user mount $basevol log_must zfs allow $user create $basevol user_run $user zfs clone $snap $clone log_must zfs unallow $user create $basevol log_must zfs unallow $user mount $basevol if ! datasetexists $clone ; then return 1 fi return 0 } function verify_vol_rename { typeset user=$1 typeset perm=$2 typeset vol=$3 typeset stamp=${perm}.${user}.$(date+'%F-%T-%N') typeset basevol=${vol%/*} typeset snap=$vol@snap.$stamp typeset clone=$basevol/cvol.$stamp typeset renamevol=$basevol/nvol.$stamp user_run $user zfs rename $vol $renamevol if datasetexists $renamevol ; then return 1 fi log_must zfs allow $user create $basevol user_run $user zfs rename $vol $renamevol log_must zfs unallow $user create $basevol if datasetexists $renamevol ; then return 1 fi log_must zfs allow $user mount $basevol user_run $user zfs rename $vol $renamevol log_must zfs unallow $user mount $basevol if datasetexists $renamevol ; then return 1 fi # require both create permission on parent and # mount permission on parent as well log_must zfs allow $user mount $basevol log_must zfs allow $user create $basevol user_run $user zfs rename $vol $renamevol log_must zfs unallow $user mount $basevol log_must zfs unallow $user create $basevol if ! datasetexists $renamevol ; then return 1 fi log_must zfs rename $renamevol $vol return 0 } function verify_vol_promote { typeset user=$1 typeset perm=$2 typeset vol=$3 typeset stamp=${perm}.${user}.$(date+'%F-%T-%N') typeset basevol=${vol%/*} typeset snap=$vol@snap.$stamp typeset clone=$basevol/cvol.$stamp log_must zfs snapshot $snap log_must zfs clone $snap $clone log_must zfs promote $clone typeset vol_orig=$(get_prop origin $vol) typeset clone_orig=$(get_prop origin $clone) # promote should fail if $vol and $clone # miss either mount or promote permission # case 1 user_run $user zfs promote $vol if [[ $vol_orig != $(get_prop origin $vol) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi # promote should fail if $vol and $clone # miss either mount or promote permission # case 2 log_must zfs allow $user promote $clone user_run $user zfs promote $vol log_must zfs unallow $user promote $clone if [[ $vol_orig != $(get_prop origin $vol) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi # promote should fail if $vol and $clone # miss either mount or promote permission # case 3 log_must zfs allow $user mount $vol user_run $user zfs promote $vol log_must zfs unallow $user mount $vol if [[ $vol_orig != $(get_prop origin $vol) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi # promote should fail if $vol and $clone # miss either mount or promote permission # case 4 log_must zfs allow $user mount $clone user_run $user zfs promote $vol log_must zfs unallow $user mount $clone if [[ $vol_orig != $(get_prop origin $vol) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi # promote should fail if $vol and $clone # miss either mount or promote permission # case 5 log_must zfs allow $user promote $clone log_must zfs allow $user mount $vol user_run $user zfs promote $vol log_must zfs unallow $user promote $clone log_must zfs unallow $user mount $vol if [[ $vol_orig != $(get_prop origin $vol) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi # promote should fail if $vol and $clone # miss either mount or promote permission # case 6 log_must zfs allow $user promote $clone log_must zfs allow $user mount $clone user_run $user zfs promote $vol log_must zfs unallow $user promote $clone log_must zfs unallow $user mount $vol if [[ $vol_orig != $(get_prop origin $vol) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi # promote should fail if $vol and $clone # miss either mount or promote permission # case 7 log_must zfs allow $user mount $vol log_must zfs allow $user mount $clone user_run $user zfs promote $vol log_must zfs unallow $user mount $vol log_must zfs unallow $user mount $clone if [[ $vol_orig != $(get_prop origin $vol) || \ $clone_orig != $(get_prop origin $clone) ]]; then return 1 fi # promote only succeeds when $vol and $clone # have both mount and promote permission # case 8 log_must zfs allow $user promote $clone log_must zfs allow $user mount $vol log_must zfs allow $user mount $clone user_run $user zfs promote $vol log_must zfs unallow $user promote $clone log_must zfs unallow $user mount $vol log_must zfs unallow $user mount $clone if [[ $snap != $(get_prop origin $clone) || \ $clone_orig != $(get_prop origin $vol) ]]; then return 1 fi return 0 } function verify_vol_volsize { typeset user=$1 typeset perm=$2 typeset vol=$3 typeset oldval oldval=$(get_prop volsize $vol) (( newval = oldval * 2 )) reserv_size=$(get_prop refreservation $vol) if [[ "0" == $reserv_size ]]; then # sparse volume user_run $user zfs set volsize=$newval $vol if [[ $oldval == $(get_prop volsize $vol) ]]; then return 1 fi else # normal volume, reservation permission # is required user_run $user zfs set volsize=$newval $vol if [[ $newval == $(get_prop volsize $vol) ]]; then return 1 fi log_must zfs allow $user reservation $vol log_must zfs allow $user refreservation $vol user_run $user zfs set volsize=$newval $vol log_must zfs unallow $user reservation $vol log_must zfs unallow $user refreservation $vol if [[ $oldval == $(get_prop volsize $vol) ]]; then return 1 fi fi return 0 } function verify_allow { typeset user=$1 typeset perm=$2 typeset dtst=$3 typeset -i ret user_run $user zfs allow $user allow $dtst ret=$? if [[ $ret -eq 0 ]]; then return 1 fi log_must zfs allow $user copies $dtst user_run $user zfs allow $user copies $dtst ret=$? log_must zfs unallow $user copies $dtst if [[ $ret -eq 1 ]]; then return 1 fi return 0 } zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/PaxHeaders.151519/zfs_allow_011_neg.ksh0000644000000000000000000000007413607166133027524 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730481.626815947 zfs-0.8.3/tests/zfs-tests/tests/functional/delegate/zfs_allow_011_neg.ksh0000755016037001603700000000360513607166133027530 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/delegate/delegate_common.kshlib # # DESCRIPTION: # Verify zpool subcmds and system readonly properties can't be delegated. # # STRATEGY: # 1. Loop all the zpool subcmds and readonly properties, except permission # 'create' & 'destroy'. # 2. Verify those subcmd or properties can't be delegated. # verify_runnable "both" log_assert "Verify zpool subcmds and system readonly properties can't be " \ "delegated." log_onexit restore_root_datasets set -A invalid_perms \ add remove list iostat \ status offline online clear \ attach detach replace scrub \ export import upgrade \ type creation used available \ referenced compressratio mounted for dtst in $DATASETS ; do typeset -i i=0 while ((i < ${#invalid_perms[@]})); do log_mustnot zfs allow $STAFF1 ${invalid_perms[$i]} $dtst ((i += 1)) done done log_pass "Verify zpool subcmds and system readonly properties passed." zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/write_dirs0000644000000000000000000000013213612143066024116 xustar000000000000000030 mtime=1579730486.017956939 30 atime=1579730489.096055773 30 ctime=1579730486.017956939 zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/0000775016037001603700000000000013612143066024177 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133026240 xustar000000000000000030 atime=1579730441.804537347 30 ctime=1579730486.015956875 zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/Makefile.am0000644016037001603700000000032613607166133026236 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/write_dirs dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ write_dirs_001_pos.ksh \ write_dirs_002_pos.ksh dist_pkgdata_DATA = \ write_dirs.cfg zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133026053 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.006956587 zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/setup.ksh0000755016037001603700000000252713607166133026061 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/write_dirs/write_dirs.cfg verify_runnable "global" if ! $(is_physical_device $DISKS) ; then log_unsupported "This directory cannot be run on raw files." fi DISK=${DISKS%% *} if is_mpath_device $DISK; then delete_partitions fi log_must set_partition 0 "" $SIZE $DISK default_setup "${DISK}${SLICE_PREFIX}${SLICE}" zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026342 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.009956683 zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/cleanup.ksh0000755016037001603700000000207313607166133026344 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/write_dirs/write_dirs.cfg default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/PaxHeaders.151519/write_dirs.cfg0000644000000000000000000000007413607166133027040 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.004956522 zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/write_dirs.cfg0000644016037001603700000000235613607166133027043 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "global" export SIZE="1gb" export DISK_ARRAY_NUM=$(echo ${DISKS} | nawk '{print NF}') export DISKSARRAY=$DISKS if is_linux; then set_slice_prefix set_device_dir export SLICE=1 else DEV_DSKDIR="/dev" export SLICE_PREFIX="s" export SLICE=0 fi zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/PaxHeaders.151519/write_dirs_001_pos.ksh0000644000000000000000000000007413607166133030327 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.011956747 zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/write_dirs_001_pos.ksh0000755016037001603700000000377113607166133030337 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/write_dirs/write_dirs.cfg # # DESCRIPTION: # Create as many directories with 50 big files each until the file system # is full. The zfs file system should be stable and works well. # # STRATEGY: # 1. Create a pool & dateset # 2. Make directories in the zfs file system # 3. Create 50 big files in each directories # 4. Test case exit when the disk is full. # verify_runnable "both" function cleanup { for file in `find $TESTDIR -type f`; do cat /dev/null > $file done log_must sync log_must rm -rf $TESTDIR/* } typeset -i retval=0 log_assert "Creating directories with 50 big files in each, until file system "\ "is full." log_onexit cleanup typeset -i bytes=8192 typeset -i num_writes=300000 typeset -i dirnum=50 typeset -i filenum=50 fill_fs "" $dirnum $filenum $bytes $num_writes retval=$? if (( retval == 28 )); then log_note "No space left on device." elif (( retval != 0 )); then log_fail "Unexpected exit: $retval" fi log_pass "Write big files in a directory succeeded." zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/PaxHeaders.151519/write_dirs_002_pos.ksh0000644000000000000000000000007413607166133030330 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.013956811 zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/write_dirs_002_pos.ksh0000755016037001603700000000376313607166133030341 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/write_dirs/write_dirs.cfg # # DESCRIPTION: # Create as many directories with 5000 files each until the file system # is full. The zfs file system should be work well and stable. # # STRATEGY: # 1. Create a pool & dateset # 2. Make directories in the zfs file system # 3. Create 5000 files in each directories # 4. Test case exit when the disk is full # verify_runnable "both" function cleanup { for file in `find $TESTDIR -type f`; do cat /dev/null > $file done log_must sync log_must rm -rf $TESTDIR/* } typeset -i retval=0 log_assert "Creating directories with 5000 files in each, until file system " \ "is full." log_onexit cleanup typeset -i bytes=8192 typeset -i num_writes=20 typeset -i dirnum=50 typeset -i filenum=5000 fill_fs "" $dirnum $filenum $bytes $num_writes retval=$? if (( retval == 28 )); then log_note "No space left on device." elif (( retval != 0 )); then log_fail "Unexpected exit: $retval" fi log_pass "Create many files in a directory succeeded." zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143011026226 xustar000000000000000030 mtime=1579730441.842538568 30 atime=1579730458.651078243 30 ctime=1579730486.017956939 zfs-0.8.3/tests/zfs-tests/tests/functional/write_dirs/Makefile.in0000664016037001603700000006136613612143011026246 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/write_dirs DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/write_dirs ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ write_dirs_001_pos.ksh \ write_dirs_002_pos.ksh dist_pkgdata_DATA = \ write_dirs.cfg all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/write_dirs/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/write_dirs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/refquota0000644000000000000000000000013213612143064023567 xustar000000000000000030 mtime=1579730484.260900523 30 atime=1579730489.096055773 30 ctime=1579730484.260900523 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/0000775016037001603700000000000013612143064023650 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/refquota_007_neg.ksh0000644000000000000000000000007413612141512027421 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.254900331 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/refquota_007_neg.ksh0000755016037001603700000000273213612141512027425 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # refquota limits the amount of space a dataset can consume, # snapshot rollback should be limited by refquota. # # STRATEGY: # 1. Create a file in a filesystem # 2. Create a snapshot of the filesystem # 3. Remove the file # 4. Set a refquota of size half of the file # 5. Rollback the filesystem from the snapshot # 6. Rollback should fail # verify_runnable "both" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_onexit cleanup TESTFILE='testfile' FS=$TESTPOOL/$TESTFS mntpnt=$(get_prop mountpoint $FS) log_must mkfile 20M $mntpnt/$TESTFILE log_must zfs snapshot $FS@snap20M log_must rm $mntpnt/$TESTFILE log_must sync log_must zfs set refquota=10M $FS log_mustnot zfs rollback $FS@snap20M log_pass "The rollback to the snapshot was restricted by refquota." zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/refquota_008_neg.ksh0000644000000000000000000000007413612141511027421 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.256900395 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/refquota_008_neg.ksh0000755016037001603700000000370413612141511027425 0ustar00hutter2hutter200000000000000#!/bin/ksh # # CDDL HEADER START # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # CDDL HEADER END # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # refquota limits the amount of space a dataset can consume, # This test verifies that zfs receive does not override # refquota. # # STRATEGY: # 1. Create a sub-filesystem $TESTSUBFS1 # 2. Create a file in the sub-filesystem $TESTSUBFS1 # 3. Create a snapshot of the sub-filesystem $TESTSUBFS1 # 4. Create another sub-filesystem $TESTSUBFS2 # 5. Apply a refquota value to $TESTSUBFS2, # half the sub-filesystem $TESTSUBFS1 file size # 6. Verify that zfs receive of the snapshot of $TESTSUBFS1 # fails due to refquota # verify_runnable "both" oldvalue=$(get_tunable spa_asize_inflation) function cleanup { set_tunable32 spa_asize_inflation $oldvalue log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_onexit cleanup set_tunable32 spa_asize_inflation 2 TESTFILE='testfile' FS=$TESTPOOL/$TESTFS log_must zfs create $FS/$TESTSUBFS1 log_must zfs create $FS/$TESTSUBFS2 mntpnt1=$(get_prop mountpoint $FS/$TESTSUBFS1) mntpnt2=$(get_prop mountpoint $FS/$TESTSUBFS2) log_must mkfile 200M $mntpnt1/$TESTFILE log_must zfs snapshot $FS/$TESTSUBFS1@snap200m log_must zfs set refquota=10M $FS/$TESTSUBFS2 log_mustnot eval "zfs send $FS/$TESTSUBFS1@snap200m |" \ "zfs receive -F $FS/$TESTSUBFS2" log_pass "ZFS receive does not override refquota" zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/refquota_001_pos.ksh0000644000000000000000000000007413607166133027455 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.241899913 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/refquota_001_pos.ksh0000755016037001603700000000424313607166133027460 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # refquota limits the amount of space a dataset can consume, but does # not include space used by descendents. # # STRATEGY: # 1. Setting refquota in given filesystem # 2. Create descendent filesystem # 3. Verify refquota limits the amount of space a dataset can consume # 4. Verify the limit does not impact descendents # verify_runnable "both" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "refquota limits the amount of space a dataset can consume, " \ "but does not include space used by descendents." log_onexit cleanup fs=$TESTPOOL/$TESTFS sub=$fs/sub log_must zfs create $sub log_must zfs set refquota=10M $fs mntpnt=$(get_prop mountpoint $fs) log_mustnot mkfile 11M $mntpnt/file log_must mkfile 9M $mntpnt/file log_must zfs snapshot $fs@snap log_mustnot mkfile 2M $mntpnt/file2 mntpnt=$(get_prop mountpoint $sub) log_must mkfile 10M $mntpnt/file log_must zfs snapshot $sub@snap log_must mkfile 10 $mntpnt/file2 log_pass "refquota limits the amount of space a dataset can consume, " \ "but does not include space used by descendents." zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413612141511025700 xustar000000000000000030 atime=1579730440.505495638 30 ctime=1579730484.258900459 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/Makefile.am0000644016037001603700000000047113612141511025677 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/refquota dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ refquota_001_pos.ksh \ refquota_002_pos.ksh \ refquota_003_pos.ksh \ refquota_004_pos.ksh \ refquota_005_pos.ksh \ refquota_006_neg.ksh \ refquota_007_neg.ksh \ refquota_008_neg.ksh zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133025526 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.237899785 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/setup.ksh0000755016037001603700000000206013607166133025524 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" DISK=${DISKS%% *} default_setup $DISK zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133026015 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.239899849 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/cleanup.ksh0000755016037001603700000000203213607166133026012 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib verify_runnable "both" default_cleanup zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/refquota_005_pos.ksh0000644000000000000000000000007413607166133027461 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.250900201 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/refquota_005_pos.ksh0000755016037001603700000000400513607166133027460 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # refquotas are not limited by sub-filesystem snapshots. # # STRATEGY: # 1. Setting refquota < quota for parent # 2. Create file in sub-filesystem, take snapshot and remove the file # 3. Verify sub-filesystem snapshot will not consume refquota # verify_runnable "both" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "refquotas are not limited by sub-filesystem snapshots." log_onexit cleanup TESTFILE='testfile' fs=$TESTPOOL/$TESTFS log_must zfs set quota=25M $fs log_must zfs set refquota=15M $fs log_must zfs create $fs/subfs mntpnt=$(get_prop mountpoint $fs/subfs) typeset -i i=0 while ((i < 3)); do log_must mkfile 7M $mntpnt/$TESTFILE.$i log_must zfs snapshot $fs/subfs@snap.$i log_must rm $mntpnt/$TESTFILE.$i ((i += 1)) done # # Verify out of the limitation of 'quota' # log_mustnot mkfile 7M $mntpnt/$TESTFILE log_pass "refquotas are not limited by sub-filesystem snapshots" zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/refquota_004_pos.ksh0000644000000000000000000000007413607166133027460 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.247900105 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/refquota_004_pos.ksh0000755016037001603700000000362113607166133027462 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # refquotas are not limited by snapshots. # # STRATEGY: # 1. Setting refquota < quota # 2. Create file in filesystem, take snapshot and remove the file # 3. Verify snapshot will not consume refquota # verify_runnable "both" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "refquotas are not limited by snapshots." log_onexit cleanup TESTFILE='testfile' fs=$TESTPOOL/$TESTFS log_must zfs set quota=25M $fs log_must zfs set refquota=15M $fs mntpnt=$(get_prop mountpoint $fs) typeset -i i=0 while ((i < 3)); do log_must mkfile 7M $mntpnt/$TESTFILE.$i log_must zfs snapshot $fs@snap.$i log_must rm $mntpnt/$TESTFILE.$i ((i += 1)) done # # Verify out of the limitation of 'quota' # log_mustnot mkfile 7M $mntpnt/$TESTFILE log_pass "refquotas are not limited by snapshots." zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/refquota_002_pos.ksh0000644000000000000000000000007413607166133027456 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.244900009 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/refquota_002_pos.ksh0000755016037001603700000000476413607166133027471 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Quotas are enforced using the minimum of the two properties: # quota & refquota # # STRATEGY: # 1. Set value for quota and refquota. Quota less than refquota. # 2. Creating file which should be limited by quota. # 3. Switch the value of quota and refquota. # 4. Verify file should be limited by refquota. # verify_runnable "both" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "Quotas are enforced using the minimum of the two properties" log_onexit cleanup TESTFILE='testfile' fs=$TESTPOOL/$TESTFS log_must zfs set quota=15M $fs log_must zfs set refquota=25M $fs mntpnt=$(get_prop mountpoint $fs) log_mustnot mkfile 20M $mntpnt/$TESTFILE typeset -i used quota used=$(get_prop used $fs) quota=$(get_prop quota $fs) ((used = used / (1024 * 1024))) ((quota = quota / (1024 * 1024))) if [[ $used -ne $quota ]]; then log_fail "ERROR: $used -ne $quota Quotas are not limited by quota" fi # # Switch the value of them and try again # log_must rm $mntpnt/$TESTFILE log_must zfs set quota=25M $fs log_must zfs set refquota=15M $fs log_mustnot mkfile 20M $mntpnt/$TESTFILE used=$(get_prop used $fs) refquota=$(get_prop refquota $fs) ((used = used / (1024 * 1024))) ((refquota = refquota / (1024 * 1024))) if [[ $used -ne $refquota ]]; then log_fail "ERROR: $used -ne $refquota Quotas are not limited by refquota" fi log_pass "Quotas are enforced using the minimum of the two properties" zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143010025700 xustar000000000000000030 mtime=1579730440.540496763 30 atime=1579730457.920054771 30 ctime=1579730484.260900523 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/Makefile.in0000664016037001603700000005751013612143010025714 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/refquota DIST_COMMON = $(dist_pkgdata_SCRIPTS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/refquota ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ refquota_001_pos.ksh \ refquota_002_pos.ksh \ refquota_003_pos.ksh \ refquota_004_pos.ksh \ refquota_005_pos.ksh \ refquota_006_neg.ksh \ refquota_007_neg.ksh \ refquota_008_neg.ksh all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/refquota/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/refquota/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataSCRIPTS \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am uninstall uninstall-am uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/refquota_003_pos.ksh0000644000000000000000000000007413607166133027457 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.245900041 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/refquota_003_pos.ksh0000755016037001603700000000454713607166133027471 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # Sub-filesystem quotas are not enforced by property 'refquota' # # STRATEGY: # 1. Setting quota and refquota for parent. refquota < quota # 2. Verify sub-filesystem will not be limited by refquota # 3. Verify sub-filesystem will only be limited by quota # verify_runnable "both" function cleanup { log_must zfs destroy -rf $TESTPOOL/$TESTFS log_must zfs create $TESTPOOL/$TESTFS log_must zfs set mountpoint=$TESTDIR $TESTPOOL/$TESTFS } log_assert "Sub-filesystem quotas are not enforced by property 'refquota'" log_onexit cleanup TESTFILE='testfile' fs=$TESTPOOL/$TESTFS log_must zfs set quota=25M $fs log_must zfs set refquota=10M $fs log_must zfs create $fs/subfs mntpnt=$(get_prop mountpoint $fs/subfs) log_must mkfile 20M $mntpnt/$TESTFILE typeset -i used quota refquota used=$(get_prop used $fs) refquota=$(get_prop refquota $fs) ((used = used / (1024 * 1024))) ((refquota = refquota / (1024 * 1024))) if [[ $used -lt $refquota ]]; then log_fail "ERROR: $used < $refquota subfs quotas are limited by refquota" fi log_mustnot mkfile 20M $mntpnt/$TESTFILE.2 used=$(get_prop used $fs) quota=$(get_prop quota $fs) ((used = used / (1024 * 1024))) ((quota = quota / (1024 * 1024))) if [[ $used -gt $quota ]]; then log_fail "ERROR: $used > $quota subfs quotas aren't limited by quota" fi log_pass "Sub-filesystem quotas are not enforced by property 'refquota'" zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/PaxHeaders.151519/refquota_006_neg.ksh0000644000000000000000000000007413607166133027432 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730484.252900267 zfs-0.8.3/tests/zfs-tests/tests/functional/refquota/refquota_006_neg.ksh0000755016037001603700000000360213607166133027433 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib # # DESCRIPTION: # 'zfs set refquota/refreserv' can handle incorrect arguments correctly. # # STRATEGY: # 1. Setup incorrect arguments arrays. # 2. Set the bad argument to refquota. # 3. Verify zfs can handle it correctly. # verify_runnable "both" function cleanup { log_must zfs set refquota=none $TESTPOOL/$TESTFS log_must zfs set refreserv=none $TESTPOOL/$TESTFS } log_assert "'zfs set refquota' can handle incorrect arguments correctly." log_onexit cleanup set -A badopt \ "None" "-1" "1TT" "%5" \ "123!" "@456" "7#89" "0\$" \ "abc123%" "123%s" "12%s3" "%c123" \ "123%d" "%x123" "12%p3" "^def456" \ "\0" "x0" typeset -i i=0 while ((i < ${#badopt[@]})); do log_mustnot zfs set refquota=${badopt[$i]} $TESTPOOL/$TESTFS log_mustnot zfs set refreserv=${badopt[$i]} $TESTPOOL/$TESTFS ((i += 1)) done log_pass "'zfs set refquota' can handle incorrect arguments correctly." zfs-0.8.3/tests/zfs-tests/tests/functional/PaxHeaders.151519/slog0000644000000000000000000000013213612143065022706 xustar000000000000000030 mtime=1579730485.116928009 30 atime=1579730489.096055773 30 ctime=1579730485.116928009 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/0000775016037001603700000000000013612143065022767 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_003_pos.ksh0000644000000000000000000000007413607166133025713 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.078926789 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_003_pos.ksh0000755016037001603700000000357613607166133025726 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Adding an extra log device works # # STRATEGY: # 1. Create pool with separated log devices. # 2. Add an extra log devices # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Adding an extra log device works." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do for logtype in "" "mirror" do for newtype in "" "mirror" do log_must zpool create $TESTPOOL $type $VDEV \ $spare $SDEV log $logtype $LDEV log_must zpool add $TESTPOOL \ log $newtype $LDEV2 log_must display_status $TESTPOOL ldev=$(random_get $LDEV2) log_must verify_slog_device \ $TESTPOOL $ldev 'ONLINE' $newtype log_must zpool destroy -f $TESTPOOL done done done done log_pass "Adding an extra log device works." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_004_pos.ksh0000644000000000000000000000007413607166133025714 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.080926853 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_004_pos.ksh0000755016037001603700000000367213607166133025724 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Attaching a log device passes. # # STRATEGY: # 1. Create pool with separated log devices. # 2. Attaching a log device for existing log device # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Attaching a log device passes." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do for logtype in "" "mirror" do log_must zpool create $TESTPOOL $type $VDEV \ $spare $SDEV log $logtype $LDEV ldev=$(random_get $LDEV) typeset ldev2=$(random_get $LDEV2) log_must zpool attach $TESTPOOL $ldev $ldev2 log_must display_status $TESTPOOL log_must verify_slog_device \ $TESTPOOL $ldev 'ONLINE' 'mirror' log_must verify_slog_device \ $TESTPOOL $ldev2 'ONLINE' 'mirror' log_must zpool destroy -f $TESTPOOL done done done log_pass "Attaching a log device passes." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_replay_fs_001.ksh0000644000000000000000000000007413612141514027064 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.107927719 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_replay_fs_001.ksh0000755016037001603700000001534313612141514027072 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Verify slogs are replayed correctly. This test is a direct # adaptation of the ziltest.sh script for the ZFS Test Suite. # # The general idea is to build up an intent log from a bunch of # diverse user commands without actually committing them to the # file system. Then copy the file system, replay the intent # log and compare the file system and the copy. # # To enable this automated testing of the intent log some minimal # support is required of the file system. In particular, a # "freeze" command is required to flush the in-flight transactions; # to stop the actual committing of transactions; and to ensure no # deltas are discarded. All deltas past a freeze point are kept # for replay and comparison later. Here is the flow: # # STRATEGY: # 1. Create an empty file system (TESTFS) # 2. Freeze TESTFS # 3. Run various user commands that create files, directories and ACLs # 4. Copy TESTFS to temporary location (TESTDIR/copy) # 5. Unmount filesystem # # 6. Remount TESTFS # 7. Compare TESTFS against the TESTDIR/copy # verify_runnable "global" log_assert "Replay of intent log succeeds." log_onexit cleanup log_must setup # # 1. Create an empty file system (TESTFS) # log_must zpool create $TESTPOOL $VDEV log mirror $LDEV log_must zfs set compression=on $TESTPOOL log_must zfs create $TESTPOOL/$TESTFS # # This dd command works around an issue where ZIL records aren't created # after freezing the pool unless a ZIL header already exists. Create a file # synchronously to force ZFS to write one out. # log_must dd if=/dev/zero of=/$TESTPOOL/$TESTFS/sync \ conv=fdatasync,fsync bs=1 count=1 # # 2. Freeze TESTFS # log_must zpool freeze $TESTPOOL # # 3. Run various user commands that create files, directories and ACLs # # TX_CREATE log_must touch /$TESTPOOL/$TESTFS/a # TX_RENAME log_must mv /$TESTPOOL/$TESTFS/a /$TESTPOOL/$TESTFS/b # TX_SYMLINK log_must touch /$TESTPOOL/$TESTFS/c log_must ln -s /$TESTPOOL/$TESTFS/c /$TESTPOOL/$TESTFS/d # TX_LINK log_must touch /$TESTPOOL/$TESTFS/e log_must ln /$TESTPOOL/$TESTFS/e /$TESTPOOL/$TESTFS/f # TX_MKDIR log_must mkdir /$TESTPOOL/$TESTFS/dir_to_delete # TX_RMDIR log_must rmdir /$TESTPOOL/$TESTFS/dir_to_delete # Create a simple validation payload log_must mkdir -p $TESTDIR log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS/payload bs=1k count=8 typeset checksum=$(sha256digest /$TESTPOOL/$TESTFS/payload) # TX_WRITE (small file with ordering) log_must mkfile 1k /$TESTPOOL/$TESTFS/small_file log_must mkfile 512b /$TESTPOOL/$TESTFS/small_file # TX_CREATE, TX_MKDIR, TX_REMOVE, TX_RMDIR log_must cp -R /usr/share/dict /$TESTPOOL/$TESTFS log_must rm -rf /$TESTPOOL/$TESTFS/dict # TX_SETATTR log_must touch /$TESTPOOL/$TESTFS/setattr log_must chmod 567 /$TESTPOOL/$TESTFS/setattr log_must chgrp root /$TESTPOOL/$TESTFS/setattr log_must touch -cm -t 201311271200 /$TESTPOOL/$TESTFS/setattr # TX_TRUNCATE (to zero) log_must mkfile 4k /$TESTPOOL/$TESTFS/truncated_file log_must truncate -s 0 /$TESTPOOL/$TESTFS/truncated_file # TX_WRITE (large file) log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS/large \ bs=128k count=64 oflag=sync # Write zeros, which compress to holes, in the middle of a file log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS/holes.1 bs=128k count=8 log_must dd if=/dev/zero of=/$TESTPOOL/$TESTFS/holes.1 bs=128k count=2 log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS/holes.2 bs=128k count=8 log_must dd if=/dev/zero of=/$TESTPOOL/$TESTFS/holes.2 bs=128k count=2 seek=2 log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS/holes.3 bs=128k count=8 log_must dd if=/dev/zero of=/$TESTPOOL/$TESTFS/holes.3 bs=128k count=2 \ seek=2 conv=notrunc # TX_MKXATTR log_must mkdir /$TESTPOOL/$TESTFS/xattr.dir log_must attr -qs fileattr -V HelloWorld /$TESTPOOL/$TESTFS/xattr.dir log_must attr -qs tmpattr -V HelloWorld /$TESTPOOL/$TESTFS/xattr.dir log_must attr -qr tmpattr /$TESTPOOL/$TESTFS/xattr.dir log_must touch /$TESTPOOL/$TESTFS/xattr.file log_must attr -qs fileattr -V HelloWorld /$TESTPOOL/$TESTFS/xattr.file log_must attr -qs tmpattr -V HelloWorld /$TESTPOOL/$TESTFS/xattr.file log_must attr -qr tmpattr /$TESTPOOL/$TESTFS/xattr.file # TX_WRITE, TX_LINK, TX_REMOVE # Make sure TX_REMOVE won't affect TX_WRITE if file is not destroyed log_must dd if=/dev/urandom of=/$TESTPOOL/$TESTFS/link_and_unlink bs=128k \ count=8 log_must ln /$TESTPOOL/$TESTFS/link_and_unlink \ /$TESTPOOL/$TESTFS/link_and_unlink.link log_must rm /$TESTPOOL/$TESTFS/link_and_unlink.link # # 4. Copy TESTFS to temporary location (TESTDIR/copy) # log_must mkdir -p $TESTDIR/copy log_must cp -a /$TESTPOOL/$TESTFS/* $TESTDIR/copy/ # # 5. Unmount filesystem and export the pool # # At this stage TESTFS is empty again and frozen, the intent log contains # a complete set of deltas to replay. # log_must zfs unmount /$TESTPOOL/$TESTFS log_note "Verify transactions to replay:" log_must zdb -iv $TESTPOOL/$TESTFS log_must zpool export $TESTPOOL # # 6. Remount TESTFS # # Import the pool to unfreeze it and claim log blocks. It has to be # `zpool import -f` because we can't write a frozen pool's labels! # log_must zpool import -f -d $VDIR $TESTPOOL # # 7. Compare TESTFS against the TESTDIR/copy # log_note "Verify current block usage:" log_must zdb -bcv $TESTPOOL log_note "Verify copy of xattrs:" log_must attr -l /$TESTPOOL/$TESTFS/xattr.dir log_must attr -l /$TESTPOOL/$TESTFS/xattr.file log_note "Verify working set diff:" log_must diff -r /$TESTPOOL/$TESTFS $TESTDIR/copy log_note "Verify file checksum:" typeset checksum1=$(sha256digest /$TESTPOOL/$TESTFS/payload) [[ "$checksum1" == "$checksum" ]] || \ log_fail "checksum mismatch ($checksum1 != $checksum)" log_pass "Replay of intent log succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_replay_volume.ksh0000644000000000000000000000007413612141514027403 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.111927849 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_replay_volume.ksh0000755016037001603700000001201413612141514027401 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Copyright (c) 2017 by Lawrence Livermore National Security, LLC. # Use is subject to license terms. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Verify slogs are replayed correctly for a volume. # # The general idea is to build up an intent log from a bunch of # diverse user commands without actually committing them to the # file system. Then generate checksums for files and volume, # replay the intent log and verify the checksums. # # To enable this automated testing of the intent log some minimal # support is required of the file system. In particular, a # "freeze" command is required to flush the in-flight transactions; # to stop the actual committing of transactions; and to ensure no # deltas are discarded. All deltas past a freeze point are kept # for replay and comparison later. Here is the flow: # # STRATEGY: # 1. Create an empty volume (TESTVOL), set sync=always, and format # it with an ext4 filesystem and mount it. # 2. Freeze TESTVOL. # 3. Create log records of various types to verify replay. # 4. Generate checksums for all ext4 files. # 5. Unmount filesystem and export the pool # # 6. Import TESTVOL and mount it. # 7. Verify the stored checksums # verify_runnable "global" VOLUME=$ZVOL_DEVDIR/$TESTPOOL/$TESTVOL MNTPNT=$TESTDIR/$TESTVOL function cleanup_volume { if ismounted $MNTPNT ext4; then log_must umount $MNTPNT rmdir $MNTPNT fi rm -f $TESTDIR/checksum.files cleanup } log_assert "Replay of intent log succeeds." log_onexit cleanup_volume log_must setup # # 1. Create an empty volume (TESTVOL), set sync=always, and format # it with an ext4 filesystem and mount it. # log_must zpool create $TESTPOOL ${DISKS%% *} log_must zfs create -V 128M $TESTPOOL/$TESTVOL log_must zfs set compression=on $TESTPOOL/$TESTVOL log_must zfs set sync=always $TESTPOOL/$TESTVOL log_must mkdir -p $TESTDIR block_device_wait echo "y" | newfs -t ext4 -v $VOLUME log_must mkdir -p $MNTPNT log_must mount -o discard $VOLUME $MNTPNT log_must rmdir $MNTPNT/lost+found log_must zpool sync # # 2. Freeze TESTVOL # log_must zpool freeze $TESTPOOL # # 3. Create log records of various types to verify replay. # # TX_WRITE log_must dd if=/dev/urandom of=$MNTPNT/latency-8k bs=8k count=1 oflag=sync log_must dd if=/dev/urandom of=$MNTPNT/latency-128k bs=128k count=1 oflag=sync # TX_WRITE (WR_INDIRECT) log_must zfs set logbias=throughput $TESTPOOL/$TESTVOL log_must dd if=/dev/urandom of=$MNTPNT/throughput-8k bs=8k count=1 log_must dd if=/dev/urandom of=$MNTPNT/throughput-128k bs=128k count=1 # TX_WRITE (holes) log_must dd if=/dev/urandom of=$MNTPNT/holes bs=128k count=8 log_must dd if=/dev/zero of=$MNTPNT/holes bs=128k count=2 seek=2 conv=notrunc # TX_TRUNCATE if fallocate --punch-hole 2>&1 | grep -q "unrecognized option"; then log_note "fallocate(1) does not support --punch-hole" else log_must dd if=/dev/urandom of=$MNTPNT/discard bs=128k count=16 log_must fallocate --punch-hole -l 128K -o 512K $MNTPNT/discard log_must fallocate --punch-hole -l 512K -o 1M $MNTPNT/discard fi # # 4. Generate checksums for all ext4 files. # typeset checksum=$(cat $MNTPNT/* | sha256digest) # # 5. Unmount filesystem and export the pool # # At this stage TESTVOL is initialized with the random data and frozen, # the intent log contains a complete set of deltas to replay. # log_must umount $MNTPNT log_note "Verify transactions to replay:" log_must zdb -iv $TESTPOOL/$TESTVOL log_must zpool export $TESTPOOL # # 6. Import TESTPOOL, the intent log is replayed during minor creation. # # Import the pool to unfreeze it and claim log blocks. It has to be # `zpool import -f` because we can't write a frozen pool's labels! # log_must zpool import -f $TESTPOOL block_device_wait log_must mount $VOLUME $MNTPNT # # 7. Verify the stored checksums # log_note "Verify current block usage:" log_must zdb -bcv $TESTPOOL log_note "Verify checksums" typeset checksum1=$(cat $MNTPNT/* | sha256digest) [[ "$checksum1" == "$checksum" ]] || \ log_fail "checksum mismatch ($checksum1 != $checksum)" log_pass "Replay of intent log succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_001_pos.ksh0000644000000000000000000000007413607166133025711 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.073926628 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_001_pos.ksh0000755016037001603700000000341713607166133025716 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Creating a pool with a log device succeeds. # # STRATEGY: # 1. Create pool with separated log devices. # 2. Display pool status # 3. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Creating a pool with a log device succeeds." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do for logtype in "" "mirror" do log_must zpool create $TESTPOOL $type $VDEV \ $spare $SDEV log $logtype $LDEV log_must display_status $TESTPOOL ldev=$(random_get $LDEV) log_must verify_slog_device \ $TESTPOOL $ldev 'ONLINE' $logtype log_must zpool destroy -f $TESTPOOL done done done log_pass "Creating a pool with a log device succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_006_pos.ksh0000644000000000000000000000007413607166133025716 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.084926981 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_006_pos.ksh0000755016037001603700000000362013607166133025717 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Replacing a log device passes. # # STRATEGY: # 1. Create pool with log devices. # 2. Replacing one log device # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Replacing a log device passes." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do for logtype in "" "mirror" do log_must zpool create $TESTPOOL $type $VDEV \ $spare $SDEV log $logtype $LDEV sdev=$(random_get $LDEV) tdev=$(random_get $LDEV2) log_must zpool replace $TESTPOOL $sdev $tdev log_must display_status $TESTPOOL # sleep 15 to make sure replacement completely. log_must sleep 15 log_must verify_slog_device \ $TESTPOOL $tdev 'ONLINE' $logtype log_must zpool destroy -f $TESTPOOL done done done log_pass "Replacing a log device passes." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_015_neg.ksh0000644000000000000000000000007413612141513025655 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.105927655 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_015_neg.ksh0000755016037001603700000000364713612141513025667 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Concurrent sync writes with log offline/online works. # # STRATEGY: # 1. Configure "zfs_commit_timeout_pct" # 2. Create pool with a log device. # 3. Concurrently do the following: # 3.1. Perform 8K sync writes # 3.2. Perform log offline/online commands # 4. Loop to test with growing "zfs_commit_timeout_pct" values. # verify_runnable "global" function cleanup { # # Wait for any of the writes and/or zpool commands that were # kicked off in the background to complete. On failure, we may # enter this function without previously waiting for them. # wait set_tunable64 zfs_commit_timeout_pct $ORIG_TIMEOUT poolexists $TESTPOOL && zpool destroy -f $TESTPOOL } ORIG_TIMEOUT=$(get_tunable zfs_commit_timeout_pct | tail -1 | awk '{print $NF}') log_onexit cleanup log_must setup for PCT in 0 1 2 4 8 16 32 64 128 256 512 1024; do log_must set_tunable64 zfs_commit_timeout_pct $PCT log_must zpool create $TESTPOOL $VDEV log $SDEV for i in {1..10}; do log_must fio --rw write --sync 1 --directory "/$TESTPOOL" \ --bs 8K --size 8K --name slog-test done & for i in {1..10}; do log_must zpool offline $TESTPOOL $SDEV log_must verify_slog_device $TESTPOOL $SDEV 'OFFLINE' log_must zpool online $TESTPOOL $SDEV log_must verify_slog_device $TESTPOOL $SDEV 'ONLINE' done & wait log_must zpool destroy -f $TESTPOOL done log_pass "Concurrent writes with slog offline/online works." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_012_neg.ksh0000644000000000000000000000007413607166133025663 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.098927431 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_012_neg.ksh0000755016037001603700000000374013607166133025667 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Pool can survive when one of mirror log device get corrupted # # STRATEGY: # 1. Create pool with mirror slog devices # 2. Make corrupted on one disk # 3. Verify the pool is fine # verify_runnable "global" log_assert "Pool can survive when one of mirror log device get corrupted." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do log_must zpool create $TESTPOOL $type $VDEV $spare $SDEV \ log mirror $LDEV mntpnt=$(get_prop mountpoint $TESTPOOL) # # Create file in pool to trigger writing in slog devices # log_must dd if=/dev/urandom of=$mntpnt/testfile.$$ count=100 ldev=$(random_get $LDEV) log_must mkfile $MINVDEVSIZE $ldev log_must zpool scrub $TESTPOOL log_must display_status $TESTPOOL log_must verify_slog_device $TESTPOOL $ldev 'UNAVAIL' 'mirror' log_must zpool destroy -f $TESTPOOL done done log_pass "Pool can survive when one of mirror log device get corrupted." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025031 xustar000000000000000030 atime=1579730441.044512945 30 ctime=1579730485.114927945 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/Makefile.am0000644016037001603700000000103713607166133025027 0ustar00hutter2hutter200000000000000pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/slog dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ slog_001_pos.ksh \ slog_002_pos.ksh \ slog_003_pos.ksh \ slog_004_pos.ksh \ slog_005_pos.ksh \ slog_006_pos.ksh \ slog_007_pos.ksh \ slog_008_neg.ksh \ slog_009_neg.ksh \ slog_010_neg.ksh \ slog_011_neg.ksh \ slog_012_neg.ksh \ slog_013_pos.ksh \ slog_014_pos.ksh \ slog_015_neg.ksh \ slog_replay_fs_001.ksh \ slog_replay_fs_002.ksh \ slog_replay_volume.ksh dist_pkgdata_DATA = \ slog.cfg \ slog.kshlib zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/setup.ksh0000644000000000000000000000007413607166133024644 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.069926499 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/setup.ksh0000755016037001603700000000226013607166133024644 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/slog/slog.cfg verify_runnable "global" if ! verify_slog_support ; then log_unsupported "This system doesn't support separate intent logs" fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/cleanup.ksh0000644000000000000000000000007413607166133025133 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.071926563 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/cleanup.ksh0000755016037001603700000000265513607166133025143 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/slog/slog.cfg verify_runnable "global" if ! verify_slog_support ; then log_unsupported "This system doesn't support separate intent logs" fi if datasetexists $TESTPOOL ; then log_must zpool destroy -f $TESTPOOL fi if datasetexists $TESTPOOL2 ; then log_must zpool destroy -f $TESTPOOL2 fi if [[ -d $VDIR ]]; then log_must rm -rf $VDIR fi if [[ -d $VDIR2 ]]; then log_must rm -rf $VDIR2 fi log_pass zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_005_pos.ksh0000644000000000000000000000007413607166133025715 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.082926917 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_005_pos.ksh0000755016037001603700000000341113607166133025714 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Detaching a log device passes. # # STRATEGY: # 1. Create pool with mirror log devices. # 2. Detaching a log device # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Detaching a log device passes." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do log_must zpool create $TESTPOOL $type $VDEV $spare $SDEV \ log mirror $LDEV mirror $LDEV2 ldev=$(random_get $LDEV $LDEV2) log_must zpool detach $TESTPOOL $ldev log_must display_status $TESTPOOL log_mustnot verify_slog_device $TESTPOOL $ldev 'ONLINE' 'mirror' log_must zpool destroy -f $TESTPOOL done done log_pass "Detaching a log device passes." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_014_pos.ksh0000644000000000000000000000007413607166147025722 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.102927559 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_014_pos.ksh0000755016037001603700000000505013607166147025722 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2018 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # log device can survive when one of pool device get corrupted # # STRATEGY: # 1. Create pool with slog devices # 2. Corrupt the data on one disk. # 3. Verify the log is fine # verify_runnable "global" log_assert "log device can survive when one of the pool device get corrupted." log_must setup for type in "mirror" "raidz" "raidz2"; do for spare in "" "spare"; do log_must zpool create $TESTPOOL $type $VDEV $spare $SDEV \ log $LDEV # Create a file to be corrupted dd if=/dev/urandom of=/$TESTPOOL/filler bs=1024k count=50 # # Ensure the file has been synced out before attempting to # corrupt its contents. # sync # # Corrupt a pool device to make the pool DEGRADED # The oseek value below is to skip past the vdev label. # if is_linux; then log_must dd if=/dev/urandom of=$VDIR/a bs=1024k \ seek=4 conv=notrunc count=50 else log_must dd if=/dev/urandom of=$VDIR/a bs=1024k \ oseek=4 conv=notrunc count=50 fi log_must zpool scrub $TESTPOOL log_must display_status $TESTPOOL log_must zpool offline $TESTPOOL $VDIR/a log_must wait_for_degraded $TESTPOOL zpool status -v $TESTPOOL | grep logs | \ grep "DEGRADED" 2>&1 >/dev/null if (( $? == 0 )); then log_fail "log device should display correct status" fi log_must zpool online $TESTPOOL $VDIR/a log_must zpool destroy -f $TESTPOOL done done log_pass "log device can survive when one of the pool device get corrupted." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog.kshlib0000644000000000000000000000007413607166133025137 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.067926435 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog.kshlib0000644016037001603700000000666313607166133025147 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2008 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/include/libtest.shlib . $STF_SUITE/tests/functional/slog/slog.cfg function setup { log_must rm -rf $VDIR $VDIR2 log_must mkdir -p $VDIR $VDIR2 log_must truncate -s $MINVDEVSIZE $VDEV $SDEV $LDEV $VDEV2 $SDEV2 $LDEV2 return 0 } function cleanup { poolexists $TESTPOOL && destroy_pool $TESTPOOL poolexists $TESTPOOL2 && destroy_pool $TESTPOOL2 rm -rf $TESTDIR $VDIR $VDIR2 } # # Try zpool status/iostat for given pool # # $1 pool # function display_status { typeset pool=$1 typeset -i ret=0 zpool status -xv $pool > /dev/null 2>&1 ret=$? zpool iostat > /dev/null 2>&1 ((ret |= $?)) typeset mntpnt=$(get_prop mountpoint $pool) dd if=/dev/urandom of=$mntpnt/testfile.$$ & typeset pid=$! zpool iostat -v 1 3 > /dev/null ((ret |= $?)) kill -9 $pid wait return $ret } # # Verify the give slog device have correct type and status # # $1 pool name # $2 device name # $3 device status # $4 device type # function verify_slog_device { typeset pool=$1 typeset device=$2 typeset status=$3 typeset type=$4 if [[ -z $pool || -z $device || -z $status ]]; then log_fail "Usage: verify_slog_device " \ " [type]" fi # # Get all the slog devices and status table like below # # mirror:/disks/d ONLINE mirror:/disks/e ONLINE stripe:/disks/f ONLINE # set -A dev_stat_tab $(zpool status -v $pool | nawk 'BEGIN {start=0} \ /\tlogs/ {start=1} /\tmirror/ || /\tspares/ || /^$/ {start=0} (start==1) && /\t (\/|[a-zA-Z])/ \ {print "stripe:" $1 " " $2} (start==1) && /\t (\/|[a-zA-Z])/ \ {print "mirror:" $1 " " $2} # When hotspare is replacing (start==1) && /\t (\/|[a-zA-Z])/ \ {print "mirror:" $1 " " $2}' ) typeset -i i=0 typeset find=0 while (( i < ${#dev_stat_tab[@]} )); do typeset dev=${dev_stat_tab[$i]} typeset stat=${dev_stat_tab[((i+1))]} case $dev in stripe:$device) if [[ "$type" == 'mirror' ]]; then log_note "Unexpected type: mirror" return 1 else if [[ $stat != $status ]]; then log_note "Status($stat) " \ "!= Expected stat($status)" return 1 fi return 0 fi ;; mirror:$device) if [[ -z "$type" || $type == 'stripe' ]]; then log_note "Unexpected type: stripe" return 1 else if [[ $stat != $status ]]; then log_note "Status($stat) " \ "!= Expected stat($status)" return 1 fi return 0 fi ;; esac ((i += 2)) done log_note "Can not find device: $device" return 1 } zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_013_pos.ksh0000644000000000000000000000007413607166147025721 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.100927495 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_013_pos.ksh0000755016037001603700000000446213607166147025727 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Verify slog device can be disk, file, lofi device or any device that # presents a block interface. # # STRATEGY: # 1. Create a pool # 2. Loop to add different object as slog # 3. Verify it passes # verify_runnable "global" function cleanup_testenv { cleanup if [[ -n $lofidev ]]; then if is_linux; then losetup -d $lofidev else lofiadm -d $lofidev fi fi } log_assert "Verify slog device can be disk, file, lofi device or any device " \ "that presents a block interface." verify_disk_count "$DISKS" 2 log_onexit cleanup_testenv log_must setup dsk1=${DISKS%% *} log_must zpool create $TESTPOOL ${DISKS#$dsk1} # Add provided disk log_must zpool add $TESTPOOL log $dsk1 log_must verify_slog_device $TESTPOOL $dsk1 'ONLINE' # Add normal file log_must zpool add $TESTPOOL log $LDEV ldev=$(random_get $LDEV) log_must verify_slog_device $TESTPOOL $ldev 'ONLINE' # Add loop back device if is_linux; then lofidev=$(losetup -f) log_must losetup $lofidev ${LDEV2%% *} lofidev=${lofidev##*/} else lofidev=${LDEV2%% *} log_must lofiadm -a $lofidev lofidev=$(lofiadm $lofidev) fi log_must zpool add $TESTPOOL log $lofidev log_must verify_slog_device $TESTPOOL $lofidev 'ONLINE' log_pass "Verify slog device can be disk, file, lofi device or any device " \ "that presents a block interface." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_008_neg.ksh0000644000000000000000000000007413607166133025670 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.089927141 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_008_neg.ksh0000755016037001603700000000327513607166133025677 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # A raidz/raidz2 log is not supported. # # STRATEGY: # 1. Try to create pool with unsupported type # 2. Verify failed to create pool. # verify_runnable "global" log_assert "A raidz/raidz2 log is not supported." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do for logtype in "raidz" "raidz1" "raidz2" do log_mustnot zpool create $TESTPOOL $type $VDEV \ $spare $SDEV log $logtype $LDEV $LDEV2 ldev=$(random_get $LDEV $LDEV2) log_mustnot verify_slog_device \ $TESTPOOL $ldev 'ONLINE' $logtype log_must datasetnonexists $TESTPOOL done done done log_pass "A raidz/raidz2 log is not supported." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_007_pos.ksh0000644000000000000000000000007413607166133025717 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.086927045 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_007_pos.ksh0000755016037001603700000000475513607166133025732 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Exporting and importing pool with log devices passes. # # STRATEGY: # 1. Create pool with log devices. # 2. Export and import the pool # 3. Display pool status # 4. Destroy and import the pool again # 5. Display pool status # 6. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Exporting and importing pool with log devices passes." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do for logtype in "" "mirror" do # # Create pool which devices resider in different # directory # log_must zpool create $TESTPOOL $type $VDEV \ $spare $SDEV log $logtype $LDEV $LDEV2 ldev=$(random_get $LDEV $LDEV2) log_must verify_slog_device \ $TESTPOOL $ldev 'ONLINE' $logtype # # Nomal export/import operating # log_must zpool export $TESTPOOL log_must zpool import -d $VDIR -d $VDIR2 $TESTPOOL log_must display_status $TESTPOOL ldev=$(random_get $LDEV $LDEV2) log_must verify_slog_device \ $TESTPOOL $ldev 'ONLINE' $logtype # # Destroy the pool and import again # log_must zpool destroy $TESTPOOL log_must zpool import -Df -d $VDIR -d $VDIR2 $TESTPOOL log_must display_status $TESTPOOL ldev=$(random_get $LDEV $LDEV2) log_must verify_slog_device \ $TESTPOOL $ldev 'ONLINE' $logtype log_must zpool destroy -f $TESTPOOL done done done log_pass "Exporting and importing pool with log devices passes." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_011_neg.ksh0000644000000000000000000000007413607166133025662 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.095927335 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_011_neg.ksh0000755016037001603700000000367113607166133025671 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Offline and online a log device passes. # # STRATEGY: # 1. Create pool with mirror log devices. # 2. Offine and online a log device # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Offline and online a log device passes." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do log_must zpool create $TESTPOOL $type $VDEV $spare $SDEV \ log mirror $LDEV mirror $LDEV2 ldev=$(random_get $LDEV $LDEV2) log_must zpool offline $TESTPOOL $ldev log_must display_status $TESTPOOL log_must verify_slog_device $TESTPOOL $ldev 'OFFLINE' 'mirror' log_must zpool online $TESTPOOL $ldev log_must display_status $TESTPOOL log_must verify_slog_device $TESTPOOL $ldev 'ONLINE' 'mirror' log_must zpool destroy -f $TESTPOOL done done log_pass "Offline and online a log device passes." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_replay_fs_002.ksh0000644000000000000000000000007413607166133027075 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.109927783 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_replay_fs_002.ksh0000755016037001603700000000767013607166133027107 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Verify slog replay correctly when TX_REMOVEs are followed by # TX_CREATEs. # # STRATEGY: # 1. Create a file system (TESTFS) with a lot of files # 2. Freeze TESTFS # 3. Remove all files then create a lot of files # 4. Copy TESTFS to temporary location (TESTDIR/copy) # 5. Unmount filesystem # # 6. Remount TESTFS # 7. Compare TESTFS against the TESTDIR/copy # verify_runnable "global" function cleanup_fs { cleanup } log_assert "Replay of intent log succeeds." log_onexit cleanup_fs log_must setup # # 1. Create a file system (TESTFS) with a lot of files # log_must zpool create $TESTPOOL $VDEV log mirror $LDEV log_must zfs set compression=on $TESTPOOL log_must zfs create $TESTPOOL/$TESTFS # Prep for the test of TX_REMOVE followed by TX_CREATE dnsize=(legacy auto 1k 2k 4k 8k 16k) NFILES=200 log_must mkdir /$TESTPOOL/$TESTFS/dir0 log_must eval 'for i in $(seq $NFILES); do zfs set dnodesize=${dnsize[$RANDOM % ${#dnsize[@]}]} $TESTPOOL/$TESTFS; touch /$TESTPOOL/$TESTFS/dir0/file.$i; done' # # Reimport to reset dnode allocation pointer. # This is to make sure we will have TX_REMOVE and TX_CREATE on same id # log_must zpool export $TESTPOOL log_must zpool import -f -d $VDIR $TESTPOOL # # This dd command works around an issue where ZIL records aren't created # after freezing the pool unless a ZIL header already exists. Create a file # synchronously to force ZFS to write one out. # log_must dd if=/dev/zero of=/$TESTPOOL/$TESTFS/sync \ conv=fdatasync,fsync bs=1 count=1 # # 2. Freeze TESTFS # log_must zpool freeze $TESTPOOL # # 3. Remove all files then create a lot of files # # TX_REMOVE followed by TX_CREATE log_must eval 'rm -f /$TESTPOOL/$TESTFS/dir0/*' log_must eval 'for i in $(seq $NFILES); do zfs set dnodesize=${dnsize[$RANDOM % ${#dnsize[@]}]} $TESTPOOL/$TESTFS; touch /$TESTPOOL/$TESTFS/dir0/file.$i; done' # # 4. Copy TESTFS to temporary location (TESTDIR/copy) # log_must mkdir -p $TESTDIR/copy log_must cp -a /$TESTPOOL/$TESTFS/* $TESTDIR/copy/ # # 5. Unmount filesystem and export the pool # # At this stage TESTFS is empty again and frozen, the intent log contains # a complete set of deltas to replay. # log_must zfs unmount /$TESTPOOL/$TESTFS log_note "Verify transactions to replay:" log_must zdb -iv $TESTPOOL/$TESTFS log_must zpool export $TESTPOOL # # 6. Remount TESTFS # # Import the pool to unfreeze it and claim log blocks. It has to be # `zpool import -f` because we can't write a frozen pool's labels! # log_must zpool import -f -d $VDIR $TESTPOOL # # 7. Compare TESTFS against the TESTDIR/copy # log_note "Verify current block usage:" log_must zdb -bcv $TESTPOOL log_note "Verify number of files" log_must test "$(ls /$TESTPOOL/$TESTFS/dir0 | wc -l)" -eq $NFILES log_note "Verify working set diff:" log_must diff -r /$TESTPOOL/$TESTFS $TESTDIR/copy log_pass "Replay of intent log succeeds." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_010_neg.ksh0000644000000000000000000000007413607166133025661 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.093927271 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_010_neg.ksh0000755016037001603700000000404513607166133025664 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Slog device can not be replaced with spare device # # STRATEGY: # 1. Create a pool with hotspare and log devices. # 2. Verify slog device can not be replaced with hotspare device. # 3. Create pool2 with hotspare # 4. Verify slog device can not be replaced with hotspare device in pool2. # verify_runnable "global" log_assert "Slog device can not be replaced with spare device." log_onexit cleanup log_must setup log_must zpool create $TESTPOOL $VDEV spare $SDEV log $LDEV sdev=$(random_get $SDEV) ldev=$(random_get $LDEV) log_mustnot zpool replace $TESTPOOL $ldev $sdev log_mustnot verify_slog_device $TESTPOOL $sdev 'ONLINE' log_must verify_slog_device $TESTPOOL $ldev 'ONLINE' log_must zpool create $TESTPOOL2 $VDEV2 spare $SDEV2 sdev2=$(random_get $SDEV2) log_mustnot zpool replace $TESTPOOL $ldev $sdev2 log_mustnot zpool replace -f $TESTPOOL $ldev $sdev2 log_mustnot verify_slog_device $TESTPOOL $sdev2 'ONLINE' log_must verify_slog_device $TESTPOOL $ldev 'ONLINE' log_pass "Slog device can not be replaced with spare device." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_009_neg.ksh0000644000000000000000000000007413607166133025671 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.091927206 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_009_neg.ksh0000755016037001603700000000351113607166133025671 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # A raidz/raidz2 log can not be added to existed pool. # # STRATEGY: # 1. Create pool with or without log. # 2. Add a raidz/raidz2 log to this pool. # 3. Verify failed to add. # verify_runnable "global" log_assert "A raidz/raidz2 log can not be added to existed pool." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do for logtype in "raidz" "raidz1" "raidz2" do log=$(random_get_with_non "log") log_must zpool create $TESTPOOL $type $VDEV \ $spare $SDEV $log $LDEV log_mustnot zpool add $TESTPOOL log $logtype $LDEV2 ldev=$(random_get $LDEV2) log_mustnot verify_slog_device \ $TESTPOOL $ldev 'ONLINE' $logtype log_must zpool destroy $TESTPOOL done done done log_pass "A raidz/raidz2 log can not be added to existed pool." zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog.cfg0000644000000000000000000000007413607166133024422 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.064926339 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog.cfg0000644016037001603700000000232113607166133024415 0ustar00hutter2hutter200000000000000# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2015 by Delphix. All rights reserved. # export VDIR=$TEST_BASE_DIR/disk-slog export VDIR2=$TEST_BASE_DIR/disk2-slog export VDEV="$VDIR/a $VDIR/b $VDIR/c" export SDEV="$VDIR/d" export LDEV="$VDIR/e $VDIR/f" export VDEV2="$VDIR2/a $VDIR2/b $VDIR2/c" export SDEV2="$VDIR2/d" export LDEV2="$VDIR2/e $VDIR2/f" zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143011025017 xustar000000000000000030 mtime=1579730441.082514166 30 atime=1579730458.225064565 30 ctime=1579730485.116928009 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/Makefile.in0000664016037001603700000006205513612143011025033 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/functional/slog DIST_COMMON = $(dist_pkgdata_DATA) $(dist_pkgdata_SCRIPTS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)" SCRIPTS = $(dist_pkgdata_SCRIPTS) AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = DATA = $(dist_pkgdata_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/slog ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ dist_pkgdata_SCRIPTS = \ setup.ksh \ cleanup.ksh \ slog_001_pos.ksh \ slog_002_pos.ksh \ slog_003_pos.ksh \ slog_004_pos.ksh \ slog_005_pos.ksh \ slog_006_pos.ksh \ slog_007_pos.ksh \ slog_008_neg.ksh \ slog_009_neg.ksh \ slog_010_neg.ksh \ slog_011_neg.ksh \ slog_012_neg.ksh \ slog_013_pos.ksh \ slog_014_pos.ksh \ slog_015_neg.ksh \ slog_replay_fs_001.ksh \ slog_replay_fs_002.ksh \ slog_replay_volume.ksh dist_pkgdata_DATA = \ slog.cfg \ slog.kshlib all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/slog/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/functional/slog/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-dist_pkgdataSCRIPTS: $(dist_pkgdata_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(pkgdatadir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(pkgdatadir)$$dir" || exit $$?; \ } \ ; done uninstall-dist_pkgdataSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_SCRIPTS)'; test -n "$(pkgdatadir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dist_pkgdataDATA: $(dist_pkgdata_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdatadir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdatadir)" || exit $$?; \ done uninstall-dist_pkgdataDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgdatadir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dist_pkgdataDATA install-dist_pkgdataSCRIPTS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dist_pkgdataDATA \ install-dist_pkgdataSCRIPTS install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ uninstall-dist_pkgdataDATA uninstall-dist_pkgdataSCRIPTS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/functional/slog/PaxHeaders.151519/slog_002_pos.ksh0000644000000000000000000000007413607166133025712 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730485.075926693 zfs-0.8.3/tests/zfs-tests/tests/functional/slog/slog_002_pos.ksh0000755016037001603700000000347713607166133025725 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # . $STF_SUITE/tests/functional/slog/slog.kshlib # # DESCRIPTION: # Adding a log device to normal pool works. # # STRATEGY: # 1. Create pool # 2. Add log devices with different configuration # 3. Display pool status # 4. Destroy and loop to create pool with different configuration. # verify_runnable "global" log_assert "Adding a log device to normal pool works." log_onexit cleanup log_must setup for type in "" "mirror" "raidz" "raidz2" do for spare in "" "spare" do for logtype in "" "mirror" do log_must zpool create $TESTPOOL $type $VDEV $spare $SDEV log_must zpool add $TESTPOOL log $logtype $LDEV log_must display_status $TESTPOOL typeset ldev=$(random_get $LDEV) log_must verify_slog_device \ $TESTPOOL $ldev 'ONLINE' $logtype log_must zpool destroy -f $TESTPOOL done done done log_pass "Adding a log device to normal pool works." zfs-0.8.3/tests/zfs-tests/tests/PaxHeaders.151519/stress0000644000000000000000000000013213612143066021124 xustar000000000000000030 mtime=1579730486.715979351 30 atime=1579730489.096055773 30 ctime=1579730486.715979351 zfs-0.8.3/tests/zfs-tests/tests/stress/0000775016037001603700000000000013612143066021205 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/tests/stress/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133023246 xustar000000000000000030 atime=1579730442.398556419 30 ctime=1579730486.713979287 zfs-0.8.3/tests/zfs-tests/tests/stress/Makefile.am0000644016037001603700000000001213607166133023234 0ustar00hutter2hutter200000000000000SUBDIRS = zfs-0.8.3/tests/zfs-tests/tests/stress/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143012023235 xustar000000000000000030 mtime=1579730442.434557575 30 atime=1579730458.991089159 30 ctime=1579730486.715979351 zfs-0.8.3/tests/zfs-tests/tests/stress/Makefile.in0000664016037001603700000006757413612143012023264 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests/stress DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/stress/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/stress/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/tests/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133021722 xustar000000000000000030 atime=1579730433.638275155 29 ctime=1579730474.84359815 zfs-0.8.3/tests/zfs-tests/tests/Makefile.am0000644016037001603700000000004113607166133021713 0ustar00hutter2hutter200000000000000SUBDIRS = functional perf stress zfs-0.8.3/tests/zfs-tests/tests/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001021710 xustar000000000000000030 mtime=1579730433.673276279 30 atime=1579730454.145933595 30 ctime=1579730474.845598214 zfs-0.8.3/tests/zfs-tests/tests/Makefile.in0000664016037001603700000006757513612143001021740 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = tests/zfs-tests/tests DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ SUBDIRS = functional perf stress all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/tests/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/PaxHeaders.151519/callbacks0000644000000000000000000000013213612143066020356 xustar000000000000000030 mtime=1579730486.776981311 30 atime=1579730489.096055773 30 ctime=1579730486.776981311 zfs-0.8.3/tests/zfs-tests/callbacks/0000775016037001603700000000000013612143066020437 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/callbacks/PaxHeaders.151519/zfs_mmp.ksh0000644000000000000000000000007413607166133022626 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730486.772981183 zfs-0.8.3/tests/zfs-tests/callbacks/zfs_mmp.ksh0000755016037001603700000000214113607166133022624 0ustar00hutter2hutter200000000000000#!/bin/ksh -p # # This file and its contents are supplied under the terms of the # Common Development and Distribution License ("CDDL"), version 1.0. # You may only use this file in accordance with the terms of version # 1.0 of the CDDL. # # A full copy of the text of the CDDL should have accompanied this # source. A copy of the CDDL is also available via the Internet at # http://www.illumos.org/license/CDDL. # # # Copyright (c) 2017 by Lawrence Livermore National Security. # All rights reserved. # # $1: number of lines to output (default: 40) typeset lines=${1:-40} typeset history=$(/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/PaxHeaders.151519/cmd0000644000000000000000000000013213612143051017174 xustar000000000000000030 mtime=1579730473.451553454 30 atime=1579730489.096055773 30 ctime=1579730473.451553454 zfs-0.8.3/tests/zfs-tests/cmd/0000775016037001603700000000000013612143051017255 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/mkfiles0000644000000000000000000000013213612143052020627 xustar000000000000000030 mtime=1579730474.083573746 30 atime=1579730489.096055773 30 ctime=1579730474.083573746 zfs-0.8.3/tests/zfs-tests/cmd/mkfiles/0000775016037001603700000000000013612143052020710 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/mkfiles/PaxHeaders.151519/mkfiles.c0000644000000000000000000000007413607166147022525 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.083573746 zfs-0.8.3/tests/zfs-tests/cmd/mkfiles/mkfiles.c0000644016037001603700000000276313607166147022532 0ustar00hutter2hutter200000000000000/* * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* * Copyright (c) 2016 by Delphix. All rights reserved. */ #include #include #include #include #include #include #include #define MAX_INT_LENGTH 10 static void usage(char *msg, int exit_value) { (void) fprintf(stderr, "mkfiles basename max_file [min_file]\n"); (void) fprintf(stderr, "%s\n", msg); exit(exit_value); } int main(int argc, char **argv) { unsigned int numfiles = 0; unsigned int first_file = 0; unsigned int i; char buf[MAXPATHLEN]; if (argc < 3 || argc > 4) usage("Invalid number of arguments", -1); if (sscanf(argv[2], "%u", &numfiles) != 1) usage("Invalid maximum file", -2); if (argc == 4 && sscanf(argv[3], "%u", &first_file) != 1) usage("Invalid first file", -3); for (i = first_file; i < first_file + numfiles; i++) { int fd; (void) snprintf(buf, MAXPATHLEN, "%s%u", argv[1], i); if ((fd = open(buf, O_CREAT | O_EXCL, O_RDWR)) == -1) { (void) fprintf(stderr, "Failed to create %s %s\n", buf, strerror(errno)); return (-4); } (void) close(fd); } return (0); } zfs-0.8.3/tests/zfs-tests/cmd/mkfiles/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133022756 xustar000000000000000030 atime=1579730432.614242277 30 ctime=1579730474.078573586 zfs-0.8.3/tests/zfs-tests/cmd/mkfiles/Makefile.am0000644016037001603700000000021713607166133022753 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = mkfiles mkfiles_SOURCES = mkfiles.c zfs-0.8.3/tests/zfs-tests/cmd/mkfiles/PaxHeaders.151519/Makefile.in0000644000000000000000000000013113612143000022741 xustar000000000000000030 mtime=1579730432.676244267 30 atime=1579730453.729920237 29 ctime=1579730474.08057365 zfs-0.8.3/tests/zfs-tests/cmd/mkfiles/Makefile.in0000664016037001603700000007117213612143000022756 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = mkfiles$(EXEEXT) subdir = tests/zfs-tests/cmd/mkfiles ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_mkfiles_OBJECTS = mkfiles.$(OBJEXT) mkfiles_OBJECTS = $(am_mkfiles_OBJECTS) mkfiles_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(mkfiles_SOURCES) DIST_SOURCES = $(mkfiles_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin mkfiles_SOURCES = mkfiles.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mkfiles/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mkfiles/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list mkfiles$(EXEEXT): $(mkfiles_OBJECTS) $(mkfiles_DEPENDENCIES) @rm -f mkfiles$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mkfiles_OBJECTS) $(mkfiles_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkfiles.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/file_trunc0000644000000000000000000000013213612143051021326 xustar000000000000000030 mtime=1579730473.773563792 30 atime=1579730489.096055773 30 ctime=1579730473.773563792 zfs-0.8.3/tests/zfs-tests/cmd/file_trunc/0000775016037001603700000000000013612143051021407 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/file_trunc/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133023456 xustar000000000000000030 atime=1579730432.140227057 30 ctime=1579730473.768563632 zfs-0.8.3/tests/zfs-tests/cmd/file_trunc/Makefile.am0000644016037001603700000000023013607166133023446 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = file_trunc file_trunc_SOURCES = file_trunc.c zfs-0.8.3/tests/zfs-tests/cmd/file_trunc/PaxHeaders.151519/file_trunc.c0000644000000000000000000000007413607166133023720 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.773563792 zfs-0.8.3/tests/zfs-tests/cmd/file_trunc/file_trunc.c0000644016037001603700000001103113607166133023711 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012, 2014 by Delphix. All rights reserved. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define FSIZE 256*1024*1024 #define BSIZE 512 /* Initialize Globals */ static long fsize = FSIZE; static size_t bsize = BSIZE; static int count = 0; static int rflag = 0; static int seed = 0; static int vflag = 0; static int errflag = 0; static off_t offset = 0; static char *filename = NULL; static void usage(char *execname); static void parse_options(int argc, char *argv[]); static void do_write(int fd); static void do_trunc(int fd); static void usage(char *execname) { (void) fprintf(stderr, "usage: %s [-b blocksize] [-c count] [-f filesize]" " [-o offset] [-s seed] [-r] [-v] filename\n", execname); (void) exit(1); } int main(int argc, char *argv[]) { int i = 0; int fd = -1; parse_options(argc, argv); fd = open(filename, O_RDWR|O_CREAT|O_TRUNC, 0666); if (fd < 0) { perror("open"); exit(3); } for (i = 0; count == 0 || i < count; i++) { (void) do_write(fd); (void) do_trunc(fd); } (void) close(fd); return (0); } static void parse_options(int argc, char *argv[]) { int c; extern char *optarg; extern int optind, optopt; count = fsize / bsize; seed = time(NULL); while ((c = getopt(argc, argv, "b:c:f:o:rs:v")) != -1) { switch (c) { case 'b': bsize = atoi(optarg); break; case 'c': count = atoi(optarg); break; case 'f': fsize = atoi(optarg); break; case 'o': offset = atoi(optarg); break; case 'r': rflag++; break; case 's': seed = atoi(optarg); break; case 'v': vflag++; break; case ':': (void) fprintf(stderr, "Option -%c requires an operand\n", optopt); errflag++; break; case '?': (void) fprintf(stderr, "Unrecognized option: -%c\n", optopt); errflag++; break; } if (errflag) { (void) usage(argv[0]); } } if (argc <= optind) { (void) fprintf(stderr, "No filename specified\n"); usage(argv[0]); } filename = argv[optind]; if (vflag) { (void) fprintf(stderr, "Seed = %d\n", seed); } srandom(seed); } static void do_write(int fd) { off_t roffset = 0; char *buf = NULL; char *rbuf = NULL; buf = (char *)calloc(1, bsize); rbuf = (char *)calloc(1, bsize); if (buf == NULL || rbuf == NULL) { perror("malloc"); exit(4); } roffset = random() % fsize; if (lseek64(fd, (offset + roffset), SEEK_SET) < 0) { perror("lseek"); exit(5); } (void) strcpy(buf, "ZFS Test Suite Truncation Test"); if (write(fd, buf, bsize) < bsize) { perror("write"); exit(6); } if (rflag) { if (lseek64(fd, (offset + roffset), SEEK_SET) < 0) { perror("lseek"); exit(7); } if (read(fd, rbuf, bsize) < bsize) { perror("read"); exit(8); } if (memcmp(buf, rbuf, bsize) != 0) { perror("memcmp"); exit(9); } } if (vflag) { (void) fprintf(stderr, "Wrote to offset %" PRId64 "\n", (offset + roffset)); if (rflag) { (void) fprintf(stderr, "Read back from offset %" PRId64 "\n", (offset + roffset)); } } (void) free(buf); (void) free(rbuf); } static void do_trunc(int fd) { off_t roffset = 0; roffset = random() % fsize; if (ftruncate64(fd, (offset + roffset)) < 0) { perror("truncate"); exit(7); } if (vflag) { (void) fprintf(stderr, "Truncated at offset %" PRId64 "\n", (offset + roffset)); } } zfs-0.8.3/tests/zfs-tests/cmd/file_trunc/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000023442 xustar000000000000000030 mtime=1579730432.191228695 30 atime=1579730453.551914521 30 ctime=1579730473.771563728 zfs-0.8.3/tests/zfs-tests/cmd/file_trunc/Makefile.in0000664016037001603700000007126613612143000023462 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = file_trunc$(EXEEXT) subdir = tests/zfs-tests/cmd/file_trunc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_file_trunc_OBJECTS = file_trunc.$(OBJEXT) file_trunc_OBJECTS = $(am_file_trunc_OBJECTS) file_trunc_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(file_trunc_SOURCES) DIST_SOURCES = $(file_trunc_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin file_trunc_SOURCES = file_trunc.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/file_trunc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/file_trunc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list file_trunc$(EXEEXT): $(file_trunc_OBJECTS) $(file_trunc_DEPENDENCIES) @rm -f file_trunc$(EXEEXT) $(AM_V_CCLD)$(LINK) $(file_trunc_OBJECTS) $(file_trunc_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_trunc.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/randfree_file0000644000000000000000000000013213612143052021762 xustar000000000000000030 mtime=1579730474.406584118 30 atime=1579730489.096055773 30 ctime=1579730474.406584118 zfs-0.8.3/tests/zfs-tests/cmd/randfree_file/0000775016037001603700000000000013612143052022043 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/randfree_file/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133024110 xustar000000000000000030 atime=1579730433.038255891 29 ctime=1579730474.40258399 zfs-0.8.3/tests/zfs-tests/cmd/randfree_file/Makefile.am0000644016037001603700000000024113607166133024103 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = randfree_file randfree_file_SOURCES = randfree_file.c zfs-0.8.3/tests/zfs-tests/cmd/randfree_file/PaxHeaders.151519/randfree_file.c0000644000000000000000000000007413607166133025006 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.406584118 zfs-0.8.3/tests/zfs-tests/cmd/randfree_file/randfree_file.c0000644016037001603700000000540213607166133025004 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012 by Delphix. All rights reserved. */ #include "../file_common.h" #include #include #include #include #include /* * Create a file with assigned size and then free the specified * section of the file */ static void usage(char *progname); static void usage(char *progname) { (void) fprintf(stderr, "usage: %s [-l filesize] [-s start-offset]" "[-n section-len] filename\n", progname); exit(1); } int main(int argc, char *argv[]) { char *filename = NULL; char *buf = NULL; size_t filesize = 0; off_t start_off = 0; off_t off_len = 0; int fd, ch; mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; while ((ch = getopt(argc, argv, "l:s:n:")) != EOF) { switch (ch) { case 'l': filesize = atoll(optarg); break; case 's': start_off = atoll(optarg); break; case 'n': off_len = atoll(optarg); break; default: usage(argv[0]); break; } } if (optind == argc - 1) filename = argv[optind]; else usage(argv[0]); if ((fd = open(filename, O_RDWR | O_CREAT | O_TRUNC, mode)) < 0) { perror("open"); return (1); } buf = (char *)calloc(1, filesize); if (buf == NULL) { perror("write"); close(fd); return (1); } memset(buf, 'c', filesize); if (write(fd, buf, filesize) < filesize) { free(buf); perror("write"); close(fd); return (1); } free(buf); #if defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE) if (fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, start_off, off_len) < 0) { perror("fallocate"); close(fd); return (1); } #else /* !(defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE)) */ { perror("FALLOC_FL_PUNCH_HOLE unsupported"); close(fd); return (1); } #endif /* defined(FALLOC_FL_PUNCH_HOLE) && defined(FALLOC_FL_KEEP_SIZE) */ close(fd); return (0); } zfs-0.8.3/tests/zfs-tests/cmd/randfree_file/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001024076 xustar000000000000000030 mtime=1579730433.089257527 30 atime=1579730453.908925985 30 ctime=1579730474.404584054 zfs-0.8.3/tests/zfs-tests/cmd/randfree_file/Makefile.in0000664016037001603700000007136213612143001024113 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = randfree_file$(EXEEXT) subdir = tests/zfs-tests/cmd/randfree_file ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_randfree_file_OBJECTS = randfree_file.$(OBJEXT) randfree_file_OBJECTS = $(am_randfree_file_OBJECTS) randfree_file_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(randfree_file_SOURCES) DIST_SOURCES = $(randfree_file_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin randfree_file_SOURCES = randfree_file.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/randfree_file/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/randfree_file/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list randfree_file$(EXEEXT): $(randfree_file_OBJECTS) $(randfree_file_DEPENDENCIES) @rm -f randfree_file$(EXEEXT) $(AM_V_CCLD)$(LINK) $(randfree_file_OBJECTS) $(randfree_file_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randfree_file.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/nvlist_to_lua0000644000000000000000000000013013612143052022055 xustar000000000000000029 mtime=1579730474.35558248 30 atime=1579730489.096055773 29 ctime=1579730474.35558248 zfs-0.8.3/tests/zfs-tests/cmd/nvlist_to_lua/0000775016037001603700000000000013612143052022140 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/nvlist_to_lua/PaxHeaders.151519/nvlist_to_lua.c0000644000000000000000000000007313607166133025177 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730474.35558248 zfs-0.8.3/tests/zfs-tests/cmd/nvlist_to_lua/nvlist_to_lua.c0000644016037001603700000001630713607166133025204 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2016 by Delphix. All rights reserved. */ #include #include #include #include #include #include nvlist_t *nvl; const char *pool; boolean_t unexpected_failures; static boolean_t nvlist_equal(nvlist_t *nvla, nvlist_t *nvlb) { if (fnvlist_num_pairs(nvla) != fnvlist_num_pairs(nvlb)) return (B_FALSE); /* * The nvlists have the same number of pairs and keys are unique, so * if every key in A is also in B and assigned to the same value, the * lists are identical. */ for (nvpair_t *pair = nvlist_next_nvpair(nvla, NULL); pair != NULL; pair = nvlist_next_nvpair(nvla, pair)) { char *key = nvpair_name(pair); if (!nvlist_exists(nvlb, key)) return (B_FALSE); if (nvpair_type(pair) != nvpair_type(fnvlist_lookup_nvpair(nvlb, key))) return (B_FALSE); switch (nvpair_type(pair)) { case DATA_TYPE_BOOLEAN_VALUE: if (fnvpair_value_boolean_value(pair) != fnvlist_lookup_boolean_value(nvlb, key)) { return (B_FALSE); } break; case DATA_TYPE_STRING: if (strcmp(fnvpair_value_string(pair), fnvlist_lookup_string(nvlb, key))) { return (B_FALSE); } break; case DATA_TYPE_INT64: if (fnvpair_value_int64(pair) != fnvlist_lookup_int64(nvlb, key)) { return (B_FALSE); } break; case DATA_TYPE_NVLIST: if (!nvlist_equal(fnvpair_value_nvlist(pair), fnvlist_lookup_nvlist(nvlb, key))) { return (B_FALSE); } break; default: (void) printf("Unexpected type for nvlist_equal\n"); return (B_FALSE); } } return (B_TRUE); } static void test(const char *testname, boolean_t expect_success, boolean_t expect_match) { char *progstr = "input = ...; return {output=input}"; nvlist_t *outnvl; (void) printf("\nrunning test '%s'; input:\n", testname); dump_nvlist(nvl, 4); int err = lzc_channel_program(pool, progstr, 10 * 1000 * 1000, 10 * 1024 * 1024, nvl, &outnvl); (void) printf("lzc_channel_program returned %u\n", err); dump_nvlist(outnvl, 5); if (err == 0 && expect_match) { /* * Verify that outnvl is the same as input nvl, if we expect * them to be. The input and output will never match if the * input contains an array (since arrays are converted to lua * tables), so this is only asserted for some test cases. */ nvlist_t *real_outnvl = fnvlist_lookup_nvlist(outnvl, "return"); real_outnvl = fnvlist_lookup_nvlist(real_outnvl, "output"); if (!nvlist_equal(nvl, real_outnvl)) { unexpected_failures = B_TRUE; (void) printf("unexpected input/output mismatch for " "case: %s\n", testname); } } if (err != 0 && expect_success) { unexpected_failures = B_TRUE; (void) printf("unexpected FAIL of case: %s\n", testname); } fnvlist_free(nvl); nvl = fnvlist_alloc(); } static void run_tests(void) { const char *key = "key"; /* Note: maximum nvlist key length is 32KB */ int len = 1024 * 31; char *bigstring = malloc(len); for (int i = 0; i < len; i++) bigstring[i] = 'a' + i % 26; bigstring[len - 1] = '\0'; nvl = fnvlist_alloc(); fnvlist_add_boolean(nvl, key); test("boolean", B_TRUE, B_FALSE); fnvlist_add_boolean_value(nvl, key, B_TRUE); test("boolean_value", B_FALSE, B_FALSE); fnvlist_add_byte(nvl, key, 1); test("byte", B_FALSE, B_FALSE); fnvlist_add_int8(nvl, key, 1); test("int8", B_FALSE, B_FALSE); fnvlist_add_uint8(nvl, key, 1); test("uint8", B_FALSE, B_FALSE); fnvlist_add_int16(nvl, key, 1); test("int16", B_FALSE, B_FALSE); fnvlist_add_uint16(nvl, key, 1); test("uint16", B_FALSE, B_FALSE); fnvlist_add_int32(nvl, key, 1); test("int32", B_FALSE, B_FALSE); fnvlist_add_uint32(nvl, key, 1); test("uint32", B_FALSE, B_FALSE); fnvlist_add_int64(nvl, key, 1); test("int64", B_TRUE, B_TRUE); fnvlist_add_uint64(nvl, key, 1); test("uint64", B_FALSE, B_FALSE); fnvlist_add_string(nvl, key, "1"); test("string", B_TRUE, B_TRUE); { nvlist_t *val = fnvlist_alloc(); fnvlist_add_string(val, "subkey", "subvalue"); fnvlist_add_nvlist(nvl, key, val); fnvlist_free(val); test("nvlist", B_TRUE, B_TRUE); } { boolean_t val[2] = { B_FALSE, B_TRUE }; fnvlist_add_boolean_array(nvl, key, val, 2); test("boolean_array", B_FALSE, B_FALSE); } { uchar_t val[2] = { 0, 1 }; fnvlist_add_byte_array(nvl, key, val, 2); test("byte_array", B_FALSE, B_FALSE); } { int8_t val[2] = { 0, 1 }; fnvlist_add_int8_array(nvl, key, val, 2); test("int8_array", B_FALSE, B_FALSE); } { uint8_t val[2] = { 0, 1 }; fnvlist_add_uint8_array(nvl, key, val, 2); test("uint8_array", B_FALSE, B_FALSE); } { int16_t val[2] = { 0, 1 }; fnvlist_add_int16_array(nvl, key, val, 2); test("int16_array", B_FALSE, B_FALSE); } { uint16_t val[2] = { 0, 1 }; fnvlist_add_uint16_array(nvl, key, val, 2); test("uint16_array", B_FALSE, B_FALSE); } { int32_t val[2] = { 0, 1 }; fnvlist_add_int32_array(nvl, key, val, 2); test("int32_array", B_FALSE, B_FALSE); } { uint32_t val[2] = { 0, 1 }; fnvlist_add_uint32_array(nvl, key, val, 2); test("uint32_array", B_FALSE, B_FALSE); } { int64_t val[2] = { 0, 1 }; fnvlist_add_int64_array(nvl, key, val, 2); test("int64_array", B_TRUE, B_FALSE); } { uint64_t val[2] = { 0, 1 }; fnvlist_add_uint64_array(nvl, key, val, 2); test("uint64_array", B_FALSE, B_FALSE); } { char *const val[2] = { "0", "1" }; fnvlist_add_string_array(nvl, key, val, 2); test("string_array", B_TRUE, B_FALSE); } { nvlist_t *val[2]; val[0] = fnvlist_alloc(); fnvlist_add_string(val[0], "subkey", "subvalue"); val[1] = fnvlist_alloc(); fnvlist_add_string(val[1], "subkey2", "subvalue2"); fnvlist_add_nvlist_array(nvl, key, val, 2); fnvlist_free(val[0]); fnvlist_free(val[1]); test("nvlist_array", B_FALSE, B_FALSE); } { fnvlist_add_string(nvl, bigstring, "1"); test("large_key", B_TRUE, B_TRUE); } { fnvlist_add_string(nvl, key, bigstring); test("large_value", B_TRUE, B_TRUE); } { for (int i = 0; i < 1024; i++) { char buf[32]; (void) snprintf(buf, sizeof (buf), "key-%u", i); fnvlist_add_int64(nvl, buf, i); } test("many_keys", B_TRUE, B_TRUE); } #ifndef __sparc__ { for (int i = 0; i < 10; i++) { nvlist_t *newval = fnvlist_alloc(); fnvlist_add_nvlist(newval, "key", nvl); fnvlist_free(nvl); nvl = newval; } test("deeply_nested_pos", B_TRUE, B_TRUE); } { for (int i = 0; i < 90; i++) { nvlist_t *newval = fnvlist_alloc(); fnvlist_add_nvlist(newval, "key", nvl); fnvlist_free(nvl); nvl = newval; } test("deeply_nested_neg", B_FALSE, B_FALSE); } #endif free(bigstring); fnvlist_free(nvl); } int main(int argc, const char *argv[]) { (void) libzfs_core_init(); if (argc != 2) { (void) printf("usage: %s \n", argv[0]); exit(2); } pool = argv[1]; run_tests(); libzfs_core_fini(); return (unexpected_failures); } zfs-0.8.3/tests/zfs-tests/cmd/nvlist_to_lua/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147024213 xustar000000000000000030 atime=1579730432.969253675 30 ctime=1579730474.351582352 zfs-0.8.3/tests/zfs-tests/cmd/nvlist_to_lua/Makefile.am0000644016037001603700000000055613607166147024216 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include pkgexec_PROGRAMS = nvlist_to_lua nvlist_to_lua_SOURCES = nvlist_to_lua.c nvlist_to_lua_LDADD = \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la zfs-0.8.3/tests/zfs-tests/cmd/nvlist_to_lua/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001024173 xustar000000000000000030 mtime=1579730433.021255345 30 atime=1579730453.878925021 30 ctime=1579730474.353582416 zfs-0.8.3/tests/zfs-tests/cmd/nvlist_to_lua/Makefile.in0000664016037001603700000007200613612143001024204 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = nvlist_to_lua$(EXEEXT) subdir = tests/zfs-tests/cmd/nvlist_to_lua ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_nvlist_to_lua_OBJECTS = nvlist_to_lua.$(OBJEXT) nvlist_to_lua_OBJECTS = $(am_nvlist_to_lua_OBJECTS) nvlist_to_lua_DEPENDENCIES = \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(nvlist_to_lua_SOURCES) DIST_SOURCES = $(nvlist_to_lua_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin nvlist_to_lua_SOURCES = nvlist_to_lua.c nvlist_to_lua_LDADD = \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/nvlist_to_lua/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/nvlist_to_lua/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list nvlist_to_lua$(EXEEXT): $(nvlist_to_lua_OBJECTS) $(nvlist_to_lua_DEPENDENCIES) @rm -f nvlist_to_lua$(EXEEXT) $(AM_V_CCLD)$(LINK) $(nvlist_to_lua_OBJECTS) $(nvlist_to_lua_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nvlist_to_lua.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/readmmap0000644000000000000000000000013213612143052020763 xustar000000000000000030 mtime=1579730474.512587522 30 atime=1579730489.096055773 30 ctime=1579730474.512587522 zfs-0.8.3/tests/zfs-tests/cmd/readmmap/0000775016037001603700000000000013612143052021044 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/readmmap/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133023111 xustar000000000000000030 atime=1579730433.174260257 29 ctime=1579730474.50758736 zfs-0.8.3/tests/zfs-tests/cmd/readmmap/Makefile.am0000644016037001603700000000022213607166133023103 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = readmmap readmmap_SOURCES = readmmap.c zfs-0.8.3/tests/zfs-tests/cmd/readmmap/PaxHeaders.151519/readmmap.c0000644000000000000000000000007413607166133023010 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.512587522 zfs-0.8.3/tests/zfs-tests/cmd/readmmap/readmmap.c0000644016037001603700000000557113607166133023015 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * -------------------------------------------------------------- * BugId 5047993 : Getting bad read data. * * Usage: readmmap * * where: * filename is an absolute path to the file name. * * Return values: * 1 : error * 0 : no errors * -------------------------------------------------------------- */ #include #include #include #include #include #include #include int main(int argc, char **argv) { char *filename = "badfile"; size_t size = 4395; size_t idx = 0; char *buf = NULL; char *map = NULL; int fd = -1, bytes, retval = 0; unsigned seed; if (argc < 2 || optind == argc) { (void) fprintf(stderr, "usage: %s \n", argv[0]); exit(1); } if ((buf = calloc(1, size)) == NULL) { perror("calloc"); exit(1); } filename = argv[optind]; (void) remove(filename); fd = open(filename, O_RDWR|O_CREAT|O_TRUNC, 0666); if (fd == -1) { perror("open to create"); retval = 1; goto end; } bytes = write(fd, buf, size); if (bytes != size) { (void) printf("short write: %d != %zd\n", bytes, size); retval = 1; goto end; } map = mmap(0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); if (map == MAP_FAILED) { perror("mmap"); retval = 1; goto end; } seed = time(NULL); srandom(seed); idx = random() % size; map[idx] = 1; if (msync(map, size, MS_SYNC) != 0) { perror("msync"); retval = 1; goto end; } if (munmap(map, size) != 0) { perror("munmap"); retval = 1; goto end; } bytes = pread(fd, buf, size, 0); if (bytes != size) { (void) printf("short read: %d != %zd\n", bytes, size); retval = 1; goto end; } if (buf[idx] != 1) { (void) printf( "bad data from read! got buf[%zd]=%d, expected 1\n", idx, buf[idx]); retval = 1; goto end; } (void) printf("good data from read: buf[%zd]=1\n", idx); end: if (fd != -1) { (void) close(fd); } if (buf != NULL) { free(buf); } return (retval); } zfs-0.8.3/tests/zfs-tests/cmd/readmmap/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001023077 xustar000000000000000030 mtime=1579730433.225261895 30 atime=1579730453.967927879 30 ctime=1579730474.509587425 zfs-0.8.3/tests/zfs-tests/cmd/readmmap/Makefile.in0000664016037001603700000007121613612143001023112 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = readmmap$(EXEEXT) subdir = tests/zfs-tests/cmd/readmmap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_readmmap_OBJECTS = readmmap.$(OBJEXT) readmmap_OBJECTS = $(am_readmmap_OBJECTS) readmmap_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(readmmap_SOURCES) DIST_SOURCES = $(readmmap_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin readmmap_SOURCES = readmmap.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/readmmap/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/readmmap/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list readmmap$(EXEEXT): $(readmmap_OBJECTS) $(readmmap_DEPENDENCIES) @rm -f readmmap$(EXEEXT) $(AM_V_CCLD)$(LINK) $(readmmap_OBJECTS) $(readmmap_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readmmap.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/randwritecomp0000644000000000000000000000013013612143052022051 xustar000000000000000029 mtime=1579730474.45958582 30 atime=1579730489.096055773 29 ctime=1579730474.45958582 zfs-0.8.3/tests/zfs-tests/cmd/randwritecomp/0000775016037001603700000000000013612143052022134 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/randwritecomp/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133024202 xustar000000000000000030 atime=1579730433.106258073 30 ctime=1579730474.455585692 zfs-0.8.3/tests/zfs-tests/cmd/randwritecomp/Makefile.am0000644016037001603700000000032113607166133024173 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin DEFAULT_INCLUDES += \ -I$(top_srcdir)/include pkgexec_PROGRAMS = randwritecomp randwritecomp_SOURCES = randwritecomp.c zfs-0.8.3/tests/zfs-tests/cmd/randwritecomp/PaxHeaders.151519/randwritecomp.c0000644000000000000000000000007313607166133025167 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730474.45958582 zfs-0.8.3/tests/zfs-tests/cmd/randwritecomp/randwritecomp.c0000644016037001603700000000713113607166133025167 0ustar00hutter2hutter200000000000000/* * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* * Copyright (c) 2017 by Delphix. All rights reserved. */ /* * The following is defined so the source can use * lrand48() and srand48(). */ #define __EXTENSIONS__ #include #include #include "../file_common.h" /* * The following sample was derived from real-world data * of a production Oracle database. */ static uint64_t size_distribution[] = { 0, 1499018, 352084, 1503485, 4206227, 5626657, 5387001, 3733756, 2233094, 874652, 238635, 81434, 33357, 13106, 2009, 1, 23660, }; static uint64_t distribution_n; static uint8_t randbuf[BLOCKSZ]; static void rwc_pwrite(int fd, const void *buf, size_t nbytes, off_t offset) { size_t nleft = nbytes; ssize_t nwrite = 0; nwrite = pwrite(fd, buf, nbytes, offset); if (nwrite < 0) { perror("pwrite"); exit(EXIT_FAILURE); } nleft -= nwrite; if (nleft != 0) { (void) fprintf(stderr, "warning: pwrite: " "wrote %zu out of %zu bytes\n", (nbytes - nleft), nbytes); } } static void fillbuf(char *buf) { uint64_t rv = lrand48() % distribution_n; uint64_t sum = 0; uint64_t i; for (i = 0; i < sizeof (size_distribution) / sizeof (size_distribution[0]); i++) { sum += size_distribution[i]; if (rv < sum) break; } bcopy(randbuf, buf, BLOCKSZ); if (i == 0) bzero(buf, BLOCKSZ - 10); else if (i < 16) bzero(buf, BLOCKSZ - i * 512 + 256); /*LINTED: E_BAD_PTR_CAST_ALIGN*/ ((uint32_t *)buf)[0] = lrand48(); } static void exit_usage(void) { (void) printf("usage: "); (void) printf("randwritecomp [-s] [nwrites]\n"); exit(EXIT_FAILURE); } static void sequential_writes(int fd, char *buf, uint64_t nblocks, int64_t n) { for (int64_t i = 0; n == -1 || i < n; i++) { fillbuf(buf); static uint64_t j = 0; if (j == 0) j = lrand48() % nblocks; rwc_pwrite(fd, buf, BLOCKSZ, j * BLOCKSZ); j++; if (j >= nblocks) j = 0; } } static void random_writes(int fd, char *buf, uint64_t nblocks, int64_t n) { for (int64_t i = 0; n == -1 || i < n; i++) { fillbuf(buf); rwc_pwrite(fd, buf, BLOCKSZ, (lrand48() % nblocks) * BLOCKSZ); } } int main(int argc, char *argv[]) { int fd, err; char *filename = NULL; char buf[BLOCKSZ]; struct stat ss; uint64_t nblocks; int64_t n = -1; int sequential = 0; if (argc < 2) exit_usage(); argv++; if (strcmp("-s", argv[0]) == 0) { sequential = 1; argv++; } if (argv[0] == NULL) exit_usage(); else filename = argv[0]; argv++; if (argv[0] != NULL) n = strtoull(argv[0], NULL, 0); fd = open(filename, O_RDWR|O_CREAT, 0666); err = fstat(fd, &ss); if (err != 0) { (void) fprintf(stderr, "error: fstat returned error code %d\n", err); exit(EXIT_FAILURE); } nblocks = ss.st_size / BLOCKSZ; if (nblocks == 0) { (void) fprintf(stderr, "error: " "file is too small (min allowed size is %d bytes)\n", BLOCKSZ); exit(EXIT_FAILURE); } srand48(getpid()); for (int i = 0; i < BLOCKSZ; i++) randbuf[i] = lrand48(); distribution_n = 0; for (uint64_t i = 0; i < sizeof (size_distribution) / sizeof (size_distribution[0]); i++) { distribution_n += size_distribution[i]; } if (sequential) sequential_writes(fd, buf, nblocks, n); else random_writes(fd, buf, nblocks, n); return (0); } zfs-0.8.3/tests/zfs-tests/cmd/randwritecomp/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001024167 xustar000000000000000030 mtime=1579730433.157259711 30 atime=1579730453.938926947 30 ctime=1579730474.457585756 zfs-0.8.3/tests/zfs-tests/cmd/randwritecomp/Makefile.in0000664016037001603700000007141513612143001024203 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = randwritecomp$(EXEEXT) subdir = tests/zfs-tests/cmd/randwritecomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_randwritecomp_OBJECTS = randwritecomp.$(OBJEXT) randwritecomp_OBJECTS = $(am_randwritecomp_OBJECTS) randwritecomp_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(randwritecomp_SOURCES) DIST_SOURCES = $(randwritecomp_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin randwritecomp_SOURCES = randwritecomp.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/randwritecomp/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/randwritecomp/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list randwritecomp$(EXEEXT): $(randwritecomp_OBJECTS) $(randwritecomp_DEPENDENCIES) @rm -f randwritecomp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(randwritecomp_OBJECTS) $(randwritecomp_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/randwritecomp.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/file_common.h0000644000000000000000000000007413607166133021730 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.404551944 zfs-0.8.3/tests/zfs-tests/cmd/file_common.h0000644016037001603700000000323713607166133021732 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #ifndef FILE_COMMON_H #define FILE_COMMON_H /* * header file for file_* utilities. These utilities * are used by the test cases to perform various file * operations (append writes, for example). */ #ifdef __cplusplus extern "C" { #endif #ifndef _FILE_OFFSET_BITS #define _FILE_OFFSET_BITS 64 #endif #ifndef _LARGEFILE64_SOURCE #define _LARGEFILE64_SOURCE #endif #include #include #include #include #include #include #include #include #define BLOCKSZ 8192 #define DATA 0xa5 #define DATA_RANGE 120 #define BIGBUFFERSIZE 0x800000 #define BIGFILESIZE 20 extern char *optarg; extern int optind, opterr, optopt; #ifdef __cplusplus } #endif #endif /* FILE_COMMON_H */ zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/libzfs_input_check0000644000000000000000000000013213612143051023041 xustar000000000000000030 mtime=1579730473.921568544 30 atime=1579730489.096055773 30 ctime=1579730473.921568544 zfs-0.8.3/tests/zfs-tests/cmd/libzfs_input_check/0000775016037001603700000000000013612143051023122 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/libzfs_input_check/PaxHeaders.151519/libzfs_input_check.c0000644000000000000000000000007413612141514027136 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.921568544 zfs-0.8.3/tests/zfs-tests/cmd/libzfs_input_check/libzfs_input_check.c0000644016037001603700000006173313612141514027145 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. * * CDDL HEADER END */ /* * Copyright (c) 2018 by Delphix. All rights reserved. */ #include #include #include #include #include #include #include /* * Test the nvpair inputs for the non-legacy zfs ioctl commands. */ boolean_t unexpected_failures; int zfs_fd; const char *active_test; /* * Tracks which zfs_ioc_t commands were tested */ boolean_t ioc_tested[ZFS_IOC_LAST - ZFS_IOC_FIRST]; /* * Legacy ioctls that are skipped (for now) */ static unsigned ioc_skip[] = { ZFS_IOC_POOL_CREATE, ZFS_IOC_POOL_DESTROY, ZFS_IOC_POOL_IMPORT, ZFS_IOC_POOL_EXPORT, ZFS_IOC_POOL_CONFIGS, ZFS_IOC_POOL_STATS, ZFS_IOC_POOL_TRYIMPORT, ZFS_IOC_POOL_SCAN, ZFS_IOC_POOL_FREEZE, ZFS_IOC_POOL_UPGRADE, ZFS_IOC_POOL_GET_HISTORY, ZFS_IOC_VDEV_ADD, ZFS_IOC_VDEV_REMOVE, ZFS_IOC_VDEV_SET_STATE, ZFS_IOC_VDEV_ATTACH, ZFS_IOC_VDEV_DETACH, ZFS_IOC_VDEV_SETPATH, ZFS_IOC_VDEV_SETFRU, ZFS_IOC_OBJSET_STATS, ZFS_IOC_OBJSET_ZPLPROPS, ZFS_IOC_DATASET_LIST_NEXT, ZFS_IOC_SNAPSHOT_LIST_NEXT, ZFS_IOC_SET_PROP, ZFS_IOC_DESTROY, ZFS_IOC_RENAME, ZFS_IOC_RECV, ZFS_IOC_SEND, ZFS_IOC_INJECT_FAULT, ZFS_IOC_CLEAR_FAULT, ZFS_IOC_INJECT_LIST_NEXT, ZFS_IOC_ERROR_LOG, ZFS_IOC_CLEAR, ZFS_IOC_PROMOTE, ZFS_IOC_DSOBJ_TO_DSNAME, ZFS_IOC_OBJ_TO_PATH, ZFS_IOC_POOL_SET_PROPS, ZFS_IOC_POOL_GET_PROPS, ZFS_IOC_SET_FSACL, ZFS_IOC_GET_FSACL, ZFS_IOC_SHARE, ZFS_IOC_INHERIT_PROP, ZFS_IOC_SMB_ACL, ZFS_IOC_USERSPACE_ONE, ZFS_IOC_USERSPACE_MANY, ZFS_IOC_USERSPACE_UPGRADE, ZFS_IOC_OBJSET_RECVD_PROPS, ZFS_IOC_VDEV_SPLIT, ZFS_IOC_NEXT_OBJ, ZFS_IOC_DIFF, ZFS_IOC_TMP_SNAPSHOT, ZFS_IOC_OBJ_TO_STATS, ZFS_IOC_SPACE_WRITTEN, ZFS_IOC_POOL_REGUID, ZFS_IOC_SEND_PROGRESS, ZFS_IOC_EVENTS_NEXT, ZFS_IOC_EVENTS_CLEAR, ZFS_IOC_EVENTS_SEEK, }; #define IOC_INPUT_TEST(ioc, name, req, opt, err) \ IOC_INPUT_TEST_IMPL(ioc, name, req, opt, err, B_FALSE) #define IOC_INPUT_TEST_WILD(ioc, name, req, opt, err) \ IOC_INPUT_TEST_IMPL(ioc, name, req, opt, err, B_TRUE) #define IOC_INPUT_TEST_IMPL(ioc, name, req, opt, err, wild) \ do { \ active_test = __func__ + 5; \ ioc_tested[ioc - ZFS_IOC_FIRST] = B_TRUE; \ lzc_ioctl_test(ioc, name, req, opt, err, wild); \ } while (0) /* * run a zfs ioctl command, verify expected results and log failures */ static void lzc_ioctl_run(zfs_ioc_t ioc, const char *name, nvlist_t *innvl, int expected) { zfs_cmd_t zc = {"\0"}; char *packed = NULL; const char *variant; size_t size = 0; int error = 0; switch (expected) { case ZFS_ERR_IOC_ARG_UNAVAIL: variant = "unsupported input"; break; case ZFS_ERR_IOC_ARG_REQUIRED: variant = "missing input"; break; case ZFS_ERR_IOC_ARG_BADTYPE: variant = "invalid input type"; break; default: variant = "valid input"; break; } packed = fnvlist_pack(innvl, &size); (void) strlcpy(zc.zc_name, name, sizeof (zc.zc_name)); zc.zc_name[sizeof (zc.zc_name) - 1] = '\0'; zc.zc_nvlist_src = (uint64_t)(uintptr_t)packed; zc.zc_nvlist_src_size = size; zc.zc_nvlist_dst_size = MAX(size * 2, 128 * 1024); zc.zc_nvlist_dst = (uint64_t)(uintptr_t)malloc(zc.zc_nvlist_dst_size); if (ioctl(zfs_fd, ioc, &zc) != 0) error = errno; if (error != expected) { unexpected_failures = B_TRUE; (void) fprintf(stderr, "%s: Unexpected result with %s, " "error %d (expecting %d)\n", active_test, variant, error, expected); } fnvlist_pack_free(packed, size); free((void *)(uintptr_t)zc.zc_nvlist_dst); } /* * Test each ioc for the following ioctl input errors: * ZFS_ERR_IOC_ARG_UNAVAIL an input argument is not supported by kernel * ZFS_ERR_IOC_ARG_REQUIRED a required input argument is missing * ZFS_ERR_IOC_ARG_BADTYPE an input argument has an invalid type */ static int lzc_ioctl_test(zfs_ioc_t ioc, const char *name, nvlist_t *required, nvlist_t *optional, int expected_error, boolean_t wildcard) { nvlist_t *input = fnvlist_alloc(); nvlist_t *future = fnvlist_alloc(); int error = 0; if (required != NULL) { for (nvpair_t *pair = nvlist_next_nvpair(required, NULL); pair != NULL; pair = nvlist_next_nvpair(required, pair)) { fnvlist_add_nvpair(input, pair); } } if (optional != NULL) { for (nvpair_t *pair = nvlist_next_nvpair(optional, NULL); pair != NULL; pair = nvlist_next_nvpair(optional, pair)) { fnvlist_add_nvpair(input, pair); } } /* * Generic input run with 'optional' nvlist pair */ if (!wildcard) fnvlist_add_nvlist(input, "optional", future); lzc_ioctl_run(ioc, name, input, expected_error); if (!wildcard) fnvlist_remove(input, "optional"); /* * Bogus input value */ if (!wildcard) { fnvlist_add_string(input, "bogus_input", "bogus"); lzc_ioctl_run(ioc, name, input, ZFS_ERR_IOC_ARG_UNAVAIL); fnvlist_remove(input, "bogus_input"); } /* * Missing required inputs */ if (required != NULL) { nvlist_t *empty = fnvlist_alloc(); lzc_ioctl_run(ioc, name, empty, ZFS_ERR_IOC_ARG_REQUIRED); nvlist_free(empty); } /* * Wrong nvpair type */ if (required != NULL || optional != NULL) { /* * switch the type of one of the input pairs */ for (nvpair_t *pair = nvlist_next_nvpair(input, NULL); pair != NULL; pair = nvlist_next_nvpair(input, pair)) { char pname[MAXNAMELEN]; data_type_t ptype; strlcpy(pname, nvpair_name(pair), sizeof (pname)); pname[sizeof (pname) - 1] = '\0'; ptype = nvpair_type(pair); fnvlist_remove_nvpair(input, pair); switch (ptype) { case DATA_TYPE_STRING: fnvlist_add_uint64(input, pname, 42); break; default: fnvlist_add_string(input, pname, "bogus"); break; } } lzc_ioctl_run(ioc, name, input, ZFS_ERR_IOC_ARG_BADTYPE); } nvlist_free(future); nvlist_free(input); return (error); } static void test_pool_sync(const char *pool) { nvlist_t *required = fnvlist_alloc(); fnvlist_add_boolean_value(required, "force", B_TRUE); IOC_INPUT_TEST(ZFS_IOC_POOL_SYNC, pool, required, NULL, 0); nvlist_free(required); } static void test_pool_reopen(const char *pool) { nvlist_t *required = fnvlist_alloc(); fnvlist_add_boolean_value(required, "scrub_restart", B_FALSE); IOC_INPUT_TEST(ZFS_IOC_POOL_REOPEN, pool, required, NULL, 0); nvlist_free(required); } static void test_pool_checkpoint(const char *pool) { IOC_INPUT_TEST(ZFS_IOC_POOL_CHECKPOINT, pool, NULL, NULL, 0); } static void test_pool_discard_checkpoint(const char *pool) { int err = lzc_pool_checkpoint(pool); if (err == 0 || err == ZFS_ERR_CHECKPOINT_EXISTS) IOC_INPUT_TEST(ZFS_IOC_POOL_DISCARD_CHECKPOINT, pool, NULL, NULL, 0); } static void test_log_history(const char *pool) { nvlist_t *required = fnvlist_alloc(); fnvlist_add_string(required, "message", "input check"); IOC_INPUT_TEST(ZFS_IOC_LOG_HISTORY, pool, required, NULL, 0); nvlist_free(required); } static void test_create(const char *pool) { char dataset[MAXNAMELEN + 32]; (void) snprintf(dataset, sizeof (dataset), "%s/create-fs", pool); nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); nvlist_t *props = fnvlist_alloc(); fnvlist_add_int32(required, "type", DMU_OST_ZFS); fnvlist_add_uint64(props, "recordsize", 8192); fnvlist_add_nvlist(optional, "props", props); IOC_INPUT_TEST(ZFS_IOC_CREATE, dataset, required, optional, 0); nvlist_free(required); nvlist_free(optional); } static void test_snapshot(const char *pool, const char *snapshot) { nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); nvlist_t *snaps = fnvlist_alloc(); nvlist_t *props = fnvlist_alloc(); fnvlist_add_boolean(snaps, snapshot); fnvlist_add_nvlist(required, "snaps", snaps); fnvlist_add_string(props, "org.openzfs:launch", "September 17th, 2013"); fnvlist_add_nvlist(optional, "props", props); IOC_INPUT_TEST(ZFS_IOC_SNAPSHOT, pool, required, optional, 0); nvlist_free(props); nvlist_free(snaps); nvlist_free(optional); nvlist_free(required); } static void test_space_snaps(const char *snapshot) { nvlist_t *required = fnvlist_alloc(); fnvlist_add_string(required, "firstsnap", snapshot); IOC_INPUT_TEST(ZFS_IOC_SPACE_SNAPS, snapshot, required, NULL, 0); nvlist_free(required); } static void test_destroy_snaps(const char *pool, const char *snapshot) { nvlist_t *required = fnvlist_alloc(); nvlist_t *snaps = fnvlist_alloc(); fnvlist_add_boolean(snaps, snapshot); fnvlist_add_nvlist(required, "snaps", snaps); IOC_INPUT_TEST(ZFS_IOC_DESTROY_SNAPS, pool, required, NULL, 0); nvlist_free(snaps); nvlist_free(required); } static void test_bookmark(const char *pool, const char *snapshot, const char *bookmark) { nvlist_t *required = fnvlist_alloc(); fnvlist_add_string(required, bookmark, snapshot); IOC_INPUT_TEST_WILD(ZFS_IOC_BOOKMARK, pool, required, NULL, 0); nvlist_free(required); } static void test_get_bookmarks(const char *dataset) { nvlist_t *optional = fnvlist_alloc(); fnvlist_add_boolean(optional, "guid"); fnvlist_add_boolean(optional, "createtxg"); fnvlist_add_boolean(optional, "creation"); IOC_INPUT_TEST_WILD(ZFS_IOC_GET_BOOKMARKS, dataset, NULL, optional, 0); nvlist_free(optional); } static void test_destroy_bookmarks(const char *pool, const char *bookmark) { nvlist_t *required = fnvlist_alloc(); fnvlist_add_boolean(required, bookmark); IOC_INPUT_TEST_WILD(ZFS_IOC_DESTROY_BOOKMARKS, pool, required, NULL, 0); nvlist_free(required); } static void test_clone(const char *snapshot, const char *clone) { nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); nvlist_t *props = fnvlist_alloc(); fnvlist_add_string(required, "origin", snapshot); IOC_INPUT_TEST(ZFS_IOC_CLONE, clone, required, NULL, 0); nvlist_free(props); nvlist_free(optional); nvlist_free(required); } static void test_rollback(const char *dataset, const char *snapshot) { nvlist_t *optional = fnvlist_alloc(); fnvlist_add_string(optional, "target", snapshot); IOC_INPUT_TEST(ZFS_IOC_ROLLBACK, dataset, NULL, optional, B_FALSE); nvlist_free(optional); } static void test_hold(const char *pool, const char *snapshot) { nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); nvlist_t *holds = fnvlist_alloc(); fnvlist_add_string(holds, snapshot, "libzfs_check_hold"); fnvlist_add_nvlist(required, "holds", holds); fnvlist_add_int32(optional, "cleanup_fd", zfs_fd); IOC_INPUT_TEST(ZFS_IOC_HOLD, pool, required, optional, 0); nvlist_free(holds); nvlist_free(optional); nvlist_free(required); } static void test_get_holds(const char *snapshot) { IOC_INPUT_TEST(ZFS_IOC_GET_HOLDS, snapshot, NULL, NULL, 0); } static void test_release(const char *pool, const char *snapshot) { nvlist_t *required = fnvlist_alloc(); nvlist_t *release = fnvlist_alloc(); fnvlist_add_boolean(release, "libzfs_check_hold"); fnvlist_add_nvlist(required, snapshot, release); IOC_INPUT_TEST_WILD(ZFS_IOC_RELEASE, pool, required, NULL, 0); nvlist_free(release); nvlist_free(required); } static void test_send_new(const char *snapshot, int fd) { nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); fnvlist_add_int32(required, "fd", fd); fnvlist_add_boolean(optional, "largeblockok"); fnvlist_add_boolean(optional, "embedok"); fnvlist_add_boolean(optional, "compressok"); fnvlist_add_boolean(optional, "rawok"); /* * TODO - Resumable send is harder to set up. So we currently * ignore testing for that variant. */ #if 0 fnvlist_add_string(optional, "fromsnap", from); fnvlist_add_uint64(optional, "resume_object", resumeobj); fnvlist_add_uint64(optional, "resume_offset", offset); #endif IOC_INPUT_TEST(ZFS_IOC_SEND_NEW, snapshot, required, optional, 0); nvlist_free(optional); nvlist_free(required); } static void test_recv_new(const char *dataset, int fd) { dmu_replay_record_t drr = { 0 }; nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); nvlist_t *props = fnvlist_alloc(); char snapshot[MAXNAMELEN + 32]; ssize_t count; int cleanup_fd = open(ZFS_DEV, O_RDWR); (void) snprintf(snapshot, sizeof (snapshot), "%s@replicant", dataset); count = pread(fd, &drr, sizeof (drr), 0); if (count != sizeof (drr)) { (void) fprintf(stderr, "could not read stream: %s\n", strerror(errno)); } fnvlist_add_string(required, "snapname", snapshot); fnvlist_add_byte_array(required, "begin_record", (uchar_t *)&drr, sizeof (drr)); fnvlist_add_int32(required, "input_fd", fd); fnvlist_add_string(props, "org.openzfs:launch", "September 17th, 2013"); fnvlist_add_nvlist(optional, "localprops", props); fnvlist_add_boolean(optional, "force"); fnvlist_add_int32(optional, "cleanup_fd", cleanup_fd); /* * TODO - Resumable receive is harder to set up. So we currently * ignore testing for one. */ #if 0 fnvlist_add_nvlist(optional, "props", recvdprops); fnvlist_add_string(optional, "origin", origin); fnvlist_add_boolean(optional, "resumable"); fnvlist_add_uint64(optional, "action_handle", *action_handle); #endif IOC_INPUT_TEST(ZFS_IOC_RECV_NEW, dataset, required, optional, EBADE); nvlist_free(props); nvlist_free(optional); nvlist_free(required); (void) close(cleanup_fd); } static void test_send_space(const char *snapshot1, const char *snapshot2) { nvlist_t *optional = fnvlist_alloc(); fnvlist_add_string(optional, "from", snapshot1); fnvlist_add_boolean(optional, "largeblockok"); fnvlist_add_boolean(optional, "embedok"); fnvlist_add_boolean(optional, "compressok"); fnvlist_add_boolean(optional, "rawok"); IOC_INPUT_TEST(ZFS_IOC_SEND_SPACE, snapshot2, NULL, optional, 0); nvlist_free(optional); } static void test_remap(const char *dataset) { IOC_INPUT_TEST(ZFS_IOC_REMAP, dataset, NULL, NULL, 0); } static void test_channel_program(const char *pool) { const char *program = "arg = ...\n" "argv = arg[\"argv\"]\n" "return argv[1]"; char *const argv[1] = { "Hello World!" }; nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); nvlist_t *args = fnvlist_alloc(); fnvlist_add_string(required, "program", program); fnvlist_add_string_array(args, "argv", argv, 1); fnvlist_add_nvlist(required, "arg", args); fnvlist_add_boolean_value(optional, "sync", B_TRUE); fnvlist_add_uint64(optional, "instrlimit", 1000 * 1000); fnvlist_add_uint64(optional, "memlimit", 8192 * 1024); IOC_INPUT_TEST(ZFS_IOC_CHANNEL_PROGRAM, pool, required, optional, 0); nvlist_free(args); nvlist_free(optional); nvlist_free(required); } #define WRAPPING_KEY_LEN 32 static void test_load_key(const char *dataset) { nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); nvlist_t *hidden = fnvlist_alloc(); uint8_t keydata[WRAPPING_KEY_LEN] = {0}; fnvlist_add_uint8_array(hidden, "wkeydata", keydata, sizeof (keydata)); fnvlist_add_nvlist(required, "hidden_args", hidden); fnvlist_add_boolean(optional, "noop"); IOC_INPUT_TEST(ZFS_IOC_LOAD_KEY, dataset, required, optional, EINVAL); nvlist_free(hidden); nvlist_free(optional); nvlist_free(required); } static void test_change_key(const char *dataset) { IOC_INPUT_TEST(ZFS_IOC_CHANGE_KEY, dataset, NULL, NULL, EINVAL); } static void test_unload_key(const char *dataset) { IOC_INPUT_TEST(ZFS_IOC_UNLOAD_KEY, dataset, NULL, NULL, EACCES); } static void test_vdev_initialize(const char *pool) { nvlist_t *required = fnvlist_alloc(); nvlist_t *vdev_guids = fnvlist_alloc(); fnvlist_add_uint64(vdev_guids, "path", 0xdeadbeefdeadbeef); fnvlist_add_uint64(required, ZPOOL_INITIALIZE_COMMAND, POOL_INITIALIZE_START); fnvlist_add_nvlist(required, ZPOOL_INITIALIZE_VDEVS, vdev_guids); IOC_INPUT_TEST(ZFS_IOC_POOL_INITIALIZE, pool, required, NULL, EINVAL); nvlist_free(vdev_guids); nvlist_free(required); } static void test_vdev_trim(const char *pool) { nvlist_t *required = fnvlist_alloc(); nvlist_t *optional = fnvlist_alloc(); nvlist_t *vdev_guids = fnvlist_alloc(); fnvlist_add_uint64(vdev_guids, "path", 0xdeadbeefdeadbeef); fnvlist_add_uint64(required, ZPOOL_TRIM_COMMAND, POOL_TRIM_START); fnvlist_add_nvlist(required, ZPOOL_TRIM_VDEVS, vdev_guids); fnvlist_add_uint64(optional, ZPOOL_TRIM_RATE, 1ULL << 30); fnvlist_add_boolean_value(optional, ZPOOL_TRIM_SECURE, B_TRUE); IOC_INPUT_TEST(ZFS_IOC_POOL_TRIM, pool, required, optional, EINVAL); nvlist_free(vdev_guids); nvlist_free(optional); nvlist_free(required); } static int zfs_destroy(const char *dataset) { zfs_cmd_t zc = {"\0"}; int err; (void) strlcpy(zc.zc_name, dataset, sizeof (zc.zc_name)); zc.zc_name[sizeof (zc.zc_name) - 1] = '\0'; err = ioctl(zfs_fd, ZFS_IOC_DESTROY, &zc); return (err == 0 ? 0 : errno); } static void zfs_ioc_input_tests(const char *pool) { char filepath[] = "/tmp/ioc_test_file_XXXXXX"; char dataset[ZFS_MAX_DATASET_NAME_LEN]; char snapbase[ZFS_MAX_DATASET_NAME_LEN + 32]; char snapshot[ZFS_MAX_DATASET_NAME_LEN + 32]; char bookmark[ZFS_MAX_DATASET_NAME_LEN + 32]; char backup[ZFS_MAX_DATASET_NAME_LEN]; char clone[ZFS_MAX_DATASET_NAME_LEN]; int tmpfd, err; /* * Setup names and create a working dataset */ (void) snprintf(dataset, sizeof (dataset), "%s/test-fs", pool); (void) snprintf(snapbase, sizeof (snapbase), "%s@snapbase", dataset); (void) snprintf(snapshot, sizeof (snapshot), "%s@snapshot", dataset); (void) snprintf(bookmark, sizeof (bookmark), "%s#bookmark", dataset); (void) snprintf(clone, sizeof (clone), "%s/test-fs-clone", pool); (void) snprintf(backup, sizeof (backup), "%s/backup", pool); err = lzc_create(dataset, DMU_OST_ZFS, NULL, NULL, 0); if (err) { (void) fprintf(stderr, "could not create '%s': %s\n", dataset, strerror(errno)); exit(2); } tmpfd = mkstemp(filepath); if (tmpfd < 0) { (void) fprintf(stderr, "could not create '%s': %s\n", filepath, strerror(errno)); exit(2); } /* * run a test for each ioctl * Note that some test build on previous test operations */ test_pool_sync(pool); test_pool_reopen(pool); test_pool_checkpoint(pool); test_pool_discard_checkpoint(pool); test_log_history(pool); test_create(dataset); test_snapshot(pool, snapbase); test_snapshot(pool, snapshot); test_space_snaps(snapshot); test_send_space(snapbase, snapshot); test_send_new(snapshot, tmpfd); test_recv_new(backup, tmpfd); test_bookmark(pool, snapshot, bookmark); test_get_bookmarks(dataset); test_destroy_bookmarks(pool, bookmark); test_hold(pool, snapshot); test_get_holds(snapshot); test_release(pool, snapshot); test_clone(snapshot, clone); zfs_destroy(clone); test_rollback(dataset, snapshot); test_destroy_snaps(pool, snapshot); test_destroy_snaps(pool, snapbase); test_remap(dataset); test_channel_program(pool); test_load_key(dataset); test_change_key(dataset); test_unload_key(dataset); test_vdev_initialize(pool); test_vdev_trim(pool); /* * cleanup */ zfs_cmd_t zc = {"\0"}; nvlist_t *snaps = fnvlist_alloc(); fnvlist_add_boolean(snaps, snapshot); (void) lzc_destroy_snaps(snaps, B_FALSE, NULL); nvlist_free(snaps); (void) zfs_destroy(dataset); (void) zfs_destroy(backup); (void) close(tmpfd); (void) unlink(filepath); /* * All the unused slots should yield ZFS_ERR_IOC_CMD_UNAVAIL */ for (int i = 0; i < ARRAY_SIZE(ioc_skip); i++) { if (ioc_tested[ioc_skip[i] - ZFS_IOC_FIRST]) (void) fprintf(stderr, "cmd %d tested, not skipped!\n", (int)(ioc_skip[i] - ZFS_IOC_FIRST)); ioc_tested[ioc_skip[i] - ZFS_IOC_FIRST] = B_TRUE; } (void) strlcpy(zc.zc_name, pool, sizeof (zc.zc_name)); zc.zc_name[sizeof (zc.zc_name) - 1] = '\0'; for (unsigned ioc = ZFS_IOC_FIRST; ioc < ZFS_IOC_LAST; ioc++) { unsigned cmd = ioc - ZFS_IOC_FIRST; if (ioc_tested[cmd]) continue; if (ioctl(zfs_fd, ioc, &zc) != 0 && errno != ZFS_ERR_IOC_CMD_UNAVAIL) { (void) fprintf(stderr, "cmd %d is missing a test case " "(%d)\n", cmd, errno); } } } enum zfs_ioc_ref { ZFS_IOC_BASE = ('Z' << 8), LINUX_IOC_BASE = ZFS_IOC_BASE + 0x80, FREEBSD_IOC_BASE = ZFS_IOC_BASE + 0xC0, }; /* * Canonical reference check of /dev/zfs ioctl numbers. * These cannot change and new ioctl numbers must be appended. */ boolean_t validate_ioc_values(void) { boolean_t result = B_TRUE; #define CHECK(expr) do { \ if (!(expr)) { \ result = B_FALSE; \ fprintf(stderr, "(%s) === FALSE\n", #expr); \ } \ } while (0) CHECK(ZFS_IOC_BASE + 0 == ZFS_IOC_POOL_CREATE); CHECK(ZFS_IOC_BASE + 1 == ZFS_IOC_POOL_DESTROY); CHECK(ZFS_IOC_BASE + 2 == ZFS_IOC_POOL_IMPORT); CHECK(ZFS_IOC_BASE + 3 == ZFS_IOC_POOL_EXPORT); CHECK(ZFS_IOC_BASE + 4 == ZFS_IOC_POOL_CONFIGS); CHECK(ZFS_IOC_BASE + 5 == ZFS_IOC_POOL_STATS); CHECK(ZFS_IOC_BASE + 6 == ZFS_IOC_POOL_TRYIMPORT); CHECK(ZFS_IOC_BASE + 7 == ZFS_IOC_POOL_SCAN); CHECK(ZFS_IOC_BASE + 8 == ZFS_IOC_POOL_FREEZE); CHECK(ZFS_IOC_BASE + 9 == ZFS_IOC_POOL_UPGRADE); CHECK(ZFS_IOC_BASE + 10 == ZFS_IOC_POOL_GET_HISTORY); CHECK(ZFS_IOC_BASE + 11 == ZFS_IOC_VDEV_ADD); CHECK(ZFS_IOC_BASE + 12 == ZFS_IOC_VDEV_REMOVE); CHECK(ZFS_IOC_BASE + 13 == ZFS_IOC_VDEV_SET_STATE); CHECK(ZFS_IOC_BASE + 14 == ZFS_IOC_VDEV_ATTACH); CHECK(ZFS_IOC_BASE + 15 == ZFS_IOC_VDEV_DETACH); CHECK(ZFS_IOC_BASE + 16 == ZFS_IOC_VDEV_SETPATH); CHECK(ZFS_IOC_BASE + 17 == ZFS_IOC_VDEV_SETFRU); CHECK(ZFS_IOC_BASE + 18 == ZFS_IOC_OBJSET_STATS); CHECK(ZFS_IOC_BASE + 19 == ZFS_IOC_OBJSET_ZPLPROPS); CHECK(ZFS_IOC_BASE + 20 == ZFS_IOC_DATASET_LIST_NEXT); CHECK(ZFS_IOC_BASE + 21 == ZFS_IOC_SNAPSHOT_LIST_NEXT); CHECK(ZFS_IOC_BASE + 22 == ZFS_IOC_SET_PROP); CHECK(ZFS_IOC_BASE + 23 == ZFS_IOC_CREATE); CHECK(ZFS_IOC_BASE + 24 == ZFS_IOC_DESTROY); CHECK(ZFS_IOC_BASE + 25 == ZFS_IOC_ROLLBACK); CHECK(ZFS_IOC_BASE + 26 == ZFS_IOC_RENAME); CHECK(ZFS_IOC_BASE + 27 == ZFS_IOC_RECV); CHECK(ZFS_IOC_BASE + 28 == ZFS_IOC_SEND); CHECK(ZFS_IOC_BASE + 29 == ZFS_IOC_INJECT_FAULT); CHECK(ZFS_IOC_BASE + 30 == ZFS_IOC_CLEAR_FAULT); CHECK(ZFS_IOC_BASE + 31 == ZFS_IOC_INJECT_LIST_NEXT); CHECK(ZFS_IOC_BASE + 32 == ZFS_IOC_ERROR_LOG); CHECK(ZFS_IOC_BASE + 33 == ZFS_IOC_CLEAR); CHECK(ZFS_IOC_BASE + 34 == ZFS_IOC_PROMOTE); CHECK(ZFS_IOC_BASE + 35 == ZFS_IOC_SNAPSHOT); CHECK(ZFS_IOC_BASE + 36 == ZFS_IOC_DSOBJ_TO_DSNAME); CHECK(ZFS_IOC_BASE + 37 == ZFS_IOC_OBJ_TO_PATH); CHECK(ZFS_IOC_BASE + 38 == ZFS_IOC_POOL_SET_PROPS); CHECK(ZFS_IOC_BASE + 39 == ZFS_IOC_POOL_GET_PROPS); CHECK(ZFS_IOC_BASE + 40 == ZFS_IOC_SET_FSACL); CHECK(ZFS_IOC_BASE + 41 == ZFS_IOC_GET_FSACL); CHECK(ZFS_IOC_BASE + 42 == ZFS_IOC_SHARE); CHECK(ZFS_IOC_BASE + 43 == ZFS_IOC_INHERIT_PROP); CHECK(ZFS_IOC_BASE + 44 == ZFS_IOC_SMB_ACL); CHECK(ZFS_IOC_BASE + 45 == ZFS_IOC_USERSPACE_ONE); CHECK(ZFS_IOC_BASE + 46 == ZFS_IOC_USERSPACE_MANY); CHECK(ZFS_IOC_BASE + 47 == ZFS_IOC_USERSPACE_UPGRADE); CHECK(ZFS_IOC_BASE + 48 == ZFS_IOC_HOLD); CHECK(ZFS_IOC_BASE + 49 == ZFS_IOC_RELEASE); CHECK(ZFS_IOC_BASE + 50 == ZFS_IOC_GET_HOLDS); CHECK(ZFS_IOC_BASE + 51 == ZFS_IOC_OBJSET_RECVD_PROPS); CHECK(ZFS_IOC_BASE + 52 == ZFS_IOC_VDEV_SPLIT); CHECK(ZFS_IOC_BASE + 53 == ZFS_IOC_NEXT_OBJ); CHECK(ZFS_IOC_BASE + 54 == ZFS_IOC_DIFF); CHECK(ZFS_IOC_BASE + 55 == ZFS_IOC_TMP_SNAPSHOT); CHECK(ZFS_IOC_BASE + 56 == ZFS_IOC_OBJ_TO_STATS); CHECK(ZFS_IOC_BASE + 57 == ZFS_IOC_SPACE_WRITTEN); CHECK(ZFS_IOC_BASE + 58 == ZFS_IOC_SPACE_SNAPS); CHECK(ZFS_IOC_BASE + 59 == ZFS_IOC_DESTROY_SNAPS); CHECK(ZFS_IOC_BASE + 60 == ZFS_IOC_POOL_REGUID); CHECK(ZFS_IOC_BASE + 61 == ZFS_IOC_POOL_REOPEN); CHECK(ZFS_IOC_BASE + 62 == ZFS_IOC_SEND_PROGRESS); CHECK(ZFS_IOC_BASE + 63 == ZFS_IOC_LOG_HISTORY); CHECK(ZFS_IOC_BASE + 64 == ZFS_IOC_SEND_NEW); CHECK(ZFS_IOC_BASE + 65 == ZFS_IOC_SEND_SPACE); CHECK(ZFS_IOC_BASE + 66 == ZFS_IOC_CLONE); CHECK(ZFS_IOC_BASE + 67 == ZFS_IOC_BOOKMARK); CHECK(ZFS_IOC_BASE + 68 == ZFS_IOC_GET_BOOKMARKS); CHECK(ZFS_IOC_BASE + 69 == ZFS_IOC_DESTROY_BOOKMARKS); CHECK(ZFS_IOC_BASE + 70 == ZFS_IOC_RECV_NEW); CHECK(ZFS_IOC_BASE + 71 == ZFS_IOC_POOL_SYNC); CHECK(ZFS_IOC_BASE + 72 == ZFS_IOC_CHANNEL_PROGRAM); CHECK(ZFS_IOC_BASE + 73 == ZFS_IOC_LOAD_KEY); CHECK(ZFS_IOC_BASE + 74 == ZFS_IOC_UNLOAD_KEY); CHECK(ZFS_IOC_BASE + 75 == ZFS_IOC_CHANGE_KEY); CHECK(ZFS_IOC_BASE + 76 == ZFS_IOC_REMAP); CHECK(ZFS_IOC_BASE + 77 == ZFS_IOC_POOL_CHECKPOINT); CHECK(ZFS_IOC_BASE + 78 == ZFS_IOC_POOL_DISCARD_CHECKPOINT); CHECK(ZFS_IOC_BASE + 79 == ZFS_IOC_POOL_INITIALIZE); CHECK(ZFS_IOC_BASE + 80 == ZFS_IOC_POOL_TRIM); CHECK(LINUX_IOC_BASE + 1 == ZFS_IOC_EVENTS_NEXT); CHECK(LINUX_IOC_BASE + 2 == ZFS_IOC_EVENTS_CLEAR); CHECK(LINUX_IOC_BASE + 3 == ZFS_IOC_EVENTS_SEEK); #undef CHECK return (result); } int main(int argc, const char *argv[]) { if (argc != 2) { (void) fprintf(stderr, "usage: %s \n", argv[0]); exit(2); } if (!validate_ioc_values()) { (void) fprintf(stderr, "WARNING: zfs_ioc_t has binary " "incompatible command values\n"); exit(3); } (void) libzfs_core_init(); zfs_fd = open(ZFS_DEV, O_RDWR); if (zfs_fd < 0) { (void) fprintf(stderr, "open: %s\n", strerror(errno)); libzfs_core_fini(); exit(2); } zfs_ioc_input_tests(argv[1]); (void) close(zfs_fd); libzfs_core_fini(); return (unexpected_failures); } zfs-0.8.3/tests/zfs-tests/cmd/libzfs_input_check/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147025176 xustar000000000000000030 atime=1579730432.344233607 30 ctime=1579730473.918568448 zfs-0.8.3/tests/zfs-tests/cmd/libzfs_input_check/Makefile.am0000644016037001603700000000065213607166147025176 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin DEFAULT_INCLUDES += \ -I$(top_srcdir)/include \ -I$(top_srcdir)/lib/libspl/include pkgexec_PROGRAMS = libzfs_input_check libzfs_input_check_SOURCES = libzfs_input_check.c libzfs_input_check_LDADD = \ $(top_builddir)/lib/libspl/libspl.la \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la zfs-0.8.3/tests/zfs-tests/cmd/libzfs_input_check/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000025155 xustar000000000000000030 mtime=1579730432.395235245 30 atime=1579730453.642917443 30 ctime=1579730473.920568512 zfs-0.8.3/tests/zfs-tests/cmd/libzfs_input_check/Makefile.in0000664016037001603700000007227713612143000025200 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = libzfs_input_check$(EXEEXT) subdir = tests/zfs-tests/cmd/libzfs_input_check ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_libzfs_input_check_OBJECTS = libzfs_input_check.$(OBJEXT) libzfs_input_check_OBJECTS = $(am_libzfs_input_check_OBJECTS) libzfs_input_check_DEPENDENCIES = \ $(top_builddir)/lib/libspl/libspl.la \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libzfs_input_check_SOURCES) DIST_SOURCES = $(libzfs_input_check_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h \ -I$(top_srcdir)/include -I$(top_srcdir)/lib/libspl/include AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin libzfs_input_check_SOURCES = libzfs_input_check.c libzfs_input_check_LDADD = \ $(top_builddir)/lib/libspl/libspl.la \ $(top_builddir)/lib/libnvpair/libnvpair.la \ $(top_builddir)/lib/libzfs_core/libzfs_core.la all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/libzfs_input_check/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/libzfs_input_check/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list libzfs_input_check$(EXEEXT): $(libzfs_input_check_OBJECTS) $(libzfs_input_check_DEPENDENCIES) @rm -f libzfs_input_check$(EXEEXT) $(AM_V_CCLD)$(LINK) $(libzfs_input_check_OBJECTS) $(libzfs_input_check_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzfs_input_check.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/mmapwrite0000644000000000000000000000013013612143052021200 xustar000000000000000029 mtime=1579730474.29858065 30 atime=1579730489.096055773 29 ctime=1579730474.29858065 zfs-0.8.3/tests/zfs-tests/cmd/mmapwrite/0000775016037001603700000000000013612143052021263 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/mmapwrite/PaxHeaders.151519/mmapwrite.c0000644000000000000000000000007313612141514023435 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730474.29858065 zfs-0.8.3/tests/zfs-tests/cmd/mmapwrite/mmapwrite.c0000644016037001603700000000747213612141514023445 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include #include #include #include #include #include #include /* * -------------------------------------------------------------------- * Bug Issue Id: #7512 * The bug time sequence: * 1. context #1, zfs_write assign a txg "n". * 2. In the same process, context #2, mmap page fault (which means the mm_sem * is hold) occurred, zfs_dirty_inode open a txg failed, and wait previous * txg "n" completed. * 3. context #1 call uiomove to write, however page fault is occurred in * uiomove, which means it needs mm_sem, but mm_sem is hold by * context #2, so it stuck and can't complete, then txg "n" will not * complete. * * So context #1 and context #2 trap into the "dead lock". * -------------------------------------------------------------------- */ #define NORMAL_WRITE_TH_NUM 2 static void * normal_writer(void *filename) { char *file_path = filename; int fd = -1; ssize_t write_num = 0; int page_size = getpagesize(); fd = open(file_path, O_RDWR | O_CREAT, 0777); if (fd == -1) { err(1, "failed to open %s", file_path); } char *buf = malloc(1); while (1) { write_num = write(fd, buf, 1); if (write_num == 0) { err(1, "write failed!"); break; } lseek(fd, page_size, SEEK_CUR); } if (buf) { free(buf); } } static void * map_writer(void *filename) { int fd = -1; int ret = 0; char *buf = NULL; int page_size = getpagesize(); int op_errno = 0; char *file_path = filename; while (1) { ret = access(file_path, F_OK); if (ret) { op_errno = errno; if (op_errno == ENOENT) { fd = open(file_path, O_RDWR | O_CREAT, 0777); if (fd == -1) { err(1, "open file failed"); } ret = ftruncate(fd, page_size); if (ret == -1) { err(1, "truncate file failed"); } } else { err(1, "access file failed!"); } } else { fd = open(file_path, O_RDWR, 0777); if (fd == -1) { err(1, "open file failed"); } } if ((buf = mmap(NULL, page_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) { err(1, "map file failed"); } if (fd != -1) close(fd); char s[10] = {0, }; memcpy(buf, s, 10); ret = munmap(buf, page_size); if (ret != 0) { err(1, "unmap file failed"); } } } int main(int argc, char **argv) { pthread_t map_write_tid; pthread_t normal_write_tid[NORMAL_WRITE_TH_NUM]; int i = 0; if (argc != 3) { (void) printf("usage: %s " "\n", argv[0]); exit(1); } for (i = 0; i < NORMAL_WRITE_TH_NUM; i++) { if (pthread_create(&normal_write_tid[i], NULL, normal_writer, argv[1])) { err(1, "pthread_create normal_writer failed."); } } if (pthread_create(&map_write_tid, NULL, map_writer, argv[2])) { err(1, "pthread_create map_writer failed."); } /* NOTREACHED */ pthread_join(map_write_tid, NULL); return (0); } zfs-0.8.3/tests/zfs-tests/cmd/mmapwrite/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133023331 xustar000000000000000030 atime=1579730432.901251491 30 ctime=1579730474.292580457 zfs-0.8.3/tests/zfs-tests/cmd/mmapwrite/Makefile.am0000644016037001603700000000026113607166133023325 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = mmapwrite mmapwrite_SOURCES = mmapwrite.c mmapwrite_LDADD = -lpthread zfs-0.8.3/tests/zfs-tests/cmd/mmapwrite/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000023315 xustar000000000000000030 mtime=1579730432.953253161 30 atime=1579730453.848924057 30 ctime=1579730474.296580585 zfs-0.8.3/tests/zfs-tests/cmd/mmapwrite/Makefile.in0000664016037001603700000007127413612143000023334 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = mmapwrite$(EXEEXT) subdir = tests/zfs-tests/cmd/mmapwrite ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_mmapwrite_OBJECTS = mmapwrite.$(OBJEXT) mmapwrite_OBJECTS = $(am_mmapwrite_OBJECTS) mmapwrite_DEPENDENCIES = AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(mmapwrite_SOURCES) DIST_SOURCES = $(mmapwrite_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin mmapwrite_SOURCES = mmapwrite.c mmapwrite_LDADD = -lpthread all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mmapwrite/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mmapwrite/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list mmapwrite$(EXEEXT): $(mmapwrite_OBJECTS) $(mmapwrite_DEPENDENCIES) @rm -f mmapwrite$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mmapwrite_OBJECTS) $(mmapwrite_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmapwrite.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/chg_usr_exec0000644000000000000000000000013213612143051021632 xustar000000000000000030 mtime=1579730473.513555445 30 atime=1579730489.096055773 30 ctime=1579730473.513555445 zfs-0.8.3/tests/zfs-tests/cmd/chg_usr_exec/0000775016037001603700000000000013612143051021713 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/chg_usr_exec/PaxHeaders.151519/Makefile.am0000644000000000000000000000007313607166133023761 xustar000000000000000029 atime=1579730431.86621826 30 ctime=1579730473.508555285 zfs-0.8.3/tests/zfs-tests/cmd/chg_usr_exec/Makefile.am0000644016037001603700000000023613607166133023760 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = chg_usr_exec chg_usr_exec_SOURCES = chg_usr_exec.c zfs-0.8.3/tests/zfs-tests/cmd/chg_usr_exec/PaxHeaders.151519/chg_usr_exec.c0000644000000000000000000000007413607166133024530 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.513555445 zfs-0.8.3/tests/zfs-tests/cmd/chg_usr_exec/chg_usr_exec.c0000644016037001603700000000353713607166133024535 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include #include #include #include #define EXECSHELL "/bin/sh" int main(int argc, char *argv[]) { char *plogin = NULL; char cmds[BUFSIZ] = { 0 }; char sep[] = " "; struct passwd *ppw = NULL; int i, len; if (argc < 3 || strlen(argv[1]) == 0) { (void) printf("\tUsage: %s ...\n", argv[0]); return (1); } plogin = argv[1]; len = 0; for (i = 2; i < argc; i++) { (void) snprintf(cmds+len, sizeof (cmds)-len, "%s%s", argv[i], sep); len += strlen(argv[i]) + strlen(sep); } if ((ppw = getpwnam(plogin)) == NULL) { perror("getpwnam"); return (errno); } if (setgid(ppw->pw_gid) != 0) { perror("setgid"); return (errno); } if (setuid(ppw->pw_uid) != 0) { perror("setuid"); return (errno); } if (execl(EXECSHELL, "sh", "-c", cmds, (char *)NULL) != 0) { perror("execl: " EXECSHELL); return (errno); } return (0); } zfs-0.8.3/tests/zfs-tests/cmd/chg_usr_exec/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612142777023772 xustar000000000000000030 mtime=1579730431.918219929 30 atime=1579730453.396909545 30 ctime=1579730473.510555349 zfs-0.8.3/tests/zfs-tests/cmd/chg_usr_exec/Makefile.in0000664016037001603700000007133613612142777024010 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = chg_usr_exec$(EXEEXT) subdir = tests/zfs-tests/cmd/chg_usr_exec ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_chg_usr_exec_OBJECTS = chg_usr_exec.$(OBJEXT) chg_usr_exec_OBJECTS = $(am_chg_usr_exec_OBJECTS) chg_usr_exec_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(chg_usr_exec_SOURCES) DIST_SOURCES = $(chg_usr_exec_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin chg_usr_exec_SOURCES = chg_usr_exec.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/chg_usr_exec/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/chg_usr_exec/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list chg_usr_exec$(EXEEXT): $(chg_usr_exec_OBJECTS) $(chg_usr_exec_DEPENDENCIES) @rm -f chg_usr_exec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(chg_usr_exec_OBJECTS) $(chg_usr_exec_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chg_usr_exec.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147021331 xustar000000000000000030 atime=1579730431.811216495 30 ctime=1579730473.399551784 zfs-0.8.3/tests/zfs-tests/cmd/Makefile.am0000644016037001603700000000061413607166147021327 0ustar00hutter2hutter200000000000000EXTRA_DIST = file_common.h SUBDIRS = \ chg_usr_exec \ user_ns_exec \ devname2devid \ dir_rd_update \ file_check \ file_trunc \ file_write \ largest_file \ libzfs_input_check \ mkbusy \ mkfile \ mkfiles \ mktree \ mmap_exec \ mmap_libaio \ mmapwrite \ nvlist_to_lua \ randfree_file \ randwritecomp \ readmmap \ rename_dir \ rm_lnkcnt_zero_file \ threadsappend \ xattrtest zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/mmap_libaio0000644000000000000000000000013213612143052021446 xustar000000000000000030 mtime=1579730474.242578851 30 atime=1579730489.097055805 30 ctime=1579730474.242578851 zfs-0.8.3/tests/zfs-tests/cmd/mmap_libaio/0000775016037001603700000000000013612143052021527 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/mmap_libaio/PaxHeaders.151519/mmap_libaio.c0000644000000000000000000000007413607166133024156 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.242578851 zfs-0.8.3/tests/zfs-tests/cmd/mmap_libaio/mmap_libaio.c0000644016037001603700000000417613607166133024163 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2018 Canonical. All rights reserved. */ #include #include #include #include #include #include #include #include #include io_context_t io_ctx; static void do_sync_io(struct iocb *iocb) { struct io_event event; struct iocb *iocbs[] = { iocb }; struct timespec ts = { 30, 0 }; if (io_submit(io_ctx, 1, iocbs) != 1) err(1, "io_submit failed"); if (io_getevents(io_ctx, 0, 1, &event, &ts) != 1) err(1, "io_getevents failed"); } int main(int argc, char **argv) { char *buf; int page_size = getpagesize(); int buf_size = strtol(argv[2], NULL, 0); int rwfd; struct iocb iocb; if (io_queue_init(1024, &io_ctx)) err(1, "io_queue_init failed"); rwfd = open(argv[1], O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); if (rwfd < 0) err(1, "open failed"); if (ftruncate(rwfd, buf_size) < 0) err(1, "ftruncate failed"); buf = mmap(0, page_size, PROT_READ | PROT_WRITE, MAP_SHARED, rwfd, 0); if (buf == MAP_FAILED) err(1, "mmap failed"); (void) io_prep_pwrite(&iocb, rwfd, buf, buf_size, 0); do_sync_io(&iocb); (void) io_prep_pread(&iocb, rwfd, buf, buf_size, 0); do_sync_io(&iocb); if (close(rwfd)) err(1, "close failed"); if (io_queue_release(io_ctx) != 0) err(1, "io_queue_release failed"); return (0); } zfs-0.8.3/tests/zfs-tests/cmd/mmap_libaio/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133023575 xustar000000000000000030 atime=1579730432.829249179 30 ctime=1579730474.238578723 zfs-0.8.3/tests/zfs-tests/cmd/mmap_libaio/Makefile.am0000644016037001603700000000032313607166133023570 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin if WANT_MMAP_LIBAIO pkgexec_PROGRAMS = mmap_libaio mmap_libaio_SOURCES = mmap_libaio.c mmap_libaio_LDADD = $(LIBAIO) endif zfs-0.8.3/tests/zfs-tests/cmd/mmap_libaio/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000023561 xustar000000000000000030 mtime=1579730432.884250945 30 atime=1579730453.818923095 30 ctime=1579730474.240578787 zfs-0.8.3/tests/zfs-tests/cmd/mmap_libaio/Makefile.in0000664016037001603700000007172513612143000023601 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am @WANT_MMAP_LIBAIO_TRUE@pkgexec_PROGRAMS = mmap_libaio$(EXEEXT) subdir = tests/zfs-tests/cmd/mmap_libaio ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am__mmap_libaio_SOURCES_DIST = mmap_libaio.c @WANT_MMAP_LIBAIO_TRUE@am_mmap_libaio_OBJECTS = mmap_libaio.$(OBJEXT) mmap_libaio_OBJECTS = $(am_mmap_libaio_OBJECTS) am__DEPENDENCIES_1 = @WANT_MMAP_LIBAIO_TRUE@mmap_libaio_DEPENDENCIES = \ @WANT_MMAP_LIBAIO_TRUE@ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(mmap_libaio_SOURCES) DIST_SOURCES = $(am__mmap_libaio_SOURCES_DIST) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin @WANT_MMAP_LIBAIO_TRUE@mmap_libaio_SOURCES = mmap_libaio.c @WANT_MMAP_LIBAIO_TRUE@mmap_libaio_LDADD = $(LIBAIO) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mmap_libaio/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mmap_libaio/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list mmap_libaio$(EXEEXT): $(mmap_libaio_OBJECTS) $(mmap_libaio_DEPENDENCIES) @rm -f mmap_libaio$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mmap_libaio_OBJECTS) $(mmap_libaio_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmap_libaio.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/mmap_exec0000644000000000000000000000013213612143052021133 xustar000000000000000030 mtime=1579730474.189577151 30 atime=1579730489.097055805 30 ctime=1579730474.189577151 zfs-0.8.3/tests/zfs-tests/cmd/mmap_exec/0000775016037001603700000000000013612143052021214 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/mmap_exec/PaxHeaders.151519/mmap_exec.c0000644000000000000000000000007413607166133023330 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.189577151 zfs-0.8.3/tests/zfs-tests/cmd/mmap_exec/mmap_exec.c0000644016037001603700000000324013607166133023324 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2013 by Delphix. All rights reserved. */ #include #include #include #include #include #include int main(int argc, char *argv[]) { int error, fd; struct stat statbuf; if (argc != 2) { (void) printf("Error: missing binary name.\n"); (void) printf("Usage:\n\t%s \n", argv[0]); return (1); } errno = 0; if ((fd = open(argv[1], O_RDONLY)) < 0) { error = errno; perror("open"); return (error); } if (fstat(fd, &statbuf) < 0) { error = errno; perror("fstat"); return (error); } if (mmap(0, statbuf.st_size, PROT_EXEC, MAP_SHARED, fd, 0) == MAP_FAILED) { error = errno; perror("mmap"); return (error); } return (0); } zfs-0.8.3/tests/zfs-tests/cmd/mmap_exec/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133023262 xustar000000000000000030 atime=1579730432.761246997 30 ctime=1579730474.185577021 zfs-0.8.3/tests/zfs-tests/cmd/mmap_exec/Makefile.am0000644016037001603700000000022513607166133023256 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = mmap_exec mmap_exec_SOURCES = mmap_exec.c zfs-0.8.3/tests/zfs-tests/cmd/mmap_exec/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000023246 xustar000000000000000030 mtime=1579730432.812248633 30 atime=1579730453.788922131 30 ctime=1579730474.187577085 zfs-0.8.3/tests/zfs-tests/cmd/mmap_exec/Makefile.in0000664016037001603700000007124213612143000023260 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = mmap_exec$(EXEEXT) subdir = tests/zfs-tests/cmd/mmap_exec ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_mmap_exec_OBJECTS = mmap_exec.$(OBJEXT) mmap_exec_OBJECTS = $(am_mmap_exec_OBJECTS) mmap_exec_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(mmap_exec_SOURCES) DIST_SOURCES = $(mmap_exec_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin mmap_exec_SOURCES = mmap_exec.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mmap_exec/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mmap_exec/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list mmap_exec$(EXEEXT): $(mmap_exec_OBJECTS) $(mmap_exec_DEPENDENCIES) @rm -f mmap_exec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mmap_exec_OBJECTS) $(mmap_exec_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mmap_exec.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/mkfile0000644000000000000000000000013213612143052020444 xustar000000000000000030 mtime=1579730474.028571981 30 atime=1579730489.097055805 30 ctime=1579730474.028571981 zfs-0.8.3/tests/zfs-tests/cmd/mkfile/0000775016037001603700000000000013612143052020525 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/mkfile/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166147022600 xustar000000000000000030 atime=1579730432.480237974 30 ctime=1579730474.024571853 zfs-0.8.3/tests/zfs-tests/cmd/mkfile/Makefile.am0000644016037001603700000000021413607166147022572 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = mkfile mkfile_SOURCES = mkfile.c zfs-0.8.3/tests/zfs-tests/cmd/mkfile/PaxHeaders.151519/mkfile.c0000644000000000000000000000007413607166147022157 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.028571981 zfs-0.8.3/tests/zfs-tests/cmd/mkfile/mkfile.c0000644016037001603700000001346613607166147022166 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include #include #include #include #include #include #include #include #include #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define BLOCK_SIZE 512 /* bytes */ #define KILOBYTE 1024 #define MEGABYTE (KILOBYTE * KILOBYTE) #define GIGABYTE (KILOBYTE * MEGABYTE) #define FILE_MODE (S_ISVTX + S_IRUSR + S_IWUSR) typedef long long offset_t; static void usage(void); int main(int argc, char **argv) { char *opts; off_t size; size_t len; size_t mult = 1; char *buf = NULL; size_t bufsz = 0; int errors = 0; int i; int verbose = 0; /* option variable */ int nobytes = 0; /* option variable */ int saverr; if (argc == 1) usage(); while (argv[1] && argv[1][0] == '-') { opts = &argv[1][0]; while (*(++opts)) { switch (*opts) { case 'v': verbose++; break; case 'n': nobytes++; break; default: usage(); } } argc--; argv++; } if (argc < 3) usage(); len = strlen(argv[1]); if (len && isalpha(argv[1][len-1])) { switch (argv[1][len-1]) { case 'k': case 'K': mult = KILOBYTE; break; case 'b': case 'B': mult = BLOCK_SIZE; break; case 'm': case 'M': mult = MEGABYTE; break; case 'g': case 'G': mult = GIGABYTE; break; default: (void) fprintf(stderr, gettext("unknown size %s\n"), argv[1]); usage(); } for (i = 0; i <= (len-2); i++) { if (!isdigit(argv[1][i])) { (void) fprintf(stderr, gettext("unknown size %s\n"), argv[1]); usage(); } } argv[1][len-1] = '\0'; } size = ((off_t)atoll(argv[1]) * (off_t)mult); argv++; argc--; while (argc > 1) { int fd; if (verbose) (void) fprintf(stdout, gettext("%s %lld bytes\n"), argv[1], (offset_t)size); fd = open(argv[1], O_CREAT|O_TRUNC|O_RDWR, FILE_MODE); if (fd < 0) { saverr = errno; (void) fprintf(stderr, gettext("Could not open %s: %s\n"), argv[1], strerror(saverr)); errors++; argv++; argc--; continue; } if (lseek(fd, (off_t)size-1, SEEK_SET) < 0) { saverr = errno; (void) fprintf(stderr, gettext( "Could not seek to offset %ld in %s: %s\n"), (unsigned long)size-1, argv[1], strerror(saverr)); (void) close(fd); errors++; argv++; argc--; continue; } else if (write(fd, "", 1) != 1) { saverr = errno; (void) fprintf(stderr, gettext( "Could not set length of %s: %s\n"), argv[1], strerror(saverr)); (void) close(fd); errors++; argv++; argc--; continue; } if (!nobytes) { off_t written = 0; struct stat64 st; if (lseek(fd, (off_t)0, SEEK_SET) < 0) { saverr = errno; (void) fprintf(stderr, gettext( "Could not seek to beginning of %s: %s\n"), argv[1], strerror(saverr)); (void) close(fd); errors++; argv++; argc--; continue; } if (fstat64(fd, &st) < 0) { saverr = errno; (void) fprintf(stderr, gettext( "Could not fstat64 %s: %s\n"), argv[1], strerror(saverr)); (void) close(fd); errors++; argv++; argc--; continue; } if (bufsz != st.st_blksize) { if (buf) free(buf); bufsz = (size_t)st.st_blksize; buf = calloc(1, bufsz); if (buf == NULL) { (void) fprintf(stderr, gettext( "Could not allocate buffer of" " size %d\n"), (int)bufsz); (void) close(fd); bufsz = 0; errors++; argv++; argc--; continue; } } while (written < size) { ssize_t result; size_t bytes = (size_t)MIN(bufsz, size-written); if ((result = write(fd, buf, bytes)) != (ssize_t)bytes) { saverr = errno; if (result < 0) result = 0; written += result; (void) fprintf(stderr, gettext( "%s: initialized %lu of %lu bytes: %s\n"), argv[1], (unsigned long)written, (unsigned long)size, strerror(saverr)); errors++; break; } written += bytes; } /* * A write(2) call in the above loop failed so * close out this file and go on (error was * already incremented when the write(2) failed). */ if (written < size) { (void) close(fd); argv++; argc--; continue; } } if (close(fd) < 0) { saverr = errno; (void) fprintf(stderr, gettext( "Error encountered when closing %s: %s\n"), argv[1], strerror(saverr)); errors++; argv++; argc--; continue; } /* * Only set the modes (including the sticky bit) if we * had no problems. It is not an error for the chmod(2) * to fail, but do issue a warning. */ if (chmod(argv[1], FILE_MODE) < 0) (void) fprintf(stderr, gettext( "warning: couldn't set mode to %#o\n"), FILE_MODE); argv++; argc--; } return (errors); } static void usage() { (void) fprintf(stderr, gettext( "Usage: mkfile [-nv] [g|k|b|m] [] ...\n")); exit(1); /* NOTREACHED */ } zfs-0.8.3/tests/zfs-tests/cmd/mkfile/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000022557 xustar000000000000000030 mtime=1579730432.577241089 30 atime=1579730453.699919273 30 ctime=1579730474.026571917 zfs-0.8.3/tests/zfs-tests/cmd/mkfile/Makefile.in0000664016037001603700000007114613612143000022574 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = mkfile$(EXEEXT) subdir = tests/zfs-tests/cmd/mkfile ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_mkfile_OBJECTS = mkfile.$(OBJEXT) mkfile_OBJECTS = $(am_mkfile_OBJECTS) mkfile_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(mkfile_SOURCES) DIST_SOURCES = $(mkfile_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin mkfile_SOURCES = mkfile.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mkfile/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/mkfile/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list mkfile$(EXEEXT): $(mkfile_OBJECTS) $(mkfile_DEPENDENCIES) @rm -f mkfile$(EXEEXT) $(AM_V_CCLD)$(LINK) $(mkfile_OBJECTS) $(mkfile_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkfile.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/file_write0000644000000000000000000000013213612143051021325 xustar000000000000000030 mtime=1579730473.822565367 30 atime=1579730489.097055805 30 ctime=1579730473.822565367 zfs-0.8.3/tests/zfs-tests/cmd/file_write/0000775016037001603700000000000013612143051021406 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/file_write/PaxHeaders.151519/file_write.c0000644000000000000000000000007413607166147023723 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.822565367 zfs-0.8.3/tests/zfs-tests/cmd/file_write/file_write.c0000644016037001603700000001345213607166147023725 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include "../file_common.h" #include #include #include #include #include #include #include #include typedef unsigned char uchar_t; typedef long long longlong_t; typedef longlong_t offset_t; static unsigned char bigbuffer[BIGBUFFERSIZE]; /* * Writes (or appends) a given value to a file repeatedly. * See header file for defaults. */ static void usage(char *); /* * psudo-randomize the buffer */ void randomize_buffer(int block_size) { int i; char rnd = rand() & 0xff; for (i = 0; i < block_size; i++) bigbuffer[i] ^= rnd; } int main(int argc, char **argv) { int bigfd; int c; int oflag = 0; int err = 0; int k; long i; int64_t good_writes = 0; uchar_t nxtfillchar; char *prog = argv[0]; /* * Default Parameters */ int write_count = BIGFILESIZE; uchar_t fillchar = DATA; int block_size = BLOCKSZ; char *filename = NULL; char *operation = NULL; offset_t noffset, offset = 0; int verbose = 0; int rsync = 0; int wsync = 0; /* * Process Arguments */ while ((c = getopt(argc, argv, "b:c:d:s:f:o:vwr")) != -1) { switch (c) { case 'b': block_size = atoi(optarg); break; case 'c': write_count = atoi(optarg); break; case 'd': if (optarg[0] == 'R') fillchar = 'R'; /* R = random data */ else fillchar = atoi(optarg); break; case 's': offset = atoll(optarg); break; case 'f': filename = optarg; break; case 'o': operation = optarg; break; case 'v': verbose = 1; break; case 'w': wsync = 1; break; case 'r': rsync = 1; break; case '?': (void) printf("unknown arg %c\n", optopt); usage(prog); break; } } /* * Validate Parameters */ if (!filename) { (void) printf("Filename not specified (-f )\n"); err++; } if (!operation) { (void) printf("Operation not specified (-o ).\n"); err++; } if (block_size > BIGBUFFERSIZE) { (void) printf("block_size is too large max==%d.\n", BIGBUFFERSIZE); err++; } if (err) { usage(prog); /* no return */ return (1); } /* * Prepare the buffer and determine the requested operation */ nxtfillchar = fillchar; k = 0; if (fillchar == 'R') srand(time(NULL)); for (i = 0; i < block_size; i++) { bigbuffer[i] = nxtfillchar; if (fillchar == 0) { if ((k % DATA_RANGE) == 0) { k = 0; } nxtfillchar = k++; } else if (fillchar == 'R') { nxtfillchar = rand() & 0xff; } } /* * using the strncmp of operation will make the operation match the * first shortest match - as the operations are unique from the first * character this means that we match single character operations */ if ((strncmp(operation, "create", strlen(operation) + 1)) == 0 || (strncmp(operation, "overwrite", strlen(operation) + 1)) == 0) { oflag = (O_RDWR|O_CREAT); } else if ((strncmp(operation, "append", strlen(operation) + 1)) == 0) { oflag = (O_RDWR|O_APPEND); } else { (void) printf("valid operations are not '%s'\n", operation); usage(prog); } if (rsync) { oflag = oflag | O_RSYNC; } if (wsync) { oflag = oflag | O_SYNC; } /* * Given an operation (create/overwrite/append), open the file * accordingly and perform a write of the appropriate type. */ if ((bigfd = open(filename, oflag, 0666)) == -1) { (void) printf("open %s: failed [%s]%d. Aborting!\n", filename, strerror(errno), errno); exit(errno); } noffset = lseek64(bigfd, offset, SEEK_SET); if (noffset != offset) { (void) printf("llseek %s (%lld/%lld) failed [%s]%d.Aborting!\n", filename, offset, noffset, strerror(errno), errno); exit(errno); } if (verbose) { (void) printf("%s: block_size = %d, write_count = %d, " "offset = %lld, ", filename, block_size, write_count, offset); if (fillchar == 'R') { (void) printf("data = [random]\n"); } else { (void) printf("data = %s%d\n", (fillchar == 0) ? "0->" : "", (fillchar == 0) ? DATA_RANGE : fillchar); } } for (i = 0; i < write_count; i++) { ssize_t n; if (fillchar == 'R') randomize_buffer(block_size); if ((n = write(bigfd, &bigbuffer, block_size)) == -1) { (void) printf("write failed (%ld), good_writes = %" PRId64 ", " "error: %s[%d]\n", (long)n, good_writes, strerror(errno), errno); exit(errno); } good_writes++; } if (verbose) { (void) printf("Success: good_writes = %" PRId64 "(%" PRId64 ")\n", good_writes, (good_writes * block_size)); } return (0); } static void usage(char *prog) { (void) printf("Usage: %s [-v] -o {create,overwrite,append} -f file_name" " [-b block_size]\n" "\t[-s offset] [-c write_count] [-d data]\n\n" "Where [data] equal to zero causes chars " "0->%d to be repeated throughout, or [data]\n" "equal to 'R' for psudorandom data.\n", prog, DATA_RANGE); exit(1); } zfs-0.8.3/tests/zfs-tests/cmd/file_write/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133023455 xustar000000000000000030 atime=1579730432.208229241 30 ctime=1579730473.818565239 zfs-0.8.3/tests/zfs-tests/cmd/file_write/Makefile.am0000644016037001603700000000023013607166133023445 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = file_write file_write_SOURCES = file_write.c zfs-0.8.3/tests/zfs-tests/cmd/file_write/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000023441 xustar000000000000000030 mtime=1579730432.259230879 30 atime=1579730453.582915517 30 ctime=1579730473.820565303 zfs-0.8.3/tests/zfs-tests/cmd/file_write/Makefile.in0000664016037001603700000007126613612143000023461 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = file_write$(EXEEXT) subdir = tests/zfs-tests/cmd/file_write ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_file_write_OBJECTS = file_write.$(OBJEXT) file_write_OBJECTS = $(am_file_write_OBJECTS) file_write_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(file_write_SOURCES) DIST_SOURCES = $(file_write_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin file_write_SOURCES = file_write.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/file_write/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/file_write/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list file_write$(EXEEXT): $(file_write_OBJECTS) $(file_write_DEPENDENCIES) @rm -f file_write$(EXEEXT) $(AM_V_CCLD)$(LINK) $(file_write_OBJECTS) $(file_write_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_write.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/rm_lnkcnt_zero_file0000644000000000000000000000013213612143052023222 xustar000000000000000030 mtime=1579730474.624591118 30 atime=1579730489.097055805 30 ctime=1579730474.624591118 zfs-0.8.3/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/0000775016037001603700000000000013612143052023303 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133025351 xustar000000000000000030 atime=1579730433.310264623 30 ctime=1579730474.619590957 zfs-0.8.3/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/Makefile.am0000644016037001603700000000033113607166133025343 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = rm_lnkcnt_zero_file rm_lnkcnt_zero_file_SOURCES = rm_lnkcnt_zero_file.c rm_lnkcnt_zero_file_LDADD = -lpthread zfs-0.8.3/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/PaxHeaders.151519/rm_lnkcnt_zero_file.c0000644000000000000000000000007413612141512027474 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.624591118 zfs-0.8.3/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/rm_lnkcnt_zero_file.c0000644016037001603700000000640413612141512027475 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Copyright (c) 2012 by Delphix. All rights reserved. */ /* * -------------------------------------------------------------------- * The purpose of this test is to see if the bug reported (#4723351) for * UFS exists when using a ZFS file system. * -------------------------------------------------------------------- * */ #define _REENTRANT 1 #include #include #include #include #include #include #include #include #include #include static char *filebase; static int pickidx(void) { return (random() % 1000); } /* ARGSUSED */ static void * mover(void *a) { char buf[256]; int idx, len, ret; len = strlen(filebase) + 5; for (;;) { idx = pickidx(); (void) snprintf(buf, len, "%s.%03d", filebase, idx); ret = rename(filebase, buf); if (ret < 0 && errno != ENOENT) (void) perror("renaming file"); } return (NULL); } /* ARGSUSED */ static void * cleaner(void *a) { char buf[256]; int idx, len, ret; len = strlen(filebase) + 5; for (;;) { idx = pickidx(); (void) snprintf(buf, len, "%s.%03d", filebase, idx); ret = remove(buf); if (ret < 0 && errno != ENOENT) (void) perror("removing file"); } return (NULL); } static void * writer(void *a) { int *fd = (int *)a; int ret; for (;;) { if (*fd != -1) (void) close (*fd); *fd = open(filebase, O_APPEND | O_RDWR | O_CREAT, 0644); if (*fd == -1) { perror("fail to open test file, refreshing it"); continue; } ret = write(*fd, "test\n", 5); if (ret != 5) perror("writing file"); } return (NULL); } int main(int argc, char **argv) { int fd; pthread_t tid; if (argc == 1) { (void) printf("Usage: %s \n", argv[0]); exit(-1); } filebase = argv[1]; fd = open(filebase, O_APPEND | O_RDWR | O_CREAT, 0644); if (fd < 0) { perror("creating test file"); exit(-1); } (void) pthread_setconcurrency(4); /* 3 threads + main */ (void) pthread_create(&tid, NULL, mover, NULL); (void) pthread_create(&tid, NULL, cleaner, NULL); (void) pthread_create(&tid, NULL, writer, (void *) &fd); for (;;) { int ret; struct stat st; ret = stat(filebase, &st); if (ret == 0 && (st.st_nlink > 2 || st.st_nlink < 1)) { (void) printf("st.st_nlink = %d, exiting\n", \ (int)st.st_nlink); exit(0); } (void) sleep(1); } return (0); } zfs-0.8.3/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001025336 xustar000000000000000030 mtime=1579730433.362266293 30 atime=1579730454.028929837 30 ctime=1579730474.622591054 zfs-0.8.3/tests/zfs-tests/cmd/rm_lnkcnt_zero_file/Makefile.in0000664016037001603700000007161613612143001025355 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = rm_lnkcnt_zero_file$(EXEEXT) subdir = tests/zfs-tests/cmd/rm_lnkcnt_zero_file ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_rm_lnkcnt_zero_file_OBJECTS = rm_lnkcnt_zero_file.$(OBJEXT) rm_lnkcnt_zero_file_OBJECTS = $(am_rm_lnkcnt_zero_file_OBJECTS) rm_lnkcnt_zero_file_DEPENDENCIES = AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(rm_lnkcnt_zero_file_SOURCES) DIST_SOURCES = $(rm_lnkcnt_zero_file_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin rm_lnkcnt_zero_file_SOURCES = rm_lnkcnt_zero_file.c rm_lnkcnt_zero_file_LDADD = -lpthread all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/rm_lnkcnt_zero_file/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/rm_lnkcnt_zero_file/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list rm_lnkcnt_zero_file$(EXEEXT): $(rm_lnkcnt_zero_file_OBJECTS) $(rm_lnkcnt_zero_file_DEPENDENCIES) @rm -f rm_lnkcnt_zero_file$(EXEEXT) $(AM_V_CCLD)$(LINK) $(rm_lnkcnt_zero_file_OBJECTS) $(rm_lnkcnt_zero_file_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rm_lnkcnt_zero_file.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/user_ns_exec0000644000000000000000000000013213612143051021656 xustar000000000000000030 mtime=1579730473.561556985 30 atime=1579730489.097055805 30 ctime=1579730473.561556985 zfs-0.8.3/tests/zfs-tests/cmd/user_ns_exec/0000775016037001603700000000000013612143051021737 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/user_ns_exec/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133024006 xustar000000000000000030 atime=1579730433.447269023 30 ctime=1579730473.556556825 zfs-0.8.3/tests/zfs-tests/cmd/user_ns_exec/Makefile.am0000644016037001603700000000023613607166133024004 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = user_ns_exec user_ns_exec_SOURCES = user_ns_exec.c zfs-0.8.3/tests/zfs-tests/cmd/user_ns_exec/PaxHeaders.151519/user_ns_exec.c0000644000000000000000000000007413607166133024600 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.561556985 zfs-0.8.3/tests/zfs-tests/cmd/user_ns_exec/user_ns_exec.c0000644016037001603700000000714213607166133024601 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ #include #include #include #include #include #include #include #include #include #include #include #include #define EXECSHELL "/bin/sh" #define UIDMAP "0 100000 65536" static int child_main(int argc, char *argv[], int sync_pipe) { char sync_buf; char cmds[BUFSIZ] = { 0 }; char sep[] = " "; int i, len; if (unshare(CLONE_NEWUSER | CLONE_NEWNS) != 0) { perror("unshare"); return (1); } /* tell parent we entered the new namespace */ if (write(sync_pipe, "1", 1) != 1) { perror("write"); return (1); } /* wait for parent to setup the uid mapping */ if (read(sync_pipe, &sync_buf, 1) != 1) { (void) fprintf(stderr, "user namespace setup failed\n"); return (1); } close(sync_pipe); if (setuid(0) != 0) { perror("setuid"); return (1); } if (setgid(0) != 0) { perror("setgid"); return (1); } len = 0; for (i = 1; i < argc; i++) { (void) snprintf(cmds+len, sizeof (cmds)-len, "%s%s", argv[i], sep); len += strlen(argv[i]) + strlen(sep); } if (execl(EXECSHELL, "sh", "-c", cmds, (char *)NULL) != 0) { perror("execl: " EXECSHELL); return (1); } return (0); } static int set_idmap(pid_t pid, const char *file) { int result = 0; int mapfd; char path[PATH_MAX]; (void) snprintf(path, sizeof (path), "/proc/%d/%s", (int)pid, file); mapfd = open(path, O_WRONLY); if (mapfd < 0) { result = errno; perror("open"); return (errno); } if (write(mapfd, UIDMAP, sizeof (UIDMAP)-1) != sizeof (UIDMAP)-1) { perror("write"); result = (errno); } close(mapfd); return (result); } int main(int argc, char *argv[]) { char sync_buf; int result, wstatus; int syncfd[2]; pid_t child; if (argc < 2 || strlen(argv[1]) == 0) { (void) printf("\tUsage: %s ...\n", argv[0]); return (1); } if (socketpair(AF_UNIX, SOCK_STREAM, 0, syncfd) != 0) { perror("socketpair"); return (1); } child = fork(); if (child == (pid_t)-1) { perror("fork"); return (1); } if (child == 0) { close(syncfd[0]); return (child_main(argc, argv, syncfd[1])); } close(syncfd[1]); result = 0; /* wait for the child to have unshared its namespaces */ if (read(syncfd[0], &sync_buf, 1) != 1) { perror("read"); kill(child, SIGKILL); result = 1; goto reap; } /* write uid mapping */ if (set_idmap(child, "uid_map") != 0 || set_idmap(child, "gid_map") != 0) { result = 1; kill(child, SIGKILL); goto reap; } /* tell the child to proceed */ if (write(syncfd[0], "1", 1) != 1) { perror("write"); kill(child, SIGKILL); result = 1; goto reap; } close(syncfd[0]); reap: while (waitpid(child, &wstatus, 0) != child) kill(child, SIGKILL); if (result == 0) result = WEXITSTATUS(wstatus); return (result); } zfs-0.8.3/tests/zfs-tests/cmd/user_ns_exec/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143001023773 xustar000000000000000030 mtime=1579730433.498270659 30 atime=1579730453.427910541 30 ctime=1579730473.558556889 zfs-0.8.3/tests/zfs-tests/cmd/user_ns_exec/Makefile.in0000664016037001603700000007133613612143001024011 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = user_ns_exec$(EXEEXT) subdir = tests/zfs-tests/cmd/user_ns_exec ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_user_ns_exec_OBJECTS = user_ns_exec.$(OBJEXT) user_ns_exec_OBJECTS = $(am_user_ns_exec_OBJECTS) user_ns_exec_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(user_ns_exec_SOURCES) DIST_SOURCES = $(user_ns_exec_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin user_ns_exec_SOURCES = user_ns_exec.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/user_ns_exec/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/user_ns_exec/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list user_ns_exec$(EXEEXT): $(user_ns_exec_OBJECTS) $(user_ns_exec_DEPENDENCIES) @rm -f user_ns_exec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(user_ns_exec_OBJECTS) $(user_ns_exec_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/user_ns_exec.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/file_check0000644000000000000000000000013213612143051021250 xustar000000000000000030 mtime=1579730473.722562155 30 atime=1579730489.097055805 30 ctime=1579730473.722562155 zfs-0.8.3/tests/zfs-tests/cmd/file_check/0000775016037001603700000000000013612143051021331 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/file_check/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133023400 xustar000000000000000030 atime=1579730432.072224875 30 ctime=1579730473.717561995 zfs-0.8.3/tests/zfs-tests/cmd/file_check/Makefile.am0000644016037001603700000000023013607166133023370 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = file_check file_check_SOURCES = file_check.c zfs-0.8.3/tests/zfs-tests/cmd/file_check/PaxHeaders.151519/file_check.c0000644000000000000000000000007413607166133023564 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730473.722562155 zfs-0.8.3/tests/zfs-tests/cmd/file_check/file_check.c0000644016037001603700000000416513607166133023567 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #include "../file_common.h" static unsigned char bigbuffer[BIGBUFFERSIZE]; /* * Given a filename, check that the file consists entirely * of a particular pattern. If the pattern is not specified a * default will be used. For default values see file_common.h */ int main(int argc, char **argv) { int bigfd; long i, n; unsigned char fillchar = DATA; int bigbuffersize = BIGBUFFERSIZE; int64_t read_count = 0; /* * Validate arguments */ if (argc < 2) { (void) printf("Usage: %s filename [pattern]\n", argv[0]); exit(1); } if (argv[2]) { fillchar = atoi(argv[2]); } /* * Read the file contents and check every character * against the supplied pattern. Abort if the * pattern check fails. */ if ((bigfd = open(argv[1], O_RDONLY)) == -1) { (void) printf("open %s failed %d\n", argv[1], errno); exit(1); } do { if ((n = read(bigfd, &bigbuffer, bigbuffersize)) == -1) { (void) printf("read failed (%ld), %d\n", n, errno); exit(errno); } for (i = 0; i < n; i++) { if (bigbuffer[i] != fillchar) { (void) printf("error %s: 0x%x != 0x%x)\n", argv[1], bigbuffer[i], fillchar); exit(1); } } read_count += n; } while (n == bigbuffersize); return (0); } zfs-0.8.3/tests/zfs-tests/cmd/file_check/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000023364 xustar000000000000000030 mtime=1579730432.123226511 30 atime=1579730453.519913495 30 ctime=1579730473.720562091 zfs-0.8.3/tests/zfs-tests/cmd/file_check/Makefile.in0000664016037001603700000007126613612143000023404 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = file_check$(EXEEXT) subdir = tests/zfs-tests/cmd/file_check ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_file_check_OBJECTS = file_check.$(OBJEXT) file_check_OBJECTS = $(am_file_check_OBJECTS) file_check_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(file_check_SOURCES) DIST_SOURCES = $(file_check_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin file_check_SOURCES = file_check.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/file_check/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/file_check/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list file_check$(EXEEXT): $(file_check_OBJECTS) $(file_check_DEPENDENCIES) @rm -f file_check$(EXEEXT) $(AM_V_CCLD)$(LINK) $(file_check_OBJECTS) $(file_check_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_check.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/dir_rd_update0000644000000000000000000000013013612143051021777 xustar000000000000000029 mtime=1579730473.67256055 30 atime=1579730489.097055805 29 ctime=1579730473.67256055 zfs-0.8.3/tests/zfs-tests/cmd/dir_rd_update/0000775016037001603700000000000013612143051022062 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/dir_rd_update/PaxHeaders.151519/dir_rd_update.c0000644000000000000000000000007313607166133025045 xustar000000000000000030 atime=1579730360.849765597 29 ctime=1579730473.67256055 zfs-0.8.3/tests/zfs-tests/cmd/dir_rd_update/dir_rd_update.c0000644016037001603700000000622513607166133025050 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * Assertion: * * A read operation and directory update operation performed * concurrently on the same directory can lead to deadlock * on a UFS logging file system, but not on a ZFS file system. */ #include #include #include #include #include #include #include #include #define TMP_DIR /tmp static char dirpath[256]; int main(int argc, char **argv) { char *cp1 = ""; int i = 0; int ret = 0; int testdd = 0; pid_t pid; static const int op_num = 5; if (argc == 1) { (void) printf("Usage: %s \n", argv[0]); exit(-1); } for (i = 0; i < 256; i++) { dirpath[i] = 0; } cp1 = argv[1]; if (strlen(cp1) >= (sizeof (dirpath) - strlen("TMP_DIR"))) { (void) printf("The string length of mount point is " "too large\n"); exit(-1); } (void) strcpy(&dirpath[0], (const char *)cp1); (void) strcat(&dirpath[strlen(dirpath)], "TMP_DIR"); ret = mkdir(dirpath, 0777); if (ret != 0) { if (errno != EEXIST) { (void) printf("%s: mkdir(<%s>, 0777) failed: errno " "(decimal)=%d\n", argv[0], dirpath, errno); exit(-1); } } testdd = open(dirpath, O_RDONLY|O_RSYNC|O_SYNC|O_DSYNC); if (testdd < 0) { (void) printf("%s: open(<%s>, O_RDONLY|O_RSYNC|O_SYNC|O_DSYNC)" " failed: errno (decimal)=%d\n", argv[0], dirpath, errno); exit(-1); } else { (void) close(testdd); } pid = fork(); if (pid > 0) { int fd = open(dirpath, O_RDONLY|O_RSYNC|O_SYNC|O_DSYNC); char buf[16]; int rdret; int j = 0; if (fd < 0) { (void) printf("%s: open <%s> again failed:" " errno = %d\n", argv[0], dirpath, errno); exit(-1); } while (j < op_num) { (void) sleep(1); rdret = read(fd, buf, 16); if (rdret == -1) { (void) printf("readdir failed"); } j++; } (void) close(fd); } else if (pid == 0) { int fd = open(dirpath, O_RDONLY); int chownret; int k = 0; if (fd < 0) { (void) printf("%s: open(<%s>, O_RDONLY) again failed:" " errno (decimal)=%d\n", argv[0], dirpath, errno); exit(-1); } while (k < op_num) { (void) sleep(1); chownret = fchown(fd, 0, 0); if (chownret == -1) { (void) printf("chown failed"); } k++; } (void) close(fd); } return (0); } zfs-0.8.3/tests/zfs-tests/cmd/dir_rd_update/PaxHeaders.151519/Makefile.am0000644000000000000000000000007413607166133024131 xustar000000000000000030 atime=1579730432.004222691 30 ctime=1579730473.668560422 zfs-0.8.3/tests/zfs-tests/cmd/dir_rd_update/Makefile.am0000644016037001603700000000024113607166133024123 0ustar00hutter2hutter200000000000000include $(top_srcdir)/config/Rules.am pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin pkgexec_PROGRAMS = dir_rd_update dir_rd_update_SOURCES = dir_rd_update.c zfs-0.8.3/tests/zfs-tests/cmd/dir_rd_update/PaxHeaders.151519/Makefile.in0000644000000000000000000000013213612143000024115 xustar000000000000000030 mtime=1579730432.055224329 30 atime=1579730453.489912531 30 ctime=1579730473.670560486 zfs-0.8.3/tests/zfs-tests/cmd/dir_rd_update/Makefile.in0000664016037001603700000007136213612143000024132 0ustar00hutter2hutter200000000000000# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # # Default build rules for all user space components, every Makefile.am # should include these rules and override or extend them as needed. # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(top_srcdir)/config/Rules.am pkgexec_PROGRAMS = dir_rd_update$(EXEEXT) subdir = tests/zfs-tests/cmd/dir_rd_update ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/config/always-arch.m4 \ $(top_srcdir)/config/always-compiler-options.m4 \ $(top_srcdir)/config/always-python.m4 \ $(top_srcdir)/config/always-pyzfs.m4 \ $(top_srcdir)/config/ax_code_coverage.m4 \ $(top_srcdir)/config/ax_python_devel.m4 \ $(top_srcdir)/config/ax_restore_flags.m4 \ $(top_srcdir)/config/ax_save_flags.m4 \ $(top_srcdir)/config/find_system_library.m4 \ $(top_srcdir)/config/gettext.m4 \ $(top_srcdir)/config/host-cpu-c-abi.m4 \ $(top_srcdir)/config/iconv.m4 \ $(top_srcdir)/config/intlmacosx.m4 \ $(top_srcdir)/config/kernel-access-ok-type.m4 \ $(top_srcdir)/config/kernel-acl.m4 \ $(top_srcdir)/config/kernel-aio-fsync.m4 \ $(top_srcdir)/config/kernel-automount.m4 \ $(top_srcdir)/config/kernel-bdev-logical-size.m4 \ $(top_srcdir)/config/kernel-bdev-physical-size.m4 \ $(top_srcdir)/config/kernel-bdi.m4 \ $(top_srcdir)/config/kernel-bio-bvec-iter.m4 \ $(top_srcdir)/config/kernel-bio-end-io-t-args.m4 \ $(top_srcdir)/config/kernel-bio-failfast.m4 \ $(top_srcdir)/config/kernel-bio-op.m4 \ $(top_srcdir)/config/kernel-bio-rw-barrier.m4 \ $(top_srcdir)/config/kernel-bio-rw-discard.m4 \ $(top_srcdir)/config/kernel-bio_set_dev.m4 \ $(top_srcdir)/config/kernel-blk-queue-bdi.m4 \ $(top_srcdir)/config/kernel-blk-queue-discard.m4 \ $(top_srcdir)/config/kernel-blk-queue-flags.m4 \ $(top_srcdir)/config/kernel-blk-queue-flush.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-hw-sectors.m4 \ $(top_srcdir)/config/kernel-blk-queue-max-segments.m4 \ $(top_srcdir)/config/kernel-blk-queue-unplug.m4 \ $(top_srcdir)/config/kernel-blkdev-get-by-path.m4 \ $(top_srcdir)/config/kernel-blkdev-reread-part.m4 \ $(top_srcdir)/config/kernel-block-device-operations.m4 \ $(top_srcdir)/config/kernel-clear-inode.m4 \ $(top_srcdir)/config/kernel-commit-metadata.m4 \ $(top_srcdir)/config/kernel-config-defined.m4 \ $(top_srcdir)/config/kernel-create-nameidata.m4 \ $(top_srcdir)/config/kernel-ctl-table-name.m4 \ $(top_srcdir)/config/kernel-current-time.m4 \ $(top_srcdir)/config/kernel-current_bio_tail.m4 \ $(top_srcdir)/config/kernel-declare-event-class.m4 \ $(top_srcdir)/config/kernel-dentry-operations.m4 \ $(top_srcdir)/config/kernel-dirty-inode.m4 \ $(top_srcdir)/config/kernel-discard-granularity.m4 \ $(top_srcdir)/config/kernel-encode-fh-inode.m4 \ $(top_srcdir)/config/kernel-evict-inode.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-file-dentry.m4 \ $(top_srcdir)/config/kernel-file-inode.m4 \ $(top_srcdir)/config/kernel-fmode-t.m4 \ $(top_srcdir)/config/kernel-follow-down-one.m4 \ $(top_srcdir)/config/kernel-fpu.m4 \ $(top_srcdir)/config/kernel-fst-mount.m4 \ $(top_srcdir)/config/kernel-fsync.m4 \ $(top_srcdir)/config/kernel-generic_io_acct.m4 \ $(top_srcdir)/config/kernel-generic_readlink.m4 \ $(top_srcdir)/config/kernel-get-disk-and-module.m4 \ $(top_srcdir)/config/kernel-get-disk-ro.m4 \ $(top_srcdir)/config/kernel-get-link.m4 \ $(top_srcdir)/config/kernel-global_page_state.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-in-compat-syscall.m4 \ $(top_srcdir)/config/kernel-inode-getattr.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-set-flags.m4 \ $(top_srcdir)/config/kernel-inode-set-iversion.m4 \ $(top_srcdir)/config/kernel-inode-times.m4 \ $(top_srcdir)/config/kernel-insert-inode-locked.m4 \ $(top_srcdir)/config/kernel-invalidate-bdev-args.m4 \ $(top_srcdir)/config/kernel-is_owner_or_cap.m4 \ $(top_srcdir)/config/kernel-kmap-atomic-args.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kstrtoul.m4 \ $(top_srcdir)/config/kernel-ktime_get_coarse_real_ts64.m4 \ $(top_srcdir)/config/kernel-kuid-helpers.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-lookup-bdev.m4 \ $(top_srcdir)/config/kernel-lookup-nameidata.m4 \ $(top_srcdir)/config/kernel-lseek-execute.m4 \ $(top_srcdir)/config/kernel-make-request-fn.m4 \ $(top_srcdir)/config/kernel-misc-minor.m4 \ $(top_srcdir)/config/kernel-mkdir-umode-t.m4 \ $(top_srcdir)/config/kernel-mod-param.m4 \ $(top_srcdir)/config/kernel-objtool.m4 \ $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-put-link.m4 \ $(top_srcdir)/config/kernel-rename.m4 \ $(top_srcdir)/config/kernel-rw.m4 \ $(top_srcdir)/config/kernel-rwsem.m4 \ $(top_srcdir)/config/kernel-sched.m4 \ $(top_srcdir)/config/kernel-security-inode-init.m4 \ $(top_srcdir)/config/kernel-set-nlink.m4 \ $(top_srcdir)/config/kernel-setattr-prepare.m4 \ $(top_srcdir)/config/kernel-sget-args.m4 \ $(top_srcdir)/config/kernel-show-options.m4 \ $(top_srcdir)/config/kernel-shrink.m4 \ $(top_srcdir)/config/kernel-submit_bio.m4 \ $(top_srcdir)/config/kernel-super-userns.m4 \ $(top_srcdir)/config/kernel-timer.m4 \ $(top_srcdir)/config/kernel-tmpfile.m4 \ $(top_srcdir)/config/kernel-totalhigh_pages.m4 \ $(top_srcdir)/config/kernel-totalram-pages-func.m4 \ $(top_srcdir)/config/kernel-truncate-range.m4 \ $(top_srcdir)/config/kernel-truncate-setsize.m4 \ $(top_srcdir)/config/kernel-userns-capabilities.m4 \ $(top_srcdir)/config/kernel-usleep_range.m4 \ $(top_srcdir)/config/kernel-vfs-direct_IO.m4 \ $(top_srcdir)/config/kernel-vfs-fsync.m4 \ $(top_srcdir)/config/kernel-vfs-getattr.m4 \ $(top_srcdir)/config/kernel-vfs-iterate.m4 \ $(top_srcdir)/config/kernel-vfs-rw-iterate.m4 \ $(top_srcdir)/config/kernel-wait.m4 \ $(top_srcdir)/config/kernel-xattr-handler.m4 \ $(top_srcdir)/config/kernel-zlib.m4 \ $(top_srcdir)/config/kernel.m4 $(top_srcdir)/config/lib-ld.m4 \ $(top_srcdir)/config/lib-link.m4 \ $(top_srcdir)/config/lib-prefix.m4 \ $(top_srcdir)/config/libtool.m4 \ $(top_srcdir)/config/ltoptions.m4 \ $(top_srcdir)/config/ltsugar.m4 \ $(top_srcdir)/config/ltversion.m4 \ $(top_srcdir)/config/lt~obsolete.m4 \ $(top_srcdir)/config/mount-helper.m4 \ $(top_srcdir)/config/nls.m4 $(top_srcdir)/config/pkg.m4 \ $(top_srcdir)/config/po.m4 $(top_srcdir)/config/progtest.m4 \ $(top_srcdir)/config/toolchain-simd.m4 \ $(top_srcdir)/config/user-dracut.m4 \ $(top_srcdir)/config/user-gettext.m4 \ $(top_srcdir)/config/user-libaio.m4 \ $(top_srcdir)/config/user-libblkid.m4 \ $(top_srcdir)/config/user-libexec.m4 \ $(top_srcdir)/config/user-libssl.m4 \ $(top_srcdir)/config/user-libtirpc.m4 \ $(top_srcdir)/config/user-libudev.m4 \ $(top_srcdir)/config/user-libuuid.m4 \ $(top_srcdir)/config/user-makedev.m4 \ $(top_srcdir)/config/user-runstatedir.m4 \ $(top_srcdir)/config/user-systemd.m4 \ $(top_srcdir)/config/user-sysvinit.m4 \ $(top_srcdir)/config/user-udev.m4 \ $(top_srcdir)/config/user-zlib.m4 $(top_srcdir)/config/user.m4 \ $(top_srcdir)/config/zfs-build.m4 \ $(top_srcdir)/config/zfs-meta.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/zfs_config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(pkgexecdir)" PROGRAMS = $(pkgexec_PROGRAMS) am_dir_rd_update_OBJECTS = dir_rd_update.$(OBJEXT) dir_rd_update_OBJECTS = $(am_dir_rd_update_OBJECTS) dir_rd_update_LDADD = $(LDADD) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) am__v_lt_0 = --silent depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_at = $(am__v_at_$(V)) am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) am__v_at_0 = @ CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_$(V)) am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) am__v_CCLD_0 = @echo " CCLD " $@; AM_V_GEN = $(am__v_GEN_$(V)) am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(dir_rd_update_SOURCES) DIST_SOURCES = $(dir_rd_update_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALIEN = @ALIEN@ ALIEN_VERSION = @ALIEN_VERSION@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ASAN_CFLAGS = @ASAN_CFLAGS@ ASAN_ENABLED = @ASAN_ENABLED@ ASAN_LDFLAGS = @ASAN_LDFLAGS@ ASAN_ZFS = @ASAN_ZFS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCAS = @CCAS@ CCASDEPMODE = @CCASDEPMODE@ CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@ CODE_COVERAGE_CPPFLAGS = @CODE_COVERAGE_CPPFLAGS@ CODE_COVERAGE_CXXFLAGS = @CODE_COVERAGE_CXXFLAGS@ CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@ CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@ CODE_COVERAGE_LIBS = @CODE_COVERAGE_LIBS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGINFO_ZFS = @DEBUGINFO_ZFS@ DEBUG_CFLAGS = @DEBUG_CFLAGS@ DEBUG_CPPFLAGS = @DEBUG_CPPFLAGS@ DEBUG_KMEM_TRACKING_ZFS = @DEBUG_KMEM_TRACKING_ZFS@ DEBUG_KMEM_ZFS = @DEBUG_KMEM_ZFS@ DEBUG_LDFLAGS = @DEBUG_LDFLAGS@ DEBUG_ZFS = @DEBUG_ZFS@ DEFAULT_INITCONF_DIR = @DEFAULT_INITCONF_DIR@ DEFAULT_INIT_DIR = @DEFAULT_INIT_DIR@ DEFAULT_INIT_SCRIPT = @DEFAULT_INIT_SCRIPT@ DEFAULT_PACKAGE = @DEFAULT_PACKAGE@ DEFINE_INITRAMFS = @DEFINE_INITRAMFS@ DEFINE_PYTHON_PKG_VERSION = @DEFINE_PYTHON_PKG_VERSION@ DEFINE_PYTHON_VERSION = @DEFINE_PYTHON_VERSION@ DEFINE_PYZFS = @DEFINE_PYZFS@ DEFINE_SYSTEMD = @DEFINE_SYSTEMD@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DPKG = @DPKG@ DPKGBUILD = @DPKGBUILD@ DPKGBUILD_VERSION = @DPKGBUILD_VERSION@ DPKG_VERSION = @DPKG_VERSION@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAME_LARGER_THAN = @FRAME_LARGER_THAN@ GCOV = @GCOV@ GENHTML = @GENHTML@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ HAVE_ALIEN = @HAVE_ALIEN@ HAVE_DPKG = @HAVE_DPKG@ HAVE_DPKGBUILD = @HAVE_DPKGBUILD@ HAVE_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ KERNEL_DEBUG_CFLAGS = @KERNEL_DEBUG_CFLAGS@ KERNEL_DEBUG_CPPFLAGS = @KERNEL_DEBUG_CPPFLAGS@ KERNEL_MAKE = @KERNEL_MAKE@ LCOV = @LCOV@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBAIO = @LIBAIO@ LIBBLKID = @LIBBLKID@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBSSL = @LIBSSL@ LIBTIRPC_CFLAGS = @LIBTIRPC_CFLAGS@ LIBTIRPC_LIBS = @LIBTIRPC_LIBS@ LIBTOOL = @LIBTOOL@ LIBUDEV = @LIBUDEV@ LIBUUID = @LIBUUID@ LINUX = @LINUX@ LINUX_OBJ = @LINUX_OBJ@ LINUX_SYMBOLS = @LINUX_SYMBOLS@ LINUX_VERSION = @LINUX_VERSION@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@ MULTIARCH_LIBDIR = @MULTIARCH_LIBDIR@ NM = @NM@ NMEDIT = @NMEDIT@ NO_BOOL_COMPARE = @NO_BOOL_COMPARE@ NO_FORMAT_TRUNCATION = @NO_FORMAT_TRUNCATION@ NO_OMIT_FRAME_POINTER = @NO_OMIT_FRAME_POINTER@ NO_UNUSED_BUT_SET_VARIABLE = @NO_UNUSED_BUT_SET_VARIABLE@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POSUB = @POSUB@ PYTHON = @PYTHON@ PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ PYTHON_EXTRA_LDFLAGS = @PYTHON_EXTRA_LDFLAGS@ PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ PYTHON_LIBS = @PYTHON_LIBS@ PYTHON_PLATFORM = @PYTHON_PLATFORM@ PYTHON_PREFIX = @PYTHON_PREFIX@ PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ PYTHON_VERSION = @PYTHON_VERSION@ PYZFS_ENABLED = @PYZFS_ENABLED@ QAT_OBJ = @QAT_OBJ@ QAT_SRC = @QAT_SRC@ QAT_SYMBOLS = @QAT_SYMBOLS@ RANLIB = @RANLIB@ RELEASE = @RELEASE@ RM = @RM@ RPM = @RPM@ RPMBUILD = @RPMBUILD@ RPMBUILD_VERSION = @RPMBUILD_VERSION@ RPM_DEFINE_COMMON = @RPM_DEFINE_COMMON@ RPM_DEFINE_DKMS = @RPM_DEFINE_DKMS@ RPM_DEFINE_KMOD = @RPM_DEFINE_KMOD@ RPM_DEFINE_UTIL = @RPM_DEFINE_UTIL@ RPM_SPEC_DIR = @RPM_SPEC_DIR@ RPM_VERSION = @RPM_VERSION@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SRPM_DEFINE_COMMON = @SRPM_DEFINE_COMMON@ SRPM_DEFINE_DKMS = @SRPM_DEFINE_DKMS@ SRPM_DEFINE_KMOD = @SRPM_DEFINE_KMOD@ SRPM_DEFINE_UTIL = @SRPM_DEFINE_UTIL@ STRIP = @STRIP@ TARGET_ASM_DIR = @TARGET_ASM_DIR@ TEST_JOBS = @TEST_JOBS@ USE_NLS = @USE_NLS@ VENDOR = @VENDOR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ ZFS_CONFIG = @ZFS_CONFIG@ ZFS_INIT_SYSTEMD = @ZFS_INIT_SYSTEMD@ ZFS_INIT_SYSV = @ZFS_INIT_SYSV@ ZFS_META_ALIAS = @ZFS_META_ALIAS@ ZFS_META_AUTHOR = @ZFS_META_AUTHOR@ ZFS_META_DATA = @ZFS_META_DATA@ ZFS_META_KVER_MAX = @ZFS_META_KVER_MAX@ ZFS_META_KVER_MIN = @ZFS_META_KVER_MIN@ ZFS_META_LICENSE = @ZFS_META_LICENSE@ ZFS_META_LT_AGE = @ZFS_META_LT_AGE@ ZFS_META_LT_CURRENT = @ZFS_META_LT_CURRENT@ ZFS_META_LT_REVISION = @ZFS_META_LT_REVISION@ ZFS_META_NAME = @ZFS_META_NAME@ ZFS_META_RELEASE = @ZFS_META_RELEASE@ ZFS_META_VERSION = @ZFS_META_VERSION@ ZFS_MODULE_LOAD = @ZFS_MODULE_LOAD@ ZLIB = @ZLIB@ ZONENAME = @ZONENAME@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dracutdir = @dracutdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ modulesloaddir = @modulesloaddir@ mounthelperdir = @mounthelperdir@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ pythonsitedir = @pythonsitedir@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdgeneratordir = @systemdgeneratordir@ systemdpresetdir = @systemdpresetdir@ systemdunitdir = @systemdunitdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ udevdir = @udevdir@ udevruledir = @udevruledir@ zfsexecdir = @zfsexecdir@ DEFAULT_INCLUDES = -include ${top_builddir}/zfs_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing \ $(NO_OMIT_FRAME_POINTER) $(DEBUG_CFLAGS) $(ASAN_CFLAGS) \ $(CODE_COVERAGE_CFLAGS) AM_CPPFLAGS = -D_GNU_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64 \ -D_LARGEFILE64_SOURCE -DHAVE_LARGE_STACKS=1 \ -DTEXT_DOMAIN=\"zfs-linux-user\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -DRUNSTATEDIR=\"$(runstatedir)\" -DSBINDIR=\"$(sbindir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" $(DEBUG_CPPFLAGS) \ $(CODE_COVERAGE_CPPFLAGS) AM_LDFLAGS = $(DEBUG_LDFLAGS) $(ASAN_LDFLAGS) pkgexecdir = $(datadir)/@PACKAGE@/zfs-tests/bin dir_rd_update_SOURCES = dir_rd_update.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/Rules.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/zfs-tests/cmd/dir_rd_update/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu tests/zfs-tests/cmd/dir_rd_update/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-pkgexecPROGRAMS: $(pkgexec_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(pkgexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgexecdir)" @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(pkgexecdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(pkgexecdir)$$dir" || exit $$?; \ } \ ; done uninstall-pkgexecPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(pkgexec_PROGRAMS)'; test -n "$(pkgexecdir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgexecdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgexecdir)" && rm -f $$files clean-pkgexecPROGRAMS: @list='$(pkgexec_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list dir_rd_update$(EXEEXT): $(dir_rd_update_OBJECTS) $(dir_rd_update_DEPENDENCIES) @rm -f dir_rd_update$(EXEEXT) $(AM_V_CCLD)$(LINK) $(dir_rd_update_OBJECTS) $(dir_rd_update_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir_rd_update.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(pkgexecdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-pkgexecPROGRAMS \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-pkgexecPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-pkgexecPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-pkgexecPROGRAMS ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-pkgexecPROGRAMS install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-pkgexecPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: zfs-0.8.3/tests/zfs-tests/cmd/PaxHeaders.151519/xattrtest0000644000000000000000000000013213612143052021237 xustar000000000000000030 mtime=1579730474.732594587 30 atime=1579730489.097055805 30 ctime=1579730474.732594587 zfs-0.8.3/tests/zfs-tests/cmd/xattrtest/0000775016037001603700000000000013612143052021320 5ustar00hutter2hutter200000000000000zfs-0.8.3/tests/zfs-tests/cmd/xattrtest/PaxHeaders.151519/xattrtest.c0000644000000000000000000000007413607166133023540 xustar000000000000000030 atime=1579730360.849765597 30 ctime=1579730474.733594619 zfs-0.8.3/tests/zfs-tests/cmd/xattrtest/xattrtest.c0000644016037001603700000003705413607166133023546 0ustar00hutter2hutter200000000000000/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2016 Lawrence Livermore National Security, LLC. */ /* * An extended attribute (xattr) correctness test. This program creates * N files and sets M attrs on them of size S. Optionally is will verify * a pattern stored in the xattr. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include extern char *program_invocation_short_name; #define ERROR(fmt, ...) \ fprintf(stderr, "%s: %s:%d: %s: " fmt "\n", \ program_invocation_short_name, __FILE__, __LINE__, \ __func__, ## __VA_ARGS__); static const char shortopts[] = "hvycdn:f:x:s:p:t:e:rRko:"; static const struct option longopts[] = { { "help", no_argument, 0, 'h' }, { "verbose", no_argument, 0, 'v' }, { "verify", no_argument, 0, 'y' }, { "nth", required_argument, 0, 'n' }, { "files", required_argument, 0, 'f' }, { "xattrs", required_argument, 0, 'x' }, { "size", required_argument, 0, 's' }, { "path", required_argument, 0, 'p' }, { "synccaches", no_argument, 0, 'c' }, { "dropcaches", no_argument, 0, 'd' }, { "script", required_argument, 0, 't' }, { "seed", required_argument, 0, 'e' }, { "random", no_argument, 0, 'r' }, { "randomvalue", no_argument, 0, 'R' }, { "keep", no_argument, 0, 'k' }, { "only", required_argument, 0, 'o' }, { 0, 0, 0, 0 } }; enum phases { PHASE_ALL = 0, PHASE_CREATE, PHASE_SETXATTR, PHASE_GETXATTR, PHASE_UNLINK, PHASE_INVAL }; static int verbose = 0; static int verify = 0; static int synccaches = 0; static int dropcaches = 0; static int nth = 0; static int files = 1000; static int xattrs = 1; static int size = 6; static int size_is_random = 0; static int value_is_random = 0; static int keep_files = 0; static int phase = PHASE_ALL; static char path[PATH_MAX] = "/tmp/xattrtest"; static char script[PATH_MAX] = "/bin/true"; static char xattrbytes[XATTR_SIZE_MAX]; static int usage(int argc, char **argv) { fprintf(stderr, "usage: %s [-hvycdrRk] [-n ] [-f ] [-x ]\n" " [-s ] [-p ] [-t